Built motion from commit be921fcf.|2.5.34
authorAndrea Amorese <andrea.amorese@xenialab.it>
Tue, 31 Aug 2021 15:32:10 +0000 (17:32 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Tue, 31 Aug 2021 15:32:10 +0000 (17:32 +0200)
1195 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.79e08137.js [moved from public/scripts/app.61649c54.js with 53% similarity]
public/styles/app.91ca40ed.css [moved from public/styles/app.0b303223.css with 73% 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/seedDB/voiceExtensions.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/index.js
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 458d7ab..bb0eace 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-08-31T11:43:18.730Z",
+    "time": "2021-08-31T15:21:56.982Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index f39fd6e..afd5ee4 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-08-31T11:43:18.730Z",
+    "time": "2021-08-31T15:21:56.982Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 225e85b..af7cad9 100644 (file)
@@ -56,8 +56,8 @@
     "connect-timeout": "1.9.0",
     "cookie-parser": "1.4.5",
     "cors": "2.8.5",
-    "cron-job-manager": "1.0.7",
     "crypto-js": "3.1.9-1",
+    "cron-job-manager": "1.0.7",
     "desk.js": "0.1.4",
     "dialogflow": "0.8.2",
     "ejs": "2.7.4",
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 d1e6c4c..aa48e51 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.def00a0c.css">
 
-  <link rel="stylesheet" href="styles/app.0b303223.css">
+  <link rel="stylesheet" href="styles/app.91ca40ed.css">
 
   <!-- <link href='//fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700italic,700,900,900italic'
               rel='stylesheet' type='text/css'> -->
@@ -68,7 +68,7 @@
   <script src="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js"></script>
   <!-- ANGULAR-MATERIAL-FORM-BUILDER -->
 
-  <script src="scripts/app.61649c54.js"></script>
+  <script src="scripts/app.79e08137.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 53%
rename from public/scripts/app.61649c54.js
rename to public/scripts/app.79e08137.js
index f5e5b16..19b40ec 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?(n.paused=!0,e.paused+=1,0<e.available&&(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?(n.paused=!0,e.paused+=1,0<e.available&&(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,t,a){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){new Promise(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function x(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function N(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(l.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=x,u.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n){var t=this;function a(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return Promise.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n)return n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)});c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(n){var a={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,c.ListId=c.contact.ListId||void 0):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(e){{if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose"+o+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:u.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get().$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get().$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeWhatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeWhatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeChat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").filter("secToTime",function(){return function(e){return new Date(1e3*e).toISOString().substr(11,8)}}).factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=2,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.agents=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:"bull"===c.channel?"voice":c.channel,type:c.direction,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:c.direction,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentqueueaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function c(e){switch(e){case"sound":if(!l.application.appdata)return;return[{key:"save_name",value:l.application.appdata.split("/").pop()}];case"squareProject":if(!l.application.project)return;return[{key:"name",value:l.application.project.split(",")[1]}];case"tag":if(!l.application.tag)return;return[{key:"name",value:l.application.tag}];case"trunk":if(!l.application.trunk)return;return[{key:"name",value:l.application.trunk}];case"user":if(!l.application.user&&!l.application.users)return;return l.application.user?[{key:"name",value:l.application.user.split("/")[1]}]:_.map(l.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!l.application.name)return;return[{key:"name",value:l.application.name}];case"voiceContext":if(!l.application.context)return;return[{key:"name",value:l.application.context}];case"voiceMail":if(!l.application.voiceMail)return;return[{key:"mailbox",value:l.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!l.application.queue)return;return[{key:"name",value:l.application.queue}]}}function m(){s.getResourcesByRole(l.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},c("trunk")).then(function(e){l.trunks=e}).catch(function(){i.error({title:$translate.instant("TOOLS.TRUNKS"),msg:$translate.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function u(){s.getResourcesByRole(l.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},c("sound")).then(function(e){l.sounds=e}).catch(function(){i.error({title:$translate.instant("TOOLS.SOUNDS"),msg:$translate.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function p(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=c("user"),t=[s.getResourcesByRole(l.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),s.getResourcesByRole(l.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();l.users={rows:n,count:n.length}}).catch(function(){i.error({title:$translate.instant("STAFF.USERS"),msg:$translate.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function g(){l.application.appdata&&e.hide(l.application),e.hide()}l.currentUser=o.getCurrentUser(),l.application=angular.copy(n),l.crudPermissions=r,l.errors=[],l.init=function(){l.application.appdata&&function(){var e=[];switch(l.application.appType){case"agi":l.application.project=l.application.appdata;break;case"dial":e=l.application.appdata.split(","),l.application.tech=d(e[0]),l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"externalDial":e=l.application.appdata.split(","),l.application.trunk=e[0].split("/")[1],l.application.phone=e[0].split("/")[2],l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"goTo":e=l.application.appdata.split(","),l.application.context=d(e[0]),l.application.extension=d(e[1]),l.application.priority=d(e[2]);break;case"internalDial":e=l.application.appdata.split(","),l.application.user=d(e[0]),l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"outboundDial":e=l.application.appdata.split(","),l.application.trunk=e[0].split("/")[1],l.application.phone=e[0].split("/")[2],l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]),l.application.prefix=l.application.phone?l.application.phone.split("$")[0]:void 0,l.application.callerId=l.application.callerID?"CALLERID(all)="+l.application.callerID:void 0;break;case"playback":e=l.application.appdata.split(","),l.application.appdata=d(e[0]),l.application.options=d(e[1]);break;case"queue":e=l.application.appdata.split(","),l.application.queue=d(e[0]),l.application.options=d(e[1]),l.application.URL=d(e[2]),l.application.sound=d(e[3]),l.application.timeout=d(e[4]),l.application.agi=d(e[5]),l.application.macro=d(e[6]),l.application.gosub=d(e[7]),l.application.rule=d(e[8]),l.application.position=d(e[9]);break;case"ringGroup":e=l.application.appdata.split(","),l.application.users=e[0].split("&"),l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"set":e=l.application.appdata.split("="),l.application.name=e[0],l.application.value=e[1];break;case"voicemail":e=l.application.appdata.split(","),l.application.voiceMail=d(e[0]),l.application.options=d(e[1])}}();switch(l.application.appType){case"agi":s.getResourcesByRole(l.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},c("squareProject")).then(function(e){l.projects=e}).catch(function(){i.error({title:$translate.instant("CALLYSQUARE.CALLYSQUARE")+" "+$translate.instant("CALLYSQUARE.PROJECTS"),msg:$translate.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":m();break;case"goTo":s.getResourcesByRole(l.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},c("voiceContext")).then(function(e){l.contexts=e}).catch(function(){i.error({title:$translate.instant("VOICE.CONTEXTS"),msg:$translate.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":p();break;case"outboundDial":s.getResourcesByRole(l.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},c("tag")).then(function(e){l.tags=e}).catch(function(){i.error({title:$translate.instant("TOOLS.TAGS"),msg:$translate.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),m();break;case"playback":u();break;case"queue":u(),s.getResourcesByRole(l.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},c("voiceQueue")).then(function(e){l.queues=e}).catch(function(){i.error({title:$translate.instant("VOICE.VOICEQUEUES"),msg:$translate.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":p();break;case"set":s.getResourcesByRole(l.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},c("variable")).then(function(e){l.variables=e}).catch(function(){i.error({title:$translate.instant("TOOLS.VARIABLES"),msg:$translate.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":s.getResourcesByRole(l.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},c("voiceMail")).then(function(e){l.voiceMails=e}).catch(function(){i.error({title:$translate.instant("VOICE.VOICEMAILS"),msg:$translate.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},l.saveRoutingApp=function(){l.errors=[],function(){var e=[];switch(l.application.appType){case"agi":l.application.appdata=l.application.project;break;case"dial":e[0]=l.application.tech,e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",l.application.trunk,l.application.phone].join("/"),e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"goTo":e[0]=l.application.context,e[1]=l.application.extension,e[2]=l.application.priority,l.application.appdata=e.join(",");break;case"internalDial":e[0]=l.application.user,e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"outboundDial":l.application.phone=t.cutdigits?(l.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(l.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?l.application.options=l.application.options.replace("U(xcally-mixmonitor-context)",""):l.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",l.application.trunk,l.application.phone].join("/"),e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"playback":e[0]=l.application.appdata,e[1]=l.application.options,l.application.appdata=e.join(",");break;case"queue":e[0]=l.application.queue,e[1]=l.application.options,e[2]=l.application.URL,e[3]=l.application.sound,e[4]=l.application.timeout,e[5]=l.application.agi,e[6]=l.application.macro,e[7]=l.application.gosub,e[8]=l.application.rule,e[9]=l.application.position,l.application.appdata=e.join(",");break;case"ringGroup":e[0]=l.application.users.join("&"),e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"set":e[0]=l.application.name,e[1]=l.application.value,l.application.appdata=e.join("=");break;case"voicemail":e[0]=l.application.voiceMail,e[1]=l.application.options,l.application.appdata=e.join(",")}}(),g()},l.closeDialog=g}e.$inject=["$mdDialog","$q","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;function d(){var e=[{key:"name",value:l.interval.IntervalId}];i.getResourcesByRole(l.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){l.intervals=e}).catch(function(){a.error({title:$translate.instant("TOOLS.INTERVALS"),msg:$translate.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function c(e){n.hide(e)}l.currentUser=s.getCurrentUser(),l.interval=angular.copy(e),l.intervals=t||{rows:[],count:0},l.types=["always","custom","list"],l.crudPermissions=o,l.errors=[],l.daysOfWeek=r.getDaysOfWeek(),l.monthNumber=r.getMonthNumber(),l.monthName=r.getMonthName(),l.daysOfMonth=r.getDaysOfMonth(),l.initialize=function(){if("*,*,*,*"===l.interval.interval)return l.type=l.interval.IntervalId&&l.interval.application?"list":"always",void("list"===l.type&&d());l.type="custom";var e=l.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),l.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),l.timeRangeTo=s}"*"!==t&&(l.dayOfWeekFrom=t.split("-")[0],l.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(l.monthDayFrom=a.split("-")[0],l.monthDayTo=a.split("-")[1]);"*"!==i&&(l.monthFrom=i.split("-")[0],l.monthTo=i.split("-")[1])},l.onTypeChange=function(){"list"===l.type&&0===l.intervals.count&&d()},l.saveInterval=function(){l.errors=[],l.interval.interval=function(){if(["always","list"].includes(l.type))return"*,*,*,*";var e=[];if("*"!==l.timeRangeFrom&&l.timeRangeFrom&&l.timeRangeTo){var n=(l.timeRangeFrom.getHours()<10?"0":"")+l.timeRangeFrom.getHours()+":"+(l.timeRangeFrom.getMinutes()<10?"0":"")+l.timeRangeFrom.getMinutes(),t=(l.timeRangeTo.getHours()<10?"0":"")+l.timeRangeTo.getHours()+":"+(l.timeRangeTo.getMinutes()<10?"0":"")+l.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return l.dayOfWeekFrom?l.dayOfWeekTo?e.push(l.dayOfWeekFrom+"-"+l.dayOfWeekTo):e.push(l.dayOfWeekFrom):e.push("*"),l.monthDayFrom?l.monthDayTo?e.push(l.monthDayFrom+"-"+l.monthDayTo):e.push(l.monthDayFrom):e.push("*"),l.monthFrom?l.monthTo?e.push(l.monthFrom+"-"+l.monthTo):e.push(l.monthFrom):e.push("*"),e.join()}(),"list"!==l.type&&(l.interval.IntervalId=null);c(l.interval)},l.closeDialog=c}e.$inject=["$mdDialog","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata!==e.appdata&&p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata!==e.appdata&&p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata!==e.appdata&&p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(n.disconnect(),n.connect(),a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voiceRecording=c||e.params.voiceRecording||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h){var f=this;function b(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),v(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role&&T.currentUser.name===e.membername){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n              </div>\n\n              <form name="scriptForm" flex="100" novalidate>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n              </form>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'CHAT.PAGE' | translate}}:', rowsPerPage: '{{'CHAT.ROWSPERPAGE' | translate}}:', of: '{{'CHAT.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-init="vm.getCustomFields(vm.contact.ListId)" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n\n          <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row">\n          <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n            <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n            <md-card-header layout="row" layout-align="space-between">\n              <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                <timer start-time="call.answertime"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                </md-tooltip>\n              </span>\n              <span ng-if="call.disposedAt" class="text-boxed amber-200-bg mr-0">\n                <timer start-time="call.disposedAt"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                </md-tooltip>\n              </span>\n            </md-card-header>\n            <md-divider></md-divider>\n            <md-card-content>\n              <div layout="row" layout-align="end center" class="reload-container">\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </div>\n              <div layout="column" layout-align="space-between start" class="mr-16">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="mr-8">\n                  </md-icon>\n                  <span class="h1" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                </div>\n\n                <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                  <md-icon md-font-icon="icon-account"></md-icon>\n                  Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                </div>\n\n                <div class="text h4 pt-8" ng-if="call.queue">\n                  <md-icon md-font-icon="icon-stackoverflow"></md-icon>\n                  Queue: {{call.queue}}\n                </div>\n                <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                  <md-icon md-font-icon="icon-minus"></md-icon>\n                  Extra: {{call.variables.extravar}}\n                </div>\n              </div>\n              <div layout="row" layout-align="end center">\n                <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised">\n                  {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                </md-button>\n              </div>\n            </md-card-content>\n          </md-card>\n          <div flex layout="row" layout-align="end center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <md-input-container ng-if="!vm.dialerCall" class="md-block">\n          <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n          <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n            <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</md-option>\n          </md-select>\n          <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeChat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",'<md-dialog class="compose-dialog-fax" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          \x3c!-- <input ng-model="vm.message.subject" type="text"> --\x3e\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n            \x3c!-- <md-icon md-font-icon="icon-close" class="s16"></md-icon> --\x3e\n          </md-button>\n        </div>\n      </div>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-style="{\n    \'max-width\':  {true: \'620px\', false: \'90%\'}[ vm.secret ],\n    \'width\': {true: \'620px\', false: \'100%\'}[ vm.secret ],\n    \'max-height\': {true: undefined, false: \'97%\'}[ vm.secret ]\n  }">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeWhatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'FAX.PAGE' | translate}}:', rowsPerPage: '{{'FAX.ROWSPERPAGE' | translate}}:', of: '{{'FAX.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MAIL.PAGE' | translate}}:', rowsPerPage: '{{'MAIL.ROWSPERPAGE' | translate}}:', of: '{{'MAIL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'OPENCHANNEL.PAGE' | translate}}:', rowsPerPage: '{{'OPENCHANNEL.ROWSPERPAGE' | translate}}:', of: '{{'OPENCHANNEL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'SMS.PAGE' | translate}}:', rowsPerPage: '{{'SMS.ROWSPERPAGE' | translate}}:', of: '{{'SMS.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name ">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email ">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone ">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile ">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal ">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'WHATSAPP.PAGE' | translate}}:', rowsPerPage: '{{'WHATSAPP.ROWSPERPAGE' | translate}}:', of: '{{'WHATSAPP.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span translate="{{lang.translation}}">{{lang.title}}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" ng-if="vm.preview">\n        <div class="md-padding md-margin" layout="column" flex="30">\n          <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.ID">ID</label>\n            <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n            <label translate="VOICE.QUEUE">Queue</label>\n            <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <input type="text" ng-model="vm.preview.List.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.TAGS">Tags</label>\n            <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n          </md-input-container>\n        </div>\n        <md-divider></md-divider>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n            <input type="text" ng-model="value" disabled="true" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\n        </div>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ vm.customFieldsMap[key] || key }}</label>\n            <input type="text" ng-model="value" disabled="true">\n          </md-input-container>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
similarity index 73%
rename from public/styles/app.0b303223.css
rename to public/styles/app.91ca40ed.css
index 9363192..e941370 100644 (file)
@@ -1 +1 @@
-[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:absolute;top:0;right:0;bottom:0;left:0}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content{padding:24px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-scroll{overflow:hidden!important}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{visibility:hidden;width:500px;position:absolute;white-space:pre-line;left:100%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:200px}#agent-general md-card.call-info-card div.reload-container{position:relative}#agent-general md-card.call-info-card button.reload-button{position:absolute;right:-16px}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
+[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:absolute;top:0;right:0;bottom:0;left:0}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content{padding:24px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-scroll{overflow:hidden!important}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{visibility:hidden;width:500px;position:absolute;white-space:pre-line;left:100%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:200px}#agent-general md-card.call-info-card div.reload-container{position:relative}#agent-general md-card.call-info-card button.reload-button{position:absolute;right:-16px}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{min-height:250px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog-fax{max-width:720px;width:720px;max-height:450px;height:450px}md-dialog.compose-dialog-fax md-dialog-content{display:block;position:relative}md-dialog.compose-dialog-fax md-toolbar .title{font-size:17px}md-dialog.compose-dialog-fax md-chips md-chip{font-size:12px}md-dialog.compose-dialog-fax md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog-fax .to{position:relative}md-dialog.compose-dialog-fax .attachment-list{font-size:13px}md-dialog.compose-dialog-fax .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog-fax .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog-fax .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog-fax .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog-fax .error-list{font-size:13px}md-dialog.compose-dialog-fax .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog-fax .error-list .error .message{font-weight:500}md-dialog.compose-dialog-fax .error-list .error .md-button{margin:0}md-dialog.compose-dialog-fax .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog-fax md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{min-height:250px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{min-height:250px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{min-height:250px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
index d03a0f3..5ef24ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6455=['VIRTUAL','getDataValue','action','STRING','contactManager','motionbar','jscripty','urlForward','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','sequelize'];(function(_0x491faa,_0x4f2907){var _0x414440=function(_0x310864){while(--_0x310864){_0x491faa['push'](_0x491faa['shift']());}};_0x414440(++_0x4f2907);}(_0x6455,0x97));var _0x5645=function(_0x3159ef,_0x28c81b){_0x3159ef=_0x3159ef-0x0;var _0x47111f=_0x6455[_0x3159ef];return _0x47111f;};'use strict';var Sequelize=require(_0x5645('0x0'));module['exports']={'name':{'type':Sequelize[_0x5645('0x1')],'get':function(_0x2294f5){return this[_0x5645('0x2')](_0x5645('0x3'));}},'action':{'type':Sequelize[_0x5645('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0x5645('0x5'),'integration',_0x5645('0x6'),_0x5645('0x7'),_0x5645('0x8'),_0x5645('0x9'),_0x5645('0xa'),_0x5645('0xb')]],'msg':_0x5645('0xc')}},'comment':_0x5645('0xc')},'data1':{'type':Sequelize['STRING'](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[_0x5645('0x4')](0x1000),'comment':_0x5645('0xd')},'data3':{'type':Sequelize[_0x5645('0x4')](0x1000),'comment':_0x5645('0xe')},'data4':{'type':Sequelize[_0x5645('0x4')](0x1000),'comments':_0x5645('0xf')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':_0x5645('0x10')},'data6':{'type':Sequelize[_0x5645('0x4')],'comments':_0x5645('0x11')},'data7':{'type':Sequelize[_0x5645('0x12')],'comments':'urlForward[body]'}};
\ No newline at end of file
+var _0xa4a4=['integration','motionbar','jscripty','urlForward','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','contactManager[ListId],\x20integration[intName(zendesk)],\x20motionbar[Popup(0),URL(1),WinApp(2)],\x20urlForward[GET,POST],\x20browser[TemplateId(0),URL(1)]','integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20urlForward[URL]','motionbar[NULL,NULL,WinAppArguments]','sequelize','exports','getDataValue','action','STRING','contactManager'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa4a4,0x1a3));var _0x4a4a=function(_0x4568a0,_0x3670bb){_0x4568a0=_0x4568a0-0x0;var _0x1bb2de=_0xa4a4[_0x4568a0];return _0x1bb2de;};'use strict';var Sequelize=require(_0x4a4a('0x0'));module[_0x4a4a('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x5c4a5a){return this[_0x4a4a('0x2')](_0x4a4a('0x3'));}},'action':{'type':Sequelize[_0x4a4a('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0x4a4a('0x5'),_0x4a4a('0x6'),_0x4a4a('0x7'),_0x4a4a('0x8'),_0x4a4a('0x9'),_0x4a4a('0xa'),_0x4a4a('0xb'),_0x4a4a('0xc')]],'msg':_0x4a4a('0xd')}},'comment':_0x4a4a('0xd')},'data1':{'type':Sequelize[_0x4a4a('0x4')](0x1000),'comment':_0x4a4a('0xe')},'data2':{'type':Sequelize[_0x4a4a('0x4')](0x1000),'comment':_0x4a4a('0xf')},'data3':{'type':Sequelize[_0x4a4a('0x4')](0x1000),'comment':_0x4a4a('0x10')},'data4':{'type':Sequelize[_0x4a4a('0x4')](0x1000)},'data5':{'type':Sequelize['STRING'](0x1000)},'data6':{'type':Sequelize[_0x4a4a('0x4')]},'data7':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 9c79910..c92d0ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3fa=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','save','then','destroy','sendStatus','error','stack','name','send','update','body','find','params','catch','Action','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js'];(function(_0x374c4a,_0x5afa32){var _0x103f4a=function(_0x5a70e1){while(--_0x5a70e1){_0x374c4a['push'](_0x374c4a['shift']());}};_0x103f4a(++_0x5afa32);}(_0xe3fa,0xa5));var _0xae3f=function(_0x149016,_0x374450){_0x149016=_0x149016-0x0;var _0x326a70=_0xe3fa[_0x149016];return _0x326a70;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xae3f('0x0'));var zipdir=require(_0xae3f('0x1'));var jsonpatch=require(_0xae3f('0x2'));var rp=require(_0xae3f('0x3'));var moment=require(_0xae3f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xae3f('0x5'));var util=require('util');var path=require(_0xae3f('0x6'));var sox=require(_0xae3f('0x7'));var csv=require(_0xae3f('0x8'));var ejs=require(_0xae3f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xae3f('0xa'));var squel=require(_0xae3f('0xb'));var crypto=require(_0xae3f('0xc'));var jsforce=require(_0xae3f('0xd'));var deskjs=require(_0xae3f('0xe'));var toCsv=require(_0xae3f('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xae3f('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xae3f('0x10'));var as=require(_0xae3f('0x11'));var hardwareService=require(_0xae3f('0x12'));var logger=require(_0xae3f('0x13'))(_0xae3f('0x14'));var utils=require(_0xae3f('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xae3f('0x16'));var db=require(_0xae3f('0x17'))['db'];function respondWithStatusCode(_0x2f6156,_0x168c75){_0x168c75=_0x168c75||0xcc;return function(_0x140b6b){if(_0x140b6b){return _0x2f6156['sendStatus'](_0x168c75);}return _0x2f6156[_0xae3f('0x18')](_0x168c75)[_0xae3f('0x19')]();};}function respondWithResult(_0x35d3c6,_0x159655){_0x159655=_0x159655||0xc8;return function(_0x1eb132){if(_0x1eb132){return _0x35d3c6['status'](_0x159655)[_0xae3f('0x1a')](_0x1eb132);}};}function respondWithFilteredResult(_0x16eb7c,_0x278df1){return function(_0x1a5aac){if(_0x1a5aac){var _0xcf9883=typeof _0x278df1[_0xae3f('0x1b')]===_0xae3f('0x1c')&&typeof _0x278df1['limit']==='undefined';var _0x29bb13=_0x1a5aac[_0xae3f('0x1d')];var _0xc9e92f=_0xcf9883?0x0:_0x278df1[_0xae3f('0x1b')];var _0x294f47=_0xcf9883?_0x1a5aac[_0xae3f('0x1d')]:_0x278df1[_0xae3f('0x1b')]+_0x278df1[_0xae3f('0x1e')];var _0x4efa5d;if(_0x294f47>=_0x29bb13){_0x294f47=_0x29bb13;_0x4efa5d=0xc8;}else{_0x4efa5d=0xce;}_0x16eb7c[_0xae3f('0x18')](_0x4efa5d);return _0x16eb7c['set']('Content-Range',_0xc9e92f+'-'+_0x294f47+'/'+_0x29bb13)[_0xae3f('0x1a')](_0x1a5aac);}return null;};}function patchUpdates(_0x22326a){return function(_0x1a158){try{jsonpatch['apply'](_0x1a158,_0x22326a,!![]);}catch(_0x409fce){return BPromise['reject'](_0x409fce);}return _0x1a158[_0xae3f('0x1f')]();};}function saveUpdates(_0x499bcc,_0x40b056){return function(_0x979460){if(_0x979460){return _0x979460['update'](_0x499bcc)[_0xae3f('0x20')](function(_0x5dc916){return _0x5dc916;});}return null;};}function removeEntity(_0xc47e79,_0x4236e7){return function(_0x4b8d9c){if(_0x4b8d9c){return _0x4b8d9c[_0xae3f('0x21')]()[_0xae3f('0x20')](function(){_0xc47e79[_0xae3f('0x18')](0xcc)[_0xae3f('0x19')]();});}};}function handleEntityNotFound(_0x2c9a72,_0x1cc48c){return function(_0x16a83d){if(!_0x16a83d){_0x2c9a72[_0xae3f('0x22')](0x194);}return _0x16a83d;};}function handleError(_0x4c37ee,_0x145809){_0x145809=_0x145809||0x1f4;return function(_0xa38a0a){logger[_0xae3f('0x23')](_0xa38a0a[_0xae3f('0x24')]);if(_0xa38a0a[_0xae3f('0x25')]){delete _0xa38a0a[_0xae3f('0x25')];}_0x4c37ee[_0xae3f('0x18')](_0x145809)[_0xae3f('0x26')](_0xa38a0a);};}exports[_0xae3f('0x27')]=function(_0x4e5fee,_0x3ce093){if(_0x4e5fee[_0xae3f('0x28')]['id']){delete _0x4e5fee[_0xae3f('0x28')]['id'];}return db['Action'][_0xae3f('0x29')]({'where':{'id':_0x4e5fee[_0xae3f('0x2a')]['id']}})['then'](handleEntityNotFound(_0x3ce093,null))['then'](saveUpdates(_0x4e5fee[_0xae3f('0x28')],null))[_0xae3f('0x20')](respondWithResult(_0x3ce093,null))[_0xae3f('0x2b')](handleError(_0x3ce093,null));};exports[_0xae3f('0x21')]=function(_0x260fb2,_0xa740c4){return db[_0xae3f('0x2c')][_0xae3f('0x29')]({'where':{'id':_0x260fb2[_0xae3f('0x2a')]['id']}})[_0xae3f('0x20')](handleEntityNotFound(_0xa740c4,null))[_0xae3f('0x20')](removeEntity(_0xa740c4,null))['catch'](handleError(_0xa740c4,null));};
\ No newline at end of file
+var _0x9e20=['to-csv','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','sendStatus','status','end','json','offset','undefined','limit','Content-Range','reject','save','update','then','destroy','error','stack','send','body','Action','find','catch','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path'];(function(_0x216076,_0x55026d){var _0x2fe310=function(_0x4df5f0){while(--_0x4df5f0){_0x216076['push'](_0x216076['shift']());}};_0x2fe310(++_0x55026d);}(_0x9e20,0x1a7));var _0x09e2=function(_0x23e84b,_0x445b7b){_0x23e84b=_0x23e84b-0x0;var _0x356939=_0x9e20[_0x23e84b];return _0x356939;};'use strict';var emlformat=require(_0x09e2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x09e2('0x1'));var jsonpatch=require(_0x09e2('0x2'));var rp=require(_0x09e2('0x3'));var moment=require(_0x09e2('0x4'));var BPromise=require(_0x09e2('0x5'));var Mustache=require(_0x09e2('0x6'));var util=require(_0x09e2('0x7'));var path=require(_0x09e2('0x8'));var sox=require('sox');var csv=require(_0x09e2('0x9'));var ejs=require(_0x09e2('0xa'));var fs=require('fs');var fs_extra=require(_0x09e2('0xb'));var _=require(_0x09e2('0xc'));var squel=require(_0x09e2('0xd'));var crypto=require(_0x09e2('0xe'));var jsforce=require(_0x09e2('0xf'));var deskjs=require(_0x09e2('0x10'));var toCsv=require(_0x09e2('0x9'));var querystring=require(_0x09e2('0x11'));var Papa=require(_0x09e2('0x12'));var Redis=require(_0x09e2('0x13'));var authService=require(_0x09e2('0x14'));var qs=require(_0x09e2('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x09e2('0x16'));var logger=require(_0x09e2('0x17'))(_0x09e2('0x18'));var utils=require(_0x09e2('0x19'));var config=require(_0x09e2('0x1a'));var licenseUtil=require(_0x09e2('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x36e55c,_0x3897c2){_0x3897c2=_0x3897c2||0xcc;return function(_0x543f07){if(_0x543f07){return _0x36e55c[_0x09e2('0x1c')](_0x3897c2);}return _0x36e55c[_0x09e2('0x1d')](_0x3897c2)[_0x09e2('0x1e')]();};}function respondWithResult(_0x27d82a,_0x2b3565){_0x2b3565=_0x2b3565||0xc8;return function(_0x20e44f){if(_0x20e44f){return _0x27d82a['status'](_0x2b3565)[_0x09e2('0x1f')](_0x20e44f);}};}function respondWithFilteredResult(_0x39d612,_0x65ca08){return function(_0xc2d35){if(_0xc2d35){var _0x2ff951=typeof _0x65ca08[_0x09e2('0x20')]===_0x09e2('0x21')&&typeof _0x65ca08[_0x09e2('0x22')]==='undefined';var _0x59ffdf=_0xc2d35['count'];var _0x5e964f=_0x2ff951?0x0:_0x65ca08[_0x09e2('0x20')];var _0x5e86d7=_0x2ff951?_0xc2d35['count']:_0x65ca08['offset']+_0x65ca08['limit'];var _0x44124d;if(_0x5e86d7>=_0x59ffdf){_0x5e86d7=_0x59ffdf;_0x44124d=0xc8;}else{_0x44124d=0xce;}_0x39d612[_0x09e2('0x1d')](_0x44124d);return _0x39d612['set'](_0x09e2('0x23'),_0x5e964f+'-'+_0x5e86d7+'/'+_0x59ffdf)[_0x09e2('0x1f')](_0xc2d35);}return null;};}function patchUpdates(_0x51ad37){return function(_0x2b9871){try{jsonpatch['apply'](_0x2b9871,_0x51ad37,!![]);}catch(_0x5d091f){return BPromise[_0x09e2('0x24')](_0x5d091f);}return _0x2b9871[_0x09e2('0x25')]();};}function saveUpdates(_0x4fd8e2,_0x599556){return function(_0x5b22de){if(_0x5b22de){return _0x5b22de[_0x09e2('0x26')](_0x4fd8e2)[_0x09e2('0x27')](function(_0x30517a){return _0x30517a;});}return null;};}function removeEntity(_0x2d87ae,_0xad99d2){return function(_0x496097){if(_0x496097){return _0x496097[_0x09e2('0x28')]()[_0x09e2('0x27')](function(){_0x2d87ae[_0x09e2('0x1d')](0xcc)[_0x09e2('0x1e')]();});}};}function handleEntityNotFound(_0x952084,_0x36ed0e){return function(_0xdd55fc){if(!_0xdd55fc){_0x952084[_0x09e2('0x1c')](0x194);}return _0xdd55fc;};}function handleError(_0x56d868,_0x5775de){_0x5775de=_0x5775de||0x1f4;return function(_0x40fd6b){logger[_0x09e2('0x29')](_0x40fd6b[_0x09e2('0x2a')]);if(_0x40fd6b['name']){delete _0x40fd6b['name'];}_0x56d868[_0x09e2('0x1d')](_0x5775de)[_0x09e2('0x2b')](_0x40fd6b);};}exports[_0x09e2('0x26')]=function(_0x3f94fd,_0x4a8957){if(_0x3f94fd[_0x09e2('0x2c')]['id']){delete _0x3f94fd['body']['id'];}return db[_0x09e2('0x2d')][_0x09e2('0x2e')]({'where':{'id':_0x3f94fd['params']['id']}})[_0x09e2('0x27')](handleEntityNotFound(_0x4a8957,null))[_0x09e2('0x27')](saveUpdates(_0x3f94fd[_0x09e2('0x2c')],null))['then'](respondWithResult(_0x4a8957,null))['catch'](handleError(_0x4a8957,null));};exports[_0x09e2('0x28')]=function(_0x2c9be0,_0x356c00){return db[_0x09e2('0x2d')][_0x09e2('0x2e')]({'where':{'id':_0x2c9be0['params']['id']}})[_0x09e2('0x27')](handleEntityNotFound(_0x356c00,null))[_0x09e2('0x27')](removeEntity(_0x356c00,null))[_0x09e2('0x2f')](handleError(_0x356c00,null));};
\ No newline at end of file
index afda099..a104780 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9895=['lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./action.attributes','exports','Action'];(function(_0x584373,_0x57bc88){var _0x43c9d2=function(_0x1c9fab){while(--_0x1c9fab){_0x584373['push'](_0x584373['shift']());}};_0x43c9d2(++_0x57bc88);}(_0x9895,0x113));var _0x5989=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x9895[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x5989('0x0'));var util=require('util');var logger=require(_0x5989('0x1'))(_0x5989('0x2'));var moment=require(_0x5989('0x3'));var BPromise=require(_0x5989('0x4'));var rp=require(_0x5989('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5989('0x6'));var config=require(_0x5989('0x7'));var attributes=require(_0x5989('0x8'));module[_0x5989('0x9')]=function(_0x179865,_0x99111f){return _0x179865['define'](_0x5989('0xa'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf70b=['request-promise','path','rimraf','define','Action','util','moment','bluebird'];(function(_0x5445b2,_0x29eba0){var _0x549952=function(_0x497953){while(--_0x497953){_0x5445b2['push'](_0x5445b2['shift']());}};_0x549952(++_0x29eba0);}(_0xf70b,0xe5));var _0xbf70=function(_0x2950af,_0x2020c9){_0x2950af=_0x2950af-0x0;var _0x418d27=_0xf70b[_0x2950af];return _0x418d27;};'use strict';var _=require('lodash');var util=require(_0xbf70('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xbf70('0x1'));var BPromise=require(_0xbf70('0x2'));var rp=require(_0xbf70('0x3'));var fs=require('fs');var path=require(_0xbf70('0x4'));var rimraf=require(_0xbf70('0x5'));var config=require('../../config/environment');var attributes=require('./action.attributes');module['exports']=function(_0x31ee9f,_0x7c920b){return _0x31ee9f[_0xbf70('0x6')](_0xbf70('0x7'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c8a60b3..d916345 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x4d09c1,_0x539a27){var _0x191480=function(_0x5d2526){while(--_0x5d2526){_0x4d09c1['push'](_0x4d09c1['shift']());}};_0x191480(++_0x539a27);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x25f280,_0x78272f){_0x25f280=_0x25f280-0x0;var _0x291cc9=_0x7fbe[_0x25f280];return _0x291cc9;};'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
+var _0xf494=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','Action,\x20%s,\x20%s','request\x20sent','Action,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2c96f6,_0x877207){var _0x6d4808=function(_0x567e0c){while(--_0x567e0c){_0x2c96f6['push'](_0x2c96f6['shift']());}};_0x6d4808(++_0x877207);}(_0xf494,0x1c6));var _0x4f49=function(_0xb6c999,_0x3328ae){_0xb6c999=_0xb6c999-0x0;var _0x2d8851=_0xf494[_0xb6c999];return _0x2d8851;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var moment=require(_0x4f49('0x2'));var BPromise=require('bluebird');var rs=require(_0x4f49('0x3'));var fs=require('fs');var Redis=require(_0x4f49('0x4'));var db=require(_0x4f49('0x5'))['db'];var utils=require(_0x4f49('0x6'));var logger=require(_0x4f49('0x7'))(_0x4f49('0x8'));var config=require(_0x4f49('0x9'));var jayson=require(_0x4f49('0xa'));var client=jayson[_0x4f49('0xb')][_0x4f49('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x42b0e8,_0x5eb186,_0x58e9a0){return new BPromise(function(_0x169c95,_0x327bd5){return client[_0x4f49('0xd')](_0x42b0e8,_0x58e9a0)[_0x4f49('0xe')](function(_0x185174){logger[_0x4f49('0xf')](_0x4f49('0x10'),_0x5eb186,_0x4f49('0x11'));logger['debug'](_0x4f49('0x12'),_0x5eb186,_0x4f49('0x11'),JSON['stringify'](_0x185174));if(_0x185174[_0x4f49('0x13')]){if(_0x185174['error']['code']===0x1f4){logger[_0x4f49('0x13')](_0x4f49('0x10'),_0x5eb186,_0x185174['error'][_0x4f49('0x14')]);return _0x327bd5(_0x185174[_0x4f49('0x13')][_0x4f49('0x14')]);}logger[_0x4f49('0x13')](_0x4f49('0x10'),_0x5eb186,_0x185174[_0x4f49('0x13')][_0x4f49('0x14')]);return _0x169c95(_0x185174['error'][_0x4f49('0x14')]);}else{logger[_0x4f49('0xf')](_0x4f49('0x10'),_0x5eb186,'request\x20sent');_0x169c95(_0x185174['result'][_0x4f49('0x14')]);}})[_0x4f49('0x15')](function(_0x74886e){logger['error'](_0x4f49('0x10'),_0x5eb186,_0x74886e);_0x327bd5(_0x74886e);});});}
\ No newline at end of file
index b97c616..9a8bad1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x811d=['fs-extra','../../components/interaction/service','../../config/environment','./action.controller','put','/:id','isAuthenticated','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x57344e,_0x3f539f){var _0x13c772=function(_0x4d4210){while(--_0x4d4210){_0x57344e['push'](_0x57344e['shift']());}};_0x13c772(++_0x3f539f);}(_0x811d,0xaf));var _0xd811=function(_0x5b3256,_0x4e2c6d){_0x5b3256=_0x5b3256-0x0;var _0x3fcd34=_0x811d[_0x5b3256];return _0x3fcd34;};'use strict';var multer=require(_0xd811('0x0'));var util=require(_0xd811('0x1'));var path=require(_0xd811('0x2'));var timeout=require(_0xd811('0x3'));var express=require(_0xd811('0x4'));var router=express['Router']();var fs_extra=require(_0xd811('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd811('0x6'));var config=require(_0xd811('0x7'));var controller=require(_0xd811('0x8'));router[_0xd811('0x9')](_0xd811('0xa'),auth[_0xd811('0xb')](),controller['update']);router[_0xd811('0xc')](_0xd811('0xa'),auth[_0xd811('0xb')](),controller[_0xd811('0xd')]);module[_0xd811('0xe')]=router;
\ No newline at end of file
+var _0xb8f5=['destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./action.controller','/:id','isAuthenticated'];(function(_0x4653f7,_0x3d3ae3){var _0x5454da=function(_0x448f55){while(--_0x448f55){_0x4653f7['push'](_0x4653f7['shift']());}};_0x5454da(++_0x3d3ae3);}(_0xb8f5,0x18e));var _0x5b8f=function(_0x3d6d69,_0x5a4ec1){_0x3d6d69=_0x3d6d69-0x0;var _0x179db1=_0xb8f5[_0x3d6d69];return _0x179db1;};'use strict';var multer=require(_0x5b8f('0x0'));var util=require(_0x5b8f('0x1'));var path=require(_0x5b8f('0x2'));var timeout=require(_0x5b8f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5b8f('0x4'));var auth=require(_0x5b8f('0x5'));var interaction=require(_0x5b8f('0x6'));var config=require('../../config/environment');var controller=require(_0x5b8f('0x7'));router['put'](_0x5b8f('0x8'),auth[_0x5b8f('0x9')](),controller['update']);router['delete'](_0x5b8f('0x8'),auth[_0x5b8f('0x9')](),controller[_0x5b8f('0xa')]);module[_0x5b8f('0xb')]=router;
\ No newline at end of file
index 1a589f0..a99884d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb138=['TEXT','sequelize','exports','STRING'];(function(_0xfbaf4c,_0x6ad496){var _0x4513c9=function(_0x29e5a4){while(--_0x29e5a4){_0xfbaf4c['push'](_0xfbaf4c['shift']());}};_0x4513c9(++_0x6ad496);}(_0xb138,0x1dd));var _0x8b13=function(_0x23202d,_0x2c1b45){_0x23202d=_0x23202d-0x0;var _0x39bb25=_0xb138[_0x23202d];return _0x39bb25;};'use strict';var Sequelize=require(_0x8b13('0x0'));module[_0x8b13('0x1')]={'name':{'type':Sequelize[_0x8b13('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x8b13('0x2')]},'parent':{'type':Sequelize[_0x8b13('0x2')]},'table':{'type':Sequelize[_0x8b13('0x2')]},'conditions':{'type':Sequelize[_0x8b13('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x6aa7=['TEXT','sequelize','STRING'];(function(_0x10113d,_0x13a861){var _0xf52f5d=function(_0x5b6479){while(--_0x5b6479){_0x10113d['push'](_0x10113d['shift']());}};_0xf52f5d(++_0x13a861);}(_0x6aa7,0x178));var _0x76aa=function(_0x444dd9,_0x37005f){_0x444dd9=_0x444dd9-0x0;var _0x112d27=_0x6aa7[_0x444dd9];return _0x112d27;};'use strict';var Sequelize=require(_0x76aa('0x0'));module['exports']={'name':{'type':Sequelize[_0x76aa('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x76aa('0x1')]},'parent':{'type':Sequelize[_0x76aa('0x1')]},'table':{'type':Sequelize[_0x76aa('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x76aa('0x2')]}};
\ No newline at end of file
index 592c571..a06de30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8127=['offset','limit','status','set','Content-Range','reject','save','update','then','destroy','get','CustomReports','UserProfileResource','error','stack','name','index','map','AnalyticCustomReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','rawAttributes','length','create','body','user','Reports','UserProfileSection','find','userProfileId','preview','left_join','COUNT(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','select','table','MetricId','metric','function','format','replace','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','debug','toString','sequelize','QueryTypes','join','right_join','cross_join','SUM(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','UNIX_TIMESTAMP(%s)','getFields','Sequelize','ValidationErrorItem','AnalyticMetric','clone','output','web','fullPath','%s-%s.%s','randomstring','generate','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','startDate','info','Run\x20Query:','child_process','fork','../../files/reports','savename','from','countTable','COUNT(*)','SELECT','run','Limited\x20Query:','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','end','json','undefined','count'];(function(_0x1cbc6b,_0x2b13b5){var _0x46da0d=function(_0x4f3a8d){while(--_0x4f3a8d){_0x1cbc6b['push'](_0x1cbc6b['shift']());}};_0x46da0d(++_0x2b13b5);}(_0x8127,0x1d1));var _0x7812=function(_0x2c63fd,_0x301cb3){_0x2c63fd=_0x2c63fd-0x0;var _0x4ce068=_0x8127[_0x2c63fd];return _0x4ce068;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7812('0x0'));var zipdir=require(_0x7812('0x1'));var jsonpatch=require(_0x7812('0x2'));var rp=require(_0x7812('0x3'));var moment=require(_0x7812('0x4'));var BPromise=require(_0x7812('0x5'));var Mustache=require('mustache');var util=require(_0x7812('0x6'));var path=require(_0x7812('0x7'));var sox=require(_0x7812('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7812('0x9'));var _=require('lodash');var squel=require(_0x7812('0xa'));var crypto=require(_0x7812('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7812('0xc'));var toCsv=require(_0x7812('0xd'));var querystring=require(_0x7812('0xe'));var Papa=require(_0x7812('0xf'));var Redis=require('ioredis');var authService=require(_0x7812('0x10'));var qs=require(_0x7812('0x11'));var as=require(_0x7812('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7812('0x13'))(_0x7812('0x14'));var utils=require('../../config/utils');var config=require(_0x7812('0x15'));var licenseUtil=require(_0x7812('0x16'));var db=require(_0x7812('0x17'))['db'];var dbH=require(_0x7812('0x17'))[_0x7812('0x18')];function respondWithStatusCode(_0x1776ec,_0xa2db16){_0xa2db16=_0xa2db16||0xcc;return function(_0x4b8e67){if(_0x4b8e67){return _0x1776ec[_0x7812('0x19')](_0xa2db16);}return _0x1776ec['status'](_0xa2db16)[_0x7812('0x1a')]();};}function respondWithResult(_0x20d856,_0xec495d){_0xec495d=_0xec495d||0xc8;return function(_0x2466ba){if(_0x2466ba){return _0x20d856['status'](_0xec495d)[_0x7812('0x1b')](_0x2466ba);}};}function respondWithFilteredResult(_0x44c292,_0x1e772d){return function(_0x13dd41){if(_0x13dd41){var _0x202053=typeof _0x1e772d['offset']==='undefined'&&typeof _0x1e772d['limit']===_0x7812('0x1c');var _0x5a6bf7=_0x13dd41[_0x7812('0x1d')];var _0x1c5fb1=_0x202053?0x0:_0x1e772d[_0x7812('0x1e')];var _0x798495=_0x202053?_0x13dd41['count']:_0x1e772d[_0x7812('0x1e')]+_0x1e772d[_0x7812('0x1f')];var _0x3730df;if(_0x798495>=_0x5a6bf7){_0x798495=_0x5a6bf7;_0x3730df=0xc8;}else{_0x3730df=0xce;}_0x44c292[_0x7812('0x20')](_0x3730df);return _0x44c292[_0x7812('0x21')](_0x7812('0x22'),_0x1c5fb1+'-'+_0x798495+'/'+_0x5a6bf7)[_0x7812('0x1b')](_0x13dd41);}return null;};}function patchUpdates(_0x4a4dae){return function(_0x28b019){try{jsonpatch['apply'](_0x28b019,_0x4a4dae,!![]);}catch(_0x5bc6e9){return BPromise[_0x7812('0x23')](_0x5bc6e9);}return _0x28b019[_0x7812('0x24')]();};}function saveUpdates(_0x5e0d45,_0x1d612f){return function(_0x12c7a0){if(_0x12c7a0){return _0x12c7a0[_0x7812('0x25')](_0x5e0d45)[_0x7812('0x26')](function(_0x34845a){return _0x34845a;});}return null;};}function removeEntity(_0x543dfe,_0x106170){return function(_0x3d0338){if(_0x3d0338){return _0x3d0338[_0x7812('0x27')]()[_0x7812('0x26')](function(){var _0x12ef83=_0x3d0338[_0x7812('0x28')]({'plain':!![]});var _0x574ab4=_0x7812('0x29');return db[_0x7812('0x2a')][_0x7812('0x27')]({'where':{'type':_0x574ab4,'resourceId':_0x12ef83['id']}})[_0x7812('0x26')](function(){return _0x3d0338;});})['then'](function(){_0x543dfe[_0x7812('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1676d9,_0x1d0047){return function(_0x308640){if(!_0x308640){_0x1676d9[_0x7812('0x19')](0x194);}return _0x308640;};}function handleError(_0xf2480b,_0x510590){_0x510590=_0x510590||0x1f4;return function(_0x3ea950){logger[_0x7812('0x2b')](_0x3ea950[_0x7812('0x2c')]);if(_0x3ea950[_0x7812('0x2d')]){delete _0x3ea950['name'];}_0xf2480b['status'](_0x510590)['send'](_0x3ea950);};}exports[_0x7812('0x2e')]=function(_0xa616,_0x106a63){var _0x1464af={},_0x1be491={},_0x47407f={'count':0x0,'rows':[]};var _0x53d60a=_[_0x7812('0x2f')](db[_0x7812('0x30')]['rawAttributes'],function(_0x57eac5){return{'name':_0x57eac5[_0x7812('0x31')],'type':_0x57eac5[_0x7812('0x32')][_0x7812('0x33')]};});_0x1be491[_0x7812('0x34')]=_[_0x7812('0x2f')](_0x53d60a,_0x7812('0x2d'));_0x1be491[_0x7812('0x35')]=_[_0x7812('0x36')](_0xa616['query']);_0x1be491[_0x7812('0x37')]=_[_0x7812('0x38')](_0x1be491[_0x7812('0x34')],_0x1be491['query']);_0x1464af[_0x7812('0x39')]=_[_0x7812('0x38')](_0x1be491[_0x7812('0x34')],qs[_0x7812('0x3a')](_0xa616['query']['fields']));_0x1464af[_0x7812('0x39')]=_0x1464af[_0x7812('0x39')]['length']?_0x1464af[_0x7812('0x39')]:_0x1be491[_0x7812('0x34')];if(!_0xa616['query'][_0x7812('0x3b')]('nolimit')){_0x1464af[_0x7812('0x1f')]=qs['limit'](_0xa616[_0x7812('0x35')][_0x7812('0x1f')]);_0x1464af[_0x7812('0x1e')]=qs[_0x7812('0x1e')](_0xa616[_0x7812('0x35')]['offset']);}_0x1464af[_0x7812('0x3c')]=qs[_0x7812('0x3d')](_0xa616['query'][_0x7812('0x3d')]);_0x1464af[_0x7812('0x3e')]=qs[_0x7812('0x37')](_[_0x7812('0x3f')](_0xa616[_0x7812('0x35')],_0x1be491['filters']),_0x53d60a);if(_0xa616[_0x7812('0x35')]['filter']){_0x1464af[_0x7812('0x3e')]=_[_0x7812('0x40')](_0x1464af[_0x7812('0x3e')],{'$or':_['map'](_0x53d60a,function(_0x3e2387){if(_0x3e2387['type']!==_0x7812('0x41')){var _0x183a17={};_0x183a17[_0x3e2387['name']]={'$like':'%'+_0xa616[_0x7812('0x35')][_0x7812('0x42')]+'%'};return _0x183a17;}})});}_0x1464af=_[_0x7812('0x40')]({},_0x1464af,_0xa616[_0x7812('0x43')]);var _0x14cfa5={'where':_0x1464af[_0x7812('0x3e')]};return db[_0x7812('0x30')][_0x7812('0x1d')](_0x14cfa5)[_0x7812('0x26')](function(_0x55e9b0){_0x47407f[_0x7812('0x1d')]=_0x55e9b0;if(_0xa616[_0x7812('0x35')][_0x7812('0x44')]){_0x1464af[_0x7812('0x45')]=[{'all':!![]}];}return db[_0x7812('0x30')][_0x7812('0x46')](_0x1464af);})['then'](function(_0x201c46){_0x47407f['rows']=_0x201c46;return _0x47407f;})[_0x7812('0x26')](respondWithFilteredResult(_0x106a63,_0x1464af))[_0x7812('0x47')](handleError(_0x106a63,null));};exports[_0x7812('0x48')]=function(_0x5c0e93,_0x50dbb1){var _0x19d9e7={'raw':![],'where':{'id':_0x5c0e93[_0x7812('0x49')]['id']}},_0x764ad6={};_0x764ad6[_0x7812('0x34')]=_['keys'](db[_0x7812('0x30')][_0x7812('0x4a')]);_0x764ad6[_0x7812('0x35')]=_[_0x7812('0x36')](_0x5c0e93[_0x7812('0x35')]);_0x764ad6[_0x7812('0x37')]=_['intersection'](_0x764ad6[_0x7812('0x34')],_0x764ad6[_0x7812('0x35')]);_0x19d9e7[_0x7812('0x39')]=_['intersection'](_0x764ad6[_0x7812('0x34')],qs['fields'](_0x5c0e93[_0x7812('0x35')][_0x7812('0x3a')]));_0x19d9e7[_0x7812('0x39')]=_0x19d9e7[_0x7812('0x39')][_0x7812('0x4b')]?_0x19d9e7[_0x7812('0x39')]:_0x764ad6['model'];if(_0x5c0e93[_0x7812('0x35')][_0x7812('0x44')]){_0x19d9e7[_0x7812('0x45')]=[{'all':!![]}];}_0x19d9e7=_[_0x7812('0x40')]({},_0x19d9e7,_0x5c0e93[_0x7812('0x43')]);return db[_0x7812('0x30')]['find'](_0x19d9e7)[_0x7812('0x26')](handleEntityNotFound(_0x50dbb1,null))[_0x7812('0x26')](respondWithResult(_0x50dbb1,null))[_0x7812('0x47')](handleError(_0x50dbb1,null));};exports[_0x7812('0x4c')]=function(_0x10ef12,_0x36e91c){return db['AnalyticCustomReport'][_0x7812('0x4c')](_0x10ef12[_0x7812('0x4d')],{})[_0x7812('0x26')](function(_0x1ee43e){var _0x1759a5=_0x10ef12[_0x7812('0x4e')]['get']({'plain':!![]});if(!_0x1759a5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1759a5['role']===_0x7812('0x4e')){var _0x4e6aac=_0x1ee43e[_0x7812('0x28')]({'plain':!![]});var _0x3a40d2=_0x7812('0x4f');return db[_0x7812('0x50')][_0x7812('0x51')]({'where':{'name':_0x3a40d2,'userProfileId':_0x1759a5[_0x7812('0x52')]},'raw':!![]})[_0x7812('0x26')](function(_0x81d81e){if(_0x81d81e&&_0x81d81e['autoAssociation']===0x0){return db[_0x7812('0x2a')]['create']({'name':_0x4e6aac[_0x7812('0x2d')],'resourceId':_0x4e6aac['id'],'type':_0x7812('0x29'),'sectionId':_0x81d81e['id']},{})[_0x7812('0x26')](function(){return _0x1ee43e;});}else{return _0x1ee43e;}})['catch'](function(_0xe434ef){logger[_0x7812('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xe434ef);throw _0xe434ef;});}return _0x1ee43e;})['then'](respondWithResult(_0x36e91c,0xc9))[_0x7812('0x47')](handleError(_0x36e91c,null));};exports[_0x7812('0x25')]=function(_0x64298,_0x278b64){if(_0x64298[_0x7812('0x4d')]['id']){delete _0x64298[_0x7812('0x4d')]['id'];}return db['AnalyticCustomReport'][_0x7812('0x51')]({'where':{'id':_0x64298['params']['id']}})[_0x7812('0x26')](handleEntityNotFound(_0x278b64,null))[_0x7812('0x26')](saveUpdates(_0x64298['body'],null))['then'](respondWithResult(_0x278b64,null))[_0x7812('0x47')](handleError(_0x278b64,null));};exports[_0x7812('0x27')]=function(_0x207326,_0x1f693d){return db[_0x7812('0x30')]['find']({'where':{'id':_0x207326['params']['id']}})['then'](handleEntityNotFound(_0x1f693d,null))[_0x7812('0x26')](removeEntity(_0x1f693d,null))['catch'](handleError(_0x1f693d,null));};exports[_0x7812('0x53')]=function(_0x95d941,_0x56dea2){var _0x3ece7f=0xa;var _0x3c456c=['join',_0x7812('0x54'),'right_join','cross_join'];var _0xb77742={'SUM':'SUM(%s)','COUNT':_0x7812('0x55'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x7812('0x56'),'MIN':_0x7812('0x57'),'AVG':_0x7812('0x58'),'GROUP_CONCAT':_0x7812('0x59'),'GROUP_CONCAT ASC':_0x7812('0x5a'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x3e181f={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x7812('0x5b'),'HOUR':_0x7812('0x5c'),'ROUND':_0x7812('0x5d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x2d8a27=function(_0x12403f){return!_[_0x7812('0x5e')]([_0x7812('0x5f'),_0x7812('0x60'),_0x7812('0x61'),_0x7812('0x62')],_0x12403f);};var _0x5ac3db=function(_0x19c0cc){if(!_0x19c0cc||!_0x19c0cc[_0x7812('0x63')][_0x7812('0x4b')]){return'';}for(var _0x3f80bd='(',_0x3cadf3=0x0;_0x3cadf3<_0x19c0cc[_0x7812('0x63')][_0x7812('0x4b')];_0x3cadf3+=0x1){_0x3cadf3>0x0&&(_0x3f80bd+='\x20'+_0x19c0cc[_0x7812('0x64')]+'\x20');_0x3f80bd+=_0x19c0cc[_0x7812('0x63')][_0x3cadf3][_0x7812('0x65')]?_0x5ac3db(_0x19c0cc[_0x7812('0x63')][_0x3cadf3][_0x7812('0x65')]):_0x19c0cc[_0x7812('0x63')][_0x3cadf3][_0x7812('0x66')]+'\x20'+_0x19c0cc[_0x7812('0x63')][_0x3cadf3]['condition']+(_0x2d8a27(_0x19c0cc[_0x7812('0x63')][_0x3cadf3][_0x7812('0x67')])?'\x20'+_0x19c0cc[_0x7812('0x63')][_0x3cadf3][_0x7812('0x68')]:'');}return _0x3f80bd+')';};var _0x3153ba={'where':{'id':_0x95d941[_0x7812('0x49')]['id']}},_0x4b7c1b,_0x2f6590,_0x1a5e3e,_0xb59f91,_0x3a374b;_0x3153ba=_[_0x7812('0x40')]({},_0x3153ba,_0x95d941[_0x7812('0x43')]);return db[_0x7812('0x30')][_0x7812('0x51')](_0x3153ba)[_0x7812('0x26')](function(_0x3227d2){if(_0x3227d2){_0x4b7c1b=_0x3227d2;return _0x3227d2['getFields']();}return null;})[_0x7812('0x26')](function(_0x1a3dca){if(_0x1a3dca){if(!_0x1a3dca['length']){throw new db['Sequelize']['ValidationErrorItem'](_0x7812('0x69'),0x193);}_0x2f6590=_0x1a3dca;return db['AnalyticMetric'][_0x7812('0x46')]({'raw':!![]});}return null;})[_0x7812('0x26')](function(_0x47d404){if(_0x47d404){_0x1a5e3e=_[_0x7812('0x6a')](_0x47d404,'id');var _0xfa4327;var _0x3ca34f=squel[_0x7812('0x6b')]();_0x3ca34f['from'](_0x4b7c1b[_0x7812('0x6c')]);for(var _0x13f1f1=0x0;_0x13f1f1<_0x2f6590['length'];_0x13f1f1+=0x1){_0xfa4327=_0x2f6590[_0x13f1f1][_0x7812('0x6d')]?_0x1a5e3e[_0x2f6590[_0x13f1f1][_0x7812('0x6d')]][_0x7812('0x6e')]:_0x2f6590[_0x13f1f1][_0x7812('0x66')];_0xfa4327=_0x2f6590[_0x13f1f1][_0x7812('0x6f')]?_['replace'](_0xb77742[_0x2f6590[_0x13f1f1][_0x7812('0x6f')]],'%s',_0xfa4327):_0xfa4327;_0xfa4327=_0x2f6590[_0x13f1f1][_0x7812('0x70')]?_[_0x7812('0x71')](_0x3e181f[_0x2f6590[_0x13f1f1][_0x7812('0x70')]],'%s',_0xfa4327):_0xfa4327;if(_0x2f6590[_0x13f1f1][_0x7812('0x72')]){_0x3ca34f[_0x7812('0x65')](_0xfa4327);}_0x2f6590[_0x13f1f1][_0x7812('0x73')]&&_0x3ca34f[_0x7812('0x3c')](_0xfa4327,_0x2f6590[_0x13f1f1][_0x7812('0x73')]===_0x7812('0x74')?![]:!![]);_0x3ca34f['field'](_0xfa4327,_0x2f6590[_0x13f1f1][_0x7812('0x75')]||_0xfa4327);}if(_0x4b7c1b[_0x7812('0x76')]){_0x4b7c1b[_0x7812('0x76')]=JSON[_0x7812('0x77')](_0x4b7c1b['joins']);for(var _0x43508e=0x0;_0x43508e<_0x4b7c1b[_0x7812('0x76')][_0x7812('0x4b')];_0x43508e+=0x1){if(_0x4b7c1b[_0x7812('0x76')][_0x43508e]['type']&&_['includes'](_0x3c456c,_0x4b7c1b[_0x7812('0x76')][_0x43508e][_0x7812('0x32')])&&_0x4b7c1b['joins'][_0x43508e][_0x7812('0x78')]&&_0x4b7c1b[_0x7812('0x76')][_0x43508e][_0x7812('0x79')]&&_0x4b7c1b[_0x7812('0x76')][_0x43508e][_0x7812('0x7a')]){_0x3ca34f[_0x4b7c1b['joins'][_0x43508e][_0x7812('0x32')]](_0x4b7c1b['joins'][_0x43508e][_0x7812('0x79')],null,util[_0x7812('0x70')](_0x7812('0x7b'),_0x4b7c1b['table'],_0x4b7c1b[_0x7812('0x76')][_0x43508e][_0x7812('0x78')],_0x4b7c1b[_0x7812('0x76')][_0x43508e][_0x7812('0x79')],_0x4b7c1b['joins'][_0x43508e]['foreignKey']));}}}if(_0x4b7c1b[_0x7812('0x7c')]){_0x4b7c1b[_0x7812('0x7c')]=JSON['parse'](_0x4b7c1b[_0x7812('0x7c')]);_0x3ca34f[_0x7812('0x3e')](_0x5ac3db(_0x4b7c1b['conditions'][_0x7812('0x65')]));}_0x3a374b=_0x3ca34f['clone']();_0x3ca34f['limit'](_0x3ece7f);_0x3ca34f[_0x7812('0x1e')](0x0);logger[_0x7812('0x7d')]('Limited\x20Query:',_0x3ca34f[_0x7812('0x7e')]());return dbH['sequelize']['query'](_0x3ca34f['toString'](),{'type':dbH[_0x7812('0x7f')][_0x7812('0x80')]['SELECT']});}})['then'](respondWithResult(_0x56dea2,null))[_0x7812('0x47')](handleError(_0x56dea2,null));};function runReport(_0x36e050,_0x5cbf06,_0x2b7bec){var _0x50edf5=_0x5cbf06[_0x7812('0x2d')];var _0x307948=0xa;var _0x261294=[_0x7812('0x81'),_0x7812('0x54'),_0x7812('0x82'),_0x7812('0x83')];var _0x16ff1c={'SUM':_0x7812('0x84'),'COUNT':_0x7812('0x55'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x7812('0x56'),'MIN':_0x7812('0x57'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x7812('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x7812('0x85')};var _0x1df641={'SEC_TO_TIME':_0x7812('0x86'),'DATE':_0x7812('0x5b'),'HOUR':_0x7812('0x5c'),'ROUND':_0x7812('0x5d'),'UNIX_TIMESTAMP':_0x7812('0x87')};var _0x210db1=function(_0x5a034a){return!_[_0x7812('0x5e')]([_0x7812('0x5f'),_0x7812('0x60'),'IS\x20EMPTY',_0x7812('0x62')],_0x5a034a);};var _0x2cf988=function(_0x389102){if(!_0x389102||!_0x389102[_0x7812('0x63')][_0x7812('0x4b')]){return'';}for(var _0x13ad02='(',_0x5698d9=0x0;_0x5698d9<_0x389102[_0x7812('0x63')][_0x7812('0x4b')];_0x5698d9+=0x1){_0x5698d9>0x0&&(_0x13ad02+='\x20'+_0x389102[_0x7812('0x64')]+'\x20');_0x13ad02+=_0x389102[_0x7812('0x63')][_0x5698d9][_0x7812('0x65')]?_0x2cf988(_0x389102[_0x7812('0x63')][_0x5698d9][_0x7812('0x65')]):_0x389102[_0x7812('0x63')][_0x5698d9][_0x7812('0x66')]+'\x20'+_0x389102[_0x7812('0x63')][_0x5698d9][_0x7812('0x67')]+(_0x210db1(_0x389102['rules'][_0x5698d9][_0x7812('0x67')])?'\x20'+_0x389102['rules'][_0x5698d9][_0x7812('0x68')]:'');}return _0x13ad02+')';};var _0x13620f={'where':{'id':_0x36e050['id']}},_0x5e2a3d,_0x7f9469,_0x574afa,_0x310f51,_0x25e145;_0x13620f=_[_0x7812('0x40')]({},_0x13620f,_0x2b7bec);return db[_0x7812('0x30')][_0x7812('0x51')](_0x13620f)[_0x7812('0x26')](function(_0x57a85e){if(_0x57a85e){_0x5e2a3d=_0x57a85e;return _0x57a85e[_0x7812('0x88')]();}return null;})[_0x7812('0x26')](function(_0x3bf854){if(_0x3bf854){if(!_0x3bf854[_0x7812('0x4b')]){throw new db[(_0x7812('0x89'))][(_0x7812('0x8a'))](_0x7812('0x69'),0x193);}_0x7f9469=_0x3bf854;return db[_0x7812('0x8b')][_0x7812('0x46')]({'raw':!![]});}return null;})[_0x7812('0x26')](function(_0x4f10ba){if(_0x4f10ba){_0x574afa=_[_0x7812('0x6a')](_0x4f10ba,'id');var _0x279ea2;var _0x364c15=squel[_0x7812('0x6b')]();_0x364c15['from'](_0x5e2a3d[_0x7812('0x6c')]);for(var _0x557923=0x0;_0x557923<_0x7f9469['length'];_0x557923+=0x1){_0x279ea2=_0x7f9469[_0x557923]['MetricId']?_0x574afa[_0x7f9469[_0x557923]['MetricId']][_0x7812('0x6e')]:_0x7f9469[_0x557923]['field'];_0x279ea2=_0x7f9469[_0x557923][_0x7812('0x6f')]?_[_0x7812('0x71')](_0x16ff1c[_0x7f9469[_0x557923][_0x7812('0x6f')]],'%s',_0x279ea2):_0x279ea2;_0x279ea2=_0x7f9469[_0x557923][_0x7812('0x70')]?_['replace'](_0x1df641[_0x7f9469[_0x557923][_0x7812('0x70')]],'%s',_0x279ea2):_0x279ea2;if(_0x7f9469[_0x557923][_0x7812('0x72')]){_0x364c15['group'](_0x279ea2);}_0x7f9469[_0x557923][_0x7812('0x73')]&&_0x364c15[_0x7812('0x3c')](_0x279ea2,_0x7f9469[_0x557923][_0x7812('0x73')]==='DESC'?![]:!![]);_0x364c15[_0x7812('0x66')](_0x279ea2,_0x7f9469[_0x557923][_0x7812('0x75')]||_0x279ea2);}if(_0x5e2a3d[_0x7812('0x76')]){_0x5e2a3d[_0x7812('0x76')]=JSON['parse'](_0x5e2a3d[_0x7812('0x76')]);for(var _0x56d189=0x0;_0x56d189<_0x5e2a3d[_0x7812('0x76')]['length'];_0x56d189+=0x1){if(_0x5e2a3d[_0x7812('0x76')][_0x56d189]['type']&&_['includes'](_0x261294,_0x5e2a3d['joins'][_0x56d189][_0x7812('0x32')])&&_0x5e2a3d[_0x7812('0x76')][_0x56d189][_0x7812('0x78')]&&_0x5e2a3d['joins'][_0x56d189][_0x7812('0x79')]&&_0x5e2a3d[_0x7812('0x76')][_0x56d189][_0x7812('0x7a')]){_0x364c15[_0x5e2a3d[_0x7812('0x76')][_0x56d189]['type']](_0x5e2a3d['joins'][_0x56d189][_0x7812('0x79')],null,util[_0x7812('0x70')](_0x7812('0x7b'),_0x5e2a3d[_0x7812('0x6c')],_0x5e2a3d[_0x7812('0x76')][_0x56d189][_0x7812('0x78')],_0x5e2a3d['joins'][_0x56d189][_0x7812('0x79')],_0x5e2a3d['joins'][_0x56d189]['foreignKey']));}}}if(_0x5e2a3d[_0x7812('0x7c')]){_0x5e2a3d['conditions']=JSON['parse'](_0x5e2a3d['conditions']);_0x364c15['where'](_0x2cf988(_0x5e2a3d[_0x7812('0x7c')]['group']));}_0x25e145=_0x364c15[_0x7812('0x8c')]();_0x364c15[_0x7812('0x1f')](_0x307948);_0x364c15['offset'](0x0);return;}})[_0x7812('0x26')](function(){if(_0x5cbf06[_0x7812('0x8d')]===_0x7812('0x8e')){return null;}var _0x39ae33=_['merge'](_0x5cbf06,{'name':_0x5cbf06[_0x7812('0x8f')]||_0x5cbf06[_0x7812('0x2d')]||_0x5e2a3d[_0x7812('0x2d')],'basename':_0x50edf5,'savename':util[_0x7812('0x70')](_0x7812('0x90'),_0x5cbf06[_0x7812('0x2d')]||_0x5e2a3d[_0x7812('0x2d')],require(_0x7812('0x91'))[_0x7812('0x92')](0x4),_0x5cbf06[_0x7812('0x8d')]||'csv'),'reportId':_0x5e2a3d['id'],'reportType':_0x7812('0x93')});return db[_0x7812('0x94')]['create'](_0x39ae33,{'raw':!![]});})[_0x7812('0x26')](function(_0x5ef5e0){if(_0x5e2a3d['table']===_0x7812('0x95')){_0x25e145['where'](_0x5e2a3d[_0x7812('0x6c')]+_0x7812('0x96'),_0x5cbf06['startDate'],_0x5cbf06[_0x7812('0x97')]);}else{_0x25e145[_0x7812('0x3e')](_0x5e2a3d[_0x7812('0x6c')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5cbf06[_0x7812('0x98')],_0x5cbf06['endDate']);}if(_0x5ef5e0){logger[_0x7812('0x99')](_0x7812('0x9a'),_0x25e145['toString']());require(_0x7812('0x9b'))[_0x7812('0x9c')](path[_0x7812('0x81')](__dirname,'../../components/export/',_0x5ef5e0[_0x7812('0x8d')]),[_0x5ef5e0['id'],_0x25e145['toString'](),path[_0x7812('0x81')](__dirname,_0x7812('0x9d'),_0x5ef5e0[_0x7812('0x9e')]),_0x50edf5]);return _0x5ef5e0;}else{var _0x51a54d=squel[_0x7812('0x6b')]();_0x51a54d[_0x7812('0x9f')]('('+_0x25e145[_0x7812('0x7e')]()+')',_0x7812('0xa0'));_0x51a54d[_0x7812('0x66')](_0x7812('0xa1'),_0x7812('0x1d'));_0x25e145[_0x7812('0x1f')](_0x5cbf06['limit']||_0x307948);_0x25e145[_0x7812('0x1e')](_0x5cbf06[_0x7812('0x1e')]||0x0);return dbH[_0x7812('0x7f')]['query'](_0x51a54d[_0x7812('0x7e')](),{'type':dbH[_0x7812('0x7f')][_0x7812('0x80')][_0x7812('0xa2')]})['then'](function(_0x439290){if(!_0x439290[_0x7812('0x4b')]){_0x310f51=0x0;}else{_0x310f51=_0x439290[0x0][_0x7812('0x1d')]||0x0;}return dbH[_0x7812('0x7f')][_0x7812('0x35')](_0x25e145[_0x7812('0x7e')](),{'type':dbH['sequelize']['QueryTypes'][_0x7812('0xa2')]});})[_0x7812('0x26')](function(_0x3340db){return{'rows':_0x3340db||[],'count':_0x310f51};});}});}exports[_0x7812('0xa3')]=function(_0x587041,_0x7b9f4c){return runReport(_0x587041[_0x7812('0x49')],_0x587041[_0x7812('0x35')],_0x587041['options'])['then'](respondWithResult(_0x7b9f4c,null))[_0x7812('0x47')](handleError(_0x7b9f4c,null));};exports['runReport']=runReport;exports[_0x7812('0x35')]=function(_0x3fd918,_0x19c5b2){var _0x564090=0xa;var _0x1ae574=[_0x7812('0x81'),_0x7812('0x54'),_0x7812('0x82'),_0x7812('0x83')];var _0x2d1e47={'SUM':_0x7812('0x84'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x7812('0x56'),'MIN':_0x7812('0x57'),'AVG':_0x7812('0x58'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1c9da8={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x7812('0x5b'),'HOUR':'HOUR(%s)','ROUND':_0x7812('0x5d'),'UNIX_TIMESTAMP':_0x7812('0x87')};var _0x107d9a=function(_0x55f1af){return!_[_0x7812('0x5e')]([_0x7812('0x5f'),'IS\x20NOT\x20NULL',_0x7812('0x61'),_0x7812('0x62')],_0x55f1af);};var _0x28f47c=function(_0x5a7c97){if(!_0x5a7c97||!_0x5a7c97[_0x7812('0x63')][_0x7812('0x4b')]){return'';}for(var _0x16e3e8='(',_0x2610b4=0x0;_0x2610b4<_0x5a7c97[_0x7812('0x63')][_0x7812('0x4b')];_0x2610b4+=0x1){_0x2610b4>0x0&&(_0x16e3e8+='\x20'+_0x5a7c97['operator']+'\x20');_0x16e3e8+=_0x5a7c97[_0x7812('0x63')][_0x2610b4][_0x7812('0x65')]?_0x28f47c(_0x5a7c97[_0x7812('0x63')][_0x2610b4][_0x7812('0x65')]):_0x5a7c97[_0x7812('0x63')][_0x2610b4]['field']+'\x20'+_0x5a7c97[_0x7812('0x63')][_0x2610b4][_0x7812('0x67')]+(_0x107d9a(_0x5a7c97[_0x7812('0x63')][_0x2610b4]['condition'])?'\x20'+_0x5a7c97['rules'][_0x2610b4][_0x7812('0x68')]:'');}return _0x16e3e8+')';};var _0x290cc3={'where':{'id':_0x3fd918[_0x7812('0x49')]['id']}},_0x3ade25,_0x3cb77c,_0x4db50b,_0x4297b4,_0x58c34f;_0x290cc3=_['merge']({},_0x290cc3,_0x3fd918[_0x7812('0x43')]);return db[_0x7812('0x30')][_0x7812('0x51')](_0x290cc3)[_0x7812('0x26')](function(_0x2e8e1f){if(_0x2e8e1f){_0x3ade25=_0x2e8e1f;return _0x2e8e1f[_0x7812('0x88')]();}return null;})[_0x7812('0x26')](function(_0x2e3c2e){if(_0x2e3c2e){if(!_0x2e3c2e[_0x7812('0x4b')]){throw new db['Sequelize'][(_0x7812('0x8a'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x3cb77c=_0x2e3c2e;return db[_0x7812('0x8b')][_0x7812('0x46')]({'raw':!![]});}return null;})['then'](function(_0x41b5a1){if(_0x41b5a1){_0x4db50b=_[_0x7812('0x6a')](_0x41b5a1,'id');var _0x5b794c;var _0x5306c5=squel['select']();_0x5306c5[_0x7812('0x9f')](_0x3ade25['table']);for(var _0x545f69=0x0;_0x545f69<_0x3cb77c[_0x7812('0x4b')];_0x545f69+=0x1){_0x5b794c=_0x3cb77c[_0x545f69][_0x7812('0x6d')]?_0x4db50b[_0x3cb77c[_0x545f69][_0x7812('0x6d')]][_0x7812('0x6e')]:_0x3cb77c[_0x545f69][_0x7812('0x66')];_0x5b794c=_0x3cb77c[_0x545f69][_0x7812('0x6f')]?_[_0x7812('0x71')](_0x2d1e47[_0x3cb77c[_0x545f69]['function']],'%s',_0x5b794c):_0x5b794c;_0x5b794c=_0x3cb77c[_0x545f69][_0x7812('0x70')]?_[_0x7812('0x71')](_0x1c9da8[_0x3cb77c[_0x545f69][_0x7812('0x70')]],'%s',_0x5b794c):_0x5b794c;if(_0x3cb77c[_0x545f69][_0x7812('0x72')]){_0x5306c5[_0x7812('0x65')](_0x5b794c);}_0x3cb77c[_0x545f69][_0x7812('0x73')]&&_0x5306c5[_0x7812('0x3c')](_0x5b794c,_0x3cb77c[_0x545f69][_0x7812('0x73')]===_0x7812('0x74')?![]:!![]);_0x5306c5[_0x7812('0x66')](_0x5b794c,_0x3cb77c[_0x545f69]['alias']||_0x5b794c);}if(_0x3ade25[_0x7812('0x76')]){_0x3ade25['joins']=JSON[_0x7812('0x77')](_0x3ade25[_0x7812('0x76')]);for(var _0x3db77f=0x0;_0x3db77f<_0x3ade25[_0x7812('0x76')][_0x7812('0x4b')];_0x3db77f+=0x1){if(_0x3ade25[_0x7812('0x76')][_0x3db77f][_0x7812('0x32')]&&_[_0x7812('0x5e')](_0x1ae574,_0x3ade25['joins'][_0x3db77f][_0x7812('0x32')])&&_0x3ade25[_0x7812('0x76')][_0x3db77f][_0x7812('0x78')]&&_0x3ade25[_0x7812('0x76')][_0x3db77f]['foreignTable']&&_0x3ade25[_0x7812('0x76')][_0x3db77f][_0x7812('0x7a')]){_0x5306c5[_0x3ade25[_0x7812('0x76')][_0x3db77f]['type']](_0x3ade25['joins'][_0x3db77f][_0x7812('0x79')],null,util['format'](_0x7812('0x7b'),_0x3ade25[_0x7812('0x6c')],_0x3ade25['joins'][_0x3db77f][_0x7812('0x78')],_0x3ade25['joins'][_0x3db77f]['foreignTable'],_0x3ade25[_0x7812('0x76')][_0x3db77f]['foreignKey']));}}}if(_0x3ade25[_0x7812('0x7c')]){_0x3ade25[_0x7812('0x7c')]=JSON[_0x7812('0x77')](_0x3ade25[_0x7812('0x7c')]);_0x5306c5[_0x7812('0x3e')](_0x28f47c(_0x3ade25[_0x7812('0x7c')][_0x7812('0x65')]));}_0x58c34f=_0x5306c5[_0x7812('0x8c')]();_0x5306c5[_0x7812('0x1f')](_0x564090);_0x5306c5['offset'](0x0);logger[_0x7812('0x7d')](_0x7812('0xa4'),_0x5306c5[_0x7812('0x7e')]());return dbH[_0x7812('0x7f')][_0x7812('0x35')](_0x5306c5[_0x7812('0x7e')](),{'type':dbH[_0x7812('0x7f')][_0x7812('0x80')][_0x7812('0xa2')]});}})[_0x7812('0x26')](function(){return{'sql':_0x58c34f[_0x7812('0x7e')]()};})['then'](respondWithResult(_0x19c5b2,null))['catch'](handleError(_0x19c5b2,null));};
\ No newline at end of file
+var _0x7c7d=['csv','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','output','../../files/reports','options','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','debug','QueryTypes','SELECT','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','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','save','update','then','destroy','get','stack','name','send','index','map','AnalyticCustomReport','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','include','findAll','rows','catch','params','keys','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','find','userProfileId','autoAssociation','UserProfileResource','CustomReports','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','AVG(%s)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','rules','operator','group','condition','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','MetricId','metric','field','function','replace','format','groupBy','orderBy','alias','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','conditions','clone','Limited\x20Query:','toString','sequelize','COUNT(DISTINCT\x20%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','IS\x20EMPTY','IS\x20NOT\x20EMPTY','getFields','DESC','parentKey','web','%s-%s.%s','randomstring','generate'];(function(_0x5dc338,_0xae34a7){var _0x17bd9f=function(_0x581567){while(--_0x581567){_0x5dc338['push'](_0x5dc338['shift']());}};_0x17bd9f(++_0xae34a7);}(_0x7c7d,0x158));var _0xd7c7=function(_0x140b93,_0xa09d2d){_0x140b93=_0x140b93-0x0;var _0x5b429=_0x7c7d[_0x140b93];return _0x5b429;};'use strict';var emlformat=require(_0xd7c7('0x0'));var rimraf=require(_0xd7c7('0x1'));var zipdir=require(_0xd7c7('0x2'));var jsonpatch=require(_0xd7c7('0x3'));var rp=require(_0xd7c7('0x4'));var moment=require(_0xd7c7('0x5'));var BPromise=require(_0xd7c7('0x6'));var Mustache=require('mustache');var util=require(_0xd7c7('0x7'));var path=require(_0xd7c7('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd7c7('0x9'));var fs=require('fs');var fs_extra=require(_0xd7c7('0xa'));var _=require('lodash');var squel=require(_0xd7c7('0xb'));var crypto=require(_0xd7c7('0xc'));var jsforce=require(_0xd7c7('0xd'));var deskjs=require(_0xd7c7('0xe'));var toCsv=require(_0xd7c7('0xf'));var querystring=require(_0xd7c7('0x10'));var Papa=require(_0xd7c7('0x11'));var Redis=require(_0xd7c7('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xd7c7('0x13'));var as=require(_0xd7c7('0x14'));var hardwareService=require(_0xd7c7('0x15'));var logger=require('../../config/logger')(_0xd7c7('0x16'));var utils=require(_0xd7c7('0x17'));var config=require(_0xd7c7('0x18'));var licenseUtil=require(_0xd7c7('0x19'));var db=require('../../mysqldb')['db'];var dbH=require(_0xd7c7('0x1a'))['dbH'];function respondWithStatusCode(_0x5ad5cd,_0xfb0fda){_0xfb0fda=_0xfb0fda||0xcc;return function(_0x50d126){if(_0x50d126){return _0x5ad5cd[_0xd7c7('0x1b')](_0xfb0fda);}return _0x5ad5cd[_0xd7c7('0x1c')](_0xfb0fda)[_0xd7c7('0x1d')]();};}function respondWithResult(_0x12272f,_0x4e786c){_0x4e786c=_0x4e786c||0xc8;return function(_0x405684){if(_0x405684){return _0x12272f[_0xd7c7('0x1c')](_0x4e786c)[_0xd7c7('0x1e')](_0x405684);}};}function respondWithFilteredResult(_0x4de1eb,_0x4df993){return function(_0x4326b0){if(_0x4326b0){var _0x5ec933=typeof _0x4df993[_0xd7c7('0x1f')]===_0xd7c7('0x20')&&typeof _0x4df993[_0xd7c7('0x21')]==='undefined';var _0x26be54=_0x4326b0[_0xd7c7('0x22')];var _0x217e52=_0x5ec933?0x0:_0x4df993['offset'];var _0x52ac9d=_0x5ec933?_0x4326b0[_0xd7c7('0x22')]:_0x4df993[_0xd7c7('0x1f')]+_0x4df993['limit'];var _0x3d791f;if(_0x52ac9d>=_0x26be54){_0x52ac9d=_0x26be54;_0x3d791f=0xc8;}else{_0x3d791f=0xce;}_0x4de1eb[_0xd7c7('0x1c')](_0x3d791f);return _0x4de1eb['set'](_0xd7c7('0x23'),_0x217e52+'-'+_0x52ac9d+'/'+_0x26be54)['json'](_0x4326b0);}return null;};}function patchUpdates(_0x2d0071){return function(_0x41926b){try{jsonpatch[_0xd7c7('0x24')](_0x41926b,_0x2d0071,!![]);}catch(_0x1fb80b){return BPromise['reject'](_0x1fb80b);}return _0x41926b[_0xd7c7('0x25')]();};}function saveUpdates(_0x35bce8,_0x43cc51){return function(_0x472deb){if(_0x472deb){return _0x472deb[_0xd7c7('0x26')](_0x35bce8)[_0xd7c7('0x27')](function(_0x24e176){return _0x24e176;});}return null;};}function removeEntity(_0x497278,_0x25421f){return function(_0x381b1e){if(_0x381b1e){return _0x381b1e[_0xd7c7('0x28')]()[_0xd7c7('0x27')](function(){var _0x499d2e=_0x381b1e[_0xd7c7('0x29')]({'plain':!![]});var _0x24eb5c='CustomReports';return db['UserProfileResource'][_0xd7c7('0x28')]({'where':{'type':_0x24eb5c,'resourceId':_0x499d2e['id']}})['then'](function(){return _0x381b1e;});})['then'](function(){_0x497278['status'](0xcc)[_0xd7c7('0x1d')]();});}};}function handleEntityNotFound(_0x331516,_0xaae0cd){return function(_0x58fe10){if(!_0x58fe10){_0x331516[_0xd7c7('0x1b')](0x194);}return _0x58fe10;};}function handleError(_0x41b644,_0x161f0c){_0x161f0c=_0x161f0c||0x1f4;return function(_0x5455ad){logger['error'](_0x5455ad[_0xd7c7('0x2a')]);if(_0x5455ad['name']){delete _0x5455ad[_0xd7c7('0x2b')];}_0x41b644[_0xd7c7('0x1c')](_0x161f0c)[_0xd7c7('0x2c')](_0x5455ad);};}exports[_0xd7c7('0x2d')]=function(_0x1fdd8d,_0x1ceb8e){var _0x189806={},_0x55fa72={},_0x2703da={'count':0x0,'rows':[]};var _0x36f962=_[_0xd7c7('0x2e')](db[_0xd7c7('0x2f')][_0xd7c7('0x30')],function(_0x24bf70){return{'name':_0x24bf70['fieldName'],'type':_0x24bf70['type'][_0xd7c7('0x31')]};});_0x55fa72[_0xd7c7('0x32')]=_[_0xd7c7('0x2e')](_0x36f962,_0xd7c7('0x2b'));_0x55fa72['query']=_['keys'](_0x1fdd8d[_0xd7c7('0x33')]);_0x55fa72[_0xd7c7('0x34')]=_[_0xd7c7('0x35')](_0x55fa72[_0xd7c7('0x32')],_0x55fa72[_0xd7c7('0x33')]);_0x189806[_0xd7c7('0x36')]=_[_0xd7c7('0x35')](_0x55fa72[_0xd7c7('0x32')],qs[_0xd7c7('0x37')](_0x1fdd8d[_0xd7c7('0x33')][_0xd7c7('0x37')]));_0x189806[_0xd7c7('0x36')]=_0x189806[_0xd7c7('0x36')][_0xd7c7('0x38')]?_0x189806[_0xd7c7('0x36')]:_0x55fa72[_0xd7c7('0x32')];if(!_0x1fdd8d[_0xd7c7('0x33')][_0xd7c7('0x39')](_0xd7c7('0x3a'))){_0x189806[_0xd7c7('0x21')]=qs['limit'](_0x1fdd8d[_0xd7c7('0x33')][_0xd7c7('0x21')]);_0x189806[_0xd7c7('0x1f')]=qs['offset'](_0x1fdd8d['query']['offset']);}_0x189806[_0xd7c7('0x3b')]=qs['sort'](_0x1fdd8d[_0xd7c7('0x33')][_0xd7c7('0x3c')]);_0x189806[_0xd7c7('0x3d')]=qs[_0xd7c7('0x34')](_[_0xd7c7('0x3e')](_0x1fdd8d[_0xd7c7('0x33')],_0x55fa72[_0xd7c7('0x34')]),_0x36f962);if(_0x1fdd8d[_0xd7c7('0x33')]['filter']){_0x189806[_0xd7c7('0x3d')]=_[_0xd7c7('0x3f')](_0x189806['where'],{'$or':_[_0xd7c7('0x2e')](_0x36f962,function(_0x5e9018){if(_0x5e9018[_0xd7c7('0x40')]!==_0xd7c7('0x41')){var _0x348be9={};_0x348be9[_0x5e9018[_0xd7c7('0x2b')]]={'$like':'%'+_0x1fdd8d['query'][_0xd7c7('0x42')]+'%'};return _0x348be9;}})});}_0x189806=_[_0xd7c7('0x3f')]({},_0x189806,_0x1fdd8d['options']);var _0x1633f4={'where':_0x189806[_0xd7c7('0x3d')]};return db['AnalyticCustomReport'][_0xd7c7('0x22')](_0x1633f4)[_0xd7c7('0x27')](function(_0xf29e60){_0x2703da[_0xd7c7('0x22')]=_0xf29e60;if(_0x1fdd8d[_0xd7c7('0x33')]['includeAll']){_0x189806[_0xd7c7('0x43')]=[{'all':!![]}];}return db[_0xd7c7('0x2f')][_0xd7c7('0x44')](_0x189806);})[_0xd7c7('0x27')](function(_0x457bd8){_0x2703da[_0xd7c7('0x45')]=_0x457bd8;return _0x2703da;})['then'](respondWithFilteredResult(_0x1ceb8e,_0x189806))[_0xd7c7('0x46')](handleError(_0x1ceb8e,null));};exports['show']=function(_0x54b61f,_0x5d0b66){var _0x99adad={'raw':![],'where':{'id':_0x54b61f[_0xd7c7('0x47')]['id']}},_0x5a3985={};_0x5a3985['model']=_[_0xd7c7('0x48')](db[_0xd7c7('0x2f')][_0xd7c7('0x30')]);_0x5a3985[_0xd7c7('0x33')]=_[_0xd7c7('0x48')](_0x54b61f[_0xd7c7('0x33')]);_0x5a3985[_0xd7c7('0x34')]=_[_0xd7c7('0x35')](_0x5a3985['model'],_0x5a3985[_0xd7c7('0x33')]);_0x99adad['attributes']=_[_0xd7c7('0x35')](_0x5a3985['model'],qs[_0xd7c7('0x37')](_0x54b61f[_0xd7c7('0x33')][_0xd7c7('0x37')]));_0x99adad[_0xd7c7('0x36')]=_0x99adad[_0xd7c7('0x36')]['length']?_0x99adad[_0xd7c7('0x36')]:_0x5a3985[_0xd7c7('0x32')];if(_0x54b61f[_0xd7c7('0x33')][_0xd7c7('0x49')]){_0x99adad[_0xd7c7('0x43')]=[{'all':!![]}];}_0x99adad=_[_0xd7c7('0x3f')]({},_0x99adad,_0x54b61f['options']);return db['AnalyticCustomReport']['find'](_0x99adad)[_0xd7c7('0x27')](handleEntityNotFound(_0x5d0b66,null))['then'](respondWithResult(_0x5d0b66,null))[_0xd7c7('0x46')](handleError(_0x5d0b66,null));};exports['create']=function(_0x1c40c8,_0x20a930){return db['AnalyticCustomReport'][_0xd7c7('0x4a')](_0x1c40c8[_0xd7c7('0x4b')],{})['then'](function(_0x2af861){var _0x32508f=_0x1c40c8[_0xd7c7('0x4c')][_0xd7c7('0x29')]({'plain':!![]});if(!_0x32508f)throw new Error(_0xd7c7('0x4d'));if(_0x32508f[_0xd7c7('0x4e')]==='user'){var _0x1efc4c=_0x2af861[_0xd7c7('0x29')]({'plain':!![]});var _0x56bda1=_0xd7c7('0x4f');return db['UserProfileSection'][_0xd7c7('0x50')]({'where':{'name':_0x56bda1,'userProfileId':_0x32508f[_0xd7c7('0x51')]},'raw':!![]})['then'](function(_0xd8ad89){if(_0xd8ad89&&_0xd8ad89[_0xd7c7('0x52')]===0x0){return db[_0xd7c7('0x53')]['create']({'name':_0x1efc4c[_0xd7c7('0x2b')],'resourceId':_0x1efc4c['id'],'type':_0xd7c7('0x54'),'sectionId':_0xd8ad89['id']},{})['then'](function(){return _0x2af861;});}else{return _0x2af861;}})[_0xd7c7('0x46')](function(_0xf6801e){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xf6801e);throw _0xf6801e;});}return _0x2af861;})[_0xd7c7('0x27')](respondWithResult(_0x20a930,0xc9))[_0xd7c7('0x46')](handleError(_0x20a930,null));};exports[_0xd7c7('0x26')]=function(_0x2a7528,_0x157244){if(_0x2a7528[_0xd7c7('0x4b')]['id']){delete _0x2a7528[_0xd7c7('0x4b')]['id'];}return db[_0xd7c7('0x2f')]['find']({'where':{'id':_0x2a7528['params']['id']}})['then'](handleEntityNotFound(_0x157244,null))[_0xd7c7('0x27')](saveUpdates(_0x2a7528[_0xd7c7('0x4b')],null))[_0xd7c7('0x27')](respondWithResult(_0x157244,null))['catch'](handleError(_0x157244,null));};exports[_0xd7c7('0x28')]=function(_0x4c9baf,_0x4aea3f){return db['AnalyticCustomReport'][_0xd7c7('0x50')]({'where':{'id':_0x4c9baf[_0xd7c7('0x47')]['id']}})[_0xd7c7('0x27')](handleEntityNotFound(_0x4aea3f,null))['then'](removeEntity(_0x4aea3f,null))[_0xd7c7('0x46')](handleError(_0x4aea3f,null));};exports['preview']=function(_0x2f2d74,_0x4ddaeb){var _0x4480f5=0xa;var _0x19e3b2=[_0xd7c7('0x55'),_0xd7c7('0x56'),_0xd7c7('0x57'),_0xd7c7('0x58')];var _0x380bec={'SUM':_0xd7c7('0x59'),'COUNT':_0xd7c7('0x5a'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xd7c7('0x5b'),'MIN':_0xd7c7('0x5c'),'AVG':_0xd7c7('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x285f42={'SEC_TO_TIME':_0xd7c7('0x5e'),'DATE':_0xd7c7('0x5f'),'HOUR':_0xd7c7('0x60'),'ROUND':_0xd7c7('0x61'),'UNIX_TIMESTAMP':_0xd7c7('0x62')};var _0x39a178=function(_0x440574){return!_[_0xd7c7('0x63')]([_0xd7c7('0x64'),_0xd7c7('0x65'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x440574);};var _0x1d752f=function(_0x3a1984){if(!_0x3a1984||!_0x3a1984[_0xd7c7('0x66')][_0xd7c7('0x38')]){return'';}for(var _0x2c8f0e='(',_0x37f627=0x0;_0x37f627<_0x3a1984[_0xd7c7('0x66')]['length'];_0x37f627+=0x1){_0x37f627>0x0&&(_0x2c8f0e+='\x20'+_0x3a1984[_0xd7c7('0x67')]+'\x20');_0x2c8f0e+=_0x3a1984[_0xd7c7('0x66')][_0x37f627][_0xd7c7('0x68')]?_0x1d752f(_0x3a1984[_0xd7c7('0x66')][_0x37f627]['group']):_0x3a1984[_0xd7c7('0x66')][_0x37f627]['field']+'\x20'+_0x3a1984[_0xd7c7('0x66')][_0x37f627]['condition']+(_0x39a178(_0x3a1984['rules'][_0x37f627][_0xd7c7('0x69')])?'\x20'+_0x3a1984[_0xd7c7('0x66')][_0x37f627]['value']:'');}return _0x2c8f0e+')';};var _0x2e9003={'where':{'id':_0x2f2d74[_0xd7c7('0x47')]['id']}},_0x1b6fbd,_0x3a7ac2,_0x5cbdbb,_0x38b654,_0x2bd129;_0x2e9003=_[_0xd7c7('0x3f')]({},_0x2e9003,_0x2f2d74['options']);return db[_0xd7c7('0x2f')][_0xd7c7('0x50')](_0x2e9003)['then'](function(_0x3ccca1){if(_0x3ccca1){_0x1b6fbd=_0x3ccca1;return _0x3ccca1['getFields']();}return null;})[_0xd7c7('0x27')](function(_0x188b2f){if(_0x188b2f){if(!_0x188b2f[_0xd7c7('0x38')]){throw new db[(_0xd7c7('0x6a'))][(_0xd7c7('0x6b'))](_0xd7c7('0x6c'),0x193);}_0x3a7ac2=_0x188b2f;return db[_0xd7c7('0x6d')][_0xd7c7('0x44')]({'raw':!![]});}return null;})[_0xd7c7('0x27')](function(_0x41fefc){if(_0x41fefc){_0x5cbdbb=_[_0xd7c7('0x6e')](_0x41fefc,'id');var _0x200826;var _0x24483d=squel[_0xd7c7('0x6f')]();_0x24483d[_0xd7c7('0x70')](_0x1b6fbd['table']);for(var _0x3f5484=0x0;_0x3f5484<_0x3a7ac2[_0xd7c7('0x38')];_0x3f5484+=0x1){_0x200826=_0x3a7ac2[_0x3f5484]['MetricId']?_0x5cbdbb[_0x3a7ac2[_0x3f5484][_0xd7c7('0x71')]][_0xd7c7('0x72')]:_0x3a7ac2[_0x3f5484][_0xd7c7('0x73')];_0x200826=_0x3a7ac2[_0x3f5484][_0xd7c7('0x74')]?_[_0xd7c7('0x75')](_0x380bec[_0x3a7ac2[_0x3f5484]['function']],'%s',_0x200826):_0x200826;_0x200826=_0x3a7ac2[_0x3f5484]['format']?_[_0xd7c7('0x75')](_0x285f42[_0x3a7ac2[_0x3f5484][_0xd7c7('0x76')]],'%s',_0x200826):_0x200826;if(_0x3a7ac2[_0x3f5484][_0xd7c7('0x77')]){_0x24483d[_0xd7c7('0x68')](_0x200826);}_0x3a7ac2[_0x3f5484][_0xd7c7('0x78')]&&_0x24483d[_0xd7c7('0x3b')](_0x200826,_0x3a7ac2[_0x3f5484][_0xd7c7('0x78')]==='DESC'?![]:!![]);_0x24483d['field'](_0x200826,_0x3a7ac2[_0x3f5484][_0xd7c7('0x79')]||_0x200826);}if(_0x1b6fbd['joins']){_0x1b6fbd[_0xd7c7('0x7a')]=JSON[_0xd7c7('0x7b')](_0x1b6fbd[_0xd7c7('0x7a')]);for(var _0x375e2c=0x0;_0x375e2c<_0x1b6fbd[_0xd7c7('0x7a')][_0xd7c7('0x38')];_0x375e2c+=0x1){if(_0x1b6fbd[_0xd7c7('0x7a')][_0x375e2c][_0xd7c7('0x40')]&&_[_0xd7c7('0x63')](_0x19e3b2,_0x1b6fbd[_0xd7c7('0x7a')][_0x375e2c][_0xd7c7('0x40')])&&_0x1b6fbd[_0xd7c7('0x7a')][_0x375e2c]['parentKey']&&_0x1b6fbd['joins'][_0x375e2c][_0xd7c7('0x7c')]&&_0x1b6fbd[_0xd7c7('0x7a')][_0x375e2c][_0xd7c7('0x7d')]){_0x24483d[_0x1b6fbd[_0xd7c7('0x7a')][_0x375e2c][_0xd7c7('0x40')]](_0x1b6fbd[_0xd7c7('0x7a')][_0x375e2c][_0xd7c7('0x7c')],null,util['format'](_0xd7c7('0x7e'),_0x1b6fbd[_0xd7c7('0x7f')],_0x1b6fbd['joins'][_0x375e2c]['parentKey'],_0x1b6fbd[_0xd7c7('0x7a')][_0x375e2c][_0xd7c7('0x7c')],_0x1b6fbd['joins'][_0x375e2c][_0xd7c7('0x7d')]));}}}if(_0x1b6fbd[_0xd7c7('0x80')]){_0x1b6fbd['conditions']=JSON[_0xd7c7('0x7b')](_0x1b6fbd[_0xd7c7('0x80')]);_0x24483d[_0xd7c7('0x3d')](_0x1d752f(_0x1b6fbd['conditions'][_0xd7c7('0x68')]));}_0x2bd129=_0x24483d[_0xd7c7('0x81')]();_0x24483d[_0xd7c7('0x21')](_0x4480f5);_0x24483d[_0xd7c7('0x1f')](0x0);logger['debug'](_0xd7c7('0x82'),_0x24483d[_0xd7c7('0x83')]());return dbH[_0xd7c7('0x84')]['query'](_0x24483d[_0xd7c7('0x83')](),{'type':dbH[_0xd7c7('0x84')]['QueryTypes']['SELECT']});}})[_0xd7c7('0x27')](respondWithResult(_0x4ddaeb,null))[_0xd7c7('0x46')](handleError(_0x4ddaeb,null));};function runReport(_0x4e8f83,_0x175818,_0x2660dd){var _0x488f63=_0x175818['name'];var _0x2b7b10=0xa;var _0x53bd55=[_0xd7c7('0x55'),_0xd7c7('0x56'),_0xd7c7('0x57'),_0xd7c7('0x58')];var _0x2613d8={'SUM':'SUM(%s)','COUNT':_0xd7c7('0x5a'),'COUNT DISTINCT':_0xd7c7('0x85'),'MAX':_0xd7c7('0x5b'),'MIN':_0xd7c7('0x5c'),'AVG':_0xd7c7('0x5d'),'GROUP_CONCAT':_0xd7c7('0x86'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xd7c7('0x87')};var _0x541849={'SEC_TO_TIME':_0xd7c7('0x5e'),'DATE':_0xd7c7('0x5f'),'HOUR':_0xd7c7('0x60'),'ROUND':_0xd7c7('0x61'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x101a2b=function(_0x274fec){return!_['includes']([_0xd7c7('0x64'),_0xd7c7('0x65'),_0xd7c7('0x88'),_0xd7c7('0x89')],_0x274fec);};var _0xa9dbaa=function(_0x44b70d){if(!_0x44b70d||!_0x44b70d[_0xd7c7('0x66')]['length']){return'';}for(var _0x524c73='(',_0x120709=0x0;_0x120709<_0x44b70d[_0xd7c7('0x66')][_0xd7c7('0x38')];_0x120709+=0x1){_0x120709>0x0&&(_0x524c73+='\x20'+_0x44b70d[_0xd7c7('0x67')]+'\x20');_0x524c73+=_0x44b70d[_0xd7c7('0x66')][_0x120709][_0xd7c7('0x68')]?_0xa9dbaa(_0x44b70d['rules'][_0x120709][_0xd7c7('0x68')]):_0x44b70d[_0xd7c7('0x66')][_0x120709]['field']+'\x20'+_0x44b70d[_0xd7c7('0x66')][_0x120709]['condition']+(_0x101a2b(_0x44b70d['rules'][_0x120709][_0xd7c7('0x69')])?'\x20'+_0x44b70d[_0xd7c7('0x66')][_0x120709]['value']:'');}return _0x524c73+')';};var _0x22eba8={'where':{'id':_0x4e8f83['id']}},_0x25150c,_0x2d4ae9,_0x5ac79a,_0x188658,_0x588d54;_0x22eba8=_['merge']({},_0x22eba8,_0x2660dd);return db['AnalyticCustomReport'][_0xd7c7('0x50')](_0x22eba8)['then'](function(_0x5db9a8){if(_0x5db9a8){_0x25150c=_0x5db9a8;return _0x5db9a8[_0xd7c7('0x8a')]();}return null;})[_0xd7c7('0x27')](function(_0x6cec64){if(_0x6cec64){if(!_0x6cec64[_0xd7c7('0x38')]){throw new db[(_0xd7c7('0x6a'))][(_0xd7c7('0x6b'))](_0xd7c7('0x6c'),0x193);}_0x2d4ae9=_0x6cec64;return db[_0xd7c7('0x6d')][_0xd7c7('0x44')]({'raw':!![]});}return null;})['then'](function(_0x1064a){if(_0x1064a){_0x5ac79a=_[_0xd7c7('0x6e')](_0x1064a,'id');var _0x51ab64;var _0x15b8c4=squel[_0xd7c7('0x6f')]();_0x15b8c4[_0xd7c7('0x70')](_0x25150c[_0xd7c7('0x7f')]);for(var _0x1ef7cd=0x0;_0x1ef7cd<_0x2d4ae9['length'];_0x1ef7cd+=0x1){_0x51ab64=_0x2d4ae9[_0x1ef7cd][_0xd7c7('0x71')]?_0x5ac79a[_0x2d4ae9[_0x1ef7cd][_0xd7c7('0x71')]][_0xd7c7('0x72')]:_0x2d4ae9[_0x1ef7cd]['field'];_0x51ab64=_0x2d4ae9[_0x1ef7cd][_0xd7c7('0x74')]?_[_0xd7c7('0x75')](_0x2613d8[_0x2d4ae9[_0x1ef7cd][_0xd7c7('0x74')]],'%s',_0x51ab64):_0x51ab64;_0x51ab64=_0x2d4ae9[_0x1ef7cd][_0xd7c7('0x76')]?_['replace'](_0x541849[_0x2d4ae9[_0x1ef7cd][_0xd7c7('0x76')]],'%s',_0x51ab64):_0x51ab64;if(_0x2d4ae9[_0x1ef7cd][_0xd7c7('0x77')]){_0x15b8c4[_0xd7c7('0x68')](_0x51ab64);}_0x2d4ae9[_0x1ef7cd][_0xd7c7('0x78')]&&_0x15b8c4[_0xd7c7('0x3b')](_0x51ab64,_0x2d4ae9[_0x1ef7cd]['orderBy']===_0xd7c7('0x8b')?![]:!![]);_0x15b8c4[_0xd7c7('0x73')](_0x51ab64,_0x2d4ae9[_0x1ef7cd][_0xd7c7('0x79')]||_0x51ab64);}if(_0x25150c['joins']){_0x25150c[_0xd7c7('0x7a')]=JSON[_0xd7c7('0x7b')](_0x25150c[_0xd7c7('0x7a')]);for(var _0x1cb580=0x0;_0x1cb580<_0x25150c[_0xd7c7('0x7a')]['length'];_0x1cb580+=0x1){if(_0x25150c[_0xd7c7('0x7a')][_0x1cb580][_0xd7c7('0x40')]&&_[_0xd7c7('0x63')](_0x53bd55,_0x25150c['joins'][_0x1cb580][_0xd7c7('0x40')])&&_0x25150c[_0xd7c7('0x7a')][_0x1cb580]['parentKey']&&_0x25150c[_0xd7c7('0x7a')][_0x1cb580][_0xd7c7('0x7c')]&&_0x25150c[_0xd7c7('0x7a')][_0x1cb580][_0xd7c7('0x7d')]){_0x15b8c4[_0x25150c['joins'][_0x1cb580][_0xd7c7('0x40')]](_0x25150c['joins'][_0x1cb580]['foreignTable'],null,util[_0xd7c7('0x76')](_0xd7c7('0x7e'),_0x25150c[_0xd7c7('0x7f')],_0x25150c['joins'][_0x1cb580][_0xd7c7('0x8c')],_0x25150c[_0xd7c7('0x7a')][_0x1cb580][_0xd7c7('0x7c')],_0x25150c[_0xd7c7('0x7a')][_0x1cb580][_0xd7c7('0x7d')]));}}}if(_0x25150c[_0xd7c7('0x80')]){_0x25150c['conditions']=JSON[_0xd7c7('0x7b')](_0x25150c[_0xd7c7('0x80')]);_0x15b8c4[_0xd7c7('0x3d')](_0xa9dbaa(_0x25150c[_0xd7c7('0x80')][_0xd7c7('0x68')]));}_0x588d54=_0x15b8c4[_0xd7c7('0x81')]();_0x15b8c4[_0xd7c7('0x21')](_0x2b7b10);_0x15b8c4[_0xd7c7('0x1f')](0x0);return;}})[_0xd7c7('0x27')](function(){if(_0x175818['output']===_0xd7c7('0x8d')){return null;}var _0x36baae=_[_0xd7c7('0x3f')](_0x175818,{'name':_0x175818['fullPath']||_0x175818[_0xd7c7('0x2b')]||_0x25150c[_0xd7c7('0x2b')],'basename':_0x488f63,'savename':util['format'](_0xd7c7('0x8e'),_0x175818[_0xd7c7('0x2b')]||_0x25150c[_0xd7c7('0x2b')],require(_0xd7c7('0x8f'))[_0xd7c7('0x90')](0x4),_0x175818['output']||_0xd7c7('0x91')),'reportId':_0x25150c['id'],'reportType':'custom'});return db['AnalyticExtractedReport'][_0xd7c7('0x4a')](_0x36baae,{'raw':!![]});})[_0xd7c7('0x27')](function(_0x576d6f){if(_0x25150c['table']===_0xd7c7('0x92')){_0x588d54['where'](_0x25150c[_0xd7c7('0x7f')]+_0xd7c7('0x93'),_0x175818[_0xd7c7('0x94')],_0x175818['endDate']);}else{_0x588d54[_0xd7c7('0x3d')](_0x25150c[_0xd7c7('0x7f')]+_0xd7c7('0x95'),_0x175818[_0xd7c7('0x94')],_0x175818['endDate']);}if(_0x576d6f){logger[_0xd7c7('0x96')](_0xd7c7('0x97'),_0x588d54['toString']());require(_0xd7c7('0x98'))[_0xd7c7('0x99')](path[_0xd7c7('0x55')](__dirname,_0xd7c7('0x9a'),_0x576d6f[_0xd7c7('0x9b')]),[_0x576d6f['id'],_0x588d54['toString'](),path[_0xd7c7('0x55')](__dirname,_0xd7c7('0x9c'),_0x576d6f['savename']),_0x488f63]);return _0x576d6f;}else{var _0x4495b3=squel[_0xd7c7('0x6f')]();_0x4495b3[_0xd7c7('0x70')]('('+_0x588d54['toString']()+')','countTable');_0x4495b3['field']('COUNT(*)',_0xd7c7('0x22'));_0x588d54[_0xd7c7('0x21')](_0x175818['limit']||_0x2b7b10);_0x588d54[_0xd7c7('0x1f')](_0x175818[_0xd7c7('0x1f')]||0x0);return dbH[_0xd7c7('0x84')][_0xd7c7('0x33')](_0x4495b3[_0xd7c7('0x83')](),{'type':dbH[_0xd7c7('0x84')]['QueryTypes']['SELECT']})[_0xd7c7('0x27')](function(_0x3dc0dd){if(!_0x3dc0dd[_0xd7c7('0x38')]){_0x188658=0x0;}else{_0x188658=_0x3dc0dd[0x0]['count']||0x0;}return dbH['sequelize']['query'](_0x588d54[_0xd7c7('0x83')](),{'type':dbH[_0xd7c7('0x84')]['QueryTypes']['SELECT']});})[_0xd7c7('0x27')](function(_0x773ac5){return{'rows':_0x773ac5||[],'count':_0x188658};});}});}exports['run']=function(_0x439e9b,_0x8be268){return runReport(_0x439e9b[_0xd7c7('0x47')],_0x439e9b['query'],_0x439e9b[_0xd7c7('0x9d')])[_0xd7c7('0x27')](respondWithResult(_0x8be268,null))[_0xd7c7('0x46')](handleError(_0x8be268,null));};exports[_0xd7c7('0x9e')]=runReport;exports[_0xd7c7('0x33')]=function(_0x5f12c1,_0x4e76a7){var _0x2b53ee=0xa;var _0x99384c=[_0xd7c7('0x55'),_0xd7c7('0x56'),_0xd7c7('0x57'),_0xd7c7('0x58')];var _0x2f1a38={'SUM':_0xd7c7('0x59'),'COUNT':_0xd7c7('0x5a'),'COUNT DISTINCT':_0xd7c7('0x85'),'MAX':'MAX(%s)','MIN':_0xd7c7('0x5c'),'AVG':_0xd7c7('0x5d'),'GROUP_CONCAT':_0xd7c7('0x86'),'GROUP_CONCAT ASC':_0xd7c7('0x9f'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x488588={'SEC_TO_TIME':_0xd7c7('0x5e'),'DATE':_0xd7c7('0x5f'),'HOUR':_0xd7c7('0x60'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xd7c7('0x62')};var _0x31f305=function(_0xb01f5c){return!_[_0xd7c7('0x63')]([_0xd7c7('0x64'),_0xd7c7('0x65'),_0xd7c7('0x88'),_0xd7c7('0x89')],_0xb01f5c);};var _0x5f4b8d=function(_0x4432a4){if(!_0x4432a4||!_0x4432a4[_0xd7c7('0x66')][_0xd7c7('0x38')]){return'';}for(var _0x1db36e='(',_0x5616e4=0x0;_0x5616e4<_0x4432a4[_0xd7c7('0x66')]['length'];_0x5616e4+=0x1){_0x5616e4>0x0&&(_0x1db36e+='\x20'+_0x4432a4[_0xd7c7('0x67')]+'\x20');_0x1db36e+=_0x4432a4[_0xd7c7('0x66')][_0x5616e4]['group']?_0x5f4b8d(_0x4432a4[_0xd7c7('0x66')][_0x5616e4][_0xd7c7('0x68')]):_0x4432a4[_0xd7c7('0x66')][_0x5616e4][_0xd7c7('0x73')]+'\x20'+_0x4432a4[_0xd7c7('0x66')][_0x5616e4][_0xd7c7('0x69')]+(_0x31f305(_0x4432a4[_0xd7c7('0x66')][_0x5616e4]['condition'])?'\x20'+_0x4432a4[_0xd7c7('0x66')][_0x5616e4]['value']:'');}return _0x1db36e+')';};var _0x849c40={'where':{'id':_0x5f12c1[_0xd7c7('0x47')]['id']}},_0x5bda6d,_0x3ed46f,_0x48de2d,_0x2e7cc2,_0x5ca4a8;_0x849c40=_[_0xd7c7('0x3f')]({},_0x849c40,_0x5f12c1[_0xd7c7('0x9d')]);return db['AnalyticCustomReport'][_0xd7c7('0x50')](_0x849c40)[_0xd7c7('0x27')](function(_0x19c283){if(_0x19c283){_0x5bda6d=_0x19c283;return _0x19c283[_0xd7c7('0x8a')]();}return null;})[_0xd7c7('0x27')](function(_0xbaedc2){if(_0xbaedc2){if(!_0xbaedc2[_0xd7c7('0x38')]){throw new db[(_0xd7c7('0x6a'))][(_0xd7c7('0x6b'))](_0xd7c7('0x6c'),0x193);}_0x3ed46f=_0xbaedc2;return db[_0xd7c7('0x6d')][_0xd7c7('0x44')]({'raw':!![]});}return null;})['then'](function(_0x440a69){if(_0x440a69){_0x48de2d=_['keyBy'](_0x440a69,'id');var _0x1095c3;var _0xc65f54=squel[_0xd7c7('0x6f')]();_0xc65f54[_0xd7c7('0x70')](_0x5bda6d[_0xd7c7('0x7f')]);for(var _0x4db98d=0x0;_0x4db98d<_0x3ed46f[_0xd7c7('0x38')];_0x4db98d+=0x1){_0x1095c3=_0x3ed46f[_0x4db98d][_0xd7c7('0x71')]?_0x48de2d[_0x3ed46f[_0x4db98d]['MetricId']][_0xd7c7('0x72')]:_0x3ed46f[_0x4db98d][_0xd7c7('0x73')];_0x1095c3=_0x3ed46f[_0x4db98d][_0xd7c7('0x74')]?_[_0xd7c7('0x75')](_0x2f1a38[_0x3ed46f[_0x4db98d][_0xd7c7('0x74')]],'%s',_0x1095c3):_0x1095c3;_0x1095c3=_0x3ed46f[_0x4db98d][_0xd7c7('0x76')]?_[_0xd7c7('0x75')](_0x488588[_0x3ed46f[_0x4db98d][_0xd7c7('0x76')]],'%s',_0x1095c3):_0x1095c3;if(_0x3ed46f[_0x4db98d][_0xd7c7('0x77')]){_0xc65f54[_0xd7c7('0x68')](_0x1095c3);}_0x3ed46f[_0x4db98d][_0xd7c7('0x78')]&&_0xc65f54[_0xd7c7('0x3b')](_0x1095c3,_0x3ed46f[_0x4db98d]['orderBy']===_0xd7c7('0x8b')?![]:!![]);_0xc65f54[_0xd7c7('0x73')](_0x1095c3,_0x3ed46f[_0x4db98d][_0xd7c7('0x79')]||_0x1095c3);}if(_0x5bda6d[_0xd7c7('0x7a')]){_0x5bda6d[_0xd7c7('0x7a')]=JSON['parse'](_0x5bda6d['joins']);for(var _0x2cacd6=0x0;_0x2cacd6<_0x5bda6d[_0xd7c7('0x7a')][_0xd7c7('0x38')];_0x2cacd6+=0x1){if(_0x5bda6d[_0xd7c7('0x7a')][_0x2cacd6][_0xd7c7('0x40')]&&_['includes'](_0x99384c,_0x5bda6d[_0xd7c7('0x7a')][_0x2cacd6][_0xd7c7('0x40')])&&_0x5bda6d['joins'][_0x2cacd6][_0xd7c7('0x8c')]&&_0x5bda6d['joins'][_0x2cacd6][_0xd7c7('0x7c')]&&_0x5bda6d['joins'][_0x2cacd6][_0xd7c7('0x7d')]){_0xc65f54[_0x5bda6d['joins'][_0x2cacd6]['type']](_0x5bda6d[_0xd7c7('0x7a')][_0x2cacd6][_0xd7c7('0x7c')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x5bda6d[_0xd7c7('0x7f')],_0x5bda6d[_0xd7c7('0x7a')][_0x2cacd6][_0xd7c7('0x8c')],_0x5bda6d[_0xd7c7('0x7a')][_0x2cacd6][_0xd7c7('0x7c')],_0x5bda6d[_0xd7c7('0x7a')][_0x2cacd6]['foreignKey']));}}}if(_0x5bda6d[_0xd7c7('0x80')]){_0x5bda6d['conditions']=JSON[_0xd7c7('0x7b')](_0x5bda6d[_0xd7c7('0x80')]);_0xc65f54[_0xd7c7('0x3d')](_0x5f4b8d(_0x5bda6d[_0xd7c7('0x80')][_0xd7c7('0x68')]));}_0x5ca4a8=_0xc65f54[_0xd7c7('0x81')]();_0xc65f54['limit'](_0x2b53ee);_0xc65f54[_0xd7c7('0x1f')](0x0);logger[_0xd7c7('0xa0')]('Limited\x20Query:',_0xc65f54[_0xd7c7('0x83')]());return dbH['sequelize']['query'](_0xc65f54['toString'](),{'type':dbH[_0xd7c7('0x84')][_0xd7c7('0xa1')][_0xd7c7('0xa2')]});}})['then'](function(){return{'sql':_0x5ca4a8[_0xd7c7('0x83')]()};})[_0xd7c7('0x27')](respondWithResult(_0x4e76a7,null))[_0xd7c7('0x46')](handleError(_0x4e76a7,null));};
\ No newline at end of file
index 56e5242..70b169c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7002=['analytics_custom_reports','lodash','util','api','bluebird','request-promise','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport'];(function(_0x5e66b8,_0x2ef22c){var _0x1dbd86=function(_0x4ba030){while(--_0x4ba030){_0x5e66b8['push'](_0x5e66b8['shift']());}};_0x1dbd86(++_0x2ef22c);}(_0x7002,0x12d));var _0x2700=function(_0x2a18b7,_0x5041c8){_0x2a18b7=_0x2a18b7-0x0;var _0x45e74e=_0x7002[_0x2a18b7];return _0x45e74e;};'use strict';var _=require(_0x2700('0x0'));var util=require(_0x2700('0x1'));var logger=require('../../config/logger')(_0x2700('0x2'));var moment=require('moment');var BPromise=require(_0x2700('0x3'));var rp=require(_0x2700('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2700('0x5'));var config=require(_0x2700('0x6'));var attributes=require(_0x2700('0x7'));module[_0x2700('0x8')]=function(_0x5a7ee1,_0x16fdd7){return _0x5a7ee1[_0x2700('0x9')](_0x2700('0xa'),attributes,{'tableName':_0x2700('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c78=['./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x4e90e3,_0x570a1d){var _0x295e5b=function(_0x754043){while(--_0x754043){_0x4e90e3['push'](_0x4e90e3['shift']());}};_0x295e5b(++_0x570a1d);}(_0x3c78,0x155));var _0x83c7=function(_0x5ab6a5,_0x4977b1){_0x5ab6a5=_0x5ab6a5-0x0;var _0x3cb85c=_0x3c78[_0x5ab6a5];return _0x3cb85c;};'use strict';var _=require(_0x83c7('0x0'));var util=require(_0x83c7('0x1'));var logger=require(_0x83c7('0x2'))(_0x83c7('0x3'));var moment=require(_0x83c7('0x4'));var BPromise=require(_0x83c7('0x5'));var rp=require(_0x83c7('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x83c7('0x7'));var config=require(_0x83c7('0x8'));var attributes=require(_0x83c7('0x9'));module[_0x83c7('0xa')]=function(_0x2d99e0,_0x2ae31d){return _0x2d99e0[_0x83c7('0xb')](_0x83c7('0xc'),attributes,{'tableName':_0x83c7('0xd'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cbc895b..e45b372 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a30=['AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','AnalyticCustomReport,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent'];(function(_0x1ac120,_0x3e7e45){var _0x19b703=function(_0x5f32cb){while(--_0x5f32cb){_0x1ac120['push'](_0x1ac120['shift']());}};_0x19b703(++_0x3e7e45);}(_0x7a30,0x142));var _0x07a3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7a30[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x07a3('0x0'));var moment=require(_0x07a3('0x1'));var BPromise=require(_0x07a3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x07a3('0x3'))['db'];var utils=require(_0x07a3('0x4'));var logger=require(_0x07a3('0x5'))(_0x07a3('0x6'));var config=require(_0x07a3('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x07a3('0x8')][_0x07a3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x206be1,_0x25eead,_0x4e376c){return new BPromise(function(_0x43829f,_0x43b2d5){return client[_0x07a3('0xa')](_0x206be1,_0x4e376c)[_0x07a3('0xb')](function(_0x2495c7){logger[_0x07a3('0xc')]('AnalyticCustomReport,\x20%s,\x20%s',_0x25eead,_0x07a3('0xd'));logger['debug'](_0x07a3('0xe'),_0x25eead,_0x07a3('0xd'),JSON[_0x07a3('0xf')](_0x2495c7));if(_0x2495c7[_0x07a3('0x10')]){if(_0x2495c7['error']['code']===0x1f4){logger[_0x07a3('0x10')](_0x07a3('0x11'),_0x25eead,_0x2495c7[_0x07a3('0x10')]['message']);return _0x43b2d5(_0x2495c7[_0x07a3('0x10')][_0x07a3('0x12')]);}logger[_0x07a3('0x10')](_0x07a3('0x11'),_0x25eead,_0x2495c7[_0x07a3('0x10')][_0x07a3('0x12')]);return _0x43829f(_0x2495c7[_0x07a3('0x10')][_0x07a3('0x12')]);}else{logger[_0x07a3('0xc')]('AnalyticCustomReport,\x20%s,\x20%s',_0x25eead,_0x07a3('0xd'));_0x43829f(_0x2495c7[_0x07a3('0x13')][_0x07a3('0x12')]);}})[_0x07a3('0x14')](function(_0x3b2f99){logger['error'](_0x07a3('0x11'),_0x25eead,_0x3b2f99);_0x43b2d5(_0x3b2f99);});});}
\ No newline at end of file
+var _0xae75=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','then','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x4c3ffe,_0x457374){var _0x28d3eb=function(_0x3ae2a3){while(--_0x3ae2a3){_0x4c3ffe['push'](_0x4c3ffe['shift']());}};_0x28d3eb(++_0x457374);}(_0xae75,0x188));var _0x5ae7=function(_0x5d2eed,_0x60831a){_0x5d2eed=_0x5d2eed-0x0;var _0x308aed=_0xae75[_0x5d2eed];return _0x308aed;};'use strict';var _=require(_0x5ae7('0x0'));var util=require(_0x5ae7('0x1'));var moment=require(_0x5ae7('0x2'));var BPromise=require(_0x5ae7('0x3'));var rs=require(_0x5ae7('0x4'));var fs=require('fs');var Redis=require(_0x5ae7('0x5'));var db=require(_0x5ae7('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x5ae7('0x7'));var jayson=require(_0x5ae7('0x8'));var client=jayson[_0x5ae7('0x9')][_0x5ae7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x382877,_0x15a104,_0x37badd){return new BPromise(function(_0x1e543b,_0xfb9fa0){return client['request'](_0x382877,_0x37badd)[_0x5ae7('0xb')](function(_0x1b70a0){logger['info'](_0x5ae7('0xc'),_0x15a104,_0x5ae7('0xd'));logger[_0x5ae7('0xe')](_0x5ae7('0xf'),_0x15a104,_0x5ae7('0xd'),JSON[_0x5ae7('0x10')](_0x1b70a0));if(_0x1b70a0[_0x5ae7('0x11')]){if(_0x1b70a0[_0x5ae7('0x11')][_0x5ae7('0x12')]===0x1f4){logger[_0x5ae7('0x11')](_0x5ae7('0xc'),_0x15a104,_0x1b70a0['error'][_0x5ae7('0x13')]);return _0xfb9fa0(_0x1b70a0[_0x5ae7('0x11')]['message']);}logger[_0x5ae7('0x11')](_0x5ae7('0xc'),_0x15a104,_0x1b70a0[_0x5ae7('0x11')]['message']);return _0x1e543b(_0x1b70a0[_0x5ae7('0x11')]['message']);}else{logger[_0x5ae7('0x14')](_0x5ae7('0xc'),_0x15a104,_0x5ae7('0xd'));_0x1e543b(_0x1b70a0[_0x5ae7('0x15')][_0x5ae7('0x13')]);}})[_0x5ae7('0x16')](function(_0x326449){logger[_0x5ae7('0x11')](_0x5ae7('0xc'),_0x15a104,_0x326449);_0xfb9fa0(_0x326449);});});}
\ No newline at end of file
index 6c72536..51a79c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1369=['/:id/run','/:id/query','query','create','put','/:id','update','delete','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticCustomReport.controller','get','show','/:id/preview','isAuthenticated','preview'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1369,0xb9));var _0x9136=function(_0x2a59cf,_0x5cf844){_0x2a59cf=_0x2a59cf-0x0;var _0x321661=_0x1369[_0x2a59cf];return _0x321661;};'use strict';var multer=require(_0x9136('0x0'));var util=require('util');var path=require(_0x9136('0x1'));var timeout=require(_0x9136('0x2'));var express=require(_0x9136('0x3'));var router=express['Router']();var fs_extra=require(_0x9136('0x4'));var auth=require(_0x9136('0x5'));var interaction=require(_0x9136('0x6'));var config=require('../../config/environment');var controller=require(_0x9136('0x7'));router[_0x9136('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9136('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x9136('0x9')]);router[_0x9136('0x8')](_0x9136('0xa'),auth[_0x9136('0xb')](),controller[_0x9136('0xc')]);router[_0x9136('0x8')](_0x9136('0xd'),auth[_0x9136('0xb')](),controller['run']);router[_0x9136('0x8')](_0x9136('0xe'),auth['isAuthenticated'](),controller[_0x9136('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9136('0x10')]);router[_0x9136('0x11')](_0x9136('0x12'),auth[_0x9136('0xb')](),controller[_0x9136('0x13')]);router[_0x9136('0x14')](_0x9136('0x12'),auth[_0x9136('0xb')](),controller[_0x9136('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xbac9=['/:id/preview','preview','/:id/run','run','/:id/query','query','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','get','isAuthenticated','index','/:id'];(function(_0x541b42,_0x3e5490){var _0x44a26d=function(_0x1ceedf){while(--_0x1ceedf){_0x541b42['push'](_0x541b42['shift']());}};_0x44a26d(++_0x3e5490);}(_0xbac9,0x9d));var _0x9bac=function(_0x453536,_0x46622b){_0x453536=_0x453536-0x0;var _0x252fb0=_0xbac9[_0x453536];return _0x252fb0;};'use strict';var multer=require(_0x9bac('0x0'));var util=require(_0x9bac('0x1'));var path=require(_0x9bac('0x2'));var timeout=require(_0x9bac('0x3'));var express=require(_0x9bac('0x4'));var router=express['Router']();var fs_extra=require(_0x9bac('0x5'));var auth=require(_0x9bac('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./analyticCustomReport.controller');router[_0x9bac('0x7')]('/',auth[_0x9bac('0x8')](),controller[_0x9bac('0x9')]);router[_0x9bac('0x7')](_0x9bac('0xa'),auth[_0x9bac('0x8')](),controller['show']);router[_0x9bac('0x7')](_0x9bac('0xb'),auth[_0x9bac('0x8')](),controller[_0x9bac('0xc')]);router[_0x9bac('0x7')](_0x9bac('0xd'),auth['isAuthenticated'](),controller[_0x9bac('0xe')]);router[_0x9bac('0x7')](_0x9bac('0xf'),auth['isAuthenticated'](),controller[_0x9bac('0x10')]);router[_0x9bac('0x11')]('/',auth['isAuthenticated'](),controller[_0x9bac('0x12')]);router[_0x9bac('0x13')](_0x9bac('0xa'),auth['isAuthenticated'](),controller[_0x9bac('0x14')]);router[_0x9bac('0x15')](_0x9bac('0xa'),auth[_0x9bac('0x8')](),controller[_0x9bac('0x16')]);module[_0x9bac('0x17')]=router;
\ No newline at end of file
index 782cf43..6b425e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd51=['sequelize','STRING'];(function(_0x2a3653,_0x2b5804){var _0x2d9e61=function(_0x40ef96){while(--_0x40ef96){_0x2a3653['push'](_0x2a3653['shift']());}};_0x2d9e61(++_0x2b5804);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x4a1828,_0x888d6){_0x4a1828=_0x4a1828-0x0;var _0x59aa93=_0xbd51[_0x4a1828];return _0x59aa93;};'use strict';var Sequelize=require(_0x1bd5('0x0'));module['exports']={'name':{'type':Sequelize[_0x1bd5('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x1bd5('0x1')]},'parent':{'type':Sequelize[_0x1bd5('0x1')]},'table':{'type':Sequelize[_0x1bd5('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xae24=['sequelize','STRING'];(function(_0x44c315,_0x29356f){var _0x3d10e9=function(_0x110cbc){while(--_0x110cbc){_0x44c315['push'](_0x44c315['shift']());}};_0x3d10e9(++_0x29356f);}(_0xae24,0x182));var _0x4ae2=function(_0x5869c7,_0xf2c070){_0x5869c7=_0x5869c7-0x0;var _0x1ea045=_0xae24[_0x5869c7];return _0x1ea045;};'use strict';var Sequelize=require(_0x4ae2('0x0'));module['exports']={'name':{'type':Sequelize[_0x4ae2('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x4ae2('0x1')]},'table':{'type':Sequelize[_0x4ae2('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 4485184..42d7178 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','dbH','sendStatus','status','offset','limit','undefined','set','json','apply','reject','save','then','destroy','get','DefaultReports','UserProfileResource','error','name','index','AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','count','include','findAll','rows','show','length','includeAll','options','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','params','preview','join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignTable','foreignKey','conditions','parse','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','left_join','AVG(%s)','DATE(%s)','value','keyBy','select','order','%s.%s\x20=\x20%s.%s','clone','web','fullPath','randomstring','generate','output','csv','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','Run\x20Query:','../../components/export/','savename','COUNT(*)','run','runReport','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL','Sequelize','debug'];(function(_0x3e172a,_0x3f7f3a){var _0x5ef081=function(_0x234853){while(--_0x234853){_0x3e172a['push'](_0x3e172a['shift']());}};_0x5ef081(++_0x3f7f3a);}(_0x1261,0x144));var _0x1126=function(_0x5c619e,_0x1bccdf){_0x5c619e=_0x5c619e-0x0;var _0x445cf8=_0x1261[_0x5c619e];return _0x445cf8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1126('0x0'));var zipdir=require(_0x1126('0x1'));var jsonpatch=require(_0x1126('0x2'));var rp=require(_0x1126('0x3'));var moment=require(_0x1126('0x4'));var BPromise=require(_0x1126('0x5'));var Mustache=require(_0x1126('0x6'));var util=require(_0x1126('0x7'));var path=require(_0x1126('0x8'));var sox=require(_0x1126('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1126('0xa'));var _=require(_0x1126('0xb'));var squel=require('squel');var crypto=require(_0x1126('0xc'));var jsforce=require(_0x1126('0xd'));var deskjs=require(_0x1126('0xe'));var toCsv=require(_0x1126('0xf'));var querystring=require(_0x1126('0x10'));var Papa=require('papaparse');var Redis=require(_0x1126('0x11'));var authService=require(_0x1126('0x12'));var qs=require(_0x1126('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1126('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x1126('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1126('0x16'));var db=require(_0x1126('0x17'))['db'];var dbH=require(_0x1126('0x17'))[_0x1126('0x18')];function respondWithStatusCode(_0xca0355,_0x3f10e9){_0x3f10e9=_0x3f10e9||0xcc;return function(_0xd8ca42){if(_0xd8ca42){return _0xca0355[_0x1126('0x19')](_0x3f10e9);}return _0xca0355[_0x1126('0x1a')](_0x3f10e9)['end']();};}function respondWithResult(_0x5de9a7,_0x1af673){_0x1af673=_0x1af673||0xc8;return function(_0x154e20){if(_0x154e20){return _0x5de9a7[_0x1126('0x1a')](_0x1af673)['json'](_0x154e20);}};}function respondWithFilteredResult(_0x45149c,_0x4794a7){return function(_0x35fe9f){if(_0x35fe9f){var _0x42f379=typeof _0x4794a7[_0x1126('0x1b')]==='undefined'&&typeof _0x4794a7[_0x1126('0x1c')]===_0x1126('0x1d');var _0x4a7b49=_0x35fe9f['count'];var _0x22ae0b=_0x42f379?0x0:_0x4794a7[_0x1126('0x1b')];var _0x58d11a=_0x42f379?_0x35fe9f['count']:_0x4794a7[_0x1126('0x1b')]+_0x4794a7['limit'];var _0x22ed37;if(_0x58d11a>=_0x4a7b49){_0x58d11a=_0x4a7b49;_0x22ed37=0xc8;}else{_0x22ed37=0xce;}_0x45149c[_0x1126('0x1a')](_0x22ed37);return _0x45149c[_0x1126('0x1e')]('Content-Range',_0x22ae0b+'-'+_0x58d11a+'/'+_0x4a7b49)[_0x1126('0x1f')](_0x35fe9f);}return null;};}function patchUpdates(_0x49d209){return function(_0x56efeb){try{jsonpatch[_0x1126('0x20')](_0x56efeb,_0x49d209,!![]);}catch(_0x3a9bed){return BPromise[_0x1126('0x21')](_0x3a9bed);}return _0x56efeb[_0x1126('0x22')]();};}function saveUpdates(_0x526ca1,_0x29ab60){return function(_0x477e6a){if(_0x477e6a){return _0x477e6a['update'](_0x526ca1)[_0x1126('0x23')](function(_0x59cd8e){return _0x59cd8e;});}return null;};}function removeEntity(_0x529dd9,_0x4b57ab){return function(_0x2199d9){if(_0x2199d9){return _0x2199d9[_0x1126('0x24')]()[_0x1126('0x23')](function(){var _0x34bcf1=_0x2199d9[_0x1126('0x25')]({'plain':!![]});var _0x1b07a7=_0x1126('0x26');return db[_0x1126('0x27')]['destroy']({'where':{'type':_0x1b07a7,'resourceId':_0x34bcf1['id']}})[_0x1126('0x23')](function(){return _0x2199d9;});})[_0x1126('0x23')](function(){_0x529dd9[_0x1126('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x541bc9,_0xeb7d89){return function(_0x39bf0e){if(!_0x39bf0e){_0x541bc9['sendStatus'](0x194);}return _0x39bf0e;};}function handleError(_0x2fb797,_0x23d2bc){_0x23d2bc=_0x23d2bc||0x1f4;return function(_0x4a334a){logger[_0x1126('0x28')](_0x4a334a['stack']);if(_0x4a334a[_0x1126('0x29')]){delete _0x4a334a['name'];}_0x2fb797[_0x1126('0x1a')](_0x23d2bc)['send'](_0x4a334a);};}exports[_0x1126('0x2a')]=function(_0x5f2611,_0x5252e0){var _0x4a53ab={},_0x17646e={},_0xa8906d={'count':0x0,'rows':[]};var _0x1cef48=_['map'](db[_0x1126('0x2b')][_0x1126('0x2c')],function(_0x56f7f8){return{'name':_0x56f7f8[_0x1126('0x2d')],'type':_0x56f7f8[_0x1126('0x2e')][_0x1126('0x2f')]};});_0x17646e[_0x1126('0x30')]=_['map'](_0x1cef48,'name');_0x17646e[_0x1126('0x31')]=_[_0x1126('0x32')](_0x5f2611[_0x1126('0x31')]);_0x17646e[_0x1126('0x33')]=_['intersection'](_0x17646e[_0x1126('0x30')],_0x17646e[_0x1126('0x31')]);_0x4a53ab[_0x1126('0x34')]=_[_0x1126('0x35')](_0x17646e[_0x1126('0x30')],qs['fields'](_0x5f2611[_0x1126('0x31')][_0x1126('0x36')]));_0x4a53ab[_0x1126('0x34')]=_0x4a53ab[_0x1126('0x34')]['length']?_0x4a53ab['attributes']:_0x17646e[_0x1126('0x30')];if(!_0x5f2611[_0x1126('0x31')]['hasOwnProperty'](_0x1126('0x37'))){_0x4a53ab[_0x1126('0x1c')]=qs[_0x1126('0x1c')](_0x5f2611['query']['limit']);_0x4a53ab[_0x1126('0x1b')]=qs[_0x1126('0x1b')](_0x5f2611[_0x1126('0x31')][_0x1126('0x1b')]);}_0x4a53ab['order']=qs[_0x1126('0x38')](_0x5f2611['query'][_0x1126('0x38')]);_0x4a53ab[_0x1126('0x39')]=qs[_0x1126('0x33')](_[_0x1126('0x3a')](_0x5f2611[_0x1126('0x31')],_0x17646e['filters']),_0x1cef48);if(_0x5f2611[_0x1126('0x31')][_0x1126('0x3b')]){_0x4a53ab[_0x1126('0x39')]=_[_0x1126('0x3c')](_0x4a53ab[_0x1126('0x39')],{'$or':_[_0x1126('0x3d')](_0x1cef48,function(_0x3052f9){if(_0x3052f9['type']!==_0x1126('0x3e')){var _0x154c28={};_0x154c28[_0x3052f9[_0x1126('0x29')]]={'$like':'%'+_0x5f2611[_0x1126('0x31')][_0x1126('0x3b')]+'%'};return _0x154c28;}})});}_0x4a53ab=_['merge']({},_0x4a53ab,_0x5f2611['options']);var _0x1c4f06={'where':_0x4a53ab[_0x1126('0x39')]};return db[_0x1126('0x2b')][_0x1126('0x3f')](_0x1c4f06)[_0x1126('0x23')](function(_0x276fd5){_0xa8906d['count']=_0x276fd5;if(_0x5f2611['query']['includeAll']){_0x4a53ab[_0x1126('0x40')]=[{'all':!![]}];}return db['AnalyticDefaultReport'][_0x1126('0x41')](_0x4a53ab);})[_0x1126('0x23')](function(_0x3584a3){_0xa8906d[_0x1126('0x42')]=_0x3584a3;return _0xa8906d;})['then'](respondWithFilteredResult(_0x5252e0,_0x4a53ab))['catch'](handleError(_0x5252e0,null));};exports[_0x1126('0x43')]=function(_0xa93167,_0x1d63b9){var _0x5f5d3a={'raw':!![],'where':{'id':_0xa93167['params']['id']}},_0x2f8551={};_0x2f8551[_0x1126('0x30')]=_['keys'](db[_0x1126('0x2b')][_0x1126('0x2c')]);_0x2f8551[_0x1126('0x31')]=_['keys'](_0xa93167[_0x1126('0x31')]);_0x2f8551[_0x1126('0x33')]=_[_0x1126('0x35')](_0x2f8551['model'],_0x2f8551['query']);_0x5f5d3a['attributes']=_[_0x1126('0x35')](_0x2f8551['model'],qs[_0x1126('0x36')](_0xa93167['query'][_0x1126('0x36')]));_0x5f5d3a[_0x1126('0x34')]=_0x5f5d3a[_0x1126('0x34')][_0x1126('0x44')]?_0x5f5d3a[_0x1126('0x34')]:_0x2f8551['model'];if(_0xa93167[_0x1126('0x31')][_0x1126('0x45')]){_0x5f5d3a['include']=[{'all':!![]}];}_0x5f5d3a=_[_0x1126('0x3c')]({},_0x5f5d3a,_0xa93167[_0x1126('0x46')]);return db['AnalyticDefaultReport'][_0x1126('0x47')](_0x5f5d3a)[_0x1126('0x23')](handleEntityNotFound(_0x1d63b9,null))['then'](respondWithResult(_0x1d63b9,null))[_0x1126('0x48')](handleError(_0x1d63b9,null));};exports[_0x1126('0x49')]=function(_0x213a76,_0x59656d){return db[_0x1126('0x2b')][_0x1126('0x49')](_0x213a76[_0x1126('0x4a')],{})[_0x1126('0x23')](function(_0x224456){var _0x2081f2=_0x213a76[_0x1126('0x4b')][_0x1126('0x25')]({'plain':!![]});if(!_0x2081f2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2081f2[_0x1126('0x4c')]==='user'){var _0x40168e=_0x224456[_0x1126('0x25')]({'plain':!![]});var _0x4a1831='Reports';return db[_0x1126('0x4d')][_0x1126('0x47')]({'where':{'name':_0x4a1831,'userProfileId':_0x2081f2[_0x1126('0x4e')]},'raw':!![]})['then'](function(_0x3cb44c){if(_0x3cb44c&&_0x3cb44c[_0x1126('0x4f')]===0x0){return db[_0x1126('0x27')][_0x1126('0x49')]({'name':_0x40168e['name'],'resourceId':_0x40168e['id'],'type':_0x1126('0x26'),'sectionId':_0x3cb44c['id']},{})[_0x1126('0x23')](function(){return _0x224456;});}else{return _0x224456;}})['catch'](function(_0x4bcc08){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4bcc08);throw _0x4bcc08;});}return _0x224456;})[_0x1126('0x23')](respondWithResult(_0x59656d,0xc9))[_0x1126('0x48')](handleError(_0x59656d,null));};exports['update']=function(_0x16552b,_0x1c7a2b){if(_0x16552b[_0x1126('0x4a')]['id']){delete _0x16552b[_0x1126('0x4a')]['id'];}return db[_0x1126('0x2b')]['find']({'where':{'id':_0x16552b[_0x1126('0x50')]['id']}})[_0x1126('0x23')](handleEntityNotFound(_0x1c7a2b,null))['then'](saveUpdates(_0x16552b[_0x1126('0x4a')],null))[_0x1126('0x23')](respondWithResult(_0x1c7a2b,null))[_0x1126('0x48')](handleError(_0x1c7a2b,null));};exports[_0x1126('0x24')]=function(_0xc8a0f,_0x59c3d0){return db[_0x1126('0x2b')]['find']({'where':{'id':_0xc8a0f[_0x1126('0x50')]['id']}})[_0x1126('0x23')](handleEntityNotFound(_0x59c3d0,null))[_0x1126('0x23')](removeEntity(_0x59c3d0,null))['catch'](handleError(_0x59c3d0,null));};exports[_0x1126('0x51')]=function(_0x2340f8,_0x5763b4){var _0x30812d=0xa;var _0x25038f=[_0x1126('0x52'),'left_join',_0x1126('0x53'),_0x1126('0x54')];var _0x22ab18={'SUM':_0x1126('0x55'),'COUNT':_0x1126('0x56'),'COUNT DISTINCT':_0x1126('0x57'),'MAX':_0x1126('0x58'),'MIN':_0x1126('0x59'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x1126('0x5a'),'GROUP_CONCAT ASC':_0x1126('0x5b'),'GROUP_CONCAT DESC':_0x1126('0x5c')};var _0x2a5422={'SEC_TO_TIME':_0x1126('0x5d'),'DATE':'DATE(%s)','HOUR':_0x1126('0x5e'),'ROUND':_0x1126('0x5f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x3767e4=function(_0x5246aa){return!_[_0x1126('0x60')]([_0x1126('0x61'),'IS\x20NOT\x20NULL',_0x1126('0x62'),_0x1126('0x63')],_0x5246aa);};var _0x375b76=function(_0x592960){if(!_0x592960||!_0x592960[_0x1126('0x64')]['length']){return'';}for(var _0x558b6e='(',_0xbdc58=0x0;_0xbdc58<_0x592960[_0x1126('0x64')][_0x1126('0x44')];_0xbdc58+=0x1){_0xbdc58>0x0&&(_0x558b6e+='\x20'+_0x592960[_0x1126('0x65')]+'\x20');_0x558b6e+=_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x66')]?_0x375b76(_0x592960[_0x1126('0x64')][_0xbdc58]['group']):_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x67')]+'\x20'+_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x68')]+(_0x3767e4(_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x68')])?'\x20'+_0x592960['rules'][_0xbdc58]['value']:'');}return _0x558b6e+')';};var _0x16a343={'where':{'id':_0x2340f8[_0x1126('0x50')]['id']}},_0x3921c2,_0x4bf2b3,_0x5ee130,_0x5e9260,_0x51a28d;_0x16a343=_[_0x1126('0x3c')]({},_0x16a343,_0x2340f8[_0x1126('0x46')]);return db['AnalyticDefaultReport'][_0x1126('0x47')](_0x16a343)[_0x1126('0x23')](function(_0x170bf0){if(_0x170bf0){_0x3921c2=_0x170bf0;return _0x170bf0[_0x1126('0x69')]();}return null;})[_0x1126('0x23')](function(_0x3f007b){if(_0x3f007b){if(!_0x3f007b[_0x1126('0x44')]){throw new db['Sequelize'][(_0x1126('0x6a'))](_0x1126('0x6b'),0x193);}_0x4bf2b3=_0x3f007b;return db[_0x1126('0x6c')][_0x1126('0x41')]({'raw':!![]});}return null;})[_0x1126('0x23')](function(_0x56c003){if(_0x56c003){_0x5ee130=_['keyBy'](_0x56c003,'id');var _0x15cf3d;var _0x2643d7=squel['select']();_0x2643d7[_0x1126('0x6d')](_0x3921c2[_0x1126('0x6e')]);for(var _0x366675=0x0;_0x366675<_0x4bf2b3[_0x1126('0x44')];_0x366675+=0x1){_0x15cf3d=_0x4bf2b3[_0x366675][_0x1126('0x6f')]?_0x5ee130[_0x4bf2b3[_0x366675][_0x1126('0x6f')]][_0x1126('0x70')]:_0x4bf2b3[_0x366675][_0x1126('0x67')];_0x15cf3d=_0x4bf2b3[_0x366675][_0x1126('0x71')]?_[_0x1126('0x72')](_0x22ab18[_0x4bf2b3[_0x366675][_0x1126('0x71')]],'%s',_0x15cf3d):_0x15cf3d;_0x15cf3d=_0x4bf2b3[_0x366675][_0x1126('0x73')]?_[_0x1126('0x72')](_0x2a5422[_0x4bf2b3[_0x366675]['format']],'%s',_0x15cf3d):_0x15cf3d;if(_0x4bf2b3[_0x366675][_0x1126('0x74')]){_0x2643d7[_0x1126('0x66')](_0x15cf3d);}_0x4bf2b3[_0x366675][_0x1126('0x75')]&&_0x2643d7['order'](_0x15cf3d,_0x4bf2b3[_0x366675]['orderBy']===_0x1126('0x76')?![]:!![]);_0x2643d7[_0x1126('0x67')](_0x15cf3d,_0x4bf2b3[_0x366675][_0x1126('0x77')]||_0x15cf3d);}if(_0x3921c2[_0x1126('0x78')]){_0x3921c2['joins']=JSON['parse'](_0x3921c2['joins']);for(var _0x79afca=0x0;_0x79afca<_0x3921c2[_0x1126('0x78')][_0x1126('0x44')];_0x79afca+=0x1){if(_0x3921c2[_0x1126('0x78')][_0x79afca]['type']&&_[_0x1126('0x60')](_0x25038f,_0x3921c2['joins'][_0x79afca][_0x1126('0x2e')])&&_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x79')]&&_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x7a')]&&_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x7b')]){_0x2643d7[_0x3921c2['joins'][_0x79afca][_0x1126('0x2e')]](_0x3921c2['joins'][_0x79afca][_0x1126('0x7a')],null,util[_0x1126('0x73')]('%s.%s\x20=\x20%s.%s',_0x3921c2[_0x1126('0x6e')],_0x3921c2[_0x1126('0x78')][_0x79afca]['parentKey'],_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x7a')],_0x3921c2['joins'][_0x79afca]['foreignKey']));}}}if(_0x3921c2[_0x1126('0x7c')]){_0x3921c2[_0x1126('0x7c')]=JSON[_0x1126('0x7d')](_0x3921c2['conditions']);_0x2643d7['where'](_0x375b76(_0x3921c2['conditions'][_0x1126('0x66')]));}_0x51a28d=_0x2643d7['clone']();_0x2643d7['limit'](_0x30812d);_0x2643d7[_0x1126('0x1b')](0x0);logger['debug'](_0x1126('0x7e'),_0x2643d7[_0x1126('0x7f')]());return dbH['sequelize'][_0x1126('0x31')](_0x2643d7[_0x1126('0x7f')](),{'type':dbH[_0x1126('0x80')][_0x1126('0x81')][_0x1126('0x82')]});}})['then'](respondWithResult(_0x5763b4,null))[_0x1126('0x48')](handleError(_0x5763b4,null));};function runReport(_0x426faa,_0x5679ec,_0xd182b1){var _0x2d6fcf=_0x5679ec[_0x1126('0x29')];var _0x2af2d0=0xa;var _0x2598a7=[_0x1126('0x52'),_0x1126('0x83'),_0x1126('0x53'),_0x1126('0x54')];var _0x9a2af0={'SUM':_0x1126('0x55'),'COUNT':_0x1126('0x56'),'COUNT DISTINCT':_0x1126('0x57'),'MAX':_0x1126('0x58'),'MIN':_0x1126('0x59'),'AVG':_0x1126('0x84'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x1126('0x5b'),'GROUP_CONCAT DESC':_0x1126('0x5c')};var _0x33cccf={'SEC_TO_TIME':_0x1126('0x5d'),'DATE':_0x1126('0x85'),'HOUR':'HOUR(%s)','ROUND':_0x1126('0x5f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5bdb30=function(_0xb1199b){return!_[_0x1126('0x60')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x1126('0x62'),_0x1126('0x63')],_0xb1199b);};var _0x228552=function(_0x1ee970){if(!_0x1ee970||!_0x1ee970[_0x1126('0x64')][_0x1126('0x44')]){return'';}for(var _0x2d7150='(',_0x35a9a4=0x0;_0x35a9a4<_0x1ee970[_0x1126('0x64')]['length'];_0x35a9a4+=0x1){_0x35a9a4>0x0&&(_0x2d7150+='\x20'+_0x1ee970[_0x1126('0x65')]+'\x20');_0x2d7150+=_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x66')]?_0x228552(_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x66')]):_0x1ee970[_0x1126('0x64')][_0x35a9a4]['field']+'\x20'+_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x68')]+(_0x5bdb30(_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x68')])?'\x20'+_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x86')]:'');}return _0x2d7150+')';};var _0x2418ca={'where':{'id':_0x426faa['id']}},_0x2d2dfc,_0x38eac6,_0xc3503b,_0x5d6edb,_0x50238d;_0x2418ca=_[_0x1126('0x3c')]({},_0x2418ca,_0xd182b1);return db['AnalyticDefaultReport'][_0x1126('0x47')](_0x2418ca)['then'](function(_0x4461ae){if(_0x4461ae){_0x2d2dfc=_0x4461ae;return _0x4461ae['getFields']();}return null;})[_0x1126('0x23')](function(_0x4fbd44){if(_0x4fbd44){if(!_0x4fbd44['length']){throw new db['Sequelize'][(_0x1126('0x6a'))](_0x1126('0x6b'),0x193);}_0x38eac6=_0x4fbd44;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x1126('0x23')](function(_0xe2f82d){if(_0xe2f82d){_0xc3503b=_[_0x1126('0x87')](_0xe2f82d,'id');var _0x5dfb8f;var _0x48f914=squel[_0x1126('0x88')]();_0x48f914['from'](_0x2d2dfc[_0x1126('0x6e')]);for(var _0x39d9a0=0x0;_0x39d9a0<_0x38eac6[_0x1126('0x44')];_0x39d9a0+=0x1){_0x5dfb8f=_0x38eac6[_0x39d9a0][_0x1126('0x6f')]?_0xc3503b[_0x38eac6[_0x39d9a0][_0x1126('0x6f')]]['metric']:_0x38eac6[_0x39d9a0]['field'];_0x5dfb8f=_0x38eac6[_0x39d9a0][_0x1126('0x71')]?_[_0x1126('0x72')](_0x9a2af0[_0x38eac6[_0x39d9a0][_0x1126('0x71')]],'%s',_0x5dfb8f):_0x5dfb8f;_0x5dfb8f=_0x38eac6[_0x39d9a0][_0x1126('0x73')]?_[_0x1126('0x72')](_0x33cccf[_0x38eac6[_0x39d9a0][_0x1126('0x73')]],'%s',_0x5dfb8f):_0x5dfb8f;if(_0x38eac6[_0x39d9a0][_0x1126('0x74')]){_0x48f914[_0x1126('0x66')](_0x5dfb8f);}_0x38eac6[_0x39d9a0][_0x1126('0x75')]&&_0x48f914[_0x1126('0x89')](_0x5dfb8f,_0x38eac6[_0x39d9a0][_0x1126('0x75')]==='DESC'?![]:!![]);_0x48f914[_0x1126('0x67')](_0x5dfb8f,_0x38eac6[_0x39d9a0]['alias']||_0x5dfb8f);}if(_0x2d2dfc[_0x1126('0x78')]){_0x2d2dfc['joins']=JSON[_0x1126('0x7d')](_0x2d2dfc[_0x1126('0x78')]);for(var _0x215d4d=0x0;_0x215d4d<_0x2d2dfc[_0x1126('0x78')]['length'];_0x215d4d+=0x1){if(_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x2e')]&&_['includes'](_0x2598a7,_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x2e')])&&_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x79')]&&_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x7a')]&&_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x7b')]){_0x48f914[_0x2d2dfc[_0x1126('0x78')][_0x215d4d]['type']](_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x7a')],null,util[_0x1126('0x73')](_0x1126('0x8a'),_0x2d2dfc[_0x1126('0x6e')],_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x79')],_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x7a')],_0x2d2dfc['joins'][_0x215d4d]['foreignKey']));}}}if(_0x2d2dfc['conditions']){_0x2d2dfc[_0x1126('0x7c')]=JSON[_0x1126('0x7d')](_0x2d2dfc[_0x1126('0x7c')]);_0x48f914[_0x1126('0x39')](_0x228552(_0x2d2dfc['conditions'][_0x1126('0x66')]));}_0x50238d=_0x48f914[_0x1126('0x8b')]();_0x48f914[_0x1126('0x1c')](_0x2af2d0);_0x48f914[_0x1126('0x1b')](0x0);return;}})[_0x1126('0x23')](function(){if(_0x5679ec['output']===_0x1126('0x8c')){return null;}var _0x21c487=_['merge'](_0x5679ec,{'name':_0x5679ec[_0x1126('0x8d')]||_0x5679ec['name']||_0x2d2dfc['name'],'basename':_0x2d6fcf,'savename':util[_0x1126('0x73')]('%s-%s.%s',_0x5679ec[_0x1126('0x29')]||_0x2d2dfc[_0x1126('0x29')],require(_0x1126('0x8e'))[_0x1126('0x8f')](0x4),_0x5679ec[_0x1126('0x90')]||_0x1126('0x91')),'reportId':_0x2d2dfc['id'],'reportType':_0x1126('0x92')});return db[_0x1126('0x93')][_0x1126('0x49')](_0x21c487,{'raw':!![]});})['then'](function(_0x2577f5){if(_0x2d2dfc[_0x1126('0x6e')]===_0x1126('0x94')){_0x50238d[_0x1126('0x39')](_0x2d2dfc['table']+_0x1126('0x95'),_0x5679ec[_0x1126('0x96')],_0x5679ec[_0x1126('0x97')]);}else{_0x50238d[_0x1126('0x39')](_0x2d2dfc['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5679ec['startDate'],_0x5679ec[_0x1126('0x97')]);}if(_0x2577f5){logger['info'](_0x1126('0x98'),_0x50238d[_0x1126('0x7f')]());require('child_process')['fork'](path[_0x1126('0x52')](__dirname,_0x1126('0x99'),_0x2577f5['output']),[_0x2577f5['id'],_0x50238d[_0x1126('0x7f')](),path[_0x1126('0x52')](__dirname,'../../files/reports',_0x2577f5[_0x1126('0x9a')]),_0x2d6fcf]);return _0x2577f5;}else{var _0x4a9941=squel[_0x1126('0x88')]();_0x4a9941[_0x1126('0x6d')]('('+_0x50238d[_0x1126('0x7f')]()+')','countTable');_0x4a9941[_0x1126('0x67')](_0x1126('0x9b'),_0x1126('0x3f'));_0x50238d[_0x1126('0x1c')](_0x5679ec[_0x1126('0x1c')]||_0x2af2d0);_0x50238d[_0x1126('0x1b')](_0x5679ec[_0x1126('0x1b')]||0x0);return dbH[_0x1126('0x80')][_0x1126('0x31')](_0x4a9941[_0x1126('0x7f')](),{'type':dbH[_0x1126('0x80')][_0x1126('0x81')][_0x1126('0x82')]})[_0x1126('0x23')](function(_0x12ffa5){if(!_0x12ffa5[_0x1126('0x44')]){_0x5d6edb=0x0;}else{_0x5d6edb=_0x12ffa5[0x0][_0x1126('0x3f')]||0x0;}return dbH['sequelize'][_0x1126('0x31')](_0x50238d[_0x1126('0x7f')](),{'type':dbH['sequelize']['QueryTypes'][_0x1126('0x82')]});})[_0x1126('0x23')](function(_0x35065c){return{'rows':_0x35065c||[],'count':_0x5d6edb};});}});}exports[_0x1126('0x9c')]=function(_0x5c0215,_0x444f94){return runReport(_0x5c0215[_0x1126('0x50')],_0x5c0215['query'],_0x5c0215[_0x1126('0x46')])['then'](respondWithResult(_0x444f94,null))[_0x1126('0x48')](handleError(_0x444f94,null));};exports[_0x1126('0x9d')]=runReport;exports['query']=function(_0x4d43ad,_0xa02d9e){var _0x548f9e=0xa;var _0x5edb83=[_0x1126('0x52'),_0x1126('0x83'),_0x1126('0x53'),_0x1126('0x54')];var _0x4f29ce={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0x1126('0x57'),'MAX':_0x1126('0x58'),'MIN':'MIN(%s)','AVG':_0x1126('0x84'),'GROUP_CONCAT':_0x1126('0x5a'),'GROUP_CONCAT ASC':_0x1126('0x5b'),'GROUP_CONCAT DESC':_0x1126('0x5c')};var _0x17b25d={'SEC_TO_TIME':_0x1126('0x5d'),'DATE':_0x1126('0x85'),'HOUR':_0x1126('0x5e'),'ROUND':_0x1126('0x5f'),'UNIX_TIMESTAMP':_0x1126('0x9e')};var _0x3a4a91=function(_0x55145f){return!_[_0x1126('0x60')](['IS\x20NULL',_0x1126('0x9f'),_0x1126('0x62'),_0x1126('0x63')],_0x55145f);};var _0x4c7dc7=function(_0x33a27b){if(!_0x33a27b||!_0x33a27b[_0x1126('0x64')][_0x1126('0x44')]){return'';}for(var _0x578c1b='(',_0x1562b2=0x0;_0x1562b2<_0x33a27b[_0x1126('0x64')][_0x1126('0x44')];_0x1562b2+=0x1){_0x1562b2>0x0&&(_0x578c1b+='\x20'+_0x33a27b[_0x1126('0x65')]+'\x20');_0x578c1b+=_0x33a27b[_0x1126('0x64')][_0x1562b2]['group']?_0x4c7dc7(_0x33a27b['rules'][_0x1562b2][_0x1126('0x66')]):_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x67')]+'\x20'+_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x68')]+(_0x3a4a91(_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x68')])?'\x20'+_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x86')]:'');}return _0x578c1b+')';};var _0x2fb228={'where':{'id':_0x4d43ad[_0x1126('0x50')]['id']}},_0x2c95b6,_0x4a4b43,_0x588f4f,_0x5ac4d6,_0x1168a5;_0x2fb228=_['merge']({},_0x2fb228,_0x4d43ad['options']);return db[_0x1126('0x2b')][_0x1126('0x47')](_0x2fb228)[_0x1126('0x23')](function(_0x48b088){if(_0x48b088){_0x2c95b6=_0x48b088;return _0x48b088[_0x1126('0x69')]();}return null;})[_0x1126('0x23')](function(_0x5a28f9){if(_0x5a28f9){if(!_0x5a28f9[_0x1126('0x44')]){throw new db[(_0x1126('0xa0'))][(_0x1126('0x6a'))](_0x1126('0x6b'),0x193);}_0x4a4b43=_0x5a28f9;return db[_0x1126('0x6c')]['findAll']({'raw':!![]});}return null;})[_0x1126('0x23')](function(_0x1140ec){if(_0x1140ec){_0x588f4f=_['keyBy'](_0x1140ec,'id');var _0x578f5c;var _0x559dae=squel[_0x1126('0x88')]();_0x559dae[_0x1126('0x6d')](_0x2c95b6[_0x1126('0x6e')]);for(var _0x9d7819=0x0;_0x9d7819<_0x4a4b43[_0x1126('0x44')];_0x9d7819+=0x1){_0x578f5c=_0x4a4b43[_0x9d7819]['MetricId']?_0x588f4f[_0x4a4b43[_0x9d7819][_0x1126('0x6f')]]['metric']:_0x4a4b43[_0x9d7819][_0x1126('0x67')];_0x578f5c=_0x4a4b43[_0x9d7819][_0x1126('0x71')]?_['replace'](_0x4f29ce[_0x4a4b43[_0x9d7819]['function']],'%s',_0x578f5c):_0x578f5c;_0x578f5c=_0x4a4b43[_0x9d7819][_0x1126('0x73')]?_[_0x1126('0x72')](_0x17b25d[_0x4a4b43[_0x9d7819]['format']],'%s',_0x578f5c):_0x578f5c;if(_0x4a4b43[_0x9d7819]['groupBy']){_0x559dae[_0x1126('0x66')](_0x578f5c);}_0x4a4b43[_0x9d7819][_0x1126('0x75')]&&_0x559dae[_0x1126('0x89')](_0x578f5c,_0x4a4b43[_0x9d7819][_0x1126('0x75')]===_0x1126('0x76')?![]:!![]);_0x559dae[_0x1126('0x67')](_0x578f5c,_0x4a4b43[_0x9d7819][_0x1126('0x77')]||_0x578f5c);}if(_0x2c95b6[_0x1126('0x78')]){_0x2c95b6[_0x1126('0x78')]=JSON[_0x1126('0x7d')](_0x2c95b6['joins']);for(var _0x4d6528=0x0;_0x4d6528<_0x2c95b6[_0x1126('0x78')][_0x1126('0x44')];_0x4d6528+=0x1){if(_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x2e')]&&_[_0x1126('0x60')](_0x5edb83,_0x2c95b6[_0x1126('0x78')][_0x4d6528]['type'])&&_0x2c95b6['joins'][_0x4d6528][_0x1126('0x79')]&&_0x2c95b6['joins'][_0x4d6528]['foreignTable']&&_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7b')]){_0x559dae[_0x2c95b6['joins'][_0x4d6528][_0x1126('0x2e')]](_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7a')],null,util[_0x1126('0x73')]('%s.%s\x20=\x20%s.%s',_0x2c95b6[_0x1126('0x6e')],_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x79')],_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7a')],_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7b')]));}}}if(_0x2c95b6['conditions']){_0x2c95b6[_0x1126('0x7c')]=JSON[_0x1126('0x7d')](_0x2c95b6[_0x1126('0x7c')]);_0x559dae[_0x1126('0x39')](_0x4c7dc7(_0x2c95b6['conditions'][_0x1126('0x66')]));}_0x1168a5=_0x559dae[_0x1126('0x8b')]();_0x559dae['limit'](_0x548f9e);_0x559dae[_0x1126('0x1b')](0x0);logger[_0x1126('0xa1')](_0x1126('0x7e'),_0x559dae['toString']());return dbH[_0x1126('0x80')][_0x1126('0x31')](_0x559dae[_0x1126('0x7f')](),{'type':dbH[_0x1126('0x80')][_0x1126('0x81')][_0x1126('0x82')]});}})['then'](function(){return{'sql':_0x1168a5[_0x1126('0x7f')]()};})[_0x1126('0x23')](respondWithResult(_0xa02d9e,null))['catch'](handleError(_0xa02d9e,null));};
\ No newline at end of file
+var _0x1cb9=['runReport','left_join','SEC_TO_TIME(%s)','IS\x20NULL','clone','debug','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','json','offset','limit','undefined','count','status','set','apply','reject','then','destroy','get','UserProfileResource','stack','name','send','map','AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','catch','body','user','role','autoAssociation','create','DefaultReports','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','orderBy','order','DESC','joins','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','Limited\x20Query:','sequelize','toString','QueryTypes','SELECT','COUNT(%s)','GROUP_CONCAT(%s)','HOUR(%s)','value','groupBy','alias','output','fullPath','%s-%s.%s','randomstring','generate','csv','default','cdr','.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(*)'];(function(_0x474299,_0x3c4faa){var _0x596fc0=function(_0x3cfb0a){while(--_0x3cfb0a){_0x474299['push'](_0x474299['shift']());}};_0x596fc0(++_0x3c4faa);}(_0x1cb9,0x14e));var _0x91cb=function(_0x4caa0d,_0x83e992){_0x4caa0d=_0x4caa0d-0x0;var _0x36887b=_0x1cb9[_0x4caa0d];return _0x36887b;};'use strict';var emlformat=require(_0x91cb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x91cb('0x1'));var jsonpatch=require(_0x91cb('0x2'));var rp=require(_0x91cb('0x3'));var moment=require(_0x91cb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x91cb('0x5'));var util=require(_0x91cb('0x6'));var path=require('path');var sox=require(_0x91cb('0x7'));var csv=require(_0x91cb('0x8'));var ejs=require(_0x91cb('0x9'));var fs=require('fs');var fs_extra=require(_0x91cb('0xa'));var _=require(_0x91cb('0xb'));var squel=require(_0x91cb('0xc'));var crypto=require('crypto');var jsforce=require(_0x91cb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x91cb('0x8'));var querystring=require('querystring');var Papa=require(_0x91cb('0xe'));var Redis=require(_0x91cb('0xf'));var authService=require(_0x91cb('0x10'));var qs=require(_0x91cb('0x11'));var as=require(_0x91cb('0x12'));var hardwareService=require(_0x91cb('0x13'));var logger=require(_0x91cb('0x14'))(_0x91cb('0x15'));var utils=require(_0x91cb('0x16'));var config=require(_0x91cb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x91cb('0x18'))['db'];var dbH=require(_0x91cb('0x18'))['dbH'];function respondWithStatusCode(_0x20e6e0,_0x3ea707){_0x3ea707=_0x3ea707||0xcc;return function(_0x44f2e9){if(_0x44f2e9){return _0x20e6e0[_0x91cb('0x19')](_0x3ea707);}return _0x20e6e0['status'](_0x3ea707)['end']();};}function respondWithResult(_0x4aae25,_0x3d22b7){_0x3d22b7=_0x3d22b7||0xc8;return function(_0x585470){if(_0x585470){return _0x4aae25['status'](_0x3d22b7)[_0x91cb('0x1a')](_0x585470);}};}function respondWithFilteredResult(_0xc3629e,_0x347980){return function(_0x5ea796){if(_0x5ea796){var _0x238f11=typeof _0x347980[_0x91cb('0x1b')]==='undefined'&&typeof _0x347980[_0x91cb('0x1c')]===_0x91cb('0x1d');var _0x1cd34b=_0x5ea796[_0x91cb('0x1e')];var _0x5cc1c3=_0x238f11?0x0:_0x347980[_0x91cb('0x1b')];var _0x7dcf60=_0x238f11?_0x5ea796['count']:_0x347980[_0x91cb('0x1b')]+_0x347980['limit'];var _0x55042a;if(_0x7dcf60>=_0x1cd34b){_0x7dcf60=_0x1cd34b;_0x55042a=0xc8;}else{_0x55042a=0xce;}_0xc3629e[_0x91cb('0x1f')](_0x55042a);return _0xc3629e[_0x91cb('0x20')]('Content-Range',_0x5cc1c3+'-'+_0x7dcf60+'/'+_0x1cd34b)['json'](_0x5ea796);}return null;};}function patchUpdates(_0x5b385a){return function(_0x438162){try{jsonpatch[_0x91cb('0x21')](_0x438162,_0x5b385a,!![]);}catch(_0x20aff5){return BPromise[_0x91cb('0x22')](_0x20aff5);}return _0x438162['save']();};}function saveUpdates(_0x45c4b3,_0x43881c){return function(_0x1fa837){if(_0x1fa837){return _0x1fa837['update'](_0x45c4b3)[_0x91cb('0x23')](function(_0x1a7a54){return _0x1a7a54;});}return null;};}function removeEntity(_0x2447e7,_0x422d14){return function(_0x3ca500){if(_0x3ca500){return _0x3ca500[_0x91cb('0x24')]()[_0x91cb('0x23')](function(){var _0x423c4f=_0x3ca500[_0x91cb('0x25')]({'plain':!![]});var _0x4c8438='DefaultReports';return db[_0x91cb('0x26')]['destroy']({'where':{'type':_0x4c8438,'resourceId':_0x423c4f['id']}})[_0x91cb('0x23')](function(){return _0x3ca500;});})[_0x91cb('0x23')](function(){_0x2447e7[_0x91cb('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9b26a6,_0x4f5a7b){return function(_0x4572f6){if(!_0x4572f6){_0x9b26a6[_0x91cb('0x19')](0x194);}return _0x4572f6;};}function handleError(_0x3b3ee6,_0x2fb473){_0x2fb473=_0x2fb473||0x1f4;return function(_0x468908){logger['error'](_0x468908[_0x91cb('0x27')]);if(_0x468908['name']){delete _0x468908[_0x91cb('0x28')];}_0x3b3ee6[_0x91cb('0x1f')](_0x2fb473)[_0x91cb('0x29')](_0x468908);};}exports['index']=function(_0x775c25,_0x146e1f){var _0x25bbf9={},_0x361e4c={},_0xf296bc={'count':0x0,'rows':[]};var _0x3dab18=_[_0x91cb('0x2a')](db[_0x91cb('0x2b')][_0x91cb('0x2c')],function(_0x5e6ed3){return{'name':_0x5e6ed3[_0x91cb('0x2d')],'type':_0x5e6ed3[_0x91cb('0x2e')][_0x91cb('0x2f')]};});_0x361e4c[_0x91cb('0x30')]=_[_0x91cb('0x2a')](_0x3dab18,'name');_0x361e4c[_0x91cb('0x31')]=_[_0x91cb('0x32')](_0x775c25[_0x91cb('0x31')]);_0x361e4c[_0x91cb('0x33')]=_[_0x91cb('0x34')](_0x361e4c['model'],_0x361e4c[_0x91cb('0x31')]);_0x25bbf9['attributes']=_['intersection'](_0x361e4c['model'],qs[_0x91cb('0x35')](_0x775c25['query'][_0x91cb('0x35')]));_0x25bbf9['attributes']=_0x25bbf9['attributes'][_0x91cb('0x36')]?_0x25bbf9[_0x91cb('0x37')]:_0x361e4c[_0x91cb('0x30')];if(!_0x775c25[_0x91cb('0x31')][_0x91cb('0x38')]('nolimit')){_0x25bbf9[_0x91cb('0x1c')]=qs[_0x91cb('0x1c')](_0x775c25[_0x91cb('0x31')][_0x91cb('0x1c')]);_0x25bbf9['offset']=qs['offset'](_0x775c25[_0x91cb('0x31')][_0x91cb('0x1b')]);}_0x25bbf9['order']=qs[_0x91cb('0x39')](_0x775c25[_0x91cb('0x31')]['sort']);_0x25bbf9[_0x91cb('0x3a')]=qs[_0x91cb('0x33')](_['pick'](_0x775c25[_0x91cb('0x31')],_0x361e4c['filters']),_0x3dab18);if(_0x775c25[_0x91cb('0x31')][_0x91cb('0x3b')]){_0x25bbf9[_0x91cb('0x3a')]=_[_0x91cb('0x3c')](_0x25bbf9[_0x91cb('0x3a')],{'$or':_[_0x91cb('0x2a')](_0x3dab18,function(_0x5d0e37){if(_0x5d0e37[_0x91cb('0x2e')]!==_0x91cb('0x3d')){var _0x4e5b4b={};_0x4e5b4b[_0x5d0e37[_0x91cb('0x28')]]={'$like':'%'+_0x775c25['query'][_0x91cb('0x3b')]+'%'};return _0x4e5b4b;}})});}_0x25bbf9=_[_0x91cb('0x3c')]({},_0x25bbf9,_0x775c25[_0x91cb('0x3e')]);var _0x174794={'where':_0x25bbf9['where']};return db[_0x91cb('0x2b')][_0x91cb('0x1e')](_0x174794)[_0x91cb('0x23')](function(_0x37e777){_0xf296bc[_0x91cb('0x1e')]=_0x37e777;if(_0x775c25[_0x91cb('0x31')][_0x91cb('0x3f')]){_0x25bbf9[_0x91cb('0x40')]=[{'all':!![]}];}return db[_0x91cb('0x2b')][_0x91cb('0x41')](_0x25bbf9);})['then'](function(_0x16993f){_0xf296bc['rows']=_0x16993f;return _0xf296bc;})[_0x91cb('0x23')](respondWithFilteredResult(_0x146e1f,_0x25bbf9))['catch'](handleError(_0x146e1f,null));};exports[_0x91cb('0x42')]=function(_0x52e82c,_0x138f48){var _0x477131={'raw':!![],'where':{'id':_0x52e82c[_0x91cb('0x43')]['id']}},_0xba99ce={};_0xba99ce['model']=_[_0x91cb('0x32')](db[_0x91cb('0x2b')]['rawAttributes']);_0xba99ce[_0x91cb('0x31')]=_[_0x91cb('0x32')](_0x52e82c[_0x91cb('0x31')]);_0xba99ce[_0x91cb('0x33')]=_[_0x91cb('0x34')](_0xba99ce[_0x91cb('0x30')],_0xba99ce[_0x91cb('0x31')]);_0x477131[_0x91cb('0x37')]=_[_0x91cb('0x34')](_0xba99ce['model'],qs[_0x91cb('0x35')](_0x52e82c[_0x91cb('0x31')][_0x91cb('0x35')]));_0x477131[_0x91cb('0x37')]=_0x477131[_0x91cb('0x37')][_0x91cb('0x36')]?_0x477131[_0x91cb('0x37')]:_0xba99ce[_0x91cb('0x30')];if(_0x52e82c['query'][_0x91cb('0x3f')]){_0x477131[_0x91cb('0x40')]=[{'all':!![]}];}_0x477131=_[_0x91cb('0x3c')]({},_0x477131,_0x52e82c[_0x91cb('0x3e')]);return db['AnalyticDefaultReport'][_0x91cb('0x44')](_0x477131)[_0x91cb('0x23')](handleEntityNotFound(_0x138f48,null))['then'](respondWithResult(_0x138f48,null))[_0x91cb('0x45')](handleError(_0x138f48,null));};exports['create']=function(_0x2c419b,_0x4c0acd){return db['AnalyticDefaultReport']['create'](_0x2c419b[_0x91cb('0x46')],{})[_0x91cb('0x23')](function(_0x3d62c4){var _0x2f8384=_0x2c419b[_0x91cb('0x47')]['get']({'plain':!![]});if(!_0x2f8384)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2f8384[_0x91cb('0x48')]===_0x91cb('0x47')){var _0x140994=_0x3d62c4[_0x91cb('0x25')]({'plain':!![]});var _0x57adff='Reports';return db['UserProfileSection'][_0x91cb('0x44')]({'where':{'name':_0x57adff,'userProfileId':_0x2f8384['userProfileId']},'raw':!![]})[_0x91cb('0x23')](function(_0x4aa670){if(_0x4aa670&&_0x4aa670[_0x91cb('0x49')]===0x0){return db[_0x91cb('0x26')][_0x91cb('0x4a')]({'name':_0x140994[_0x91cb('0x28')],'resourceId':_0x140994['id'],'type':_0x91cb('0x4b'),'sectionId':_0x4aa670['id']},{})[_0x91cb('0x23')](function(){return _0x3d62c4;});}else{return _0x3d62c4;}})[_0x91cb('0x45')](function(_0x30fd4e){logger[_0x91cb('0x4c')](_0x91cb('0x4d'),_0x30fd4e);throw _0x30fd4e;});}return _0x3d62c4;})[_0x91cb('0x23')](respondWithResult(_0x4c0acd,0xc9))['catch'](handleError(_0x4c0acd,null));};exports[_0x91cb('0x4e')]=function(_0x1fa45a,_0x4d7a34){if(_0x1fa45a[_0x91cb('0x46')]['id']){delete _0x1fa45a[_0x91cb('0x46')]['id'];}return db['AnalyticDefaultReport'][_0x91cb('0x44')]({'where':{'id':_0x1fa45a[_0x91cb('0x43')]['id']}})[_0x91cb('0x23')](handleEntityNotFound(_0x4d7a34,null))[_0x91cb('0x23')](saveUpdates(_0x1fa45a[_0x91cb('0x46')],null))[_0x91cb('0x23')](respondWithResult(_0x4d7a34,null))[_0x91cb('0x45')](handleError(_0x4d7a34,null));};exports[_0x91cb('0x24')]=function(_0x3320bd,_0x93ef52){return db[_0x91cb('0x2b')]['find']({'where':{'id':_0x3320bd[_0x91cb('0x43')]['id']}})['then'](handleEntityNotFound(_0x93ef52,null))[_0x91cb('0x23')](removeEntity(_0x93ef52,null))['catch'](handleError(_0x93ef52,null));};exports[_0x91cb('0x4f')]=function(_0x1b2fec,_0x1986d7){var _0x47a6cd=0xa;var _0xe49d42=[_0x91cb('0x50'),'left_join',_0x91cb('0x51'),_0x91cb('0x52')];var _0x365afd={'SUM':_0x91cb('0x53'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x91cb('0x54'),'MAX':_0x91cb('0x55'),'MIN':_0x91cb('0x56'),'AVG':_0x91cb('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x91cb('0x58'),'GROUP_CONCAT DESC':_0x91cb('0x59')};var _0x5c2c01={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x91cb('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x91cb('0x5b'),'UNIX_TIMESTAMP':_0x91cb('0x5c')};var _0x5ae0d2=function(_0x4f19c8){return!_[_0x91cb('0x5d')](['IS\x20NULL',_0x91cb('0x5e'),_0x91cb('0x5f'),_0x91cb('0x60')],_0x4f19c8);};var _0x551836=function(_0x22fea8){if(!_0x22fea8||!_0x22fea8['rules'][_0x91cb('0x36')]){return'';}for(var _0xe08233='(',_0xd7be15=0x0;_0xd7be15<_0x22fea8[_0x91cb('0x61')]['length'];_0xd7be15+=0x1){_0xd7be15>0x0&&(_0xe08233+='\x20'+_0x22fea8[_0x91cb('0x62')]+'\x20');_0xe08233+=_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x63')]?_0x551836(_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x63')]):_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x64')]+'\x20'+_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x65')]+(_0x5ae0d2(_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x65')])?'\x20'+_0x22fea8[_0x91cb('0x61')][_0xd7be15]['value']:'');}return _0xe08233+')';};var _0x2cf4d0={'where':{'id':_0x1b2fec[_0x91cb('0x43')]['id']}},_0x2e301a,_0x474682,_0x51ab8a,_0x21c890,_0xca33a2;_0x2cf4d0=_['merge']({},_0x2cf4d0,_0x1b2fec[_0x91cb('0x3e')]);return db['AnalyticDefaultReport'][_0x91cb('0x44')](_0x2cf4d0)[_0x91cb('0x23')](function(_0x80fcc6){if(_0x80fcc6){_0x2e301a=_0x80fcc6;return _0x80fcc6[_0x91cb('0x66')]();}return null;})['then'](function(_0x1c0b66){if(_0x1c0b66){if(!_0x1c0b66[_0x91cb('0x36')]){throw new db[(_0x91cb('0x67'))][(_0x91cb('0x68'))](_0x91cb('0x69'),0x193);}_0x474682=_0x1c0b66;return db[_0x91cb('0x6a')]['findAll']({'raw':!![]});}return null;})[_0x91cb('0x23')](function(_0x28bfe5){if(_0x28bfe5){_0x51ab8a=_[_0x91cb('0x6b')](_0x28bfe5,'id');var _0x1f0ba2;var _0x891569=squel[_0x91cb('0x6c')]();_0x891569[_0x91cb('0x6d')](_0x2e301a[_0x91cb('0x6e')]);for(var _0x43629b=0x0;_0x43629b<_0x474682[_0x91cb('0x36')];_0x43629b+=0x1){_0x1f0ba2=_0x474682[_0x43629b][_0x91cb('0x6f')]?_0x51ab8a[_0x474682[_0x43629b][_0x91cb('0x6f')]][_0x91cb('0x70')]:_0x474682[_0x43629b][_0x91cb('0x64')];_0x1f0ba2=_0x474682[_0x43629b][_0x91cb('0x71')]?_[_0x91cb('0x72')](_0x365afd[_0x474682[_0x43629b][_0x91cb('0x71')]],'%s',_0x1f0ba2):_0x1f0ba2;_0x1f0ba2=_0x474682[_0x43629b]['format']?_[_0x91cb('0x72')](_0x5c2c01[_0x474682[_0x43629b][_0x91cb('0x73')]],'%s',_0x1f0ba2):_0x1f0ba2;if(_0x474682[_0x43629b]['groupBy']){_0x891569[_0x91cb('0x63')](_0x1f0ba2);}_0x474682[_0x43629b][_0x91cb('0x74')]&&_0x891569[_0x91cb('0x75')](_0x1f0ba2,_0x474682[_0x43629b]['orderBy']===_0x91cb('0x76')?![]:!![]);_0x891569[_0x91cb('0x64')](_0x1f0ba2,_0x474682[_0x43629b]['alias']||_0x1f0ba2);}if(_0x2e301a['joins']){_0x2e301a[_0x91cb('0x77')]=JSON['parse'](_0x2e301a[_0x91cb('0x77')]);for(var _0x376f56=0x0;_0x376f56<_0x2e301a['joins'][_0x91cb('0x36')];_0x376f56+=0x1){if(_0x2e301a['joins'][_0x376f56][_0x91cb('0x2e')]&&_[_0x91cb('0x5d')](_0xe49d42,_0x2e301a['joins'][_0x376f56]['type'])&&_0x2e301a[_0x91cb('0x77')][_0x376f56][_0x91cb('0x78')]&&_0x2e301a[_0x91cb('0x77')][_0x376f56]['foreignTable']&&_0x2e301a[_0x91cb('0x77')][_0x376f56][_0x91cb('0x79')]){_0x891569[_0x2e301a[_0x91cb('0x77')][_0x376f56][_0x91cb('0x2e')]](_0x2e301a['joins'][_0x376f56][_0x91cb('0x7a')],null,util['format'](_0x91cb('0x7b'),_0x2e301a[_0x91cb('0x6e')],_0x2e301a[_0x91cb('0x77')][_0x376f56][_0x91cb('0x78')],_0x2e301a['joins'][_0x376f56]['foreignTable'],_0x2e301a[_0x91cb('0x77')][_0x376f56]['foreignKey']));}}}if(_0x2e301a[_0x91cb('0x7c')]){_0x2e301a[_0x91cb('0x7c')]=JSON[_0x91cb('0x7d')](_0x2e301a[_0x91cb('0x7c')]);_0x891569[_0x91cb('0x3a')](_0x551836(_0x2e301a[_0x91cb('0x7c')][_0x91cb('0x63')]));}_0xca33a2=_0x891569['clone']();_0x891569[_0x91cb('0x1c')](_0x47a6cd);_0x891569[_0x91cb('0x1b')](0x0);logger['debug'](_0x91cb('0x7e'),_0x891569['toString']());return dbH[_0x91cb('0x7f')][_0x91cb('0x31')](_0x891569[_0x91cb('0x80')](),{'type':dbH[_0x91cb('0x7f')][_0x91cb('0x81')][_0x91cb('0x82')]});}})[_0x91cb('0x23')](respondWithResult(_0x1986d7,null))[_0x91cb('0x45')](handleError(_0x1986d7,null));};function runReport(_0x23380a,_0x14cad8,_0x20a64f){var _0x11411d=_0x14cad8[_0x91cb('0x28')];var _0x14882d=0xa;var _0x22ba54=[_0x91cb('0x50'),'left_join',_0x91cb('0x51'),'cross_join'];var _0x1235c0={'SUM':_0x91cb('0x53'),'COUNT':_0x91cb('0x83'),'COUNT DISTINCT':_0x91cb('0x54'),'MAX':_0x91cb('0x55'),'MIN':_0x91cb('0x56'),'AVG':_0x91cb('0x57'),'GROUP_CONCAT':_0x91cb('0x84'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x91cb('0x59')};var _0xdee7f={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x91cb('0x85'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x95f2de=function(_0x4d777a){return!_[_0x91cb('0x5d')](['IS\x20NULL',_0x91cb('0x5e'),_0x91cb('0x5f'),_0x91cb('0x60')],_0x4d777a);};var _0x443c01=function(_0x4e899c){if(!_0x4e899c||!_0x4e899c[_0x91cb('0x61')][_0x91cb('0x36')]){return'';}for(var _0x42d07b='(',_0x427afd=0x0;_0x427afd<_0x4e899c[_0x91cb('0x61')][_0x91cb('0x36')];_0x427afd+=0x1){_0x427afd>0x0&&(_0x42d07b+='\x20'+_0x4e899c[_0x91cb('0x62')]+'\x20');_0x42d07b+=_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x63')]?_0x443c01(_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x63')]):_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x64')]+'\x20'+_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x65')]+(_0x95f2de(_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x65')])?'\x20'+_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x86')]:'');}return _0x42d07b+')';};var _0x39b5bd={'where':{'id':_0x23380a['id']}},_0x315518,_0x3d944d,_0x43b96c,_0xe4d946,_0x32d426;_0x39b5bd=_['merge']({},_0x39b5bd,_0x20a64f);return db[_0x91cb('0x2b')][_0x91cb('0x44')](_0x39b5bd)[_0x91cb('0x23')](function(_0x1a654b){if(_0x1a654b){_0x315518=_0x1a654b;return _0x1a654b[_0x91cb('0x66')]();}return null;})[_0x91cb('0x23')](function(_0x404457){if(_0x404457){if(!_0x404457[_0x91cb('0x36')]){throw new db[(_0x91cb('0x67'))][(_0x91cb('0x68'))](_0x91cb('0x69'),0x193);}_0x3d944d=_0x404457;return db['AnalyticMetric'][_0x91cb('0x41')]({'raw':!![]});}return null;})['then'](function(_0x5689ea){if(_0x5689ea){_0x43b96c=_[_0x91cb('0x6b')](_0x5689ea,'id');var _0x265ffb;var _0x4f66f=squel[_0x91cb('0x6c')]();_0x4f66f[_0x91cb('0x6d')](_0x315518[_0x91cb('0x6e')]);for(var _0x210b46=0x0;_0x210b46<_0x3d944d[_0x91cb('0x36')];_0x210b46+=0x1){_0x265ffb=_0x3d944d[_0x210b46][_0x91cb('0x6f')]?_0x43b96c[_0x3d944d[_0x210b46][_0x91cb('0x6f')]]['metric']:_0x3d944d[_0x210b46][_0x91cb('0x64')];_0x265ffb=_0x3d944d[_0x210b46][_0x91cb('0x71')]?_['replace'](_0x1235c0[_0x3d944d[_0x210b46][_0x91cb('0x71')]],'%s',_0x265ffb):_0x265ffb;_0x265ffb=_0x3d944d[_0x210b46][_0x91cb('0x73')]?_['replace'](_0xdee7f[_0x3d944d[_0x210b46][_0x91cb('0x73')]],'%s',_0x265ffb):_0x265ffb;if(_0x3d944d[_0x210b46][_0x91cb('0x87')]){_0x4f66f[_0x91cb('0x63')](_0x265ffb);}_0x3d944d[_0x210b46][_0x91cb('0x74')]&&_0x4f66f[_0x91cb('0x75')](_0x265ffb,_0x3d944d[_0x210b46][_0x91cb('0x74')]===_0x91cb('0x76')?![]:!![]);_0x4f66f[_0x91cb('0x64')](_0x265ffb,_0x3d944d[_0x210b46][_0x91cb('0x88')]||_0x265ffb);}if(_0x315518[_0x91cb('0x77')]){_0x315518[_0x91cb('0x77')]=JSON[_0x91cb('0x7d')](_0x315518['joins']);for(var _0x5c0725=0x0;_0x5c0725<_0x315518[_0x91cb('0x77')][_0x91cb('0x36')];_0x5c0725+=0x1){if(_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x2e')]&&_[_0x91cb('0x5d')](_0x22ba54,_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x2e')])&&_0x315518['joins'][_0x5c0725][_0x91cb('0x78')]&&_0x315518['joins'][_0x5c0725][_0x91cb('0x7a')]&&_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x79')]){_0x4f66f[_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x2e')]](_0x315518['joins'][_0x5c0725][_0x91cb('0x7a')],null,util[_0x91cb('0x73')](_0x91cb('0x7b'),_0x315518[_0x91cb('0x6e')],_0x315518[_0x91cb('0x77')][_0x5c0725]['parentKey'],_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x7a')],_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x79')]));}}}if(_0x315518['conditions']){_0x315518['conditions']=JSON['parse'](_0x315518[_0x91cb('0x7c')]);_0x4f66f[_0x91cb('0x3a')](_0x443c01(_0x315518[_0x91cb('0x7c')][_0x91cb('0x63')]));}_0x32d426=_0x4f66f['clone']();_0x4f66f[_0x91cb('0x1c')](_0x14882d);_0x4f66f[_0x91cb('0x1b')](0x0);return;}})[_0x91cb('0x23')](function(){if(_0x14cad8[_0x91cb('0x89')]==='web'){return null;}var _0x4bf7c7=_[_0x91cb('0x3c')](_0x14cad8,{'name':_0x14cad8[_0x91cb('0x8a')]||_0x14cad8[_0x91cb('0x28')]||_0x315518[_0x91cb('0x28')],'basename':_0x11411d,'savename':util[_0x91cb('0x73')](_0x91cb('0x8b'),_0x14cad8[_0x91cb('0x28')]||_0x315518[_0x91cb('0x28')],require(_0x91cb('0x8c'))[_0x91cb('0x8d')](0x4),_0x14cad8[_0x91cb('0x89')]||_0x91cb('0x8e')),'reportId':_0x315518['id'],'reportType':_0x91cb('0x8f')});return db['AnalyticExtractedReport']['create'](_0x4bf7c7,{'raw':!![]});})[_0x91cb('0x23')](function(_0x48a910){if(_0x315518[_0x91cb('0x6e')]===_0x91cb('0x90')){_0x32d426[_0x91cb('0x3a')](_0x315518[_0x91cb('0x6e')]+_0x91cb('0x91'),_0x14cad8[_0x91cb('0x92')],_0x14cad8[_0x91cb('0x93')]);}else{_0x32d426[_0x91cb('0x3a')](_0x315518['table']+_0x91cb('0x94'),_0x14cad8[_0x91cb('0x92')],_0x14cad8[_0x91cb('0x93')]);}if(_0x48a910){logger[_0x91cb('0x95')](_0x91cb('0x96'),_0x32d426['toString']());require(_0x91cb('0x97'))[_0x91cb('0x98')](path[_0x91cb('0x50')](__dirname,_0x91cb('0x99'),_0x48a910[_0x91cb('0x89')]),[_0x48a910['id'],_0x32d426['toString'](),path[_0x91cb('0x50')](__dirname,_0x91cb('0x9a'),_0x48a910[_0x91cb('0x9b')]),_0x11411d]);return _0x48a910;}else{var _0x22b6d3=squel[_0x91cb('0x6c')]();_0x22b6d3[_0x91cb('0x6d')]('('+_0x32d426[_0x91cb('0x80')]()+')',_0x91cb('0x9c'));_0x22b6d3[_0x91cb('0x64')](_0x91cb('0x9d'),_0x91cb('0x1e'));_0x32d426[_0x91cb('0x1c')](_0x14cad8[_0x91cb('0x1c')]||_0x14882d);_0x32d426[_0x91cb('0x1b')](_0x14cad8[_0x91cb('0x1b')]||0x0);return dbH[_0x91cb('0x7f')][_0x91cb('0x31')](_0x22b6d3[_0x91cb('0x80')](),{'type':dbH[_0x91cb('0x7f')][_0x91cb('0x81')][_0x91cb('0x82')]})[_0x91cb('0x23')](function(_0x275c80){if(!_0x275c80[_0x91cb('0x36')]){_0xe4d946=0x0;}else{_0xe4d946=_0x275c80[0x0][_0x91cb('0x1e')]||0x0;}return dbH[_0x91cb('0x7f')]['query'](_0x32d426[_0x91cb('0x80')](),{'type':dbH[_0x91cb('0x7f')][_0x91cb('0x81')][_0x91cb('0x82')]});})[_0x91cb('0x23')](function(_0x5ca377){return{'rows':_0x5ca377||[],'count':_0xe4d946};});}});}exports['run']=function(_0x552490,_0x5174ac){return runReport(_0x552490['params'],_0x552490[_0x91cb('0x31')],_0x552490[_0x91cb('0x3e')])[_0x91cb('0x23')](respondWithResult(_0x5174ac,null))[_0x91cb('0x45')](handleError(_0x5174ac,null));};exports[_0x91cb('0x9e')]=runReport;exports[_0x91cb('0x31')]=function(_0x3462c5,_0x146346){var _0xe3d97f=0xa;var _0x3b93c3=['join',_0x91cb('0x9f'),_0x91cb('0x51'),'cross_join'];var _0x154e6a={'SUM':_0x91cb('0x53'),'COUNT':_0x91cb('0x83'),'COUNT DISTINCT':_0x91cb('0x54'),'MAX':_0x91cb('0x55'),'MIN':_0x91cb('0x56'),'AVG':_0x91cb('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x91cb('0x58'),'GROUP_CONCAT DESC':_0x91cb('0x59')};var _0x2a05af={'SEC_TO_TIME':_0x91cb('0xa0'),'DATE':_0x91cb('0x5a'),'HOUR':_0x91cb('0x85'),'ROUND':_0x91cb('0x5b'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x34c1f2=function(_0x4d82b4){return!_[_0x91cb('0x5d')]([_0x91cb('0xa1'),_0x91cb('0x5e'),_0x91cb('0x5f'),_0x91cb('0x60')],_0x4d82b4);};var _0x432099=function(_0x344c95){if(!_0x344c95||!_0x344c95[_0x91cb('0x61')][_0x91cb('0x36')]){return'';}for(var _0x570cf0='(',_0xb3a6c4=0x0;_0xb3a6c4<_0x344c95[_0x91cb('0x61')][_0x91cb('0x36')];_0xb3a6c4+=0x1){_0xb3a6c4>0x0&&(_0x570cf0+='\x20'+_0x344c95[_0x91cb('0x62')]+'\x20');_0x570cf0+=_0x344c95[_0x91cb('0x61')][_0xb3a6c4][_0x91cb('0x63')]?_0x432099(_0x344c95[_0x91cb('0x61')][_0xb3a6c4][_0x91cb('0x63')]):_0x344c95[_0x91cb('0x61')][_0xb3a6c4][_0x91cb('0x64')]+'\x20'+_0x344c95[_0x91cb('0x61')][_0xb3a6c4][_0x91cb('0x65')]+(_0x34c1f2(_0x344c95[_0x91cb('0x61')][_0xb3a6c4]['condition'])?'\x20'+_0x344c95[_0x91cb('0x61')][_0xb3a6c4]['value']:'');}return _0x570cf0+')';};var _0x39ba62={'where':{'id':_0x3462c5[_0x91cb('0x43')]['id']}},_0x2ab5a3,_0x10a9f6,_0x43ad75,_0x1382ba,_0x12da14;_0x39ba62=_[_0x91cb('0x3c')]({},_0x39ba62,_0x3462c5['options']);return db[_0x91cb('0x2b')]['find'](_0x39ba62)[_0x91cb('0x23')](function(_0x2f7387){if(_0x2f7387){_0x2ab5a3=_0x2f7387;return _0x2f7387[_0x91cb('0x66')]();}return null;})['then'](function(_0x1f2ef8){if(_0x1f2ef8){if(!_0x1f2ef8[_0x91cb('0x36')]){throw new db[(_0x91cb('0x67'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x10a9f6=_0x1f2ef8;return db['AnalyticMetric'][_0x91cb('0x41')]({'raw':!![]});}return null;})[_0x91cb('0x23')](function(_0x3ac830){if(_0x3ac830){_0x43ad75=_['keyBy'](_0x3ac830,'id');var _0x469e62;var _0x1e9441=squel[_0x91cb('0x6c')]();_0x1e9441[_0x91cb('0x6d')](_0x2ab5a3[_0x91cb('0x6e')]);for(var _0x416390=0x0;_0x416390<_0x10a9f6[_0x91cb('0x36')];_0x416390+=0x1){_0x469e62=_0x10a9f6[_0x416390][_0x91cb('0x6f')]?_0x43ad75[_0x10a9f6[_0x416390]['MetricId']][_0x91cb('0x70')]:_0x10a9f6[_0x416390][_0x91cb('0x64')];_0x469e62=_0x10a9f6[_0x416390][_0x91cb('0x71')]?_[_0x91cb('0x72')](_0x154e6a[_0x10a9f6[_0x416390]['function']],'%s',_0x469e62):_0x469e62;_0x469e62=_0x10a9f6[_0x416390][_0x91cb('0x73')]?_['replace'](_0x2a05af[_0x10a9f6[_0x416390][_0x91cb('0x73')]],'%s',_0x469e62):_0x469e62;if(_0x10a9f6[_0x416390][_0x91cb('0x87')]){_0x1e9441[_0x91cb('0x63')](_0x469e62);}_0x10a9f6[_0x416390][_0x91cb('0x74')]&&_0x1e9441[_0x91cb('0x75')](_0x469e62,_0x10a9f6[_0x416390]['orderBy']===_0x91cb('0x76')?![]:!![]);_0x1e9441['field'](_0x469e62,_0x10a9f6[_0x416390]['alias']||_0x469e62);}if(_0x2ab5a3[_0x91cb('0x77')]){_0x2ab5a3[_0x91cb('0x77')]=JSON[_0x91cb('0x7d')](_0x2ab5a3[_0x91cb('0x77')]);for(var _0x286ed7=0x0;_0x286ed7<_0x2ab5a3[_0x91cb('0x77')][_0x91cb('0x36')];_0x286ed7+=0x1){if(_0x2ab5a3[_0x91cb('0x77')][_0x286ed7]['type']&&_[_0x91cb('0x5d')](_0x3b93c3,_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x2e')])&&_0x2ab5a3['joins'][_0x286ed7]['parentKey']&&_0x2ab5a3['joins'][_0x286ed7][_0x91cb('0x7a')]&&_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x79')]){_0x1e9441[_0x2ab5a3['joins'][_0x286ed7][_0x91cb('0x2e')]](_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x7a')],null,util[_0x91cb('0x73')]('%s.%s\x20=\x20%s.%s',_0x2ab5a3[_0x91cb('0x6e')],_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x78')],_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x7a')],_0x2ab5a3[_0x91cb('0x77')][_0x286ed7]['foreignKey']));}}}if(_0x2ab5a3[_0x91cb('0x7c')]){_0x2ab5a3[_0x91cb('0x7c')]=JSON[_0x91cb('0x7d')](_0x2ab5a3[_0x91cb('0x7c')]);_0x1e9441[_0x91cb('0x3a')](_0x432099(_0x2ab5a3['conditions'][_0x91cb('0x63')]));}_0x12da14=_0x1e9441[_0x91cb('0xa2')]();_0x1e9441[_0x91cb('0x1c')](_0xe3d97f);_0x1e9441[_0x91cb('0x1b')](0x0);logger[_0x91cb('0xa3')](_0x91cb('0x7e'),_0x1e9441['toString']());return dbH[_0x91cb('0x7f')][_0x91cb('0x31')](_0x1e9441[_0x91cb('0x80')](),{'type':dbH['sequelize'][_0x91cb('0x81')]['SELECT']});}})[_0x91cb('0x23')](function(){return{'sql':_0x12da14[_0x91cb('0x80')]()};})[_0x91cb('0x23')](respondWithResult(_0x146346,null))[_0x91cb('0x45')](handleError(_0x146346,null));};
\ No newline at end of file
index f3c322d..87da8e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabe6=['moment','bluebird','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','AnalyticDefaultReport','lodash','util','../../config/logger','api'];(function(_0x4ed265,_0x10d097){var _0x308d3c=function(_0x13ae17){while(--_0x13ae17){_0x4ed265['push'](_0x4ed265['shift']());}};_0x308d3c(++_0x10d097);}(_0xabe6,0x1d0));var _0x6abe=function(_0x42a400,_0x22f45b){_0x42a400=_0x42a400-0x0;var _0x35498e=_0xabe6[_0x42a400];return _0x35498e;};'use strict';var _=require(_0x6abe('0x0'));var util=require(_0x6abe('0x1'));var logger=require(_0x6abe('0x2'))(_0x6abe('0x3'));var moment=require(_0x6abe('0x4'));var BPromise=require(_0x6abe('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6abe('0x6'));var rimraf=require(_0x6abe('0x7'));var config=require(_0x6abe('0x8'));var attributes=require(_0x6abe('0x9'));module[_0x6abe('0xa')]=function(_0x1d204e,_0xdd7972){return _0x1d204e['define'](_0x6abe('0xb'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe661=['../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x115345,_0xc3b8aa){var _0x549a05=function(_0x2449ec){while(--_0x2449ec){_0x115345['push'](_0x115345['shift']());}};_0x549a05(++_0xc3b8aa);}(_0xe661,0x123));var _0x1e66=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xe661[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x1e66('0x0'));var util=require(_0x1e66('0x1'));var logger=require(_0x1e66('0x2'))(_0x1e66('0x3'));var moment=require(_0x1e66('0x4'));var BPromise=require('bluebird');var rp=require(_0x1e66('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1e66('0x6'));var attributes=require(_0x1e66('0x7'));module[_0x1e66('0x8')]=function(_0x15bef5,_0x3bd716){return _0x15bef5[_0x1e66('0x9')](_0x1e66('0xa'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f428ace..22a35f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0eb=['stringify','error','code','message','result','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x31d3b8,_0xd47928){var _0x258cac=function(_0x5a2cc0){while(--_0x5a2cc0){_0x31d3b8['push'](_0x31d3b8['shift']());}};_0x258cac(++_0xd47928);}(_0xb0eb,0x165));var _0xbb0e=function(_0x1cf77f,_0x575de1){_0x1cf77f=_0x1cf77f-0x0;var _0x537398=_0xb0eb[_0x1cf77f];return _0x537398;};'use strict';var _=require(_0xbb0e('0x0'));var util=require(_0xbb0e('0x1'));var moment=require(_0xbb0e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbb0e('0x3'));var db=require(_0xbb0e('0x4'))['db'];var utils=require(_0xbb0e('0x5'));var logger=require(_0xbb0e('0x6'))(_0xbb0e('0x7'));var config=require(_0xbb0e('0x8'));var jayson=require(_0xbb0e('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5f2686,_0x4ce4f9,_0x556486){return new BPromise(function(_0x54d757,_0x458b4d){return client[_0xbb0e('0xa')](_0x5f2686,_0x556486)[_0xbb0e('0xb')](function(_0xf18844){logger[_0xbb0e('0xc')](_0xbb0e('0xd'),_0x4ce4f9,'request\x20sent');logger[_0xbb0e('0xe')](_0xbb0e('0xf'),_0x4ce4f9,_0xbb0e('0x10'),JSON[_0xbb0e('0x11')](_0xf18844));if(_0xf18844[_0xbb0e('0x12')]){if(_0xf18844['error'][_0xbb0e('0x13')]===0x1f4){logger['error'](_0xbb0e('0xd'),_0x4ce4f9,_0xf18844['error']['message']);return _0x458b4d(_0xf18844[_0xbb0e('0x12')][_0xbb0e('0x14')]);}logger['error'](_0xbb0e('0xd'),_0x4ce4f9,_0xf18844['error'][_0xbb0e('0x14')]);return _0x54d757(_0xf18844[_0xbb0e('0x12')][_0xbb0e('0x14')]);}else{logger[_0xbb0e('0xc')](_0xbb0e('0xd'),_0x4ce4f9,_0xbb0e('0x10'));_0x54d757(_0xf18844[_0xbb0e('0x15')][_0xbb0e('0x14')]);}})['catch'](function(_0x56c843){logger[_0xbb0e('0x12')](_0xbb0e('0xd'),_0x4ce4f9,_0x56c843);_0x458b4d(_0x56c843);});});}
\ No newline at end of file
+var _0xfb20=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','AnalyticDefaultReport,\x20%s,\x20%s','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','moment','randomstring','ioredis'];(function(_0x23142e,_0x341303){var _0x5c9e85=function(_0x16d388){while(--_0x16d388){_0x23142e['push'](_0x23142e['shift']());}};_0x5c9e85(++_0x341303);}(_0xfb20,0x137));var _0x0fb2=function(_0x39609a,_0x28a563){_0x39609a=_0x39609a-0x0;var _0xecd92=_0xfb20[_0x39609a];return _0xecd92;};'use strict';var _=require(_0x0fb2('0x0'));var util=require('util');var moment=require(_0x0fb2('0x1'));var BPromise=require('bluebird');var rs=require(_0x0fb2('0x2'));var fs=require('fs');var Redis=require(_0x0fb2('0x3'));var db=require(_0x0fb2('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0fb2('0x5'))(_0x0fb2('0x6'));var config=require(_0x0fb2('0x7'));var jayson=require(_0x0fb2('0x8'));var client=jayson[_0x0fb2('0x9')][_0x0fb2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x789273,_0x59a136,_0x4b6572){return new BPromise(function(_0x1a8604,_0x280455){return client[_0x0fb2('0xb')](_0x789273,_0x4b6572)['then'](function(_0x3999de){logger[_0x0fb2('0xc')](_0x0fb2('0xd'),_0x59a136,'request\x20sent');logger['debug'](_0x0fb2('0xe'),_0x59a136,_0x0fb2('0xf'),JSON['stringify'](_0x3999de));if(_0x3999de[_0x0fb2('0x10')]){if(_0x3999de['error'][_0x0fb2('0x11')]===0x1f4){logger[_0x0fb2('0x10')](_0x0fb2('0xd'),_0x59a136,_0x3999de[_0x0fb2('0x10')][_0x0fb2('0x12')]);return _0x280455(_0x3999de['error']['message']);}logger[_0x0fb2('0x10')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x59a136,_0x3999de['error'][_0x0fb2('0x12')]);return _0x1a8604(_0x3999de[_0x0fb2('0x10')][_0x0fb2('0x12')]);}else{logger[_0x0fb2('0xc')](_0x0fb2('0xd'),_0x59a136,_0x0fb2('0xf'));_0x1a8604(_0x3999de[_0x0fb2('0x13')][_0x0fb2('0x12')]);}})[_0x0fb2('0x14')](function(_0x25c058){logger[_0x0fb2('0x10')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x59a136,_0x25c058);_0x280455(_0x25c058);});});}
\ No newline at end of file
index 0a0129c..f3b9c58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fe4=['/:id/preview','/:id/query','query','post','create','put','update','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','show'];(function(_0x16ae34,_0x1dc6d){var _0x184836=function(_0x1e48b7){while(--_0x1e48b7){_0x16ae34['push'](_0x16ae34['shift']());}};_0x184836(++_0x1dc6d);}(_0x6fe4,0x144));var _0x46fe=function(_0x318c4d,_0x58aa0f){_0x318c4d=_0x318c4d-0x0;var _0x336ace=_0x6fe4[_0x318c4d];return _0x336ace;};'use strict';var multer=require('multer');var util=require(_0x46fe('0x0'));var path=require(_0x46fe('0x1'));var timeout=require(_0x46fe('0x2'));var express=require('express');var router=express[_0x46fe('0x3')]();var fs_extra=require(_0x46fe('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x46fe('0x5'));var config=require('../../config/environment');var controller=require(_0x46fe('0x6'));router[_0x46fe('0x7')]('/',auth[_0x46fe('0x8')](),controller[_0x46fe('0x9')]);router['get'](_0x46fe('0xa'),auth[_0x46fe('0x8')](),controller[_0x46fe('0xb')]);router[_0x46fe('0x7')](_0x46fe('0xc'),auth[_0x46fe('0x8')](),controller['preview']);router['get']('/:id/run',auth[_0x46fe('0x8')](),controller['run']);router[_0x46fe('0x7')](_0x46fe('0xd'),auth[_0x46fe('0x8')](),controller[_0x46fe('0xe')]);router[_0x46fe('0xf')]('/',auth[_0x46fe('0x8')](),controller[_0x46fe('0x10')]);router[_0x46fe('0x11')](_0x46fe('0xa'),auth['isAuthenticated'](),controller[_0x46fe('0x12')]);router['delete'](_0x46fe('0xa'),auth[_0x46fe('0x8')](),controller[_0x46fe('0x13')]);module[_0x46fe('0x14')]=router;
\ No newline at end of file
+var _0x13ae=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','isAuthenticated','index','get','/:id/preview','/:id/run','run','/:id/query','query','post','put','/:id','update','delete','exports','multer','util','path','connect-timeout'];(function(_0x328f6b,_0x3518ac){var _0x265849=function(_0xd68135){while(--_0xd68135){_0x328f6b['push'](_0x328f6b['shift']());}};_0x265849(++_0x3518ac);}(_0x13ae,0x1f4));var _0xe13a=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x13ae[_0x138adb];return _0x1b27f2;};'use strict';var multer=require(_0xe13a('0x0'));var util=require(_0xe13a('0x1'));var path=require(_0xe13a('0x2'));var timeout=require(_0xe13a('0x3'));var express=require(_0xe13a('0x4'));var router=express['Router']();var fs_extra=require(_0xe13a('0x5'));var auth=require(_0xe13a('0x6'));var interaction=require(_0xe13a('0x7'));var config=require(_0xe13a('0x8'));var controller=require(_0xe13a('0x9'));router['get']('/',auth[_0xe13a('0xa')](),controller[_0xe13a('0xb')]);router[_0xe13a('0xc')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xe13a('0xc')](_0xe13a('0xd'),auth['isAuthenticated'](),controller['preview']);router[_0xe13a('0xc')](_0xe13a('0xe'),auth[_0xe13a('0xa')](),controller[_0xe13a('0xf')]);router[_0xe13a('0xc')](_0xe13a('0x10'),auth[_0xe13a('0xa')](),controller[_0xe13a('0x11')]);router[_0xe13a('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0xe13a('0x13')](_0xe13a('0x14'),auth['isAuthenticated'](),controller[_0xe13a('0x15')]);router[_0xe13a('0x16')](_0xe13a('0x14'),auth['isAuthenticated'](),controller['destroy']);module[_0xe13a('0x17')]=router;
\ No newline at end of file
index 37d78e4..955ec14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf163=['Loading','manual','scheduled','INTEGER','sequelize','moment','STRING','ENUM','csv','xlsx','DATE'];(function(_0x41570e,_0x3945dc){var _0x52a7e6=function(_0x479526){while(--_0x479526){_0x41570e['push'](_0x41570e['shift']());}};_0x52a7e6(++_0x3945dc);}(_0xf163,0xf6));var _0x3f16=function(_0x30cd7e,_0x4db10a){_0x30cd7e=_0x30cd7e-0x0;var _0x462a02=_0xf163[_0x30cd7e];return _0x462a02;};'use strict';var Sequelize=require(_0x3f16('0x0'));var moment=require(_0x3f16('0x1'));module['exports']={'name':{'type':Sequelize[_0x3f16('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x3f16('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x3f16('0x3')](_0x3f16('0x4'),'pdf',_0x3f16('0x5')),'allowNull':![],'defaultValue':_0x3f16('0x4')},'savename':{'type':Sequelize[_0x3f16('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x3f16('0x6')]},'endDate':{'type':Sequelize[_0x3f16('0x6')]},'status':{'type':Sequelize[_0x3f16('0x2')],'defaultValue':_0x3f16('0x7')},'type':{'type':Sequelize['ENUM'](_0x3f16('0x8'),_0x3f16('0x9')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x3f16('0xa')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0x3f16('0x2')]}};
\ No newline at end of file
+var _0xc9b0=['ENUM','csv','pdf','xlsx','DATE','Loading','manual','scheduled','INTEGER','UNSIGNED','sequelize','moment','exports','STRING'];(function(_0x1cd60a,_0x2ac548){var _0x4a7033=function(_0x187444){while(--_0x187444){_0x1cd60a['push'](_0x1cd60a['shift']());}};_0x4a7033(++_0x2ac548);}(_0xc9b0,0x14c));var _0x0c9b=function(_0xe59ea9,_0x38d73a){_0xe59ea9=_0xe59ea9-0x0;var _0x1e317a=_0xc9b0[_0xe59ea9];return _0x1e317a;};'use strict';var Sequelize=require(_0x0c9b('0x0'));var moment=require(_0x0c9b('0x1'));module[_0x0c9b('0x2')]={'name':{'type':Sequelize[_0x0c9b('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x0c9b('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x0c9b('0x4')](_0x0c9b('0x5'),_0x0c9b('0x6'),_0x0c9b('0x7')),'allowNull':![],'defaultValue':_0x0c9b('0x5')},'savename':{'type':Sequelize[_0x0c9b('0x3')],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0x0c9b('0x8')]},'status':{'type':Sequelize[_0x0c9b('0x3')],'defaultValue':_0x0c9b('0x9')},'type':{'type':Sequelize[_0x0c9b('0x4')](_0x0c9b('0xa'),_0x0c9b('0xb')),'allowNull':![],'defaultValue':_0x0c9b('0xa')},'reportId':{'type':Sequelize[_0x0c9b('0xc')](0xb)[_0x0c9b('0xd')]},'reportType':{'type':Sequelize[_0x0c9b('0x3')]}};
\ No newline at end of file
index 74d0178..9317362 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb31=['body','download','basename','savename','existsSync','join','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','format','%s.%s','output','toLowerCase','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','Content-Range','apply','update','then','destroy','ExtractedReports','UserProfileResource','sendStatus','error','stack','name','send','index','AnalyticExtractedReport','fieldName','model','map','query','keys','filters','intersection','attributes','fields','length','order','sort','where','filter','merge','VIRTUAL','findAll','rows','catch','params','rawAttributes','includeAll','include','options','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x9eab14,_0x5f5ced){var _0x10b998=function(_0x297e17){while(--_0x297e17){_0x9eab14['push'](_0x9eab14['shift']());}};_0x10b998(++_0x5f5ced);}(_0xdb31,0x6e));var _0x1db3=function(_0x456032,_0x1a799d){_0x456032=_0x456032-0x0;var _0x1a53cd=_0xdb31[_0x456032];return _0x1a53cd;};'use strict';var emlformat=require(_0x1db3('0x0'));var rimraf=require(_0x1db3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1db3('0x2'));var rp=require(_0x1db3('0x3'));var moment=require(_0x1db3('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1db3('0x5'));var path=require(_0x1db3('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1db3('0x7'));var fs=require('fs');var fs_extra=require(_0x1db3('0x8'));var _=require(_0x1db3('0x9'));var squel=require(_0x1db3('0xa'));var crypto=require('crypto');var jsforce=require(_0x1db3('0xb'));var deskjs=require(_0x1db3('0xc'));var toCsv=require(_0x1db3('0xd'));var querystring=require(_0x1db3('0xe'));var Papa=require('papaparse');var Redis=require(_0x1db3('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1db3('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1db3('0x11'))(_0x1db3('0x12'));var utils=require(_0x1db3('0x13'));var config=require(_0x1db3('0x14'));var licenseUtil=require(_0x1db3('0x15'));var db=require(_0x1db3('0x16'))['db'];function respondWithStatusCode(_0x28d90e,_0x2cd717){_0x2cd717=_0x2cd717||0xcc;return function(_0x4a9706){if(_0x4a9706){return _0x28d90e['sendStatus'](_0x2cd717);}return _0x28d90e['status'](_0x2cd717)[_0x1db3('0x17')]();};}function respondWithResult(_0xc7c90e,_0x1c1ac1){_0x1c1ac1=_0x1c1ac1||0xc8;return function(_0x17b506){if(_0x17b506){return _0xc7c90e[_0x1db3('0x18')](_0x1c1ac1)[_0x1db3('0x19')](_0x17b506);}};}function respondWithFilteredResult(_0x21a35a,_0x32a04b){return function(_0x227a11){if(_0x227a11){var _0x44044d=typeof _0x32a04b[_0x1db3('0x1a')]===_0x1db3('0x1b')&&typeof _0x32a04b[_0x1db3('0x1c')]===_0x1db3('0x1b');var _0x3973f3=_0x227a11[_0x1db3('0x1d')];var _0x2ff7a4=_0x44044d?0x0:_0x32a04b[_0x1db3('0x1a')];var _0x3f9c4d=_0x44044d?_0x227a11[_0x1db3('0x1d')]:_0x32a04b[_0x1db3('0x1a')]+_0x32a04b['limit'];var _0x55dfa9;if(_0x3f9c4d>=_0x3973f3){_0x3f9c4d=_0x3973f3;_0x55dfa9=0xc8;}else{_0x55dfa9=0xce;}_0x21a35a['status'](_0x55dfa9);return _0x21a35a['set'](_0x1db3('0x1e'),_0x2ff7a4+'-'+_0x3f9c4d+'/'+_0x3973f3)['json'](_0x227a11);}return null;};}function patchUpdates(_0x2fc9c6){return function(_0x2e8e88){try{jsonpatch[_0x1db3('0x1f')](_0x2e8e88,_0x2fc9c6,!![]);}catch(_0xb9aa37){return BPromise['reject'](_0xb9aa37);}return _0x2e8e88['save']();};}function saveUpdates(_0x563120,_0x4e8459){return function(_0x34aa04){if(_0x34aa04){return _0x34aa04[_0x1db3('0x20')](_0x563120)[_0x1db3('0x21')](function(_0x5b97dc){return _0x5b97dc;});}return null;};}function removeEntity(_0x52031b,_0x513b49){return function(_0x4cf14d){if(_0x4cf14d){return _0x4cf14d[_0x1db3('0x22')]()[_0x1db3('0x21')](function(){var _0x4ce350=_0x4cf14d['get']({'plain':!![]});var _0x2c9bd9=_0x1db3('0x23');return db[_0x1db3('0x24')][_0x1db3('0x22')]({'where':{'type':_0x2c9bd9,'resourceId':_0x4ce350['id']}})[_0x1db3('0x21')](function(){return _0x4cf14d;});})[_0x1db3('0x21')](function(){_0x52031b[_0x1db3('0x18')](0xcc)[_0x1db3('0x17')]();});}};}function handleEntityNotFound(_0x1f2021,_0x6701d5){return function(_0x558eeb){if(!_0x558eeb){_0x1f2021[_0x1db3('0x25')](0x194);}return _0x558eeb;};}function handleError(_0x4ccb5f,_0x2acdb3){_0x2acdb3=_0x2acdb3||0x1f4;return function(_0x56b625){logger[_0x1db3('0x26')](_0x56b625[_0x1db3('0x27')]);if(_0x56b625[_0x1db3('0x28')]){delete _0x56b625[_0x1db3('0x28')];}_0x4ccb5f[_0x1db3('0x18')](_0x2acdb3)[_0x1db3('0x29')](_0x56b625);};}exports[_0x1db3('0x2a')]=function(_0x599ce5,_0x119282){var _0x2b90d6={},_0x1a6f31={},_0x36264f={'count':0x0,'rows':[]};var _0x401116=_['map'](db[_0x1db3('0x2b')]['rawAttributes'],function(_0x419a46){return{'name':_0x419a46[_0x1db3('0x2c')],'type':_0x419a46['type']['key']};});_0x1a6f31[_0x1db3('0x2d')]=_[_0x1db3('0x2e')](_0x401116,_0x1db3('0x28'));_0x1a6f31[_0x1db3('0x2f')]=_[_0x1db3('0x30')](_0x599ce5[_0x1db3('0x2f')]);_0x1a6f31[_0x1db3('0x31')]=_[_0x1db3('0x32')](_0x1a6f31[_0x1db3('0x2d')],_0x1a6f31[_0x1db3('0x2f')]);_0x2b90d6[_0x1db3('0x33')]=_['intersection'](_0x1a6f31[_0x1db3('0x2d')],qs[_0x1db3('0x34')](_0x599ce5[_0x1db3('0x2f')][_0x1db3('0x34')]));_0x2b90d6[_0x1db3('0x33')]=_0x2b90d6['attributes'][_0x1db3('0x35')]?_0x2b90d6[_0x1db3('0x33')]:_0x1a6f31[_0x1db3('0x2d')];if(!_0x599ce5[_0x1db3('0x2f')]['hasOwnProperty']('nolimit')){_0x2b90d6[_0x1db3('0x1c')]=qs[_0x1db3('0x1c')](_0x599ce5[_0x1db3('0x2f')][_0x1db3('0x1c')]);_0x2b90d6[_0x1db3('0x1a')]=qs[_0x1db3('0x1a')](_0x599ce5['query'][_0x1db3('0x1a')]);}_0x2b90d6[_0x1db3('0x36')]=qs[_0x1db3('0x37')](_0x599ce5[_0x1db3('0x2f')]['sort']);_0x2b90d6[_0x1db3('0x38')]=qs[_0x1db3('0x31')](_['pick'](_0x599ce5['query'],_0x1a6f31[_0x1db3('0x31')]),_0x401116);if(_0x599ce5['query'][_0x1db3('0x39')]){_0x2b90d6['where']=_[_0x1db3('0x3a')](_0x2b90d6[_0x1db3('0x38')],{'$or':_[_0x1db3('0x2e')](_0x401116,function(_0x39a06d){if(_0x39a06d['type']!==_0x1db3('0x3b')){var _0x4fd999={};_0x4fd999[_0x39a06d[_0x1db3('0x28')]]={'$like':'%'+_0x599ce5[_0x1db3('0x2f')][_0x1db3('0x39')]+'%'};return _0x4fd999;}})});}_0x2b90d6=_['merge']({},_0x2b90d6,_0x599ce5['options']);var _0x282195={'where':_0x2b90d6[_0x1db3('0x38')]};return db[_0x1db3('0x2b')]['count'](_0x282195)[_0x1db3('0x21')](function(_0x2dbf81){_0x36264f[_0x1db3('0x1d')]=_0x2dbf81;if(_0x599ce5['query']['includeAll']){_0x2b90d6['include']=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0x1db3('0x3c')](_0x2b90d6);})[_0x1db3('0x21')](function(_0x3f3c87){_0x36264f[_0x1db3('0x3d')]=_0x3f3c87;return _0x36264f;})[_0x1db3('0x21')](respondWithFilteredResult(_0x119282,_0x2b90d6))[_0x1db3('0x3e')](handleError(_0x119282,null));};exports['show']=function(_0xc47b48,_0x2bab80){var _0x597766={'raw':!![],'where':{'id':_0xc47b48[_0x1db3('0x3f')]['id']}},_0x4c8da7={};_0x4c8da7[_0x1db3('0x2d')]=_[_0x1db3('0x30')](db['AnalyticExtractedReport'][_0x1db3('0x40')]);_0x4c8da7[_0x1db3('0x2f')]=_[_0x1db3('0x30')](_0xc47b48[_0x1db3('0x2f')]);_0x4c8da7[_0x1db3('0x31')]=_[_0x1db3('0x32')](_0x4c8da7[_0x1db3('0x2d')],_0x4c8da7[_0x1db3('0x2f')]);_0x597766['attributes']=_[_0x1db3('0x32')](_0x4c8da7[_0x1db3('0x2d')],qs['fields'](_0xc47b48[_0x1db3('0x2f')][_0x1db3('0x34')]));_0x597766[_0x1db3('0x33')]=_0x597766[_0x1db3('0x33')]['length']?_0x597766[_0x1db3('0x33')]:_0x4c8da7['model'];if(_0xc47b48[_0x1db3('0x2f')][_0x1db3('0x41')]){_0x597766[_0x1db3('0x42')]=[{'all':!![]}];}_0x597766=_[_0x1db3('0x3a')]({},_0x597766,_0xc47b48[_0x1db3('0x43')]);return db['AnalyticExtractedReport'][_0x1db3('0x44')](_0x597766)[_0x1db3('0x21')](handleEntityNotFound(_0x2bab80,null))[_0x1db3('0x21')](respondWithResult(_0x2bab80,null))[_0x1db3('0x3e')](handleError(_0x2bab80,null));};exports['create']=function(_0x5591b3,_0x23abc6){return db['AnalyticExtractedReport'][_0x1db3('0x45')](_0x5591b3['body'],{})['then'](function(_0x5f1fa2){var _0x4a7637=_0x5591b3[_0x1db3('0x46')][_0x1db3('0x47')]({'plain':!![]});if(!_0x4a7637)throw new Error(_0x1db3('0x48'));if(_0x4a7637[_0x1db3('0x49')]==='user'){var _0x5f7101=_0x5f1fa2[_0x1db3('0x47')]({'plain':!![]});var _0x2a4adf=_0x1db3('0x23');return db[_0x1db3('0x4a')][_0x1db3('0x44')]({'where':{'name':_0x2a4adf,'userProfileId':_0x4a7637[_0x1db3('0x4b')]},'raw':!![]})[_0x1db3('0x21')](function(_0x145b72){if(_0x145b72&&_0x145b72[_0x1db3('0x4c')]===0x0){return db[_0x1db3('0x24')][_0x1db3('0x45')]({'name':_0x5f7101[_0x1db3('0x28')],'resourceId':_0x5f7101['id'],'type':_0x145b72['name'],'sectionId':_0x145b72['id']},{})[_0x1db3('0x21')](function(){return _0x5f1fa2;});}else{return _0x5f1fa2;}})[_0x1db3('0x3e')](function(_0x3a2e95){logger[_0x1db3('0x26')](_0x1db3('0x4d'),_0x3a2e95);throw _0x3a2e95;});}return _0x5f1fa2;})[_0x1db3('0x21')](respondWithResult(_0x23abc6,0xc9))['catch'](handleError(_0x23abc6,null));};exports[_0x1db3('0x20')]=function(_0x46615a,_0x360f4c){if(_0x46615a[_0x1db3('0x4e')]['id']){delete _0x46615a[_0x1db3('0x4e')]['id'];}return db[_0x1db3('0x2b')]['find']({'where':{'id':_0x46615a[_0x1db3('0x3f')]['id']}})[_0x1db3('0x21')](handleEntityNotFound(_0x360f4c,null))[_0x1db3('0x21')](saveUpdates(_0x46615a['body'],null))[_0x1db3('0x21')](respondWithResult(_0x360f4c,null))[_0x1db3('0x3e')](handleError(_0x360f4c,null));};exports[_0x1db3('0x22')]=function(_0x3da2ea,_0x184305){return db[_0x1db3('0x2b')]['find']({'where':{'id':_0x3da2ea[_0x1db3('0x3f')]['id']}})[_0x1db3('0x21')](handleEntityNotFound(_0x184305,null))[_0x1db3('0x21')](removeEntity(_0x184305,null))[_0x1db3('0x3e')](handleError(_0x184305,null));};exports[_0x1db3('0x4f')]=function(_0x239e8e,_0x17cf27,_0x46cb3d){return db['AnalyticExtractedReport']['find']({'where':{'id':_0x239e8e[_0x1db3('0x3f')]['id']},'attributes':[_0x1db3('0x28'),_0x1db3('0x50'),_0x1db3('0x51'),'output'],'raw':!![]})[_0x1db3('0x21')](handleEntityNotFound(_0x17cf27,null))[_0x1db3('0x21')](function(_0x927c06){if(_0x927c06){if(!fs[_0x1db3('0x52')](path[_0x1db3('0x53')](config[_0x1db3('0x54')],_0x1db3('0x55'),_0x927c06['savename']))){throw new db[(_0x1db3('0x56'))][(_0x1db3('0x57'))](_0x1db3('0x58'));}if(_0x239e8e[_0x1db3('0x2f')][_0x1db3('0x59')]){return _0x17cf27['sendStatus'](0xc8);}return _0x17cf27['download'](path[_0x1db3('0x53')](config[_0x1db3('0x54')],_0x1db3('0x55'),_0x927c06[_0x1db3('0x51')]),util[_0x1db3('0x5a')](_0x1db3('0x5b'),_0x927c06[_0x1db3('0x50')]||_0x927c06['name'],_0x927c06[_0x1db3('0x5c')][_0x1db3('0x5d')]()));}})['catch'](handleError(_0x17cf27,null));};
\ No newline at end of file
+var _0x368f=['json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','ExtractedReports','UserProfileResource','sendStatus','error','stack','name','send','index','AnalyticExtractedReport','rawAttributes','fieldName','type','key','map','keys','query','filters','intersection','model','attributes','fields','length','nolimit','limit','order','sort','pick','filter','where','VIRTUAL','merge','options','include','findAll','catch','show','params','includeAll','create','body','user','get','UserProfileSection','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','basename','savename','output','join','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','root','%s.%s','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','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','status','end'];(function(_0xf639b8,_0xa92620){var _0x18c113=function(_0x554221){while(--_0x554221){_0xf639b8['push'](_0xf639b8['shift']());}};_0x18c113(++_0xa92620);}(_0x368f,0x151));var _0xf368=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x368f[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf368('0x0'));var rp=require('request-promise');var moment=require(_0xf368('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf368('0x2'));var path=require(_0xf368('0x3'));var sox=require(_0xf368('0x4'));var csv=require(_0xf368('0x5'));var ejs=require(_0xf368('0x6'));var fs=require('fs');var fs_extra=require(_0xf368('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf368('0x8'));var deskjs=require(_0xf368('0x9'));var toCsv=require(_0xf368('0x5'));var querystring=require(_0xf368('0xa'));var Papa=require(_0xf368('0xb'));var Redis=require(_0xf368('0xc'));var authService=require(_0xf368('0xd'));var qs=require(_0xf368('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf368('0xf'));var logger=require(_0xf368('0x10'))(_0xf368('0x11'));var utils=require(_0xf368('0x12'));var config=require(_0xf368('0x13'));var licenseUtil=require(_0xf368('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2d2233,_0x39c751){_0x39c751=_0x39c751||0xcc;return function(_0x46bb9d){if(_0x46bb9d){return _0x2d2233['sendStatus'](_0x39c751);}return _0x2d2233[_0xf368('0x15')](_0x39c751)[_0xf368('0x16')]();};}function respondWithResult(_0xcfd1ae,_0x55eb0d){_0x55eb0d=_0x55eb0d||0xc8;return function(_0x161fce){if(_0x161fce){return _0xcfd1ae[_0xf368('0x15')](_0x55eb0d)[_0xf368('0x17')](_0x161fce);}};}function respondWithFilteredResult(_0x16bc36,_0x2ae8f5){return function(_0x29974c){if(_0x29974c){var _0x5c1d47=typeof _0x2ae8f5[_0xf368('0x18')]===_0xf368('0x19')&&typeof _0x2ae8f5['limit']===_0xf368('0x19');var _0x4bdffd=_0x29974c[_0xf368('0x1a')];var _0x14bef2=_0x5c1d47?0x0:_0x2ae8f5[_0xf368('0x18')];var _0x374317=_0x5c1d47?_0x29974c['count']:_0x2ae8f5[_0xf368('0x18')]+_0x2ae8f5['limit'];var _0x25f789;if(_0x374317>=_0x4bdffd){_0x374317=_0x4bdffd;_0x25f789=0xc8;}else{_0x25f789=0xce;}_0x16bc36[_0xf368('0x15')](_0x25f789);return _0x16bc36[_0xf368('0x1b')](_0xf368('0x1c'),_0x14bef2+'-'+_0x374317+'/'+_0x4bdffd)[_0xf368('0x17')](_0x29974c);}return null;};}function patchUpdates(_0x37d982){return function(_0x53c138){try{jsonpatch[_0xf368('0x1d')](_0x53c138,_0x37d982,!![]);}catch(_0x284f14){return BPromise[_0xf368('0x1e')](_0x284f14);}return _0x53c138[_0xf368('0x1f')]();};}function saveUpdates(_0x3eddb9,_0xa999c8){return function(_0x33a851){if(_0x33a851){return _0x33a851[_0xf368('0x20')](_0x3eddb9)[_0xf368('0x21')](function(_0x56c6b5){return _0x56c6b5;});}return null;};}function removeEntity(_0x3158c5,_0x232bd5){return function(_0x4fd9ae){if(_0x4fd9ae){return _0x4fd9ae[_0xf368('0x22')]()[_0xf368('0x21')](function(){var _0x3c1702=_0x4fd9ae['get']({'plain':!![]});var _0x35508e=_0xf368('0x23');return db[_0xf368('0x24')][_0xf368('0x22')]({'where':{'type':_0x35508e,'resourceId':_0x3c1702['id']}})[_0xf368('0x21')](function(){return _0x4fd9ae;});})[_0xf368('0x21')](function(){_0x3158c5[_0xf368('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b1a86,_0x34b9c5){return function(_0x17e3ff){if(!_0x17e3ff){_0x3b1a86[_0xf368('0x25')](0x194);}return _0x17e3ff;};}function handleError(_0x3dd0a7,_0x31059b){_0x31059b=_0x31059b||0x1f4;return function(_0x415d91){logger[_0xf368('0x26')](_0x415d91[_0xf368('0x27')]);if(_0x415d91['name']){delete _0x415d91[_0xf368('0x28')];}_0x3dd0a7[_0xf368('0x15')](_0x31059b)[_0xf368('0x29')](_0x415d91);};}exports[_0xf368('0x2a')]=function(_0x4e9d9a,_0x4b7a0f){var _0x71144f={},_0x591686={},_0x31c4ae={'count':0x0,'rows':[]};var _0x376f2d=_['map'](db[_0xf368('0x2b')][_0xf368('0x2c')],function(_0x723dad){return{'name':_0x723dad[_0xf368('0x2d')],'type':_0x723dad[_0xf368('0x2e')][_0xf368('0x2f')]};});_0x591686['model']=_[_0xf368('0x30')](_0x376f2d,_0xf368('0x28'));_0x591686['query']=_[_0xf368('0x31')](_0x4e9d9a[_0xf368('0x32')]);_0x591686[_0xf368('0x33')]=_[_0xf368('0x34')](_0x591686[_0xf368('0x35')],_0x591686['query']);_0x71144f[_0xf368('0x36')]=_[_0xf368('0x34')](_0x591686[_0xf368('0x35')],qs[_0xf368('0x37')](_0x4e9d9a['query']['fields']));_0x71144f['attributes']=_0x71144f['attributes'][_0xf368('0x38')]?_0x71144f['attributes']:_0x591686[_0xf368('0x35')];if(!_0x4e9d9a[_0xf368('0x32')]['hasOwnProperty'](_0xf368('0x39'))){_0x71144f['limit']=qs[_0xf368('0x3a')](_0x4e9d9a[_0xf368('0x32')]['limit']);_0x71144f[_0xf368('0x18')]=qs[_0xf368('0x18')](_0x4e9d9a[_0xf368('0x32')][_0xf368('0x18')]);}_0x71144f[_0xf368('0x3b')]=qs[_0xf368('0x3c')](_0x4e9d9a[_0xf368('0x32')]['sort']);_0x71144f['where']=qs['filters'](_[_0xf368('0x3d')](_0x4e9d9a[_0xf368('0x32')],_0x591686[_0xf368('0x33')]),_0x376f2d);if(_0x4e9d9a['query'][_0xf368('0x3e')]){_0x71144f[_0xf368('0x3f')]=_['merge'](_0x71144f[_0xf368('0x3f')],{'$or':_[_0xf368('0x30')](_0x376f2d,function(_0x392953){if(_0x392953[_0xf368('0x2e')]!==_0xf368('0x40')){var _0x2b42cc={};_0x2b42cc[_0x392953[_0xf368('0x28')]]={'$like':'%'+_0x4e9d9a['query']['filter']+'%'};return _0x2b42cc;}})});}_0x71144f=_[_0xf368('0x41')]({},_0x71144f,_0x4e9d9a[_0xf368('0x42')]);var _0x1d2aee={'where':_0x71144f['where']};return db[_0xf368('0x2b')][_0xf368('0x1a')](_0x1d2aee)[_0xf368('0x21')](function(_0x5ab4a8){_0x31c4ae[_0xf368('0x1a')]=_0x5ab4a8;if(_0x4e9d9a[_0xf368('0x32')]['includeAll']){_0x71144f[_0xf368('0x43')]=[{'all':!![]}];}return db[_0xf368('0x2b')][_0xf368('0x44')](_0x71144f);})[_0xf368('0x21')](function(_0x9a84cd){_0x31c4ae['rows']=_0x9a84cd;return _0x31c4ae;})['then'](respondWithFilteredResult(_0x4b7a0f,_0x71144f))[_0xf368('0x45')](handleError(_0x4b7a0f,null));};exports[_0xf368('0x46')]=function(_0x414ab2,_0x2673bf){var _0xd4f08c={'raw':!![],'where':{'id':_0x414ab2[_0xf368('0x47')]['id']}},_0x5bfedf={};_0x5bfedf[_0xf368('0x35')]=_[_0xf368('0x31')](db['AnalyticExtractedReport']['rawAttributes']);_0x5bfedf['query']=_['keys'](_0x414ab2['query']);_0x5bfedf[_0xf368('0x33')]=_[_0xf368('0x34')](_0x5bfedf[_0xf368('0x35')],_0x5bfedf[_0xf368('0x32')]);_0xd4f08c[_0xf368('0x36')]=_[_0xf368('0x34')](_0x5bfedf['model'],qs[_0xf368('0x37')](_0x414ab2[_0xf368('0x32')]['fields']));_0xd4f08c['attributes']=_0xd4f08c[_0xf368('0x36')][_0xf368('0x38')]?_0xd4f08c[_0xf368('0x36')]:_0x5bfedf[_0xf368('0x35')];if(_0x414ab2[_0xf368('0x32')][_0xf368('0x48')]){_0xd4f08c[_0xf368('0x43')]=[{'all':!![]}];}_0xd4f08c=_['merge']({},_0xd4f08c,_0x414ab2[_0xf368('0x42')]);return db[_0xf368('0x2b')]['find'](_0xd4f08c)['then'](handleEntityNotFound(_0x2673bf,null))[_0xf368('0x21')](respondWithResult(_0x2673bf,null))['catch'](handleError(_0x2673bf,null));};exports[_0xf368('0x49')]=function(_0x398a7c,_0x5ca820){return db[_0xf368('0x2b')][_0xf368('0x49')](_0x398a7c[_0xf368('0x4a')],{})[_0xf368('0x21')](function(_0x52b24c){var _0x2b6a0e=_0x398a7c[_0xf368('0x4b')][_0xf368('0x4c')]({'plain':!![]});if(!_0x2b6a0e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2b6a0e['role']===_0xf368('0x4b')){var _0x50e566=_0x52b24c[_0xf368('0x4c')]({'plain':!![]});var _0x5cdf65='ExtractedReports';return db[_0xf368('0x4d')][_0xf368('0x4e')]({'where':{'name':_0x5cdf65,'userProfileId':_0x2b6a0e['userProfileId']},'raw':!![]})[_0xf368('0x21')](function(_0x543326){if(_0x543326&&_0x543326['autoAssociation']===0x0){return db[_0xf368('0x24')][_0xf368('0x49')]({'name':_0x50e566['name'],'resourceId':_0x50e566['id'],'type':_0x543326[_0xf368('0x28')],'sectionId':_0x543326['id']},{})[_0xf368('0x21')](function(){return _0x52b24c;});}else{return _0x52b24c;}})['catch'](function(_0x1e24c9){logger['error'](_0xf368('0x4f'),_0x1e24c9);throw _0x1e24c9;});}return _0x52b24c;})[_0xf368('0x21')](respondWithResult(_0x5ca820,0xc9))['catch'](handleError(_0x5ca820,null));};exports['update']=function(_0x1985bf,_0xaec96a){if(_0x1985bf['body']['id']){delete _0x1985bf['body']['id'];}return db[_0xf368('0x2b')]['find']({'where':{'id':_0x1985bf[_0xf368('0x47')]['id']}})['then'](handleEntityNotFound(_0xaec96a,null))[_0xf368('0x21')](saveUpdates(_0x1985bf[_0xf368('0x4a')],null))['then'](respondWithResult(_0xaec96a,null))['catch'](handleError(_0xaec96a,null));};exports[_0xf368('0x22')]=function(_0x454029,_0x3adbf){return db[_0xf368('0x2b')][_0xf368('0x4e')]({'where':{'id':_0x454029['params']['id']}})[_0xf368('0x21')](handleEntityNotFound(_0x3adbf,null))['then'](removeEntity(_0x3adbf,null))['catch'](handleError(_0x3adbf,null));};exports['download']=function(_0x98d6db,_0x5d9e62,_0x28de7e){return db[_0xf368('0x2b')]['find']({'where':{'id':_0x98d6db[_0xf368('0x47')]['id']},'attributes':['name',_0xf368('0x50'),_0xf368('0x51'),_0xf368('0x52')],'raw':!![]})[_0xf368('0x21')](handleEntityNotFound(_0x5d9e62,null))[_0xf368('0x21')](function(_0x14f7ff){if(_0x14f7ff){if(!fs['existsSync'](path[_0xf368('0x53')](config['root'],_0xf368('0x54'),_0x14f7ff[_0xf368('0x51')]))){throw new db[(_0xf368('0x55'))][(_0xf368('0x56'))](_0xf368('0x57'));}if(_0x98d6db[_0xf368('0x32')]['exists']){return _0x5d9e62[_0xf368('0x25')](0xc8);}return _0x5d9e62['download'](path[_0xf368('0x53')](config[_0xf368('0x58')],_0xf368('0x54'),_0x14f7ff[_0xf368('0x51')]),util['format'](_0xf368('0x59'),_0x14f7ff['basename']||_0x14f7ff[_0xf368('0x28')],_0x14f7ff[_0xf368('0x52')]['toLowerCase']()));}})[_0xf368('0x45')](handleError(_0x5d9e62,null));};
\ No newline at end of file
index f5be4f5..7143ab4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4254=['AnalyticExtractedReport','analytics_extracted_reports','../../config/logger','api','moment','exports','define'];(function(_0x549246,_0x3f3ee1){var _0x52d1b2=function(_0x5c331d){while(--_0x5c331d){_0x549246['push'](_0x549246['shift']());}};_0x52d1b2(++_0x3f3ee1);}(_0x4254,0x79));var _0x4425=function(_0x2416f6,_0x57b60e){_0x2416f6=_0x2416f6-0x0;var _0x37641e=_0x4254[_0x2416f6];return _0x37641e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4425('0x0'))(_0x4425('0x1'));var moment=require(_0x4425('0x2'));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('./analyticExtractedReport.attributes');module[_0x4425('0x3')]=function(_0x3434fb,_0x11ebe5){return _0x3434fb[_0x4425('0x4')](_0x4425('0x5'),attributes,{'tableName':_0x4425('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc6b9=['api','moment','bluebird','path','../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport','analytics_extracted_reports','lodash'];(function(_0x36a06a,_0x1e480a){var _0x12cba9=function(_0x54e5dc){while(--_0x54e5dc){_0x36a06a['push'](_0x36a06a['shift']());}};_0x12cba9(++_0x1e480a);}(_0xc6b9,0x1ac));var _0x9c6b=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xc6b9[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x9c6b('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x9c6b('0x1'));var moment=require(_0x9c6b('0x2'));var BPromise=require(_0x9c6b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9c6b('0x4'));var rimraf=require('rimraf');var config=require(_0x9c6b('0x5'));var attributes=require(_0x9c6b('0x6'));module[_0x9c6b('0x7')]=function(_0x4ce6de,_0x5ed651){return _0x4ce6de[_0x9c6b('0x8')](_0x9c6b('0x9'),attributes,{'tableName':_0x9c6b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5835616..504e223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdec2=['debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticExtractedReport,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x2f70b3,_0x225cab){var _0x302f9c=function(_0xef057f){while(--_0xef057f){_0x2f70b3['push'](_0x2f70b3['shift']());}};_0x302f9c(++_0x225cab);}(_0xdec2,0x14a));var _0x2dec=function(_0x251d23,_0x2730f2){_0x251d23=_0x251d23-0x0;var _0xc557dc=_0xdec2[_0x251d23];return _0xc557dc;};'use strict';var _=require(_0x2dec('0x0'));var util=require(_0x2dec('0x1'));var moment=require(_0x2dec('0x2'));var BPromise=require(_0x2dec('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2dec('0x4'))['db'];var utils=require(_0x2dec('0x5'));var logger=require(_0x2dec('0x6'))('rpc');var config=require(_0x2dec('0x7'));var jayson=require(_0x2dec('0x8'));var client=jayson[_0x2dec('0x9')][_0x2dec('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1cf1df,_0x4d3b0f,_0x2f6724){return new BPromise(function(_0x27e64b,_0x154c72){return client[_0x2dec('0xb')](_0x1cf1df,_0x2f6724)[_0x2dec('0xc')](function(_0x5541b6){logger[_0x2dec('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4d3b0f,_0x2dec('0xe'));logger[_0x2dec('0xf')](_0x2dec('0x10'),_0x4d3b0f,_0x2dec('0xe'),JSON[_0x2dec('0x11')](_0x5541b6));if(_0x5541b6[_0x2dec('0x12')]){if(_0x5541b6['error'][_0x2dec('0x13')]===0x1f4){logger[_0x2dec('0x12')](_0x2dec('0x14'),_0x4d3b0f,_0x5541b6[_0x2dec('0x12')][_0x2dec('0x15')]);return _0x154c72(_0x5541b6[_0x2dec('0x12')]['message']);}logger[_0x2dec('0x12')](_0x2dec('0x14'),_0x4d3b0f,_0x5541b6[_0x2dec('0x12')][_0x2dec('0x15')]);return _0x27e64b(_0x5541b6[_0x2dec('0x12')][_0x2dec('0x15')]);}else{logger[_0x2dec('0xd')](_0x2dec('0x14'),_0x4d3b0f,_0x2dec('0xe'));_0x27e64b(_0x5541b6[_0x2dec('0x16')][_0x2dec('0x15')]);}})['catch'](function(_0xbaf479){logger[_0x2dec('0x12')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4d3b0f,_0xbaf479);_0x154c72(_0xbaf479);});});}
\ No newline at end of file
+var _0x6a19=['result','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','AnalyticExtractedReport,\x20%s,\x20%s','debug','request\x20sent','error','message'];(function(_0x2cb584,_0x2ebd){var _0x446eda=function(_0x1a596d){while(--_0x1a596d){_0x2cb584['push'](_0x2cb584['shift']());}};_0x446eda(++_0x2ebd);}(_0x6a19,0x144));var _0x96a1=function(_0xe2523,_0x32e4c8){_0xe2523=_0xe2523-0x0;var _0x1ee20a=_0x6a19[_0xe2523];return _0x1ee20a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x96a1('0x0'));var BPromise=require(_0x96a1('0x1'));var rs=require(_0x96a1('0x2'));var fs=require('fs');var Redis=require(_0x96a1('0x3'));var db=require(_0x96a1('0x4'))['db'];var utils=require(_0x96a1('0x5'));var logger=require(_0x96a1('0x6'))(_0x96a1('0x7'));var config=require(_0x96a1('0x8'));var jayson=require(_0x96a1('0x9'));var client=jayson[_0x96a1('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4fe712,_0x173eb0,_0xb84ff5){return new BPromise(function(_0x5debbd,_0x10929c){return client[_0x96a1('0xb')](_0x4fe712,_0xb84ff5)[_0x96a1('0xc')](function(_0x38629b){logger['info'](_0x96a1('0xd'),_0x173eb0,'request\x20sent');logger[_0x96a1('0xe')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x173eb0,_0x96a1('0xf'),JSON['stringify'](_0x38629b));if(_0x38629b[_0x96a1('0x10')]){if(_0x38629b[_0x96a1('0x10')]['code']===0x1f4){logger[_0x96a1('0x10')](_0x96a1('0xd'),_0x173eb0,_0x38629b[_0x96a1('0x10')][_0x96a1('0x11')]);return _0x10929c(_0x38629b[_0x96a1('0x10')][_0x96a1('0x11')]);}logger[_0x96a1('0x10')](_0x96a1('0xd'),_0x173eb0,_0x38629b['error'][_0x96a1('0x11')]);return _0x5debbd(_0x38629b[_0x96a1('0x10')]['message']);}else{logger['info'](_0x96a1('0xd'),_0x173eb0,_0x96a1('0xf'));_0x5debbd(_0x38629b[_0x96a1('0x12')][_0x96a1('0x11')]);}})['catch'](function(_0x3a0c51){logger[_0x96a1('0x10')](_0x96a1('0xd'),_0x173eb0,_0x3a0c51);_0x10929c(_0x3a0c51);});});}
\ No newline at end of file
index 6e789c8..ee9d1c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad02=['../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','/:id/download','download','post','create','put','/:id','update','delete','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x26f22b,_0x5c77fc){var _0x4bf48f=function(_0x41c49d){while(--_0x41c49d){_0x26f22b['push'](_0x26f22b['shift']());}};_0x4bf48f(++_0x5c77fc);}(_0xad02,0xde));var _0x2ad0=function(_0x1488cd,_0x25a893){_0x1488cd=_0x1488cd-0x0;var _0x63fa13=_0xad02[_0x1488cd];return _0x63fa13;};'use strict';var multer=require('multer');var util=require(_0x2ad0('0x0'));var path=require('path');var timeout=require(_0x2ad0('0x1'));var express=require('express');var router=express[_0x2ad0('0x2')]();var fs_extra=require(_0x2ad0('0x3'));var auth=require(_0x2ad0('0x4'));var interaction=require(_0x2ad0('0x5'));var config=require(_0x2ad0('0x6'));var controller=require(_0x2ad0('0x7'));router[_0x2ad0('0x8')]('/',auth[_0x2ad0('0x9')](),controller['index']);router[_0x2ad0('0x8')]('/:id',auth[_0x2ad0('0x9')](),controller['show']);router[_0x2ad0('0x8')](_0x2ad0('0xa'),auth[_0x2ad0('0x9')](),controller[_0x2ad0('0xb')]);router[_0x2ad0('0xc')]('/',auth[_0x2ad0('0x9')](),controller[_0x2ad0('0xd')]);router[_0x2ad0('0xe')](_0x2ad0('0xf'),auth[_0x2ad0('0x9')](),controller[_0x2ad0('0x10')]);router[_0x2ad0('0x11')](_0x2ad0('0xf'),auth[_0x2ad0('0x9')](),controller['destroy']);module[_0x2ad0('0x12')]=router;
\ No newline at end of file
+var _0xa49b=['./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x5e36d1,_0x471178){var _0x950b9e=function(_0x1872f3){while(--_0x1872f3){_0x5e36d1['push'](_0x5e36d1['shift']());}};_0x950b9e(++_0x471178);}(_0xa49b,0x1af));var _0xba49=function(_0x7144d2,_0x3c78f8){_0x7144d2=_0x7144d2-0x0;var _0x59bb7c=_0xa49b[_0x7144d2];return _0x59bb7c;};'use strict';var multer=require(_0xba49('0x0'));var util=require(_0xba49('0x1'));var path=require(_0xba49('0x2'));var timeout=require(_0xba49('0x3'));var express=require(_0xba49('0x4'));var router=express[_0xba49('0x5')]();var fs_extra=require(_0xba49('0x6'));var auth=require(_0xba49('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xba49('0x8'));var controller=require(_0xba49('0x9'));router[_0xba49('0xa')]('/',auth[_0xba49('0xb')](),controller[_0xba49('0xc')]);router[_0xba49('0xa')](_0xba49('0xd'),auth[_0xba49('0xb')](),controller[_0xba49('0xe')]);router[_0xba49('0xa')](_0xba49('0xf'),auth[_0xba49('0xb')](),controller[_0xba49('0x10')]);router['post']('/',auth[_0xba49('0xb')](),controller[_0xba49('0x11')]);router[_0xba49('0x12')](_0xba49('0xd'),auth[_0xba49('0xb')](),controller[_0xba49('0x13')]);router['delete']('/:id',auth[_0xba49('0xb')](),controller[_0xba49('0x14')]);module[_0xba49('0x15')]=router;
\ No newline at end of file
index fa85b00..2baed98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd770=['exports','TEXT','STRING','BOOLEAN','sequelize'];(function(_0x520e13,_0x1a7084){var _0x5a3975=function(_0x3290b2){while(--_0x3290b2){_0x520e13['push'](_0x520e13['shift']());}};_0x5a3975(++_0x1a7084);}(_0xd770,0xfe));var _0x0d77=function(_0x5f2db0,_0x5e01fd){_0x5f2db0=_0x5f2db0-0x0;var _0x1343c5=_0xd770[_0x5f2db0];return _0x1343c5;};'use strict';var Sequelize=require(_0x0d77('0x0'));module[_0x0d77('0x1')]={'field':{'type':Sequelize[_0x0d77('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0x0d77('0x3')]},'format':{'type':Sequelize[_0x0d77('0x3')]},'groupBy':{'type':Sequelize[_0x0d77('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x0d77('0x3')]},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x0afd=['TEXT','STRING','BOOLEAN','exports'];(function(_0x14cb55,_0x1c88f7){var _0x3c6832=function(_0x4c087d){while(--_0x4c087d){_0x14cb55['push'](_0x14cb55['shift']());}};_0x3c6832(++_0x1c88f7);}(_0x0afd,0x17b));var _0xd0af=function(_0x3a2f80,_0x551e8d){_0x3a2f80=_0x3a2f80-0x0;var _0x385eca=_0x0afd[_0x3a2f80];return _0x385eca;};'use strict';var Sequelize=require('sequelize');module[_0xd0af('0x0')]={'field':{'type':Sequelize[_0xd0af('0x1')]},'alias':{'type':Sequelize[_0xd0af('0x2')]},'function':{'type':Sequelize[_0xd0af('0x2')]},'format':{'type':Sequelize[_0xd0af('0x2')]},'groupBy':{'type':Sequelize[_0xd0af('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xd0af('0x2')]},'custom':{'type':Sequelize[_0xd0af('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 478f828..4127699 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x979d=['nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','AnalyticFieldReport','includeAll','include','rows','catch','intersection','find','create','body','bulkCreate','params','ids','addFields','AnalyticCustomReport','sequelize','transaction','CustomReportId','findAll','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','count','set','apply','save','update','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','attributes','fields','length','hasOwnProperty'];(function(_0x40c58d,_0xca539f){var _0x2a8381=function(_0x4a1f4d){while(--_0x4a1f4d){_0x40c58d['push'](_0x40c58d['shift']());}};_0x2a8381(++_0xca539f);}(_0x979d,0x1a2));var _0xd979=function(_0x23278f,_0x360004){_0x23278f=_0x23278f-0x0;var _0x307d3e=_0x979d[_0x23278f];return _0x307d3e;};'use strict';var emlformat=require(_0xd979('0x0'));var rimraf=require(_0xd979('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd979('0x2'));var moment=require(_0xd979('0x3'));var BPromise=require(_0xd979('0x4'));var Mustache=require(_0xd979('0x5'));var util=require('util');var path=require(_0xd979('0x6'));var sox=require('sox');var csv=require(_0xd979('0x7'));var ejs=require(_0xd979('0x8'));var fs=require('fs');var fs_extra=require(_0xd979('0x9'));var _=require(_0xd979('0xa'));var squel=require(_0xd979('0xb'));var crypto=require(_0xd979('0xc'));var jsforce=require(_0xd979('0xd'));var deskjs=require(_0xd979('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd979('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd979('0x10'));var as=require(_0xd979('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd979('0x12'));var utils=require(_0xd979('0x13'));var config=require(_0xd979('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xd979('0x15'))['db'];function respondWithStatusCode(_0x4188a9,_0x368292){_0x368292=_0x368292||0xcc;return function(_0x2fa55d){if(_0x2fa55d){return _0x4188a9[_0xd979('0x16')](_0x368292);}return _0x4188a9[_0xd979('0x17')](_0x368292)[_0xd979('0x18')]();};}function respondWithResult(_0x1b366b,_0x525ca4){_0x525ca4=_0x525ca4||0xc8;return function(_0x4e28e0){if(_0x4e28e0){return _0x1b366b['status'](_0x525ca4)['json'](_0x4e28e0);}};}function respondWithFilteredResult(_0x543bd1,_0x586ed0){return function(_0x5cc0dd){if(_0x5cc0dd){var _0x1f012c=typeof _0x586ed0[_0xd979('0x19')]==='undefined'&&typeof _0x586ed0[_0xd979('0x1a')]==='undefined';var _0x230277=_0x5cc0dd[_0xd979('0x1b')];var _0xc8c42=_0x1f012c?0x0:_0x586ed0['offset'];var _0x4c3197=_0x1f012c?_0x5cc0dd['count']:_0x586ed0[_0xd979('0x19')]+_0x586ed0['limit'];var _0x36fc8d;if(_0x4c3197>=_0x230277){_0x4c3197=_0x230277;_0x36fc8d=0xc8;}else{_0x36fc8d=0xce;}_0x543bd1[_0xd979('0x17')](_0x36fc8d);return _0x543bd1[_0xd979('0x1c')]('Content-Range',_0xc8c42+'-'+_0x4c3197+'/'+_0x230277)['json'](_0x5cc0dd);}return null;};}function patchUpdates(_0x220491){return function(_0x4fe578){try{jsonpatch[_0xd979('0x1d')](_0x4fe578,_0x220491,!![]);}catch(_0x40c470){return BPromise['reject'](_0x40c470);}return _0x4fe578[_0xd979('0x1e')]();};}function saveUpdates(_0x3987b2,_0x35ea8b){return function(_0x44cecc){if(_0x44cecc){return _0x44cecc[_0xd979('0x1f')](_0x3987b2)[_0xd979('0x20')](function(_0x4c29c5){return _0x4c29c5;});}return null;};}function removeEntity(_0x367366,_0x3326d6){return function(_0x206421){if(_0x206421){return _0x206421[_0xd979('0x21')]()['then'](function(){_0x367366[_0xd979('0x17')](0xcc)[_0xd979('0x18')]();});}};}function handleEntityNotFound(_0x34ac95,_0x2b0a53){return function(_0x1cc3fb){if(!_0x1cc3fb){_0x34ac95[_0xd979('0x16')](0x194);}return _0x1cc3fb;};}function handleError(_0x3423fc,_0x25d291){_0x25d291=_0x25d291||0x1f4;return function(_0x5a32e8){logger[_0xd979('0x22')](_0x5a32e8[_0xd979('0x23')]);if(_0x5a32e8['name']){delete _0x5a32e8[_0xd979('0x24')];}_0x3423fc[_0xd979('0x17')](_0x25d291)['send'](_0x5a32e8);};}exports[_0xd979('0x25')]=function(_0x98bab,_0x1f95d3){var _0x2c93a0={},_0x183987={},_0x127205={'count':0x0,'rows':[]};var _0x32ba66=_[_0xd979('0x26')](db['AnalyticFieldReport'][_0xd979('0x27')],function(_0x2380cc){return{'name':_0x2380cc[_0xd979('0x28')],'type':_0x2380cc[_0xd979('0x29')][_0xd979('0x2a')]};});_0x183987[_0xd979('0x2b')]=_[_0xd979('0x26')](_0x32ba66,_0xd979('0x24'));_0x183987[_0xd979('0x2c')]=_[_0xd979('0x2d')](_0x98bab[_0xd979('0x2c')]);_0x183987['filters']=_['intersection'](_0x183987[_0xd979('0x2b')],_0x183987[_0xd979('0x2c')]);_0x2c93a0[_0xd979('0x2e')]=_['intersection'](_0x183987[_0xd979('0x2b')],qs[_0xd979('0x2f')](_0x98bab[_0xd979('0x2c')][_0xd979('0x2f')]));_0x2c93a0[_0xd979('0x2e')]=_0x2c93a0[_0xd979('0x2e')][_0xd979('0x30')]?_0x2c93a0[_0xd979('0x2e')]:_0x183987[_0xd979('0x2b')];if(!_0x98bab[_0xd979('0x2c')][_0xd979('0x31')](_0xd979('0x32'))){_0x2c93a0[_0xd979('0x1a')]=qs[_0xd979('0x1a')](_0x98bab[_0xd979('0x2c')][_0xd979('0x1a')]);_0x2c93a0[_0xd979('0x19')]=qs['offset'](_0x98bab['query']['offset']);}_0x2c93a0[_0xd979('0x33')]=qs[_0xd979('0x34')](_0x98bab[_0xd979('0x2c')][_0xd979('0x34')]);_0x2c93a0[_0xd979('0x35')]=qs[_0xd979('0x36')](_[_0xd979('0x37')](_0x98bab[_0xd979('0x2c')],_0x183987[_0xd979('0x36')]),_0x32ba66);if(_0x98bab[_0xd979('0x2c')]['filter']){_0x2c93a0[_0xd979('0x35')]=_[_0xd979('0x38')](_0x2c93a0[_0xd979('0x35')],{'$or':_[_0xd979('0x26')](_0x32ba66,function(_0xea6543){if(_0xea6543[_0xd979('0x29')]!==_0xd979('0x39')){var _0x48f8d6={};_0x48f8d6[_0xea6543[_0xd979('0x24')]]={'$like':'%'+_0x98bab[_0xd979('0x2c')][_0xd979('0x3a')]+'%'};return _0x48f8d6;}})});}_0x2c93a0=_['merge']({},_0x2c93a0,_0x98bab[_0xd979('0x3b')]);var _0x21235c={'where':_0x2c93a0['where']};return db[_0xd979('0x3c')][_0xd979('0x1b')](_0x21235c)['then'](function(_0x11a2b3){_0x127205[_0xd979('0x1b')]=_0x11a2b3;if(_0x98bab['query'][_0xd979('0x3d')]){_0x2c93a0[_0xd979('0x3e')]=[{'all':!![]}];}return db['AnalyticFieldReport']['findAll'](_0x2c93a0);})[_0xd979('0x20')](function(_0x5d74eb){_0x127205[_0xd979('0x3f')]=_0x5d74eb;return _0x127205;})['then'](respondWithFilteredResult(_0x1f95d3,_0x2c93a0))[_0xd979('0x40')](handleError(_0x1f95d3,null));};exports['show']=function(_0x5a712b,_0x2aa864){var _0x16c2e7={'raw':![],'where':{'id':_0x5a712b['params']['id']}},_0x5bf84f={};_0x5bf84f[_0xd979('0x2b')]=_[_0xd979('0x2d')](db[_0xd979('0x3c')]['rawAttributes']);_0x5bf84f[_0xd979('0x2c')]=_[_0xd979('0x2d')](_0x5a712b[_0xd979('0x2c')]);_0x5bf84f['filters']=_['intersection'](_0x5bf84f['model'],_0x5bf84f[_0xd979('0x2c')]);_0x16c2e7[_0xd979('0x2e')]=_[_0xd979('0x41')](_0x5bf84f['model'],qs[_0xd979('0x2f')](_0x5a712b[_0xd979('0x2c')]['fields']));_0x16c2e7[_0xd979('0x2e')]=_0x16c2e7['attributes'][_0xd979('0x30')]?_0x16c2e7[_0xd979('0x2e')]:_0x5bf84f[_0xd979('0x2b')];if(_0x5a712b[_0xd979('0x2c')][_0xd979('0x3d')]){_0x16c2e7[_0xd979('0x3e')]=[{'all':!![]}];}_0x16c2e7=_[_0xd979('0x38')]({},_0x16c2e7,_0x5a712b['options']);return db[_0xd979('0x3c')][_0xd979('0x42')](_0x16c2e7)[_0xd979('0x20')](handleEntityNotFound(_0x2aa864,null))['then'](respondWithResult(_0x2aa864,null))[_0xd979('0x40')](handleError(_0x2aa864,null));};exports[_0xd979('0x43')]=function(_0x417615,_0x3e9611){return db[_0xd979('0x3c')]['create'](_0x417615[_0xd979('0x44')],{})['then'](respondWithResult(_0x3e9611,0xc9))[_0xd979('0x40')](handleError(_0x3e9611,null));};exports['bulkCreate']=function(_0x10a3cb,_0x2587da){return db[_0xd979('0x3c')][_0xd979('0x45')](_0x10a3cb[_0xd979('0x44')],{'raw':![],'individualHooks':!![]})[_0xd979('0x20')](respondWithResult(_0x2587da,0xc9))[_0xd979('0x40')](handleError(_0x2587da,null));};exports[_0xd979('0x1f')]=function(_0x59ed01,_0x50c484){if(_0x59ed01[_0xd979('0x44')]['id']){delete _0x59ed01['body']['id'];}return db[_0xd979('0x3c')][_0xd979('0x42')]({'where':{'id':_0x59ed01[_0xd979('0x46')]['id']}})[_0xd979('0x20')](handleEntityNotFound(_0x50c484,null))['then'](saveUpdates(_0x59ed01[_0xd979('0x44')],null))[_0xd979('0x20')](respondWithResult(_0x50c484,null))[_0xd979('0x40')](handleError(_0x50c484,null));};exports['destroy']=function(_0x454310,_0x39915d){return db[_0xd979('0x3c')][_0xd979('0x42')]({'where':{'id':_0x454310[_0xd979('0x46')]['id']}})[_0xd979('0x20')](handleEntityNotFound(_0x39915d,null))[_0xd979('0x20')](removeEntity(_0x39915d,null))[_0xd979('0x40')](handleError(_0x39915d,null));};exports['bulkDestroy']=function(_0x3f6814,_0x7fc739){return db[_0xd979('0x3c')][_0xd979('0x21')]({'where':{'id':_0x3f6814['query'][_0xd979('0x47')]||[]},'raw':![],'individualHooks':!![]})[_0xd979('0x20')](respondWithResult(_0x7fc739,0xcc))[_0xd979('0x40')](handleError(_0x7fc739,null));};exports[_0xd979('0x48')]=function(_0xdeafe4,_0x423773,_0x1fb91c){return db[_0xd979('0x49')]['findOne']({'where':{'id':_0xdeafe4[_0xd979('0x46')]['id']}})[_0xd979('0x20')](handleEntityNotFound(_0x423773,null))['then'](function(_0x4c843d){if(_0x4c843d){return db[_0xd979('0x4a')][_0xd979('0x4b')](function(_0x2f700f){return db[_0xd979('0x3c')][_0xd979('0x21')]({'where':{'CustomReportId':_0xdeafe4[_0xd979('0x46')]['id']},'transaction':_0x2f700f})['then'](function(_0x4143d4){var _0x544c24=_[_0xd979('0x26')](_0xdeafe4[_0xd979('0x44')],function(_0x543c9b){delete _0x543c9b['id'];_0x543c9b[_0xd979('0x4c')]=_0xdeafe4[_0xd979('0x46')]['id'];return _0x543c9b;});return db[_0xd979('0x3c')][_0xd979('0x45')](_0x544c24,{'transaction':_0x2f700f});});})[_0xd979('0x20')](function(){return db[_0xd979('0x3c')][_0xd979('0x4d')]({'where':{'CustomReportId':_0xdeafe4[_0xd979('0x46')]['id']}});});}})[_0xd979('0x20')](respondWithResult(_0x423773,null))[_0xd979('0x40')](handleError(_0x423773,null));};
\ No newline at end of file
+var _0xb5bb=['nolimit','order','sort','merge','type','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','intersection','includeAll','create','body','bulkCreate','find','destroy','ids','AnalyticCustomReport','findOne','sequelize','transaction','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','name','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','model','query','keys','filters','fields','attributes','length','hasOwnProperty'];(function(_0x411d88,_0x1e4ebd){var _0x3eb64b=function(_0x363d91){while(--_0x363d91){_0x411d88['push'](_0x411d88['shift']());}};_0x3eb64b(++_0x1e4ebd);}(_0xb5bb,0x1a0));var _0xbb5b=function(_0x4c9d8b,_0x1ce7ad){_0x4c9d8b=_0x4c9d8b-0x0;var _0x4b6758=_0xb5bb[_0x4c9d8b];return _0x4b6758;};'use strict';var emlformat=require(_0xbb5b('0x0'));var rimraf=require(_0xbb5b('0x1'));var zipdir=require(_0xbb5b('0x2'));var jsonpatch=require(_0xbb5b('0x3'));var rp=require(_0xbb5b('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xbb5b('0x5'));var util=require('util');var path=require(_0xbb5b('0x6'));var sox=require(_0xbb5b('0x7'));var csv=require(_0xbb5b('0x8'));var ejs=require(_0xbb5b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbb5b('0xa'));var squel=require(_0xbb5b('0xb'));var crypto=require(_0xbb5b('0xc'));var jsforce=require(_0xbb5b('0xd'));var deskjs=require(_0xbb5b('0xe'));var toCsv=require(_0xbb5b('0x8'));var querystring=require(_0xbb5b('0xf'));var Papa=require(_0xbb5b('0x10'));var Redis=require(_0xbb5b('0x11'));var authService=require(_0xbb5b('0x12'));var qs=require(_0xbb5b('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xbb5b('0x14'));var licenseUtil=require(_0xbb5b('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5b174d,_0x12a201){_0x12a201=_0x12a201||0xcc;return function(_0x3bd87c){if(_0x3bd87c){return _0x5b174d[_0xbb5b('0x16')](_0x12a201);}return _0x5b174d[_0xbb5b('0x17')](_0x12a201)[_0xbb5b('0x18')]();};}function respondWithResult(_0xf8777a,_0x5e8010){_0x5e8010=_0x5e8010||0xc8;return function(_0x35f230){if(_0x35f230){return _0xf8777a[_0xbb5b('0x17')](_0x5e8010)[_0xbb5b('0x19')](_0x35f230);}};}function respondWithFilteredResult(_0x35d1a3,_0x280420){return function(_0x3c0670){if(_0x3c0670){var _0xefee85=typeof _0x280420[_0xbb5b('0x1a')]===_0xbb5b('0x1b')&&typeof _0x280420[_0xbb5b('0x1c')]==='undefined';var _0xad9c36=_0x3c0670[_0xbb5b('0x1d')];var _0x479bc1=_0xefee85?0x0:_0x280420[_0xbb5b('0x1a')];var _0x31e5e7=_0xefee85?_0x3c0670['count']:_0x280420[_0xbb5b('0x1a')]+_0x280420['limit'];var _0x17d0c4;if(_0x31e5e7>=_0xad9c36){_0x31e5e7=_0xad9c36;_0x17d0c4=0xc8;}else{_0x17d0c4=0xce;}_0x35d1a3[_0xbb5b('0x17')](_0x17d0c4);return _0x35d1a3[_0xbb5b('0x1e')](_0xbb5b('0x1f'),_0x479bc1+'-'+_0x31e5e7+'/'+_0xad9c36)[_0xbb5b('0x19')](_0x3c0670);}return null;};}function patchUpdates(_0x235378){return function(_0x159638){try{jsonpatch[_0xbb5b('0x20')](_0x159638,_0x235378,!![]);}catch(_0x1f1fc0){return BPromise[_0xbb5b('0x21')](_0x1f1fc0);}return _0x159638[_0xbb5b('0x22')]();};}function saveUpdates(_0x5d4e0b,_0x3dd4b0){return function(_0x5e6a49){if(_0x5e6a49){return _0x5e6a49[_0xbb5b('0x23')](_0x5d4e0b)[_0xbb5b('0x24')](function(_0xd1ea7a){return _0xd1ea7a;});}return null;};}function removeEntity(_0x3a0eaa,_0x470e86){return function(_0x1264e4){if(_0x1264e4){return _0x1264e4['destroy']()[_0xbb5b('0x24')](function(){_0x3a0eaa[_0xbb5b('0x17')](0xcc)[_0xbb5b('0x18')]();});}};}function handleEntityNotFound(_0x273e4d,_0x445f73){return function(_0x59bf65){if(!_0x59bf65){_0x273e4d['sendStatus'](0x194);}return _0x59bf65;};}function handleError(_0x5c843b,_0xdc759d){_0xdc759d=_0xdc759d||0x1f4;return function(_0x265afb){logger['error'](_0x265afb['stack']);if(_0x265afb[_0xbb5b('0x25')]){delete _0x265afb[_0xbb5b('0x25')];}_0x5c843b['status'](_0xdc759d)[_0xbb5b('0x26')](_0x265afb);};}exports[_0xbb5b('0x27')]=function(_0x3d00d5,_0xaa494d){var _0x18129e={},_0x56bd6c={},_0xe5e1b9={'count':0x0,'rows':[]};var _0x237cd9=_[_0xbb5b('0x28')](db[_0xbb5b('0x29')][_0xbb5b('0x2a')],function(_0x506fc7){return{'name':_0x506fc7[_0xbb5b('0x2b')],'type':_0x506fc7['type']['key']};});_0x56bd6c[_0xbb5b('0x2c')]=_['map'](_0x237cd9,'name');_0x56bd6c[_0xbb5b('0x2d')]=_[_0xbb5b('0x2e')](_0x3d00d5[_0xbb5b('0x2d')]);_0x56bd6c[_0xbb5b('0x2f')]=_['intersection'](_0x56bd6c[_0xbb5b('0x2c')],_0x56bd6c['query']);_0x18129e['attributes']=_['intersection'](_0x56bd6c['model'],qs['fields'](_0x3d00d5['query'][_0xbb5b('0x30')]));_0x18129e[_0xbb5b('0x31')]=_0x18129e[_0xbb5b('0x31')][_0xbb5b('0x32')]?_0x18129e[_0xbb5b('0x31')]:_0x56bd6c[_0xbb5b('0x2c')];if(!_0x3d00d5['query'][_0xbb5b('0x33')](_0xbb5b('0x34'))){_0x18129e['limit']=qs['limit'](_0x3d00d5[_0xbb5b('0x2d')][_0xbb5b('0x1c')]);_0x18129e[_0xbb5b('0x1a')]=qs[_0xbb5b('0x1a')](_0x3d00d5['query'][_0xbb5b('0x1a')]);}_0x18129e[_0xbb5b('0x35')]=qs[_0xbb5b('0x36')](_0x3d00d5['query']['sort']);_0x18129e['where']=qs['filters'](_['pick'](_0x3d00d5['query'],_0x56bd6c[_0xbb5b('0x2f')]),_0x237cd9);if(_0x3d00d5['query']['filter']){_0x18129e['where']=_[_0xbb5b('0x37')](_0x18129e['where'],{'$or':_[_0xbb5b('0x28')](_0x237cd9,function(_0x47560e){if(_0x47560e[_0xbb5b('0x38')]!==_0xbb5b('0x39')){var _0x2e00fb={};_0x2e00fb[_0x47560e['name']]={'$like':'%'+_0x3d00d5[_0xbb5b('0x2d')][_0xbb5b('0x3a')]+'%'};return _0x2e00fb;}})});}_0x18129e=_[_0xbb5b('0x37')]({},_0x18129e,_0x3d00d5[_0xbb5b('0x3b')]);var _0xbc3851={'where':_0x18129e['where']};return db[_0xbb5b('0x29')][_0xbb5b('0x1d')](_0xbc3851)['then'](function(_0x25c992){_0xe5e1b9[_0xbb5b('0x1d')]=_0x25c992;if(_0x3d00d5[_0xbb5b('0x2d')]['includeAll']){_0x18129e[_0xbb5b('0x3c')]=[{'all':!![]}];}return db[_0xbb5b('0x29')][_0xbb5b('0x3d')](_0x18129e);})[_0xbb5b('0x24')](function(_0x273ac1){_0xe5e1b9[_0xbb5b('0x3e')]=_0x273ac1;return _0xe5e1b9;})[_0xbb5b('0x24')](respondWithFilteredResult(_0xaa494d,_0x18129e))[_0xbb5b('0x3f')](handleError(_0xaa494d,null));};exports[_0xbb5b('0x40')]=function(_0x4b25f6,_0x1056ad){var _0x6c7018={'raw':![],'where':{'id':_0x4b25f6[_0xbb5b('0x41')]['id']}},_0x124336={};_0x124336[_0xbb5b('0x2c')]=_[_0xbb5b('0x2e')](db[_0xbb5b('0x29')][_0xbb5b('0x2a')]);_0x124336[_0xbb5b('0x2d')]=_[_0xbb5b('0x2e')](_0x4b25f6[_0xbb5b('0x2d')]);_0x124336[_0xbb5b('0x2f')]=_[_0xbb5b('0x42')](_0x124336['model'],_0x124336[_0xbb5b('0x2d')]);_0x6c7018[_0xbb5b('0x31')]=_[_0xbb5b('0x42')](_0x124336[_0xbb5b('0x2c')],qs[_0xbb5b('0x30')](_0x4b25f6[_0xbb5b('0x2d')][_0xbb5b('0x30')]));_0x6c7018[_0xbb5b('0x31')]=_0x6c7018[_0xbb5b('0x31')][_0xbb5b('0x32')]?_0x6c7018[_0xbb5b('0x31')]:_0x124336[_0xbb5b('0x2c')];if(_0x4b25f6['query'][_0xbb5b('0x43')]){_0x6c7018[_0xbb5b('0x3c')]=[{'all':!![]}];}_0x6c7018=_['merge']({},_0x6c7018,_0x4b25f6['options']);return db[_0xbb5b('0x29')]['find'](_0x6c7018)['then'](handleEntityNotFound(_0x1056ad,null))['then'](respondWithResult(_0x1056ad,null))['catch'](handleError(_0x1056ad,null));};exports[_0xbb5b('0x44')]=function(_0x581e5f,_0xee84cd){return db['AnalyticFieldReport'][_0xbb5b('0x44')](_0x581e5f[_0xbb5b('0x45')],{})[_0xbb5b('0x24')](respondWithResult(_0xee84cd,0xc9))['catch'](handleError(_0xee84cd,null));};exports[_0xbb5b('0x46')]=function(_0x25bc69,_0xeb9b26){return db[_0xbb5b('0x29')]['bulkCreate'](_0x25bc69[_0xbb5b('0x45')],{'raw':![],'individualHooks':!![]})[_0xbb5b('0x24')](respondWithResult(_0xeb9b26,0xc9))[_0xbb5b('0x3f')](handleError(_0xeb9b26,null));};exports[_0xbb5b('0x23')]=function(_0x238b25,_0x51f910){if(_0x238b25['body']['id']){delete _0x238b25['body']['id'];}return db[_0xbb5b('0x29')][_0xbb5b('0x47')]({'where':{'id':_0x238b25[_0xbb5b('0x41')]['id']}})[_0xbb5b('0x24')](handleEntityNotFound(_0x51f910,null))['then'](saveUpdates(_0x238b25['body'],null))[_0xbb5b('0x24')](respondWithResult(_0x51f910,null))['catch'](handleError(_0x51f910,null));};exports[_0xbb5b('0x48')]=function(_0x389b47,_0x35c3b8){return db[_0xbb5b('0x29')][_0xbb5b('0x47')]({'where':{'id':_0x389b47[_0xbb5b('0x41')]['id']}})[_0xbb5b('0x24')](handleEntityNotFound(_0x35c3b8,null))['then'](removeEntity(_0x35c3b8,null))['catch'](handleError(_0x35c3b8,null));};exports['bulkDestroy']=function(_0x1f7803,_0x269846){return db[_0xbb5b('0x29')][_0xbb5b('0x48')]({'where':{'id':_0x1f7803['query'][_0xbb5b('0x49')]||[]},'raw':![],'individualHooks':!![]})[_0xbb5b('0x24')](respondWithResult(_0x269846,0xcc))[_0xbb5b('0x3f')](handleError(_0x269846,null));};exports['addFields']=function(_0x1b6232,_0x460a29,_0x56e774){return db[_0xbb5b('0x4a')][_0xbb5b('0x4b')]({'where':{'id':_0x1b6232['params']['id']}})[_0xbb5b('0x24')](handleEntityNotFound(_0x460a29,null))['then'](function(_0xb3a6b8){if(_0xb3a6b8){return db[_0xbb5b('0x4c')][_0xbb5b('0x4d')](function(_0x537372){return db[_0xbb5b('0x29')][_0xbb5b('0x48')]({'where':{'CustomReportId':_0x1b6232[_0xbb5b('0x41')]['id']},'transaction':_0x537372})[_0xbb5b('0x24')](function(_0x1d6a68){var _0x10e1f8=_[_0xbb5b('0x28')](_0x1b6232[_0xbb5b('0x45')],function(_0x2299bd){delete _0x2299bd['id'];_0x2299bd['CustomReportId']=_0x1b6232[_0xbb5b('0x41')]['id'];return _0x2299bd;});return db[_0xbb5b('0x29')][_0xbb5b('0x46')](_0x10e1f8,{'transaction':_0x537372});});})['then'](function(){return db['AnalyticFieldReport'][_0xbb5b('0x3d')]({'where':{'CustomReportId':_0x1b6232['params']['id']}});});}})[_0xbb5b('0x24')](respondWithResult(_0x460a29,null))[_0xbb5b('0x3f')](handleError(_0x460a29,null));};
\ No newline at end of file
index 5773b5e..7eec9fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb790=['AnalyticFieldReport','analytics_report_fields','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./analyticFieldReport.attributes','exports','define'];(function(_0x158f01,_0x12af3e){var _0x5ef74e=function(_0x5e7adc){while(--_0x5e7adc){_0x158f01['push'](_0x158f01['shift']());}};_0x5ef74e(++_0x12af3e);}(_0xb790,0x77));var _0x0b79=function(_0x149319,_0x4182b5){_0x149319=_0x149319-0x0;var _0x4637c9=_0xb790[_0x149319];return _0x4637c9;};'use strict';var _=require(_0x0b79('0x0'));var util=require(_0x0b79('0x1'));var logger=require(_0x0b79('0x2'))(_0x0b79('0x3'));var moment=require(_0x0b79('0x4'));var BPromise=require('bluebird');var rp=require(_0x0b79('0x5'));var fs=require('fs');var path=require(_0x0b79('0x6'));var rimraf=require(_0x0b79('0x7'));var config=require('../../config/environment');var attributes=require(_0x0b79('0x8'));module[_0x0b79('0x9')]=function(_0x3a54fb,_0x1bc56d){return _0x3a54fb[_0x0b79('0xa')](_0x0b79('0xb'),attributes,{'tableName':_0x0b79('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xba22=['../../config/environment','./analyticFieldReport.attributes','exports','define','AnalyticFieldReport','analytics_report_fields','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x1a8447,_0x36530a){var _0x395a51=function(_0x4c2d74){while(--_0x4c2d74){_0x1a8447['push'](_0x1a8447['shift']());}};_0x395a51(++_0x36530a);}(_0xba22,0x124));var _0x2ba2=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xba22[_0x2763f2];return _0x3ef471;};'use strict';var _=require(_0x2ba2('0x0'));var util=require(_0x2ba2('0x1'));var logger=require(_0x2ba2('0x2'))('api');var moment=require(_0x2ba2('0x3'));var BPromise=require(_0x2ba2('0x4'));var rp=require(_0x2ba2('0x5'));var fs=require('fs');var path=require(_0x2ba2('0x6'));var rimraf=require('rimraf');var config=require(_0x2ba2('0x7'));var attributes=require(_0x2ba2('0x8'));module[_0x2ba2('0x9')]=function(_0x37c93d,_0x49b632){return _0x37c93d[_0x2ba2('0xa')](_0x2ba2('0xb'),attributes,{'tableName':_0x2ba2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 67c1b35..2becc4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde3c=['catch','util','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','http','request','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticFieldReport,\x20%s,\x20%s','message','result'];(function(_0x1b4af6,_0xd59625){var _0x105d96=function(_0x31995e){while(--_0x31995e){_0x1b4af6['push'](_0x1b4af6['shift']());}};_0x105d96(++_0xd59625);}(_0xde3c,0x157));var _0xcde3=function(_0x15267f,_0x394070){_0x15267f=_0x15267f-0x0;var _0x1f4b40=_0xde3c[_0x15267f];return _0x1f4b40;};'use strict';var _=require('lodash');var util=require(_0xcde3('0x0'));var moment=require('moment');var BPromise=require(_0xcde3('0x1'));var rs=require(_0xcde3('0x2'));var fs=require('fs');var Redis=require(_0xcde3('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xcde3('0x4'))('rpc');var config=require(_0xcde3('0x5'));var jayson=require(_0xcde3('0x6'));var client=jayson['client'][_0xcde3('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x46c882,_0x4d6375,_0x14eef3){return new BPromise(function(_0x4c6615,_0x41e515){return client[_0xcde3('0x8')](_0x46c882,_0x14eef3)['then'](function(_0x540571){logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x4d6375,_0xcde3('0x9'));logger[_0xcde3('0xa')](_0xcde3('0xb'),_0x4d6375,_0xcde3('0x9'),JSON[_0xcde3('0xc')](_0x540571));if(_0x540571[_0xcde3('0xd')]){if(_0x540571['error'][_0xcde3('0xe')]===0x1f4){logger[_0xcde3('0xd')](_0xcde3('0xf'),_0x4d6375,_0x540571[_0xcde3('0xd')][_0xcde3('0x10')]);return _0x41e515(_0x540571[_0xcde3('0xd')]['message']);}logger[_0xcde3('0xd')](_0xcde3('0xf'),_0x4d6375,_0x540571[_0xcde3('0xd')][_0xcde3('0x10')]);return _0x4c6615(_0x540571[_0xcde3('0xd')]['message']);}else{logger['info'](_0xcde3('0xf'),_0x4d6375,'request\x20sent');_0x4c6615(_0x540571[_0xcde3('0x11')][_0xcde3('0x10')]);}})[_0xcde3('0x12')](function(_0x39188c){logger['error'](_0xcde3('0xf'),_0x4d6375,_0x39188c);_0x41e515(_0x39188c);});});}
\ No newline at end of file
+var _0x7515=['util','moment','bluebird','randomstring','ioredis','../../config/logger','jayson/promise','client','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch'];(function(_0x4b7522,_0x43ef85){var _0x45de51=function(_0x40a2a3){while(--_0x40a2a3){_0x4b7522['push'](_0x4b7522['shift']());}};_0x45de51(++_0x43ef85);}(_0x7515,0x1cc));var _0x5751=function(_0x59eefb,_0x2151ce){_0x59eefb=_0x59eefb-0x0;var _0x1a49e8=_0x7515[_0x59eefb];return _0x1a49e8;};'use strict';var _=require('lodash');var util=require(_0x5751('0x0'));var moment=require(_0x5751('0x1'));var BPromise=require(_0x5751('0x2'));var rs=require(_0x5751('0x3'));var fs=require('fs');var Redis=require(_0x5751('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5751('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5751('0x6'));var client=jayson[_0x5751('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2062a6,_0x15e65a,_0x2de973){return new BPromise(function(_0x1d4db5,_0x86453){return client[_0x5751('0x8')](_0x2062a6,_0x2de973)[_0x5751('0x9')](function(_0x3de639){logger[_0x5751('0xa')](_0x5751('0xb'),_0x15e65a,'request\x20sent');logger[_0x5751('0xc')](_0x5751('0xd'),_0x15e65a,_0x5751('0xe'),JSON[_0x5751('0xf')](_0x3de639));if(_0x3de639['error']){if(_0x3de639[_0x5751('0x10')]['code']===0x1f4){logger['error']('AnalyticFieldReport,\x20%s,\x20%s',_0x15e65a,_0x3de639[_0x5751('0x10')][_0x5751('0x11')]);return _0x86453(_0x3de639[_0x5751('0x10')][_0x5751('0x11')]);}logger[_0x5751('0x10')]('AnalyticFieldReport,\x20%s,\x20%s',_0x15e65a,_0x3de639[_0x5751('0x10')][_0x5751('0x11')]);return _0x1d4db5(_0x3de639['error'][_0x5751('0x11')]);}else{logger[_0x5751('0xa')](_0x5751('0xb'),_0x15e65a,_0x5751('0xe'));_0x1d4db5(_0x3de639[_0x5751('0x12')]['message']);}})[_0x5751('0x13')](function(_0x1ed70a){logger['error'](_0x5751('0xb'),_0x15e65a,_0x1ed70a);_0x86453(_0x1ed70a);});});}
\ No newline at end of file
index ce89657..a2f8421 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(_0xfbdead,_0x1bf870){var _0x2c2432=function(_0x2de951){while(--_0x2de951){_0xfbdead['push'](_0xfbdead['shift']());}};_0x2c2432(++_0x1bf870);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
+var _0xa9e0=['delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','index','/:id','post','/create_many','isAuthenticated','bulkCreate','/:id/create_many','update'];(function(_0x2fefde,_0x47ea23){var _0x2a6cb8=function(_0x320560){while(--_0x320560){_0x2fefde['push'](_0x2fefde['shift']());}};_0x2a6cb8(++_0x47ea23);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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 b817446..c017fa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c71=['name','STRING','TEXT','exports'];(function(_0x2d6c3a,_0x350a69){var _0x3e686=function(_0x256f60){while(--_0x256f60){_0x2d6c3a['push'](_0x2d6c3a['shift']());}};_0x3e686(++_0x350a69);}(_0x0c71,0xfb));var _0x10c7=function(_0x56b68b,_0x15832b){_0x56b68b=_0x56b68b-0x0;var _0x4ab7ac=_0x0c71[_0x56b68b];return _0x4ab7ac;};'use strict';var Sequelize=require('sequelize');module[_0x10c7('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x10c7('0x1')},'table':{'type':Sequelize[_0x10c7('0x2')]},'metric':{'type':Sequelize[_0x10c7('0x3')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9c5e=['sequelize','exports','STRING','name'];(function(_0x3947cf,_0x36f94c){var _0x30db5e=function(_0x3f1377){while(--_0x3f1377){_0x3947cf['push'](_0x3947cf['shift']());}};_0x30db5e(++_0x36f94c);}(_0x9c5e,0x9c));var _0xe9c5=function(_0x452ded,_0x8fe09a){_0x452ded=_0x452ded-0x0;var _0x512c5f=_0x9c5e[_0x452ded];return _0x512c5f;};'use strict';var Sequelize=require(_0xe9c5('0x0'));module[_0xe9c5('0x1')]={'name':{'type':Sequelize[_0xe9c5('0x2')],'allowNull':![],'unique':_0xe9c5('0x3')},'table':{'type':Sequelize[_0xe9c5('0x2')]},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3391dff..350a472 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','limit','undefined','count','offset','set','apply','reject','save','update','then','destroy','get','Metrics','UserProfileResource','sendStatus','error','stack','name','send','map','AnalyticMetric','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params'];(function(_0x1d213c,_0x1dde7e){var _0x3ea25f=function(_0x313281){while(--_0x313281){_0x1d213c['push'](_0x1d213c['shift']());}};_0x3ea25f(++_0x1dde7e);}(_0x24ca,0x1bc));var _0xa24c=function(_0x4c7935,_0x4a53fb){_0x4c7935=_0x4c7935-0x0;var _0x30651d=_0x24ca[_0x4c7935];return _0x30651d;};'use strict';var emlformat=require(_0xa24c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa24c('0x1'));var jsonpatch=require(_0xa24c('0x2'));var rp=require(_0xa24c('0x3'));var moment=require('moment');var BPromise=require(_0xa24c('0x4'));var Mustache=require(_0xa24c('0x5'));var util=require(_0xa24c('0x6'));var path=require(_0xa24c('0x7'));var sox=require(_0xa24c('0x8'));var csv=require(_0xa24c('0x9'));var ejs=require(_0xa24c('0xa'));var fs=require('fs');var fs_extra=require(_0xa24c('0xb'));var _=require(_0xa24c('0xc'));var squel=require(_0xa24c('0xd'));var crypto=require(_0xa24c('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xa24c('0xf'));var toCsv=require(_0xa24c('0x9'));var querystring=require(_0xa24c('0x10'));var Papa=require('papaparse');var Redis=require(_0xa24c('0x11'));var authService=require(_0xa24c('0x12'));var qs=require(_0xa24c('0x13'));var as=require(_0xa24c('0x14'));var hardwareService=require(_0xa24c('0x15'));var logger=require(_0xa24c('0x16'))(_0xa24c('0x17'));var utils=require(_0xa24c('0x18'));var config=require(_0xa24c('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xa24c('0x1a'))['db'];function respondWithStatusCode(_0x11090c,_0xcee4fe){_0xcee4fe=_0xcee4fe||0xcc;return function(_0x2c2af8){if(_0x2c2af8){return _0x11090c['sendStatus'](_0xcee4fe);}return _0x11090c[_0xa24c('0x1b')](_0xcee4fe)[_0xa24c('0x1c')]();};}function respondWithResult(_0x26ff28,_0x2fcd8b){_0x2fcd8b=_0x2fcd8b||0xc8;return function(_0x1cb08e){if(_0x1cb08e){return _0x26ff28[_0xa24c('0x1b')](_0x2fcd8b)[_0xa24c('0x1d')](_0x1cb08e);}};}function respondWithFilteredResult(_0x5d4727,_0x47a063){return function(_0xb80781){if(_0xb80781){var _0x87aa90=typeof _0x47a063['offset']==='undefined'&&typeof _0x47a063[_0xa24c('0x1e')]===_0xa24c('0x1f');var _0x5c479e=_0xb80781[_0xa24c('0x20')];var _0x5de3e6=_0x87aa90?0x0:_0x47a063[_0xa24c('0x21')];var _0x2a610a=_0x87aa90?_0xb80781[_0xa24c('0x20')]:_0x47a063[_0xa24c('0x21')]+_0x47a063['limit'];var _0x16d363;if(_0x2a610a>=_0x5c479e){_0x2a610a=_0x5c479e;_0x16d363=0xc8;}else{_0x16d363=0xce;}_0x5d4727[_0xa24c('0x1b')](_0x16d363);return _0x5d4727[_0xa24c('0x22')]('Content-Range',_0x5de3e6+'-'+_0x2a610a+'/'+_0x5c479e)['json'](_0xb80781);}return null;};}function patchUpdates(_0x506424){return function(_0x4cd77e){try{jsonpatch[_0xa24c('0x23')](_0x4cd77e,_0x506424,!![]);}catch(_0x174b69){return BPromise[_0xa24c('0x24')](_0x174b69);}return _0x4cd77e[_0xa24c('0x25')]();};}function saveUpdates(_0x51a275,_0x30ec21){return function(_0x5f299e){if(_0x5f299e){return _0x5f299e[_0xa24c('0x26')](_0x51a275)[_0xa24c('0x27')](function(_0x4a1cda){return _0x4a1cda;});}return null;};}function removeEntity(_0x346ee8,_0x363d52){return function(_0x43a0c0){if(_0x43a0c0){return _0x43a0c0[_0xa24c('0x28')]()[_0xa24c('0x27')](function(){var _0x47e0eb=_0x43a0c0[_0xa24c('0x29')]({'plain':!![]});var _0x5cc9cb=_0xa24c('0x2a');return db[_0xa24c('0x2b')][_0xa24c('0x28')]({'where':{'type':_0x5cc9cb,'resourceId':_0x47e0eb['id']}})['then'](function(){return _0x43a0c0;});})[_0xa24c('0x27')](function(){_0x346ee8[_0xa24c('0x1b')](0xcc)[_0xa24c('0x1c')]();});}};}function handleEntityNotFound(_0x314121,_0x11e4e0){return function(_0x3ad0e6){if(!_0x3ad0e6){_0x314121[_0xa24c('0x2c')](0x194);}return _0x3ad0e6;};}function handleError(_0x5b23f4,_0xa0c48e){_0xa0c48e=_0xa0c48e||0x1f4;return function(_0x28675f){logger[_0xa24c('0x2d')](_0x28675f[_0xa24c('0x2e')]);if(_0x28675f['name']){delete _0x28675f[_0xa24c('0x2f')];}_0x5b23f4[_0xa24c('0x1b')](_0xa0c48e)[_0xa24c('0x30')](_0x28675f);};}exports['index']=function(_0x15eaaf,_0x3dcb1b){var _0x253d83={},_0x4ae35c={},_0x245fb2={'count':0x0,'rows':[]};var _0x5e0226=_[_0xa24c('0x31')](db[_0xa24c('0x32')][_0xa24c('0x33')],function(_0x5d025a){return{'name':_0x5d025a[_0xa24c('0x34')],'type':_0x5d025a[_0xa24c('0x35')][_0xa24c('0x36')]};});_0x4ae35c['model']=_[_0xa24c('0x31')](_0x5e0226,'name');_0x4ae35c[_0xa24c('0x37')]=_[_0xa24c('0x38')](_0x15eaaf['query']);_0x4ae35c['filters']=_[_0xa24c('0x39')](_0x4ae35c[_0xa24c('0x3a')],_0x4ae35c[_0xa24c('0x37')]);_0x253d83[_0xa24c('0x3b')]=_[_0xa24c('0x39')](_0x4ae35c[_0xa24c('0x3a')],qs[_0xa24c('0x3c')](_0x15eaaf['query'][_0xa24c('0x3c')]));_0x253d83[_0xa24c('0x3b')]=_0x253d83[_0xa24c('0x3b')][_0xa24c('0x3d')]?_0x253d83[_0xa24c('0x3b')]:_0x4ae35c[_0xa24c('0x3a')];if(!_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x3e')](_0xa24c('0x3f'))){_0x253d83[_0xa24c('0x1e')]=qs['limit'](_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x1e')]);_0x253d83[_0xa24c('0x21')]=qs[_0xa24c('0x21')](_0x15eaaf['query']['offset']);}_0x253d83[_0xa24c('0x40')]=qs['sort'](_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x41')]);_0x253d83[_0xa24c('0x42')]=qs[_0xa24c('0x43')](_[_0xa24c('0x44')](_0x15eaaf['query'],_0x4ae35c['filters']),_0x5e0226);if(_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x45')]){_0x253d83[_0xa24c('0x42')]=_[_0xa24c('0x46')](_0x253d83[_0xa24c('0x42')],{'$or':_[_0xa24c('0x31')](_0x5e0226,function(_0x5080d0){if(_0x5080d0['type']!==_0xa24c('0x47')){var _0x1ce83e={};_0x1ce83e[_0x5080d0[_0xa24c('0x2f')]]={'$like':'%'+_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x45')]+'%'};return _0x1ce83e;}})});}_0x253d83=_['merge']({},_0x253d83,_0x15eaaf[_0xa24c('0x48')]);var _0x7895e={'where':_0x253d83['where']};return db['AnalyticMetric'][_0xa24c('0x20')](_0x7895e)[_0xa24c('0x27')](function(_0x231eea){_0x245fb2['count']=_0x231eea;if(_0x15eaaf['query'][_0xa24c('0x49')]){_0x253d83[_0xa24c('0x4a')]=[{'all':!![]}];}return db[_0xa24c('0x32')][_0xa24c('0x4b')](_0x253d83);})[_0xa24c('0x27')](function(_0x1b7faf){_0x245fb2[_0xa24c('0x4c')]=_0x1b7faf;return _0x245fb2;})[_0xa24c('0x27')](respondWithFilteredResult(_0x3dcb1b,_0x253d83))['catch'](handleError(_0x3dcb1b,null));};exports['show']=function(_0x430ba3,_0x44f7d4){var _0x455256={'raw':!![],'where':{'id':_0x430ba3[_0xa24c('0x4d')]['id']}},_0x5972d7={};_0x5972d7[_0xa24c('0x3a')]=_[_0xa24c('0x38')](db[_0xa24c('0x32')][_0xa24c('0x33')]);_0x5972d7[_0xa24c('0x37')]=_[_0xa24c('0x38')](_0x430ba3[_0xa24c('0x37')]);_0x5972d7[_0xa24c('0x43')]=_[_0xa24c('0x39')](_0x5972d7['model'],_0x5972d7[_0xa24c('0x37')]);_0x455256[_0xa24c('0x3b')]=_[_0xa24c('0x39')](_0x5972d7['model'],qs[_0xa24c('0x3c')](_0x430ba3[_0xa24c('0x37')][_0xa24c('0x3c')]));_0x455256[_0xa24c('0x3b')]=_0x455256[_0xa24c('0x3b')][_0xa24c('0x3d')]?_0x455256[_0xa24c('0x3b')]:_0x5972d7[_0xa24c('0x3a')];if(_0x430ba3[_0xa24c('0x37')][_0xa24c('0x49')]){_0x455256[_0xa24c('0x4a')]=[{'all':!![]}];}_0x455256=_['merge']({},_0x455256,_0x430ba3[_0xa24c('0x48')]);return db[_0xa24c('0x32')][_0xa24c('0x4e')](_0x455256)[_0xa24c('0x27')](handleEntityNotFound(_0x44f7d4,null))[_0xa24c('0x27')](respondWithResult(_0x44f7d4,null))[_0xa24c('0x4f')](handleError(_0x44f7d4,null));};exports[_0xa24c('0x50')]=function(_0x2250b9,_0x184179){return db['AnalyticMetric']['create'](_0x2250b9[_0xa24c('0x51')],{})['then'](function(_0xc078ef){var _0x1f436c=_0x2250b9['user'][_0xa24c('0x29')]({'plain':!![]});if(!_0x1f436c)throw new Error(_0xa24c('0x52'));if(_0x1f436c[_0xa24c('0x53')]==='user'){var _0x55978e=_0xc078ef[_0xa24c('0x29')]({'plain':!![]});var _0x5ba726=_0xa24c('0x2a');return db[_0xa24c('0x54')][_0xa24c('0x4e')]({'where':{'name':_0x5ba726,'userProfileId':_0x1f436c[_0xa24c('0x55')]},'raw':!![]})[_0xa24c('0x27')](function(_0x1fa739){if(_0x1fa739&&_0x1fa739[_0xa24c('0x56')]===0x0){return db[_0xa24c('0x2b')][_0xa24c('0x50')]({'name':_0x55978e[_0xa24c('0x2f')],'resourceId':_0x55978e['id'],'type':_0x1fa739['name'],'sectionId':_0x1fa739['id']},{})[_0xa24c('0x27')](function(){return _0xc078ef;});}else{return _0xc078ef;}})[_0xa24c('0x4f')](function(_0x233f8e){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x233f8e);throw _0x233f8e;});}return _0xc078ef;})['then'](respondWithResult(_0x184179,0xc9))[_0xa24c('0x4f')](handleError(_0x184179,null));};exports['update']=function(_0x4757ff,_0x21d0fc){if(_0x4757ff['body']['id']){delete _0x4757ff[_0xa24c('0x51')]['id'];}return db[_0xa24c('0x32')][_0xa24c('0x4e')]({'where':{'id':_0x4757ff[_0xa24c('0x4d')]['id']}})[_0xa24c('0x27')](handleEntityNotFound(_0x21d0fc,null))[_0xa24c('0x27')](saveUpdates(_0x4757ff[_0xa24c('0x51')],null))[_0xa24c('0x27')](respondWithResult(_0x21d0fc,null))['catch'](handleError(_0x21d0fc,null));};exports[_0xa24c('0x28')]=function(_0x47af80,_0x5abd45){return db['AnalyticMetric']['find']({'where':{'id':_0x47af80['params']['id']}})[_0xa24c('0x27')](handleEntityNotFound(_0x5abd45,null))['then'](removeEntity(_0x5abd45,null))[_0xa24c('0x4f')](handleError(_0x5abd45,null));};
\ No newline at end of file
+var _0x55ca=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','update','then','get','Metrics','UserProfileResource','destroy','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','AnalyticMetric','findAll','catch','show','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x58f47a,_0x4b43a4){var _0x3d454f=function(_0x19ba2d){while(--_0x19ba2d){_0x58f47a['push'](_0x58f47a['shift']());}};_0x3d454f(++_0x4b43a4);}(_0x55ca,0x126));var _0xa55c=function(_0x21353c,_0x2ea587){_0x21353c=_0x21353c-0x0;var _0xa99120=_0x55ca[_0x21353c];return _0xa99120;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];function respondWithStatusCode(_0x5d47ff,_0x59d84a){_0x59d84a=_0x59d84a||0xcc;return function(_0x2a35be){if(_0x2a35be){return _0x5d47ff['sendStatus'](_0x59d84a);}return _0x5d47ff['status'](_0x59d84a)['end']();};}function respondWithResult(_0x18ee85,_0x3930e4){_0x3930e4=_0x3930e4||0xc8;return function(_0x462cd6){if(_0x462cd6){return _0x18ee85[_0xa55c('0x18')](_0x3930e4)[_0xa55c('0x19')](_0x462cd6);}};}function respondWithFilteredResult(_0x247e77,_0x4e0b2f){return function(_0x3ccf65){if(_0x3ccf65){var _0x3dcf4f=typeof _0x4e0b2f[_0xa55c('0x1a')]===_0xa55c('0x1b')&&typeof _0x4e0b2f[_0xa55c('0x1c')]===_0xa55c('0x1b');var _0x51590e=_0x3ccf65[_0xa55c('0x1d')];var _0x24783b=_0x3dcf4f?0x0:_0x4e0b2f['offset'];var _0x3d4c9e=_0x3dcf4f?_0x3ccf65[_0xa55c('0x1d')]:_0x4e0b2f[_0xa55c('0x1a')]+_0x4e0b2f[_0xa55c('0x1c')];var _0x23a1ae;if(_0x3d4c9e>=_0x51590e){_0x3d4c9e=_0x51590e;_0x23a1ae=0xc8;}else{_0x23a1ae=0xce;}_0x247e77[_0xa55c('0x18')](_0x23a1ae);return _0x247e77['set']('Content-Range',_0x24783b+'-'+_0x3d4c9e+'/'+_0x51590e)[_0xa55c('0x19')](_0x3ccf65);}return null;};}function patchUpdates(_0x3776ac){return function(_0xade4c4){try{jsonpatch['apply'](_0xade4c4,_0x3776ac,!![]);}catch(_0x383d92){return BPromise[_0xa55c('0x1e')](_0x383d92);}return _0xade4c4['save']();};}function saveUpdates(_0x187a87,_0x133096){return function(_0x940f28){if(_0x940f28){return _0x940f28[_0xa55c('0x1f')](_0x187a87)[_0xa55c('0x20')](function(_0x49ed04){return _0x49ed04;});}return null;};}function removeEntity(_0x1fc828,_0x504c24){return function(_0x5ba836){if(_0x5ba836){return _0x5ba836['destroy']()[_0xa55c('0x20')](function(){var _0x54b038=_0x5ba836[_0xa55c('0x21')]({'plain':!![]});var _0x190757=_0xa55c('0x22');return db[_0xa55c('0x23')][_0xa55c('0x24')]({'where':{'type':_0x190757,'resourceId':_0x54b038['id']}})[_0xa55c('0x20')](function(){return _0x5ba836;});})[_0xa55c('0x20')](function(){_0x1fc828[_0xa55c('0x18')](0xcc)[_0xa55c('0x25')]();});}};}function handleEntityNotFound(_0x3cd152,_0x1273d7){return function(_0x57f271){if(!_0x57f271){_0x3cd152[_0xa55c('0x26')](0x194);}return _0x57f271;};}function handleError(_0x28814f,_0x1c9f6b){_0x1c9f6b=_0x1c9f6b||0x1f4;return function(_0x906caa){logger['error'](_0x906caa[_0xa55c('0x27')]);if(_0x906caa[_0xa55c('0x28')]){delete _0x906caa[_0xa55c('0x28')];}_0x28814f[_0xa55c('0x18')](_0x1c9f6b)[_0xa55c('0x29')](_0x906caa);};}exports[_0xa55c('0x2a')]=function(_0x52d37f,_0x23e698){var _0x490b7d={},_0x35c9c2={},_0x1d730b={'count':0x0,'rows':[]};var _0x1cc53e=_[_0xa55c('0x2b')](db['AnalyticMetric'][_0xa55c('0x2c')],function(_0x2096ae){return{'name':_0x2096ae[_0xa55c('0x2d')],'type':_0x2096ae[_0xa55c('0x2e')][_0xa55c('0x2f')]};});_0x35c9c2[_0xa55c('0x30')]=_[_0xa55c('0x2b')](_0x1cc53e,_0xa55c('0x28'));_0x35c9c2[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x52d37f[_0xa55c('0x31')]);_0x35c9c2['filters']=_['intersection'](_0x35c9c2[_0xa55c('0x30')],_0x35c9c2[_0xa55c('0x31')]);_0x490b7d['attributes']=_[_0xa55c('0x33')](_0x35c9c2[_0xa55c('0x30')],qs[_0xa55c('0x34')](_0x52d37f[_0xa55c('0x31')][_0xa55c('0x34')]));_0x490b7d[_0xa55c('0x35')]=_0x490b7d[_0xa55c('0x35')][_0xa55c('0x36')]?_0x490b7d[_0xa55c('0x35')]:_0x35c9c2['model'];if(!_0x52d37f['query']['hasOwnProperty'](_0xa55c('0x37'))){_0x490b7d[_0xa55c('0x1c')]=qs[_0xa55c('0x1c')](_0x52d37f['query'][_0xa55c('0x1c')]);_0x490b7d['offset']=qs[_0xa55c('0x1a')](_0x52d37f['query'][_0xa55c('0x1a')]);}_0x490b7d[_0xa55c('0x38')]=qs[_0xa55c('0x39')](_0x52d37f['query'][_0xa55c('0x39')]);_0x490b7d[_0xa55c('0x3a')]=qs['filters'](_[_0xa55c('0x3b')](_0x52d37f[_0xa55c('0x31')],_0x35c9c2['filters']),_0x1cc53e);if(_0x52d37f['query'][_0xa55c('0x3c')]){_0x490b7d['where']=_[_0xa55c('0x3d')](_0x490b7d[_0xa55c('0x3a')],{'$or':_['map'](_0x1cc53e,function(_0x542d76){if(_0x542d76['type']!=='VIRTUAL'){var _0x3b3308={};_0x3b3308[_0x542d76[_0xa55c('0x28')]]={'$like':'%'+_0x52d37f[_0xa55c('0x31')][_0xa55c('0x3c')]+'%'};return _0x3b3308;}})});}_0x490b7d=_[_0xa55c('0x3d')]({},_0x490b7d,_0x52d37f['options']);var _0x3d52d8={'where':_0x490b7d[_0xa55c('0x3a')]};return db[_0xa55c('0x3e')][_0xa55c('0x1d')](_0x3d52d8)[_0xa55c('0x20')](function(_0x23cef5){_0x1d730b['count']=_0x23cef5;if(_0x52d37f[_0xa55c('0x31')]['includeAll']){_0x490b7d['include']=[{'all':!![]}];}return db[_0xa55c('0x3e')][_0xa55c('0x3f')](_0x490b7d);})['then'](function(_0x2bd98b){_0x1d730b['rows']=_0x2bd98b;return _0x1d730b;})['then'](respondWithFilteredResult(_0x23e698,_0x490b7d))[_0xa55c('0x40')](handleError(_0x23e698,null));};exports[_0xa55c('0x41')]=function(_0x1630ac,_0x540337){var _0x1b2708={'raw':!![],'where':{'id':_0x1630ac['params']['id']}},_0xd5a006={};_0xd5a006[_0xa55c('0x30')]=_['keys'](db[_0xa55c('0x3e')][_0xa55c('0x2c')]);_0xd5a006['query']=_[_0xa55c('0x32')](_0x1630ac[_0xa55c('0x31')]);_0xd5a006['filters']=_[_0xa55c('0x33')](_0xd5a006[_0xa55c('0x30')],_0xd5a006[_0xa55c('0x31')]);_0x1b2708['attributes']=_[_0xa55c('0x33')](_0xd5a006['model'],qs[_0xa55c('0x34')](_0x1630ac[_0xa55c('0x31')][_0xa55c('0x34')]));_0x1b2708['attributes']=_0x1b2708[_0xa55c('0x35')][_0xa55c('0x36')]?_0x1b2708['attributes']:_0xd5a006[_0xa55c('0x30')];if(_0x1630ac[_0xa55c('0x31')]['includeAll']){_0x1b2708[_0xa55c('0x42')]=[{'all':!![]}];}_0x1b2708=_[_0xa55c('0x3d')]({},_0x1b2708,_0x1630ac['options']);return db[_0xa55c('0x3e')][_0xa55c('0x43')](_0x1b2708)[_0xa55c('0x20')](handleEntityNotFound(_0x540337,null))[_0xa55c('0x20')](respondWithResult(_0x540337,null))['catch'](handleError(_0x540337,null));};exports[_0xa55c('0x44')]=function(_0x58a7ea,_0x2157d6){return db[_0xa55c('0x3e')][_0xa55c('0x44')](_0x58a7ea['body'],{})[_0xa55c('0x20')](function(_0x250b00){var _0x574fe9=_0x58a7ea[_0xa55c('0x45')][_0xa55c('0x21')]({'plain':!![]});if(!_0x574fe9)throw new Error(_0xa55c('0x46'));if(_0x574fe9[_0xa55c('0x47')]===_0xa55c('0x45')){var _0x1c84d9=_0x250b00[_0xa55c('0x21')]({'plain':!![]});var _0x129626=_0xa55c('0x22');return db[_0xa55c('0x48')]['find']({'where':{'name':_0x129626,'userProfileId':_0x574fe9[_0xa55c('0x49')]},'raw':!![]})[_0xa55c('0x20')](function(_0x216de8){if(_0x216de8&&_0x216de8['autoAssociation']===0x0){return db[_0xa55c('0x23')][_0xa55c('0x44')]({'name':_0x1c84d9['name'],'resourceId':_0x1c84d9['id'],'type':_0x216de8[_0xa55c('0x28')],'sectionId':_0x216de8['id']},{})['then'](function(){return _0x250b00;});}else{return _0x250b00;}})[_0xa55c('0x40')](function(_0x228df4){logger[_0xa55c('0x4a')](_0xa55c('0x4b'),_0x228df4);throw _0x228df4;});}return _0x250b00;})[_0xa55c('0x20')](respondWithResult(_0x2157d6,0xc9))['catch'](handleError(_0x2157d6,null));};exports[_0xa55c('0x1f')]=function(_0x4607ca,_0x4b85cc){if(_0x4607ca[_0xa55c('0x4c')]['id']){delete _0x4607ca[_0xa55c('0x4c')]['id'];}return db[_0xa55c('0x3e')][_0xa55c('0x43')]({'where':{'id':_0x4607ca['params']['id']}})['then'](handleEntityNotFound(_0x4b85cc,null))[_0xa55c('0x20')](saveUpdates(_0x4607ca[_0xa55c('0x4c')],null))[_0xa55c('0x20')](respondWithResult(_0x4b85cc,null))[_0xa55c('0x40')](handleError(_0x4b85cc,null));};exports['destroy']=function(_0x30c0c9,_0x5ce463){return db[_0xa55c('0x3e')][_0xa55c('0x43')]({'where':{'id':_0x30c0c9[_0xa55c('0x4d')]['id']}})[_0xa55c('0x20')](handleEntityNotFound(_0x5ce463,null))[_0xa55c('0x20')](removeEntity(_0x5ce463,null))['catch'](handleError(_0x5ce463,null));};
\ No newline at end of file
index bb6adb7..91cc85e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bae=['../../config/environment','exports','AnalyticMetric','analytics_metrics','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x2da04d,_0x45a533){var _0x34cb1e=function(_0x29ebf0){while(--_0x29ebf0){_0x2da04d['push'](_0x2da04d['shift']());}};_0x34cb1e(++_0x45a533);}(_0x2bae,0x164));var _0xe2ba=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2bae[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe2ba('0x0'));var util=require(_0xe2ba('0x1'));var logger=require(_0xe2ba('0x2'))(_0xe2ba('0x3'));var moment=require(_0xe2ba('0x4'));var BPromise=require(_0xe2ba('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe2ba('0x6'));var rimraf=require('rimraf');var config=require(_0xe2ba('0x7'));var attributes=require('./analyticMetric.attributes');module[_0xe2ba('0x8')]=function(_0x129677,_0x21601e){return _0x129677['define'](_0xe2ba('0x9'),attributes,{'tableName':_0xe2ba('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4cb5=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./analyticMetric.attributes','exports','define','analytics_metrics'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x4cb5,0x8f));var _0x54cb=function(_0x36c3ea,_0x10fc00){_0x36c3ea=_0x36c3ea-0x0;var _0x5d03cc=_0x4cb5[_0x36c3ea];return _0x5d03cc;};'use strict';var _=require(_0x54cb('0x0'));var util=require(_0x54cb('0x1'));var logger=require(_0x54cb('0x2'))(_0x54cb('0x3'));var moment=require('moment');var BPromise=require(_0x54cb('0x4'));var rp=require(_0x54cb('0x5'));var fs=require('fs');var path=require(_0x54cb('0x6'));var rimraf=require(_0x54cb('0x7'));var config=require(_0x54cb('0x8'));var attributes=require(_0x54cb('0x9'));module[_0x54cb('0xa')]=function(_0x48aed1,_0x44f36d){return _0x48aed1[_0x54cb('0xb')]('AnalyticMetric',attributes,{'tableName':_0x54cb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5b0c98c..a6722bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ae3=['result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','http','request','then','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','code','error','AnalyticMetric,\x20%s,\x20%s','message','info'];(function(_0x2002b3,_0x11e91c){var _0x2756f0=function(_0x4bf0b3){while(--_0x4bf0b3){_0x2002b3['push'](_0x2002b3['shift']());}};_0x2756f0(++_0x11e91c);}(_0x4ae3,0xca));var _0x34ae=function(_0x2c534a,_0x18a19e){_0x2c534a=_0x2c534a-0x0;var _0x3f5c99=_0x4ae3[_0x2c534a];return _0x3f5c99;};'use strict';var _=require(_0x34ae('0x0'));var util=require(_0x34ae('0x1'));var moment=require('moment');var BPromise=require(_0x34ae('0x2'));var rs=require(_0x34ae('0x3'));var fs=require('fs');var Redis=require(_0x34ae('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x34ae('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x34ae('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x32ce87,_0x7190ab,_0x14c479){return new BPromise(function(_0x2975f2,_0x6accd0){return client[_0x34ae('0x7')](_0x32ce87,_0x14c479)[_0x34ae('0x8')](function(_0x4357fe){logger['info']('AnalyticMetric,\x20%s,\x20%s',_0x7190ab,_0x34ae('0x9'));logger[_0x34ae('0xa')](_0x34ae('0xb'),_0x7190ab,_0x34ae('0x9'),JSON[_0x34ae('0xc')](_0x4357fe));if(_0x4357fe['error']){if(_0x4357fe['error'][_0x34ae('0xd')]===0x1f4){logger[_0x34ae('0xe')](_0x34ae('0xf'),_0x7190ab,_0x4357fe['error'][_0x34ae('0x10')]);return _0x6accd0(_0x4357fe['error'][_0x34ae('0x10')]);}logger['error'](_0x34ae('0xf'),_0x7190ab,_0x4357fe[_0x34ae('0xe')][_0x34ae('0x10')]);return _0x2975f2(_0x4357fe['error']['message']);}else{logger[_0x34ae('0x11')](_0x34ae('0xf'),_0x7190ab,_0x34ae('0x9'));_0x2975f2(_0x4357fe[_0x34ae('0x12')][_0x34ae('0x10')]);}})[_0x34ae('0x13')](function(_0x92834f){logger[_0x34ae('0xe')](_0x34ae('0xf'),_0x7190ab,_0x92834f);_0x6accd0(_0x92834f);});});}
\ No newline at end of file
+var _0x3ce1=['../../config/environment','jayson/promise','client','http','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x3b16e1,_0x3bda3e){var _0x311d1b=function(_0x2a979b){while(--_0x2a979b){_0x3b16e1['push'](_0x3b16e1['shift']());}};_0x311d1b(++_0x3bda3e);}(_0x3ce1,0x12f));var _0x13ce=function(_0x47cee2,_0x241304){_0x47cee2=_0x47cee2-0x0;var _0x293965=_0x3ce1[_0x47cee2];return _0x293965;};'use strict';var _=require(_0x13ce('0x0'));var util=require(_0x13ce('0x1'));var moment=require(_0x13ce('0x2'));var BPromise=require(_0x13ce('0x3'));var rs=require(_0x13ce('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x13ce('0x5'))['db'];var utils=require(_0x13ce('0x6'));var logger=require(_0x13ce('0x7'))(_0x13ce('0x8'));var config=require(_0x13ce('0x9'));var jayson=require(_0x13ce('0xa'));var client=jayson[_0x13ce('0xb')][_0x13ce('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1bb60a,_0x5d04fb,_0x2da6e7){return new BPromise(function(_0x37b9ee,_0x547ab5){return client['request'](_0x1bb60a,_0x2da6e7)[_0x13ce('0xd')](function(_0x2f39c5){logger[_0x13ce('0xe')](_0x13ce('0xf'),_0x5d04fb,_0x13ce('0x10'));logger[_0x13ce('0x11')](_0x13ce('0x12'),_0x5d04fb,'request\x20sent',JSON['stringify'](_0x2f39c5));if(_0x2f39c5[_0x13ce('0x13')]){if(_0x2f39c5[_0x13ce('0x13')][_0x13ce('0x14')]===0x1f4){logger[_0x13ce('0x13')](_0x13ce('0xf'),_0x5d04fb,_0x2f39c5[_0x13ce('0x13')][_0x13ce('0x15')]);return _0x547ab5(_0x2f39c5[_0x13ce('0x13')][_0x13ce('0x15')]);}logger['error']('AnalyticMetric,\x20%s,\x20%s',_0x5d04fb,_0x2f39c5['error']['message']);return _0x37b9ee(_0x2f39c5['error'][_0x13ce('0x15')]);}else{logger[_0x13ce('0xe')](_0x13ce('0xf'),_0x5d04fb,_0x13ce('0x10'));_0x37b9ee(_0x2f39c5[_0x13ce('0x16')][_0x13ce('0x15')]);}})[_0x13ce('0x17')](function(_0x32c882){logger[_0x13ce('0x13')](_0x13ce('0xf'),_0x5d04fb,_0x32c882);_0x547ab5(_0x32c882);});});}
\ No newline at end of file
index 95eb465..baff76f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13fe=['index','show','create','put','update','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated'];(function(_0x3cd168,_0xb328b6){var _0xd278b0=function(_0x2135de){while(--_0x2135de){_0x3cd168['push'](_0x3cd168['shift']());}};_0xd278b0(++_0xb328b6);}(_0x13fe,0x138));var _0xe13f=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x13fe[_0xc6be3a];return _0x56a310;};'use strict';var multer=require(_0xe13f('0x0'));var util=require(_0xe13f('0x1'));var path=require(_0xe13f('0x2'));var timeout=require(_0xe13f('0x3'));var express=require(_0xe13f('0x4'));var router=express[_0xe13f('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xe13f('0x6'));var interaction=require(_0xe13f('0x7'));var config=require(_0xe13f('0x8'));var controller=require(_0xe13f('0x9'));router[_0xe13f('0xa')]('/',auth[_0xe13f('0xb')](),controller[_0xe13f('0xc')]);router['get']('/:id',auth[_0xe13f('0xb')](),controller[_0xe13f('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xe13f('0xe')]);router[_0xe13f('0xf')]('/:id',auth[_0xe13f('0xb')](),controller[_0xe13f('0x10')]);router['delete']('/:id',auth[_0xe13f('0xb')](),controller[_0xe13f('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x2dc3=['post','create','put','delete','isAuthenticated','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/:id'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x2dc3,0x127));var _0x32dc=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x2dc3[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require('multer');var util=require(_0x32dc('0x0'));var path=require(_0x32dc('0x1'));var timeout=require(_0x32dc('0x2'));var express=require(_0x32dc('0x3'));var router=express[_0x32dc('0x4')]();var fs_extra=require(_0x32dc('0x5'));var auth=require(_0x32dc('0x6'));var interaction=require(_0x32dc('0x7'));var config=require('../../config/environment');var controller=require('./analyticMetric.controller');router[_0x32dc('0x8')]('/',auth['isAuthenticated'](),controller[_0x32dc('0x9')]);router['get'](_0x32dc('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x32dc('0xb')]('/',auth['isAuthenticated'](),controller[_0x32dc('0xc')]);router[_0x32dc('0xd')](_0x32dc('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x32dc('0xe')](_0x32dc('0xa'),auth[_0x32dc('0xf')](),controller[_0x32dc('0x10')]);module[_0x32dc('0x11')]=router;
\ No newline at end of file
index 1fdc8dc..e083de3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e28=['TEXT','exports'];(function(_0x242ce5,_0x9322b7){var _0xe34da7=function(_0x55f306){while(--_0x55f306){_0x242ce5['push'](_0x242ce5['shift']());}};_0xe34da7(++_0x9322b7);}(_0x0e28,0x12d));var _0x80e2=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x0e28[_0x59ee6f];return _0x4c0979;};'use strict';var Sequelize=require('sequelize');module[_0x80e2('0x0')]={'tree':{'type':Sequelize[_0x80e2('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x2a16=['exports','TEXT'];(function(_0x17b7a7,_0x26bd89){var _0xc115f1=function(_0x5639ba){while(--_0x5639ba){_0x17b7a7['push'](_0x17b7a7['shift']());}};_0xc115f1(++_0x26bd89);}(_0x2a16,0x18a));var _0x62a1=function(_0x4cf32c,_0x6dbc1a){_0x4cf32c=_0x4cf32c-0x0;var _0x5645ec=_0x2a16[_0x4cf32c];return _0x5645ec;};'use strict';var Sequelize=require('sequelize');module[_0x62a1('0x0')]={'tree':{'type':Sequelize[_0x62a1('0x1')],'allowNull':![]}};
\ No newline at end of file
index 74b7b47..a8f4792 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae7d=['zip-dir','moment','bluebird','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','api','../../config/utils','../../config/environment','../../config/license/util','json','offset','undefined','count','limit','status','set','Content-Range','apply','update','then','destroy','end','sendStatus','stack','name','index','AnalyticTreeReport','rawAttributes','key','model','map','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','catch','params','find','create','body','eml-format'];(function(_0x3a31fe,_0x2b38e8){var _0x11c235=function(_0x5086d7){while(--_0x5086d7){_0x3a31fe['push'](_0x3a31fe['shift']());}};_0x11c235(++_0x2b38e8);}(_0xae7d,0x123));var _0xdae7=function(_0xe17be8,_0x43c5b0){_0xe17be8=_0xe17be8-0x0;var _0x48bc81=_0xae7d[_0xe17be8];return _0x48bc81;};'use strict';var emlformat=require(_0xdae7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdae7('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xdae7('0x2'));var BPromise=require(_0xdae7('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xdae7('0x4'));var sox=require(_0xdae7('0x5'));var csv=require(_0xdae7('0x6'));var ejs=require(_0xdae7('0x7'));var fs=require('fs');var fs_extra=require(_0xdae7('0x8'));var _=require(_0xdae7('0x9'));var squel=require(_0xdae7('0xa'));var crypto=require(_0xdae7('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xdae7('0xc'));var toCsv=require(_0xdae7('0x6'));var querystring=require(_0xdae7('0xd'));var Papa=require(_0xdae7('0xe'));var Redis=require(_0xdae7('0xf'));var authService=require(_0xdae7('0x10'));var qs=require(_0xdae7('0x11'));var as=require(_0xdae7('0x12'));var hardwareService=require(_0xdae7('0x13'));var logger=require(_0xdae7('0x14'))(_0xdae7('0x15'));var utils=require(_0xdae7('0x16'));var config=require(_0xdae7('0x17'));var licenseUtil=require(_0xdae7('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1619bc,_0x5816b1){_0x5816b1=_0x5816b1||0xcc;return function(_0x491b22){if(_0x491b22){return _0x1619bc['sendStatus'](_0x5816b1);}return _0x1619bc['status'](_0x5816b1)['end']();};}function respondWithResult(_0x110a3e,_0xac746e){_0xac746e=_0xac746e||0xc8;return function(_0x53fd04){if(_0x53fd04){return _0x110a3e['status'](_0xac746e)[_0xdae7('0x19')](_0x53fd04);}};}function respondWithFilteredResult(_0x13d898,_0x536765){return function(_0x1743a3){if(_0x1743a3){var _0x33f7c3=typeof _0x536765[_0xdae7('0x1a')]===_0xdae7('0x1b')&&typeof _0x536765['limit']==='undefined';var _0x3706ee=_0x1743a3[_0xdae7('0x1c')];var _0x16ee18=_0x33f7c3?0x0:_0x536765[_0xdae7('0x1a')];var _0x3e99fd=_0x33f7c3?_0x1743a3[_0xdae7('0x1c')]:_0x536765[_0xdae7('0x1a')]+_0x536765[_0xdae7('0x1d')];var _0x1c70c7;if(_0x3e99fd>=_0x3706ee){_0x3e99fd=_0x3706ee;_0x1c70c7=0xc8;}else{_0x1c70c7=0xce;}_0x13d898[_0xdae7('0x1e')](_0x1c70c7);return _0x13d898[_0xdae7('0x1f')](_0xdae7('0x20'),_0x16ee18+'-'+_0x3e99fd+'/'+_0x3706ee)['json'](_0x1743a3);}return null;};}function patchUpdates(_0x7ccff0){return function(_0x7e9333){try{jsonpatch[_0xdae7('0x21')](_0x7e9333,_0x7ccff0,!![]);}catch(_0x2348c7){return BPromise['reject'](_0x2348c7);}return _0x7e9333['save']();};}function saveUpdates(_0x4f4ff0,_0x484d8e){return function(_0x5c1e02){if(_0x5c1e02){return _0x5c1e02[_0xdae7('0x22')](_0x4f4ff0)[_0xdae7('0x23')](function(_0x4065b4){return _0x4065b4;});}return null;};}function removeEntity(_0x54a5f3,_0x1526e8){return function(_0x12f6f7){if(_0x12f6f7){return _0x12f6f7[_0xdae7('0x24')]()[_0xdae7('0x23')](function(){_0x54a5f3['status'](0xcc)[_0xdae7('0x25')]();});}};}function handleEntityNotFound(_0x4177ea,_0x225360){return function(_0x28cc84){if(!_0x28cc84){_0x4177ea[_0xdae7('0x26')](0x194);}return _0x28cc84;};}function handleError(_0x36591c,_0x5e0dc7){_0x5e0dc7=_0x5e0dc7||0x1f4;return function(_0xb7a21){logger['error'](_0xb7a21[_0xdae7('0x27')]);if(_0xb7a21['name']){delete _0xb7a21[_0xdae7('0x28')];}_0x36591c[_0xdae7('0x1e')](_0x5e0dc7)['send'](_0xb7a21);};}exports[_0xdae7('0x29')]=function(_0x2bb160,_0x32288e){var _0x2a19cf={},_0x6dcbd6={},_0x49dec4={'count':0x0,'rows':[]};var _0x121ad7=_['map'](db[_0xdae7('0x2a')][_0xdae7('0x2b')],function(_0x2eb91d){return{'name':_0x2eb91d['fieldName'],'type':_0x2eb91d['type'][_0xdae7('0x2c')]};});_0x6dcbd6[_0xdae7('0x2d')]=_[_0xdae7('0x2e')](_0x121ad7,'name');_0x6dcbd6['query']=_[_0xdae7('0x2f')](_0x2bb160[_0xdae7('0x30')]);_0x6dcbd6['filters']=_['intersection'](_0x6dcbd6[_0xdae7('0x2d')],_0x6dcbd6[_0xdae7('0x30')]);_0x2a19cf[_0xdae7('0x31')]=_[_0xdae7('0x32')](_0x6dcbd6['model'],qs[_0xdae7('0x33')](_0x2bb160['query']['fields']));_0x2a19cf[_0xdae7('0x31')]=_0x2a19cf['attributes'][_0xdae7('0x34')]?_0x2a19cf[_0xdae7('0x31')]:_0x6dcbd6[_0xdae7('0x2d')];if(!_0x2bb160[_0xdae7('0x30')][_0xdae7('0x35')](_0xdae7('0x36'))){_0x2a19cf[_0xdae7('0x1d')]=qs[_0xdae7('0x1d')](_0x2bb160['query'][_0xdae7('0x1d')]);_0x2a19cf[_0xdae7('0x1a')]=qs[_0xdae7('0x1a')](_0x2bb160[_0xdae7('0x30')][_0xdae7('0x1a')]);}_0x2a19cf[_0xdae7('0x37')]=qs[_0xdae7('0x38')](_0x2bb160[_0xdae7('0x30')][_0xdae7('0x38')]);_0x2a19cf[_0xdae7('0x39')]=qs[_0xdae7('0x3a')](_[_0xdae7('0x3b')](_0x2bb160['query'],_0x6dcbd6['filters']),_0x121ad7);if(_0x2bb160[_0xdae7('0x30')]['filter']){_0x2a19cf[_0xdae7('0x39')]=_[_0xdae7('0x3c')](_0x2a19cf[_0xdae7('0x39')],{'$or':_[_0xdae7('0x2e')](_0x121ad7,function(_0x2c280a){if(_0x2c280a[_0xdae7('0x3d')]!==_0xdae7('0x3e')){var _0x4aa141={};_0x4aa141[_0x2c280a[_0xdae7('0x28')]]={'$like':'%'+_0x2bb160['query'][_0xdae7('0x3f')]+'%'};return _0x4aa141;}})});}_0x2a19cf=_['merge']({},_0x2a19cf,_0x2bb160[_0xdae7('0x40')]);var _0x1fbb8a={'where':_0x2a19cf[_0xdae7('0x39')]};return db[_0xdae7('0x2a')][_0xdae7('0x1c')](_0x1fbb8a)['then'](function(_0x119920){_0x49dec4[_0xdae7('0x1c')]=_0x119920;if(_0x2bb160['query'][_0xdae7('0x41')]){_0x2a19cf[_0xdae7('0x42')]=[{'all':!![]}];}return db[_0xdae7('0x2a')][_0xdae7('0x43')](_0x2a19cf);})['then'](function(_0x5dfbe6){_0x49dec4['rows']=_0x5dfbe6;return _0x49dec4;})['then'](respondWithFilteredResult(_0x32288e,_0x2a19cf))[_0xdae7('0x44')](handleError(_0x32288e,null));};exports['show']=function(_0x5da419,_0x3d2963){var _0x4e583d={'raw':!![],'where':{'id':_0x5da419[_0xdae7('0x45')]['id']}},_0x3ae3e8={};_0x3ae3e8['model']=_[_0xdae7('0x2f')](db['AnalyticTreeReport']['rawAttributes']);_0x3ae3e8['query']=_[_0xdae7('0x2f')](_0x5da419[_0xdae7('0x30')]);_0x3ae3e8[_0xdae7('0x3a')]=_[_0xdae7('0x32')](_0x3ae3e8[_0xdae7('0x2d')],_0x3ae3e8[_0xdae7('0x30')]);_0x4e583d['attributes']=_[_0xdae7('0x32')](_0x3ae3e8[_0xdae7('0x2d')],qs['fields'](_0x5da419['query'][_0xdae7('0x33')]));_0x4e583d[_0xdae7('0x31')]=_0x4e583d[_0xdae7('0x31')]['length']?_0x4e583d['attributes']:_0x3ae3e8[_0xdae7('0x2d')];if(_0x5da419[_0xdae7('0x30')]['includeAll']){_0x4e583d[_0xdae7('0x42')]=[{'all':!![]}];}_0x4e583d=_[_0xdae7('0x3c')]({},_0x4e583d,_0x5da419[_0xdae7('0x40')]);return db['AnalyticTreeReport'][_0xdae7('0x46')](_0x4e583d)[_0xdae7('0x23')](handleEntityNotFound(_0x3d2963,null))[_0xdae7('0x23')](respondWithResult(_0x3d2963,null))[_0xdae7('0x44')](handleError(_0x3d2963,null));};exports[_0xdae7('0x47')]=function(_0x3f7811,_0x352854){return db[_0xdae7('0x2a')][_0xdae7('0x47')](_0x3f7811['body'],{})[_0xdae7('0x23')](respondWithResult(_0x352854,0xc9))[_0xdae7('0x44')](handleError(_0x352854,null));};exports[_0xdae7('0x22')]=function(_0x4035bf,_0x2e1dc3){if(_0x4035bf['body']['id']){delete _0x4035bf[_0xdae7('0x48')]['id'];}return db[_0xdae7('0x2a')]['find']({'where':{'id':_0x4035bf[_0xdae7('0x45')]['id']}})['then'](handleEntityNotFound(_0x2e1dc3,null))[_0xdae7('0x23')](saveUpdates(_0x4035bf[_0xdae7('0x48')],null))[_0xdae7('0x23')](respondWithResult(_0x2e1dc3,null))[_0xdae7('0x44')](handleError(_0x2e1dc3,null));};exports[_0xdae7('0x24')]=function(_0x55a428,_0x17bc7b){return db['AnalyticTreeReport'][_0xdae7('0x46')]({'where':{'id':_0x55a428[_0xdae7('0x45')]['id']}})['then'](handleEntityNotFound(_0x17bc7b,null))['then'](removeEntity(_0x17bc7b,null))[_0xdae7('0x44')](handleError(_0x17bc7b,null));};
\ No newline at end of file
+var _0x6a41=['fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','AnalyticTreeReport','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','options','includeAll','include','findAll','rows','catch','params','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','ejs'];(function(_0x19e2a6,_0x58641d){var _0xd77354=function(_0x5d6f14){while(--_0x5d6f14){_0x19e2a6['push'](_0x19e2a6['shift']());}};_0xd77354(++_0x58641d);}(_0x6a41,0x8b));var _0x16a4=function(_0x2bb55c,_0x568d41){_0x2bb55c=_0x2bb55c-0x0;var _0xc0a56=_0x6a41[_0x2bb55c];return _0xc0a56;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x16a4('0x0'));var zipdir=require(_0x16a4('0x1'));var jsonpatch=require(_0x16a4('0x2'));var rp=require(_0x16a4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x16a4('0x4'));var util=require(_0x16a4('0x5'));var path=require(_0x16a4('0x6'));var sox=require(_0x16a4('0x7'));var csv=require('to-csv');var ejs=require(_0x16a4('0x8'));var fs=require('fs');var fs_extra=require(_0x16a4('0x9'));var _=require('lodash');var squel=require(_0x16a4('0xa'));var crypto=require(_0x16a4('0xb'));var jsforce=require(_0x16a4('0xc'));var deskjs=require(_0x16a4('0xd'));var toCsv=require(_0x16a4('0xe'));var querystring=require(_0x16a4('0xf'));var Papa=require('papaparse');var Redis=require(_0x16a4('0x10'));var authService=require(_0x16a4('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x16a4('0x12'));var hardwareService=require(_0x16a4('0x13'));var logger=require(_0x16a4('0x14'))(_0x16a4('0x15'));var utils=require(_0x16a4('0x16'));var config=require(_0x16a4('0x17'));var licenseUtil=require(_0x16a4('0x18'));var db=require(_0x16a4('0x19'))['db'];function respondWithStatusCode(_0x31469f,_0x4f3c52){_0x4f3c52=_0x4f3c52||0xcc;return function(_0x18e622){if(_0x18e622){return _0x31469f['sendStatus'](_0x4f3c52);}return _0x31469f[_0x16a4('0x1a')](_0x4f3c52)[_0x16a4('0x1b')]();};}function respondWithResult(_0x3bdae9,_0x2c0ad0){_0x2c0ad0=_0x2c0ad0||0xc8;return function(_0x27b89b){if(_0x27b89b){return _0x3bdae9[_0x16a4('0x1a')](_0x2c0ad0)[_0x16a4('0x1c')](_0x27b89b);}};}function respondWithFilteredResult(_0x5c490b,_0x16ae29){return function(_0x35634e){if(_0x35634e){var _0x4ae4cf=typeof _0x16ae29[_0x16a4('0x1d')]===_0x16a4('0x1e')&&typeof _0x16ae29[_0x16a4('0x1f')]===_0x16a4('0x1e');var _0x23a3ab=_0x35634e[_0x16a4('0x20')];var _0x1ecead=_0x4ae4cf?0x0:_0x16ae29['offset'];var _0x2824fd=_0x4ae4cf?_0x35634e[_0x16a4('0x20')]:_0x16ae29[_0x16a4('0x1d')]+_0x16ae29[_0x16a4('0x1f')];var _0x167f1a;if(_0x2824fd>=_0x23a3ab){_0x2824fd=_0x23a3ab;_0x167f1a=0xc8;}else{_0x167f1a=0xce;}_0x5c490b[_0x16a4('0x1a')](_0x167f1a);return _0x5c490b['set'](_0x16a4('0x21'),_0x1ecead+'-'+_0x2824fd+'/'+_0x23a3ab)[_0x16a4('0x1c')](_0x35634e);}return null;};}function patchUpdates(_0x49a642){return function(_0x3c3c76){try{jsonpatch[_0x16a4('0x22')](_0x3c3c76,_0x49a642,!![]);}catch(_0x277969){return BPromise[_0x16a4('0x23')](_0x277969);}return _0x3c3c76[_0x16a4('0x24')]();};}function saveUpdates(_0x580c59,_0x50f516){return function(_0x1cd611){if(_0x1cd611){return _0x1cd611[_0x16a4('0x25')](_0x580c59)[_0x16a4('0x26')](function(_0xa3bc4c){return _0xa3bc4c;});}return null;};}function removeEntity(_0x467cb2,_0x2afd29){return function(_0x3c75c3){if(_0x3c75c3){return _0x3c75c3[_0x16a4('0x27')]()[_0x16a4('0x26')](function(){_0x467cb2[_0x16a4('0x1a')](0xcc)[_0x16a4('0x1b')]();});}};}function handleEntityNotFound(_0x1c1c51,_0x410a06){return function(_0x2eb5de){if(!_0x2eb5de){_0x1c1c51[_0x16a4('0x28')](0x194);}return _0x2eb5de;};}function handleError(_0x37976b,_0x2ce370){_0x2ce370=_0x2ce370||0x1f4;return function(_0x3353bb){logger[_0x16a4('0x29')](_0x3353bb[_0x16a4('0x2a')]);if(_0x3353bb['name']){delete _0x3353bb[_0x16a4('0x2b')];}_0x37976b[_0x16a4('0x1a')](_0x2ce370)['send'](_0x3353bb);};}exports[_0x16a4('0x2c')]=function(_0x267143,_0xcb962d){var _0x57e5fa={},_0x2de3ef={},_0x2f5d9f={'count':0x0,'rows':[]};var _0x17d598=_[_0x16a4('0x2d')](db[_0x16a4('0x2e')][_0x16a4('0x2f')],function(_0x9b958e){return{'name':_0x9b958e['fieldName'],'type':_0x9b958e[_0x16a4('0x30')][_0x16a4('0x31')]};});_0x2de3ef[_0x16a4('0x32')]=_[_0x16a4('0x2d')](_0x17d598,_0x16a4('0x2b'));_0x2de3ef[_0x16a4('0x33')]=_[_0x16a4('0x34')](_0x267143[_0x16a4('0x33')]);_0x2de3ef[_0x16a4('0x35')]=_['intersection'](_0x2de3ef[_0x16a4('0x32')],_0x2de3ef[_0x16a4('0x33')]);_0x57e5fa[_0x16a4('0x36')]=_[_0x16a4('0x37')](_0x2de3ef['model'],qs[_0x16a4('0x38')](_0x267143[_0x16a4('0x33')][_0x16a4('0x38')]));_0x57e5fa[_0x16a4('0x36')]=_0x57e5fa[_0x16a4('0x36')][_0x16a4('0x39')]?_0x57e5fa[_0x16a4('0x36')]:_0x2de3ef['model'];if(!_0x267143['query'][_0x16a4('0x3a')](_0x16a4('0x3b'))){_0x57e5fa['limit']=qs['limit'](_0x267143['query'][_0x16a4('0x1f')]);_0x57e5fa[_0x16a4('0x1d')]=qs[_0x16a4('0x1d')](_0x267143[_0x16a4('0x33')][_0x16a4('0x1d')]);}_0x57e5fa['order']=qs[_0x16a4('0x3c')](_0x267143[_0x16a4('0x33')][_0x16a4('0x3c')]);_0x57e5fa[_0x16a4('0x3d')]=qs[_0x16a4('0x35')](_[_0x16a4('0x3e')](_0x267143[_0x16a4('0x33')],_0x2de3ef[_0x16a4('0x35')]),_0x17d598);if(_0x267143['query']['filter']){_0x57e5fa[_0x16a4('0x3d')]=_['merge'](_0x57e5fa[_0x16a4('0x3d')],{'$or':_[_0x16a4('0x2d')](_0x17d598,function(_0x3e1a55){if(_0x3e1a55[_0x16a4('0x30')]!=='VIRTUAL'){var _0x14dc59={};_0x14dc59[_0x3e1a55[_0x16a4('0x2b')]]={'$like':'%'+_0x267143[_0x16a4('0x33')][_0x16a4('0x3f')]+'%'};return _0x14dc59;}})});}_0x57e5fa=_['merge']({},_0x57e5fa,_0x267143[_0x16a4('0x40')]);var _0x191e70={'where':_0x57e5fa[_0x16a4('0x3d')]};return db['AnalyticTreeReport'][_0x16a4('0x20')](_0x191e70)[_0x16a4('0x26')](function(_0x485b14){_0x2f5d9f['count']=_0x485b14;if(_0x267143[_0x16a4('0x33')][_0x16a4('0x41')]){_0x57e5fa[_0x16a4('0x42')]=[{'all':!![]}];}return db[_0x16a4('0x2e')][_0x16a4('0x43')](_0x57e5fa);})[_0x16a4('0x26')](function(_0x57766f){_0x2f5d9f[_0x16a4('0x44')]=_0x57766f;return _0x2f5d9f;})['then'](respondWithFilteredResult(_0xcb962d,_0x57e5fa))[_0x16a4('0x45')](handleError(_0xcb962d,null));};exports['show']=function(_0x584a40,_0x563667){var _0x4dee22={'raw':!![],'where':{'id':_0x584a40[_0x16a4('0x46')]['id']}},_0x1b8c0f={};_0x1b8c0f[_0x16a4('0x32')]=_[_0x16a4('0x34')](db[_0x16a4('0x2e')][_0x16a4('0x2f')]);_0x1b8c0f[_0x16a4('0x33')]=_[_0x16a4('0x34')](_0x584a40[_0x16a4('0x33')]);_0x1b8c0f[_0x16a4('0x35')]=_[_0x16a4('0x37')](_0x1b8c0f[_0x16a4('0x32')],_0x1b8c0f[_0x16a4('0x33')]);_0x4dee22[_0x16a4('0x36')]=_[_0x16a4('0x37')](_0x1b8c0f['model'],qs[_0x16a4('0x38')](_0x584a40['query'][_0x16a4('0x38')]));_0x4dee22[_0x16a4('0x36')]=_0x4dee22[_0x16a4('0x36')][_0x16a4('0x39')]?_0x4dee22[_0x16a4('0x36')]:_0x1b8c0f['model'];if(_0x584a40[_0x16a4('0x33')][_0x16a4('0x41')]){_0x4dee22[_0x16a4('0x42')]=[{'all':!![]}];}_0x4dee22=_['merge']({},_0x4dee22,_0x584a40['options']);return db[_0x16a4('0x2e')][_0x16a4('0x47')](_0x4dee22)['then'](handleEntityNotFound(_0x563667,null))[_0x16a4('0x26')](respondWithResult(_0x563667,null))['catch'](handleError(_0x563667,null));};exports[_0x16a4('0x48')]=function(_0x230481,_0x236c92){return db[_0x16a4('0x2e')][_0x16a4('0x48')](_0x230481[_0x16a4('0x49')],{})[_0x16a4('0x26')](respondWithResult(_0x236c92,0xc9))[_0x16a4('0x45')](handleError(_0x236c92,null));};exports[_0x16a4('0x25')]=function(_0x3ec36e,_0x46398b){if(_0x3ec36e[_0x16a4('0x49')]['id']){delete _0x3ec36e[_0x16a4('0x49')]['id'];}return db[_0x16a4('0x2e')][_0x16a4('0x47')]({'where':{'id':_0x3ec36e[_0x16a4('0x46')]['id']}})[_0x16a4('0x26')](handleEntityNotFound(_0x46398b,null))[_0x16a4('0x26')](saveUpdates(_0x3ec36e[_0x16a4('0x49')],null))[_0x16a4('0x26')](respondWithResult(_0x46398b,null))[_0x16a4('0x45')](handleError(_0x46398b,null));};exports['destroy']=function(_0x9dbd3d,_0x429e61){return db[_0x16a4('0x2e')][_0x16a4('0x47')]({'where':{'id':_0x9dbd3d[_0x16a4('0x46')]['id']}})['then'](handleEntityNotFound(_0x429e61,null))[_0x16a4('0x26')](removeEntity(_0x429e61,null))['catch'](handleError(_0x429e61,null));};
\ No newline at end of file
index 191b989..3abc651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e65=['exports','define','AnalyticTreeReport','analytics_report_trees','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes'];(function(_0x5ad190,_0xd39c9e){var _0x518ed3=function(_0x57f03a){while(--_0x57f03a){_0x5ad190['push'](_0x5ad190['shift']());}};_0x518ed3(++_0xd39c9e);}(_0x0e65,0x154));var _0x50e6=function(_0xb0a611,_0x53d688){_0xb0a611=_0xb0a611-0x0;var _0x2a800e=_0x0e65[_0xb0a611];return _0x2a800e;};'use strict';var _=require('lodash');var util=require(_0x50e6('0x0'));var logger=require(_0x50e6('0x1'))(_0x50e6('0x2'));var moment=require(_0x50e6('0x3'));var BPromise=require(_0x50e6('0x4'));var rp=require(_0x50e6('0x5'));var fs=require('fs');var path=require(_0x50e6('0x6'));var rimraf=require(_0x50e6('0x7'));var config=require(_0x50e6('0x8'));var attributes=require(_0x50e6('0x9'));module[_0x50e6('0xa')]=function(_0x10bd5d,_0x1d028a){return _0x10bd5d[_0x50e6('0xb')](_0x50e6('0xc'),attributes,{'tableName':_0x50e6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5656=['analytics_report_trees','lodash','util','../../config/logger','api','moment','bluebird','rimraf','define'];(function(_0x43a8e8,_0x4095ec){var _0x2b13b1=function(_0x19092f){while(--_0x19092f){_0x43a8e8['push'](_0x43a8e8['shift']());}};_0x2b13b1(++_0x4095ec);}(_0x5656,0xeb));var _0x6565=function(_0x2aec1f,_0x234d35){_0x2aec1f=_0x2aec1f-0x0;var _0x20c0e2=_0x5656[_0x2aec1f];return _0x20c0e2;};'use strict';var _=require(_0x6565('0x0'));var util=require(_0x6565('0x1'));var logger=require(_0x6565('0x2'))(_0x6565('0x3'));var moment=require(_0x6565('0x4'));var BPromise=require(_0x6565('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6565('0x6'));var config=require('../../config/environment');var attributes=require('./analyticTreeReport.attributes');module['exports']=function(_0x3c3baa,_0xd9eafc){return _0x3c3baa[_0x6565('0x7')]('AnalyticTreeReport',attributes,{'tableName':_0x6565('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e74f1ef..fabed09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x4cdd55,_0x25111d){var _0x2f4d62=function(_0x5bda55){while(--_0x5bda55){_0x4cdd55['push'](_0x4cdd55['shift']());}};_0x2f4d62(++_0x25111d);}(_0x5f66,0x1a0));var _0x65f6=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x5f66[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('AnalyticTreeReport,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
+var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x459335,_0x2e95dd){var _0x50f00b=function(_0x5ccdaf){while(--_0x5ccdaf){_0x459335['push'](_0x459335['shift']());}};_0x50f00b(++_0x2e95dd);}(_0xadb5,0xad));var _0x5adb=function(_0x126298,_0x2ae01d){_0x126298=_0x126298-0x0;var _0x3f60f7=_0xadb5[_0x126298];return _0x3f60f7;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
index 081013a..4ed8a8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94fa=['index','/:id','show','post','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated'];(function(_0x47f551,_0x4ea97f){var _0x100233=function(_0x1a1726){while(--_0x1a1726){_0x47f551['push'](_0x47f551['shift']());}};_0x100233(++_0x4ea97f);}(_0x94fa,0x104));var _0xa94f=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x94fa[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0xa94f('0x0'));var util=require(_0xa94f('0x1'));var path=require(_0xa94f('0x2'));var timeout=require(_0xa94f('0x3'));var express=require(_0xa94f('0x4'));var router=express[_0xa94f('0x5')]();var fs_extra=require(_0xa94f('0x6'));var auth=require(_0xa94f('0x7'));var interaction=require(_0xa94f('0x8'));var config=require(_0xa94f('0x9'));var controller=require(_0xa94f('0xa'));router[_0xa94f('0xb')]('/',auth[_0xa94f('0xc')](),controller[_0xa94f('0xd')]);router[_0xa94f('0xb')](_0xa94f('0xe'),auth['isAuthenticated'](),controller[_0xa94f('0xf')]);router[_0xa94f('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0xa94f('0x11')](_0xa94f('0xe'),auth[_0xa94f('0xc')](),controller[_0xa94f('0x12')]);router[_0xa94f('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xa94f('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xd8c0=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticTreeReport.controller','get','index','show','put','/:id','isAuthenticated','delete','destroy','exports'];(function(_0x28b1ff,_0x314a8b){var _0x571e44=function(_0xdf0da4){while(--_0xdf0da4){_0x28b1ff['push'](_0x28b1ff['shift']());}};_0x571e44(++_0x314a8b);}(_0xd8c0,0x132));var _0x0d8c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd8c0[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x0d8c('0x0'));var path=require(_0x0d8c('0x1'));var timeout=require(_0x0d8c('0x2'));var express=require('express');var router=express[_0x0d8c('0x3')]();var fs_extra=require(_0x0d8c('0x4'));var auth=require(_0x0d8c('0x5'));var interaction=require(_0x0d8c('0x6'));var config=require('../../config/environment');var controller=require(_0x0d8c('0x7'));router[_0x0d8c('0x8')]('/',auth['isAuthenticated'](),controller[_0x0d8c('0x9')]);router[_0x0d8c('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0d8c('0xa')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x0d8c('0xb')](_0x0d8c('0xc'),auth[_0x0d8c('0xd')](),controller['update']);router[_0x0d8c('0xe')]('/:id',auth[_0x0d8c('0xd')](),controller[_0x0d8c('0xf')]);module[_0x0d8c('0x10')]=router;
\ No newline at end of file
index 105afd8..6641557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe43c=['sequelize','exports','STRING'];(function(_0xb80049,_0x442f7d){var _0x4ece41=function(_0x571734){while(--_0x571734){_0xb80049['push'](_0xb80049['shift']());}};_0x4ece41(++_0x442f7d);}(_0xe43c,0x180));var _0xce43=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xe43c[_0x5f1391];return _0x50ebe3;};'use strict';var Sequelize=require(_0xce43('0x0'));module[_0xce43('0x1')]={'name':{'type':Sequelize[_0xce43('0x2')]},'basename':{'type':Sequelize[_0xce43('0x2')]},'type':{'type':Sequelize[_0xce43('0x2')]}};
\ No newline at end of file
+var _0x33a1=['sequelize','exports'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0x33a1,0x7c));var _0x133a=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x33a1[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require(_0x133a('0x0'));module[_0x133a('0x1')]={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1e985b0..a5e80b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfca3=['hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','merge','includeAll','include','findAll','rows','catch','show','params','options','clone','find','get','omit','updatedAt','body','create','file','mimetype','download','findOne','join','root','server/files/attachments/','offline-chat/','basename','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','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','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','destroy','sendStatus','error','stack','name','send','index','map','Attachment','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length'];(function(_0x3da6ae,_0x13fdf4){var _0x1aa8df=function(_0xaac51){while(--_0xaac51){_0x3da6ae['push'](_0x3da6ae['shift']());}};_0x1aa8df(++_0x13fdf4);}(_0xfca3,0x1ee));var _0x3fca=function(_0x45e392,_0x4241bb){_0x45e392=_0x45e392-0x0;var _0x585b85=_0xfca3[_0x45e392];return _0x585b85;};'use strict';var emlformat=require(_0x3fca('0x0'));var rimraf=require(_0x3fca('0x1'));var zipdir=require(_0x3fca('0x2'));var jsonpatch=require(_0x3fca('0x3'));var rp=require(_0x3fca('0x4'));var moment=require(_0x3fca('0x5'));var BPromise=require(_0x3fca('0x6'));var Mustache=require('mustache');var util=require(_0x3fca('0x7'));var path=require(_0x3fca('0x8'));var sox=require(_0x3fca('0x9'));var csv=require('to-csv');var ejs=require(_0x3fca('0xa'));var fs=require('fs');var fs_extra=require(_0x3fca('0xb'));var _=require(_0x3fca('0xc'));var squel=require(_0x3fca('0xd'));var crypto=require(_0x3fca('0xe'));var jsforce=require(_0x3fca('0xf'));var deskjs=require(_0x3fca('0x10'));var toCsv=require(_0x3fca('0x11'));var querystring=require(_0x3fca('0x12'));var Papa=require(_0x3fca('0x13'));var Redis=require(_0x3fca('0x14'));var authService=require(_0x3fca('0x15'));var qs=require(_0x3fca('0x16'));var as=require(_0x3fca('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3fca('0x18'))(_0x3fca('0x19'));var utils=require('../../config/utils');var config=require(_0x3fca('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x228982,_0x5d7f77){_0x5d7f77=_0x5d7f77||0xcc;return function(_0x424280){if(_0x424280){return _0x228982['sendStatus'](_0x5d7f77);}return _0x228982[_0x3fca('0x1b')](_0x5d7f77)[_0x3fca('0x1c')]();};}function respondWithResult(_0x46f2f0,_0x563a5a){_0x563a5a=_0x563a5a||0xc8;return function(_0x1586dc){if(_0x1586dc){return _0x46f2f0['status'](_0x563a5a)[_0x3fca('0x1d')](_0x1586dc);}};}function respondWithFilteredResult(_0x57c7cc,_0x2e80b8){return function(_0x83dfba){if(_0x83dfba){var _0x24a636=typeof _0x2e80b8['offset']===_0x3fca('0x1e')&&typeof _0x2e80b8[_0x3fca('0x1f')]==='undefined';var _0x4c4315=_0x83dfba[_0x3fca('0x20')];var _0x3ab131=_0x24a636?0x0:_0x2e80b8[_0x3fca('0x21')];var _0x3bf17e=_0x24a636?_0x83dfba[_0x3fca('0x20')]:_0x2e80b8[_0x3fca('0x21')]+_0x2e80b8[_0x3fca('0x1f')];var _0xfd0919;if(_0x3bf17e>=_0x4c4315){_0x3bf17e=_0x4c4315;_0xfd0919=0xc8;}else{_0xfd0919=0xce;}_0x57c7cc[_0x3fca('0x1b')](_0xfd0919);return _0x57c7cc[_0x3fca('0x22')](_0x3fca('0x23'),_0x3ab131+'-'+_0x3bf17e+'/'+_0x4c4315)['json'](_0x83dfba);}return null;};}function patchUpdates(_0x487122){return function(_0x5c802d){try{jsonpatch[_0x3fca('0x24')](_0x5c802d,_0x487122,!![]);}catch(_0x5a46a0){return BPromise['reject'](_0x5a46a0);}return _0x5c802d['save']();};}function saveUpdates(_0x4be6fc,_0x3c680d){return function(_0x3d2785){if(_0x3d2785){return _0x3d2785[_0x3fca('0x25')](_0x4be6fc)[_0x3fca('0x26')](function(_0x8dc359){return _0x8dc359;});}return null;};}function removeEntity(_0x236582,_0x13f097){return function(_0x10ead3){if(_0x10ead3){return _0x10ead3[_0x3fca('0x27')]()[_0x3fca('0x26')](function(){_0x236582[_0x3fca('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x19cb36,_0x1a2ee8){return function(_0xdfe4a){if(!_0xdfe4a){_0x19cb36[_0x3fca('0x28')](0x194);}return _0xdfe4a;};}function handleError(_0x1d8997,_0x110c28){_0x110c28=_0x110c28||0x1f4;return function(_0x50a668){logger[_0x3fca('0x29')](_0x50a668[_0x3fca('0x2a')]);if(_0x50a668[_0x3fca('0x2b')]){delete _0x50a668[_0x3fca('0x2b')];}_0x1d8997['status'](_0x110c28)[_0x3fca('0x2c')](_0x50a668);};}exports[_0x3fca('0x2d')]=function(_0x450ae1,_0x140246){var _0x56ae9d={},_0x3cb031={},_0x509d2d={'count':0x0,'rows':[]};var _0x3dc16f=_[_0x3fca('0x2e')](db[_0x3fca('0x2f')][_0x3fca('0x30')],function(_0x1f6ef6){return{'name':_0x1f6ef6[_0x3fca('0x31')],'type':_0x1f6ef6['type'][_0x3fca('0x32')]};});_0x3cb031[_0x3fca('0x33')]=_['map'](_0x3dc16f,_0x3fca('0x2b'));_0x3cb031[_0x3fca('0x34')]=_[_0x3fca('0x35')](_0x450ae1[_0x3fca('0x34')]);_0x3cb031['filters']=_[_0x3fca('0x36')](_0x3cb031[_0x3fca('0x33')],_0x3cb031['query']);_0x56ae9d['attributes']=_[_0x3fca('0x36')](_0x3cb031[_0x3fca('0x33')],qs['fields'](_0x450ae1['query'][_0x3fca('0x37')]));_0x56ae9d[_0x3fca('0x38')]=_0x56ae9d[_0x3fca('0x38')][_0x3fca('0x39')]?_0x56ae9d[_0x3fca('0x38')]:_0x3cb031[_0x3fca('0x33')];if(!_0x450ae1['query'][_0x3fca('0x3a')](_0x3fca('0x3b'))){_0x56ae9d[_0x3fca('0x1f')]=qs[_0x3fca('0x1f')](_0x450ae1[_0x3fca('0x34')][_0x3fca('0x1f')]);_0x56ae9d[_0x3fca('0x21')]=qs['offset'](_0x450ae1['query']['offset']);}_0x56ae9d[_0x3fca('0x3c')]=qs[_0x3fca('0x3d')](_0x450ae1[_0x3fca('0x34')][_0x3fca('0x3d')]);_0x56ae9d[_0x3fca('0x3e')]=qs[_0x3fca('0x3f')](_[_0x3fca('0x40')](_0x450ae1['query'],_0x3cb031[_0x3fca('0x3f')]),_0x3dc16f);if(_0x450ae1['query'][_0x3fca('0x41')]){_0x56ae9d[_0x3fca('0x3e')]=_['merge'](_0x56ae9d[_0x3fca('0x3e')],{'$or':_[_0x3fca('0x2e')](_0x3dc16f,function(_0x386574){if(_0x386574[_0x3fca('0x42')]!=='VIRTUAL'){var _0xc619d4={};_0xc619d4[_0x386574['name']]={'$like':'%'+_0x450ae1[_0x3fca('0x34')][_0x3fca('0x41')]+'%'};return _0xc619d4;}})});}_0x56ae9d=_[_0x3fca('0x43')]({},_0x56ae9d,_0x450ae1['options']);var _0x13f1bb={'where':_0x56ae9d[_0x3fca('0x3e')]};return db['Attachment']['count'](_0x13f1bb)['then'](function(_0x9ff020){_0x509d2d[_0x3fca('0x20')]=_0x9ff020;if(_0x450ae1[_0x3fca('0x34')][_0x3fca('0x44')]){_0x56ae9d[_0x3fca('0x45')]=[{'all':!![]}];}return db['Attachment'][_0x3fca('0x46')](_0x56ae9d);})['then'](function(_0x450f78){_0x509d2d[_0x3fca('0x47')]=_0x450f78;return _0x509d2d;})[_0x3fca('0x26')](respondWithFilteredResult(_0x140246,_0x56ae9d))[_0x3fca('0x48')](handleError(_0x140246,null));};exports[_0x3fca('0x49')]=function(_0xd37613,_0xdab028){var _0x25c87e={'raw':!![],'where':{'id':_0xd37613[_0x3fca('0x4a')]['id']}},_0x19277a={};_0x19277a['model']=_[_0x3fca('0x35')](db[_0x3fca('0x2f')][_0x3fca('0x30')]);_0x19277a[_0x3fca('0x34')]=_[_0x3fca('0x35')](_0xd37613['query']);_0x19277a[_0x3fca('0x3f')]=_[_0x3fca('0x36')](_0x19277a[_0x3fca('0x33')],_0x19277a[_0x3fca('0x34')]);_0x25c87e['attributes']=_[_0x3fca('0x36')](_0x19277a[_0x3fca('0x33')],qs[_0x3fca('0x37')](_0xd37613[_0x3fca('0x34')]['fields']));_0x25c87e[_0x3fca('0x38')]=_0x25c87e[_0x3fca('0x38')][_0x3fca('0x39')]?_0x25c87e[_0x3fca('0x38')]:_0x19277a[_0x3fca('0x33')];if(_0xd37613[_0x3fca('0x34')][_0x3fca('0x44')]){_0x25c87e[_0x3fca('0x45')]=[{'all':!![]}];}_0x25c87e=_[_0x3fca('0x43')]({},_0x25c87e,_0xd37613[_0x3fca('0x4b')]);return db['Attachment']['find'](_0x25c87e)[_0x3fca('0x26')](handleEntityNotFound(_0xdab028,null))[_0x3fca('0x26')](respondWithResult(_0xdab028,null))['catch'](handleError(_0xdab028,null));};exports[_0x3fca('0x4c')]=function(_0x291a9c,_0x525cde){var _0x143280={'where':{'id':_0x291a9c[_0x3fca('0x4a')]['id']}},_0x39f8cb={};_0x39f8cb[_0x3fca('0x33')]=_[_0x3fca('0x35')](db['Attachment'][_0x3fca('0x30')]);_0x143280[_0x3fca('0x38')]=_[_0x3fca('0x36')](_0x39f8cb['model'],qs[_0x3fca('0x37')](_0x291a9c['query'][_0x3fca('0x37')]));_0x143280[_0x3fca('0x38')]=_0x143280[_0x3fca('0x38')][_0x3fca('0x39')]?_0x143280[_0x3fca('0x38')]:_0x39f8cb['model'];if(_0x291a9c[_0x3fca('0x34')]['includeAll']){_0x143280[_0x3fca('0x45')]=[{'all':!![]}];}_0x143280=_[_0x3fca('0x43')]({},_0x143280,_0x291a9c[_0x3fca('0x4b')]);return db[_0x3fca('0x2f')][_0x3fca('0x4d')](_0x143280)[_0x3fca('0x26')](handleEntityNotFound(_0x525cde,null))['then'](function(_0x5ab4e5){if(_0x5ab4e5){var _0x5b2fcf=_0x5ab4e5[_0x3fca('0x4e')]({'plain':!![]});_0x5b2fcf=qs[_0x3fca('0x4f')](_0x5b2fcf,['id','createdAt',_0x3fca('0x50')]);_0x291a9c['body']=_[_0x3fca('0x4f')](_0x291a9c['body'],['id','createdAt','updatedAt']);return db[_0x3fca('0x2f')]['create'](_[_0x3fca('0x43')](_0x5b2fcf,_0x291a9c[_0x3fca('0x51')]),{'include':_0x291a9c[_0x3fca('0x34')]['includeAll']?[{'all':!![]}]:undefined});}})[_0x3fca('0x26')](respondWithResult(_0x525cde,0xc9))[_0x3fca('0x48')](handleError(_0x525cde,null));};exports[_0x3fca('0x25')]=function(_0x4408e4,_0xde3305){if(_0x4408e4[_0x3fca('0x51')]['id']){delete _0x4408e4[_0x3fca('0x51')]['id'];}return db[_0x3fca('0x2f')][_0x3fca('0x4d')]({'where':{'id':_0x4408e4[_0x3fca('0x4a')]['id']}})[_0x3fca('0x26')](handleEntityNotFound(_0xde3305,null))[_0x3fca('0x26')](saveUpdates(_0x4408e4[_0x3fca('0x51')],null))[_0x3fca('0x26')](respondWithResult(_0xde3305,null))[_0x3fca('0x48')](handleError(_0xde3305,null));};exports[_0x3fca('0x27')]=function(_0x3412d8,_0x269b7d){return db[_0x3fca('0x2f')][_0x3fca('0x4d')]({'where':{'id':_0x3412d8['params']['id']}})[_0x3fca('0x26')](handleEntityNotFound(_0x269b7d,null))[_0x3fca('0x26')](removeEntity(_0x269b7d,null))[_0x3fca('0x48')](handleError(_0x269b7d,null));};exports[_0x3fca('0x52')]=function(_0x569aa9,_0x42d946,_0x39e20d){_0x569aa9[_0x3fca('0x51')][_0x3fca('0x2b')]=_0x569aa9[_0x3fca('0x53')]['originalname'];_0x569aa9['body']['basename']=_0x569aa9[_0x3fca('0x53')]['filename'];_0x569aa9[_0x3fca('0x51')][_0x3fca('0x42')]=_0x569aa9['file'][_0x3fca('0x54')];return db[_0x3fca('0x2f')][_0x3fca('0x52')](_0x569aa9[_0x3fca('0x51')])[_0x3fca('0x26')](respondWithResult(_0x42d946,0xc9))[_0x3fca('0x48')](handleError(_0x42d946,null));};exports[_0x3fca('0x55')]=function(_0x5b1a01,_0x111d24,_0x399279){return db['Attachment'][_0x3fca('0x56')]({'where':{'id':_0x5b1a01[_0x3fca('0x4a')]['id']},'raw':!![]})[_0x3fca('0x26')](handleEntityNotFound(_0x111d24,null))[_0x3fca('0x26')](function(_0x422e6e){if(_0x422e6e){var _0x581b85=_0x422e6e['ChatOfflineMessageId']!==null;var _0x2f42bf=path[_0x3fca('0x57')](config[_0x3fca('0x58')],_0x3fca('0x59'));if(_0x581b85){_0x2f42bf=path[_0x3fca('0x57')](_0x2f42bf,_0x3fca('0x5a'));}var _0xfabbf7=path[_0x3fca('0x57')](_0x2f42bf,_0x422e6e[_0x3fca('0x5b')]);return _0x111d24[_0x3fca('0x55')](_0xfabbf7);}})[_0x3fca('0x48')](handleError(_0x111d24,null));};
\ No newline at end of file
+var _0x36d6=['status','end','json','offset','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','Attachment','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','fields','attributes','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','includeAll','clone','length','get','createdAt','body','omit','updatedAt','create','find','file','basename','filename','mimetype','download','join','root','offline-chat/','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb'];(function(_0x883d7,_0x28edb8){var _0x1559d6=function(_0x2a245b){while(--_0x2a245b){_0x883d7['push'](_0x883d7['shift']());}};_0x1559d6(++_0x28edb8);}(_0x36d6,0x9c));var _0x636d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x36d6[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x636d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x636d('0x1'));var jsonpatch=require(_0x636d('0x2'));var rp=require('request-promise');var moment=require(_0x636d('0x3'));var BPromise=require(_0x636d('0x4'));var Mustache=require(_0x636d('0x5'));var util=require(_0x636d('0x6'));var path=require('path');var sox=require(_0x636d('0x7'));var csv=require('to-csv');var ejs=require(_0x636d('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x636d('0x9'));var squel=require(_0x636d('0xa'));var crypto=require(_0x636d('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x636d('0xc'));var toCsv=require(_0x636d('0xd'));var querystring=require(_0x636d('0xe'));var Papa=require(_0x636d('0xf'));var Redis=require(_0x636d('0x10'));var authService=require(_0x636d('0x11'));var qs=require(_0x636d('0x12'));var as=require(_0x636d('0x13'));var hardwareService=require(_0x636d('0x14'));var logger=require(_0x636d('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x636d('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x636d('0x17'))['db'];function respondWithStatusCode(_0x5ae2d6,_0x531e43){_0x531e43=_0x531e43||0xcc;return function(_0x2e9bbe){if(_0x2e9bbe){return _0x5ae2d6['sendStatus'](_0x531e43);}return _0x5ae2d6[_0x636d('0x18')](_0x531e43)[_0x636d('0x19')]();};}function respondWithResult(_0x48fb35,_0x3e8d3c){_0x3e8d3c=_0x3e8d3c||0xc8;return function(_0x32d4b6){if(_0x32d4b6){return _0x48fb35['status'](_0x3e8d3c)[_0x636d('0x1a')](_0x32d4b6);}};}function respondWithFilteredResult(_0x288892,_0x30b6ba){return function(_0x15444e){if(_0x15444e){var _0x462a80=typeof _0x30b6ba[_0x636d('0x1b')]==='undefined'&&typeof _0x30b6ba['limit']==='undefined';var _0x12fae5=_0x15444e[_0x636d('0x1c')];var _0x43af5f=_0x462a80?0x0:_0x30b6ba['offset'];var _0x2be519=_0x462a80?_0x15444e[_0x636d('0x1c')]:_0x30b6ba['offset']+_0x30b6ba[_0x636d('0x1d')];var _0x83db35;if(_0x2be519>=_0x12fae5){_0x2be519=_0x12fae5;_0x83db35=0xc8;}else{_0x83db35=0xce;}_0x288892['status'](_0x83db35);return _0x288892[_0x636d('0x1e')](_0x636d('0x1f'),_0x43af5f+'-'+_0x2be519+'/'+_0x12fae5)[_0x636d('0x1a')](_0x15444e);}return null;};}function patchUpdates(_0x4cd5ae){return function(_0x3091c4){try{jsonpatch[_0x636d('0x20')](_0x3091c4,_0x4cd5ae,!![]);}catch(_0x4806bb){return BPromise[_0x636d('0x21')](_0x4806bb);}return _0x3091c4[_0x636d('0x22')]();};}function saveUpdates(_0x4f58f9,_0x4f17b1){return function(_0x8b05fa){if(_0x8b05fa){return _0x8b05fa[_0x636d('0x23')](_0x4f58f9)[_0x636d('0x24')](function(_0x50d7bb){return _0x50d7bb;});}return null;};}function removeEntity(_0x48c50c,_0x3eda29){return function(_0x3b7460){if(_0x3b7460){return _0x3b7460[_0x636d('0x25')]()[_0x636d('0x24')](function(){_0x48c50c[_0x636d('0x18')](0xcc)[_0x636d('0x19')]();});}};}function handleEntityNotFound(_0x5118d8,_0x144bd0){return function(_0xabb19c){if(!_0xabb19c){_0x5118d8[_0x636d('0x26')](0x194);}return _0xabb19c;};}function handleError(_0x347491,_0x38db8f){_0x38db8f=_0x38db8f||0x1f4;return function(_0x3f98d5){logger[_0x636d('0x27')](_0x3f98d5[_0x636d('0x28')]);if(_0x3f98d5[_0x636d('0x29')]){delete _0x3f98d5[_0x636d('0x29')];}_0x347491['status'](_0x38db8f)[_0x636d('0x2a')](_0x3f98d5);};}exports[_0x636d('0x2b')]=function(_0x35111c,_0x191c00){var _0xe500be={},_0x4b1062={},_0x48553d={'count':0x0,'rows':[]};var _0x5065ec=_['map'](db[_0x636d('0x2c')][_0x636d('0x2d')],function(_0xb8f39f){return{'name':_0xb8f39f[_0x636d('0x2e')],'type':_0xb8f39f[_0x636d('0x2f')][_0x636d('0x30')]};});_0x4b1062[_0x636d('0x31')]=_[_0x636d('0x32')](_0x5065ec,'name');_0x4b1062['query']=_[_0x636d('0x33')](_0x35111c[_0x636d('0x34')]);_0x4b1062[_0x636d('0x35')]=_[_0x636d('0x36')](_0x4b1062[_0x636d('0x31')],_0x4b1062[_0x636d('0x34')]);_0xe500be['attributes']=_[_0x636d('0x36')](_0x4b1062[_0x636d('0x31')],qs[_0x636d('0x37')](_0x35111c[_0x636d('0x34')]['fields']));_0xe500be[_0x636d('0x38')]=_0xe500be[_0x636d('0x38')]['length']?_0xe500be[_0x636d('0x38')]:_0x4b1062['model'];if(!_0x35111c[_0x636d('0x34')]['hasOwnProperty'](_0x636d('0x39'))){_0xe500be[_0x636d('0x1d')]=qs[_0x636d('0x1d')](_0x35111c[_0x636d('0x34')][_0x636d('0x1d')]);_0xe500be[_0x636d('0x1b')]=qs[_0x636d('0x1b')](_0x35111c['query'][_0x636d('0x1b')]);}_0xe500be[_0x636d('0x3a')]=qs['sort'](_0x35111c[_0x636d('0x34')][_0x636d('0x3b')]);_0xe500be[_0x636d('0x3c')]=qs[_0x636d('0x35')](_[_0x636d('0x3d')](_0x35111c[_0x636d('0x34')],_0x4b1062[_0x636d('0x35')]),_0x5065ec);if(_0x35111c['query'][_0x636d('0x3e')]){_0xe500be[_0x636d('0x3c')]=_['merge'](_0xe500be[_0x636d('0x3c')],{'$or':_[_0x636d('0x32')](_0x5065ec,function(_0x1ea286){if(_0x1ea286['type']!==_0x636d('0x3f')){var _0x5d417f={};_0x5d417f[_0x1ea286['name']]={'$like':'%'+_0x35111c['query'][_0x636d('0x3e')]+'%'};return _0x5d417f;}})});}_0xe500be=_[_0x636d('0x40')]({},_0xe500be,_0x35111c[_0x636d('0x41')]);var _0x1edd63={'where':_0xe500be[_0x636d('0x3c')]};return db[_0x636d('0x2c')][_0x636d('0x1c')](_0x1edd63)[_0x636d('0x24')](function(_0x49fbac){_0x48553d[_0x636d('0x1c')]=_0x49fbac;if(_0x35111c['query']['includeAll']){_0xe500be[_0x636d('0x42')]=[{'all':!![]}];}return db[_0x636d('0x2c')][_0x636d('0x43')](_0xe500be);})[_0x636d('0x24')](function(_0x601699){_0x48553d[_0x636d('0x44')]=_0x601699;return _0x48553d;})['then'](respondWithFilteredResult(_0x191c00,_0xe500be))[_0x636d('0x45')](handleError(_0x191c00,null));};exports[_0x636d('0x46')]=function(_0x43f981,_0x49060b){var _0x41d3be={'raw':!![],'where':{'id':_0x43f981[_0x636d('0x47')]['id']}},_0x4abe20={};_0x4abe20['model']=_[_0x636d('0x33')](db[_0x636d('0x2c')][_0x636d('0x2d')]);_0x4abe20['query']=_[_0x636d('0x33')](_0x43f981[_0x636d('0x34')]);_0x4abe20['filters']=_[_0x636d('0x36')](_0x4abe20[_0x636d('0x31')],_0x4abe20[_0x636d('0x34')]);_0x41d3be[_0x636d('0x38')]=_[_0x636d('0x36')](_0x4abe20[_0x636d('0x31')],qs['fields'](_0x43f981['query'][_0x636d('0x37')]));_0x41d3be['attributes']=_0x41d3be['attributes']['length']?_0x41d3be[_0x636d('0x38')]:_0x4abe20[_0x636d('0x31')];if(_0x43f981[_0x636d('0x34')][_0x636d('0x48')]){_0x41d3be[_0x636d('0x42')]=[{'all':!![]}];}_0x41d3be=_[_0x636d('0x40')]({},_0x41d3be,_0x43f981['options']);return db[_0x636d('0x2c')]['find'](_0x41d3be)[_0x636d('0x24')](handleEntityNotFound(_0x49060b,null))[_0x636d('0x24')](respondWithResult(_0x49060b,null))['catch'](handleError(_0x49060b,null));};exports[_0x636d('0x49')]=function(_0xed468b,_0xa0c3a3){var _0x2163bd={'where':{'id':_0xed468b[_0x636d('0x47')]['id']}},_0x2298f4={};_0x2298f4[_0x636d('0x31')]=_['keys'](db[_0x636d('0x2c')]['rawAttributes']);_0x2163bd[_0x636d('0x38')]=_[_0x636d('0x36')](_0x2298f4[_0x636d('0x31')],qs['fields'](_0xed468b['query'][_0x636d('0x37')]));_0x2163bd['attributes']=_0x2163bd['attributes'][_0x636d('0x4a')]?_0x2163bd[_0x636d('0x38')]:_0x2298f4[_0x636d('0x31')];if(_0xed468b[_0x636d('0x34')][_0x636d('0x48')]){_0x2163bd['include']=[{'all':!![]}];}_0x2163bd=_[_0x636d('0x40')]({},_0x2163bd,_0xed468b[_0x636d('0x41')]);return db[_0x636d('0x2c')]['find'](_0x2163bd)[_0x636d('0x24')](handleEntityNotFound(_0xa0c3a3,null))['then'](function(_0x5b2ad4){if(_0x5b2ad4){var _0x598de5=_0x5b2ad4[_0x636d('0x4b')]({'plain':!![]});_0x598de5=qs['omit'](_0x598de5,['id',_0x636d('0x4c'),'updatedAt']);_0xed468b[_0x636d('0x4d')]=_[_0x636d('0x4e')](_0xed468b['body'],['id','createdAt',_0x636d('0x4f')]);return db['Attachment'][_0x636d('0x50')](_[_0x636d('0x40')](_0x598de5,_0xed468b[_0x636d('0x4d')]),{'include':_0xed468b[_0x636d('0x34')][_0x636d('0x48')]?[{'all':!![]}]:undefined});}})[_0x636d('0x24')](respondWithResult(_0xa0c3a3,0xc9))[_0x636d('0x45')](handleError(_0xa0c3a3,null));};exports[_0x636d('0x23')]=function(_0x35358d,_0x1a30dd){if(_0x35358d[_0x636d('0x4d')]['id']){delete _0x35358d[_0x636d('0x4d')]['id'];}return db[_0x636d('0x2c')][_0x636d('0x51')]({'where':{'id':_0x35358d[_0x636d('0x47')]['id']}})[_0x636d('0x24')](handleEntityNotFound(_0x1a30dd,null))[_0x636d('0x24')](saveUpdates(_0x35358d['body'],null))[_0x636d('0x24')](respondWithResult(_0x1a30dd,null))['catch'](handleError(_0x1a30dd,null));};exports[_0x636d('0x25')]=function(_0xf2e5c5,_0xef1670){return db[_0x636d('0x2c')][_0x636d('0x51')]({'where':{'id':_0xf2e5c5[_0x636d('0x47')]['id']}})[_0x636d('0x24')](handleEntityNotFound(_0xef1670,null))[_0x636d('0x24')](removeEntity(_0xef1670,null))['catch'](handleError(_0xef1670,null));};exports['create']=function(_0x5f57b7,_0x2aaa65,_0x1dfe0f){_0x5f57b7[_0x636d('0x4d')]['name']=_0x5f57b7[_0x636d('0x52')]['originalname'];_0x5f57b7['body'][_0x636d('0x53')]=_0x5f57b7['file'][_0x636d('0x54')];_0x5f57b7[_0x636d('0x4d')]['type']=_0x5f57b7[_0x636d('0x52')][_0x636d('0x55')];return db['Attachment'][_0x636d('0x50')](_0x5f57b7['body'])[_0x636d('0x24')](respondWithResult(_0x2aaa65,0xc9))[_0x636d('0x45')](handleError(_0x2aaa65,null));};exports[_0x636d('0x56')]=function(_0x39481a,_0x447bbd,_0x3b002f){return db[_0x636d('0x2c')]['findOne']({'where':{'id':_0x39481a['params']['id']},'raw':!![]})[_0x636d('0x24')](handleEntityNotFound(_0x447bbd,null))['then'](function(_0x273b34){if(_0x273b34){var _0x2fe421=_0x273b34['ChatOfflineMessageId']!==null;var _0x10e1f5=path[_0x636d('0x57')](config[_0x636d('0x58')],'server/files/attachments/');if(_0x2fe421){_0x10e1f5=path[_0x636d('0x57')](_0x10e1f5,_0x636d('0x59'));}var _0x309ae6=path[_0x636d('0x57')](_0x10e1f5,_0x273b34['basename']);return _0x447bbd[_0x636d('0x56')](_0x309ae6);}})['catch'](handleError(_0x447bbd,null));};
\ No newline at end of file
index c2762de..6881eaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc85a=['path','rimraf','../../config/environment','./attachment.attributes','exports','define','Attachment','attachments','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5edd05,_0x8ac1d3){var _0x19b62e=function(_0x2a25d5){while(--_0x2a25d5){_0x5edd05['push'](_0x5edd05['shift']());}};_0x19b62e(++_0x8ac1d3);}(_0xc85a,0x19e));var _0xac85=function(_0x141985,_0x454aae){_0x141985=_0x141985-0x0;var _0x29ae7f=_0xc85a[_0x141985];return _0x29ae7f;};'use strict';var _=require(_0xac85('0x0'));var util=require(_0xac85('0x1'));var logger=require(_0xac85('0x2'))(_0xac85('0x3'));var moment=require(_0xac85('0x4'));var BPromise=require(_0xac85('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xac85('0x6'));var rimraf=require(_0xac85('0x7'));var config=require(_0xac85('0x8'));var attributes=require(_0xac85('0x9'));module[_0xac85('0xa')]=function(_0x4da635,_0x1ed19d){return _0x4da635[_0xac85('0xb')](_0xac85('0xc'),attributes,{'tableName':_0xac85('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd975=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./attachment.attributes','exports','define','util'];(function(_0xda7c25,_0x256fc4){var _0x1ef7db=function(_0x1fa751){while(--_0x1fa751){_0xda7c25['push'](_0xda7c25['shift']());}};_0x1ef7db(++_0x256fc4);}(_0xd975,0x149));var _0x5d97=function(_0x28c42e,_0x24eb83){_0x28c42e=_0x28c42e-0x0;var _0x1f1b65=_0xd975[_0x28c42e];return _0x1f1b65;};'use strict';var _=require('lodash');var util=require(_0x5d97('0x0'));var logger=require(_0x5d97('0x1'))(_0x5d97('0x2'));var moment=require(_0x5d97('0x3'));var BPromise=require(_0x5d97('0x4'));var rp=require(_0x5d97('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5d97('0x6'));var config=require(_0x5d97('0x7'));var attributes=require(_0x5d97('0x8'));module[_0x5d97('0x9')]=function(_0x146f44,_0x353df9){return _0x146f44[_0x5d97('0xa')]('Attachment',attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3e87dc7..0080ee1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3685=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreateAttachment','Attachment','options','raw','catch','lodash','moment','bluebird','randomstring'];(function(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0x3685,0xf8));var _0x5368=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3685[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x5368('0x0'));var util=require('util');var moment=require(_0x5368('0x1'));var BPromise=require(_0x5368('0x2'));var rs=require(_0x5368('0x3'));var fs=require('fs');var Redis=require(_0x5368('0x4'));var db=require(_0x5368('0x5'))['db'];var utils=require(_0x5368('0x6'));var logger=require(_0x5368('0x7'))(_0x5368('0x8'));var config=require(_0x5368('0x9'));var jayson=require(_0x5368('0xa'));var client=jayson['client'][_0x5368('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2529a2,_0x39223d,_0xaf4549){return new BPromise(function(_0x55fb7d,_0x14e621){return client[_0x5368('0xc')](_0x2529a2,_0xaf4549)[_0x5368('0xd')](function(_0x2a6ce8){logger[_0x5368('0xe')](_0x5368('0xf'),_0x39223d,_0x5368('0x10'));logger[_0x5368('0x11')]('Attachment,\x20%s,\x20%s,\x20%s',_0x39223d,_0x5368('0x10'),JSON[_0x5368('0x12')](_0x2a6ce8));if(_0x2a6ce8[_0x5368('0x13')]){if(_0x2a6ce8['error'][_0x5368('0x14')]===0x1f4){logger[_0x5368('0x13')]('Attachment,\x20%s,\x20%s',_0x39223d,_0x2a6ce8['error']['message']);return _0x14e621(_0x2a6ce8[_0x5368('0x13')][_0x5368('0x15')]);}logger[_0x5368('0x13')](_0x5368('0xf'),_0x39223d,_0x2a6ce8[_0x5368('0x13')][_0x5368('0x15')]);return _0x55fb7d(_0x2a6ce8[_0x5368('0x13')][_0x5368('0x15')]);}else{logger[_0x5368('0xe')](_0x5368('0xf'),_0x39223d,'request\x20sent');_0x55fb7d(_0x2a6ce8[_0x5368('0x16')][_0x5368('0x15')]);}})['catch'](function(_0x19790d){logger[_0x5368('0x13')](_0x5368('0xf'),_0x39223d,_0x19790d);_0x14e621(_0x19790d);});});}exports[_0x5368('0x17')]=function(_0x5b10e9){var _0x3fcae0=this;return new Promise(function(_0x56ac4d,_0x4baaa9){return db[_0x5368('0x18')]['create'](_0x5b10e9['body'],{'raw':_0x5b10e9['options']?_0x5b10e9[_0x5368('0x19')][_0x5368('0x1a')]===undefined?!![]:![]:!![]})[_0x5368('0xd')](function(_0x5cef40){logger['info'](_0x5368('0x17'),_0x5b10e9);logger[_0x5368('0x11')](_0x5368('0x17'),_0x5b10e9,JSON[_0x5368('0x12')](_0x5cef40));_0x56ac4d(_0x5cef40);})[_0x5368('0x1b')](function(_0x1093e2){logger[_0x5368('0x13')](_0x5368('0x17'),_0x1093e2[_0x5368('0x15')],_0x5b10e9);_0x4baaa9(_0x3fcae0[_0x5368('0x13')](0x1f4,_0x1093e2['message']));});});};
\ No newline at end of file
+var _0x9f3e=['jayson/promise','client','http','request','then','info','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','Attachment,\x20%s,\x20%s','message','result','CreateAttachment','create','body','options','raw','lodash','util','moment','bluebird','randomstring','../../config/logger','../../config/environment'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x9f3e,0x1c4));var _0xe9f3=function(_0x1b1138,_0x41b7af){_0x1b1138=_0x1b1138-0x0;var _0x329b6a=_0x9f3e[_0x1b1138];return _0x329b6a;};'use strict';var _=require(_0xe9f3('0x0'));var util=require(_0xe9f3('0x1'));var moment=require(_0xe9f3('0x2'));var BPromise=require(_0xe9f3('0x3'));var rs=require(_0xe9f3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xe9f3('0x5'))('rpc');var config=require(_0xe9f3('0x6'));var jayson=require(_0xe9f3('0x7'));var client=jayson[_0xe9f3('0x8')][_0xe9f3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x46e25d,_0x1611eb,_0x407123){return new BPromise(function(_0x4014b1,_0x1fe4af){return client[_0xe9f3('0xa')](_0x46e25d,_0x407123)[_0xe9f3('0xb')](function(_0x30e00e){logger[_0xe9f3('0xc')]('Attachment,\x20%s,\x20%s',_0x1611eb,_0xe9f3('0xd'));logger[_0xe9f3('0xe')](_0xe9f3('0xf'),_0x1611eb,_0xe9f3('0xd'),JSON[_0xe9f3('0x10')](_0x30e00e));if(_0x30e00e['error']){if(_0x30e00e[_0xe9f3('0x11')][_0xe9f3('0x12')]===0x1f4){logger['error'](_0xe9f3('0x13'),_0x1611eb,_0x30e00e['error'][_0xe9f3('0x14')]);return _0x1fe4af(_0x30e00e[_0xe9f3('0x11')][_0xe9f3('0x14')]);}logger['error']('Attachment,\x20%s,\x20%s',_0x1611eb,_0x30e00e[_0xe9f3('0x11')][_0xe9f3('0x14')]);return _0x4014b1(_0x30e00e['error'][_0xe9f3('0x14')]);}else{logger[_0xe9f3('0xc')](_0xe9f3('0x13'),_0x1611eb,_0xe9f3('0xd'));_0x4014b1(_0x30e00e[_0xe9f3('0x15')]['message']);}})['catch'](function(_0x32e9ae){logger[_0xe9f3('0x11')](_0xe9f3('0x13'),_0x1611eb,_0x32e9ae);_0x1fe4af(_0x32e9ae);});});}exports[_0xe9f3('0x16')]=function(_0x16b788){var _0x58825e=this;return new Promise(function(_0x1496f,_0x3df9a5){return db['Attachment'][_0xe9f3('0x17')](_0x16b788[_0xe9f3('0x18')],{'raw':_0x16b788[_0xe9f3('0x19')]?_0x16b788[_0xe9f3('0x19')][_0xe9f3('0x1a')]===undefined?!![]:![]:!![]})[_0xe9f3('0xb')](function(_0x3866cc){logger[_0xe9f3('0xc')]('CreateAttachment',_0x16b788);logger[_0xe9f3('0xe')](_0xe9f3('0x16'),_0x16b788,JSON[_0xe9f3('0x10')](_0x3866cc));_0x1496f(_0x3866cc);})['catch'](function(_0x138e5d){logger[_0xe9f3('0x11')](_0xe9f3('0x16'),_0x138e5d['message'],_0x16b788);_0x3df9a5(_0x58825e['error'](0x1f4,_0x138e5d[_0xe9f3('0x14')]));});});};
\ No newline at end of file
index 879a518..ecb84d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['originalname','replace','single','file','create','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','download','post','/:id/clone','diskStorage','join','server/files/attachments/','format','%s-%s'];(function(_0x369f4f,_0x29ae7d){var _0x2df1f6=function(_0x164fdb){while(--_0x164fdb){_0x369f4f['push'](_0x369f4f['shift']());}};_0x2df1f6(++_0x29ae7d);}(_0xb10b,0x12a));var _0xbb10=function(_0x133f69,_0x2d4632){_0x133f69=_0x133f69-0x0;var _0x3b67bb=_0xb10b[_0x133f69];return _0x3b67bb;};'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')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')](_0xbb10('0x10'),auth['isAuthenticated'](),controller['clone']);var upload=multer({'storage':multer[_0xbb10('0x11')]({'destination':function(_0x118a74,_0xce64f3,_0x5e136d){_0x5e136d(null,path[_0xbb10('0x12')](config['root'],_0xbb10('0x13')));},'filename':function(_0x916a32,_0x285009,_0x193a27){_0x193a27(null,util[_0xbb10('0x14')](_0xbb10('0x15'),Date['now'](),_0x285009[_0xbb10('0x16')][_0xbb10('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xbb10('0xf')]('/',upload[_0xbb10('0x18')](_0xbb10('0x19')),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1d')]);router['delete'](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);module[_0xbb10('0x1f')]=router;
\ No newline at end of file
+var _0x5f66=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','/:id/clone','clone','diskStorage','root','format','%s-%s','now','originalname','replace','post','single','file','create','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x4f1da5,_0x4ced17){var _0xe972a8=function(_0x278ba3){while(--_0x278ba3){_0x4f1da5['push'](_0x4f1da5['shift']());}};_0xe972a8(++_0x4ced17);}(_0x5f66,0x1a0));var _0x65f6=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x5f66[_0x580576];return _0x3f55a0;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./attachment.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['download']);router['post'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);var upload=multer({'storage':multer[_0x65f6('0xe')]({'destination':function(_0x50d26d,_0x41a7fd,_0x571436){_0x571436(null,path['join'](config[_0x65f6('0xf')],'server/files/attachments/'));},'filename':function(_0x419819,_0x4862a5,_0x2f964a){_0x2f964a(null,util[_0x65f6('0x10')](_0x65f6('0x11'),Date[_0x65f6('0x12')](),_0x4862a5[_0x65f6('0x13')][_0x65f6('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x65f6('0x15')]('/',upload[_0x65f6('0x16')](_0x65f6('0x17')),controller[_0x65f6('0x18')]);router['put'](_0x65f6('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x65f6('0x19')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x1a')]);module[_0x65f6('0x1b')]=router;
\ No newline at end of file
index f3117fa..ed91b1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac8e=['getLicense','catch','lodash','passport-google-oauth20','moment','../../mysqldb','../../config/environment','../../components/auth/service','signToken','../../config/utils','login','authenticate','google','/login','profile','email','callback','use','clientID','clientSecret','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','map','emails','value','admin','agent','disabled','blocked','add','clearBlockUser'];(function(_0x30abdf,_0x2fe412){var _0x5b9f63=function(_0x3e76d9){while(--_0x3e76d9){_0x30abdf['push'](_0x30abdf['shift']());}};_0x5b9f63(++_0x2fe412);}(_0xac8e,0x16a));var _0xeac8=function(_0x4a8d58,_0x416d41){_0x4a8d58=_0x4a8d58-0x0;var _0x26912e=_0xac8e[_0x4a8d58];return _0x26912e;};'use strict';var _=require(_0xeac8('0x0'));var passport=require('passport');var GoogleStrategy=require(_0xeac8('0x1'))['Strategy'];var moment=require(_0xeac8('0x2'));var db=require(_0xeac8('0x3'))['db'];var config=require(_0xeac8('0x4'));var signToken=require(_0xeac8('0x5'))[_0xeac8('0x6')];var utils=require(_0xeac8('0x7'));exports[_0xeac8('0x8')]=passport[_0xeac8('0x9')](_0xeac8('0xa'),{'failureRedirect':_0xeac8('0xb'),'scope':[_0xeac8('0xc'),_0xeac8('0xd')],'session':![]});exports[_0xeac8('0xe')]=passport[_0xeac8('0x9')](_0xeac8('0xa'),{'failureRedirect':'/login','session':![]});passport[_0xeac8('0xf')](new GoogleStrategy({'clientID':config[_0xeac8('0xa')]?config[_0xeac8('0xa')][_0xeac8('0x10')]:'id','clientSecret':config['google']?config[_0xeac8('0xa')][_0xeac8('0x11')]:_0xeac8('0x12'),'callbackURL':config[_0xeac8('0xa')]?config[_0xeac8('0xa')][_0xeac8('0x13')]:''},function(_0x245783,_0x41e0ad,_0x1e219e,_0x58a85a){var _0x147fc6,_0x2e1233;return db['Setting'][_0xeac8('0x14')]({'where':{'id':0x1},'attributes':[_0xeac8('0x15'),_0xeac8('0x16')],'raw':!![]})[_0xeac8('0x17')](function(_0x18909c){_0x147fc6=_0x18909c;return db[_0xeac8('0x18')]['find']({'where':{'email':_[_0xeac8('0x19')](_0x1e219e[_0xeac8('0x1a')],_0xeac8('0x1b')),'role':{'$or':[_0xeac8('0x1c'),'user',_0xeac8('0x1d')]}}});})[_0xeac8('0x17')](function(_0x4c96a0){_0x2e1233=_0x4c96a0;if(_0x2e1233){if(_0x2e1233[_0xeac8('0x1e')]){return _0x58a85a('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(_0x147fc6[_0xeac8('0x16')]>0x0){if(_0x2e1233[_0xeac8('0x1f')]){if(moment(_0x2e1233['blockedAt'])[_0xeac8('0x20')](_0x147fc6['blockDuration'],'minutes')>moment()){return _0x58a85a('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{return utils[_0xeac8('0x21')](_0x2e1233,0x0,![],null)['then'](function(){return utils[_0xeac8('0x22')](_0x2e1233);})['then'](function(){return _0x58a85a(null,_0x2e1233);});}}else{return utils[_0xeac8('0x22')](_0x2e1233)[_0xeac8('0x17')](function(){return _0x58a85a(null,_0x2e1233);});}}else{return utils[_0xeac8('0x22')](_0x2e1233)[_0xeac8('0x17')](function(){return _0x58a85a(null,_0x2e1233);});}}return _0x58a85a('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0xeac8('0x23')](function(_0x44b122){_0x58a85a(_0x44b122);});}));
\ No newline at end of file
+var _0xc193=['lodash','passport','moment','../../config/environment','../../components/auth/service','../../config/utils','login','authenticate','google','profile','email','callback','use','clientSecret','secret','findOne','blockDuration','then','User','find','map','emails','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','minutes','getLicense','catch'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0xc193,0x1e0));var _0x3c19=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xc193[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x3c19('0x0'));var passport=require(_0x3c19('0x1'));var GoogleStrategy=require('passport-google-oauth20')['Strategy'];var moment=require(_0x3c19('0x2'));var db=require('../../mysqldb')['db'];var config=require(_0x3c19('0x3'));var signToken=require(_0x3c19('0x4'))['signToken'];var utils=require(_0x3c19('0x5'));exports[_0x3c19('0x6')]=passport[_0x3c19('0x7')](_0x3c19('0x8'),{'failureRedirect':'/login','scope':[_0x3c19('0x9'),_0x3c19('0xa')],'session':![]});exports[_0x3c19('0xb')]=passport[_0x3c19('0x7')]('google',{'failureRedirect':'/login','session':![]});passport[_0x3c19('0xc')](new GoogleStrategy({'clientID':config[_0x3c19('0x8')]?config['google']['clientID']:'id','clientSecret':config[_0x3c19('0x8')]?config[_0x3c19('0x8')][_0x3c19('0xd')]:_0x3c19('0xe'),'callbackURL':config[_0x3c19('0x8')]?config['google']['callbackURL']:''},function(_0x5af304,_0x1932e1,_0x13a460,_0x323548){var _0x13a0de,_0x3101ea;return db['Setting'][_0x3c19('0xf')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x3c19('0x10')],'raw':!![]})[_0x3c19('0x11')](function(_0x846b26){_0x13a0de=_0x846b26;return db[_0x3c19('0x12')][_0x3c19('0x13')]({'where':{'email':_[_0x3c19('0x14')](_0x13a460[_0x3c19('0x15')],'value'),'role':{'$or':['admin','user',_0x3c19('0x16')]}}});})['then'](function(_0x574d65){_0x3101ea=_0x574d65;if(_0x3101ea){if(_0x3101ea[_0x3c19('0x17')]){return _0x323548(_0x3c19('0x18'));}else if(_0x13a0de['blockDuration']>0x0){if(_0x3101ea[_0x3c19('0x19')]){if(moment(_0x3101ea[_0x3c19('0x1a')])['add'](_0x13a0de[_0x3c19('0x10')],_0x3c19('0x1b'))>moment()){return _0x323548(_0x3c19('0x18'));}else{return utils['clearBlockUser'](_0x3101ea,0x0,![],null)['then'](function(){return utils[_0x3c19('0x1c')](_0x3101ea);})[_0x3c19('0x11')](function(){return _0x323548(null,_0x3101ea);});}}else{return utils[_0x3c19('0x1c')](_0x3101ea)['then'](function(){return _0x323548(null,_0x3101ea);});}}else{return utils[_0x3c19('0x1c')](_0x3101ea)['then'](function(){return _0x323548(null,_0x3101ea);});}}return _0x323548(_0x3c19('0x18'));})[_0x3c19('0x1d')](function(_0x1fca9a){_0x323548(_0x1fca9a);});}));
\ No newline at end of file
index 2dae2da..7eb3873 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x316b=['callback','isMiddleware','setTokenCookie','exports','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','login'];(function(_0x5c85c8,_0x16110b){var _0x42d66f=function(_0x2c6dda){while(--_0x2c6dda){_0x5c85c8['push'](_0x5c85c8['shift']());}};_0x42d66f(++_0x16110b);}(_0x316b,0x1bd));var _0xb316=function(_0x261522,_0x1adc1f){_0x261522=_0x261522-0x0;var _0x98a25a=_0x316b[_0x261522];return _0x98a25a;};'use strict';var express=require('express');var passport=require('passport');var router=express['Router']();var controller=require(_0xb316('0x0'));var userController=require(_0xb316('0x1'));var authService=require(_0xb316('0x2'));router[_0xb316('0x3')]('/',controller[_0xb316('0x4')]);router[_0xb316('0x3')]('/callback',controller[_0xb316('0x5')],authService[_0xb316('0x6')],userController['login'],authService[_0xb316('0x7')]);module[_0xb316('0x8')]=router;
\ No newline at end of file
+var _0x1f09=['isMiddleware','login','setTokenCookie','exports','passport','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','/callback'];(function(_0x4eabdf,_0x5ed32e){var _0x34c6e5=function(_0x48e801){while(--_0x48e801){_0x4eabdf['push'](_0x4eabdf['shift']());}};_0x34c6e5(++_0x5ed32e);}(_0x1f09,0x16c));var _0x91f0=function(_0x5cb8d8,_0x5c4465){_0x5cb8d8=_0x5cb8d8-0x0;var _0x575cb4=_0x1f09[_0x5cb8d8];return _0x575cb4;};'use strict';var express=require('express');var passport=require(_0x91f0('0x0'));var router=express['Router']();var controller=require(_0x91f0('0x1'));var userController=require(_0x91f0('0x2'));var authService=require(_0x91f0('0x3'));router['get']('/',controller['login']);router[_0x91f0('0x4')](_0x91f0('0x5'),controller['callback'],authService[_0x91f0('0x6')],userController[_0x91f0('0x7')],authService[_0x91f0('0x8')]);module[_0x91f0('0x9')]=router;
\ No newline at end of file
index 6c9d2d0..806a932 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x902b=['find','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','now','save','xCally\x20Motion\x20Password\x20Reset','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','enforcePasswordHistory','securePassword','previousPasswords','validatePasswordHistory','passwordHistoryLimit','resetPasswordToken','Password\x20reset!','use','util','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../components/auth/service','client','Setting','findOne','then','name','password','salt','role','disabled','blockedAt','loginAttempts','admin','user','authenticate','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','allowedLoginAttempts','blocked','blockDuration','minutes','clearBlockUser','add','getLicense','catch','MailAccount','email','MailServerOut','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','Smtp','service','host','port','secure','authentication','pass','merge','format','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','forgot','Email\x20parameter\x20is\x20missing','generate','body','trim','User'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x902b,0x6a));var _0xb902=function(_0x344a3f,_0x579a22){_0x344a3f=_0x344a3f-0x0;var _0x264712=_0x902b[_0x344a3f];return _0x264712;};'use strict';var util=require(_0xb902('0x0'));var passport=require('passport');var LocalStrategy=require(_0xb902('0x1'))[_0xb902('0x2')];var jayson=require(_0xb902('0x3'));var _=require(_0xb902('0x4'));var rs=require(_0xb902('0x5'));var moment=require(_0xb902('0x6'));var db=require('../../mysqldb')['db'];var authService=require(_0xb902('0x7'));var utils=require('../../config/utils');var client=jayson[_0xb902('0x8')]['http']({'port':0x232b});function localAuthenticate(_0x157e14,_0x5e7240,_0x49f60d,_0x5b0b74){var _0x55331d,_0x534c79;return db[_0xb902('0x9')][_0xb902('0xa')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})[_0xb902('0xb')](function(_0x2cfedd){_0x55331d=_0x2cfedd;return _0x157e14[_0xb902('0xa')]({'attributes':['id',_0xb902('0xc'),_0xb902('0xd'),_0xb902('0xe'),_0xb902('0xf'),_0xb902('0x10'),'blocked',_0xb902('0x11'),_0xb902('0x12')],'where':{'name':_0x5e7240,'role':{'$or':[_0xb902('0x13'),_0xb902('0x14'),'agent']}}});})['then'](function(_0xe413ef){if(!_0xe413ef||_0xe413ef&&_0xe413ef[_0xb902('0xc')]!==_0x5e7240){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x534c79=_0xe413ef;return _0x534c79;}})[_0xb902('0xb')](function(){_0x534c79[_0xb902('0x15')](_0x49f60d,function(_0x355beb,_0x39170a){var _0x1f03d2=_0x534c79[_0xb902('0x12')]+0x1;if(_0x355beb){return _0x5b0b74(_0x355beb);}else if(!_0x39170a){if(_0x534c79['disabled']){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}else if(_0x55331d[_0xb902('0x17')]>0x0){if(_0x534c79[_0xb902('0x18')]){if(_0x55331d[_0xb902('0x19')]>0x0){if(moment(_0x534c79[_0xb902('0x11')])['add'](_0x55331d[_0xb902('0x19')],_0xb902('0x1a'))>moment()){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}else{return utils[_0xb902('0x1b')](_0x534c79,_0x1f03d2,![],null)['then'](function(){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});});}}else{return _0x5b0b74(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x1f03d2>=_0x55331d[_0xb902('0x17')]){return utils[_0xb902('0x1b')](_0x534c79,0x0,!![],moment())[_0xb902('0xb')](function(){return _0x5b0b74(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils['clearBlockUser'](_0x534c79,_0x1f03d2,![],null)[_0xb902('0xb')](function(){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});});}}}else{return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}}else{if(_0x534c79['disabled']){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}else if(_0x55331d[_0xb902('0x17')]>0x0){if(_0x534c79[_0xb902('0x18')]){if(_0x55331d[_0xb902('0x19')]>0x0){if(moment(_0x534c79[_0xb902('0x11')])[_0xb902('0x1c')](_0x55331d[_0xb902('0x19')],_0xb902('0x1a'))>moment()){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}else{return utils[_0xb902('0x1b')](_0x534c79,0x0,![],null)['then'](function(){return utils[_0xb902('0x1d')](_0x534c79);})[_0xb902('0xb')](function(){return _0x5b0b74(null,_0x534c79);});}}else{return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}}else{return utils['clearBlockUser'](_0x534c79,0x0,![],null)[_0xb902('0xb')](function(){return utils['getLicense'](_0x534c79);})[_0xb902('0xb')](function(){return _0x5b0b74(null,_0x534c79);})[_0xb902('0x1e')](function(_0x5a7e71){return _0x5b0b74(null,![],_0x5a7e71);});}}else{if(_0x534c79[_0xb902('0x18')]){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}else{return utils[_0xb902('0x1d')](_0x534c79)[_0xb902('0xb')](function(){return _0x5b0b74(null,_0x534c79);});}}}});})['catch'](function(_0x4625fa){return _0x5b0b74(null,![],_0x4625fa);});}function sendServiceMail(_0x115f02){return db[_0xb902('0x1f')]['find']({'where':{'service':!![]},'attributes':['id',_0xb902('0xc'),_0xb902('0x20')],'include':[{'model':db[_0xb902('0x21')],'as':'Smtp'}]})['then'](function(_0x378772){if(!_0x378772){throw new Error(_0xb902('0x22'));}var _0x33995f={'tls':{'rejectUnauthorized':![]}};if(_0x378772[_0xb902('0x23')][_0xb902('0x24')]){_0x33995f[_0xb902('0x24')]=_0x378772[_0xb902('0x23')]['service'];}else{_0x33995f[_0xb902('0x25')]=_0x378772[_0xb902('0x23')][_0xb902('0x25')];_0x33995f['port']=_0x378772[_0xb902('0x23')][_0xb902('0x26')];_0x33995f['secure']=_0x378772[_0xb902('0x23')][_0xb902('0x27')];}if(_0x378772[_0xb902('0x23')][_0xb902('0x28')]){_0x33995f['auth']={'user':_0x378772[_0xb902('0x23')]['user'],'pass':_0x378772['Smtp'][_0xb902('0x29')]};}var _0xdddee={'account':_0x33995f,'message':_[_0xb902('0x2a')]({'from':util[_0xb902('0x2b')]('\x22%s\x22\x20<%s>',_0x378772[_0xb902('0xc')],_0x378772['email']||_0x378772[_0xb902('0x23')][_0xb902('0x14')])},_0x115f02)};return client['request'](_0xb902('0x2c'),_0xdddee);})[_0xb902('0xb')](function(_0x4eee40){if(_0x4eee40[_0xb902('0x2d')]){throw new Error(util[_0xb902('0x2b')](_0xb902('0x2e'),_0x4eee40[_0xb902('0x2d')][_0xb902('0x2f')]||JSON[_0xb902('0x30')](_0x4eee40[_0xb902('0x2d')])));}return!![];});}function handleError(_0x8053b2,_0x53bc3a,_0x56b180){return _0x8053b2[_0xb902('0x31')](_0x53bc3a||0x1f4)[_0xb902('0x32')]({'message':_0x56b180?_0x56b180[_0xb902('0x2f')]||_0x56b180:''});}exports[_0xb902('0x33')]=function(_0x16c9f3,_0x2f5e35,_0x45f10f){passport[_0xb902('0x15')](_0xb902('0x34'),function(_0x77e150,_0x1ed101,_0x1cb3c5){var _0x1a2ba7=_0x77e150||_0x1cb3c5;if(_0x1a2ba7){return handleError(_0x2f5e35,0x191,_0x1a2ba7);}if(!_0x1ed101){return handleError(_0x2f5e35,0x194,{'message':_0xb902('0x35')});}else{var _0x232f7a={'payload':{'id':_0x1ed101['id'],'role':_0x1ed101[_0xb902('0xf')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x232f7a)[_0xb902('0xb')](function(_0x41508d){_0x2f5e35[_0xb902('0x36')]({'id':_0x1ed101['id'],'token':_0x41508d,'statusCall':'','isAlreadyLogged':_0x1ed101[_0xb902('0x37')]});});}})(_0x16c9f3,_0x2f5e35,_0x45f10f);};exports[_0xb902('0x38')]=function(_0x52b557,_0x5c50c7,_0x582906){if(!_0x52b557['body'][_0xb902('0x20')]){return handleError(_0x5c50c7,0x1f4,{'message':_0xb902('0x39')});}var _0x2b426d=rs[_0xb902('0x3a')]();_0x52b557[_0xb902('0x3b')][_0xb902('0x20')]=_0x52b557[_0xb902('0x3b')]['email'][_0xb902('0x3c')]()['toLowerCase']();var _0x4b3003;return db['Setting'][_0xb902('0xa')]({'where':{'id':0x1},'attributes':[_0xb902('0x17'),_0xb902('0x19')],'raw':!![]})['then'](function(_0x2fb9c2){_0x4b3003=_0x2fb9c2;return db[_0xb902('0x3d')][_0xb902('0x3e')]({'where':{'email':_0x52b557['body'][_0xb902('0x20')]}});})['then'](function(_0x4547de){if(!_0x4547de){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x4547de[_0xb902('0x10')]){throw new Error(_0xb902('0x3f'));}if(_0x4547de[_0xb902('0x18')]){if(moment(_0x4547de['blockedAt'])[_0xb902('0x1c')](_0x4b3003['blockDuration'],_0xb902('0x1a'))>moment()){throw new Error(_0xb902('0x40'));}else{_0x4547de[_0xb902('0x18')]=![];_0x4547de[_0xb902('0x11')]=null;}}_0x4547de['resetPasswordToken']=_0x2b426d;_0x4547de['resetPasswordExpires']=Date[_0xb902('0x41')]()+0x36ee80;return _0x4547de[_0xb902('0x42')]();})[_0xb902('0xb')](function(){return sendServiceMail({'to':_0x52b557[_0xb902('0x3b')]['email'],'subject':_0xb902('0x43'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0xb902('0x44')+'https://'+_0x52b557[_0xb902('0x45')][_0xb902('0x25')]+_0xb902('0x46')+_0x2b426d+'\x0a\x0a'+_0xb902('0x47')});})[_0xb902('0xb')](function(){_0x5c50c7[_0xb902('0x31')](0xc8)[_0xb902('0x32')]({'message':_0xb902('0x48')});})[_0xb902('0x1e')](function(_0x7405dc){return handleError(_0x5c50c7,0x1f4,_0x7405dc);});};exports[_0xb902('0x49')]=function(_0x904564,_0x25aee6,_0x2fa767){return db[_0xb902('0x3d')]['find']({'where':{'resetPasswordToken':_0x904564[_0xb902('0x4a')][_0xb902('0x4b')],'resetPasswordExpires':{'$gt':Date[_0xb902('0x41')]()}}})[_0xb902('0xb')](function(_0x119ad3){if(!_0x119ad3){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0xb902('0x9')][_0xb902('0xa')]({'attributes':['id','securePassword',_0xb902('0x4c'),'passwordHistoryLimit']})[_0xb902('0xb')](function(_0x3f1efc){if(_0x3f1efc[_0xb902('0x4d')])authService['validatePasswordPattern'](_0x904564[_0xb902('0x3b')][_0xb902('0xd')]);if(!_0x3f1efc[_0xb902('0x4c')]||!_0x119ad3[_0xb902('0x4e')])return _0x119ad3;authService[_0xb902('0x4f')](_0x904564['body'][_0xb902('0xd')],_0x119ad3[_0xb902('0x4e')],_0x3f1efc[_0xb902('0x50')]);return _0x119ad3;})[_0xb902('0xb')](function(){_0x119ad3[_0xb902('0xd')]=_0x904564[_0xb902('0x3b')]['password'];_0x119ad3[_0xb902('0x51')]=null;_0x119ad3['resetPasswordExpires']=null;return _0x119ad3['save']();});})[_0xb902('0xb')](function(){_0x25aee6['status'](0xc8)['send']({'message':_0xb902('0x52')});})[_0xb902('0x1e')](function(_0x4e7c22){return handleError(_0x25aee6,0x1f4,_0x4e7c22);});};passport[_0xb902('0x53')](new LocalStrategy({'usernameField':_0xb902('0xc'),'passwordField':_0xb902('0xd')},function(_0x2e316b,_0x58467b,_0x239a34){return localAuthenticate(db['User'],_0x2e316b,_0x58467b,_0x239a34);}));
\ No newline at end of file
+var _0xad99=['headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','User','params','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','previousPasswords','validatePasswordHistory','password','passwordHistoryLimit','Password\x20reset!','use','util','passport','passport-local','jayson/promise','lodash','randomstring','../../mysqldb','../../components/auth/service','../../config/utils','client','http','findOne','allowedLoginAttempts','blockDuration','name','salt','role','disabled','blocked','admin','user','agent','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','loginAttempts','blockedAt','add','clearBlockUser','minutes','getLicense','catch','find','email','MailServerOut','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','Smtp','service','host','port','secure','pass','merge','format','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','stringify','status','send','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','online','forgot','Email\x20parameter\x20is\x20missing','generate','body','trim','Setting','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','https://'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xad99,0x64));var _0x9ad9=function(_0x39d3f8,_0x4cbec1){_0x39d3f8=_0x39d3f8-0x0;var _0x5861a8=_0xad99[_0x39d3f8];return _0x5861a8;};'use strict';var util=require(_0x9ad9('0x0'));var passport=require(_0x9ad9('0x1'));var LocalStrategy=require(_0x9ad9('0x2'))['Strategy'];var jayson=require(_0x9ad9('0x3'));var _=require(_0x9ad9('0x4'));var rs=require(_0x9ad9('0x5'));var moment=require('moment');var db=require(_0x9ad9('0x6'))['db'];var authService=require(_0x9ad9('0x7'));var utils=require(_0x9ad9('0x8'));var client=jayson[_0x9ad9('0x9')][_0x9ad9('0xa')]({'port':0x232b});function localAuthenticate(_0x2319d0,_0x3dd3e7,_0x2b42b,_0x2bd632){var _0x4466c8,_0x28a1d9;return db['Setting'][_0x9ad9('0xb')]({'where':{'id':0x1},'attributes':[_0x9ad9('0xc'),_0x9ad9('0xd')],'raw':!![]})['then'](function(_0xf0e709){_0x4466c8=_0xf0e709;return _0x2319d0[_0x9ad9('0xb')]({'attributes':['id',_0x9ad9('0xe'),'password',_0x9ad9('0xf'),_0x9ad9('0x10'),_0x9ad9('0x11'),_0x9ad9('0x12'),'blockedAt','loginAttempts'],'where':{'name':_0x3dd3e7,'role':{'$or':[_0x9ad9('0x13'),_0x9ad9('0x14'),_0x9ad9('0x15')]}}});})[_0x9ad9('0x16')](function(_0xc2925){if(!_0xc2925||_0xc2925&&_0xc2925[_0x9ad9('0xe')]!==_0x3dd3e7){throw new Error(_0x9ad9('0x17'));}else{_0x28a1d9=_0xc2925;return _0x28a1d9;}})[_0x9ad9('0x16')](function(){_0x28a1d9[_0x9ad9('0x18')](_0x2b42b,function(_0x40f117,_0xaaf5c3){var _0x3fa4e7=_0x28a1d9[_0x9ad9('0x19')]+0x1;if(_0x40f117){return _0x2bd632(_0x40f117);}else if(!_0xaaf5c3){if(_0x28a1d9[_0x9ad9('0x11')]){return _0x2bd632(null,![],{'message':_0x9ad9('0x17')});}else if(_0x4466c8[_0x9ad9('0xc')]>0x0){if(_0x28a1d9[_0x9ad9('0x12')]){if(_0x4466c8[_0x9ad9('0xd')]>0x0){if(moment(_0x28a1d9[_0x9ad9('0x1a')])[_0x9ad9('0x1b')](_0x4466c8[_0x9ad9('0xd')],'minutes')>moment()){return _0x2bd632(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['clearBlockUser'](_0x28a1d9,_0x3fa4e7,![],null)[_0x9ad9('0x16')](function(){return _0x2bd632(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x2bd632(null,![],{'message':_0x9ad9('0x17')});}}else{if(_0x3fa4e7>=_0x4466c8[_0x9ad9('0xc')]){return utils[_0x9ad9('0x1c')](_0x28a1d9,0x0,!![],moment())[_0x9ad9('0x16')](function(){return _0x2bd632(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0x9ad9('0x1c')](_0x28a1d9,_0x3fa4e7,![],null)[_0x9ad9('0x16')](function(){return _0x2bd632(null,![],{'message':_0x9ad9('0x17')});});}}}else{return _0x2bd632(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x28a1d9[_0x9ad9('0x11')]){return _0x2bd632(null,![],{'message':_0x9ad9('0x17')});}else if(_0x4466c8['allowedLoginAttempts']>0x0){if(_0x28a1d9[_0x9ad9('0x12')]){if(_0x4466c8[_0x9ad9('0xd')]>0x0){if(moment(_0x28a1d9[_0x9ad9('0x1a')])[_0x9ad9('0x1b')](_0x4466c8[_0x9ad9('0xd')],_0x9ad9('0x1d'))>moment()){return _0x2bd632(null,![],{'message':_0x9ad9('0x17')});}else{return utils[_0x9ad9('0x1c')](_0x28a1d9,0x0,![],null)['then'](function(){return utils[_0x9ad9('0x1e')](_0x28a1d9);})[_0x9ad9('0x16')](function(){return _0x2bd632(null,_0x28a1d9);});}}else{return _0x2bd632(null,![],{'message':_0x9ad9('0x17')});}}else{return utils['clearBlockUser'](_0x28a1d9,0x0,![],null)[_0x9ad9('0x16')](function(){return utils[_0x9ad9('0x1e')](_0x28a1d9);})[_0x9ad9('0x16')](function(){return _0x2bd632(null,_0x28a1d9);})[_0x9ad9('0x1f')](function(_0x292b8c){return _0x2bd632(null,![],_0x292b8c);});}}else{if(_0x28a1d9['blocked']){return _0x2bd632(null,![],{'message':_0x9ad9('0x17')});}else{return utils[_0x9ad9('0x1e')](_0x28a1d9)[_0x9ad9('0x16')](function(){return _0x2bd632(null,_0x28a1d9);});}}}});})['catch'](function(_0x3a6a7f){return _0x2bd632(null,![],_0x3a6a7f);});}function sendServiceMail(_0x31fd03){return db['MailAccount'][_0x9ad9('0x20')]({'where':{'service':!![]},'attributes':['id',_0x9ad9('0xe'),_0x9ad9('0x21')],'include':[{'model':db[_0x9ad9('0x22')],'as':'Smtp'}]})['then'](function(_0x154002){if(!_0x154002){throw new Error(_0x9ad9('0x23'));}var _0x571748={'tls':{'rejectUnauthorized':![]}};if(_0x154002[_0x9ad9('0x24')][_0x9ad9('0x25')]){_0x571748[_0x9ad9('0x25')]=_0x154002['Smtp']['service'];}else{_0x571748[_0x9ad9('0x26')]=_0x154002[_0x9ad9('0x24')][_0x9ad9('0x26')];_0x571748[_0x9ad9('0x27')]=_0x154002[_0x9ad9('0x24')]['port'];_0x571748[_0x9ad9('0x28')]=_0x154002[_0x9ad9('0x24')]['secure'];}if(_0x154002['Smtp']['authentication']){_0x571748['auth']={'user':_0x154002[_0x9ad9('0x24')]['user'],'pass':_0x154002[_0x9ad9('0x24')][_0x9ad9('0x29')]};}var _0x53f1a9={'account':_0x571748,'message':_[_0x9ad9('0x2a')]({'from':util[_0x9ad9('0x2b')]('\x22%s\x22\x20<%s>',_0x154002['name'],_0x154002[_0x9ad9('0x21')]||_0x154002[_0x9ad9('0x24')]['user'])},_0x31fd03)};return client[_0x9ad9('0x2c')](_0x9ad9('0x2d'),_0x53f1a9);})[_0x9ad9('0x16')](function(_0x4ede3e){if(_0x4ede3e[_0x9ad9('0x2e')]){throw new Error(util[_0x9ad9('0x2b')](_0x9ad9('0x2f'),_0x4ede3e[_0x9ad9('0x2e')]['message']||JSON[_0x9ad9('0x30')](_0x4ede3e[_0x9ad9('0x2e')])));}return!![];});}function handleError(_0x492585,_0x2e1797,_0x3f27a5){return _0x492585[_0x9ad9('0x31')](_0x2e1797||0x1f4)[_0x9ad9('0x32')]({'message':_0x3f27a5?_0x3f27a5['message']||_0x3f27a5:''});}exports[_0x9ad9('0x33')]=function(_0x8f8fcf,_0x21b432,_0x530deb){passport[_0x9ad9('0x18')](_0x9ad9('0x34'),function(_0x3950bb,_0x1d64a9,_0x26db07){var _0x38bd7d=_0x3950bb||_0x26db07;if(_0x38bd7d){return handleError(_0x21b432,0x191,_0x38bd7d);}if(!_0x1d64a9){return handleError(_0x21b432,0x194,{'message':_0x9ad9('0x35')});}else{var _0x2b6b62={'payload':{'id':_0x1d64a9['id'],'role':_0x1d64a9[_0x9ad9('0x10')]},'options':{'expiresIn':0x15180}};return authService[_0x9ad9('0x36')](_0x2b6b62)[_0x9ad9('0x16')](function(_0x562e5c){_0x21b432['json']({'id':_0x1d64a9['id'],'token':_0x562e5c,'statusCall':'','isAlreadyLogged':_0x1d64a9[_0x9ad9('0x37')]});});}})(_0x8f8fcf,_0x21b432,_0x530deb);};exports[_0x9ad9('0x38')]=function(_0xe25ef9,_0x389ab5,_0x1ba1bc){if(!_0xe25ef9['body']['email']){return handleError(_0x389ab5,0x1f4,{'message':_0x9ad9('0x39')});}var _0x5ea091=rs[_0x9ad9('0x3a')]();_0xe25ef9[_0x9ad9('0x3b')][_0x9ad9('0x21')]=_0xe25ef9[_0x9ad9('0x3b')][_0x9ad9('0x21')][_0x9ad9('0x3c')]()['toLowerCase']();var _0x3fbd9b;return db[_0x9ad9('0x3d')][_0x9ad9('0xb')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})[_0x9ad9('0x16')](function(_0x17d654){_0x3fbd9b=_0x17d654;return db['User']['find']({'where':{'email':_0xe25ef9[_0x9ad9('0x3b')][_0x9ad9('0x21')]}});})[_0x9ad9('0x16')](function(_0x3a0043){if(!_0x3a0043){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x3a0043[_0x9ad9('0x11')]){throw new Error(_0x9ad9('0x3e'));}if(_0x3a0043[_0x9ad9('0x12')]){if(moment(_0x3a0043['blockedAt'])[_0x9ad9('0x1b')](_0x3fbd9b[_0x9ad9('0xd')],_0x9ad9('0x1d'))>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x3a0043[_0x9ad9('0x12')]=![];_0x3a0043[_0x9ad9('0x1a')]=null;}}_0x3a0043[_0x9ad9('0x3f')]=_0x5ea091;_0x3a0043[_0x9ad9('0x40')]=Date[_0x9ad9('0x41')]()+0x36ee80;return _0x3a0043[_0x9ad9('0x42')]();})[_0x9ad9('0x16')](function(){return sendServiceMail({'to':_0xe25ef9['body'][_0x9ad9('0x21')],'subject':_0x9ad9('0x43'),'text':_0x9ad9('0x44')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0x9ad9('0x45')+_0xe25ef9[_0x9ad9('0x46')][_0x9ad9('0x26')]+_0x9ad9('0x47')+_0x5ea091+'\x0a\x0a'+_0x9ad9('0x48')});})['then'](function(){_0x389ab5[_0x9ad9('0x31')](0xc8)[_0x9ad9('0x32')]({'message':_0x9ad9('0x49')});})[_0x9ad9('0x1f')](function(_0x462f2d){return handleError(_0x389ab5,0x1f4,_0x462f2d);});};exports[_0x9ad9('0x4a')]=function(_0x13bc9d,_0x413fc3,_0x1820bb){return db[_0x9ad9('0x4b')]['find']({'where':{'resetPasswordToken':_0x13bc9d[_0x9ad9('0x4c')]['token'],'resetPasswordExpires':{'$gt':Date[_0x9ad9('0x41')]()}}})[_0x9ad9('0x16')](function(_0x3ad196){if(!_0x3ad196){throw new Error(_0x9ad9('0x4d'));}return db[_0x9ad9('0x3d')][_0x9ad9('0xb')]({'attributes':['id','securePassword',_0x9ad9('0x4e'),'passwordHistoryLimit']})[_0x9ad9('0x16')](function(_0x1b4233){if(_0x1b4233['securePassword'])authService['validatePasswordPattern'](_0x13bc9d['body']['password']);if(!_0x1b4233[_0x9ad9('0x4e')]||!_0x3ad196[_0x9ad9('0x4f')])return _0x3ad196;authService[_0x9ad9('0x50')](_0x13bc9d['body'][_0x9ad9('0x51')],_0x3ad196['previousPasswords'],_0x1b4233[_0x9ad9('0x52')]);return _0x3ad196;})[_0x9ad9('0x16')](function(){_0x3ad196[_0x9ad9('0x51')]=_0x13bc9d[_0x9ad9('0x3b')][_0x9ad9('0x51')];_0x3ad196[_0x9ad9('0x3f')]=null;_0x3ad196['resetPasswordExpires']=null;return _0x3ad196['save']();});})['then'](function(){_0x413fc3['status'](0xc8)[_0x9ad9('0x32')]({'message':_0x9ad9('0x53')});})[_0x9ad9('0x1f')](function(_0x22c12a){return handleError(_0x413fc3,0x1f4,_0x22c12a);});};passport[_0x9ad9('0x54')](new LocalStrategy({'usernameField':_0x9ad9('0xe'),'passwordField':'password'},function(_0x43eb2b,_0x169c62,_0x4f46b8){return localAuthenticate(db[_0x9ad9('0x4b')],_0x43eb2b,_0x169c62,_0x4f46b8);}));
\ No newline at end of file
index a10464d..1808479 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe78=['/reset/:token','reset','exports','Router','post','login','forgot'];(function(_0x972dd2,_0x530ef8){var _0x32c8eb=function(_0x7fb2d4){while(--_0x7fb2d4){_0x972dd2['push'](_0x972dd2['shift']());}};_0x32c8eb(++_0x530ef8);}(_0xbe78,0x81));var _0x8be7=function(_0x14a084,_0x265682){_0x14a084=_0x14a084-0x0;var _0x4ff7d1=_0xbe78[_0x14a084];return _0x4ff7d1;};'use strict';var express=require('express');var router=express[_0x8be7('0x0')]();var controller=require('./authLocal.controller');router[_0x8be7('0x1')]('/',controller[_0x8be7('0x2')]);router[_0x8be7('0x1')]('/forgot',controller[_0x8be7('0x3')]);router[_0x8be7('0x1')](_0x8be7('0x4'),controller[_0x8be7('0x5')]);module[_0x8be7('0x6')]=router;
\ No newline at end of file
+var _0xd485=['express','Router','./authLocal.controller','post','login','/forgot','forgot','/reset/:token'];(function(_0x4692b4,_0x20099e){var _0x8f0471=function(_0x5115c9){while(--_0x5115c9){_0x4692b4['push'](_0x4692b4['shift']());}};_0x8f0471(++_0x20099e);}(_0xd485,0x148));var _0x5d48=function(_0x59d7df,_0x1ecc88){_0x59d7df=_0x59d7df-0x0;var _0x466a0d=_0xd485[_0x59d7df];return _0x466a0d;};'use strict';var express=require(_0x5d48('0x0'));var router=express[_0x5d48('0x1')]();var controller=require(_0x5d48('0x2'));router[_0x5d48('0x3')]('/',controller[_0x5d48('0x4')]);router[_0x5d48('0x3')](_0x5d48('0x5'),controller[_0x5d48('0x6')]);router[_0x5d48('0x3')](_0x5d48('0x7'),controller['reset']);module['exports']=router;
\ No newline at end of file
index 5797323..e9b3976 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0eb=['sequelize','STRING','BOOLEAN','INTEGER'];(function(_0x2d40bc,_0x41393a){var _0x25151a=function(_0x3b0e55){while(--_0x3b0e55){_0x2d40bc['push'](_0x2d40bc['shift']());}};_0x25151a(++_0x41393a);}(_0xf0eb,0x68));var _0xbf0e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xf0eb[_0x2763f2];return _0x3ef471;};'use strict';var Sequelize=require(_0xbf0e('0x0'));module['exports']={'name':{'type':Sequelize[_0xbf0e('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0xbf0e('0x1')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0xbf0e('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xbf0e('0x3')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x3731=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x4efcf4,_0x2bba10){var _0x48097e=function(_0x4c6f34){while(--_0x4c6f34){_0x4efcf4['push'](_0x4efcf4['shift']());}};_0x48097e(++_0x2bba10);}(_0x3731,0xde));var _0x1373=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x3731[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require(_0x1373('0x0'));module[_0x1373('0x1')]={'name':{'type':Sequelize[_0x1373('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x1373('0x2')]},'description':{'type':Sequelize[_0x1373('0x2')]},'status':{'type':Sequelize[_0x1373('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x1373('0x4')],'defaultValue':0xa}};
\ No newline at end of file
index 14235e9..c335f9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e38=['name','send','index','map','Automation','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','order','sort','pick','where','merge','type','filter','options','includeAll','include','findAll','rows','catch','show','create','body','find','params','addConditions','Condition','ids','getConditions','findOne','length','hasOwnProperty','nolimit','Action','addActions','omit','getActions','eml-format','rimraf','fast-json-patch','mustache','util','path','sox','to-csv','ejs','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','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','error'];(function(_0x89a2b8,_0x2ffa6d){var _0x46b849=function(_0x592d20){while(--_0x592d20){_0x89a2b8['push'](_0x89a2b8['shift']());}};_0x46b849(++_0x2ffa6d);}(_0x1e38,0x178));var _0x81e3=function(_0x5f49c0,_0x27a1b4){_0x5f49c0=_0x5f49c0-0x0;var _0x5ab653=_0x1e38[_0x5f49c0];return _0x5ab653;};'use strict';var emlformat=require(_0x81e3('0x0'));var rimraf=require(_0x81e3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x81e3('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x81e3('0x3'));var util=require(_0x81e3('0x4'));var path=require(_0x81e3('0x5'));var sox=require(_0x81e3('0x6'));var csv=require(_0x81e3('0x7'));var ejs=require(_0x81e3('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x81e3('0x9'));var crypto=require(_0x81e3('0xa'));var jsforce=require(_0x81e3('0xb'));var deskjs=require(_0x81e3('0xc'));var toCsv=require(_0x81e3('0x7'));var querystring=require(_0x81e3('0xd'));var Papa=require(_0x81e3('0xe'));var Redis=require('ioredis');var authService=require(_0x81e3('0xf'));var qs=require(_0x81e3('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x81e3('0x11'));var logger=require(_0x81e3('0x12'))(_0x81e3('0x13'));var utils=require(_0x81e3('0x14'));var config=require(_0x81e3('0x15'));var licenseUtil=require(_0x81e3('0x16'));var db=require(_0x81e3('0x17'))['db'];function respondWithStatusCode(_0xa16c94,_0x2222e3){_0x2222e3=_0x2222e3||0xcc;return function(_0x2915ee){if(_0x2915ee){return _0xa16c94[_0x81e3('0x18')](_0x2222e3);}return _0xa16c94[_0x81e3('0x19')](_0x2222e3)[_0x81e3('0x1a')]();};}function respondWithResult(_0x424bc5,_0x32b722){_0x32b722=_0x32b722||0xc8;return function(_0x3715a9){if(_0x3715a9){return _0x424bc5['status'](_0x32b722)[_0x81e3('0x1b')](_0x3715a9);}};}function respondWithFilteredResult(_0x12e3d0,_0x44c521){return function(_0x4b8aff){if(_0x4b8aff){var _0x2b10d8=typeof _0x44c521[_0x81e3('0x1c')]===_0x81e3('0x1d')&&typeof _0x44c521[_0x81e3('0x1e')]==='undefined';var _0xab0ce7=_0x4b8aff[_0x81e3('0x1f')];var _0x3d1cbb=_0x2b10d8?0x0:_0x44c521['offset'];var _0x224e88=_0x2b10d8?_0x4b8aff[_0x81e3('0x1f')]:_0x44c521[_0x81e3('0x1c')]+_0x44c521[_0x81e3('0x1e')];var _0x14520b;if(_0x224e88>=_0xab0ce7){_0x224e88=_0xab0ce7;_0x14520b=0xc8;}else{_0x14520b=0xce;}_0x12e3d0['status'](_0x14520b);return _0x12e3d0['set'](_0x81e3('0x20'),_0x3d1cbb+'-'+_0x224e88+'/'+_0xab0ce7)[_0x81e3('0x1b')](_0x4b8aff);}return null;};}function patchUpdates(_0x1e1082){return function(_0x38e349){try{jsonpatch[_0x81e3('0x21')](_0x38e349,_0x1e1082,!![]);}catch(_0x3203d2){return BPromise['reject'](_0x3203d2);}return _0x38e349[_0x81e3('0x22')]();};}function saveUpdates(_0x26b4f2,_0x4534d1){return function(_0x43cd83){if(_0x43cd83){return _0x43cd83[_0x81e3('0x23')](_0x26b4f2)[_0x81e3('0x24')](function(_0x4372b5){return _0x4372b5;});}return null;};}function removeEntity(_0x30b8dd,_0x20d198){return function(_0x28bae2){if(_0x28bae2){return _0x28bae2[_0x81e3('0x25')]()[_0x81e3('0x24')](function(){_0x30b8dd['status'](0xcc)[_0x81e3('0x1a')]();});}};}function handleEntityNotFound(_0x4ebe11,_0x253e62){return function(_0x498fb4){if(!_0x498fb4){_0x4ebe11[_0x81e3('0x18')](0x194);}return _0x498fb4;};}function handleError(_0x3eac25,_0x13fda7){_0x13fda7=_0x13fda7||0x1f4;return function(_0x22d025){logger[_0x81e3('0x26')](_0x22d025['stack']);if(_0x22d025[_0x81e3('0x27')]){delete _0x22d025[_0x81e3('0x27')];}_0x3eac25[_0x81e3('0x19')](_0x13fda7)[_0x81e3('0x28')](_0x22d025);};}exports[_0x81e3('0x29')]=function(_0x17c9ee,_0x4fe825){var _0x4e9b71={},_0x5bc461={},_0x4a1237={'count':0x0,'rows':[]};var _0x2ae2d5=_[_0x81e3('0x2a')](db[_0x81e3('0x2b')][_0x81e3('0x2c')],function(_0x3e8e4c){return{'name':_0x3e8e4c['fieldName'],'type':_0x3e8e4c['type'][_0x81e3('0x2d')]};});_0x5bc461[_0x81e3('0x2e')]=_['map'](_0x2ae2d5,_0x81e3('0x27'));_0x5bc461[_0x81e3('0x2f')]=_[_0x81e3('0x30')](_0x17c9ee[_0x81e3('0x2f')]);_0x5bc461[_0x81e3('0x31')]=_['intersection'](_0x5bc461['model'],_0x5bc461[_0x81e3('0x2f')]);_0x4e9b71[_0x81e3('0x32')]=_[_0x81e3('0x33')](_0x5bc461['model'],qs[_0x81e3('0x34')](_0x17c9ee[_0x81e3('0x2f')][_0x81e3('0x34')]));_0x4e9b71[_0x81e3('0x32')]=_0x4e9b71['attributes']['length']?_0x4e9b71[_0x81e3('0x32')]:_0x5bc461['model'];if(!_0x17c9ee[_0x81e3('0x2f')]['hasOwnProperty']('nolimit')){_0x4e9b71[_0x81e3('0x1e')]=qs[_0x81e3('0x1e')](_0x17c9ee[_0x81e3('0x2f')][_0x81e3('0x1e')]);_0x4e9b71[_0x81e3('0x1c')]=qs['offset'](_0x17c9ee['query'][_0x81e3('0x1c')]);}_0x4e9b71[_0x81e3('0x35')]=qs[_0x81e3('0x36')](_0x17c9ee[_0x81e3('0x2f')][_0x81e3('0x36')]);_0x4e9b71['where']=qs[_0x81e3('0x31')](_[_0x81e3('0x37')](_0x17c9ee[_0x81e3('0x2f')],_0x5bc461[_0x81e3('0x31')]),_0x2ae2d5);if(_0x17c9ee[_0x81e3('0x2f')]['filter']){_0x4e9b71[_0x81e3('0x38')]=_[_0x81e3('0x39')](_0x4e9b71[_0x81e3('0x38')],{'$or':_[_0x81e3('0x2a')](_0x2ae2d5,function(_0x3253dc){if(_0x3253dc[_0x81e3('0x3a')]!=='VIRTUAL'){var _0x23e968={};_0x23e968[_0x3253dc[_0x81e3('0x27')]]={'$like':'%'+_0x17c9ee[_0x81e3('0x2f')][_0x81e3('0x3b')]+'%'};return _0x23e968;}})});}_0x4e9b71=_[_0x81e3('0x39')]({},_0x4e9b71,_0x17c9ee[_0x81e3('0x3c')]);var _0x49724c={'where':_0x4e9b71[_0x81e3('0x38')]};return db['Automation']['count'](_0x49724c)[_0x81e3('0x24')](function(_0x46c7b0){_0x4a1237[_0x81e3('0x1f')]=_0x46c7b0;if(_0x17c9ee[_0x81e3('0x2f')][_0x81e3('0x3d')]){_0x4e9b71[_0x81e3('0x3e')]=[{'all':!![]}];}return db[_0x81e3('0x2b')][_0x81e3('0x3f')](_0x4e9b71);})[_0x81e3('0x24')](function(_0x9eae81){_0x4a1237[_0x81e3('0x40')]=_0x9eae81;return _0x4a1237;})[_0x81e3('0x24')](respondWithFilteredResult(_0x4fe825,_0x4e9b71))[_0x81e3('0x41')](handleError(_0x4fe825,null));};exports[_0x81e3('0x42')]=function(_0x4529d4,_0xccec7e){var _0x5d2041={'raw':![],'where':{'id':_0x4529d4['params']['id']}},_0x163bf6={};_0x163bf6[_0x81e3('0x2e')]=_['keys'](db[_0x81e3('0x2b')][_0x81e3('0x2c')]);_0x163bf6[_0x81e3('0x2f')]=_[_0x81e3('0x30')](_0x4529d4[_0x81e3('0x2f')]);_0x163bf6[_0x81e3('0x31')]=_['intersection'](_0x163bf6[_0x81e3('0x2e')],_0x163bf6[_0x81e3('0x2f')]);_0x5d2041[_0x81e3('0x32')]=_['intersection'](_0x163bf6[_0x81e3('0x2e')],qs[_0x81e3('0x34')](_0x4529d4[_0x81e3('0x2f')][_0x81e3('0x34')]));_0x5d2041[_0x81e3('0x32')]=_0x5d2041['attributes']['length']?_0x5d2041[_0x81e3('0x32')]:_0x163bf6['model'];if(_0x4529d4[_0x81e3('0x2f')][_0x81e3('0x3d')]){_0x5d2041[_0x81e3('0x3e')]=[{'all':!![]}];}_0x5d2041=_[_0x81e3('0x39')]({},_0x5d2041,_0x4529d4[_0x81e3('0x3c')]);return db[_0x81e3('0x2b')]['find'](_0x5d2041)[_0x81e3('0x24')](handleEntityNotFound(_0xccec7e,null))[_0x81e3('0x24')](respondWithResult(_0xccec7e,null))['catch'](handleError(_0xccec7e,null));};exports[_0x81e3('0x43')]=function(_0x1e82b6,_0x370a80){return db['Automation']['create'](_0x1e82b6[_0x81e3('0x44')],{})[_0x81e3('0x24')](respondWithResult(_0x370a80,0xc9))[_0x81e3('0x41')](handleError(_0x370a80,null));};exports[_0x81e3('0x23')]=function(_0x14045e,_0x12e7f7){if(_0x14045e['body']['id']){delete _0x14045e[_0x81e3('0x44')]['id'];}return db[_0x81e3('0x2b')][_0x81e3('0x45')]({'where':{'id':_0x14045e[_0x81e3('0x46')]['id']}})['then'](handleEntityNotFound(_0x12e7f7,null))[_0x81e3('0x24')](saveUpdates(_0x14045e[_0x81e3('0x44')],null))['then'](respondWithResult(_0x12e7f7,null))[_0x81e3('0x41')](handleError(_0x12e7f7,null));};exports[_0x81e3('0x25')]=function(_0x57d58a,_0x347e5f){return db[_0x81e3('0x2b')][_0x81e3('0x45')]({'where':{'id':_0x57d58a[_0x81e3('0x46')]['id']}})[_0x81e3('0x24')](handleEntityNotFound(_0x347e5f,null))[_0x81e3('0x24')](removeEntity(_0x347e5f,null))[_0x81e3('0x41')](handleError(_0x347e5f,null));};exports[_0x81e3('0x47')]=function(_0x3fc65a,_0x1c86a8,_0xc02986){return db[_0x81e3('0x48')][_0x81e3('0x45')]({'where':{'id':_0x3fc65a[_0x81e3('0x46')]['id']}})[_0x81e3('0x24')](handleEntityNotFound(_0x1c86a8,null))[_0x81e3('0x24')](function(_0x3f8690){if(_0x3f8690){return _0x3f8690[_0x81e3('0x47')](_0x3fc65a[_0x81e3('0x44')][_0x81e3('0x49')],_['omit'](_0x3fc65a['body'],[_0x81e3('0x49'),'id'])||{});}})[_0x81e3('0x24')](respondWithResult(_0x1c86a8,null))[_0x81e3('0x41')](handleError(_0x1c86a8,null));};exports[_0x81e3('0x4a')]=function(_0x3ca6be,_0x3040e0,_0x586dbf){var _0x1278db={};var _0x4bde6b={};var _0x1cd7b5;var _0x360e0b;return db[_0x81e3('0x2b')][_0x81e3('0x4b')]({'where':{'id':_0x3ca6be['params']['id']}})[_0x81e3('0x24')](handleEntityNotFound(_0x3040e0,null))['then'](function(_0x553733){if(_0x553733){_0x1cd7b5=_0x553733;_0x4bde6b[_0x81e3('0x2e')]=_[_0x81e3('0x30')](db['Condition'][_0x81e3('0x2c')]);_0x4bde6b[_0x81e3('0x2f')]=_[_0x81e3('0x30')](_0x3ca6be[_0x81e3('0x2f')]);_0x4bde6b[_0x81e3('0x31')]=_[_0x81e3('0x33')](_0x4bde6b[_0x81e3('0x2e')],_0x4bde6b['query']);_0x1278db['attributes']=_[_0x81e3('0x33')](_0x4bde6b['model'],qs[_0x81e3('0x34')](_0x3ca6be['query'][_0x81e3('0x34')]));_0x1278db['attributes']=_0x1278db[_0x81e3('0x32')][_0x81e3('0x4c')]?_0x1278db[_0x81e3('0x32')]:_0x4bde6b[_0x81e3('0x2e')];_0x1278db['order']=qs[_0x81e3('0x36')](_0x3ca6be['query']['sort']);_0x1278db['where']=qs[_0x81e3('0x31')](_['pick'](_0x3ca6be[_0x81e3('0x2f')],_0x4bde6b[_0x81e3('0x31')]));if(_0x3ca6be[_0x81e3('0x2f')][_0x81e3('0x3b')]){_0x1278db[_0x81e3('0x38')]=_[_0x81e3('0x39')](_0x1278db[_0x81e3('0x38')],{'$or':_[_0x81e3('0x2a')](_0x1278db[_0x81e3('0x32')],function(_0x311051){var _0x22f552={};_0x22f552[_0x311051]={'$like':'%'+_0x3ca6be['query'][_0x81e3('0x3b')]+'%'};return _0x22f552;})});}_0x1278db=_[_0x81e3('0x39')]({},_0x1278db,_0x3ca6be['options']);return _0x1cd7b5[_0x81e3('0x4a')](_0x1278db);}})[_0x81e3('0x24')](function(_0x21573b){if(_0x21573b){_0x360e0b=_0x21573b[_0x81e3('0x4c')];if(!_0x3ca6be['query'][_0x81e3('0x4d')](_0x81e3('0x4e'))){_0x1278db[_0x81e3('0x1e')]=qs[_0x81e3('0x1e')](_0x3ca6be[_0x81e3('0x2f')]['limit']);_0x1278db['offset']=qs[_0x81e3('0x1c')](_0x3ca6be[_0x81e3('0x2f')][_0x81e3('0x1c')]);}return _0x1cd7b5[_0x81e3('0x4a')](_0x1278db);}})[_0x81e3('0x24')](function(_0x12672f){if(_0x12672f){return _0x12672f?{'count':_0x360e0b,'rows':_0x12672f}:null;}})[_0x81e3('0x24')](respondWithResult(_0x3040e0,null))[_0x81e3('0x41')](handleError(_0x3040e0,null));};exports['addActions']=function(_0xb1565e,_0x4a5209,_0xcdf2d3){return db[_0x81e3('0x4f')][_0x81e3('0x45')]({'where':{'id':_0xb1565e[_0x81e3('0x46')]['id']}})['then'](handleEntityNotFound(_0x4a5209,null))['then'](function(_0xb7cbdc){if(_0xb7cbdc){return _0xb7cbdc[_0x81e3('0x50')](_0xb1565e[_0x81e3('0x44')]['ids'],_[_0x81e3('0x51')](_0xb1565e[_0x81e3('0x44')],[_0x81e3('0x49'),'id'])||{});}})['then'](respondWithResult(_0x4a5209,null))[_0x81e3('0x41')](handleError(_0x4a5209,null));};exports['getActions']=function(_0x40c92a,_0xb937a7,_0x1dfdc9){var _0x14e108={};var _0x2afdd2={};var _0x4ae441;var _0x34198c;return db[_0x81e3('0x2b')]['findOne']({'where':{'id':_0x40c92a[_0x81e3('0x46')]['id']}})[_0x81e3('0x24')](handleEntityNotFound(_0xb937a7,null))['then'](function(_0x131b07){if(_0x131b07){_0x4ae441=_0x131b07;_0x2afdd2[_0x81e3('0x2e')]=_[_0x81e3('0x30')](db['Action'][_0x81e3('0x2c')]);_0x2afdd2[_0x81e3('0x2f')]=_['keys'](_0x40c92a[_0x81e3('0x2f')]);_0x2afdd2[_0x81e3('0x31')]=_['intersection'](_0x2afdd2[_0x81e3('0x2e')],_0x2afdd2[_0x81e3('0x2f')]);_0x14e108['attributes']=_[_0x81e3('0x33')](_0x2afdd2['model'],qs[_0x81e3('0x34')](_0x40c92a[_0x81e3('0x2f')][_0x81e3('0x34')]));_0x14e108[_0x81e3('0x32')]=_0x14e108[_0x81e3('0x32')][_0x81e3('0x4c')]?_0x14e108[_0x81e3('0x32')]:_0x2afdd2[_0x81e3('0x2e')];_0x14e108[_0x81e3('0x35')]=qs[_0x81e3('0x36')](_0x40c92a[_0x81e3('0x2f')][_0x81e3('0x36')]);_0x14e108[_0x81e3('0x38')]=qs[_0x81e3('0x31')](_[_0x81e3('0x37')](_0x40c92a[_0x81e3('0x2f')],_0x2afdd2['filters']));if(_0x40c92a[_0x81e3('0x2f')][_0x81e3('0x3b')]){_0x14e108[_0x81e3('0x38')]=_[_0x81e3('0x39')](_0x14e108[_0x81e3('0x38')],{'$or':_[_0x81e3('0x2a')](_0x14e108[_0x81e3('0x32')],function(_0x2c731a){var _0x2d9fc3={};_0x2d9fc3[_0x2c731a]={'$like':'%'+_0x40c92a['query'][_0x81e3('0x3b')]+'%'};return _0x2d9fc3;})});}_0x14e108=_['merge']({},_0x14e108,_0x40c92a[_0x81e3('0x3c')]);return _0x4ae441[_0x81e3('0x52')](_0x14e108);}})['then'](function(_0x14fa53){if(_0x14fa53){_0x34198c=_0x14fa53[_0x81e3('0x4c')];if(!_0x40c92a[_0x81e3('0x2f')][_0x81e3('0x4d')](_0x81e3('0x4e'))){_0x14e108[_0x81e3('0x1e')]=qs[_0x81e3('0x1e')](_0x40c92a['query'][_0x81e3('0x1e')]);_0x14e108[_0x81e3('0x1c')]=qs[_0x81e3('0x1c')](_0x40c92a[_0x81e3('0x2f')][_0x81e3('0x1c')]);}return _0x4ae441[_0x81e3('0x52')](_0x14e108);}})[_0x81e3('0x24')](function(_0x3c6a01){if(_0x3c6a01){return _0x3c6a01?{'count':_0x34198c,'rows':_0x3c6a01}:null;}})['then'](respondWithResult(_0xb937a7,null))[_0x81e3('0x41')](handleError(_0xb937a7,null));};
\ No newline at end of file
+var _0x1240=['pick','filter','merge','includeAll','include','findAll','rows','catch','show','params','intersection','options','find','create','body','ids','omit','getConditions','findOne','order','nolimit','getActions','eml-format','zip-dir','fast-json-patch','moment','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','map','Automation','rawAttributes','fieldName','type','model','query','keys','filters','attributes','fields','length','hasOwnProperty','sort','where'];(function(_0x53ad58,_0x3fb489){var _0x554b03=function(_0x5769ba){while(--_0x5769ba){_0x53ad58['push'](_0x53ad58['shift']());}};_0x554b03(++_0x3fb489);}(_0x1240,0x156));var _0x0124=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x1240[_0x4e676e];return _0x336a3c;};'use strict';var emlformat=require(_0x0124('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0124('0x1'));var jsonpatch=require(_0x0124('0x2'));var rp=require('request-promise');var moment=require(_0x0124('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0124('0x4'));var util=require(_0x0124('0x5'));var path=require('path');var sox=require(_0x0124('0x6'));var csv=require('to-csv');var ejs=require(_0x0124('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0124('0x8'));var squel=require(_0x0124('0x9'));var crypto=require(_0x0124('0xa'));var jsforce=require(_0x0124('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0124('0xc'));var querystring=require(_0x0124('0xd'));var Papa=require(_0x0124('0xe'));var Redis=require(_0x0124('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x0124('0x10'));var as=require(_0x0124('0x11'));var hardwareService=require(_0x0124('0x12'));var logger=require(_0x0124('0x13'))('api');var utils=require(_0x0124('0x14'));var config=require(_0x0124('0x15'));var licenseUtil=require(_0x0124('0x16'));var db=require(_0x0124('0x17'))['db'];function respondWithStatusCode(_0x5ea4f0,_0x2f0421){_0x2f0421=_0x2f0421||0xcc;return function(_0x15875e){if(_0x15875e){return _0x5ea4f0[_0x0124('0x18')](_0x2f0421);}return _0x5ea4f0[_0x0124('0x19')](_0x2f0421)['end']();};}function respondWithResult(_0x90f167,_0x47b6aa){_0x47b6aa=_0x47b6aa||0xc8;return function(_0x54e568){if(_0x54e568){return _0x90f167[_0x0124('0x19')](_0x47b6aa)[_0x0124('0x1a')](_0x54e568);}};}function respondWithFilteredResult(_0x5350df,_0x20f666){return function(_0x181b2d){if(_0x181b2d){var _0x2d9b31=typeof _0x20f666[_0x0124('0x1b')]==='undefined'&&typeof _0x20f666[_0x0124('0x1c')]==='undefined';var _0x40d1a6=_0x181b2d[_0x0124('0x1d')];var _0xfbff55=_0x2d9b31?0x0:_0x20f666[_0x0124('0x1b')];var _0x5473e6=_0x2d9b31?_0x181b2d['count']:_0x20f666[_0x0124('0x1b')]+_0x20f666[_0x0124('0x1c')];var _0x11185a;if(_0x5473e6>=_0x40d1a6){_0x5473e6=_0x40d1a6;_0x11185a=0xc8;}else{_0x11185a=0xce;}_0x5350df[_0x0124('0x19')](_0x11185a);return _0x5350df[_0x0124('0x1e')](_0x0124('0x1f'),_0xfbff55+'-'+_0x5473e6+'/'+_0x40d1a6)[_0x0124('0x1a')](_0x181b2d);}return null;};}function patchUpdates(_0x1f24f2){return function(_0x104711){try{jsonpatch[_0x0124('0x20')](_0x104711,_0x1f24f2,!![]);}catch(_0x1e3de9){return BPromise[_0x0124('0x21')](_0x1e3de9);}return _0x104711[_0x0124('0x22')]();};}function saveUpdates(_0x482cf4,_0x10d448){return function(_0x413b64){if(_0x413b64){return _0x413b64[_0x0124('0x23')](_0x482cf4)[_0x0124('0x24')](function(_0x268950){return _0x268950;});}return null;};}function removeEntity(_0x21016b,_0x116b07){return function(_0x2e03bc){if(_0x2e03bc){return _0x2e03bc[_0x0124('0x25')]()[_0x0124('0x24')](function(){_0x21016b['status'](0xcc)[_0x0124('0x26')]();});}};}function handleEntityNotFound(_0x12ce58,_0x41c77f){return function(_0x274fa3){if(!_0x274fa3){_0x12ce58[_0x0124('0x18')](0x194);}return _0x274fa3;};}function handleError(_0x2dbd3d,_0x1d711f){_0x1d711f=_0x1d711f||0x1f4;return function(_0x4700dc){logger[_0x0124('0x27')](_0x4700dc[_0x0124('0x28')]);if(_0x4700dc[_0x0124('0x29')]){delete _0x4700dc[_0x0124('0x29')];}_0x2dbd3d[_0x0124('0x19')](_0x1d711f)[_0x0124('0x2a')](_0x4700dc);};}exports['index']=function(_0x76b39d,_0x5f5d3c){var _0x565c4c={},_0x11a098={},_0x5e603e={'count':0x0,'rows':[]};var _0x57fb63=_[_0x0124('0x2b')](db[_0x0124('0x2c')][_0x0124('0x2d')],function(_0x1f04bc){return{'name':_0x1f04bc[_0x0124('0x2e')],'type':_0x1f04bc[_0x0124('0x2f')]['key']};});_0x11a098[_0x0124('0x30')]=_[_0x0124('0x2b')](_0x57fb63,'name');_0x11a098[_0x0124('0x31')]=_[_0x0124('0x32')](_0x76b39d['query']);_0x11a098[_0x0124('0x33')]=_['intersection'](_0x11a098[_0x0124('0x30')],_0x11a098[_0x0124('0x31')]);_0x565c4c[_0x0124('0x34')]=_['intersection'](_0x11a098[_0x0124('0x30')],qs[_0x0124('0x35')](_0x76b39d['query'][_0x0124('0x35')]));_0x565c4c[_0x0124('0x34')]=_0x565c4c[_0x0124('0x34')][_0x0124('0x36')]?_0x565c4c[_0x0124('0x34')]:_0x11a098[_0x0124('0x30')];if(!_0x76b39d['query'][_0x0124('0x37')]('nolimit')){_0x565c4c[_0x0124('0x1c')]=qs[_0x0124('0x1c')](_0x76b39d['query']['limit']);_0x565c4c[_0x0124('0x1b')]=qs['offset'](_0x76b39d[_0x0124('0x31')][_0x0124('0x1b')]);}_0x565c4c['order']=qs[_0x0124('0x38')](_0x76b39d[_0x0124('0x31')][_0x0124('0x38')]);_0x565c4c[_0x0124('0x39')]=qs['filters'](_[_0x0124('0x3a')](_0x76b39d[_0x0124('0x31')],_0x11a098[_0x0124('0x33')]),_0x57fb63);if(_0x76b39d[_0x0124('0x31')][_0x0124('0x3b')]){_0x565c4c[_0x0124('0x39')]=_[_0x0124('0x3c')](_0x565c4c[_0x0124('0x39')],{'$or':_[_0x0124('0x2b')](_0x57fb63,function(_0x59d283){if(_0x59d283[_0x0124('0x2f')]!=='VIRTUAL'){var _0x5bb395={};_0x5bb395[_0x59d283[_0x0124('0x29')]]={'$like':'%'+_0x76b39d[_0x0124('0x31')][_0x0124('0x3b')]+'%'};return _0x5bb395;}})});}_0x565c4c=_['merge']({},_0x565c4c,_0x76b39d['options']);var _0x115c02={'where':_0x565c4c[_0x0124('0x39')]};return db[_0x0124('0x2c')][_0x0124('0x1d')](_0x115c02)['then'](function(_0x1643a7){_0x5e603e['count']=_0x1643a7;if(_0x76b39d[_0x0124('0x31')][_0x0124('0x3d')]){_0x565c4c[_0x0124('0x3e')]=[{'all':!![]}];}return db[_0x0124('0x2c')][_0x0124('0x3f')](_0x565c4c);})[_0x0124('0x24')](function(_0x4b0ee8){_0x5e603e[_0x0124('0x40')]=_0x4b0ee8;return _0x5e603e;})[_0x0124('0x24')](respondWithFilteredResult(_0x5f5d3c,_0x565c4c))[_0x0124('0x41')](handleError(_0x5f5d3c,null));};exports[_0x0124('0x42')]=function(_0x15a3a8,_0x2a2e1e){var _0x57d67b={'raw':![],'where':{'id':_0x15a3a8[_0x0124('0x43')]['id']}},_0x62b878={};_0x62b878['model']=_['keys'](db[_0x0124('0x2c')][_0x0124('0x2d')]);_0x62b878[_0x0124('0x31')]=_[_0x0124('0x32')](_0x15a3a8['query']);_0x62b878[_0x0124('0x33')]=_['intersection'](_0x62b878[_0x0124('0x30')],_0x62b878['query']);_0x57d67b['attributes']=_[_0x0124('0x44')](_0x62b878[_0x0124('0x30')],qs[_0x0124('0x35')](_0x15a3a8['query'][_0x0124('0x35')]));_0x57d67b[_0x0124('0x34')]=_0x57d67b['attributes']['length']?_0x57d67b[_0x0124('0x34')]:_0x62b878[_0x0124('0x30')];if(_0x15a3a8[_0x0124('0x31')][_0x0124('0x3d')]){_0x57d67b[_0x0124('0x3e')]=[{'all':!![]}];}_0x57d67b=_[_0x0124('0x3c')]({},_0x57d67b,_0x15a3a8[_0x0124('0x45')]);return db[_0x0124('0x2c')][_0x0124('0x46')](_0x57d67b)[_0x0124('0x24')](handleEntityNotFound(_0x2a2e1e,null))['then'](respondWithResult(_0x2a2e1e,null))[_0x0124('0x41')](handleError(_0x2a2e1e,null));};exports[_0x0124('0x47')]=function(_0x3c5b9c,_0x4f9c32){return db[_0x0124('0x2c')][_0x0124('0x47')](_0x3c5b9c[_0x0124('0x48')],{})[_0x0124('0x24')](respondWithResult(_0x4f9c32,0xc9))[_0x0124('0x41')](handleError(_0x4f9c32,null));};exports[_0x0124('0x23')]=function(_0x208372,_0x1a8a8b){if(_0x208372[_0x0124('0x48')]['id']){delete _0x208372[_0x0124('0x48')]['id'];}return db[_0x0124('0x2c')][_0x0124('0x46')]({'where':{'id':_0x208372[_0x0124('0x43')]['id']}})[_0x0124('0x24')](handleEntityNotFound(_0x1a8a8b,null))[_0x0124('0x24')](saveUpdates(_0x208372[_0x0124('0x48')],null))[_0x0124('0x24')](respondWithResult(_0x1a8a8b,null))[_0x0124('0x41')](handleError(_0x1a8a8b,null));};exports['destroy']=function(_0x469cb2,_0xd0d579){return db[_0x0124('0x2c')][_0x0124('0x46')]({'where':{'id':_0x469cb2[_0x0124('0x43')]['id']}})[_0x0124('0x24')](handleEntityNotFound(_0xd0d579,null))[_0x0124('0x24')](removeEntity(_0xd0d579,null))[_0x0124('0x41')](handleError(_0xd0d579,null));};exports['addConditions']=function(_0x4d66d0,_0x5173a9,_0x488b71){return db['Condition'][_0x0124('0x46')]({'where':{'id':_0x4d66d0[_0x0124('0x43')]['id']}})['then'](handleEntityNotFound(_0x5173a9,null))[_0x0124('0x24')](function(_0x2cb511){if(_0x2cb511){return _0x2cb511['addConditions'](_0x4d66d0[_0x0124('0x48')][_0x0124('0x49')],_[_0x0124('0x4a')](_0x4d66d0[_0x0124('0x48')],['ids','id'])||{});}})[_0x0124('0x24')](respondWithResult(_0x5173a9,null))[_0x0124('0x41')](handleError(_0x5173a9,null));};exports[_0x0124('0x4b')]=function(_0x50c3db,_0x295911,_0x948fd2){var _0xabe7a1={};var _0x57eaaa={};var _0x16f3f2;var _0x3a43ae;return db[_0x0124('0x2c')][_0x0124('0x4c')]({'where':{'id':_0x50c3db[_0x0124('0x43')]['id']}})[_0x0124('0x24')](handleEntityNotFound(_0x295911,null))[_0x0124('0x24')](function(_0xa4c97e){if(_0xa4c97e){_0x16f3f2=_0xa4c97e;_0x57eaaa[_0x0124('0x30')]=_[_0x0124('0x32')](db['Condition'][_0x0124('0x2d')]);_0x57eaaa[_0x0124('0x31')]=_[_0x0124('0x32')](_0x50c3db[_0x0124('0x31')]);_0x57eaaa[_0x0124('0x33')]=_[_0x0124('0x44')](_0x57eaaa[_0x0124('0x30')],_0x57eaaa[_0x0124('0x31')]);_0xabe7a1[_0x0124('0x34')]=_[_0x0124('0x44')](_0x57eaaa[_0x0124('0x30')],qs[_0x0124('0x35')](_0x50c3db[_0x0124('0x31')]['fields']));_0xabe7a1[_0x0124('0x34')]=_0xabe7a1['attributes'][_0x0124('0x36')]?_0xabe7a1[_0x0124('0x34')]:_0x57eaaa['model'];_0xabe7a1['order']=qs[_0x0124('0x38')](_0x50c3db[_0x0124('0x31')][_0x0124('0x38')]);_0xabe7a1[_0x0124('0x39')]=qs['filters'](_[_0x0124('0x3a')](_0x50c3db[_0x0124('0x31')],_0x57eaaa[_0x0124('0x33')]));if(_0x50c3db[_0x0124('0x31')]['filter']){_0xabe7a1['where']=_[_0x0124('0x3c')](_0xabe7a1[_0x0124('0x39')],{'$or':_['map'](_0xabe7a1[_0x0124('0x34')],function(_0x5025c0){var _0x1f5b77={};_0x1f5b77[_0x5025c0]={'$like':'%'+_0x50c3db[_0x0124('0x31')][_0x0124('0x3b')]+'%'};return _0x1f5b77;})});}_0xabe7a1=_[_0x0124('0x3c')]({},_0xabe7a1,_0x50c3db['options']);return _0x16f3f2[_0x0124('0x4b')](_0xabe7a1);}})['then'](function(_0x2c3260){if(_0x2c3260){_0x3a43ae=_0x2c3260[_0x0124('0x36')];if(!_0x50c3db[_0x0124('0x31')][_0x0124('0x37')]('nolimit')){_0xabe7a1['limit']=qs[_0x0124('0x1c')](_0x50c3db['query'][_0x0124('0x1c')]);_0xabe7a1['offset']=qs[_0x0124('0x1b')](_0x50c3db[_0x0124('0x31')][_0x0124('0x1b')]);}return _0x16f3f2[_0x0124('0x4b')](_0xabe7a1);}})[_0x0124('0x24')](function(_0x403716){if(_0x403716){return _0x403716?{'count':_0x3a43ae,'rows':_0x403716}:null;}})[_0x0124('0x24')](respondWithResult(_0x295911,null))[_0x0124('0x41')](handleError(_0x295911,null));};exports['addActions']=function(_0x2b7658,_0x3e90ac,_0x15a8d7){return db['Action'][_0x0124('0x46')]({'where':{'id':_0x2b7658[_0x0124('0x43')]['id']}})[_0x0124('0x24')](handleEntityNotFound(_0x3e90ac,null))[_0x0124('0x24')](function(_0x603e3d){if(_0x603e3d){return _0x603e3d['addActions'](_0x2b7658[_0x0124('0x48')]['ids'],_[_0x0124('0x4a')](_0x2b7658[_0x0124('0x48')],[_0x0124('0x49'),'id'])||{});}})[_0x0124('0x24')](respondWithResult(_0x3e90ac,null))['catch'](handleError(_0x3e90ac,null));};exports['getActions']=function(_0x1f3b76,_0x3405ef,_0x50ed01){var _0x5cf5ed={};var _0x520f7e={};var _0x3c7b1f;var _0x113539;return db[_0x0124('0x2c')][_0x0124('0x4c')]({'where':{'id':_0x1f3b76[_0x0124('0x43')]['id']}})['then'](handleEntityNotFound(_0x3405ef,null))[_0x0124('0x24')](function(_0x525cc0){if(_0x525cc0){_0x3c7b1f=_0x525cc0;_0x520f7e[_0x0124('0x30')]=_['keys'](db['Action']['rawAttributes']);_0x520f7e[_0x0124('0x31')]=_[_0x0124('0x32')](_0x1f3b76[_0x0124('0x31')]);_0x520f7e[_0x0124('0x33')]=_[_0x0124('0x44')](_0x520f7e[_0x0124('0x30')],_0x520f7e['query']);_0x5cf5ed[_0x0124('0x34')]=_[_0x0124('0x44')](_0x520f7e[_0x0124('0x30')],qs['fields'](_0x1f3b76[_0x0124('0x31')][_0x0124('0x35')]));_0x5cf5ed[_0x0124('0x34')]=_0x5cf5ed[_0x0124('0x34')][_0x0124('0x36')]?_0x5cf5ed['attributes']:_0x520f7e['model'];_0x5cf5ed[_0x0124('0x4d')]=qs[_0x0124('0x38')](_0x1f3b76['query'][_0x0124('0x38')]);_0x5cf5ed[_0x0124('0x39')]=qs[_0x0124('0x33')](_[_0x0124('0x3a')](_0x1f3b76[_0x0124('0x31')],_0x520f7e['filters']));if(_0x1f3b76['query'][_0x0124('0x3b')]){_0x5cf5ed[_0x0124('0x39')]=_[_0x0124('0x3c')](_0x5cf5ed[_0x0124('0x39')],{'$or':_[_0x0124('0x2b')](_0x5cf5ed['attributes'],function(_0x5757d2){var _0x15a3b3={};_0x15a3b3[_0x5757d2]={'$like':'%'+_0x1f3b76['query'][_0x0124('0x3b')]+'%'};return _0x15a3b3;})});}_0x5cf5ed=_[_0x0124('0x3c')]({},_0x5cf5ed,_0x1f3b76['options']);return _0x3c7b1f['getActions'](_0x5cf5ed);}})[_0x0124('0x24')](function(_0x3a3578){if(_0x3a3578){_0x113539=_0x3a3578[_0x0124('0x36')];if(!_0x1f3b76[_0x0124('0x31')][_0x0124('0x37')](_0x0124('0x4e'))){_0x5cf5ed[_0x0124('0x1c')]=qs[_0x0124('0x1c')](_0x1f3b76[_0x0124('0x31')]['limit']);_0x5cf5ed[_0x0124('0x1b')]=qs[_0x0124('0x1b')](_0x1f3b76[_0x0124('0x31')]['offset']);}return _0x3c7b1f[_0x0124('0x4f')](_0x5cf5ed);}})[_0x0124('0x24')](function(_0x1637da){if(_0x1637da){return _0x1637da?{'count':_0x113539,'rows':_0x1637da}:null;}})[_0x0124('0x24')](respondWithResult(_0x3405ef,null))[_0x0124('0x41')](handleError(_0x3405ef,null));};
\ No newline at end of file
index 30f8273..517a637 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b3e=['exports','define','tools_automations','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./automation.attributes'];(function(_0x41da6,_0x42431b){var _0x282340=function(_0x3481f2){while(--_0x3481f2){_0x41da6['push'](_0x41da6['shift']());}};_0x282340(++_0x42431b);}(_0x1b3e,0x87));var _0xe1b3=function(_0x41e20b,_0x573d6c){_0x41e20b=_0x41e20b-0x0;var _0x59a15c=_0x1b3e[_0x41e20b];return _0x59a15c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe1b3('0x0'))(_0xe1b3('0x1'));var moment=require(_0xe1b3('0x2'));var BPromise=require(_0xe1b3('0x3'));var rp=require(_0xe1b3('0x4'));var fs=require('fs');var path=require(_0xe1b3('0x5'));var rimraf=require(_0xe1b3('0x6'));var config=require(_0xe1b3('0x7'));var attributes=require(_0xe1b3('0x8'));module[_0xe1b3('0x9')]=function(_0xf0fede,_0x492e88){return _0xf0fede[_0xe1b3('0xa')]('Automation',attributes,{'tableName':_0xe1b3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9390=['define','Automation','lodash','util','bluebird','path','../../config/environment','./automation.attributes','exports'];(function(_0x59cd6b,_0x28ff84){var _0x134a32=function(_0x17ba87){while(--_0x17ba87){_0x59cd6b['push'](_0x59cd6b['shift']());}};_0x134a32(++_0x28ff84);}(_0x9390,0xad));var _0x0939=function(_0xcaa3bd,_0x2c4c3b){_0xcaa3bd=_0xcaa3bd-0x0;var _0x524251=_0x9390[_0xcaa3bd];return _0x524251;};'use strict';var _=require(_0x0939('0x0'));var util=require(_0x0939('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0939('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0939('0x3'));var rimraf=require('rimraf');var config=require(_0x0939('0x4'));var attributes=require(_0x0939('0x5'));module[_0x0939('0x6')]=function(_0x5eb355,_0x51cadb){return _0x5eb355[_0x0939('0x7')](_0x0939('0x8'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 78d760e..7d2d154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3e8=['Automation,\x20%s,\x20%s','request\x20sent','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info'];(function(_0x544745,_0x581565){var _0x4f41dc=function(_0x106ae9){while(--_0x106ae9){_0x544745['push'](_0x544745['shift']());}};_0x4f41dc(++_0x581565);}(_0xa3e8,0x127));var _0x8a3e=function(_0x221837,_0x194718){_0x221837=_0x221837-0x0;var _0x44164a=_0xa3e8[_0x221837];return _0x44164a;};'use strict';var _=require(_0x8a3e('0x0'));var util=require(_0x8a3e('0x1'));var moment=require(_0x8a3e('0x2'));var BPromise=require('bluebird');var rs=require(_0x8a3e('0x3'));var fs=require('fs');var Redis=require(_0x8a3e('0x4'));var db=require(_0x8a3e('0x5'))['db'];var utils=require(_0x8a3e('0x6'));var logger=require(_0x8a3e('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8a3e('0x8')][_0x8a3e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2052a8,_0x5a2a25,_0x27f08d){return new BPromise(function(_0x4c7f41,_0x437cde){return client[_0x8a3e('0xa')](_0x2052a8,_0x27f08d)[_0x8a3e('0xb')](function(_0x402a96){logger[_0x8a3e('0xc')](_0x8a3e('0xd'),_0x5a2a25,_0x8a3e('0xe'));logger['debug'](_0x8a3e('0xf'),_0x5a2a25,_0x8a3e('0xe'),JSON[_0x8a3e('0x10')](_0x402a96));if(_0x402a96['error']){if(_0x402a96[_0x8a3e('0x11')][_0x8a3e('0x12')]===0x1f4){logger[_0x8a3e('0x11')](_0x8a3e('0xd'),_0x5a2a25,_0x402a96[_0x8a3e('0x11')][_0x8a3e('0x13')]);return _0x437cde(_0x402a96[_0x8a3e('0x11')][_0x8a3e('0x13')]);}logger[_0x8a3e('0x11')](_0x8a3e('0xd'),_0x5a2a25,_0x402a96[_0x8a3e('0x11')][_0x8a3e('0x13')]);return _0x4c7f41(_0x402a96[_0x8a3e('0x11')]['message']);}else{logger[_0x8a3e('0xc')](_0x8a3e('0xd'),_0x5a2a25,_0x8a3e('0xe'));_0x4c7f41(_0x402a96[_0x8a3e('0x14')][_0x8a3e('0x13')]);}})[_0x8a3e('0x15')](function(_0x48e5a8){logger[_0x8a3e('0x11')]('Automation,\x20%s,\x20%s',_0x5a2a25,_0x48e5a8);_0x437cde(_0x48e5a8);});});}
\ No newline at end of file
+var _0x3870=['Automation,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x5834bc,_0x3d4801){var _0x3e183a=function(_0x18b023){while(--_0x18b023){_0x5834bc['push'](_0x5834bc['shift']());}};_0x3e183a(++_0x3d4801);}(_0x3870,0x146));var _0x0387=function(_0x265793,_0x167bb5){_0x265793=_0x265793-0x0;var _0x53202e=_0x3870[_0x265793];return _0x53202e;};'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')]('Automation,\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']('Automation,\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 fe69bc3..714820d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6263=['put','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','show','/:id/conditions','/:id/actions','post','create','addConditions','addActions'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0x6263,0x19d));var _0x3626=function(_0x488dd0,_0x1e0044){_0x488dd0=_0x488dd0-0x0;var _0xb0577d=_0x6263[_0x488dd0];return _0xb0577d;};'use strict';var multer=require(_0x3626('0x0'));var util=require(_0x3626('0x1'));var path=require(_0x3626('0x2'));var timeout=require(_0x3626('0x3'));var express=require(_0x3626('0x4'));var router=express['Router']();var fs_extra=require(_0x3626('0x5'));var auth=require(_0x3626('0x6'));var interaction=require(_0x3626('0x7'));var config=require(_0x3626('0x8'));var controller=require('./automation.controller');router[_0x3626('0x9')]('/',auth['isAuthenticated'](),controller[_0x3626('0xa')]);router[_0x3626('0x9')]('/:id',auth[_0x3626('0xb')](),controller[_0x3626('0xc')]);router['get'](_0x3626('0xd'),auth[_0x3626('0xb')](),controller['getConditions']);router['get'](_0x3626('0xe'),auth[_0x3626('0xb')](),controller['getActions']);router[_0x3626('0xf')]('/',auth[_0x3626('0xb')](),controller[_0x3626('0x10')]);router[_0x3626('0xf')](_0x3626('0xd'),auth['isAuthenticated'](),controller[_0x3626('0x11')]);router[_0x3626('0xf')]('/:id/actions',auth[_0x3626('0xb')](),controller[_0x3626('0x12')]);router[_0x3626('0x13')](_0x3626('0x14'),auth[_0x3626('0xb')](),controller[_0x3626('0x15')]);router[_0x3626('0x16')](_0x3626('0x14'),auth[_0x3626('0xb')](),controller[_0x3626('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x7024=['multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./automation.controller','get','index','/:id','isAuthenticated','getConditions','/:id/actions','getActions','create','/:id/conditions','post','addActions','update','delete','destroy','exports'];(function(_0x12918c,_0x1bb0dc){var _0x4890de=function(_0x50390d){while(--_0x50390d){_0x12918c['push'](_0x12918c['shift']());}};_0x4890de(++_0x1bb0dc);}(_0x7024,0xa1));var _0x4702=function(_0x24f5f5,_0x4c1306){_0x24f5f5=_0x24f5f5-0x0;var _0x4e9d71=_0x7024[_0x24f5f5];return _0x4e9d71;};'use strict';var multer=require(_0x4702('0x0'));var util=require('util');var path=require(_0x4702('0x1'));var timeout=require(_0x4702('0x2'));var express=require(_0x4702('0x3'));var router=express[_0x4702('0x4')]();var fs_extra=require(_0x4702('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4702('0x6'));var config=require('../../config/environment');var controller=require(_0x4702('0x7'));router[_0x4702('0x8')]('/',auth['isAuthenticated'](),controller[_0x4702('0x9')]);router[_0x4702('0x8')](_0x4702('0xa'),auth[_0x4702('0xb')](),controller['show']);router['get']('/:id/conditions',auth[_0x4702('0xb')](),controller[_0x4702('0xc')]);router[_0x4702('0x8')](_0x4702('0xd'),auth['isAuthenticated'](),controller[_0x4702('0xe')]);router['post']('/',auth[_0x4702('0xb')](),controller[_0x4702('0xf')]);router['post'](_0x4702('0x10'),auth['isAuthenticated'](),controller['addConditions']);router[_0x4702('0x11')]('/:id/actions',auth[_0x4702('0xb')](),controller[_0x4702('0x12')]);router['put'](_0x4702('0xa'),auth['isAuthenticated'](),controller[_0x4702('0x13')]);router[_0x4702('0x14')](_0x4702('0xa'),auth[_0x4702('0xb')](),controller[_0x4702('0x15')]);module[_0x4702('0x16')]=router;
\ No newline at end of file
index 86bf44f..b884b85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb12a=['name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','Max\x20200\x20calls.','UNSIGNED','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','INTEGER','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','ASC','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0xb12a,0x145));var _0xab12=function(_0x429f9a,_0x143de1){_0x429f9a=_0x429f9a-0x0;var _0x231284=_0xb12a[_0x429f9a];return _0x231284;};'use strict';var Sequelize=require(_0xab12('0x0'));module[_0xab12('0x1')]={'name':{'type':Sequelize[_0xab12('0x2')],'unique':_0xab12('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xab12('0x4')](_0xab12('0x5')),'allowNull':![],'defaultValue':_0xab12('0x5')},'description':{'type':Sequelize[_0xab12('0x2')]},'active':{'type':Sequelize[_0xab12('0x6')],'defaultValue':0x0,'comment':_0xab12('0x7')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xab12('0x8')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xab12('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xab12('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab12('0xa')},'dialCongestionMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xab12('0xb')](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0xc')},'dialBusyMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0xab12('0xb')](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'defaultValue':0x3,'comment':_0xab12('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xab12('0xb')](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0xf')},'dialGlobalMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xab12('0x10')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xab12('0x2')],'defaultValue':_0xab12('0x11')},'dialCheckDuplicateType':{'type':Sequelize[_0xab12('0x4')](_0xab12('0x12'),_0xab12('0x13'),'onlyIfOpen'),'defaultValue':_0xab12('0x12')},'dialAMDActive':{'type':Sequelize[_0xab12('0x6')],'defaultValue':0x0,'comment':_0xab12('0x14')},'dialAMDInitialSilence':{'type':Sequelize[_0xab12('0xb')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xab12('0x15')},'dialAMDGreeting':{'type':Sequelize[_0xab12('0xb')](0x9)[_0xab12('0x9')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xab12('0x16')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xab12('0xb')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xab12('0xb')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xab12('0x17')},'dialAMDMinWordLength':{'type':Sequelize[_0xab12('0xb')](0x9)[_0xab12('0x9')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xab12('0x18')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xab12('0xb')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xab12('0x19')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xab12('0xb')](0x9)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xab12('0x1a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xab12('0xb')](0x5)[_0xab12('0x9')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xab12('0x1b')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize['ENUM']('DESC',_0xab12('0x1c')),'defaultValue':_0xab12('0x1d')},'dialPrefix':{'type':Sequelize[_0xab12('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xab12('0xb')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xab12('0x1e')},'dialCutDigit':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xab12('0x1f')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab12('0x20')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xab12('0xb')](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0x21')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab12('0x22')},'dialDropRetryFrequency':{'type':Sequelize[_0xab12('0xb')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0x23')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab12('0x24')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab12('0x25')},'dialMachineRetryFrequency':{'type':Sequelize[_0xab12('0xb')](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0x26')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab12('0x27')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0x28')}};
\ No newline at end of file
+var _0x980c=['Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','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)','onlyIfOpen','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','#Congestion\x20Retry\x20(min:1,\x20max:999)'];(function(_0x5f4bde,_0x31b441){var _0x358624=function(_0x276bbb){while(--_0x276bbb){_0x5f4bde['push'](_0x5f4bde['shift']());}};_0x358624(++_0x31b441);}(_0x980c,0x161));var _0xc980=function(_0x5e4654,_0x3b6092){_0x5e4654=_0x5e4654-0x0;var _0x334d9c=_0x980c[_0x5e4654];return _0x334d9c;};'use strict';var Sequelize=require(_0xc980('0x0'));module[_0xc980('0x1')]={'name':{'type':Sequelize[_0xc980('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xc980('0x3')]('ivr'),'allowNull':![],'defaultValue':_0xc980('0x4')},'description':{'type':Sequelize[_0xc980('0x2')]},'active':{'type':Sequelize[_0xc980('0x5')],'defaultValue':0x0,'comment':_0xc980('0x6')},'limitCalls':{'type':Sequelize[_0xc980('0x7')](0x4)[_0xc980('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':'Max\x20200\x20calls.'},'dialOriginateCallerIdName':{'type':Sequelize[_0xc980('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xc980('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xc980('0x7')](0x3)[_0xc980('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize[_0xc980('0x7')](0x3)[_0xc980('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc980('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xc980('0x7')](0x5)[_0xc980('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc980('0xa')},'dialBusyMaxRetry':{'type':Sequelize[_0xc980('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0xc980('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc980('0xb')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc980('0x8')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xc980('0x7')](0x5)[_0xc980('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc980('0xc')},'dialGlobalMaxRetry':{'type':Sequelize[_0xc980('0x7')](0x3)[_0xc980('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xc980('0xd')},'dialTimezone':{'type':Sequelize[_0xc980('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0xc980('0x3')]('always','never',_0xc980('0xe')),'defaultValue':_0xc980('0xf')},'dialAMDActive':{'type':Sequelize[_0xc980('0x5')],'defaultValue':0x0,'comment':_0xc980('0x10')},'dialAMDInitialSilence':{'type':Sequelize[_0xc980('0x7')](0x9)[_0xc980('0x8')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xc980('0x11')},'dialAMDGreeting':{'type':Sequelize[_0xc980('0x7')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xc980('0x7')](0x9)[_0xc980('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xc980('0x12')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xc980('0x7')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc980('0x13')},'dialAMDMinWordLength':{'type':Sequelize[_0xc980('0x7')](0x9)[_0xc980('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xc980('0x7')](0x9)[_0xc980('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xc980('0x14')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0xc980('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xc980('0x15')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xc980('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xc980('0x16')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xc980('0x7')](0x9)[_0xc980('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc980('0x17')},'dialOrderByScheduledAt':{'type':Sequelize[_0xc980('0x3')](_0xc980('0x18'),_0xc980('0x19')),'defaultValue':_0xc980('0x18')},'dialPrefix':{'type':Sequelize[_0xc980('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xc980('0x7')](0x3)[_0xc980('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc980('0x1a')},'dialCutDigit':{'type':Sequelize[_0xc980('0x7')](0x3)[_0xc980('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc980('0x1b')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc980('0x1c')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc980('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0xc980('0x7')](0x3)[_0xc980('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc980('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc980('0x1d')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xc980('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc980('0x1e')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xc980('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xc980('0x7')](0x3)[_0xc980('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc980('0x1f')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc980('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xc980('0x7')](0x3)[_0xc980('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xc980('0x7')](0x5)[_0xc980('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc980('0x20')}};
\ No newline at end of file
index b1f48b9..3b32923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0317=['findAll','catch','show','keys','merge','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','clone','params','createdAt','omit','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','nolimit','CampaignId','CmHopper','rows','getHopperHistories','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','addLists','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','updatedAt','field','NOW()','CmListId','toString','from','cm_contacts','select','COALESCE(calleridnum,\x27\x27)','CampaignId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','onlyIfOpen','ListId','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','COALESCE(phone,\x27\x27)','phone\x20IS\x20NOT\x20NULL','push','sequelize','all','removeLists','getBlackLists','CmList','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','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','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','IvrCampaigns','UserProfileResource','sendStatus','error','stack','name','send','index','Campaign','rawAttributes','fieldName','type','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','options','includeAll','include'];(function(_0xa8e9e9,_0x3b7e63){var _0x5466bc=function(_0x40e383){while(--_0x40e383){_0xa8e9e9['push'](_0xa8e9e9['shift']());}};_0x5466bc(++_0x3b7e63);}(_0x0317,0xd5));var _0x7031=function(_0x59f5a2,_0x1a15eb){_0x59f5a2=_0x59f5a2-0x0;var _0x1038a8=_0x0317[_0x59f5a2];return _0x1038a8;};'use strict';var emlformat=require(_0x7031('0x0'));var rimraf=require(_0x7031('0x1'));var zipdir=require(_0x7031('0x2'));var jsonpatch=require(_0x7031('0x3'));var rp=require('request-promise');var moment=require(_0x7031('0x4'));var BPromise=require(_0x7031('0x5'));var Mustache=require(_0x7031('0x6'));var util=require(_0x7031('0x7'));var path=require(_0x7031('0x8'));var sox=require(_0x7031('0x9'));var csv=require(_0x7031('0xa'));var ejs=require(_0x7031('0xb'));var fs=require('fs');var fs_extra=require(_0x7031('0xc'));var _=require(_0x7031('0xd'));var squel=require(_0x7031('0xe'));var crypto=require('crypto');var jsforce=require(_0x7031('0xf'));var deskjs=require(_0x7031('0x10'));var toCsv=require(_0x7031('0xa'));var querystring=require('querystring');var Papa=require(_0x7031('0x11'));var Redis=require('ioredis');var authService=require(_0x7031('0x12'));var qs=require(_0x7031('0x13'));var as=require(_0x7031('0x14'));var hardwareService=require(_0x7031('0x15'));var logger=require(_0x7031('0x16'))(_0x7031('0x17'));var utils=require(_0x7031('0x18'));var config=require(_0x7031('0x19'));var licenseUtil=require(_0x7031('0x1a'));var db=require(_0x7031('0x1b'))['db'];function respondWithStatusCode(_0x3669a0,_0x2bb10a){_0x2bb10a=_0x2bb10a||0xcc;return function(_0x5ac2d1){if(_0x5ac2d1){return _0x3669a0['sendStatus'](_0x2bb10a);}return _0x3669a0[_0x7031('0x1c')](_0x2bb10a)[_0x7031('0x1d')]();};}function respondWithResult(_0x58985f,_0xebdb60){_0xebdb60=_0xebdb60||0xc8;return function(_0x59a72b){if(_0x59a72b){return _0x58985f[_0x7031('0x1c')](_0xebdb60)[_0x7031('0x1e')](_0x59a72b);}};}function respondWithFilteredResult(_0x1c9b1c,_0x27f07e){return function(_0x3673bc){if(_0x3673bc){var _0x3ed75b=typeof _0x27f07e[_0x7031('0x1f')]===_0x7031('0x20')&&typeof _0x27f07e[_0x7031('0x21')]===_0x7031('0x20');var _0x3c9e44=_0x3673bc['count'];var _0x118f41=_0x3ed75b?0x0:_0x27f07e[_0x7031('0x1f')];var _0x13a1c1=_0x3ed75b?_0x3673bc[_0x7031('0x22')]:_0x27f07e[_0x7031('0x1f')]+_0x27f07e[_0x7031('0x21')];var _0x31cc64;if(_0x13a1c1>=_0x3c9e44){_0x13a1c1=_0x3c9e44;_0x31cc64=0xc8;}else{_0x31cc64=0xce;}_0x1c9b1c[_0x7031('0x1c')](_0x31cc64);return _0x1c9b1c[_0x7031('0x23')](_0x7031('0x24'),_0x118f41+'-'+_0x13a1c1+'/'+_0x3c9e44)['json'](_0x3673bc);}return null;};}function patchUpdates(_0x2cc425){return function(_0x25de49){try{jsonpatch[_0x7031('0x25')](_0x25de49,_0x2cc425,!![]);}catch(_0x58af37){return BPromise[_0x7031('0x26')](_0x58af37);}return _0x25de49[_0x7031('0x27')]();};}function saveUpdates(_0x3ce5fb,_0x385a34){return function(_0x281623){if(_0x281623){return _0x281623['update'](_0x3ce5fb)['then'](function(_0x2d580d){return _0x2d580d;});}return null;};}function removeEntity(_0x17d9ba,_0x5977ff){return function(_0x3fe534){if(_0x3fe534){return _0x3fe534[_0x7031('0x28')]()[_0x7031('0x29')](function(){var _0x61c1af=_0x3fe534['get']({'plain':!![]});var _0x59f428=_0x7031('0x2a');return db[_0x7031('0x2b')][_0x7031('0x28')]({'where':{'type':_0x59f428,'resourceId':_0x61c1af['id']}})[_0x7031('0x29')](function(){return _0x3fe534;});})['then'](function(){_0x17d9ba[_0x7031('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c4f7b,_0xa5e2bf){return function(_0x4c0fa9){if(!_0x4c0fa9){_0x2c4f7b[_0x7031('0x2c')](0x194);}return _0x4c0fa9;};}function handleError(_0x2b3d88,_0x13b656){_0x13b656=_0x13b656||0x1f4;return function(_0x11e8f4){logger[_0x7031('0x2d')](_0x11e8f4[_0x7031('0x2e')]);if(_0x11e8f4[_0x7031('0x2f')]){delete _0x11e8f4['name'];}_0x2b3d88[_0x7031('0x1c')](_0x13b656)[_0x7031('0x30')](_0x11e8f4);};}exports[_0x7031('0x31')]=function(_0x29fbb5,_0x5c4275){var _0xdb5efa={},_0x55c0d3={},_0xb45fc4={'count':0x0,'rows':[]};var _0x59bbba=_['map'](db[_0x7031('0x32')][_0x7031('0x33')],function(_0x430bdb){return{'name':_0x430bdb[_0x7031('0x34')],'type':_0x430bdb[_0x7031('0x35')][_0x7031('0x36')]};});_0x55c0d3[_0x7031('0x37')]=_[_0x7031('0x38')](_0x59bbba,_0x7031('0x2f'));_0x55c0d3[_0x7031('0x39')]=_['keys'](_0x29fbb5[_0x7031('0x39')]);_0x55c0d3['filters']=_[_0x7031('0x3a')](_0x55c0d3['model'],_0x55c0d3[_0x7031('0x39')]);_0xdb5efa[_0x7031('0x3b')]=_['intersection'](_0x55c0d3[_0x7031('0x37')],qs[_0x7031('0x3c')](_0x29fbb5[_0x7031('0x39')]['fields']));_0xdb5efa[_0x7031('0x3b')]=_0xdb5efa[_0x7031('0x3b')][_0x7031('0x3d')]?_0xdb5efa['attributes']:_0x55c0d3[_0x7031('0x37')];if(!_0x29fbb5[_0x7031('0x39')][_0x7031('0x3e')]('nolimit')){_0xdb5efa[_0x7031('0x21')]=qs['limit'](_0x29fbb5[_0x7031('0x39')]['limit']);_0xdb5efa[_0x7031('0x1f')]=qs[_0x7031('0x1f')](_0x29fbb5['query'][_0x7031('0x1f')]);}_0xdb5efa[_0x7031('0x3f')]=qs[_0x7031('0x40')](_0x29fbb5[_0x7031('0x39')]['sort']);_0xdb5efa[_0x7031('0x41')]=qs[_0x7031('0x42')](_[_0x7031('0x43')](_0x29fbb5[_0x7031('0x39')],_0x55c0d3[_0x7031('0x42')]),_0x59bbba);if(_0x29fbb5[_0x7031('0x39')][_0x7031('0x44')]){_0xdb5efa[_0x7031('0x41')]=_['merge'](_0xdb5efa['where'],{'$or':_[_0x7031('0x38')](_0x59bbba,function(_0x10cde4){if(_0x10cde4[_0x7031('0x35')]!==_0x7031('0x45')){var _0x33454={};_0x33454[_0x10cde4[_0x7031('0x2f')]]={'$like':'%'+_0x29fbb5[_0x7031('0x39')][_0x7031('0x44')]+'%'};return _0x33454;}})});}_0xdb5efa=_['merge']({},_0xdb5efa,_0x29fbb5[_0x7031('0x46')]);var _0x3de88b={'where':_0xdb5efa[_0x7031('0x41')]};return db[_0x7031('0x32')][_0x7031('0x22')](_0x3de88b)['then'](function(_0x201e2b){_0xb45fc4['count']=_0x201e2b;if(_0x29fbb5['query'][_0x7031('0x47')]){_0xdb5efa[_0x7031('0x48')]=[{'all':!![]}];}return db['Campaign'][_0x7031('0x49')](_0xdb5efa);})[_0x7031('0x29')](function(_0x493786){_0xb45fc4['rows']=_0x493786;return _0xb45fc4;})[_0x7031('0x29')](respondWithFilteredResult(_0x5c4275,_0xdb5efa))[_0x7031('0x4a')](handleError(_0x5c4275,null));};exports[_0x7031('0x4b')]=function(_0x4be191,_0x585cf3){var _0xa04a65={'raw':![],'where':{'id':_0x4be191['params']['id']}},_0x2ccdb1={};_0x2ccdb1['model']=_[_0x7031('0x4c')](db[_0x7031('0x32')][_0x7031('0x33')]);_0x2ccdb1[_0x7031('0x39')]=_[_0x7031('0x4c')](_0x4be191[_0x7031('0x39')]);_0x2ccdb1['filters']=_[_0x7031('0x3a')](_0x2ccdb1[_0x7031('0x37')],_0x2ccdb1[_0x7031('0x39')]);_0xa04a65[_0x7031('0x3b')]=_['intersection'](_0x2ccdb1[_0x7031('0x37')],qs['fields'](_0x4be191[_0x7031('0x39')][_0x7031('0x3c')]));_0xa04a65[_0x7031('0x3b')]=_0xa04a65[_0x7031('0x3b')]['length']?_0xa04a65[_0x7031('0x3b')]:_0x2ccdb1['model'];if(_0x4be191[_0x7031('0x39')][_0x7031('0x47')]){_0xa04a65[_0x7031('0x48')]=[{'all':!![]}];}_0xa04a65=_[_0x7031('0x4d')]({},_0xa04a65,_0x4be191[_0x7031('0x46')]);return db[_0x7031('0x32')][_0x7031('0x4e')](_0xa04a65)['then'](handleEntityNotFound(_0x585cf3,null))[_0x7031('0x29')](respondWithResult(_0x585cf3,null))['catch'](handleError(_0x585cf3,null));};exports['create']=function(_0x1d8364,_0x526bba){return db[_0x7031('0x32')][_0x7031('0x4f')](_0x1d8364[_0x7031('0x50')],{})['then'](function(_0x2ba7b7){var _0x222ad2=_0x1d8364['user'][_0x7031('0x51')]({'plain':!![]});if(!_0x222ad2)throw new Error(_0x7031('0x52'));if(_0x222ad2[_0x7031('0x53')]===_0x7031('0x54')){var _0x161bcb=_0x2ba7b7[_0x7031('0x51')]({'plain':!![]});var _0x4ec9d1='IvrCampaigns';return db[_0x7031('0x55')][_0x7031('0x4e')]({'where':{'name':_0x4ec9d1,'userProfileId':_0x222ad2['userProfileId']},'raw':!![]})[_0x7031('0x29')](function(_0x4329bb){if(_0x4329bb&&_0x4329bb['autoAssociation']===0x0){return db[_0x7031('0x2b')][_0x7031('0x4f')]({'name':_0x161bcb[_0x7031('0x2f')],'resourceId':_0x161bcb['id'],'type':_0x4329bb['name'],'sectionId':_0x4329bb['id']},{})[_0x7031('0x29')](function(){return _0x2ba7b7;});}else{return _0x2ba7b7;}})[_0x7031('0x4a')](function(_0x4b9203){logger[_0x7031('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4b9203);throw _0x4b9203;});}return _0x2ba7b7;})[_0x7031('0x29')](respondWithResult(_0x526bba,0xc9))['catch'](handleError(_0x526bba,null));};exports[_0x7031('0x56')]=function(_0x454b45,_0x53c1c5){var _0x208b31={'where':{'id':_0x454b45[_0x7031('0x57')]['id']}},_0x213a58={};_0x213a58[_0x7031('0x37')]=_[_0x7031('0x4c')](db[_0x7031('0x32')][_0x7031('0x33')]);_0x208b31[_0x7031('0x3b')]=_['intersection'](_0x213a58[_0x7031('0x37')],qs[_0x7031('0x3c')](_0x454b45[_0x7031('0x39')]['fields']));_0x208b31['attributes']=_0x208b31[_0x7031('0x3b')][_0x7031('0x3d')]?_0x208b31[_0x7031('0x3b')]:_0x213a58['model'];if(_0x454b45['query'][_0x7031('0x47')]){_0x208b31[_0x7031('0x48')]=[{'all':!![]}];}_0x208b31=_[_0x7031('0x4d')]({},_0x208b31,_0x454b45[_0x7031('0x46')]);return db[_0x7031('0x32')][_0x7031('0x4e')](_0x208b31)[_0x7031('0x29')](handleEntityNotFound(_0x53c1c5,null))[_0x7031('0x29')](function(_0x19e853){if(_0x19e853){var _0x59ef87=_0x19e853[_0x7031('0x51')]({'plain':!![]});_0x59ef87=qs['omit'](_0x59ef87,['id',_0x7031('0x58'),'updatedAt']);_0x454b45[_0x7031('0x50')]=_[_0x7031('0x59')](_0x454b45[_0x7031('0x50')],['id',_0x7031('0x58'),'updatedAt']);return db[_0x7031('0x32')]['create'](_['merge'](_0x59ef87,_0x454b45[_0x7031('0x50')]),{'include':_0x454b45[_0x7031('0x39')][_0x7031('0x47')]?[{'all':!![]}]:undefined})[_0x7031('0x29')](function(_0x2a45c9){var _0x4da781=_0x454b45[_0x7031('0x54')][_0x7031('0x51')]({'plain':!![]});if(!_0x4da781)throw new Error(_0x7031('0x52'));if(_0x4da781['role']==='user'){var _0x566bc0=_0x2a45c9['get']({'plain':!![]});var _0x4049de=_0x7031('0x2a');return db[_0x7031('0x55')]['find']({'where':{'name':_0x4049de,'userProfileId':_0x4da781[_0x7031('0x5a')]},'raw':!![]})[_0x7031('0x29')](function(_0x19c174){if(_0x19c174&&_0x19c174[_0x7031('0x5b')]===0x0){return db[_0x7031('0x2b')][_0x7031('0x4f')]({'name':_0x566bc0['name'],'resourceId':_0x566bc0['id'],'type':_0x19c174['name'],'sectionId':_0x19c174['id']},{})['then'](function(){return _0x2a45c9;});}else{return _0x2a45c9;}})[_0x7031('0x4a')](function(_0x3f756c){logger[_0x7031('0x2d')](_0x7031('0x5c'),_0x3f756c);throw _0x3f756c;});}return _0x2a45c9;});}})['then'](respondWithResult(_0x53c1c5,0xc9))[_0x7031('0x4a')](handleError(_0x53c1c5,null));};exports['update']=function(_0x40aeda,_0x381df2){if(_0x40aeda['body']['id']){delete _0x40aeda[_0x7031('0x50')]['id'];}return db['Campaign'][_0x7031('0x4e')]({'where':{'id':_0x40aeda[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x381df2,null))['then'](saveUpdates(_0x40aeda['body'],null))[_0x7031('0x29')](respondWithResult(_0x381df2,null))[_0x7031('0x4a')](handleError(_0x381df2,null));};exports[_0x7031('0x28')]=function(_0xad67b4,_0x5abc6e){return db[_0x7031('0x32')][_0x7031('0x4e')]({'where':{'id':_0xad67b4[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x5abc6e,null))[_0x7031('0x29')](removeEntity(_0x5abc6e,null))['catch'](handleError(_0x5abc6e,null));};exports['getHoppers']=function(_0x2c0f79,_0x5d3b95,_0x599581){var _0x2db9b0={'raw':!![],'where':{}};var _0x4a8c39={};var _0x216afa={'count':0x0,'rows':[]};return db[_0x7031('0x32')]['findOne']({'where':{'id':_0x2c0f79[_0x7031('0x57')]['id']}})['then'](handleEntityNotFound(_0x5d3b95,null))['then'](function(_0x3fc2b0){if(_0x3fc2b0){_0x4a8c39[_0x7031('0x37')]=_[_0x7031('0x4c')](db['CmHopper']['rawAttributes']);_0x4a8c39['query']=_['keys'](_0x2c0f79[_0x7031('0x39')]);_0x4a8c39[_0x7031('0x42')]=_[_0x7031('0x3a')](_0x4a8c39['model'],_0x4a8c39[_0x7031('0x39')]);_0x2db9b0['attributes']=_['intersection'](_0x4a8c39[_0x7031('0x37')],qs[_0x7031('0x3c')](_0x2c0f79[_0x7031('0x39')][_0x7031('0x3c')]));_0x2db9b0[_0x7031('0x3b')]=_0x2db9b0['attributes'][_0x7031('0x3d')]?_0x2db9b0['attributes']:_0x4a8c39[_0x7031('0x37')];if(!_0x2c0f79[_0x7031('0x39')]['hasOwnProperty'](_0x7031('0x5d'))){_0x2db9b0[_0x7031('0x21')]=qs['limit'](_0x2c0f79[_0x7031('0x39')][_0x7031('0x21')]);_0x2db9b0[_0x7031('0x1f')]=qs[_0x7031('0x1f')](_0x2c0f79[_0x7031('0x39')][_0x7031('0x1f')]);}_0x2db9b0['order']=qs[_0x7031('0x40')](_0x2c0f79[_0x7031('0x39')]['sort']);_0x2db9b0[_0x7031('0x41')]=qs['filters'](_[_0x7031('0x43')](_0x2c0f79[_0x7031('0x39')],_0x4a8c39[_0x7031('0x42')]));_0x2db9b0['where'][_0x7031('0x5e')]=_0x3fc2b0['id'];if(_0x2c0f79['query'][_0x7031('0x44')]){_0x2db9b0['where']=_[_0x7031('0x4d')](_0x2db9b0[_0x7031('0x41')],{'$or':_[_0x7031('0x38')](_0x2db9b0[_0x7031('0x3b')],function(_0x1e429d){var _0x5c0ba3={};_0x5c0ba3[_0x1e429d]={'$like':'%'+_0x2c0f79[_0x7031('0x39')][_0x7031('0x44')]+'%'};return _0x5c0ba3;})});}_0x2db9b0=_['merge']({},_0x2db9b0,_0x2c0f79[_0x7031('0x46')]);return db['CmHopper'][_0x7031('0x22')]({'where':_0x2db9b0[_0x7031('0x41')]})[_0x7031('0x29')](function(_0x47c147){_0x216afa[_0x7031('0x22')]=_0x47c147;if(_0x2c0f79[_0x7031('0x39')][_0x7031('0x47')]){_0x2db9b0[_0x7031('0x48')]=[{'all':!![]}];}return db[_0x7031('0x5f')][_0x7031('0x49')](_0x2db9b0);})['then'](function(_0x5216ba){_0x216afa[_0x7031('0x60')]=_0x5216ba;return _0x216afa;});}})[_0x7031('0x29')](respondWithFilteredResult(_0x5d3b95,_0x2db9b0))[_0x7031('0x4a')](handleError(_0x5d3b95,null));};exports[_0x7031('0x61')]=function(_0x56d3d6,_0x51dcbd,_0x54332a){var _0x645c4={'raw':!![],'where':{}};var _0x2281f7={};var _0x253681={'count':0x0,'rows':[]};return db[_0x7031('0x32')][_0x7031('0x62')]({'where':{'id':_0x56d3d6[_0x7031('0x57')]['id']}})['then'](handleEntityNotFound(_0x51dcbd,null))[_0x7031('0x29')](function(_0x16cee5){if(_0x16cee5){_0x2281f7[_0x7031('0x37')]=_[_0x7031('0x4c')](db[_0x7031('0x63')][_0x7031('0x33')]);_0x2281f7['query']=_['keys'](_0x56d3d6[_0x7031('0x39')]);_0x2281f7[_0x7031('0x42')]=_[_0x7031('0x3a')](_0x2281f7[_0x7031('0x37')],_0x2281f7[_0x7031('0x39')]);_0x645c4[_0x7031('0x3b')]=_[_0x7031('0x3a')](_0x2281f7[_0x7031('0x37')],qs[_0x7031('0x3c')](_0x56d3d6[_0x7031('0x39')][_0x7031('0x3c')]));_0x645c4[_0x7031('0x3b')]=_0x645c4[_0x7031('0x3b')][_0x7031('0x3d')]?_0x645c4[_0x7031('0x3b')]:_0x2281f7[_0x7031('0x37')];if(!_0x56d3d6['query'][_0x7031('0x3e')](_0x7031('0x5d'))){_0x645c4[_0x7031('0x21')]=qs[_0x7031('0x21')](_0x56d3d6['query'][_0x7031('0x21')]);_0x645c4[_0x7031('0x1f')]=qs[_0x7031('0x1f')](_0x56d3d6[_0x7031('0x39')]['offset']);}_0x645c4[_0x7031('0x3f')]=qs[_0x7031('0x40')](_0x56d3d6['query'][_0x7031('0x40')]);_0x645c4['where']=qs[_0x7031('0x42')](_[_0x7031('0x43')](_0x56d3d6[_0x7031('0x39')],_0x2281f7[_0x7031('0x42')]));_0x645c4[_0x7031('0x41')]['CampaignId']=_0x16cee5['id'];if(_0x56d3d6['query']['filter']){_0x645c4[_0x7031('0x41')]=_[_0x7031('0x4d')](_0x645c4[_0x7031('0x41')],{'$or':_[_0x7031('0x38')](_0x645c4[_0x7031('0x3b')],function(_0x532941){var _0x49edb4={};_0x49edb4[_0x532941]={'$like':'%'+_0x56d3d6[_0x7031('0x39')][_0x7031('0x44')]+'%'};return _0x49edb4;})});}_0x645c4=_['merge']({},_0x645c4,_0x56d3d6[_0x7031('0x46')]);return db[_0x7031('0x63')][_0x7031('0x22')]({'where':_0x645c4['where']})['then'](function(_0x104f60){_0x253681[_0x7031('0x22')]=_0x104f60;if(_0x56d3d6[_0x7031('0x39')]['includeAll']){_0x645c4[_0x7031('0x48')]=[{'all':!![]}];}return db[_0x7031('0x63')][_0x7031('0x49')](_0x645c4);})[_0x7031('0x29')](function(_0x127d43){_0x253681[_0x7031('0x60')]=_0x127d43;return _0x253681;});}})[_0x7031('0x29')](respondWithFilteredResult(_0x51dcbd,_0x645c4))[_0x7031('0x4a')](handleError(_0x51dcbd,null));};exports[_0x7031('0x64')]=function(_0x443347,_0x4c5f2d,_0x2265e4){var _0x37abd2={'raw':!![],'where':{}};var _0x425299={};var _0x4994e5={'count':0x0,'rows':[]};return db[_0x7031('0x32')][_0x7031('0x62')]({'where':{'id':_0x443347[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x4c5f2d,null))[_0x7031('0x29')](function(_0x4c534d){if(_0x4c534d){_0x425299[_0x7031('0x37')]=_[_0x7031('0x4c')](db[_0x7031('0x65')][_0x7031('0x33')]);_0x425299[_0x7031('0x39')]=_[_0x7031('0x4c')](_0x443347[_0x7031('0x39')]);_0x425299[_0x7031('0x42')]=_[_0x7031('0x3a')](_0x425299[_0x7031('0x37')],_0x425299[_0x7031('0x39')]);_0x37abd2[_0x7031('0x3b')]=_[_0x7031('0x3a')](_0x425299[_0x7031('0x37')],qs['fields'](_0x443347[_0x7031('0x39')][_0x7031('0x3c')]));_0x37abd2[_0x7031('0x3b')]=_0x37abd2[_0x7031('0x3b')][_0x7031('0x3d')]?_0x37abd2['attributes']:_0x425299[_0x7031('0x37')];if(!_0x443347[_0x7031('0x39')][_0x7031('0x3e')](_0x7031('0x5d'))){_0x37abd2[_0x7031('0x21')]=qs['limit'](_0x443347[_0x7031('0x39')]['limit']);_0x37abd2[_0x7031('0x1f')]=qs['offset'](_0x443347[_0x7031('0x39')][_0x7031('0x1f')]);}_0x37abd2[_0x7031('0x3f')]=qs['sort'](_0x443347[_0x7031('0x39')][_0x7031('0x40')]);_0x37abd2[_0x7031('0x41')]=qs[_0x7031('0x42')](_[_0x7031('0x43')](_0x443347['query'],_0x425299['filters']));_0x37abd2[_0x7031('0x41')][_0x7031('0x5e')]=_0x4c534d['id'];if(_0x443347[_0x7031('0x39')][_0x7031('0x44')]){_0x37abd2[_0x7031('0x41')]=_['merge'](_0x37abd2[_0x7031('0x41')],{'$or':_[_0x7031('0x38')](_0x37abd2[_0x7031('0x3b')],function(_0x12bfd5){var _0x4e152a={};_0x4e152a[_0x12bfd5]={'$like':'%'+_0x443347['query'][_0x7031('0x44')]+'%'};return _0x4e152a;})});}_0x37abd2=_[_0x7031('0x4d')]({},_0x37abd2,_0x443347[_0x7031('0x46')]);return db[_0x7031('0x65')][_0x7031('0x22')]({'where':_0x37abd2[_0x7031('0x41')]})['then'](function(_0x2f5952){_0x4994e5[_0x7031('0x22')]=_0x2f5952;if(_0x443347[_0x7031('0x39')][_0x7031('0x47')]){_0x37abd2['include']=[{'all':!![]}];}return db['CmHopperFinal'][_0x7031('0x49')](_0x37abd2);})['then'](function(_0xbcc8e0){_0x4994e5['rows']=_0xbcc8e0;return _0x4994e5;});}})[_0x7031('0x29')](respondWithFilteredResult(_0x4c5f2d,_0x37abd2))[_0x7031('0x4a')](handleError(_0x4c5f2d,null));};exports[_0x7031('0x66')]=function(_0x46ec84,_0x5257e5,_0x18b6b9){var _0xb20965={'raw':!![],'where':{}};var _0x492c46={};var _0x240695={'count':0x0,'rows':[]};return db['Campaign'][_0x7031('0x62')]({'where':{'id':_0x46ec84[_0x7031('0x57')]['id']}})['then'](handleEntityNotFound(_0x5257e5,null))[_0x7031('0x29')](function(_0x51b557){if(_0x51b557){_0x492c46[_0x7031('0x37')]=_[_0x7031('0x4c')](db[_0x7031('0x67')]['rawAttributes']);_0x492c46[_0x7031('0x39')]=_[_0x7031('0x4c')](_0x46ec84[_0x7031('0x39')]);_0x492c46[_0x7031('0x42')]=_[_0x7031('0x3a')](_0x492c46[_0x7031('0x37')],_0x492c46[_0x7031('0x39')]);_0xb20965['attributes']=_[_0x7031('0x3a')](_0x492c46[_0x7031('0x37')],qs[_0x7031('0x3c')](_0x46ec84[_0x7031('0x39')][_0x7031('0x3c')]));_0xb20965[_0x7031('0x3b')]=_0xb20965[_0x7031('0x3b')]['length']?_0xb20965['attributes']:_0x492c46[_0x7031('0x37')];if(!_0x46ec84[_0x7031('0x39')][_0x7031('0x3e')](_0x7031('0x5d'))){_0xb20965['limit']=qs[_0x7031('0x21')](_0x46ec84[_0x7031('0x39')][_0x7031('0x21')]);_0xb20965[_0x7031('0x1f')]=qs[_0x7031('0x1f')](_0x46ec84[_0x7031('0x39')][_0x7031('0x1f')]);}_0xb20965[_0x7031('0x3f')]=qs[_0x7031('0x40')](_0x46ec84[_0x7031('0x39')][_0x7031('0x40')]);_0xb20965[_0x7031('0x41')]=qs['filters'](_[_0x7031('0x43')](_0x46ec84['query'],_0x492c46[_0x7031('0x42')]));_0xb20965['where'][_0x7031('0x5e')]=_0x51b557['id'];if(_0x46ec84['query'][_0x7031('0x44')]){_0xb20965[_0x7031('0x41')]=_[_0x7031('0x4d')](_0xb20965['where'],{'$or':_[_0x7031('0x38')](_0xb20965['attributes'],function(_0x48b52d){var _0x21347e={};_0x21347e[_0x48b52d]={'$like':'%'+_0x46ec84[_0x7031('0x39')][_0x7031('0x44')]+'%'};return _0x21347e;})});}_0xb20965=_[_0x7031('0x4d')]({},_0xb20965,_0x46ec84[_0x7031('0x46')]);return db['CmHopperBlack']['count']({'where':_0xb20965[_0x7031('0x41')]})[_0x7031('0x29')](function(_0x440381){_0x240695['count']=_0x440381;if(_0x46ec84[_0x7031('0x39')][_0x7031('0x47')]){_0xb20965[_0x7031('0x48')]=[{'all':!![]}];}return db[_0x7031('0x67')][_0x7031('0x49')](_0xb20965);})['then'](function(_0x499223){_0x240695['rows']=_0x499223;return _0x240695;});}})['then'](respondWithFilteredResult(_0x5257e5,_0xb20965))['catch'](handleError(_0x5257e5,null));};exports[_0x7031('0x68')]=function(_0x433d3f,_0x4b73aa,_0x52b523){var _0x5bb84b={};var _0x1bf352={};var _0x273874;var _0x31ba93;return db[_0x7031('0x32')]['findOne']({'where':{'id':_0x433d3f[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x4b73aa,null))[_0x7031('0x29')](function(_0x3fa551){if(_0x3fa551){_0x273874=_0x3fa551;_0x1bf352[_0x7031('0x37')]=_[_0x7031('0x4c')](db['CmList']['rawAttributes']);_0x1bf352[_0x7031('0x39')]=_[_0x7031('0x4c')](_0x433d3f[_0x7031('0x39')]);_0x1bf352[_0x7031('0x42')]=_['intersection'](_0x1bf352[_0x7031('0x37')],_0x1bf352[_0x7031('0x39')]);_0x5bb84b['attributes']=_['intersection'](_0x1bf352['model'],qs[_0x7031('0x3c')](_0x433d3f[_0x7031('0x39')][_0x7031('0x3c')]));_0x5bb84b[_0x7031('0x3b')]=_0x5bb84b['attributes'][_0x7031('0x3d')]?_0x5bb84b[_0x7031('0x3b')]:_0x1bf352[_0x7031('0x37')];_0x5bb84b[_0x7031('0x3f')]=qs[_0x7031('0x40')](_0x433d3f[_0x7031('0x39')][_0x7031('0x40')]);_0x5bb84b[_0x7031('0x41')]=qs[_0x7031('0x42')](_[_0x7031('0x43')](_0x433d3f['query'],_0x1bf352[_0x7031('0x42')]));if(_0x433d3f[_0x7031('0x39')][_0x7031('0x44')]){_0x5bb84b[_0x7031('0x41')]=_[_0x7031('0x4d')](_0x5bb84b[_0x7031('0x41')],{'$or':_[_0x7031('0x38')](_0x5bb84b[_0x7031('0x3b')],function(_0xfd12c0){var _0x4ac843={};_0x4ac843[_0xfd12c0]={'$like':'%'+_0x433d3f[_0x7031('0x39')]['filter']+'%'};return _0x4ac843;})});}_0x5bb84b=_[_0x7031('0x4d')]({},_0x5bb84b,_0x433d3f[_0x7031('0x46')]);return _0x273874[_0x7031('0x68')](_0x5bb84b);}})[_0x7031('0x29')](function(_0x427f8c){if(_0x427f8c){_0x31ba93=_0x427f8c[_0x7031('0x3d')];if(!_0x433d3f[_0x7031('0x39')][_0x7031('0x3e')](_0x7031('0x5d'))){_0x5bb84b[_0x7031('0x21')]=qs[_0x7031('0x21')](_0x433d3f[_0x7031('0x39')]['limit']);_0x5bb84b[_0x7031('0x1f')]=qs[_0x7031('0x1f')](_0x433d3f[_0x7031('0x39')][_0x7031('0x1f')]);}return _0x273874[_0x7031('0x68')](_0x5bb84b);}})[_0x7031('0x29')](function(_0x32e0ab){if(_0x32e0ab){return _0x32e0ab?{'count':_0x31ba93,'rows':_0x32e0ab}:null;}})[_0x7031('0x29')](respondWithResult(_0x4b73aa,null))[_0x7031('0x4a')](handleError(_0x4b73aa,null));};exports[_0x7031('0x69')]=function(_0x1f25ca,_0x34c611,_0x3e40b3){var _0x394eb7,_0x2a6665;return db[_0x7031('0x32')]['find']({'where':{'id':_0x1f25ca['params']['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x34c611,null))['then'](function(_0x3d46b8){if(_0x3d46b8){_0x2a6665=_0x3d46b8;return _0x3d46b8[_0x7031('0x69')](_0x1f25ca[_0x7031('0x50')][_0x7031('0x6a')],_[_0x7031('0x59')](_0x1f25ca['body'],[_0x7031('0x6a'),'id'])||{});}return null;})[_0x7031('0x6b')](function(_0x2c4f9f){var _0x16afda;_0x394eb7=_0x2c4f9f||[];var _0x54a730=[];if(_0x2c4f9f){for(var _0x2888c8=0x0;_0x2888c8<_0x2c4f9f[_0x7031('0x3d')];_0x2888c8+=0x1){var _0x1a845f=_0x2c4f9f[_0x2888c8][_0x7031('0x51')]({'plain':!![]});_0x2a6665['dialCheckDuplicateType']=_0x1f25ca[_0x7031('0x50')][_0x7031('0x6c')]?_0x1f25ca[_0x7031('0x50')][_0x7031('0x6c')]:_0x2a6665[_0x7031('0x6c')];switch(_0x2a6665[_0x7031('0x6c')]){case _0x7031('0x6d'):_0x16afda=squel[_0x7031('0x6e')]()[_0x7031('0x6f')](_0x7031('0x70'))[_0x7031('0x71')]([_0x7031('0x72'),_0x7031('0x73'),_0x7031('0x74'),'ListId',_0x7031('0x5e'),'createdAt',_0x7031('0x75')],squel['select']()[_0x7031('0x76')](_0x7031('0x72'),_0x7031('0x72'))[_0x7031('0x76')](_0x7031('0x77'),_0x7031('0x73'))['field']('id',_0x7031('0x74'))[_0x7031('0x76')](_0x1a845f[_0x7031('0x78')][_0x7031('0x79')](),'ListId')[_0x7031('0x76')](_0x1f25ca[_0x7031('0x57')]['id']['toString'](),_0x7031('0x5e'))[_0x7031('0x76')]('NOW()',_0x7031('0x58'))[_0x7031('0x76')](_0x7031('0x77'),_0x7031('0x75'))[_0x7031('0x7a')](_0x7031('0x7b'))[_0x7031('0x41')]('deletedAt\x20IS\x20NULL')[_0x7031('0x41')]('ListId\x20=\x20?',_0x1a845f[_0x7031('0x78')][_0x7031('0x79')]())['where']('phone\x20IS\x20NOT\x20NULL')['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x7031('0x7c')]()[_0x7031('0x76')](_0x7031('0x7d'))[_0x7031('0x7a')]('cm_hopper_final')['where'](_0x7031('0x7e'),_0x1f25ca[_0x7031('0x57')]['id'][_0x7031('0x79')]()))[_0x7031('0x41')](_0x7031('0x7f'),squel[_0x7031('0x7c')]()['field']('COALESCE(phone,\x27\x27)')['from'](_0x7031('0x70'))[_0x7031('0x41')]('CampaignId\x20=\x20?',_0x1f25ca[_0x7031('0x57')]['id']['toString']())))[_0x7031('0x79')]();break;case _0x7031('0x80'):_0x16afda=squel['insert']()[_0x7031('0x6f')]('cm_hopper')[_0x7031('0x71')]([_0x7031('0x72'),_0x7031('0x73'),_0x7031('0x74'),'ListId',_0x7031('0x5e'),_0x7031('0x58'),'updatedAt'],squel[_0x7031('0x7c')]()[_0x7031('0x76')](_0x7031('0x72'),_0x7031('0x72'))['field'](_0x7031('0x77'),_0x7031('0x73'))[_0x7031('0x76')]('id',_0x7031('0x74'))[_0x7031('0x76')](_0x1a845f[_0x7031('0x78')][_0x7031('0x79')](),_0x7031('0x81'))[_0x7031('0x76')](_0x1f25ca[_0x7031('0x57')]['id'][_0x7031('0x79')](),'CampaignId')[_0x7031('0x76')]('NOW()',_0x7031('0x58'))[_0x7031('0x76')]('NOW()',_0x7031('0x75'))['from']('cm_contacts')[_0x7031('0x41')](_0x7031('0x82'))[_0x7031('0x41')](_0x7031('0x83'),_0x1a845f[_0x7031('0x78')][_0x7031('0x79')]())[_0x7031('0x41')]('phone\x20IS\x20NOT\x20NULL')['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x7031('0x7c')]()[_0x7031('0x76')](_0x7031('0x84'))[_0x7031('0x7a')](_0x7031('0x70'))[_0x7031('0x41')](_0x7031('0x7e'),_0x1f25ca['params']['id']['toString']())))[_0x7031('0x79')]();break;default:_0x16afda=squel['insert']()['into'](_0x7031('0x70'))[_0x7031('0x71')]([_0x7031('0x72'),_0x7031('0x73'),_0x7031('0x74'),'ListId','CampaignId',_0x7031('0x58'),_0x7031('0x75')],squel[_0x7031('0x7c')]()['field'](_0x7031('0x72'),_0x7031('0x72'))['field'](_0x7031('0x77'),_0x7031('0x73'))[_0x7031('0x76')]('id','ContactId')['field'](_0x1a845f[_0x7031('0x78')][_0x7031('0x79')](),_0x7031('0x81'))[_0x7031('0x76')](_0x1f25ca[_0x7031('0x57')]['id'][_0x7031('0x79')](),_0x7031('0x5e'))[_0x7031('0x76')](_0x7031('0x77'),'createdAt')[_0x7031('0x76')](_0x7031('0x77'),_0x7031('0x75'))[_0x7031('0x7a')](_0x7031('0x7b'))[_0x7031('0x41')](_0x7031('0x82'))['where'](_0x7031('0x83'),_0x1a845f[_0x7031('0x78')][_0x7031('0x79')]())[_0x7031('0x41')](_0x7031('0x85')))[_0x7031('0x79')]();}_0x54a730[_0x7031('0x86')](db[_0x7031('0x87')][_0x7031('0x39')](_0x16afda));}return BPromise[_0x7031('0x88')](_0x54a730);}})[_0x7031('0x29')](function(){return _0x394eb7;})[_0x7031('0x29')](respondWithResult(_0x34c611,null))['catch'](handleError(_0x34c611,null));};exports[_0x7031('0x89')]=function(_0x1447ff,_0x49b74e,_0x572fe1){return db[_0x7031('0x32')][_0x7031('0x4e')]({'where':{'id':_0x1447ff[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x49b74e,null))[_0x7031('0x29')](function(_0x13831c){if(_0x13831c){return _0x13831c[_0x7031('0x89')](_0x1447ff[_0x7031('0x39')][_0x7031('0x6a')]);}})[_0x7031('0x29')](function(_0x52de54){if(_0x52de54){return db[_0x7031('0x5f')][_0x7031('0x28')]({'where':{'ListId':_0x1447ff[_0x7031('0x39')]['ids'],'CampaignId':_0x1447ff['params']['id']}})['then'](function(){return _0x52de54;});}})[_0x7031('0x29')](respondWithStatusCode(_0x49b74e,null))['catch'](handleError(_0x49b74e,null));};exports[_0x7031('0x8a')]=function(_0x3a8af9,_0x194869,_0x3672e5){var _0xccc032={};var _0x31ca78={};var _0x5500dc;var _0x3591cd;return db[_0x7031('0x32')][_0x7031('0x62')]({'where':{'id':_0x3a8af9[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x194869,null))[_0x7031('0x29')](function(_0x75e34f){if(_0x75e34f){_0x5500dc=_0x75e34f;_0x31ca78[_0x7031('0x37')]=_[_0x7031('0x4c')](db[_0x7031('0x8b')][_0x7031('0x33')]);_0x31ca78[_0x7031('0x39')]=_[_0x7031('0x4c')](_0x3a8af9[_0x7031('0x39')]);_0x31ca78[_0x7031('0x42')]=_[_0x7031('0x3a')](_0x31ca78['model'],_0x31ca78[_0x7031('0x39')]);_0xccc032[_0x7031('0x3b')]=_['intersection'](_0x31ca78[_0x7031('0x37')],qs[_0x7031('0x3c')](_0x3a8af9[_0x7031('0x39')][_0x7031('0x3c')]));_0xccc032[_0x7031('0x3b')]=_0xccc032[_0x7031('0x3b')][_0x7031('0x3d')]?_0xccc032[_0x7031('0x3b')]:_0x31ca78[_0x7031('0x37')];_0xccc032[_0x7031('0x3f')]=qs[_0x7031('0x40')](_0x3a8af9[_0x7031('0x39')][_0x7031('0x40')]);_0xccc032[_0x7031('0x41')]=qs[_0x7031('0x42')](_[_0x7031('0x43')](_0x3a8af9['query'],_0x31ca78[_0x7031('0x42')]));if(_0x3a8af9['query'][_0x7031('0x44')]){_0xccc032[_0x7031('0x41')]=_[_0x7031('0x4d')](_0xccc032[_0x7031('0x41')],{'$or':_[_0x7031('0x38')](_0xccc032['attributes'],function(_0xefdcd4){var _0x4a5a0f={};_0x4a5a0f[_0xefdcd4]={'$like':'%'+_0x3a8af9[_0x7031('0x39')][_0x7031('0x44')]+'%'};return _0x4a5a0f;})});}_0xccc032=_['merge']({},_0xccc032,_0x3a8af9[_0x7031('0x46')]);return _0x5500dc[_0x7031('0x8a')](_0xccc032);}})[_0x7031('0x29')](function(_0x38594a){if(_0x38594a){_0x3591cd=_0x38594a['length'];if(!_0x3a8af9[_0x7031('0x39')]['hasOwnProperty'](_0x7031('0x5d'))){_0xccc032['limit']=qs[_0x7031('0x21')](_0x3a8af9[_0x7031('0x39')][_0x7031('0x21')]);_0xccc032[_0x7031('0x1f')]=qs[_0x7031('0x1f')](_0x3a8af9[_0x7031('0x39')][_0x7031('0x1f')]);}return _0x5500dc[_0x7031('0x8a')](_0xccc032);}})[_0x7031('0x29')](function(_0x263284){if(_0x263284){return _0x263284?{'count':_0x3591cd,'rows':_0x263284}:null;}})[_0x7031('0x29')](respondWithResult(_0x194869,null))[_0x7031('0x4a')](handleError(_0x194869,null));};exports[_0x7031('0x8c')]=function(_0x25758b,_0x3a6e3a,_0x1e1036){var _0xe3019f,_0x130d6d;return db[_0x7031('0x32')][_0x7031('0x4e')]({'where':{'id':_0x25758b[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x3a6e3a,null))[_0x7031('0x29')](function(_0x2e25fd){if(_0x2e25fd){_0x130d6d=_0x2e25fd;return _0x2e25fd[_0x7031('0x8c')](_0x25758b[_0x7031('0x50')][_0x7031('0x6a')],_[_0x7031('0x59')](_0x25758b['body'],[_0x7031('0x6a'),'id'])||{});}return null;})['spread'](function(_0x192a81){var _0x4cd4af;_0xe3019f=_0x192a81||[];var _0x49f0bd=[];if(_0x192a81){for(var _0x4671e7=0x0;_0x4671e7<_0x192a81[_0x7031('0x3d')];_0x4671e7+=0x1){var _0x3ffa4b=_0x192a81[_0x4671e7][_0x7031('0x51')]({'plain':!![]});_0x4cd4af=squel[_0x7031('0x6e')]()[_0x7031('0x6f')](_0x7031('0x8d'))[_0x7031('0x71')](['phone','ContactId',_0x7031('0x81'),_0x7031('0x5e'),_0x7031('0x58'),_0x7031('0x75')],squel['select']()[_0x7031('0x76')](_0x7031('0x72'),'phone')[_0x7031('0x76')]('id',_0x7031('0x74'))[_0x7031('0x76')](_0x3ffa4b[_0x7031('0x78')][_0x7031('0x79')](),_0x7031('0x81'))[_0x7031('0x76')](_0x25758b['params']['id'][_0x7031('0x79')](),'CampaignId')['field']('NOW()',_0x7031('0x58'))['field'](_0x7031('0x77'),_0x7031('0x75'))[_0x7031('0x7a')]('cm_contacts')[_0x7031('0x41')](_0x7031('0x82'))[_0x7031('0x41')]('ListId\x20=\x20?',_0x3ffa4b[_0x7031('0x78')][_0x7031('0x79')]())[_0x7031('0x41')](_0x7031('0x85')))[_0x7031('0x79')]();_0x49f0bd['push'](db[_0x7031('0x87')][_0x7031('0x39')](_0x4cd4af));}return BPromise[_0x7031('0x88')](_0x49f0bd);}})[_0x7031('0x29')](function(){return _0xe3019f;})[_0x7031('0x29')](respondWithResult(_0x3a6e3a,null))[_0x7031('0x4a')](handleError(_0x3a6e3a,null));};exports[_0x7031('0x8e')]=function(_0x4b85ae,_0x3ee788,_0x11a2b7){return db['Campaign'][_0x7031('0x4e')]({'where':{'id':_0x4b85ae['params']['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x3ee788,null))[_0x7031('0x29')](function(_0x20a8b4){if(_0x20a8b4){return _0x20a8b4['removeBlackLists'](_0x4b85ae['query'][_0x7031('0x6a')]);}})[_0x7031('0x29')](function(_0x15a771){if(_0x15a771){return db[_0x7031('0x67')]['destroy']({'where':{'ListId':_0x4b85ae[_0x7031('0x39')][_0x7031('0x6a')],'CampaignId':_0x4b85ae[_0x7031('0x57')]['id']}})['then'](function(){return _0x15a771;});}})[_0x7031('0x29')](respondWithStatusCode(_0x3ee788,null))['catch'](handleError(_0x3ee788,null));};
\ No newline at end of file
+var _0xe963=['into','cm_hopper','phone','scheduledAt','ContactId','ListId','updatedAt','select','field','NOW()','CmListId','toString','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','from','fromQuery','cm_contacts','push','all','removeLists','getBlackLists','cm_hopper_black','sequelize','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','IvrCampaigns','error','stack','name','index','map','Campaign','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','params','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','UserProfileSection','pick','CampaignId','CmHopper','getHopperHistories','findOne','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','CmList','getLists','addLists','ids','spread','dialCheckDuplicateType','always','insert'];(function(_0x3216ed,_0x1b78ae){var _0x1f7305=function(_0x5b4522){while(--_0x5b4522){_0x3216ed['push'](_0x3216ed['shift']());}};_0x1f7305(++_0x1b78ae);}(_0xe963,0x1b2));var _0x3e96=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe963[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x3e96('0x0'));var rimraf=require(_0x3e96('0x1'));var zipdir=require(_0x3e96('0x2'));var jsonpatch=require(_0x3e96('0x3'));var rp=require(_0x3e96('0x4'));var moment=require(_0x3e96('0x5'));var BPromise=require(_0x3e96('0x6'));var Mustache=require(_0x3e96('0x7'));var util=require(_0x3e96('0x8'));var path=require(_0x3e96('0x9'));var sox=require(_0x3e96('0xa'));var csv=require(_0x3e96('0xb'));var ejs=require(_0x3e96('0xc'));var fs=require('fs');var fs_extra=require(_0x3e96('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x3e96('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x3e96('0xf'));var toCsv=require('to-csv');var querystring=require(_0x3e96('0x10'));var Papa=require(_0x3e96('0x11'));var Redis=require(_0x3e96('0x12'));var authService=require(_0x3e96('0x13'));var qs=require(_0x3e96('0x14'));var as=require(_0x3e96('0x15'));var hardwareService=require(_0x3e96('0x16'));var logger=require('../../config/logger')(_0x3e96('0x17'));var utils=require(_0x3e96('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x3e96('0x19'));var db=require(_0x3e96('0x1a'))['db'];function respondWithStatusCode(_0x54bee4,_0x594e41){_0x594e41=_0x594e41||0xcc;return function(_0x49dcbc){if(_0x49dcbc){return _0x54bee4[_0x3e96('0x1b')](_0x594e41);}return _0x54bee4[_0x3e96('0x1c')](_0x594e41)[_0x3e96('0x1d')]();};}function respondWithResult(_0x499d25,_0x11dbd5){_0x11dbd5=_0x11dbd5||0xc8;return function(_0x6bb11e){if(_0x6bb11e){return _0x499d25[_0x3e96('0x1c')](_0x11dbd5)[_0x3e96('0x1e')](_0x6bb11e);}};}function respondWithFilteredResult(_0x4b44d2,_0x22b209){return function(_0x7e080f){if(_0x7e080f){var _0x540b0d=typeof _0x22b209[_0x3e96('0x1f')]===_0x3e96('0x20')&&typeof _0x22b209[_0x3e96('0x21')]===_0x3e96('0x20');var _0x26db70=_0x7e080f[_0x3e96('0x22')];var _0x7805cc=_0x540b0d?0x0:_0x22b209['offset'];var _0x234dd5=_0x540b0d?_0x7e080f[_0x3e96('0x22')]:_0x22b209[_0x3e96('0x1f')]+_0x22b209['limit'];var _0x5c2081;if(_0x234dd5>=_0x26db70){_0x234dd5=_0x26db70;_0x5c2081=0xc8;}else{_0x5c2081=0xce;}_0x4b44d2[_0x3e96('0x1c')](_0x5c2081);return _0x4b44d2[_0x3e96('0x23')]('Content-Range',_0x7805cc+'-'+_0x234dd5+'/'+_0x26db70)[_0x3e96('0x1e')](_0x7e080f);}return null;};}function patchUpdates(_0x3c9146){return function(_0x337726){try{jsonpatch[_0x3e96('0x24')](_0x337726,_0x3c9146,!![]);}catch(_0x206601){return BPromise['reject'](_0x206601);}return _0x337726[_0x3e96('0x25')]();};}function saveUpdates(_0x15553c,_0x11a407){return function(_0x57d9a3){if(_0x57d9a3){return _0x57d9a3[_0x3e96('0x26')](_0x15553c)[_0x3e96('0x27')](function(_0x7db971){return _0x7db971;});}return null;};}function removeEntity(_0x2b63f9,_0x3bcecc){return function(_0x52889e){if(_0x52889e){return _0x52889e[_0x3e96('0x28')]()[_0x3e96('0x27')](function(){var _0x4449c5=_0x52889e['get']({'plain':!![]});var _0x466af7=_0x3e96('0x29');return db['UserProfileResource'][_0x3e96('0x28')]({'where':{'type':_0x466af7,'resourceId':_0x4449c5['id']}})[_0x3e96('0x27')](function(){return _0x52889e;});})[_0x3e96('0x27')](function(){_0x2b63f9[_0x3e96('0x1c')](0xcc)[_0x3e96('0x1d')]();});}};}function handleEntityNotFound(_0x299e98,_0x357a58){return function(_0x5a793f){if(!_0x5a793f){_0x299e98[_0x3e96('0x1b')](0x194);}return _0x5a793f;};}function handleError(_0xbd7ef7,_0x393a04){_0x393a04=_0x393a04||0x1f4;return function(_0xe90de){logger[_0x3e96('0x2a')](_0xe90de[_0x3e96('0x2b')]);if(_0xe90de[_0x3e96('0x2c')]){delete _0xe90de['name'];}_0xbd7ef7['status'](_0x393a04)['send'](_0xe90de);};}exports[_0x3e96('0x2d')]=function(_0x5f1ca6,_0x28f36d){var _0x6f12da={},_0x4d4369={},_0x482b65={'count':0x0,'rows':[]};var _0x1d0c2b=_[_0x3e96('0x2e')](db[_0x3e96('0x2f')][_0x3e96('0x30')],function(_0x1c83af){return{'name':_0x1c83af[_0x3e96('0x31')],'type':_0x1c83af[_0x3e96('0x32')][_0x3e96('0x33')]};});_0x4d4369['model']=_[_0x3e96('0x2e')](_0x1d0c2b,_0x3e96('0x2c'));_0x4d4369['query']=_[_0x3e96('0x34')](_0x5f1ca6[_0x3e96('0x35')]);_0x4d4369[_0x3e96('0x36')]=_[_0x3e96('0x37')](_0x4d4369[_0x3e96('0x38')],_0x4d4369[_0x3e96('0x35')]);_0x6f12da[_0x3e96('0x39')]=_[_0x3e96('0x37')](_0x4d4369[_0x3e96('0x38')],qs[_0x3e96('0x3a')](_0x5f1ca6['query']['fields']));_0x6f12da[_0x3e96('0x39')]=_0x6f12da['attributes'][_0x3e96('0x3b')]?_0x6f12da[_0x3e96('0x39')]:_0x4d4369[_0x3e96('0x38')];if(!_0x5f1ca6['query'][_0x3e96('0x3c')](_0x3e96('0x3d'))){_0x6f12da[_0x3e96('0x21')]=qs[_0x3e96('0x21')](_0x5f1ca6[_0x3e96('0x35')][_0x3e96('0x21')]);_0x6f12da[_0x3e96('0x1f')]=qs[_0x3e96('0x1f')](_0x5f1ca6[_0x3e96('0x35')][_0x3e96('0x1f')]);}_0x6f12da[_0x3e96('0x3e')]=qs[_0x3e96('0x3f')](_0x5f1ca6[_0x3e96('0x35')][_0x3e96('0x3f')]);_0x6f12da[_0x3e96('0x40')]=qs['filters'](_['pick'](_0x5f1ca6[_0x3e96('0x35')],_0x4d4369['filters']),_0x1d0c2b);if(_0x5f1ca6[_0x3e96('0x35')][_0x3e96('0x41')]){_0x6f12da['where']=_[_0x3e96('0x42')](_0x6f12da[_0x3e96('0x40')],{'$or':_[_0x3e96('0x2e')](_0x1d0c2b,function(_0x531062){if(_0x531062['type']!==_0x3e96('0x43')){var _0x3da5a3={};_0x3da5a3[_0x531062[_0x3e96('0x2c')]]={'$like':'%'+_0x5f1ca6[_0x3e96('0x35')][_0x3e96('0x41')]+'%'};return _0x3da5a3;}})});}_0x6f12da=_[_0x3e96('0x42')]({},_0x6f12da,_0x5f1ca6['options']);var _0x3e9891={'where':_0x6f12da[_0x3e96('0x40')]};return db['Campaign'][_0x3e96('0x22')](_0x3e9891)[_0x3e96('0x27')](function(_0x10003c){_0x482b65[_0x3e96('0x22')]=_0x10003c;if(_0x5f1ca6[_0x3e96('0x35')][_0x3e96('0x44')]){_0x6f12da[_0x3e96('0x45')]=[{'all':!![]}];}return db[_0x3e96('0x2f')][_0x3e96('0x46')](_0x6f12da);})['then'](function(_0x4b3550){_0x482b65[_0x3e96('0x47')]=_0x4b3550;return _0x482b65;})[_0x3e96('0x27')](respondWithFilteredResult(_0x28f36d,_0x6f12da))[_0x3e96('0x48')](handleError(_0x28f36d,null));};exports['show']=function(_0x9f781c,_0x260f47){var _0x15c4b5={'raw':![],'where':{'id':_0x9f781c[_0x3e96('0x49')]['id']}},_0x511a3d={};_0x511a3d[_0x3e96('0x38')]=_[_0x3e96('0x34')](db[_0x3e96('0x2f')][_0x3e96('0x30')]);_0x511a3d['query']=_[_0x3e96('0x34')](_0x9f781c['query']);_0x511a3d[_0x3e96('0x36')]=_[_0x3e96('0x37')](_0x511a3d[_0x3e96('0x38')],_0x511a3d[_0x3e96('0x35')]);_0x15c4b5[_0x3e96('0x39')]=_[_0x3e96('0x37')](_0x511a3d[_0x3e96('0x38')],qs[_0x3e96('0x3a')](_0x9f781c[_0x3e96('0x35')]['fields']));_0x15c4b5[_0x3e96('0x39')]=_0x15c4b5[_0x3e96('0x39')][_0x3e96('0x3b')]?_0x15c4b5[_0x3e96('0x39')]:_0x511a3d[_0x3e96('0x38')];if(_0x9f781c['query']['includeAll']){_0x15c4b5['include']=[{'all':!![]}];}_0x15c4b5=_[_0x3e96('0x42')]({},_0x15c4b5,_0x9f781c[_0x3e96('0x4a')]);return db['Campaign'][_0x3e96('0x4b')](_0x15c4b5)[_0x3e96('0x27')](handleEntityNotFound(_0x260f47,null))['then'](respondWithResult(_0x260f47,null))[_0x3e96('0x48')](handleError(_0x260f47,null));};exports[_0x3e96('0x4c')]=function(_0x69d4c1,_0x22d2b1){return db[_0x3e96('0x2f')][_0x3e96('0x4c')](_0x69d4c1[_0x3e96('0x4d')],{})['then'](function(_0xa7e45f){var _0x5cab1c=_0x69d4c1[_0x3e96('0x4e')][_0x3e96('0x4f')]({'plain':!![]});if(!_0x5cab1c)throw new Error(_0x3e96('0x50'));if(_0x5cab1c['role']===_0x3e96('0x4e')){var _0x3410fb=_0xa7e45f['get']({'plain':!![]});var _0x150398=_0x3e96('0x29');return db['UserProfileSection'][_0x3e96('0x4b')]({'where':{'name':_0x150398,'userProfileId':_0x5cab1c[_0x3e96('0x51')]},'raw':!![]})[_0x3e96('0x27')](function(_0x4118ee){if(_0x4118ee&&_0x4118ee[_0x3e96('0x52')]===0x0){return db[_0x3e96('0x53')][_0x3e96('0x4c')]({'name':_0x3410fb['name'],'resourceId':_0x3410fb['id'],'type':_0x4118ee['name'],'sectionId':_0x4118ee['id']},{})['then'](function(){return _0xa7e45f;});}else{return _0xa7e45f;}})[_0x3e96('0x48')](function(_0x506b6f){logger[_0x3e96('0x2a')](_0x3e96('0x54'),_0x506b6f);throw _0x506b6f;});}return _0xa7e45f;})['then'](respondWithResult(_0x22d2b1,0xc9))[_0x3e96('0x48')](handleError(_0x22d2b1,null));};exports[_0x3e96('0x55')]=function(_0x4d9ed7,_0x4d28ac){var _0x57d604={'where':{'id':_0x4d9ed7[_0x3e96('0x49')]['id']}},_0x2c6169={};_0x2c6169[_0x3e96('0x38')]=_['keys'](db['Campaign'][_0x3e96('0x30')]);_0x57d604[_0x3e96('0x39')]=_[_0x3e96('0x37')](_0x2c6169[_0x3e96('0x38')],qs['fields'](_0x4d9ed7[_0x3e96('0x35')][_0x3e96('0x3a')]));_0x57d604[_0x3e96('0x39')]=_0x57d604['attributes'][_0x3e96('0x3b')]?_0x57d604[_0x3e96('0x39')]:_0x2c6169[_0x3e96('0x38')];if(_0x4d9ed7[_0x3e96('0x35')]['includeAll']){_0x57d604[_0x3e96('0x45')]=[{'all':!![]}];}_0x57d604=_[_0x3e96('0x42')]({},_0x57d604,_0x4d9ed7[_0x3e96('0x4a')]);return db[_0x3e96('0x2f')]['find'](_0x57d604)[_0x3e96('0x27')](handleEntityNotFound(_0x4d28ac,null))[_0x3e96('0x27')](function(_0x33ae01){if(_0x33ae01){var _0x5208e1=_0x33ae01['get']({'plain':!![]});_0x5208e1=qs[_0x3e96('0x56')](_0x5208e1,['id',_0x3e96('0x57'),'updatedAt']);_0x4d9ed7['body']=_[_0x3e96('0x56')](_0x4d9ed7[_0x3e96('0x4d')],['id',_0x3e96('0x57'),'updatedAt']);return db[_0x3e96('0x2f')][_0x3e96('0x4c')](_['merge'](_0x5208e1,_0x4d9ed7[_0x3e96('0x4d')]),{'include':_0x4d9ed7[_0x3e96('0x35')]['includeAll']?[{'all':!![]}]:undefined})[_0x3e96('0x27')](function(_0x4f94d1){var _0x6a4a4e=_0x4d9ed7[_0x3e96('0x4e')]['get']({'plain':!![]});if(!_0x6a4a4e)throw new Error(_0x3e96('0x50'));if(_0x6a4a4e['role']===_0x3e96('0x4e')){var _0x4abbd8=_0x4f94d1[_0x3e96('0x4f')]({'plain':!![]});var _0x2220a0='IvrCampaigns';return db[_0x3e96('0x58')]['find']({'where':{'name':_0x2220a0,'userProfileId':_0x6a4a4e[_0x3e96('0x51')]},'raw':!![]})[_0x3e96('0x27')](function(_0x4d9fd5){if(_0x4d9fd5&&_0x4d9fd5[_0x3e96('0x52')]===0x0){return db[_0x3e96('0x53')][_0x3e96('0x4c')]({'name':_0x4abbd8[_0x3e96('0x2c')],'resourceId':_0x4abbd8['id'],'type':_0x4d9fd5[_0x3e96('0x2c')],'sectionId':_0x4d9fd5['id']},{})[_0x3e96('0x27')](function(){return _0x4f94d1;});}else{return _0x4f94d1;}})[_0x3e96('0x48')](function(_0xd8011){logger['error'](_0x3e96('0x54'),_0xd8011);throw _0xd8011;});}return _0x4f94d1;});}})[_0x3e96('0x27')](respondWithResult(_0x4d28ac,0xc9))[_0x3e96('0x48')](handleError(_0x4d28ac,null));};exports['update']=function(_0x9566d7,_0x53e499){if(_0x9566d7[_0x3e96('0x4d')]['id']){delete _0x9566d7[_0x3e96('0x4d')]['id'];}return db[_0x3e96('0x2f')][_0x3e96('0x4b')]({'where':{'id':_0x9566d7[_0x3e96('0x49')]['id']}})['then'](handleEntityNotFound(_0x53e499,null))[_0x3e96('0x27')](saveUpdates(_0x9566d7[_0x3e96('0x4d')],null))['then'](respondWithResult(_0x53e499,null))[_0x3e96('0x48')](handleError(_0x53e499,null));};exports['destroy']=function(_0x3c7960,_0x5c7b63){return db[_0x3e96('0x2f')][_0x3e96('0x4b')]({'where':{'id':_0x3c7960[_0x3e96('0x49')]['id']}})[_0x3e96('0x27')](handleEntityNotFound(_0x5c7b63,null))[_0x3e96('0x27')](removeEntity(_0x5c7b63,null))[_0x3e96('0x48')](handleError(_0x5c7b63,null));};exports['getHoppers']=function(_0x469ab7,_0x478bb5,_0x32e478){var _0x4a1246={'raw':!![],'where':{}};var _0x3352b1={};var _0x164a6f={'count':0x0,'rows':[]};return db[_0x3e96('0x2f')]['findOne']({'where':{'id':_0x469ab7[_0x3e96('0x49')]['id']}})['then'](handleEntityNotFound(_0x478bb5,null))[_0x3e96('0x27')](function(_0x5dc205){if(_0x5dc205){_0x3352b1[_0x3e96('0x38')]=_['keys'](db['CmHopper']['rawAttributes']);_0x3352b1[_0x3e96('0x35')]=_[_0x3e96('0x34')](_0x469ab7[_0x3e96('0x35')]);_0x3352b1[_0x3e96('0x36')]=_[_0x3e96('0x37')](_0x3352b1[_0x3e96('0x38')],_0x3352b1[_0x3e96('0x35')]);_0x4a1246[_0x3e96('0x39')]=_[_0x3e96('0x37')](_0x3352b1[_0x3e96('0x38')],qs['fields'](_0x469ab7[_0x3e96('0x35')]['fields']));_0x4a1246[_0x3e96('0x39')]=_0x4a1246[_0x3e96('0x39')][_0x3e96('0x3b')]?_0x4a1246['attributes']:_0x3352b1[_0x3e96('0x38')];if(!_0x469ab7[_0x3e96('0x35')][_0x3e96('0x3c')](_0x3e96('0x3d'))){_0x4a1246[_0x3e96('0x21')]=qs[_0x3e96('0x21')](_0x469ab7[_0x3e96('0x35')][_0x3e96('0x21')]);_0x4a1246[_0x3e96('0x1f')]=qs[_0x3e96('0x1f')](_0x469ab7[_0x3e96('0x35')][_0x3e96('0x1f')]);}_0x4a1246[_0x3e96('0x3e')]=qs[_0x3e96('0x3f')](_0x469ab7[_0x3e96('0x35')]['sort']);_0x4a1246['where']=qs[_0x3e96('0x36')](_[_0x3e96('0x59')](_0x469ab7['query'],_0x3352b1[_0x3e96('0x36')]));_0x4a1246[_0x3e96('0x40')][_0x3e96('0x5a')]=_0x5dc205['id'];if(_0x469ab7[_0x3e96('0x35')][_0x3e96('0x41')]){_0x4a1246['where']=_[_0x3e96('0x42')](_0x4a1246['where'],{'$or':_[_0x3e96('0x2e')](_0x4a1246['attributes'],function(_0x3a1500){var _0x257585={};_0x257585[_0x3a1500]={'$like':'%'+_0x469ab7[_0x3e96('0x35')]['filter']+'%'};return _0x257585;})});}_0x4a1246=_[_0x3e96('0x42')]({},_0x4a1246,_0x469ab7[_0x3e96('0x4a')]);return db[_0x3e96('0x5b')]['count']({'where':_0x4a1246[_0x3e96('0x40')]})[_0x3e96('0x27')](function(_0x47de3a){_0x164a6f[_0x3e96('0x22')]=_0x47de3a;if(_0x469ab7[_0x3e96('0x35')][_0x3e96('0x44')]){_0x4a1246[_0x3e96('0x45')]=[{'all':!![]}];}return db[_0x3e96('0x5b')]['findAll'](_0x4a1246);})['then'](function(_0x2f7ad4){_0x164a6f[_0x3e96('0x47')]=_0x2f7ad4;return _0x164a6f;});}})[_0x3e96('0x27')](respondWithFilteredResult(_0x478bb5,_0x4a1246))['catch'](handleError(_0x478bb5,null));};exports[_0x3e96('0x5c')]=function(_0x14f9cb,_0x2be620,_0x38f158){var _0x5157d8={'raw':!![],'where':{}};var _0x3ce8c9={};var _0x17230f={'count':0x0,'rows':[]};return db[_0x3e96('0x2f')][_0x3e96('0x5d')]({'where':{'id':_0x14f9cb[_0x3e96('0x49')]['id']}})['then'](handleEntityNotFound(_0x2be620,null))['then'](function(_0x14fb25){if(_0x14fb25){_0x3ce8c9[_0x3e96('0x38')]=_[_0x3e96('0x34')](db['CmHopperHistory']['rawAttributes']);_0x3ce8c9['query']=_[_0x3e96('0x34')](_0x14f9cb[_0x3e96('0x35')]);_0x3ce8c9[_0x3e96('0x36')]=_[_0x3e96('0x37')](_0x3ce8c9[_0x3e96('0x38')],_0x3ce8c9[_0x3e96('0x35')]);_0x5157d8['attributes']=_[_0x3e96('0x37')](_0x3ce8c9[_0x3e96('0x38')],qs[_0x3e96('0x3a')](_0x14f9cb['query'][_0x3e96('0x3a')]));_0x5157d8['attributes']=_0x5157d8['attributes'][_0x3e96('0x3b')]?_0x5157d8[_0x3e96('0x39')]:_0x3ce8c9[_0x3e96('0x38')];if(!_0x14f9cb[_0x3e96('0x35')][_0x3e96('0x3c')](_0x3e96('0x3d'))){_0x5157d8[_0x3e96('0x21')]=qs[_0x3e96('0x21')](_0x14f9cb[_0x3e96('0x35')]['limit']);_0x5157d8[_0x3e96('0x1f')]=qs[_0x3e96('0x1f')](_0x14f9cb[_0x3e96('0x35')][_0x3e96('0x1f')]);}_0x5157d8[_0x3e96('0x3e')]=qs[_0x3e96('0x3f')](_0x14f9cb[_0x3e96('0x35')][_0x3e96('0x3f')]);_0x5157d8['where']=qs[_0x3e96('0x36')](_[_0x3e96('0x59')](_0x14f9cb['query'],_0x3ce8c9[_0x3e96('0x36')]));_0x5157d8[_0x3e96('0x40')]['CampaignId']=_0x14fb25['id'];if(_0x14f9cb[_0x3e96('0x35')][_0x3e96('0x41')]){_0x5157d8[_0x3e96('0x40')]=_[_0x3e96('0x42')](_0x5157d8[_0x3e96('0x40')],{'$or':_[_0x3e96('0x2e')](_0x5157d8[_0x3e96('0x39')],function(_0x292f1c){var _0x461b10={};_0x461b10[_0x292f1c]={'$like':'%'+_0x14f9cb[_0x3e96('0x35')][_0x3e96('0x41')]+'%'};return _0x461b10;})});}_0x5157d8=_[_0x3e96('0x42')]({},_0x5157d8,_0x14f9cb[_0x3e96('0x4a')]);return db['CmHopperHistory']['count']({'where':_0x5157d8[_0x3e96('0x40')]})[_0x3e96('0x27')](function(_0x3d48dc){_0x17230f[_0x3e96('0x22')]=_0x3d48dc;if(_0x14f9cb['query'][_0x3e96('0x44')]){_0x5157d8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x3e96('0x46')](_0x5157d8);})[_0x3e96('0x27')](function(_0x4e9516){_0x17230f[_0x3e96('0x47')]=_0x4e9516;return _0x17230f;});}})[_0x3e96('0x27')](respondWithFilteredResult(_0x2be620,_0x5157d8))[_0x3e96('0x48')](handleError(_0x2be620,null));};exports[_0x3e96('0x5e')]=function(_0x2440bd,_0x1816fb,_0x409a31){var _0x5d9451={'raw':!![],'where':{}};var _0x97e140={};var _0x4e59be={'count':0x0,'rows':[]};return db[_0x3e96('0x2f')][_0x3e96('0x5d')]({'where':{'id':_0x2440bd[_0x3e96('0x49')]['id']}})[_0x3e96('0x27')](handleEntityNotFound(_0x1816fb,null))[_0x3e96('0x27')](function(_0xa9277c){if(_0xa9277c){_0x97e140[_0x3e96('0x38')]=_[_0x3e96('0x34')](db[_0x3e96('0x5f')][_0x3e96('0x30')]);_0x97e140['query']=_[_0x3e96('0x34')](_0x2440bd[_0x3e96('0x35')]);_0x97e140[_0x3e96('0x36')]=_[_0x3e96('0x37')](_0x97e140['model'],_0x97e140['query']);_0x5d9451['attributes']=_['intersection'](_0x97e140[_0x3e96('0x38')],qs[_0x3e96('0x3a')](_0x2440bd[_0x3e96('0x35')]['fields']));_0x5d9451[_0x3e96('0x39')]=_0x5d9451[_0x3e96('0x39')][_0x3e96('0x3b')]?_0x5d9451[_0x3e96('0x39')]:_0x97e140['model'];if(!_0x2440bd[_0x3e96('0x35')][_0x3e96('0x3c')](_0x3e96('0x3d'))){_0x5d9451['limit']=qs[_0x3e96('0x21')](_0x2440bd['query'][_0x3e96('0x21')]);_0x5d9451['offset']=qs['offset'](_0x2440bd[_0x3e96('0x35')]['offset']);}_0x5d9451[_0x3e96('0x3e')]=qs['sort'](_0x2440bd[_0x3e96('0x35')][_0x3e96('0x3f')]);_0x5d9451[_0x3e96('0x40')]=qs[_0x3e96('0x36')](_[_0x3e96('0x59')](_0x2440bd[_0x3e96('0x35')],_0x97e140[_0x3e96('0x36')]));_0x5d9451[_0x3e96('0x40')]['CampaignId']=_0xa9277c['id'];if(_0x2440bd[_0x3e96('0x35')][_0x3e96('0x41')]){_0x5d9451[_0x3e96('0x40')]=_[_0x3e96('0x42')](_0x5d9451[_0x3e96('0x40')],{'$or':_[_0x3e96('0x2e')](_0x5d9451[_0x3e96('0x39')],function(_0x46d003){var _0x4ba215={};_0x4ba215[_0x46d003]={'$like':'%'+_0x2440bd['query'][_0x3e96('0x41')]+'%'};return _0x4ba215;})});}_0x5d9451=_[_0x3e96('0x42')]({},_0x5d9451,_0x2440bd[_0x3e96('0x4a')]);return db[_0x3e96('0x5f')]['count']({'where':_0x5d9451[_0x3e96('0x40')]})[_0x3e96('0x27')](function(_0x200de2){_0x4e59be['count']=_0x200de2;if(_0x2440bd[_0x3e96('0x35')][_0x3e96('0x44')]){_0x5d9451[_0x3e96('0x45')]=[{'all':!![]}];}return db[_0x3e96('0x5f')][_0x3e96('0x46')](_0x5d9451);})[_0x3e96('0x27')](function(_0x4ae160){_0x4e59be[_0x3e96('0x47')]=_0x4ae160;return _0x4e59be;});}})[_0x3e96('0x27')](respondWithFilteredResult(_0x1816fb,_0x5d9451))[_0x3e96('0x48')](handleError(_0x1816fb,null));};exports[_0x3e96('0x60')]=function(_0x26527b,_0x555179,_0x41d6eb){var _0x563375={'raw':!![],'where':{}};var _0x2bad75={};var _0x53833e={'count':0x0,'rows':[]};return db[_0x3e96('0x2f')][_0x3e96('0x5d')]({'where':{'id':_0x26527b[_0x3e96('0x49')]['id']}})['then'](handleEntityNotFound(_0x555179,null))[_0x3e96('0x27')](function(_0x550233){if(_0x550233){_0x2bad75[_0x3e96('0x38')]=_[_0x3e96('0x34')](db[_0x3e96('0x61')][_0x3e96('0x30')]);_0x2bad75[_0x3e96('0x35')]=_['keys'](_0x26527b[_0x3e96('0x35')]);_0x2bad75['filters']=_[_0x3e96('0x37')](_0x2bad75[_0x3e96('0x38')],_0x2bad75[_0x3e96('0x35')]);_0x563375['attributes']=_[_0x3e96('0x37')](_0x2bad75[_0x3e96('0x38')],qs['fields'](_0x26527b[_0x3e96('0x35')][_0x3e96('0x3a')]));_0x563375['attributes']=_0x563375[_0x3e96('0x39')][_0x3e96('0x3b')]?_0x563375[_0x3e96('0x39')]:_0x2bad75[_0x3e96('0x38')];if(!_0x26527b['query'][_0x3e96('0x3c')]('nolimit')){_0x563375[_0x3e96('0x21')]=qs[_0x3e96('0x21')](_0x26527b['query'][_0x3e96('0x21')]);_0x563375['offset']=qs[_0x3e96('0x1f')](_0x26527b[_0x3e96('0x35')][_0x3e96('0x1f')]);}_0x563375[_0x3e96('0x3e')]=qs[_0x3e96('0x3f')](_0x26527b[_0x3e96('0x35')][_0x3e96('0x3f')]);_0x563375[_0x3e96('0x40')]=qs[_0x3e96('0x36')](_[_0x3e96('0x59')](_0x26527b[_0x3e96('0x35')],_0x2bad75[_0x3e96('0x36')]));_0x563375[_0x3e96('0x40')][_0x3e96('0x5a')]=_0x550233['id'];if(_0x26527b['query'][_0x3e96('0x41')]){_0x563375[_0x3e96('0x40')]=_['merge'](_0x563375['where'],{'$or':_[_0x3e96('0x2e')](_0x563375[_0x3e96('0x39')],function(_0x1ba93e){var _0x3218f8={};_0x3218f8[_0x1ba93e]={'$like':'%'+_0x26527b[_0x3e96('0x35')][_0x3e96('0x41')]+'%'};return _0x3218f8;})});}_0x563375=_['merge']({},_0x563375,_0x26527b[_0x3e96('0x4a')]);return db[_0x3e96('0x61')][_0x3e96('0x22')]({'where':_0x563375[_0x3e96('0x40')]})[_0x3e96('0x27')](function(_0x3341d2){_0x53833e[_0x3e96('0x22')]=_0x3341d2;if(_0x26527b[_0x3e96('0x35')][_0x3e96('0x44')]){_0x563375[_0x3e96('0x45')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x3e96('0x46')](_0x563375);})[_0x3e96('0x27')](function(_0x5a71c0){_0x53833e[_0x3e96('0x47')]=_0x5a71c0;return _0x53833e;});}})[_0x3e96('0x27')](respondWithFilteredResult(_0x555179,_0x563375))[_0x3e96('0x48')](handleError(_0x555179,null));};exports['getLists']=function(_0x547a22,_0x2db9ef,_0x9a1439){var _0x104a22={};var _0x1e09a7={};var _0x8e1bd1;var _0x52cd01;return db[_0x3e96('0x2f')][_0x3e96('0x5d')]({'where':{'id':_0x547a22[_0x3e96('0x49')]['id']}})[_0x3e96('0x27')](handleEntityNotFound(_0x2db9ef,null))[_0x3e96('0x27')](function(_0x4cb8b7){if(_0x4cb8b7){_0x8e1bd1=_0x4cb8b7;_0x1e09a7['model']=_[_0x3e96('0x34')](db[_0x3e96('0x62')][_0x3e96('0x30')]);_0x1e09a7[_0x3e96('0x35')]=_['keys'](_0x547a22['query']);_0x1e09a7['filters']=_[_0x3e96('0x37')](_0x1e09a7[_0x3e96('0x38')],_0x1e09a7['query']);_0x104a22[_0x3e96('0x39')]=_['intersection'](_0x1e09a7[_0x3e96('0x38')],qs[_0x3e96('0x3a')](_0x547a22[_0x3e96('0x35')]['fields']));_0x104a22['attributes']=_0x104a22[_0x3e96('0x39')][_0x3e96('0x3b')]?_0x104a22[_0x3e96('0x39')]:_0x1e09a7[_0x3e96('0x38')];_0x104a22[_0x3e96('0x3e')]=qs[_0x3e96('0x3f')](_0x547a22[_0x3e96('0x35')][_0x3e96('0x3f')]);_0x104a22[_0x3e96('0x40')]=qs['filters'](_[_0x3e96('0x59')](_0x547a22['query'],_0x1e09a7[_0x3e96('0x36')]));if(_0x547a22[_0x3e96('0x35')][_0x3e96('0x41')]){_0x104a22[_0x3e96('0x40')]=_[_0x3e96('0x42')](_0x104a22[_0x3e96('0x40')],{'$or':_['map'](_0x104a22['attributes'],function(_0xb499d7){var _0x100b85={};_0x100b85[_0xb499d7]={'$like':'%'+_0x547a22['query'][_0x3e96('0x41')]+'%'};return _0x100b85;})});}_0x104a22=_['merge']({},_0x104a22,_0x547a22[_0x3e96('0x4a')]);return _0x8e1bd1[_0x3e96('0x63')](_0x104a22);}})[_0x3e96('0x27')](function(_0x1fc9ad){if(_0x1fc9ad){_0x52cd01=_0x1fc9ad[_0x3e96('0x3b')];if(!_0x547a22['query'][_0x3e96('0x3c')]('nolimit')){_0x104a22[_0x3e96('0x21')]=qs['limit'](_0x547a22[_0x3e96('0x35')][_0x3e96('0x21')]);_0x104a22['offset']=qs[_0x3e96('0x1f')](_0x547a22[_0x3e96('0x35')]['offset']);}return _0x8e1bd1[_0x3e96('0x63')](_0x104a22);}})[_0x3e96('0x27')](function(_0x3b3be0){if(_0x3b3be0){return _0x3b3be0?{'count':_0x52cd01,'rows':_0x3b3be0}:null;}})[_0x3e96('0x27')](respondWithResult(_0x2db9ef,null))[_0x3e96('0x48')](handleError(_0x2db9ef,null));};exports[_0x3e96('0x64')]=function(_0x4718c8,_0x3087cf,_0x48b68d){var _0x41311e,_0x1a7fe7;return db['Campaign'][_0x3e96('0x4b')]({'where':{'id':_0x4718c8['params']['id']}})[_0x3e96('0x27')](handleEntityNotFound(_0x3087cf,null))[_0x3e96('0x27')](function(_0x1d9ca7){if(_0x1d9ca7){_0x1a7fe7=_0x1d9ca7;return _0x1d9ca7[_0x3e96('0x64')](_0x4718c8[_0x3e96('0x4d')][_0x3e96('0x65')],_[_0x3e96('0x56')](_0x4718c8['body'],['ids','id'])||{});}return null;})[_0x3e96('0x66')](function(_0x168843){var _0x49964f;_0x41311e=_0x168843||[];var _0x9d7ba0=[];if(_0x168843){for(var _0x5b9970=0x0;_0x5b9970<_0x168843['length'];_0x5b9970+=0x1){var _0x8661ed=_0x168843[_0x5b9970][_0x3e96('0x4f')]({'plain':!![]});_0x1a7fe7[_0x3e96('0x67')]=_0x4718c8[_0x3e96('0x4d')][_0x3e96('0x67')]?_0x4718c8['body'][_0x3e96('0x67')]:_0x1a7fe7[_0x3e96('0x67')];switch(_0x1a7fe7[_0x3e96('0x67')]){case _0x3e96('0x68'):_0x49964f=squel[_0x3e96('0x69')]()[_0x3e96('0x6a')](_0x3e96('0x6b'))['fromQuery']([_0x3e96('0x6c'),_0x3e96('0x6d'),_0x3e96('0x6e'),_0x3e96('0x6f'),_0x3e96('0x5a'),_0x3e96('0x57'),_0x3e96('0x70')],squel[_0x3e96('0x71')]()[_0x3e96('0x72')]('phone',_0x3e96('0x6c'))[_0x3e96('0x72')](_0x3e96('0x73'),_0x3e96('0x6d'))[_0x3e96('0x72')]('id','ContactId')[_0x3e96('0x72')](_0x8661ed[_0x3e96('0x74')][_0x3e96('0x75')](),_0x3e96('0x6f'))['field'](_0x4718c8[_0x3e96('0x49')]['id']['toString'](),_0x3e96('0x5a'))[_0x3e96('0x72')](_0x3e96('0x73'),_0x3e96('0x57'))[_0x3e96('0x72')](_0x3e96('0x73'),_0x3e96('0x70'))['from']('cm_contacts')[_0x3e96('0x40')](_0x3e96('0x76'))[_0x3e96('0x40')](_0x3e96('0x77'),_0x8661ed['CmListId']['toString']())[_0x3e96('0x40')](_0x3e96('0x78'))[_0x3e96('0x40')](_0x3e96('0x79'),squel['select']()['field'](_0x3e96('0x7a'))['from']('cm_hopper_final')[_0x3e96('0x40')](_0x3e96('0x7b'),_0x4718c8[_0x3e96('0x49')]['id'][_0x3e96('0x75')]()))['where'](_0x3e96('0x79'),squel[_0x3e96('0x71')]()['field'](_0x3e96('0x7c'))[_0x3e96('0x7d')](_0x3e96('0x6b'))[_0x3e96('0x40')](_0x3e96('0x7b'),_0x4718c8[_0x3e96('0x49')]['id'][_0x3e96('0x75')]())))[_0x3e96('0x75')]();break;case'onlyIfOpen':_0x49964f=squel[_0x3e96('0x69')]()[_0x3e96('0x6a')]('cm_hopper')[_0x3e96('0x7e')]([_0x3e96('0x6c'),_0x3e96('0x6d'),_0x3e96('0x6e'),'ListId',_0x3e96('0x5a'),_0x3e96('0x57'),_0x3e96('0x70')],squel[_0x3e96('0x71')]()[_0x3e96('0x72')](_0x3e96('0x6c'),_0x3e96('0x6c'))[_0x3e96('0x72')]('NOW()',_0x3e96('0x6d'))['field']('id',_0x3e96('0x6e'))[_0x3e96('0x72')](_0x8661ed['CmListId'][_0x3e96('0x75')](),_0x3e96('0x6f'))[_0x3e96('0x72')](_0x4718c8['params']['id'][_0x3e96('0x75')](),_0x3e96('0x5a'))[_0x3e96('0x72')](_0x3e96('0x73'),'createdAt')[_0x3e96('0x72')](_0x3e96('0x73'),'updatedAt')['from']('cm_contacts')['where'](_0x3e96('0x76'))[_0x3e96('0x40')]('ListId\x20=\x20?',_0x8661ed[_0x3e96('0x74')][_0x3e96('0x75')]())[_0x3e96('0x40')](_0x3e96('0x78'))['where'](_0x3e96('0x79'),squel[_0x3e96('0x71')]()[_0x3e96('0x72')]('COALESCE(phone,\x27\x27)')[_0x3e96('0x7d')](_0x3e96('0x6b'))[_0x3e96('0x40')](_0x3e96('0x7b'),_0x4718c8['params']['id'][_0x3e96('0x75')]())))[_0x3e96('0x75')]();break;default:_0x49964f=squel[_0x3e96('0x69')]()['into'](_0x3e96('0x6b'))['fromQuery']([_0x3e96('0x6c'),_0x3e96('0x6d'),_0x3e96('0x6e'),_0x3e96('0x6f'),_0x3e96('0x5a'),_0x3e96('0x57'),_0x3e96('0x70')],squel[_0x3e96('0x71')]()[_0x3e96('0x72')](_0x3e96('0x6c'),_0x3e96('0x6c'))[_0x3e96('0x72')]('NOW()',_0x3e96('0x6d'))['field']('id','ContactId')[_0x3e96('0x72')](_0x8661ed[_0x3e96('0x74')][_0x3e96('0x75')](),_0x3e96('0x6f'))[_0x3e96('0x72')](_0x4718c8['params']['id']['toString'](),_0x3e96('0x5a'))[_0x3e96('0x72')](_0x3e96('0x73'),_0x3e96('0x57'))[_0x3e96('0x72')](_0x3e96('0x73'),_0x3e96('0x70'))[_0x3e96('0x7d')](_0x3e96('0x7f'))['where'](_0x3e96('0x76'))[_0x3e96('0x40')]('ListId\x20=\x20?',_0x8661ed[_0x3e96('0x74')]['toString']())[_0x3e96('0x40')](_0x3e96('0x78')))[_0x3e96('0x75')]();}_0x9d7ba0[_0x3e96('0x80')](db['sequelize']['query'](_0x49964f));}return BPromise[_0x3e96('0x81')](_0x9d7ba0);}})[_0x3e96('0x27')](function(){return _0x41311e;})['then'](respondWithResult(_0x3087cf,null))['catch'](handleError(_0x3087cf,null));};exports[_0x3e96('0x82')]=function(_0x40eff1,_0x2b5831,_0xfa1200){return db['Campaign'][_0x3e96('0x4b')]({'where':{'id':_0x40eff1['params']['id']}})['then'](handleEntityNotFound(_0x2b5831,null))[_0x3e96('0x27')](function(_0x439ea8){if(_0x439ea8){return _0x439ea8[_0x3e96('0x82')](_0x40eff1[_0x3e96('0x35')][_0x3e96('0x65')]);}})[_0x3e96('0x27')](function(_0x18a67b){if(_0x18a67b){return db[_0x3e96('0x5b')][_0x3e96('0x28')]({'where':{'ListId':_0x40eff1[_0x3e96('0x35')]['ids'],'CampaignId':_0x40eff1[_0x3e96('0x49')]['id']}})[_0x3e96('0x27')](function(){return _0x18a67b;});}})[_0x3e96('0x27')](respondWithStatusCode(_0x2b5831,null))['catch'](handleError(_0x2b5831,null));};exports['getBlackLists']=function(_0x18f93b,_0x544e8b,_0x1e9aa2){var _0x19f10f={};var _0x25c6fb={};var _0x502b4b;var _0x3aab51;return db['Campaign'][_0x3e96('0x5d')]({'where':{'id':_0x18f93b['params']['id']}})[_0x3e96('0x27')](handleEntityNotFound(_0x544e8b,null))[_0x3e96('0x27')](function(_0x2641a3){if(_0x2641a3){_0x502b4b=_0x2641a3;_0x25c6fb[_0x3e96('0x38')]=_['keys'](db['CmList'][_0x3e96('0x30')]);_0x25c6fb['query']=_[_0x3e96('0x34')](_0x18f93b[_0x3e96('0x35')]);_0x25c6fb[_0x3e96('0x36')]=_[_0x3e96('0x37')](_0x25c6fb['model'],_0x25c6fb[_0x3e96('0x35')]);_0x19f10f[_0x3e96('0x39')]=_[_0x3e96('0x37')](_0x25c6fb[_0x3e96('0x38')],qs[_0x3e96('0x3a')](_0x18f93b[_0x3e96('0x35')][_0x3e96('0x3a')]));_0x19f10f['attributes']=_0x19f10f[_0x3e96('0x39')][_0x3e96('0x3b')]?_0x19f10f[_0x3e96('0x39')]:_0x25c6fb[_0x3e96('0x38')];_0x19f10f[_0x3e96('0x3e')]=qs[_0x3e96('0x3f')](_0x18f93b[_0x3e96('0x35')][_0x3e96('0x3f')]);_0x19f10f[_0x3e96('0x40')]=qs[_0x3e96('0x36')](_['pick'](_0x18f93b[_0x3e96('0x35')],_0x25c6fb[_0x3e96('0x36')]));if(_0x18f93b[_0x3e96('0x35')]['filter']){_0x19f10f['where']=_[_0x3e96('0x42')](_0x19f10f[_0x3e96('0x40')],{'$or':_[_0x3e96('0x2e')](_0x19f10f[_0x3e96('0x39')],function(_0x142c8f){var _0x5b7278={};_0x5b7278[_0x142c8f]={'$like':'%'+_0x18f93b['query'][_0x3e96('0x41')]+'%'};return _0x5b7278;})});}_0x19f10f=_[_0x3e96('0x42')]({},_0x19f10f,_0x18f93b[_0x3e96('0x4a')]);return _0x502b4b[_0x3e96('0x83')](_0x19f10f);}})[_0x3e96('0x27')](function(_0x4689e6){if(_0x4689e6){_0x3aab51=_0x4689e6[_0x3e96('0x3b')];if(!_0x18f93b[_0x3e96('0x35')][_0x3e96('0x3c')](_0x3e96('0x3d'))){_0x19f10f['limit']=qs[_0x3e96('0x21')](_0x18f93b['query'][_0x3e96('0x21')]);_0x19f10f['offset']=qs['offset'](_0x18f93b[_0x3e96('0x35')][_0x3e96('0x1f')]);}return _0x502b4b[_0x3e96('0x83')](_0x19f10f);}})[_0x3e96('0x27')](function(_0x46874b){if(_0x46874b){return _0x46874b?{'count':_0x3aab51,'rows':_0x46874b}:null;}})[_0x3e96('0x27')](respondWithResult(_0x544e8b,null))[_0x3e96('0x48')](handleError(_0x544e8b,null));};exports['addBlackLists']=function(_0x13b5b8,_0x521730,_0x136b45){var _0x51a473,_0x4ef3f5;return db[_0x3e96('0x2f')][_0x3e96('0x4b')]({'where':{'id':_0x13b5b8['params']['id']}})[_0x3e96('0x27')](handleEntityNotFound(_0x521730,null))[_0x3e96('0x27')](function(_0x322e00){if(_0x322e00){_0x4ef3f5=_0x322e00;return _0x322e00['addBlackLists'](_0x13b5b8[_0x3e96('0x4d')][_0x3e96('0x65')],_[_0x3e96('0x56')](_0x13b5b8[_0x3e96('0x4d')],[_0x3e96('0x65'),'id'])||{});}return null;})['spread'](function(_0x281ecd){var _0x32a5d7;_0x51a473=_0x281ecd||[];var _0x1faaf5=[];if(_0x281ecd){for(var _0x252ec1=0x0;_0x252ec1<_0x281ecd[_0x3e96('0x3b')];_0x252ec1+=0x1){var _0x2e132d=_0x281ecd[_0x252ec1][_0x3e96('0x4f')]({'plain':!![]});_0x32a5d7=squel[_0x3e96('0x69')]()[_0x3e96('0x6a')](_0x3e96('0x84'))[_0x3e96('0x7e')]([_0x3e96('0x6c'),_0x3e96('0x6e'),_0x3e96('0x6f'),_0x3e96('0x5a'),'createdAt',_0x3e96('0x70')],squel['select']()['field'](_0x3e96('0x6c'),_0x3e96('0x6c'))[_0x3e96('0x72')]('id',_0x3e96('0x6e'))[_0x3e96('0x72')](_0x2e132d[_0x3e96('0x74')][_0x3e96('0x75')](),_0x3e96('0x6f'))[_0x3e96('0x72')](_0x13b5b8[_0x3e96('0x49')]['id']['toString'](),_0x3e96('0x5a'))['field'](_0x3e96('0x73'),_0x3e96('0x57'))[_0x3e96('0x72')](_0x3e96('0x73'),'updatedAt')[_0x3e96('0x7d')](_0x3e96('0x7f'))[_0x3e96('0x40')]('deletedAt\x20IS\x20NULL')[_0x3e96('0x40')](_0x3e96('0x77'),_0x2e132d[_0x3e96('0x74')][_0x3e96('0x75')]())[_0x3e96('0x40')]('phone\x20IS\x20NOT\x20NULL'))[_0x3e96('0x75')]();_0x1faaf5[_0x3e96('0x80')](db[_0x3e96('0x85')][_0x3e96('0x35')](_0x32a5d7));}return BPromise['all'](_0x1faaf5);}})[_0x3e96('0x27')](function(){return _0x51a473;})['then'](respondWithResult(_0x521730,null))[_0x3e96('0x48')](handleError(_0x521730,null));};exports[_0x3e96('0x86')]=function(_0xba89ff,_0x516028,_0x247b34){return db[_0x3e96('0x2f')][_0x3e96('0x4b')]({'where':{'id':_0xba89ff[_0x3e96('0x49')]['id']}})[_0x3e96('0x27')](handleEntityNotFound(_0x516028,null))[_0x3e96('0x27')](function(_0x1afe42){if(_0x1afe42){return _0x1afe42[_0x3e96('0x86')](_0xba89ff['query'][_0x3e96('0x65')]);}})[_0x3e96('0x27')](function(_0x1d5232){if(_0x1d5232){return db[_0x3e96('0x61')][_0x3e96('0x28')]({'where':{'ListId':_0xba89ff[_0x3e96('0x35')][_0x3e96('0x65')],'CampaignId':_0xba89ff[_0x3e96('0x49')]['id']}})[_0x3e96('0x27')](function(){return _0x1d5232;});}})[_0x3e96('0x27')](respondWithStatusCode(_0x516028,null))[_0x3e96('0x48')](handleError(_0x516028,null));};
\ No newline at end of file
index dd61bd3..a0eb6cc 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(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_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':'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(_0x44946b,_0xf874ec){var _0x249bc4=function(_0x40a23e){while(--_0x40a23e){_0x44946b['push'](_0x44946b['shift']());}};_0x249bc4(++_0xf874ec);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'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 2af8849..1709a7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7119=['limit','include','model','map','GetCampaign','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Campaign,\x20%s,\x20%s','request\x20sent','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','Campaign','options','raw','attributes'];(function(_0x543b43,_0x38e9be){var _0x31a539=function(_0x596038){while(--_0x596038){_0x543b43['push'](_0x543b43['shift']());}};_0x31a539(++_0x38e9be);}(_0x7119,0x1c7));var _0x9711=function(_0x3485f8,_0x1b66cf){_0x3485f8=_0x3485f8-0x0;var _0x1fbba7=_0x7119[_0x3485f8];return _0x1fbba7;};'use strict';var _=require('lodash');var util=require(_0x9711('0x0'));var moment=require('moment');var BPromise=require(_0x9711('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9711('0x2'));var db=require(_0x9711('0x3'))['db'];var utils=require(_0x9711('0x4'));var logger=require(_0x9711('0x5'))('rpc');var config=require(_0x9711('0x6'));var jayson=require(_0x9711('0x7'));var client=jayson[_0x9711('0x8')][_0x9711('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x191701,_0x4c75dd,_0x31af88){return new BPromise(function(_0x3a5f79,_0x132b5b){return client['request'](_0x191701,_0x31af88)[_0x9711('0xa')](function(_0x4b13b9){logger[_0x9711('0xb')](_0x9711('0xc'),_0x4c75dd,_0x9711('0xd'));logger['debug'](_0x9711('0xe'),_0x4c75dd,_0x9711('0xd'),JSON[_0x9711('0xf')](_0x4b13b9));if(_0x4b13b9[_0x9711('0x10')]){if(_0x4b13b9[_0x9711('0x10')][_0x9711('0x11')]===0x1f4){logger[_0x9711('0x10')](_0x9711('0xc'),_0x4c75dd,_0x4b13b9[_0x9711('0x10')][_0x9711('0x12')]);return _0x132b5b(_0x4b13b9[_0x9711('0x10')]['message']);}logger['error'](_0x9711('0xc'),_0x4c75dd,_0x4b13b9[_0x9711('0x10')][_0x9711('0x12')]);return _0x3a5f79(_0x4b13b9[_0x9711('0x10')][_0x9711('0x12')]);}else{logger['info'](_0x9711('0xc'),_0x4c75dd,'request\x20sent');_0x3a5f79(_0x4b13b9[_0x9711('0x13')][_0x9711('0x12')]);}})[_0x9711('0x14')](function(_0x640894){logger[_0x9711('0x10')]('Campaign,\x20%s,\x20%s',_0x4c75dd,_0x640894);_0x132b5b(_0x640894);});});}exports['GetCampaign']=function(_0x2ef16c){var _0x3615c9=this;return new Promise(function(_0x210f8b,_0x4629e2){return db[_0x9711('0x15')]['findAll']({'raw':_0x2ef16c[_0x9711('0x16')]?_0x2ef16c[_0x9711('0x16')][_0x9711('0x17')]===undefined?!![]:![]:!![],'where':_0x2ef16c[_0x9711('0x16')]?_0x2ef16c['options']['where']||null:null,'attributes':_0x2ef16c['options']?_0x2ef16c[_0x9711('0x16')][_0x9711('0x18')]||null:null,'limit':_0x2ef16c[_0x9711('0x16')]?_0x2ef16c['options'][_0x9711('0x19')]||null:null,'include':_0x2ef16c[_0x9711('0x16')]?_0x2ef16c['options'][_0x9711('0x1a')]?_['map'](_0x2ef16c[_0x9711('0x16')]['include'],function(_0x3023cf){return{'model':db[_0x3023cf[_0x9711('0x1b')]],'as':_0x3023cf['as'],'attributes':_0x3023cf['attributes'],'include':_0x3023cf[_0x9711('0x1a')]?_[_0x9711('0x1c')](_0x3023cf[_0x9711('0x1a')],function(_0x2db327){return{'model':db[_0x2db327['model']],'as':_0x2db327['as'],'attributes':_0x2db327['attributes'],'include':_0x2db327[_0x9711('0x1a')]?_[_0x9711('0x1c')](_0x2db327['include'],function(_0x4d16e5){return{'model':db[_0x4d16e5['model']],'as':_0x4d16e5['as'],'attributes':_0x4d16e5['attributes']};}):[]};}):[]};}):[]:[]})[_0x9711('0xa')](function(_0x270da2){logger['info'](_0x9711('0x1d'),_0x2ef16c);logger['debug'](_0x9711('0x1d'),_0x2ef16c,JSON[_0x9711('0xf')](_0x270da2));_0x210f8b(_0x270da2);})['catch'](function(_0x3fc5bb){logger[_0x9711('0x10')](_0x9711('0x1d'),_0x3fc5bb[_0x9711('0x12')],_0x2ef16c);_0x4629e2(_0x3615c9['error'](0x1f4,_0x3fc5bb[_0x9711('0x12')]));});});};
\ No newline at end of file
+var _0x1978=['findAll','options','raw','where','attributes','include','map','model','GetCampaign','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x1978,0x174));var _0x8197=function(_0x5341f7,_0x128ebc){_0x5341f7=_0x5341f7-0x0;var _0x4a1dcd=_0x1978[_0x5341f7];return _0x4a1dcd;};'use strict';var _=require('lodash');var util=require(_0x8197('0x0'));var moment=require(_0x8197('0x1'));var BPromise=require(_0x8197('0x2'));var rs=require(_0x8197('0x3'));var fs=require('fs');var Redis=require(_0x8197('0x4'));var db=require(_0x8197('0x5'))['db'];var utils=require(_0x8197('0x6'));var logger=require(_0x8197('0x7'))(_0x8197('0x8'));var config=require(_0x8197('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8197('0xa')][_0x8197('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x117bf1,_0x374969,_0x3e8799){return new BPromise(function(_0x1bc265,_0x108379){return client[_0x8197('0xc')](_0x117bf1,_0x3e8799)[_0x8197('0xd')](function(_0x3fd8ee){logger[_0x8197('0xe')](_0x8197('0xf'),_0x374969,_0x8197('0x10'));logger[_0x8197('0x11')](_0x8197('0x12'),_0x374969,'request\x20sent',JSON[_0x8197('0x13')](_0x3fd8ee));if(_0x3fd8ee[_0x8197('0x14')]){if(_0x3fd8ee[_0x8197('0x14')][_0x8197('0x15')]===0x1f4){logger[_0x8197('0x14')](_0x8197('0xf'),_0x374969,_0x3fd8ee['error']['message']);return _0x108379(_0x3fd8ee[_0x8197('0x14')][_0x8197('0x16')]);}logger[_0x8197('0x14')](_0x8197('0xf'),_0x374969,_0x3fd8ee[_0x8197('0x14')]['message']);return _0x1bc265(_0x3fd8ee[_0x8197('0x14')]['message']);}else{logger[_0x8197('0xe')]('Campaign,\x20%s,\x20%s',_0x374969,_0x8197('0x10'));_0x1bc265(_0x3fd8ee['result'][_0x8197('0x16')]);}})[_0x8197('0x17')](function(_0x56fd37){logger[_0x8197('0x14')]('Campaign,\x20%s,\x20%s',_0x374969,_0x56fd37);_0x108379(_0x56fd37);});});}exports['GetCampaign']=function(_0x4695a5){var _0x48bce1=this;return new Promise(function(_0x170d65,_0x34292d){return db['Campaign'][_0x8197('0x18')]({'raw':_0x4695a5['options']?_0x4695a5[_0x8197('0x19')][_0x8197('0x1a')]===undefined?!![]:![]:!![],'where':_0x4695a5[_0x8197('0x19')]?_0x4695a5[_0x8197('0x19')][_0x8197('0x1b')]||null:null,'attributes':_0x4695a5[_0x8197('0x19')]?_0x4695a5['options'][_0x8197('0x1c')]||null:null,'limit':_0x4695a5[_0x8197('0x19')]?_0x4695a5[_0x8197('0x19')]['limit']||null:null,'include':_0x4695a5['options']?_0x4695a5[_0x8197('0x19')][_0x8197('0x1d')]?_[_0x8197('0x1e')](_0x4695a5[_0x8197('0x19')][_0x8197('0x1d')],function(_0x11abb4){return{'model':db[_0x11abb4['model']],'as':_0x11abb4['as'],'attributes':_0x11abb4[_0x8197('0x1c')],'include':_0x11abb4[_0x8197('0x1d')]?_[_0x8197('0x1e')](_0x11abb4['include'],function(_0x342f59){return{'model':db[_0x342f59[_0x8197('0x1f')]],'as':_0x342f59['as'],'attributes':_0x342f59[_0x8197('0x1c')],'include':_0x342f59[_0x8197('0x1d')]?_[_0x8197('0x1e')](_0x342f59[_0x8197('0x1d')],function(_0x461d89){return{'model':db[_0x461d89['model']],'as':_0x461d89['as'],'attributes':_0x461d89[_0x8197('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8197('0xd')](function(_0x1344bf){logger[_0x8197('0xe')](_0x8197('0x20'),_0x4695a5);logger[_0x8197('0x11')]('GetCampaign',_0x4695a5,JSON[_0x8197('0x13')](_0x1344bf));_0x170d65(_0x1344bf);})[_0x8197('0x17')](function(_0x485692){logger[_0x8197('0x14')](_0x8197('0x20'),_0x485692['message'],_0x4695a5);_0x34292d(_0x48bce1[_0x8197('0x14')](0x1f4,_0x485692[_0x8197('0x16')]));});});};
\ No newline at end of file
index f518b35..8981855 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c40=['getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','/:id/hopper_black','getHopperBlacks','/:id/lists','create','post','clone','addLists','/:id/blacklists','addBlackLists','put','update','delete','destroy','removeLists','removeBlackLists','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','/:id','isAuthenticated','show','/:id/hoppers'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0x3c40,0xf4));var _0x03c4=function(_0x1a675c,_0x4648bc){_0x1a675c=_0x1a675c-0x0;var _0x4ee1dc=_0x3c40[_0x1a675c];return _0x4ee1dc;};'use strict';var multer=require(_0x03c4('0x0'));var util=require(_0x03c4('0x1'));var path=require('path');var timeout=require(_0x03c4('0x2'));var express=require(_0x03c4('0x3'));var router=express[_0x03c4('0x4')]();var fs_extra=require(_0x03c4('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x03c4('0x6'));var config=require('../../config/environment');var controller=require('./campaign.controller');router[_0x03c4('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x03c4('0x7')](_0x03c4('0x8'),auth[_0x03c4('0x9')](),controller[_0x03c4('0xa')]);router[_0x03c4('0x7')](_0x03c4('0xb'),auth[_0x03c4('0x9')](),controller[_0x03c4('0xc')]);router['get'](_0x03c4('0xd'),auth[_0x03c4('0x9')](),controller[_0x03c4('0xe')]);router[_0x03c4('0x7')](_0x03c4('0xf'),auth[_0x03c4('0x9')](),controller['getHopperFinals']);router[_0x03c4('0x7')](_0x03c4('0x10'),auth['isAuthenticated'](),controller[_0x03c4('0x11')]);router[_0x03c4('0x7')](_0x03c4('0x12'),auth['isAuthenticated'](),controller['getLists']);router[_0x03c4('0x7')]('/:id/blacklists',auth[_0x03c4('0x9')](),controller['getBlackLists']);router['post']('/',auth['isAuthenticated'](),controller[_0x03c4('0x13')]);router[_0x03c4('0x14')]('/:id/clone',auth[_0x03c4('0x9')](),controller[_0x03c4('0x15')]);router[_0x03c4('0x14')](_0x03c4('0x12'),auth[_0x03c4('0x9')](),controller[_0x03c4('0x16')]);router[_0x03c4('0x14')](_0x03c4('0x17'),auth[_0x03c4('0x9')](),controller[_0x03c4('0x18')]);router[_0x03c4('0x19')]('/:id',auth[_0x03c4('0x9')](),controller[_0x03c4('0x1a')]);router[_0x03c4('0x1b')](_0x03c4('0x8'),auth['isAuthenticated'](),controller[_0x03c4('0x1c')]);router[_0x03c4('0x1b')](_0x03c4('0x12'),auth['isAuthenticated'](),controller[_0x03c4('0x1d')]);router[_0x03c4('0x1b')](_0x03c4('0x17'),auth[_0x03c4('0x9')](),controller[_0x03c4('0x1e')]);module[_0x03c4('0x1f')]=router;
\ No newline at end of file
+var _0xa952=['delete','removeLists','removeBlackLists','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','getHoppers','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addLists'];(function(_0x2f325b,_0x5ac9bc){var _0x33f2e4=function(_0x45c453){while(--_0x45c453){_0x2f325b['push'](_0x2f325b['shift']());}};_0x33f2e4(++_0x5ac9bc);}(_0xa952,0x7c));var _0x2a95=function(_0xee741b,_0x10cf16){_0xee741b=_0xee741b-0x0;var _0x9ce0a2=_0xa952[_0xee741b];return _0x9ce0a2;};'use strict';var multer=require(_0x2a95('0x0'));var util=require(_0x2a95('0x1'));var path=require(_0x2a95('0x2'));var timeout=require(_0x2a95('0x3'));var express=require('express');var router=express[_0x2a95('0x4')]();var fs_extra=require(_0x2a95('0x5'));var auth=require(_0x2a95('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x2a95('0x7'));var controller=require(_0x2a95('0x8'));router[_0x2a95('0x9')]('/',auth[_0x2a95('0xa')](),controller[_0x2a95('0xb')]);router[_0x2a95('0x9')](_0x2a95('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x2a95('0x9')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x2a95('0xd')]);router[_0x2a95('0x9')]('/:id/hopper_histories',auth[_0x2a95('0xa')](),controller['getHopperHistories']);router[_0x2a95('0x9')](_0x2a95('0xe'),auth[_0x2a95('0xa')](),controller[_0x2a95('0xf')]);router[_0x2a95('0x9')](_0x2a95('0x10'),auth[_0x2a95('0xa')](),controller[_0x2a95('0x11')]);router[_0x2a95('0x9')](_0x2a95('0x12'),auth[_0x2a95('0xa')](),controller['getLists']);router[_0x2a95('0x9')](_0x2a95('0x13'),auth[_0x2a95('0xa')](),controller[_0x2a95('0x14')]);router[_0x2a95('0x15')]('/',auth[_0x2a95('0xa')](),controller[_0x2a95('0x16')]);router[_0x2a95('0x15')](_0x2a95('0x17'),auth['isAuthenticated'](),controller[_0x2a95('0x18')]);router[_0x2a95('0x15')](_0x2a95('0x12'),auth['isAuthenticated'](),controller[_0x2a95('0x19')]);router['post']('/:id/blacklists',auth[_0x2a95('0xa')](),controller['addBlackLists']);router['put'](_0x2a95('0xc'),auth[_0x2a95('0xa')](),controller['update']);router[_0x2a95('0x1a')]('/:id',auth[_0x2a95('0xa')](),controller['destroy']);router['delete']('/:id/lists',auth[_0x2a95('0xa')](),controller[_0x2a95('0x1b')]);router[_0x2a95('0x1a')](_0x2a95('0x13'),auth['isAuthenticated'](),controller[_0x2a95('0x1c')]);module[_0x2a95('0x1d')]=router;
\ No newline at end of file
index 6c0d03c..a920916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x516f=['sequelize','exports','STRING','VIRTUAL','getDataValue'];(function(_0x3074f3,_0x4f2c03){var _0x53f112=function(_0x4a17af){while(--_0x4a17af){_0x3074f3['push'](_0x3074f3['shift']());}};_0x53f112(++_0x4f2c03);}(_0x516f,0xc8));var _0xf516=function(_0x314a8e,_0x59ffd4){_0x314a8e=_0x314a8e-0x0;var _0x3fe3ce=_0x516f[_0x314a8e];return _0x3fe3ce;};'use strict';var Sequelize=require(_0xf516('0x0'));module[_0xf516('0x1')]={'key':{'type':Sequelize[_0xf516('0x2')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0xf516('0x3')],'get':function(){return this[_0xf516('0x4')]('key');}}};
\ No newline at end of file
+var _0x7d1e=['key','TEXT','VIRTUAL','getDataValue'];(function(_0x135cd7,_0x6bdc01){var _0x300a1d=function(_0x4f292e){while(--_0x4f292e){_0x135cd7['push'](_0x135cd7['shift']());}};_0x300a1d(++_0x6bdc01);}(_0x7d1e,0x1dd));var _0xe7d1=function(_0x49d8b3,_0xeac856){_0x49d8b3=_0x49d8b3-0x0;var _0x2c124e=_0x7d1e[_0x49d8b3];return _0x2c124e;};'use strict';var Sequelize=require('sequelize');module['exports']={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0xe7d1('0x0')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0xe7d1('0x1')],'get':function(){return this[_0xe7d1('0x2')](_0xe7d1('0x3'));}}};
\ No newline at end of file
index 1f57897..bf3096b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3999=['end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','destroy','then','get','CannedAnswers','UserProfileResource','stack','name','index','map','CannedAnswer','rawAttributes','type','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','where','filter','merge','options','includeAll','include','rows','catch','show','params','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','error','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','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status'];(function(_0x1ad926,_0x3e1fed){var _0x1b81dc=function(_0x506f83){while(--_0x506f83){_0x1ad926['push'](_0x1ad926['shift']());}};_0x1b81dc(++_0x3e1fed);}(_0x3999,0x91));var _0x9399=function(_0x4c6eab,_0x48a445){_0x4c6eab=_0x4c6eab-0x0;var _0x382d77=_0x3999[_0x4c6eab];return _0x382d77;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9399('0x0'));var zipdir=require(_0x9399('0x1'));var jsonpatch=require(_0x9399('0x2'));var rp=require(_0x9399('0x3'));var moment=require('moment');var BPromise=require(_0x9399('0x4'));var Mustache=require(_0x9399('0x5'));var util=require(_0x9399('0x6'));var path=require(_0x9399('0x7'));var sox=require(_0x9399('0x8'));var csv=require(_0x9399('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9399('0xa'));var _=require(_0x9399('0xb'));var squel=require(_0x9399('0xc'));var crypto=require(_0x9399('0xd'));var jsforce=require(_0x9399('0xe'));var deskjs=require(_0x9399('0xf'));var toCsv=require(_0x9399('0x9'));var querystring=require(_0x9399('0x10'));var Papa=require(_0x9399('0x11'));var Redis=require(_0x9399('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x9399('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9399('0x14'))(_0x9399('0x15'));var utils=require(_0x9399('0x16'));var config=require(_0x9399('0x17'));var licenseUtil=require(_0x9399('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x91ff40,_0x441d81){_0x441d81=_0x441d81||0xcc;return function(_0x86fd80){if(_0x86fd80){return _0x91ff40[_0x9399('0x19')](_0x441d81);}return _0x91ff40[_0x9399('0x1a')](_0x441d81)[_0x9399('0x1b')]();};}function respondWithResult(_0x222f0e,_0x1cf9aa){_0x1cf9aa=_0x1cf9aa||0xc8;return function(_0x3b1c63){if(_0x3b1c63){return _0x222f0e[_0x9399('0x1a')](_0x1cf9aa)[_0x9399('0x1c')](_0x3b1c63);}};}function respondWithFilteredResult(_0x380b94,_0xee5861){return function(_0x13de1b){if(_0x13de1b){var _0x586860=typeof _0xee5861['offset']===_0x9399('0x1d')&&typeof _0xee5861[_0x9399('0x1e')]==='undefined';var _0x4c6e30=_0x13de1b[_0x9399('0x1f')];var _0x1305e7=_0x586860?0x0:_0xee5861['offset'];var _0x2f7df2=_0x586860?_0x13de1b[_0x9399('0x1f')]:_0xee5861[_0x9399('0x20')]+_0xee5861['limit'];var _0x54a73f;if(_0x2f7df2>=_0x4c6e30){_0x2f7df2=_0x4c6e30;_0x54a73f=0xc8;}else{_0x54a73f=0xce;}_0x380b94[_0x9399('0x1a')](_0x54a73f);return _0x380b94[_0x9399('0x21')](_0x9399('0x22'),_0x1305e7+'-'+_0x2f7df2+'/'+_0x4c6e30)[_0x9399('0x1c')](_0x13de1b);}return null;};}function patchUpdates(_0x226b0c){return function(_0x440696){try{jsonpatch[_0x9399('0x23')](_0x440696,_0x226b0c,!![]);}catch(_0x17bed4){return BPromise['reject'](_0x17bed4);}return _0x440696[_0x9399('0x24')]();};}function saveUpdates(_0x5bd035,_0x20907d){return function(_0x259d9a){if(_0x259d9a){return _0x259d9a[_0x9399('0x25')](_0x5bd035)['then'](function(_0x2e39e6){return _0x2e39e6;});}return null;};}function removeEntity(_0x585a0e,_0x4a510e){return function(_0x14d690){if(_0x14d690){return _0x14d690[_0x9399('0x26')]()[_0x9399('0x27')](function(){var _0x347fe4=_0x14d690[_0x9399('0x28')]({'plain':!![]});var _0x3418e1=_0x9399('0x29');return db[_0x9399('0x2a')][_0x9399('0x26')]({'where':{'type':_0x3418e1,'resourceId':_0x347fe4['id']}})['then'](function(){return _0x14d690;});})[_0x9399('0x27')](function(){_0x585a0e[_0x9399('0x1a')](0xcc)[_0x9399('0x1b')]();});}};}function handleEntityNotFound(_0x11c81d,_0x4a2be0){return function(_0x349459){if(!_0x349459){_0x11c81d['sendStatus'](0x194);}return _0x349459;};}function handleError(_0x4847d7,_0x26c898){_0x26c898=_0x26c898||0x1f4;return function(_0x1b5aa7){logger['error'](_0x1b5aa7[_0x9399('0x2b')]);if(_0x1b5aa7['name']){delete _0x1b5aa7[_0x9399('0x2c')];}_0x4847d7[_0x9399('0x1a')](_0x26c898)['send'](_0x1b5aa7);};}exports[_0x9399('0x2d')]=function(_0x5ed210,_0x4e1f20){var _0x337773={},_0x583e6f={},_0x52e7f5={'count':0x0,'rows':[]};var _0x1a64f4=_[_0x9399('0x2e')](db[_0x9399('0x2f')][_0x9399('0x30')],function(_0x27e738){return{'name':_0x27e738['fieldName'],'type':_0x27e738[_0x9399('0x31')]['key']};});_0x583e6f[_0x9399('0x32')]=_[_0x9399('0x2e')](_0x1a64f4,_0x9399('0x2c'));_0x583e6f['query']=_[_0x9399('0x33')](_0x5ed210[_0x9399('0x34')]);_0x583e6f[_0x9399('0x35')]=_[_0x9399('0x36')](_0x583e6f['model'],_0x583e6f['query']);_0x337773[_0x9399('0x37')]=_['intersection'](_0x583e6f[_0x9399('0x32')],qs[_0x9399('0x38')](_0x5ed210[_0x9399('0x34')][_0x9399('0x38')]));_0x337773['attributes']=_0x337773[_0x9399('0x37')][_0x9399('0x39')]?_0x337773[_0x9399('0x37')]:_0x583e6f['model'];if(!_0x5ed210[_0x9399('0x34')]['hasOwnProperty'](_0x9399('0x3a'))){_0x337773['limit']=qs[_0x9399('0x1e')](_0x5ed210['query']['limit']);_0x337773['offset']=qs[_0x9399('0x20')](_0x5ed210[_0x9399('0x34')][_0x9399('0x20')]);}_0x337773[_0x9399('0x3b')]=qs['sort'](_0x5ed210[_0x9399('0x34')]['sort']);_0x337773[_0x9399('0x3c')]=qs[_0x9399('0x35')](_['pick'](_0x5ed210[_0x9399('0x34')],_0x583e6f[_0x9399('0x35')]),_0x1a64f4);if(_0x5ed210[_0x9399('0x34')][_0x9399('0x3d')]){_0x337773[_0x9399('0x3c')]=_[_0x9399('0x3e')](_0x337773[_0x9399('0x3c')],{'$or':[{'key':{'$like':'%'+_0x5ed210[_0x9399('0x34')][_0x9399('0x3d')]+'%'}},{'value':{'$like':'%'+_0x5ed210[_0x9399('0x34')]['filter']+'%'}}]});}_0x337773=_[_0x9399('0x3e')]({},_0x337773,_0x5ed210[_0x9399('0x3f')]);var _0x45dad2={'where':_0x337773[_0x9399('0x3c')]};return db['CannedAnswer'][_0x9399('0x1f')](_0x45dad2)['then'](function(_0x3e2086){_0x52e7f5['count']=_0x3e2086;if(_0x5ed210[_0x9399('0x34')][_0x9399('0x40')]){_0x337773[_0x9399('0x41')]=[{'all':!![]}];}return db[_0x9399('0x2f')]['findAll'](_0x337773);})[_0x9399('0x27')](function(_0x4b87a1){_0x52e7f5[_0x9399('0x42')]=_0x4b87a1;return _0x52e7f5;})[_0x9399('0x27')](respondWithFilteredResult(_0x4e1f20,_0x337773))[_0x9399('0x43')](handleError(_0x4e1f20,null));};exports[_0x9399('0x44')]=function(_0x38bf48,_0x4e90f6){var _0x41df43={'raw':!![],'where':{'id':_0x38bf48[_0x9399('0x45')]['id']}},_0x524c65={};_0x524c65[_0x9399('0x32')]=_[_0x9399('0x33')](db['CannedAnswer'][_0x9399('0x30')]);_0x524c65[_0x9399('0x34')]=_[_0x9399('0x33')](_0x38bf48['query']);_0x524c65['filters']=_['intersection'](_0x524c65[_0x9399('0x32')],_0x524c65['query']);_0x41df43[_0x9399('0x37')]=_[_0x9399('0x36')](_0x524c65[_0x9399('0x32')],qs[_0x9399('0x38')](_0x38bf48['query']['fields']));_0x41df43[_0x9399('0x37')]=_0x41df43[_0x9399('0x37')][_0x9399('0x39')]?_0x41df43[_0x9399('0x37')]:_0x524c65[_0x9399('0x32')];if(_0x38bf48[_0x9399('0x34')]['includeAll']){_0x41df43[_0x9399('0x41')]=[{'all':!![]}];}_0x41df43=_[_0x9399('0x3e')]({},_0x41df43,_0x38bf48['options']);return db[_0x9399('0x2f')][_0x9399('0x46')](_0x41df43)['then'](handleEntityNotFound(_0x4e90f6,null))[_0x9399('0x27')](respondWithResult(_0x4e90f6,null))[_0x9399('0x43')](handleError(_0x4e90f6,null));};exports[_0x9399('0x25')]=function(_0x2e7c80,_0x34a342){if(_0x2e7c80[_0x9399('0x47')]['id']){delete _0x2e7c80[_0x9399('0x47')]['id'];}return db['CannedAnswer']['find']({'where':{'id':_0x2e7c80[_0x9399('0x45')]['id']}})[_0x9399('0x27')](handleEntityNotFound(_0x34a342,null))[_0x9399('0x27')](saveUpdates(_0x2e7c80['body'],null))['then'](respondWithResult(_0x34a342,null))[_0x9399('0x43')](handleError(_0x34a342,null));};exports[_0x9399('0x26')]=function(_0x382c4c,_0x373411){return db[_0x9399('0x2f')][_0x9399('0x46')]({'where':{'id':_0x382c4c[_0x9399('0x45')]['id']}})[_0x9399('0x27')](handleEntityNotFound(_0x373411,null))[_0x9399('0x27')](removeEntity(_0x373411,null))[_0x9399('0x43')](handleError(_0x373411,null));};exports[_0x9399('0x48')]=function(_0x4c5389,_0x149dd7){var _0x2f3133={'key':_0x4c5389[_0x9399('0x47')]['key']};if(_0x4c5389[_0x9399('0x47')][_0x9399('0x49')]){_0x2f3133[_0x9399('0x49')]=_0x4c5389['body'][_0x9399('0x49')];}else if(_0x4c5389['body'][_0x9399('0x4a')]){_0x2f3133[_0x9399('0x4a')]=_0x4c5389[_0x9399('0x47')][_0x9399('0x4a')];}else if(_0x4c5389[_0x9399('0x47')][_0x9399('0x4b')]){_0x2f3133['OpenchannelAccountId']=_0x4c5389['body']['OpenchannelAccountId'];}else if(_0x4c5389[_0x9399('0x47')]['ChatWebsiteId']){_0x2f3133['ChatWebsiteId']=_0x4c5389[_0x9399('0x47')][_0x9399('0x4c')];}return db['CannedAnswer'][_0x9399('0x46')]({'where':_0x2f3133})['then'](function(_0x54327b){if(_0x54327b){throw new db[(_0x9399('0x4d'))][(_0x9399('0x4e'))](_0x9399('0x4f'));}return db[_0x9399('0x2f')][_0x9399('0x48')](_0x4c5389['body']);})[_0x9399('0x27')](function(_0x5e9c85){var _0x228cba=_0x4c5389[_0x9399('0x50')][_0x9399('0x28')]({'plain':!![]});if(!_0x228cba)throw new Error(_0x9399('0x51'));if(_0x228cba[_0x9399('0x52')]===_0x9399('0x50')){var _0x7c12a2=_0x5e9c85['get']({'plain':!![]});return db[_0x9399('0x53')][_0x9399('0x46')]({'where':{'name':_0x9399('0x29'),'userProfileId':_0x228cba['userProfileId']},'raw':!![]})[_0x9399('0x27')](function(_0x218977){if(_0x218977&&_0x218977['autoAssociation']===0x0){return db[_0x9399('0x2a')][_0x9399('0x48')]({'name':_0x7c12a2[_0x9399('0x2c')],'resourceId':_0x7c12a2['id'],'type':_0x218977[_0x9399('0x2c')],'sectionId':_0x218977['id']},{})[_0x9399('0x27')](function(){return _0x5e9c85;});}else{return _0x5e9c85;}})[_0x9399('0x43')](function(_0x5c1c01){logger[_0x9399('0x54')](_0x9399('0x55'),_0x5c1c01);throw _0x5c1c01;});}return _0x5e9c85;})[_0x9399('0x27')](respondWithResult(_0x149dd7,0xc9))[_0x9399('0x43')](handleError(_0x149dd7,null));};
\ No newline at end of file
+var _0x3b91=['crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','then','destroy','get','CannedAnswers','end','error','stack','name','send','index','CannedAnswer','rawAttributes','fieldName','type','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','filter','options','includeAll','include','rows','catch','show','params','find','body','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','ValidationError','The\x20inserted\x20key\x20already\x20exists.','create','user','role','userProfileId','eml-format','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x39714b,_0x5e0b0e){var _0x45ed60=function(_0x3ce5c8){while(--_0x3ce5c8){_0x39714b['push'](_0x39714b['shift']());}};_0x45ed60(++_0x5e0b0e);}(_0x3b91,0xf9));var _0x13b9=function(_0x36dbd9,_0x5b8ef8){_0x36dbd9=_0x36dbd9-0x0;var _0x26b381=_0x3b91[_0x36dbd9];return _0x26b381;};'use strict';var emlformat=require(_0x13b9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x13b9('0x1'));var jsonpatch=require(_0x13b9('0x2'));var rp=require('request-promise');var moment=require(_0x13b9('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x13b9('0x4'));var util=require('util');var path=require(_0x13b9('0x5'));var sox=require(_0x13b9('0x6'));var csv=require(_0x13b9('0x7'));var ejs=require(_0x13b9('0x8'));var fs=require('fs');var fs_extra=require(_0x13b9('0x9'));var _=require(_0x13b9('0xa'));var squel=require(_0x13b9('0xb'));var crypto=require(_0x13b9('0xc'));var jsforce=require(_0x13b9('0xd'));var deskjs=require(_0x13b9('0xe'));var toCsv=require(_0x13b9('0x7'));var querystring=require('querystring');var Papa=require(_0x13b9('0xf'));var Redis=require(_0x13b9('0x10'));var authService=require(_0x13b9('0x11'));var qs=require(_0x13b9('0x12'));var as=require(_0x13b9('0x13'));var hardwareService=require(_0x13b9('0x14'));var logger=require('../../config/logger')(_0x13b9('0x15'));var utils=require('../../config/utils');var config=require(_0x13b9('0x16'));var licenseUtil=require(_0x13b9('0x17'));var db=require(_0x13b9('0x18'))['db'];function respondWithStatusCode(_0x17872c,_0x39fcaf){_0x39fcaf=_0x39fcaf||0xcc;return function(_0x4b9b66){if(_0x4b9b66){return _0x17872c[_0x13b9('0x19')](_0x39fcaf);}return _0x17872c['status'](_0x39fcaf)['end']();};}function respondWithResult(_0x1ca4f8,_0x4e8429){_0x4e8429=_0x4e8429||0xc8;return function(_0x1942a3){if(_0x1942a3){return _0x1ca4f8[_0x13b9('0x1a')](_0x4e8429)['json'](_0x1942a3);}};}function respondWithFilteredResult(_0x17033d,_0x5209dd){return function(_0x531b0d){if(_0x531b0d){var _0x482365=typeof _0x5209dd[_0x13b9('0x1b')]==='undefined'&&typeof _0x5209dd['limit']===_0x13b9('0x1c');var _0x5d419b=_0x531b0d[_0x13b9('0x1d')];var _0x3201e0=_0x482365?0x0:_0x5209dd[_0x13b9('0x1b')];var _0x467201=_0x482365?_0x531b0d[_0x13b9('0x1d')]:_0x5209dd['offset']+_0x5209dd[_0x13b9('0x1e')];var _0x490cde;if(_0x467201>=_0x5d419b){_0x467201=_0x5d419b;_0x490cde=0xc8;}else{_0x490cde=0xce;}_0x17033d[_0x13b9('0x1a')](_0x490cde);return _0x17033d[_0x13b9('0x1f')](_0x13b9('0x20'),_0x3201e0+'-'+_0x467201+'/'+_0x5d419b)[_0x13b9('0x21')](_0x531b0d);}return null;};}function patchUpdates(_0x5b4064){return function(_0x3daa98){try{jsonpatch['apply'](_0x3daa98,_0x5b4064,!![]);}catch(_0x3a90eb){return BPromise[_0x13b9('0x22')](_0x3a90eb);}return _0x3daa98[_0x13b9('0x23')]();};}function saveUpdates(_0x2d4343,_0x47a80b){return function(_0x5eae36){if(_0x5eae36){return _0x5eae36[_0x13b9('0x24')](_0x2d4343)[_0x13b9('0x25')](function(_0x57de8b){return _0x57de8b;});}return null;};}function removeEntity(_0xb5b492,_0x21fb22){return function(_0x4ee3dc){if(_0x4ee3dc){return _0x4ee3dc[_0x13b9('0x26')]()['then'](function(){var _0x396cc7=_0x4ee3dc[_0x13b9('0x27')]({'plain':!![]});var _0x4f17ed=_0x13b9('0x28');return db['UserProfileResource'][_0x13b9('0x26')]({'where':{'type':_0x4f17ed,'resourceId':_0x396cc7['id']}})[_0x13b9('0x25')](function(){return _0x4ee3dc;});})['then'](function(){_0xb5b492[_0x13b9('0x1a')](0xcc)[_0x13b9('0x29')]();});}};}function handleEntityNotFound(_0x23d87e,_0x3d9ff7){return function(_0x4834a3){if(!_0x4834a3){_0x23d87e[_0x13b9('0x19')](0x194);}return _0x4834a3;};}function handleError(_0x2410f9,_0x34a47a){_0x34a47a=_0x34a47a||0x1f4;return function(_0x3d8965){logger[_0x13b9('0x2a')](_0x3d8965[_0x13b9('0x2b')]);if(_0x3d8965[_0x13b9('0x2c')]){delete _0x3d8965['name'];}_0x2410f9[_0x13b9('0x1a')](_0x34a47a)[_0x13b9('0x2d')](_0x3d8965);};}exports[_0x13b9('0x2e')]=function(_0x1e8258,_0x63874e){var _0x2d6f1f={},_0x3b732b={},_0x41ce49={'count':0x0,'rows':[]};var _0x5dd58b=_['map'](db[_0x13b9('0x2f')][_0x13b9('0x30')],function(_0x44b80c){return{'name':_0x44b80c[_0x13b9('0x31')],'type':_0x44b80c[_0x13b9('0x32')]['key']};});_0x3b732b['model']=_[_0x13b9('0x33')](_0x5dd58b,_0x13b9('0x2c'));_0x3b732b[_0x13b9('0x34')]=_[_0x13b9('0x35')](_0x1e8258[_0x13b9('0x34')]);_0x3b732b[_0x13b9('0x36')]=_[_0x13b9('0x37')](_0x3b732b[_0x13b9('0x38')],_0x3b732b[_0x13b9('0x34')]);_0x2d6f1f[_0x13b9('0x39')]=_[_0x13b9('0x37')](_0x3b732b[_0x13b9('0x38')],qs['fields'](_0x1e8258[_0x13b9('0x34')][_0x13b9('0x3a')]));_0x2d6f1f[_0x13b9('0x39')]=_0x2d6f1f[_0x13b9('0x39')][_0x13b9('0x3b')]?_0x2d6f1f[_0x13b9('0x39')]:_0x3b732b[_0x13b9('0x38')];if(!_0x1e8258[_0x13b9('0x34')][_0x13b9('0x3c')]('nolimit')){_0x2d6f1f[_0x13b9('0x1e')]=qs[_0x13b9('0x1e')](_0x1e8258[_0x13b9('0x34')][_0x13b9('0x1e')]);_0x2d6f1f[_0x13b9('0x1b')]=qs[_0x13b9('0x1b')](_0x1e8258[_0x13b9('0x34')]['offset']);}_0x2d6f1f[_0x13b9('0x3d')]=qs[_0x13b9('0x3e')](_0x1e8258[_0x13b9('0x34')][_0x13b9('0x3e')]);_0x2d6f1f[_0x13b9('0x3f')]=qs[_0x13b9('0x36')](_[_0x13b9('0x40')](_0x1e8258[_0x13b9('0x34')],_0x3b732b[_0x13b9('0x36')]),_0x5dd58b);if(_0x1e8258['query']['filter']){_0x2d6f1f['where']=_[_0x13b9('0x41')](_0x2d6f1f[_0x13b9('0x3f')],{'$or':[{'key':{'$like':'%'+_0x1e8258[_0x13b9('0x34')][_0x13b9('0x42')]+'%'}},{'value':{'$like':'%'+_0x1e8258['query'][_0x13b9('0x42')]+'%'}}]});}_0x2d6f1f=_['merge']({},_0x2d6f1f,_0x1e8258[_0x13b9('0x43')]);var _0x11015d={'where':_0x2d6f1f[_0x13b9('0x3f')]};return db[_0x13b9('0x2f')][_0x13b9('0x1d')](_0x11015d)['then'](function(_0x4b1a22){_0x41ce49[_0x13b9('0x1d')]=_0x4b1a22;if(_0x1e8258['query'][_0x13b9('0x44')]){_0x2d6f1f[_0x13b9('0x45')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x2d6f1f);})[_0x13b9('0x25')](function(_0x5d78c5){_0x41ce49[_0x13b9('0x46')]=_0x5d78c5;return _0x41ce49;})[_0x13b9('0x25')](respondWithFilteredResult(_0x63874e,_0x2d6f1f))[_0x13b9('0x47')](handleError(_0x63874e,null));};exports[_0x13b9('0x48')]=function(_0x47ff9d,_0x3505f4){var _0x1c6db4={'raw':!![],'where':{'id':_0x47ff9d[_0x13b9('0x49')]['id']}},_0x255f30={};_0x255f30['model']=_[_0x13b9('0x35')](db[_0x13b9('0x2f')][_0x13b9('0x30')]);_0x255f30[_0x13b9('0x34')]=_[_0x13b9('0x35')](_0x47ff9d['query']);_0x255f30[_0x13b9('0x36')]=_[_0x13b9('0x37')](_0x255f30[_0x13b9('0x38')],_0x255f30[_0x13b9('0x34')]);_0x1c6db4[_0x13b9('0x39')]=_['intersection'](_0x255f30['model'],qs[_0x13b9('0x3a')](_0x47ff9d[_0x13b9('0x34')][_0x13b9('0x3a')]));_0x1c6db4[_0x13b9('0x39')]=_0x1c6db4['attributes'][_0x13b9('0x3b')]?_0x1c6db4[_0x13b9('0x39')]:_0x255f30[_0x13b9('0x38')];if(_0x47ff9d[_0x13b9('0x34')][_0x13b9('0x44')]){_0x1c6db4[_0x13b9('0x45')]=[{'all':!![]}];}_0x1c6db4=_[_0x13b9('0x41')]({},_0x1c6db4,_0x47ff9d[_0x13b9('0x43')]);return db[_0x13b9('0x2f')][_0x13b9('0x4a')](_0x1c6db4)[_0x13b9('0x25')](handleEntityNotFound(_0x3505f4,null))[_0x13b9('0x25')](respondWithResult(_0x3505f4,null))[_0x13b9('0x47')](handleError(_0x3505f4,null));};exports[_0x13b9('0x24')]=function(_0x4f5af4,_0x1a6e19){if(_0x4f5af4['body']['id']){delete _0x4f5af4[_0x13b9('0x4b')]['id'];}return db['CannedAnswer']['find']({'where':{'id':_0x4f5af4[_0x13b9('0x49')]['id']}})[_0x13b9('0x25')](handleEntityNotFound(_0x1a6e19,null))[_0x13b9('0x25')](saveUpdates(_0x4f5af4['body'],null))[_0x13b9('0x25')](respondWithResult(_0x1a6e19,null))['catch'](handleError(_0x1a6e19,null));};exports[_0x13b9('0x26')]=function(_0x4db43b,_0x40ec3e){return db[_0x13b9('0x2f')][_0x13b9('0x4a')]({'where':{'id':_0x4db43b[_0x13b9('0x49')]['id']}})[_0x13b9('0x25')](handleEntityNotFound(_0x40ec3e,null))[_0x13b9('0x25')](removeEntity(_0x40ec3e,null))['catch'](handleError(_0x40ec3e,null));};exports['create']=function(_0x1da092,_0x5511e6){var _0x23b06a={'key':_0x1da092[_0x13b9('0x4b')][_0x13b9('0x4c')]};if(_0x1da092[_0x13b9('0x4b')][_0x13b9('0x4d')]){_0x23b06a[_0x13b9('0x4d')]=_0x1da092[_0x13b9('0x4b')][_0x13b9('0x4d')];}else if(_0x1da092[_0x13b9('0x4b')][_0x13b9('0x4e')]){_0x23b06a[_0x13b9('0x4e')]=_0x1da092[_0x13b9('0x4b')]['SmsAccountId'];}else if(_0x1da092[_0x13b9('0x4b')][_0x13b9('0x4f')]){_0x23b06a[_0x13b9('0x4f')]=_0x1da092[_0x13b9('0x4b')]['OpenchannelAccountId'];}else if(_0x1da092[_0x13b9('0x4b')][_0x13b9('0x50')]){_0x23b06a[_0x13b9('0x50')]=_0x1da092['body'][_0x13b9('0x50')];}return db['CannedAnswer'][_0x13b9('0x4a')]({'where':_0x23b06a})[_0x13b9('0x25')](function(_0xea260){if(_0xea260){throw new db['Sequelize'][(_0x13b9('0x51'))](_0x13b9('0x52'));}return db['CannedAnswer'][_0x13b9('0x53')](_0x1da092[_0x13b9('0x4b')]);})[_0x13b9('0x25')](function(_0x398046){var _0x116eff=_0x1da092[_0x13b9('0x54')][_0x13b9('0x27')]({'plain':!![]});if(!_0x116eff)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x116eff[_0x13b9('0x55')]===_0x13b9('0x54')){var _0x49ed6c=_0x398046[_0x13b9('0x27')]({'plain':!![]});return db['UserProfileSection'][_0x13b9('0x4a')]({'where':{'name':'CannedAnswers','userProfileId':_0x116eff[_0x13b9('0x56')]},'raw':!![]})['then'](function(_0x4b2b28){if(_0x4b2b28&&_0x4b2b28['autoAssociation']===0x0){return db['UserProfileResource'][_0x13b9('0x53')]({'name':_0x49ed6c[_0x13b9('0x2c')],'resourceId':_0x49ed6c['id'],'type':_0x4b2b28[_0x13b9('0x2c')],'sectionId':_0x4b2b28['id']},{})['then'](function(){return _0x398046;});}else{return _0x398046;}})['catch'](function(_0x3cbdf5){logger[_0x13b9('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3cbdf5);throw _0x3cbdf5;});}return _0x398046;})[_0x13b9('0x25')](respondWithResult(_0x5511e6,0xc9))[_0x13b9('0x47')](handleError(_0x5511e6,null));};
\ No newline at end of file
index 5fdf6b9..7f6c994 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4df1=['rimraf','../../config/environment','./cannedAnswer.attributes','exports','define','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x350d52,_0x31d8ce){var _0xee8b9c=function(_0x3c0dfa){while(--_0x3c0dfa){_0x350d52['push'](_0x350d52['shift']());}};_0xee8b9c(++_0x31d8ce);}(_0x4df1,0x85));var _0x14df=function(_0x4c0946,_0x1621bd){_0x4c0946=_0x4c0946-0x0;var _0x3462b0=_0x4df1[_0x4c0946];return _0x3462b0;};'use strict';var _=require(_0x14df('0x0'));var util=require(_0x14df('0x1'));var logger=require(_0x14df('0x2'))(_0x14df('0x3'));var moment=require(_0x14df('0x4'));var BPromise=require(_0x14df('0x5'));var rp=require(_0x14df('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x14df('0x7'));var config=require(_0x14df('0x8'));var attributes=require(_0x14df('0x9'));module[_0x14df('0xa')]=function(_0x43bac6,_0x588889){return _0x43bac6[_0x14df('0xb')]('CannedAnswer',attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x14df('0xc'),'collate':_0x14df('0xd')});};
\ No newline at end of file
+var _0x56c6=['tools_canned_answers','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x8d2c8c,_0x200287){var _0x144db6=function(_0x34b93f){while(--_0x34b93f){_0x8d2c8c['push'](_0x8d2c8c['shift']());}};_0x144db6(++_0x200287);}(_0x56c6,0x116));var _0x656c=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0x56c6[_0x88cd7b];return _0x56fcc8;};'use strict';var _=require(_0x656c('0x0'));var util=require(_0x656c('0x1'));var logger=require(_0x656c('0x2'))(_0x656c('0x3'));var moment=require(_0x656c('0x4'));var BPromise=require('bluebird');var rp=require(_0x656c('0x5'));var fs=require('fs');var path=require(_0x656c('0x6'));var rimraf=require(_0x656c('0x7'));var config=require(_0x656c('0x8'));var attributes=require('./cannedAnswer.attributes');module[_0x656c('0x9')]=function(_0x4f3d10,_0x298c81){return _0x4f3d10['define']('CannedAnswer',attributes,{'tableName':_0x656c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x656c('0xb')});};
\ No newline at end of file
index 0cfea7c..ddf2f50 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(_0x490b52,_0x13f23a){var _0x4783e6=function(_0x9ff7c6){while(--_0x9ff7c6){_0x490b52['push'](_0x490b52['shift']());}};_0x4783e6(++_0x13f23a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+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(_0x5799b1,_0x5160ef){var _0x17fa9e=function(_0x22a72a){while(--_0x22a72a){_0x5799b1['push'](_0x5799b1['shift']());}};_0x17fa9e(++_0x5160ef);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'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 40d2ea4..c0980dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe536=['../../components/interaction/service','get','isAuthenticated','/:id','show','create','put','update','delete','exports','util','path','connect-timeout','express','../../components/auth/service'];(function(_0x56b9f2,_0x22400e){var _0x4cc2dd=function(_0x192651){while(--_0x192651){_0x56b9f2['push'](_0x56b9f2['shift']());}};_0x4cc2dd(++_0x22400e);}(_0xe536,0x163));var _0x6e53=function(_0x56f2e4,_0x453f62){_0x56f2e4=_0x56f2e4-0x0;var _0x311606=_0xe536[_0x56f2e4];return _0x311606;};'use strict';var multer=require('multer');var util=require(_0x6e53('0x0'));var path=require(_0x6e53('0x1'));var timeout=require(_0x6e53('0x2'));var express=require(_0x6e53('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6e53('0x4'));var interaction=require(_0x6e53('0x5'));var config=require('../../config/environment');var controller=require('./cannedAnswer.controller');router[_0x6e53('0x6')]('/',auth[_0x6e53('0x7')](),controller['index']);router[_0x6e53('0x6')](_0x6e53('0x8'),auth[_0x6e53('0x7')](),controller[_0x6e53('0x9')]);router['post']('/',auth[_0x6e53('0x7')](),controller[_0x6e53('0xa')]);router[_0x6e53('0xb')](_0x6e53('0x8'),auth[_0x6e53('0x7')](),controller[_0x6e53('0xc')]);router[_0x6e53('0xd')](_0x6e53('0x8'),auth[_0x6e53('0x7')](),controller['destroy']);module[_0x6e53('0xe')]=router;
\ No newline at end of file
+var _0x11e4=['util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer'];(function(_0x15dbca,_0x1d7c3c){var _0x326533=function(_0x507ee2){while(--_0x507ee2){_0x15dbca['push'](_0x15dbca['shift']());}};_0x326533(++_0x1d7c3c);}(_0x11e4,0x84));var _0x411e=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0x11e4[_0x3511d3];return _0x5d6321;};'use strict';var multer=require(_0x411e('0x0'));var util=require(_0x411e('0x1'));var path=require(_0x411e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x411e('0x3')]();var fs_extra=require(_0x411e('0x4'));var auth=require(_0x411e('0x5'));var interaction=require(_0x411e('0x6'));var config=require(_0x411e('0x7'));var controller=require('./cannedAnswer.controller');router[_0x411e('0x8')]('/',auth[_0x411e('0x9')](),controller['index']);router[_0x411e('0x8')](_0x411e('0xa'),auth['isAuthenticated'](),controller[_0x411e('0xb')]);router[_0x411e('0xc')]('/',auth[_0x411e('0x9')](),controller[_0x411e('0xd')]);router[_0x411e('0xe')](_0x411e('0xa'),auth['isAuthenticated'](),controller[_0x411e('0xf')]);router[_0x411e('0x10')](_0x411e('0xa'),auth[_0x411e('0x9')](),controller[_0x411e('0x11')]);module[_0x411e('0x12')]=router;
\ No newline at end of file
index 540d523..0ad9982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0855=['1970-01-01\x2000:00:01','STRING','INTEGER','sequelize','exports'];(function(_0xb1638d,_0xf32c7b){var _0x535ccc=function(_0x563e75){while(--_0x563e75){_0xb1638d['push'](_0xb1638d['shift']());}};_0x535ccc(++_0xf32c7b);}(_0x0855,0x1de));var _0x5085=function(_0x521eeb,_0x1a72ea){_0x521eeb=_0x521eeb-0x0;var _0x499ccb=_0x0855[_0x521eeb];return _0x499ccb;};'use strict';var Sequelize=require(_0x5085('0x0'));module[_0x5085('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0x5085('0x2')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0x5085('0x3')]},'dcontext':{'type':Sequelize[_0x5085('0x3')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0x5085('0x3')]},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0x5085('0x3')]},'duration':{'type':Sequelize[_0x5085('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x5085('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x5085('0x3')]},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x5085('0x3')]},'userfield':{'type':Sequelize[_0x5085('0x3')]},'uniqueid':{'type':Sequelize[_0x5085('0x3')]},'linkedid':{'type':Sequelize[_0x5085('0x3')]},'sequence':{'type':Sequelize[_0x5085('0x3')]},'peeraccount':{'type':Sequelize[_0x5085('0x3')]},'type':{'type':Sequelize[_0x5085('0x3')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2904=['INTEGER','sequelize','exports','1970-01-01\x2000:00:01','STRING'];(function(_0x374dd6,_0xadc0eb){var _0x1aadd0=function(_0x3b87be){while(--_0x3b87be){_0x374dd6['push'](_0x374dd6['shift']());}};_0x1aadd0(++_0xadc0eb);}(_0x2904,0x137));var _0x4290=function(_0x143ec8,_0x3a303d){_0x143ec8=_0x143ec8-0x0;var _0x35ff5a=_0x2904[_0x143ec8];return _0x35ff5a;};'use strict';var Sequelize=require(_0x4290('0x0'));module[_0x4290('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0x4290('0x2')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0x4290('0x3')]},'dst':{'type':Sequelize[_0x4290('0x3')]},'dcontext':{'type':Sequelize[_0x4290('0x3')]},'channel':{'type':Sequelize[_0x4290('0x3')]},'dstchannel':{'type':Sequelize[_0x4290('0x3')]},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0x4290('0x3')]},'duration':{'type':Sequelize[_0x4290('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x4290('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x4290('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x4290('0x3')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0x4290('0x3')]},'peeraccount':{'type':Sequelize[_0x4290('0x3')]},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0x4290('0x3')]}};
\ No newline at end of file
index 64423f4..e163718 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd0f=['moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','destroy','then','sendStatus','error','name','send','index','Cdr','rawAttributes','fieldName','type','key','query','filters','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','map','VIRTUAL','options','findAll','catch','show','params','keys','intersection','include','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise'];(function(_0x47cd62,_0x19bbf3){var _0x7923b9=function(_0x420f48){while(--_0x420f48){_0x47cd62['push'](_0x47cd62['shift']());}};_0x7923b9(++_0x19bbf3);}(_0xfd0f,0x1b8));var _0xffd0=function(_0x5f4c6a,_0x3f0fbc){_0x5f4c6a=_0x5f4c6a-0x0;var _0x3472c4=_0xfd0f[_0x5f4c6a];return _0x3472c4;};'use strict';var emlformat=require(_0xffd0('0x0'));var rimraf=require(_0xffd0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xffd0('0x2'));var rp=require(_0xffd0('0x3'));var moment=require(_0xffd0('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xffd0('0x5'));var util=require('util');var path=require(_0xffd0('0x6'));var sox=require(_0xffd0('0x7'));var csv=require(_0xffd0('0x8'));var ejs=require(_0xffd0('0x9'));var fs=require('fs');var fs_extra=require(_0xffd0('0xa'));var _=require(_0xffd0('0xb'));var squel=require(_0xffd0('0xc'));var crypto=require(_0xffd0('0xd'));var jsforce=require(_0xffd0('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xffd0('0x8'));var querystring=require(_0xffd0('0xf'));var Papa=require(_0xffd0('0x10'));var Redis=require(_0xffd0('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xffd0('0x12'));var hardwareService=require(_0xffd0('0x13'));var logger=require(_0xffd0('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xffd0('0x15'));var licenseUtil=require(_0xffd0('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xa6e1ad,_0xaf12c1){_0xaf12c1=_0xaf12c1||0xcc;return function(_0x2ca16d){if(_0x2ca16d){return _0xa6e1ad['sendStatus'](_0xaf12c1);}return _0xa6e1ad[_0xffd0('0x17')](_0xaf12c1)[_0xffd0('0x18')]();};}function respondWithResult(_0x5be5aa,_0x3cf549){_0x3cf549=_0x3cf549||0xc8;return function(_0x48fc60){if(_0x48fc60){return _0x5be5aa['status'](_0x3cf549)[_0xffd0('0x19')](_0x48fc60);}};}function respondWithFilteredResult(_0x5c799c,_0x321ceb){return function(_0x2e030d){if(_0x2e030d){var _0x15e710=typeof _0x321ceb[_0xffd0('0x1a')]===_0xffd0('0x1b')&&typeof _0x321ceb['limit']==='undefined';var _0x285c52=_0x2e030d[_0xffd0('0x1c')];var _0x2e9463=_0x15e710?0x0:_0x321ceb[_0xffd0('0x1a')];var _0x409b90=_0x15e710?_0x2e030d[_0xffd0('0x1c')]:_0x321ceb[_0xffd0('0x1a')]+_0x321ceb[_0xffd0('0x1d')];var _0x684579;if(_0x409b90>=_0x285c52){_0x409b90=_0x285c52;_0x684579=0xc8;}else{_0x684579=0xce;}_0x5c799c[_0xffd0('0x17')](_0x684579);return _0x5c799c[_0xffd0('0x1e')](_0xffd0('0x1f'),_0x2e9463+'-'+_0x409b90+'/'+_0x285c52)[_0xffd0('0x19')](_0x2e030d);}return null;};}function patchUpdates(_0x19c523){return function(_0x3deed6){try{jsonpatch[_0xffd0('0x20')](_0x3deed6,_0x19c523,!![]);}catch(_0x5219ca){return BPromise['reject'](_0x5219ca);}return _0x3deed6[_0xffd0('0x21')]();};}function saveUpdates(_0x13c117,_0x4fbb72){return function(_0x4f3cb3){if(_0x4f3cb3){return _0x4f3cb3[_0xffd0('0x22')](_0x13c117)['then'](function(_0x10467e){return _0x10467e;});}return null;};}function removeEntity(_0x329864,_0x2c8d64){return function(_0x38f25f){if(_0x38f25f){return _0x38f25f[_0xffd0('0x23')]()[_0xffd0('0x24')](function(){_0x329864[_0xffd0('0x17')](0xcc)[_0xffd0('0x18')]();});}};}function handleEntityNotFound(_0x2e3046,_0x169036){return function(_0x278ba8){if(!_0x278ba8){_0x2e3046[_0xffd0('0x25')](0x194);}return _0x278ba8;};}function handleError(_0x24f135,_0x481c52){_0x481c52=_0x481c52||0x1f4;return function(_0x480322){logger[_0xffd0('0x26')](_0x480322['stack']);if(_0x480322['name']){delete _0x480322[_0xffd0('0x27')];}_0x24f135[_0xffd0('0x17')](_0x481c52)[_0xffd0('0x28')](_0x480322);};}exports[_0xffd0('0x29')]=function(_0x3f5423,_0x22c7fb){var _0x4f8d9c={},_0x14ded1={},_0x4e7367={'count':0x0,'rows':[]};var _0x5c4adb=_['map'](db[_0xffd0('0x2a')][_0xffd0('0x2b')],function(_0x3b71ac){return{'name':_0x3b71ac[_0xffd0('0x2c')],'type':_0x3b71ac[_0xffd0('0x2d')][_0xffd0('0x2e')]};});_0x14ded1['model']=_['map'](_0x5c4adb,'name');_0x14ded1[_0xffd0('0x2f')]=_['keys'](_0x3f5423[_0xffd0('0x2f')]);_0x14ded1[_0xffd0('0x30')]=_['intersection'](_0x14ded1[_0xffd0('0x31')],_0x14ded1['query']);_0x4f8d9c['attributes']=_['intersection'](_0x14ded1[_0xffd0('0x31')],qs[_0xffd0('0x32')](_0x3f5423[_0xffd0('0x2f')][_0xffd0('0x32')]));_0x4f8d9c[_0xffd0('0x33')]=_0x4f8d9c['attributes'][_0xffd0('0x34')]?_0x4f8d9c[_0xffd0('0x33')]:_0x14ded1['model'];if(!_0x3f5423[_0xffd0('0x2f')][_0xffd0('0x35')](_0xffd0('0x36'))){_0x4f8d9c[_0xffd0('0x1d')]=qs[_0xffd0('0x1d')](_0x3f5423[_0xffd0('0x2f')]['limit']);_0x4f8d9c[_0xffd0('0x1a')]=qs[_0xffd0('0x1a')](_0x3f5423['query'][_0xffd0('0x1a')]);}_0x4f8d9c[_0xffd0('0x37')]=qs['sort'](_0x3f5423[_0xffd0('0x2f')][_0xffd0('0x38')]);_0x4f8d9c['where']=qs[_0xffd0('0x30')](_['pick'](_0x3f5423[_0xffd0('0x2f')],_0x14ded1[_0xffd0('0x30')]),_0x5c4adb);if(_0x3f5423['query'][_0xffd0('0x39')]){_0x4f8d9c[_0xffd0('0x3a')]=_[_0xffd0('0x3b')](_0x4f8d9c[_0xffd0('0x3a')],{'$or':_[_0xffd0('0x3c')](_0x5c4adb,function(_0x158efc){if(_0x158efc[_0xffd0('0x2d')]!==_0xffd0('0x3d')){var _0x1cdd8f={};_0x1cdd8f[_0x158efc[_0xffd0('0x27')]]={'$like':'%'+_0x3f5423[_0xffd0('0x2f')][_0xffd0('0x39')]+'%'};return _0x1cdd8f;}})});}_0x4f8d9c=_[_0xffd0('0x3b')]({},_0x4f8d9c,_0x3f5423[_0xffd0('0x3e')]);var _0x5aa4d3={'where':_0x4f8d9c[_0xffd0('0x3a')]};return db[_0xffd0('0x2a')]['count'](_0x5aa4d3)[_0xffd0('0x24')](function(_0xea6cbd){_0x4e7367[_0xffd0('0x1c')]=_0xea6cbd;if(_0x3f5423[_0xffd0('0x2f')]['includeAll']){_0x4f8d9c['include']=[{'all':!![]}];}return db[_0xffd0('0x2a')][_0xffd0('0x3f')](_0x4f8d9c);})[_0xffd0('0x24')](function(_0xc0aa){_0x4e7367['rows']=_0xc0aa;return _0x4e7367;})[_0xffd0('0x24')](respondWithFilteredResult(_0x22c7fb,_0x4f8d9c))[_0xffd0('0x40')](handleError(_0x22c7fb,null));};exports[_0xffd0('0x41')]=function(_0x3bd3e3,_0x237a71){var _0x46833e={'raw':!![],'where':{'id':_0x3bd3e3[_0xffd0('0x42')]['id']}},_0x9558c0={};_0x9558c0[_0xffd0('0x31')]=_[_0xffd0('0x43')](db[_0xffd0('0x2a')][_0xffd0('0x2b')]);_0x9558c0[_0xffd0('0x2f')]=_[_0xffd0('0x43')](_0x3bd3e3[_0xffd0('0x2f')]);_0x9558c0[_0xffd0('0x30')]=_[_0xffd0('0x44')](_0x9558c0[_0xffd0('0x31')],_0x9558c0[_0xffd0('0x2f')]);_0x46833e[_0xffd0('0x33')]=_[_0xffd0('0x44')](_0x9558c0['model'],qs[_0xffd0('0x32')](_0x3bd3e3[_0xffd0('0x2f')][_0xffd0('0x32')]));_0x46833e[_0xffd0('0x33')]=_0x46833e[_0xffd0('0x33')][_0xffd0('0x34')]?_0x46833e[_0xffd0('0x33')]:_0x9558c0[_0xffd0('0x31')];if(_0x3bd3e3[_0xffd0('0x2f')]['includeAll']){_0x46833e[_0xffd0('0x45')]=[{'all':!![]}];}_0x46833e=_[_0xffd0('0x3b')]({},_0x46833e,_0x3bd3e3[_0xffd0('0x3e')]);return db[_0xffd0('0x2a')][_0xffd0('0x46')](_0x46833e)['then'](handleEntityNotFound(_0x237a71,null))['then'](respondWithResult(_0x237a71,null))['catch'](handleError(_0x237a71,null));};exports[_0xffd0('0x47')]=function(_0xcae782,_0x5b3515){return db[_0xffd0('0x2a')][_0xffd0('0x47')](_0xcae782[_0xffd0('0x48')],{})[_0xffd0('0x24')](respondWithResult(_0x5b3515,0xc9))[_0xffd0('0x40')](handleError(_0x5b3515,null));};exports[_0xffd0('0x22')]=function(_0x3b70a7,_0x2c0ffd){if(_0x3b70a7[_0xffd0('0x48')]['id']){delete _0x3b70a7[_0xffd0('0x48')]['id'];}return db[_0xffd0('0x2a')][_0xffd0('0x46')]({'where':{'id':_0x3b70a7[_0xffd0('0x42')]['id']}})['then'](handleEntityNotFound(_0x2c0ffd,null))['then'](saveUpdates(_0x3b70a7[_0xffd0('0x48')],null))[_0xffd0('0x24')](respondWithResult(_0x2c0ffd,null))[_0xffd0('0x40')](handleError(_0x2c0ffd,null));};exports['destroy']=function(_0x35b42e,_0x4bde7d){return db[_0xffd0('0x2a')][_0xffd0('0x46')]({'where':{'id':_0x35b42e[_0xffd0('0x42')]['id']}})[_0xffd0('0x24')](handleEntityNotFound(_0x4bde7d,null))['then'](removeEntity(_0x4bde7d,null))['catch'](handleError(_0x4bde7d,null));};exports['describe']=function(_0x2a0302,_0x24a18d){return db[_0xffd0('0x2a')][_0xffd0('0x49')]()[_0xffd0('0x24')](respondWithResult(_0x24a18d,null))[_0xffd0('0x40')](handleError(_0x24a18d,null));};
\ No newline at end of file
+var _0x8d0a=['type','query','keys','filters','intersection','model','attributes','fields','length','limit','order','sort','where','pick','merge','filter','options','includeAll','include','findAll','rows','catch','params','find','create','body','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','set','json','save','update','then','error','stack','name','send','index','map','Cdr','rawAttributes','fieldName'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x8d0a,0x65));var _0xa8d0=function(_0x4db7a6,_0xe5620c){_0x4db7a6=_0x4db7a6-0x0;var _0x23bace=_0x8d0a[_0x4db7a6];return _0x23bace;};'use strict';var emlformat=require(_0xa8d0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa8d0('0x1'));var jsonpatch=require(_0xa8d0('0x2'));var rp=require(_0xa8d0('0x3'));var moment=require(_0xa8d0('0x4'));var BPromise=require(_0xa8d0('0x5'));var Mustache=require(_0xa8d0('0x6'));var util=require(_0xa8d0('0x7'));var path=require(_0xa8d0('0x8'));var sox=require(_0xa8d0('0x9'));var csv=require('to-csv');var ejs=require(_0xa8d0('0xa'));var fs=require('fs');var fs_extra=require(_0xa8d0('0xb'));var _=require(_0xa8d0('0xc'));var squel=require(_0xa8d0('0xd'));var crypto=require(_0xa8d0('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa8d0('0xf'));var querystring=require(_0xa8d0('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa8d0('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa8d0('0x12'));var logger=require(_0xa8d0('0x13'))(_0xa8d0('0x14'));var utils=require(_0xa8d0('0x15'));var config=require(_0xa8d0('0x16'));var licenseUtil=require(_0xa8d0('0x17'));var db=require(_0xa8d0('0x18'))['db'];function respondWithStatusCode(_0x3bf335,_0x329583){_0x329583=_0x329583||0xcc;return function(_0x1bfcb6){if(_0x1bfcb6){return _0x3bf335[_0xa8d0('0x19')](_0x329583);}return _0x3bf335['status'](_0x329583)[_0xa8d0('0x1a')]();};}function respondWithResult(_0x478f66,_0x5a9193){_0x5a9193=_0x5a9193||0xc8;return function(_0x32ea3e){if(_0x32ea3e){return _0x478f66[_0xa8d0('0x1b')](_0x5a9193)['json'](_0x32ea3e);}};}function respondWithFilteredResult(_0x31da9f,_0x459e9d){return function(_0x2946d5){if(_0x2946d5){var _0x44a48e=typeof _0x459e9d[_0xa8d0('0x1c')]===_0xa8d0('0x1d')&&typeof _0x459e9d['limit']===_0xa8d0('0x1d');var _0x470b4a=_0x2946d5['count'];var _0x2f0b00=_0x44a48e?0x0:_0x459e9d[_0xa8d0('0x1c')];var _0x53d168=_0x44a48e?_0x2946d5[_0xa8d0('0x1e')]:_0x459e9d[_0xa8d0('0x1c')]+_0x459e9d['limit'];var _0x582a54;if(_0x53d168>=_0x470b4a){_0x53d168=_0x470b4a;_0x582a54=0xc8;}else{_0x582a54=0xce;}_0x31da9f[_0xa8d0('0x1b')](_0x582a54);return _0x31da9f[_0xa8d0('0x1f')]('Content-Range',_0x2f0b00+'-'+_0x53d168+'/'+_0x470b4a)[_0xa8d0('0x20')](_0x2946d5);}return null;};}function patchUpdates(_0x356a52){return function(_0x446e6f){try{jsonpatch['apply'](_0x446e6f,_0x356a52,!![]);}catch(_0x36891d){return BPromise['reject'](_0x36891d);}return _0x446e6f[_0xa8d0('0x21')]();};}function saveUpdates(_0x4df8a9,_0x337677){return function(_0x27c798){if(_0x27c798){return _0x27c798[_0xa8d0('0x22')](_0x4df8a9)[_0xa8d0('0x23')](function(_0x41667d){return _0x41667d;});}return null;};}function removeEntity(_0x5754b7,_0x47d0d2){return function(_0x265dce){if(_0x265dce){return _0x265dce['destroy']()[_0xa8d0('0x23')](function(){_0x5754b7[_0xa8d0('0x1b')](0xcc)[_0xa8d0('0x1a')]();});}};}function handleEntityNotFound(_0x1ddb63,_0x17bdfc){return function(_0x5b9560){if(!_0x5b9560){_0x1ddb63[_0xa8d0('0x19')](0x194);}return _0x5b9560;};}function handleError(_0x1a396a,_0x26c3cc){_0x26c3cc=_0x26c3cc||0x1f4;return function(_0x2f692d){logger[_0xa8d0('0x24')](_0x2f692d[_0xa8d0('0x25')]);if(_0x2f692d[_0xa8d0('0x26')]){delete _0x2f692d[_0xa8d0('0x26')];}_0x1a396a['status'](_0x26c3cc)[_0xa8d0('0x27')](_0x2f692d);};}exports[_0xa8d0('0x28')]=function(_0xd7943a,_0x13ea0d){var _0x243cc3={},_0x111a4c={},_0x573641={'count':0x0,'rows':[]};var _0x3b0609=_[_0xa8d0('0x29')](db[_0xa8d0('0x2a')][_0xa8d0('0x2b')],function(_0x4c46fc){return{'name':_0x4c46fc[_0xa8d0('0x2c')],'type':_0x4c46fc[_0xa8d0('0x2d')]['key']};});_0x111a4c['model']=_[_0xa8d0('0x29')](_0x3b0609,_0xa8d0('0x26'));_0x111a4c[_0xa8d0('0x2e')]=_[_0xa8d0('0x2f')](_0xd7943a[_0xa8d0('0x2e')]);_0x111a4c[_0xa8d0('0x30')]=_[_0xa8d0('0x31')](_0x111a4c[_0xa8d0('0x32')],_0x111a4c[_0xa8d0('0x2e')]);_0x243cc3[_0xa8d0('0x33')]=_[_0xa8d0('0x31')](_0x111a4c[_0xa8d0('0x32')],qs['fields'](_0xd7943a['query'][_0xa8d0('0x34')]));_0x243cc3['attributes']=_0x243cc3[_0xa8d0('0x33')][_0xa8d0('0x35')]?_0x243cc3[_0xa8d0('0x33')]:_0x111a4c[_0xa8d0('0x32')];if(!_0xd7943a[_0xa8d0('0x2e')]['hasOwnProperty']('nolimit')){_0x243cc3[_0xa8d0('0x36')]=qs[_0xa8d0('0x36')](_0xd7943a[_0xa8d0('0x2e')][_0xa8d0('0x36')]);_0x243cc3[_0xa8d0('0x1c')]=qs[_0xa8d0('0x1c')](_0xd7943a['query'][_0xa8d0('0x1c')]);}_0x243cc3[_0xa8d0('0x37')]=qs[_0xa8d0('0x38')](_0xd7943a['query'][_0xa8d0('0x38')]);_0x243cc3[_0xa8d0('0x39')]=qs[_0xa8d0('0x30')](_[_0xa8d0('0x3a')](_0xd7943a[_0xa8d0('0x2e')],_0x111a4c[_0xa8d0('0x30')]),_0x3b0609);if(_0xd7943a[_0xa8d0('0x2e')]['filter']){_0x243cc3[_0xa8d0('0x39')]=_[_0xa8d0('0x3b')](_0x243cc3[_0xa8d0('0x39')],{'$or':_[_0xa8d0('0x29')](_0x3b0609,function(_0x2a37d3){if(_0x2a37d3[_0xa8d0('0x2d')]!=='VIRTUAL'){var _0xad4f40={};_0xad4f40[_0x2a37d3[_0xa8d0('0x26')]]={'$like':'%'+_0xd7943a[_0xa8d0('0x2e')][_0xa8d0('0x3c')]+'%'};return _0xad4f40;}})});}_0x243cc3=_[_0xa8d0('0x3b')]({},_0x243cc3,_0xd7943a[_0xa8d0('0x3d')]);var _0x1c1e05={'where':_0x243cc3[_0xa8d0('0x39')]};return db['Cdr'][_0xa8d0('0x1e')](_0x1c1e05)['then'](function(_0x3cfcc7){_0x573641[_0xa8d0('0x1e')]=_0x3cfcc7;if(_0xd7943a[_0xa8d0('0x2e')][_0xa8d0('0x3e')]){_0x243cc3[_0xa8d0('0x3f')]=[{'all':!![]}];}return db[_0xa8d0('0x2a')][_0xa8d0('0x40')](_0x243cc3);})[_0xa8d0('0x23')](function(_0x2f563a){_0x573641[_0xa8d0('0x41')]=_0x2f563a;return _0x573641;})[_0xa8d0('0x23')](respondWithFilteredResult(_0x13ea0d,_0x243cc3))[_0xa8d0('0x42')](handleError(_0x13ea0d,null));};exports['show']=function(_0x185626,_0x168479){var _0x39798a={'raw':!![],'where':{'id':_0x185626[_0xa8d0('0x43')]['id']}},_0x271203={};_0x271203[_0xa8d0('0x32')]=_['keys'](db[_0xa8d0('0x2a')][_0xa8d0('0x2b')]);_0x271203[_0xa8d0('0x2e')]=_[_0xa8d0('0x2f')](_0x185626[_0xa8d0('0x2e')]);_0x271203[_0xa8d0('0x30')]=_[_0xa8d0('0x31')](_0x271203[_0xa8d0('0x32')],_0x271203['query']);_0x39798a[_0xa8d0('0x33')]=_['intersection'](_0x271203[_0xa8d0('0x32')],qs[_0xa8d0('0x34')](_0x185626[_0xa8d0('0x2e')][_0xa8d0('0x34')]));_0x39798a['attributes']=_0x39798a[_0xa8d0('0x33')][_0xa8d0('0x35')]?_0x39798a['attributes']:_0x271203[_0xa8d0('0x32')];if(_0x185626[_0xa8d0('0x2e')][_0xa8d0('0x3e')]){_0x39798a['include']=[{'all':!![]}];}_0x39798a=_['merge']({},_0x39798a,_0x185626[_0xa8d0('0x3d')]);return db[_0xa8d0('0x2a')][_0xa8d0('0x44')](_0x39798a)[_0xa8d0('0x23')](handleEntityNotFound(_0x168479,null))['then'](respondWithResult(_0x168479,null))[_0xa8d0('0x42')](handleError(_0x168479,null));};exports[_0xa8d0('0x45')]=function(_0x289bff,_0x352adc){return db[_0xa8d0('0x2a')]['create'](_0x289bff[_0xa8d0('0x46')],{})['then'](respondWithResult(_0x352adc,0xc9))[_0xa8d0('0x42')](handleError(_0x352adc,null));};exports[_0xa8d0('0x22')]=function(_0x3dd3ae,_0x5a2aef){if(_0x3dd3ae[_0xa8d0('0x46')]['id']){delete _0x3dd3ae[_0xa8d0('0x46')]['id'];}return db[_0xa8d0('0x2a')][_0xa8d0('0x44')]({'where':{'id':_0x3dd3ae[_0xa8d0('0x43')]['id']}})['then'](handleEntityNotFound(_0x5a2aef,null))[_0xa8d0('0x23')](saveUpdates(_0x3dd3ae[_0xa8d0('0x46')],null))['then'](respondWithResult(_0x5a2aef,null))[_0xa8d0('0x42')](handleError(_0x5a2aef,null));};exports[_0xa8d0('0x47')]=function(_0x20b617,_0x1abc35){return db[_0xa8d0('0x2a')][_0xa8d0('0x44')]({'where':{'id':_0x20b617[_0xa8d0('0x43')]['id']}})['then'](handleEntityNotFound(_0x1abc35,null))[_0xa8d0('0x23')](removeEntity(_0x1abc35,null))['catch'](handleError(_0x1abc35,null));};exports['describe']=function(_0x1cb44a,_0x19fd43){return db['Cdr'][_0xa8d0('0x48')]()[_0xa8d0('0x23')](respondWithResult(_0x19fd43,null))[_0xa8d0('0x42')](handleError(_0x19fd43,null));};
\ No newline at end of file
index 1bb8e88..a81911c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x1b7c70,_0xb47e28){var _0x456300=function(_0x4a377b){while(--_0x4a377b){_0x1b7c70['push'](_0x1b7c70['shift']());}};_0x456300(++_0xb47e28);}(_0x7a54,0x106));var _0x47a5=function(_0x2bb6f4,_0x358821){_0x2bb6f4=_0x2bb6f4-0x0;var _0x53fb33=_0x7a54[_0x2bb6f4];return _0x53fb33;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x40fa3f,_0x3f3a11){var _0x5cc845=function(_0x5d0db0){while(--_0x5d0db0){_0x40fa3f['push'](_0x40fa3f['shift']());}};_0x5cc845(++_0x3f3a11);}(_0x7a54,0x106));var _0x47a5=function(_0x135c47,_0x1dee84){_0x135c47=_0x135c47-0x0;var _0xffdbc1=_0x7a54[_0x135c47];return _0xffdbc1;};'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 c0fc4c1..97374be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3738=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','Cdr,\x20%s,\x20%s'];(function(_0x8dabc4,_0x6faf22){var _0x43c553=function(_0x31d1ca){while(--_0x31d1ca){_0x8dabc4['push'](_0x8dabc4['shift']());}};_0x43c553(++_0x6faf22);}(_0x3738,0x1b7));var _0x8373=function(_0x4e81fb,_0x23fe7e){_0x4e81fb=_0x4e81fb-0x0;var _0x304dc7=_0x3738[_0x4e81fb];return _0x304dc7;};'use strict';var _=require(_0x8373('0x0'));var util=require('util');var moment=require(_0x8373('0x1'));var BPromise=require(_0x8373('0x2'));var rs=require(_0x8373('0x3'));var fs=require('fs');var Redis=require(_0x8373('0x4'));var db=require(_0x8373('0x5'))['db'];var utils=require(_0x8373('0x6'));var logger=require(_0x8373('0x7'))(_0x8373('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8373('0x9')][_0x8373('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x24394b,_0x5bd4e0,_0x782e2e){return new BPromise(function(_0x4ae0f4,_0xf11b9a){return client[_0x8373('0xb')](_0x24394b,_0x782e2e)[_0x8373('0xc')](function(_0x17031a){logger[_0x8373('0xd')]('Cdr,\x20%s,\x20%s',_0x5bd4e0,'request\x20sent');logger['debug'](_0x8373('0xe'),_0x5bd4e0,_0x8373('0xf'),JSON[_0x8373('0x10')](_0x17031a));if(_0x17031a[_0x8373('0x11')]){if(_0x17031a[_0x8373('0x11')][_0x8373('0x12')]===0x1f4){logger[_0x8373('0x11')]('Cdr,\x20%s,\x20%s',_0x5bd4e0,_0x17031a[_0x8373('0x11')]['message']);return _0xf11b9a(_0x17031a[_0x8373('0x11')][_0x8373('0x13')]);}logger[_0x8373('0x11')](_0x8373('0x14'),_0x5bd4e0,_0x17031a[_0x8373('0x11')][_0x8373('0x13')]);return _0x4ae0f4(_0x17031a[_0x8373('0x11')]['message']);}else{logger[_0x8373('0xd')]('Cdr,\x20%s,\x20%s',_0x5bd4e0,_0x8373('0xf'));_0x4ae0f4(_0x17031a[_0x8373('0x15')]['message']);}})[_0x8373('0x16')](function(_0x5eb5c7){logger[_0x8373('0x11')](_0x8373('0x14'),_0x5bd4e0,_0x5eb5c7);_0xf11b9a(_0x5eb5c7);});});}
\ No newline at end of file
+var _0x616b=['util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash'];(function(_0x1c59b0,_0x900110){var _0x537182=function(_0x386e90){while(--_0x386e90){_0x1c59b0['push'](_0x1c59b0['shift']());}};_0x537182(++_0x900110);}(_0x616b,0x141));var _0xb616=function(_0x13b796,_0x19507b){_0x13b796=_0x13b796-0x0;var _0x54757d=_0x616b[_0x13b796];return _0x54757d;};'use strict';var _=require(_0xb616('0x0'));var util=require(_0xb616('0x1'));var moment=require(_0xb616('0x2'));var BPromise=require('bluebird');var rs=require(_0xb616('0x3'));var fs=require('fs');var Redis=require(_0xb616('0x4'));var db=require(_0xb616('0x5'))['db'];var utils=require(_0xb616('0x6'));var logger=require(_0xb616('0x7'))(_0xb616('0x8'));var config=require(_0xb616('0x9'));var jayson=require(_0xb616('0xa'));var client=jayson['client'][_0xb616('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4d3a70,_0x2d0fb3,_0x19d676){return new BPromise(function(_0xbcf743,_0x2ebb1a){return client[_0xb616('0xc')](_0x4d3a70,_0x19d676)[_0xb616('0xd')](function(_0x21fef6){logger[_0xb616('0xe')](_0xb616('0xf'),_0x2d0fb3,_0xb616('0x10'));logger[_0xb616('0x11')]('Cdr,\x20%s,\x20%s,\x20%s',_0x2d0fb3,'request\x20sent',JSON[_0xb616('0x12')](_0x21fef6));if(_0x21fef6[_0xb616('0x13')]){if(_0x21fef6[_0xb616('0x13')]['code']===0x1f4){logger[_0xb616('0x13')]('Cdr,\x20%s,\x20%s',_0x2d0fb3,_0x21fef6[_0xb616('0x13')][_0xb616('0x14')]);return _0x2ebb1a(_0x21fef6[_0xb616('0x13')]['message']);}logger[_0xb616('0x13')]('Cdr,\x20%s,\x20%s',_0x2d0fb3,_0x21fef6[_0xb616('0x13')][_0xb616('0x14')]);return _0xbcf743(_0x21fef6[_0xb616('0x13')][_0xb616('0x14')]);}else{logger['info']('Cdr,\x20%s,\x20%s',_0x2d0fb3,_0xb616('0x10'));_0xbcf743(_0x21fef6[_0xb616('0x15')][_0xb616('0x14')]);}})[_0xb616('0x16')](function(_0x1aae10){logger[_0xb616('0x13')](_0xb616('0xf'),_0x2d0fb3,_0x1aae10);_0x2ebb1a(_0x1aae10);});});}
\ No newline at end of file
index 196e63f..0d0366b 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(_0x4af01e,_0x543f5c){var _0x178c11=function(_0x2c2f76){while(--_0x2c2f76){_0x4af01e['push'](_0x4af01e['shift']());}};_0x178c11(++_0x543f5c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'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 _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0x1f625b,_0x276b0e){var _0x748222=function(_0x324a51){while(--_0x324a51){_0x1f625b['push'](_0x1f625b['shift']());}};_0x748222(++_0x276b0e);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index 5cce711..c4d06b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8979=['noop','TEXT','STRING','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x27b8fe,_0x37bca4){var _0x35ab3b=function(_0x6adb54){while(--_0x6adb54){_0x27b8fe['push'](_0x27b8fe['shift']());}};_0x35ab3b(++_0x37bca4);}(_0x8979,0x1e7));var _0x9897=function(_0x1b89a6,_0x1e3879){_0x1b89a6=_0x1b89a6-0x0;var _0x34b6f0=_0x8979[_0x1b89a6];return _0x34b6f0;};'use strict';var Sequelize=require(_0x9897('0x0'));module[_0x9897('0x1')]={'priority':{'type':Sequelize[_0x9897('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9897('0x3')},'appdata':{'type':Sequelize[_0x9897('0x4')]()},'description':{'type':Sequelize[_0x9897('0x5')]},'interval':{'type':Sequelize[_0x9897('0x5')],'defaultValue':_0x9897('0x6')}};
\ No newline at end of file
+var _0x60fa=['exports','STRING','noop','TEXT','sequelize'];(function(_0x292f93,_0x2c6e8e){var _0x5a94b1=function(_0x25735e){while(--_0x25735e){_0x292f93['push'](_0x292f93['shift']());}};_0x5a94b1(++_0x2c6e8e);}(_0x60fa,0x149));var _0xa60f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x60fa[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xa60f('0x0'));module[_0xa60f('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xa60f('0x2')],'allowNull':![],'defaultValue':_0xa60f('0x3')},'appdata':{'type':Sequelize[_0xa60f('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xa60f('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 32676d6..a374161 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd136=['undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','name','show','params','model','keys','ChatApplication','rawAttributes','query','filters','attributes','fields','length','includeAll','include','merge','options','find','catch','update','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset'];(function(_0x4c6b93,_0x19880d){var _0x119770=function(_0x2a8cea){while(--_0x2a8cea){_0x4c6b93['push'](_0x4c6b93['shift']());}};_0x119770(++_0x19880d);}(_0xd136,0x94));var _0x6d13=function(_0x11805a,_0x3792c5){_0x11805a=_0x11805a-0x0;var _0x3fb4b4=_0xd136[_0x11805a];return _0x3fb4b4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6d13('0x0'));var zipdir=require(_0x6d13('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6d13('0x2'));var moment=require(_0x6d13('0x3'));var BPromise=require(_0x6d13('0x4'));var Mustache=require(_0x6d13('0x5'));var util=require(_0x6d13('0x6'));var path=require(_0x6d13('0x7'));var sox=require(_0x6d13('0x8'));var csv=require(_0x6d13('0x9'));var ejs=require(_0x6d13('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6d13('0xb'));var squel=require(_0x6d13('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6d13('0xd'));var toCsv=require(_0x6d13('0x9'));var querystring=require(_0x6d13('0xe'));var Papa=require(_0x6d13('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6d13('0x10'));var as=require(_0x6d13('0x11'));var hardwareService=require(_0x6d13('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x6d13('0x13'));var config=require(_0x6d13('0x14'));var licenseUtil=require(_0x6d13('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b4cc3,_0x5ef7e6){_0x5ef7e6=_0x5ef7e6||0xcc;return function(_0x37d3c1){if(_0x37d3c1){return _0x1b4cc3[_0x6d13('0x16')](_0x5ef7e6);}return _0x1b4cc3['status'](_0x5ef7e6)['end']();};}function respondWithResult(_0x4ca95d,_0x37efd8){_0x37efd8=_0x37efd8||0xc8;return function(_0x10709d){if(_0x10709d){return _0x4ca95d[_0x6d13('0x17')](_0x37efd8)[_0x6d13('0x18')](_0x10709d);}};}function respondWithFilteredResult(_0x2f4c2b,_0x4f1bdf){return function(_0xf27049){if(_0xf27049){var _0x405368=typeof _0x4f1bdf[_0x6d13('0x19')]===_0x6d13('0x1a')&&typeof _0x4f1bdf[_0x6d13('0x1b')]===_0x6d13('0x1a');var _0xb17857=_0xf27049[_0x6d13('0x1c')];var _0xc6c2b=_0x405368?0x0:_0x4f1bdf['offset'];var _0x276fdd=_0x405368?_0xf27049[_0x6d13('0x1c')]:_0x4f1bdf[_0x6d13('0x19')]+_0x4f1bdf[_0x6d13('0x1b')];var _0x1f3603;if(_0x276fdd>=_0xb17857){_0x276fdd=_0xb17857;_0x1f3603=0xc8;}else{_0x1f3603=0xce;}_0x2f4c2b[_0x6d13('0x17')](_0x1f3603);return _0x2f4c2b[_0x6d13('0x1d')](_0x6d13('0x1e'),_0xc6c2b+'-'+_0x276fdd+'/'+_0xb17857)[_0x6d13('0x18')](_0xf27049);}return null;};}function patchUpdates(_0x427bb8){return function(_0x40f629){try{jsonpatch[_0x6d13('0x1f')](_0x40f629,_0x427bb8,!![]);}catch(_0x18889d){return BPromise[_0x6d13('0x20')](_0x18889d);}return _0x40f629[_0x6d13('0x21')]();};}function saveUpdates(_0x208876,_0x5619fc){return function(_0x387de2){if(_0x387de2){return _0x387de2['update'](_0x208876)[_0x6d13('0x22')](function(_0x204438){return _0x204438;});}return null;};}function removeEntity(_0x151aa4,_0x5bbc9d){return function(_0x1b0f94){if(_0x1b0f94){return _0x1b0f94[_0x6d13('0x23')]()[_0x6d13('0x22')](function(){_0x151aa4[_0x6d13('0x17')](0xcc)[_0x6d13('0x24')]();});}};}function handleEntityNotFound(_0x361432,_0x66e464){return function(_0x821eea){if(!_0x821eea){_0x361432['sendStatus'](0x194);}return _0x821eea;};}function handleError(_0xacf472,_0x4f70e2){_0x4f70e2=_0x4f70e2||0x1f4;return function(_0x4c8526){logger[_0x6d13('0x25')](_0x4c8526['stack']);if(_0x4c8526[_0x6d13('0x26')]){delete _0x4c8526[_0x6d13('0x26')];}_0xacf472[_0x6d13('0x17')](_0x4f70e2)['send'](_0x4c8526);};}exports[_0x6d13('0x27')]=function(_0xd469b6,_0x573080){var _0x2fcdfd={'raw':!![],'where':{'id':_0xd469b6[_0x6d13('0x28')]['id']}},_0x1eda96={};_0x1eda96[_0x6d13('0x29')]=_[_0x6d13('0x2a')](db[_0x6d13('0x2b')][_0x6d13('0x2c')]);_0x1eda96[_0x6d13('0x2d')]=_['keys'](_0xd469b6[_0x6d13('0x2d')]);_0x1eda96[_0x6d13('0x2e')]=_['intersection'](_0x1eda96[_0x6d13('0x29')],_0x1eda96[_0x6d13('0x2d')]);_0x2fcdfd[_0x6d13('0x2f')]=_['intersection'](_0x1eda96[_0x6d13('0x29')],qs[_0x6d13('0x30')](_0xd469b6[_0x6d13('0x2d')][_0x6d13('0x30')]));_0x2fcdfd[_0x6d13('0x2f')]=_0x2fcdfd[_0x6d13('0x2f')][_0x6d13('0x31')]?_0x2fcdfd['attributes']:_0x1eda96[_0x6d13('0x29')];if(_0xd469b6['query'][_0x6d13('0x32')]){_0x2fcdfd[_0x6d13('0x33')]=[{'all':!![]}];}_0x2fcdfd=_[_0x6d13('0x34')]({},_0x2fcdfd,_0xd469b6[_0x6d13('0x35')]);return db[_0x6d13('0x2b')][_0x6d13('0x36')](_0x2fcdfd)['then'](handleEntityNotFound(_0x573080,null))['then'](respondWithResult(_0x573080,null))[_0x6d13('0x37')](handleError(_0x573080,null));};exports[_0x6d13('0x38')]=function(_0xa922ff,_0x29aa5a){if(_0xa922ff[_0x6d13('0x39')]['id']){delete _0xa922ff[_0x6d13('0x39')]['id'];}return db['ChatApplication'][_0x6d13('0x36')]({'where':{'id':_0xa922ff[_0x6d13('0x28')]['id']}})[_0x6d13('0x22')](handleEntityNotFound(_0x29aa5a,null))[_0x6d13('0x22')](saveUpdates(_0xa922ff[_0x6d13('0x39')],null))[_0x6d13('0x22')](respondWithResult(_0x29aa5a,null))[_0x6d13('0x37')](handleError(_0x29aa5a,null));};exports[_0x6d13('0x23')]=function(_0x3cdff2,_0x3bffe6){return db['ChatApplication']['find']({'where':{'id':_0x3cdff2[_0x6d13('0x28')]['id']}})['then'](handleEntityNotFound(_0x3bffe6,null))['then'](removeEntity(_0x3bffe6,null))[_0x6d13('0x37')](handleError(_0x3bffe6,null));};
\ No newline at end of file
+var _0xe0c0=['moment','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','destroy','then','error','name','send','show','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes','fields','includeAll','options','body','find','catch','eml-format','zip-dir','fast-json-patch','request-promise'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xe0c0,0xa7));var _0x0e0c=function(_0x11997d,_0x552f41){_0x11997d=_0x11997d-0x0;var _0x18e4b9=_0xe0c0[_0x11997d];return _0x18e4b9;};'use strict';var emlformat=require(_0x0e0c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0e0c('0x1'));var jsonpatch=require(_0x0e0c('0x2'));var rp=require(_0x0e0c('0x3'));var moment=require(_0x0e0c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0e0c('0x5'));var util=require(_0x0e0c('0x6'));var path=require(_0x0e0c('0x7'));var sox=require('sox');var csv=require(_0x0e0c('0x8'));var ejs=require(_0x0e0c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0e0c('0xa'));var squel=require(_0x0e0c('0xb'));var crypto=require(_0x0e0c('0xc'));var jsforce=require(_0x0e0c('0xd'));var deskjs=require(_0x0e0c('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0e0c('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x0e0c('0x10'));var as=require(_0x0e0c('0x11'));var hardwareService=require(_0x0e0c('0x12'));var logger=require(_0x0e0c('0x13'))(_0x0e0c('0x14'));var utils=require(_0x0e0c('0x15'));var config=require(_0x0e0c('0x16'));var licenseUtil=require(_0x0e0c('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x246fd6,_0x5c31c7){_0x5c31c7=_0x5c31c7||0xcc;return function(_0x5794fa){if(_0x5794fa){return _0x246fd6[_0x0e0c('0x18')](_0x5c31c7);}return _0x246fd6[_0x0e0c('0x19')](_0x5c31c7)[_0x0e0c('0x1a')]();};}function respondWithResult(_0x305042,_0x1b598b){_0x1b598b=_0x1b598b||0xc8;return function(_0x19f315){if(_0x19f315){return _0x305042['status'](_0x1b598b)[_0x0e0c('0x1b')](_0x19f315);}};}function respondWithFilteredResult(_0x27cbcd,_0x3b6d65){return function(_0x4ebe33){if(_0x4ebe33){var _0x368ba0=typeof _0x3b6d65[_0x0e0c('0x1c')]===_0x0e0c('0x1d')&&typeof _0x3b6d65[_0x0e0c('0x1e')]===_0x0e0c('0x1d');var _0x2b0cb6=_0x4ebe33[_0x0e0c('0x1f')];var _0x18f3ef=_0x368ba0?0x0:_0x3b6d65[_0x0e0c('0x1c')];var _0x562f2c=_0x368ba0?_0x4ebe33[_0x0e0c('0x1f')]:_0x3b6d65['offset']+_0x3b6d65['limit'];var _0x5518b6;if(_0x562f2c>=_0x2b0cb6){_0x562f2c=_0x2b0cb6;_0x5518b6=0xc8;}else{_0x5518b6=0xce;}_0x27cbcd[_0x0e0c('0x19')](_0x5518b6);return _0x27cbcd[_0x0e0c('0x20')](_0x0e0c('0x21'),_0x18f3ef+'-'+_0x562f2c+'/'+_0x2b0cb6)[_0x0e0c('0x1b')](_0x4ebe33);}return null;};}function patchUpdates(_0x26ad69){return function(_0x3cc1cc){try{jsonpatch['apply'](_0x3cc1cc,_0x26ad69,!![]);}catch(_0x177ec6){return BPromise['reject'](_0x177ec6);}return _0x3cc1cc[_0x0e0c('0x22')]();};}function saveUpdates(_0x4419e9,_0x58fa02){return function(_0x2d01e5){if(_0x2d01e5){return _0x2d01e5[_0x0e0c('0x23')](_0x4419e9)['then'](function(_0x3346aa){return _0x3346aa;});}return null;};}function removeEntity(_0x29ee52,_0x315b35){return function(_0x29ff87){if(_0x29ff87){return _0x29ff87[_0x0e0c('0x24')]()[_0x0e0c('0x25')](function(){_0x29ee52[_0x0e0c('0x19')](0xcc)[_0x0e0c('0x1a')]();});}};}function handleEntityNotFound(_0x426bf1,_0x3ae1b4){return function(_0x5a7519){if(!_0x5a7519){_0x426bf1[_0x0e0c('0x18')](0x194);}return _0x5a7519;};}function handleError(_0x429f6f,_0x48a33a){_0x48a33a=_0x48a33a||0x1f4;return function(_0x59f3e8){logger[_0x0e0c('0x26')](_0x59f3e8['stack']);if(_0x59f3e8[_0x0e0c('0x27')]){delete _0x59f3e8[_0x0e0c('0x27')];}_0x429f6f[_0x0e0c('0x19')](_0x48a33a)[_0x0e0c('0x28')](_0x59f3e8);};}exports[_0x0e0c('0x29')]=function(_0x15bb5a,_0x252143){var _0x2d1444={'raw':!![],'where':{'id':_0x15bb5a[_0x0e0c('0x2a')]['id']}},_0x2c9c82={};_0x2c9c82[_0x0e0c('0x2b')]=_[_0x0e0c('0x2c')](db[_0x0e0c('0x2d')][_0x0e0c('0x2e')]);_0x2c9c82[_0x0e0c('0x2f')]=_[_0x0e0c('0x2c')](_0x15bb5a['query']);_0x2c9c82[_0x0e0c('0x30')]=_[_0x0e0c('0x31')](_0x2c9c82[_0x0e0c('0x2b')],_0x2c9c82[_0x0e0c('0x2f')]);_0x2d1444[_0x0e0c('0x32')]=_['intersection'](_0x2c9c82[_0x0e0c('0x2b')],qs['fields'](_0x15bb5a[_0x0e0c('0x2f')][_0x0e0c('0x33')]));_0x2d1444['attributes']=_0x2d1444['attributes']['length']?_0x2d1444['attributes']:_0x2c9c82[_0x0e0c('0x2b')];if(_0x15bb5a[_0x0e0c('0x2f')][_0x0e0c('0x34')]){_0x2d1444['include']=[{'all':!![]}];}_0x2d1444=_['merge']({},_0x2d1444,_0x15bb5a[_0x0e0c('0x35')]);return db[_0x0e0c('0x2d')]['find'](_0x2d1444)['then'](handleEntityNotFound(_0x252143,null))[_0x0e0c('0x25')](respondWithResult(_0x252143,null))['catch'](handleError(_0x252143,null));};exports[_0x0e0c('0x23')]=function(_0x3e55e1,_0x463e62){if(_0x3e55e1[_0x0e0c('0x36')]['id']){delete _0x3e55e1[_0x0e0c('0x36')]['id'];}return db[_0x0e0c('0x2d')][_0x0e0c('0x37')]({'where':{'id':_0x3e55e1['params']['id']}})[_0x0e0c('0x25')](handleEntityNotFound(_0x463e62,null))[_0x0e0c('0x25')](saveUpdates(_0x3e55e1[_0x0e0c('0x36')],null))[_0x0e0c('0x25')](respondWithResult(_0x463e62,null))[_0x0e0c('0x38')](handleError(_0x463e62,null));};exports[_0x0e0c('0x24')]=function(_0x785831,_0x35f525){return db['ChatApplication']['find']({'where':{'id':_0x785831[_0x0e0c('0x2a')]['id']}})[_0x0e0c('0x25')](handleEntityNotFound(_0x35f525,null))[_0x0e0c('0x25')](removeEntity(_0x35f525,null))[_0x0e0c('0x38')](handleError(_0x35f525,null));};
\ No newline at end of file
index 3e07246..37074d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x233b=['chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./chatApplication.attributes','exports','define','ChatApplication'];(function(_0x3b3d75,_0x3d0a6f){var _0x55f2d4=function(_0x30519f){while(--_0x30519f){_0x3b3d75['push'](_0x3b3d75['shift']());}};_0x55f2d4(++_0x3d0a6f);}(_0x233b,0xe3));var _0xb233=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x233b[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xb233('0x0'));var util=require(_0xb233('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xb233('0x2'));var BPromise=require(_0xb233('0x3'));var rp=require(_0xb233('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb233('0x5'));var config=require(_0xb233('0x6'));var attributes=require(_0xb233('0x7'));module[_0xb233('0x8')]=function(_0x144b39,_0x2cc5e7){return _0x144b39[_0xb233('0x9')](_0xb233('0xa'),attributes,{'tableName':_0xb233('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb233('0xc'),'collate':_0xb233('0xd')});};
\ No newline at end of file
+var _0xf911=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./chatApplication.attributes','exports','define','ChatApplication','utf8mb4'];(function(_0x2d08f9,_0x3f43b8){var _0x5d0c43=function(_0x247c0f){while(--_0x247c0f){_0x2d08f9['push'](_0x2d08f9['shift']());}};_0x5d0c43(++_0x3f43b8);}(_0xf911,0xe2));var _0x1f91=function(_0x23c54c,_0x3fabca){_0x23c54c=_0x23c54c-0x0;var _0x3b06d7=_0xf911[_0x23c54c];return _0x3b06d7;};'use strict';var _=require(_0x1f91('0x0'));var util=require(_0x1f91('0x1'));var logger=require(_0x1f91('0x2'))(_0x1f91('0x3'));var moment=require(_0x1f91('0x4'));var BPromise=require(_0x1f91('0x5'));var rp=require(_0x1f91('0x6'));var fs=require('fs');var path=require(_0x1f91('0x7'));var rimraf=require('rimraf');var config=require(_0x1f91('0x8'));var attributes=require(_0x1f91('0x9'));module[_0x1f91('0xa')]=function(_0x3a431c,_0x5deea8){return _0x3a431c[_0x1f91('0xb')](_0x1f91('0xc'),attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1f91('0xd'),'collate':_0x1f91('0xe')});};
\ No newline at end of file
index f3305b7..0d14869 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf55c=['bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','then','info','ChatApplication,\x20%s,\x20%s','ChatApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','util','moment'];(function(_0x36009f,_0x159649){var _0x4ec87b=function(_0x5a0b52){while(--_0x5a0b52){_0x36009f['push'](_0x36009f['shift']());}};_0x4ec87b(++_0x159649);}(_0xf55c,0x178));var _0xcf55=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xf55c[_0x1ddedd];return _0xa3e1ac;};'use strict';var _=require('lodash');var util=require(_0xcf55('0x0'));var moment=require(_0xcf55('0x1'));var BPromise=require(_0xcf55('0x2'));var rs=require(_0xcf55('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xcf55('0x4'));var logger=require('../../config/logger')(_0xcf55('0x5'));var config=require(_0xcf55('0x6'));var jayson=require(_0xcf55('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x531638,_0x31c14b,_0x506270){return new BPromise(function(_0x24ae32,_0x2bb259){return client['request'](_0x531638,_0x506270)[_0xcf55('0x8')](function(_0x4c9272){logger[_0xcf55('0x9')](_0xcf55('0xa'),_0x31c14b,'request\x20sent');logger['debug'](_0xcf55('0xb'),_0x31c14b,_0xcf55('0xc'),JSON['stringify'](_0x4c9272));if(_0x4c9272[_0xcf55('0xd')]){if(_0x4c9272[_0xcf55('0xd')][_0xcf55('0xe')]===0x1f4){logger[_0xcf55('0xd')]('ChatApplication,\x20%s,\x20%s',_0x31c14b,_0x4c9272[_0xcf55('0xd')][_0xcf55('0xf')]);return _0x2bb259(_0x4c9272[_0xcf55('0xd')][_0xcf55('0xf')]);}logger[_0xcf55('0xd')](_0xcf55('0xa'),_0x31c14b,_0x4c9272['error'][_0xcf55('0xf')]);return _0x24ae32(_0x4c9272[_0xcf55('0xd')]['message']);}else{logger[_0xcf55('0x9')](_0xcf55('0xa'),_0x31c14b,_0xcf55('0xc'));_0x24ae32(_0x4c9272[_0xcf55('0x10')]['message']);}})[_0xcf55('0x11')](function(_0x14d6eb){logger[_0xcf55('0xd')](_0xcf55('0xa'),_0x31c14b,_0x14d6eb);_0x2bb259(_0x14d6eb);});});}
\ No newline at end of file
+var _0xf3e4=['ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info'];(function(_0x526302,_0x450200){var _0xd505be=function(_0x164870){while(--_0x164870){_0x526302['push'](_0x526302['shift']());}};_0xd505be(++_0x450200);}(_0xf3e4,0x11c));var _0x4f3e=function(_0x3e5121,_0x178e78){_0x3e5121=_0x3e5121-0x0;var _0x2886e3=_0xf3e4[_0x3e5121];return _0x2886e3;};'use strict';var _=require(_0x4f3e('0x0'));var util=require(_0x4f3e('0x1'));var moment=require(_0x4f3e('0x2'));var BPromise=require('bluebird');var rs=require(_0x4f3e('0x3'));var fs=require('fs');var Redis=require(_0x4f3e('0x4'));var db=require(_0x4f3e('0x5'))['db'];var utils=require(_0x4f3e('0x6'));var logger=require(_0x4f3e('0x7'))(_0x4f3e('0x8'));var config=require(_0x4f3e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x4f3e('0xa')][_0x4f3e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3d0267,_0x2ebc32,_0x152ef1){return new BPromise(function(_0x413534,_0x4a897a){return client[_0x4f3e('0xc')](_0x3d0267,_0x152ef1)[_0x4f3e('0xd')](function(_0x31bfbd){logger[_0x4f3e('0xe')](_0x4f3e('0xf'),_0x2ebc32,_0x4f3e('0x10'));logger[_0x4f3e('0x11')](_0x4f3e('0x12'),_0x2ebc32,_0x4f3e('0x10'),JSON['stringify'](_0x31bfbd));if(_0x31bfbd['error']){if(_0x31bfbd[_0x4f3e('0x13')][_0x4f3e('0x14')]===0x1f4){logger['error'](_0x4f3e('0xf'),_0x2ebc32,_0x31bfbd[_0x4f3e('0x13')][_0x4f3e('0x15')]);return _0x4a897a(_0x31bfbd[_0x4f3e('0x13')][_0x4f3e('0x15')]);}logger[_0x4f3e('0x13')](_0x4f3e('0xf'),_0x2ebc32,_0x31bfbd[_0x4f3e('0x13')][_0x4f3e('0x15')]);return _0x413534(_0x31bfbd[_0x4f3e('0x13')]['message']);}else{logger[_0x4f3e('0xe')](_0x4f3e('0xf'),_0x2ebc32,_0x4f3e('0x10'));_0x413534(_0x31bfbd['result'][_0x4f3e('0x15')]);}})[_0x4f3e('0x16')](function(_0x431224){logger[_0x4f3e('0x13')]('ChatApplication,\x20%s,\x20%s',_0x2ebc32,_0x431224);_0x4a897a(_0x431224);});});}
\ No newline at end of file
index e741089..c780ace 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4fb=['util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./chatApplication.controller','get','/:id','put','isAuthenticated','destroy','exports','multer'];(function(_0x44b89f,_0xe57ede){var _0x5db9fb=function(_0x4d5415){while(--_0x4d5415){_0x44b89f['push'](_0x44b89f['shift']());}};_0x5db9fb(++_0xe57ede);}(_0xf4fb,0xc3));var _0xbf4f=function(_0x293665,_0xa5ab5a){_0x293665=_0x293665-0x0;var _0x26a774=_0xf4fb[_0x293665];return _0x26a774;};'use strict';var multer=require(_0xbf4f('0x0'));var util=require(_0xbf4f('0x1'));var path=require('path');var timeout=require(_0xbf4f('0x2'));var express=require(_0xbf4f('0x3'));var router=express[_0xbf4f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xbf4f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xbf4f('0x6'));var controller=require(_0xbf4f('0x7'));router[_0xbf4f('0x8')](_0xbf4f('0x9'),auth['isAuthenticated'](),controller['show']);router[_0xbf4f('0xa')]('/:id',auth[_0xbf4f('0xb')](),controller['update']);router['delete'](_0xbf4f('0x9'),auth[_0xbf4f('0xb')](),controller[_0xbf4f('0xc')]);module[_0xbf4f('0xd')]=router;
\ No newline at end of file
+var _0x4778=['./chatApplication.controller','/:id','put','update','delete','isAuthenticated','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2fc9fd,_0x27c664){var _0x28621d=function(_0x184b99){while(--_0x184b99){_0x2fc9fd['push'](_0x2fc9fd['shift']());}};_0x28621d(++_0x27c664);}(_0x4778,0x68));var _0x8477=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0x4778[_0x28947d];return _0x12d2ee;};'use strict';var multer=require(_0x8477('0x0'));var util=require(_0x8477('0x1'));var path=require(_0x8477('0x2'));var timeout=require('connect-timeout');var express=require(_0x8477('0x3'));var router=express[_0x8477('0x4')]();var fs_extra=require(_0x8477('0x5'));var auth=require(_0x8477('0x6'));var interaction=require(_0x8477('0x7'));var config=require('../../config/environment');var controller=require(_0x8477('0x8'));router['get'](_0x8477('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x8477('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x8477('0xb')]);router[_0x8477('0xc')](_0x8477('0x9'),auth[_0x8477('0xd')](),controller[_0x8477('0xe')]);module[_0x8477('0xf')]=router;
\ No newline at end of file
index 49a2b47..dcdf9e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d1d=['STRING','BOOLEAN'];(function(_0x7dc017,_0xff43e9){var _0x7e1107=function(_0x188d74){while(--_0x188d74){_0x7dc017['push'](_0x7dc017['shift']());}};_0x7e1107(++_0xff43e9);}(_0x2d1d,0x10e));var _0xd2d1=function(_0x60609,_0x22b28d){_0x60609=_0x60609-0x0;var _0x5cc92f=_0x2d1d[_0x60609];return _0x5cc92f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xd2d1('0x0')],'allowNull':![]},'description':{'type':Sequelize[_0xd2d1('0x0')]},'write':{'type':Sequelize[_0xd2d1('0x1')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x5946=['STRING','BOOLEAN','exports'];(function(_0x54dba8,_0x3f6a64){var _0x2dc42d=function(_0x4962d1){while(--_0x4962d1){_0x54dba8['push'](_0x54dba8['shift']());}};_0x2dc42d(++_0x3f6a64);}(_0x5946,0x8f));var _0x6594=function(_0x10f68e,_0xf198ea){_0x10f68e=_0x10f68e-0x0;var _0x4c8372=_0x5946[_0x10f68e];return _0x4c8372;};'use strict';var Sequelize=require('sequelize');module[_0x6594('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x6594('0x1')]},'write':{'type':Sequelize[_0x6594('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 53302e8..36dcfbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd3c=['apply','save','update','then','destroy','stack','name','send','map','ChatGroup','rawAttributes','fieldName','type','key','query','intersection','model','attributes','length','hasOwnProperty','nolimit','sort','where','filters','merge','filter','includeAll','include','rows','catch','params','keys','fields','create','body','describe','user','addMembers','find','omit','ids','getMembers','findOne','User','order','options','removeMembers','addMessage','ChatGroupId','ChatInternalMessage','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','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','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range'];(function(_0xc00490,_0x41e43f){var _0x155c46=function(_0x3afce7){while(--_0x3afce7){_0xc00490['push'](_0xc00490['shift']());}};_0x155c46(++_0x41e43f);}(_0xbd3c,0x154));var _0xcbd3=function(_0x34b307,_0x1a2bbe){_0x34b307=_0x34b307-0x0;var _0x32ce25=_0xbd3c[_0x34b307];return _0x32ce25;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xcbd3('0x0'));var jsonpatch=require(_0xcbd3('0x1'));var rp=require(_0xcbd3('0x2'));var moment=require('moment');var BPromise=require(_0xcbd3('0x3'));var Mustache=require(_0xcbd3('0x4'));var util=require(_0xcbd3('0x5'));var path=require(_0xcbd3('0x6'));var sox=require(_0xcbd3('0x7'));var csv=require('to-csv');var ejs=require(_0xcbd3('0x8'));var fs=require('fs');var fs_extra=require(_0xcbd3('0x9'));var _=require(_0xcbd3('0xa'));var squel=require('squel');var crypto=require(_0xcbd3('0xb'));var jsforce=require(_0xcbd3('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcbd3('0xd'));var Papa=require(_0xcbd3('0xe'));var Redis=require(_0xcbd3('0xf'));var authService=require(_0xcbd3('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xcbd3('0x11'));var hardwareService=require(_0xcbd3('0x12'));var logger=require(_0xcbd3('0x13'))(_0xcbd3('0x14'));var utils=require(_0xcbd3('0x15'));var config=require(_0xcbd3('0x16'));var licenseUtil=require(_0xcbd3('0x17'));var db=require(_0xcbd3('0x18'))['db'];config[_0xcbd3('0x19')]=_[_0xcbd3('0x1a')](config[_0xcbd3('0x19')],{'host':_0xcbd3('0x1b'),'port':0x18eb});var socket=require(_0xcbd3('0x1c'))(new Redis(config['redis']));require('./chatGroup.socket')[_0xcbd3('0x1d')](socket);function respondWithStatusCode(_0x1504c8,_0x28bab2){_0x28bab2=_0x28bab2||0xcc;return function(_0x38f148){if(_0x38f148){return _0x1504c8[_0xcbd3('0x1e')](_0x28bab2);}return _0x1504c8[_0xcbd3('0x1f')](_0x28bab2)[_0xcbd3('0x20')]();};}function respondWithResult(_0xcbf8ad,_0x4f9860){_0x4f9860=_0x4f9860||0xc8;return function(_0x54f084){if(_0x54f084){return _0xcbf8ad['status'](_0x4f9860)[_0xcbd3('0x21')](_0x54f084);}};}function respondWithFilteredResult(_0x1523fd,_0x246786){return function(_0x158f4c){if(_0x158f4c){var _0x54cbdc=typeof _0x246786[_0xcbd3('0x22')]===_0xcbd3('0x23')&&typeof _0x246786[_0xcbd3('0x24')]===_0xcbd3('0x23');var _0x3cef7b=_0x158f4c['count'];var _0x227605=_0x54cbdc?0x0:_0x246786[_0xcbd3('0x22')];var _0x359a19=_0x54cbdc?_0x158f4c[_0xcbd3('0x25')]:_0x246786[_0xcbd3('0x22')]+_0x246786[_0xcbd3('0x24')];var _0x3b737f;if(_0x359a19>=_0x3cef7b){_0x359a19=_0x3cef7b;_0x3b737f=0xc8;}else{_0x3b737f=0xce;}_0x1523fd[_0xcbd3('0x1f')](_0x3b737f);return _0x1523fd[_0xcbd3('0x26')](_0xcbd3('0x27'),_0x227605+'-'+_0x359a19+'/'+_0x3cef7b)[_0xcbd3('0x21')](_0x158f4c);}return null;};}function patchUpdates(_0x887fcb){return function(_0x50420e){try{jsonpatch[_0xcbd3('0x28')](_0x50420e,_0x887fcb,!![]);}catch(_0x3d74ac){return BPromise['reject'](_0x3d74ac);}return _0x50420e[_0xcbd3('0x29')]();};}function saveUpdates(_0x1cd80f,_0x51c7a7){return function(_0x31909b){if(_0x31909b){return _0x31909b[_0xcbd3('0x2a')](_0x1cd80f)[_0xcbd3('0x2b')](function(_0xd7113){return _0xd7113;});}return null;};}function removeEntity(_0x4d0bd3,_0x49c190){return function(_0x4991a6){if(_0x4991a6){return _0x4991a6[_0xcbd3('0x2c')]()[_0xcbd3('0x2b')](function(){_0x4d0bd3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b95c9,_0x35b8ee){return function(_0x312d91){if(!_0x312d91){_0x2b95c9[_0xcbd3('0x1e')](0x194);}return _0x312d91;};}function handleError(_0x4b5765,_0x959759){_0x959759=_0x959759||0x1f4;return function(_0x1a50c8){logger['error'](_0x1a50c8[_0xcbd3('0x2d')]);if(_0x1a50c8[_0xcbd3('0x2e')]){delete _0x1a50c8[_0xcbd3('0x2e')];}_0x4b5765[_0xcbd3('0x1f')](_0x959759)[_0xcbd3('0x2f')](_0x1a50c8);};}exports['index']=function(_0x347b5b,_0x1e9c5b){var _0x6ffe7a={},_0x20d12a={},_0x4ea6d6={'count':0x0,'rows':[]};var _0xe7fd=_[_0xcbd3('0x30')](db[_0xcbd3('0x31')][_0xcbd3('0x32')],function(_0x50589a){return{'name':_0x50589a[_0xcbd3('0x33')],'type':_0x50589a[_0xcbd3('0x34')][_0xcbd3('0x35')]};});_0x20d12a['model']=_[_0xcbd3('0x30')](_0xe7fd,_0xcbd3('0x2e'));_0x20d12a[_0xcbd3('0x36')]=_['keys'](_0x347b5b[_0xcbd3('0x36')]);_0x20d12a['filters']=_[_0xcbd3('0x37')](_0x20d12a[_0xcbd3('0x38')],_0x20d12a[_0xcbd3('0x36')]);_0x6ffe7a[_0xcbd3('0x39')]=_['intersection'](_0x20d12a[_0xcbd3('0x38')],qs['fields'](_0x347b5b[_0xcbd3('0x36')]['fields']));_0x6ffe7a[_0xcbd3('0x39')]=_0x6ffe7a[_0xcbd3('0x39')][_0xcbd3('0x3a')]?_0x6ffe7a[_0xcbd3('0x39')]:_0x20d12a[_0xcbd3('0x38')];if(!_0x347b5b[_0xcbd3('0x36')][_0xcbd3('0x3b')](_0xcbd3('0x3c'))){_0x6ffe7a[_0xcbd3('0x24')]=qs[_0xcbd3('0x24')](_0x347b5b[_0xcbd3('0x36')][_0xcbd3('0x24')]);_0x6ffe7a[_0xcbd3('0x22')]=qs[_0xcbd3('0x22')](_0x347b5b[_0xcbd3('0x36')][_0xcbd3('0x22')]);}_0x6ffe7a['order']=qs[_0xcbd3('0x3d')](_0x347b5b[_0xcbd3('0x36')][_0xcbd3('0x3d')]);_0x6ffe7a[_0xcbd3('0x3e')]=qs[_0xcbd3('0x3f')](_['pick'](_0x347b5b[_0xcbd3('0x36')],_0x20d12a[_0xcbd3('0x3f')]),_0xe7fd);if(_0x347b5b[_0xcbd3('0x36')]['filter']){_0x6ffe7a['where']=_[_0xcbd3('0x40')](_0x6ffe7a['where'],{'$or':_[_0xcbd3('0x30')](_0xe7fd,function(_0x33bc4e){if(_0x33bc4e[_0xcbd3('0x34')]!=='VIRTUAL'){var _0x545255={};_0x545255[_0x33bc4e[_0xcbd3('0x2e')]]={'$like':'%'+_0x347b5b[_0xcbd3('0x36')][_0xcbd3('0x41')]+'%'};return _0x545255;}})});}_0x6ffe7a=_[_0xcbd3('0x40')]({},_0x6ffe7a,_0x347b5b['options']);var _0x2ec6f7={'where':_0x6ffe7a[_0xcbd3('0x3e')]};return db[_0xcbd3('0x31')][_0xcbd3('0x25')](_0x2ec6f7)[_0xcbd3('0x2b')](function(_0x21987c){_0x4ea6d6['count']=_0x21987c;if(_0x347b5b[_0xcbd3('0x36')][_0xcbd3('0x42')]){_0x6ffe7a[_0xcbd3('0x43')]=[{'all':!![]}];}return db[_0xcbd3('0x31')]['findAll'](_0x6ffe7a);})['then'](function(_0xcb0fea){_0x4ea6d6[_0xcbd3('0x44')]=_0xcb0fea;return _0x4ea6d6;})[_0xcbd3('0x2b')](respondWithFilteredResult(_0x1e9c5b,_0x6ffe7a))[_0xcbd3('0x45')](handleError(_0x1e9c5b,null));};exports['show']=function(_0x45142d,_0x222aeb){var _0xc5ec56={'raw':!![],'where':{'id':_0x45142d[_0xcbd3('0x46')]['id']}},_0x4beff5={};_0x4beff5[_0xcbd3('0x38')]=_[_0xcbd3('0x47')](db[_0xcbd3('0x31')][_0xcbd3('0x32')]);_0x4beff5['query']=_[_0xcbd3('0x47')](_0x45142d[_0xcbd3('0x36')]);_0x4beff5[_0xcbd3('0x3f')]=_[_0xcbd3('0x37')](_0x4beff5[_0xcbd3('0x38')],_0x4beff5[_0xcbd3('0x36')]);_0xc5ec56[_0xcbd3('0x39')]=_[_0xcbd3('0x37')](_0x4beff5['model'],qs[_0xcbd3('0x48')](_0x45142d[_0xcbd3('0x36')][_0xcbd3('0x48')]));_0xc5ec56[_0xcbd3('0x39')]=_0xc5ec56[_0xcbd3('0x39')][_0xcbd3('0x3a')]?_0xc5ec56[_0xcbd3('0x39')]:_0x4beff5[_0xcbd3('0x38')];if(_0x45142d[_0xcbd3('0x36')][_0xcbd3('0x42')]){_0xc5ec56[_0xcbd3('0x43')]=[{'all':!![]}];}_0xc5ec56=_[_0xcbd3('0x40')]({},_0xc5ec56,_0x45142d['options']);return db[_0xcbd3('0x31')]['find'](_0xc5ec56)[_0xcbd3('0x2b')](handleEntityNotFound(_0x222aeb,null))[_0xcbd3('0x2b')](respondWithResult(_0x222aeb,null))[_0xcbd3('0x45')](handleError(_0x222aeb,null));};exports[_0xcbd3('0x49')]=function(_0x3fd295,_0x498f88){return db[_0xcbd3('0x31')][_0xcbd3('0x49')](_0x3fd295['body'],{})[_0xcbd3('0x2b')](respondWithResult(_0x498f88,0xc9))['catch'](handleError(_0x498f88,null));};exports[_0xcbd3('0x2a')]=function(_0x6e3fd3,_0x10d4b8){if(_0x6e3fd3[_0xcbd3('0x4a')]['id']){delete _0x6e3fd3['body']['id'];}return db[_0xcbd3('0x31')]['find']({'where':{'id':_0x6e3fd3[_0xcbd3('0x46')]['id']}})[_0xcbd3('0x2b')](handleEntityNotFound(_0x10d4b8,null))[_0xcbd3('0x2b')](saveUpdates(_0x6e3fd3[_0xcbd3('0x4a')],null))[_0xcbd3('0x2b')](respondWithResult(_0x10d4b8,null))[_0xcbd3('0x45')](handleError(_0x10d4b8,null));};exports[_0xcbd3('0x2c')]=function(_0x4320c9,_0x4f59b6){return db[_0xcbd3('0x31')]['find']({'where':{'id':_0x4320c9[_0xcbd3('0x46')]['id']}})['then'](handleEntityNotFound(_0x4f59b6,null))['then'](removeEntity(_0x4f59b6,null))['catch'](handleError(_0x4f59b6,null));};exports[_0xcbd3('0x4b')]=function(_0x587e81,_0x52179e){return db[_0xcbd3('0x31')][_0xcbd3('0x4b')]()[_0xcbd3('0x2b')](respondWithResult(_0x52179e,null))[_0xcbd3('0x45')](handleError(_0x52179e,null));};exports['getUnread']=function(_0x5638c2,_0x33bd0d,_0x42fd5c){return db['ChatInternalMessage'][_0xcbd3('0x25')]({'where':{'ChatGroupId':_0x5638c2[_0xcbd3('0x46')]['id'],'ToId':_0x5638c2[_0xcbd3('0x4c')]['id'],'read':![]}})[_0xcbd3('0x2b')](function(_0x5c2f5){return{'id':_['toInteger'](_0x5638c2[_0xcbd3('0x46')]['id']),'count':_0x5c2f5};})[_0xcbd3('0x2b')](respondWithResult(_0x33bd0d,null))['catch'](handleError(_0x33bd0d,null));};exports[_0xcbd3('0x4d')]=function(_0x404e97,_0x347cb1,_0x366914){return db[_0xcbd3('0x31')][_0xcbd3('0x4e')]({'where':{'id':_0x404e97[_0xcbd3('0x46')]['id']}})[_0xcbd3('0x2b')](handleEntityNotFound(_0x347cb1,null))['then'](function(_0x5127c5){if(_0x5127c5){return _0x5127c5['addMembers'](_0x404e97[_0xcbd3('0x4a')]['ids'],_[_0xcbd3('0x4f')](_0x404e97[_0xcbd3('0x4a')],[_0xcbd3('0x50'),'id'])||{});}})[_0xcbd3('0x2b')](respondWithResult(_0x347cb1,null))[_0xcbd3('0x45')](handleError(_0x347cb1,null));};exports[_0xcbd3('0x51')]=function(_0x28117b,_0x29aefe,_0x181088){var _0x329858={};var _0x110e3a={};var _0x4b14a9;var _0x544d7f;return db[_0xcbd3('0x31')][_0xcbd3('0x52')]({'where':{'id':_0x28117b[_0xcbd3('0x46')]['id']}})['then'](handleEntityNotFound(_0x29aefe,null))[_0xcbd3('0x2b')](function(_0x481408){if(_0x481408){_0x4b14a9=_0x481408;_0x110e3a[_0xcbd3('0x38')]=_[_0xcbd3('0x47')](db[_0xcbd3('0x53')][_0xcbd3('0x32')]);_0x110e3a[_0xcbd3('0x36')]=_['keys'](_0x28117b['query']);_0x110e3a[_0xcbd3('0x3f')]=_['intersection'](_0x110e3a[_0xcbd3('0x38')],_0x110e3a[_0xcbd3('0x36')]);_0x329858[_0xcbd3('0x39')]=_[_0xcbd3('0x37')](_0x110e3a[_0xcbd3('0x38')],qs['fields'](_0x28117b[_0xcbd3('0x36')][_0xcbd3('0x48')]));_0x329858[_0xcbd3('0x39')]=_0x329858[_0xcbd3('0x39')][_0xcbd3('0x3a')]?_0x329858[_0xcbd3('0x39')]:_0x110e3a[_0xcbd3('0x38')];_0x329858[_0xcbd3('0x54')]=qs[_0xcbd3('0x3d')](_0x28117b[_0xcbd3('0x36')]['sort']);_0x329858[_0xcbd3('0x3e')]=qs[_0xcbd3('0x3f')](_['pick'](_0x28117b[_0xcbd3('0x36')],_0x110e3a['filters']));if(_0x28117b['query'][_0xcbd3('0x41')]){_0x329858[_0xcbd3('0x3e')]=_[_0xcbd3('0x40')](_0x329858[_0xcbd3('0x3e')],{'$or':_[_0xcbd3('0x30')](_0x329858[_0xcbd3('0x39')],function(_0x535096){var _0x10b816={};_0x10b816[_0x535096]={'$like':'%'+_0x28117b[_0xcbd3('0x36')][_0xcbd3('0x41')]+'%'};return _0x10b816;})});}_0x329858=_['merge']({},_0x329858,_0x28117b[_0xcbd3('0x55')]);return _0x4b14a9[_0xcbd3('0x51')](_0x329858);}})['then'](function(_0x1c0908){if(_0x1c0908){_0x544d7f=_0x1c0908[_0xcbd3('0x3a')];if(!_0x28117b[_0xcbd3('0x36')][_0xcbd3('0x3b')](_0xcbd3('0x3c'))){_0x329858[_0xcbd3('0x24')]=qs['limit'](_0x28117b[_0xcbd3('0x36')][_0xcbd3('0x24')]);_0x329858[_0xcbd3('0x22')]=qs[_0xcbd3('0x22')](_0x28117b[_0xcbd3('0x36')][_0xcbd3('0x22')]);}return _0x4b14a9[_0xcbd3('0x51')](_0x329858);}})[_0xcbd3('0x2b')](function(_0xbb4bf3){if(_0xbb4bf3){return _0xbb4bf3?{'count':_0x544d7f,'rows':_0xbb4bf3}:null;}})[_0xcbd3('0x2b')](respondWithResult(_0x29aefe,null))[_0xcbd3('0x45')](handleError(_0x29aefe,null));};exports[_0xcbd3('0x56')]=function(_0x14f82f,_0x157ab3,_0x52b4d8){return db[_0xcbd3('0x31')]['find']({'where':{'id':_0x14f82f[_0xcbd3('0x46')]['id']}})['then'](handleEntityNotFound(_0x157ab3,null))[_0xcbd3('0x2b')](function(_0xbd9b9b){if(_0xbd9b9b){return _0xbd9b9b[_0xcbd3('0x56')](_0x14f82f[_0xcbd3('0x36')][_0xcbd3('0x50')]);}})[_0xcbd3('0x2b')](respondWithStatusCode(_0x157ab3,null))[_0xcbd3('0x45')](handleError(_0x157ab3,null));};exports[_0xcbd3('0x57')]=function(_0x4ac9f0,_0x6fa3f2,_0x30dc7d){if(_0x4ac9f0[_0xcbd3('0x4a')]['id']){delete _0x4ac9f0[_0xcbd3('0x4a')]['id'];}return db[_0xcbd3('0x31')][_0xcbd3('0x4e')]({'where':{'id':_0x4ac9f0[_0xcbd3('0x46')]['id']}})[_0xcbd3('0x2b')](handleEntityNotFound(_0x6fa3f2,null))[_0xcbd3('0x2b')](function(_0x2f0bd7){if(_0x2f0bd7){_0x4ac9f0[_0xcbd3('0x4a')][_0xcbd3('0x58')]=_0x2f0bd7['id'];return db[_0xcbd3('0x59')][_0xcbd3('0x49')](_0x4ac9f0['body']);}})[_0xcbd3('0x2b')](respondWithResult(_0x6fa3f2,null))[_0xcbd3('0x45')](handleError(_0x6fa3f2,null));};exports[_0xcbd3('0x5a')]=function(_0xf6741f,_0xfd8aed,_0x184830){var _0x3a8fd5={};var _0x18d40b={};var _0x2f5c6c;var _0x38737c;return db[_0xcbd3('0x31')][_0xcbd3('0x52')]({'where':{'id':_0xf6741f[_0xcbd3('0x46')]['id']}})['then'](handleEntityNotFound(_0xfd8aed,null))[_0xcbd3('0x2b')](function(_0x53773){if(_0x53773){_0x2f5c6c=_0x53773;_0x18d40b['model']=_[_0xcbd3('0x47')](db[_0xcbd3('0x59')][_0xcbd3('0x32')]);_0x18d40b[_0xcbd3('0x36')]=_[_0xcbd3('0x47')](_0xf6741f[_0xcbd3('0x36')]);_0x18d40b[_0xcbd3('0x3f')]=_[_0xcbd3('0x37')](_0x18d40b[_0xcbd3('0x38')],_0x18d40b['query']);_0x3a8fd5['attributes']=_['intersection'](_0x18d40b[_0xcbd3('0x38')],qs[_0xcbd3('0x48')](_0xf6741f[_0xcbd3('0x36')]['fields']));_0x3a8fd5[_0xcbd3('0x39')]=_0x3a8fd5[_0xcbd3('0x39')][_0xcbd3('0x3a')]?_0x3a8fd5[_0xcbd3('0x39')]:_0x18d40b['model'];_0x3a8fd5[_0xcbd3('0x54')]=qs[_0xcbd3('0x3d')](_0xf6741f[_0xcbd3('0x36')]['sort']);_0x3a8fd5[_0xcbd3('0x3e')]=qs[_0xcbd3('0x3f')](_['pick'](_0xf6741f[_0xcbd3('0x36')],_0x18d40b['filters']));if(_0xf6741f['query'][_0xcbd3('0x41')]){_0x3a8fd5[_0xcbd3('0x3e')]=_['merge'](_0x3a8fd5['where'],{'$or':_[_0xcbd3('0x30')](_0x3a8fd5[_0xcbd3('0x39')],function(_0x257cec){var _0x5222c6={};_0x5222c6[_0x257cec]={'$like':'%'+_0xf6741f[_0xcbd3('0x36')][_0xcbd3('0x41')]+'%'};return _0x5222c6;})});}if(_0xf6741f[_0xcbd3('0x36')]['$gte']){var _0x1f6a67=_0xf6741f[_0xcbd3('0x36')][_0xcbd3('0x5b')][_0xcbd3('0x5c')](',');var _0x2eb3f9={};_0x2eb3f9[_0x1f6a67[0x0]]={'$gte':moment(_0x1f6a67[0x1])[_0xcbd3('0x5d')](_0xcbd3('0x5e'))};_0x3a8fd5[_0xcbd3('0x3e')]=_[_0xcbd3('0x40')](_0x3a8fd5[_0xcbd3('0x3e')],_0x2eb3f9);}_0x3a8fd5=_[_0xcbd3('0x40')]({},_0x3a8fd5,_0xf6741f['options']);return _0x2f5c6c[_0xcbd3('0x5a')](_0x3a8fd5);}})['then'](function(_0x303c3e){if(_0x303c3e){_0x38737c=_0x303c3e[_0xcbd3('0x3a')];if(!_0xf6741f['query'][_0xcbd3('0x3b')](_0xcbd3('0x3c'))){_0x3a8fd5['limit']=qs[_0xcbd3('0x24')](_0xf6741f[_0xcbd3('0x36')][_0xcbd3('0x24')]);_0x3a8fd5[_0xcbd3('0x22')]=qs[_0xcbd3('0x22')](_0xf6741f[_0xcbd3('0x36')][_0xcbd3('0x22')]);}return _0x2f5c6c[_0xcbd3('0x5a')](_0x3a8fd5);}})[_0xcbd3('0x2b')](function(_0x4c3ba5){if(_0x4c3ba5){return _0x4c3ba5?{'count':_0x38737c,'rows':_0x4c3ba5}:null;}})[_0xcbd3('0x2b')](respondWithResult(_0xfd8aed,null))[_0xcbd3('0x45')](handleError(_0xfd8aed,null));};
\ No newline at end of file
+var _0xb3de=['merge','options','includeAll','include','catch','show','create','body','find','params','describe','getUnread','ChatInternalMessage','user','addMembers','ids','omit','User','order','getMembers','removeMembers','ChatGroupId','getMessages','$gte','format','eml-format','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','update','then','destroy','error','stack','name','index','map','ChatGroup','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0xb3de,0x121));var _0xeb3d=function(_0x10749a,_0x3ad550){_0x10749a=_0x10749a-0x0;var _0x4487a8=_0xb3de[_0x10749a];return _0x4487a8;};'use strict';var emlformat=require(_0xeb3d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xeb3d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xeb3d('0x2'));var moment=require('moment');var BPromise=require(_0xeb3d('0x3'));var Mustache=require(_0xeb3d('0x4'));var util=require(_0xeb3d('0x5'));var path=require('path');var sox=require(_0xeb3d('0x6'));var csv=require(_0xeb3d('0x7'));var ejs=require(_0xeb3d('0x8'));var fs=require('fs');var fs_extra=require(_0xeb3d('0x9'));var _=require(_0xeb3d('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xeb3d('0xb'));var toCsv=require(_0xeb3d('0x7'));var querystring=require('querystring');var Papa=require(_0xeb3d('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xeb3d('0xd'));var as=require(_0xeb3d('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xeb3d('0xf'))(_0xeb3d('0x10'));var utils=require(_0xeb3d('0x11'));var config=require(_0xeb3d('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xeb3d('0x13'))['db'];config['redis']=_[_0xeb3d('0x14')](config[_0xeb3d('0x15')],{'host':_0xeb3d('0x16'),'port':0x18eb});var socket=require(_0xeb3d('0x17'))(new Redis(config[_0xeb3d('0x15')]));require('./chatGroup.socket')[_0xeb3d('0x18')](socket);function respondWithStatusCode(_0x397f46,_0x30c5b2){_0x30c5b2=_0x30c5b2||0xcc;return function(_0x1b9181){if(_0x1b9181){return _0x397f46[_0xeb3d('0x19')](_0x30c5b2);}return _0x397f46[_0xeb3d('0x1a')](_0x30c5b2)[_0xeb3d('0x1b')]();};}function respondWithResult(_0x145a86,_0x3e1a19){_0x3e1a19=_0x3e1a19||0xc8;return function(_0x45cb3e){if(_0x45cb3e){return _0x145a86['status'](_0x3e1a19)[_0xeb3d('0x1c')](_0x45cb3e);}};}function respondWithFilteredResult(_0x340caa,_0x26d9e9){return function(_0x53d5dc){if(_0x53d5dc){var _0x4d9f5c=typeof _0x26d9e9[_0xeb3d('0x1d')]==='undefined'&&typeof _0x26d9e9[_0xeb3d('0x1e')]===_0xeb3d('0x1f');var _0x122549=_0x53d5dc['count'];var _0x3180d3=_0x4d9f5c?0x0:_0x26d9e9[_0xeb3d('0x1d')];var _0x3759da=_0x4d9f5c?_0x53d5dc[_0xeb3d('0x20')]:_0x26d9e9['offset']+_0x26d9e9['limit'];var _0xd111d7;if(_0x3759da>=_0x122549){_0x3759da=_0x122549;_0xd111d7=0xc8;}else{_0xd111d7=0xce;}_0x340caa[_0xeb3d('0x1a')](_0xd111d7);return _0x340caa[_0xeb3d('0x21')]('Content-Range',_0x3180d3+'-'+_0x3759da+'/'+_0x122549)[_0xeb3d('0x1c')](_0x53d5dc);}return null;};}function patchUpdates(_0x4b9f6a){return function(_0x913039){try{jsonpatch[_0xeb3d('0x22')](_0x913039,_0x4b9f6a,!![]);}catch(_0x1736b9){return BPromise[_0xeb3d('0x23')](_0x1736b9);}return _0x913039['save']();};}function saveUpdates(_0x1090a9,_0x50bb42){return function(_0x15e175){if(_0x15e175){return _0x15e175[_0xeb3d('0x24')](_0x1090a9)[_0xeb3d('0x25')](function(_0x1db1bf){return _0x1db1bf;});}return null;};}function removeEntity(_0x12a51e,_0x3a0447){return function(_0x2bdf8c){if(_0x2bdf8c){return _0x2bdf8c[_0xeb3d('0x26')]()[_0xeb3d('0x25')](function(){_0x12a51e['status'](0xcc)[_0xeb3d('0x1b')]();});}};}function handleEntityNotFound(_0x2d5626,_0x1b4135){return function(_0x218343){if(!_0x218343){_0x2d5626[_0xeb3d('0x19')](0x194);}return _0x218343;};}function handleError(_0x46e12c,_0x23704){_0x23704=_0x23704||0x1f4;return function(_0x3505b6){logger[_0xeb3d('0x27')](_0x3505b6[_0xeb3d('0x28')]);if(_0x3505b6[_0xeb3d('0x29')]){delete _0x3505b6[_0xeb3d('0x29')];}_0x46e12c[_0xeb3d('0x1a')](_0x23704)['send'](_0x3505b6);};}exports[_0xeb3d('0x2a')]=function(_0x2ed9ca,_0x281a1d){var _0x1c4fce={},_0x30711a={},_0x46ea8b={'count':0x0,'rows':[]};var _0x3a1830=_[_0xeb3d('0x2b')](db[_0xeb3d('0x2c')][_0xeb3d('0x2d')],function(_0x3cee4a){return{'name':_0x3cee4a[_0xeb3d('0x2e')],'type':_0x3cee4a['type'][_0xeb3d('0x2f')]};});_0x30711a[_0xeb3d('0x30')]=_['map'](_0x3a1830,_0xeb3d('0x29'));_0x30711a[_0xeb3d('0x31')]=_[_0xeb3d('0x32')](_0x2ed9ca[_0xeb3d('0x31')]);_0x30711a[_0xeb3d('0x33')]=_['intersection'](_0x30711a[_0xeb3d('0x30')],_0x30711a[_0xeb3d('0x31')]);_0x1c4fce[_0xeb3d('0x34')]=_[_0xeb3d('0x35')](_0x30711a[_0xeb3d('0x30')],qs[_0xeb3d('0x36')](_0x2ed9ca[_0xeb3d('0x31')][_0xeb3d('0x36')]));_0x1c4fce[_0xeb3d('0x34')]=_0x1c4fce[_0xeb3d('0x34')][_0xeb3d('0x37')]?_0x1c4fce['attributes']:_0x30711a[_0xeb3d('0x30')];if(!_0x2ed9ca[_0xeb3d('0x31')][_0xeb3d('0x38')](_0xeb3d('0x39'))){_0x1c4fce[_0xeb3d('0x1e')]=qs[_0xeb3d('0x1e')](_0x2ed9ca[_0xeb3d('0x31')]['limit']);_0x1c4fce['offset']=qs[_0xeb3d('0x1d')](_0x2ed9ca['query'][_0xeb3d('0x1d')]);}_0x1c4fce['order']=qs['sort'](_0x2ed9ca[_0xeb3d('0x31')][_0xeb3d('0x3a')]);_0x1c4fce[_0xeb3d('0x3b')]=qs[_0xeb3d('0x33')](_[_0xeb3d('0x3c')](_0x2ed9ca['query'],_0x30711a['filters']),_0x3a1830);if(_0x2ed9ca[_0xeb3d('0x31')][_0xeb3d('0x3d')]){_0x1c4fce[_0xeb3d('0x3b')]=_['merge'](_0x1c4fce[_0xeb3d('0x3b')],{'$or':_[_0xeb3d('0x2b')](_0x3a1830,function(_0x1432f8){if(_0x1432f8['type']!==_0xeb3d('0x3e')){var _0x562620={};_0x562620[_0x1432f8[_0xeb3d('0x29')]]={'$like':'%'+_0x2ed9ca[_0xeb3d('0x31')][_0xeb3d('0x3d')]+'%'};return _0x562620;}})});}_0x1c4fce=_[_0xeb3d('0x3f')]({},_0x1c4fce,_0x2ed9ca[_0xeb3d('0x40')]);var _0x104469={'where':_0x1c4fce[_0xeb3d('0x3b')]};return db[_0xeb3d('0x2c')][_0xeb3d('0x20')](_0x104469)[_0xeb3d('0x25')](function(_0x1affe4){_0x46ea8b['count']=_0x1affe4;if(_0x2ed9ca[_0xeb3d('0x31')][_0xeb3d('0x41')]){_0x1c4fce[_0xeb3d('0x42')]=[{'all':!![]}];}return db[_0xeb3d('0x2c')]['findAll'](_0x1c4fce);})['then'](function(_0x274d0e){_0x46ea8b['rows']=_0x274d0e;return _0x46ea8b;})[_0xeb3d('0x25')](respondWithFilteredResult(_0x281a1d,_0x1c4fce))[_0xeb3d('0x43')](handleError(_0x281a1d,null));};exports[_0xeb3d('0x44')]=function(_0xc08749,_0x3d6569){var _0x432c19={'raw':!![],'where':{'id':_0xc08749['params']['id']}},_0x30b3b3={};_0x30b3b3[_0xeb3d('0x30')]=_[_0xeb3d('0x32')](db[_0xeb3d('0x2c')]['rawAttributes']);_0x30b3b3[_0xeb3d('0x31')]=_[_0xeb3d('0x32')](_0xc08749[_0xeb3d('0x31')]);_0x30b3b3[_0xeb3d('0x33')]=_[_0xeb3d('0x35')](_0x30b3b3['model'],_0x30b3b3[_0xeb3d('0x31')]);_0x432c19[_0xeb3d('0x34')]=_[_0xeb3d('0x35')](_0x30b3b3[_0xeb3d('0x30')],qs['fields'](_0xc08749['query']['fields']));_0x432c19[_0xeb3d('0x34')]=_0x432c19[_0xeb3d('0x34')][_0xeb3d('0x37')]?_0x432c19[_0xeb3d('0x34')]:_0x30b3b3['model'];if(_0xc08749[_0xeb3d('0x31')]['includeAll']){_0x432c19[_0xeb3d('0x42')]=[{'all':!![]}];}_0x432c19=_[_0xeb3d('0x3f')]({},_0x432c19,_0xc08749[_0xeb3d('0x40')]);return db[_0xeb3d('0x2c')]['find'](_0x432c19)[_0xeb3d('0x25')](handleEntityNotFound(_0x3d6569,null))['then'](respondWithResult(_0x3d6569,null))[_0xeb3d('0x43')](handleError(_0x3d6569,null));};exports[_0xeb3d('0x45')]=function(_0x2d8dcf,_0x13f345){return db['ChatGroup'][_0xeb3d('0x45')](_0x2d8dcf[_0xeb3d('0x46')],{})[_0xeb3d('0x25')](respondWithResult(_0x13f345,0xc9))['catch'](handleError(_0x13f345,null));};exports[_0xeb3d('0x24')]=function(_0x47abb0,_0x5ed073){if(_0x47abb0[_0xeb3d('0x46')]['id']){delete _0x47abb0[_0xeb3d('0x46')]['id'];}return db['ChatGroup'][_0xeb3d('0x47')]({'where':{'id':_0x47abb0['params']['id']}})[_0xeb3d('0x25')](handleEntityNotFound(_0x5ed073,null))['then'](saveUpdates(_0x47abb0[_0xeb3d('0x46')],null))[_0xeb3d('0x25')](respondWithResult(_0x5ed073,null))['catch'](handleError(_0x5ed073,null));};exports['destroy']=function(_0x3a4f71,_0x2adbc8){return db[_0xeb3d('0x2c')][_0xeb3d('0x47')]({'where':{'id':_0x3a4f71[_0xeb3d('0x48')]['id']}})[_0xeb3d('0x25')](handleEntityNotFound(_0x2adbc8,null))['then'](removeEntity(_0x2adbc8,null))[_0xeb3d('0x43')](handleError(_0x2adbc8,null));};exports[_0xeb3d('0x49')]=function(_0x2a84fe,_0xbdc35d){return db['ChatGroup']['describe']()[_0xeb3d('0x25')](respondWithResult(_0xbdc35d,null))[_0xeb3d('0x43')](handleError(_0xbdc35d,null));};exports[_0xeb3d('0x4a')]=function(_0x219a7d,_0x156287,_0x1a6cb0){return db[_0xeb3d('0x4b')][_0xeb3d('0x20')]({'where':{'ChatGroupId':_0x219a7d['params']['id'],'ToId':_0x219a7d[_0xeb3d('0x4c')]['id'],'read':![]}})['then'](function(_0x5da8cf){return{'id':_['toInteger'](_0x219a7d['params']['id']),'count':_0x5da8cf};})[_0xeb3d('0x25')](respondWithResult(_0x156287,null))[_0xeb3d('0x43')](handleError(_0x156287,null));};exports[_0xeb3d('0x4d')]=function(_0x558744,_0x4a5578,_0x42616a){return db['ChatGroup'][_0xeb3d('0x47')]({'where':{'id':_0x558744[_0xeb3d('0x48')]['id']}})['then'](handleEntityNotFound(_0x4a5578,null))['then'](function(_0x35db34){if(_0x35db34){return _0x35db34[_0xeb3d('0x4d')](_0x558744[_0xeb3d('0x46')][_0xeb3d('0x4e')],_[_0xeb3d('0x4f')](_0x558744[_0xeb3d('0x46')],[_0xeb3d('0x4e'),'id'])||{});}})[_0xeb3d('0x25')](respondWithResult(_0x4a5578,null))['catch'](handleError(_0x4a5578,null));};exports['getMembers']=function(_0x4d22cb,_0x50b3a3,_0x33bc0c){var _0xbd4d83={};var _0x21fb8a={};var _0x5f0f7f;var _0x3016e1;return db['ChatGroup']['findOne']({'where':{'id':_0x4d22cb[_0xeb3d('0x48')]['id']}})[_0xeb3d('0x25')](handleEntityNotFound(_0x50b3a3,null))[_0xeb3d('0x25')](function(_0x45b3a8){if(_0x45b3a8){_0x5f0f7f=_0x45b3a8;_0x21fb8a[_0xeb3d('0x30')]=_['keys'](db[_0xeb3d('0x50')][_0xeb3d('0x2d')]);_0x21fb8a['query']=_[_0xeb3d('0x32')](_0x4d22cb['query']);_0x21fb8a['filters']=_[_0xeb3d('0x35')](_0x21fb8a['model'],_0x21fb8a[_0xeb3d('0x31')]);_0xbd4d83[_0xeb3d('0x34')]=_[_0xeb3d('0x35')](_0x21fb8a[_0xeb3d('0x30')],qs[_0xeb3d('0x36')](_0x4d22cb[_0xeb3d('0x31')]['fields']));_0xbd4d83[_0xeb3d('0x34')]=_0xbd4d83[_0xeb3d('0x34')][_0xeb3d('0x37')]?_0xbd4d83[_0xeb3d('0x34')]:_0x21fb8a[_0xeb3d('0x30')];_0xbd4d83[_0xeb3d('0x51')]=qs[_0xeb3d('0x3a')](_0x4d22cb[_0xeb3d('0x31')][_0xeb3d('0x3a')]);_0xbd4d83[_0xeb3d('0x3b')]=qs[_0xeb3d('0x33')](_[_0xeb3d('0x3c')](_0x4d22cb['query'],_0x21fb8a[_0xeb3d('0x33')]));if(_0x4d22cb[_0xeb3d('0x31')][_0xeb3d('0x3d')]){_0xbd4d83[_0xeb3d('0x3b')]=_[_0xeb3d('0x3f')](_0xbd4d83[_0xeb3d('0x3b')],{'$or':_[_0xeb3d('0x2b')](_0xbd4d83[_0xeb3d('0x34')],function(_0x28bedb){var _0x4021a6={};_0x4021a6[_0x28bedb]={'$like':'%'+_0x4d22cb[_0xeb3d('0x31')][_0xeb3d('0x3d')]+'%'};return _0x4021a6;})});}_0xbd4d83=_[_0xeb3d('0x3f')]({},_0xbd4d83,_0x4d22cb[_0xeb3d('0x40')]);return _0x5f0f7f[_0xeb3d('0x52')](_0xbd4d83);}})[_0xeb3d('0x25')](function(_0x3c15e4){if(_0x3c15e4){_0x3016e1=_0x3c15e4['length'];if(!_0x4d22cb[_0xeb3d('0x31')][_0xeb3d('0x38')](_0xeb3d('0x39'))){_0xbd4d83[_0xeb3d('0x1e')]=qs[_0xeb3d('0x1e')](_0x4d22cb[_0xeb3d('0x31')]['limit']);_0xbd4d83[_0xeb3d('0x1d')]=qs[_0xeb3d('0x1d')](_0x4d22cb[_0xeb3d('0x31')][_0xeb3d('0x1d')]);}return _0x5f0f7f[_0xeb3d('0x52')](_0xbd4d83);}})[_0xeb3d('0x25')](function(_0x10d5d8){if(_0x10d5d8){return _0x10d5d8?{'count':_0x3016e1,'rows':_0x10d5d8}:null;}})['then'](respondWithResult(_0x50b3a3,null))[_0xeb3d('0x43')](handleError(_0x50b3a3,null));};exports[_0xeb3d('0x53')]=function(_0x4d058e,_0x535882,_0x5edcb3){return db['ChatGroup'][_0xeb3d('0x47')]({'where':{'id':_0x4d058e[_0xeb3d('0x48')]['id']}})[_0xeb3d('0x25')](handleEntityNotFound(_0x535882,null))[_0xeb3d('0x25')](function(_0x4b9988){if(_0x4b9988){return _0x4b9988[_0xeb3d('0x53')](_0x4d058e[_0xeb3d('0x31')][_0xeb3d('0x4e')]);}})[_0xeb3d('0x25')](respondWithStatusCode(_0x535882,null))[_0xeb3d('0x43')](handleError(_0x535882,null));};exports['addMessage']=function(_0x39f499,_0x1a506d,_0x59ee82){if(_0x39f499[_0xeb3d('0x46')]['id']){delete _0x39f499[_0xeb3d('0x46')]['id'];}return db[_0xeb3d('0x2c')][_0xeb3d('0x47')]({'where':{'id':_0x39f499['params']['id']}})[_0xeb3d('0x25')](handleEntityNotFound(_0x1a506d,null))[_0xeb3d('0x25')](function(_0x2fb85c){if(_0x2fb85c){_0x39f499['body'][_0xeb3d('0x54')]=_0x2fb85c['id'];return db['ChatInternalMessage']['create'](_0x39f499[_0xeb3d('0x46')]);}})['then'](respondWithResult(_0x1a506d,null))['catch'](handleError(_0x1a506d,null));};exports[_0xeb3d('0x55')]=function(_0x16e906,_0x5e7f55,_0x42fcc5){var _0x10f653={};var _0x225c3e={};var _0x30095f;var _0x1ac8d4;return db[_0xeb3d('0x2c')]['findOne']({'where':{'id':_0x16e906[_0xeb3d('0x48')]['id']}})[_0xeb3d('0x25')](handleEntityNotFound(_0x5e7f55,null))['then'](function(_0x5ea550){if(_0x5ea550){_0x30095f=_0x5ea550;_0x225c3e[_0xeb3d('0x30')]=_['keys'](db['ChatInternalMessage'][_0xeb3d('0x2d')]);_0x225c3e[_0xeb3d('0x31')]=_[_0xeb3d('0x32')](_0x16e906['query']);_0x225c3e[_0xeb3d('0x33')]=_[_0xeb3d('0x35')](_0x225c3e[_0xeb3d('0x30')],_0x225c3e[_0xeb3d('0x31')]);_0x10f653[_0xeb3d('0x34')]=_[_0xeb3d('0x35')](_0x225c3e[_0xeb3d('0x30')],qs['fields'](_0x16e906['query'][_0xeb3d('0x36')]));_0x10f653['attributes']=_0x10f653['attributes'][_0xeb3d('0x37')]?_0x10f653[_0xeb3d('0x34')]:_0x225c3e[_0xeb3d('0x30')];_0x10f653[_0xeb3d('0x51')]=qs['sort'](_0x16e906['query'][_0xeb3d('0x3a')]);_0x10f653[_0xeb3d('0x3b')]=qs[_0xeb3d('0x33')](_[_0xeb3d('0x3c')](_0x16e906[_0xeb3d('0x31')],_0x225c3e[_0xeb3d('0x33')]));if(_0x16e906[_0xeb3d('0x31')][_0xeb3d('0x3d')]){_0x10f653['where']=_[_0xeb3d('0x3f')](_0x10f653[_0xeb3d('0x3b')],{'$or':_[_0xeb3d('0x2b')](_0x10f653[_0xeb3d('0x34')],function(_0x318baa){var _0x2584c1={};_0x2584c1[_0x318baa]={'$like':'%'+_0x16e906[_0xeb3d('0x31')][_0xeb3d('0x3d')]+'%'};return _0x2584c1;})});}if(_0x16e906['query'][_0xeb3d('0x56')]){var _0x400b8f=_0x16e906[_0xeb3d('0x31')][_0xeb3d('0x56')]['split'](',');var _0x2f0ca4={};_0x2f0ca4[_0x400b8f[0x0]]={'$gte':moment(_0x400b8f[0x1])[_0xeb3d('0x57')]('YYYY-MM-DD\x20HH:mm:ss')};_0x10f653[_0xeb3d('0x3b')]=_[_0xeb3d('0x3f')](_0x10f653[_0xeb3d('0x3b')],_0x2f0ca4);}_0x10f653=_[_0xeb3d('0x3f')]({},_0x10f653,_0x16e906[_0xeb3d('0x40')]);return _0x30095f[_0xeb3d('0x55')](_0x10f653);}})['then'](function(_0x3e4121){if(_0x3e4121){_0x1ac8d4=_0x3e4121[_0xeb3d('0x37')];if(!_0x16e906[_0xeb3d('0x31')][_0xeb3d('0x38')](_0xeb3d('0x39'))){_0x10f653[_0xeb3d('0x1e')]=qs[_0xeb3d('0x1e')](_0x16e906[_0xeb3d('0x31')]['limit']);_0x10f653[_0xeb3d('0x1d')]=qs[_0xeb3d('0x1d')](_0x16e906[_0xeb3d('0x31')][_0xeb3d('0x1d')]);}return _0x30095f[_0xeb3d('0x55')](_0x10f653);}})[_0xeb3d('0x25')](function(_0x44d01d){if(_0x44d01d){return _0x44d01d?{'count':_0x1ac8d4,'rows':_0x44d01d}:null;}})[_0xeb3d('0x25')](respondWithResult(_0x5e7f55,null))[_0xeb3d('0x43')](handleError(_0x5e7f55,null));};
\ No newline at end of file
index b05558c..c0fdb20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa59a=['emit','exports','events','../../mysqldb','ChatGroup','setMaxListeners','update','remove'];(function(_0x7abd7,_0x1ca3f9){var _0x3a2577=function(_0x18456d){while(--_0x18456d){_0x7abd7['push'](_0x7abd7['shift']());}};_0x3a2577(++_0x1ca3f9);}(_0xa59a,0x1d2));var _0xaa59=function(_0x1d0db8,_0x6b1bb5){_0x1d0db8=_0x1d0db8-0x0;var _0x50f741=_0xa59a[_0x1d0db8];return _0x50f741;};'use strict';var EventEmitter=require(_0xaa59('0x0'));var ChatGroup=require(_0xaa59('0x1'))['db'][_0xaa59('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xaa59('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xaa59('0x4'),'afterDestroy':_0xaa59('0x5')};function emitEvent(_0x4999d9){return function(_0x44d41f,_0x38bbae,_0x57f84e){ChatGroupEvents[_0xaa59('0x6')](_0x4999d9+':'+_0x44d41f['id'],_0x44d41f);ChatGroupEvents[_0xaa59('0x6')](_0x4999d9,_0x44d41f);_0x57f84e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0xaa59('0x7')]=ChatGroupEvents;
\ No newline at end of file
+var _0xadfd=['ChatGroup','setMaxListeners','save','update','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x29e8d5,_0x244933){var _0x4cf625=function(_0x3a2d90){while(--_0x3a2d90){_0x29e8d5['push'](_0x29e8d5['shift']());}};_0x4cf625(++_0x244933);}(_0xadfd,0x1bf));var _0xdadf=function(_0x4546c6,_0x183a75){_0x4546c6=_0x4546c6-0x0;var _0x3b0067=_0xadfd[_0x4546c6];return _0x3b0067;};'use strict';var EventEmitter=require('events');var ChatGroup=require(_0xdadf('0x0'))['db'][_0xdadf('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xdadf('0x2')](0x0);var events={'afterCreate':_0xdadf('0x3'),'afterUpdate':_0xdadf('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3357d9){return function(_0x26071d,_0x6914c2,_0x165d1d){ChatGroupEvents[_0xdadf('0x5')](_0x3357d9+':'+_0x26071d['id'],_0x26071d);ChatGroupEvents['emit'](_0x3357d9,_0x26071d);_0x165d1d(null);};}for(var e in events){if(events[_0xdadf('0x6')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0xdadf('0x7')]=ChatGroupEvents;
\ No newline at end of file
index 75fb8ea..7550c18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b9c=['../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./chatGroup.attributes','exports','ChatGroup','chat_groups','lodash','util'];(function(_0x3720d1,_0x968d8b){var _0x14a1e8=function(_0x454184){while(--_0x454184){_0x3720d1['push'](_0x3720d1['shift']());}};_0x14a1e8(++_0x968d8b);}(_0x6b9c,0x172));var _0xc6b9=function(_0x599b2a,_0x2d5f1d){_0x599b2a=_0x599b2a-0x0;var _0x1d2aef=_0x6b9c[_0x599b2a];return _0x1d2aef;};'use strict';var _=require(_0xc6b9('0x0'));var util=require(_0xc6b9('0x1'));var logger=require(_0xc6b9('0x2'))(_0xc6b9('0x3'));var moment=require('moment');var BPromise=require(_0xc6b9('0x4'));var rp=require(_0xc6b9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc6b9('0x6'));var config=require(_0xc6b9('0x7'));var attributes=require(_0xc6b9('0x8'));module[_0xc6b9('0x9')]=function(_0x16f140,_0x4b10f1){return _0x16f140['define'](_0xc6b9('0xa'),attributes,{'tableName':_0xc6b9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe986=['bluebird','path','rimraf','../../config/environment','./chatGroup.attributes','exports','ChatGroup','chat_groups','lodash','util','../../config/logger','moment'];(function(_0x54e894,_0x28425a){var _0x237820=function(_0x5f0279){while(--_0x5f0279){_0x54e894['push'](_0x54e894['shift']());}};_0x237820(++_0x28425a);}(_0xe986,0xbc));var _0x6e98=function(_0xe4a273,_0x25fbcb){_0xe4a273=_0xe4a273-0x0;var _0x3cb729=_0xe986[_0xe4a273];return _0x3cb729;};'use strict';var _=require(_0x6e98('0x0'));var util=require(_0x6e98('0x1'));var logger=require(_0x6e98('0x2'))('api');var moment=require(_0x6e98('0x3'));var BPromise=require(_0x6e98('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6e98('0x5'));var rimraf=require(_0x6e98('0x6'));var config=require(_0x6e98('0x7'));var attributes=require(_0x6e98('0x8'));module[_0x6e98('0x9')]=function(_0x50f1db,_0x363f6d){return _0x50f1db['define'](_0x6e98('0xa'),attributes,{'tableName':_0x6e98('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e58ac35..3d7d91b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf63=['error','code','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','ChatGroup,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x292423,_0x1759b7){var _0x2801cb=function(_0x23c821){while(--_0x23c821){_0x292423['push'](_0x292423['shift']());}};_0x2801cb(++_0x1759b7);}(_0xbf63,0x1eb));var _0x3bf6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbf63[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3bf6('0x0'));var util=require('util');var moment=require(_0x3bf6('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3bf6('0x2'));var db=require(_0x3bf6('0x3'))['db'];var utils=require(_0x3bf6('0x4'));var logger=require(_0x3bf6('0x5'))(_0x3bf6('0x6'));var config=require(_0x3bf6('0x7'));var jayson=require(_0x3bf6('0x8'));var client=jayson[_0x3bf6('0x9')][_0x3bf6('0xa')]({'port':0x232a});config[_0x3bf6('0xb')]=_[_0x3bf6('0xc')](config[_0x3bf6('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x3bf6('0xd'))(new Redis(config['redis']));require('./chatGroup.socket')[_0x3bf6('0xe')](socket);function respondWithRpcPromise(_0x3e1d7f,_0xcd16eb,_0x4c9506){return new BPromise(function(_0x2b6ca8,_0x2f4f77){return client[_0x3bf6('0xf')](_0x3e1d7f,_0x4c9506)[_0x3bf6('0x10')](function(_0x4a419f){logger[_0x3bf6('0x11')](_0x3bf6('0x12'),_0xcd16eb,_0x3bf6('0x13'));logger['debug'](_0x3bf6('0x14'),_0xcd16eb,'request\x20sent',JSON[_0x3bf6('0x15')](_0x4a419f));if(_0x4a419f[_0x3bf6('0x16')]){if(_0x4a419f[_0x3bf6('0x16')][_0x3bf6('0x17')]===0x1f4){logger['error']('ChatGroup,\x20%s,\x20%s',_0xcd16eb,_0x4a419f['error']['message']);return _0x2f4f77(_0x4a419f[_0x3bf6('0x16')][_0x3bf6('0x18')]);}logger[_0x3bf6('0x16')]('ChatGroup,\x20%s,\x20%s',_0xcd16eb,_0x4a419f[_0x3bf6('0x16')]['message']);return _0x2b6ca8(_0x4a419f[_0x3bf6('0x16')][_0x3bf6('0x18')]);}else{logger['info'](_0x3bf6('0x12'),_0xcd16eb,_0x3bf6('0x13'));_0x2b6ca8(_0x4a419f[_0x3bf6('0x19')][_0x3bf6('0x18')]);}})[_0x3bf6('0x1a')](function(_0xdc0e0c){logger[_0x3bf6('0x16')](_0x3bf6('0x12'),_0xcd16eb,_0xdc0e0c);_0x2f4f77(_0xdc0e0c);});});}
\ No newline at end of file
+var _0x956a=['../../config/logger','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./chatGroup.socket','register','request','info','ChatGroup,\x20%s,\x20%s','request\x20sent','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x23a738,_0xd36e7c){var _0x2b1647=function(_0xcc8d6d){while(--_0xcc8d6d){_0x23a738['push'](_0x23a738['shift']());}};_0x2b1647(++_0xd36e7c);}(_0x956a,0xb6));var _0xa956=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x956a[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var util=require(_0xa956('0x0'));var moment=require(_0xa956('0x1'));var BPromise=require(_0xa956('0x2'));var rs=require(_0xa956('0x3'));var fs=require('fs');var Redis=require(_0xa956('0x4'));var db=require(_0xa956('0x5'))['db'];var utils=require(_0xa956('0x6'));var logger=require(_0xa956('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xa956('0x8'));var client=jayson[_0xa956('0x9')][_0xa956('0xa')]({'port':0x232a});config['redis']=_[_0xa956('0xb')](config[_0xa956('0xc')],{'host':_0xa956('0xd'),'port':0x18eb});var socket=require(_0xa956('0xe'))(new Redis(config[_0xa956('0xc')]));require(_0xa956('0xf'))[_0xa956('0x10')](socket);function respondWithRpcPromise(_0x559b18,_0x1b5e23,_0x36f50d){return new BPromise(function(_0x5d2065,_0x407338){return client[_0xa956('0x11')](_0x559b18,_0x36f50d)['then'](function(_0x58ef68){logger[_0xa956('0x12')](_0xa956('0x13'),_0x1b5e23,_0xa956('0x14'));logger['debug'](_0xa956('0x15'),_0x1b5e23,_0xa956('0x14'),JSON[_0xa956('0x16')](_0x58ef68));if(_0x58ef68['error']){if(_0x58ef68['error'][_0xa956('0x17')]===0x1f4){logger['error']('ChatGroup,\x20%s,\x20%s',_0x1b5e23,_0x58ef68[_0xa956('0x18')][_0xa956('0x19')]);return _0x407338(_0x58ef68[_0xa956('0x18')]['message']);}logger['error']('ChatGroup,\x20%s,\x20%s',_0x1b5e23,_0x58ef68[_0xa956('0x18')]['message']);return _0x5d2065(_0x58ef68[_0xa956('0x18')][_0xa956('0x19')]);}else{logger[_0xa956('0x12')](_0xa956('0x13'),_0x1b5e23,_0xa956('0x14'));_0x5d2065(_0x58ef68[_0xa956('0x1a')]['message']);}})['catch'](function(_0x3325d4){logger[_0xa956('0x18')](_0xa956('0x13'),_0x1b5e23,_0x3325d4);_0x407338(_0x3325d4);});});}
\ No newline at end of file
index f3e577f..2576579 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x760d=['remove','update','emit','removeListener','register','length','chatGroup:','./chatGroup.events','save'];(function(_0x52085a,_0x3717ca){var _0x5afc1a=function(_0x2aa175){while(--_0x2aa175){_0x52085a['push'](_0x52085a['shift']());}};_0x5afc1a(++_0x3717ca);}(_0x760d,0x14b));var _0xd760=function(_0x15f6f4,_0x310a05){_0x15f6f4=_0x15f6f4-0x0;var _0x267dbd=_0x760d[_0x15f6f4];return _0x267dbd;};'use strict';var ChatGroupEvents=require(_0xd760('0x0'));var events=[_0xd760('0x1'),_0xd760('0x2'),_0xd760('0x3')];function createListener(_0x2c392a,_0x4293db){return function(_0x27a2ed){_0x4293db[_0xd760('0x4')](_0x2c392a,_0x27a2ed);};}function removeListener(_0x1615fd,_0x4a47b2){return function(){ChatGroupEvents[_0xd760('0x5')](_0x1615fd,_0x4a47b2);};}exports[_0xd760('0x6')]=function(_0x5290ea){for(var _0x55b178=0x0,_0x229c80=events[_0xd760('0x7')];_0x55b178<_0x229c80;_0x55b178++){var _0x250331=events[_0x55b178];var _0x4b2dc8=createListener(_0xd760('0x8')+_0x250331,_0x5290ea);ChatGroupEvents['on'](_0x250331,_0x4b2dc8);}};
\ No newline at end of file
+var _0x8c29=['removeListener','register','chatGroup:','save','remove','emit'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0x8c29,0x1a7));var _0x98c2=function(_0x592a72,_0x2529bb){_0x592a72=_0x592a72-0x0;var _0x3f67c0=_0x8c29[_0x592a72];return _0x3f67c0;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=[_0x98c2('0x0'),_0x98c2('0x1'),'update'];function createListener(_0x537156,_0x1aadf3){return function(_0x85f8a2){_0x1aadf3[_0x98c2('0x2')](_0x537156,_0x85f8a2);};}function removeListener(_0x331b4f,_0x18525f){return function(){ChatGroupEvents[_0x98c2('0x3')](_0x331b4f,_0x18525f);};}exports[_0x98c2('0x4')]=function(_0x29dfde){for(var _0x383910=0x0,_0x4f9e00=events['length'];_0x383910<_0x4f9e00;_0x383910++){var _0x23739b=events[_0x383910];var _0x1e7124=createListener(_0x98c2('0x5')+_0x23739b,_0x29dfde);ChatGroupEvents['on'](_0x23739b,_0x1e7124);}};
\ No newline at end of file
index 24c4c02..ae51f3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c1c=['addMembers','addMessage','put','update','delete','destroy','removeMembers','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','getUnread','/:id/members','getMembers','/:id/messages','getMessages','post','create'];(function(_0x3a58c9,_0x18f9e8){var _0x228fe2=function(_0x2b3034){while(--_0x2b3034){_0x3a58c9['push'](_0x3a58c9['shift']());}};_0x228fe2(++_0x18f9e8);}(_0x9c1c,0xc7));var _0xc9c1=function(_0x4704dc,_0x575a5f){_0x4704dc=_0x4704dc-0x0;var _0x254d81=_0x9c1c[_0x4704dc];return _0x254d81;};'use strict';var multer=require(_0xc9c1('0x0'));var util=require(_0xc9c1('0x1'));var path=require(_0xc9c1('0x2'));var timeout=require('connect-timeout');var express=require(_0xc9c1('0x3'));var router=express[_0xc9c1('0x4')]();var fs_extra=require(_0xc9c1('0x5'));var auth=require(_0xc9c1('0x6'));var interaction=require(_0xc9c1('0x7'));var config=require(_0xc9c1('0x8'));var controller=require(_0xc9c1('0x9'));router[_0xc9c1('0xa')]('/',auth[_0xc9c1('0xb')](),controller[_0xc9c1('0xc')]);router['get'](_0xc9c1('0xd'),auth[_0xc9c1('0xb')](),controller[_0xc9c1('0xe')]);router[_0xc9c1('0xa')](_0xc9c1('0xf'),auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x10')]);router['get'](_0xc9c1('0x11'),auth['isAuthenticated'](),controller[_0xc9c1('0x12')]);router[_0xc9c1('0xa')](_0xc9c1('0x13'),auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x14')]);router[_0xc9c1('0xa')](_0xc9c1('0x15'),auth['isAuthenticated'](),controller[_0xc9c1('0x16')]);router[_0xc9c1('0x17')]('/',auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x18')]);router['post']('/:id/members',auth['isAuthenticated'](),controller[_0xc9c1('0x19')]);router['post'](_0xc9c1('0x15'),auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x1a')]);router[_0xc9c1('0x1b')](_0xc9c1('0xf'),auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x1c')]);router[_0xc9c1('0x1d')](_0xc9c1('0xf'),auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x1e')]);router[_0xc9c1('0x1d')]('/:id/members',auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x1f')]);module['exports']=router;
\ No newline at end of file
+var _0x1c2d=['create','post','addMessage','put','update','delete','removeMembers','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatGroup.controller','get','index','/describe','isAuthenticated','describe','/:id','/:id/unread','getUnread','/:id/members','/:id/messages','getMessages'];(function(_0x25353b,_0x2051ee){var _0x250251=function(_0x464d6c){while(--_0x464d6c){_0x25353b['push'](_0x25353b['shift']());}};_0x250251(++_0x2051ee);}(_0x1c2d,0x19e));var _0xd1c2=function(_0x541f70,_0x5781d0){_0x541f70=_0x541f70-0x0;var _0x1794de=_0x1c2d[_0x541f70];return _0x1794de;};'use strict';var multer=require(_0xd1c2('0x0'));var util=require(_0xd1c2('0x1'));var path=require(_0xd1c2('0x2'));var timeout=require(_0xd1c2('0x3'));var express=require(_0xd1c2('0x4'));var router=express[_0xd1c2('0x5')]();var fs_extra=require(_0xd1c2('0x6'));var auth=require(_0xd1c2('0x7'));var interaction=require(_0xd1c2('0x8'));var config=require('../../config/environment');var controller=require(_0xd1c2('0x9'));router[_0xd1c2('0xa')]('/',auth['isAuthenticated'](),controller[_0xd1c2('0xb')]);router[_0xd1c2('0xa')](_0xd1c2('0xc'),auth[_0xd1c2('0xd')](),controller[_0xd1c2('0xe')]);router[_0xd1c2('0xa')](_0xd1c2('0xf'),auth['isAuthenticated'](),controller['show']);router[_0xd1c2('0xa')](_0xd1c2('0x10'),auth[_0xd1c2('0xd')](),controller[_0xd1c2('0x11')]);router[_0xd1c2('0xa')](_0xd1c2('0x12'),auth[_0xd1c2('0xd')](),controller['getMembers']);router[_0xd1c2('0xa')](_0xd1c2('0x13'),auth[_0xd1c2('0xd')](),controller[_0xd1c2('0x14')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd1c2('0x15')]);router[_0xd1c2('0x16')]('/:id/members',auth[_0xd1c2('0xd')](),controller['addMembers']);router['post'](_0xd1c2('0x13'),auth[_0xd1c2('0xd')](),controller[_0xd1c2('0x17')]);router[_0xd1c2('0x18')](_0xd1c2('0xf'),auth[_0xd1c2('0xd')](),controller[_0xd1c2('0x19')]);router[_0xd1c2('0x1a')](_0xd1c2('0xf'),auth['isAuthenticated'](),controller['destroy']);router[_0xd1c2('0x1a')]('/:id/members',auth['isAuthenticated'](),controller[_0xd1c2('0x1b')]);module[_0xd1c2('0x1c')]=router;
\ No newline at end of file
index d092b77..79005a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb248=['INTEGER','ENUM','star','TEXT','STRING','DATE','long','out','sequelize','BOOLEAN'];(function(_0x30eb36,_0x4f7dab){var _0x1b33d1=function(_0x4ab0ff){while(--_0x4ab0ff){_0x30eb36['push'](_0x30eb36['shift']());}};_0x1b33d1(++_0x4f7dab);}(_0xb248,0xc6));var _0x8b24=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0xb248[_0x3d42d8];return _0x27fc41;};'use strict';var Sequelize=require(_0x8b24('0x0'));module['exports']={'closed':{'type':Sequelize[_0x8b24('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x8b24('0x2')]},'ratingType':{'type':Sequelize[_0x8b24('0x3')](_0x8b24('0x4'),'thumb'),'defaultValue':_0x8b24('0x4')},'ratingMessage':{'type':Sequelize[_0x8b24('0x5')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x8b24('0x6')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x8b24('0x7')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x8b24('0x6')]},'thirdDisposition':{'type':Sequelize[_0x8b24('0x6')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x8b24('0x6')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0x8b24('0x6')]},'osVersion':{'type':Sequelize[_0x8b24('0x6')]},'deviceModel':{'type':Sequelize[_0x8b24('0x6')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0x8b24('0x6')]},'referer':{'type':Sequelize[_0x8b24('0x5')]},'customerIp':{'type':Sequelize[_0x8b24('0x6')]},'formData':{'type':Sequelize[_0x8b24('0x5')](_0x8b24('0x8'))},'read1stAt':{'type':Sequelize[_0x8b24('0x7')]},'lastMsgAt':{'type':Sequelize[_0x8b24('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x8b24('0x3')]('in',_0x8b24('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x8b24('0x6')]},'customerPort':{'type':Sequelize[_0x8b24('0x6')]},'vidaooSessionId':{'type':Sequelize[_0x8b24('0x5')]},'autoreplyExecuted':{'type':Sequelize[_0x8b24('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x4024=['long','DATE','sequelize','exports','INTEGER','ENUM','thumb','TEXT','STRING'];(function(_0x1d7739,_0x18845e){var _0xd160fb=function(_0x190129){while(--_0x190129){_0x1d7739['push'](_0x1d7739['shift']());}};_0xd160fb(++_0x18845e);}(_0x4024,0x89));var _0x4402=function(_0x2ec22b,_0x105410){_0x2ec22b=_0x2ec22b-0x0;var _0x54fe1f=_0x4024[_0x2ec22b];return _0x54fe1f;};'use strict';var Sequelize=require(_0x4402('0x0'));module[_0x4402('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x4402('0x2')]},'ratingType':{'type':Sequelize[_0x4402('0x3')]('star',_0x4402('0x4')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize[_0x4402('0x5')]},'pathTranscript':{'type':Sequelize[_0x4402('0x5')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x4402('0x6')]},'secondDisposition':{'type':Sequelize[_0x4402('0x6')]},'thirdDisposition':{'type':Sequelize[_0x4402('0x6')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x4402('0x6')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x4402('0x6')]},'deviceModel':{'type':Sequelize['STRING']},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0x4402('0x6')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x4402('0x6')]},'formData':{'type':Sequelize['TEXT'](_0x4402('0x7'))},'read1stAt':{'type':Sequelize['DATE']},'lastMsgAt':{'type':Sequelize[_0x4402('0x8')]},'lastMsgDirection':{'type':Sequelize[_0x4402('0x3')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x4402('0x6')]},'customerPort':{'type':Sequelize[_0x4402('0x6')]},'vidaooSessionId':{'type':Sequelize[_0x4402('0x5')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 573b99f..456b00d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['vidaooMetadata','Error\x20in\x20conversion\x20vidaooMetadata','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','entity\x20not\x20found','sendStatus','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','attachmentUpload','file','originalname','mimetype','Attachment','attachmentDownload','Unauthorized','attachId','ChatOfflineMessageId','root','server/files/attachments/','join','offline-chat/','basename','download','mailTranscript','format','transcript-%s.txt','now','pathTranscript','Messages','ChatWebsite','System','customer','%s%d','Visitor','agentIdentifier','website_alias','agentAlias','agent_alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','secret','MailAccount','MailServerOut','Smtp','service','host','port','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','addMessage','omit','getMessages','pick','includeAll','findAll','getMyMessages','includeAgent','alias','setTags','ids','spread','color','emit','chatInteractionTags:save','removeTags','unix','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','direction','Account','Owner','get','mkdirSync','Chat','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','browserName','osName','referer','customerIp','customerPort','existsSync','createReadStream','pipe','createWriteStream','out','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','http','client','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result','catch','status','end','limit','undefined','count','set','Content-Range','json','apply','save','update','name','merge','body','contact','account','Users','map','fullname','TagIds','Tags','split','forEach','push','index','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','select','field','from','tools_tags','u.id','u.fullname','ui.ChatInteractionId','left_join','users','u.id\x20=\x20ui.UserId','chat_interactions','cm_contacts','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','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','value','getFullTextValue','find','ContactId','buildExpression','text','start','Tag','union','User','UserId','some','isEmpty','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','$gte','parse','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','contactName','DESC','t.id\x20IN\x20?','resolve','ChatWebsiteId','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','agent','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','keyBy','ChatInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','Account.key','Account.mandatoryDisposition','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','c.mobile','Contact.mobile','Contact.fax','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','all','rows','show','include','options','create','destroy','params','describe','createVidaooSession','findOne','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','email','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow'];(function(_0x1138c4,_0x841d33){var _0x200cc1=function(_0x2f6d85){while(--_0x2f6d85){_0x1138c4['push'](_0x1138c4['shift']());}};_0x200cc1(++_0x841d33);}(_0x5f2f,0x73));var _0xf5f2=function(_0x21b835,_0x4f5599){_0x21b835=_0x21b835-0x0;var _0x376c7f=_0x5f2f[_0x21b835];return _0x376c7f;};'use strict';var emlformat=require(_0xf5f2('0x0'));var rimraf=require(_0xf5f2('0x1'));var zipdir=require(_0xf5f2('0x2'));var jsonpatch=require(_0xf5f2('0x3'));var rp=require(_0xf5f2('0x4'));var moment=require(_0xf5f2('0x5'));var BPromise=require(_0xf5f2('0x6'));var Mustache=require(_0xf5f2('0x7'));var util=require('util');var path=require('path');var sox=require(_0xf5f2('0x8'));var csv=require(_0xf5f2('0x9'));var ejs=require(_0xf5f2('0xa'));var fs=require('fs');var fs_extra=require(_0xf5f2('0xb'));var _=require(_0xf5f2('0xc'));var squel=require(_0xf5f2('0xd'));var crypto=require('crypto');var jsforce=require(_0xf5f2('0xe'));var deskjs=require(_0xf5f2('0xf'));var toCsv=require(_0xf5f2('0x9'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var authService=require(_0xf5f2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf5f2('0x13'));var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf5f2('0x14'))(_0xf5f2('0x15'));var utils=require('../../config/utils');var config=require(_0xf5f2('0x16'));var licenseUtil=require(_0xf5f2('0x17'));var db=require(_0xf5f2('0x18'))['db'];config[_0xf5f2('0x19')]=_[_0xf5f2('0x1a')](config[_0xf5f2('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xf5f2('0x1b'))(new Redis(config[_0xf5f2('0x19')]));require(_0xf5f2('0x1c'))[_0xf5f2('0x1d')](socket);var jayson=require(_0xf5f2('0x1e'));var client=jayson['client'][_0xf5f2('0x1f')]({'port':0x232b});var client9004=jayson[_0xf5f2('0x20')][_0xf5f2('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x1b6dd2,_0x23e23a,_0x3a9dbb,_0xdb61b3){return new BPromise(function(_0x395a5a,_0x11f702){var _0x228ace=_0xdb61b3||client;return _0x228ace[_0xf5f2('0x21')](_0x1b6dd2,_0x3a9dbb)[_0xf5f2('0x22')](function(_0x4ff59b){logger[_0xf5f2('0x23')](_0xf5f2('0x24'),_0x23e23a,_0xf5f2('0x25'));logger[_0xf5f2('0x26')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x23e23a,_0xf5f2('0x25'),JSON[_0xf5f2('0x27')](_0x4ff59b));if(_0x4ff59b['error']){if(_0x4ff59b['error'][_0xf5f2('0x28')]===0x1f4){logger[_0xf5f2('0x29')]('ChatInteraction,\x20%s,\x20%s',_0x23e23a,_0x4ff59b[_0xf5f2('0x29')][_0xf5f2('0x2a')]);return _0x11f702(_0x4ff59b[_0xf5f2('0x29')][_0xf5f2('0x2a')]);}logger[_0xf5f2('0x29')]('ChatInteraction,\x20%s,\x20%s',_0x23e23a,_0x4ff59b[_0xf5f2('0x29')][_0xf5f2('0x2a')]);return _0x395a5a(_0x4ff59b[_0xf5f2('0x29')][_0xf5f2('0x2a')]);}else{logger[_0xf5f2('0x23')]('ChatInteraction,\x20%s,\x20%s',_0x23e23a,'request\x20sent');_0x395a5a(_0x4ff59b[_0xf5f2('0x2b')][_0xf5f2('0x2a')]);}})[_0xf5f2('0x2c')](function(_0x1a5bb3){logger[_0xf5f2('0x29')](_0xf5f2('0x24'),_0x23e23a,_0x1a5bb3);_0x11f702(_0x1a5bb3);});});}function respondWithStatusCode(_0x13a3be,_0x281ec8){_0x281ec8=_0x281ec8||0xcc;return function(_0x294414){if(_0x294414){return _0x13a3be['sendStatus'](_0x281ec8);}return _0x13a3be[_0xf5f2('0x2d')](_0x281ec8)[_0xf5f2('0x2e')]();};}function respondWithResult(_0x375ca8,_0x31bfcb){_0x31bfcb=_0x31bfcb||0xc8;return function(_0x198c73){if(_0x198c73){return _0x375ca8[_0xf5f2('0x2d')](_0x31bfcb)['json'](_0x198c73);}};}function respondWithFilteredResult(_0x53cb96,_0x22c826){return function(_0x14c829){if(_0x14c829){var _0x11c771=typeof _0x22c826['offset']==='undefined'&&typeof _0x22c826[_0xf5f2('0x2f')]===_0xf5f2('0x30');var _0x17394a=_0x14c829[_0xf5f2('0x31')];var _0x1b381e=_0x11c771?0x0:_0x22c826['offset'];var _0x52e959=_0x11c771?_0x14c829[_0xf5f2('0x31')]:_0x22c826['offset']+_0x22c826[_0xf5f2('0x2f')];var _0x58a4df;if(_0x52e959>=_0x17394a){_0x52e959=_0x17394a;_0x58a4df=0xc8;}else{_0x58a4df=0xce;}_0x53cb96[_0xf5f2('0x2d')](_0x58a4df);return _0x53cb96[_0xf5f2('0x32')](_0xf5f2('0x33'),_0x1b381e+'-'+_0x52e959+'/'+_0x17394a)[_0xf5f2('0x34')](_0x14c829);}return null;};}function patchUpdates(_0x256bd9){return function(_0x277eee){try{jsonpatch[_0xf5f2('0x35')](_0x277eee,_0x256bd9,!![]);}catch(_0x2c0e05){return BPromise['reject'](_0x2c0e05);}return _0x277eee[_0xf5f2('0x36')]();};}function saveUpdates(_0x43e4ff,_0x4590ec){return function(_0x43c77d){if(_0x43c77d){return _0x43c77d[_0xf5f2('0x37')](_0x43e4ff)[_0xf5f2('0x22')](function(_0x297c0c){return _0x297c0c;});}return null;};}function removeEntity(_0x48d64d,_0x144646){return function(_0xf503e8){if(_0xf503e8){return _0xf503e8['destroy']()[_0xf5f2('0x22')](function(){_0x48d64d['status'](0xcc)[_0xf5f2('0x2e')]();});}};}function handleEntityNotFound(_0x3930fb,_0x2a2c31){return function(_0x2e3cca){if(!_0x2e3cca){_0x3930fb['sendStatus'](0x194);}return _0x2e3cca;};}function handleError(_0x5a98d7,_0x41088b){_0x41088b=_0x41088b||0x1f4;return function(_0x46ad4a){logger[_0xf5f2('0x29')](_0x46ad4a['stack']);if(_0x46ad4a[_0xf5f2('0x38')]){delete _0x46ad4a['name'];}_0x5a98d7[_0xf5f2('0x2d')](_0x41088b)['send'](_0x46ad4a);};}function getMustacheRender(_0x46f464,_0x456764){return Mustache['render'](_0x46f464,_[_0xf5f2('0x39')](_0x456764[_0xf5f2('0x3a')],{'contact':_0x456764[_0xf5f2('0x3b')],'message':_0x456764[_0xf5f2('0x2a')],'agent':_0x456764['agent'],'interaction':_0x456764['interaction'],'account':_0x456764[_0xf5f2('0x3c')]}))||'';}function getInteractionUsers(_0x140a11,_0x22b20c){return new BPromise(function(_0x2d4400,_0x2c7f65){try{if(_0x22b20c[_0x140a11['id']]){_0x140a11[_0xf5f2('0x3d')]=_[_0xf5f2('0x3e')](_0x22b20c[_0x140a11['id']],function(_0x4c0ac7){return{'id':_0x4c0ac7['id'],'fullname':_0x4c0ac7[_0xf5f2('0x3f')]};});}}catch(_0x3b4ea6){_0x2c7f65(_0x3b4ea6);}_0x2d4400(_0x140a11);});}function getInteractionTags(_0x536501,_0xc6a1ae){return new BPromise(function(_0x3f3895,_0x71b0e7){try{if(_0x536501[_0xf5f2('0x40')]){_0x536501[_0xf5f2('0x41')]=[];_0x536501[_0xf5f2('0x40')][_0xf5f2('0x42')](',')[_0xf5f2('0x43')](function(_0x574f24){_0x536501[_0xf5f2('0x41')][_0xf5f2('0x44')](_0xc6a1ae[_0x574f24]);});}delete _0x536501[_0xf5f2('0x40')];}catch(_0x4a8e39){_0x71b0e7(_0x4a8e39);}_0x3f3895(_0x536501);});}function updateChatInteraction(_0x509dbc,_0x59eb00,_0x76d21b){return new BPromise(function(_0x2ad13c,_0x4c8d8e){return getInteractionUsers(_0x509dbc,_0x76d21b)[_0xf5f2('0x22')](function(_0xeed03d){return getInteractionTags(_0xeed03d,_0x59eb00);})[_0xf5f2('0x22')](function(_0x31f86c){_0x2ad13c(_0x31f86c);})[_0xf5f2('0x2c')](function(_0x2b3b1c){_0x4c8d8e(_0x2b3b1c);});});}exports[_0xf5f2('0x45')]=function(_0x212e90,_0x40c322){var _0x106062={},_0x444317={},_0x4773cd={'count':0x0,'rows':[]};var _0x4252a3=_[_0xf5f2('0x3e')](db['ChatInteraction'][_0xf5f2('0x46')],function(_0x578c93){return{'name':_0x578c93[_0xf5f2('0x47')],'type':_0x578c93[_0xf5f2('0x48')][_0xf5f2('0x49')]};});_0x444317[_0xf5f2('0x4a')]=_[_0xf5f2('0x3e')](_0x4252a3,_0xf5f2('0x38'));_0x444317['query']=_[_0xf5f2('0x4b')](_0x212e90[_0xf5f2('0x4c')]);_0x444317[_0xf5f2('0x4d')]=_[_0xf5f2('0x4e')](_0x444317[_0xf5f2('0x4a')],_0x444317[_0xf5f2('0x4c')]);_0x106062[_0xf5f2('0x4f')]=_[_0xf5f2('0x4e')](_0x444317['model'],qs[_0xf5f2('0x50')](_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x50')]));_0x106062['attributes']=_0x106062[_0xf5f2('0x4f')][_0xf5f2('0x51')]?_0x106062[_0xf5f2('0x4f')]:_0x444317['model'];if(!_0x212e90['query'][_0xf5f2('0x52')](_0xf5f2('0x53'))){_0x106062['limit']=qs[_0xf5f2('0x2f')](_0x212e90['query'][_0xf5f2('0x2f')]);_0x106062['offset']=qs[_0xf5f2('0x54')](_0x212e90['query'][_0xf5f2('0x54')]);}_0x106062[_0xf5f2('0x55')]=qs[_0xf5f2('0x56')](_0x212e90[_0xf5f2('0x4c')]['sort']);_0x106062[_0xf5f2('0x57')]=qs[_0xf5f2('0x4d')](_['pick'](_0x212e90['query'],_0x444317[_0xf5f2('0x4d')]),_0x4252a3);var _0x3dc0c4=[];var _0x57782c=squel[_0xf5f2('0x58')]()[_0xf5f2('0x59')]('id')[_0xf5f2('0x59')](_0xf5f2('0x38'))['field']('color')[_0xf5f2('0x5a')](_0xf5f2('0x5b'));var _0x4b62fc=squel[_0xf5f2('0x58')]()[_0xf5f2('0x59')](_0xf5f2('0x5c'))[_0xf5f2('0x59')](_0xf5f2('0x5d'))[_0xf5f2('0x59')](_0xf5f2('0x5e'))['from']('user_has_chat_interactions','ui')[_0xf5f2('0x5f')](_0xf5f2('0x60'),'u',_0xf5f2('0x61'));var _0x46a905=squel[_0xf5f2('0x58')]()['from'](_0xf5f2('0x62'),'i')[_0xf5f2('0x5f')](_0xf5f2('0x63'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xf5f2('0x5f')]('users','o',_0xf5f2('0x64'))[_0xf5f2('0x5f')](_0xf5f2('0x65'),'a',_0xf5f2('0x66'))['left_join']('chat_messages','me',_0xf5f2('0x67'))['left_join'](_0xf5f2('0x68'),'it',_0xf5f2('0x69'))['left_join'](_0xf5f2('0x5b'),'t',_0xf5f2('0x6a'));var _0x2a8f6d=squel['expr']();var _0x397b99=[];var _0xcf7a50=squel[_0xf5f2('0x6b')]();var _0x4579f4;if(_0x212e90['query'][_0xf5f2('0x6c')]){_0x4579f4=as['parseSearch'](_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x6c')]);var _0x2e6f5d=_0x4579f4[_0xf5f2('0x6d')];for(var _0x9f210e=0x0;_0x9f210e<_0x4579f4['conditions'][_0xf5f2('0x51')];_0x9f210e++){var _0xacd80=_0x4579f4[_0xf5f2('0x6e')][_0x9f210e];var _0x212639='i';var _0x2c5733=_['find'](_0x4252a3,[_0xf5f2('0x38'),_0xacd80['field']]);if(!_0x2c5733){switch(_0xacd80['field']){case _0xf5f2('0x6f'):if(_0xacd80['value']==0x1){_0x46a905[_0xf5f2('0x70')]('`'+_0xacd80[_0xf5f2('0x59')]+_0xf5f2('0x71'));}else{_0x46a905[_0xf5f2('0x70')]('`'+_0xacd80['field']+_0xf5f2('0x72'));}break;case _0xf5f2('0x73'):if(_0xacd80[_0xf5f2('0x74')]===_0xf5f2('0x75')){if(_0xacd80[_0xf5f2('0x76')][_0xf5f2('0x42')]('\x20')[_0xf5f2('0x51')]>0x1){_0x2a8f6d[_0x2e6f5d]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xf5f2('0x77')](_0xacd80[_0xf5f2('0x76')]),null);}else{var _0xb39a6e='%'+_0xacd80[_0xf5f2('0x76')]+'%';_0x2a8f6d[_0x2e6f5d]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0xb39a6e,_0xb39a6e,_0xb39a6e);}}else{_0x2c5733=_[_0xf5f2('0x78')](_0x4252a3,['name',_0xf5f2('0x79')]);_0xacd80[_0xf5f2('0x59')]='ContactId';_0x5a143f=as[_0xf5f2('0x7a')](_0x212639,_0x2c5733[_0xf5f2('0x48')],_0xacd80);_0x2a8f6d[_0x2e6f5d](_0x5a143f[_0xf5f2('0x7b')],_0x5a143f[_0xf5f2('0x76')][_0xf5f2('0x7c')],_0x5a143f['value'][_0xf5f2('0x2e')]);}break;case _0xf5f2('0x7d'):var _0x3a0e75=_0xacd80[_0xf5f2('0x76')][_0xf5f2('0x42')](',')[_0xf5f2('0x3e')](function(_0x53284f){return Number(_0x53284f);});_0x3a0e75[_0xf5f2('0x43')](function(_0x3f475e){_0xcf7a50['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x3f475e+',%');});_0x397b99=_[_0xf5f2('0x7e')](_0x397b99,_0x3a0e75);break;case _0xf5f2('0x7f'):if(_0xacd80[_0xf5f2('0x74')]==='$substring'){_0x2a8f6d[_0x2e6f5d]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0xacd80['value']+'%',null);}else{_0x2c5733=_[_0xf5f2('0x78')](_0x4252a3,[_0xf5f2('0x38'),_0xf5f2('0x80')]);_0xacd80[_0xf5f2('0x59')]=_0xf5f2('0x80');_0x5a143f=as['buildExpression'](_0x212639,_0x2c5733[_0xf5f2('0x48')],_0xacd80);_0x2a8f6d[_0x2e6f5d](_0x5a143f[_0xf5f2('0x7b')],_0x5a143f[_0xf5f2('0x76')][_0xf5f2('0x7c')],_0x5a143f[_0xf5f2('0x76')][_0xf5f2('0x2e')]);}break;case _0xf5f2('0x3a'):_0x5a143f=as[_0xf5f2('0x7a')]('me',null,_0xacd80);_0x2a8f6d[_0x2e6f5d](_0x5a143f[_0xf5f2('0x7b')],_0x5a143f[_0xf5f2('0x76')][_0xf5f2('0x7c')],_0x5a143f['value']['end']);break;}}else{var _0x5a143f=as[_0xf5f2('0x7a')](_0x212639,_0x2c5733[_0xf5f2('0x48')],_0xacd80);_0x2a8f6d[_0x2e6f5d](_0x5a143f[_0xf5f2('0x7b')],_0x5a143f[_0xf5f2('0x76')][_0xf5f2('0x7c')],_0x5a143f['value'][_0xf5f2('0x2e')]);}}}else{var _0x43c732=_(_0x212e90[_0xf5f2('0x4c')])[_0xf5f2('0x4b')]()[_0xf5f2('0x3e')](function(_0x55748d){return _[_0xf5f2('0x81')](_0x4252a3,[_0xf5f2('0x38'),_0x55748d])?_0x55748d:undefined;})['compact']()[_0xf5f2('0x76')]();if(!_[_0xf5f2('0x82')](_0x43c732)){_0x43c732[_0xf5f2('0x43')](function(_0x30ac41){if(_0x30ac41==='ChatWebsiteId'){_0x46a905[_0xf5f2('0x57')](_0xf5f2('0x83'),[][_0xf5f2('0x84')](_0x212e90[_0xf5f2('0x4c')][_0x30ac41]));}else if(_0x30ac41===_0xf5f2('0x85')){var _0x4f47e1=JSON['parse'](_0x212e90[_0xf5f2('0x4c')][_0x30ac41])[_0xf5f2('0x86')];var _0x17eb69=JSON[_0xf5f2('0x87')](_0x212e90['query'][_0x30ac41])['$lte'];_0x46a905[_0xf5f2('0x57')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x4f47e1,_0x17eb69);}else{if(_0x212e90['query'][_0x30ac41]==='null'){_0x46a905['where']('i.'+_0x30ac41+_0xf5f2('0x88'));}else{_0x46a905[_0xf5f2('0x57')]('i.'+_0x30ac41+_0xf5f2('0x89'),_0x212e90[_0xf5f2('0x4c')][_0x30ac41]);}}});}if(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x8a')]){if(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x8a')]==0x1){_0x46a905[_0xf5f2('0x70')](_0xf5f2('0x8b'));}else{_0x46a905[_0xf5f2('0x70')](_0xf5f2('0x8c'));}}if(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x8d')]){_0x397b99=_[_0xf5f2('0x8e')](_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x8d')])?_0x212e90[_0xf5f2('0x4c')]['tag']:new Array(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x8d')]);_0x397b99[_0xf5f2('0x43')](function(_0x2811ad){_0xcf7a50['or'](_0xf5f2('0x8f'),'%,'+_0x2811ad+',%');});}if(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x90')]){var _0xcf48eb=_0x212e90['query'][_0xf5f2('0x90')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0xcf48eb)){_0x2a8f6d['or']('i.id\x20LIKE\x20?',_0xcf48eb+'%');}else{_0x2a8f6d['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0xcf48eb))['or'](_0xf5f2('0x91'),_0xcf48eb+'%');}}}_0x46a905[_0xf5f2('0x57')](_0x2a8f6d);_0x46a905[_0xf5f2('0x92')](_0xf5f2('0x93'));var _0x145d4d={'type':db[_0xf5f2('0x94')]['QueryTypes']['SELECT'],'raw':!![]};var _0x2fb1a6=_0x46a905['clone']();_0x2fb1a6[_0xf5f2('0x59')](_0xf5f2('0x93'));_0x2fb1a6['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xf5f2('0x6f'));if(_0x106062[_0xf5f2('0x55')]){_0x106062['order'][_0xf5f2('0x43')](function(_0x388b32){var _0x49e363=_0x388b32[0x0]===_0xf5f2('0x95')?_0x388b32[0x0]:'i.'+_0x388b32[0x0];_0x46a905[_0xf5f2('0x55')](_0x49e363,_0x388b32[0x1]===_0xf5f2('0x96')?![]:!![]);});}if(!_['isEmpty'](_0x397b99)){_0x46a905[_0xf5f2('0x70')](_0xcf7a50);_0x2fb1a6[_0xf5f2('0x57')](_0xf5f2('0x97'),_0x397b99);}BPromise[_0xf5f2('0x98')]()[_0xf5f2('0x22')](function(){if(!_0x4579f4){if(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x99')])return;_0x2fb1a6[_0xf5f2('0x57')](_0xf5f2('0x9a'));_0x46a905[_0xf5f2('0x57')](_0xf5f2('0x9a'));return;}if(_0x212e90[_0xf5f2('0x9b')][_0xf5f2('0x9c')]!==_0xf5f2('0x9d'))return;return _0x212e90[_0xf5f2('0x9b')][_0xf5f2('0x9e')]({'attributes':['id'],'raw':!![]})[_0xf5f2('0x22')](function(_0x29a9d4){if(_[_0xf5f2('0x82')](_0x29a9d4)){_0x2fb1a6[_0xf5f2('0x57')](_0xf5f2('0x9f'));_0x46a905['where'](_0xf5f2('0x9f'));}else{_0x2fb1a6[_0xf5f2('0x57')]('i.ChatWebsiteId\x20IN\x20?',_[_0xf5f2('0x3e')](_0x29a9d4,'id'));_0x46a905[_0xf5f2('0x57')]('i.ChatWebsiteId\x20IN\x20?',_[_0xf5f2('0x3e')](_0x29a9d4,'id'));}});})[_0xf5f2('0x22')](function(){if(_0x212e90[_0xf5f2('0x9b')]['role']==='agent'&&!_0x4579f4&&!_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x99')])return[];return db[_0xf5f2('0xa0')]['query'](_0x2fb1a6['toString'](),_0x145d4d);})[_0xf5f2('0x22')](function(_0xcdc6fd){_0x4773cd[_0xf5f2('0x31')]=_0xcdc6fd['length'];if(_0x4773cd['count']===0x0)return[];return db['sequelize']['query'](_0x57782c['toString'](),_0x145d4d)[_0xf5f2('0x22')](function(_0x561bab){_0x3dc0c4=_[_0xf5f2('0xa1')](_0x561bab,'id');_0x145d4d=_[_0xf5f2('0x39')](_0x145d4d,{'model':db[_0xf5f2('0xa2')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x50')]){_0x106062[_0xf5f2('0x4f')][_0xf5f2('0x43')](function(_0x40e921){_0x46a905[_0xf5f2('0x59')]('i.'+_0x40e921);});}else{_0x46a905[_0xf5f2('0x59')](_0xf5f2('0xa3'),_0xf5f2('0x6f'));_0x46a905[_0xf5f2('0x59')]('a.key',_0xf5f2('0xa4'));_0x46a905[_0xf5f2('0x59')]('a.mandatoryDisposition',_0xf5f2('0xa5'));_0x46a905[_0xf5f2('0x59')]('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',_0xf5f2('0x95'));_0x46a905[_0xf5f2('0x59')](_0xf5f2('0xa6'));_0x46a905['field'](_0xf5f2('0xa7'),_0xf5f2('0xa8'));_0x46a905['field'](_0xf5f2('0xa9'),_0xf5f2('0xaa'));_0x46a905[_0xf5f2('0x59')]('c.email',_0xf5f2('0xab'));_0x46a905['field'](_0xf5f2('0xac'),'Contact.phone');_0x46a905[_0xf5f2('0x59')](_0xf5f2('0xad'),_0xf5f2('0xae'));_0x46a905[_0xf5f2('0x59')]('c.fax',_0xf5f2('0xaf'));_0x46a905['field']('o.fullname','Owner.fullname');_0x46a905[_0xf5f2('0x59')](_0xf5f2('0xb0'),'Owner.internal');_0x46a905[_0xf5f2('0x59')](_0xf5f2('0xb1'),_0xf5f2('0x40'));}if(_0x106062[_0xf5f2('0x2f')])_0x46a905[_0xf5f2('0x2f')](_0x106062[_0xf5f2('0x2f')]);if(_0x106062['offset'])_0x46a905[_0xf5f2('0x54')](_0x106062[_0xf5f2('0x54')]);return db['sequelize'][_0xf5f2('0x4c')](_0x46a905[_0xf5f2('0xb2')](),_0x145d4d);})['then'](function(_0x32301a){if(_0x32301a[_0xf5f2('0x51')]>0x0)_0x4b62fc[_0xf5f2('0x57')](_0xf5f2('0xb3'),_[_0xf5f2('0x3e')](_0x32301a,'id'));return db[_0xf5f2('0xa0')]['query'](_0x4b62fc[_0xf5f2('0xb2')](),_0x145d4d)[_0xf5f2('0x22')](function(_0x13fcb0){var _0x792c75=_[_0xf5f2('0xb4')](_0x13fcb0,_0xf5f2('0xb5'));var _0x162c13=[];_0x32301a[_0xf5f2('0x43')](function(_0x3e4e40){_0x162c13['push'](updateChatInteraction(_0x3e4e40,_0x3dc0c4,_0x792c75));});return BPromise[_0xf5f2('0xb6')](_0x162c13);});});})[_0xf5f2('0x22')](function(_0xdbb2cd){_0x4773cd[_0xf5f2('0xb7')]=_0xdbb2cd;return _0x4773cd;})[_0xf5f2('0x22')](respondWithFilteredResult(_0x40c322,_0x106062))[_0xf5f2('0x2c')](handleError(_0x40c322,null));};exports[_0xf5f2('0xb8')]=function(_0x56f4b4,_0x33cfe7){var _0x40d0eb={'raw':![],'where':{'id':_0x56f4b4['params']['id']}},_0x4c138c={};_0x4c138c[_0xf5f2('0x4a')]=_[_0xf5f2('0x4b')](db[_0xf5f2('0xa2')][_0xf5f2('0x46')]);_0x4c138c['query']=_[_0xf5f2('0x4b')](_0x56f4b4[_0xf5f2('0x4c')]);_0x4c138c[_0xf5f2('0x4d')]=_[_0xf5f2('0x4e')](_0x4c138c[_0xf5f2('0x4a')],_0x4c138c['query']);_0x40d0eb[_0xf5f2('0x4f')]=_[_0xf5f2('0x4e')](_0x4c138c['model'],qs[_0xf5f2('0x50')](_0x56f4b4[_0xf5f2('0x4c')][_0xf5f2('0x50')]));_0x40d0eb[_0xf5f2('0x4f')]=_0x40d0eb['attributes'][_0xf5f2('0x51')]?_0x40d0eb[_0xf5f2('0x4f')]:_0x4c138c[_0xf5f2('0x4a')];if(_0x56f4b4['query']['includeAll']){_0x40d0eb[_0xf5f2('0xb9')]=[{'all':!![]}];}_0x40d0eb=_[_0xf5f2('0x39')]({},_0x40d0eb,_0x56f4b4[_0xf5f2('0xba')]);return db[_0xf5f2('0xa2')][_0xf5f2('0x78')](_0x40d0eb)[_0xf5f2('0x22')](handleEntityNotFound(_0x33cfe7,null))['then'](respondWithResult(_0x33cfe7,null))[_0xf5f2('0x2c')](handleError(_0x33cfe7,null));};exports['create']=function(_0x151f13,_0x1624a4){return db[_0xf5f2('0xa2')][_0xf5f2('0xbb')](_0x151f13[_0xf5f2('0x3a')],{})[_0xf5f2('0x22')](respondWithResult(_0x1624a4,0xc9))['catch'](handleError(_0x1624a4,null));};exports[_0xf5f2('0x37')]=function(_0x409ed1,_0x457b53){if(_0x409ed1[_0xf5f2('0x3a')]['id']){delete _0x409ed1[_0xf5f2('0x3a')]['id'];}return db[_0xf5f2('0xa2')][_0xf5f2('0x78')]({'where':{'id':_0x409ed1['params']['id']}})[_0xf5f2('0x22')](handleEntityNotFound(_0x457b53,null))['then'](saveUpdates(_0x409ed1['body'],null))['then'](respondWithResult(_0x457b53,null))[_0xf5f2('0x2c')](handleError(_0x457b53,null));};exports[_0xf5f2('0xbc')]=function(_0x568806,_0x3487df){return db[_0xf5f2('0xa2')][_0xf5f2('0x78')]({'where':{'id':_0x568806[_0xf5f2('0xbd')]['id']}})['then'](handleEntityNotFound(_0x3487df,null))[_0xf5f2('0x22')](removeEntity(_0x3487df,null))[_0xf5f2('0x2c')](handleError(_0x3487df,null));};exports[_0xf5f2('0xbe')]=function(_0x5d3ca7,_0x29f7bd){return db[_0xf5f2('0xa2')]['describe']()[_0xf5f2('0x22')](respondWithResult(_0x29f7bd,null))[_0xf5f2('0x2c')](handleError(_0x29f7bd,null));};exports[_0xf5f2('0xbf')]=function(_0x1583bb,_0x176974){var _0x8b591c=_0x1583bb[_0xf5f2('0xbd')]['id'];var _0x2c242b;var _0x155007;var _0x4782da;return db[_0xf5f2('0xa2')]['findOne']({'where':{'id':_0x8b591c}})[_0xf5f2('0x22')](function(_0x31dbfa){_0x2c242b=_0x31dbfa;return db['ChatWebsite'][_0xf5f2('0xc0')]({'where':{'id':_0x31dbfa['ChatWebsiteId']},'attributes':['id',_0xf5f2('0xc1'),_0xf5f2('0xc2'),_0xf5f2('0xc3'),_0xf5f2('0xc4'),'vidaooMetadata'],'raw':!![]});})[_0xf5f2('0x22')](function(_0x5a104b){if(_0x5a104b&&_0x5a104b[_0xf5f2('0xc1')]&&_0x5a104b['vidaooEscalation']){_0x155007=_0x5a104b;var _0x3310cb={'interaction':{'id':_0x8b591c},'agent':{'id':_0x1583bb[_0xf5f2('0x9b')]['id'],'name':_0x1583bb['user'][_0xf5f2('0x38')],'fullname':_0x1583bb[_0xf5f2('0x9b')][_0xf5f2('0x3f')],'email':_0x1583bb[_0xf5f2('0x9b')][_0xf5f2('0xc5')]},'contact':_0x1583bb[_0xf5f2('0x3a')]['contact'],'account':_0x1583bb['body'][_0xf5f2('0x3c')]};var _0x17e1eb={'rejectUnauthorized':![],'method':'POST','url':_0xf5f2('0xc6'),'headers':{'X-APIKEY':_0x5a104b[_0xf5f2('0xc1')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x1583bb[_0xf5f2('0x9b')][_0xf5f2('0xc5')]],'buttons':null,'topic':_0x155007[_0xf5f2('0xc3')],'note':_[_0xf5f2('0xc7')](_0x155007[_0xf5f2('0xc4')])?null:getMustacheRender(_0x155007['vidaooNote'],_0x3310cb),'metadata':null},'redirect':_0xf5f2('0xc8'),'json':!![]};try{if(!_['isNull'](_0x155007[_0xf5f2('0xc9')])){var _0x5ec0f3=getMustacheRender(_0x155007[_0xf5f2('0xc9')],_0x3310cb);var _0x4f2531=JSON[_0xf5f2('0x87')](_0x5ec0f3);_0x17e1eb['body']['metadata']=_0x4f2531;}}catch(_0x2c285c){throw new db[(_0xf5f2('0x94'))]['ValidationError'](_0xf5f2('0xca'));}return rp(_0x17e1eb);}else{throw new db[(_0xf5f2('0x94'))][(_0xf5f2('0xcb'))](_0xf5f2('0xcc'));}})[_0xf5f2('0x22')](function(_0x25af1e){_0x4782da=_0x25af1e;if(_0x4782da['id']){var _0xd0b5d={'body':_0x4782da[_0xf5f2('0xcd')],'ChatWebsiteId':_0x155007['id'],'ChatInteractionId':_0x2c242b['id'],'direction':'out','UserId':_0x1583bb['user']['id']};return db[_0xf5f2('0xce')]['create'](_0xd0b5d,{});}else{throw new db[(_0xf5f2('0x94'))][(_0xf5f2('0xcb'))](_0xf5f2('0xcf'));}})[_0xf5f2('0x22')](function(){return _0x2c242b[_0xf5f2('0xd0')]({'vidaooSessionId':_0x4782da['id']});})[_0xf5f2('0x22')](respondWithResult(_0x176974,null))[_0xf5f2('0x2c')](handleError(_0x176974,null));};exports[_0xf5f2('0xd1')]=function(_0x28f65b,_0x16cbd3){if(_0x28f65b[_0xf5f2('0x3a')]['id']){delete _0x28f65b[_0xf5f2('0x3a')]['id'];}return db['ChatInteraction'][_0xf5f2('0x78')]({'where':{'id':_0x28f65b['params']['id']},'include':[{'model':db[_0xf5f2('0xd2')],'as':_0xf5f2('0x73')}]})[_0xf5f2('0x22')](handleEntityNotFound(_0x16cbd3,null))[_0xf5f2('0x22')](saveUpdates(_0x28f65b[_0xf5f2('0x3a')],null))[_0xf5f2('0x22')](respondWithResult(_0x16cbd3,null))[_0xf5f2('0x2c')](handleError(_0x16cbd3,null));};exports[_0xf5f2('0xd3')]=function(_0x29db4f,_0x377c68,_0xe0f288){if(_0x29db4f['body']['id']){delete _0x29db4f[_0xf5f2('0x3a')]['id'];}return db[_0xf5f2('0xa2')][_0xf5f2('0x78')]({'where':{'id':_0x29db4f[_0xf5f2('0xbd')]['id']}})[_0xf5f2('0x22')](function(_0x3f8794){if(!_0x3f8794){logger[_0xf5f2('0x29')]('abandonInteraction,\x20%s,\x20%s,\x20%s',_0xf5f2('0xd3'),0x194,_0xf5f2('0xd4'));_0x377c68[_0xf5f2('0xd5')](0x194);}else{if(_0x3f8794[_0xf5f2('0x80')]){throw new db[(_0xf5f2('0x94'))][(_0xf5f2('0xcb'))](_0xf5f2('0xd6'));}}return _0x3f8794;})[_0xf5f2('0x22')](function(_0x356155){if(_0x356155){return _0x356155[_0xf5f2('0x37')]({'closed':_0x29db4f[_0xf5f2('0x3a')][_0xf5f2('0xd7')],'disposition':_0x29db4f[_0xf5f2('0x3a')][_0xf5f2('0xd8')]})[_0xf5f2('0x22')](function(_0x654b1b){return _0x654b1b;});}})['then'](function(_0x25566a){return respondWithRpcPromise(_0xf5f2('0xd9'),'abandon',_0x29db4f['body'],client9004);})[_0xf5f2('0x22')](respondWithResult(_0x377c68,null))[_0xf5f2('0x2c')](handleError(_0x377c68,null));};exports[_0xf5f2('0xda')]=function(_0x2c8f4c,_0x529d6f,_0x28cc){_0x2c8f4c[_0xf5f2('0x3a')][_0xf5f2('0x38')]=_0x2c8f4c[_0xf5f2('0xdb')][_0xf5f2('0xdc')];_0x2c8f4c[_0xf5f2('0x3a')]['basename']=_0x2c8f4c[_0xf5f2('0xdb')]['filename'];_0x2c8f4c['body'][_0xf5f2('0x48')]=_0x2c8f4c[_0xf5f2('0xdb')][_0xf5f2('0xdd')];return db[_0xf5f2('0xde')][_0xf5f2('0xbb')](_0x2c8f4c[_0xf5f2('0x3a')])[_0xf5f2('0x22')](respondWithResult(_0x529d6f,0xc9))['catch'](handleError(_0x529d6f,null));};exports[_0xf5f2('0xdf')]=function(_0x3a2862,_0x2c1160,_0x5e6c83){return db[_0xf5f2('0xa2')]['findOne']({'where':{'id':_0x3a2862['params']['id']},'raw':!![]})[_0xf5f2('0x22')](handleEntityNotFound(_0x2c1160,null))['then'](function(_0x2389b7){if(_0x2389b7){if(_0x2389b7[_0xf5f2('0xd7')]){return _0x2c1160['status'](0x193)[_0xf5f2('0x34')]({'status':0x193,'message':_0xf5f2('0xe0')});}return db['Attachment'][_0xf5f2('0xc0')]({'where':{'id':_0x3a2862[_0xf5f2('0x4c')][_0xf5f2('0xe1')]},'raw':!![]})[_0xf5f2('0x22')](handleEntityNotFound(_0x2c1160,null));}})[_0xf5f2('0x22')](function(_0x47a28a){if(_0x47a28a){var _0x182fa7=_0x47a28a[_0xf5f2('0xe2')]!==null;var _0x4d9048=path['join'](config[_0xf5f2('0xe3')],_0xf5f2('0xe4'));if(_0x182fa7){_0x4d9048=path[_0xf5f2('0xe5')](_0x4d9048,_0xf5f2('0xe6'));}var _0x1f51d8=path[_0xf5f2('0xe5')](_0x4d9048,_0x47a28a[_0xf5f2('0xe7')]);return _0x2c1160[_0xf5f2('0xe8')](_0x1f51d8);}})['catch'](handleError(_0x2c1160,null));};exports['close']=function(_0xc86ed5,_0x5be398){var _0x34abb6=null;var _0x235c30=null;var _0x15b060=null;var _0x422e88=null;if(_0xc86ed5['body']['id']){delete _0xc86ed5[_0xf5f2('0x3a')]['id'];}if(_0xc86ed5[_0xf5f2('0x3a')][_0xf5f2('0xe9')]){_0x422e88=path[_0xf5f2('0xe5')](config[_0xf5f2('0xe3')],'server/files/chat/upload/',util[_0xf5f2('0xea')](_0xf5f2('0xeb'),Date[_0xf5f2('0xec')]()));_0xc86ed5[_0xf5f2('0x3a')][_0xf5f2('0xed')]=_0x422e88;}return db[_0xf5f2('0xa2')][_0xf5f2('0x78')]({'where':{'id':_0xc86ed5[_0xf5f2('0xbd')]['id']},'include':[{'model':db[_0xf5f2('0xce')],'as':_0xf5f2('0xee'),'include':[{'model':db[_0xf5f2('0x7f')],'as':_0xf5f2('0x7f')}]}]})['then'](handleEntityNotFound(_0x5be398,null))[_0xf5f2('0x22')](saveUpdates(_0xc86ed5['body'],null))[_0xf5f2('0x22')](function(_0x349efe){if(_0x349efe){_0x34abb6=_0x349efe;return db[_0xf5f2('0xef')][_0xf5f2('0x78')]({'where':{'id':_0x34abb6[_0xf5f2('0x99')]}});}})[_0xf5f2('0x22')](function(_0x2cd0b7){if(_0x2cd0b7){_0x15b060=_0x2cd0b7;return db[_0xf5f2('0xd2')][_0xf5f2('0x78')]({'where':{'id':_0x34abb6[_0xf5f2('0x79')]}});}})[_0xf5f2('0x22')](function(_0x2b6f46){if(_0x2b6f46){_0x235c30=_0x2b6f46;if(_0x422e88){var _0xf53f16=null;for(var _0xd45a63=0x1;_0xd45a63<_0x34abb6[_0xf5f2('0xee')][_0xf5f2('0x51')];++_0xd45a63){_0xf53f16=_0x34abb6[_0xf5f2('0xee')][_0xd45a63];var _0x33f987=_0xf53f16['UserId']?util[_0xf5f2('0xea')]('%s%d',_0x15b060['agentAlias'],_0xf53f16[_0xf5f2('0x80')]):_0xf5f2('0xf0');var _0x53e85c=_0xc86ed5[_0xf5f2('0x3a')][_0xf5f2('0xf1')]||util[_0xf5f2('0xea')](_0xf5f2('0xf2'),_0xf5f2('0xf3'),_0xf53f16[_0xf5f2('0x79')]);switch(_0x15b060[_0xf5f2('0xf4')]){case _0xf5f2('0xf5'):_0x33f987=_0xf53f16['UserId']?util[_0xf5f2('0xea')](_0xf5f2('0xf2'),_0x15b060[_0xf5f2('0xf6')],_0xf53f16['UserId']):_0xf5f2('0xf0');break;case _0xf5f2('0xf7'):_0x33f987=_0xf53f16[_0xf5f2('0x80')]?_0xf53f16[_0xf5f2('0x7f')]['alias']||_0xf53f16['User'][_0xf5f2('0x3f')]:_0xf5f2('0xf0');break;case _0xf5f2('0xf8'):_0x33f987=_0xf53f16[_0xf5f2('0x80')]?_0xf53f16[_0xf5f2('0x7f')][_0xf5f2('0x3f')]:_0xf5f2('0xf0');break;default:_0x33f987=_0xf53f16[_0xf5f2('0x80')]?util[_0xf5f2('0xea')](_0xf5f2('0xf2'),_0x15b060['agentAlias'],_0xf53f16[_0xf5f2('0x80')]):_0xf5f2('0xf0');}var _0x3881cd=util['format'](_0xf5f2('0xf9'),moment(_0xf53f16[_0xf5f2('0x85')])['format'](_0xf5f2('0xfa')),_0xf53f16['direction']==='in'?_0x53e85c:_0x33f987,_0xf53f16[_0xf5f2('0x3a')]);if(!_0xf53f16[_0xf5f2('0xfb')]){fs['appendFileSync'](_0x422e88,_0x3881cd);}}return db[_0xf5f2('0xfc')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0xf5f2('0xfd')],'as':_0xf5f2('0xfe'),'raw':!![]}]});}}})['then'](function(_0x3971ee){if(_0x3971ee&&_0x3971ee[_0xf5f2('0xfe')]&&_0xc86ed5[_0xf5f2('0x3a')]){var _0xfeccdd={'tls':{'rejectUnauthorized':![]}};if(_0x3971ee[_0xf5f2('0xfe')]['service']){_0xfeccdd[_0xf5f2('0xff')]=_0x3971ee[_0xf5f2('0xfe')][_0xf5f2('0xff')];}else{_0xfeccdd[_0xf5f2('0x100')]=_0x3971ee[_0xf5f2('0xfe')][_0xf5f2('0x100')];_0xfeccdd[_0xf5f2('0x101')]=_0x3971ee[_0xf5f2('0xfe')][_0xf5f2('0x101')];_0xfeccdd['secure']=_0x3971ee[_0xf5f2('0xfe')]['secure'];}if(_0x3971ee['Smtp'][_0xf5f2('0x102')]){_0xfeccdd[_0xf5f2('0x103')]={'user':_0x3971ee[_0xf5f2('0xfe')][_0xf5f2('0x9b')],'pass':_0x3971ee[_0xf5f2('0xfe')][_0xf5f2('0x104')]};}return respondWithRpcPromise(_0xf5f2('0x105'),_0xf5f2('0x106'),{'account':_0xfeccdd,'message':{'from':util[_0xf5f2('0xea')](_0xf5f2('0x107'),_0x3971ee['name'],_0x3971ee['email']||_0x3971ee['Smtp'][_0xf5f2('0x9b')]),'to':_0xc86ed5['body'][_0xf5f2('0xe9')],'subject':_0xf5f2('0x108'),'text':util[_0xf5f2('0xea')]('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0xc86ed5[_0xf5f2('0x3a')][_0xf5f2('0xe9')]),'attachments':[{'path':_0x422e88}]}})['then'](function(){return _0x34abb6;})['catch'](function(_0x4d0709){console[_0xf5f2('0x29')](_0x4d0709);});}else{return _0x34abb6;}})[_0xf5f2('0x22')](respondWithStatusCode(_0x5be398,0xc8))[_0xf5f2('0x2c')](handleError(_0x5be398,null));};exports['addMessage']=function(_0x2cfa84,_0x4a22fb,_0x7cf1b6){return db[_0xf5f2('0xce')][_0xf5f2('0x78')]({'where':{'id':_0x2cfa84['params']['id']}})[_0xf5f2('0x22')](handleEntityNotFound(_0x4a22fb,null))['then'](function(_0x1b88b5){if(_0x1b88b5){return _0x1b88b5[_0xf5f2('0x109')](_0x2cfa84[_0xf5f2('0x3a')]['ids'],_[_0xf5f2('0x10a')](_0x2cfa84[_0xf5f2('0x3a')],['ids','id'])||{});}})[_0xf5f2('0x22')](respondWithResult(_0x4a22fb,null))[_0xf5f2('0x2c')](handleError(_0x4a22fb,null));};exports[_0xf5f2('0x10b')]=function(_0x29526c,_0x2a52e3,_0x439c9f){var _0x44adaa={'raw':![],'where':{}};var _0x3c7058={};var _0x3bcb44={'count':0x0,'rows':[]};return db[_0xf5f2('0xa2')][_0xf5f2('0xc0')]({'where':{'id':_0x29526c[_0xf5f2('0xbd')]['id']}})[_0xf5f2('0x22')](handleEntityNotFound(_0x2a52e3,null))[_0xf5f2('0x22')](function(_0x23675a){if(_0x23675a){_0x3c7058[_0xf5f2('0x4a')]=_[_0xf5f2('0x4b')](db[_0xf5f2('0xce')][_0xf5f2('0x46')]);_0x3c7058[_0xf5f2('0x4c')]=_[_0xf5f2('0x4b')](_0x29526c[_0xf5f2('0x4c')]);_0x3c7058['filters']=_[_0xf5f2('0x4e')](_0x3c7058[_0xf5f2('0x4a')],_0x3c7058[_0xf5f2('0x4c')]);_0x44adaa[_0xf5f2('0x4f')]=_['intersection'](_0x3c7058[_0xf5f2('0x4a')],qs['fields'](_0x29526c[_0xf5f2('0x4c')][_0xf5f2('0x50')]));_0x44adaa[_0xf5f2('0x4f')]=_0x44adaa[_0xf5f2('0x4f')][_0xf5f2('0x51')]?_0x44adaa[_0xf5f2('0x4f')]:_0x3c7058[_0xf5f2('0x4a')];if(!_0x29526c['query']['hasOwnProperty'](_0xf5f2('0x53'))){_0x44adaa[_0xf5f2('0x2f')]=qs[_0xf5f2('0x2f')](_0x29526c[_0xf5f2('0x4c')]['limit']);_0x44adaa[_0xf5f2('0x54')]=qs[_0xf5f2('0x54')](_0x29526c[_0xf5f2('0x4c')][_0xf5f2('0x54')]);}_0x44adaa[_0xf5f2('0x55')]=qs[_0xf5f2('0x56')](_0x29526c['query']['sort']);_0x44adaa['where']=qs[_0xf5f2('0x4d')](_[_0xf5f2('0x10c')](_0x29526c[_0xf5f2('0x4c')],_0x3c7058['filters']));_0x44adaa[_0xf5f2('0x57')]['ChatInteractionId']=_0x23675a['id'];if(_0x29526c[_0xf5f2('0x4c')][_0xf5f2('0x90')]){_0x44adaa[_0xf5f2('0x57')]=_[_0xf5f2('0x39')](_0x44adaa[_0xf5f2('0x57')],{'$or':_[_0xf5f2('0x3e')](_0x44adaa[_0xf5f2('0x4f')],function(_0xece862){var _0x3b4121={};_0x3b4121[_0xece862]={'$like':'%'+_0x29526c[_0xf5f2('0x4c')][_0xf5f2('0x90')]+'%'};return _0x3b4121;})});}if(_0x29526c[_0xf5f2('0x4c')][_0xf5f2('0x86')]){var _0x2fa70d=_0x29526c['query'][_0xf5f2('0x86')][_0xf5f2('0x42')](',');var _0x31f018={};_0x31f018[_0x2fa70d[0x0]]={'$gte':moment(_0x2fa70d[0x1])[_0xf5f2('0xea')]('YYYY-MM-DD\x20HH:mm:ss')};_0x44adaa[_0xf5f2('0x57')]=_[_0xf5f2('0x39')](_0x44adaa[_0xf5f2('0x57')],_0x31f018);}_0x44adaa=_[_0xf5f2('0x39')]({},_0x44adaa,_0x29526c['options']);return db[_0xf5f2('0xce')]['count']({'where':_0x44adaa[_0xf5f2('0x57')]})[_0xf5f2('0x22')](function(_0x20bb46){_0x3bcb44[_0xf5f2('0x31')]=_0x20bb46;if(_0x29526c['query'][_0xf5f2('0x10d')]){_0x44adaa[_0xf5f2('0xb9')]=[{'all':!![]}];}return db[_0xf5f2('0xce')][_0xf5f2('0x10e')](_0x44adaa);})[_0xf5f2('0x22')](function(_0x889f0e){_0x3bcb44['rows']=_0x889f0e;return _0x3bcb44;});}})[_0xf5f2('0x22')](respondWithFilteredResult(_0x2a52e3,_0x44adaa))[_0xf5f2('0x2c')](handleError(_0x2a52e3,null));};exports[_0xf5f2('0x10f')]=function(_0x3dcf4e,_0x4212d4,_0x2ebe4f){var _0x34fc35={'where':{}},_0x29c1ca={},_0x2cf93e={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xf5f2('0xc0')]({'where':{'id':_0x3dcf4e[_0xf5f2('0xbd')]['id']}})[_0xf5f2('0x22')](handleEntityNotFound(_0x4212d4,null))[_0xf5f2('0x22')](function(_0x544db3){if(_0x544db3){_0x29c1ca['model']=_[_0xf5f2('0x4b')](db[_0xf5f2('0xce')][_0xf5f2('0x46')]);_0x29c1ca['query']=_['keys'](_0x3dcf4e[_0xf5f2('0x4c')]);_0x29c1ca[_0xf5f2('0x4d')]=_[_0xf5f2('0x4e')](_0x29c1ca[_0xf5f2('0x4a')],_0x29c1ca[_0xf5f2('0x4c')]);_0x34fc35[_0xf5f2('0x4f')]=_['intersection'](_0x29c1ca[_0xf5f2('0x4a')],qs[_0xf5f2('0x50')](_0x3dcf4e[_0xf5f2('0x4c')][_0xf5f2('0x50')]));_0x34fc35['attributes']=_0x34fc35['attributes'][_0xf5f2('0x51')]?_0x34fc35['attributes']:_0x29c1ca[_0xf5f2('0x4a')];if(!_0x3dcf4e[_0xf5f2('0x4c')][_0xf5f2('0x52')](_0xf5f2('0x53'))){_0x34fc35[_0xf5f2('0x2f')]=qs[_0xf5f2('0x2f')](_0x3dcf4e[_0xf5f2('0x4c')][_0xf5f2('0x2f')]);_0x34fc35[_0xf5f2('0x54')]=qs[_0xf5f2('0x54')](_0x3dcf4e[_0xf5f2('0x4c')][_0xf5f2('0x54')]);}_0x34fc35[_0xf5f2('0x55')]=qs[_0xf5f2('0x56')](_0x3dcf4e['query'][_0xf5f2('0x56')]);_0x34fc35[_0xf5f2('0x57')]=qs[_0xf5f2('0x4d')](_[_0xf5f2('0x10c')](_0x3dcf4e[_0xf5f2('0x4c')],_0x29c1ca['filters']));_0x34fc35[_0xf5f2('0x57')][_0xf5f2('0xb5')]=_0x544db3['id'];if(_0x3dcf4e['query'][_0xf5f2('0x90')]){_0x34fc35[_0xf5f2('0x57')]=_['merge'](_0x34fc35['where'],{'$or':_[_0xf5f2('0x3e')](_0x34fc35[_0xf5f2('0x4f')],function(_0x3e7f54){var _0x5e165c={};_0x5e165c[_0x3e7f54]={'$like':'%'+_0x3dcf4e['query'][_0xf5f2('0x90')]+'%'};return _0x5e165c;})});}_0x34fc35[_0xf5f2('0x57')][_0xf5f2('0xfb')]=![];if(_0x3dcf4e[_0xf5f2('0x4c')]['id']){_0x34fc35[_0xf5f2('0x57')]['id']={'$gt':_0x3dcf4e[_0xf5f2('0x4c')]['id']};}_0x34fc35=_[_0xf5f2('0x39')]({},_0x34fc35,_0x3dcf4e[_0xf5f2('0xba')]);return db[_0xf5f2('0xce')][_0xf5f2('0x31')]({'where':_0x34fc35['where']})[_0xf5f2('0x22')](function(_0x1c2842){_0x2cf93e['count']=_0x1c2842;_0x34fc35[_0xf5f2('0xb9')]=[];if(_0x3dcf4e[_0xf5f2('0x4c')][_0xf5f2('0x110')]){_0x34fc35[_0xf5f2('0xb9')][_0xf5f2('0x44')]({'model':db['User'],'as':'User','attributes':['id',_0xf5f2('0x3f'),_0xf5f2('0x111')]});}if(_0x3dcf4e[_0xf5f2('0x4c')][_0xf5f2('0x10d')]){_0x34fc35['include']=[{'all':!![]}];}return db[_0xf5f2('0xce')][_0xf5f2('0x10e')](_0x34fc35);})[_0xf5f2('0x22')](function(_0x3518f9){_0x2cf93e['rows']=_0x3518f9;return _0x2cf93e;});}})['then'](respondWithFilteredResult(_0x4212d4,_0x34fc35))['catch'](handleError(_0x4212d4,null));};exports['addTags']=function(_0x2e9d3b,_0x496802,_0x5be074){return db['ChatInteraction']['find']({'where':{'id':_0x2e9d3b[_0xf5f2('0xbd')]['id']}})['then'](handleEntityNotFound(_0x496802,null))['then'](function(_0x43150f){if(_0x43150f){return _0x43150f[_0xf5f2('0x112')](_0x2e9d3b[_0xf5f2('0x3a')][_0xf5f2('0x113')],_['omit'](_0x2e9d3b[_0xf5f2('0x3a')],[_0xf5f2('0x113'),'id'])||{})[_0xf5f2('0x114')](function(){return db[_0xf5f2('0x7d')][_0xf5f2('0x10e')]({'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x115')],'where':{'id':_0x2e9d3b['body'][_0xf5f2('0x113')]}});})[_0xf5f2('0x22')](function(_0x4f4af9){socket[_0xf5f2('0x116')](_0xf5f2('0x117'),{'id':Number(_0x2e9d3b[_0xf5f2('0xbd')]['id']),'tags':_0x4f4af9||[]});return{'id':Number(_0x2e9d3b[_0xf5f2('0xbd')]['id']),'tags':_0x4f4af9||[]};});}})[_0xf5f2('0x22')](respondWithResult(_0x496802,null))['catch'](handleError(_0x496802,null));};exports[_0xf5f2('0x118')]=function(_0x5f470f,_0x1f0a64,_0x2bbc23){return db[_0xf5f2('0xa2')][_0xf5f2('0x78')]({'where':{'id':_0x5f470f['params']['id']}})['then'](handleEntityNotFound(_0x1f0a64,null))[_0xf5f2('0x22')](function(_0x179901){if(_0x179901){return _0x179901[_0xf5f2('0x118')](_0x5f470f[_0xf5f2('0x4c')][_0xf5f2('0x113')]);}})[_0xf5f2('0x22')](respondWithStatusCode(_0x1f0a64,null))[_0xf5f2('0x2c')](handleError(_0x1f0a64,null));};exports[_0xf5f2('0xe8')]=function(_0x5d8c6a,_0x4f777b){var _0x26dc8c=moment()[_0xf5f2('0x119')]()['toString']();var _0xb8bcf3=path[_0xf5f2('0xe5')](config[_0xf5f2('0xe3')],_0xf5f2('0x11a'),_0xf5f2('0x11b'),_0xf5f2('0x11c'));var _0x2bc493=path[_0xf5f2('0xe5')](config[_0xf5f2('0xe3')],_0xf5f2('0x11a'),_0xf5f2('0x11b'),_0xf5f2('0x11d'));var _0x212d97=path[_0xf5f2('0xe5')](_0xb8bcf3,_0x26dc8c);var _0x8ee5fd=util[_0xf5f2('0xea')](_0xf5f2('0x11e'),_0x5d8c6a['params']['id'],_0x26dc8c);var _0x3712e3=path['join'](_0xb8bcf3,_0x8ee5fd);var _0x56a1c3=[];_0x56a1c3['push']({'model':db['User'],'as':_0xf5f2('0x7f'),'attributes':['id',_0xf5f2('0x3f')],'raw':!![]});_0x56a1c3[_0xf5f2('0x44')]({'model':db[_0xf5f2('0xd2')],'as':'Contact','attributes':['id',_0xf5f2('0x11f'),_0xf5f2('0x120')],'raw':!![]});if(_0x5d8c6a['query']['attachments']){_0x56a1c3['push']({'model':db[_0xf5f2('0xde')],'as':_0xf5f2('0xde'),'raw':!![]});}var _0x5a6da7=[{'model':db[_0xf5f2('0xce')],'as':_0xf5f2('0xee'),'attributes':['id',_0xf5f2('0x3a'),'createdAt',_0xf5f2('0x121'),_0xf5f2('0xfb'),_0xf5f2('0x8a')],'include':_0x56a1c3}];_0x5a6da7[_0xf5f2('0x44')]({'model':db[_0xf5f2('0xef')],'as':_0xf5f2('0x122'),'attributes':['id','name']});_0x5a6da7['push']({'model':db[_0xf5f2('0x7f')],'as':_0xf5f2('0x123'),'attributes':['id','fullname']});return db['ChatInteraction'][_0xf5f2('0x78')]({'where':{'id':_0x5d8c6a['params']['id']},'include':_0x5a6da7})[_0xf5f2('0x22')](handleEntityNotFound(_0x4f777b,null))[_0xf5f2('0x22')](function(_0x2ee55f){if(_0x2ee55f){var _0x43ca34=_0x2ee55f[_0xf5f2('0x124')]({'plain':!![]});fs[_0xf5f2('0x125')](_0x212d97);var _0x220300={'channel':_0xf5f2('0x126'),'account':_0x43ca34[_0xf5f2('0x122')][_0xf5f2('0x38')],'agent':_0x43ca34['Owner']?_0x43ca34[_0xf5f2('0x123')][_0xf5f2('0x3f')]:_0xf5f2('0x127'),'createdAt':moment(_0x43ca34[_0xf5f2('0x85')])['format'](_0xf5f2('0x128'))[_0xf5f2('0xb2')](),'closedAt':_0x43ca34['closed']?moment(_0x43ca34[_0xf5f2('0x129')])['format'](_0xf5f2('0x128'))[_0xf5f2('0xb2')]():'','disposition':_0x43ca34['disposition'],'chatInfo':{'browser':_0x43ca34[_0xf5f2('0x12a')],'os':_0x43ca34[_0xf5f2('0x12b')],'referer':_0x43ca34[_0xf5f2('0x12c')],'customerIp':_0x43ca34[_0xf5f2('0x12d')],'customerPort':_0x43ca34['customerPort']?_0x43ca34[_0xf5f2('0x12e')]:_0xf5f2('0x127')},'messages':_(_0x43ca34[_0xf5f2('0xee')])['tail']()[_0xf5f2('0x90')]({'secret':![]})[_0xf5f2('0x3e')](function(_0x5981bb){if(_0x5981bb[_0xf5f2('0xde')]){var _0x4586b5=path[_0xf5f2('0xe5')](_0x2bc493,_0x5981bb[_0xf5f2('0xde')][_0xf5f2('0xe7')]);if(fs[_0xf5f2('0x12f')](_0x4586b5)){fs[_0xf5f2('0x130')](_0x4586b5)[_0xf5f2('0x131')](fs[_0xf5f2('0x132')](path['join'](_0x212d97,_0x5981bb[_0xf5f2('0xde')][_0xf5f2('0xe7')])));}}return{'date':moment(_0x5981bb[_0xf5f2('0x85')])[_0xf5f2('0xea')](_0xf5f2('0x128'))[_0xf5f2('0xb2')](),'sender':_0x5981bb[_0xf5f2('0x121')]===_0xf5f2('0x133')?_0x5981bb[_0xf5f2('0x7f')]?_0x5981bb[_0xf5f2('0x7f')][_0xf5f2('0x3f')]:'System':_0x5981bb['Contact']['firstName']+(_0x5981bb[_0xf5f2('0x73')][_0xf5f2('0x120')]?'\x20'+_0x5981bb[_0xf5f2('0x73')]['lastName']:''),'body':_0x5981bb[_0xf5f2('0xde')]?_0x5981bb[_0xf5f2('0xde')][_0xf5f2('0xe7')]:_0x5981bb['body'],'direction':_0x5981bb[_0xf5f2('0x121')]===_0xf5f2('0x133')?'A':'C','secret':_0x5981bb[_0xf5f2('0xfb')],'read':_0x5981bb[_0xf5f2('0x8a')],'attachment':_0x5981bb[_0xf5f2('0xde')]};})[_0xf5f2('0x76')]()};return ejs[_0xf5f2('0x134')](path[_0xf5f2('0xe5')](config['root'],_0xf5f2('0x11a'),_0xf5f2('0x135'),_0xf5f2('0x136')),{'interaction':_0x220300})[_0xf5f2('0x22')](function(_0x510f56){var _0x319b39=path[_0xf5f2('0xe5')](_0x212d97,_0xf5f2('0x137')+_0x43ca34['id']+'-'+_0x26dc8c+'.pdf');var _0x346a95={'path':_0x319b39,'channel':_0xf5f2('0x126'),'interactionId':_0x43ca34['id']};return pdf[_0xf5f2('0x138')](_0x510f56,_0x346a95);})[_0xf5f2('0x22')](function(){return new BPromise(function(_0x249e9b,_0x56ab93){zipdir(_0x212d97,{'saveTo':_0x3712e3},function(_0x21fce7,_0x38a5e3){if(_0x21fce7)return _0x56ab93(_0x21fce7);return _0x249e9b(_0x38a5e3);});})[_0xf5f2('0x22')](function(){return new BPromise(function(_0x4d8a71,_0x1ca92b){rimraf(_0x212d97,function(_0x486c5e){if(_0x486c5e)_0x1ca92b(_0x486c5e);return _0x4d8a71();});});})[_0xf5f2('0x22')](function(){return _0x4f777b[_0xf5f2('0xe8')](_0x3712e3,_0x8ee5fd,function(_0x5089c1){if(_0x5089c1){console[_0xf5f2('0x139')](_0xf5f2('0x13a'),_0x5089c1);}else{fs[_0xf5f2('0x13b')](_0x3712e3);}});});});}else{return _0x4f777b['sendStatus'](0xc8);}})[_0xf5f2('0x2c')](handleError(_0x4f777b,null));};
\ No newline at end of file
+var _0xd7d1=['Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','groupBy','ChatInteractionId','all','rows','show','params','includeAll','include','create','destroy','describe','createVidaooSession','findOne','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','vidaooApiKey','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','UserId','Interaction\x20already\x20assigned','update','disposition','file','basename','filename','Attachment','attachmentDownload','closed','json','Unauthorized','attachId','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','close','mailTranscript','root','transcript-%s.txt','now','pathTranscript','Messages','format','agentAlias','System','customer','%s%d','Visitor','agentIdentifier','website_alias','agent_fullname','direction','secret','appendFileSync','MailAccount','Smtp','service','host','secure','auth','pass','SendMail','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','YYYY-MM-DD\x20HH:mm:ss','getMyMessages','alias','findAll','addTags','setTags','ids','omit','spread','emit','chatInteractionTags:save','removeTags','download','unix','tmp','server','files','attachments','transcript-%d-%s.zip','lastName','ChatWebsite','get','mkdirSync','Chat','Account','Owner','N.A.','browserName','osName','customerIp','customerPort','tail','createReadStream','pipe','createWriteStream','renderFile','downloadInteraction.ejs','.pdf','createPdfFromHTML','unlinkSync','eml-format','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','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','./chatInteraction.socket','register','jayson/promise','client','http','then','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','info','catch','sendStatus','status','end','limit','undefined','count','offset','set','apply','reject','save','stack','name','send','contact','agent','interaction','account','map','fullname','TagIds','forEach','Tags','push','index','ChatInteraction','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','select','field','color','tools_tags','u.fullname','from','user_has_chat_interactions','users','u.id\x20=\x20ui.UserId','chat_interactions','left_join','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_messages','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','length','find','unreadMessages','having','`\x20>\x200','Contact','operator','$substring','value','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','buildExpression','body','some','isEmpty','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','QueryTypes','SELECT','clone','order','contactName','DESC','t.id\x20IN\x20?','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','Account.key','a.mandatoryDisposition','c.firstName','Contact.firstName','c.lastName','c.email'];(function(_0x3826ad,_0x49a30d){var _0x17b900=function(_0x38474f){while(--_0x38474f){_0x3826ad['push'](_0x3826ad['shift']());}};_0x17b900(++_0x49a30d);}(_0xd7d1,0x1b3));var _0x1d7d=function(_0x30b0cd,_0x4ccf01){_0x30b0cd=_0x30b0cd-0x0;var _0x4df967=_0xd7d1[_0x30b0cd];return _0x4df967;};'use strict';var emlformat=require(_0x1d7d('0x0'));var rimraf=require(_0x1d7d('0x1'));var zipdir=require(_0x1d7d('0x2'));var jsonpatch=require(_0x1d7d('0x3'));var rp=require(_0x1d7d('0x4'));var moment=require(_0x1d7d('0x5'));var BPromise=require(_0x1d7d('0x6'));var Mustache=require(_0x1d7d('0x7'));var util=require(_0x1d7d('0x8'));var path=require(_0x1d7d('0x9'));var sox=require(_0x1d7d('0xa'));var csv=require(_0x1d7d('0xb'));var ejs=require(_0x1d7d('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1d7d('0xd'));var squel=require(_0x1d7d('0xe'));var crypto=require(_0x1d7d('0xf'));var jsforce=require(_0x1d7d('0x10'));var deskjs=require(_0x1d7d('0x11'));var toCsv=require(_0x1d7d('0xb'));var querystring=require(_0x1d7d('0x12'));var Papa=require(_0x1d7d('0x13'));var Redis=require(_0x1d7d('0x14'));var authService=require(_0x1d7d('0x15'));var qs=require(_0x1d7d('0x16'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x1d7d('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1d7d('0x18'))(_0x1d7d('0x19'));var utils=require(_0x1d7d('0x1a'));var config=require(_0x1d7d('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0x1d7d('0x1c'))['db'];config['redis']=_['defaults'](config[_0x1d7d('0x1d')],{'host':_0x1d7d('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1d7d('0x1f'))[_0x1d7d('0x20')](socket);var jayson=require(_0x1d7d('0x21'));var client=jayson[_0x1d7d('0x22')][_0x1d7d('0x23')]({'port':0x232b});var client9004=jayson['client'][_0x1d7d('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x1de6cc,_0x51cbca,_0xb90a8c,_0x162c3a){return new BPromise(function(_0x3c3417,_0x47826a){var _0x40db4d=_0x162c3a||client;return _0x40db4d['request'](_0x1de6cc,_0xb90a8c)[_0x1d7d('0x24')](function(_0x191024){logger['info']('ChatInteraction,\x20%s,\x20%s',_0x51cbca,_0x1d7d('0x25'));logger[_0x1d7d('0x26')](_0x1d7d('0x27'),_0x51cbca,_0x1d7d('0x25'),JSON[_0x1d7d('0x28')](_0x191024));if(_0x191024[_0x1d7d('0x29')]){if(_0x191024['error'][_0x1d7d('0x2a')]===0x1f4){logger[_0x1d7d('0x29')](_0x1d7d('0x2b'),_0x51cbca,_0x191024['error'][_0x1d7d('0x2c')]);return _0x47826a(_0x191024[_0x1d7d('0x29')]['message']);}logger['error'](_0x1d7d('0x2b'),_0x51cbca,_0x191024[_0x1d7d('0x29')][_0x1d7d('0x2c')]);return _0x3c3417(_0x191024['error'][_0x1d7d('0x2c')]);}else{logger[_0x1d7d('0x2d')](_0x1d7d('0x2b'),_0x51cbca,_0x1d7d('0x25'));_0x3c3417(_0x191024['result'][_0x1d7d('0x2c')]);}})[_0x1d7d('0x2e')](function(_0x5c8257){logger['error'](_0x1d7d('0x2b'),_0x51cbca,_0x5c8257);_0x47826a(_0x5c8257);});});}function respondWithStatusCode(_0x52c618,_0x38c323){_0x38c323=_0x38c323||0xcc;return function(_0x2d4de4){if(_0x2d4de4){return _0x52c618[_0x1d7d('0x2f')](_0x38c323);}return _0x52c618[_0x1d7d('0x30')](_0x38c323)[_0x1d7d('0x31')]();};}function respondWithResult(_0x59f827,_0x1c2616){_0x1c2616=_0x1c2616||0xc8;return function(_0x98c1ad){if(_0x98c1ad){return _0x59f827[_0x1d7d('0x30')](_0x1c2616)['json'](_0x98c1ad);}};}function respondWithFilteredResult(_0x78adbe,_0x1a935a){return function(_0x23ad85){if(_0x23ad85){var _0x482367=typeof _0x1a935a['offset']==='undefined'&&typeof _0x1a935a[_0x1d7d('0x32')]===_0x1d7d('0x33');var _0x559f19=_0x23ad85[_0x1d7d('0x34')];var _0x3e4136=_0x482367?0x0:_0x1a935a[_0x1d7d('0x35')];var _0x3336ab=_0x482367?_0x23ad85[_0x1d7d('0x34')]:_0x1a935a[_0x1d7d('0x35')]+_0x1a935a[_0x1d7d('0x32')];var _0x803dc9;if(_0x3336ab>=_0x559f19){_0x3336ab=_0x559f19;_0x803dc9=0xc8;}else{_0x803dc9=0xce;}_0x78adbe[_0x1d7d('0x30')](_0x803dc9);return _0x78adbe[_0x1d7d('0x36')]('Content-Range',_0x3e4136+'-'+_0x3336ab+'/'+_0x559f19)['json'](_0x23ad85);}return null;};}function patchUpdates(_0x2e4402){return function(_0x2266a6){try{jsonpatch[_0x1d7d('0x37')](_0x2266a6,_0x2e4402,!![]);}catch(_0x40318f){return BPromise[_0x1d7d('0x38')](_0x40318f);}return _0x2266a6[_0x1d7d('0x39')]();};}function saveUpdates(_0x1aee3c,_0x40aca9){return function(_0x2fa3f4){if(_0x2fa3f4){return _0x2fa3f4['update'](_0x1aee3c)[_0x1d7d('0x24')](function(_0xf9d3e4){return _0xf9d3e4;});}return null;};}function removeEntity(_0x13a974,_0x30fb9a){return function(_0x4cc364){if(_0x4cc364){return _0x4cc364['destroy']()[_0x1d7d('0x24')](function(){_0x13a974[_0x1d7d('0x30')](0xcc)['end']();});}};}function handleEntityNotFound(_0x103c77,_0x3fea2e){return function(_0x568092){if(!_0x568092){_0x103c77['sendStatus'](0x194);}return _0x568092;};}function handleError(_0x26f81c,_0xc77f24){_0xc77f24=_0xc77f24||0x1f4;return function(_0x406f57){logger[_0x1d7d('0x29')](_0x406f57[_0x1d7d('0x3a')]);if(_0x406f57[_0x1d7d('0x3b')]){delete _0x406f57[_0x1d7d('0x3b')];}_0x26f81c[_0x1d7d('0x30')](_0xc77f24)[_0x1d7d('0x3c')](_0x406f57);};}function getMustacheRender(_0x318b9a,_0x4fcdcc){return Mustache['render'](_0x318b9a,_['merge'](_0x4fcdcc['body'],{'contact':_0x4fcdcc[_0x1d7d('0x3d')],'message':_0x4fcdcc['message'],'agent':_0x4fcdcc[_0x1d7d('0x3e')],'interaction':_0x4fcdcc[_0x1d7d('0x3f')],'account':_0x4fcdcc[_0x1d7d('0x40')]}))||'';}function getInteractionUsers(_0x515199,_0x5a4052){return new BPromise(function(_0x16a4e0,_0x153979){try{if(_0x5a4052[_0x515199['id']]){_0x515199['Users']=_[_0x1d7d('0x41')](_0x5a4052[_0x515199['id']],function(_0xa53806){return{'id':_0xa53806['id'],'fullname':_0xa53806[_0x1d7d('0x42')]};});}}catch(_0x2100f6){_0x153979(_0x2100f6);}_0x16a4e0(_0x515199);});}function getInteractionTags(_0x5eef0a,_0x1db8e8){return new BPromise(function(_0x42c229,_0x4239fa){try{if(_0x5eef0a[_0x1d7d('0x43')]){_0x5eef0a['Tags']=[];_0x5eef0a[_0x1d7d('0x43')]['split'](',')[_0x1d7d('0x44')](function(_0x31b850){_0x5eef0a[_0x1d7d('0x45')][_0x1d7d('0x46')](_0x1db8e8[_0x31b850]);});}delete _0x5eef0a[_0x1d7d('0x43')];}catch(_0x4becec){_0x4239fa(_0x4becec);}_0x42c229(_0x5eef0a);});}function updateChatInteraction(_0x59b8e7,_0x33582a,_0xe57fa5){return new BPromise(function(_0x1637fc,_0x4bed84){return getInteractionUsers(_0x59b8e7,_0xe57fa5)['then'](function(_0x12f397){return getInteractionTags(_0x12f397,_0x33582a);})['then'](function(_0x86e7bc){_0x1637fc(_0x86e7bc);})[_0x1d7d('0x2e')](function(_0x1d1064){_0x4bed84(_0x1d1064);});});}exports[_0x1d7d('0x47')]=function(_0x1e2ea8,_0x370e8d){var _0x72f5d7={},_0x51cb15={},_0x3ccd44={'count':0x0,'rows':[]};var _0x8b0c22=_['map'](db[_0x1d7d('0x48')][_0x1d7d('0x49')],function(_0x40599b){return{'name':_0x40599b[_0x1d7d('0x4a')],'type':_0x40599b[_0x1d7d('0x4b')][_0x1d7d('0x4c')]};});_0x51cb15[_0x1d7d('0x4d')]=_[_0x1d7d('0x41')](_0x8b0c22,_0x1d7d('0x3b'));_0x51cb15[_0x1d7d('0x4e')]=_[_0x1d7d('0x4f')](_0x1e2ea8[_0x1d7d('0x4e')]);_0x51cb15['filters']=_[_0x1d7d('0x50')](_0x51cb15['model'],_0x51cb15[_0x1d7d('0x4e')]);_0x72f5d7['attributes']=_[_0x1d7d('0x50')](_0x51cb15[_0x1d7d('0x4d')],qs[_0x1d7d('0x51')](_0x1e2ea8[_0x1d7d('0x4e')]['fields']));_0x72f5d7[_0x1d7d('0x52')]=_0x72f5d7['attributes']['length']?_0x72f5d7[_0x1d7d('0x52')]:_0x51cb15['model'];if(!_0x1e2ea8['query'][_0x1d7d('0x53')](_0x1d7d('0x54'))){_0x72f5d7['limit']=qs[_0x1d7d('0x32')](_0x1e2ea8[_0x1d7d('0x4e')]['limit']);_0x72f5d7[_0x1d7d('0x35')]=qs[_0x1d7d('0x35')](_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x35')]);}_0x72f5d7['order']=qs['sort'](_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x55')]);_0x72f5d7[_0x1d7d('0x56')]=qs[_0x1d7d('0x57')](_[_0x1d7d('0x58')](_0x1e2ea8['query'],_0x51cb15[_0x1d7d('0x57')]),_0x8b0c22);var _0x24e0b7=[];var _0x344b66=squel[_0x1d7d('0x59')]()[_0x1d7d('0x5a')]('id')[_0x1d7d('0x5a')](_0x1d7d('0x3b'))[_0x1d7d('0x5a')](_0x1d7d('0x5b'))['from'](_0x1d7d('0x5c'));var _0x41ad41=squel[_0x1d7d('0x59')]()['field']('u.id')[_0x1d7d('0x5a')](_0x1d7d('0x5d'))[_0x1d7d('0x5a')]('ui.ChatInteractionId')[_0x1d7d('0x5e')](_0x1d7d('0x5f'),'ui')['left_join'](_0x1d7d('0x60'),'u',_0x1d7d('0x61'));var _0x3fc216=squel[_0x1d7d('0x59')]()['from'](_0x1d7d('0x62'),'i')[_0x1d7d('0x63')]('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x1d7d('0x63')](_0x1d7d('0x60'),'o','o.id\x20=\x20i.UserId')['left_join'](_0x1d7d('0x64'),'a',_0x1d7d('0x65'))[_0x1d7d('0x63')](_0x1d7d('0x66'),'me','me.ChatInteractionId\x20=\x20i.id')[_0x1d7d('0x63')]('chat_interaction_has_tags','it',_0x1d7d('0x67'))[_0x1d7d('0x63')](_0x1d7d('0x5c'),'t',_0x1d7d('0x68'));var _0x5a4bd7=squel[_0x1d7d('0x69')]();var _0x1ea966=[];var _0x193135=squel[_0x1d7d('0x69')]();var _0x28ec14;if(_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x6a')]){_0x28ec14=as[_0x1d7d('0x6b')](_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x6a')]);var _0x44a187=_0x28ec14[_0x1d7d('0x6c')];for(var _0x301a67=0x0;_0x301a67<_0x28ec14[_0x1d7d('0x6d')][_0x1d7d('0x6e')];_0x301a67++){var _0x520d3c=_0x28ec14[_0x1d7d('0x6d')][_0x301a67];var _0x566d27='i';var _0x1c9fe7=_[_0x1d7d('0x6f')](_0x8b0c22,[_0x1d7d('0x3b'),_0x520d3c[_0x1d7d('0x5a')]]);if(!_0x1c9fe7){switch(_0x520d3c[_0x1d7d('0x5a')]){case _0x1d7d('0x70'):if(_0x520d3c['value']==0x1){_0x3fc216[_0x1d7d('0x71')]('`'+_0x520d3c[_0x1d7d('0x5a')]+'`\x20=\x200');}else{_0x3fc216[_0x1d7d('0x71')]('`'+_0x520d3c['field']+_0x1d7d('0x72'));}break;case _0x1d7d('0x73'):if(_0x520d3c[_0x1d7d('0x74')]===_0x1d7d('0x75')){if(_0x520d3c[_0x1d7d('0x76')][_0x1d7d('0x77')]('\x20')['length']>0x1){_0x5a4bd7[_0x44a187](_0x1d7d('0x78'),qs[_0x1d7d('0x79')](_0x520d3c['value']),null);}else{var _0x3289c2='%'+_0x520d3c[_0x1d7d('0x76')]+'%';_0x5a4bd7[_0x44a187](_0x1d7d('0x7a'),_0x3289c2,_0x3289c2,_0x3289c2);}}else{_0x1c9fe7=_['find'](_0x8b0c22,[_0x1d7d('0x3b'),_0x1d7d('0x7b')]);_0x520d3c[_0x1d7d('0x5a')]=_0x1d7d('0x7b');_0x2e26d4=as['buildExpression'](_0x566d27,_0x1c9fe7[_0x1d7d('0x4b')],_0x520d3c);_0x5a4bd7[_0x44a187](_0x2e26d4[_0x1d7d('0x7c')],_0x2e26d4[_0x1d7d('0x76')][_0x1d7d('0x7d')],_0x2e26d4[_0x1d7d('0x76')]['end']);}break;case _0x1d7d('0x7e'):var _0x10dea3=_0x520d3c['value'][_0x1d7d('0x77')](',')[_0x1d7d('0x41')](function(_0x17c174){return Number(_0x17c174);});_0x10dea3[_0x1d7d('0x44')](function(_0x47d27e){_0x193135['or'](_0x1d7d('0x7f'),'%,'+_0x47d27e+',%');});_0x1ea966=_['union'](_0x1ea966,_0x10dea3);break;case _0x1d7d('0x80'):if(_0x520d3c[_0x1d7d('0x74')]===_0x1d7d('0x75')){_0x5a4bd7[_0x44a187]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x520d3c[_0x1d7d('0x76')]+'%',null);}else{_0x1c9fe7=_[_0x1d7d('0x6f')](_0x8b0c22,[_0x1d7d('0x3b'),'UserId']);_0x520d3c[_0x1d7d('0x5a')]='UserId';_0x2e26d4=as[_0x1d7d('0x81')](_0x566d27,_0x1c9fe7[_0x1d7d('0x4b')],_0x520d3c);_0x5a4bd7[_0x44a187](_0x2e26d4[_0x1d7d('0x7c')],_0x2e26d4[_0x1d7d('0x76')][_0x1d7d('0x7d')],_0x2e26d4[_0x1d7d('0x76')][_0x1d7d('0x31')]);}break;case _0x1d7d('0x82'):_0x2e26d4=as[_0x1d7d('0x81')]('me',null,_0x520d3c);_0x5a4bd7[_0x44a187](_0x2e26d4[_0x1d7d('0x7c')],_0x2e26d4[_0x1d7d('0x76')]['start'],_0x2e26d4['value'][_0x1d7d('0x31')]);break;}}else{var _0x2e26d4=as[_0x1d7d('0x81')](_0x566d27,_0x1c9fe7['type'],_0x520d3c);_0x5a4bd7[_0x44a187](_0x2e26d4[_0x1d7d('0x7c')],_0x2e26d4['value'][_0x1d7d('0x7d')],_0x2e26d4[_0x1d7d('0x76')]['end']);}}}else{var _0x1f55a2=_(_0x1e2ea8[_0x1d7d('0x4e')])['keys']()[_0x1d7d('0x41')](function(_0x40ee1f){return _[_0x1d7d('0x83')](_0x8b0c22,['name',_0x40ee1f])?_0x40ee1f:undefined;})['compact']()[_0x1d7d('0x76')]();if(!_[_0x1d7d('0x84')](_0x1f55a2)){_0x1f55a2['forEach'](function(_0x33430c){if(_0x33430c===_0x1d7d('0x85')){_0x3fc216[_0x1d7d('0x56')](_0x1d7d('0x86'),[]['concat'](_0x1e2ea8[_0x1d7d('0x4e')][_0x33430c]));}else if(_0x33430c===_0x1d7d('0x87')){var _0x22cdd1=JSON[_0x1d7d('0x88')](_0x1e2ea8[_0x1d7d('0x4e')][_0x33430c])[_0x1d7d('0x89')];var _0x42a83c=JSON[_0x1d7d('0x88')](_0x1e2ea8[_0x1d7d('0x4e')][_0x33430c])[_0x1d7d('0x8a')];_0x3fc216[_0x1d7d('0x56')](_0x1d7d('0x8b'),_0x22cdd1,_0x42a83c);}else{if(_0x1e2ea8[_0x1d7d('0x4e')][_0x33430c]==='null'){_0x3fc216[_0x1d7d('0x56')]('i.'+_0x33430c+_0x1d7d('0x8c'));}else{_0x3fc216['where']('i.'+_0x33430c+_0x1d7d('0x8d'),_0x1e2ea8[_0x1d7d('0x4e')][_0x33430c]);}}});}if(_0x1e2ea8['query']['read']){if(_0x1e2ea8['query'][_0x1d7d('0x8e')]==0x1){_0x3fc216[_0x1d7d('0x71')](_0x1d7d('0x8f'));}else{_0x3fc216[_0x1d7d('0x71')]('`unreadMessages`\x20>\x200');}}if(_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x90')]){_0x1ea966=_[_0x1d7d('0x91')](_0x1e2ea8[_0x1d7d('0x4e')]['tag'])?_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x90')]:new Array(_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x90')]);_0x1ea966[_0x1d7d('0x44')](function(_0x2a7229){_0x193135['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2a7229+',%');});}if(_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x92')]){var _0x57aba7=_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x92')][_0x1d7d('0x93')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x1d7d('0x94')](_0x57aba7)){_0x5a4bd7['or']('i.id\x20LIKE\x20?',_0x57aba7+'%');}else{_0x5a4bd7['or'](_0x1d7d('0x95'),qs[_0x1d7d('0x79')](_0x57aba7))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x57aba7+'%');}}}_0x3fc216[_0x1d7d('0x56')](_0x5a4bd7);_0x3fc216[_0x1d7d('0x96')](_0x1d7d('0x97'));var _0xc3c42f={'type':db[_0x1d7d('0x98')][_0x1d7d('0x99')][_0x1d7d('0x9a')],'raw':!![]};var _0x155e88=_0x3fc216[_0x1d7d('0x9b')]();_0x155e88[_0x1d7d('0x5a')](_0x1d7d('0x97'));_0x155e88[_0x1d7d('0x5a')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0x72f5d7[_0x1d7d('0x9c')]){_0x72f5d7[_0x1d7d('0x9c')][_0x1d7d('0x44')](function(_0x395818){var _0x247289=_0x395818[0x0]===_0x1d7d('0x9d')?_0x395818[0x0]:'i.'+_0x395818[0x0];_0x3fc216[_0x1d7d('0x9c')](_0x247289,_0x395818[0x1]===_0x1d7d('0x9e')?![]:!![]);});}if(!_[_0x1d7d('0x84')](_0x1ea966)){_0x3fc216[_0x1d7d('0x71')](_0x193135);_0x155e88[_0x1d7d('0x56')](_0x1d7d('0x9f'),_0x1ea966);}BPromise['resolve']()[_0x1d7d('0x24')](function(){if(!_0x28ec14){if(_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x85')])return;_0x155e88[_0x1d7d('0x56')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x3fc216[_0x1d7d('0x56')](_0x1d7d('0xa0'));return;}if(_0x1e2ea8[_0x1d7d('0xa1')][_0x1d7d('0xa2')]!=='agent')return;return _0x1e2ea8['user']['getChatWebsites']({'attributes':['id'],'raw':!![]})['then'](function(_0x10925b){if(_[_0x1d7d('0x84')](_0x10925b)){_0x155e88['where']('i.ChatWebsiteId\x20IS\x20NULL');_0x3fc216[_0x1d7d('0x56')](_0x1d7d('0xa3'));}else{_0x155e88[_0x1d7d('0x56')](_0x1d7d('0x86'),_[_0x1d7d('0x41')](_0x10925b,'id'));_0x3fc216[_0x1d7d('0x56')](_0x1d7d('0x86'),_[_0x1d7d('0x41')](_0x10925b,'id'));}});})[_0x1d7d('0x24')](function(){if(_0x1e2ea8[_0x1d7d('0xa1')]['role']===_0x1d7d('0x3e')&&!_0x28ec14&&!_0x1e2ea8['query'][_0x1d7d('0x85')])return[];return db[_0x1d7d('0xa4')][_0x1d7d('0x4e')](_0x155e88['toString'](),_0xc3c42f);})[_0x1d7d('0x24')](function(_0x40464c){_0x3ccd44[_0x1d7d('0x34')]=_0x40464c[_0x1d7d('0x6e')];if(_0x3ccd44[_0x1d7d('0x34')]===0x0)return[];return db[_0x1d7d('0xa4')][_0x1d7d('0x4e')](_0x344b66[_0x1d7d('0xa5')](),_0xc3c42f)[_0x1d7d('0x24')](function(_0x74e3fe){_0x24e0b7=_[_0x1d7d('0xa6')](_0x74e3fe,'id');_0xc3c42f=_[_0x1d7d('0xa7')](_0xc3c42f,{'model':db[_0x1d7d('0x48')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1e2ea8[_0x1d7d('0x4e')][_0x1d7d('0x51')]){_0x72f5d7[_0x1d7d('0x52')][_0x1d7d('0x44')](function(_0x2aac19){_0x3fc216[_0x1d7d('0x5a')]('i.'+_0x2aac19);});}else{_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xa8'),_0x1d7d('0x70'));_0x3fc216[_0x1d7d('0x5a')]('a.key',_0x1d7d('0xa9'));_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xaa'),'Account.mandatoryDisposition');_0x3fc216[_0x1d7d('0x5a')]('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');_0x3fc216['field']('i.*');_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xab'),_0x1d7d('0xac'));_0x3fc216['field'](_0x1d7d('0xad'),'Contact.lastName');_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xae'),_0x1d7d('0xaf'));_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xb0'),_0x1d7d('0xb1'));_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xb2'),_0x1d7d('0xb3'));_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xb4'),'Contact.fax');_0x3fc216[_0x1d7d('0x5a')](_0x1d7d('0xb5'),_0x1d7d('0xb6'));_0x3fc216['field'](_0x1d7d('0xb7'),_0x1d7d('0xb8'));_0x3fc216[_0x1d7d('0x5a')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x72f5d7[_0x1d7d('0x32')])_0x3fc216['limit'](_0x72f5d7[_0x1d7d('0x32')]);if(_0x72f5d7[_0x1d7d('0x35')])_0x3fc216['offset'](_0x72f5d7[_0x1d7d('0x35')]);return db[_0x1d7d('0xa4')]['query'](_0x3fc216[_0x1d7d('0xa5')](),_0xc3c42f);})[_0x1d7d('0x24')](function(_0x45b5e2){if(_0x45b5e2[_0x1d7d('0x6e')]>0x0)_0x41ad41['where']('ui.ChatInteractionId\x20IN\x20?',_[_0x1d7d('0x41')](_0x45b5e2,'id'));return db[_0x1d7d('0xa4')][_0x1d7d('0x4e')](_0x41ad41[_0x1d7d('0xa5')](),_0xc3c42f)[_0x1d7d('0x24')](function(_0xa5c005){var _0x1af86a=_[_0x1d7d('0xb9')](_0xa5c005,_0x1d7d('0xba'));var _0x434500=[];_0x45b5e2[_0x1d7d('0x44')](function(_0x26781c){_0x434500[_0x1d7d('0x46')](updateChatInteraction(_0x26781c,_0x24e0b7,_0x1af86a));});return BPromise[_0x1d7d('0xbb')](_0x434500);});});})[_0x1d7d('0x24')](function(_0x39924a){_0x3ccd44[_0x1d7d('0xbc')]=_0x39924a;return _0x3ccd44;})[_0x1d7d('0x24')](respondWithFilteredResult(_0x370e8d,_0x72f5d7))['catch'](handleError(_0x370e8d,null));};exports[_0x1d7d('0xbd')]=function(_0x45e83d,_0x16ce51){var _0x20b99d={'raw':![],'where':{'id':_0x45e83d[_0x1d7d('0xbe')]['id']}},_0x5ca824={};_0x5ca824[_0x1d7d('0x4d')]=_[_0x1d7d('0x4f')](db[_0x1d7d('0x48')]['rawAttributes']);_0x5ca824[_0x1d7d('0x4e')]=_['keys'](_0x45e83d[_0x1d7d('0x4e')]);_0x5ca824[_0x1d7d('0x57')]=_[_0x1d7d('0x50')](_0x5ca824['model'],_0x5ca824[_0x1d7d('0x4e')]);_0x20b99d['attributes']=_[_0x1d7d('0x50')](_0x5ca824[_0x1d7d('0x4d')],qs[_0x1d7d('0x51')](_0x45e83d[_0x1d7d('0x4e')]['fields']));_0x20b99d[_0x1d7d('0x52')]=_0x20b99d['attributes'][_0x1d7d('0x6e')]?_0x20b99d[_0x1d7d('0x52')]:_0x5ca824['model'];if(_0x45e83d[_0x1d7d('0x4e')][_0x1d7d('0xbf')]){_0x20b99d[_0x1d7d('0xc0')]=[{'all':!![]}];}_0x20b99d=_[_0x1d7d('0xa7')]({},_0x20b99d,_0x45e83d['options']);return db['ChatInteraction']['find'](_0x20b99d)[_0x1d7d('0x24')](handleEntityNotFound(_0x16ce51,null))[_0x1d7d('0x24')](respondWithResult(_0x16ce51,null))[_0x1d7d('0x2e')](handleError(_0x16ce51,null));};exports[_0x1d7d('0xc1')]=function(_0x458f92,_0x55ea3b){return db[_0x1d7d('0x48')][_0x1d7d('0xc1')](_0x458f92[_0x1d7d('0x82')],{})[_0x1d7d('0x24')](respondWithResult(_0x55ea3b,0xc9))['catch'](handleError(_0x55ea3b,null));};exports['update']=function(_0xbde512,_0x21995f){if(_0xbde512[_0x1d7d('0x82')]['id']){delete _0xbde512[_0x1d7d('0x82')]['id'];}return db[_0x1d7d('0x48')][_0x1d7d('0x6f')]({'where':{'id':_0xbde512['params']['id']}})[_0x1d7d('0x24')](handleEntityNotFound(_0x21995f,null))['then'](saveUpdates(_0xbde512[_0x1d7d('0x82')],null))[_0x1d7d('0x24')](respondWithResult(_0x21995f,null))['catch'](handleError(_0x21995f,null));};exports[_0x1d7d('0xc2')]=function(_0x5a754a,_0x13566e){return db[_0x1d7d('0x48')][_0x1d7d('0x6f')]({'where':{'id':_0x5a754a[_0x1d7d('0xbe')]['id']}})[_0x1d7d('0x24')](handleEntityNotFound(_0x13566e,null))['then'](removeEntity(_0x13566e,null))[_0x1d7d('0x2e')](handleError(_0x13566e,null));};exports['describe']=function(_0x303d6f,_0x5bf0de){return db['ChatInteraction'][_0x1d7d('0xc3')]()[_0x1d7d('0x24')](respondWithResult(_0x5bf0de,null))[_0x1d7d('0x2e')](handleError(_0x5bf0de,null));};exports[_0x1d7d('0xc4')]=function(_0x8ce169,_0x3f119f){var _0x14d3fb=_0x8ce169[_0x1d7d('0xbe')]['id'];var _0x3d5fff;var _0x3b7543;var _0x3e94d6;return db[_0x1d7d('0x48')]['findOne']({'where':{'id':_0x14d3fb}})['then'](function(_0x1f2d68){_0x3d5fff=_0x1f2d68;return db['ChatWebsite'][_0x1d7d('0xc5')]({'where':{'id':_0x1f2d68['ChatWebsiteId']},'attributes':['id','vidaooApiKey',_0x1d7d('0xc6'),_0x1d7d('0xc7'),_0x1d7d('0xc8'),_0x1d7d('0xc9')],'raw':!![]});})[_0x1d7d('0x24')](function(_0xd919b1){if(_0xd919b1&&_0xd919b1[_0x1d7d('0xca')]&&_0xd919b1[_0x1d7d('0xc6')]){_0x3b7543=_0xd919b1;var _0x5690c={'interaction':{'id':_0x14d3fb},'agent':{'id':_0x8ce169['user']['id'],'name':_0x8ce169['user'][_0x1d7d('0x3b')],'fullname':_0x8ce169['user'][_0x1d7d('0x42')],'email':_0x8ce169[_0x1d7d('0xa1')][_0x1d7d('0xcb')]},'contact':_0x8ce169[_0x1d7d('0x82')][_0x1d7d('0x3d')],'account':_0x8ce169[_0x1d7d('0x82')][_0x1d7d('0x40')]};var _0x3774f8={'rejectUnauthorized':![],'method':_0x1d7d('0xcc'),'url':_0x1d7d('0xcd'),'headers':{'X-APIKEY':_0xd919b1[_0x1d7d('0xca')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x8ce169[_0x1d7d('0xa1')]['email']],'buttons':null,'topic':_0x3b7543['vidaooTopic'],'note':_[_0x1d7d('0xce')](_0x3b7543[_0x1d7d('0xc8')])?null:getMustacheRender(_0x3b7543[_0x1d7d('0xc8')],_0x5690c),'metadata':null},'redirect':'follow','json':!![]};try{if(!_['isNull'](_0x3b7543[_0x1d7d('0xc9')])){var _0x470f5e=getMustacheRender(_0x3b7543['vidaooMetadata'],_0x5690c);var _0x1f0d9f=JSON['parse'](_0x470f5e);_0x3774f8[_0x1d7d('0x82')]['metadata']=_0x1f0d9f;}}catch(_0x1f50d4){throw new db[(_0x1d7d('0x98'))][(_0x1d7d('0xcf'))](_0x1d7d('0xd0'));}return rp(_0x3774f8);}else{throw new db[(_0x1d7d('0x98'))][(_0x1d7d('0xcf'))](_0x1d7d('0xd1'));}})[_0x1d7d('0x24')](function(_0x4f1602){_0x3e94d6=_0x4f1602;if(_0x3e94d6['id']){var _0x202d85={'body':_0x3e94d6[_0x1d7d('0xd2')],'ChatWebsiteId':_0x3b7543['id'],'ChatInteractionId':_0x3d5fff['id'],'direction':_0x1d7d('0xd3'),'UserId':_0x8ce169[_0x1d7d('0xa1')]['id']};return db[_0x1d7d('0xd4')][_0x1d7d('0xc1')](_0x202d85,{});}else{throw new db['Sequelize'][(_0x1d7d('0xcf'))]('Unable\x20to\x20create\x20Vidaoo\x20session');}})[_0x1d7d('0x24')](function(){return _0x3d5fff[_0x1d7d('0xd5')]({'vidaooSessionId':_0x3e94d6['id']});})['then'](respondWithResult(_0x3f119f,null))[_0x1d7d('0x2e')](handleError(_0x3f119f,null));};exports[_0x1d7d('0xd6')]=function(_0x3e7f3c,_0x454679){if(_0x3e7f3c['body']['id']){delete _0x3e7f3c[_0x1d7d('0x82')]['id'];}return db[_0x1d7d('0x48')]['find']({'where':{'id':_0x3e7f3c['params']['id']},'include':[{'model':db[_0x1d7d('0xd7')],'as':'Contact'}]})['then'](handleEntityNotFound(_0x454679,null))['then'](saveUpdates(_0x3e7f3c[_0x1d7d('0x82')],null))['then'](respondWithResult(_0x454679,null))[_0x1d7d('0x2e')](handleError(_0x454679,null));};exports[_0x1d7d('0xd8')]=function(_0x4abfb1,_0x4caa84,_0x561f33){if(_0x4abfb1[_0x1d7d('0x82')]['id']){delete _0x4abfb1[_0x1d7d('0x82')]['id'];}return db[_0x1d7d('0x48')]['find']({'where':{'id':_0x4abfb1[_0x1d7d('0xbe')]['id']}})[_0x1d7d('0x24')](function(_0x54616b){if(!_0x54616b){logger['error'](_0x1d7d('0xd9'),'abandon',0x194,'entity\x20not\x20found');_0x4caa84[_0x1d7d('0x2f')](0x194);}else{if(_0x54616b[_0x1d7d('0xda')]){throw new db[(_0x1d7d('0x98'))][(_0x1d7d('0xcf'))](_0x1d7d('0xdb'));}}return _0x54616b;})[_0x1d7d('0x24')](function(_0x19427f){if(_0x19427f){return _0x19427f[_0x1d7d('0xdc')]({'closed':_0x4abfb1['body']['closed'],'disposition':_0x4abfb1[_0x1d7d('0x82')][_0x1d7d('0xdd')]})[_0x1d7d('0x24')](function(_0x4d8a36){return _0x4d8a36;});}})[_0x1d7d('0x24')](function(_0x216585){return respondWithRpcPromise('AbandonInteraction',_0x1d7d('0xd8'),_0x4abfb1[_0x1d7d('0x82')],client9004);})[_0x1d7d('0x24')](respondWithResult(_0x4caa84,null))['catch'](handleError(_0x4caa84,null));};exports['attachmentUpload']=function(_0x854f68,_0x205d6f,_0x149415){_0x854f68[_0x1d7d('0x82')][_0x1d7d('0x3b')]=_0x854f68[_0x1d7d('0xde')]['originalname'];_0x854f68[_0x1d7d('0x82')][_0x1d7d('0xdf')]=_0x854f68['file'][_0x1d7d('0xe0')];_0x854f68[_0x1d7d('0x82')]['type']=_0x854f68['file']['mimetype'];return db[_0x1d7d('0xe1')][_0x1d7d('0xc1')](_0x854f68[_0x1d7d('0x82')])[_0x1d7d('0x24')](respondWithResult(_0x205d6f,0xc9))[_0x1d7d('0x2e')](handleError(_0x205d6f,null));};exports[_0x1d7d('0xe2')]=function(_0x3e358c,_0x2eae3c,_0x3838ef){return db[_0x1d7d('0x48')][_0x1d7d('0xc5')]({'where':{'id':_0x3e358c[_0x1d7d('0xbe')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x2eae3c,null))['then'](function(_0x545b09){if(_0x545b09){if(_0x545b09[_0x1d7d('0xe3')]){return _0x2eae3c[_0x1d7d('0x30')](0x193)[_0x1d7d('0xe4')]({'status':0x193,'message':_0x1d7d('0xe5')});}return db[_0x1d7d('0xe1')][_0x1d7d('0xc5')]({'where':{'id':_0x3e358c[_0x1d7d('0x4e')][_0x1d7d('0xe6')]},'raw':!![]})['then'](handleEntityNotFound(_0x2eae3c,null));}})['then'](function(_0x549144){if(_0x549144){var _0x2a4feb=_0x549144[_0x1d7d('0xe7')]!==null;var _0x4df896=path[_0x1d7d('0xe8')](config['root'],_0x1d7d('0xe9'));if(_0x2a4feb){_0x4df896=path[_0x1d7d('0xe8')](_0x4df896,_0x1d7d('0xea'));}var _0x37eb97=path[_0x1d7d('0xe8')](_0x4df896,_0x549144[_0x1d7d('0xdf')]);return _0x2eae3c['download'](_0x37eb97);}})[_0x1d7d('0x2e')](handleError(_0x2eae3c,null));};exports[_0x1d7d('0xeb')]=function(_0x185697,_0x4d5753){var _0x55929b=null;var _0x43ce7f=null;var _0x2b0486=null;var _0x337c32=null;if(_0x185697['body']['id']){delete _0x185697[_0x1d7d('0x82')]['id'];}if(_0x185697['body'][_0x1d7d('0xec')]){_0x337c32=path[_0x1d7d('0xe8')](config[_0x1d7d('0xed')],'server/files/chat/upload/',util['format'](_0x1d7d('0xee'),Date[_0x1d7d('0xef')]()));_0x185697[_0x1d7d('0x82')][_0x1d7d('0xf0')]=_0x337c32;}return db[_0x1d7d('0x48')][_0x1d7d('0x6f')]({'where':{'id':_0x185697[_0x1d7d('0xbe')]['id']},'include':[{'model':db[_0x1d7d('0xd4')],'as':_0x1d7d('0xf1'),'include':[{'model':db[_0x1d7d('0x80')],'as':_0x1d7d('0x80')}]}]})['then'](handleEntityNotFound(_0x4d5753,null))[_0x1d7d('0x24')](saveUpdates(_0x185697[_0x1d7d('0x82')],null))[_0x1d7d('0x24')](function(_0x551a56){if(_0x551a56){_0x55929b=_0x551a56;return db['ChatWebsite'][_0x1d7d('0x6f')]({'where':{'id':_0x55929b['ChatWebsiteId']}});}})[_0x1d7d('0x24')](function(_0x1d47d9){if(_0x1d47d9){_0x2b0486=_0x1d47d9;return db[_0x1d7d('0xd7')]['find']({'where':{'id':_0x55929b[_0x1d7d('0x7b')]}});}})['then'](function(_0x5c0be4){if(_0x5c0be4){_0x43ce7f=_0x5c0be4;if(_0x337c32){var _0x46b9e5=null;for(var _0x385e15=0x1;_0x385e15<_0x55929b['Messages'][_0x1d7d('0x6e')];++_0x385e15){_0x46b9e5=_0x55929b[_0x1d7d('0xf1')][_0x385e15];var _0x20543c=_0x46b9e5[_0x1d7d('0xda')]?util[_0x1d7d('0xf2')]('%s%d',_0x2b0486[_0x1d7d('0xf3')],_0x46b9e5['UserId']):_0x1d7d('0xf4');var _0x474f68=_0x185697['body'][_0x1d7d('0xf5')]||util[_0x1d7d('0xf2')](_0x1d7d('0xf6'),_0x1d7d('0xf7'),_0x46b9e5[_0x1d7d('0x7b')]);switch(_0x2b0486[_0x1d7d('0xf8')]){case _0x1d7d('0xf9'):_0x20543c=_0x46b9e5[_0x1d7d('0xda')]?util[_0x1d7d('0xf2')](_0x1d7d('0xf6'),_0x2b0486[_0x1d7d('0xf3')],_0x46b9e5[_0x1d7d('0xda')]):_0x1d7d('0xf4');break;case'agent_alias':_0x20543c=_0x46b9e5['UserId']?_0x46b9e5[_0x1d7d('0x80')]['alias']||_0x46b9e5['User'][_0x1d7d('0x42')]:'System';break;case _0x1d7d('0xfa'):_0x20543c=_0x46b9e5[_0x1d7d('0xda')]?_0x46b9e5[_0x1d7d('0x80')]['fullname']:_0x1d7d('0xf4');break;default:_0x20543c=_0x46b9e5[_0x1d7d('0xda')]?util[_0x1d7d('0xf2')](_0x1d7d('0xf6'),_0x2b0486[_0x1d7d('0xf3')],_0x46b9e5[_0x1d7d('0xda')]):_0x1d7d('0xf4');}var _0x353bb1=util[_0x1d7d('0xf2')]('[%s]\x20%s:\x20%s\x0a',moment(_0x46b9e5[_0x1d7d('0x87')])['format']('MM/DD/YYYY\x20HH:mm:ss'),_0x46b9e5[_0x1d7d('0xfb')]==='in'?_0x474f68:_0x20543c,_0x46b9e5['body']);if(!_0x46b9e5[_0x1d7d('0xfc')]){fs[_0x1d7d('0xfd')](_0x337c32,_0x353bb1);}}return db[_0x1d7d('0xfe')]['findOne']({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x1d7d('0xff'),'raw':!![]}]});}}})[_0x1d7d('0x24')](function(_0x5c2113){if(_0x5c2113&&_0x5c2113[_0x1d7d('0xff')]&&_0x185697[_0x1d7d('0x82')]){var _0x129d4b={'tls':{'rejectUnauthorized':![]}};if(_0x5c2113['Smtp']['service']){_0x129d4b[_0x1d7d('0x100')]=_0x5c2113[_0x1d7d('0xff')][_0x1d7d('0x100')];}else{_0x129d4b['host']=_0x5c2113[_0x1d7d('0xff')][_0x1d7d('0x101')];_0x129d4b['port']=_0x5c2113['Smtp']['port'];_0x129d4b[_0x1d7d('0x102')]=_0x5c2113[_0x1d7d('0xff')][_0x1d7d('0x102')];}if(_0x5c2113['Smtp']['authentication']){_0x129d4b[_0x1d7d('0x103')]={'user':_0x5c2113[_0x1d7d('0xff')]['user'],'pass':_0x5c2113['Smtp'][_0x1d7d('0x104')]};}return respondWithRpcPromise(_0x1d7d('0x105'),'sendMail',{'account':_0x129d4b,'message':{'from':util[_0x1d7d('0xf2')]('\x22%s\x22\x20<%s>',_0x5c2113[_0x1d7d('0x3b')],_0x5c2113[_0x1d7d('0xcb')]||_0x5c2113[_0x1d7d('0xff')][_0x1d7d('0xa1')]),'to':_0x185697[_0x1d7d('0x82')][_0x1d7d('0xec')],'subject':_0x1d7d('0x106'),'text':util[_0x1d7d('0xf2')](_0x1d7d('0x107'),_0x185697[_0x1d7d('0x82')][_0x1d7d('0xec')]),'attachments':[{'path':_0x337c32}]}})['then'](function(){return _0x55929b;})[_0x1d7d('0x2e')](function(_0x18c505){console[_0x1d7d('0x29')](_0x18c505);});}else{return _0x55929b;}})['then'](respondWithStatusCode(_0x4d5753,0xc8))['catch'](handleError(_0x4d5753,null));};exports[_0x1d7d('0x108')]=function(_0x1b41b5,_0x5b79bd,_0xb87340){return db[_0x1d7d('0xd4')][_0x1d7d('0x6f')]({'where':{'id':_0x1b41b5[_0x1d7d('0xbe')]['id']}})[_0x1d7d('0x24')](handleEntityNotFound(_0x5b79bd,null))[_0x1d7d('0x24')](function(_0x537520){if(_0x537520){return _0x537520[_0x1d7d('0x108')](_0x1b41b5['body']['ids'],_['omit'](_0x1b41b5[_0x1d7d('0x82')],['ids','id'])||{});}})[_0x1d7d('0x24')](respondWithResult(_0x5b79bd,null))[_0x1d7d('0x2e')](handleError(_0x5b79bd,null));};exports['getMessages']=function(_0x1ce79d,_0x7dbbc9,_0x286ddd){var _0x1484b1={'raw':![],'where':{}};var _0x5be0c4={};var _0x50be17={'count':0x0,'rows':[]};return db[_0x1d7d('0x48')][_0x1d7d('0xc5')]({'where':{'id':_0x1ce79d[_0x1d7d('0xbe')]['id']}})['then'](handleEntityNotFound(_0x7dbbc9,null))['then'](function(_0x81fadf){if(_0x81fadf){_0x5be0c4['model']=_[_0x1d7d('0x4f')](db[_0x1d7d('0xd4')][_0x1d7d('0x49')]);_0x5be0c4[_0x1d7d('0x4e')]=_['keys'](_0x1ce79d[_0x1d7d('0x4e')]);_0x5be0c4['filters']=_[_0x1d7d('0x50')](_0x5be0c4[_0x1d7d('0x4d')],_0x5be0c4[_0x1d7d('0x4e')]);_0x1484b1['attributes']=_[_0x1d7d('0x50')](_0x5be0c4[_0x1d7d('0x4d')],qs['fields'](_0x1ce79d[_0x1d7d('0x4e')][_0x1d7d('0x51')]));_0x1484b1[_0x1d7d('0x52')]=_0x1484b1[_0x1d7d('0x52')]['length']?_0x1484b1[_0x1d7d('0x52')]:_0x5be0c4[_0x1d7d('0x4d')];if(!_0x1ce79d[_0x1d7d('0x4e')]['hasOwnProperty']('nolimit')){_0x1484b1[_0x1d7d('0x32')]=qs['limit'](_0x1ce79d[_0x1d7d('0x4e')][_0x1d7d('0x32')]);_0x1484b1[_0x1d7d('0x35')]=qs['offset'](_0x1ce79d[_0x1d7d('0x4e')]['offset']);}_0x1484b1[_0x1d7d('0x9c')]=qs['sort'](_0x1ce79d[_0x1d7d('0x4e')]['sort']);_0x1484b1['where']=qs[_0x1d7d('0x57')](_[_0x1d7d('0x58')](_0x1ce79d[_0x1d7d('0x4e')],_0x5be0c4[_0x1d7d('0x57')]));_0x1484b1[_0x1d7d('0x56')]['ChatInteractionId']=_0x81fadf['id'];if(_0x1ce79d[_0x1d7d('0x4e')][_0x1d7d('0x92')]){_0x1484b1[_0x1d7d('0x56')]=_['merge'](_0x1484b1[_0x1d7d('0x56')],{'$or':_['map'](_0x1484b1['attributes'],function(_0x19ee24){var _0x3cdad2={};_0x3cdad2[_0x19ee24]={'$like':'%'+_0x1ce79d['query'][_0x1d7d('0x92')]+'%'};return _0x3cdad2;})});}if(_0x1ce79d[_0x1d7d('0x4e')][_0x1d7d('0x89')]){var _0x24984d=_0x1ce79d[_0x1d7d('0x4e')]['$gte'][_0x1d7d('0x77')](',');var _0x5a2144={};_0x5a2144[_0x24984d[0x0]]={'$gte':moment(_0x24984d[0x1])[_0x1d7d('0xf2')](_0x1d7d('0x109'))};_0x1484b1[_0x1d7d('0x56')]=_['merge'](_0x1484b1['where'],_0x5a2144);}_0x1484b1=_['merge']({},_0x1484b1,_0x1ce79d['options']);return db['ChatMessage'][_0x1d7d('0x34')]({'where':_0x1484b1[_0x1d7d('0x56')]})[_0x1d7d('0x24')](function(_0x1e83dc){_0x50be17[_0x1d7d('0x34')]=_0x1e83dc;if(_0x1ce79d['query']['includeAll']){_0x1484b1[_0x1d7d('0xc0')]=[{'all':!![]}];}return db[_0x1d7d('0xd4')]['findAll'](_0x1484b1);})[_0x1d7d('0x24')](function(_0x2d0232){_0x50be17[_0x1d7d('0xbc')]=_0x2d0232;return _0x50be17;});}})['then'](respondWithFilteredResult(_0x7dbbc9,_0x1484b1))[_0x1d7d('0x2e')](handleError(_0x7dbbc9,null));};exports[_0x1d7d('0x10a')]=function(_0xb42210,_0x3844b6,_0x1181b6){var _0x530493={'where':{}},_0x53cdb8={},_0x960917={'count':0x0,'rows':[]};return db[_0x1d7d('0x48')][_0x1d7d('0xc5')]({'where':{'id':_0xb42210[_0x1d7d('0xbe')]['id']}})[_0x1d7d('0x24')](handleEntityNotFound(_0x3844b6,null))['then'](function(_0x339603){if(_0x339603){_0x53cdb8[_0x1d7d('0x4d')]=_['keys'](db['ChatMessage'][_0x1d7d('0x49')]);_0x53cdb8['query']=_[_0x1d7d('0x4f')](_0xb42210[_0x1d7d('0x4e')]);_0x53cdb8[_0x1d7d('0x57')]=_[_0x1d7d('0x50')](_0x53cdb8[_0x1d7d('0x4d')],_0x53cdb8[_0x1d7d('0x4e')]);_0x530493[_0x1d7d('0x52')]=_['intersection'](_0x53cdb8[_0x1d7d('0x4d')],qs[_0x1d7d('0x51')](_0xb42210[_0x1d7d('0x4e')]['fields']));_0x530493[_0x1d7d('0x52')]=_0x530493[_0x1d7d('0x52')]['length']?_0x530493[_0x1d7d('0x52')]:_0x53cdb8['model'];if(!_0xb42210[_0x1d7d('0x4e')][_0x1d7d('0x53')](_0x1d7d('0x54'))){_0x530493[_0x1d7d('0x32')]=qs[_0x1d7d('0x32')](_0xb42210['query'][_0x1d7d('0x32')]);_0x530493[_0x1d7d('0x35')]=qs['offset'](_0xb42210['query'][_0x1d7d('0x35')]);}_0x530493[_0x1d7d('0x9c')]=qs['sort'](_0xb42210[_0x1d7d('0x4e')][_0x1d7d('0x55')]);_0x530493[_0x1d7d('0x56')]=qs[_0x1d7d('0x57')](_['pick'](_0xb42210['query'],_0x53cdb8[_0x1d7d('0x57')]));_0x530493[_0x1d7d('0x56')][_0x1d7d('0xba')]=_0x339603['id'];if(_0xb42210[_0x1d7d('0x4e')][_0x1d7d('0x92')]){_0x530493[_0x1d7d('0x56')]=_[_0x1d7d('0xa7')](_0x530493[_0x1d7d('0x56')],{'$or':_[_0x1d7d('0x41')](_0x530493[_0x1d7d('0x52')],function(_0x3dfeb8){var _0x4726cb={};_0x4726cb[_0x3dfeb8]={'$like':'%'+_0xb42210[_0x1d7d('0x4e')][_0x1d7d('0x92')]+'%'};return _0x4726cb;})});}_0x530493[_0x1d7d('0x56')][_0x1d7d('0xfc')]=![];if(_0xb42210[_0x1d7d('0x4e')]['id']){_0x530493['where']['id']={'$gt':_0xb42210[_0x1d7d('0x4e')]['id']};}_0x530493=_['merge']({},_0x530493,_0xb42210['options']);return db[_0x1d7d('0xd4')][_0x1d7d('0x34')]({'where':_0x530493[_0x1d7d('0x56')]})[_0x1d7d('0x24')](function(_0x1e2b03){_0x960917['count']=_0x1e2b03;_0x530493[_0x1d7d('0xc0')]=[];if(_0xb42210[_0x1d7d('0x4e')]['includeAgent']){_0x530493[_0x1d7d('0xc0')]['push']({'model':db[_0x1d7d('0x80')],'as':_0x1d7d('0x80'),'attributes':['id',_0x1d7d('0x42'),_0x1d7d('0x10b')]});}if(_0xb42210[_0x1d7d('0x4e')]['includeAll']){_0x530493[_0x1d7d('0xc0')]=[{'all':!![]}];}return db[_0x1d7d('0xd4')][_0x1d7d('0x10c')](_0x530493);})[_0x1d7d('0x24')](function(_0x2d1258){_0x960917[_0x1d7d('0xbc')]=_0x2d1258;return _0x960917;});}})[_0x1d7d('0x24')](respondWithFilteredResult(_0x3844b6,_0x530493))[_0x1d7d('0x2e')](handleError(_0x3844b6,null));};exports[_0x1d7d('0x10d')]=function(_0x34b43f,_0x14a937,_0x291f26){return db['ChatInteraction'][_0x1d7d('0x6f')]({'where':{'id':_0x34b43f[_0x1d7d('0xbe')]['id']}})[_0x1d7d('0x24')](handleEntityNotFound(_0x14a937,null))['then'](function(_0x59b044){if(_0x59b044){return _0x59b044[_0x1d7d('0x10e')](_0x34b43f['body'][_0x1d7d('0x10f')],_[_0x1d7d('0x110')](_0x34b43f[_0x1d7d('0x82')],[_0x1d7d('0x10f'),'id'])||{})[_0x1d7d('0x111')](function(){return db[_0x1d7d('0x7e')]['findAll']({'attributes':['id',_0x1d7d('0x3b'),'color'],'where':{'id':_0x34b43f['body'][_0x1d7d('0x10f')]}});})[_0x1d7d('0x24')](function(_0x5b1ae1){socket[_0x1d7d('0x112')](_0x1d7d('0x113'),{'id':Number(_0x34b43f['params']['id']),'tags':_0x5b1ae1||[]});return{'id':Number(_0x34b43f[_0x1d7d('0xbe')]['id']),'tags':_0x5b1ae1||[]};});}})['then'](respondWithResult(_0x14a937,null))[_0x1d7d('0x2e')](handleError(_0x14a937,null));};exports[_0x1d7d('0x114')]=function(_0x7c3bd8,_0x552481,_0x2c91d5){return db['ChatInteraction'][_0x1d7d('0x6f')]({'where':{'id':_0x7c3bd8[_0x1d7d('0xbe')]['id']}})[_0x1d7d('0x24')](handleEntityNotFound(_0x552481,null))[_0x1d7d('0x24')](function(_0xf5e9f8){if(_0xf5e9f8){return _0xf5e9f8['removeTags'](_0x7c3bd8['query'][_0x1d7d('0x10f')]);}})[_0x1d7d('0x24')](respondWithStatusCode(_0x552481,null))['catch'](handleError(_0x552481,null));};exports[_0x1d7d('0x115')]=function(_0x210be0,_0x5f1b69){var _0x44c5ac=moment()[_0x1d7d('0x116')]()['toString']();var _0x39cae3=path[_0x1d7d('0xe8')](config[_0x1d7d('0xed')],'server','files',_0x1d7d('0x117'));var _0x1eec70=path[_0x1d7d('0xe8')](config[_0x1d7d('0xed')],_0x1d7d('0x118'),_0x1d7d('0x119'),_0x1d7d('0x11a'));var _0x3ded4b=path['join'](_0x39cae3,_0x44c5ac);var _0xe65d48=util[_0x1d7d('0xf2')](_0x1d7d('0x11b'),_0x210be0[_0x1d7d('0xbe')]['id'],_0x44c5ac);var _0x3b440c=path['join'](_0x39cae3,_0xe65d48);var _0x473472=[];_0x473472[_0x1d7d('0x46')]({'model':db[_0x1d7d('0x80')],'as':_0x1d7d('0x80'),'attributes':['id',_0x1d7d('0x42')],'raw':!![]});_0x473472[_0x1d7d('0x46')]({'model':db[_0x1d7d('0xd7')],'as':_0x1d7d('0x73'),'attributes':['id','firstName',_0x1d7d('0x11c')],'raw':!![]});if(_0x210be0[_0x1d7d('0x4e')][_0x1d7d('0x11a')]){_0x473472[_0x1d7d('0x46')]({'model':db['Attachment'],'as':_0x1d7d('0xe1'),'raw':!![]});}var _0x2aab28=[{'model':db[_0x1d7d('0xd4')],'as':_0x1d7d('0xf1'),'attributes':['id','body',_0x1d7d('0x87'),_0x1d7d('0xfb'),'secret',_0x1d7d('0x8e')],'include':_0x473472}];_0x2aab28['push']({'model':db[_0x1d7d('0x11d')],'as':'Account','attributes':['id','name']});_0x2aab28[_0x1d7d('0x46')]({'model':db[_0x1d7d('0x80')],'as':'Owner','attributes':['id','fullname']});return db[_0x1d7d('0x48')]['find']({'where':{'id':_0x210be0[_0x1d7d('0xbe')]['id']},'include':_0x2aab28})[_0x1d7d('0x24')](handleEntityNotFound(_0x5f1b69,null))[_0x1d7d('0x24')](function(_0x4e8473){if(_0x4e8473){var _0x194822=_0x4e8473[_0x1d7d('0x11e')]({'plain':!![]});fs[_0x1d7d('0x11f')](_0x3ded4b);var _0x3e93bb={'channel':_0x1d7d('0x120'),'account':_0x194822[_0x1d7d('0x121')]['name'],'agent':_0x194822['Owner']?_0x194822[_0x1d7d('0x122')][_0x1d7d('0x42')]:_0x1d7d('0x123'),'createdAt':moment(_0x194822[_0x1d7d('0x87')])[_0x1d7d('0xf2')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x194822[_0x1d7d('0xe3')]?moment(_0x194822['closedAt'])['format'](_0x1d7d('0x109'))[_0x1d7d('0xa5')]():'','disposition':_0x194822[_0x1d7d('0xdd')],'chatInfo':{'browser':_0x194822[_0x1d7d('0x124')],'os':_0x194822[_0x1d7d('0x125')],'referer':_0x194822['referer'],'customerIp':_0x194822[_0x1d7d('0x126')],'customerPort':_0x194822[_0x1d7d('0x127')]?_0x194822[_0x1d7d('0x127')]:_0x1d7d('0x123')},'messages':_(_0x194822[_0x1d7d('0xf1')])[_0x1d7d('0x128')]()['filter']({'secret':![]})[_0x1d7d('0x41')](function(_0x6ea91f){if(_0x6ea91f[_0x1d7d('0xe1')]){var _0x2b3cbd=path[_0x1d7d('0xe8')](_0x1eec70,_0x6ea91f[_0x1d7d('0xe1')][_0x1d7d('0xdf')]);if(fs['existsSync'](_0x2b3cbd)){fs[_0x1d7d('0x129')](_0x2b3cbd)[_0x1d7d('0x12a')](fs[_0x1d7d('0x12b')](path[_0x1d7d('0xe8')](_0x3ded4b,_0x6ea91f[_0x1d7d('0xe1')]['basename'])));}}return{'date':moment(_0x6ea91f[_0x1d7d('0x87')])[_0x1d7d('0xf2')](_0x1d7d('0x109'))[_0x1d7d('0xa5')](),'sender':_0x6ea91f['direction']==='out'?_0x6ea91f[_0x1d7d('0x80')]?_0x6ea91f[_0x1d7d('0x80')][_0x1d7d('0x42')]:_0x1d7d('0xf4'):_0x6ea91f[_0x1d7d('0x73')]['firstName']+(_0x6ea91f[_0x1d7d('0x73')][_0x1d7d('0x11c')]?'\x20'+_0x6ea91f[_0x1d7d('0x73')]['lastName']:''),'body':_0x6ea91f[_0x1d7d('0xe1')]?_0x6ea91f[_0x1d7d('0xe1')][_0x1d7d('0xdf')]:_0x6ea91f[_0x1d7d('0x82')],'direction':_0x6ea91f['direction']===_0x1d7d('0xd3')?'A':'C','secret':_0x6ea91f[_0x1d7d('0xfc')],'read':_0x6ea91f[_0x1d7d('0x8e')],'attachment':_0x6ea91f['Attachment']};})[_0x1d7d('0x76')]()};return ejs[_0x1d7d('0x12c')](path[_0x1d7d('0xe8')](config[_0x1d7d('0xed')],'server','views',_0x1d7d('0x12d')),{'interaction':_0x3e93bb})[_0x1d7d('0x24')](function(_0x43f4cb){var _0x21d65a=path[_0x1d7d('0xe8')](_0x3ded4b,'transcript-'+_0x194822['id']+'-'+_0x44c5ac+_0x1d7d('0x12e'));var _0x4d0682={'path':_0x21d65a,'channel':_0x1d7d('0x120'),'interactionId':_0x194822['id']};return pdf[_0x1d7d('0x12f')](_0x43f4cb,_0x4d0682);})['then'](function(){return new BPromise(function(_0x29f93c,_0x582183){zipdir(_0x3ded4b,{'saveTo':_0x3b440c},function(_0x12250e,_0x19127b){if(_0x12250e)return _0x582183(_0x12250e);return _0x29f93c(_0x19127b);});})['then'](function(){return new BPromise(function(_0x35f2d1,_0x588610){rimraf(_0x3ded4b,function(_0x35f18d){if(_0x35f18d)_0x588610(_0x35f18d);return _0x35f2d1();});});})[_0x1d7d('0x24')](function(){return _0x5f1b69[_0x1d7d('0x115')](_0x3b440c,_0xe65d48,function(_0x10263c){if(_0x10263c){console['log']('err',_0x10263c);}else{fs[_0x1d7d('0x130')](_0x3b440c);}});});});}else{return _0x5f1b69[_0x1d7d('0x2f')](0xc8);}})[_0x1d7d('0x2e')](handleError(_0x5f1b69,null));};
\ No newline at end of file
index 54cb2c9..b604b9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c1c=['ChatMessage','setMaxListeners','save','update','remove','getUsers','setDataValue','Users','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','exports','../../mysqldb','ChatInteraction'];(function(_0x673722,_0x275d7e){var _0x21249c=function(_0x25b4e7){while(--_0x25b4e7){_0x673722['push'](_0x673722['shift']());}};_0x21249c(++_0x275d7e);}(_0x9c1c,0x1ae));var _0xc9c1=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0x9c1c[_0x28d18d];return _0x470640;};'use strict';var EventEmitter=require('events');var ChatInteraction=require(_0xc9c1('0x0'))['db'][_0xc9c1('0x1')];var ChatMessage=require('../../mysqldb')['db'][_0xc9c1('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xc9c1('0x3')](0x0);var events={'afterCreate':_0xc9c1('0x4'),'afterUpdate':_0xc9c1('0x5'),'afterDestroy':_0xc9c1('0x6')};function emitEvent(_0x19538a){return function(_0x4db274,_0x275a08,_0x5bf8eb){_0x4db274[_0xc9c1('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x425f9d){_0x4db274[_0xc9c1('0x8')](_0xc9c1('0x9'),_0x425f9d['map'](function(_0x2f1399){return{'id':_0x2f1399['id']};}));return ChatMessage[_0xc9c1('0xa')]({'where':{'ChatInteractionId':_0x4db274['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc9c1('0xb')](function(_0x1c3e80){_0x4db274['setDataValue'](_0xc9c1('0xc'),_0x1c3e80[_0xc9c1('0xd')]);ChatInteractionEvents['emit'](_0x19538a+':'+_0x4db274['id'],_0x4db274);ChatInteractionEvents[_0xc9c1('0xe')](_0x19538a,_0x4db274);_0x5bf8eb(null);})[_0xc9c1('0xf')](_0x5bf8eb(null));};}for(var e in events){if(events[_0xc9c1('0x10')](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0xc9c1('0x11')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x7a32=['then','setDataValue','map','unreadMessages','length','emit','catch','hook','events','../../mysqldb','ChatInteraction','save','update'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0x7a32,0x140));var _0x27a3=function(_0x487a40,_0x4a6630){_0x487a40=_0x487a40-0x0;var _0x1d74cb=_0x7a32[_0x487a40];return _0x1d74cb;};'use strict';var EventEmitter=require(_0x27a3('0x0'));var ChatInteraction=require(_0x27a3('0x1'))['db'][_0x27a3('0x2')];var ChatMessage=require(_0x27a3('0x1'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x27a3('0x3'),'afterUpdate':_0x27a3('0x4'),'afterDestroy':'remove'};function emitEvent(_0x5d3a80){return function(_0x130e9d,_0x1ee4d8,_0x1e0006){_0x130e9d['getUsers']({'attributes':['id'],'raw':!![]})[_0x27a3('0x5')](function(_0x2d522c){_0x130e9d[_0x27a3('0x6')]('Users',_0x2d522c[_0x27a3('0x7')](function(_0x4b344f){return{'id':_0x4b344f['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x130e9d['id'],'direction':'in','read':![]},'raw':!![]});})[_0x27a3('0x5')](function(_0xbad751){_0x130e9d[_0x27a3('0x6')](_0x27a3('0x8'),_0xbad751[_0x27a3('0x9')]);ChatInteractionEvents['emit'](_0x5d3a80+':'+_0x130e9d['id'],_0x130e9d);ChatInteractionEvents[_0x27a3('0xa')](_0x5d3a80,_0x130e9d);_0x1e0006(null);})[_0x27a3('0xb')](_0x1e0006(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction[_0x27a3('0xc')](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
index 74985a5..81635b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2716=['define','ChatInteraction','chat_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./chatInteraction.attributes'];(function(_0x12918c,_0x1bb0dc){var _0x4890de=function(_0x50390d){while(--_0x50390d){_0x12918c['push'](_0x12918c['shift']());}};_0x4890de(++_0x1bb0dc);}(_0x2716,0xc4));var _0x6271=function(_0x3b2369,_0x4c68b9){_0x3b2369=_0x3b2369-0x0;var _0x5a1367=_0x2716[_0x3b2369];return _0x5a1367;};'use strict';var _=require('lodash');var util=require(_0x6271('0x0'));var logger=require(_0x6271('0x1'))('api');var moment=require(_0x6271('0x2'));var BPromise=require(_0x6271('0x3'));var rp=require(_0x6271('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6271('0x5'));var config=require(_0x6271('0x6'));var attributes=require(_0x6271('0x7'));module['exports']=function(_0x3a8589,_0x3cbf6b){return _0x3a8589[_0x6271('0x8')](_0x6271('0x9'),attributes,{'tableName':_0x6271('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x43bcc5,_0x38f722,_0x11745c){if(_0x43bcc5[_0x6271('0xb')](_0x6271('0xc'))){_0x43bcc5[_0x6271('0xd')]=moment()['format'](_0x6271('0xe'));}_0x11745c(null,_0x43bcc5);}},'charset':_0x6271('0xf'),'collate':_0x6271('0x10')});};
\ No newline at end of file
+var _0xa71c=['../../config/environment','define','chat_interactions','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','lodash','../../config/logger','bluebird','path'];(function(_0x134192,_0x36adc5){var _0x3cd080=function(_0x134371){while(--_0x134371){_0x134192['push'](_0x134192['shift']());}};_0x3cd080(++_0x36adc5);}(_0xa71c,0x172));var _0xca71=function(_0x36ea4e,_0x487dd6){_0x36ea4e=_0x36ea4e-0x0;var _0x146444=_0xa71c[_0x36ea4e];return _0x146444;};'use strict';var _=require(_0xca71('0x0'));var util=require('util');var logger=require(_0xca71('0x1'))('api');var moment=require('moment');var BPromise=require(_0xca71('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xca71('0x3'));var rimraf=require('rimraf');var config=require(_0xca71('0x4'));var attributes=require('./chatInteraction.attributes');module['exports']=function(_0x3196b7,_0x5d8b2a){return _0x3196b7[_0xca71('0x5')]('ChatInteraction',attributes,{'tableName':_0xca71('0x6'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3bc4d3,_0x5e422c,_0x115cb8){if(_0x3bc4d3['changed'](_0xca71('0x7'))){_0x3bc4d3[_0xca71('0x8')]=moment()['format'](_0xca71('0x9'));}_0x115cb8(null,_0x3bc4d3);}},'charset':'utf8mb4','collate':_0xca71('0xa')});};
\ No newline at end of file
index 637d768..bc6fdaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd542=['stringify','error','code','message','result','catch','UpdateChatInteraction','ChatInteraction','update','body','options','attributes','limit','AddTagsToChatInteraction','find','addTags','ids','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','request','info','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x240cf5,_0x150de1){var _0x4fef07=function(_0x32d3d7){while(--_0x32d3d7){_0x240cf5['push'](_0x240cf5['shift']());}};_0x4fef07(++_0x150de1);}(_0xd542,0x1ec));var _0x2d54=function(_0x262254,_0x135a4f){_0x262254=_0x262254-0x0;var _0x13baed=_0xd542[_0x262254];return _0x13baed;};'use strict';var _=require(_0x2d54('0x0'));var util=require('util');var moment=require(_0x2d54('0x1'));var BPromise=require(_0x2d54('0x2'));var rs=require(_0x2d54('0x3'));var fs=require('fs');var Redis=require(_0x2d54('0x4'));var db=require(_0x2d54('0x5'))['db'];var utils=require(_0x2d54('0x6'));var logger=require('../../config/logger')(_0x2d54('0x7'));var config=require(_0x2d54('0x8'));var jayson=require(_0x2d54('0x9'));var client=jayson[_0x2d54('0xa')][_0x2d54('0xb')]({'port':0x232a});config[_0x2d54('0xc')]=_[_0x2d54('0xd')](config[_0x2d54('0xc')],{'host':_0x2d54('0xe'),'port':0x18eb});var socket=require(_0x2d54('0xf'))(new Redis(config['redis']));require(_0x2d54('0x10'))[_0x2d54('0x11')](socket);function respondWithRpcPromise(_0x2f47c2,_0x432a2e,_0x49d6b6){return new BPromise(function(_0x4510c0,_0x5dda9a){return client[_0x2d54('0x12')](_0x2f47c2,_0x49d6b6)['then'](function(_0x3d421f){logger[_0x2d54('0x13')](_0x2d54('0x14'),_0x432a2e,'request\x20sent');logger[_0x2d54('0x15')](_0x2d54('0x16'),_0x432a2e,_0x2d54('0x17'),JSON[_0x2d54('0x18')](_0x3d421f));if(_0x3d421f[_0x2d54('0x19')]){if(_0x3d421f[_0x2d54('0x19')][_0x2d54('0x1a')]===0x1f4){logger[_0x2d54('0x19')]('ChatInteraction,\x20%s,\x20%s',_0x432a2e,_0x3d421f[_0x2d54('0x19')]['message']);return _0x5dda9a(_0x3d421f[_0x2d54('0x19')][_0x2d54('0x1b')]);}logger[_0x2d54('0x19')](_0x2d54('0x14'),_0x432a2e,_0x3d421f[_0x2d54('0x19')][_0x2d54('0x1b')]);return _0x4510c0(_0x3d421f['error']['message']);}else{logger[_0x2d54('0x13')](_0x2d54('0x14'),_0x432a2e,_0x2d54('0x17'));_0x4510c0(_0x3d421f[_0x2d54('0x1c')][_0x2d54('0x1b')]);}})[_0x2d54('0x1d')](function(_0x30f921){logger[_0x2d54('0x19')](_0x2d54('0x14'),_0x432a2e,_0x30f921);_0x5dda9a(_0x30f921);});});}exports[_0x2d54('0x1e')]=function(_0x456983){var _0x408244=this;return new Promise(function(_0x57b515,_0x3540e9){return db[_0x2d54('0x1f')][_0x2d54('0x20')](_0x456983[_0x2d54('0x21')],{'raw':_0x456983[_0x2d54('0x22')]?_0x456983[_0x2d54('0x22')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x456983['options']?_0x456983[_0x2d54('0x22')]['where']||null:null,'attributes':_0x456983[_0x2d54('0x22')]?_0x456983[_0x2d54('0x22')][_0x2d54('0x23')]||null:null,'limit':_0x456983['options']?_0x456983[_0x2d54('0x22')][_0x2d54('0x24')]||null:null})['then'](function(_0xbfe428){logger[_0x2d54('0x13')](_0x2d54('0x1e'),_0x456983);logger[_0x2d54('0x15')](_0x2d54('0x1e'),_0x456983,JSON[_0x2d54('0x18')](_0xbfe428));_0x57b515(_0xbfe428);})['catch'](function(_0x3dac85){logger['error']('UpdateChatInteraction',_0x3dac85[_0x2d54('0x1b')],_0x456983);_0x3540e9(_0x408244['error'](0x1f4,_0x3dac85[_0x2d54('0x1b')]));});});};exports[_0x2d54('0x25')]=function(_0x144c34){return new Promise(function(_0x1be88b,_0x34afdd){return db[_0x2d54('0x1f')][_0x2d54('0x26')]({'where':_0x144c34['options']?_0x144c34['options']['where']||null:null})['then'](function(_0x27444c){if(_0x27444c){return _0x27444c[_0x2d54('0x27')](_0x144c34[_0x2d54('0x21')][_0x2d54('0x28')],_['omit'](_0x144c34[_0x2d54('0x21')],['ids','id'])||{});}})[_0x2d54('0x29')](function(_0x180133){logger[_0x2d54('0x13')]('AddTags',_0x144c34);logger['debug'](_0x2d54('0x2a'),_0x144c34,JSON[_0x2d54('0x18')](_0x180133));_0x1be88b(_0x180133);})[_0x2d54('0x1d')](function(_0x49ff29){logger[_0x2d54('0x19')](_0x2d54('0x2a'),_0x49ff29['message'],_0x144c34);_0x34afdd(_this[_0x2d54('0x19')](0x1f4,_0x49ff29['message']));});});};
\ No newline at end of file
+var _0xc297=['redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','request','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','ChatInteraction,\x20%s,\x20%s','message','result','catch','UpdateChatInteraction','ChatInteraction','update','body','options','attributes','limit','AddTagsToChatInteraction','find','where','addTags','ids','omit','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x253bd2,_0x4e88ff){var _0x457ff9=function(_0x15cb2e){while(--_0x15cb2e){_0x253bd2['push'](_0x253bd2['shift']());}};_0x457ff9(++_0x4e88ff);}(_0xc297,0x154));var _0x7c29=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xc297[_0x1d1779];return _0x2377e9;};'use strict';var _=require(_0x7c29('0x0'));var util=require(_0x7c29('0x1'));var moment=require(_0x7c29('0x2'));var BPromise=require('bluebird');var rs=require(_0x7c29('0x3'));var fs=require('fs');var Redis=require(_0x7c29('0x4'));var db=require(_0x7c29('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7c29('0x6'))(_0x7c29('0x7'));var config=require(_0x7c29('0x8'));var jayson=require(_0x7c29('0x9'));var client=jayson[_0x7c29('0xa')][_0x7c29('0xb')]({'port':0x232a});config[_0x7c29('0xc')]=_[_0x7c29('0xd')](config[_0x7c29('0xc')],{'host':_0x7c29('0xe'),'port':0x18eb});var socket=require(_0x7c29('0xf'))(new Redis(config['redis']));require(_0x7c29('0x10'))['register'](socket);function respondWithRpcPromise(_0x3cc106,_0x5bec23,_0x2e70c5){return new BPromise(function(_0x4b762d,_0x465ac4){return client[_0x7c29('0x11')](_0x3cc106,_0x2e70c5)[_0x7c29('0x12')](function(_0x2cb797){logger[_0x7c29('0x13')]('ChatInteraction,\x20%s,\x20%s',_0x5bec23,_0x7c29('0x14'));logger[_0x7c29('0x15')](_0x7c29('0x16'),_0x5bec23,_0x7c29('0x14'),JSON[_0x7c29('0x17')](_0x2cb797));if(_0x2cb797['error']){if(_0x2cb797[_0x7c29('0x18')]['code']===0x1f4){logger[_0x7c29('0x18')](_0x7c29('0x19'),_0x5bec23,_0x2cb797['error'][_0x7c29('0x1a')]);return _0x465ac4(_0x2cb797[_0x7c29('0x18')][_0x7c29('0x1a')]);}logger[_0x7c29('0x18')]('ChatInteraction,\x20%s,\x20%s',_0x5bec23,_0x2cb797[_0x7c29('0x18')][_0x7c29('0x1a')]);return _0x4b762d(_0x2cb797[_0x7c29('0x18')]['message']);}else{logger['info'](_0x7c29('0x19'),_0x5bec23,_0x7c29('0x14'));_0x4b762d(_0x2cb797[_0x7c29('0x1b')][_0x7c29('0x1a')]);}})[_0x7c29('0x1c')](function(_0x42f673){logger['error'](_0x7c29('0x19'),_0x5bec23,_0x42f673);_0x465ac4(_0x42f673);});});}exports[_0x7c29('0x1d')]=function(_0x458285){var _0x22063f=this;return new Promise(function(_0x3b8d63,_0x1315a5){return db[_0x7c29('0x1e')][_0x7c29('0x1f')](_0x458285[_0x7c29('0x20')],{'raw':_0x458285[_0x7c29('0x21')]?_0x458285[_0x7c29('0x21')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x458285['options']?_0x458285['options']['where']||null:null,'attributes':_0x458285[_0x7c29('0x21')]?_0x458285[_0x7c29('0x21')][_0x7c29('0x22')]||null:null,'limit':_0x458285[_0x7c29('0x21')]?_0x458285['options'][_0x7c29('0x23')]||null:null})[_0x7c29('0x12')](function(_0x15bfcd){logger[_0x7c29('0x13')](_0x7c29('0x1d'),_0x458285);logger[_0x7c29('0x15')]('UpdateChatInteraction',_0x458285,JSON[_0x7c29('0x17')](_0x15bfcd));_0x3b8d63(_0x15bfcd);})[_0x7c29('0x1c')](function(_0x3fb9ff){logger[_0x7c29('0x18')](_0x7c29('0x1d'),_0x3fb9ff['message'],_0x458285);_0x1315a5(_0x22063f[_0x7c29('0x18')](0x1f4,_0x3fb9ff[_0x7c29('0x1a')]));});});};exports[_0x7c29('0x24')]=function(_0x26bd47){return new Promise(function(_0x588c05,_0x36febf){return db[_0x7c29('0x1e')][_0x7c29('0x25')]({'where':_0x26bd47[_0x7c29('0x21')]?_0x26bd47[_0x7c29('0x21')][_0x7c29('0x26')]||null:null})[_0x7c29('0x12')](function(_0x269693){if(_0x269693){return _0x269693[_0x7c29('0x27')](_0x26bd47['body'][_0x7c29('0x28')],_[_0x7c29('0x29')](_0x26bd47['body'],[_0x7c29('0x28'),'id'])||{});}})[_0x7c29('0x2a')](function(_0x38f1ad){logger[_0x7c29('0x13')](_0x7c29('0x2b'),_0x26bd47);logger['debug'](_0x7c29('0x2b'),_0x26bd47,JSON[_0x7c29('0x17')](_0x38f1ad));_0x588c05(_0x38f1ad);})['catch'](function(_0x276966){logger[_0x7c29('0x18')]('AddTags',_0x276966['message'],_0x26bd47);_0x36febf(_this[_0x7c29('0x18')](0x1f4,_0x276966[_0x7c29('0x1a')]));});});};
\ No newline at end of file
index d386541..3a5ee5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cda=['remove','emit','removeListener','length','chatInteraction:','./chatInteraction.events','save'];(function(_0x4ad6e4,_0x103161){var _0x11e62a=function(_0x10dc1e){while(--_0x10dc1e){_0x4ad6e4['push'](_0x4ad6e4['shift']());}};_0x11e62a(++_0x103161);}(_0x1cda,0x91));var _0xa1cd=function(_0x10cc03,_0x17c4ce){_0x10cc03=_0x10cc03-0x0;var _0x33c91c=_0x1cda[_0x10cc03];return _0x33c91c;};'use strict';var ChatInteractionEvents=require(_0xa1cd('0x0'));var events=[_0xa1cd('0x1'),_0xa1cd('0x2'),'update'];function createListener(_0x2d946c,_0x18f6ba){return function(_0x55fbf5){_0x18f6ba[_0xa1cd('0x3')](_0x2d946c,_0x55fbf5);};}function removeListener(_0x51ed92,_0x378df5){return function(){ChatInteractionEvents[_0xa1cd('0x4')](_0x51ed92,_0x378df5);};}exports['register']=function(_0x5b9df2){for(var _0x25d831=0x0,_0x1e31c0=events[_0xa1cd('0x5')];_0x25d831<_0x1e31c0;_0x25d831++){var _0x270ce6=events[_0x25d831];var _0xcb93bd=createListener(_0xa1cd('0x6')+_0x270ce6,_0x5b9df2);ChatInteractionEvents['on'](_0x270ce6,_0xcb93bd);}};
\ No newline at end of file
+var _0x05dc=['chatInteraction:','save','emit','removeListener','register'];(function(_0x5e0e4c,_0x152934){var _0x45a3a1=function(_0x2bf758){while(--_0x2bf758){_0x5e0e4c['push'](_0x5e0e4c['shift']());}};_0x45a3a1(++_0x152934);}(_0x05dc,0x178));var _0xc05d=function(_0x4d0d85,_0x3250d3){_0x4d0d85=_0x4d0d85-0x0;var _0x290a74=_0x05dc[_0x4d0d85];return _0x290a74;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=[_0xc05d('0x0'),'remove','update'];function createListener(_0x3f0b59,_0x359721){return function(_0x12ea45){_0x359721[_0xc05d('0x1')](_0x3f0b59,_0x12ea45);};}function removeListener(_0x3fe971,_0x323210){return function(){ChatInteractionEvents[_0xc05d('0x2')](_0x3fe971,_0x323210);};}exports[_0xc05d('0x3')]=function(_0x3b89b7){for(var _0x463847=0x0,_0x72ab8e=events['length'];_0x463847<_0x72ab8e;_0x463847++){var _0x42c263=events[_0x463847];var _0x69e493=createListener(_0xc05d('0x4')+_0x42c263,_0x3b89b7);ChatInteractionEvents['on'](_0x42c263,_0x69e493);}};
\ No newline at end of file
index 305d97b..887a548 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66aa=['/:id/tags','tracked','chatinteraction:addtags','addTags','put','chat','chatinteraction:update','/:id/custom_update','customUpdate','abandon','/:id/close','delete','chatinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','/:id/messages','getMessages','getMyMessages','/:id/download','download','post','create','/:id/vidaoo','createVidaooSession','diskStorage','join','server/files/attachments/','format','%s-%s','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','addMessage'];(function(_0x10a5c6,_0x2c4e02){var _0x105aa2=function(_0x2ef7e2){while(--_0x2ef7e2){_0x10a5c6['push'](_0x10a5c6['shift']());}};_0x105aa2(++_0x2c4e02);}(_0x66aa,0x11e));var _0xa66a=function(_0x47a204,_0x24b906){_0x47a204=_0x47a204-0x0;var _0x5623fc=_0x66aa[_0x47a204];return _0x5623fc;};'use strict';var multer=require(_0xa66a('0x0'));var util=require(_0xa66a('0x1'));var path=require(_0xa66a('0x2'));var timeout=require(_0xa66a('0x3'));var express=require(_0xa66a('0x4'));var router=express[_0xa66a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa66a('0x6'));var config=require(_0xa66a('0x7'));var controller=require(_0xa66a('0x8'));router[_0xa66a('0x9')]('/',auth[_0xa66a('0xa')](),controller[_0xa66a('0xb')]);router[_0xa66a('0x9')](_0xa66a('0xc'),auth[_0xa66a('0xa')](),controller['describe']);router[_0xa66a('0x9')](_0xa66a('0xd'),auth[_0xa66a('0xe')](),controller[_0xa66a('0xf')]);router[_0xa66a('0x9')](_0xa66a('0x10'),auth[_0xa66a('0xe')](),controller['attachmentDownload']);router[_0xa66a('0x9')](_0xa66a('0x11'),auth['isAuthenticated'](),controller[_0xa66a('0x12')]);router[_0xa66a('0x9')]('/:id/my_messages',auth[_0xa66a('0xe')](),controller[_0xa66a('0x13')]);router[_0xa66a('0x9')](_0xa66a('0x14'),auth[_0xa66a('0xa')](),controller[_0xa66a('0x15')]);router[_0xa66a('0x16')]('/',auth[_0xa66a('0xa')](),controller[_0xa66a('0x17')]);router[_0xa66a('0x16')](_0xa66a('0x18'),auth[_0xa66a('0xa')](),controller[_0xa66a('0x19')]);var upload=multer({'storage':multer[_0xa66a('0x1a')]({'destination':function(_0x54924f,_0x4bd5fb,_0x1bd5ed){_0x1bd5ed(null,path[_0xa66a('0x1b')](config['root'],_0xa66a('0x1c')));},'filename':function(_0x4776d5,_0x4d6c8d,_0x5232c7){_0x5232c7(null,util[_0xa66a('0x1d')](_0xa66a('0x1e'),Date['now'](),_0x4d6c8d[_0xa66a('0x1f')][_0xa66a('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0xa66a('0x21'),upload[_0xa66a('0x22')](_0xa66a('0x23')),controller[_0xa66a('0x24')]);router[_0xa66a('0x16')](_0xa66a('0x11'),auth[_0xa66a('0xe')](),controller[_0xa66a('0x25')]);router['post'](_0xa66a('0x26'),auth[_0xa66a('0xa')](),interaction[_0xa66a('0x27')]('chat',_0xa66a('0x28')),controller[_0xa66a('0x29')]);router[_0xa66a('0x2a')](_0xa66a('0xd'),auth[_0xa66a('0xa')](),interaction['tracked'](_0xa66a('0x2b'),_0xa66a('0x2c')),controller['update']);router[_0xa66a('0x2a')](_0xa66a('0x2d'),controller[_0xa66a('0x2e')]);router[_0xa66a('0x2a')]('/:id/abandon',auth[_0xa66a('0xe')](),controller[_0xa66a('0x2f')]);router[_0xa66a('0x2a')](_0xa66a('0x30'),controller['close']);router[_0xa66a('0x31')](_0xa66a('0xd'),auth[_0xa66a('0xa')](),interaction['tracked'](_0xa66a('0x2b'),_0xa66a('0x32')),controller[_0xa66a('0x33')]);router['delete']('/:id/tags',auth['isAuthenticated'](),controller[_0xa66a('0x34')]);module[_0xa66a('0x35')]=router;
\ No newline at end of file
+var _0x9e68=['%s-%s','originalname','replace','single','attachmentUpload','addMessage','tracked','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','update','/:id/custom_update','customUpdate','/:id/abandon','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','./chatInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','/:id/messages','getMessages','getMyMessages','/:id/download','download','create','post','/:id/vidaoo','createVidaooSession','diskStorage','root','server/files/attachments/','format'];(function(_0x6bda65,_0x17dad1){var _0x45f580=function(_0x50c190){while(--_0x50c190){_0x6bda65['push'](_0x6bda65['shift']());}};_0x45f580(++_0x17dad1);}(_0x9e68,0x1f4));var _0x89e6=function(_0x4798da,_0x1151af){_0x4798da=_0x4798da-0x0;var _0x4a94c1=_0x9e68[_0x4798da];return _0x4a94c1;};'use strict';var multer=require(_0x89e6('0x0'));var util=require(_0x89e6('0x1'));var path=require(_0x89e6('0x2'));var timeout=require(_0x89e6('0x3'));var express=require(_0x89e6('0x4'));var router=express['Router']();var fs_extra=require(_0x89e6('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x89e6('0x6'));var controller=require(_0x89e6('0x7'));router[_0x89e6('0x8')]('/',auth['isAuthenticated'](),controller[_0x89e6('0x9')]);router[_0x89e6('0x8')](_0x89e6('0xa'),auth[_0x89e6('0xb')](),controller[_0x89e6('0xc')]);router[_0x89e6('0x8')](_0x89e6('0xd'),auth[_0x89e6('0xe')](),controller[_0x89e6('0xf')]);router[_0x89e6('0x8')](_0x89e6('0x10'),auth['isChatInteractionAuthorized'](),controller['attachmentDownload']);router[_0x89e6('0x8')](_0x89e6('0x11'),auth[_0x89e6('0xb')](),controller[_0x89e6('0x12')]);router[_0x89e6('0x8')]('/:id/my_messages',auth[_0x89e6('0xe')](),controller[_0x89e6('0x13')]);router[_0x89e6('0x8')](_0x89e6('0x14'),auth[_0x89e6('0xb')](),controller[_0x89e6('0x15')]);router['post']('/',auth[_0x89e6('0xb')](),controller[_0x89e6('0x16')]);router[_0x89e6('0x17')](_0x89e6('0x18'),auth[_0x89e6('0xb')](),controller[_0x89e6('0x19')]);var upload=multer({'storage':multer[_0x89e6('0x1a')]({'destination':function(_0x4dd2ff,_0x261fc3,_0x3ca773){_0x3ca773(null,path['join'](config[_0x89e6('0x1b')],_0x89e6('0x1c')));},'filename':function(_0x3b04e3,_0x2ed939,_0x53b9dd){_0x53b9dd(null,util[_0x89e6('0x1d')](_0x89e6('0x1e'),Date['now'](),_0x2ed939[_0x89e6('0x1f')][_0x89e6('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post']('/:id/attachment_upload',upload[_0x89e6('0x21')]('file'),controller[_0x89e6('0x22')]);router[_0x89e6('0x17')](_0x89e6('0x11'),auth[_0x89e6('0xe')](),controller[_0x89e6('0x23')]);router[_0x89e6('0x17')]('/:id/tags',auth[_0x89e6('0xb')](),interaction[_0x89e6('0x24')](_0x89e6('0x25'),_0x89e6('0x26')),controller[_0x89e6('0x27')]);router[_0x89e6('0x28')](_0x89e6('0xd'),auth[_0x89e6('0xb')](),interaction[_0x89e6('0x24')](_0x89e6('0x25'),_0x89e6('0x29')),controller[_0x89e6('0x2a')]);router[_0x89e6('0x28')](_0x89e6('0x2b'),controller[_0x89e6('0x2c')]);router['put'](_0x89e6('0x2d'),auth[_0x89e6('0xe')](),controller[_0x89e6('0x2e')]);router['put'](_0x89e6('0x2f'),controller[_0x89e6('0x30')]);router[_0x89e6('0x31')](_0x89e6('0xd'),auth[_0x89e6('0xb')](),interaction[_0x89e6('0x24')](_0x89e6('0x25'),_0x89e6('0x32')),controller[_0x89e6('0x33')]);router[_0x89e6('0x31')]('/:id/tags',auth[_0x89e6('0xb')](),controller['removeTags']);module[_0x89e6('0x34')]=router;
\ No newline at end of file
index 19e572a..51b41af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4782=['medium','BOOLEAN','INTEGER','exports'];(function(_0x5a37ba,_0xda7624){var _0x3cc9f3=function(_0x2cf579){while(--_0x2cf579){_0x5a37ba['push'](_0x5a37ba['shift']());}};_0x3cc9f3(++_0xda7624);}(_0x4782,0xbb));var _0x2478=function(_0x1cc1fd,_0x33f9f1){_0x1cc1fd=_0x1cc1fd-0x0;var _0x5e3d41=_0x4782[_0x1cc1fd];return _0x5e3d41;};'use strict';var Sequelize=require('sequelize');module[_0x2478('0x0')]={'body':{'type':Sequelize['TEXT'](_0x2478('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x2478('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x2478('0x3')]}};
\ No newline at end of file
+var _0x8863=['sequelize','exports','BOOLEAN'];(function(_0x55846b,_0x1cb6ba){var _0x32e73f=function(_0x5c488f){while(--_0x5c488f){_0x55846b['push'](_0x55846b['shift']());}};_0x32e73f(++_0x1cb6ba);}(_0x8863,0x1da));var _0x3886=function(_0x1b8300,_0x472f39){_0x1b8300=_0x1b8300-0x0;var _0x49deb2=_0x8863[_0x1b8300];return _0x49deb2;};'use strict';var Sequelize=require(_0x3886('0x0'));module[_0x3886('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x3886('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 8616ae3..b85609a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbf9=['stack','name','send','map','ChatInternalMessage','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','limit','order','sort','where','filter','VIRTUAL','merge','includeAll','rows','show','params','include','options','find','catch','create','body','describe','get','messages','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','agent','fullname','role','userpic','online','lastLoginAt','allowmessenger','showWebBar','VoiceQueue','VoiceQueues','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','autoAssociation','UserProfileResource','isEmpty','length','resourceId','push','FromId','ToId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error'];(function(_0x3dec6b,_0x4b511b){var _0x3cfa23=function(_0x4e53a6){while(--_0x4e53a6){_0x3dec6b['push'](_0x3dec6b['shift']());}};_0x3cfa23(++_0x4b511b);}(_0xfbf9,0xba));var _0x9fbf=function(_0x4247e5,_0x30b7bb){_0x4247e5=_0x4247e5-0x0;var _0x5ee3d5=_0xfbf9[_0x4247e5];return _0x5ee3d5;};'use strict';var emlformat=require(_0x9fbf('0x0'));var rimraf=require(_0x9fbf('0x1'));var zipdir=require(_0x9fbf('0x2'));var jsonpatch=require(_0x9fbf('0x3'));var rp=require(_0x9fbf('0x4'));var moment=require('moment');var BPromise=require(_0x9fbf('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9fbf('0x6'));var sox=require(_0x9fbf('0x7'));var csv=require(_0x9fbf('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9fbf('0x9'));var squel=require(_0x9fbf('0xa'));var crypto=require(_0x9fbf('0xb'));var jsforce=require(_0x9fbf('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9fbf('0xd'));var authService=require(_0x9fbf('0xe'));var qs=require(_0x9fbf('0xf'));var as=require(_0x9fbf('0x10'));var hardwareService=require(_0x9fbf('0x11'));var logger=require(_0x9fbf('0x12'))(_0x9fbf('0x13'));var utils=require(_0x9fbf('0x14'));var config=require(_0x9fbf('0x15'));var licenseUtil=require(_0x9fbf('0x16'));var db=require(_0x9fbf('0x17'))['db'];config[_0x9fbf('0x18')]=_[_0x9fbf('0x19')](config[_0x9fbf('0x18')],{'host':_0x9fbf('0x1a'),'port':0x18eb});var socket=require(_0x9fbf('0x1b'))(new Redis(config[_0x9fbf('0x18')]));require(_0x9fbf('0x1c'))[_0x9fbf('0x1d')](socket);function respondWithStatusCode(_0x1c3597,_0xe05d88){_0xe05d88=_0xe05d88||0xcc;return function(_0x191e62){if(_0x191e62){return _0x1c3597[_0x9fbf('0x1e')](_0xe05d88);}return _0x1c3597['status'](_0xe05d88)[_0x9fbf('0x1f')]();};}function respondWithResult(_0x1b4a9b,_0x4c020c){_0x4c020c=_0x4c020c||0xc8;return function(_0x4053ac){if(_0x4053ac){return _0x1b4a9b[_0x9fbf('0x20')](_0x4c020c)[_0x9fbf('0x21')](_0x4053ac);}};}function respondWithFilteredResult(_0x4ca216,_0x2917cd){return function(_0x103925){if(_0x103925){var _0x32fd9b=typeof _0x2917cd[_0x9fbf('0x22')]===_0x9fbf('0x23')&&typeof _0x2917cd['limit']===_0x9fbf('0x23');var _0x1c1ab8=_0x103925[_0x9fbf('0x24')];var _0x451306=_0x32fd9b?0x0:_0x2917cd['offset'];var _0x2121c1=_0x32fd9b?_0x103925[_0x9fbf('0x24')]:_0x2917cd[_0x9fbf('0x22')]+_0x2917cd['limit'];var _0x5c4457;if(_0x2121c1>=_0x1c1ab8){_0x2121c1=_0x1c1ab8;_0x5c4457=0xc8;}else{_0x5c4457=0xce;}_0x4ca216['status'](_0x5c4457);return _0x4ca216[_0x9fbf('0x25')](_0x9fbf('0x26'),_0x451306+'-'+_0x2121c1+'/'+_0x1c1ab8)[_0x9fbf('0x21')](_0x103925);}return null;};}function patchUpdates(_0x4af3e2){return function(_0x4ac3fa){try{jsonpatch[_0x9fbf('0x27')](_0x4ac3fa,_0x4af3e2,!![]);}catch(_0x1b87cf){return BPromise[_0x9fbf('0x28')](_0x1b87cf);}return _0x4ac3fa[_0x9fbf('0x29')]();};}function saveUpdates(_0xf8e4f,_0x686b7d){return function(_0x1c6442){if(_0x1c6442){return _0x1c6442[_0x9fbf('0x2a')](_0xf8e4f)[_0x9fbf('0x2b')](function(_0x56fa25){return _0x56fa25;});}return null;};}function removeEntity(_0x4beb37,_0x38d96d){return function(_0x271942){if(_0x271942){return _0x271942[_0x9fbf('0x2c')]()[_0x9fbf('0x2b')](function(){_0x4beb37[_0x9fbf('0x20')](0xcc)[_0x9fbf('0x1f')]();});}};}function handleEntityNotFound(_0x212f2a,_0x1d3e86){return function(_0x5e120b){if(!_0x5e120b){_0x212f2a[_0x9fbf('0x1e')](0x194);}return _0x5e120b;};}function handleError(_0x9de8c1,_0x15361a){_0x15361a=_0x15361a||0x1f4;return function(_0x59bfe7){logger[_0x9fbf('0x2d')](_0x59bfe7[_0x9fbf('0x2e')]);if(_0x59bfe7[_0x9fbf('0x2f')]){delete _0x59bfe7[_0x9fbf('0x2f')];}_0x9de8c1['status'](_0x15361a)[_0x9fbf('0x30')](_0x59bfe7);};}exports['index']=function(_0x539afa,_0x26f8f1){var _0x117b07={},_0x23e732={},_0x5db8d5={'count':0x0,'rows':[]};var _0x9398f6=_[_0x9fbf('0x31')](db[_0x9fbf('0x32')][_0x9fbf('0x33')],function(_0x132e39){return{'name':_0x132e39['fieldName'],'type':_0x132e39[_0x9fbf('0x34')][_0x9fbf('0x35')]};});_0x23e732[_0x9fbf('0x36')]=_['map'](_0x9398f6,'name');_0x23e732[_0x9fbf('0x37')]=_[_0x9fbf('0x38')](_0x539afa[_0x9fbf('0x37')]);_0x23e732[_0x9fbf('0x39')]=_['intersection'](_0x23e732['model'],_0x23e732['query']);_0x117b07[_0x9fbf('0x3a')]=_[_0x9fbf('0x3b')](_0x23e732[_0x9fbf('0x36')],qs['fields'](_0x539afa['query'][_0x9fbf('0x3c')]));_0x117b07[_0x9fbf('0x3a')]=_0x117b07[_0x9fbf('0x3a')]['length']?_0x117b07['attributes']:_0x23e732[_0x9fbf('0x36')];if(!_0x539afa[_0x9fbf('0x37')][_0x9fbf('0x3d')](_0x9fbf('0x3e'))){_0x117b07['limit']=qs['limit'](_0x539afa['query'][_0x9fbf('0x3f')]);_0x117b07[_0x9fbf('0x22')]=qs[_0x9fbf('0x22')](_0x539afa[_0x9fbf('0x37')][_0x9fbf('0x22')]);}_0x117b07[_0x9fbf('0x40')]=qs['sort'](_0x539afa[_0x9fbf('0x37')][_0x9fbf('0x41')]);_0x117b07[_0x9fbf('0x42')]=qs['filters'](_['pick'](_0x539afa['query'],_0x23e732[_0x9fbf('0x39')]),_0x9398f6);if(_0x539afa[_0x9fbf('0x37')][_0x9fbf('0x43')]){_0x117b07[_0x9fbf('0x42')]=_['merge'](_0x117b07[_0x9fbf('0x42')],{'$or':_[_0x9fbf('0x31')](_0x9398f6,function(_0x4faa9f){if(_0x4faa9f[_0x9fbf('0x34')]!==_0x9fbf('0x44')){var _0x3dd052={};_0x3dd052[_0x4faa9f['name']]={'$like':'%'+_0x539afa[_0x9fbf('0x37')][_0x9fbf('0x43')]+'%'};return _0x3dd052;}})});}_0x117b07=_[_0x9fbf('0x45')]({},_0x117b07,_0x539afa['options']);var _0x17395a={'where':_0x117b07['where']};return db['ChatInternalMessage'][_0x9fbf('0x24')](_0x17395a)[_0x9fbf('0x2b')](function(_0x55ff59){_0x5db8d5[_0x9fbf('0x24')]=_0x55ff59;if(_0x539afa[_0x9fbf('0x37')][_0x9fbf('0x46')]){_0x117b07['include']=[{'all':!![]}];}return db['ChatInternalMessage']['findAll'](_0x117b07);})[_0x9fbf('0x2b')](function(_0x322dc1){_0x5db8d5[_0x9fbf('0x47')]=_0x322dc1;return _0x5db8d5;})[_0x9fbf('0x2b')](respondWithFilteredResult(_0x26f8f1,_0x117b07))['catch'](handleError(_0x26f8f1,null));};exports[_0x9fbf('0x48')]=function(_0x538c76,_0x493d12){var _0x93a4c8={'raw':!![],'where':{'id':_0x538c76[_0x9fbf('0x49')]['id']}},_0x18dc01={};_0x18dc01[_0x9fbf('0x36')]=_[_0x9fbf('0x38')](db[_0x9fbf('0x32')][_0x9fbf('0x33')]);_0x18dc01[_0x9fbf('0x37')]=_[_0x9fbf('0x38')](_0x538c76[_0x9fbf('0x37')]);_0x18dc01[_0x9fbf('0x39')]=_[_0x9fbf('0x3b')](_0x18dc01[_0x9fbf('0x36')],_0x18dc01['query']);_0x93a4c8[_0x9fbf('0x3a')]=_[_0x9fbf('0x3b')](_0x18dc01['model'],qs[_0x9fbf('0x3c')](_0x538c76[_0x9fbf('0x37')][_0x9fbf('0x3c')]));_0x93a4c8[_0x9fbf('0x3a')]=_0x93a4c8[_0x9fbf('0x3a')]['length']?_0x93a4c8[_0x9fbf('0x3a')]:_0x18dc01['model'];if(_0x538c76[_0x9fbf('0x37')][_0x9fbf('0x46')]){_0x93a4c8[_0x9fbf('0x4a')]=[{'all':!![]}];}_0x93a4c8=_['merge']({},_0x93a4c8,_0x538c76[_0x9fbf('0x4b')]);return db[_0x9fbf('0x32')][_0x9fbf('0x4c')](_0x93a4c8)[_0x9fbf('0x2b')](handleEntityNotFound(_0x493d12,null))['then'](respondWithResult(_0x493d12,null))[_0x9fbf('0x4d')](handleError(_0x493d12,null));};exports[_0x9fbf('0x4e')]=function(_0x102989,_0x1a0ec0){return db[_0x9fbf('0x32')][_0x9fbf('0x4e')](_0x102989[_0x9fbf('0x4f')],{})['then'](respondWithResult(_0x1a0ec0,0xc9))[_0x9fbf('0x4d')](handleError(_0x1a0ec0,null));};exports['update']=function(_0xdd9142,_0x8e623f){if(_0xdd9142[_0x9fbf('0x4f')]['id']){delete _0xdd9142[_0x9fbf('0x4f')]['id'];}return db[_0x9fbf('0x32')][_0x9fbf('0x4c')]({'where':{'id':_0xdd9142[_0x9fbf('0x49')]['id']}})[_0x9fbf('0x2b')](handleEntityNotFound(_0x8e623f,null))[_0x9fbf('0x2b')](saveUpdates(_0xdd9142[_0x9fbf('0x4f')],null))[_0x9fbf('0x2b')](respondWithResult(_0x8e623f,null))[_0x9fbf('0x4d')](handleError(_0x8e623f,null));};exports['destroy']=function(_0x43b980,_0x5a1d04){return db[_0x9fbf('0x32')][_0x9fbf('0x4c')]({'where':{'id':_0x43b980[_0x9fbf('0x49')]['id']}})[_0x9fbf('0x2b')](handleEntityNotFound(_0x5a1d04,null))[_0x9fbf('0x2b')](removeEntity(_0x5a1d04,null))[_0x9fbf('0x4d')](handleError(_0x5a1d04,null));};exports[_0x9fbf('0x50')]=function(_0x5743dc,_0xab2716){return db['ChatInternalMessage'][_0x9fbf('0x50')]()[_0x9fbf('0x2b')](respondWithResult(_0xab2716,null))[_0x9fbf('0x4d')](handleError(_0xab2716,null));};function wrapUser(_0x409319){return function(_0x17d752){var _0x20df8b=_0x409319[_0x9fbf('0x51')]({'plain':!![]});_0x20df8b[_0x9fbf('0x52')]=[];if(_0x17d752){_0x20df8b[_0x9fbf('0x53')]=_0x17d752[_0x9fbf('0x54')];_0x20df8b[_0x9fbf('0x55')]=_0x17d752;}else{_0x20df8b[_0x9fbf('0x53')]=moment(0x0)[_0x9fbf('0x56')](_0x9fbf('0x57'));_0x20df8b[_0x9fbf('0x55')]={};}return _0x20df8b;};}exports[_0x9fbf('0x58')]=function(_0x185d7e,_0x34ce5d,_0x7fae86){var _0x32d885=[];return db[_0x9fbf('0x59')][_0x9fbf('0x5a')]({'where':{'role':[_0x9fbf('0x5b'),'admin','user']},'attributes':['id',_0x9fbf('0x5c'),'name',_0x9fbf('0x5d'),_0x9fbf('0x5e'),'internal',_0x9fbf('0x5f'),_0x9fbf('0x60'),_0x9fbf('0x61'),_0x9fbf('0x62')],'order':qs[_0x9fbf('0x41')]('-online'),'include':[{'model':db[_0x9fbf('0x63')],'as':_0x9fbf('0x64'),'attributes':['id',_0x9fbf('0x2f'),_0x9fbf('0x34')],'through':{'attributes':[]}}]})['then'](function(_0x4bb74a){if(_0x4bb74a){var _0x264b3b=_0x185d7e[_0x9fbf('0x65')][_0x9fbf('0x51')]({'plain':!![]});if(!_0x264b3b)throw new Error(_0x9fbf('0x66'));if(_0x264b3b[_0x9fbf('0x5d')]==='user'){return db[_0x9fbf('0x67')][_0x9fbf('0x4c')]({'where':{'name':_0x9fbf('0x68'),'userProfileId':_0x264b3b['userProfileId']},'raw':!![]})[_0x9fbf('0x2b')](function(_0x51e0a9){if(_0x51e0a9){if(_0x51e0a9[_0x9fbf('0x69')]===0x0){return db[_0x9fbf('0x6a')][_0x9fbf('0x5a')]({'where':{'sectionId':_0x51e0a9['id']},'raw':!![]})[_0x9fbf('0x2b')](function(_0x5a1127){var _0x275a8d=[];if(_[_0x9fbf('0x6b')](_0x5a1127)){_0x275a8d=_['filter'](_0x4bb74a,function(_0x1aeb5f){if(_0x1aeb5f[_0x9fbf('0x5d')]!==_0x9fbf('0x5b')){return _0x1aeb5f;}});return _0x275a8d;}else{for(var _0x177e57=0x0;_0x177e57<_0x4bb74a[_0x9fbf('0x6c')];_0x177e57++){var _0x5ed403=_0x4bb74a[_0x177e57];if(_0x5ed403[_0x9fbf('0x5d')]==='agent'){var _0x13c4a=_['find'](_0x5a1127,function(_0xafd10){return _0xafd10[_0x9fbf('0x6d')]===_0x5ed403['id'];});if(_0x13c4a)_0x275a8d['push'](_0x5ed403);}else{_0x275a8d[_0x9fbf('0x6e')](_0x5ed403);}}return _0x275a8d;}});}else{return _0x4bb74a;}}else{var _0x5ed839=_['filter'](_0x4bb74a,function(_0x550f66){if(_0x550f66['role']!=='agent'){return _0x550f66;}});return _0x5ed839;}});}else{return _0x4bb74a;}}})['then'](function(_0x1e5f1d){var _0x3ad8ba=[];if(_0x1e5f1d){_0x32d885=_0x1e5f1d;for(var _0x79f65a=0x0;_0x79f65a<_0x1e5f1d[_0x9fbf('0x6c')];_0x79f65a+=0x1){_0x32d885[_0x79f65a]['messages']=[];_0x3ad8ba[_0x9fbf('0x6e')](db[_0x9fbf('0x32')][_0x9fbf('0x4c')]({'where':{'FromId':[_0x185d7e[_0x9fbf('0x65')]['id'],_0x1e5f1d[_0x79f65a]['id']],'ToId':[_0x185d7e[_0x9fbf('0x65')]['id'],_0x1e5f1d[_0x79f65a]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0x9fbf('0x6f'),_0x9fbf('0x70'),_0x9fbf('0x71'),_0x9fbf('0x4f')],'order':qs[_0x9fbf('0x41')](_0x9fbf('0x72')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x9fbf('0x2b')](wrapUser(_0x1e5f1d[_0x79f65a])));}return BPromise[_0x9fbf('0x73')](_0x3ad8ba);}return[];})[_0x9fbf('0x2b')](function(_0x515fc5){return{'rows':_0x515fc5,'count':_0x515fc5[_0x9fbf('0x6c')]};})[_0x9fbf('0x2b')](respondWithResult(_0x34ce5d,null))[_0x9fbf('0x4d')](handleError(_0x34ce5d,null));};
\ No newline at end of file
+var _0x12a3=['agent','admin','fullname','role','userpic','internal','online','allowmessenger','showWebBar','-online','VoiceQueue','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Agents','userProfileId','UserProfileResource','isEmpty','resourceId','push','ToId','read','-createdAt','eml-format','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','sendStatus','status','end','undefined','count','offset','limit','set','json','apply','save','update','then','error','stack','send','index','map','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','ChatInternalMessage','rawAttributes','create','body','find','destroy','get','messages','lastMessageAt','createdAt','format','YYYY-MM-DD\x20HH:mm:ss','lastMessage','getUsers'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x12a3,0x84));var _0x312a=function(_0x22d193,_0x571371){_0x22d193=_0x22d193-0x0;var _0x3bc5fb=_0x12a3[_0x22d193];return _0x3bc5fb;};'use strict';var emlformat=require(_0x312a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x312a('0x1'));var jsonpatch=require(_0x312a('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x312a('0x3'));var Mustache=require(_0x312a('0x4'));var util=require('util');var path=require(_0x312a('0x5'));var sox=require(_0x312a('0x6'));var csv=require(_0x312a('0x7'));var ejs=require(_0x312a('0x8'));var fs=require('fs');var fs_extra=require(_0x312a('0x9'));var _=require('lodash');var squel=require(_0x312a('0xa'));var crypto=require(_0x312a('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x312a('0xc'));var toCsv=require(_0x312a('0x7'));var querystring=require(_0x312a('0xd'));var Papa=require(_0x312a('0xe'));var Redis=require('ioredis');var authService=require(_0x312a('0xf'));var qs=require(_0x312a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x312a('0x11'));var logger=require(_0x312a('0x12'))(_0x312a('0x13'));var utils=require(_0x312a('0x14'));var config=require(_0x312a('0x15'));var licenseUtil=require(_0x312a('0x16'));var db=require('../../mysqldb')['db'];config[_0x312a('0x17')]=_[_0x312a('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x312a('0x19'))(new Redis(config[_0x312a('0x17')]));require(_0x312a('0x1a'))['register'](socket);function respondWithStatusCode(_0x12ee6b,_0x28d3a8){_0x28d3a8=_0x28d3a8||0xcc;return function(_0x55573d){if(_0x55573d){return _0x12ee6b[_0x312a('0x1b')](_0x28d3a8);}return _0x12ee6b[_0x312a('0x1c')](_0x28d3a8)[_0x312a('0x1d')]();};}function respondWithResult(_0x12a101,_0x46a197){_0x46a197=_0x46a197||0xc8;return function(_0x1d1b74){if(_0x1d1b74){return _0x12a101[_0x312a('0x1c')](_0x46a197)['json'](_0x1d1b74);}};}function respondWithFilteredResult(_0x5764ee,_0xdeadad){return function(_0x3a3f1f){if(_0x3a3f1f){var _0x58ae93=typeof _0xdeadad['offset']===_0x312a('0x1e')&&typeof _0xdeadad['limit']===_0x312a('0x1e');var _0x71b731=_0x3a3f1f[_0x312a('0x1f')];var _0x4f4ff3=_0x58ae93?0x0:_0xdeadad[_0x312a('0x20')];var _0x128070=_0x58ae93?_0x3a3f1f[_0x312a('0x1f')]:_0xdeadad[_0x312a('0x20')]+_0xdeadad[_0x312a('0x21')];var _0x2317ce;if(_0x128070>=_0x71b731){_0x128070=_0x71b731;_0x2317ce=0xc8;}else{_0x2317ce=0xce;}_0x5764ee[_0x312a('0x1c')](_0x2317ce);return _0x5764ee[_0x312a('0x22')]('Content-Range',_0x4f4ff3+'-'+_0x128070+'/'+_0x71b731)[_0x312a('0x23')](_0x3a3f1f);}return null;};}function patchUpdates(_0x2ba77f){return function(_0x1719d3){try{jsonpatch[_0x312a('0x24')](_0x1719d3,_0x2ba77f,!![]);}catch(_0x31cb6c){return BPromise['reject'](_0x31cb6c);}return _0x1719d3[_0x312a('0x25')]();};}function saveUpdates(_0x1a3ce3,_0x8b9529){return function(_0x5c76d3){if(_0x5c76d3){return _0x5c76d3[_0x312a('0x26')](_0x1a3ce3)[_0x312a('0x27')](function(_0x2e5283){return _0x2e5283;});}return null;};}function removeEntity(_0x457ecb,_0x5de23f){return function(_0x1ac120){if(_0x1ac120){return _0x1ac120['destroy']()[_0x312a('0x27')](function(){_0x457ecb[_0x312a('0x1c')](0xcc)[_0x312a('0x1d')]();});}};}function handleEntityNotFound(_0x448948,_0x2aec77){return function(_0xadd4fd){if(!_0xadd4fd){_0x448948[_0x312a('0x1b')](0x194);}return _0xadd4fd;};}function handleError(_0x345a20,_0x4b2ec6){_0x4b2ec6=_0x4b2ec6||0x1f4;return function(_0xe2d1df){logger[_0x312a('0x28')](_0xe2d1df[_0x312a('0x29')]);if(_0xe2d1df['name']){delete _0xe2d1df['name'];}_0x345a20[_0x312a('0x1c')](_0x4b2ec6)[_0x312a('0x2a')](_0xe2d1df);};}exports[_0x312a('0x2b')]=function(_0x202540,_0x1d5a23){var _0x3718be={},_0x294445={},_0x2665b9={'count':0x0,'rows':[]};var _0x4b2bee=_[_0x312a('0x2c')](db['ChatInternalMessage']['rawAttributes'],function(_0x40b961){return{'name':_0x40b961[_0x312a('0x2d')],'type':_0x40b961[_0x312a('0x2e')][_0x312a('0x2f')]};});_0x294445[_0x312a('0x30')]=_[_0x312a('0x2c')](_0x4b2bee,_0x312a('0x31'));_0x294445[_0x312a('0x32')]=_[_0x312a('0x33')](_0x202540['query']);_0x294445[_0x312a('0x34')]=_[_0x312a('0x35')](_0x294445[_0x312a('0x30')],_0x294445[_0x312a('0x32')]);_0x3718be[_0x312a('0x36')]=_['intersection'](_0x294445['model'],qs['fields'](_0x202540['query'][_0x312a('0x37')]));_0x3718be[_0x312a('0x36')]=_0x3718be[_0x312a('0x36')][_0x312a('0x38')]?_0x3718be['attributes']:_0x294445['model'];if(!_0x202540[_0x312a('0x32')][_0x312a('0x39')](_0x312a('0x3a'))){_0x3718be[_0x312a('0x21')]=qs[_0x312a('0x21')](_0x202540[_0x312a('0x32')][_0x312a('0x21')]);_0x3718be[_0x312a('0x20')]=qs[_0x312a('0x20')](_0x202540[_0x312a('0x32')][_0x312a('0x20')]);}_0x3718be[_0x312a('0x3b')]=qs[_0x312a('0x3c')](_0x202540[_0x312a('0x32')][_0x312a('0x3c')]);_0x3718be[_0x312a('0x3d')]=qs[_0x312a('0x34')](_[_0x312a('0x3e')](_0x202540[_0x312a('0x32')],_0x294445[_0x312a('0x34')]),_0x4b2bee);if(_0x202540[_0x312a('0x32')]['filter']){_0x3718be[_0x312a('0x3d')]=_[_0x312a('0x3f')](_0x3718be[_0x312a('0x3d')],{'$or':_[_0x312a('0x2c')](_0x4b2bee,function(_0x717ad5){if(_0x717ad5[_0x312a('0x2e')]!==_0x312a('0x40')){var _0x4a3abe={};_0x4a3abe[_0x717ad5[_0x312a('0x31')]]={'$like':'%'+_0x202540['query'][_0x312a('0x41')]+'%'};return _0x4a3abe;}})});}_0x3718be=_[_0x312a('0x3f')]({},_0x3718be,_0x202540[_0x312a('0x42')]);var _0x46766f={'where':_0x3718be[_0x312a('0x3d')]};return db['ChatInternalMessage'][_0x312a('0x1f')](_0x46766f)['then'](function(_0x2a163b){_0x2665b9['count']=_0x2a163b;if(_0x202540[_0x312a('0x32')][_0x312a('0x43')]){_0x3718be[_0x312a('0x44')]=[{'all':!![]}];}return db['ChatInternalMessage'][_0x312a('0x45')](_0x3718be);})[_0x312a('0x27')](function(_0x49ed0d){_0x2665b9[_0x312a('0x46')]=_0x49ed0d;return _0x2665b9;})[_0x312a('0x27')](respondWithFilteredResult(_0x1d5a23,_0x3718be))[_0x312a('0x47')](handleError(_0x1d5a23,null));};exports[_0x312a('0x48')]=function(_0x179374,_0x2ccc28){var _0x5df8a7={'raw':!![],'where':{'id':_0x179374[_0x312a('0x49')]['id']}},_0x10f9b4={};_0x10f9b4[_0x312a('0x30')]=_['keys'](db[_0x312a('0x4a')][_0x312a('0x4b')]);_0x10f9b4[_0x312a('0x32')]=_[_0x312a('0x33')](_0x179374['query']);_0x10f9b4[_0x312a('0x34')]=_[_0x312a('0x35')](_0x10f9b4[_0x312a('0x30')],_0x10f9b4[_0x312a('0x32')]);_0x5df8a7['attributes']=_[_0x312a('0x35')](_0x10f9b4[_0x312a('0x30')],qs[_0x312a('0x37')](_0x179374[_0x312a('0x32')][_0x312a('0x37')]));_0x5df8a7[_0x312a('0x36')]=_0x5df8a7[_0x312a('0x36')][_0x312a('0x38')]?_0x5df8a7[_0x312a('0x36')]:_0x10f9b4[_0x312a('0x30')];if(_0x179374[_0x312a('0x32')][_0x312a('0x43')]){_0x5df8a7[_0x312a('0x44')]=[{'all':!![]}];}_0x5df8a7=_[_0x312a('0x3f')]({},_0x5df8a7,_0x179374[_0x312a('0x42')]);return db[_0x312a('0x4a')]['find'](_0x5df8a7)[_0x312a('0x27')](handleEntityNotFound(_0x2ccc28,null))[_0x312a('0x27')](respondWithResult(_0x2ccc28,null))[_0x312a('0x47')](handleError(_0x2ccc28,null));};exports[_0x312a('0x4c')]=function(_0x444890,_0x339f39){return db['ChatInternalMessage'][_0x312a('0x4c')](_0x444890[_0x312a('0x4d')],{})[_0x312a('0x27')](respondWithResult(_0x339f39,0xc9))[_0x312a('0x47')](handleError(_0x339f39,null));};exports[_0x312a('0x26')]=function(_0x5019f7,_0x3df0d0){if(_0x5019f7[_0x312a('0x4d')]['id']){delete _0x5019f7[_0x312a('0x4d')]['id'];}return db[_0x312a('0x4a')][_0x312a('0x4e')]({'where':{'id':_0x5019f7['params']['id']}})[_0x312a('0x27')](handleEntityNotFound(_0x3df0d0,null))[_0x312a('0x27')](saveUpdates(_0x5019f7[_0x312a('0x4d')],null))[_0x312a('0x27')](respondWithResult(_0x3df0d0,null))[_0x312a('0x47')](handleError(_0x3df0d0,null));};exports[_0x312a('0x4f')]=function(_0xc56aa0,_0x440358){return db[_0x312a('0x4a')]['find']({'where':{'id':_0xc56aa0[_0x312a('0x49')]['id']}})[_0x312a('0x27')](handleEntityNotFound(_0x440358,null))[_0x312a('0x27')](removeEntity(_0x440358,null))[_0x312a('0x47')](handleError(_0x440358,null));};exports['describe']=function(_0x131942,_0xa2b49){return db[_0x312a('0x4a')]['describe']()[_0x312a('0x27')](respondWithResult(_0xa2b49,null))[_0x312a('0x47')](handleError(_0xa2b49,null));};function wrapUser(_0x42027d){return function(_0x264eb4){var _0xcf9aea=_0x42027d[_0x312a('0x50')]({'plain':!![]});_0xcf9aea[_0x312a('0x51')]=[];if(_0x264eb4){_0xcf9aea[_0x312a('0x52')]=_0x264eb4[_0x312a('0x53')];_0xcf9aea['lastMessage']=_0x264eb4;}else{_0xcf9aea['lastMessageAt']=moment(0x0)[_0x312a('0x54')](_0x312a('0x55'));_0xcf9aea[_0x312a('0x56')]={};}return _0xcf9aea;};}exports[_0x312a('0x57')]=function(_0x16568f,_0x48a115,_0x256c1e){var _0x4fa943=[];return db['User'][_0x312a('0x45')]({'where':{'role':[_0x312a('0x58'),_0x312a('0x59'),'user']},'attributes':['id',_0x312a('0x5a'),_0x312a('0x31'),_0x312a('0x5b'),_0x312a('0x5c'),_0x312a('0x5d'),_0x312a('0x5e'),'lastLoginAt',_0x312a('0x5f'),_0x312a('0x60')],'order':qs[_0x312a('0x3c')](_0x312a('0x61')),'include':[{'model':db[_0x312a('0x62')],'as':'VoiceQueues','attributes':['id','name',_0x312a('0x2e')],'through':{'attributes':[]}}]})['then'](function(_0x58cfda){if(_0x58cfda){var _0x2111bb=_0x16568f[_0x312a('0x63')][_0x312a('0x50')]({'plain':!![]});if(!_0x2111bb)throw new Error(_0x312a('0x64'));if(_0x2111bb[_0x312a('0x5b')]===_0x312a('0x63')){return db['UserProfileSection'][_0x312a('0x4e')]({'where':{'name':_0x312a('0x65'),'userProfileId':_0x2111bb[_0x312a('0x66')]},'raw':!![]})[_0x312a('0x27')](function(_0x8e599b){if(_0x8e599b){if(_0x8e599b['autoAssociation']===0x0){return db[_0x312a('0x67')][_0x312a('0x45')]({'where':{'sectionId':_0x8e599b['id']},'raw':!![]})['then'](function(_0x198bc9){var _0x3da2f6=[];if(_[_0x312a('0x68')](_0x198bc9)){_0x3da2f6=_[_0x312a('0x41')](_0x58cfda,function(_0x553db8){if(_0x553db8[_0x312a('0x5b')]!=='agent'){return _0x553db8;}});return _0x3da2f6;}else{for(var _0x58be7c=0x0;_0x58be7c<_0x58cfda[_0x312a('0x38')];_0x58be7c++){var _0x13fc4f=_0x58cfda[_0x58be7c];if(_0x13fc4f[_0x312a('0x5b')]===_0x312a('0x58')){var _0x3a8cb4=_['find'](_0x198bc9,function(_0x31b429){return _0x31b429[_0x312a('0x69')]===_0x13fc4f['id'];});if(_0x3a8cb4)_0x3da2f6[_0x312a('0x6a')](_0x13fc4f);}else{_0x3da2f6[_0x312a('0x6a')](_0x13fc4f);}}return _0x3da2f6;}});}else{return _0x58cfda;}}else{var _0x1a2f41=_[_0x312a('0x41')](_0x58cfda,function(_0x5d06a3){if(_0x5d06a3['role']!==_0x312a('0x58')){return _0x5d06a3;}});return _0x1a2f41;}});}else{return _0x58cfda;}}})[_0x312a('0x27')](function(_0x4fb6fa){var _0x191d17=[];if(_0x4fb6fa){_0x4fa943=_0x4fb6fa;for(var _0x11752f=0x0;_0x11752f<_0x4fb6fa['length'];_0x11752f+=0x1){_0x4fa943[_0x11752f][_0x312a('0x51')]=[];_0x191d17[_0x312a('0x6a')](db[_0x312a('0x4a')]['find']({'where':{'FromId':[_0x16568f['user']['id'],_0x4fb6fa[_0x11752f]['id']],'ToId':[_0x16568f[_0x312a('0x63')]['id'],_0x4fb6fa[_0x11752f]['id']],'ChatGroupId':null},'attributes':['id','createdAt','FromId',_0x312a('0x6b'),_0x312a('0x6c'),'body'],'order':qs[_0x312a('0x3c')](_0x312a('0x6d')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x312a('0x27')](wrapUser(_0x4fb6fa[_0x11752f])));}return BPromise['all'](_0x191d17);}return[];})[_0x312a('0x27')](function(_0x5f0a27){return{'rows':_0x5f0a27,'count':_0x5f0a27[_0x312a('0x38')]};})[_0x312a('0x27')](respondWithResult(_0x48a115,null))[_0x312a('0x47')](handleError(_0x48a115,null));};
\ No newline at end of file
index 603b321..fd64371 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaefd=['remove','emit','hook','exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners','save','update'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xaefd,0x1c6));var _0xdaef=function(_0x527379,_0x3ec58d){_0x527379=_0x527379-0x0;var _0x219af0=_0xaefd[_0x527379];return _0x219af0;};'use strict';var EventEmitter=require(_0xdaef('0x0'));var ChatInternalMessage=require(_0xdaef('0x1'))['db'][_0xdaef('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xdaef('0x3')](0x0);var events={'afterCreate':_0xdaef('0x4'),'afterUpdate':_0xdaef('0x5'),'afterDestroy':_0xdaef('0x6')};function emitEvent(_0x1cbcfe){return function(_0x4ffbbb,_0xbbb5ba,_0x34e5da){ChatInternalMessageEvents[_0xdaef('0x7')](_0x1cbcfe+':'+_0x4ffbbb['id'],_0x4ffbbb);ChatInternalMessageEvents[_0xdaef('0x7')](_0x1cbcfe,_0x4ffbbb);_0x34e5da(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0xdaef('0x8')](e,emitEvent(event));}}module[_0xdaef('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xe0f9=['exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x5c0f29,_0x11afd7){var _0x771caf=function(_0xa00034){while(--_0xa00034){_0x5c0f29['push'](_0x5c0f29['shift']());}};_0x771caf(++_0x11afd7);}(_0xe0f9,0x16c));var _0x9e0f=function(_0x53f5b9,_0x629d39){_0x53f5b9=_0x53f5b9-0x0;var _0x4d7efa=_0xe0f9[_0x53f5b9];return _0x4d7efa;};'use strict';var EventEmitter=require(_0x9e0f('0x0'));var ChatInternalMessage=require(_0x9e0f('0x1'))['db'][_0x9e0f('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x9e0f('0x3')](0x0);var events={'afterCreate':_0x9e0f('0x4'),'afterUpdate':_0x9e0f('0x5'),'afterDestroy':_0x9e0f('0x6')};function emitEvent(_0x47249a){return function(_0x4e795b,_0x53e5eb,_0x119881){ChatInternalMessageEvents['emit'](_0x47249a+':'+_0x4e795b['id'],_0x4e795b);ChatInternalMessageEvents[_0x9e0f('0x7')](_0x47249a,_0x4e795b);_0x119881(null);};}for(var e in events){if(events[_0x9e0f('0x8')](e)){var event=events[e];ChatInternalMessage[_0x9e0f('0x9')](e,emitEvent(event));}}module[_0x9e0f('0xa')]=ChatInternalMessageEvents;
\ No newline at end of file
index 4550669..ef4f82f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaf7=['bluebird','request-promise','path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','api'];(function(_0x3ecabb,_0x41fbd3){var _0x9c90f0=function(_0x1dfacf){while(--_0x1dfacf){_0x3ecabb['push'](_0x3ecabb['shift']());}};_0x9c90f0(++_0x41fbd3);}(_0xcaf7,0x75));var _0x7caf=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xcaf7[_0x29b609];return _0x54c952;};'use strict';var _=require(_0x7caf('0x0'));var util=require(_0x7caf('0x1'));var logger=require('../../config/logger')(_0x7caf('0x2'));var moment=require('moment');var BPromise=require(_0x7caf('0x3'));var rp=require(_0x7caf('0x4'));var fs=require('fs');var path=require(_0x7caf('0x5'));var rimraf=require(_0x7caf('0x6'));var config=require(_0x7caf('0x7'));var attributes=require(_0x7caf('0x8'));module[_0x7caf('0x9')]=function(_0x23d963,_0x2c2e6c){return _0x23d963[_0x7caf('0xa')](_0x7caf('0xb'),attributes,{'tableName':_0x7caf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7caf('0xd'),'collate':_0x7caf('0xe')});};
\ No newline at end of file
+var _0xbf23=['path','../../config/environment','./chatInternalMessage.attributes','exports','ChatInternalMessage','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x473d31,_0x55a150){var _0x19648c=function(_0x49b2d8){while(--_0x49b2d8){_0x473d31['push'](_0x473d31['shift']());}};_0x19648c(++_0x55a150);}(_0xbf23,0x1f4));var _0x3bf2=function(_0x39714b,_0x5e0b0e){_0x39714b=_0x39714b-0x0;var _0x45ed60=_0xbf23[_0x39714b];return _0x45ed60;};'use strict';var _=require(_0x3bf2('0x0'));var util=require(_0x3bf2('0x1'));var logger=require(_0x3bf2('0x2'))(_0x3bf2('0x3'));var moment=require(_0x3bf2('0x4'));var BPromise=require(_0x3bf2('0x5'));var rp=require(_0x3bf2('0x6'));var fs=require('fs');var path=require(_0x3bf2('0x7'));var rimraf=require('rimraf');var config=require(_0x3bf2('0x8'));var attributes=require(_0x3bf2('0x9'));module[_0x3bf2('0xa')]=function(_0x3ff6ce,_0x261da5){return _0x3ff6ce['define'](_0x3bf2('0xb'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x3bf2('0xc')});};
\ No newline at end of file
index c98e5cf..bd75abd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd60b=['util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xd60b,0x198));var _0xbd60=function(_0xc374fa,_0x66e3c0){_0xc374fa=_0xc374fa-0x0;var _0x58c413=_0xd60b[_0xc374fa];return _0x58c413;};'use strict';var _=require('lodash');var util=require(_0xbd60('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbd60('0x1'));var fs=require('fs');var Redis=require(_0xbd60('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xbd60('0x3'));var logger=require(_0xbd60('0x4'))(_0xbd60('0x5'));var config=require('../../config/environment');var jayson=require(_0xbd60('0x6'));var client=jayson[_0xbd60('0x7')]['http']({'port':0x232a});config[_0xbd60('0x8')]=_[_0xbd60('0x9')](config[_0xbd60('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xbd60('0xa'))(new Redis(config[_0xbd60('0x8')]));require(_0xbd60('0xb'))[_0xbd60('0xc')](socket);function respondWithRpcPromise(_0x82147f,_0x23c3c4,_0x1f2322){return new BPromise(function(_0x4f941e,_0x7d29e2){return client[_0xbd60('0xd')](_0x82147f,_0x1f2322)[_0xbd60('0xe')](function(_0x2abda0){logger[_0xbd60('0xf')](_0xbd60('0x10'),_0x23c3c4,_0xbd60('0x11'));logger[_0xbd60('0x12')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x23c3c4,_0xbd60('0x11'),JSON[_0xbd60('0x13')](_0x2abda0));if(_0x2abda0[_0xbd60('0x14')]){if(_0x2abda0['error'][_0xbd60('0x15')]===0x1f4){logger[_0xbd60('0x14')](_0xbd60('0x10'),_0x23c3c4,_0x2abda0[_0xbd60('0x14')][_0xbd60('0x16')]);return _0x7d29e2(_0x2abda0[_0xbd60('0x14')][_0xbd60('0x16')]);}logger[_0xbd60('0x14')](_0xbd60('0x10'),_0x23c3c4,_0x2abda0[_0xbd60('0x14')][_0xbd60('0x16')]);return _0x4f941e(_0x2abda0[_0xbd60('0x14')][_0xbd60('0x16')]);}else{logger[_0xbd60('0xf')](_0xbd60('0x10'),_0x23c3c4,_0xbd60('0x11'));_0x4f941e(_0x2abda0['result'][_0xbd60('0x16')]);}})[_0xbd60('0x17')](function(_0x5ac3da){logger[_0xbd60('0x14')](_0xbd60('0x10'),_0x23c3c4,_0x5ac3da);_0x7d29e2(_0x5ac3da);});});}
\ No newline at end of file
+var _0x3280=['redis','defaults','localhost','socket.io-emitter','register','request','info','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','ChatInternalMessage,\x20%s,\x20%s','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x186376,_0x5d988a){var _0x2dbdd9=function(_0x96908e){while(--_0x96908e){_0x186376['push'](_0x186376['shift']());}};_0x2dbdd9(++_0x5d988a);}(_0x3280,0x17a));var _0x0328=function(_0x1cb0cb,_0x228958){_0x1cb0cb=_0x1cb0cb-0x0;var _0x100da8=_0x3280[_0x1cb0cb];return _0x100da8;};'use strict';var _=require('lodash');var util=require(_0x0328('0x0'));var moment=require(_0x0328('0x1'));var BPromise=require(_0x0328('0x2'));var rs=require(_0x0328('0x3'));var fs=require('fs');var Redis=require(_0x0328('0x4'));var db=require(_0x0328('0x5'))['db'];var utils=require(_0x0328('0x6'));var logger=require(_0x0328('0x7'))('rpc');var config=require(_0x0328('0x8'));var jayson=require(_0x0328('0x9'));var client=jayson[_0x0328('0xa')][_0x0328('0xb')]({'port':0x232a});config[_0x0328('0xc')]=_[_0x0328('0xd')](config[_0x0328('0xc')],{'host':_0x0328('0xe'),'port':0x18eb});var socket=require(_0x0328('0xf'))(new Redis(config[_0x0328('0xc')]));require('./chatInternalMessage.socket')[_0x0328('0x10')](socket);function respondWithRpcPromise(_0x871c0,_0x4b0c53,_0x3ec825){return new BPromise(function(_0xc8bfd9,_0x5554ef){return client[_0x0328('0x11')](_0x871c0,_0x3ec825)['then'](function(_0x5cf996){logger[_0x0328('0x12')]('ChatInternalMessage,\x20%s,\x20%s',_0x4b0c53,_0x0328('0x13'));logger['debug'](_0x0328('0x14'),_0x4b0c53,_0x0328('0x13'),JSON[_0x0328('0x15')](_0x5cf996));if(_0x5cf996[_0x0328('0x16')]){if(_0x5cf996[_0x0328('0x16')]['code']===0x1f4){logger[_0x0328('0x16')](_0x0328('0x17'),_0x4b0c53,_0x5cf996[_0x0328('0x16')]['message']);return _0x5554ef(_0x5cf996[_0x0328('0x16')][_0x0328('0x18')]);}logger[_0x0328('0x16')](_0x0328('0x17'),_0x4b0c53,_0x5cf996[_0x0328('0x16')][_0x0328('0x18')]);return _0xc8bfd9(_0x5cf996[_0x0328('0x16')][_0x0328('0x18')]);}else{logger[_0x0328('0x12')](_0x0328('0x17'),_0x4b0c53,_0x0328('0x13'));_0xc8bfd9(_0x5cf996[_0x0328('0x19')][_0x0328('0x18')]);}})['catch'](function(_0x51c870){logger['error'](_0x0328('0x17'),_0x4b0c53,_0x51c870);_0x5554ef(_0x51c870);});});}
\ No newline at end of file
index 71a0860..540910b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e8f=['remove','update','removeListener','register','length','./chatInternalMessage.events','save'];(function(_0x556dfe,_0x514f8f){var _0xca6aae=function(_0x162a53){while(--_0x162a53){_0x556dfe['push'](_0x556dfe['shift']());}};_0xca6aae(++_0x514f8f);}(_0x2e8f,0xc2));var _0xf2e8=function(_0x264545,_0x214037){_0x264545=_0x264545-0x0;var _0x114d10=_0x2e8f[_0x264545];return _0x114d10;};'use strict';var ChatInternalMessageEvents=require(_0xf2e8('0x0'));var events=[_0xf2e8('0x1'),_0xf2e8('0x2'),_0xf2e8('0x3')];function createListener(_0x275e9f,_0x7becb4){return function(_0x1dce79){_0x7becb4['emit'](_0x275e9f,_0x1dce79);};}function removeListener(_0x275047,_0x3bdf10){return function(){ChatInternalMessageEvents[_0xf2e8('0x4')](_0x275047,_0x3bdf10);};}exports[_0xf2e8('0x5')]=function(_0xe71b56){for(var _0x455a56=0x0,_0x2568cb=events[_0xf2e8('0x6')];_0x455a56<_0x2568cb;_0x455a56++){var _0x553275=events[_0x455a56];var _0x2d26cf=createListener('chatInternalMessage:'+_0x553275,_0xe71b56);ChatInternalMessageEvents['on'](_0x553275,_0x2d26cf);}};
\ No newline at end of file
+var _0x6526=['register','length','chatInternalMessage:','remove','update','emit'];(function(_0x2999d7,_0x5b5760){var _0x124291=function(_0x30b27b){while(--_0x30b27b){_0x2999d7['push'](_0x2999d7['shift']());}};_0x124291(++_0x5b5760);}(_0x6526,0x87));var _0x6652=function(_0x3e2489,_0x41d9dd){_0x3e2489=_0x3e2489-0x0;var _0x2254ce=_0x6526[_0x3e2489];return _0x2254ce;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=['save',_0x6652('0x0'),_0x6652('0x1')];function createListener(_0x8f1ff9,_0x569c70){return function(_0x144d55){_0x569c70[_0x6652('0x2')](_0x8f1ff9,_0x144d55);};}function removeListener(_0x4f14c3,_0x259fbd){return function(){ChatInternalMessageEvents['removeListener'](_0x4f14c3,_0x259fbd);};}exports[_0x6652('0x3')]=function(_0x417dc6){for(var _0x25394e=0x0,_0x3764bb=events[_0x6652('0x4')];_0x25394e<_0x3764bb;_0x25394e++){var _0x1e522d=events[_0x25394e];var _0x48c30a=createListener(_0x6652('0x5')+_0x1e522d,_0x417dc6);ChatInternalMessageEvents['on'](_0x1e522d,_0x48c30a);}};
\ No newline at end of file
index 926b97f..7305907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03a7=['Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/users','getUsers','/:id','show','create','update','destroy','exports','multer','connect-timeout','express'];(function(_0x2aa868,_0x3f71aa){var _0x4b4fea=function(_0x587eda){while(--_0x587eda){_0x2aa868['push'](_0x2aa868['shift']());}};_0x4b4fea(++_0x3f71aa);}(_0x03a7,0x1d8));var _0x703a=function(_0x24e54b,_0x2ac7cd){_0x24e54b=_0x24e54b-0x0;var _0x3d220a=_0x03a7[_0x24e54b];return _0x3d220a;};'use strict';var multer=require(_0x703a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x703a('0x1'));var express=require(_0x703a('0x2'));var router=express[_0x703a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x703a('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x703a('0x5'));var controller=require('./chatInternalMessage.controller');router[_0x703a('0x6')]('/',auth[_0x703a('0x7')](),controller[_0x703a('0x8')]);router[_0x703a('0x6')](_0x703a('0x9'),auth[_0x703a('0x7')](),controller[_0x703a('0xa')]);router[_0x703a('0x6')](_0x703a('0xb'),auth[_0x703a('0x7')](),controller[_0x703a('0xc')]);router['get'](_0x703a('0xd'),auth[_0x703a('0x7')](),controller[_0x703a('0xe')]);router['post']('/',auth[_0x703a('0x7')](),controller[_0x703a('0xf')]);router['put'](_0x703a('0xd'),controller[_0x703a('0x10')]);router['delete'](_0x703a('0xd'),auth[_0x703a('0x7')](),controller[_0x703a('0x11')]);module[_0x703a('0x12')]=router;
\ No newline at end of file
+var _0x561a=['isAuthenticated','describe','/users','getUsers','/:id','show','create','put','delete','destroy','exports','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','index','/describe'];(function(_0x10502e,_0x56272f){var _0x4aa9bd=function(_0x3932ea){while(--_0x3932ea){_0x10502e['push'](_0x10502e['shift']());}};_0x4aa9bd(++_0x56272f);}(_0x561a,0x1c0));var _0xa561=function(_0x529a72,_0x3a841b){_0x529a72=_0x529a72-0x0;var _0x5f0d01=_0x561a[_0x529a72];return _0x5f0d01;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xa561('0x0'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xa561('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0xa561('0x2'));var config=require(_0xa561('0x3'));var controller=require(_0xa561('0x4'));router[_0xa561('0x5')]('/',auth['isAuthenticated'](),controller[_0xa561('0x6')]);router['get'](_0xa561('0x7'),auth[_0xa561('0x8')](),controller[_0xa561('0x9')]);router[_0xa561('0x5')](_0xa561('0xa'),auth[_0xa561('0x8')](),controller[_0xa561('0xb')]);router[_0xa561('0x5')](_0xa561('0xc'),auth[_0xa561('0x8')](),controller[_0xa561('0xd')]);router['post']('/',auth[_0xa561('0x8')](),controller[_0xa561('0xe')]);router[_0xa561('0xf')]('/:id',controller['update']);router[_0xa561('0x10')](_0xa561('0xc'),auth[_0xa561('0x8')](),controller[_0xa561('0x11')]);module[_0xa561('0x12')]=router;
\ No newline at end of file
index 925fa72..4e0a75e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23a3=['out','DATE','STRING','TEXT','medium','BOOLEAN','ENUM'];(function(_0x322886,_0x3e6486){var _0x18c67b=function(_0x5ed71b){while(--_0x5ed71b){_0x322886['push'](_0x322886['shift']());}};_0x18c67b(++_0x3e6486);}(_0x23a3,0x131));var _0x323a=function(_0x185860,_0x5b276e){_0x185860=_0x185860-0x0;var _0x15bf16=_0x23a3[_0x185860];return _0x15bf16;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT'](_0x323a('0x0')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x323a('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0x323a('0x2')]('in',_0x323a('0x3')),'defaultValue':_0x323a('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0x323a('0x4')]},'providerName':{'type':Sequelize[_0x323a('0x5')]},'providerResponse':{'type':Sequelize[_0x323a('0x6')]}};
\ No newline at end of file
+var _0xb01a=['out','DATE','STRING','sequelize','exports','TEXT','medium','BOOLEAN','ENUM'];(function(_0x186eee,_0x30a1f3){var _0x8c0782=function(_0x198a68){while(--_0x198a68){_0x186eee['push'](_0x186eee['shift']());}};_0x8c0782(++_0x30a1f3);}(_0xb01a,0x1a1));var _0xab01=function(_0xf9d8b6,_0xf2fbe8){_0xf9d8b6=_0xf9d8b6-0x0;var _0x16f3ac=_0xb01a[_0xf9d8b6];return _0x16f3ac;};'use strict';var Sequelize=require(_0xab01('0x0'));module[_0xab01('0x1')]={'body':{'type':Sequelize[_0xab01('0x2')](_0xab01('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xab01('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0xab01('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xab01('0x5')]('in',_0xab01('0x6')),'defaultValue':_0xab01('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0xab01('0x7')]},'providerName':{'type':Sequelize[_0xab01('0x8')]},'providerResponse':{'type':Sequelize[_0xab01('0x2')]}};
\ No newline at end of file
index e640bf4..66f28ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8285=['ChatMessage','rawAttributes','type','key','model','query','keys','filters','intersection','fields','length','attributes','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','include','find','create','body','describe','../../config/logger','chat-interactions','accept','chat','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','ChatInteraction','isNil','interaction','get','user','AcceptMessage','acceptMessage','ContactId','sequelize','SELECT','User','fullname','email','internal','manual','channel','motionChannel','EventManager','acceptmessage','formData','ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','contact','interface','SIP/%s','event','reject','rejectmessage','parse','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','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./chatMessage.socket','jayson/promise','http','client','request','info','ChatMessage,\x20%s,\x20%s','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','name','send','index','map'];(function(_0x4a53ec,_0x2ea416){var _0x4065b9=function(_0x4a892e){while(--_0x4a892e){_0x4a53ec['push'](_0x4a53ec['shift']());}};_0x4065b9(++_0x2ea416);}(_0x8285,0x158));var _0x5828=function(_0x1652c9,_0x4cb5f5){_0x1652c9=_0x1652c9-0x0;var _0x387cf7=_0x8285[_0x1652c9];return _0x387cf7;};'use strict';var emlformat=require(_0x5828('0x0'));var rimraf=require(_0x5828('0x1'));var zipdir=require(_0x5828('0x2'));var jsonpatch=require(_0x5828('0x3'));var rp=require(_0x5828('0x4'));var moment=require(_0x5828('0x5'));var BPromise=require(_0x5828('0x6'));var Mustache=require(_0x5828('0x7'));var util=require(_0x5828('0x8'));var path=require(_0x5828('0x9'));var sox=require(_0x5828('0xa'));var csv=require(_0x5828('0xb'));var ejs=require(_0x5828('0xc'));var fs=require('fs');var fs_extra=require(_0x5828('0xd'));var _=require(_0x5828('0xe'));var squel=require(_0x5828('0xf'));var crypto=require(_0x5828('0x10'));var jsforce=require(_0x5828('0x11'));var deskjs=require('desk.js');var toCsv=require(_0x5828('0xb'));var querystring=require(_0x5828('0x12'));var Papa=require(_0x5828('0x13'));var Redis=require('ioredis');var authService=require(_0x5828('0x14'));var qs=require(_0x5828('0x15'));var as=require(_0x5828('0x16'));var hardwareService=require(_0x5828('0x17'));var logger=require('../../config/logger')(_0x5828('0x18'));var utils=require(_0x5828('0x19'));var config=require(_0x5828('0x1a'));var licenseUtil=require(_0x5828('0x1b'));var db=require('../../mysqldb')['db'];config[_0x5828('0x1c')]=_[_0x5828('0x1d')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5828('0x1e'))(new Redis(config['redis']));require(_0x5828('0x1f'))['register'](socket);var jayson=require(_0x5828('0x20'));var client=jayson['client'][_0x5828('0x21')]({'port':0x232c});var client9002=jayson[_0x5828('0x22')][_0x5828('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x368006,_0x218d86,_0x574a11,_0xea130a){return new BPromise(function(_0x51f5ff,_0x1ffbbc){var _0x257c81=_0xea130a||client;return _0x257c81[_0x5828('0x23')](_0x368006,_0x574a11)['then'](function(_0xeaccec){logger[_0x5828('0x24')](_0x5828('0x25'),_0x218d86,'request\x20sent');logger['debug'](_0x5828('0x26'),_0x218d86,_0x5828('0x27'),JSON[_0x5828('0x28')](_0xeaccec));if(_0xeaccec['error']){if(_0xeaccec[_0x5828('0x29')]['code']===0x1f4){logger[_0x5828('0x29')]('ChatMessage,\x20%s,\x20%s',_0x218d86,_0xeaccec[_0x5828('0x29')][_0x5828('0x2a')]);return _0x1ffbbc(_0xeaccec['error'][_0x5828('0x2a')]);}logger[_0x5828('0x29')]('ChatMessage,\x20%s,\x20%s',_0x218d86,_0xeaccec[_0x5828('0x29')]['message']);return _0x51f5ff(_0xeaccec[_0x5828('0x29')][_0x5828('0x2a')]);}else{logger[_0x5828('0x24')](_0x5828('0x25'),_0x218d86,_0x5828('0x27'));_0x51f5ff(_0xeaccec[_0x5828('0x2b')][_0x5828('0x2a')]);}})[_0x5828('0x2c')](function(_0x20c34c){logger[_0x5828('0x29')](_0x5828('0x25'),_0x218d86,_0x20c34c);_0x1ffbbc(_0x20c34c);});});}function respondWithStatusCode(_0x3f4987,_0x57da1b){_0x57da1b=_0x57da1b||0xcc;return function(_0x509306){if(_0x509306){return _0x3f4987[_0x5828('0x2d')](_0x57da1b);}return _0x3f4987[_0x5828('0x2e')](_0x57da1b)[_0x5828('0x2f')]();};}function respondWithResult(_0x25718d,_0x1779e3){_0x1779e3=_0x1779e3||0xc8;return function(_0x471a46){if(_0x471a46){return _0x25718d['status'](_0x1779e3)[_0x5828('0x30')](_0x471a46);}};}function respondWithFilteredResult(_0x4fb3f9,_0x4e5f34){return function(_0x36af93){if(_0x36af93){var _0x18634f=typeof _0x4e5f34['offset']===_0x5828('0x31')&&typeof _0x4e5f34[_0x5828('0x32')]===_0x5828('0x31');var _0x17eece=_0x36af93[_0x5828('0x33')];var _0xeac967=_0x18634f?0x0:_0x4e5f34['offset'];var _0x36c711=_0x18634f?_0x36af93[_0x5828('0x33')]:_0x4e5f34[_0x5828('0x34')]+_0x4e5f34[_0x5828('0x32')];var _0x50f64d;if(_0x36c711>=_0x17eece){_0x36c711=_0x17eece;_0x50f64d=0xc8;}else{_0x50f64d=0xce;}_0x4fb3f9['status'](_0x50f64d);return _0x4fb3f9[_0x5828('0x35')](_0x5828('0x36'),_0xeac967+'-'+_0x36c711+'/'+_0x17eece)[_0x5828('0x30')](_0x36af93);}return null;};}function patchUpdates(_0x53cabc){return function(_0xf0a4ea){try{jsonpatch[_0x5828('0x37')](_0xf0a4ea,_0x53cabc,!![]);}catch(_0x540aa1){return BPromise['reject'](_0x540aa1);}return _0xf0a4ea[_0x5828('0x38')]();};}function saveUpdates(_0xa53db3,_0x5fbba0){return function(_0x41edd5){if(_0x41edd5){return _0x41edd5[_0x5828('0x39')](_0xa53db3)[_0x5828('0x3a')](function(_0x181937){return _0x181937;});}return null;};}function removeEntity(_0x56c913,_0x15ebce){return function(_0xda6463){if(_0xda6463){return _0xda6463[_0x5828('0x3b')]()['then'](function(){_0x56c913[_0x5828('0x2e')](0xcc)[_0x5828('0x2f')]();});}};}function handleEntityNotFound(_0x41dcfd,_0x22a2b8){return function(_0x6f5170){if(!_0x6f5170){_0x41dcfd[_0x5828('0x2d')](0x194);}return _0x6f5170;};}function handleError(_0x1dca69,_0xb66ca6){_0xb66ca6=_0xb66ca6||0x1f4;return function(_0x5e6dc7){logger['error'](_0x5e6dc7['stack']);if(_0x5e6dc7['name']){delete _0x5e6dc7[_0x5828('0x3c')];}_0x1dca69['status'](_0xb66ca6)[_0x5828('0x3d')](_0x5e6dc7);};}exports[_0x5828('0x3e')]=function(_0xb1a039,_0x1dd909){var _0x865e13={},_0x1c66ea={},_0x4f2616={'count':0x0,'rows':[]};var _0xe262a8=_[_0x5828('0x3f')](db[_0x5828('0x40')][_0x5828('0x41')],function(_0x229a5f){return{'name':_0x229a5f['fieldName'],'type':_0x229a5f[_0x5828('0x42')][_0x5828('0x43')]};});_0x1c66ea[_0x5828('0x44')]=_['map'](_0xe262a8,_0x5828('0x3c'));_0x1c66ea[_0x5828('0x45')]=_[_0x5828('0x46')](_0xb1a039[_0x5828('0x45')]);_0x1c66ea[_0x5828('0x47')]=_['intersection'](_0x1c66ea[_0x5828('0x44')],_0x1c66ea[_0x5828('0x45')]);_0x865e13['attributes']=_[_0x5828('0x48')](_0x1c66ea[_0x5828('0x44')],qs[_0x5828('0x49')](_0xb1a039[_0x5828('0x45')][_0x5828('0x49')]));_0x865e13['attributes']=_0x865e13['attributes'][_0x5828('0x4a')]?_0x865e13[_0x5828('0x4b')]:_0x1c66ea[_0x5828('0x44')];if(!_0xb1a039[_0x5828('0x45')]['hasOwnProperty'](_0x5828('0x4c'))){_0x865e13[_0x5828('0x32')]=qs[_0x5828('0x32')](_0xb1a039[_0x5828('0x45')]['limit']);_0x865e13[_0x5828('0x34')]=qs[_0x5828('0x34')](_0xb1a039['query'][_0x5828('0x34')]);}_0x865e13['order']=qs[_0x5828('0x4d')](_0xb1a039[_0x5828('0x45')]['sort']);_0x865e13[_0x5828('0x4e')]=qs['filters'](_[_0x5828('0x4f')](_0xb1a039[_0x5828('0x45')],_0x1c66ea[_0x5828('0x47')]),_0xe262a8);if(_0xb1a039[_0x5828('0x45')][_0x5828('0x50')]){_0x865e13[_0x5828('0x4e')]=_[_0x5828('0x51')](_0x865e13[_0x5828('0x4e')],{'$or':_['map'](_0xe262a8,function(_0x5994ea){if(_0x5994ea[_0x5828('0x42')]!==_0x5828('0x52')){var _0x4bbd24={};_0x4bbd24[_0x5994ea[_0x5828('0x3c')]]={'$like':'%'+_0xb1a039['query'][_0x5828('0x50')]+'%'};return _0x4bbd24;}})});}_0x865e13=_['merge']({},_0x865e13,_0xb1a039[_0x5828('0x53')]);var _0x3310b9={'where':_0x865e13[_0x5828('0x4e')]};return db[_0x5828('0x40')][_0x5828('0x33')](_0x3310b9)[_0x5828('0x3a')](function(_0x46c8e9){_0x4f2616['count']=_0x46c8e9;if(_0xb1a039['query'][_0x5828('0x54')]){_0x865e13['include']=[{'all':!![]}];}return db['ChatMessage'][_0x5828('0x55')](_0x865e13);})[_0x5828('0x3a')](function(_0x142453){_0x4f2616[_0x5828('0x56')]=_0x142453;return _0x4f2616;})[_0x5828('0x3a')](respondWithFilteredResult(_0x1dd909,_0x865e13))['catch'](handleError(_0x1dd909,null));};exports[_0x5828('0x57')]=function(_0x4c0700,_0x3006bc){var _0x30ae99={'raw':!![],'where':{'id':_0x4c0700[_0x5828('0x58')]['id']}},_0x534f28={};_0x534f28[_0x5828('0x44')]=_[_0x5828('0x46')](db[_0x5828('0x40')][_0x5828('0x41')]);_0x534f28['query']=_['keys'](_0x4c0700[_0x5828('0x45')]);_0x534f28['filters']=_[_0x5828('0x48')](_0x534f28['model'],_0x534f28[_0x5828('0x45')]);_0x30ae99[_0x5828('0x4b')]=_[_0x5828('0x48')](_0x534f28[_0x5828('0x44')],qs[_0x5828('0x49')](_0x4c0700[_0x5828('0x45')][_0x5828('0x49')]));_0x30ae99[_0x5828('0x4b')]=_0x30ae99[_0x5828('0x4b')][_0x5828('0x4a')]?_0x30ae99[_0x5828('0x4b')]:_0x534f28['model'];if(_0x4c0700[_0x5828('0x45')][_0x5828('0x54')]){_0x30ae99[_0x5828('0x59')]=[{'all':!![]}];}_0x30ae99=_[_0x5828('0x51')]({},_0x30ae99,_0x4c0700[_0x5828('0x53')]);return db[_0x5828('0x40')][_0x5828('0x5a')](_0x30ae99)[_0x5828('0x3a')](handleEntityNotFound(_0x3006bc,null))[_0x5828('0x3a')](respondWithResult(_0x3006bc,null))[_0x5828('0x2c')](handleError(_0x3006bc,null));};exports['create']=function(_0x47ed02,_0xfd33dc){return db['ChatMessage'][_0x5828('0x5b')](_0x47ed02[_0x5828('0x5c')],{})['then'](respondWithResult(_0xfd33dc,0xc9))[_0x5828('0x2c')](handleError(_0xfd33dc,null));};exports[_0x5828('0x39')]=function(_0x184c76,_0x3ea910){if(_0x184c76[_0x5828('0x5c')]['id']){delete _0x184c76['body']['id'];}return db[_0x5828('0x40')][_0x5828('0x5a')]({'where':{'id':_0x184c76[_0x5828('0x58')]['id']}})[_0x5828('0x3a')](handleEntityNotFound(_0x3ea910,null))['then'](saveUpdates(_0x184c76[_0x5828('0x5c')],null))[_0x5828('0x3a')](respondWithResult(_0x3ea910,null))['catch'](handleError(_0x3ea910,null));};exports[_0x5828('0x3b')]=function(_0x2aadf8,_0x1ec786){return db[_0x5828('0x40')][_0x5828('0x5a')]({'where':{'id':_0x2aadf8[_0x5828('0x58')]['id']}})[_0x5828('0x3a')](handleEntityNotFound(_0x1ec786,null))['then'](removeEntity(_0x1ec786,null))[_0x5828('0x2c')](handleError(_0x1ec786,null));};exports[_0x5828('0x5d')]=function(_0x35b1b7,_0x4abaad){return db[_0x5828('0x40')][_0x5828('0x5d')]()['then'](respondWithResult(_0x4abaad,null))['catch'](handleError(_0x4abaad,null));};var interaction_log=require(_0x5828('0x5e'))(_0x5828('0x5f'));exports[_0x5828('0x60')]=function(_0x327c77,_0x5529ac,_0x4ba617){var _0x2fbb8e={'agent':{},'channel':_0x5828('0x61')};if(_0x327c77['body']['id']){delete _0x327c77['body']['id'];}_0x327c77[_0x5828('0x5c')]['read']=!![];_0x327c77[_0x5828('0x5c')]['readAt']=moment()[_0x5828('0x62')](_0x5828('0x63'));_0x327c77[_0x5828('0x5c')][_0x5828('0x64')]=_0x327c77[_0x5828('0x5c')][_0x5828('0x64')]||_0x327c77['user']['id'];_0x2fbb8e[_0x5828('0x65')]['id']=_0x327c77[_0x5828('0x5c')]['UserId'];return db[_0x5828('0x40')][_0x5828('0x5a')]({'where':{'id':_0x327c77[_0x5828('0x58')]['id'],'UserId':null}})[_0x5828('0x3a')](handleEntityNotFound(_0x5529ac,null))[_0x5828('0x3a')](saveUpdates(_0x327c77[_0x5828('0x5c')],null))['then'](function(_0x4eb451){if(_0x4eb451){_0x2fbb8e['message']=_0x4eb451['get']({'plain':!![]});return db[_0x5828('0x66')][_0x5828('0x5a')]({'where':{'id':_0x4eb451['ChatInteractionId']}});}return null;})[_0x5828('0x3a')](handleEntityNotFound(_0x5529ac,null))[_0x5828('0x3a')](function(_0x54fb71){if(_0x54fb71){return _0x54fb71[_0x5828('0x39')]({'UserId':_0x327c77['body'][_0x5828('0x64')],'read1stAt':_[_0x5828('0x67')](_0x54fb71['read1stAt'])?moment()[_0x5828('0x62')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x5828('0x3a')](function(_0xb424d0){if(_0xb424d0){_0x2fbb8e[_0x5828('0x68')]=_0xb424d0[_0x5828('0x69')]({'plain':!![]});interaction_log[_0x5828('0x24')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x327c77[_0x5828('0x6a')]['id'],_0x327c77[_0x5828('0x6a')][_0x5828('0x3c')],_0x327c77[_0x5828('0x6a')]['role'],_0x2fbb8e[_0x5828('0x68')]['id'],_0x327c77[_0x5828('0x5c')]?JSON[_0x5828('0x28')](_0x327c77[_0x5828('0x5c')]):'null');return respondWithRpcPromise(_0x5828('0x6b'),_0x5828('0x6c'),_0x2fbb8e);}return null;})[_0x5828('0x3a')](function(_0x11b614){var _0xc1db86='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x11b614[_0x5828('0x2a')][_0x5828('0x6d')];return db[_0x5828('0x6e')][_0x5828('0x45')](_0xc1db86,{'type':db['Sequelize']['QueryTypes'][_0x5828('0x6f')],'raw':!![]})[_0x5828('0x3a')](function(_0x6216b7){return _0x6216b7;});})['then'](function(_0x56a631){if(_0x56a631){_0x2fbb8e[_0x5828('0x2a')]['contact']=_0x56a631[0x0];if(!_0x327c77['body'][_0x5828('0x64')])return;return db[_0x5828('0x70')][_0x5828('0x5a')]({'where':{'id':_0x327c77['body'][_0x5828('0x64')],'role':_0x5828('0x65')},'attributes':['id',_0x5828('0x3c'),_0x5828('0x71'),_0x5828('0x72'),_0x5828('0x73')],'raw':!![]});}return null;})[_0x5828('0x3a')](function(_0x252bfc){if(!_0x252bfc)return null;_0x2fbb8e[_0x5828('0x2a')][_0x5828('0x65')]=_0x252bfc;return _0x2fbb8e;})[_0x5828('0x3a')](function(_0x4d585c){if(_0x4d585c){if(_0x327c77[_0x5828('0x5c')][_0x5828('0x74')]){_0x2fbb8e[_0x5828('0x2a')]['interface']=util[_0x5828('0x62')]('SIP/%s',_0x327c77[_0x5828('0x6a')]['name']);_0x2fbb8e['message'][_0x5828('0x75')]=_0x2fbb8e[_0x5828('0x75')];_0x2fbb8e[_0x5828('0x2a')][_0x5828('0x76')]=_0x2fbb8e[_0x5828('0x75')];_0x2fbb8e['message']['event']=_0x5828('0x60');return respondWithRpcPromise(_0x5828('0x77'),_0x5828('0x77'),{'event':_0x5828('0x78'),'message':_[_0x5828('0x51')](_0x2fbb8e['message'],JSON['parse'](_0x2fbb8e[_0x5828('0x68')][_0x5828('0x79')]))},client9002)[_0x5828('0x3a')](function(){return _0x2fbb8e;});}return _0x2fbb8e;}return null;})[_0x5828('0x3a')](respondWithResult(_0x5529ac,null))[_0x5828('0x2c')](handleError(_0x5529ac,null));};var interaction_log=require(_0x5828('0x5e'))(_0x5828('0x5f'));exports['reject']=function(_0x18f444,_0x4564f5,_0x2c5c34){var _0x79da08={'agent':{},'channel':_0x5828('0x61')};if(_0x18f444[_0x5828('0x5c')]['id']){delete _0x18f444[_0x5828('0x5c')]['id'];}_0x18f444[_0x5828('0x5c')][_0x5828('0x64')]=_0x18f444[_0x5828('0x5c')][_0x5828('0x64')]||_0x18f444['user']['id'];_0x79da08[_0x5828('0x65')]['id']=_0x18f444[_0x5828('0x5c')][_0x5828('0x64')];return db[_0x5828('0x40')][_0x5828('0x5a')]({'where':{'id':_0x18f444['params']['id'],'UserId':null}})[_0x5828('0x3a')](handleEntityNotFound(_0x4564f5,null))[_0x5828('0x3a')](function(_0x4abf0a){if(_0x4abf0a){_0x79da08[_0x5828('0x2a')]=_0x4abf0a[_0x5828('0x69')]({'plain':!![]});return db['ChatInteraction'][_0x5828('0x5a')]({'where':{'id':_0x4abf0a[_0x5828('0x7a')]}});}return null;})[_0x5828('0x3a')](handleEntityNotFound(_0x4564f5,null))[_0x5828('0x3a')](function(_0x3e111a){if(_0x3e111a){_0x79da08[_0x5828('0x68')]=_0x3e111a['get']({'plain':!![]});interaction_log[_0x5828('0x24')](_0x5828('0x7b'),_0x18f444[_0x5828('0x6a')]['id'],_0x18f444[_0x5828('0x6a')]['name'],_0x18f444[_0x5828('0x6a')]['role'],_0x79da08['interaction']['id'],_0x18f444[_0x5828('0x5c')]?JSON[_0x5828('0x28')](_0x18f444['body']):_0x5828('0x7c'));return respondWithRpcPromise(_0x5828('0x7d'),_0x5828('0x7e'),_0x79da08);}return null;})[_0x5828('0x3a')](function(_0xb7cab4){var _0x206af6=_0x5828('0x7f')+_0xb7cab4['message']['ContactId'];return db['sequelize'][_0x5828('0x45')](_0x206af6,{'type':db[_0x5828('0x80')]['QueryTypes'][_0x5828('0x6f')],'raw':!![]})[_0x5828('0x3a')](function(_0x16ac03){return _0x16ac03;});})[_0x5828('0x3a')](function(_0x2cba8c){if(_0x2cba8c){_0x79da08[_0x5828('0x2a')][_0x5828('0x81')]=_0x2cba8c[0x0];if(!_0x18f444[_0x5828('0x5c')][_0x5828('0x64')])return;return db[_0x5828('0x70')][_0x5828('0x5a')]({'where':{'id':_0x18f444[_0x5828('0x5c')][_0x5828('0x64')],'role':_0x5828('0x65')},'attributes':['id','name',_0x5828('0x71'),_0x5828('0x72'),_0x5828('0x73')],'raw':!![]});}return null;})[_0x5828('0x3a')](function(_0x3774de){if(!_0x3774de)return null;_0x79da08[_0x5828('0x2a')][_0x5828('0x65')]=_0x3774de;return _0x79da08;})[_0x5828('0x3a')](function(_0x59ac82){if(_0x59ac82){_0x59ac82[_0x5828('0x2a')][_0x5828('0x82')]=util['format'](_0x5828('0x83'),_0x18f444['user'][_0x5828('0x3c')]);_0x59ac82['message'][_0x5828('0x75')]=_0x79da08['channel'];_0x59ac82[_0x5828('0x2a')]['motionChannel']=_0x79da08[_0x5828('0x75')];_0x59ac82['message'][_0x5828('0x84')]=_0x5828('0x85');respondWithRpcPromise('EventManager',_0x5828('0x77'),{'event':_0x5828('0x86'),'message':_[_0x5828('0x51')](_0x79da08[_0x5828('0x2a')],JSON[_0x5828('0x87')](_0x79da08[_0x5828('0x68')][_0x5828('0x79')]))},client9002);return _0x79da08;}return null;})[_0x5828('0x3a')](respondWithResult(_0x4564f5,null))['catch'](handleError(_0x4564f5,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(_0x5d6452,_0x4c72d2){var _0x4aff24=function(_0x1bd33c){while(--_0x1bd33c){_0x5d6452['push'](_0x5d6452['shift']());}};_0x4aff24(++_0x4c72d2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'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 ac7f98a..34375e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9847=['hasOwnProperty','hook','exports','events','../../mysqldb','ChatMessage','save','update','remove','emit'];(function(_0x2396a1,_0x235f79){var _0x46b666=function(_0x5f8973){while(--_0x5f8973){_0x2396a1['push'](_0x2396a1['shift']());}};_0x46b666(++_0x235f79);}(_0x9847,0x1ed));var _0x7984=function(_0x3ae885,_0x30a66c){_0x3ae885=_0x3ae885-0x0;var _0x47571e=_0x9847[_0x3ae885];return _0x47571e;};'use strict';var EventEmitter=require(_0x7984('0x0'));var ChatMessage=require(_0x7984('0x1'))['db'][_0x7984('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7984('0x3'),'afterUpdate':_0x7984('0x4'),'afterDestroy':_0x7984('0x5')};function emitEvent(_0x5c637f){return function(_0x39b50e,_0x1912fe,_0x6368f8){ChatMessageEvents[_0x7984('0x6')](_0x5c637f+':'+_0x39b50e['id'],_0x39b50e);ChatMessageEvents[_0x7984('0x6')](_0x5c637f,_0x39b50e);_0x6368f8(null);};}for(var e in events){if(events[_0x7984('0x7')](e)){var event=events[e];ChatMessage[_0x7984('0x8')](e,emitEvent(event));}}module[_0x7984('0x9')]=ChatMessageEvents;
\ No newline at end of file
+var _0x0a6f=['emit','exports','../../mysqldb','ChatMessage','setMaxListeners','update','remove'];(function(_0x26d511,_0x26da13){var _0x3d17ea=function(_0x5004ca){while(--_0x5004ca){_0x26d511['push'](_0x26d511['shift']());}};_0x3d17ea(++_0x26da13);}(_0x0a6f,0x159));var _0xf0a6=function(_0x4599b6,_0x40c254){_0x4599b6=_0x4599b6-0x0;var _0x2e014c=_0x0a6f[_0x4599b6];return _0x2e014c;};'use strict';var EventEmitter=require('events');var ChatMessage=require(_0xf0a6('0x0'))['db'][_0xf0a6('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xf0a6('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xf0a6('0x3'),'afterDestroy':_0xf0a6('0x4')};function emitEvent(_0x4ed86e){return function(_0x12301e,_0x3a378e,_0x5c77b7){ChatMessageEvents['emit'](_0x4ed86e+':'+_0x12301e['id'],_0x12301e);ChatMessageEvents[_0xf0a6('0x5')](_0x4ed86e,_0x12301e);_0x5c77b7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module[_0xf0a6('0x6')]=ChatMessageEvents;
\ No newline at end of file
index 8d04fea..bdd08c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0816=['path','rimraf','../../config/environment','./chatMessage.attributes','define','ChatMessage','chat_messages','FULLTEXT','get','direction','toLowerCase','out','secret','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x1bc1a2,_0x2fb55d){var _0x449711=function(_0x44d4a7){while(--_0x44d4a7){_0x1bc1a2['push'](_0x1bc1a2['shift']());}};_0x449711(++_0x2fb55d);}(_0x0816,0x1ac));var _0x6081=function(_0x5f1cf8,_0x5e0923){_0x5f1cf8=_0x5f1cf8-0x0;var _0x27d0fa=_0x0816[_0x5f1cf8];return _0x27d0fa;};'use strict';var _=require('lodash');var util=require(_0x6081('0x0'));var logger=require(_0x6081('0x1'))(_0x6081('0x2'));var moment=require(_0x6081('0x3'));var BPromise=require(_0x6081('0x4'));var rp=require(_0x6081('0x5'));var fs=require('fs');var path=require(_0x6081('0x6'));var rimraf=require(_0x6081('0x7'));var config=require(_0x6081('0x8'));var attributes=require(_0x6081('0x9'));module['exports']=function(_0x1e5e0c,_0x2612d0){return _0x1e5e0c[_0x6081('0xa')](_0x6081('0xb'),attributes,{'tableName':_0x6081('0xc'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':['body'],'type':_0x6081('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x20c200,_0x4c2850,_0x50df25){var _0x464300=_0x1e5e0c['models'];var _0x45150c=_0x20c200[_0x6081('0xe')]({'plain':!![]});if(_0x45150c[_0x6081('0xf')][_0x6081('0x10')]()==='in'||_0x45150c[_0x6081('0xf')][_0x6081('0x10')]()===_0x6081('0x11')&&!_0x45150c[_0x6081('0x12')]&&!_[_0x6081('0x13')](_0x45150c[_0x6081('0x14')])){_0x464300[_0x6081('0x15')][_0x6081('0x16')]({'where':{'id':_0x45150c[_0x6081('0x17')]}})[_0x6081('0x18')](function(_0x32810b){if(_0x32810b){_0x32810b[_0x6081('0x19')]({'lastMsgAt':_0x45150c[_0x6081('0x1a')],'lastMsgDirection':_0x45150c[_0x6081('0xf')][_0x6081('0x10')]()});}})[_0x6081('0x1b')](function(_0x50b99d){console[_0x6081('0x1c')](_0x50b99d);});}_0x50df25();}},'charset':_0x6081('0x1d'),'collate':_0x6081('0x1e')});};
\ No newline at end of file
+var _0x1aa8=['../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','body','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','request-promise','path'];(function(_0x58fd65,_0x509ab1){var _0x1eca0e=function(_0x51e6f4){while(--_0x51e6f4){_0x58fd65['push'](_0x58fd65['shift']());}};_0x1eca0e(++_0x509ab1);}(_0x1aa8,0x145));var _0x81aa=function(_0x9008bd,_0x16a66b){_0x9008bd=_0x9008bd-0x0;var _0x408d9f=_0x1aa8[_0x9008bd];return _0x408d9f;};'use strict';var _=require(_0x81aa('0x0'));var util=require(_0x81aa('0x1'));var logger=require('../../config/logger')(_0x81aa('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x81aa('0x3'));var fs=require('fs');var path=require(_0x81aa('0x4'));var rimraf=require('rimraf');var config=require(_0x81aa('0x5'));var attributes=require(_0x81aa('0x6'));module[_0x81aa('0x7')]=function(_0x31ea68,_0x4b2df5){return _0x31ea68[_0x81aa('0x8')](_0x81aa('0x9'),attributes,{'tableName':_0x81aa('0xa'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':[_0x81aa('0xb')],'type':_0x81aa('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x17cb78,_0x558954,_0x57caf4){var _0x254b30=_0x31ea68[_0x81aa('0xd')];var _0x5e1d62=_0x17cb78[_0x81aa('0xe')]({'plain':!![]});if(_0x5e1d62[_0x81aa('0xf')][_0x81aa('0x10')]()==='in'||_0x5e1d62[_0x81aa('0xf')][_0x81aa('0x10')]()==='out'&&!_0x5e1d62[_0x81aa('0x11')]&&!_[_0x81aa('0x12')](_0x5e1d62[_0x81aa('0x13')])){_0x254b30[_0x81aa('0x14')][_0x81aa('0x15')]({'where':{'id':_0x5e1d62[_0x81aa('0x16')]}})[_0x81aa('0x17')](function(_0x1eca6e){if(_0x1eca6e){_0x1eca6e[_0x81aa('0x18')]({'lastMsgAt':_0x5e1d62[_0x81aa('0x19')],'lastMsgDirection':_0x5e1d62[_0x81aa('0xf')][_0x81aa('0x10')]()});}})[_0x81aa('0x1a')](function(_0x110904){console[_0x81aa('0x1b')](_0x110904);});}_0x57caf4();}},'charset':_0x81aa('0x1c'),'collate':_0x81aa('0x1d')});};
\ No newline at end of file
index 71e2aec..d51e33a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae12=['message','result','CreateChatMessage','ChatMessage','body','options','raw','debug','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x311f44,_0x1d7f5b){var _0x46f1e6=function(_0x27342a){while(--_0x27342a){_0x311f44['push'](_0x311f44['shift']());}};_0x46f1e6(++_0x1d7f5b);}(_0xae12,0x1d0));var _0x2ae1=function(_0x380e75,_0x486360){_0x380e75=_0x380e75-0x0;var _0x444d96=_0xae12[_0x380e75];return _0x444d96;};'use strict';var _=require('lodash');var util=require(_0x2ae1('0x0'));var moment=require(_0x2ae1('0x1'));var BPromise=require(_0x2ae1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2ae1('0x3'));var db=require(_0x2ae1('0x4'))['db'];var utils=require(_0x2ae1('0x5'));var logger=require(_0x2ae1('0x6'))(_0x2ae1('0x7'));var config=require(_0x2ae1('0x8'));var jayson=require(_0x2ae1('0x9'));var client=jayson['client'][_0x2ae1('0xa')]({'port':0x232a});config['redis']=_[_0x2ae1('0xb')](config[_0x2ae1('0xc')],{'host':_0x2ae1('0xd'),'port':0x18eb});var socket=require(_0x2ae1('0xe'))(new Redis(config['redis']));require(_0x2ae1('0xf'))[_0x2ae1('0x10')](socket);function respondWithRpcPromise(_0x342d84,_0xfdb930,_0x4749bd){return new BPromise(function(_0x358077,_0x25a667){return client[_0x2ae1('0x11')](_0x342d84,_0x4749bd)[_0x2ae1('0x12')](function(_0x2d141b){logger[_0x2ae1('0x13')](_0x2ae1('0x14'),_0xfdb930,_0x2ae1('0x15'));logger['debug'](_0x2ae1('0x16'),_0xfdb930,_0x2ae1('0x15'),JSON[_0x2ae1('0x17')](_0x2d141b));if(_0x2d141b[_0x2ae1('0x18')]){if(_0x2d141b[_0x2ae1('0x18')][_0x2ae1('0x19')]===0x1f4){logger[_0x2ae1('0x18')](_0x2ae1('0x14'),_0xfdb930,_0x2d141b['error'][_0x2ae1('0x1a')]);return _0x25a667(_0x2d141b[_0x2ae1('0x18')][_0x2ae1('0x1a')]);}logger[_0x2ae1('0x18')](_0x2ae1('0x14'),_0xfdb930,_0x2d141b['error']['message']);return _0x358077(_0x2d141b[_0x2ae1('0x18')][_0x2ae1('0x1a')]);}else{logger[_0x2ae1('0x13')](_0x2ae1('0x14'),_0xfdb930,_0x2ae1('0x15'));_0x358077(_0x2d141b[_0x2ae1('0x1b')]['message']);}})['catch'](function(_0x46c576){logger['error']('ChatMessage,\x20%s,\x20%s',_0xfdb930,_0x46c576);_0x25a667(_0x46c576);});});}exports[_0x2ae1('0x1c')]=function(_0xb649c8){var _0x41007e=this;return new Promise(function(_0x5a3e6a,_0x56a5e5){return db[_0x2ae1('0x1d')]['create'](_0xb649c8[_0x2ae1('0x1e')],{'raw':_0xb649c8['options']?_0xb649c8[_0x2ae1('0x1f')][_0x2ae1('0x20')]===undefined?!![]:![]:!![]})[_0x2ae1('0x12')](function(_0x46e788){logger[_0x2ae1('0x13')]('CreateChatMessage',_0xb649c8);logger[_0x2ae1('0x21')](_0x2ae1('0x1c'),_0xb649c8,JSON[_0x2ae1('0x17')](_0x46e788));_0x5a3e6a(_0x46e788);})[_0x2ae1('0x22')](function(_0x2288bd){logger[_0x2ae1('0x18')]('CreateChatMessage',_0x2288bd[_0x2ae1('0x1a')],_0xb649c8);_0x56a5e5(_0x41007e['error'](0x1f4,_0x2288bd['message']));});});};
\ No newline at end of file
+var _0x1260=['ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','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','lodash','util','bluebird'];(function(_0x5812a1,_0x2cefc3){var _0x2b7766=function(_0x369a67){while(--_0x369a67){_0x5812a1['push'](_0x5812a1['shift']());}};_0x2b7766(++_0x2cefc3);}(_0x1260,0x15d));var _0x0126=function(_0x39a63c,_0x536103){_0x39a63c=_0x39a63c-0x0;var _0x1f135d=_0x1260[_0x39a63c];return _0x1f135d;};'use strict';var _=require(_0x0126('0x0'));var util=require(_0x0126('0x1'));var moment=require('moment');var BPromise=require(_0x0126('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0126('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x0126('0x4'))(_0x0126('0x5'));var config=require(_0x0126('0x6'));var jayson=require(_0x0126('0x7'));var client=jayson['client'][_0x0126('0x8')]({'port':0x232a});config[_0x0126('0x9')]=_[_0x0126('0xa')](config[_0x0126('0x9')],{'host':_0x0126('0xb'),'port':0x18eb});var socket=require(_0x0126('0xc'))(new Redis(config[_0x0126('0x9')]));require(_0x0126('0xd'))[_0x0126('0xe')](socket);function respondWithRpcPromise(_0x39b789,_0x5f4746,_0x4e7693){return new BPromise(function(_0xabc44f,_0x2c87c4){return client[_0x0126('0xf')](_0x39b789,_0x4e7693)[_0x0126('0x10')](function(_0xf4eb12){logger[_0x0126('0x11')](_0x0126('0x12'),_0x5f4746,_0x0126('0x13'));logger[_0x0126('0x14')](_0x0126('0x15'),_0x5f4746,_0x0126('0x13'),JSON[_0x0126('0x16')](_0xf4eb12));if(_0xf4eb12['error']){if(_0xf4eb12[_0x0126('0x17')][_0x0126('0x18')]===0x1f4){logger['error'](_0x0126('0x12'),_0x5f4746,_0xf4eb12[_0x0126('0x17')][_0x0126('0x19')]);return _0x2c87c4(_0xf4eb12[_0x0126('0x17')][_0x0126('0x19')]);}logger[_0x0126('0x17')](_0x0126('0x12'),_0x5f4746,_0xf4eb12[_0x0126('0x17')][_0x0126('0x19')]);return _0xabc44f(_0xf4eb12[_0x0126('0x17')][_0x0126('0x19')]);}else{logger[_0x0126('0x11')](_0x0126('0x12'),_0x5f4746,'request\x20sent');_0xabc44f(_0xf4eb12[_0x0126('0x1a')][_0x0126('0x19')]);}})[_0x0126('0x1b')](function(_0x1a0a5b){logger[_0x0126('0x17')](_0x0126('0x12'),_0x5f4746,_0x1a0a5b);_0x2c87c4(_0x1a0a5b);});});}exports[_0x0126('0x1c')]=function(_0x494b2c){var _0x2c19ff=this;return new Promise(function(_0x1534af,_0x49ad88){return db['ChatMessage'][_0x0126('0x1d')](_0x494b2c[_0x0126('0x1e')],{'raw':_0x494b2c[_0x0126('0x1f')]?_0x494b2c['options']['raw']===undefined?!![]:![]:!![]})[_0x0126('0x10')](function(_0x464287){logger[_0x0126('0x11')](_0x0126('0x1c'),_0x494b2c);logger[_0x0126('0x14')](_0x0126('0x1c'),_0x494b2c,JSON[_0x0126('0x16')](_0x464287));_0x1534af(_0x464287);})[_0x0126('0x1b')](function(_0xad19d1){logger[_0x0126('0x17')](_0x0126('0x1c'),_0xad19d1[_0x0126('0x19')],_0x494b2c);_0x49ad88(_0x2c19ff['error'](0x1f4,_0xad19d1[_0x0126('0x19')]));});});};
\ No newline at end of file
index 93b5aca..10bd9bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['removeListener','register','length','chatMessage:','./chatMessage.events','save','remove','update','emit'];(function(_0x7729b1,_0x468322){var _0x349504=function(_0x401cee){while(--_0x401cee){_0x7729b1['push'](_0x7729b1['shift']());}};_0x349504(++_0x468322);}(_0x814b,0x1a2));var _0xb814=function(_0x1dd2cc,_0x36ddfe){_0x1dd2cc=_0x1dd2cc-0x0;var _0x305d8e=_0x814b[_0x1dd2cc];return _0x305d8e;};'use strict';var ChatMessageEvents=require(_0xb814('0x0'));var events=[_0xb814('0x1'),_0xb814('0x2'),_0xb814('0x3')];function createListener(_0xfbb64b,_0x477725){return function(_0x4a98af){_0x477725[_0xb814('0x4')](_0xfbb64b,_0x4a98af);};}function removeListener(_0x3e1e9,_0x258866){return function(){ChatMessageEvents[_0xb814('0x5')](_0x3e1e9,_0x258866);};}exports[_0xb814('0x6')]=function(_0x322a70){for(var _0x53e507=0x0,_0x3b0829=events[_0xb814('0x7')];_0x53e507<_0x3b0829;_0x53e507++){var _0x5c8539=events[_0x53e507];var _0x271af9=createListener(_0xb814('0x8')+_0x5c8539,_0x322a70);ChatMessageEvents['on'](_0x5c8539,_0x271af9);}};
\ No newline at end of file
+var _0x2f74=['emit','length','chatMessage:','./chatMessage.events','remove','update'];(function(_0x137d1d,_0x35c663){var _0x485108=function(_0x108a2a){while(--_0x108a2a){_0x137d1d['push'](_0x137d1d['shift']());}};_0x485108(++_0x35c663);}(_0x2f74,0x7b));var _0x42f7=function(_0x6238a2,_0x5bc389){_0x6238a2=_0x6238a2-0x0;var _0x429b25=_0x2f74[_0x6238a2];return _0x429b25;};'use strict';var ChatMessageEvents=require(_0x42f7('0x0'));var events=['save',_0x42f7('0x1'),_0x42f7('0x2')];function createListener(_0x1563f9,_0x34cb81){return function(_0xe8cf60){_0x34cb81[_0x42f7('0x3')](_0x1563f9,_0xe8cf60);};}function removeListener(_0x43a650,_0x16d639){return function(){ChatMessageEvents['removeListener'](_0x43a650,_0x16d639);};}exports['register']=function(_0x540e53){for(var _0x250aa9=0x0,_0x1cb6e0=events[_0x42f7('0x4')];_0x250aa9<_0x1cb6e0;_0x250aa9++){var _0x36b55e=events[_0x250aa9];var _0x2c64b2=createListener(_0x42f7('0x5')+_0x36b55e,_0x540e53);ChatMessageEvents['on'](_0x36b55e,_0x2c64b2);}};
\ No newline at end of file
index 4d39564..58ee694 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x636a=['chatmessage:create','put','update','/:id/accept','accept','/:id/reject','delete','destroy','exports','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','/describe','describe','/:id','post','tracked','chat'];(function(_0x8b9152,_0x50387c){var _0x39d7f4=function(_0x32b92e){while(--_0x32b92e){_0x8b9152['push'](_0x8b9152['shift']());}};_0x39d7f4(++_0x50387c);}(_0x636a,0x159));var _0xa636=function(_0x27b9a7,_0x215ec2){_0x27b9a7=_0x27b9a7-0x0;var _0x3c38dd=_0x636a[_0x27b9a7];return _0x3c38dd;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xa636('0x0'));var express=require(_0xa636('0x1'));var router=express[_0xa636('0x2')]();var fs_extra=require(_0xa636('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa636('0x4'));var config=require(_0xa636('0x5'));var controller=require(_0xa636('0x6'));router[_0xa636('0x7')]('/',auth[_0xa636('0x8')](),controller['index']);router[_0xa636('0x7')](_0xa636('0x9'),auth['isAuthenticated'](),controller[_0xa636('0xa')]);router[_0xa636('0x7')](_0xa636('0xb'),auth[_0xa636('0x8')](),controller['show']);router[_0xa636('0xc')]('/',auth['isAuthenticated'](),interaction[_0xa636('0xd')](_0xa636('0xe'),_0xa636('0xf')),controller['create']);router[_0xa636('0x10')]('/:id',controller[_0xa636('0x11')]);router['put'](_0xa636('0x12'),auth[_0xa636('0x8')](),controller[_0xa636('0x13')]);router[_0xa636('0x10')](_0xa636('0x14'),auth[_0xa636('0x8')](),controller['reject']);router[_0xa636('0x15')](_0xa636('0xb'),auth[_0xa636('0x8')](),controller[_0xa636('0x16')]);module[_0xa636('0x17')]=router;
\ No newline at end of file
+var _0x347a=['delete','destroy','exports','multer','util','path','Router','../../components/auth/service','index','get','describe','/:id','isAuthenticated','show','chat','chatmessage:create','create','put','update','accept','reject'];(function(_0x54d4fe,_0x55e869){var _0x1ab5bb=function(_0x5b1af2){while(--_0x5b1af2){_0x54d4fe['push'](_0x54d4fe['shift']());}};_0x1ab5bb(++_0x55e869);}(_0x347a,0x129));var _0xa347=function(_0x4a3b28,_0x41fc7c){_0x4a3b28=_0x4a3b28-0x0;var _0x394c74=_0x347a[_0x4a3b28];return _0x394c74;};'use strict';var multer=require(_0xa347('0x0'));var util=require(_0xa347('0x1'));var path=require(_0xa347('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa347('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xa347('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./chatMessage.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xa347('0x5')]);router[_0xa347('0x6')]('/describe',auth['isAuthenticated'](),controller[_0xa347('0x7')]);router['get'](_0xa347('0x8'),auth[_0xa347('0x9')](),controller[_0xa347('0xa')]);router['post']('/',auth[_0xa347('0x9')](),interaction['tracked'](_0xa347('0xb'),_0xa347('0xc')),controller[_0xa347('0xd')]);router[_0xa347('0xe')](_0xa347('0x8'),controller[_0xa347('0xf')]);router[_0xa347('0xe')]('/:id/accept',auth['isAuthenticated'](),controller[_0xa347('0x10')]);router['put']('/:id/reject',auth[_0xa347('0x9')](),controller[_0xa347('0x11')]);router[_0xa347('0x12')]('/:id',auth[_0xa347('0x9')](),controller[_0xa347('0x13')]);module[_0xa347('0x14')]=router;
\ No newline at end of file
index ff4ed7e..fade44c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbdc=['TEXT','medium','sequelize'];(function(_0x108427,_0x245983){var _0x5ae893=function(_0x2c8d2a){while(--_0x2c8d2a){_0x108427['push'](_0x108427['shift']());}};_0x5ae893(++_0x245983);}(_0xbbdc,0x12b));var _0xcbbd=function(_0x381379,_0x3f3b86){_0x381379=_0x381379-0x0;var _0x3e1063=_0xbbdc[_0x381379];return _0x3e1063;};'use strict';var Sequelize=require(_0xcbbd('0x0'));module['exports']={'body':{'type':Sequelize[_0xcbbd('0x1')](_0xcbbd('0x2')),'allowNull':![]}};
\ No newline at end of file
+var _0xc502=['exports','TEXT','medium'];(function(_0x8e9518,_0x4da38c){var _0x37da8d=function(_0xaabad){while(--_0xaabad){_0x8e9518['push'](_0x8e9518['shift']());}};_0x37da8d(++_0x4da38c);}(_0xc502,0x96));var _0x2c50=function(_0x35906a,_0x9e0b54){_0x35906a=_0x35906a-0x0;var _0x43ba69=_0xc502[_0x35906a];return _0x43ba69;};'use strict';var Sequelize=require('sequelize');module[_0x2c50('0x0')]={'body':{'type':Sequelize[_0x2c50('0x1')](_0x2c50('0x2')),'allowNull':![]}};
\ No newline at end of file
index f7a029d..65d324c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x318f8a,_0x5b64c9){var _0x1801c2=function(_0x1a1843){while(--_0x1a1843){_0x318f8a['push'](_0x318f8a['shift']());}};_0x1801c2(++_0x5b64c9);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'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
+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(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0x7a54,0x106));var _0x47a5=function(_0x349c51,_0x2cdaa7){_0x349c51=_0x349c51-0x0;var _0x5b1dea=_0x7a54[_0x349c51];return _0x5b1dea;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
index 6e9adf0..b54f5a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2350=['./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5c8e8a,_0x332612){var _0x299668=function(_0x25fa67){while(--_0x25fa67){_0x5c8e8a['push'](_0x5c8e8a['shift']());}};_0x299668(++_0x332612);}(_0x2350,0x87));var _0x0235=function(_0x4aa838,_0x4aa14f){_0x4aa838=_0x4aa838-0x0;var _0x3abff0=_0x2350[_0x4aa838];return _0x3abff0;};'use strict';var _=require(_0x0235('0x0'));var util=require('util');var logger=require(_0x0235('0x1'))(_0x0235('0x2'));var moment=require(_0x0235('0x3'));var BPromise=require(_0x0235('0x4'));var rp=require(_0x0235('0x5'));var fs=require('fs');var path=require(_0x0235('0x6'));var rimraf=require(_0x0235('0x7'));var config=require('../../config/environment');var attributes=require(_0x0235('0x8'));module[_0x0235('0x9')]=function(_0x544187,_0x139f8a){return _0x544187[_0x0235('0xa')](_0x0235('0xb'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0235('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x3c06=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x5116cc,_0x49d5ff){var _0x4844ae=function(_0x40ace4){while(--_0x40ace4){_0x5116cc['push'](_0x5116cc['shift']());}};_0x4844ae(++_0x49d5ff);}(_0x3c06,0x19f));var _0x63c0=function(_0x2f5481,_0x51f55a){_0x2f5481=_0x2f5481-0x0;var _0x1c5e66=_0x3c06[_0x2f5481];return _0x1c5e66;};'use strict';var _=require(_0x63c0('0x0'));var util=require('util');var logger=require(_0x63c0('0x1'))(_0x63c0('0x2'));var moment=require(_0x63c0('0x3'));var BPromise=require(_0x63c0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x63c0('0x5'));var rimraf=require(_0x63c0('0x6'));var config=require(_0x63c0('0x7'));var attributes=require('./chatOfflineMessage.attributes');module[_0x63c0('0x8')]=function(_0x33230d,_0x2a581e){return _0x33230d[_0x63c0('0x9')]('ChatOfflineMessage',attributes,{'tableName':_0x63c0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x63c0('0xb'),'collate':_0x63c0('0xc')});};
\ No newline at end of file
index 389571c..019909b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2409=['request\x20sent','stringify','error','code','message','ChatOfflineMessage,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug'];(function(_0x1c0f41,_0x26d95d){var _0x369a9f=function(_0x251234){while(--_0x251234){_0x1c0f41['push'](_0x1c0f41['shift']());}};_0x369a9f(++_0x26d95d);}(_0x2409,0x128));var _0x9240=function(_0x4134b5,_0x30caf1){_0x4134b5=_0x4134b5-0x0;var _0x9cf962=_0x2409[_0x4134b5];return _0x9cf962;};'use strict';var _=require(_0x9240('0x0'));var util=require(_0x9240('0x1'));var moment=require(_0x9240('0x2'));var BPromise=require(_0x9240('0x3'));var rs=require(_0x9240('0x4'));var fs=require('fs');var Redis=require(_0x9240('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9240('0x6'));var logger=require(_0x9240('0x7'))(_0x9240('0x8'));var config=require(_0x9240('0x9'));var jayson=require(_0x9240('0xa'));var client=jayson['client'][_0x9240('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x496405,_0x3f7e69,_0x4997e9){return new BPromise(function(_0x50e2df,_0x5af54e){return client[_0x9240('0xc')](_0x496405,_0x4997e9)[_0x9240('0xd')](function(_0x4f844a){logger[_0x9240('0xe')]('ChatOfflineMessage,\x20%s,\x20%s',_0x3f7e69,'request\x20sent');logger[_0x9240('0xf')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x3f7e69,_0x9240('0x10'),JSON[_0x9240('0x11')](_0x4f844a));if(_0x4f844a[_0x9240('0x12')]){if(_0x4f844a[_0x9240('0x12')][_0x9240('0x13')]===0x1f4){logger[_0x9240('0x12')]('ChatOfflineMessage,\x20%s,\x20%s',_0x3f7e69,_0x4f844a[_0x9240('0x12')]['message']);return _0x5af54e(_0x4f844a[_0x9240('0x12')][_0x9240('0x14')]);}logger[_0x9240('0x12')](_0x9240('0x15'),_0x3f7e69,_0x4f844a[_0x9240('0x12')][_0x9240('0x14')]);return _0x50e2df(_0x4f844a[_0x9240('0x12')][_0x9240('0x14')]);}else{logger[_0x9240('0xe')](_0x9240('0x15'),_0x3f7e69,_0x9240('0x10'));_0x50e2df(_0x4f844a[_0x9240('0x16')]['message']);}})[_0x9240('0x17')](function(_0x3fab8c){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x3f7e69,_0x3fab8c);_0x5af54e(_0x3fab8c);});});}
\ No newline at end of file
+var _0x2bfb=['info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','error','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','then'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0x2bfb,0x15d));var _0xb2bf=function(_0x3f5e37,_0x5a94a6){_0x3f5e37=_0x3f5e37-0x0;var _0x2e7da1=_0x2bfb[_0x3f5e37];return _0x2e7da1;};'use strict';var _=require('lodash');var util=require(_0xb2bf('0x0'));var moment=require(_0xb2bf('0x1'));var BPromise=require(_0xb2bf('0x2'));var rs=require(_0xb2bf('0x3'));var fs=require('fs');var Redis=require(_0xb2bf('0x4'));var db=require(_0xb2bf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb2bf('0x6'))('rpc');var config=require(_0xb2bf('0x7'));var jayson=require(_0xb2bf('0x8'));var client=jayson['client'][_0xb2bf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1e03e5,_0xf71685,_0x5a914c){return new BPromise(function(_0x56ba2d,_0x499231){return client[_0xb2bf('0xa')](_0x1e03e5,_0x5a914c)[_0xb2bf('0xb')](function(_0x3ce37c){logger[_0xb2bf('0xc')](_0xb2bf('0xd'),_0xf71685,'request\x20sent');logger['debug']('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0xf71685,_0xb2bf('0xe'),JSON['stringify'](_0x3ce37c));if(_0x3ce37c[_0xb2bf('0xf')]){if(_0x3ce37c[_0xb2bf('0xf')]['code']===0x1f4){logger[_0xb2bf('0xf')](_0xb2bf('0xd'),_0xf71685,_0x3ce37c[_0xb2bf('0xf')][_0xb2bf('0x10')]);return _0x499231(_0x3ce37c[_0xb2bf('0xf')][_0xb2bf('0x10')]);}logger['error'](_0xb2bf('0xd'),_0xf71685,_0x3ce37c[_0xb2bf('0xf')][_0xb2bf('0x10')]);return _0x56ba2d(_0x3ce37c['error'][_0xb2bf('0x10')]);}else{logger[_0xb2bf('0xc')](_0xb2bf('0xd'),_0xf71685,_0xb2bf('0xe'));_0x56ba2d(_0x3ce37c[_0xb2bf('0x11')][_0xb2bf('0x10')]);}})[_0xb2bf('0x12')](function(_0x36de3f){logger[_0xb2bf('0xf')](_0xb2bf('0xd'),_0xf71685,_0x36de3f);_0x499231(_0x36de3f);});});}
\ No newline at end of file
index 25cf9f8..9e99b7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b9b=['../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','delete','destroy','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x3df223,_0x1740fc){var _0x562d11=function(_0x343009){while(--_0x343009){_0x3df223['push'](_0x3df223['shift']());}};_0x562d11(++_0x1740fc);}(_0x5b9b,0x177));var _0xb5b9=function(_0x31c924,_0x4aa031){_0x31c924=_0x31c924-0x0;var _0xec04e=_0x5b9b[_0x31c924];return _0xec04e;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xb5b9('0x0'));var express=require(_0xb5b9('0x1'));var router=express[_0xb5b9('0x2')]();var fs_extra=require(_0xb5b9('0x3'));var auth=require(_0xb5b9('0x4'));var interaction=require(_0xb5b9('0x5'));var config=require(_0xb5b9('0x6'));var controller=require(_0xb5b9('0x7'));router[_0xb5b9('0x8')]('/',auth[_0xb5b9('0x9')](),controller[_0xb5b9('0xa')]);router[_0xb5b9('0x8')](_0xb5b9('0xb'),auth[_0xb5b9('0x9')](),controller[_0xb5b9('0xc')]);router['get'](_0xb5b9('0xd'),auth['isAuthenticated'](),controller[_0xb5b9('0xe')]);router[_0xb5b9('0xf')]('/',auth[_0xb5b9('0x9')](),controller[_0xb5b9('0x10')]);router['put'](_0xb5b9('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xb5b9('0x11')](_0xb5b9('0xd'),auth[_0xb5b9('0x9')](),controller[_0xb5b9('0x12')]);module[_0xb5b9('0x13')]=router;
\ No newline at end of file
+var _0xb56c=['show','post','create','put','update','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatOfflineMessage.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x51f5dc,_0x321254){var _0x24558a=function(_0x3efb95){while(--_0x3efb95){_0x51f5dc['push'](_0x51f5dc['shift']());}};_0x24558a(++_0x321254);}(_0xb56c,0xb8));var _0xcb56=function(_0x3dc538,_0x4f7702){_0x3dc538=_0x3dc538-0x0;var _0x72c2fd=_0xb56c[_0x3dc538];return _0x72c2fd;};'use strict';var multer=require(_0xcb56('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xcb56('0x1'));var express=require(_0xcb56('0x2'));var router=express[_0xcb56('0x3')]();var fs_extra=require(_0xcb56('0x4'));var auth=require(_0xcb56('0x5'));var interaction=require(_0xcb56('0x6'));var config=require('../../config/environment');var controller=require(_0xcb56('0x7'));router[_0xcb56('0x8')]('/',auth[_0xcb56('0x9')](),controller[_0xcb56('0xa')]);router[_0xcb56('0x8')](_0xcb56('0xb'),auth[_0xcb56('0x9')](),controller[_0xcb56('0xc')]);router[_0xcb56('0x8')](_0xcb56('0xd'),auth['isAuthenticated'](),controller[_0xcb56('0xe')]);router[_0xcb56('0xf')]('/',auth[_0xcb56('0x9')](),controller[_0xcb56('0x10')]);router[_0xcb56('0x11')](_0xcb56('0xd'),auth['isAuthenticated'](),controller[_0xcb56('0x12')]);router[_0xcb56('0x13')]('/:id',auth[_0xcb56('0x9')](),controller[_0xcb56('0x14')]);module[_0xcb56('0x15')]=router;
\ No newline at end of file
index e8d982d..71381e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x563d=['timeout','INTEGER','exports','STRING','ENUM','mouseOver'];(function(_0x35b1f1,_0x254a37){var _0x59f832=function(_0x4b613d){while(--_0x4b613d){_0x35b1f1['push'](_0x35b1f1['shift']());}};_0x59f832(++_0x254a37);}(_0x563d,0x17c));var _0xd563=function(_0x39e283,_0x247e6b){_0x39e283=_0x39e283-0x0;var _0x7de89f=_0x563d[_0x39e283];return _0x7de89f;};'use strict';var Sequelize=require('sequelize');module[_0xd563('0x0')]={'name':{'type':Sequelize[_0xd563('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xd563('0x2')](_0xd563('0x3'),_0xd563('0x4')),'defaultValue':_0xd563('0x3')},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xd563('0x5')]}};
\ No newline at end of file
+var _0x7d88=['exports','STRING','mouseOver','timeout','sequelize'];(function(_0x8299df,_0x2887e1){var _0x4a707f=function(_0x38ff3c){while(--_0x38ff3c){_0x8299df['push'](_0x8299df['shift']());}};_0x4a707f(++_0x2887e1);}(_0x7d88,0x103));var _0x87d8=function(_0x83519d,_0x1c5929){_0x83519d=_0x83519d-0x0;var _0x6dab62=_0x7d88[_0x83519d];return _0x6dab62;};'use strict';var Sequelize=require(_0x87d8('0x0'));module[_0x87d8('0x1')]={'name':{'type':Sequelize[_0x87d8('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x87d8('0x3'),_0x87d8('0x4')),'defaultValue':_0x87d8('0x3')},'selector':{'type':Sequelize[_0x87d8('0x2')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 5e36744..d27e759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ef8=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','sendStatus','error','stack','name','send','show','params','model','ChatProactiveAction','rawAttributes','keys','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','then','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util'];(function(_0x192833,_0x22814c){var _0x5514a5=function(_0x25e7e7){while(--_0x25e7e7){_0x192833['push'](_0x192833['shift']());}};_0x5514a5(++_0x22814c);}(_0x9ef8,0x17f));var _0x89ef=function(_0x38622b,_0x3cfdf7){_0x38622b=_0x38622b-0x0;var _0x2c1a7a=_0x9ef8[_0x38622b];return _0x2c1a7a;};'use strict';var emlformat=require(_0x89ef('0x0'));var rimraf=require(_0x89ef('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x89ef('0x2'));var rp=require(_0x89ef('0x3'));var moment=require(_0x89ef('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x89ef('0x5'));var util=require(_0x89ef('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x89ef('0x7'));var fs=require('fs');var fs_extra=require(_0x89ef('0x8'));var _=require(_0x89ef('0x9'));var squel=require(_0x89ef('0xa'));var crypto=require(_0x89ef('0xb'));var jsforce=require(_0x89ef('0xc'));var deskjs=require(_0x89ef('0xd'));var toCsv=require(_0x89ef('0xe'));var querystring=require(_0x89ef('0xf'));var Papa=require('papaparse');var Redis=require(_0x89ef('0x10'));var authService=require(_0x89ef('0x11'));var qs=require(_0x89ef('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x89ef('0x13'));var logger=require(_0x89ef('0x14'))(_0x89ef('0x15'));var utils=require(_0x89ef('0x16'));var config=require(_0x89ef('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x89ef('0x18'))['db'];function respondWithStatusCode(_0x525e1d,_0x248300){_0x248300=_0x248300||0xcc;return function(_0x2c8705){if(_0x2c8705){return _0x525e1d['sendStatus'](_0x248300);}return _0x525e1d[_0x89ef('0x19')](_0x248300)[_0x89ef('0x1a')]();};}function respondWithResult(_0x1194b6,_0x145e85){_0x145e85=_0x145e85||0xc8;return function(_0xa8a94c){if(_0xa8a94c){return _0x1194b6['status'](_0x145e85)[_0x89ef('0x1b')](_0xa8a94c);}};}function respondWithFilteredResult(_0x4b73a4,_0x4fc5b4){return function(_0x72189b){if(_0x72189b){var _0x1a89b7=typeof _0x4fc5b4['offset']===_0x89ef('0x1c')&&typeof _0x4fc5b4['limit']===_0x89ef('0x1c');var _0x4ed8fa=_0x72189b[_0x89ef('0x1d')];var _0x2c5f51=_0x1a89b7?0x0:_0x4fc5b4[_0x89ef('0x1e')];var _0x1189d7=_0x1a89b7?_0x72189b['count']:_0x4fc5b4[_0x89ef('0x1e')]+_0x4fc5b4[_0x89ef('0x1f')];var _0x16c776;if(_0x1189d7>=_0x4ed8fa){_0x1189d7=_0x4ed8fa;_0x16c776=0xc8;}else{_0x16c776=0xce;}_0x4b73a4[_0x89ef('0x19')](_0x16c776);return _0x4b73a4[_0x89ef('0x20')](_0x89ef('0x21'),_0x2c5f51+'-'+_0x1189d7+'/'+_0x4ed8fa)[_0x89ef('0x1b')](_0x72189b);}return null;};}function patchUpdates(_0x19df6a){return function(_0x3b904e){try{jsonpatch[_0x89ef('0x22')](_0x3b904e,_0x19df6a,!![]);}catch(_0x417629){return BPromise[_0x89ef('0x23')](_0x417629);}return _0x3b904e[_0x89ef('0x24')]();};}function saveUpdates(_0x1ca2b2,_0x4002b7){return function(_0x26afd6){if(_0x26afd6){return _0x26afd6[_0x89ef('0x25')](_0x1ca2b2)['then'](function(_0x59dc8f){return _0x59dc8f;});}return null;};}function removeEntity(_0x53c151,_0x5c9242){return function(_0x79a5e){if(_0x79a5e){return _0x79a5e[_0x89ef('0x26')]()['then'](function(){_0x53c151['status'](0xcc)[_0x89ef('0x1a')]();});}};}function handleEntityNotFound(_0x10bb22,_0x4a9c98){return function(_0x5313c9){if(!_0x5313c9){_0x10bb22[_0x89ef('0x27')](0x194);}return _0x5313c9;};}function handleError(_0x331ee9,_0xfd24c2){_0xfd24c2=_0xfd24c2||0x1f4;return function(_0x3efb34){logger[_0x89ef('0x28')](_0x3efb34[_0x89ef('0x29')]);if(_0x3efb34[_0x89ef('0x2a')]){delete _0x3efb34['name'];}_0x331ee9[_0x89ef('0x19')](_0xfd24c2)[_0x89ef('0x2b')](_0x3efb34);};}exports[_0x89ef('0x2c')]=function(_0x3acacc,_0x599f16){var _0x5b5c6c={'raw':!![],'where':{'id':_0x3acacc[_0x89ef('0x2d')]['id']}},_0x51245a={};_0x51245a[_0x89ef('0x2e')]=_['keys'](db[_0x89ef('0x2f')][_0x89ef('0x30')]);_0x51245a['query']=_[_0x89ef('0x31')](_0x3acacc[_0x89ef('0x32')]);_0x51245a[_0x89ef('0x33')]=_[_0x89ef('0x34')](_0x51245a['model'],_0x51245a[_0x89ef('0x32')]);_0x5b5c6c[_0x89ef('0x35')]=_['intersection'](_0x51245a[_0x89ef('0x2e')],qs[_0x89ef('0x36')](_0x3acacc[_0x89ef('0x32')]['fields']));_0x5b5c6c[_0x89ef('0x35')]=_0x5b5c6c[_0x89ef('0x35')][_0x89ef('0x37')]?_0x5b5c6c[_0x89ef('0x35')]:_0x51245a[_0x89ef('0x2e')];if(_0x3acacc[_0x89ef('0x32')][_0x89ef('0x38')]){_0x5b5c6c[_0x89ef('0x39')]=[{'all':!![]}];}_0x5b5c6c=_[_0x89ef('0x3a')]({},_0x5b5c6c,_0x3acacc[_0x89ef('0x3b')]);return db[_0x89ef('0x2f')][_0x89ef('0x3c')](_0x5b5c6c)[_0x89ef('0x3d')](handleEntityNotFound(_0x599f16,null))[_0x89ef('0x3d')](respondWithResult(_0x599f16,null))[_0x89ef('0x3e')](handleError(_0x599f16,null));};exports[_0x89ef('0x3f')]=function(_0x5ad001,_0x5d0d55){return db[_0x89ef('0x2f')][_0x89ef('0x3f')](_0x5ad001[_0x89ef('0x40')],{})[_0x89ef('0x3d')](respondWithResult(_0x5d0d55,0xc9))[_0x89ef('0x3e')](handleError(_0x5d0d55,null));};exports['update']=function(_0x27cb78,_0x4ce46b){if(_0x27cb78[_0x89ef('0x40')]['id']){delete _0x27cb78[_0x89ef('0x40')]['id'];}return db[_0x89ef('0x2f')][_0x89ef('0x3c')]({'where':{'id':_0x27cb78[_0x89ef('0x2d')]['id']}})[_0x89ef('0x3d')](handleEntityNotFound(_0x4ce46b,null))[_0x89ef('0x3d')](saveUpdates(_0x27cb78[_0x89ef('0x40')],null))['then'](respondWithResult(_0x4ce46b,null))['catch'](handleError(_0x4ce46b,null));};exports[_0x89ef('0x26')]=function(_0x16ea15,_0x3dcdca){return db['ChatProactiveAction'][_0x89ef('0x3c')]({'where':{'id':_0x16ea15[_0x89ef('0x2d')]['id']}})[_0x89ef('0x3d')](handleEntityNotFound(_0x3dcdca,null))[_0x89ef('0x3d')](removeEntity(_0x3dcdca,null))['catch'](handleError(_0x3dcdca,null));};
\ No newline at end of file
+var _0x8a9c=['request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','limit','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','params','model','keys','ChatProactiveAction','rawAttributes','query','filters','intersection','attributes','fields','length','include','merge','options','catch','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x103d78,_0xccf13d){var _0x596826=function(_0x52682c){while(--_0x52682c){_0x103d78['push'](_0x103d78['shift']());}};_0x596826(++_0xccf13d);}(_0x8a9c,0x12d));var _0xc8a9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8a9c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc8a9('0x0'));var rimraf=require(_0xc8a9('0x1'));var zipdir=require(_0xc8a9('0x2'));var jsonpatch=require(_0xc8a9('0x3'));var rp=require(_0xc8a9('0x4'));var moment=require('moment');var BPromise=require(_0xc8a9('0x5'));var Mustache=require(_0xc8a9('0x6'));var util=require('util');var path=require(_0xc8a9('0x7'));var sox=require(_0xc8a9('0x8'));var csv=require(_0xc8a9('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc8a9('0xa'));var _=require(_0xc8a9('0xb'));var squel=require(_0xc8a9('0xc'));var crypto=require(_0xc8a9('0xd'));var jsforce=require(_0xc8a9('0xe'));var deskjs=require(_0xc8a9('0xf'));var toCsv=require(_0xc8a9('0x9'));var querystring=require(_0xc8a9('0x10'));var Papa=require(_0xc8a9('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc8a9('0x12'));var as=require(_0xc8a9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc8a9('0x14'))('api');var utils=require(_0xc8a9('0x15'));var config=require(_0xc8a9('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xc8a9('0x17'))['db'];function respondWithStatusCode(_0x4d216b,_0xa7471d){_0xa7471d=_0xa7471d||0xcc;return function(_0x6ecee1){if(_0x6ecee1){return _0x4d216b[_0xc8a9('0x18')](_0xa7471d);}return _0x4d216b[_0xc8a9('0x19')](_0xa7471d)[_0xc8a9('0x1a')]();};}function respondWithResult(_0x4996bd,_0x4decb0){_0x4decb0=_0x4decb0||0xc8;return function(_0x81e8b2){if(_0x81e8b2){return _0x4996bd['status'](_0x4decb0)[_0xc8a9('0x1b')](_0x81e8b2);}};}function respondWithFilteredResult(_0x43e420,_0x60f79e){return function(_0x3f9c37){if(_0x3f9c37){var _0x4ba467=typeof _0x60f79e['offset']==='undefined'&&typeof _0x60f79e['limit']===_0xc8a9('0x1c');var _0x29c7fe=_0x3f9c37['count'];var _0x43f403=_0x4ba467?0x0:_0x60f79e[_0xc8a9('0x1d')];var _0x35bd4a=_0x4ba467?_0x3f9c37[_0xc8a9('0x1e')]:_0x60f79e[_0xc8a9('0x1d')]+_0x60f79e[_0xc8a9('0x1f')];var _0x15254c;if(_0x35bd4a>=_0x29c7fe){_0x35bd4a=_0x29c7fe;_0x15254c=0xc8;}else{_0x15254c=0xce;}_0x43e420[_0xc8a9('0x19')](_0x15254c);return _0x43e420['set'](_0xc8a9('0x20'),_0x43f403+'-'+_0x35bd4a+'/'+_0x29c7fe)[_0xc8a9('0x1b')](_0x3f9c37);}return null;};}function patchUpdates(_0x44886a){return function(_0xf028f8){try{jsonpatch[_0xc8a9('0x21')](_0xf028f8,_0x44886a,!![]);}catch(_0x7bf74b){return BPromise[_0xc8a9('0x22')](_0x7bf74b);}return _0xf028f8[_0xc8a9('0x23')]();};}function saveUpdates(_0x1bd6ec,_0x4d1e06){return function(_0x36d9cd){if(_0x36d9cd){return _0x36d9cd[_0xc8a9('0x24')](_0x1bd6ec)[_0xc8a9('0x25')](function(_0x5427bd){return _0x5427bd;});}return null;};}function removeEntity(_0xfb7f02,_0x1dad26){return function(_0x57f75c){if(_0x57f75c){return _0x57f75c[_0xc8a9('0x26')]()[_0xc8a9('0x25')](function(){_0xfb7f02['status'](0xcc)[_0xc8a9('0x1a')]();});}};}function handleEntityNotFound(_0x19f42e,_0x401d31){return function(_0x37d20d){if(!_0x37d20d){_0x19f42e[_0xc8a9('0x18')](0x194);}return _0x37d20d;};}function handleError(_0x588852,_0x8fc02a){_0x8fc02a=_0x8fc02a||0x1f4;return function(_0x17f08c){logger[_0xc8a9('0x27')](_0x17f08c[_0xc8a9('0x28')]);if(_0x17f08c['name']){delete _0x17f08c[_0xc8a9('0x29')];}_0x588852[_0xc8a9('0x19')](_0x8fc02a)[_0xc8a9('0x2a')](_0x17f08c);};}exports['show']=function(_0x2fcb64,_0x1716a6){var _0x282498={'raw':!![],'where':{'id':_0x2fcb64[_0xc8a9('0x2b')]['id']}},_0x411e23={};_0x411e23[_0xc8a9('0x2c')]=_[_0xc8a9('0x2d')](db[_0xc8a9('0x2e')][_0xc8a9('0x2f')]);_0x411e23[_0xc8a9('0x30')]=_[_0xc8a9('0x2d')](_0x2fcb64[_0xc8a9('0x30')]);_0x411e23[_0xc8a9('0x31')]=_[_0xc8a9('0x32')](_0x411e23[_0xc8a9('0x2c')],_0x411e23[_0xc8a9('0x30')]);_0x282498[_0xc8a9('0x33')]=_[_0xc8a9('0x32')](_0x411e23[_0xc8a9('0x2c')],qs[_0xc8a9('0x34')](_0x2fcb64[_0xc8a9('0x30')]['fields']));_0x282498[_0xc8a9('0x33')]=_0x282498[_0xc8a9('0x33')][_0xc8a9('0x35')]?_0x282498['attributes']:_0x411e23['model'];if(_0x2fcb64['query']['includeAll']){_0x282498[_0xc8a9('0x36')]=[{'all':!![]}];}_0x282498=_[_0xc8a9('0x37')]({},_0x282498,_0x2fcb64[_0xc8a9('0x38')]);return db['ChatProactiveAction']['find'](_0x282498)[_0xc8a9('0x25')](handleEntityNotFound(_0x1716a6,null))[_0xc8a9('0x25')](respondWithResult(_0x1716a6,null))[_0xc8a9('0x39')](handleError(_0x1716a6,null));};exports[_0xc8a9('0x3a')]=function(_0x2ef22c,_0x1cfedf){return db[_0xc8a9('0x2e')][_0xc8a9('0x3a')](_0x2ef22c[_0xc8a9('0x3b')],{})['then'](respondWithResult(_0x1cfedf,0xc9))[_0xc8a9('0x39')](handleError(_0x1cfedf,null));};exports[_0xc8a9('0x24')]=function(_0x1e1615,_0x6f7560){if(_0x1e1615[_0xc8a9('0x3b')]['id']){delete _0x1e1615[_0xc8a9('0x3b')]['id'];}return db['ChatProactiveAction'][_0xc8a9('0x3c')]({'where':{'id':_0x1e1615[_0xc8a9('0x2b')]['id']}})[_0xc8a9('0x25')](handleEntityNotFound(_0x6f7560,null))['then'](saveUpdates(_0x1e1615[_0xc8a9('0x3b')],null))[_0xc8a9('0x25')](respondWithResult(_0x6f7560,null))[_0xc8a9('0x39')](handleError(_0x6f7560,null));};exports[_0xc8a9('0x26')]=function(_0x382bcc,_0x11b14e){return db[_0xc8a9('0x2e')][_0xc8a9('0x3c')]({'where':{'id':_0x382bcc['params']['id']}})[_0xc8a9('0x25')](handleEntityNotFound(_0x11b14e,null))[_0xc8a9('0x25')](removeEntity(_0x11b14e,null))[_0xc8a9('0x39')](handleError(_0x11b14e,null));};
\ No newline at end of file
index 157efd3..ea25151 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2981=['util','moment','request-promise','path','rimraf','./chatProactiveAction.attributes','exports','define','chat_proactive_actions','lodash'];(function(_0x3f0674,_0x4e8dce){var _0x216fd0=function(_0x3a8736){while(--_0x3a8736){_0x3f0674['push'](_0x3f0674['shift']());}};_0x216fd0(++_0x4e8dce);}(_0x2981,0x1f3));var _0x1298=function(_0x52c085,_0x104d1c){_0x52c085=_0x52c085-0x0;var _0x589818=_0x2981[_0x52c085];return _0x589818;};'use strict';var _=require(_0x1298('0x0'));var util=require(_0x1298('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x1298('0x2'));var BPromise=require('bluebird');var rp=require(_0x1298('0x3'));var fs=require('fs');var path=require(_0x1298('0x4'));var rimraf=require(_0x1298('0x5'));var config=require('../../config/environment');var attributes=require(_0x1298('0x6'));module[_0x1298('0x7')]=function(_0x36c9a2,_0x5e39e3){return _0x36c9a2[_0x1298('0x8')]('ChatProactiveAction',attributes,{'tableName':_0x1298('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1cfe=['api','moment','../../config/environment','./chatProactiveAction.attributes','exports','define','chat_proactive_actions','lodash','util','../../config/logger'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x1cfe,0x197));var _0xe1cf=function(_0x56740a,_0x568894){_0x56740a=_0x56740a-0x0;var _0x257144=_0x1cfe[_0x56740a];return _0x257144;};'use strict';var _=require(_0xe1cf('0x0'));var util=require(_0xe1cf('0x1'));var logger=require(_0xe1cf('0x2'))(_0xe1cf('0x3'));var moment=require(_0xe1cf('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xe1cf('0x5'));var attributes=require(_0xe1cf('0x6'));module[_0xe1cf('0x7')]=function(_0x132361,_0x644fa){return _0x132361[_0xe1cf('0x8')]('ChatProactiveAction',attributes,{'tableName':_0xe1cf('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c5fa5a7..5599894 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5305=['rpc','../../config/environment','jayson/promise','http','request','then','info','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatProactiveAction,\x20%s,\x20%s','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x379141,_0x173592){var _0x3cc38d=function(_0x3f75e2){while(--_0x3f75e2){_0x379141['push'](_0x379141['shift']());}};_0x3cc38d(++_0x173592);}(_0x5305,0x177));var _0x5530=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x5305[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x5530('0x0'));var util=require(_0x5530('0x1'));var moment=require(_0x5530('0x2'));var BPromise=require(_0x5530('0x3'));var rs=require(_0x5530('0x4'));var fs=require('fs');var Redis=require(_0x5530('0x5'));var db=require(_0x5530('0x6'))['db'];var utils=require(_0x5530('0x7'));var logger=require(_0x5530('0x8'))(_0x5530('0x9'));var config=require(_0x5530('0xa'));var jayson=require(_0x5530('0xb'));var client=jayson['client'][_0x5530('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x417924,_0x3f67d7,_0x27dcd0){return new BPromise(function(_0x362880,_0x12e6f1){return client[_0x5530('0xd')](_0x417924,_0x27dcd0)[_0x5530('0xe')](function(_0x33f3e7){logger[_0x5530('0xf')]('ChatProactiveAction,\x20%s,\x20%s',_0x3f67d7,'request\x20sent');logger[_0x5530('0x10')](_0x5530('0x11'),_0x3f67d7,_0x5530('0x12'),JSON[_0x5530('0x13')](_0x33f3e7));if(_0x33f3e7[_0x5530('0x14')]){if(_0x33f3e7[_0x5530('0x14')][_0x5530('0x15')]===0x1f4){logger[_0x5530('0x14')](_0x5530('0x16'),_0x3f67d7,_0x33f3e7[_0x5530('0x14')]['message']);return _0x12e6f1(_0x33f3e7[_0x5530('0x14')][_0x5530('0x17')]);}logger[_0x5530('0x14')](_0x5530('0x16'),_0x3f67d7,_0x33f3e7['error'][_0x5530('0x17')]);return _0x362880(_0x33f3e7[_0x5530('0x14')]['message']);}else{logger[_0x5530('0xf')](_0x5530('0x16'),_0x3f67d7,_0x5530('0x12'));_0x362880(_0x33f3e7['result'][_0x5530('0x17')]);}})['catch'](function(_0x4d341f){logger[_0x5530('0x14')](_0x5530('0x16'),_0x3f67d7,_0x4d341f);_0x12e6f1(_0x4d341f);});});}
\ No newline at end of file
+var _0xb1db=['../../config/utils','../../config/logger','rpc','../../config/environment','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0xa31c73,_0x5dff7e){var _0x3ceff4=function(_0x12fdec){while(--_0x12fdec){_0xa31c73['push'](_0xa31c73['shift']());}};_0x3ceff4(++_0x5dff7e);}(_0xb1db,0x1be));var _0xbb1d=function(_0x2d638f,_0x828e1e){_0x2d638f=_0x2d638f-0x0;var _0x5a59ed=_0xb1db[_0x2d638f];return _0x5a59ed;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xbb1d('0x0'));var rs=require(_0xbb1d('0x1'));var fs=require('fs');var Redis=require(_0xbb1d('0x2'));var db=require(_0xbb1d('0x3'))['db'];var utils=require(_0xbb1d('0x4'));var logger=require(_0xbb1d('0x5'))(_0xbb1d('0x6'));var config=require(_0xbb1d('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x217f31,_0x5cf703,_0x2e8562){return new BPromise(function(_0x5f1f0e,_0x443270){return client['request'](_0x217f31,_0x2e8562)['then'](function(_0x1dfb05){logger[_0xbb1d('0x8')](_0xbb1d('0x9'),_0x5cf703,_0xbb1d('0xa'));logger[_0xbb1d('0xb')](_0xbb1d('0xc'),_0x5cf703,_0xbb1d('0xa'),JSON['stringify'](_0x1dfb05));if(_0x1dfb05[_0xbb1d('0xd')]){if(_0x1dfb05[_0xbb1d('0xd')][_0xbb1d('0xe')]===0x1f4){logger[_0xbb1d('0xd')](_0xbb1d('0x9'),_0x5cf703,_0x1dfb05['error'][_0xbb1d('0xf')]);return _0x443270(_0x1dfb05['error'][_0xbb1d('0xf')]);}logger[_0xbb1d('0xd')]('ChatProactiveAction,\x20%s,\x20%s',_0x5cf703,_0x1dfb05[_0xbb1d('0xd')][_0xbb1d('0xf')]);return _0x5f1f0e(_0x1dfb05['error'][_0xbb1d('0xf')]);}else{logger[_0xbb1d('0x8')](_0xbb1d('0x9'),_0x5cf703,'request\x20sent');_0x5f1f0e(_0x1dfb05[_0xbb1d('0x10')][_0xbb1d('0xf')]);}})[_0xbb1d('0x11')](function(_0x4f4ea4){logger[_0xbb1d('0xd')](_0xbb1d('0x9'),_0x5cf703,_0x4f4ea4);_0x443270(_0x4f4ea4);});});}
\ No newline at end of file
index f2ff06f..f108fd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8958=['show','post','put','update','delete','destroy','exports','util','fs-extra','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','/:id','isAuthenticated'];(function(_0x2366a1,_0x97c82e){var _0x1ec915=function(_0x1b8b46){while(--_0x1b8b46){_0x2366a1['push'](_0x2366a1['shift']());}};_0x1ec915(++_0x97c82e);}(_0x8958,0x93));var _0x8895=function(_0x28c94b,_0x19098d){_0x28c94b=_0x28c94b-0x0;var _0x392a76=_0x8958[_0x28c94b];return _0x392a76;};'use strict';var multer=require('multer');var util=require(_0x8895('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x8895('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0x8895('0x2'));var config=require(_0x8895('0x3'));var controller=require(_0x8895('0x4'));router['get'](_0x8895('0x5'),auth[_0x8895('0x6')](),controller[_0x8895('0x7')]);router[_0x8895('0x8')]('/',auth[_0x8895('0x6')](),controller['create']);router[_0x8895('0x9')](_0x8895('0x5'),auth[_0x8895('0x6')](),controller[_0x8895('0xa')]);router[_0x8895('0xb')](_0x8895('0x5'),auth[_0x8895('0x6')](),controller[_0x8895('0xc')]);module[_0x8895('0xd')]=router;
\ No newline at end of file
+var _0xeec6=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','/:id','isAuthenticated','post','create','put','update','delete','exports'];(function(_0x5a0f8a,_0x374487){var _0x1a9380=function(_0x783ef1){while(--_0x783ef1){_0x5a0f8a['push'](_0x5a0f8a['shift']());}};_0x1a9380(++_0x374487);}(_0xeec6,0x1c2));var _0x6eec=function(_0xa72cf,_0x24a05c){_0xa72cf=_0xa72cf-0x0;var _0x263735=_0xeec6[_0xa72cf];return _0x263735;};'use strict';var multer=require(_0x6eec('0x0'));var util=require(_0x6eec('0x1'));var path=require(_0x6eec('0x2'));var timeout=require(_0x6eec('0x3'));var express=require('express');var router=express[_0x6eec('0x4')]();var fs_extra=require(_0x6eec('0x5'));var auth=require(_0x6eec('0x6'));var interaction=require(_0x6eec('0x7'));var config=require(_0x6eec('0x8'));var controller=require(_0x6eec('0x9'));router['get'](_0x6eec('0xa'),auth[_0x6eec('0xb')](),controller['show']);router[_0x6eec('0xc')]('/',auth[_0x6eec('0xb')](),controller[_0x6eec('0xd')]);router[_0x6eec('0xe')]('/:id',auth[_0x6eec('0xb')](),controller[_0x6eec('0xf')]);router[_0x6eec('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x6eec('0x11')]=router;
\ No newline at end of file
index 18e2269..2232a33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf424=['name','ENUM','beepall','sequelize','exports','STRING'];(function(_0x1034bb,_0x4e20b3){var _0x453fdb=function(_0x455356){while(--_0x455356){_0x1034bb['push'](_0x1034bb['shift']());}};_0x453fdb(++_0x4e20b3);}(_0xf424,0x135));var _0x4f42=function(_0x230daa,_0x2d4dd0){_0x230daa=_0x230daa-0x0;var _0x210dc5=_0xf424[_0x230daa];return _0x210dc5;};'use strict';var Sequelize=require(_0x4f42('0x0'));module[_0x4f42('0x1')]={'name':{'type':Sequelize[_0x4f42('0x2')],'unique':_0x4f42('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x4f42('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x4f42('0x4')]('rrmemory',_0x4f42('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0xaa1c=['rrmemory','beepall','roundrobin','exports','STRING','name','INTEGER'];(function(_0x556c15,_0x113ee7){var _0x35cb5c=function(_0x183b1a){while(--_0x183b1a){_0x556c15['push'](_0x556c15['shift']());}};_0x35cb5c(++_0x113ee7);}(_0xaa1c,0x9d));var _0xcaa1=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xaa1c[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require('sequelize');module[_0xcaa1('0x0')]={'name':{'type':Sequelize[_0xcaa1('0x1')],'unique':_0xcaa1('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xcaa1('0x1')]},'timeout':{'type':Sequelize[_0xcaa1('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xcaa1('0x4'),_0xcaa1('0x5'),_0xcaa1('0x6'))}};
\ No newline at end of file
index 8589546..3c39027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4247=['ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','QueryTypes','every','TeamId','includes','all','compact','value','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','spread','getAgents','eml-format','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/environment','redis','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','status','end','count','offset','limit','set','Content-Range','apply','reject','update','destroy','get','ChatQueues','sendStatus','stack','name','send','index','ChatQueue','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','include','findAll','catch','show','params','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','rawAttributes','ChatQueueId','UserId','chatPause','updatedAt','createdAt','format','%s/%s','getTeams','Team','ids','User','Agents','online','voicePause','interface','flatMap','sequelize','transaction','addTeams','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','field','from','join','user_has_teams'];(function(_0x5dacd0,_0x51985a){var _0x31a410=function(_0x4a4e50){while(--_0x4a4e50){_0x5dacd0['push'](_0x5dacd0['shift']());}};_0x31a410(++_0x51985a);}(_0x4247,0x135));var _0x7424=function(_0x4c2e56,_0x579342){_0x4c2e56=_0x4c2e56-0x0;var _0x278c8f=_0x4247[_0x4c2e56];return _0x278c8f;};'use strict';var emlformat=require(_0x7424('0x0'));var rimraf=require(_0x7424('0x1'));var zipdir=require(_0x7424('0x2'));var jsonpatch=require(_0x7424('0x3'));var rp=require('request-promise');var moment=require(_0x7424('0x4'));var BPromise=require(_0x7424('0x5'));var Mustache=require(_0x7424('0x6'));var util=require(_0x7424('0x7'));var path=require(_0x7424('0x8'));var sox=require(_0x7424('0x9'));var csv=require(_0x7424('0xa'));var ejs=require(_0x7424('0xb'));var fs=require('fs');var fs_extra=require(_0x7424('0xc'));var _=require(_0x7424('0xd'));var squel=require(_0x7424('0xe'));var crypto=require('crypto');var jsforce=require(_0x7424('0xf'));var deskjs=require(_0x7424('0x10'));var toCsv=require(_0x7424('0xa'));var querystring=require(_0x7424('0x11'));var Papa=require(_0x7424('0x12'));var Redis=require(_0x7424('0x13'));var authService=require(_0x7424('0x14'));var qs=require(_0x7424('0x15'));var as=require(_0x7424('0x16'));var hardwareService=require(_0x7424('0x17'));var logger=require(_0x7424('0x18'))(_0x7424('0x19'));var utils=require('../../config/utils');var config=require(_0x7424('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x7424('0x1b')],{'host':_0x7424('0x1c'),'port':0x18eb});var socket=require(_0x7424('0x1d'))(new Redis(config['redis']));require(_0x7424('0x1e'))[_0x7424('0x1f')](socket);var jayson=require(_0x7424('0x20'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x15d078,_0x266369,_0x6e2d22,_0x409495){return new BPromise(function(_0x560aa0,_0x3d17cb){var _0x463f49=_0x409495||client;return _0x463f49[_0x7424('0x21')](_0x15d078,_0x6e2d22)[_0x7424('0x22')](function(_0xe6e637){logger[_0x7424('0x23')](_0x7424('0x24'),_0x266369,_0x7424('0x25'));logger[_0x7424('0x26')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x266369,_0x7424('0x25'),JSON[_0x7424('0x27')](_0xe6e637));if(_0xe6e637[_0x7424('0x28')]){if(_0xe6e637[_0x7424('0x28')][_0x7424('0x29')]===0x1f4){logger['error']('ChatQueue,\x20%s,\x20%s',_0x266369,_0xe6e637[_0x7424('0x28')][_0x7424('0x2a')]);return _0x3d17cb(_0xe6e637['error'][_0x7424('0x2a')]);}logger[_0x7424('0x28')](_0x7424('0x24'),_0x266369,_0xe6e637[_0x7424('0x28')][_0x7424('0x2a')]);return _0x560aa0(_0xe6e637['error'][_0x7424('0x2a')]);}else{logger[_0x7424('0x23')](_0x7424('0x24'),_0x266369,_0x7424('0x25'));_0x560aa0(_0xe6e637['result']['message']);}})['catch'](function(_0x35b94c){logger[_0x7424('0x28')](_0x7424('0x24'),_0x266369,_0x35b94c);_0x3d17cb(_0x35b94c);});});}function respondWithStatusCode(_0x3aafaa,_0x2c397c){_0x2c397c=_0x2c397c||0xcc;return function(_0x4aabd0){if(_0x4aabd0){return _0x3aafaa['sendStatus'](_0x2c397c);}return _0x3aafaa[_0x7424('0x2b')](_0x2c397c)[_0x7424('0x2c')]();};}function respondWithResult(_0x42e175,_0x43b6fa){_0x43b6fa=_0x43b6fa||0xc8;return function(_0x1f39a4){if(_0x1f39a4){return _0x42e175['status'](_0x43b6fa)['json'](_0x1f39a4);}};}function respondWithFilteredResult(_0x5c8a29,_0x48ff3a){return function(_0x408537){if(_0x408537){var _0x40f59a=typeof _0x48ff3a['offset']==='undefined'&&typeof _0x48ff3a['limit']==='undefined';var _0x208e54=_0x408537[_0x7424('0x2d')];var _0x281637=_0x40f59a?0x0:_0x48ff3a[_0x7424('0x2e')];var _0x49fcf8=_0x40f59a?_0x408537['count']:_0x48ff3a[_0x7424('0x2e')]+_0x48ff3a[_0x7424('0x2f')];var _0x443dc8;if(_0x49fcf8>=_0x208e54){_0x49fcf8=_0x208e54;_0x443dc8=0xc8;}else{_0x443dc8=0xce;}_0x5c8a29[_0x7424('0x2b')](_0x443dc8);return _0x5c8a29[_0x7424('0x30')](_0x7424('0x31'),_0x281637+'-'+_0x49fcf8+'/'+_0x208e54)['json'](_0x408537);}return null;};}function patchUpdates(_0x5be192){return function(_0x227fc7){try{jsonpatch[_0x7424('0x32')](_0x227fc7,_0x5be192,!![]);}catch(_0x15a9b1){return BPromise[_0x7424('0x33')](_0x15a9b1);}return _0x227fc7['save']();};}function saveUpdates(_0x11c99b,_0x339bf0){return function(_0x4fae1f){if(_0x4fae1f){return _0x4fae1f[_0x7424('0x34')](_0x11c99b)[_0x7424('0x22')](function(_0x30adb3){return _0x30adb3;});}return null;};}function removeEntity(_0x4838bc,_0x3d8d45){return function(_0x1762df){if(_0x1762df){return _0x1762df[_0x7424('0x35')]()[_0x7424('0x22')](function(){var _0x3666d1=_0x1762df[_0x7424('0x36')]({'plain':!![]});var _0x43c2e8=_0x7424('0x37');return db['UserProfileResource']['destroy']({'where':{'type':_0x43c2e8,'resourceId':_0x3666d1['id']}})['then'](function(){return _0x1762df;});})[_0x7424('0x22')](function(){_0x4838bc[_0x7424('0x2b')](0xcc)[_0x7424('0x2c')]();});}};}function handleEntityNotFound(_0x11aab0,_0x154f96){return function(_0x1d568c){if(!_0x1d568c){_0x11aab0[_0x7424('0x38')](0x194);}return _0x1d568c;};}function handleError(_0x275c5f,_0x2f1a43){_0x2f1a43=_0x2f1a43||0x1f4;return function(_0x1d6218){logger['error'](_0x1d6218[_0x7424('0x39')]);if(_0x1d6218[_0x7424('0x3a')]){delete _0x1d6218[_0x7424('0x3a')];}_0x275c5f[_0x7424('0x2b')](_0x2f1a43)[_0x7424('0x3b')](_0x1d6218);};}exports[_0x7424('0x3c')]=function(_0xf6fad0,_0x51d34e){var _0x2e37db={},_0x492ac7={},_0x26da5d={'count':0x0,'rows':[]};var _0x3bb9f5=_['map'](db[_0x7424('0x3d')]['rawAttributes'],function(_0x19e94b){return{'name':_0x19e94b['fieldName'],'type':_0x19e94b['type'][_0x7424('0x3e')]};});_0x492ac7['model']=_[_0x7424('0x3f')](_0x3bb9f5,_0x7424('0x3a'));_0x492ac7[_0x7424('0x40')]=_[_0x7424('0x41')](_0xf6fad0[_0x7424('0x40')]);_0x492ac7[_0x7424('0x42')]=_[_0x7424('0x43')](_0x492ac7[_0x7424('0x44')],_0x492ac7[_0x7424('0x40')]);_0x2e37db[_0x7424('0x45')]=_['intersection'](_0x492ac7[_0x7424('0x44')],qs[_0x7424('0x46')](_0xf6fad0[_0x7424('0x40')][_0x7424('0x46')]));_0x2e37db['attributes']=_0x2e37db['attributes'][_0x7424('0x47')]?_0x2e37db['attributes']:_0x492ac7['model'];if(!_0xf6fad0['query'][_0x7424('0x48')](_0x7424('0x49'))){_0x2e37db[_0x7424('0x2f')]=qs[_0x7424('0x2f')](_0xf6fad0[_0x7424('0x40')][_0x7424('0x2f')]);_0x2e37db[_0x7424('0x2e')]=qs[_0x7424('0x2e')](_0xf6fad0[_0x7424('0x40')][_0x7424('0x2e')]);}_0x2e37db[_0x7424('0x4a')]=qs['sort'](_0xf6fad0[_0x7424('0x40')][_0x7424('0x4b')]);_0x2e37db[_0x7424('0x4c')]=qs[_0x7424('0x42')](_[_0x7424('0x4d')](_0xf6fad0[_0x7424('0x40')],_0x492ac7[_0x7424('0x42')]),_0x3bb9f5);if(_0xf6fad0[_0x7424('0x40')][_0x7424('0x4e')]){_0x2e37db[_0x7424('0x4c')]=_['merge'](_0x2e37db[_0x7424('0x4c')],{'$or':_[_0x7424('0x3f')](_0x3bb9f5,function(_0x144016){if(_0x144016[_0x7424('0x4f')]!==_0x7424('0x50')){var _0x3bd5d3={};_0x3bd5d3[_0x144016[_0x7424('0x3a')]]={'$like':'%'+_0xf6fad0[_0x7424('0x40')]['filter']+'%'};return _0x3bd5d3;}})});}_0x2e37db=_[_0x7424('0x51')]({},_0x2e37db,_0xf6fad0[_0x7424('0x52')]);var _0x2a4ac4={'where':_0x2e37db[_0x7424('0x4c')]};return db['ChatQueue']['count'](_0x2a4ac4)[_0x7424('0x22')](function(_0x54fe01){_0x26da5d[_0x7424('0x2d')]=_0x54fe01;if(_0xf6fad0[_0x7424('0x40')]['includeAll']){_0x2e37db[_0x7424('0x53')]=[{'all':!![]}];}return db[_0x7424('0x3d')][_0x7424('0x54')](_0x2e37db);})[_0x7424('0x22')](function(_0x5c72f6){_0x26da5d['rows']=_0x5c72f6;return _0x26da5d;})[_0x7424('0x22')](respondWithFilteredResult(_0x51d34e,_0x2e37db))[_0x7424('0x55')](handleError(_0x51d34e,null));};exports[_0x7424('0x56')]=function(_0x257092,_0x1b0c96){var _0x237390={'raw':!![],'where':{'id':_0x257092[_0x7424('0x57')]['id']}},_0x54a747={};_0x54a747[_0x7424('0x44')]=_[_0x7424('0x41')](db[_0x7424('0x3d')]['rawAttributes']);_0x54a747[_0x7424('0x40')]=_['keys'](_0x257092[_0x7424('0x40')]);_0x54a747[_0x7424('0x42')]=_[_0x7424('0x43')](_0x54a747[_0x7424('0x44')],_0x54a747[_0x7424('0x40')]);_0x237390[_0x7424('0x45')]=_[_0x7424('0x43')](_0x54a747[_0x7424('0x44')],qs[_0x7424('0x46')](_0x257092[_0x7424('0x40')][_0x7424('0x46')]));_0x237390[_0x7424('0x45')]=_0x237390['attributes'][_0x7424('0x47')]?_0x237390[_0x7424('0x45')]:_0x54a747[_0x7424('0x44')];if(_0x257092[_0x7424('0x40')][_0x7424('0x58')]){_0x237390['include']=[{'all':!![]}];}_0x237390=_[_0x7424('0x51')]({},_0x237390,_0x257092[_0x7424('0x52')]);return db[_0x7424('0x3d')][_0x7424('0x59')](_0x237390)[_0x7424('0x22')](handleEntityNotFound(_0x1b0c96,null))[_0x7424('0x22')](respondWithResult(_0x1b0c96,null))[_0x7424('0x55')](handleError(_0x1b0c96,null));};exports['create']=function(_0x2fc319,_0x1cf878){return db[_0x7424('0x3d')][_0x7424('0x5a')](_0x2fc319['body'],{})[_0x7424('0x22')](function(_0x5994ea){var _0xd9752a=_0x2fc319[_0x7424('0x5b')][_0x7424('0x36')]({'plain':!![]});if(!_0xd9752a)throw new Error(_0x7424('0x5c'));if(_0xd9752a['role']===_0x7424('0x5b')){var _0x3d2710=_0x5994ea['get']({'plain':!![]});var _0x3cd075=_0x7424('0x37');return db[_0x7424('0x5d')]['find']({'where':{'name':_0x3cd075,'userProfileId':_0xd9752a[_0x7424('0x5e')]},'raw':!![]})[_0x7424('0x22')](function(_0x3f6cac){if(_0x3f6cac&&_0x3f6cac['autoAssociation']===0x0){return db['UserProfileResource'][_0x7424('0x5a')]({'name':_0x3d2710[_0x7424('0x3a')],'resourceId':_0x3d2710['id'],'type':_0x3f6cac[_0x7424('0x3a')],'sectionId':_0x3f6cac['id']},{})[_0x7424('0x22')](function(){return _0x5994ea;});}else{return _0x5994ea;}})['catch'](function(_0x3b2fb6){logger['error'](_0x7424('0x5f'),_0x3b2fb6);throw _0x3b2fb6;});}return _0x5994ea;})['then'](respondWithResult(_0x1cf878,0xc9))[_0x7424('0x55')](handleError(_0x1cf878,null));};exports[_0x7424('0x34')]=function(_0x19dd83,_0x1421ac){if(_0x19dd83[_0x7424('0x60')]['id']){delete _0x19dd83[_0x7424('0x60')]['id'];}return db[_0x7424('0x3d')][_0x7424('0x59')]({'where':{'id':_0x19dd83[_0x7424('0x57')]['id']}})[_0x7424('0x22')](handleEntityNotFound(_0x1421ac,null))['then'](saveUpdates(_0x19dd83[_0x7424('0x60')],null))[_0x7424('0x22')](respondWithResult(_0x1421ac,null))[_0x7424('0x55')](handleError(_0x1421ac,null));};exports[_0x7424('0x35')]=function(_0x318289,_0x1657e4){return db['ChatQueue'][_0x7424('0x59')]({'where':{'id':_0x318289['params']['id']}})[_0x7424('0x22')](handleEntityNotFound(_0x1657e4,null))['then'](removeEntity(_0x1657e4,null))[_0x7424('0x55')](handleError(_0x1657e4,null));};exports[_0x7424('0x61')]=function(_0x3ccd75,_0x2952a3){return db[_0x7424('0x3d')]['describe']()[_0x7424('0x22')](respondWithResult(_0x2952a3,null))[_0x7424('0x55')](handleError(_0x2952a3,null));};exports[_0x7424('0x62')]=function(_0xa00a3,_0x22541b,_0x48b0a3){var _0x5f3305={'raw':!![],'where':{}},_0x39d17e={},_0x1160be;return db[_0x7424('0x3d')][_0x7424('0x63')]({'where':{'id':_0xa00a3[_0x7424('0x57')]['id']}})[_0x7424('0x22')](handleEntityNotFound(_0x22541b,null))[_0x7424('0x22')](function(_0x46a4f1){if(_0x46a4f1){_0x1160be=_0x46a4f1[_0x7424('0x36')]({'plain':!![]});_0x39d17e[_0x7424('0x44')]=_[_0x7424('0x41')](db['UserChatQueue'][_0x7424('0x64')]);_0x39d17e[_0x7424('0x40')]=_[_0x7424('0x41')](_0xa00a3[_0x7424('0x40')]);_0x39d17e[_0x7424('0x42')]=_['intersection'](_0x39d17e[_0x7424('0x44')],_0x39d17e['query']);_0x5f3305['attributes']=_[_0x7424('0x43')](_0x39d17e['model'],qs[_0x7424('0x46')](_0xa00a3[_0x7424('0x40')][_0x7424('0x46')]));_0x5f3305['attributes']=_0x5f3305['attributes'][_0x7424('0x47')]?_0x5f3305[_0x7424('0x45')]:_0x39d17e['model'];if(!_0xa00a3[_0x7424('0x40')][_0x7424('0x48')]('nolimit')){_0x5f3305['limit']=qs[_0x7424('0x2f')](_0xa00a3[_0x7424('0x40')][_0x7424('0x2f')]);_0x5f3305[_0x7424('0x2e')]=qs[_0x7424('0x2e')](_0xa00a3[_0x7424('0x40')][_0x7424('0x2e')]);}_0x5f3305['order']=qs[_0x7424('0x4b')](_0xa00a3[_0x7424('0x40')][_0x7424('0x4b')]);_0x5f3305[_0x7424('0x4c')]=qs[_0x7424('0x42')](_[_0x7424('0x4d')](_0xa00a3[_0x7424('0x40')],_0x39d17e['filters']));_0x5f3305[_0x7424('0x4c')][_0x7424('0x65')]=_0x46a4f1['id'];if(_0xa00a3[_0x7424('0x40')][_0x7424('0x4e')]){_0x5f3305['where']=_[_0x7424('0x51')](_0x5f3305['where'],{'$or':_[_0x7424('0x3f')](_0x5f3305[_0x7424('0x45')],function(_0x185087){var _0x11caf={};_0x11caf[_0x185087]={'$like':'%'+_0xa00a3[_0x7424('0x40')][_0x7424('0x4e')]+'%'};return _0x11caf;})});}_0x5f3305=_[_0x7424('0x51')]({},_0x5f3305,_0xa00a3[_0x7424('0x52')]);return db['UserChatQueue'][_0x7424('0x54')](_0x5f3305);}})['then'](function(_0x372da5){if(_0x372da5){return db['User']['findAndCountAll']({'where':{'id':_[_0x7424('0x3f')](_0x372da5,_0x7424('0x66')),'role':'agent'},'attributes':['id',_0x7424('0x3a'),_0x7424('0x67'),_0x7424('0x68'),_0x7424('0x69')]});}})[_0x7424('0x22')](function(_0x51d7fa){if(_0x51d7fa){return{'count':_0x51d7fa[_0x7424('0x2d')],'rows':_[_0x7424('0x3f')](_0x51d7fa['rows'],function(_0x393004){return{'membername':_0x393004['name'],'UserId':_0x393004['id'],'queue_name':_0x1160be[_0x7424('0x3a')],'ChatQueueId':_0x1160be['id'],'interface':util[_0x7424('0x6a')](_0x7424('0x6b'),'SIP',_0x393004['name']),'penalty':0x0,'paused':_0x393004[_0x7424('0x67')],'createdAt':_0x393004['createdAt'],'updatedAt':_0x393004['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x7424('0x22')](respondWithFilteredResult(_0x22541b,_0x5f3305))[_0x7424('0x55')](handleError(_0x22541b,null));};exports[_0x7424('0x6c')]=function(_0x5882ff,_0x56570c,_0x5624fe){var _0x34bf66={};var _0x403749={};var _0x4f71fb;var _0xc138c2;return db[_0x7424('0x3d')][_0x7424('0x63')]({'where':{'id':_0x5882ff[_0x7424('0x57')]['id']}})[_0x7424('0x22')](handleEntityNotFound(_0x56570c,null))[_0x7424('0x22')](function(_0x51340e){if(_0x51340e){_0x4f71fb=_0x51340e;_0x403749[_0x7424('0x44')]=_['keys'](db[_0x7424('0x6d')][_0x7424('0x64')]);_0x403749[_0x7424('0x40')]=_[_0x7424('0x41')](_0x5882ff[_0x7424('0x40')]);_0x403749[_0x7424('0x42')]=_[_0x7424('0x43')](_0x403749[_0x7424('0x44')],_0x403749[_0x7424('0x40')]);_0x34bf66[_0x7424('0x45')]=_['intersection'](_0x403749['model'],qs[_0x7424('0x46')](_0x5882ff['query'][_0x7424('0x46')]));_0x34bf66[_0x7424('0x45')]=_0x34bf66[_0x7424('0x45')][_0x7424('0x47')]?_0x34bf66[_0x7424('0x45')]:_0x403749[_0x7424('0x44')];_0x34bf66[_0x7424('0x4a')]=qs[_0x7424('0x4b')](_0x5882ff['query'][_0x7424('0x4b')]);_0x34bf66['where']=qs['filters'](_[_0x7424('0x4d')](_0x5882ff['query'],_0x403749[_0x7424('0x42')]));if(_0x5882ff['query']['filter']){_0x34bf66[_0x7424('0x4c')]=_[_0x7424('0x51')](_0x34bf66[_0x7424('0x4c')],{'$or':_[_0x7424('0x3f')](_0x34bf66[_0x7424('0x45')],function(_0x4947cf){var _0x7c2ec1={};_0x7c2ec1[_0x4947cf]={'$like':'%'+_0x5882ff[_0x7424('0x40')][_0x7424('0x4e')]+'%'};return _0x7c2ec1;})});}_0x34bf66=_['merge']({},_0x34bf66,_0x5882ff[_0x7424('0x52')]);return _0x4f71fb[_0x7424('0x6c')](_0x34bf66);}})[_0x7424('0x22')](function(_0x5ee994){if(_0x5ee994){_0xc138c2=_0x5ee994[_0x7424('0x47')];if(!_0x5882ff[_0x7424('0x40')]['hasOwnProperty'](_0x7424('0x49'))){_0x34bf66[_0x7424('0x2f')]=qs[_0x7424('0x2f')](_0x5882ff[_0x7424('0x40')][_0x7424('0x2f')]);_0x34bf66[_0x7424('0x2e')]=qs[_0x7424('0x2e')](_0x5882ff[_0x7424('0x40')][_0x7424('0x2e')]);}return _0x4f71fb[_0x7424('0x6c')](_0x34bf66);}})[_0x7424('0x22')](function(_0x52f042){if(_0x52f042){return _0x52f042?{'count':_0xc138c2,'rows':_0x52f042}:null;}})[_0x7424('0x22')](respondWithResult(_0x56570c,null))['catch'](handleError(_0x56570c,null));};exports['addTeams']=function(_0x53761e,_0x243290,_0x2517c2){var _0x466255=_0x53761e[_0x7424('0x60')][_0x7424('0x6e')];return db[_0x7424('0x6d')][_0x7424('0x54')]({'where':{'id':_0x466255},'attributes':['id'],'include':[{'model':db[_0x7424('0x6f')],'as':_0x7424('0x70'),'attributes':['id','name',_0x7424('0x71'),_0x7424('0x72'),_0x7424('0x73')],'raw':!![]}]})[_0x7424('0x22')](function(_0x5f1429){if(_0x5f1429){var _0x584f2e=_[_0x7424('0x74')](_0x5f1429,function(_0x4d85ab){var _0x8f65ae=_0x4d85ab['get']({'plain':!![]});return _0x8f65ae[_0x7424('0x70')];});return db[_0x7424('0x3d')][_0x7424('0x59')]({'where':{'id':_0x53761e['params']['id']}})['then'](function(_0x531ce6){return db[_0x7424('0x75')][_0x7424('0x76')](function(_0x38775e){return _0x531ce6[_0x7424('0x77')](_0x466255,{'transaction':_0x38775e})[_0x7424('0x22')](function(){return BPromise['each'](_0x584f2e,function(_0x81508f){return db['UserChatQueue'][_0x7424('0x78')]({'where':{'UserId':_0x81508f['id'],'ChatQueueId':_0x53761e['params']['id']},'transaction':_0x38775e});});})[_0x7424('0x22')](function(){_0x584f2e[_0x7424('0x79')](function(_0x5f418b){socket[_0x7424('0x7a')](_0x7424('0x7b'),{'UserId':_0x5f418b['id'],'ChatQueueId':_0x531ce6['id']});});});});});}})[_0x7424('0x22')](respondWithStatusCode(_0x243290,null))['catch'](handleError(_0x243290,null));};exports[_0x7424('0x7c')]=function(_0x321f1c,_0x23f84b,_0xc12445){return db['Team'][_0x7424('0x54')]({'where':{'id':_0x321f1c[_0x7424('0x40')][_0x7424('0x6e')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x7424('0x70'),'attributes':['id'],'raw':!![]}]})[_0x7424('0x22')](handleEntityNotFound(_0x23f84b,null))[_0x7424('0x22')](function(_0x2171ca){var _0x4bfc1e=_['map'](_0x2171ca,'id');var _0x2cfbb7=[];var _0x1832da=[];var _0x1fa8ce=squel['select']();_0x1fa8ce[_0x7424('0x7d')]('tq.TeamId')[_0x7424('0x7e')]('team_has_chat_queues','tq')[_0x7424('0x7f')](_0x7424('0x80'),'ut',_0x7424('0x81'))['where'](_0x7424('0x82'),_0x321f1c[_0x7424('0x57')]['id']);for(var _0x1f3930=0x0;_0x1f3930<_0x2171ca[_0x7424('0x47')];_0x1f3930+=0x1){let _0x5397af=_0x2171ca[_0x1f3930];for(var _0x32f511=0x0;_0x32f511<_0x5397af['Agents'][_0x7424('0x47')];_0x32f511+=0x1){let _0x3374d3=_0x5397af[_0x7424('0x70')][_0x32f511];var _0x5c7ddb=_0x1fa8ce[_0x7424('0x83')]();_0x5c7ddb['where']('ut.UserId\x20=\x20?',_0x3374d3['id']);_0x1832da['push'](db[_0x7424('0x75')][_0x7424('0x40')](_0x5c7ddb['toString'](),{'type':db[_0x7424('0x75')][_0x7424('0x84')]['SELECT']})[_0x7424('0x22')](function(_0x2e32ac){if(_0x2e32ac[_0x7424('0x47')]===0x1){return _0x3374d3['id'];}else{var _0x4edd58=_[_0x7424('0x85')](_[_0x7424('0x3f')](_0x2e32ac,_0x7424('0x86')),function(_0xd5dd5f){return _[_0x7424('0x87')](_0x4bfc1e,_0xd5dd5f);});if(_0x4edd58){return _0x3374d3['id'];}}}));}}return BPromise[_0x7424('0x88')](_0x1832da)[_0x7424('0x22')](function(_0x53ffce){_0x2cfbb7=_(_0x2cfbb7)['union'](_0x53ffce)[_0x7424('0x89')]()[_0x7424('0x8a')]();return db[_0x7424('0x3d')][_0x7424('0x59')]({'where':{'id':_0x321f1c[_0x7424('0x57')]['id']}})[_0x7424('0x22')](function(_0x2aad75){return db[_0x7424('0x75')][_0x7424('0x76')](function(_0x5e1073){return _0x2aad75[_0x7424('0x7c')](_0x321f1c['query'][_0x7424('0x6e')],{'transaction':_0x5e1073})['then'](function(){if(!_[_0x7424('0x8b')](_0x2cfbb7)){return _0x2aad75[_0x7424('0x8c')](_0x2cfbb7,{'transaction':_0x5e1073});}})[_0x7424('0x22')](function(){_0x2cfbb7[_0x7424('0x79')](function(_0x4c8a94){socket[_0x7424('0x7a')](_0x7424('0x8d'),{'UserId':_0x4c8a94,'ChatQueueId':_0x2aad75['id']});});});});});});})[_0x7424('0x22')](respondWithStatusCode(_0x23f84b,null))[_0x7424('0x55')](handleError(_0x23f84b,null));};exports[_0x7424('0x8e')]=function(_0x24a9a1,_0x33255a,_0x1aaa81){return db[_0x7424('0x3d')][_0x7424('0x59')]({'where':{'id':_0x24a9a1[_0x7424('0x57')]['id']}})['then'](handleEntityNotFound(_0x33255a,null))[_0x7424('0x22')](function(_0x528bf6){if(_0x528bf6){return _0x528bf6[_0x7424('0x8e')](_0x24a9a1[_0x7424('0x60')][_0x7424('0x6e')],_[_0x7424('0x8f')](_0x24a9a1[_0x7424('0x60')],[_0x7424('0x6e'),'id'])||{})[_0x7424('0x90')](function(_0x5daa90){for(var _0x3a9dbb=0x0;_0x3a9dbb<_0x24a9a1[_0x7424('0x60')][_0x7424('0x6e')][_0x7424('0x47')];_0x3a9dbb+=0x1){socket[_0x7424('0x7a')](_0x7424('0x7b'),{'UserId':Number(_0x24a9a1['body'][_0x7424('0x6e')][_0x3a9dbb]),'ChatQueueId':Number(_0x24a9a1['params']['id'])});}return _0x5daa90;});}})[_0x7424('0x22')](respondWithResult(_0x33255a,null))[_0x7424('0x55')](handleError(_0x33255a,null));};exports[_0x7424('0x8c')]=function(_0x3c2004,_0x6b66d2,_0x15089e){return db['ChatQueue'][_0x7424('0x59')]({'where':{'id':_0x3c2004[_0x7424('0x57')]['id']}})[_0x7424('0x22')](handleEntityNotFound(_0x6b66d2,null))[_0x7424('0x22')](function(_0x3ce994){if(_0x3ce994){return _0x3ce994['removeAgents'](_0x3c2004['query'][_0x7424('0x6e')])[_0x7424('0x22')](function(){if(_['isArray'](_0x3c2004['query'][_0x7424('0x6e')])){for(var _0x2d0919=0x0;_0x2d0919<_0x3c2004[_0x7424('0x40')][_0x7424('0x6e')][_0x7424('0x47')];_0x2d0919+=0x1){socket['emit'](_0x7424('0x8d'),{'UserId':Number(_0x3c2004[_0x7424('0x40')]['ids'][_0x2d0919]),'ChatQueueId':Number(_0x3c2004[_0x7424('0x57')]['id'])});}}else{socket[_0x7424('0x7a')](_0x7424('0x8d'),{'UserId':Number(_0x3c2004[_0x7424('0x40')][_0x7424('0x6e')]),'ChatQueueId':Number(_0x3c2004[_0x7424('0x57')]['id'])});}});}})[_0x7424('0x22')](respondWithStatusCode(_0x6b66d2,null))[_0x7424('0x55')](handleError(_0x6b66d2,null));};exports[_0x7424('0x91')]=function(_0x49e937,_0x54b8e9,_0x4ca25a){var _0x59db7d={};var _0x38bb3f={};var _0x5028c3;var _0x302f98;return db[_0x7424('0x3d')][_0x7424('0x63')]({'where':{'id':_0x49e937['params']['id']}})[_0x7424('0x22')](handleEntityNotFound(_0x54b8e9,null))[_0x7424('0x22')](function(_0x2615ef){if(_0x2615ef){_0x5028c3=_0x2615ef;_0x38bb3f[_0x7424('0x44')]=_[_0x7424('0x41')](db['User']['rawAttributes']);_0x38bb3f[_0x7424('0x40')]=_[_0x7424('0x41')](_0x49e937['query']);_0x38bb3f[_0x7424('0x42')]=_[_0x7424('0x43')](_0x38bb3f[_0x7424('0x44')],_0x38bb3f[_0x7424('0x40')]);_0x59db7d[_0x7424('0x45')]=_[_0x7424('0x43')](_0x38bb3f[_0x7424('0x44')],qs[_0x7424('0x46')](_0x49e937[_0x7424('0x40')][_0x7424('0x46')]));_0x59db7d['attributes']=_0x59db7d[_0x7424('0x45')][_0x7424('0x47')]?_0x59db7d['attributes']:_0x38bb3f['model'];_0x59db7d['order']=qs[_0x7424('0x4b')](_0x49e937[_0x7424('0x40')]['sort']);_0x59db7d[_0x7424('0x4c')]=qs[_0x7424('0x42')](_[_0x7424('0x4d')](_0x49e937[_0x7424('0x40')],_0x38bb3f[_0x7424('0x42')]));if(_0x49e937[_0x7424('0x40')]['filter']){_0x59db7d[_0x7424('0x4c')]=_[_0x7424('0x51')](_0x59db7d[_0x7424('0x4c')],{'$or':_[_0x7424('0x3f')](_0x59db7d[_0x7424('0x45')],function(_0x47ee6a){var _0x15a2ee={};_0x15a2ee[_0x47ee6a]={'$like':'%'+_0x49e937[_0x7424('0x40')][_0x7424('0x4e')]+'%'};return _0x15a2ee;})});}_0x59db7d=_['merge']({},_0x59db7d,_0x49e937[_0x7424('0x52')]);return _0x5028c3[_0x7424('0x91')](_0x59db7d);}})[_0x7424('0x22')](function(_0xaa03f7){if(_0xaa03f7){_0x302f98=_0xaa03f7['length'];if(!_0x49e937[_0x7424('0x40')][_0x7424('0x48')](_0x7424('0x49'))){_0x59db7d['limit']=qs[_0x7424('0x2f')](_0x49e937[_0x7424('0x40')][_0x7424('0x2f')]);_0x59db7d[_0x7424('0x2e')]=qs[_0x7424('0x2e')](_0x49e937[_0x7424('0x40')]['offset']);}return _0x5028c3[_0x7424('0x91')](_0x59db7d);}})[_0x7424('0x22')](function(_0x2a9c15){if(_0x2a9c15){return _0x2a9c15?{'count':_0x302f98,'rows':_0x2a9c15}:null;}})[_0x7424('0x22')](respondWithResult(_0x54b8e9,null))[_0x7424('0x55')](handleError(_0x54b8e9,null));};
\ No newline at end of file
+var _0xbc2c=['type','key','filters','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','show','keys','include','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','find','userProfileId','UserProfileResource','params','describe','getMembers','UserChatQueue','User','findAndCountAll','UserId','chatPause','updatedAt','%s/%s','createdAt','getTeams','findOne','ids','Team','Agents','online','interface','flatMap','sequelize','addTeams','emit','userChatQueue:save','tq.TeamId','from','join','user_has_teams','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','all','union','compact','value','transaction','removeTeams','isEmpty','forEach','userChatQueue:remove','omit','removeAgents','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','register','jayson/promise','client','http','request','debug','request\x20sent','stringify','error','ChatQueue,\x20%s,\x20%s','message','info','result','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','ChatQueues','stack','name','send','index','map','ChatQueue','rawAttributes','fieldName'];(function(_0x1be713,_0xd9b77b){var _0x1895d1=function(_0x1251f7){while(--_0x1251f7){_0x1be713['push'](_0x1be713['shift']());}};_0x1895d1(++_0xd9b77b);}(_0xbc2c,0xe8));var _0xcbc2=function(_0x1e758e,_0x157fa3){_0x1e758e=_0x1e758e-0x0;var _0x23840b=_0xbc2c[_0x1e758e];return _0x23840b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcbc2('0x0'));var zipdir=require(_0xcbc2('0x1'));var jsonpatch=require(_0xcbc2('0x2'));var rp=require(_0xcbc2('0x3'));var moment=require(_0xcbc2('0x4'));var BPromise=require(_0xcbc2('0x5'));var Mustache=require(_0xcbc2('0x6'));var util=require(_0xcbc2('0x7'));var path=require(_0xcbc2('0x8'));var sox=require('sox');var csv=require(_0xcbc2('0x9'));var ejs=require(_0xcbc2('0xa'));var fs=require('fs');var fs_extra=require(_0xcbc2('0xb'));var _=require(_0xcbc2('0xc'));var squel=require(_0xcbc2('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xcbc2('0xe'));var toCsv=require(_0xcbc2('0x9'));var querystring=require(_0xcbc2('0xf'));var Papa=require(_0xcbc2('0x10'));var Redis=require('ioredis');var authService=require(_0xcbc2('0x11'));var qs=require(_0xcbc2('0x12'));var as=require(_0xcbc2('0x13'));var hardwareService=require(_0xcbc2('0x14'));var logger=require('../../config/logger')(_0xcbc2('0x15'));var utils=require(_0xcbc2('0x16'));var config=require(_0xcbc2('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xcbc2('0x18'))['db'];config[_0xcbc2('0x19')]=_[_0xcbc2('0x1a')](config[_0xcbc2('0x19')],{'host':_0xcbc2('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./chatQueue.socket')[_0xcbc2('0x1c')](socket);var jayson=require(_0xcbc2('0x1d'));var client=jayson[_0xcbc2('0x1e')][_0xcbc2('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x51392c,_0x59f1c0,_0x53581d,_0x45b443){return new BPromise(function(_0x538b13,_0x2c0ba2){var _0x580703=_0x45b443||client;return _0x580703[_0xcbc2('0x20')](_0x51392c,_0x53581d)['then'](function(_0x188100){logger['info']('ChatQueue,\x20%s,\x20%s',_0x59f1c0,'request\x20sent');logger[_0xcbc2('0x21')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x59f1c0,_0xcbc2('0x22'),JSON[_0xcbc2('0x23')](_0x188100));if(_0x188100[_0xcbc2('0x24')]){if(_0x188100[_0xcbc2('0x24')]['code']===0x1f4){logger[_0xcbc2('0x24')](_0xcbc2('0x25'),_0x59f1c0,_0x188100[_0xcbc2('0x24')][_0xcbc2('0x26')]);return _0x2c0ba2(_0x188100['error'][_0xcbc2('0x26')]);}logger[_0xcbc2('0x24')](_0xcbc2('0x25'),_0x59f1c0,_0x188100[_0xcbc2('0x24')][_0xcbc2('0x26')]);return _0x538b13(_0x188100[_0xcbc2('0x24')][_0xcbc2('0x26')]);}else{logger[_0xcbc2('0x27')](_0xcbc2('0x25'),_0x59f1c0,_0xcbc2('0x22'));_0x538b13(_0x188100[_0xcbc2('0x28')]['message']);}})['catch'](function(_0x3d78f3){logger['error'](_0xcbc2('0x25'),_0x59f1c0,_0x3d78f3);_0x2c0ba2(_0x3d78f3);});});}function respondWithStatusCode(_0x471786,_0x49a486){_0x49a486=_0x49a486||0xcc;return function(_0x834450){if(_0x834450){return _0x471786[_0xcbc2('0x29')](_0x49a486);}return _0x471786[_0xcbc2('0x2a')](_0x49a486)[_0xcbc2('0x2b')]();};}function respondWithResult(_0x15c779,_0x5648c5){_0x5648c5=_0x5648c5||0xc8;return function(_0x37b78d){if(_0x37b78d){return _0x15c779[_0xcbc2('0x2a')](_0x5648c5)['json'](_0x37b78d);}};}function respondWithFilteredResult(_0x27cb78,_0x2518da){return function(_0x38b8fe){if(_0x38b8fe){var _0x35d585=typeof _0x2518da['offset']===_0xcbc2('0x2c')&&typeof _0x2518da[_0xcbc2('0x2d')]===_0xcbc2('0x2c');var _0x51b315=_0x38b8fe[_0xcbc2('0x2e')];var _0x43329b=_0x35d585?0x0:_0x2518da[_0xcbc2('0x2f')];var _0x3ec9fe=_0x35d585?_0x38b8fe[_0xcbc2('0x2e')]:_0x2518da[_0xcbc2('0x2f')]+_0x2518da[_0xcbc2('0x2d')];var _0x3a90b4;if(_0x3ec9fe>=_0x51b315){_0x3ec9fe=_0x51b315;_0x3a90b4=0xc8;}else{_0x3a90b4=0xce;}_0x27cb78[_0xcbc2('0x2a')](_0x3a90b4);return _0x27cb78[_0xcbc2('0x30')](_0xcbc2('0x31'),_0x43329b+'-'+_0x3ec9fe+'/'+_0x51b315)[_0xcbc2('0x32')](_0x38b8fe);}return null;};}function patchUpdates(_0x44a0b4){return function(_0xcd1f9){try{jsonpatch[_0xcbc2('0x33')](_0xcd1f9,_0x44a0b4,!![]);}catch(_0x45230c){return BPromise[_0xcbc2('0x34')](_0x45230c);}return _0xcd1f9[_0xcbc2('0x35')]();};}function saveUpdates(_0x279570,_0x2e8e64){return function(_0x379c69){if(_0x379c69){return _0x379c69[_0xcbc2('0x36')](_0x279570)[_0xcbc2('0x37')](function(_0x40b55c){return _0x40b55c;});}return null;};}function removeEntity(_0x2929c8,_0x896cc1){return function(_0xc4682a){if(_0xc4682a){return _0xc4682a[_0xcbc2('0x38')]()[_0xcbc2('0x37')](function(){var _0x469dde=_0xc4682a['get']({'plain':!![]});var _0x2e7b29=_0xcbc2('0x39');return db['UserProfileResource'][_0xcbc2('0x38')]({'where':{'type':_0x2e7b29,'resourceId':_0x469dde['id']}})[_0xcbc2('0x37')](function(){return _0xc4682a;});})[_0xcbc2('0x37')](function(){_0x2929c8[_0xcbc2('0x2a')](0xcc)[_0xcbc2('0x2b')]();});}};}function handleEntityNotFound(_0x4058bd,_0x48fcbb){return function(_0x197ea9){if(!_0x197ea9){_0x4058bd[_0xcbc2('0x29')](0x194);}return _0x197ea9;};}function handleError(_0x7f2a45,_0x52b95d){_0x52b95d=_0x52b95d||0x1f4;return function(_0x5a87e9){logger[_0xcbc2('0x24')](_0x5a87e9[_0xcbc2('0x3a')]);if(_0x5a87e9[_0xcbc2('0x3b')]){delete _0x5a87e9[_0xcbc2('0x3b')];}_0x7f2a45[_0xcbc2('0x2a')](_0x52b95d)[_0xcbc2('0x3c')](_0x5a87e9);};}exports[_0xcbc2('0x3d')]=function(_0x178585,_0x2fdf30){var _0x1165cb={},_0xdf855d={},_0xce302d={'count':0x0,'rows':[]};var _0x12e43c=_[_0xcbc2('0x3e')](db[_0xcbc2('0x3f')][_0xcbc2('0x40')],function(_0x41c9e2){return{'name':_0x41c9e2[_0xcbc2('0x41')],'type':_0x41c9e2[_0xcbc2('0x42')][_0xcbc2('0x43')]};});_0xdf855d['model']=_['map'](_0x12e43c,_0xcbc2('0x3b'));_0xdf855d['query']=_['keys'](_0x178585['query']);_0xdf855d[_0xcbc2('0x44')]=_['intersection'](_0xdf855d[_0xcbc2('0x45')],_0xdf855d[_0xcbc2('0x46')]);_0x1165cb[_0xcbc2('0x47')]=_[_0xcbc2('0x48')](_0xdf855d['model'],qs[_0xcbc2('0x49')](_0x178585[_0xcbc2('0x46')][_0xcbc2('0x49')]));_0x1165cb[_0xcbc2('0x47')]=_0x1165cb['attributes'][_0xcbc2('0x4a')]?_0x1165cb['attributes']:_0xdf855d[_0xcbc2('0x45')];if(!_0x178585['query'][_0xcbc2('0x4b')](_0xcbc2('0x4c'))){_0x1165cb[_0xcbc2('0x2d')]=qs[_0xcbc2('0x2d')](_0x178585[_0xcbc2('0x46')]['limit']);_0x1165cb[_0xcbc2('0x2f')]=qs[_0xcbc2('0x2f')](_0x178585['query'][_0xcbc2('0x2f')]);}_0x1165cb[_0xcbc2('0x4d')]=qs[_0xcbc2('0x4e')](_0x178585[_0xcbc2('0x46')][_0xcbc2('0x4e')]);_0x1165cb[_0xcbc2('0x4f')]=qs[_0xcbc2('0x44')](_[_0xcbc2('0x50')](_0x178585[_0xcbc2('0x46')],_0xdf855d['filters']),_0x12e43c);if(_0x178585[_0xcbc2('0x46')][_0xcbc2('0x51')]){_0x1165cb[_0xcbc2('0x4f')]=_[_0xcbc2('0x52')](_0x1165cb[_0xcbc2('0x4f')],{'$or':_[_0xcbc2('0x3e')](_0x12e43c,function(_0x3bdd25){if(_0x3bdd25['type']!==_0xcbc2('0x53')){var _0xeebe1d={};_0xeebe1d[_0x3bdd25['name']]={'$like':'%'+_0x178585['query'][_0xcbc2('0x51')]+'%'};return _0xeebe1d;}})});}_0x1165cb=_[_0xcbc2('0x52')]({},_0x1165cb,_0x178585['options']);var _0x5ed984={'where':_0x1165cb['where']};return db[_0xcbc2('0x3f')][_0xcbc2('0x2e')](_0x5ed984)[_0xcbc2('0x37')](function(_0x27cd22){_0xce302d['count']=_0x27cd22;if(_0x178585[_0xcbc2('0x46')][_0xcbc2('0x54')]){_0x1165cb['include']=[{'all':!![]}];}return db['ChatQueue'][_0xcbc2('0x55')](_0x1165cb);})['then'](function(_0x344b6a){_0xce302d[_0xcbc2('0x56')]=_0x344b6a;return _0xce302d;})['then'](respondWithFilteredResult(_0x2fdf30,_0x1165cb))[_0xcbc2('0x57')](handleError(_0x2fdf30,null));};exports[_0xcbc2('0x58')]=function(_0x473684,_0x47e7ea){var _0x48f653={'raw':!![],'where':{'id':_0x473684['params']['id']}},_0x22a707={};_0x22a707[_0xcbc2('0x45')]=_[_0xcbc2('0x59')](db[_0xcbc2('0x3f')]['rawAttributes']);_0x22a707[_0xcbc2('0x46')]=_[_0xcbc2('0x59')](_0x473684['query']);_0x22a707[_0xcbc2('0x44')]=_[_0xcbc2('0x48')](_0x22a707[_0xcbc2('0x45')],_0x22a707[_0xcbc2('0x46')]);_0x48f653[_0xcbc2('0x47')]=_['intersection'](_0x22a707[_0xcbc2('0x45')],qs[_0xcbc2('0x49')](_0x473684[_0xcbc2('0x46')]['fields']));_0x48f653['attributes']=_0x48f653['attributes'][_0xcbc2('0x4a')]?_0x48f653['attributes']:_0x22a707['model'];if(_0x473684[_0xcbc2('0x46')][_0xcbc2('0x54')]){_0x48f653[_0xcbc2('0x5a')]=[{'all':!![]}];}_0x48f653=_[_0xcbc2('0x52')]({},_0x48f653,_0x473684[_0xcbc2('0x5b')]);return db[_0xcbc2('0x3f')]['find'](_0x48f653)[_0xcbc2('0x37')](handleEntityNotFound(_0x47e7ea,null))[_0xcbc2('0x37')](respondWithResult(_0x47e7ea,null))[_0xcbc2('0x57')](handleError(_0x47e7ea,null));};exports[_0xcbc2('0x5c')]=function(_0x20251b,_0x5d8866){return db['ChatQueue'][_0xcbc2('0x5c')](_0x20251b[_0xcbc2('0x5d')],{})[_0xcbc2('0x37')](function(_0x799b76){var _0x4ce819=_0x20251b[_0xcbc2('0x5e')]['get']({'plain':!![]});if(!_0x4ce819)throw new Error(_0xcbc2('0x5f'));if(_0x4ce819[_0xcbc2('0x60')]==='user'){var _0x397804=_0x799b76[_0xcbc2('0x61')]({'plain':!![]});var _0xa19a38=_0xcbc2('0x39');return db[_0xcbc2('0x62')][_0xcbc2('0x63')]({'where':{'name':_0xa19a38,'userProfileId':_0x4ce819[_0xcbc2('0x64')]},'raw':!![]})[_0xcbc2('0x37')](function(_0x2d9503){if(_0x2d9503&&_0x2d9503['autoAssociation']===0x0){return db[_0xcbc2('0x65')]['create']({'name':_0x397804[_0xcbc2('0x3b')],'resourceId':_0x397804['id'],'type':_0x2d9503[_0xcbc2('0x3b')],'sectionId':_0x2d9503['id']},{})[_0xcbc2('0x37')](function(){return _0x799b76;});}else{return _0x799b76;}})[_0xcbc2('0x57')](function(_0x20f6f0){logger[_0xcbc2('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x20f6f0);throw _0x20f6f0;});}return _0x799b76;})['then'](respondWithResult(_0x5d8866,0xc9))[_0xcbc2('0x57')](handleError(_0x5d8866,null));};exports[_0xcbc2('0x36')]=function(_0x237fda,_0x534713){if(_0x237fda[_0xcbc2('0x5d')]['id']){delete _0x237fda['body']['id'];}return db[_0xcbc2('0x3f')][_0xcbc2('0x63')]({'where':{'id':_0x237fda[_0xcbc2('0x66')]['id']}})[_0xcbc2('0x37')](handleEntityNotFound(_0x534713,null))[_0xcbc2('0x37')](saveUpdates(_0x237fda[_0xcbc2('0x5d')],null))['then'](respondWithResult(_0x534713,null))[_0xcbc2('0x57')](handleError(_0x534713,null));};exports['destroy']=function(_0xb67a1a,_0x453a99){return db[_0xcbc2('0x3f')]['find']({'where':{'id':_0xb67a1a['params']['id']}})[_0xcbc2('0x37')](handleEntityNotFound(_0x453a99,null))['then'](removeEntity(_0x453a99,null))[_0xcbc2('0x57')](handleError(_0x453a99,null));};exports[_0xcbc2('0x67')]=function(_0x55b72c,_0x559685){return db[_0xcbc2('0x3f')][_0xcbc2('0x67')]()[_0xcbc2('0x37')](respondWithResult(_0x559685,null))[_0xcbc2('0x57')](handleError(_0x559685,null));};exports[_0xcbc2('0x68')]=function(_0x2d578b,_0x17a792,_0xd12ee4){var _0x231f04={'raw':!![],'where':{}},_0x2905ea={},_0x5e2007;return db[_0xcbc2('0x3f')]['findOne']({'where':{'id':_0x2d578b[_0xcbc2('0x66')]['id']}})[_0xcbc2('0x37')](handleEntityNotFound(_0x17a792,null))[_0xcbc2('0x37')](function(_0xf4cab4){if(_0xf4cab4){_0x5e2007=_0xf4cab4['get']({'plain':!![]});_0x2905ea['model']=_[_0xcbc2('0x59')](db['UserChatQueue'][_0xcbc2('0x40')]);_0x2905ea[_0xcbc2('0x46')]=_['keys'](_0x2d578b[_0xcbc2('0x46')]);_0x2905ea['filters']=_['intersection'](_0x2905ea[_0xcbc2('0x45')],_0x2905ea[_0xcbc2('0x46')]);_0x231f04['attributes']=_['intersection'](_0x2905ea[_0xcbc2('0x45')],qs[_0xcbc2('0x49')](_0x2d578b[_0xcbc2('0x46')][_0xcbc2('0x49')]));_0x231f04[_0xcbc2('0x47')]=_0x231f04[_0xcbc2('0x47')]['length']?_0x231f04[_0xcbc2('0x47')]:_0x2905ea[_0xcbc2('0x45')];if(!_0x2d578b[_0xcbc2('0x46')]['hasOwnProperty'](_0xcbc2('0x4c'))){_0x231f04[_0xcbc2('0x2d')]=qs['limit'](_0x2d578b['query'][_0xcbc2('0x2d')]);_0x231f04[_0xcbc2('0x2f')]=qs[_0xcbc2('0x2f')](_0x2d578b['query']['offset']);}_0x231f04[_0xcbc2('0x4d')]=qs[_0xcbc2('0x4e')](_0x2d578b[_0xcbc2('0x46')][_0xcbc2('0x4e')]);_0x231f04['where']=qs[_0xcbc2('0x44')](_['pick'](_0x2d578b[_0xcbc2('0x46')],_0x2905ea['filters']));_0x231f04['where']['ChatQueueId']=_0xf4cab4['id'];if(_0x2d578b[_0xcbc2('0x46')][_0xcbc2('0x51')]){_0x231f04['where']=_[_0xcbc2('0x52')](_0x231f04['where'],{'$or':_[_0xcbc2('0x3e')](_0x231f04[_0xcbc2('0x47')],function(_0x285baa){var _0x139fc3={};_0x139fc3[_0x285baa]={'$like':'%'+_0x2d578b[_0xcbc2('0x46')]['filter']+'%'};return _0x139fc3;})});}_0x231f04=_[_0xcbc2('0x52')]({},_0x231f04,_0x2d578b[_0xcbc2('0x5b')]);return db[_0xcbc2('0x69')][_0xcbc2('0x55')](_0x231f04);}})['then'](function(_0x3e0dda){if(_0x3e0dda){return db[_0xcbc2('0x6a')][_0xcbc2('0x6b')]({'where':{'id':_[_0xcbc2('0x3e')](_0x3e0dda,_0xcbc2('0x6c')),'role':'agent'},'attributes':['id','name',_0xcbc2('0x6d'),_0xcbc2('0x6e'),'createdAt']});}})[_0xcbc2('0x37')](function(_0xcb196c){if(_0xcb196c){return{'count':_0xcb196c[_0xcbc2('0x2e')],'rows':_[_0xcbc2('0x3e')](_0xcb196c[_0xcbc2('0x56')],function(_0x24559c){return{'membername':_0x24559c['name'],'UserId':_0x24559c['id'],'queue_name':_0x5e2007[_0xcbc2('0x3b')],'ChatQueueId':_0x5e2007['id'],'interface':util['format'](_0xcbc2('0x6f'),'SIP',_0x24559c[_0xcbc2('0x3b')]),'penalty':0x0,'paused':_0x24559c[_0xcbc2('0x6d')],'createdAt':_0x24559c[_0xcbc2('0x70')],'updatedAt':_0x24559c[_0xcbc2('0x6e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xcbc2('0x37')](respondWithFilteredResult(_0x17a792,_0x231f04))[_0xcbc2('0x57')](handleError(_0x17a792,null));};exports[_0xcbc2('0x71')]=function(_0x159148,_0x3c9ac8,_0x48030d){var _0x1f652a={};var _0x579b6c={};var _0x30ff36;var _0x3787df;return db[_0xcbc2('0x3f')][_0xcbc2('0x72')]({'where':{'id':_0x159148[_0xcbc2('0x66')]['id']}})['then'](handleEntityNotFound(_0x3c9ac8,null))[_0xcbc2('0x37')](function(_0x27fa07){if(_0x27fa07){_0x30ff36=_0x27fa07;_0x579b6c[_0xcbc2('0x45')]=_[_0xcbc2('0x59')](db['Team'][_0xcbc2('0x40')]);_0x579b6c[_0xcbc2('0x46')]=_['keys'](_0x159148['query']);_0x579b6c['filters']=_[_0xcbc2('0x48')](_0x579b6c[_0xcbc2('0x45')],_0x579b6c['query']);_0x1f652a[_0xcbc2('0x47')]=_[_0xcbc2('0x48')](_0x579b6c[_0xcbc2('0x45')],qs[_0xcbc2('0x49')](_0x159148['query'][_0xcbc2('0x49')]));_0x1f652a['attributes']=_0x1f652a['attributes'][_0xcbc2('0x4a')]?_0x1f652a[_0xcbc2('0x47')]:_0x579b6c[_0xcbc2('0x45')];_0x1f652a[_0xcbc2('0x4d')]=qs[_0xcbc2('0x4e')](_0x159148[_0xcbc2('0x46')][_0xcbc2('0x4e')]);_0x1f652a['where']=qs[_0xcbc2('0x44')](_[_0xcbc2('0x50')](_0x159148[_0xcbc2('0x46')],_0x579b6c[_0xcbc2('0x44')]));if(_0x159148[_0xcbc2('0x46')][_0xcbc2('0x51')]){_0x1f652a[_0xcbc2('0x4f')]=_[_0xcbc2('0x52')](_0x1f652a['where'],{'$or':_[_0xcbc2('0x3e')](_0x1f652a[_0xcbc2('0x47')],function(_0x3cc64c){var _0x1a1aaa={};_0x1a1aaa[_0x3cc64c]={'$like':'%'+_0x159148[_0xcbc2('0x46')][_0xcbc2('0x51')]+'%'};return _0x1a1aaa;})});}_0x1f652a=_['merge']({},_0x1f652a,_0x159148[_0xcbc2('0x5b')]);return _0x30ff36['getTeams'](_0x1f652a);}})[_0xcbc2('0x37')](function(_0x20eb89){if(_0x20eb89){_0x3787df=_0x20eb89[_0xcbc2('0x4a')];if(!_0x159148[_0xcbc2('0x46')]['hasOwnProperty']('nolimit')){_0x1f652a[_0xcbc2('0x2d')]=qs['limit'](_0x159148['query'][_0xcbc2('0x2d')]);_0x1f652a[_0xcbc2('0x2f')]=qs['offset'](_0x159148[_0xcbc2('0x46')][_0xcbc2('0x2f')]);}return _0x30ff36[_0xcbc2('0x71')](_0x1f652a);}})[_0xcbc2('0x37')](function(_0x5ed1ef){if(_0x5ed1ef){return _0x5ed1ef?{'count':_0x3787df,'rows':_0x5ed1ef}:null;}})['then'](respondWithResult(_0x3c9ac8,null))[_0xcbc2('0x57')](handleError(_0x3c9ac8,null));};exports['addTeams']=function(_0x481821,_0xa70c7d,_0x37c171){var _0x2f3657=_0x481821[_0xcbc2('0x5d')][_0xcbc2('0x73')];return db[_0xcbc2('0x74')][_0xcbc2('0x55')]({'where':{'id':_0x2f3657},'attributes':['id'],'include':[{'model':db['User'],'as':_0xcbc2('0x75'),'attributes':['id','name',_0xcbc2('0x76'),'voicePause',_0xcbc2('0x77')],'raw':!![]}]})[_0xcbc2('0x37')](function(_0x4c430d){if(_0x4c430d){var _0x188af4=_[_0xcbc2('0x78')](_0x4c430d,function(_0x29d032){var _0x3246dd=_0x29d032['get']({'plain':!![]});return _0x3246dd[_0xcbc2('0x75')];});return db[_0xcbc2('0x3f')][_0xcbc2('0x63')]({'where':{'id':_0x481821[_0xcbc2('0x66')]['id']}})[_0xcbc2('0x37')](function(_0x57278e){return db[_0xcbc2('0x79')]['transaction'](function(_0x357bf0){return _0x57278e[_0xcbc2('0x7a')](_0x2f3657,{'transaction':_0x357bf0})['then'](function(){return BPromise['each'](_0x188af4,function(_0x3cedd8){return db[_0xcbc2('0x69')]['findOrCreate']({'where':{'UserId':_0x3cedd8['id'],'ChatQueueId':_0x481821[_0xcbc2('0x66')]['id']},'transaction':_0x357bf0});});})[_0xcbc2('0x37')](function(){_0x188af4['forEach'](function(_0x50e419){socket[_0xcbc2('0x7b')](_0xcbc2('0x7c'),{'UserId':_0x50e419['id'],'ChatQueueId':_0x57278e['id']});});});});});}})[_0xcbc2('0x37')](respondWithStatusCode(_0xa70c7d,null))[_0xcbc2('0x57')](handleError(_0xa70c7d,null));};exports['removeTeams']=function(_0x51dce9,_0x39daec,_0x5e303){return db[_0xcbc2('0x74')][_0xcbc2('0x55')]({'where':{'id':_0x51dce9[_0xcbc2('0x46')]['ids']},'attributes':['id'],'include':[{'model':db[_0xcbc2('0x6a')],'as':_0xcbc2('0x75'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x39daec,null))[_0xcbc2('0x37')](function(_0x404dcd){var _0x330c6e=_[_0xcbc2('0x3e')](_0x404dcd,'id');var _0x53fe48=[];var _0x485ed3=[];var _0xd3366e=squel['select']();_0xd3366e['field'](_0xcbc2('0x7d'))[_0xcbc2('0x7e')]('team_has_chat_queues','tq')[_0xcbc2('0x7f')](_0xcbc2('0x80'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xcbc2('0x4f')](_0xcbc2('0x81'),_0x51dce9[_0xcbc2('0x66')]['id']);for(var _0x1cc2ee=0x0;_0x1cc2ee<_0x404dcd['length'];_0x1cc2ee+=0x1){let _0x12155d=_0x404dcd[_0x1cc2ee];for(var _0x140811=0x0;_0x140811<_0x12155d[_0xcbc2('0x75')][_0xcbc2('0x4a')];_0x140811+=0x1){let _0x140523=_0x12155d['Agents'][_0x140811];var _0x12a8f2=_0xd3366e[_0xcbc2('0x82')]();_0x12a8f2[_0xcbc2('0x4f')](_0xcbc2('0x83'),_0x140523['id']);_0x485ed3['push'](db[_0xcbc2('0x79')][_0xcbc2('0x46')](_0x12a8f2[_0xcbc2('0x84')](),{'type':db['sequelize'][_0xcbc2('0x85')]['SELECT']})['then'](function(_0x148319){if(_0x148319[_0xcbc2('0x4a')]===0x1){return _0x140523['id'];}else{var _0x37d5ef=_[_0xcbc2('0x86')](_['map'](_0x148319,_0xcbc2('0x87')),function(_0x14ec43){return _['includes'](_0x330c6e,_0x14ec43);});if(_0x37d5ef){return _0x140523['id'];}}}));}}return BPromise[_0xcbc2('0x88')](_0x485ed3)['then'](function(_0x59643f){_0x53fe48=_(_0x53fe48)[_0xcbc2('0x89')](_0x59643f)[_0xcbc2('0x8a')]()[_0xcbc2('0x8b')]();return db['ChatQueue'][_0xcbc2('0x63')]({'where':{'id':_0x51dce9['params']['id']}})['then'](function(_0x1b5bbd){return db['sequelize'][_0xcbc2('0x8c')](function(_0x33c2e0){return _0x1b5bbd[_0xcbc2('0x8d')](_0x51dce9['query'][_0xcbc2('0x73')],{'transaction':_0x33c2e0})[_0xcbc2('0x37')](function(){if(!_[_0xcbc2('0x8e')](_0x53fe48)){return _0x1b5bbd['removeAgents'](_0x53fe48,{'transaction':_0x33c2e0});}})[_0xcbc2('0x37')](function(){_0x53fe48[_0xcbc2('0x8f')](function(_0x4c7f46){socket['emit'](_0xcbc2('0x90'),{'UserId':_0x4c7f46,'ChatQueueId':_0x1b5bbd['id']});});});});});});})['then'](respondWithStatusCode(_0x39daec,null))['catch'](handleError(_0x39daec,null));};exports['addAgents']=function(_0x48ef57,_0x22184b,_0x5797a1){return db[_0xcbc2('0x3f')]['find']({'where':{'id':_0x48ef57[_0xcbc2('0x66')]['id']}})[_0xcbc2('0x37')](handleEntityNotFound(_0x22184b,null))[_0xcbc2('0x37')](function(_0x1b412d){if(_0x1b412d){return _0x1b412d['addAgents'](_0x48ef57[_0xcbc2('0x5d')][_0xcbc2('0x73')],_[_0xcbc2('0x91')](_0x48ef57['body'],['ids','id'])||{})['spread'](function(_0x26321e){for(var _0x4d8d85=0x0;_0x4d8d85<_0x48ef57[_0xcbc2('0x5d')][_0xcbc2('0x73')][_0xcbc2('0x4a')];_0x4d8d85+=0x1){socket[_0xcbc2('0x7b')](_0xcbc2('0x7c'),{'UserId':Number(_0x48ef57[_0xcbc2('0x5d')][_0xcbc2('0x73')][_0x4d8d85]),'ChatQueueId':Number(_0x48ef57['params']['id'])});}return _0x26321e;});}})[_0xcbc2('0x37')](respondWithResult(_0x22184b,null))[_0xcbc2('0x57')](handleError(_0x22184b,null));};exports[_0xcbc2('0x92')]=function(_0x4e421c,_0x15d2ff,_0x1cd034){return db[_0xcbc2('0x3f')][_0xcbc2('0x63')]({'where':{'id':_0x4e421c['params']['id']}})['then'](handleEntityNotFound(_0x15d2ff,null))['then'](function(_0x3ab5a1){if(_0x3ab5a1){return _0x3ab5a1['removeAgents'](_0x4e421c[_0xcbc2('0x46')][_0xcbc2('0x73')])[_0xcbc2('0x37')](function(){if(_[_0xcbc2('0x93')](_0x4e421c['query'][_0xcbc2('0x73')])){for(var _0x169839=0x0;_0x169839<_0x4e421c[_0xcbc2('0x46')][_0xcbc2('0x73')][_0xcbc2('0x4a')];_0x169839+=0x1){socket[_0xcbc2('0x7b')](_0xcbc2('0x90'),{'UserId':Number(_0x4e421c['query'][_0xcbc2('0x73')][_0x169839]),'ChatQueueId':Number(_0x4e421c[_0xcbc2('0x66')]['id'])});}}else{socket[_0xcbc2('0x7b')](_0xcbc2('0x90'),{'UserId':Number(_0x4e421c[_0xcbc2('0x46')][_0xcbc2('0x73')]),'ChatQueueId':Number(_0x4e421c[_0xcbc2('0x66')]['id'])});}});}})[_0xcbc2('0x37')](respondWithStatusCode(_0x15d2ff,null))[_0xcbc2('0x57')](handleError(_0x15d2ff,null));};exports[_0xcbc2('0x94')]=function(_0x1c1d63,_0x59147d,_0x2477e5){var _0x3b315c={};var _0x18f9bc={};var _0x5b9f81;var _0x2062f3;return db['ChatQueue'][_0xcbc2('0x72')]({'where':{'id':_0x1c1d63[_0xcbc2('0x66')]['id']}})[_0xcbc2('0x37')](handleEntityNotFound(_0x59147d,null))[_0xcbc2('0x37')](function(_0x577496){if(_0x577496){_0x5b9f81=_0x577496;_0x18f9bc[_0xcbc2('0x45')]=_['keys'](db['User'][_0xcbc2('0x40')]);_0x18f9bc[_0xcbc2('0x46')]=_[_0xcbc2('0x59')](_0x1c1d63['query']);_0x18f9bc['filters']=_[_0xcbc2('0x48')](_0x18f9bc[_0xcbc2('0x45')],_0x18f9bc[_0xcbc2('0x46')]);_0x3b315c[_0xcbc2('0x47')]=_[_0xcbc2('0x48')](_0x18f9bc[_0xcbc2('0x45')],qs[_0xcbc2('0x49')](_0x1c1d63['query'][_0xcbc2('0x49')]));_0x3b315c['attributes']=_0x3b315c[_0xcbc2('0x47')][_0xcbc2('0x4a')]?_0x3b315c[_0xcbc2('0x47')]:_0x18f9bc['model'];_0x3b315c['order']=qs['sort'](_0x1c1d63[_0xcbc2('0x46')][_0xcbc2('0x4e')]);_0x3b315c[_0xcbc2('0x4f')]=qs[_0xcbc2('0x44')](_[_0xcbc2('0x50')](_0x1c1d63[_0xcbc2('0x46')],_0x18f9bc[_0xcbc2('0x44')]));if(_0x1c1d63[_0xcbc2('0x46')][_0xcbc2('0x51')]){_0x3b315c[_0xcbc2('0x4f')]=_[_0xcbc2('0x52')](_0x3b315c[_0xcbc2('0x4f')],{'$or':_[_0xcbc2('0x3e')](_0x3b315c['attributes'],function(_0x1a1557){var _0x112354={};_0x112354[_0x1a1557]={'$like':'%'+_0x1c1d63[_0xcbc2('0x46')][_0xcbc2('0x51')]+'%'};return _0x112354;})});}_0x3b315c=_[_0xcbc2('0x52')]({},_0x3b315c,_0x1c1d63[_0xcbc2('0x5b')]);return _0x5b9f81[_0xcbc2('0x94')](_0x3b315c);}})['then'](function(_0x4254bf){if(_0x4254bf){_0x2062f3=_0x4254bf['length'];if(!_0x1c1d63['query'][_0xcbc2('0x4b')](_0xcbc2('0x4c'))){_0x3b315c['limit']=qs[_0xcbc2('0x2d')](_0x1c1d63[_0xcbc2('0x46')][_0xcbc2('0x2d')]);_0x3b315c['offset']=qs[_0xcbc2('0x2f')](_0x1c1d63['query'][_0xcbc2('0x2f')]);}return _0x5b9f81[_0xcbc2('0x94')](_0x3b315c);}})[_0xcbc2('0x37')](function(_0x2759f4){if(_0x2759f4){return _0x2759f4?{'count':_0x2062f3,'rows':_0x2759f4}:null;}})[_0xcbc2('0x37')](respondWithResult(_0x59147d,null))['catch'](handleError(_0x59147d,null));};
\ No newline at end of file
index ff8273d..803e97d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11b7=['remove','emit','hasOwnProperty','setMaxListeners'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x11b7,0x12f));var _0x711b=function(_0x3e36fa,_0x56653f){_0x3e36fa=_0x3e36fa-0x0;var _0x528ac5=_0x11b7[_0x3e36fa];return _0x528ac5;};'use strict';var EventEmitter=require('events');var ChatQueue=require('../../mysqldb')['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x711b('0x0')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x711b('0x1')};function emitEvent(_0x35249b){return function(_0x4be832,_0x33d111,_0x2005cf){ChatQueueEvents['emit'](_0x35249b+':'+_0x4be832['id'],_0x4be832);ChatQueueEvents[_0x711b('0x2')](_0x35249b,_0x4be832);_0x2005cf(null);};}for(var e in events){if(events[_0x711b('0x3')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
+var _0x43df=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatQueue','save'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x43df,0x1c8));var _0xf43d=function(_0x25cde9,_0x37919d){_0x25cde9=_0x25cde9-0x0;var _0x5a4b6a=_0x43df[_0x25cde9];return _0x5a4b6a;};'use strict';var EventEmitter=require('events');var ChatQueue=require(_0xf43d('0x0'))['db'][_0xf43d('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf43d('0x2'),'afterUpdate':_0xf43d('0x3'),'afterDestroy':_0xf43d('0x4')};function emitEvent(_0x43a772){return function(_0x1c0e06,_0x195490,_0x2764a0){ChatQueueEvents[_0xf43d('0x5')](_0x43a772+':'+_0x1c0e06['id'],_0x1c0e06);ChatQueueEvents[_0xf43d('0x5')](_0x43a772,_0x1c0e06);_0x2764a0(null);};}for(var e in events){if(events[_0xf43d('0x6')](e)){var event=events[e];ChatQueue[_0xf43d('0x7')](e,emitEvent(event));}}module[_0xf43d('0x8')]=ChatQueueEvents;
\ No newline at end of file
index 02237a0..e657ce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70c8=['../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./chatQueue.attributes','exports','define','ChatQueue','chat_queues','util'];(function(_0x1b7896,_0x468f95){var _0x358d83=function(_0x22a4df){while(--_0x22a4df){_0x1b7896['push'](_0x1b7896['shift']());}};_0x358d83(++_0x468f95);}(_0x70c8,0x9b));var _0x870c=function(_0x2793a9,_0x10ebdb){_0x2793a9=_0x2793a9-0x0;var _0x1ef39a=_0x70c8[_0x2793a9];return _0x1ef39a;};'use strict';var _=require('lodash');var util=require(_0x870c('0x0'));var logger=require(_0x870c('0x1'))(_0x870c('0x2'));var moment=require(_0x870c('0x3'));var BPromise=require(_0x870c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x870c('0x5'));var config=require(_0x870c('0x6'));var attributes=require(_0x870c('0x7'));module[_0x870c('0x8')]=function(_0x5eb682,_0x1ffaa6){return _0x5eb682[_0x870c('0x9')](_0x870c('0xa'),attributes,{'tableName':_0x870c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x052f=['chat_queues','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','exports','define','ChatQueue'];(function(_0x20132b,_0x4b3215){var _0x290671=function(_0x3125f0){while(--_0x3125f0){_0x20132b['push'](_0x20132b['shift']());}};_0x290671(++_0x4b3215);}(_0x052f,0x1dd));var _0xf052=function(_0x1eb27d,_0x3943d8){_0x1eb27d=_0x1eb27d-0x0;var _0x1aebe1=_0x052f[_0x1eb27d];return _0x1aebe1;};'use strict';var _=require(_0xf052('0x0'));var util=require(_0xf052('0x1'));var logger=require(_0xf052('0x2'))('api');var moment=require(_0xf052('0x3'));var BPromise=require(_0xf052('0x4'));var rp=require(_0xf052('0x5'));var fs=require('fs');var path=require(_0xf052('0x6'));var rimraf=require(_0xf052('0x7'));var config=require(_0xf052('0x8'));var attributes=require(_0xf052('0x9'));module[_0xf052('0xa')]=function(_0x481d4c,_0x102220){return _0x481d4c[_0xf052('0xb')](_0xf052('0xc'),attributes,{'tableName':_0xf052('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 08db9e0..a31c886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa03c=['register','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetChatQueue','ChatQueue','options','raw','where','attributes','limit','include','map','model','ShowChatQueue','find','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket'];(function(_0x3545ec,_0x4e27e5){var _0x83b52c=function(_0x3315e1){while(--_0x3315e1){_0x3545ec['push'](_0x3545ec['shift']());}};_0x83b52c(++_0x4e27e5);}(_0xa03c,0x94));var _0xca03=function(_0x4eb84b,_0x289a5a){_0x4eb84b=_0x4eb84b-0x0;var _0x4956b8=_0xa03c[_0x4eb84b];return _0x4956b8;};'use strict';var _=require(_0xca03('0x0'));var util=require('util');var moment=require(_0xca03('0x1'));var BPromise=require(_0xca03('0x2'));var rs=require(_0xca03('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xca03('0x4'))['db'];var utils=require(_0xca03('0x5'));var logger=require(_0xca03('0x6'))('rpc');var config=require(_0xca03('0x7'));var jayson=require(_0xca03('0x8'));var client=jayson[_0xca03('0x9')][_0xca03('0xa')]({'port':0x232a});config[_0xca03('0xb')]=_[_0xca03('0xc')](config['redis'],{'host':_0xca03('0xd'),'port':0x18eb});var socket=require(_0xca03('0xe'))(new Redis(config[_0xca03('0xb')]));require(_0xca03('0xf'))[_0xca03('0x10')](socket);function respondWithRpcPromise(_0x9f510d,_0x34f897,_0x2a0468){return new BPromise(function(_0x17b38d,_0x3cea29){return client['request'](_0x9f510d,_0x2a0468)[_0xca03('0x11')](function(_0x1b71ae){logger[_0xca03('0x12')](_0xca03('0x13'),_0x34f897,_0xca03('0x14'));logger[_0xca03('0x15')](_0xca03('0x16'),_0x34f897,_0xca03('0x14'),JSON[_0xca03('0x17')](_0x1b71ae));if(_0x1b71ae[_0xca03('0x18')]){if(_0x1b71ae[_0xca03('0x18')][_0xca03('0x19')]===0x1f4){logger[_0xca03('0x18')](_0xca03('0x13'),_0x34f897,_0x1b71ae[_0xca03('0x18')][_0xca03('0x1a')]);return _0x3cea29(_0x1b71ae[_0xca03('0x18')][_0xca03('0x1a')]);}logger[_0xca03('0x18')]('ChatQueue,\x20%s,\x20%s',_0x34f897,_0x1b71ae[_0xca03('0x18')][_0xca03('0x1a')]);return _0x17b38d(_0x1b71ae[_0xca03('0x18')][_0xca03('0x1a')]);}else{logger[_0xca03('0x12')](_0xca03('0x13'),_0x34f897,_0xca03('0x14'));_0x17b38d(_0x1b71ae[_0xca03('0x1b')]['message']);}})[_0xca03('0x1c')](function(_0x56eab4){logger['error']('ChatQueue,\x20%s,\x20%s',_0x34f897,_0x56eab4);_0x3cea29(_0x56eab4);});});}exports[_0xca03('0x1d')]=function(_0x36b05e){var _0x353c70=this;return new Promise(function(_0x3804be,_0x540b13){return db[_0xca03('0x1e')]['findAll']({'raw':_0x36b05e[_0xca03('0x1f')]?_0x36b05e[_0xca03('0x1f')][_0xca03('0x20')]===undefined?!![]:![]:!![],'where':_0x36b05e[_0xca03('0x1f')]?_0x36b05e[_0xca03('0x1f')][_0xca03('0x21')]||null:null,'attributes':_0x36b05e[_0xca03('0x1f')]?_0x36b05e[_0xca03('0x1f')][_0xca03('0x22')]||null:null,'limit':_0x36b05e[_0xca03('0x1f')]?_0x36b05e['options'][_0xca03('0x23')]||null:null,'include':_0x36b05e[_0xca03('0x1f')]?_0x36b05e[_0xca03('0x1f')][_0xca03('0x24')]?_['map'](_0x36b05e[_0xca03('0x1f')][_0xca03('0x24')],function(_0x29a03a){return{'model':db[_0x29a03a['model']],'as':_0x29a03a['as'],'attributes':_0x29a03a[_0xca03('0x22')],'include':_0x29a03a['include']?_[_0xca03('0x25')](_0x29a03a['include'],function(_0x2a555f){return{'model':db[_0x2a555f['model']],'as':_0x2a555f['as'],'attributes':_0x2a555f[_0xca03('0x22')],'include':_0x2a555f[_0xca03('0x24')]?_[_0xca03('0x25')](_0x2a555f[_0xca03('0x24')],function(_0x5271a9){return{'model':db[_0x5271a9[_0xca03('0x26')]],'as':_0x5271a9['as'],'attributes':_0x5271a9['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5f501c){logger[_0xca03('0x12')](_0xca03('0x1d'),_0x36b05e);logger[_0xca03('0x15')](_0xca03('0x1d'),_0x36b05e,JSON[_0xca03('0x17')](_0x5f501c));_0x3804be(_0x5f501c);})[_0xca03('0x1c')](function(_0x3387c3){logger[_0xca03('0x18')](_0xca03('0x1d'),_0x3387c3[_0xca03('0x1a')],_0x36b05e);_0x540b13(_0x353c70['error'](0x1f4,_0x3387c3[_0xca03('0x1a')]));});});};exports[_0xca03('0x27')]=function(_0x2058f7){var _0x5f3d8b=this;return new Promise(function(_0x4cd6f0,_0x214dd7){return db[_0xca03('0x1e')][_0xca03('0x28')]({'raw':_0x2058f7[_0xca03('0x1f')]?_0x2058f7[_0xca03('0x1f')][_0xca03('0x20')]===undefined?!![]:![]:!![],'where':_0x2058f7[_0xca03('0x1f')]?_0x2058f7[_0xca03('0x1f')]['where']||null:null,'attributes':_0x2058f7[_0xca03('0x1f')]?_0x2058f7['options'][_0xca03('0x22')]||null:null,'include':_0x2058f7[_0xca03('0x1f')]?_0x2058f7['options'][_0xca03('0x24')]?_[_0xca03('0x25')](_0x2058f7['options'][_0xca03('0x24')],function(_0x5b58fc){return{'model':db[_0x5b58fc['model']],'as':_0x5b58fc['as'],'attributes':_0x5b58fc['attributes'],'include':_0x5b58fc['include']?_['map'](_0x5b58fc['include'],function(_0x7a6b87){return{'model':db[_0x7a6b87[_0xca03('0x26')]],'as':_0x7a6b87['as'],'attributes':_0x7a6b87[_0xca03('0x22')],'include':_0x7a6b87[_0xca03('0x24')]?_[_0xca03('0x25')](_0x7a6b87[_0xca03('0x24')],function(_0x2cb6eb){return{'model':db[_0x2cb6eb[_0xca03('0x26')]],'as':_0x2cb6eb['as'],'attributes':_0x2cb6eb[_0xca03('0x22')]};}):[]};}):[]};}):[]:[]})[_0xca03('0x11')](function(_0x589135){logger['info']('ShowChatQueue',_0x2058f7);logger['debug'](_0xca03('0x27'),_0x2058f7,JSON[_0xca03('0x17')](_0x589135));_0x4cd6f0(_0x589135);})[_0xca03('0x1c')](function(_0x2db085){logger[_0xca03('0x18')](_0xca03('0x27'),_0x2db085[_0xca03('0x1a')],_0x2058f7);_0x214dd7(_0x5f3d8b[_0xca03('0x18')](0x1f4,_0x2db085[_0xca03('0x1a')]));});});};
\ No newline at end of file
+var _0xf1f9=['model','attributes','ShowChatQueue','find','raw','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','./chatQueue.socket','register','then','info','debug','request\x20sent','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','result','catch','GetChatQueue','ChatQueue','options','where','include','map'];(function(_0x3a04dd,_0x4471b3){var _0x5c6972=function(_0x5ce9d1){while(--_0x5ce9d1){_0x3a04dd['push'](_0x3a04dd['shift']());}};_0x5c6972(++_0x4471b3);}(_0xf1f9,0x1cd));var _0x9f1f=function(_0x103d7f,_0x150f13){_0x103d7f=_0x103d7f-0x0;var _0x387355=_0xf1f9[_0x103d7f];return _0x387355;};'use strict';var _=require(_0x9f1f('0x0'));var util=require(_0x9f1f('0x1'));var moment=require(_0x9f1f('0x2'));var BPromise=require(_0x9f1f('0x3'));var rs=require(_0x9f1f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9f1f('0x5'))['db'];var utils=require(_0x9f1f('0x6'));var logger=require(_0x9f1f('0x7'))(_0x9f1f('0x8'));var config=require(_0x9f1f('0x9'));var jayson=require(_0x9f1f('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0x9f1f('0xb')]=_[_0x9f1f('0xc')](config[_0x9f1f('0xb')],{'host':_0x9f1f('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9f1f('0xb')]));require(_0x9f1f('0xe'))[_0x9f1f('0xf')](socket);function respondWithRpcPromise(_0x7cc6f1,_0x2def71,_0x24b959){return new BPromise(function(_0x3fea57,_0x50db7b){return client['request'](_0x7cc6f1,_0x24b959)[_0x9f1f('0x10')](function(_0x3a64db){logger[_0x9f1f('0x11')]('ChatQueue,\x20%s,\x20%s',_0x2def71,'request\x20sent');logger[_0x9f1f('0x12')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x2def71,_0x9f1f('0x13'),JSON[_0x9f1f('0x14')](_0x3a64db));if(_0x3a64db[_0x9f1f('0x15')]){if(_0x3a64db[_0x9f1f('0x15')][_0x9f1f('0x16')]===0x1f4){logger[_0x9f1f('0x15')](_0x9f1f('0x17'),_0x2def71,_0x3a64db['error'][_0x9f1f('0x18')]);return _0x50db7b(_0x3a64db['error'][_0x9f1f('0x18')]);}logger[_0x9f1f('0x15')](_0x9f1f('0x17'),_0x2def71,_0x3a64db[_0x9f1f('0x15')][_0x9f1f('0x18')]);return _0x3fea57(_0x3a64db['error'][_0x9f1f('0x18')]);}else{logger[_0x9f1f('0x11')](_0x9f1f('0x17'),_0x2def71,'request\x20sent');_0x3fea57(_0x3a64db[_0x9f1f('0x19')][_0x9f1f('0x18')]);}})[_0x9f1f('0x1a')](function(_0x46f71a){logger[_0x9f1f('0x15')]('ChatQueue,\x20%s,\x20%s',_0x2def71,_0x46f71a);_0x50db7b(_0x46f71a);});});}exports[_0x9f1f('0x1b')]=function(_0x3dbc27){var _0x376c71=this;return new Promise(function(_0x4121a4,_0x5db027){return db[_0x9f1f('0x1c')]['findAll']({'raw':_0x3dbc27[_0x9f1f('0x1d')]?_0x3dbc27[_0x9f1f('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x3dbc27[_0x9f1f('0x1d')]?_0x3dbc27[_0x9f1f('0x1d')][_0x9f1f('0x1e')]||null:null,'attributes':_0x3dbc27[_0x9f1f('0x1d')]?_0x3dbc27[_0x9f1f('0x1d')]['attributes']||null:null,'limit':_0x3dbc27['options']?_0x3dbc27['options']['limit']||null:null,'include':_0x3dbc27['options']?_0x3dbc27[_0x9f1f('0x1d')][_0x9f1f('0x1f')]?_[_0x9f1f('0x20')](_0x3dbc27['options'][_0x9f1f('0x1f')],function(_0x41c84a){return{'model':db[_0x41c84a[_0x9f1f('0x21')]],'as':_0x41c84a['as'],'attributes':_0x41c84a[_0x9f1f('0x22')],'include':_0x41c84a[_0x9f1f('0x1f')]?_[_0x9f1f('0x20')](_0x41c84a[_0x9f1f('0x1f')],function(_0x3e9bdd){return{'model':db[_0x3e9bdd[_0x9f1f('0x21')]],'as':_0x3e9bdd['as'],'attributes':_0x3e9bdd[_0x9f1f('0x22')],'include':_0x3e9bdd[_0x9f1f('0x1f')]?_[_0x9f1f('0x20')](_0x3e9bdd[_0x9f1f('0x1f')],function(_0x1859b2){return{'model':db[_0x1859b2['model']],'as':_0x1859b2['as'],'attributes':_0x1859b2['attributes']};}):[]};}):[]};}):[]:[]})[_0x9f1f('0x10')](function(_0x359a36){logger['info'](_0x9f1f('0x1b'),_0x3dbc27);logger[_0x9f1f('0x12')](_0x9f1f('0x1b'),_0x3dbc27,JSON[_0x9f1f('0x14')](_0x359a36));_0x4121a4(_0x359a36);})[_0x9f1f('0x1a')](function(_0x1ac64f){logger[_0x9f1f('0x15')](_0x9f1f('0x1b'),_0x1ac64f['message'],_0x3dbc27);_0x5db027(_0x376c71[_0x9f1f('0x15')](0x1f4,_0x1ac64f['message']));});});};exports[_0x9f1f('0x23')]=function(_0x2e14bc){var _0xb9b92=this;return new Promise(function(_0x3d050d,_0x40dd7c){return db['ChatQueue'][_0x9f1f('0x24')]({'raw':_0x2e14bc[_0x9f1f('0x1d')]?_0x2e14bc[_0x9f1f('0x1d')][_0x9f1f('0x25')]===undefined?!![]:![]:!![],'where':_0x2e14bc[_0x9f1f('0x1d')]?_0x2e14bc[_0x9f1f('0x1d')][_0x9f1f('0x1e')]||null:null,'attributes':_0x2e14bc[_0x9f1f('0x1d')]?_0x2e14bc[_0x9f1f('0x1d')][_0x9f1f('0x22')]||null:null,'include':_0x2e14bc[_0x9f1f('0x1d')]?_0x2e14bc[_0x9f1f('0x1d')][_0x9f1f('0x1f')]?_[_0x9f1f('0x20')](_0x2e14bc[_0x9f1f('0x1d')][_0x9f1f('0x1f')],function(_0x1b3fbe){return{'model':db[_0x1b3fbe['model']],'as':_0x1b3fbe['as'],'attributes':_0x1b3fbe[_0x9f1f('0x22')],'include':_0x1b3fbe['include']?_[_0x9f1f('0x20')](_0x1b3fbe[_0x9f1f('0x1f')],function(_0x17790a){return{'model':db[_0x17790a[_0x9f1f('0x21')]],'as':_0x17790a['as'],'attributes':_0x17790a[_0x9f1f('0x22')],'include':_0x17790a[_0x9f1f('0x1f')]?_[_0x9f1f('0x20')](_0x17790a[_0x9f1f('0x1f')],function(_0x17ed3f){return{'model':db[_0x17ed3f[_0x9f1f('0x21')]],'as':_0x17ed3f['as'],'attributes':_0x17ed3f[_0x9f1f('0x22')]};}):[]};}):[]};}):[]:[]})[_0x9f1f('0x10')](function(_0x3a8759){logger['info'](_0x9f1f('0x23'),_0x2e14bc);logger[_0x9f1f('0x12')](_0x9f1f('0x23'),_0x2e14bc,JSON[_0x9f1f('0x14')](_0x3a8759));_0x3d050d(_0x3a8759);})[_0x9f1f('0x1a')](function(_0x13dc86){logger[_0x9f1f('0x15')](_0x9f1f('0x23'),_0x13dc86['message'],_0x2e14bc);_0x40dd7c(_0xb9b92[_0x9f1f('0x15')](0x1f4,_0x13dc86['message']));});});};
\ No newline at end of file
index b6be703..ce60572 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc978=['remove','update','emit','removeListener','register','length','chatQueue:','./chatQueue.events','save'];(function(_0x1b738b,_0x1fdd2d){var _0x1cfe00=function(_0x32ab10){while(--_0x32ab10){_0x1b738b['push'](_0x1b738b['shift']());}};_0x1cfe00(++_0x1fdd2d);}(_0xc978,0xcd));var _0x8c97=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc978[_0x20a584];return _0x4b41a8;};'use strict';var ChatQueueEvents=require(_0x8c97('0x0'));var events=[_0x8c97('0x1'),_0x8c97('0x2'),_0x8c97('0x3')];function createListener(_0x371c48,_0x44d4ea){return function(_0x5ef47d){_0x44d4ea[_0x8c97('0x4')](_0x371c48,_0x5ef47d);};}function removeListener(_0x23c28d,_0x3ad972){return function(){ChatQueueEvents[_0x8c97('0x5')](_0x23c28d,_0x3ad972);};}exports[_0x8c97('0x6')]=function(_0x2a9434){for(var _0xabd146=0x0,_0x524196=events[_0x8c97('0x7')];_0xabd146<_0x524196;_0xabd146++){var _0x1b5864=events[_0xabd146];var _0x332cd1=createListener(_0x8c97('0x8')+_0x1b5864,_0x2a9434);ChatQueueEvents['on'](_0x1b5864,_0x332cd1);}};
\ No newline at end of file
+var _0x826a=['update','emit','removeListener','register','length','chatQueue:','save'];(function(_0x582bd6,_0x40cd5d){var _0x20b86a=function(_0x59b423){while(--_0x59b423){_0x582bd6['push'](_0x582bd6['shift']());}};_0x20b86a(++_0x40cd5d);}(_0x826a,0x1aa));var _0xa826=function(_0x47bdcf,_0x456a5e){_0x47bdcf=_0x47bdcf-0x0;var _0x276e6e=_0x826a[_0x47bdcf];return _0x276e6e;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0xa826('0x0'),'remove',_0xa826('0x1')];function createListener(_0x50c70e,_0x376d53){return function(_0x19ba11){_0x376d53[_0xa826('0x2')](_0x50c70e,_0x19ba11);};}function removeListener(_0x34e1ad,_0x5372ab){return function(){ChatQueueEvents[_0xa826('0x3')](_0x34e1ad,_0x5372ab);};}exports[_0xa826('0x4')]=function(_0x3929d4){for(var _0x34327b=0x0,_0x45154f=events[_0xa826('0x5')];_0x34327b<_0x45154f;_0x34327b++){var _0x4339f9=events[_0x34327b];var _0x14c2ba=createListener(_0xa826('0x6')+_0x4339f9,_0x3929d4);ChatQueueEvents['on'](_0x4339f9,_0x14c2ba);}};
\ No newline at end of file
index e0c6db6..57edf5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x5881be,_0x5edf5d){var _0x8e63bf=function(_0x4dd2b2){while(--_0x4dd2b2){_0x5881be['push'](_0x5881be['shift']());}};_0x8e63bf(++_0x5edf5d);}(_0xe14b,0x93));var _0xbe14=function(_0x2a2ba5,_0x267228){_0x2a2ba5=_0x2a2ba5-0x0;var _0x1b049e=_0xe14b[_0x2a2ba5];return _0x1b049e;};'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
+var _0x008c=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','show','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','update','delete','/:id','removeTeams','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x5bce38,_0x446c70){var _0x5d45f8=function(_0x12b615){while(--_0x12b615){_0x5bce38['push'](_0x5bce38['shift']());}};_0x5d45f8(++_0x446c70);}(_0x008c,0x188));var _0xc008=function(_0x304d1f,_0x41e22f){_0x304d1f=_0x304d1f-0x0;var _0x3e3583=_0x008c[_0x304d1f];return _0x3e3583;};'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')]('/describe',auth[_0xc008('0xb')](),controller['describe']);router[_0xc008('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xa')]('/:id/members',auth['isAuthenticated'](),controller['getMembers']);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('0xe'),auth['isAuthenticated'](),controller[_0xc008('0x13')]);router[_0xc008('0x12')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x14')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xc008('0x15')]);router[_0xc008('0x16')](_0xc008('0x17'),auth[_0xc008('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth['isAuthenticated'](),controller[_0xc008('0x18')]);router[_0xc008('0x16')]('/:id/users',auth[_0xc008('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 7c8d03d..b959325 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f4e=['STRING','DATE','moment','exports'];(function(_0x3d2615,_0x549f3c){var _0x2dd84a=function(_0x59e751){while(--_0x59e751){_0x3d2615['push'](_0x3d2615['shift']());}};_0x2dd84a(++_0x549f3c);}(_0x6f4e,0x1ae));var _0xe6f4=function(_0x2e43f6,_0x13b0b6){_0x2e43f6=_0x2e43f6-0x0;var _0x4b0504=_0x6f4e[_0x2e43f6];return _0x4b0504;};'use strict';var moment=require(_0xe6f4('0x0'));var Sequelize=require('sequelize');module[_0xe6f4('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xe6f4('0x2')]},'joinAt':{'type':Sequelize[_0xe6f4('0x3')]},'leaveAt':{'type':Sequelize[_0xe6f4('0x3')]},'acceptAt':{'type':Sequelize[_0xe6f4('0x3')]},'exitAt':{'type':Sequelize[_0xe6f4('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8daf=['DATE','moment','sequelize','STRING'];(function(_0x3ce746,_0x1c2b9d){var _0x5dd2b2=function(_0x53f62b){while(--_0x53f62b){_0x3ce746['push'](_0x3ce746['shift']());}};_0x5dd2b2(++_0x1c2b9d);}(_0x8daf,0xf9));var _0xf8da=function(_0x1feb65,_0x59d59b){_0x1feb65=_0x1feb65-0x0;var _0xb2dbb3=_0x8daf[_0x1feb65];return _0xb2dbb3;};'use strict';var moment=require(_0xf8da('0x0'));var Sequelize=require(_0xf8da('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xf8da('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xf8da('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xf8da('0x3')]},'acceptAt':{'type':Sequelize[_0xf8da('0x3')]},'exitAt':{'type':Sequelize[_0xf8da('0x3')]},'reason':{'type':Sequelize[_0xf8da('0x2')]}};
\ No newline at end of file
index 1343a35..5904809 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a58=['mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','then','end','error','stack','name','index','ChatQueueReport','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','pick','filter','where','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','create','body','update','destroy','describe','eml-format','rimraf','fast-json-patch','moment'];(function(_0x141f91,_0xf75583){var _0x12cb51=function(_0x274fdc){while(--_0x274fdc){_0x141f91['push'](_0x141f91['shift']());}};_0x12cb51(++_0xf75583);}(_0x6a58,0x120));var _0x86a5=function(_0x13b392,_0x3481f2){_0x13b392=_0x13b392-0x0;var _0x39db24=_0x6a58[_0x13b392];return _0x39db24;};'use strict';var emlformat=require(_0x86a5('0x0'));var rimraf=require(_0x86a5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x86a5('0x2'));var rp=require('request-promise');var moment=require(_0x86a5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x86a5('0x4'));var util=require(_0x86a5('0x5'));var path=require(_0x86a5('0x6'));var sox=require(_0x86a5('0x7'));var csv=require(_0x86a5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x86a5('0x9'));var _=require(_0x86a5('0xa'));var squel=require('squel');var crypto=require(_0x86a5('0xb'));var jsforce=require(_0x86a5('0xc'));var deskjs=require(_0x86a5('0xd'));var toCsv=require(_0x86a5('0x8'));var querystring=require(_0x86a5('0xe'));var Papa=require(_0x86a5('0xf'));var Redis=require(_0x86a5('0x10'));var authService=require(_0x86a5('0x11'));var qs=require(_0x86a5('0x12'));var as=require(_0x86a5('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x86a5('0x14'));var utils=require('../../config/utils');var config=require(_0x86a5('0x15'));var licenseUtil=require(_0x86a5('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2df079,_0x320af5){_0x320af5=_0x320af5||0xcc;return function(_0x4b4655){if(_0x4b4655){return _0x2df079[_0x86a5('0x17')](_0x320af5);}return _0x2df079[_0x86a5('0x18')](_0x320af5)['end']();};}function respondWithResult(_0x40dcf6,_0x156a2b){_0x156a2b=_0x156a2b||0xc8;return function(_0xc8ccdb){if(_0xc8ccdb){return _0x40dcf6[_0x86a5('0x18')](_0x156a2b)[_0x86a5('0x19')](_0xc8ccdb);}};}function respondWithFilteredResult(_0x5bbdbe,_0x485829){return function(_0x12999d){if(_0x12999d){var _0x5c3c99=typeof _0x485829[_0x86a5('0x1a')]===_0x86a5('0x1b')&&typeof _0x485829[_0x86a5('0x1c')]==='undefined';var _0x497fce=_0x12999d[_0x86a5('0x1d')];var _0x173005=_0x5c3c99?0x0:_0x485829[_0x86a5('0x1a')];var _0x130048=_0x5c3c99?_0x12999d[_0x86a5('0x1d')]:_0x485829['offset']+_0x485829[_0x86a5('0x1c')];var _0x5480b1;if(_0x130048>=_0x497fce){_0x130048=_0x497fce;_0x5480b1=0xc8;}else{_0x5480b1=0xce;}_0x5bbdbe[_0x86a5('0x18')](_0x5480b1);return _0x5bbdbe[_0x86a5('0x1e')](_0x86a5('0x1f'),_0x173005+'-'+_0x130048+'/'+_0x497fce)[_0x86a5('0x19')](_0x12999d);}return null;};}function patchUpdates(_0x1f79b1){return function(_0x390feb){try{jsonpatch[_0x86a5('0x20')](_0x390feb,_0x1f79b1,!![]);}catch(_0x1b56c8){return BPromise['reject'](_0x1b56c8);}return _0x390feb['save']();};}function saveUpdates(_0x1f0af0,_0x39dcde){return function(_0x54ffc0){if(_0x54ffc0){return _0x54ffc0['update'](_0x1f0af0)['then'](function(_0x278715){return _0x278715;});}return null;};}function removeEntity(_0x2960f7,_0x2ef076){return function(_0x512df9){if(_0x512df9){return _0x512df9['destroy']()[_0x86a5('0x21')](function(){_0x2960f7[_0x86a5('0x18')](0xcc)[_0x86a5('0x22')]();});}};}function handleEntityNotFound(_0x56fd69,_0x38d7c4){return function(_0x566396){if(!_0x566396){_0x56fd69[_0x86a5('0x17')](0x194);}return _0x566396;};}function handleError(_0x573f65,_0x3d36a6){_0x3d36a6=_0x3d36a6||0x1f4;return function(_0x9ede82){logger[_0x86a5('0x23')](_0x9ede82[_0x86a5('0x24')]);if(_0x9ede82[_0x86a5('0x25')]){delete _0x9ede82[_0x86a5('0x25')];}_0x573f65['status'](_0x3d36a6)['send'](_0x9ede82);};}exports[_0x86a5('0x26')]=function(_0x9589d3,_0x1568b7){var _0xcbf54e={},_0x14a4d2={},_0xd3aee9={'count':0x0,'rows':[]};var _0x2b089a=_['map'](db[_0x86a5('0x27')]['rawAttributes'],function(_0x50420d){return{'name':_0x50420d[_0x86a5('0x28')],'type':_0x50420d['type'][_0x86a5('0x29')]};});_0x14a4d2[_0x86a5('0x2a')]=_[_0x86a5('0x2b')](_0x2b089a,_0x86a5('0x25'));_0x14a4d2[_0x86a5('0x2c')]=_[_0x86a5('0x2d')](_0x9589d3[_0x86a5('0x2c')]);_0x14a4d2[_0x86a5('0x2e')]=_[_0x86a5('0x2f')](_0x14a4d2[_0x86a5('0x2a')],_0x14a4d2[_0x86a5('0x2c')]);_0xcbf54e[_0x86a5('0x30')]=_[_0x86a5('0x2f')](_0x14a4d2[_0x86a5('0x2a')],qs['fields'](_0x9589d3[_0x86a5('0x2c')][_0x86a5('0x31')]));_0xcbf54e[_0x86a5('0x30')]=_0xcbf54e[_0x86a5('0x30')][_0x86a5('0x32')]?_0xcbf54e[_0x86a5('0x30')]:_0x14a4d2[_0x86a5('0x2a')];if(!_0x9589d3['query']['hasOwnProperty'](_0x86a5('0x33'))){_0xcbf54e[_0x86a5('0x1c')]=qs[_0x86a5('0x1c')](_0x9589d3[_0x86a5('0x2c')][_0x86a5('0x1c')]);_0xcbf54e[_0x86a5('0x1a')]=qs['offset'](_0x9589d3[_0x86a5('0x2c')][_0x86a5('0x1a')]);}_0xcbf54e['order']=qs[_0x86a5('0x34')](_0x9589d3[_0x86a5('0x2c')]['sort']);_0xcbf54e['where']=qs[_0x86a5('0x2e')](_[_0x86a5('0x35')](_0x9589d3[_0x86a5('0x2c')],_0x14a4d2[_0x86a5('0x2e')]),_0x2b089a);if(_0x9589d3['query'][_0x86a5('0x36')]){_0xcbf54e[_0x86a5('0x37')]=_[_0x86a5('0x38')](_0xcbf54e[_0x86a5('0x37')],{'$or':_[_0x86a5('0x2b')](_0x2b089a,function(_0x504045){if(_0x504045[_0x86a5('0x39')]!==_0x86a5('0x3a')){var _0x46fb24={};_0x46fb24[_0x504045['name']]={'$like':'%'+_0x9589d3[_0x86a5('0x2c')]['filter']+'%'};return _0x46fb24;}})});}_0xcbf54e=_['merge']({},_0xcbf54e,_0x9589d3['options']);var _0x2d7d5b={'where':_0xcbf54e[_0x86a5('0x37')]};return db['ChatQueueReport'][_0x86a5('0x1d')](_0x2d7d5b)[_0x86a5('0x21')](function(_0x57f609){_0xd3aee9[_0x86a5('0x1d')]=_0x57f609;if(_0x9589d3[_0x86a5('0x2c')][_0x86a5('0x3b')]){_0xcbf54e[_0x86a5('0x3c')]=[{'all':!![]}];}return db[_0x86a5('0x27')][_0x86a5('0x3d')](_0xcbf54e);})[_0x86a5('0x21')](function(_0x4d4cb3){_0xd3aee9[_0x86a5('0x3e')]=_0x4d4cb3;return _0xd3aee9;})[_0x86a5('0x21')](respondWithFilteredResult(_0x1568b7,_0xcbf54e))[_0x86a5('0x3f')](handleError(_0x1568b7,null));};exports[_0x86a5('0x40')]=function(_0x3f47ea,_0x59b9dd){var _0x27eb73={'raw':!![],'where':{'id':_0x3f47ea[_0x86a5('0x41')]['id']}},_0x48bba1={};_0x48bba1[_0x86a5('0x2a')]=_[_0x86a5('0x2d')](db[_0x86a5('0x27')][_0x86a5('0x42')]);_0x48bba1['query']=_[_0x86a5('0x2d')](_0x3f47ea[_0x86a5('0x2c')]);_0x48bba1['filters']=_[_0x86a5('0x2f')](_0x48bba1[_0x86a5('0x2a')],_0x48bba1[_0x86a5('0x2c')]);_0x27eb73[_0x86a5('0x30')]=_[_0x86a5('0x2f')](_0x48bba1[_0x86a5('0x2a')],qs[_0x86a5('0x31')](_0x3f47ea[_0x86a5('0x2c')][_0x86a5('0x31')]));_0x27eb73[_0x86a5('0x30')]=_0x27eb73[_0x86a5('0x30')]['length']?_0x27eb73['attributes']:_0x48bba1['model'];if(_0x3f47ea[_0x86a5('0x2c')][_0x86a5('0x3b')]){_0x27eb73[_0x86a5('0x3c')]=[{'all':!![]}];}_0x27eb73=_[_0x86a5('0x38')]({},_0x27eb73,_0x3f47ea[_0x86a5('0x43')]);return db[_0x86a5('0x27')]['find'](_0x27eb73)[_0x86a5('0x21')](handleEntityNotFound(_0x59b9dd,null))[_0x86a5('0x21')](respondWithResult(_0x59b9dd,null))['catch'](handleError(_0x59b9dd,null));};exports[_0x86a5('0x44')]=function(_0x3e1e16,_0x18aeab){return db[_0x86a5('0x27')][_0x86a5('0x44')](_0x3e1e16[_0x86a5('0x45')],{})['then'](respondWithResult(_0x18aeab,0xc9))[_0x86a5('0x3f')](handleError(_0x18aeab,null));};exports[_0x86a5('0x46')]=function(_0x1ed787,_0x11cef4){if(_0x1ed787[_0x86a5('0x45')]['id']){delete _0x1ed787[_0x86a5('0x45')]['id'];}return db[_0x86a5('0x27')]['find']({'where':{'id':_0x1ed787['params']['id']}})[_0x86a5('0x21')](handleEntityNotFound(_0x11cef4,null))['then'](saveUpdates(_0x1ed787['body'],null))[_0x86a5('0x21')](respondWithResult(_0x11cef4,null))[_0x86a5('0x3f')](handleError(_0x11cef4,null));};exports[_0x86a5('0x47')]=function(_0x11390a,_0x40df9c){return db['ChatQueueReport']['find']({'where':{'id':_0x11390a[_0x86a5('0x41')]['id']}})[_0x86a5('0x21')](handleEntityNotFound(_0x40df9c,null))[_0x86a5('0x21')](removeEntity(_0x40df9c,null))[_0x86a5('0x3f')](handleError(_0x40df9c,null));};exports['describe']=function(_0x2be006,_0xd526dd){return db[_0x86a5('0x27')][_0x86a5('0x48')]()[_0x86a5('0x21')](respondWithResult(_0xd526dd,null))[_0x86a5('0x3f')](handleError(_0xd526dd,null));};
\ No newline at end of file
+var _0xb1ef=['bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','ChatQueueReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','pick','where','merge','VIRTUAL','filter','rows','catch','show','params','rawAttributes','includeAll','options','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb1ef,0x93));var _0xfb1e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb1ef[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xfb1e('0x0'));var rimraf=require(_0xfb1e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfb1e('0x2'));var rp=require(_0xfb1e('0x3'));var moment=require(_0xfb1e('0x4'));var BPromise=require(_0xfb1e('0x5'));var Mustache=require(_0xfb1e('0x6'));var util=require(_0xfb1e('0x7'));var path=require(_0xfb1e('0x8'));var sox=require(_0xfb1e('0x9'));var csv=require('to-csv');var ejs=require(_0xfb1e('0xa'));var fs=require('fs');var fs_extra=require(_0xfb1e('0xb'));var _=require(_0xfb1e('0xc'));var squel=require(_0xfb1e('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xfb1e('0xe'));var toCsv=require(_0xfb1e('0xf'));var querystring=require(_0xfb1e('0x10'));var Papa=require(_0xfb1e('0x11'));var Redis=require(_0xfb1e('0x12'));var authService=require(_0xfb1e('0x13'));var qs=require(_0xfb1e('0x14'));var as=require(_0xfb1e('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfb1e('0x16'))(_0xfb1e('0x17'));var utils=require(_0xfb1e('0x18'));var config=require(_0xfb1e('0x19'));var licenseUtil=require(_0xfb1e('0x1a'));var db=require(_0xfb1e('0x1b'))['db'];function respondWithStatusCode(_0x2f7b2e,_0x4f33f8){_0x4f33f8=_0x4f33f8||0xcc;return function(_0x30b991){if(_0x30b991){return _0x2f7b2e[_0xfb1e('0x1c')](_0x4f33f8);}return _0x2f7b2e['status'](_0x4f33f8)[_0xfb1e('0x1d')]();};}function respondWithResult(_0x3a5f5a,_0x1cd003){_0x1cd003=_0x1cd003||0xc8;return function(_0x3abd2){if(_0x3abd2){return _0x3a5f5a[_0xfb1e('0x1e')](_0x1cd003)['json'](_0x3abd2);}};}function respondWithFilteredResult(_0x157f6e,_0x11ad1d){return function(_0x435969){if(_0x435969){var _0xa02b94=typeof _0x11ad1d[_0xfb1e('0x1f')]==='undefined'&&typeof _0x11ad1d[_0xfb1e('0x20')]===_0xfb1e('0x21');var _0x3c819d=_0x435969[_0xfb1e('0x22')];var _0x2b0116=_0xa02b94?0x0:_0x11ad1d['offset'];var _0x33215e=_0xa02b94?_0x435969[_0xfb1e('0x22')]:_0x11ad1d[_0xfb1e('0x1f')]+_0x11ad1d[_0xfb1e('0x20')];var _0x41d142;if(_0x33215e>=_0x3c819d){_0x33215e=_0x3c819d;_0x41d142=0xc8;}else{_0x41d142=0xce;}_0x157f6e['status'](_0x41d142);return _0x157f6e[_0xfb1e('0x23')]('Content-Range',_0x2b0116+'-'+_0x33215e+'/'+_0x3c819d)['json'](_0x435969);}return null;};}function patchUpdates(_0x20345a){return function(_0x4d443d){try{jsonpatch[_0xfb1e('0x24')](_0x4d443d,_0x20345a,!![]);}catch(_0x3c5f53){return BPromise[_0xfb1e('0x25')](_0x3c5f53);}return _0x4d443d[_0xfb1e('0x26')]();};}function saveUpdates(_0x548dc0,_0x193fbf){return function(_0x447d0c){if(_0x447d0c){return _0x447d0c[_0xfb1e('0x27')](_0x548dc0)[_0xfb1e('0x28')](function(_0x3dfba1){return _0x3dfba1;});}return null;};}function removeEntity(_0x34d37d,_0x1df2b8){return function(_0x1cbceb){if(_0x1cbceb){return _0x1cbceb[_0xfb1e('0x29')]()[_0xfb1e('0x28')](function(){_0x34d37d[_0xfb1e('0x1e')](0xcc)[_0xfb1e('0x1d')]();});}};}function handleEntityNotFound(_0x2b30d8,_0x47be5e){return function(_0x535e0d){if(!_0x535e0d){_0x2b30d8['sendStatus'](0x194);}return _0x535e0d;};}function handleError(_0x1f9a0a,_0x1a62af){_0x1a62af=_0x1a62af||0x1f4;return function(_0x20826c){logger[_0xfb1e('0x2a')](_0x20826c[_0xfb1e('0x2b')]);if(_0x20826c[_0xfb1e('0x2c')]){delete _0x20826c[_0xfb1e('0x2c')];}_0x1f9a0a[_0xfb1e('0x1e')](_0x1a62af)[_0xfb1e('0x2d')](_0x20826c);};}exports['index']=function(_0x21a1a1,_0x2dfa98){var _0x33a0e3={},_0x201881={},_0x3aa896={'count':0x0,'rows':[]};var _0x15f10d=_[_0xfb1e('0x2e')](db[_0xfb1e('0x2f')]['rawAttributes'],function(_0x35f2f3){return{'name':_0x35f2f3[_0xfb1e('0x30')],'type':_0x35f2f3[_0xfb1e('0x31')]['key']};});_0x201881[_0xfb1e('0x32')]=_['map'](_0x15f10d,_0xfb1e('0x2c'));_0x201881[_0xfb1e('0x33')]=_[_0xfb1e('0x34')](_0x21a1a1[_0xfb1e('0x33')]);_0x201881[_0xfb1e('0x35')]=_[_0xfb1e('0x36')](_0x201881[_0xfb1e('0x32')],_0x201881[_0xfb1e('0x33')]);_0x33a0e3[_0xfb1e('0x37')]=_['intersection'](_0x201881[_0xfb1e('0x32')],qs[_0xfb1e('0x38')](_0x21a1a1['query'][_0xfb1e('0x38')]));_0x33a0e3[_0xfb1e('0x37')]=_0x33a0e3[_0xfb1e('0x37')][_0xfb1e('0x39')]?_0x33a0e3[_0xfb1e('0x37')]:_0x201881[_0xfb1e('0x32')];if(!_0x21a1a1['query']['hasOwnProperty'](_0xfb1e('0x3a'))){_0x33a0e3[_0xfb1e('0x20')]=qs['limit'](_0x21a1a1[_0xfb1e('0x33')]['limit']);_0x33a0e3[_0xfb1e('0x1f')]=qs[_0xfb1e('0x1f')](_0x21a1a1['query'][_0xfb1e('0x1f')]);}_0x33a0e3['order']=qs[_0xfb1e('0x3b')](_0x21a1a1[_0xfb1e('0x33')][_0xfb1e('0x3b')]);_0x33a0e3['where']=qs['filters'](_[_0xfb1e('0x3c')](_0x21a1a1[_0xfb1e('0x33')],_0x201881[_0xfb1e('0x35')]),_0x15f10d);if(_0x21a1a1['query']['filter']){_0x33a0e3[_0xfb1e('0x3d')]=_[_0xfb1e('0x3e')](_0x33a0e3[_0xfb1e('0x3d')],{'$or':_[_0xfb1e('0x2e')](_0x15f10d,function(_0x3764e3){if(_0x3764e3[_0xfb1e('0x31')]!==_0xfb1e('0x3f')){var _0x4eb62c={};_0x4eb62c[_0x3764e3['name']]={'$like':'%'+_0x21a1a1[_0xfb1e('0x33')][_0xfb1e('0x40')]+'%'};return _0x4eb62c;}})});}_0x33a0e3=_[_0xfb1e('0x3e')]({},_0x33a0e3,_0x21a1a1['options']);var _0x220512={'where':_0x33a0e3[_0xfb1e('0x3d')]};return db[_0xfb1e('0x2f')][_0xfb1e('0x22')](_0x220512)['then'](function(_0x18aff7){_0x3aa896['count']=_0x18aff7;if(_0x21a1a1[_0xfb1e('0x33')]['includeAll']){_0x33a0e3['include']=[{'all':!![]}];}return db[_0xfb1e('0x2f')]['findAll'](_0x33a0e3);})[_0xfb1e('0x28')](function(_0x2cc9a0){_0x3aa896[_0xfb1e('0x41')]=_0x2cc9a0;return _0x3aa896;})[_0xfb1e('0x28')](respondWithFilteredResult(_0x2dfa98,_0x33a0e3))[_0xfb1e('0x42')](handleError(_0x2dfa98,null));};exports[_0xfb1e('0x43')]=function(_0x110e3e,_0xa8f62d){var _0x6797a9={'raw':!![],'where':{'id':_0x110e3e[_0xfb1e('0x44')]['id']}},_0x28401c={};_0x28401c[_0xfb1e('0x32')]=_[_0xfb1e('0x34')](db['ChatQueueReport'][_0xfb1e('0x45')]);_0x28401c[_0xfb1e('0x33')]=_[_0xfb1e('0x34')](_0x110e3e['query']);_0x28401c[_0xfb1e('0x35')]=_['intersection'](_0x28401c[_0xfb1e('0x32')],_0x28401c[_0xfb1e('0x33')]);_0x6797a9[_0xfb1e('0x37')]=_[_0xfb1e('0x36')](_0x28401c[_0xfb1e('0x32')],qs['fields'](_0x110e3e[_0xfb1e('0x33')]['fields']));_0x6797a9[_0xfb1e('0x37')]=_0x6797a9['attributes'][_0xfb1e('0x39')]?_0x6797a9[_0xfb1e('0x37')]:_0x28401c['model'];if(_0x110e3e[_0xfb1e('0x33')][_0xfb1e('0x46')]){_0x6797a9['include']=[{'all':!![]}];}_0x6797a9=_[_0xfb1e('0x3e')]({},_0x6797a9,_0x110e3e[_0xfb1e('0x47')]);return db[_0xfb1e('0x2f')][_0xfb1e('0x48')](_0x6797a9)[_0xfb1e('0x28')](handleEntityNotFound(_0xa8f62d,null))[_0xfb1e('0x28')](respondWithResult(_0xa8f62d,null))[_0xfb1e('0x42')](handleError(_0xa8f62d,null));};exports[_0xfb1e('0x49')]=function(_0x51d055,_0x357e37){return db[_0xfb1e('0x2f')][_0xfb1e('0x49')](_0x51d055[_0xfb1e('0x4a')],{})[_0xfb1e('0x28')](respondWithResult(_0x357e37,0xc9))[_0xfb1e('0x42')](handleError(_0x357e37,null));};exports[_0xfb1e('0x27')]=function(_0x11eae0,_0x41f936){if(_0x11eae0[_0xfb1e('0x4a')]['id']){delete _0x11eae0['body']['id'];}return db[_0xfb1e('0x2f')]['find']({'where':{'id':_0x11eae0[_0xfb1e('0x44')]['id']}})[_0xfb1e('0x28')](handleEntityNotFound(_0x41f936,null))['then'](saveUpdates(_0x11eae0['body'],null))['then'](respondWithResult(_0x41f936,null))[_0xfb1e('0x42')](handleError(_0x41f936,null));};exports[_0xfb1e('0x29')]=function(_0x54b5d3,_0x580d4e){return db[_0xfb1e('0x2f')][_0xfb1e('0x48')]({'where':{'id':_0x54b5d3[_0xfb1e('0x44')]['id']}})['then'](handleEntityNotFound(_0x580d4e,null))['then'](removeEntity(_0x580d4e,null))[_0xfb1e('0x42')](handleError(_0x580d4e,null));};exports[_0xfb1e('0x4b')]=function(_0x20330c,_0x42dc12){return db[_0xfb1e('0x2f')][_0xfb1e('0x4b')]()['then'](respondWithResult(_0x42dc12,null))[_0xfb1e('0x42')](handleError(_0x42dc12,null));};
\ No newline at end of file
index bf8123c..0889d5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','report_chat_queue','uniqueid','lodash'];(function(_0x49bfb8,_0x5b6e2b){var _0x1be0b7=function(_0x3df70f){while(--_0x3df70f){_0x49bfb8['push'](_0x49bfb8['shift']());}};_0x1be0b7(++_0x5b6e2b);}(_0xb10b,0x12a));var _0xbb10=function(_0x2e1095,_0x3a7d94){_0x2e1095=_0x2e1095-0x0;var _0x3b2455=_0xb10b[_0x2e1095];return _0x3b2455;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var logger=require(_0xbb10('0x1'))(_0xbb10('0x2'));var moment=require(_0xbb10('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb10('0x4'));var fs=require('fs');var path=require(_0xbb10('0x5'));var rimraf=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var attributes=require(_0xbb10('0x8'));module[_0xbb10('0x9')]=function(_0x481979,_0x328583){return _0x481979[_0xbb10('0xa')]('ChatQueueReport',attributes,{'tableName':_0xbb10('0xb'),'paranoid':![],'indexes':[{'name':_0xbb10('0xc'),'fields':[_0xbb10('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8b0=['define','report_chat_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x44a307,_0x9e4eff){var _0x55f142=function(_0x3b8ba6){while(--_0x3b8ba6){_0x44a307['push'](_0x44a307['shift']());}};_0x55f142(++_0x9e4eff);}(_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('./chatQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('ChatQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index f3e642d..b9d05d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf40e=['moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueueReport,\x20%s,\x20%s','message','catch','CreateChatQueueReport','options','raw','then','debug','UpdateChatQueueReport','ChatQueueReport','update','where','attributes','lodash','util'];(function(_0x25f103,_0x427174){var _0x5eb931=function(_0x19aae9){while(--_0x19aae9){_0x25f103['push'](_0x25f103['shift']());}};_0x5eb931(++_0x427174);}(_0xf40e,0x12a));var _0xef40=function(_0x323efc,_0x3270ac){_0x323efc=_0x323efc-0x0;var _0x898298=_0xf40e[_0x323efc];return _0x898298;};'use strict';var _=require(_0xef40('0x0'));var util=require(_0xef40('0x1'));var moment=require(_0xef40('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xef40('0x3'));var db=require(_0xef40('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xef40('0x5'))(_0xef40('0x6'));var config=require(_0xef40('0x7'));var jayson=require(_0xef40('0x8'));var client=jayson[_0xef40('0x9')][_0xef40('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x23e98d,_0x5cc8e4,_0x311679){return new BPromise(function(_0x625a12,_0x5d89fd){return client['request'](_0x23e98d,_0x311679)['then'](function(_0x1374bb){logger[_0xef40('0xb')]('ChatQueueReport,\x20%s,\x20%s',_0x5cc8e4,_0xef40('0xc'));logger['debug'](_0xef40('0xd'),_0x5cc8e4,_0xef40('0xc'),JSON[_0xef40('0xe')](_0x1374bb));if(_0x1374bb[_0xef40('0xf')]){if(_0x1374bb['error'][_0xef40('0x10')]===0x1f4){logger[_0xef40('0xf')](_0xef40('0x11'),_0x5cc8e4,_0x1374bb['error'][_0xef40('0x12')]);return _0x5d89fd(_0x1374bb[_0xef40('0xf')][_0xef40('0x12')]);}logger['error'](_0xef40('0x11'),_0x5cc8e4,_0x1374bb[_0xef40('0xf')]['message']);return _0x625a12(_0x1374bb[_0xef40('0xf')][_0xef40('0x12')]);}else{logger[_0xef40('0xb')]('ChatQueueReport,\x20%s,\x20%s',_0x5cc8e4,_0xef40('0xc'));_0x625a12(_0x1374bb['result'][_0xef40('0x12')]);}})[_0xef40('0x13')](function(_0x288200){logger[_0xef40('0xf')](_0xef40('0x11'),_0x5cc8e4,_0x288200);_0x5d89fd(_0x288200);});});}exports[_0xef40('0x14')]=function(_0x2a5153){var _0x2b2557=this;return new Promise(function(_0x4b026e,_0x1c3014){return db['ChatQueueReport']['create'](_0x2a5153['body'],{'raw':_0x2a5153['options']?_0x2a5153[_0xef40('0x15')][_0xef40('0x16')]===undefined?!![]:![]:!![]})[_0xef40('0x17')](function(_0x38bf2a){logger['info'](_0xef40('0x14'),_0x2a5153);logger[_0xef40('0x18')](_0xef40('0x14'),_0x2a5153,JSON['stringify'](_0x38bf2a));_0x4b026e(_0x38bf2a);})[_0xef40('0x13')](function(_0x1009c6){logger[_0xef40('0xf')](_0xef40('0x14'),_0x1009c6[_0xef40('0x12')],_0x2a5153);_0x1c3014(_0x2b2557['error'](0x1f4,_0x1009c6[_0xef40('0x12')]));});});};exports[_0xef40('0x19')]=function(_0x2d6e23){var _0x5b51a3=this;return new Promise(function(_0x22dd34,_0x511e19){return db[_0xef40('0x1a')][_0xef40('0x1b')](_0x2d6e23['body'],{'raw':_0x2d6e23[_0xef40('0x15')]?_0x2d6e23['options'][_0xef40('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d6e23[_0xef40('0x15')]?_0x2d6e23[_0xef40('0x15')][_0xef40('0x1c')]||null:null,'attributes':_0x2d6e23['options']?_0x2d6e23[_0xef40('0x15')][_0xef40('0x1d')]||null:null,'limit':_0x2d6e23[_0xef40('0x15')]?_0x2d6e23[_0xef40('0x15')]['limit']||null:null})[_0xef40('0x17')](function(_0x434fb6){logger[_0xef40('0xb')]('UpdateChatQueueReport',_0x2d6e23);logger['debug'](_0xef40('0x19'),_0x2d6e23,JSON['stringify'](_0x434fb6));_0x22dd34(_0x434fb6);})[_0xef40('0x13')](function(_0x12b938){logger[_0xef40('0xf')](_0xef40('0x19'),_0x12b938['message'],_0x2d6e23);_0x511e19(_0x5b51a3[_0xef40('0xf')](0x1f4,_0x12b938[_0xef40('0x12')]));});});};
\ No newline at end of file
+var _0xfac9=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueueReport,\x20%s,\x20%s','message','result','CreateChatQueueReport','create','body','options','catch','ChatQueueReport','update','raw','where','attributes','limit','UpdateChatQueueReport','lodash','moment','bluebird','ioredis'];(function(_0x385169,_0x5b7caa){var _0x56929d=function(_0x143849){while(--_0x143849){_0x385169['push'](_0x385169['shift']());}};_0x56929d(++_0x5b7caa);}(_0xfac9,0x1d0));var _0x9fac=function(_0x3e15be,_0x291179){_0x3e15be=_0x3e15be-0x0;var _0xbac4ad=_0xfac9[_0x3e15be];return _0xbac4ad;};'use strict';var _=require(_0x9fac('0x0'));var util=require('util');var moment=require(_0x9fac('0x1'));var BPromise=require(_0x9fac('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9fac('0x3'));var db=require(_0x9fac('0x4'))['db'];var utils=require(_0x9fac('0x5'));var logger=require(_0x9fac('0x6'))(_0x9fac('0x7'));var config=require(_0x9fac('0x8'));var jayson=require(_0x9fac('0x9'));var client=jayson[_0x9fac('0xa')][_0x9fac('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x30c675,_0x3fece1,_0x5c5982){return new BPromise(function(_0x4dd67d,_0x523780){return client[_0x9fac('0xc')](_0x30c675,_0x5c5982)[_0x9fac('0xd')](function(_0x17aedb){logger[_0x9fac('0xe')]('ChatQueueReport,\x20%s,\x20%s',_0x3fece1,_0x9fac('0xf'));logger[_0x9fac('0x10')](_0x9fac('0x11'),_0x3fece1,_0x9fac('0xf'),JSON[_0x9fac('0x12')](_0x17aedb));if(_0x17aedb['error']){if(_0x17aedb[_0x9fac('0x13')][_0x9fac('0x14')]===0x1f4){logger[_0x9fac('0x13')](_0x9fac('0x15'),_0x3fece1,_0x17aedb[_0x9fac('0x13')]['message']);return _0x523780(_0x17aedb['error'][_0x9fac('0x16')]);}logger[_0x9fac('0x13')](_0x9fac('0x15'),_0x3fece1,_0x17aedb['error']['message']);return _0x4dd67d(_0x17aedb[_0x9fac('0x13')]['message']);}else{logger['info'](_0x9fac('0x15'),_0x3fece1,_0x9fac('0xf'));_0x4dd67d(_0x17aedb[_0x9fac('0x17')][_0x9fac('0x16')]);}})['catch'](function(_0xfee210){logger[_0x9fac('0x13')]('ChatQueueReport,\x20%s,\x20%s',_0x3fece1,_0xfee210);_0x523780(_0xfee210);});});}exports[_0x9fac('0x18')]=function(_0x1c9239){var _0x1544bd=this;return new Promise(function(_0x13cca1,_0x3adf22){return db['ChatQueueReport'][_0x9fac('0x19')](_0x1c9239[_0x9fac('0x1a')],{'raw':_0x1c9239[_0x9fac('0x1b')]?_0x1c9239[_0x9fac('0x1b')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x195bf0){logger[_0x9fac('0xe')](_0x9fac('0x18'),_0x1c9239);logger[_0x9fac('0x10')](_0x9fac('0x18'),_0x1c9239,JSON['stringify'](_0x195bf0));_0x13cca1(_0x195bf0);})[_0x9fac('0x1c')](function(_0x2d9083){logger[_0x9fac('0x13')](_0x9fac('0x18'),_0x2d9083[_0x9fac('0x16')],_0x1c9239);_0x3adf22(_0x1544bd['error'](0x1f4,_0x2d9083['message']));});});};exports['UpdateChatQueueReport']=function(_0x3cec7c){var _0x20245c=this;return new Promise(function(_0x142edf,_0x1f29bc){return db[_0x9fac('0x1d')][_0x9fac('0x1e')](_0x3cec7c[_0x9fac('0x1a')],{'raw':_0x3cec7c[_0x9fac('0x1b')]?_0x3cec7c[_0x9fac('0x1b')][_0x9fac('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3cec7c[_0x9fac('0x1b')]?_0x3cec7c['options'][_0x9fac('0x20')]||null:null,'attributes':_0x3cec7c[_0x9fac('0x1b')]?_0x3cec7c[_0x9fac('0x1b')][_0x9fac('0x21')]||null:null,'limit':_0x3cec7c[_0x9fac('0x1b')]?_0x3cec7c['options'][_0x9fac('0x22')]||null:null})[_0x9fac('0xd')](function(_0x3da62f){logger[_0x9fac('0xe')]('UpdateChatQueueReport',_0x3cec7c);logger[_0x9fac('0x10')](_0x9fac('0x23'),_0x3cec7c,JSON[_0x9fac('0x12')](_0x3da62f));_0x142edf(_0x3da62f);})[_0x9fac('0x1c')](function(_0x299e37){logger[_0x9fac('0x13')](_0x9fac('0x23'),_0x299e37[_0x9fac('0x16')],_0x3cec7c);_0x1f29bc(_0x20245c[_0x9fac('0x13')](0x1f4,_0x299e37[_0x9fac('0x16')]));});});};
\ No newline at end of file
index 930cc87..5157023 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45f5=['index','/describe','describe','show','post','put','/:id','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated'];(function(_0x136cce,_0x23d6f7){var _0x22cd16=function(_0x2522d8){while(--_0x2522d8){_0x136cce['push'](_0x136cce['shift']());}};_0x22cd16(++_0x23d6f7);}(_0x45f5,0x15e));var _0x545f=function(_0x4191af,_0x5783da){_0x4191af=_0x4191af-0x0;var _0x27bebf=_0x45f5[_0x4191af];return _0x27bebf;};'use strict';var multer=require(_0x545f('0x0'));var util=require(_0x545f('0x1'));var path=require(_0x545f('0x2'));var timeout=require(_0x545f('0x3'));var express=require('express');var router=express[_0x545f('0x4')]();var fs_extra=require(_0x545f('0x5'));var auth=require(_0x545f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x545f('0x7'));var controller=require('./chatQueueReport.controller');router[_0x545f('0x8')]('/',auth[_0x545f('0x9')](),controller[_0x545f('0xa')]);router[_0x545f('0x8')](_0x545f('0xb'),auth[_0x545f('0x9')](),controller[_0x545f('0xc')]);router[_0x545f('0x8')]('/:id',auth[_0x545f('0x9')](),controller[_0x545f('0xd')]);router[_0x545f('0xe')]('/',auth[_0x545f('0x9')](),controller['create']);router[_0x545f('0xf')](_0x545f('0x10'),auth['isAuthenticated'](),controller[_0x545f('0x11')]);router[_0x545f('0x12')](_0x545f('0x10'),auth[_0x545f('0x9')](),controller['destroy']);module[_0x545f('0x13')]=router;
\ No newline at end of file
+var _0x7957=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueueReport.controller','isAuthenticated','index','get','/describe','post','create','put','/:id','update','delete','destroy','multer','util','path'];(function(_0x124469,_0x4d8bf5){var _0x2625d5=function(_0x18a09a){while(--_0x18a09a){_0x124469['push'](_0x124469['shift']());}};_0x2625d5(++_0x4d8bf5);}(_0x7957,0x89));var _0x7795=function(_0x254abd,_0x1ab7f0){_0x254abd=_0x254abd-0x0;var _0x31bf1b=_0x7957[_0x254abd];return _0x31bf1b;};'use strict';var multer=require(_0x7795('0x0'));var util=require(_0x7795('0x1'));var path=require(_0x7795('0x2'));var timeout=require('connect-timeout');var express=require(_0x7795('0x3'));var router=express[_0x7795('0x4')]();var fs_extra=require(_0x7795('0x5'));var auth=require(_0x7795('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x7795('0x7'));var controller=require(_0x7795('0x8'));router['get']('/',auth[_0x7795('0x9')](),controller[_0x7795('0xa')]);router[_0x7795('0xb')](_0x7795('0xc'),auth[_0x7795('0x9')](),controller['describe']);router[_0x7795('0xb')]('/:id',auth[_0x7795('0x9')](),controller['show']);router[_0x7795('0xd')]('/',auth[_0x7795('0x9')](),controller[_0x7795('0xe')]);router[_0x7795('0xf')](_0x7795('0x10'),auth[_0x7795('0x9')](),controller[_0x7795('0x11')]);router[_0x7795('0x12')](_0x7795('0x10'),auth[_0x7795('0x9')](),controller[_0x7795('0x13')]);module['exports']=router;
\ No newline at end of file
index 98b842c..404d887 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x2c149b,_0x3ede5b){var _0x632205=function(_0x5a1968){while(--_0x5a1968){_0x2c149b['push'](_0x2c149b['shift']());}};_0x632205(++_0x3ede5b);}(_0x70e0,0x17b));var _0x070e=function(_0x4e5ba1,_0x2aec01){_0x4e5ba1=_0x4e5ba1-0x0;var _0x69246d=_0x70e0[_0x4e5ba1];return _0x69246d;};'use strict';var moment=require(_0x070e('0x0'));var Sequelize=require(_0x070e('0x1'));module[_0x070e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5')),'allowNull':![],'defaultValue':_0x070e('0x5')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x070e('0x6')]}};
\ No newline at end of file
+var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x4eaa4c,_0x2f7422){var _0x15aec6=function(_0x23efc9){while(--_0x23efc9){_0x4eaa4c['push'](_0x4eaa4c['shift']());}};_0x15aec6(++_0x2f7422);}(_0xb43b,0x1b2));var _0xbb43=function(_0x166a0e,_0x5a4220){_0x166a0e=_0x166a0e-0x0;var _0x3612b4=_0xb43b[_0x166a0e];return _0x3612b4;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
index f7f29d4..132495f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfda7=['../../config/environment','../../config/license/util','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','length','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','ChatTransferReport','findAll','rows','catch','show','params','includeAll','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','ejs','lodash','squel','crypto','jsforce','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger'];(function(_0x109481,_0x568f17){var _0x14efe0=function(_0x6f1885){while(--_0x6f1885){_0x109481['push'](_0x109481['shift']());}};_0x14efe0(++_0x568f17);}(_0xfda7,0x1d1));var _0x7fda=function(_0x164ba0,_0x553e17){_0x164ba0=_0x164ba0-0x0;var _0x10ad13=_0xfda7[_0x164ba0];return _0x10ad13;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7fda('0x0'));var zipdir=require(_0x7fda('0x1'));var jsonpatch=require(_0x7fda('0x2'));var rp=require(_0x7fda('0x3'));var moment=require('moment');var BPromise=require(_0x7fda('0x4'));var Mustache=require('mustache');var util=require(_0x7fda('0x5'));var path=require(_0x7fda('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7fda('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7fda('0x8'));var squel=require(_0x7fda('0x9'));var crypto=require(_0x7fda('0xa'));var jsforce=require(_0x7fda('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x7fda('0xc'));var querystring=require('querystring');var Papa=require(_0x7fda('0xd'));var Redis=require('ioredis');var authService=require(_0x7fda('0xe'));var qs=require(_0x7fda('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7fda('0x10'));var logger=require(_0x7fda('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x7fda('0x12'));var licenseUtil=require(_0x7fda('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1348d7,_0x313751){_0x313751=_0x313751||0xcc;return function(_0xac5fe2){if(_0xac5fe2){return _0x1348d7[_0x7fda('0x14')](_0x313751);}return _0x1348d7['status'](_0x313751)['end']();};}function respondWithResult(_0x535271,_0x15cad4){_0x15cad4=_0x15cad4||0xc8;return function(_0x25c2c7){if(_0x25c2c7){return _0x535271[_0x7fda('0x15')](_0x15cad4)[_0x7fda('0x16')](_0x25c2c7);}};}function respondWithFilteredResult(_0x59f88c,_0x58ea82){return function(_0x5a7030){if(_0x5a7030){var _0x44fcc7=typeof _0x58ea82[_0x7fda('0x17')]==='undefined'&&typeof _0x58ea82[_0x7fda('0x18')]===_0x7fda('0x19');var _0x439696=_0x5a7030[_0x7fda('0x1a')];var _0x46a9f4=_0x44fcc7?0x0:_0x58ea82[_0x7fda('0x17')];var _0x5393e1=_0x44fcc7?_0x5a7030[_0x7fda('0x1a')]:_0x58ea82[_0x7fda('0x17')]+_0x58ea82[_0x7fda('0x18')];var _0x10f101;if(_0x5393e1>=_0x439696){_0x5393e1=_0x439696;_0x10f101=0xc8;}else{_0x10f101=0xce;}_0x59f88c[_0x7fda('0x15')](_0x10f101);return _0x59f88c['set'](_0x7fda('0x1b'),_0x46a9f4+'-'+_0x5393e1+'/'+_0x439696)['json'](_0x5a7030);}return null;};}function patchUpdates(_0xb535e5){return function(_0x82f029){try{jsonpatch[_0x7fda('0x1c')](_0x82f029,_0xb535e5,!![]);}catch(_0x4b2c4c){return BPromise['reject'](_0x4b2c4c);}return _0x82f029[_0x7fda('0x1d')]();};}function saveUpdates(_0xe66484,_0x39a03e){return function(_0x708bfc){if(_0x708bfc){return _0x708bfc[_0x7fda('0x1e')](_0xe66484)[_0x7fda('0x1f')](function(_0x82b97){return _0x82b97;});}return null;};}function removeEntity(_0xe2d8b2,_0x5957d4){return function(_0x2245b3){if(_0x2245b3){return _0x2245b3[_0x7fda('0x20')]()[_0x7fda('0x1f')](function(){_0xe2d8b2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x43cce9,_0x541761){return function(_0x365f9b){if(!_0x365f9b){_0x43cce9[_0x7fda('0x14')](0x194);}return _0x365f9b;};}function handleError(_0x11ae9c,_0xb85218){_0xb85218=_0xb85218||0x1f4;return function(_0x425a89){logger['error'](_0x425a89[_0x7fda('0x21')]);if(_0x425a89[_0x7fda('0x22')]){delete _0x425a89['name'];}_0x11ae9c[_0x7fda('0x15')](_0xb85218)[_0x7fda('0x23')](_0x425a89);};}exports[_0x7fda('0x24')]=function(_0x181fbd,_0x300f7c){var _0xe23c35={},_0x49db07={},_0x38abff={'count':0x0,'rows':[]};var _0x455656=_[_0x7fda('0x25')](db['ChatTransferReport'][_0x7fda('0x26')],function(_0x12ecc1){return{'name':_0x12ecc1[_0x7fda('0x27')],'type':_0x12ecc1[_0x7fda('0x28')][_0x7fda('0x29')]};});_0x49db07[_0x7fda('0x2a')]=_['map'](_0x455656,_0x7fda('0x22'));_0x49db07['query']=_[_0x7fda('0x2b')](_0x181fbd[_0x7fda('0x2c')]);_0x49db07['filters']=_['intersection'](_0x49db07[_0x7fda('0x2a')],_0x49db07[_0x7fda('0x2c')]);_0xe23c35['attributes']=_[_0x7fda('0x2d')](_0x49db07[_0x7fda('0x2a')],qs[_0x7fda('0x2e')](_0x181fbd['query']['fields']));_0xe23c35[_0x7fda('0x2f')]=_0xe23c35[_0x7fda('0x2f')][_0x7fda('0x30')]?_0xe23c35[_0x7fda('0x2f')]:_0x49db07['model'];if(!_0x181fbd[_0x7fda('0x2c')]['hasOwnProperty']('nolimit')){_0xe23c35[_0x7fda('0x18')]=qs[_0x7fda('0x18')](_0x181fbd['query']['limit']);_0xe23c35[_0x7fda('0x17')]=qs[_0x7fda('0x17')](_0x181fbd['query'][_0x7fda('0x17')]);}_0xe23c35[_0x7fda('0x31')]=qs[_0x7fda('0x32')](_0x181fbd[_0x7fda('0x2c')]['sort']);_0xe23c35[_0x7fda('0x33')]=qs[_0x7fda('0x34')](_[_0x7fda('0x35')](_0x181fbd[_0x7fda('0x2c')],_0x49db07[_0x7fda('0x34')]),_0x455656);if(_0x181fbd['query'][_0x7fda('0x36')]){_0xe23c35[_0x7fda('0x33')]=_[_0x7fda('0x37')](_0xe23c35[_0x7fda('0x33')],{'$or':_[_0x7fda('0x25')](_0x455656,function(_0x2c95dd){if(_0x2c95dd[_0x7fda('0x28')]!==_0x7fda('0x38')){var _0x3eb8e5={};_0x3eb8e5[_0x2c95dd[_0x7fda('0x22')]]={'$like':'%'+_0x181fbd[_0x7fda('0x2c')][_0x7fda('0x36')]+'%'};return _0x3eb8e5;}})});}_0xe23c35=_['merge']({},_0xe23c35,_0x181fbd[_0x7fda('0x39')]);var _0xfdb990={'where':_0xe23c35[_0x7fda('0x33')]};return db[_0x7fda('0x3a')][_0x7fda('0x1a')](_0xfdb990)[_0x7fda('0x1f')](function(_0x2cb3fa){_0x38abff['count']=_0x2cb3fa;if(_0x181fbd[_0x7fda('0x2c')]['includeAll']){_0xe23c35['include']=[{'all':!![]}];}return db[_0x7fda('0x3a')][_0x7fda('0x3b')](_0xe23c35);})[_0x7fda('0x1f')](function(_0xc933ed){_0x38abff[_0x7fda('0x3c')]=_0xc933ed;return _0x38abff;})[_0x7fda('0x1f')](respondWithFilteredResult(_0x300f7c,_0xe23c35))[_0x7fda('0x3d')](handleError(_0x300f7c,null));};exports[_0x7fda('0x3e')]=function(_0x279658,_0x148355){var _0x5e57f1={'raw':!![],'where':{'id':_0x279658[_0x7fda('0x3f')]['id']}},_0x25a20d={};_0x25a20d[_0x7fda('0x2a')]=_[_0x7fda('0x2b')](db['ChatTransferReport'][_0x7fda('0x26')]);_0x25a20d[_0x7fda('0x2c')]=_[_0x7fda('0x2b')](_0x279658[_0x7fda('0x2c')]);_0x25a20d[_0x7fda('0x34')]=_['intersection'](_0x25a20d[_0x7fda('0x2a')],_0x25a20d[_0x7fda('0x2c')]);_0x5e57f1['attributes']=_[_0x7fda('0x2d')](_0x25a20d[_0x7fda('0x2a')],qs[_0x7fda('0x2e')](_0x279658[_0x7fda('0x2c')][_0x7fda('0x2e')]));_0x5e57f1[_0x7fda('0x2f')]=_0x5e57f1[_0x7fda('0x2f')][_0x7fda('0x30')]?_0x5e57f1[_0x7fda('0x2f')]:_0x25a20d['model'];if(_0x279658[_0x7fda('0x2c')][_0x7fda('0x40')]){_0x5e57f1['include']=[{'all':!![]}];}_0x5e57f1=_[_0x7fda('0x37')]({},_0x5e57f1,_0x279658[_0x7fda('0x39')]);return db[_0x7fda('0x3a')][_0x7fda('0x41')](_0x5e57f1)[_0x7fda('0x1f')](handleEntityNotFound(_0x148355,null))[_0x7fda('0x1f')](respondWithResult(_0x148355,null))['catch'](handleError(_0x148355,null));};exports[_0x7fda('0x42')]=function(_0xb81dc3,_0x32f023){return db['ChatTransferReport'][_0x7fda('0x42')](_0xb81dc3['body'],{})[_0x7fda('0x1f')](respondWithResult(_0x32f023,0xc9))[_0x7fda('0x3d')](handleError(_0x32f023,null));};exports[_0x7fda('0x1e')]=function(_0x5e1a2a,_0x2b39b7){if(_0x5e1a2a['body']['id']){delete _0x5e1a2a[_0x7fda('0x43')]['id'];}return db[_0x7fda('0x3a')][_0x7fda('0x41')]({'where':{'id':_0x5e1a2a['params']['id']}})[_0x7fda('0x1f')](handleEntityNotFound(_0x2b39b7,null))[_0x7fda('0x1f')](saveUpdates(_0x5e1a2a[_0x7fda('0x43')],null))[_0x7fda('0x1f')](respondWithResult(_0x2b39b7,null))[_0x7fda('0x3d')](handleError(_0x2b39b7,null));};exports[_0x7fda('0x20')]=function(_0x1b456d,_0x20e347){return db[_0x7fda('0x3a')]['find']({'where':{'id':_0x1b456d[_0x7fda('0x3f')]['id']}})[_0x7fda('0x1f')](handleEntityNotFound(_0x20e347,null))[_0x7fda('0x1f')](removeEntity(_0x20e347,null))[_0x7fda('0x3d')](handleError(_0x20e347,null));};exports['describe']=function(_0x1c4218,_0x3298ad){return db[_0x7fda('0x3a')][_0x7fda('0x44')]()[_0x7fda('0x1f')](respondWithResult(_0x3298ad,null))[_0x7fda('0x3d')](handleError(_0x3298ad,null));};
\ No newline at end of file
+var _0x0445=['../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','then','sendStatus','error','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','type','key','intersection','model','attributes','query','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','rows','show','params','filters','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x3fc8f1,_0x3e6078){var _0x13758c=function(_0x615953){while(--_0x615953){_0x3fc8f1['push'](_0x3fc8f1['shift']());}};_0x13758c(++_0x3e6078);}(_0x0445,0x1ae));var _0x5044=function(_0x2755fb,_0x5970f1){_0x2755fb=_0x2755fb-0x0;var _0x293f12=_0x0445[_0x2755fb];return _0x293f12;};'use strict';var emlformat=require(_0x5044('0x0'));var rimraf=require(_0x5044('0x1'));var zipdir=require(_0x5044('0x2'));var jsonpatch=require(_0x5044('0x3'));var rp=require(_0x5044('0x4'));var moment=require(_0x5044('0x5'));var BPromise=require(_0x5044('0x6'));var Mustache=require(_0x5044('0x7'));var util=require(_0x5044('0x8'));var path=require(_0x5044('0x9'));var sox=require(_0x5044('0xa'));var csv=require('to-csv');var ejs=require(_0x5044('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5044('0xc'));var squel=require('squel');var crypto=require(_0x5044('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5044('0xe'));var toCsv=require(_0x5044('0xf'));var querystring=require(_0x5044('0x10'));var Papa=require(_0x5044('0x11'));var Redis=require(_0x5044('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x5044('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5044('0x14'));var logger=require(_0x5044('0x15'))(_0x5044('0x16'));var utils=require(_0x5044('0x17'));var config=require(_0x5044('0x18'));var licenseUtil=require(_0x5044('0x19'));var db=require(_0x5044('0x1a'))['db'];function respondWithStatusCode(_0xda15ed,_0x48ed5e){_0x48ed5e=_0x48ed5e||0xcc;return function(_0x3c5698){if(_0x3c5698){return _0xda15ed['sendStatus'](_0x48ed5e);}return _0xda15ed[_0x5044('0x1b')](_0x48ed5e)[_0x5044('0x1c')]();};}function respondWithResult(_0x5448ed,_0x32f301){_0x32f301=_0x32f301||0xc8;return function(_0xe412a0){if(_0xe412a0){return _0x5448ed[_0x5044('0x1b')](_0x32f301)[_0x5044('0x1d')](_0xe412a0);}};}function respondWithFilteredResult(_0x495b43,_0x282a30){return function(_0x2d4c51){if(_0x2d4c51){var _0x47283d=typeof _0x282a30[_0x5044('0x1e')]===_0x5044('0x1f')&&typeof _0x282a30[_0x5044('0x20')]===_0x5044('0x1f');var _0x5cadd6=_0x2d4c51[_0x5044('0x21')];var _0x38b8cb=_0x47283d?0x0:_0x282a30[_0x5044('0x1e')];var _0x11dd6e=_0x47283d?_0x2d4c51[_0x5044('0x21')]:_0x282a30[_0x5044('0x1e')]+_0x282a30[_0x5044('0x20')];var _0x526b5f;if(_0x11dd6e>=_0x5cadd6){_0x11dd6e=_0x5cadd6;_0x526b5f=0xc8;}else{_0x526b5f=0xce;}_0x495b43[_0x5044('0x1b')](_0x526b5f);return _0x495b43[_0x5044('0x22')](_0x5044('0x23'),_0x38b8cb+'-'+_0x11dd6e+'/'+_0x5cadd6)[_0x5044('0x1d')](_0x2d4c51);}return null;};}function patchUpdates(_0x4c39b3){return function(_0x40bacd){try{jsonpatch['apply'](_0x40bacd,_0x4c39b3,!![]);}catch(_0x1bd6f9){return BPromise[_0x5044('0x24')](_0x1bd6f9);}return _0x40bacd['save']();};}function saveUpdates(_0x32de9d,_0x391492){return function(_0x31dcc0){if(_0x31dcc0){return _0x31dcc0[_0x5044('0x25')](_0x32de9d)['then'](function(_0xaf521f){return _0xaf521f;});}return null;};}function removeEntity(_0x472268,_0x4442ba){return function(_0x424631){if(_0x424631){return _0x424631[_0x5044('0x26')]()[_0x5044('0x27')](function(){_0x472268[_0x5044('0x1b')](0xcc)[_0x5044('0x1c')]();});}};}function handleEntityNotFound(_0x390793,_0x4bf8c6){return function(_0x5e800e){if(!_0x5e800e){_0x390793[_0x5044('0x28')](0x194);}return _0x5e800e;};}function handleError(_0x249f8c,_0x872f46){_0x872f46=_0x872f46||0x1f4;return function(_0xaa52d0){logger[_0x5044('0x29')](_0xaa52d0['stack']);if(_0xaa52d0[_0x5044('0x2a')]){delete _0xaa52d0[_0x5044('0x2a')];}_0x249f8c[_0x5044('0x1b')](_0x872f46)[_0x5044('0x2b')](_0xaa52d0);};}exports[_0x5044('0x2c')]=function(_0x3f9769,_0x304533){var _0x2a7c14={},_0x4e741e={},_0x228977={'count':0x0,'rows':[]};var _0x53dbec=_[_0x5044('0x2d')](db[_0x5044('0x2e')][_0x5044('0x2f')],function(_0x49f286){return{'name':_0x49f286[_0x5044('0x30')],'type':_0x49f286[_0x5044('0x31')][_0x5044('0x32')]};});_0x4e741e['model']=_[_0x5044('0x2d')](_0x53dbec,_0x5044('0x2a'));_0x4e741e['query']=_['keys'](_0x3f9769['query']);_0x4e741e['filters']=_[_0x5044('0x33')](_0x4e741e[_0x5044('0x34')],_0x4e741e['query']);_0x2a7c14[_0x5044('0x35')]=_['intersection'](_0x4e741e['model'],qs['fields'](_0x3f9769[_0x5044('0x36')][_0x5044('0x37')]));_0x2a7c14[_0x5044('0x35')]=_0x2a7c14[_0x5044('0x35')][_0x5044('0x38')]?_0x2a7c14[_0x5044('0x35')]:_0x4e741e['model'];if(!_0x3f9769[_0x5044('0x36')]['hasOwnProperty'](_0x5044('0x39'))){_0x2a7c14[_0x5044('0x20')]=qs[_0x5044('0x20')](_0x3f9769[_0x5044('0x36')][_0x5044('0x20')]);_0x2a7c14[_0x5044('0x1e')]=qs[_0x5044('0x1e')](_0x3f9769[_0x5044('0x36')]['offset']);}_0x2a7c14[_0x5044('0x3a')]=qs[_0x5044('0x3b')](_0x3f9769['query'][_0x5044('0x3b')]);_0x2a7c14['where']=qs['filters'](_[_0x5044('0x3c')](_0x3f9769['query'],_0x4e741e['filters']),_0x53dbec);if(_0x3f9769['query'][_0x5044('0x3d')]){_0x2a7c14[_0x5044('0x3e')]=_[_0x5044('0x3f')](_0x2a7c14[_0x5044('0x3e')],{'$or':_[_0x5044('0x2d')](_0x53dbec,function(_0x5aa210){if(_0x5aa210[_0x5044('0x31')]!==_0x5044('0x40')){var _0x507cac={};_0x507cac[_0x5aa210[_0x5044('0x2a')]]={'$like':'%'+_0x3f9769[_0x5044('0x36')][_0x5044('0x3d')]+'%'};return _0x507cac;}})});}_0x2a7c14=_['merge']({},_0x2a7c14,_0x3f9769['options']);var _0x4614b6={'where':_0x2a7c14[_0x5044('0x3e')]};return db[_0x5044('0x2e')][_0x5044('0x21')](_0x4614b6)[_0x5044('0x27')](function(_0xf2e14f){_0x228977[_0x5044('0x21')]=_0xf2e14f;if(_0x3f9769[_0x5044('0x36')][_0x5044('0x41')]){_0x2a7c14[_0x5044('0x42')]=[{'all':!![]}];}return db['ChatTransferReport']['findAll'](_0x2a7c14);})[_0x5044('0x27')](function(_0x537c5b){_0x228977[_0x5044('0x43')]=_0x537c5b;return _0x228977;})[_0x5044('0x27')](respondWithFilteredResult(_0x304533,_0x2a7c14))['catch'](handleError(_0x304533,null));};exports[_0x5044('0x44')]=function(_0x49625a,_0x96fd8b){var _0x4a75d0={'raw':!![],'where':{'id':_0x49625a[_0x5044('0x45')]['id']}},_0xce4916={};_0xce4916[_0x5044('0x34')]=_['keys'](db[_0x5044('0x2e')][_0x5044('0x2f')]);_0xce4916[_0x5044('0x36')]=_['keys'](_0x49625a[_0x5044('0x36')]);_0xce4916[_0x5044('0x46')]=_[_0x5044('0x33')](_0xce4916[_0x5044('0x34')],_0xce4916[_0x5044('0x36')]);_0x4a75d0[_0x5044('0x35')]=_[_0x5044('0x33')](_0xce4916[_0x5044('0x34')],qs[_0x5044('0x37')](_0x49625a['query']['fields']));_0x4a75d0[_0x5044('0x35')]=_0x4a75d0[_0x5044('0x35')][_0x5044('0x38')]?_0x4a75d0[_0x5044('0x35')]:_0xce4916['model'];if(_0x49625a[_0x5044('0x36')][_0x5044('0x41')]){_0x4a75d0['include']=[{'all':!![]}];}_0x4a75d0=_['merge']({},_0x4a75d0,_0x49625a['options']);return db[_0x5044('0x2e')][_0x5044('0x47')](_0x4a75d0)[_0x5044('0x27')](handleEntityNotFound(_0x96fd8b,null))['then'](respondWithResult(_0x96fd8b,null))[_0x5044('0x48')](handleError(_0x96fd8b,null));};exports[_0x5044('0x49')]=function(_0x326e08,_0x59f35f){return db[_0x5044('0x2e')][_0x5044('0x49')](_0x326e08['body'],{})['then'](respondWithResult(_0x59f35f,0xc9))[_0x5044('0x48')](handleError(_0x59f35f,null));};exports[_0x5044('0x25')]=function(_0x6ea0cb,_0x5c9672){if(_0x6ea0cb[_0x5044('0x4a')]['id']){delete _0x6ea0cb[_0x5044('0x4a')]['id'];}return db[_0x5044('0x2e')][_0x5044('0x47')]({'where':{'id':_0x6ea0cb[_0x5044('0x45')]['id']}})['then'](handleEntityNotFound(_0x5c9672,null))[_0x5044('0x27')](saveUpdates(_0x6ea0cb[_0x5044('0x4a')],null))[_0x5044('0x27')](respondWithResult(_0x5c9672,null))[_0x5044('0x48')](handleError(_0x5c9672,null));};exports[_0x5044('0x26')]=function(_0x324450,_0x3cb1d4){return db[_0x5044('0x2e')][_0x5044('0x47')]({'where':{'id':_0x324450['params']['id']}})[_0x5044('0x27')](handleEntityNotFound(_0x3cb1d4,null))['then'](removeEntity(_0x3cb1d4,null))[_0x5044('0x48')](handleError(_0x3cb1d4,null));};exports[_0x5044('0x4b')]=function(_0x1844d9,_0xd98bd8){return db[_0x5044('0x2e')]['describe']()[_0x5044('0x27')](respondWithResult(_0xd98bd8,null))[_0x5044('0x48')](handleError(_0xd98bd8,null));};
\ No newline at end of file
index 489e6d6..b122974 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3628=['report_chat_transfer','uniqueid','lodash','util','api','request-promise','rimraf','../../config/environment','ChatTransferReport'];(function(_0x5838bd,_0x53cf53){var _0x4a03a5=function(_0x58f5f7){while(--_0x58f5f7){_0x5838bd['push'](_0x5838bd['shift']());}};_0x4a03a5(++_0x53cf53);}(_0x3628,0x107));var _0x8362=function(_0xea6018,_0x4cf082){_0xea6018=_0xea6018-0x0;var _0x57b54d=_0x3628[_0xea6018];return _0x57b54d;};'use strict';var _=require(_0x8362('0x0'));var util=require(_0x8362('0x1'));var logger=require('../../config/logger')(_0x8362('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8362('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8362('0x4'));var config=require(_0x8362('0x5'));var attributes=require('./chatTransferReport.attributes');module['exports']=function(_0x1d8058,_0x503a83){return _0x1d8058['define'](_0x8362('0x6'),attributes,{'tableName':_0x8362('0x7'),'paranoid':![],'indexes':[{'name':_0x8362('0x8'),'fields':[_0x8362('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0255=['util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','exports','define','report_chat_transfer','uniqueid','lodash'];(function(_0x290ef5,_0x32cfa7){var _0x450d92=function(_0x4308db){while(--_0x4308db){_0x290ef5['push'](_0x290ef5['shift']());}};_0x450d92(++_0x32cfa7);}(_0x0255,0x14f));var _0x5025=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0255[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5025('0x0'));var util=require(_0x5025('0x1'));var logger=require(_0x5025('0x2'))(_0x5025('0x3'));var moment=require('moment');var BPromise=require(_0x5025('0x4'));var rp=require(_0x5025('0x5'));var fs=require('fs');var path=require(_0x5025('0x6'));var rimraf=require('rimraf');var config=require(_0x5025('0x7'));var attributes=require('./chatTransferReport.attributes');module[_0x5025('0x8')]=function(_0x4aa0d7,_0x4f03ab){return _0x4aa0d7[_0x5025('0x9')]('ChatTransferReport',attributes,{'tableName':_0x5025('0xa'),'paranoid':![],'indexes':[{'name':_0x5025('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index e2c2d28..51cba93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x997e=['ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x1c98d2,_0x402fbd){var _0x2d07ff=function(_0x261fd1){while(--_0x261fd1){_0x1c98d2['push'](_0x1c98d2['shift']());}};_0x2d07ff(++_0x402fbd);}(_0x997e,0x1c7));var _0xe997=function(_0x240401,_0x4f248c){_0x240401=_0x240401-0x0;var _0x27c12e=_0x997e[_0x240401];return _0x27c12e;};'use strict';var _=require(_0xe997('0x0'));var util=require(_0xe997('0x1'));var moment=require(_0xe997('0x2'));var BPromise=require(_0xe997('0x3'));var rs=require(_0xe997('0x4'));var fs=require('fs');var Redis=require(_0xe997('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xe997('0x6'))(_0xe997('0x7'));var config=require(_0xe997('0x8'));var jayson=require(_0xe997('0x9'));var client=jayson[_0xe997('0xa')][_0xe997('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x471240,_0x31bc8c,_0x1c124d){return new BPromise(function(_0x22a262,_0xaab9d5){return client[_0xe997('0xc')](_0x471240,_0x1c124d)[_0xe997('0xd')](function(_0x47324a){logger[_0xe997('0xe')](_0xe997('0xf'),_0x31bc8c,'request\x20sent');logger['debug'](_0xe997('0x10'),_0x31bc8c,_0xe997('0x11'),JSON[_0xe997('0x12')](_0x47324a));if(_0x47324a[_0xe997('0x13')]){if(_0x47324a[_0xe997('0x13')][_0xe997('0x14')]===0x1f4){logger[_0xe997('0x13')](_0xe997('0xf'),_0x31bc8c,_0x47324a[_0xe997('0x13')][_0xe997('0x15')]);return _0xaab9d5(_0x47324a[_0xe997('0x13')][_0xe997('0x15')]);}logger['error'](_0xe997('0xf'),_0x31bc8c,_0x47324a[_0xe997('0x13')][_0xe997('0x15')]);return _0x22a262(_0x47324a[_0xe997('0x13')][_0xe997('0x15')]);}else{logger[_0xe997('0xe')](_0xe997('0xf'),_0x31bc8c,_0xe997('0x11'));_0x22a262(_0x47324a['result'][_0xe997('0x15')]);}})[_0xe997('0x16')](function(_0x13e5bf){logger['error'](_0xe997('0xf'),_0x31bc8c,_0x13e5bf);_0xaab9d5(_0x13e5bf);});});}
\ No newline at end of file
+var _0x5e46=['rpc','../../config/environment','jayson/promise','client','http','then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2dbfe8,_0x3cd7aa){var _0x16c2d9=function(_0x3233bd){while(--_0x3233bd){_0x2dbfe8['push'](_0x2dbfe8['shift']());}};_0x16c2d9(++_0x3cd7aa);}(_0x5e46,0x65));var _0x65e4=function(_0x265e2e,_0x1e4020){_0x265e2e=_0x265e2e-0x0;var _0x3bd847=_0x5e46[_0x265e2e];return _0x3bd847;};'use strict';var _=require(_0x65e4('0x0'));var util=require(_0x65e4('0x1'));var moment=require(_0x65e4('0x2'));var BPromise=require(_0x65e4('0x3'));var rs=require(_0x65e4('0x4'));var fs=require('fs');var Redis=require(_0x65e4('0x5'));var db=require(_0x65e4('0x6'))['db'];var utils=require(_0x65e4('0x7'));var logger=require(_0x65e4('0x8'))(_0x65e4('0x9'));var config=require(_0x65e4('0xa'));var jayson=require(_0x65e4('0xb'));var client=jayson[_0x65e4('0xc')][_0x65e4('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x4690d3,_0x4be3e5,_0x3dbdda){return new BPromise(function(_0x3e8a44,_0x54f549){return client['request'](_0x4690d3,_0x3dbdda)[_0x65e4('0xe')](function(_0x192a26){logger[_0x65e4('0xf')](_0x65e4('0x10'),_0x4be3e5,_0x65e4('0x11'));logger[_0x65e4('0x12')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x4be3e5,_0x65e4('0x11'),JSON[_0x65e4('0x13')](_0x192a26));if(_0x192a26[_0x65e4('0x14')]){if(_0x192a26[_0x65e4('0x14')]['code']===0x1f4){logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x4be3e5,_0x192a26['error'][_0x65e4('0x15')]);return _0x54f549(_0x192a26['error'][_0x65e4('0x15')]);}logger[_0x65e4('0x14')](_0x65e4('0x10'),_0x4be3e5,_0x192a26[_0x65e4('0x14')]['message']);return _0x3e8a44(_0x192a26['error']['message']);}else{logger[_0x65e4('0xf')](_0x65e4('0x10'),_0x4be3e5,'request\x20sent');_0x3e8a44(_0x192a26['result'][_0x65e4('0x15')]);}})['catch'](function(_0x35ab09){logger[_0x65e4('0x14')](_0x65e4('0x10'),_0x4be3e5,_0x35ab09);_0x54f549(_0x35ab09);});});}
\ No newline at end of file
index 640a163..14321ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x213c=['isAuthenticated','index','get','/describe','describe','/:id','show','update','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller'];(function(_0x42b3aa,_0x223f53){var _0x319157=function(_0x4e5c40){while(--_0x4e5c40){_0x42b3aa['push'](_0x42b3aa['shift']());}};_0x319157(++_0x223f53);}(_0x213c,0x1cc));var _0xc213=function(_0x5f0e33,_0x5a688d){_0x5f0e33=_0x5f0e33-0x0;var _0x3cbe2e=_0x213c[_0x5f0e33];return _0x3cbe2e;};'use strict';var multer=require(_0xc213('0x0'));var util=require(_0xc213('0x1'));var path=require('path');var timeout=require(_0xc213('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xc213('0x3'));var auth=require(_0xc213('0x4'));var interaction=require(_0xc213('0x5'));var config=require(_0xc213('0x6'));var controller=require(_0xc213('0x7'));router['get']('/',auth[_0xc213('0x8')](),controller[_0xc213('0x9')]);router[_0xc213('0xa')](_0xc213('0xb'),auth['isAuthenticated'](),controller[_0xc213('0xc')]);router['get'](_0xc213('0xd'),auth[_0xc213('0x8')](),controller[_0xc213('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xc213('0xd'),auth[_0xc213('0x8')](),controller[_0xc213('0xf')]);router['delete'](_0xc213('0xd'),auth[_0xc213('0x8')](),controller[_0xc213('0x10')]);module[_0xc213('0x11')]=router;
\ No newline at end of file
+var _0x41f7=['get','isAuthenticated','/describe','describe','/:id','show','post','create','put','destroy','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./chatTransferReport.controller'];(function(_0x44f097,_0x1385a9){var _0x5f10a7=function(_0x3866ce){while(--_0x3866ce){_0x44f097['push'](_0x44f097['shift']());}};_0x5f10a7(++_0x1385a9);}(_0x41f7,0x1c4));var _0x741f=function(_0xf01fcf,_0x303968){_0xf01fcf=_0xf01fcf-0x0;var _0x2a1bdd=_0x41f7[_0xf01fcf];return _0x2a1bdd;};'use strict';var multer=require('multer');var util=require(_0x741f('0x0'));var path=require(_0x741f('0x1'));var timeout=require('connect-timeout');var express=require(_0x741f('0x2'));var router=express['Router']();var fs_extra=require(_0x741f('0x3'));var auth=require(_0x741f('0x4'));var interaction=require(_0x741f('0x5'));var config=require('../../config/environment');var controller=require(_0x741f('0x6'));router[_0x741f('0x7')]('/',auth[_0x741f('0x8')](),controller['index']);router[_0x741f('0x7')](_0x741f('0x9'),auth[_0x741f('0x8')](),controller[_0x741f('0xa')]);router[_0x741f('0x7')](_0x741f('0xb'),auth[_0x741f('0x8')](),controller[_0x741f('0xc')]);router[_0x741f('0xd')]('/',auth[_0x741f('0x8')](),controller[_0x741f('0xe')]);router[_0x741f('0xf')](_0x741f('0xb'),auth[_0x741f('0x8')](),controller['update']);router['delete'](_0x741f('0xb'),auth['isAuthenticated'](),controller[_0x741f('0x10')]);module['exports']=router;
\ No newline at end of file
index a71641c..db1603e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16bd=['BOOLEAN','rounded','We\x20are\x20here!','Chat','Send','Contact\x20us','INTEGER','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','ENUM','thumb','star','stringify','input','name','getDataValue','onlineForm','parse','setDataValue','Comments','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','website_alias','alternate','#fafafa','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','exports','STRING','address','email','#011F6A','#ffffff'];(function(_0x1dc0b9,_0x43ffca){var _0x20013a=function(_0x147ffa){while(--_0x147ffa){_0x1dc0b9['push'](_0x1dc0b9['shift']());}};_0x20013a(++_0x43ffca);}(_0x16bd,0x1b3));var _0xd16b=function(_0xee2e7a,_0x58354d){_0xee2e7a=_0xee2e7a-0x0;var _0x319dd3=_0x16bd[_0xee2e7a];return _0x319dd3;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0xd16b('0x0')]={'name':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![]},'address':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![],'unique':_0xd16b('0x2')},'description':{'type':Sequelize[_0xd16b('0x1')]},'mapKey':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x3')},'mapKeyOffline':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x3')},'key':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![],'defaultValue':_0xd16b('0x4'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![],'defaultValue':_0xd16b('0x5'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0xd16b('0x1')]},'animation':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM'](_0xd16b('0x7'),'squared'),'defaultValue':_0xd16b('0x7')},'header_online':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x8')},'start_chat_button':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x9')},'offline_chat_button':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0xa')},'header_offline':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0xb')},'download_transcript':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xd16b('0xc')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':_0xd16b('0xd')},'defaultWhiteLabel':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xd16b('0xe')]},'closingQuestion':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x11')},'noteTitle':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x12')},'placeholderMessage':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x13')},'closingMessage':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x14')},'closingMessageButton':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0xa')},'skipMessageButton':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x15')},'conditionAgreement':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x16')},'ratingType':{'type':Sequelize[_0xd16b('0x17')]('star',_0xd16b('0x18')),'defaultValue':_0xd16b('0x19')},'ratingStarsNumber':{'type':Sequelize[_0xd16b('0xc')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xd16b('0xe')],'defaultValue':function(){return JSON[_0xd16b('0x1a')]({'items':[{'type':_0xd16b('0x1b'),'variable':null,'config':{'placeholder':_0xd16b('0x1c'),'type':'text','required':!![]},'props':{'title':_0xd16b('0x1c'),'helpText':''}},{'type':'input','props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xd16b('0x3')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xd16b('0x1d')](_0xd16b('0x1e'))?JSON[_0xd16b('0x1f')](this[_0xd16b('0x1d')](_0xd16b('0x1e'))):{};},'set':function(_0x3aad03){return this[_0xd16b('0x20')](_0xd16b('0x1e'),JSON[_0xd16b('0x1a')](_0x3aad03));}},'offlineForm':{'type':Sequelize[_0xd16b('0xe')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0xd16b('0x1b'),'props':{'title':_0xd16b('0x3'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xd16b('0x3')},'variable':null},{'type':'textarea','config':{'placeholder':_0xd16b('0x21')},'props':{'title':'Comments','helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0xd16b('0x1d')](_0xd16b('0x22'))?JSON[_0xd16b('0x1f')](this[_0xd16b('0x1d')]('offlineForm')):{};},'set':function(_0x365830){return this['setDataValue'](_0xd16b('0x22'),JSON['stringify'](_0x365830));}},'token':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':function(){return rs[_0xd16b('0x23')]();}},'autoclose':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x24')},'waitingMessage':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x25')},'offlineMessageSubject':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x26')},'enableUnmanagedNote':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0xd16b('0x27')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0xd16b('0x15')},'sendUnmanaged':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0xa')},'enableCustomerAttachment':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xd16b('0xe')]},'showAgentAvatar':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xd16b('0x1')]},'notificationTemplate':{'type':Sequelize[_0xd16b('0xe')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x28')},'waitForTheAssignedAgent':{'type':Sequelize[_0xd16b('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0xd16b('0xc')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0xd16b('0x29')},'defaultTitle':{'type':Sequelize[_0xd16b('0x1')]},'customerAvatar':{'type':Sequelize[_0xd16b('0xe')]},'showCustomerAvatar':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![],'defaultValue':_0xd16b('0x2a'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd16b('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd16b('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':'System'},'systemAvatar':{'type':Sequelize[_0xd16b('0xe')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd16b('0xc')],'comment':_0xd16b('0x2b')},'mandatoryDisposition':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![],'comment':_0xd16b('0x2c'),'set':function(_0x4bf7f6){if(!_0x4bf7f6)this[_0xd16b('0x20')](_0xd16b('0x2d'),null);this['setDataValue'](_0xd16b('0x2e'),_0x4bf7f6);}},'vidaooEscalation':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xd16b('0x1')]},'vidaooTopic':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![],'defaultValue':_0xd16b('0x2f')},'vidaooNote':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':function(){return _0xd16b('0x30');}},'vidaooMetadata':{'type':Sequelize[_0xd16b('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xd16b('0xe')]}};
\ No newline at end of file
+var _0x68c8=['STRING','address','email','Agent','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','Send','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Type\x20a\x20message','Skip','Feedback','star','stringify','name','text','input','getDataValue','onlineForm','parse','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.','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','exports'];(function(_0x12309b,_0x59dd8c){var _0x482e4d=function(_0x308407){while(--_0x308407){_0x12309b['push'](_0x12309b['shift']());}};_0x482e4d(++_0x59dd8c);}(_0x68c8,0xe4));var _0x868c=function(_0x2a62e5,_0x2c15d4){_0x2a62e5=_0x2a62e5-0x0;var _0x315c29=_0x68c8[_0x2a62e5];return _0x315c29;};'use strict';var Sequelize=require(_0x868c('0x0'));var rs=require('randomstring');module[_0x868c('0x1')]={'name':{'type':Sequelize[_0x868c('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0x868c('0x2')],'allowNull':![],'unique':_0x868c('0x3')},'description':{'type':Sequelize[_0x868c('0x2')]},'mapKey':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0x4')},'mapKeyOffline':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0x4')},'key':{'type':Sequelize[_0x868c('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0x5')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0x868c('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x868c('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x868c('0x6'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x868c('0x7')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x868c('0x2')]},'animation':{'type':Sequelize[_0x868c('0x8')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x868c('0x9')](_0x868c('0xa'),'squared'),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0x868c('0x2')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x868c('0x2')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0xb')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x868c('0xc')},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x868c('0x7')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0xd')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x868c('0xe')]},'closingQuestion':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0x10')},'formSubmitFailureMessage':{'type':Sequelize['STRING'],'defaultValue':_0x868c('0x11')},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0x12')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0xb')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x868c('0x13')},'conditionAgreement':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0x14')},'ratingType':{'type':Sequelize[_0x868c('0x9')](_0x868c('0x15'),'thumb'),'defaultValue':_0x868c('0x15')},'ratingStarsNumber':{'type':Sequelize[_0x868c('0x7')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0x868c('0x16')]({'items':[{'type':'input','variable':null,'config':{'placeholder':_0x868c('0x17'),'type':_0x868c('0x18'),'required':!![]},'props':{'title':'name','helpText':''}},{'type':_0x868c('0x19'),'props':{'title':_0x868c('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x868c('0x4'),'type':_0x868c('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x868c('0x1a')](_0x868c('0x1b'))?JSON[_0x868c('0x1c')](this[_0x868c('0x1a')](_0x868c('0x1b'))):{};},'set':function(_0x5ed485){return this[_0x868c('0x1d')](_0x868c('0x1b'),JSON[_0x868c('0x16')](_0x5ed485));}},'offlineForm':{'type':Sequelize[_0x868c('0xe')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x868c('0x19'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x868c('0x4'),'type':_0x868c('0x4')},'variable':null},{'type':'textarea','config':{'placeholder':'Comments'},'props':{'title':_0x868c('0x1e'),'helpText':_0x868c('0x1f')}}],'fromKey':0x0});},'get':function(){return this[_0x868c('0x1a')](_0x868c('0x20'))?JSON[_0x868c('0x1c')](this[_0x868c('0x1a')](_0x868c('0x20'))):{};},'set':function(_0xe5e3c4){return this['setDataValue']('offlineForm',JSON[_0x868c('0x16')](_0xe5e3c4));}},'token':{'type':Sequelize[_0x868c('0x2')],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0x868c('0x8')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x868c('0x2')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x868c('0x2')]},'waitingTitle':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0x21')},'waitingMessage':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0x22')},'offlineMessageSubject':{'type':Sequelize[_0x868c('0x2')],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize[_0x868c('0x2')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0x868c('0x8')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0x23')},'skipUnmanaged':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0x13')},'sendUnmanaged':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0xb')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x868c('0xe')]},'showAgentAvatar':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x868c('0x2')]},'notificationTemplate':{'type':Sequelize[_0x868c('0xe')],'defaultValue':function(){return _0x868c('0x24');}},'notificationSound':{'type':Sequelize[_0x868c('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0x25')},'waitForTheAssignedAgent':{'type':Sequelize[_0x868c('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0x868c('0x26')},'verticalAlignment':{'type':Sequelize[_0x868c('0x7')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0x27')},'defaultTitle':{'type':Sequelize[_0x868c('0x2')]},'customerAvatar':{'type':Sequelize[_0x868c('0xe')]},'showCustomerAvatar':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x868c('0x7')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x868c('0x2')],'allowNull':![],'defaultValue':_0x868c('0x28'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x868c('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x868c('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x868c('0x2')],'defaultValue':_0x868c('0x29')},'systemAvatar':{'type':Sequelize[_0x868c('0xe')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x868c('0x2a')},'mandatoryDisposition':{'type':Sequelize[_0x868c('0x8')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x5812a7){if(!_0x5812a7)this[_0x868c('0x1d')](_0x868c('0x2b'),null);this[_0x868c('0x1d')]('mandatoryDisposition',_0x5812a7);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0x868c('0x2')],'allowNull':![],'defaultValue':_0x868c('0x2c')},'vidaooNote':{'type':Sequelize[_0x868c('0x2')],'defaultValue':function(){return _0x868c('0x2d');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x868c('0xe')]}};
\ No newline at end of file
index c054443..1730c37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cb8=['updatedAt','CompanyId','ListId','from\x20is\x20mandatory','Sequelize','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','List','DESC','Applications','account','applications','list','orderBy','priority','asc','Contacts','CmContact','contact','customerIp','cf-connecting-ip','x-forwarded-for','split','firstName','lastName','x-real-port','browser','version','format','%s\x20%s','unknown','device','%s\x20%s\x20%s','vendor','threadId','ChatInteraction','externalUrl','interaction','messageId','created','close','*,*,*,*','AttachmentId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','EventManager','notify','offline','files','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','spread','readFileSync','server/files/templates/chatOfflineMessage.ejs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','attachments','offline-chat','openNewInteraction','sequelize','transaction','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','MailAccountId','mapValues','subjectOffline','NotifyMailAccount','notifyMail','server','addInteraction','omit','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','OFFLINE','timezone','No\x20timezone','inspect','getSnippet','Interval','Intervals','virtual','custom','License','increment','chatLicenseExceeded','push','all','some','server/files/chat/iframe.ejs','remote','connection','remoteAddress','replace','alignment','color_button','backgroundColor','addApplications','ChatApplication','bulkCreate','findAndCountAll','getApplications','addProactiveActions','getProactiveActions','ChatProactiveAction','getFields','online','false','onlineForm','items','fromKey','getOfflineMessages','Attachment','Attachments','addAgents','emit','removeAgents','isArray','userChatWebsite:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','jayson/promise','client','http','then','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatWebsite,\x20%s,\x20%s','info','sendStatus','status','json','offset','limit','undefined','count','set','apply','save','destroy','get','ChatWebsites','UserProfileResource','stack','name','send','index','Pause','map','ChatWebsite','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','mandatoryDispositionPause','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','ChatWebsiteId','Disposition','findOne','filter','removeDispositions','CannedAnswer','removeAnswers','ids','addLogo','sitepic','file','addAvatar','agentAvatar','filename','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','join','root','getLicense','isNil','existsSync','server/files/images/logos/','download','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','user-agent-parser','headers','user-agent','getResult','chat','no\x20available\x20attributes','difference','createdAt'];(function(_0x2adaf2,_0x16e497){var _0x136044=function(_0xf464ce){while(--_0xf464ce){_0x2adaf2['push'](_0x2adaf2['shift']());}};_0x136044(++_0x16e497);}(_0x2cb8,0x1c7));var _0x82cb=function(_0x4a242e,_0x3d6d22){_0x4a242e=_0x4a242e-0x0;var _0x46c517=_0x2cb8[_0x4a242e];return _0x46c517;};'use strict';var emlformat=require(_0x82cb('0x0'));var rimraf=require(_0x82cb('0x1'));var zipdir=require(_0x82cb('0x2'));var jsonpatch=require(_0x82cb('0x3'));var rp=require(_0x82cb('0x4'));var moment=require('moment');var BPromise=require(_0x82cb('0x5'));var Mustache=require(_0x82cb('0x6'));var util=require(_0x82cb('0x7'));var path=require('path');var sox=require(_0x82cb('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x82cb('0x9'));var _=require(_0x82cb('0xa'));var squel=require('squel');var crypto=require(_0x82cb('0xb'));var jsforce=require(_0x82cb('0xc'));var deskjs=require(_0x82cb('0xd'));var toCsv=require(_0x82cb('0xe'));var querystring=require(_0x82cb('0xf'));var Papa=require(_0x82cb('0x10'));var Redis=require(_0x82cb('0x11'));var authService=require(_0x82cb('0x12'));var qs=require(_0x82cb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x82cb('0x14'));var logger=require('../../config/logger')(_0x82cb('0x15'));var utils=require(_0x82cb('0x16'));var config=require(_0x82cb('0x17'));var licenseUtil=require(_0x82cb('0x18'));var db=require(_0x82cb('0x19'))['db'];config[_0x82cb('0x1a')]=_[_0x82cb('0x1b')](config[_0x82cb('0x1a')],{'host':_0x82cb('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x82cb('0x1a')]));require('./chatWebsite.socket')['register'](socket);var jayson=require(_0x82cb('0x1d'));var client=jayson[_0x82cb('0x1e')][_0x82cb('0x1f')]({'port':0x232c});var client9002=jayson[_0x82cb('0x1e')][_0x82cb('0x1f')]({'port':0x232a});var client9003=jayson['client'][_0x82cb('0x1f')]({'port':0x232b});var client9001=jayson[_0x82cb('0x1e')][_0x82cb('0x1f')]({'port':0x2329});function respondWithRpcPromise(_0x421eb5,_0x2d8a2e,_0x2b0bf9,_0x1ca106){return new BPromise(function(_0x19ce2a,_0x290dc8){var _0x43c0b3=_0x1ca106||client;return _0x43c0b3['request'](_0x421eb5,_0x2b0bf9)[_0x82cb('0x20')](function(_0x33f886){logger['info']('ChatWebsite,\x20%s,\x20%s',_0x2d8a2e,_0x82cb('0x21'));logger[_0x82cb('0x22')](_0x82cb('0x23'),_0x2d8a2e,_0x82cb('0x21'),JSON[_0x82cb('0x24')](_0x33f886));if(_0x33f886[_0x82cb('0x25')]){if(_0x33f886[_0x82cb('0x25')][_0x82cb('0x26')]===0x1f4){logger[_0x82cb('0x25')]('ChatWebsite,\x20%s,\x20%s',_0x2d8a2e,_0x33f886[_0x82cb('0x25')]['message']);return _0x290dc8(_0x33f886[_0x82cb('0x25')][_0x82cb('0x27')]);}logger[_0x82cb('0x25')](_0x82cb('0x28'),_0x2d8a2e,_0x33f886[_0x82cb('0x25')][_0x82cb('0x27')]);return _0x19ce2a(_0x33f886[_0x82cb('0x25')][_0x82cb('0x27')]);}else{logger[_0x82cb('0x29')](_0x82cb('0x28'),_0x2d8a2e,_0x82cb('0x21'));_0x19ce2a(_0x33f886['result'][_0x82cb('0x27')]);}})['catch'](function(_0x2defcd){logger[_0x82cb('0x25')](_0x82cb('0x28'),_0x2d8a2e,_0x2defcd);_0x290dc8(_0x2defcd);});});}function respondWithStatusCode(_0xf8104f,_0x5bb1fd){_0x5bb1fd=_0x5bb1fd||0xcc;return function(_0x303cd7){if(_0x303cd7){return _0xf8104f[_0x82cb('0x2a')](_0x5bb1fd);}return _0xf8104f[_0x82cb('0x2b')](_0x5bb1fd)['end']();};}function respondWithResult(_0x347ba4,_0x2c7375){_0x2c7375=_0x2c7375||0xc8;return function(_0x41e248){if(_0x41e248){return _0x347ba4[_0x82cb('0x2b')](_0x2c7375)[_0x82cb('0x2c')](_0x41e248);}};}function respondWithFilteredResult(_0x35f135,_0x275012){return function(_0x2ba6e1){if(_0x2ba6e1){var _0x432eb7=typeof _0x275012[_0x82cb('0x2d')]==='undefined'&&typeof _0x275012[_0x82cb('0x2e')]===_0x82cb('0x2f');var _0xfcbb1=_0x2ba6e1['count'];var _0x252e2a=_0x432eb7?0x0:_0x275012[_0x82cb('0x2d')];var _0x49b27c=_0x432eb7?_0x2ba6e1[_0x82cb('0x30')]:_0x275012['offset']+_0x275012[_0x82cb('0x2e')];var _0x2e8d06;if(_0x49b27c>=_0xfcbb1){_0x49b27c=_0xfcbb1;_0x2e8d06=0xc8;}else{_0x2e8d06=0xce;}_0x35f135[_0x82cb('0x2b')](_0x2e8d06);return _0x35f135[_0x82cb('0x31')]('Content-Range',_0x252e2a+'-'+_0x49b27c+'/'+_0xfcbb1)[_0x82cb('0x2c')](_0x2ba6e1);}return null;};}function patchUpdates(_0x4cd0be){return function(_0x13caac){try{jsonpatch[_0x82cb('0x32')](_0x13caac,_0x4cd0be,!![]);}catch(_0x5e95a8){return BPromise['reject'](_0x5e95a8);}return _0x13caac[_0x82cb('0x33')]();};}function saveUpdates(_0x122d88,_0x1eb380){return function(_0x4d96a0){if(_0x4d96a0){return _0x4d96a0['update'](_0x122d88)['then'](function(_0x190a71){return _0x190a71;});}return null;};}function removeEntity(_0x5d2051,_0x379dd2){return function(_0x422836){if(_0x422836){return _0x422836[_0x82cb('0x34')]()[_0x82cb('0x20')](function(){var _0x37140f=_0x422836[_0x82cb('0x35')]({'plain':!![]});var _0x3fbf90=_0x82cb('0x36');return db[_0x82cb('0x37')]['destroy']({'where':{'type':_0x3fbf90,'resourceId':_0x37140f['id']}})[_0x82cb('0x20')](function(){return _0x422836;});})[_0x82cb('0x20')](function(){_0x5d2051[_0x82cb('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18c761,_0x1d0a87){return function(_0x1777bd){if(!_0x1777bd){_0x18c761[_0x82cb('0x2a')](0x194);}return _0x1777bd;};}function handleError(_0x1ab45d,_0x30acc8){_0x30acc8=_0x30acc8||0x1f4;return function(_0x373ba7){logger[_0x82cb('0x25')](_0x373ba7[_0x82cb('0x38')]);if(_0x373ba7['name']){delete _0x373ba7[_0x82cb('0x39')];}_0x1ab45d[_0x82cb('0x2b')](_0x30acc8)[_0x82cb('0x3a')](_0x373ba7);};}exports[_0x82cb('0x3b')]=function(_0xe163a5,_0x215bc4){var _0x19a975={'include':[{'model':db[_0x82cb('0x3c')],'as':'mandatoryDispositionPause'}]},_0x5f430f={},_0x5b77d5={'count':0x0,'rows':[]};var _0x57ff1d=_[_0x82cb('0x3d')](db[_0x82cb('0x3e')]['rawAttributes'],function(_0x1fbc10){return{'name':_0x1fbc10[_0x82cb('0x3f')],'type':_0x1fbc10[_0x82cb('0x40')][_0x82cb('0x41')]};});_0x5f430f[_0x82cb('0x42')]=_['map'](_0x57ff1d,'name');_0x5f430f[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0xe163a5[_0x82cb('0x43')]);_0x5f430f[_0x82cb('0x45')]=_[_0x82cb('0x46')](_0x5f430f[_0x82cb('0x42')],_0x5f430f[_0x82cb('0x43')]);_0x19a975['attributes']=_[_0x82cb('0x46')](_0x5f430f['model'],qs[_0x82cb('0x47')](_0xe163a5[_0x82cb('0x43')][_0x82cb('0x47')]));_0x19a975[_0x82cb('0x48')]=_0x19a975[_0x82cb('0x48')][_0x82cb('0x49')]?_0x19a975['attributes']:_0x5f430f[_0x82cb('0x42')];if(!_0xe163a5['query'][_0x82cb('0x4a')](_0x82cb('0x4b'))){_0x19a975['limit']=qs['limit'](_0xe163a5[_0x82cb('0x43')]['limit']);_0x19a975[_0x82cb('0x2d')]=qs['offset'](_0xe163a5[_0x82cb('0x43')][_0x82cb('0x2d')]);}_0x19a975[_0x82cb('0x4c')]=qs[_0x82cb('0x4d')](_0xe163a5['query'][_0x82cb('0x4d')]);_0x19a975[_0x82cb('0x4e')]=qs[_0x82cb('0x45')](_[_0x82cb('0x4f')](_0xe163a5[_0x82cb('0x43')],_0x5f430f[_0x82cb('0x45')]),_0x57ff1d);if(_0xe163a5[_0x82cb('0x43')]['filter']){_0x19a975[_0x82cb('0x4e')]=_[_0x82cb('0x50')](_0x19a975[_0x82cb('0x4e')],{'$or':_['map'](_0x57ff1d,function(_0x185b6f){if(_0x185b6f[_0x82cb('0x40')]!==_0x82cb('0x51')){var _0x480a08={};_0x480a08[_0x185b6f[_0x82cb('0x39')]]={'$like':'%'+_0xe163a5[_0x82cb('0x43')]['filter']+'%'};return _0x480a08;}})});}_0x19a975=_[_0x82cb('0x50')]({},_0x19a975,_0xe163a5[_0x82cb('0x52')]);var _0x3a8af={'where':_0x19a975[_0x82cb('0x4e')]};return db[_0x82cb('0x3e')]['count'](_0x3a8af)[_0x82cb('0x20')](function(_0x49c2bc){_0x5b77d5[_0x82cb('0x30')]=_0x49c2bc;if(_0xe163a5[_0x82cb('0x43')][_0x82cb('0x53')]){_0x19a975[_0x82cb('0x54')]=[{'all':!![]}];}return db['ChatWebsite'][_0x82cb('0x55')](_0x19a975);})[_0x82cb('0x20')](function(_0x58e2e1){_0x5b77d5[_0x82cb('0x56')]=_0x58e2e1;return _0x5b77d5;})[_0x82cb('0x20')](respondWithFilteredResult(_0x215bc4,_0x19a975))[_0x82cb('0x57')](handleError(_0x215bc4,null));};exports['show']=function(_0xbdc9e1,_0x24156e){var _0x3bbe54={'raw':![],'where':{'id':_0xbdc9e1[_0x82cb('0x58')]['id']},'include':[{'model':db[_0x82cb('0x3c')],'as':_0x82cb('0x59')}]},_0x3e01f1={};_0x3e01f1['model']=_[_0x82cb('0x44')](db[_0x82cb('0x3e')][_0x82cb('0x5a')]);_0x3e01f1[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0xbdc9e1[_0x82cb('0x43')]);_0x3e01f1[_0x82cb('0x45')]=_['intersection'](_0x3e01f1[_0x82cb('0x42')],_0x3e01f1[_0x82cb('0x43')]);_0x3bbe54['attributes']=_[_0x82cb('0x46')](_0x3e01f1[_0x82cb('0x42')],qs[_0x82cb('0x47')](_0xbdc9e1[_0x82cb('0x43')]['fields']));_0x3bbe54[_0x82cb('0x48')]=_0x3bbe54[_0x82cb('0x48')][_0x82cb('0x49')]?_0x3bbe54[_0x82cb('0x48')]:_0x3e01f1['model'];if(_0xbdc9e1[_0x82cb('0x43')][_0x82cb('0x53')]){_0x3bbe54[_0x82cb('0x54')]=[{'all':!![]}];}_0x3bbe54=_[_0x82cb('0x50')]({},_0x3bbe54,_0xbdc9e1[_0x82cb('0x52')]);return db[_0x82cb('0x3e')][_0x82cb('0x5b')](_0x3bbe54)[_0x82cb('0x20')](handleEntityNotFound(_0x24156e,null))['then'](respondWithResult(_0x24156e,null))['catch'](handleError(_0x24156e,null));};exports[_0x82cb('0x5c')]=function(_0x48af95,_0x36e982){return db['ChatWebsite']['create'](_0x48af95[_0x82cb('0x5d')],{})[_0x82cb('0x20')](function(_0x2e7a13){var _0x57f7a6=_0x48af95[_0x82cb('0x5e')][_0x82cb('0x35')]({'plain':!![]});if(!_0x57f7a6)throw new Error(_0x82cb('0x5f'));if(_0x57f7a6['role']==='user'){var _0x43cce9=_0x2e7a13[_0x82cb('0x35')]({'plain':!![]});var _0xdf8154=_0x82cb('0x36');return db[_0x82cb('0x60')][_0x82cb('0x5b')]({'where':{'name':_0xdf8154,'userProfileId':_0x57f7a6[_0x82cb('0x61')]},'raw':!![]})[_0x82cb('0x20')](function(_0x5d1ea6){if(_0x5d1ea6&&_0x5d1ea6['autoAssociation']===0x0){return db[_0x82cb('0x37')][_0x82cb('0x5c')]({'name':_0x43cce9['name'],'resourceId':_0x43cce9['id'],'type':_0x5d1ea6[_0x82cb('0x39')],'sectionId':_0x5d1ea6['id']},{})[_0x82cb('0x20')](function(){return _0x2e7a13;});}else{return _0x2e7a13;}})['catch'](function(_0x70e473){logger['error'](_0x82cb('0x62'),_0x70e473);throw _0x70e473;});}return _0x2e7a13;})['then'](respondWithResult(_0x36e982,0xc9))[_0x82cb('0x57')](handleError(_0x36e982,null));};exports[_0x82cb('0x63')]=function(_0x68b1ec,_0x37e80d){if(_0x68b1ec['body']['id']){delete _0x68b1ec[_0x82cb('0x5d')]['id'];}return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0x68b1ec[_0x82cb('0x58')]['id']},'include':[{'model':db[_0x82cb('0x3c')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x37e80d,null))[_0x82cb('0x20')](saveUpdates(_0x68b1ec[_0x82cb('0x5d')],null))[_0x82cb('0x20')](respondWithResult(_0x37e80d,null))[_0x82cb('0x57')](handleError(_0x37e80d,null));};exports[_0x82cb('0x34')]=function(_0x59d323,_0x126178){return db[_0x82cb('0x3e')]['find']({'where':{'id':_0x59d323[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x126178,null))['then'](removeEntity(_0x126178,null))[_0x82cb('0x57')](handleError(_0x126178,null));};exports[_0x82cb('0x64')]=function(_0x5f5bba,_0x26cf32){return db['ChatWebsite'][_0x82cb('0x64')]()[_0x82cb('0x20')](respondWithResult(_0x26cf32,null))[_0x82cb('0x57')](handleError(_0x26cf32,null));};exports[_0x82cb('0x65')]=function(_0x280d22,_0x3a39da,_0x2f0220){if(_0x280d22[_0x82cb('0x5d')]['id']){delete _0x280d22[_0x82cb('0x5d')]['id'];}return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0x280d22[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x3a39da,null))[_0x82cb('0x20')](function(_0x45bc5e){if(_0x45bc5e){_0x280d22['body'][_0x82cb('0x66')]=_0x45bc5e['id'];return db[_0x82cb('0x67')][_0x82cb('0x5c')](_0x280d22[_0x82cb('0x5d')]);}})[_0x82cb('0x20')](respondWithResult(_0x3a39da,null))[_0x82cb('0x57')](handleError(_0x3a39da,null));};exports['getDispositions']=function(_0x43f36c,_0x475949,_0x43cf2b){var _0x258d79={'raw':![],'where':{}};var _0x53f60e={};var _0x5db098={'count':0x0,'rows':[]};return db[_0x82cb('0x3e')][_0x82cb('0x68')]({'where':{'id':_0x43f36c[_0x82cb('0x58')]['id']}})['then'](handleEntityNotFound(_0x475949,null))[_0x82cb('0x20')](function(_0x4bf7ca){if(_0x4bf7ca){_0x53f60e['model']=_[_0x82cb('0x44')](db['Disposition'][_0x82cb('0x5a')]);_0x53f60e[_0x82cb('0x43')]=_['keys'](_0x43f36c[_0x82cb('0x43')]);_0x53f60e['filters']=_[_0x82cb('0x46')](_0x53f60e[_0x82cb('0x42')],_0x53f60e[_0x82cb('0x43')]);_0x258d79[_0x82cb('0x48')]=_['intersection'](_0x53f60e[_0x82cb('0x42')],qs['fields'](_0x43f36c[_0x82cb('0x43')][_0x82cb('0x47')]));_0x258d79['attributes']=_0x258d79[_0x82cb('0x48')]['length']?_0x258d79[_0x82cb('0x48')]:_0x53f60e[_0x82cb('0x42')];if(!_0x43f36c[_0x82cb('0x43')][_0x82cb('0x4a')]('nolimit')){_0x258d79[_0x82cb('0x2e')]=qs[_0x82cb('0x2e')](_0x43f36c['query']['limit']);_0x258d79['offset']=qs[_0x82cb('0x2d')](_0x43f36c['query'][_0x82cb('0x2d')]);}_0x258d79[_0x82cb('0x4c')]=qs[_0x82cb('0x4d')](_0x43f36c[_0x82cb('0x43')][_0x82cb('0x4d')]);_0x258d79[_0x82cb('0x4e')]=qs['filters'](_[_0x82cb('0x4f')](_0x43f36c[_0x82cb('0x43')],_0x53f60e[_0x82cb('0x45')]));_0x258d79[_0x82cb('0x4e')][_0x82cb('0x66')]=_0x4bf7ca['id'];if(_0x43f36c[_0x82cb('0x43')][_0x82cb('0x69')]){_0x258d79[_0x82cb('0x4e')]=_['merge'](_0x258d79[_0x82cb('0x4e')],{'$or':_[_0x82cb('0x3d')](_0x258d79['attributes'],function(_0x436390){var _0x25186e={};_0x25186e[_0x436390]={'$like':'%'+_0x43f36c[_0x82cb('0x43')]['filter']+'%'};return _0x25186e;})});}_0x258d79=_[_0x82cb('0x50')]({},_0x258d79,_0x43f36c[_0x82cb('0x52')]);return db[_0x82cb('0x67')][_0x82cb('0x30')]({'where':_0x258d79[_0x82cb('0x4e')]})[_0x82cb('0x20')](function(_0x2dfcf2){_0x5db098[_0x82cb('0x30')]=_0x2dfcf2;if(_0x43f36c[_0x82cb('0x43')][_0x82cb('0x53')]){_0x258d79['include']=[{'all':!![]}];}return db[_0x82cb('0x67')][_0x82cb('0x55')](_0x258d79);})[_0x82cb('0x20')](function(_0x1db08d){_0x5db098[_0x82cb('0x56')]=_0x1db08d;return _0x5db098;});}})[_0x82cb('0x20')](respondWithFilteredResult(_0x475949,_0x258d79))[_0x82cb('0x57')](handleError(_0x475949,null));};exports[_0x82cb('0x6a')]=function(_0x530bc7,_0x5806fd,_0x472c08){return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0x530bc7[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x5806fd,null))['then'](function(_0xde495c){if(_0xde495c){return _0xde495c['removeDispositions'](_0x530bc7[_0x82cb('0x43')]['ids']);}})[_0x82cb('0x20')](respondWithStatusCode(_0x5806fd,null))[_0x82cb('0x57')](handleError(_0x5806fd,null));};exports['addAnswer']=function(_0xdb96b1,_0x2107d4,_0x3999a2){if(_0xdb96b1[_0x82cb('0x5d')]['id']){delete _0xdb96b1[_0x82cb('0x5d')]['id'];}return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0xdb96b1['params']['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x2107d4,null))['then'](function(_0x2d07ed){if(_0x2d07ed){_0xdb96b1[_0x82cb('0x5d')]['ChatWebsiteId']=_0x2d07ed['id'];return db[_0x82cb('0x6b')]['create'](_0xdb96b1['body']);}})['then'](respondWithResult(_0x2107d4,null))['catch'](handleError(_0x2107d4,null));};exports['getAnswers']=function(_0x42bdb3,_0x4ae739,_0x190728){var _0x4ddc8d={'raw':![],'where':{}};var _0x5a7489={};var _0x43db20={'count':0x0,'rows':[]};return db[_0x82cb('0x3e')][_0x82cb('0x68')]({'where':{'id':_0x42bdb3['params']['id']}})['then'](handleEntityNotFound(_0x4ae739,null))[_0x82cb('0x20')](function(_0x365144){if(_0x365144){_0x5a7489['model']=_['keys'](db['CannedAnswer']['rawAttributes']);_0x5a7489[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0x42bdb3['query']);_0x5a7489[_0x82cb('0x45')]=_[_0x82cb('0x46')](_0x5a7489[_0x82cb('0x42')],_0x5a7489['query']);_0x4ddc8d[_0x82cb('0x48')]=_[_0x82cb('0x46')](_0x5a7489[_0x82cb('0x42')],qs[_0x82cb('0x47')](_0x42bdb3[_0x82cb('0x43')]['fields']));_0x4ddc8d[_0x82cb('0x48')]=_0x4ddc8d[_0x82cb('0x48')][_0x82cb('0x49')]?_0x4ddc8d[_0x82cb('0x48')]:_0x5a7489[_0x82cb('0x42')];if(!_0x42bdb3[_0x82cb('0x43')][_0x82cb('0x4a')]('nolimit')){_0x4ddc8d[_0x82cb('0x2e')]=qs['limit'](_0x42bdb3[_0x82cb('0x43')][_0x82cb('0x2e')]);_0x4ddc8d[_0x82cb('0x2d')]=qs[_0x82cb('0x2d')](_0x42bdb3[_0x82cb('0x43')][_0x82cb('0x2d')]);}_0x4ddc8d[_0x82cb('0x4c')]=qs[_0x82cb('0x4d')](_0x42bdb3[_0x82cb('0x43')]['sort']);_0x4ddc8d[_0x82cb('0x4e')]=qs['filters'](_['pick'](_0x42bdb3['query'],_0x5a7489[_0x82cb('0x45')]));_0x4ddc8d['where'][_0x82cb('0x66')]=_0x365144['id'];if(_0x42bdb3[_0x82cb('0x43')][_0x82cb('0x69')]){_0x4ddc8d[_0x82cb('0x4e')]=_[_0x82cb('0x50')](_0x4ddc8d['where'],{'$or':_[_0x82cb('0x3d')](_0x4ddc8d[_0x82cb('0x48')],function(_0x18d44c){var _0x3836a0={};_0x3836a0[_0x18d44c]={'$like':'%'+_0x42bdb3[_0x82cb('0x43')][_0x82cb('0x69')]+'%'};return _0x3836a0;})});}_0x4ddc8d=_['merge']({},_0x4ddc8d,_0x42bdb3[_0x82cb('0x52')]);return db[_0x82cb('0x6b')]['count']({'where':_0x4ddc8d[_0x82cb('0x4e')]})[_0x82cb('0x20')](function(_0x35db74){_0x43db20[_0x82cb('0x30')]=_0x35db74;if(_0x42bdb3[_0x82cb('0x43')][_0x82cb('0x53')]){_0x4ddc8d[_0x82cb('0x54')]=[{'all':!![]}];}return db[_0x82cb('0x6b')][_0x82cb('0x55')](_0x4ddc8d);})['then'](function(_0x4a38d6){_0x43db20[_0x82cb('0x56')]=_0x4a38d6;return _0x43db20;});}})['then'](respondWithFilteredResult(_0x4ae739,_0x4ddc8d))['catch'](handleError(_0x4ae739,null));};exports[_0x82cb('0x6c')]=function(_0xf138a7,_0x4f2d9c,_0x228d65){return db['ChatWebsite'][_0x82cb('0x5b')]({'where':{'id':_0xf138a7['params']['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x4f2d9c,null))['then'](function(_0x314341){if(_0x314341){return _0x314341[_0x82cb('0x6c')](_0xf138a7['query'][_0x82cb('0x6d')]);}})[_0x82cb('0x20')](respondWithStatusCode(_0x4f2d9c,null))[_0x82cb('0x57')](handleError(_0x4f2d9c,null));};exports[_0x82cb('0x6e')]=function(_0x2805af,_0x3c0dc4,_0x39f051){_0x2805af[_0x82cb('0x5d')][_0x82cb('0x6f')]=_0x2805af[_0x82cb('0x70')]['filename'];return db['ChatWebsite'][_0x82cb('0x5b')]({'where':{'id':_0x2805af['params']['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x3c0dc4,null))[_0x82cb('0x20')](saveUpdates(_0x2805af[_0x82cb('0x5d')],null))[_0x82cb('0x20')](respondWithResult(_0x3c0dc4,null))[_0x82cb('0x57')](handleError(_0x3c0dc4,null));};exports[_0x82cb('0x71')]=function(_0x482d01,_0x8a365c,_0x100390){_0x482d01[_0x82cb('0x5d')][_0x82cb('0x72')]=_0x482d01[_0x82cb('0x70')][_0x82cb('0x73')];return db['ChatWebsite'][_0x82cb('0x5b')]({'where':{'id':_0x482d01[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x8a365c,null))['then'](saveUpdates(_0x482d01['body'],null))[_0x82cb('0x20')](respondWithResult(_0x8a365c,null))[_0x82cb('0x57')](handleError(_0x8a365c,null));};exports[_0x82cb('0x74')]=function(_0x1db51d,_0x3fd8f2,_0x226e38){_0x1db51d[_0x82cb('0x5d')][_0x82cb('0x75')]=_0x1db51d[_0x82cb('0x70')][_0x82cb('0x73')];return db[_0x82cb('0x3e')]['find']({'where':{'id':_0x1db51d[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x3fd8f2,null))[_0x82cb('0x20')](saveUpdates(_0x1db51d[_0x82cb('0x5d')],null))[_0x82cb('0x20')](respondWithResult(_0x3fd8f2,null))['catch'](handleError(_0x3fd8f2,null));};exports['addSystemAvatar']=function(_0x22076e,_0x297449,_0x52c690){_0x22076e[_0x82cb('0x5d')][_0x82cb('0x76')]=_0x22076e[_0x82cb('0x70')][_0x82cb('0x73')];return db[_0x82cb('0x3e')]['find']({'where':{'id':_0x22076e[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x297449,null))['then'](saveUpdates(_0x22076e[_0x82cb('0x5d')],null))[_0x82cb('0x20')](respondWithResult(_0x297449,null))['catch'](handleError(_0x297449,null));};exports[_0x82cb('0x77')]=function(_0xcdb074,_0x1278ba,_0x4ab8c7){var _0x3b42d4=path[_0x82cb('0x78')](config[_0x82cb('0x79')],'server/files/images/logos/default_logo.svg');var _0x1b182a={'where':{'id':_0xcdb074[_0x82cb('0x58')]['id']},'attributes':['id',_0x82cb('0x6f')],'raw':!![]};var _0x57d37a=![];return require(_0x82cb('0x18'))[_0x82cb('0x7a')]()[_0x82cb('0x20')](function(_0xcc84cd){if(_0xcc84cd){_0x57d37a=_0xcc84cd['custom'];}})[_0x82cb('0x20')](function(){return db[_0x82cb('0x3e')]['find'](_0x1b182a);})['then'](handleEntityNotFound(_0x1278ba,null))['then'](function(_0xc87b1){if(_0xc87b1){if(!_[_0x82cb('0x7b')](_0xc87b1[_0x82cb('0x6f')])){if(fs[_0x82cb('0x7c')](path['join'](config[_0x82cb('0x79')],_0x82cb('0x7d'),_0xc87b1[_0x82cb('0x6f')]))&&_0x57d37a){_0x3b42d4=path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x7d'),_0xc87b1[_0x82cb('0x6f')]);}}return _0x1278ba[_0x82cb('0x7e')](_0x3b42d4);}})['catch'](handleError(_0x1278ba,null));};exports['getAvatar']=function(_0x131cce,_0x1e4ce8,_0x3121d4){var _0x22ff3a=path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x7f'));var _0x40db28={'where':{'id':_0x131cce[_0x82cb('0x58')]['id']},'attributes':['id',_0x82cb('0x72')],'raw':!![]};return db[_0x82cb('0x3e')]['find'](_0x40db28)[_0x82cb('0x20')](handleEntityNotFound(_0x1e4ce8,null))[_0x82cb('0x20')](function(_0x37e724){if(_0x37e724){if(!_[_0x82cb('0x7b')](_0x37e724[_0x82cb('0x72')])){if(fs['existsSync'](path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x80'),_0x37e724[_0x82cb('0x72')]))){_0x22ff3a=path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x80'),_0x37e724[_0x82cb('0x72')]);}}return _0x1e4ce8['download'](_0x22ff3a);}})['catch'](handleError(_0x1e4ce8,null));};exports[_0x82cb('0x81')]=function(_0x27abe0,_0x5e9ec8,_0x5c3bd5){var _0x55a4dd=path[_0x82cb('0x78')](config[_0x82cb('0x79')],'server/files/images/avatars/customer_avatar.png');var _0x1a4316={'where':{'id':_0x27abe0[_0x82cb('0x58')]['id']},'attributes':['id',_0x82cb('0x75'),_0x82cb('0x82')],'raw':!![]};return db[_0x82cb('0x3e')][_0x82cb('0x5b')](_0x1a4316)[_0x82cb('0x20')](handleEntityNotFound(_0x5e9ec8,null))['then'](function(_0x9e6d6a){if(_0x9e6d6a){if(!_[_0x82cb('0x7b')](_0x9e6d6a[_0x82cb('0x75')])){if(fs[_0x82cb('0x7c')](path['join'](config[_0x82cb('0x79')],_0x82cb('0x80'),_0x9e6d6a[_0x82cb('0x75')]))&&_0x9e6d6a['showCustomerAvatar']){_0x55a4dd=path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x80'),_0x9e6d6a[_0x82cb('0x75')]);}}return _0x5e9ec8[_0x82cb('0x7e')](_0x55a4dd);}})[_0x82cb('0x57')](handleError(_0x5e9ec8,null));};exports[_0x82cb('0x83')]=function(_0x5b900f,_0x590fb8,_0x4de84a){var _0x512978=path[_0x82cb('0x78')](config['root'],_0x82cb('0x84'));var _0x587cd0={'where':{'id':_0x5b900f[_0x82cb('0x58')]['id']},'attributes':['id',_0x82cb('0x76')],'raw':!![]};return db[_0x82cb('0x3e')]['find'](_0x587cd0)[_0x82cb('0x20')](handleEntityNotFound(_0x590fb8,null))[_0x82cb('0x20')](function(_0x2199a2){if(_0x2199a2){if(!_[_0x82cb('0x7b')](_0x2199a2['systemAvatar'])){if(fs[_0x82cb('0x7c')](path[_0x82cb('0x78')](config['root'],_0x82cb('0x80'),_0x2199a2['systemAvatar']))){_0x512978=path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x80'),_0x2199a2['systemAvatar']);}}return _0x590fb8[_0x82cb('0x7e')](_0x512978);}})[_0x82cb('0x57')](handleError(_0x590fb8,null));};exports['notify']=function(_0x53de98,_0x211f08,_0x2acbc1){var _0x404fd3=require(_0x82cb('0x85'));var _0xc6e85=new _0x404fd3();var _0x3d56fd=_0xc6e85['setUA'](_0x53de98[_0x82cb('0x86')][_0x82cb('0x87')])[_0x82cb('0x88')]();var _0x64839e={'body':_0x53de98['body'],'channel':_0x82cb('0x89')};var _0x2fb4a2=[];var _0x107725=[];var _0x49d945={};var _0x11378a=![];return db['CmContact'][_0x82cb('0x64')]()['then'](function(_0x26d294){if(!_0x26d294){throw new db['Sequelize']['ValidationError'](_0x82cb('0x8a'));}_0x2fb4a2=_[_0x82cb('0x8b')](_[_0x82cb('0x44')](_0x26d294),[_0x82cb('0x8c'),_0x82cb('0x8d')]);_0x107725=_[_0x82cb('0x8b')](_[_0x82cb('0x44')](_0x26d294),[_0x82cb('0x8c'),_0x82cb('0x8d'),_0x82cb('0x8e'),_0x82cb('0x8f')]);if(_0x53de98[_0x82cb('0x5d')]['id']){delete _0x53de98['body']['id'];}if(_[_0x82cb('0x7b')](_0x53de98[_0x82cb('0x5d')]['from'])){throw new db['Sequelize']['ValidationError'](_0x82cb('0x90'));}if(_[_0x82cb('0x7b')](_0x53de98[_0x82cb('0x5d')][_0x82cb('0x5d')])||_0x53de98[_0x82cb('0x5d')][_0x82cb('0x5d')]===''){throw new db[(_0x82cb('0x91'))][(_0x82cb('0x92'))](_0x82cb('0x93'));}if(_['isNil'](_0x53de98[_0x82cb('0x5d')]['mapKey'])){throw new db[(_0x82cb('0x91'))]['ValidationError'](_0x82cb('0x94')+_0x107725);}if(!_[_0x82cb('0x95')](_0x107725,_0x53de98[_0x82cb('0x5d')][_0x82cb('0x96')])){throw new db[(_0x82cb('0x91'))][(_0x82cb('0x92'))](_0x82cb('0x97')+_0x107725);}_0x49d945[_0x53de98[_0x82cb('0x5d')][_0x82cb('0x96')]]=_0x53de98['body'][_0x82cb('0x98')];})[_0x82cb('0x20')](function(){return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0x53de98[_0x82cb('0x58')]['id']},'include':[{'model':db['CmList'],'as':_0x82cb('0x99'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x49d945,'limit':0x1,'order':[[_0x82cb('0x8d'),_0x82cb('0x9a')]]}]},{'model':db['ChatApplication'],'as':_0x82cb('0x9b')}]});})[_0x82cb('0x20')](handleEntityNotFound(_0x211f08,null))[_0x82cb('0x20')](function(_0x2bb9e6){if(_0x2bb9e6&&_0x2bb9e6[_0x82cb('0x99')]){_0x64839e[_0x82cb('0x9c')]=_0x2bb9e6;_0x64839e[_0x82cb('0x9d')]=_0x2bb9e6['Applications'];_0x64839e[_0x82cb('0x9e')]=_0x2bb9e6['List'];_0x64839e[_0x82cb('0x9d')]=_[_0x82cb('0x9f')](_0x64839e['applications'],[_0x82cb('0xa0')],[_0x82cb('0xa1')]);if(_0x64839e[_0x82cb('0x9c')][_0x82cb('0x9b')]){delete _0x64839e['account'][_0x82cb('0x9b')];}if(_0x64839e[_0x82cb('0x9c')][_0x82cb('0x99')]&&_0x64839e[_0x82cb('0x9c')][_0x82cb('0x99')][_0x82cb('0xa2')]['length']){return _0x64839e[_0x82cb('0x9c')]['List'][_0x82cb('0xa2')][0x0];}var _0x502a12=_[_0x82cb('0x1b')](_0x53de98['body'],{'firstName':_0x53de98[_0x82cb('0x5d')][_0x82cb('0x98')],'ListId':_0x2bb9e6[_0x82cb('0x8f')]});_0x502a12[_0x53de98[_0x82cb('0x5d')][_0x82cb('0x96')]]=_0x53de98['body'][_0x82cb('0x98')];return db[_0x82cb('0xa3')][_0x82cb('0x5c')](_0x502a12,{'fields':_0x2fb4a2,'raw':!![]});}})['then'](handleEntityNotFound(_0x211f08,null))[_0x82cb('0x20')](function(_0x2cd077){_0x64839e[_0x82cb('0xa4')]=_0x2cd077;var _0x5c5655=_0x53de98['body'][_0x82cb('0xa5')];if(_0x53de98[_0x82cb('0x86')][_0x82cb('0xa6')]){_0x5c5655=_0x53de98[_0x82cb('0x86')]['cf-connecting-ip'];}else if(_0x53de98[_0x82cb('0x86')][_0x82cb('0xa7')]){_0x5c5655=_['first'](_0x53de98[_0x82cb('0x86')][_0x82cb('0xa7')][_0x82cb('0xa8')](','));}if(_0x2cd077){var _0x3c3192={'ContactId':_0x2cd077['id'],'ChatWebsiteId':_0x53de98[_0x82cb('0x58')]['id'],'from':(_0x2cd077[_0x82cb('0xa9')]||'')+'\x20'+(_0x2cd077[_0x82cb('0xaa')]||''),'customerIp':_0x5c5655,'customerPort':_0x53de98[_0x82cb('0x86')][_0x82cb('0xab')]?_0x53de98['headers']['x-real-port']:null,'referer':_0x53de98[_0x82cb('0x5d')]['referer'],'browserName':_0x3d56fd[_0x82cb('0xac')]['name']&&_0x3d56fd[_0x82cb('0xac')][_0x82cb('0xad')]?util[_0x82cb('0xae')](_0x82cb('0xaf'),_0x3d56fd[_0x82cb('0xac')]['name'],_0x3d56fd[_0x82cb('0xac')][_0x82cb('0xad')]):'unknown','browserVersion':_0x3d56fd['browser'][_0x82cb('0xad')]||_0x82cb('0xb0'),'osName':util[_0x82cb('0xae')](_0x82cb('0xaf'),_0x3d56fd['os']['name'],_0x3d56fd['os'][_0x82cb('0xad')]),'osVersion':_0x3d56fd['os'][_0x82cb('0xad')],'deviceModel':_0x3d56fd[_0x82cb('0xb1')][_0x82cb('0x42')]&&_0x3d56fd[_0x82cb('0xb1')]['vendor']?util[_0x82cb('0xae')](_0x82cb('0xb2'),_0x3d56fd[_0x82cb('0xb1')]['model'],_0x3d56fd[_0x82cb('0xb1')][_0x82cb('0xb3')],_0x3d56fd[_0x82cb('0xb1')]['type']):null,'deviceVendor':_0x3d56fd[_0x82cb('0xb1')]['vendor'],'deviceType':_0x3d56fd['device'][_0x82cb('0x40')],'formData':JSON['stringify'](_0x53de98[_0x82cb('0x5d')])};var _0x2a3470={'ChatWebsiteId':_0x53de98[_0x82cb('0x58')]['id'],'closed':![]};if(_0x53de98[_0x82cb('0x5d')][_0x82cb('0xb4')]){_0x2a3470[_0x82cb('0xb4')]=_0x53de98['body']['threadId'];return db[_0x82cb('0xb5')]['find']({'where':_0x2a3470})[_0x82cb('0x20')](function(_0x3a84ca){if(_0x3a84ca){return[_0x3a84ca,![]];}_0x3c3192[_0x82cb('0xb4')]=_0x53de98['body'][_0x82cb('0xb4')];_0x3c3192[_0x82cb('0xb6')]=_0x53de98[_0x82cb('0x5d')]['externalUrl'];return db['ChatInteraction'][_0x82cb('0x5c')](_0x3c3192)['then'](function(_0x575b05){return[_0x575b05,!![]];});});}_0x2a3470['ContactId']=_0x2cd077['id'];if(_0x53de98['body'][_0x82cb('0xb7')]&&_0x53de98['body']['interaction']['id']){_0x2a3470['id']=_0x53de98['body'][_0x82cb('0xb7')]['id'];return db[_0x82cb('0xb5')]['find']({'where':_0x2a3470})['then'](function(_0x184b39){if(_0x184b39){return[_0x184b39,![]];}return db['ChatInteraction'][_0x82cb('0x5c')](_0x3c3192)[_0x82cb('0x20')](function(_0x22567a){return[_0x22567a,!![]];});});}return db[_0x82cb('0xb5')][_0x82cb('0x5c')](_0x3c3192)[_0x82cb('0x20')](function(_0x547d5d){return[_0x547d5d,!![]];});}})['spread'](function(_0x67e297,_0x12bb48){if(_0x67e297){_0x11378a=_0x12bb48;if(!_0x12bb48){var _0x50519e={'from':(_0x64839e[_0x82cb('0xa4')]['firstName']||'')+'\x20'+(_0x64839e['contact'][_0x82cb('0xaa')]||'')};if(_0x53de98[_0x82cb('0x5d')]['threadId']&&_0x53de98[_0x82cb('0x5d')][_0x82cb('0xb8')]&&_0x53de98['body']['threadId']!=_0x53de98[_0x82cb('0x5d')][_0x82cb('0xb8')]){_0x50519e[_0x82cb('0xb4')]=_0x53de98[_0x82cb('0x5d')]['messageId'];}return _0x67e297[_0x82cb('0x63')](_0x50519e);}else{return _0x67e297;}}})[_0x82cb('0x20')](function(_0x3acc68){_0x64839e['interaction']=_0x3acc68[_0x82cb('0x35')]({'plain':!![]});_0x64839e['interaction'][_0x82cb('0xb9')]=_0x11378a;if(_0x64839e[_0x82cb('0xb7')][_0x82cb('0xb9')]){if(_0x64839e[_0x82cb('0x9c')]['autoclose']){_0x64839e['applications']['push']({'id':0x0,'priority':_0x64839e['applications'][_0x82cb('0x49')]+0x1,'app':_0x82cb('0xba'),'appdata':'unmanaged','interval':_0x82cb('0xbb')});}}return db['ChatMessage'][_0x82cb('0x5c')]({'body':_0x53de98['body'][_0x82cb('0x5d')],'ChatWebsiteId':_0x53de98[_0x82cb('0x58')]['id'],'ChatInteractionId':_0x3acc68['id'],'direction':'in','ContactId':_0x64839e['contact']['id'],'AttachmentId':_0x53de98[_0x82cb('0x5d')][_0x82cb('0xbc')]});})[_0x82cb('0x20')](function(_0x4bedd8){_0x64839e[_0x82cb('0x27')]=_0x4bedd8;if(_0x64839e['interaction']['UserId']){return db[_0x82cb('0xbd')][_0x82cb('0x5b')]({'attributes':['id',_0x82cb('0x39')],'where':{'id':_0x64839e[_0x82cb('0xb7')]['UserId']}})[_0x82cb('0x20')](function(_0x3363f9){if(_0x3363f9){_0x64839e[_0x82cb('0x9d')][_0x82cb('0xbe')]({'id':0x0,'priority':0x0,'app':_0x82cb('0xbf'),'appdata':_0x3363f9[_0x82cb('0x39')]+','+(_0x64839e[_0x82cb('0x9c')][_0x82cb('0xc0')]||0xa),'interval':_0x82cb('0xbb')});_0x64839e['forcedOwnership']=!![];}return respondWithRpcPromise(_0x82cb('0xc1'),'startRouting',_0x64839e);});}return respondWithRpcPromise(_0x82cb('0xc1'),_0x82cb('0xc2'),_0x64839e);})[_0x82cb('0x20')](function(_0x40f8b7){respondWithRpcPromise(_0x82cb('0xc3'),_0x82cb('0xc3'),{'event':_0x82cb('0xc4'),'message':_0x40f8b7},client9002);return _0x40f8b7;})[_0x82cb('0x20')](respondWithResult(_0x211f08,null))[_0x82cb('0x57')](handleError(_0x211f08,null));};exports[_0x82cb('0xc5')]=function(_0x4edc3f,_0x2f354c,_0x28738f){var _0x5e578e,_0x49dc8c,_0x1bfd89;var _0x3bb465=[];var _0x5b7073=[];var _0x55da12={};var _0x56dd17=_0x4edc3f[_0x82cb('0xc6')]||[];var _0xa3c2ad=[];var _0x13da15;return db[_0x82cb('0xa3')][_0x82cb('0x64')]()['then'](function(_0x17d91d){if(!_0x17d91d){throw new db[(_0x82cb('0x91'))][(_0x82cb('0x92'))](_0x82cb('0x8a'));}_0x5b7073=_[_0x82cb('0x8b')](_[_0x82cb('0x44')](_0x17d91d),[_0x82cb('0x8c'),_0x82cb('0x8d')]);_0x3bb465=_['difference'](_['keys'](_0x17d91d),[_0x82cb('0x8c'),'updatedAt',_0x82cb('0x8e'),_0x82cb('0x8f')]);if(_0x4edc3f[_0x82cb('0x5d')]['id']){delete _0x4edc3f['body']['id'];}if(_[_0x82cb('0x7b')](_0x4edc3f['body'][_0x82cb('0x98')])){throw _0x2f354c[_0x82cb('0x2b')](0x1f4)[_0x82cb('0x3a')](new db[(_0x82cb('0x91'))][(_0x82cb('0x92'))](_0x82cb('0x90')));}if(_[_0x82cb('0x7b')](_0x4edc3f['body'][_0x82cb('0x5d')])||_0x4edc3f['body'][_0x82cb('0x5d')]===''){throw _0x2f354c['status'](0x1f4)[_0x82cb('0x3a')](new db['Sequelize'][(_0x82cb('0x92'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_['isNil'](_0x4edc3f[_0x82cb('0x5d')][_0x82cb('0xc7')])){throw _0x2f354c[_0x82cb('0x2b')](0x1f4)[_0x82cb('0x3a')](new db[(_0x82cb('0x91'))]['ValidationError'](_0x82cb('0xc8')+_0x3bb465));}if(!_[_0x82cb('0x95')](_0x3bb465,_0x4edc3f[_0x82cb('0x5d')]['mapKeyOffline'])){throw _0x2f354c[_0x82cb('0x2b')](0x1f4)[_0x82cb('0x3a')](new db[(_0x82cb('0x91'))][(_0x82cb('0x92'))](_0x82cb('0xc9')+_0x3bb465));}_0x55da12[_0x4edc3f[_0x82cb('0x5d')]['mapKeyOffline']]=_0x4edc3f[_0x82cb('0x5d')][_0x82cb('0x98')];})['then'](function(){return db['ChatWebsite'][_0x82cb('0x5b')]({'where':{'id':_0x4edc3f[_0x82cb('0x58')]['id']},'include':[{'model':db['CmList'],'as':'List'},{'model':db[_0x82cb('0xca')],'as':_0x82cb('0xca')}]});})[_0x82cb('0x20')](handleEntityNotFound(_0x2f354c,null))['then'](function(_0x329be7){if(_0x329be7&&_0x329be7[_0x82cb('0x99')]){_0x49dc8c=_0x329be7;var _0x271e8e=_[_0x82cb('0x1b')](_0x4edc3f[_0x82cb('0x5d')],{'firstName':_0x4edc3f['body'][_0x82cb('0x98')],'phone':_0x4edc3f[_0x82cb('0x5d')][_0x82cb('0x98')],'ListId':_0x329be7['ListId']});_0x271e8e[_0x4edc3f[_0x82cb('0x5d')][_0x82cb('0xc7')]]=_0x4edc3f['body'][_0x82cb('0x98')];return db[_0x82cb('0xa3')][_0x82cb('0xcb')]({'where':_0x55da12,'defaults':_0x271e8e});}})[_0x82cb('0xcc')](function(_0x55b368){if(_0x55b368){_0x1bfd89=_0x55b368;var _0x56178b=fs[_0x82cb('0xcd')](path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0xce')),'utf8');var _0x30499b=ejs['render'](_0x56178b,{'body':_['toPairs'](_0x4edc3f[_0x82cb('0x5d')][_0x82cb('0x5d')]),'bodyTitle':_0x49dc8c[_0x82cb('0xcf')]});return db[_0x82cb('0xd0')]['create']({'body':_0x30499b,'ContactId':_0x55b368['id'],'ChatWebsiteId':_0x49dc8c['id']});}})[_0x82cb('0x20')](function(_0x4604ac){_0x13da15=_0x4604ac;if(_0x56dd17[_0x82cb('0x49')]){var _0x480a89=_0x56dd17[_0x82cb('0x3d')](function(_0x2a4ff4){return{'name':_0x2a4ff4[_0x82cb('0xd1')],'basename':_0x2a4ff4[_0x82cb('0x73')],'type':_0x2a4ff4[_0x82cb('0xd2')],'ChatOfflineMessageId':_0x4604ac['id']};});_0xa3c2ad=_0x480a89['map'](_0x38b239=>{var _0x290562={'filename':_0x38b239['name'],'path':path[_0x82cb('0x78')](config[_0x82cb('0x79')],'server','files',_0x82cb('0xd3'),_0x82cb('0xd4'),_0x38b239['basename'])};return _0x290562;});if(!_0x49dc8c[_0x82cb('0xd5')]){return db[_0x82cb('0xd6')][_0x82cb('0xd7')](function(_0x46aa7a){return db['Attachment']['bulkCreate'](_0x480a89,{'transaction':_0x46aa7a});});}}})['then'](function(){if(_0x13da15){_0x5e578e=_0x13da15;return db[_0x82cb('0xca')][_0x82cb('0x68')]({'where':{'active':!![]},'include':[{'model':db['MailServerOut'],'as':_0x82cb('0xd8'),'raw':!![]}]});}})['then'](function(_0x15852e){if(_0x15852e&&_0x15852e[_0x82cb('0xd8')]&&_0x49dc8c[_0x82cb('0xd9')]&&_0x49dc8c[_0x82cb('0xda')]){var _0x54e34f={'tls':{'rejectUnauthorized':![]}};if(_0x15852e['Smtp'][_0x82cb('0xdb')]){_0x54e34f[_0x82cb('0xdb')]=_0x15852e[_0x82cb('0xd8')][_0x82cb('0xdb')];}else{_0x54e34f[_0x82cb('0xdc')]=_0x15852e[_0x82cb('0xd8')][_0x82cb('0xdc')];_0x54e34f[_0x82cb('0xdd')]=_0x15852e[_0x82cb('0xd8')][_0x82cb('0xdd')];_0x54e34f[_0x82cb('0xde')]=_0x15852e[_0x82cb('0xd8')][_0x82cb('0xde')];}if(_0x15852e[_0x82cb('0xd8')][_0x82cb('0xdf')]){_0x54e34f[_0x82cb('0xe0')]={'user':_0x15852e[_0x82cb('0xd8')][_0x82cb('0x5e')],'pass':_0x15852e[_0x82cb('0xd8')][_0x82cb('0xe1')]};}return respondWithRpcPromise(_0x82cb('0xe2'),_0x82cb('0xe3'),{'account':_0x54e34f,'message':{'from':util[_0x82cb('0xae')](_0x82cb('0xe4'),_0x15852e['name'],_0x15852e[_0x82cb('0xe5')]||_0x15852e[_0x82cb('0xd8')]['user']),'to':_0x49dc8c['forwardOfflineAddress'],'subject':_0x49dc8c[_0x82cb('0xe6')],'html':_0x5e578e[_0x82cb('0x5d')],'attachments':_0xa3c2ad}},client9003)[_0x82cb('0x20')](function(){return _0x5e578e;})['catch'](function(_0x43c715){console[_0x82cb('0x25')](_0x43c715);});}})[_0x82cb('0x20')](function(){if(_0x49dc8c&&_0x49dc8c[_0x82cb('0xd5')]&&_0x49dc8c[_0x82cb('0xe7')]){var _0x183ff5=[];if(_0x56dd17[_0x82cb('0x49')]){_0x183ff5=_0x56dd17[_0x82cb('0x3d')](function(_0x46b737){return{'name':_0x46b737[_0x82cb('0xd1')],'basename':_0x46b737[_0x82cb('0x73')],'type':_0x46b737[_0x82cb('0xd2')],'ChatOfflineMessageId':_0x13da15['id']};});}var _0x4bbaa9;if(!_[_0x82cb('0x7b')](_0x49dc8c['subjectOffline'])){var _0x2f0503=_['map'](_0x4edc3f[_0x82cb('0x5d')],function(_0x53c179){return _0x53c179;});var _0x58c823=_['toPairsIn'](_0x2f0503)[0x0];var _0x10a628=_[_0x82cb('0xe8')](_0x58c823,function(_0x74e019){return _0x74e019;});_0x4bbaa9=_0x10a628[0x1][_0x49dc8c[_0x82cb('0xe9')]];}var _0x574bff={'from':_0x1bfd89['email'],'firstName':_0x1bfd89[_0x82cb('0xa9')],'lastName':_0x1bfd89[_0x82cb('0xaa')],'mapKey':_0x82cb('0xe5'),'message':{'from':_0x1bfd89['email'],'to':_0x49dc8c[_0x82cb('0xca')][_0x82cb('0xe5')],'cc':'','subject':_[_0x82cb('0x7b')](_0x4bbaa9)?_0x49dc8c[_0x82cb('0xe6')]:_0x4bbaa9,'messageId':'','sentAt':new Date(),'attach':_0x183ff5['length'],'attachments':_0x183ff5,'originChannel':'Chat','ChatWebsiteId':_0x49dc8c['id'],'ChatOfflineMessageId':_0x5e578e['id'],'originTo':_0x49dc8c['MailAccount'][_0x82cb('0xe5')]},'body':_0x5e578e[_0x82cb('0x5d')]};var _0x40232a={'account':{'id':_0x49dc8c[_0x82cb('0xe7')]},'body':_0x574bff,'log':_0x82cb('0xea')};return respondWithRpcPromise(_0x82cb('0xea'),_0x82cb('0xeb'),_0x40232a,client9001)[_0x82cb('0x20')](function(){return _0x5e578e;})[_0x82cb('0x57')](function(_0xa7285e){console[_0x82cb('0x25')](_0xa7285e);});}return;})[_0x82cb('0x20')](function(){if(_0x5e578e){return _0x5e578e;}})[_0x82cb('0x20')](respondWithResult(_0x2f354c,null))['catch'](function(_0x3339c6){console[_0x82cb('0x25')]('catch',_0x3339c6);for(var _0x15179f of _0x56dd17){var _0x84a9e9=path[_0x82cb('0x78')](config['root'],_0x82cb('0xec'),_0x82cb('0xc6'),_0x82cb('0xd3'),_0x82cb('0xd4'),_0x15179f[_0x82cb('0x73')]);fs_extra['remove'](_0x84a9e9)[_0x82cb('0x57')](function(_0x45d2c8){console[_0x82cb('0x25')]('Could\x20not\x20remove\x20attachment\x20file',_0x84a9e9,_0x45d2c8);});}});};exports[_0x82cb('0xed')]=function(_0x3005a2,_0x297d9d,_0x595efd){return db[_0x82cb('0xb5')]['find']({'where':{'id':_0x3005a2[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x297d9d,null))['then'](function(_0x4edb23){if(_0x4edb23){return _0x4edb23[_0x82cb('0xed')](_0x3005a2[_0x82cb('0x5d')][_0x82cb('0x6d')],_[_0x82cb('0xee')](_0x3005a2[_0x82cb('0x5d')],['ids','id'])||{});}})['then'](respondWithResult(_0x297d9d,null))['catch'](handleError(_0x297d9d,null));};exports[_0x82cb('0xef')]=function(_0x48ad93,_0x2ff132,_0x46e777){var _0x2e7a8d={'raw':![],'where':{}};var _0x596e61={};var _0x1575f0={'count':0x0,'rows':[]};return db[_0x82cb('0x3e')][_0x82cb('0x68')]({'where':{'id':_0x48ad93[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x2ff132,null))[_0x82cb('0x20')](function(_0x4a9d33){if(_0x4a9d33){_0x596e61[_0x82cb('0x42')]=_[_0x82cb('0x44')](db[_0x82cb('0xb5')][_0x82cb('0x5a')]);_0x596e61['query']=_[_0x82cb('0x44')](_0x48ad93[_0x82cb('0x43')]);_0x596e61[_0x82cb('0x45')]=_['intersection'](_0x596e61[_0x82cb('0x42')],_0x596e61[_0x82cb('0x43')]);_0x2e7a8d[_0x82cb('0x48')]=_['intersection'](_0x596e61[_0x82cb('0x42')],qs[_0x82cb('0x47')](_0x48ad93[_0x82cb('0x43')][_0x82cb('0x47')]));_0x2e7a8d[_0x82cb('0x48')]=_0x2e7a8d[_0x82cb('0x48')]['length']?_0x2e7a8d[_0x82cb('0x48')]:_0x596e61['model'];if(!_0x48ad93[_0x82cb('0x43')][_0x82cb('0x4a')](_0x82cb('0x4b'))){_0x2e7a8d[_0x82cb('0x2e')]=qs['limit'](_0x48ad93[_0x82cb('0x43')]['limit']);_0x2e7a8d[_0x82cb('0x2d')]=qs[_0x82cb('0x2d')](_0x48ad93['query'][_0x82cb('0x2d')]);}_0x2e7a8d[_0x82cb('0x4c')]=qs[_0x82cb('0x4d')](_0x48ad93[_0x82cb('0x43')]['sort']);_0x2e7a8d['where']=qs['filters'](_['pick'](_0x48ad93['query'],_0x596e61[_0x82cb('0x45')]));_0x2e7a8d[_0x82cb('0x4e')][_0x82cb('0x66')]=_0x4a9d33['id'];if(_0x48ad93['query'][_0x82cb('0x69')]){_0x2e7a8d[_0x82cb('0x4e')]=_[_0x82cb('0x50')](_0x2e7a8d[_0x82cb('0x4e')],{'$or':_['map'](_0x2e7a8d[_0x82cb('0x48')],function(_0x3972ec){var _0x235fb3={};_0x235fb3[_0x3972ec]={'$like':'%'+_0x48ad93[_0x82cb('0x43')][_0x82cb('0x69')]+'%'};return _0x235fb3;})});}_0x2e7a8d=_[_0x82cb('0x50')]({},_0x2e7a8d,_0x48ad93['options']);return db[_0x82cb('0xb5')][_0x82cb('0x30')]({'where':_0x2e7a8d[_0x82cb('0x4e')]})[_0x82cb('0x20')](function(_0x39f725){_0x1575f0[_0x82cb('0x30')]=_0x39f725;if(_0x48ad93[_0x82cb('0x43')][_0x82cb('0x53')]){_0x2e7a8d['include']=[{'model':db[_0x82cb('0xa3')],'as':_0x82cb('0xf0'),'required':![]},{'model':db[_0x82cb('0xbd')],'as':_0x82cb('0xf1'),'attributes':['name',_0x82cb('0xf2'),'internal'],'required':![]},{'model':db[_0x82cb('0xf3')],'as':_0x82cb('0xf4'),'attributes':['id','name',_0x82cb('0xf5')],'where':_0x48ad93['query'][_0x82cb('0xf6')]?{'id':_0x48ad93['query'][_0x82cb('0xf6')]}:undefined,'required':_0x48ad93[_0x82cb('0x43')][_0x82cb('0xf6')]?!![]:![]}];}return db[_0x82cb('0xb5')][_0x82cb('0x55')](_0x2e7a8d);})[_0x82cb('0x20')](function(_0x36fa9d){_0x1575f0[_0x82cb('0x56')]=_0x36fa9d;return _0x1575f0;});}})[_0x82cb('0x20')](respondWithFilteredResult(_0x2ff132,_0x2e7a8d))[_0x82cb('0x57')](handleError(_0x2ff132,null));};function iftimePromise(_0x4ba7b7,_0x55256e){return respondWithRpcPromise('Command','getSnippet',{'command':_0x55256e['timezone']?util['format']('iftime\x20%s,%s',_0x4ba7b7[_0x82cb('0xf7')],_0x55256e['timezone']):util[_0x82cb('0xae')](_0x82cb('0xf8'),_0x4ba7b7[_0x82cb('0xf7')])},client9002)['then'](function(_0xc539cc){var _0x1f7d23=_0xc539cc&&_0xc539cc[_0x82cb('0xf9')](_0x82cb('0xfa'))>=0x0?!![]:![];logger[_0x82cb('0x29')](_0x82cb('0xfb'),_0x55256e['id'],_0x4ba7b7['id'],_0x4ba7b7[_0x82cb('0xf7')],_0x1f7d23?'ONLINE':_0x82cb('0xfc'),_0x55256e['timezone']?_0x55256e[_0x82cb('0xfd')]:_0x82cb('0xfe'));return _0x1f7d23;})[_0x82cb('0x57')](function(_0x11c40b){logger[_0x82cb('0x25')](_0x82cb('0xfb'),_0x55256e['id'],_0x4ba7b7['id'],_0x4ba7b7[_0x82cb('0xf7')],util[_0x82cb('0xff')](_0x11c40b,{'showHidden':![],'depth':null}),_0x55256e[_0x82cb('0xfd')]?_0x55256e[_0x82cb('0xfd')]:_0x82cb('0xfe'));return![];});}exports[_0x82cb('0x100')]=function(_0x5d0a2f,_0x2ddad5,_0x2d8808){var _0x18662b=0x0;var _0x420c7e=0x0;var _0xb0f132=![];var _0x431c65;var _0x114a26;return db['ChatWebsite']['find']({'where':{'id':_0x5d0a2f[_0x82cb('0x58')]['id']},'include':[{'model':db[_0x82cb('0x101')],'as':_0x82cb('0x101'),'include':[{'model':db['Interval'],'as':_0x82cb('0x102'),'attributes':['id',_0x82cb('0xf7')],'raw':!![]}]}]})[_0x82cb('0x20')](handleEntityNotFound(_0x2ddad5,null))[_0x82cb('0x20')](function(_0x46c4db){if(_0x46c4db){_0x431c65=_0x46c4db;return _0x46c4db['getProactiveActions']({'raw':!![]});}})['then'](function(_0x1f8880){if(_0x431c65){if(_0x1f8880){_0x114a26=_0x1f8880;}}return require(_0x82cb('0x18'))['getLicense']();})[_0x82cb('0x20')](function(_0x50a411){if(_0x50a411){_0x420c7e=_0x50a411[_0x82cb('0x103')];_0xb0f132=_0x50a411[_0x82cb('0x104')];}})[_0x82cb('0x20')](function(){return db['ChatInteraction'][_0x82cb('0x30')]({'where':{'closed':![]}});})[_0x82cb('0x20')](function(_0x1ba1d0){_0x18662b=_0x1ba1d0;if(_0x420c7e&&_0x1ba1d0>_0x420c7e){return db[_0x82cb('0x105')][_0x82cb('0x68')]({'where':{'id':0x1}})[_0x82cb('0x20')](function(_0x169b24){if(_0x169b24){_0x169b24[_0x82cb('0x106')](_0x82cb('0x107'));}});}})['then'](function(){if(_0x431c65[_0x82cb('0x101')]&&_0x431c65['Interval']['Intervals']){var _0x536b04=[];for(var _0x2ea001=0x0;_0x2ea001<_0x431c65[_0x82cb('0x101')]['Intervals'][_0x82cb('0x49')];_0x2ea001++){var _0x5279c4=_0x431c65[_0x82cb('0x101')]['Intervals'][_0x2ea001][_0x82cb('0x35')]({'plain':!![]});_0x536b04[_0x82cb('0x108')](iftimePromise(_0x5279c4,_0x431c65));}return BPromise[_0x82cb('0x109')](_0x536b04)[_0x82cb('0x20')](function(_0x213644){return _[_0x82cb('0x10a')](_0x213644);});}else{return!![];}})['then'](function(_0x77d681){var _0x21203d=fs[_0x82cb('0xcd')](path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x10b')),'utf8');var _0x1f058c={'remote':_0x431c65[_0x82cb('0x10c')],'query':querystring[_0x82cb('0x24')](_['merge'](_0x431c65['get']({'plain':!![]}),{'customerIp':_0x5d0a2f[_0x82cb('0x86')]['x-forwarded-for']||_0x5d0a2f[_0x82cb('0x86')]['x-real-ip']||_0x5d0a2f[_0x82cb('0x10d')][_0x82cb('0x10e')]||_0x5d0a2f['ip'],'referer':_0x5d0a2f[_0x82cb('0x86')]['referer'],'openedInteractions':_0x18662b,'maxInteractions':_0x420c7e,'virtual':_0xb0f132[_0x82cb('0x103')],'online':_0x77d681,'custom':_0xb0f132}))[_0x82cb('0x10f')](/'/g,'\x5c\x27')};_0x2ddad5[_0x82cb('0x3a')](ejs['render'](Mustache['render'](_0x21203d,_0x1f058c),{'proactiveActions':_0x114a26,'alignment':_0x431c65[_0x82cb('0x110')],'verticalAlignment':_0x431c65['verticalAlignment'],'div_color':_0x431c65[_0x82cb('0xf5')],'text_color':_0x431c65['textColor'],'button_color':_0x431c65[_0x82cb('0x111')],'background_color':_0x431c65[_0x82cb('0x112')]}));})[_0x82cb('0x57')](handleError(_0x2ddad5,null));};exports[_0x82cb('0x113')]=function(_0x256f60,_0x3869f3,_0xd747cf){return db['ChatWebsite'][_0x82cb('0x68')]({'where':{'id':_0x256f60['params']['id']}})['then'](handleEntityNotFound(_0x3869f3,null))['then'](function(_0x2022e7){if(_0x2022e7){return db['sequelize'][_0x82cb('0xd7')](function(_0x1a5e85){return db[_0x82cb('0x114')][_0x82cb('0x34')]({'where':{'ChatWebsiteId':_0x256f60['params']['id']},'transaction':_0x1a5e85})[_0x82cb('0x20')](function(_0xc9ee3a){var _0x145dbf=_[_0x82cb('0x3d')](_0x256f60['body'],function(_0x29d106){_0x29d106['ChatWebsiteId']=_0x256f60[_0x82cb('0x58')]['id'];return _0x29d106;});return db['ChatApplication'][_0x82cb('0x115')](_0x145dbf,{'transaction':_0x1a5e85});});})[_0x82cb('0x20')](function(){return db[_0x82cb('0x114')][_0x82cb('0x116')]({'where':{'ChatWebsiteId':_0x256f60[_0x82cb('0x58')]['id']},'order':'priority'});});}})[_0x82cb('0x20')](respondWithResult(_0x3869f3,null))[_0x82cb('0x57')](handleError(_0x3869f3,null));};exports[_0x82cb('0x117')]=function(_0x474ec5,_0x5803ad,_0x37ef42){var _0x3e4fef={};var _0x1a5aa6={};var _0x562de4;var _0x2ab142;return db['ChatWebsite'][_0x82cb('0x68')]({'where':{'id':_0x474ec5[_0x82cb('0x58')]['id']}})['then'](handleEntityNotFound(_0x5803ad,null))[_0x82cb('0x20')](function(_0x1804ba){if(_0x1804ba){_0x562de4=_0x1804ba;_0x1a5aa6['model']=_[_0x82cb('0x44')](db[_0x82cb('0x114')][_0x82cb('0x5a')]);_0x1a5aa6[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0x474ec5[_0x82cb('0x43')]);_0x1a5aa6[_0x82cb('0x45')]=_[_0x82cb('0x46')](_0x1a5aa6['model'],_0x1a5aa6['query']);_0x3e4fef[_0x82cb('0x48')]=_['intersection'](_0x1a5aa6[_0x82cb('0x42')],qs[_0x82cb('0x47')](_0x474ec5[_0x82cb('0x43')][_0x82cb('0x47')]));_0x3e4fef[_0x82cb('0x48')]=_0x3e4fef['attributes'][_0x82cb('0x49')]?_0x3e4fef[_0x82cb('0x48')]:_0x1a5aa6['model'];_0x3e4fef[_0x82cb('0x4c')]=qs[_0x82cb('0x4d')](_0x474ec5[_0x82cb('0x43')]['sort']);_0x3e4fef[_0x82cb('0x4e')]=qs[_0x82cb('0x45')](_[_0x82cb('0x4f')](_0x474ec5['query'],_0x1a5aa6[_0x82cb('0x45')]));if(_0x474ec5[_0x82cb('0x43')]['filter']){_0x3e4fef['where']=_['merge'](_0x3e4fef[_0x82cb('0x4e')],{'$or':_[_0x82cb('0x3d')](_0x3e4fef[_0x82cb('0x48')],function(_0x55a7cb){var _0x266c2e={};_0x266c2e[_0x55a7cb]={'$like':'%'+_0x474ec5[_0x82cb('0x43')][_0x82cb('0x69')]+'%'};return _0x266c2e;})});}_0x3e4fef=_[_0x82cb('0x50')]({},_0x3e4fef,_0x474ec5[_0x82cb('0x52')]);return _0x562de4[_0x82cb('0x117')](_0x3e4fef);}})['then'](function(_0x535b42){if(_0x535b42){_0x2ab142=_0x535b42[_0x82cb('0x49')];if(!_0x474ec5[_0x82cb('0x43')]['hasOwnProperty']('nolimit')){_0x3e4fef[_0x82cb('0x2e')]=qs[_0x82cb('0x2e')](_0x474ec5[_0x82cb('0x43')][_0x82cb('0x2e')]);_0x3e4fef[_0x82cb('0x2d')]=qs[_0x82cb('0x2d')](_0x474ec5[_0x82cb('0x43')][_0x82cb('0x2d')]);}return _0x562de4[_0x82cb('0x117')](_0x3e4fef);}})[_0x82cb('0x20')](function(_0x5c696e){if(_0x5c696e){return _0x5c696e?{'count':_0x2ab142,'rows':_0x5c696e}:null;}})['then'](respondWithResult(_0x5803ad,null))[_0x82cb('0x57')](handleError(_0x5803ad,null));};exports['addProactiveActions']=function(_0x1ac899,_0xf9bf90,_0x174d4a){return db['chatProactiveAction']['find']({'where':{'id':_0x1ac899[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0xf9bf90,null))[_0x82cb('0x20')](function(_0x36c062){if(_0x36c062){return _0x36c062[_0x82cb('0x118')](_0x1ac899[_0x82cb('0x5d')][_0x82cb('0x6d')],_[_0x82cb('0xee')](_0x1ac899['body'],[_0x82cb('0x6d'),'id'])||{});}})['then'](respondWithResult(_0xf9bf90,null))[_0x82cb('0x57')](handleError(_0xf9bf90,null));};exports[_0x82cb('0x119')]=function(_0x9040ac,_0x4efc76,_0x543a3a){var _0x274d57={};var _0x2bf7fd={};var _0x466ccc;var _0x3daa14;return db[_0x82cb('0x3e')][_0x82cb('0x68')]({'where':{'id':_0x9040ac['params']['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x4efc76,null))[_0x82cb('0x20')](function(_0x48db15){if(_0x48db15){_0x466ccc=_0x48db15;_0x2bf7fd[_0x82cb('0x42')]=_[_0x82cb('0x44')](db[_0x82cb('0x11a')][_0x82cb('0x5a')]);_0x2bf7fd[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0x9040ac[_0x82cb('0x43')]);_0x2bf7fd[_0x82cb('0x45')]=_[_0x82cb('0x46')](_0x2bf7fd[_0x82cb('0x42')],_0x2bf7fd[_0x82cb('0x43')]);_0x274d57[_0x82cb('0x48')]=_[_0x82cb('0x46')](_0x2bf7fd[_0x82cb('0x42')],qs['fields'](_0x9040ac[_0x82cb('0x43')]['fields']));_0x274d57['attributes']=_0x274d57[_0x82cb('0x48')][_0x82cb('0x49')]?_0x274d57[_0x82cb('0x48')]:_0x2bf7fd[_0x82cb('0x42')];_0x274d57['order']=qs['sort'](_0x9040ac[_0x82cb('0x43')][_0x82cb('0x4d')]);_0x274d57['where']=qs[_0x82cb('0x45')](_[_0x82cb('0x4f')](_0x9040ac['query'],_0x2bf7fd[_0x82cb('0x45')]));if(_0x9040ac[_0x82cb('0x43')][_0x82cb('0x69')]){_0x274d57['where']=_[_0x82cb('0x50')](_0x274d57[_0x82cb('0x4e')],{'$or':_[_0x82cb('0x3d')](_0x274d57['attributes'],function(_0x41fb0c){var _0x3d4c70={};_0x3d4c70[_0x41fb0c]={'$like':'%'+_0x9040ac[_0x82cb('0x43')][_0x82cb('0x69')]+'%'};return _0x3d4c70;})});}_0x274d57=_[_0x82cb('0x50')]({},_0x274d57,_0x9040ac['options']);return _0x466ccc[_0x82cb('0x119')](_0x274d57);}})[_0x82cb('0x20')](function(_0x1c4dd8){if(_0x1c4dd8){_0x3daa14=_0x1c4dd8[_0x82cb('0x49')];if(!_0x9040ac[_0x82cb('0x43')][_0x82cb('0x4a')](_0x82cb('0x4b'))){_0x274d57[_0x82cb('0x2e')]=qs[_0x82cb('0x2e')](_0x9040ac[_0x82cb('0x43')][_0x82cb('0x2e')]);_0x274d57['offset']=qs[_0x82cb('0x2d')](_0x9040ac[_0x82cb('0x43')][_0x82cb('0x2d')]);}return _0x466ccc['getProactiveActions'](_0x274d57);}})[_0x82cb('0x20')](function(_0x2515bc){if(_0x2515bc){return _0x2515bc?{'count':_0x3daa14,'rows':_0x2515bc}:null;}})['then'](respondWithResult(_0x4efc76,null))[_0x82cb('0x57')](handleError(_0x4efc76,null));};exports[_0x82cb('0x11b')]=function(_0x42087d,_0x1ffd95,_0x3c2dd1){var _0x4b7a8f=_0x42087d['query'][_0x82cb('0x11c')]===_0x82cb('0x11d')?'offlineForm':_0x82cb('0x11e');return db['ChatWebsite'][_0x82cb('0x5b')]({'attributes':['id',_0x4b7a8f],'where':{'id':_0x42087d['params']['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x1ffd95,null))[_0x82cb('0x20')](function(_0x38014c){if(_0x38014c){var _0x5bb502=_0x38014c[_0x4b7a8f];var _0x5155ff=_0x5bb502&&_0x5bb502['items']?_0x5bb502[_0x82cb('0x11f')]:[];_0x1ffd95[_0x82cb('0x3a')]({'fromKey':_['isNil'](_0x5bb502[_0x82cb('0x120')])?undefined:_0x5bb502['fromKey'],'count':_0x5155ff[_0x82cb('0x49')],'rows':_0x5155ff});}})[_0x82cb('0x57')](handleError(_0x1ffd95,null));};exports[_0x82cb('0x121')]=function(_0x36d3e1,_0x5e27d3,_0xe9a3b5){var _0x5364d6={'raw':![],'where':{}};var _0x15dc93={};var _0x35cfff={'count':0x0,'rows':[]};return db[_0x82cb('0x3e')][_0x82cb('0x68')]({'where':{'id':_0x36d3e1[_0x82cb('0x58')]['id']}})['then'](handleEntityNotFound(_0x5e27d3,null))[_0x82cb('0x20')](function(_0x1bc1ce){if(_0x1bc1ce){_0x15dc93['model']=_[_0x82cb('0x44')](db[_0x82cb('0xd0')][_0x82cb('0x5a')]);_0x15dc93[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0x36d3e1[_0x82cb('0x43')]);_0x15dc93[_0x82cb('0x45')]=_[_0x82cb('0x46')](_0x15dc93[_0x82cb('0x42')],_0x15dc93[_0x82cb('0x43')]);_0x5364d6[_0x82cb('0x48')]=_['intersection'](_0x15dc93[_0x82cb('0x42')],qs[_0x82cb('0x47')](_0x36d3e1['query']['fields']));_0x5364d6[_0x82cb('0x48')]=_0x5364d6[_0x82cb('0x48')][_0x82cb('0x49')]?_0x5364d6['attributes']:_0x15dc93[_0x82cb('0x42')];if(!_0x36d3e1[_0x82cb('0x43')]['hasOwnProperty']('nolimit')){_0x5364d6[_0x82cb('0x2e')]=qs[_0x82cb('0x2e')](_0x36d3e1[_0x82cb('0x43')][_0x82cb('0x2e')]);_0x5364d6['offset']=qs[_0x82cb('0x2d')](_0x36d3e1[_0x82cb('0x43')][_0x82cb('0x2d')]);}_0x5364d6['order']=qs[_0x82cb('0x4d')](_0x36d3e1[_0x82cb('0x43')][_0x82cb('0x4d')]);_0x5364d6[_0x82cb('0x4e')]=qs[_0x82cb('0x45')](_[_0x82cb('0x4f')](_0x36d3e1[_0x82cb('0x43')],_0x15dc93[_0x82cb('0x45')]));_0x5364d6[_0x82cb('0x4e')][_0x82cb('0x66')]=_0x1bc1ce['id'];if(_0x36d3e1[_0x82cb('0x43')][_0x82cb('0x69')]){_0x5364d6['where']=_[_0x82cb('0x50')](_0x5364d6[_0x82cb('0x4e')],{'$or':_[_0x82cb('0x3d')](_0x5364d6[_0x82cb('0x48')],function(_0x423359){var _0x1595d1={};_0x1595d1[_0x423359]={'$like':'%'+_0x36d3e1[_0x82cb('0x43')]['filter']+'%'};return _0x1595d1;})});}_0x5364d6=_[_0x82cb('0x50')]({},_0x5364d6,_0x36d3e1[_0x82cb('0x52')]);return db['ChatOfflineMessage'][_0x82cb('0x30')]({'where':_0x5364d6[_0x82cb('0x4e')]})[_0x82cb('0x20')](function(_0x3600c3){_0x35cfff['count']=_0x3600c3;if(_0x36d3e1[_0x82cb('0x43')]['includeAll']){_0x5364d6[_0x82cb('0x54')]=[{'all':!![]}];}else{_0x5364d6['include']=[{'model':db[_0x82cb('0xa3')],'as':_0x82cb('0xf0'),'required':![]},{'model':db[_0x82cb('0x122')],'as':_0x82cb('0x123'),'required':![]}];}return db[_0x82cb('0xd0')][_0x82cb('0x55')](_0x5364d6);})['then'](function(_0x4780bd){_0x35cfff[_0x82cb('0x56')]=_0x4780bd;return _0x35cfff;});}})['then'](respondWithFilteredResult(_0x5e27d3,_0x5364d6))['catch'](handleError(_0x5e27d3,null));};exports[_0x82cb('0x124')]=function(_0x58bf08,_0x5bc7d2,_0x38f827){return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0x58bf08[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x5bc7d2,null))['then'](function(_0x5d5c8f){if(_0x5d5c8f){return _0x5d5c8f['addAgents'](_0x58bf08[_0x82cb('0x5d')]['ids'],_[_0x82cb('0xee')](_0x58bf08[_0x82cb('0x5d')],['ids','id'])||{})[_0x82cb('0xcc')](function(_0xbbf0b3){for(var _0x500016=0x0;_0x500016<_0x58bf08[_0x82cb('0x5d')][_0x82cb('0x6d')][_0x82cb('0x49')];_0x500016+=0x1){socket[_0x82cb('0x125')]('userChatWebsite:save',{'UserId':Number(_0x58bf08['body'][_0x82cb('0x6d')][_0x500016]),'ChatWebsiteId':Number(_0x58bf08[_0x82cb('0x58')]['id'])});}return _0xbbf0b3;});}})['then'](respondWithResult(_0x5bc7d2,null))[_0x82cb('0x57')](handleError(_0x5bc7d2,null));};exports[_0x82cb('0x126')]=function(_0x2cde93,_0x304091,_0x39abfe){return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0x2cde93[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x304091,null))['then'](function(_0x18bf68){if(_0x18bf68){return _0x18bf68[_0x82cb('0x126')](_0x2cde93[_0x82cb('0x43')][_0x82cb('0x6d')])['then'](function(){if(_[_0x82cb('0x127')](_0x2cde93['query'][_0x82cb('0x6d')])){for(var _0x211360=0x0;_0x211360<_0x2cde93[_0x82cb('0x43')][_0x82cb('0x6d')][_0x82cb('0x49')];_0x211360+=0x1){socket['emit'](_0x82cb('0x128'),{'UserId':Number(_0x2cde93['query'][_0x82cb('0x6d')][_0x211360]),'ChatWebsiteId':Number(_0x2cde93[_0x82cb('0x58')]['id'])});}}else{socket['emit']('userChatWebsite:remove',{'UserId':Number(_0x2cde93[_0x82cb('0x43')][_0x82cb('0x6d')]),'ChatWebsiteId':Number(_0x2cde93['params']['id'])});}});}})[_0x82cb('0x20')](respondWithStatusCode(_0x304091,null))[_0x82cb('0x57')](handleError(_0x304091,null));};exports[_0x82cb('0x129')]=function(_0x1fed71,_0x4e5ddc,_0x3f4b7a){var _0x28f2b9={};var _0x3b9195={};var _0x32a14;var _0x582f28;return db[_0x82cb('0x3e')][_0x82cb('0x68')]({'where':{'id':_0x1fed71[_0x82cb('0x58')]['id']}})['then'](handleEntityNotFound(_0x4e5ddc,null))['then'](function(_0x4fed7d){if(_0x4fed7d){_0x32a14=_0x4fed7d;_0x3b9195[_0x82cb('0x42')]=_[_0x82cb('0x44')](db[_0x82cb('0xbd')][_0x82cb('0x5a')]);_0x3b9195[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0x1fed71['query']);_0x3b9195['filters']=_[_0x82cb('0x46')](_0x3b9195[_0x82cb('0x42')],_0x3b9195[_0x82cb('0x43')]);_0x28f2b9[_0x82cb('0x48')]=_[_0x82cb('0x46')](_0x3b9195[_0x82cb('0x42')],qs[_0x82cb('0x47')](_0x1fed71[_0x82cb('0x43')]['fields']));_0x28f2b9[_0x82cb('0x48')]=_0x28f2b9[_0x82cb('0x48')][_0x82cb('0x49')]?_0x28f2b9[_0x82cb('0x48')]:_0x3b9195[_0x82cb('0x42')];_0x28f2b9[_0x82cb('0x4c')]=qs[_0x82cb('0x4d')](_0x1fed71['query'][_0x82cb('0x4d')]);_0x28f2b9['where']=qs[_0x82cb('0x45')](_[_0x82cb('0x4f')](_0x1fed71['query'],_0x3b9195[_0x82cb('0x45')]));if(_0x1fed71[_0x82cb('0x43')]['filter']){_0x28f2b9['where']=_[_0x82cb('0x50')](_0x28f2b9[_0x82cb('0x4e')],{'$or':_[_0x82cb('0x3d')](_0x28f2b9[_0x82cb('0x48')],function(_0x360602){var _0x86e04c={};_0x86e04c[_0x360602]={'$like':'%'+_0x1fed71['query'][_0x82cb('0x69')]+'%'};return _0x86e04c;})});}_0x28f2b9=_[_0x82cb('0x50')]({},_0x28f2b9,_0x1fed71['options']);return _0x32a14[_0x82cb('0x129')](_0x28f2b9);}})[_0x82cb('0x20')](function(_0x2bd4ab){if(_0x2bd4ab){_0x582f28=_0x2bd4ab[_0x82cb('0x49')];if(!_0x1fed71[_0x82cb('0x43')][_0x82cb('0x4a')](_0x82cb('0x4b'))){_0x28f2b9['limit']=qs[_0x82cb('0x2e')](_0x1fed71[_0x82cb('0x43')][_0x82cb('0x2e')]);_0x28f2b9[_0x82cb('0x2d')]=qs[_0x82cb('0x2d')](_0x1fed71[_0x82cb('0x43')][_0x82cb('0x2d')]);}return _0x32a14[_0x82cb('0x129')](_0x28f2b9);}})[_0x82cb('0x20')](function(_0x15ca93){if(_0x15ca93){return _0x15ca93?{'count':_0x582f28,'rows':_0x15ca93}:null;}})[_0x82cb('0x20')](respondWithResult(_0x4e5ddc,null))[_0x82cb('0x57')](handleError(_0x4e5ddc,null));};
\ No newline at end of file
+var _0x16d4=['format','version','unknown','device','vendor','threadId','ChatInteraction','ContactId','interaction','messageId','created','autoclose','push','unmanaged','ChatMessage','AttachmentId','UserId','User','unshift','agent','*,*,*,*','forcedOwnership','startRouting','Start','EventManager','no\x20available\x20attributes','send','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','spread','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','toPairs','ChatOfflineMessage','originalname','mimetype','server','files','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','MailServerOut','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','MailAccountId','subjectOffline','toPairsIn','mapValues','Chat','NotifyMailAccount','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','Owner','internal','Tags','color','tag','getSnippet','timezone','iftime\x20%s','interval','indexOf','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','Interval','Intervals','getProactiveActions','getLicense','virtual','chatLicenseExceeded','all','some','server/files/chat/iframe.ejs','remote','connection','remoteAddress','render','alignment','verticalAlignment','textColor','backgroundColor','addApplications','bulkCreate','findAndCountAll','getApplications','addProactiveActions','getFields','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','emit','userChatWebsite:save','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','./chatWebsite.socket','jayson/promise','client','http','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','ChatWebsites','stack','name','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','ChatWebsite','includeAll','include','rows','params','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','keys','findAll','removeDispositions','ids','getAnswers','CannedAnswer','sitepic','file','agentAvatar','customerAvatar','filename','addSystemAvatar','systemAvatar','root','custom','isNil','existsSync','server/files/images/logos/','join','download','getAvatar','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','notify','user-agent-parser','setUA','user-agent','chat','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','from','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','Contacts','ChatApplication','Applications','List','account','list','applications','priority','asc','contact','customerIp','headers','cf-connecting-ip','first','x-forwarded-for','firstName','lastName','x-real-port','referer','browser'];(function(_0x1e10b5,_0x150dc7){var _0x5550f5=function(_0x41fc72){while(--_0x41fc72){_0x1e10b5['push'](_0x1e10b5['shift']());}};_0x5550f5(++_0x150dc7);}(_0x16d4,0x7d));var _0x416d=function(_0x3dba18,_0x57020d){_0x3dba18=_0x3dba18-0x0;var _0x30dfc1=_0x16d4[_0x3dba18];return _0x30dfc1;};'use strict';var emlformat=require(_0x416d('0x0'));var rimraf=require(_0x416d('0x1'));var zipdir=require(_0x416d('0x2'));var jsonpatch=require(_0x416d('0x3'));var rp=require(_0x416d('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x416d('0x5'));var util=require('util');var path=require(_0x416d('0x6'));var sox=require(_0x416d('0x7'));var csv=require(_0x416d('0x8'));var ejs=require(_0x416d('0x9'));var fs=require('fs');var fs_extra=require(_0x416d('0xa'));var _=require(_0x416d('0xb'));var squel=require(_0x416d('0xc'));var crypto=require(_0x416d('0xd'));var jsforce=require(_0x416d('0xe'));var deskjs=require(_0x416d('0xf'));var toCsv=require(_0x416d('0x8'));var querystring=require(_0x416d('0x10'));var Papa=require(_0x416d('0x11'));var Redis=require(_0x416d('0x12'));var authService=require(_0x416d('0x13'));var qs=require(_0x416d('0x14'));var as=require(_0x416d('0x15'));var hardwareService=require(_0x416d('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x416d('0x17'));var config=require(_0x416d('0x18'));var licenseUtil=require(_0x416d('0x19'));var db=require(_0x416d('0x1a'))['db'];config['redis']=_[_0x416d('0x1b')](config[_0x416d('0x1c')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x416d('0x1c')]));require(_0x416d('0x1d'))['register'](socket);var jayson=require(_0x416d('0x1e'));var client=jayson[_0x416d('0x1f')][_0x416d('0x20')]({'port':0x232c});var client9002=jayson[_0x416d('0x1f')][_0x416d('0x20')]({'port':0x232a});var client9003=jayson[_0x416d('0x1f')][_0x416d('0x20')]({'port':0x232b});var client9001=jayson['client'][_0x416d('0x20')]({'port':0x2329});function respondWithRpcPromise(_0xc3d38c,_0x368636,_0x3cbedd,_0x44d6ac){return new BPromise(function(_0x5a24de,_0x3be9fe){var _0x548d93=_0x44d6ac||client;return _0x548d93['request'](_0xc3d38c,_0x3cbedd)['then'](function(_0x5bd265){logger[_0x416d('0x21')](_0x416d('0x22'),_0x368636,_0x416d('0x23'));logger['debug'](_0x416d('0x24'),_0x368636,_0x416d('0x23'),JSON[_0x416d('0x25')](_0x5bd265));if(_0x5bd265['error']){if(_0x5bd265[_0x416d('0x26')]['code']===0x1f4){logger[_0x416d('0x26')](_0x416d('0x22'),_0x368636,_0x5bd265[_0x416d('0x26')][_0x416d('0x27')]);return _0x3be9fe(_0x5bd265[_0x416d('0x26')][_0x416d('0x27')]);}logger[_0x416d('0x26')]('ChatWebsite,\x20%s,\x20%s',_0x368636,_0x5bd265[_0x416d('0x26')]['message']);return _0x5a24de(_0x5bd265[_0x416d('0x26')]['message']);}else{logger[_0x416d('0x21')](_0x416d('0x22'),_0x368636,'request\x20sent');_0x5a24de(_0x5bd265[_0x416d('0x28')][_0x416d('0x27')]);}})[_0x416d('0x29')](function(_0x5b8710){logger[_0x416d('0x26')](_0x416d('0x22'),_0x368636,_0x5b8710);_0x3be9fe(_0x5b8710);});});}function respondWithStatusCode(_0x26380b,_0x419493){_0x419493=_0x419493||0xcc;return function(_0x3aef94){if(_0x3aef94){return _0x26380b[_0x416d('0x2a')](_0x419493);}return _0x26380b[_0x416d('0x2b')](_0x419493)[_0x416d('0x2c')]();};}function respondWithResult(_0x1ff67b,_0x3dd3bc){_0x3dd3bc=_0x3dd3bc||0xc8;return function(_0x3a69b7){if(_0x3a69b7){return _0x1ff67b[_0x416d('0x2b')](_0x3dd3bc)[_0x416d('0x2d')](_0x3a69b7);}};}function respondWithFilteredResult(_0x108a96,_0x369bc7){return function(_0x5b895c){if(_0x5b895c){var _0x46faa1=typeof _0x369bc7['offset']===_0x416d('0x2e')&&typeof _0x369bc7[_0x416d('0x2f')]===_0x416d('0x2e');var _0x34f5ad=_0x5b895c[_0x416d('0x30')];var _0xcffeb2=_0x46faa1?0x0:_0x369bc7[_0x416d('0x31')];var _0x515edf=_0x46faa1?_0x5b895c[_0x416d('0x30')]:_0x369bc7['offset']+_0x369bc7[_0x416d('0x2f')];var _0x18ef76;if(_0x515edf>=_0x34f5ad){_0x515edf=_0x34f5ad;_0x18ef76=0xc8;}else{_0x18ef76=0xce;}_0x108a96[_0x416d('0x2b')](_0x18ef76);return _0x108a96[_0x416d('0x32')](_0x416d('0x33'),_0xcffeb2+'-'+_0x515edf+'/'+_0x34f5ad)[_0x416d('0x2d')](_0x5b895c);}return null;};}function patchUpdates(_0x6bc23f){return function(_0x2f3d7a){try{jsonpatch[_0x416d('0x34')](_0x2f3d7a,_0x6bc23f,!![]);}catch(_0x15c6ea){return BPromise[_0x416d('0x35')](_0x15c6ea);}return _0x2f3d7a[_0x416d('0x36')]();};}function saveUpdates(_0x1560d7,_0x139449){return function(_0x41f228){if(_0x41f228){return _0x41f228[_0x416d('0x37')](_0x1560d7)[_0x416d('0x38')](function(_0x44489f){return _0x44489f;});}return null;};}function removeEntity(_0x47d25a,_0x45aaa5){return function(_0xbda536){if(_0xbda536){return _0xbda536[_0x416d('0x39')]()[_0x416d('0x38')](function(){var _0x56eee0=_0xbda536[_0x416d('0x3a')]({'plain':!![]});var _0x24aadf=_0x416d('0x3b');return db['UserProfileResource']['destroy']({'where':{'type':_0x24aadf,'resourceId':_0x56eee0['id']}})['then'](function(){return _0xbda536;});})[_0x416d('0x38')](function(){_0x47d25a[_0x416d('0x2b')](0xcc)[_0x416d('0x2c')]();});}};}function handleEntityNotFound(_0x12f5c8,_0x5e98a2){return function(_0x565bea){if(!_0x565bea){_0x12f5c8[_0x416d('0x2a')](0x194);}return _0x565bea;};}function handleError(_0x23af84,_0x51945f){_0x51945f=_0x51945f||0x1f4;return function(_0x44b9cd){logger[_0x416d('0x26')](_0x44b9cd[_0x416d('0x3c')]);if(_0x44b9cd[_0x416d('0x3d')]){delete _0x44b9cd[_0x416d('0x3d')];}_0x23af84[_0x416d('0x2b')](_0x51945f)['send'](_0x44b9cd);};}exports[_0x416d('0x3e')]=function(_0x410571,_0x1d324a){var _0x2bf4d9={'include':[{'model':db[_0x416d('0x3f')],'as':_0x416d('0x40')}]},_0x1e4df3={},_0x5c2faf={'count':0x0,'rows':[]};var _0x3a6c2e=_[_0x416d('0x41')](db['ChatWebsite'][_0x416d('0x42')],function(_0x404fbc){return{'name':_0x404fbc[_0x416d('0x43')],'type':_0x404fbc[_0x416d('0x44')][_0x416d('0x45')]};});_0x1e4df3[_0x416d('0x46')]=_['map'](_0x3a6c2e,'name');_0x1e4df3[_0x416d('0x47')]=_['keys'](_0x410571[_0x416d('0x47')]);_0x1e4df3['filters']=_[_0x416d('0x48')](_0x1e4df3[_0x416d('0x46')],_0x1e4df3[_0x416d('0x47')]);_0x2bf4d9[_0x416d('0x49')]=_[_0x416d('0x48')](_0x1e4df3[_0x416d('0x46')],qs[_0x416d('0x4a')](_0x410571['query'][_0x416d('0x4a')]));_0x2bf4d9[_0x416d('0x49')]=_0x2bf4d9[_0x416d('0x49')]['length']?_0x2bf4d9[_0x416d('0x49')]:_0x1e4df3['model'];if(!_0x410571[_0x416d('0x47')][_0x416d('0x4b')](_0x416d('0x4c'))){_0x2bf4d9[_0x416d('0x2f')]=qs[_0x416d('0x2f')](_0x410571[_0x416d('0x47')][_0x416d('0x2f')]);_0x2bf4d9['offset']=qs['offset'](_0x410571[_0x416d('0x47')][_0x416d('0x31')]);}_0x2bf4d9[_0x416d('0x4d')]=qs['sort'](_0x410571[_0x416d('0x47')][_0x416d('0x4e')]);_0x2bf4d9[_0x416d('0x4f')]=qs[_0x416d('0x50')](_[_0x416d('0x51')](_0x410571['query'],_0x1e4df3[_0x416d('0x50')]),_0x3a6c2e);if(_0x410571['query'][_0x416d('0x52')]){_0x2bf4d9['where']=_['merge'](_0x2bf4d9[_0x416d('0x4f')],{'$or':_[_0x416d('0x41')](_0x3a6c2e,function(_0x25a438){if(_0x25a438[_0x416d('0x44')]!=='VIRTUAL'){var _0x52e2df={};_0x52e2df[_0x25a438[_0x416d('0x3d')]]={'$like':'%'+_0x410571['query'][_0x416d('0x52')]+'%'};return _0x52e2df;}})});}_0x2bf4d9=_[_0x416d('0x53')]({},_0x2bf4d9,_0x410571[_0x416d('0x54')]);var _0x2d9e56={'where':_0x2bf4d9[_0x416d('0x4f')]};return db[_0x416d('0x55')][_0x416d('0x30')](_0x2d9e56)[_0x416d('0x38')](function(_0x458c19){_0x5c2faf[_0x416d('0x30')]=_0x458c19;if(_0x410571[_0x416d('0x47')][_0x416d('0x56')]){_0x2bf4d9[_0x416d('0x57')]=[{'all':!![]}];}return db[_0x416d('0x55')]['findAll'](_0x2bf4d9);})[_0x416d('0x38')](function(_0x4ec3da){_0x5c2faf[_0x416d('0x58')]=_0x4ec3da;return _0x5c2faf;})[_0x416d('0x38')](respondWithFilteredResult(_0x1d324a,_0x2bf4d9))[_0x416d('0x29')](handleError(_0x1d324a,null));};exports['show']=function(_0x4e9f61,_0x5840ee){var _0x39a2ad={'raw':![],'where':{'id':_0x4e9f61[_0x416d('0x59')]['id']},'include':[{'model':db[_0x416d('0x3f')],'as':_0x416d('0x40')}]},_0x5d74a1={};_0x5d74a1[_0x416d('0x46')]=_['keys'](db[_0x416d('0x55')]['rawAttributes']);_0x5d74a1[_0x416d('0x47')]=_['keys'](_0x4e9f61['query']);_0x5d74a1[_0x416d('0x50')]=_[_0x416d('0x48')](_0x5d74a1['model'],_0x5d74a1[_0x416d('0x47')]);_0x39a2ad[_0x416d('0x49')]=_[_0x416d('0x48')](_0x5d74a1['model'],qs['fields'](_0x4e9f61['query'][_0x416d('0x4a')]));_0x39a2ad[_0x416d('0x49')]=_0x39a2ad['attributes'][_0x416d('0x5a')]?_0x39a2ad['attributes']:_0x5d74a1[_0x416d('0x46')];if(_0x4e9f61[_0x416d('0x47')]['includeAll']){_0x39a2ad[_0x416d('0x57')]=[{'all':!![]}];}_0x39a2ad=_[_0x416d('0x53')]({},_0x39a2ad,_0x4e9f61[_0x416d('0x54')]);return db[_0x416d('0x55')][_0x416d('0x5b')](_0x39a2ad)[_0x416d('0x38')](handleEntityNotFound(_0x5840ee,null))[_0x416d('0x38')](respondWithResult(_0x5840ee,null))['catch'](handleError(_0x5840ee,null));};exports[_0x416d('0x5c')]=function(_0x5c1239,_0x3b250d){return db[_0x416d('0x55')][_0x416d('0x5c')](_0x5c1239[_0x416d('0x5d')],{})[_0x416d('0x38')](function(_0x254e56){var _0x48a8fc=_0x5c1239['user'][_0x416d('0x3a')]({'plain':!![]});if(!_0x48a8fc)throw new Error(_0x416d('0x5e'));if(_0x48a8fc[_0x416d('0x5f')]===_0x416d('0x60')){var _0x310d5c=_0x254e56[_0x416d('0x3a')]({'plain':!![]});var _0x2aeb19=_0x416d('0x3b');return db['UserProfileSection']['find']({'where':{'name':_0x2aeb19,'userProfileId':_0x48a8fc['userProfileId']},'raw':!![]})[_0x416d('0x38')](function(_0x4eead9){if(_0x4eead9&&_0x4eead9[_0x416d('0x61')]===0x0){return db[_0x416d('0x62')][_0x416d('0x5c')]({'name':_0x310d5c[_0x416d('0x3d')],'resourceId':_0x310d5c['id'],'type':_0x4eead9[_0x416d('0x3d')],'sectionId':_0x4eead9['id']},{})[_0x416d('0x38')](function(){return _0x254e56;});}else{return _0x254e56;}})[_0x416d('0x29')](function(_0x386d33){logger['error'](_0x416d('0x63'),_0x386d33);throw _0x386d33;});}return _0x254e56;})[_0x416d('0x38')](respondWithResult(_0x3b250d,0xc9))[_0x416d('0x29')](handleError(_0x3b250d,null));};exports[_0x416d('0x37')]=function(_0x24115d,_0x176b24){if(_0x24115d['body']['id']){delete _0x24115d[_0x416d('0x5d')]['id'];}return db[_0x416d('0x55')]['find']({'where':{'id':_0x24115d[_0x416d('0x59')]['id']},'include':[{'model':db[_0x416d('0x3f')],'as':_0x416d('0x40')}]})[_0x416d('0x38')](handleEntityNotFound(_0x176b24,null))[_0x416d('0x38')](saveUpdates(_0x24115d['body'],null))[_0x416d('0x38')](respondWithResult(_0x176b24,null))[_0x416d('0x29')](handleError(_0x176b24,null));};exports[_0x416d('0x39')]=function(_0x414ad9,_0x1dad4f){return db[_0x416d('0x55')][_0x416d('0x5b')]({'where':{'id':_0x414ad9[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x1dad4f,null))[_0x416d('0x38')](removeEntity(_0x1dad4f,null))['catch'](handleError(_0x1dad4f,null));};exports[_0x416d('0x64')]=function(_0x15fcc7,_0xfcdef2){return db[_0x416d('0x55')][_0x416d('0x64')]()[_0x416d('0x38')](respondWithResult(_0xfcdef2,null))[_0x416d('0x29')](handleError(_0xfcdef2,null));};exports[_0x416d('0x65')]=function(_0x43284e,_0x14e287,_0x7720){if(_0x43284e['body']['id']){delete _0x43284e[_0x416d('0x5d')]['id'];}return db['ChatWebsite'][_0x416d('0x5b')]({'where':{'id':_0x43284e[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x14e287,null))[_0x416d('0x38')](function(_0x1b0944){if(_0x1b0944){_0x43284e['body'][_0x416d('0x66')]=_0x1b0944['id'];return db[_0x416d('0x67')][_0x416d('0x5c')](_0x43284e[_0x416d('0x5d')]);}})[_0x416d('0x38')](respondWithResult(_0x14e287,null))[_0x416d('0x29')](handleError(_0x14e287,null));};exports[_0x416d('0x68')]=function(_0x141978,_0x19c75c,_0x50cd11){var _0x494feb={'raw':![],'where':{}};var _0x2430b2={};var _0x9b0349={'count':0x0,'rows':[]};return db[_0x416d('0x55')][_0x416d('0x69')]({'where':{'id':_0x141978['params']['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x19c75c,null))[_0x416d('0x38')](function(_0x1c9788){if(_0x1c9788){_0x2430b2['model']=_['keys'](db['Disposition']['rawAttributes']);_0x2430b2[_0x416d('0x47')]=_[_0x416d('0x6a')](_0x141978['query']);_0x2430b2[_0x416d('0x50')]=_[_0x416d('0x48')](_0x2430b2[_0x416d('0x46')],_0x2430b2[_0x416d('0x47')]);_0x494feb[_0x416d('0x49')]=_[_0x416d('0x48')](_0x2430b2[_0x416d('0x46')],qs['fields'](_0x141978[_0x416d('0x47')][_0x416d('0x4a')]));_0x494feb[_0x416d('0x49')]=_0x494feb['attributes'][_0x416d('0x5a')]?_0x494feb[_0x416d('0x49')]:_0x2430b2[_0x416d('0x46')];if(!_0x141978[_0x416d('0x47')][_0x416d('0x4b')](_0x416d('0x4c'))){_0x494feb[_0x416d('0x2f')]=qs['limit'](_0x141978[_0x416d('0x47')][_0x416d('0x2f')]);_0x494feb[_0x416d('0x31')]=qs[_0x416d('0x31')](_0x141978['query']['offset']);}_0x494feb[_0x416d('0x4d')]=qs['sort'](_0x141978[_0x416d('0x47')][_0x416d('0x4e')]);_0x494feb[_0x416d('0x4f')]=qs[_0x416d('0x50')](_[_0x416d('0x51')](_0x141978[_0x416d('0x47')],_0x2430b2[_0x416d('0x50')]));_0x494feb['where'][_0x416d('0x66')]=_0x1c9788['id'];if(_0x141978[_0x416d('0x47')][_0x416d('0x52')]){_0x494feb[_0x416d('0x4f')]=_[_0x416d('0x53')](_0x494feb[_0x416d('0x4f')],{'$or':_[_0x416d('0x41')](_0x494feb['attributes'],function(_0xb5818e){var _0xdcd0f6={};_0xdcd0f6[_0xb5818e]={'$like':'%'+_0x141978[_0x416d('0x47')][_0x416d('0x52')]+'%'};return _0xdcd0f6;})});}_0x494feb=_[_0x416d('0x53')]({},_0x494feb,_0x141978[_0x416d('0x54')]);return db[_0x416d('0x67')][_0x416d('0x30')]({'where':_0x494feb['where']})[_0x416d('0x38')](function(_0x2f51e0){_0x9b0349[_0x416d('0x30')]=_0x2f51e0;if(_0x141978[_0x416d('0x47')][_0x416d('0x56')]){_0x494feb['include']=[{'all':!![]}];}return db['Disposition'][_0x416d('0x6b')](_0x494feb);})[_0x416d('0x38')](function(_0x1f2144){_0x9b0349[_0x416d('0x58')]=_0x1f2144;return _0x9b0349;});}})['then'](respondWithFilteredResult(_0x19c75c,_0x494feb))[_0x416d('0x29')](handleError(_0x19c75c,null));};exports['removeDispositions']=function(_0x1c137e,_0x1f82dd,_0x19d145){return db[_0x416d('0x55')][_0x416d('0x5b')]({'where':{'id':_0x1c137e['params']['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x1f82dd,null))['then'](function(_0x325ce6){if(_0x325ce6){return _0x325ce6[_0x416d('0x6c')](_0x1c137e[_0x416d('0x47')][_0x416d('0x6d')]);}})[_0x416d('0x38')](respondWithStatusCode(_0x1f82dd,null))[_0x416d('0x29')](handleError(_0x1f82dd,null));};exports['addAnswer']=function(_0x1f4179,_0x19991c,_0x32f995){if(_0x1f4179[_0x416d('0x5d')]['id']){delete _0x1f4179['body']['id'];}return db[_0x416d('0x55')][_0x416d('0x5b')]({'where':{'id':_0x1f4179[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x19991c,null))[_0x416d('0x38')](function(_0x485c21){if(_0x485c21){_0x1f4179[_0x416d('0x5d')][_0x416d('0x66')]=_0x485c21['id'];return db['CannedAnswer'][_0x416d('0x5c')](_0x1f4179[_0x416d('0x5d')]);}})[_0x416d('0x38')](respondWithResult(_0x19991c,null))[_0x416d('0x29')](handleError(_0x19991c,null));};exports[_0x416d('0x6e')]=function(_0x4c8b6e,_0x4d1f0b,_0x5d02a9){var _0x2ac0e4={'raw':![],'where':{}};var _0x34c9c9={};var _0x3ebb8c={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x416d('0x69')]({'where':{'id':_0x4c8b6e[_0x416d('0x59')]['id']}})['then'](handleEntityNotFound(_0x4d1f0b,null))[_0x416d('0x38')](function(_0x50f78c){if(_0x50f78c){_0x34c9c9[_0x416d('0x46')]=_['keys'](db['CannedAnswer'][_0x416d('0x42')]);_0x34c9c9[_0x416d('0x47')]=_[_0x416d('0x6a')](_0x4c8b6e[_0x416d('0x47')]);_0x34c9c9[_0x416d('0x50')]=_[_0x416d('0x48')](_0x34c9c9[_0x416d('0x46')],_0x34c9c9[_0x416d('0x47')]);_0x2ac0e4['attributes']=_[_0x416d('0x48')](_0x34c9c9[_0x416d('0x46')],qs[_0x416d('0x4a')](_0x4c8b6e[_0x416d('0x47')]['fields']));_0x2ac0e4[_0x416d('0x49')]=_0x2ac0e4[_0x416d('0x49')][_0x416d('0x5a')]?_0x2ac0e4[_0x416d('0x49')]:_0x34c9c9[_0x416d('0x46')];if(!_0x4c8b6e[_0x416d('0x47')][_0x416d('0x4b')](_0x416d('0x4c'))){_0x2ac0e4[_0x416d('0x2f')]=qs['limit'](_0x4c8b6e[_0x416d('0x47')][_0x416d('0x2f')]);_0x2ac0e4['offset']=qs[_0x416d('0x31')](_0x4c8b6e[_0x416d('0x47')][_0x416d('0x31')]);}_0x2ac0e4[_0x416d('0x4d')]=qs[_0x416d('0x4e')](_0x4c8b6e[_0x416d('0x47')][_0x416d('0x4e')]);_0x2ac0e4[_0x416d('0x4f')]=qs[_0x416d('0x50')](_[_0x416d('0x51')](_0x4c8b6e[_0x416d('0x47')],_0x34c9c9[_0x416d('0x50')]));_0x2ac0e4['where'][_0x416d('0x66')]=_0x50f78c['id'];if(_0x4c8b6e[_0x416d('0x47')][_0x416d('0x52')]){_0x2ac0e4['where']=_['merge'](_0x2ac0e4['where'],{'$or':_[_0x416d('0x41')](_0x2ac0e4[_0x416d('0x49')],function(_0x184932){var _0x369cc3={};_0x369cc3[_0x184932]={'$like':'%'+_0x4c8b6e[_0x416d('0x47')][_0x416d('0x52')]+'%'};return _0x369cc3;})});}_0x2ac0e4=_[_0x416d('0x53')]({},_0x2ac0e4,_0x4c8b6e[_0x416d('0x54')]);return db[_0x416d('0x6f')][_0x416d('0x30')]({'where':_0x2ac0e4[_0x416d('0x4f')]})['then'](function(_0x3eab69){_0x3ebb8c[_0x416d('0x30')]=_0x3eab69;if(_0x4c8b6e[_0x416d('0x47')][_0x416d('0x56')]){_0x2ac0e4[_0x416d('0x57')]=[{'all':!![]}];}return db[_0x416d('0x6f')][_0x416d('0x6b')](_0x2ac0e4);})[_0x416d('0x38')](function(_0x51af71){_0x3ebb8c[_0x416d('0x58')]=_0x51af71;return _0x3ebb8c;});}})[_0x416d('0x38')](respondWithFilteredResult(_0x4d1f0b,_0x2ac0e4))[_0x416d('0x29')](handleError(_0x4d1f0b,null));};exports['removeAnswers']=function(_0x3e0939,_0x5d0a49,_0xd10b41){return db[_0x416d('0x55')]['find']({'where':{'id':_0x3e0939[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x5d0a49,null))[_0x416d('0x38')](function(_0x540283){if(_0x540283){return _0x540283['removeAnswers'](_0x3e0939[_0x416d('0x47')][_0x416d('0x6d')]);}})[_0x416d('0x38')](respondWithStatusCode(_0x5d0a49,null))[_0x416d('0x29')](handleError(_0x5d0a49,null));};exports['addLogo']=function(_0x288914,_0x40954c,_0x1437a5){_0x288914[_0x416d('0x5d')][_0x416d('0x70')]=_0x288914[_0x416d('0x71')]['filename'];return db[_0x416d('0x55')]['find']({'where':{'id':_0x288914[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x40954c,null))[_0x416d('0x38')](saveUpdates(_0x288914[_0x416d('0x5d')],null))[_0x416d('0x38')](respondWithResult(_0x40954c,null))['catch'](handleError(_0x40954c,null));};exports['addAvatar']=function(_0x31d57b,_0x246c44,_0x247211){_0x31d57b['body'][_0x416d('0x72')]=_0x31d57b[_0x416d('0x71')]['filename'];return db[_0x416d('0x55')][_0x416d('0x5b')]({'where':{'id':_0x31d57b[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x246c44,null))['then'](saveUpdates(_0x31d57b[_0x416d('0x5d')],null))[_0x416d('0x38')](respondWithResult(_0x246c44,null))[_0x416d('0x29')](handleError(_0x246c44,null));};exports['addCustomerAvatar']=function(_0x4fff4e,_0x16fbff,_0xd97252){_0x4fff4e[_0x416d('0x5d')][_0x416d('0x73')]=_0x4fff4e[_0x416d('0x71')][_0x416d('0x74')];return db['ChatWebsite'][_0x416d('0x5b')]({'where':{'id':_0x4fff4e[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x16fbff,null))[_0x416d('0x38')](saveUpdates(_0x4fff4e['body'],null))[_0x416d('0x38')](respondWithResult(_0x16fbff,null))[_0x416d('0x29')](handleError(_0x16fbff,null));};exports[_0x416d('0x75')]=function(_0x5dc3bf,_0x3d503f,_0x2d9eaf){_0x5dc3bf[_0x416d('0x5d')][_0x416d('0x76')]=_0x5dc3bf[_0x416d('0x71')]['filename'];return db[_0x416d('0x55')][_0x416d('0x5b')]({'where':{'id':_0x5dc3bf[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x3d503f,null))[_0x416d('0x38')](saveUpdates(_0x5dc3bf['body'],null))[_0x416d('0x38')](respondWithResult(_0x3d503f,null))[_0x416d('0x29')](handleError(_0x3d503f,null));};exports['getLogo']=function(_0x50f191,_0x2e3458,_0x99f3e5){var _0x15ab45=path['join'](config[_0x416d('0x77')],'server/files/images/logos/default_logo.svg');var _0x3caa3a={'where':{'id':_0x50f191['params']['id']},'attributes':['id',_0x416d('0x70')],'raw':!![]};var _0x382ed4=![];return require(_0x416d('0x19'))['getLicense']()[_0x416d('0x38')](function(_0x3edc10){if(_0x3edc10){_0x382ed4=_0x3edc10[_0x416d('0x78')];}})['then'](function(){return db['ChatWebsite'][_0x416d('0x5b')](_0x3caa3a);})[_0x416d('0x38')](handleEntityNotFound(_0x2e3458,null))['then'](function(_0x4773c4){if(_0x4773c4){if(!_[_0x416d('0x79')](_0x4773c4[_0x416d('0x70')])){if(fs[_0x416d('0x7a')](path['join'](config[_0x416d('0x77')],_0x416d('0x7b'),_0x4773c4[_0x416d('0x70')]))&&_0x382ed4){_0x15ab45=path[_0x416d('0x7c')](config[_0x416d('0x77')],_0x416d('0x7b'),_0x4773c4[_0x416d('0x70')]);}}return _0x2e3458[_0x416d('0x7d')](_0x15ab45);}})['catch'](handleError(_0x2e3458,null));};exports[_0x416d('0x7e')]=function(_0x2f8edc,_0x4a81a4,_0x4e5112){var _0x554aab=path[_0x416d('0x7c')](config[_0x416d('0x77')],_0x416d('0x7f'));var _0x7ad607={'where':{'id':_0x2f8edc['params']['id']},'attributes':['id',_0x416d('0x72')],'raw':!![]};return db[_0x416d('0x55')][_0x416d('0x5b')](_0x7ad607)[_0x416d('0x38')](handleEntityNotFound(_0x4a81a4,null))['then'](function(_0x3c6c75){if(_0x3c6c75){if(!_[_0x416d('0x79')](_0x3c6c75['agentAvatar'])){if(fs[_0x416d('0x7a')](path[_0x416d('0x7c')](config[_0x416d('0x77')],_0x416d('0x80'),_0x3c6c75[_0x416d('0x72')]))){_0x554aab=path[_0x416d('0x7c')](config[_0x416d('0x77')],_0x416d('0x80'),_0x3c6c75['agentAvatar']);}}return _0x4a81a4['download'](_0x554aab);}})['catch'](handleError(_0x4a81a4,null));};exports[_0x416d('0x81')]=function(_0xa13cff,_0xe703d1,_0x979dd1){var _0x4463a6=path[_0x416d('0x7c')](config[_0x416d('0x77')],_0x416d('0x82'));var _0x644048={'where':{'id':_0xa13cff[_0x416d('0x59')]['id']},'attributes':['id',_0x416d('0x73'),_0x416d('0x83')],'raw':!![]};return db[_0x416d('0x55')][_0x416d('0x5b')](_0x644048)[_0x416d('0x38')](handleEntityNotFound(_0xe703d1,null))[_0x416d('0x38')](function(_0x2f8215){if(_0x2f8215){if(!_[_0x416d('0x79')](_0x2f8215['customerAvatar'])){if(fs[_0x416d('0x7a')](path[_0x416d('0x7c')](config[_0x416d('0x77')],_0x416d('0x80'),_0x2f8215['customerAvatar']))&&_0x2f8215[_0x416d('0x83')]){_0x4463a6=path['join'](config['root'],_0x416d('0x80'),_0x2f8215[_0x416d('0x73')]);}}return _0xe703d1['download'](_0x4463a6);}})[_0x416d('0x29')](handleError(_0xe703d1,null));};exports['getSystemAvatar']=function(_0xe8d11,_0x300da8,_0x45e97a){var _0x2bb3c1=path[_0x416d('0x7c')](config[_0x416d('0x77')],'server/files/images/avatars/system_avatar.png');var _0x5c0887={'where':{'id':_0xe8d11[_0x416d('0x59')]['id']},'attributes':['id',_0x416d('0x76')],'raw':!![]};return db[_0x416d('0x55')][_0x416d('0x5b')](_0x5c0887)['then'](handleEntityNotFound(_0x300da8,null))['then'](function(_0x53f0dd){if(_0x53f0dd){if(!_[_0x416d('0x79')](_0x53f0dd[_0x416d('0x76')])){if(fs[_0x416d('0x7a')](path[_0x416d('0x7c')](config[_0x416d('0x77')],'server/files/images/avatars/',_0x53f0dd[_0x416d('0x76')]))){_0x2bb3c1=path['join'](config[_0x416d('0x77')],_0x416d('0x80'),_0x53f0dd[_0x416d('0x76')]);}}return _0x300da8[_0x416d('0x7d')](_0x2bb3c1);}})['catch'](handleError(_0x300da8,null));};exports[_0x416d('0x84')]=function(_0x47a37c,_0x1f0fc1,_0x4f7c38){var _0x1e6a34=require(_0x416d('0x85'));var _0xcdcb28=new _0x1e6a34();var _0x303516=_0xcdcb28[_0x416d('0x86')](_0x47a37c['headers'][_0x416d('0x87')])['getResult']();var _0x5a433b={'body':_0x47a37c['body'],'channel':_0x416d('0x88')};var _0xcf223d=[];var _0x2fced9=[];var _0x44ac52={};var _0x18a450=![];return db[_0x416d('0x89')]['describe']()['then'](function(_0x4743e4){if(!_0x4743e4){throw new db[(_0x416d('0x8a'))][(_0x416d('0x8b'))]('no\x20available\x20attributes');}_0xcf223d=_[_0x416d('0x8c')](_[_0x416d('0x6a')](_0x4743e4),[_0x416d('0x8d'),_0x416d('0x8e')]);_0x2fced9=_[_0x416d('0x8c')](_[_0x416d('0x6a')](_0x4743e4),[_0x416d('0x8d'),'updatedAt',_0x416d('0x8f'),_0x416d('0x90')]);if(_0x47a37c[_0x416d('0x5d')]['id']){delete _0x47a37c[_0x416d('0x5d')]['id'];}if(_[_0x416d('0x79')](_0x47a37c[_0x416d('0x5d')][_0x416d('0x91')])){throw new db[(_0x416d('0x8a'))][(_0x416d('0x8b'))](_0x416d('0x92'));}if(_[_0x416d('0x79')](_0x47a37c['body'][_0x416d('0x5d')])||_0x47a37c[_0x416d('0x5d')][_0x416d('0x5d')]===''){throw new db['Sequelize']['ValidationError'](_0x416d('0x93'));}if(_[_0x416d('0x79')](_0x47a37c['body']['mapKey'])){throw new db[(_0x416d('0x8a'))][(_0x416d('0x8b'))](_0x416d('0x94')+_0x2fced9);}if(!_[_0x416d('0x95')](_0x2fced9,_0x47a37c[_0x416d('0x5d')][_0x416d('0x96')])){throw new db[(_0x416d('0x8a'))][(_0x416d('0x8b'))](_0x416d('0x97')+_0x2fced9);}_0x44ac52[_0x47a37c[_0x416d('0x5d')]['mapKey']]=_0x47a37c['body'][_0x416d('0x91')];})['then'](function(){return db[_0x416d('0x55')][_0x416d('0x5b')]({'where':{'id':_0x47a37c[_0x416d('0x59')]['id']},'include':[{'model':db[_0x416d('0x98')],'as':'List','include':[{'model':db[_0x416d('0x89')],'as':_0x416d('0x99'),'where':_0x44ac52,'limit':0x1,'order':[[_0x416d('0x8e'),'DESC']]}]},{'model':db[_0x416d('0x9a')],'as':_0x416d('0x9b')}]});})[_0x416d('0x38')](handleEntityNotFound(_0x1f0fc1,null))[_0x416d('0x38')](function(_0x1156d6){if(_0x1156d6&&_0x1156d6[_0x416d('0x9c')]){_0x5a433b[_0x416d('0x9d')]=_0x1156d6;_0x5a433b['applications']=_0x1156d6[_0x416d('0x9b')];_0x5a433b[_0x416d('0x9e')]=_0x1156d6[_0x416d('0x9c')];_0x5a433b[_0x416d('0x9f')]=_['orderBy'](_0x5a433b[_0x416d('0x9f')],[_0x416d('0xa0')],[_0x416d('0xa1')]);if(_0x5a433b[_0x416d('0x9d')][_0x416d('0x9b')]){delete _0x5a433b[_0x416d('0x9d')][_0x416d('0x9b')];}if(_0x5a433b[_0x416d('0x9d')][_0x416d('0x9c')]&&_0x5a433b[_0x416d('0x9d')]['List'][_0x416d('0x99')][_0x416d('0x5a')]){return _0x5a433b[_0x416d('0x9d')][_0x416d('0x9c')][_0x416d('0x99')][0x0];}var _0x4954f4=_[_0x416d('0x1b')](_0x47a37c[_0x416d('0x5d')],{'firstName':_0x47a37c[_0x416d('0x5d')][_0x416d('0x91')],'ListId':_0x1156d6[_0x416d('0x90')]});_0x4954f4[_0x47a37c[_0x416d('0x5d')][_0x416d('0x96')]]=_0x47a37c[_0x416d('0x5d')][_0x416d('0x91')];return db[_0x416d('0x89')][_0x416d('0x5c')](_0x4954f4,{'fields':_0xcf223d,'raw':!![]});}})[_0x416d('0x38')](handleEntityNotFound(_0x1f0fc1,null))[_0x416d('0x38')](function(_0x37ade8){_0x5a433b[_0x416d('0xa2')]=_0x37ade8;var _0x5a5a6e=_0x47a37c[_0x416d('0x5d')][_0x416d('0xa3')];if(_0x47a37c[_0x416d('0xa4')]['cf-connecting-ip']){_0x5a5a6e=_0x47a37c[_0x416d('0xa4')][_0x416d('0xa5')];}else if(_0x47a37c[_0x416d('0xa4')]['x-forwarded-for']){_0x5a5a6e=_[_0x416d('0xa6')](_0x47a37c['headers'][_0x416d('0xa7')]['split'](','));}if(_0x37ade8){var _0xd5aabf={'ContactId':_0x37ade8['id'],'ChatWebsiteId':_0x47a37c[_0x416d('0x59')]['id'],'from':(_0x37ade8[_0x416d('0xa8')]||'')+'\x20'+(_0x37ade8[_0x416d('0xa9')]||''),'customerIp':_0x5a5a6e,'customerPort':_0x47a37c[_0x416d('0xa4')]['x-real-port']?_0x47a37c[_0x416d('0xa4')][_0x416d('0xaa')]:null,'referer':_0x47a37c['body'][_0x416d('0xab')],'browserName':_0x303516['browser'][_0x416d('0x3d')]&&_0x303516[_0x416d('0xac')]['version']?util[_0x416d('0xad')]('%s\x20%s',_0x303516[_0x416d('0xac')][_0x416d('0x3d')],_0x303516[_0x416d('0xac')][_0x416d('0xae')]):_0x416d('0xaf'),'browserVersion':_0x303516['browser'][_0x416d('0xae')]||_0x416d('0xaf'),'osName':util['format']('%s\x20%s',_0x303516['os']['name'],_0x303516['os'][_0x416d('0xae')]),'osVersion':_0x303516['os'][_0x416d('0xae')],'deviceModel':_0x303516[_0x416d('0xb0')][_0x416d('0x46')]&&_0x303516['device'][_0x416d('0xb1')]?util[_0x416d('0xad')]('%s\x20%s\x20%s',_0x303516[_0x416d('0xb0')][_0x416d('0x46')],_0x303516[_0x416d('0xb0')][_0x416d('0xb1')],_0x303516['device'][_0x416d('0x44')]):null,'deviceVendor':_0x303516[_0x416d('0xb0')][_0x416d('0xb1')],'deviceType':_0x303516[_0x416d('0xb0')][_0x416d('0x44')],'formData':JSON[_0x416d('0x25')](_0x47a37c[_0x416d('0x5d')])};var _0x4d7867={'ChatWebsiteId':_0x47a37c[_0x416d('0x59')]['id'],'closed':![]};if(_0x47a37c[_0x416d('0x5d')][_0x416d('0xb2')]){_0x4d7867['threadId']=_0x47a37c['body'][_0x416d('0xb2')];return db['ChatInteraction']['find']({'where':_0x4d7867})[_0x416d('0x38')](function(_0x44134a){if(_0x44134a){return[_0x44134a,![]];}_0xd5aabf[_0x416d('0xb2')]=_0x47a37c[_0x416d('0x5d')][_0x416d('0xb2')];_0xd5aabf['externalUrl']=_0x47a37c[_0x416d('0x5d')]['externalUrl'];return db[_0x416d('0xb3')][_0x416d('0x5c')](_0xd5aabf)[_0x416d('0x38')](function(_0x59b881){return[_0x59b881,!![]];});});}_0x4d7867[_0x416d('0xb4')]=_0x37ade8['id'];if(_0x47a37c['body'][_0x416d('0xb5')]&&_0x47a37c[_0x416d('0x5d')]['interaction']['id']){_0x4d7867['id']=_0x47a37c[_0x416d('0x5d')][_0x416d('0xb5')]['id'];return db[_0x416d('0xb3')][_0x416d('0x5b')]({'where':_0x4d7867})[_0x416d('0x38')](function(_0x139125){if(_0x139125){return[_0x139125,![]];}return db[_0x416d('0xb3')]['create'](_0xd5aabf)[_0x416d('0x38')](function(_0x16c9ea){return[_0x16c9ea,!![]];});});}return db[_0x416d('0xb3')]['create'](_0xd5aabf)['then'](function(_0x302c11){return[_0x302c11,!![]];});}})['spread'](function(_0x21f3ab,_0x4fd946){if(_0x21f3ab){_0x18a450=_0x4fd946;if(!_0x4fd946){var _0x36244f={'from':(_0x5a433b[_0x416d('0xa2')][_0x416d('0xa8')]||'')+'\x20'+(_0x5a433b[_0x416d('0xa2')][_0x416d('0xa9')]||'')};if(_0x47a37c[_0x416d('0x5d')][_0x416d('0xb2')]&&_0x47a37c['body'][_0x416d('0xb6')]&&_0x47a37c['body'][_0x416d('0xb2')]!=_0x47a37c[_0x416d('0x5d')][_0x416d('0xb6')]){_0x36244f['threadId']=_0x47a37c[_0x416d('0x5d')][_0x416d('0xb6')];}return _0x21f3ab[_0x416d('0x37')](_0x36244f);}else{return _0x21f3ab;}}})[_0x416d('0x38')](function(_0x386a9c){_0x5a433b['interaction']=_0x386a9c[_0x416d('0x3a')]({'plain':!![]});_0x5a433b[_0x416d('0xb5')][_0x416d('0xb7')]=_0x18a450;if(_0x5a433b[_0x416d('0xb5')]['created']){if(_0x5a433b[_0x416d('0x9d')][_0x416d('0xb8')]){_0x5a433b[_0x416d('0x9f')][_0x416d('0xb9')]({'id':0x0,'priority':_0x5a433b[_0x416d('0x9f')][_0x416d('0x5a')]+0x1,'app':'close','appdata':_0x416d('0xba'),'interval':'*,*,*,*'});}}return db[_0x416d('0xbb')][_0x416d('0x5c')]({'body':_0x47a37c[_0x416d('0x5d')][_0x416d('0x5d')],'ChatWebsiteId':_0x47a37c[_0x416d('0x59')]['id'],'ChatInteractionId':_0x386a9c['id'],'direction':'in','ContactId':_0x5a433b[_0x416d('0xa2')]['id'],'AttachmentId':_0x47a37c[_0x416d('0x5d')][_0x416d('0xbc')]});})['then'](function(_0x32d49e){_0x5a433b[_0x416d('0x27')]=_0x32d49e;if(_0x5a433b[_0x416d('0xb5')][_0x416d('0xbd')]){return db[_0x416d('0xbe')][_0x416d('0x5b')]({'attributes':['id',_0x416d('0x3d')],'where':{'id':_0x5a433b[_0x416d('0xb5')][_0x416d('0xbd')]}})[_0x416d('0x38')](function(_0x5466da){if(_0x5466da){_0x5a433b['applications'][_0x416d('0xbf')]({'id':0x0,'priority':0x0,'app':_0x416d('0xc0'),'appdata':_0x5466da['name']+','+(_0x5a433b[_0x416d('0x9d')]['waitForTheAssignedAgent']||0xa),'interval':_0x416d('0xc1')});_0x5a433b[_0x416d('0xc2')]=!![];}return respondWithRpcPromise('Start',_0x416d('0xc3'),_0x5a433b);});}return respondWithRpcPromise(_0x416d('0xc4'),'startRouting',_0x5a433b);})[_0x416d('0x38')](function(_0x3c4a49){respondWithRpcPromise(_0x416d('0xc5'),_0x416d('0xc5'),{'event':'notify','message':_0x3c4a49},client9002);return _0x3c4a49;})[_0x416d('0x38')](respondWithResult(_0x1f0fc1,null))['catch'](handleError(_0x1f0fc1,null));};exports['offline']=function(_0x2b9048,_0x5a4b29,_0x496f10){var _0xc10aed,_0x55404a,_0x183191;var _0xdc52ca=[];var _0xaf6fa7=[];var _0xd5dd21={};var _0x5e54d2=_0x2b9048['files']||[];var _0x518ed2=[];var _0x3a3ec1;return db['CmContact'][_0x416d('0x64')]()['then'](function(_0x282db1){if(!_0x282db1){throw new db['Sequelize'][(_0x416d('0x8b'))](_0x416d('0xc6'));}_0xaf6fa7=_[_0x416d('0x8c')](_['keys'](_0x282db1),[_0x416d('0x8d'),_0x416d('0x8e')]);_0xdc52ca=_[_0x416d('0x8c')](_[_0x416d('0x6a')](_0x282db1),['createdAt',_0x416d('0x8e'),_0x416d('0x8f'),_0x416d('0x90')]);if(_0x2b9048[_0x416d('0x5d')]['id']){delete _0x2b9048[_0x416d('0x5d')]['id'];}if(_[_0x416d('0x79')](_0x2b9048['body']['from'])){throw _0x5a4b29[_0x416d('0x2b')](0x1f4)[_0x416d('0xc7')](new db['Sequelize'][(_0x416d('0x8b'))](_0x416d('0x92')));}if(_[_0x416d('0x79')](_0x2b9048[_0x416d('0x5d')][_0x416d('0x5d')])||_0x2b9048[_0x416d('0x5d')][_0x416d('0x5d')]===''){throw _0x5a4b29[_0x416d('0x2b')](0x1f4)[_0x416d('0xc7')](new db[(_0x416d('0x8a'))]['ValidationError'](_0x416d('0x93')));}if(_[_0x416d('0x79')](_0x2b9048[_0x416d('0x5d')][_0x416d('0xc8')])){throw _0x5a4b29['status'](0x1f4)[_0x416d('0xc7')](new db[(_0x416d('0x8a'))]['ValidationError'](_0x416d('0xc9')+_0xdc52ca));}if(!_['includes'](_0xdc52ca,_0x2b9048[_0x416d('0x5d')][_0x416d('0xc8')])){throw _0x5a4b29[_0x416d('0x2b')](0x1f4)[_0x416d('0xc7')](new db[(_0x416d('0x8a'))][(_0x416d('0x8b'))](_0x416d('0xca')+_0xdc52ca));}_0xd5dd21[_0x2b9048['body'][_0x416d('0xc8')]]=_0x2b9048['body']['from'];})[_0x416d('0x38')](function(){return db[_0x416d('0x55')][_0x416d('0x5b')]({'where':{'id':_0x2b9048['params']['id']},'include':[{'model':db['CmList'],'as':_0x416d('0x9c')},{'model':db[_0x416d('0xcb')],'as':_0x416d('0xcb')}]});})['then'](handleEntityNotFound(_0x5a4b29,null))[_0x416d('0x38')](function(_0x41c3b0){if(_0x41c3b0&&_0x41c3b0[_0x416d('0x9c')]){_0x55404a=_0x41c3b0;var _0x4abe81=_[_0x416d('0x1b')](_0x2b9048[_0x416d('0x5d')],{'firstName':_0x2b9048[_0x416d('0x5d')][_0x416d('0x91')],'phone':_0x2b9048[_0x416d('0x5d')]['from'],'ListId':_0x41c3b0[_0x416d('0x90')]});_0x4abe81[_0x2b9048['body']['mapKeyOffline']]=_0x2b9048[_0x416d('0x5d')][_0x416d('0x91')];return db[_0x416d('0x89')]['findOrCreate']({'where':_0xd5dd21,'defaults':_0x4abe81});}})[_0x416d('0xcc')](function(_0x51ca26){if(_0x51ca26){_0x183191=_0x51ca26;var _0x11ffde=fs[_0x416d('0xcd')](path[_0x416d('0x7c')](config['root'],_0x416d('0xce')),_0x416d('0xcf'));var _0x405373=ejs['render'](_0x11ffde,{'body':_[_0x416d('0xd0')](_0x2b9048['body']['body']),'bodyTitle':_0x55404a['offlineMessageBody']});return db[_0x416d('0xd1')][_0x416d('0x5c')]({'body':_0x405373,'ContactId':_0x51ca26['id'],'ChatWebsiteId':_0x55404a['id']});}})[_0x416d('0x38')](function(_0x3f25cd){_0x3a3ec1=_0x3f25cd;if(_0x5e54d2[_0x416d('0x5a')]){var _0x249dfa=_0x5e54d2[_0x416d('0x41')](function(_0x20d8e0){return{'name':_0x20d8e0[_0x416d('0xd2')],'basename':_0x20d8e0['filename'],'type':_0x20d8e0[_0x416d('0xd3')],'ChatOfflineMessageId':_0x3f25cd['id']};});_0x518ed2=_0x249dfa[_0x416d('0x41')](_0x3f793f=>{var _0x4ed471={'filename':_0x3f793f[_0x416d('0x3d')],'path':path['join'](config[_0x416d('0x77')],_0x416d('0xd4'),_0x416d('0xd5'),_0x416d('0xd6'),_0x416d('0xd7'),_0x3f793f[_0x416d('0xd8')])};return _0x4ed471;});if(!_0x55404a[_0x416d('0xd9')]){return db[_0x416d('0xda')][_0x416d('0xdb')](function(_0x44f755){return db[_0x416d('0xdc')]['bulkCreate'](_0x249dfa,{'transaction':_0x44f755});});}}})['then'](function(){if(_0x3a3ec1){_0xc10aed=_0x3a3ec1;return db[_0x416d('0xcb')][_0x416d('0x69')]({'where':{'active':!![]},'include':[{'model':db[_0x416d('0xdd')],'as':_0x416d('0xde'),'raw':!![]}]});}})[_0x416d('0x38')](function(_0x4d2c50){if(_0x4d2c50&&_0x4d2c50[_0x416d('0xde')]&&_0x55404a[_0x416d('0xdf')]&&_0x55404a[_0x416d('0xe0')]){var _0x1718cd={'tls':{'rejectUnauthorized':![]}};if(_0x4d2c50[_0x416d('0xde')][_0x416d('0xe1')]){_0x1718cd[_0x416d('0xe1')]=_0x4d2c50[_0x416d('0xde')][_0x416d('0xe1')];}else{_0x1718cd['host']=_0x4d2c50[_0x416d('0xde')][_0x416d('0xe2')];_0x1718cd['port']=_0x4d2c50['Smtp'][_0x416d('0xe3')];_0x1718cd[_0x416d('0xe4')]=_0x4d2c50[_0x416d('0xde')][_0x416d('0xe4')];}if(_0x4d2c50[_0x416d('0xde')][_0x416d('0xe5')]){_0x1718cd[_0x416d('0xe6')]={'user':_0x4d2c50[_0x416d('0xde')][_0x416d('0x60')],'pass':_0x4d2c50[_0x416d('0xde')][_0x416d('0xe7')]};}return respondWithRpcPromise(_0x416d('0xe8'),_0x416d('0xe9'),{'account':_0x1718cd,'message':{'from':util[_0x416d('0xad')](_0x416d('0xea'),_0x4d2c50[_0x416d('0x3d')],_0x4d2c50[_0x416d('0xeb')]||_0x4d2c50[_0x416d('0xde')]['user']),'to':_0x55404a[_0x416d('0xe0')],'subject':_0x55404a[_0x416d('0xec')],'html':_0xc10aed[_0x416d('0x5d')],'attachments':_0x518ed2}},client9003)[_0x416d('0x38')](function(){return _0xc10aed;})[_0x416d('0x29')](function(_0x16e188){console['error'](_0x16e188);});}})[_0x416d('0x38')](function(){if(_0x55404a&&_0x55404a[_0x416d('0xd9')]&&_0x55404a[_0x416d('0xed')]){var _0x1060f0=[];if(_0x5e54d2[_0x416d('0x5a')]){_0x1060f0=_0x5e54d2['map'](function(_0x2e9f65){return{'name':_0x2e9f65[_0x416d('0xd2')],'basename':_0x2e9f65[_0x416d('0x74')],'type':_0x2e9f65[_0x416d('0xd3')],'ChatOfflineMessageId':_0x3a3ec1['id']};});}var _0x179e3b;if(!_[_0x416d('0x79')](_0x55404a[_0x416d('0xee')])){var _0x5798f5=_[_0x416d('0x41')](_0x2b9048[_0x416d('0x5d')],function(_0xf298de){return _0xf298de;});var _0xb3275f=_[_0x416d('0xef')](_0x5798f5)[0x0];var _0x3dc6fa=_[_0x416d('0xf0')](_0xb3275f,function(_0xcf18a4){return _0xcf18a4;});_0x179e3b=_0x3dc6fa[0x1][_0x55404a[_0x416d('0xee')]];}var _0x48959c={'from':_0x183191[_0x416d('0xeb')],'firstName':_0x183191[_0x416d('0xa8')],'lastName':_0x183191[_0x416d('0xa9')],'mapKey':_0x416d('0xeb'),'message':{'from':_0x183191['email'],'to':_0x55404a[_0x416d('0xcb')][_0x416d('0xeb')],'cc':'','subject':_[_0x416d('0x79')](_0x179e3b)?_0x55404a[_0x416d('0xec')]:_0x179e3b,'messageId':'','sentAt':new Date(),'attach':_0x1060f0[_0x416d('0x5a')],'attachments':_0x1060f0,'originChannel':_0x416d('0xf1'),'ChatWebsiteId':_0x55404a['id'],'ChatOfflineMessageId':_0xc10aed['id'],'originTo':_0x55404a['MailAccount']['email']},'body':_0xc10aed[_0x416d('0x5d')]};var _0x36e9de={'account':{'id':_0x55404a[_0x416d('0xed')]},'body':_0x48959c,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x416d('0xf2'),'notifyMail',_0x36e9de,client9001)[_0x416d('0x38')](function(){return _0xc10aed;})[_0x416d('0x29')](function(_0x1264b1){console['error'](_0x1264b1);});}return;})[_0x416d('0x38')](function(){if(_0xc10aed){return _0xc10aed;}})['then'](respondWithResult(_0x5a4b29,null))[_0x416d('0x29')](function(_0x2c9c61){console[_0x416d('0x26')](_0x416d('0x29'),_0x2c9c61);for(var _0x22b94b of _0x5e54d2){var _0x45c19e=path[_0x416d('0x7c')](config[_0x416d('0x77')],_0x416d('0xd4'),'files','attachments',_0x416d('0xd7'),_0x22b94b[_0x416d('0x74')]);fs_extra['remove'](_0x45c19e)[_0x416d('0x29')](function(_0x10de46){console[_0x416d('0x26')](_0x416d('0xf3'),_0x45c19e,_0x10de46);});}});};exports[_0x416d('0xf4')]=function(_0x7892e0,_0x3fde16,_0x2a060e){return db[_0x416d('0xb3')][_0x416d('0x5b')]({'where':{'id':_0x7892e0[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x3fde16,null))[_0x416d('0x38')](function(_0x1e476f){if(_0x1e476f){return _0x1e476f[_0x416d('0xf4')](_0x7892e0[_0x416d('0x5d')]['ids'],_[_0x416d('0xf5')](_0x7892e0['body'],[_0x416d('0x6d'),'id'])||{});}})[_0x416d('0x38')](respondWithResult(_0x3fde16,null))[_0x416d('0x29')](handleError(_0x3fde16,null));};exports[_0x416d('0xf6')]=function(_0xa4af17,_0x260c9b,_0x2b5ad6){var _0xf0ac24={'raw':![],'where':{}};var _0x20fc40={};var _0x50ba56={'count':0x0,'rows':[]};return db[_0x416d('0x55')][_0x416d('0x69')]({'where':{'id':_0xa4af17[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x260c9b,null))[_0x416d('0x38')](function(_0x43d506){if(_0x43d506){_0x20fc40[_0x416d('0x46')]=_['keys'](db[_0x416d('0xb3')][_0x416d('0x42')]);_0x20fc40['query']=_[_0x416d('0x6a')](_0xa4af17[_0x416d('0x47')]);_0x20fc40[_0x416d('0x50')]=_[_0x416d('0x48')](_0x20fc40[_0x416d('0x46')],_0x20fc40[_0x416d('0x47')]);_0xf0ac24[_0x416d('0x49')]=_[_0x416d('0x48')](_0x20fc40[_0x416d('0x46')],qs['fields'](_0xa4af17[_0x416d('0x47')][_0x416d('0x4a')]));_0xf0ac24[_0x416d('0x49')]=_0xf0ac24['attributes'][_0x416d('0x5a')]?_0xf0ac24[_0x416d('0x49')]:_0x20fc40[_0x416d('0x46')];if(!_0xa4af17[_0x416d('0x47')][_0x416d('0x4b')]('nolimit')){_0xf0ac24[_0x416d('0x2f')]=qs[_0x416d('0x2f')](_0xa4af17[_0x416d('0x47')][_0x416d('0x2f')]);_0xf0ac24[_0x416d('0x31')]=qs[_0x416d('0x31')](_0xa4af17['query'][_0x416d('0x31')]);}_0xf0ac24[_0x416d('0x4d')]=qs['sort'](_0xa4af17[_0x416d('0x47')][_0x416d('0x4e')]);_0xf0ac24[_0x416d('0x4f')]=qs[_0x416d('0x50')](_['pick'](_0xa4af17['query'],_0x20fc40['filters']));_0xf0ac24[_0x416d('0x4f')][_0x416d('0x66')]=_0x43d506['id'];if(_0xa4af17[_0x416d('0x47')]['filter']){_0xf0ac24[_0x416d('0x4f')]=_[_0x416d('0x53')](_0xf0ac24[_0x416d('0x4f')],{'$or':_[_0x416d('0x41')](_0xf0ac24[_0x416d('0x49')],function(_0x4cbef7){var _0x9699d0={};_0x9699d0[_0x4cbef7]={'$like':'%'+_0xa4af17['query'][_0x416d('0x52')]+'%'};return _0x9699d0;})});}_0xf0ac24=_[_0x416d('0x53')]({},_0xf0ac24,_0xa4af17['options']);return db[_0x416d('0xb3')]['count']({'where':_0xf0ac24[_0x416d('0x4f')]})[_0x416d('0x38')](function(_0x193f2c){_0x50ba56[_0x416d('0x30')]=_0x193f2c;if(_0xa4af17[_0x416d('0x47')][_0x416d('0x56')]){_0xf0ac24['include']=[{'model':db['CmContact'],'as':_0x416d('0xf7'),'required':![]},{'model':db['User'],'as':_0x416d('0xf8'),'attributes':[_0x416d('0x3d'),'fullname',_0x416d('0xf9')],'required':![]},{'model':db['Tag'],'as':_0x416d('0xfa'),'attributes':['id',_0x416d('0x3d'),_0x416d('0xfb')],'where':_0xa4af17[_0x416d('0x47')][_0x416d('0xfc')]?{'id':_0xa4af17['query'][_0x416d('0xfc')]}:undefined,'required':_0xa4af17[_0x416d('0x47')][_0x416d('0xfc')]?!![]:![]}];}return db[_0x416d('0xb3')][_0x416d('0x6b')](_0xf0ac24);})[_0x416d('0x38')](function(_0x523bc9){_0x50ba56[_0x416d('0x58')]=_0x523bc9;return _0x50ba56;});}})['then'](respondWithFilteredResult(_0x260c9b,_0xf0ac24))[_0x416d('0x29')](handleError(_0x260c9b,null));};function iftimePromise(_0x4a1953,_0x59e41e){return respondWithRpcPromise('Command',_0x416d('0xfd'),{'command':_0x59e41e[_0x416d('0xfe')]?util[_0x416d('0xad')]('iftime\x20%s,%s',_0x4a1953['interval'],_0x59e41e['timezone']):util['format'](_0x416d('0xff'),_0x4a1953[_0x416d('0x100')])},client9002)[_0x416d('0x38')](function(_0x7d7212){var _0x4608ab=_0x7d7212&&_0x7d7212[_0x416d('0x101')]('true')>=0x0?!![]:![];logger[_0x416d('0x21')](_0x416d('0x102'),_0x59e41e['id'],_0x4a1953['id'],_0x4a1953[_0x416d('0x100')],_0x4608ab?_0x416d('0x103'):_0x416d('0x104'),_0x59e41e[_0x416d('0xfe')]?_0x59e41e[_0x416d('0xfe')]:_0x416d('0x105'));return _0x4608ab;})[_0x416d('0x29')](function(_0x2d205d){logger[_0x416d('0x26')](_0x416d('0x102'),_0x59e41e['id'],_0x4a1953['id'],_0x4a1953[_0x416d('0x100')],util['inspect'](_0x2d205d,{'showHidden':![],'depth':null}),_0x59e41e[_0x416d('0xfe')]?_0x59e41e[_0x416d('0xfe')]:_0x416d('0x105'));return![];});}exports['getSnippet']=function(_0x3a1c1f,_0x1a3de7,_0x106df5){var _0x55e4e8=0x0;var _0x3b06f7=0x0;var _0x34eb19=![];var _0x23222e;var _0x33050b;return db[_0x416d('0x55')][_0x416d('0x5b')]({'where':{'id':_0x3a1c1f[_0x416d('0x59')]['id']},'include':[{'model':db[_0x416d('0x106')],'as':'Interval','include':[{'model':db[_0x416d('0x106')],'as':_0x416d('0x107'),'attributes':['id',_0x416d('0x100')],'raw':!![]}]}]})['then'](handleEntityNotFound(_0x1a3de7,null))[_0x416d('0x38')](function(_0x42f6dc){if(_0x42f6dc){_0x23222e=_0x42f6dc;return _0x42f6dc[_0x416d('0x108')]({'raw':!![]});}})[_0x416d('0x38')](function(_0x559458){if(_0x23222e){if(_0x559458){_0x33050b=_0x559458;}}return require(_0x416d('0x19'))[_0x416d('0x109')]();})[_0x416d('0x38')](function(_0x44f807){if(_0x44f807){_0x3b06f7=_0x44f807[_0x416d('0x10a')];_0x34eb19=_0x44f807[_0x416d('0x78')];}})['then'](function(){return db[_0x416d('0xb3')]['count']({'where':{'closed':![]}});})['then'](function(_0x42f8b4){_0x55e4e8=_0x42f8b4;if(_0x3b06f7&&_0x42f8b4>_0x3b06f7){return db['License'][_0x416d('0x69')]({'where':{'id':0x1}})[_0x416d('0x38')](function(_0x2920cf){if(_0x2920cf){_0x2920cf['increment'](_0x416d('0x10b'));}});}})[_0x416d('0x38')](function(){if(_0x23222e[_0x416d('0x106')]&&_0x23222e[_0x416d('0x106')][_0x416d('0x107')]){var _0x5e886a=[];for(var _0x33f93f=0x0;_0x33f93f<_0x23222e[_0x416d('0x106')][_0x416d('0x107')]['length'];_0x33f93f++){var _0x62e1d0=_0x23222e[_0x416d('0x106')][_0x416d('0x107')][_0x33f93f]['get']({'plain':!![]});_0x5e886a[_0x416d('0xb9')](iftimePromise(_0x62e1d0,_0x23222e));}return BPromise[_0x416d('0x10c')](_0x5e886a)[_0x416d('0x38')](function(_0x533f52){return _[_0x416d('0x10d')](_0x533f52);});}else{return!![];}})[_0x416d('0x38')](function(_0x120692){var _0x33bb56=fs[_0x416d('0xcd')](path[_0x416d('0x7c')](config[_0x416d('0x77')],_0x416d('0x10e')),'utf8');var _0x32b03b={'remote':_0x23222e[_0x416d('0x10f')],'query':querystring[_0x416d('0x25')](_[_0x416d('0x53')](_0x23222e[_0x416d('0x3a')]({'plain':!![]}),{'customerIp':_0x3a1c1f[_0x416d('0xa4')][_0x416d('0xa7')]||_0x3a1c1f['headers']['x-real-ip']||_0x3a1c1f[_0x416d('0x110')][_0x416d('0x111')]||_0x3a1c1f['ip'],'referer':_0x3a1c1f['headers']['referer'],'openedInteractions':_0x55e4e8,'maxInteractions':_0x3b06f7,'virtual':_0x34eb19[_0x416d('0x10a')],'online':_0x120692,'custom':_0x34eb19}))['replace'](/'/g,'\x5c\x27')};_0x1a3de7[_0x416d('0xc7')](ejs['render'](Mustache[_0x416d('0x112')](_0x33bb56,_0x32b03b),{'proactiveActions':_0x33050b,'alignment':_0x23222e[_0x416d('0x113')],'verticalAlignment':_0x23222e[_0x416d('0x114')],'div_color':_0x23222e[_0x416d('0xfb')],'text_color':_0x23222e[_0x416d('0x115')],'button_color':_0x23222e['color_button'],'background_color':_0x23222e[_0x416d('0x116')]}));})[_0x416d('0x29')](handleError(_0x1a3de7,null));};exports[_0x416d('0x117')]=function(_0x1267b9,_0x3d58,_0x530c6c){return db[_0x416d('0x55')][_0x416d('0x69')]({'where':{'id':_0x1267b9[_0x416d('0x59')]['id']}})['then'](handleEntityNotFound(_0x3d58,null))[_0x416d('0x38')](function(_0x563b71){if(_0x563b71){return db[_0x416d('0xda')][_0x416d('0xdb')](function(_0x1f9d31){return db[_0x416d('0x9a')][_0x416d('0x39')]({'where':{'ChatWebsiteId':_0x1267b9[_0x416d('0x59')]['id']},'transaction':_0x1f9d31})[_0x416d('0x38')](function(_0x370f82){var _0x26f57f=_['map'](_0x1267b9[_0x416d('0x5d')],function(_0x1fc497){_0x1fc497[_0x416d('0x66')]=_0x1267b9[_0x416d('0x59')]['id'];return _0x1fc497;});return db[_0x416d('0x9a')][_0x416d('0x118')](_0x26f57f,{'transaction':_0x1f9d31});});})[_0x416d('0x38')](function(){return db[_0x416d('0x9a')][_0x416d('0x119')]({'where':{'ChatWebsiteId':_0x1267b9[_0x416d('0x59')]['id']},'order':_0x416d('0xa0')});});}})[_0x416d('0x38')](respondWithResult(_0x3d58,null))[_0x416d('0x29')](handleError(_0x3d58,null));};exports['getApplications']=function(_0x5bee25,_0x478ae6,_0x4494db){var _0x35f79b={};var _0x1d8cfe={};var _0x10d672;var _0x727881;return db[_0x416d('0x55')][_0x416d('0x69')]({'where':{'id':_0x5bee25[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x478ae6,null))[_0x416d('0x38')](function(_0x4e1882){if(_0x4e1882){_0x10d672=_0x4e1882;_0x1d8cfe[_0x416d('0x46')]=_['keys'](db[_0x416d('0x9a')][_0x416d('0x42')]);_0x1d8cfe[_0x416d('0x47')]=_[_0x416d('0x6a')](_0x5bee25['query']);_0x1d8cfe[_0x416d('0x50')]=_['intersection'](_0x1d8cfe[_0x416d('0x46')],_0x1d8cfe[_0x416d('0x47')]);_0x35f79b[_0x416d('0x49')]=_[_0x416d('0x48')](_0x1d8cfe[_0x416d('0x46')],qs['fields'](_0x5bee25[_0x416d('0x47')][_0x416d('0x4a')]));_0x35f79b[_0x416d('0x49')]=_0x35f79b[_0x416d('0x49')][_0x416d('0x5a')]?_0x35f79b[_0x416d('0x49')]:_0x1d8cfe[_0x416d('0x46')];_0x35f79b[_0x416d('0x4d')]=qs[_0x416d('0x4e')](_0x5bee25['query'][_0x416d('0x4e')]);_0x35f79b['where']=qs['filters'](_['pick'](_0x5bee25[_0x416d('0x47')],_0x1d8cfe['filters']));if(_0x5bee25[_0x416d('0x47')][_0x416d('0x52')]){_0x35f79b[_0x416d('0x4f')]=_[_0x416d('0x53')](_0x35f79b[_0x416d('0x4f')],{'$or':_[_0x416d('0x41')](_0x35f79b[_0x416d('0x49')],function(_0x2afa8a){var _0x444c87={};_0x444c87[_0x2afa8a]={'$like':'%'+_0x5bee25[_0x416d('0x47')]['filter']+'%'};return _0x444c87;})});}_0x35f79b=_[_0x416d('0x53')]({},_0x35f79b,_0x5bee25[_0x416d('0x54')]);return _0x10d672[_0x416d('0x11a')](_0x35f79b);}})[_0x416d('0x38')](function(_0x38b83e){if(_0x38b83e){_0x727881=_0x38b83e[_0x416d('0x5a')];if(!_0x5bee25[_0x416d('0x47')][_0x416d('0x4b')](_0x416d('0x4c'))){_0x35f79b[_0x416d('0x2f')]=qs[_0x416d('0x2f')](_0x5bee25[_0x416d('0x47')]['limit']);_0x35f79b[_0x416d('0x31')]=qs[_0x416d('0x31')](_0x5bee25[_0x416d('0x47')]['offset']);}return _0x10d672[_0x416d('0x11a')](_0x35f79b);}})[_0x416d('0x38')](function(_0x338e51){if(_0x338e51){return _0x338e51?{'count':_0x727881,'rows':_0x338e51}:null;}})[_0x416d('0x38')](respondWithResult(_0x478ae6,null))[_0x416d('0x29')](handleError(_0x478ae6,null));};exports[_0x416d('0x11b')]=function(_0x3f28ee,_0x379934,_0x3418fb){return db['chatProactiveAction'][_0x416d('0x5b')]({'where':{'id':_0x3f28ee[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x379934,null))[_0x416d('0x38')](function(_0x344a66){if(_0x344a66){return _0x344a66[_0x416d('0x11b')](_0x3f28ee[_0x416d('0x5d')]['ids'],_[_0x416d('0xf5')](_0x3f28ee[_0x416d('0x5d')],[_0x416d('0x6d'),'id'])||{});}})['then'](respondWithResult(_0x379934,null))['catch'](handleError(_0x379934,null));};exports[_0x416d('0x108')]=function(_0x40cb28,_0x8b1c02,_0x3c092f){var _0x4aa454={};var _0x1e33be={};var _0x48f74d;var _0x3f58b8;return db[_0x416d('0x55')][_0x416d('0x69')]({'where':{'id':_0x40cb28['params']['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x8b1c02,null))[_0x416d('0x38')](function(_0x348b42){if(_0x348b42){_0x48f74d=_0x348b42;_0x1e33be[_0x416d('0x46')]=_[_0x416d('0x6a')](db['ChatProactiveAction'][_0x416d('0x42')]);_0x1e33be[_0x416d('0x47')]=_[_0x416d('0x6a')](_0x40cb28[_0x416d('0x47')]);_0x1e33be['filters']=_[_0x416d('0x48')](_0x1e33be[_0x416d('0x46')],_0x1e33be[_0x416d('0x47')]);_0x4aa454[_0x416d('0x49')]=_[_0x416d('0x48')](_0x1e33be['model'],qs['fields'](_0x40cb28[_0x416d('0x47')][_0x416d('0x4a')]));_0x4aa454[_0x416d('0x49')]=_0x4aa454[_0x416d('0x49')]['length']?_0x4aa454[_0x416d('0x49')]:_0x1e33be[_0x416d('0x46')];_0x4aa454['order']=qs[_0x416d('0x4e')](_0x40cb28[_0x416d('0x47')][_0x416d('0x4e')]);_0x4aa454[_0x416d('0x4f')]=qs['filters'](_[_0x416d('0x51')](_0x40cb28[_0x416d('0x47')],_0x1e33be[_0x416d('0x50')]));if(_0x40cb28['query'][_0x416d('0x52')]){_0x4aa454[_0x416d('0x4f')]=_[_0x416d('0x53')](_0x4aa454[_0x416d('0x4f')],{'$or':_[_0x416d('0x41')](_0x4aa454[_0x416d('0x49')],function(_0x220319){var _0x18cbae={};_0x18cbae[_0x220319]={'$like':'%'+_0x40cb28[_0x416d('0x47')]['filter']+'%'};return _0x18cbae;})});}_0x4aa454=_[_0x416d('0x53')]({},_0x4aa454,_0x40cb28[_0x416d('0x54')]);return _0x48f74d['getProactiveActions'](_0x4aa454);}})['then'](function(_0x535595){if(_0x535595){_0x3f58b8=_0x535595[_0x416d('0x5a')];if(!_0x40cb28['query'][_0x416d('0x4b')]('nolimit')){_0x4aa454[_0x416d('0x2f')]=qs[_0x416d('0x2f')](_0x40cb28[_0x416d('0x47')]['limit']);_0x4aa454[_0x416d('0x31')]=qs[_0x416d('0x31')](_0x40cb28['query'][_0x416d('0x31')]);}return _0x48f74d[_0x416d('0x108')](_0x4aa454);}})[_0x416d('0x38')](function(_0x3d06b9){if(_0x3d06b9){return _0x3d06b9?{'count':_0x3f58b8,'rows':_0x3d06b9}:null;}})[_0x416d('0x38')](respondWithResult(_0x8b1c02,null))[_0x416d('0x29')](handleError(_0x8b1c02,null));};exports[_0x416d('0x11c')]=function(_0x291094,_0x4c2def,_0x25de63){var _0x5317a7=_0x291094[_0x416d('0x47')][_0x416d('0x11d')]===_0x416d('0x11e')?_0x416d('0x11f'):_0x416d('0x120');return db['ChatWebsite'][_0x416d('0x5b')]({'attributes':['id',_0x5317a7],'where':{'id':_0x291094[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x4c2def,null))[_0x416d('0x38')](function(_0x372b84){if(_0x372b84){var _0x479a0f=_0x372b84[_0x5317a7];var _0x5c4a09=_0x479a0f&&_0x479a0f['items']?_0x479a0f[_0x416d('0x121')]:[];_0x4c2def[_0x416d('0xc7')]({'fromKey':_['isNil'](_0x479a0f[_0x416d('0x122')])?undefined:_0x479a0f['fromKey'],'count':_0x5c4a09[_0x416d('0x5a')],'rows':_0x5c4a09});}})[_0x416d('0x29')](handleError(_0x4c2def,null));};exports[_0x416d('0x123')]=function(_0x36df39,_0x11b572,_0x59f3aa){var _0x4837c1={'raw':![],'where':{}};var _0x36ea45={};var _0x129902={'count':0x0,'rows':[]};return db[_0x416d('0x55')][_0x416d('0x69')]({'where':{'id':_0x36df39[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x11b572,null))[_0x416d('0x38')](function(_0x37861c){if(_0x37861c){_0x36ea45[_0x416d('0x46')]=_[_0x416d('0x6a')](db[_0x416d('0xd1')][_0x416d('0x42')]);_0x36ea45[_0x416d('0x47')]=_[_0x416d('0x6a')](_0x36df39[_0x416d('0x47')]);_0x36ea45['filters']=_[_0x416d('0x48')](_0x36ea45['model'],_0x36ea45[_0x416d('0x47')]);_0x4837c1[_0x416d('0x49')]=_['intersection'](_0x36ea45[_0x416d('0x46')],qs[_0x416d('0x4a')](_0x36df39['query'][_0x416d('0x4a')]));_0x4837c1['attributes']=_0x4837c1[_0x416d('0x49')][_0x416d('0x5a')]?_0x4837c1['attributes']:_0x36ea45[_0x416d('0x46')];if(!_0x36df39[_0x416d('0x47')][_0x416d('0x4b')](_0x416d('0x4c'))){_0x4837c1[_0x416d('0x2f')]=qs['limit'](_0x36df39['query'][_0x416d('0x2f')]);_0x4837c1[_0x416d('0x31')]=qs[_0x416d('0x31')](_0x36df39[_0x416d('0x47')][_0x416d('0x31')]);}_0x4837c1[_0x416d('0x4d')]=qs['sort'](_0x36df39[_0x416d('0x47')][_0x416d('0x4e')]);_0x4837c1['where']=qs[_0x416d('0x50')](_[_0x416d('0x51')](_0x36df39[_0x416d('0x47')],_0x36ea45['filters']));_0x4837c1['where']['ChatWebsiteId']=_0x37861c['id'];if(_0x36df39[_0x416d('0x47')][_0x416d('0x52')]){_0x4837c1[_0x416d('0x4f')]=_[_0x416d('0x53')](_0x4837c1[_0x416d('0x4f')],{'$or':_[_0x416d('0x41')](_0x4837c1[_0x416d('0x49')],function(_0x25d22b){var _0x502d3d={};_0x502d3d[_0x25d22b]={'$like':'%'+_0x36df39[_0x416d('0x47')][_0x416d('0x52')]+'%'};return _0x502d3d;})});}_0x4837c1=_[_0x416d('0x53')]({},_0x4837c1,_0x36df39[_0x416d('0x54')]);return db[_0x416d('0xd1')][_0x416d('0x30')]({'where':_0x4837c1[_0x416d('0x4f')]})[_0x416d('0x38')](function(_0x40f323){_0x129902[_0x416d('0x30')]=_0x40f323;if(_0x36df39[_0x416d('0x47')][_0x416d('0x56')]){_0x4837c1[_0x416d('0x57')]=[{'all':!![]}];}else{_0x4837c1[_0x416d('0x57')]=[{'model':db[_0x416d('0x89')],'as':'Contact','required':![]},{'model':db[_0x416d('0xdc')],'as':_0x416d('0x124'),'required':![]}];}return db[_0x416d('0xd1')]['findAll'](_0x4837c1);})[_0x416d('0x38')](function(_0x51fa63){_0x129902[_0x416d('0x58')]=_0x51fa63;return _0x129902;});}})['then'](respondWithFilteredResult(_0x11b572,_0x4837c1))[_0x416d('0x29')](handleError(_0x11b572,null));};exports['addAgents']=function(_0xd391c0,_0x3b7845,_0x48e31c){return db[_0x416d('0x55')]['find']({'where':{'id':_0xd391c0[_0x416d('0x59')]['id']}})[_0x416d('0x38')](handleEntityNotFound(_0x3b7845,null))[_0x416d('0x38')](function(_0x57fceb){if(_0x57fceb){return _0x57fceb[_0x416d('0x125')](_0xd391c0[_0x416d('0x5d')]['ids'],_[_0x416d('0xf5')](_0xd391c0[_0x416d('0x5d')],['ids','id'])||{})[_0x416d('0xcc')](function(_0x5e885e){for(var _0x5ab6d7=0x0;_0x5ab6d7<_0xd391c0[_0x416d('0x5d')][_0x416d('0x6d')][_0x416d('0x5a')];_0x5ab6d7+=0x1){socket[_0x416d('0x126')](_0x416d('0x127'),{'UserId':Number(_0xd391c0[_0x416d('0x5d')]['ids'][_0x5ab6d7]),'ChatWebsiteId':Number(_0xd391c0['params']['id'])});}return _0x5e885e;});}})['then'](respondWithResult(_0x3b7845,null))['catch'](handleError(_0x3b7845,null));};exports['removeAgents']=function(_0x413b15,_0x17e6fc,_0x4a0e16){return db[_0x416d('0x55')][_0x416d('0x5b')]({'where':{'id':_0x413b15[_0x416d('0x59')]['id']}})['then'](handleEntityNotFound(_0x17e6fc,null))[_0x416d('0x38')](function(_0x49cc5a){if(_0x49cc5a){return _0x49cc5a['removeAgents'](_0x413b15[_0x416d('0x47')][_0x416d('0x6d')])['then'](function(){if(_[_0x416d('0x128')](_0x413b15[_0x416d('0x47')][_0x416d('0x6d')])){for(var _0x4cdded=0x0;_0x4cdded<_0x413b15[_0x416d('0x47')][_0x416d('0x6d')][_0x416d('0x5a')];_0x4cdded+=0x1){socket[_0x416d('0x126')]('userChatWebsite:remove',{'UserId':Number(_0x413b15['query']['ids'][_0x4cdded]),'ChatWebsiteId':Number(_0x413b15['params']['id'])});}}else{socket['emit']('userChatWebsite:remove',{'UserId':Number(_0x413b15['query'][_0x416d('0x6d')]),'ChatWebsiteId':Number(_0x413b15['params']['id'])});}});}})[_0x416d('0x38')](respondWithStatusCode(_0x17e6fc,null))[_0x416d('0x29')](handleError(_0x17e6fc,null));};exports[_0x416d('0x129')]=function(_0xa325df,_0x22e79d,_0x2e6583){var _0x2e64b6={};var _0x39f8be={};var _0x4daaed;var _0x3412a1;return db['ChatWebsite'][_0x416d('0x69')]({'where':{'id':_0xa325df['params']['id']}})['then'](handleEntityNotFound(_0x22e79d,null))[_0x416d('0x38')](function(_0x1147d5){if(_0x1147d5){_0x4daaed=_0x1147d5;_0x39f8be['model']=_[_0x416d('0x6a')](db['User']['rawAttributes']);_0x39f8be[_0x416d('0x47')]=_[_0x416d('0x6a')](_0xa325df[_0x416d('0x47')]);_0x39f8be[_0x416d('0x50')]=_[_0x416d('0x48')](_0x39f8be['model'],_0x39f8be[_0x416d('0x47')]);_0x2e64b6['attributes']=_[_0x416d('0x48')](_0x39f8be['model'],qs[_0x416d('0x4a')](_0xa325df[_0x416d('0x47')][_0x416d('0x4a')]));_0x2e64b6['attributes']=_0x2e64b6[_0x416d('0x49')][_0x416d('0x5a')]?_0x2e64b6[_0x416d('0x49')]:_0x39f8be[_0x416d('0x46')];_0x2e64b6[_0x416d('0x4d')]=qs[_0x416d('0x4e')](_0xa325df[_0x416d('0x47')][_0x416d('0x4e')]);_0x2e64b6['where']=qs[_0x416d('0x50')](_[_0x416d('0x51')](_0xa325df[_0x416d('0x47')],_0x39f8be[_0x416d('0x50')]));if(_0xa325df[_0x416d('0x47')]['filter']){_0x2e64b6['where']=_[_0x416d('0x53')](_0x2e64b6[_0x416d('0x4f')],{'$or':_['map'](_0x2e64b6[_0x416d('0x49')],function(_0x2f8ccb){var _0x42dccc={};_0x42dccc[_0x2f8ccb]={'$like':'%'+_0xa325df['query'][_0x416d('0x52')]+'%'};return _0x42dccc;})});}_0x2e64b6=_['merge']({},_0x2e64b6,_0xa325df['options']);return _0x4daaed[_0x416d('0x129')](_0x2e64b6);}})[_0x416d('0x38')](function(_0x3ba962){if(_0x3ba962){_0x3412a1=_0x3ba962[_0x416d('0x5a')];if(!_0xa325df['query'][_0x416d('0x4b')](_0x416d('0x4c'))){_0x2e64b6['limit']=qs[_0x416d('0x2f')](_0xa325df[_0x416d('0x47')][_0x416d('0x2f')]);_0x2e64b6[_0x416d('0x31')]=qs['offset'](_0xa325df[_0x416d('0x47')][_0x416d('0x31')]);}return _0x4daaed[_0x416d('0x129')](_0x2e64b6);}})['then'](function(_0x4039c4){if(_0x4039c4){return _0x4039c4?{'count':_0x3412a1,'rows':_0x4039c4}:null;}})[_0x416d('0x38')](respondWithResult(_0x22e79d,null))[_0x416d('0x29')](handleError(_0x22e79d,null));};
\ No newline at end of file
index 982630a..f05d4ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd51f=['events','../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty','exports'];(function(_0x4bed75,_0x211cc7){var _0x2dd8e8=function(_0x6369c7){while(--_0x6369c7){_0x4bed75['push'](_0x4bed75['shift']());}};_0x2dd8e8(++_0x211cc7);}(_0xd51f,0xf0));var _0xfd51=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xd51f[_0x2c91e9];return _0x13f0ff;};'use strict';var EventEmitter=require(_0xfd51('0x0'));var ChatWebsite=require(_0xfd51('0x1'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xfd51('0x2')](0x0);var events={'afterCreate':_0xfd51('0x3'),'afterUpdate':'update','afterDestroy':_0xfd51('0x4')};function emitEvent(_0x1d01a0){return function(_0x49bb3e,_0x3efc9b,_0x3edd05){ChatWebsiteEvents['emit'](_0x1d01a0+':'+_0x49bb3e['id'],_0x49bb3e);ChatWebsiteEvents[_0xfd51('0x5')](_0x1d01a0,_0x49bb3e);_0x3edd05(null);};}for(var e in events){if(events[_0xfd51('0x6')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module[_0xfd51('0x7')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0xfa2b=['../../mysqldb','ChatWebsite','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0xf71bda,_0x6105a4){var _0x4ec935=function(_0x37e8de){while(--_0x37e8de){_0xf71bda['push'](_0xf71bda['shift']());}};_0x4ec935(++_0x6105a4);}(_0xfa2b,0x1b7));var _0xbfa2=function(_0x3bd788,_0xaab7ee){_0x3bd788=_0x3bd788-0x0;var _0x2b7625=_0xfa2b[_0x3bd788];return _0x2b7625;};'use strict';var EventEmitter=require(_0xbfa2('0x0'));var ChatWebsite=require(_0xbfa2('0x1'))['db'][_0xbfa2('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xbfa2('0x3')](0x0);var events={'afterCreate':_0xbfa2('0x4'),'afterUpdate':_0xbfa2('0x5'),'afterDestroy':_0xbfa2('0x6')};function emitEvent(_0x1103cf){return function(_0x116ab4,_0x43f8d9,_0x425ac5){ChatWebsiteEvents[_0xbfa2('0x7')](_0x1103cf+':'+_0x116ab4['id'],_0x116ab4);ChatWebsiteEvents[_0xbfa2('0x7')](_0x1103cf,_0x116ab4);_0x425ac5(null);};}for(var e in events){if(events[_0xbfa2('0x8')](e)){var event=events[e];ChatWebsite[_0xbfa2('0x9')](e,emitEvent(event));}}module[_0xbfa2('0xa')]=ChatWebsiteEvents;
\ No newline at end of file
index b93626e..2589469 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20b7=['chat_websites','../../config/logger','api','moment','bluebird','path','../../config/environment','./chatWebsite.attributes','define','ChatWebsite'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x20b7,0x1e1));var _0x720b=function(_0x48010a,_0x2bf126){_0x48010a=_0x48010a-0x0;var _0x121b97=_0x20b7[_0x48010a];return _0x121b97;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x720b('0x0'))(_0x720b('0x1'));var moment=require(_0x720b('0x2'));var BPromise=require(_0x720b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x720b('0x4'));var rimraf=require('rimraf');var config=require(_0x720b('0x5'));var attributes=require(_0x720b('0x6'));module['exports']=function(_0x515298,_0xfd5e36){return _0x515298[_0x720b('0x7')](_0x720b('0x8'),attributes,{'tableName':_0x720b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd266=['../../config/environment','./chatWebsite.attributes','exports','define','ChatWebsite','chat_websites','../../config/logger','api','moment','bluebird','path'];(function(_0x1996b1,_0x2818d0){var _0x5c6fcf=function(_0x202dab){while(--_0x202dab){_0x1996b1['push'](_0x1996b1['shift']());}};_0x5c6fcf(++_0x2818d0);}(_0xd266,0x8a));var _0x6d26=function(_0x17f08d,_0x2c00f9){_0x17f08d=_0x17f08d-0x0;var _0x4809c4=_0xd266[_0x17f08d];return _0x4809c4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6d26('0x0'))(_0x6d26('0x1'));var moment=require(_0x6d26('0x2'));var BPromise=require(_0x6d26('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6d26('0x4'));var rimraf=require('rimraf');var config=require(_0x6d26('0x5'));var attributes=require(_0x6d26('0x6'));module[_0x6d26('0x7')]=function(_0x2dceaf,_0x4731d2){return _0x2dceaf[_0x6d26('0x8')](_0x6d26('0x9'),attributes,{'tableName':_0x6d26('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2c6c172..9e5d8ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4326=['code','message','result','catch','ChatWebsite,\x20%s,\x20%s','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','socket.io-emitter','./chatWebsite.socket','register','request','then','info','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x381926,_0x154257){var _0x50e014=function(_0x1196a8){while(--_0x1196a8){_0x381926['push'](_0x381926['shift']());}};_0x50e014(++_0x154257);}(_0x4326,0xad));var _0x6432=function(_0x379ca0,_0x206784){_0x379ca0=_0x379ca0-0x0;var _0x4863e7=_0x4326[_0x379ca0];return _0x4863e7;};'use strict';var _=require(_0x6432('0x0'));var util=require(_0x6432('0x1'));var moment=require('moment');var BPromise=require(_0x6432('0x2'));var rs=require(_0x6432('0x3'));var fs=require('fs');var Redis=require(_0x6432('0x4'));var db=require(_0x6432('0x5'))['db'];var utils=require(_0x6432('0x6'));var logger=require('../../config/logger')(_0x6432('0x7'));var config=require(_0x6432('0x8'));var jayson=require(_0x6432('0x9'));var client=jayson[_0x6432('0xa')]['http']({'port':0x232a});config[_0x6432('0xb')]=_['defaults'](config[_0x6432('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x6432('0xc'))(new Redis(config[_0x6432('0xb')]));require(_0x6432('0xd'))[_0x6432('0xe')](socket);function respondWithRpcPromise(_0x2d3137,_0x3fed6c,_0x24a2d6){return new BPromise(function(_0x5407be,_0x23edb1){return client[_0x6432('0xf')](_0x2d3137,_0x24a2d6)[_0x6432('0x10')](function(_0x183b32){logger[_0x6432('0x11')]('ChatWebsite,\x20%s,\x20%s',_0x3fed6c,'request\x20sent');logger[_0x6432('0x12')](_0x6432('0x13'),_0x3fed6c,_0x6432('0x14'),JSON[_0x6432('0x15')](_0x183b32));if(_0x183b32[_0x6432('0x16')]){if(_0x183b32[_0x6432('0x16')][_0x6432('0x17')]===0x1f4){logger[_0x6432('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x3fed6c,_0x183b32[_0x6432('0x16')]['message']);return _0x23edb1(_0x183b32[_0x6432('0x16')]['message']);}logger['error']('ChatWebsite,\x20%s,\x20%s',_0x3fed6c,_0x183b32[_0x6432('0x16')][_0x6432('0x18')]);return _0x5407be(_0x183b32[_0x6432('0x16')][_0x6432('0x18')]);}else{logger[_0x6432('0x11')]('ChatWebsite,\x20%s,\x20%s',_0x3fed6c,_0x6432('0x14'));_0x5407be(_0x183b32[_0x6432('0x19')][_0x6432('0x18')]);}})[_0x6432('0x1a')](function(_0x2c9c51){logger['error'](_0x6432('0x1b'),_0x3fed6c,_0x2c9c51);_0x23edb1(_0x2c9c51);});});}
\ No newline at end of file
+var _0xc210=['socket.io-emitter','./chatWebsite.socket','register','request','then','debug','request\x20sent','stringify','error','ChatWebsite,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','redis','defaults','localhost'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xc210,0x8b));var _0x0c21=function(_0xed01eb,_0x275edb){_0xed01eb=_0xed01eb-0x0;var _0x25b9de=_0xc210[_0xed01eb];return _0x25b9de;};'use strict';var _=require(_0x0c21('0x0'));var util=require(_0x0c21('0x1'));var moment=require(_0x0c21('0x2'));var BPromise=require(_0x0c21('0x3'));var rs=require(_0x0c21('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0c21('0x5'))['db'];var utils=require(_0x0c21('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x0c21('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x0c21('0x8')]=_[_0x0c21('0x9')](config['redis'],{'host':_0x0c21('0xa'),'port':0x18eb});var socket=require(_0x0c21('0xb'))(new Redis(config['redis']));require(_0x0c21('0xc'))[_0x0c21('0xd')](socket);function respondWithRpcPromise(_0x361791,_0x596cd3,_0x34cac9){return new BPromise(function(_0x3e13db,_0x161b22){return client[_0x0c21('0xe')](_0x361791,_0x34cac9)[_0x0c21('0xf')](function(_0x417e25){logger['info']('ChatWebsite,\x20%s,\x20%s',_0x596cd3,'request\x20sent');logger[_0x0c21('0x10')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x596cd3,_0x0c21('0x11'),JSON[_0x0c21('0x12')](_0x417e25));if(_0x417e25[_0x0c21('0x13')]){if(_0x417e25[_0x0c21('0x13')]['code']===0x1f4){logger[_0x0c21('0x13')](_0x0c21('0x14'),_0x596cd3,_0x417e25[_0x0c21('0x13')]['message']);return _0x161b22(_0x417e25[_0x0c21('0x13')][_0x0c21('0x15')]);}logger['error']('ChatWebsite,\x20%s,\x20%s',_0x596cd3,_0x417e25[_0x0c21('0x13')][_0x0c21('0x15')]);return _0x3e13db(_0x417e25[_0x0c21('0x13')]['message']);}else{logger[_0x0c21('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x596cd3,_0x0c21('0x11'));_0x3e13db(_0x417e25[_0x0c21('0x17')]['message']);}})[_0x0c21('0x18')](function(_0x3a9945){logger[_0x0c21('0x13')](_0x0c21('0x14'),_0x596cd3,_0x3a9945);_0x161b22(_0x3a9945);});});}
\ No newline at end of file
index 1ea2dcf..ffb6041 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbf0=['remove','emit','chatWebsite:','./chatWebsite.events','save'];(function(_0x11ca63,_0xea9f9c){var _0x41f1f6=function(_0xb80b69){while(--_0xb80b69){_0x11ca63['push'](_0x11ca63['shift']());}};_0x41f1f6(++_0xea9f9c);}(_0xcbf0,0xa3));var _0x0cbf=function(_0x1cd7cb,_0x1a8cc8){_0x1cd7cb=_0x1cd7cb-0x0;var _0x5e2581=_0xcbf0[_0x1cd7cb];return _0x5e2581;};'use strict';var ChatWebsiteEvents=require(_0x0cbf('0x0'));var events=[_0x0cbf('0x1'),_0x0cbf('0x2'),'update'];function createListener(_0x3457d4,_0x40d2dc){return function(_0xd41d4c){_0x40d2dc[_0x0cbf('0x3')](_0x3457d4,_0xd41d4c);};}function removeListener(_0x272a4d,_0x28f2a1){return function(){ChatWebsiteEvents['removeListener'](_0x272a4d,_0x28f2a1);};}exports['register']=function(_0x59460c){for(var _0x6c08c1=0x0,_0x4e0042=events['length'];_0x6c08c1<_0x4e0042;_0x6c08c1++){var _0x124ef6=events[_0x6c08c1];var _0x11abe9=createListener(_0x0cbf('0x4')+_0x124ef6,_0x59460c);ChatWebsiteEvents['on'](_0x124ef6,_0x11abe9);}};
\ No newline at end of file
+var _0x109c=['length','save','update','emit','register'];(function(_0x4c7bb9,_0x31fbb1){var _0x1ea5b2=function(_0x416dda){while(--_0x416dda){_0x4c7bb9['push'](_0x4c7bb9['shift']());}};_0x1ea5b2(++_0x31fbb1);}(_0x109c,0x146));var _0xc109=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x109c[_0x3b380d];return _0x54502b;};'use strict';var ChatWebsiteEvents=require('./chatWebsite.events');var events=[_0xc109('0x0'),'remove',_0xc109('0x1')];function createListener(_0x53bea4,_0x420758){return function(_0x4bf341){_0x420758[_0xc109('0x2')](_0x53bea4,_0x4bf341);};}function removeListener(_0x254471,_0x178728){return function(){ChatWebsiteEvents['removeListener'](_0x254471,_0x178728);};}exports[_0xc109('0x3')]=function(_0x3cdbb9){for(var _0x434c2e=0x0,_0x4c7d1f=events[_0xc109('0x4')];_0x434c2e<_0x4c7d1f;_0x434c2e++){var _0x293936=events[_0x434c2e];var _0x4f7abf=createListener('chatWebsite:'+_0x293936,_0x3cdbb9);ChatWebsiteEvents['on'](_0x293936,_0x4f7abf);}};
\ No newline at end of file
index e6d9d96..a8e18be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a7b=['/:id/dispositions','getDispositions','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','post','/:id/canned_answers','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','file','addLogo','server/files/images/avatars/','single','addAvatar','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','offline-chat','replace','extname','/:id/offline','any','offline','addInteraction','addProactiveActions','addAgents','put','/:id','update','delete','destroy','removeDispositions','removeAgents','exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','index','/describe','describe','isAuthenticated','show'];(function(_0x3dc25f,_0x12600e){var _0x4bc497=function(_0x236c8d){while(--_0x236c8d){_0x3dc25f['push'](_0x3dc25f['shift']());}};_0x4bc497(++_0x12600e);}(_0x9a7b,0x1eb));var _0xb9a7=function(_0x29b9e3,_0x34f3f8){_0x29b9e3=_0x29b9e3-0x0;var _0x4f645f=_0x9a7b[_0x29b9e3];return _0x4f645f;};'use strict';var multer=require(_0xb9a7('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xb9a7('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb9a7('0x2'));var auth=require(_0xb9a7('0x3'));var interaction=require(_0xb9a7('0x4'));var config=require(_0xb9a7('0x5'));var controller=require(_0xb9a7('0x6'));router[_0xb9a7('0x7')]('/',auth['isAuthenticated'](),controller[_0xb9a7('0x8')]);router[_0xb9a7('0x7')](_0xb9a7('0x9'),auth['isAuthenticated'](),controller[_0xb9a7('0xa')]);router[_0xb9a7('0x7')]('/:id',auth[_0xb9a7('0xb')](),controller[_0xb9a7('0xc')]);router[_0xb9a7('0x7')](_0xb9a7('0xd'),auth['isAuthenticated'](),controller[_0xb9a7('0xe')]);router['get']('/:id/canned_answers',auth[_0xb9a7('0xb')](),controller[_0xb9a7('0xf')]);router[_0xb9a7('0x7')](_0xb9a7('0x10'),controller[_0xb9a7('0x11')]);router[_0xb9a7('0x7')](_0xb9a7('0x12'),controller[_0xb9a7('0x13')]);router[_0xb9a7('0x7')](_0xb9a7('0x14'),controller[_0xb9a7('0x15')]);router['get'](_0xb9a7('0x16'),controller[_0xb9a7('0x17')]);router['get'](_0xb9a7('0x18'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x19')]);router[_0xb9a7('0x7')]('/:id/snippet',controller[_0xb9a7('0x1a')]);router[_0xb9a7('0x7')](_0xb9a7('0x1b'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x1c')]);router[_0xb9a7('0x7')](_0xb9a7('0x1d'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x1e')]);router[_0xb9a7('0x7')]('/:id/fields',controller[_0xb9a7('0x1f')]);router[_0xb9a7('0x7')](_0xb9a7('0x20'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x21')]);router[_0xb9a7('0x7')](_0xb9a7('0x22'),auth['isAuthenticated'](),controller['getAgents']);router[_0xb9a7('0x23')]('/',auth[_0xb9a7('0xb')](),controller['create']);router['post'](_0xb9a7('0xd'),auth[_0xb9a7('0xb')](),controller['addDisposition']);router[_0xb9a7('0x23')](_0xb9a7('0x24'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x25')]);var upload=multer({'storage':multer[_0xb9a7('0x26')]({'destination':function(_0x41349e,_0x2d3361,_0x29cbf5){_0x29cbf5(null,path[_0xb9a7('0x27')](config[_0xb9a7('0x28')],_0xb9a7('0x29')));},'filename':function(_0x230f63,_0x12d987,_0xdb198a){_0xdb198a(null,util[_0xb9a7('0x2a')](_0xb9a7('0x2b'),Date[_0xb9a7('0x2c')](),_0x12d987[_0xb9a7('0x2d')]));}})});router[_0xb9a7('0x23')](_0xb9a7('0x10'),upload['single'](_0xb9a7('0x2e')),controller[_0xb9a7('0x2f')]);var upload=multer({'storage':multer[_0xb9a7('0x26')]({'destination':function(_0x4e5efa,_0x5782c4,_0x26d9e7){_0x26d9e7(null,path[_0xb9a7('0x27')](config[_0xb9a7('0x28')],_0xb9a7('0x30')));},'filename':function(_0x2ccffa,_0x22dd65,_0x1aa406){_0x1aa406(null,util[_0xb9a7('0x2a')]('%s-%s',Date[_0xb9a7('0x2c')](),_0x22dd65['originalname']));}})});router['post']('/:id/avatar',upload[_0xb9a7('0x31')](_0xb9a7('0x2e')),controller[_0xb9a7('0x32')]);var upload=multer({'storage':multer[_0xb9a7('0x26')]({'destination':function(_0x5a24c9,_0x4520d0,_0x12121f){_0x12121f(null,path[_0xb9a7('0x27')](config[_0xb9a7('0x28')],'server/files/images/avatars/'));},'filename':function(_0x1cc538,_0x5d3b80,_0x24c374){_0x24c374(null,util['format'](_0xb9a7('0x2b'),Date[_0xb9a7('0x2c')](),_0x5d3b80[_0xb9a7('0x2d')]));}})});router[_0xb9a7('0x23')](_0xb9a7('0x14'),upload[_0xb9a7('0x31')](_0xb9a7('0x2e')),controller[_0xb9a7('0x33')]);var upload=multer({'storage':multer[_0xb9a7('0x26')]({'destination':function(_0x3f0117,_0x8b7dcc,_0x385a29){_0x385a29(null,path[_0xb9a7('0x27')](config[_0xb9a7('0x28')],_0xb9a7('0x30')));},'filename':function(_0x106e94,_0x569d5e,_0x4c14c4){_0x4c14c4(null,util['format'](_0xb9a7('0x2b'),Date['now'](),_0x569d5e[_0xb9a7('0x2d')]));}})});router['post'](_0xb9a7('0x16'),upload[_0xb9a7('0x31')](_0xb9a7('0x2e')),controller[_0xb9a7('0x34')]);router['post'](_0xb9a7('0x35'),controller[_0xb9a7('0x36')]);const offlineUploadMulter=multer({'storage':multer[_0xb9a7('0x26')]({'destination':function(_0x32ae16,_0x1a3894,_0x32389e){const _0x1e5457=path['join'](config[_0xb9a7('0x28')],'server/files','attachments',_0xb9a7('0x37'));fs_extra['ensureDir'](_0x1e5457,function(){_0x32389e(null,_0x1e5457);});},'filename':function(_0x81a2c,_0x1131f5,_0xf2bff7){const _0x4f2115=_0x1131f5['originalname'][_0xb9a7('0x38')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x31ff6c=path[_0xb9a7('0x39')](_0x4f2115);const _0x2c005c=Date['now']()+'-'+_0x4f2115[_0xb9a7('0x38')](_0x31ff6c,'')+_0x31ff6c;_0xf2bff7(null,_0x2c005c);}})});router[_0xb9a7('0x23')](_0xb9a7('0x3a'),offlineUploadMulter[_0xb9a7('0x3b')](),controller[_0xb9a7('0x3c')]);router[_0xb9a7('0x23')](_0xb9a7('0x18'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x3d')]);router['post'](_0xb9a7('0x1b'),auth[_0xb9a7('0xb')](),controller['addApplications']);router[_0xb9a7('0x23')](_0xb9a7('0x1d'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x3e')]);router['post'](_0xb9a7('0x22'),auth['isAuthenticated'](),controller[_0xb9a7('0x3f')]);router[_0xb9a7('0x40')](_0xb9a7('0x41'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x42')]);router[_0xb9a7('0x43')](_0xb9a7('0x41'),auth['isAuthenticated'](),controller[_0xb9a7('0x44')]);router[_0xb9a7('0x43')](_0xb9a7('0xd'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x45')]);router[_0xb9a7('0x43')](_0xb9a7('0x24'),auth[_0xb9a7('0xb')](),controller['removeAnswers']);router[_0xb9a7('0x43')]('/:id/users',auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x46')]);module[_0xb9a7('0x47')]=router;
\ No newline at end of file
+var _0x318b=['diskStorage','server/files/images/logos/','format','%s-%s','now','originalname','single','file','addLogo','join','root','server/files/images/avatars/','addAvatar','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','server/files','attachments','ensureDir','replace','/:id/offline','offline','addInteraction','addApplications','/:id/users','addAgents','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','getAnswers','/:id/logo','getLogo','/:id/avatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','/:id/proactive_actions','getProactiveActions','getFields','/:id/offline_messages','getOfflineMessages','getAgents','post','create','/:id/canned_answers','addAnswer'];(function(_0x48ffc9,_0x581b31){var _0x1985cb=function(_0x4702d6){while(--_0x4702d6){_0x48ffc9['push'](_0x48ffc9['shift']());}};_0x1985cb(++_0x581b31);}(_0x318b,0x100));var _0xb318=function(_0x3f77de,_0x5a5e5e){_0x3f77de=_0x3f77de-0x0;var _0x5b9158=_0x318b[_0x3f77de];return _0x5b9158;};'use strict';var multer=require(_0xb318('0x0'));var util=require(_0xb318('0x1'));var path=require('path');var timeout=require(_0xb318('0x2'));var express=require(_0xb318('0x3'));var router=express[_0xb318('0x4')]();var fs_extra=require(_0xb318('0x5'));var auth=require(_0xb318('0x6'));var interaction=require(_0xb318('0x7'));var config=require(_0xb318('0x8'));var controller=require('./chatWebsite.controller');router[_0xb318('0x9')]('/',auth[_0xb318('0xa')](),controller[_0xb318('0xb')]);router[_0xb318('0x9')](_0xb318('0xc'),auth[_0xb318('0xa')](),controller['describe']);router[_0xb318('0x9')](_0xb318('0xd'),auth[_0xb318('0xa')](),controller[_0xb318('0xe')]);router[_0xb318('0x9')](_0xb318('0xf'),auth[_0xb318('0xa')](),controller[_0xb318('0x10')]);router[_0xb318('0x9')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0xb318('0x11')]);router['get'](_0xb318('0x12'),controller[_0xb318('0x13')]);router[_0xb318('0x9')](_0xb318('0x14'),controller['getAvatar']);router[_0xb318('0x9')](_0xb318('0x15'),controller[_0xb318('0x16')]);router[_0xb318('0x9')](_0xb318('0x17'),controller[_0xb318('0x18')]);router[_0xb318('0x9')](_0xb318('0x19'),auth[_0xb318('0xa')](),controller[_0xb318('0x1a')]);router[_0xb318('0x9')](_0xb318('0x1b'),controller[_0xb318('0x1c')]);router[_0xb318('0x9')](_0xb318('0x1d'),auth[_0xb318('0xa')](),controller['getApplications']);router[_0xb318('0x9')](_0xb318('0x1e'),auth[_0xb318('0xa')](),controller[_0xb318('0x1f')]);router[_0xb318('0x9')]('/:id/fields',controller[_0xb318('0x20')]);router['get'](_0xb318('0x21'),auth['isAuthenticated'](),controller[_0xb318('0x22')]);router[_0xb318('0x9')]('/:id/users',auth[_0xb318('0xa')](),controller[_0xb318('0x23')]);router[_0xb318('0x24')]('/',auth[_0xb318('0xa')](),controller[_0xb318('0x25')]);router[_0xb318('0x24')](_0xb318('0xf'),auth['isAuthenticated'](),controller['addDisposition']);router['post'](_0xb318('0x26'),auth['isAuthenticated'](),controller[_0xb318('0x27')]);var upload=multer({'storage':multer[_0xb318('0x28')]({'destination':function(_0x3d70a7,_0x2cab25,_0x1cbd41){_0x1cbd41(null,path['join'](config['root'],_0xb318('0x29')));},'filename':function(_0x460abc,_0x3c4880,_0x2be7b8){_0x2be7b8(null,util[_0xb318('0x2a')](_0xb318('0x2b'),Date[_0xb318('0x2c')](),_0x3c4880[_0xb318('0x2d')]));}})});router[_0xb318('0x24')](_0xb318('0x12'),upload[_0xb318('0x2e')](_0xb318('0x2f')),controller[_0xb318('0x30')]);var upload=multer({'storage':multer[_0xb318('0x28')]({'destination':function(_0x3c10d2,_0x5b19be,_0x47f6d7){_0x47f6d7(null,path[_0xb318('0x31')](config[_0xb318('0x32')],_0xb318('0x33')));},'filename':function(_0x54b7bc,_0x5eaaf7,_0x4bbda6){_0x4bbda6(null,util[_0xb318('0x2a')]('%s-%s',Date[_0xb318('0x2c')](),_0x5eaaf7['originalname']));}})});router['post']('/:id/avatar',upload['single'](_0xb318('0x2f')),controller[_0xb318('0x34')]);var upload=multer({'storage':multer[_0xb318('0x28')]({'destination':function(_0x570263,_0x55214c,_0x59d2c1){_0x59d2c1(null,path[_0xb318('0x31')](config['root'],_0xb318('0x33')));},'filename':function(_0x2c93c5,_0x5c8c3e,_0x222b7b){_0x222b7b(null,util[_0xb318('0x2a')](_0xb318('0x2b'),Date[_0xb318('0x2c')](),_0x5c8c3e[_0xb318('0x2d')]));}})});router['post'](_0xb318('0x15'),upload['single']('file'),controller[_0xb318('0x35')]);var upload=multer({'storage':multer[_0xb318('0x28')]({'destination':function(_0x502c06,_0x4dbcad,_0x5e283b){_0x5e283b(null,path['join'](config[_0xb318('0x32')],_0xb318('0x33')));},'filename':function(_0x583e27,_0x4e7696,_0x48dc92){_0x48dc92(null,util[_0xb318('0x2a')](_0xb318('0x2b'),Date[_0xb318('0x2c')](),_0x4e7696[_0xb318('0x2d')]));}})});router['post'](_0xb318('0x17'),upload[_0xb318('0x2e')](_0xb318('0x2f')),controller[_0xb318('0x36')]);router[_0xb318('0x24')](_0xb318('0x37'),controller[_0xb318('0x38')]);const offlineUploadMulter=multer({'storage':multer[_0xb318('0x28')]({'destination':function(_0x1d60f,_0x1be1c4,_0x581909){const _0x4e5cdf=path[_0xb318('0x31')](config[_0xb318('0x32')],_0xb318('0x39'),_0xb318('0x3a'),'offline-chat');fs_extra[_0xb318('0x3b')](_0x4e5cdf,function(){_0x581909(null,_0x4e5cdf);});},'filename':function(_0x3b4ff9,_0x3b9587,_0x2e6daf){const _0x3ca9a5=_0x3b9587[_0xb318('0x2d')][_0xb318('0x3c')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x224607=path['extname'](_0x3ca9a5);const _0x596a66=Date[_0xb318('0x2c')]()+'-'+_0x3ca9a5['replace'](_0x224607,'')+_0x224607;_0x2e6daf(null,_0x596a66);}})});router[_0xb318('0x24')](_0xb318('0x3d'),offlineUploadMulter['any'](),controller[_0xb318('0x3e')]);router[_0xb318('0x24')](_0xb318('0x19'),auth['isAuthenticated'](),controller[_0xb318('0x3f')]);router['post'](_0xb318('0x1d'),auth['isAuthenticated'](),controller[_0xb318('0x40')]);router[_0xb318('0x24')](_0xb318('0x1e'),auth['isAuthenticated'](),controller['addProactiveActions']);router[_0xb318('0x24')](_0xb318('0x41'),auth[_0xb318('0xa')](),controller[_0xb318('0x42')]);router['put'](_0xb318('0xd'),auth['isAuthenticated'](),controller[_0xb318('0x43')]);router[_0xb318('0x44')](_0xb318('0xd'),auth['isAuthenticated'](),controller[_0xb318('0x45')]);router['delete'](_0xb318('0xf'),auth[_0xb318('0xa')](),controller[_0xb318('0x46')]);router['delete'](_0xb318('0x26'),auth[_0xb318('0xa')](),controller[_0xb318('0x47')]);router['delete'](_0xb318('0x41'),auth[_0xb318('0xa')](),controller[_0xb318('0x48')]);module[_0xb318('0x49')]=router;
\ No newline at end of file
index 4a2c43f..3e2a57e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ef4=['ENUM','exports','STRING'];(function(_0x1abcfa,_0x31757b){var _0x5d498c=function(_0x1ed0bc){while(--_0x1ed0bc){_0x1abcfa['push'](_0x1abcfa['shift']());}};_0x5d498c(++_0x31757b);}(_0x0ef4,0xc7));var _0x40ef=function(_0x5eca50,_0xc1e3f8){_0x5eca50=_0x5eca50-0x0;var _0x41fb84=_0x0ef4[_0x5eca50];return _0x41fb84;};'use strict';var Sequelize=require('sequelize');module[_0x40ef('0x0')]={'name':{'type':Sequelize[_0x40ef('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x40ef('0x2')]('AmazonAWS','Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0x40ef('0x1')]},'data2':{'type':Sequelize[_0x40ef('0x1')]}};
\ No newline at end of file
+var _0x4312=['Google','STRING','ENUM'];(function(_0x2cc2ae,_0x5ba439){var _0x4e20fb=function(_0x2b978f){while(--_0x2b978f){_0x2cc2ae['push'](_0x2cc2ae['shift']());}};_0x4e20fb(++_0x5ba439);}(_0x4312,0xaf));var _0x2431=function(_0x5bf19e,_0x18e9ad){_0x5bf19e=_0x5bf19e-0x0;var _0x8304bb=_0x4312[_0x5bf19e];return _0x8304bb;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x2431('0x0')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x2431('0x1')]('AmazonAWS',_0x2431('0x2')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0x2431('0x0')]},'data2':{'type':Sequelize[_0x2431('0x0')]}};
\ No newline at end of file
index c871b7f..843d4e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['update','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','CloudProvider','then','includeAll','include','findAll','catch','show','params','keys','create','body','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0xe1f268,_0x2150ab){var _0x572864=function(_0x4727b0){while(--_0x4727b0){_0xe1f268['push'](_0xe1f268['shift']());}};_0x572864(++_0x2150ab);}(_0x2ef3,0xba));var _0x32ef=function(_0x4ff7b6,_0x3adbb8){_0x4ff7b6=_0x4ff7b6-0x0;var _0x2099f4=_0x2ef3[_0x4ff7b6];return _0x2099f4;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a5106,_0x49d590){_0x49d590=_0x49d590||0xcc;return function(_0x3e98df){if(_0x3e98df){return _0x1a5106[_0x32ef('0x18')](_0x49d590);}return _0x1a5106['status'](_0x49d590)['end']();};}function respondWithResult(_0x19ce1,_0x4d8009){_0x4d8009=_0x4d8009||0xc8;return function(_0x326fce){if(_0x326fce){return _0x19ce1[_0x32ef('0x19')](_0x4d8009)[_0x32ef('0x1a')](_0x326fce);}};}function respondWithFilteredResult(_0x54c7f5,_0x57aff1){return function(_0x55bf0b){if(_0x55bf0b){var _0x531e30=typeof _0x57aff1[_0x32ef('0x1b')]===_0x32ef('0x1c')&&typeof _0x57aff1[_0x32ef('0x1d')]==='undefined';var _0x5d559b=_0x55bf0b[_0x32ef('0x1e')];var _0x1a9476=_0x531e30?0x0:_0x57aff1[_0x32ef('0x1b')];var _0x57863c=_0x531e30?_0x55bf0b[_0x32ef('0x1e')]:_0x57aff1[_0x32ef('0x1b')]+_0x57aff1['limit'];var _0x304505;if(_0x57863c>=_0x5d559b){_0x57863c=_0x5d559b;_0x304505=0xc8;}else{_0x304505=0xce;}_0x54c7f5[_0x32ef('0x19')](_0x304505);return _0x54c7f5[_0x32ef('0x1f')](_0x32ef('0x20'),_0x1a9476+'-'+_0x57863c+'/'+_0x5d559b)[_0x32ef('0x1a')](_0x55bf0b);}return null;};}function patchUpdates(_0x3aec05){return function(_0x4de441){try{jsonpatch[_0x32ef('0x21')](_0x4de441,_0x3aec05,!![]);}catch(_0x5cc3ef){return BPromise[_0x32ef('0x22')](_0x5cc3ef);}return _0x4de441[_0x32ef('0x23')]();};}function saveUpdates(_0x49f2d8,_0x1af371){return function(_0x97780){if(_0x97780){return _0x97780[_0x32ef('0x24')](_0x49f2d8)['then'](function(_0x57f5e5){return _0x57f5e5;});}return null;};}function removeEntity(_0x22f2d7,_0xb30fab){return function(_0x225feb){if(_0x225feb){return _0x225feb['destroy']()['then'](function(){_0x22f2d7[_0x32ef('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a412,_0x278495){return function(_0x14d4b3){if(!_0x14d4b3){_0x51a412[_0x32ef('0x18')](0x194);}return _0x14d4b3;};}function handleError(_0x1dbe98,_0x15ce54){_0x15ce54=_0x15ce54||0x1f4;return function(_0x234175){logger[_0x32ef('0x25')](_0x234175[_0x32ef('0x26')]);if(_0x234175[_0x32ef('0x27')]){delete _0x234175[_0x32ef('0x27')];}_0x1dbe98[_0x32ef('0x19')](_0x15ce54)[_0x32ef('0x28')](_0x234175);};}exports['index']=function(_0xd65fde,_0x2f5d06){var _0x5a04cd={},_0x12de1a={},_0x3c569d={'count':0x0,'rows':[]};var _0x30b250=_[_0x32ef('0x29')](db['CloudProvider'][_0x32ef('0x2a')],function(_0x22bf86){return{'name':_0x22bf86[_0x32ef('0x2b')],'type':_0x22bf86[_0x32ef('0x2c')][_0x32ef('0x2d')]};});_0x12de1a[_0x32ef('0x2e')]=_[_0x32ef('0x29')](_0x30b250,'name');_0x12de1a[_0x32ef('0x2f')]=_['keys'](_0xd65fde[_0x32ef('0x2f')]);_0x12de1a[_0x32ef('0x30')]=_['intersection'](_0x12de1a[_0x32ef('0x2e')],_0x12de1a[_0x32ef('0x2f')]);_0x5a04cd[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x12de1a[_0x32ef('0x2e')],qs['fields'](_0xd65fde['query'][_0x32ef('0x33')]));_0x5a04cd['attributes']=_0x5a04cd[_0x32ef('0x31')][_0x32ef('0x34')]?_0x5a04cd[_0x32ef('0x31')]:_0x12de1a[_0x32ef('0x2e')];if(!_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x35')]('nolimit')){_0x5a04cd['limit']=qs['limit'](_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x1d')]);_0x5a04cd[_0x32ef('0x1b')]=qs['offset'](_0xd65fde['query'][_0x32ef('0x1b')]);}_0x5a04cd[_0x32ef('0x36')]=qs[_0x32ef('0x37')](_0xd65fde['query']['sort']);_0x5a04cd[_0x32ef('0x38')]=qs[_0x32ef('0x30')](_[_0x32ef('0x39')](_0xd65fde[_0x32ef('0x2f')],_0x12de1a[_0x32ef('0x30')]),_0x30b250);if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]){_0x5a04cd[_0x32ef('0x38')]=_[_0x32ef('0x3b')](_0x5a04cd['where'],{'$or':_[_0x32ef('0x29')](_0x30b250,function(_0x36e374){if(_0x36e374[_0x32ef('0x2c')]!=='VIRTUAL'){var _0x365125={};_0x365125[_0x36e374[_0x32ef('0x27')]]={'$like':'%'+_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]+'%'};return _0x365125;}})});}_0x5a04cd=_[_0x32ef('0x3b')]({},_0x5a04cd,_0xd65fde[_0x32ef('0x3c')]);var _0x256c40={'where':_0x5a04cd[_0x32ef('0x38')]};return db[_0x32ef('0x3d')][_0x32ef('0x1e')](_0x256c40)[_0x32ef('0x3e')](function(_0x4615b4){_0x3c569d['count']=_0x4615b4;if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5a04cd[_0x32ef('0x40')]=[{'all':!![]}];}return db[_0x32ef('0x3d')][_0x32ef('0x41')](_0x5a04cd);})[_0x32ef('0x3e')](function(_0x3c0e44){_0x3c569d['rows']=_0x3c0e44;return _0x3c569d;})['then'](respondWithFilteredResult(_0x2f5d06,_0x5a04cd))[_0x32ef('0x42')](handleError(_0x2f5d06,null));};exports[_0x32ef('0x43')]=function(_0x2a33dd,_0x765c63){var _0x5dca14={'raw':!![],'where':{'id':_0x2a33dd[_0x32ef('0x44')]['id']}},_0x2901a1={};_0x2901a1['model']=_[_0x32ef('0x45')](db['CloudProvider'][_0x32ef('0x2a')]);_0x2901a1[_0x32ef('0x2f')]=_[_0x32ef('0x45')](_0x2a33dd[_0x32ef('0x2f')]);_0x2901a1[_0x32ef('0x30')]=_[_0x32ef('0x32')](_0x2901a1[_0x32ef('0x2e')],_0x2901a1[_0x32ef('0x2f')]);_0x5dca14[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x2901a1['model'],qs[_0x32ef('0x33')](_0x2a33dd['query'][_0x32ef('0x33')]));_0x5dca14[_0x32ef('0x31')]=_0x5dca14[_0x32ef('0x31')]['length']?_0x5dca14[_0x32ef('0x31')]:_0x2901a1[_0x32ef('0x2e')];if(_0x2a33dd[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5dca14[_0x32ef('0x40')]=[{'all':!![]}];}_0x5dca14=_[_0x32ef('0x3b')]({},_0x5dca14,_0x2a33dd[_0x32ef('0x3c')]);return db['CloudProvider']['find'](_0x5dca14)[_0x32ef('0x3e')](handleEntityNotFound(_0x765c63,null))[_0x32ef('0x3e')](respondWithResult(_0x765c63,null))[_0x32ef('0x42')](handleError(_0x765c63,null));};exports[_0x32ef('0x46')]=function(_0x209361,_0xd67dc9){return db[_0x32ef('0x3d')][_0x32ef('0x46')](_0x209361[_0x32ef('0x47')],{})[_0x32ef('0x3e')](respondWithResult(_0xd67dc9,0xc9))[_0x32ef('0x42')](handleError(_0xd67dc9,null));};exports[_0x32ef('0x24')]=function(_0x36a65c,_0x4c2534){if(_0x36a65c[_0x32ef('0x47')]['id']){delete _0x36a65c[_0x32ef('0x47')]['id'];}return db[_0x32ef('0x3d')][_0x32ef('0x48')]({'where':{'id':_0x36a65c[_0x32ef('0x44')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x4c2534,null))[_0x32ef('0x3e')](saveUpdates(_0x36a65c[_0x32ef('0x47')],null))[_0x32ef('0x3e')](respondWithResult(_0x4c2534,null))[_0x32ef('0x42')](handleError(_0x4c2534,null));};exports[_0x32ef('0x49')]=function(_0x29d456,_0x272377){return db[_0x32ef('0x3d')][_0x32ef('0x48')]({'where':{'id':_0x29d456[_0x32ef('0x44')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x272377,null))[_0x32ef('0x3e')](removeEntity(_0x272377,null))['catch'](handleError(_0x272377,null));};
\ No newline at end of file
+var _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(_0x111507,_0x394818){var _0x5beafa=function(_0x32922e){while(--_0x32922e){_0x111507['push'](_0x111507['shift']());}};_0x5beafa(++_0x394818);}(_0xdb28,0x106));var _0x8db2=function(_0x799e6d,_0x5a8ae5){_0x799e6d=_0x799e6d-0x0;var _0x4cf139=_0xdb28[_0x799e6d];return _0x4cf139;};'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 69dccc4..0530f14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e14=['exports','define','CloudProvider','cloud_providers','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./cloudProvider.attributes'];(function(_0x3cc609,_0x1be4cf){var _0x468421=function(_0x48dd1e){while(--_0x48dd1e){_0x3cc609['push'](_0x3cc609['shift']());}};_0x468421(++_0x1be4cf);}(_0x8e14,0x130));var _0x48e1=function(_0x236961,_0x42358f){_0x236961=_0x236961-0x0;var _0xe9e52f=_0x8e14[_0x236961];return _0xe9e52f;};'use strict';var _=require(_0x48e1('0x0'));var util=require(_0x48e1('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x48e1('0x2'));var BPromise=require(_0x48e1('0x3'));var rp=require(_0x48e1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x48e1('0x5'));var config=require(_0x48e1('0x6'));var attributes=require(_0x48e1('0x7'));module[_0x48e1('0x8')]=function(_0x4ae2cb,_0x52c313){return _0x4ae2cb[_0x48e1('0x9')](_0x48e1('0xa'),attributes,{'tableName':_0x48e1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fc9=['lodash','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cloudProvider.attributes','exports','define','CloudProvider'];(function(_0x25ac1f,_0x399bab){var _0x1ce5cf=function(_0x1f3c2c){while(--_0x1f3c2c){_0x25ac1f['push'](_0x25ac1f['shift']());}};_0x1ce5cf(++_0x399bab);}(_0x5fc9,0x160));var _0x95fc=function(_0xa3a41b,_0xaff329){_0xa3a41b=_0xa3a41b-0x0;var _0x264dc6=_0x5fc9[_0xa3a41b];return _0x264dc6;};'use strict';var _=require(_0x95fc('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x95fc('0x1'));var moment=require(_0x95fc('0x2'));var BPromise=require(_0x95fc('0x3'));var rp=require(_0x95fc('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x95fc('0x5'));var config=require(_0x95fc('0x6'));var attributes=require(_0x95fc('0x7'));module[_0x95fc('0x8')]=function(_0x155e17,_0x17011d){return _0x155e17[_0x95fc('0x9')](_0x95fc('0xa'),attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 250cd9e..ad6e80d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb91a=['request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','client','http','request','CloudProvider,\x20%s,\x20%s'];(function(_0x53a716,_0x50cf7b){var _0x473415=function(_0x3d547e){while(--_0x3d547e){_0x53a716['push'](_0x53a716['shift']());}};_0x473415(++_0x50cf7b);}(_0xb91a,0xe5));var _0xab91=function(_0x288b73,_0x4d37fd){_0x288b73=_0x288b73-0x0;var _0x33a428=_0xb91a[_0x288b73];return _0x33a428;};'use strict';var _=require('lodash');var util=require(_0xab91('0x0'));var moment=require(_0xab91('0x1'));var BPromise=require(_0xab91('0x2'));var rs=require(_0xab91('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xab91('0x4'))['db'];var utils=require(_0xab91('0x5'));var logger=require('../../config/logger')(_0xab91('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xab91('0x7')][_0xab91('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x56f24d,_0x2ebd86,_0x26e44b){return new BPromise(function(_0x55a554,_0x1748f2){return client[_0xab91('0x9')](_0x56f24d,_0x26e44b)['then'](function(_0x5765fc){logger['info'](_0xab91('0xa'),_0x2ebd86,_0xab91('0xb'));logger[_0xab91('0xc')](_0xab91('0xd'),_0x2ebd86,'request\x20sent',JSON[_0xab91('0xe')](_0x5765fc));if(_0x5765fc[_0xab91('0xf')]){if(_0x5765fc['error'][_0xab91('0x10')]===0x1f4){logger['error'](_0xab91('0xa'),_0x2ebd86,_0x5765fc['error']['message']);return _0x1748f2(_0x5765fc[_0xab91('0xf')]['message']);}logger[_0xab91('0xf')](_0xab91('0xa'),_0x2ebd86,_0x5765fc[_0xab91('0xf')][_0xab91('0x11')]);return _0x55a554(_0x5765fc[_0xab91('0xf')][_0xab91('0x11')]);}else{logger['info'](_0xab91('0xa'),_0x2ebd86,'request\x20sent');_0x55a554(_0x5765fc[_0xab91('0x12')][_0xab91('0x11')]);}})[_0xab91('0x13')](function(_0x32df88){logger['error'](_0xab91('0xa'),_0x2ebd86,_0x32df88);_0x1748f2(_0x32df88);});});}
\ No newline at end of file
+var _0x09df=['rpc','../../config/environment','request','then','info','request\x20sent','debug','error','code','CloudProvider,\x20%s,\x20%s','message','lodash','util','bluebird','../../mysqldb'];(function(_0x1a81ea,_0x397898){var _0x258efb=function(_0xa2b6f7){while(--_0xa2b6f7){_0x1a81ea['push'](_0x1a81ea['shift']());}};_0x258efb(++_0x397898);}(_0x09df,0x164));var _0xf09d=function(_0x5ce3c8,_0x2503bd){_0x5ce3c8=_0x5ce3c8-0x0;var _0xa76867=_0x09df[_0x5ce3c8];return _0xa76867;};'use strict';var _=require(_0xf09d('0x0'));var util=require(_0xf09d('0x1'));var moment=require('moment');var BPromise=require(_0xf09d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf09d('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf09d('0x4'));var config=require(_0xf09d('0x5'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x284a42,_0x48b82f,_0x28c91c){return new BPromise(function(_0x2555c7,_0x2f1810){return client[_0xf09d('0x6')](_0x284a42,_0x28c91c)[_0xf09d('0x7')](function(_0x2a59a8){logger[_0xf09d('0x8')]('CloudProvider,\x20%s,\x20%s',_0x48b82f,_0xf09d('0x9'));logger[_0xf09d('0xa')]('CloudProvider,\x20%s,\x20%s,\x20%s',_0x48b82f,_0xf09d('0x9'),JSON['stringify'](_0x2a59a8));if(_0x2a59a8[_0xf09d('0xb')]){if(_0x2a59a8[_0xf09d('0xb')][_0xf09d('0xc')]===0x1f4){logger[_0xf09d('0xb')](_0xf09d('0xd'),_0x48b82f,_0x2a59a8[_0xf09d('0xb')][_0xf09d('0xe')]);return _0x2f1810(_0x2a59a8[_0xf09d('0xb')][_0xf09d('0xe')]);}logger['error'](_0xf09d('0xd'),_0x48b82f,_0x2a59a8[_0xf09d('0xb')][_0xf09d('0xe')]);return _0x2555c7(_0x2a59a8['error']['message']);}else{logger[_0xf09d('0x8')](_0xf09d('0xd'),_0x48b82f,_0xf09d('0x9'));_0x2555c7(_0x2a59a8['result'][_0xf09d('0xe')]);}})['catch'](function(_0x3614f7){logger[_0xf09d('0xb')](_0xf09d('0xd'),_0x48b82f,_0x3614f7);_0x2f1810(_0x3614f7);});});}
\ No newline at end of file
index 1a57180..4d7abda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd2f=['destroy','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cloudProvider.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xcd2f,0xf8));var _0xfcd2=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0xcd2f[_0x263a74];return _0x2aa86c;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xfcd2('0x0'));var express=require(_0xfcd2('0x1'));var router=express[_0xfcd2('0x2')]();var fs_extra=require(_0xfcd2('0x3'));var auth=require(_0xfcd2('0x4'));var interaction=require(_0xfcd2('0x5'));var config=require(_0xfcd2('0x6'));var controller=require(_0xfcd2('0x7'));router['get']('/',auth[_0xfcd2('0x8')](),controller[_0xfcd2('0x9')]);router[_0xfcd2('0xa')](_0xfcd2('0xb'),auth[_0xfcd2('0x8')](),controller[_0xfcd2('0xc')]);router[_0xfcd2('0xd')]('/',auth[_0xfcd2('0x8')](),controller[_0xfcd2('0xe')]);router[_0xfcd2('0xf')](_0xfcd2('0xb'),auth['isAuthenticated'](),controller[_0xfcd2('0x10')]);router[_0xfcd2('0x11')](_0xfcd2('0xb'),auth[_0xfcd2('0x8')](),controller[_0xfcd2('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xf5ec=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cloudProvider.controller','get','isAuthenticated','index','/:id','show','post','create','update','delete','multer','util','path','express'];(function(_0x396466,_0xe9857b){var _0x5e9ab4=function(_0x362f66){while(--_0x362f66){_0x396466['push'](_0x396466['shift']());}};_0x5e9ab4(++_0xe9857b);}(_0xf5ec,0x165));var _0xcf5e=function(_0x2d5287,_0x2d800e){_0x2d5287=_0x2d5287-0x0;var _0x51ac50=_0xf5ec[_0x2d5287];return _0x51ac50;};'use strict';var multer=require(_0xcf5e('0x0'));var util=require(_0xcf5e('0x1'));var path=require(_0xcf5e('0x2'));var timeout=require('connect-timeout');var express=require(_0xcf5e('0x3'));var router=express[_0xcf5e('0x4')]();var fs_extra=require(_0xcf5e('0x5'));var auth=require(_0xcf5e('0x6'));var interaction=require(_0xcf5e('0x7'));var config=require(_0xcf5e('0x8'));var controller=require(_0xcf5e('0x9'));router[_0xcf5e('0xa')]('/',auth[_0xcf5e('0xb')](),controller[_0xcf5e('0xc')]);router['get'](_0xcf5e('0xd'),auth['isAuthenticated'](),controller[_0xcf5e('0xe')]);router[_0xcf5e('0xf')]('/',auth['isAuthenticated'](),controller[_0xcf5e('0x10')]);router['put'](_0xcf5e('0xd'),auth[_0xcf5e('0xb')](),controller[_0xcf5e('0x11')]);router[_0xcf5e('0x12')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 44e02f6..cf5de40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e82=['exports','STRING','name'];(function(_0x56644d,_0x190f31){var _0x2a50d7=function(_0x2b7757){while(--_0x2b7757){_0x56644d['push'](_0x56644d['shift']());}};_0x2a50d7(++_0x190f31);}(_0x6e82,0x1a7));var _0x26e8=function(_0x4d2552,_0x560684){_0x4d2552=_0x4d2552-0x0;var _0x56761b=_0x6e82[_0x4d2552];return _0x56761b;};'use strict';var Sequelize=require('sequelize');module[_0x26e8('0x0')]={'name':{'type':Sequelize[_0x26e8('0x1')],'unique':_0x26e8('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x26e8('0x1')]},'companyId':{'type':Sequelize[_0x26e8('0x1')]},'website':{'type':Sequelize[_0x26e8('0x1')]},'phone':{'type':Sequelize[_0x26e8('0x1')]},'fax':{'type':Sequelize[_0x26e8('0x1')]},'type':{'type':Sequelize[_0x26e8('0x1')]},'street':{'type':Sequelize[_0x26e8('0x1')]},'postalCode':{'type':Sequelize[_0x26e8('0x1')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x26e8('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x26e8('0x1')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x26e8('0x1')]},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1b4e=['name','sequelize','exports','STRING'];(function(_0x52f330,_0x847772){var _0x5e990c=function(_0x417122){while(--_0x417122){_0x52f330['push'](_0x52f330['shift']());}};_0x5e990c(++_0x847772);}(_0x1b4e,0x1ad));var _0xe1b4=function(_0x2185be,_0x562399){_0x2185be=_0x2185be-0x0;var _0x2f0c4c=_0x1b4e[_0x2185be];return _0x2f0c4c;};'use strict';var Sequelize=require(_0xe1b4('0x0'));module[_0xe1b4('0x1')]={'name':{'type':Sequelize[_0xe1b4('0x2')],'unique':_0xe1b4('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xe1b4('0x2')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0xe1b4('0x2')]},'phone':{'type':Sequelize[_0xe1b4('0x2')]},'fax':{'type':Sequelize[_0xe1b4('0x2')]},'type':{'type':Sequelize[_0xe1b4('0x2')]},'street':{'type':Sequelize[_0xe1b4('0x2')]},'postalCode':{'type':Sequelize[_0xe1b4('0x2')]},'city':{'type':Sequelize[_0xe1b4('0x2')]},'country':{'type':Sequelize[_0xe1b4('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xe1b4('0x2')]},'sStreet':{'type':Sequelize[_0xe1b4('0x2')]},'sPostalCode':{'type':Sequelize[_0xe1b4('0x2')]},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0xe1b4('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3f5dc1e..e1f839a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93d0=['nolimit','order','where','filters','pick','merge','map','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addContacts','CmContact','ids','omit','getContacts','findOne','sort','filter','hasOwnProperty','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','limit','undefined','count','offset','set','Content-Range','json','apply','reject','save','then','destroy','get','Companies','UserProfileResource','error','stack','name','send','CmCompany','describe','model','keys','query','attributes','intersection','fields','length'];(function(_0x33f492,_0x55f21f){var _0x88a130=function(_0x89af66){while(--_0x89af66){_0x33f492['push'](_0x33f492['shift']());}};_0x88a130(++_0x55f21f);}(_0x93d0,0x12c));var _0x093d=function(_0x34519d,_0x19702d){_0x34519d=_0x34519d-0x0;var _0x592fde=_0x93d0[_0x34519d];return _0x592fde;};'use strict';var emlformat=require(_0x093d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x093d('0x1'));var jsonpatch=require(_0x093d('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x093d('0x3'));var Mustache=require(_0x093d('0x4'));var util=require(_0x093d('0x5'));var path=require(_0x093d('0x6'));var sox=require('sox');var csv=require(_0x093d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x093d('0x8'));var _=require('lodash');var squel=require(_0x093d('0x9'));var crypto=require('crypto');var jsforce=require(_0x093d('0xa'));var deskjs=require(_0x093d('0xb'));var toCsv=require('to-csv');var querystring=require(_0x093d('0xc'));var Papa=require(_0x093d('0xd'));var Redis=require(_0x093d('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x093d('0xf'));var hardwareService=require(_0x093d('0x10'));var logger=require(_0x093d('0x11'))('api');var utils=require(_0x093d('0x12'));var config=require(_0x093d('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x093d('0x14'))['db'];function respondWithStatusCode(_0x2d3177,_0x5b0ba4){_0x5b0ba4=_0x5b0ba4||0xcc;return function(_0x5aeba6){if(_0x5aeba6){return _0x2d3177[_0x093d('0x15')](_0x5b0ba4);}return _0x2d3177[_0x093d('0x16')](_0x5b0ba4)[_0x093d('0x17')]();};}function respondWithResult(_0x53577a,_0x1b531b){_0x1b531b=_0x1b531b||0xc8;return function(_0x564233){if(_0x564233){return _0x53577a[_0x093d('0x16')](_0x1b531b)['json'](_0x564233);}};}function respondWithFilteredResult(_0x5eec0b,_0x3896c9){return function(_0x43c053){if(_0x43c053){var _0x3fcd6b=typeof _0x3896c9['offset']==='undefined'&&typeof _0x3896c9[_0x093d('0x18')]===_0x093d('0x19');var _0x5b0d82=_0x43c053[_0x093d('0x1a')];var _0x51861d=_0x3fcd6b?0x0:_0x3896c9[_0x093d('0x1b')];var _0x3d62e0=_0x3fcd6b?_0x43c053['count']:_0x3896c9['offset']+_0x3896c9['limit'];var _0x5a05c1;if(_0x3d62e0>=_0x5b0d82){_0x3d62e0=_0x5b0d82;_0x5a05c1=0xc8;}else{_0x5a05c1=0xce;}_0x5eec0b[_0x093d('0x16')](_0x5a05c1);return _0x5eec0b[_0x093d('0x1c')](_0x093d('0x1d'),_0x51861d+'-'+_0x3d62e0+'/'+_0x5b0d82)[_0x093d('0x1e')](_0x43c053);}return null;};}function patchUpdates(_0x2eceb2){return function(_0x3bd543){try{jsonpatch[_0x093d('0x1f')](_0x3bd543,_0x2eceb2,!![]);}catch(_0x212407){return BPromise[_0x093d('0x20')](_0x212407);}return _0x3bd543[_0x093d('0x21')]();};}function saveUpdates(_0x527114,_0x821d6e){return function(_0x27bff4){if(_0x27bff4){return _0x27bff4['update'](_0x527114)[_0x093d('0x22')](function(_0x5226e6){return _0x5226e6;});}return null;};}function removeEntity(_0x3fe15f,_0x1dcbce){return function(_0x217746){if(_0x217746){return _0x217746[_0x093d('0x23')]()[_0x093d('0x22')](function(){var _0x553263=_0x217746[_0x093d('0x24')]({'plain':!![]});var _0x4dd260=_0x093d('0x25');return db[_0x093d('0x26')][_0x093d('0x23')]({'where':{'type':_0x4dd260,'resourceId':_0x553263['id']}})[_0x093d('0x22')](function(){return _0x217746;});})[_0x093d('0x22')](function(){_0x3fe15f[_0x093d('0x16')](0xcc)[_0x093d('0x17')]();});}};}function handleEntityNotFound(_0x34b42b,_0x29ed71){return function(_0x18617d){if(!_0x18617d){_0x34b42b[_0x093d('0x15')](0x194);}return _0x18617d;};}function handleError(_0x58fb73,_0x24d2f1){_0x24d2f1=_0x24d2f1||0x1f4;return function(_0x3fc621){logger[_0x093d('0x27')](_0x3fc621[_0x093d('0x28')]);if(_0x3fc621[_0x093d('0x29')]){delete _0x3fc621[_0x093d('0x29')];}_0x58fb73[_0x093d('0x16')](_0x24d2f1)[_0x093d('0x2a')](_0x3fc621);};}exports['index']=function(_0x5f036b,_0x3d9b4f){var _0x178078={},_0x9d1661={},_0x199b0d={'count':0x0,'rows':[]};return db[_0x093d('0x2b')][_0x093d('0x2c')]()['then'](function(_0x819084){_0x9d1661[_0x093d('0x2d')]=_[_0x093d('0x2e')](_0x819084);_0x9d1661[_0x093d('0x2f')]=_[_0x093d('0x2e')](_0x5f036b[_0x093d('0x2f')]);_0x9d1661['filters']=_['intersection'](_0x9d1661[_0x093d('0x2d')],_0x9d1661[_0x093d('0x2f')]);_0x178078[_0x093d('0x30')]=_[_0x093d('0x31')](_0x9d1661['model'],qs[_0x093d('0x32')](_0x5f036b['query'][_0x093d('0x32')]));_0x178078[_0x093d('0x30')]=_0x178078[_0x093d('0x30')][_0x093d('0x33')]?_0x178078[_0x093d('0x30')]:_0x9d1661['model'];if(!_0x5f036b['query']['hasOwnProperty'](_0x093d('0x34'))){_0x178078[_0x093d('0x18')]=qs[_0x093d('0x18')](_0x5f036b[_0x093d('0x2f')][_0x093d('0x18')]);_0x178078[_0x093d('0x1b')]=qs[_0x093d('0x1b')](_0x5f036b[_0x093d('0x2f')][_0x093d('0x1b')]);}_0x178078[_0x093d('0x35')]=qs['sort'](_0x5f036b[_0x093d('0x2f')]['sort']);_0x178078[_0x093d('0x36')]=qs[_0x093d('0x37')](_[_0x093d('0x38')](_0x5f036b[_0x093d('0x2f')],_0x9d1661[_0x093d('0x37')]),_0x819084);if(_0x5f036b[_0x093d('0x2f')]['filter']){_0x178078[_0x093d('0x36')]=_[_0x093d('0x39')](_0x178078['where'],{'$or':_[_0x093d('0x3a')](_0x178078['attributes'],function(_0x1558d8){var _0x20c53e={};_0x20c53e[_0x1558d8]={'$like':'%'+_0x5f036b[_0x093d('0x2f')]['filter']+'%'};return _0x20c53e;})});}_0x178078=_[_0x093d('0x39')]({},_0x178078,_0x5f036b[_0x093d('0x3b')]);var _0x4dc196={'where':_0x178078[_0x093d('0x36')]};return db['CmCompany'][_0x093d('0x1a')](_0x4dc196)[_0x093d('0x22')](function(_0x2a7401){_0x199b0d[_0x093d('0x1a')]=_0x2a7401;if(_0x5f036b[_0x093d('0x2f')][_0x093d('0x3c')]){_0x178078[_0x093d('0x3d')]=[{'all':!![]}];}return db['CmCompany'][_0x093d('0x3e')](_0x178078);})['then'](function(_0x11eb9e){_0x199b0d[_0x093d('0x3f')]=_0x11eb9e;return _0x199b0d;})[_0x093d('0x22')](respondWithFilteredResult(_0x3d9b4f,_0x178078))['catch'](handleError(_0x3d9b4f,null));})[_0x093d('0x40')](handleError(_0x3d9b4f,null));};exports[_0x093d('0x41')]=function(_0x246d50,_0x867e09){var _0x115457={'raw':![],'where':{'id':_0x246d50[_0x093d('0x42')]['id']}},_0x33e864={};_0x33e864[_0x093d('0x2d')]=_[_0x093d('0x2e')](db[_0x093d('0x2b')][_0x093d('0x43')]);_0x33e864[_0x093d('0x2f')]=_[_0x093d('0x2e')](_0x246d50['query']);_0x33e864['filters']=_[_0x093d('0x31')](_0x33e864[_0x093d('0x2d')],_0x33e864[_0x093d('0x2f')]);_0x115457['attributes']=_[_0x093d('0x31')](_0x33e864[_0x093d('0x2d')],qs[_0x093d('0x32')](_0x246d50['query'][_0x093d('0x32')]));_0x115457['attributes']=_0x115457[_0x093d('0x30')][_0x093d('0x33')]?_0x115457[_0x093d('0x30')]:_0x33e864[_0x093d('0x2d')];if(_0x246d50['query'][_0x093d('0x3c')]){_0x115457['include']=[{'all':!![]}];}_0x115457=_['merge']({},_0x115457,_0x246d50[_0x093d('0x3b')]);return db[_0x093d('0x2b')][_0x093d('0x44')](_0x115457)[_0x093d('0x22')](handleEntityNotFound(_0x867e09,null))[_0x093d('0x22')](respondWithResult(_0x867e09,null))[_0x093d('0x40')](handleError(_0x867e09,null));};exports[_0x093d('0x45')]=function(_0x51a436,_0x31895a){return db[_0x093d('0x2b')][_0x093d('0x45')](_0x51a436[_0x093d('0x46')],{})[_0x093d('0x22')](function(_0x220283){var _0x5859d4=_0x51a436[_0x093d('0x47')][_0x093d('0x24')]({'plain':!![]});if(!_0x5859d4)throw new Error(_0x093d('0x48'));if(_0x5859d4[_0x093d('0x49')]===_0x093d('0x47')){var _0x548d09=_0x220283[_0x093d('0x24')]({'plain':!![]});var _0x68e9df=_0x093d('0x25');return db[_0x093d('0x4a')][_0x093d('0x44')]({'where':{'name':_0x68e9df,'userProfileId':_0x5859d4[_0x093d('0x4b')]},'raw':!![]})[_0x093d('0x22')](function(_0xb5b582){if(_0xb5b582&&_0xb5b582[_0x093d('0x4c')]===0x0){return db[_0x093d('0x26')]['create']({'name':_0x548d09[_0x093d('0x29')],'resourceId':_0x548d09['id'],'type':_0xb5b582[_0x093d('0x29')],'sectionId':_0xb5b582['id']},{})[_0x093d('0x22')](function(){return _0x220283;});}else{return _0x220283;}})[_0x093d('0x40')](function(_0x14b272){logger[_0x093d('0x27')](_0x093d('0x4d'),_0x14b272);throw _0x14b272;});}return _0x220283;})['then'](respondWithResult(_0x31895a,0xc9))[_0x093d('0x40')](handleError(_0x31895a,null));};exports[_0x093d('0x4e')]=function(_0x1172a9,_0x3712c2){if(_0x1172a9[_0x093d('0x46')]['id']){delete _0x1172a9[_0x093d('0x46')]['id'];}return db['CmCompany'][_0x093d('0x44')]({'where':{'id':_0x1172a9[_0x093d('0x42')]['id']}})[_0x093d('0x22')](handleEntityNotFound(_0x3712c2,null))[_0x093d('0x22')](saveUpdates(_0x1172a9[_0x093d('0x46')],null))[_0x093d('0x22')](respondWithResult(_0x3712c2,null))[_0x093d('0x40')](handleError(_0x3712c2,null));};exports[_0x093d('0x23')]=function(_0x433438,_0x42da24){return db[_0x093d('0x2b')][_0x093d('0x44')]({'where':{'id':_0x433438['params']['id']}})[_0x093d('0x22')](handleEntityNotFound(_0x42da24,null))['then'](removeEntity(_0x42da24,null))[_0x093d('0x40')](handleError(_0x42da24,null));};exports[_0x093d('0x2c')]=function(_0xfa7bc6,_0x4c4311){return db[_0x093d('0x2b')][_0x093d('0x2c')]()[_0x093d('0x22')](respondWithResult(_0x4c4311,null))['catch'](handleError(_0x4c4311,null));};exports[_0x093d('0x4f')]=function(_0x5c7481,_0x2e2704,_0x584c01){return db[_0x093d('0x50')]['find']({'where':{'id':_0x5c7481[_0x093d('0x42')]['id']}})[_0x093d('0x22')](handleEntityNotFound(_0x2e2704,null))[_0x093d('0x22')](function(_0x3e1bfb){if(_0x3e1bfb){return _0x3e1bfb['addContacts'](_0x5c7481[_0x093d('0x46')][_0x093d('0x51')],_[_0x093d('0x52')](_0x5c7481[_0x093d('0x46')],[_0x093d('0x51'),'id'])||{});}})[_0x093d('0x22')](respondWithResult(_0x2e2704,null))[_0x093d('0x40')](handleError(_0x2e2704,null));};exports[_0x093d('0x53')]=function(_0x484efa,_0x415a17,_0x170104){var _0xc53f96={};var _0xc2d9ac={};var _0x2b494c;var _0x25915a;return db['CmCompany'][_0x093d('0x54')]({'where':{'id':_0x484efa['params']['id']}})[_0x093d('0x22')](handleEntityNotFound(_0x415a17,null))[_0x093d('0x22')](function(_0x18d67b){if(_0x18d67b){_0x2b494c=_0x18d67b;_0xc2d9ac[_0x093d('0x2d')]=_[_0x093d('0x2e')](db[_0x093d('0x50')][_0x093d('0x43')]);_0xc2d9ac[_0x093d('0x2f')]=_['keys'](_0x484efa['query']);_0xc2d9ac[_0x093d('0x37')]=_[_0x093d('0x31')](_0xc2d9ac[_0x093d('0x2d')],_0xc2d9ac[_0x093d('0x2f')]);_0xc53f96[_0x093d('0x30')]=_[_0x093d('0x31')](_0xc2d9ac[_0x093d('0x2d')],qs[_0x093d('0x32')](_0x484efa['query']['fields']));_0xc53f96[_0x093d('0x30')]=_0xc53f96['attributes'][_0x093d('0x33')]?_0xc53f96[_0x093d('0x30')]:_0xc2d9ac[_0x093d('0x2d')];_0xc53f96[_0x093d('0x35')]=qs['sort'](_0x484efa[_0x093d('0x2f')][_0x093d('0x55')]);_0xc53f96[_0x093d('0x36')]=qs[_0x093d('0x37')](_[_0x093d('0x38')](_0x484efa[_0x093d('0x2f')],_0xc2d9ac[_0x093d('0x37')]));if(_0x484efa['query']['filter']){_0xc53f96[_0x093d('0x36')]=_['merge'](_0xc53f96['where'],{'$or':_[_0x093d('0x3a')](_0xc53f96[_0x093d('0x30')],function(_0x414ba2){var _0x33f3b8={};_0x33f3b8[_0x414ba2]={'$like':'%'+_0x484efa[_0x093d('0x2f')][_0x093d('0x56')]+'%'};return _0x33f3b8;})});}_0xc53f96=_['merge']({},_0xc53f96,_0x484efa[_0x093d('0x3b')]);return _0x2b494c[_0x093d('0x53')](_0xc53f96);}})[_0x093d('0x22')](function(_0x5b80b9){if(_0x5b80b9){_0x25915a=_0x5b80b9[_0x093d('0x33')];if(!_0x484efa['query'][_0x093d('0x57')](_0x093d('0x34'))){_0xc53f96[_0x093d('0x18')]=qs[_0x093d('0x18')](_0x484efa[_0x093d('0x2f')][_0x093d('0x18')]);_0xc53f96[_0x093d('0x1b')]=qs[_0x093d('0x1b')](_0x484efa[_0x093d('0x2f')][_0x093d('0x1b')]);}return _0x2b494c[_0x093d('0x53')](_0xc53f96);}})['then'](function(_0x383c61){if(_0x383c61){return _0x383c61?{'count':_0x25915a,'rows':_0x383c61}:null;}})[_0x093d('0x22')](respondWithResult(_0x415a17,null))[_0x093d('0x40')](handleError(_0x415a17,null));};
\ No newline at end of file
+var _0xfe63=['destroy','sendStatus','error','stack','name','send','index','CmCompany','describe','model','keys','query','intersection','attributes','fields','length','nolimit','sort','where','filters','pick','filter','merge','map','options','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','CmContact','addContacts','ids','omit','getContacts','findOne','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','get','Companies','UserProfileResource'];(function(_0x308ca1,_0x5ed884){var _0x43ce03=function(_0x22c561){while(--_0x22c561){_0x308ca1['push'](_0x308ca1['shift']());}};_0x43ce03(++_0x5ed884);}(_0xfe63,0x7f));var _0x3fe6=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0xfe63[_0x2c7618];return _0x5ce3f0;};'use strict';var emlformat=require(_0x3fe6('0x0'));var rimraf=require(_0x3fe6('0x1'));var zipdir=require(_0x3fe6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3fe6('0x3'));var moment=require(_0x3fe6('0x4'));var BPromise=require(_0x3fe6('0x5'));var Mustache=require(_0x3fe6('0x6'));var util=require('util');var path=require(_0x3fe6('0x7'));var sox=require(_0x3fe6('0x8'));var csv=require(_0x3fe6('0x9'));var ejs=require(_0x3fe6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3fe6('0xb'));var squel=require(_0x3fe6('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3fe6('0x9'));var querystring=require('querystring');var Papa=require(_0x3fe6('0xd'));var Redis=require(_0x3fe6('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3fe6('0xf'));var hardwareService=require(_0x3fe6('0x10'));var logger=require(_0x3fe6('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x3fe6('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x3fe6('0x13'))['db'];function respondWithStatusCode(_0x390ccd,_0x1a63e7){_0x1a63e7=_0x1a63e7||0xcc;return function(_0x1a2fe6){if(_0x1a2fe6){return _0x390ccd['sendStatus'](_0x1a63e7);}return _0x390ccd[_0x3fe6('0x14')](_0x1a63e7)[_0x3fe6('0x15')]();};}function respondWithResult(_0x15f260,_0x5f4447){_0x5f4447=_0x5f4447||0xc8;return function(_0x4c880f){if(_0x4c880f){return _0x15f260[_0x3fe6('0x14')](_0x5f4447)[_0x3fe6('0x16')](_0x4c880f);}};}function respondWithFilteredResult(_0x59a9ff,_0x1a5e26){return function(_0x496280){if(_0x496280){var _0x1e0743=typeof _0x1a5e26[_0x3fe6('0x17')]===_0x3fe6('0x18')&&typeof _0x1a5e26['limit']===_0x3fe6('0x18');var _0x56205a=_0x496280[_0x3fe6('0x19')];var _0x4a1d88=_0x1e0743?0x0:_0x1a5e26[_0x3fe6('0x17')];var _0x4c56f8=_0x1e0743?_0x496280[_0x3fe6('0x19')]:_0x1a5e26['offset']+_0x1a5e26[_0x3fe6('0x1a')];var _0x818d93;if(_0x4c56f8>=_0x56205a){_0x4c56f8=_0x56205a;_0x818d93=0xc8;}else{_0x818d93=0xce;}_0x59a9ff['status'](_0x818d93);return _0x59a9ff[_0x3fe6('0x1b')](_0x3fe6('0x1c'),_0x4a1d88+'-'+_0x4c56f8+'/'+_0x56205a)[_0x3fe6('0x16')](_0x496280);}return null;};}function patchUpdates(_0x2c18a3){return function(_0x565321){try{jsonpatch[_0x3fe6('0x1d')](_0x565321,_0x2c18a3,!![]);}catch(_0x1b60c2){return BPromise[_0x3fe6('0x1e')](_0x1b60c2);}return _0x565321[_0x3fe6('0x1f')]();};}function saveUpdates(_0x3fe06b,_0x360f03){return function(_0x321a92){if(_0x321a92){return _0x321a92[_0x3fe6('0x20')](_0x3fe06b)['then'](function(_0x5e2337){return _0x5e2337;});}return null;};}function removeEntity(_0x1c2ae3,_0x4fe980){return function(_0x192529){if(_0x192529){return _0x192529['destroy']()[_0x3fe6('0x21')](function(){var _0x55efff=_0x192529[_0x3fe6('0x22')]({'plain':!![]});var _0x757145=_0x3fe6('0x23');return db[_0x3fe6('0x24')][_0x3fe6('0x25')]({'where':{'type':_0x757145,'resourceId':_0x55efff['id']}})['then'](function(){return _0x192529;});})['then'](function(){_0x1c2ae3[_0x3fe6('0x14')](0xcc)[_0x3fe6('0x15')]();});}};}function handleEntityNotFound(_0x305485,_0x2467a2){return function(_0x42ae41){if(!_0x42ae41){_0x305485[_0x3fe6('0x26')](0x194);}return _0x42ae41;};}function handleError(_0x2cc3f7,_0x1de2f6){_0x1de2f6=_0x1de2f6||0x1f4;return function(_0x5519a7){logger[_0x3fe6('0x27')](_0x5519a7[_0x3fe6('0x28')]);if(_0x5519a7[_0x3fe6('0x29')]){delete _0x5519a7['name'];}_0x2cc3f7['status'](_0x1de2f6)[_0x3fe6('0x2a')](_0x5519a7);};}exports[_0x3fe6('0x2b')]=function(_0x9df5f9,_0x9420b4){var _0x467164={},_0x88f899={},_0x579dc5={'count':0x0,'rows':[]};return db[_0x3fe6('0x2c')][_0x3fe6('0x2d')]()['then'](function(_0x557b09){_0x88f899[_0x3fe6('0x2e')]=_[_0x3fe6('0x2f')](_0x557b09);_0x88f899[_0x3fe6('0x30')]=_[_0x3fe6('0x2f')](_0x9df5f9['query']);_0x88f899['filters']=_[_0x3fe6('0x31')](_0x88f899[_0x3fe6('0x2e')],_0x88f899[_0x3fe6('0x30')]);_0x467164[_0x3fe6('0x32')]=_[_0x3fe6('0x31')](_0x88f899[_0x3fe6('0x2e')],qs[_0x3fe6('0x33')](_0x9df5f9[_0x3fe6('0x30')][_0x3fe6('0x33')]));_0x467164[_0x3fe6('0x32')]=_0x467164['attributes'][_0x3fe6('0x34')]?_0x467164[_0x3fe6('0x32')]:_0x88f899['model'];if(!_0x9df5f9[_0x3fe6('0x30')]['hasOwnProperty'](_0x3fe6('0x35'))){_0x467164['limit']=qs[_0x3fe6('0x1a')](_0x9df5f9['query'][_0x3fe6('0x1a')]);_0x467164[_0x3fe6('0x17')]=qs['offset'](_0x9df5f9[_0x3fe6('0x30')]['offset']);}_0x467164['order']=qs['sort'](_0x9df5f9['query'][_0x3fe6('0x36')]);_0x467164[_0x3fe6('0x37')]=qs[_0x3fe6('0x38')](_[_0x3fe6('0x39')](_0x9df5f9[_0x3fe6('0x30')],_0x88f899[_0x3fe6('0x38')]),_0x557b09);if(_0x9df5f9[_0x3fe6('0x30')][_0x3fe6('0x3a')]){_0x467164[_0x3fe6('0x37')]=_[_0x3fe6('0x3b')](_0x467164[_0x3fe6('0x37')],{'$or':_[_0x3fe6('0x3c')](_0x467164['attributes'],function(_0x22d72f){var _0x373f3f={};_0x373f3f[_0x22d72f]={'$like':'%'+_0x9df5f9['query'][_0x3fe6('0x3a')]+'%'};return _0x373f3f;})});}_0x467164=_['merge']({},_0x467164,_0x9df5f9[_0x3fe6('0x3d')]);var _0x1b30db={'where':_0x467164[_0x3fe6('0x37')]};return db[_0x3fe6('0x2c')][_0x3fe6('0x19')](_0x1b30db)['then'](function(_0x1e2a6d){_0x579dc5['count']=_0x1e2a6d;if(_0x9df5f9[_0x3fe6('0x30')][_0x3fe6('0x3e')]){_0x467164[_0x3fe6('0x3f')]=[{'all':!![]}];}return db[_0x3fe6('0x2c')][_0x3fe6('0x40')](_0x467164);})[_0x3fe6('0x21')](function(_0x380dc3){_0x579dc5['rows']=_0x380dc3;return _0x579dc5;})[_0x3fe6('0x21')](respondWithFilteredResult(_0x9420b4,_0x467164))['catch'](handleError(_0x9420b4,null));})[_0x3fe6('0x41')](handleError(_0x9420b4,null));};exports[_0x3fe6('0x42')]=function(_0x47118b,_0x39e0d9){var _0x9c3d30={'raw':![],'where':{'id':_0x47118b[_0x3fe6('0x43')]['id']}},_0x3f5927={};_0x3f5927['model']=_[_0x3fe6('0x2f')](db[_0x3fe6('0x2c')][_0x3fe6('0x44')]);_0x3f5927['query']=_[_0x3fe6('0x2f')](_0x47118b[_0x3fe6('0x30')]);_0x3f5927[_0x3fe6('0x38')]=_['intersection'](_0x3f5927[_0x3fe6('0x2e')],_0x3f5927[_0x3fe6('0x30')]);_0x9c3d30[_0x3fe6('0x32')]=_[_0x3fe6('0x31')](_0x3f5927[_0x3fe6('0x2e')],qs[_0x3fe6('0x33')](_0x47118b['query']['fields']));_0x9c3d30['attributes']=_0x9c3d30[_0x3fe6('0x32')]['length']?_0x9c3d30[_0x3fe6('0x32')]:_0x3f5927[_0x3fe6('0x2e')];if(_0x47118b[_0x3fe6('0x30')][_0x3fe6('0x3e')]){_0x9c3d30['include']=[{'all':!![]}];}_0x9c3d30=_['merge']({},_0x9c3d30,_0x47118b[_0x3fe6('0x3d')]);return db[_0x3fe6('0x2c')][_0x3fe6('0x45')](_0x9c3d30)[_0x3fe6('0x21')](handleEntityNotFound(_0x39e0d9,null))['then'](respondWithResult(_0x39e0d9,null))['catch'](handleError(_0x39e0d9,null));};exports['create']=function(_0x7c14d1,_0x288eb0){return db[_0x3fe6('0x2c')][_0x3fe6('0x46')](_0x7c14d1[_0x3fe6('0x47')],{})[_0x3fe6('0x21')](function(_0x141f7b){var _0x2ddb80=_0x7c14d1[_0x3fe6('0x48')][_0x3fe6('0x22')]({'plain':!![]});if(!_0x2ddb80)throw new Error(_0x3fe6('0x49'));if(_0x2ddb80[_0x3fe6('0x4a')]===_0x3fe6('0x48')){var _0x4f4ed1=_0x141f7b[_0x3fe6('0x22')]({'plain':!![]});var _0xb81a29=_0x3fe6('0x23');return db[_0x3fe6('0x4b')][_0x3fe6('0x45')]({'where':{'name':_0xb81a29,'userProfileId':_0x2ddb80['userProfileId']},'raw':!![]})[_0x3fe6('0x21')](function(_0x4f5f71){if(_0x4f5f71&&_0x4f5f71['autoAssociation']===0x0){return db['UserProfileResource'][_0x3fe6('0x46')]({'name':_0x4f4ed1['name'],'resourceId':_0x4f4ed1['id'],'type':_0x4f5f71['name'],'sectionId':_0x4f5f71['id']},{})['then'](function(){return _0x141f7b;});}else{return _0x141f7b;}})['catch'](function(_0x5e4764){logger[_0x3fe6('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5e4764);throw _0x5e4764;});}return _0x141f7b;})[_0x3fe6('0x21')](respondWithResult(_0x288eb0,0xc9))[_0x3fe6('0x41')](handleError(_0x288eb0,null));};exports[_0x3fe6('0x20')]=function(_0xaa7a47,_0x5d5f57){if(_0xaa7a47['body']['id']){delete _0xaa7a47[_0x3fe6('0x47')]['id'];}return db[_0x3fe6('0x2c')]['find']({'where':{'id':_0xaa7a47[_0x3fe6('0x43')]['id']}})[_0x3fe6('0x21')](handleEntityNotFound(_0x5d5f57,null))[_0x3fe6('0x21')](saveUpdates(_0xaa7a47[_0x3fe6('0x47')],null))[_0x3fe6('0x21')](respondWithResult(_0x5d5f57,null))[_0x3fe6('0x41')](handleError(_0x5d5f57,null));};exports['destroy']=function(_0x5f146d,_0x533aae){return db[_0x3fe6('0x2c')][_0x3fe6('0x45')]({'where':{'id':_0x5f146d[_0x3fe6('0x43')]['id']}})[_0x3fe6('0x21')](handleEntityNotFound(_0x533aae,null))[_0x3fe6('0x21')](removeEntity(_0x533aae,null))[_0x3fe6('0x41')](handleError(_0x533aae,null));};exports[_0x3fe6('0x2d')]=function(_0x39da92,_0x1bf462){return db[_0x3fe6('0x2c')][_0x3fe6('0x2d')]()[_0x3fe6('0x21')](respondWithResult(_0x1bf462,null))[_0x3fe6('0x41')](handleError(_0x1bf462,null));};exports['addContacts']=function(_0x3ed47a,_0x53bb00,_0x2409d2){return db[_0x3fe6('0x4c')]['find']({'where':{'id':_0x3ed47a[_0x3fe6('0x43')]['id']}})[_0x3fe6('0x21')](handleEntityNotFound(_0x53bb00,null))[_0x3fe6('0x21')](function(_0x567bad){if(_0x567bad){return _0x567bad[_0x3fe6('0x4d')](_0x3ed47a[_0x3fe6('0x47')][_0x3fe6('0x4e')],_[_0x3fe6('0x4f')](_0x3ed47a[_0x3fe6('0x47')],[_0x3fe6('0x4e'),'id'])||{});}})[_0x3fe6('0x21')](respondWithResult(_0x53bb00,null))[_0x3fe6('0x41')](handleError(_0x53bb00,null));};exports[_0x3fe6('0x50')]=function(_0x13db17,_0x3fba9e,_0x2e7b5e){var _0x5379a7={};var _0x299a93={};var _0xd8b892;var _0x4cc042;return db[_0x3fe6('0x2c')][_0x3fe6('0x51')]({'where':{'id':_0x13db17['params']['id']}})[_0x3fe6('0x21')](handleEntityNotFound(_0x3fba9e,null))[_0x3fe6('0x21')](function(_0x276be5){if(_0x276be5){_0xd8b892=_0x276be5;_0x299a93[_0x3fe6('0x2e')]=_[_0x3fe6('0x2f')](db[_0x3fe6('0x4c')]['rawAttributes']);_0x299a93[_0x3fe6('0x30')]=_[_0x3fe6('0x2f')](_0x13db17[_0x3fe6('0x30')]);_0x299a93[_0x3fe6('0x38')]=_[_0x3fe6('0x31')](_0x299a93['model'],_0x299a93[_0x3fe6('0x30')]);_0x5379a7[_0x3fe6('0x32')]=_[_0x3fe6('0x31')](_0x299a93[_0x3fe6('0x2e')],qs[_0x3fe6('0x33')](_0x13db17[_0x3fe6('0x30')][_0x3fe6('0x33')]));_0x5379a7['attributes']=_0x5379a7[_0x3fe6('0x32')][_0x3fe6('0x34')]?_0x5379a7[_0x3fe6('0x32')]:_0x299a93[_0x3fe6('0x2e')];_0x5379a7['order']=qs[_0x3fe6('0x36')](_0x13db17[_0x3fe6('0x30')][_0x3fe6('0x36')]);_0x5379a7['where']=qs['filters'](_['pick'](_0x13db17[_0x3fe6('0x30')],_0x299a93[_0x3fe6('0x38')]));if(_0x13db17[_0x3fe6('0x30')][_0x3fe6('0x3a')]){_0x5379a7[_0x3fe6('0x37')]=_[_0x3fe6('0x3b')](_0x5379a7[_0x3fe6('0x37')],{'$or':_['map'](_0x5379a7[_0x3fe6('0x32')],function(_0x354eae){var _0x32002a={};_0x32002a[_0x354eae]={'$like':'%'+_0x13db17[_0x3fe6('0x30')][_0x3fe6('0x3a')]+'%'};return _0x32002a;})});}_0x5379a7=_[_0x3fe6('0x3b')]({},_0x5379a7,_0x13db17[_0x3fe6('0x3d')]);return _0xd8b892['getContacts'](_0x5379a7);}})[_0x3fe6('0x21')](function(_0x2ae03b){if(_0x2ae03b){_0x4cc042=_0x2ae03b[_0x3fe6('0x34')];if(!_0x13db17['query']['hasOwnProperty'](_0x3fe6('0x35'))){_0x5379a7['limit']=qs[_0x3fe6('0x1a')](_0x13db17[_0x3fe6('0x30')]['limit']);_0x5379a7[_0x3fe6('0x17')]=qs[_0x3fe6('0x17')](_0x13db17[_0x3fe6('0x30')]['offset']);}return _0xd8b892[_0x3fe6('0x50')](_0x5379a7);}})[_0x3fe6('0x21')](function(_0x2db270){if(_0x2db270){return _0x2db270?{'count':_0x4cc042,'rows':_0x2db270}:null;}})['then'](respondWithResult(_0x3fba9e,null))[_0x3fe6('0x41')](handleError(_0x3fba9e,null));};
\ No newline at end of file
index 83f70cf..70a338d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x592c=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmCompany.attributes','exports','define','cm_companies','lodash','util','../../config/logger'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x592c,0xc1));var _0xc592=function(_0x8b3e,_0x2f393e){_0x8b3e=_0x8b3e-0x0;var _0x1115c5=_0x592c[_0x8b3e];return _0x1115c5;};'use strict';var _=require(_0xc592('0x0'));var util=require(_0xc592('0x1'));var logger=require(_0xc592('0x2'))(_0xc592('0x3'));var moment=require(_0xc592('0x4'));var BPromise=require(_0xc592('0x5'));var rp=require(_0xc592('0x6'));var fs=require('fs');var path=require(_0xc592('0x7'));var rimraf=require(_0xc592('0x8'));var config=require(_0xc592('0x9'));var attributes=require(_0xc592('0xa'));module[_0xc592('0xb')]=function(_0x29fd6e,_0x1c5670){return _0x29fd6e[_0xc592('0xc')]('CmCompany',attributes,{'tableName':_0xc592('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1766=['../../config/logger','api','moment','bluebird','request-promise','rimraf','./cmCompany.attributes','exports','define','CmCompany','cm_companies','util'];(function(_0x41dcb1,_0x16b808){var _0x3c6b17=function(_0x5bbb6e){while(--_0x5bbb6e){_0x41dcb1['push'](_0x41dcb1['shift']());}};_0x3c6b17(++_0x16b808);}(_0x1766,0x15b));var _0x6176=function(_0x838336,_0x5d8b02){_0x838336=_0x838336-0x0;var _0x3c1f09=_0x1766[_0x838336];return _0x3c1f09;};'use strict';var _=require('lodash');var util=require(_0x6176('0x0'));var logger=require(_0x6176('0x1'))(_0x6176('0x2'));var moment=require(_0x6176('0x3'));var BPromise=require(_0x6176('0x4'));var rp=require(_0x6176('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6176('0x6'));var config=require('../../config/environment');var attributes=require(_0x6176('0x7'));module[_0x6176('0x8')]=function(_0x1ed387,_0x34b011){return _0x1ed387[_0x6176('0x9')](_0x6176('0xa'),attributes,{'tableName':_0x6176('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1104b73..906b24c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb47=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','error','message','result','catch'];(function(_0x5c9865,_0x1a299a){var _0x54c22b=function(_0x538537){while(--_0x538537){_0x5c9865['push'](_0x5c9865['shift']());}};_0x54c22b(++_0x1a299a);}(_0xcb47,0x1a4));var _0x7cb4=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xcb47[_0x9df060];return _0x338dfe;};'use strict';var _=require(_0x7cb4('0x0'));var util=require(_0x7cb4('0x1'));var moment=require(_0x7cb4('0x2'));var BPromise=require(_0x7cb4('0x3'));var rs=require(_0x7cb4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7cb4('0x5'))['db'];var utils=require(_0x7cb4('0x6'));var logger=require(_0x7cb4('0x7'))('rpc');var config=require(_0x7cb4('0x8'));var jayson=require(_0x7cb4('0x9'));var client=jayson[_0x7cb4('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2b316e,_0x3ee5a2,_0x4150cc){return new BPromise(function(_0x453112,_0x15e3a4){return client['request'](_0x2b316e,_0x4150cc)[_0x7cb4('0xb')](function(_0x13be04){logger[_0x7cb4('0xc')](_0x7cb4('0xd'),_0x3ee5a2,_0x7cb4('0xe'));logger[_0x7cb4('0xf')](_0x7cb4('0x10'),_0x3ee5a2,_0x7cb4('0xe'),JSON['stringify'](_0x13be04));if(_0x13be04[_0x7cb4('0x11')]){if(_0x13be04[_0x7cb4('0x11')]['code']===0x1f4){logger[_0x7cb4('0x11')](_0x7cb4('0xd'),_0x3ee5a2,_0x13be04[_0x7cb4('0x11')][_0x7cb4('0x12')]);return _0x15e3a4(_0x13be04[_0x7cb4('0x11')][_0x7cb4('0x12')]);}logger[_0x7cb4('0x11')](_0x7cb4('0xd'),_0x3ee5a2,_0x13be04[_0x7cb4('0x11')][_0x7cb4('0x12')]);return _0x453112(_0x13be04[_0x7cb4('0x11')][_0x7cb4('0x12')]);}else{logger[_0x7cb4('0xc')]('CmCompany,\x20%s,\x20%s',_0x3ee5a2,'request\x20sent');_0x453112(_0x13be04[_0x7cb4('0x13')][_0x7cb4('0x12')]);}})[_0x7cb4('0x14')](function(_0x35f506){logger[_0x7cb4('0x11')](_0x7cb4('0xd'),_0x3ee5a2,_0x35f506);_0x15e3a4(_0x35f506);});});}
\ No newline at end of file
+var _0x836e=['rpc','../../config/environment','jayson/promise','http','request','info','CmCompany,\x20%s,\x20%s','request\x20sent','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger'];(function(_0x1756e5,_0x12c7cc){var _0x5a0f78=function(_0x24df8e){while(--_0x24df8e){_0x1756e5['push'](_0x1756e5['shift']());}};_0x5a0f78(++_0x12c7cc);}(_0x836e,0x162));var _0xe836=function(_0x628eee,_0x3f3fba){_0x628eee=_0x628eee-0x0;var _0x447718=_0x836e[_0x628eee];return _0x447718;};'use strict';var _=require(_0xe836('0x0'));var util=require('util');var moment=require(_0xe836('0x1'));var BPromise=require(_0xe836('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe836('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe836('0x4'));var logger=require(_0xe836('0x5'))(_0xe836('0x6'));var config=require(_0xe836('0x7'));var jayson=require(_0xe836('0x8'));var client=jayson['client'][_0xe836('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x41f3f4,_0x18ebca,_0x5abeb3){return new BPromise(function(_0x1626bd,_0x1eba52){return client[_0xe836('0xa')](_0x41f3f4,_0x5abeb3)['then'](function(_0x7bae78){logger[_0xe836('0xb')](_0xe836('0xc'),_0x18ebca,_0xe836('0xd'));logger['debug'](_0xe836('0xe'),_0x18ebca,'request\x20sent',JSON[_0xe836('0xf')](_0x7bae78));if(_0x7bae78[_0xe836('0x10')]){if(_0x7bae78['error']['code']===0x1f4){logger[_0xe836('0x10')](_0xe836('0xc'),_0x18ebca,_0x7bae78[_0xe836('0x10')][_0xe836('0x11')]);return _0x1eba52(_0x7bae78[_0xe836('0x10')][_0xe836('0x11')]);}logger[_0xe836('0x10')]('CmCompany,\x20%s,\x20%s',_0x18ebca,_0x7bae78[_0xe836('0x10')][_0xe836('0x11')]);return _0x1626bd(_0x7bae78[_0xe836('0x10')][_0xe836('0x11')]);}else{logger['info'](_0xe836('0xc'),_0x18ebca,_0xe836('0xd'));_0x1626bd(_0x7bae78[_0xe836('0x12')][_0xe836('0x11')]);}})[_0xe836('0x13')](function(_0x54bf29){logger[_0xe836('0x10')]('CmCompany,\x20%s,\x20%s',_0x18ebca,_0x54bf29);_0x1eba52(_0x54bf29);});});}
\ No newline at end of file
index 6129626..cc11209 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb97=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','isAuthenticated','index','get','describe','/:id','show','/:id/contacts','getContacts','post','addContacts','put','destroy','multer','util'];(function(_0x577983,_0x4c80dc){var _0x5d4817=function(_0x19f58e){while(--_0x19f58e){_0x577983['push'](_0x577983['shift']());}};_0x5d4817(++_0x4c80dc);}(_0xfb97,0x16e));var _0x7fb9=function(_0x4b7f28,_0x27d23a){_0x4b7f28=_0x4b7f28-0x0;var _0xf5b553=_0xfb97[_0x4b7f28];return _0xf5b553;};'use strict';var multer=require(_0x7fb9('0x0'));var util=require(_0x7fb9('0x1'));var path=require(_0x7fb9('0x2'));var timeout=require(_0x7fb9('0x3'));var express=require(_0x7fb9('0x4'));var router=express[_0x7fb9('0x5')]();var fs_extra=require(_0x7fb9('0x6'));var auth=require(_0x7fb9('0x7'));var interaction=require(_0x7fb9('0x8'));var config=require(_0x7fb9('0x9'));var controller=require(_0x7fb9('0xa'));router['get']('/',auth[_0x7fb9('0xb')](),controller[_0x7fb9('0xc')]);router[_0x7fb9('0xd')]('/describe',auth[_0x7fb9('0xb')](),controller[_0x7fb9('0xe')]);router[_0x7fb9('0xd')](_0x7fb9('0xf'),auth['isAuthenticated'](),controller[_0x7fb9('0x10')]);router[_0x7fb9('0xd')](_0x7fb9('0x11'),auth[_0x7fb9('0xb')](),controller[_0x7fb9('0x12')]);router[_0x7fb9('0x13')]('/',auth[_0x7fb9('0xb')](),controller['create']);router[_0x7fb9('0x13')](_0x7fb9('0x11'),auth['isAuthenticated'](),controller[_0x7fb9('0x14')]);router[_0x7fb9('0x15')](_0x7fb9('0xf'),auth[_0x7fb9('0xb')](),controller['update']);router['delete'](_0x7fb9('0xf'),auth['isAuthenticated'](),controller[_0x7fb9('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xa8b0=['/describe','describe','/:id','/:id/contacts','post','create','update','delete','destroy','exports','util','path','connect-timeout','express','../../components/interaction/service','./cmCompany.controller','get','isAuthenticated','index'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa8b0,0x1bf));var _0x0a8b=function(_0x1956c9,_0x2ad6b4){_0x1956c9=_0x1956c9-0x0;var _0x499d4=_0xa8b0[_0x1956c9];return _0x499d4;};'use strict';var multer=require('multer');var util=require(_0x0a8b('0x0'));var path=require(_0x0a8b('0x1'));var timeout=require(_0x0a8b('0x2'));var express=require(_0x0a8b('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0a8b('0x4'));var config=require('../../config/environment');var controller=require(_0x0a8b('0x5'));router[_0x0a8b('0x6')]('/',auth[_0x0a8b('0x7')](),controller[_0x0a8b('0x8')]);router['get'](_0x0a8b('0x9'),auth[_0x0a8b('0x7')](),controller[_0x0a8b('0xa')]);router[_0x0a8b('0x6')](_0x0a8b('0xb'),auth[_0x0a8b('0x7')](),controller['show']);router['get'](_0x0a8b('0xc'),auth[_0x0a8b('0x7')](),controller['getContacts']);router[_0x0a8b('0xd')]('/',auth[_0x0a8b('0x7')](),controller[_0x0a8b('0xe')]);router['post'](_0x0a8b('0xc'),auth[_0x0a8b('0x7')](),controller['addContacts']);router['put'](_0x0a8b('0xb'),auth['isAuthenticated'](),controller[_0x0a8b('0xf')]);router[_0x0a8b('0x10')](_0x0a8b('0xb'),auth['isAuthenticated'](),controller[_0x0a8b('0x11')]);module[_0x0a8b('0x12')]=router;
\ No newline at end of file
index 0483671..a728caa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf33e=['exports','STRING','TEXT','INTEGER','UNSIGNED','DATE','lodash'];(function(_0x327535,_0x2be9b2){var _0x4ac8b3=function(_0x1c079e){while(--_0x1c079e){_0x327535['push'](_0x327535['shift']());}};_0x4ac8b3(++_0x2be9b2);}(_0xf33e,0x92));var _0xef33=function(_0x427a00,_0x3c21c5){_0x427a00=_0x427a00-0x0;var _0x3f00e3=_0xf33e[_0x427a00];return _0x3f00e3;};'use strict';var _=require(_0xef33('0x0'));var Sequelize=require('sequelize');module[_0xef33('0x1')]={'firstName':{'type':Sequelize[_0xef33('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0xef33('0x2')]},'street':{'type':Sequelize[_0xef33('0x2')]},'postalCode':{'type':Sequelize[_0xef33('0x2')]},'city':{'type':Sequelize[_0xef33('0x2')]},'country':{'type':Sequelize[_0xef33('0x2')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xef33('0x3')]},'phone':{'type':Sequelize[_0xef33('0x2')]},'mobile':{'type':Sequelize[_0xef33('0x2')]},'fax':{'type':Sequelize[_0xef33('0x2')]},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0xef33('0x2')]},'facebook':{'type':Sequelize[_0xef33('0x2')]},'fb_data':{'type':Sequelize[_0xef33('0x2')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0xef33('0x2')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize[_0xef33('0x2')]},'telegram':{'type':Sequelize[_0xef33('0x2')]},'UserId':{'type':Sequelize[_0xef33('0x4')]},'priority':{'type':Sequelize[_0xef33('0x4')](0x2)[_0xef33('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xef33('0x6')],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0x24ef=['UNSIGNED','NOW','lodash','sequelize','exports','STRING','TEXT'];(function(_0x4b4739,_0x9b3da9){var _0x2f1495=function(_0x44605f){while(--_0x44605f){_0x4b4739['push'](_0x4b4739['shift']());}};_0x2f1495(++_0x9b3da9);}(_0x24ef,0x1bb));var _0xf24e=function(_0xc8854c,_0x6afd14){_0xc8854c=_0xc8854c-0x0;var _0x22e87b=_0x24ef[_0xc8854c];return _0x22e87b;};'use strict';var _=require(_0xf24e('0x0'));var Sequelize=require(_0xf24e('0x1'));module[_0xf24e('0x2')]={'firstName':{'type':Sequelize[_0xf24e('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0xf24e('0x3')]},'street':{'type':Sequelize[_0xf24e('0x3')]},'postalCode':{'type':Sequelize[_0xf24e('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf24e('0x4')]},'phone':{'type':Sequelize[_0xf24e('0x3')]},'mobile':{'type':Sequelize[_0xf24e('0x3')]},'fax':{'type':Sequelize[_0xf24e('0x3')]},'email':{'type':Sequelize[_0xf24e('0x3')]},'url':{'type':Sequelize[_0xf24e('0x3')]},'facebook':{'type':Sequelize[_0xf24e('0x3')]},'fb_data':{'type':Sequelize[_0xf24e('0x3')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize[_0xf24e('0x3')]},'teams':{'type':Sequelize[_0xf24e('0x3')]},'viber':{'type':Sequelize[_0xf24e('0x3')]},'line':{'type':Sequelize[_0xf24e('0x3')]},'wechat':{'type':Sequelize[_0xf24e('0x3')]},'telegram':{'type':Sequelize[_0xf24e('0x3')]},'UserId':{'type':Sequelize['INTEGER']},'priority':{'type':Sequelize['INTEGER'](0x2)[_0xf24e('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0xf24e('0x6')]}};
\ No newline at end of file
index 8520dcc..1f5dc5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a5d=['MailMessage','SmsInteraction','SmsMessage','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','FaxQueueReport','OpenchannelQueueReport','WhatsappMessage','WhatsappQueueReport','join','bulkCreate','each','duplicates','$or','findOrCreate','show','$and','format','cf_%d','omit','table','setFields','id\x20=\x20?','toParam','phone','rawAttributes','getTags','nolimit','setTags','ids','getHoppers','options','includeAll','include','rows','getHopperHistories','CmHopperHistory','ContactId','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','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','No\x20phone\x20column\x20specified','firstName','root','server/files/tmp','file','filename','chmodSync','child_process','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','upload','createReadStream','path','meta','import','binding','fork','stringify','start\x20child\x20process\x20correctly!','pid','error\x20child\x20process','getJourney','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','channel','includes','toLowerCase','Invalid\x20channel','range','parse','Invalid\x20date\x20for\x20range\x20from\x20filter','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','uniqueid','source','destination','callerid','starttime','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','findAndCountAll','Account','closed','closedAt','note','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingMessage','mail','substatus','externalUrl','threadId','startCase','Interaction','flatten','reverse','slice','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','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','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','status','json','offset','limit','undefined','count','Content-Range','save','then','end','sendStatus','error','stack','name','send','index','CmContact','describe','keys','length','startsWith','cf_','push','CmCustomField','findOne','trimStart','all','fieldType','model','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','select','field','color','from','cm_contacts','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','expr','search','sqlOperator','conditions','find','Tag','value','split','map','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','and','uc.UserId\x20=\x20?','dateOfBirth','datetime','castTo','DATE','type','text','start','filter','isNil','Contact','isEmpty','forEach','ListId','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','tag','isArray','replace','getFullTextValue','isNumeric','c.fax\x20LIKE\x20?','isEmail','c.lastName\x20LIKE\x20?','c.email\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','SELECT','clone','DESC','resolve','role','agent','User','getLists','c.ListId\x20IS\x20NULL','sequelize','toString','keyBy','merge','c.lastName','c.phone','c.fax','c.email','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','TagIds','Tags','catch','destroy','params','tags','columnName','displayName','alias','values','body','findAll','get','mergeWith','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','create','ChatMessage','update','ChatOfflineMessage','MailInteraction'];(function(_0x225074,_0x1abb16){var _0x3fb50c=function(_0xf22c61){while(--_0xf22c61){_0x225074['push'](_0x225074['shift']());}};_0x3fb50c(++_0x1abb16);}(_0x1a5d,0x7f));var _0xd1a5=function(_0x8fa676,_0xbcf1a3){_0x8fa676=_0x8fa676-0x0;var _0x51be63=_0x1a5d[_0x8fa676];return _0x51be63;};'use strict';var emlformat=require(_0xd1a5('0x0'));var rimraf=require(_0xd1a5('0x1'));var zipdir=require(_0xd1a5('0x2'));var jsonpatch=require(_0xd1a5('0x3'));var rp=require(_0xd1a5('0x4'));var moment=require(_0xd1a5('0x5'));var BPromise=require(_0xd1a5('0x6'));var Mustache=require(_0xd1a5('0x7'));var util=require(_0xd1a5('0x8'));var path=require('path');var sox=require(_0xd1a5('0x9'));var csv=require(_0xd1a5('0xa'));var ejs=require(_0xd1a5('0xb'));var fs=require('fs');var fs_extra=require(_0xd1a5('0xc'));var _=require(_0xd1a5('0xd'));var squel=require(_0xd1a5('0xe'));var crypto=require(_0xd1a5('0xf'));var jsforce=require(_0xd1a5('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xd1a5('0xa'));var querystring=require(_0xd1a5('0x11'));var Papa=require(_0xd1a5('0x12'));var Redis=require(_0xd1a5('0x13'));var authService=require(_0xd1a5('0x14'));var qs=require(_0xd1a5('0x15'));var as=require(_0xd1a5('0x16'));var hardwareService=require(_0xd1a5('0x17'));var logger=require('../../config/logger')(_0xd1a5('0x18'));var utils=require('../../config/utils');var config=require(_0xd1a5('0x19'));var licenseUtil=require(_0xd1a5('0x1a'));var db=require(_0xd1a5('0x1b'))['db'];config[_0xd1a5('0x1c')]=_[_0xd1a5('0x1d')](config[_0xd1a5('0x1c')],{'host':_0xd1a5('0x1e'),'port':0x18eb});var socket=require(_0xd1a5('0x1f'))(new Redis(config['redis']));require(_0xd1a5('0x20'))[_0xd1a5('0x21')](socket);function respondWithStatusCode(_0x276019,_0xec1d2a){_0xec1d2a=_0xec1d2a||0xcc;return function(_0x1e28c3){if(_0x1e28c3){return _0x276019['sendStatus'](_0xec1d2a);}return _0x276019[_0xd1a5('0x22')](_0xec1d2a)['end']();};}function respondWithResult(_0x395b87,_0x405643){_0x405643=_0x405643||0xc8;return function(_0x17caa6){if(_0x17caa6){return _0x395b87[_0xd1a5('0x22')](_0x405643)[_0xd1a5('0x23')](_0x17caa6);}};}function respondWithFilteredResult(_0x1536f5,_0x2f9509){return function(_0x53cc11){if(_0x53cc11){var _0x5be5dd=typeof _0x2f9509[_0xd1a5('0x24')]==='undefined'&&typeof _0x2f9509[_0xd1a5('0x25')]===_0xd1a5('0x26');var _0x557bcd=_0x53cc11['count'];var _0x4f9504=_0x5be5dd?0x0:_0x2f9509[_0xd1a5('0x24')];var _0x20df0f=_0x5be5dd?_0x53cc11[_0xd1a5('0x27')]:_0x2f9509[_0xd1a5('0x24')]+_0x2f9509[_0xd1a5('0x25')];var _0x2e997f;if(_0x20df0f>=_0x557bcd){_0x20df0f=_0x557bcd;_0x2e997f=0xc8;}else{_0x2e997f=0xce;}_0x1536f5['status'](_0x2e997f);return _0x1536f5['set'](_0xd1a5('0x28'),_0x4f9504+'-'+_0x20df0f+'/'+_0x557bcd)[_0xd1a5('0x23')](_0x53cc11);}return null;};}function patchUpdates(_0x4306e3){return function(_0x85eaa){try{jsonpatch['apply'](_0x85eaa,_0x4306e3,!![]);}catch(_0x2ad43f){return BPromise['reject'](_0x2ad43f);}return _0x85eaa[_0xd1a5('0x29')]();};}function saveUpdates(_0xdf8e68,_0x5c8c94){return function(_0x25f45e){if(_0x25f45e){return _0x25f45e['update'](_0xdf8e68)['then'](function(_0x31ce11){return _0x31ce11;});}return null;};}function removeEntity(_0x82b48b,_0x420fe5){return function(_0x3df357){if(_0x3df357){return _0x3df357['destroy']()[_0xd1a5('0x2a')](function(){_0x82b48b[_0xd1a5('0x22')](0xcc)[_0xd1a5('0x2b')]();});}};}function handleEntityNotFound(_0x8e6b36,_0x2d129f){return function(_0x4cefaf){if(!_0x4cefaf){_0x8e6b36[_0xd1a5('0x2c')](0x194);}return _0x4cefaf;};}function handleError(_0x1f2492,_0x1e59e6){_0x1e59e6=_0x1e59e6||0x1f4;return function(_0x2d6056){logger[_0xd1a5('0x2d')](_0x2d6056[_0xd1a5('0x2e')]);if(_0x2d6056[_0xd1a5('0x2f')]){delete _0x2d6056[_0xd1a5('0x2f')];}_0x1f2492[_0xd1a5('0x22')](_0x1e59e6)[_0xd1a5('0x30')](_0x2d6056);};}exports[_0xd1a5('0x31')]=function(_0x20d613,_0x24dfcd){var _0x40da1b={},_0x5a5d18={},_0x1dd368={'count':0x0,'rows':[]};return db[_0xd1a5('0x32')][_0xd1a5('0x33')]()[_0xd1a5('0x2a')](function(_0x197bff){var _0x55f85a=[];for(var _0x28cf48=0x0;_0x28cf48<Object[_0xd1a5('0x34')](_0x197bff)[_0xd1a5('0x35')];_0x28cf48++){var _0x42f74a=Object[_0xd1a5('0x34')](_0x197bff)[_0x28cf48];if(_[_0xd1a5('0x36')](_0x42f74a,_0xd1a5('0x37'))){_0x55f85a[_0xd1a5('0x38')](db[_0xd1a5('0x39')][_0xd1a5('0x3a')]({'where':{'id':_[_0xd1a5('0x3b')](_0x42f74a,_0xd1a5('0x37'))},'raw':!![]}));}}return BPromise[_0xd1a5('0x3c')](_0x55f85a)[_0xd1a5('0x2a')](function(_0x375c0b){for(var _0x2a2964=0x0;_0x2a2964<_0x375c0b[_0xd1a5('0x35')];_0x2a2964++){if(_0x375c0b[_0x2a2964]){var _0x4cfdd4=_0xd1a5('0x37')+_0x375c0b[_0x2a2964]['id'];var _0x3ab2f9=_0x197bff[_0x4cfdd4];_0x3ab2f9[_0xd1a5('0x3d')]=_0x375c0b[_0x2a2964]['type'];}}return _0x197bff;});})[_0xd1a5('0x2a')](function(_0x442526){_0x5a5d18[_0xd1a5('0x3e')]=_[_0xd1a5('0x34')](_0x442526);_0x5a5d18[_0xd1a5('0x3f')]=_[_0xd1a5('0x34')](_0x20d613['query']);_0x5a5d18[_0xd1a5('0x40')]=_[_0xd1a5('0x41')](_0x5a5d18[_0xd1a5('0x3e')],_0x5a5d18[_0xd1a5('0x3f')]);_0x40da1b[_0xd1a5('0x42')]=_[_0xd1a5('0x41')](_0x5a5d18[_0xd1a5('0x3e')],qs[_0xd1a5('0x43')](_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x43')]));_0x40da1b[_0xd1a5('0x42')]=_0x40da1b['attributes'][_0xd1a5('0x35')]?_0x40da1b['attributes']:_0x5a5d18['model'];if(!_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x44')]('nolimit')){_0x40da1b[_0xd1a5('0x25')]=qs[_0xd1a5('0x25')](_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x25')]);_0x40da1b[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x24')]);}_0x40da1b[_0xd1a5('0x45')]=qs[_0xd1a5('0x46')](_0x20d613[_0xd1a5('0x3f')]['sort']);_0x40da1b[_0xd1a5('0x47')]=qs[_0xd1a5('0x40')](_[_0xd1a5('0x48')](_0x20d613['query'],_0x5a5d18[_0xd1a5('0x40')]),_0x442526);var _0x40e9de=[];var _0xe2ce91=squel[_0xd1a5('0x49')]()['field']('id')[_0xd1a5('0x4a')]('name')['field'](_0xd1a5('0x4b'))[_0xd1a5('0x4c')]('tools_tags');var _0x49e2c9=squel['select']()[_0xd1a5('0x4c')](_0xd1a5('0x4d'),'c')[_0xd1a5('0x4e')](_0xd1a5('0x4f'),'uc',_0xd1a5('0x50'))[_0xd1a5('0x4e')](_0xd1a5('0x51'),'ct',_0xd1a5('0x52'))['left_join']('tools_tags','t',_0xd1a5('0x53'))[_0xd1a5('0x47')]('c.deletedAt\x20IS\x20NULL');var _0x1bde5d=squel[_0xd1a5('0x54')]();var _0x36879d=[];var _0x14274b=squel[_0xd1a5('0x54')]();var _0x1ff742;if(_0x20d613['query']['search']){_0x1ff742=as['parseSearch'](_0x20d613['query'][_0xd1a5('0x55')]);var _0x8b7734=_0x1ff742[_0xd1a5('0x56')];for(var _0x546407=0x0;_0x546407<_0x1ff742[_0xd1a5('0x57')][_0xd1a5('0x35')];_0x546407++){var _0x56fd53=_0x1ff742[_0xd1a5('0x57')][_0x546407];var _0x4b4c77='c';var _0x5765fd=_(_0x442526)[_0xd1a5('0x34')]()[_0xd1a5('0x58')](function(_0x19f146){return _0x19f146===_0x56fd53[_0xd1a5('0x4a')];});if(_0x5765fd)_0x5765fd=_0x442526[_0x56fd53['field']];if(!_0x5765fd){if(_0x56fd53['field']===_0xd1a5('0x59')){var _0x2ae041=_0x56fd53[_0xd1a5('0x5a')][_0xd1a5('0x5b')](',')[_0xd1a5('0x5c')](function(_0x3a6f09){return Number(_0x3a6f09);});_0x2ae041['forEach'](function(_0x35ff93){_0x14274b['or'](_0xd1a5('0x5d'),'%,'+_0x35ff93+',%');});_0x36879d=_[_0xd1a5('0x5e')](_0x36879d,_0x2ae041);}else if(_0x56fd53[_0xd1a5('0x4a')]==='User'){_0x1bde5d[_0xd1a5('0x5f')](_0xd1a5('0x60'),_0x56fd53[_0xd1a5('0x5a')]);}}else{if(_0x56fd53[_0xd1a5('0x4a')]===_0xd1a5('0x61')||_0x5765fd[_0xd1a5('0x3d')]===_0xd1a5('0x62'))_0x56fd53[_0xd1a5('0x63')]=_0xd1a5('0x64');var _0x2ed119=as['buildExpression'](_0x4b4c77,_0x5765fd[_0xd1a5('0x65')],_0x56fd53);_0x1bde5d[_0x8b7734](_0x2ed119[_0xd1a5('0x66')],_0x2ed119['value'][_0xd1a5('0x67')],_0x2ed119[_0xd1a5('0x5a')][_0xd1a5('0x2b')]);}}}else{var _0x48490a=_(Object[_0xd1a5('0x34')](_0x20d613[_0xd1a5('0x3f')]))[_0xd1a5('0x5c')](function(_0x5457bb){return _0x442526[_0xd1a5('0x44')](_0x5457bb)?_0x5457bb:undefined;})[_0xd1a5('0x68')](function(_0x147caf){return!_[_0xd1a5('0x69')](_0x147caf);})[_0xd1a5('0x5a')]();if(_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x6a')])_0x48490a['push']('Contact');if(!_[_0xd1a5('0x6b')](_0x48490a)){_0x48490a[_0xd1a5('0x6c')](function(_0x390b4d){if(_0x390b4d===_0xd1a5('0x6d')){_0x49e2c9[_0xd1a5('0x47')](_0xd1a5('0x6e'),[][_0xd1a5('0x6f')](_0x20d613['query'][_0x390b4d]));}else if(_0x390b4d===_0xd1a5('0x6a')){var _0x329ba1='%'+_0x20d613[_0xd1a5('0x3f')][_0x390b4d]+'%';_0x49e2c9[_0xd1a5('0x47')](_0xd1a5('0x70'),_0x329ba1);}else{_0x49e2c9[_0xd1a5('0x47')]('c.'+_0x390b4d+'\x20=\x20?',_0x20d613[_0xd1a5('0x3f')][_0x390b4d]);}});}if(_0x20d613['query'][_0xd1a5('0x71')]){_0x36879d=_[_0xd1a5('0x72')](_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x71')])?_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x71')]:new Array(_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x71')]);_0x36879d[_0xd1a5('0x6c')](function(_0x4417b8){_0x14274b['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4417b8+',%');});}if(_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x68')]){var _0x69b578=_0x20d613[_0xd1a5('0x3f')]['filter'][_0xd1a5('0x73')]('\x5c','\x5c\x5c')[_0xd1a5('0x73')](/'/g,'\x27\x27');if(_0x69b578[_0xd1a5('0x5b')]('\x20')[_0xd1a5('0x35')]>0x1){_0x1bde5d['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xd1a5('0x74')](_0x69b578),null);}else{if(qs[_0xd1a5('0x75')](_0x69b578)){_0x1bde5d['or']('c.id\x20LIKE\x20?',_0x69b578+'%');_0x1bde5d['or']('c.phone\x20LIKE\x20?',_0x69b578+'%');_0x1bde5d['or']('c.mobile\x20LIKE\x20?',_0x69b578+'%');_0x1bde5d['or'](_0xd1a5('0x76'),_0x69b578+'%');}else if(qs[_0xd1a5('0x77')](_0x69b578)){_0x1bde5d['or']('c.email\x20LIKE\x20?',_0x69b578+'%');}else{_0x1bde5d['or']('c.firstName\x20LIKE\x20?','%'+_0x69b578+'%');_0x1bde5d['or'](_0xd1a5('0x78'),'%'+_0x69b578+'%');_0x1bde5d['or'](_0xd1a5('0x79'),'%'+_0x69b578+'%');}}}}_0x49e2c9[_0xd1a5('0x47')](_0x1bde5d);_0x49e2c9[_0xd1a5('0x7a')](_0xd1a5('0x7b'));var _0x17f637={'type':db[_0xd1a5('0x7c')][_0xd1a5('0x7d')][_0xd1a5('0x7e')],'raw':!![]};var _0xdad0c3=_0x49e2c9[_0xd1a5('0x7f')]()[_0xd1a5('0x4a')](_0xd1a5('0x7b'));if(_0x40da1b[_0xd1a5('0x45')]){_0x40da1b[_0xd1a5('0x45')][_0xd1a5('0x6c')](function(_0x38d52a){_0x49e2c9['order']('c.'+_0x38d52a[0x0],_0x38d52a[0x1]===_0xd1a5('0x80')?![]:!![]);});}if(!_[_0xd1a5('0x6b')](_0x36879d)){_0x49e2c9['having'](_0x14274b);_0xdad0c3[_0xd1a5('0x47')]('t.id\x20IN\x20?',_0x36879d);}BPromise[_0xd1a5('0x81')]()[_0xd1a5('0x2a')](function(){if(!_0x1ff742)return;if(_0x20d613['user'][_0xd1a5('0x82')]!==_0xd1a5('0x83'))return;if(!_['some'](_0x1ff742[_0xd1a5('0x57')],['field',_0xd1a5('0x84')])){return _0x20d613['user'][_0xd1a5('0x85')]({'attributes':['id'],'raw':!![]})[_0xd1a5('0x2a')](function(_0x249234){if(_[_0xd1a5('0x6b')](_0x249234)){_0xdad0c3['where'](_0xd1a5('0x86'));_0x49e2c9['where'](_0xd1a5('0x86'));}else{_0xdad0c3[_0xd1a5('0x47')]('c.ListId\x20IN\x20?',_[_0xd1a5('0x5c')](_0x249234,'id'));_0x49e2c9[_0xd1a5('0x47')]('c.ListId\x20IN\x20?',_[_0xd1a5('0x5c')](_0x249234,'id'));}});}})[_0xd1a5('0x2a')](function(){if(_0x20d613['user']['role']===_0xd1a5('0x83')&&!_0x1ff742&&!_0x20d613[_0xd1a5('0x3f')]['ListId'])return[];return db[_0xd1a5('0x87')][_0xd1a5('0x3f')](_0xdad0c3[_0xd1a5('0x88')](),_0x17f637);})[_0xd1a5('0x2a')](function(_0x926826){_0x1dd368['count']=_0x926826[_0xd1a5('0x35')];if(_0x1dd368['count']===0x0)return[];return db[_0xd1a5('0x87')][_0xd1a5('0x3f')](_0xe2ce91['toString'](),_0x17f637)[_0xd1a5('0x2a')](function(_0x5cdd0e){_0x40e9de=_[_0xd1a5('0x89')](_0x5cdd0e,'id');_0x17f637=_[_0xd1a5('0x8a')](_0x17f637,{'model':db['CmContact'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x43')]){_0x40da1b[_0xd1a5('0x42')][_0xd1a5('0x6c')](function(_0xdcc4e9){_0x49e2c9['field']('c.'+_0xdcc4e9);});}else{_0x49e2c9['field'](_0xd1a5('0x7b'));_0x49e2c9[_0xd1a5('0x4a')]('c.firstName');_0x49e2c9[_0xd1a5('0x4a')](_0xd1a5('0x8b'));_0x49e2c9[_0xd1a5('0x4a')](_0xd1a5('0x8c'));_0x49e2c9[_0xd1a5('0x4a')]('c.mobile');_0x49e2c9[_0xd1a5('0x4a')](_0xd1a5('0x8d'));_0x49e2c9['field'](_0xd1a5('0x8e'));_0x49e2c9['field'](_0xd1a5('0x8f'));_0x49e2c9[_0xd1a5('0x4a')](_0xd1a5('0x90'));_0x49e2c9[_0xd1a5('0x4a')](_0xd1a5('0x91'));_0x49e2c9[_0xd1a5('0x4a')](_0xd1a5('0x92'));_0x49e2c9[_0xd1a5('0x4a')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x40da1b['limit'])_0x49e2c9[_0xd1a5('0x25')](_0x40da1b['limit']);if(_0x40da1b[_0xd1a5('0x24')])_0x49e2c9[_0xd1a5('0x24')](_0x40da1b['offset']);return db['sequelize'][_0xd1a5('0x3f')](_0x49e2c9['toString'](),_0x17f637);});})['then'](function(_0x128573){_0x128573[_0xd1a5('0x6c')](function(_0x1735a9){if(_0x1735a9[_0xd1a5('0x93')]){_0x1735a9[_0xd1a5('0x94')]=[];_0x1735a9[_0xd1a5('0x93')]['split'](',')[_0xd1a5('0x6c')](function(_0x464236){_0x1735a9[_0xd1a5('0x94')][_0xd1a5('0x38')](_0x40e9de[_0x464236]);});}delete _0x1735a9[_0xd1a5('0x93')];});_0x1dd368['rows']=_0x128573;return _0x1dd368;})[_0xd1a5('0x2a')](respondWithFilteredResult(_0x24dfcd,_0x40da1b));})[_0xd1a5('0x95')](handleError(_0x24dfcd,null));};exports[_0xd1a5('0x96')]=function(_0x436cde,_0x1a9a0a){return db[_0xd1a5('0x32')][_0xd1a5('0x58')]({'where':{'id':_0x436cde[_0xd1a5('0x97')]['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x1a9a0a,null))[_0xd1a5('0x2a')](removeEntity(_0x1a9a0a,null))[_0xd1a5('0x95')](handleError(_0x1a9a0a,null));};exports[_0xd1a5('0x33')]=function(_0x2a1531,_0x55b834){return db[_0xd1a5('0x32')][_0xd1a5('0x33')]()[_0xd1a5('0x2a')](function(_0xa10967){delete _0xa10967[_0xd1a5('0x98')];for(var _0x5c6282=0x0;_0x5c6282<Object[_0xd1a5('0x34')](_0xa10967)[_0xd1a5('0x35')];_0x5c6282++){var _0x320256=Object['keys'](_0xa10967)[_0x5c6282];if(!_['startsWith'](_0x320256,_0xd1a5('0x37'))){_0xa10967[_0x320256][_0xd1a5('0x99')]=_0x320256;_0xa10967[_0x320256][_0xd1a5('0x9a')]=_0x320256;}}return _0xa10967;})[_0xd1a5('0x2a')](function(_0x44123e){var _0x11567f={'where':{'$or':[{'ListId':_0x2a1531[_0xd1a5('0x3f')]['id']},{'ListId':null}]},'raw':!![]};return db[_0xd1a5('0x39')]['findAll'](_0x11567f)[_0xd1a5('0x2a')](function(_0xfe9713){for(var _0x2770a0=0x0;_0x2770a0<_0xfe9713['length'];_0x2770a0++){var _0x3acc06=_0xd1a5('0x37')+_0xfe9713[_0x2770a0]['id'];_0x44123e[_0x3acc06][_0xd1a5('0x99')]=_0x3acc06;_0x44123e[_0x3acc06]['displayName']=_0xfe9713[_0x2770a0][_0xd1a5('0x9b')];_0x44123e[_0x3acc06]['custom']={'type':_0xfe9713[_0x2770a0][_0xd1a5('0x65')],'values':_0xfe9713[_0x2770a0][_0xd1a5('0x9c')]};}Object[_0xd1a5('0x34')](_0x44123e)['forEach'](function(_0x3da768){if(!_0x44123e[_0x3da768][_0xd1a5('0x44')](_0xd1a5('0x99'))){delete _0x44123e[_0x3da768];}});return _0x44123e;});})[_0xd1a5('0x2a')](respondWithResult(_0x55b834,null))[_0xd1a5('0x95')](handleError(_0x55b834,null));};exports['merge']=function(_0xb05222,_0x79caad){var _0x4f3fa6;var _0x154a5b;var _0x2f72fb;if(_0xb05222[_0xd1a5('0x9d')]['id']){delete _0xb05222[_0xd1a5('0x9d')]['id'];}return db['CmContact'][_0xd1a5('0x9e')]({'where':{'id':[_0xb05222[_0xd1a5('0x9d')]['to'],_0xb05222[_0xd1a5('0x9d')][_0xd1a5('0x4c')]]}})['then'](function(_0x5c61f7){if(_0x5c61f7){if(_0x5c61f7['length']!==0x2){return null;}_0x5c61f7[0x0]=_0x5c61f7[0x0]['get']({'plain':!![]});_0x5c61f7[0x1]=_0x5c61f7[0x1][_0xd1a5('0x9f')]({'plain':!![]});delete _0x5c61f7[0x0]['id'];delete _0x5c61f7[0x1]['id'];return _[_0xd1a5('0xa0')](_0x5c61f7[0x0],_0x5c61f7[0x1],function(_0x44da35,_0x2053e9){if(Array[_0xd1a5('0x72')](_0x2053e9)&&!_0x2053e9[_0xd1a5('0x35')]){return _0x44da35;}else if(!_0x2053e9){return _0x44da35;}});}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x79caad,null))[_0xd1a5('0x2a')](function(_0x11974d){if(_0x11974d){if(_0x11974d[_0xd1a5('0x98')]&&_['isArray'](_0x11974d['tags'])){_0x11974d[_0xd1a5('0x98')]=_0x11974d[_0xd1a5('0x98')]['join']();}logger[_0xd1a5('0xa1')](_0xd1a5('0xa2'),_0xb05222[_0xd1a5('0x9d')]['to'],_0xb05222[_0xd1a5('0x9d')][_0xd1a5('0x4c')]);return db[_0xd1a5('0xa3')]['destroy']({'where':{'ContactId':[_0xb05222[_0xd1a5('0x9d')]['to'],_0xb05222[_0xd1a5('0x9d')][_0xd1a5('0x4c')]]}})[_0xd1a5('0x2a')](function(_0x48b687){logger[_0xd1a5('0xa1')](_0xd1a5('0xa4'),_0x48b687);return db[_0xd1a5('0xa5')][_0xd1a5('0x96')]({'where':{'ContactId':[_0xb05222[_0xd1a5('0x9d')]['to'],_0xb05222[_0xd1a5('0x9d')][_0xd1a5('0x4c')]]}})['then'](function(_0x236362){logger['info']('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0x236362);return db[_0xd1a5('0x32')][_0xd1a5('0xa6')](_0x11974d);});});}})['then'](function(_0x374230){if(_0x374230){_0x4f3fa6=_0x374230;_0x154a5b={'ContactId':_0x4f3fa6['id']};_0x2f72fb={'where':{'ContactId':[_0xb05222[_0xd1a5('0x9d')]['to'],_0xb05222['body'][_0xd1a5('0x4c')]]}};return db['ChatInteraction']['update'](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xa7')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db[_0xd1a5('0xa9')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xaa')]['update'](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xab')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db['MailInteraction']['update'](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db[_0xd1a5('0xab')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xac')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xad')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db['FaxInteraction']['update'](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db[_0xd1a5('0xae')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db[_0xd1a5('0xaf')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb0')]['update'](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb1')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db['CmHopperHistory'][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb2')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb3')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb4')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb5')]['update'](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db['MailQueueReport'][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb6')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db['SmsQueueReport']['update'](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db['JscriptySessionReport'][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db['WhatsappInteraction'][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb7')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb8')]['update'](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0x32')][_0xd1a5('0x96')]({'where':{'id':[_0xb05222[_0xd1a5('0x9d')]['to'],_0xb05222[_0xd1a5('0x9d')][_0xd1a5('0x4c')]]}});}})['then'](function(){if(_0x4f3fa6){return _0x4f3fa6;}})[_0xd1a5('0x2a')](respondWithResult(_0x79caad,null))['catch'](handleError(_0x79caad,null));};exports['create']=function(_0x15762d,_0x591b6d){return db[_0xd1a5('0x32')]['describe']()[_0xd1a5('0x2a')](function(_0x388c5e){if(_0x15762d[_0xd1a5('0x9d')]['tags']&&_['isArray'](_0x15762d['body'][_0xd1a5('0x98')])){if(_0x15762d[_0xd1a5('0x9d')][_0xd1a5('0x98')][_0xd1a5('0x35')]){_0x15762d['body']['tags']=_0x15762d[_0xd1a5('0x9d')][_0xd1a5('0x98')][_0xd1a5('0xb9')](';')+';';}else{_0x15762d['body'][_0xd1a5('0x98')]=null;}}else{_0x15762d['body']['tags']=null;}return db[_0xd1a5('0x32')][_0xd1a5('0xa6')](_0x15762d['body'],{'fields':_[_0xd1a5('0x34')](_0x388c5e),'raw':!![]});})[_0xd1a5('0x2a')](respondWithResult(_0x591b6d,0xc9))[_0xd1a5('0x95')](handleError(_0x591b6d,null));};exports[_0xd1a5('0xba')]=function(_0x5f561d,_0x4f5b47){var _0xe17a9a=[];var _0x52c53f=0x0;var _0x149eef=0x0;var _0x5cdf3a=0x0;return db[_0xd1a5('0x32')][_0xd1a5('0x33')]()[_0xd1a5('0x2a')](function(_0x21cc42){return BPromise[_0xd1a5('0xbb')](_0x5f561d[_0xd1a5('0x9d')],function(_0x4bbce3){var _0x5f02fd={'where':{'$or':[]},'defaults':_0x4bbce3,'fields':_[_0xd1a5('0x34')](_0x21cc42),'raw':!![]};if(_0x4bbce3[_0xd1a5('0xbc')]){for(var _0x1828ba=0x0;_0x1828ba<_0x4bbce3[_0xd1a5('0xbc')]['length'];_0x1828ba++){var _0x32613d={};_0x32613d[_0x4bbce3[_0xd1a5('0xbc')][_0x1828ba]]=_0x4bbce3[_0x4bbce3[_0xd1a5('0xbc')][_0x1828ba]];_0x5f02fd[_0xd1a5('0x47')][_0xd1a5('0xbd')][_0xd1a5('0x38')](_0x32613d);}_0x5f02fd[_0xd1a5('0x47')][_0xd1a5('0x6d')]=_0x4bbce3[_0xd1a5('0x6d')];}return db[_0xd1a5('0x32')][_0xd1a5('0xbe')](_0x5f02fd)['spread'](function(_0x4773f0,_0x2a1e97){if(_0x2a1e97){_0x52c53f++;}else{_0x5cdf3a++;}})[_0xd1a5('0x95')](function(_0x637989){console[_0xd1a5('0x2d')](_0x637989);_0x149eef++;});});})[_0xd1a5('0x2a')](function(_0x2a3837){if(_0x2a3837){return{'success':_0x52c53f,'failure':_0x149eef,'duplicates':_0x5cdf3a};}})[_0xd1a5('0x2a')](respondWithResult(_0x4f5b47,0xc9))['catch'](handleError(_0x4f5b47,null));};exports[_0xd1a5('0xbf')]=function(_0x431537,_0x24d713,_0x51644d){var _0x45133d;return db[_0xd1a5('0x32')]['describe']()[_0xd1a5('0x2a')](function(_0x5884d8){return db[_0xd1a5('0x32')][_0xd1a5('0x58')]({'where':{'id':_0x431537[_0xd1a5('0x97')]['id']},'include':[{'model':db[_0xd1a5('0x59')],'as':_0xd1a5('0x94'),'attributes':['id',_0xd1a5('0x2f'),'color'],'required':_0x431537['query'][_0xd1a5('0x71')]?!![]:![]}],'attributes':_[_0xd1a5('0x34')](_0x5884d8)});})[_0xd1a5('0x2a')](function(_0x1c2da9){_0x45133d=_0x1c2da9[_0xd1a5('0x9f')]({'plain':!![]});var _0x2abcaa={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x1c2da9&&_0x1c2da9[_0xd1a5('0x6d')]){if(_0x1c2da9[_0xd1a5('0x6d')]){_0x2abcaa[_0xd1a5('0x47')][_0xd1a5('0xc0')][_0xd1a5('0x38')]({'ListId':{'$ne':_0x1c2da9[_0xd1a5('0x6d')]}});}}return db[_0xd1a5('0x39')][_0xd1a5('0x9e')](_0x2abcaa);})['then'](function(_0x2f7fdb){return _['omit'](_0x45133d,_[_0xd1a5('0x5c')](_0x2f7fdb,function(_0x58ad33){return util[_0xd1a5('0xc1')](_0xd1a5('0xc2'),_0x58ad33['id']);}));})[_0xd1a5('0x2a')](handleEntityNotFound(_0x24d713,null))[_0xd1a5('0x2a')](respondWithResult(_0x24d713,null))['catch'](handleError(_0x24d713,null));};exports[_0xd1a5('0xa8')]=function(_0x17faae,_0x4668f8){var _0x20a9d0;if(_0x17faae[_0xd1a5('0x9d')]['id']){delete _0x17faae[_0xd1a5('0x9d')]['id'];}return db[_0xd1a5('0x32')][_0xd1a5('0x58')]({'where':{'id':_0x17faae['params']['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x4668f8,null))[_0xd1a5('0x2a')](saveUpdates(_0x17faae[_0xd1a5('0x9d')],null))['then'](function(_0xd11e72){_0x20a9d0=_0xd11e72;var _0x56ef79={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xd11e72&&_0xd11e72[_0xd1a5('0x6d')]){if(_0xd11e72[_0xd1a5('0x6d')]){_0x56ef79[_0xd1a5('0x47')][_0xd1a5('0xc0')][_0xd1a5('0x38')]({'ListId':{'$ne':_0xd11e72[_0xd1a5('0x6d')]}});}}return db['CmCustomField'][_0xd1a5('0x9e')](_0x56ef79);})[_0xd1a5('0x2a')](function(_0x4fccd9){if(_0x4fccd9){return _[_0xd1a5('0xc3')](_['pickBy'](_0x17faae[_0xd1a5('0x9d')],function(_0x1c02c4,_0x21c616){return _[_0xd1a5('0x36')](_0x21c616,_0xd1a5('0x37'));}),_[_0xd1a5('0x5c')](_0x4fccd9,function(_0x5bda87){return util[_0xd1a5('0xc1')]('cf_%d',_0x5bda87['id']);}));}})[_0xd1a5('0x2a')](function(_0x5e79fe){if(_0x5e79fe&&!_[_0xd1a5('0x6b')](_0x5e79fe)){var _0x584e9b=squel[_0xd1a5('0xa8')]()[_0xd1a5('0xc4')]('cm_contacts')[_0xd1a5('0xc5')](_0x5e79fe)[_0xd1a5('0x47')](_0xd1a5('0xc6'),_0x17faae[_0xd1a5('0x97')]['id'])[_0xd1a5('0xc7')]();return db['sequelize'][_0xd1a5('0x3f')](_0x584e9b[_0xd1a5('0x66')],{'replacements':_0x584e9b[_0xd1a5('0x9c')]});}})[_0xd1a5('0x2a')](function(){if(_0x17faae[_0xd1a5('0x9d')]['phone']&&_0x20a9d0){return db[_0xd1a5('0xa3')]['update']({'phone':_0x17faae[_0xd1a5('0x9d')][_0xd1a5('0xc8')]},{'where':{'ContactId':_0x20a9d0['id']}});}})[_0xd1a5('0x2a')](function(){return _0x20a9d0;})[_0xd1a5('0x2a')](respondWithResult(_0x4668f8,null))['catch'](handleError(_0x4668f8,null));};exports['getTags']=function(_0x41b213,_0x2d84ae,_0x263e50){var _0x56b433={};var _0x57ee7e={};var _0x1dde37;var _0x44e17a;return db[_0xd1a5('0x32')]['findOne']({'where':{'id':_0x41b213['params']['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x2d84ae,null))[_0xd1a5('0x2a')](function(_0x2d7565){if(_0x2d7565){_0x1dde37=_0x2d7565;_0x57ee7e[_0xd1a5('0x3e')]=_[_0xd1a5('0x34')](db[_0xd1a5('0x59')][_0xd1a5('0xc9')]);_0x57ee7e[_0xd1a5('0x3f')]=_['keys'](_0x41b213[_0xd1a5('0x3f')]);_0x57ee7e[_0xd1a5('0x40')]=_['intersection'](_0x57ee7e[_0xd1a5('0x3e')],_0x57ee7e[_0xd1a5('0x3f')]);_0x56b433[_0xd1a5('0x42')]=_['intersection'](_0x57ee7e[_0xd1a5('0x3e')],qs['fields'](_0x41b213[_0xd1a5('0x3f')][_0xd1a5('0x43')]));_0x56b433[_0xd1a5('0x42')]=_0x56b433['attributes'][_0xd1a5('0x35')]?_0x56b433[_0xd1a5('0x42')]:_0x57ee7e[_0xd1a5('0x3e')];_0x56b433[_0xd1a5('0x45')]=qs[_0xd1a5('0x46')](_0x41b213['query'][_0xd1a5('0x46')]);_0x56b433['where']=qs[_0xd1a5('0x40')](_[_0xd1a5('0x48')](_0x41b213[_0xd1a5('0x3f')],_0x57ee7e[_0xd1a5('0x40')]));if(_0x41b213[_0xd1a5('0x3f')]['filter']){_0x56b433[_0xd1a5('0x47')]=_['merge'](_0x56b433[_0xd1a5('0x47')],{'$or':_[_0xd1a5('0x5c')](_0x56b433[_0xd1a5('0x42')],function(_0x517d34){var _0x806f03={};_0x806f03[_0x517d34]={'$like':'%'+_0x41b213[_0xd1a5('0x3f')][_0xd1a5('0x68')]+'%'};return _0x806f03;})});}_0x56b433=_[_0xd1a5('0x8a')]({},_0x56b433,_0x41b213['options']);return _0x1dde37[_0xd1a5('0xca')](_0x56b433);}})[_0xd1a5('0x2a')](function(_0x4e2716){if(_0x4e2716){_0x44e17a=_0x4e2716[_0xd1a5('0x35')];if(!_0x41b213[_0xd1a5('0x3f')][_0xd1a5('0x44')](_0xd1a5('0xcb'))){_0x56b433[_0xd1a5('0x25')]=qs[_0xd1a5('0x25')](_0x41b213[_0xd1a5('0x3f')][_0xd1a5('0x25')]);_0x56b433[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x41b213[_0xd1a5('0x3f')][_0xd1a5('0x24')]);}return _0x1dde37[_0xd1a5('0xca')](_0x56b433);}})['then'](function(_0x4cfaa6){if(_0x4cfaa6){return _0x4cfaa6?{'count':_0x44e17a,'rows':_0x4cfaa6}:null;}})[_0xd1a5('0x2a')](respondWithResult(_0x2d84ae,null))[_0xd1a5('0x95')](handleError(_0x2d84ae,null));};exports['setTags']=function(_0x232e36,_0x60b449,_0x90ac02){if(_0x232e36['body']['id']){delete _0x232e36[_0xd1a5('0x9d')]['id'];}return db['CmContact'][_0xd1a5('0x3a')]({'where':{'id':_0x232e36[_0xd1a5('0x97')]['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x60b449,null))[_0xd1a5('0x2a')](function(_0x405d8a){if(_0x405d8a){return _0x405d8a[_0xd1a5('0xcc')](_0x232e36[_0xd1a5('0x9d')][_0xd1a5('0xcd')]||[]);}return null;})[_0xd1a5('0x2a')](respondWithResult(_0x60b449,null))['catch'](handleError(_0x60b449,null));};exports[_0xd1a5('0xce')]=function(_0x1a69f9,_0xb1457d,_0x1a8835){var _0x34b75b={'raw':![],'where':{}};var _0x4c437a={};var _0x595d3d={'count':0x0,'rows':[]};return db[_0xd1a5('0x32')][_0xd1a5('0x3a')]({'where':{'id':_0x1a69f9['params']['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0xb1457d,null))[_0xd1a5('0x2a')](function(_0x37b962){if(_0x37b962){_0x4c437a['model']=_[_0xd1a5('0x34')](db[_0xd1a5('0xa3')][_0xd1a5('0xc9')]);_0x4c437a[_0xd1a5('0x3f')]=_[_0xd1a5('0x34')](_0x1a69f9['query']);_0x4c437a[_0xd1a5('0x40')]=_[_0xd1a5('0x41')](_0x4c437a[_0xd1a5('0x3e')],_0x4c437a[_0xd1a5('0x3f')]);_0x34b75b[_0xd1a5('0x42')]=_[_0xd1a5('0x41')](_0x4c437a[_0xd1a5('0x3e')],qs[_0xd1a5('0x43')](_0x1a69f9[_0xd1a5('0x3f')][_0xd1a5('0x43')]));_0x34b75b[_0xd1a5('0x42')]=_0x34b75b[_0xd1a5('0x42')]['length']?_0x34b75b[_0xd1a5('0x42')]:_0x4c437a[_0xd1a5('0x3e')];if(!_0x1a69f9[_0xd1a5('0x3f')][_0xd1a5('0x44')](_0xd1a5('0xcb'))){_0x34b75b[_0xd1a5('0x25')]=qs[_0xd1a5('0x25')](_0x1a69f9['query']['limit']);_0x34b75b[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x1a69f9[_0xd1a5('0x3f')][_0xd1a5('0x24')]);}_0x34b75b['order']=qs[_0xd1a5('0x46')](_0x1a69f9[_0xd1a5('0x3f')][_0xd1a5('0x46')]);_0x34b75b['where']=qs['filters'](_['pick'](_0x1a69f9[_0xd1a5('0x3f')],_0x4c437a[_0xd1a5('0x40')]));_0x34b75b[_0xd1a5('0x47')]['ContactId']=_0x37b962['id'];if(_0x1a69f9[_0xd1a5('0x3f')][_0xd1a5('0x68')]){_0x34b75b['where']=_['merge'](_0x34b75b[_0xd1a5('0x47')],{'$or':_[_0xd1a5('0x5c')](_0x34b75b[_0xd1a5('0x42')],function(_0x31d50b){var _0x85a83b={};_0x85a83b[_0x31d50b]={'$like':'%'+_0x1a69f9['query'][_0xd1a5('0x68')]+'%'};return _0x85a83b;})});}_0x34b75b=_[_0xd1a5('0x8a')]({},_0x34b75b,_0x1a69f9[_0xd1a5('0xcf')]);return db[_0xd1a5('0xa3')][_0xd1a5('0x27')]({'where':_0x34b75b[_0xd1a5('0x47')]})[_0xd1a5('0x2a')](function(_0x50da7c){_0x595d3d['count']=_0x50da7c;if(_0x1a69f9['query'][_0xd1a5('0xd0')]){_0x34b75b[_0xd1a5('0xd1')]=[{'all':!![]}];}return db[_0xd1a5('0xa3')][_0xd1a5('0x9e')](_0x34b75b);})[_0xd1a5('0x2a')](function(_0x1c92bf){_0x595d3d[_0xd1a5('0xd2')]=_0x1c92bf;return _0x595d3d;});}})['then'](respondWithFilteredResult(_0xb1457d,_0x34b75b))[_0xd1a5('0x95')](handleError(_0xb1457d,null));};exports[_0xd1a5('0xd3')]=function(_0x4ef29f,_0x53bc3c,_0x2af149){var _0x8caede={'raw':!![],'where':{}};var _0x3fba7a={};var _0x2029ac={'count':0x0,'rows':[]};return db[_0xd1a5('0x32')][_0xd1a5('0x3a')]({'where':{'id':_0x4ef29f['params']['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x53bc3c,null))['then'](function(_0x126189){if(_0x126189){_0x3fba7a[_0xd1a5('0x3e')]=_['keys'](db[_0xd1a5('0xd4')]['rawAttributes']);_0x3fba7a[_0xd1a5('0x3f')]=_[_0xd1a5('0x34')](_0x4ef29f['query']);_0x3fba7a[_0xd1a5('0x40')]=_[_0xd1a5('0x41')](_0x3fba7a['model'],_0x3fba7a[_0xd1a5('0x3f')]);_0x8caede['attributes']=_[_0xd1a5('0x41')](_0x3fba7a[_0xd1a5('0x3e')],qs[_0xd1a5('0x43')](_0x4ef29f['query'][_0xd1a5('0x43')]));_0x8caede['attributes']=_0x8caede[_0xd1a5('0x42')]['length']?_0x8caede[_0xd1a5('0x42')]:_0x3fba7a[_0xd1a5('0x3e')];if(!_0x4ef29f[_0xd1a5('0x3f')][_0xd1a5('0x44')](_0xd1a5('0xcb'))){_0x8caede['limit']=qs[_0xd1a5('0x25')](_0x4ef29f[_0xd1a5('0x3f')][_0xd1a5('0x25')]);_0x8caede[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x4ef29f[_0xd1a5('0x3f')]['offset']);}_0x8caede[_0xd1a5('0x45')]=qs[_0xd1a5('0x46')](_0x4ef29f[_0xd1a5('0x3f')][_0xd1a5('0x46')]);_0x8caede[_0xd1a5('0x47')]=qs['filters'](_[_0xd1a5('0x48')](_0x4ef29f[_0xd1a5('0x3f')],_0x3fba7a['filters']));_0x8caede[_0xd1a5('0x47')][_0xd1a5('0xd5')]=_0x126189['id'];if(_0x4ef29f[_0xd1a5('0x3f')][_0xd1a5('0x68')]){_0x8caede['where']=_[_0xd1a5('0x8a')](_0x8caede[_0xd1a5('0x47')],{'$or':_[_0xd1a5('0x5c')](_0x8caede[_0xd1a5('0x42')],function(_0x5e46bf){var _0x3acbc7={};_0x3acbc7[_0x5e46bf]={'$like':'%'+_0x4ef29f[_0xd1a5('0x3f')][_0xd1a5('0x68')]+'%'};return _0x3acbc7;})});}_0x8caede=_['merge']({},_0x8caede,_0x4ef29f[_0xd1a5('0xcf')]);return db[_0xd1a5('0xd4')][_0xd1a5('0x27')]({'where':_0x8caede[_0xd1a5('0x47')]})[_0xd1a5('0x2a')](function(_0x18b13c){_0x2029ac['count']=_0x18b13c;if(_0x4ef29f[_0xd1a5('0x3f')][_0xd1a5('0xd0')]){_0x8caede[_0xd1a5('0xd1')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x8caede);})[_0xd1a5('0x2a')](function(_0x12857a){_0x2029ac['rows']=_0x12857a;return _0x2029ac;});}})[_0xd1a5('0x2a')](respondWithFilteredResult(_0x53bc3c,_0x8caede))['catch'](handleError(_0x53bc3c,null));};exports['getHopperFinals']=function(_0x2f845a,_0x20adc5,_0x433478){var _0x536512={'raw':!![],'where':{}};var _0x50fc66={};var _0x2dedbd={'count':0x0,'rows':[]};return db[_0xd1a5('0x32')][_0xd1a5('0x3a')]({'where':{'id':_0x2f845a[_0xd1a5('0x97')]['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x20adc5,null))[_0xd1a5('0x2a')](function(_0x5225b3){if(_0x5225b3){_0x50fc66[_0xd1a5('0x3e')]=_['keys'](db[_0xd1a5('0xb1')]['rawAttributes']);_0x50fc66[_0xd1a5('0x3f')]=_[_0xd1a5('0x34')](_0x2f845a[_0xd1a5('0x3f')]);_0x50fc66['filters']=_[_0xd1a5('0x41')](_0x50fc66[_0xd1a5('0x3e')],_0x50fc66[_0xd1a5('0x3f')]);_0x536512[_0xd1a5('0x42')]=_['intersection'](_0x50fc66[_0xd1a5('0x3e')],qs[_0xd1a5('0x43')](_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0x43')]));_0x536512['attributes']=_0x536512[_0xd1a5('0x42')][_0xd1a5('0x35')]?_0x536512[_0xd1a5('0x42')]:_0x50fc66[_0xd1a5('0x3e')];if(!_0x2f845a[_0xd1a5('0x3f')]['hasOwnProperty'](_0xd1a5('0xcb'))){_0x536512[_0xd1a5('0x25')]=qs[_0xd1a5('0x25')](_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0x25')]);_0x536512[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0x24')]);}_0x536512[_0xd1a5('0x45')]=qs[_0xd1a5('0x46')](_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0x46')]);_0x536512[_0xd1a5('0x47')]=qs[_0xd1a5('0x40')](_[_0xd1a5('0x48')](_0x2f845a[_0xd1a5('0x3f')],_0x50fc66[_0xd1a5('0x40')]));_0x536512[_0xd1a5('0x47')][_0xd1a5('0xd5')]=_0x5225b3['id'];if(_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0x68')]){_0x536512[_0xd1a5('0x47')]=_[_0xd1a5('0x8a')](_0x536512[_0xd1a5('0x47')],{'$or':_[_0xd1a5('0x5c')](_0x536512[_0xd1a5('0x42')],function(_0x2b85e7){var _0x504784={};_0x504784[_0x2b85e7]={'$like':'%'+_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0x68')]+'%'};return _0x504784;})});}_0x536512=_['merge']({},_0x536512,_0x2f845a['options']);return db['CmHopperFinal']['count']({'where':_0x536512[_0xd1a5('0x47')]})['then'](function(_0x6ec516){_0x2dedbd[_0xd1a5('0x27')]=_0x6ec516;if(_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0xd0')]){_0x536512['include']=[{'all':!![]}];}return db['CmHopperFinal']['findAll'](_0x536512);})[_0xd1a5('0x2a')](function(_0x2d81bf){_0x2dedbd[_0xd1a5('0xd2')]=_0x2d81bf;return _0x2dedbd;});}})[_0xd1a5('0x2a')](respondWithFilteredResult(_0x20adc5,_0x536512))[_0xd1a5('0x95')](handleError(_0x20adc5,null));};exports[_0xd1a5('0xd6')]=function(_0x3f8298,_0x696f09,_0x29923d){var _0x35a326={'raw':!![],'where':{}};var _0x414356={};var _0x814dd6={'count':0x0,'rows':[]};return db[_0xd1a5('0x32')][_0xd1a5('0x3a')]({'where':{'id':_0x3f8298[_0xd1a5('0x97')]['id']}})['then'](handleEntityNotFound(_0x696f09,null))['then'](function(_0x502aef){if(_0x502aef){_0x414356[_0xd1a5('0x3e')]=_[_0xd1a5('0x34')](db[_0xd1a5('0xd7')][_0xd1a5('0xc9')]);_0x414356[_0xd1a5('0x3f')]=_[_0xd1a5('0x34')](_0x3f8298[_0xd1a5('0x3f')]);_0x414356['filters']=_[_0xd1a5('0x41')](_0x414356[_0xd1a5('0x3e')],_0x414356['query']);_0x35a326[_0xd1a5('0x42')]=_[_0xd1a5('0x41')](_0x414356['model'],qs['fields'](_0x3f8298['query'][_0xd1a5('0x43')]));_0x35a326[_0xd1a5('0x42')]=_0x35a326[_0xd1a5('0x42')][_0xd1a5('0x35')]?_0x35a326[_0xd1a5('0x42')]:_0x414356[_0xd1a5('0x3e')];if(!_0x3f8298['query']['hasOwnProperty'](_0xd1a5('0xcb'))){_0x35a326[_0xd1a5('0x25')]=qs['limit'](_0x3f8298[_0xd1a5('0x3f')][_0xd1a5('0x25')]);_0x35a326[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x3f8298['query'][_0xd1a5('0x24')]);}_0x35a326['order']=qs[_0xd1a5('0x46')](_0x3f8298[_0xd1a5('0x3f')]['sort']);_0x35a326[_0xd1a5('0x47')]=qs[_0xd1a5('0x40')](_['pick'](_0x3f8298[_0xd1a5('0x3f')],_0x414356[_0xd1a5('0x40')]));_0x35a326['where'][_0xd1a5('0xd5')]=_0x502aef['id'];if(_0x3f8298[_0xd1a5('0x3f')][_0xd1a5('0x68')]){_0x35a326[_0xd1a5('0x47')]=_['merge'](_0x35a326['where'],{'$or':_[_0xd1a5('0x5c')](_0x35a326[_0xd1a5('0x42')],function(_0x59eebd){var _0x3cacaf={};_0x3cacaf[_0x59eebd]={'$like':'%'+_0x3f8298[_0xd1a5('0x3f')][_0xd1a5('0x68')]+'%'};return _0x3cacaf;})});}_0x35a326=_[_0xd1a5('0x8a')]({},_0x35a326,_0x3f8298[_0xd1a5('0xcf')]);return db[_0xd1a5('0xd7')][_0xd1a5('0x27')]({'where':_0x35a326['where']})['then'](function(_0x370074){_0x814dd6[_0xd1a5('0x27')]=_0x370074;if(_0x3f8298[_0xd1a5('0x3f')][_0xd1a5('0xd0')]){_0x35a326['include']=[{'all':!![]}];}return db[_0xd1a5('0xd7')][_0xd1a5('0x9e')](_0x35a326);})['then'](function(_0xd13f1c){_0x814dd6[_0xd1a5('0xd2')]=_0xd13f1c;return _0x814dd6;});}})[_0xd1a5('0x2a')](respondWithFilteredResult(_0x696f09,_0x35a326))[_0xd1a5('0x95')](handleError(_0x696f09,null));};exports[_0xd1a5('0xd8')]=function(_0x5c79ae,_0x1a64c4,_0x1de209){try{if(!_0x5c79ae['body'][_0xd1a5('0x6d')]){throw new Error(_0xd1a5('0xd9'));}if(!_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xda')]){throw new Error(_0xd1a5('0xdb'));}if(!_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xdc')]){throw new Error(_0xd1a5('0xdd'));}if(!_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xde')]){throw new Error(_0xd1a5('0xdf'));}var _0x1b76b9=_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xda')][_0xd1a5('0x5b')](',');var _0x27bd76=_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xdc')][_0xd1a5('0x5b')](',');if(!_0x1b76b9[_0xd1a5('0x35')]||!_0x27bd76[_0xd1a5('0x35')]||_0x1b76b9[_0xd1a5('0x35')]!==_0x27bd76[_0xd1a5('0x35')]){throw new Error(_0xd1a5('0xe0'));}_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0x43')]=_[_0xd1a5('0xe1')](_0x1b76b9,_0x27bd76);if(!_0x5c79ae[_0xd1a5('0x9d')]['fields'][_0xd1a5('0xc8')]){throw new Error(_0xd1a5('0xe2'));}if(!_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0x43')][_0xd1a5('0xe3')]){throw new Error('No\x20firstName\x20column\x20specified');}var _0x2fe9be=path[_0xd1a5('0xb9')](config[_0xd1a5('0xe4')],_0xd1a5('0xe5'),_0x5c79ae[_0xd1a5('0xe6')][_0xd1a5('0xe7')]);fs[_0xd1a5('0xe8')](_0x2fe9be,parseInt('0777',0x8));var _0x1ccd87=require(_0xd1a5('0xe9'))['fork'](path[_0xd1a5('0xb9')](__dirname,_0xd1a5('0xea')),[_0x2fe9be,_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xda')],_0x5c79ae['body'][_0xd1a5('0xdc')],_0x5c79ae['body'][_0xd1a5('0x6d')],_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xeb')],_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xbc')],_0x5c79ae[_0xd1a5('0x9d')]['socket_timestamp']]);return _0x1a64c4['status'](0xc8)[_0xd1a5('0x23')]({'message':_0xd1a5('0xec'),'pid':_0x1ccd87['pid']});}catch(_0x29d0d2){return _0x1a64c4[_0xd1a5('0x22')](0x1f4)['send'](_0x29d0d2);}};exports[_0xd1a5('0xed')]=function(_0x59a763,_0x34bbbf,_0x2da8e2){var _0x295510=fs[_0xd1a5('0xee')](_0x59a763['file'][_0xd1a5('0xef')]);Papa['parse'](_0x295510,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x2ea24f){return _0x34bbbf[_0xd1a5('0x22')](0xc8)[_0xd1a5('0x23')]({'file':_0x59a763[_0xd1a5('0xe6')],'fields':_0x2ea24f[_0xd1a5('0xf0')]['fields']});}});};exports[_0xd1a5('0xf1')]=function(_0x27a0b3,_0x137426,_0x184360){return db[_0xd1a5('0x84')][_0xd1a5('0x9e')]({'raw':!![],'attributes':['id'],'where':{'role':_0xd1a5('0x83')}})[_0xd1a5('0x2a')](function(_0x1d5258){var _0x15c6da=![];if(!_0x27a0b3[_0xd1a5('0x9d')]['ListId']){throw new Error('No\x20ListId\x20specified');}if(!_0x27a0b3[_0xd1a5('0x9d')][_0xd1a5('0xf2')][_0xd1a5('0xc8')]){throw new Error(_0xd1a5('0xe2'));}if(!_0x27a0b3[_0xd1a5('0x9d')][_0xd1a5('0xf2')]['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x27a0b3[_0xd1a5('0x9d')]['socket_timestamp']){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x1126a6=require('child_process')[_0xd1a5('0xf3')](path[_0xd1a5('0xb9')](__dirname,'../../components/import/cm/csv2'),[_0x27a0b3['params']['id'],JSON[_0xd1a5('0xf4')](_0x27a0b3[_0xd1a5('0x9d')]),JSON['stringify'](_0x1d5258)]);_0x1126a6['on']('message',function(_0x30d64b){_0x15c6da=!![];return _0x137426[_0xd1a5('0x22')](0xc8)['json']({'message':_0xd1a5('0xf5'),'pid':_0x1126a6[_0xd1a5('0xf6')]});});_0x1126a6['on']('exit',function(_0x1c8836){if(_0x1c8836&&!_0x15c6da){return _0x137426[_0xd1a5('0x22')](0x1f4)[_0xd1a5('0x23')]({'message':_0xd1a5('0xf7'),'pid':_0x1126a6[_0xd1a5('0xf6')]});}});})[_0xd1a5('0x95')](handleError(_0x137426,null));};exports[_0xd1a5('0xf8')]=function(_0x1d5988,_0x69ddca){var _0x3fd8e8=['mail',_0xd1a5('0xf9'),_0xd1a5('0xfa'),_0xd1a5('0xfb'),_0xd1a5('0xfc'),_0xd1a5('0xfd'),_0xd1a5('0xfe')];var _0x42e9e6={'offset':0x0,'order':qs['sort'](_0xd1a5('0xff'))},_0xa02365={'count':0x0,'rows':[]};Promise[_0xd1a5('0x81')]()[_0xd1a5('0x2a')](function(){if(_0x1d5988[_0xd1a5('0x3f')][_0xd1a5('0x100')]){if(!_[_0xd1a5('0x101')](_0x3fd8e8,_0x1d5988[_0xd1a5('0x3f')][_0xd1a5('0x100')][_0xd1a5('0x102')]())){throw new Error(_0xd1a5('0x103'));}_0x3fd8e8=[_0x1d5988['query'][_0xd1a5('0x100')][_0xd1a5('0x102')]()];}if(_0x1d5988[_0xd1a5('0x3f')][_0xd1a5('0x104')]){try{var _0x23df70=JSON[_0xd1a5('0x105')](_0x1d5988[_0xd1a5('0x3f')][_0xd1a5('0x104')]);if(!moment(_0x23df70[_0xd1a5('0x4c')])['isValid']()){throw new Error(_0xd1a5('0x106'));}if(!moment(_0x23df70['to'])[_0xd1a5('0x107')]()){throw new Error(_0xd1a5('0x108'));}}catch(_0x1bb9da){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x1d5988[_0xd1a5('0x3f')][_0xd1a5('0x44')]('nolimit')){_0x42e9e6[_0xd1a5('0x25')]=qs[_0xd1a5('0x25')](_0x1d5988['query']['limit']||0xa);_0x42e9e6[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x1d5988[_0xd1a5('0x3f')][_0xd1a5('0x24')]);}var _0x1ee8ee=_0x3fd8e8[_0xd1a5('0x5c')](function(_0x42626d){if(_0x42626d===_0xd1a5('0xfe')){var _0x55fc0d={'attributes':['id',_0xd1a5('0x109'),_0xd1a5('0x65'),_0xd1a5('0x10a'),_0xd1a5('0x10b'),_0xd1a5('0x10c'),_0xd1a5('0x10d'),'endtime','duration','note',_0xd1a5('0x10e'),_0xd1a5('0x10f'),_0xd1a5('0x110'),_0xd1a5('0x111'),_0xd1a5('0x112')],'where':{'ContactId':_0x1d5988[_0xd1a5('0x97')]['id']},'include':[{'model':db[_0xd1a5('0x84')],'as':_0xd1a5('0x84'),'attributes':['id',_0xd1a5('0x2f'),_0xd1a5('0x113'),'alias']}],'order':[[_0xd1a5('0x10e'),'DESC']]};if(_0x1d5988['query']['range']){_0x55fc0d[_0xd1a5('0x47')][_0xd1a5('0x10e')]={'$gte':_0x23df70['from'],'$lte':_0x23df70['to']};}return db[_0xd1a5('0xb3')][_0xd1a5('0x114')](_0x55fc0d)[_0xd1a5('0x2a')](function(_0x11d1c1){_0xa02365[_0xd1a5('0x27')]+=_0x11d1c1[_0xd1a5('0x27')];return _[_0xd1a5('0x5c')](_0x11d1c1['rows'],function(_0x1d933a){var _0x2c0853=_0x1d933a['get']({'plain':!![]});_0x2c0853[_0xd1a5('0x100')]=_0x42626d;if(_0x2c0853[_0xd1a5('0x84')]){_0x2c0853['User']={'id':_0x2c0853[_0xd1a5('0x84')]['id'],'name':_0x2c0853[_0xd1a5('0x84')][_0xd1a5('0x2f')],'fullname':_0x2c0853['User']['fullname'],'alias':_0x2c0853['User'][_0xd1a5('0x9b')]};}return _0x2c0853;});});}else{var _0x1d0825=_['startCase'](_0x42626d)+(_0x42626d===_0xd1a5('0xf9')?'Website':_0xd1a5('0x115'));var _0x51e60d={'attributes':['id',_0xd1a5('0x116'),_0xd1a5('0x117'),_0xd1a5('0x10e'),_0xd1a5('0x118'),_0xd1a5('0x119'),_0xd1a5('0x11a'),_0xd1a5('0x11b'),'UserId',_0x1d0825+'Id'],'where':{'ContactId':_0x1d5988[_0xd1a5('0x97')]['id']},'include':[{'model':db[_0x1d0825],'as':_0xd1a5('0x115'),'attributes':['id',_0xd1a5('0x2f'),'key']},{'model':db[_0xd1a5('0x84')],'as':_0xd1a5('0x11c'),'attributes':['id',_0xd1a5('0x2f'),'fullname']},{'model':db[_0xd1a5('0x59')],'as':_0xd1a5('0x94'),'attributes':['id',_0xd1a5('0x2f'),_0xd1a5('0x4b')],'through':{'attributes':[]}}],'order':[[_0xd1a5('0x10e'),_0xd1a5('0x80')]]};if(_0x1d5988['query'][_0xd1a5('0x104')]){_0x51e60d[_0xd1a5('0x47')][_0xd1a5('0x10e')]={'$gte':_0x23df70[_0xd1a5('0x4c')],'$lte':_0x23df70['to']};}switch(_0x42626d){case _0xd1a5('0xf9'):_0x51e60d[_0xd1a5('0x42')]['push'](_0xd1a5('0x11d'),_0xd1a5('0x11e'),'customerPort','deviceModel',_0xd1a5('0x11f'),_0xd1a5('0x120'),'ratingType','ratingValue','referer');break;case _0xd1a5('0x121'):_0x51e60d[_0xd1a5('0x42')][_0xd1a5('0x38')]('subject',_0xd1a5('0x122'));break;case'openchannel':_0x51e60d[_0xd1a5('0x42')]['push'](_0xd1a5('0x123'),_0xd1a5('0x124'));break;}return db[_[_0xd1a5('0x125')](_0x42626d)+_0xd1a5('0x126')][_0xd1a5('0x114')](_0x51e60d)[_0xd1a5('0x2a')](function(_0x2d5110){_0xa02365[_0xd1a5('0x27')]+=_0x2d5110[_0xd1a5('0x27')];return _[_0xd1a5('0x5c')](_0x2d5110[_0xd1a5('0xd2')],function(_0x1a2f7c){var _0x292c0e=_0x1a2f7c[_0xd1a5('0x9f')]({'plain':!![]});_0x292c0e[_0xd1a5('0x100')]=_0x42626d;if(_0x292c0e[_0xd1a5('0x11c')]){_0x292c0e[_0xd1a5('0x11c')]={'id':_0x292c0e['Owner']['id'],'name':_0x292c0e['Owner'][_0xd1a5('0x2f')],'fullname':_0x292c0e[_0xd1a5('0x11c')]['fullname']};}return _0x292c0e;});});}});return Promise['all'](_0x1ee8ee);})[_0xd1a5('0x2a')](function(_0x4c5b78){return _(_0x4c5b78)[_0xd1a5('0x127')]()['sortBy'](_0xd1a5('0x10e'))[_0xd1a5('0x128')]()[_0xd1a5('0x5a')]();})[_0xd1a5('0x2a')](function(_0x18ee33){_0xa02365['rows']=_0x42e9e6[_0xd1a5('0x25')]?_0x18ee33[_0xd1a5('0x129')](_0x42e9e6[_0xd1a5('0x24')],_0x42e9e6[_0xd1a5('0x24')]+_0x42e9e6['limit']):_0x18ee33;return _0xa02365;})['then'](respondWithFilteredResult(_0x69ddca,_0x42e9e6))['catch'](handleError(_0x69ddca,null));};
\ No newline at end of file
+var _0xb403=['displayName','findAll','alias','custom','type','values','catch','body','from','get','join','info','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','bulkCreate','each','duplicates','$or','spread','show','color','$and','omit','format','cf_%d','pickBy','startsWith','table','setFields','id\x20=\x20?','toParam','phone','CmHopper','getTags','rawAttributes','intersection','options','setTags','ids','getHoppers','include','getHopperHistories','ContactId','includeAll','getJscriptySessions','uploadCsv','binding_keys','No\x20association\x20keys\x20specified!','binding_values','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','No\x20firstName\x20column\x20specified','root','server/files/tmp','file','filename','chmodSync','0777','fork','../../components/import/cm/csv','CompanyId','socket_timestamp','File\x20uploaded\x20correctly!','pid','upload','createReadStream','parse','meta','binding','../../components/import/cm/csv2','message','start\x20child\x20process\x20correctly!','exit','getJourney','mail','chat','openchannel','fax','whatsapp','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','voice','source','destination','callerid','starttime','endtime','note','createdAt','userSecondDisposition','userThirdDisposition','UserId','fullname','findAndCountAll','startCase','Website','Account','closed','closedAt','disposition','key','Owner','browserName','customerIp','customerPort','deviceModel','ratingMessage','ratingType','ratingValue','subject','substatus','externalUrl','threadId','Interaction','flatten','sortBy','reverse','slice','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','redis','socket.io-emitter','./cmContact.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','error','stack','name','send','index','CmContact','describe','keys','cf_','push','CmCustomField','findOne','trimStart','all','fieldType','model','filters','query','attributes','fields','nolimit','sort','where','pick','select','field','tools_tags','cm_contacts','left_join','cm_user_has_contacts','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','c.deletedAt\x20IS\x20NULL','expr','search','sqlOperator','conditions','length','find','Tag','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','uc.UserId\x20=\x20?','value','castTo','buildExpression','text','start','hasOwnProperty','filter','isEmpty','ListId','c.ListId\x20IN\x20?','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','clone','order','DESC','having','t.id\x20IN\x20?','user','role','agent','some','getLists','c.ListId\x20IS\x20NULL','sequelize','toString','merge','c.firstName','c.lastName','c.phone','c.fax','c.email','c.ListId','c.createdAt','c.deletedAt','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','destroy','params','tags','columnName'];(function(_0x135904,_0x1e252b){var _0x1ce7d5=function(_0x25a721){while(--_0x25a721){_0x135904['push'](_0x135904['shift']());}};_0x1ce7d5(++_0x1e252b);}(_0xb403,0x1bb));var _0x3b40=function(_0x1aa981,_0x45eb1a){_0x1aa981=_0x1aa981-0x0;var _0x332fd6=_0xb403[_0x1aa981];return _0x332fd6;};'use strict';var emlformat=require(_0x3b40('0x0'));var rimraf=require(_0x3b40('0x1'));var zipdir=require(_0x3b40('0x2'));var jsonpatch=require(_0x3b40('0x3'));var rp=require('request-promise');var moment=require(_0x3b40('0x4'));var BPromise=require(_0x3b40('0x5'));var Mustache=require(_0x3b40('0x6'));var util=require(_0x3b40('0x7'));var path=require(_0x3b40('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3b40('0x9'));var fs=require('fs');var fs_extra=require(_0x3b40('0xa'));var _=require(_0x3b40('0xb'));var squel=require(_0x3b40('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3b40('0xd'));var querystring=require('querystring');var Papa=require(_0x3b40('0xe'));var Redis=require(_0x3b40('0xf'));var authService=require(_0x3b40('0x10'));var qs=require(_0x3b40('0x11'));var as=require(_0x3b40('0x12'));var hardwareService=require(_0x3b40('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x3b40('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x3b40('0x15')]=_['defaults'](config[_0x3b40('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0x3b40('0x16'))(new Redis(config[_0x3b40('0x15')]));require(_0x3b40('0x17'))[_0x3b40('0x18')](socket);function respondWithStatusCode(_0x51c129,_0x28a2a2){_0x28a2a2=_0x28a2a2||0xcc;return function(_0x19aa9c){if(_0x19aa9c){return _0x51c129[_0x3b40('0x19')](_0x28a2a2);}return _0x51c129[_0x3b40('0x1a')](_0x28a2a2)[_0x3b40('0x1b')]();};}function respondWithResult(_0x56f466,_0xa41ff1){_0xa41ff1=_0xa41ff1||0xc8;return function(_0x1f3839){if(_0x1f3839){return _0x56f466[_0x3b40('0x1a')](_0xa41ff1)[_0x3b40('0x1c')](_0x1f3839);}};}function respondWithFilteredResult(_0x5587a0,_0x422918){return function(_0x3700f5){if(_0x3700f5){var _0x8a84b2=typeof _0x422918[_0x3b40('0x1d')]===_0x3b40('0x1e')&&typeof _0x422918[_0x3b40('0x1f')]===_0x3b40('0x1e');var _0x23d984=_0x3700f5[_0x3b40('0x20')];var _0x2fe30d=_0x8a84b2?0x0:_0x422918[_0x3b40('0x1d')];var _0x4178ac=_0x8a84b2?_0x3700f5[_0x3b40('0x20')]:_0x422918[_0x3b40('0x1d')]+_0x422918[_0x3b40('0x1f')];var _0x597330;if(_0x4178ac>=_0x23d984){_0x4178ac=_0x23d984;_0x597330=0xc8;}else{_0x597330=0xce;}_0x5587a0[_0x3b40('0x1a')](_0x597330);return _0x5587a0['set'](_0x3b40('0x21'),_0x2fe30d+'-'+_0x4178ac+'/'+_0x23d984)[_0x3b40('0x1c')](_0x3700f5);}return null;};}function patchUpdates(_0x2df8f8){return function(_0x346944){try{jsonpatch['apply'](_0x346944,_0x2df8f8,!![]);}catch(_0x51f1b8){return BPromise[_0x3b40('0x22')](_0x51f1b8);}return _0x346944[_0x3b40('0x23')]();};}function saveUpdates(_0x2047e9,_0xbb4c97){return function(_0x407634){if(_0x407634){return _0x407634[_0x3b40('0x24')](_0x2047e9)['then'](function(_0x4a1d1a){return _0x4a1d1a;});}return null;};}function removeEntity(_0x1a6ab2,_0x33bc63){return function(_0x58b6f8){if(_0x58b6f8){return _0x58b6f8['destroy']()[_0x3b40('0x25')](function(){_0x1a6ab2[_0x3b40('0x1a')](0xcc)[_0x3b40('0x1b')]();});}};}function handleEntityNotFound(_0x1997db,_0x54e13f){return function(_0x39aac6){if(!_0x39aac6){_0x1997db['sendStatus'](0x194);}return _0x39aac6;};}function handleError(_0x5491ed,_0x480ec7){_0x480ec7=_0x480ec7||0x1f4;return function(_0x5b8cd5){logger[_0x3b40('0x26')](_0x5b8cd5[_0x3b40('0x27')]);if(_0x5b8cd5['name']){delete _0x5b8cd5[_0x3b40('0x28')];}_0x5491ed[_0x3b40('0x1a')](_0x480ec7)[_0x3b40('0x29')](_0x5b8cd5);};}exports[_0x3b40('0x2a')]=function(_0x106aac,_0x253163){var _0x1025d7={},_0x49c5b5={},_0x4dd423={'count':0x0,'rows':[]};return db[_0x3b40('0x2b')][_0x3b40('0x2c')]()['then'](function(_0x3de1b7){var _0x277c6e=[];for(var _0x20f206=0x0;_0x20f206<Object[_0x3b40('0x2d')](_0x3de1b7)['length'];_0x20f206++){var _0x1391bd=Object[_0x3b40('0x2d')](_0x3de1b7)[_0x20f206];if(_['startsWith'](_0x1391bd,_0x3b40('0x2e'))){_0x277c6e[_0x3b40('0x2f')](db[_0x3b40('0x30')][_0x3b40('0x31')]({'where':{'id':_[_0x3b40('0x32')](_0x1391bd,_0x3b40('0x2e'))},'raw':!![]}));}}return BPromise[_0x3b40('0x33')](_0x277c6e)[_0x3b40('0x25')](function(_0x490d25){for(var _0x4478a7=0x0;_0x4478a7<_0x490d25['length'];_0x4478a7++){if(_0x490d25[_0x4478a7]){var _0x4b90d5=_0x3b40('0x2e')+_0x490d25[_0x4478a7]['id'];var _0x492edb=_0x3de1b7[_0x4b90d5];_0x492edb[_0x3b40('0x34')]=_0x490d25[_0x4478a7]['type'];}}return _0x3de1b7;});})['then'](function(_0x3bc568){_0x49c5b5[_0x3b40('0x35')]=_[_0x3b40('0x2d')](_0x3bc568);_0x49c5b5['query']=_[_0x3b40('0x2d')](_0x106aac['query']);_0x49c5b5[_0x3b40('0x36')]=_['intersection'](_0x49c5b5[_0x3b40('0x35')],_0x49c5b5[_0x3b40('0x37')]);_0x1025d7[_0x3b40('0x38')]=_['intersection'](_0x49c5b5[_0x3b40('0x35')],qs[_0x3b40('0x39')](_0x106aac[_0x3b40('0x37')][_0x3b40('0x39')]));_0x1025d7[_0x3b40('0x38')]=_0x1025d7[_0x3b40('0x38')]['length']?_0x1025d7['attributes']:_0x49c5b5[_0x3b40('0x35')];if(!_0x106aac[_0x3b40('0x37')]['hasOwnProperty'](_0x3b40('0x3a'))){_0x1025d7[_0x3b40('0x1f')]=qs[_0x3b40('0x1f')](_0x106aac[_0x3b40('0x37')][_0x3b40('0x1f')]);_0x1025d7[_0x3b40('0x1d')]=qs[_0x3b40('0x1d')](_0x106aac[_0x3b40('0x37')][_0x3b40('0x1d')]);}_0x1025d7['order']=qs[_0x3b40('0x3b')](_0x106aac[_0x3b40('0x37')][_0x3b40('0x3b')]);_0x1025d7[_0x3b40('0x3c')]=qs[_0x3b40('0x36')](_[_0x3b40('0x3d')](_0x106aac[_0x3b40('0x37')],_0x49c5b5[_0x3b40('0x36')]),_0x3bc568);var _0x20f661=[];var _0x329fe1=squel[_0x3b40('0x3e')]()[_0x3b40('0x3f')]('id')[_0x3b40('0x3f')](_0x3b40('0x28'))[_0x3b40('0x3f')]('color')['from'](_0x3b40('0x40'));var _0x5ded01=squel[_0x3b40('0x3e')]()['from'](_0x3b40('0x41'),'c')[_0x3b40('0x42')](_0x3b40('0x43'),'uc','uc.CmContactId\x20=\x20c.id')['left_join'](_0x3b40('0x44'),'ct',_0x3b40('0x45'))[_0x3b40('0x42')](_0x3b40('0x40'),'t','t.id\x20=\x20ct.TagId')[_0x3b40('0x3c')](_0x3b40('0x46'));var _0x4c6a71=squel[_0x3b40('0x47')]();var _0x3dff72=[];var _0x491d59=squel['expr']();var _0x453efd;if(_0x106aac['query'][_0x3b40('0x48')]){_0x453efd=as['parseSearch'](_0x106aac[_0x3b40('0x37')]['search']);var _0x1c92a2=_0x453efd[_0x3b40('0x49')];for(var _0x1c97cb=0x0;_0x1c97cb<_0x453efd[_0x3b40('0x4a')][_0x3b40('0x4b')];_0x1c97cb++){var _0x26b608=_0x453efd[_0x3b40('0x4a')][_0x1c97cb];var _0x16352e='c';var _0x4f46d5=_(_0x3bc568)['keys']()[_0x3b40('0x4c')](function(_0x521665){return _0x521665===_0x26b608[_0x3b40('0x3f')];});if(_0x4f46d5)_0x4f46d5=_0x3bc568[_0x26b608[_0x3b40('0x3f')]];if(!_0x4f46d5){if(_0x26b608[_0x3b40('0x3f')]===_0x3b40('0x4d')){var _0x7257d8=_0x26b608['value'][_0x3b40('0x4e')](',')[_0x3b40('0x4f')](function(_0x1be89c){return Number(_0x1be89c);});_0x7257d8[_0x3b40('0x50')](function(_0x18cc3b){_0x491d59['or'](_0x3b40('0x51'),'%,'+_0x18cc3b+',%');});_0x3dff72=_[_0x3b40('0x52')](_0x3dff72,_0x7257d8);}else if(_0x26b608[_0x3b40('0x3f')]===_0x3b40('0x53')){_0x4c6a71['and'](_0x3b40('0x54'),_0x26b608[_0x3b40('0x55')]);}}else{if(_0x26b608['field']==='dateOfBirth'||_0x4f46d5[_0x3b40('0x34')]==='datetime')_0x26b608[_0x3b40('0x56')]='DATE';var _0x4ba2d0=as[_0x3b40('0x57')](_0x16352e,_0x4f46d5['type'],_0x26b608);_0x4c6a71[_0x1c92a2](_0x4ba2d0[_0x3b40('0x58')],_0x4ba2d0[_0x3b40('0x55')][_0x3b40('0x59')],_0x4ba2d0[_0x3b40('0x55')][_0x3b40('0x1b')]);}}}else{var _0x476142=_(Object[_0x3b40('0x2d')](_0x106aac[_0x3b40('0x37')]))[_0x3b40('0x4f')](function(_0x3ee3a5){return _0x3bc568[_0x3b40('0x5a')](_0x3ee3a5)?_0x3ee3a5:undefined;})[_0x3b40('0x5b')](function(_0x258798){return!_['isNil'](_0x258798);})[_0x3b40('0x55')]();if(_0x106aac[_0x3b40('0x37')]['Contact'])_0x476142[_0x3b40('0x2f')]('Contact');if(!_[_0x3b40('0x5c')](_0x476142)){_0x476142['forEach'](function(_0x50e912){if(_0x50e912===_0x3b40('0x5d')){_0x5ded01[_0x3b40('0x3c')](_0x3b40('0x5e'),[]['concat'](_0x106aac[_0x3b40('0x37')][_0x50e912]));}else if(_0x50e912==='Contact'){var _0x1c71a4='%'+_0x106aac[_0x3b40('0x37')][_0x50e912]+'%';_0x5ded01[_0x3b40('0x3c')](_0x3b40('0x5f'),_0x1c71a4);}else{_0x5ded01['where']('c.'+_0x50e912+_0x3b40('0x60'),_0x106aac[_0x3b40('0x37')][_0x50e912]);}});}if(_0x106aac[_0x3b40('0x37')][_0x3b40('0x61')]){_0x3dff72=_[_0x3b40('0x62')](_0x106aac[_0x3b40('0x37')][_0x3b40('0x61')])?_0x106aac[_0x3b40('0x37')][_0x3b40('0x61')]:new Array(_0x106aac[_0x3b40('0x37')][_0x3b40('0x61')]);_0x3dff72['forEach'](function(_0x1e839c){_0x491d59['or'](_0x3b40('0x51'),'%,'+_0x1e839c+',%');});}if(_0x106aac[_0x3b40('0x37')]['filter']){var _0x41e05d=_0x106aac['query']['filter']['replace']('\x5c','\x5c\x5c')[_0x3b40('0x63')](/'/g,'\x27\x27');if(_0x41e05d['split']('\x20')[_0x3b40('0x4b')]>0x1){_0x4c6a71['or'](_0x3b40('0x64'),qs[_0x3b40('0x65')](_0x41e05d),null);}else{if(qs[_0x3b40('0x66')](_0x41e05d)){_0x4c6a71['or']('c.id\x20LIKE\x20?',_0x41e05d+'%');_0x4c6a71['or'](_0x3b40('0x67'),_0x41e05d+'%');_0x4c6a71['or'](_0x3b40('0x68'),_0x41e05d+'%');_0x4c6a71['or'](_0x3b40('0x69'),_0x41e05d+'%');}else if(qs['isEmail'](_0x41e05d)){_0x4c6a71['or'](_0x3b40('0x6a'),_0x41e05d+'%');}else{_0x4c6a71['or'](_0x3b40('0x6b'),'%'+_0x41e05d+'%');_0x4c6a71['or'](_0x3b40('0x6c'),'%'+_0x41e05d+'%');_0x4c6a71['or']('c.email\x20LIKE\x20?','%'+_0x41e05d+'%');}}}}_0x5ded01[_0x3b40('0x3c')](_0x4c6a71);_0x5ded01[_0x3b40('0x6d')](_0x3b40('0x6e'));var _0x4909fd={'type':db[_0x3b40('0x6f')][_0x3b40('0x70')]['SELECT'],'raw':!![]};var _0x1adf7b=_0x5ded01[_0x3b40('0x71')]()['field'](_0x3b40('0x6e'));if(_0x1025d7[_0x3b40('0x72')]){_0x1025d7['order']['forEach'](function(_0x314adc){_0x5ded01['order']('c.'+_0x314adc[0x0],_0x314adc[0x1]===_0x3b40('0x73')?![]:!![]);});}if(!_[_0x3b40('0x5c')](_0x3dff72)){_0x5ded01[_0x3b40('0x74')](_0x491d59);_0x1adf7b['where'](_0x3b40('0x75'),_0x3dff72);}BPromise['resolve']()[_0x3b40('0x25')](function(){if(!_0x453efd)return;if(_0x106aac[_0x3b40('0x76')][_0x3b40('0x77')]!==_0x3b40('0x78'))return;if(!_[_0x3b40('0x79')](_0x453efd['conditions'],[_0x3b40('0x3f'),_0x3b40('0x53')])){return _0x106aac[_0x3b40('0x76')][_0x3b40('0x7a')]({'attributes':['id'],'raw':!![]})[_0x3b40('0x25')](function(_0x68e60e){if(_[_0x3b40('0x5c')](_0x68e60e)){_0x1adf7b[_0x3b40('0x3c')](_0x3b40('0x7b'));_0x5ded01[_0x3b40('0x3c')](_0x3b40('0x7b'));}else{_0x1adf7b[_0x3b40('0x3c')]('c.ListId\x20IN\x20?',_[_0x3b40('0x4f')](_0x68e60e,'id'));_0x5ded01[_0x3b40('0x3c')](_0x3b40('0x5e'),_[_0x3b40('0x4f')](_0x68e60e,'id'));}});}})[_0x3b40('0x25')](function(){if(_0x106aac['user'][_0x3b40('0x77')]==='agent'&&!_0x453efd&&!_0x106aac[_0x3b40('0x37')]['ListId'])return[];return db[_0x3b40('0x7c')][_0x3b40('0x37')](_0x1adf7b[_0x3b40('0x7d')](),_0x4909fd);})['then'](function(_0x38aaa7){_0x4dd423[_0x3b40('0x20')]=_0x38aaa7[_0x3b40('0x4b')];if(_0x4dd423[_0x3b40('0x20')]===0x0)return[];return db[_0x3b40('0x7c')][_0x3b40('0x37')](_0x329fe1[_0x3b40('0x7d')](),_0x4909fd)[_0x3b40('0x25')](function(_0x49608f){_0x20f661=_['keyBy'](_0x49608f,'id');_0x4909fd=_[_0x3b40('0x7e')](_0x4909fd,{'model':db['CmContact'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x106aac[_0x3b40('0x37')][_0x3b40('0x39')]){_0x1025d7[_0x3b40('0x38')][_0x3b40('0x50')](function(_0x1126c6){_0x5ded01[_0x3b40('0x3f')]('c.'+_0x1126c6);});}else{_0x5ded01[_0x3b40('0x3f')]('c.id');_0x5ded01[_0x3b40('0x3f')](_0x3b40('0x7f'));_0x5ded01['field'](_0x3b40('0x80'));_0x5ded01[_0x3b40('0x3f')](_0x3b40('0x81'));_0x5ded01[_0x3b40('0x3f')]('c.mobile');_0x5ded01[_0x3b40('0x3f')](_0x3b40('0x82'));_0x5ded01['field'](_0x3b40('0x83'));_0x5ded01[_0x3b40('0x3f')](_0x3b40('0x84'));_0x5ded01[_0x3b40('0x3f')](_0x3b40('0x85'));_0x5ded01[_0x3b40('0x3f')](_0x3b40('0x86'));_0x5ded01[_0x3b40('0x3f')]('c.CompanyId');_0x5ded01['field'](_0x3b40('0x87'),_0x3b40('0x88'));}if(_0x1025d7[_0x3b40('0x1f')])_0x5ded01[_0x3b40('0x1f')](_0x1025d7[_0x3b40('0x1f')]);if(_0x1025d7[_0x3b40('0x1d')])_0x5ded01[_0x3b40('0x1d')](_0x1025d7[_0x3b40('0x1d')]);return db['sequelize'][_0x3b40('0x37')](_0x5ded01[_0x3b40('0x7d')](),_0x4909fd);});})['then'](function(_0x2dd124){_0x2dd124[_0x3b40('0x50')](function(_0x3062c1){if(_0x3062c1[_0x3b40('0x88')]){_0x3062c1['Tags']=[];_0x3062c1[_0x3b40('0x88')][_0x3b40('0x4e')](',')[_0x3b40('0x50')](function(_0x5b8ad8){_0x3062c1[_0x3b40('0x89')][_0x3b40('0x2f')](_0x20f661[_0x5b8ad8]);});}delete _0x3062c1[_0x3b40('0x88')];});_0x4dd423[_0x3b40('0x8a')]=_0x2dd124;return _0x4dd423;})[_0x3b40('0x25')](respondWithFilteredResult(_0x253163,_0x1025d7));})['catch'](handleError(_0x253163,null));};exports[_0x3b40('0x8b')]=function(_0x4ca867,_0x2f39f2){return db['CmContact'][_0x3b40('0x4c')]({'where':{'id':_0x4ca867[_0x3b40('0x8c')]['id']}})['then'](handleEntityNotFound(_0x2f39f2,null))[_0x3b40('0x25')](removeEntity(_0x2f39f2,null))['catch'](handleError(_0x2f39f2,null));};exports[_0x3b40('0x2c')]=function(_0x406487,_0x3ddc1b){return db[_0x3b40('0x2b')][_0x3b40('0x2c')]()['then'](function(_0x196b59){delete _0x196b59[_0x3b40('0x8d')];for(var _0x41c312=0x0;_0x41c312<Object[_0x3b40('0x2d')](_0x196b59)[_0x3b40('0x4b')];_0x41c312++){var _0x492bc4=Object[_0x3b40('0x2d')](_0x196b59)[_0x41c312];if(!_['startsWith'](_0x492bc4,_0x3b40('0x2e'))){_0x196b59[_0x492bc4][_0x3b40('0x8e')]=_0x492bc4;_0x196b59[_0x492bc4][_0x3b40('0x8f')]=_0x492bc4;}}return _0x196b59;})[_0x3b40('0x25')](function(_0x22fab3){var _0x113c62={'where':{'$or':[{'ListId':_0x406487[_0x3b40('0x37')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x3b40('0x30')][_0x3b40('0x90')](_0x113c62)['then'](function(_0x57fe16){for(var _0xd730e2=0x0;_0xd730e2<_0x57fe16[_0x3b40('0x4b')];_0xd730e2++){var _0x4a54c1='cf_'+_0x57fe16[_0xd730e2]['id'];_0x22fab3[_0x4a54c1][_0x3b40('0x8e')]=_0x4a54c1;_0x22fab3[_0x4a54c1][_0x3b40('0x8f')]=_0x57fe16[_0xd730e2][_0x3b40('0x91')];_0x22fab3[_0x4a54c1][_0x3b40('0x92')]={'type':_0x57fe16[_0xd730e2][_0x3b40('0x93')],'values':_0x57fe16[_0xd730e2][_0x3b40('0x94')]};}Object[_0x3b40('0x2d')](_0x22fab3)[_0x3b40('0x50')](function(_0x58ebf6){if(!_0x22fab3[_0x58ebf6][_0x3b40('0x5a')](_0x3b40('0x8e'))){delete _0x22fab3[_0x58ebf6];}});return _0x22fab3;});})[_0x3b40('0x25')](respondWithResult(_0x3ddc1b,null))[_0x3b40('0x95')](handleError(_0x3ddc1b,null));};exports['merge']=function(_0x5a8745,_0x1617d5){var _0x5e5697;var _0x2dce28;var _0x3430e4;if(_0x5a8745[_0x3b40('0x96')]['id']){delete _0x5a8745[_0x3b40('0x96')]['id'];}return db[_0x3b40('0x2b')][_0x3b40('0x90')]({'where':{'id':[_0x5a8745[_0x3b40('0x96')]['to'],_0x5a8745[_0x3b40('0x96')][_0x3b40('0x97')]]}})[_0x3b40('0x25')](function(_0x5ba13f){if(_0x5ba13f){if(_0x5ba13f[_0x3b40('0x4b')]!==0x2){return null;}_0x5ba13f[0x0]=_0x5ba13f[0x0][_0x3b40('0x98')]({'plain':!![]});_0x5ba13f[0x1]=_0x5ba13f[0x1][_0x3b40('0x98')]({'plain':!![]});delete _0x5ba13f[0x0]['id'];delete _0x5ba13f[0x1]['id'];return _['mergeWith'](_0x5ba13f[0x0],_0x5ba13f[0x1],function(_0x1d796f,_0x568a70){if(Array['isArray'](_0x568a70)&&!_0x568a70[_0x3b40('0x4b')]){return _0x1d796f;}else if(!_0x568a70){return _0x1d796f;}});}})[_0x3b40('0x25')](handleEntityNotFound(_0x1617d5,null))[_0x3b40('0x25')](function(_0x25cc55){if(_0x25cc55){if(_0x25cc55['tags']&&_[_0x3b40('0x62')](_0x25cc55[_0x3b40('0x8d')])){_0x25cc55['tags']=_0x25cc55[_0x3b40('0x8d')][_0x3b40('0x99')]();}logger['info']('[CmContact][merge]\x20to\x20%s\x20from\x20%s',_0x5a8745[_0x3b40('0x96')]['to'],_0x5a8745[_0x3b40('0x96')][_0x3b40('0x97')]);return db['CmHopper']['destroy']({'where':{'ContactId':[_0x5a8745[_0x3b40('0x96')]['to'],_0x5a8745['body'][_0x3b40('0x97')]]}})[_0x3b40('0x25')](function(_0x1540a9){logger[_0x3b40('0x9a')](_0x3b40('0x9b'),_0x1540a9);return db[_0x3b40('0x9c')][_0x3b40('0x8b')]({'where':{'ContactId':[_0x5a8745[_0x3b40('0x96')]['to'],_0x5a8745[_0x3b40('0x96')]['from']]}})['then'](function(_0x248bec){logger[_0x3b40('0x9a')](_0x3b40('0x9d'),_0x248bec);return db[_0x3b40('0x2b')][_0x3b40('0x9e')](_0x25cc55);});});}})[_0x3b40('0x25')](function(_0x318b37){if(_0x318b37){_0x5e5697=_0x318b37;_0x2dce28={'ContactId':_0x5e5697['id']};_0x3430e4={'where':{'ContactId':[_0x5a8745['body']['to'],_0x5a8745[_0x3b40('0x96')][_0x3b40('0x97')]]}};return db[_0x3b40('0x9f')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xa0')]['update'](_0x2dce28,_0x3430e4);}})['then'](function(){if(_0x5e5697){return db[_0x3b40('0xa1')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xa2')]['update'](_0x2dce28,_0x3430e4);}})['then'](function(){if(_0x5e5697){return db[_0x3b40('0xa3')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})['then'](function(){if(_0x5e5697){return db['MailInteraction'][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xa3')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xa4')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xa5')]['update'](_0x2dce28,_0x3430e4);}})['then'](function(){if(_0x5e5697){return db[_0x3b40('0xa6')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xa7')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xa8')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xa9')]['update'](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xaa')]['update'](_0x2dce28,_0x3430e4);}})['then'](function(){if(_0x5e5697){return db[_0x3b40('0xab')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xac')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xad')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xae')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db['FaxQueueReport'][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xaf')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})['then'](function(){if(_0x5e5697){return db['OpenchannelQueueReport']['update'](_0x2dce28,_0x3430e4);}})['then'](function(){if(_0x5e5697){return db['SmsQueueReport'][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})['then'](function(){if(_0x5e5697){return db[_0x3b40('0xb0')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xb1')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xb2')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})[_0x3b40('0x25')](function(){if(_0x5e5697){return db[_0x3b40('0xb3')][_0x3b40('0x24')](_0x2dce28,_0x3430e4);}})['then'](function(){if(_0x5e5697){return db['CmContact'][_0x3b40('0x8b')]({'where':{'id':[_0x5a8745[_0x3b40('0x96')]['to'],_0x5a8745[_0x3b40('0x96')][_0x3b40('0x97')]]}});}})[_0x3b40('0x25')](function(){if(_0x5e5697){return _0x5e5697;}})[_0x3b40('0x25')](respondWithResult(_0x1617d5,null))[_0x3b40('0x95')](handleError(_0x1617d5,null));};exports[_0x3b40('0x9e')]=function(_0x2c6443,_0xb44c56){return db['CmContact'][_0x3b40('0x2c')]()[_0x3b40('0x25')](function(_0x4fa370){if(_0x2c6443['body']['tags']&&_['isArray'](_0x2c6443[_0x3b40('0x96')][_0x3b40('0x8d')])){if(_0x2c6443['body']['tags'][_0x3b40('0x4b')]){_0x2c6443[_0x3b40('0x96')][_0x3b40('0x8d')]=_0x2c6443['body']['tags']['join'](';')+';';}else{_0x2c6443[_0x3b40('0x96')]['tags']=null;}}else{_0x2c6443[_0x3b40('0x96')][_0x3b40('0x8d')]=null;}return db[_0x3b40('0x2b')][_0x3b40('0x9e')](_0x2c6443[_0x3b40('0x96')],{'fields':_[_0x3b40('0x2d')](_0x4fa370),'raw':!![]});})[_0x3b40('0x25')](respondWithResult(_0xb44c56,0xc9))['catch'](handleError(_0xb44c56,null));};exports[_0x3b40('0xb4')]=function(_0x4525cf,_0x4e7139){var _0x20e731=[];var _0x1c122b=0x0;var _0x3ea7d7=0x0;var _0xfe33b1=0x0;return db[_0x3b40('0x2b')][_0x3b40('0x2c')]()['then'](function(_0x2b43c4){return BPromise[_0x3b40('0xb5')](_0x4525cf[_0x3b40('0x96')],function(_0x32c5a5){var _0x505ead={'where':{'$or':[]},'defaults':_0x32c5a5,'fields':_[_0x3b40('0x2d')](_0x2b43c4),'raw':!![]};if(_0x32c5a5[_0x3b40('0xb6')]){for(var _0x277dc6=0x0;_0x277dc6<_0x32c5a5[_0x3b40('0xb6')]['length'];_0x277dc6++){var _0xfd532e={};_0xfd532e[_0x32c5a5[_0x3b40('0xb6')][_0x277dc6]]=_0x32c5a5[_0x32c5a5[_0x3b40('0xb6')][_0x277dc6]];_0x505ead[_0x3b40('0x3c')][_0x3b40('0xb7')][_0x3b40('0x2f')](_0xfd532e);}_0x505ead['where'][_0x3b40('0x5d')]=_0x32c5a5[_0x3b40('0x5d')];}return db[_0x3b40('0x2b')]['findOrCreate'](_0x505ead)[_0x3b40('0xb8')](function(_0x2480bf,_0x195abe){if(_0x195abe){_0x1c122b++;}else{_0xfe33b1++;}})['catch'](function(_0x69ad13){console[_0x3b40('0x26')](_0x69ad13);_0x3ea7d7++;});});})['then'](function(_0x508576){if(_0x508576){return{'success':_0x1c122b,'failure':_0x3ea7d7,'duplicates':_0xfe33b1};}})[_0x3b40('0x25')](respondWithResult(_0x4e7139,0xc9))[_0x3b40('0x95')](handleError(_0x4e7139,null));};exports[_0x3b40('0xb9')]=function(_0x441112,_0x3d2d3c,_0x213c53){var _0x1d2148;return db[_0x3b40('0x2b')][_0x3b40('0x2c')]()[_0x3b40('0x25')](function(_0x4c5df5){return db[_0x3b40('0x2b')]['find']({'where':{'id':_0x441112['params']['id']},'include':[{'model':db['Tag'],'as':_0x3b40('0x89'),'attributes':['id',_0x3b40('0x28'),_0x3b40('0xba')],'required':_0x441112[_0x3b40('0x37')]['tag']?!![]:![]}],'attributes':_[_0x3b40('0x2d')](_0x4c5df5)});})['then'](function(_0x4e8986){_0x1d2148=_0x4e8986[_0x3b40('0x98')]({'plain':!![]});var _0x21b541={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4e8986&&_0x4e8986[_0x3b40('0x5d')]){if(_0x4e8986['ListId']){_0x21b541[_0x3b40('0x3c')][_0x3b40('0xbb')][_0x3b40('0x2f')]({'ListId':{'$ne':_0x4e8986[_0x3b40('0x5d')]}});}}return db[_0x3b40('0x30')][_0x3b40('0x90')](_0x21b541);})['then'](function(_0x172b0b){return _[_0x3b40('0xbc')](_0x1d2148,_[_0x3b40('0x4f')](_0x172b0b,function(_0x132195){return util[_0x3b40('0xbd')](_0x3b40('0xbe'),_0x132195['id']);}));})[_0x3b40('0x25')](handleEntityNotFound(_0x3d2d3c,null))['then'](respondWithResult(_0x3d2d3c,null))[_0x3b40('0x95')](handleError(_0x3d2d3c,null));};exports[_0x3b40('0x24')]=function(_0x56edc6,_0x75996a){var _0x1823e6;if(_0x56edc6[_0x3b40('0x96')]['id']){delete _0x56edc6[_0x3b40('0x96')]['id'];}return db[_0x3b40('0x2b')][_0x3b40('0x4c')]({'where':{'id':_0x56edc6[_0x3b40('0x8c')]['id']}})['then'](handleEntityNotFound(_0x75996a,null))[_0x3b40('0x25')](saveUpdates(_0x56edc6[_0x3b40('0x96')],null))['then'](function(_0x2cf925){_0x1823e6=_0x2cf925;var _0x272449={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x2cf925&&_0x2cf925[_0x3b40('0x5d')]){if(_0x2cf925[_0x3b40('0x5d')]){_0x272449[_0x3b40('0x3c')][_0x3b40('0xbb')][_0x3b40('0x2f')]({'ListId':{'$ne':_0x2cf925['ListId']}});}}return db[_0x3b40('0x30')][_0x3b40('0x90')](_0x272449);})[_0x3b40('0x25')](function(_0xe59a87){if(_0xe59a87){return _[_0x3b40('0xbc')](_[_0x3b40('0xbf')](_0x56edc6[_0x3b40('0x96')],function(_0x460ee7,_0x47caa5){return _[_0x3b40('0xc0')](_0x47caa5,'cf_');}),_[_0x3b40('0x4f')](_0xe59a87,function(_0x5b7099){return util[_0x3b40('0xbd')](_0x3b40('0xbe'),_0x5b7099['id']);}));}})[_0x3b40('0x25')](function(_0x56e38d){if(_0x56e38d&&!_['isEmpty'](_0x56e38d)){var _0x55455b=squel[_0x3b40('0x24')]()[_0x3b40('0xc1')]('cm_contacts')[_0x3b40('0xc2')](_0x56e38d)[_0x3b40('0x3c')](_0x3b40('0xc3'),_0x56edc6[_0x3b40('0x8c')]['id'])[_0x3b40('0xc4')]();return db[_0x3b40('0x7c')][_0x3b40('0x37')](_0x55455b[_0x3b40('0x58')],{'replacements':_0x55455b[_0x3b40('0x94')]});}})[_0x3b40('0x25')](function(){if(_0x56edc6[_0x3b40('0x96')][_0x3b40('0xc5')]&&_0x1823e6){return db[_0x3b40('0xc6')][_0x3b40('0x24')]({'phone':_0x56edc6[_0x3b40('0x96')][_0x3b40('0xc5')]},{'where':{'ContactId':_0x1823e6['id']}});}})[_0x3b40('0x25')](function(){return _0x1823e6;})[_0x3b40('0x25')](respondWithResult(_0x75996a,null))[_0x3b40('0x95')](handleError(_0x75996a,null));};exports[_0x3b40('0xc7')]=function(_0x56ae5b,_0x22b3cc,_0x142291){var _0x595cdd={};var _0x54f584={};var _0x1a6343;var _0x373225;return db[_0x3b40('0x2b')][_0x3b40('0x31')]({'where':{'id':_0x56ae5b[_0x3b40('0x8c')]['id']}})[_0x3b40('0x25')](handleEntityNotFound(_0x22b3cc,null))[_0x3b40('0x25')](function(_0x4b0064){if(_0x4b0064){_0x1a6343=_0x4b0064;_0x54f584['model']=_[_0x3b40('0x2d')](db['Tag'][_0x3b40('0xc8')]);_0x54f584['query']=_['keys'](_0x56ae5b[_0x3b40('0x37')]);_0x54f584[_0x3b40('0x36')]=_[_0x3b40('0xc9')](_0x54f584[_0x3b40('0x35')],_0x54f584[_0x3b40('0x37')]);_0x595cdd[_0x3b40('0x38')]=_[_0x3b40('0xc9')](_0x54f584[_0x3b40('0x35')],qs[_0x3b40('0x39')](_0x56ae5b[_0x3b40('0x37')][_0x3b40('0x39')]));_0x595cdd[_0x3b40('0x38')]=_0x595cdd[_0x3b40('0x38')]['length']?_0x595cdd['attributes']:_0x54f584[_0x3b40('0x35')];_0x595cdd[_0x3b40('0x72')]=qs[_0x3b40('0x3b')](_0x56ae5b['query'][_0x3b40('0x3b')]);_0x595cdd[_0x3b40('0x3c')]=qs[_0x3b40('0x36')](_[_0x3b40('0x3d')](_0x56ae5b[_0x3b40('0x37')],_0x54f584[_0x3b40('0x36')]));if(_0x56ae5b[_0x3b40('0x37')][_0x3b40('0x5b')]){_0x595cdd[_0x3b40('0x3c')]=_[_0x3b40('0x7e')](_0x595cdd[_0x3b40('0x3c')],{'$or':_[_0x3b40('0x4f')](_0x595cdd[_0x3b40('0x38')],function(_0xb3ec63){var _0x165538={};_0x165538[_0xb3ec63]={'$like':'%'+_0x56ae5b['query'][_0x3b40('0x5b')]+'%'};return _0x165538;})});}_0x595cdd=_[_0x3b40('0x7e')]({},_0x595cdd,_0x56ae5b[_0x3b40('0xca')]);return _0x1a6343[_0x3b40('0xc7')](_0x595cdd);}})[_0x3b40('0x25')](function(_0x50d10b){if(_0x50d10b){_0x373225=_0x50d10b[_0x3b40('0x4b')];if(!_0x56ae5b['query'][_0x3b40('0x5a')](_0x3b40('0x3a'))){_0x595cdd[_0x3b40('0x1f')]=qs['limit'](_0x56ae5b['query']['limit']);_0x595cdd['offset']=qs['offset'](_0x56ae5b[_0x3b40('0x37')]['offset']);}return _0x1a6343[_0x3b40('0xc7')](_0x595cdd);}})[_0x3b40('0x25')](function(_0x4bdacc){if(_0x4bdacc){return _0x4bdacc?{'count':_0x373225,'rows':_0x4bdacc}:null;}})[_0x3b40('0x25')](respondWithResult(_0x22b3cc,null))['catch'](handleError(_0x22b3cc,null));};exports[_0x3b40('0xcb')]=function(_0x12a3e6,_0x531aa0,_0x5ac4a8){if(_0x12a3e6[_0x3b40('0x96')]['id']){delete _0x12a3e6[_0x3b40('0x96')]['id'];}return db[_0x3b40('0x2b')][_0x3b40('0x31')]({'where':{'id':_0x12a3e6['params']['id']}})[_0x3b40('0x25')](handleEntityNotFound(_0x531aa0,null))[_0x3b40('0x25')](function(_0x2fb5c9){if(_0x2fb5c9){return _0x2fb5c9[_0x3b40('0xcb')](_0x12a3e6[_0x3b40('0x96')][_0x3b40('0xcc')]||[]);}return null;})['then'](respondWithResult(_0x531aa0,null))['catch'](handleError(_0x531aa0,null));};exports[_0x3b40('0xcd')]=function(_0x37e35d,_0x5f4f63,_0x339c6b){var _0x1012e9={'raw':![],'where':{}};var _0x2b4674={};var _0x188afc={'count':0x0,'rows':[]};return db[_0x3b40('0x2b')]['findOne']({'where':{'id':_0x37e35d[_0x3b40('0x8c')]['id']}})[_0x3b40('0x25')](handleEntityNotFound(_0x5f4f63,null))[_0x3b40('0x25')](function(_0x277271){if(_0x277271){_0x2b4674[_0x3b40('0x35')]=_[_0x3b40('0x2d')](db[_0x3b40('0xc6')][_0x3b40('0xc8')]);_0x2b4674['query']=_[_0x3b40('0x2d')](_0x37e35d[_0x3b40('0x37')]);_0x2b4674[_0x3b40('0x36')]=_['intersection'](_0x2b4674['model'],_0x2b4674[_0x3b40('0x37')]);_0x1012e9[_0x3b40('0x38')]=_[_0x3b40('0xc9')](_0x2b4674[_0x3b40('0x35')],qs[_0x3b40('0x39')](_0x37e35d[_0x3b40('0x37')][_0x3b40('0x39')]));_0x1012e9[_0x3b40('0x38')]=_0x1012e9[_0x3b40('0x38')][_0x3b40('0x4b')]?_0x1012e9[_0x3b40('0x38')]:_0x2b4674[_0x3b40('0x35')];if(!_0x37e35d[_0x3b40('0x37')][_0x3b40('0x5a')](_0x3b40('0x3a'))){_0x1012e9['limit']=qs[_0x3b40('0x1f')](_0x37e35d[_0x3b40('0x37')][_0x3b40('0x1f')]);_0x1012e9[_0x3b40('0x1d')]=qs[_0x3b40('0x1d')](_0x37e35d[_0x3b40('0x37')][_0x3b40('0x1d')]);}_0x1012e9[_0x3b40('0x72')]=qs[_0x3b40('0x3b')](_0x37e35d[_0x3b40('0x37')][_0x3b40('0x3b')]);_0x1012e9['where']=qs[_0x3b40('0x36')](_[_0x3b40('0x3d')](_0x37e35d[_0x3b40('0x37')],_0x2b4674[_0x3b40('0x36')]));_0x1012e9[_0x3b40('0x3c')]['ContactId']=_0x277271['id'];if(_0x37e35d[_0x3b40('0x37')][_0x3b40('0x5b')]){_0x1012e9[_0x3b40('0x3c')]=_[_0x3b40('0x7e')](_0x1012e9[_0x3b40('0x3c')],{'$or':_[_0x3b40('0x4f')](_0x1012e9[_0x3b40('0x38')],function(_0x2e6045){var _0x56adba={};_0x56adba[_0x2e6045]={'$like':'%'+_0x37e35d[_0x3b40('0x37')][_0x3b40('0x5b')]+'%'};return _0x56adba;})});}_0x1012e9=_[_0x3b40('0x7e')]({},_0x1012e9,_0x37e35d['options']);return db[_0x3b40('0xc6')][_0x3b40('0x20')]({'where':_0x1012e9[_0x3b40('0x3c')]})[_0x3b40('0x25')](function(_0x2214fd){_0x188afc[_0x3b40('0x20')]=_0x2214fd;if(_0x37e35d[_0x3b40('0x37')]['includeAll']){_0x1012e9[_0x3b40('0xce')]=[{'all':!![]}];}return db[_0x3b40('0xc6')][_0x3b40('0x90')](_0x1012e9);})['then'](function(_0x4d0335){_0x188afc[_0x3b40('0x8a')]=_0x4d0335;return _0x188afc;});}})[_0x3b40('0x25')](respondWithFilteredResult(_0x5f4f63,_0x1012e9))[_0x3b40('0x95')](handleError(_0x5f4f63,null));};exports[_0x3b40('0xcf')]=function(_0x14ced7,_0x1f8b05,_0x453ab1){var _0x55005a={'raw':!![],'where':{}};var _0x92d023={};var _0x44b95e={'count':0x0,'rows':[]};return db[_0x3b40('0x2b')][_0x3b40('0x31')]({'where':{'id':_0x14ced7[_0x3b40('0x8c')]['id']}})[_0x3b40('0x25')](handleEntityNotFound(_0x1f8b05,null))[_0x3b40('0x25')](function(_0x318932){if(_0x318932){_0x92d023['model']=_[_0x3b40('0x2d')](db[_0x3b40('0xab')][_0x3b40('0xc8')]);_0x92d023[_0x3b40('0x37')]=_[_0x3b40('0x2d')](_0x14ced7[_0x3b40('0x37')]);_0x92d023[_0x3b40('0x36')]=_[_0x3b40('0xc9')](_0x92d023[_0x3b40('0x35')],_0x92d023[_0x3b40('0x37')]);_0x55005a['attributes']=_['intersection'](_0x92d023[_0x3b40('0x35')],qs[_0x3b40('0x39')](_0x14ced7['query']['fields']));_0x55005a['attributes']=_0x55005a['attributes'][_0x3b40('0x4b')]?_0x55005a[_0x3b40('0x38')]:_0x92d023[_0x3b40('0x35')];if(!_0x14ced7['query'][_0x3b40('0x5a')](_0x3b40('0x3a'))){_0x55005a[_0x3b40('0x1f')]=qs['limit'](_0x14ced7[_0x3b40('0x37')]['limit']);_0x55005a[_0x3b40('0x1d')]=qs[_0x3b40('0x1d')](_0x14ced7[_0x3b40('0x37')][_0x3b40('0x1d')]);}_0x55005a[_0x3b40('0x72')]=qs[_0x3b40('0x3b')](_0x14ced7[_0x3b40('0x37')][_0x3b40('0x3b')]);_0x55005a[_0x3b40('0x3c')]=qs[_0x3b40('0x36')](_[_0x3b40('0x3d')](_0x14ced7[_0x3b40('0x37')],_0x92d023[_0x3b40('0x36')]));_0x55005a[_0x3b40('0x3c')][_0x3b40('0xd0')]=_0x318932['id'];if(_0x14ced7['query'][_0x3b40('0x5b')]){_0x55005a[_0x3b40('0x3c')]=_[_0x3b40('0x7e')](_0x55005a['where'],{'$or':_[_0x3b40('0x4f')](_0x55005a[_0x3b40('0x38')],function(_0x21ed4f){var _0x42f9d0={};_0x42f9d0[_0x21ed4f]={'$like':'%'+_0x14ced7[_0x3b40('0x37')][_0x3b40('0x5b')]+'%'};return _0x42f9d0;})});}_0x55005a=_[_0x3b40('0x7e')]({},_0x55005a,_0x14ced7['options']);return db[_0x3b40('0xab')][_0x3b40('0x20')]({'where':_0x55005a[_0x3b40('0x3c')]})[_0x3b40('0x25')](function(_0x536216){_0x44b95e['count']=_0x536216;if(_0x14ced7['query']['includeAll']){_0x55005a['include']=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x55005a);})['then'](function(_0x343428){_0x44b95e['rows']=_0x343428;return _0x44b95e;});}})[_0x3b40('0x25')](respondWithFilteredResult(_0x1f8b05,_0x55005a))[_0x3b40('0x95')](handleError(_0x1f8b05,null));};exports['getHopperFinals']=function(_0x54fc8e,_0x3838f9,_0x3998fe){var _0x5a470b={'raw':!![],'where':{}};var _0x1a0b4a={};var _0x50ff78={'count':0x0,'rows':[]};return db[_0x3b40('0x2b')]['findOne']({'where':{'id':_0x54fc8e[_0x3b40('0x8c')]['id']}})[_0x3b40('0x25')](handleEntityNotFound(_0x3838f9,null))[_0x3b40('0x25')](function(_0x5be42a){if(_0x5be42a){_0x1a0b4a[_0x3b40('0x35')]=_[_0x3b40('0x2d')](db[_0x3b40('0xaa')][_0x3b40('0xc8')]);_0x1a0b4a[_0x3b40('0x37')]=_[_0x3b40('0x2d')](_0x54fc8e[_0x3b40('0x37')]);_0x1a0b4a[_0x3b40('0x36')]=_[_0x3b40('0xc9')](_0x1a0b4a[_0x3b40('0x35')],_0x1a0b4a[_0x3b40('0x37')]);_0x5a470b[_0x3b40('0x38')]=_['intersection'](_0x1a0b4a['model'],qs[_0x3b40('0x39')](_0x54fc8e['query'][_0x3b40('0x39')]));_0x5a470b['attributes']=_0x5a470b[_0x3b40('0x38')][_0x3b40('0x4b')]?_0x5a470b[_0x3b40('0x38')]:_0x1a0b4a[_0x3b40('0x35')];if(!_0x54fc8e[_0x3b40('0x37')][_0x3b40('0x5a')](_0x3b40('0x3a'))){_0x5a470b[_0x3b40('0x1f')]=qs[_0x3b40('0x1f')](_0x54fc8e[_0x3b40('0x37')]['limit']);_0x5a470b[_0x3b40('0x1d')]=qs[_0x3b40('0x1d')](_0x54fc8e[_0x3b40('0x37')][_0x3b40('0x1d')]);}_0x5a470b[_0x3b40('0x72')]=qs[_0x3b40('0x3b')](_0x54fc8e[_0x3b40('0x37')][_0x3b40('0x3b')]);_0x5a470b[_0x3b40('0x3c')]=qs['filters'](_['pick'](_0x54fc8e[_0x3b40('0x37')],_0x1a0b4a[_0x3b40('0x36')]));_0x5a470b['where'][_0x3b40('0xd0')]=_0x5be42a['id'];if(_0x54fc8e[_0x3b40('0x37')][_0x3b40('0x5b')]){_0x5a470b[_0x3b40('0x3c')]=_[_0x3b40('0x7e')](_0x5a470b[_0x3b40('0x3c')],{'$or':_[_0x3b40('0x4f')](_0x5a470b['attributes'],function(_0x51990f){var _0x263581={};_0x263581[_0x51990f]={'$like':'%'+_0x54fc8e[_0x3b40('0x37')][_0x3b40('0x5b')]+'%'};return _0x263581;})});}_0x5a470b=_[_0x3b40('0x7e')]({},_0x5a470b,_0x54fc8e['options']);return db[_0x3b40('0xaa')][_0x3b40('0x20')]({'where':_0x5a470b['where']})[_0x3b40('0x25')](function(_0x15a6a4){_0x50ff78[_0x3b40('0x20')]=_0x15a6a4;if(_0x54fc8e[_0x3b40('0x37')][_0x3b40('0xd1')]){_0x5a470b[_0x3b40('0xce')]=[{'all':!![]}];}return db[_0x3b40('0xaa')][_0x3b40('0x90')](_0x5a470b);})[_0x3b40('0x25')](function(_0x521f34){_0x50ff78[_0x3b40('0x8a')]=_0x521f34;return _0x50ff78;});}})[_0x3b40('0x25')](respondWithFilteredResult(_0x3838f9,_0x5a470b))[_0x3b40('0x95')](handleError(_0x3838f9,null));};exports[_0x3b40('0xd2')]=function(_0x5f4349,_0x337f55,_0x5ed8a9){var _0x4b5242={'raw':!![],'where':{}};var _0x3a68b0={};var _0x2fb0c1={'count':0x0,'rows':[]};return db['CmContact'][_0x3b40('0x31')]({'where':{'id':_0x5f4349[_0x3b40('0x8c')]['id']}})[_0x3b40('0x25')](handleEntityNotFound(_0x337f55,null))[_0x3b40('0x25')](function(_0x24cc00){if(_0x24cc00){_0x3a68b0[_0x3b40('0x35')]=_['keys'](db[_0x3b40('0xb0')][_0x3b40('0xc8')]);_0x3a68b0['query']=_[_0x3b40('0x2d')](_0x5f4349['query']);_0x3a68b0[_0x3b40('0x36')]=_[_0x3b40('0xc9')](_0x3a68b0[_0x3b40('0x35')],_0x3a68b0[_0x3b40('0x37')]);_0x4b5242[_0x3b40('0x38')]=_[_0x3b40('0xc9')](_0x3a68b0[_0x3b40('0x35')],qs[_0x3b40('0x39')](_0x5f4349['query'][_0x3b40('0x39')]));_0x4b5242[_0x3b40('0x38')]=_0x4b5242['attributes'][_0x3b40('0x4b')]?_0x4b5242[_0x3b40('0x38')]:_0x3a68b0[_0x3b40('0x35')];if(!_0x5f4349[_0x3b40('0x37')][_0x3b40('0x5a')]('nolimit')){_0x4b5242['limit']=qs[_0x3b40('0x1f')](_0x5f4349['query'][_0x3b40('0x1f')]);_0x4b5242['offset']=qs[_0x3b40('0x1d')](_0x5f4349[_0x3b40('0x37')]['offset']);}_0x4b5242[_0x3b40('0x72')]=qs[_0x3b40('0x3b')](_0x5f4349['query'][_0x3b40('0x3b')]);_0x4b5242['where']=qs['filters'](_[_0x3b40('0x3d')](_0x5f4349['query'],_0x3a68b0[_0x3b40('0x36')]));_0x4b5242[_0x3b40('0x3c')][_0x3b40('0xd0')]=_0x24cc00['id'];if(_0x5f4349['query']['filter']){_0x4b5242[_0x3b40('0x3c')]=_[_0x3b40('0x7e')](_0x4b5242[_0x3b40('0x3c')],{'$or':_[_0x3b40('0x4f')](_0x4b5242[_0x3b40('0x38')],function(_0x34c850){var _0x335553={};_0x335553[_0x34c850]={'$like':'%'+_0x5f4349['query'][_0x3b40('0x5b')]+'%'};return _0x335553;})});}_0x4b5242=_[_0x3b40('0x7e')]({},_0x4b5242,_0x5f4349[_0x3b40('0xca')]);return db[_0x3b40('0xb0')]['count']({'where':_0x4b5242[_0x3b40('0x3c')]})[_0x3b40('0x25')](function(_0x5c8d43){_0x2fb0c1[_0x3b40('0x20')]=_0x5c8d43;if(_0x5f4349['query'][_0x3b40('0xd1')]){_0x4b5242[_0x3b40('0xce')]=[{'all':!![]}];}return db[_0x3b40('0xb0')]['findAll'](_0x4b5242);})[_0x3b40('0x25')](function(_0x2389f8){_0x2fb0c1[_0x3b40('0x8a')]=_0x2389f8;return _0x2fb0c1;});}})[_0x3b40('0x25')](respondWithFilteredResult(_0x337f55,_0x4b5242))[_0x3b40('0x95')](handleError(_0x337f55,null));};exports[_0x3b40('0xd3')]=function(_0x21b31c,_0x377acd,_0x43d39b){try{if(!_0x21b31c[_0x3b40('0x96')][_0x3b40('0x5d')]){throw new Error('No\x20ListId\x20specified');}if(!_0x21b31c['body'][_0x3b40('0xd4')]){throw new Error(_0x3b40('0xd5'));}if(!_0x21b31c[_0x3b40('0x96')][_0x3b40('0xd6')]){throw new Error('No\x20association\x20values\x20specified!');}if(!_0x21b31c['body']['socket_timestamp']){throw new Error(_0x3b40('0xd7'));}var _0x1f5488=_0x21b31c['body']['binding_keys']['split'](',');var _0x2e24f8=_0x21b31c[_0x3b40('0x96')][_0x3b40('0xd6')]['split'](',');if(!_0x1f5488['length']||!_0x2e24f8[_0x3b40('0x4b')]||_0x1f5488[_0x3b40('0x4b')]!==_0x2e24f8[_0x3b40('0x4b')]){throw new Error(_0x3b40('0xd8'));}_0x21b31c[_0x3b40('0x96')][_0x3b40('0x39')]=_[_0x3b40('0xd9')](_0x1f5488,_0x2e24f8);if(!_0x21b31c[_0x3b40('0x96')][_0x3b40('0x39')][_0x3b40('0xc5')]){throw new Error(_0x3b40('0xda'));}if(!_0x21b31c['body'][_0x3b40('0x39')]['firstName']){throw new Error(_0x3b40('0xdb'));}var _0x3d39b4=path[_0x3b40('0x99')](config[_0x3b40('0xdc')],_0x3b40('0xdd'),_0x21b31c[_0x3b40('0xde')][_0x3b40('0xdf')]);fs[_0x3b40('0xe0')](_0x3d39b4,parseInt(_0x3b40('0xe1'),0x8));var _0x8beba2=require('child_process')[_0x3b40('0xe2')](path[_0x3b40('0x99')](__dirname,_0x3b40('0xe3')),[_0x3d39b4,_0x21b31c[_0x3b40('0x96')][_0x3b40('0xd4')],_0x21b31c[_0x3b40('0x96')][_0x3b40('0xd6')],_0x21b31c[_0x3b40('0x96')][_0x3b40('0x5d')],_0x21b31c[_0x3b40('0x96')][_0x3b40('0xe4')],_0x21b31c['body'][_0x3b40('0xb6')],_0x21b31c[_0x3b40('0x96')][_0x3b40('0xe5')]]);return _0x377acd[_0x3b40('0x1a')](0xc8)['json']({'message':_0x3b40('0xe6'),'pid':_0x8beba2[_0x3b40('0xe7')]});}catch(_0x52647b){return _0x377acd[_0x3b40('0x1a')](0x1f4)[_0x3b40('0x29')](_0x52647b);}};exports[_0x3b40('0xe8')]=function(_0x44c583,_0x30c8d6,_0x34c115){var _0x157b42=fs[_0x3b40('0xe9')](_0x44c583['file'][_0x3b40('0x8')]);Papa[_0x3b40('0xea')](_0x157b42,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x3147e7){return _0x30c8d6[_0x3b40('0x1a')](0xc8)[_0x3b40('0x1c')]({'file':_0x44c583['file'],'fields':_0x3147e7[_0x3b40('0xeb')]['fields']});}});};exports['import']=function(_0x35fbbb,_0x970579,_0x26825b){return db[_0x3b40('0x53')][_0x3b40('0x90')]({'raw':!![],'attributes':['id'],'where':{'role':_0x3b40('0x78')}})['then'](function(_0x3d50ba){var _0x2045f1=![];if(!_0x35fbbb[_0x3b40('0x96')][_0x3b40('0x5d')]){throw new Error('No\x20ListId\x20specified');}if(!_0x35fbbb['body']['binding'][_0x3b40('0xc5')]){throw new Error(_0x3b40('0xda'));}if(!_0x35fbbb[_0x3b40('0x96')][_0x3b40('0xec')]['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x35fbbb[_0x3b40('0x96')][_0x3b40('0xe5')]){throw new Error(_0x3b40('0xd7'));}var _0x4c7036=require('child_process')['fork'](path[_0x3b40('0x99')](__dirname,_0x3b40('0xed')),[_0x35fbbb[_0x3b40('0x8c')]['id'],JSON['stringify'](_0x35fbbb[_0x3b40('0x96')]),JSON['stringify'](_0x3d50ba)]);_0x4c7036['on'](_0x3b40('0xee'),function(_0x29c7a0){_0x2045f1=!![];return _0x970579[_0x3b40('0x1a')](0xc8)['json']({'message':_0x3b40('0xef'),'pid':_0x4c7036[_0x3b40('0xe7')]});});_0x4c7036['on'](_0x3b40('0xf0'),function(_0x4714c7){if(_0x4714c7&&!_0x2045f1){return _0x970579[_0x3b40('0x1a')](0x1f4)['json']({'message':'error\x20child\x20process','pid':_0x4c7036[_0x3b40('0xe7')]});}});})['catch'](handleError(_0x970579,null));};exports[_0x3b40('0xf1')]=function(_0x144204,_0x2e4fdc){var _0x214a41=[_0x3b40('0xf2'),_0x3b40('0xf3'),'sms',_0x3b40('0xf4'),_0x3b40('0xf5'),_0x3b40('0xf6'),'voice'];var _0xfed5c6={'offset':0x0,'order':qs[_0x3b40('0x3b')](_0x3b40('0xf7'))},_0x25f327={'count':0x0,'rows':[]};Promise[_0x3b40('0xf8')]()[_0x3b40('0x25')](function(){if(_0x144204[_0x3b40('0x37')][_0x3b40('0xf9')]){if(!_[_0x3b40('0xfa')](_0x214a41,_0x144204[_0x3b40('0x37')][_0x3b40('0xf9')][_0x3b40('0xfb')]())){throw new Error(_0x3b40('0xfc'));}_0x214a41=[_0x144204[_0x3b40('0x37')][_0x3b40('0xf9')]['toLowerCase']()];}if(_0x144204[_0x3b40('0x37')][_0x3b40('0xfd')]){try{var _0x5bedab=JSON[_0x3b40('0xea')](_0x144204[_0x3b40('0x37')]['range']);if(!moment(_0x5bedab['from'])[_0x3b40('0xfe')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x5bedab['to'])[_0x3b40('0xfe')]()){throw new Error(_0x3b40('0xff'));}}catch(_0x3a3e14){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x144204[_0x3b40('0x37')][_0x3b40('0x5a')](_0x3b40('0x3a'))){_0xfed5c6[_0x3b40('0x1f')]=qs[_0x3b40('0x1f')](_0x144204[_0x3b40('0x37')][_0x3b40('0x1f')]||0xa);_0xfed5c6[_0x3b40('0x1d')]=qs[_0x3b40('0x1d')](_0x144204[_0x3b40('0x37')][_0x3b40('0x1d')]);}var _0x4dbf8c=_0x214a41[_0x3b40('0x4f')](function(_0x11ece3){if(_0x11ece3===_0x3b40('0x100')){var _0x158480={'attributes':['id','uniqueid','type',_0x3b40('0x101'),_0x3b40('0x102'),_0x3b40('0x103'),_0x3b40('0x104'),_0x3b40('0x105'),'duration',_0x3b40('0x106'),_0x3b40('0x107'),'userDisposition',_0x3b40('0x108'),_0x3b40('0x109'),_0x3b40('0x10a')],'where':{'ContactId':_0x144204['params']['id']},'include':[{'model':db[_0x3b40('0x53')],'as':_0x3b40('0x53'),'attributes':['id','name',_0x3b40('0x10b'),_0x3b40('0x91')]}],'order':[[_0x3b40('0x107'),_0x3b40('0x73')]]};if(_0x144204[_0x3b40('0x37')][_0x3b40('0xfd')]){_0x158480[_0x3b40('0x3c')][_0x3b40('0x107')]={'$gte':_0x5bedab[_0x3b40('0x97')],'$lte':_0x5bedab['to']};}return db[_0x3b40('0xad')][_0x3b40('0x10c')](_0x158480)[_0x3b40('0x25')](function(_0x34d3ca){_0x25f327['count']+=_0x34d3ca[_0x3b40('0x20')];return _['map'](_0x34d3ca['rows'],function(_0x2c6e30){var _0x4422a3=_0x2c6e30[_0x3b40('0x98')]({'plain':!![]});_0x4422a3[_0x3b40('0xf9')]=_0x11ece3;if(_0x4422a3['User']){_0x4422a3[_0x3b40('0x53')]={'id':_0x4422a3[_0x3b40('0x53')]['id'],'name':_0x4422a3['User'][_0x3b40('0x28')],'fullname':_0x4422a3[_0x3b40('0x53')][_0x3b40('0x10b')],'alias':_0x4422a3[_0x3b40('0x53')][_0x3b40('0x91')]};}return _0x4422a3;});});}else{var _0x6116d1=_[_0x3b40('0x10d')](_0x11ece3)+(_0x11ece3===_0x3b40('0xf3')?_0x3b40('0x10e'):_0x3b40('0x10f'));var _0x297a93={'attributes':['id',_0x3b40('0x110'),_0x3b40('0x111'),'createdAt',_0x3b40('0x106'),_0x3b40('0x112'),'secondDisposition','thirdDisposition','UserId',_0x6116d1+'Id'],'where':{'ContactId':_0x144204[_0x3b40('0x8c')]['id']},'include':[{'model':db[_0x6116d1],'as':_0x3b40('0x10f'),'attributes':['id',_0x3b40('0x28'),_0x3b40('0x113')]},{'model':db[_0x3b40('0x53')],'as':_0x3b40('0x114'),'attributes':['id',_0x3b40('0x28'),_0x3b40('0x10b')]},{'model':db[_0x3b40('0x4d')],'as':_0x3b40('0x89'),'attributes':['id',_0x3b40('0x28'),_0x3b40('0xba')],'through':{'attributes':[]}}],'order':[[_0x3b40('0x107'),_0x3b40('0x73')]]};if(_0x144204[_0x3b40('0x37')][_0x3b40('0xfd')]){_0x297a93[_0x3b40('0x3c')][_0x3b40('0x107')]={'$gte':_0x5bedab['from'],'$lte':_0x5bedab['to']};}switch(_0x11ece3){case'chat':_0x297a93['attributes'][_0x3b40('0x2f')](_0x3b40('0x115'),_0x3b40('0x116'),_0x3b40('0x117'),_0x3b40('0x118'),'osName',_0x3b40('0x119'),_0x3b40('0x11a'),_0x3b40('0x11b'),'referer');break;case _0x3b40('0xf2'):_0x297a93[_0x3b40('0x38')][_0x3b40('0x2f')](_0x3b40('0x11c'),_0x3b40('0x11d'));break;case _0x3b40('0xf4'):_0x297a93['attributes'][_0x3b40('0x2f')](_0x3b40('0x11e'),_0x3b40('0x11f'));break;}return db[_['startCase'](_0x11ece3)+_0x3b40('0x120')]['findAndCountAll'](_0x297a93)[_0x3b40('0x25')](function(_0x5c8d8f){_0x25f327[_0x3b40('0x20')]+=_0x5c8d8f[_0x3b40('0x20')];return _['map'](_0x5c8d8f['rows'],function(_0x304d05){var _0x1053df=_0x304d05[_0x3b40('0x98')]({'plain':!![]});_0x1053df[_0x3b40('0xf9')]=_0x11ece3;if(_0x1053df[_0x3b40('0x114')]){_0x1053df[_0x3b40('0x114')]={'id':_0x1053df[_0x3b40('0x114')]['id'],'name':_0x1053df['Owner'][_0x3b40('0x28')],'fullname':_0x1053df[_0x3b40('0x114')][_0x3b40('0x10b')]};}return _0x1053df;});});}});return Promise[_0x3b40('0x33')](_0x4dbf8c);})[_0x3b40('0x25')](function(_0x137005){return _(_0x137005)[_0x3b40('0x121')]()[_0x3b40('0x122')](_0x3b40('0x107'))[_0x3b40('0x123')]()[_0x3b40('0x55')]();})[_0x3b40('0x25')](function(_0x3da5ac){_0x25f327['rows']=_0xfed5c6[_0x3b40('0x1f')]?_0x3da5ac[_0x3b40('0x124')](_0xfed5c6[_0x3b40('0x1d')],_0xfed5c6[_0x3b40('0x1d')]+_0xfed5c6[_0x3b40('0x1f')]):_0x3da5ac;return _0x25f327;})[_0x3b40('0x25')](respondWithFilteredResult(_0x2e4fdc,_0xfed5c6))[_0x3b40('0x95')](handleError(_0x2e4fdc,null));};
\ No newline at end of file
index a8f9a43..f56a3ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x700b=['emit','exports','events','../../mysqldb','CmContact','setMaxListeners','save','remove'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x700b,0x92));var _0xb700=function(_0x1e70a7,_0x19ae32){_0x1e70a7=_0x1e70a7-0x0;var _0x447335=_0x700b[_0x1e70a7];return _0x447335;};'use strict';var EventEmitter=require(_0xb700('0x0'));var CmContact=require(_0xb700('0x1'))['db'][_0xb700('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xb700('0x3')](0x0);var events={'afterCreate':_0xb700('0x4'),'afterUpdate':'update','afterDestroy':_0xb700('0x5')};function emitEvent(_0xf0c6d3){return function(_0x5a3bd9,_0x173889,_0x2111eb){CmContactEvents[_0xb700('0x6')](_0xf0c6d3+':'+_0x5a3bd9['id'],_0x5a3bd9);CmContactEvents['emit'](_0xf0c6d3,_0x5a3bd9);_0x2111eb(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0xb700('0x7')]=CmContactEvents;
\ No newline at end of file
+var _0x0009=['emit','hasOwnProperty','exports','../../mysqldb','CmContact','setMaxListeners','save','update'];(function(_0x33f69e,_0x4112ec){var _0x5f0972=function(_0x3f5808){while(--_0x3f5808){_0x33f69e['push'](_0x33f69e['shift']());}};_0x5f0972(++_0x4112ec);}(_0x0009,0x1c3));var _0x9000=function(_0x4e1a81,_0x4c3697){_0x4e1a81=_0x4e1a81-0x0;var _0x52ea72=_0x0009[_0x4e1a81];return _0x52ea72;};'use strict';var EventEmitter=require('events');var CmContact=require(_0x9000('0x0'))['db'][_0x9000('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x9000('0x2')](0x0);var events={'afterCreate':_0x9000('0x3'),'afterUpdate':_0x9000('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4d9700){return function(_0x4a655b,_0x1b7b19,_0x2ecd88){CmContactEvents[_0x9000('0x5')](_0x4d9700+':'+_0x4a655b['id'],_0x4a655b);CmContactEvents['emit'](_0x4d9700,_0x4a655b);_0x2ecd88(null);};}for(var e in events){if(events[_0x9000('0x6')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0x9000('0x7')]=CmContactEvents;
\ No newline at end of file
index fde407d..cc8aa56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4325=['findOne','then','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','ListId','priority','scheduledat','format','callbackUniqueid','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','YYYY-MM-DD\x20HH:mm:ss','catch','afterCreate','inspect','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','length','always','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','models','isEmpty','VoiceQueueId','CampaignId','all','info','[CmContact][afterDestroy][Error]','lodash','util','api','moment','bluebird','rimraf','../../config/environment','./cmContact.attributes','CmContact','phone','fti_cm_contacts','firstName','lastName','mobile','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','get','error','cmContact','CmHopper'];(function(_0x10e1c9,_0x375f5a){var _0x32f313=function(_0x88c43b){while(--_0x88c43b){_0x10e1c9['push'](_0x10e1c9['shift']());}};_0x32f313(++_0x375f5a);}(_0x4325,0x1da));var _0x5432=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x4325[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x5432('0x0'));var util=require(_0x5432('0x1'));var logger=require('../../config/logger')(_0x5432('0x2'));var moment=require(_0x5432('0x3'));var BPromise=require(_0x5432('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x5432('0x5'));var config=require(_0x5432('0x6'));var attributes=require(_0x5432('0x7'));module['exports']=function(_0x209e2e,_0xbb0075){return _0x209e2e['define'](_0x5432('0x8'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x5432('0x9'),'fields':[_0x5432('0x9')]},{'name':_0x5432('0xa'),'fields':[_0x5432('0xb'),_0x5432('0xc'),'phone',_0x5432('0xd'),'fax',_0x5432('0xe')],'type':_0x5432('0xf')}],'timestamps':!![],'charset':_0x5432('0x10'),'collate':_0x5432('0x11'),'hooks':{'afterCreate':function(_0x4ac11f,_0x5a5952,_0x11b25c){var _0x24fb02=_0x209e2e['models'];var _0x10a289=_0x4ac11f[_0x5432('0x12')]({'plain':!![]});function _0x3b1127(){return function(_0x424b8f){logger[_0x5432('0x13')](_0x5432('0x14'),'afterCreate',util['inspect'](_0x424b8f,{'showHidden':![],'depth':null}));};}var _0x43bb16=function(_0x44e70c){return new BPromise(function(_0x3859d1,_0x364152){_0x24fb02[_0x5432('0x15')][_0x5432('0x16')]({'where':{'phone':_0x10a289['phone'],'VoiceQueueId':_0x44e70c['id']}})[_0x5432('0x17')](function(_0x49e8fd){if(!_[_0x5432('0x18')](_0x49e8fd)){throw new Error(_0x5432('0x19')+_0x10a289[_0x5432('0x9')]+_0x5432('0x1a')+_0x44e70c['id']);}return _0x24fb02[_0x5432('0x15')]['create']({'phone':_0x10a289[_0x5432('0x9')],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'priority':_0x10a289[_0x5432('0x1c')]?_0x10a289[_0x5432('0x1c')]:0x2,'scheduledat':_0x10a289[_0x5432('0x1d')]?_0x10a289[_0x5432('0x1d')]:moment()[_0x5432('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x10a289[_0x5432('0x1f')]?!![]:![],'callbackuniqueid':_0x10a289[_0x5432('0x1f')]?_0x10a289[_0x5432('0x1f')]:undefined,'callbackat':_0x10a289[_0x5432('0x1f')]?moment()[_0x5432('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x44e70c['id']});})['catch'](function(_0x4d09cd){_0x364152(_0x4d09cd);});});};var _0x61827e=function(_0xb900f2){return new BPromise(function(_0x19bdab,_0x1f4870){_0x24fb02['CmHopper']['findOne']({'where':{'phone':_0x10a289[_0x5432('0x9')],'VoiceQueueId':_0xb900f2['id']}})[_0x5432('0x17')](function(_0x4a40fc){if(!_[_0x5432('0x18')](_0x4a40fc)){throw new Error(_0x5432('0x19')+_0x10a289[_0x5432('0x9')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0xb900f2['id']);}return _0x24fb02[_0x5432('0x20')][_0x5432('0x16')]({'where':{'calleridnum':_0x10a289[_0x5432('0x9')],'VoiceQueueId':_0xb900f2['id']}});})['then'](function(_0x4ab09d){if(!_[_0x5432('0x18')](_0x4ab09d)){throw new Error(_0x5432('0x21')+_0x10a289['phone']+_0x5432('0x22')+_0xb900f2['id']);}return _0x24fb02[_0x5432('0x15')][_0x5432('0x23')]({'phone':_0x10a289['phone'],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'priority':_0x10a289['priority']?_0x10a289['priority']:0x2,'scheduledat':_0x10a289[_0x5432('0x1d')]?_0x10a289['scheduledat']:moment()[_0x5432('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x10a289['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x10a289[_0x5432('0x1f')]?_0x10a289[_0x5432('0x1f')]:undefined,'callbackat':_0x10a289[_0x5432('0x1f')]?moment()['format'](_0x5432('0x24')):undefined,'VoiceQueueId':_0xb900f2['id']});})[_0x5432('0x25')](function(_0x214ed3){_0x1f4870(_0x214ed3);});});};function _0x1d2fd4(){return function(_0x1a5612){logger[_0x5432('0x13')](_0x5432('0x14'),_0x5432('0x26'),util[_0x5432('0x27')](_0x1a5612,{'showHidden':![],'depth':null}));};}var _0x5abaf7=function(_0x57fd0b){return new BPromise(function(_0x240dec,_0x42ab1e){_0x24fb02[_0x5432('0x15')][_0x5432('0x16')]({'where':{'phone':_0x10a289[_0x5432('0x9')],'CampaignId':_0x57fd0b['id']}})['then'](function(_0x30a07f){if(!_['isNil'](_0x30a07f)){throw new Error(_0x5432('0x19')+_0x10a289[_0x5432('0x9')]+_0x5432('0x28')+_0x57fd0b['id']);}return _0x24fb02[_0x5432('0x15')][_0x5432('0x23')]({'phone':_0x10a289[_0x5432('0x9')],'ContactId':_0x10a289['id'],'ListId':_0x10a289['ListId'],'priority':_0x10a289[_0x5432('0x1c')]?_0x10a289[_0x5432('0x1c')]:0x2,'scheduledat':_0x10a289[_0x5432('0x1d')]?_0x10a289[_0x5432('0x1d')]:moment()['format'](_0x5432('0x24')),'callback':_0x10a289[_0x5432('0x1f')]?!![]:![],'callbackuniqueid':_0x10a289[_0x5432('0x1f')]?_0x10a289[_0x5432('0x1f')]:undefined,'callbackat':_0x10a289[_0x5432('0x1f')]?moment()[_0x5432('0x1e')](_0x5432('0x24')):undefined,'CampaignId':_0x57fd0b['id']});})[_0x5432('0x25')](function(_0x228c59){_0x42ab1e(_0x228c59);});});};var _0x571bbe=function(_0x1444f8){return new BPromise(function(_0x1f4679,_0x32728b){_0x24fb02[_0x5432('0x15')]['findOne']({'where':{'phone':_0x10a289[_0x5432('0x9')],'CampaignId':_0x1444f8['id']}})['then'](function(_0x6f5006){if(!_[_0x5432('0x18')](_0x6f5006)){throw new Error(_0x5432('0x19')+_0x10a289[_0x5432('0x9')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x1444f8['id']);}return _0x24fb02['CmHopperFinal']['findOne']({'where':{'calleridnum':_0x10a289[_0x5432('0x9')],'CampaignId':_0x1444f8['id']}});})[_0x5432('0x17')](function(_0x139d0a){if(!_[_0x5432('0x18')](_0x139d0a)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x10a289[_0x5432('0x9')]+_0x5432('0x29')+_0x1444f8['id']);}return _0x24fb02[_0x5432('0x15')]['create']({'phone':_0x10a289[_0x5432('0x9')],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'priority':_0x10a289['priority']?_0x10a289[_0x5432('0x1c')]:0x2,'scheduledat':_0x10a289[_0x5432('0x1d')]?_0x10a289['scheduledat']:moment()[_0x5432('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x10a289[_0x5432('0x1f')]?!![]:![],'callbackuniqueid':_0x10a289[_0x5432('0x1f')]?_0x10a289[_0x5432('0x1f')]:undefined,'callbackat':_0x10a289[_0x5432('0x1f')]?moment()['format'](_0x5432('0x24')):undefined,'CampaignId':_0x1444f8['id']});})['catch'](function(_0x3771ee){_0x32728b(_0x3771ee);});});};if(_0x10a289[_0x5432('0x1b')]){_0x24fb02[_0x5432('0x2a')][_0x5432('0x2b')]({'where':{'type':_0x5432('0x2c')},'attributes':['id',_0x5432('0x2d')],'include':[{'model':_0x24fb02[_0x5432('0x2e')],'as':'Lists','where':{'id':_0x10a289[_0x5432('0x1b')]}}]})[_0x5432('0x17')](function(_0x2623ce){if(_0x2623ce){var _0x30bf93=[];for(var _0x24f090=0x0,_0x29a39d;_0x24f090<_0x2623ce[_0x5432('0x2f')];_0x24f090+=0x1){_0x29a39d=_0x2623ce[_0x24f090]['get']({'plain':!![]});switch(_0x29a39d[_0x5432('0x2d')]){case _0x5432('0x30'):_0x61827e(_0x29a39d)[_0x5432('0x25')](_0x3b1127());break;case _0x5432('0x31'):_0x43bb16(_0x29a39d)[_0x5432('0x25')](_0x3b1127());break;default:_0x24fb02['CmHopper'][_0x5432('0x23')]({'phone':_0x10a289['phone'],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'scheduledat':_0x10a289[_0x5432('0x1d')]?_0x10a289['scheduledat']:moment()[_0x5432('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x10a289[_0x5432('0x1c')]?_0x10a289[_0x5432('0x1c')]:0x2,'callback':_0x10a289['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x10a289['callbackUniqueid']?_0x10a289[_0x5432('0x1f')]:undefined,'callbackat':_0x10a289[_0x5432('0x1f')]?moment()[_0x5432('0x1e')](_0x5432('0x24')):undefined,'VoiceQueueId':_0x29a39d['id']})[_0x5432('0x25')](_0x3b1127());}}}})[_0x5432('0x17')](function(){return _0x24fb02[_0x5432('0x2a')]['findAll']({'where':{'type':_0x5432('0x2c')},'attributes':['id'],'include':[{'model':_0x24fb02[_0x5432('0x2e')],'as':_0x5432('0x32'),'where':{'id':_0x10a289['ListId']}}]})['then'](function(_0x483777){if(_0x483777){var _0x487dbf=[];for(var _0x26d6ae=0x0,_0x42212f;_0x26d6ae<_0x483777[_0x5432('0x2f')];_0x26d6ae+=0x1){_0x42212f=_0x483777[_0x26d6ae][_0x5432('0x12')]({'plain':!![]});_0x24fb02[_0x5432('0x33')]['create']({'phone':_0x10a289[_0x5432('0x9')],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'VoiceQueueId':_0x42212f['id']})[_0x5432('0x25')](function(_0x536229){logger[_0x5432('0x13')](_0x5432('0x34'),_0x5432('0x26'),_0x536229[_0x5432('0x35')]);});}}});})[_0x5432('0x17')](function(){return _0x24fb02['Campaign'][_0x5432('0x2b')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x24fb02[_0x5432('0x2e')],'as':'Lists','where':{'id':_0x10a289[_0x5432('0x1b')]}}]})[_0x5432('0x17')](function(_0x5c7bc3){if(_0x5c7bc3){var _0x7129e2=[];for(var _0x52e2b3=0x0,_0x18fd03;_0x52e2b3<_0x5c7bc3[_0x5432('0x2f')];_0x52e2b3+=0x1){_0x18fd03=_0x5c7bc3[_0x52e2b3][_0x5432('0x12')]({'plain':!![]});switch(_0x18fd03[_0x5432('0x2d')]){case'always':_0x571bbe(_0x18fd03)[_0x5432('0x25')](_0x1d2fd4());break;case'onlyIfOpen':_0x5abaf7(_0x18fd03)[_0x5432('0x25')](_0x1d2fd4());break;default:_0x24fb02['CmHopper'][_0x5432('0x23')]({'phone':_0x10a289[_0x5432('0x9')],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'scheduledat':_0x10a289[_0x5432('0x1d')]?_0x10a289[_0x5432('0x1d')]:moment()[_0x5432('0x1e')](_0x5432('0x24')),'priority':_0x10a289[_0x5432('0x1c')]?_0x10a289[_0x5432('0x1c')]:0x2,'callback':_0x10a289[_0x5432('0x1f')]?!![]:![],'callbackuniqueid':_0x10a289['callbackUniqueid']?_0x10a289[_0x5432('0x1f')]:undefined,'callbackat':_0x10a289[_0x5432('0x1f')]?moment()['format'](_0x5432('0x24')):undefined,'CampaignId':_0x18fd03['id']})[_0x5432('0x25')](_0x1d2fd4());}}}});})[_0x5432('0x17')](function(){return _0x24fb02[_0x5432('0x36')][_0x5432('0x2b')]({'attributes':['id'],'include':[{'model':_0x24fb02['CmList'],'as':'BlackLists','where':{'id':_0x10a289['ListId']}}]})['then'](function(_0x3687b7){if(_0x3687b7){var _0x806f5c=[];for(var _0x112230=0x0,_0x5b70f9;_0x112230<_0x3687b7[_0x5432('0x2f')];_0x112230+=0x1){_0x5b70f9=_0x3687b7[_0x112230][_0x5432('0x12')]({'plain':!![]});_0x24fb02[_0x5432('0x33')][_0x5432('0x23')]({'phone':_0x10a289[_0x5432('0x9')],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'CampaignId':_0x5b70f9['id']})[_0x5432('0x25')](function(_0x3a2d2c){logger[_0x5432('0x13')](_0x5432('0x34'),_0x5432('0x26'),_0x3a2d2c['message']);});}}});})[_0x5432('0x17')](function(){_0x11b25c();})[_0x5432('0x25')](function(_0xa070cb){logger[_0x5432('0x13')](_0x5432('0x34'),'afterCreate',_0xa070cb[_0x5432('0x35')]);_0x11b25c(_0xa070cb);});}else{_0x11b25c(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x380571,_0x2ba6bb,_0x41e9df){var _0x1b83f9=_0x209e2e[_0x5432('0x37')];var _0x2937e7=_0x380571[_0x5432('0x12')]({'plain':!![]});return _0x1b83f9[_0x5432('0x15')][_0x5432('0x2b')]({'raw':!![],'where':{'ListId':_0x2937e7[_0x5432('0x1b')],'ContactId':_0x2937e7['id']}})[_0x5432('0x17')](function(_0x41aa75){if(!_[_0x5432('0x38')](_0x41aa75)){var _0xe1ea63=[];for(var _0x335ed9=0x0;_0x335ed9<_0x41aa75[_0x5432('0x2f')];_0x335ed9+=0x1){var _0x157bc9=_0x1b83f9[_0x5432('0x15')]['destroy']({'where':{'ListId':_0x41aa75[_0x335ed9][_0x5432('0x1b')],'ContactId':_0x41aa75[_0x335ed9]['ContactId'],'VoiceQueueId':_0x41aa75[_0x335ed9][_0x5432('0x39')],'CampaignId':_0x41aa75[_0x335ed9][_0x5432('0x3a')]}});_0xe1ea63['push'](_0x157bc9);}return BPromise[_0x5432('0x3b')](_0xe1ea63);}})[_0x5432('0x17')](function(_0x184b6c){logger[_0x5432('0x3c')]('[CmContact][afterDestroy][Succesfull]',util[_0x5432('0x27')](_0x184b6c,{'showHidden':![],'depth':null}));_0x41e9df();})['catch'](function(_0x187373){logger[_0x5432('0x13')](_0x5432('0x3d'),util[_0x5432('0x27')](_0x187373,{'showHidden':![],'depth':null}));_0x41e9df(_0x187373);});}}});};
\ No newline at end of file
+var _0x8dd8=['info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./cmContact.attributes','exports','CmContact','cm_contacts','phone','firstName','lastName','fax','FULLTEXT','utf8mb4_unicode_ci','models','error','afterCreate','inspect','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','create','ListId','priority','scheduledat','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','format','catch','findOne','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','then','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','VoiceQueue','findAll','CmList','Lists','length','get','dialCheckDuplicateType','always','onlyIfOpen','BlackLists','CmHopperBlack','Campaign','message','cmContact,\x20%s,\x20%s','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','all'];(function(_0x2cb979,_0x47d3be){var _0x344c52=function(_0x20eeae){while(--_0x20eeae){_0x2cb979['push'](_0x2cb979['shift']());}};_0x344c52(++_0x47d3be);}(_0x8dd8,0x195));var _0x88dd=function(_0x3e8112,_0x54a1b2){_0x3e8112=_0x3e8112-0x0;var _0x34edd9=_0x8dd8[_0x3e8112];return _0x34edd9;};'use strict';var _=require(_0x88dd('0x0'));var util=require(_0x88dd('0x1'));var logger=require(_0x88dd('0x2'))(_0x88dd('0x3'));var moment=require(_0x88dd('0x4'));var BPromise=require(_0x88dd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x88dd('0x6'));var rimraf=require(_0x88dd('0x7'));var config=require(_0x88dd('0x8'));var attributes=require(_0x88dd('0x9'));module[_0x88dd('0xa')]=function(_0x2d7ad6,_0x2fd39f){return _0x2d7ad6['define'](_0x88dd('0xb'),attributes,{'tableName':_0x88dd('0xc'),'paranoid':!![],'indexes':[{'name':_0x88dd('0xd'),'fields':['phone']},{'name':'fti_cm_contacts','fields':[_0x88dd('0xe'),_0x88dd('0xf'),_0x88dd('0xd'),'mobile',_0x88dd('0x10'),'email'],'type':_0x88dd('0x11')}],'timestamps':!![],'charset':'utf8mb4','collate':_0x88dd('0x12'),'hooks':{'afterCreate':function(_0x30042d,_0x33402a,_0x11b0e1){var _0x291eb1=_0x2d7ad6[_0x88dd('0x13')];var _0x596bbd=_0x30042d['get']({'plain':!![]});function _0x4e96f4(){return function(_0x222784){logger[_0x88dd('0x14')]('cmContact',_0x88dd('0x15'),util[_0x88dd('0x16')](_0x222784,{'showHidden':![],'depth':null}));};}var _0x38a6a0=function(_0x2609ea){return new BPromise(function(_0x33bbbb,_0x4563fc){_0x291eb1['CmHopper']['findOne']({'where':{'phone':_0x596bbd[_0x88dd('0xd')],'VoiceQueueId':_0x2609ea['id']}})['then'](function(_0x15a426){if(!_[_0x88dd('0x17')](_0x15a426)){throw new Error(_0x88dd('0x18')+_0x596bbd['phone']+_0x88dd('0x19')+_0x2609ea['id']);}return _0x291eb1[_0x88dd('0x1a')][_0x88dd('0x1b')]({'phone':_0x596bbd[_0x88dd('0xd')],'ContactId':_0x596bbd['id'],'ListId':_0x596bbd[_0x88dd('0x1c')],'priority':_0x596bbd['priority']?_0x596bbd[_0x88dd('0x1d')]:0x2,'scheduledat':_0x596bbd[_0x88dd('0x1e')]?_0x596bbd[_0x88dd('0x1e')]:moment()['format'](_0x88dd('0x1f')),'callback':_0x596bbd[_0x88dd('0x20')]?!![]:![],'callbackuniqueid':_0x596bbd[_0x88dd('0x20')]?_0x596bbd['callbackUniqueid']:undefined,'callbackat':_0x596bbd[_0x88dd('0x20')]?moment()[_0x88dd('0x21')](_0x88dd('0x1f')):undefined,'VoiceQueueId':_0x2609ea['id']});})[_0x88dd('0x22')](function(_0x54ea38){_0x4563fc(_0x54ea38);});});};var _0x39c84d=function(_0xa36964){return new BPromise(function(_0x230c3f,_0x2acfd9){_0x291eb1[_0x88dd('0x1a')][_0x88dd('0x23')]({'where':{'phone':_0x596bbd[_0x88dd('0xd')],'VoiceQueueId':_0xa36964['id']}})['then'](function(_0x22d8f0){if(!_[_0x88dd('0x17')](_0x22d8f0)){throw new Error('cmContact,\x20afterCreate\x20'+_0x596bbd[_0x88dd('0xd')]+_0x88dd('0x24')+_0xa36964['id']);}return _0x291eb1[_0x88dd('0x25')][_0x88dd('0x23')]({'where':{'calleridnum':_0x596bbd['phone'],'VoiceQueueId':_0xa36964['id']}});})[_0x88dd('0x26')](function(_0x6d2c2f){if(!_[_0x88dd('0x17')](_0x6d2c2f)){throw new Error(_0x88dd('0x27')+_0x596bbd[_0x88dd('0xd')]+_0x88dd('0x28')+_0xa36964['id']);}return _0x291eb1[_0x88dd('0x1a')][_0x88dd('0x1b')]({'phone':_0x596bbd[_0x88dd('0xd')],'ContactId':_0x596bbd['id'],'ListId':_0x596bbd[_0x88dd('0x1c')],'priority':_0x596bbd[_0x88dd('0x1d')]?_0x596bbd[_0x88dd('0x1d')]:0x2,'scheduledat':_0x596bbd[_0x88dd('0x1e')]?_0x596bbd[_0x88dd('0x1e')]:moment()[_0x88dd('0x21')](_0x88dd('0x1f')),'callback':_0x596bbd['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x596bbd['callbackUniqueid']?_0x596bbd['callbackUniqueid']:undefined,'callbackat':_0x596bbd['callbackUniqueid']?moment()[_0x88dd('0x21')](_0x88dd('0x1f')):undefined,'VoiceQueueId':_0xa36964['id']});})[_0x88dd('0x22')](function(_0x77461d){_0x2acfd9(_0x77461d);});});};function _0x100255(){return function(_0x402d6d){logger[_0x88dd('0x14')]('cmContact',_0x88dd('0x15'),util[_0x88dd('0x16')](_0x402d6d,{'showHidden':![],'depth':null}));};}var _0xa07be0=function(_0x5f0929){return new BPromise(function(_0x241704,_0x2217c9){_0x291eb1[_0x88dd('0x1a')][_0x88dd('0x23')]({'where':{'phone':_0x596bbd[_0x88dd('0xd')],'CampaignId':_0x5f0929['id']}})[_0x88dd('0x26')](function(_0x8e2739){if(!_[_0x88dd('0x17')](_0x8e2739)){throw new Error(_0x88dd('0x18')+_0x596bbd[_0x88dd('0xd')]+_0x88dd('0x29')+_0x5f0929['id']);}return _0x291eb1['CmHopper']['create']({'phone':_0x596bbd[_0x88dd('0xd')],'ContactId':_0x596bbd['id'],'ListId':_0x596bbd[_0x88dd('0x1c')],'priority':_0x596bbd[_0x88dd('0x1d')]?_0x596bbd[_0x88dd('0x1d')]:0x2,'scheduledat':_0x596bbd['scheduledat']?_0x596bbd['scheduledat']:moment()[_0x88dd('0x21')](_0x88dd('0x1f')),'callback':_0x596bbd[_0x88dd('0x20')]?!![]:![],'callbackuniqueid':_0x596bbd['callbackUniqueid']?_0x596bbd['callbackUniqueid']:undefined,'callbackat':_0x596bbd[_0x88dd('0x20')]?moment()[_0x88dd('0x21')](_0x88dd('0x1f')):undefined,'CampaignId':_0x5f0929['id']});})[_0x88dd('0x22')](function(_0x3fde01){_0x2217c9(_0x3fde01);});});};var _0x254f0f=function(_0xd48505){return new BPromise(function(_0x4909d9,_0x13e494){_0x291eb1[_0x88dd('0x1a')]['findOne']({'where':{'phone':_0x596bbd['phone'],'CampaignId':_0xd48505['id']}})[_0x88dd('0x26')](function(_0x281ea6){if(!_[_0x88dd('0x17')](_0x281ea6)){throw new Error(_0x88dd('0x18')+_0x596bbd['phone']+_0x88dd('0x2a')+_0xd48505['id']);}return _0x291eb1['CmHopperFinal']['findOne']({'where':{'calleridnum':_0x596bbd['phone'],'CampaignId':_0xd48505['id']}});})[_0x88dd('0x26')](function(_0xecb95){if(!_[_0x88dd('0x17')](_0xecb95)){throw new Error(_0x88dd('0x27')+_0x596bbd[_0x88dd('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0xd48505['id']);}return _0x291eb1[_0x88dd('0x1a')][_0x88dd('0x1b')]({'phone':_0x596bbd[_0x88dd('0xd')],'ContactId':_0x596bbd['id'],'ListId':_0x596bbd['ListId'],'priority':_0x596bbd[_0x88dd('0x1d')]?_0x596bbd[_0x88dd('0x1d')]:0x2,'scheduledat':_0x596bbd['scheduledat']?_0x596bbd[_0x88dd('0x1e')]:moment()['format'](_0x88dd('0x1f')),'callback':_0x596bbd[_0x88dd('0x20')]?!![]:![],'callbackuniqueid':_0x596bbd['callbackUniqueid']?_0x596bbd[_0x88dd('0x20')]:undefined,'callbackat':_0x596bbd['callbackUniqueid']?moment()[_0x88dd('0x21')](_0x88dd('0x1f')):undefined,'CampaignId':_0xd48505['id']});})[_0x88dd('0x22')](function(_0x4726e1){_0x13e494(_0x4726e1);});});};if(_0x596bbd[_0x88dd('0x1c')]){_0x291eb1[_0x88dd('0x2b')][_0x88dd('0x2c')]({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x291eb1[_0x88dd('0x2d')],'as':_0x88dd('0x2e'),'where':{'id':_0x596bbd[_0x88dd('0x1c')]}}]})[_0x88dd('0x26')](function(_0x5cf7a3){if(_0x5cf7a3){var _0x25b812=[];for(var _0x1be6ab=0x0,_0x40e964;_0x1be6ab<_0x5cf7a3[_0x88dd('0x2f')];_0x1be6ab+=0x1){_0x40e964=_0x5cf7a3[_0x1be6ab][_0x88dd('0x30')]({'plain':!![]});switch(_0x40e964[_0x88dd('0x31')]){case _0x88dd('0x32'):_0x39c84d(_0x40e964)[_0x88dd('0x22')](_0x4e96f4());break;case _0x88dd('0x33'):_0x38a6a0(_0x40e964)['catch'](_0x4e96f4());break;default:_0x291eb1[_0x88dd('0x1a')]['create']({'phone':_0x596bbd[_0x88dd('0xd')],'ContactId':_0x596bbd['id'],'ListId':_0x596bbd['ListId'],'scheduledat':_0x596bbd['scheduledat']?_0x596bbd['scheduledat']:moment()[_0x88dd('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x596bbd[_0x88dd('0x1d')]?_0x596bbd[_0x88dd('0x1d')]:0x2,'callback':_0x596bbd[_0x88dd('0x20')]?!![]:![],'callbackuniqueid':_0x596bbd[_0x88dd('0x20')]?_0x596bbd['callbackUniqueid']:undefined,'callbackat':_0x596bbd[_0x88dd('0x20')]?moment()[_0x88dd('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x40e964['id']})['catch'](_0x4e96f4());}}}})[_0x88dd('0x26')](function(){return _0x291eb1[_0x88dd('0x2b')][_0x88dd('0x2c')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x291eb1[_0x88dd('0x2d')],'as':_0x88dd('0x34'),'where':{'id':_0x596bbd['ListId']}}]})[_0x88dd('0x26')](function(_0x541bc1){if(_0x541bc1){var _0x5ab109=[];for(var _0x5d4d94=0x0,_0x58314a;_0x5d4d94<_0x541bc1[_0x88dd('0x2f')];_0x5d4d94+=0x1){_0x58314a=_0x541bc1[_0x5d4d94][_0x88dd('0x30')]({'plain':!![]});_0x291eb1[_0x88dd('0x35')]['create']({'phone':_0x596bbd[_0x88dd('0xd')],'ContactId':_0x596bbd['id'],'ListId':_0x596bbd[_0x88dd('0x1c')],'VoiceQueueId':_0x58314a['id']})[_0x88dd('0x22')](function(_0x582333){logger['error']('cmContact,\x20%s,\x20%s','afterCreate',_0x582333['message']);});}}});})[_0x88dd('0x26')](function(){return _0x291eb1[_0x88dd('0x36')][_0x88dd('0x2c')]({'attributes':['id',_0x88dd('0x31')],'include':[{'model':_0x291eb1[_0x88dd('0x2d')],'as':_0x88dd('0x2e'),'where':{'id':_0x596bbd['ListId']}}]})[_0x88dd('0x26')](function(_0x341fc8){if(_0x341fc8){var _0x24ea48=[];for(var _0x2567fe=0x0,_0x15904e;_0x2567fe<_0x341fc8[_0x88dd('0x2f')];_0x2567fe+=0x1){_0x15904e=_0x341fc8[_0x2567fe][_0x88dd('0x30')]({'plain':!![]});switch(_0x15904e[_0x88dd('0x31')]){case _0x88dd('0x32'):_0x254f0f(_0x15904e)[_0x88dd('0x22')](_0x100255());break;case _0x88dd('0x33'):_0xa07be0(_0x15904e)[_0x88dd('0x22')](_0x100255());break;default:_0x291eb1['CmHopper'][_0x88dd('0x1b')]({'phone':_0x596bbd[_0x88dd('0xd')],'ContactId':_0x596bbd['id'],'ListId':_0x596bbd[_0x88dd('0x1c')],'scheduledat':_0x596bbd[_0x88dd('0x1e')]?_0x596bbd[_0x88dd('0x1e')]:moment()[_0x88dd('0x21')](_0x88dd('0x1f')),'priority':_0x596bbd[_0x88dd('0x1d')]?_0x596bbd[_0x88dd('0x1d')]:0x2,'callback':_0x596bbd[_0x88dd('0x20')]?!![]:![],'callbackuniqueid':_0x596bbd[_0x88dd('0x20')]?_0x596bbd['callbackUniqueid']:undefined,'callbackat':_0x596bbd['callbackUniqueid']?moment()['format'](_0x88dd('0x1f')):undefined,'CampaignId':_0x15904e['id']})[_0x88dd('0x22')](_0x100255());}}}});})[_0x88dd('0x26')](function(){return _0x291eb1[_0x88dd('0x36')][_0x88dd('0x2c')]({'attributes':['id'],'include':[{'model':_0x291eb1[_0x88dd('0x2d')],'as':_0x88dd('0x34'),'where':{'id':_0x596bbd[_0x88dd('0x1c')]}}]})[_0x88dd('0x26')](function(_0xfd241){if(_0xfd241){var _0x1817c6=[];for(var _0xdf7cb1=0x0,_0x2f9bcc;_0xdf7cb1<_0xfd241['length'];_0xdf7cb1+=0x1){_0x2f9bcc=_0xfd241[_0xdf7cb1][_0x88dd('0x30')]({'plain':!![]});_0x291eb1[_0x88dd('0x35')][_0x88dd('0x1b')]({'phone':_0x596bbd[_0x88dd('0xd')],'ContactId':_0x596bbd['id'],'ListId':_0x596bbd[_0x88dd('0x1c')],'CampaignId':_0x2f9bcc['id']})[_0x88dd('0x22')](function(_0x109765){logger[_0x88dd('0x14')]('cmContact,\x20%s,\x20%s',_0x88dd('0x15'),_0x109765[_0x88dd('0x37')]);});}}});})['then'](function(){_0x11b0e1();})[_0x88dd('0x22')](function(_0x46b113){logger[_0x88dd('0x14')](_0x88dd('0x38'),'afterCreate',_0x46b113[_0x88dd('0x37')]);_0x11b0e1(_0x46b113);});}else{_0x11b0e1(new Error(_0x88dd('0x39')));}},'afterDestroy':function(_0x35c813,_0xdb619a,_0x320e42){var _0x591a58=_0x2d7ad6[_0x88dd('0x13')];var _0x482761=_0x35c813[_0x88dd('0x30')]({'plain':!![]});return _0x591a58[_0x88dd('0x1a')][_0x88dd('0x2c')]({'raw':!![],'where':{'ListId':_0x482761[_0x88dd('0x1c')],'ContactId':_0x482761['id']}})[_0x88dd('0x26')](function(_0x57def7){if(!_[_0x88dd('0x3a')](_0x57def7)){var _0xeb4f42=[];for(var _0x23f6e8=0x0;_0x23f6e8<_0x57def7['length'];_0x23f6e8+=0x1){var _0x5e6bc9=_0x591a58[_0x88dd('0x1a')][_0x88dd('0x3b')]({'where':{'ListId':_0x57def7[_0x23f6e8]['ListId'],'ContactId':_0x57def7[_0x23f6e8][_0x88dd('0x3c')],'VoiceQueueId':_0x57def7[_0x23f6e8][_0x88dd('0x3d')],'CampaignId':_0x57def7[_0x23f6e8][_0x88dd('0x3e')]}});_0xeb4f42['push'](_0x5e6bc9);}return BPromise[_0x88dd('0x3f')](_0xeb4f42);}})['then'](function(_0x2574f9){logger[_0x88dd('0x40')](_0x88dd('0x41'),util[_0x88dd('0x16')](_0x2574f9,{'showHidden':![],'depth':null}));_0x320e42();})['catch'](function(_0x1ebe1f){logger['error'](_0x88dd('0x42'),util['inspect'](_0x1ebe1f,{'showHidden':![],'depth':null}));_0x320e42(_0x1ebe1f);});}}});};
\ No newline at end of file
index 9bc9b53..e1176df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a3b=['request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetCmContact','CmContact','findAll','options','where','attributes','limit','include','map','model','create','keys','length','body','startsWith','cf_','update','table','cm_contacts','set','toString','sequelize','query','CreateCmContact','lodash','moment','bluebird','randomstring','squel','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s'];(function(_0xdbe2de,_0x3bdc5a){var _0x2facd7=function(_0x50df58){while(--_0x50df58){_0xdbe2de['push'](_0xdbe2de['shift']());}};_0x2facd7(++_0x3bdc5a);}(_0x4a3b,0x152));var _0xb4a3=function(_0x2b9e16,_0x5dc71a){_0x2b9e16=_0x2b9e16-0x0;var _0x3b5646=_0x4a3b[_0x2b9e16];return _0x3b5646;};'use strict';var _=require(_0xb4a3('0x0'));var util=require('util');var moment=require(_0xb4a3('0x1'));var BPromise=require(_0xb4a3('0x2'));var rs=require(_0xb4a3('0x3'));var fs=require('fs');var Redis=require('ioredis');var squel=require(_0xb4a3('0x4'));var db=require(_0xb4a3('0x5'))['db'];var utils=require(_0xb4a3('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb4a3('0x7'));var jayson=require(_0xb4a3('0x8'));var client=jayson[_0xb4a3('0x9')][_0xb4a3('0xa')]({'port':0x232a});config[_0xb4a3('0xb')]=_[_0xb4a3('0xc')](config[_0xb4a3('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb4a3('0xd'))[_0xb4a3('0xe')](socket);function respondWithRpcPromise(_0x5bf2b2,_0x1fde2c,_0x52eb01){return new BPromise(function(_0x112aef,_0x3d9945){return client[_0xb4a3('0xf')](_0x5bf2b2,_0x52eb01)[_0xb4a3('0x10')](function(_0x3c5ca2){logger[_0xb4a3('0x11')](_0xb4a3('0x12'),_0x1fde2c,_0xb4a3('0x13'));logger[_0xb4a3('0x14')](_0xb4a3('0x15'),_0x1fde2c,_0xb4a3('0x13'),JSON[_0xb4a3('0x16')](_0x3c5ca2));if(_0x3c5ca2['error']){if(_0x3c5ca2[_0xb4a3('0x17')][_0xb4a3('0x18')]===0x1f4){logger['error'](_0xb4a3('0x12'),_0x1fde2c,_0x3c5ca2[_0xb4a3('0x17')][_0xb4a3('0x19')]);return _0x3d9945(_0x3c5ca2[_0xb4a3('0x17')][_0xb4a3('0x19')]);}logger[_0xb4a3('0x17')](_0xb4a3('0x12'),_0x1fde2c,_0x3c5ca2[_0xb4a3('0x17')]['message']);return _0x112aef(_0x3c5ca2[_0xb4a3('0x17')][_0xb4a3('0x19')]);}else{logger[_0xb4a3('0x11')](_0xb4a3('0x12'),_0x1fde2c,'request\x20sent');_0x112aef(_0x3c5ca2['result'][_0xb4a3('0x19')]);}})[_0xb4a3('0x1a')](function(_0x4cdd6d){logger[_0xb4a3('0x17')](_0xb4a3('0x12'),_0x1fde2c,_0x4cdd6d);_0x3d9945(_0x4cdd6d);});});}exports[_0xb4a3('0x1b')]=function(_0x5accc5){var _0x276118=this;return new Promise(function(_0x2a07cd,_0x449db1){return db[_0xb4a3('0x1c')][_0xb4a3('0x1d')]({'raw':_0x5accc5['options']?_0x5accc5[_0xb4a3('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x5accc5[_0xb4a3('0x1e')]?_0x5accc5[_0xb4a3('0x1e')][_0xb4a3('0x1f')]||null:null,'attributes':_0x5accc5[_0xb4a3('0x1e')]?_0x5accc5[_0xb4a3('0x1e')][_0xb4a3('0x20')]||null:null,'limit':_0x5accc5[_0xb4a3('0x1e')]?_0x5accc5[_0xb4a3('0x1e')][_0xb4a3('0x21')]||null:null,'include':_0x5accc5[_0xb4a3('0x1e')]?_0x5accc5[_0xb4a3('0x1e')][_0xb4a3('0x22')]?_[_0xb4a3('0x23')](_0x5accc5['options']['include'],function(_0x1469ba){return{'model':db[_0x1469ba[_0xb4a3('0x24')]],'as':_0x1469ba['as'],'attributes':_0x1469ba[_0xb4a3('0x20')],'include':_0x1469ba[_0xb4a3('0x22')]?_[_0xb4a3('0x23')](_0x1469ba[_0xb4a3('0x22')],function(_0xc7991f){return{'model':db[_0xc7991f[_0xb4a3('0x24')]],'as':_0xc7991f['as'],'attributes':_0xc7991f[_0xb4a3('0x20')],'include':_0xc7991f[_0xb4a3('0x22')]?_['map'](_0xc7991f[_0xb4a3('0x22')],function(_0xaec738){return{'model':db[_0xaec738[_0xb4a3('0x24')]],'as':_0xaec738['as'],'attributes':_0xaec738[_0xb4a3('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x10d70b){logger[_0xb4a3('0x11')](_0xb4a3('0x1b'),_0x5accc5);logger[_0xb4a3('0x14')]('GetCmContact',_0x5accc5,JSON[_0xb4a3('0x16')](_0x10d70b));_0x2a07cd(_0x10d70b);})[_0xb4a3('0x1a')](function(_0x4a9fbc){logger[_0xb4a3('0x17')](_0xb4a3('0x1b'),_0x4a9fbc['message'],_0x5accc5);_0x449db1(_0x276118[_0xb4a3('0x17')](0x1f4,_0x4a9fbc[_0xb4a3('0x19')]));});});};exports['CreateCmContact']=function(_0x42224c){var _0x3ccaad=this;return new Promise(function(_0x4f5061,_0x5c2c89){return db[_0xb4a3('0x1c')][_0xb4a3('0x25')](_0x42224c['body'],{'raw':_0x42224c[_0xb4a3('0x1e')]?_0x42224c[_0xb4a3('0x1e')]['raw']===undefined?!![]:![]:!![]})[_0xb4a3('0x10')](function(_0x227867){var _0x21a7f3;for(var _0x1a957e=0x0;_0x1a957e<Object[_0xb4a3('0x26')](_0x42224c['body'])[_0xb4a3('0x27')];_0x1a957e++){var _0xcdb55b=Object['keys'](_0x42224c[_0xb4a3('0x28')])[_0x1a957e];if(_0xcdb55b[_0xb4a3('0x29')](_0xb4a3('0x2a'))){_0x21a7f3=squel[_0xb4a3('0x2b')]()[_0xb4a3('0x2c')](_0xb4a3('0x2d'))[_0xb4a3('0x2e')](_0xcdb55b,_0x42224c['body'][_0xcdb55b])[_0xb4a3('0x1f')]('id\x20=\x20?',_0x227867['id'])[_0xb4a3('0x2f')]();break;}}if(!_0x21a7f3)return _0x227867;return db[_0xb4a3('0x30')][_0xb4a3('0x31')](_0x21a7f3)['then'](function(){return _0x227867;});})[_0xb4a3('0x10')](function(_0x75bd91){logger[_0xb4a3('0x11')]('CreateCmContact',_0x42224c);logger[_0xb4a3('0x14')](_0xb4a3('0x32'),_0x42224c,JSON[_0xb4a3('0x16')](_0x75bd91));_0x4f5061(_0x75bd91);})['catch'](function(_0x1a4e8c){logger[_0xb4a3('0x17')](_0xb4a3('0x32'),_0x1a4e8c[_0xb4a3('0x19')],_0x42224c);_0x5c2c89(_0x3ccaad['error'](0x1f4,_0x1a4e8c[_0xb4a3('0x19')]));});});};
\ No newline at end of file
+var _0x0870=['map','model','stringify','CreateCmContact','create','body','length','startsWith','table','cm_contacts','set','id\x20=\x20?','toString','sequelize','query','lodash','util','randomstring','ioredis','squel','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','then','info','CmContact,\x20%s,\x20%s','request\x20sent','CmContact,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','raw','where','attributes','limit','include'];(function(_0x4944f1,_0x482a52){var _0x433494=function(_0x40d7f3){while(--_0x40d7f3){_0x4944f1['push'](_0x4944f1['shift']());}};_0x433494(++_0x482a52);}(_0x0870,0xd7));var _0x0087=function(_0x54ecfa,_0x508b38){_0x54ecfa=_0x54ecfa-0x0;var _0x320d72=_0x0870[_0x54ecfa];return _0x320d72;};'use strict';var _=require(_0x0087('0x0'));var util=require(_0x0087('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0087('0x2'));var fs=require('fs');var Redis=require(_0x0087('0x3'));var squel=require(_0x0087('0x4'));var db=require(_0x0087('0x5'))['db'];var utils=require(_0x0087('0x6'));var logger=require(_0x0087('0x7'))(_0x0087('0x8'));var config=require('../../config/environment');var jayson=require(_0x0087('0x9'));var client=jayson[_0x0087('0xa')]['http']({'port':0x232a});config[_0x0087('0xb')]=_[_0x0087('0xc')](config[_0x0087('0xb')],{'host':_0x0087('0xd'),'port':0x18eb});var socket=require(_0x0087('0xe'))(new Redis(config[_0x0087('0xb')]));require('./cmContact.socket')[_0x0087('0xf')](socket);function respondWithRpcPromise(_0x53f50e,_0x37ce3a,_0x202261){return new BPromise(function(_0x55bbab,_0x384643){return client['request'](_0x53f50e,_0x202261)[_0x0087('0x10')](function(_0x11a242){logger[_0x0087('0x11')](_0x0087('0x12'),_0x37ce3a,_0x0087('0x13'));logger['debug'](_0x0087('0x14'),_0x37ce3a,'request\x20sent',JSON['stringify'](_0x11a242));if(_0x11a242[_0x0087('0x15')]){if(_0x11a242[_0x0087('0x15')][_0x0087('0x16')]===0x1f4){logger[_0x0087('0x15')](_0x0087('0x12'),_0x37ce3a,_0x11a242[_0x0087('0x15')]['message']);return _0x384643(_0x11a242[_0x0087('0x15')][_0x0087('0x17')]);}logger['error'](_0x0087('0x12'),_0x37ce3a,_0x11a242['error'][_0x0087('0x17')]);return _0x55bbab(_0x11a242[_0x0087('0x15')]['message']);}else{logger[_0x0087('0x11')](_0x0087('0x12'),_0x37ce3a,_0x0087('0x13'));_0x55bbab(_0x11a242[_0x0087('0x18')][_0x0087('0x17')]);}})[_0x0087('0x19')](function(_0x55c89d){logger['error'](_0x0087('0x12'),_0x37ce3a,_0x55c89d);_0x384643(_0x55c89d);});});}exports[_0x0087('0x1a')]=function(_0x5364ce){var _0x52dfde=this;return new Promise(function(_0x5ec404,_0x2fdf36){return db[_0x0087('0x1b')][_0x0087('0x1c')]({'raw':_0x5364ce[_0x0087('0x1d')]?_0x5364ce[_0x0087('0x1d')][_0x0087('0x1e')]===undefined?!![]:![]:!![],'where':_0x5364ce['options']?_0x5364ce[_0x0087('0x1d')][_0x0087('0x1f')]||null:null,'attributes':_0x5364ce['options']?_0x5364ce[_0x0087('0x1d')][_0x0087('0x20')]||null:null,'limit':_0x5364ce[_0x0087('0x1d')]?_0x5364ce[_0x0087('0x1d')][_0x0087('0x21')]||null:null,'include':_0x5364ce[_0x0087('0x1d')]?_0x5364ce[_0x0087('0x1d')][_0x0087('0x22')]?_[_0x0087('0x23')](_0x5364ce[_0x0087('0x1d')][_0x0087('0x22')],function(_0x36a245){return{'model':db[_0x36a245[_0x0087('0x24')]],'as':_0x36a245['as'],'attributes':_0x36a245['attributes'],'include':_0x36a245['include']?_[_0x0087('0x23')](_0x36a245[_0x0087('0x22')],function(_0x145d4e){return{'model':db[_0x145d4e[_0x0087('0x24')]],'as':_0x145d4e['as'],'attributes':_0x145d4e[_0x0087('0x20')],'include':_0x145d4e[_0x0087('0x22')]?_['map'](_0x145d4e[_0x0087('0x22')],function(_0x5662e0){return{'model':db[_0x5662e0[_0x0087('0x24')]],'as':_0x5662e0['as'],'attributes':_0x5662e0[_0x0087('0x20')]};}):[]};}):[]};}):[]:[]})[_0x0087('0x10')](function(_0x48d62b){logger[_0x0087('0x11')](_0x0087('0x1a'),_0x5364ce);logger['debug'](_0x0087('0x1a'),_0x5364ce,JSON[_0x0087('0x25')](_0x48d62b));_0x5ec404(_0x48d62b);})['catch'](function(_0x1df095){logger[_0x0087('0x15')](_0x0087('0x1a'),_0x1df095[_0x0087('0x17')],_0x5364ce);_0x2fdf36(_0x52dfde[_0x0087('0x15')](0x1f4,_0x1df095[_0x0087('0x17')]));});});};exports[_0x0087('0x26')]=function(_0x24e288){var _0x2f8547=this;return new Promise(function(_0x6a83fc,_0x367e03){return db[_0x0087('0x1b')][_0x0087('0x27')](_0x24e288[_0x0087('0x28')],{'raw':_0x24e288[_0x0087('0x1d')]?_0x24e288['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2ff497){var _0x48b7d9;for(var _0x37a447=0x0;_0x37a447<Object['keys'](_0x24e288[_0x0087('0x28')])[_0x0087('0x29')];_0x37a447++){var _0x460694=Object['keys'](_0x24e288['body'])[_0x37a447];if(_0x460694[_0x0087('0x2a')]('cf_')){_0x48b7d9=squel['update']()[_0x0087('0x2b')](_0x0087('0x2c'))[_0x0087('0x2d')](_0x460694,_0x24e288[_0x0087('0x28')][_0x460694])['where'](_0x0087('0x2e'),_0x2ff497['id'])[_0x0087('0x2f')]();break;}}if(!_0x48b7d9)return _0x2ff497;return db[_0x0087('0x30')][_0x0087('0x31')](_0x48b7d9)[_0x0087('0x10')](function(){return _0x2ff497;});})['then'](function(_0x5a2f4f){logger[_0x0087('0x11')]('CreateCmContact',_0x24e288);logger['debug']('CreateCmContact',_0x24e288,JSON[_0x0087('0x25')](_0x5a2f4f));_0x6a83fc(_0x5a2f4f);})[_0x0087('0x19')](function(_0x3e5f61){logger[_0x0087('0x15')]('CreateCmContact',_0x3e5f61[_0x0087('0x17')],_0x24e288);_0x367e03(_0x2f8547[_0x0087('0x15')](0x1f4,_0x3e5f61[_0x0087('0x17')]));});});};
\ No newline at end of file
index 69c3dfa..844ea1a 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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xa9e0[_0x1ddedd];return _0xa3e1ac;};'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 f2b8d45..d329fe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa75c=['show','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','/merge','merge','create','bulkCreate','setTags','diskStorage','root','server/files/tmp','originalname','format','%s-%s%s','basename','now','extname','single','file','uploadCsv','join','/upload','upload','put','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./cmContact.controller','get','isAuthenticated','/describe','describe','/:id'];(function(_0xee5b48,_0x1d031c){var _0x5ac43b=function(_0x26445c){while(--_0x26445c){_0xee5b48['push'](_0xee5b48['shift']());}};_0x5ac43b(++_0x1d031c);}(_0xa75c,0x183));var _0xca75=function(_0xfb42e6,_0x5f5d4b){_0xfb42e6=_0xfb42e6-0x0;var _0x27265b=_0xa75c[_0xfb42e6];return _0x27265b;};'use strict';var multer=require(_0xca75('0x0'));var util=require('util');var path=require(_0xca75('0x1'));var timeout=require(_0xca75('0x2'));var express=require(_0xca75('0x3'));var router=express[_0xca75('0x4')]();var fs_extra=require(_0xca75('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xca75('0x6'));var controller=require(_0xca75('0x7'));router[_0xca75('0x8')]('/',auth[_0xca75('0x9')](),controller['index']);router['get'](_0xca75('0xa'),auth[_0xca75('0x9')](),controller[_0xca75('0xb')]);router['get'](_0xca75('0xc'),auth['isAuthenticated'](),controller[_0xca75('0xd')]);router[_0xca75('0x8')]('/:id/tags',auth['isAuthenticated'](),controller[_0xca75('0xe')]);router[_0xca75('0x8')](_0xca75('0xf'),auth[_0xca75('0x9')](),controller[_0xca75('0x10')]);router['get'](_0xca75('0x11'),auth[_0xca75('0x9')](),controller[_0xca75('0x12')]);router[_0xca75('0x8')](_0xca75('0x13'),auth['isAuthenticated'](),controller[_0xca75('0x14')]);router[_0xca75('0x8')](_0xca75('0x15'),auth[_0xca75('0x9')](),controller[_0xca75('0x16')]);router[_0xca75('0x8')](_0xca75('0x17'),auth['isAuthenticated'](),controller[_0xca75('0x18')]);router[_0xca75('0x19')](_0xca75('0x1a'),auth['isAuthenticated'](),controller[_0xca75('0x1b')]);router[_0xca75('0x19')]('/',auth[_0xca75('0x9')](),controller[_0xca75('0x1c')]);router[_0xca75('0x19')]('/create_many',auth[_0xca75('0x9')](),controller[_0xca75('0x1d')]);router[_0xca75('0x19')]('/:id/tags',auth[_0xca75('0x9')](),controller[_0xca75('0x1e')]);var upload=multer({'storage':multer[_0xca75('0x1f')]({'destination':function(_0x409370,_0x174193,_0x30375c){_0x30375c(null,path['join'](config[_0xca75('0x20')],_0xca75('0x21')));},'filename':function(_0x2befe8,_0x592c01,_0x2d8784){_0x592c01[_0xca75('0x22')]=_0x592c01[_0xca75('0x22')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2d8784(null,util[_0xca75('0x23')](_0xca75('0x24'),path[_0xca75('0x25')](_0x592c01[_0xca75('0x22')],path['extname'](_0x592c01['originalname'])),Date[_0xca75('0x26')](),path[_0xca75('0x27')](_0x592c01[_0xca75('0x22')])));}})});router[_0xca75('0x19')]('/csv',upload[_0xca75('0x28')](_0xca75('0x29')),controller[_0xca75('0x2a')]);var upload=multer({'storage':multer[_0xca75('0x1f')]({'destination':function(_0x5b0c04,_0x3a414c,_0x230e3f){_0x230e3f(null,path[_0xca75('0x2b')](config[_0xca75('0x20')],_0xca75('0x21')));},'filename':function(_0x4dfbee,_0x125ac8,_0x7ba416){_0x125ac8[_0xca75('0x22')]=_0x125ac8[_0xca75('0x22')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x7ba416(null,util[_0xca75('0x23')](_0xca75('0x24'),path[_0xca75('0x25')](_0x125ac8[_0xca75('0x22')],path[_0xca75('0x27')](_0x125ac8[_0xca75('0x22')])),Date[_0xca75('0x26')](),path['extname'](_0x125ac8[_0xca75('0x22')])));}})});router[_0xca75('0x19')](_0xca75('0x2c'),upload['single'](_0xca75('0x29')),controller[_0xca75('0x2d')]);router[_0xca75('0x19')]('/upload/:id',auth[_0xca75('0x9')](),controller['import']);router[_0xca75('0x2e')]('/:id',auth[_0xca75('0x9')](),controller[_0xca75('0x2f')]);router['delete'](_0xca75('0xc'),auth[_0xca75('0x9')](),controller[_0xca75('0x30')]);module[_0xca75('0x31')]=router;
\ No newline at end of file
+var _0x71d1=['/create_many','bulkCreate','setTags','diskStorage','join','root','server/files/tmp','originalname','replace','format','%s-%s%s','basename','extname','now','single','file','uploadCsv','/upload','upload','/upload/:id','import','put','/:id','update','delete','destroy','exports','multer','path','express','fs-extra','../../components/auth/service','./cmContact.controller','get','index','isAuthenticated','/:id/tags','getTags','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getJscriptySessions','getJourney','post','/merge','merge','create'];(function(_0x2865c1,_0x120ac1){var _0x43700d=function(_0x162235){while(--_0x162235){_0x2865c1['push'](_0x2865c1['shift']());}};_0x43700d(++_0x120ac1);}(_0x71d1,0x164));var _0x171d=function(_0x421cf8,_0x23152c){_0x421cf8=_0x421cf8-0x0;var _0x145c48=_0x71d1[_0x421cf8];return _0x145c48;};'use strict';var multer=require(_0x171d('0x0'));var util=require('util');var path=require(_0x171d('0x1'));var timeout=require('connect-timeout');var express=require(_0x171d('0x2'));var router=express['Router']();var fs_extra=require(_0x171d('0x3'));var auth=require(_0x171d('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x171d('0x5'));router[_0x171d('0x6')]('/',auth['isAuthenticated'](),controller[_0x171d('0x7')]);router[_0x171d('0x6')]('/describe',auth[_0x171d('0x8')](),controller['describe']);router[_0x171d('0x6')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0x171d('0x9'),auth['isAuthenticated'](),controller[_0x171d('0xa')]);router[_0x171d('0x6')]('/:id/hoppers',auth[_0x171d('0x8')](),controller[_0x171d('0xb')]);router[_0x171d('0x6')](_0x171d('0xc'),auth[_0x171d('0x8')](),controller['getHopperHistories']);router[_0x171d('0x6')](_0x171d('0xd'),auth[_0x171d('0x8')](),controller['getHopperFinals']);router[_0x171d('0x6')]('/:id/jscripty_sessions',auth[_0x171d('0x8')](),controller[_0x171d('0xe')]);router[_0x171d('0x6')]('/:id/journey',auth[_0x171d('0x8')](),controller[_0x171d('0xf')]);router[_0x171d('0x10')](_0x171d('0x11'),auth[_0x171d('0x8')](),controller[_0x171d('0x12')]);router['post']('/',auth[_0x171d('0x8')](),controller[_0x171d('0x13')]);router[_0x171d('0x10')](_0x171d('0x14'),auth[_0x171d('0x8')](),controller[_0x171d('0x15')]);router[_0x171d('0x10')](_0x171d('0x9'),auth[_0x171d('0x8')](),controller[_0x171d('0x16')]);var upload=multer({'storage':multer[_0x171d('0x17')]({'destination':function(_0xf10166,_0x377c27,_0x259c05){_0x259c05(null,path[_0x171d('0x18')](config[_0x171d('0x19')],_0x171d('0x1a')));},'filename':function(_0x264e20,_0x40898d,_0x36a74e){_0x40898d[_0x171d('0x1b')]=_0x40898d['originalname'][_0x171d('0x1c')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x36a74e(null,util[_0x171d('0x1d')](_0x171d('0x1e'),path[_0x171d('0x1f')](_0x40898d[_0x171d('0x1b')],path[_0x171d('0x20')](_0x40898d[_0x171d('0x1b')])),Date[_0x171d('0x21')](),path[_0x171d('0x20')](_0x40898d[_0x171d('0x1b')])));}})});router[_0x171d('0x10')]('/csv',upload[_0x171d('0x22')](_0x171d('0x23')),controller[_0x171d('0x24')]);var upload=multer({'storage':multer[_0x171d('0x17')]({'destination':function(_0x1b2ca6,_0x229c96,_0x41e824){_0x41e824(null,path[_0x171d('0x18')](config[_0x171d('0x19')],_0x171d('0x1a')));},'filename':function(_0x57346d,_0x174060,_0x5030c8){_0x174060[_0x171d('0x1b')]=_0x174060[_0x171d('0x1b')][_0x171d('0x1c')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5030c8(null,util['format'](_0x171d('0x1e'),path['basename'](_0x174060[_0x171d('0x1b')],path[_0x171d('0x20')](_0x174060[_0x171d('0x1b')])),Date[_0x171d('0x21')](),path['extname'](_0x174060['originalname'])));}})});router[_0x171d('0x10')](_0x171d('0x25'),upload[_0x171d('0x22')](_0x171d('0x23')),controller[_0x171d('0x26')]);router[_0x171d('0x10')](_0x171d('0x27'),auth[_0x171d('0x8')](),controller[_0x171d('0x28')]);router[_0x171d('0x29')](_0x171d('0x2a'),auth['isAuthenticated'](),controller[_0x171d('0x2b')]);router[_0x171d('0x2c')]('/:id',auth['isAuthenticated'](),controller[_0x171d('0x2d')]);module[_0x171d('0x2e')]=router;
\ No newline at end of file
index e1d069f..f25efe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e1e=['name','TEXT','long','select','parse','values','stringify','BOOLEAN','ENUM','voice','sequelize','lodash','VIRTUAL','getDataValue','STRING','setDataValue','alias'];(function(_0x55bce1,_0x6cecac){var _0x371921=function(_0x4bdec0){while(--_0x4bdec0){_0x55bce1['push'](_0x55bce1['shift']());}};_0x371921(++_0x6cecac);}(_0x8e1e,0x109));var _0xe8e1=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0x8e1e[_0x51020b];return _0x371e47;};'use strict';var Sequelize=require(_0xe8e1('0x0'));var _=require(_0xe8e1('0x1'));module['exports']={'name':{'type':Sequelize[_0xe8e1('0x2')],'get':function(_0x20a2e0){return this[_0xe8e1('0x3')]('alias');}},'alias':{'type':Sequelize[_0xe8e1('0x4')],'allowNull':![],'set':function(_0x41a85f){this[_0xe8e1('0x5')](_0xe8e1('0x6'),_0x41a85f?_0x41a85f:this[_0xe8e1('0x3')](_0xe8e1('0x7')));}},'type':{'type':Sequelize[_0xe8e1('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0xe8e1('0x8')](_0xe8e1('0x9')),'get':function(){if(this[_0xe8e1('0x3')]('type')===_0xe8e1('0xa')){return JSON[_0xe8e1('0xb')](this['getDataValue'](_0xe8e1('0xc')));}else{return this['getDataValue'](_0xe8e1('0xc'));}},'set':function(_0x57c07d){if(Array['isArray'](_0x57c07d)){this[_0xe8e1('0x5')](_0xe8e1('0xc'),JSON[_0xe8e1('0xd')](_0x57c07d));}else{this['setDataValue'](_0xe8e1('0xc'),_0x57c07d);}}},'required':{'type':Sequelize[_0xe8e1('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0xe8e1('0xf')](_0xe8e1('0x10'))}};
\ No newline at end of file
+var _0x2129=['alias','TEXT','long','type','select','parse','values','setDataValue','stringify','BOOLEAN','ENUM','voice','sequelize','lodash','exports','VIRTUAL','getDataValue','STRING'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0x2129,0xae));var _0x9212=function(_0x38feb4,_0x54d5fb){_0x38feb4=_0x38feb4-0x0;var _0x5253b7=_0x2129[_0x38feb4];return _0x5253b7;};'use strict';var Sequelize=require(_0x9212('0x0'));var _=require(_0x9212('0x1'));module[_0x9212('0x2')]={'name':{'type':Sequelize[_0x9212('0x3')],'get':function(_0x516c4e){return this[_0x9212('0x4')]('alias');}},'alias':{'type':Sequelize[_0x9212('0x5')],'allowNull':![],'set':function(_0x452702){this['setDataValue'](_0x9212('0x6'),_0x452702?_0x452702:this[_0x9212('0x4')]('name'));}},'type':{'type':Sequelize[_0x9212('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0x9212('0x7')](_0x9212('0x8')),'get':function(){if(this[_0x9212('0x4')](_0x9212('0x9'))===_0x9212('0xa')){return JSON[_0x9212('0xb')](this[_0x9212('0x4')](_0x9212('0xc')));}else{return this[_0x9212('0x4')](_0x9212('0xc'));}},'set':function(_0x440e15){if(Array['isArray'](_0x440e15)){this[_0x9212('0xd')](_0x9212('0xc'),JSON[_0x9212('0xe')](_0x440e15));}else{this[_0x9212('0xd')](_0x9212('0xc'),_0x440e15);}}},'required':{'type':Sequelize[_0x9212('0xf')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x9212('0xf')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x9212('0x10')](_0x9212('0x11'))}};
\ No newline at end of file
index 3847516..59374be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ccb=['body','params','sequelize','transaction','create','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','addColumn','cm_contacts','format','cf_%d','eml-format','request-promise','moment','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','attributes','intersection','fields','nolimit','limit','order','sort','pick','filter','where','merge','VIRTUAL','include','findAll','rows','catch','show','includeAll','find'];(function(_0x46e387,_0x3a0d28){var _0x54a2f7=function(_0x264f15){while(--_0x264f15){_0x46e387['push'](_0x46e387['shift']());}};_0x54a2f7(++_0x3a0d28);}(_0x3ccb,0x1ba));var _0xb3cc=function(_0x1a39f0,_0x5dfde5){_0x1a39f0=_0x1a39f0-0x0;var _0x451055=_0x3ccb[_0x1a39f0];return _0x451055;};'use strict';var emlformat=require(_0xb3cc('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb3cc('0x1'));var moment=require(_0xb3cc('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xb3cc('0x3'));var sox=require('sox');var csv=require(_0xb3cc('0x4'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb3cc('0x5'));var _=require(_0xb3cc('0x6'));var squel=require(_0xb3cc('0x7'));var crypto=require(_0xb3cc('0x8'));var jsforce=require(_0xb3cc('0x9'));var deskjs=require(_0xb3cc('0xa'));var toCsv=require('to-csv');var querystring=require(_0xb3cc('0xb'));var Papa=require(_0xb3cc('0xc'));var Redis=require('ioredis');var authService=require(_0xb3cc('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xb3cc('0xe'));var hardwareService=require(_0xb3cc('0xf'));var logger=require('../../config/logger')(_0xb3cc('0x10'));var utils=require(_0xb3cc('0x11'));var config=require(_0xb3cc('0x12'));var licenseUtil=require(_0xb3cc('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x45366d,_0x4bd909){_0x4bd909=_0x4bd909||0xcc;return function(_0x3cd24d){if(_0x3cd24d){return _0x45366d[_0xb3cc('0x14')](_0x4bd909);}return _0x45366d[_0xb3cc('0x15')](_0x4bd909)[_0xb3cc('0x16')]();};}function respondWithResult(_0x5325b2,_0x436613){_0x436613=_0x436613||0xc8;return function(_0xd6666){if(_0xd6666){return _0x5325b2[_0xb3cc('0x15')](_0x436613)[_0xb3cc('0x17')](_0xd6666);}};}function respondWithFilteredResult(_0x242d8b,_0x270baa){return function(_0x23088e){if(_0x23088e){var _0xd930a6=typeof _0x270baa['offset']===_0xb3cc('0x18')&&typeof _0x270baa['limit']==='undefined';var _0x12c95a=_0x23088e[_0xb3cc('0x19')];var _0x44b2f9=_0xd930a6?0x0:_0x270baa['offset'];var _0x59f09b=_0xd930a6?_0x23088e['count']:_0x270baa[_0xb3cc('0x1a')]+_0x270baa['limit'];var _0x1f5761;if(_0x59f09b>=_0x12c95a){_0x59f09b=_0x12c95a;_0x1f5761=0xc8;}else{_0x1f5761=0xce;}_0x242d8b[_0xb3cc('0x15')](_0x1f5761);return _0x242d8b['set'](_0xb3cc('0x1b'),_0x44b2f9+'-'+_0x59f09b+'/'+_0x12c95a)['json'](_0x23088e);}return null;};}function patchUpdates(_0x5d21c0){return function(_0x32cd61){try{jsonpatch['apply'](_0x32cd61,_0x5d21c0,!![]);}catch(_0x1cebb3){return BPromise[_0xb3cc('0x1c')](_0x1cebb3);}return _0x32cd61[_0xb3cc('0x1d')]();};}function saveUpdates(_0x20057a,_0x568c0d){return function(_0x3322b3){if(_0x3322b3){return _0x3322b3[_0xb3cc('0x1e')](_0x20057a)[_0xb3cc('0x1f')](function(_0xbf3a8d){return _0xbf3a8d;});}return null;};}function removeEntity(_0x2f7c8c,_0x1f0ba9){return function(_0x22898d){if(_0x22898d){return _0x22898d[_0xb3cc('0x20')]()['then'](function(){_0x2f7c8c[_0xb3cc('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d3117,_0x2b9147){return function(_0xa54b16){if(!_0xa54b16){_0x3d3117[_0xb3cc('0x14')](0x194);}return _0xa54b16;};}function handleError(_0x206667,_0x5a2a34){_0x5a2a34=_0x5a2a34||0x1f4;return function(_0x5122bb){logger[_0xb3cc('0x21')](_0x5122bb[_0xb3cc('0x22')]);if(_0x5122bb[_0xb3cc('0x23')]){delete _0x5122bb[_0xb3cc('0x23')];}_0x206667[_0xb3cc('0x15')](_0x5a2a34)[_0xb3cc('0x24')](_0x5122bb);};}exports[_0xb3cc('0x25')]=function(_0x1a1e96,_0x63f733){var _0x385c8a={},_0x4ce5ba={},_0x562b4b={'count':0x0,'rows':[]};var _0x1ee8c1=_[_0xb3cc('0x26')](db[_0xb3cc('0x27')][_0xb3cc('0x28')],function(_0x4a9e4d){return{'name':_0x4a9e4d[_0xb3cc('0x29')],'type':_0x4a9e4d[_0xb3cc('0x2a')][_0xb3cc('0x2b')]};});_0x4ce5ba[_0xb3cc('0x2c')]=_[_0xb3cc('0x2d')](_['map'](_0x1ee8c1,'name'),[_0xb3cc('0x23')]);_0x4ce5ba[_0xb3cc('0x2e')]=_[_0xb3cc('0x2f')](_0x1a1e96['query']);_0x4ce5ba[_0xb3cc('0x30')]=_['intersection'](_0x4ce5ba[_0xb3cc('0x2c')],_0x4ce5ba['query']);_0x385c8a[_0xb3cc('0x31')]=_[_0xb3cc('0x32')](_0x4ce5ba[_0xb3cc('0x2c')],qs['fields'](_0x1a1e96[_0xb3cc('0x2e')][_0xb3cc('0x33')]));_0x385c8a[_0xb3cc('0x31')]=_0x385c8a[_0xb3cc('0x31')]['length']?_0x385c8a[_0xb3cc('0x31')]:_0x4ce5ba['model'];if(!_0x1a1e96[_0xb3cc('0x2e')]['hasOwnProperty'](_0xb3cc('0x34'))){_0x385c8a[_0xb3cc('0x35')]=qs[_0xb3cc('0x35')](_0x1a1e96[_0xb3cc('0x2e')]['limit']);_0x385c8a[_0xb3cc('0x1a')]=qs['offset'](_0x1a1e96[_0xb3cc('0x2e')][_0xb3cc('0x1a')]);}_0x385c8a[_0xb3cc('0x36')]=qs['sort'](_0x1a1e96[_0xb3cc('0x2e')][_0xb3cc('0x37')]);_0x385c8a['where']=qs[_0xb3cc('0x30')](_[_0xb3cc('0x38')](_0x1a1e96[_0xb3cc('0x2e')],_0x4ce5ba['filters']),_0x1ee8c1);if(_0x1a1e96[_0xb3cc('0x2e')][_0xb3cc('0x39')]){_0x385c8a[_0xb3cc('0x3a')]=_[_0xb3cc('0x3b')](_0x385c8a[_0xb3cc('0x3a')],{'$or':_[_0xb3cc('0x26')](_0x1ee8c1,function(_0x5af88a){if(_0x5af88a['type']!==_0xb3cc('0x3c')){var _0x4c643b={};_0x4c643b[_0x5af88a['name']]={'$like':'%'+_0x1a1e96['query']['filter']+'%'};return _0x4c643b;}})});}_0x385c8a=_[_0xb3cc('0x3b')]({},_0x385c8a,_0x1a1e96['options']);var _0x18c430={'where':_0x385c8a[_0xb3cc('0x3a')]};return db[_0xb3cc('0x27')][_0xb3cc('0x19')](_0x18c430)['then'](function(_0x3f4a24){_0x562b4b[_0xb3cc('0x19')]=_0x3f4a24;if(_0x1a1e96[_0xb3cc('0x2e')]['includeAll']){_0x385c8a[_0xb3cc('0x3d')]=[{'all':!![]}];}return db[_0xb3cc('0x27')][_0xb3cc('0x3e')](_0x385c8a);})[_0xb3cc('0x1f')](function(_0xf65025){_0x562b4b[_0xb3cc('0x3f')]=_0xf65025;return _0x562b4b;})[_0xb3cc('0x1f')](respondWithFilteredResult(_0x63f733,_0x385c8a))[_0xb3cc('0x40')](handleError(_0x63f733,null));};exports[_0xb3cc('0x41')]=function(_0x122895,_0x5f09e7){var _0x52e585={'raw':!![],'where':{'id':_0x122895['params']['id']}},_0x297496={};_0x297496['model']=_[_0xb3cc('0x2f')](db['CmCustomField'][_0xb3cc('0x28')]);_0x297496['query']=_[_0xb3cc('0x2f')](_0x122895['query']);_0x297496[_0xb3cc('0x30')]=_['intersection'](_0x297496[_0xb3cc('0x2c')],_0x297496['query']);_0x52e585[_0xb3cc('0x31')]=_[_0xb3cc('0x32')](_0x297496['model'],qs[_0xb3cc('0x33')](_0x122895[_0xb3cc('0x2e')][_0xb3cc('0x33')]));_0x52e585[_0xb3cc('0x31')]=_0x52e585[_0xb3cc('0x31')]['length']?_0x52e585[_0xb3cc('0x31')]:_0x297496[_0xb3cc('0x2c')];if(_0x122895[_0xb3cc('0x2e')][_0xb3cc('0x42')]){_0x52e585[_0xb3cc('0x3d')]=[{'all':!![]}];}_0x52e585=_['merge']({},_0x52e585,_0x122895['options']);return db['CmCustomField'][_0xb3cc('0x43')](_0x52e585)[_0xb3cc('0x1f')](handleEntityNotFound(_0x5f09e7,null))[_0xb3cc('0x1f')](respondWithResult(_0x5f09e7,null))[_0xb3cc('0x40')](handleError(_0x5f09e7,null));};exports['update']=function(_0x21577b,_0x1aaa0e){if(_0x21577b[_0xb3cc('0x44')]['id']){delete _0x21577b[_0xb3cc('0x44')]['id'];}return db[_0xb3cc('0x27')]['find']({'where':{'id':_0x21577b['params']['id']}})[_0xb3cc('0x1f')](handleEntityNotFound(_0x1aaa0e,null))['then'](saveUpdates(_0x21577b[_0xb3cc('0x44')],null))[_0xb3cc('0x1f')](respondWithResult(_0x1aaa0e,null))['catch'](handleError(_0x1aaa0e,null));};exports[_0xb3cc('0x20')]=function(_0x34ba51,_0x1e5ae1){return db[_0xb3cc('0x27')][_0xb3cc('0x43')]({'where':{'id':_0x34ba51[_0xb3cc('0x45')]['id']}})[_0xb3cc('0x1f')](handleEntityNotFound(_0x1e5ae1,null))[_0xb3cc('0x1f')](removeEntity(_0x1e5ae1,null))['catch'](handleError(_0x1e5ae1,null));};exports['create']=function(_0x5e6811,_0x49c001){var _0x2074f5;return db[_0xb3cc('0x46')][_0xb3cc('0x47')](function(_0x59a5ca){return db[_0xb3cc('0x27')][_0xb3cc('0x48')](_0x5e6811[_0xb3cc('0x44')],{'transaction':_0x59a5ca})[_0xb3cc('0x1f')](function(_0x49fe6f){_0x2074f5=_0x49fe6f;var _0x5f7e57={'type':db[_0xb3cc('0x49')][_0xb3cc('0x4a')],'transaction':_0x59a5ca};switch(_0x5e6811[_0xb3cc('0x44')][_0xb3cc('0x2a')]){case _0xb3cc('0x4b'):_0x5f7e57['type']=db['Sequelize']['TEXT'];break;case _0xb3cc('0x4c'):_0x5f7e57[_0xb3cc('0x2a')]=db[_0xb3cc('0x49')][_0xb3cc('0x4d')];break;case _0xb3cc('0x4e'):_0x5f7e57[_0xb3cc('0x2a')]=db[_0xb3cc('0x49')][_0xb3cc('0x4f')];_0x5f7e57[_0xb3cc('0x50')]=![];break;default:}return db[_0xb3cc('0x46')]['queryInterface'][_0xb3cc('0x51')](_0xb3cc('0x52'),util[_0xb3cc('0x53')](_0xb3cc('0x54'),_0x2074f5['id']),_0x5f7e57);})[_0xb3cc('0x1f')](function(){return _0x2074f5;});})['then'](respondWithResult(_0x49c001,0xc9))[_0xb3cc('0x40')](handleError(_0x49c001,null));};
\ No newline at end of file
+var _0x841b=['body','params','create','sequelize','transaction','Sequelize','text','TEXT','number','INTEGER','switch','BOOLEAN','queryInterface','addColumn','format','cf_%d','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','end','status','json','offset','undefined','count','limit','Content-Range','apply','reject','update','destroy','sendStatus','error','stack','name','send','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','options','then','include','findAll','catch','includeAll','merge','find'];(function(_0x487063,_0x2337fb){var _0x4a990f=function(_0x48a6e6){while(--_0x48a6e6){_0x487063['push'](_0x487063['shift']());}};_0x4a990f(++_0x2337fb);}(_0x841b,0xba));var _0xb841=function(_0x47199b,_0x16e824){_0x47199b=_0x47199b-0x0;var _0x390911=_0x841b[_0x47199b];return _0x390911;};'use strict';var emlformat=require(_0xb841('0x0'));var rimraf=require(_0xb841('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb841('0x2'));var rp=require(_0xb841('0x3'));var moment=require('moment');var BPromise=require(_0xb841('0x4'));var Mustache=require('mustache');var util=require(_0xb841('0x5'));var path=require(_0xb841('0x6'));var sox=require('sox');var csv=require(_0xb841('0x7'));var ejs=require(_0xb841('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb841('0x9'));var squel=require(_0xb841('0xa'));var crypto=require(_0xb841('0xb'));var jsforce=require(_0xb841('0xc'));var deskjs=require(_0xb841('0xd'));var toCsv=require(_0xb841('0x7'));var querystring=require(_0xb841('0xe'));var Papa=require(_0xb841('0xf'));var Redis=require(_0xb841('0x10'));var authService=require(_0xb841('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xb841('0x12'));var hardwareService=require(_0xb841('0x13'));var logger=require('../../config/logger')(_0xb841('0x14'));var utils=require(_0xb841('0x15'));var config=require(_0xb841('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x51c4bc,_0x355cf3){_0x355cf3=_0x355cf3||0xcc;return function(_0x1d5916){if(_0x1d5916){return _0x51c4bc['sendStatus'](_0x355cf3);}return _0x51c4bc['status'](_0x355cf3)[_0xb841('0x17')]();};}function respondWithResult(_0x4def61,_0x54071f){_0x54071f=_0x54071f||0xc8;return function(_0xdf30b3){if(_0xdf30b3){return _0x4def61[_0xb841('0x18')](_0x54071f)[_0xb841('0x19')](_0xdf30b3);}};}function respondWithFilteredResult(_0x4ef056,_0x3449d6){return function(_0x5cca78){if(_0x5cca78){var _0x3b4d89=typeof _0x3449d6[_0xb841('0x1a')]===_0xb841('0x1b')&&typeof _0x3449d6['limit']===_0xb841('0x1b');var _0xb6c4a7=_0x5cca78[_0xb841('0x1c')];var _0x19f7a2=_0x3b4d89?0x0:_0x3449d6['offset'];var _0x1da39e=_0x3b4d89?_0x5cca78[_0xb841('0x1c')]:_0x3449d6[_0xb841('0x1a')]+_0x3449d6[_0xb841('0x1d')];var _0x58a8fc;if(_0x1da39e>=_0xb6c4a7){_0x1da39e=_0xb6c4a7;_0x58a8fc=0xc8;}else{_0x58a8fc=0xce;}_0x4ef056['status'](_0x58a8fc);return _0x4ef056['set'](_0xb841('0x1e'),_0x19f7a2+'-'+_0x1da39e+'/'+_0xb6c4a7)[_0xb841('0x19')](_0x5cca78);}return null;};}function patchUpdates(_0x154648){return function(_0xe63223){try{jsonpatch[_0xb841('0x1f')](_0xe63223,_0x154648,!![]);}catch(_0x48a858){return BPromise[_0xb841('0x20')](_0x48a858);}return _0xe63223['save']();};}function saveUpdates(_0x104852,_0x84a5bf){return function(_0x58aadd){if(_0x58aadd){return _0x58aadd[_0xb841('0x21')](_0x104852)['then'](function(_0x5d385e){return _0x5d385e;});}return null;};}function removeEntity(_0x408d5b,_0x7dc900){return function(_0x41bf72){if(_0x41bf72){return _0x41bf72[_0xb841('0x22')]()['then'](function(){_0x408d5b[_0xb841('0x18')](0xcc)[_0xb841('0x17')]();});}};}function handleEntityNotFound(_0x3d41cf,_0x13a375){return function(_0x49d56f){if(!_0x49d56f){_0x3d41cf[_0xb841('0x23')](0x194);}return _0x49d56f;};}function handleError(_0x1c4cd9,_0xdbf5ec){_0xdbf5ec=_0xdbf5ec||0x1f4;return function(_0x3526fa){logger[_0xb841('0x24')](_0x3526fa[_0xb841('0x25')]);if(_0x3526fa[_0xb841('0x26')]){delete _0x3526fa[_0xb841('0x26')];}_0x1c4cd9[_0xb841('0x18')](_0xdbf5ec)[_0xb841('0x27')](_0x3526fa);};}exports['index']=function(_0x1758ff,_0x217860){var _0x4642d1={},_0x814e83={},_0x1227eb={'count':0x0,'rows':[]};var _0x514845=_['map'](db[_0xb841('0x28')][_0xb841('0x29')],function(_0x16b1fa){return{'name':_0x16b1fa[_0xb841('0x2a')],'type':_0x16b1fa[_0xb841('0x2b')][_0xb841('0x2c')]};});_0x814e83[_0xb841('0x2d')]=_[_0xb841('0x2e')](_['map'](_0x514845,_0xb841('0x26')),['name']);_0x814e83[_0xb841('0x2f')]=_[_0xb841('0x30')](_0x1758ff[_0xb841('0x2f')]);_0x814e83[_0xb841('0x31')]=_[_0xb841('0x32')](_0x814e83[_0xb841('0x2d')],_0x814e83['query']);_0x4642d1[_0xb841('0x33')]=_[_0xb841('0x32')](_0x814e83[_0xb841('0x2d')],qs[_0xb841('0x34')](_0x1758ff[_0xb841('0x2f')][_0xb841('0x34')]));_0x4642d1['attributes']=_0x4642d1[_0xb841('0x33')][_0xb841('0x35')]?_0x4642d1[_0xb841('0x33')]:_0x814e83[_0xb841('0x2d')];if(!_0x1758ff[_0xb841('0x2f')][_0xb841('0x36')]('nolimit')){_0x4642d1[_0xb841('0x1d')]=qs['limit'](_0x1758ff['query']['limit']);_0x4642d1[_0xb841('0x1a')]=qs[_0xb841('0x1a')](_0x1758ff[_0xb841('0x2f')]['offset']);}_0x4642d1[_0xb841('0x37')]=qs[_0xb841('0x38')](_0x1758ff[_0xb841('0x2f')][_0xb841('0x38')]);_0x4642d1[_0xb841('0x39')]=qs[_0xb841('0x31')](_[_0xb841('0x3a')](_0x1758ff['query'],_0x814e83[_0xb841('0x31')]),_0x514845);if(_0x1758ff[_0xb841('0x2f')][_0xb841('0x3b')]){_0x4642d1[_0xb841('0x39')]=_['merge'](_0x4642d1[_0xb841('0x39')],{'$or':_['map'](_0x514845,function(_0x1de6c3){if(_0x1de6c3['type']!==_0xb841('0x3c')){var _0x272d53={};_0x272d53[_0x1de6c3[_0xb841('0x26')]]={'$like':'%'+_0x1758ff[_0xb841('0x2f')][_0xb841('0x3b')]+'%'};return _0x272d53;}})});}_0x4642d1=_['merge']({},_0x4642d1,_0x1758ff[_0xb841('0x3d')]);var _0x4892cf={'where':_0x4642d1['where']};return db['CmCustomField'][_0xb841('0x1c')](_0x4892cf)[_0xb841('0x3e')](function(_0x1315eb){_0x1227eb[_0xb841('0x1c')]=_0x1315eb;if(_0x1758ff[_0xb841('0x2f')]['includeAll']){_0x4642d1[_0xb841('0x3f')]=[{'all':!![]}];}return db[_0xb841('0x28')][_0xb841('0x40')](_0x4642d1);})['then'](function(_0x270caa){_0x1227eb['rows']=_0x270caa;return _0x1227eb;})[_0xb841('0x3e')](respondWithFilteredResult(_0x217860,_0x4642d1))[_0xb841('0x41')](handleError(_0x217860,null));};exports['show']=function(_0x4c7513,_0x5612fd){var _0x224650={'raw':!![],'where':{'id':_0x4c7513['params']['id']}},_0x515495={};_0x515495[_0xb841('0x2d')]=_[_0xb841('0x30')](db[_0xb841('0x28')][_0xb841('0x29')]);_0x515495['query']=_['keys'](_0x4c7513[_0xb841('0x2f')]);_0x515495['filters']=_[_0xb841('0x32')](_0x515495[_0xb841('0x2d')],_0x515495[_0xb841('0x2f')]);_0x224650['attributes']=_[_0xb841('0x32')](_0x515495['model'],qs[_0xb841('0x34')](_0x4c7513['query'][_0xb841('0x34')]));_0x224650[_0xb841('0x33')]=_0x224650['attributes'][_0xb841('0x35')]?_0x224650['attributes']:_0x515495['model'];if(_0x4c7513[_0xb841('0x2f')][_0xb841('0x42')]){_0x224650[_0xb841('0x3f')]=[{'all':!![]}];}_0x224650=_[_0xb841('0x43')]({},_0x224650,_0x4c7513['options']);return db[_0xb841('0x28')][_0xb841('0x44')](_0x224650)[_0xb841('0x3e')](handleEntityNotFound(_0x5612fd,null))[_0xb841('0x3e')](respondWithResult(_0x5612fd,null))[_0xb841('0x41')](handleError(_0x5612fd,null));};exports[_0xb841('0x21')]=function(_0x28984f,_0x198ee9){if(_0x28984f[_0xb841('0x45')]['id']){delete _0x28984f[_0xb841('0x45')]['id'];}return db[_0xb841('0x28')][_0xb841('0x44')]({'where':{'id':_0x28984f[_0xb841('0x46')]['id']}})[_0xb841('0x3e')](handleEntityNotFound(_0x198ee9,null))['then'](saveUpdates(_0x28984f['body'],null))[_0xb841('0x3e')](respondWithResult(_0x198ee9,null))[_0xb841('0x41')](handleError(_0x198ee9,null));};exports[_0xb841('0x22')]=function(_0x58ebe4,_0x57af0a){return db['CmCustomField'][_0xb841('0x44')]({'where':{'id':_0x58ebe4['params']['id']}})[_0xb841('0x3e')](handleEntityNotFound(_0x57af0a,null))[_0xb841('0x3e')](removeEntity(_0x57af0a,null))['catch'](handleError(_0x57af0a,null));};exports[_0xb841('0x47')]=function(_0x23afdd,_0x1eff40){var _0x293c4e;return db[_0xb841('0x48')][_0xb841('0x49')](function(_0x3a3990){return db['CmCustomField'][_0xb841('0x47')](_0x23afdd[_0xb841('0x45')],{'transaction':_0x3a3990})[_0xb841('0x3e')](function(_0x20628a){_0x293c4e=_0x20628a;var _0x3c020e={'type':db[_0xb841('0x4a')]['TEXT'],'transaction':_0x3a3990};switch(_0x23afdd['body'][_0xb841('0x2b')]){case _0xb841('0x4b'):_0x3c020e['type']=db['Sequelize'][_0xb841('0x4c')];break;case _0xb841('0x4d'):_0x3c020e[_0xb841('0x2b')]=db[_0xb841('0x4a')][_0xb841('0x4e')];break;case _0xb841('0x4f'):_0x3c020e[_0xb841('0x2b')]=db[_0xb841('0x4a')][_0xb841('0x50')];_0x3c020e['defaultValue']=![];break;default:}return db['sequelize'][_0xb841('0x51')][_0xb841('0x52')]('cm_contacts',util[_0xb841('0x53')](_0xb841('0x54'),_0x293c4e['id']),_0x3c020e);})[_0xb841('0x3e')](function(){return _0x293c4e;});})[_0xb841('0x3e')](respondWithResult(_0x1eff40,0xc9))[_0xb841('0x41')](handleError(_0x1eff40,null));};
\ No newline at end of file
index 205a253..6467e3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a1e=['api','bluebird','request-promise','path','rimraf','./cmCustomField.attributes','exports','define','CmCustomField','cm_custom_fields','lodash'];(function(_0x367bc1,_0x482bc7){var _0x3e1cef=function(_0x5e7076){while(--_0x5e7076){_0x367bc1['push'](_0x367bc1['shift']());}};_0x3e1cef(++_0x482bc7);}(_0x1a1e,0x175));var _0xe1a1=function(_0x1e8c2b,_0x159984){_0x1e8c2b=_0x1e8c2b-0x0;var _0x297044=_0x1a1e[_0x1e8c2b];return _0x297044;};'use strict';var _=require(_0xe1a1('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe1a1('0x1'));var moment=require('moment');var BPromise=require(_0xe1a1('0x2'));var rp=require(_0xe1a1('0x3'));var fs=require('fs');var path=require(_0xe1a1('0x4'));var rimraf=require(_0xe1a1('0x5'));var config=require('../../config/environment');var attributes=require(_0xe1a1('0x6'));module[_0xe1a1('0x7')]=function(_0x130f63,_0x2a798d){return _0x130f63[_0xe1a1('0x8')](_0xe1a1('0x9'),attributes,{'tableName':_0xe1a1('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6226=['../../config/logger','api','moment','bluebird','path','rimraf','./cmCustomField.attributes','exports','define','CmCustomField','cm_custom_fields','lodash','util'];(function(_0x575bc8,_0x240244){var _0x4cd502=function(_0xd15221){while(--_0xd15221){_0x575bc8['push'](_0x575bc8['shift']());}};_0x4cd502(++_0x240244);}(_0x6226,0x177));var _0x6622=function(_0x2c9e54,_0x178247){_0x2c9e54=_0x2c9e54-0x0;var _0x25d074=_0x6226[_0x2c9e54];return _0x25d074;};'use strict';var _=require(_0x6622('0x0'));var util=require(_0x6622('0x1'));var logger=require(_0x6622('0x2'))(_0x6622('0x3'));var moment=require(_0x6622('0x4'));var BPromise=require(_0x6622('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6622('0x6'));var rimraf=require(_0x6622('0x7'));var config=require('../../config/environment');var attributes=require(_0x6622('0x8'));module[_0x6622('0x9')]=function(_0x36ad85,_0x50338e){return _0x36ad85[_0x6622('0xa')](_0x6622('0xb'),attributes,{'tableName':_0x6622('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 651eddf..b8a448c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1d1=['client','http','request','then','info','CmCustomField,\x20%s,\x20%s','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x2defee,_0x2814ea){var _0x167f12=function(_0x4881e8){while(--_0x4881e8){_0x2defee['push'](_0x2defee['shift']());}};_0x167f12(++_0x2814ea);}(_0xa1d1,0x115));var _0x1a1d=function(_0x28538b,_0x24a2d0){_0x28538b=_0x28538b-0x0;var _0x2976f6=_0xa1d1[_0x28538b];return _0x2976f6;};'use strict';var _=require(_0x1a1d('0x0'));var util=require(_0x1a1d('0x1'));var moment=require(_0x1a1d('0x2'));var BPromise=require(_0x1a1d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1a1d('0x4'))['db'];var utils=require(_0x1a1d('0x5'));var logger=require(_0x1a1d('0x6'))(_0x1a1d('0x7'));var config=require(_0x1a1d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1a1d('0x9')][_0x1a1d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2b6ce1,_0x42df2d,_0x367bd4){return new BPromise(function(_0x2b33ce,_0x3953b3){return client[_0x1a1d('0xb')](_0x2b6ce1,_0x367bd4)[_0x1a1d('0xc')](function(_0x16eba4){logger[_0x1a1d('0xd')](_0x1a1d('0xe'),_0x42df2d,'request\x20sent');logger['debug'](_0x1a1d('0xf'),_0x42df2d,'request\x20sent',JSON[_0x1a1d('0x10')](_0x16eba4));if(_0x16eba4[_0x1a1d('0x11')]){if(_0x16eba4[_0x1a1d('0x11')][_0x1a1d('0x12')]===0x1f4){logger[_0x1a1d('0x11')](_0x1a1d('0xe'),_0x42df2d,_0x16eba4[_0x1a1d('0x11')]['message']);return _0x3953b3(_0x16eba4['error']['message']);}logger[_0x1a1d('0x11')](_0x1a1d('0xe'),_0x42df2d,_0x16eba4[_0x1a1d('0x11')][_0x1a1d('0x13')]);return _0x2b33ce(_0x16eba4[_0x1a1d('0x11')]['message']);}else{logger[_0x1a1d('0xd')](_0x1a1d('0xe'),_0x42df2d,_0x1a1d('0x14'));_0x2b33ce(_0x16eba4[_0x1a1d('0x15')][_0x1a1d('0x13')]);}})['catch'](function(_0x219dc7){logger[_0x1a1d('0x11')]('CmCustomField,\x20%s,\x20%s',_0x42df2d,_0x219dc7);_0x3953b3(_0x219dc7);});});}
\ No newline at end of file
+var _0x4187=['debug','stringify','error','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x4187,0xe8));var _0x7418=function(_0x267ff7,_0x414c4b){_0x267ff7=_0x267ff7-0x0;var _0x6a276f=_0x4187[_0x267ff7];return _0x6a276f;};'use strict';var _=require(_0x7418('0x0'));var util=require(_0x7418('0x1'));var moment=require(_0x7418('0x2'));var BPromise=require(_0x7418('0x3'));var rs=require(_0x7418('0x4'));var fs=require('fs');var Redis=require(_0x7418('0x5'));var db=require(_0x7418('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x7418('0x7'))(_0x7418('0x8'));var config=require(_0x7418('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7418('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x539903,_0xec62ee,_0x33c884){return new BPromise(function(_0x23c5d6,_0x1b1244){return client['request'](_0x539903,_0x33c884)[_0x7418('0xb')](function(_0x5ef2b5){logger[_0x7418('0xc')](_0x7418('0xd'),_0xec62ee,_0x7418('0xe'));logger[_0x7418('0xf')]('CmCustomField,\x20%s,\x20%s,\x20%s',_0xec62ee,_0x7418('0xe'),JSON[_0x7418('0x10')](_0x5ef2b5));if(_0x5ef2b5[_0x7418('0x11')]){if(_0x5ef2b5['error']['code']===0x1f4){logger['error'](_0x7418('0xd'),_0xec62ee,_0x5ef2b5['error'][_0x7418('0x12')]);return _0x1b1244(_0x5ef2b5[_0x7418('0x11')][_0x7418('0x12')]);}logger[_0x7418('0x11')](_0x7418('0xd'),_0xec62ee,_0x5ef2b5['error'][_0x7418('0x12')]);return _0x23c5d6(_0x5ef2b5[_0x7418('0x11')][_0x7418('0x12')]);}else{logger['info'](_0x7418('0xd'),_0xec62ee,_0x7418('0xe'));_0x23c5d6(_0x5ef2b5['result'][_0x7418('0x12')]);}})['catch'](function(_0x2c1cee){logger[_0x7418('0x11')](_0x7418('0xd'),_0xec62ee,_0x2c1cee);_0x1b1244(_0x2c1cee);});});}
\ No newline at end of file
index c58eb72..2eb74d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef27=['index','/:id','show','post','create','put','update','destroy','multer','util','path','connect-timeout','Router','../../config/environment','./cmCustomField.controller','get','isAuthenticated'];(function(_0xd9cb34,_0xba2f69){var _0x2e5fc3=function(_0x47c6c5){while(--_0x47c6c5){_0xd9cb34['push'](_0xd9cb34['shift']());}};_0x2e5fc3(++_0xba2f69);}(_0xef27,0x1c2));var _0x7ef2=function(_0x56ceb8,_0x3c8f87){_0x56ceb8=_0x56ceb8-0x0;var _0x2d0e13=_0xef27[_0x56ceb8];return _0x2d0e13;};'use strict';var multer=require(_0x7ef2('0x0'));var util=require(_0x7ef2('0x1'));var path=require(_0x7ef2('0x2'));var timeout=require(_0x7ef2('0x3'));var express=require('express');var router=express[_0x7ef2('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7ef2('0x5'));var controller=require(_0x7ef2('0x6'));router[_0x7ef2('0x7')]('/',auth[_0x7ef2('0x8')](),controller[_0x7ef2('0x9')]);router[_0x7ef2('0x7')](_0x7ef2('0xa'),auth[_0x7ef2('0x8')](),controller[_0x7ef2('0xb')]);router[_0x7ef2('0xc')]('/',auth[_0x7ef2('0x8')](),controller[_0x7ef2('0xd')]);router[_0x7ef2('0xe')](_0x7ef2('0xa'),auth[_0x7ef2('0x8')](),controller[_0x7ef2('0xf')]);router['delete'](_0x7ef2('0xa'),auth['isAuthenticated'](),controller[_0x7ef2('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xf767=['put','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','isAuthenticated','index','get','/:id','post','create'];(function(_0x58af5a,_0x19d130){var _0x420c7e=function(_0x5e7017){while(--_0x5e7017){_0x58af5a['push'](_0x58af5a['shift']());}};_0x420c7e(++_0x19d130);}(_0xf767,0x76));var _0x7f76=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xf767[_0x36dfbd];return _0x4ecad9;};'use strict';var multer=require('multer');var util=require(_0x7f76('0x0'));var path=require(_0x7f76('0x1'));var timeout=require(_0x7f76('0x2'));var express=require(_0x7f76('0x3'));var router=express[_0x7f76('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7f76('0x5'));var interaction=require(_0x7f76('0x6'));var config=require(_0x7f76('0x7'));var controller=require(_0x7f76('0x8'));router['get']('/',auth[_0x7f76('0x9')](),controller[_0x7f76('0xa')]);router[_0x7f76('0xb')](_0x7f76('0xc'),auth[_0x7f76('0x9')](),controller['show']);router[_0x7f76('0xd')]('/',auth[_0x7f76('0x9')](),controller[_0x7f76('0xe')]);router[_0x7f76('0xf')]('/:id',auth[_0x7f76('0x9')](),controller['update']);router[_0x7f76('0x10')](_0x7f76('0xc'),auth[_0x7f76('0x9')](),controller[_0x7f76('0x11')]);module[_0x7f76('0x12')]=router;
\ No newline at end of file
index 0c1090b..a78166a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb274=['contactListQueue','moment','sequelize','exports','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','BOOLEAN','UNSIGNED'];(function(_0x8a22fd,_0x3f6c4e){var _0x3e12fe=function(_0x23f52e){while(--_0x23f52e){_0x8a22fd['push'](_0x8a22fd['shift']());}};_0x3e12fe(++_0x3f6c4e);}(_0xb274,0xab));var _0x4b27=function(_0x44f4fe,_0x2a472a){_0x44f4fe=_0x44f4fe-0x0;var _0x44dc34=_0xb274[_0x44f4fe];return _0x44dc34;};'use strict';var moment=require(_0x4b27('0x0'));var Sequelize=require(_0x4b27('0x1'));module[_0x4b27('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x4b27('0x3')],'defaultValue':moment()[_0x4b27('0x4')](_0x4b27('0x5'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x4b27('0x7')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x4b27('0x3')]},'priority':{'type':Sequelize[_0x4b27('0x6')](0x2)[_0x4b27('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x4b27('0x7')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x4b27('0x6')],'unique':_0x4b27('0x9')},'ListId':{'type':Sequelize[_0x4b27('0x6')],'unique':_0x4b27('0x9')},'UserId':{'type':Sequelize[_0x4b27('0x6')]},'VoiceQueueId':{'type':Sequelize[_0x4b27('0x6')],'unique':_0x4b27('0x9')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x34bd=['contactListQueue','sequelize','exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x34bd,0x14e));var _0xd34b=function(_0x37ace5,_0x5546de){_0x37ace5=_0x37ace5-0x0;var _0x235299=_0x34bd[_0x37ace5];return _0x235299;};'use strict';var moment=require('moment');var Sequelize=require(_0xd34b('0x0'));module[_0xd34b('0x1')]={'phone':{'type':Sequelize[_0xd34b('0x2')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0xd34b('0x3')],'defaultValue':moment()[_0xd34b('0x4')](_0xd34b('0x5'))},'countbusyretry':{'type':Sequelize[_0xd34b('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xd34b('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xd34b('0x3')]},'priority':{'type':Sequelize[_0xd34b('0x6')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0xd34b('0x7')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0xd34b('0x6')],'unique':_0xd34b('0x8')},'UserId':{'type':Sequelize[_0xd34b('0x6')]},'VoiceQueueId':{'type':Sequelize[_0xd34b('0x6')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0xd34b('0x6')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xd34b('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xd34b('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xd34b('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xd34b('0x6')],'defaultValue':0x0}};
\ No newline at end of file
index 10d2d69..a533825 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc932=['json','undefined','count','offset','Content-Range','reject','save','destroy','then','sendStatus','stack','name','send','index','fieldName','type','key','map','query','keys','filters','intersection','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$notIn','$like','$iLike','$notILike','$overlap','$contained','$any','attributes','model','fields','hasOwnProperty','limit','order','sort','where','pick','merge','VIRTUAL','CmHopper','includeAll','include','rows','params','length','options','catch','create','update','body','find','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','campaign','UserId','user','deleted','format','calleridnum','phone','campaigntype','queue','ivr','CmContact','lastName','isNil','firstName','calleridname','finally','CmHopperFinal','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','direction','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','findOne','scheduledat','LOCK','UPDATE','Contact','CmCompany','Company','List','Queue','dialActive','getOpenContacts','isNumber','error','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end'];(function(_0x276a33,_0x53bfdc){var _0x1007e7=function(_0x545a87){while(--_0x545a87){_0x276a33['push'](_0x276a33['shift']());}};_0x1007e7(++_0x53bfdc);}(_0xc932,0x107));var _0x2c93=function(_0x541a67,_0x50728d){_0x541a67=_0x541a67-0x0;var _0x45da2a=_0xc932[_0x541a67];return _0x45da2a;};'use strict';var emlformat=require(_0x2c93('0x0'));var rimraf=require(_0x2c93('0x1'));var zipdir=require(_0x2c93('0x2'));var jsonpatch=require(_0x2c93('0x3'));var rp=require(_0x2c93('0x4'));var moment=require(_0x2c93('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2c93('0x6'));var util=require(_0x2c93('0x7'));var path=require('path');var sox=require(_0x2c93('0x8'));var csv=require(_0x2c93('0x9'));var ejs=require(_0x2c93('0xa'));var fs=require('fs');var fs_extra=require(_0x2c93('0xb'));var _=require(_0x2c93('0xc'));var squel=require(_0x2c93('0xd'));var crypto=require(_0x2c93('0xe'));var jsforce=require(_0x2c93('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x2c93('0x9'));var querystring=require(_0x2c93('0x10'));var Papa=require(_0x2c93('0x11'));var Redis=require(_0x2c93('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2c93('0x13'))(_0x2c93('0x14'));var utils=require(_0x2c93('0x15'));var config=require(_0x2c93('0x16'));var licenseUtil=require(_0x2c93('0x17'));var db=require(_0x2c93('0x18'))['db'];function respondWithStatusCode(_0x52deec,_0x10d2f8){_0x10d2f8=_0x10d2f8||0xcc;return function(_0x17eb37){if(_0x17eb37){return _0x52deec['sendStatus'](_0x10d2f8);}return _0x52deec[_0x2c93('0x19')](_0x10d2f8)[_0x2c93('0x1a')]();};}function respondWithResult(_0x16c8d0,_0x230b02){_0x230b02=_0x230b02||0xc8;return function(_0x4f3756){if(_0x4f3756){return _0x16c8d0[_0x2c93('0x19')](_0x230b02)[_0x2c93('0x1b')](_0x4f3756);}};}function respondWithFilteredResult(_0x4f1114,_0x31a9ca){return function(_0x226de2){if(_0x226de2){var _0x5085de=typeof _0x31a9ca['offset']===_0x2c93('0x1c')&&typeof _0x31a9ca['limit']===_0x2c93('0x1c');var _0x4d58c0=_0x226de2[_0x2c93('0x1d')];var _0x2c7766=_0x5085de?0x0:_0x31a9ca[_0x2c93('0x1e')];var _0xeac1c9=_0x5085de?_0x226de2[_0x2c93('0x1d')]:_0x31a9ca[_0x2c93('0x1e')]+_0x31a9ca['limit'];var _0x4bba88;if(_0xeac1c9>=_0x4d58c0){_0xeac1c9=_0x4d58c0;_0x4bba88=0xc8;}else{_0x4bba88=0xce;}_0x4f1114[_0x2c93('0x19')](_0x4bba88);return _0x4f1114['set'](_0x2c93('0x1f'),_0x2c7766+'-'+_0xeac1c9+'/'+_0x4d58c0)[_0x2c93('0x1b')](_0x226de2);}return null;};}function patchUpdates(_0x200371){return function(_0x42bb2d){try{jsonpatch['apply'](_0x42bb2d,_0x200371,!![]);}catch(_0x4c1d0a){return BPromise[_0x2c93('0x20')](_0x4c1d0a);}return _0x42bb2d[_0x2c93('0x21')]();};}function saveUpdates(_0x2479cf,_0x5ed90d){return function(_0x1269bf){if(_0x1269bf){return _0x1269bf['update'](_0x2479cf)['then'](function(_0x55dc9f){return _0x55dc9f;});}return null;};}function removeEntity(_0x1263aa,_0x5bb7e5){return function(_0x3123f4){if(_0x3123f4){return _0x3123f4[_0x2c93('0x22')]()[_0x2c93('0x23')](function(){_0x1263aa[_0x2c93('0x19')](0xcc)[_0x2c93('0x1a')]();});}};}function handleEntityNotFound(_0x369206,_0x31d1e6){return function(_0x5355bc){if(!_0x5355bc){_0x369206[_0x2c93('0x24')](0x194);}return _0x5355bc;};}function handleError(_0x4937d2,_0x4715f0){_0x4715f0=_0x4715f0||0x1f4;return function(_0x382ba5){logger['error'](_0x382ba5[_0x2c93('0x25')]);if(_0x382ba5[_0x2c93('0x26')]){delete _0x382ba5[_0x2c93('0x26')];}_0x4937d2[_0x2c93('0x19')](_0x4715f0)[_0x2c93('0x27')](_0x382ba5);};}exports[_0x2c93('0x28')]=function(_0x14b781,_0x26ac90){var _0xbfc039={},_0x2ff317={},_0x56c79f={'count':0x0,'rows':[]};var _0x4f982f=_['map'](db['CmHopper']['rawAttributes'],function(_0x41c3d1){return{'name':_0x41c3d1[_0x2c93('0x29')],'type':_0x41c3d1[_0x2c93('0x2a')][_0x2c93('0x2b')]};});_0x2ff317['model']=_[_0x2c93('0x2c')](_0x4f982f,_0x2c93('0x26'));_0x2ff317[_0x2c93('0x2d')]=_[_0x2c93('0x2e')](_0x14b781[_0x2c93('0x2d')]);_0x2ff317[_0x2c93('0x2f')]=_[_0x2c93('0x30')](_0x2ff317['model'],_0x2ff317[_0x2c93('0x2d')]);_0x2ff317['filters']=_[_0x2c93('0x31')](_0x2ff317[_0x2c93('0x2f')],[_0x2c93('0x32'),_0x2c93('0x33'),_0x2c93('0x34'),_0x2c93('0x35'),_0x2c93('0x36'),_0x2c93('0x37'),_0x2c93('0x38'),_0x2c93('0x39'),_0x2c93('0x3a'),_0x2c93('0x3b'),_0x2c93('0x3c'),_0x2c93('0x3d'),_0x2c93('0x3e'),_0x2c93('0x3f'),'$notLike',_0x2c93('0x40'),_0x2c93('0x41'),_0x2c93('0x3f'),_0x2c93('0x42'),'$contains',_0x2c93('0x43'),_0x2c93('0x44')]);_0xbfc039[_0x2c93('0x45')]=_[_0x2c93('0x30')](_0x2ff317[_0x2c93('0x46')],qs[_0x2c93('0x47')](_0x14b781['query']['fields']));_0xbfc039[_0x2c93('0x45')]=_0xbfc039[_0x2c93('0x45')]['length']?_0xbfc039['attributes']:_0x2ff317[_0x2c93('0x46')];if(!_0x14b781[_0x2c93('0x2d')][_0x2c93('0x48')]('nolimit')){_0xbfc039[_0x2c93('0x49')]=qs[_0x2c93('0x49')](_0x14b781[_0x2c93('0x2d')]['limit']);_0xbfc039[_0x2c93('0x1e')]=qs[_0x2c93('0x1e')](_0x14b781[_0x2c93('0x2d')]['offset']);}_0xbfc039[_0x2c93('0x4a')]=qs[_0x2c93('0x4b')](_0x14b781['query'][_0x2c93('0x4b')]);_0xbfc039[_0x2c93('0x4c')]=qs[_0x2c93('0x2f')](_[_0x2c93('0x4d')](_0x14b781['query'],_0x2ff317['filters']),_0x4f982f);if(_0x14b781[_0x2c93('0x2d')]['filter']){_0xbfc039[_0x2c93('0x4c')]=_[_0x2c93('0x4e')](_0xbfc039[_0x2c93('0x4c')],{'$or':_[_0x2c93('0x2c')](_0x4f982f,function(_0x30b10f){if(_0x30b10f[_0x2c93('0x2a')]!==_0x2c93('0x4f')){var _0x25663e={};_0x25663e[_0x30b10f[_0x2c93('0x26')]]={'$like':'%'+_0x14b781['query']['filter']+'%'};return _0x25663e;}})});}_0xbfc039=_['merge']({},_0xbfc039,_0x14b781['options']);var _0x991fcc={'where':_0xbfc039[_0x2c93('0x4c')]};return db[_0x2c93('0x50')][_0x2c93('0x1d')](_0x991fcc)[_0x2c93('0x23')](function(_0x3c0bd2){_0x56c79f['count']=_0x3c0bd2;if(_0x14b781[_0x2c93('0x2d')][_0x2c93('0x51')]){_0xbfc039[_0x2c93('0x52')]=[{'all':!![]}];}return db[_0x2c93('0x50')]['findAll'](_0xbfc039);})[_0x2c93('0x23')](function(_0x11d1b2){_0x56c79f[_0x2c93('0x53')]=_0x11d1b2;return _0x56c79f;})[_0x2c93('0x23')](respondWithFilteredResult(_0x26ac90,_0xbfc039))['catch'](handleError(_0x26ac90,null));};exports['show']=function(_0x328eca,_0xc9c250){var _0x223a6a={'raw':!![],'where':{'id':_0x328eca[_0x2c93('0x54')]['id']}},_0x2bd382={};_0x2bd382[_0x2c93('0x46')]=_[_0x2c93('0x2e')](db[_0x2c93('0x50')]['rawAttributes']);_0x2bd382[_0x2c93('0x2d')]=_[_0x2c93('0x2e')](_0x328eca['query']);_0x2bd382[_0x2c93('0x2f')]=_['intersection'](_0x2bd382[_0x2c93('0x46')],_0x2bd382[_0x2c93('0x2d')]);_0x223a6a[_0x2c93('0x45')]=_['intersection'](_0x2bd382[_0x2c93('0x46')],qs['fields'](_0x328eca[_0x2c93('0x2d')]['fields']));_0x223a6a[_0x2c93('0x45')]=_0x223a6a[_0x2c93('0x45')][_0x2c93('0x55')]?_0x223a6a[_0x2c93('0x45')]:_0x2bd382[_0x2c93('0x46')];if(_0x328eca[_0x2c93('0x2d')][_0x2c93('0x51')]){_0x223a6a['include']=[{'all':!![]}];}_0x223a6a=_[_0x2c93('0x4e')]({},_0x223a6a,_0x328eca[_0x2c93('0x56')]);return db[_0x2c93('0x50')]['find'](_0x223a6a)['then'](handleEntityNotFound(_0xc9c250,null))[_0x2c93('0x23')](respondWithResult(_0xc9c250,null))[_0x2c93('0x57')](handleError(_0xc9c250,null));};exports[_0x2c93('0x58')]=function(_0x3c0bdf,_0x30a98d){return db[_0x2c93('0x50')][_0x2c93('0x58')](_0x3c0bdf['body'],{})[_0x2c93('0x23')](respondWithResult(_0x30a98d,0xc9))[_0x2c93('0x57')](handleError(_0x30a98d,null));};exports[_0x2c93('0x59')]=function(_0x3209f5,_0x3247b1){if(_0x3209f5[_0x2c93('0x5a')]['id']){delete _0x3209f5['body']['id'];}return db[_0x2c93('0x50')][_0x2c93('0x5b')]({'where':{'id':_0x3209f5[_0x2c93('0x54')]['id']}})[_0x2c93('0x23')](handleEntityNotFound(_0x3247b1,null))[_0x2c93('0x23')](saveUpdates(_0x3209f5['body'],null))[_0x2c93('0x23')](respondWithResult(_0x3247b1,null))[_0x2c93('0x57')](handleError(_0x3247b1,null));};exports[_0x2c93('0x5c')]=function(_0x2f25c6,_0x5e748e){return db[_0x2c93('0x50')][_0x2c93('0x5c')]()['then'](respondWithResult(_0x5e748e,null))['catch'](handleError(_0x5e748e,null));};exports[_0x2c93('0x22')]=function(_0x3782d1,_0x3bdb65){var _0x85d485;return db[_0x2c93('0x50')][_0x2c93('0x5b')]({'where':{'id':_0x3782d1[_0x2c93('0x54')]['id']}})[_0x2c93('0x23')](handleEntityNotFound(_0x3bdb65,null))[_0x2c93('0x23')](function(_0x4c4b1e){if(_0x4c4b1e){return _0x4c4b1e[_0x2c93('0x22')]()[_0x2c93('0x23')](function(_0x1dfc3f){return _0x1dfc3f;});}})[_0x2c93('0x23')](function(_0x41eb77){_0x85d485=_0x41eb77;if(_0x41eb77){if(_0x41eb77[_0x2c93('0x5d')]||_0x41eb77[_0x2c93('0x5e')]){return db[_0x41eb77[_0x2c93('0x5d')]?_0x2c93('0x5f'):_0x2c93('0x60')][_0x2c93('0x5b')]({'where':{'id':_0x41eb77[_0x2c93('0x5d')]?_0x41eb77[_0x2c93('0x5d')]:_0x41eb77[_0x2c93('0x5e')]},'attributes':['id',_0x2c93('0x26')],'raw':!![]});}}})[_0x2c93('0x23')](function(_0x53b573){var _0x56ae83={};if(_0x53b573){_['merge'](_0x56ae83,_[_0x2c93('0x61')](_0x85d485[_0x2c93('0x62')],['createdAt','updatedAt','id']));_0x56ae83['state']=0x15;_0x56ae83['statedesc']='deleted';_0x56ae83[_0x2c93('0x63')]=_0x53b573[_0x2c93('0x26')];_0x56ae83['membername']=_0x3782d1['user'][_0x2c93('0x26')];_0x56ae83[_0x2c93('0x64')]=_0x3782d1[_0x2c93('0x65')]['id'];_0x56ae83[_0x2c93('0x66')]=!![];_0x56ae83['deletedat']=moment()[_0x2c93('0x67')]('YYYY-MM-DD\x20HH:mm:ss');_0x56ae83[_0x2c93('0x68')]=_0x85d485[_0x2c93('0x69')];_0x56ae83[_0x2c93('0x6a')]=_0x85d485['VoiceQueueId']?_0x2c93('0x6b'):_0x2c93('0x6c');return db[_0x2c93('0x6d')]['find']({'where':{'id':_0x56ae83['ContactId']},'attributes':['firstName',_0x2c93('0x6e')]})[_0x2c93('0x23')](function(_0x49dd68){if(!_['isNil'](_0x3bdb65)&&!_[_0x2c93('0x6f')](_0x49dd68[_0x2c93('0x70')])){_0x56ae83[_0x2c93('0x71')]=_0x49dd68[_0x2c93('0x70')];if(!_[_0x2c93('0x6f')](_0x49dd68[_0x2c93('0x6e')])){_0x56ae83[_0x2c93('0x71')]+='\x20'+_0x49dd68[_0x2c93('0x6e')];}}})[_0x2c93('0x72')](function(){return db[_0x2c93('0x73')][_0x2c93('0x58')](_0x56ae83);});}})[_0x2c93('0x23')](function(){return _0x3bdb65[_0x2c93('0x19')](0xcc)[_0x2c93('0x1a')]();})['catch'](handleError(_0x3bdb65,null));};exports[_0x2c93('0x74')]=function(_0x455b5a,_0x235bf5,_0x2d1c96){var _0xd3f10f=[];return db['CmContact'][_0x2c93('0x5c')]()[_0x2c93('0x23')](function(_0x1e1156){_0xd3f10f=_['keys'](_0x1e1156);return _0x455b5a[_0x2c93('0x65')][_0x2c93('0x75')]({'where':{'type':_0x2c93('0x76'),'dialActive':!![],'dialMethod':_0x2c93('0x77')},'attributes':['id',_0x2c93('0x78')],'raw':!![]});})[_0x2c93('0x23')](function(_0x4440f0){if(_0x4440f0&&_0x4440f0[_0x2c93('0x55')]){return db[_0x2c93('0x79')][_0x2c93('0x7a')](function(_0x2fb34a){var _0x5250c1={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x2c93('0x67')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x2c93('0x2c')](_0x4440f0,'id')},'$or':[{'UserId':null},{'UserId':_0x455b5a[_0x2c93('0x65')]['id']}]};var _0x2cd991=[];if(_0x455b5a[_0x2c93('0x5a')][_0x2c93('0x7b')]&&_0x455b5a[_0x2c93('0x5a')][_0x2c93('0x7b')]==='prev'){if(!_['isEmpty'](_0x455b5a[_0x2c93('0x5a')]['hopperIds'])){_0x5250c1['id']={'$in':_0x455b5a[_0x2c93('0x5a')][_0x2c93('0x7c')]};}_0x2cd991=[[_0x2c93('0x7d'),_0x2c93('0x7e')],[_0x2c93('0x7f'),_0x4440f0[0x0][_0x2c93('0x78')]==='ASC'?_0x2c93('0x80'):_0x2c93('0x7e')],db[_0x2c93('0x79')][_0x2c93('0x81')](_0x2c93('0x82')),['id',_0x2c93('0x80')]];}else{if(!_['isEmpty'](_0x455b5a['body'][_0x2c93('0x7c')])){_0x5250c1['id']={'$notIn':_0x455b5a['body'][_0x2c93('0x7c')]};}_0x2cd991=[[_0x2c93('0x7d'),_0x2c93('0x80')],[_0x2c93('0x7f'),_0x4440f0[0x0][_0x2c93('0x78')]],db[_0x2c93('0x79')]['literal']('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x2c93('0x7e')]];}return db['CmHopper'][_0x2c93('0x83')]({'attributes':['id',_0x2c93('0x84')],'where':_0x5250c1,'order':_0x2cd991,'transaction':_0x2fb34a,'lock':_0x2fb34a[_0x2c93('0x85')][_0x2c93('0x86')],'include':[{'model':db[_0x2c93('0x6d')],'as':_0x2c93('0x87'),'attributes':_0xd3f10f,'include':[{'model':db[_0x2c93('0x88')],'as':_0x2c93('0x89'),'attributes':['id',_0x2c93('0x26')]}]},{'model':db['CmList'],'as':_0x2c93('0x8a'),'attributes':['id',_0x2c93('0x26')]},{'model':db[_0x2c93('0x5f')],'as':_0x2c93('0x8b'),'attributes':['id',_0x2c93('0x26'),_0x2c93('0x8c')]}]})[_0x2c93('0x23')](function(_0x43c49){if(_0x43c49){return _0x43c49['update']({'UserId':_0x455b5a[_0x2c93('0x65')]['id']},{'transaction':_0x2fb34a});}});});}})[_0x2c93('0x23')](handleEntityNotFound(_0x235bf5,null))[_0x2c93('0x23')](respondWithResult(_0x235bf5,null))[_0x2c93('0x57')](handleError(_0x235bf5,null));};exports[_0x2c93('0x8d')]=function(_0x26a1cf,_0x518851,_0x5e81d6){return _0x26a1cf[_0x2c93('0x65')][_0x2c93('0x75')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0x2c93('0x23')](function(_0x55c382){if(_0x55c382&&_0x55c382[_0x2c93('0x55')]){return db['CmHopper'][_0x2c93('0x1d')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x55c382,'id')},'$or':[{'UserId':null},{'UserId':_0x26a1cf[_0x2c93('0x65')]['id']}]}});}return 0x0;})[_0x2c93('0x23')](function(_0x1f8dc5){if(!_[_0x2c93('0x6f')](_0x1f8dc5)&&_[_0x2c93('0x8e')](_0x1f8dc5)){return _0x518851['status'](0xc8)[_0x2c93('0x1b')]({'contacts':_0x1f8dc5});}else{logger[_0x2c93('0x8f')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x2c93('0x8d'),0x194,_0x2c93('0x90'));_0x518851[_0x2c93('0x24')](0x194);}})[_0x2c93('0x57')](handleError(_0x518851,null));};
\ No newline at end of file
+var _0x0390=['entity\x20not\x20found','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','ejs','fs-extra','lodash','crypto','jsforce','to-csv','papaparse','ioredis','../../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','destroy','sendStatus','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','model','query','keys','intersection','filters','concat','$and','$or','$ne','$not','$notBetween','$in','$notIn','$notLike','$notILike','$like','$overlap','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','update','describe','CampaignId','VoiceQueueId','VoiceQueue','Campaign','omit','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getPreview','CmContact','getVoiceQueues','preview','dialOrderByScheduledAt','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','UPDATE','Contact','CmCompany','Company','List','Queue','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s'];(function(_0x4bfe51,_0x5d4a80){var _0x3fb0c7=function(_0x47f057){while(--_0x47f057){_0x4bfe51['push'](_0x4bfe51['shift']());}};_0x3fb0c7(++_0x5d4a80);}(_0x0390,0x12b));var _0x0039=function(_0x819212,_0x381feb){_0x819212=_0x819212-0x0;var _0x45ae2b=_0x0390[_0x819212];return _0x45ae2b;};'use strict';var emlformat=require(_0x0039('0x0'));var rimraf=require(_0x0039('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0039('0x2'));var rp=require(_0x0039('0x3'));var moment=require(_0x0039('0x4'));var BPromise=require(_0x0039('0x5'));var Mustache=require('mustache');var util=require(_0x0039('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0039('0x7'));var fs=require('fs');var fs_extra=require(_0x0039('0x8'));var _=require(_0x0039('0x9'));var squel=require('squel');var crypto=require(_0x0039('0xa'));var jsforce=require(_0x0039('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0039('0xc'));var querystring=require('querystring');var Papa=require(_0x0039('0xd'));var Redis=require(_0x0039('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x0039('0xf'));var as=require(_0x0039('0x10'));var hardwareService=require(_0x0039('0x11'));var logger=require(_0x0039('0x12'))(_0x0039('0x13'));var utils=require(_0x0039('0x14'));var config=require(_0x0039('0x15'));var licenseUtil=require(_0x0039('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5ea555,_0x704017){_0x704017=_0x704017||0xcc;return function(_0x7deec2){if(_0x7deec2){return _0x5ea555['sendStatus'](_0x704017);}return _0x5ea555[_0x0039('0x17')](_0x704017)[_0x0039('0x18')]();};}function respondWithResult(_0x3503f8,_0x4a65c6){_0x4a65c6=_0x4a65c6||0xc8;return function(_0x2d39ca){if(_0x2d39ca){return _0x3503f8[_0x0039('0x17')](_0x4a65c6)['json'](_0x2d39ca);}};}function respondWithFilteredResult(_0x88dbf3,_0x5db9be){return function(_0x38ed89){if(_0x38ed89){var _0xcc7c73=typeof _0x5db9be[_0x0039('0x19')]===_0x0039('0x1a')&&typeof _0x5db9be[_0x0039('0x1b')]==='undefined';var _0x49c229=_0x38ed89[_0x0039('0x1c')];var _0x567fdd=_0xcc7c73?0x0:_0x5db9be[_0x0039('0x19')];var _0x4b6860=_0xcc7c73?_0x38ed89[_0x0039('0x1c')]:_0x5db9be[_0x0039('0x19')]+_0x5db9be[_0x0039('0x1b')];var _0xbd8ef9;if(_0x4b6860>=_0x49c229){_0x4b6860=_0x49c229;_0xbd8ef9=0xc8;}else{_0xbd8ef9=0xce;}_0x88dbf3[_0x0039('0x17')](_0xbd8ef9);return _0x88dbf3[_0x0039('0x1d')]('Content-Range',_0x567fdd+'-'+_0x4b6860+'/'+_0x49c229)[_0x0039('0x1e')](_0x38ed89);}return null;};}function patchUpdates(_0x405147){return function(_0x40d6ca){try{jsonpatch[_0x0039('0x1f')](_0x40d6ca,_0x405147,!![]);}catch(_0xd49a7a){return BPromise[_0x0039('0x20')](_0xd49a7a);}return _0x40d6ca[_0x0039('0x21')]();};}function saveUpdates(_0x407dc9,_0x1fc2a0){return function(_0x40463c){if(_0x40463c){return _0x40463c['update'](_0x407dc9)[_0x0039('0x22')](function(_0x36e6a8){return _0x36e6a8;});}return null;};}function removeEntity(_0x1a89b6,_0x202f87){return function(_0x5efa05){if(_0x5efa05){return _0x5efa05[_0x0039('0x23')]()['then'](function(){_0x1a89b6[_0x0039('0x17')](0xcc)[_0x0039('0x18')]();});}};}function handleEntityNotFound(_0x38cf7b,_0x1a7f7a){return function(_0x15c529){if(!_0x15c529){_0x38cf7b[_0x0039('0x24')](0x194);}return _0x15c529;};}function handleError(_0x1bff5e,_0x57888e){_0x57888e=_0x57888e||0x1f4;return function(_0x2d6e1a){logger[_0x0039('0x25')](_0x2d6e1a[_0x0039('0x26')]);if(_0x2d6e1a['name']){delete _0x2d6e1a[_0x0039('0x27')];}_0x1bff5e[_0x0039('0x17')](_0x57888e)[_0x0039('0x28')](_0x2d6e1a);};}exports[_0x0039('0x29')]=function(_0x151ef3,_0x266682){var _0x2b8fe3={},_0x343cb8={},_0x296f34={'count':0x0,'rows':[]};var _0x7f55be=_[_0x0039('0x2a')](db[_0x0039('0x2b')][_0x0039('0x2c')],function(_0xd8a967){return{'name':_0xd8a967[_0x0039('0x2d')],'type':_0xd8a967[_0x0039('0x2e')][_0x0039('0x2f')]};});_0x343cb8[_0x0039('0x30')]=_[_0x0039('0x2a')](_0x7f55be,_0x0039('0x27'));_0x343cb8[_0x0039('0x31')]=_[_0x0039('0x32')](_0x151ef3[_0x0039('0x31')]);_0x343cb8['filters']=_[_0x0039('0x33')](_0x343cb8[_0x0039('0x30')],_0x343cb8[_0x0039('0x31')]);_0x343cb8[_0x0039('0x34')]=_[_0x0039('0x35')](_0x343cb8[_0x0039('0x34')],[_0x0039('0x36'),_0x0039('0x37'),'$gt','$gte','$lt','$lte',_0x0039('0x38'),'$eq',_0x0039('0x39'),'$between',_0x0039('0x3a'),_0x0039('0x3b'),_0x0039('0x3c'),'$like',_0x0039('0x3d'),'$iLike',_0x0039('0x3e'),_0x0039('0x3f'),_0x0039('0x40'),'$contains',_0x0039('0x41'),_0x0039('0x42')]);_0x2b8fe3[_0x0039('0x43')]=_['intersection'](_0x343cb8['model'],qs[_0x0039('0x44')](_0x151ef3[_0x0039('0x31')][_0x0039('0x44')]));_0x2b8fe3[_0x0039('0x43')]=_0x2b8fe3[_0x0039('0x43')][_0x0039('0x45')]?_0x2b8fe3[_0x0039('0x43')]:_0x343cb8[_0x0039('0x30')];if(!_0x151ef3['query'][_0x0039('0x46')](_0x0039('0x47'))){_0x2b8fe3[_0x0039('0x1b')]=qs[_0x0039('0x1b')](_0x151ef3['query'][_0x0039('0x1b')]);_0x2b8fe3[_0x0039('0x19')]=qs[_0x0039('0x19')](_0x151ef3[_0x0039('0x31')][_0x0039('0x19')]);}_0x2b8fe3[_0x0039('0x48')]=qs[_0x0039('0x49')](_0x151ef3[_0x0039('0x31')][_0x0039('0x49')]);_0x2b8fe3[_0x0039('0x4a')]=qs[_0x0039('0x34')](_['pick'](_0x151ef3[_0x0039('0x31')],_0x343cb8[_0x0039('0x34')]),_0x7f55be);if(_0x151ef3[_0x0039('0x31')]['filter']){_0x2b8fe3['where']=_[_0x0039('0x4b')](_0x2b8fe3[_0x0039('0x4a')],{'$or':_[_0x0039('0x2a')](_0x7f55be,function(_0x395b5c){if(_0x395b5c[_0x0039('0x2e')]!==_0x0039('0x4c')){var _0x46a3bd={};_0x46a3bd[_0x395b5c[_0x0039('0x27')]]={'$like':'%'+_0x151ef3[_0x0039('0x31')][_0x0039('0x4d')]+'%'};return _0x46a3bd;}})});}_0x2b8fe3=_[_0x0039('0x4b')]({},_0x2b8fe3,_0x151ef3[_0x0039('0x4e')]);var _0x554c9d={'where':_0x2b8fe3[_0x0039('0x4a')]};return db[_0x0039('0x2b')][_0x0039('0x1c')](_0x554c9d)[_0x0039('0x22')](function(_0x20f996){_0x296f34['count']=_0x20f996;if(_0x151ef3['query'][_0x0039('0x4f')]){_0x2b8fe3['include']=[{'all':!![]}];}return db[_0x0039('0x2b')][_0x0039('0x50')](_0x2b8fe3);})[_0x0039('0x22')](function(_0x5bf8a4){_0x296f34[_0x0039('0x51')]=_0x5bf8a4;return _0x296f34;})['then'](respondWithFilteredResult(_0x266682,_0x2b8fe3))[_0x0039('0x52')](handleError(_0x266682,null));};exports[_0x0039('0x53')]=function(_0x4a6547,_0x291606){var _0xfdc17f={'raw':!![],'where':{'id':_0x4a6547[_0x0039('0x54')]['id']}},_0x4d75d2={};_0x4d75d2[_0x0039('0x30')]=_[_0x0039('0x32')](db[_0x0039('0x2b')][_0x0039('0x2c')]);_0x4d75d2[_0x0039('0x31')]=_[_0x0039('0x32')](_0x4a6547[_0x0039('0x31')]);_0x4d75d2[_0x0039('0x34')]=_[_0x0039('0x33')](_0x4d75d2[_0x0039('0x30')],_0x4d75d2[_0x0039('0x31')]);_0xfdc17f['attributes']=_[_0x0039('0x33')](_0x4d75d2[_0x0039('0x30')],qs['fields'](_0x4a6547[_0x0039('0x31')][_0x0039('0x44')]));_0xfdc17f[_0x0039('0x43')]=_0xfdc17f[_0x0039('0x43')]['length']?_0xfdc17f['attributes']:_0x4d75d2[_0x0039('0x30')];if(_0x4a6547[_0x0039('0x31')][_0x0039('0x4f')]){_0xfdc17f[_0x0039('0x55')]=[{'all':!![]}];}_0xfdc17f=_[_0x0039('0x4b')]({},_0xfdc17f,_0x4a6547[_0x0039('0x4e')]);return db[_0x0039('0x2b')][_0x0039('0x56')](_0xfdc17f)[_0x0039('0x22')](handleEntityNotFound(_0x291606,null))[_0x0039('0x22')](respondWithResult(_0x291606,null))[_0x0039('0x52')](handleError(_0x291606,null));};exports[_0x0039('0x57')]=function(_0x320501,_0x2e0095){return db[_0x0039('0x2b')]['create'](_0x320501[_0x0039('0x58')],{})[_0x0039('0x22')](respondWithResult(_0x2e0095,0xc9))[_0x0039('0x52')](handleError(_0x2e0095,null));};exports[_0x0039('0x59')]=function(_0x3ebf29,_0x36be38){if(_0x3ebf29[_0x0039('0x58')]['id']){delete _0x3ebf29[_0x0039('0x58')]['id'];}return db[_0x0039('0x2b')]['find']({'where':{'id':_0x3ebf29[_0x0039('0x54')]['id']}})[_0x0039('0x22')](handleEntityNotFound(_0x36be38,null))[_0x0039('0x22')](saveUpdates(_0x3ebf29[_0x0039('0x58')],null))[_0x0039('0x22')](respondWithResult(_0x36be38,null))[_0x0039('0x52')](handleError(_0x36be38,null));};exports[_0x0039('0x5a')]=function(_0x59ecbe,_0x33752e){return db[_0x0039('0x2b')][_0x0039('0x5a')]()[_0x0039('0x22')](respondWithResult(_0x33752e,null))[_0x0039('0x52')](handleError(_0x33752e,null));};exports[_0x0039('0x23')]=function(_0x59fb8b,_0x4d5865){var _0x534dbd;return db[_0x0039('0x2b')][_0x0039('0x56')]({'where':{'id':_0x59fb8b[_0x0039('0x54')]['id']}})[_0x0039('0x22')](handleEntityNotFound(_0x4d5865,null))[_0x0039('0x22')](function(_0x613720){if(_0x613720){return _0x613720[_0x0039('0x23')]()[_0x0039('0x22')](function(_0x5f01eb){return _0x5f01eb;});}})[_0x0039('0x22')](function(_0x2a97e3){_0x534dbd=_0x2a97e3;if(_0x2a97e3){if(_0x2a97e3['VoiceQueueId']||_0x2a97e3[_0x0039('0x5b')]){return db[_0x2a97e3[_0x0039('0x5c')]?_0x0039('0x5d'):_0x0039('0x5e')][_0x0039('0x56')]({'where':{'id':_0x2a97e3[_0x0039('0x5c')]?_0x2a97e3[_0x0039('0x5c')]:_0x2a97e3[_0x0039('0x5b')]},'attributes':['id','name'],'raw':!![]});}}})[_0x0039('0x22')](function(_0x51e91e){var _0x852919={};if(_0x51e91e){_[_0x0039('0x4b')](_0x852919,_[_0x0039('0x5f')](_0x534dbd['dataValues'],[_0x0039('0x60'),_0x0039('0x61'),'id']));_0x852919[_0x0039('0x62')]=0x15;_0x852919[_0x0039('0x63')]=_0x0039('0x64');_0x852919[_0x0039('0x65')]=_0x51e91e[_0x0039('0x27')];_0x852919[_0x0039('0x66')]=_0x59fb8b[_0x0039('0x67')][_0x0039('0x27')];_0x852919[_0x0039('0x68')]=_0x59fb8b['user']['id'];_0x852919[_0x0039('0x64')]=!![];_0x852919[_0x0039('0x69')]=moment()[_0x0039('0x6a')](_0x0039('0x6b'));_0x852919[_0x0039('0x6c')]=_0x534dbd[_0x0039('0x6d')];_0x852919[_0x0039('0x6e')]=_0x534dbd['VoiceQueueId']?_0x0039('0x6f'):_0x0039('0x70');return db['CmContact'][_0x0039('0x56')]({'where':{'id':_0x852919[_0x0039('0x71')]},'attributes':[_0x0039('0x72'),_0x0039('0x73')]})[_0x0039('0x22')](function(_0x392fda){if(!_[_0x0039('0x74')](_0x4d5865)&&!_[_0x0039('0x74')](_0x392fda['firstName'])){_0x852919['calleridname']=_0x392fda[_0x0039('0x72')];if(!_['isNil'](_0x392fda[_0x0039('0x73')])){_0x852919[_0x0039('0x75')]+='\x20'+_0x392fda[_0x0039('0x73')];}}})[_0x0039('0x76')](function(){return db[_0x0039('0x77')][_0x0039('0x57')](_0x852919);});}})['then'](function(){return _0x4d5865['status'](0xcc)[_0x0039('0x18')]();})['catch'](handleError(_0x4d5865,null));};exports[_0x0039('0x78')]=function(_0x36e0fc,_0x1a487a,_0x1b961f){var _0x197b92=[];return db[_0x0039('0x79')][_0x0039('0x5a')]()[_0x0039('0x22')](function(_0x178002){_0x197b92=_[_0x0039('0x32')](_0x178002);return _0x36e0fc[_0x0039('0x67')][_0x0039('0x7a')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x0039('0x7b')},'attributes':['id',_0x0039('0x7c')],'raw':!![]});})[_0x0039('0x22')](function(_0x1cf175){if(_0x1cf175&&_0x1cf175['length']){return db['sequelize'][_0x0039('0x7d')](function(_0x57fc14){var _0x4e8b09={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x0039('0x6b'))},'VoiceQueueId':{'$in':_['map'](_0x1cf175,'id')},'$or':[{'UserId':null},{'UserId':_0x36e0fc[_0x0039('0x67')]['id']}]};var _0x4a0224=[];if(_0x36e0fc[_0x0039('0x58')][_0x0039('0x7e')]&&_0x36e0fc['body']['direction']===_0x0039('0x7f')){if(!_[_0x0039('0x80')](_0x36e0fc[_0x0039('0x58')][_0x0039('0x81')])){_0x4e8b09['id']={'$in':_0x36e0fc[_0x0039('0x58')][_0x0039('0x81')]};}_0x4a0224=[[_0x0039('0x82'),_0x0039('0x83')],[_0x0039('0x84'),_0x1cf175[0x0][_0x0039('0x7c')]===_0x0039('0x83')?_0x0039('0x85'):'ASC'],db[_0x0039('0x86')][_0x0039('0x87')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x0039('0x85')]];}else{if(!_[_0x0039('0x80')](_0x36e0fc['body']['hopperIds'])){_0x4e8b09['id']={'$notIn':_0x36e0fc[_0x0039('0x58')][_0x0039('0x81')]};}_0x4a0224=[[_0x0039('0x82'),_0x0039('0x85')],[_0x0039('0x84'),_0x1cf175[0x0][_0x0039('0x7c')]],db[_0x0039('0x86')][_0x0039('0x87')](_0x0039('0x88')),['id',_0x0039('0x83')]];}return db['CmHopper'][_0x0039('0x89')]({'attributes':['id','scheduledat'],'where':_0x4e8b09,'order':_0x4a0224,'transaction':_0x57fc14,'lock':_0x57fc14['LOCK'][_0x0039('0x8a')],'include':[{'model':db[_0x0039('0x79')],'as':_0x0039('0x8b'),'attributes':_0x197b92,'include':[{'model':db[_0x0039('0x8c')],'as':_0x0039('0x8d'),'attributes':['id',_0x0039('0x27')]}]},{'model':db['CmList'],'as':_0x0039('0x8e'),'attributes':['id',_0x0039('0x27')]},{'model':db[_0x0039('0x5d')],'as':_0x0039('0x8f'),'attributes':['id',_0x0039('0x27'),_0x0039('0x90')]}]})['then'](function(_0x404608){if(_0x404608){return _0x404608['update']({'UserId':_0x36e0fc['user']['id']},{'transaction':_0x57fc14});}});});}})['then'](handleEntityNotFound(_0x1a487a,null))[_0x0039('0x22')](respondWithResult(_0x1a487a,null))[_0x0039('0x52')](handleError(_0x1a487a,null));};exports[_0x0039('0x91')]=function(_0x208a02,_0xcbb00b,_0x536db5){return _0x208a02[_0x0039('0x67')][_0x0039('0x7a')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})['then'](function(_0x1e46ac){if(_0x1e46ac&&_0x1e46ac[_0x0039('0x45')]){return db[_0x0039('0x2b')][_0x0039('0x1c')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x0039('0x6b'))},'VoiceQueueId':{'$in':_['map'](_0x1e46ac,'id')},'$or':[{'UserId':null},{'UserId':_0x208a02[_0x0039('0x67')]['id']}]}});}return 0x0;})['then'](function(_0x288227){if(!_[_0x0039('0x74')](_0x288227)&&_[_0x0039('0x92')](_0x288227)){return _0xcbb00b[_0x0039('0x17')](0xc8)[_0x0039('0x1e')]({'contacts':_0x288227});}else{logger[_0x0039('0x25')](_0x0039('0x93'),'getOpenContacts',0x194,_0x0039('0x94'));_0xcbb00b[_0x0039('0x24')](0x194);}})[_0x0039('0x52')](handleError(_0xcbb00b,null));};
\ No newline at end of file
index 2802ff3..ff3f124 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eb2=['request-promise','rimraf','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','util','../../config/logger','api','moment','bluebird'];(function(_0x1c8e1f,_0x55f006){var _0x3465b4=function(_0x1e7843){while(--_0x1e7843){_0x1c8e1f['push'](_0x1c8e1f['shift']());}};_0x3465b4(++_0x55f006);}(_0x2eb2,0x19f));var _0x22eb=function(_0x266618,_0x18f637){_0x266618=_0x266618-0x0;var _0x54dbf5=_0x2eb2[_0x266618];return _0x54dbf5;};'use strict';var _=require('lodash');var util=require(_0x22eb('0x0'));var logger=require(_0x22eb('0x1'))(_0x22eb('0x2'));var moment=require(_0x22eb('0x3'));var BPromise=require(_0x22eb('0x4'));var rp=require(_0x22eb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x22eb('0x6'));var config=require('../../config/environment');var attributes=require('./cmHopper.attributes');module[_0x22eb('0x7')]=function(_0x10e116,_0x35dd5b){return _0x10e116[_0x22eb('0x8')](_0x22eb('0x9'),attributes,{'tableName':_0x22eb('0xa'),'paranoid':![],'indexes':[{'name':_0x22eb('0xb'),'fields':[_0x22eb('0xb')]},{'name':_0x22eb('0xc'),'fields':[_0x22eb('0xc')]},{'name':_0x22eb('0xd'),'fields':[_0x22eb('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ef3=['path','rimraf','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x8720df,_0x3f41ea){var _0x44b435=function(_0x4a5625){while(--_0x4a5625){_0x8720df['push'](_0x8720df['shift']());}};_0x44b435(++_0x3f41ea);}(_0x2ef3,0xba));var _0x32ef=function(_0x371255,_0x4b5c47){_0x371255=_0x371255-0x0;var _0x576e5e=_0x2ef3[_0x371255];return _0x576e5e;};'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')]},{'name':_0x32ef('0xe'),'fields':[_0x32ef('0xe')]},{'name':_0x32ef('0xf'),'fields':[_0x32ef('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 0065d5a..649c459 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7916=['request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetCmHopper','CmHopper','findAll','options','where','attributes','limit','map','include','model','info','ShowCmHopper','find','raw','CreateCmHopper','create','body','UpdateCmHopper','update','destroy','DestroyCmHopper','GetContactDialer','CmContact','describe','sequelize','transaction','LOCK','UPDATE','Contact','User','Agent','name','voicePause','length','UserId','push','includes','all','MoveContactManagedDialer','CmHopperFinal','CountReScheduled','COUNT','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','keys','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','CmHopper,\x20%s,\x20%s'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0x7916,0x80));var _0x6791=function(_0x2f81ed,_0x518ceb){_0x2f81ed=_0x2f81ed-0x0;var _0x4774c9=_0x7916[_0x2f81ed];return _0x4774c9;};'use strict';var _=require(_0x6791('0x0'));var util=require('util');var moment=require(_0x6791('0x1'));var BPromise=require(_0x6791('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6791('0x3'));var db=require(_0x6791('0x4'))['db'];var utils=require(_0x6791('0x5'));var logger=require(_0x6791('0x6'))('rpc');var config=require(_0x6791('0x7'));var jayson=require(_0x6791('0x8'));var client=jayson['client'][_0x6791('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x882ee5,_0x5726b1,_0x4be7bf){return new BPromise(function(_0x3b147c,_0x235f86){return client['request'](_0x882ee5,_0x4be7bf)[_0x6791('0xa')](function(_0x3960f9){logger['info'](_0x6791('0xb'),_0x5726b1,_0x6791('0xc'));logger[_0x6791('0xd')](_0x6791('0xe'),_0x5726b1,_0x6791('0xc'),JSON[_0x6791('0xf')](_0x3960f9));if(_0x3960f9[_0x6791('0x10')]){if(_0x3960f9['error'][_0x6791('0x11')]===0x1f4){logger[_0x6791('0x10')]('CmHopper,\x20%s,\x20%s',_0x5726b1,_0x3960f9[_0x6791('0x10')][_0x6791('0x12')]);return _0x235f86(_0x3960f9[_0x6791('0x10')][_0x6791('0x12')]);}logger[_0x6791('0x10')]('CmHopper,\x20%s,\x20%s',_0x5726b1,_0x3960f9[_0x6791('0x10')][_0x6791('0x12')]);return _0x3b147c(_0x3960f9[_0x6791('0x10')][_0x6791('0x12')]);}else{logger['info'](_0x6791('0xb'),_0x5726b1,_0x6791('0xc'));_0x3b147c(_0x3960f9[_0x6791('0x13')]['message']);}})[_0x6791('0x14')](function(_0x428c7b){logger[_0x6791('0x10')](_0x6791('0xb'),_0x5726b1,_0x428c7b);_0x235f86(_0x428c7b);});});}exports[_0x6791('0x15')]=function(_0x1caac1){var _0x5bf824=this;return new Promise(function(_0x12984b,_0x584c84){return db[_0x6791('0x16')][_0x6791('0x17')]({'raw':_0x1caac1[_0x6791('0x18')]?_0x1caac1[_0x6791('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x1caac1[_0x6791('0x18')]?_0x1caac1['options'][_0x6791('0x19')]||null:null,'attributes':_0x1caac1[_0x6791('0x18')]?_0x1caac1['options'][_0x6791('0x1a')]||null:null,'limit':_0x1caac1['options']?_0x1caac1[_0x6791('0x18')][_0x6791('0x1b')]||null:null,'include':_0x1caac1['options']?_0x1caac1[_0x6791('0x18')]['include']?_[_0x6791('0x1c')](_0x1caac1[_0x6791('0x18')][_0x6791('0x1d')],function(_0x109859){return{'model':db[_0x109859[_0x6791('0x1e')]],'as':_0x109859['as'],'attributes':_0x109859[_0x6791('0x1a')],'include':_0x109859[_0x6791('0x1d')]?_[_0x6791('0x1c')](_0x109859[_0x6791('0x1d')],function(_0x2d831b){return{'model':db[_0x2d831b[_0x6791('0x1e')]],'as':_0x2d831b['as'],'attributes':_0x2d831b[_0x6791('0x1a')],'include':_0x2d831b['include']?_[_0x6791('0x1c')](_0x2d831b['include'],function(_0x9f160c){return{'model':db[_0x9f160c[_0x6791('0x1e')]],'as':_0x9f160c['as'],'attributes':_0x9f160c[_0x6791('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x6791('0xa')](function(_0x178147){logger[_0x6791('0x1f')](_0x6791('0x15'),_0x1caac1);logger[_0x6791('0xd')](_0x6791('0x15'),_0x1caac1,JSON[_0x6791('0xf')](_0x178147));_0x12984b(_0x178147);})[_0x6791('0x14')](function(_0x556cab){logger[_0x6791('0x10')](_0x6791('0x15'),_0x556cab[_0x6791('0x12')],_0x1caac1);_0x584c84(_0x5bf824[_0x6791('0x10')](0x1f4,_0x556cab[_0x6791('0x12')]));});});};exports[_0x6791('0x20')]=function(_0x3c235c){var _0x490f24=this;return new Promise(function(_0x448cfc,_0x18b03d){return db[_0x6791('0x16')][_0x6791('0x21')]({'raw':_0x3c235c[_0x6791('0x18')]?_0x3c235c[_0x6791('0x18')][_0x6791('0x22')]===undefined?!![]:![]:!![],'where':_0x3c235c[_0x6791('0x18')]?_0x3c235c[_0x6791('0x18')][_0x6791('0x19')]||null:null,'attributes':_0x3c235c[_0x6791('0x18')]?_0x3c235c['options']['attributes']||null:null,'include':_0x3c235c[_0x6791('0x18')]?_0x3c235c[_0x6791('0x18')][_0x6791('0x1d')]?_[_0x6791('0x1c')](_0x3c235c[_0x6791('0x18')][_0x6791('0x1d')],function(_0xe22f75){return{'model':db[_0xe22f75[_0x6791('0x1e')]],'as':_0xe22f75['as'],'attributes':_0xe22f75[_0x6791('0x1a')],'include':_0xe22f75[_0x6791('0x1d')]?_[_0x6791('0x1c')](_0xe22f75['include'],function(_0x253f8d){return{'model':db[_0x253f8d[_0x6791('0x1e')]],'as':_0x253f8d['as'],'attributes':_0x253f8d['attributes'],'include':_0x253f8d[_0x6791('0x1d')]?_[_0x6791('0x1c')](_0x253f8d[_0x6791('0x1d')],function(_0x436e1b){return{'model':db[_0x436e1b[_0x6791('0x1e')]],'as':_0x436e1b['as'],'attributes':_0x436e1b[_0x6791('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x6791('0xa')](function(_0x3df3f1){logger[_0x6791('0x1f')](_0x6791('0x20'),_0x3c235c);logger[_0x6791('0xd')](_0x6791('0x20'),_0x3c235c,JSON[_0x6791('0xf')](_0x3df3f1));_0x448cfc(_0x3df3f1);})['catch'](function(_0x3da5e9){logger['error'](_0x6791('0x20'),_0x3da5e9[_0x6791('0x12')],_0x3c235c);_0x18b03d(_0x490f24[_0x6791('0x10')](0x1f4,_0x3da5e9[_0x6791('0x12')]));});});};exports[_0x6791('0x23')]=function(_0x222ea8){var _0x16fba7=this;return new Promise(function(_0x1e6a1f,_0x10adc8){return db[_0x6791('0x16')][_0x6791('0x24')](_0x222ea8[_0x6791('0x25')],{'raw':_0x222ea8['options']?_0x222ea8[_0x6791('0x18')][_0x6791('0x22')]===undefined?!![]:![]:!![]})[_0x6791('0xa')](function(_0x2b8523){logger[_0x6791('0x1f')]('CreateCmHopper',_0x222ea8);logger[_0x6791('0xd')](_0x6791('0x23'),_0x222ea8,JSON[_0x6791('0xf')](_0x2b8523));_0x1e6a1f(_0x2b8523);})[_0x6791('0x14')](function(_0x4c724c){logger[_0x6791('0x10')](_0x6791('0x23'),_0x4c724c[_0x6791('0x12')],_0x222ea8);_0x10adc8(_0x16fba7[_0x6791('0x10')](0x1f4,_0x4c724c['message']));});});};exports[_0x6791('0x26')]=function(_0x28a2fc){var _0xd36685=this;return new Promise(function(_0x549e16,_0x1d16ff){return db[_0x6791('0x16')][_0x6791('0x27')](_0x28a2fc[_0x6791('0x25')],{'raw':_0x28a2fc['options']?_0x28a2fc[_0x6791('0x18')][_0x6791('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x28a2fc['options']?_0x28a2fc['options'][_0x6791('0x19')]||null:null,'attributes':_0x28a2fc[_0x6791('0x18')]?_0x28a2fc[_0x6791('0x18')][_0x6791('0x1a')]||null:null,'limit':_0x28a2fc[_0x6791('0x18')]?_0x28a2fc['options']['limit']||null:null})[_0x6791('0xa')](function(_0x10b3aa){logger[_0x6791('0x1f')](_0x6791('0x26'),_0x28a2fc);logger[_0x6791('0xd')](_0x6791('0x26'),_0x28a2fc,JSON[_0x6791('0xf')](_0x10b3aa));_0x549e16(_0x10b3aa);})[_0x6791('0x14')](function(_0x20aff8){logger[_0x6791('0x10')]('UpdateCmHopper',_0x20aff8[_0x6791('0x12')],_0x28a2fc);_0x1d16ff(_0xd36685['error'](0x1f4,_0x20aff8[_0x6791('0x12')]));});});};exports['DestroyCmHopper']=function(_0x5545b2){var _0x22529f=this;return new Promise(function(_0x91e027,_0x39976b){return db[_0x6791('0x16')][_0x6791('0x28')]({'where':_0x5545b2[_0x6791('0x18')]?_0x5545b2['options'][_0x6791('0x19')]||null:null})[_0x6791('0xa')](function(_0x3755bf){logger[_0x6791('0x1f')](_0x6791('0x29'),_0x5545b2);logger[_0x6791('0xd')](_0x6791('0x29'),_0x5545b2,JSON['stringify'](_0x3755bf));_0x91e027(_0x3755bf);})['catch'](function(_0x1d51ca){logger[_0x6791('0x10')](_0x6791('0x29'),_0x1d51ca[_0x6791('0x12')],_0x5545b2);_0x39976b(_0x22529f[_0x6791('0x10')](0x1f4,_0x1d51ca['message']));});});};exports[_0x6791('0x2a')]=function(_0x1489e7){var _0x2fd07e=this;return new Promise(function(_0x545683,_0x46aa00){return db[_0x6791('0x2b')][_0x6791('0x2c')]()['then'](function(_0x4e7312){return db[_0x6791('0x2d')][_0x6791('0x2e')](function(_0x1831c1){return db['CmHopper']['findAll']({'where':_0x1489e7[_0x6791('0x18')]?_0x1489e7['options'][_0x6791('0x19')]||null:null,'attributes':_0x1489e7['options']?_0x1489e7['options'][_0x6791('0x1a')]||null:null,'limit':_0x1489e7[_0x6791('0x18')]?_0x1489e7[_0x6791('0x18')][_0x6791('0x1b')]||null:null,'order':_0x1489e7['options']?_0x1489e7['options']['order']||null:null,'transaction':_0x1831c1,'lock':_0x1831c1[_0x6791('0x2f')][_0x6791('0x30')],'include':[{'model':db[_0x6791('0x2b')],'as':_0x6791('0x31'),'attributes':_['keys'](_0x4e7312)},{'model':db[_0x6791('0x32')],'as':_0x6791('0x33'),'attributes':['id',_0x6791('0x34'),_0x6791('0x35')]}]})[_0x6791('0xa')](function(_0x1babb0){var _0x4f7252=[];var _0x527222=[];for(var _0x39db9=0x0;_0x39db9<_0x1babb0[_0x6791('0x36')];_0x39db9+=0x1){var _0x22e65c=_0x1babb0[_0x39db9][_0x6791('0x37')];if(_0x22e65c===null){_0x4f7252[_0x6791('0x38')](_0x1babb0[_0x39db9][_0x6791('0x27')](_0x1489e7[_0x6791('0x25')],{'transaction':_0x1831c1}));}else if(!_0x527222[_0x6791('0x39')](_0x22e65c)){_0x527222['push'](_0x22e65c);_0x4f7252[_0x6791('0x38')](_0x1babb0[_0x39db9][_0x6791('0x27')](_0x1489e7[_0x6791('0x25')],{'transaction':_0x1831c1}));}}return BPromise[_0x6791('0x3a')](_0x4f7252);});})['then'](function(_0x5b0702){logger[_0x6791('0x1f')](_0x6791('0x2a'),_0x1489e7);logger['debug']('GetContactDialer',_0x1489e7,JSON[_0x6791('0xf')](_0x5b0702));_0x545683(_0x5b0702);})[_0x6791('0x14')](function(_0x31b475){logger[_0x6791('0x10')]('GetContactDialer',_0x31b475['message'],_0x1489e7);_0x46aa00(_0x2fd07e[_0x6791('0x10')](0x1f4,_0x31b475['message']));});});});};exports[_0x6791('0x3b')]=function(_0x225d3a){var _0x4d769a=this;return new Promise(function(_0x1fa53,_0x3236a3){return db['sequelize'][_0x6791('0x2e')](function(_0x44a473){return db[_0x6791('0x3c')][_0x6791('0x24')](_0x225d3a[_0x6791('0x25')],{'raw':_0x225d3a[_0x6791('0x18')]?_0x225d3a[_0x6791('0x18')][_0x6791('0x22')]===undefined?!![]:![]:!![],'transaction':_0x44a473})[_0x6791('0xa')](function(){return db[_0x6791('0x16')][_0x6791('0x28')]({'where':_0x225d3a['options']?_0x225d3a[_0x6791('0x18')][_0x6791('0x19')]||null:null,'transaction':_0x44a473});});})[_0x6791('0xa')](function(_0x1d16f2){logger[_0x6791('0x1f')](_0x6791('0x3b'),_0x225d3a);logger[_0x6791('0xd')](_0x6791('0x3b'),_0x225d3a,JSON[_0x6791('0xf')](_0x1d16f2));_0x1fa53(_0x1d16f2);})[_0x6791('0x14')](function(_0x4f0cff){logger['error']('MoveContactManagedDialer',_0x4f0cff['message'],_0x225d3a);_0x3236a3(_0x4d769a[_0x6791('0x10')](0x1f4,_0x4f0cff[_0x6791('0x12')]));});});};exports[_0x6791('0x3d')]=function(_0x424c99){var _0x30bf55=this;return new Promise(function(_0x454d08,_0xc411d0){return db[_0x6791('0x16')][_0x6791('0x17')]({'raw':_0x424c99[_0x6791('0x18')]?_0x424c99[_0x6791('0x18')][_0x6791('0x22')]===undefined?!![]:![]:!![],'where':_0x424c99[_0x6791('0x18')]?_0x424c99['options'][_0x6791('0x19')]||null:null,'attributes':[[db[_0x6791('0x2d')]['fn'](_0x6791('0x3e'),db[_0x6791('0x2d')]['fn']('IF',db[_0x6791('0x2d')]['literal']('`scheduledat`\x20>=\x20'+util[_0x6791('0x3f')](_0x6791('0x40'),moment()[_0x6791('0x3f')](_0x6791('0x41')))+_0x6791('0x42')))),_0x6791('0x43')]]})[_0x6791('0xa')](function(_0x2476b2){logger[_0x6791('0x1f')](_0x6791('0x3d'),_0x424c99);logger[_0x6791('0xd')]('CountReScheduled',_0x424c99,JSON[_0x6791('0xf')](_0x2476b2));_0x454d08(_0x2476b2);})[_0x6791('0x14')](function(_0x19c5ba){logger['error'](_0x6791('0x3d'),_0x19c5ba[_0x6791('0x12')],_0x424c99);_0xc411d0(_0x30bf55[_0x6791('0x10')](0x1f4,_0x19c5ba['message']));});});};exports[_0x6791('0x44')]=function(_0x4fd7d3){var _0x5809b0=this;return new Promise(function(_0x5d7a5d,_0x1d74a9){return db[_0x6791('0x2b')][_0x6791('0x2c')]()[_0x6791('0xa')](function(_0x37e414){return db[_0x6791('0x2d')][_0x6791('0x2e')](function(_0x2892b6){return db['CmHopper'][_0x6791('0x17')]({'where':_0x4fd7d3[_0x6791('0x18')]?_0x4fd7d3[_0x6791('0x18')]['where']||null:null,'attributes':_0x4fd7d3[_0x6791('0x18')]?_0x4fd7d3[_0x6791('0x18')][_0x6791('0x1a')]||null:null,'limit':0x1,'order':_0x4fd7d3[_0x6791('0x18')]?_0x4fd7d3[_0x6791('0x18')]['order']||null:null,'group':db[_0x6791('0x16')][_0x6791('0x37')],'transaction':_0x2892b6,'lock':_0x2892b6[_0x6791('0x2f')][_0x6791('0x30')],'include':_0x4fd7d3[_0x6791('0x18')]?_0x4fd7d3[_0x6791('0x18')]['include']?_[_0x6791('0x1c')](_0x4fd7d3[_0x6791('0x18')][_0x6791('0x1d')],function(_0xb4348){return{'model':db[_0xb4348['model']],'as':_0xb4348['as'],'attributes':_0xb4348['attributes'],'include':_0xb4348[_0x6791('0x1d')]?_['map'](_0xb4348[_0x6791('0x1d')],function(_0x3c0cb6){return{'model':db[_0x3c0cb6['model']],'as':_0x3c0cb6['as'],'attributes':_0x3c0cb6['attributes'],'include':_0x3c0cb6['include']?_[_0x6791('0x1c')](_0x3c0cb6[_0x6791('0x1d')],function(_0x57c296){return{'model':db[_0x57c296['model']],'as':_0x57c296['as'],'attributes':_0x57c296[_0x6791('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x309483){var _0x51f11c=[];for(var _0x308063=0x0;_0x308063<_0x309483['length'];_0x308063+=0x1){_0x51f11c[_0x6791('0x38')](_0x309483[_0x308063]['update'](_0x4fd7d3[_0x6791('0x25')],{'transaction':_0x2892b6}));}return BPromise['all'](_0x51f11c);});})['then'](function(_0x444d7b){logger['info'](_0x6791('0x44'),_0x4fd7d3);logger['debug'](_0x6791('0x44'),_0x4fd7d3,JSON['stringify'](_0x444d7b));_0x5d7a5d(_0x444d7b);})[_0x6791('0x14')](function(_0x23793e){logger[_0x6791('0x10')](_0x6791('0x44'),_0x23793e[_0x6791('0x12')],_0x4fd7d3);_0x1d74a9(_0x5809b0[_0x6791('0x10')](0x1f4,_0x23793e[_0x6791('0x12')]));});});});};exports['GetCmHopperPreview']=function(_0x3dca05){var _0x2063cb=this;return new Promise(function(_0x59ab64,_0xd12654){db[_0x6791('0x2b')][_0x6791('0x2c')]()[_0x6791('0xa')](function(_0x58ab64){return db[_0x6791('0x16')]['findAll']({'raw':_0x3dca05[_0x6791('0x18')]?_0x3dca05[_0x6791('0x18')][_0x6791('0x22')]===undefined?!![]:![]:!![],'where':_0x3dca05[_0x6791('0x18')]?_0x3dca05[_0x6791('0x18')][_0x6791('0x19')]||null:null,'attributes':_0x3dca05[_0x6791('0x18')]?_0x3dca05[_0x6791('0x18')][_0x6791('0x1a')]||null:null,'limit':_0x3dca05[_0x6791('0x18')]?_0x3dca05[_0x6791('0x18')]['limit']||null:null,'include':_0x3dca05['options']?_0x3dca05[_0x6791('0x18')][_0x6791('0x1d')]?_[_0x6791('0x1c')](_0x3dca05['options']['include'],function(_0x83707a){return{'model':db[_0x83707a[_0x6791('0x1e')]],'as':_0x83707a['as'],'attributes':_0x83707a['as']===_0x6791('0x31')?_[_0x6791('0x45')](_0x58ab64):_0x83707a['attributes'],'include':_0x83707a[_0x6791('0x1d')]?_[_0x6791('0x1c')](_0x83707a['include'],function(_0x258575){return{'model':db[_0x258575[_0x6791('0x1e')]],'as':_0x258575['as'],'attributes':_0x258575['attributes'],'include':_0x258575[_0x6791('0x1d')]?_[_0x6791('0x1c')](_0x258575[_0x6791('0x1d')],function(_0x585b43){return{'model':db[_0x585b43['model']],'as':_0x585b43['as'],'attributes':_0x585b43[_0x6791('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x550317){logger['info'](_0x6791('0x15'),_0x3dca05);logger[_0x6791('0xd')](_0x6791('0x15'),_0x3dca05,JSON['stringify'](_0x550317));_0x59ab64(_0x550317);})[_0x6791('0x14')](function(_0x43916e){logger['error'](_0x6791('0x15'),_0x43916e[_0x6791('0x12')],_0x3dca05);_0xd12654(_0x2063cb[_0x6791('0x10')](0x1f4,_0x43916e['message']));});});});};
\ No newline at end of file
+var _0x90a7=['info','GetCmHopper','CmHopper','findAll','options','raw','where','attributes','include','map','model','ShowCmHopper','catch','body','CreateCmHopper','update','limit','UpdateCmHopper','DestroyCmHopper','destroy','describe','transaction','order','LOCK','UPDATE','CmContact','keys','User','Agent','length','UserId','push','includes','all','GetContactDialer','CmHopperFinal','MoveContactManagedDialer','CountReScheduled','COUNT','sequelize','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','GetCmHopperPreview','Contact','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','CmHopper,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x11ba46,_0x1d6752){var _0x1c8c6f=function(_0x4cf96f){while(--_0x4cf96f){_0x11ba46['push'](_0x11ba46['shift']());}};_0x1c8c6f(++_0x1d6752);}(_0x90a7,0x195));var _0x790a=function(_0xacabb,_0x1fbcd9){_0xacabb=_0xacabb-0x0;var _0x2b4a14=_0x90a7[_0xacabb];return _0x2b4a14;};'use strict';var _=require(_0x790a('0x0'));var util=require(_0x790a('0x1'));var moment=require(_0x790a('0x2'));var BPromise=require(_0x790a('0x3'));var rs=require(_0x790a('0x4'));var fs=require('fs');var Redis=require(_0x790a('0x5'));var db=require(_0x790a('0x6'))['db'];var utils=require(_0x790a('0x7'));var logger=require(_0x790a('0x8'))(_0x790a('0x9'));var config=require(_0x790a('0xa'));var jayson=require(_0x790a('0xb'));var client=jayson[_0x790a('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x21c736,_0x3369f0,_0x6f7eda){return new BPromise(function(_0xd7f3e2,_0x55a818){return client['request'](_0x21c736,_0x6f7eda)[_0x790a('0xd')](function(_0x22a26f){logger['info'](_0x790a('0xe'),_0x3369f0,_0x790a('0xf'));logger[_0x790a('0x10')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x3369f0,_0x790a('0xf'),JSON[_0x790a('0x11')](_0x22a26f));if(_0x22a26f['error']){if(_0x22a26f[_0x790a('0x12')][_0x790a('0x13')]===0x1f4){logger[_0x790a('0x12')](_0x790a('0xe'),_0x3369f0,_0x22a26f[_0x790a('0x12')][_0x790a('0x14')]);return _0x55a818(_0x22a26f[_0x790a('0x12')]['message']);}logger[_0x790a('0x12')](_0x790a('0xe'),_0x3369f0,_0x22a26f[_0x790a('0x12')][_0x790a('0x14')]);return _0xd7f3e2(_0x22a26f[_0x790a('0x12')]['message']);}else{logger[_0x790a('0x15')]('CmHopper,\x20%s,\x20%s',_0x3369f0,'request\x20sent');_0xd7f3e2(_0x22a26f['result'][_0x790a('0x14')]);}})['catch'](function(_0xe7e48c){logger[_0x790a('0x12')](_0x790a('0xe'),_0x3369f0,_0xe7e48c);_0x55a818(_0xe7e48c);});});}exports[_0x790a('0x16')]=function(_0x1e4a1e){var _0x4c4d49=this;return new Promise(function(_0x220f12,_0x325000){return db[_0x790a('0x17')][_0x790a('0x18')]({'raw':_0x1e4a1e[_0x790a('0x19')]?_0x1e4a1e[_0x790a('0x19')][_0x790a('0x1a')]===undefined?!![]:![]:!![],'where':_0x1e4a1e['options']?_0x1e4a1e[_0x790a('0x19')][_0x790a('0x1b')]||null:null,'attributes':_0x1e4a1e[_0x790a('0x19')]?_0x1e4a1e[_0x790a('0x19')][_0x790a('0x1c')]||null:null,'limit':_0x1e4a1e[_0x790a('0x19')]?_0x1e4a1e[_0x790a('0x19')]['limit']||null:null,'include':_0x1e4a1e['options']?_0x1e4a1e[_0x790a('0x19')][_0x790a('0x1d')]?_[_0x790a('0x1e')](_0x1e4a1e[_0x790a('0x19')]['include'],function(_0x15ae17){return{'model':db[_0x15ae17[_0x790a('0x1f')]],'as':_0x15ae17['as'],'attributes':_0x15ae17['attributes'],'include':_0x15ae17['include']?_[_0x790a('0x1e')](_0x15ae17[_0x790a('0x1d')],function(_0x315e40){return{'model':db[_0x315e40[_0x790a('0x1f')]],'as':_0x315e40['as'],'attributes':_0x315e40[_0x790a('0x1c')],'include':_0x315e40[_0x790a('0x1d')]?_['map'](_0x315e40[_0x790a('0x1d')],function(_0x2fdec2){return{'model':db[_0x2fdec2[_0x790a('0x1f')]],'as':_0x2fdec2['as'],'attributes':_0x2fdec2['attributes']};}):[]};}):[]};}):[]:[]})[_0x790a('0xd')](function(_0x415afb){logger['info']('GetCmHopper',_0x1e4a1e);logger[_0x790a('0x10')](_0x790a('0x16'),_0x1e4a1e,JSON[_0x790a('0x11')](_0x415afb));_0x220f12(_0x415afb);})['catch'](function(_0x1684dd){logger[_0x790a('0x12')]('GetCmHopper',_0x1684dd[_0x790a('0x14')],_0x1e4a1e);_0x325000(_0x4c4d49[_0x790a('0x12')](0x1f4,_0x1684dd[_0x790a('0x14')]));});});};exports[_0x790a('0x20')]=function(_0x371a95){var _0x44c6ee=this;return new Promise(function(_0x1f32d0,_0x411163){return db[_0x790a('0x17')]['find']({'raw':_0x371a95[_0x790a('0x19')]?_0x371a95[_0x790a('0x19')][_0x790a('0x1a')]===undefined?!![]:![]:!![],'where':_0x371a95[_0x790a('0x19')]?_0x371a95[_0x790a('0x19')][_0x790a('0x1b')]||null:null,'attributes':_0x371a95[_0x790a('0x19')]?_0x371a95[_0x790a('0x19')][_0x790a('0x1c')]||null:null,'include':_0x371a95[_0x790a('0x19')]?_0x371a95[_0x790a('0x19')]['include']?_[_0x790a('0x1e')](_0x371a95[_0x790a('0x19')][_0x790a('0x1d')],function(_0x2555b7){return{'model':db[_0x2555b7[_0x790a('0x1f')]],'as':_0x2555b7['as'],'attributes':_0x2555b7[_0x790a('0x1c')],'include':_0x2555b7[_0x790a('0x1d')]?_[_0x790a('0x1e')](_0x2555b7[_0x790a('0x1d')],function(_0x30ef34){return{'model':db[_0x30ef34[_0x790a('0x1f')]],'as':_0x30ef34['as'],'attributes':_0x30ef34[_0x790a('0x1c')],'include':_0x30ef34[_0x790a('0x1d')]?_[_0x790a('0x1e')](_0x30ef34['include'],function(_0x4224eb){return{'model':db[_0x4224eb[_0x790a('0x1f')]],'as':_0x4224eb['as'],'attributes':_0x4224eb[_0x790a('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x790a('0xd')](function(_0x19ba53){logger[_0x790a('0x15')](_0x790a('0x20'),_0x371a95);logger['debug'](_0x790a('0x20'),_0x371a95,JSON[_0x790a('0x11')](_0x19ba53));_0x1f32d0(_0x19ba53);})[_0x790a('0x21')](function(_0x3df51a){logger[_0x790a('0x12')](_0x790a('0x20'),_0x3df51a[_0x790a('0x14')],_0x371a95);_0x411163(_0x44c6ee[_0x790a('0x12')](0x1f4,_0x3df51a['message']));});});};exports['CreateCmHopper']=function(_0x4cca8f){var _0x13d9bb=this;return new Promise(function(_0x523168,_0x51f981){return db[_0x790a('0x17')]['create'](_0x4cca8f[_0x790a('0x22')],{'raw':_0x4cca8f['options']?_0x4cca8f[_0x790a('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x790a('0xd')](function(_0x2ffd8c){logger['info'](_0x790a('0x23'),_0x4cca8f);logger[_0x790a('0x10')](_0x790a('0x23'),_0x4cca8f,JSON[_0x790a('0x11')](_0x2ffd8c));_0x523168(_0x2ffd8c);})['catch'](function(_0xd12579){logger[_0x790a('0x12')](_0x790a('0x23'),_0xd12579[_0x790a('0x14')],_0x4cca8f);_0x51f981(_0x13d9bb[_0x790a('0x12')](0x1f4,_0xd12579[_0x790a('0x14')]));});});};exports['UpdateCmHopper']=function(_0x3023ab){var _0x45e8dc=this;return new Promise(function(_0x4f4778,_0x5c928c){return db['CmHopper'][_0x790a('0x24')](_0x3023ab[_0x790a('0x22')],{'raw':_0x3023ab[_0x790a('0x19')]?_0x3023ab['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3023ab[_0x790a('0x19')]?_0x3023ab[_0x790a('0x19')][_0x790a('0x1b')]||null:null,'attributes':_0x3023ab[_0x790a('0x19')]?_0x3023ab[_0x790a('0x19')][_0x790a('0x1c')]||null:null,'limit':_0x3023ab['options']?_0x3023ab[_0x790a('0x19')][_0x790a('0x25')]||null:null})[_0x790a('0xd')](function(_0x270856){logger[_0x790a('0x15')](_0x790a('0x26'),_0x3023ab);logger[_0x790a('0x10')](_0x790a('0x26'),_0x3023ab,JSON[_0x790a('0x11')](_0x270856));_0x4f4778(_0x270856);})['catch'](function(_0x13e4c7){logger[_0x790a('0x12')](_0x790a('0x26'),_0x13e4c7[_0x790a('0x14')],_0x3023ab);_0x5c928c(_0x45e8dc[_0x790a('0x12')](0x1f4,_0x13e4c7['message']));});});};exports[_0x790a('0x27')]=function(_0x28d2f1){var _0x9c6c3a=this;return new Promise(function(_0x5a8a2a,_0x5bf5d1){return db[_0x790a('0x17')][_0x790a('0x28')]({'where':_0x28d2f1[_0x790a('0x19')]?_0x28d2f1[_0x790a('0x19')][_0x790a('0x1b')]||null:null})['then'](function(_0x254750){logger[_0x790a('0x15')]('DestroyCmHopper',_0x28d2f1);logger[_0x790a('0x10')](_0x790a('0x27'),_0x28d2f1,JSON[_0x790a('0x11')](_0x254750));_0x5a8a2a(_0x254750);})[_0x790a('0x21')](function(_0x3a4d4e){logger[_0x790a('0x12')](_0x790a('0x27'),_0x3a4d4e['message'],_0x28d2f1);_0x5bf5d1(_0x9c6c3a[_0x790a('0x12')](0x1f4,_0x3a4d4e[_0x790a('0x14')]));});});};exports['GetContactDialer']=function(_0x5b5b3b){var _0x412833=this;return new Promise(function(_0x2218e5,_0x27993f){return db['CmContact'][_0x790a('0x29')]()['then'](function(_0xffcafe){return db['sequelize'][_0x790a('0x2a')](function(_0x5bd9c1){return db[_0x790a('0x17')][_0x790a('0x18')]({'where':_0x5b5b3b[_0x790a('0x19')]?_0x5b5b3b[_0x790a('0x19')][_0x790a('0x1b')]||null:null,'attributes':_0x5b5b3b[_0x790a('0x19')]?_0x5b5b3b[_0x790a('0x19')][_0x790a('0x1c')]||null:null,'limit':_0x5b5b3b['options']?_0x5b5b3b[_0x790a('0x19')][_0x790a('0x25')]||null:null,'order':_0x5b5b3b[_0x790a('0x19')]?_0x5b5b3b[_0x790a('0x19')][_0x790a('0x2b')]||null:null,'transaction':_0x5bd9c1,'lock':_0x5bd9c1[_0x790a('0x2c')][_0x790a('0x2d')],'include':[{'model':db[_0x790a('0x2e')],'as':'Contact','attributes':_[_0x790a('0x2f')](_0xffcafe)},{'model':db[_0x790a('0x30')],'as':_0x790a('0x31'),'attributes':['id','name','voicePause']}]})[_0x790a('0xd')](function(_0x569bb4){var _0xc08add=[];var _0x53d0a5=[];for(var _0x1c81c8=0x0;_0x1c81c8<_0x569bb4[_0x790a('0x32')];_0x1c81c8+=0x1){var _0xd3c8a0=_0x569bb4[_0x1c81c8][_0x790a('0x33')];if(_0xd3c8a0===null){_0xc08add[_0x790a('0x34')](_0x569bb4[_0x1c81c8]['update'](_0x5b5b3b[_0x790a('0x22')],{'transaction':_0x5bd9c1}));}else if(!_0x53d0a5[_0x790a('0x35')](_0xd3c8a0)){_0x53d0a5[_0x790a('0x34')](_0xd3c8a0);_0xc08add['push'](_0x569bb4[_0x1c81c8][_0x790a('0x24')](_0x5b5b3b[_0x790a('0x22')],{'transaction':_0x5bd9c1}));}}return BPromise[_0x790a('0x36')](_0xc08add);});})[_0x790a('0xd')](function(_0x4e94fa){logger[_0x790a('0x15')](_0x790a('0x37'),_0x5b5b3b);logger[_0x790a('0x10')](_0x790a('0x37'),_0x5b5b3b,JSON[_0x790a('0x11')](_0x4e94fa));_0x2218e5(_0x4e94fa);})[_0x790a('0x21')](function(_0x2e6da5){logger[_0x790a('0x12')](_0x790a('0x37'),_0x2e6da5[_0x790a('0x14')],_0x5b5b3b);_0x27993f(_0x412833['error'](0x1f4,_0x2e6da5[_0x790a('0x14')]));});});});};exports['MoveContactManagedDialer']=function(_0x5e10d0){var _0x256920=this;return new Promise(function(_0x44e8a3,_0xc4a7f8){return db['sequelize'][_0x790a('0x2a')](function(_0x438ff5){return db[_0x790a('0x38')]['create'](_0x5e10d0[_0x790a('0x22')],{'raw':_0x5e10d0[_0x790a('0x19')]?_0x5e10d0[_0x790a('0x19')]['raw']===undefined?!![]:![]:!![],'transaction':_0x438ff5})[_0x790a('0xd')](function(){return db[_0x790a('0x17')]['destroy']({'where':_0x5e10d0[_0x790a('0x19')]?_0x5e10d0[_0x790a('0x19')][_0x790a('0x1b')]||null:null,'transaction':_0x438ff5});});})['then'](function(_0x3f02db){logger[_0x790a('0x15')](_0x790a('0x39'),_0x5e10d0);logger[_0x790a('0x10')](_0x790a('0x39'),_0x5e10d0,JSON[_0x790a('0x11')](_0x3f02db));_0x44e8a3(_0x3f02db);})[_0x790a('0x21')](function(_0x161c67){logger[_0x790a('0x12')]('MoveContactManagedDialer',_0x161c67[_0x790a('0x14')],_0x5e10d0);_0xc4a7f8(_0x256920[_0x790a('0x12')](0x1f4,_0x161c67[_0x790a('0x14')]));});});};exports[_0x790a('0x3a')]=function(_0x202358){var _0x2b1b26=this;return new Promise(function(_0x5a1fdb,_0x36e88c){return db[_0x790a('0x17')][_0x790a('0x18')]({'raw':_0x202358['options']?_0x202358[_0x790a('0x19')][_0x790a('0x1a')]===undefined?!![]:![]:!![],'where':_0x202358[_0x790a('0x19')]?_0x202358['options'][_0x790a('0x1b')]||null:null,'attributes':[[db['sequelize']['fn'](_0x790a('0x3b'),db[_0x790a('0x3c')]['fn']('IF',db[_0x790a('0x3c')][_0x790a('0x3d')](_0x790a('0x3e')+util[_0x790a('0x3f')](_0x790a('0x40'),moment()[_0x790a('0x3f')](_0x790a('0x41')))+_0x790a('0x42')))),_0x790a('0x43')]]})[_0x790a('0xd')](function(_0x512787){logger[_0x790a('0x15')](_0x790a('0x3a'),_0x202358);logger[_0x790a('0x10')](_0x790a('0x3a'),_0x202358,JSON['stringify'](_0x512787));_0x5a1fdb(_0x512787);})['catch'](function(_0x19a85b){logger[_0x790a('0x12')](_0x790a('0x3a'),_0x19a85b[_0x790a('0x14')],_0x202358);_0x36e88c(_0x2b1b26[_0x790a('0x12')](0x1f4,_0x19a85b[_0x790a('0x14')]));});});};exports['GetContactRecallMe']=function(_0xc0a6b8){var _0x25ffbb=this;return new Promise(function(_0x5e4a8f,_0x492ebe){return db[_0x790a('0x2e')]['describe']()[_0x790a('0xd')](function(_0x11e0cd){return db['sequelize'][_0x790a('0x2a')](function(_0x48fac7){return db['CmHopper'][_0x790a('0x18')]({'where':_0xc0a6b8[_0x790a('0x19')]?_0xc0a6b8['options'][_0x790a('0x1b')]||null:null,'attributes':_0xc0a6b8['options']?_0xc0a6b8[_0x790a('0x19')][_0x790a('0x1c')]||null:null,'limit':0x1,'order':_0xc0a6b8[_0x790a('0x19')]?_0xc0a6b8[_0x790a('0x19')][_0x790a('0x2b')]||null:null,'group':db[_0x790a('0x17')]['UserId'],'transaction':_0x48fac7,'lock':_0x48fac7[_0x790a('0x2c')][_0x790a('0x2d')],'include':_0xc0a6b8[_0x790a('0x19')]?_0xc0a6b8['options'][_0x790a('0x1d')]?_['map'](_0xc0a6b8[_0x790a('0x19')][_0x790a('0x1d')],function(_0x3d220d){return{'model':db[_0x3d220d['model']],'as':_0x3d220d['as'],'attributes':_0x3d220d['attributes'],'include':_0x3d220d[_0x790a('0x1d')]?_[_0x790a('0x1e')](_0x3d220d[_0x790a('0x1d')],function(_0x2f5498){return{'model':db[_0x2f5498[_0x790a('0x1f')]],'as':_0x2f5498['as'],'attributes':_0x2f5498[_0x790a('0x1c')],'include':_0x2f5498['include']?_[_0x790a('0x1e')](_0x2f5498[_0x790a('0x1d')],function(_0x24db20){return{'model':db[_0x24db20[_0x790a('0x1f')]],'as':_0x24db20['as'],'attributes':_0x24db20['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x375625){var _0x8367b0=[];for(var _0x5e7d5e=0x0;_0x5e7d5e<_0x375625['length'];_0x5e7d5e+=0x1){_0x8367b0[_0x790a('0x34')](_0x375625[_0x5e7d5e][_0x790a('0x24')](_0xc0a6b8[_0x790a('0x22')],{'transaction':_0x48fac7}));}return BPromise[_0x790a('0x36')](_0x8367b0);});})[_0x790a('0xd')](function(_0x3d1de5){logger[_0x790a('0x15')](_0x790a('0x44'),_0xc0a6b8);logger[_0x790a('0x10')]('GetContactRecallMe',_0xc0a6b8,JSON[_0x790a('0x11')](_0x3d1de5));_0x5e4a8f(_0x3d1de5);})['catch'](function(_0x39b230){logger[_0x790a('0x12')]('GetContactRecallMe',_0x39b230[_0x790a('0x14')],_0xc0a6b8);_0x492ebe(_0x25ffbb['error'](0x1f4,_0x39b230[_0x790a('0x14')]));});});});};exports[_0x790a('0x45')]=function(_0x45ec18){var _0xeae408=this;return new Promise(function(_0x125f6b,_0x4c5447){db[_0x790a('0x2e')][_0x790a('0x29')]()['then'](function(_0x4e48d5){return db[_0x790a('0x17')][_0x790a('0x18')]({'raw':_0x45ec18['options']?_0x45ec18[_0x790a('0x19')][_0x790a('0x1a')]===undefined?!![]:![]:!![],'where':_0x45ec18[_0x790a('0x19')]?_0x45ec18['options']['where']||null:null,'attributes':_0x45ec18[_0x790a('0x19')]?_0x45ec18['options'][_0x790a('0x1c')]||null:null,'limit':_0x45ec18[_0x790a('0x19')]?_0x45ec18[_0x790a('0x19')][_0x790a('0x25')]||null:null,'include':_0x45ec18[_0x790a('0x19')]?_0x45ec18[_0x790a('0x19')][_0x790a('0x1d')]?_[_0x790a('0x1e')](_0x45ec18['options']['include'],function(_0x1b0f3a){return{'model':db[_0x1b0f3a[_0x790a('0x1f')]],'as':_0x1b0f3a['as'],'attributes':_0x1b0f3a['as']===_0x790a('0x46')?_[_0x790a('0x2f')](_0x4e48d5):_0x1b0f3a[_0x790a('0x1c')],'include':_0x1b0f3a['include']?_['map'](_0x1b0f3a['include'],function(_0x407c59){return{'model':db[_0x407c59['model']],'as':_0x407c59['as'],'attributes':_0x407c59[_0x790a('0x1c')],'include':_0x407c59['include']?_[_0x790a('0x1e')](_0x407c59[_0x790a('0x1d')],function(_0x4eaf69){return{'model':db[_0x4eaf69[_0x790a('0x1f')]],'as':_0x4eaf69['as'],'attributes':_0x4eaf69[_0x790a('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x790a('0xd')](function(_0x2abac2){logger[_0x790a('0x15')](_0x790a('0x16'),_0x45ec18);logger[_0x790a('0x10')]('GetCmHopper',_0x45ec18,JSON[_0x790a('0x11')](_0x2abac2));_0x125f6b(_0x2abac2);})[_0x790a('0x21')](function(_0x37b3be){logger[_0x790a('0x12')]('GetCmHopper',_0x37b3be['message'],_0x45ec18);_0x4c5447(_0xeae408[_0x790a('0x12')](0x1f4,_0x37b3be[_0x790a('0x14')]));});});});};
\ No newline at end of file
index bcdd681..343581a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5f3=['describe','/opencontacts','getOpenContacts','show','post','create','getPreview','put','/:id','update','delete','exports','multer','util','path','express','Router','fs-extra','../../config/environment','./cmHopper.controller','get','isAuthenticated','/describe'];(function(_0x7c8ab7,_0x5a383d){var _0x33ba61=function(_0x356407){while(--_0x356407){_0x7c8ab7['push'](_0x7c8ab7['shift']());}};_0x33ba61(++_0x5a383d);}(_0xb5f3,0x137));var _0x3b5f=function(_0x352e09,_0x37a7da){_0x352e09=_0x352e09-0x0;var _0x1b7094=_0xb5f3[_0x352e09];return _0x1b7094;};'use strict';var multer=require(_0x3b5f('0x0'));var util=require(_0x3b5f('0x1'));var path=require(_0x3b5f('0x2'));var timeout=require('connect-timeout');var express=require(_0x3b5f('0x3'));var router=express[_0x3b5f('0x4')]();var fs_extra=require(_0x3b5f('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3b5f('0x6'));var controller=require(_0x3b5f('0x7'));router[_0x3b5f('0x8')]('/',auth[_0x3b5f('0x9')](),controller['index']);router[_0x3b5f('0x8')](_0x3b5f('0xa'),auth['isAuthenticated'](),controller[_0x3b5f('0xb')]);router['get'](_0x3b5f('0xc'),auth[_0x3b5f('0x9')](),controller[_0x3b5f('0xd')]);router[_0x3b5f('0x8')]('/:id',auth[_0x3b5f('0x9')](),controller[_0x3b5f('0xe')]);router[_0x3b5f('0xf')]('/',auth[_0x3b5f('0x9')](),controller[_0x3b5f('0x10')]);router['post']('/preview',auth['isAuthenticated'](),controller[_0x3b5f('0x11')]);router[_0x3b5f('0x12')](_0x3b5f('0x13'),auth[_0x3b5f('0x9')](),controller[_0x3b5f('0x14')]);router[_0x3b5f('0x15')](_0x3b5f('0x13'),auth[_0x3b5f('0x9')](),controller['destroy']);module[_0x3b5f('0x16')]=router;
\ No newline at end of file
+var _0xd7e3=['show','post','getPreview','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/:id'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0xd7e3,0x98));var _0x3d7e=function(_0x7bc444,_0x1280c9){_0x7bc444=_0x7bc444-0x0;var _0xfe9695=_0xd7e3[_0x7bc444];return _0xfe9695;};'use strict';var multer=require('multer');var util=require(_0x3d7e('0x0'));var path=require(_0x3d7e('0x1'));var timeout=require(_0x3d7e('0x2'));var express=require(_0x3d7e('0x3'));var router=express[_0x3d7e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3d7e('0x5'));var interaction=require(_0x3d7e('0x6'));var config=require(_0x3d7e('0x7'));var controller=require('./cmHopper.controller');router[_0x3d7e('0x8')]('/',auth[_0x3d7e('0x9')](),controller[_0x3d7e('0xa')]);router['get'](_0x3d7e('0xb'),auth[_0x3d7e('0x9')](),controller[_0x3d7e('0xc')]);router[_0x3d7e('0x8')](_0x3d7e('0xd'),auth[_0x3d7e('0x9')](),controller[_0x3d7e('0xe')]);router[_0x3d7e('0x8')](_0x3d7e('0xf'),auth[_0x3d7e('0x9')](),controller[_0x3d7e('0x10')]);router['post']('/',auth[_0x3d7e('0x9')](),controller['create']);router[_0x3d7e('0x11')]('/preview',auth[_0x3d7e('0x9')](),controller[_0x3d7e('0x12')]);router[_0x3d7e('0x13')](_0x3d7e('0xf'),auth[_0x3d7e('0x9')](),controller[_0x3d7e('0x14')]);router[_0x3d7e('0x15')](_0x3d7e('0xf'),auth[_0x3d7e('0x9')](),controller[_0x3d7e('0x16')]);module[_0x3d7e('0x17')]=router;
\ No newline at end of file
index d0b8919..760179f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9917=['moment','exports','STRING','INTEGER','contactListQueue'];(function(_0x2afbb0,_0x44f16d){var _0x411ff2=function(_0x5edd7e){while(--_0x5edd7e){_0x2afbb0['push'](_0x2afbb0['shift']());}};_0x411ff2(++_0x44f16d);}(_0x9917,0xe6));var _0x7991=function(_0x26268c,_0x355a4b){_0x26268c=_0x26268c-0x0;var _0x2e07ea=_0x9917[_0x26268c];return _0x2e07ea;};'use strict';var moment=require(_0x7991('0x0'));var Sequelize=require('sequelize');module[_0x7991('0x1')]={'phone':{'type':Sequelize[_0x7991('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x7991('0x3')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x7991('0x3')],'unique':_0x7991('0x4')},'VoiceQueueId':{'type':Sequelize[_0x7991('0x3')],'unique':_0x7991('0x4')}};
\ No newline at end of file
+var _0x483f=['INTEGER','contactListQueue','moment','sequelize','exports','STRING'];(function(_0x2188cd,_0x25057e){var _0x1de02c=function(_0x4a4d68){while(--_0x4a4d68){_0x2188cd['push'](_0x2188cd['shift']());}};_0x1de02c(++_0x25057e);}(_0x483f,0x11c));var _0xf483=function(_0x413847,_0x4c71f2){_0x413847=_0x413847-0x0;var _0x2694f=_0x483f[_0x413847];return _0x2694f;};'use strict';var moment=require(_0xf483('0x0'));var Sequelize=require(_0xf483('0x1'));module[_0xf483('0x2')]={'phone':{'type':Sequelize[_0xf483('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xf483('0x4')],'unique':_0xf483('0x5')},'ListId':{'type':Sequelize[_0xf483('0x4')],'unique':_0xf483('0x5')},'VoiceQueueId':{'type':Sequelize[_0xf483('0x4')],'unique':'contactListQueue'}};
\ No newline at end of file
index 079dc62..f2c7780 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8821=['count','limit','Content-Range','apply','reject','then','destroy','error','stack','send','rawAttributes','fieldName','type','model','map','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','CmHopperBlack','include','findAll','rows','show','find','catch','update','body','params','describe','eml-format','zip-dir','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined'];(function(_0x56eb00,_0xaf683e){var _0x37e0e5=function(_0x1021b4){while(--_0x1021b4){_0x56eb00['push'](_0x56eb00['shift']());}};_0x37e0e5(++_0xaf683e);}(_0x8821,0x101));var _0x1882=function(_0x1c7137,_0x4c7c26){_0x1c7137=_0x1c7137-0x0;var _0xeb4432=_0x8821[_0x1c7137];return _0xeb4432;};'use strict';var emlformat=require(_0x1882('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1882('0x1'));var jsonpatch=require(_0x1882('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1882('0x3'));var util=require(_0x1882('0x4'));var path=require('path');var sox=require(_0x1882('0x5'));var csv=require(_0x1882('0x6'));var ejs=require(_0x1882('0x7'));var fs=require('fs');var fs_extra=require(_0x1882('0x8'));var _=require(_0x1882('0x9'));var squel=require(_0x1882('0xa'));var crypto=require(_0x1882('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x1882('0xc'));var toCsv=require(_0x1882('0x6'));var querystring=require(_0x1882('0xd'));var Papa=require(_0x1882('0xe'));var Redis=require(_0x1882('0xf'));var authService=require(_0x1882('0x10'));var qs=require(_0x1882('0x11'));var as=require(_0x1882('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x1882('0x13'));var config=require(_0x1882('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x1882('0x15'))['db'];function respondWithStatusCode(_0x1693e0,_0x140776){_0x140776=_0x140776||0xcc;return function(_0x3ce633){if(_0x3ce633){return _0x1693e0['sendStatus'](_0x140776);}return _0x1693e0[_0x1882('0x16')](_0x140776)[_0x1882('0x17')]();};}function respondWithResult(_0x489270,_0x1804e8){_0x1804e8=_0x1804e8||0xc8;return function(_0x2ef95f){if(_0x2ef95f){return _0x489270['status'](_0x1804e8)[_0x1882('0x18')](_0x2ef95f);}};}function respondWithFilteredResult(_0x2b3baa,_0x53ae71){return function(_0x8b7944){if(_0x8b7944){var _0x2b12fd=typeof _0x53ae71[_0x1882('0x19')]===_0x1882('0x1a')&&typeof _0x53ae71['limit']==='undefined';var _0x1b38a6=_0x8b7944[_0x1882('0x1b')];var _0x1b4266=_0x2b12fd?0x0:_0x53ae71[_0x1882('0x19')];var _0x9ebeeb=_0x2b12fd?_0x8b7944[_0x1882('0x1b')]:_0x53ae71[_0x1882('0x19')]+_0x53ae71[_0x1882('0x1c')];var _0x507409;if(_0x9ebeeb>=_0x1b38a6){_0x9ebeeb=_0x1b38a6;_0x507409=0xc8;}else{_0x507409=0xce;}_0x2b3baa[_0x1882('0x16')](_0x507409);return _0x2b3baa['set'](_0x1882('0x1d'),_0x1b4266+'-'+_0x9ebeeb+'/'+_0x1b38a6)[_0x1882('0x18')](_0x8b7944);}return null;};}function patchUpdates(_0x22f432){return function(_0x1a0459){try{jsonpatch[_0x1882('0x1e')](_0x1a0459,_0x22f432,!![]);}catch(_0x10e9ec){return BPromise[_0x1882('0x1f')](_0x10e9ec);}return _0x1a0459['save']();};}function saveUpdates(_0x2d9beb,_0x17f7db){return function(_0x134e5b){if(_0x134e5b){return _0x134e5b['update'](_0x2d9beb)[_0x1882('0x20')](function(_0x4385a2){return _0x4385a2;});}return null;};}function removeEntity(_0x1d80f5,_0x4df8cd){return function(_0x31d70e){if(_0x31d70e){return _0x31d70e[_0x1882('0x21')]()[_0x1882('0x20')](function(){_0x1d80f5[_0x1882('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0xf49466,_0x3cee27){return function(_0x5aa234){if(!_0x5aa234){_0xf49466['sendStatus'](0x194);}return _0x5aa234;};}function handleError(_0xb6d13f,_0x2fc0ca){_0x2fc0ca=_0x2fc0ca||0x1f4;return function(_0x5c5138){logger[_0x1882('0x22')](_0x5c5138[_0x1882('0x23')]);if(_0x5c5138['name']){delete _0x5c5138['name'];}_0xb6d13f[_0x1882('0x16')](_0x2fc0ca)[_0x1882('0x24')](_0x5c5138);};}exports['index']=function(_0x58025d,_0x11f128){var _0x539f4c={},_0x427e11={},_0x5dbec6={'count':0x0,'rows':[]};var _0x32e014=_['map'](db['CmHopperBlack'][_0x1882('0x25')],function(_0x473916){return{'name':_0x473916[_0x1882('0x26')],'type':_0x473916[_0x1882('0x27')]['key']};});_0x427e11[_0x1882('0x28')]=_[_0x1882('0x29')](_0x32e014,_0x1882('0x2a'));_0x427e11[_0x1882('0x2b')]=_[_0x1882('0x2c')](_0x58025d[_0x1882('0x2b')]);_0x427e11[_0x1882('0x2d')]=_[_0x1882('0x2e')](_0x427e11[_0x1882('0x28')],_0x427e11[_0x1882('0x2b')]);_0x539f4c['attributes']=_['intersection'](_0x427e11[_0x1882('0x28')],qs[_0x1882('0x2f')](_0x58025d['query'][_0x1882('0x2f')]));_0x539f4c[_0x1882('0x30')]=_0x539f4c['attributes'][_0x1882('0x31')]?_0x539f4c[_0x1882('0x30')]:_0x427e11['model'];if(!_0x58025d['query'][_0x1882('0x32')](_0x1882('0x33'))){_0x539f4c['limit']=qs[_0x1882('0x1c')](_0x58025d[_0x1882('0x2b')][_0x1882('0x1c')]);_0x539f4c[_0x1882('0x19')]=qs[_0x1882('0x19')](_0x58025d[_0x1882('0x2b')][_0x1882('0x19')]);}_0x539f4c[_0x1882('0x34')]=qs[_0x1882('0x35')](_0x58025d[_0x1882('0x2b')][_0x1882('0x35')]);_0x539f4c['where']=qs['filters'](_[_0x1882('0x36')](_0x58025d[_0x1882('0x2b')],_0x427e11[_0x1882('0x2d')]),_0x32e014);if(_0x58025d[_0x1882('0x2b')][_0x1882('0x37')]){_0x539f4c[_0x1882('0x38')]=_[_0x1882('0x39')](_0x539f4c['where'],{'$or':_[_0x1882('0x29')](_0x32e014,function(_0x363382){if(_0x363382[_0x1882('0x27')]!==_0x1882('0x3a')){var _0x45765b={};_0x45765b[_0x363382['name']]={'$like':'%'+_0x58025d['query'][_0x1882('0x37')]+'%'};return _0x45765b;}})});}_0x539f4c=_[_0x1882('0x39')]({},_0x539f4c,_0x58025d[_0x1882('0x3b')]);var _0x1f5068={'where':_0x539f4c[_0x1882('0x38')]};return db[_0x1882('0x3c')][_0x1882('0x1b')](_0x1f5068)[_0x1882('0x20')](function(_0xde2b15){_0x5dbec6[_0x1882('0x1b')]=_0xde2b15;if(_0x58025d[_0x1882('0x2b')]['includeAll']){_0x539f4c[_0x1882('0x3d')]=[{'all':!![]}];}return db[_0x1882('0x3c')][_0x1882('0x3e')](_0x539f4c);})[_0x1882('0x20')](function(_0x478b92){_0x5dbec6[_0x1882('0x3f')]=_0x478b92;return _0x5dbec6;})[_0x1882('0x20')](respondWithFilteredResult(_0x11f128,_0x539f4c))['catch'](handleError(_0x11f128,null));};exports[_0x1882('0x40')]=function(_0x1861bf,_0x62f61f){var _0xa08761={'raw':!![],'where':{'id':_0x1861bf['params']['id']}},_0x1874cd={};_0x1874cd[_0x1882('0x28')]=_[_0x1882('0x2c')](db['CmHopperBlack']['rawAttributes']);_0x1874cd[_0x1882('0x2b')]=_[_0x1882('0x2c')](_0x1861bf['query']);_0x1874cd[_0x1882('0x2d')]=_[_0x1882('0x2e')](_0x1874cd['model'],_0x1874cd[_0x1882('0x2b')]);_0xa08761['attributes']=_[_0x1882('0x2e')](_0x1874cd[_0x1882('0x28')],qs[_0x1882('0x2f')](_0x1861bf[_0x1882('0x2b')]['fields']));_0xa08761[_0x1882('0x30')]=_0xa08761[_0x1882('0x30')][_0x1882('0x31')]?_0xa08761[_0x1882('0x30')]:_0x1874cd[_0x1882('0x28')];if(_0x1861bf[_0x1882('0x2b')]['includeAll']){_0xa08761[_0x1882('0x3d')]=[{'all':!![]}];}_0xa08761=_[_0x1882('0x39')]({},_0xa08761,_0x1861bf[_0x1882('0x3b')]);return db[_0x1882('0x3c')][_0x1882('0x41')](_0xa08761)[_0x1882('0x20')](handleEntityNotFound(_0x62f61f,null))[_0x1882('0x20')](respondWithResult(_0x62f61f,null))[_0x1882('0x42')](handleError(_0x62f61f,null));};exports[_0x1882('0x43')]=function(_0x291597,_0x1d9ffb){if(_0x291597[_0x1882('0x44')]['id']){delete _0x291597[_0x1882('0x44')]['id'];}return db[_0x1882('0x3c')][_0x1882('0x41')]({'where':{'id':_0x291597[_0x1882('0x45')]['id']}})[_0x1882('0x20')](handleEntityNotFound(_0x1d9ffb,null))[_0x1882('0x20')](saveUpdates(_0x291597[_0x1882('0x44')],null))[_0x1882('0x20')](respondWithResult(_0x1d9ffb,null))[_0x1882('0x42')](handleError(_0x1d9ffb,null));};exports[_0x1882('0x21')]=function(_0x14026e,_0x2a1bc7){return db['CmHopperBlack']['find']({'where':{'id':_0x14026e[_0x1882('0x45')]['id']}})[_0x1882('0x20')](handleEntityNotFound(_0x2a1bc7,null))[_0x1882('0x20')](removeEntity(_0x2a1bc7,null))[_0x1882('0x42')](handleError(_0x2a1bc7,null));};exports[_0x1882('0x46')]=function(_0x5693c5,_0x40d8fe){return db['CmHopperBlack'][_0x1882('0x46')]()['then'](respondWithResult(_0x40d8fe,null))['catch'](handleError(_0x40d8fe,null));};
\ No newline at end of file
+var _0x0227=['where','merge','VIRTUAL','include','rows','catch','show','includeAll','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','index','CmHopperBlack','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort'];(function(_0x3f7861,_0x13619b){var _0x36fdae=function(_0x6aa7b8){while(--_0x6aa7b8){_0x3f7861['push'](_0x3f7861['shift']());}};_0x36fdae(++_0x13619b);}(_0x0227,0xa0));var _0x7022=function(_0x88a136,_0x1c1f46){_0x88a136=_0x88a136-0x0;var _0x8f89d1=_0x0227[_0x88a136];return _0x8f89d1;};'use strict';var emlformat=require(_0x7022('0x0'));var rimraf=require(_0x7022('0x1'));var zipdir=require(_0x7022('0x2'));var jsonpatch=require(_0x7022('0x3'));var rp=require('request-promise');var moment=require(_0x7022('0x4'));var BPromise=require(_0x7022('0x5'));var Mustache=require(_0x7022('0x6'));var util=require(_0x7022('0x7'));var path=require('path');var sox=require(_0x7022('0x8'));var csv=require('to-csv');var ejs=require(_0x7022('0x9'));var fs=require('fs');var fs_extra=require(_0x7022('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x7022('0xb'));var jsforce=require(_0x7022('0xc'));var deskjs=require(_0x7022('0xd'));var toCsv=require(_0x7022('0xe'));var querystring=require('querystring');var Papa=require(_0x7022('0xf'));var Redis=require(_0x7022('0x10'));var authService=require(_0x7022('0x11'));var qs=require(_0x7022('0x12'));var as=require(_0x7022('0x13'));var hardwareService=require(_0x7022('0x14'));var logger=require(_0x7022('0x15'))(_0x7022('0x16'));var utils=require(_0x7022('0x17'));var config=require(_0x7022('0x18'));var licenseUtil=require(_0x7022('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x389a60,_0x46af70){_0x46af70=_0x46af70||0xcc;return function(_0x3344d7){if(_0x3344d7){return _0x389a60[_0x7022('0x1a')](_0x46af70);}return _0x389a60[_0x7022('0x1b')](_0x46af70)[_0x7022('0x1c')]();};}function respondWithResult(_0x1643cf,_0x274c3c){_0x274c3c=_0x274c3c||0xc8;return function(_0x180a8f){if(_0x180a8f){return _0x1643cf[_0x7022('0x1b')](_0x274c3c)[_0x7022('0x1d')](_0x180a8f);}};}function respondWithFilteredResult(_0x3ffa54,_0x1cc401){return function(_0x631da9){if(_0x631da9){var _0x1f95f1=typeof _0x1cc401['offset']===_0x7022('0x1e')&&typeof _0x1cc401['limit']==='undefined';var _0x170140=_0x631da9['count'];var _0x3d78cc=_0x1f95f1?0x0:_0x1cc401[_0x7022('0x1f')];var _0x3d2152=_0x1f95f1?_0x631da9[_0x7022('0x20')]:_0x1cc401[_0x7022('0x1f')]+_0x1cc401[_0x7022('0x21')];var _0x4c340c;if(_0x3d2152>=_0x170140){_0x3d2152=_0x170140;_0x4c340c=0xc8;}else{_0x4c340c=0xce;}_0x3ffa54[_0x7022('0x1b')](_0x4c340c);return _0x3ffa54[_0x7022('0x22')](_0x7022('0x23'),_0x3d78cc+'-'+_0x3d2152+'/'+_0x170140)[_0x7022('0x1d')](_0x631da9);}return null;};}function patchUpdates(_0x47607f){return function(_0x22385a){try{jsonpatch[_0x7022('0x24')](_0x22385a,_0x47607f,!![]);}catch(_0x44bc09){return BPromise[_0x7022('0x25')](_0x44bc09);}return _0x22385a['save']();};}function saveUpdates(_0x524468,_0x4d71cf){return function(_0x257d78){if(_0x257d78){return _0x257d78['update'](_0x524468)[_0x7022('0x26')](function(_0x2a4f83){return _0x2a4f83;});}return null;};}function removeEntity(_0x384490,_0x4d3ca7){return function(_0x22d3fb){if(_0x22d3fb){return _0x22d3fb[_0x7022('0x27')]()['then'](function(){_0x384490[_0x7022('0x1b')](0xcc)[_0x7022('0x1c')]();});}};}function handleEntityNotFound(_0x4bb1f0,_0x5adbb6){return function(_0x48107d){if(!_0x48107d){_0x4bb1f0[_0x7022('0x1a')](0x194);}return _0x48107d;};}function handleError(_0x5039ee,_0x468b98){_0x468b98=_0x468b98||0x1f4;return function(_0xa4d124){logger[_0x7022('0x28')](_0xa4d124[_0x7022('0x29')]);if(_0xa4d124[_0x7022('0x2a')]){delete _0xa4d124[_0x7022('0x2a')];}_0x5039ee['status'](_0x468b98)[_0x7022('0x2b')](_0xa4d124);};}exports[_0x7022('0x2c')]=function(_0x2a5a1d,_0x22da52){var _0x3440ea={},_0x1a1f57={},_0xc10575={'count':0x0,'rows':[]};var _0x5ab015=_['map'](db[_0x7022('0x2d')][_0x7022('0x2e')],function(_0x35574d){return{'name':_0x35574d[_0x7022('0x2f')],'type':_0x35574d[_0x7022('0x30')][_0x7022('0x31')]};});_0x1a1f57[_0x7022('0x32')]=_[_0x7022('0x33')](_0x5ab015,_0x7022('0x2a'));_0x1a1f57[_0x7022('0x34')]=_[_0x7022('0x35')](_0x2a5a1d[_0x7022('0x34')]);_0x1a1f57[_0x7022('0x36')]=_[_0x7022('0x37')](_0x1a1f57[_0x7022('0x32')],_0x1a1f57[_0x7022('0x34')]);_0x3440ea[_0x7022('0x38')]=_[_0x7022('0x37')](_0x1a1f57['model'],qs[_0x7022('0x39')](_0x2a5a1d[_0x7022('0x34')][_0x7022('0x39')]));_0x3440ea['attributes']=_0x3440ea[_0x7022('0x38')][_0x7022('0x3a')]?_0x3440ea['attributes']:_0x1a1f57[_0x7022('0x32')];if(!_0x2a5a1d[_0x7022('0x34')]['hasOwnProperty'](_0x7022('0x3b'))){_0x3440ea['limit']=qs[_0x7022('0x21')](_0x2a5a1d[_0x7022('0x34')]['limit']);_0x3440ea['offset']=qs[_0x7022('0x1f')](_0x2a5a1d[_0x7022('0x34')][_0x7022('0x1f')]);}_0x3440ea[_0x7022('0x3c')]=qs[_0x7022('0x3d')](_0x2a5a1d[_0x7022('0x34')][_0x7022('0x3d')]);_0x3440ea[_0x7022('0x3e')]=qs['filters'](_['pick'](_0x2a5a1d['query'],_0x1a1f57[_0x7022('0x36')]),_0x5ab015);if(_0x2a5a1d['query']['filter']){_0x3440ea[_0x7022('0x3e')]=_[_0x7022('0x3f')](_0x3440ea[_0x7022('0x3e')],{'$or':_[_0x7022('0x33')](_0x5ab015,function(_0x3e0b83){if(_0x3e0b83['type']!==_0x7022('0x40')){var _0x3a22af={};_0x3a22af[_0x3e0b83['name']]={'$like':'%'+_0x2a5a1d[_0x7022('0x34')]['filter']+'%'};return _0x3a22af;}})});}_0x3440ea=_[_0x7022('0x3f')]({},_0x3440ea,_0x2a5a1d['options']);var _0x4f2f9e={'where':_0x3440ea[_0x7022('0x3e')]};return db[_0x7022('0x2d')][_0x7022('0x20')](_0x4f2f9e)[_0x7022('0x26')](function(_0x174519){_0xc10575['count']=_0x174519;if(_0x2a5a1d[_0x7022('0x34')]['includeAll']){_0x3440ea[_0x7022('0x41')]=[{'all':!![]}];}return db['CmHopperBlack']['findAll'](_0x3440ea);})['then'](function(_0x5a9b90){_0xc10575[_0x7022('0x42')]=_0x5a9b90;return _0xc10575;})['then'](respondWithFilteredResult(_0x22da52,_0x3440ea))[_0x7022('0x43')](handleError(_0x22da52,null));};exports[_0x7022('0x44')]=function(_0x961789,_0x4bcb6c){var _0xaaea27={'raw':!![],'where':{'id':_0x961789['params']['id']}},_0x28512d={};_0x28512d[_0x7022('0x32')]=_[_0x7022('0x35')](db[_0x7022('0x2d')][_0x7022('0x2e')]);_0x28512d['query']=_[_0x7022('0x35')](_0x961789['query']);_0x28512d[_0x7022('0x36')]=_[_0x7022('0x37')](_0x28512d[_0x7022('0x32')],_0x28512d[_0x7022('0x34')]);_0xaaea27[_0x7022('0x38')]=_[_0x7022('0x37')](_0x28512d[_0x7022('0x32')],qs[_0x7022('0x39')](_0x961789[_0x7022('0x34')]['fields']));_0xaaea27[_0x7022('0x38')]=_0xaaea27[_0x7022('0x38')]['length']?_0xaaea27[_0x7022('0x38')]:_0x28512d[_0x7022('0x32')];if(_0x961789[_0x7022('0x34')][_0x7022('0x45')]){_0xaaea27[_0x7022('0x41')]=[{'all':!![]}];}_0xaaea27=_[_0x7022('0x3f')]({},_0xaaea27,_0x961789['options']);return db[_0x7022('0x2d')]['find'](_0xaaea27)[_0x7022('0x26')](handleEntityNotFound(_0x4bcb6c,null))[_0x7022('0x26')](respondWithResult(_0x4bcb6c,null))[_0x7022('0x43')](handleError(_0x4bcb6c,null));};exports['update']=function(_0x444649,_0x56c04e){if(_0x444649[_0x7022('0x46')]['id']){delete _0x444649[_0x7022('0x46')]['id'];}return db[_0x7022('0x2d')][_0x7022('0x47')]({'where':{'id':_0x444649[_0x7022('0x48')]['id']}})[_0x7022('0x26')](handleEntityNotFound(_0x56c04e,null))[_0x7022('0x26')](saveUpdates(_0x444649[_0x7022('0x46')],null))[_0x7022('0x26')](respondWithResult(_0x56c04e,null))[_0x7022('0x43')](handleError(_0x56c04e,null));};exports['destroy']=function(_0x289bed,_0x1f3ef3){return db[_0x7022('0x2d')][_0x7022('0x47')]({'where':{'id':_0x289bed[_0x7022('0x48')]['id']}})[_0x7022('0x26')](handleEntityNotFound(_0x1f3ef3,null))[_0x7022('0x26')](removeEntity(_0x1f3ef3,null))['catch'](handleError(_0x1f3ef3,null));};exports[_0x7022('0x49')]=function(_0x285af2,_0x58edb3){return db[_0x7022('0x2d')]['describe']()[_0x7022('0x26')](respondWithResult(_0x58edb3,null))[_0x7022('0x43')](handleError(_0x58edb3,null));};
\ No newline at end of file
index 5b6174a..3e18ddf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad84=['exports','define','cm_hopper_black','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x1b5b6f,_0x5b111c){var _0x220653=function(_0x29ff13){while(--_0x29ff13){_0x1b5b6f['push'](_0x1b5b6f['shift']());}};_0x220653(++_0x5b111c);}(_0xad84,0x137));var _0x4ad8=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0xad84[_0x263a74];return _0x2aa86c;};'use strict';var _=require(_0x4ad8('0x0'));var util=require('util');var logger=require(_0x4ad8('0x1'))(_0x4ad8('0x2'));var moment=require(_0x4ad8('0x3'));var BPromise=require(_0x4ad8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4ad8('0x5'));var rimraf=require(_0x4ad8('0x6'));var config=require(_0x4ad8('0x7'));var attributes=require('./cmHopperBlack.attributes');module[_0x4ad8('0x8')]=function(_0x1287bc,_0x61ab4d){return _0x1287bc[_0x4ad8('0x9')]('CmHopperBlack',attributes,{'tableName':_0x4ad8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x24b7=['CmHopperBlack','cm_hopper_black','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define'];(function(_0x525731,_0x125584){var _0xb7935c=function(_0x1eac54){while(--_0x1eac54){_0x525731['push'](_0x525731['shift']());}};_0xb7935c(++_0x125584);}(_0x24b7,0x1af));var _0x724b=function(_0x3c41ca,_0x1cf40e){_0x3c41ca=_0x3c41ca-0x0;var _0x13cd1a=_0x24b7[_0x3c41ca];return _0x13cd1a;};'use strict';var _=require('lodash');var util=require(_0x724b('0x0'));var logger=require(_0x724b('0x1'))(_0x724b('0x2'));var moment=require(_0x724b('0x3'));var BPromise=require(_0x724b('0x4'));var rp=require(_0x724b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x724b('0x6'));var attributes=require('./cmHopperBlack.attributes');module[_0x724b('0x7')]=function(_0x43168e,_0x1859ad){return _0x43168e[_0x724b('0x8')](_0x724b('0x9'),attributes,{'tableName':_0x724b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 405961d..9f851a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91f3=['http','request','then','request\x20sent','debug','stringify','error','code','CmHopperBlack,\x20%s,\x20%s','message','info','result','catch','CmHopperBlack','options','raw','limit','include','map','model','attributes','GetCmHopperBlack','UpdateCmHopperBlack','destroy','DestroyCmHopperBlack','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x5e28c2,_0x1e48ab){var _0x1a8cc6=function(_0x1218bf){while(--_0x1218bf){_0x5e28c2['push'](_0x5e28c2['shift']());}};_0x1a8cc6(++_0x1e48ab);}(_0x91f3,0xa5));var _0x391f=function(_0x1f5c91,_0x462dbd){_0x1f5c91=_0x1f5c91-0x0;var _0x5f1657=_0x91f3[_0x1f5c91];return _0x5f1657;};'use strict';var _=require(_0x391f('0x0'));var util=require('util');var moment=require(_0x391f('0x1'));var BPromise=require(_0x391f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x391f('0x3'));var db=require(_0x391f('0x4'))['db'];var utils=require(_0x391f('0x5'));var logger=require(_0x391f('0x6'))(_0x391f('0x7'));var config=require(_0x391f('0x8'));var jayson=require(_0x391f('0x9'));var client=jayson['client'][_0x391f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d13c3,_0xae7567,_0x47fb0e){return new BPromise(function(_0x4ff51b,_0x33793b){return client[_0x391f('0xb')](_0x1d13c3,_0x47fb0e)[_0x391f('0xc')](function(_0x3d8505){logger['info']('CmHopperBlack,\x20%s,\x20%s',_0xae7567,_0x391f('0xd'));logger[_0x391f('0xe')]('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0xae7567,_0x391f('0xd'),JSON[_0x391f('0xf')](_0x3d8505));if(_0x3d8505[_0x391f('0x10')]){if(_0x3d8505['error'][_0x391f('0x11')]===0x1f4){logger['error'](_0x391f('0x12'),_0xae7567,_0x3d8505[_0x391f('0x10')]['message']);return _0x33793b(_0x3d8505['error'][_0x391f('0x13')]);}logger[_0x391f('0x10')](_0x391f('0x12'),_0xae7567,_0x3d8505[_0x391f('0x10')][_0x391f('0x13')]);return _0x4ff51b(_0x3d8505[_0x391f('0x10')]['message']);}else{logger[_0x391f('0x14')](_0x391f('0x12'),_0xae7567,'request\x20sent');_0x4ff51b(_0x3d8505[_0x391f('0x15')][_0x391f('0x13')]);}})[_0x391f('0x16')](function(_0x1d6378){logger['error'](_0x391f('0x12'),_0xae7567,_0x1d6378);_0x33793b(_0x1d6378);});});}exports['GetCmHopperBlack']=function(_0x4f2863){var _0x6e4ffb=this;return new Promise(function(_0x5cb133,_0x52bfc5){return db[_0x391f('0x17')]['findAll']({'raw':_0x4f2863[_0x391f('0x18')]?_0x4f2863[_0x391f('0x18')][_0x391f('0x19')]===undefined?!![]:![]:!![],'where':_0x4f2863[_0x391f('0x18')]?_0x4f2863[_0x391f('0x18')]['where']||null:null,'attributes':_0x4f2863['options']?_0x4f2863[_0x391f('0x18')]['attributes']||null:null,'limit':_0x4f2863[_0x391f('0x18')]?_0x4f2863['options'][_0x391f('0x1a')]||null:null,'include':_0x4f2863[_0x391f('0x18')]?_0x4f2863[_0x391f('0x18')][_0x391f('0x1b')]?_[_0x391f('0x1c')](_0x4f2863[_0x391f('0x18')][_0x391f('0x1b')],function(_0x43953){return{'model':db[_0x43953[_0x391f('0x1d')]],'as':_0x43953['as'],'attributes':_0x43953[_0x391f('0x1e')],'include':_0x43953[_0x391f('0x1b')]?_[_0x391f('0x1c')](_0x43953['include'],function(_0x4dfe6b){return{'model':db[_0x4dfe6b[_0x391f('0x1d')]],'as':_0x4dfe6b['as'],'attributes':_0x4dfe6b[_0x391f('0x1e')],'include':_0x4dfe6b[_0x391f('0x1b')]?_[_0x391f('0x1c')](_0x4dfe6b[_0x391f('0x1b')],function(_0x3c17c5){return{'model':db[_0x3c17c5[_0x391f('0x1d')]],'as':_0x3c17c5['as'],'attributes':_0x3c17c5[_0x391f('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x391f('0xc')](function(_0xb97028){logger[_0x391f('0x14')](_0x391f('0x1f'),_0x4f2863);logger[_0x391f('0xe')]('GetCmHopperBlack',_0x4f2863,JSON[_0x391f('0xf')](_0xb97028));_0x5cb133(_0xb97028);})[_0x391f('0x16')](function(_0x533637){logger[_0x391f('0x10')](_0x391f('0x1f'),_0x533637[_0x391f('0x13')],_0x4f2863);_0x52bfc5(_0x6e4ffb[_0x391f('0x10')](0x1f4,_0x533637[_0x391f('0x13')]));});});};exports[_0x391f('0x20')]=function(_0x597674){var _0x4704e8=this;return new Promise(function(_0x270fed,_0x51e9af){return db['CmHopperBlack']['update'](_0x597674['body'],{'raw':_0x597674['options']?_0x597674[_0x391f('0x18')][_0x391f('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x597674['options']?_0x597674[_0x391f('0x18')]['where']||null:null,'attributes':_0x597674[_0x391f('0x18')]?_0x597674[_0x391f('0x18')][_0x391f('0x1e')]||null:null,'limit':_0x597674[_0x391f('0x18')]?_0x597674[_0x391f('0x18')]['limit']||null:null})[_0x391f('0xc')](function(_0x4060bb){logger[_0x391f('0x14')](_0x391f('0x20'),_0x597674);logger[_0x391f('0xe')]('UpdateCmHopperBlack',_0x597674,JSON[_0x391f('0xf')](_0x4060bb));_0x270fed(_0x4060bb);})['catch'](function(_0x464022){logger[_0x391f('0x10')]('UpdateCmHopperBlack',_0x464022['message'],_0x597674);_0x51e9af(_0x4704e8[_0x391f('0x10')](0x1f4,_0x464022[_0x391f('0x13')]));});});};exports['DestroyCmHopperBlack']=function(_0x495d75){var _0x5283c6=this;return new Promise(function(_0x2fe95a,_0x44b49c){return db[_0x391f('0x17')][_0x391f('0x21')]({'where':_0x495d75[_0x391f('0x18')]?_0x495d75[_0x391f('0x18')]['where']||null:null})[_0x391f('0xc')](function(_0x2f04b0){logger['info'](_0x391f('0x22'),_0x495d75);logger[_0x391f('0xe')](_0x391f('0x22'),_0x495d75,JSON[_0x391f('0xf')](_0x2f04b0));_0x2fe95a(_0x2f04b0);})[_0x391f('0x16')](function(_0x28fa4a){logger[_0x391f('0x10')](_0x391f('0x22'),_0x28fa4a['message'],_0x495d75);_0x44b49c(_0x5283c6[_0x391f('0x10')](0x1f4,_0x28fa4a[_0x391f('0x13')]));});});};
\ No newline at end of file
+var _0x071f=['info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetCmHopperBlack','CmHopperBlack','options','raw','where','attributes','limit','include','model','map','UpdateCmHopperBlack','update','body','catch','DestroyCmHopperBlack','destroy','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','then'];(function(_0x384786,_0x32e99c){var _0x3da345=function(_0x239677){while(--_0x239677){_0x384786['push'](_0x384786['shift']());}};_0x3da345(++_0x32e99c);}(_0x071f,0x15d));var _0xf071=function(_0x5083e5,_0x3c2486){_0x5083e5=_0x5083e5-0x0;var _0x4bda86=_0x071f[_0x5083e5];return _0x4bda86;};'use strict';var _=require(_0xf071('0x0'));var util=require(_0xf071('0x1'));var moment=require(_0xf071('0x2'));var BPromise=require('bluebird');var rs=require(_0xf071('0x3'));var fs=require('fs');var Redis=require(_0xf071('0x4'));var db=require(_0xf071('0x5'))['db'];var utils=require(_0xf071('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xf071('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf071('0x8')][_0xf071('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4b5e0a,_0x5dff72,_0x44b2d2){return new BPromise(function(_0x4fe3ab,_0x4e1ed2){return client['request'](_0x4b5e0a,_0x44b2d2)[_0xf071('0xa')](function(_0x1f31e8){logger[_0xf071('0xb')](_0xf071('0xc'),_0x5dff72,_0xf071('0xd'));logger[_0xf071('0xe')](_0xf071('0xf'),_0x5dff72,_0xf071('0xd'),JSON[_0xf071('0x10')](_0x1f31e8));if(_0x1f31e8[_0xf071('0x11')]){if(_0x1f31e8['error']['code']===0x1f4){logger[_0xf071('0x11')](_0xf071('0xc'),_0x5dff72,_0x1f31e8[_0xf071('0x11')]['message']);return _0x4e1ed2(_0x1f31e8[_0xf071('0x11')][_0xf071('0x12')]);}logger[_0xf071('0x11')](_0xf071('0xc'),_0x5dff72,_0x1f31e8[_0xf071('0x11')][_0xf071('0x12')]);return _0x4fe3ab(_0x1f31e8[_0xf071('0x11')][_0xf071('0x12')]);}else{logger[_0xf071('0xb')](_0xf071('0xc'),_0x5dff72,_0xf071('0xd'));_0x4fe3ab(_0x1f31e8[_0xf071('0x13')][_0xf071('0x12')]);}})['catch'](function(_0x1a70db){logger[_0xf071('0x11')](_0xf071('0xc'),_0x5dff72,_0x1a70db);_0x4e1ed2(_0x1a70db);});});}exports[_0xf071('0x14')]=function(_0x4bfbfc){var _0x52e5f1=this;return new Promise(function(_0xf6ee11,_0x6f3391){return db[_0xf071('0x15')]['findAll']({'raw':_0x4bfbfc[_0xf071('0x16')]?_0x4bfbfc[_0xf071('0x16')][_0xf071('0x17')]===undefined?!![]:![]:!![],'where':_0x4bfbfc['options']?_0x4bfbfc[_0xf071('0x16')][_0xf071('0x18')]||null:null,'attributes':_0x4bfbfc[_0xf071('0x16')]?_0x4bfbfc['options'][_0xf071('0x19')]||null:null,'limit':_0x4bfbfc[_0xf071('0x16')]?_0x4bfbfc[_0xf071('0x16')][_0xf071('0x1a')]||null:null,'include':_0x4bfbfc[_0xf071('0x16')]?_0x4bfbfc[_0xf071('0x16')][_0xf071('0x1b')]?_['map'](_0x4bfbfc[_0xf071('0x16')][_0xf071('0x1b')],function(_0x2461eb){return{'model':db[_0x2461eb[_0xf071('0x1c')]],'as':_0x2461eb['as'],'attributes':_0x2461eb[_0xf071('0x19')],'include':_0x2461eb[_0xf071('0x1b')]?_[_0xf071('0x1d')](_0x2461eb['include'],function(_0x4ca758){return{'model':db[_0x4ca758[_0xf071('0x1c')]],'as':_0x4ca758['as'],'attributes':_0x4ca758[_0xf071('0x19')],'include':_0x4ca758[_0xf071('0x1b')]?_['map'](_0x4ca758[_0xf071('0x1b')],function(_0x1a0aee){return{'model':db[_0x1a0aee['model']],'as':_0x1a0aee['as'],'attributes':_0x1a0aee[_0xf071('0x19')]};}):[]};}):[]};}):[]:[]})[_0xf071('0xa')](function(_0x4c96c3){logger['info']('GetCmHopperBlack',_0x4bfbfc);logger[_0xf071('0xe')]('GetCmHopperBlack',_0x4bfbfc,JSON['stringify'](_0x4c96c3));_0xf6ee11(_0x4c96c3);})['catch'](function(_0x170518){logger[_0xf071('0x11')](_0xf071('0x14'),_0x170518[_0xf071('0x12')],_0x4bfbfc);_0x6f3391(_0x52e5f1[_0xf071('0x11')](0x1f4,_0x170518[_0xf071('0x12')]));});});};exports[_0xf071('0x1e')]=function(_0x27f7b4){var _0x389bd8=this;return new Promise(function(_0x3c0fed,_0x5c2c3b){return db[_0xf071('0x15')][_0xf071('0x1f')](_0x27f7b4[_0xf071('0x20')],{'raw':_0x27f7b4['options']?_0x27f7b4['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x27f7b4[_0xf071('0x16')]?_0x27f7b4[_0xf071('0x16')][_0xf071('0x18')]||null:null,'attributes':_0x27f7b4[_0xf071('0x16')]?_0x27f7b4[_0xf071('0x16')][_0xf071('0x19')]||null:null,'limit':_0x27f7b4[_0xf071('0x16')]?_0x27f7b4[_0xf071('0x16')][_0xf071('0x1a')]||null:null})['then'](function(_0x27d572){logger[_0xf071('0xb')](_0xf071('0x1e'),_0x27f7b4);logger[_0xf071('0xe')](_0xf071('0x1e'),_0x27f7b4,JSON['stringify'](_0x27d572));_0x3c0fed(_0x27d572);})[_0xf071('0x21')](function(_0x413fa3){logger[_0xf071('0x11')](_0xf071('0x1e'),_0x413fa3[_0xf071('0x12')],_0x27f7b4);_0x5c2c3b(_0x389bd8['error'](0x1f4,_0x413fa3[_0xf071('0x12')]));});});};exports[_0xf071('0x22')]=function(_0x32658f){var _0x2917c1=this;return new Promise(function(_0x513ca3,_0x40625d){return db[_0xf071('0x15')][_0xf071('0x23')]({'where':_0x32658f[_0xf071('0x16')]?_0x32658f[_0xf071('0x16')][_0xf071('0x18')]||null:null})[_0xf071('0xa')](function(_0xc934b2){logger[_0xf071('0xb')](_0xf071('0x22'),_0x32658f);logger[_0xf071('0xe')](_0xf071('0x22'),_0x32658f,JSON[_0xf071('0x10')](_0xc934b2));_0x513ca3(_0xc934b2);})[_0xf071('0x21')](function(_0x2abfd5){logger['error']('DestroyCmHopperBlack',_0x2abfd5[_0xf071('0x12')],_0x32658f);_0x40625d(_0x2917c1[_0xf071('0x11')](0x1f4,_0x2abfd5[_0xf071('0x12')]));});});};
\ No newline at end of file
index ef0eddf..bf932ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81c6=['delete','util','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','/describe','/:id','update'];(function(_0x4cf948,_0x25e07d){var _0x31d3d4=function(_0x54c0d3){while(--_0x54c0d3){_0x4cf948['push'](_0x4cf948['shift']());}};_0x31d3d4(++_0x25e07d);}(_0x81c6,0x1d5));var _0x681c=function(_0x1a31e8,_0x5387bc){_0x1a31e8=_0x1a31e8-0x0;var _0x3adc72=_0x81c6[_0x1a31e8];return _0x3adc72;};'use strict';var multer=require('multer');var util=require(_0x681c('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x681c('0x1')]();var fs_extra=require(_0x681c('0x2'));var auth=require(_0x681c('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x681c('0x4'));var controller=require(_0x681c('0x5'));router[_0x681c('0x6')]('/',auth[_0x681c('0x7')](),controller['index']);router[_0x681c('0x6')](_0x681c('0x8'),auth['isAuthenticated'](),controller['describe']);router[_0x681c('0x6')](_0x681c('0x9'),auth[_0x681c('0x7')](),controller['show']);router['put'](_0x681c('0x9'),auth['isAuthenticated'](),controller[_0x681c('0xa')]);router[_0x681c('0xb')](_0x681c('0x9'),auth[_0x681c('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x68b3=['/:id','show','update','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe'];(function(_0x2b9dca,_0x2b773e){var _0x57971b=function(_0x54078a){while(--_0x54078a){_0x2b9dca['push'](_0x2b9dca['shift']());}};_0x57971b(++_0x2b773e);}(_0x68b3,0x1d8));var _0x368b=function(_0x51cd0b,_0x3115c8){_0x51cd0b=_0x51cd0b-0x0;var _0x55b6d7=_0x68b3[_0x51cd0b];return _0x55b6d7;};'use strict';var multer=require(_0x368b('0x0'));var util=require(_0x368b('0x1'));var path=require(_0x368b('0x2'));var timeout=require(_0x368b('0x3'));var express=require(_0x368b('0x4'));var router=express['Router']();var fs_extra=require(_0x368b('0x5'));var auth=require(_0x368b('0x6'));var interaction=require(_0x368b('0x7'));var config=require(_0x368b('0x8'));var controller=require('./cmHopperBlack.controller');router[_0x368b('0x9')]('/',auth[_0x368b('0xa')](),controller[_0x368b('0xb')]);router[_0x368b('0x9')](_0x368b('0xc'),auth[_0x368b('0xa')](),controller[_0x368b('0xd')]);router[_0x368b('0x9')](_0x368b('0xe'),auth[_0x368b('0xa')](),controller[_0x368b('0xf')]);router['put'](_0x368b('0xe'),auth[_0x368b('0xa')](),controller[_0x368b('0x10')]);router['delete'](_0x368b('0xe'),auth[_0x368b('0xa')](),controller[_0x368b('0x11')]);module['exports']=router;
\ No newline at end of file
index 53415b6..ffb2d0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bae=['sequelize','moment','exports','STRING','INTEGER','DATE','getDataValue','endtime','setDataValue','diff','BOOLEAN'];(function(_0x1611f9,_0xddc39c){var _0x1d066d=function(_0x1fdaea){while(--_0x1fdaea){_0x1611f9['push'](_0x1611f9['shift']());}};_0x1d066d(++_0xddc39c);}(_0x2bae,0x1d9));var _0xe2ba=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2bae[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xe2ba('0x0'));var moment=require(_0xe2ba('0x1'));module[_0xe2ba('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xe2ba('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xe2ba('0x3')]},'originatecalleridnum':{'type':Sequelize[_0xe2ba('0x3')]},'originatecalleridname':{'type':Sequelize[_0xe2ba('0x3')]},'calleridnum':{'type':Sequelize[_0xe2ba('0x3')]},'calleridname':{'type':Sequelize[_0xe2ba('0x3')]},'starttime':{'type':Sequelize[_0xe2ba('0x5')]},'responsetime':{'type':Sequelize[_0xe2ba('0x5')]},'answertime':{'type':Sequelize[_0xe2ba('0x5')]},'droptime':{'type':Sequelize[_0xe2ba('0x5')]},'endtime':{'type':Sequelize[_0xe2ba('0x5')]},'ringtime':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xe2ba('0x3')]},'campaign':{'type':Sequelize[_0xe2ba('0x3')]},'campaigntype':{'type':Sequelize[_0xe2ba('0x3')]},'membername':{'type':Sequelize[_0xe2ba('0x3')]},'reason':{'type':Sequelize[_0xe2ba('0x3')]},'disposition':{'type':Sequelize[_0xe2ba('0x3')]},'secondDisposition':{'type':Sequelize[_0xe2ba('0x3')]},'thirdDisposition':{'type':Sequelize[_0xe2ba('0x3')]},'dispositionat':{'type':Sequelize[_0xe2ba('0x5')],'set':function(_0x2171bc){var _0x269d01=this[_0xe2ba('0x6')](_0xe2ba('0x7'));if(_0x269d01&&_0x2171bc){this[_0xe2ba('0x8')]('followuptime',moment(_0x2171bc)[_0xe2ba('0x9')](moment(_0x269d01),'seconds'));}return this[_0xe2ba('0x8')]('dispositionat',_0x2171bc);}},'amd':{'type':Sequelize[_0xe2ba('0xa')],'defaultValue':![]},'fax':{'type':Sequelize[_0xe2ba('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xe2ba('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xe2ba('0x5')]},'callback':{'type':Sequelize[_0xe2ba('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xe2ba('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xe2ba('0x5')]},'deleted':{'type':Sequelize[_0xe2ba('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xe2ba('0x5')]},'recallme':{'type':Sequelize[_0xe2ba('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xe2ba('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9b00=['sequelize','moment','exports','STRING','DATE','INTEGER','getDataValue','followuptime','diff','seconds','setDataValue','dispositionat','BOOLEAN'];(function(_0x179c7e,_0x3c62ed){var _0xb2dcbb=function(_0x3829ff){while(--_0x3829ff){_0x179c7e['push'](_0x179c7e['shift']());}};_0xb2dcbb(++_0x3c62ed);}(_0x9b00,0x11e));var _0x09b0=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x9b00[_0x432682];return _0x463d05;};'use strict';var Sequelize=require(_0x09b0('0x0'));var moment=require(_0x09b0('0x1'));module[_0x09b0('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x09b0('0x3')]},'scheduledat':{'type':Sequelize[_0x09b0('0x4')]},'countbusyretry':{'type':Sequelize[_0x09b0('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x09b0('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x09b0('0x5')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x09b0('0x5')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x09b0('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x09b0('0x3')]},'originatecalleridname':{'type':Sequelize[_0x09b0('0x3')]},'calleridnum':{'type':Sequelize[_0x09b0('0x3')]},'calleridname':{'type':Sequelize[_0x09b0('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x09b0('0x4')]},'answertime':{'type':Sequelize[_0x09b0('0x4')]},'droptime':{'type':Sequelize[_0x09b0('0x4')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x09b0('0x5')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x09b0('0x5')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x09b0('0x3')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x09b0('0x3')]},'reason':{'type':Sequelize[_0x09b0('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x09b0('0x3')]},'dispositionat':{'type':Sequelize[_0x09b0('0x4')],'set':function(_0x5c81d6){var _0x21ec3f=this[_0x09b0('0x6')]('endtime');if(_0x21ec3f&&_0x5c81d6){this['setDataValue'](_0x09b0('0x7'),moment(_0x5c81d6)[_0x09b0('0x8')](moment(_0x21ec3f),_0x09b0('0x9')));}return this[_0x09b0('0xa')](_0x09b0('0xb'),_0x5c81d6);}},'amd':{'type':Sequelize[_0x09b0('0xc')],'defaultValue':![]},'fax':{'type':Sequelize[_0x09b0('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x09b0('0xc')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x09b0('0xc')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x09b0('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x09b0('0x4')]},'deleted':{'type':Sequelize[_0x09b0('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x09b0('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0x09b0('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x09b0('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x09b0('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x09b0('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index e25615c..bde7502 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','noSuchContacts','VoiceQueue','find','insert','cm_hopper','fromQuery','phone','ContactId','ListId','createdAt','select','field','NOW()','scheduledAt','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','updatedAt','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','from','calleridnum','state\x20=\x204','group','Campaign','into','CampaignId','ANY_VALUE(calleridnum)','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','VoiceQueueId','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','CmHopperFinal','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','literal','`state`\x20=\x200,\x201,\x20null','COUNT','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts'];(function(_0x416320,_0x36fb4f){var _0xfd38ca=function(_0x1fc074){while(--_0x1fc074){_0x416320['push'](_0x416320['shift']());}};_0xfd38ca(++_0x36fb4f);}(_0xadb5,0xad));var _0x5adb=function(_0xe7526b,_0x3099c8){_0xe7526b=_0xe7526b-0x0;var _0x53a391=_0xadb5[_0xe7526b];return _0x53a391;};'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['CmHopperFinal']['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')]()['then'](respondWithResult(_0x3a5409,null))[_0x5adb('0x42')](handleError(_0x3a5409,null));};exports['update']=function(_0x51bc49,_0x5015ee){if(_0x51bc49[_0x5adb('0x47')][_0x5adb('0x48')]){delete _0x51bc49[_0x5adb('0x47')]['uniqueid'];}return db[_0x5adb('0x2a')]['find']({'where':{'uniqueid':_0x51bc49[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x5015ee,null))[_0x5adb('0x22')](saveUpdates(_0x51bc49['body'],null))[_0x5adb('0x22')](respondWithResult(_0x5015ee,null))['catch'](handleError(_0x5015ee,null));};exports[_0x5adb('0x49')]=function(_0x6dc067,_0x55c535,_0x2402a3){return db[_0x5adb('0x2a')][_0x5adb('0x40')]({'raw':![],'where':{'VoiceQueueId':_0x6dc067[_0x5adb('0x44')]['id']},'attributes':[[db[_0x5adb('0x4a')]['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x4c')))),'noSuchContacts'],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db['sequelize'][_0x5adb('0x4b')](_0x5adb('0x4e')))),_0x5adb('0x4f')],[db[_0x5adb('0x4a')]['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x50')))),_0x5adb('0x51')],[db['sequelize']['fn'](_0x5adb('0x4d'),db['sequelize']['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x52')))),_0x5adb('0x53')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db['sequelize']['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x54')))),'dropContacts'],[db['sequelize']['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x55')))),_0x5adb('0x56')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x57')))),_0x5adb('0x58')],[db[_0x5adb('0x4a')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x59')))),_0x5adb('0x5a')]]})['then'](handleEntityNotFound(_0x55c535,null))[_0x5adb('0x22')](respondWithResult(_0x55c535,null))[_0x5adb('0x42')](handleError(_0x55c535,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0x5cb50e,_0x476e62,_0x1505f7){return db['CmHopperFinal'][_0x5adb('0x40')]({'raw':![],'where':{'CampaignId':_0x5cb50e[_0x5adb('0x44')]['id']},'attributes':[[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x4c')))),_0x5adb('0x5b')],[db[_0x5adb('0x4a')]['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')]('`state`\x20=\x203,\x201,\x20null'))),_0x5adb('0x4f')],[db['sequelize']['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x50')))),_0x5adb('0x51')],[db['sequelize']['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')]('`state`\x20=\x208,\x201,\x20null'))),_0x5adb('0x53')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db['sequelize']['literal'](_0x5adb('0x54')))),'dropContacts'],[db['sequelize']['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x55')))),_0x5adb('0x56')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x57')))),'reCallContacts'],[db['sequelize']['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x59')))),_0x5adb('0x5a')]]})[_0x5adb('0x22')](handleEntityNotFound(_0x476e62,null))[_0x5adb('0x22')](respondWithResult(_0x476e62,null))[_0x5adb('0x42')](handleError(_0x476e62,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x5e55c2,_0x1fc73b,_0x56df90){return db[_0x5adb('0x5c')][_0x5adb('0x5d')]({'where':{'id':_0x5e55c2[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x1fc73b,null))[_0x5adb('0x22')](function(_0x236f59){var _0x338aee;if(_0x236f59){_0x338aee=squel[_0x5adb('0x5e')]()['into'](_0x5adb('0x5f'))[_0x5adb('0x60')]([_0x5adb('0x61'),'scheduledAt',_0x5adb('0x62'),_0x5adb('0x63'),'VoiceQueueId',_0x5adb('0x64'),'updatedAt'],squel[_0x5adb('0x65')]()[_0x5adb('0x66')]('ANY_VALUE(calleridnum)',_0x5adb('0x61'))[_0x5adb('0x66')](_0x5adb('0x67'),_0x5adb('0x68'))[_0x5adb('0x66')](_0x5adb('0x69'),_0x5adb('0x62'))[_0x5adb('0x66')]('ANY_VALUE(ListId)',_0x5adb('0x63'))[_0x5adb('0x66')](_0x5adb('0x6a'),'VoiceQueueId')['field'](_0x5adb('0x67'),'createdAt')[_0x5adb('0x66')](_0x5adb('0x67'),_0x5adb('0x6b'))['from'](_0x5adb('0x6c'))[_0x5adb('0x37')](_0x5adb('0x6d'),_0x5e55c2[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]())['where'](_0x5adb('0x6f'),_0x5e55c2[_0x5adb('0x47')][_0x5adb('0x70')][_0x5adb('0x6e')]())['where'](_0x5adb('0x71'))[_0x5adb('0x37')](_0x5adb('0x72'),squel[_0x5adb('0x65')]()[_0x5adb('0x66')](_0x5adb('0x61'))[_0x5adb('0x73')]('cm_hopper')[_0x5adb('0x37')](_0x5adb('0x6d'),_0x5e55c2['params']['id'][_0x5adb('0x6e')]()))[_0x5adb('0x37')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x5adb('0x65')]()['field'](_0x5adb('0x74'))[_0x5adb('0x73')]('cm_hopper_final')[_0x5adb('0x37')]('VoiceQueueId\x20=\x20?',_0x5e55c2[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]())[_0x5adb('0x37')](_0x5adb('0x75')))[_0x5adb('0x76')]('ContactId'))[_0x5adb('0x6e')]();return db[_0x5adb('0x4a')][_0x5adb('0x2f')](_0x338aee);}return[];})[_0x5adb('0x22')](respondWithResult(_0x1fc73b,null))['catch'](handleError(_0x1fc73b,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x3f3db9,_0x461a07,_0x2e5c96){return db[_0x5adb('0x77')][_0x5adb('0x5d')]({'where':{'id':_0x3f3db9[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x461a07,null))['then'](function(_0xda26cc){var _0x14bada;if(_0xda26cc){_0x14bada=squel[_0x5adb('0x5e')]()[_0x5adb('0x78')]('cm_hopper')[_0x5adb('0x60')]([_0x5adb('0x61'),_0x5adb('0x68'),_0x5adb('0x62'),_0x5adb('0x63'),_0x5adb('0x79'),_0x5adb('0x64'),_0x5adb('0x6b')],squel[_0x5adb('0x65')]()['field'](_0x5adb('0x7a'),_0x5adb('0x61'))['field'](_0x5adb('0x67'),_0x5adb('0x68'))[_0x5adb('0x66')](_0x5adb('0x69'),_0x5adb('0x62'))[_0x5adb('0x66')](_0x5adb('0x7b'),_0x5adb('0x63'))['field'](_0x5adb('0x7c'),_0x5adb('0x79'))['field'](_0x5adb('0x67'),_0x5adb('0x64'))[_0x5adb('0x66')]('NOW()','updatedAt')[_0x5adb('0x73')](_0x5adb('0x6c'))[_0x5adb('0x37')]('CampaignId\x20=\x20?',_0x3f3db9[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]())[_0x5adb('0x37')](_0x5adb('0x6f'),_0x3f3db9[_0x5adb('0x47')][_0x5adb('0x70')][_0x5adb('0x6e')]())[_0x5adb('0x37')](_0x5adb('0x71'))[_0x5adb('0x37')](_0x5adb('0x72'),squel[_0x5adb('0x65')]()['field']('phone')[_0x5adb('0x73')](_0x5adb('0x5f'))['where'](_0x5adb('0x7d'),_0x3f3db9[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]()))[_0x5adb('0x37')](_0x5adb('0x72'),squel[_0x5adb('0x65')]()[_0x5adb('0x66')](_0x5adb('0x74'))[_0x5adb('0x73')]('cm_hopper_final')[_0x5adb('0x37')](_0x5adb('0x7d'),_0x3f3db9[_0x5adb('0x44')]['id']['toString']())[_0x5adb('0x37')](_0x5adb('0x75')))[_0x5adb('0x76')](_0x5adb('0x62')))[_0x5adb('0x6e')]();return db[_0x5adb('0x4a')]['query'](_0x14bada);}return[];})[_0x5adb('0x22')](respondWithResult(_0x461a07,null))[_0x5adb('0x42')](handleError(_0x461a07,null));};exports[_0x5adb('0x7e')]=function(_0x1e5532,_0x2c3af8,_0x3a201a){return db[_0x5adb('0x7f')][_0x5adb('0x80')]({'where':{'VoiceQueueId':_0x1e5532[_0x5adb('0x47')][_0x5adb('0x81')],'CampaignId':_0x1e5532['body'][_0x5adb('0x79')],'ContactId':_0x1e5532['body'][_0x5adb('0x62')]}})[_0x5adb('0x22')](handleEntityNotFound(_0x2c3af8,null))[_0x5adb('0x22')](function(_0x193a29){if(_0x193a29){return _0x193a29;}return null;})[_0x5adb('0x22')](respondWithResult(_0x2c3af8,null))['catch'](handleError(_0x2c3af8,null));};
\ No newline at end of file
+var _0x524e=['destroy','name','send','index','map','rawAttributes','key','model','keys','filters','intersection','attributes','fields','query','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','CmHopperFinal','then','includeAll','include','findAll','rows','catch','show','length','find','describe','body','uniqueid','params','sequelize','COUNT','`state`\x20=\x200,\x201,\x20null','noSuchContacts','literal','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2022,\x201,\x20null','countContactsIvrCampaignHopperFinal','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','moveContactsQueueCampaignHopperFinal','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ListId','VoiceQueueId','createdAt','select','field','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','updatedAt','from','cm_hopper_final','toString','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','VoiceQueueId\x20=\x20?','group','Campaign','ContactId','ANY_VALUE(calleridnum)','CampaignId','CampaignId\x20=\x20?','state\x20=\x20?','calleridnum','CmHopper','findOne','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','apply','reject','save','update'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0x524e,0x15e));var _0xe524=function(_0x3b0cb7,_0x1dc63c){_0x3b0cb7=_0x3b0cb7-0x0;var _0x4094cc=_0x524e[_0x3b0cb7];return _0x4094cc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe524('0x0'));var jsonpatch=require(_0xe524('0x1'));var rp=require(_0xe524('0x2'));var moment=require(_0xe524('0x3'));var BPromise=require(_0xe524('0x4'));var Mustache=require(_0xe524('0x5'));var util=require(_0xe524('0x6'));var path=require(_0xe524('0x7'));var sox=require(_0xe524('0x8'));var csv=require(_0xe524('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe524('0xa'));var _=require(_0xe524('0xb'));var squel=require(_0xe524('0xc'));var crypto=require('crypto');var jsforce=require(_0xe524('0xd'));var deskjs=require(_0xe524('0xe'));var toCsv=require(_0xe524('0x9'));var querystring=require(_0xe524('0xf'));var Papa=require(_0xe524('0x10'));var Redis=require(_0xe524('0x11'));var authService=require(_0xe524('0x12'));var qs=require(_0xe524('0x13'));var as=require(_0xe524('0x14'));var hardwareService=require(_0xe524('0x15'));var logger=require(_0xe524('0x16'))(_0xe524('0x17'));var utils=require(_0xe524('0x18'));var config=require(_0xe524('0x19'));var licenseUtil=require(_0xe524('0x1a'));var db=require(_0xe524('0x1b'))['db'];function respondWithStatusCode(_0x5077c1,_0x4b0f51){_0x4b0f51=_0x4b0f51||0xcc;return function(_0xfdc2a5){if(_0xfdc2a5){return _0x5077c1[_0xe524('0x1c')](_0x4b0f51);}return _0x5077c1[_0xe524('0x1d')](_0x4b0f51)[_0xe524('0x1e')]();};}function respondWithResult(_0x20a852,_0x57c1b6){_0x57c1b6=_0x57c1b6||0xc8;return function(_0x12ff75){if(_0x12ff75){return _0x20a852['status'](_0x57c1b6)[_0xe524('0x1f')](_0x12ff75);}};}function respondWithFilteredResult(_0x1b0af6,_0x48165e){return function(_0x569660){if(_0x569660){var _0x488fce=typeof _0x48165e[_0xe524('0x20')]==='undefined'&&typeof _0x48165e[_0xe524('0x21')]==='undefined';var _0x5c8736=_0x569660['count'];var _0x3a4027=_0x488fce?0x0:_0x48165e['offset'];var _0x11b2a1=_0x488fce?_0x569660[_0xe524('0x22')]:_0x48165e[_0xe524('0x20')]+_0x48165e[_0xe524('0x21')];var _0x5d7b17;if(_0x11b2a1>=_0x5c8736){_0x11b2a1=_0x5c8736;_0x5d7b17=0xc8;}else{_0x5d7b17=0xce;}_0x1b0af6[_0xe524('0x1d')](_0x5d7b17);return _0x1b0af6[_0xe524('0x23')]('Content-Range',_0x3a4027+'-'+_0x11b2a1+'/'+_0x5c8736)[_0xe524('0x1f')](_0x569660);}return null;};}function patchUpdates(_0x309f85){return function(_0x43a4f9){try{jsonpatch[_0xe524('0x24')](_0x43a4f9,_0x309f85,!![]);}catch(_0x1c4194){return BPromise[_0xe524('0x25')](_0x1c4194);}return _0x43a4f9[_0xe524('0x26')]();};}function saveUpdates(_0x375219,_0x7dfe97){return function(_0x5c4d21){if(_0x5c4d21){return _0x5c4d21[_0xe524('0x27')](_0x375219)['then'](function(_0x577d1f){return _0x577d1f;});}return null;};}function removeEntity(_0x2d2f83,_0x23df5e){return function(_0x1ad106){if(_0x1ad106){return _0x1ad106[_0xe524('0x28')]()['then'](function(){_0x2d2f83[_0xe524('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17e245,_0xcf5db){return function(_0xd62772){if(!_0xd62772){_0x17e245[_0xe524('0x1c')](0x194);}return _0xd62772;};}function handleError(_0x4102d9,_0xfd5965){_0xfd5965=_0xfd5965||0x1f4;return function(_0x2141db){logger['error'](_0x2141db['stack']);if(_0x2141db[_0xe524('0x29')]){delete _0x2141db[_0xe524('0x29')];}_0x4102d9[_0xe524('0x1d')](_0xfd5965)[_0xe524('0x2a')](_0x2141db);};}exports[_0xe524('0x2b')]=function(_0x5405e4,_0x52f140){var _0x4b1ff={},_0x25e7a7={},_0x3aedd9={'count':0x0,'rows':[]};var _0x8070e4=_[_0xe524('0x2c')](db['CmHopperFinal'][_0xe524('0x2d')],function(_0x9a7e98){return{'name':_0x9a7e98['fieldName'],'type':_0x9a7e98['type'][_0xe524('0x2e')]};});_0x25e7a7[_0xe524('0x2f')]=_['map'](_0x8070e4,_0xe524('0x29'));_0x25e7a7['query']=_[_0xe524('0x30')](_0x5405e4['query']);_0x25e7a7[_0xe524('0x31')]=_[_0xe524('0x32')](_0x25e7a7[_0xe524('0x2f')],_0x25e7a7['query']);_0x4b1ff[_0xe524('0x33')]=_['intersection'](_0x25e7a7[_0xe524('0x2f')],qs[_0xe524('0x34')](_0x5405e4[_0xe524('0x35')]['fields']));_0x4b1ff[_0xe524('0x33')]=_0x4b1ff[_0xe524('0x33')]['length']?_0x4b1ff[_0xe524('0x33')]:_0x25e7a7[_0xe524('0x2f')];if(!_0x5405e4[_0xe524('0x35')][_0xe524('0x36')]('nolimit')){_0x4b1ff[_0xe524('0x21')]=qs[_0xe524('0x21')](_0x5405e4[_0xe524('0x35')][_0xe524('0x21')]);_0x4b1ff[_0xe524('0x20')]=qs[_0xe524('0x20')](_0x5405e4[_0xe524('0x35')][_0xe524('0x20')]);}_0x4b1ff['order']=qs[_0xe524('0x37')](_0x5405e4['query'][_0xe524('0x37')]);_0x4b1ff[_0xe524('0x38')]=qs['filters'](_[_0xe524('0x39')](_0x5405e4['query'],_0x25e7a7[_0xe524('0x31')]),_0x8070e4);if(_0x5405e4[_0xe524('0x35')][_0xe524('0x3a')]){_0x4b1ff[_0xe524('0x38')]=_[_0xe524('0x3b')](_0x4b1ff[_0xe524('0x38')],{'$or':_[_0xe524('0x2c')](_0x8070e4,function(_0x13762c){if(_0x13762c['type']!==_0xe524('0x3c')){var _0x940c05={};_0x940c05[_0x13762c[_0xe524('0x29')]]={'$like':'%'+_0x5405e4[_0xe524('0x35')][_0xe524('0x3a')]+'%'};return _0x940c05;}})});}_0x4b1ff=_[_0xe524('0x3b')]({},_0x4b1ff,_0x5405e4[_0xe524('0x3d')]);var _0x158d45={'where':_0x4b1ff['where']};return db[_0xe524('0x3e')][_0xe524('0x22')](_0x158d45)[_0xe524('0x3f')](function(_0x59781b){_0x3aedd9[_0xe524('0x22')]=_0x59781b;if(_0x5405e4['query'][_0xe524('0x40')]){_0x4b1ff[_0xe524('0x41')]=[{'all':!![]}];}return db[_0xe524('0x3e')][_0xe524('0x42')](_0x4b1ff);})[_0xe524('0x3f')](function(_0x4746cd){_0x3aedd9[_0xe524('0x43')]=_0x4746cd;return _0x3aedd9;})['then'](respondWithFilteredResult(_0x52f140,_0x4b1ff))[_0xe524('0x44')](handleError(_0x52f140,null));};exports[_0xe524('0x45')]=function(_0x13c54c,_0x376505){var _0x438962={'raw':!![],'where':{'id':_0x13c54c['params']['id']}},_0x1ae283={};_0x1ae283[_0xe524('0x2f')]=_[_0xe524('0x30')](db[_0xe524('0x3e')]['rawAttributes']);_0x1ae283[_0xe524('0x35')]=_['keys'](_0x13c54c['query']);_0x1ae283[_0xe524('0x31')]=_[_0xe524('0x32')](_0x1ae283['model'],_0x1ae283[_0xe524('0x35')]);_0x438962[_0xe524('0x33')]=_[_0xe524('0x32')](_0x1ae283[_0xe524('0x2f')],qs['fields'](_0x13c54c['query'][_0xe524('0x34')]));_0x438962[_0xe524('0x33')]=_0x438962['attributes'][_0xe524('0x46')]?_0x438962['attributes']:_0x1ae283[_0xe524('0x2f')];if(_0x13c54c[_0xe524('0x35')][_0xe524('0x40')]){_0x438962[_0xe524('0x41')]=[{'all':!![]}];}_0x438962=_[_0xe524('0x3b')]({},_0x438962,_0x13c54c[_0xe524('0x3d')]);return db[_0xe524('0x3e')][_0xe524('0x47')](_0x438962)[_0xe524('0x3f')](handleEntityNotFound(_0x376505,null))[_0xe524('0x3f')](respondWithResult(_0x376505,null))[_0xe524('0x44')](handleError(_0x376505,null));};exports[_0xe524('0x48')]=function(_0x3d7ab7,_0x33b1c8){return db[_0xe524('0x3e')]['describe']()[_0xe524('0x3f')](respondWithResult(_0x33b1c8,null))['catch'](handleError(_0x33b1c8,null));};exports['update']=function(_0x24f313,_0x59fe6b){if(_0x24f313[_0xe524('0x49')][_0xe524('0x4a')]){delete _0x24f313['body'][_0xe524('0x4a')];}return db['CmHopperFinal']['find']({'where':{'uniqueid':_0x24f313[_0xe524('0x4b')]['id']}})[_0xe524('0x3f')](handleEntityNotFound(_0x59fe6b,null))[_0xe524('0x3f')](saveUpdates(_0x24f313['body'],null))['then'](respondWithResult(_0x59fe6b,null))['catch'](handleError(_0x59fe6b,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x4f7a64,_0x5477ca,_0x45f504){return db[_0xe524('0x3e')]['findAll']({'raw':![],'where':{'VoiceQueueId':_0x4f7a64[_0xe524('0x4b')]['id']},'attributes':[[db[_0xe524('0x4c')]['fn'](_0xe524('0x4d'),db[_0xe524('0x4c')]['fn']('IF',db[_0xe524('0x4c')]['literal'](_0xe524('0x4e')))),_0xe524('0x4f')],[db[_0xe524('0x4c')]['fn']('COUNT',db[_0xe524('0x4c')]['fn']('IF',db['sequelize'][_0xe524('0x50')](_0xe524('0x51')))),_0xe524('0x52')],[db[_0xe524('0x4c')]['fn'](_0xe524('0x4d'),db[_0xe524('0x4c')]['fn']('IF',db[_0xe524('0x4c')][_0xe524('0x50')](_0xe524('0x53')))),_0xe524('0x54')],[db[_0xe524('0x4c')]['fn'](_0xe524('0x4d'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0xe524('0x55')))),_0xe524('0x56')],[db[_0xe524('0x4c')]['fn'](_0xe524('0x4d'),db[_0xe524('0x4c')]['fn']('IF',db[_0xe524('0x4c')][_0xe524('0x50')](_0xe524('0x57')))),_0xe524('0x58')],[db[_0xe524('0x4c')]['fn'](_0xe524('0x4d'),db['sequelize']['fn']('IF',db[_0xe524('0x4c')][_0xe524('0x50')]('`state`\x20=\x2011\x20,\x201,\x20null'))),'abandonedContacts'],[db['sequelize']['fn']('COUNT',db[_0xe524('0x4c')]['fn']('IF',db[_0xe524('0x4c')][_0xe524('0x50')](_0xe524('0x59')))),'reCallContacts'],[db[_0xe524('0x4c')]['fn'](_0xe524('0x4d'),db[_0xe524('0x4c')]['fn']('IF',db[_0xe524('0x4c')]['literal']('`state`\x20=\x2019,\x201,\x20null'))),'answeringMachine']]})[_0xe524('0x3f')](handleEntityNotFound(_0x5477ca,null))['then'](respondWithResult(_0x5477ca,null))[_0xe524('0x44')](handleError(_0x5477ca,null));};exports[_0xe524('0x5a')]=function(_0x3f4201,_0x287ab8,_0x2b2a0e){return db['CmHopperFinal']['findAll']({'raw':![],'where':{'CampaignId':_0x3f4201[_0xe524('0x4b')]['id']},'attributes':[[db[_0xe524('0x4c')]['fn'](_0xe524('0x4d'),db[_0xe524('0x4c')]['fn']('IF',db[_0xe524('0x4c')][_0xe524('0x50')]('`state`\x20=\x200,\x201,\x20null'))),_0xe524('0x4f')],[db[_0xe524('0x4c')]['fn'](_0xe524('0x4d'),db['sequelize']['fn']('IF',db[_0xe524('0x4c')][_0xe524('0x50')](_0xe524('0x51')))),'noAnswerContacts'],[db['sequelize']['fn'](_0xe524('0x4d'),db[_0xe524('0x4c')]['fn']('IF',db[_0xe524('0x4c')][_0xe524('0x50')](_0xe524('0x53')))),'busyContacts'],[db[_0xe524('0x4c')]['fn'](_0xe524('0x4d'),db[_0xe524('0x4c')]['fn']('IF',db[_0xe524('0x4c')][_0xe524('0x50')](_0xe524('0x55')))),_0xe524('0x56')],[db[_0xe524('0x4c')]['fn'](_0xe524('0x4d'),db[_0xe524('0x4c')]['fn']('IF',db[_0xe524('0x4c')]['literal'](_0xe524('0x57')))),_0xe524('0x58')],[db[_0xe524('0x4c')]['fn'](_0xe524('0x4d'),db[_0xe524('0x4c')]['fn']('IF',db['sequelize'][_0xe524('0x50')](_0xe524('0x5b')))),_0xe524('0x5c')],[db[_0xe524('0x4c')]['fn'](_0xe524('0x4d'),db[_0xe524('0x4c')]['fn']('IF',db[_0xe524('0x4c')]['literal'](_0xe524('0x59')))),_0xe524('0x5d')],[db[_0xe524('0x4c')]['fn'](_0xe524('0x4d'),db['sequelize']['fn']('IF',db[_0xe524('0x4c')]['literal'](_0xe524('0x5e')))),_0xe524('0x5f')]]})[_0xe524('0x3f')](handleEntityNotFound(_0x287ab8,null))['then'](respondWithResult(_0x287ab8,null))[_0xe524('0x44')](handleError(_0x287ab8,null));};exports[_0xe524('0x60')]=function(_0x43d125,_0x13905f,_0x4514d4){return db['VoiceQueue'][_0xe524('0x47')]({'where':{'id':_0x43d125[_0xe524('0x4b')]['id']}})[_0xe524('0x3f')](handleEntityNotFound(_0x13905f,null))[_0xe524('0x3f')](function(_0x109da1){var _0x57b6bb;if(_0x109da1){_0x57b6bb=squel[_0xe524('0x61')]()[_0xe524('0x62')](_0xe524('0x63'))[_0xe524('0x64')]([_0xe524('0x65'),_0xe524('0x66'),'ContactId',_0xe524('0x67'),_0xe524('0x68'),_0xe524('0x69'),'updatedAt'],squel[_0xe524('0x6a')]()[_0xe524('0x6b')]('ANY_VALUE(calleridnum)',_0xe524('0x65'))[_0xe524('0x6b')](_0xe524('0x6c'),_0xe524('0x66'))[_0xe524('0x6b')](_0xe524('0x6d'),'ContactId')[_0xe524('0x6b')](_0xe524('0x6e'),_0xe524('0x67'))[_0xe524('0x6b')](_0xe524('0x6f'),_0xe524('0x68'))[_0xe524('0x6b')](_0xe524('0x6c'),_0xe524('0x69'))[_0xe524('0x6b')](_0xe524('0x6c'),_0xe524('0x70'))[_0xe524('0x71')](_0xe524('0x72'))[_0xe524('0x38')]('VoiceQueueId\x20=\x20?',_0x43d125[_0xe524('0x4b')]['id'][_0xe524('0x73')]())[_0xe524('0x38')]('state\x20=\x20?',_0x43d125[_0xe524('0x49')][_0xe524('0x74')]['toString']())['where'](_0xe524('0x75'))['where'](_0xe524('0x76'),squel['select']()[_0xe524('0x6b')](_0xe524('0x65'))[_0xe524('0x71')](_0xe524('0x63'))['where']('VoiceQueueId\x20=\x20?',_0x43d125[_0xe524('0x4b')]['id'][_0xe524('0x73')]()))['where'](_0xe524('0x76'),squel[_0xe524('0x6a')]()[_0xe524('0x6b')]('calleridnum')[_0xe524('0x71')](_0xe524('0x72'))[_0xe524('0x38')](_0xe524('0x77'),_0x43d125[_0xe524('0x4b')]['id'][_0xe524('0x73')]())['where']('state\x20=\x204'))[_0xe524('0x78')]('ContactId'))[_0xe524('0x73')]();return db[_0xe524('0x4c')][_0xe524('0x35')](_0x57b6bb);}return[];})['then'](respondWithResult(_0x13905f,null))[_0xe524('0x44')](handleError(_0x13905f,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x1681c5,_0x41e693,_0xfc62e5){return db[_0xe524('0x79')][_0xe524('0x47')]({'where':{'id':_0x1681c5[_0xe524('0x4b')]['id']}})['then'](handleEntityNotFound(_0x41e693,null))[_0xe524('0x3f')](function(_0x35d0f4){var _0xa8334;if(_0x35d0f4){_0xa8334=squel['insert']()[_0xe524('0x62')](_0xe524('0x63'))['fromQuery']([_0xe524('0x65'),_0xe524('0x66'),_0xe524('0x7a'),_0xe524('0x67'),'CampaignId',_0xe524('0x69'),_0xe524('0x70')],squel[_0xe524('0x6a')]()['field'](_0xe524('0x7b'),'phone')[_0xe524('0x6b')](_0xe524('0x6c'),_0xe524('0x66'))['field'](_0xe524('0x6d'),_0xe524('0x7a'))[_0xe524('0x6b')]('ANY_VALUE(ListId)','ListId')[_0xe524('0x6b')]('ANY_VALUE(CampaignId)',_0xe524('0x7c'))['field'](_0xe524('0x6c'),_0xe524('0x69'))['field'](_0xe524('0x6c'),_0xe524('0x70'))['from']('cm_hopper_final')[_0xe524('0x38')](_0xe524('0x7d'),_0x1681c5[_0xe524('0x4b')]['id']['toString']())[_0xe524('0x38')](_0xe524('0x7e'),_0x1681c5[_0xe524('0x49')][_0xe524('0x74')][_0xe524('0x73')]())[_0xe524('0x38')]('calleridnum\x20IS\x20NOT\x20NULL')[_0xe524('0x38')](_0xe524('0x76'),squel['select']()['field'](_0xe524('0x65'))[_0xe524('0x71')](_0xe524('0x63'))[_0xe524('0x38')]('CampaignId\x20=\x20?',_0x1681c5[_0xe524('0x4b')]['id'][_0xe524('0x73')]()))['where']('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xe524('0x6a')]()[_0xe524('0x6b')](_0xe524('0x7f'))[_0xe524('0x71')](_0xe524('0x72'))[_0xe524('0x38')]('CampaignId\x20=\x20?',_0x1681c5['params']['id'][_0xe524('0x73')]())[_0xe524('0x38')]('state\x20=\x204'))['group'](_0xe524('0x7a')))[_0xe524('0x73')]();return db[_0xe524('0x4c')][_0xe524('0x35')](_0xa8334);}return[];})[_0xe524('0x3f')](respondWithResult(_0x41e693,null))[_0xe524('0x44')](handleError(_0x41e693,null));};exports['checkContactHopper']=function(_0x555801,_0x3e8668,_0x390093){return db[_0xe524('0x80')][_0xe524('0x81')]({'where':{'VoiceQueueId':_0x555801[_0xe524('0x49')][_0xe524('0x68')],'CampaignId':_0x555801[_0xe524('0x49')][_0xe524('0x7c')],'ContactId':_0x555801['body'][_0xe524('0x7a')]}})[_0xe524('0x3f')](handleEntityNotFound(_0x3e8668,null))[_0xe524('0x3f')](function(_0x5242b7){if(_0x5242b7){return _0x5242b7;}return null;})['then'](respondWithResult(_0x3e8668,null))[_0xe524('0x44')](handleError(_0x3e8668,null));};
\ No newline at end of file
index f8c75e1..1dddb8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6a6=['calleridnum','uniqueid','util','../../config/logger','api','moment','request-promise','path','rimraf','./cmHopperFinal.attributes','define','CmHopperFinal','cm_hopper_final'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xa6a6,0x6a));var _0x6a6a=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa6a6[_0x433a86];return _0x23000c;};'use strict';var _=require('lodash');var util=require(_0x6a6a('0x0'));var logger=require(_0x6a6a('0x1'))(_0x6a6a('0x2'));var moment=require(_0x6a6a('0x3'));var BPromise=require('bluebird');var rp=require(_0x6a6a('0x4'));var fs=require('fs');var path=require(_0x6a6a('0x5'));var rimraf=require(_0x6a6a('0x6'));var config=require('../../config/environment');var attributes=require(_0x6a6a('0x7'));module['exports']=function(_0x1905f0,_0x30b602){return _0x1905f0[_0x6a6a('0x8')](_0x6a6a('0x9'),attributes,{'tableName':_0x6a6a('0xa'),'paranoid':![],'indexes':[{'name':_0x6a6a('0xb'),'fields':['calleridnum']},{'name':_0x6a6a('0xc'),'fields':[_0x6a6a('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f40=['rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define','cm_hopper_final','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x152fc4,_0x3147cc){var _0x38cf4f=function(_0x1f567b){while(--_0x1f567b){_0x152fc4['push'](_0x152fc4['shift']());}};_0x38cf4f(++_0x3147cc);}(_0x2f40,0x1ab));var _0x02f4=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x2f40[_0x6131cd];return _0x47e916;};'use strict';var _=require(_0x02f4('0x0'));var util=require(_0x02f4('0x1'));var logger=require(_0x02f4('0x2'))(_0x02f4('0x3'));var moment=require(_0x02f4('0x4'));var BPromise=require(_0x02f4('0x5'));var rp=require(_0x02f4('0x6'));var fs=require('fs');var path=require(_0x02f4('0x7'));var rimraf=require(_0x02f4('0x8'));var config=require(_0x02f4('0x9'));var attributes=require(_0x02f4('0xa'));module[_0x02f4('0xb')]=function(_0x15bf55,_0x1084ca){return _0x15bf55[_0x02f4('0xc')]('CmHopperFinal',attributes,{'tableName':_0x02f4('0xd'),'paranoid':![],'indexes':[{'name':'calleridnum','fields':['calleridnum']},{'name':_0x02f4('0xe'),'fields':[_0x02f4('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index ead98d3..6f0ab97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0xa3b4e8,_0x1a79e9){var _0x13a398=function(_0x48f22a){while(--_0x48f22a){_0xa3b4e8['push'](_0xa3b4e8['shift']());}};_0x13a398(++_0x1a79e9);}(_0xb10b,0x12a));var _0xbb10=function(_0x432c36,_0x4082e8){_0x432c36=_0x432c36-0x0;var _0x3a14d0=_0xb10b[_0x432c36];return _0x3a14d0;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x261202,_0x289bb2){var _0x2a1b6d=function(_0x34e79c){while(--_0x34e79c){_0x261202['push'](_0x261202['shift']());}};_0x2a1b6d(++_0x289bb2);}(_0xb10b,0x12a));var _0xbb10=function(_0x2570b1,_0x3fed7f){_0x2570b1=_0x2570b1-0x0;var _0x5b4e74=_0xb10b[_0x2570b1];return _0x5b4e74;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 5899659..8b8ccbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56c8=['get','isAuthenticated','index','/describe','/:id','show','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0xe9fca1,_0x5ba251){var _0x55ae32=function(_0x553090){while(--_0x553090){_0xe9fca1['push'](_0xe9fca1['shift']());}};_0x55ae32(++_0x5ba251);}(_0x56c8,0x12f));var _0x856c=function(_0x1a86e3,_0x5b9012){_0x1a86e3=_0x1a86e3-0x0;var _0x3a7640=_0x56c8[_0x1a86e3];return _0x3a7640;};'use strict';var multer=require(_0x856c('0x0'));var util=require(_0x856c('0x1'));var path=require(_0x856c('0x2'));var timeout=require(_0x856c('0x3'));var express=require('express');var router=express[_0x856c('0x4')]();var fs_extra=require(_0x856c('0x5'));var auth=require(_0x856c('0x6'));var interaction=require(_0x856c('0x7'));var config=require(_0x856c('0x8'));var controller=require('./cmHopperFinal.controller');router[_0x856c('0x9')]('/',auth[_0x856c('0xa')](),controller[_0x856c('0xb')]);router[_0x856c('0x9')](_0x856c('0xc'),auth[_0x856c('0xa')](),controller['describe']);router['get'](_0x856c('0xd'),auth[_0x856c('0xa')](),controller[_0x856c('0xe')]);router['get']('/voice/queue/countAttributes/:id',auth['isAuthenticated'](),controller[_0x856c('0xf')]);router[_0x856c('0x9')](_0x856c('0x10'),auth['isAuthenticated'](),controller[_0x856c('0x11')]);router[_0x856c('0x12')]('/voice/queue/moveContacts/:id',auth[_0x856c('0xa')](),controller[_0x856c('0x13')]);router[_0x856c('0x12')](_0x856c('0x14'),auth[_0x856c('0xa')](),controller[_0x856c('0x15')]);router[_0x856c('0x12')](_0x856c('0x16'),auth['isAuthenticated'](),controller[_0x856c('0x17')]);router['put'](_0x856c('0xd'),auth[_0x856c('0xa')](),controller[_0x856c('0x18')]);module[_0x856c('0x19')]=router;
\ No newline at end of file
+var _0xaadd=['describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','post','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','/describe'];(function(_0x553198,_0x1f3fa8){var _0x577bfd=function(_0xd86b21){while(--_0xd86b21){_0x553198['push'](_0x553198['shift']());}};_0x577bfd(++_0x1f3fa8);}(_0xaadd,0x19b));var _0xdaad=function(_0x1b43bd,_0x286e8e){_0x1b43bd=_0x1b43bd-0x0;var _0x1c91d0=_0xaadd[_0x1b43bd];return _0x1c91d0;};'use strict';var multer=require(_0xdaad('0x0'));var util=require(_0xdaad('0x1'));var path=require(_0xdaad('0x2'));var timeout=require(_0xdaad('0x3'));var express=require(_0xdaad('0x4'));var router=express[_0xdaad('0x5')]();var fs_extra=require(_0xdaad('0x6'));var auth=require(_0xdaad('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xdaad('0x8'));var controller=require(_0xdaad('0x9'));router[_0xdaad('0xa')]('/',auth[_0xdaad('0xb')](),controller[_0xdaad('0xc')]);router['get'](_0xdaad('0xd'),auth[_0xdaad('0xb')](),controller[_0xdaad('0xe')]);router[_0xdaad('0xa')](_0xdaad('0xf'),auth[_0xdaad('0xb')](),controller[_0xdaad('0x10')]);router[_0xdaad('0xa')](_0xdaad('0x11'),auth[_0xdaad('0xb')](),controller[_0xdaad('0x12')]);router[_0xdaad('0xa')]('/campaign/countAttributes/:id',auth[_0xdaad('0xb')](),controller['countContactsIvrCampaignHopperFinal']);router[_0xdaad('0x13')]('/voice/queue/moveContacts/:id',auth[_0xdaad('0xb')](),controller[_0xdaad('0x14')]);router[_0xdaad('0x13')]('/voice/campaign/moveContacts/:id',auth[_0xdaad('0xb')](),controller[_0xdaad('0x15')]);router[_0xdaad('0x13')](_0xdaad('0x16'),auth[_0xdaad('0xb')](),controller[_0xdaad('0x17')]);router[_0xdaad('0x18')](_0xdaad('0xf'),auth[_0xdaad('0xb')](),controller['update']);module['exports']=router;
\ No newline at end of file
index bde34e9..c8e3fc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01c0=['exports','INTEGER','DATE','STRING','BOOLEAN','sequelize'];(function(_0x5e6577,_0x13df2d){var _0x518f07=function(_0x5b1cbd){while(--_0x5b1cbd){_0x5e6577['push'](_0x5e6577['shift']());}};_0x518f07(++_0x13df2d);}(_0x01c0,0xcb));var _0x001c=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0x01c0[_0x12f688];return _0x59c3de;};'use strict';var Sequelize=require(_0x001c('0x0'));module[_0x001c('0x1')]={'state':{'type':Sequelize[_0x001c('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x001c('0x3')]},'countbusyretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x001c('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x001c('0x4')]},'originatecalleridname':{'type':Sequelize[_0x001c('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x001c('0x4')]},'starttime':{'type':Sequelize[_0x001c('0x3')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x001c('0x3')]},'droptime':{'type':Sequelize[_0x001c('0x3')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x001c('0x4')]},'campaign':{'type':Sequelize[_0x001c('0x4')]},'campaigntype':{'type':Sequelize[_0x001c('0x4')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x001c('0x4')]},'amd':{'type':Sequelize[_0x001c('0x5')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0x001c('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x001c('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x001c('0x3')]},'recallme':{'type':Sequelize[_0x001c('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x001c('0x3')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xaf7d=['BOOLEAN','sequelize','INTEGER','STRING','DATE'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaf7d,0xb0));var _0xdaf7=function(_0x1df6de,_0x5b5ae0){_0x1df6de=_0x1df6de-0x0;var _0x2abc75=_0xaf7d[_0x1df6de];return _0x2abc75;};'use strict';var Sequelize=require(_0xdaf7('0x0'));module['exports']={'state':{'type':Sequelize[_0xdaf7('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xdaf7('0x2')]},'scheduledat':{'type':Sequelize[_0xdaf7('0x3')]},'countbusyretry':{'type':Sequelize[_0xdaf7('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xdaf7('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xdaf7('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xdaf7('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xdaf7('0x2')]},'originatecalleridnum':{'type':Sequelize[_0xdaf7('0x2')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xdaf7('0x2')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xdaf7('0x3')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xdaf7('0x3')]},'droptime':{'type':Sequelize[_0xdaf7('0x3')]},'endtime':{'type':Sequelize[_0xdaf7('0x3')]},'ringtime':{'type':Sequelize[_0xdaf7('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xdaf7('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xdaf7('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xdaf7('0x2')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xdaf7('0x2')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0xdaf7('0x2')]},'amd':{'type':Sequelize[_0xdaf7('0x4')],'defaultValue':![]},'fax':{'type':Sequelize[_0xdaf7('0x4')],'defaultValue':![]},'callback':{'type':Sequelize[_0xdaf7('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xdaf7('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0xdaf7('0x3')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xdaf7('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xdaf7('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 80403a0..9d84b19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d2b=['squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','undefined','count','set','apply','reject','save','update','destroy','then','end','error','stack','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','catch','show','params','include','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash'];(function(_0x31982b,_0x40a026){var _0x2e8a4c=function(_0x47395d){while(--_0x47395d){_0x31982b['push'](_0x31982b['shift']());}};_0x2e8a4c(++_0x40a026);}(_0x2d2b,0xe1));var _0xb2d2=function(_0xa510ab,_0x51bc81){_0xa510ab=_0xa510ab-0x0;var _0x54840e=_0x2d2b[_0xa510ab];return _0x54840e;};'use strict';var emlformat=require(_0xb2d2('0x0'));var rimraf=require(_0xb2d2('0x1'));var zipdir=require(_0xb2d2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb2d2('0x3'));var moment=require(_0xb2d2('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb2d2('0x5'));var util=require(_0xb2d2('0x6'));var path=require(_0xb2d2('0x7'));var sox=require(_0xb2d2('0x8'));var csv=require(_0xb2d2('0x9'));var ejs=require(_0xb2d2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb2d2('0xb'));var squel=require(_0xb2d2('0xc'));var crypto=require(_0xb2d2('0xd'));var jsforce=require(_0xb2d2('0xe'));var deskjs=require(_0xb2d2('0xf'));var toCsv=require(_0xb2d2('0x9'));var querystring=require('querystring');var Papa=require(_0xb2d2('0x10'));var Redis=require(_0xb2d2('0x11'));var authService=require(_0xb2d2('0x12'));var qs=require(_0xb2d2('0x13'));var as=require(_0xb2d2('0x14'));var hardwareService=require(_0xb2d2('0x15'));var logger=require('../../config/logger')(_0xb2d2('0x16'));var utils=require(_0xb2d2('0x17'));var config=require(_0xb2d2('0x18'));var licenseUtil=require(_0xb2d2('0x19'));var db=require(_0xb2d2('0x1a'))['db'];function respondWithStatusCode(_0x3ba062,_0x5c93e7){_0x5c93e7=_0x5c93e7||0xcc;return function(_0x168802){if(_0x168802){return _0x3ba062[_0xb2d2('0x1b')](_0x5c93e7);}return _0x3ba062['status'](_0x5c93e7)['end']();};}function respondWithResult(_0x25d95f,_0x2ea731){_0x2ea731=_0x2ea731||0xc8;return function(_0x285d66){if(_0x285d66){return _0x25d95f[_0xb2d2('0x1c')](_0x2ea731)['json'](_0x285d66);}};}function respondWithFilteredResult(_0x3bd50c,_0x557432){return function(_0x1baf0d){if(_0x1baf0d){var _0x379c42=typeof _0x557432[_0xb2d2('0x1d')]==='undefined'&&typeof _0x557432[_0xb2d2('0x1e')]===_0xb2d2('0x1f');var _0x5da08d=_0x1baf0d[_0xb2d2('0x20')];var _0x346341=_0x379c42?0x0:_0x557432[_0xb2d2('0x1d')];var _0x39b3df=_0x379c42?_0x1baf0d['count']:_0x557432[_0xb2d2('0x1d')]+_0x557432[_0xb2d2('0x1e')];var _0x5ecb7b;if(_0x39b3df>=_0x5da08d){_0x39b3df=_0x5da08d;_0x5ecb7b=0xc8;}else{_0x5ecb7b=0xce;}_0x3bd50c[_0xb2d2('0x1c')](_0x5ecb7b);return _0x3bd50c[_0xb2d2('0x21')]('Content-Range',_0x346341+'-'+_0x39b3df+'/'+_0x5da08d)['json'](_0x1baf0d);}return null;};}function patchUpdates(_0x1ad4c5){return function(_0x4f41ea){try{jsonpatch[_0xb2d2('0x22')](_0x4f41ea,_0x1ad4c5,!![]);}catch(_0x45bcdd){return BPromise[_0xb2d2('0x23')](_0x45bcdd);}return _0x4f41ea[_0xb2d2('0x24')]();};}function saveUpdates(_0x899a1a,_0x2ca3d2){return function(_0x42c65f){if(_0x42c65f){return _0x42c65f[_0xb2d2('0x25')](_0x899a1a)['then'](function(_0x213fe0){return _0x213fe0;});}return null;};}function removeEntity(_0x403b97,_0x17bfc7){return function(_0x13ebcd){if(_0x13ebcd){return _0x13ebcd[_0xb2d2('0x26')]()[_0xb2d2('0x27')](function(){_0x403b97['status'](0xcc)[_0xb2d2('0x28')]();});}};}function handleEntityNotFound(_0x287666,_0x151061){return function(_0x49e2a2){if(!_0x49e2a2){_0x287666['sendStatus'](0x194);}return _0x49e2a2;};}function handleError(_0x51bc5e,_0x3b0d78){_0x3b0d78=_0x3b0d78||0x1f4;return function(_0x4def5b){logger[_0xb2d2('0x29')](_0x4def5b[_0xb2d2('0x2a')]);if(_0x4def5b['name']){delete _0x4def5b[_0xb2d2('0x2b')];}_0x51bc5e[_0xb2d2('0x1c')](_0x3b0d78)[_0xb2d2('0x2c')](_0x4def5b);};}exports[_0xb2d2('0x2d')]=function(_0x5e7e61,_0x4d5570){var _0x441131={},_0xe6884a={},_0x23c717={'count':0x0,'rows':[]};var _0x99d760=_[_0xb2d2('0x2e')](db[_0xb2d2('0x2f')][_0xb2d2('0x30')],function(_0x35dd7b){return{'name':_0x35dd7b[_0xb2d2('0x31')],'type':_0x35dd7b[_0xb2d2('0x32')]['key']};});_0xe6884a[_0xb2d2('0x33')]=_['map'](_0x99d760,_0xb2d2('0x2b'));_0xe6884a[_0xb2d2('0x34')]=_[_0xb2d2('0x35')](_0x5e7e61[_0xb2d2('0x34')]);_0xe6884a[_0xb2d2('0x36')]=_['intersection'](_0xe6884a['model'],_0xe6884a[_0xb2d2('0x34')]);_0x441131['attributes']=_[_0xb2d2('0x37')](_0xe6884a['model'],qs[_0xb2d2('0x38')](_0x5e7e61[_0xb2d2('0x34')]['fields']));_0x441131['attributes']=_0x441131['attributes'][_0xb2d2('0x39')]?_0x441131[_0xb2d2('0x3a')]:_0xe6884a[_0xb2d2('0x33')];if(!_0x5e7e61[_0xb2d2('0x34')][_0xb2d2('0x3b')](_0xb2d2('0x3c'))){_0x441131[_0xb2d2('0x1e')]=qs['limit'](_0x5e7e61[_0xb2d2('0x34')][_0xb2d2('0x1e')]);_0x441131[_0xb2d2('0x1d')]=qs[_0xb2d2('0x1d')](_0x5e7e61['query']['offset']);}_0x441131[_0xb2d2('0x3d')]=qs['sort'](_0x5e7e61[_0xb2d2('0x34')][_0xb2d2('0x3e')]);_0x441131[_0xb2d2('0x3f')]=qs[_0xb2d2('0x36')](_[_0xb2d2('0x40')](_0x5e7e61[_0xb2d2('0x34')],_0xe6884a[_0xb2d2('0x36')]),_0x99d760);if(_0x5e7e61[_0xb2d2('0x34')]['filter']){_0x441131['where']=_['merge'](_0x441131[_0xb2d2('0x3f')],{'$or':_[_0xb2d2('0x2e')](_0x99d760,function(_0x2a234f){if(_0x2a234f[_0xb2d2('0x32')]!==_0xb2d2('0x41')){var _0x6dacd6={};_0x6dacd6[_0x2a234f[_0xb2d2('0x2b')]]={'$like':'%'+_0x5e7e61[_0xb2d2('0x34')][_0xb2d2('0x42')]+'%'};return _0x6dacd6;}})});}_0x441131=_[_0xb2d2('0x43')]({},_0x441131,_0x5e7e61[_0xb2d2('0x44')]);var _0x157fcf={'where':_0x441131[_0xb2d2('0x3f')]};return db[_0xb2d2('0x2f')]['count'](_0x157fcf)[_0xb2d2('0x27')](function(_0x2b8834){_0x23c717['count']=_0x2b8834;if(_0x5e7e61['query'][_0xb2d2('0x45')]){_0x441131['include']=[{'all':!![]}];}return db[_0xb2d2('0x2f')][_0xb2d2('0x46')](_0x441131);})[_0xb2d2('0x27')](function(_0x405718){_0x23c717['rows']=_0x405718;return _0x23c717;})[_0xb2d2('0x27')](respondWithFilteredResult(_0x4d5570,_0x441131))[_0xb2d2('0x47')](handleError(_0x4d5570,null));};exports[_0xb2d2('0x48')]=function(_0x55cb0b,_0x1afff7){var _0x219c91={'raw':!![],'where':{'id':_0x55cb0b[_0xb2d2('0x49')]['id']}},_0x41eabd={};_0x41eabd[_0xb2d2('0x33')]=_[_0xb2d2('0x35')](db[_0xb2d2('0x2f')]['rawAttributes']);_0x41eabd['query']=_[_0xb2d2('0x35')](_0x55cb0b[_0xb2d2('0x34')]);_0x41eabd['filters']=_[_0xb2d2('0x37')](_0x41eabd[_0xb2d2('0x33')],_0x41eabd[_0xb2d2('0x34')]);_0x219c91[_0xb2d2('0x3a')]=_['intersection'](_0x41eabd[_0xb2d2('0x33')],qs['fields'](_0x55cb0b[_0xb2d2('0x34')]['fields']));_0x219c91[_0xb2d2('0x3a')]=_0x219c91['attributes']['length']?_0x219c91[_0xb2d2('0x3a')]:_0x41eabd[_0xb2d2('0x33')];if(_0x55cb0b[_0xb2d2('0x34')][_0xb2d2('0x45')]){_0x219c91[_0xb2d2('0x4a')]=[{'all':!![]}];}_0x219c91=_['merge']({},_0x219c91,_0x55cb0b['options']);return db[_0xb2d2('0x2f')]['find'](_0x219c91)['then'](handleEntityNotFound(_0x1afff7,null))[_0xb2d2('0x27')](respondWithResult(_0x1afff7,null))[_0xb2d2('0x47')](handleError(_0x1afff7,null));};exports[_0xb2d2('0x4b')]=function(_0x2aba0e,_0x1f68d6){return db[_0xb2d2('0x2f')][_0xb2d2('0x4b')](_0x2aba0e[_0xb2d2('0x4c')],{})[_0xb2d2('0x27')](respondWithResult(_0x1f68d6,0xc9))[_0xb2d2('0x47')](handleError(_0x1f68d6,null));};exports[_0xb2d2('0x4d')]=function(_0x48b291,_0x5d4109){return db['CmHopperHistory']['describe']()[_0xb2d2('0x27')](respondWithResult(_0x5d4109,null))[_0xb2d2('0x47')](handleError(_0x5d4109,null));};exports['update']=function(_0x26314d,_0x59faa2){if(_0x26314d[_0xb2d2('0x4c')]['uniqueid']){delete _0x26314d[_0xb2d2('0x4c')][_0xb2d2('0x4e')];}return db['CmHopperHistory']['find']({'where':{'uniqueid':_0x26314d['params']['id']}})[_0xb2d2('0x27')](handleEntityNotFound(_0x59faa2,null))['then'](saveUpdates(_0x26314d[_0xb2d2('0x4c')],null))[_0xb2d2('0x27')](respondWithResult(_0x59faa2,null))['catch'](handleError(_0x59faa2,null));};
\ No newline at end of file
+var _0x541d=['squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','CmHopperHistory','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','options','includeAll','include','show','params','length','find','catch','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x27c870,_0x31203d){var _0x5bb39b=function(_0x5e9aa8){while(--_0x5e9aa8){_0x27c870['push'](_0x27c870['shift']());}};_0x5bb39b(++_0x31203d);}(_0x541d,0xd6));var _0xd541=function(_0x13bffa,_0x2c8ea5){_0x13bffa=_0x13bffa-0x0;var _0x2d3b04=_0x541d[_0x13bffa];return _0x2d3b04;};'use strict';var emlformat=require(_0xd541('0x0'));var rimraf=require(_0xd541('0x1'));var zipdir=require(_0xd541('0x2'));var jsonpatch=require(_0xd541('0x3'));var rp=require(_0xd541('0x4'));var moment=require(_0xd541('0x5'));var BPromise=require(_0xd541('0x6'));var Mustache=require(_0xd541('0x7'));var util=require(_0xd541('0x8'));var path=require(_0xd541('0x9'));var sox=require(_0xd541('0xa'));var csv=require(_0xd541('0xb'));var ejs=require(_0xd541('0xc'));var fs=require('fs');var fs_extra=require(_0xd541('0xd'));var _=require('lodash');var squel=require(_0xd541('0xe'));var crypto=require(_0xd541('0xf'));var jsforce=require(_0xd541('0x10'));var deskjs=require(_0xd541('0x11'));var toCsv=require(_0xd541('0xb'));var querystring=require(_0xd541('0x12'));var Papa=require(_0xd541('0x13'));var Redis=require(_0xd541('0x14'));var authService=require(_0xd541('0x15'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xd541('0x16'))('api');var utils=require(_0xd541('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xd541('0x18'));var db=require(_0xd541('0x19'))['db'];function respondWithStatusCode(_0x4b12ba,_0x49208f){_0x49208f=_0x49208f||0xcc;return function(_0x1ff666){if(_0x1ff666){return _0x4b12ba[_0xd541('0x1a')](_0x49208f);}return _0x4b12ba[_0xd541('0x1b')](_0x49208f)[_0xd541('0x1c')]();};}function respondWithResult(_0x57b222,_0x3ab13d){_0x3ab13d=_0x3ab13d||0xc8;return function(_0x569617){if(_0x569617){return _0x57b222['status'](_0x3ab13d)[_0xd541('0x1d')](_0x569617);}};}function respondWithFilteredResult(_0x4a9c17,_0x581ed6){return function(_0x52ced9){if(_0x52ced9){var _0x25342b=typeof _0x581ed6[_0xd541('0x1e')]===_0xd541('0x1f')&&typeof _0x581ed6['limit']===_0xd541('0x1f');var _0x2081d2=_0x52ced9[_0xd541('0x20')];var _0x1f4728=_0x25342b?0x0:_0x581ed6[_0xd541('0x1e')];var _0x5b0328=_0x25342b?_0x52ced9[_0xd541('0x20')]:_0x581ed6['offset']+_0x581ed6['limit'];var _0x19df63;if(_0x5b0328>=_0x2081d2){_0x5b0328=_0x2081d2;_0x19df63=0xc8;}else{_0x19df63=0xce;}_0x4a9c17[_0xd541('0x1b')](_0x19df63);return _0x4a9c17['set'](_0xd541('0x21'),_0x1f4728+'-'+_0x5b0328+'/'+_0x2081d2)[_0xd541('0x1d')](_0x52ced9);}return null;};}function patchUpdates(_0x364318){return function(_0x1205ee){try{jsonpatch[_0xd541('0x22')](_0x1205ee,_0x364318,!![]);}catch(_0x1d9186){return BPromise[_0xd541('0x23')](_0x1d9186);}return _0x1205ee[_0xd541('0x24')]();};}function saveUpdates(_0x2c93e7,_0x4d0b51){return function(_0x2b5e84){if(_0x2b5e84){return _0x2b5e84[_0xd541('0x25')](_0x2c93e7)[_0xd541('0x26')](function(_0x39f92e){return _0x39f92e;});}return null;};}function removeEntity(_0x43915d,_0x16721f){return function(_0x167fb5){if(_0x167fb5){return _0x167fb5[_0xd541('0x27')]()['then'](function(){_0x43915d[_0xd541('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x544ca5,_0x1904ba){return function(_0x1aa779){if(!_0x1aa779){_0x544ca5[_0xd541('0x1a')](0x194);}return _0x1aa779;};}function handleError(_0x2ab400,_0x36736e){_0x36736e=_0x36736e||0x1f4;return function(_0x16425c){logger[_0xd541('0x28')](_0x16425c[_0xd541('0x29')]);if(_0x16425c['name']){delete _0x16425c[_0xd541('0x2a')];}_0x2ab400[_0xd541('0x1b')](_0x36736e)['send'](_0x16425c);};}exports[_0xd541('0x2b')]=function(_0x27a761,_0x48b045){var _0x5e18bc={},_0x1f7c81={},_0x42461b={'count':0x0,'rows':[]};var _0x3f0869=_[_0xd541('0x2c')](db[_0xd541('0x2d')][_0xd541('0x2e')],function(_0x2462b4){return{'name':_0x2462b4['fieldName'],'type':_0x2462b4[_0xd541('0x2f')][_0xd541('0x30')]};});_0x1f7c81[_0xd541('0x31')]=_[_0xd541('0x2c')](_0x3f0869,_0xd541('0x2a'));_0x1f7c81[_0xd541('0x32')]=_[_0xd541('0x33')](_0x27a761['query']);_0x1f7c81[_0xd541('0x34')]=_[_0xd541('0x35')](_0x1f7c81['model'],_0x1f7c81[_0xd541('0x32')]);_0x5e18bc[_0xd541('0x36')]=_[_0xd541('0x35')](_0x1f7c81['model'],qs['fields'](_0x27a761[_0xd541('0x32')][_0xd541('0x37')]));_0x5e18bc[_0xd541('0x36')]=_0x5e18bc['attributes']['length']?_0x5e18bc['attributes']:_0x1f7c81[_0xd541('0x31')];if(!_0x27a761[_0xd541('0x32')][_0xd541('0x38')](_0xd541('0x39'))){_0x5e18bc[_0xd541('0x3a')]=qs[_0xd541('0x3a')](_0x27a761[_0xd541('0x32')][_0xd541('0x3a')]);_0x5e18bc['offset']=qs['offset'](_0x27a761[_0xd541('0x32')][_0xd541('0x1e')]);}_0x5e18bc[_0xd541('0x3b')]=qs[_0xd541('0x3c')](_0x27a761[_0xd541('0x32')][_0xd541('0x3c')]);_0x5e18bc[_0xd541('0x3d')]=qs[_0xd541('0x34')](_['pick'](_0x27a761['query'],_0x1f7c81['filters']),_0x3f0869);if(_0x27a761['query'][_0xd541('0x3e')]){_0x5e18bc[_0xd541('0x3d')]=_[_0xd541('0x3f')](_0x5e18bc[_0xd541('0x3d')],{'$or':_[_0xd541('0x2c')](_0x3f0869,function(_0x16586d){if(_0x16586d[_0xd541('0x2f')]!=='VIRTUAL'){var _0x3bc58c={};_0x3bc58c[_0x16586d['name']]={'$like':'%'+_0x27a761[_0xd541('0x32')][_0xd541('0x3e')]+'%'};return _0x3bc58c;}})});}_0x5e18bc=_[_0xd541('0x3f')]({},_0x5e18bc,_0x27a761[_0xd541('0x40')]);var _0x40c66a={'where':_0x5e18bc[_0xd541('0x3d')]};return db[_0xd541('0x2d')]['count'](_0x40c66a)[_0xd541('0x26')](function(_0x158801){_0x42461b[_0xd541('0x20')]=_0x158801;if(_0x27a761[_0xd541('0x32')][_0xd541('0x41')]){_0x5e18bc[_0xd541('0x42')]=[{'all':!![]}];}return db[_0xd541('0x2d')]['findAll'](_0x5e18bc);})[_0xd541('0x26')](function(_0x124aa7){_0x42461b['rows']=_0x124aa7;return _0x42461b;})[_0xd541('0x26')](respondWithFilteredResult(_0x48b045,_0x5e18bc))['catch'](handleError(_0x48b045,null));};exports[_0xd541('0x43')]=function(_0x454ce3,_0x1bc5a8){var _0x4c8d9e={'raw':!![],'where':{'id':_0x454ce3[_0xd541('0x44')]['id']}},_0x2054c7={};_0x2054c7[_0xd541('0x31')]=_[_0xd541('0x33')](db[_0xd541('0x2d')][_0xd541('0x2e')]);_0x2054c7[_0xd541('0x32')]=_[_0xd541('0x33')](_0x454ce3[_0xd541('0x32')]);_0x2054c7['filters']=_[_0xd541('0x35')](_0x2054c7[_0xd541('0x31')],_0x2054c7[_0xd541('0x32')]);_0x4c8d9e[_0xd541('0x36')]=_['intersection'](_0x2054c7[_0xd541('0x31')],qs[_0xd541('0x37')](_0x454ce3[_0xd541('0x32')][_0xd541('0x37')]));_0x4c8d9e[_0xd541('0x36')]=_0x4c8d9e[_0xd541('0x36')][_0xd541('0x45')]?_0x4c8d9e['attributes']:_0x2054c7[_0xd541('0x31')];if(_0x454ce3['query'][_0xd541('0x41')]){_0x4c8d9e[_0xd541('0x42')]=[{'all':!![]}];}_0x4c8d9e=_[_0xd541('0x3f')]({},_0x4c8d9e,_0x454ce3[_0xd541('0x40')]);return db['CmHopperHistory'][_0xd541('0x46')](_0x4c8d9e)[_0xd541('0x26')](handleEntityNotFound(_0x1bc5a8,null))[_0xd541('0x26')](respondWithResult(_0x1bc5a8,null))[_0xd541('0x47')](handleError(_0x1bc5a8,null));};exports[_0xd541('0x48')]=function(_0x459436,_0x2ad5f6){return db[_0xd541('0x2d')][_0xd541('0x48')](_0x459436[_0xd541('0x49')],{})[_0xd541('0x26')](respondWithResult(_0x2ad5f6,0xc9))[_0xd541('0x47')](handleError(_0x2ad5f6,null));};exports[_0xd541('0x4a')]=function(_0x4da9bf,_0xaf3747){return db[_0xd541('0x2d')][_0xd541('0x4a')]()[_0xd541('0x26')](respondWithResult(_0xaf3747,null))['catch'](handleError(_0xaf3747,null));};exports[_0xd541('0x25')]=function(_0x4604d6,_0x37ff95){if(_0x4604d6[_0xd541('0x49')]['uniqueid']){delete _0x4604d6[_0xd541('0x49')][_0xd541('0x4b')];}return db['CmHopperHistory'][_0xd541('0x46')]({'where':{'uniqueid':_0x4604d6[_0xd541('0x44')]['id']}})['then'](handleEntityNotFound(_0x37ff95,null))['then'](saveUpdates(_0x4604d6[_0xd541('0x49')],null))[_0xd541('0x26')](respondWithResult(_0x37ff95,null))['catch'](handleError(_0x37ff95,null));};
\ No newline at end of file
index da3c105..19fb9b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1ca=['lodash','util','bluebird','request-promise','path','../../config/environment','define','cm_hopper_history','endtime','uniqueid'];(function(_0x2160a9,_0x3cbd9e){var _0xa88cf7=function(_0x51ab6f){while(--_0x51ab6f){_0x2160a9['push'](_0x2160a9['shift']());}};_0xa88cf7(++_0x3cbd9e);}(_0xd1ca,0x140));var _0xad1c=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xd1ca[_0x1caf6a];return _0x1bf493;};'use strict';var _=require(_0xad1c('0x0'));var util=require(_0xad1c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xad1c('0x2'));var rp=require(_0xad1c('0x3'));var fs=require('fs');var path=require(_0xad1c('0x4'));var rimraf=require('rimraf');var config=require(_0xad1c('0x5'));var attributes=require('./cmHopperHistory.attributes');module['exports']=function(_0xd08c6,_0x44ae9c){return _0xd08c6[_0xad1c('0x6')]('CmHopperHistory',attributes,{'tableName':_0xad1c('0x7'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0xad1c('0x8')]},{'name':_0xad1c('0x9'),'fields':[_0xad1c('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x419f=['util','../../config/logger','api','moment','bluebird','path','../../config/environment','./cmHopperHistory.attributes','exports','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x419f,0x176));var _0xf419=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x419f[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0xf419('0x0'));var util=require(_0xf419('0x1'));var logger=require(_0xf419('0x2'))(_0xf419('0x3'));var moment=require(_0xf419('0x4'));var BPromise=require(_0xf419('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf419('0x6'));var rimraf=require('rimraf');var config=require(_0xf419('0x7'));var attributes=require(_0xf419('0x8'));module[_0xf419('0x9')]=function(_0x38f2fa,_0x2d8430){return _0x38f2fa[_0xf419('0xa')](_0xf419('0xb'),attributes,{'tableName':_0xf419('0xc'),'paranoid':![],'indexes':[{'name':_0xf419('0xd'),'fields':['endtime']},{'name':_0xf419('0xe'),'fields':[_0xf419('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index a789647..c25e476 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc40=['outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','campaign','GetCampaignHopperHistory','ivrTotalCallsDays','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','info','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','CmHopperHistory,\x20%s,\x20%s','message','result','catch','CreateCmHopperHistory','CmHopperHistory','body','raw','AvgHandleTime','findAll','options','where','sequelize','COUNT','col','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','AVG','`state`\x20=\x204,\x20`talktime`,\x20null','then','GetVoiceQueueHopperHistory','name','`state`\x20=\x200,\x201,\x20null','outboundNoAnswerCallsDay'];(function(_0x496f20,_0x1d040b){var _0x5eb21b=function(_0x4d2d84){while(--_0x4d2d84){_0x496f20['push'](_0x496f20['shift']());}};_0x5eb21b(++_0x1d040b);}(_0xcc40,0x97));var _0x0cc4=function(_0x2a9f0d,_0x371bb7){_0x2a9f0d=_0x2a9f0d-0x0;var _0x4d2018=_0xcc40[_0x2a9f0d];return _0x4d2018;};'use strict';var _=require(_0x0cc4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0cc4('0x1'));var rs=require(_0x0cc4('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0cc4('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x0cc4('0x4'))(_0x0cc4('0x5'));var config=require('../../config/environment');var jayson=require(_0x0cc4('0x6'));var client=jayson['client'][_0x0cc4('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x58f080,_0x5e1afa,_0x349c6a){return new BPromise(function(_0x2fd087,_0x2f00f3){return client['request'](_0x58f080,_0x349c6a)['then'](function(_0x7e2dbf){logger[_0x0cc4('0x8')]('CmHopperHistory,\x20%s,\x20%s',_0x5e1afa,'request\x20sent');logger[_0x0cc4('0x9')](_0x0cc4('0xa'),_0x5e1afa,_0x0cc4('0xb'),JSON[_0x0cc4('0xc')](_0x7e2dbf));if(_0x7e2dbf[_0x0cc4('0xd')]){if(_0x7e2dbf[_0x0cc4('0xd')][_0x0cc4('0xe')]===0x1f4){logger[_0x0cc4('0xd')](_0x0cc4('0xf'),_0x5e1afa,_0x7e2dbf[_0x0cc4('0xd')][_0x0cc4('0x10')]);return _0x2f00f3(_0x7e2dbf[_0x0cc4('0xd')][_0x0cc4('0x10')]);}logger[_0x0cc4('0xd')](_0x0cc4('0xf'),_0x5e1afa,_0x7e2dbf['error'][_0x0cc4('0x10')]);return _0x2fd087(_0x7e2dbf[_0x0cc4('0xd')][_0x0cc4('0x10')]);}else{logger[_0x0cc4('0x8')](_0x0cc4('0xf'),_0x5e1afa,'request\x20sent');_0x2fd087(_0x7e2dbf[_0x0cc4('0x11')][_0x0cc4('0x10')]);}})[_0x0cc4('0x12')](function(_0x439755){logger['error'](_0x0cc4('0xf'),_0x5e1afa,_0x439755);_0x2f00f3(_0x439755);});});}exports[_0x0cc4('0x13')]=function(_0x3e5a54){var _0x56dec3=this;return new Promise(function(_0xe1b00,_0x1d70a2){return db[_0x0cc4('0x14')]['create'](_0x3e5a54[_0x0cc4('0x15')],{'raw':_0x3e5a54['options']?_0x3e5a54['options'][_0x0cc4('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x20a35f){logger[_0x0cc4('0x8')](_0x0cc4('0x13'),_0x3e5a54);logger[_0x0cc4('0x9')](_0x0cc4('0x13'),_0x3e5a54,JSON[_0x0cc4('0xc')](_0x20a35f));_0xe1b00(_0x20a35f);})[_0x0cc4('0x12')](function(_0x58a9ec){logger[_0x0cc4('0xd')]('CreateCmHopperHistory',_0x58a9ec['message'],_0x3e5a54);_0x1d70a2(_0x56dec3[_0x0cc4('0xd')](0x1f4,_0x58a9ec[_0x0cc4('0x10')]));});});};exports[_0x0cc4('0x17')]=function(_0x5a2a37){var _0x5f3aeb=this;return new Promise(function(_0x37b515,_0x406e05){return db[_0x0cc4('0x14')][_0x0cc4('0x18')]({'raw':_0x5a2a37['options']?_0x5a2a37[_0x0cc4('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x5a2a37[_0x0cc4('0x19')]?_0x5a2a37[_0x0cc4('0x19')][_0x0cc4('0x1a')]||null:null,'attributes':[[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')][_0x0cc4('0x1d')]('id')),'predictiveIntervalTotalCalls'],[db['sequelize']['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x1f')))),_0x0cc4('0x20')],[db[_0x0cc4('0x1b')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x21')))),_0x0cc4('0x22')],[db['sequelize']['fn'](_0x0cc4('0x1c'),db['sequelize']['fn']('IF',db['sequelize'][_0x0cc4('0x1e')]('`state`\x20=\x2011,\x201,\x20null'))),_0x0cc4('0x23')],[db[_0x0cc4('0x1b')]['fn']('AVG',db['sequelize']['fn']('IF',db[_0x0cc4('0x1b')]['literal']('`state`\x20=\x204,\x20`holdtime`,\x20null'))),_0x0cc4('0x24')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x25'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x26')))),'predictiveIntervalAvgTalktime']]})[_0x0cc4('0x27')](function(_0x328dab){logger[_0x0cc4('0x8')](_0x0cc4('0x17'),_0x5a2a37);logger[_0x0cc4('0x9')](_0x0cc4('0x17'),_0x5a2a37,JSON[_0x0cc4('0xc')](_0x328dab));_0x37b515(_0x328dab);})[_0x0cc4('0x12')](function(_0x49e163){logger[_0x0cc4('0xd')](_0x0cc4('0x17'),_0x49e163[_0x0cc4('0x10')],_0x5a2a37);_0x406e05(_0x5f3aeb[_0x0cc4('0xd')](0x1f4,_0x49e163['message']));});});};exports[_0x0cc4('0x28')]=function(_0x4ebd23){var _0x5663cd=this;return new Promise(function(_0x96c80,_0x1cbc4f){return db[_0x0cc4('0x14')][_0x0cc4('0x18')]({'raw':_0x4ebd23[_0x0cc4('0x19')]?_0x4ebd23[_0x0cc4('0x19')][_0x0cc4('0x16')]===undefined?!![]:![]:!![],'where':_0x4ebd23[_0x0cc4('0x19')]?_0x4ebd23[_0x0cc4('0x19')][_0x0cc4('0x1a')]||null:null,'attributes':[['campaign',_0x0cc4('0x29')],[db[_0x0cc4('0x1b')]['fn']('COUNT',db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x2a')))),'outboundNoSuchCallsDay'],[db[_0x0cc4('0x1b')]['fn']('COUNT',db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')]('`state`\x20=\x203,\x201,\x20null'))),_0x0cc4('0x2b')],[db[_0x0cc4('0x1b')]['fn']('COUNT',db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x1f')))),_0x0cc4('0x2c')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')]['literal'](_0x0cc4('0x2d')))),_0x0cc4('0x2e')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db['sequelize']['literal'](_0x0cc4('0x2f')))),_0x0cc4('0x30')],[db[_0x0cc4('0x1b')]['fn']('COUNT',db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')]['literal'](_0x0cc4('0x31')))),'outboundDropCallsDayTimeout'],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db['sequelize']['fn']('IF',db[_0x0cc4('0x1b')]['literal'](_0x0cc4('0x32')))),_0x0cc4('0x33')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x34')))),'outboundUnknownCallsDay'],[db['sequelize']['fn']('COUNT',db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')]('`state`\x20=\x2013,\x201,\x20null'))),_0x0cc4('0x35')],[db[_0x0cc4('0x1b')]['fn']('COUNT',db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x36')))),_0x0cc4('0x37')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x38')))),_0x0cc4('0x39')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')]['literal'](_0x0cc4('0x3a')))),_0x0cc4('0x3b')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2020,\x201,\x20null'))),_0x0cc4('0x39')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')]['literal'](_0x0cc4('0x3c')))),_0x0cc4('0x3d')]],'group':[_0x0cc4('0x3e')]})[_0x0cc4('0x27')](function(_0x4be10b){logger[_0x0cc4('0x8')](_0x0cc4('0x28'),_0x4ebd23);logger[_0x0cc4('0x9')]('GetVoiceQueueHopperHistory',_0x4ebd23,JSON[_0x0cc4('0xc')](_0x4be10b));_0x96c80(_0x4be10b);})['catch'](function(_0x118167){logger[_0x0cc4('0xd')]('GetVoiceQueueHopperHistory',_0x118167[_0x0cc4('0x10')],_0x4ebd23);_0x1cbc4f(_0x5663cd[_0x0cc4('0xd')](0x1f4,_0x118167[_0x0cc4('0x10')]));});});};exports[_0x0cc4('0x3f')]=function(_0xb2ca3b){var _0x46397a=this;return new Promise(function(_0x35f09e,_0x148673){return db[_0x0cc4('0x14')][_0x0cc4('0x18')]({'raw':_0xb2ca3b['options']?_0xb2ca3b[_0x0cc4('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0xb2ca3b[_0x0cc4('0x19')]?_0xb2ca3b[_0x0cc4('0x19')]['where']||null:null,'attributes':[[_0x0cc4('0x3e'),_0x0cc4('0x29')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')][_0x0cc4('0x1d')]('id')),_0x0cc4('0x40')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')]['literal'](_0x0cc4('0x1f')))),'ivrAnswerCallsDay']],'group':['campaign']})[_0x0cc4('0x27')](function(_0x3b2251){logger[_0x0cc4('0x8')]('GetCampaignHopperHistory',_0xb2ca3b);logger[_0x0cc4('0x9')]('GetCampaignHopperHistory',_0xb2ca3b,JSON[_0x0cc4('0xc')](_0x3b2251));_0x35f09e(_0x3b2251);})['catch'](function(_0x5e5632){logger[_0x0cc4('0xd')](_0x0cc4('0x3f'),_0x5e5632[_0x0cc4('0x10')],_0xb2ca3b);_0x148673(_0x46397a['error'](0x1f4,_0x5e5632[_0x0cc4('0x10')]));});});};
\ No newline at end of file
+var _0xef8e=['outboundOriginateFailureCallsDay','`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','GetCampaignHopperHistory','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','then','info','CmHopperHistory,\x20%s,\x20%s','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','CmHopperHistory','body','options','raw','CreateCmHopperHistory','catch','AvgHandleTime','where','sequelize','col','COUNT','predictiveIntervalAnsweredCalls','literal','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','stringify','GetVoiceQueueHopperHistory','findAll','campaign','name','outboundNoAnswerCallsDay','`state`\x20=\x204,\x201,\x20null','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null'];(function(_0xf1783d,_0x5ef027){var _0x360504=function(_0x4cd58e){while(--_0x4cd58e){_0xf1783d['push'](_0xf1783d['shift']());}};_0x360504(++_0x5ef027);}(_0xef8e,0x8c));var _0xeef8=function(_0x1058cb,_0x114172){_0x1058cb=_0x1058cb-0x0;var _0x1a9482=_0xef8e[_0x1058cb];return _0x1a9482;};'use strict';var _=require('lodash');var util=require(_0xeef8('0x0'));var moment=require(_0xeef8('0x1'));var BPromise=require(_0xeef8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeef8('0x3'));var db=require(_0xeef8('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xeef8('0x5'));var config=require(_0xeef8('0x6'));var jayson=require(_0xeef8('0x7'));var client=jayson[_0xeef8('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x24c27b,_0x4bf394,_0x18a24e){return new BPromise(function(_0x43a201,_0x20b9a4){return client[_0xeef8('0x9')](_0x24c27b,_0x18a24e)[_0xeef8('0xa')](function(_0x29811d){logger[_0xeef8('0xb')](_0xeef8('0xc'),_0x4bf394,'request\x20sent');logger[_0xeef8('0xd')](_0xeef8('0xe'),_0x4bf394,_0xeef8('0xf'),JSON['stringify'](_0x29811d));if(_0x29811d[_0xeef8('0x10')]){if(_0x29811d[_0xeef8('0x10')][_0xeef8('0x11')]===0x1f4){logger[_0xeef8('0x10')]('CmHopperHistory,\x20%s,\x20%s',_0x4bf394,_0x29811d['error']['message']);return _0x20b9a4(_0x29811d[_0xeef8('0x10')][_0xeef8('0x12')]);}logger[_0xeef8('0x10')](_0xeef8('0xc'),_0x4bf394,_0x29811d[_0xeef8('0x10')][_0xeef8('0x12')]);return _0x43a201(_0x29811d[_0xeef8('0x10')][_0xeef8('0x12')]);}else{logger[_0xeef8('0xb')](_0xeef8('0xc'),_0x4bf394,_0xeef8('0xf'));_0x43a201(_0x29811d[_0xeef8('0x13')][_0xeef8('0x12')]);}})['catch'](function(_0x52d7e0){logger[_0xeef8('0x10')](_0xeef8('0xc'),_0x4bf394,_0x52d7e0);_0x20b9a4(_0x52d7e0);});});}exports['CreateCmHopperHistory']=function(_0x3c6492){var _0x5885f7=this;return new Promise(function(_0x516668,_0x2459d7){return db[_0xeef8('0x14')]['create'](_0x3c6492[_0xeef8('0x15')],{'raw':_0x3c6492[_0xeef8('0x16')]?_0x3c6492['options'][_0xeef8('0x17')]===undefined?!![]:![]:!![]})[_0xeef8('0xa')](function(_0x40d66a){logger[_0xeef8('0xb')](_0xeef8('0x18'),_0x3c6492);logger[_0xeef8('0xd')](_0xeef8('0x18'),_0x3c6492,JSON['stringify'](_0x40d66a));_0x516668(_0x40d66a);})[_0xeef8('0x19')](function(_0xbc915e){logger['error'](_0xeef8('0x18'),_0xbc915e['message'],_0x3c6492);_0x2459d7(_0x5885f7[_0xeef8('0x10')](0x1f4,_0xbc915e[_0xeef8('0x12')]));});});};exports[_0xeef8('0x1a')]=function(_0x2095e4){var _0x49d18e=this;return new Promise(function(_0x1208a8,_0x6ed405){return db[_0xeef8('0x14')]['findAll']({'raw':_0x2095e4[_0xeef8('0x16')]?_0x2095e4[_0xeef8('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x2095e4[_0xeef8('0x16')]?_0x2095e4[_0xeef8('0x16')][_0xeef8('0x1b')]||null:null,'attributes':[[db[_0xeef8('0x1c')]['fn']('COUNT',db[_0xeef8('0x1c')][_0xeef8('0x1d')]('id')),'predictiveIntervalTotalCalls'],[db['sequelize']['fn'](_0xeef8('0x1e'),db[_0xeef8('0x1c')]['fn']('IF',db[_0xeef8('0x1c')]['literal']('`state`\x20=\x204,\x201,\x20null'))),_0xeef8('0x1f')],[db['sequelize']['fn'](_0xeef8('0x1e'),db[_0xeef8('0x1c')]['fn']('IF',db[_0xeef8('0x1c')][_0xeef8('0x20')]('`state`\x20=\x2010,\x201,\x20null'))),'predictiveIntervalDroppedCallsTimeout'],[db['sequelize']['fn'](_0xeef8('0x1e'),db[_0xeef8('0x1c')]['fn']('IF',db[_0xeef8('0x1c')][_0xeef8('0x20')]('`state`\x20=\x2011,\x201,\x20null'))),_0xeef8('0x21')],[db[_0xeef8('0x1c')]['fn'](_0xeef8('0x22'),db['sequelize']['fn']('IF',db[_0xeef8('0x1c')]['literal'](_0xeef8('0x23')))),_0xeef8('0x24')],[db[_0xeef8('0x1c')]['fn'](_0xeef8('0x22'),db[_0xeef8('0x1c')]['fn']('IF',db[_0xeef8('0x1c')][_0xeef8('0x20')](_0xeef8('0x25')))),_0xeef8('0x26')]]})[_0xeef8('0xa')](function(_0x489612){logger[_0xeef8('0xb')](_0xeef8('0x1a'),_0x2095e4);logger[_0xeef8('0xd')](_0xeef8('0x1a'),_0x2095e4,JSON[_0xeef8('0x27')](_0x489612));_0x1208a8(_0x489612);})[_0xeef8('0x19')](function(_0x46d5f8){logger[_0xeef8('0x10')]('AvgHandleTime',_0x46d5f8[_0xeef8('0x12')],_0x2095e4);_0x6ed405(_0x49d18e[_0xeef8('0x10')](0x1f4,_0x46d5f8[_0xeef8('0x12')]));});});};exports[_0xeef8('0x28')]=function(_0x25a24c){var _0x5f3517=this;return new Promise(function(_0x3ce883,_0x419adf){return db[_0xeef8('0x14')][_0xeef8('0x29')]({'raw':_0x25a24c[_0xeef8('0x16')]?_0x25a24c[_0xeef8('0x16')][_0xeef8('0x17')]===undefined?!![]:![]:!![],'where':_0x25a24c[_0xeef8('0x16')]?_0x25a24c['options'][_0xeef8('0x1b')]||null:null,'attributes':[[_0xeef8('0x2a'),_0xeef8('0x2b')],[db[_0xeef8('0x1c')]['fn']('COUNT',db[_0xeef8('0x1c')]['fn']('IF',db[_0xeef8('0x1c')][_0xeef8('0x20')]('`state`\x20=\x200,\x201,\x20null'))),'outboundNoSuchCallsDay'],[db['sequelize']['fn'](_0xeef8('0x1e'),db[_0xeef8('0x1c')]['fn']('IF',db[_0xeef8('0x1c')]['literal']('`state`\x20=\x203,\x201,\x20null'))),_0xeef8('0x2c')],[db['sequelize']['fn'](_0xeef8('0x1e'),db['sequelize']['fn']('IF',db[_0xeef8('0x1c')][_0xeef8('0x20')](_0xeef8('0x2d')))),_0xeef8('0x2e')],[db[_0xeef8('0x1c')]['fn'](_0xeef8('0x1e'),db[_0xeef8('0x1c')]['fn']('IF',db[_0xeef8('0x1c')][_0xeef8('0x20')](_0xeef8('0x2f')))),_0xeef8('0x30')],[db[_0xeef8('0x1c')]['fn'](_0xeef8('0x1e'),db[_0xeef8('0x1c')]['fn']('IF',db['sequelize'][_0xeef8('0x20')](_0xeef8('0x31')))),_0xeef8('0x32')],[db['sequelize']['fn']('COUNT',db[_0xeef8('0x1c')]['fn']('IF',db['sequelize'][_0xeef8('0x20')](_0xeef8('0x33')))),'outboundDropCallsDayTimeout'],[db[_0xeef8('0x1c')]['fn'](_0xeef8('0x1e'),db[_0xeef8('0x1c')]['fn']('IF',db[_0xeef8('0x1c')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xeef8('0x34')],[db[_0xeef8('0x1c')]['fn']('COUNT',db[_0xeef8('0x1c')]['fn']('IF',db[_0xeef8('0x1c')][_0xeef8('0x20')](_0xeef8('0x35')))),_0xeef8('0x36')],[db[_0xeef8('0x1c')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xeef8('0x1c')][_0xeef8('0x20')](_0xeef8('0x37')))),_0xeef8('0x38')],[db[_0xeef8('0x1c')]['fn'](_0xeef8('0x1e'),db[_0xeef8('0x1c')]['fn']('IF',db['sequelize'][_0xeef8('0x20')](_0xeef8('0x39')))),_0xeef8('0x3a')],[db[_0xeef8('0x1c')]['fn'](_0xeef8('0x1e'),db['sequelize']['fn']('IF',db[_0xeef8('0x1c')][_0xeef8('0x20')](_0xeef8('0x3b')))),_0xeef8('0x3c')],[db['sequelize']['fn'](_0xeef8('0x1e'),db[_0xeef8('0x1c')]['fn']('IF',db[_0xeef8('0x1c')][_0xeef8('0x20')](_0xeef8('0x3d')))),_0xeef8('0x3e')],[db[_0xeef8('0x1c')]['fn'](_0xeef8('0x1e'),db['sequelize']['fn']('IF',db[_0xeef8('0x1c')][_0xeef8('0x20')](_0xeef8('0x3f')))),_0xeef8('0x3c')],[db['sequelize']['fn']('COUNT',db[_0xeef8('0x1c')]['fn']('IF',db[_0xeef8('0x1c')][_0xeef8('0x20')](_0xeef8('0x40')))),'outboundReCallsDay']],'group':[_0xeef8('0x2a')]})[_0xeef8('0xa')](function(_0xf59ddc){logger[_0xeef8('0xb')]('GetVoiceQueueHopperHistory',_0x25a24c);logger[_0xeef8('0xd')]('GetVoiceQueueHopperHistory',_0x25a24c,JSON[_0xeef8('0x27')](_0xf59ddc));_0x3ce883(_0xf59ddc);})[_0xeef8('0x19')](function(_0x1f6d65){logger[_0xeef8('0x10')](_0xeef8('0x28'),_0x1f6d65['message'],_0x25a24c);_0x419adf(_0x5f3517[_0xeef8('0x10')](0x1f4,_0x1f6d65[_0xeef8('0x12')]));});});};exports['GetCampaignHopperHistory']=function(_0x5d3b9e){var _0xbeac2c=this;return new Promise(function(_0x256a12,_0x17f482){return db[_0xeef8('0x14')][_0xeef8('0x29')]({'raw':_0x5d3b9e[_0xeef8('0x16')]?_0x5d3b9e[_0xeef8('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x5d3b9e[_0xeef8('0x16')]?_0x5d3b9e['options'][_0xeef8('0x1b')]||null:null,'attributes':[[_0xeef8('0x2a'),_0xeef8('0x2b')],[db[_0xeef8('0x1c')]['fn']('COUNT',db[_0xeef8('0x1c')]['col']('id')),'ivrTotalCallsDays'],[db[_0xeef8('0x1c')]['fn']('COUNT',db[_0xeef8('0x1c')]['fn']('IF',db[_0xeef8('0x1c')]['literal'](_0xeef8('0x2d')))),'ivrAnswerCallsDay']],'group':['campaign']})['then'](function(_0x4c50fa){logger[_0xeef8('0xb')]('GetCampaignHopperHistory',_0x5d3b9e);logger['debug']('GetCampaignHopperHistory',_0x5d3b9e,JSON['stringify'](_0x4c50fa));_0x256a12(_0x4c50fa);})[_0xeef8('0x19')](function(_0x34dd46){logger[_0xeef8('0x10')](_0xeef8('0x41'),_0x34dd46['message'],_0x5d3b9e);_0x17f482(_0xbeac2c[_0xeef8('0x10')](0x1f4,_0x34dd46[_0xeef8('0x12')]));});});};
\ No newline at end of file
index 047580d..f252d19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca54=['put','/:id','update','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','show','post','create'];(function(_0x197d72,_0x513bc9){var _0x353af7=function(_0x1db980){while(--_0x1db980){_0x197d72['push'](_0x197d72['shift']());}};_0x353af7(++_0x513bc9);}(_0xca54,0xf4));var _0x4ca5=function(_0x273718,_0x5a351d){_0x273718=_0x273718-0x0;var _0x24396a=_0xca54[_0x273718];return _0x24396a;};'use strict';var multer=require(_0x4ca5('0x0'));var util=require(_0x4ca5('0x1'));var path=require('path');var timeout=require(_0x4ca5('0x2'));var express=require('express');var router=express[_0x4ca5('0x3')]();var fs_extra=require(_0x4ca5('0x4'));var auth=require(_0x4ca5('0x5'));var interaction=require(_0x4ca5('0x6'));var config=require(_0x4ca5('0x7'));var controller=require(_0x4ca5('0x8'));router[_0x4ca5('0x9')]('/',auth[_0x4ca5('0xa')](),controller[_0x4ca5('0xb')]);router['get'](_0x4ca5('0xc'),auth[_0x4ca5('0xa')](),controller['describe']);router[_0x4ca5('0x9')]('/:id',auth[_0x4ca5('0xa')](),controller[_0x4ca5('0xd')]);router[_0x4ca5('0xe')]('/',auth['isAuthenticated'](),controller[_0x4ca5('0xf')]);router[_0x4ca5('0x10')](_0x4ca5('0x11'),auth[_0x4ca5('0xa')](),controller[_0x4ca5('0x12')]);module[_0x4ca5('0x13')]=router;
\ No newline at end of file
+var _0x13c3=['isAuthenticated','/describe','describe','/:id','post','put','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x13c3,0x127));var _0x313c=function(_0x1e33dd,_0x2c932){_0x1e33dd=_0x1e33dd-0x0;var _0x170a7a=_0x13c3[_0x1e33dd];return _0x170a7a;};'use strict';var multer=require(_0x313c('0x0'));var util=require('util');var path=require(_0x313c('0x1'));var timeout=require(_0x313c('0x2'));var express=require(_0x313c('0x3'));var router=express[_0x313c('0x4')]();var fs_extra=require(_0x313c('0x5'));var auth=require(_0x313c('0x6'));var interaction=require(_0x313c('0x7'));var config=require(_0x313c('0x8'));var controller=require(_0x313c('0x9'));router[_0x313c('0xa')]('/',auth[_0x313c('0xb')](),controller['index']);router[_0x313c('0xa')](_0x313c('0xc'),auth['isAuthenticated'](),controller[_0x313c('0xd')]);router['get'](_0x313c('0xe'),auth[_0x313c('0xb')](),controller['show']);router[_0x313c('0xf')]('/',auth[_0x313c('0xb')](),controller['create']);router[_0x313c('0x10')](_0x313c('0xe'),auth[_0x313c('0xb')](),controller['update']);module[_0x313c('0x11')]=router;
\ No newline at end of file
index cf88f66..18adde6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['STRING','name','sequelize','exports'];(function(_0x2a0e66,_0x132cd2){var _0x5e78a8=function(_0x21540a){while(--_0x21540a){_0x2a0e66['push'](_0x2a0e66['shift']());}};_0x5e78a8(++_0x132cd2);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x17784a,_0x42fe44){_0x17784a=_0x17784a-0x0;var _0x41aded=_0xf3cd[_0x17784a];return _0x41aded;};'use strict';var Sequelize=require(_0xdf3c('0x0'));module[_0xdf3c('0x1')]={'name':{'type':Sequelize[_0xdf3c('0x2')],'unique':_0xdf3c('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xdf3c('0x2')]},'dialPrefix':{'type':Sequelize[_0xdf3c('0x2')]}};
\ No newline at end of file
+var _0x1a28=['STRING','name','sequelize','exports'];(function(_0x161f65,_0xd9bf88){var _0x4ee1c4=function(_0x3dafae){while(--_0x3dafae){_0x161f65['push'](_0x161f65['shift']());}};_0x4ee1c4(++_0xd9bf88);}(_0x1a28,0x10e));var _0x81a2=function(_0x516ffb,_0x5b5b42){_0x516ffb=_0x516ffb-0x0;var _0x319667=_0x1a28[_0x516ffb];return _0x319667;};'use strict';var Sequelize=require(_0x81a2('0x0'));module[_0x81a2('0x1')]={'name':{'type':Sequelize[_0x81a2('0x2')],'unique':_0x81a2('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x81a2('0x2')]},'dialPrefix':{'type':Sequelize[_0x81a2('0x2')]}};
\ No newline at end of file
index 8901edf..c1ac03b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc844=['cf_%s','getCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','zip-dir','request-promise','moment','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','socket.io-emitter','./cmList.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','end','stack','name','send','CmList','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','find','create','body','get','role','user','UserProfileSection','autoAssociation','UserProfileResource','error','update','describe','addDisposition','ListId','Disposition','getDispositions','findOne','hasOwnProperty','rows','removeDispositions','addContacts','isArray','tags','join','push','each','omit','ids','success','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','getContactsCsv','CmContact','raw','isEmpty','now','/tmp/list_%d_%s.csv','setHeader','attachment;\x20filename=','list_%d_%s.csv','download','addCustomField','transaction','addCustomFields','Sequelize','TEXT','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface'];(function(_0x3b3cb6,_0x4c1c96){var _0x3c210c=function(_0x41d865){while(--_0x41d865){_0x3b3cb6['push'](_0x3b3cb6['shift']());}};_0x3c210c(++_0x4c1c96);}(_0xc844,0x97));var _0x4c84=function(_0x43f313,_0x583b61){_0x43f313=_0x43f313-0x0;var _0x3a27ac=_0xc844[_0x43f313];return _0x3a27ac;};'use strict';var emlformat=require(_0x4c84('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4c84('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4c84('0x2'));var moment=require(_0x4c84('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x4c84('0x4'));var sox=require('sox');var csv=require(_0x4c84('0x5'));var ejs=require(_0x4c84('0x6'));var fs=require('fs');var fs_extra=require(_0x4c84('0x7'));var _=require('lodash');var squel=require(_0x4c84('0x8'));var crypto=require(_0x4c84('0x9'));var jsforce=require(_0x4c84('0xa'));var deskjs=require(_0x4c84('0xb'));var toCsv=require(_0x4c84('0x5'));var querystring=require(_0x4c84('0xc'));var Papa=require(_0x4c84('0xd'));var Redis=require(_0x4c84('0xe'));var authService=require(_0x4c84('0xf'));var qs=require(_0x4c84('0x10'));var as=require(_0x4c84('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4c84('0x12'))('api');var utils=require(_0x4c84('0x13'));var config=require(_0x4c84('0x14'));var licenseUtil=require(_0x4c84('0x15'));var db=require('../../mysqldb')['db'];config[_0x4c84('0x16')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x4c84('0x17'))(new Redis(config[_0x4c84('0x16')]));require(_0x4c84('0x18'))[_0x4c84('0x19')](socket);function respondWithStatusCode(_0x4704d5,_0x5d731f){_0x5d731f=_0x5d731f||0xcc;return function(_0x2690f4){if(_0x2690f4){return _0x4704d5[_0x4c84('0x1a')](_0x5d731f);}return _0x4704d5[_0x4c84('0x1b')](_0x5d731f)['end']();};}function respondWithResult(_0x831092,_0x4724d4){_0x4724d4=_0x4724d4||0xc8;return function(_0x147f1a){if(_0x147f1a){return _0x831092[_0x4c84('0x1b')](_0x4724d4)[_0x4c84('0x1c')](_0x147f1a);}};}function respondWithFilteredResult(_0xbca5b0,_0x5970f0){return function(_0x286bcc){if(_0x286bcc){var _0x5e751a=typeof _0x5970f0[_0x4c84('0x1d')]===_0x4c84('0x1e')&&typeof _0x5970f0[_0x4c84('0x1f')]===_0x4c84('0x1e');var _0x537a23=_0x286bcc['count'];var _0x4be20e=_0x5e751a?0x0:_0x5970f0['offset'];var _0xcbb62a=_0x5e751a?_0x286bcc[_0x4c84('0x20')]:_0x5970f0[_0x4c84('0x1d')]+_0x5970f0[_0x4c84('0x1f')];var _0xb3f0f5;if(_0xcbb62a>=_0x537a23){_0xcbb62a=_0x537a23;_0xb3f0f5=0xc8;}else{_0xb3f0f5=0xce;}_0xbca5b0[_0x4c84('0x1b')](_0xb3f0f5);return _0xbca5b0['set'](_0x4c84('0x21'),_0x4be20e+'-'+_0xcbb62a+'/'+_0x537a23)[_0x4c84('0x1c')](_0x286bcc);}return null;};}function patchUpdates(_0x1e0921){return function(_0x4fbf17){try{jsonpatch[_0x4c84('0x22')](_0x4fbf17,_0x1e0921,!![]);}catch(_0x585959){return BPromise['reject'](_0x585959);}return _0x4fbf17[_0x4c84('0x23')]();};}function saveUpdates(_0x3ca40d,_0x19cfbd){return function(_0x29853c){if(_0x29853c){return _0x29853c['update'](_0x3ca40d)[_0x4c84('0x24')](function(_0x10e59f){return _0x10e59f;});}return null;};}function removeEntity(_0x28e607,_0x110ef8){return function(_0x2c8f72){if(_0x2c8f72){return _0x2c8f72[_0x4c84('0x25')]()[_0x4c84('0x24')](function(){var _0x286bb7=_0x2c8f72['get']({'plain':!![]});var _0x8a76c='Lists';return db['UserProfileResource'][_0x4c84('0x25')]({'where':{'type':_0x8a76c,'resourceId':_0x286bb7['id']}})['then'](function(){return _0x2c8f72;});})[_0x4c84('0x24')](function(){_0x28e607[_0x4c84('0x1b')](0xcc)[_0x4c84('0x26')]();});}};}function handleEntityNotFound(_0x5b5fcd,_0x322d6c){return function(_0x1095d8){if(!_0x1095d8){_0x5b5fcd[_0x4c84('0x1a')](0x194);}return _0x1095d8;};}function handleError(_0x45c5fa,_0x5d15a3){_0x5d15a3=_0x5d15a3||0x1f4;return function(_0x1880c6){logger['error'](_0x1880c6[_0x4c84('0x27')]);if(_0x1880c6[_0x4c84('0x28')]){delete _0x1880c6[_0x4c84('0x28')];}_0x45c5fa['status'](_0x5d15a3)[_0x4c84('0x29')](_0x1880c6);};}exports['index']=function(_0x3bdefe,_0xc41cdb){var _0x3bc83a={},_0x297d43={},_0x5c2b2b={'count':0x0,'rows':[]};var _0x20176c=_['map'](db[_0x4c84('0x2a')][_0x4c84('0x2b')],function(_0x2a8d97){return{'name':_0x2a8d97[_0x4c84('0x2c')],'type':_0x2a8d97[_0x4c84('0x2d')]['key']};});_0x297d43[_0x4c84('0x2e')]=_[_0x4c84('0x2f')](_0x20176c,_0x4c84('0x28'));_0x297d43[_0x4c84('0x30')]=_[_0x4c84('0x31')](_0x3bdefe['query']);_0x297d43[_0x4c84('0x32')]=_[_0x4c84('0x33')](_0x297d43[_0x4c84('0x2e')],_0x297d43[_0x4c84('0x30')]);_0x3bc83a[_0x4c84('0x34')]=_[_0x4c84('0x33')](_0x297d43[_0x4c84('0x2e')],qs['fields'](_0x3bdefe[_0x4c84('0x30')][_0x4c84('0x35')]));_0x3bc83a['attributes']=_0x3bc83a[_0x4c84('0x34')][_0x4c84('0x36')]?_0x3bc83a[_0x4c84('0x34')]:_0x297d43['model'];if(!_0x3bdefe[_0x4c84('0x30')]['hasOwnProperty'](_0x4c84('0x37'))){_0x3bc83a[_0x4c84('0x1f')]=qs[_0x4c84('0x1f')](_0x3bdefe['query'][_0x4c84('0x1f')]);_0x3bc83a[_0x4c84('0x1d')]=qs[_0x4c84('0x1d')](_0x3bdefe[_0x4c84('0x30')][_0x4c84('0x1d')]);}_0x3bc83a[_0x4c84('0x38')]=qs[_0x4c84('0x39')](_0x3bdefe[_0x4c84('0x30')][_0x4c84('0x39')]);_0x3bc83a[_0x4c84('0x3a')]=qs[_0x4c84('0x32')](_[_0x4c84('0x3b')](_0x3bdefe['query'],_0x297d43[_0x4c84('0x32')]),_0x20176c);if(_0x3bdefe[_0x4c84('0x30')][_0x4c84('0x3c')]){_0x3bc83a[_0x4c84('0x3a')]=_['merge'](_0x3bc83a[_0x4c84('0x3a')],{'$or':_['map'](_0x20176c,function(_0x2bfe0a){if(_0x2bfe0a[_0x4c84('0x2d')]!=='VIRTUAL'){var _0x1fd757={};_0x1fd757[_0x2bfe0a[_0x4c84('0x28')]]={'$like':'%'+_0x3bdefe[_0x4c84('0x30')][_0x4c84('0x3c')]+'%'};return _0x1fd757;}})});}_0x3bc83a=_[_0x4c84('0x3d')]({},_0x3bc83a,_0x3bdefe[_0x4c84('0x3e')]);var _0x4b90e9={'where':_0x3bc83a[_0x4c84('0x3a')]};return db[_0x4c84('0x2a')][_0x4c84('0x20')](_0x4b90e9)[_0x4c84('0x24')](function(_0x3f30ce){_0x5c2b2b[_0x4c84('0x20')]=_0x3f30ce;if(_0x3bdefe['query'][_0x4c84('0x3f')]){_0x3bc83a[_0x4c84('0x40')]=[{'all':!![]}];}return db['CmList'][_0x4c84('0x41')](_0x3bc83a);})[_0x4c84('0x24')](function(_0x3c2561){_0x5c2b2b['rows']=_0x3c2561;return _0x5c2b2b;})['then'](respondWithFilteredResult(_0xc41cdb,_0x3bc83a))[_0x4c84('0x42')](handleError(_0xc41cdb,null));};exports[_0x4c84('0x43')]=function(_0x12e56a,_0x434a1){var _0x1e4cc2={'raw':![],'where':{'id':_0x12e56a[_0x4c84('0x44')]['id']}},_0x446371={};_0x446371[_0x4c84('0x2e')]=_[_0x4c84('0x31')](db[_0x4c84('0x2a')][_0x4c84('0x2b')]);_0x446371[_0x4c84('0x30')]=_[_0x4c84('0x31')](_0x12e56a[_0x4c84('0x30')]);_0x446371['filters']=_[_0x4c84('0x33')](_0x446371[_0x4c84('0x2e')],_0x446371[_0x4c84('0x30')]);_0x1e4cc2[_0x4c84('0x34')]=_[_0x4c84('0x33')](_0x446371[_0x4c84('0x2e')],qs[_0x4c84('0x35')](_0x12e56a['query'][_0x4c84('0x35')]));_0x1e4cc2[_0x4c84('0x34')]=_0x1e4cc2[_0x4c84('0x34')][_0x4c84('0x36')]?_0x1e4cc2[_0x4c84('0x34')]:_0x446371[_0x4c84('0x2e')];if(_0x12e56a['query'][_0x4c84('0x3f')]){_0x1e4cc2['include']=[{'all':!![]}];}_0x1e4cc2=_[_0x4c84('0x3d')]({},_0x1e4cc2,_0x12e56a['options']);return db[_0x4c84('0x2a')][_0x4c84('0x45')](_0x1e4cc2)[_0x4c84('0x24')](handleEntityNotFound(_0x434a1,null))[_0x4c84('0x24')](respondWithResult(_0x434a1,null))['catch'](handleError(_0x434a1,null));};exports[_0x4c84('0x46')]=function(_0x9c63b3,_0x3ac345){return db[_0x4c84('0x2a')]['create'](_0x9c63b3[_0x4c84('0x47')],{})['then'](function(_0x5b9052){var _0xa41948=_0x9c63b3['user'][_0x4c84('0x48')]({'plain':!![]});if(!_0xa41948)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xa41948[_0x4c84('0x49')]===_0x4c84('0x4a')){var _0x4533b0=_0x5b9052['get']({'plain':!![]});var _0x2f57b3='Lists';return db[_0x4c84('0x4b')][_0x4c84('0x45')]({'where':{'name':_0x2f57b3,'userProfileId':_0xa41948['userProfileId']},'raw':!![]})[_0x4c84('0x24')](function(_0x3a038d){if(_0x3a038d&&_0x3a038d[_0x4c84('0x4c')]===0x0){return db[_0x4c84('0x4d')]['create']({'name':_0x4533b0['name'],'resourceId':_0x4533b0['id'],'type':_0x3a038d[_0x4c84('0x28')],'sectionId':_0x3a038d['id']},{})[_0x4c84('0x24')](function(){return _0x5b9052;});}else{return _0x5b9052;}})['catch'](function(_0x228d8f){logger[_0x4c84('0x4e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x228d8f);throw _0x228d8f;});}return _0x5b9052;})[_0x4c84('0x24')](respondWithResult(_0x3ac345,0xc9))[_0x4c84('0x42')](handleError(_0x3ac345,null));};exports[_0x4c84('0x4f')]=function(_0x14e243,_0x13d3b6){if(_0x14e243['body']['id']){delete _0x14e243['body']['id'];}return db[_0x4c84('0x2a')][_0x4c84('0x45')]({'where':{'id':_0x14e243['params']['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x13d3b6,null))[_0x4c84('0x24')](saveUpdates(_0x14e243['body'],null))[_0x4c84('0x24')](respondWithResult(_0x13d3b6,null))['catch'](handleError(_0x13d3b6,null));};exports[_0x4c84('0x25')]=function(_0x330972,_0x4fcc92){return db[_0x4c84('0x2a')][_0x4c84('0x45')]({'where':{'id':_0x330972['params']['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x4fcc92,null))['then'](removeEntity(_0x4fcc92,null))[_0x4c84('0x42')](handleError(_0x4fcc92,null));};exports['describe']=function(_0x3e03fa,_0x341369){return db[_0x4c84('0x2a')][_0x4c84('0x50')]()[_0x4c84('0x24')](respondWithResult(_0x341369,null))[_0x4c84('0x42')](handleError(_0x341369,null));};exports[_0x4c84('0x51')]=function(_0xe75861,_0x5bc03e,_0x40ec5e){if(_0xe75861[_0x4c84('0x47')]['id']){delete _0xe75861[_0x4c84('0x47')]['id'];}return db[_0x4c84('0x2a')][_0x4c84('0x45')]({'where':{'id':_0xe75861[_0x4c84('0x44')]['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x5bc03e,null))[_0x4c84('0x24')](function(_0x228dab){if(_0x228dab){_0xe75861['body'][_0x4c84('0x52')]=_0x228dab['id'];return db[_0x4c84('0x53')][_0x4c84('0x46')](_0xe75861['body']);}})[_0x4c84('0x24')](respondWithResult(_0x5bc03e,null))['catch'](handleError(_0x5bc03e,null));};exports[_0x4c84('0x54')]=function(_0x3c1564,_0x1e3372,_0x36fab3){var _0x11d9b2={'raw':![],'where':{}};var _0x1a985b={};var _0x4421e8={'count':0x0,'rows':[]};return db[_0x4c84('0x2a')][_0x4c84('0x55')]({'where':{'id':_0x3c1564[_0x4c84('0x44')]['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x1e3372,null))[_0x4c84('0x24')](function(_0x4812a2){if(_0x4812a2){_0x1a985b[_0x4c84('0x2e')]=_['keys'](db[_0x4c84('0x53')][_0x4c84('0x2b')]);_0x1a985b[_0x4c84('0x30')]=_[_0x4c84('0x31')](_0x3c1564['query']);_0x1a985b[_0x4c84('0x32')]=_[_0x4c84('0x33')](_0x1a985b[_0x4c84('0x2e')],_0x1a985b['query']);_0x11d9b2[_0x4c84('0x34')]=_[_0x4c84('0x33')](_0x1a985b[_0x4c84('0x2e')],qs[_0x4c84('0x35')](_0x3c1564[_0x4c84('0x30')][_0x4c84('0x35')]));_0x11d9b2[_0x4c84('0x34')]=_0x11d9b2['attributes'][_0x4c84('0x36')]?_0x11d9b2[_0x4c84('0x34')]:_0x1a985b['model'];if(!_0x3c1564['query'][_0x4c84('0x56')]('nolimit')){_0x11d9b2[_0x4c84('0x1f')]=qs[_0x4c84('0x1f')](_0x3c1564['query']['limit']);_0x11d9b2[_0x4c84('0x1d')]=qs[_0x4c84('0x1d')](_0x3c1564[_0x4c84('0x30')][_0x4c84('0x1d')]);}_0x11d9b2[_0x4c84('0x38')]=qs[_0x4c84('0x39')](_0x3c1564[_0x4c84('0x30')][_0x4c84('0x39')]);_0x11d9b2[_0x4c84('0x3a')]=qs[_0x4c84('0x32')](_[_0x4c84('0x3b')](_0x3c1564[_0x4c84('0x30')],_0x1a985b[_0x4c84('0x32')]));_0x11d9b2[_0x4c84('0x3a')][_0x4c84('0x52')]=_0x4812a2['id'];if(_0x3c1564['query']['filter']){_0x11d9b2['where']=_[_0x4c84('0x3d')](_0x11d9b2[_0x4c84('0x3a')],{'$or':_[_0x4c84('0x2f')](_0x11d9b2[_0x4c84('0x34')],function(_0x2ed46a){var _0x526b4d={};_0x526b4d[_0x2ed46a]={'$like':'%'+_0x3c1564[_0x4c84('0x30')][_0x4c84('0x3c')]+'%'};return _0x526b4d;})});}_0x11d9b2=_[_0x4c84('0x3d')]({},_0x11d9b2,_0x3c1564[_0x4c84('0x3e')]);return db[_0x4c84('0x53')][_0x4c84('0x20')]({'where':_0x11d9b2[_0x4c84('0x3a')]})['then'](function(_0x2894a0){_0x4421e8[_0x4c84('0x20')]=_0x2894a0;if(_0x3c1564[_0x4c84('0x30')][_0x4c84('0x3f')]){_0x11d9b2[_0x4c84('0x40')]=[{'all':!![]}];}return db['Disposition'][_0x4c84('0x41')](_0x11d9b2);})['then'](function(_0xe05512){_0x4421e8[_0x4c84('0x57')]=_0xe05512;return _0x4421e8;});}})[_0x4c84('0x24')](respondWithFilteredResult(_0x1e3372,_0x11d9b2))[_0x4c84('0x42')](handleError(_0x1e3372,null));};exports[_0x4c84('0x58')]=function(_0x363eda,_0x466108,_0x192de6){return db[_0x4c84('0x2a')][_0x4c84('0x45')]({'where':{'id':_0x363eda[_0x4c84('0x44')]['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x466108,null))[_0x4c84('0x24')](function(_0x3c5719){if(_0x3c5719){return _0x3c5719[_0x4c84('0x58')](_0x363eda[_0x4c84('0x30')]['ids']);}})[_0x4c84('0x24')](respondWithStatusCode(_0x466108,null))['catch'](handleError(_0x466108,null));};exports[_0x4c84('0x59')]=function(_0x43f13b,_0x453eac,_0x334afa){return db['CmList'][_0x4c84('0x45')]({'where':{'id':_0x43f13b['params']['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x453eac,null))[_0x4c84('0x24')](function(_0x5c9d4f){if(_0x5c9d4f){var _0x509760=[];var _0x2be51a={'success':[],'errors':[]};return db['CmContact'][_0x4c84('0x50')]()[_0x4c84('0x24')](function(_0x5addad){if(_0x43f13b[_0x4c84('0x47')]['tags']&&_[_0x4c84('0x5a')](_0x43f13b[_0x4c84('0x47')][_0x4c84('0x5b')])){if(_0x43f13b[_0x4c84('0x47')]['tags'][_0x4c84('0x36')]){_0x43f13b[_0x4c84('0x47')][_0x4c84('0x5b')]=_0x43f13b['body']['tags'][_0x4c84('0x5c')](';')+';';}else{_0x43f13b[_0x4c84('0x47')][_0x4c84('0x5b')]=null;}}else{_0x43f13b[_0x4c84('0x47')]['tags']=null;}if(_0x43f13b[_0x4c84('0x47')]&&_[_0x4c84('0x5a')](_0x43f13b[_0x4c84('0x47')])){for(var _0x2eecc9=0x0;_0x2eecc9<_0x43f13b[_0x4c84('0x47')]['length'];_0x2eecc9+=0x1){_0x43f13b[_0x4c84('0x47')][_0x2eecc9]['ListId']=_0x43f13b[_0x4c84('0x44')]['id'];_0x509760[_0x4c84('0x5d')](_0x43f13b[_0x4c84('0x47')][_0x2eecc9]);}return BPromise[_0x4c84('0x5e')](_0x509760,function(_0x3cc64c){return db['CmContact'][_0x4c84('0x46')](_[_0x4c84('0x5f')](_0x3cc64c,[_0x4c84('0x60'),'id'])||{},{'fields':_[_0x4c84('0x31')](_0x5addad),'raw':!![]})[_0x4c84('0x24')](function(_0x2f397a){_0x2be51a[_0x4c84('0x61')]['push'](_0x2f397a[_0x4c84('0x62')]);})['catch'](function(_0x574802){_0x2be51a[_0x4c84('0x63')][_0x4c84('0x5d')]({'data':_0x3cc64c,'error':_0x574802[_0x4c84('0x64')]});});})[_0x4c84('0x24')](function(_0x5bdc56){return _0x2be51a;})[_0x4c84('0x42')](function(_0x22ed0b){return _0x22ed0b;});}else{_0x453eac[_0x4c84('0x1b')](0x190)['json']({'message':_0x4c84('0x65')});}});}})['then'](respondWithResult(_0x453eac,null))[_0x4c84('0x42')](handleError(_0x453eac,null));};exports[_0x4c84('0x66')]=function(_0xcc147a,_0x5f1b7d,_0x54a6ee){var _0x3118df;return db['CmList'][_0x4c84('0x45')]({'where':{'id':_0xcc147a[_0x4c84('0x44')]['id']},'include':[{'model':db[_0x4c84('0x67')],'as':_0x4c84('0x68')}]})[_0x4c84('0x24')](handleEntityNotFound(_0x5f1b7d,null))[_0x4c84('0x24')](function(_0x447e25){if(_0x447e25){_0x3118df=_0x447e25;return db['CmContact'][_0x4c84('0x2b')];}})[_0x4c84('0x24')](function(_0x96b2a6){if(_0x96b2a6){var _0x13acac={};var _0xce899f={};_0xce899f[_0x4c84('0x2e')]=_[_0x4c84('0x69')](_[_0x4c84('0x31')](_0x96b2a6),_[_0x4c84('0x2f')](_0x3118df[_0x4c84('0x68')],function(_0x3a81a3){return util[_0x4c84('0x6a')](_0x4c84('0x6b'),_0x3a81a3['id']);}));_0xce899f[_0x4c84('0x30')]=_[_0x4c84('0x31')](_0xcc147a[_0x4c84('0x30')]);_0xce899f[_0x4c84('0x32')]=_[_0x4c84('0x33')](_0xce899f[_0x4c84('0x2e')],_0xce899f[_0x4c84('0x30')]);_0x13acac[_0x4c84('0x34')]=_[_0x4c84('0x33')](_0xce899f[_0x4c84('0x2e')],qs['fields'](_0xcc147a[_0x4c84('0x30')][_0x4c84('0x35')]));_0x13acac[_0x4c84('0x34')]=_0x13acac['attributes']['length']?_0x13acac[_0x4c84('0x34')]:_0xce899f[_0x4c84('0x2e')];if(!_0xcc147a['query']['hasOwnProperty'](_0x4c84('0x37'))){_0x13acac[_0x4c84('0x1f')]=qs[_0x4c84('0x1f')](_0xcc147a[_0x4c84('0x30')][_0x4c84('0x1f')]);_0x13acac[_0x4c84('0x1d')]=qs['offset'](_0xcc147a[_0x4c84('0x30')]['offset']);}_0x13acac['order']=qs[_0x4c84('0x39')](_0xcc147a['query'][_0x4c84('0x39')]);_0x13acac[_0x4c84('0x3a')]=qs[_0x4c84('0x32')](_['pick'](_0xcc147a['query'],_0xce899f['filters']));_0x13acac['raw']=!![];if(_0xcc147a[_0x4c84('0x30')][_0x4c84('0x3c')]){_0x13acac[_0x4c84('0x3a')]=_[_0x4c84('0x3d')](_0x13acac['where'],{'$or':_[_0x4c84('0x2f')](_0x13acac[_0x4c84('0x34')],function(_0x58d73e){var _0x538915={};_0x538915[_0x58d73e]={'$like':'%'+_0xcc147a[_0x4c84('0x30')][_0x4c84('0x3c')]+'%'};return _0x538915;})});}_0x13acac=_[_0x4c84('0x3d')]({},_0x13acac,_0xcc147a[_0x4c84('0x3e')]);return _0x3118df[_0x4c84('0x66')](_0x13acac);}})[_0x4c84('0x24')](respondWithResult(_0x5f1b7d,null))[_0x4c84('0x42')](handleError(_0x5f1b7d,null));};exports[_0x4c84('0x6c')]=function(_0x11ea8f,_0x276c09,_0xdab61f){var _0x1e0556;return db[_0x4c84('0x2a')][_0x4c84('0x45')]({'where':{'id':_0x11ea8f[_0x4c84('0x44')]['id']},'include':[{'model':db['CmCustomField'],'as':_0x4c84('0x68')}]})[_0x4c84('0x24')](handleEntityNotFound(_0x276c09,null))['then'](function(_0x125e0c){if(_0x125e0c){_0x1e0556=_0x125e0c;return db[_0x4c84('0x6d')][_0x4c84('0x2b')];}})[_0x4c84('0x24')](function(_0x3994cc){if(_0x3994cc){var _0x574bf4={};var _0xfbfdb5={};_0xfbfdb5[_0x4c84('0x2e')]=_[_0x4c84('0x69')](_[_0x4c84('0x31')](_0x3994cc),_[_0x4c84('0x2f')](_0x1e0556[_0x4c84('0x68')],function(_0xfbc404){return util[_0x4c84('0x6a')]('cf_%d',_0xfbc404['id']);}));_0xfbfdb5[_0x4c84('0x30')]=_[_0x4c84('0x31')](_0x11ea8f[_0x4c84('0x30')]);_0xfbfdb5[_0x4c84('0x32')]=_['intersection'](_0xfbfdb5[_0x4c84('0x2e')],_0xfbfdb5[_0x4c84('0x30')]);_0x574bf4['attributes']=_[_0x4c84('0x33')](_0xfbfdb5[_0x4c84('0x2e')],qs['fields'](_0x11ea8f[_0x4c84('0x30')][_0x4c84('0x35')]));_0x574bf4[_0x4c84('0x34')]=_0x574bf4[_0x4c84('0x34')][_0x4c84('0x36')]?_0x574bf4['attributes']:_0xfbfdb5['model'];if(!_0x11ea8f[_0x4c84('0x30')][_0x4c84('0x56')](_0x4c84('0x37'))){_0x574bf4[_0x4c84('0x1f')]=qs[_0x4c84('0x1f')](_0x11ea8f[_0x4c84('0x30')][_0x4c84('0x1f')]);_0x574bf4[_0x4c84('0x1d')]=qs[_0x4c84('0x1d')](_0x11ea8f[_0x4c84('0x30')][_0x4c84('0x1d')]);}_0x574bf4[_0x4c84('0x38')]=qs[_0x4c84('0x39')](_0x11ea8f[_0x4c84('0x30')][_0x4c84('0x39')]);_0x574bf4[_0x4c84('0x3a')]=qs['filters'](_['pick'](_0x11ea8f[_0x4c84('0x30')],_0xfbfdb5[_0x4c84('0x32')]));_0x574bf4[_0x4c84('0x6e')]=!![];if(_0x11ea8f[_0x4c84('0x30')]['filter']){_0x574bf4[_0x4c84('0x3a')]=_['merge'](_0x574bf4['where'],{'$or':_[_0x4c84('0x2f')](_0x574bf4[_0x4c84('0x34')],function(_0x401b19){var _0x596603={};_0x596603[_0x401b19]={'$like':'%'+_0x11ea8f[_0x4c84('0x30')]['filter']+'%'};return _0x596603;})});}_0x574bf4=_[_0x4c84('0x3d')]({},_0x574bf4,_0x11ea8f[_0x4c84('0x3e')]);return _0x1e0556[_0x4c84('0x66')](_0x574bf4);}})[_0x4c84('0x24')](function(_0xfe3430){if(!_[_0x4c84('0x6f')](_0xfe3430)){var _0x3ff746=toCsv(_0xfe3430);var _0x1a6f1f=Date[_0x4c84('0x70')]();fs['writeFileSync'](util['format'](_0x4c84('0x71'),_0x1e0556['id'],_0x1a6f1f),_0x3ff746);_0x276c09[_0x4c84('0x72')]('Content-disposition',_0x4c84('0x73')+util[_0x4c84('0x6a')](_0x4c84('0x74'),_0x1e0556['id'],_0x1a6f1f));_0x276c09[_0x4c84('0x72')]('Content-type','text/csv');return _0x276c09[_0x4c84('0x75')](util[_0x4c84('0x6a')](_0x4c84('0x71'),_0x1e0556['id'],_0x1a6f1f));}else{return _0x276c09[_0x4c84('0x1a')](0xcc);}})[_0x4c84('0x42')](handleError(_0x276c09,null));};exports[_0x4c84('0x76')]=function(_0x4baadd,_0x4cdf4d,_0x12611b){var _0x53da0f;delete _0x4baadd[_0x4c84('0x47')]['id'];return db[_0x4c84('0x2a')][_0x4c84('0x55')]({'where':{'id':_0x4baadd[_0x4c84('0x44')]['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x4cdf4d,null))['then'](function(_0x46aa07){if(_0x46aa07){return db['sequelize'][_0x4c84('0x77')](function(_0x5c580b){return db[_0x4c84('0x67')][_0x4c84('0x46')](_0x4baadd['body'],{'transaction':_0x5c580b})[_0x4c84('0x24')](function(_0x30448d){_0x53da0f=_0x30448d;return _0x46aa07[_0x4c84('0x78')](_0x30448d,{'transaction':_0x5c580b});})['then'](function(){var _0x5880c5={'type':db[_0x4c84('0x79')][_0x4c84('0x7a')],'transaction':_0x5c580b};switch(_0x4baadd['body'][_0x4c84('0x2d')]){case'text':_0x5880c5[_0x4c84('0x2d')]=db['Sequelize'][_0x4c84('0x7a')];break;case _0x4c84('0x7b'):_0x5880c5[_0x4c84('0x2d')]=db['Sequelize'][_0x4c84('0x7c')];break;case _0x4c84('0x7d'):_0x5880c5['type']=db[_0x4c84('0x79')][_0x4c84('0x7e')];_0x5880c5[_0x4c84('0x7f')]=![];break;default:}return db['sequelize'][_0x4c84('0x80')]['addColumn']('cm_contacts',util[_0x4c84('0x6a')](_0x4c84('0x81'),_0x53da0f['id']),_0x5880c5);})[_0x4c84('0x24')](function(){return _0x53da0f;});});}})['then'](respondWithResult(_0x4cdf4d,null))[_0x4c84('0x42')](handleError(_0x4cdf4d,null));};exports[_0x4c84('0x82')]=function(_0x8f646e,_0x2acdd7,_0x2bc7b8){var _0x3b2387={};var _0x360716={};var _0x309cf3;var _0x415434;return db['CmList'][_0x4c84('0x55')]({'where':{'id':_0x8f646e[_0x4c84('0x44')]['id']}})['then'](handleEntityNotFound(_0x2acdd7,null))[_0x4c84('0x24')](function(_0x5eb44d){if(_0x5eb44d){_0x309cf3=_0x5eb44d;_0x360716['model']=_[_0x4c84('0x31')](db[_0x4c84('0x67')][_0x4c84('0x2b')]);_0x360716[_0x4c84('0x30')]=_['keys'](_0x8f646e[_0x4c84('0x30')]);_0x360716[_0x4c84('0x32')]=_[_0x4c84('0x33')](_0x360716[_0x4c84('0x2e')],_0x360716[_0x4c84('0x30')]);_0x3b2387[_0x4c84('0x34')]=_['intersection'](_0x360716[_0x4c84('0x2e')],qs[_0x4c84('0x35')](_0x8f646e[_0x4c84('0x30')]['fields']));_0x3b2387[_0x4c84('0x34')]=_0x3b2387[_0x4c84('0x34')][_0x4c84('0x36')]?_0x3b2387['attributes']:_0x360716[_0x4c84('0x2e')];_0x3b2387[_0x4c84('0x38')]=qs[_0x4c84('0x39')](_0x8f646e['query'][_0x4c84('0x39')]);_0x3b2387[_0x4c84('0x3a')]=qs['filters'](_[_0x4c84('0x3b')](_0x8f646e[_0x4c84('0x30')],_0x360716[_0x4c84('0x32')]));_0x3b2387['where']=_['merge'](_0x3b2387[_0x4c84('0x3a')],{'$or':[{'ListId':_0x5eb44d['id']},{'ListId':null}]});if(_0x8f646e[_0x4c84('0x30')][_0x4c84('0x3c')]){_0x3b2387[_0x4c84('0x3a')]=_[_0x4c84('0x3d')](_0x3b2387[_0x4c84('0x3a')],{'$or':_['map'](_0x3b2387[_0x4c84('0x34')],function(_0x228b99){var _0x1adbac={};_0x1adbac[_0x228b99]={'$like':'%'+_0x8f646e[_0x4c84('0x30')][_0x4c84('0x3c')]+'%'};return _0x1adbac;})});}_0x3b2387=_[_0x4c84('0x3d')]({},_0x3b2387,_0x8f646e[_0x4c84('0x3e')]);return db[_0x4c84('0x67')][_0x4c84('0x83')](_0x3b2387);}})[_0x4c84('0x24')](respondWithResult(_0x2acdd7,null))[_0x4c84('0x42')](handleError(_0x2acdd7,null));};exports[_0x4c84('0x84')]=function(_0x2911e8,_0x5368cd,_0x410a7d){return db['CmList'][_0x4c84('0x45')]({'where':{'id':_0x2911e8[_0x4c84('0x44')]['id']}})['then'](handleEntityNotFound(_0x5368cd,null))['then'](function(_0x7cd71b){if(_0x7cd71b){return _0x7cd71b[_0x4c84('0x84')](_0x2911e8[_0x4c84('0x47')]['ids'],_[_0x4c84('0x5f')](_0x2911e8['body'],['ids','id'])||{})[_0x4c84('0x85')](function(_0xa39139){for(var _0x57519a=0x0;_0x57519a<_0x2911e8[_0x4c84('0x47')][_0x4c84('0x60')][_0x4c84('0x36')];_0x57519a+=0x1){socket[_0x4c84('0x86')](_0x4c84('0x87'),{'UserId':Number(_0x2911e8[_0x4c84('0x47')]['ids'][_0x57519a]),'CmListId':Number(_0x2911e8['params']['id'])});}return _0xa39139;});}})[_0x4c84('0x24')](respondWithResult(_0x5368cd,null))[_0x4c84('0x42')](handleError(_0x5368cd,null));};exports[_0x4c84('0x88')]=function(_0x56c66e,_0x29351f,_0x466bdb){return db[_0x4c84('0x2a')]['find']({'where':{'id':_0x56c66e[_0x4c84('0x44')]['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x29351f,null))[_0x4c84('0x24')](function(_0x3b40e3){if(_0x3b40e3){return _0x3b40e3[_0x4c84('0x88')](_0x56c66e[_0x4c84('0x30')][_0x4c84('0x60')])['then'](function(){if(_['isArray'](_0x56c66e[_0x4c84('0x30')]['ids'])){for(var _0x759914=0x0;_0x759914<_0x56c66e[_0x4c84('0x30')][_0x4c84('0x60')][_0x4c84('0x36')];_0x759914+=0x1){socket[_0x4c84('0x86')]('userCmList:remove',{'UserId':Number(_0x56c66e[_0x4c84('0x30')][_0x4c84('0x60')][_0x759914]),'CmListId':Number(_0x56c66e[_0x4c84('0x44')]['id'])});}}else{socket[_0x4c84('0x86')](_0x4c84('0x89'),{'UserId':Number(_0x56c66e[_0x4c84('0x30')][_0x4c84('0x60')]),'CmListId':Number(_0x56c66e[_0x4c84('0x44')]['id'])});}});}})['then'](respondWithStatusCode(_0x29351f,null))[_0x4c84('0x42')](handleError(_0x29351f,null));};exports[_0x4c84('0x8a')]=function(_0x23f157,_0x25786d,_0x4e1ad1){var _0x527c39={};var _0x4f5c47={};var _0xaa7e4;var _0x425997;return db[_0x4c84('0x2a')][_0x4c84('0x55')]({'where':{'id':_0x23f157['params']['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x25786d,null))[_0x4c84('0x24')](function(_0x391361){if(_0x391361){_0xaa7e4=_0x391361;_0x4f5c47[_0x4c84('0x2e')]=_[_0x4c84('0x31')](db[_0x4c84('0x8b')][_0x4c84('0x2b')]);_0x4f5c47[_0x4c84('0x30')]=_[_0x4c84('0x31')](_0x23f157[_0x4c84('0x30')]);_0x4f5c47[_0x4c84('0x32')]=_[_0x4c84('0x33')](_0x4f5c47['model'],_0x4f5c47[_0x4c84('0x30')]);_0x527c39['attributes']=_[_0x4c84('0x33')](_0x4f5c47[_0x4c84('0x2e')],qs[_0x4c84('0x35')](_0x23f157[_0x4c84('0x30')][_0x4c84('0x35')]));_0x527c39[_0x4c84('0x34')]=_0x527c39['attributes'][_0x4c84('0x36')]?_0x527c39[_0x4c84('0x34')]:_0x4f5c47[_0x4c84('0x2e')];_0x527c39['order']=qs['sort'](_0x23f157[_0x4c84('0x30')]['sort']);_0x527c39[_0x4c84('0x3a')]=qs[_0x4c84('0x32')](_[_0x4c84('0x3b')](_0x23f157[_0x4c84('0x30')],_0x4f5c47[_0x4c84('0x32')]));if(_0x23f157[_0x4c84('0x30')][_0x4c84('0x3c')]){_0x527c39[_0x4c84('0x3a')]=_[_0x4c84('0x3d')](_0x527c39[_0x4c84('0x3a')],{'$or':_[_0x4c84('0x2f')](_0x527c39['attributes'],function(_0x1c3c75){var _0x35cadb={};_0x35cadb[_0x1c3c75]={'$like':'%'+_0x23f157[_0x4c84('0x30')][_0x4c84('0x3c')]+'%'};return _0x35cadb;})});}_0x527c39=_[_0x4c84('0x3d')]({},_0x527c39,_0x23f157[_0x4c84('0x3e')]);return _0xaa7e4[_0x4c84('0x8a')](_0x527c39);}})[_0x4c84('0x24')](function(_0x50f293){if(_0x50f293){_0x425997=_0x50f293['length'];if(!_0x23f157[_0x4c84('0x30')][_0x4c84('0x56')](_0x4c84('0x37'))){_0x527c39[_0x4c84('0x1f')]=qs[_0x4c84('0x1f')](_0x23f157[_0x4c84('0x30')][_0x4c84('0x1f')]);_0x527c39[_0x4c84('0x1d')]=qs[_0x4c84('0x1d')](_0x23f157[_0x4c84('0x30')][_0x4c84('0x1d')]);}return _0xaa7e4[_0x4c84('0x8a')](_0x527c39);}})['then'](function(_0x5d8730){if(_0x5d8730){return _0x5d8730?{'count':_0x425997,'rows':_0x5d8730}:null;}})['then'](respondWithResult(_0x25786d,null))[_0x4c84('0x42')](handleError(_0x25786d,null));};
\ No newline at end of file
+var _0x7fb8=['defaults','localhost','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','get','Lists','UserProfileResource','destroy','end','error','stack','name','index','map','CmList','rawAttributes','fieldName','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','where','filter','type','VIRTUAL','options','includeAll','include','findAll','show','params','keys','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','Disposition','getDispositions','findOne','nolimit','sort','pick','merge','rows','removeDispositions','ids','CmContact','tags','isArray','join','each','omit','success','push','dataValues','errors','message','CustomFields','raw','getContacts','getContactsCsv','CmCustomField','concat','format','cf_%d','isEmpty','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','Sequelize','TEXT','text','number','switch','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','getCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','redis'];(function(_0x470f24,_0x2436a9){var _0x2c6fc8=function(_0x3ef190){while(--_0x3ef190){_0x470f24['push'](_0x470f24['shift']());}};_0x2c6fc8(++_0x2436a9);}(_0x7fb8,0x10f));var _0x87fb=function(_0xcd7c16,_0xa24a3c){_0xcd7c16=_0xcd7c16-0x0;var _0x120379=_0x7fb8[_0xcd7c16];return _0x120379;};'use strict';var emlformat=require(_0x87fb('0x0'));var rimraf=require(_0x87fb('0x1'));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(_0x87fb('0x2'));var path=require(_0x87fb('0x3'));var sox=require(_0x87fb('0x4'));var csv=require(_0x87fb('0x5'));var ejs=require(_0x87fb('0x6'));var fs=require('fs');var fs_extra=require(_0x87fb('0x7'));var _=require('lodash');var squel=require(_0x87fb('0x8'));var crypto=require(_0x87fb('0x9'));var jsforce=require(_0x87fb('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x87fb('0x5'));var querystring=require(_0x87fb('0xb'));var Papa=require(_0x87fb('0xc'));var Redis=require(_0x87fb('0xd'));var authService=require(_0x87fb('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x87fb('0xf'));var hardwareService=require(_0x87fb('0x10'));var logger=require(_0x87fb('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x87fb('0x12'));var db=require(_0x87fb('0x13'))['db'];config[_0x87fb('0x14')]=_[_0x87fb('0x15')](config['redis'],{'host':_0x87fb('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./cmList.socket')[_0x87fb('0x17')](socket);function respondWithStatusCode(_0x190afe,_0x4c7367){_0x4c7367=_0x4c7367||0xcc;return function(_0x2d08f4){if(_0x2d08f4){return _0x190afe[_0x87fb('0x18')](_0x4c7367);}return _0x190afe[_0x87fb('0x19')](_0x4c7367)['end']();};}function respondWithResult(_0x3fb608,_0x18c9e0){_0x18c9e0=_0x18c9e0||0xc8;return function(_0x4ac323){if(_0x4ac323){return _0x3fb608['status'](_0x18c9e0)[_0x87fb('0x1a')](_0x4ac323);}};}function respondWithFilteredResult(_0x1deaa2,_0x15bd17){return function(_0x221c66){if(_0x221c66){var _0x14c53=typeof _0x15bd17[_0x87fb('0x1b')]===_0x87fb('0x1c')&&typeof _0x15bd17[_0x87fb('0x1d')]===_0x87fb('0x1c');var _0x4a7b3e=_0x221c66['count'];var _0x4cf173=_0x14c53?0x0:_0x15bd17[_0x87fb('0x1b')];var _0x1e81f0=_0x14c53?_0x221c66[_0x87fb('0x1e')]:_0x15bd17['offset']+_0x15bd17[_0x87fb('0x1d')];var _0x1a6396;if(_0x1e81f0>=_0x4a7b3e){_0x1e81f0=_0x4a7b3e;_0x1a6396=0xc8;}else{_0x1a6396=0xce;}_0x1deaa2[_0x87fb('0x19')](_0x1a6396);return _0x1deaa2[_0x87fb('0x1f')](_0x87fb('0x20'),_0x4cf173+'-'+_0x1e81f0+'/'+_0x4a7b3e)['json'](_0x221c66);}return null;};}function patchUpdates(_0x4b33f5){return function(_0x570966){try{jsonpatch[_0x87fb('0x21')](_0x570966,_0x4b33f5,!![]);}catch(_0x10ed99){return BPromise[_0x87fb('0x22')](_0x10ed99);}return _0x570966[_0x87fb('0x23')]();};}function saveUpdates(_0xbc2961,_0x60cde2){return function(_0x29c61c){if(_0x29c61c){return _0x29c61c['update'](_0xbc2961)[_0x87fb('0x24')](function(_0x3409ca){return _0x3409ca;});}return null;};}function removeEntity(_0x566a4b,_0x1bbfd2){return function(_0x14a4c3){if(_0x14a4c3){return _0x14a4c3['destroy']()[_0x87fb('0x24')](function(){var _0x5a2d3a=_0x14a4c3[_0x87fb('0x25')]({'plain':!![]});var _0x1ba6b3=_0x87fb('0x26');return db[_0x87fb('0x27')][_0x87fb('0x28')]({'where':{'type':_0x1ba6b3,'resourceId':_0x5a2d3a['id']}})[_0x87fb('0x24')](function(){return _0x14a4c3;});})[_0x87fb('0x24')](function(){_0x566a4b[_0x87fb('0x19')](0xcc)[_0x87fb('0x29')]();});}};}function handleEntityNotFound(_0x4d958c,_0x4de21e){return function(_0x2173d3){if(!_0x2173d3){_0x4d958c[_0x87fb('0x18')](0x194);}return _0x2173d3;};}function handleError(_0x1956b8,_0xf941dc){_0xf941dc=_0xf941dc||0x1f4;return function(_0x5d608a){logger[_0x87fb('0x2a')](_0x5d608a[_0x87fb('0x2b')]);if(_0x5d608a[_0x87fb('0x2c')]){delete _0x5d608a[_0x87fb('0x2c')];}_0x1956b8[_0x87fb('0x19')](_0xf941dc)['send'](_0x5d608a);};}exports[_0x87fb('0x2d')]=function(_0x46ee4c,_0x43d558){var _0x316323={},_0x1ee1db={},_0x55d302={'count':0x0,'rows':[]};var _0x2fa2c6=_[_0x87fb('0x2e')](db[_0x87fb('0x2f')][_0x87fb('0x30')],function(_0x1558d2){return{'name':_0x1558d2[_0x87fb('0x31')],'type':_0x1558d2['type']['key']};});_0x1ee1db[_0x87fb('0x32')]=_['map'](_0x2fa2c6,'name');_0x1ee1db['query']=_['keys'](_0x46ee4c[_0x87fb('0x33')]);_0x1ee1db[_0x87fb('0x34')]=_[_0x87fb('0x35')](_0x1ee1db[_0x87fb('0x32')],_0x1ee1db['query']);_0x316323[_0x87fb('0x36')]=_[_0x87fb('0x35')](_0x1ee1db[_0x87fb('0x32')],qs[_0x87fb('0x37')](_0x46ee4c[_0x87fb('0x33')][_0x87fb('0x37')]));_0x316323[_0x87fb('0x36')]=_0x316323[_0x87fb('0x36')][_0x87fb('0x38')]?_0x316323[_0x87fb('0x36')]:_0x1ee1db[_0x87fb('0x32')];if(!_0x46ee4c[_0x87fb('0x33')][_0x87fb('0x39')]('nolimit')){_0x316323[_0x87fb('0x1d')]=qs[_0x87fb('0x1d')](_0x46ee4c[_0x87fb('0x33')][_0x87fb('0x1d')]);_0x316323[_0x87fb('0x1b')]=qs[_0x87fb('0x1b')](_0x46ee4c[_0x87fb('0x33')][_0x87fb('0x1b')]);}_0x316323[_0x87fb('0x3a')]=qs['sort'](_0x46ee4c[_0x87fb('0x33')]['sort']);_0x316323[_0x87fb('0x3b')]=qs[_0x87fb('0x34')](_['pick'](_0x46ee4c[_0x87fb('0x33')],_0x1ee1db[_0x87fb('0x34')]),_0x2fa2c6);if(_0x46ee4c[_0x87fb('0x33')][_0x87fb('0x3c')]){_0x316323[_0x87fb('0x3b')]=_['merge'](_0x316323[_0x87fb('0x3b')],{'$or':_['map'](_0x2fa2c6,function(_0x11418a){if(_0x11418a[_0x87fb('0x3d')]!==_0x87fb('0x3e')){var _0x487e7d={};_0x487e7d[_0x11418a[_0x87fb('0x2c')]]={'$like':'%'+_0x46ee4c[_0x87fb('0x33')]['filter']+'%'};return _0x487e7d;}})});}_0x316323=_['merge']({},_0x316323,_0x46ee4c[_0x87fb('0x3f')]);var _0x3144fd={'where':_0x316323[_0x87fb('0x3b')]};return db[_0x87fb('0x2f')][_0x87fb('0x1e')](_0x3144fd)[_0x87fb('0x24')](function(_0xdca6ef){_0x55d302['count']=_0xdca6ef;if(_0x46ee4c[_0x87fb('0x33')][_0x87fb('0x40')]){_0x316323[_0x87fb('0x41')]=[{'all':!![]}];}return db[_0x87fb('0x2f')][_0x87fb('0x42')](_0x316323);})[_0x87fb('0x24')](function(_0x298d19){_0x55d302['rows']=_0x298d19;return _0x55d302;})[_0x87fb('0x24')](respondWithFilteredResult(_0x43d558,_0x316323))['catch'](handleError(_0x43d558,null));};exports[_0x87fb('0x43')]=function(_0x15b053,_0x45656d){var _0x163a0f={'raw':![],'where':{'id':_0x15b053[_0x87fb('0x44')]['id']}},_0x115d89={};_0x115d89[_0x87fb('0x32')]=_[_0x87fb('0x45')](db[_0x87fb('0x2f')][_0x87fb('0x30')]);_0x115d89[_0x87fb('0x33')]=_[_0x87fb('0x45')](_0x15b053['query']);_0x115d89[_0x87fb('0x34')]=_[_0x87fb('0x35')](_0x115d89['model'],_0x115d89[_0x87fb('0x33')]);_0x163a0f[_0x87fb('0x36')]=_[_0x87fb('0x35')](_0x115d89[_0x87fb('0x32')],qs[_0x87fb('0x37')](_0x15b053['query'][_0x87fb('0x37')]));_0x163a0f[_0x87fb('0x36')]=_0x163a0f['attributes'][_0x87fb('0x38')]?_0x163a0f[_0x87fb('0x36')]:_0x115d89[_0x87fb('0x32')];if(_0x15b053[_0x87fb('0x33')][_0x87fb('0x40')]){_0x163a0f['include']=[{'all':!![]}];}_0x163a0f=_['merge']({},_0x163a0f,_0x15b053[_0x87fb('0x3f')]);return db[_0x87fb('0x2f')][_0x87fb('0x46')](_0x163a0f)[_0x87fb('0x24')](handleEntityNotFound(_0x45656d,null))['then'](respondWithResult(_0x45656d,null))[_0x87fb('0x47')](handleError(_0x45656d,null));};exports[_0x87fb('0x48')]=function(_0x186660,_0x317dd8){return db['CmList']['create'](_0x186660[_0x87fb('0x49')],{})[_0x87fb('0x24')](function(_0x418be7){var _0x3fd34b=_0x186660[_0x87fb('0x4a')][_0x87fb('0x25')]({'plain':!![]});if(!_0x3fd34b)throw new Error(_0x87fb('0x4b'));if(_0x3fd34b[_0x87fb('0x4c')]==='user'){var _0x273577=_0x418be7[_0x87fb('0x25')]({'plain':!![]});var _0xc5df34=_0x87fb('0x26');return db[_0x87fb('0x4d')][_0x87fb('0x46')]({'where':{'name':_0xc5df34,'userProfileId':_0x3fd34b[_0x87fb('0x4e')]},'raw':!![]})[_0x87fb('0x24')](function(_0x1e5d0b){if(_0x1e5d0b&&_0x1e5d0b[_0x87fb('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x273577[_0x87fb('0x2c')],'resourceId':_0x273577['id'],'type':_0x1e5d0b[_0x87fb('0x2c')],'sectionId':_0x1e5d0b['id']},{})[_0x87fb('0x24')](function(){return _0x418be7;});}else{return _0x418be7;}})[_0x87fb('0x47')](function(_0x1c54c1){logger[_0x87fb('0x2a')](_0x87fb('0x50'),_0x1c54c1);throw _0x1c54c1;});}return _0x418be7;})[_0x87fb('0x24')](respondWithResult(_0x317dd8,0xc9))['catch'](handleError(_0x317dd8,null));};exports['update']=function(_0x4daf2a,_0x4cfe28){if(_0x4daf2a[_0x87fb('0x49')]['id']){delete _0x4daf2a[_0x87fb('0x49')]['id'];}return db[_0x87fb('0x2f')][_0x87fb('0x46')]({'where':{'id':_0x4daf2a[_0x87fb('0x44')]['id']}})[_0x87fb('0x24')](handleEntityNotFound(_0x4cfe28,null))[_0x87fb('0x24')](saveUpdates(_0x4daf2a[_0x87fb('0x49')],null))[_0x87fb('0x24')](respondWithResult(_0x4cfe28,null))[_0x87fb('0x47')](handleError(_0x4cfe28,null));};exports[_0x87fb('0x28')]=function(_0x5613cf,_0x159715){return db[_0x87fb('0x2f')][_0x87fb('0x46')]({'where':{'id':_0x5613cf['params']['id']}})[_0x87fb('0x24')](handleEntityNotFound(_0x159715,null))['then'](removeEntity(_0x159715,null))[_0x87fb('0x47')](handleError(_0x159715,null));};exports[_0x87fb('0x51')]=function(_0x433a95,_0x3c1a3a){return db['CmList'][_0x87fb('0x51')]()[_0x87fb('0x24')](respondWithResult(_0x3c1a3a,null))[_0x87fb('0x47')](handleError(_0x3c1a3a,null));};exports[_0x87fb('0x52')]=function(_0x3cec2e,_0x465860,_0x228c6a){if(_0x3cec2e[_0x87fb('0x49')]['id']){delete _0x3cec2e['body']['id'];}return db[_0x87fb('0x2f')][_0x87fb('0x46')]({'where':{'id':_0x3cec2e[_0x87fb('0x44')]['id']}})['then'](handleEntityNotFound(_0x465860,null))[_0x87fb('0x24')](function(_0x38b37f){if(_0x38b37f){_0x3cec2e[_0x87fb('0x49')][_0x87fb('0x53')]=_0x38b37f['id'];return db[_0x87fb('0x54')][_0x87fb('0x48')](_0x3cec2e[_0x87fb('0x49')]);}})['then'](respondWithResult(_0x465860,null))[_0x87fb('0x47')](handleError(_0x465860,null));};exports[_0x87fb('0x55')]=function(_0x2b542a,_0x277a65,_0xf13545){var _0x266c30={'raw':![],'where':{}};var _0x3bf069={};var _0x52be9d={'count':0x0,'rows':[]};return db['CmList'][_0x87fb('0x56')]({'where':{'id':_0x2b542a[_0x87fb('0x44')]['id']}})[_0x87fb('0x24')](handleEntityNotFound(_0x277a65,null))[_0x87fb('0x24')](function(_0x4a297c){if(_0x4a297c){_0x3bf069[_0x87fb('0x32')]=_['keys'](db[_0x87fb('0x54')]['rawAttributes']);_0x3bf069[_0x87fb('0x33')]=_[_0x87fb('0x45')](_0x2b542a['query']);_0x3bf069['filters']=_[_0x87fb('0x35')](_0x3bf069[_0x87fb('0x32')],_0x3bf069[_0x87fb('0x33')]);_0x266c30[_0x87fb('0x36')]=_[_0x87fb('0x35')](_0x3bf069[_0x87fb('0x32')],qs['fields'](_0x2b542a[_0x87fb('0x33')][_0x87fb('0x37')]));_0x266c30[_0x87fb('0x36')]=_0x266c30[_0x87fb('0x36')]['length']?_0x266c30['attributes']:_0x3bf069[_0x87fb('0x32')];if(!_0x2b542a['query'][_0x87fb('0x39')](_0x87fb('0x57'))){_0x266c30[_0x87fb('0x1d')]=qs[_0x87fb('0x1d')](_0x2b542a['query'][_0x87fb('0x1d')]);_0x266c30[_0x87fb('0x1b')]=qs['offset'](_0x2b542a[_0x87fb('0x33')][_0x87fb('0x1b')]);}_0x266c30[_0x87fb('0x3a')]=qs[_0x87fb('0x58')](_0x2b542a[_0x87fb('0x33')][_0x87fb('0x58')]);_0x266c30[_0x87fb('0x3b')]=qs[_0x87fb('0x34')](_[_0x87fb('0x59')](_0x2b542a[_0x87fb('0x33')],_0x3bf069[_0x87fb('0x34')]));_0x266c30[_0x87fb('0x3b')][_0x87fb('0x53')]=_0x4a297c['id'];if(_0x2b542a[_0x87fb('0x33')][_0x87fb('0x3c')]){_0x266c30[_0x87fb('0x3b')]=_[_0x87fb('0x5a')](_0x266c30['where'],{'$or':_[_0x87fb('0x2e')](_0x266c30[_0x87fb('0x36')],function(_0x55650b){var _0x1a6b9f={};_0x1a6b9f[_0x55650b]={'$like':'%'+_0x2b542a['query'][_0x87fb('0x3c')]+'%'};return _0x1a6b9f;})});}_0x266c30=_[_0x87fb('0x5a')]({},_0x266c30,_0x2b542a[_0x87fb('0x3f')]);return db[_0x87fb('0x54')][_0x87fb('0x1e')]({'where':_0x266c30['where']})['then'](function(_0x540723){_0x52be9d[_0x87fb('0x1e')]=_0x540723;if(_0x2b542a[_0x87fb('0x33')][_0x87fb('0x40')]){_0x266c30[_0x87fb('0x41')]=[{'all':!![]}];}return db['Disposition'][_0x87fb('0x42')](_0x266c30);})[_0x87fb('0x24')](function(_0x45f80d){_0x52be9d[_0x87fb('0x5b')]=_0x45f80d;return _0x52be9d;});}})[_0x87fb('0x24')](respondWithFilteredResult(_0x277a65,_0x266c30))[_0x87fb('0x47')](handleError(_0x277a65,null));};exports[_0x87fb('0x5c')]=function(_0x475f45,_0xbbb697,_0xa5387f){return db['CmList'][_0x87fb('0x46')]({'where':{'id':_0x475f45[_0x87fb('0x44')]['id']}})[_0x87fb('0x24')](handleEntityNotFound(_0xbbb697,null))[_0x87fb('0x24')](function(_0x4e91b0){if(_0x4e91b0){return _0x4e91b0[_0x87fb('0x5c')](_0x475f45[_0x87fb('0x33')][_0x87fb('0x5d')]);}})[_0x87fb('0x24')](respondWithStatusCode(_0xbbb697,null))[_0x87fb('0x47')](handleError(_0xbbb697,null));};exports['addContacts']=function(_0x3cde33,_0x3b80dc,_0x1e8145){return db[_0x87fb('0x2f')]['find']({'where':{'id':_0x3cde33[_0x87fb('0x44')]['id']}})[_0x87fb('0x24')](handleEntityNotFound(_0x3b80dc,null))[_0x87fb('0x24')](function(_0x479263){if(_0x479263){var _0x2b09af=[];var _0x2c5126={'success':[],'errors':[]};return db[_0x87fb('0x5e')]['describe']()[_0x87fb('0x24')](function(_0x56d69b){if(_0x3cde33[_0x87fb('0x49')][_0x87fb('0x5f')]&&_[_0x87fb('0x60')](_0x3cde33[_0x87fb('0x49')]['tags'])){if(_0x3cde33[_0x87fb('0x49')][_0x87fb('0x5f')][_0x87fb('0x38')]){_0x3cde33[_0x87fb('0x49')]['tags']=_0x3cde33[_0x87fb('0x49')][_0x87fb('0x5f')][_0x87fb('0x61')](';')+';';}else{_0x3cde33[_0x87fb('0x49')][_0x87fb('0x5f')]=null;}}else{_0x3cde33['body']['tags']=null;}if(_0x3cde33[_0x87fb('0x49')]&&_[_0x87fb('0x60')](_0x3cde33['body'])){for(var _0x2d8d7c=0x0;_0x2d8d7c<_0x3cde33['body']['length'];_0x2d8d7c+=0x1){_0x3cde33[_0x87fb('0x49')][_0x2d8d7c][_0x87fb('0x53')]=_0x3cde33[_0x87fb('0x44')]['id'];_0x2b09af['push'](_0x3cde33[_0x87fb('0x49')][_0x2d8d7c]);}return BPromise[_0x87fb('0x62')](_0x2b09af,function(_0x424d25){return db[_0x87fb('0x5e')][_0x87fb('0x48')](_[_0x87fb('0x63')](_0x424d25,[_0x87fb('0x5d'),'id'])||{},{'fields':_['keys'](_0x56d69b),'raw':!![]})[_0x87fb('0x24')](function(_0x1b4866){_0x2c5126[_0x87fb('0x64')][_0x87fb('0x65')](_0x1b4866[_0x87fb('0x66')]);})['catch'](function(_0x1adb70){_0x2c5126[_0x87fb('0x67')]['push']({'data':_0x424d25,'error':_0x1adb70[_0x87fb('0x68')]});});})[_0x87fb('0x24')](function(_0x43b11e){return _0x2c5126;})[_0x87fb('0x47')](function(_0x3325e0){return _0x3325e0;});}else{_0x3b80dc[_0x87fb('0x19')](0x190)[_0x87fb('0x1a')]({'message':'Malformed\x20request\x20syntax'});}});}})[_0x87fb('0x24')](respondWithResult(_0x3b80dc,null))[_0x87fb('0x47')](handleError(_0x3b80dc,null));};exports['getContacts']=function(_0x1cd474,_0x468bce,_0x5ee509){var _0x3408d1;return db['CmList'][_0x87fb('0x46')]({'where':{'id':_0x1cd474['params']['id']},'include':[{'model':db['CmCustomField'],'as':_0x87fb('0x69')}]})[_0x87fb('0x24')](handleEntityNotFound(_0x468bce,null))[_0x87fb('0x24')](function(_0x1988e3){if(_0x1988e3){_0x3408d1=_0x1988e3;return db[_0x87fb('0x5e')]['rawAttributes'];}})[_0x87fb('0x24')](function(_0x5113dd){if(_0x5113dd){var _0x6d0f1e={};var _0xbf7778={};_0xbf7778[_0x87fb('0x32')]=_['concat'](_['keys'](_0x5113dd),_[_0x87fb('0x2e')](_0x3408d1['CustomFields'],function(_0x38d1bb){return util['format']('cf_%d',_0x38d1bb['id']);}));_0xbf7778['query']=_[_0x87fb('0x45')](_0x1cd474[_0x87fb('0x33')]);_0xbf7778['filters']=_['intersection'](_0xbf7778[_0x87fb('0x32')],_0xbf7778['query']);_0x6d0f1e[_0x87fb('0x36')]=_[_0x87fb('0x35')](_0xbf7778[_0x87fb('0x32')],qs[_0x87fb('0x37')](_0x1cd474[_0x87fb('0x33')][_0x87fb('0x37')]));_0x6d0f1e['attributes']=_0x6d0f1e[_0x87fb('0x36')][_0x87fb('0x38')]?_0x6d0f1e[_0x87fb('0x36')]:_0xbf7778['model'];if(!_0x1cd474[_0x87fb('0x33')]['hasOwnProperty'](_0x87fb('0x57'))){_0x6d0f1e[_0x87fb('0x1d')]=qs['limit'](_0x1cd474[_0x87fb('0x33')]['limit']);_0x6d0f1e[_0x87fb('0x1b')]=qs[_0x87fb('0x1b')](_0x1cd474[_0x87fb('0x33')][_0x87fb('0x1b')]);}_0x6d0f1e[_0x87fb('0x3a')]=qs['sort'](_0x1cd474[_0x87fb('0x33')][_0x87fb('0x58')]);_0x6d0f1e[_0x87fb('0x3b')]=qs[_0x87fb('0x34')](_[_0x87fb('0x59')](_0x1cd474[_0x87fb('0x33')],_0xbf7778[_0x87fb('0x34')]));_0x6d0f1e[_0x87fb('0x6a')]=!![];if(_0x1cd474[_0x87fb('0x33')][_0x87fb('0x3c')]){_0x6d0f1e[_0x87fb('0x3b')]=_[_0x87fb('0x5a')](_0x6d0f1e[_0x87fb('0x3b')],{'$or':_[_0x87fb('0x2e')](_0x6d0f1e[_0x87fb('0x36')],function(_0x59b80a){var _0x4c2e1e={};_0x4c2e1e[_0x59b80a]={'$like':'%'+_0x1cd474['query']['filter']+'%'};return _0x4c2e1e;})});}_0x6d0f1e=_[_0x87fb('0x5a')]({},_0x6d0f1e,_0x1cd474['options']);return _0x3408d1[_0x87fb('0x6b')](_0x6d0f1e);}})[_0x87fb('0x24')](respondWithResult(_0x468bce,null))[_0x87fb('0x47')](handleError(_0x468bce,null));};exports[_0x87fb('0x6c')]=function(_0x14f360,_0x2e244a,_0x201251){var _0x3ecc79;return db[_0x87fb('0x2f')][_0x87fb('0x46')]({'where':{'id':_0x14f360[_0x87fb('0x44')]['id']},'include':[{'model':db[_0x87fb('0x6d')],'as':_0x87fb('0x69')}]})[_0x87fb('0x24')](handleEntityNotFound(_0x2e244a,null))[_0x87fb('0x24')](function(_0x598bd7){if(_0x598bd7){_0x3ecc79=_0x598bd7;return db[_0x87fb('0x5e')][_0x87fb('0x30')];}})[_0x87fb('0x24')](function(_0x4a124d){if(_0x4a124d){var _0x283ebf={};var _0x461bc7={};_0x461bc7['model']=_[_0x87fb('0x6e')](_[_0x87fb('0x45')](_0x4a124d),_[_0x87fb('0x2e')](_0x3ecc79[_0x87fb('0x69')],function(_0x40e61f){return util[_0x87fb('0x6f')](_0x87fb('0x70'),_0x40e61f['id']);}));_0x461bc7[_0x87fb('0x33')]=_[_0x87fb('0x45')](_0x14f360[_0x87fb('0x33')]);_0x461bc7[_0x87fb('0x34')]=_['intersection'](_0x461bc7[_0x87fb('0x32')],_0x461bc7[_0x87fb('0x33')]);_0x283ebf[_0x87fb('0x36')]=_[_0x87fb('0x35')](_0x461bc7[_0x87fb('0x32')],qs[_0x87fb('0x37')](_0x14f360[_0x87fb('0x33')][_0x87fb('0x37')]));_0x283ebf[_0x87fb('0x36')]=_0x283ebf[_0x87fb('0x36')][_0x87fb('0x38')]?_0x283ebf[_0x87fb('0x36')]:_0x461bc7[_0x87fb('0x32')];if(!_0x14f360['query']['hasOwnProperty']('nolimit')){_0x283ebf['limit']=qs[_0x87fb('0x1d')](_0x14f360[_0x87fb('0x33')][_0x87fb('0x1d')]);_0x283ebf[_0x87fb('0x1b')]=qs[_0x87fb('0x1b')](_0x14f360[_0x87fb('0x33')][_0x87fb('0x1b')]);}_0x283ebf[_0x87fb('0x3a')]=qs[_0x87fb('0x58')](_0x14f360[_0x87fb('0x33')][_0x87fb('0x58')]);_0x283ebf['where']=qs[_0x87fb('0x34')](_['pick'](_0x14f360[_0x87fb('0x33')],_0x461bc7['filters']));_0x283ebf['raw']=!![];if(_0x14f360[_0x87fb('0x33')]['filter']){_0x283ebf[_0x87fb('0x3b')]=_[_0x87fb('0x5a')](_0x283ebf[_0x87fb('0x3b')],{'$or':_[_0x87fb('0x2e')](_0x283ebf[_0x87fb('0x36')],function(_0x4496eb){var _0x4f0d8d={};_0x4f0d8d[_0x4496eb]={'$like':'%'+_0x14f360[_0x87fb('0x33')][_0x87fb('0x3c')]+'%'};return _0x4f0d8d;})});}_0x283ebf=_['merge']({},_0x283ebf,_0x14f360[_0x87fb('0x3f')]);return _0x3ecc79[_0x87fb('0x6b')](_0x283ebf);}})['then'](function(_0x251fd8){if(!_[_0x87fb('0x71')](_0x251fd8)){var _0x29e6ed=toCsv(_0x251fd8);var _0x5cdf80=Date['now']();fs['writeFileSync'](util[_0x87fb('0x6f')](_0x87fb('0x72'),_0x3ecc79['id'],_0x5cdf80),_0x29e6ed);_0x2e244a[_0x87fb('0x73')](_0x87fb('0x74'),_0x87fb('0x75')+util[_0x87fb('0x6f')](_0x87fb('0x76'),_0x3ecc79['id'],_0x5cdf80));_0x2e244a[_0x87fb('0x73')](_0x87fb('0x77'),_0x87fb('0x78'));return _0x2e244a[_0x87fb('0x79')](util[_0x87fb('0x6f')]('/tmp/list_%d_%s.csv',_0x3ecc79['id'],_0x5cdf80));}else{return _0x2e244a[_0x87fb('0x18')](0xcc);}})[_0x87fb('0x47')](handleError(_0x2e244a,null));};exports[_0x87fb('0x7a')]=function(_0x170cd1,_0x3e8f03,_0x4f22b1){var _0x2557c9;delete _0x170cd1['body']['id'];return db[_0x87fb('0x2f')][_0x87fb('0x56')]({'where':{'id':_0x170cd1[_0x87fb('0x44')]['id']}})['then'](handleEntityNotFound(_0x3e8f03,null))[_0x87fb('0x24')](function(_0x354853){if(_0x354853){return db[_0x87fb('0x7b')][_0x87fb('0x7c')](function(_0x1641c3){return db[_0x87fb('0x6d')][_0x87fb('0x48')](_0x170cd1[_0x87fb('0x49')],{'transaction':_0x1641c3})[_0x87fb('0x24')](function(_0x25e6cd){_0x2557c9=_0x25e6cd;return _0x354853[_0x87fb('0x7d')](_0x25e6cd,{'transaction':_0x1641c3});})[_0x87fb('0x24')](function(){var _0x3a938a={'type':db[_0x87fb('0x7e')][_0x87fb('0x7f')],'transaction':_0x1641c3};switch(_0x170cd1['body'][_0x87fb('0x3d')]){case _0x87fb('0x80'):_0x3a938a[_0x87fb('0x3d')]=db[_0x87fb('0x7e')]['TEXT'];break;case _0x87fb('0x81'):_0x3a938a[_0x87fb('0x3d')]=db[_0x87fb('0x7e')]['INTEGER'];break;case _0x87fb('0x82'):_0x3a938a['type']=db['Sequelize'][_0x87fb('0x83')];_0x3a938a[_0x87fb('0x84')]=![];break;default:}return db[_0x87fb('0x7b')][_0x87fb('0x85')][_0x87fb('0x86')](_0x87fb('0x87'),util[_0x87fb('0x6f')]('cf_%s',_0x2557c9['id']),_0x3a938a);})[_0x87fb('0x24')](function(){return _0x2557c9;});});}})[_0x87fb('0x24')](respondWithResult(_0x3e8f03,null))[_0x87fb('0x47')](handleError(_0x3e8f03,null));};exports[_0x87fb('0x88')]=function(_0x41dd9c,_0x3bbd46,_0x707ea1){var _0x1a1c90={};var _0x2fc4f4={};var _0x562978;var _0x8f722e;return db[_0x87fb('0x2f')]['findOne']({'where':{'id':_0x41dd9c[_0x87fb('0x44')]['id']}})[_0x87fb('0x24')](handleEntityNotFound(_0x3bbd46,null))[_0x87fb('0x24')](function(_0x5b7e28){if(_0x5b7e28){_0x562978=_0x5b7e28;_0x2fc4f4['model']=_[_0x87fb('0x45')](db[_0x87fb('0x6d')]['rawAttributes']);_0x2fc4f4[_0x87fb('0x33')]=_[_0x87fb('0x45')](_0x41dd9c[_0x87fb('0x33')]);_0x2fc4f4[_0x87fb('0x34')]=_[_0x87fb('0x35')](_0x2fc4f4[_0x87fb('0x32')],_0x2fc4f4[_0x87fb('0x33')]);_0x1a1c90[_0x87fb('0x36')]=_['intersection'](_0x2fc4f4[_0x87fb('0x32')],qs[_0x87fb('0x37')](_0x41dd9c[_0x87fb('0x33')][_0x87fb('0x37')]));_0x1a1c90[_0x87fb('0x36')]=_0x1a1c90[_0x87fb('0x36')][_0x87fb('0x38')]?_0x1a1c90['attributes']:_0x2fc4f4[_0x87fb('0x32')];_0x1a1c90[_0x87fb('0x3a')]=qs[_0x87fb('0x58')](_0x41dd9c['query'][_0x87fb('0x58')]);_0x1a1c90[_0x87fb('0x3b')]=qs[_0x87fb('0x34')](_[_0x87fb('0x59')](_0x41dd9c[_0x87fb('0x33')],_0x2fc4f4[_0x87fb('0x34')]));_0x1a1c90[_0x87fb('0x3b')]=_[_0x87fb('0x5a')](_0x1a1c90[_0x87fb('0x3b')],{'$or':[{'ListId':_0x5b7e28['id']},{'ListId':null}]});if(_0x41dd9c['query'][_0x87fb('0x3c')]){_0x1a1c90[_0x87fb('0x3b')]=_[_0x87fb('0x5a')](_0x1a1c90[_0x87fb('0x3b')],{'$or':_[_0x87fb('0x2e')](_0x1a1c90[_0x87fb('0x36')],function(_0x11b496){var _0x456a47={};_0x456a47[_0x11b496]={'$like':'%'+_0x41dd9c[_0x87fb('0x33')][_0x87fb('0x3c')]+'%'};return _0x456a47;})});}_0x1a1c90=_[_0x87fb('0x5a')]({},_0x1a1c90,_0x41dd9c[_0x87fb('0x3f')]);return db[_0x87fb('0x6d')][_0x87fb('0x89')](_0x1a1c90);}})[_0x87fb('0x24')](respondWithResult(_0x3bbd46,null))[_0x87fb('0x47')](handleError(_0x3bbd46,null));};exports[_0x87fb('0x8a')]=function(_0x1261d2,_0x4c918e,_0x222669){return db[_0x87fb('0x2f')][_0x87fb('0x46')]({'where':{'id':_0x1261d2[_0x87fb('0x44')]['id']}})[_0x87fb('0x24')](handleEntityNotFound(_0x4c918e,null))[_0x87fb('0x24')](function(_0x4c786e){if(_0x4c786e){return _0x4c786e[_0x87fb('0x8a')](_0x1261d2['body'][_0x87fb('0x5d')],_[_0x87fb('0x63')](_0x1261d2[_0x87fb('0x49')],[_0x87fb('0x5d'),'id'])||{})[_0x87fb('0x8b')](function(_0x4ef753){for(var _0x3ead6f=0x0;_0x3ead6f<_0x1261d2[_0x87fb('0x49')][_0x87fb('0x5d')][_0x87fb('0x38')];_0x3ead6f+=0x1){socket[_0x87fb('0x8c')](_0x87fb('0x8d'),{'UserId':Number(_0x1261d2[_0x87fb('0x49')][_0x87fb('0x5d')][_0x3ead6f]),'CmListId':Number(_0x1261d2[_0x87fb('0x44')]['id'])});}return _0x4ef753;});}})['then'](respondWithResult(_0x4c918e,null))[_0x87fb('0x47')](handleError(_0x4c918e,null));};exports[_0x87fb('0x8e')]=function(_0x337330,_0x256aa3,_0x515061){return db[_0x87fb('0x2f')][_0x87fb('0x46')]({'where':{'id':_0x337330['params']['id']}})['then'](handleEntityNotFound(_0x256aa3,null))[_0x87fb('0x24')](function(_0x5129f8){if(_0x5129f8){return _0x5129f8['removeAgents'](_0x337330['query'][_0x87fb('0x5d')])['then'](function(){if(_[_0x87fb('0x60')](_0x337330[_0x87fb('0x33')][_0x87fb('0x5d')])){for(var _0x187abb=0x0;_0x187abb<_0x337330[_0x87fb('0x33')][_0x87fb('0x5d')][_0x87fb('0x38')];_0x187abb+=0x1){socket[_0x87fb('0x8c')](_0x87fb('0x8f'),{'UserId':Number(_0x337330[_0x87fb('0x33')][_0x87fb('0x5d')][_0x187abb]),'CmListId':Number(_0x337330[_0x87fb('0x44')]['id'])});}}else{socket[_0x87fb('0x8c')](_0x87fb('0x8f'),{'UserId':Number(_0x337330[_0x87fb('0x33')][_0x87fb('0x5d')]),'CmListId':Number(_0x337330[_0x87fb('0x44')]['id'])});}});}})[_0x87fb('0x24')](respondWithStatusCode(_0x256aa3,null))[_0x87fb('0x47')](handleError(_0x256aa3,null));};exports[_0x87fb('0x90')]=function(_0x169215,_0x26c028,_0x4b6744){var _0x1d8d51={};var _0x31febe={};var _0x32e35d;var _0x15832d;return db['CmList'][_0x87fb('0x56')]({'where':{'id':_0x169215[_0x87fb('0x44')]['id']}})[_0x87fb('0x24')](handleEntityNotFound(_0x26c028,null))[_0x87fb('0x24')](function(_0x581851){if(_0x581851){_0x32e35d=_0x581851;_0x31febe[_0x87fb('0x32')]=_['keys'](db[_0x87fb('0x91')][_0x87fb('0x30')]);_0x31febe[_0x87fb('0x33')]=_[_0x87fb('0x45')](_0x169215[_0x87fb('0x33')]);_0x31febe['filters']=_[_0x87fb('0x35')](_0x31febe[_0x87fb('0x32')],_0x31febe['query']);_0x1d8d51[_0x87fb('0x36')]=_[_0x87fb('0x35')](_0x31febe['model'],qs[_0x87fb('0x37')](_0x169215[_0x87fb('0x33')]['fields']));_0x1d8d51[_0x87fb('0x36')]=_0x1d8d51[_0x87fb('0x36')][_0x87fb('0x38')]?_0x1d8d51['attributes']:_0x31febe[_0x87fb('0x32')];_0x1d8d51['order']=qs[_0x87fb('0x58')](_0x169215[_0x87fb('0x33')][_0x87fb('0x58')]);_0x1d8d51[_0x87fb('0x3b')]=qs[_0x87fb('0x34')](_[_0x87fb('0x59')](_0x169215[_0x87fb('0x33')],_0x31febe[_0x87fb('0x34')]));if(_0x169215['query'][_0x87fb('0x3c')]){_0x1d8d51['where']=_[_0x87fb('0x5a')](_0x1d8d51[_0x87fb('0x3b')],{'$or':_[_0x87fb('0x2e')](_0x1d8d51[_0x87fb('0x36')],function(_0x2e2ad2){var _0x1edc35={};_0x1edc35[_0x2e2ad2]={'$like':'%'+_0x169215[_0x87fb('0x33')][_0x87fb('0x3c')]+'%'};return _0x1edc35;})});}_0x1d8d51=_[_0x87fb('0x5a')]({},_0x1d8d51,_0x169215[_0x87fb('0x3f')]);return _0x32e35d[_0x87fb('0x90')](_0x1d8d51);}})[_0x87fb('0x24')](function(_0x3b4d5e){if(_0x3b4d5e){_0x15832d=_0x3b4d5e[_0x87fb('0x38')];if(!_0x169215[_0x87fb('0x33')][_0x87fb('0x39')](_0x87fb('0x57'))){_0x1d8d51[_0x87fb('0x1d')]=qs[_0x87fb('0x1d')](_0x169215[_0x87fb('0x33')]['limit']);_0x1d8d51[_0x87fb('0x1b')]=qs['offset'](_0x169215[_0x87fb('0x33')][_0x87fb('0x1b')]);}return _0x32e35d['getAgents'](_0x1d8d51);}})[_0x87fb('0x24')](function(_0x2e29ae){if(_0x2e29ae){return _0x2e29ae?{'count':_0x15832d,'rows':_0x2e29ae}:null;}})['then'](respondWithResult(_0x26c028,null))['catch'](handleError(_0x26c028,null));};
\ No newline at end of file
index 139fcff..51c901a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','CmList'];(function(_0x276a67,_0x36f13b){var _0x577516=function(_0x4c5ef7){while(--_0x4c5ef7){_0x276a67['push'](_0x276a67['shift']());}};_0x577516(++_0x36f13b);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var EventEmitter=require(_0x7995('0x0'));var CmList=require(_0x7995('0x1'))['db'][_0x7995('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0x7995('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7995('0x4'),'afterDestroy':_0x7995('0x5')};function emitEvent(_0x1902b4){return function(_0x462a03,_0x576d89,_0x744bea){CmListEvents[_0x7995('0x6')](_0x1902b4+':'+_0x462a03['id'],_0x462a03);CmListEvents[_0x7995('0x6')](_0x1902b4,_0x462a03);_0x744bea(null);};}for(var e in events){if(events[_0x7995('0x7')](e)){var event=events[e];CmList[_0x7995('0x8')](e,emitEvent(event));}}module[_0x7995('0x9')]=CmListEvents;
\ No newline at end of file
+var _0x5fc3=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3da707,_0x30c36d){_0x3da707=_0x3da707-0x0;var _0x342ee7=_0x5fc3[_0x3da707];return _0x342ee7;};'use strict';var EventEmitter=require(_0x35fc('0x0'));var CmList=require(_0x35fc('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0x35fc('0x2')](0x0);var events={'afterCreate':_0x35fc('0x3'),'afterUpdate':_0x35fc('0x4'),'afterDestroy':_0x35fc('0x5')};function emitEvent(_0xb4f9ce){return function(_0x5e75e6,_0x2d1404,_0x1d5fec){CmListEvents[_0x35fc('0x6')](_0xb4f9ce+':'+_0x5e75e6['id'],_0x5e75e6);CmListEvents['emit'](_0xb4f9ce,_0x5e75e6);_0x1d5fec(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0x35fc('0x7')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
index 7372a03..b9ab457 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf109=['CmList','cm_lists','lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports','define'];(function(_0x5bc93d,_0x3a3ff7){var _0x57133b=function(_0x11282b){while(--_0x11282b){_0x5bc93d['push'](_0x5bc93d['shift']());}};_0x57133b(++_0x3a3ff7);}(_0xf109,0xce));var _0x9f10=function(_0x1a7846,_0x59723e){_0x1a7846=_0x1a7846-0x0;var _0x48049=_0xf109[_0x1a7846];return _0x48049;};'use strict';var _=require(_0x9f10('0x0'));var util=require(_0x9f10('0x1'));var logger=require(_0x9f10('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9f10('0x3'));var fs=require('fs');var path=require(_0x9f10('0x4'));var rimraf=require(_0x9f10('0x5'));var config=require(_0x9f10('0x6'));var attributes=require(_0x9f10('0x7'));module[_0x9f10('0x8')]=function(_0x408fe8,_0xd3137b){return _0x408fe8[_0x9f10('0x9')](_0x9f10('0xa'),attributes,{'tableName':_0x9f10('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb821=['rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists','util','../../config/logger','bluebird'];(function(_0x50174c,_0xde1176){var _0x3e148e=function(_0x467823){while(--_0x467823){_0x50174c['push'](_0x50174c['shift']());}};_0x3e148e(++_0xde1176);}(_0xb821,0xa7));var _0x1b82=function(_0x250da7,_0x124875){_0x250da7=_0x250da7-0x0;var _0x1b4696=_0xb821[_0x250da7];return _0x1b4696;};'use strict';var _=require('lodash');var util=require(_0x1b82('0x0'));var logger=require(_0x1b82('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1b82('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1b82('0x3'));var config=require(_0x1b82('0x4'));var attributes=require(_0x1b82('0x5'));module[_0x1b82('0x6')]=function(_0x597ca7,_0x3e27c4){return _0x597ca7[_0x1b82('0x7')](_0x1b82('0x8'),attributes,{'tableName':_0x1b82('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3f9f387..bd989b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bf3=['debug','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','CmList,\x20%s,\x20%s','message','result','catch','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','register','request','then','info'];(function(_0x3a8057,_0x5a1697){var _0x48e1e6=function(_0x20b3b7){while(--_0x20b3b7){_0x3a8057['push'](_0x3a8057['shift']());}};_0x48e1e6(++_0x5a1697);}(_0x5bf3,0x184));var _0x35bf=function(_0x463699,_0x1493be){_0x463699=_0x463699-0x0;var _0x11fc97=_0x5bf3[_0x463699];return _0x11fc97;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x35bf('0x0'));var fs=require('fs');var Redis=require(_0x35bf('0x1'));var db=require(_0x35bf('0x2'))['db'];var utils=require(_0x35bf('0x3'));var logger=require(_0x35bf('0x4'))('rpc');var config=require(_0x35bf('0x5'));var jayson=require(_0x35bf('0x6'));var client=jayson[_0x35bf('0x7')][_0x35bf('0x8')]({'port':0x232a});config['redis']=_[_0x35bf('0x9')](config['redis'],{'host':_0x35bf('0xa'),'port':0x18eb});var socket=require(_0x35bf('0xb'))(new Redis(config[_0x35bf('0xc')]));require('./cmList.socket')[_0x35bf('0xd')](socket);function respondWithRpcPromise(_0x27ebd8,_0x26cec1,_0x15d044){return new BPromise(function(_0x282826,_0x42a524){return client[_0x35bf('0xe')](_0x27ebd8,_0x15d044)[_0x35bf('0xf')](function(_0x1c7399){logger[_0x35bf('0x10')]('CmList,\x20%s,\x20%s',_0x26cec1,'request\x20sent');logger[_0x35bf('0x11')](_0x35bf('0x12'),_0x26cec1,_0x35bf('0x13'),JSON[_0x35bf('0x14')](_0x1c7399));if(_0x1c7399['error']){if(_0x1c7399['error'][_0x35bf('0x15')]===0x1f4){logger[_0x35bf('0x16')](_0x35bf('0x17'),_0x26cec1,_0x1c7399[_0x35bf('0x16')]['message']);return _0x42a524(_0x1c7399[_0x35bf('0x16')][_0x35bf('0x18')]);}logger[_0x35bf('0x16')]('CmList,\x20%s,\x20%s',_0x26cec1,_0x1c7399['error'][_0x35bf('0x18')]);return _0x282826(_0x1c7399[_0x35bf('0x16')][_0x35bf('0x18')]);}else{logger[_0x35bf('0x10')]('CmList,\x20%s,\x20%s',_0x26cec1,_0x35bf('0x13'));_0x282826(_0x1c7399[_0x35bf('0x19')][_0x35bf('0x18')]);}})[_0x35bf('0x1a')](function(_0x50433e){logger[_0x35bf('0x16')](_0x35bf('0x17'),_0x26cec1,_0x50433e);_0x42a524(_0x50433e);});});}
\ No newline at end of file
+var _0xf11b=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','redis','defaults','localhost','socket.io-emitter','register','request','then','info','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','CmList,\x20%s,\x20%s','message','result','catch','util'];(function(_0x18a81a,_0x4fc65b){var _0x114027=function(_0x1b7e0f){while(--_0x1b7e0f){_0x18a81a['push'](_0x18a81a['shift']());}};_0x114027(++_0x4fc65b);}(_0xf11b,0x11d));var _0xbf11=function(_0x5a593f,_0x33c1d3){_0x5a593f=_0x5a593f-0x0;var _0x5fe1d1=_0xf11b[_0x5a593f];return _0x5fe1d1;};'use strict';var _=require('lodash');var util=require(_0xbf11('0x0'));var moment=require(_0xbf11('0x1'));var BPromise=require(_0xbf11('0x2'));var rs=require(_0xbf11('0x3'));var fs=require('fs');var Redis=require(_0xbf11('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbf11('0x5'));var logger=require(_0xbf11('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xbf11('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0xbf11('0x8')]=_[_0xbf11('0x9')](config['redis'],{'host':_0xbf11('0xa'),'port':0x18eb});var socket=require(_0xbf11('0xb'))(new Redis(config[_0xbf11('0x8')]));require('./cmList.socket')[_0xbf11('0xc')](socket);function respondWithRpcPromise(_0x14ef24,_0x20e163,_0x292c34){return new BPromise(function(_0x49f75e,_0x325436){return client[_0xbf11('0xd')](_0x14ef24,_0x292c34)[_0xbf11('0xe')](function(_0x3c3ac5){logger[_0xbf11('0xf')]('CmList,\x20%s,\x20%s',_0x20e163,_0xbf11('0x10'));logger[_0xbf11('0x11')](_0xbf11('0x12'),_0x20e163,'request\x20sent',JSON[_0xbf11('0x13')](_0x3c3ac5));if(_0x3c3ac5[_0xbf11('0x14')]){if(_0x3c3ac5[_0xbf11('0x14')][_0xbf11('0x15')]===0x1f4){logger[_0xbf11('0x14')](_0xbf11('0x16'),_0x20e163,_0x3c3ac5[_0xbf11('0x14')][_0xbf11('0x17')]);return _0x325436(_0x3c3ac5['error'][_0xbf11('0x17')]);}logger['error'](_0xbf11('0x16'),_0x20e163,_0x3c3ac5[_0xbf11('0x14')]['message']);return _0x49f75e(_0x3c3ac5[_0xbf11('0x14')]['message']);}else{logger[_0xbf11('0xf')]('CmList,\x20%s,\x20%s',_0x20e163,_0xbf11('0x10'));_0x49f75e(_0x3c3ac5[_0xbf11('0x18')][_0xbf11('0x17')]);}})[_0xbf11('0x19')](function(_0x435feb){logger[_0xbf11('0x14')](_0xbf11('0x16'),_0x20e163,_0x435feb);_0x325436(_0x435feb);});});}
\ No newline at end of file
index aa419e4..7edd364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f0f=['removeListener','save','remove','update','emit'];(function(_0x12926a,_0x4becb7){var _0x36e659=function(_0x40571a){while(--_0x40571a){_0x12926a['push'](_0x12926a['shift']());}};_0x36e659(++_0x4becb7);}(_0x7f0f,0x1d2));var _0xf7f0=function(_0xd469f,_0x28945b){_0xd469f=_0xd469f-0x0;var _0x63cb2=_0x7f0f[_0xd469f];return _0x63cb2;};'use strict';var CmListEvents=require('./cmList.events');var events=[_0xf7f0('0x0'),_0xf7f0('0x1'),_0xf7f0('0x2')];function createListener(_0x2fe1de,_0x575be0){return function(_0x5b1cbf){_0x575be0[_0xf7f0('0x3')](_0x2fe1de,_0x5b1cbf);};}function removeListener(_0x3eb78a,_0xf87ab){return function(){CmListEvents[_0xf7f0('0x4')](_0x3eb78a,_0xf87ab);};}exports['register']=function(_0x1a6f6c){for(var _0x352065=0x0,_0x8f79ef=events['length'];_0x352065<_0x8f79ef;_0x352065++){var _0x105fd7=events[_0x352065];var _0x70f1fd=createListener('cmList:'+_0x105fd7,_0x1a6f6c);CmListEvents['on'](_0x105fd7,_0x70f1fd);}};
\ No newline at end of file
+var _0x0875=['emit','removeListener','register','cmList:','./cmList.events','save','update'];(function(_0x4dfd5f,_0x3dcaf7){var _0x3e8927=function(_0x3f7896){while(--_0x3f7896){_0x4dfd5f['push'](_0x4dfd5f['shift']());}};_0x3e8927(++_0x3dcaf7);}(_0x0875,0xdd));var _0x5087=function(_0x697948,_0x496f25){_0x697948=_0x697948-0x0;var _0x31ca9c=_0x0875[_0x697948];return _0x31ca9c;};'use strict';var CmListEvents=require(_0x5087('0x0'));var events=[_0x5087('0x1'),'remove',_0x5087('0x2')];function createListener(_0x3ec1cc,_0x27d2ca){return function(_0x1d35b0){_0x27d2ca[_0x5087('0x3')](_0x3ec1cc,_0x1d35b0);};}function removeListener(_0x1a10d0,_0x58261c){return function(){CmListEvents[_0x5087('0x4')](_0x1a10d0,_0x58261c);};}exports[_0x5087('0x5')]=function(_0x1bf408){for(var _0x396004=0x0,_0x498b2f=events['length'];_0x396004<_0x498b2f;_0x396004++){var _0x3b4d0a=events[_0x396004];var _0x22d02e=createListener(_0x5087('0x6')+_0x3b4d0a,_0x1bf408);CmListEvents['on'](_0x3b4d0a,_0x22d02e);}};
\ No newline at end of file
index 6acf61a..4dcd37b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf972=['getContacts','/:id/contacts/csv','getContactsCsv','/:id/users','getAgents','post','addDisposition','addContacts','/:id/fields','addCustomField','addAgents','update','delete','destroy','removeDispositions','removeAgents','exports','multer','util','express','Router','../../components/auth/service','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts'];(function(_0x2604ac,_0x197cf5){var _0x5b1eae=function(_0x491526){while(--_0x491526){_0x2604ac['push'](_0x2604ac['shift']());}};_0x5b1eae(++_0x197cf5);}(_0xf972,0x147));var _0x2f97=function(_0x2b94cd,_0x571440){_0x2b94cd=_0x2b94cd-0x0;var _0x33ea0d=_0xf972[_0x2b94cd];return _0x33ea0d;};'use strict';var multer=require(_0x2f97('0x0'));var util=require(_0x2f97('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x2f97('0x2'));var router=express[_0x2f97('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2f97('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmList.controller');router[_0x2f97('0x5')]('/',auth[_0x2f97('0x6')](),controller[_0x2f97('0x7')]);router[_0x2f97('0x5')]('/describe',auth[_0x2f97('0x6')](),controller[_0x2f97('0x8')]);router[_0x2f97('0x5')](_0x2f97('0x9'),auth[_0x2f97('0x6')](),controller[_0x2f97('0xa')]);router[_0x2f97('0x5')](_0x2f97('0xb'),auth[_0x2f97('0x6')](),controller[_0x2f97('0xc')]);router['get'](_0x2f97('0xd'),auth[_0x2f97('0x6')](),controller[_0x2f97('0xe')]);router[_0x2f97('0x5')](_0x2f97('0xf'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x10')]);router['get']('/:id/fields',auth[_0x2f97('0x6')](),controller['getCustomFields']);router[_0x2f97('0x5')](_0x2f97('0x11'),auth['isAuthenticated'](),controller[_0x2f97('0x12')]);router['post']('/',auth[_0x2f97('0x6')](),controller['create']);router[_0x2f97('0x13')](_0x2f97('0xb'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x14')]);router[_0x2f97('0x13')](_0x2f97('0xd'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x15')]);router[_0x2f97('0x13')](_0x2f97('0x16'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x17')]);router[_0x2f97('0x13')](_0x2f97('0x11'),auth['isAuthenticated'](),controller[_0x2f97('0x18')]);router['put'](_0x2f97('0x9'),auth['isAuthenticated'](),controller[_0x2f97('0x19')]);router[_0x2f97('0x1a')](_0x2f97('0x9'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x1b')]);router[_0x2f97('0x1a')](_0x2f97('0xb'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x1c')]);router[_0x2f97('0x1a')](_0x2f97('0x11'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x1d')]);module[_0x2f97('0x1e')]=router;
\ No newline at end of file
+var _0x8940=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','describe','/:id','getContacts','getContactsCsv','getCustomFields','/:id/users','getAgents','post','/:id/dispositions','/:id/contacts','addContacts','/:id/fields','addCustomField','addAgents','put','delete','destroy','removeAgents','exports','multer','util','connect-timeout'];(function(_0x59095c,_0x23689f){var _0x2ac766=function(_0x82e54a){while(--_0x82e54a){_0x59095c['push'](_0x59095c['shift']());}};_0x2ac766(++_0x23689f);}(_0x8940,0x93));var _0x0894=function(_0x893eee,_0x2289a8){_0x893eee=_0x893eee-0x0;var _0x52026f=_0x8940[_0x893eee];return _0x52026f;};'use strict';var multer=require(_0x0894('0x0'));var util=require(_0x0894('0x1'));var path=require('path');var timeout=require(_0x0894('0x2'));var express=require(_0x0894('0x3'));var router=express[_0x0894('0x4')]();var fs_extra=require(_0x0894('0x5'));var auth=require(_0x0894('0x6'));var interaction=require(_0x0894('0x7'));var config=require('../../config/environment');var controller=require('./cmList.controller');router['get']('/',auth[_0x0894('0x8')](),controller[_0x0894('0x9')]);router[_0x0894('0xa')]('/describe',auth[_0x0894('0x8')](),controller[_0x0894('0xb')]);router[_0x0894('0xa')](_0x0894('0xc'),auth[_0x0894('0x8')](),controller['show']);router['get']('/:id/dispositions',auth[_0x0894('0x8')](),controller['getDispositions']);router['get']('/:id/contacts',auth[_0x0894('0x8')](),controller[_0x0894('0xd')]);router['get']('/:id/contacts/csv',auth[_0x0894('0x8')](),controller[_0x0894('0xe')]);router['get']('/:id/fields',auth[_0x0894('0x8')](),controller[_0x0894('0xf')]);router[_0x0894('0xa')](_0x0894('0x10'),auth[_0x0894('0x8')](),controller[_0x0894('0x11')]);router[_0x0894('0x12')]('/',auth[_0x0894('0x8')](),controller['create']);router[_0x0894('0x12')](_0x0894('0x13'),auth[_0x0894('0x8')](),controller['addDisposition']);router[_0x0894('0x12')](_0x0894('0x14'),auth['isAuthenticated'](),controller[_0x0894('0x15')]);router['post'](_0x0894('0x16'),auth['isAuthenticated'](),controller[_0x0894('0x17')]);router[_0x0894('0x12')]('/:id/users',auth[_0x0894('0x8')](),controller[_0x0894('0x18')]);router[_0x0894('0x19')](_0x0894('0xc'),auth[_0x0894('0x8')](),controller['update']);router[_0x0894('0x1a')](_0x0894('0xc'),auth[_0x0894('0x8')](),controller[_0x0894('0x1b')]);router[_0x0894('0x1a')]('/:id/dispositions',auth[_0x0894('0x8')](),controller['removeDispositions']);router[_0x0894('0x1a')]('/:id/users',auth[_0x0894('0x8')](),controller[_0x0894('0x1c')]);module[_0x0894('0x1d')]=router;
\ No newline at end of file
index 0b9e58f..4f04d0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72c2=['exports','VIRTUAL','field','STRING','sequelize'];(function(_0x2b78ac,_0x138d6e){var _0x51564d=function(_0x41ba92){while(--_0x41ba92){_0x2b78ac['push'](_0x2b78ac['shift']());}};_0x51564d(++_0x138d6e);}(_0x72c2,0xfe));var _0x272c=function(_0x5b5440,_0x11d622){_0x5b5440=_0x5b5440-0x0;var _0x1c8755=_0x72c2[_0x5b5440];return _0x1c8755;};'use strict';var Sequelize=require(_0x272c('0x0'));module[_0x272c('0x1')]={'name':{'type':Sequelize[_0x272c('0x2')],'get':function(_0x2e4794){return this['getDataValue'](_0x272c('0x3'));}},'field':{'type':Sequelize[_0x272c('0x4')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x272c('0x4')],'allowNull':![]}};
\ No newline at end of file
+var _0x2354=['VIRTUAL','getDataValue','field','STRING','sequelize','exports'];(function(_0x49cdf4,_0x4fb777){var _0x1ee805=function(_0x149433){while(--_0x149433){_0x49cdf4['push'](_0x49cdf4['shift']());}};_0x1ee805(++_0x4fb777);}(_0x2354,0x124));var _0x4235=function(_0x5ea1aa,_0x414b7c){_0x5ea1aa=_0x5ea1aa-0x0;var _0x260558=_0x2354[_0x5ea1aa];return _0x260558;};'use strict';var Sequelize=require(_0x4235('0x0'));module[_0x4235('0x1')]={'name':{'type':Sequelize[_0x4235('0x2')],'get':function(_0x5bb7c6){return this[_0x4235('0x3')](_0x4235('0x4'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0x4235('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0x4235('0x5')],'allowNull':![]}};
\ No newline at end of file
index 3a3e6b8..16c6371 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x3579e6,_0x2a1859){var _0x3a16e7=function(_0x36ddad){while(--_0x36ddad){_0x3579e6['push'](_0x3579e6['shift']());}};_0x3a16e7(++_0x2a1859);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
+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(_0x128353,_0x58570){var _0x148a38=function(_0xd1b496){while(--_0xd1b496){_0x128353['push'](_0x128353['shift']());}};_0x148a38(++_0x58570);}(_0x7a54,0x106));var _0x47a5=function(_0x112ee3,_0x37b63e){_0x112ee3=_0x112ee3-0x0;var _0x35b8e1=_0x7a54[_0x112ee3];return _0x35b8e1;};'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 f07f85e..4b65e86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b92=['../../config/environment','./condition.attributes','exports','define','tools_conditions','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x1e3750,_0x194230){var _0x2b1634=function(_0x5dbd7f){while(--_0x5dbd7f){_0x1e3750['push'](_0x1e3750['shift']());}};_0x2b1634(++_0x194230);}(_0x0b92,0x101));var _0x20b9=function(_0x2d98aa,_0x350f59){_0x2d98aa=_0x2d98aa-0x0;var _0x5c63a8=_0x0b92[_0x2d98aa];return _0x5c63a8;};'use strict';var _=require(_0x20b9('0x0'));var util=require(_0x20b9('0x1'));var logger=require(_0x20b9('0x2'))(_0x20b9('0x3'));var moment=require('moment');var BPromise=require(_0x20b9('0x4'));var rp=require(_0x20b9('0x5'));var fs=require('fs');var path=require(_0x20b9('0x6'));var rimraf=require('rimraf');var config=require(_0x20b9('0x7'));var attributes=require(_0x20b9('0x8'));module[_0x20b9('0x9')]=function(_0x2cc3ce,_0x18d7fb){return _0x2cc3ce[_0x20b9('0xa')]('Condition',attributes,{'tableName':_0x20b9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9240=['./condition.attributes','exports','define','Condition','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9240,0x108));var _0x0924=function(_0x2555d0,_0x4150a6){_0x2555d0=_0x2555d0-0x0;var _0x3bb486=_0x9240[_0x2555d0];return _0x3bb486;};'use strict';var _=require(_0x0924('0x0'));var util=require(_0x0924('0x1'));var logger=require(_0x0924('0x2'))(_0x0924('0x3'));var moment=require(_0x0924('0x4'));var BPromise=require(_0x0924('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0924('0x6'));var rimraf=require(_0x0924('0x7'));var config=require(_0x0924('0x8'));var attributes=require(_0x0924('0x9'));module[_0x0924('0xa')]=function(_0x5d15ee,_0x13e2fd){return _0x5d15ee[_0x0924('0xb')](_0x0924('0xc'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7cf5a34..bd504f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe24b=['then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request'];(function(_0xfeb39,_0x1d20b7){var _0x167aa8=function(_0x54b506){while(--_0x54b506){_0xfeb39['push'](_0xfeb39['shift']());}};_0x167aa8(++_0x1d20b7);}(_0xe24b,0x16a));var _0xbe24=function(_0x236c89,_0xd76ba9){_0x236c89=_0x236c89-0x0;var _0x3b2a15=_0xe24b[_0x236c89];return _0x3b2a15;};'use strict';var _=require(_0xbe24('0x0'));var util=require(_0xbe24('0x1'));var moment=require('moment');var BPromise=require(_0xbe24('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbe24('0x3'));var db=require(_0xbe24('0x4'))['db'];var utils=require(_0xbe24('0x5'));var logger=require(_0xbe24('0x6'))(_0xbe24('0x7'));var config=require(_0xbe24('0x8'));var jayson=require(_0xbe24('0x9'));var client=jayson[_0xbe24('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4963ad,_0xf79d7b,_0x28f081){return new BPromise(function(_0x5c0553,_0x5867bb){return client[_0xbe24('0xb')](_0x4963ad,_0x28f081)[_0xbe24('0xc')](function(_0xc2ce1){logger[_0xbe24('0xd')](_0xbe24('0xe'),_0xf79d7b,_0xbe24('0xf'));logger[_0xbe24('0x10')](_0xbe24('0x11'),_0xf79d7b,_0xbe24('0xf'),JSON[_0xbe24('0x12')](_0xc2ce1));if(_0xc2ce1[_0xbe24('0x13')]){if(_0xc2ce1[_0xbe24('0x13')]['code']===0x1f4){logger[_0xbe24('0x13')]('Condition,\x20%s,\x20%s',_0xf79d7b,_0xc2ce1[_0xbe24('0x13')]['message']);return _0x5867bb(_0xc2ce1[_0xbe24('0x13')][_0xbe24('0x14')]);}logger[_0xbe24('0x13')]('Condition,\x20%s,\x20%s',_0xf79d7b,_0xc2ce1[_0xbe24('0x13')]['message']);return _0x5c0553(_0xc2ce1[_0xbe24('0x13')][_0xbe24('0x14')]);}else{logger['info']('Condition,\x20%s,\x20%s',_0xf79d7b,_0xbe24('0xf'));_0x5c0553(_0xc2ce1['result'][_0xbe24('0x14')]);}})[_0xbe24('0x15')](function(_0x151557){logger[_0xbe24('0x13')](_0xbe24('0xe'),_0xf79d7b,_0x151557);_0x5867bb(_0x151557);});});}
\ No newline at end of file
+var _0x4935=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','error','code','message','info','result'];(function(_0x5c049a,_0x2c1263){var _0x168e70=function(_0x49441e){while(--_0x49441e){_0x5c049a['push'](_0x5c049a['shift']());}};_0x168e70(++_0x2c1263);}(_0x4935,0x1b6));var _0x5493=function(_0x8a27f4,_0xfc0e03){_0x8a27f4=_0x8a27f4-0x0;var _0x5e876e=_0x4935[_0x8a27f4];return _0x5e876e;};'use strict';var _=require(_0x5493('0x0'));var util=require(_0x5493('0x1'));var moment=require('moment');var BPromise=require(_0x5493('0x2'));var rs=require(_0x5493('0x3'));var fs=require('fs');var Redis=require(_0x5493('0x4'));var db=require(_0x5493('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5493('0x6'))(_0x5493('0x7'));var config=require(_0x5493('0x8'));var jayson=require(_0x5493('0x9'));var client=jayson[_0x5493('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5be4a2,_0x4e9fcc,_0x46c55){return new BPromise(function(_0x1c46b8,_0x22c0b7){return client[_0x5493('0xb')](_0x5be4a2,_0x46c55)[_0x5493('0xc')](function(_0x524c1c){logger['info'](_0x5493('0xd'),_0x4e9fcc,_0x5493('0xe'));logger[_0x5493('0xf')](_0x5493('0x10'),_0x4e9fcc,'request\x20sent',JSON['stringify'](_0x524c1c));if(_0x524c1c[_0x5493('0x11')]){if(_0x524c1c['error'][_0x5493('0x12')]===0x1f4){logger[_0x5493('0x11')](_0x5493('0xd'),_0x4e9fcc,_0x524c1c['error'][_0x5493('0x13')]);return _0x22c0b7(_0x524c1c[_0x5493('0x11')][_0x5493('0x13')]);}logger[_0x5493('0x11')]('Condition,\x20%s,\x20%s',_0x4e9fcc,_0x524c1c[_0x5493('0x11')][_0x5493('0x13')]);return _0x1c46b8(_0x524c1c[_0x5493('0x11')][_0x5493('0x13')]);}else{logger[_0x5493('0x14')](_0x5493('0xd'),_0x4e9fcc,_0x5493('0xe'));_0x1c46b8(_0x524c1c[_0x5493('0x15')]['message']);}})[_0x5493('0x16')](function(_0x54b23f){logger[_0x5493('0x11')](_0x5493('0xd'),_0x4e9fcc,_0x54b23f);_0x22c0b7(_0x54b23f);});});}
\ No newline at end of file
index f64fadf..83573d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bfa=['exports','multer','util','path','connect-timeout','Router','../../components/auth/service','./condition.controller','put','/:id','update','delete','destroy'];(function(_0x56c70f,_0x4e4493){var _0x3812ed=function(_0x25460f){while(--_0x25460f){_0x56c70f['push'](_0x56c70f['shift']());}};_0x3812ed(++_0x4e4493);}(_0x6bfa,0x139));var _0xa6bf=function(_0x33645a,_0x4c1f43){_0x33645a=_0x33645a-0x0;var _0x36ee2b=_0x6bfa[_0x33645a];return _0x36ee2b;};'use strict';var multer=require(_0xa6bf('0x0'));var util=require(_0xa6bf('0x1'));var path=require(_0xa6bf('0x2'));var timeout=require(_0xa6bf('0x3'));var express=require('express');var router=express[_0xa6bf('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa6bf('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa6bf('0x6'));router[_0xa6bf('0x7')](_0xa6bf('0x8'),auth['isAuthenticated'](),controller[_0xa6bf('0x9')]);router[_0xa6bf('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xa6bf('0xb')]);module[_0xa6bf('0xc')]=router;
\ No newline at end of file
+var _0x34a4=['./condition.controller','isAuthenticated','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0xc0b0e5,_0x32d420){var _0x18b4eb=function(_0x3249b8){while(--_0x3249b8){_0xc0b0e5['push'](_0xc0b0e5['shift']());}};_0x18b4eb(++_0x32d420);}(_0x34a4,0x1c1));var _0x434a=function(_0xf466fc,_0xe6b550){_0xf466fc=_0xf466fc-0x0;var _0x1e6330=_0x34a4[_0xf466fc];return _0x1e6330;};'use strict';var multer=require(_0x434a('0x0'));var util=require(_0x434a('0x1'));var path=require(_0x434a('0x2'));var timeout=require(_0x434a('0x3'));var express=require(_0x434a('0x4'));var router=express[_0x434a('0x5')]();var fs_extra=require(_0x434a('0x6'));var auth=require(_0x434a('0x7'));var interaction=require(_0x434a('0x8'));var config=require(_0x434a('0x9'));var controller=require(_0x434a('0xa'));router['put']('/:id',auth[_0x434a('0xb')](),controller[_0x434a('0xc')]);router[_0x434a('0xd')](_0x434a('0xe'),auth['isAuthenticated'](),controller[_0x434a('0xf')]);module[_0x434a('0x10')]=router;
\ No newline at end of file
index 3f7627a..ccb2d97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['STRING','sequelize'];(function(_0x318840,_0x561b1e){var _0x223da4=function(_0x510071){while(--_0x510071){_0x318840['push'](_0x318840['shift']());}};_0x223da4(++_0x561b1e);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xb7e7[_0x2a6809];return _0x11c371;};'use strict';var Sequelize=require(_0x7b7e('0x0'));module['exports']={'name':{'type':Sequelize[_0x7b7e('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x7b7e('0x1')]}};
\ No newline at end of file
+var _0x2032=['name','exports','STRING'];(function(_0x123a64,_0x5ec68d){var _0x1741fc=function(_0x1c7838){while(--_0x1c7838){_0x123a64['push'](_0x123a64['shift']());}};_0x1741fc(++_0x5ec68d);}(_0x2032,0xd9));var _0x2203=function(_0x12b231,_0x281e4e){_0x12b231=_0x12b231-0x0;var _0x5081db=_0x2032[_0x12b231];return _0x5081db;};'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 af8368b..355aef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9629=['Unable\x20to\x20retrieve\x20the\x20current\x20user','role','CustomDashboards','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','body','autoAssociation','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','attrTimezone','0.00','counter','attrMetric','total','attrVoiceQueues','attrFontSize','multibar-chart','attrSerie1','attrSerie3','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','addItem','DashboardId','DashboardItem','getItems','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','localhost','redis','./dashboard.socket','register','sendStatus','status','offset','undefined','limit','count','set','json','apply','save','update','then','destroy','UserProfileResource','end','error','stack','send','index','map','Dashboard','rawAttributes','fieldName','key','model','name','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','include','findAll','rows','catch','show','keys','includeAll','options','find','create','user','get'];(function(_0x24c0e6,_0x35f0b5){var _0x19da55=function(_0x2fd3a3){while(--_0x2fd3a3){_0x24c0e6['push'](_0x24c0e6['shift']());}};_0x19da55(++_0x35f0b5);}(_0x9629,0x117));var _0x9962=function(_0x449a83,_0x53399d){_0x449a83=_0x449a83-0x0;var _0x5d5de4=_0x9629[_0x449a83];return _0x5d5de4;};'use strict';var emlformat=require(_0x9962('0x0'));var rimraf=require(_0x9962('0x1'));var zipdir=require(_0x9962('0x2'));var jsonpatch=require(_0x9962('0x3'));var rp=require(_0x9962('0x4'));var moment=require(_0x9962('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9962('0x6'));var util=require(_0x9962('0x7'));var path=require(_0x9962('0x8'));var sox=require('sox');var csv=require(_0x9962('0x9'));var ejs=require(_0x9962('0xa'));var fs=require('fs');var fs_extra=require(_0x9962('0xb'));var _=require(_0x9962('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9962('0xd'));var deskjs=require(_0x9962('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9962('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x9962('0x10'));var qs=require(_0x9962('0x11'));var as=require(_0x9962('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9962('0x13'))(_0x9962('0x14'));var utils=require(_0x9962('0x15'));var config=require(_0x9962('0x16'));var licenseUtil=require(_0x9962('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x9962('0x18')](config['redis'],{'host':_0x9962('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9962('0x1a')]));require(_0x9962('0x1b'))[_0x9962('0x1c')](socket);function respondWithStatusCode(_0x430bfa,_0xf6f2a9){_0xf6f2a9=_0xf6f2a9||0xcc;return function(_0x426914){if(_0x426914){return _0x430bfa[_0x9962('0x1d')](_0xf6f2a9);}return _0x430bfa['status'](_0xf6f2a9)['end']();};}function respondWithResult(_0x420993,_0x39ac98){_0x39ac98=_0x39ac98||0xc8;return function(_0x4dc5e7){if(_0x4dc5e7){return _0x420993[_0x9962('0x1e')](_0x39ac98)['json'](_0x4dc5e7);}};}function respondWithFilteredResult(_0x5d258b,_0x2426bc){return function(_0x282b0a){if(_0x282b0a){var _0x4effd7=typeof _0x2426bc[_0x9962('0x1f')]===_0x9962('0x20')&&typeof _0x2426bc[_0x9962('0x21')]==='undefined';var _0x5d4651=_0x282b0a[_0x9962('0x22')];var _0x529015=_0x4effd7?0x0:_0x2426bc[_0x9962('0x1f')];var _0x3977f8=_0x4effd7?_0x282b0a[_0x9962('0x22')]:_0x2426bc[_0x9962('0x1f')]+_0x2426bc[_0x9962('0x21')];var _0x1f2cd3;if(_0x3977f8>=_0x5d4651){_0x3977f8=_0x5d4651;_0x1f2cd3=0xc8;}else{_0x1f2cd3=0xce;}_0x5d258b[_0x9962('0x1e')](_0x1f2cd3);return _0x5d258b[_0x9962('0x23')]('Content-Range',_0x529015+'-'+_0x3977f8+'/'+_0x5d4651)[_0x9962('0x24')](_0x282b0a);}return null;};}function patchUpdates(_0x3defd9){return function(_0x19c597){try{jsonpatch[_0x9962('0x25')](_0x19c597,_0x3defd9,!![]);}catch(_0x50b98e){return BPromise['reject'](_0x50b98e);}return _0x19c597[_0x9962('0x26')]();};}function saveUpdates(_0x5ce754,_0x366e5e){return function(_0x351e11){if(_0x351e11){return _0x351e11[_0x9962('0x27')](_0x5ce754)[_0x9962('0x28')](function(_0x6ef9ae){return _0x6ef9ae;});}return null;};}function removeEntity(_0x29a4c2,_0x3c049d){return function(_0x4ea1a9){if(_0x4ea1a9){return _0x4ea1a9[_0x9962('0x29')]()['then'](function(){var _0x27e646=_0x4ea1a9['get']({'plain':!![]});var _0x1f0688='CustomDashboards';return db[_0x9962('0x2a')][_0x9962('0x29')]({'where':{'type':_0x1f0688,'resourceId':_0x27e646['id']}})['then'](function(){return _0x4ea1a9;});})[_0x9962('0x28')](function(){_0x29a4c2[_0x9962('0x1e')](0xcc)[_0x9962('0x2b')]();});}};}function handleEntityNotFound(_0x413426,_0x547856){return function(_0x32f521){if(!_0x32f521){_0x413426[_0x9962('0x1d')](0x194);}return _0x32f521;};}function handleError(_0x398015,_0x43d771){_0x43d771=_0x43d771||0x1f4;return function(_0x51ad3d){logger[_0x9962('0x2c')](_0x51ad3d[_0x9962('0x2d')]);if(_0x51ad3d['name']){delete _0x51ad3d['name'];}_0x398015['status'](_0x43d771)[_0x9962('0x2e')](_0x51ad3d);};}exports[_0x9962('0x2f')]=function(_0x3a3a3b,_0x5c5405){var _0x25e1c0={},_0x2f2a94={},_0x1e597e={'count':0x0,'rows':[]};var _0x1dcd1f=_[_0x9962('0x30')](db[_0x9962('0x31')][_0x9962('0x32')],function(_0xc62857){return{'name':_0xc62857[_0x9962('0x33')],'type':_0xc62857['type'][_0x9962('0x34')]};});_0x2f2a94[_0x9962('0x35')]=_['map'](_0x1dcd1f,_0x9962('0x36'));_0x2f2a94[_0x9962('0x37')]=_['keys'](_0x3a3a3b[_0x9962('0x37')]);_0x2f2a94[_0x9962('0x38')]=_[_0x9962('0x39')](_0x2f2a94[_0x9962('0x35')],_0x2f2a94[_0x9962('0x37')]);_0x25e1c0['attributes']=_['intersection'](_0x2f2a94[_0x9962('0x35')],qs[_0x9962('0x3a')](_0x3a3a3b[_0x9962('0x37')]['fields']));_0x25e1c0[_0x9962('0x3b')]=_0x25e1c0['attributes'][_0x9962('0x3c')]?_0x25e1c0[_0x9962('0x3b')]:_0x2f2a94[_0x9962('0x35')];if(!_0x3a3a3b[_0x9962('0x37')][_0x9962('0x3d')](_0x9962('0x3e'))){_0x25e1c0['limit']=qs[_0x9962('0x21')](_0x3a3a3b[_0x9962('0x37')][_0x9962('0x21')]);_0x25e1c0['offset']=qs[_0x9962('0x1f')](_0x3a3a3b['query'][_0x9962('0x1f')]);}_0x25e1c0[_0x9962('0x3f')]=qs[_0x9962('0x40')](_0x3a3a3b[_0x9962('0x37')][_0x9962('0x40')]);_0x25e1c0['where']=qs[_0x9962('0x38')](_[_0x9962('0x41')](_0x3a3a3b[_0x9962('0x37')],_0x2f2a94[_0x9962('0x38')]),_0x1dcd1f);if(_0x3a3a3b[_0x9962('0x37')][_0x9962('0x42')]){_0x25e1c0['where']=_[_0x9962('0x43')](_0x25e1c0[_0x9962('0x44')],{'$or':_[_0x9962('0x30')](_0x1dcd1f,function(_0x29e16e){if(_0x29e16e['type']!=='VIRTUAL'){var _0x421a64={};_0x421a64[_0x29e16e['name']]={'$like':'%'+_0x3a3a3b['query'][_0x9962('0x42')]+'%'};return _0x421a64;}})});}_0x25e1c0=_['merge']({},_0x25e1c0,_0x3a3a3b['options']);var _0x5d42f4={'where':_0x25e1c0[_0x9962('0x44')]};return db['Dashboard']['count'](_0x5d42f4)[_0x9962('0x28')](function(_0x14883a){_0x1e597e[_0x9962('0x22')]=_0x14883a;if(_0x3a3a3b[_0x9962('0x37')]['includeAll']){_0x25e1c0[_0x9962('0x45')]=[{'all':!![]}];}return db[_0x9962('0x31')][_0x9962('0x46')](_0x25e1c0);})[_0x9962('0x28')](function(_0x14fe2d){_0x1e597e[_0x9962('0x47')]=_0x14fe2d;return _0x1e597e;})[_0x9962('0x28')](respondWithFilteredResult(_0x5c5405,_0x25e1c0))[_0x9962('0x48')](handleError(_0x5c5405,null));};exports[_0x9962('0x49')]=function(_0x4b454e,_0x212ec7){var _0x183982={'raw':![],'where':{'id':_0x4b454e['params']['id']}},_0x54a072={};_0x54a072[_0x9962('0x35')]=_[_0x9962('0x4a')](db[_0x9962('0x31')][_0x9962('0x32')]);_0x54a072[_0x9962('0x37')]=_[_0x9962('0x4a')](_0x4b454e[_0x9962('0x37')]);_0x54a072[_0x9962('0x38')]=_[_0x9962('0x39')](_0x54a072[_0x9962('0x35')],_0x54a072[_0x9962('0x37')]);_0x183982['attributes']=_[_0x9962('0x39')](_0x54a072[_0x9962('0x35')],qs[_0x9962('0x3a')](_0x4b454e[_0x9962('0x37')][_0x9962('0x3a')]));_0x183982['attributes']=_0x183982[_0x9962('0x3b')]['length']?_0x183982[_0x9962('0x3b')]:_0x54a072[_0x9962('0x35')];if(_0x4b454e['query'][_0x9962('0x4b')]){_0x183982[_0x9962('0x45')]=[{'all':!![]}];}_0x183982=_[_0x9962('0x43')]({},_0x183982,_0x4b454e[_0x9962('0x4c')]);return db[_0x9962('0x31')][_0x9962('0x4d')](_0x183982)[_0x9962('0x28')](handleEntityNotFound(_0x212ec7,null))[_0x9962('0x28')](respondWithResult(_0x212ec7,null))['catch'](handleError(_0x212ec7,null));};exports[_0x9962('0x4e')]=function(_0x1e3dff,_0x5503d7){return db[_0x9962('0x31')][_0x9962('0x4e')](_0x1e3dff['body'],{})[_0x9962('0x28')](function(_0x183bdc){var _0x107ea8=_0x1e3dff[_0x9962('0x4f')][_0x9962('0x50')]({'plain':!![]});if(!_0x107ea8)throw new Error(_0x9962('0x51'));if(_0x107ea8[_0x9962('0x52')]===_0x9962('0x4f')){var _0x5db73e=_0x183bdc[_0x9962('0x50')]({'plain':!![]});var _0x5f4d19=_0x9962('0x53');return db[_0x9962('0x54')][_0x9962('0x4d')]({'where':{'name':_0x5f4d19,'userProfileId':_0x107ea8[_0x9962('0x55')]},'raw':!![]})[_0x9962('0x28')](function(_0x418de0){if(_0x418de0&&_0x418de0['autoAssociation']===0x0){return db[_0x9962('0x2a')]['create']({'name':_0x5db73e[_0x9962('0x36')],'resourceId':_0x5db73e['id'],'type':_0x418de0['name'],'sectionId':_0x418de0['id']},{})[_0x9962('0x28')](function(){return _0x183bdc;});}else{return _0x183bdc;}})['catch'](function(_0x16f4df){logger['error'](_0x9962('0x56'),_0x16f4df);throw _0x16f4df;});}return _0x183bdc;})[_0x9962('0x28')](respondWithResult(_0x5503d7,0xc9))[_0x9962('0x48')](handleError(_0x5503d7,null));};exports[_0x9962('0x57')]=function(_0x3ef0e5,_0x2bff96){var _0x3e2dff={'where':{'id':_0x3ef0e5[_0x9962('0x58')]['id']}},_0xaacd5b={};_0xaacd5b[_0x9962('0x35')]=_[_0x9962('0x4a')](db[_0x9962('0x31')][_0x9962('0x32')]);_0x3e2dff[_0x9962('0x3b')]=_[_0x9962('0x39')](_0xaacd5b[_0x9962('0x35')],qs['fields'](_0x3ef0e5[_0x9962('0x37')][_0x9962('0x3a')]));_0x3e2dff[_0x9962('0x3b')]=_0x3e2dff['attributes']['length']?_0x3e2dff['attributes']:_0xaacd5b[_0x9962('0x35')];if(_0x3ef0e5[_0x9962('0x37')]['includeAll']){_0x3e2dff[_0x9962('0x45')]=[{'all':!![]}];}_0x3e2dff=_['merge']({},_0x3e2dff,_0x3ef0e5['options']);return db[_0x9962('0x31')][_0x9962('0x4d')](_0x3e2dff)[_0x9962('0x28')](handleEntityNotFound(_0x2bff96,null))[_0x9962('0x28')](function(_0x4354ac){if(_0x4354ac){var _0x24c309=_0x4354ac[_0x9962('0x50')]({'plain':!![]});_0x24c309=qs[_0x9962('0x59')](_0x24c309,['id',_0x9962('0x5a'),_0x9962('0x5b')]);_0x3ef0e5[_0x9962('0x5c')]=_['omit'](_0x3ef0e5[_0x9962('0x5c')],['id','createdAt',_0x9962('0x5b')]);return db[_0x9962('0x31')]['create'](_[_0x9962('0x43')](_0x24c309,_0x3ef0e5[_0x9962('0x5c')]),{'include':_0x3ef0e5[_0x9962('0x37')][_0x9962('0x4b')]?[{'all':!![]}]:undefined})[_0x9962('0x28')](function(_0x34f946){var _0x26f431=_0x3ef0e5['user'][_0x9962('0x50')]({'plain':!![]});if(!_0x26f431)throw new Error(_0x9962('0x51'));if(_0x26f431[_0x9962('0x52')]===_0x9962('0x4f')){var _0x53d558=_0x34f946[_0x9962('0x50')]({'plain':!![]});var _0x3784c2=_0x9962('0x53');return db[_0x9962('0x54')][_0x9962('0x4d')]({'where':{'name':_0x3784c2,'userProfileId':_0x26f431['userProfileId']},'raw':!![]})[_0x9962('0x28')](function(_0x5a2705){if(_0x5a2705&&_0x5a2705[_0x9962('0x5d')]===0x0){return db['UserProfileResource']['create']({'name':_0x53d558[_0x9962('0x36')],'resourceId':_0x53d558['id'],'type':_0x5a2705['name'],'sectionId':_0x5a2705['id']},{})['then'](function(){return _0x34f946;});}else{return _0x34f946;}})[_0x9962('0x48')](function(_0x3d76a8){logger[_0x9962('0x2c')](_0x9962('0x56'),_0x3d76a8);throw _0x3d76a8;});}return _0x34f946;});}})['then'](respondWithResult(_0x2bff96,0xc9))[_0x9962('0x48')](handleError(_0x2bff96,null));};exports[_0x9962('0x27')]=function(_0x3a46bf,_0x5d58d7){if(_0x3a46bf[_0x9962('0x5c')]['id']){delete _0x3a46bf[_0x9962('0x5c')]['id'];}return db[_0x9962('0x31')][_0x9962('0x4d')]({'where':{'id':_0x3a46bf['params']['id']}})[_0x9962('0x28')](handleEntityNotFound(_0x5d58d7,null))[_0x9962('0x28')](saveUpdates(_0x3a46bf[_0x9962('0x5c')],null))['then'](respondWithResult(_0x5d58d7,null))[_0x9962('0x48')](handleError(_0x5d58d7,null));};exports[_0x9962('0x29')]=function(_0x4094da,_0x4a7c03){return db[_0x9962('0x31')][_0x9962('0x4d')]({'where':{'id':_0x4094da[_0x9962('0x58')]['id']}})[_0x9962('0x28')](handleEntityNotFound(_0x4a7c03,null))[_0x9962('0x28')](removeEntity(_0x4a7c03,null))[_0x9962('0x48')](handleError(_0x4a7c03,null));};function widgetAttributes(_0x1e15d5){try{switch(_0x1e15d5['type']){case _0x9962('0x5e'):return[{'name':_0x9962('0x5f'),'value':_0x1e15d5[_0x9962('0x5f')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x0]?_0x1e15d5[_0x9962('0x60')][0x0][_0x9962('0x61')]:undefined)||_0x9962('0x62')}];case'custom':return[{'name':_0x9962('0x63'),'value':_0x1e15d5[_0x9962('0x63')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5['attrs'][0x0]?_0x1e15d5[_0x9962('0x60')][0x0][_0x9962('0x61')]:undefined)||''}];case _0x9962('0x64'):return[{'name':'attrHourFormat','value':_0x1e15d5[_0x9962('0x65')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x0]?_0x1e15d5[_0x9962('0x60')][0x0][_0x9962('0x61')]:undefined)||'HH:mm:ss'},{'name':_0x9962('0x66'),'value':_0x1e15d5[_0x9962('0x66')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x1]?_0x1e15d5[_0x9962('0x60')][0x1]['value']:undefined)||_0x9962('0x67')},{'name':'attrFontSize','value':_0x1e15d5['attrFontSize']||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x2]?_0x1e15d5[_0x9962('0x60')][0x2][_0x9962('0x61')]:undefined)||0xc}];case _0x9962('0x68'):return[{'name':'attrMetric','value':_0x1e15d5[_0x9962('0x69')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x0]?_0x1e15d5[_0x9962('0x60')][0x0][_0x9962('0x61')]:undefined)||_0x9962('0x6a')},{'name':_0x9962('0x6b'),'value':_0x1e15d5[_0x9962('0x6b')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5['attrs'][0x1]?_0x1e15d5[_0x9962('0x60')][0x1][_0x9962('0x61')]:undefined)||[]},{'name':_0x9962('0x6c'),'value':_0x1e15d5['attrFontSize']||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5['attrs'][0x2]?_0x1e15d5[_0x9962('0x60')][0x2][_0x9962('0x61')]:undefined)||0x14}];case _0x9962('0x6d'):case'pie-chart':return[{'name':_0x9962('0x6e'),'value':_0x1e15d5[_0x9962('0x6e')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x0]?_0x1e15d5[_0x9962('0x60')][0x0]['value']:undefined)||_0x9962('0x6a')},{'name':'attrSerie2','value':_0x1e15d5['attrSerie2']||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x1]?_0x1e15d5['attrs'][0x1][_0x9962('0x61')]:undefined)||null},{'name':_0x9962('0x6f'),'value':_0x1e15d5[_0x9962('0x6f')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x2]?_0x1e15d5[_0x9962('0x60')][0x2]['value']:undefined)||null},{'name':_0x9962('0x6b'),'value':_0x1e15d5[_0x9962('0x6b')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x3]?_0x1e15d5['attrs'][0x3]['value']:undefined)||[]}];case'web-report':return[{'name':_0x9962('0x70'),'type':_0x1e15d5[_0x9962('0x71')]||(_0x1e15d5['attrs']&&_0x1e15d5[_0x9962('0x60')][0x0]?_0x1e15d5[_0x9962('0x60')][0x0]['type']:undefined)||null,'value':_0x1e15d5['attrReport']||(_0x1e15d5['attrs']&&_0x1e15d5[_0x9962('0x60')][0x0]?_0x1e15d5[_0x9962('0x60')][0x0][_0x9962('0x61')]:undefined)||null},{'name':_0x9962('0x72'),'value':_0x1e15d5[_0x9962('0x72')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5['attrs'][0x1]?_0x1e15d5['attrs'][0x1][_0x9962('0x61')]:undefined)||0x0}];default:return[];}}catch(_0xa0c1d3){logger[_0x9962('0x2c')](_0x9962('0x73'),JSON['stringify'](_0xa0c1d3));return[];}}exports[_0x9962('0x74')]=function(_0x2e3ac8,_0x578409,_0x31db9b){if(_0x2e3ac8[_0x9962('0x5c')]['id']){delete _0x2e3ac8['body']['id'];}return db[_0x9962('0x31')][_0x9962('0x4d')]({'where':{'id':_0x2e3ac8[_0x9962('0x58')]['id']}})[_0x9962('0x28')](handleEntityNotFound(_0x578409,null))[_0x9962('0x28')](function(_0x2fde4b){if(_0x2fde4b){_0x2e3ac8[_0x9962('0x5c')][_0x9962('0x75')]=_0x2fde4b['id'];_0x2e3ac8[_0x9962('0x5c')][_0x9962('0x60')]=widgetAttributes(_0x2e3ac8[_0x9962('0x5c')]);return db['DashboardItem'][_0x9962('0x4e')](_0x2e3ac8[_0x9962('0x5c')]);}})[_0x9962('0x28')](respondWithResult(_0x578409,null))[_0x9962('0x48')](handleError(_0x578409,null));};exports['getItems']=function(_0x109473,_0x3ab0f5,_0x13a3e4){var _0x2156f6={};var _0x2f97c1={};var _0x58a87e;var _0x157f2c;return db[_0x9962('0x31')]['findOne']({'where':{'id':_0x109473['params']['id']}})['then'](handleEntityNotFound(_0x3ab0f5,null))[_0x9962('0x28')](function(_0x59848d){if(_0x59848d){_0x58a87e=_0x59848d;_0x2f97c1[_0x9962('0x35')]=_[_0x9962('0x4a')](db[_0x9962('0x76')]['rawAttributes']);_0x2f97c1[_0x9962('0x37')]=_[_0x9962('0x4a')](_0x109473[_0x9962('0x37')]);_0x2f97c1[_0x9962('0x38')]=_[_0x9962('0x39')](_0x2f97c1['model'],_0x2f97c1[_0x9962('0x37')]);_0x2156f6[_0x9962('0x3b')]=_[_0x9962('0x39')](_0x2f97c1['model'],qs['fields'](_0x109473[_0x9962('0x37')][_0x9962('0x3a')]));_0x2156f6['attributes']=_0x2156f6['attributes'][_0x9962('0x3c')]?_0x2156f6[_0x9962('0x3b')]:_0x2f97c1[_0x9962('0x35')];_0x2156f6[_0x9962('0x3f')]=qs[_0x9962('0x40')](_0x109473['query']['sort']);_0x2156f6[_0x9962('0x44')]=qs[_0x9962('0x38')](_[_0x9962('0x41')](_0x109473[_0x9962('0x37')],_0x2f97c1[_0x9962('0x38')]));if(_0x109473['query'][_0x9962('0x42')]){_0x2156f6[_0x9962('0x44')]=_[_0x9962('0x43')](_0x2156f6[_0x9962('0x44')],{'$or':_[_0x9962('0x30')](_0x2156f6[_0x9962('0x3b')],function(_0x5a9e02){var _0x36ca33={};_0x36ca33[_0x5a9e02]={'$like':'%'+_0x109473[_0x9962('0x37')]['filter']+'%'};return _0x36ca33;})});}_0x2156f6=_[_0x9962('0x43')]({},_0x2156f6,_0x109473[_0x9962('0x4c')]);return _0x58a87e[_0x9962('0x77')](_0x2156f6);}})[_0x9962('0x28')](function(_0x4528a9){if(_0x4528a9){_0x157f2c=_0x4528a9[_0x9962('0x3c')];if(!_0x109473[_0x9962('0x37')][_0x9962('0x3d')](_0x9962('0x3e'))){_0x2156f6[_0x9962('0x21')]=qs[_0x9962('0x21')](_0x109473['query'][_0x9962('0x21')]);_0x2156f6['offset']=qs[_0x9962('0x1f')](_0x109473[_0x9962('0x37')][_0x9962('0x1f')]);}return _0x58a87e['getItems'](_0x2156f6);}})[_0x9962('0x28')](function(_0x3be307){if(_0x3be307){return _0x3be307?{'count':_0x157f2c,'rows':_0x3be307}:null;}})[_0x9962('0x28')](respondWithResult(_0x3ab0f5,null))['catch'](handleError(_0x3ab0f5,null));};
\ No newline at end of file
+var _0x9e24=['DashboardId','DashboardItem','getItems','findOne','pick','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','apply','reject','save','destroy','then','CustomDashboards','UserProfileResource','error','stack','name','send','index','map','Dashboard','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','options','includeAll','findAll','rows','params','include','find','catch','create','body','user','get','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','update','iframe','attrUrl','attrs','https://','custom','attrPath','clock','attrHourFormat','value','attrTimezone','0.00','counter','attrMetric','attrVoiceQueues','attrFontSize','multibar-chart','pie-chart','attrSerie1','total','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','stringify','addItem'];(function(_0x5f13cd,_0x3daaf8){var _0x827cb7=function(_0x4b658d){while(--_0x4b658d){_0x5f13cd['push'](_0x5f13cd['shift']());}};_0x827cb7(++_0x3daaf8);}(_0x9e24,0x84));var _0x49e2=function(_0x38ced4,_0x24263f){_0x38ced4=_0x38ced4-0x0;var _0x547c07=_0x9e24[_0x38ced4];return _0x547c07;};'use strict';var emlformat=require(_0x49e2('0x0'));var rimraf=require(_0x49e2('0x1'));var zipdir=require(_0x49e2('0x2'));var jsonpatch=require(_0x49e2('0x3'));var rp=require(_0x49e2('0x4'));var moment=require(_0x49e2('0x5'));var BPromise=require(_0x49e2('0x6'));var Mustache=require(_0x49e2('0x7'));var util=require(_0x49e2('0x8'));var path=require(_0x49e2('0x9'));var sox=require('sox');var csv=require(_0x49e2('0xa'));var ejs=require(_0x49e2('0xb'));var fs=require('fs');var fs_extra=require(_0x49e2('0xc'));var _=require('lodash');var squel=require(_0x49e2('0xd'));var crypto=require(_0x49e2('0xe'));var jsforce=require(_0x49e2('0xf'));var deskjs=require(_0x49e2('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49e2('0x11'));var as=require(_0x49e2('0x12'));var hardwareService=require(_0x49e2('0x13'));var logger=require('../../config/logger')(_0x49e2('0x14'));var utils=require('../../config/utils');var config=require(_0x49e2('0x15'));var licenseUtil=require(_0x49e2('0x16'));var db=require(_0x49e2('0x17'))['db'];config[_0x49e2('0x18')]=_[_0x49e2('0x19')](config[_0x49e2('0x18')],{'host':_0x49e2('0x1a'),'port':0x18eb});var socket=require(_0x49e2('0x1b'))(new Redis(config['redis']));require(_0x49e2('0x1c'))[_0x49e2('0x1d')](socket);function respondWithStatusCode(_0x5f4efa,_0x18e27a){_0x18e27a=_0x18e27a||0xcc;return function(_0x2bf4ab){if(_0x2bf4ab){return _0x5f4efa[_0x49e2('0x1e')](_0x18e27a);}return _0x5f4efa[_0x49e2('0x1f')](_0x18e27a)[_0x49e2('0x20')]();};}function respondWithResult(_0x1dd38b,_0x5d0819){_0x5d0819=_0x5d0819||0xc8;return function(_0x4facb6){if(_0x4facb6){return _0x1dd38b[_0x49e2('0x1f')](_0x5d0819)[_0x49e2('0x21')](_0x4facb6);}};}function respondWithFilteredResult(_0x198ad9,_0x3ceed2){return function(_0x35b0ec){if(_0x35b0ec){var _0x9eb9e9=typeof _0x3ceed2['offset']===_0x49e2('0x22')&&typeof _0x3ceed2[_0x49e2('0x23')]===_0x49e2('0x22');var _0x4d8d1f=_0x35b0ec[_0x49e2('0x24')];var _0xeb5769=_0x9eb9e9?0x0:_0x3ceed2[_0x49e2('0x25')];var _0x24ed5e=_0x9eb9e9?_0x35b0ec[_0x49e2('0x24')]:_0x3ceed2['offset']+_0x3ceed2[_0x49e2('0x23')];var _0x4c5f77;if(_0x24ed5e>=_0x4d8d1f){_0x24ed5e=_0x4d8d1f;_0x4c5f77=0xc8;}else{_0x4c5f77=0xce;}_0x198ad9[_0x49e2('0x1f')](_0x4c5f77);return _0x198ad9['set']('Content-Range',_0xeb5769+'-'+_0x24ed5e+'/'+_0x4d8d1f)['json'](_0x35b0ec);}return null;};}function patchUpdates(_0x374dcc){return function(_0x3f5740){try{jsonpatch[_0x49e2('0x26')](_0x3f5740,_0x374dcc,!![]);}catch(_0x44e6ff){return BPromise[_0x49e2('0x27')](_0x44e6ff);}return _0x3f5740[_0x49e2('0x28')]();};}function saveUpdates(_0x5c7ce4,_0xd0ecd1){return function(_0x1502aa){if(_0x1502aa){return _0x1502aa['update'](_0x5c7ce4)['then'](function(_0x564b64){return _0x564b64;});}return null;};}function removeEntity(_0x1704f8,_0x36e053){return function(_0xa0756b){if(_0xa0756b){return _0xa0756b[_0x49e2('0x29')]()[_0x49e2('0x2a')](function(){var _0x4b9f99=_0xa0756b['get']({'plain':!![]});var _0xa114cf=_0x49e2('0x2b');return db[_0x49e2('0x2c')][_0x49e2('0x29')]({'where':{'type':_0xa114cf,'resourceId':_0x4b9f99['id']}})[_0x49e2('0x2a')](function(){return _0xa0756b;});})[_0x49e2('0x2a')](function(){_0x1704f8[_0x49e2('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0xdc5354,_0x23c63b){return function(_0xbcb036){if(!_0xbcb036){_0xdc5354[_0x49e2('0x1e')](0x194);}return _0xbcb036;};}function handleError(_0x1fbc99,_0x216f38){_0x216f38=_0x216f38||0x1f4;return function(_0x287062){logger[_0x49e2('0x2d')](_0x287062[_0x49e2('0x2e')]);if(_0x287062[_0x49e2('0x2f')]){delete _0x287062[_0x49e2('0x2f')];}_0x1fbc99[_0x49e2('0x1f')](_0x216f38)[_0x49e2('0x30')](_0x287062);};}exports[_0x49e2('0x31')]=function(_0x446247,_0x76915f){var _0x3e8ad0={},_0x27cb2f={},_0x4df2f9={'count':0x0,'rows':[]};var _0x2ea5ea=_[_0x49e2('0x32')](db[_0x49e2('0x33')][_0x49e2('0x34')],function(_0x2db04f){return{'name':_0x2db04f[_0x49e2('0x35')],'type':_0x2db04f[_0x49e2('0x36')][_0x49e2('0x37')]};});_0x27cb2f[_0x49e2('0x38')]=_[_0x49e2('0x32')](_0x2ea5ea,_0x49e2('0x2f'));_0x27cb2f['query']=_[_0x49e2('0x39')](_0x446247[_0x49e2('0x3a')]);_0x27cb2f[_0x49e2('0x3b')]=_[_0x49e2('0x3c')](_0x27cb2f['model'],_0x27cb2f[_0x49e2('0x3a')]);_0x3e8ad0[_0x49e2('0x3d')]=_[_0x49e2('0x3c')](_0x27cb2f[_0x49e2('0x38')],qs['fields'](_0x446247['query'][_0x49e2('0x3e')]));_0x3e8ad0[_0x49e2('0x3d')]=_0x3e8ad0[_0x49e2('0x3d')][_0x49e2('0x3f')]?_0x3e8ad0[_0x49e2('0x3d')]:_0x27cb2f[_0x49e2('0x38')];if(!_0x446247[_0x49e2('0x3a')][_0x49e2('0x40')]('nolimit')){_0x3e8ad0[_0x49e2('0x23')]=qs[_0x49e2('0x23')](_0x446247['query']['limit']);_0x3e8ad0[_0x49e2('0x25')]=qs[_0x49e2('0x25')](_0x446247[_0x49e2('0x3a')]['offset']);}_0x3e8ad0[_0x49e2('0x41')]=qs[_0x49e2('0x42')](_0x446247[_0x49e2('0x3a')]['sort']);_0x3e8ad0[_0x49e2('0x43')]=qs['filters'](_['pick'](_0x446247[_0x49e2('0x3a')],_0x27cb2f['filters']),_0x2ea5ea);if(_0x446247[_0x49e2('0x3a')][_0x49e2('0x44')]){_0x3e8ad0['where']=_[_0x49e2('0x45')](_0x3e8ad0[_0x49e2('0x43')],{'$or':_[_0x49e2('0x32')](_0x2ea5ea,function(_0x5defa4){if(_0x5defa4[_0x49e2('0x36')]!=='VIRTUAL'){var _0x176e9a={};_0x176e9a[_0x5defa4[_0x49e2('0x2f')]]={'$like':'%'+_0x446247[_0x49e2('0x3a')]['filter']+'%'};return _0x176e9a;}})});}_0x3e8ad0=_[_0x49e2('0x45')]({},_0x3e8ad0,_0x446247[_0x49e2('0x46')]);var _0x277fb7={'where':_0x3e8ad0[_0x49e2('0x43')]};return db[_0x49e2('0x33')][_0x49e2('0x24')](_0x277fb7)[_0x49e2('0x2a')](function(_0x2c1af4){_0x4df2f9[_0x49e2('0x24')]=_0x2c1af4;if(_0x446247[_0x49e2('0x3a')][_0x49e2('0x47')]){_0x3e8ad0['include']=[{'all':!![]}];}return db[_0x49e2('0x33')][_0x49e2('0x48')](_0x3e8ad0);})[_0x49e2('0x2a')](function(_0x1b492d){_0x4df2f9[_0x49e2('0x49')]=_0x1b492d;return _0x4df2f9;})['then'](respondWithFilteredResult(_0x76915f,_0x3e8ad0))['catch'](handleError(_0x76915f,null));};exports['show']=function(_0x60063b,_0x41346d){var _0x48193f={'raw':![],'where':{'id':_0x60063b[_0x49e2('0x4a')]['id']}},_0x3a3299={};_0x3a3299[_0x49e2('0x38')]=_['keys'](db[_0x49e2('0x33')]['rawAttributes']);_0x3a3299[_0x49e2('0x3a')]=_[_0x49e2('0x39')](_0x60063b['query']);_0x3a3299[_0x49e2('0x3b')]=_[_0x49e2('0x3c')](_0x3a3299[_0x49e2('0x38')],_0x3a3299['query']);_0x48193f[_0x49e2('0x3d')]=_[_0x49e2('0x3c')](_0x3a3299[_0x49e2('0x38')],qs[_0x49e2('0x3e')](_0x60063b['query'][_0x49e2('0x3e')]));_0x48193f[_0x49e2('0x3d')]=_0x48193f[_0x49e2('0x3d')][_0x49e2('0x3f')]?_0x48193f[_0x49e2('0x3d')]:_0x3a3299[_0x49e2('0x38')];if(_0x60063b['query'][_0x49e2('0x47')]){_0x48193f[_0x49e2('0x4b')]=[{'all':!![]}];}_0x48193f=_[_0x49e2('0x45')]({},_0x48193f,_0x60063b[_0x49e2('0x46')]);return db['Dashboard'][_0x49e2('0x4c')](_0x48193f)[_0x49e2('0x2a')](handleEntityNotFound(_0x41346d,null))['then'](respondWithResult(_0x41346d,null))[_0x49e2('0x4d')](handleError(_0x41346d,null));};exports[_0x49e2('0x4e')]=function(_0x8a6511,_0x2362fb){return db[_0x49e2('0x33')]['create'](_0x8a6511[_0x49e2('0x4f')],{})[_0x49e2('0x2a')](function(_0x25c344){var _0x4e60a3=_0x8a6511[_0x49e2('0x50')][_0x49e2('0x51')]({'plain':!![]});if(!_0x4e60a3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4e60a3['role']===_0x49e2('0x50')){var _0x5cdc9c=_0x25c344[_0x49e2('0x51')]({'plain':!![]});var _0x4e8007=_0x49e2('0x2b');return db[_0x49e2('0x52')]['find']({'where':{'name':_0x4e8007,'userProfileId':_0x4e60a3[_0x49e2('0x53')]},'raw':!![]})[_0x49e2('0x2a')](function(_0x2cd834){if(_0x2cd834&&_0x2cd834['autoAssociation']===0x0){return db[_0x49e2('0x2c')]['create']({'name':_0x5cdc9c[_0x49e2('0x2f')],'resourceId':_0x5cdc9c['id'],'type':_0x2cd834[_0x49e2('0x2f')],'sectionId':_0x2cd834['id']},{})[_0x49e2('0x2a')](function(){return _0x25c344;});}else{return _0x25c344;}})['catch'](function(_0x56d538){logger[_0x49e2('0x2d')](_0x49e2('0x54'),_0x56d538);throw _0x56d538;});}return _0x25c344;})['then'](respondWithResult(_0x2362fb,0xc9))[_0x49e2('0x4d')](handleError(_0x2362fb,null));};exports[_0x49e2('0x55')]=function(_0x1ecc7f,_0x54673f){var _0x38db9f={'where':{'id':_0x1ecc7f[_0x49e2('0x4a')]['id']}},_0x46166b={};_0x46166b[_0x49e2('0x38')]=_['keys'](db['Dashboard']['rawAttributes']);_0x38db9f[_0x49e2('0x3d')]=_[_0x49e2('0x3c')](_0x46166b[_0x49e2('0x38')],qs[_0x49e2('0x3e')](_0x1ecc7f[_0x49e2('0x3a')][_0x49e2('0x3e')]));_0x38db9f[_0x49e2('0x3d')]=_0x38db9f[_0x49e2('0x3d')]['length']?_0x38db9f[_0x49e2('0x3d')]:_0x46166b['model'];if(_0x1ecc7f[_0x49e2('0x3a')][_0x49e2('0x47')]){_0x38db9f[_0x49e2('0x4b')]=[{'all':!![]}];}_0x38db9f=_[_0x49e2('0x45')]({},_0x38db9f,_0x1ecc7f['options']);return db[_0x49e2('0x33')]['find'](_0x38db9f)['then'](handleEntityNotFound(_0x54673f,null))[_0x49e2('0x2a')](function(_0x132328){if(_0x132328){var _0x300c0d=_0x132328[_0x49e2('0x51')]({'plain':!![]});_0x300c0d=qs[_0x49e2('0x56')](_0x300c0d,['id',_0x49e2('0x57'),'updatedAt']);_0x1ecc7f[_0x49e2('0x4f')]=_['omit'](_0x1ecc7f[_0x49e2('0x4f')],['id',_0x49e2('0x57'),_0x49e2('0x58')]);return db[_0x49e2('0x33')]['create'](_[_0x49e2('0x45')](_0x300c0d,_0x1ecc7f['body']),{'include':_0x1ecc7f[_0x49e2('0x3a')][_0x49e2('0x47')]?[{'all':!![]}]:undefined})[_0x49e2('0x2a')](function(_0x4dd94e){var _0x48fbec=_0x1ecc7f[_0x49e2('0x50')][_0x49e2('0x51')]({'plain':!![]});if(!_0x48fbec)throw new Error(_0x49e2('0x59'));if(_0x48fbec[_0x49e2('0x5a')]===_0x49e2('0x50')){var _0x4dd5c6=_0x4dd94e[_0x49e2('0x51')]({'plain':!![]});var _0x282847=_0x49e2('0x2b');return db['UserProfileSection'][_0x49e2('0x4c')]({'where':{'name':_0x282847,'userProfileId':_0x48fbec[_0x49e2('0x53')]},'raw':!![]})[_0x49e2('0x2a')](function(_0x4f859c){if(_0x4f859c&&_0x4f859c[_0x49e2('0x5b')]===0x0){return db[_0x49e2('0x2c')]['create']({'name':_0x4dd5c6['name'],'resourceId':_0x4dd5c6['id'],'type':_0x4f859c[_0x49e2('0x2f')],'sectionId':_0x4f859c['id']},{})[_0x49e2('0x2a')](function(){return _0x4dd94e;});}else{return _0x4dd94e;}})[_0x49e2('0x4d')](function(_0xc9fb67){logger['error'](_0x49e2('0x54'),_0xc9fb67);throw _0xc9fb67;});}return _0x4dd94e;});}})[_0x49e2('0x2a')](respondWithResult(_0x54673f,0xc9))[_0x49e2('0x4d')](handleError(_0x54673f,null));};exports[_0x49e2('0x5c')]=function(_0x23aed5,_0x521b8b){if(_0x23aed5[_0x49e2('0x4f')]['id']){delete _0x23aed5['body']['id'];}return db[_0x49e2('0x33')][_0x49e2('0x4c')]({'where':{'id':_0x23aed5[_0x49e2('0x4a')]['id']}})[_0x49e2('0x2a')](handleEntityNotFound(_0x521b8b,null))['then'](saveUpdates(_0x23aed5['body'],null))[_0x49e2('0x2a')](respondWithResult(_0x521b8b,null))['catch'](handleError(_0x521b8b,null));};exports[_0x49e2('0x29')]=function(_0x2b8d8b,_0x4f563f){return db[_0x49e2('0x33')]['find']({'where':{'id':_0x2b8d8b[_0x49e2('0x4a')]['id']}})[_0x49e2('0x2a')](handleEntityNotFound(_0x4f563f,null))[_0x49e2('0x2a')](removeEntity(_0x4f563f,null))[_0x49e2('0x4d')](handleError(_0x4f563f,null));};function widgetAttributes(_0x42b726){try{switch(_0x42b726[_0x49e2('0x36')]){case _0x49e2('0x5d'):return[{'name':_0x49e2('0x5e'),'value':_0x42b726[_0x49e2('0x5e')]||(_0x42b726[_0x49e2('0x5f')]&&_0x42b726['attrs'][0x0]?_0x42b726[_0x49e2('0x5f')][0x0]['value']:undefined)||_0x49e2('0x60')}];case _0x49e2('0x61'):return[{'name':_0x49e2('0x62'),'value':_0x42b726[_0x49e2('0x62')]||(_0x42b726[_0x49e2('0x5f')]&&_0x42b726[_0x49e2('0x5f')][0x0]?_0x42b726[_0x49e2('0x5f')][0x0]['value']:undefined)||''}];case _0x49e2('0x63'):return[{'name':_0x49e2('0x64'),'value':_0x42b726[_0x49e2('0x64')]||(_0x42b726['attrs']&&_0x42b726['attrs'][0x0]?_0x42b726[_0x49e2('0x5f')][0x0][_0x49e2('0x65')]:undefined)||'HH:mm:ss'},{'name':_0x49e2('0x66'),'value':_0x42b726[_0x49e2('0x66')]||(_0x42b726[_0x49e2('0x5f')]&&_0x42b726[_0x49e2('0x5f')][0x1]?_0x42b726['attrs'][0x1]['value']:undefined)||_0x49e2('0x67')},{'name':'attrFontSize','value':_0x42b726['attrFontSize']||(_0x42b726[_0x49e2('0x5f')]&&_0x42b726[_0x49e2('0x5f')][0x2]?_0x42b726[_0x49e2('0x5f')][0x2]['value']:undefined)||0xc}];case _0x49e2('0x68'):return[{'name':_0x49e2('0x69'),'value':_0x42b726['attrMetric']||(_0x42b726[_0x49e2('0x5f')]&&_0x42b726[_0x49e2('0x5f')][0x0]?_0x42b726['attrs'][0x0][_0x49e2('0x65')]:undefined)||'total'},{'name':_0x49e2('0x6a'),'value':_0x42b726[_0x49e2('0x6a')]||(_0x42b726[_0x49e2('0x5f')]&&_0x42b726[_0x49e2('0x5f')][0x1]?_0x42b726[_0x49e2('0x5f')][0x1]['value']:undefined)||[]},{'name':'attrFontSize','value':_0x42b726[_0x49e2('0x6b')]||(_0x42b726[_0x49e2('0x5f')]&&_0x42b726[_0x49e2('0x5f')][0x2]?_0x42b726['attrs'][0x2][_0x49e2('0x65')]:undefined)||0x14}];case _0x49e2('0x6c'):case _0x49e2('0x6d'):return[{'name':_0x49e2('0x6e'),'value':_0x42b726[_0x49e2('0x6e')]||(_0x42b726['attrs']&&_0x42b726[_0x49e2('0x5f')][0x0]?_0x42b726[_0x49e2('0x5f')][0x0]['value']:undefined)||_0x49e2('0x6f')},{'name':_0x49e2('0x70'),'value':_0x42b726[_0x49e2('0x70')]||(_0x42b726['attrs']&&_0x42b726[_0x49e2('0x5f')][0x1]?_0x42b726[_0x49e2('0x5f')][0x1][_0x49e2('0x65')]:undefined)||null},{'name':_0x49e2('0x71'),'value':_0x42b726[_0x49e2('0x71')]||(_0x42b726[_0x49e2('0x5f')]&&_0x42b726[_0x49e2('0x5f')][0x2]?_0x42b726[_0x49e2('0x5f')][0x2][_0x49e2('0x65')]:undefined)||null},{'name':_0x49e2('0x6a'),'value':_0x42b726[_0x49e2('0x6a')]||(_0x42b726[_0x49e2('0x5f')]&&_0x42b726['attrs'][0x3]?_0x42b726[_0x49e2('0x5f')][0x3][_0x49e2('0x65')]:undefined)||[]}];case _0x49e2('0x72'):return[{'name':_0x49e2('0x73'),'type':_0x42b726[_0x49e2('0x74')]||(_0x42b726[_0x49e2('0x5f')]&&_0x42b726['attrs'][0x0]?_0x42b726[_0x49e2('0x5f')][0x0][_0x49e2('0x36')]:undefined)||null,'value':_0x42b726[_0x49e2('0x73')]||(_0x42b726[_0x49e2('0x5f')]&&_0x42b726[_0x49e2('0x5f')][0x0]?_0x42b726[_0x49e2('0x5f')][0x0][_0x49e2('0x65')]:undefined)||null},{'name':'attrRefresh','value':_0x42b726[_0x49e2('0x75')]||(_0x42b726[_0x49e2('0x5f')]&&_0x42b726['attrs'][0x1]?_0x42b726[_0x49e2('0x5f')][0x1][_0x49e2('0x65')]:undefined)||0x0}];default:return[];}}catch(_0x22680f){logger[_0x49e2('0x2d')]('widgetAttributes:\x20%s',JSON[_0x49e2('0x76')](_0x22680f));return[];}}exports[_0x49e2('0x77')]=function(_0x3aa198,_0x585777,_0x438fc1){if(_0x3aa198[_0x49e2('0x4f')]['id']){delete _0x3aa198['body']['id'];}return db[_0x49e2('0x33')][_0x49e2('0x4c')]({'where':{'id':_0x3aa198[_0x49e2('0x4a')]['id']}})['then'](handleEntityNotFound(_0x585777,null))[_0x49e2('0x2a')](function(_0x23c883){if(_0x23c883){_0x3aa198['body'][_0x49e2('0x78')]=_0x23c883['id'];_0x3aa198['body'][_0x49e2('0x5f')]=widgetAttributes(_0x3aa198[_0x49e2('0x4f')]);return db[_0x49e2('0x79')][_0x49e2('0x4e')](_0x3aa198[_0x49e2('0x4f')]);}})[_0x49e2('0x2a')](respondWithResult(_0x585777,null))['catch'](handleError(_0x585777,null));};exports[_0x49e2('0x7a')]=function(_0x564ee9,_0x1e9e6d,_0x3df93a){var _0x39a4cc={};var _0x49f46b={};var _0x34d277;var _0x4781ab;return db[_0x49e2('0x33')][_0x49e2('0x7b')]({'where':{'id':_0x564ee9['params']['id']}})['then'](handleEntityNotFound(_0x1e9e6d,null))[_0x49e2('0x2a')](function(_0x365e1e){if(_0x365e1e){_0x34d277=_0x365e1e;_0x49f46b[_0x49e2('0x38')]=_[_0x49e2('0x39')](db[_0x49e2('0x79')][_0x49e2('0x34')]);_0x49f46b[_0x49e2('0x3a')]=_[_0x49e2('0x39')](_0x564ee9['query']);_0x49f46b['filters']=_[_0x49e2('0x3c')](_0x49f46b[_0x49e2('0x38')],_0x49f46b['query']);_0x39a4cc[_0x49e2('0x3d')]=_[_0x49e2('0x3c')](_0x49f46b['model'],qs[_0x49e2('0x3e')](_0x564ee9[_0x49e2('0x3a')]['fields']));_0x39a4cc[_0x49e2('0x3d')]=_0x39a4cc[_0x49e2('0x3d')][_0x49e2('0x3f')]?_0x39a4cc[_0x49e2('0x3d')]:_0x49f46b[_0x49e2('0x38')];_0x39a4cc['order']=qs['sort'](_0x564ee9['query'][_0x49e2('0x42')]);_0x39a4cc[_0x49e2('0x43')]=qs[_0x49e2('0x3b')](_[_0x49e2('0x7c')](_0x564ee9['query'],_0x49f46b[_0x49e2('0x3b')]));if(_0x564ee9['query'][_0x49e2('0x44')]){_0x39a4cc[_0x49e2('0x43')]=_[_0x49e2('0x45')](_0x39a4cc[_0x49e2('0x43')],{'$or':_[_0x49e2('0x32')](_0x39a4cc['attributes'],function(_0x3f7b2f){var _0x172030={};_0x172030[_0x3f7b2f]={'$like':'%'+_0x564ee9[_0x49e2('0x3a')][_0x49e2('0x44')]+'%'};return _0x172030;})});}_0x39a4cc=_[_0x49e2('0x45')]({},_0x39a4cc,_0x564ee9['options']);return _0x34d277[_0x49e2('0x7a')](_0x39a4cc);}})[_0x49e2('0x2a')](function(_0x571c15){if(_0x571c15){_0x4781ab=_0x571c15[_0x49e2('0x3f')];if(!_0x564ee9[_0x49e2('0x3a')][_0x49e2('0x40')](_0x49e2('0x7d'))){_0x39a4cc[_0x49e2('0x23')]=qs[_0x49e2('0x23')](_0x564ee9[_0x49e2('0x3a')][_0x49e2('0x23')]);_0x39a4cc[_0x49e2('0x25')]=qs[_0x49e2('0x25')](_0x564ee9[_0x49e2('0x3a')]['offset']);}return _0x34d277[_0x49e2('0x7a')](_0x39a4cc);}})['then'](function(_0x5ac9f3){if(_0x5ac9f3){return _0x5ac9f3?{'count':_0x4781ab,'rows':_0x5ac9f3}:null;}})[_0x49e2('0x2a')](respondWithResult(_0x1e9e6d,null))[_0x49e2('0x4d')](handleError(_0x1e9e6d,null));};
\ No newline at end of file
index 923b754..6d79f44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9583=['events','../../mysqldb','Dashboard','save','emit','hook','exports'];(function(_0x5dc3f6,_0x1fc463){var _0x257802=function(_0xc0871c){while(--_0xc0871c){_0x5dc3f6['push'](_0x5dc3f6['shift']());}};_0x257802(++_0x1fc463);}(_0x9583,0xcb));var _0x3958=function(_0x12bb5c,_0x71fd52){_0x12bb5c=_0x12bb5c-0x0;var _0x3a533e=_0x9583[_0x12bb5c];return _0x3a533e;};'use strict';var EventEmitter=require(_0x3958('0x0'));var Dashboard=require(_0x3958('0x1'))['db'][_0x3958('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3958('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x54d56a){return function(_0x432cf7,_0x3b9d9c,_0xeab3b4){DashboardEvents[_0x3958('0x4')](_0x54d56a+':'+_0x432cf7['id'],_0x432cf7);DashboardEvents[_0x3958('0x4')](_0x54d56a,_0x432cf7);_0xeab3b4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x3958('0x5')](e,emitEvent(event));}}module[_0x3958('0x6')]=DashboardEvents;
\ No newline at end of file
+var _0xc881=['events','Dashboard','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x2f2a75,_0x409970){var _0x2d85fa=function(_0x55dc25){while(--_0x55dc25){_0x2f2a75['push'](_0x2f2a75['shift']());}};_0x2d85fa(++_0x409970);}(_0xc881,0xd2));var _0x1c88=function(_0x5ec688,_0x115f65){_0x5ec688=_0x5ec688-0x0;var _0x557ef0=_0xc881[_0x5ec688];return _0x557ef0;};'use strict';var EventEmitter=require(_0x1c88('0x0'));var Dashboard=require('../../mysqldb')['db'][_0x1c88('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x1c88('0x2')](0x0);var events={'afterCreate':_0x1c88('0x3'),'afterUpdate':_0x1c88('0x4'),'afterDestroy':_0x1c88('0x5')};function emitEvent(_0x70b639){return function(_0x2e402e,_0x60ac0d,_0x5cf440){DashboardEvents[_0x1c88('0x6')](_0x70b639+':'+_0x2e402e['id'],_0x2e402e);DashboardEvents[_0x1c88('0x6')](_0x70b639,_0x2e402e);_0x5cf440(null);};}for(var e in events){if(events[_0x1c88('0x7')](e)){var event=events[e];Dashboard[_0x1c88('0x8')](e,emitEvent(event));}}module[_0x1c88('0x9')]=DashboardEvents;
\ No newline at end of file
index 6b6f11f..ee2efea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9c7=['exports','Dashboard','dashboards','../../config/logger','api','bluebird','path','../../config/environment','./dashboard.attributes'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xb9c7,0xff));var _0x7b9c=function(_0x49ff5d,_0x331b69){_0x49ff5d=_0x49ff5d-0x0;var _0x47b761=_0xb9c7[_0x49ff5d];return _0x47b761;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7b9c('0x0'))(_0x7b9c('0x1'));var moment=require('moment');var BPromise=require(_0x7b9c('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7b9c('0x3'));var rimraf=require('rimraf');var config=require(_0x7b9c('0x4'));var attributes=require(_0x7b9c('0x5'));module[_0x7b9c('0x6')]=function(_0x263568,_0x97369c){return _0x263568['define'](_0x7b9c('0x7'),attributes,{'tableName':_0x7b9c('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c4e=['bluebird','request-promise','path','rimraf','../../config/environment','./dashboard.attributes','exports','Dashboard','dashboards','lodash','../../config/logger','moment'];(function(_0x1f71d8,_0x278518){var _0x10b045=function(_0x57aea4){while(--_0x57aea4){_0x1f71d8['push'](_0x1f71d8['shift']());}};_0x10b045(++_0x278518);}(_0x3c4e,0x111));var _0xe3c4=function(_0x493053,_0x24ce4b){_0x493053=_0x493053-0x0;var _0x4ae76d=_0x3c4e[_0x493053];return _0x4ae76d;};'use strict';var _=require(_0xe3c4('0x0'));var util=require('util');var logger=require(_0xe3c4('0x1'))('api');var moment=require(_0xe3c4('0x2'));var BPromise=require(_0xe3c4('0x3'));var rp=require(_0xe3c4('0x4'));var fs=require('fs');var path=require(_0xe3c4('0x5'));var rimraf=require(_0xe3c4('0x6'));var config=require(_0xe3c4('0x7'));var attributes=require(_0xe3c4('0x8'));module[_0xe3c4('0x9')]=function(_0x2388d0,_0x357af5){return _0x2388d0['define'](_0xe3c4('0xa'),attributes,{'tableName':_0xe3c4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7670f2b..f2445e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad97=['Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','request','then','info'];(function(_0x407a68,_0x4bcc9e){var _0x141ab7=function(_0x3d85e9){while(--_0x3d85e9){_0x407a68['push'](_0x407a68['shift']());}};_0x141ab7(++_0x4bcc9e);}(_0xad97,0x182));var _0x7ad9=function(_0x569c8b,_0x2374f9){_0x569c8b=_0x569c8b-0x0;var _0x1fc114=_0xad97[_0x569c8b];return _0x1fc114;};'use strict';var _=require('lodash');var util=require(_0x7ad9('0x0'));var moment=require(_0x7ad9('0x1'));var BPromise=require(_0x7ad9('0x2'));var rs=require(_0x7ad9('0x3'));var fs=require('fs');var Redis=require(_0x7ad9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7ad9('0x5'));var logger=require(_0x7ad9('0x6'))(_0x7ad9('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7ad9('0x8')][_0x7ad9('0x9')]({'port':0x232a});config[_0x7ad9('0xa')]=_[_0x7ad9('0xb')](config['redis'],{'host':_0x7ad9('0xc'),'port':0x18eb});var socket=require(_0x7ad9('0xd'))(new Redis(config[_0x7ad9('0xa')]));require(_0x7ad9('0xe'))[_0x7ad9('0xf')](socket);function respondWithRpcPromise(_0x58d741,_0x2f645e,_0x197819){return new BPromise(function(_0x56af56,_0x54154b){return client[_0x7ad9('0x10')](_0x58d741,_0x197819)[_0x7ad9('0x11')](function(_0x124db3){logger[_0x7ad9('0x12')](_0x7ad9('0x13'),_0x2f645e,_0x7ad9('0x14'));logger[_0x7ad9('0x15')](_0x7ad9('0x16'),_0x2f645e,_0x7ad9('0x14'),JSON[_0x7ad9('0x17')](_0x124db3));if(_0x124db3[_0x7ad9('0x18')]){if(_0x124db3[_0x7ad9('0x18')]['code']===0x1f4){logger[_0x7ad9('0x18')](_0x7ad9('0x13'),_0x2f645e,_0x124db3[_0x7ad9('0x18')][_0x7ad9('0x19')]);return _0x54154b(_0x124db3[_0x7ad9('0x18')][_0x7ad9('0x19')]);}logger[_0x7ad9('0x18')](_0x7ad9('0x13'),_0x2f645e,_0x124db3['error']['message']);return _0x56af56(_0x124db3[_0x7ad9('0x18')][_0x7ad9('0x19')]);}else{logger[_0x7ad9('0x12')]('Dashboard,\x20%s,\x20%s',_0x2f645e,_0x7ad9('0x14'));_0x56af56(_0x124db3['result'][_0x7ad9('0x19')]);}})[_0x7ad9('0x1a')](function(_0x293be5){logger[_0x7ad9('0x18')](_0x7ad9('0x13'),_0x2f645e,_0x293be5);_0x54154b(_0x293be5);});});}
\ No newline at end of file
+var _0x3f28=['stringify','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../config/utils','../../config/environment','redis','localhost','socket.io-emitter','./dashboard.socket','request','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s'];(function(_0x1e0eb8,_0x5d32d8){var _0x4f4101=function(_0x50e520){while(--_0x50e520){_0x1e0eb8['push'](_0x1e0eb8['shift']());}};_0x4f4101(++_0x5d32d8);}(_0x3f28,0x1a8));var _0x83f2=function(_0x337f26,_0xd19a64){_0x337f26=_0x337f26-0x0;var _0x29598d=_0x3f28[_0x337f26];return _0x29598d;};'use strict';var _=require(_0x83f2('0x0'));var util=require('util');var moment=require(_0x83f2('0x1'));var BPromise=require('bluebird');var rs=require(_0x83f2('0x2'));var fs=require('fs');var Redis=require(_0x83f2('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x83f2('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x83f2('0x5'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x83f2('0x6')]=_['defaults'](config[_0x83f2('0x6')],{'host':_0x83f2('0x7'),'port':0x18eb});var socket=require(_0x83f2('0x8'))(new Redis(config[_0x83f2('0x6')]));require(_0x83f2('0x9'))['register'](socket);function respondWithRpcPromise(_0x168118,_0x4def19,_0x2a91a5){return new BPromise(function(_0x410d87,_0x44d095){return client[_0x83f2('0xa')](_0x168118,_0x2a91a5)['then'](function(_0x2647b9){logger[_0x83f2('0xb')](_0x83f2('0xc'),_0x4def19,_0x83f2('0xd'));logger[_0x83f2('0xe')](_0x83f2('0xf'),_0x4def19,_0x83f2('0xd'),JSON[_0x83f2('0x10')](_0x2647b9));if(_0x2647b9['error']){if(_0x2647b9[_0x83f2('0x11')][_0x83f2('0x12')]===0x1f4){logger[_0x83f2('0x11')](_0x83f2('0xc'),_0x4def19,_0x2647b9[_0x83f2('0x11')][_0x83f2('0x13')]);return _0x44d095(_0x2647b9[_0x83f2('0x11')][_0x83f2('0x13')]);}logger[_0x83f2('0x11')]('Dashboard,\x20%s,\x20%s',_0x4def19,_0x2647b9[_0x83f2('0x11')][_0x83f2('0x13')]);return _0x410d87(_0x2647b9[_0x83f2('0x11')][_0x83f2('0x13')]);}else{logger[_0x83f2('0xb')]('Dashboard,\x20%s,\x20%s',_0x4def19,_0x83f2('0xd'));_0x410d87(_0x2647b9[_0x83f2('0x14')][_0x83f2('0x13')]);}})[_0x83f2('0x15')](function(_0x456ca6){logger[_0x83f2('0x11')](_0x83f2('0xc'),_0x4def19,_0x456ca6);_0x44d095(_0x456ca6);});});}
\ No newline at end of file
index 5fc4852..b17b8bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd69=['removeListener','register','dashboard:','./dashboard.events','save','remove','emit'];(function(_0x1ad459,_0x25c523){var _0x5ad9d2=function(_0x5e58d1){while(--_0x5e58d1){_0x1ad459['push'](_0x1ad459['shift']());}};_0x5ad9d2(++_0x25c523);}(_0xbd69,0x1df));var _0x9bd6=function(_0x299420,_0xaee6c6){_0x299420=_0x299420-0x0;var _0x345630=_0xbd69[_0x299420];return _0x345630;};'use strict';var DashboardEvents=require(_0x9bd6('0x0'));var events=[_0x9bd6('0x1'),_0x9bd6('0x2'),'update'];function createListener(_0x3fa811,_0x3cc1af){return function(_0x238819){_0x3cc1af[_0x9bd6('0x3')](_0x3fa811,_0x238819);};}function removeListener(_0x48f793,_0x2d0eab){return function(){DashboardEvents[_0x9bd6('0x4')](_0x48f793,_0x2d0eab);};}exports[_0x9bd6('0x5')]=function(_0xad6e1c){for(var _0x2a2d3a=0x0,_0x351ec9=events['length'];_0x2a2d3a<_0x351ec9;_0x2a2d3a++){var _0x604ac9=events[_0x2a2d3a];var _0x21cc57=createListener(_0x9bd6('0x6')+_0x604ac9,_0xad6e1c);DashboardEvents['on'](_0x604ac9,_0x21cc57);}};
\ No newline at end of file
+var _0xac88=['removeListener','register','length','./dashboard.events','save','remove'];(function(_0x2d6937,_0x44e095){var _0x5058ef=function(_0x450784){while(--_0x450784){_0x2d6937['push'](_0x2d6937['shift']());}};_0x5058ef(++_0x44e095);}(_0xac88,0xf9));var _0x8ac8=function(_0x3ae595,_0x4a0915){_0x3ae595=_0x3ae595-0x0;var _0x5b2119=_0xac88[_0x3ae595];return _0x5b2119;};'use strict';var DashboardEvents=require(_0x8ac8('0x0'));var events=[_0x8ac8('0x1'),_0x8ac8('0x2'),'update'];function createListener(_0xa36e6b,_0x1c456b){return function(_0x567ef9){_0x1c456b['emit'](_0xa36e6b,_0x567ef9);};}function removeListener(_0x7c0734,_0x42c394){return function(){DashboardEvents[_0x8ac8('0x3')](_0x7c0734,_0x42c394);};}exports[_0x8ac8('0x4')]=function(_0x414fe7){for(var _0x47a09f=0x0,_0xd2f4cc=events[_0x8ac8('0x5')];_0x47a09f<_0xd2f4cc;_0x47a09f++){var _0x20015f=events[_0x47a09f];var _0x5466ef=createListener('dashboard:'+_0x20015f,_0x414fe7);DashboardEvents['on'](_0x20015f,_0x5466ef);}};
\ No newline at end of file
index 90e04a5..74f946d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32b6=['get','index','show','/:id/items','isAuthenticated','getItems','post','/:id/clone','clone','addItem','put','/:id','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller'];(function(_0x3a573a,_0x1bdc23){var _0xf879d7=function(_0x3e6642){while(--_0x3e6642){_0x3a573a['push'](_0x3a573a['shift']());}};_0xf879d7(++_0x1bdc23);}(_0x32b6,0x81));var _0x632b=function(_0x56deb3,_0x240a00){_0x56deb3=_0x56deb3-0x0;var _0x264bab=_0x32b6[_0x56deb3];return _0x264bab;};'use strict';var multer=require(_0x632b('0x0'));var util=require(_0x632b('0x1'));var path=require('path');var timeout=require(_0x632b('0x2'));var express=require(_0x632b('0x3'));var router=express[_0x632b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x632b('0x5'));var interaction=require(_0x632b('0x6'));var config=require(_0x632b('0x7'));var controller=require(_0x632b('0x8'));router[_0x632b('0x9')]('/',auth['isAuthenticated'](),controller[_0x632b('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x632b('0xb')]);router['get'](_0x632b('0xc'),auth[_0x632b('0xd')](),controller[_0x632b('0xe')]);router[_0x632b('0xf')]('/',auth[_0x632b('0xd')](),controller['create']);router[_0x632b('0xf')](_0x632b('0x10'),auth[_0x632b('0xd')](),controller[_0x632b('0x11')]);router['post'](_0x632b('0xc'),auth['isAuthenticated'](),controller[_0x632b('0x12')]);router[_0x632b('0x13')](_0x632b('0x14'),auth[_0x632b('0xd')](),controller['update']);router[_0x632b('0x15')]('/:id',auth[_0x632b('0xd')](),controller[_0x632b('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x7d27=['../../components/interaction/service','../../config/environment','./dashboard.controller','isAuthenticated','index','get','/:id','/:id/items','getItems','post','create','/:id/clone','clone','addItem','put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x364d1a,_0x3f58b9){var _0x3fb3f7=function(_0x3581b3){while(--_0x3581b3){_0x364d1a['push'](_0x364d1a['shift']());}};_0x3fb3f7(++_0x3f58b9);}(_0x7d27,0x1a3));var _0x77d2=function(_0x3ad737,_0x300131){_0x3ad737=_0x3ad737-0x0;var _0x16c1e2=_0x7d27[_0x3ad737];return _0x16c1e2;};'use strict';var multer=require('multer');var util=require(_0x77d2('0x0'));var path=require(_0x77d2('0x1'));var timeout=require('connect-timeout');var express=require(_0x77d2('0x2'));var router=express[_0x77d2('0x3')]();var fs_extra=require(_0x77d2('0x4'));var auth=require(_0x77d2('0x5'));var interaction=require(_0x77d2('0x6'));var config=require(_0x77d2('0x7'));var controller=require(_0x77d2('0x8'));router['get']('/',auth[_0x77d2('0x9')](),controller[_0x77d2('0xa')]);router[_0x77d2('0xb')](_0x77d2('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x77d2('0xb')](_0x77d2('0xd'),auth[_0x77d2('0x9')](),controller[_0x77d2('0xe')]);router[_0x77d2('0xf')]('/',auth[_0x77d2('0x9')](),controller[_0x77d2('0x10')]);router['post'](_0x77d2('0x11'),auth[_0x77d2('0x9')](),controller[_0x77d2('0x12')]);router[_0x77d2('0xf')]('/:id/items',auth[_0x77d2('0x9')](),controller[_0x77d2('0x13')]);router[_0x77d2('0x14')](_0x77d2('0xc'),auth['isAuthenticated'](),controller[_0x77d2('0x15')]);router[_0x77d2('0x16')](_0x77d2('0xc'),auth[_0x77d2('0x9')](),controller[_0x77d2('0x17')]);module[_0x77d2('0x18')]=router;
\ No newline at end of file
index 081496a..ff6eb3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7096=['setDataValue','stringify','INTEGER','#ffffff','squel','exports','STRING','TEXT','long','parse','getDataValue','attrs'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7096,0x10c));var _0x6709=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x7096[_0x6c993a];return _0x27f547;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x6709('0x0'));var _=require('lodash');module[_0x6709('0x1')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6709('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x6709('0x3')](_0x6709('0x4')),'get':function(){try{return JSON[_0x6709('0x5')](this[_0x6709('0x6')](_0x6709('0x7')));}catch(_0xb8fe6d){return[];}},'set':function(_0x9d630f){try{this[_0x6709('0x8')](_0x6709('0x7'),JSON[_0x6709('0x9')](_0x9d630f));}catch(_0x985814){this[_0x6709('0x8')]('attrs',JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x6709('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x6709('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x6709('0xa')]},'col':{'type':Sequelize[_0x6709('0xa')]},'background':{'type':Sequelize[_0x6709('0x2')],'allowNull':![],'defaultValue':_0x6709('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x6709('0x2')]},'titleFontSize':{'type':Sequelize[_0x6709('0xa')],'defaultValue':0xc}};
\ No newline at end of file
+var _0xeda8=['TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','#ffffff','sequelize','squel','exports','STRING'];(function(_0x3e18e8,_0x3e1a25){var _0xd23fae=function(_0x9f7100){while(--_0x9f7100){_0x3e18e8['push'](_0x3e18e8['shift']());}};_0xd23fae(++_0x3e1a25);}(_0xeda8,0x104));var _0x8eda=function(_0x37e399,_0xa2ce71){_0x37e399=_0x37e399-0x0;var _0x5c017b=_0xeda8[_0x37e399];return _0x5c017b;};'use strict';var Sequelize=require(_0x8eda('0x0'));var squel=require(_0x8eda('0x1'));var _=require('lodash');module[_0x8eda('0x2')]={'title':{'type':Sequelize[_0x8eda('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x8eda('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x8eda('0x4')](_0x8eda('0x5')),'get':function(){try{return JSON[_0x8eda('0x6')](this[_0x8eda('0x7')](_0x8eda('0x8')));}catch(_0x22dee9){return[];}},'set':function(_0x1f3556){try{this[_0x8eda('0x9')](_0x8eda('0x8'),JSON['stringify'](_0x1f3556));}catch(_0x28b721){this[_0x8eda('0x9')](_0x8eda('0x8'),JSON[_0x8eda('0xa')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize[_0x8eda('0x3')],'allowNull':![],'defaultValue':_0x8eda('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x8eda('0x3')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x8eda('0x3')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
index b67c64c..4e49e11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe81f=['attrSerie1','total','attrSerie2','attrSerie3','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','send','show','params','model','keys','DashboardItem','query','filters','intersection','attributes','fields','length','include','merge','options','find','catch','type','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','pie-chart'];(function(_0x20043d,_0x2eef0d){var _0x3bd1ca=function(_0x4d93c6){while(--_0x4d93c6){_0x20043d['push'](_0x20043d['shift']());}};_0x3bd1ca(++_0x2eef0d);}(_0xe81f,0x10f));var _0xfe81=function(_0x40b71e,_0x340718){_0x40b71e=_0x40b71e-0x0;var _0x1c503a=_0xe81f[_0x40b71e];return _0x1c503a;};'use strict';var emlformat=require(_0xfe81('0x0'));var rimraf=require(_0xfe81('0x1'));var zipdir=require(_0xfe81('0x2'));var jsonpatch=require(_0xfe81('0x3'));var rp=require('request-promise');var moment=require(_0xfe81('0x4'));var BPromise=require(_0xfe81('0x5'));var Mustache=require(_0xfe81('0x6'));var util=require(_0xfe81('0x7'));var path=require('path');var sox=require(_0xfe81('0x8'));var csv=require(_0xfe81('0x9'));var ejs=require(_0xfe81('0xa'));var fs=require('fs');var fs_extra=require(_0xfe81('0xb'));var _=require('lodash');var squel=require(_0xfe81('0xc'));var crypto=require(_0xfe81('0xd'));var jsforce=require(_0xfe81('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xfe81('0x9'));var querystring=require(_0xfe81('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfe81('0x10'));var as=require(_0xfe81('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xfe81('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xfe81('0x13'));var db=require(_0xfe81('0x14'))['db'];config['redis']=_['defaults'](config[_0xfe81('0x15')],{'host':_0xfe81('0x16'),'port':0x18eb});var socket=require(_0xfe81('0x17'))(new Redis(config[_0xfe81('0x15')]));require(_0xfe81('0x18'))[_0xfe81('0x19')](socket);function respondWithStatusCode(_0x32ad6e,_0x4f2815){_0x4f2815=_0x4f2815||0xcc;return function(_0x42a7d0){if(_0x42a7d0){return _0x32ad6e['sendStatus'](_0x4f2815);}return _0x32ad6e[_0xfe81('0x1a')](_0x4f2815)[_0xfe81('0x1b')]();};}function respondWithResult(_0x3b6fbe,_0x231327){_0x231327=_0x231327||0xc8;return function(_0x1ec9ab){if(_0x1ec9ab){return _0x3b6fbe['status'](_0x231327)[_0xfe81('0x1c')](_0x1ec9ab);}};}function respondWithFilteredResult(_0x1fc7bd,_0x330489){return function(_0x192312){if(_0x192312){var _0x10eb6a=typeof _0x330489[_0xfe81('0x1d')]===_0xfe81('0x1e')&&typeof _0x330489[_0xfe81('0x1f')]===_0xfe81('0x1e');var _0x1316a7=_0x192312[_0xfe81('0x20')];var _0x30fdc3=_0x10eb6a?0x0:_0x330489['offset'];var _0x41b17a=_0x10eb6a?_0x192312[_0xfe81('0x20')]:_0x330489['offset']+_0x330489[_0xfe81('0x1f')];var _0x1b9370;if(_0x41b17a>=_0x1316a7){_0x41b17a=_0x1316a7;_0x1b9370=0xc8;}else{_0x1b9370=0xce;}_0x1fc7bd[_0xfe81('0x1a')](_0x1b9370);return _0x1fc7bd[_0xfe81('0x21')](_0xfe81('0x22'),_0x30fdc3+'-'+_0x41b17a+'/'+_0x1316a7)[_0xfe81('0x1c')](_0x192312);}return null;};}function patchUpdates(_0x361299){return function(_0x24e479){try{jsonpatch[_0xfe81('0x23')](_0x24e479,_0x361299,!![]);}catch(_0xb06d00){return BPromise[_0xfe81('0x24')](_0xb06d00);}return _0x24e479[_0xfe81('0x25')]();};}function saveUpdates(_0x291fb0,_0x3a8e61){return function(_0x33275a){if(_0x33275a){return _0x33275a[_0xfe81('0x26')](_0x291fb0)['then'](function(_0x2b3966){return _0x2b3966;});}return null;};}function removeEntity(_0x1c022a,_0x1d50b1){return function(_0x289715){if(_0x289715){return _0x289715[_0xfe81('0x27')]()[_0xfe81('0x28')](function(){_0x1c022a[_0xfe81('0x1a')](0xcc)[_0xfe81('0x1b')]();});}};}function handleEntityNotFound(_0x49cf7a,_0x110db5){return function(_0x5ce98e){if(!_0x5ce98e){_0x49cf7a['sendStatus'](0x194);}return _0x5ce98e;};}function handleError(_0x5b479b,_0x552c8d){_0x552c8d=_0x552c8d||0x1f4;return function(_0x10558f){logger[_0xfe81('0x29')](_0x10558f['stack']);if(_0x10558f['name']){delete _0x10558f['name'];}_0x5b479b[_0xfe81('0x1a')](_0x552c8d)[_0xfe81('0x2a')](_0x10558f);};}exports[_0xfe81('0x2b')]=function(_0xa1df8a,_0x12e727){var _0x5bb4ff={'raw':![],'where':{'id':_0xa1df8a[_0xfe81('0x2c')]['id']}},_0x53e5bb={};_0x53e5bb[_0xfe81('0x2d')]=_[_0xfe81('0x2e')](db[_0xfe81('0x2f')]['rawAttributes']);_0x53e5bb[_0xfe81('0x30')]=_['keys'](_0xa1df8a['query']);_0x53e5bb[_0xfe81('0x31')]=_[_0xfe81('0x32')](_0x53e5bb['model'],_0x53e5bb[_0xfe81('0x30')]);_0x5bb4ff[_0xfe81('0x33')]=_[_0xfe81('0x32')](_0x53e5bb[_0xfe81('0x2d')],qs[_0xfe81('0x34')](_0xa1df8a[_0xfe81('0x30')]['fields']));_0x5bb4ff[_0xfe81('0x33')]=_0x5bb4ff[_0xfe81('0x33')][_0xfe81('0x35')]?_0x5bb4ff[_0xfe81('0x33')]:_0x53e5bb[_0xfe81('0x2d')];if(_0xa1df8a['query']['includeAll']){_0x5bb4ff[_0xfe81('0x36')]=[{'all':!![]}];}_0x5bb4ff=_[_0xfe81('0x37')]({},_0x5bb4ff,_0xa1df8a[_0xfe81('0x38')]);return db[_0xfe81('0x2f')][_0xfe81('0x39')](_0x5bb4ff)[_0xfe81('0x28')](handleEntityNotFound(_0x12e727,null))[_0xfe81('0x28')](respondWithResult(_0x12e727,null))['catch'](handleError(_0x12e727,null));};exports[_0xfe81('0x27')]=function(_0x5b8408,_0x1ede78){return db[_0xfe81('0x2f')][_0xfe81('0x39')]({'where':{'id':_0x5b8408[_0xfe81('0x2c')]['id']}})[_0xfe81('0x28')](handleEntityNotFound(_0x1ede78,null))[_0xfe81('0x28')](removeEntity(_0x1ede78,null))[_0xfe81('0x3a')](handleError(_0x1ede78,null));};function widgetAttributes(_0x57362a){try{switch(_0x57362a[_0xfe81('0x3b')]){case _0xfe81('0x3c'):return[{'name':'attrUrl','value':_0x57362a[_0xfe81('0x3d')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x0]?_0x57362a[_0xfe81('0x3e')][0x0][_0xfe81('0x3f')]:undefined)||_0xfe81('0x40')}];case _0xfe81('0x41'):return[{'name':_0xfe81('0x42'),'value':_0x57362a[_0xfe81('0x42')]||(_0x57362a['attrs']&&_0x57362a[_0xfe81('0x3e')][0x0]?_0x57362a[_0xfe81('0x3e')][0x0][_0xfe81('0x3f')]:undefined)||''}];case _0xfe81('0x43'):return[{'name':_0xfe81('0x44'),'value':_0x57362a[_0xfe81('0x44')]||(_0x57362a['attrs']&&_0x57362a[_0xfe81('0x3e')][0x0]?_0x57362a[_0xfe81('0x3e')][0x0][_0xfe81('0x3f')]:undefined)||_0xfe81('0x45')},{'name':_0xfe81('0x46'),'value':_0x57362a[_0xfe81('0x46')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a['attrs'][0x1]?_0x57362a[_0xfe81('0x3e')][0x1][_0xfe81('0x3f')]:undefined)||'0.00'},{'name':_0xfe81('0x47'),'value':_0x57362a[_0xfe81('0x47')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x2]?_0x57362a[_0xfe81('0x3e')][0x2][_0xfe81('0x3f')]:undefined)||0xc}];case _0xfe81('0x48'):return[{'name':_0xfe81('0x49'),'value':_0x57362a[_0xfe81('0x49')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x0]?_0x57362a['attrs'][0x0][_0xfe81('0x3f')]:undefined)||'total'},{'name':_0xfe81('0x4a'),'value':_0x57362a[_0xfe81('0x4a')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x1]?_0x57362a[_0xfe81('0x3e')][0x1][_0xfe81('0x3f')]:undefined)||[]},{'name':_0xfe81('0x47'),'value':_0x57362a['attrFontSize']||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x2]?_0x57362a[_0xfe81('0x3e')][0x2][_0xfe81('0x3f')]:undefined)||0x14}];case _0xfe81('0x4b'):case _0xfe81('0x4c'):return[{'name':_0xfe81('0x4d'),'value':_0x57362a[_0xfe81('0x4d')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x0]?_0x57362a[_0xfe81('0x3e')][0x0]['value']:undefined)||_0xfe81('0x4e')},{'name':_0xfe81('0x4f'),'value':_0x57362a['attrSerie2']||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x1]?_0x57362a['attrs'][0x1][_0xfe81('0x3f')]:undefined)||null},{'name':_0xfe81('0x50'),'value':_0x57362a[_0xfe81('0x50')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a['attrs'][0x2]?_0x57362a[_0xfe81('0x3e')][0x2]['value']:undefined)||null},{'name':'attrVoiceQueues','value':_0x57362a['attrVoiceQueues']||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x3]?_0x57362a[_0xfe81('0x3e')][0x3][_0xfe81('0x3f')]:undefined)||[]}];case'web-report':return[{'name':'attrReport','type':_0x57362a[_0xfe81('0x51')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x0]?_0x57362a[_0xfe81('0x3e')][0x0][_0xfe81('0x3b')]:undefined)||null,'value':_0x57362a['attrReport']||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a['attrs'][0x0]?_0x57362a[_0xfe81('0x3e')][0x0][_0xfe81('0x3f')]:undefined)||null},{'name':_0xfe81('0x52'),'value':_0x57362a['attrRefresh']||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x1]?_0x57362a[_0xfe81('0x3e')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x1a9a6b){logger[_0xfe81('0x29')](_0xfe81('0x53'),JSON[_0xfe81('0x54')](_0x1a9a6b));return[];}}exports[_0xfe81('0x55')]=function(_0x26a5a1,_0x34c096){if(_0x26a5a1[_0xfe81('0x56')]){_0x26a5a1[_0xfe81('0x56')]['attrs']=widgetAttributes(_0x26a5a1[_0xfe81('0x56')]);}return db[_0xfe81('0x2f')]['create'](_0x26a5a1['body'],{})[_0xfe81('0x28')](respondWithResult(_0x34c096,0xc9))[_0xfe81('0x3a')](handleError(_0x34c096,null));};exports['update']=function(_0x3aa6a5,_0x40302b){if(_0x3aa6a5[_0xfe81('0x56')]['id']){delete _0x3aa6a5['body']['id'];}_0x3aa6a5[_0xfe81('0x56')][_0xfe81('0x3e')]=widgetAttributes(_0x3aa6a5[_0xfe81('0x56')]);return db[_0xfe81('0x2f')]['find']({'where':{'id':_0x3aa6a5[_0xfe81('0x2c')]['id']}})[_0xfe81('0x28')](handleEntityNotFound(_0x40302b,null))[_0xfe81('0x28')](saveUpdates(_0x3aa6a5['body'],null))[_0xfe81('0x28')](respondWithResult(_0x40302b,null))[_0xfe81('0x3a')](handleError(_0x40302b,null));};
\ No newline at end of file
+var _0x542b=['./dashboardItem.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','name','send','show','params','model','keys','DashboardItem','query','intersection','attributes','length','includeAll','include','merge','options','find','catch','destroy','type','attrUrl','attrs','value','custom','attrPath','clock','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','error','widgetAttributes:\x20%s','stringify','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter'];(function(_0x133249,_0x54120e){var _0x1617da=function(_0x531aaa){while(--_0x531aaa){_0x133249['push'](_0x133249['shift']());}};_0x1617da(++_0x54120e);}(_0x542b,0xec));var _0xb542=function(_0x556bb1,_0x34830d){_0x556bb1=_0x556bb1-0x0;var _0x45455f=_0x542b[_0x556bb1];return _0x45455f;};'use strict';var emlformat=require(_0xb542('0x0'));var rimraf=require(_0xb542('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb542('0x2'));var rp=require(_0xb542('0x3'));var moment=require(_0xb542('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb542('0x5'));var util=require(_0xb542('0x6'));var path=require('path');var sox=require(_0xb542('0x7'));var csv=require('to-csv');var ejs=require(_0xb542('0x8'));var fs=require('fs');var fs_extra=require(_0xb542('0x9'));var _=require(_0xb542('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb542('0xb'));var deskjs=require(_0xb542('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb542('0xd'));var Papa=require(_0xb542('0xe'));var Redis=require(_0xb542('0xf'));var authService=require(_0xb542('0x10'));var qs=require(_0xb542('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb542('0x12'))(_0xb542('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb542('0x14'));var db=require(_0xb542('0x15'))['db'];config[_0xb542('0x16')]=_[_0xb542('0x17')](config[_0xb542('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xb542('0x18'))(new Redis(config['redis']));require(_0xb542('0x19'))[_0xb542('0x1a')](socket);function respondWithStatusCode(_0x262e39,_0x43d090){_0x43d090=_0x43d090||0xcc;return function(_0x306f26){if(_0x306f26){return _0x262e39[_0xb542('0x1b')](_0x43d090);}return _0x262e39[_0xb542('0x1c')](_0x43d090)[_0xb542('0x1d')]();};}function respondWithResult(_0x56e749,_0x1412a0){_0x1412a0=_0x1412a0||0xc8;return function(_0x23fb02){if(_0x23fb02){return _0x56e749[_0xb542('0x1c')](_0x1412a0)[_0xb542('0x1e')](_0x23fb02);}};}function respondWithFilteredResult(_0x1c07d9,_0x151356){return function(_0x64d671){if(_0x64d671){var _0x2ccc3a=typeof _0x151356[_0xb542('0x1f')]===_0xb542('0x20')&&typeof _0x151356[_0xb542('0x21')]===_0xb542('0x20');var _0x441d8c=_0x64d671['count'];var _0x36590f=_0x2ccc3a?0x0:_0x151356[_0xb542('0x1f')];var _0x3dc2b4=_0x2ccc3a?_0x64d671[_0xb542('0x22')]:_0x151356['offset']+_0x151356[_0xb542('0x21')];var _0x4ccd07;if(_0x3dc2b4>=_0x441d8c){_0x3dc2b4=_0x441d8c;_0x4ccd07=0xc8;}else{_0x4ccd07=0xce;}_0x1c07d9['status'](_0x4ccd07);return _0x1c07d9['set'](_0xb542('0x23'),_0x36590f+'-'+_0x3dc2b4+'/'+_0x441d8c)[_0xb542('0x1e')](_0x64d671);}return null;};}function patchUpdates(_0xab03bd){return function(_0xfa508f){try{jsonpatch[_0xb542('0x24')](_0xfa508f,_0xab03bd,!![]);}catch(_0x532c07){return BPromise[_0xb542('0x25')](_0x532c07);}return _0xfa508f[_0xb542('0x26')]();};}function saveUpdates(_0x2f54d3,_0x3938af){return function(_0x544a86){if(_0x544a86){return _0x544a86[_0xb542('0x27')](_0x2f54d3)[_0xb542('0x28')](function(_0x3e12b1){return _0x3e12b1;});}return null;};}function removeEntity(_0x436a6b,_0x3220a6){return function(_0x299330){if(_0x299330){return _0x299330['destroy']()[_0xb542('0x28')](function(){_0x436a6b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x423c48,_0x5cd012){return function(_0x2c63c8){if(!_0x2c63c8){_0x423c48[_0xb542('0x1b')](0x194);}return _0x2c63c8;};}function handleError(_0x1733b4,_0x67fb4c){_0x67fb4c=_0x67fb4c||0x1f4;return function(_0x2473f9){logger['error'](_0x2473f9['stack']);if(_0x2473f9[_0xb542('0x29')]){delete _0x2473f9[_0xb542('0x29')];}_0x1733b4[_0xb542('0x1c')](_0x67fb4c)[_0xb542('0x2a')](_0x2473f9);};}exports[_0xb542('0x2b')]=function(_0x1dbf90,_0x38a733){var _0x4221b1={'raw':![],'where':{'id':_0x1dbf90[_0xb542('0x2c')]['id']}},_0x1969ff={};_0x1969ff[_0xb542('0x2d')]=_[_0xb542('0x2e')](db[_0xb542('0x2f')]['rawAttributes']);_0x1969ff[_0xb542('0x30')]=_[_0xb542('0x2e')](_0x1dbf90[_0xb542('0x30')]);_0x1969ff['filters']=_[_0xb542('0x31')](_0x1969ff[_0xb542('0x2d')],_0x1969ff[_0xb542('0x30')]);_0x4221b1[_0xb542('0x32')]=_['intersection'](_0x1969ff[_0xb542('0x2d')],qs['fields'](_0x1dbf90[_0xb542('0x30')]['fields']));_0x4221b1[_0xb542('0x32')]=_0x4221b1['attributes'][_0xb542('0x33')]?_0x4221b1[_0xb542('0x32')]:_0x1969ff['model'];if(_0x1dbf90[_0xb542('0x30')][_0xb542('0x34')]){_0x4221b1[_0xb542('0x35')]=[{'all':!![]}];}_0x4221b1=_[_0xb542('0x36')]({},_0x4221b1,_0x1dbf90[_0xb542('0x37')]);return db[_0xb542('0x2f')][_0xb542('0x38')](_0x4221b1)[_0xb542('0x28')](handleEntityNotFound(_0x38a733,null))['then'](respondWithResult(_0x38a733,null))[_0xb542('0x39')](handleError(_0x38a733,null));};exports[_0xb542('0x3a')]=function(_0x274d4e,_0x3f2e09){return db[_0xb542('0x2f')][_0xb542('0x38')]({'where':{'id':_0x274d4e[_0xb542('0x2c')]['id']}})[_0xb542('0x28')](handleEntityNotFound(_0x3f2e09,null))['then'](removeEntity(_0x3f2e09,null))[_0xb542('0x39')](handleError(_0x3f2e09,null));};function widgetAttributes(_0x5ce0ce){try{switch(_0x5ce0ce[_0xb542('0x3b')]){case'iframe':return[{'name':_0xb542('0x3c'),'value':_0x5ce0ce['attrUrl']||(_0x5ce0ce[_0xb542('0x3d')]&&_0x5ce0ce[_0xb542('0x3d')][0x0]?_0x5ce0ce[_0xb542('0x3d')][0x0][_0xb542('0x3e')]:undefined)||'https://'}];case _0xb542('0x3f'):return[{'name':_0xb542('0x40'),'value':_0x5ce0ce['attrPath']||(_0x5ce0ce[_0xb542('0x3d')]&&_0x5ce0ce['attrs'][0x0]?_0x5ce0ce[_0xb542('0x3d')][0x0]['value']:undefined)||''}];case _0xb542('0x41'):return[{'name':'attrHourFormat','value':_0x5ce0ce['attrHourFormat']||(_0x5ce0ce[_0xb542('0x3d')]&&_0x5ce0ce[_0xb542('0x3d')][0x0]?_0x5ce0ce['attrs'][0x0][_0xb542('0x3e')]:undefined)||_0xb542('0x42')},{'name':_0xb542('0x43'),'value':_0x5ce0ce[_0xb542('0x43')]||(_0x5ce0ce[_0xb542('0x3d')]&&_0x5ce0ce[_0xb542('0x3d')][0x1]?_0x5ce0ce['attrs'][0x1]['value']:undefined)||'0.00'},{'name':_0xb542('0x44'),'value':_0x5ce0ce[_0xb542('0x44')]||(_0x5ce0ce['attrs']&&_0x5ce0ce['attrs'][0x2]?_0x5ce0ce[_0xb542('0x3d')][0x2][_0xb542('0x3e')]:undefined)||0xc}];case _0xb542('0x45'):return[{'name':_0xb542('0x46'),'value':_0x5ce0ce[_0xb542('0x46')]||(_0x5ce0ce['attrs']&&_0x5ce0ce['attrs'][0x0]?_0x5ce0ce[_0xb542('0x3d')][0x0]['value']:undefined)||_0xb542('0x47')},{'name':_0xb542('0x48'),'value':_0x5ce0ce[_0xb542('0x48')]||(_0x5ce0ce[_0xb542('0x3d')]&&_0x5ce0ce[_0xb542('0x3d')][0x1]?_0x5ce0ce[_0xb542('0x3d')][0x1][_0xb542('0x3e')]:undefined)||[]},{'name':'attrFontSize','value':_0x5ce0ce[_0xb542('0x44')]||(_0x5ce0ce[_0xb542('0x3d')]&&_0x5ce0ce[_0xb542('0x3d')][0x2]?_0x5ce0ce[_0xb542('0x3d')][0x2]['value']:undefined)||0x14}];case _0xb542('0x49'):case _0xb542('0x4a'):return[{'name':_0xb542('0x4b'),'value':_0x5ce0ce[_0xb542('0x4b')]||(_0x5ce0ce[_0xb542('0x3d')]&&_0x5ce0ce['attrs'][0x0]?_0x5ce0ce[_0xb542('0x3d')][0x0][_0xb542('0x3e')]:undefined)||_0xb542('0x47')},{'name':_0xb542('0x4c'),'value':_0x5ce0ce[_0xb542('0x4c')]||(_0x5ce0ce[_0xb542('0x3d')]&&_0x5ce0ce['attrs'][0x1]?_0x5ce0ce[_0xb542('0x3d')][0x1][_0xb542('0x3e')]:undefined)||null},{'name':_0xb542('0x4d'),'value':_0x5ce0ce[_0xb542('0x4d')]||(_0x5ce0ce[_0xb542('0x3d')]&&_0x5ce0ce['attrs'][0x2]?_0x5ce0ce[_0xb542('0x3d')][0x2][_0xb542('0x3e')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x5ce0ce['attrVoiceQueues']||(_0x5ce0ce[_0xb542('0x3d')]&&_0x5ce0ce[_0xb542('0x3d')][0x3]?_0x5ce0ce['attrs'][0x3][_0xb542('0x3e')]:undefined)||[]}];case _0xb542('0x4e'):return[{'name':_0xb542('0x4f'),'type':_0x5ce0ce[_0xb542('0x50')]||(_0x5ce0ce['attrs']&&_0x5ce0ce[_0xb542('0x3d')][0x0]?_0x5ce0ce['attrs'][0x0][_0xb542('0x3b')]:undefined)||null,'value':_0x5ce0ce[_0xb542('0x4f')]||(_0x5ce0ce[_0xb542('0x3d')]&&_0x5ce0ce[_0xb542('0x3d')][0x0]?_0x5ce0ce['attrs'][0x0][_0xb542('0x3e')]:undefined)||null},{'name':'attrRefresh','value':_0x5ce0ce[_0xb542('0x51')]||(_0x5ce0ce[_0xb542('0x3d')]&&_0x5ce0ce['attrs'][0x1]?_0x5ce0ce[_0xb542('0x3d')][0x1][_0xb542('0x3e')]:undefined)||0x0}];default:return[];}}catch(_0x1384ab){logger[_0xb542('0x52')](_0xb542('0x53'),JSON[_0xb542('0x54')](_0x1384ab));return[];}}exports[_0xb542('0x55')]=function(_0x5c2a23,_0x3aaeff){if(_0x5c2a23[_0xb542('0x56')]){_0x5c2a23[_0xb542('0x56')]['attrs']=widgetAttributes(_0x5c2a23[_0xb542('0x56')]);}return db[_0xb542('0x2f')][_0xb542('0x55')](_0x5c2a23['body'],{})[_0xb542('0x28')](respondWithResult(_0x3aaeff,0xc9))[_0xb542('0x39')](handleError(_0x3aaeff,null));};exports[_0xb542('0x27')]=function(_0x4fa9f7,_0x137518){if(_0x4fa9f7[_0xb542('0x56')]['id']){delete _0x4fa9f7[_0xb542('0x56')]['id'];}_0x4fa9f7[_0xb542('0x56')][_0xb542('0x3d')]=widgetAttributes(_0x4fa9f7['body']);return db[_0xb542('0x2f')]['find']({'where':{'id':_0x4fa9f7[_0xb542('0x2c')]['id']}})[_0xb542('0x28')](handleEntityNotFound(_0x137518,null))[_0xb542('0x28')](saveUpdates(_0x4fa9f7[_0xb542('0x56')],null))['then'](respondWithResult(_0x137518,null))[_0xb542('0x39')](handleError(_0x137518,null));};
\ No newline at end of file
index 8d61660..826a06f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa128=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','DashboardItem'];(function(_0x24471b,_0x147426){var _0x25caa2=function(_0xa90c8e){while(--_0xa90c8e){_0x24471b['push'](_0x24471b['shift']());}};_0x25caa2(++_0x147426);}(_0xa128,0xef));var _0x8a12=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa128[_0x13ea00];return _0x1f7347;};'use strict';var EventEmitter=require(_0x8a12('0x0'));var DashboardItem=require(_0x8a12('0x1'))['db'][_0x8a12('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x8a12('0x3')](0x0);var events={'afterCreate':_0x8a12('0x4'),'afterUpdate':_0x8a12('0x5'),'afterDestroy':_0x8a12('0x6')};function emitEvent(_0x7bf092){return function(_0x4cfb8c,_0x384d60,_0x3cf8d9){DashboardItemEvents[_0x8a12('0x7')](_0x7bf092+':'+_0x4cfb8c['id'],_0x4cfb8c);DashboardItemEvents[_0x8a12('0x7')](_0x7bf092,_0x4cfb8c);_0x3cf8d9(null);};}for(var e in events){if(events[_0x8a12('0x8')](e)){var event=events[e];DashboardItem[_0x8a12('0x9')](e,emitEvent(event));}}module[_0x8a12('0xa')]=DashboardItemEvents;
\ No newline at end of file
+var _0xceed=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','DashboardItem'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0xceed,0x76));var _0xdcee=function(_0x369151,_0x179f72){_0x369151=_0x369151-0x0;var _0x4292d5=_0xceed[_0x369151];return _0x4292d5;};'use strict';var EventEmitter=require(_0xdcee('0x0'));var DashboardItem=require('../../mysqldb')['db'][_0xdcee('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xdcee('0x2')](0x0);var events={'afterCreate':_0xdcee('0x3'),'afterUpdate':_0xdcee('0x4'),'afterDestroy':_0xdcee('0x5')};function emitEvent(_0x3ede78){return function(_0x43a2b9,_0x1ab029,_0x1fdcd2){DashboardItemEvents[_0xdcee('0x6')](_0x3ede78+':'+_0x43a2b9['id'],_0x43a2b9);DashboardItemEvents['emit'](_0x3ede78,_0x43a2b9);_0x1fdcd2(null);};}for(var e in events){if(events[_0xdcee('0x7')](e)){var event=events[e];DashboardItem[_0xdcee('0x8')](e,emitEvent(event));}}module[_0xdcee('0x9')]=DashboardItemEvents;
\ No newline at end of file
index ca22998..58affa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef3a=['moment','request-promise','path','rimraf','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','lodash','../../config/logger'];(function(_0x125f3a,_0x1964de){var _0x57e0d8=function(_0x2192bd){while(--_0x2192bd){_0x125f3a['push'](_0x125f3a['shift']());}};_0x57e0d8(++_0x1964de);}(_0xef3a,0xa6));var _0xaef3=function(_0x285c85,_0x132c21){_0x285c85=_0x285c85-0x0;var _0x2f81cd=_0xef3a[_0x285c85];return _0x2f81cd;};'use strict';var _=require(_0xaef3('0x0'));var util=require('util');var logger=require(_0xaef3('0x1'))('api');var moment=require(_0xaef3('0x2'));var BPromise=require('bluebird');var rp=require(_0xaef3('0x3'));var fs=require('fs');var path=require(_0xaef3('0x4'));var rimraf=require(_0xaef3('0x5'));var config=require(_0xaef3('0x6'));var attributes=require(_0xaef3('0x7'));module[_0xaef3('0x8')]=function(_0x2f8a0e,_0x29f36b){return _0x2f8a0e[_0xaef3('0x9')](_0xaef3('0xa'),attributes,{'tableName':_0xaef3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9e1d=['define','dashboard_items','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./dashboardItem.attributes','exports'];(function(_0x3740fe,_0x6c543c){var _0x55492b=function(_0x1f851f){while(--_0x1f851f){_0x3740fe['push'](_0x3740fe['shift']());}};_0x55492b(++_0x6c543c);}(_0x9e1d,0x12e));var _0xd9e1=function(_0x1a5146,_0x5e1078){_0x1a5146=_0x1a5146-0x0;var _0x5b8eb9=_0x9e1d[_0x1a5146];return _0x5b8eb9;};'use strict';var _=require(_0xd9e1('0x0'));var util=require(_0xd9e1('0x1'));var logger=require(_0xd9e1('0x2'))(_0xd9e1('0x3'));var moment=require('moment');var BPromise=require(_0xd9e1('0x4'));var rp=require(_0xd9e1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd9e1('0x6'));var config=require(_0xd9e1('0x7'));var attributes=require(_0xd9e1('0x8'));module[_0xd9e1('0x9')]=function(_0x55a50c,_0x4e1888){return _0x55a50c[_0xd9e1('0xa')]('DashboardItem',attributes,{'tableName':_0xd9e1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a4b20e9..e4bc77b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2670=['result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','localhost','socket.io-emitter','redis','./dashboardItem.socket','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x1709e7,_0x2ced21){var _0x402819=function(_0x3637a0){while(--_0x3637a0){_0x1709e7['push'](_0x1709e7['shift']());}};_0x402819(++_0x2ced21);}(_0x2670,0x1b5));var _0x0267=function(_0x2763ed,_0x126a93){_0x2763ed=_0x2763ed-0x0;var _0xbfdbaa=_0x2670[_0x2763ed];return _0xbfdbaa;};'use strict';var _=require('lodash');var util=require(_0x0267('0x0'));var moment=require(_0x0267('0x1'));var BPromise=require('bluebird');var rs=require(_0x0267('0x2'));var fs=require('fs');var Redis=require(_0x0267('0x3'));var db=require(_0x0267('0x4'))['db'];var utils=require(_0x0267('0x5'));var logger=require(_0x0267('0x6'))(_0x0267('0x7'));var config=require(_0x0267('0x8'));var jayson=require(_0x0267('0x9'));var client=jayson[_0x0267('0xa')]['http']({'port':0x232a});config['redis']=_[_0x0267('0xb')](config['redis'],{'host':_0x0267('0xc'),'port':0x18eb});var socket=require(_0x0267('0xd'))(new Redis(config[_0x0267('0xe')]));require(_0x0267('0xf'))['register'](socket);function respondWithRpcPromise(_0x5f1ccc,_0x351017,_0x1faefd){return new BPromise(function(_0x4f1486,_0x61c7a){return client[_0x0267('0x10')](_0x5f1ccc,_0x1faefd)[_0x0267('0x11')](function(_0x3aa2c8){logger[_0x0267('0x12')](_0x0267('0x13'),_0x351017,_0x0267('0x14'));logger[_0x0267('0x15')](_0x0267('0x16'),_0x351017,'request\x20sent',JSON[_0x0267('0x17')](_0x3aa2c8));if(_0x3aa2c8['error']){if(_0x3aa2c8[_0x0267('0x18')][_0x0267('0x19')]===0x1f4){logger[_0x0267('0x18')](_0x0267('0x13'),_0x351017,_0x3aa2c8[_0x0267('0x18')][_0x0267('0x1a')]);return _0x61c7a(_0x3aa2c8[_0x0267('0x18')]['message']);}logger[_0x0267('0x18')](_0x0267('0x13'),_0x351017,_0x3aa2c8[_0x0267('0x18')][_0x0267('0x1a')]);return _0x4f1486(_0x3aa2c8['error'][_0x0267('0x1a')]);}else{logger['info'](_0x0267('0x13'),_0x351017,'request\x20sent');_0x4f1486(_0x3aa2c8[_0x0267('0x1b')][_0x0267('0x1a')]);}})[_0x0267('0x1c')](function(_0x526d76){logger[_0x0267('0x18')](_0x0267('0x13'),_0x351017,_0x526d76);_0x61c7a(_0x526d76);});});}
\ No newline at end of file
+var _0xe444=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','./dashboardItem.socket','register','request','then','request\x20sent','stringify','error','DashboardItem,\x20%s,\x20%s'];(function(_0x415619,_0x337cb0){var _0x13f7c8=function(_0x399afd){while(--_0x399afd){_0x415619['push'](_0x415619['shift']());}};_0x13f7c8(++_0x337cb0);}(_0xe444,0xb9));var _0x4e44=function(_0x1e87e7,_0x44983f){_0x1e87e7=_0x1e87e7-0x0;var _0x24af4f=_0xe444[_0x1e87e7];return _0x24af4f;};'use strict';var _=require(_0x4e44('0x0'));var util=require(_0x4e44('0x1'));var moment=require(_0x4e44('0x2'));var BPromise=require(_0x4e44('0x3'));var rs=require(_0x4e44('0x4'));var fs=require('fs');var Redis=require(_0x4e44('0x5'));var db=require(_0x4e44('0x6'))['db'];var utils=require(_0x4e44('0x7'));var logger=require(_0x4e44('0x8'))(_0x4e44('0x9'));var config=require(_0x4e44('0xa'));var jayson=require(_0x4e44('0xb'));var client=jayson[_0x4e44('0xc')][_0x4e44('0xd')]({'port':0x232a});config[_0x4e44('0xe')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4e44('0xf'))[_0x4e44('0x10')](socket);function respondWithRpcPromise(_0x479d96,_0x14c0e2,_0x123532){return new BPromise(function(_0x49eb1f,_0x33c68f){return client[_0x4e44('0x11')](_0x479d96,_0x123532)[_0x4e44('0x12')](function(_0x141c5d){logger['info']('DashboardItem,\x20%s,\x20%s',_0x14c0e2,'request\x20sent');logger['debug']('DashboardItem,\x20%s,\x20%s,\x20%s',_0x14c0e2,_0x4e44('0x13'),JSON[_0x4e44('0x14')](_0x141c5d));if(_0x141c5d[_0x4e44('0x15')]){if(_0x141c5d['error']['code']===0x1f4){logger[_0x4e44('0x15')](_0x4e44('0x16'),_0x14c0e2,_0x141c5d[_0x4e44('0x15')][_0x4e44('0x17')]);return _0x33c68f(_0x141c5d[_0x4e44('0x15')][_0x4e44('0x17')]);}logger[_0x4e44('0x15')](_0x4e44('0x16'),_0x14c0e2,_0x141c5d[_0x4e44('0x15')][_0x4e44('0x17')]);return _0x49eb1f(_0x141c5d[_0x4e44('0x15')][_0x4e44('0x17')]);}else{logger['info'](_0x4e44('0x16'),_0x14c0e2,'request\x20sent');_0x49eb1f(_0x141c5d[_0x4e44('0x18')][_0x4e44('0x17')]);}})[_0x4e44('0x19')](function(_0x55d080){logger[_0x4e44('0x15')](_0x4e44('0x16'),_0x14c0e2,_0x55d080);_0x33c68f(_0x55d080);});});}
\ No newline at end of file
index b178dc5..fcf6a13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1984=['save','remove','update','register','length','./dashboardItem.events'];(function(_0x8f7cb6,_0xf929c8){var _0xf4d3a1=function(_0x3e3d31){while(--_0x3e3d31){_0x8f7cb6['push'](_0x8f7cb6['shift']());}};_0xf4d3a1(++_0xf929c8);}(_0x1984,0x161));var _0x4198=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x1984[_0x126558];return _0x1f6d14;};'use strict';var DashboardItemEvents=require(_0x4198('0x0'));var events=[_0x4198('0x1'),_0x4198('0x2'),_0x4198('0x3')];function createListener(_0x1fc52c,_0x5b2c05){return function(_0x4e8a6a){_0x5b2c05['emit'](_0x1fc52c,_0x4e8a6a);};}function removeListener(_0x7d9f81,_0x17545a){return function(){DashboardItemEvents['removeListener'](_0x7d9f81,_0x17545a);};}exports[_0x4198('0x4')]=function(_0x52d97c){for(var _0xd3532b=0x0,_0x4d0471=events[_0x4198('0x5')];_0xd3532b<_0x4d0471;_0xd3532b++){var _0x599384=events[_0xd3532b];var _0x2c5540=createListener('dashboardItem:'+_0x599384,_0x52d97c);DashboardItemEvents['on'](_0x599384,_0x2c5540);}};
\ No newline at end of file
+var _0xdc47=['removeListener','dashboardItem:','./dashboardItem.events','save','remove','update','emit'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0xdc47,0xf7));var _0x7dc4=function(_0x2a1b33,_0x409f50){_0x2a1b33=_0x2a1b33-0x0;var _0x4c50e7=_0xdc47[_0x2a1b33];return _0x4c50e7;};'use strict';var DashboardItemEvents=require(_0x7dc4('0x0'));var events=[_0x7dc4('0x1'),_0x7dc4('0x2'),_0x7dc4('0x3')];function createListener(_0x290380,_0x508d05){return function(_0x4c0845){_0x508d05[_0x7dc4('0x4')](_0x290380,_0x4c0845);};}function removeListener(_0x3b810a,_0xaa7ac2){return function(){DashboardItemEvents[_0x7dc4('0x5')](_0x3b810a,_0xaa7ac2);};}exports['register']=function(_0x1bc69d){for(var _0x1bb013=0x0,_0x1b2d12=events['length'];_0x1bb013<_0x1b2d12;_0x1bb013++){var _0x506c08=events[_0x1bb013];var _0x29b3a9=createListener(_0x7dc4('0x6')+_0x506c08,_0x1bc69d);DashboardItemEvents['on'](_0x506c08,_0x29b3a9);}};
\ No newline at end of file
index 078baa0..4c52016 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba33=['/:id','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','./dashboardItem.controller','get','isAuthenticated','create','update'];(function(_0x291aaf,_0x4c6d8d){var _0x5571e6=function(_0x1b4fec){while(--_0x1b4fec){_0x291aaf['push'](_0x291aaf['shift']());}};_0x5571e6(++_0x4c6d8d);}(_0xba33,0x16e));var _0x3ba3=function(_0x42cdec,_0x19eb70){_0x42cdec=_0x42cdec-0x0;var _0x51b98e=_0xba33[_0x42cdec];return _0x51b98e;};'use strict';var multer=require(_0x3ba3('0x0'));var util=require(_0x3ba3('0x1'));var path=require(_0x3ba3('0x2'));var timeout=require('connect-timeout');var express=require(_0x3ba3('0x3'));var router=express[_0x3ba3('0x4')]();var fs_extra=require(_0x3ba3('0x5'));var auth=require(_0x3ba3('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3ba3('0x7'));router[_0x3ba3('0x8')]('/:id',auth[_0x3ba3('0x9')](),controller['show']);router['post']('/',auth[_0x3ba3('0x9')](),controller[_0x3ba3('0xa')]);router['put']('/:id',auth[_0x3ba3('0x9')](),controller[_0x3ba3('0xb')]);router['delete'](_0x3ba3('0xc'),auth['isAuthenticated'](),controller[_0x3ba3('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0xbd2e=['put','update','delete','destroy','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','create'];(function(_0x11db01,_0x46ea36){var _0xf9da2c=function(_0x194d0d){while(--_0x194d0d){_0x11db01['push'](_0x11db01['shift']());}};_0xf9da2c(++_0x46ea36);}(_0xbd2e,0x7b));var _0xebd2=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xbd2e[_0x4a9fb1];return _0x348672;};'use strict';var multer=require('multer');var util=require(_0xebd2('0x0'));var path=require(_0xebd2('0x1'));var timeout=require(_0xebd2('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xebd2('0x3'));var auth=require(_0xebd2('0x4'));var interaction=require(_0xebd2('0x5'));var config=require(_0xebd2('0x6'));var controller=require(_0xebd2('0x7'));router[_0xebd2('0x8')](_0xebd2('0x9'),auth[_0xebd2('0xa')](),controller[_0xebd2('0xb')]);router['post']('/',auth[_0xebd2('0xa')](),controller[_0xebd2('0xc')]);router[_0xebd2('0xd')](_0xebd2('0x9'),auth[_0xebd2('0xa')](),controller[_0xebd2('0xe')]);router[_0xebd2('0xf')]('/:id',auth[_0xebd2('0xa')](),controller[_0xebd2('0x10')]);module['exports']=router;
\ No newline at end of file
index c492536..c1ef365 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4bc=['first','second','sequelize','exports','STRING','ENUM'];(function(_0x5ebeeb,_0x36520b){var _0x17b4e7=function(_0x1a204b){while(--_0x1a204b){_0x5ebeeb['push'](_0x5ebeeb['shift']());}};_0x17b4e7(++_0x36520b);}(_0xe4bc,0x98));var _0xce4b=function(_0x4f438d,_0x29c693){_0x4f438d=_0x4f438d-0x0;var _0x4be72f=_0xe4bc[_0x4f438d];return _0x4be72f;};'use strict';var Sequelize=require(_0xce4b('0x0'));module[_0xce4b('0x1')]={'name':{'type':Sequelize[_0xce4b('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0xce4b('0x3')](_0xce4b('0x4'),_0xce4b('0x5'),'third'),'allowNull':![],'defaultValue':_0xce4b('0x4')},'description':{'type':Sequelize[_0xce4b('0x2')]}};
\ No newline at end of file
+var _0x4bb7=['third','sequelize','exports','first','second'];(function(_0x249d7c,_0x17163a){var _0x20f24b=function(_0x5db7c4){while(--_0x5db7c4){_0x249d7c['push'](_0x249d7c['shift']());}};_0x20f24b(++_0x17163a);}(_0x4bb7,0xc9));var _0x74bb=function(_0xde7f28,_0x163459){_0xde7f28=_0xde7f28-0x0;var _0xe0f000=_0x4bb7[_0xde7f28];return _0xe0f000;};'use strict';var Sequelize=require(_0x74bb('0x0'));module[_0x74bb('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize['ENUM'](_0x74bb('0x2'),_0x74bb('0x3'),_0x74bb('0x4')),'allowNull':![],'defaultValue':_0x74bb('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 84fccab..dfc7d4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe42a=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error','name','index','map','Disposition','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','keys','attributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','params','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','ioredis'];(function(_0x4c3462,_0x2b5484){var _0x43a439=function(_0x56d778){while(--_0x56d778){_0x4c3462['push'](_0x4c3462['shift']());}};_0x43a439(++_0x2b5484);}(_0xe42a,0x121));var _0xae42=function(_0x104e86,_0x449e75){_0x104e86=_0x104e86-0x0;var _0x5aa1eb=_0xe42a[_0x104e86];return _0x5aa1eb;};'use strict';var emlformat=require(_0xae42('0x0'));var rimraf=require(_0xae42('0x1'));var zipdir=require(_0xae42('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xae42('0x3'));var moment=require('moment');var BPromise=require(_0xae42('0x4'));var Mustache=require(_0xae42('0x5'));var util=require(_0xae42('0x6'));var path=require('path');var sox=require(_0xae42('0x7'));var csv=require(_0xae42('0x8'));var ejs=require(_0xae42('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xae42('0xa'));var squel=require('squel');var crypto=require(_0xae42('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xae42('0xc'));var toCsv=require('to-csv');var querystring=require(_0xae42('0xd'));var Papa=require('papaparse');var Redis=require(_0xae42('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xae42('0xf'));var as=require(_0xae42('0x10'));var hardwareService=require(_0xae42('0x11'));var logger=require(_0xae42('0x12'))('api');var utils=require(_0xae42('0x13'));var config=require(_0xae42('0x14'));var licenseUtil=require(_0xae42('0x15'));var db=require(_0xae42('0x16'))['db'];function respondWithStatusCode(_0x37c37f,_0x43deb3){_0x43deb3=_0x43deb3||0xcc;return function(_0x43c544){if(_0x43c544){return _0x37c37f['sendStatus'](_0x43deb3);}return _0x37c37f[_0xae42('0x17')](_0x43deb3)['end']();};}function respondWithResult(_0x10e2b6,_0x4ebba3){_0x4ebba3=_0x4ebba3||0xc8;return function(_0x3d1b16){if(_0x3d1b16){return _0x10e2b6[_0xae42('0x17')](_0x4ebba3)[_0xae42('0x18')](_0x3d1b16);}};}function respondWithFilteredResult(_0x16c683,_0x5ca013){return function(_0x25e342){if(_0x25e342){var _0x34957b=typeof _0x5ca013[_0xae42('0x19')]===_0xae42('0x1a')&&typeof _0x5ca013[_0xae42('0x1b')]==='undefined';var _0x5b031e=_0x25e342[_0xae42('0x1c')];var _0x3963fa=_0x34957b?0x0:_0x5ca013[_0xae42('0x19')];var _0x2fce02=_0x34957b?_0x25e342[_0xae42('0x1c')]:_0x5ca013[_0xae42('0x19')]+_0x5ca013[_0xae42('0x1b')];var _0x5b2840;if(_0x2fce02>=_0x5b031e){_0x2fce02=_0x5b031e;_0x5b2840=0xc8;}else{_0x5b2840=0xce;}_0x16c683['status'](_0x5b2840);return _0x16c683['set'](_0xae42('0x1d'),_0x3963fa+'-'+_0x2fce02+'/'+_0x5b031e)['json'](_0x25e342);}return null;};}function patchUpdates(_0x2118a3){return function(_0xe29f82){try{jsonpatch[_0xae42('0x1e')](_0xe29f82,_0x2118a3,!![]);}catch(_0x2801a5){return BPromise[_0xae42('0x1f')](_0x2801a5);}return _0xe29f82[_0xae42('0x20')]();};}function saveUpdates(_0xcfd2f1,_0x2d13d0){return function(_0x438d30){if(_0x438d30){return _0x438d30[_0xae42('0x21')](_0xcfd2f1)[_0xae42('0x22')](function(_0x334f4d){return _0x334f4d;});}return null;};}function removeEntity(_0x404214,_0x52aec5){return function(_0x18cb0b){if(_0x18cb0b){return _0x18cb0b[_0xae42('0x23')]()[_0xae42('0x22')](function(){var _0x54acdb=_0x18cb0b[_0xae42('0x24')]({'plain':!![]});var _0x2af2c0='Dispositions';return db[_0xae42('0x25')][_0xae42('0x23')]({'where':{'type':_0x2af2c0,'resourceId':_0x54acdb['id']}})[_0xae42('0x22')](function(){return _0x18cb0b;});})[_0xae42('0x22')](function(){_0x404214[_0xae42('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x38b647,_0x5a571f){return function(_0xa2041b){if(!_0xa2041b){_0x38b647['sendStatus'](0x194);}return _0xa2041b;};}function handleError(_0x447ed1,_0x15ea7d){_0x15ea7d=_0x15ea7d||0x1f4;return function(_0x491ccb){logger[_0xae42('0x26')](_0x491ccb['stack']);if(_0x491ccb['name']){delete _0x491ccb[_0xae42('0x27')];}_0x447ed1[_0xae42('0x17')](_0x15ea7d)['send'](_0x491ccb);};}exports[_0xae42('0x28')]=function(_0x4e3cc3,_0x471170){var _0x4387fe={},_0x13fdce={},_0x4cfd99={'count':0x0,'rows':[]};var _0x200343=_[_0xae42('0x29')](db[_0xae42('0x2a')][_0xae42('0x2b')],function(_0x120a74){return{'name':_0x120a74[_0xae42('0x2c')],'type':_0x120a74[_0xae42('0x2d')][_0xae42('0x2e')]};});_0x13fdce[_0xae42('0x2f')]=_['map'](_0x200343,_0xae42('0x27'));_0x13fdce['query']=_['keys'](_0x4e3cc3[_0xae42('0x30')]);_0x13fdce[_0xae42('0x31')]=_[_0xae42('0x32')](_0x13fdce[_0xae42('0x2f')],_0x13fdce[_0xae42('0x30')]);_0x4387fe['attributes']=_[_0xae42('0x32')](_0x13fdce['model'],qs[_0xae42('0x33')](_0x4e3cc3[_0xae42('0x30')][_0xae42('0x33')]));_0x4387fe['attributes']=_0x4387fe['attributes'][_0xae42('0x34')]?_0x4387fe['attributes']:_0x13fdce['model'];if(!_0x4e3cc3['query'][_0xae42('0x35')]('nolimit')){_0x4387fe[_0xae42('0x1b')]=qs[_0xae42('0x1b')](_0x4e3cc3[_0xae42('0x30')][_0xae42('0x1b')]);_0x4387fe[_0xae42('0x19')]=qs[_0xae42('0x19')](_0x4e3cc3[_0xae42('0x30')][_0xae42('0x19')]);}_0x4387fe[_0xae42('0x36')]=qs[_0xae42('0x37')](_0x4e3cc3['query'][_0xae42('0x37')]);_0x4387fe[_0xae42('0x38')]=qs[_0xae42('0x31')](_[_0xae42('0x39')](_0x4e3cc3[_0xae42('0x30')],_0x13fdce[_0xae42('0x31')]),_0x200343);if(_0x4e3cc3[_0xae42('0x30')]['filter']){_0x4387fe[_0xae42('0x38')]=_[_0xae42('0x3a')](_0x4387fe['where'],{'$or':_[_0xae42('0x29')](_0x200343,function(_0x4bae95){if(_0x4bae95[_0xae42('0x2d')]!==_0xae42('0x3b')){var _0x3ad3eb={};_0x3ad3eb[_0x4bae95['name']]={'$like':'%'+_0x4e3cc3[_0xae42('0x30')][_0xae42('0x3c')]+'%'};return _0x3ad3eb;}})});}_0x4387fe=_[_0xae42('0x3a')]({},_0x4387fe,_0x4e3cc3[_0xae42('0x3d')]);var _0x3cd9bb={'where':_0x4387fe[_0xae42('0x38')]};return db['Disposition'][_0xae42('0x1c')](_0x3cd9bb)[_0xae42('0x22')](function(_0x397528){_0x4cfd99[_0xae42('0x1c')]=_0x397528;if(_0x4e3cc3[_0xae42('0x30')][_0xae42('0x3e')]){_0x4387fe[_0xae42('0x3f')]=[{'all':!![]}];}return db['Disposition'][_0xae42('0x40')](_0x4387fe);})[_0xae42('0x22')](function(_0x307ccc){_0x4cfd99['rows']=_0x307ccc;return _0x4cfd99;})[_0xae42('0x22')](respondWithFilteredResult(_0x471170,_0x4387fe))[_0xae42('0x41')](handleError(_0x471170,null));};exports[_0xae42('0x42')]=function(_0x13453c,_0x4d8d83){var _0x12dac5={'raw':!![],'where':{'id':_0x13453c['params']['id']}},_0x4638e8={};_0x4638e8[_0xae42('0x2f')]=_[_0xae42('0x43')](db[_0xae42('0x2a')][_0xae42('0x2b')]);_0x4638e8[_0xae42('0x30')]=_[_0xae42('0x43')](_0x13453c[_0xae42('0x30')]);_0x4638e8[_0xae42('0x31')]=_[_0xae42('0x32')](_0x4638e8[_0xae42('0x2f')],_0x4638e8['query']);_0x12dac5[_0xae42('0x44')]=_[_0xae42('0x32')](_0x4638e8[_0xae42('0x2f')],qs[_0xae42('0x33')](_0x13453c[_0xae42('0x30')][_0xae42('0x33')]));_0x12dac5['attributes']=_0x12dac5[_0xae42('0x44')][_0xae42('0x34')]?_0x12dac5[_0xae42('0x44')]:_0x4638e8[_0xae42('0x2f')];if(_0x13453c['query']['includeAll']){_0x12dac5['include']=[{'all':!![]}];}_0x12dac5=_['merge']({},_0x12dac5,_0x13453c['options']);return db[_0xae42('0x2a')][_0xae42('0x45')](_0x12dac5)['then'](handleEntityNotFound(_0x4d8d83,null))[_0xae42('0x22')](respondWithResult(_0x4d8d83,null))['catch'](handleError(_0x4d8d83,null));};exports[_0xae42('0x46')]=function(_0x97103e,_0xcfa48c){return db['Disposition'][_0xae42('0x46')](_0x97103e[_0xae42('0x47')],{})['then'](function(_0x438576){var _0x13f8ca=_0x97103e[_0xae42('0x48')][_0xae42('0x24')]({'plain':!![]});if(!_0x13f8ca)throw new Error(_0xae42('0x49'));if(_0x13f8ca['role']===_0xae42('0x48')){var _0x1ea517=_0x438576['get']({'plain':!![]});var _0x4dd416='Dispositions';return db[_0xae42('0x4a')]['find']({'where':{'name':_0x4dd416,'userProfileId':_0x13f8ca['userProfileId']},'raw':!![]})[_0xae42('0x22')](function(_0x1be406){if(_0x1be406&&_0x1be406['autoAssociation']===0x0){return db[_0xae42('0x25')]['create']({'name':_0x1ea517[_0xae42('0x27')],'resourceId':_0x1ea517['id'],'type':_0x1be406[_0xae42('0x27')],'sectionId':_0x1be406['id']},{})[_0xae42('0x22')](function(){return _0x438576;});}else{return _0x438576;}})[_0xae42('0x41')](function(_0x55e0d4){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x55e0d4);throw _0x55e0d4;});}return _0x438576;})[_0xae42('0x22')](respondWithResult(_0xcfa48c,0xc9))['catch'](handleError(_0xcfa48c,null));};exports[_0xae42('0x21')]=function(_0x49b1af,_0x5579f0){if(_0x49b1af[_0xae42('0x47')]['id']){delete _0x49b1af['body']['id'];}return db[_0xae42('0x2a')][_0xae42('0x45')]({'where':{'id':_0x49b1af[_0xae42('0x4b')]['id']}})[_0xae42('0x22')](handleEntityNotFound(_0x5579f0,null))[_0xae42('0x22')](saveUpdates(_0x49b1af[_0xae42('0x47')],null))[_0xae42('0x22')](respondWithResult(_0x5579f0,null))['catch'](handleError(_0x5579f0,null));};exports[_0xae42('0x23')]=function(_0x303068,_0x447015){return db['Disposition']['find']({'where':{'id':_0x303068[_0xae42('0x4b')]['id']}})[_0xae42('0x22')](handleEntityNotFound(_0x447015,null))[_0xae42('0x22')](removeEntity(_0x447015,null))[_0xae42('0x41')](handleError(_0x447015,null));};
\ No newline at end of file
+var _0xa3f9=['show','fields','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','util','path','sox','to-csv','ejs','fs-extra','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','status','json','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','Dispositions','UserProfileResource','sendStatus','error','stack','name','send','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Disposition','includeAll','include','findAll','rows','catch'];(function(_0x288f5e,_0x205edd){var _0x476cc9=function(_0x796f53){while(--_0x796f53){_0x288f5e['push'](_0x288f5e['shift']());}};_0x476cc9(++_0x205edd);}(_0xa3f9,0x140));var _0x9a3f=function(_0x4209cc,_0xac275){_0x4209cc=_0x4209cc-0x0;var _0x5d9645=_0xa3f9[_0x4209cc];return _0x5d9645;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9a3f('0x0'));var zipdir=require(_0x9a3f('0x1'));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(_0x9a3f('0x2'));var path=require(_0x9a3f('0x3'));var sox=require(_0x9a3f('0x4'));var csv=require(_0x9a3f('0x5'));var ejs=require(_0x9a3f('0x6'));var fs=require('fs');var fs_extra=require(_0x9a3f('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9a3f('0x5'));var querystring=require(_0x9a3f('0x8'));var Papa=require(_0x9a3f('0x9'));var Redis=require(_0x9a3f('0xa'));var authService=require(_0x9a3f('0xb'));var qs=require(_0x9a3f('0xc'));var as=require(_0x9a3f('0xd'));var hardwareService=require(_0x9a3f('0xe'));var logger=require(_0x9a3f('0xf'))(_0x9a3f('0x10'));var utils=require(_0x9a3f('0x11'));var config=require(_0x9a3f('0x12'));var licenseUtil=require(_0x9a3f('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1968bd,_0x4edc9f){_0x4edc9f=_0x4edc9f||0xcc;return function(_0x425b38){if(_0x425b38){return _0x1968bd['sendStatus'](_0x4edc9f);}return _0x1968bd[_0x9a3f('0x14')](_0x4edc9f)['end']();};}function respondWithResult(_0x22e23a,_0x2cdb11){_0x2cdb11=_0x2cdb11||0xc8;return function(_0x4c567a){if(_0x4c567a){return _0x22e23a[_0x9a3f('0x14')](_0x2cdb11)[_0x9a3f('0x15')](_0x4c567a);}};}function respondWithFilteredResult(_0x5ea34f,_0x1ea6aa){return function(_0x350199){if(_0x350199){var _0x4d91d9=typeof _0x1ea6aa['offset']==='undefined'&&typeof _0x1ea6aa['limit']==='undefined';var _0x1fc10f=_0x350199[_0x9a3f('0x16')];var _0x19c855=_0x4d91d9?0x0:_0x1ea6aa['offset'];var _0x386665=_0x4d91d9?_0x350199[_0x9a3f('0x16')]:_0x1ea6aa[_0x9a3f('0x17')]+_0x1ea6aa[_0x9a3f('0x18')];var _0x639b28;if(_0x386665>=_0x1fc10f){_0x386665=_0x1fc10f;_0x639b28=0xc8;}else{_0x639b28=0xce;}_0x5ea34f[_0x9a3f('0x14')](_0x639b28);return _0x5ea34f[_0x9a3f('0x19')](_0x9a3f('0x1a'),_0x19c855+'-'+_0x386665+'/'+_0x1fc10f)['json'](_0x350199);}return null;};}function patchUpdates(_0x48e5ac){return function(_0x305b38){try{jsonpatch[_0x9a3f('0x1b')](_0x305b38,_0x48e5ac,!![]);}catch(_0xf94738){return BPromise['reject'](_0xf94738);}return _0x305b38[_0x9a3f('0x1c')]();};}function saveUpdates(_0x56e2f9,_0x4ad8bb){return function(_0x3cc4f7){if(_0x3cc4f7){return _0x3cc4f7[_0x9a3f('0x1d')](_0x56e2f9)[_0x9a3f('0x1e')](function(_0x228bc4){return _0x228bc4;});}return null;};}function removeEntity(_0x2533a0,_0x5b76e4){return function(_0x5db002){if(_0x5db002){return _0x5db002[_0x9a3f('0x1f')]()['then'](function(){var _0xf41be5=_0x5db002['get']({'plain':!![]});var _0x34e6ac=_0x9a3f('0x20');return db[_0x9a3f('0x21')][_0x9a3f('0x1f')]({'where':{'type':_0x34e6ac,'resourceId':_0xf41be5['id']}})['then'](function(){return _0x5db002;});})['then'](function(){_0x2533a0[_0x9a3f('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e84a9,_0x4f8952){return function(_0x42bb44){if(!_0x42bb44){_0x5e84a9[_0x9a3f('0x22')](0x194);}return _0x42bb44;};}function handleError(_0x5780b9,_0x57eabf){_0x57eabf=_0x57eabf||0x1f4;return function(_0x289358){logger[_0x9a3f('0x23')](_0x289358[_0x9a3f('0x24')]);if(_0x289358[_0x9a3f('0x25')]){delete _0x289358[_0x9a3f('0x25')];}_0x5780b9[_0x9a3f('0x14')](_0x57eabf)[_0x9a3f('0x26')](_0x289358);};}exports['index']=function(_0x1bac9b,_0x19d29a){var _0x504892={},_0x23d2ba={},_0x1f7467={'count':0x0,'rows':[]};var _0x287c58=_[_0x9a3f('0x27')](db['Disposition'][_0x9a3f('0x28')],function(_0x585ae5){return{'name':_0x585ae5['fieldName'],'type':_0x585ae5[_0x9a3f('0x29')][_0x9a3f('0x2a')]};});_0x23d2ba[_0x9a3f('0x2b')]=_[_0x9a3f('0x27')](_0x287c58,_0x9a3f('0x25'));_0x23d2ba[_0x9a3f('0x2c')]=_[_0x9a3f('0x2d')](_0x1bac9b[_0x9a3f('0x2c')]);_0x23d2ba[_0x9a3f('0x2e')]=_[_0x9a3f('0x2f')](_0x23d2ba[_0x9a3f('0x2b')],_0x23d2ba['query']);_0x504892['attributes']=_[_0x9a3f('0x2f')](_0x23d2ba['model'],qs['fields'](_0x1bac9b[_0x9a3f('0x2c')]['fields']));_0x504892['attributes']=_0x504892[_0x9a3f('0x30')][_0x9a3f('0x31')]?_0x504892[_0x9a3f('0x30')]:_0x23d2ba[_0x9a3f('0x2b')];if(!_0x1bac9b[_0x9a3f('0x2c')]['hasOwnProperty'](_0x9a3f('0x32'))){_0x504892[_0x9a3f('0x18')]=qs[_0x9a3f('0x18')](_0x1bac9b['query'][_0x9a3f('0x18')]);_0x504892[_0x9a3f('0x17')]=qs[_0x9a3f('0x17')](_0x1bac9b[_0x9a3f('0x2c')][_0x9a3f('0x17')]);}_0x504892[_0x9a3f('0x33')]=qs[_0x9a3f('0x34')](_0x1bac9b[_0x9a3f('0x2c')][_0x9a3f('0x34')]);_0x504892[_0x9a3f('0x35')]=qs[_0x9a3f('0x2e')](_[_0x9a3f('0x36')](_0x1bac9b[_0x9a3f('0x2c')],_0x23d2ba['filters']),_0x287c58);if(_0x1bac9b[_0x9a3f('0x2c')][_0x9a3f('0x37')]){_0x504892[_0x9a3f('0x35')]=_[_0x9a3f('0x38')](_0x504892['where'],{'$or':_[_0x9a3f('0x27')](_0x287c58,function(_0x26ea8d){if(_0x26ea8d[_0x9a3f('0x29')]!==_0x9a3f('0x39')){var _0x404439={};_0x404439[_0x26ea8d[_0x9a3f('0x25')]]={'$like':'%'+_0x1bac9b[_0x9a3f('0x2c')][_0x9a3f('0x37')]+'%'};return _0x404439;}})});}_0x504892=_[_0x9a3f('0x38')]({},_0x504892,_0x1bac9b[_0x9a3f('0x3a')]);var _0x40bf09={'where':_0x504892[_0x9a3f('0x35')]};return db[_0x9a3f('0x3b')][_0x9a3f('0x16')](_0x40bf09)[_0x9a3f('0x1e')](function(_0x22af79){_0x1f7467['count']=_0x22af79;if(_0x1bac9b[_0x9a3f('0x2c')][_0x9a3f('0x3c')]){_0x504892[_0x9a3f('0x3d')]=[{'all':!![]}];}return db[_0x9a3f('0x3b')][_0x9a3f('0x3e')](_0x504892);})[_0x9a3f('0x1e')](function(_0x1293e1){_0x1f7467[_0x9a3f('0x3f')]=_0x1293e1;return _0x1f7467;})[_0x9a3f('0x1e')](respondWithFilteredResult(_0x19d29a,_0x504892))[_0x9a3f('0x40')](handleError(_0x19d29a,null));};exports[_0x9a3f('0x41')]=function(_0x2fdd81,_0x2a6d49){var _0x1b24f8={'raw':!![],'where':{'id':_0x2fdd81['params']['id']}},_0x111360={};_0x111360[_0x9a3f('0x2b')]=_[_0x9a3f('0x2d')](db['Disposition'][_0x9a3f('0x28')]);_0x111360[_0x9a3f('0x2c')]=_[_0x9a3f('0x2d')](_0x2fdd81['query']);_0x111360[_0x9a3f('0x2e')]=_[_0x9a3f('0x2f')](_0x111360['model'],_0x111360[_0x9a3f('0x2c')]);_0x1b24f8[_0x9a3f('0x30')]=_[_0x9a3f('0x2f')](_0x111360[_0x9a3f('0x2b')],qs[_0x9a3f('0x42')](_0x2fdd81[_0x9a3f('0x2c')][_0x9a3f('0x42')]));_0x1b24f8[_0x9a3f('0x30')]=_0x1b24f8[_0x9a3f('0x30')][_0x9a3f('0x31')]?_0x1b24f8[_0x9a3f('0x30')]:_0x111360[_0x9a3f('0x2b')];if(_0x2fdd81[_0x9a3f('0x2c')][_0x9a3f('0x3c')]){_0x1b24f8[_0x9a3f('0x3d')]=[{'all':!![]}];}_0x1b24f8=_[_0x9a3f('0x38')]({},_0x1b24f8,_0x2fdd81[_0x9a3f('0x3a')]);return db[_0x9a3f('0x3b')][_0x9a3f('0x43')](_0x1b24f8)[_0x9a3f('0x1e')](handleEntityNotFound(_0x2a6d49,null))[_0x9a3f('0x1e')](respondWithResult(_0x2a6d49,null))[_0x9a3f('0x40')](handleError(_0x2a6d49,null));};exports[_0x9a3f('0x44')]=function(_0x6aadba,_0x4d7ebd){return db[_0x9a3f('0x3b')]['create'](_0x6aadba[_0x9a3f('0x45')],{})[_0x9a3f('0x1e')](function(_0x3eec90){var _0x5ea179=_0x6aadba[_0x9a3f('0x46')][_0x9a3f('0x47')]({'plain':!![]});if(!_0x5ea179)throw new Error(_0x9a3f('0x48'));if(_0x5ea179[_0x9a3f('0x49')]===_0x9a3f('0x46')){var _0x490358=_0x3eec90[_0x9a3f('0x47')]({'plain':!![]});var _0x5c44a7='Dispositions';return db[_0x9a3f('0x4a')]['find']({'where':{'name':_0x5c44a7,'userProfileId':_0x5ea179['userProfileId']},'raw':!![]})[_0x9a3f('0x1e')](function(_0x97a78d){if(_0x97a78d&&_0x97a78d[_0x9a3f('0x4b')]===0x0){return db[_0x9a3f('0x21')][_0x9a3f('0x44')]({'name':_0x490358[_0x9a3f('0x25')],'resourceId':_0x490358['id'],'type':_0x97a78d[_0x9a3f('0x25')],'sectionId':_0x97a78d['id']},{})[_0x9a3f('0x1e')](function(){return _0x3eec90;});}else{return _0x3eec90;}})[_0x9a3f('0x40')](function(_0x385211){logger[_0x9a3f('0x23')](_0x9a3f('0x4c'),_0x385211);throw _0x385211;});}return _0x3eec90;})[_0x9a3f('0x1e')](respondWithResult(_0x4d7ebd,0xc9))[_0x9a3f('0x40')](handleError(_0x4d7ebd,null));};exports[_0x9a3f('0x1d')]=function(_0x558a46,_0x4ae2c3){if(_0x558a46[_0x9a3f('0x45')]['id']){delete _0x558a46['body']['id'];}return db[_0x9a3f('0x3b')]['find']({'where':{'id':_0x558a46['params']['id']}})[_0x9a3f('0x1e')](handleEntityNotFound(_0x4ae2c3,null))[_0x9a3f('0x1e')](saveUpdates(_0x558a46[_0x9a3f('0x45')],null))[_0x9a3f('0x1e')](respondWithResult(_0x4ae2c3,null))[_0x9a3f('0x40')](handleError(_0x4ae2c3,null));};exports['destroy']=function(_0x152989,_0x4cf3a7){return db[_0x9a3f('0x3b')][_0x9a3f('0x43')]({'where':{'id':_0x152989['params']['id']}})['then'](handleEntityNotFound(_0x4cf3a7,null))[_0x9a3f('0x1e')](removeEntity(_0x4cf3a7,null))['catch'](handleError(_0x4cf3a7,null));};
\ No newline at end of file
index 365d1a8..fba6069 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d6d=['name','ChatWebsiteId','MailAccountId','name_sms','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','name_voice','name_chat'];(function(_0x54fcef,_0x4b7008){var _0x31bcca=function(_0x5c7da5){while(--_0x5c7da5){_0x54fcef['push'](_0x54fcef['shift']());}};_0x31bcca(++_0x4b7008);}(_0x8d6d,0x1bf));var _0xd8d6=function(_0x13b213,_0x377801){_0x13b213=_0x13b213-0x0;var _0x509cb5=_0x8d6d[_0x13b213];return _0x509cb5;};'use strict';var _=require(_0xd8d6('0x0'));var util=require(_0xd8d6('0x1'));var logger=require(_0xd8d6('0x2'))(_0xd8d6('0x3'));var moment=require(_0xd8d6('0x4'));var BPromise=require(_0xd8d6('0x5'));var rp=require(_0xd8d6('0x6'));var fs=require('fs');var path=require(_0xd8d6('0x7'));var rimraf=require('rimraf');var config=require(_0xd8d6('0x8'));var attributes=require('./disposition.attributes');module[_0xd8d6('0x9')]=function(_0x302b00,_0x40ab83){return _0x302b00[_0xd8d6('0xa')]('Disposition',attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':_0xd8d6('0xb'),'fields':['name','ListId']},{'unique':!![],'name':_0xd8d6('0xc'),'fields':[_0xd8d6('0xd'),_0xd8d6('0xe')]},{'unique':!![],'name':'name_mail','fields':['name',_0xd8d6('0xf')]},{'unique':!![],'name':_0xd8d6('0x10'),'fields':['name','SmsAccountId']},{'unique':!![],'name':_0xd8d6('0x11'),'fields':[_0xd8d6('0xd'),_0xd8d6('0x12')]},{'unique':!![],'name':_0xd8d6('0x13'),'fields':[_0xd8d6('0xd'),_0xd8d6('0x14')]},{'unique':!![],'name':_0xd8d6('0x15'),'fields':[_0xd8d6('0xd'),_0xd8d6('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x917d=['define','tools_dispositions','name_voice','name','name_chat','ChatWebsiteId','name_mail','MailAccountId','name_sms','SmsAccountId','FaxAccountId','name_openchannel','OpenchannelAccountId','WhatsappAccountId','lodash','util','api','bluebird','request-promise','rimraf','../../config/environment','./disposition.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x917d,0x1c3));var _0xd917=function(_0x2b1a46,_0x41b19d){_0x2b1a46=_0x2b1a46-0x0;var _0x18f777=_0x917d[_0x2b1a46];return _0x18f777;};'use strict';var _=require(_0xd917('0x0'));var util=require(_0xd917('0x1'));var logger=require('../../config/logger')(_0xd917('0x2'));var moment=require('moment');var BPromise=require(_0xd917('0x3'));var rp=require(_0xd917('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd917('0x5'));var config=require(_0xd917('0x6'));var attributes=require(_0xd917('0x7'));module[_0xd917('0x8')]=function(_0x4f052f,_0x16cde7){return _0x4f052f[_0xd917('0x9')]('Disposition',attributes,{'tableName':_0xd917('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xd917('0xb'),'fields':[_0xd917('0xc'),'ListId']},{'unique':!![],'name':_0xd917('0xd'),'fields':[_0xd917('0xc'),_0xd917('0xe')]},{'unique':!![],'name':_0xd917('0xf'),'fields':[_0xd917('0xc'),_0xd917('0x10')]},{'unique':!![],'name':_0xd917('0x11'),'fields':[_0xd917('0xc'),_0xd917('0x12')]},{'unique':!![],'name':'name_fax','fields':[_0xd917('0xc'),_0xd917('0x13')]},{'unique':!![],'name':_0xd917('0x14'),'fields':[_0xd917('0xc'),_0xd917('0x15')]},{'unique':!![],'name':'name_whatsapp','fields':['name',_0xd917('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
index 7c9ac9a..c4cb530 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(_0x22e0dd,_0x52b878){var _0x4cb24c=function(_0x7aa261){while(--_0x7aa261){_0x22e0dd['push'](_0x22e0dd['shift']());}};_0x4cb24c(++_0x52b878);}(_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','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(_0x359870,_0x4a3fc7){var _0x586285=function(_0x5b5281){while(--_0x5b5281){_0x359870['push'](_0x359870['shift']());}};_0x586285(++_0x4a3fc7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'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 4986386..717578b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed20=['isAuthenticated','/:id','show','create','put','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x47941c,_0x20bb58){var _0x46d9d3=function(_0x40d30b){while(--_0x40d30b){_0x47941c['push'](_0x47941c['shift']());}};_0x46d9d3(++_0x20bb58);}(_0xed20,0xce));var _0x0ed2=function(_0x2e45d3,_0x524dd7){_0x2e45d3=_0x2e45d3-0x0;var _0x5abaeb=_0xed20[_0x2e45d3];return _0x5abaeb;};'use strict';var multer=require(_0x0ed2('0x0'));var util=require(_0x0ed2('0x1'));var path=require(_0x0ed2('0x2'));var timeout=require('connect-timeout');var express=require(_0x0ed2('0x3'));var router=express[_0x0ed2('0x4')]();var fs_extra=require(_0x0ed2('0x5'));var auth=require(_0x0ed2('0x6'));var interaction=require(_0x0ed2('0x7'));var config=require(_0x0ed2('0x8'));var controller=require('./disposition.controller');router[_0x0ed2('0x9')]('/',auth[_0x0ed2('0xa')](),controller['index']);router[_0x0ed2('0x9')](_0x0ed2('0xb'),auth[_0x0ed2('0xa')](),controller[_0x0ed2('0xc')]);router['post']('/',auth[_0x0ed2('0xa')](),controller[_0x0ed2('0xd')]);router[_0x0ed2('0xe')](_0x0ed2('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x0ed2('0xf')](_0x0ed2('0xb'),auth[_0x0ed2('0xa')](),controller[_0x0ed2('0x10')]);module[_0x0ed2('0x11')]=router;
\ No newline at end of file
+var _0xb6fc=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','/:id','show','create','put','delete','destroy','exports','util','path','connect-timeout'];(function(_0x49d19d,_0x245cf5){var _0x4ebef1=function(_0xf0a4e6){while(--_0xf0a4e6){_0x49d19d['push'](_0x49d19d['shift']());}};_0x4ebef1(++_0x245cf5);}(_0xb6fc,0x151));var _0xcb6f=function(_0x3c4b73,_0x2dd9ad){_0x3c4b73=_0x3c4b73-0x0;var _0x659e21=_0xb6fc[_0x3c4b73];return _0x659e21;};'use strict';var multer=require('multer');var util=require(_0xcb6f('0x0'));var path=require(_0xcb6f('0x1'));var timeout=require(_0xcb6f('0x2'));var express=require(_0xcb6f('0x3'));var router=express[_0xcb6f('0x4')]();var fs_extra=require(_0xcb6f('0x5'));var auth=require(_0xcb6f('0x6'));var interaction=require(_0xcb6f('0x7'));var config=require(_0xcb6f('0x8'));var controller=require(_0xcb6f('0x9'));router[_0xcb6f('0xa')]('/',auth[_0xcb6f('0xb')](),controller[_0xcb6f('0xc')]);router['get'](_0xcb6f('0xd'),auth[_0xcb6f('0xb')](),controller[_0xcb6f('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xcb6f('0xf')]);router[_0xcb6f('0x10')](_0xcb6f('0xd'),auth[_0xcb6f('0xb')](),controller['update']);router[_0xcb6f('0x11')](_0xcb6f('0xd'),auth['isAuthenticated'](),controller[_0xcb6f('0x12')]);module[_0xcb6f('0x13')]=router;
\ No newline at end of file
index cbd1bba..764a892 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc83=['xCALLY\x20Motion\x20Fax','localstationid','2400','4800','7200','9600','12000','14400','v17,v27,v29','INTEGER','DADHI','KHOMP','SIP','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','ENUM','yes'];(function(_0x5a51f4,_0x421123){var _0x3bd1ab=function(_0x2c49ca){while(--_0x2c49ca){_0x5a51f4['push'](_0x5a51f4['shift']());}};_0x3bd1ab(++_0x421123);}(_0xbc83,0x13e));var _0x3bc8=function(_0x3bf38d,_0x3aaf9e){_0x3bf38d=_0x3bf38d-0x0;var _0x30fdbe=_0xbc83[_0x3bf38d];return _0x30fdbe;};'use strict';var Sequelize=require('sequelize');module[_0x3bc8('0x0')]={'name':{'type':Sequelize[_0x3bc8('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x3bc8('0x1')]},'ecm':{'type':Sequelize[_0x3bc8('0x2')](_0x3bc8('0x3'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x3bc8('0x1')],'defaultValue':_0x3bc8('0x4')},'localstationid':{'type':Sequelize[_0x3bc8('0x1')],'unique':_0x3bc8('0x5')},'minrate':{'type':Sequelize[_0x3bc8('0x2')](_0x3bc8('0x6'),_0x3bc8('0x7'),_0x3bc8('0x8'),_0x3bc8('0x9'),_0x3bc8('0xa'),'14400'),'defaultValue':'4800'},'maxrate':{'type':Sequelize[_0x3bc8('0x2')](_0x3bc8('0x6'),_0x3bc8('0x7'),_0x3bc8('0x8'),_0x3bc8('0x9'),_0x3bc8('0xa'),'14400'),'defaultValue':_0x3bc8('0xb')},'modem':{'type':Sequelize[_0x3bc8('0x1')],'defaultValue':_0x3bc8('0xc')},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x3bc8('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x3bc8('0x2')]('SIP','IAX',_0x3bc8('0xe'),_0x3bc8('0xf')),'defaultValue':_0x3bc8('0x10')},'key':{'type':Sequelize[_0x3bc8('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x3bc8('0x11');}},'notificationSound':{'type':Sequelize[_0x3bc8('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3bc8('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3bc8('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3bc8('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3bc8('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3bc8('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3bc8('0xd')],'allowNull':!![],'defaultValue':null,'comment':_0x3bc8('0x13')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1918fc){if(!_0x1918fc)this[_0x3bc8('0x14')](_0x3bc8('0x15'),null);this[_0x3bc8('0x14')](_0x3bc8('0x16'),_0x1918fc);}}};
\ No newline at end of file
+var _0x1879=['xCALLY\x20Motion\x20Fax','localstationid','ENUM','4800','7200','9600','12000','14400','2400','v17,v27,v29','SIP','IAX','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','STRING','yes'];(function(_0x246890,_0x46b964){var _0x2b2a5a=function(_0x4f1232){while(--_0x4f1232){_0x246890['push'](_0x246890['shift']());}};_0x2b2a5a(++_0x46b964);}(_0x1879,0x1ad));var _0x9187=function(_0x1f0724,_0x3a58bf){_0x1f0724=_0x1f0724-0x0;var _0x253ffb=_0x1879[_0x1f0724];return _0x253ffb;};'use strict';var Sequelize=require(_0x9187('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x9187('0x1')]},'ecm':{'type':Sequelize['ENUM'](_0x9187('0x2'),'no'),'defaultValue':_0x9187('0x2')},'headerinfo':{'type':Sequelize[_0x9187('0x1')],'defaultValue':_0x9187('0x3')},'localstationid':{'type':Sequelize[_0x9187('0x1')],'unique':_0x9187('0x4')},'minrate':{'type':Sequelize[_0x9187('0x5')]('2400',_0x9187('0x6'),_0x9187('0x7'),_0x9187('0x8'),_0x9187('0x9'),_0x9187('0xa')),'defaultValue':_0x9187('0x6')},'maxrate':{'type':Sequelize[_0x9187('0x5')](_0x9187('0xb'),_0x9187('0x6'),_0x9187('0x7'),_0x9187('0x8'),_0x9187('0x9'),_0x9187('0xa')),'defaultValue':_0x9187('0xa')},'modem':{'type':Sequelize[_0x9187('0x1')],'defaultValue':_0x9187('0xc')},'gateway':{'type':Sequelize[_0x9187('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x9187('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM'](_0x9187('0xd'),_0x9187('0xe'),_0x9187('0xf'),_0x9187('0x10')),'defaultValue':'SIP'},'key':{'type':Sequelize[_0x9187('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x9187('0x11')],'defaultValue':function(){return _0x9187('0x12');}},'notificationSound':{'type':Sequelize[_0x9187('0x13')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x9187('0x13')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x9187('0x14')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x9187('0x13')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9187('0x14')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9187('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9187('0x14')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x9187('0x14')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x9187('0x13')],'defaultValue':![],'comment':_0x9187('0x15'),'set':function(_0x41a54d){if(!_0x41a54d)this[_0x9187('0x16')](_0x9187('0x17'),null);this[_0x9187('0x16')]('mandatoryDisposition',_0x41a54d);}}};
\ No newline at end of file
index 52c7708..834a975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6e9=['api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','jayson/promise','client','http','request','then','info','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','reject','save','update','get','FaxAccounts','UserProfileResource','destroy','name','send','index','Pause','mandatoryDispositionPause','map','FaxAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','describe','addDisposition','FaxAccountId','Disposition','findOne','rawAttributes','nolimit','sort','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findAll','removeAnswers','addInteraction','FaxInteraction','omit','CmContact','Contact','internal','Tag','Tags','color','tag','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','context','from-voip-provider','localstationid','app','description','appdata','push','Answer','CDR(type)=inbound-fax','Set','faxdetect','headerinfo','maxrate','modem','t38timeout','FAXOPT(','Wait','ReceiveFax','addAccountApplications','VoiceExtension','updateAccountApplications','sequelize','createdAt','TrunkId','ListId','getMessages','FaxMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','attachments','join','basename','CheckAfterSend','isNil','path','from','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','filename','Messages','Contact\x20not\x20found','spread','out','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','removeAgents','isArray','userFaxAccount:remove','getAgents','User','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x351bc8,_0x5e687d){var _0xf309ee=function(_0x3414fe){while(--_0x3414fe){_0x351bc8['push'](_0x351bc8['shift']());}};_0xf309ee(++_0x5e687d);}(_0xa6e9,0x167));var _0x9a6e=function(_0x490cbe,_0x3fc51f){_0x490cbe=_0x490cbe-0x0;var _0x58d3e0=_0xa6e9[_0x490cbe];return _0x58d3e0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9a6e('0x0'));var zipdir=require(_0x9a6e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9a6e('0x2'));var moment=require('moment');var BPromise=require(_0x9a6e('0x3'));var Mustache=require(_0x9a6e('0x4'));var util=require(_0x9a6e('0x5'));var path=require('path');var sox=require(_0x9a6e('0x6'));var csv=require(_0x9a6e('0x7'));var ejs=require(_0x9a6e('0x8'));var fs=require('fs');var fs_extra=require(_0x9a6e('0x9'));var _=require(_0x9a6e('0xa'));var squel=require(_0x9a6e('0xb'));var crypto=require(_0x9a6e('0xc'));var jsforce=require(_0x9a6e('0xd'));var deskjs=require(_0x9a6e('0xe'));var toCsv=require(_0x9a6e('0x7'));var querystring=require('querystring');var Papa=require(_0x9a6e('0xf'));var Redis=require(_0x9a6e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9a6e('0x11'));var as=require(_0x9a6e('0x12'));var hardwareService=require(_0x9a6e('0x13'));var logger=require(_0x9a6e('0x14'))(_0x9a6e('0x15'));var utils=require(_0x9a6e('0x16'));var config=require(_0x9a6e('0x17'));var licenseUtil=require(_0x9a6e('0x18'));var db=require('../../mysqldb')['db'];config[_0x9a6e('0x19')]=_[_0x9a6e('0x1a')](config[_0x9a6e('0x19')],{'host':_0x9a6e('0x1b'),'port':0x18eb});var socket=require(_0x9a6e('0x1c'))(new Redis(config[_0x9a6e('0x19')]));require(_0x9a6e('0x1d'))['register'](socket);var jayson=require(_0x9a6e('0x1e'));var client=jayson[_0x9a6e('0x1f')][_0x9a6e('0x20')]({'port':0x232c});var client9002=jayson[_0x9a6e('0x1f')][_0x9a6e('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x314145,_0x422ea7,_0x4c9ea8,_0x4a95e2){return new BPromise(function(_0x14ff26,_0xc89581){var _0x53dd4e=_0x4a95e2||client;return _0x53dd4e[_0x9a6e('0x21')](_0x314145,_0x4c9ea8)[_0x9a6e('0x22')](function(_0x1fbf0e){logger[_0x9a6e('0x23')]('FaxAccount,\x20%s,\x20%s',_0x422ea7,_0x9a6e('0x24'));logger[_0x9a6e('0x25')](_0x9a6e('0x26'),_0x422ea7,'request\x20sent',JSON[_0x9a6e('0x27')](_0x1fbf0e));if(_0x1fbf0e[_0x9a6e('0x28')]){if(_0x1fbf0e[_0x9a6e('0x28')][_0x9a6e('0x29')]===0x1f4){logger[_0x9a6e('0x28')](_0x9a6e('0x2a'),_0x422ea7,_0x1fbf0e[_0x9a6e('0x28')]['message']);return _0xc89581(_0x1fbf0e[_0x9a6e('0x28')]['message']);}logger['error'](_0x9a6e('0x2a'),_0x422ea7,_0x1fbf0e[_0x9a6e('0x28')][_0x9a6e('0x2b')]);return _0x14ff26(_0x1fbf0e[_0x9a6e('0x28')][_0x9a6e('0x2b')]);}else{logger[_0x9a6e('0x23')]('FaxAccount,\x20%s,\x20%s',_0x422ea7,_0x9a6e('0x24'));_0x14ff26(_0x1fbf0e[_0x9a6e('0x2c')][_0x9a6e('0x2b')]);}})[_0x9a6e('0x2d')](function(_0x216775){logger['error'](_0x9a6e('0x2a'),_0x422ea7,_0x216775);_0xc89581(_0x216775);});});}function respondWithStatusCode(_0x13cf21,_0x405ac1){_0x405ac1=_0x405ac1||0xcc;return function(_0x580ef4){if(_0x580ef4){return _0x13cf21[_0x9a6e('0x2e')](_0x405ac1);}return _0x13cf21[_0x9a6e('0x2f')](_0x405ac1)[_0x9a6e('0x30')]();};}function respondWithResult(_0x172be5,_0x5a0acd){_0x5a0acd=_0x5a0acd||0xc8;return function(_0x3dfd93){if(_0x3dfd93){return _0x172be5[_0x9a6e('0x2f')](_0x5a0acd)[_0x9a6e('0x31')](_0x3dfd93);}};}function respondWithFilteredResult(_0x39eccb,_0x12034e){return function(_0x43e210){if(_0x43e210){var _0x3ea6e2=typeof _0x12034e[_0x9a6e('0x32')]===_0x9a6e('0x33')&&typeof _0x12034e['limit']===_0x9a6e('0x33');var _0x435025=_0x43e210[_0x9a6e('0x34')];var _0x5d0334=_0x3ea6e2?0x0:_0x12034e[_0x9a6e('0x32')];var _0x502246=_0x3ea6e2?_0x43e210[_0x9a6e('0x34')]:_0x12034e[_0x9a6e('0x32')]+_0x12034e[_0x9a6e('0x35')];var _0x34521a;if(_0x502246>=_0x435025){_0x502246=_0x435025;_0x34521a=0xc8;}else{_0x34521a=0xce;}_0x39eccb[_0x9a6e('0x2f')](_0x34521a);return _0x39eccb[_0x9a6e('0x36')]('Content-Range',_0x5d0334+'-'+_0x502246+'/'+_0x435025)[_0x9a6e('0x31')](_0x43e210);}return null;};}function patchUpdates(_0x3ea487){return function(_0x4ba554){try{jsonpatch['apply'](_0x4ba554,_0x3ea487,!![]);}catch(_0x2f9b57){return BPromise[_0x9a6e('0x37')](_0x2f9b57);}return _0x4ba554[_0x9a6e('0x38')]();};}function saveUpdates(_0x4bffbc,_0x4731df){return function(_0x284743){if(_0x284743){return _0x284743[_0x9a6e('0x39')](_0x4bffbc)[_0x9a6e('0x22')](function(_0x23ebcc){return _0x23ebcc;});}return null;};}function removeEntity(_0x30c4c3,_0x2fa26a){return function(_0x1db433){if(_0x1db433){return _0x1db433['destroy']()[_0x9a6e('0x22')](function(){var _0xa09339=_0x1db433[_0x9a6e('0x3a')]({'plain':!![]});var _0x371577=_0x9a6e('0x3b');return db[_0x9a6e('0x3c')][_0x9a6e('0x3d')]({'where':{'type':_0x371577,'resourceId':_0xa09339['id']}})[_0x9a6e('0x22')](function(){return _0x1db433;});})[_0x9a6e('0x22')](function(){_0x30c4c3[_0x9a6e('0x2f')](0xcc)[_0x9a6e('0x30')]();});}};}function handleEntityNotFound(_0x2fbd32,_0x322a82){return function(_0x50e6fa){if(!_0x50e6fa){_0x2fbd32[_0x9a6e('0x2e')](0x194);}return _0x50e6fa;};}function handleError(_0x29b108,_0x337660){_0x337660=_0x337660||0x1f4;return function(_0x5c7bfd){logger['error'](_0x5c7bfd['stack']);if(_0x5c7bfd[_0x9a6e('0x3e')]){delete _0x5c7bfd[_0x9a6e('0x3e')];}_0x29b108['status'](_0x337660)[_0x9a6e('0x3f')](_0x5c7bfd);};}exports[_0x9a6e('0x40')]=function(_0x62e19f,_0x5d4716){var _0x51ee36={'include':[{'model':db[_0x9a6e('0x41')],'as':_0x9a6e('0x42')}]},_0x281993={},_0x325dda={'count':0x0,'rows':[]};var _0x159599=_[_0x9a6e('0x43')](db[_0x9a6e('0x44')]['rawAttributes'],function(_0x220e14){return{'name':_0x220e14[_0x9a6e('0x45')],'type':_0x220e14[_0x9a6e('0x46')][_0x9a6e('0x47')]};});_0x281993[_0x9a6e('0x48')]=_[_0x9a6e('0x43')](_0x159599,_0x9a6e('0x3e'));_0x281993[_0x9a6e('0x49')]=_[_0x9a6e('0x4a')](_0x62e19f[_0x9a6e('0x49')]);_0x281993[_0x9a6e('0x4b')]=_[_0x9a6e('0x4c')](_0x281993[_0x9a6e('0x48')],_0x281993[_0x9a6e('0x49')]);_0x51ee36[_0x9a6e('0x4d')]=_[_0x9a6e('0x4c')](_0x281993['model'],qs[_0x9a6e('0x4e')](_0x62e19f[_0x9a6e('0x49')][_0x9a6e('0x4e')]));_0x51ee36[_0x9a6e('0x4d')]=_0x51ee36['attributes'][_0x9a6e('0x4f')]?_0x51ee36[_0x9a6e('0x4d')]:_0x281993[_0x9a6e('0x48')];if(!_0x62e19f[_0x9a6e('0x49')][_0x9a6e('0x50')]('nolimit')){_0x51ee36[_0x9a6e('0x35')]=qs[_0x9a6e('0x35')](_0x62e19f['query'][_0x9a6e('0x35')]);_0x51ee36[_0x9a6e('0x32')]=qs[_0x9a6e('0x32')](_0x62e19f[_0x9a6e('0x49')][_0x9a6e('0x32')]);}_0x51ee36[_0x9a6e('0x51')]=qs['sort'](_0x62e19f[_0x9a6e('0x49')]['sort']);_0x51ee36[_0x9a6e('0x52')]=qs[_0x9a6e('0x4b')](_[_0x9a6e('0x53')](_0x62e19f[_0x9a6e('0x49')],_0x281993[_0x9a6e('0x4b')]),_0x159599);if(_0x62e19f[_0x9a6e('0x49')][_0x9a6e('0x54')]){_0x51ee36['where']=_[_0x9a6e('0x55')](_0x51ee36[_0x9a6e('0x52')],{'$or':_[_0x9a6e('0x43')](_0x159599,function(_0x36430e){if(_0x36430e[_0x9a6e('0x46')]!==_0x9a6e('0x56')){var _0x45440b={};_0x45440b[_0x36430e[_0x9a6e('0x3e')]]={'$like':'%'+_0x62e19f[_0x9a6e('0x49')]['filter']+'%'};return _0x45440b;}})});}_0x51ee36=_[_0x9a6e('0x55')]({},_0x51ee36,_0x62e19f[_0x9a6e('0x57')]);var _0xf914a9={'where':_0x51ee36[_0x9a6e('0x52')]};return db['FaxAccount'][_0x9a6e('0x34')](_0xf914a9)[_0x9a6e('0x22')](function(_0x24a90d){_0x325dda[_0x9a6e('0x34')]=_0x24a90d;if(_0x62e19f[_0x9a6e('0x49')][_0x9a6e('0x58')]){_0x51ee36[_0x9a6e('0x59')]=[{'all':!![]}];}return db['FaxAccount']['findAll'](_0x51ee36);})[_0x9a6e('0x22')](function(_0x2eec3a){_0x325dda[_0x9a6e('0x5a')]=_0x2eec3a;return _0x325dda;})[_0x9a6e('0x22')](respondWithFilteredResult(_0x5d4716,_0x51ee36))[_0x9a6e('0x2d')](handleError(_0x5d4716,null));};exports['show']=function(_0x51f15c,_0x3b09d7){var _0x5aa416={'raw':![],'where':{'id':_0x51f15c[_0x9a6e('0x5b')]['id']},'include':[{'model':db[_0x9a6e('0x41')],'as':_0x9a6e('0x42')}]},_0x1da572={};_0x1da572['model']=_[_0x9a6e('0x4a')](db[_0x9a6e('0x44')]['rawAttributes']);_0x1da572[_0x9a6e('0x49')]=_[_0x9a6e('0x4a')](_0x51f15c['query']);_0x1da572[_0x9a6e('0x4b')]=_[_0x9a6e('0x4c')](_0x1da572['model'],_0x1da572[_0x9a6e('0x49')]);_0x5aa416['attributes']=_['intersection'](_0x1da572[_0x9a6e('0x48')],qs[_0x9a6e('0x4e')](_0x51f15c['query'][_0x9a6e('0x4e')]));_0x5aa416[_0x9a6e('0x4d')]=_0x5aa416[_0x9a6e('0x4d')][_0x9a6e('0x4f')]?_0x5aa416[_0x9a6e('0x4d')]:_0x1da572[_0x9a6e('0x48')];if(_0x51f15c[_0x9a6e('0x49')][_0x9a6e('0x58')]){_0x5aa416[_0x9a6e('0x59')]=[{'all':!![]}];}_0x5aa416=_[_0x9a6e('0x55')]({},_0x5aa416,_0x51f15c['options']);return db['FaxAccount']['find'](_0x5aa416)[_0x9a6e('0x22')](handleEntityNotFound(_0x3b09d7,null))[_0x9a6e('0x22')](respondWithResult(_0x3b09d7,null))[_0x9a6e('0x2d')](handleError(_0x3b09d7,null));};exports[_0x9a6e('0x5c')]=function(_0x34a877,_0x5991cd){return db[_0x9a6e('0x44')][_0x9a6e('0x5c')](_0x34a877[_0x9a6e('0x5d')],{})['then'](function(_0x1d9303){var _0xdc3567=_0x34a877[_0x9a6e('0x5e')][_0x9a6e('0x3a')]({'plain':!![]});if(!_0xdc3567)throw new Error(_0x9a6e('0x5f'));if(_0xdc3567['role']===_0x9a6e('0x5e')){var _0x30816b=_0x1d9303[_0x9a6e('0x3a')]({'plain':!![]});var _0x432ae9=_0x9a6e('0x3b');return db[_0x9a6e('0x60')][_0x9a6e('0x61')]({'where':{'name':_0x432ae9,'userProfileId':_0xdc3567[_0x9a6e('0x62')]},'raw':!![]})[_0x9a6e('0x22')](function(_0x48ce00){if(_0x48ce00&&_0x48ce00[_0x9a6e('0x63')]===0x0){return db[_0x9a6e('0x3c')]['create']({'name':_0x30816b[_0x9a6e('0x3e')],'resourceId':_0x30816b['id'],'type':_0x48ce00[_0x9a6e('0x3e')],'sectionId':_0x48ce00['id']},{})['then'](function(){return _0x1d9303;});}else{return _0x1d9303;}})[_0x9a6e('0x2d')](function(_0x10d18b){logger[_0x9a6e('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x10d18b);throw _0x10d18b;});}return _0x1d9303;})['then'](respondWithResult(_0x5991cd,0xc9))[_0x9a6e('0x2d')](handleError(_0x5991cd,null));};exports[_0x9a6e('0x39')]=function(_0x1b1cf2,_0x12dff1){if(_0x1b1cf2[_0x9a6e('0x5d')]['id']){delete _0x1b1cf2[_0x9a6e('0x5d')]['id'];}return db[_0x9a6e('0x44')][_0x9a6e('0x61')]({'where':{'id':_0x1b1cf2[_0x9a6e('0x5b')]['id']},'include':[{'model':db[_0x9a6e('0x41')],'as':_0x9a6e('0x42')}]})[_0x9a6e('0x22')](handleEntityNotFound(_0x12dff1,null))[_0x9a6e('0x22')](saveUpdates(_0x1b1cf2[_0x9a6e('0x5d')],null))[_0x9a6e('0x22')](respondWithResult(_0x12dff1,null))[_0x9a6e('0x2d')](handleError(_0x12dff1,null));};exports[_0x9a6e('0x3d')]=function(_0x41692a,_0x30bf15){return db['FaxAccount'][_0x9a6e('0x61')]({'where':{'id':_0x41692a[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x30bf15,null))[_0x9a6e('0x22')](removeEntity(_0x30bf15,null))['catch'](handleError(_0x30bf15,null));};exports[_0x9a6e('0x64')]=function(_0x5c8c4d,_0x36c6f6){return db[_0x9a6e('0x44')][_0x9a6e('0x64')]()[_0x9a6e('0x22')](respondWithResult(_0x36c6f6,null))['catch'](handleError(_0x36c6f6,null));};exports[_0x9a6e('0x65')]=function(_0xb1513f,_0x320017,_0x2231b7){if(_0xb1513f[_0x9a6e('0x5d')]['id']){delete _0xb1513f[_0x9a6e('0x5d')]['id'];}return db['FaxAccount']['find']({'where':{'id':_0xb1513f['params']['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x320017,null))['then'](function(_0x31a5df){if(_0x31a5df){_0xb1513f[_0x9a6e('0x5d')][_0x9a6e('0x66')]=_0x31a5df['id'];return db[_0x9a6e('0x67')][_0x9a6e('0x5c')](_0xb1513f[_0x9a6e('0x5d')]);}})[_0x9a6e('0x22')](respondWithResult(_0x320017,null))[_0x9a6e('0x2d')](handleError(_0x320017,null));};exports['getDispositions']=function(_0x1da7a1,_0x282029,_0x40a1d5){var _0x1925e9={'raw':![],'where':{}};var _0x1bc1de={};var _0x21e0c4={'count':0x0,'rows':[]};return db[_0x9a6e('0x44')][_0x9a6e('0x68')]({'where':{'id':_0x1da7a1[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x282029,null))[_0x9a6e('0x22')](function(_0xcdbfe8){if(_0xcdbfe8){_0x1bc1de[_0x9a6e('0x48')]=_[_0x9a6e('0x4a')](db[_0x9a6e('0x67')][_0x9a6e('0x69')]);_0x1bc1de[_0x9a6e('0x49')]=_[_0x9a6e('0x4a')](_0x1da7a1['query']);_0x1bc1de[_0x9a6e('0x4b')]=_['intersection'](_0x1bc1de[_0x9a6e('0x48')],_0x1bc1de['query']);_0x1925e9[_0x9a6e('0x4d')]=_[_0x9a6e('0x4c')](_0x1bc1de['model'],qs[_0x9a6e('0x4e')](_0x1da7a1[_0x9a6e('0x49')][_0x9a6e('0x4e')]));_0x1925e9['attributes']=_0x1925e9['attributes'][_0x9a6e('0x4f')]?_0x1925e9['attributes']:_0x1bc1de[_0x9a6e('0x48')];if(!_0x1da7a1[_0x9a6e('0x49')][_0x9a6e('0x50')](_0x9a6e('0x6a'))){_0x1925e9['limit']=qs[_0x9a6e('0x35')](_0x1da7a1[_0x9a6e('0x49')][_0x9a6e('0x35')]);_0x1925e9[_0x9a6e('0x32')]=qs['offset'](_0x1da7a1['query'][_0x9a6e('0x32')]);}_0x1925e9[_0x9a6e('0x51')]=qs['sort'](_0x1da7a1[_0x9a6e('0x49')][_0x9a6e('0x6b')]);_0x1925e9[_0x9a6e('0x52')]=qs[_0x9a6e('0x4b')](_[_0x9a6e('0x53')](_0x1da7a1[_0x9a6e('0x49')],_0x1bc1de[_0x9a6e('0x4b')]));_0x1925e9[_0x9a6e('0x52')][_0x9a6e('0x66')]=_0xcdbfe8['id'];if(_0x1da7a1['query']['filter']){_0x1925e9[_0x9a6e('0x52')]=_[_0x9a6e('0x55')](_0x1925e9[_0x9a6e('0x52')],{'$or':_[_0x9a6e('0x43')](_0x1925e9[_0x9a6e('0x4d')],function(_0x2f4a91){var _0x499fc7={};_0x499fc7[_0x2f4a91]={'$like':'%'+_0x1da7a1[_0x9a6e('0x49')][_0x9a6e('0x54')]+'%'};return _0x499fc7;})});}_0x1925e9=_[_0x9a6e('0x55')]({},_0x1925e9,_0x1da7a1[_0x9a6e('0x57')]);return db[_0x9a6e('0x67')]['count']({'where':_0x1925e9[_0x9a6e('0x52')]})[_0x9a6e('0x22')](function(_0xadf755){_0x21e0c4[_0x9a6e('0x34')]=_0xadf755;if(_0x1da7a1[_0x9a6e('0x49')][_0x9a6e('0x58')]){_0x1925e9[_0x9a6e('0x59')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x1925e9);})['then'](function(_0x3f339b){_0x21e0c4[_0x9a6e('0x5a')]=_0x3f339b;return _0x21e0c4;});}})['then'](respondWithFilteredResult(_0x282029,_0x1925e9))['catch'](handleError(_0x282029,null));};exports[_0x9a6e('0x6c')]=function(_0x2101dd,_0x512384,_0x237ca5){return db[_0x9a6e('0x44')][_0x9a6e('0x61')]({'where':{'id':_0x2101dd[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x512384,null))['then'](function(_0x2f8a4f){if(_0x2f8a4f){return _0x2f8a4f[_0x9a6e('0x6c')](_0x2101dd[_0x9a6e('0x49')][_0x9a6e('0x6d')]);}})[_0x9a6e('0x22')](respondWithStatusCode(_0x512384,null))[_0x9a6e('0x2d')](handleError(_0x512384,null));};exports[_0x9a6e('0x6e')]=function(_0x13adb7,_0x1b51b0,_0x16d5ce){if(_0x13adb7['body']['id']){delete _0x13adb7[_0x9a6e('0x5d')]['id'];}return db[_0x9a6e('0x44')][_0x9a6e('0x61')]({'where':{'id':_0x13adb7[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x1b51b0,null))[_0x9a6e('0x22')](function(_0xab9767){if(_0xab9767){_0x13adb7[_0x9a6e('0x5d')][_0x9a6e('0x66')]=_0xab9767['id'];return db[_0x9a6e('0x6f')]['create'](_0x13adb7[_0x9a6e('0x5d')]);}})['then'](respondWithResult(_0x1b51b0,null))[_0x9a6e('0x2d')](handleError(_0x1b51b0,null));};exports[_0x9a6e('0x70')]=function(_0x4d7213,_0xa81a62,_0x1eb014){var _0x228f61={'raw':![],'where':{}};var _0x5ab875={};var _0x4af1bc={'count':0x0,'rows':[]};return db['FaxAccount'][_0x9a6e('0x68')]({'where':{'id':_0x4d7213[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0xa81a62,null))['then'](function(_0x133f68){if(_0x133f68){_0x5ab875[_0x9a6e('0x48')]=_[_0x9a6e('0x4a')](db[_0x9a6e('0x6f')][_0x9a6e('0x69')]);_0x5ab875[_0x9a6e('0x49')]=_[_0x9a6e('0x4a')](_0x4d7213[_0x9a6e('0x49')]);_0x5ab875[_0x9a6e('0x4b')]=_['intersection'](_0x5ab875[_0x9a6e('0x48')],_0x5ab875[_0x9a6e('0x49')]);_0x228f61[_0x9a6e('0x4d')]=_[_0x9a6e('0x4c')](_0x5ab875[_0x9a6e('0x48')],qs[_0x9a6e('0x4e')](_0x4d7213['query']['fields']));_0x228f61[_0x9a6e('0x4d')]=_0x228f61[_0x9a6e('0x4d')][_0x9a6e('0x4f')]?_0x228f61[_0x9a6e('0x4d')]:_0x5ab875[_0x9a6e('0x48')];if(!_0x4d7213[_0x9a6e('0x49')][_0x9a6e('0x50')](_0x9a6e('0x6a'))){_0x228f61[_0x9a6e('0x35')]=qs[_0x9a6e('0x35')](_0x4d7213['query'][_0x9a6e('0x35')]);_0x228f61[_0x9a6e('0x32')]=qs[_0x9a6e('0x32')](_0x4d7213['query'][_0x9a6e('0x32')]);}_0x228f61[_0x9a6e('0x51')]=qs[_0x9a6e('0x6b')](_0x4d7213[_0x9a6e('0x49')][_0x9a6e('0x6b')]);_0x228f61['where']=qs[_0x9a6e('0x4b')](_[_0x9a6e('0x53')](_0x4d7213[_0x9a6e('0x49')],_0x5ab875[_0x9a6e('0x4b')]));_0x228f61[_0x9a6e('0x52')][_0x9a6e('0x66')]=_0x133f68['id'];if(_0x4d7213['query']['filter']){_0x228f61[_0x9a6e('0x52')]=_['merge'](_0x228f61[_0x9a6e('0x52')],{'$or':_['map'](_0x228f61[_0x9a6e('0x4d')],function(_0x34d62d){var _0x58e89e={};_0x58e89e[_0x34d62d]={'$like':'%'+_0x4d7213['query']['filter']+'%'};return _0x58e89e;})});}_0x228f61=_[_0x9a6e('0x55')]({},_0x228f61,_0x4d7213[_0x9a6e('0x57')]);return db[_0x9a6e('0x6f')][_0x9a6e('0x34')]({'where':_0x228f61['where']})['then'](function(_0x256caa){_0x4af1bc[_0x9a6e('0x34')]=_0x256caa;if(_0x4d7213['query'][_0x9a6e('0x58')]){_0x228f61[_0x9a6e('0x59')]=[{'all':!![]}];}return db[_0x9a6e('0x6f')][_0x9a6e('0x71')](_0x228f61);})[_0x9a6e('0x22')](function(_0x57bb4d){_0x4af1bc[_0x9a6e('0x5a')]=_0x57bb4d;return _0x4af1bc;});}})[_0x9a6e('0x22')](respondWithFilteredResult(_0xa81a62,_0x228f61))['catch'](handleError(_0xa81a62,null));};exports[_0x9a6e('0x72')]=function(_0x4e53f0,_0x5515d8,_0x37282b){return db['FaxAccount'][_0x9a6e('0x61')]({'where':{'id':_0x4e53f0[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x5515d8,null))[_0x9a6e('0x22')](function(_0x4418d4){if(_0x4418d4){return _0x4418d4['removeAnswers'](_0x4e53f0[_0x9a6e('0x49')][_0x9a6e('0x6d')]);}})[_0x9a6e('0x22')](respondWithStatusCode(_0x5515d8,null))[_0x9a6e('0x2d')](handleError(_0x5515d8,null));};exports[_0x9a6e('0x73')]=function(_0x3ecc27,_0x1841fb,_0x35c790){return db[_0x9a6e('0x74')][_0x9a6e('0x61')]({'where':{'id':_0x3ecc27[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x1841fb,null))[_0x9a6e('0x22')](function(_0x5d526a){if(_0x5d526a){return _0x5d526a[_0x9a6e('0x73')](_0x3ecc27['body']['ids'],_[_0x9a6e('0x75')](_0x3ecc27[_0x9a6e('0x5d')],['ids','id'])||{});}})[_0x9a6e('0x22')](respondWithResult(_0x1841fb,null))['catch'](handleError(_0x1841fb,null));};exports['getInteractions']=function(_0x44398a,_0x8ca40e,_0x2ffeae){var _0x49f0b1={'raw':![],'where':{}};var _0x14d096={};var _0x32e775={'count':0x0,'rows':[]};return db[_0x9a6e('0x44')][_0x9a6e('0x68')]({'where':{'id':_0x44398a[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x8ca40e,null))[_0x9a6e('0x22')](function(_0x1b7e44){if(_0x1b7e44){_0x14d096[_0x9a6e('0x48')]=_[_0x9a6e('0x4a')](db[_0x9a6e('0x74')][_0x9a6e('0x69')]);_0x14d096[_0x9a6e('0x49')]=_[_0x9a6e('0x4a')](_0x44398a[_0x9a6e('0x49')]);_0x14d096[_0x9a6e('0x4b')]=_['intersection'](_0x14d096[_0x9a6e('0x48')],_0x14d096[_0x9a6e('0x49')]);_0x49f0b1[_0x9a6e('0x4d')]=_[_0x9a6e('0x4c')](_0x14d096[_0x9a6e('0x48')],qs['fields'](_0x44398a['query'][_0x9a6e('0x4e')]));_0x49f0b1[_0x9a6e('0x4d')]=_0x49f0b1[_0x9a6e('0x4d')][_0x9a6e('0x4f')]?_0x49f0b1[_0x9a6e('0x4d')]:_0x14d096['model'];if(!_0x44398a['query']['hasOwnProperty']('nolimit')){_0x49f0b1[_0x9a6e('0x35')]=qs[_0x9a6e('0x35')](_0x44398a[_0x9a6e('0x49')][_0x9a6e('0x35')]);_0x49f0b1[_0x9a6e('0x32')]=qs[_0x9a6e('0x32')](_0x44398a[_0x9a6e('0x49')][_0x9a6e('0x32')]);}_0x49f0b1[_0x9a6e('0x51')]=qs[_0x9a6e('0x6b')](_0x44398a[_0x9a6e('0x49')][_0x9a6e('0x6b')]);_0x49f0b1['where']=qs[_0x9a6e('0x4b')](_[_0x9a6e('0x53')](_0x44398a['query'],_0x14d096[_0x9a6e('0x4b')]));_0x49f0b1[_0x9a6e('0x52')][_0x9a6e('0x66')]=_0x1b7e44['id'];if(_0x44398a['query'][_0x9a6e('0x54')]){_0x49f0b1[_0x9a6e('0x52')]=_['merge'](_0x49f0b1[_0x9a6e('0x52')],{'$or':_[_0x9a6e('0x43')](_0x49f0b1[_0x9a6e('0x4d')],function(_0x327c98){var _0x232a38={};_0x232a38[_0x327c98]={'$like':'%'+_0x44398a[_0x9a6e('0x49')][_0x9a6e('0x54')]+'%'};return _0x232a38;})});}_0x49f0b1=_[_0x9a6e('0x55')]({},_0x49f0b1,_0x44398a[_0x9a6e('0x57')]);return db[_0x9a6e('0x74')]['count']({'where':_0x49f0b1[_0x9a6e('0x52')]})[_0x9a6e('0x22')](function(_0xd9ef1c){_0x32e775[_0x9a6e('0x34')]=_0xd9ef1c;if(_0x44398a['query'][_0x9a6e('0x58')]){_0x49f0b1[_0x9a6e('0x59')]=[{'model':db[_0x9a6e('0x76')],'as':_0x9a6e('0x77'),'required':![]},{'model':db['User'],'as':'Owner','attributes':[_0x9a6e('0x3e'),'fullname',_0x9a6e('0x78')],'required':![]},{'model':db[_0x9a6e('0x79')],'as':_0x9a6e('0x7a'),'attributes':['id',_0x9a6e('0x3e'),_0x9a6e('0x7b')],'where':_0x44398a[_0x9a6e('0x49')]['tag']?{'id':_0x44398a[_0x9a6e('0x49')][_0x9a6e('0x7c')]}:undefined,'required':_0x44398a[_0x9a6e('0x49')]['tag']?!![]:![]}];}return db[_0x9a6e('0x74')][_0x9a6e('0x71')](_0x49f0b1);})[_0x9a6e('0x22')](function(_0xffdd7d){_0x32e775['rows']=_0xffdd7d;return _0x32e775;});}})[_0x9a6e('0x22')](respondWithFilteredResult(_0x8ca40e,_0x49f0b1))[_0x9a6e('0x2d')](handleError(_0x8ca40e,null));};exports['addApplications']=function(_0x244e52,_0x21c235,_0x79f568){return db['FaxAccount']['findOne']({'where':{'id':_0x244e52['params']['id']}})['then'](handleEntityNotFound(_0x21c235,null))[_0x9a6e('0x22')](function(_0x58d264){if(_0x58d264){return db['sequelize'][_0x9a6e('0x7d')](function(_0x312fc3){return db[_0x9a6e('0x7e')][_0x9a6e('0x3d')]({'where':{'FaxAccountId':_0x244e52[_0x9a6e('0x5b')]['id']},'transaction':_0x312fc3})['then'](function(_0x1a1e4d){var _0x57b8de=_[_0x9a6e('0x43')](_0x244e52['body'],function(_0x24ef92){_0x24ef92['FaxAccountId']=_0x244e52[_0x9a6e('0x5b')]['id'];return _0x24ef92;});return db[_0x9a6e('0x7e')][_0x9a6e('0x7f')](_0x57b8de,{'transaction':_0x312fc3});});})[_0x9a6e('0x22')](function(){return db[_0x9a6e('0x7e')][_0x9a6e('0x80')]({'where':{'FaxAccountId':_0x244e52[_0x9a6e('0x5b')]['id']},'order':_0x9a6e('0x81')});});}})[_0x9a6e('0x22')](respondWithResult(_0x21c235,null))[_0x9a6e('0x2d')](handleError(_0x21c235,null));};exports['getApplications']=function(_0x4681cd,_0xb38de9,_0x1cd09b){var _0x4af12e={};var _0x3776f8={};var _0x4c5900;var _0x5e948a;return db['FaxAccount'][_0x9a6e('0x68')]({'where':{'id':_0x4681cd['params']['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0xb38de9,null))['then'](function(_0xc8ecff){if(_0xc8ecff){_0x4c5900=_0xc8ecff;_0x3776f8[_0x9a6e('0x48')]=_[_0x9a6e('0x4a')](db[_0x9a6e('0x7e')]['rawAttributes']);_0x3776f8[_0x9a6e('0x49')]=_['keys'](_0x4681cd[_0x9a6e('0x49')]);_0x3776f8[_0x9a6e('0x4b')]=_[_0x9a6e('0x4c')](_0x3776f8[_0x9a6e('0x48')],_0x3776f8[_0x9a6e('0x49')]);_0x4af12e[_0x9a6e('0x4d')]=_[_0x9a6e('0x4c')](_0x3776f8[_0x9a6e('0x48')],qs[_0x9a6e('0x4e')](_0x4681cd[_0x9a6e('0x49')][_0x9a6e('0x4e')]));_0x4af12e[_0x9a6e('0x4d')]=_0x4af12e[_0x9a6e('0x4d')][_0x9a6e('0x4f')]?_0x4af12e[_0x9a6e('0x4d')]:_0x3776f8['model'];_0x4af12e[_0x9a6e('0x51')]=qs[_0x9a6e('0x6b')](_0x4681cd[_0x9a6e('0x49')][_0x9a6e('0x6b')]);_0x4af12e[_0x9a6e('0x52')]=qs[_0x9a6e('0x4b')](_['pick'](_0x4681cd[_0x9a6e('0x49')],_0x3776f8[_0x9a6e('0x4b')]));if(_0x4681cd[_0x9a6e('0x49')]['filter']){_0x4af12e[_0x9a6e('0x52')]=_[_0x9a6e('0x55')](_0x4af12e[_0x9a6e('0x52')],{'$or':_['map'](_0x4af12e['attributes'],function(_0x2dad5e){var _0x243e65={};_0x243e65[_0x2dad5e]={'$like':'%'+_0x4681cd['query'][_0x9a6e('0x54')]+'%'};return _0x243e65;})});}_0x4af12e=_[_0x9a6e('0x55')]({},_0x4af12e,_0x4681cd[_0x9a6e('0x57')]);return _0x4c5900['getApplications'](_0x4af12e);}})[_0x9a6e('0x22')](function(_0x3b6ab3){if(_0x3b6ab3){_0x5e948a=_0x3b6ab3['length'];if(!_0x4681cd[_0x9a6e('0x49')]['hasOwnProperty'](_0x9a6e('0x6a'))){_0x4af12e[_0x9a6e('0x35')]=qs['limit'](_0x4681cd[_0x9a6e('0x49')]['limit']);_0x4af12e[_0x9a6e('0x32')]=qs[_0x9a6e('0x32')](_0x4681cd['query'][_0x9a6e('0x32')]);}return _0x4c5900[_0x9a6e('0x82')](_0x4af12e);}})['then'](function(_0x20a43e){if(_0x20a43e){return _0x20a43e?{'count':_0x5e948a,'rows':_0x20a43e}:null;}})[_0x9a6e('0x22')](respondWithResult(_0xb38de9,null))[_0x9a6e('0x2d')](handleError(_0xb38de9,null));};function Extension(_0x5d7e86,_0x21e515,_0x52d9c6,_0x3c4d98){this[_0x9a6e('0x83')]=_0x9a6e('0x84');this['exten']=_0x5d7e86[_0x9a6e('0x85')];this[_0x9a6e('0x86')]=_0x3c4d98;this[_0x9a6e('0x46')]='system';this[_0x9a6e('0x87')]='Fax\x20Extension';this[_0x9a6e('0x66')]=_0x5d7e86['id'];this['priority']=_0x21e515;this[_0x9a6e('0x88')]=_0x52d9c6;}function createExtensionsReciveFax(_0x3390f1){var _0x103ee7=0x1;var _0xa573ae=[];_0xa573ae[_0x9a6e('0x89')](new Extension(_0x3390f1,_0x103ee7,'',_0x9a6e('0x8a')));_0x103ee7+=0x1;_0xa573ae[_0x9a6e('0x89')](new Extension(_0x3390f1,_0x103ee7,_0x9a6e('0x8b'),_0x9a6e('0x8c')));_0x103ee7+=0x1;for(var _0x3b01d3 in _0x3390f1){if(_0x3390f1['hasOwnProperty'](_0x3b01d3)&&(_0x3b01d3==='ecm'||_0x3b01d3===_0x9a6e('0x85')||_0x3b01d3==='gateway'||_0x3b01d3===_0x9a6e('0x8d')||_0x3b01d3===_0x9a6e('0x8e')||_0x3b01d3===_0x9a6e('0x8f')||_0x3b01d3==='minrate'||_0x3b01d3===_0x9a6e('0x90')||_0x3b01d3===_0x9a6e('0x91'))){_0xa573ae[_0x9a6e('0x89')](new Extension(_0x3390f1,_0x103ee7,_0x9a6e('0x92')+_0x3b01d3+')='+_0x3390f1[_0x3b01d3],'Set'));_0x103ee7+=0x1;}}_0xa573ae['push'](new Extension(_0x3390f1,_0x103ee7,'6',_0x9a6e('0x93')));_0x103ee7+=0x1;_0xa573ae[_0x9a6e('0x89')](new Extension(_0x3390f1,_0x103ee7,'/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',_0x9a6e('0x94')));_0x103ee7=0x0;return _0xa573ae;}exports[_0x9a6e('0x95')]=function(_0x3baef3,_0x33079a,_0x4a3ff0){var _0xe0580d;return db['sequelize'][_0x9a6e('0x7d')](function(_0x56b8b1){return db[_0x9a6e('0x44')][_0x9a6e('0x5c')](_0x3baef3['body'],{'transaction':_0x56b8b1})[_0x9a6e('0x22')](function(_0x580955){_0xe0580d=_0x580955[_0x9a6e('0x3a')]({'plain':!![]});return db[_0x9a6e('0x96')][_0x9a6e('0x7f')](createExtensionsReciveFax(_0xe0580d),{'transaction':_0x56b8b1});});})['then'](function(){return _0xe0580d;})[_0x9a6e('0x22')](respondWithResult(_0x33079a,null))[_0x9a6e('0x2d')](handleError(_0x33079a,null));};exports[_0x9a6e('0x97')]=function(_0x2f53c6,_0x24afac,_0x52e2a6){var _0x11355d;return db[_0x9a6e('0x98')][_0x9a6e('0x7d')](function(_0x4b56a0){return db[_0x9a6e('0x44')][_0x9a6e('0x39')](_0x2f53c6['body'],{'where':{'id':_0x2f53c6[_0x9a6e('0x5d')]['id']},'transaction':_0x4b56a0})[_0x9a6e('0x22')](function(_0x419730){return db[_0x9a6e('0x96')]['destroy']({'where':{'FaxAccountId':_0x2f53c6['body']['id']},'transaction':_0x4b56a0})[_0x9a6e('0x22')](function(_0x39c649){return db[_0x9a6e('0x96')]['bulkCreate'](createExtensionsReciveFax(_[_0x9a6e('0x75')](_0x2f53c6[_0x9a6e('0x5d')],['tech','key',_0x9a6e('0x99'),'updatedAt',_0x9a6e('0x9a'),_0x9a6e('0x9b')])),{'transaction':_0x4b56a0});});});})[_0x9a6e('0x22')](function(){return db['FaxAccount']['findById'](_0x2f53c6[_0x9a6e('0x5d')]['id']);})[_0x9a6e('0x22')](respondWithResult(_0x24afac,null))[_0x9a6e('0x2d')](handleError(_0x24afac,null));};exports[_0x9a6e('0x9c')]=function(_0x1d6963,_0x3df14b,_0x1d28b6){var _0x3acec6={'raw':!![],'where':{}};var _0x44e107={};var _0x4d4215={'count':0x0,'rows':[]};return db[_0x9a6e('0x44')][_0x9a6e('0x68')]({'where':{'id':_0x1d6963['params']['id']}})['then'](handleEntityNotFound(_0x3df14b,null))[_0x9a6e('0x22')](function(_0x423163){if(_0x423163){_0x44e107[_0x9a6e('0x48')]=_['keys'](db[_0x9a6e('0x9d')][_0x9a6e('0x69')]);_0x44e107[_0x9a6e('0x49')]=_[_0x9a6e('0x4a')](_0x1d6963[_0x9a6e('0x49')]);_0x44e107[_0x9a6e('0x4b')]=_[_0x9a6e('0x4c')](_0x44e107['model'],_0x44e107['query']);_0x3acec6['attributes']=_[_0x9a6e('0x4c')](_0x44e107[_0x9a6e('0x48')],qs['fields'](_0x1d6963[_0x9a6e('0x49')][_0x9a6e('0x4e')]));_0x3acec6[_0x9a6e('0x4d')]=_0x3acec6[_0x9a6e('0x4d')][_0x9a6e('0x4f')]?_0x3acec6[_0x9a6e('0x4d')]:_0x44e107[_0x9a6e('0x48')];if(!_0x1d6963[_0x9a6e('0x49')][_0x9a6e('0x50')](_0x9a6e('0x6a'))){_0x3acec6[_0x9a6e('0x35')]=qs['limit'](_0x1d6963[_0x9a6e('0x49')][_0x9a6e('0x35')]);_0x3acec6[_0x9a6e('0x32')]=qs['offset'](_0x1d6963[_0x9a6e('0x49')][_0x9a6e('0x32')]);}_0x3acec6[_0x9a6e('0x51')]=qs[_0x9a6e('0x6b')](_0x1d6963['query']['sort']);_0x3acec6[_0x9a6e('0x52')]=qs[_0x9a6e('0x4b')](_['pick'](_0x1d6963[_0x9a6e('0x49')],_0x44e107[_0x9a6e('0x4b')]));_0x3acec6[_0x9a6e('0x52')][_0x9a6e('0x66')]=_0x423163['id'];if(_0x1d6963['query'][_0x9a6e('0x54')]){_0x3acec6['where']=_[_0x9a6e('0x55')](_0x3acec6[_0x9a6e('0x52')],{'$or':_['map'](_0x3acec6[_0x9a6e('0x4d')],function(_0x3e495f){var _0x27587f={};_0x27587f[_0x3e495f]={'$like':'%'+_0x1d6963[_0x9a6e('0x49')][_0x9a6e('0x54')]+'%'};return _0x27587f;})});}if(_0x1d6963['query']['$gte']){var _0x276c83=_0x1d6963[_0x9a6e('0x49')][_0x9a6e('0x9e')]['split'](',');var _0x223f3a={};_0x223f3a[_0x276c83[0x0]]={'$gte':moment(_0x276c83[0x1])[_0x9a6e('0x9f')](_0x9a6e('0xa0'))};_0x3acec6['where']=_['merge'](_0x3acec6[_0x9a6e('0x52')],_0x223f3a);}_0x3acec6=_[_0x9a6e('0x55')]({},_0x3acec6,_0x1d6963[_0x9a6e('0x57')]);return db['FaxMessage']['count']({'where':_0x3acec6[_0x9a6e('0x52')]})[_0x9a6e('0x22')](function(_0x5109fb){_0x4d4215['count']=_0x5109fb;if(_0x1d6963[_0x9a6e('0x49')]['includeAll']){_0x3acec6['include']=[{'all':!![]}];}return db[_0x9a6e('0x9d')][_0x9a6e('0x71')](_0x3acec6);})[_0x9a6e('0x22')](function(_0x290854){_0x4d4215[_0x9a6e('0x5a')]=_0x290854;return _0x4d4215;});}})[_0x9a6e('0x22')](respondWithFilteredResult(_0x3df14b,_0x3acec6))[_0x9a6e('0x2d')](handleError(_0x3df14b,null));};exports['send']=function(_0x283d27,_0x5eaca0,_0x1b13c5){var _0x5d82bb,_0x59ee91={},_0x27d98f;if(_0x283d27[_0x9a6e('0x5d')]['to']){_0x27d98f=_0x283d27[_0x9a6e('0x5d')]['to'][0x0];}return db[_0x9a6e('0x44')][_0x9a6e('0x61')]({'where':{'id':_0x283d27[_0x9a6e('0x5b')]['id']},'include':[{'model':db[_0x9a6e('0xa1')],'as':_0x9a6e('0xa2'),'include':[{'model':db[_0x9a6e('0x76')],'as':_0x9a6e('0xa3'),'where':{'fax':_0x27d98f},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0x9a6e('0x22')](handleEntityNotFound(_0x5eaca0,null))[_0x9a6e('0x22')](function(_0x5a33bd){_0x5d82bb=_0x5a33bd;if(_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')]&&_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')]['length']){for(var _0x237339=0x0;_0x237339<_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')][_0x9a6e('0x4f')];_0x237339+=0x1){_0x283d27[_0x9a6e('0x5d')]['attachments'][_0x237339]={'filename':_0x283d27[_0x9a6e('0x5d')]['attachments'][_0x237339][_0x9a6e('0x3e')],'id':_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')][_0x237339]['id'],'path':path[_0x9a6e('0xa5')](config['root'],'server/files/attachments',_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')][_0x237339][_0x9a6e('0xa6')])};}}return respondWithRpcPromise(_0x9a6e('0xa7'),_0x9a6e('0xa7'),{'FaxAccountId':_[_0x9a6e('0xa8')](_0x283d27['params']['id'])?undefined:_0x283d27[_0x9a6e('0x5b')]['id'],'path':_[_0x9a6e('0xa8')](_0x283d27['body'][_0x9a6e('0xa4')][0x0][_0x9a6e('0xa9')])?undefined:_0x283d27[_0x9a6e('0x5d')]['attachments'][0x0][_0x9a6e('0xa9')],'fax':_[_0x9a6e('0xa8')](_0x283d27['body']['to'][0x0])?undefined:_0x283d27[_0x9a6e('0x5d')]['to'][0x0]},client9002);})[_0x9a6e('0x22')](function(){if(_0x5d82bb){if(_['isNil'](_0x283d27[_0x9a6e('0x5d')]['from'])){_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xaa')]=util[_0x9a6e('0x9f')](_0x9a6e('0xab'),_0x5d82bb[_0x9a6e('0x3e')],_0x5d82bb[_0x9a6e('0xac')]);}if(_0x5d82bb['List']){if(_0x5d82bb[_0x9a6e('0xa2')][_0x9a6e('0xa3')]['length']){return _0x5d82bb[_0x9a6e('0xa2')][_0x9a6e('0xa3')][0x0];}else{return db[_0x9a6e('0x76')][_0x9a6e('0x5c')](_[_0x9a6e('0x1a')](_0x283d27[_0x9a6e('0x5d')],{'firstName':_0x283d27[_0x9a6e('0x5d')]['to'][0x0],'phone':_0x283d27[_0x9a6e('0x5d')]['to'][0x0],'fax':_0x283d27[_0x9a6e('0x5d')]['to'][0x0],'ListId':_0x5d82bb[_0x9a6e('0x9b')]}));}}else{throw new Error(_0x9a6e('0xad'));}}else{throw new Error('Send\x20Fax\x20failed');}})[_0x9a6e('0x22')](function(_0x4bb1c1){if(_0x4bb1c1){return db['FaxInteraction']['find']({'where':{'ContactId':_0x4bb1c1['id'],'closed':![],'FaxAccountId':_0x5d82bb['id']}})[_0x9a6e('0x22')](function(_0x5dc5a6){if(_0x5dc5a6){return[_0x5dc5a6,![]];}return db[_0x9a6e('0x74')][_0x9a6e('0x5c')]({'UserId':_0x283d27[_0x9a6e('0x5e')]['id'],'ContactId':_0x4bb1c1['id'],'FaxAccountId':_0x5d82bb['id'],'fax':_0x283d27['body']['to'][0x0],'firstMsgDirection':'out','Messages':[_[_0x9a6e('0x55')](_0x283d27['body'],{'read':![],'body':_0x283d27[_0x9a6e('0x5d')]['attachments'][0x0][_0x9a6e('0xae')],'FaxAccountId':_0x5d82bb['id'],'UserId':_0x283d27[_0x9a6e('0x5e')]['id'],'ContactId':_0x4bb1c1['id'],'AttachmentId':_0x283d27[_0x9a6e('0x5d')]['attachments'][0x0]['id']})]},{'include':[{'model':db[_0x9a6e('0x9d')],'as':_0x9a6e('0xaf')}]})[_0x9a6e('0x22')](function(_0x472045){return[_0x472045,!![]];});});}else{throw new Error(_0x9a6e('0xb0'));}})[_0x9a6e('0xb1')](function(_0x2caf17,_0x43581f){if(_0x43581f){return _0x2caf17;}return db['FaxMessage']['create']({'direction':_0x9a6e('0xb2'),'read':![],'body':_0x283d27['body'][_0x9a6e('0xa4')][0x0]['filename'],'FaxAccountId':_0x5d82bb['id'],'FaxInteractionId':_0x2caf17['id'],'UserId':_0x283d27[_0x9a6e('0x5e')]['id'],'ContactId':_0x2caf17[_0x9a6e('0xb3')],'AttachmentId':_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')][0x0]['id']})[_0x9a6e('0x22')](function(_0x42015e){_0x2caf17[_0x9a6e('0xb4')][_0x9a6e('0xaf')]=[];_0x2caf17[_0x9a6e('0xb4')]['Messages'][_0x9a6e('0x89')](_0x42015e[_0x9a6e('0xb4')]);return _0x2caf17;});})['then'](function(_0x48b024){respondWithRpcPromise(_0x9a6e('0xb5'),_0x9a6e('0xb5'),{'FaxAccountId':_[_0x9a6e('0xa8')](_0x283d27[_0x9a6e('0x5b')]['id'])?undefined:_0x283d27[_0x9a6e('0x5b')]['id'],'path':_['isNil'](_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')][0x0]['path'])?undefined:_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')][0x0][_0x9a6e('0xa9')],'fax':_[_0x9a6e('0xa8')](_0x283d27[_0x9a6e('0x5d')]['to'][0x0])?undefined:_0x283d27['body']['to'][0x0],'AttachmentId':_0x283d27['body'][_0x9a6e('0xa4')][0x0]['id']},client9002)[_0x9a6e('0x22')](function(_0x14c1f3){logger['info'](_0x9a6e('0xb6'),_0x14c1f3);})[_0x9a6e('0x2d')](function(_0x4887e5){logger[_0x9a6e('0x23')]('SendFaxRpc,\x20%s',_0x4887e5);});return _0x48b024;})['then'](respondWithResult(_0x5eaca0,null))[_0x9a6e('0x2d')](handleError(_0x5eaca0,null));};exports[_0x9a6e('0xb7')]=function(_0x5ac8b2,_0x25f1f1,_0x25885e){return db[_0x9a6e('0x44')][_0x9a6e('0x61')]({'where':{'id':_0x5ac8b2['params']['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x25f1f1,null))[_0x9a6e('0x22')](function(_0x3ae932){if(_0x3ae932){return _0x3ae932[_0x9a6e('0xb7')](_0x5ac8b2[_0x9a6e('0x5d')]['ids'],_[_0x9a6e('0x75')](_0x5ac8b2['body'],[_0x9a6e('0x6d'),'id'])||{})[_0x9a6e('0xb1')](function(_0x5b9f42){for(var _0x1f598b=0x0;_0x1f598b<_0x5ac8b2[_0x9a6e('0x5d')][_0x9a6e('0x6d')]['length'];_0x1f598b+=0x1){socket[_0x9a6e('0xb8')]('userFaxAccount:save',{'UserId':Number(_0x5ac8b2[_0x9a6e('0x5d')]['ids'][_0x1f598b]),'FaxAccountId':Number(_0x5ac8b2[_0x9a6e('0x5b')]['id'])});}return _0x5b9f42;});}})[_0x9a6e('0x22')](respondWithResult(_0x25f1f1,null))['catch'](handleError(_0x25f1f1,null));};exports[_0x9a6e('0xb9')]=function(_0x5dbdd5,_0x33a1d7,_0x38d73f){return db['FaxAccount'][_0x9a6e('0x61')]({'where':{'id':_0x5dbdd5[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x33a1d7,null))[_0x9a6e('0x22')](function(_0x3f0385){if(_0x3f0385){return _0x3f0385[_0x9a6e('0xb9')](_0x5dbdd5[_0x9a6e('0x49')][_0x9a6e('0x6d')])[_0x9a6e('0x22')](function(){if(_[_0x9a6e('0xba')](_0x5dbdd5[_0x9a6e('0x49')]['ids'])){for(var _0x5edc2a=0x0;_0x5edc2a<_0x5dbdd5[_0x9a6e('0x49')]['ids']['length'];_0x5edc2a+=0x1){socket['emit'](_0x9a6e('0xbb'),{'UserId':Number(_0x5dbdd5[_0x9a6e('0x49')][_0x9a6e('0x6d')][_0x5edc2a]),'FaxAccountId':Number(_0x5dbdd5[_0x9a6e('0x5b')]['id'])});}}else{socket[_0x9a6e('0xb8')]('userFaxAccount:remove',{'UserId':Number(_0x5dbdd5[_0x9a6e('0x49')][_0x9a6e('0x6d')]),'FaxAccountId':Number(_0x5dbdd5['params']['id'])});}});}})['then'](respondWithStatusCode(_0x33a1d7,null))['catch'](handleError(_0x33a1d7,null));};exports[_0x9a6e('0xbc')]=function(_0x513d99,_0x38a99b,_0x5bf403){var _0x3c3c84={};var _0x224a4a={};var _0x25bcea;var _0x5d7e79;return db[_0x9a6e('0x44')]['findOne']({'where':{'id':_0x513d99[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x38a99b,null))[_0x9a6e('0x22')](function(_0x31d4d7){if(_0x31d4d7){_0x25bcea=_0x31d4d7;_0x224a4a['model']=_[_0x9a6e('0x4a')](db[_0x9a6e('0xbd')]['rawAttributes']);_0x224a4a['query']=_['keys'](_0x513d99[_0x9a6e('0x49')]);_0x224a4a[_0x9a6e('0x4b')]=_['intersection'](_0x224a4a[_0x9a6e('0x48')],_0x224a4a[_0x9a6e('0x49')]);_0x3c3c84[_0x9a6e('0x4d')]=_[_0x9a6e('0x4c')](_0x224a4a['model'],qs[_0x9a6e('0x4e')](_0x513d99['query'][_0x9a6e('0x4e')]));_0x3c3c84[_0x9a6e('0x4d')]=_0x3c3c84['attributes'][_0x9a6e('0x4f')]?_0x3c3c84[_0x9a6e('0x4d')]:_0x224a4a[_0x9a6e('0x48')];_0x3c3c84['order']=qs[_0x9a6e('0x6b')](_0x513d99[_0x9a6e('0x49')][_0x9a6e('0x6b')]);_0x3c3c84['where']=qs[_0x9a6e('0x4b')](_['pick'](_0x513d99[_0x9a6e('0x49')],_0x224a4a[_0x9a6e('0x4b')]));if(_0x513d99[_0x9a6e('0x49')][_0x9a6e('0x54')]){_0x3c3c84[_0x9a6e('0x52')]=_['merge'](_0x3c3c84[_0x9a6e('0x52')],{'$or':_[_0x9a6e('0x43')](_0x3c3c84['attributes'],function(_0x200c72){var _0xfff30={};_0xfff30[_0x200c72]={'$like':'%'+_0x513d99[_0x9a6e('0x49')]['filter']+'%'};return _0xfff30;})});}_0x3c3c84=_[_0x9a6e('0x55')]({},_0x3c3c84,_0x513d99[_0x9a6e('0x57')]);return _0x25bcea[_0x9a6e('0xbc')](_0x3c3c84);}})[_0x9a6e('0x22')](function(_0x491285){if(_0x491285){_0x5d7e79=_0x491285[_0x9a6e('0x4f')];if(!_0x513d99[_0x9a6e('0x49')][_0x9a6e('0x50')]('nolimit')){_0x3c3c84[_0x9a6e('0x35')]=qs[_0x9a6e('0x35')](_0x513d99[_0x9a6e('0x49')]['limit']);_0x3c3c84['offset']=qs[_0x9a6e('0x32')](_0x513d99[_0x9a6e('0x49')]['offset']);}return _0x25bcea[_0x9a6e('0xbc')](_0x3c3c84);}})[_0x9a6e('0x22')](function(_0x3aa3c6){if(_0x3aa3c6){return _0x3aa3c6?{'count':_0x5d7e79,'rows':_0x3aa3c6}:null;}})[_0x9a6e('0x22')](respondWithResult(_0x38a99b,null))['catch'](handleError(_0x38a99b,null));};
\ No newline at end of file
+var _0x283e=['fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','jayson/promise','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','get','FaxAccounts','stack','name','Pause','map','FaxAccount','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','options','includeAll','include','params','rawAttributes','length','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','mandatoryDispositionPause','addDisposition','FaxAccountId','getDispositions','findOne','Disposition','order','filter','findAll','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addInteraction','FaxInteraction','omit','getInteractions','CmContact','Owner','fullname','Tag','Tags','color','tag','addApplications','sequelize','transaction','FaxApplication','destroy','bulkCreate','findAndCountAll','priority','getApplications','context','localstationid','app','description','Fax\x20Extension','appdata','push','Answer','CDR(type)=inbound-fax','Set','faxdetect','headerinfo','maxrate','t38timeout','FAXOPT(','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','addAccountApplications','VoiceExtension','tech','createdAt','updatedAt','TrunkId','ListId','getMessages','FaxMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','attachments','root','server/files/attachments','basename','CheckAfterSend','isNil','path','from','\x22%s\x22\x20<%s>','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs'];(function(_0x139d04,_0x40e0b3){var _0x489eed=function(_0x574ece){while(--_0x574ece){_0x139d04['push'](_0x139d04['shift']());}};_0x489eed(++_0x40e0b3);}(_0x283e,0xb4));var _0xe283=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x283e[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xe283('0x0'));var rimraf=require(_0xe283('0x1'));var zipdir=require(_0xe283('0x2'));var jsonpatch=require(_0xe283('0x3'));var rp=require(_0xe283('0x4'));var moment=require(_0xe283('0x5'));var BPromise=require(_0xe283('0x6'));var Mustache=require(_0xe283('0x7'));var util=require('util');var path=require('path');var sox=require(_0xe283('0x8'));var csv=require('to-csv');var ejs=require(_0xe283('0x9'));var fs=require('fs');var fs_extra=require(_0xe283('0xa'));var _=require(_0xe283('0xb'));var squel=require(_0xe283('0xc'));var crypto=require(_0xe283('0xd'));var jsforce=require(_0xe283('0xe'));var deskjs=require(_0xe283('0xf'));var toCsv=require(_0xe283('0x10'));var querystring=require(_0xe283('0x11'));var Papa=require(_0xe283('0x12'));var Redis=require(_0xe283('0x13'));var authService=require(_0xe283('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xe283('0x15'));var hardwareService=require(_0xe283('0x16'));var logger=require('../../config/logger')(_0xe283('0x17'));var utils=require('../../config/utils');var config=require(_0xe283('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xe283('0x19'))['db'];config[_0xe283('0x1a')]=_[_0xe283('0x1b')](config[_0xe283('0x1a')],{'host':_0xe283('0x1c'),'port':0x18eb});var socket=require(_0xe283('0x1d'))(new Redis(config[_0xe283('0x1a')]));require(_0xe283('0x1e'))['register'](socket);var jayson=require(_0xe283('0x1f'));var client=jayson['client'][_0xe283('0x20')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3f1e03,_0x54e1c5,_0x463823,_0x3d02ab){return new BPromise(function(_0x2dd287,_0x20827e){var _0x54d9f9=_0x3d02ab||client;return _0x54d9f9[_0xe283('0x21')](_0x3f1e03,_0x463823)[_0xe283('0x22')](function(_0x24d3bd){logger[_0xe283('0x23')](_0xe283('0x24'),_0x54e1c5,_0xe283('0x25'));logger[_0xe283('0x26')](_0xe283('0x27'),_0x54e1c5,_0xe283('0x25'),JSON[_0xe283('0x28')](_0x24d3bd));if(_0x24d3bd[_0xe283('0x29')]){if(_0x24d3bd[_0xe283('0x29')]['code']===0x1f4){logger['error'](_0xe283('0x24'),_0x54e1c5,_0x24d3bd['error'][_0xe283('0x2a')]);return _0x20827e(_0x24d3bd[_0xe283('0x29')][_0xe283('0x2a')]);}logger[_0xe283('0x29')](_0xe283('0x24'),_0x54e1c5,_0x24d3bd['error']['message']);return _0x2dd287(_0x24d3bd['error'][_0xe283('0x2a')]);}else{logger['info'](_0xe283('0x24'),_0x54e1c5,_0xe283('0x25'));_0x2dd287(_0x24d3bd[_0xe283('0x2b')]['message']);}})[_0xe283('0x2c')](function(_0x38ba65){logger[_0xe283('0x29')](_0xe283('0x24'),_0x54e1c5,_0x38ba65);_0x20827e(_0x38ba65);});});}function respondWithStatusCode(_0x3ea82d,_0x2cc7ac){_0x2cc7ac=_0x2cc7ac||0xcc;return function(_0x1bbfd4){if(_0x1bbfd4){return _0x3ea82d[_0xe283('0x2d')](_0x2cc7ac);}return _0x3ea82d[_0xe283('0x2e')](_0x2cc7ac)[_0xe283('0x2f')]();};}function respondWithResult(_0x38581f,_0x290687){_0x290687=_0x290687||0xc8;return function(_0x17d708){if(_0x17d708){return _0x38581f[_0xe283('0x2e')](_0x290687)[_0xe283('0x30')](_0x17d708);}};}function respondWithFilteredResult(_0x580cfd,_0x1d178b){return function(_0x235da1){if(_0x235da1){var _0x3d7a13=typeof _0x1d178b[_0xe283('0x31')]===_0xe283('0x32')&&typeof _0x1d178b[_0xe283('0x33')]===_0xe283('0x32');var _0x408af2=_0x235da1[_0xe283('0x34')];var _0x175f80=_0x3d7a13?0x0:_0x1d178b['offset'];var _0x4c47b6=_0x3d7a13?_0x235da1[_0xe283('0x34')]:_0x1d178b[_0xe283('0x31')]+_0x1d178b['limit'];var _0x59f27c;if(_0x4c47b6>=_0x408af2){_0x4c47b6=_0x408af2;_0x59f27c=0xc8;}else{_0x59f27c=0xce;}_0x580cfd[_0xe283('0x2e')](_0x59f27c);return _0x580cfd[_0xe283('0x35')](_0xe283('0x36'),_0x175f80+'-'+_0x4c47b6+'/'+_0x408af2)[_0xe283('0x30')](_0x235da1);}return null;};}function patchUpdates(_0x4b8457){return function(_0x358d4e){try{jsonpatch['apply'](_0x358d4e,_0x4b8457,!![]);}catch(_0xbbe95c){return BPromise[_0xe283('0x37')](_0xbbe95c);}return _0x358d4e[_0xe283('0x38')]();};}function saveUpdates(_0x5f146c,_0x5331a8){return function(_0x96a0e6){if(_0x96a0e6){return _0x96a0e6[_0xe283('0x39')](_0x5f146c)[_0xe283('0x22')](function(_0x135f38){return _0x135f38;});}return null;};}function removeEntity(_0x5b459c,_0x167718){return function(_0x43528e){if(_0x43528e){return _0x43528e['destroy']()[_0xe283('0x22')](function(){var _0xdb8906=_0x43528e[_0xe283('0x3a')]({'plain':!![]});var _0x9bdd32=_0xe283('0x3b');return db['UserProfileResource']['destroy']({'where':{'type':_0x9bdd32,'resourceId':_0xdb8906['id']}})[_0xe283('0x22')](function(){return _0x43528e;});})[_0xe283('0x22')](function(){_0x5b459c[_0xe283('0x2e')](0xcc)[_0xe283('0x2f')]();});}};}function handleEntityNotFound(_0x17d752,_0x3b70b4){return function(_0x4513f5){if(!_0x4513f5){_0x17d752[_0xe283('0x2d')](0x194);}return _0x4513f5;};}function handleError(_0x12a05f,_0x583969){_0x583969=_0x583969||0x1f4;return function(_0x46bc7a){logger[_0xe283('0x29')](_0x46bc7a[_0xe283('0x3c')]);if(_0x46bc7a['name']){delete _0x46bc7a[_0xe283('0x3d')];}_0x12a05f['status'](_0x583969)['send'](_0x46bc7a);};}exports['index']=function(_0x36c15b,_0x45e4f8){var _0x39df55={'include':[{'model':db[_0xe283('0x3e')],'as':'mandatoryDispositionPause'}]},_0x2d5baf={},_0x289029={'count':0x0,'rows':[]};var _0x43bc0d=_[_0xe283('0x3f')](db[_0xe283('0x40')]['rawAttributes'],function(_0x458a33){return{'name':_0x458a33['fieldName'],'type':_0x458a33[_0xe283('0x41')][_0xe283('0x42')]};});_0x2d5baf[_0xe283('0x43')]=_['map'](_0x43bc0d,_0xe283('0x3d'));_0x2d5baf[_0xe283('0x44')]=_[_0xe283('0x45')](_0x36c15b[_0xe283('0x44')]);_0x2d5baf[_0xe283('0x46')]=_[_0xe283('0x47')](_0x2d5baf['model'],_0x2d5baf[_0xe283('0x44')]);_0x39df55[_0xe283('0x48')]=_[_0xe283('0x47')](_0x2d5baf[_0xe283('0x43')],qs[_0xe283('0x49')](_0x36c15b['query'][_0xe283('0x49')]));_0x39df55[_0xe283('0x48')]=_0x39df55[_0xe283('0x48')]['length']?_0x39df55['attributes']:_0x2d5baf[_0xe283('0x43')];if(!_0x36c15b[_0xe283('0x44')][_0xe283('0x4a')](_0xe283('0x4b'))){_0x39df55[_0xe283('0x33')]=qs[_0xe283('0x33')](_0x36c15b[_0xe283('0x44')][_0xe283('0x33')]);_0x39df55[_0xe283('0x31')]=qs[_0xe283('0x31')](_0x36c15b[_0xe283('0x44')][_0xe283('0x31')]);}_0x39df55['order']=qs[_0xe283('0x4c')](_0x36c15b[_0xe283('0x44')][_0xe283('0x4c')]);_0x39df55[_0xe283('0x4d')]=qs['filters'](_[_0xe283('0x4e')](_0x36c15b['query'],_0x2d5baf[_0xe283('0x46')]),_0x43bc0d);if(_0x36c15b['query']['filter']){_0x39df55[_0xe283('0x4d')]=_[_0xe283('0x4f')](_0x39df55[_0xe283('0x4d')],{'$or':_[_0xe283('0x3f')](_0x43bc0d,function(_0x560bbc){if(_0x560bbc[_0xe283('0x41')]!=='VIRTUAL'){var _0xa1031e={};_0xa1031e[_0x560bbc['name']]={'$like':'%'+_0x36c15b['query']['filter']+'%'};return _0xa1031e;}})});}_0x39df55=_[_0xe283('0x4f')]({},_0x39df55,_0x36c15b[_0xe283('0x50')]);var _0x5b1eb6={'where':_0x39df55[_0xe283('0x4d')]};return db[_0xe283('0x40')][_0xe283('0x34')](_0x5b1eb6)[_0xe283('0x22')](function(_0x12515f){_0x289029[_0xe283('0x34')]=_0x12515f;if(_0x36c15b[_0xe283('0x44')][_0xe283('0x51')]){_0x39df55[_0xe283('0x52')]=[{'all':!![]}];}return db[_0xe283('0x40')]['findAll'](_0x39df55);})[_0xe283('0x22')](function(_0x136791){_0x289029['rows']=_0x136791;return _0x289029;})[_0xe283('0x22')](respondWithFilteredResult(_0x45e4f8,_0x39df55))[_0xe283('0x2c')](handleError(_0x45e4f8,null));};exports['show']=function(_0xbe108c,_0x2553a8){var _0x52c39e={'raw':![],'where':{'id':_0xbe108c[_0xe283('0x53')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x1dfbe5={};_0x1dfbe5['model']=_[_0xe283('0x45')](db[_0xe283('0x40')][_0xe283('0x54')]);_0x1dfbe5[_0xe283('0x44')]=_[_0xe283('0x45')](_0xbe108c[_0xe283('0x44')]);_0x1dfbe5[_0xe283('0x46')]=_[_0xe283('0x47')](_0x1dfbe5[_0xe283('0x43')],_0x1dfbe5[_0xe283('0x44')]);_0x52c39e[_0xe283('0x48')]=_[_0xe283('0x47')](_0x1dfbe5['model'],qs[_0xe283('0x49')](_0xbe108c[_0xe283('0x44')][_0xe283('0x49')]));_0x52c39e[_0xe283('0x48')]=_0x52c39e[_0xe283('0x48')][_0xe283('0x55')]?_0x52c39e['attributes']:_0x1dfbe5[_0xe283('0x43')];if(_0xbe108c[_0xe283('0x44')][_0xe283('0x51')]){_0x52c39e[_0xe283('0x52')]=[{'all':!![]}];}_0x52c39e=_[_0xe283('0x4f')]({},_0x52c39e,_0xbe108c['options']);return db[_0xe283('0x40')]['find'](_0x52c39e)['then'](handleEntityNotFound(_0x2553a8,null))[_0xe283('0x22')](respondWithResult(_0x2553a8,null))[_0xe283('0x2c')](handleError(_0x2553a8,null));};exports[_0xe283('0x56')]=function(_0x4be275,_0x508861){return db['FaxAccount'][_0xe283('0x56')](_0x4be275['body'],{})[_0xe283('0x22')](function(_0x2e9526){var _0x58d5a7=_0x4be275[_0xe283('0x57')][_0xe283('0x3a')]({'plain':!![]});if(!_0x58d5a7)throw new Error(_0xe283('0x58'));if(_0x58d5a7['role']===_0xe283('0x57')){var _0x139a03=_0x2e9526[_0xe283('0x3a')]({'plain':!![]});var _0x485989=_0xe283('0x3b');return db[_0xe283('0x59')][_0xe283('0x5a')]({'where':{'name':_0x485989,'userProfileId':_0x58d5a7[_0xe283('0x5b')]},'raw':!![]})[_0xe283('0x22')](function(_0x2796ae){if(_0x2796ae&&_0x2796ae[_0xe283('0x5c')]===0x0){return db[_0xe283('0x5d')][_0xe283('0x56')]({'name':_0x139a03[_0xe283('0x3d')],'resourceId':_0x139a03['id'],'type':_0x2796ae['name'],'sectionId':_0x2796ae['id']},{})[_0xe283('0x22')](function(){return _0x2e9526;});}else{return _0x2e9526;}})[_0xe283('0x2c')](function(_0x5e2723){logger[_0xe283('0x29')](_0xe283('0x5e'),_0x5e2723);throw _0x5e2723;});}return _0x2e9526;})['then'](respondWithResult(_0x508861,0xc9))[_0xe283('0x2c')](handleError(_0x508861,null));};exports[_0xe283('0x39')]=function(_0x12e629,_0x541e1b){if(_0x12e629[_0xe283('0x5f')]['id']){delete _0x12e629[_0xe283('0x5f')]['id'];}return db[_0xe283('0x40')][_0xe283('0x5a')]({'where':{'id':_0x12e629[_0xe283('0x53')]['id']},'include':[{'model':db['Pause'],'as':_0xe283('0x60')}]})['then'](handleEntityNotFound(_0x541e1b,null))[_0xe283('0x22')](saveUpdates(_0x12e629[_0xe283('0x5f')],null))['then'](respondWithResult(_0x541e1b,null))[_0xe283('0x2c')](handleError(_0x541e1b,null));};exports['destroy']=function(_0x17c956,_0x428eca){return db[_0xe283('0x40')][_0xe283('0x5a')]({'where':{'id':_0x17c956['params']['id']}})['then'](handleEntityNotFound(_0x428eca,null))[_0xe283('0x22')](removeEntity(_0x428eca,null))[_0xe283('0x2c')](handleError(_0x428eca,null));};exports['describe']=function(_0x9f0195,_0x185e55){return db['FaxAccount']['describe']()[_0xe283('0x22')](respondWithResult(_0x185e55,null))[_0xe283('0x2c')](handleError(_0x185e55,null));};exports[_0xe283('0x61')]=function(_0xd70b0c,_0x20577e,_0x284062){if(_0xd70b0c[_0xe283('0x5f')]['id']){delete _0xd70b0c[_0xe283('0x5f')]['id'];}return db[_0xe283('0x40')][_0xe283('0x5a')]({'where':{'id':_0xd70b0c[_0xe283('0x53')]['id']}})[_0xe283('0x22')](handleEntityNotFound(_0x20577e,null))['then'](function(_0x4767ce){if(_0x4767ce){_0xd70b0c[_0xe283('0x5f')][_0xe283('0x62')]=_0x4767ce['id'];return db['Disposition'][_0xe283('0x56')](_0xd70b0c['body']);}})[_0xe283('0x22')](respondWithResult(_0x20577e,null))['catch'](handleError(_0x20577e,null));};exports[_0xe283('0x63')]=function(_0x26247c,_0x50e24e,_0x5be9d9){var _0x2a2e55={'raw':![],'where':{}};var _0x4e5a15={};var _0xbd9180={'count':0x0,'rows':[]};return db[_0xe283('0x40')][_0xe283('0x64')]({'where':{'id':_0x26247c['params']['id']}})[_0xe283('0x22')](handleEntityNotFound(_0x50e24e,null))['then'](function(_0x12344b){if(_0x12344b){_0x4e5a15[_0xe283('0x43')]=_['keys'](db[_0xe283('0x65')][_0xe283('0x54')]);_0x4e5a15[_0xe283('0x44')]=_['keys'](_0x26247c[_0xe283('0x44')]);_0x4e5a15[_0xe283('0x46')]=_[_0xe283('0x47')](_0x4e5a15[_0xe283('0x43')],_0x4e5a15[_0xe283('0x44')]);_0x2a2e55['attributes']=_[_0xe283('0x47')](_0x4e5a15[_0xe283('0x43')],qs[_0xe283('0x49')](_0x26247c[_0xe283('0x44')]['fields']));_0x2a2e55[_0xe283('0x48')]=_0x2a2e55[_0xe283('0x48')]['length']?_0x2a2e55[_0xe283('0x48')]:_0x4e5a15['model'];if(!_0x26247c['query'][_0xe283('0x4a')](_0xe283('0x4b'))){_0x2a2e55[_0xe283('0x33')]=qs[_0xe283('0x33')](_0x26247c['query'][_0xe283('0x33')]);_0x2a2e55[_0xe283('0x31')]=qs[_0xe283('0x31')](_0x26247c[_0xe283('0x44')][_0xe283('0x31')]);}_0x2a2e55[_0xe283('0x66')]=qs['sort'](_0x26247c[_0xe283('0x44')][_0xe283('0x4c')]);_0x2a2e55[_0xe283('0x4d')]=qs[_0xe283('0x46')](_['pick'](_0x26247c[_0xe283('0x44')],_0x4e5a15[_0xe283('0x46')]));_0x2a2e55[_0xe283('0x4d')][_0xe283('0x62')]=_0x12344b['id'];if(_0x26247c[_0xe283('0x44')][_0xe283('0x67')]){_0x2a2e55['where']=_[_0xe283('0x4f')](_0x2a2e55[_0xe283('0x4d')],{'$or':_[_0xe283('0x3f')](_0x2a2e55[_0xe283('0x48')],function(_0x352bed){var _0x2f4cd8={};_0x2f4cd8[_0x352bed]={'$like':'%'+_0x26247c[_0xe283('0x44')][_0xe283('0x67')]+'%'};return _0x2f4cd8;})});}_0x2a2e55=_[_0xe283('0x4f')]({},_0x2a2e55,_0x26247c[_0xe283('0x50')]);return db[_0xe283('0x65')]['count']({'where':_0x2a2e55[_0xe283('0x4d')]})[_0xe283('0x22')](function(_0x4352e9){_0xbd9180[_0xe283('0x34')]=_0x4352e9;if(_0x26247c['query'][_0xe283('0x51')]){_0x2a2e55[_0xe283('0x52')]=[{'all':!![]}];}return db[_0xe283('0x65')][_0xe283('0x68')](_0x2a2e55);})[_0xe283('0x22')](function(_0x1d0841){_0xbd9180[_0xe283('0x69')]=_0x1d0841;return _0xbd9180;});}})[_0xe283('0x22')](respondWithFilteredResult(_0x50e24e,_0x2a2e55))[_0xe283('0x2c')](handleError(_0x50e24e,null));};exports[_0xe283('0x6a')]=function(_0xc9be48,_0x47c1f1,_0x149814){return db[_0xe283('0x40')][_0xe283('0x5a')]({'where':{'id':_0xc9be48[_0xe283('0x53')]['id']}})[_0xe283('0x22')](handleEntityNotFound(_0x47c1f1,null))[_0xe283('0x22')](function(_0x35423a){if(_0x35423a){return _0x35423a[_0xe283('0x6a')](_0xc9be48['query'][_0xe283('0x6b')]);}})[_0xe283('0x22')](respondWithStatusCode(_0x47c1f1,null))[_0xe283('0x2c')](handleError(_0x47c1f1,null));};exports[_0xe283('0x6c')]=function(_0x1b9537,_0x4dd8ac,_0x399f55){if(_0x1b9537['body']['id']){delete _0x1b9537[_0xe283('0x5f')]['id'];}return db[_0xe283('0x40')][_0xe283('0x5a')]({'where':{'id':_0x1b9537['params']['id']}})[_0xe283('0x22')](handleEntityNotFound(_0x4dd8ac,null))['then'](function(_0x56a6f9){if(_0x56a6f9){_0x1b9537[_0xe283('0x5f')][_0xe283('0x62')]=_0x56a6f9['id'];return db[_0xe283('0x6d')][_0xe283('0x56')](_0x1b9537[_0xe283('0x5f')]);}})[_0xe283('0x22')](respondWithResult(_0x4dd8ac,null))[_0xe283('0x2c')](handleError(_0x4dd8ac,null));};exports[_0xe283('0x6e')]=function(_0x158abe,_0x4c30f1,_0x30d1f1){var _0x1f59b1={'raw':![],'where':{}};var _0x2ecd30={};var _0x3ee2eb={'count':0x0,'rows':[]};return db[_0xe283('0x40')][_0xe283('0x64')]({'where':{'id':_0x158abe[_0xe283('0x53')]['id']}})[_0xe283('0x22')](handleEntityNotFound(_0x4c30f1,null))[_0xe283('0x22')](function(_0x575c55){if(_0x575c55){_0x2ecd30['model']=_[_0xe283('0x45')](db['CannedAnswer'][_0xe283('0x54')]);_0x2ecd30['query']=_['keys'](_0x158abe[_0xe283('0x44')]);_0x2ecd30['filters']=_[_0xe283('0x47')](_0x2ecd30['model'],_0x2ecd30['query']);_0x1f59b1[_0xe283('0x48')]=_[_0xe283('0x47')](_0x2ecd30[_0xe283('0x43')],qs[_0xe283('0x49')](_0x158abe[_0xe283('0x44')]['fields']));_0x1f59b1[_0xe283('0x48')]=_0x1f59b1[_0xe283('0x48')][_0xe283('0x55')]?_0x1f59b1[_0xe283('0x48')]:_0x2ecd30[_0xe283('0x43')];if(!_0x158abe['query'][_0xe283('0x4a')](_0xe283('0x4b'))){_0x1f59b1[_0xe283('0x33')]=qs[_0xe283('0x33')](_0x158abe['query'][_0xe283('0x33')]);_0x1f59b1[_0xe283('0x31')]=qs[_0xe283('0x31')](_0x158abe['query']['offset']);}_0x1f59b1['order']=qs[_0xe283('0x4c')](_0x158abe[_0xe283('0x44')][_0xe283('0x4c')]);_0x1f59b1[_0xe283('0x4d')]=qs[_0xe283('0x46')](_[_0xe283('0x4e')](_0x158abe[_0xe283('0x44')],_0x2ecd30[_0xe283('0x46')]));_0x1f59b1[_0xe283('0x4d')][_0xe283('0x62')]=_0x575c55['id'];if(_0x158abe[_0xe283('0x44')]['filter']){_0x1f59b1[_0xe283('0x4d')]=_['merge'](_0x1f59b1[_0xe283('0x4d')],{'$or':_['map'](_0x1f59b1[_0xe283('0x48')],function(_0x1e012e){var _0x58c71b={};_0x58c71b[_0x1e012e]={'$like':'%'+_0x158abe[_0xe283('0x44')][_0xe283('0x67')]+'%'};return _0x58c71b;})});}_0x1f59b1=_[_0xe283('0x4f')]({},_0x1f59b1,_0x158abe['options']);return db[_0xe283('0x6d')]['count']({'where':_0x1f59b1[_0xe283('0x4d')]})[_0xe283('0x22')](function(_0x2cb022){_0x3ee2eb[_0xe283('0x34')]=_0x2cb022;if(_0x158abe[_0xe283('0x44')][_0xe283('0x51')]){_0x1f59b1[_0xe283('0x52')]=[{'all':!![]}];}return db['CannedAnswer'][_0xe283('0x68')](_0x1f59b1);})[_0xe283('0x22')](function(_0x13b430){_0x3ee2eb[_0xe283('0x69')]=_0x13b430;return _0x3ee2eb;});}})['then'](respondWithFilteredResult(_0x4c30f1,_0x1f59b1))[_0xe283('0x2c')](handleError(_0x4c30f1,null));};exports[_0xe283('0x6f')]=function(_0x2e7c37,_0x1fa28e,_0x5379c8){return db['FaxAccount'][_0xe283('0x5a')]({'where':{'id':_0x2e7c37['params']['id']}})['then'](handleEntityNotFound(_0x1fa28e,null))[_0xe283('0x22')](function(_0x5b4b1b){if(_0x5b4b1b){return _0x5b4b1b[_0xe283('0x6f')](_0x2e7c37['query'][_0xe283('0x6b')]);}})[_0xe283('0x22')](respondWithStatusCode(_0x1fa28e,null))['catch'](handleError(_0x1fa28e,null));};exports[_0xe283('0x70')]=function(_0x4e476e,_0x304982,_0x3119c5){return db[_0xe283('0x71')][_0xe283('0x5a')]({'where':{'id':_0x4e476e[_0xe283('0x53')]['id']}})[_0xe283('0x22')](handleEntityNotFound(_0x304982,null))['then'](function(_0xe26f5c){if(_0xe26f5c){return _0xe26f5c[_0xe283('0x70')](_0x4e476e['body']['ids'],_[_0xe283('0x72')](_0x4e476e[_0xe283('0x5f')],[_0xe283('0x6b'),'id'])||{});}})['then'](respondWithResult(_0x304982,null))[_0xe283('0x2c')](handleError(_0x304982,null));};exports[_0xe283('0x73')]=function(_0x385933,_0x473c57,_0x306ce2){var _0x3a8946={'raw':![],'where':{}};var _0x1d1c72={};var _0x3e4c5d={'count':0x0,'rows':[]};return db[_0xe283('0x40')]['findOne']({'where':{'id':_0x385933[_0xe283('0x53')]['id']}})['then'](handleEntityNotFound(_0x473c57,null))['then'](function(_0x523e85){if(_0x523e85){_0x1d1c72[_0xe283('0x43')]=_[_0xe283('0x45')](db[_0xe283('0x71')][_0xe283('0x54')]);_0x1d1c72[_0xe283('0x44')]=_[_0xe283('0x45')](_0x385933['query']);_0x1d1c72['filters']=_[_0xe283('0x47')](_0x1d1c72[_0xe283('0x43')],_0x1d1c72[_0xe283('0x44')]);_0x3a8946[_0xe283('0x48')]=_[_0xe283('0x47')](_0x1d1c72[_0xe283('0x43')],qs[_0xe283('0x49')](_0x385933[_0xe283('0x44')][_0xe283('0x49')]));_0x3a8946[_0xe283('0x48')]=_0x3a8946[_0xe283('0x48')][_0xe283('0x55')]?_0x3a8946['attributes']:_0x1d1c72['model'];if(!_0x385933[_0xe283('0x44')]['hasOwnProperty'](_0xe283('0x4b'))){_0x3a8946[_0xe283('0x33')]=qs[_0xe283('0x33')](_0x385933[_0xe283('0x44')][_0xe283('0x33')]);_0x3a8946[_0xe283('0x31')]=qs[_0xe283('0x31')](_0x385933[_0xe283('0x44')][_0xe283('0x31')]);}_0x3a8946[_0xe283('0x66')]=qs[_0xe283('0x4c')](_0x385933['query'][_0xe283('0x4c')]);_0x3a8946[_0xe283('0x4d')]=qs['filters'](_[_0xe283('0x4e')](_0x385933[_0xe283('0x44')],_0x1d1c72[_0xe283('0x46')]));_0x3a8946['where'][_0xe283('0x62')]=_0x523e85['id'];if(_0x385933[_0xe283('0x44')][_0xe283('0x67')]){_0x3a8946[_0xe283('0x4d')]=_[_0xe283('0x4f')](_0x3a8946['where'],{'$or':_['map'](_0x3a8946[_0xe283('0x48')],function(_0x734bdc){var _0x3209b0={};_0x3209b0[_0x734bdc]={'$like':'%'+_0x385933[_0xe283('0x44')][_0xe283('0x67')]+'%'};return _0x3209b0;})});}_0x3a8946=_['merge']({},_0x3a8946,_0x385933[_0xe283('0x50')]);return db['FaxInteraction'][_0xe283('0x34')]({'where':_0x3a8946[_0xe283('0x4d')]})[_0xe283('0x22')](function(_0x30bba3){_0x3e4c5d['count']=_0x30bba3;if(_0x385933['query'][_0xe283('0x51')]){_0x3a8946[_0xe283('0x52')]=[{'model':db[_0xe283('0x74')],'as':'Contact','required':![]},{'model':db['User'],'as':_0xe283('0x75'),'attributes':[_0xe283('0x3d'),_0xe283('0x76'),'internal'],'required':![]},{'model':db[_0xe283('0x77')],'as':_0xe283('0x78'),'attributes':['id',_0xe283('0x3d'),_0xe283('0x79')],'where':_0x385933['query'][_0xe283('0x7a')]?{'id':_0x385933['query'][_0xe283('0x7a')]}:undefined,'required':_0x385933[_0xe283('0x44')][_0xe283('0x7a')]?!![]:![]}];}return db['FaxInteraction'][_0xe283('0x68')](_0x3a8946);})[_0xe283('0x22')](function(_0x2b1f7a){_0x3e4c5d[_0xe283('0x69')]=_0x2b1f7a;return _0x3e4c5d;});}})[_0xe283('0x22')](respondWithFilteredResult(_0x473c57,_0x3a8946))[_0xe283('0x2c')](handleError(_0x473c57,null));};exports[_0xe283('0x7b')]=function(_0xd2a77e,_0x164a12,_0x60467b){return db['FaxAccount'][_0xe283('0x64')]({'where':{'id':_0xd2a77e[_0xe283('0x53')]['id']}})[_0xe283('0x22')](handleEntityNotFound(_0x164a12,null))[_0xe283('0x22')](function(_0x1a2e61){if(_0x1a2e61){return db[_0xe283('0x7c')][_0xe283('0x7d')](function(_0x26565b){return db[_0xe283('0x7e')][_0xe283('0x7f')]({'where':{'FaxAccountId':_0xd2a77e[_0xe283('0x53')]['id']},'transaction':_0x26565b})[_0xe283('0x22')](function(_0x5a82e2){var _0x42649b=_[_0xe283('0x3f')](_0xd2a77e[_0xe283('0x5f')],function(_0x4a56d8){_0x4a56d8['FaxAccountId']=_0xd2a77e[_0xe283('0x53')]['id'];return _0x4a56d8;});return db[_0xe283('0x7e')][_0xe283('0x80')](_0x42649b,{'transaction':_0x26565b});});})[_0xe283('0x22')](function(){return db[_0xe283('0x7e')][_0xe283('0x81')]({'where':{'FaxAccountId':_0xd2a77e['params']['id']},'order':_0xe283('0x82')});});}})['then'](respondWithResult(_0x164a12,null))[_0xe283('0x2c')](handleError(_0x164a12,null));};exports[_0xe283('0x83')]=function(_0x2f102e,_0x3dbecc,_0x33cd02){var _0x27ce83={};var _0x2cb16e={};var _0xfa15c8;var _0x21e6b8;return db[_0xe283('0x40')]['findOne']({'where':{'id':_0x2f102e['params']['id']}})[_0xe283('0x22')](handleEntityNotFound(_0x3dbecc,null))['then'](function(_0x423f8c){if(_0x423f8c){_0xfa15c8=_0x423f8c;_0x2cb16e[_0xe283('0x43')]=_[_0xe283('0x45')](db[_0xe283('0x7e')]['rawAttributes']);_0x2cb16e[_0xe283('0x44')]=_['keys'](_0x2f102e['query']);_0x2cb16e[_0xe283('0x46')]=_[_0xe283('0x47')](_0x2cb16e[_0xe283('0x43')],_0x2cb16e['query']);_0x27ce83[_0xe283('0x48')]=_[_0xe283('0x47')](_0x2cb16e['model'],qs['fields'](_0x2f102e[_0xe283('0x44')][_0xe283('0x49')]));_0x27ce83[_0xe283('0x48')]=_0x27ce83[_0xe283('0x48')]['length']?_0x27ce83[_0xe283('0x48')]:_0x2cb16e[_0xe283('0x43')];_0x27ce83[_0xe283('0x66')]=qs[_0xe283('0x4c')](_0x2f102e[_0xe283('0x44')][_0xe283('0x4c')]);_0x27ce83[_0xe283('0x4d')]=qs[_0xe283('0x46')](_[_0xe283('0x4e')](_0x2f102e[_0xe283('0x44')],_0x2cb16e[_0xe283('0x46')]));if(_0x2f102e[_0xe283('0x44')]['filter']){_0x27ce83[_0xe283('0x4d')]=_[_0xe283('0x4f')](_0x27ce83[_0xe283('0x4d')],{'$or':_[_0xe283('0x3f')](_0x27ce83['attributes'],function(_0x58c809){var _0x4f9481={};_0x4f9481[_0x58c809]={'$like':'%'+_0x2f102e[_0xe283('0x44')][_0xe283('0x67')]+'%'};return _0x4f9481;})});}_0x27ce83=_[_0xe283('0x4f')]({},_0x27ce83,_0x2f102e['options']);return _0xfa15c8[_0xe283('0x83')](_0x27ce83);}})[_0xe283('0x22')](function(_0x52ed09){if(_0x52ed09){_0x21e6b8=_0x52ed09['length'];if(!_0x2f102e[_0xe283('0x44')][_0xe283('0x4a')](_0xe283('0x4b'))){_0x27ce83[_0xe283('0x33')]=qs[_0xe283('0x33')](_0x2f102e[_0xe283('0x44')]['limit']);_0x27ce83[_0xe283('0x31')]=qs[_0xe283('0x31')](_0x2f102e[_0xe283('0x44')][_0xe283('0x31')]);}return _0xfa15c8['getApplications'](_0x27ce83);}})[_0xe283('0x22')](function(_0x53e5cc){if(_0x53e5cc){return _0x53e5cc?{'count':_0x21e6b8,'rows':_0x53e5cc}:null;}})['then'](respondWithResult(_0x3dbecc,null))[_0xe283('0x2c')](handleError(_0x3dbecc,null));};function Extension(_0x36c33c,_0x4dc5f8,_0x4b5144,_0x59c9a6){this[_0xe283('0x84')]='from-voip-provider';this['exten']=_0x36c33c[_0xe283('0x85')];this[_0xe283('0x86')]=_0x59c9a6;this[_0xe283('0x41')]='system';this[_0xe283('0x87')]=_0xe283('0x88');this[_0xe283('0x62')]=_0x36c33c['id'];this[_0xe283('0x82')]=_0x4dc5f8;this[_0xe283('0x89')]=_0x4b5144;}function createExtensionsReciveFax(_0x3a727f){var _0x4dade7=0x1;var _0x26aa9d=[];_0x26aa9d[_0xe283('0x8a')](new Extension(_0x3a727f,_0x4dade7,'',_0xe283('0x8b')));_0x4dade7+=0x1;_0x26aa9d[_0xe283('0x8a')](new Extension(_0x3a727f,_0x4dade7,_0xe283('0x8c'),_0xe283('0x8d')));_0x4dade7+=0x1;for(var _0xeacad8 in _0x3a727f){if(_0x3a727f[_0xe283('0x4a')](_0xeacad8)&&(_0xeacad8==='ecm'||_0xeacad8===_0xe283('0x85')||_0xeacad8==='gateway'||_0xeacad8===_0xe283('0x8e')||_0xeacad8===_0xe283('0x8f')||_0xeacad8===_0xe283('0x90')||_0xeacad8==='minrate'||_0xeacad8==='modem'||_0xeacad8===_0xe283('0x91'))){_0x26aa9d['push'](new Extension(_0x3a727f,_0x4dade7,_0xe283('0x92')+_0xeacad8+')='+_0x3a727f[_0xeacad8],_0xe283('0x8d')));_0x4dade7+=0x1;}}_0x26aa9d[_0xe283('0x8a')](new Extension(_0x3a727f,_0x4dade7,'6',_0xe283('0x93')));_0x4dade7+=0x1;_0x26aa9d[_0xe283('0x8a')](new Extension(_0x3a727f,_0x4dade7,_0xe283('0x94'),'ReceiveFax'));_0x4dade7=0x0;return _0x26aa9d;}exports[_0xe283('0x95')]=function(_0xe9947e,_0x5dea32,_0x42406e){var _0x45ec96;return db[_0xe283('0x7c')][_0xe283('0x7d')](function(_0x4b7c43){return db[_0xe283('0x40')][_0xe283('0x56')](_0xe9947e['body'],{'transaction':_0x4b7c43})['then'](function(_0x55a2fe){_0x45ec96=_0x55a2fe['get']({'plain':!![]});return db[_0xe283('0x96')][_0xe283('0x80')](createExtensionsReciveFax(_0x45ec96),{'transaction':_0x4b7c43});});})[_0xe283('0x22')](function(){return _0x45ec96;})[_0xe283('0x22')](respondWithResult(_0x5dea32,null))[_0xe283('0x2c')](handleError(_0x5dea32,null));};exports['updateAccountApplications']=function(_0x4bc329,_0x2d2b8a,_0x8cbfa7){var _0x3931f7;return db[_0xe283('0x7c')][_0xe283('0x7d')](function(_0x201eaa){return db['FaxAccount'][_0xe283('0x39')](_0x4bc329[_0xe283('0x5f')],{'where':{'id':_0x4bc329['body']['id']},'transaction':_0x201eaa})[_0xe283('0x22')](function(_0x252b3c){return db[_0xe283('0x96')]['destroy']({'where':{'FaxAccountId':_0x4bc329[_0xe283('0x5f')]['id']},'transaction':_0x201eaa})['then'](function(_0x3540bf){return db[_0xe283('0x96')]['bulkCreate'](createExtensionsReciveFax(_[_0xe283('0x72')](_0x4bc329[_0xe283('0x5f')],[_0xe283('0x97'),'key',_0xe283('0x98'),_0xe283('0x99'),_0xe283('0x9a'),_0xe283('0x9b')])),{'transaction':_0x201eaa});});});})['then'](function(){return db[_0xe283('0x40')]['findById'](_0x4bc329['body']['id']);})[_0xe283('0x22')](respondWithResult(_0x2d2b8a,null))[_0xe283('0x2c')](handleError(_0x2d2b8a,null));};exports[_0xe283('0x9c')]=function(_0x5e9b34,_0x4e1132,_0x12ecc1){var _0x252ec2={'raw':!![],'where':{}};var _0x121991={};var _0x2ebfc4={'count':0x0,'rows':[]};return db[_0xe283('0x40')]['findOne']({'where':{'id':_0x5e9b34[_0xe283('0x53')]['id']}})['then'](handleEntityNotFound(_0x4e1132,null))['then'](function(_0x190de7){if(_0x190de7){_0x121991[_0xe283('0x43')]=_[_0xe283('0x45')](db[_0xe283('0x9d')]['rawAttributes']);_0x121991[_0xe283('0x44')]=_[_0xe283('0x45')](_0x5e9b34['query']);_0x121991[_0xe283('0x46')]=_[_0xe283('0x47')](_0x121991[_0xe283('0x43')],_0x121991[_0xe283('0x44')]);_0x252ec2[_0xe283('0x48')]=_['intersection'](_0x121991['model'],qs[_0xe283('0x49')](_0x5e9b34[_0xe283('0x44')][_0xe283('0x49')]));_0x252ec2['attributes']=_0x252ec2[_0xe283('0x48')][_0xe283('0x55')]?_0x252ec2['attributes']:_0x121991[_0xe283('0x43')];if(!_0x5e9b34[_0xe283('0x44')][_0xe283('0x4a')](_0xe283('0x4b'))){_0x252ec2['limit']=qs[_0xe283('0x33')](_0x5e9b34['query'][_0xe283('0x33')]);_0x252ec2[_0xe283('0x31')]=qs[_0xe283('0x31')](_0x5e9b34[_0xe283('0x44')][_0xe283('0x31')]);}_0x252ec2[_0xe283('0x66')]=qs[_0xe283('0x4c')](_0x5e9b34[_0xe283('0x44')]['sort']);_0x252ec2['where']=qs['filters'](_[_0xe283('0x4e')](_0x5e9b34[_0xe283('0x44')],_0x121991[_0xe283('0x46')]));_0x252ec2[_0xe283('0x4d')][_0xe283('0x62')]=_0x190de7['id'];if(_0x5e9b34[_0xe283('0x44')][_0xe283('0x67')]){_0x252ec2['where']=_[_0xe283('0x4f')](_0x252ec2[_0xe283('0x4d')],{'$or':_[_0xe283('0x3f')](_0x252ec2[_0xe283('0x48')],function(_0x25a17a){var _0x4179db={};_0x4179db[_0x25a17a]={'$like':'%'+_0x5e9b34[_0xe283('0x44')][_0xe283('0x67')]+'%'};return _0x4179db;})});}if(_0x5e9b34[_0xe283('0x44')][_0xe283('0x9e')]){var _0x243b10=_0x5e9b34[_0xe283('0x44')]['$gte']['split'](',');var _0x4993e5={};_0x4993e5[_0x243b10[0x0]]={'$gte':moment(_0x243b10[0x1])[_0xe283('0x9f')](_0xe283('0xa0'))};_0x252ec2[_0xe283('0x4d')]=_[_0xe283('0x4f')](_0x252ec2[_0xe283('0x4d')],_0x4993e5);}_0x252ec2=_['merge']({},_0x252ec2,_0x5e9b34['options']);return db[_0xe283('0x9d')][_0xe283('0x34')]({'where':_0x252ec2[_0xe283('0x4d')]})[_0xe283('0x22')](function(_0x53a128){_0x2ebfc4[_0xe283('0x34')]=_0x53a128;if(_0x5e9b34[_0xe283('0x44')][_0xe283('0x51')]){_0x252ec2[_0xe283('0x52')]=[{'all':!![]}];}return db['FaxMessage'][_0xe283('0x68')](_0x252ec2);})[_0xe283('0x22')](function(_0x5c9458){_0x2ebfc4['rows']=_0x5c9458;return _0x2ebfc4;});}})[_0xe283('0x22')](respondWithFilteredResult(_0x4e1132,_0x252ec2))[_0xe283('0x2c')](handleError(_0x4e1132,null));};exports['send']=function(_0x19608c,_0x589f6f,_0x4fd964){var _0x4a858d,_0x21e51c={},_0x47d829;if(_0x19608c[_0xe283('0x5f')]['to']){_0x47d829=_0x19608c[_0xe283('0x5f')]['to'][0x0];}return db['FaxAccount'][_0xe283('0x5a')]({'where':{'id':_0x19608c['params']['id']},'include':[{'model':db[_0xe283('0xa1')],'as':_0xe283('0xa2'),'include':[{'model':db['CmContact'],'as':_0xe283('0xa3'),'where':{'fax':_0x47d829},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0xe283('0x22')](handleEntityNotFound(_0x589f6f,null))[_0xe283('0x22')](function(_0x3d2dd4){_0x4a858d=_0x3d2dd4;if(_0x19608c[_0xe283('0x5f')]['attachments']&&_0x19608c[_0xe283('0x5f')][_0xe283('0xa4')][_0xe283('0x55')]){for(var _0x2cfbb4=0x0;_0x2cfbb4<_0x19608c[_0xe283('0x5f')][_0xe283('0xa4')]['length'];_0x2cfbb4+=0x1){_0x19608c[_0xe283('0x5f')]['attachments'][_0x2cfbb4]={'filename':_0x19608c[_0xe283('0x5f')][_0xe283('0xa4')][_0x2cfbb4][_0xe283('0x3d')],'id':_0x19608c[_0xe283('0x5f')][_0xe283('0xa4')][_0x2cfbb4]['id'],'path':path['join'](config[_0xe283('0xa5')],_0xe283('0xa6'),_0x19608c['body']['attachments'][_0x2cfbb4][_0xe283('0xa7')])};}}return respondWithRpcPromise(_0xe283('0xa8'),_0xe283('0xa8'),{'FaxAccountId':_[_0xe283('0xa9')](_0x19608c[_0xe283('0x53')]['id'])?undefined:_0x19608c[_0xe283('0x53')]['id'],'path':_['isNil'](_0x19608c[_0xe283('0x5f')][_0xe283('0xa4')][0x0]['path'])?undefined:_0x19608c[_0xe283('0x5f')][_0xe283('0xa4')][0x0][_0xe283('0xaa')],'fax':_['isNil'](_0x19608c['body']['to'][0x0])?undefined:_0x19608c['body']['to'][0x0]},client9002);})[_0xe283('0x22')](function(){if(_0x4a858d){if(_['isNil'](_0x19608c[_0xe283('0x5f')][_0xe283('0xab')])){_0x19608c[_0xe283('0x5f')][_0xe283('0xab')]=util[_0xe283('0x9f')](_0xe283('0xac'),_0x4a858d[_0xe283('0x3d')],_0x4a858d['fax']);}if(_0x4a858d['List']){if(_0x4a858d[_0xe283('0xa2')][_0xe283('0xa3')][_0xe283('0x55')]){return _0x4a858d['List'][_0xe283('0xa3')][0x0];}else{return db['CmContact'][_0xe283('0x56')](_[_0xe283('0x1b')](_0x19608c[_0xe283('0x5f')],{'firstName':_0x19608c[_0xe283('0x5f')]['to'][0x0],'phone':_0x19608c['body']['to'][0x0],'fax':_0x19608c[_0xe283('0x5f')]['to'][0x0],'ListId':_0x4a858d[_0xe283('0x9b')]}));}}else{throw new Error(_0xe283('0xad'));}}else{throw new Error(_0xe283('0xae'));}})[_0xe283('0x22')](function(_0x32245f){if(_0x32245f){return db['FaxInteraction'][_0xe283('0x5a')]({'where':{'ContactId':_0x32245f['id'],'closed':![],'FaxAccountId':_0x4a858d['id']}})[_0xe283('0x22')](function(_0x4bf2fd){if(_0x4bf2fd){return[_0x4bf2fd,![]];}return db[_0xe283('0x71')][_0xe283('0x56')]({'UserId':_0x19608c['user']['id'],'ContactId':_0x32245f['id'],'FaxAccountId':_0x4a858d['id'],'fax':_0x19608c[_0xe283('0x5f')]['to'][0x0],'firstMsgDirection':_0xe283('0xaf'),'Messages':[_[_0xe283('0x4f')](_0x19608c['body'],{'read':![],'body':_0x19608c[_0xe283('0x5f')][_0xe283('0xa4')][0x0][_0xe283('0xb0')],'FaxAccountId':_0x4a858d['id'],'UserId':_0x19608c[_0xe283('0x57')]['id'],'ContactId':_0x32245f['id'],'AttachmentId':_0x19608c['body'][_0xe283('0xa4')][0x0]['id']})]},{'include':[{'model':db[_0xe283('0x9d')],'as':_0xe283('0xb1')}]})['then'](function(_0x5eb5c0){return[_0x5eb5c0,!![]];});});}else{throw new Error(_0xe283('0xb2'));}})[_0xe283('0xb3')](function(_0x5b1d60,_0x34cea4){if(_0x34cea4){return _0x5b1d60;}return db['FaxMessage'][_0xe283('0x56')]({'direction':_0xe283('0xaf'),'read':![],'body':_0x19608c['body'][_0xe283('0xa4')][0x0][_0xe283('0xb0')],'FaxAccountId':_0x4a858d['id'],'FaxInteractionId':_0x5b1d60['id'],'UserId':_0x19608c['user']['id'],'ContactId':_0x5b1d60[_0xe283('0xb4')],'AttachmentId':_0x19608c[_0xe283('0x5f')][_0xe283('0xa4')][0x0]['id']})['then'](function(_0x59ae3c){_0x5b1d60[_0xe283('0xb5')][_0xe283('0xb1')]=[];_0x5b1d60[_0xe283('0xb5')][_0xe283('0xb1')][_0xe283('0x8a')](_0x59ae3c[_0xe283('0xb5')]);return _0x5b1d60;});})['then'](function(_0x1e95a5){respondWithRpcPromise(_0xe283('0xb6'),'SendFax',{'FaxAccountId':_['isNil'](_0x19608c[_0xe283('0x53')]['id'])?undefined:_0x19608c[_0xe283('0x53')]['id'],'path':_[_0xe283('0xa9')](_0x19608c['body'][_0xe283('0xa4')][0x0]['path'])?undefined:_0x19608c[_0xe283('0x5f')]['attachments'][0x0][_0xe283('0xaa')],'fax':_[_0xe283('0xa9')](_0x19608c[_0xe283('0x5f')]['to'][0x0])?undefined:_0x19608c['body']['to'][0x0],'AttachmentId':_0x19608c['body']['attachments'][0x0]['id']},client9002)['then'](function(_0x1c0d51){logger[_0xe283('0x23')](_0xe283('0xb7'),_0x1c0d51);})[_0xe283('0x2c')](function(_0x34e516){logger[_0xe283('0x23')](_0xe283('0xb7'),_0x34e516);});return _0x1e95a5;})[_0xe283('0x22')](respondWithResult(_0x589f6f,null))[_0xe283('0x2c')](handleError(_0x589f6f,null));};exports[_0xe283('0xb8')]=function(_0x4ece81,_0x30cad7,_0x375b31){return db[_0xe283('0x40')][_0xe283('0x5a')]({'where':{'id':_0x4ece81[_0xe283('0x53')]['id']}})['then'](handleEntityNotFound(_0x30cad7,null))[_0xe283('0x22')](function(_0x222e1e){if(_0x222e1e){return _0x222e1e[_0xe283('0xb8')](_0x4ece81[_0xe283('0x5f')][_0xe283('0x6b')],_[_0xe283('0x72')](_0x4ece81[_0xe283('0x5f')],[_0xe283('0x6b'),'id'])||{})['spread'](function(_0x32bd02){for(var _0x5a561d=0x0;_0x5a561d<_0x4ece81[_0xe283('0x5f')][_0xe283('0x6b')]['length'];_0x5a561d+=0x1){socket[_0xe283('0xb9')]('userFaxAccount:save',{'UserId':Number(_0x4ece81['body'][_0xe283('0x6b')][_0x5a561d]),'FaxAccountId':Number(_0x4ece81[_0xe283('0x53')]['id'])});}return _0x32bd02;});}})[_0xe283('0x22')](respondWithResult(_0x30cad7,null))[_0xe283('0x2c')](handleError(_0x30cad7,null));};exports[_0xe283('0xba')]=function(_0x58b2f7,_0x2ed8bb,_0x2e5e91){return db['FaxAccount'][_0xe283('0x5a')]({'where':{'id':_0x58b2f7[_0xe283('0x53')]['id']}})['then'](handleEntityNotFound(_0x2ed8bb,null))['then'](function(_0x245a91){if(_0x245a91){return _0x245a91[_0xe283('0xba')](_0x58b2f7[_0xe283('0x44')][_0xe283('0x6b')])[_0xe283('0x22')](function(){if(_[_0xe283('0xbb')](_0x58b2f7['query'][_0xe283('0x6b')])){for(var _0xc9b22a=0x0;_0xc9b22a<_0x58b2f7['query'][_0xe283('0x6b')][_0xe283('0x55')];_0xc9b22a+=0x1){socket['emit'](_0xe283('0xbc'),{'UserId':Number(_0x58b2f7[_0xe283('0x44')][_0xe283('0x6b')][_0xc9b22a]),'FaxAccountId':Number(_0x58b2f7[_0xe283('0x53')]['id'])});}}else{socket['emit'](_0xe283('0xbc'),{'UserId':Number(_0x58b2f7[_0xe283('0x44')]['ids']),'FaxAccountId':Number(_0x58b2f7[_0xe283('0x53')]['id'])});}});}})['then'](respondWithStatusCode(_0x2ed8bb,null))['catch'](handleError(_0x2ed8bb,null));};exports[_0xe283('0xbd')]=function(_0x1978d2,_0x57b1ce,_0x2cd316){var _0x56cc24={};var _0x13b3c1={};var _0x1bbcd1;var _0x459508;return db[_0xe283('0x40')][_0xe283('0x64')]({'where':{'id':_0x1978d2[_0xe283('0x53')]['id']}})['then'](handleEntityNotFound(_0x57b1ce,null))[_0xe283('0x22')](function(_0x2978ac){if(_0x2978ac){_0x1bbcd1=_0x2978ac;_0x13b3c1[_0xe283('0x43')]=_[_0xe283('0x45')](db['User'][_0xe283('0x54')]);_0x13b3c1['query']=_[_0xe283('0x45')](_0x1978d2['query']);_0x13b3c1[_0xe283('0x46')]=_[_0xe283('0x47')](_0x13b3c1[_0xe283('0x43')],_0x13b3c1[_0xe283('0x44')]);_0x56cc24['attributes']=_['intersection'](_0x13b3c1[_0xe283('0x43')],qs[_0xe283('0x49')](_0x1978d2['query'][_0xe283('0x49')]));_0x56cc24[_0xe283('0x48')]=_0x56cc24[_0xe283('0x48')][_0xe283('0x55')]?_0x56cc24[_0xe283('0x48')]:_0x13b3c1[_0xe283('0x43')];_0x56cc24[_0xe283('0x66')]=qs[_0xe283('0x4c')](_0x1978d2[_0xe283('0x44')][_0xe283('0x4c')]);_0x56cc24[_0xe283('0x4d')]=qs[_0xe283('0x46')](_[_0xe283('0x4e')](_0x1978d2[_0xe283('0x44')],_0x13b3c1['filters']));if(_0x1978d2['query'][_0xe283('0x67')]){_0x56cc24[_0xe283('0x4d')]=_[_0xe283('0x4f')](_0x56cc24[_0xe283('0x4d')],{'$or':_[_0xe283('0x3f')](_0x56cc24[_0xe283('0x48')],function(_0x3b2a21){var _0x1312fb={};_0x1312fb[_0x3b2a21]={'$like':'%'+_0x1978d2[_0xe283('0x44')][_0xe283('0x67')]+'%'};return _0x1312fb;})});}_0x56cc24=_['merge']({},_0x56cc24,_0x1978d2[_0xe283('0x50')]);return _0x1bbcd1[_0xe283('0xbd')](_0x56cc24);}})[_0xe283('0x22')](function(_0x391416){if(_0x391416){_0x459508=_0x391416[_0xe283('0x55')];if(!_0x1978d2[_0xe283('0x44')]['hasOwnProperty']('nolimit')){_0x56cc24[_0xe283('0x33')]=qs[_0xe283('0x33')](_0x1978d2[_0xe283('0x44')]['limit']);_0x56cc24[_0xe283('0x31')]=qs[_0xe283('0x31')](_0x1978d2[_0xe283('0x44')][_0xe283('0x31')]);}return _0x1bbcd1[_0xe283('0xbd')](_0x56cc24);}})[_0xe283('0x22')](function(_0x156b6b){if(_0x156b6b){return _0x156b6b?{'count':_0x459508,'rows':_0x156b6b}:null;}})[_0xe283('0x22')](respondWithResult(_0x57b1ce,null))[_0xe283('0x2c')](handleError(_0x57b1ce,null));};
\ No newline at end of file
index 44af29f..52c42e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ae6=['setMaxListeners','save','update','remove','emit','events','../../mysqldb','FaxAccount'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1ae6,0x65));var _0x61ae=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x1ae6[_0x3ff085];return _0x2b68c3;};'use strict';var EventEmitter=require(_0x61ae('0x0'));var FaxAccount=require(_0x61ae('0x1'))['db'][_0x61ae('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x61ae('0x3')](0x0);var events={'afterCreate':_0x61ae('0x4'),'afterUpdate':_0x61ae('0x5'),'afterDestroy':_0x61ae('0x6')};function emitEvent(_0x2ad464){return function(_0x46786f,_0xd30402,_0x23fe3f){FaxAccountEvents[_0x61ae('0x7')](_0x2ad464+':'+_0x46786f['id'],_0x46786f);FaxAccountEvents[_0x61ae('0x7')](_0x2ad464,_0x46786f);_0x23fe3f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
+var _0x46fa=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','FaxAccount'];(function(_0x10b213,_0x1f710f){var _0x263d5a=function(_0x171c71){while(--_0x171c71){_0x10b213['push'](_0x10b213['shift']());}};_0x263d5a(++_0x1f710f);}(_0x46fa,0x89));var _0xa46f=function(_0x279a85,_0xdec7e4){_0x279a85=_0x279a85-0x0;var _0x22b490=_0x46fa[_0x279a85];return _0x22b490;};'use strict';var EventEmitter=require(_0xa46f('0x0'));var FaxAccount=require(_0xa46f('0x1'))['db'][_0xa46f('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xa46f('0x3')](0x0);var events={'afterCreate':_0xa46f('0x4'),'afterUpdate':_0xa46f('0x5'),'afterDestroy':_0xa46f('0x6')};function emitEvent(_0x52709a){return function(_0x23924b,_0x24d93b,_0x53afde){FaxAccountEvents[_0xa46f('0x7')](_0x52709a+':'+_0x23924b['id'],_0x23924b);FaxAccountEvents[_0xa46f('0x7')](_0x52709a,_0x23924b);_0x53afde(null);};}for(var e in events){if(events[_0xa46f('0x8')](e)){var event=events[e];FaxAccount[_0xa46f('0x9')](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
index aa2b237..49529f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37c0=['FaxAccount','fax_accounts','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./faxAccount.attributes','exports'];(function(_0x3d4c58,_0x3b206e){var _0x537a41=function(_0x9bf1d0){while(--_0x9bf1d0){_0x3d4c58['push'](_0x3d4c58['shift']());}};_0x537a41(++_0x3b206e);}(_0x37c0,0xf2));var _0x037c=function(_0x222145,_0x571dad){_0x222145=_0x222145-0x0;var _0x2f2fb8=_0x37c0[_0x222145];return _0x2f2fb8;};'use strict';var _=require(_0x037c('0x0'));var util=require('util');var logger=require(_0x037c('0x1'))(_0x037c('0x2'));var moment=require(_0x037c('0x3'));var BPromise=require(_0x037c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x037c('0x5'));var rimraf=require(_0x037c('0x6'));var config=require(_0x037c('0x7'));var attributes=require(_0x037c('0x8'));module[_0x037c('0x9')]=function(_0x178287,_0x25f7d3){return _0x178287['define'](_0x037c('0xa'),attributes,{'tableName':_0x037c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf843=['rimraf','../../config/environment','exports','FaxAccount','lodash','util','../../config/logger','api','request-promise','path'];(function(_0x15315e,_0x4dfe65){var _0x4a7615=function(_0x537827){while(--_0x537827){_0x15315e['push'](_0x15315e['shift']());}};_0x4a7615(++_0x4dfe65);}(_0xf843,0x11c));var _0x3f84=function(_0x28e50e,_0x1c8f7a){_0x28e50e=_0x28e50e-0x0;var _0x1c65c7=_0xf843[_0x28e50e];return _0x1c65c7;};'use strict';var _=require(_0x3f84('0x0'));var util=require(_0x3f84('0x1'));var logger=require(_0x3f84('0x2'))(_0x3f84('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3f84('0x4'));var fs=require('fs');var path=require(_0x3f84('0x5'));var rimraf=require(_0x3f84('0x6'));var config=require(_0x3f84('0x7'));var attributes=require('./faxAccount.attributes');module[_0x3f84('0x8')]=function(_0x5a2689,_0x3f61c2){return _0x5a2689['define'](_0x3f84('0x9'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ff51c7c..59bf116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee17=['limit','include','map','model','then','catch','NotifyFaxAccount','body','CmContact','describe','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from','ValidationError','from\x20is\x20mandatory','Sequelize','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','List','Contacts','Applications','get','account','applications','length','create','contact','fax','FaxInteraction','spread','autoclose','unmanaged','created','interaction','FaxMessage','ContactId','UserId','User','find','agent','name','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','info','request\x20sent','debug','stringify','code','error','FaxAccount,\x20%s,\x20%s','message','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes'];(function(_0x32a480,_0x39432d){var _0x1d5f2c=function(_0x597c38){while(--_0x597c38){_0x32a480['push'](_0x32a480['shift']());}};_0x1d5f2c(++_0x39432d);}(_0xee17,0x1ea));var _0x7ee1=function(_0x13caf5,_0x298c07){_0x13caf5=_0x13caf5-0x0;var _0x542e5c=_0xee17[_0x13caf5];return _0x542e5c;};'use strict';var _=require('lodash');var util=require(_0x7ee1('0x0'));var moment=require('moment');var BPromise=require(_0x7ee1('0x1'));var rs=require(_0x7ee1('0x2'));var fs=require('fs');var Redis=require(_0x7ee1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7ee1('0x4'));var logger=require(_0x7ee1('0x5'))(_0x7ee1('0x6'));var config=require(_0x7ee1('0x7'));var jayson=require(_0x7ee1('0x8'));var client=jayson[_0x7ee1('0x9')][_0x7ee1('0xa')]({'port':0x232c});config[_0x7ee1('0xb')]=_[_0x7ee1('0xc')](config[_0x7ee1('0xb')],{'host':_0x7ee1('0xd'),'port':0x18eb});var socket=require(_0x7ee1('0xe'))(new Redis(config[_0x7ee1('0xb')]));require(_0x7ee1('0xf'))[_0x7ee1('0x10')](socket);function respondWithRpcPromise(_0x4b22b3,_0x45e28a,_0x1242c2){return new BPromise(function(_0x123513,_0x2126be){return client['request'](_0x4b22b3,_0x1242c2)['then'](function(_0x355145){logger[_0x7ee1('0x11')]('FaxAccount,\x20%s,\x20%s',_0x45e28a,_0x7ee1('0x12'));logger[_0x7ee1('0x13')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x45e28a,_0x7ee1('0x12'),JSON[_0x7ee1('0x14')](_0x355145));if(_0x355145['error']){if(_0x355145['error'][_0x7ee1('0x15')]===0x1f4){logger[_0x7ee1('0x16')](_0x7ee1('0x17'),_0x45e28a,_0x355145[_0x7ee1('0x16')][_0x7ee1('0x18')]);return _0x2126be(_0x355145[_0x7ee1('0x16')][_0x7ee1('0x18')]);}logger[_0x7ee1('0x16')]('FaxAccount,\x20%s,\x20%s',_0x45e28a,_0x355145['error']['message']);return _0x123513(_0x355145[_0x7ee1('0x16')]['message']);}else{logger[_0x7ee1('0x11')](_0x7ee1('0x17'),_0x45e28a,_0x7ee1('0x12'));_0x123513(_0x355145['result'][_0x7ee1('0x18')]);}})['catch'](function(_0x2690e9){logger[_0x7ee1('0x16')](_0x7ee1('0x17'),_0x45e28a,_0x2690e9);_0x2126be(_0x2690e9);});});}exports[_0x7ee1('0x19')]=function(_0x504ae2){var _0x4b2a18=this;return new Promise(function(_0x2b0ffc,_0x48337d){return db[_0x7ee1('0x1a')][_0x7ee1('0x1b')]({'raw':_0x504ae2[_0x7ee1('0x1c')]?_0x504ae2[_0x7ee1('0x1c')][_0x7ee1('0x1d')]===undefined?!![]:![]:!![],'where':_0x504ae2['options']?_0x504ae2[_0x7ee1('0x1c')][_0x7ee1('0x1e')]||null:null,'attributes':_0x504ae2[_0x7ee1('0x1c')]?_0x504ae2['options'][_0x7ee1('0x1f')]||null:null,'limit':_0x504ae2['options']?_0x504ae2[_0x7ee1('0x1c')][_0x7ee1('0x20')]||null:null,'include':_0x504ae2['options']?_0x504ae2[_0x7ee1('0x1c')][_0x7ee1('0x21')]?_[_0x7ee1('0x22')](_0x504ae2[_0x7ee1('0x1c')][_0x7ee1('0x21')],function(_0x3b5611){return{'model':db[_0x3b5611[_0x7ee1('0x23')]],'as':_0x3b5611['as'],'attributes':_0x3b5611[_0x7ee1('0x1f')],'include':_0x3b5611[_0x7ee1('0x21')]?_['map'](_0x3b5611[_0x7ee1('0x21')],function(_0x34a55b){return{'model':db[_0x34a55b[_0x7ee1('0x23')]],'as':_0x34a55b['as'],'attributes':_0x34a55b[_0x7ee1('0x1f')],'include':_0x34a55b[_0x7ee1('0x21')]?_[_0x7ee1('0x22')](_0x34a55b[_0x7ee1('0x21')],function(_0x3a4dc0){return{'model':db[_0x3a4dc0[_0x7ee1('0x23')]],'as':_0x3a4dc0['as'],'attributes':_0x3a4dc0['attributes']};}):[]};}):[]};}):[]:[]})[_0x7ee1('0x24')](function(_0x2fbcf6){logger[_0x7ee1('0x11')](_0x7ee1('0x19'),_0x504ae2);logger[_0x7ee1('0x13')](_0x7ee1('0x19'),_0x504ae2,JSON['stringify'](_0x2fbcf6));_0x2b0ffc(_0x2fbcf6);})[_0x7ee1('0x25')](function(_0x20ecbd){logger[_0x7ee1('0x16')]('GetFaxAccount',_0x20ecbd[_0x7ee1('0x18')],_0x504ae2);_0x48337d(_0x4b2a18[_0x7ee1('0x16')](0x1f4,_0x20ecbd['message']));});});};exports[_0x7ee1('0x26')]=function(_0x5c39d0,_0x43ea3c,_0x310b49){var _0x4e1eb5=this;return new Promise(function(_0x3cd7b8,_0x2fb668){var _0x3e6d8f={'body':_0x5c39d0[_0x7ee1('0x27')],'channel':'fax'};var _0x5c5f23=[];var _0xe13f23=[];var _0x15c145={};return db[_0x7ee1('0x28')][_0x7ee1('0x29')]()[_0x7ee1('0x24')](function(_0x47adaa){if(!_0x47adaa){throw new db['Sequelize']['ValidationError'](_0x7ee1('0x2a'));}_0x5c5f23=_[_0x7ee1('0x2b')](_[_0x7ee1('0x2c')](_0x47adaa),[_0x7ee1('0x2d'),_0x7ee1('0x2e')]);_0xe13f23=_[_0x7ee1('0x2b')](_[_0x7ee1('0x2c')](_0x47adaa),[_0x7ee1('0x2d'),_0x7ee1('0x2e'),_0x7ee1('0x2f'),_0x7ee1('0x30')]);if(_0x5c39d0[_0x7ee1('0x27')]['id']){delete _0x5c39d0[_0x7ee1('0x27')]['id'];}if(_[_0x7ee1('0x31')](_0x5c39d0['body'][_0x7ee1('0x32')])){throw new db['Sequelize'][(_0x7ee1('0x33'))](_0x7ee1('0x34'));}if(_[_0x7ee1('0x31')](_0x5c39d0[_0x7ee1('0x27')]['body'])||_0x5c39d0[_0x7ee1('0x27')][_0x7ee1('0x27')]===''){throw new db[(_0x7ee1('0x35'))][(_0x7ee1('0x33'))](_0x7ee1('0x36'));}if(_[_0x7ee1('0x31')](_0x5c39d0[_0x7ee1('0x27')]['mapKey'])){throw new db[(_0x7ee1('0x35'))][(_0x7ee1('0x33'))](_0x7ee1('0x37')+_0xe13f23);}if(!_[_0x7ee1('0x38')](_0xe13f23,_0x5c39d0['body'][_0x7ee1('0x39')])){throw new db[(_0x7ee1('0x35'))][(_0x7ee1('0x33'))](_0x7ee1('0x3a')+_0xe13f23);}_0x15c145[_0x5c39d0[_0x7ee1('0x27')][_0x7ee1('0x39')]]=_0x5c39d0[_0x7ee1('0x27')][_0x7ee1('0x32')];})[_0x7ee1('0x24')](function(){return db[_0x7ee1('0x1a')]['find']({'where':{'id':_0x5c39d0['account']['id']},'include':[{'model':db[_0x7ee1('0x3b')],'as':_0x7ee1('0x3c'),'include':[{'model':db[_0x7ee1('0x28')],'as':_0x7ee1('0x3d'),'where':_0x15c145,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db['FaxApplication'],'as':_0x7ee1('0x3e')}]});})['then'](function(_0x28a304){if(_0x28a304&&_0x28a304['List']){var _0x5c4b44=_0x28a304[_0x7ee1('0x3f')]({'plain':!![]});_0x3e6d8f[_0x7ee1('0x40')]=_0x5c4b44;_0x3e6d8f['applications']=_0x5c4b44['Applications'];_0x3e6d8f['list']=_0x5c4b44[_0x7ee1('0x3c')];_0x3e6d8f[_0x7ee1('0x41')]=_['orderBy'](_0x3e6d8f[_0x7ee1('0x41')],['priority'],['asc']);if(_0x3e6d8f[_0x7ee1('0x40')]['Applications']){delete _0x3e6d8f[_0x7ee1('0x40')][_0x7ee1('0x3e')];}if(_0x3e6d8f[_0x7ee1('0x40')][_0x7ee1('0x3c')]&&_0x3e6d8f[_0x7ee1('0x40')][_0x7ee1('0x3c')]['Contacts'][_0x7ee1('0x42')]){return _0x3e6d8f[_0x7ee1('0x40')][_0x7ee1('0x3c')][_0x7ee1('0x3d')][0x0];}var _0x2645d9=_[_0x7ee1('0xc')](_0x5c39d0[_0x7ee1('0x27')],{'firstName':_0x5c39d0[_0x7ee1('0x27')]['from'],'ListId':_0x5c4b44['ListId']});_0x2645d9[_0x5c39d0[_0x7ee1('0x27')][_0x7ee1('0x39')]]=_0x5c39d0[_0x7ee1('0x27')]['from'];return db[_0x7ee1('0x28')][_0x7ee1('0x43')](_0x2645d9,{'fields':_0x5c5f23,'raw':!![]});}})['then'](function(_0x769f5a){_0x3e6d8f[_0x7ee1('0x44')]=_0x769f5a;if(_0x769f5a){var _0x49f1ed={'ContactId':_0x769f5a['id'],'FaxAccountId':_0x5c39d0[_0x7ee1('0x40')]['id'],'fax':_0x769f5a[_0x7ee1('0x45')]};return db[_0x7ee1('0x46')]['find']({'where':{'ContactId':_0x769f5a['id'],'closed':![],'FaxAccountId':_0x5c39d0[_0x7ee1('0x40')]['id']}})[_0x7ee1('0x24')](function(_0x2f9251){if(_0x2f9251){return[_0x2f9251,![]];}return db[_0x7ee1('0x46')]['create'](_0x49f1ed)[_0x7ee1('0x24')](function(_0x489e78){return[_0x489e78,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x7ee1('0x47')](function(_0x195050,_0x5ec503){var _0xf49848=_0x195050[_0x7ee1('0x3f')]({'plain':!![]});if(_0x5ec503){if(_0x3e6d8f['account'][_0x7ee1('0x48')]){_0x3e6d8f['applications']['push']({'id':0x0,'priority':_0x3e6d8f['applications']['length']+0x1,'app':'close','appdata':_0x7ee1('0x49'),'interval':'*,*,*,*'});}_0xf49848[_0x7ee1('0x4a')]=!![];}else{_0xf49848[_0x7ee1('0x4a')]=![];}_0x3e6d8f[_0x7ee1('0x4b')]=_0xf49848;return db[_0x7ee1('0x4c')][_0x7ee1('0x43')]({'body':_0x5c39d0[_0x7ee1('0x27')][_0x7ee1('0x27')],'FaxAccountId':_0x5c39d0[_0x7ee1('0x40')]['id'],'FaxInteractionId':_0x195050['id'],'direction':'in','ContactId':_0x195050[_0x7ee1('0x4d')],'AttachmentId':_0x5c39d0['body']['AttachmentId']});})['then'](function(_0x20cda6){_0x3e6d8f[_0x7ee1('0x18')]=_0x20cda6;if(_0x3e6d8f[_0x7ee1('0x4b')][_0x7ee1('0x4e')]){return db[_0x7ee1('0x4f')][_0x7ee1('0x50')]({'attributes':['id','name'],'where':{'id':_0x3e6d8f[_0x7ee1('0x4b')][_0x7ee1('0x4e')]}})[_0x7ee1('0x24')](function(_0x41eb45){if(_0x41eb45){_0x3e6d8f[_0x7ee1('0x41')]['unshift']({'id':0x0,'priority':0x0,'app':_0x7ee1('0x51'),'appdata':_0x41eb45[_0x7ee1('0x52')]+','+(_0x3e6d8f[_0x7ee1('0x40')][_0x7ee1('0x53')]||0xa),'interval':_0x7ee1('0x54')});}return respondWithRpcPromise(_0x7ee1('0x55'),_0x7ee1('0x56'),_0x3e6d8f);});}return respondWithRpcPromise(_0x7ee1('0x55'),_0x7ee1('0x56'),_0x3e6d8f);})['then'](function(_0x164a38){_0x3cd7b8(_0x164a38);})[_0x7ee1('0x25')](function(_0x274317){_0x2fb668(_0x4e1eb5['error'](0x1f4,_0x274317[_0x7ee1('0x18')]));});});};
\ No newline at end of file
+var _0x7fc9=['updatedAt','createdAt','CompanyId','isNil','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','from','account','CmList','Contacts','DESC','FaxApplication','Applications','List','get','list','applications','orderBy','priority','asc','ListId','create','contact','find','spread','autoclose','push','length','close','unmanaged','*,*,*,*','created','interaction','ContactId','AttachmentId','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./faxAccount.socket','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','FaxAccount','findAll','options','raw','where','limit','include','map','model','attributes','GetFaxAccount','catch','NotifyFaxAccount','body','fax','CmContact','describe','ValidationError','difference','keys'];(function(_0x191c24,_0xe0d9ea){var _0x4d25d4=function(_0x35083f){while(--_0x35083f){_0x191c24['push'](_0x191c24['shift']());}};_0x4d25d4(++_0xe0d9ea);}(_0x7fc9,0x8d));var _0x97fc=function(_0x565a37,_0x3e26b7){_0x565a37=_0x565a37-0x0;var _0x2a60e2=_0x7fc9[_0x565a37];return _0x2a60e2;};'use strict';var _=require('lodash');var util=require(_0x97fc('0x0'));var moment=require(_0x97fc('0x1'));var BPromise=require(_0x97fc('0x2'));var rs=require(_0x97fc('0x3'));var fs=require('fs');var Redis=require(_0x97fc('0x4'));var db=require(_0x97fc('0x5'))['db'];var utils=require(_0x97fc('0x6'));var logger=require(_0x97fc('0x7'))(_0x97fc('0x8'));var config=require('../../config/environment');var jayson=require(_0x97fc('0x9'));var client=jayson[_0x97fc('0xa')][_0x97fc('0xb')]({'port':0x232c});config['redis']=_[_0x97fc('0xc')](config[_0x97fc('0xd')],{'host':_0x97fc('0xe'),'port':0x18eb});var socket=require(_0x97fc('0xf'))(new Redis(config['redis']));require(_0x97fc('0x10'))['register'](socket);function respondWithRpcPromise(_0x25f9ed,_0x2f12f0,_0x21f110){return new BPromise(function(_0x139444,_0xcc0c4d){return client[_0x97fc('0x11')](_0x25f9ed,_0x21f110)[_0x97fc('0x12')](function(_0xac7968){logger[_0x97fc('0x13')](_0x97fc('0x14'),_0x2f12f0,_0x97fc('0x15'));logger[_0x97fc('0x16')](_0x97fc('0x17'),_0x2f12f0,'request\x20sent',JSON[_0x97fc('0x18')](_0xac7968));if(_0xac7968[_0x97fc('0x19')]){if(_0xac7968[_0x97fc('0x19')][_0x97fc('0x1a')]===0x1f4){logger[_0x97fc('0x19')](_0x97fc('0x14'),_0x2f12f0,_0xac7968[_0x97fc('0x19')][_0x97fc('0x1b')]);return _0xcc0c4d(_0xac7968['error'][_0x97fc('0x1b')]);}logger['error'](_0x97fc('0x14'),_0x2f12f0,_0xac7968[_0x97fc('0x19')][_0x97fc('0x1b')]);return _0x139444(_0xac7968[_0x97fc('0x19')][_0x97fc('0x1b')]);}else{logger[_0x97fc('0x13')](_0x97fc('0x14'),_0x2f12f0,'request\x20sent');_0x139444(_0xac7968[_0x97fc('0x1c')]['message']);}})['catch'](function(_0x53fe4d){logger[_0x97fc('0x19')](_0x97fc('0x14'),_0x2f12f0,_0x53fe4d);_0xcc0c4d(_0x53fe4d);});});}exports['GetFaxAccount']=function(_0x16406c){var _0x4b0589=this;return new Promise(function(_0xd162e6,_0x27c38d){return db[_0x97fc('0x1d')][_0x97fc('0x1e')]({'raw':_0x16406c['options']?_0x16406c[_0x97fc('0x1f')][_0x97fc('0x20')]===undefined?!![]:![]:!![],'where':_0x16406c['options']?_0x16406c['options'][_0x97fc('0x21')]||null:null,'attributes':_0x16406c[_0x97fc('0x1f')]?_0x16406c[_0x97fc('0x1f')]['attributes']||null:null,'limit':_0x16406c[_0x97fc('0x1f')]?_0x16406c[_0x97fc('0x1f')][_0x97fc('0x22')]||null:null,'include':_0x16406c[_0x97fc('0x1f')]?_0x16406c['options'][_0x97fc('0x23')]?_[_0x97fc('0x24')](_0x16406c[_0x97fc('0x1f')]['include'],function(_0x4db2ea){return{'model':db[_0x4db2ea[_0x97fc('0x25')]],'as':_0x4db2ea['as'],'attributes':_0x4db2ea[_0x97fc('0x26')],'include':_0x4db2ea['include']?_[_0x97fc('0x24')](_0x4db2ea[_0x97fc('0x23')],function(_0x3273ee){return{'model':db[_0x3273ee[_0x97fc('0x25')]],'as':_0x3273ee['as'],'attributes':_0x3273ee[_0x97fc('0x26')],'include':_0x3273ee['include']?_[_0x97fc('0x24')](_0x3273ee[_0x97fc('0x23')],function(_0x2cc060){return{'model':db[_0x2cc060[_0x97fc('0x25')]],'as':_0x2cc060['as'],'attributes':_0x2cc060[_0x97fc('0x26')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x49e5f9){logger['info'](_0x97fc('0x27'),_0x16406c);logger[_0x97fc('0x16')](_0x97fc('0x27'),_0x16406c,JSON[_0x97fc('0x18')](_0x49e5f9));_0xd162e6(_0x49e5f9);})[_0x97fc('0x28')](function(_0x145842){logger['error'](_0x97fc('0x27'),_0x145842[_0x97fc('0x1b')],_0x16406c);_0x27c38d(_0x4b0589[_0x97fc('0x19')](0x1f4,_0x145842[_0x97fc('0x1b')]));});});};exports[_0x97fc('0x29')]=function(_0x24f4c7,_0x526d2a,_0x40d701){var _0x355c9e=this;return new Promise(function(_0xfc8bb4,_0x1a642a){var _0x46b5b7={'body':_0x24f4c7[_0x97fc('0x2a')],'channel':_0x97fc('0x2b')};var _0x358262=[];var _0x34dba1=[];var _0x545350={};return db[_0x97fc('0x2c')][_0x97fc('0x2d')]()[_0x97fc('0x12')](function(_0x1b36c5){if(!_0x1b36c5){throw new db['Sequelize'][(_0x97fc('0x2e'))]('no\x20available\x20attributes');}_0x358262=_[_0x97fc('0x2f')](_[_0x97fc('0x30')](_0x1b36c5),['createdAt',_0x97fc('0x31')]);_0x34dba1=_[_0x97fc('0x2f')](_[_0x97fc('0x30')](_0x1b36c5),[_0x97fc('0x32'),'updatedAt',_0x97fc('0x33'),'ListId']);if(_0x24f4c7[_0x97fc('0x2a')]['id']){delete _0x24f4c7[_0x97fc('0x2a')]['id'];}if(_[_0x97fc('0x34')](_0x24f4c7[_0x97fc('0x2a')]['from'])){throw new db[(_0x97fc('0x35'))]['ValidationError'](_0x97fc('0x36'));}if(_[_0x97fc('0x34')](_0x24f4c7['body']['body'])||_0x24f4c7[_0x97fc('0x2a')][_0x97fc('0x2a')]===''){throw new db[(_0x97fc('0x35'))][(_0x97fc('0x2e'))](_0x97fc('0x37'));}if(_['isNil'](_0x24f4c7[_0x97fc('0x2a')][_0x97fc('0x38')])){throw new db[(_0x97fc('0x35'))][(_0x97fc('0x2e'))](_0x97fc('0x39')+_0x34dba1);}if(!_['includes'](_0x34dba1,_0x24f4c7[_0x97fc('0x2a')]['mapKey'])){throw new db[(_0x97fc('0x35'))][(_0x97fc('0x2e'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x34dba1);}_0x545350[_0x24f4c7[_0x97fc('0x2a')]['mapKey']]=_0x24f4c7[_0x97fc('0x2a')][_0x97fc('0x3a')];})['then'](function(){return db['FaxAccount']['find']({'where':{'id':_0x24f4c7[_0x97fc('0x3b')]['id']},'include':[{'model':db[_0x97fc('0x3c')],'as':'List','include':[{'model':db['CmContact'],'as':_0x97fc('0x3d'),'where':_0x545350,'limit':0x1,'order':[['updatedAt',_0x97fc('0x3e')]]}]},{'model':db[_0x97fc('0x3f')],'as':_0x97fc('0x40')}]});})['then'](function(_0x4b774d){if(_0x4b774d&&_0x4b774d[_0x97fc('0x41')]){var _0x350b00=_0x4b774d[_0x97fc('0x42')]({'plain':!![]});_0x46b5b7[_0x97fc('0x3b')]=_0x350b00;_0x46b5b7['applications']=_0x350b00[_0x97fc('0x40')];_0x46b5b7[_0x97fc('0x43')]=_0x350b00[_0x97fc('0x41')];_0x46b5b7[_0x97fc('0x44')]=_[_0x97fc('0x45')](_0x46b5b7[_0x97fc('0x44')],[_0x97fc('0x46')],[_0x97fc('0x47')]);if(_0x46b5b7[_0x97fc('0x3b')][_0x97fc('0x40')]){delete _0x46b5b7[_0x97fc('0x3b')][_0x97fc('0x40')];}if(_0x46b5b7[_0x97fc('0x3b')][_0x97fc('0x41')]&&_0x46b5b7[_0x97fc('0x3b')][_0x97fc('0x41')][_0x97fc('0x3d')]['length']){return _0x46b5b7['account']['List'][_0x97fc('0x3d')][0x0];}var _0x18ebb4=_[_0x97fc('0xc')](_0x24f4c7[_0x97fc('0x2a')],{'firstName':_0x24f4c7[_0x97fc('0x2a')][_0x97fc('0x3a')],'ListId':_0x350b00[_0x97fc('0x48')]});_0x18ebb4[_0x24f4c7[_0x97fc('0x2a')][_0x97fc('0x38')]]=_0x24f4c7['body'][_0x97fc('0x3a')];return db[_0x97fc('0x2c')][_0x97fc('0x49')](_0x18ebb4,{'fields':_0x358262,'raw':!![]});}})[_0x97fc('0x12')](function(_0x501de7){_0x46b5b7[_0x97fc('0x4a')]=_0x501de7;if(_0x501de7){var _0x56b337={'ContactId':_0x501de7['id'],'FaxAccountId':_0x24f4c7['account']['id'],'fax':_0x501de7[_0x97fc('0x2b')]};return db['FaxInteraction'][_0x97fc('0x4b')]({'where':{'ContactId':_0x501de7['id'],'closed':![],'FaxAccountId':_0x24f4c7[_0x97fc('0x3b')]['id']}})[_0x97fc('0x12')](function(_0x54641c){if(_0x54641c){return[_0x54641c,![]];}return db['FaxInteraction'][_0x97fc('0x49')](_0x56b337)['then'](function(_0x29f89d){return[_0x29f89d,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x97fc('0x4c')](function(_0x1013db,_0x311fa4){var _0x5d34a4=_0x1013db[_0x97fc('0x42')]({'plain':!![]});if(_0x311fa4){if(_0x46b5b7['account'][_0x97fc('0x4d')]){_0x46b5b7[_0x97fc('0x44')][_0x97fc('0x4e')]({'id':0x0,'priority':_0x46b5b7[_0x97fc('0x44')][_0x97fc('0x4f')]+0x1,'app':_0x97fc('0x50'),'appdata':_0x97fc('0x51'),'interval':_0x97fc('0x52')});}_0x5d34a4[_0x97fc('0x53')]=!![];}else{_0x5d34a4[_0x97fc('0x53')]=![];}_0x46b5b7[_0x97fc('0x54')]=_0x5d34a4;return db['FaxMessage'][_0x97fc('0x49')]({'body':_0x24f4c7[_0x97fc('0x2a')]['body'],'FaxAccountId':_0x24f4c7[_0x97fc('0x3b')]['id'],'FaxInteractionId':_0x1013db['id'],'direction':'in','ContactId':_0x1013db[_0x97fc('0x55')],'AttachmentId':_0x24f4c7['body'][_0x97fc('0x56')]});})[_0x97fc('0x12')](function(_0x196d4d){_0x46b5b7['message']=_0x196d4d;if(_0x46b5b7['interaction'][_0x97fc('0x57')]){return db[_0x97fc('0x58')][_0x97fc('0x4b')]({'attributes':['id',_0x97fc('0x59')],'where':{'id':_0x46b5b7[_0x97fc('0x54')][_0x97fc('0x57')]}})['then'](function(_0x1759bb){if(_0x1759bb){_0x46b5b7['applications'][_0x97fc('0x5a')]({'id':0x0,'priority':0x0,'app':_0x97fc('0x5b'),'appdata':_0x1759bb[_0x97fc('0x59')]+','+(_0x46b5b7[_0x97fc('0x3b')][_0x97fc('0x5c')]||0xa),'interval':_0x97fc('0x52')});}return respondWithRpcPromise(_0x97fc('0x5d'),_0x97fc('0x5e'),_0x46b5b7);});}return respondWithRpcPromise(_0x97fc('0x5d'),_0x97fc('0x5e'),_0x46b5b7);})[_0x97fc('0x12')](function(_0x5f156b){_0xfc8bb4(_0x5f156b);})[_0x97fc('0x28')](function(_0x578ed8){_0x1a642a(_0x355c9e['error'](0x1f4,_0x578ed8['message']));});});};
\ No newline at end of file
index bb3c5d0..ceeaba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47d0=['./faxAccount.events','update','emit','register','length','faxAccount:'];(function(_0x41177b,_0x577df4){var _0x1f550a=function(_0xf3dd23){while(--_0xf3dd23){_0x41177b['push'](_0x41177b['shift']());}};_0x1f550a(++_0x577df4);}(_0x47d0,0xae));var _0x047d=function(_0x120303,_0x2c8472){_0x120303=_0x120303-0x0;var _0x1e4cd0=_0x47d0[_0x120303];return _0x1e4cd0;};'use strict';var FaxAccountEvents=require(_0x047d('0x0'));var events=['save','remove',_0x047d('0x1')];function createListener(_0x5a22c9,_0x5b56bd){return function(_0x417ab6){_0x5b56bd[_0x047d('0x2')](_0x5a22c9,_0x417ab6);};}function removeListener(_0x6042c6,_0x5be252){return function(){FaxAccountEvents['removeListener'](_0x6042c6,_0x5be252);};}exports[_0x047d('0x3')]=function(_0x29b942){for(var _0x375a3c=0x0,_0xd6842e=events[_0x047d('0x4')];_0x375a3c<_0xd6842e;_0x375a3c++){var _0x23554b=events[_0x375a3c];var _0x16f9c6=createListener(_0x047d('0x5')+_0x23554b,_0x29b942);FaxAccountEvents['on'](_0x23554b,_0x16f9c6);}};
\ No newline at end of file
+var _0x8a70=['update','emit','removeListener','length','save','remove'];(function(_0x5e239d,_0x54a029){var _0x2e6ae5=function(_0x34cc50){while(--_0x34cc50){_0x5e239d['push'](_0x5e239d['shift']());}};_0x2e6ae5(++_0x54a029);}(_0x8a70,0x100));var _0x08a7=function(_0x101b24,_0x7896a2){_0x101b24=_0x101b24-0x0;var _0x2beef5=_0x8a70[_0x101b24];return _0x2beef5;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=[_0x08a7('0x0'),_0x08a7('0x1'),_0x08a7('0x2')];function createListener(_0x4f8e95,_0x4139a8){return function(_0x501965){_0x4139a8[_0x08a7('0x3')](_0x4f8e95,_0x501965);};}function removeListener(_0x1502cb,_0x22b321){return function(){FaxAccountEvents[_0x08a7('0x4')](_0x1502cb,_0x22b321);};}exports['register']=function(_0x2b52e5){for(var _0x5c306c=0x0,_0x801fc5=events[_0x08a7('0x5')];_0x5c306c<_0x801fc5;_0x5c306c++){var _0x1d54c6=events[_0x5c306c];var _0x266249=createListener('faxAccount:'+_0x1d54c6,_0x2b52e5);FaxAccountEvents['on'](_0x1d54c6,_0x266249);}};
\ No newline at end of file
index 3860825..63dacf7 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(_0x1d18eb,_0x44511f){var _0x1112e1=function(_0x293813){while(--_0x293813){_0x1d18eb['push'](_0x1d18eb['shift']());}};_0x1112e1(++_0x44511f);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'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(_0x272886,_0x3fc81f){var _0x5a65c1=function(_0x298279){while(--_0x298279){_0x272886['push'](_0x272886['shift']());}};_0x5a65c1(++_0x3fc81f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'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 b2e157e..fd41a80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x010a=['exports','STRING','noop','TEXT','*,*,*,*'];(function(_0x10c16d,_0x2b3e14){var _0x5896f4=function(_0x4306b9){while(--_0x4306b9){_0x10c16d['push'](_0x10c16d['shift']());}};_0x5896f4(++_0x2b3e14);}(_0x010a,0xa0));var _0xa010=function(_0x8a369b,_0x635224){_0x8a369b=_0x8a369b-0x0;var _0x324b70=_0x010a[_0x8a369b];return _0x324b70;};'use strict';var Sequelize=require('sequelize');module[_0xa010('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xa010('0x1')],'allowNull':![],'defaultValue':_0xa010('0x2')},'appdata':{'type':Sequelize[_0xa010('0x3')]()},'description':{'type':Sequelize[_0xa010('0x1')]},'interval':{'type':Sequelize[_0xa010('0x1')],'defaultValue':_0xa010('0x4')}};
\ No newline at end of file
+var _0x6640=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x5a0e4d,_0x423755){var _0x1d8d2d=function(_0xe9a3f2){while(--_0xe9a3f2){_0x5a0e4d['push'](_0x5a0e4d['shift']());}};_0x1d8d2d(++_0x423755);}(_0x6640,0x1db));var _0x0664=function(_0x3f993e,_0x2d5757){_0x3f993e=_0x3f993e-0x0;var _0x39c135=_0x6640[_0x3f993e];return _0x39c135;};'use strict';var Sequelize=require(_0x0664('0x0'));module[_0x0664('0x1')]={'priority':{'type':Sequelize[_0x0664('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x0664('0x3')],'allowNull':![],'defaultValue':_0x0664('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x0664('0x3')]},'interval':{'type':Sequelize[_0x0664('0x3')],'defaultValue':_0x0664('0x5')}};
\ No newline at end of file
index 44b5515..f6f530f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeac8=['desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/logger','../../mysqldb','sendStatus','status','end','limit','undefined','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','catch','show','params','find','create','body','destroy','eml-format','zip-dir','request-promise','moment','bluebird','path','sox','ejs','fs-extra','squel','crypto','jsforce'];(function(_0x2e2857,_0x2c8066){var _0x294569=function(_0x439aba){while(--_0x439aba){_0x2e2857['push'](_0x2e2857['shift']());}};_0x294569(++_0x2c8066);}(_0xeac8,0x152));var _0x8eac=function(_0x5bd81d,_0x401db7){_0x5bd81d=_0x5bd81d-0x0;var _0x569753=_0xeac8[_0x5bd81d];return _0x569753;};'use strict';var emlformat=require(_0x8eac('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8eac('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8eac('0x2'));var moment=require(_0x8eac('0x3'));var BPromise=require(_0x8eac('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8eac('0x5'));var sox=require(_0x8eac('0x6'));var csv=require('to-csv');var ejs=require(_0x8eac('0x7'));var fs=require('fs');var fs_extra=require(_0x8eac('0x8'));var _=require('lodash');var squel=require(_0x8eac('0x9'));var crypto=require(_0x8eac('0xa'));var jsforce=require(_0x8eac('0xb'));var deskjs=require(_0x8eac('0xc'));var toCsv=require(_0x8eac('0xd'));var querystring=require(_0x8eac('0xe'));var Papa=require('papaparse');var Redis=require(_0x8eac('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x8eac('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8eac('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x8eac('0x12'))['db'];function respondWithStatusCode(_0x20597a,_0x57bdfb){_0x57bdfb=_0x57bdfb||0xcc;return function(_0x5b0c14){if(_0x5b0c14){return _0x20597a[_0x8eac('0x13')](_0x57bdfb);}return _0x20597a[_0x8eac('0x14')](_0x57bdfb)[_0x8eac('0x15')]();};}function respondWithResult(_0x2b1f14,_0x5c4f00){_0x5c4f00=_0x5c4f00||0xc8;return function(_0x30592e){if(_0x30592e){return _0x2b1f14[_0x8eac('0x14')](_0x5c4f00)['json'](_0x30592e);}};}function respondWithFilteredResult(_0x27d7d7,_0x273df5){return function(_0x5a7a16){if(_0x5a7a16){var _0x2d14c1=typeof _0x273df5['offset']==='undefined'&&typeof _0x273df5[_0x8eac('0x16')]===_0x8eac('0x17');var _0x50f1bf=_0x5a7a16['count'];var _0x1269b3=_0x2d14c1?0x0:_0x273df5[_0x8eac('0x18')];var _0x2472f1=_0x2d14c1?_0x5a7a16['count']:_0x273df5[_0x8eac('0x18')]+_0x273df5[_0x8eac('0x16')];var _0x440a65;if(_0x2472f1>=_0x50f1bf){_0x2472f1=_0x50f1bf;_0x440a65=0xc8;}else{_0x440a65=0xce;}_0x27d7d7[_0x8eac('0x14')](_0x440a65);return _0x27d7d7[_0x8eac('0x19')](_0x8eac('0x1a'),_0x1269b3+'-'+_0x2472f1+'/'+_0x50f1bf)['json'](_0x5a7a16);}return null;};}function patchUpdates(_0x563f69){return function(_0x507af3){try{jsonpatch[_0x8eac('0x1b')](_0x507af3,_0x563f69,!![]);}catch(_0x196e0c){return BPromise[_0x8eac('0x1c')](_0x196e0c);}return _0x507af3[_0x8eac('0x1d')]();};}function saveUpdates(_0x30290e,_0x3ed9fc){return function(_0x4402b5){if(_0x4402b5){return _0x4402b5[_0x8eac('0x1e')](_0x30290e)[_0x8eac('0x1f')](function(_0x4b099f){return _0x4b099f;});}return null;};}function removeEntity(_0x23bff6,_0x1217de){return function(_0x4004d){if(_0x4004d){return _0x4004d['destroy']()[_0x8eac('0x1f')](function(){_0x23bff6[_0x8eac('0x14')](0xcc)[_0x8eac('0x15')]();});}};}function handleEntityNotFound(_0x47ecc5,_0x3d3642){return function(_0x5be16e){if(!_0x5be16e){_0x47ecc5[_0x8eac('0x13')](0x194);}return _0x5be16e;};}function handleError(_0x5e6621,_0x1d4266){_0x1d4266=_0x1d4266||0x1f4;return function(_0x15fba0){logger[_0x8eac('0x20')](_0x15fba0[_0x8eac('0x21')]);if(_0x15fba0[_0x8eac('0x22')]){delete _0x15fba0[_0x8eac('0x22')];}_0x5e6621[_0x8eac('0x14')](_0x1d4266)[_0x8eac('0x23')](_0x15fba0);};}exports[_0x8eac('0x24')]=function(_0x13f5d6,_0x473f89){var _0x3ddb8d={},_0x403388={},_0x13cb0a={'count':0x0,'rows':[]};var _0x1f0413=_[_0x8eac('0x25')](db[_0x8eac('0x26')][_0x8eac('0x27')],function(_0x3f2487){return{'name':_0x3f2487[_0x8eac('0x28')],'type':_0x3f2487[_0x8eac('0x29')][_0x8eac('0x2a')]};});_0x403388[_0x8eac('0x2b')]=_['map'](_0x1f0413,_0x8eac('0x22'));_0x403388[_0x8eac('0x2c')]=_[_0x8eac('0x2d')](_0x13f5d6[_0x8eac('0x2c')]);_0x403388['filters']=_[_0x8eac('0x2e')](_0x403388['model'],_0x403388[_0x8eac('0x2c')]);_0x3ddb8d[_0x8eac('0x2f')]=_[_0x8eac('0x2e')](_0x403388['model'],qs['fields'](_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x30')]));_0x3ddb8d['attributes']=_0x3ddb8d['attributes'][_0x8eac('0x31')]?_0x3ddb8d[_0x8eac('0x2f')]:_0x403388['model'];if(!_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x32')]('nolimit')){_0x3ddb8d[_0x8eac('0x16')]=qs[_0x8eac('0x16')](_0x13f5d6['query']['limit']);_0x3ddb8d[_0x8eac('0x18')]=qs[_0x8eac('0x18')](_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x18')]);}_0x3ddb8d['order']=qs[_0x8eac('0x33')](_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x33')]);_0x3ddb8d[_0x8eac('0x34')]=qs[_0x8eac('0x35')](_[_0x8eac('0x36')](_0x13f5d6[_0x8eac('0x2c')],_0x403388[_0x8eac('0x35')]),_0x1f0413);if(_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x37')]){_0x3ddb8d[_0x8eac('0x34')]=_[_0x8eac('0x38')](_0x3ddb8d[_0x8eac('0x34')],{'$or':_[_0x8eac('0x25')](_0x1f0413,function(_0x360b3f){if(_0x360b3f['type']!==_0x8eac('0x39')){var _0x252d27={};_0x252d27[_0x360b3f[_0x8eac('0x22')]]={'$like':'%'+_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x37')]+'%'};return _0x252d27;}})});}_0x3ddb8d=_[_0x8eac('0x38')]({},_0x3ddb8d,_0x13f5d6[_0x8eac('0x3a')]);var _0x4f8988={'where':_0x3ddb8d['where']};return db[_0x8eac('0x26')][_0x8eac('0x3b')](_0x4f8988)[_0x8eac('0x1f')](function(_0x44b06e){_0x13cb0a[_0x8eac('0x3b')]=_0x44b06e;if(_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x3c')]){_0x3ddb8d[_0x8eac('0x3d')]=[{'all':!![]}];}return db[_0x8eac('0x26')][_0x8eac('0x3e')](_0x3ddb8d);})['then'](function(_0x2ad7fe){_0x13cb0a['rows']=_0x2ad7fe;return _0x13cb0a;})[_0x8eac('0x1f')](respondWithFilteredResult(_0x473f89,_0x3ddb8d))[_0x8eac('0x3f')](handleError(_0x473f89,null));};exports[_0x8eac('0x40')]=function(_0x10734e,_0x37db57){var _0x129fe6={'raw':!![],'where':{'id':_0x10734e[_0x8eac('0x41')]['id']}},_0x2b9b79={};_0x2b9b79[_0x8eac('0x2b')]=_['keys'](db[_0x8eac('0x26')][_0x8eac('0x27')]);_0x2b9b79[_0x8eac('0x2c')]=_[_0x8eac('0x2d')](_0x10734e[_0x8eac('0x2c')]);_0x2b9b79[_0x8eac('0x35')]=_['intersection'](_0x2b9b79[_0x8eac('0x2b')],_0x2b9b79['query']);_0x129fe6['attributes']=_[_0x8eac('0x2e')](_0x2b9b79[_0x8eac('0x2b')],qs[_0x8eac('0x30')](_0x10734e[_0x8eac('0x2c')][_0x8eac('0x30')]));_0x129fe6[_0x8eac('0x2f')]=_0x129fe6[_0x8eac('0x2f')][_0x8eac('0x31')]?_0x129fe6[_0x8eac('0x2f')]:_0x2b9b79[_0x8eac('0x2b')];if(_0x10734e['query']['includeAll']){_0x129fe6[_0x8eac('0x3d')]=[{'all':!![]}];}_0x129fe6=_[_0x8eac('0x38')]({},_0x129fe6,_0x10734e[_0x8eac('0x3a')]);return db[_0x8eac('0x26')][_0x8eac('0x42')](_0x129fe6)['then'](handleEntityNotFound(_0x37db57,null))['then'](respondWithResult(_0x37db57,null))[_0x8eac('0x3f')](handleError(_0x37db57,null));};exports[_0x8eac('0x43')]=function(_0x2b2263,_0x3f6985){return db[_0x8eac('0x26')][_0x8eac('0x43')](_0x2b2263[_0x8eac('0x44')],{})[_0x8eac('0x1f')](respondWithResult(_0x3f6985,0xc9))[_0x8eac('0x3f')](handleError(_0x3f6985,null));};exports[_0x8eac('0x1e')]=function(_0x1229d0,_0x490d56){if(_0x1229d0[_0x8eac('0x44')]['id']){delete _0x1229d0['body']['id'];}return db[_0x8eac('0x26')][_0x8eac('0x42')]({'where':{'id':_0x1229d0[_0x8eac('0x41')]['id']}})[_0x8eac('0x1f')](handleEntityNotFound(_0x490d56,null))['then'](saveUpdates(_0x1229d0[_0x8eac('0x44')],null))['then'](respondWithResult(_0x490d56,null))[_0x8eac('0x3f')](handleError(_0x490d56,null));};exports[_0x8eac('0x45')]=function(_0xc0d19a,_0x390634){return db[_0x8eac('0x26')][_0x8eac('0x42')]({'where':{'id':_0xc0d19a[_0x8eac('0x41')]['id']}})[_0x8eac('0x1f')](handleEntityNotFound(_0x390634,null))[_0x8eac('0x1f')](removeEntity(_0x390634,null))[_0x8eac('0x3f')](handleError(_0x390634,null));};
\ No newline at end of file
+var _0x3b5b=['options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','name','send','index','map','FaxApplication','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL'];(function(_0x373ac0,_0x5e956f){var _0x12ec77=function(_0x46857b){while(--_0x46857b){_0x373ac0['push'](_0x373ac0['shift']());}};_0x12ec77(++_0x5e956f);}(_0x3b5b,0x134));var _0xb3b5=function(_0x3920b4,_0x4cd07a){_0x3920b4=_0x3920b4-0x0;var _0x1ef94f=_0x3b5b[_0x3920b4];return _0x1ef94f;};'use strict';var emlformat=require(_0xb3b5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb3b5('0x1'));var jsonpatch=require(_0xb3b5('0x2'));var rp=require('request-promise');var moment=require(_0xb3b5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb3b5('0x4'));var util=require(_0xb3b5('0x5'));var path=require(_0xb3b5('0x6'));var sox=require(_0xb3b5('0x7'));var csv=require(_0xb3b5('0x8'));var ejs=require(_0xb3b5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb3b5('0xa'));var squel=require(_0xb3b5('0xb'));var crypto=require(_0xb3b5('0xc'));var jsforce=require(_0xb3b5('0xd'));var deskjs=require(_0xb3b5('0xe'));var toCsv=require(_0xb3b5('0x8'));var querystring=require(_0xb3b5('0xf'));var Papa=require(_0xb3b5('0x10'));var Redis=require(_0xb3b5('0x11'));var authService=require(_0xb3b5('0x12'));var qs=require(_0xb3b5('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb3b5('0x14'))(_0xb3b5('0x15'));var utils=require(_0xb3b5('0x16'));var config=require(_0xb3b5('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xb3b5('0x18'))['db'];function respondWithStatusCode(_0x184295,_0x7ded1f){_0x7ded1f=_0x7ded1f||0xcc;return function(_0x1a8cf9){if(_0x1a8cf9){return _0x184295[_0xb3b5('0x19')](_0x7ded1f);}return _0x184295[_0xb3b5('0x1a')](_0x7ded1f)[_0xb3b5('0x1b')]();};}function respondWithResult(_0x1fe710,_0x4b3603){_0x4b3603=_0x4b3603||0xc8;return function(_0x5e11ba){if(_0x5e11ba){return _0x1fe710[_0xb3b5('0x1a')](_0x4b3603)[_0xb3b5('0x1c')](_0x5e11ba);}};}function respondWithFilteredResult(_0x542af7,_0x4c4bcc){return function(_0x27bb86){if(_0x27bb86){var _0x1a5601=typeof _0x4c4bcc[_0xb3b5('0x1d')]===_0xb3b5('0x1e')&&typeof _0x4c4bcc[_0xb3b5('0x1f')]===_0xb3b5('0x1e');var _0x7adc9=_0x27bb86[_0xb3b5('0x20')];var _0x50c405=_0x1a5601?0x0:_0x4c4bcc[_0xb3b5('0x1d')];var _0x465fbe=_0x1a5601?_0x27bb86['count']:_0x4c4bcc['offset']+_0x4c4bcc['limit'];var _0x19451f;if(_0x465fbe>=_0x7adc9){_0x465fbe=_0x7adc9;_0x19451f=0xc8;}else{_0x19451f=0xce;}_0x542af7[_0xb3b5('0x1a')](_0x19451f);return _0x542af7[_0xb3b5('0x21')]('Content-Range',_0x50c405+'-'+_0x465fbe+'/'+_0x7adc9)[_0xb3b5('0x1c')](_0x27bb86);}return null;};}function patchUpdates(_0x113063){return function(_0xf6b2f7){try{jsonpatch['apply'](_0xf6b2f7,_0x113063,!![]);}catch(_0x442897){return BPromise[_0xb3b5('0x22')](_0x442897);}return _0xf6b2f7[_0xb3b5('0x23')]();};}function saveUpdates(_0x7f29f2,_0x19d384){return function(_0x47d641){if(_0x47d641){return _0x47d641[_0xb3b5('0x24')](_0x7f29f2)[_0xb3b5('0x25')](function(_0x4bd8b1){return _0x4bd8b1;});}return null;};}function removeEntity(_0xfe43a5,_0xb43692){return function(_0x2c2f78){if(_0x2c2f78){return _0x2c2f78[_0xb3b5('0x26')]()[_0xb3b5('0x25')](function(){_0xfe43a5[_0xb3b5('0x1a')](0xcc)[_0xb3b5('0x1b')]();});}};}function handleEntityNotFound(_0x7e24a8,_0x1bd910){return function(_0x1655d4){if(!_0x1655d4){_0x7e24a8[_0xb3b5('0x19')](0x194);}return _0x1655d4;};}function handleError(_0x322764,_0x22440a){_0x22440a=_0x22440a||0x1f4;return function(_0x5f562a){logger['error'](_0x5f562a['stack']);if(_0x5f562a[_0xb3b5('0x27')]){delete _0x5f562a['name'];}_0x322764['status'](_0x22440a)[_0xb3b5('0x28')](_0x5f562a);};}exports[_0xb3b5('0x29')]=function(_0x33abee,_0x5816b0){var _0x399725={},_0x5d3bf9={},_0x3f3397={'count':0x0,'rows':[]};var _0x23c654=_[_0xb3b5('0x2a')](db[_0xb3b5('0x2b')][_0xb3b5('0x2c')],function(_0x439a2d){return{'name':_0x439a2d['fieldName'],'type':_0x439a2d[_0xb3b5('0x2d')][_0xb3b5('0x2e')]};});_0x5d3bf9[_0xb3b5('0x2f')]=_[_0xb3b5('0x2a')](_0x23c654,'name');_0x5d3bf9[_0xb3b5('0x30')]=_[_0xb3b5('0x31')](_0x33abee[_0xb3b5('0x30')]);_0x5d3bf9[_0xb3b5('0x32')]=_[_0xb3b5('0x33')](_0x5d3bf9[_0xb3b5('0x2f')],_0x5d3bf9['query']);_0x399725[_0xb3b5('0x34')]=_['intersection'](_0x5d3bf9[_0xb3b5('0x2f')],qs[_0xb3b5('0x35')](_0x33abee[_0xb3b5('0x30')][_0xb3b5('0x35')]));_0x399725['attributes']=_0x399725[_0xb3b5('0x34')]['length']?_0x399725[_0xb3b5('0x34')]:_0x5d3bf9[_0xb3b5('0x2f')];if(!_0x33abee[_0xb3b5('0x30')][_0xb3b5('0x36')](_0xb3b5('0x37'))){_0x399725[_0xb3b5('0x1f')]=qs[_0xb3b5('0x1f')](_0x33abee[_0xb3b5('0x30')][_0xb3b5('0x1f')]);_0x399725[_0xb3b5('0x1d')]=qs['offset'](_0x33abee['query'][_0xb3b5('0x1d')]);}_0x399725[_0xb3b5('0x38')]=qs[_0xb3b5('0x39')](_0x33abee[_0xb3b5('0x30')][_0xb3b5('0x39')]);_0x399725[_0xb3b5('0x3a')]=qs['filters'](_['pick'](_0x33abee['query'],_0x5d3bf9[_0xb3b5('0x32')]),_0x23c654);if(_0x33abee[_0xb3b5('0x30')][_0xb3b5('0x3b')]){_0x399725[_0xb3b5('0x3a')]=_[_0xb3b5('0x3c')](_0x399725[_0xb3b5('0x3a')],{'$or':_[_0xb3b5('0x2a')](_0x23c654,function(_0x2c9d1a){if(_0x2c9d1a[_0xb3b5('0x2d')]!==_0xb3b5('0x3d')){var _0x31a4d1={};_0x31a4d1[_0x2c9d1a['name']]={'$like':'%'+_0x33abee[_0xb3b5('0x30')]['filter']+'%'};return _0x31a4d1;}})});}_0x399725=_[_0xb3b5('0x3c')]({},_0x399725,_0x33abee[_0xb3b5('0x3e')]);var _0x2ef164={'where':_0x399725[_0xb3b5('0x3a')]};return db[_0xb3b5('0x2b')][_0xb3b5('0x20')](_0x2ef164)[_0xb3b5('0x25')](function(_0x8a9df1){_0x3f3397['count']=_0x8a9df1;if(_0x33abee[_0xb3b5('0x30')][_0xb3b5('0x3f')]){_0x399725[_0xb3b5('0x40')]=[{'all':!![]}];}return db[_0xb3b5('0x2b')][_0xb3b5('0x41')](_0x399725);})[_0xb3b5('0x25')](function(_0xb1619f){_0x3f3397[_0xb3b5('0x42')]=_0xb1619f;return _0x3f3397;})['then'](respondWithFilteredResult(_0x5816b0,_0x399725))[_0xb3b5('0x43')](handleError(_0x5816b0,null));};exports[_0xb3b5('0x44')]=function(_0x3e58b1,_0x1d624e){var _0x1d4f51={'raw':!![],'where':{'id':_0x3e58b1[_0xb3b5('0x45')]['id']}},_0x5af318={};_0x5af318[_0xb3b5('0x2f')]=_[_0xb3b5('0x31')](db[_0xb3b5('0x2b')]['rawAttributes']);_0x5af318['query']=_[_0xb3b5('0x31')](_0x3e58b1[_0xb3b5('0x30')]);_0x5af318[_0xb3b5('0x32')]=_[_0xb3b5('0x33')](_0x5af318[_0xb3b5('0x2f')],_0x5af318[_0xb3b5('0x30')]);_0x1d4f51[_0xb3b5('0x34')]=_[_0xb3b5('0x33')](_0x5af318[_0xb3b5('0x2f')],qs['fields'](_0x3e58b1[_0xb3b5('0x30')]['fields']));_0x1d4f51[_0xb3b5('0x34')]=_0x1d4f51['attributes'][_0xb3b5('0x46')]?_0x1d4f51[_0xb3b5('0x34')]:_0x5af318[_0xb3b5('0x2f')];if(_0x3e58b1[_0xb3b5('0x30')][_0xb3b5('0x3f')]){_0x1d4f51[_0xb3b5('0x40')]=[{'all':!![]}];}_0x1d4f51=_[_0xb3b5('0x3c')]({},_0x1d4f51,_0x3e58b1['options']);return db[_0xb3b5('0x2b')][_0xb3b5('0x47')](_0x1d4f51)[_0xb3b5('0x25')](handleEntityNotFound(_0x1d624e,null))[_0xb3b5('0x25')](respondWithResult(_0x1d624e,null))[_0xb3b5('0x43')](handleError(_0x1d624e,null));};exports[_0xb3b5('0x48')]=function(_0x193d2c,_0x29a202){return db[_0xb3b5('0x2b')][_0xb3b5('0x48')](_0x193d2c['body'],{})[_0xb3b5('0x25')](respondWithResult(_0x29a202,0xc9))[_0xb3b5('0x43')](handleError(_0x29a202,null));};exports[_0xb3b5('0x24')]=function(_0x3c08b0,_0x222896){if(_0x3c08b0[_0xb3b5('0x49')]['id']){delete _0x3c08b0[_0xb3b5('0x49')]['id'];}return db['FaxApplication']['find']({'where':{'id':_0x3c08b0[_0xb3b5('0x45')]['id']}})[_0xb3b5('0x25')](handleEntityNotFound(_0x222896,null))[_0xb3b5('0x25')](saveUpdates(_0x3c08b0[_0xb3b5('0x49')],null))['then'](respondWithResult(_0x222896,null))['catch'](handleError(_0x222896,null));};exports[_0xb3b5('0x26')]=function(_0x4bda83,_0x2b2121){return db[_0xb3b5('0x2b')][_0xb3b5('0x47')]({'where':{'id':_0x4bda83['params']['id']}})[_0xb3b5('0x25')](handleEntityNotFound(_0x2b2121,null))[_0xb3b5('0x25')](removeEntity(_0x2b2121,null))['catch'](handleError(_0x2b2121,null));};
\ No newline at end of file
index d802729..ae7a7cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb299=['path','rimraf','../../config/environment','./faxApplication.attributes','exports','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x380158,_0x599bd1){var _0x39ac68=function(_0x294e50){while(--_0x294e50){_0x380158['push'](_0x380158['shift']());}};_0x39ac68(++_0x599bd1);}(_0xb299,0x121));var _0x9b29=function(_0x4e7669,_0x2101fe){_0x4e7669=_0x4e7669-0x0;var _0x2f4922=_0xb299[_0x4e7669];return _0x2f4922;};'use strict';var _=require('lodash');var util=require(_0x9b29('0x0'));var logger=require(_0x9b29('0x1'))('api');var moment=require(_0x9b29('0x2'));var BPromise=require(_0x9b29('0x3'));var rp=require(_0x9b29('0x4'));var fs=require('fs');var path=require(_0x9b29('0x5'));var rimraf=require(_0x9b29('0x6'));var config=require(_0x9b29('0x7'));var attributes=require(_0x9b29('0x8'));module[_0x9b29('0x9')]=function(_0x128c3a,_0x373e0a){return _0x128c3a['define'](_0x9b29('0xa'),attributes,{'tableName':_0x9b29('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9b29('0xc'),'collate':_0x9b29('0xd')});};
\ No newline at end of file
+var _0x9fc6=['request-promise','path','rimraf','./faxApplication.attributes','exports','define','FaxApplication','utf8mb4','lodash','../../config/logger','api','moment','bluebird'];(function(_0xc04a7b,_0x21952a){var _0xa0a816=function(_0x498d26){while(--_0x498d26){_0xc04a7b['push'](_0xc04a7b['shift']());}};_0xa0a816(++_0x21952a);}(_0x9fc6,0x174));var _0x69fc=function(_0xf51c06,_0x388e5b){_0xf51c06=_0xf51c06-0x0;var _0x1d5420=_0x9fc6[_0xf51c06];return _0x1d5420;};'use strict';var _=require(_0x69fc('0x0'));var util=require('util');var logger=require(_0x69fc('0x1'))(_0x69fc('0x2'));var moment=require(_0x69fc('0x3'));var BPromise=require(_0x69fc('0x4'));var rp=require(_0x69fc('0x5'));var fs=require('fs');var path=require(_0x69fc('0x6'));var rimraf=require(_0x69fc('0x7'));var config=require('../../config/environment');var attributes=require(_0x69fc('0x8'));module[_0x69fc('0x9')]=function(_0x2954b3,_0x5df23c){return _0x2954b3[_0x69fc('0xa')](_0x69fc('0xb'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x69fc('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index a52cf1d..7d01bcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aed=['request\x20sent','error','message','catch','UpdateFaxApplication','FaxApplication','update','options','raw','limit','then','info','debug','stringify','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','FaxApplication,\x20%s,\x20%s'];(function(_0x346f6a,_0x3449d){var _0x3b9b63=function(_0x5be50b){while(--_0x5be50b){_0x346f6a['push'](_0x346f6a['shift']());}};_0x3b9b63(++_0x3449d);}(_0x3aed,0x1ce));var _0xd3ae=function(_0x5eaa0b,_0x433b2f){_0x5eaa0b=_0x5eaa0b-0x0;var _0x28b295=_0x3aed[_0x5eaa0b];return _0x28b295;};'use strict';var _=require(_0xd3ae('0x0'));var util=require('util');var moment=require(_0xd3ae('0x1'));var BPromise=require(_0xd3ae('0x2'));var rs=require(_0xd3ae('0x3'));var fs=require('fs');var Redis=require(_0xd3ae('0x4'));var db=require(_0xd3ae('0x5'))['db'];var utils=require(_0xd3ae('0x6'));var logger=require('../../config/logger')(_0xd3ae('0x7'));var config=require(_0xd3ae('0x8'));var jayson=require(_0xd3ae('0x9'));var client=jayson[_0xd3ae('0xa')][_0xd3ae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x53214c,_0xf63696,_0x4f142f){return new BPromise(function(_0x5cdb43,_0x5587a0){return client[_0xd3ae('0xc')](_0x53214c,_0x4f142f)['then'](function(_0x36d42d){logger['info'](_0xd3ae('0xd'),_0xf63696,'request\x20sent');logger['debug']('FaxApplication,\x20%s,\x20%s,\x20%s',_0xf63696,_0xd3ae('0xe'),JSON['stringify'](_0x36d42d));if(_0x36d42d[_0xd3ae('0xf')]){if(_0x36d42d[_0xd3ae('0xf')]['code']===0x1f4){logger['error'](_0xd3ae('0xd'),_0xf63696,_0x36d42d['error'][_0xd3ae('0x10')]);return _0x5587a0(_0x36d42d[_0xd3ae('0xf')][_0xd3ae('0x10')]);}logger[_0xd3ae('0xf')]('FaxApplication,\x20%s,\x20%s',_0xf63696,_0x36d42d[_0xd3ae('0xf')]['message']);return _0x5cdb43(_0x36d42d[_0xd3ae('0xf')][_0xd3ae('0x10')]);}else{logger['info'](_0xd3ae('0xd'),_0xf63696,_0xd3ae('0xe'));_0x5cdb43(_0x36d42d['result'][_0xd3ae('0x10')]);}})[_0xd3ae('0x11')](function(_0x2f3b22){logger[_0xd3ae('0xf')](_0xd3ae('0xd'),_0xf63696,_0x2f3b22);_0x5587a0(_0x2f3b22);});});}exports[_0xd3ae('0x12')]=function(_0x11ecfd){var _0x1d41c9=this;return new Promise(function(_0x46b647,_0x522e32){return db[_0xd3ae('0x13')][_0xd3ae('0x14')](_0x11ecfd['body'],{'raw':_0x11ecfd[_0xd3ae('0x15')]?_0x11ecfd['options'][_0xd3ae('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11ecfd[_0xd3ae('0x15')]?_0x11ecfd[_0xd3ae('0x15')]['where']||null:null,'attributes':_0x11ecfd[_0xd3ae('0x15')]?_0x11ecfd[_0xd3ae('0x15')]['attributes']||null:null,'limit':_0x11ecfd[_0xd3ae('0x15')]?_0x11ecfd[_0xd3ae('0x15')][_0xd3ae('0x17')]||null:null})[_0xd3ae('0x18')](function(_0x26ad5e){logger[_0xd3ae('0x19')](_0xd3ae('0x12'),_0x11ecfd);logger[_0xd3ae('0x1a')]('UpdateFaxApplication',_0x11ecfd,JSON[_0xd3ae('0x1b')](_0x26ad5e));_0x46b647(_0x26ad5e);})['catch'](function(_0x55e97e){logger[_0xd3ae('0xf')](_0xd3ae('0x12'),_0x55e97e['message'],_0x11ecfd);_0x522e32(_0x1d41c9[_0xd3ae('0xf')](0x1f4,_0x55e97e['message']));});});};
\ No newline at end of file
+var _0x0fa4=['rpc','../../config/environment','jayson/promise','client','http','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateFaxApplication','update','body','options','where','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4204a7,_0x1ecea7){var _0x3c8beb=function(_0x54d7e1){while(--_0x54d7e1){_0x4204a7['push'](_0x4204a7['shift']());}};_0x3c8beb(++_0x1ecea7);}(_0x0fa4,0x93));var _0x40fa=function(_0x5bfc6c,_0x48b093){_0x5bfc6c=_0x5bfc6c-0x0;var _0x19c568=_0x0fa4[_0x5bfc6c];return _0x19c568;};'use strict';var _=require(_0x40fa('0x0'));var util=require(_0x40fa('0x1'));var moment=require(_0x40fa('0x2'));var BPromise=require('bluebird');var rs=require(_0x40fa('0x3'));var fs=require('fs');var Redis=require(_0x40fa('0x4'));var db=require(_0x40fa('0x5'))['db'];var utils=require(_0x40fa('0x6'));var logger=require(_0x40fa('0x7'))(_0x40fa('0x8'));var config=require(_0x40fa('0x9'));var jayson=require(_0x40fa('0xa'));var client=jayson[_0x40fa('0xb')][_0x40fa('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x476f17,_0x184b83,_0x23fc11){return new BPromise(function(_0x16791b,_0x8022ac){return client['request'](_0x476f17,_0x23fc11)[_0x40fa('0xd')](function(_0x391cfb){logger[_0x40fa('0xe')](_0x40fa('0xf'),_0x184b83,_0x40fa('0x10'));logger[_0x40fa('0x11')](_0x40fa('0x12'),_0x184b83,_0x40fa('0x10'),JSON[_0x40fa('0x13')](_0x391cfb));if(_0x391cfb[_0x40fa('0x14')]){if(_0x391cfb[_0x40fa('0x14')][_0x40fa('0x15')]===0x1f4){logger[_0x40fa('0x14')](_0x40fa('0xf'),_0x184b83,_0x391cfb[_0x40fa('0x14')][_0x40fa('0x16')]);return _0x8022ac(_0x391cfb[_0x40fa('0x14')][_0x40fa('0x16')]);}logger['error'](_0x40fa('0xf'),_0x184b83,_0x391cfb[_0x40fa('0x14')][_0x40fa('0x16')]);return _0x16791b(_0x391cfb['error']['message']);}else{logger[_0x40fa('0xe')](_0x40fa('0xf'),_0x184b83,'request\x20sent');_0x16791b(_0x391cfb[_0x40fa('0x17')][_0x40fa('0x16')]);}})[_0x40fa('0x18')](function(_0x42ce1b){logger[_0x40fa('0x14')](_0x40fa('0xf'),_0x184b83,_0x42ce1b);_0x8022ac(_0x42ce1b);});});}exports[_0x40fa('0x19')]=function(_0x3336e2){var _0x306c7c=this;return new Promise(function(_0x54d9e3,_0x1e989b){return db['FaxApplication'][_0x40fa('0x1a')](_0x3336e2[_0x40fa('0x1b')],{'raw':_0x3336e2['options']?_0x3336e2[_0x40fa('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3336e2['options']?_0x3336e2[_0x40fa('0x1c')][_0x40fa('0x1d')]||null:null,'attributes':_0x3336e2[_0x40fa('0x1c')]?_0x3336e2[_0x40fa('0x1c')]['attributes']||null:null,'limit':_0x3336e2[_0x40fa('0x1c')]?_0x3336e2['options'][_0x40fa('0x1e')]||null:null})[_0x40fa('0xd')](function(_0x5237bd){logger[_0x40fa('0xe')]('UpdateFaxApplication',_0x3336e2);logger[_0x40fa('0x11')](_0x40fa('0x19'),_0x3336e2,JSON['stringify'](_0x5237bd));_0x54d9e3(_0x5237bd);})['catch'](function(_0x5270f7){logger[_0x40fa('0x14')]('UpdateFaxApplication',_0x5270f7[_0x40fa('0x16')],_0x3336e2);_0x1e989b(_0x306c7c[_0x40fa('0x14')](0x1f4,_0x5270f7['message']));});});};
\ No newline at end of file
index 1a579d1..8e18be4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['show','create','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated'];(function(_0x531cb8,_0x8ef36f){var _0x5cf297=function(_0x45acb4){while(--_0x45acb4){_0x531cb8['push'](_0x531cb8['shift']());}};_0x5cf297(++_0x8ef36f);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x5cab28,_0x307622){_0x5cab28=_0x5cab28-0x0;var _0xa3554d=_0x4cf8[_0x5cab28];return _0xa3554d;};'use strict';var multer=require(_0x84cf('0x0'));var util=require(_0x84cf('0x1'));var path=require(_0x84cf('0x2'));var timeout=require(_0x84cf('0x3'));var express=require(_0x84cf('0x4'));var router=express[_0x84cf('0x5')]();var fs_extra=require(_0x84cf('0x6'));var auth=require(_0x84cf('0x7'));var interaction=require(_0x84cf('0x8'));var config=require(_0x84cf('0x9'));var controller=require(_0x84cf('0xa'));router[_0x84cf('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x84cf('0xb')]('/:id',auth[_0x84cf('0xc')](),controller[_0x84cf('0xd')]);router['post']('/',auth[_0x84cf('0xc')](),controller[_0x84cf('0xe')]);router['put'](_0x84cf('0xf'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x10')]);router[_0x84cf('0x11')]('/:id',auth[_0x84cf('0xc')](),controller[_0x84cf('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xea28=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','destroy','exports','multer'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xea28,0x13a));var _0x8ea2=function(_0x39514d,_0x45e37d){_0x39514d=_0x39514d-0x0;var _0x44c8c7=_0xea28[_0x39514d];return _0x44c8c7;};'use strict';var multer=require(_0x8ea2('0x0'));var util=require(_0x8ea2('0x1'));var path=require(_0x8ea2('0x2'));var timeout=require(_0x8ea2('0x3'));var express=require(_0x8ea2('0x4'));var router=express[_0x8ea2('0x5')]();var fs_extra=require(_0x8ea2('0x6'));var auth=require(_0x8ea2('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x8ea2('0x8'));var controller=require(_0x8ea2('0x9'));router[_0x8ea2('0xa')]('/',auth['isAuthenticated'](),controller[_0x8ea2('0xb')]);router[_0x8ea2('0xa')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0xe')]);router[_0x8ea2('0xf')]('/',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x10')]);router[_0x8ea2('0x11')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x12')]);router['delete']('/:id',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x13')]);module[_0x8ea2('0x14')]=router;
\ No newline at end of file
index c17aa5e..85106e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16ab=['ENUM','out','BOOLEAN','DATE','STRING'];(function(_0x3517d3,_0x4a32bf){var _0x29daa6=function(_0x6a55b5){while(--_0x6a55b5){_0x3517d3['push'](_0x3517d3['shift']());}};_0x29daa6(++_0x4a32bf);}(_0x16ab,0x9d));var _0xb16a=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x16ab[_0x29d94e];return _0x106237;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize[_0xb16a('0x0')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xb16a('0x1')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xb16a('0x2')]},'note':{'type':Sequelize[_0xb16a('0x2')]},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize[_0xb16a('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xb16a('0x3')]('in',_0xb16a('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xb16a('0x1')]},'lastMsgDirection':{'type':Sequelize[_0xb16a('0x3')]('in',_0xb16a('0x4')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x1e3b=['exports','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x3ebe28,_0xa6f5a6){var _0x4446f8=function(_0xabb29a){while(--_0xabb29a){_0x3ebe28['push'](_0x3ebe28['shift']());}};_0x4446f8(++_0xa6f5a6);}(_0x1e3b,0xc0));var _0xb1e3=function(_0x48fa9b,_0x3a90b5){_0x48fa9b=_0x48fa9b-0x0;var _0xb7030c=_0x1e3b[_0x48fa9b];return _0xb7030c;};'use strict';var Sequelize=require('sequelize');module[_0xb1e3('0x0')]={'closed':{'type':Sequelize[_0xb1e3('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xb1e3('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xb1e3('0x3')]},'thirdDisposition':{'type':Sequelize[_0xb1e3('0x3')]},'note':{'type':Sequelize[_0xb1e3('0x3')]},'read1stAt':{'type':Sequelize[_0xb1e3('0x2')]},'fax':{'type':Sequelize[_0xb1e3('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xb1e3('0x4')]('in',_0xb1e3('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xb1e3('0x4')]('in',_0xb1e3('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index b57a715..05f1557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4fa=['users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','search','parseSearch','sqlOperator','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)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','type','body','some','compact','isEmpty','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','i.id','order','contactName','DESC','t.id\x20IN\x20?','FaxAccountId','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','catch','includeAll','include','options','create','params','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','hasOwnProperty','pick','$gte','split','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','setTags','spread','emit','faxInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','format','transcript-%d-%s.zip','Attachment','Messages','mkdirSync','basename','existsSync','createWriteStream','log','unlinkSync','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','sendStatus','status','end','offset','limit','undefined','count','set','json','reject','save','update','then','destroy','error','stack','name','send','Users','map','push','TagIds','FaxInteraction','rawAttributes','fieldName','query','keys','filters','intersection','model','fields','attributes','length','nolimit','sort','where','select','field','color','from','u.id','u.fullname','ui.FaxInteractionId','left_join'];(function(_0x219dd1,_0x4de49b){var _0x390089=function(_0x3cb3b2){while(--_0x3cb3b2){_0x219dd1['push'](_0x219dd1['shift']());}};_0x390089(++_0x4de49b);}(_0xf4fa,0x94));var _0xaf4f=function(_0x2519aa,_0x3e9958){_0x2519aa=_0x2519aa-0x0;var _0x3a27dd=_0xf4fa[_0x2519aa];return _0x3a27dd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaf4f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaf4f('0x1'));var rp=require(_0xaf4f('0x2'));var moment=require(_0xaf4f('0x3'));var BPromise=require(_0xaf4f('0x4'));var Mustache=require(_0xaf4f('0x5'));var util=require('util');var path=require(_0xaf4f('0x6'));var sox=require(_0xaf4f('0x7'));var csv=require('to-csv');var ejs=require(_0xaf4f('0x8'));var fs=require('fs');var fs_extra=require(_0xaf4f('0x9'));var _=require(_0xaf4f('0xa'));var squel=require(_0xaf4f('0xb'));var crypto=require(_0xaf4f('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xaf4f('0xd'));var toCsv=require(_0xaf4f('0xe'));var querystring=require(_0xaf4f('0xf'));var Papa=require(_0xaf4f('0x10'));var Redis=require('ioredis');var authService=require(_0xaf4f('0x11'));var qs=require(_0xaf4f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaf4f('0x13'));var logger=require('../../config/logger')(_0xaf4f('0x14'));var utils=require('../../config/utils');var config=require(_0xaf4f('0x15'));var licenseUtil=require(_0xaf4f('0x16'));var db=require(_0xaf4f('0x17'))['db'];config[_0xaf4f('0x18')]=_[_0xaf4f('0x19')](config[_0xaf4f('0x18')],{'host':_0xaf4f('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaf4f('0x18')]));require('./faxInteraction.socket')[_0xaf4f('0x1b')](socket);function respondWithStatusCode(_0x460a30,_0x45ed04){_0x45ed04=_0x45ed04||0xcc;return function(_0x561487){if(_0x561487){return _0x460a30[_0xaf4f('0x1c')](_0x45ed04);}return _0x460a30[_0xaf4f('0x1d')](_0x45ed04)[_0xaf4f('0x1e')]();};}function respondWithResult(_0x1aa5bd,_0x3aa76c){_0x3aa76c=_0x3aa76c||0xc8;return function(_0x5730f5){if(_0x5730f5){return _0x1aa5bd['status'](_0x3aa76c)['json'](_0x5730f5);}};}function respondWithFilteredResult(_0x58f0cb,_0x438579){return function(_0x12ddc3){if(_0x12ddc3){var _0x212e21=typeof _0x438579[_0xaf4f('0x1f')]==='undefined'&&typeof _0x438579[_0xaf4f('0x20')]===_0xaf4f('0x21');var _0x4b5856=_0x12ddc3[_0xaf4f('0x22')];var _0x25f840=_0x212e21?0x0:_0x438579[_0xaf4f('0x1f')];var _0x3d8113=_0x212e21?_0x12ddc3[_0xaf4f('0x22')]:_0x438579[_0xaf4f('0x1f')]+_0x438579[_0xaf4f('0x20')];var _0x46b1f6;if(_0x3d8113>=_0x4b5856){_0x3d8113=_0x4b5856;_0x46b1f6=0xc8;}else{_0x46b1f6=0xce;}_0x58f0cb['status'](_0x46b1f6);return _0x58f0cb[_0xaf4f('0x23')]('Content-Range',_0x25f840+'-'+_0x3d8113+'/'+_0x4b5856)[_0xaf4f('0x24')](_0x12ddc3);}return null;};}function patchUpdates(_0x13ee77){return function(_0x412288){try{jsonpatch['apply'](_0x412288,_0x13ee77,!![]);}catch(_0x582e90){return BPromise[_0xaf4f('0x25')](_0x582e90);}return _0x412288[_0xaf4f('0x26')]();};}function saveUpdates(_0x18db6b,_0x4b4c00){return function(_0x39c08f){if(_0x39c08f){return _0x39c08f[_0xaf4f('0x27')](_0x18db6b)[_0xaf4f('0x28')](function(_0x55618f){return _0x55618f;});}return null;};}function removeEntity(_0x2c34df,_0x32b385){return function(_0x4cce3f){if(_0x4cce3f){return _0x4cce3f[_0xaf4f('0x29')]()[_0xaf4f('0x28')](function(){_0x2c34df[_0xaf4f('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x211596,_0x395fc0){return function(_0x2df72d){if(!_0x2df72d){_0x211596[_0xaf4f('0x1c')](0x194);}return _0x2df72d;};}function handleError(_0x4e5f01,_0x56cb91){_0x56cb91=_0x56cb91||0x1f4;return function(_0x561039){logger[_0xaf4f('0x2a')](_0x561039[_0xaf4f('0x2b')]);if(_0x561039[_0xaf4f('0x2c')]){delete _0x561039['name'];}_0x4e5f01[_0xaf4f('0x1d')](_0x56cb91)[_0xaf4f('0x2d')](_0x561039);};}function getInteractionUsers(_0x37b539,_0x3e96a4){return new BPromise(function(_0x4142c9,_0x42860d){try{if(_0x3e96a4[_0x37b539['id']]){_0x37b539[_0xaf4f('0x2e')]=_[_0xaf4f('0x2f')](_0x3e96a4[_0x37b539['id']],function(_0x163ed1){return{'id':_0x163ed1['id'],'fullname':_0x163ed1['fullname']};});}}catch(_0x539b98){_0x42860d(_0x539b98);}_0x4142c9(_0x37b539);});}function getInteractionTags(_0x37d933,_0x18270a){return new BPromise(function(_0x4bf907,_0x27787d){try{if(_0x37d933['TagIds']){_0x37d933['Tags']=[];_0x37d933['TagIds']['split'](',')['forEach'](function(_0x5eb2ec){_0x37d933['Tags'][_0xaf4f('0x30')](_0x18270a[_0x5eb2ec]);});}delete _0x37d933[_0xaf4f('0x31')];}catch(_0x45bba1){_0x27787d(_0x45bba1);}_0x4bf907(_0x37d933);});}function updateFaxInteraction(_0xaffb5c,_0x3f64b9,_0x206334){return new BPromise(function(_0x2c7112,_0x12ae3e){return getInteractionUsers(_0xaffb5c,_0x206334)[_0xaf4f('0x28')](function(_0x112871){return getInteractionTags(_0x112871,_0x3f64b9);})[_0xaf4f('0x28')](function(_0x268428){_0x2c7112(_0x268428);})['catch'](function(_0xf1afa9){_0x12ae3e(_0xf1afa9);});});}exports['index']=function(_0xb59e5d,_0x259389){var _0x1a37dd={},_0x1ff1cd={},_0x44d5ec={'count':0x0,'rows':[]};var _0x23b50c=_[_0xaf4f('0x2f')](db[_0xaf4f('0x32')][_0xaf4f('0x33')],function(_0x330582){return{'name':_0x330582[_0xaf4f('0x34')],'type':_0x330582['type']['key']};});_0x1ff1cd['model']=_[_0xaf4f('0x2f')](_0x23b50c,_0xaf4f('0x2c'));_0x1ff1cd[_0xaf4f('0x35')]=_[_0xaf4f('0x36')](_0xb59e5d[_0xaf4f('0x35')]);_0x1ff1cd[_0xaf4f('0x37')]=_[_0xaf4f('0x38')](_0x1ff1cd[_0xaf4f('0x39')],_0x1ff1cd[_0xaf4f('0x35')]);_0x1a37dd['attributes']=_[_0xaf4f('0x38')](_0x1ff1cd[_0xaf4f('0x39')],qs[_0xaf4f('0x3a')](_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x3a')]));_0x1a37dd[_0xaf4f('0x3b')]=_0x1a37dd['attributes'][_0xaf4f('0x3c')]?_0x1a37dd[_0xaf4f('0x3b')]:_0x1ff1cd[_0xaf4f('0x39')];if(!_0xb59e5d[_0xaf4f('0x35')]['hasOwnProperty'](_0xaf4f('0x3d'))){_0x1a37dd['limit']=qs[_0xaf4f('0x20')](_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x20')]);_0x1a37dd[_0xaf4f('0x1f')]=qs[_0xaf4f('0x1f')](_0xb59e5d['query'][_0xaf4f('0x1f')]);}_0x1a37dd['order']=qs[_0xaf4f('0x3e')](_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x3e')]);_0x1a37dd[_0xaf4f('0x3f')]=qs[_0xaf4f('0x37')](_['pick'](_0xb59e5d[_0xaf4f('0x35')],_0x1ff1cd['filters']),_0x23b50c);var _0x5bb023=[];var _0x33812b=squel[_0xaf4f('0x40')]()[_0xaf4f('0x41')]('id')[_0xaf4f('0x41')]('name')[_0xaf4f('0x41')](_0xaf4f('0x42'))[_0xaf4f('0x43')]('tools_tags');var _0x5a4142=squel[_0xaf4f('0x40')]()[_0xaf4f('0x41')](_0xaf4f('0x44'))[_0xaf4f('0x41')](_0xaf4f('0x45'))['field'](_0xaf4f('0x46'))[_0xaf4f('0x43')]('user_has_fax_interactions','ui')[_0xaf4f('0x47')](_0xaf4f('0x48'),'u',_0xaf4f('0x49'));var _0x3b7964=squel[_0xaf4f('0x40')]()[_0xaf4f('0x43')]('fax_interactions','i')[_0xaf4f('0x47')](_0xaf4f('0x4a'),'c',_0xaf4f('0x4b'))[_0xaf4f('0x47')](_0xaf4f('0x48'),'o','o.id\x20=\x20i.UserId')['left_join'](_0xaf4f('0x4c'),'a',_0xaf4f('0x4d'))['left_join'](_0xaf4f('0x4e'),'me',_0xaf4f('0x4f'))[_0xaf4f('0x47')](_0xaf4f('0x50'),'it',_0xaf4f('0x51'))['left_join']('tools_tags','t',_0xaf4f('0x52'));var _0x30de7f=squel['expr']();var _0x4dd17a=[];var _0x50818c=squel['expr']();var _0x2854b5;if(_0xb59e5d['query'][_0xaf4f('0x53')]){_0x2854b5=as[_0xaf4f('0x54')](_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x53')]);var _0x4fc3da=_0x2854b5[_0xaf4f('0x55')];for(var _0x566f3b=0x0;_0x566f3b<_0x2854b5[_0xaf4f('0x56')][_0xaf4f('0x3c')];_0x566f3b++){var _0x1cdb30=_0x2854b5[_0xaf4f('0x56')][_0x566f3b];var _0x2dc9d0='i';var _0x41f0a5=_[_0xaf4f('0x57')](_0x23b50c,[_0xaf4f('0x2c'),_0x1cdb30[_0xaf4f('0x41')]]);if(!_0x41f0a5){switch(_0x1cdb30[_0xaf4f('0x41')]){case _0xaf4f('0x58'):if(_0x1cdb30[_0xaf4f('0x59')]==0x1){_0x3b7964['having']('`'+_0x1cdb30['field']+_0xaf4f('0x5a'));}else{_0x3b7964[_0xaf4f('0x5b')]('`'+_0x1cdb30['field']+_0xaf4f('0x5c'));}break;case _0xaf4f('0x5d'):if(_0x1cdb30[_0xaf4f('0x5e')]===_0xaf4f('0x5f')){if(_0x1cdb30[_0xaf4f('0x59')]['split']('\x20')['length']>0x1){_0x30de7f[_0x4fc3da](_0xaf4f('0x60'),qs['getFullTextValue'](_0x1cdb30[_0xaf4f('0x59')]),null);}else{var _0x5d5a47='%'+_0x1cdb30['value']+'%';_0x30de7f[_0x4fc3da](_0xaf4f('0x61'),_0x5d5a47,_0x5d5a47,_0x5d5a47);}}else{_0x41f0a5=_[_0xaf4f('0x57')](_0x23b50c,[_0xaf4f('0x2c'),_0xaf4f('0x62')]);_0x1cdb30[_0xaf4f('0x41')]=_0xaf4f('0x62');_0x3e4052=as['buildExpression'](_0x2dc9d0,_0x41f0a5['type'],_0x1cdb30);_0x30de7f[_0x4fc3da](_0x3e4052[_0xaf4f('0x63')],_0x3e4052['value'][_0xaf4f('0x64')],_0x3e4052[_0xaf4f('0x59')][_0xaf4f('0x1e')]);}break;case _0xaf4f('0x65'):var _0x1b778e=_0x1cdb30[_0xaf4f('0x59')]['split'](',')[_0xaf4f('0x2f')](function(_0x4681d5){return Number(_0x4681d5);});_0x1b778e[_0xaf4f('0x66')](function(_0x1eeaa0){_0x50818c['or'](_0xaf4f('0x67'),'%,'+_0x1eeaa0+',%');});_0x4dd17a=_[_0xaf4f('0x68')](_0x4dd17a,_0x1b778e);break;case _0xaf4f('0x69'):if(_0x1cdb30[_0xaf4f('0x5e')]===_0xaf4f('0x5f')){_0x30de7f[_0x4fc3da](_0xaf4f('0x6a'),'%'+_0x1cdb30[_0xaf4f('0x59')]+'%',null);}else{_0x41f0a5=_['find'](_0x23b50c,['name',_0xaf4f('0x6b')]);_0x1cdb30['field']=_0xaf4f('0x6b');_0x3e4052=as[_0xaf4f('0x6c')](_0x2dc9d0,_0x41f0a5[_0xaf4f('0x6d')],_0x1cdb30);_0x30de7f[_0x4fc3da](_0x3e4052[_0xaf4f('0x63')],_0x3e4052[_0xaf4f('0x59')][_0xaf4f('0x64')],_0x3e4052[_0xaf4f('0x59')][_0xaf4f('0x1e')]);}break;case _0xaf4f('0x6e'):_0x3e4052=as[_0xaf4f('0x6c')]('me',null,_0x1cdb30);_0x30de7f[_0x4fc3da](_0x3e4052[_0xaf4f('0x63')],_0x3e4052[_0xaf4f('0x59')][_0xaf4f('0x64')],_0x3e4052['value']['end']);break;}}else{var _0x3e4052=as['buildExpression'](_0x2dc9d0,_0x41f0a5[_0xaf4f('0x6d')],_0x1cdb30);_0x30de7f[_0x4fc3da](_0x3e4052['text'],_0x3e4052['value'][_0xaf4f('0x64')],_0x3e4052[_0xaf4f('0x59')][_0xaf4f('0x1e')]);}}}else{var _0x5781ff=_(_0xb59e5d[_0xaf4f('0x35')])['keys']()[_0xaf4f('0x2f')](function(_0x1bf2ed){return _[_0xaf4f('0x6f')](_0x23b50c,[_0xaf4f('0x2c'),_0x1bf2ed])?_0x1bf2ed:undefined;})[_0xaf4f('0x70')]()[_0xaf4f('0x59')]();if(!_[_0xaf4f('0x71')](_0x5781ff)){_0x5781ff[_0xaf4f('0x66')](function(_0x58f9f6){if(_0x58f9f6==='FaxAccountId'){_0x3b7964[_0xaf4f('0x3f')](_0xaf4f('0x72'),[][_0xaf4f('0x73')](_0xb59e5d[_0xaf4f('0x35')][_0x58f9f6]));}else if(_0x58f9f6===_0xaf4f('0x74')){var _0x53f487=JSON['parse'](_0xb59e5d['query'][_0x58f9f6])['$gte'];var _0x521119=JSON[_0xaf4f('0x75')](_0xb59e5d[_0xaf4f('0x35')][_0x58f9f6])[_0xaf4f('0x76')];_0x3b7964[_0xaf4f('0x3f')](_0xaf4f('0x77'),_0x53f487,_0x521119);}else{if(_0xb59e5d[_0xaf4f('0x35')][_0x58f9f6]===_0xaf4f('0x78')){_0x3b7964[_0xaf4f('0x3f')]('i.'+_0x58f9f6+_0xaf4f('0x79'));}else{_0x3b7964['where']('i.'+_0x58f9f6+_0xaf4f('0x7a'),_0xb59e5d[_0xaf4f('0x35')][_0x58f9f6]);}}});}if(_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x7b')]){if(_0xb59e5d[_0xaf4f('0x35')]['read']==0x1){_0x3b7964['having'](_0xaf4f('0x7c'));}else{_0x3b7964[_0xaf4f('0x5b')](_0xaf4f('0x7d'));}}if(_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x7e')]){_0x4dd17a=_[_0xaf4f('0x7f')](_0xb59e5d['query'][_0xaf4f('0x7e')])?_0xb59e5d['query'][_0xaf4f('0x7e')]:new Array(_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x7e')]);_0x4dd17a[_0xaf4f('0x66')](function(_0x108b32){_0x50818c['or'](_0xaf4f('0x67'),'%,'+_0x108b32+',%');});}if(_0xb59e5d['query'][_0xaf4f('0x80')]){var _0x5de302=_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x80')][_0xaf4f('0x81')]('\x5c','\x5c\x5c')[_0xaf4f('0x81')](/'/g,'\x27\x27');if(qs[_0xaf4f('0x82')](_0x5de302)){_0x30de7f['or'](_0xaf4f('0x83'),_0x5de302+'%')['or'](_0xaf4f('0x84'),_0x5de302+'%');}_0x30de7f['or'](_0xaf4f('0x85'),_0x5de302+'%');}}_0x3b7964[_0xaf4f('0x3f')](_0x30de7f);_0x3b7964[_0xaf4f('0x86')]('i.id');var _0xf5504d={'type':db[_0xaf4f('0x87')][_0xaf4f('0x88')][_0xaf4f('0x89')],'raw':!![]};var _0x446c69=_0x3b7964[_0xaf4f('0x8a')]();_0x446c69[_0xaf4f('0x41')](_0xaf4f('0x8b'));_0x446c69['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xaf4f('0x58'));if(_0x1a37dd[_0xaf4f('0x8c')]){_0x1a37dd['order'][_0xaf4f('0x66')](function(_0xf08db7){var _0x435c8e=_0xf08db7[0x0]===_0xaf4f('0x8d')?_0xf08db7[0x0]:'i.'+_0xf08db7[0x0];_0x3b7964['order'](_0x435c8e,_0xf08db7[0x1]===_0xaf4f('0x8e')?![]:!![]);});}if(!_[_0xaf4f('0x71')](_0x4dd17a)){_0x3b7964[_0xaf4f('0x5b')](_0x50818c);_0x446c69[_0xaf4f('0x3f')](_0xaf4f('0x8f'),_0x4dd17a);}BPromise['resolve']()['then'](function(){if(!_0x2854b5){if(_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x90')])return;_0x446c69[_0xaf4f('0x3f')](_0xaf4f('0x91'));_0x3b7964[_0xaf4f('0x3f')](_0xaf4f('0x91'));return;}if(_0xb59e5d[_0xaf4f('0x92')][_0xaf4f('0x93')]!==_0xaf4f('0x94'))return;return _0xb59e5d[_0xaf4f('0x92')][_0xaf4f('0x95')]({'attributes':['id'],'raw':!![]})[_0xaf4f('0x28')](function(_0x2709c1){if(_[_0xaf4f('0x71')](_0x2709c1)){_0x446c69[_0xaf4f('0x3f')](_0xaf4f('0x96'));_0x3b7964[_0xaf4f('0x3f')]('i.FaxAccountId\x20IS\x20NULL');}else{_0x446c69['where'](_0xaf4f('0x72'),_[_0xaf4f('0x2f')](_0x2709c1,'id'));_0x3b7964[_0xaf4f('0x3f')](_0xaf4f('0x72'),_['map'](_0x2709c1,'id'));}});})[_0xaf4f('0x28')](function(){if(_0xb59e5d['user'][_0xaf4f('0x93')]===_0xaf4f('0x94')&&!_0x2854b5&&!_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x90')])return[];return db[_0xaf4f('0x97')][_0xaf4f('0x35')](_0x446c69[_0xaf4f('0x98')](),_0xf5504d);})['then'](function(_0x2bce1b){_0x44d5ec[_0xaf4f('0x22')]=_0x2bce1b['length'];if(_0x44d5ec[_0xaf4f('0x22')]===0x0)return[];return db[_0xaf4f('0x97')][_0xaf4f('0x35')](_0x33812b[_0xaf4f('0x98')](),_0xf5504d)[_0xaf4f('0x28')](function(_0x4b8fdd){_0x5bb023=_[_0xaf4f('0x99')](_0x4b8fdd,'id');_0xf5504d=_[_0xaf4f('0x9a')](_0xf5504d,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x3a')]){_0x1a37dd[_0xaf4f('0x3b')][_0xaf4f('0x66')](function(_0x37bf27){_0x3b7964[_0xaf4f('0x41')]('i.'+_0x37bf27);});}else{_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0x9b'),_0xaf4f('0x58'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0x9c'),'Account.key');_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0x9d'),'Account.mandatoryDisposition');_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0x9e'),_0xaf4f('0x8d'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0x9f'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0xa0'),_0xaf4f('0xa1'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0xa2'),_0xaf4f('0xa3'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0xa4'),'Contact.email');_0x3b7964[_0xaf4f('0x41')]('c.phone',_0xaf4f('0xa5'));_0x3b7964['field'](_0xaf4f('0xa6'),_0xaf4f('0xa7'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0xa8'),_0xaf4f('0xa9'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0xaa'),_0xaf4f('0xab'));_0x3b7964[_0xaf4f('0x41')]('o.internal','Owner.internal');_0x3b7964[_0xaf4f('0x41')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xaf4f('0x31'));}if(_0x1a37dd[_0xaf4f('0x20')])_0x3b7964[_0xaf4f('0x20')](_0x1a37dd[_0xaf4f('0x20')]);if(_0x1a37dd[_0xaf4f('0x1f')])_0x3b7964[_0xaf4f('0x1f')](_0x1a37dd[_0xaf4f('0x1f')]);return db[_0xaf4f('0x97')][_0xaf4f('0x35')](_0x3b7964[_0xaf4f('0x98')](),_0xf5504d);})['then'](function(_0x4215fd){if(_0x4215fd['length']>0x0)_0x5a4142['where'](_0xaf4f('0xac'),_[_0xaf4f('0x2f')](_0x4215fd,'id'));return db[_0xaf4f('0x97')]['query'](_0x5a4142['toString'](),_0xf5504d)[_0xaf4f('0x28')](function(_0x115a6b){var _0x38ae87=_[_0xaf4f('0xad')](_0x115a6b,_0xaf4f('0xae'));var _0x22a422=[];_0x4215fd[_0xaf4f('0x66')](function(_0x457638){_0x22a422[_0xaf4f('0x30')](updateFaxInteraction(_0x457638,_0x5bb023,_0x38ae87));});return BPromise[_0xaf4f('0xaf')](_0x22a422);});});})['then'](function(_0x2b9cc9){_0x44d5ec['rows']=_0x2b9cc9;return _0x44d5ec;})['then'](respondWithFilteredResult(_0x259389,_0x1a37dd))[_0xaf4f('0xb0')](handleError(_0x259389,null));};exports['show']=function(_0xa4de71,_0x58dcdd){var _0xef4089={'raw':![],'where':{'id':_0xa4de71['params']['id']}},_0x1a7411={};_0x1a7411[_0xaf4f('0x39')]=_[_0xaf4f('0x36')](db[_0xaf4f('0x32')][_0xaf4f('0x33')]);_0x1a7411[_0xaf4f('0x35')]=_[_0xaf4f('0x36')](_0xa4de71[_0xaf4f('0x35')]);_0x1a7411[_0xaf4f('0x37')]=_[_0xaf4f('0x38')](_0x1a7411[_0xaf4f('0x39')],_0x1a7411[_0xaf4f('0x35')]);_0xef4089[_0xaf4f('0x3b')]=_[_0xaf4f('0x38')](_0x1a7411[_0xaf4f('0x39')],qs[_0xaf4f('0x3a')](_0xa4de71[_0xaf4f('0x35')][_0xaf4f('0x3a')]));_0xef4089[_0xaf4f('0x3b')]=_0xef4089[_0xaf4f('0x3b')][_0xaf4f('0x3c')]?_0xef4089[_0xaf4f('0x3b')]:_0x1a7411[_0xaf4f('0x39')];if(_0xa4de71['query'][_0xaf4f('0xb1')]){_0xef4089[_0xaf4f('0xb2')]=[{'all':!![]}];}_0xef4089=_['merge']({},_0xef4089,_0xa4de71[_0xaf4f('0xb3')]);return db['FaxInteraction']['find'](_0xef4089)[_0xaf4f('0x28')](handleEntityNotFound(_0x58dcdd,null))[_0xaf4f('0x28')](respondWithResult(_0x58dcdd,null))[_0xaf4f('0xb0')](handleError(_0x58dcdd,null));};exports['create']=function(_0x12b27e,_0x17bc08){return db[_0xaf4f('0x32')][_0xaf4f('0xb4')](_0x12b27e[_0xaf4f('0x6e')],{})[_0xaf4f('0x28')](respondWithResult(_0x17bc08,0xc9))['catch'](handleError(_0x17bc08,null));};exports[_0xaf4f('0x27')]=function(_0x19a9d2,_0x4b60fe){if(_0x19a9d2[_0xaf4f('0x6e')]['id']){delete _0x19a9d2[_0xaf4f('0x6e')]['id'];}return db[_0xaf4f('0x32')]['find']({'where':{'id':_0x19a9d2[_0xaf4f('0xb5')]['id']}})[_0xaf4f('0x28')](handleEntityNotFound(_0x4b60fe,null))[_0xaf4f('0x28')](saveUpdates(_0x19a9d2[_0xaf4f('0x6e')],null))['then'](respondWithResult(_0x4b60fe,null))[_0xaf4f('0xb0')](handleError(_0x4b60fe,null));};exports[_0xaf4f('0x29')]=function(_0x1a21e6,_0x149aae){return db[_0xaf4f('0x32')]['find']({'where':{'id':_0x1a21e6['params']['id']}})['then'](handleEntityNotFound(_0x149aae,null))['then'](removeEntity(_0x149aae,null))[_0xaf4f('0xb0')](handleError(_0x149aae,null));};exports[_0xaf4f('0xb6')]=function(_0x2dcc0,_0x318f0f){return db[_0xaf4f('0x32')][_0xaf4f('0xb6')]()[_0xaf4f('0x28')](respondWithResult(_0x318f0f,null))[_0xaf4f('0xb0')](handleError(_0x318f0f,null));};exports[_0xaf4f('0xb7')]=function(_0x54d84e,_0x42b4a6,_0x207a60){return db[_0xaf4f('0xb8')][_0xaf4f('0x57')]({'where':{'id':_0x54d84e[_0xaf4f('0xb5')]['id']}})[_0xaf4f('0x28')](handleEntityNotFound(_0x42b4a6,null))[_0xaf4f('0x28')](function(_0x3354ff){if(_0x3354ff){return _0x3354ff[_0xaf4f('0xb7')](_0x54d84e[_0xaf4f('0x6e')][_0xaf4f('0xb9')],_[_0xaf4f('0xba')](_0x54d84e['body'],[_0xaf4f('0xb9'),'id'])||{});}})[_0xaf4f('0x28')](respondWithResult(_0x42b4a6,null))[_0xaf4f('0xb0')](handleError(_0x42b4a6,null));};exports[_0xaf4f('0xbb')]=function(_0x685213,_0x1e5426,_0x481d16){var _0x3cfc5d={'raw':![],'where':{}};var _0x5040bc={};var _0xbb1c9b={'count':0x0,'rows':[]};return db[_0xaf4f('0x32')][_0xaf4f('0xbc')]({'where':{'id':_0x685213[_0xaf4f('0xb5')]['id']}})[_0xaf4f('0x28')](handleEntityNotFound(_0x1e5426,null))[_0xaf4f('0x28')](function(_0x2d8709){if(_0x2d8709){_0x5040bc[_0xaf4f('0x39')]=_[_0xaf4f('0x36')](db[_0xaf4f('0xb8')]['rawAttributes']);_0x5040bc[_0xaf4f('0x35')]=_[_0xaf4f('0x36')](_0x685213['query']);_0x5040bc[_0xaf4f('0x37')]=_[_0xaf4f('0x38')](_0x5040bc[_0xaf4f('0x39')],_0x5040bc['query']);_0x3cfc5d[_0xaf4f('0x3b')]=_[_0xaf4f('0x38')](_0x5040bc[_0xaf4f('0x39')],qs['fields'](_0x685213['query']['fields']));_0x3cfc5d['attributes']=_0x3cfc5d['attributes'][_0xaf4f('0x3c')]?_0x3cfc5d['attributes']:_0x5040bc['model'];if(!_0x685213[_0xaf4f('0x35')][_0xaf4f('0xbd')](_0xaf4f('0x3d'))){_0x3cfc5d[_0xaf4f('0x20')]=qs[_0xaf4f('0x20')](_0x685213['query']['limit']);_0x3cfc5d['offset']=qs[_0xaf4f('0x1f')](_0x685213[_0xaf4f('0x35')][_0xaf4f('0x1f')]);}_0x3cfc5d[_0xaf4f('0x8c')]=qs[_0xaf4f('0x3e')](_0x685213[_0xaf4f('0x35')][_0xaf4f('0x3e')]);_0x3cfc5d[_0xaf4f('0x3f')]=qs['filters'](_[_0xaf4f('0xbe')](_0x685213[_0xaf4f('0x35')],_0x5040bc['filters']));_0x3cfc5d[_0xaf4f('0x3f')]['FaxInteractionId']=_0x2d8709['id'];if(_0x685213[_0xaf4f('0x35')][_0xaf4f('0x80')]){_0x3cfc5d[_0xaf4f('0x3f')]=_[_0xaf4f('0x9a')](_0x3cfc5d[_0xaf4f('0x3f')],{'$or':_[_0xaf4f('0x2f')](_0x3cfc5d[_0xaf4f('0x3b')],function(_0x1455a2){var _0x28ee4c={};_0x28ee4c[_0x1455a2]={'$like':'%'+_0x685213[_0xaf4f('0x35')]['filter']+'%'};return _0x28ee4c;})});}if(_0x685213[_0xaf4f('0x35')]['$gte']){var _0x3325e1=_0x685213[_0xaf4f('0x35')][_0xaf4f('0xbf')][_0xaf4f('0xc0')](',');var _0x522d8a={};_0x522d8a[_0x3325e1[0x0]]={'$gte':moment(_0x3325e1[0x1])['format'](_0xaf4f('0xc1'))};_0x3cfc5d['where']=_[_0xaf4f('0x9a')](_0x3cfc5d[_0xaf4f('0x3f')],_0x522d8a);}_0x3cfc5d=_['merge']({},_0x3cfc5d,_0x685213[_0xaf4f('0xb3')]);return db[_0xaf4f('0xb8')][_0xaf4f('0x22')]({'where':_0x3cfc5d[_0xaf4f('0x3f')]})[_0xaf4f('0x28')](function(_0xd8bbf9){_0xbb1c9b[_0xaf4f('0x22')]=_0xd8bbf9;if(_0x685213['query'][_0xaf4f('0xb1')]){_0x3cfc5d[_0xaf4f('0xb2')]=[{'all':!![]}];}return db[_0xaf4f('0xb8')][_0xaf4f('0xc2')](_0x3cfc5d);})['then'](function(_0x49eb09){_0xbb1c9b[_0xaf4f('0xc3')]=_0x49eb09;return _0xbb1c9b;});}})[_0xaf4f('0x28')](respondWithFilteredResult(_0x1e5426,_0x3cfc5d))[_0xaf4f('0xb0')](handleError(_0x1e5426,null));};exports[_0xaf4f('0xc4')]=function(_0xa52812,_0x38654c,_0x37d2c1){return db[_0xaf4f('0x32')][_0xaf4f('0x57')]({'where':{'id':_0xa52812['params']['id']}})[_0xaf4f('0x28')](handleEntityNotFound(_0x38654c,null))[_0xaf4f('0x28')](function(_0x20194d){if(_0x20194d){return _0x20194d[_0xaf4f('0xc5')](_0xa52812[_0xaf4f('0x6e')][_0xaf4f('0xb9')],_[_0xaf4f('0xba')](_0xa52812[_0xaf4f('0x6e')],['ids','id'])||{})[_0xaf4f('0xc6')](function(){return db[_0xaf4f('0x65')]['findAll']({'attributes':['id','name',_0xaf4f('0x42')],'where':{'id':_0xa52812[_0xaf4f('0x6e')][_0xaf4f('0xb9')]}});})[_0xaf4f('0x28')](function(_0x1b045f){socket[_0xaf4f('0xc7')](_0xaf4f('0xc8'),{'id':Number(_0xa52812[_0xaf4f('0xb5')]['id']),'tags':_0x1b045f||[]});return{'id':Number(_0xa52812['params']['id']),'tags':_0x1b045f||[]};});}})[_0xaf4f('0x28')](respondWithResult(_0x38654c,null))['catch'](handleError(_0x38654c,null));};exports[_0xaf4f('0xc9')]=function(_0x4847cc,_0x31403f,_0x5f49ca){return db[_0xaf4f('0x32')][_0xaf4f('0x57')]({'where':{'id':_0x4847cc[_0xaf4f('0xb5')]['id']}})[_0xaf4f('0x28')](handleEntityNotFound(_0x31403f,null))[_0xaf4f('0x28')](function(_0x5052cf){if(_0x5052cf){return _0x5052cf[_0xaf4f('0xc9')](_0x4847cc['query']['ids']);}})[_0xaf4f('0x28')](respondWithStatusCode(_0x31403f,null))[_0xaf4f('0xb0')](handleError(_0x31403f,null));};exports[_0xaf4f('0xca')]=function(_0x311d74,_0x568e1f){var _0x3e1454=moment()[_0xaf4f('0xcb')]()[_0xaf4f('0x98')]();var _0x2d98a7=path[_0xaf4f('0xcc')](config[_0xaf4f('0xcd')],_0xaf4f('0xce'),_0xaf4f('0xcf'),_0xaf4f('0xd0'));var _0x4e6def=path[_0xaf4f('0xcc')](config[_0xaf4f('0xcd')],_0xaf4f('0xce'),'files',_0xaf4f('0xd1'));var _0xf31adf=path[_0xaf4f('0xcc')](_0x2d98a7,_0x3e1454);var _0x25972b=util[_0xaf4f('0xd2')](_0xaf4f('0xd3'),_0x311d74[_0xaf4f('0xb5')]['id'],_0x3e1454);var _0xd2b5a9=path['join'](_0x2d98a7,_0x25972b);var _0x5a3c84=[];_0x5a3c84['push']({'model':db[_0xaf4f('0xd4')],'as':_0xaf4f('0xd4'),'raw':!![]});var _0x429059=[{'model':db['FaxMessage'],'as':_0xaf4f('0xd5'),'attributes':['id',_0xaf4f('0x6e'),'createdAt'],'include':_0x5a3c84}];return db[_0xaf4f('0x32')][_0xaf4f('0x57')]({'where':{'id':_0x311d74[_0xaf4f('0xb5')]['id']},'include':_0x429059})['then'](handleEntityNotFound(_0x568e1f,null))[_0xaf4f('0x28')](function(_0x314d15){if(_0x314d15&&_0x314d15[_0xaf4f('0xd5')]){var _0x18a888=_0x314d15['get']({'plain':!![]});fs[_0xaf4f('0xd6')](_0xf31adf);for(var _0x37bc3c=0x0;_0x37bc3c<_0x18a888[_0xaf4f('0xd5')][_0xaf4f('0x3c')];_0x37bc3c++){var _0x18ec3b=_0x18a888[_0xaf4f('0xd5')][_0x37bc3c][_0xaf4f('0xd4')];if(_0x18ec3b){var _0x3d10f8=path[_0xaf4f('0xcc')](_0x4e6def,_0x18ec3b[_0xaf4f('0xd7')]);if(fs[_0xaf4f('0xd8')](_0x3d10f8)){fs['createReadStream'](_0x3d10f8)['pipe'](fs[_0xaf4f('0xd9')](path[_0xaf4f('0xcc')](_0xf31adf,_0x18ec3b['basename'])));}}}return BPromise['resolve']()[_0xaf4f('0x28')](function(){return new BPromise(function(_0x282d1d,_0x176221){zipdir(_0xf31adf,{'saveTo':_0xd2b5a9},function(_0x49e1f2,_0x58c02f){if(_0x49e1f2)return _0x176221(_0x49e1f2);return _0x282d1d(_0x58c02f);});})['then'](function(){return new BPromise(function(_0x546eb2,_0x3b7f46){rimraf(_0xf31adf,function(_0x4b3430){if(_0x4b3430)_0x3b7f46(_0x4b3430);return _0x546eb2();});});})[_0xaf4f('0x28')](function(){return _0x568e1f[_0xaf4f('0xca')](_0xd2b5a9,_0x25972b,function(_0x57631a){if(_0x57631a){console[_0xaf4f('0xda')]('err',_0x57631a);}else{fs[_0xaf4f('0xdb')](_0xd2b5a9);}});});});}else{return _0x568e1f[_0xaf4f('0x1c')](0xc8);}})[_0xaf4f('0xb0')](handleError(_0x568e1f,null));};
\ No newline at end of file
+var _0xb965=['update','then','destroy','end','error','name','Users','map','fullname','Tags','split','TagIds','catch','index','rawAttributes','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','select','field','color','from','tools_tags','u.id','ui.FaxInteractionId','user_has_fax_interactions','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','left_join','fax_accounts','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','operator','$substring','getFullTextValue','find','ContactId','buildExpression','text','start','Tag','forEach','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','some','compact','FaxAccountId','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','clone','DESC','isEmpty','t.id\x20IN\x20?','i.FaxAccountId\x20IS\x20NOT\x20NULL','role','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','user','agent','toString','count','sequelize','keyBy','merge','FaxInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','contactName','i.*','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','show','params','create','describe','addMessage','FaxMessage','omit','getMessages','findOne','nolimit','$gte','format','options','includeAll','include','findAll','rows','setTags','ids','spread','emit','faxInteractionTags:save','removeTags','download','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','push','Attachment','Messages','get','mkdirSync','basename','existsSync','createReadStream','createWriteStream','resolve','err','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','json','limit','undefined','offset','set','Content-Range','apply'];(function(_0x2bafbe,_0x4de99d){var _0x17aa7e=function(_0x57c2e5){while(--_0x57c2e5){_0x2bafbe['push'](_0x2bafbe['shift']());}};_0x17aa7e(++_0x4de99d);}(_0xb965,0xb5));var _0x5b96=function(_0x433650,_0x2780ed){_0x433650=_0x433650-0x0;var _0x13ce1d=_0xb965[_0x433650];return _0x13ce1d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5b96('0x0'));var zipdir=require(_0x5b96('0x1'));var jsonpatch=require(_0x5b96('0x2'));var rp=require(_0x5b96('0x3'));var moment=require(_0x5b96('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x5b96('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x5b96('0x6'));var ejs=require(_0x5b96('0x7'));var fs=require('fs');var fs_extra=require(_0x5b96('0x8'));var _=require(_0x5b96('0x9'));var squel=require(_0x5b96('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5b96('0xb'));var toCsv=require(_0x5b96('0x6'));var querystring=require(_0x5b96('0xc'));var Papa=require(_0x5b96('0xd'));var Redis=require(_0x5b96('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5b96('0xf'));var hardwareService=require(_0x5b96('0x10'));var logger=require(_0x5b96('0x11'))('api');var utils=require(_0x5b96('0x12'));var config=require(_0x5b96('0x13'));var licenseUtil=require(_0x5b96('0x14'));var db=require('../../mysqldb')['db'];config[_0x5b96('0x15')]=_['defaults'](config[_0x5b96('0x15')],{'host':_0x5b96('0x16'),'port':0x18eb});var socket=require(_0x5b96('0x17'))(new Redis(config['redis']));require(_0x5b96('0x18'))[_0x5b96('0x19')](socket);function respondWithStatusCode(_0x5b18f6,_0x457aa4){_0x457aa4=_0x457aa4||0xcc;return function(_0x5bfd46){if(_0x5bfd46){return _0x5b18f6[_0x5b96('0x1a')](_0x457aa4);}return _0x5b18f6[_0x5b96('0x1b')](_0x457aa4)['end']();};}function respondWithResult(_0x2edf60,_0x460769){_0x460769=_0x460769||0xc8;return function(_0x2f4c18){if(_0x2f4c18){return _0x2edf60['status'](_0x460769)[_0x5b96('0x1c')](_0x2f4c18);}};}function respondWithFilteredResult(_0x3a1d25,_0x23ded0){return function(_0x4512d2){if(_0x4512d2){var _0x1bed78=typeof _0x23ded0['offset']==='undefined'&&typeof _0x23ded0[_0x5b96('0x1d')]===_0x5b96('0x1e');var _0x3fa525=_0x4512d2['count'];var _0x44773b=_0x1bed78?0x0:_0x23ded0[_0x5b96('0x1f')];var _0x3d4904=_0x1bed78?_0x4512d2['count']:_0x23ded0[_0x5b96('0x1f')]+_0x23ded0[_0x5b96('0x1d')];var _0x2ee067;if(_0x3d4904>=_0x3fa525){_0x3d4904=_0x3fa525;_0x2ee067=0xc8;}else{_0x2ee067=0xce;}_0x3a1d25[_0x5b96('0x1b')](_0x2ee067);return _0x3a1d25[_0x5b96('0x20')](_0x5b96('0x21'),_0x44773b+'-'+_0x3d4904+'/'+_0x3fa525)[_0x5b96('0x1c')](_0x4512d2);}return null;};}function patchUpdates(_0x32e908){return function(_0x51ab24){try{jsonpatch[_0x5b96('0x22')](_0x51ab24,_0x32e908,!![]);}catch(_0xeeb049){return BPromise['reject'](_0xeeb049);}return _0x51ab24['save']();};}function saveUpdates(_0x248c1e,_0x3d87d){return function(_0x5e697a){if(_0x5e697a){return _0x5e697a[_0x5b96('0x23')](_0x248c1e)[_0x5b96('0x24')](function(_0xac25bc){return _0xac25bc;});}return null;};}function removeEntity(_0x315933,_0x1825e4){return function(_0x52eb4f){if(_0x52eb4f){return _0x52eb4f[_0x5b96('0x25')]()[_0x5b96('0x24')](function(){_0x315933['status'](0xcc)[_0x5b96('0x26')]();});}};}function handleEntityNotFound(_0x37b44a,_0x374940){return function(_0x7ab10a){if(!_0x7ab10a){_0x37b44a[_0x5b96('0x1a')](0x194);}return _0x7ab10a;};}function handleError(_0x12f7a5,_0x1e2b24){_0x1e2b24=_0x1e2b24||0x1f4;return function(_0x1c9a18){logger[_0x5b96('0x27')](_0x1c9a18['stack']);if(_0x1c9a18['name']){delete _0x1c9a18[_0x5b96('0x28')];}_0x12f7a5[_0x5b96('0x1b')](_0x1e2b24)['send'](_0x1c9a18);};}function getInteractionUsers(_0x5305ab,_0x47ada8){return new BPromise(function(_0x496f31,_0x1c1de4){try{if(_0x47ada8[_0x5305ab['id']]){_0x5305ab[_0x5b96('0x29')]=_[_0x5b96('0x2a')](_0x47ada8[_0x5305ab['id']],function(_0x2798f7){return{'id':_0x2798f7['id'],'fullname':_0x2798f7[_0x5b96('0x2b')]};});}}catch(_0x3ada7f){_0x1c1de4(_0x3ada7f);}_0x496f31(_0x5305ab);});}function getInteractionTags(_0x3da465,_0x496dad){return new BPromise(function(_0x4b7cff,_0x3a2dc5){try{if(_0x3da465['TagIds']){_0x3da465[_0x5b96('0x2c')]=[];_0x3da465['TagIds'][_0x5b96('0x2d')](',')['forEach'](function(_0x41ef92){_0x3da465[_0x5b96('0x2c')]['push'](_0x496dad[_0x41ef92]);});}delete _0x3da465[_0x5b96('0x2e')];}catch(_0x78dd52){_0x3a2dc5(_0x78dd52);}_0x4b7cff(_0x3da465);});}function updateFaxInteraction(_0x17b4c7,_0x391881,_0x33dd81){return new BPromise(function(_0x508fc2,_0x55e3dc){return getInteractionUsers(_0x17b4c7,_0x33dd81)[_0x5b96('0x24')](function(_0x47c4c9){return getInteractionTags(_0x47c4c9,_0x391881);})['then'](function(_0x356304){_0x508fc2(_0x356304);})[_0x5b96('0x2f')](function(_0x54df46){_0x55e3dc(_0x54df46);});});}exports[_0x5b96('0x30')]=function(_0x2c14fd,_0x527078){var _0x223c05={},_0x1b073c={},_0xe16d31={'count':0x0,'rows':[]};var _0x133213=_[_0x5b96('0x2a')](db['FaxInteraction'][_0x5b96('0x31')],function(_0x20d802){return{'name':_0x20d802['fieldName'],'type':_0x20d802[_0x5b96('0x32')][_0x5b96('0x33')]};});_0x1b073c[_0x5b96('0x34')]=_[_0x5b96('0x2a')](_0x133213,'name');_0x1b073c['query']=_[_0x5b96('0x35')](_0x2c14fd['query']);_0x1b073c[_0x5b96('0x36')]=_[_0x5b96('0x37')](_0x1b073c[_0x5b96('0x34')],_0x1b073c[_0x5b96('0x38')]);_0x223c05[_0x5b96('0x39')]=_[_0x5b96('0x37')](_0x1b073c['model'],qs[_0x5b96('0x3a')](_0x2c14fd['query'][_0x5b96('0x3a')]));_0x223c05[_0x5b96('0x39')]=_0x223c05[_0x5b96('0x39')][_0x5b96('0x3b')]?_0x223c05[_0x5b96('0x39')]:_0x1b073c[_0x5b96('0x34')];if(!_0x2c14fd[_0x5b96('0x38')][_0x5b96('0x3c')]('nolimit')){_0x223c05[_0x5b96('0x1d')]=qs[_0x5b96('0x1d')](_0x2c14fd[_0x5b96('0x38')][_0x5b96('0x1d')]);_0x223c05[_0x5b96('0x1f')]=qs[_0x5b96('0x1f')](_0x2c14fd['query'][_0x5b96('0x1f')]);}_0x223c05[_0x5b96('0x3d')]=qs[_0x5b96('0x3e')](_0x2c14fd[_0x5b96('0x38')][_0x5b96('0x3e')]);_0x223c05[_0x5b96('0x3f')]=qs[_0x5b96('0x36')](_[_0x5b96('0x40')](_0x2c14fd['query'],_0x1b073c[_0x5b96('0x36')]),_0x133213);var _0x2a3930=[];var _0x369907=squel[_0x5b96('0x41')]()['field']('id')[_0x5b96('0x42')]('name')[_0x5b96('0x42')](_0x5b96('0x43'))[_0x5b96('0x44')](_0x5b96('0x45'));var _0x3274ba=squel[_0x5b96('0x41')]()[_0x5b96('0x42')](_0x5b96('0x46'))[_0x5b96('0x42')]('u.fullname')[_0x5b96('0x42')](_0x5b96('0x47'))[_0x5b96('0x44')](_0x5b96('0x48'),'ui')['left_join'](_0x5b96('0x49'),'u',_0x5b96('0x4a'));var _0x3518fc=squel[_0x5b96('0x41')]()['from'](_0x5b96('0x4b'),'i')['left_join'](_0x5b96('0x4c'),'c',_0x5b96('0x4d'))['left_join'](_0x5b96('0x49'),'o',_0x5b96('0x4e'))[_0x5b96('0x4f')](_0x5b96('0x50'),'a','a.id\x20=\x20i.FaxAccountId')[_0x5b96('0x4f')](_0x5b96('0x51'),'me',_0x5b96('0x52'))[_0x5b96('0x4f')](_0x5b96('0x53'),'it',_0x5b96('0x54'))[_0x5b96('0x4f')](_0x5b96('0x45'),'t',_0x5b96('0x55'));var _0x15b667=squel[_0x5b96('0x56')]();var _0x1fe0f9=[];var _0x4ea9c6=squel['expr']();var _0x444e11;if(_0x2c14fd[_0x5b96('0x38')][_0x5b96('0x57')]){_0x444e11=as['parseSearch'](_0x2c14fd[_0x5b96('0x38')][_0x5b96('0x57')]);var _0x28ef21=_0x444e11[_0x5b96('0x58')];for(var _0x4b0360=0x0;_0x4b0360<_0x444e11[_0x5b96('0x59')]['length'];_0x4b0360++){var _0x44cda4=_0x444e11[_0x5b96('0x59')][_0x4b0360];var _0x29a7fa='i';var _0x175c3c=_['find'](_0x133213,['name',_0x44cda4[_0x5b96('0x42')]]);if(!_0x175c3c){switch(_0x44cda4[_0x5b96('0x42')]){case _0x5b96('0x5a'):if(_0x44cda4[_0x5b96('0x5b')]==0x1){_0x3518fc[_0x5b96('0x5c')]('`'+_0x44cda4['field']+_0x5b96('0x5d'));}else{_0x3518fc[_0x5b96('0x5c')]('`'+_0x44cda4[_0x5b96('0x42')]+_0x5b96('0x5e'));}break;case'Contact':if(_0x44cda4[_0x5b96('0x5f')]===_0x5b96('0x60')){if(_0x44cda4[_0x5b96('0x5b')][_0x5b96('0x2d')]('\x20')['length']>0x1){_0x15b667[_0x28ef21]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x5b96('0x61')](_0x44cda4[_0x5b96('0x5b')]),null);}else{var _0x3e723e='%'+_0x44cda4[_0x5b96('0x5b')]+'%';_0x15b667[_0x28ef21]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x3e723e,_0x3e723e,_0x3e723e);}}else{_0x175c3c=_[_0x5b96('0x62')](_0x133213,[_0x5b96('0x28'),_0x5b96('0x63')]);_0x44cda4[_0x5b96('0x42')]=_0x5b96('0x63');_0x1e792a=as[_0x5b96('0x64')](_0x29a7fa,_0x175c3c[_0x5b96('0x32')],_0x44cda4);_0x15b667[_0x28ef21](_0x1e792a[_0x5b96('0x65')],_0x1e792a[_0x5b96('0x5b')][_0x5b96('0x66')],_0x1e792a[_0x5b96('0x5b')]['end']);}break;case _0x5b96('0x67'):var _0x110836=_0x44cda4[_0x5b96('0x5b')]['split'](',')[_0x5b96('0x2a')](function(_0xc6c48a){return Number(_0xc6c48a);});_0x110836[_0x5b96('0x68')](function(_0x41c5aa){_0x4ea9c6['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x41c5aa+',%');});_0x1fe0f9=_[_0x5b96('0x69')](_0x1fe0f9,_0x110836);break;case _0x5b96('0x6a'):if(_0x44cda4[_0x5b96('0x5f')]==='$substring'){_0x15b667[_0x28ef21](_0x5b96('0x6b'),'%'+_0x44cda4[_0x5b96('0x5b')]+'%',null);}else{_0x175c3c=_[_0x5b96('0x62')](_0x133213,[_0x5b96('0x28'),_0x5b96('0x6c')]);_0x44cda4[_0x5b96('0x42')]='UserId';_0x1e792a=as[_0x5b96('0x64')](_0x29a7fa,_0x175c3c['type'],_0x44cda4);_0x15b667[_0x28ef21](_0x1e792a[_0x5b96('0x65')],_0x1e792a[_0x5b96('0x5b')][_0x5b96('0x66')],_0x1e792a[_0x5b96('0x5b')][_0x5b96('0x26')]);}break;case _0x5b96('0x6d'):_0x1e792a=as[_0x5b96('0x64')]('me',null,_0x44cda4);_0x15b667[_0x28ef21](_0x1e792a[_0x5b96('0x65')],_0x1e792a[_0x5b96('0x5b')]['start'],_0x1e792a[_0x5b96('0x5b')][_0x5b96('0x26')]);break;}}else{var _0x1e792a=as[_0x5b96('0x64')](_0x29a7fa,_0x175c3c[_0x5b96('0x32')],_0x44cda4);_0x15b667[_0x28ef21](_0x1e792a[_0x5b96('0x65')],_0x1e792a[_0x5b96('0x5b')]['start'],_0x1e792a[_0x5b96('0x5b')][_0x5b96('0x26')]);}}}else{var _0x5e0575=_(_0x2c14fd['query'])['keys']()[_0x5b96('0x2a')](function(_0x4b1942){return _[_0x5b96('0x6e')](_0x133213,[_0x5b96('0x28'),_0x4b1942])?_0x4b1942:undefined;})[_0x5b96('0x6f')]()[_0x5b96('0x5b')]();if(!_['isEmpty'](_0x5e0575)){_0x5e0575[_0x5b96('0x68')](function(_0x17bcc1){if(_0x17bcc1===_0x5b96('0x70')){_0x3518fc[_0x5b96('0x3f')]('i.FaxAccountId\x20IN\x20?',[][_0x5b96('0x71')](_0x2c14fd[_0x5b96('0x38')][_0x17bcc1]));}else if(_0x17bcc1===_0x5b96('0x72')){var _0x15ac1b=JSON[_0x5b96('0x73')](_0x2c14fd[_0x5b96('0x38')][_0x17bcc1])['$gte'];var _0x31b3a3=JSON[_0x5b96('0x73')](_0x2c14fd['query'][_0x17bcc1])[_0x5b96('0x74')];_0x3518fc[_0x5b96('0x3f')](_0x5b96('0x75'),_0x15ac1b,_0x31b3a3);}else{if(_0x2c14fd[_0x5b96('0x38')][_0x17bcc1]===_0x5b96('0x76')){_0x3518fc['where']('i.'+_0x17bcc1+'\x20IS\x20NULL');}else{_0x3518fc[_0x5b96('0x3f')]('i.'+_0x17bcc1+_0x5b96('0x77'),_0x2c14fd[_0x5b96('0x38')][_0x17bcc1]);}}});}if(_0x2c14fd[_0x5b96('0x38')][_0x5b96('0x78')]){if(_0x2c14fd['query'][_0x5b96('0x78')]==0x1){_0x3518fc[_0x5b96('0x5c')]('`unreadMessages`\x20=\x200');}else{_0x3518fc[_0x5b96('0x5c')](_0x5b96('0x79'));}}if(_0x2c14fd[_0x5b96('0x38')][_0x5b96('0x7a')]){_0x1fe0f9=_[_0x5b96('0x7b')](_0x2c14fd[_0x5b96('0x38')][_0x5b96('0x7a')])?_0x2c14fd[_0x5b96('0x38')][_0x5b96('0x7a')]:new Array(_0x2c14fd[_0x5b96('0x38')][_0x5b96('0x7a')]);_0x1fe0f9['forEach'](function(_0x2551d1){_0x4ea9c6['or'](_0x5b96('0x7c'),'%,'+_0x2551d1+',%');});}if(_0x2c14fd[_0x5b96('0x38')][_0x5b96('0x7d')]){var _0x2ada65=_0x2c14fd[_0x5b96('0x38')][_0x5b96('0x7d')][_0x5b96('0x7e')]('\x5c','\x5c\x5c')[_0x5b96('0x7e')](/'/g,'\x27\x27');if(qs[_0x5b96('0x7f')](_0x2ada65)){_0x15b667['or']('i.id\x20LIKE\x20?',_0x2ada65+'%')['or'](_0x5b96('0x80'),_0x2ada65+'%');}_0x15b667['or'](_0x5b96('0x81'),_0x2ada65+'%');}}_0x3518fc[_0x5b96('0x3f')](_0x15b667);_0x3518fc['group'](_0x5b96('0x82'));var _0x478dc3={'type':db[_0x5b96('0x83')][_0x5b96('0x84')]['SELECT'],'raw':!![]};var _0x3f8c1f=_0x3518fc[_0x5b96('0x85')]();_0x3f8c1f[_0x5b96('0x42')](_0x5b96('0x82'));_0x3f8c1f['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x5b96('0x5a'));if(_0x223c05[_0x5b96('0x3d')]){_0x223c05[_0x5b96('0x3d')][_0x5b96('0x68')](function(_0x55191f){var _0x774276=_0x55191f[0x0]==='contactName'?_0x55191f[0x0]:'i.'+_0x55191f[0x0];_0x3518fc['order'](_0x774276,_0x55191f[0x1]===_0x5b96('0x86')?![]:!![]);});}if(!_[_0x5b96('0x87')](_0x1fe0f9)){_0x3518fc[_0x5b96('0x5c')](_0x4ea9c6);_0x3f8c1f[_0x5b96('0x3f')](_0x5b96('0x88'),_0x1fe0f9);}BPromise['resolve']()['then'](function(){if(!_0x444e11){if(_0x2c14fd[_0x5b96('0x38')][_0x5b96('0x70')])return;_0x3f8c1f[_0x5b96('0x3f')](_0x5b96('0x89'));_0x3518fc[_0x5b96('0x3f')](_0x5b96('0x89'));return;}if(_0x2c14fd['user'][_0x5b96('0x8a')]!=='agent')return;return _0x2c14fd['user'][_0x5b96('0x8b')]({'attributes':['id'],'raw':!![]})[_0x5b96('0x24')](function(_0x3a3952){if(_[_0x5b96('0x87')](_0x3a3952)){_0x3f8c1f[_0x5b96('0x3f')](_0x5b96('0x8c'));_0x3518fc[_0x5b96('0x3f')](_0x5b96('0x8c'));}else{_0x3f8c1f['where'](_0x5b96('0x8d'),_[_0x5b96('0x2a')](_0x3a3952,'id'));_0x3518fc['where'](_0x5b96('0x8d'),_['map'](_0x3a3952,'id'));}});})[_0x5b96('0x24')](function(){if(_0x2c14fd[_0x5b96('0x8e')]['role']===_0x5b96('0x8f')&&!_0x444e11&&!_0x2c14fd[_0x5b96('0x38')]['FaxAccountId'])return[];return db['sequelize'][_0x5b96('0x38')](_0x3f8c1f[_0x5b96('0x90')](),_0x478dc3);})[_0x5b96('0x24')](function(_0x3ec0b0){_0xe16d31[_0x5b96('0x91')]=_0x3ec0b0[_0x5b96('0x3b')];if(_0xe16d31[_0x5b96('0x91')]===0x0)return[];return db[_0x5b96('0x92')]['query'](_0x369907[_0x5b96('0x90')](),_0x478dc3)[_0x5b96('0x24')](function(_0x47dd13){_0x2a3930=_[_0x5b96('0x93')](_0x47dd13,'id');_0x478dc3=_[_0x5b96('0x94')](_0x478dc3,{'model':db[_0x5b96('0x95')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2c14fd['query'][_0x5b96('0x3a')]){_0x223c05[_0x5b96('0x39')][_0x5b96('0x68')](function(_0x3d7d08){_0x3518fc['field']('i.'+_0x3d7d08);});}else{_0x3518fc[_0x5b96('0x42')](_0x5b96('0x96'),_0x5b96('0x5a'));_0x3518fc['field']('a.key',_0x5b96('0x97'));_0x3518fc[_0x5b96('0x42')](_0x5b96('0x98'),_0x5b96('0x99'));_0x3518fc[_0x5b96('0x42')]('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',_0x5b96('0x9a'));_0x3518fc[_0x5b96('0x42')](_0x5b96('0x9b'));_0x3518fc[_0x5b96('0x42')](_0x5b96('0x9c'),_0x5b96('0x9d'));_0x3518fc[_0x5b96('0x42')](_0x5b96('0x9e'),'Contact.lastName');_0x3518fc[_0x5b96('0x42')](_0x5b96('0x9f'),_0x5b96('0xa0'));_0x3518fc[_0x5b96('0x42')]('c.phone',_0x5b96('0xa1'));_0x3518fc[_0x5b96('0x42')](_0x5b96('0xa2'),'Contact.mobile');_0x3518fc[_0x5b96('0x42')](_0x5b96('0xa3'),_0x5b96('0xa4'));_0x3518fc[_0x5b96('0x42')](_0x5b96('0xa5'),_0x5b96('0xa6'));_0x3518fc[_0x5b96('0x42')](_0x5b96('0xa7'),_0x5b96('0xa8'));_0x3518fc[_0x5b96('0x42')](_0x5b96('0xa9'),'TagIds');}if(_0x223c05[_0x5b96('0x1d')])_0x3518fc[_0x5b96('0x1d')](_0x223c05['limit']);if(_0x223c05[_0x5b96('0x1f')])_0x3518fc[_0x5b96('0x1f')](_0x223c05[_0x5b96('0x1f')]);return db[_0x5b96('0x92')][_0x5b96('0x38')](_0x3518fc[_0x5b96('0x90')](),_0x478dc3);})[_0x5b96('0x24')](function(_0x3f8376){if(_0x3f8376[_0x5b96('0x3b')]>0x0)_0x3274ba[_0x5b96('0x3f')](_0x5b96('0xaa'),_['map'](_0x3f8376,'id'));return db[_0x5b96('0x92')][_0x5b96('0x38')](_0x3274ba['toString'](),_0x478dc3)['then'](function(_0x378d7c){var _0x447b39=_[_0x5b96('0xab')](_0x378d7c,_0x5b96('0xac'));var _0x3bf766=[];_0x3f8376['forEach'](function(_0x4f1357){_0x3bf766['push'](updateFaxInteraction(_0x4f1357,_0x2a3930,_0x447b39));});return BPromise['all'](_0x3bf766);});});})[_0x5b96('0x24')](function(_0x4db7bb){_0xe16d31['rows']=_0x4db7bb;return _0xe16d31;})[_0x5b96('0x24')](respondWithFilteredResult(_0x527078,_0x223c05))['catch'](handleError(_0x527078,null));};exports[_0x5b96('0xad')]=function(_0x484170,_0x46446f){var _0x38e0a1={'raw':![],'where':{'id':_0x484170[_0x5b96('0xae')]['id']}},_0x4b0b59={};_0x4b0b59[_0x5b96('0x34')]=_[_0x5b96('0x35')](db[_0x5b96('0x95')][_0x5b96('0x31')]);_0x4b0b59[_0x5b96('0x38')]=_[_0x5b96('0x35')](_0x484170[_0x5b96('0x38')]);_0x4b0b59[_0x5b96('0x36')]=_[_0x5b96('0x37')](_0x4b0b59[_0x5b96('0x34')],_0x4b0b59[_0x5b96('0x38')]);_0x38e0a1[_0x5b96('0x39')]=_[_0x5b96('0x37')](_0x4b0b59['model'],qs[_0x5b96('0x3a')](_0x484170['query']['fields']));_0x38e0a1['attributes']=_0x38e0a1[_0x5b96('0x39')][_0x5b96('0x3b')]?_0x38e0a1[_0x5b96('0x39')]:_0x4b0b59['model'];if(_0x484170[_0x5b96('0x38')]['includeAll']){_0x38e0a1['include']=[{'all':!![]}];}_0x38e0a1=_[_0x5b96('0x94')]({},_0x38e0a1,_0x484170['options']);return db[_0x5b96('0x95')]['find'](_0x38e0a1)[_0x5b96('0x24')](handleEntityNotFound(_0x46446f,null))['then'](respondWithResult(_0x46446f,null))['catch'](handleError(_0x46446f,null));};exports['create']=function(_0x238d92,_0x57a2e8){return db['FaxInteraction'][_0x5b96('0xaf')](_0x238d92['body'],{})[_0x5b96('0x24')](respondWithResult(_0x57a2e8,0xc9))['catch'](handleError(_0x57a2e8,null));};exports[_0x5b96('0x23')]=function(_0x5a25aa,_0x4031ca){if(_0x5a25aa['body']['id']){delete _0x5a25aa[_0x5b96('0x6d')]['id'];}return db[_0x5b96('0x95')][_0x5b96('0x62')]({'where':{'id':_0x5a25aa[_0x5b96('0xae')]['id']}})[_0x5b96('0x24')](handleEntityNotFound(_0x4031ca,null))['then'](saveUpdates(_0x5a25aa[_0x5b96('0x6d')],null))[_0x5b96('0x24')](respondWithResult(_0x4031ca,null))[_0x5b96('0x2f')](handleError(_0x4031ca,null));};exports[_0x5b96('0x25')]=function(_0x22c11e,_0x444e22){return db[_0x5b96('0x95')][_0x5b96('0x62')]({'where':{'id':_0x22c11e[_0x5b96('0xae')]['id']}})[_0x5b96('0x24')](handleEntityNotFound(_0x444e22,null))[_0x5b96('0x24')](removeEntity(_0x444e22,null))[_0x5b96('0x2f')](handleError(_0x444e22,null));};exports[_0x5b96('0xb0')]=function(_0x3059d4,_0x44a05a){return db['FaxInteraction'][_0x5b96('0xb0')]()[_0x5b96('0x24')](respondWithResult(_0x44a05a,null))[_0x5b96('0x2f')](handleError(_0x44a05a,null));};exports[_0x5b96('0xb1')]=function(_0x1c9c66,_0x5e091d,_0x131ba6){return db[_0x5b96('0xb2')]['find']({'where':{'id':_0x1c9c66[_0x5b96('0xae')]['id']}})['then'](handleEntityNotFound(_0x5e091d,null))[_0x5b96('0x24')](function(_0x7d30d0){if(_0x7d30d0){return _0x7d30d0['addMessage'](_0x1c9c66['body']['ids'],_[_0x5b96('0xb3')](_0x1c9c66[_0x5b96('0x6d')],['ids','id'])||{});}})[_0x5b96('0x24')](respondWithResult(_0x5e091d,null))[_0x5b96('0x2f')](handleError(_0x5e091d,null));};exports[_0x5b96('0xb4')]=function(_0x375ac9,_0x5765e9,_0x520e43){var _0x6ea388={'raw':![],'where':{}};var _0x5c2b76={};var _0x2261bc={'count':0x0,'rows':[]};return db[_0x5b96('0x95')][_0x5b96('0xb5')]({'where':{'id':_0x375ac9[_0x5b96('0xae')]['id']}})[_0x5b96('0x24')](handleEntityNotFound(_0x5765e9,null))[_0x5b96('0x24')](function(_0x52ac83){if(_0x52ac83){_0x5c2b76[_0x5b96('0x34')]=_[_0x5b96('0x35')](db[_0x5b96('0xb2')][_0x5b96('0x31')]);_0x5c2b76[_0x5b96('0x38')]=_['keys'](_0x375ac9[_0x5b96('0x38')]);_0x5c2b76[_0x5b96('0x36')]=_[_0x5b96('0x37')](_0x5c2b76[_0x5b96('0x34')],_0x5c2b76[_0x5b96('0x38')]);_0x6ea388['attributes']=_[_0x5b96('0x37')](_0x5c2b76['model'],qs[_0x5b96('0x3a')](_0x375ac9['query'][_0x5b96('0x3a')]));_0x6ea388[_0x5b96('0x39')]=_0x6ea388[_0x5b96('0x39')][_0x5b96('0x3b')]?_0x6ea388[_0x5b96('0x39')]:_0x5c2b76[_0x5b96('0x34')];if(!_0x375ac9[_0x5b96('0x38')][_0x5b96('0x3c')](_0x5b96('0xb6'))){_0x6ea388[_0x5b96('0x1d')]=qs[_0x5b96('0x1d')](_0x375ac9[_0x5b96('0x38')][_0x5b96('0x1d')]);_0x6ea388['offset']=qs[_0x5b96('0x1f')](_0x375ac9['query'][_0x5b96('0x1f')]);}_0x6ea388[_0x5b96('0x3d')]=qs[_0x5b96('0x3e')](_0x375ac9[_0x5b96('0x38')][_0x5b96('0x3e')]);_0x6ea388[_0x5b96('0x3f')]=qs[_0x5b96('0x36')](_[_0x5b96('0x40')](_0x375ac9['query'],_0x5c2b76[_0x5b96('0x36')]));_0x6ea388[_0x5b96('0x3f')][_0x5b96('0xac')]=_0x52ac83['id'];if(_0x375ac9['query'][_0x5b96('0x7d')]){_0x6ea388[_0x5b96('0x3f')]=_[_0x5b96('0x94')](_0x6ea388[_0x5b96('0x3f')],{'$or':_[_0x5b96('0x2a')](_0x6ea388[_0x5b96('0x39')],function(_0x29dbed){var _0x46f65d={};_0x46f65d[_0x29dbed]={'$like':'%'+_0x375ac9[_0x5b96('0x38')][_0x5b96('0x7d')]+'%'};return _0x46f65d;})});}if(_0x375ac9['query']['$gte']){var _0x5bb575=_0x375ac9[_0x5b96('0x38')][_0x5b96('0xb7')][_0x5b96('0x2d')](',');var _0x5e40f2={};_0x5e40f2[_0x5bb575[0x0]]={'$gte':moment(_0x5bb575[0x1])[_0x5b96('0xb8')]('YYYY-MM-DD\x20HH:mm:ss')};_0x6ea388[_0x5b96('0x3f')]=_[_0x5b96('0x94')](_0x6ea388['where'],_0x5e40f2);}_0x6ea388=_['merge']({},_0x6ea388,_0x375ac9[_0x5b96('0xb9')]);return db[_0x5b96('0xb2')][_0x5b96('0x91')]({'where':_0x6ea388[_0x5b96('0x3f')]})[_0x5b96('0x24')](function(_0x9a040){_0x2261bc[_0x5b96('0x91')]=_0x9a040;if(_0x375ac9['query'][_0x5b96('0xba')]){_0x6ea388[_0x5b96('0xbb')]=[{'all':!![]}];}return db['FaxMessage'][_0x5b96('0xbc')](_0x6ea388);})[_0x5b96('0x24')](function(_0xbeed60){_0x2261bc[_0x5b96('0xbd')]=_0xbeed60;return _0x2261bc;});}})['then'](respondWithFilteredResult(_0x5765e9,_0x6ea388))['catch'](handleError(_0x5765e9,null));};exports['addTags']=function(_0x5651cf,_0x134968,_0x231cca){return db['FaxInteraction'][_0x5b96('0x62')]({'where':{'id':_0x5651cf[_0x5b96('0xae')]['id']}})[_0x5b96('0x24')](handleEntityNotFound(_0x134968,null))[_0x5b96('0x24')](function(_0x377bcf){if(_0x377bcf){return _0x377bcf[_0x5b96('0xbe')](_0x5651cf['body'][_0x5b96('0xbf')],_[_0x5b96('0xb3')](_0x5651cf[_0x5b96('0x6d')],[_0x5b96('0xbf'),'id'])||{})[_0x5b96('0xc0')](function(){return db['Tag'][_0x5b96('0xbc')]({'attributes':['id',_0x5b96('0x28'),'color'],'where':{'id':_0x5651cf['body'][_0x5b96('0xbf')]}});})['then'](function(_0x114b68){socket[_0x5b96('0xc1')](_0x5b96('0xc2'),{'id':Number(_0x5651cf[_0x5b96('0xae')]['id']),'tags':_0x114b68||[]});return{'id':Number(_0x5651cf[_0x5b96('0xae')]['id']),'tags':_0x114b68||[]};});}})[_0x5b96('0x24')](respondWithResult(_0x134968,null))[_0x5b96('0x2f')](handleError(_0x134968,null));};exports[_0x5b96('0xc3')]=function(_0x400cf4,_0x362251,_0x448ba5){return db[_0x5b96('0x95')][_0x5b96('0x62')]({'where':{'id':_0x400cf4['params']['id']}})[_0x5b96('0x24')](handleEntityNotFound(_0x362251,null))[_0x5b96('0x24')](function(_0x583827){if(_0x583827){return _0x583827['removeTags'](_0x400cf4[_0x5b96('0x38')][_0x5b96('0xbf')]);}})[_0x5b96('0x24')](respondWithStatusCode(_0x362251,null))[_0x5b96('0x2f')](handleError(_0x362251,null));};exports[_0x5b96('0xc4')]=function(_0x42c9f0,_0x900751){var _0x2f81b8=moment()['unix']()['toString']();var _0x246caa=path[_0x5b96('0xc5')](config[_0x5b96('0xc6')],_0x5b96('0xc7'),'files',_0x5b96('0xc8'));var _0x2c7a0e=path[_0x5b96('0xc5')](config[_0x5b96('0xc6')],'server',_0x5b96('0xc9'),_0x5b96('0xca'));var _0x331af9=path[_0x5b96('0xc5')](_0x246caa,_0x2f81b8);var _0x4b10d6=util[_0x5b96('0xb8')](_0x5b96('0xcb'),_0x42c9f0['params']['id'],_0x2f81b8);var _0x40ace5=path[_0x5b96('0xc5')](_0x246caa,_0x4b10d6);var _0x45d4=[];_0x45d4[_0x5b96('0xcc')]({'model':db[_0x5b96('0xcd')],'as':_0x5b96('0xcd'),'raw':!![]});var _0x19b42c=[{'model':db[_0x5b96('0xb2')],'as':'Messages','attributes':['id',_0x5b96('0x6d'),'createdAt'],'include':_0x45d4}];return db['FaxInteraction'][_0x5b96('0x62')]({'where':{'id':_0x42c9f0[_0x5b96('0xae')]['id']},'include':_0x19b42c})[_0x5b96('0x24')](handleEntityNotFound(_0x900751,null))['then'](function(_0x38810e){if(_0x38810e&&_0x38810e[_0x5b96('0xce')]){var _0x386ac1=_0x38810e[_0x5b96('0xcf')]({'plain':!![]});fs[_0x5b96('0xd0')](_0x331af9);for(var _0x4ffc54=0x0;_0x4ffc54<_0x386ac1[_0x5b96('0xce')]['length'];_0x4ffc54++){var _0x43ecb3=_0x386ac1[_0x5b96('0xce')][_0x4ffc54][_0x5b96('0xcd')];if(_0x43ecb3){var _0x10779d=path[_0x5b96('0xc5')](_0x2c7a0e,_0x43ecb3[_0x5b96('0xd1')]);if(fs[_0x5b96('0xd2')](_0x10779d)){fs[_0x5b96('0xd3')](_0x10779d)['pipe'](fs[_0x5b96('0xd4')](path['join'](_0x331af9,_0x43ecb3[_0x5b96('0xd1')])));}}}return BPromise[_0x5b96('0xd5')]()['then'](function(){return new BPromise(function(_0x5a119b,_0xd7f9ad){zipdir(_0x331af9,{'saveTo':_0x40ace5},function(_0x4f5a58,_0x155735){if(_0x4f5a58)return _0xd7f9ad(_0x4f5a58);return _0x5a119b(_0x155735);});})[_0x5b96('0x24')](function(){return new BPromise(function(_0x3c8bda,_0x4321cd){rimraf(_0x331af9,function(_0x2e4c35){if(_0x2e4c35)_0x4321cd(_0x2e4c35);return _0x3c8bda();});});})['then'](function(){return _0x900751['download'](_0x40ace5,_0x4b10d6,function(_0x3f529b){if(_0x3f529b){console['log'](_0x5b96('0xd6'),_0x3f529b);}else{fs[_0x5b96('0xd7')](_0x40ace5);}});});});}else{return _0x900751['sendStatus'](0xc8);}})[_0x5b96('0x2f')](handleError(_0x900751,null));};
\ No newline at end of file
index 6e3bc3f..b0bef87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf652=['Users','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','exports','events','FaxInteraction','../../mysqldb','FaxMessage','setMaxListeners','save','update','getUsers','setDataValue'];(function(_0x13524d,_0x505b49){var _0x9918b4=function(_0xef1f0a){while(--_0xef1f0a){_0x13524d['push'](_0x13524d['shift']());}};_0x9918b4(++_0x505b49);}(_0xf652,0xab));var _0x2f65=function(_0x324af8,_0x524320){_0x324af8=_0x324af8-0x0;var _0x9f05ec=_0xf652[_0x324af8];return _0x9f05ec;};'use strict';var EventEmitter=require(_0x2f65('0x0'));var FaxInteraction=require('../../mysqldb')['db'][_0x2f65('0x1')];var FaxMessage=require(_0x2f65('0x2'))['db'][_0x2f65('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x2f65('0x4')](0x0);var events={'afterCreate':_0x2f65('0x5'),'afterUpdate':_0x2f65('0x6'),'afterDestroy':'remove'};function emitEvent(_0xb1a6ed){return function(_0xed5111,_0x41d781,_0x1f1652){_0xed5111[_0x2f65('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x5fee9f){_0xed5111[_0x2f65('0x8')](_0x2f65('0x9'),_0x5fee9f['map'](function(_0x2de43e){return{'id':_0x2de43e['id']};}));return FaxMessage[_0x2f65('0xa')]({'where':{'FaxInteractionId':_0xed5111['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2f65('0xb')](function(_0x441eb8){_0xed5111[_0x2f65('0x8')](_0x2f65('0xc'),_0x441eb8[_0x2f65('0xd')]);FaxInteractionEvents[_0x2f65('0xe')](_0xb1a6ed+':'+_0xed5111['id'],_0xed5111);FaxInteractionEvents[_0x2f65('0xe')](_0xb1a6ed,_0xed5111);_0x1f1652(null);})[_0x2f65('0xf')](_0x1f1652(null));};}for(var e in events){if(events[_0x2f65('0x10')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0x2f65('0x11')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x0bf8=['events','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','save','getUsers','then','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports'];(function(_0x4b0705,_0x312d0a){var _0x5edc89=function(_0x12a89e){while(--_0x12a89e){_0x4b0705['push'](_0x4b0705['shift']());}};_0x5edc89(++_0x312d0a);}(_0x0bf8,0x10e));var _0x80bf=function(_0x184486,_0x36669d){_0x184486=_0x184486-0x0;var _0x55c949=_0x0bf8[_0x184486];return _0x55c949;};'use strict';var EventEmitter=require(_0x80bf('0x0'));var FaxInteraction=require(_0x80bf('0x1'))['db'][_0x80bf('0x2')];var FaxMessage=require(_0x80bf('0x1'))['db'][_0x80bf('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x80bf('0x4')](0x0);var events={'afterCreate':_0x80bf('0x5'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x353a44){return function(_0x2169a4,_0x573e60,_0x4a035e){_0x2169a4[_0x80bf('0x6')]({'attributes':['id'],'raw':!![]})[_0x80bf('0x7')](function(_0x17b900){_0x2169a4['setDataValue'](_0x80bf('0x8'),_0x17b900[_0x80bf('0x9')](function(_0x17b8a2){return{'id':_0x17b8a2['id']};}));return FaxMessage[_0x80bf('0xa')]({'where':{'FaxInteractionId':_0x2169a4['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x4a49d2){_0x2169a4['setDataValue'](_0x80bf('0xb'),_0x4a49d2[_0x80bf('0xc')]);FaxInteractionEvents[_0x80bf('0xd')](_0x353a44+':'+_0x2169a4['id'],_0x2169a4);FaxInteractionEvents[_0x80bf('0xd')](_0x353a44,_0x2169a4);_0x4a035e(null);})[_0x80bf('0xe')](_0x4a035e(null));};}for(var e in events){if(events[_0x80bf('0xf')](e)){var event=events[e];FaxInteraction[_0x80bf('0x10')](e,emitEvent(event));}}module[_0x80bf('0x11')]=FaxInteractionEvents;
\ No newline at end of file
index 51ae69a..f1096f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45c2=['FaxInteraction','fax_interactions','changed','closed','closedAt','format','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./faxInteraction.attributes','exports','define'];(function(_0x35bad0,_0x21927d){var _0x4fe50f=function(_0x1873df){while(--_0x1873df){_0x35bad0['push'](_0x35bad0['shift']());}};_0x4fe50f(++_0x21927d);}(_0x45c2,0x1af));var _0x245c=function(_0x13f58e,_0x265b14){_0x13f58e=_0x13f58e-0x0;var _0x47f915=_0x45c2[_0x13f58e];return _0x47f915;};'use strict';var _=require(_0x245c('0x0'));var util=require(_0x245c('0x1'));var logger=require(_0x245c('0x2'))(_0x245c('0x3'));var moment=require(_0x245c('0x4'));var BPromise=require('bluebird');var rp=require(_0x245c('0x5'));var fs=require('fs');var path=require(_0x245c('0x6'));var rimraf=require(_0x245c('0x7'));var config=require('../../config/environment');var attributes=require(_0x245c('0x8'));module[_0x245c('0x9')]=function(_0x6d6a5e,_0x58d5b3){return _0x6d6a5e[_0x245c('0xa')](_0x245c('0xb'),attributes,{'tableName':_0x245c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x27c30a,_0x1ca0d6,_0x1d1bb1){if(_0x27c30a[_0x245c('0xd')](_0x245c('0xe'))){_0x27c30a[_0x245c('0xf')]=moment()[_0x245c('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x1d1bb1(null,_0x27c30a);}}});};
\ No newline at end of file
+var _0x1543=['request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','exports','define','FaxInteraction','changed','closed','lodash','util','api','moment','bluebird'];(function(_0x4a095e,_0x381cd5){var _0x10ef73=function(_0x1f6964){while(--_0x1f6964){_0x4a095e['push'](_0x4a095e['shift']());}};_0x10ef73(++_0x381cd5);}(_0x1543,0x109));var _0x3154=function(_0x54d07a,_0xe5f8e7){_0x54d07a=_0x54d07a-0x0;var _0x231076=_0x1543[_0x54d07a];return _0x231076;};'use strict';var _=require(_0x3154('0x0'));var util=require(_0x3154('0x1'));var logger=require('../../config/logger')(_0x3154('0x2'));var moment=require(_0x3154('0x3'));var BPromise=require(_0x3154('0x4'));var rp=require(_0x3154('0x5'));var fs=require('fs');var path=require(_0x3154('0x6'));var rimraf=require(_0x3154('0x7'));var config=require(_0x3154('0x8'));var attributes=require(_0x3154('0x9'));module[_0x3154('0xa')]=function(_0x5a3f2e,_0x2c8d62){return _0x5a3f2e[_0x3154('0xb')](_0x3154('0xc'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1ef5fa,_0x52c3fb,_0x1f7bce){if(_0x1ef5fa[_0x3154('0xd')](_0x3154('0xe'))){_0x1ef5fa['closedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x1f7bce(null,_0x1ef5fa);}}});};
\ No newline at end of file
index bbf5867..a615bbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3928=['error','code','message','result','catch','UpdateFaxInteraction','FaxInteraction','update','body','options','raw','where','attributes','stringify','AddTagsToFaxInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x5cafe3,_0x57c15f){var _0x2464d6=function(_0x55f3e3){while(--_0x55f3e3){_0x5cafe3['push'](_0x5cafe3['shift']());}};_0x2464d6(++_0x57c15f);}(_0x3928,0x157));var _0x8392=function(_0x276584,_0x3346e3){_0x276584=_0x276584-0x0;var _0x145cfb=_0x3928[_0x276584];return _0x145cfb;};'use strict';var _=require(_0x8392('0x0'));var util=require(_0x8392('0x1'));var moment=require(_0x8392('0x2'));var BPromise=require(_0x8392('0x3'));var rs=require(_0x8392('0x4'));var fs=require('fs');var Redis=require(_0x8392('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x8392('0x6'));var logger=require(_0x8392('0x7'))(_0x8392('0x8'));var config=require(_0x8392('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8392('0xa')][_0x8392('0xb')]({'port':0x232a});config[_0x8392('0xc')]=_[_0x8392('0xd')](config[_0x8392('0xc')],{'host':_0x8392('0xe'),'port':0x18eb});var socket=require(_0x8392('0xf'))(new Redis(config[_0x8392('0xc')]));require(_0x8392('0x10'))[_0x8392('0x11')](socket);function respondWithRpcPromise(_0x4c0490,_0x20728f,_0xbe5b1c){return new BPromise(function(_0x31e5b8,_0x14beab){return client[_0x8392('0x12')](_0x4c0490,_0xbe5b1c)[_0x8392('0x13')](function(_0x1bf497){logger[_0x8392('0x14')](_0x8392('0x15'),_0x20728f,_0x8392('0x16'));logger[_0x8392('0x17')](_0x8392('0x18'),_0x20728f,_0x8392('0x16'),JSON['stringify'](_0x1bf497));if(_0x1bf497[_0x8392('0x19')]){if(_0x1bf497['error'][_0x8392('0x1a')]===0x1f4){logger['error'](_0x8392('0x15'),_0x20728f,_0x1bf497[_0x8392('0x19')]['message']);return _0x14beab(_0x1bf497['error'][_0x8392('0x1b')]);}logger[_0x8392('0x19')](_0x8392('0x15'),_0x20728f,_0x1bf497['error'][_0x8392('0x1b')]);return _0x31e5b8(_0x1bf497[_0x8392('0x19')][_0x8392('0x1b')]);}else{logger[_0x8392('0x14')](_0x8392('0x15'),_0x20728f,_0x8392('0x16'));_0x31e5b8(_0x1bf497[_0x8392('0x1c')][_0x8392('0x1b')]);}})[_0x8392('0x1d')](function(_0x568971){logger[_0x8392('0x19')](_0x8392('0x15'),_0x20728f,_0x568971);_0x14beab(_0x568971);});});}exports[_0x8392('0x1e')]=function(_0x57347b){var _0x265e10=this;return new Promise(function(_0x42a7b1,_0x6a7720){return db[_0x8392('0x1f')][_0x8392('0x20')](_0x57347b[_0x8392('0x21')],{'raw':_0x57347b[_0x8392('0x22')]?_0x57347b[_0x8392('0x22')][_0x8392('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x57347b[_0x8392('0x22')]?_0x57347b[_0x8392('0x22')][_0x8392('0x24')]||null:null,'attributes':_0x57347b[_0x8392('0x22')]?_0x57347b[_0x8392('0x22')][_0x8392('0x25')]||null:null,'limit':_0x57347b['options']?_0x57347b['options']['limit']||null:null})[_0x8392('0x13')](function(_0x4c23c3){logger['info'](_0x8392('0x1e'),_0x57347b);logger[_0x8392('0x17')](_0x8392('0x1e'),_0x57347b,JSON[_0x8392('0x26')](_0x4c23c3));_0x42a7b1(_0x4c23c3);})[_0x8392('0x1d')](function(_0x2408f1){logger[_0x8392('0x19')]('UpdateFaxInteraction',_0x2408f1[_0x8392('0x1b')],_0x57347b);_0x6a7720(_0x265e10[_0x8392('0x19')](0x1f4,_0x2408f1[_0x8392('0x1b')]));});});};exports[_0x8392('0x27')]=function(_0x329ea5){return new Promise(function(_0x1804fa,_0x69dfa1){return db[_0x8392('0x1f')][_0x8392('0x28')]({'where':_0x329ea5[_0x8392('0x22')]?_0x329ea5[_0x8392('0x22')]['where']||null:null})['then'](function(_0x3d4c25){if(_0x3d4c25){return _0x3d4c25[_0x8392('0x29')](_0x329ea5[_0x8392('0x21')][_0x8392('0x2a')],_[_0x8392('0x2b')](_0x329ea5[_0x8392('0x21')],[_0x8392('0x2a'),'id'])||{});}})[_0x8392('0x2c')](function(_0x46e1a0){logger[_0x8392('0x14')](_0x8392('0x2d'),_0x329ea5);logger[_0x8392('0x17')](_0x8392('0x2d'),_0x329ea5,JSON[_0x8392('0x26')](_0x46e1a0));_0x1804fa(_0x46e1a0);})[_0x8392('0x1d')](function(_0x3ad915){logger[_0x8392('0x19')](_0x8392('0x2d'),_0x3ad915['message'],_0x329ea5);_0x69dfa1(_this[_0x8392('0x19')](0x1f4,_0x3ad915[_0x8392('0x1b')]));});});};
\ No newline at end of file
+var _0x988e=['options','raw','attributes','limit','then','debug','where','omit','catch','AddTags','lodash','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','FaxInteraction,\x20%s,\x20%s','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','UpdateFaxInteraction','FaxInteraction','update','body'];(function(_0x2fa7f2,_0x5ef8fc){var _0x4f2380=function(_0x3cce3b){while(--_0x3cce3b){_0x2fa7f2['push'](_0x2fa7f2['shift']());}};_0x4f2380(++_0x5ef8fc);}(_0x988e,0x9e));var _0xe988=function(_0x5b7caf,_0x48ec80){_0x5b7caf=_0x5b7caf-0x0;var _0x2d171d=_0x988e[_0x5b7caf];return _0x2d171d;};'use strict';var _=require(_0xe988('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe988('0x1'));var rs=require(_0xe988('0x2'));var fs=require('fs');var Redis=require(_0xe988('0x3'));var db=require(_0xe988('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe988('0x5'));var config=require(_0xe988('0x6'));var jayson=require(_0xe988('0x7'));var client=jayson[_0xe988('0x8')][_0xe988('0x9')]({'port':0x232a});config[_0xe988('0xa')]=_['defaults'](config[_0xe988('0xa')],{'host':_0xe988('0xb'),'port':0x18eb});var socket=require(_0xe988('0xc'))(new Redis(config['redis']));require('./faxInteraction.socket')[_0xe988('0xd')](socket);function respondWithRpcPromise(_0x4f4fb3,_0x5f3f5e,_0x50f6d0){return new BPromise(function(_0x49c109,_0x2b4645){return client[_0xe988('0xe')](_0x4f4fb3,_0x50f6d0)['then'](function(_0x165c17){logger['info'](_0xe988('0xf'),_0x5f3f5e,'request\x20sent');logger['debug'](_0xe988('0x10'),_0x5f3f5e,'request\x20sent',JSON[_0xe988('0x11')](_0x165c17));if(_0x165c17[_0xe988('0x12')]){if(_0x165c17[_0xe988('0x12')][_0xe988('0x13')]===0x1f4){logger[_0xe988('0x12')]('FaxInteraction,\x20%s,\x20%s',_0x5f3f5e,_0x165c17[_0xe988('0x12')][_0xe988('0x14')]);return _0x2b4645(_0x165c17[_0xe988('0x12')][_0xe988('0x14')]);}logger['error'](_0xe988('0xf'),_0x5f3f5e,_0x165c17[_0xe988('0x12')][_0xe988('0x14')]);return _0x49c109(_0x165c17[_0xe988('0x12')][_0xe988('0x14')]);}else{logger['info']('FaxInteraction,\x20%s,\x20%s',_0x5f3f5e,_0xe988('0x15'));_0x49c109(_0x165c17[_0xe988('0x16')][_0xe988('0x14')]);}})['catch'](function(_0x2c037a){logger[_0xe988('0x12')](_0xe988('0xf'),_0x5f3f5e,_0x2c037a);_0x2b4645(_0x2c037a);});});}exports[_0xe988('0x17')]=function(_0xe3691e){var _0x52f983=this;return new Promise(function(_0x5cfbf6,_0x16d953){return db[_0xe988('0x18')][_0xe988('0x19')](_0xe3691e[_0xe988('0x1a')],{'raw':_0xe3691e[_0xe988('0x1b')]?_0xe3691e['options'][_0xe988('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xe3691e[_0xe988('0x1b')]?_0xe3691e['options']['where']||null:null,'attributes':_0xe3691e[_0xe988('0x1b')]?_0xe3691e[_0xe988('0x1b')][_0xe988('0x1d')]||null:null,'limit':_0xe3691e[_0xe988('0x1b')]?_0xe3691e[_0xe988('0x1b')][_0xe988('0x1e')]||null:null})[_0xe988('0x1f')](function(_0x42ff8a){logger['info']('UpdateFaxInteraction',_0xe3691e);logger[_0xe988('0x20')](_0xe988('0x17'),_0xe3691e,JSON[_0xe988('0x11')](_0x42ff8a));_0x5cfbf6(_0x42ff8a);})['catch'](function(_0x38b4e){logger[_0xe988('0x12')](_0xe988('0x17'),_0x38b4e[_0xe988('0x14')],_0xe3691e);_0x16d953(_0x52f983[_0xe988('0x12')](0x1f4,_0x38b4e[_0xe988('0x14')]));});});};exports['AddTagsToFaxInteraction']=function(_0x11b8ec){return new Promise(function(_0x2d7564,_0x8e9bd9){return db[_0xe988('0x18')]['find']({'where':_0x11b8ec[_0xe988('0x1b')]?_0x11b8ec['options'][_0xe988('0x21')]||null:null})[_0xe988('0x1f')](function(_0x14f135){if(_0x14f135){return _0x14f135['addTags'](_0x11b8ec[_0xe988('0x1a')]['ids'],_[_0xe988('0x22')](_0x11b8ec[_0xe988('0x1a')],['ids','id'])||{});}})['spread'](function(_0x5f1c2b){logger['info']('AddTags',_0x11b8ec);logger['debug']('AddTags',_0x11b8ec,JSON[_0xe988('0x11')](_0x5f1c2b));_0x2d7564(_0x5f1c2b);})[_0xe988('0x23')](function(_0x47cd93){logger[_0xe988('0x12')](_0xe988('0x24'),_0x47cd93[_0xe988('0x14')],_0x11b8ec);_0x8e9bd9(_this[_0xe988('0x12')](0x1f4,_0x47cd93['message']));});});};
\ No newline at end of file
index 5d53a4a..c89f3c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9216=['save','remove','update','removeListener','length','faxInteraction:','./faxInteraction.events'];(function(_0xc2195c,_0x2c2626){var _0x3c46f8=function(_0xa24c8){while(--_0xa24c8){_0xc2195c['push'](_0xc2195c['shift']());}};_0x3c46f8(++_0x2c2626);}(_0x9216,0x1b8));var _0x6921=function(_0x40f46f,_0x16bba2){_0x40f46f=_0x40f46f-0x0;var _0x9d21a=_0x9216[_0x40f46f];return _0x9d21a;};'use strict';var FaxInteractionEvents=require(_0x6921('0x0'));var events=[_0x6921('0x1'),_0x6921('0x2'),_0x6921('0x3')];function createListener(_0x316e99,_0x5054a6){return function(_0x41bc79){_0x5054a6['emit'](_0x316e99,_0x41bc79);};}function removeListener(_0x9c194e,_0xfb1069){return function(){FaxInteractionEvents[_0x6921('0x4')](_0x9c194e,_0xfb1069);};}exports['register']=function(_0xeb265b){for(var _0x4b87d1=0x0,_0x3c288d=events[_0x6921('0x5')];_0x4b87d1<_0x3c288d;_0x4b87d1++){var _0x276f13=events[_0x4b87d1];var _0x2ca55c=createListener(_0x6921('0x6')+_0x276f13,_0xeb265b);FaxInteractionEvents['on'](_0x276f13,_0x2ca55c);}};
\ No newline at end of file
+var _0x09ca=['register','length','./faxInteraction.events','remove','update','emit','removeListener'];(function(_0x9e0cb3,_0x9cd497){var _0x5926b7=function(_0x30e82d){while(--_0x30e82d){_0x9e0cb3['push'](_0x9e0cb3['shift']());}};_0x5926b7(++_0x9cd497);}(_0x09ca,0x144));var _0xa09c=function(_0xbf1e13,_0x12f4cb){_0xbf1e13=_0xbf1e13-0x0;var _0x8b9c73=_0x09ca[_0xbf1e13];return _0x8b9c73;};'use strict';var FaxInteractionEvents=require(_0xa09c('0x0'));var events=['save',_0xa09c('0x1'),_0xa09c('0x2')];function createListener(_0x6712d2,_0x5e1f5c){return function(_0x10b029){_0x5e1f5c[_0xa09c('0x3')](_0x6712d2,_0x10b029);};}function removeListener(_0x518b76,_0x38cd6a){return function(){FaxInteractionEvents[_0xa09c('0x4')](_0x518b76,_0x38cd6a);};}exports[_0xa09c('0x5')]=function(_0x350481){for(var _0x2528fb=0x0,_0x4e9a1b=events[_0xa09c('0x6')];_0x2528fb<_0x4e9a1b;_0x2528fb++){var _0x56a919=events[_0x2528fb];var _0x2ea6cf=createListener('faxInteraction:'+_0x56a919,_0x350481);FaxInteractionEvents['on'](_0x56a919,_0x2ea6cf);}};
\ No newline at end of file
index 2da28d4..3f76708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9561=['post','create','/:id/tags','tracked','fax','addTags','put','faxinteraction:update','update','delete','faxinteraction:destroy','removeTags','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','index','get','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download'];(function(_0x230797,_0x2db929){var _0x39fe26=function(_0x44cc5e){while(--_0x44cc5e){_0x230797['push'](_0x230797['shift']());}};_0x39fe26(++_0x2db929);}(_0x9561,0x109));var _0x1956=function(_0x53b9e2,_0x5e3769){_0x53b9e2=_0x53b9e2-0x0;var _0x4cf430=_0x9561[_0x53b9e2];return _0x4cf430;};'use strict';var multer=require(_0x1956('0x0'));var util=require(_0x1956('0x1'));var path=require('path');var timeout=require(_0x1956('0x2'));var express=require('express');var router=express[_0x1956('0x3')]();var fs_extra=require(_0x1956('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1956('0x5'));var config=require('../../config/environment');var controller=require('./faxInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x1956('0x6')]);router[_0x1956('0x7')]('/describe',auth[_0x1956('0x8')](),controller[_0x1956('0x9')]);router[_0x1956('0x7')](_0x1956('0xa'),auth['isAuthenticated'](),controller[_0x1956('0xb')]);router[_0x1956('0x7')](_0x1956('0xc'),auth[_0x1956('0x8')](),controller[_0x1956('0xd')]);router[_0x1956('0x7')](_0x1956('0xe'),auth[_0x1956('0x8')](),controller['download']);router[_0x1956('0xf')]('/',auth[_0x1956('0x8')](),controller[_0x1956('0x10')]);router['post'](_0x1956('0xc'),auth[_0x1956('0x8')](),controller['addMessage']);router['post'](_0x1956('0x11'),auth[_0x1956('0x8')](),interaction[_0x1956('0x12')](_0x1956('0x13'),'faxinteraction:addtags'),controller[_0x1956('0x14')]);router[_0x1956('0x15')](_0x1956('0xa'),auth[_0x1956('0x8')](),interaction[_0x1956('0x12')](_0x1956('0x13'),_0x1956('0x16')),controller[_0x1956('0x17')]);router[_0x1956('0x18')]('/:id',auth[_0x1956('0x8')](),interaction['tracked'](_0x1956('0x13'),_0x1956('0x19')),controller['destroy']);router[_0x1956('0x18')](_0x1956('0x11'),auth[_0x1956('0x8')](),controller[_0x1956('0x1a')]);module[_0x1956('0x1b')]=router;
\ No newline at end of file
+var _0x0677=['post','create','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','update','delete','faxinteraction:destroy','destroy','removeTags','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','download'];(function(_0xdbb962,_0x523201){var _0xf4675b=function(_0x460eb7){while(--_0x460eb7){_0xdbb962['push'](_0xdbb962['shift']());}};_0xf4675b(++_0x523201);}(_0x0677,0x105));var _0x7067=function(_0x28678d,_0x54324f){_0x28678d=_0x28678d-0x0;var _0x1643e9=_0x0677[_0x28678d];return _0x1643e9;};'use strict';var multer=require(_0x7067('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7067('0x1'));var express=require(_0x7067('0x2'));var router=express[_0x7067('0x3')]();var fs_extra=require(_0x7067('0x4'));var auth=require(_0x7067('0x5'));var interaction=require(_0x7067('0x6'));var config=require(_0x7067('0x7'));var controller=require('./faxInteraction.controller');router[_0x7067('0x8')]('/',auth['isAuthenticated'](),controller[_0x7067('0x9')]);router['get'](_0x7067('0xa'),auth[_0x7067('0xb')](),controller[_0x7067('0xc')]);router[_0x7067('0x8')](_0x7067('0xd'),auth[_0x7067('0xb')](),controller[_0x7067('0xe')]);router[_0x7067('0x8')](_0x7067('0xf'),auth[_0x7067('0xb')](),controller[_0x7067('0x10')]);router[_0x7067('0x8')](_0x7067('0x11'),auth[_0x7067('0xb')](),controller[_0x7067('0x12')]);router[_0x7067('0x13')]('/',auth[_0x7067('0xb')](),controller[_0x7067('0x14')]);router[_0x7067('0x13')]('/:id/messages',auth[_0x7067('0xb')](),controller[_0x7067('0x15')]);router[_0x7067('0x13')](_0x7067('0x16'),auth[_0x7067('0xb')](),interaction[_0x7067('0x17')](_0x7067('0x18'),_0x7067('0x19')),controller[_0x7067('0x1a')]);router[_0x7067('0x1b')](_0x7067('0xd'),auth['isAuthenticated'](),interaction[_0x7067('0x17')](_0x7067('0x18'),_0x7067('0x1c')),controller[_0x7067('0x1d')]);router[_0x7067('0x1e')](_0x7067('0xd'),auth['isAuthenticated'](),interaction[_0x7067('0x17')](_0x7067('0x18'),_0x7067('0x1f')),controller[_0x7067('0x20')]);router[_0x7067('0x1e')](_0x7067('0x16'),auth[_0x7067('0xb')](),controller[_0x7067('0x21')]);module[_0x7067('0x22')]=router;
\ No newline at end of file
index 54359f8..97fa762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b19=['medium','out','TEXT','DATE','sequelize','exports'];(function(_0x32a979,_0x209a70){var _0x53c276=function(_0x5e7e6d){while(--_0x5e7e6d){_0x32a979['push'](_0x32a979['shift']());}};_0x53c276(++_0x209a70);}(_0x6b19,0xe8));var _0x96b1=function(_0x4090f8,_0x3df966){_0x4090f8=_0x4090f8-0x0;var _0x2a7827=_0x6b19[_0x4090f8];return _0x2a7827;};'use strict';var Sequelize=require(_0x96b1('0x0'));module[_0x96b1('0x1')]={'body':{'type':Sequelize['TEXT'](_0x96b1('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x96b1('0x3')),'defaultValue':_0x96b1('0x3'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x96b1('0x4')],'defaultValue':null},'readAt':{'type':Sequelize[_0x96b1('0x5')]}};
\ No newline at end of file
+var _0xb90d=['exports','TEXT','medium','BOOLEAN','ENUM','out','DATE'];(function(_0x15a36f,_0x37fd4f){var _0x1f7e96=function(_0x471458){while(--_0x471458){_0x15a36f['push'](_0x15a36f['shift']());}};_0x1f7e96(++_0x37fd4f);}(_0xb90d,0x17a));var _0xdb90=function(_0x5538a4,_0xe0b8b0){_0x5538a4=_0x5538a4-0x0;var _0x530a52=_0xb90d[_0x5538a4];return _0x530a52;};'use strict';var Sequelize=require('sequelize');module[_0xdb90('0x0')]={'body':{'type':Sequelize[_0xdb90('0x1')](_0xdb90('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xdb90('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xdb90('0x4')]('in',_0xdb90('0x5')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0xdb90('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0xdb90('0x6')]}};
\ No newline at end of file
index f2f216b..944cec3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcebf=['stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','options','includeAll','include','findAll','show','params','find','body','describe','accept','fax','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','format','interaction','user','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','interface','motionChannel','channel','event','EventManager','acceptmessage','fax-interactions','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','SIP/%s','reject','rejectmessage','create','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','files','attachments','Attachment','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','redis','defaults','socket.io-emitter','./faxMessage.socket','register','client','http','request','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','FaxMessage,\x20%s,\x20%s','result','catch','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy'];(function(_0x2dc6ab,_0x13d74d){var _0x1cbc42=function(_0x27f6dd){while(--_0x27f6dd){_0x2dc6ab['push'](_0x2dc6ab['shift']());}};_0x1cbc42(++_0x13d74d);}(_0xcebf,0x172));var _0xfceb=function(_0x52943e,_0x40a430){_0x52943e=_0x52943e-0x0;var _0x23e7ce=_0xcebf[_0x52943e];return _0x23e7ce;};'use strict';var emlformat=require(_0xfceb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfceb('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfceb('0x2'));var moment=require('moment');var BPromise=require(_0xfceb('0x3'));var Mustache=require(_0xfceb('0x4'));var util=require(_0xfceb('0x5'));var path=require(_0xfceb('0x6'));var sox=require(_0xfceb('0x7'));var csv=require(_0xfceb('0x8'));var ejs=require(_0xfceb('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfceb('0xa'));var squel=require('squel');var crypto=require(_0xfceb('0xb'));var jsforce=require(_0xfceb('0xc'));var deskjs=require(_0xfceb('0xd'));var toCsv=require(_0xfceb('0x8'));var querystring=require('querystring');var Papa=require(_0xfceb('0xe'));var Redis=require(_0xfceb('0xf'));var authService=require(_0xfceb('0x10'));var qs=require(_0xfceb('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfceb('0x12'));var logger=require(_0xfceb('0x13'))('api');var utils=require(_0xfceb('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xfceb('0x15'));var db=require('../../mysqldb')['db'];config[_0xfceb('0x16')]=_[_0xfceb('0x17')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xfceb('0x18'))(new Redis(config[_0xfceb('0x16')]));require(_0xfceb('0x19'))[_0xfceb('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson[_0xfceb('0x1b')][_0xfceb('0x1c')]({'port':0x232c});var client9002=jayson[_0xfceb('0x1b')][_0xfceb('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x35f8a4,_0x244de9,_0x43c519,_0x371a9b){return new BPromise(function(_0xbe2959,_0xd138af){var _0xf0db85=_0x371a9b||client;return _0xf0db85[_0xfceb('0x1d')](_0x35f8a4,_0x43c519)['then'](function(_0x575376){logger['info']('FaxMessage,\x20%s,\x20%s',_0x244de9,_0xfceb('0x1e'));logger['debug'](_0xfceb('0x1f'),_0x244de9,_0xfceb('0x1e'),JSON[_0xfceb('0x20')](_0x575376));if(_0x575376[_0xfceb('0x21')]){if(_0x575376[_0xfceb('0x21')]['code']===0x1f4){logger[_0xfceb('0x21')]('FaxMessage,\x20%s,\x20%s',_0x244de9,_0x575376[_0xfceb('0x21')]['message']);return _0xd138af(_0x575376[_0xfceb('0x21')][_0xfceb('0x22')]);}logger[_0xfceb('0x21')]('FaxMessage,\x20%s,\x20%s',_0x244de9,_0x575376[_0xfceb('0x21')][_0xfceb('0x22')]);return _0xbe2959(_0x575376[_0xfceb('0x21')][_0xfceb('0x22')]);}else{logger[_0xfceb('0x23')](_0xfceb('0x24'),_0x244de9,_0xfceb('0x1e'));_0xbe2959(_0x575376[_0xfceb('0x25')][_0xfceb('0x22')]);}})[_0xfceb('0x26')](function(_0x49dbbc){logger[_0xfceb('0x21')](_0xfceb('0x24'),_0x244de9,_0x49dbbc);_0xd138af(_0x49dbbc);});});}function respondWithStatusCode(_0x48a22e,_0x35ec74){_0x35ec74=_0x35ec74||0xcc;return function(_0x17be2f){if(_0x17be2f){return _0x48a22e[_0xfceb('0x27')](_0x35ec74);}return _0x48a22e[_0xfceb('0x28')](_0x35ec74)[_0xfceb('0x29')]();};}function respondWithResult(_0x2db75e,_0x13094){_0x13094=_0x13094||0xc8;return function(_0x26db6c){if(_0x26db6c){return _0x2db75e[_0xfceb('0x28')](_0x13094)[_0xfceb('0x2a')](_0x26db6c);}};}function respondWithFilteredResult(_0x2badc7,_0x356c0b){return function(_0x3c209c){if(_0x3c209c){var _0x206bde=typeof _0x356c0b[_0xfceb('0x2b')]===_0xfceb('0x2c')&&typeof _0x356c0b['limit']===_0xfceb('0x2c');var _0x110272=_0x3c209c['count'];var _0x4825c9=_0x206bde?0x0:_0x356c0b['offset'];var _0x148e08=_0x206bde?_0x3c209c[_0xfceb('0x2d')]:_0x356c0b['offset']+_0x356c0b['limit'];var _0xc588eb;if(_0x148e08>=_0x110272){_0x148e08=_0x110272;_0xc588eb=0xc8;}else{_0xc588eb=0xce;}_0x2badc7[_0xfceb('0x28')](_0xc588eb);return _0x2badc7[_0xfceb('0x2e')](_0xfceb('0x2f'),_0x4825c9+'-'+_0x148e08+'/'+_0x110272)[_0xfceb('0x2a')](_0x3c209c);}return null;};}function patchUpdates(_0x369796){return function(_0x21c7e4){try{jsonpatch[_0xfceb('0x30')](_0x21c7e4,_0x369796,!![]);}catch(_0x280d4f){return BPromise['reject'](_0x280d4f);}return _0x21c7e4[_0xfceb('0x31')]();};}function saveUpdates(_0xbc9f8c,_0x2aa3ea){return function(_0x87a407){if(_0x87a407){return _0x87a407[_0xfceb('0x32')](_0xbc9f8c)[_0xfceb('0x33')](function(_0x3d5a50){return _0x3d5a50;});}return null;};}function removeEntity(_0x1fe020,_0x23c815){return function(_0x2c51d6){if(_0x2c51d6){return _0x2c51d6[_0xfceb('0x34')]()[_0xfceb('0x33')](function(){_0x1fe020[_0xfceb('0x28')](0xcc)[_0xfceb('0x29')]();});}};}function handleEntityNotFound(_0x35a3dc,_0x433f09){return function(_0xcd1f9b){if(!_0xcd1f9b){_0x35a3dc[_0xfceb('0x27')](0x194);}return _0xcd1f9b;};}function handleError(_0x214c24,_0x247912){_0x247912=_0x247912||0x1f4;return function(_0x5894aa){logger[_0xfceb('0x21')](_0x5894aa[_0xfceb('0x35')]);if(_0x5894aa[_0xfceb('0x36')]){delete _0x5894aa[_0xfceb('0x36')];}_0x214c24[_0xfceb('0x28')](_0x247912)[_0xfceb('0x37')](_0x5894aa);};}exports[_0xfceb('0x38')]=function(_0xc9333d,_0x3be5cc){var _0x120617={},_0x2ef15b={},_0x1f9190={'count':0x0,'rows':[]};var _0x3ae019=_[_0xfceb('0x39')](db[_0xfceb('0x3a')][_0xfceb('0x3b')],function(_0x5ce0c3){return{'name':_0x5ce0c3[_0xfceb('0x3c')],'type':_0x5ce0c3[_0xfceb('0x3d')][_0xfceb('0x3e')]};});_0x2ef15b['model']=_[_0xfceb('0x39')](_0x3ae019,_0xfceb('0x36'));_0x2ef15b[_0xfceb('0x3f')]=_[_0xfceb('0x40')](_0xc9333d[_0xfceb('0x3f')]);_0x2ef15b[_0xfceb('0x41')]=_[_0xfceb('0x42')](_0x2ef15b[_0xfceb('0x43')],_0x2ef15b[_0xfceb('0x3f')]);_0x120617['attributes']=_[_0xfceb('0x42')](_0x2ef15b[_0xfceb('0x43')],qs[_0xfceb('0x44')](_0xc9333d[_0xfceb('0x3f')]['fields']));_0x120617[_0xfceb('0x45')]=_0x120617[_0xfceb('0x45')][_0xfceb('0x46')]?_0x120617[_0xfceb('0x45')]:_0x2ef15b[_0xfceb('0x43')];if(!_0xc9333d[_0xfceb('0x3f')][_0xfceb('0x47')](_0xfceb('0x48'))){_0x120617['limit']=qs[_0xfceb('0x49')](_0xc9333d[_0xfceb('0x3f')]['limit']);_0x120617[_0xfceb('0x2b')]=qs[_0xfceb('0x2b')](_0xc9333d[_0xfceb('0x3f')][_0xfceb('0x2b')]);}_0x120617[_0xfceb('0x4a')]=qs[_0xfceb('0x4b')](_0xc9333d[_0xfceb('0x3f')][_0xfceb('0x4b')]);_0x120617[_0xfceb('0x4c')]=qs[_0xfceb('0x41')](_['pick'](_0xc9333d[_0xfceb('0x3f')],_0x2ef15b[_0xfceb('0x41')]),_0x3ae019);if(_0xc9333d['query'][_0xfceb('0x4d')]){_0x120617[_0xfceb('0x4c')]=_[_0xfceb('0x4e')](_0x120617['where'],{'$or':_[_0xfceb('0x39')](_0x3ae019,function(_0x1fdbf3){if(_0x1fdbf3[_0xfceb('0x3d')]!=='VIRTUAL'){var _0x5985c4={};_0x5985c4[_0x1fdbf3[_0xfceb('0x36')]]={'$like':'%'+_0xc9333d[_0xfceb('0x3f')][_0xfceb('0x4d')]+'%'};return _0x5985c4;}})});}_0x120617=_['merge']({},_0x120617,_0xc9333d[_0xfceb('0x4f')]);var _0x3f9caa={'where':_0x120617['where']};return db[_0xfceb('0x3a')]['count'](_0x3f9caa)['then'](function(_0x48a3f7){_0x1f9190[_0xfceb('0x2d')]=_0x48a3f7;if(_0xc9333d['query'][_0xfceb('0x50')]){_0x120617[_0xfceb('0x51')]=[{'all':!![]}];}return db[_0xfceb('0x3a')][_0xfceb('0x52')](_0x120617);})[_0xfceb('0x33')](function(_0x574d4e){_0x1f9190['rows']=_0x574d4e;return _0x1f9190;})[_0xfceb('0x33')](respondWithFilteredResult(_0x3be5cc,_0x120617))['catch'](handleError(_0x3be5cc,null));};exports[_0xfceb('0x53')]=function(_0x39b74a,_0x2bb05a){var _0x296451={'raw':!![],'where':{'id':_0x39b74a[_0xfceb('0x54')]['id']}},_0x52bb31={};_0x52bb31[_0xfceb('0x43')]=_[_0xfceb('0x40')](db[_0xfceb('0x3a')][_0xfceb('0x3b')]);_0x52bb31[_0xfceb('0x3f')]=_[_0xfceb('0x40')](_0x39b74a[_0xfceb('0x3f')]);_0x52bb31[_0xfceb('0x41')]=_[_0xfceb('0x42')](_0x52bb31[_0xfceb('0x43')],_0x52bb31[_0xfceb('0x3f')]);_0x296451[_0xfceb('0x45')]=_['intersection'](_0x52bb31['model'],qs['fields'](_0x39b74a[_0xfceb('0x3f')]['fields']));_0x296451[_0xfceb('0x45')]=_0x296451[_0xfceb('0x45')][_0xfceb('0x46')]?_0x296451[_0xfceb('0x45')]:_0x52bb31[_0xfceb('0x43')];if(_0x39b74a['query'][_0xfceb('0x50')]){_0x296451[_0xfceb('0x51')]=[{'all':!![]}];}_0x296451=_['merge']({},_0x296451,_0x39b74a[_0xfceb('0x4f')]);return db[_0xfceb('0x3a')][_0xfceb('0x55')](_0x296451)[_0xfceb('0x33')](handleEntityNotFound(_0x2bb05a,null))[_0xfceb('0x33')](respondWithResult(_0x2bb05a,null))['catch'](handleError(_0x2bb05a,null));};exports[_0xfceb('0x32')]=function(_0x50fa9c,_0x5393c2){if(_0x50fa9c[_0xfceb('0x56')]['id']){delete _0x50fa9c['body']['id'];}return db[_0xfceb('0x3a')]['find']({'where':{'id':_0x50fa9c[_0xfceb('0x54')]['id']}})[_0xfceb('0x33')](handleEntityNotFound(_0x5393c2,null))['then'](saveUpdates(_0x50fa9c['body'],null))[_0xfceb('0x33')](respondWithResult(_0x5393c2,null))[_0xfceb('0x26')](handleError(_0x5393c2,null));};exports['destroy']=function(_0x41523b,_0x194bfb){return db[_0xfceb('0x3a')][_0xfceb('0x55')]({'where':{'id':_0x41523b['params']['id']}})[_0xfceb('0x33')](handleEntityNotFound(_0x194bfb,null))[_0xfceb('0x33')](removeEntity(_0x194bfb,null))['catch'](handleError(_0x194bfb,null));};exports[_0xfceb('0x57')]=function(_0x5ee49a,_0x3227be){return db[_0xfceb('0x3a')]['describe']()[_0xfceb('0x33')](respondWithResult(_0x3227be,null))[_0xfceb('0x26')](handleError(_0x3227be,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0xfceb('0x58')]=function(_0x434860,_0x49bf21,_0x2abc24){var _0x261013={'agent':{},'channel':_0xfceb('0x59')};if(_0x434860[_0xfceb('0x56')]['id']){delete _0x434860[_0xfceb('0x56')]['id'];}_0x434860[_0xfceb('0x56')]['read']=!![];_0x434860[_0xfceb('0x56')]['readAt']=moment()['format'](_0xfceb('0x5a'));_0x434860[_0xfceb('0x56')][_0xfceb('0x5b')]=_0x434860[_0xfceb('0x56')][_0xfceb('0x5b')]||_0x434860['user']['id'];_0x261013[_0xfceb('0x5c')]['id']=_0x434860[_0xfceb('0x56')][_0xfceb('0x5b')];return db['FaxMessage'][_0xfceb('0x55')]({'where':{'id':_0x434860[_0xfceb('0x54')]['id'],'UserId':null}})[_0xfceb('0x33')](handleEntityNotFound(_0x49bf21,null))['then'](saveUpdates(_0x434860[_0xfceb('0x56')],null))[_0xfceb('0x33')](function(_0x1b32f4){if(_0x1b32f4){_0x261013[_0xfceb('0x22')]=_0x1b32f4[_0xfceb('0x5d')]({'plain':!![]});return db[_0xfceb('0x5e')][_0xfceb('0x55')]({'where':{'id':_0x1b32f4[_0xfceb('0x5f')]}});}return null;})[_0xfceb('0x33')](handleEntityNotFound(_0x49bf21,null))[_0xfceb('0x33')](function(_0x543651){if(_0x543651){return _0x543651[_0xfceb('0x32')]({'UserId':_0x434860[_0xfceb('0x56')][_0xfceb('0x5b')],'read1stAt':_[_0xfceb('0x60')](_0x543651[_0xfceb('0x61')])?moment()[_0xfceb('0x62')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xfceb('0x33')](function(_0x4e4c2c){if(_0x4e4c2c){_0x261013[_0xfceb('0x63')]=_0x4e4c2c[_0xfceb('0x5d')]({'plain':!![]});interaction_log[_0xfceb('0x23')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x434860[_0xfceb('0x64')]['id'],_0x434860[_0xfceb('0x64')][_0xfceb('0x36')],_0x434860[_0xfceb('0x64')]['role'],_0x261013[_0xfceb('0x63')]['id'],_0x434860[_0xfceb('0x56')]?JSON[_0xfceb('0x20')](_0x434860[_0xfceb('0x56')]):_0xfceb('0x65'));return respondWithRpcPromise(_0xfceb('0x66'),_0xfceb('0x67'),_0x261013);}return null;})[_0xfceb('0x33')](function(_0x1276a0){var _0x254dab=_0xfceb('0x68')+_0x1276a0[_0xfceb('0x22')]['ContactId'];return db[_0xfceb('0x69')][_0xfceb('0x3f')](_0x254dab,{'type':db[_0xfceb('0x6a')][_0xfceb('0x6b')][_0xfceb('0x6c')],'raw':!![]})[_0xfceb('0x33')](function(_0x163805){return _0x163805;});})[_0xfceb('0x33')](function(_0x1a446a){if(_0x1a446a){_0x261013['message'][_0xfceb('0x6d')]=_0x1a446a[0x0];if(!_0x434860['body']['UserId'])return;return db[_0xfceb('0x6e')]['find']({'where':{'id':_0x434860['body'][_0xfceb('0x5b')],'role':_0xfceb('0x5c')},'attributes':['id',_0xfceb('0x36'),_0xfceb('0x6f'),'email',_0xfceb('0x70')],'raw':!![]});}return null;})['then'](function(_0x35d7a8){if(!_0x35d7a8)return null;_0x261013[_0xfceb('0x22')][_0xfceb('0x5c')]=_0x35d7a8;return _0x261013;})[_0xfceb('0x33')](function(_0x1cd444){if(_0x1cd444){if(_0x434860[_0xfceb('0x56')]['manual']){_0x261013['message'][_0xfceb('0x71')]=util['format']('SIP/%s',_0x434860[_0xfceb('0x64')][_0xfceb('0x36')]);_0x261013[_0xfceb('0x22')]['channel']=_0x261013['channel'];_0x261013[_0xfceb('0x22')][_0xfceb('0x72')]=_0x261013[_0xfceb('0x73')];_0x261013[_0xfceb('0x22')][_0xfceb('0x74')]=_0xfceb('0x58');return respondWithRpcPromise(_0xfceb('0x75'),'EventManager',{'event':_0xfceb('0x76'),'message':_0x261013[_0xfceb('0x22')]},client9002)[_0xfceb('0x33')](function(){return _0x261013;});}return _0x261013;}return null;})[_0xfceb('0x33')](respondWithResult(_0x49bf21,null))[_0xfceb('0x26')](handleError(_0x49bf21,null));};var interaction_log=require(_0xfceb('0x13'))(_0xfceb('0x77'));exports['reject']=function(_0x2efd4c,_0x4a4683,_0x33c302){var _0x2ee082={'agent':{},'channel':'fax'};if(_0x2efd4c[_0xfceb('0x56')]['id']){delete _0x2efd4c[_0xfceb('0x56')]['id'];}_0x2efd4c[_0xfceb('0x56')]['UserId']=_0x2efd4c[_0xfceb('0x56')][_0xfceb('0x5b')]||_0x2efd4c[_0xfceb('0x64')]['id'];_0x2ee082[_0xfceb('0x5c')]['id']=_0x2efd4c[_0xfceb('0x56')]['UserId'];return db[_0xfceb('0x3a')]['find']({'where':{'id':_0x2efd4c[_0xfceb('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4a4683,null))[_0xfceb('0x33')](function(_0xc08cf4){if(_0xc08cf4){_0x2ee082[_0xfceb('0x22')]=_0xc08cf4['get']({'plain':!![]});return db['FaxInteraction']['find']({'where':{'id':_0xc08cf4['FaxInteractionId']}});}return null;})[_0xfceb('0x33')](handleEntityNotFound(_0x4a4683,null))['then'](function(_0xa76168){if(_0xa76168){_0x2ee082[_0xfceb('0x63')]=_0xa76168[_0xfceb('0x5d')]({'plain':!![]});interaction_log[_0xfceb('0x23')](_0xfceb('0x78'),_0x2efd4c['user']['id'],_0x2efd4c['user'][_0xfceb('0x36')],_0x2efd4c[_0xfceb('0x64')][_0xfceb('0x79')],_0x2ee082[_0xfceb('0x63')]['id'],_0x2efd4c[_0xfceb('0x56')]?JSON[_0xfceb('0x20')](_0x2efd4c[_0xfceb('0x56')]):'null');return respondWithRpcPromise(_0xfceb('0x7a'),_0xfceb('0x7b'),_0x2ee082);}return null;})[_0xfceb('0x33')](function(_0x33a4a1){var _0x292833=_0xfceb('0x68')+_0x33a4a1['message']['ContactId'];return db[_0xfceb('0x69')][_0xfceb('0x3f')](_0x292833,{'type':db[_0xfceb('0x6a')]['QueryTypes'][_0xfceb('0x6c')],'raw':!![]})['then'](function(_0x404b41){return _0x404b41;});})[_0xfceb('0x33')](function(_0x2a6e0f){if(_0x2a6e0f){_0x2ee082[_0xfceb('0x22')]['contact']=_0x2a6e0f[0x0];if(!_0x2efd4c[_0xfceb('0x56')]['UserId'])return;return db[_0xfceb('0x6e')][_0xfceb('0x55')]({'where':{'id':_0x2efd4c[_0xfceb('0x56')]['UserId'],'role':_0xfceb('0x5c')},'attributes':['id',_0xfceb('0x36'),'fullname','email','internal'],'raw':!![]});}return null;})[_0xfceb('0x33')](function(_0x53bdb7){if(!_0x53bdb7)return null;_0x2ee082[_0xfceb('0x22')]['agent']=_0x53bdb7;return _0x2ee082;})[_0xfceb('0x33')](function(_0x4cfbdd){if(_0x4cfbdd){_0x4cfbdd[_0xfceb('0x22')][_0xfceb('0x71')]=util['format'](_0xfceb('0x7c'),_0x2efd4c[_0xfceb('0x64')][_0xfceb('0x36')]);_0x4cfbdd[_0xfceb('0x22')][_0xfceb('0x73')]=_0x2ee082[_0xfceb('0x73')];_0x4cfbdd['message'][_0xfceb('0x72')]=_0x2ee082['channel'];_0x4cfbdd[_0xfceb('0x22')][_0xfceb('0x74')]=_0xfceb('0x7d');respondWithRpcPromise('EventManager',_0xfceb('0x75'),{'event':_0xfceb('0x7e'),'message':_0x4cfbdd[_0xfceb('0x22')]},client9002);return _0x2ee082;}return null;})[_0xfceb('0x33')](respondWithResult(_0x4a4683,null))[_0xfceb('0x26')](handleError(_0x4a4683,null));};exports[_0xfceb('0x7f')]=function(_0x392cdf,_0x452996){var _0x3011a3;return db['FaxMessage'][_0xfceb('0x7f')](_0x392cdf[_0xfceb('0x56')],{})['then'](function(_0x95d704){_0x3011a3=_0x95d704;return db['CmContact'][_0xfceb('0x80')]({'where':{'id':_0x3011a3['ContactId']}});})['then'](function(_0x3cbac2){if(_['isNil'](_0x3cbac2)){return;}else{_0x3011a3[_0xfceb('0x59')]=_0x3cbac2[_0xfceb('0x59')];return db['Attachment'][_0xfceb('0x80')]({'where':{'id':_0x3011a3[_0xfceb('0x81')]}});}})[_0xfceb('0x33')](function(_0x53db2c){return respondWithRpcPromise('SendFax',_0xfceb('0x82'),{'FaxAccountId':_[_0xfceb('0x60')](_0x392cdf[_0xfceb('0x56')])?undefined:_0x392cdf['body'][_0xfceb('0x83')],'path':_[_0xfceb('0x60')](_0x53db2c)?undefined:util[_0xfceb('0x62')](_0xfceb('0x84'),_0x53db2c[_0xfceb('0x85')]),'fax':_[_0xfceb('0x60')](_0x3011a3[_0xfceb('0x59')])?undefined:_0x3011a3[_0xfceb('0x59')],'AttachmentId':_0x3011a3[_0xfceb('0x81')]},client9002);})[_0xfceb('0x33')](respondWithResult(_0x452996,0xc9))[_0xfceb('0x26')](handleError(_0x452996,null));};exports[_0xfceb('0x86')]=function(_0x33dfc9,_0x3386f2){var _0x53e198=path[_0xfceb('0x87')](config[_0xfceb('0x88')],_0xfceb('0x89'),_0xfceb('0x8a'),_0xfceb('0x8b'));return db[_0xfceb('0x3a')][_0xfceb('0x55')]({'where':{'id':_0x33dfc9[_0xfceb('0x54')]['id']},'include':[{'model':db[_0xfceb('0x8c')],'as':'Attachment'}]})[_0xfceb('0x33')](handleEntityNotFound(_0x3386f2,null))[_0xfceb('0x33')](function(_0x5884ab){if(_0x5884ab){return _0x3386f2[_0xfceb('0x86')](path[_0xfceb('0x87')](_0x53e198,_0x5884ab[_0xfceb('0x8c')][_0xfceb('0x85')]));}})[_0xfceb('0x26')](handleError(_0x3386f2,null));};
\ No newline at end of file
+var _0xdd96=['describe','fax-interactions','accept','fax','read','readAt','format','UserId','user','get','FaxInteraction','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User','fullname','internal','agent','interface','SIP/%s','channel','event','EventManager','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','email','create','CmContact','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','files','attachments','eml-format','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','defaults','redis','localhost','socket.io-emitter','./faxMessage.socket','jayson/promise','client','request','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','type','filter','options','FaxMessage','include','findAll','show','includeAll','find','catch','body','params'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0xdd96,0x149));var _0x6dd9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdd96[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x6dd9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x6dd9('0x1'));var rp=require(_0x6dd9('0x2'));var moment=require('moment');var BPromise=require(_0x6dd9('0x3'));var Mustache=require('mustache');var util=require(_0x6dd9('0x4'));var path=require(_0x6dd9('0x5'));var sox=require(_0x6dd9('0x6'));var csv=require(_0x6dd9('0x7'));var ejs=require(_0x6dd9('0x8'));var fs=require('fs');var fs_extra=require(_0x6dd9('0x9'));var _=require(_0x6dd9('0xa'));var squel=require(_0x6dd9('0xb'));var crypto=require(_0x6dd9('0xc'));var jsforce=require(_0x6dd9('0xd'));var deskjs=require(_0x6dd9('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6dd9('0xf'));var Papa=require(_0x6dd9('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6dd9('0x11'));var as=require(_0x6dd9('0x12'));var hardwareService=require(_0x6dd9('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x6dd9('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x6dd9('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x6dd9('0x16')](config[_0x6dd9('0x17')],{'host':_0x6dd9('0x18'),'port':0x18eb});var socket=require(_0x6dd9('0x19'))(new Redis(config[_0x6dd9('0x17')]));require(_0x6dd9('0x1a'))['register'](socket);var jayson=require(_0x6dd9('0x1b'));var client=jayson[_0x6dd9('0x1c')]['http']({'port':0x232c});var client9002=jayson[_0x6dd9('0x1c')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ab69f,_0x56bd85,_0x1aec08,_0x58c833){return new BPromise(function(_0x14cddc,_0x44f04d){var _0xbd8e27=_0x58c833||client;return _0xbd8e27[_0x6dd9('0x1d')](_0x2ab69f,_0x1aec08)['then'](function(_0x47484b){logger[_0x6dd9('0x1e')](_0x6dd9('0x1f'),_0x56bd85,_0x6dd9('0x20'));logger[_0x6dd9('0x21')](_0x6dd9('0x22'),_0x56bd85,'request\x20sent',JSON[_0x6dd9('0x23')](_0x47484b));if(_0x47484b[_0x6dd9('0x24')]){if(_0x47484b[_0x6dd9('0x24')][_0x6dd9('0x25')]===0x1f4){logger[_0x6dd9('0x24')](_0x6dd9('0x1f'),_0x56bd85,_0x47484b['error']['message']);return _0x44f04d(_0x47484b['error'][_0x6dd9('0x26')]);}logger['error'](_0x6dd9('0x1f'),_0x56bd85,_0x47484b[_0x6dd9('0x24')]['message']);return _0x14cddc(_0x47484b['error'][_0x6dd9('0x26')]);}else{logger[_0x6dd9('0x1e')](_0x6dd9('0x1f'),_0x56bd85,_0x6dd9('0x20'));_0x14cddc(_0x47484b[_0x6dd9('0x27')][_0x6dd9('0x26')]);}})['catch'](function(_0x181293){logger[_0x6dd9('0x24')](_0x6dd9('0x1f'),_0x56bd85,_0x181293);_0x44f04d(_0x181293);});});}function respondWithStatusCode(_0x30a8bb,_0x2b50c6){_0x2b50c6=_0x2b50c6||0xcc;return function(_0x3fbbc8){if(_0x3fbbc8){return _0x30a8bb[_0x6dd9('0x28')](_0x2b50c6);}return _0x30a8bb[_0x6dd9('0x29')](_0x2b50c6)[_0x6dd9('0x2a')]();};}function respondWithResult(_0x4f3010,_0x4bbfe6){_0x4bbfe6=_0x4bbfe6||0xc8;return function(_0x4acd86){if(_0x4acd86){return _0x4f3010[_0x6dd9('0x29')](_0x4bbfe6)[_0x6dd9('0x2b')](_0x4acd86);}};}function respondWithFilteredResult(_0x1a698b,_0xca1fff){return function(_0x504dab){if(_0x504dab){var _0x543f28=typeof _0xca1fff['offset']===_0x6dd9('0x2c')&&typeof _0xca1fff[_0x6dd9('0x2d')]===_0x6dd9('0x2c');var _0x57b18e=_0x504dab[_0x6dd9('0x2e')];var _0x3f8e09=_0x543f28?0x0:_0xca1fff['offset'];var _0x762283=_0x543f28?_0x504dab[_0x6dd9('0x2e')]:_0xca1fff[_0x6dd9('0x2f')]+_0xca1fff[_0x6dd9('0x2d')];var _0x3aa58e;if(_0x762283>=_0x57b18e){_0x762283=_0x57b18e;_0x3aa58e=0xc8;}else{_0x3aa58e=0xce;}_0x1a698b[_0x6dd9('0x29')](_0x3aa58e);return _0x1a698b[_0x6dd9('0x30')]('Content-Range',_0x3f8e09+'-'+_0x762283+'/'+_0x57b18e)[_0x6dd9('0x2b')](_0x504dab);}return null;};}function patchUpdates(_0x289a0d){return function(_0xcd3149){try{jsonpatch[_0x6dd9('0x31')](_0xcd3149,_0x289a0d,!![]);}catch(_0x54e9cb){return BPromise[_0x6dd9('0x32')](_0x54e9cb);}return _0xcd3149[_0x6dd9('0x33')]();};}function saveUpdates(_0x4b8d06,_0x3160b1){return function(_0xc1bf67){if(_0xc1bf67){return _0xc1bf67[_0x6dd9('0x34')](_0x4b8d06)[_0x6dd9('0x35')](function(_0x3d1eb1){return _0x3d1eb1;});}return null;};}function removeEntity(_0x1147f3,_0x16a31f){return function(_0x2d1982){if(_0x2d1982){return _0x2d1982[_0x6dd9('0x36')]()[_0x6dd9('0x35')](function(){_0x1147f3['status'](0xcc)[_0x6dd9('0x2a')]();});}};}function handleEntityNotFound(_0x254277,_0x4ff13d){return function(_0xecd6a4){if(!_0xecd6a4){_0x254277[_0x6dd9('0x28')](0x194);}return _0xecd6a4;};}function handleError(_0x2fea71,_0x2bc792){_0x2bc792=_0x2bc792||0x1f4;return function(_0x3712a5){logger[_0x6dd9('0x24')](_0x3712a5[_0x6dd9('0x37')]);if(_0x3712a5[_0x6dd9('0x38')]){delete _0x3712a5[_0x6dd9('0x38')];}_0x2fea71[_0x6dd9('0x29')](_0x2bc792)['send'](_0x3712a5);};}exports[_0x6dd9('0x39')]=function(_0x4a7c15,_0x2c5a5b){var _0x960f3b={},_0x101e41={},_0x372c26={'count':0x0,'rows':[]};var _0x1261c6=_[_0x6dd9('0x3a')](db['FaxMessage'][_0x6dd9('0x3b')],function(_0x33b2e8){return{'name':_0x33b2e8[_0x6dd9('0x3c')],'type':_0x33b2e8['type'][_0x6dd9('0x3d')]};});_0x101e41[_0x6dd9('0x3e')]=_['map'](_0x1261c6,_0x6dd9('0x38'));_0x101e41[_0x6dd9('0x3f')]=_[_0x6dd9('0x40')](_0x4a7c15[_0x6dd9('0x3f')]);_0x101e41[_0x6dd9('0x41')]=_[_0x6dd9('0x42')](_0x101e41[_0x6dd9('0x3e')],_0x101e41[_0x6dd9('0x3f')]);_0x960f3b[_0x6dd9('0x43')]=_[_0x6dd9('0x42')](_0x101e41['model'],qs[_0x6dd9('0x44')](_0x4a7c15[_0x6dd9('0x3f')][_0x6dd9('0x44')]));_0x960f3b[_0x6dd9('0x43')]=_0x960f3b[_0x6dd9('0x43')][_0x6dd9('0x45')]?_0x960f3b['attributes']:_0x101e41[_0x6dd9('0x3e')];if(!_0x4a7c15[_0x6dd9('0x3f')]['hasOwnProperty'](_0x6dd9('0x46'))){_0x960f3b[_0x6dd9('0x2d')]=qs[_0x6dd9('0x2d')](_0x4a7c15['query'][_0x6dd9('0x2d')]);_0x960f3b[_0x6dd9('0x2f')]=qs[_0x6dd9('0x2f')](_0x4a7c15[_0x6dd9('0x3f')]['offset']);}_0x960f3b[_0x6dd9('0x47')]=qs[_0x6dd9('0x48')](_0x4a7c15[_0x6dd9('0x3f')][_0x6dd9('0x48')]);_0x960f3b[_0x6dd9('0x49')]=qs[_0x6dd9('0x41')](_[_0x6dd9('0x4a')](_0x4a7c15[_0x6dd9('0x3f')],_0x101e41['filters']),_0x1261c6);if(_0x4a7c15['query']['filter']){_0x960f3b[_0x6dd9('0x49')]=_[_0x6dd9('0x4b')](_0x960f3b[_0x6dd9('0x49')],{'$or':_[_0x6dd9('0x3a')](_0x1261c6,function(_0x19b23d){if(_0x19b23d[_0x6dd9('0x4c')]!=='VIRTUAL'){var _0x3ae27a={};_0x3ae27a[_0x19b23d['name']]={'$like':'%'+_0x4a7c15['query'][_0x6dd9('0x4d')]+'%'};return _0x3ae27a;}})});}_0x960f3b=_['merge']({},_0x960f3b,_0x4a7c15[_0x6dd9('0x4e')]);var _0x4367ea={'where':_0x960f3b[_0x6dd9('0x49')]};return db[_0x6dd9('0x4f')][_0x6dd9('0x2e')](_0x4367ea)['then'](function(_0x50b4f1){_0x372c26[_0x6dd9('0x2e')]=_0x50b4f1;if(_0x4a7c15[_0x6dd9('0x3f')]['includeAll']){_0x960f3b[_0x6dd9('0x50')]=[{'all':!![]}];}return db['FaxMessage'][_0x6dd9('0x51')](_0x960f3b);})['then'](function(_0xfd1308){_0x372c26['rows']=_0xfd1308;return _0x372c26;})[_0x6dd9('0x35')](respondWithFilteredResult(_0x2c5a5b,_0x960f3b))['catch'](handleError(_0x2c5a5b,null));};exports[_0x6dd9('0x52')]=function(_0x2bb856,_0x50f3e7){var _0x5befc5={'raw':!![],'where':{'id':_0x2bb856['params']['id']}},_0x48d35d={};_0x48d35d[_0x6dd9('0x3e')]=_[_0x6dd9('0x40')](db[_0x6dd9('0x4f')][_0x6dd9('0x3b')]);_0x48d35d[_0x6dd9('0x3f')]=_['keys'](_0x2bb856[_0x6dd9('0x3f')]);_0x48d35d[_0x6dd9('0x41')]=_['intersection'](_0x48d35d[_0x6dd9('0x3e')],_0x48d35d[_0x6dd9('0x3f')]);_0x5befc5[_0x6dd9('0x43')]=_[_0x6dd9('0x42')](_0x48d35d[_0x6dd9('0x3e')],qs['fields'](_0x2bb856[_0x6dd9('0x3f')][_0x6dd9('0x44')]));_0x5befc5[_0x6dd9('0x43')]=_0x5befc5[_0x6dd9('0x43')]['length']?_0x5befc5['attributes']:_0x48d35d['model'];if(_0x2bb856['query'][_0x6dd9('0x53')]){_0x5befc5[_0x6dd9('0x50')]=[{'all':!![]}];}_0x5befc5=_[_0x6dd9('0x4b')]({},_0x5befc5,_0x2bb856[_0x6dd9('0x4e')]);return db[_0x6dd9('0x4f')][_0x6dd9('0x54')](_0x5befc5)[_0x6dd9('0x35')](handleEntityNotFound(_0x50f3e7,null))[_0x6dd9('0x35')](respondWithResult(_0x50f3e7,null))[_0x6dd9('0x55')](handleError(_0x50f3e7,null));};exports[_0x6dd9('0x34')]=function(_0x5c916a,_0xc162d5){if(_0x5c916a[_0x6dd9('0x56')]['id']){delete _0x5c916a[_0x6dd9('0x56')]['id'];}return db[_0x6dd9('0x4f')][_0x6dd9('0x54')]({'where':{'id':_0x5c916a[_0x6dd9('0x57')]['id']}})[_0x6dd9('0x35')](handleEntityNotFound(_0xc162d5,null))[_0x6dd9('0x35')](saveUpdates(_0x5c916a['body'],null))['then'](respondWithResult(_0xc162d5,null))[_0x6dd9('0x55')](handleError(_0xc162d5,null));};exports[_0x6dd9('0x36')]=function(_0x1fbb54,_0x362595){return db[_0x6dd9('0x4f')]['find']({'where':{'id':_0x1fbb54[_0x6dd9('0x57')]['id']}})['then'](handleEntityNotFound(_0x362595,null))[_0x6dd9('0x35')](removeEntity(_0x362595,null))[_0x6dd9('0x55')](handleError(_0x362595,null));};exports[_0x6dd9('0x58')]=function(_0x142c9b,_0x3da3b7){return db[_0x6dd9('0x4f')][_0x6dd9('0x58')]()[_0x6dd9('0x35')](respondWithResult(_0x3da3b7,null))[_0x6dd9('0x55')](handleError(_0x3da3b7,null));};var interaction_log=require('../../config/logger')(_0x6dd9('0x59'));exports[_0x6dd9('0x5a')]=function(_0x11c37c,_0x56795f,_0x291f23){var _0x48b4be={'agent':{},'channel':_0x6dd9('0x5b')};if(_0x11c37c[_0x6dd9('0x56')]['id']){delete _0x11c37c['body']['id'];}_0x11c37c[_0x6dd9('0x56')][_0x6dd9('0x5c')]=!![];_0x11c37c[_0x6dd9('0x56')][_0x6dd9('0x5d')]=moment()[_0x6dd9('0x5e')]('YYYY-MM-DD\x20HH:mm:ss');_0x11c37c[_0x6dd9('0x56')][_0x6dd9('0x5f')]=_0x11c37c[_0x6dd9('0x56')][_0x6dd9('0x5f')]||_0x11c37c[_0x6dd9('0x60')]['id'];_0x48b4be['agent']['id']=_0x11c37c['body']['UserId'];return db[_0x6dd9('0x4f')][_0x6dd9('0x54')]({'where':{'id':_0x11c37c['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x56795f,null))[_0x6dd9('0x35')](saveUpdates(_0x11c37c[_0x6dd9('0x56')],null))[_0x6dd9('0x35')](function(_0x1c125c){if(_0x1c125c){_0x48b4be['message']=_0x1c125c[_0x6dd9('0x61')]({'plain':!![]});return db[_0x6dd9('0x62')][_0x6dd9('0x54')]({'where':{'id':_0x1c125c['FaxInteractionId']}});}return null;})[_0x6dd9('0x35')](handleEntityNotFound(_0x56795f,null))['then'](function(_0x3c0288){if(_0x3c0288){return _0x3c0288['update']({'UserId':_0x11c37c[_0x6dd9('0x56')][_0x6dd9('0x5f')],'read1stAt':_[_0x6dd9('0x63')](_0x3c0288[_0x6dd9('0x64')])?moment()[_0x6dd9('0x5e')](_0x6dd9('0x65')):undefined});}return null;})[_0x6dd9('0x35')](function(_0x3968aa){if(_0x3968aa){_0x48b4be[_0x6dd9('0x66')]=_0x3968aa[_0x6dd9('0x61')]({'plain':!![]});interaction_log[_0x6dd9('0x1e')](_0x6dd9('0x67'),_0x11c37c[_0x6dd9('0x60')]['id'],_0x11c37c['user'][_0x6dd9('0x38')],_0x11c37c[_0x6dd9('0x60')][_0x6dd9('0x68')],_0x48b4be[_0x6dd9('0x66')]['id'],_0x11c37c[_0x6dd9('0x56')]?JSON[_0x6dd9('0x23')](_0x11c37c[_0x6dd9('0x56')]):_0x6dd9('0x69'));return respondWithRpcPromise(_0x6dd9('0x6a'),'acceptMessage',_0x48b4be);}return null;})[_0x6dd9('0x35')](function(_0x1850bc){var _0x23e7d3=_0x6dd9('0x6b')+_0x1850bc[_0x6dd9('0x26')][_0x6dd9('0x6c')];return db[_0x6dd9('0x6d')]['query'](_0x23e7d3,{'type':db[_0x6dd9('0x6e')][_0x6dd9('0x6f')]['SELECT'],'raw':!![]})[_0x6dd9('0x35')](function(_0x44fb52){return _0x44fb52;});})['then'](function(_0x5bbc2c){if(_0x5bbc2c){_0x48b4be[_0x6dd9('0x26')][_0x6dd9('0x70')]=_0x5bbc2c[0x0];if(!_0x11c37c['body'][_0x6dd9('0x5f')])return;return db[_0x6dd9('0x71')][_0x6dd9('0x54')]({'where':{'id':_0x11c37c[_0x6dd9('0x56')][_0x6dd9('0x5f')],'role':'agent'},'attributes':['id',_0x6dd9('0x38'),_0x6dd9('0x72'),'email',_0x6dd9('0x73')],'raw':!![]});}return null;})[_0x6dd9('0x35')](function(_0x398a18){if(!_0x398a18)return null;_0x48b4be[_0x6dd9('0x26')][_0x6dd9('0x74')]=_0x398a18;return _0x48b4be;})[_0x6dd9('0x35')](function(_0x56fa0b){if(_0x56fa0b){if(_0x11c37c[_0x6dd9('0x56')]['manual']){_0x48b4be['message'][_0x6dd9('0x75')]=util[_0x6dd9('0x5e')](_0x6dd9('0x76'),_0x11c37c[_0x6dd9('0x60')][_0x6dd9('0x38')]);_0x48b4be[_0x6dd9('0x26')][_0x6dd9('0x77')]=_0x48b4be['channel'];_0x48b4be[_0x6dd9('0x26')][_0x6dd9('0x78')]=_0x6dd9('0x5a');return respondWithRpcPromise(_0x6dd9('0x79'),_0x6dd9('0x79'),{'event':'acceptmessage','message':_0x48b4be[_0x6dd9('0x26')]},client9002)['then'](function(){return _0x48b4be;});}return _0x48b4be;}return null;})[_0x6dd9('0x35')](respondWithResult(_0x56795f,null))[_0x6dd9('0x55')](handleError(_0x56795f,null));};var interaction_log=require('../../config/logger')(_0x6dd9('0x59'));exports[_0x6dd9('0x32')]=function(_0x5395d3,_0x2852c9,_0x267435){var _0x165af5={'agent':{},'channel':_0x6dd9('0x5b')};if(_0x5395d3[_0x6dd9('0x56')]['id']){delete _0x5395d3[_0x6dd9('0x56')]['id'];}_0x5395d3[_0x6dd9('0x56')][_0x6dd9('0x5f')]=_0x5395d3[_0x6dd9('0x56')][_0x6dd9('0x5f')]||_0x5395d3[_0x6dd9('0x60')]['id'];_0x165af5[_0x6dd9('0x74')]['id']=_0x5395d3['body'][_0x6dd9('0x5f')];return db[_0x6dd9('0x4f')]['find']({'where':{'id':_0x5395d3['params']['id'],'UserId':null}})[_0x6dd9('0x35')](handleEntityNotFound(_0x2852c9,null))[_0x6dd9('0x35')](function(_0xbac07){if(_0xbac07){_0x165af5[_0x6dd9('0x26')]=_0xbac07[_0x6dd9('0x61')]({'plain':!![]});return db[_0x6dd9('0x62')][_0x6dd9('0x54')]({'where':{'id':_0xbac07['FaxInteractionId']}});}return null;})[_0x6dd9('0x35')](handleEntityNotFound(_0x2852c9,null))[_0x6dd9('0x35')](function(_0x4f8e46){if(_0x4f8e46){_0x165af5[_0x6dd9('0x66')]=_0x4f8e46[_0x6dd9('0x61')]({'plain':!![]});interaction_log[_0x6dd9('0x1e')](_0x6dd9('0x7a'),_0x5395d3['user']['id'],_0x5395d3[_0x6dd9('0x60')][_0x6dd9('0x38')],_0x5395d3[_0x6dd9('0x60')][_0x6dd9('0x68')],_0x165af5[_0x6dd9('0x66')]['id'],_0x5395d3[_0x6dd9('0x56')]?JSON[_0x6dd9('0x23')](_0x5395d3['body']):'null');return respondWithRpcPromise('RejectMessage','rejectMessage',_0x165af5);}return null;})[_0x6dd9('0x35')](function(_0x1de0c3){var _0x28e61c='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1de0c3[_0x6dd9('0x26')][_0x6dd9('0x6c')];return db[_0x6dd9('0x6d')][_0x6dd9('0x3f')](_0x28e61c,{'type':db[_0x6dd9('0x6e')]['QueryTypes']['SELECT'],'raw':!![]})[_0x6dd9('0x35')](function(_0x86b4ca){return _0x86b4ca;});})[_0x6dd9('0x35')](function(_0x27e361){if(_0x27e361){_0x165af5[_0x6dd9('0x26')][_0x6dd9('0x70')]=_0x27e361[0x0];if(!_0x5395d3[_0x6dd9('0x56')][_0x6dd9('0x5f')])return;return db[_0x6dd9('0x71')][_0x6dd9('0x54')]({'where':{'id':_0x5395d3['body']['UserId'],'role':_0x6dd9('0x74')},'attributes':['id',_0x6dd9('0x38'),'fullname',_0x6dd9('0x7b'),_0x6dd9('0x73')],'raw':!![]});}return null;})[_0x6dd9('0x35')](function(_0x322cef){if(!_0x322cef)return null;_0x165af5[_0x6dd9('0x26')][_0x6dd9('0x74')]=_0x322cef;return _0x165af5;})['then'](function(_0x4d8a36){if(_0x4d8a36){_0x4d8a36['message'][_0x6dd9('0x75')]=util[_0x6dd9('0x5e')](_0x6dd9('0x76'),_0x5395d3[_0x6dd9('0x60')][_0x6dd9('0x38')]);_0x4d8a36[_0x6dd9('0x26')][_0x6dd9('0x77')]=_0x165af5[_0x6dd9('0x77')];_0x4d8a36[_0x6dd9('0x26')]['event']='reject';respondWithRpcPromise(_0x6dd9('0x79'),'EventManager',{'event':'rejectmessage','message':_0x4d8a36[_0x6dd9('0x26')]},client9002);return _0x165af5;}return null;})[_0x6dd9('0x35')](respondWithResult(_0x2852c9,null))[_0x6dd9('0x55')](handleError(_0x2852c9,null));};exports[_0x6dd9('0x7c')]=function(_0x445ab0,_0x41287c){var _0x3d2f91;return db[_0x6dd9('0x4f')][_0x6dd9('0x7c')](_0x445ab0['body'],{})[_0x6dd9('0x35')](function(_0x48d6fd){_0x3d2f91=_0x48d6fd;return db[_0x6dd9('0x7d')][_0x6dd9('0x7e')]({'where':{'id':_0x3d2f91['ContactId']}});})[_0x6dd9('0x35')](function(_0x40bb1a){if(_[_0x6dd9('0x63')](_0x40bb1a)){return;}else{_0x3d2f91[_0x6dd9('0x5b')]=_0x40bb1a[_0x6dd9('0x5b')];return db[_0x6dd9('0x7f')][_0x6dd9('0x7e')]({'where':{'id':_0x3d2f91[_0x6dd9('0x80')]}});}})[_0x6dd9('0x35')](function(_0x1be0f1){return respondWithRpcPromise(_0x6dd9('0x81'),'SendFax',{'FaxAccountId':_[_0x6dd9('0x63')](_0x445ab0[_0x6dd9('0x56')])?undefined:_0x445ab0['body'][_0x6dd9('0x82')],'path':_['isNil'](_0x1be0f1)?undefined:util[_0x6dd9('0x5e')](_0x6dd9('0x83'),_0x1be0f1[_0x6dd9('0x84')]),'fax':_[_0x6dd9('0x63')](_0x3d2f91[_0x6dd9('0x5b')])?undefined:_0x3d2f91[_0x6dd9('0x5b')],'AttachmentId':_0x3d2f91['AttachmentId']},client9002);})[_0x6dd9('0x35')](respondWithResult(_0x41287c,0xc9))[_0x6dd9('0x55')](handleError(_0x41287c,null));};exports[_0x6dd9('0x85')]=function(_0x55e97f,_0x240dbd){var _0x71cd5a=path[_0x6dd9('0x86')](config[_0x6dd9('0x87')],_0x6dd9('0x88'),_0x6dd9('0x89'),_0x6dd9('0x8a'));return db[_0x6dd9('0x4f')][_0x6dd9('0x54')]({'where':{'id':_0x55e97f[_0x6dd9('0x57')]['id']},'include':[{'model':db[_0x6dd9('0x7f')],'as':_0x6dd9('0x7f')}]})[_0x6dd9('0x35')](handleEntityNotFound(_0x240dbd,null))[_0x6dd9('0x35')](function(_0x2ed0a3){if(_0x2ed0a3){return _0x240dbd[_0x6dd9('0x85')](path[_0x6dd9('0x86')](_0x71cd5a,_0x2ed0a3[_0x6dd9('0x7f')][_0x6dd9('0x84')]));}})[_0x6dd9('0x55')](handleError(_0x240dbd,null));};
\ No newline at end of file
index 3192f5a..34ee0aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6363=['emit','hasOwnProperty','hook','exports','events','FaxMessage','setMaxListeners','save','update','remove'];(function(_0x9d9343,_0x494c83){var _0x2abcd2=function(_0x101a63){while(--_0x101a63){_0x9d9343['push'](_0x9d9343['shift']());}};_0x2abcd2(++_0x494c83);}(_0x6363,0x13a));var _0x3636=function(_0x24ef73,_0x3302ba){_0x24ef73=_0x24ef73-0x0;var _0x5137f7=_0x6363[_0x24ef73];return _0x5137f7;};'use strict';var EventEmitter=require(_0x3636('0x0'));var FaxMessage=require('../../mysqldb')['db'][_0x3636('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x3636('0x2')](0x0);var events={'afterCreate':_0x3636('0x3'),'afterUpdate':_0x3636('0x4'),'afterDestroy':_0x3636('0x5')};function emitEvent(_0x684396){return function(_0x1335a2,_0xdf836f,_0x1e62e9){FaxMessageEvents[_0x3636('0x6')](_0x684396+':'+_0x1335a2['id'],_0x1335a2);FaxMessageEvents[_0x3636('0x6')](_0x684396,_0x1335a2);_0x1e62e9(null);};}for(var e in events){if(events[_0x3636('0x7')](e)){var event=events[e];FaxMessage[_0x3636('0x8')](e,emitEvent(event));}}module[_0x3636('0x9')]=FaxMessageEvents;
\ No newline at end of file
+var _0xcfef=['../../mysqldb','FaxMessage','setMaxListeners','emit','hook'];(function(_0x83c9ee,_0x422789){var _0x25e384=function(_0x52df5f){while(--_0x52df5f){_0x83c9ee['push'](_0x83c9ee['shift']());}};_0x25e384(++_0x422789);}(_0xcfef,0x1cc));var _0xfcfe=function(_0x43aaa2,_0x406850){_0x43aaa2=_0x43aaa2-0x0;var _0x218f35=_0xcfef[_0x43aaa2];return _0x218f35;};'use strict';var EventEmitter=require('events');var FaxMessage=require(_0xfcfe('0x0'))['db'][_0xfcfe('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xfcfe('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x5e80c9){return function(_0x1bee79,_0x21c122,_0x3abede){FaxMessageEvents[_0xfcfe('0x3')](_0x5e80c9+':'+_0x1bee79['id'],_0x1bee79);FaxMessageEvents['emit'](_0x5e80c9,_0x1bee79);_0x3abede(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage[_0xfcfe('0x4')](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
index 32ca070..0776a38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffe2=['lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./faxMessage.attributes','define','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','models','get','direction','toLowerCase','isNil','UserId','FaxInteraction','findOne','then','update','createdAt','catch','utf8mb4','utf8mb4_unicode_ci'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0xffe2,0x1d0));var _0x2ffe=function(_0xbd15e3,_0x31dd1b){_0xbd15e3=_0xbd15e3-0x0;var _0x309e04=_0xffe2[_0xbd15e3];return _0x309e04;};'use strict';var _=require(_0x2ffe('0x0'));var util=require(_0x2ffe('0x1'));var logger=require(_0x2ffe('0x2'))(_0x2ffe('0x3'));var moment=require('moment');var BPromise=require(_0x2ffe('0x4'));var rp=require(_0x2ffe('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2ffe('0x6'));var config=require(_0x2ffe('0x7'));var attributes=require(_0x2ffe('0x8'));module['exports']=function(_0x27dcc2,_0x928695){return _0x27dcc2[_0x2ffe('0x9')](_0x2ffe('0xa'),attributes,{'tableName':_0x2ffe('0xb'),'paranoid':![],'indexes':[{'name':_0x2ffe('0xc'),'fields':[_0x2ffe('0xd')],'type':_0x2ffe('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5358c9,_0x1a6eac,_0x5dad83){var _0x501721=_0x27dcc2[_0x2ffe('0xf')];var _0x52f960=_0x5358c9[_0x2ffe('0x10')]({'plain':!![]});if(_0x52f960[_0x2ffe('0x11')][_0x2ffe('0x12')]()==='in'||_0x52f960[_0x2ffe('0x11')][_0x2ffe('0x12')]()==='out'&&!_0x52f960['secret']&&!_[_0x2ffe('0x13')](_0x52f960[_0x2ffe('0x14')])){_0x501721[_0x2ffe('0x15')][_0x2ffe('0x16')]({'where':{'id':_0x52f960['FaxInteractionId']}})[_0x2ffe('0x17')](function(_0x59e6e6){if(_0x59e6e6){_0x59e6e6[_0x2ffe('0x18')]({'lastMsgAt':_0x52f960[_0x2ffe('0x19')],'lastMsgDirection':_0x52f960[_0x2ffe('0x11')][_0x2ffe('0x12')]()});}})[_0x2ffe('0x1a')](function(_0x228e4e){console['error'](_0x228e4e);});}_0x5dad83();}},'charset':_0x2ffe('0x1b'),'collate':_0x2ffe('0x1c')});};
\ No newline at end of file
+var _0x3cc2=['exports','fax_messages','fti_fax_messages','body','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','FaxInteraction','findOne','FaxInteractionId','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','moment','bluebird','request-promise','path','rimraf','./faxMessage.attributes'];(function(_0xeafa32,_0xf870cf){var _0x32fcff=function(_0x338518){while(--_0x338518){_0xeafa32['push'](_0xeafa32['shift']());}};_0x32fcff(++_0xf870cf);}(_0x3cc2,0x1d4));var _0x23cc=function(_0x284268,_0x338286){_0x284268=_0x284268-0x0;var _0x2c043b=_0x3cc2[_0x284268];return _0x2c043b;};'use strict';var _=require(_0x23cc('0x0'));var util=require(_0x23cc('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x23cc('0x2'));var BPromise=require(_0x23cc('0x3'));var rp=require(_0x23cc('0x4'));var fs=require('fs');var path=require(_0x23cc('0x5'));var rimraf=require(_0x23cc('0x6'));var config=require('../../config/environment');var attributes=require(_0x23cc('0x7'));module[_0x23cc('0x8')]=function(_0xa38286,_0x1bc42f){return _0xa38286['define']('FaxMessage',attributes,{'tableName':_0x23cc('0x9'),'paranoid':![],'indexes':[{'name':_0x23cc('0xa'),'fields':[_0x23cc('0xb')],'type':_0x23cc('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5d91fc,_0x9db6f1,_0x1158bb){var _0x1a8dae=_0xa38286[_0x23cc('0xd')];var _0x55ba8a=_0x5d91fc['get']({'plain':!![]});if(_0x55ba8a[_0x23cc('0xe')]['toLowerCase']()==='in'||_0x55ba8a[_0x23cc('0xe')][_0x23cc('0xf')]()===_0x23cc('0x10')&&!_0x55ba8a[_0x23cc('0x11')]&&!_[_0x23cc('0x12')](_0x55ba8a['UserId'])){_0x1a8dae[_0x23cc('0x13')][_0x23cc('0x14')]({'where':{'id':_0x55ba8a[_0x23cc('0x15')]}})['then'](function(_0x2b78f3){if(_0x2b78f3){_0x2b78f3[_0x23cc('0x16')]({'lastMsgAt':_0x55ba8a[_0x23cc('0x17')],'lastMsgDirection':_0x55ba8a[_0x23cc('0xe')][_0x23cc('0xf')]()});}})[_0x23cc('0x18')](function(_0x4a7e99){console[_0x23cc('0x19')](_0x4a7e99);});}_0x1158bb();}},'charset':_0x23cc('0x1a'),'collate':_0x23cc('0x1b')});};
\ No newline at end of file
index 6133155..d2553e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./faxMessage.socket','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','code','error','message','catch','CreateFaxMessage','FaxMessage','body','options','raw','UpdateFaxMessage','update','attributes','limit','debug','stringify','lodash','util','ioredis'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x55ca,0x126));var _0xa55c=function(_0x52a7e1,_0x189bf3){_0x52a7e1=_0x52a7e1-0x0;var _0x4f4495=_0x55ca[_0x52a7e1];return _0x4f4495;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa55c('0x2'));var db=require(_0xa55c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa55c('0x4'))(_0xa55c('0x5'));var config=require(_0xa55c('0x6'));var jayson=require(_0xa55c('0x7'));var client=jayson[_0xa55c('0x8')][_0xa55c('0x9')]({'port':0x232a});config[_0xa55c('0xa')]=_['defaults'](config[_0xa55c('0xa')],{'host':_0xa55c('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa55c('0xa')]));require(_0xa55c('0xc'))['register'](socket);function respondWithRpcPromise(_0x5849ad,_0x473d0e,_0x20c76a){return new BPromise(function(_0x381d07,_0x5d8e5a){return client[_0xa55c('0xd')](_0x5849ad,_0x20c76a)[_0xa55c('0xe')](function(_0x508342){logger[_0xa55c('0xf')](_0xa55c('0x10'),_0x473d0e,_0xa55c('0x11'));logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0x473d0e,_0xa55c('0x11'),JSON['stringify'](_0x508342));if(_0x508342['error']){if(_0x508342['error'][_0xa55c('0x12')]===0x1f4){logger[_0xa55c('0x13')](_0xa55c('0x10'),_0x473d0e,_0x508342[_0xa55c('0x13')][_0xa55c('0x14')]);return _0x5d8e5a(_0x508342[_0xa55c('0x13')]['message']);}logger[_0xa55c('0x13')](_0xa55c('0x10'),_0x473d0e,_0x508342[_0xa55c('0x13')][_0xa55c('0x14')]);return _0x381d07(_0x508342[_0xa55c('0x13')][_0xa55c('0x14')]);}else{logger[_0xa55c('0xf')](_0xa55c('0x10'),_0x473d0e,_0xa55c('0x11'));_0x381d07(_0x508342['result'][_0xa55c('0x14')]);}})[_0xa55c('0x15')](function(_0x461284){logger[_0xa55c('0x13')](_0xa55c('0x10'),_0x473d0e,_0x461284);_0x5d8e5a(_0x461284);});});}exports[_0xa55c('0x16')]=function(_0x4c0daf){var _0x5f5158=this;return new Promise(function(_0xd643cc,_0x3776ac){return db[_0xa55c('0x17')]['create'](_0x4c0daf[_0xa55c('0x18')],{'raw':_0x4c0daf[_0xa55c('0x19')]?_0x4c0daf['options'][_0xa55c('0x1a')]===undefined?!![]:![]:!![]})[_0xa55c('0xe')](function(_0x940f28){logger[_0xa55c('0xf')](_0xa55c('0x16'),_0x4c0daf);logger['debug'](_0xa55c('0x16'),_0x4c0daf,JSON['stringify'](_0x940f28));_0xd643cc(_0x940f28);})['catch'](function(_0x59d89a){logger[_0xa55c('0x13')]('CreateFaxMessage',_0x59d89a[_0xa55c('0x14')],_0x4c0daf);_0x3776ac(_0x5f5158[_0xa55c('0x13')](0x1f4,_0x59d89a[_0xa55c('0x14')]));});});};exports[_0xa55c('0x1b')]=function(_0x2313a9){var _0x170ba4=this;return new Promise(function(_0x1da633,_0x11e7f7){return db[_0xa55c('0x17')][_0xa55c('0x1c')](_0x2313a9[_0xa55c('0x18')],{'raw':_0x2313a9['options']?_0x2313a9[_0xa55c('0x19')][_0xa55c('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2313a9[_0xa55c('0x19')]?_0x2313a9[_0xa55c('0x19')]['where']||null:null,'attributes':_0x2313a9[_0xa55c('0x19')]?_0x2313a9[_0xa55c('0x19')][_0xa55c('0x1d')]||null:null,'limit':_0x2313a9[_0xa55c('0x19')]?_0x2313a9[_0xa55c('0x19')][_0xa55c('0x1e')]||null:null})['then'](function(_0x23e698){logger['info'](_0xa55c('0x1b'),_0x2313a9);logger[_0xa55c('0x1f')](_0xa55c('0x1b'),_0x2313a9,JSON[_0xa55c('0x20')](_0x23e698));_0x1da633(_0x23e698);})['catch'](function(_0x3d28fb){logger[_0xa55c('0x13')](_0xa55c('0x1b'),_0x3d28fb[_0xa55c('0x14')],_0x2313a9);_0x11e7f7(_0x170ba4[_0xa55c('0x13')](0x1f4,_0x3d28fb[_0xa55c('0x14')]));});});};
\ No newline at end of file
+var _0x668b=['./faxMessage.socket','register','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateFaxMessage','FaxMessage','create','body','raw','UpdateFaxMessage','update','options','where','attributes','limit','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost'];(function(_0x505c41,_0x104973){var _0x64a3ce=function(_0x5785ab){while(--_0x5785ab){_0x505c41['push'](_0x505c41['shift']());}};_0x64a3ce(++_0x104973);}(_0x668b,0x140));var _0xb668=function(_0x53e3fa,_0x50c5f2){_0x53e3fa=_0x53e3fa-0x0;var _0xe8584a=_0x668b[_0x53e3fa];return _0xe8584a;};'use strict';var _=require(_0xb668('0x0'));var util=require(_0xb668('0x1'));var moment=require('moment');var BPromise=require(_0xb668('0x2'));var rs=require(_0xb668('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb668('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb668('0x5'))(_0xb668('0x6'));var config=require(_0xb668('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb668('0x8')][_0xb668('0x9')]({'port':0x232a});config[_0xb668('0xa')]=_[_0xb668('0xb')](config[_0xb668('0xa')],{'host':_0xb668('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb668('0xa')]));require(_0xb668('0xd'))[_0xb668('0xe')](socket);function respondWithRpcPromise(_0x16d50d,_0x39b79c,_0x3606a7){return new BPromise(function(_0x45bc39,_0x3616e9){return client['request'](_0x16d50d,_0x3606a7)[_0xb668('0xf')](function(_0x27dbf7){logger[_0xb668('0x10')](_0xb668('0x11'),_0x39b79c,_0xb668('0x12'));logger[_0xb668('0x13')](_0xb668('0x14'),_0x39b79c,_0xb668('0x12'),JSON[_0xb668('0x15')](_0x27dbf7));if(_0x27dbf7[_0xb668('0x16')]){if(_0x27dbf7[_0xb668('0x16')][_0xb668('0x17')]===0x1f4){logger[_0xb668('0x16')](_0xb668('0x11'),_0x39b79c,_0x27dbf7[_0xb668('0x16')][_0xb668('0x18')]);return _0x3616e9(_0x27dbf7[_0xb668('0x16')][_0xb668('0x18')]);}logger[_0xb668('0x16')](_0xb668('0x11'),_0x39b79c,_0x27dbf7[_0xb668('0x16')][_0xb668('0x18')]);return _0x45bc39(_0x27dbf7['error'][_0xb668('0x18')]);}else{logger['info'](_0xb668('0x11'),_0x39b79c,_0xb668('0x12'));_0x45bc39(_0x27dbf7['result'][_0xb668('0x18')]);}})[_0xb668('0x19')](function(_0x53ff78){logger[_0xb668('0x16')]('FaxMessage,\x20%s,\x20%s',_0x39b79c,_0x53ff78);_0x3616e9(_0x53ff78);});});}exports[_0xb668('0x1a')]=function(_0x178a5d){var _0x253ba5=this;return new Promise(function(_0x12805a,_0x5d33ae){return db[_0xb668('0x1b')][_0xb668('0x1c')](_0x178a5d[_0xb668('0x1d')],{'raw':_0x178a5d['options']?_0x178a5d['options'][_0xb668('0x1e')]===undefined?!![]:![]:!![]})[_0xb668('0xf')](function(_0x517eee){logger[_0xb668('0x10')]('CreateFaxMessage',_0x178a5d);logger[_0xb668('0x13')]('CreateFaxMessage',_0x178a5d,JSON[_0xb668('0x15')](_0x517eee));_0x12805a(_0x517eee);})[_0xb668('0x19')](function(_0x3f84c7){logger[_0xb668('0x16')](_0xb668('0x1a'),_0x3f84c7[_0xb668('0x18')],_0x178a5d);_0x5d33ae(_0x253ba5['error'](0x1f4,_0x3f84c7[_0xb668('0x18')]));});});};exports[_0xb668('0x1f')]=function(_0x2ab8c2){var _0x49abfd=this;return new Promise(function(_0x5e0cee,_0xe62fce){return db[_0xb668('0x1b')][_0xb668('0x20')](_0x2ab8c2['body'],{'raw':_0x2ab8c2[_0xb668('0x21')]?_0x2ab8c2[_0xb668('0x21')][_0xb668('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2ab8c2['options']?_0x2ab8c2['options'][_0xb668('0x22')]||null:null,'attributes':_0x2ab8c2[_0xb668('0x21')]?_0x2ab8c2['options'][_0xb668('0x23')]||null:null,'limit':_0x2ab8c2[_0xb668('0x21')]?_0x2ab8c2[_0xb668('0x21')][_0xb668('0x24')]||null:null})[_0xb668('0xf')](function(_0x5f36b5){logger[_0xb668('0x10')](_0xb668('0x1f'),_0x2ab8c2);logger['debug'](_0xb668('0x1f'),_0x2ab8c2,JSON['stringify'](_0x5f36b5));_0x5e0cee(_0x5f36b5);})[_0xb668('0x19')](function(_0x406cc5){logger[_0xb668('0x16')](_0xb668('0x1f'),_0x406cc5[_0xb668('0x18')],_0x2ab8c2);_0xe62fce(_0x49abfd[_0xb668('0x16')](0x1f4,_0x406cc5[_0xb668('0x18')]));});});};
\ No newline at end of file
index 925caf5..0f46542 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaaf=['remove','update','emit','removeListener','register','length','save'];(function(_0x2f62aa,_0x108e95){var _0x1a341f=function(_0x3aedcf){while(--_0x3aedcf){_0x2f62aa['push'](_0x2f62aa['shift']());}};_0x1a341f(++_0x108e95);}(_0xeaaf,0x13a));var _0xfeaa=function(_0x6ed8bc,_0x35d1fa){_0x6ed8bc=_0x6ed8bc-0x0;var _0x5a0974=_0xeaaf[_0x6ed8bc];return _0x5a0974;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0xfeaa('0x0'),_0xfeaa('0x1'),_0xfeaa('0x2')];function createListener(_0x373e46,_0x3f370a){return function(_0x1cbc62){_0x3f370a[_0xfeaa('0x3')](_0x373e46,_0x1cbc62);};}function removeListener(_0x1b2fb4,_0xe14170){return function(){FaxMessageEvents[_0xfeaa('0x4')](_0x1b2fb4,_0xe14170);};}exports[_0xfeaa('0x5')]=function(_0x16382f){for(var _0x579cfc=0x0,_0x168923=events[_0xfeaa('0x6')];_0x579cfc<_0x168923;_0x579cfc++){var _0x3f000d=events[_0x579cfc];var _0x23b61f=createListener('faxMessage:'+_0x3f000d,_0x16382f);FaxMessageEvents['on'](_0x3f000d,_0x23b61f);}};
\ No newline at end of file
+var _0xc9de=['removeListener','register','length','faxMessage:','./faxMessage.events','save','remove','update','emit'];(function(_0x277a88,_0xa478ed){var _0x334ad1=function(_0x255215){while(--_0x255215){_0x277a88['push'](_0x277a88['shift']());}};_0x334ad1(++_0xa478ed);}(_0xc9de,0x100));var _0xec9d=function(_0x230c29,_0x12a464){_0x230c29=_0x230c29-0x0;var _0x405f4c=_0xc9de[_0x230c29];return _0x405f4c;};'use strict';var FaxMessageEvents=require(_0xec9d('0x0'));var events=[_0xec9d('0x1'),_0xec9d('0x2'),_0xec9d('0x3')];function createListener(_0x83814a,_0x40f578){return function(_0x2ae969){_0x40f578[_0xec9d('0x4')](_0x83814a,_0x2ae969);};}function removeListener(_0x43c3aa,_0x4a8c1b){return function(){FaxMessageEvents[_0xec9d('0x5')](_0x43c3aa,_0x4a8c1b);};}exports[_0xec9d('0x6')]=function(_0x1de357){for(var _0x39907f=0x0,_0xd0b852=events[_0xec9d('0x7')];_0x39907f<_0xd0b852;_0x39907f++){var _0x23bfc6=events[_0x39907f];var _0x16136f=createListener(_0xec9d('0x8')+_0x23bfc6,_0x1de357);FaxMessageEvents['on'](_0x23bfc6,_0x16136f);}};
\ No newline at end of file
index d7c0e6e..80cfaeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9348=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','describe','/:id/download','download','post','tracked','fax','faxmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','/:id','destroy','exports','multer'];(function(_0x3004eb,_0x189c86){var _0x173ff3=function(_0x35313c){while(--_0x35313c){_0x3004eb['push'](_0x3004eb['shift']());}};_0x173ff3(++_0x189c86);}(_0x9348,0x10d));var _0x8934=function(_0x3a6cee,_0x2fa57d){_0x3a6cee=_0x3a6cee-0x0;var _0x303623=_0x9348[_0x3a6cee];return _0x303623;};'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('0xf')]('/',auth[_0x8934('0xa')](),interaction[_0x8934('0x10')](_0x8934('0x11'),_0x8934('0x12')),controller[_0x8934('0x13')]);router[_0x8934('0x14')]('/:id',auth[_0x8934('0xa')](),controller[_0x8934('0x15')]);router[_0x8934('0x14')](_0x8934('0x16'),auth[_0x8934('0xa')](),controller[_0x8934('0x17')]);router['put'](_0x8934('0x18'),auth[_0x8934('0xa')](),controller[_0x8934('0x19')]);router[_0x8934('0x1a')](_0x8934('0x1b'),auth[_0x8934('0xa')](),controller[_0x8934('0x1c')]);module[_0x8934('0x1d')]=router;
\ No newline at end of file
+var _0xbee3=['update','/:id/accept','accept','/:id/reject','reject','exports','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','/:id/download','download','post','fax','create','put'];(function(_0x422763,_0x46ee6e){var _0x5e39e1=function(_0x562b09){while(--_0x562b09){_0x422763['push'](_0x422763['shift']());}};_0x5e39e1(++_0x46ee6e);}(_0xbee3,0xd5));var _0x3bee=function(_0xda3e2c,_0x49e060){_0xda3e2c=_0xda3e2c-0x0;var _0x3f7139=_0xbee3[_0xda3e2c];return _0x3f7139;};'use strict';var multer=require('multer');var util=require(_0x3bee('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3bee('0x1'));var router=express[_0x3bee('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x3bee('0x3'));var interaction=require(_0x3bee('0x4'));var config=require(_0x3bee('0x5'));var controller=require('./faxMessage.controller');router[_0x3bee('0x6')]('/',auth[_0x3bee('0x7')](),controller['index']);router[_0x3bee('0x6')](_0x3bee('0x8'),auth[_0x3bee('0x7')](),controller[_0x3bee('0x9')]);router[_0x3bee('0x6')](_0x3bee('0xa'),auth[_0x3bee('0x7')](),controller['show']);router[_0x3bee('0x6')](_0x3bee('0xb'),auth[_0x3bee('0x7')](),controller[_0x3bee('0xc')]);router[_0x3bee('0xd')]('/',auth[_0x3bee('0x7')](),interaction['tracked'](_0x3bee('0xe'),'faxmessage:create'),controller[_0x3bee('0xf')]);router[_0x3bee('0x10')](_0x3bee('0xa'),auth[_0x3bee('0x7')](),controller[_0x3bee('0x11')]);router[_0x3bee('0x10')](_0x3bee('0x12'),auth['isAuthenticated'](),controller[_0x3bee('0x13')]);router[_0x3bee('0x10')](_0x3bee('0x14'),auth[_0x3bee('0x7')](),controller[_0x3bee('0x15')]);router['delete']('/:id',auth[_0x3bee('0x7')](),controller['destroy']);module[_0x3bee('0x16')]=router;
\ No newline at end of file
index a8fb92f..d44c98a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8265=['exports','STRING','INTEGER','ENUM','beepall','roundrobin','sequelize'];(function(_0x58c92a,_0x56cd6c){var _0x316cd9=function(_0x8a8b31){while(--_0x8a8b31){_0x58c92a['push'](_0x58c92a['shift']());}};_0x316cd9(++_0x56cd6c);}(_0x8265,0xa0));var _0x5826=function(_0x513a3f,_0x105af6){_0x513a3f=_0x513a3f-0x0;var _0x3034cb=_0x8265[_0x513a3f];return _0x3034cb;};'use strict';var Sequelize=require(_0x5826('0x0'));module[_0x5826('0x1')]={'name':{'type':Sequelize[_0x5826('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x5826('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5826('0x4')]('rrmemory',_0x5826('0x5'),_0x5826('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x5826('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa9da=['INTEGER','ENUM','rrmemory','beepall','sequelize','STRING','name'];(function(_0x1e3c15,_0x5c72b9){var _0x5ba7c8=function(_0x128f45){while(--_0x128f45){_0x1e3c15['push'](_0x1e3c15['shift']());}};_0x5ba7c8(++_0x5c72b9);}(_0xa9da,0x193));var _0xaa9d=function(_0x55cd11,_0xfdd070){_0x55cd11=_0x55cd11-0x0;var _0x2127e8=_0xa9da[_0x55cd11];return _0x2127e8;};'use strict';var Sequelize=require(_0xaa9d('0x0'));module['exports']={'name':{'type':Sequelize[_0xaa9d('0x1')],'unique':_0xaa9d('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xaa9d('0x1')]},'timeout':{'type':Sequelize[_0xaa9d('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xaa9d('0x4')](_0xaa9d('0x5'),_0xaa9d('0x6'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xaa9d('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index b9f454b..b225b66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c3b=['autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','getMembers','findOne','rawAttributes','pick','FaxQueueId','UserFaxQueue','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','%s/%s','SIP','faxPause','Team','getTeams','addTeams','ids','findAll','Agents','interface','flatMap','sequelize','transaction','each','findOrCreate','emit','removeTeams','select','field','from','team_has_fax_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','push','toString','SELECT','every','includes','all','compact','value','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','userFaxQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','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','localhost','socket.io-emitter','./faxQueue.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','get','FaxQueues','destroy','error','stack','name','send','map','FaxQueue','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','includeAll','include','rows','params','options','catch','create','body','user','role','UserProfileSection','userProfileId'];(function(_0x11cd17,_0x489e02){var _0x3343ad=function(_0xfb1588){while(--_0xfb1588){_0x11cd17['push'](_0x11cd17['shift']());}};_0x3343ad(++_0x489e02);}(_0x3c3b,0xca));var _0xb3c3=function(_0x54c166,_0x385bd8){_0x54c166=_0x54c166-0x0;var _0x17701f=_0x3c3b[_0x54c166];return _0x17701f;};'use strict';var emlformat=require(_0xb3c3('0x0'));var rimraf=require(_0xb3c3('0x1'));var zipdir=require(_0xb3c3('0x2'));var jsonpatch=require(_0xb3c3('0x3'));var rp=require('request-promise');var moment=require(_0xb3c3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb3c3('0x5'));var util=require(_0xb3c3('0x6'));var path=require(_0xb3c3('0x7'));var sox=require(_0xb3c3('0x8'));var csv=require('to-csv');var ejs=require(_0xb3c3('0x9'));var fs=require('fs');var fs_extra=require(_0xb3c3('0xa'));var _=require(_0xb3c3('0xb'));var squel=require(_0xb3c3('0xc'));var crypto=require('crypto');var jsforce=require(_0xb3c3('0xd'));var deskjs=require(_0xb3c3('0xe'));var toCsv=require(_0xb3c3('0xf'));var querystring=require(_0xb3c3('0x10'));var Papa=require(_0xb3c3('0x11'));var Redis=require(_0xb3c3('0x12'));var authService=require(_0xb3c3('0x13'));var qs=require(_0xb3c3('0x14'));var as=require(_0xb3c3('0x15'));var hardwareService=require(_0xb3c3('0x16'));var logger=require(_0xb3c3('0x17'))(_0xb3c3('0x18'));var utils=require('../../config/utils');var config=require(_0xb3c3('0x19'));var licenseUtil=require(_0xb3c3('0x1a'));var db=require(_0xb3c3('0x1b'))['db'];config[_0xb3c3('0x1c')]=_[_0xb3c3('0x1d')](config[_0xb3c3('0x1c')],{'host':_0xb3c3('0x1e'),'port':0x18eb});var socket=require(_0xb3c3('0x1f'))(new Redis(config[_0xb3c3('0x1c')]));require(_0xb3c3('0x20'))[_0xb3c3('0x21')](socket);function respondWithStatusCode(_0x2b1b57,_0x29163d){_0x29163d=_0x29163d||0xcc;return function(_0x1282d0){if(_0x1282d0){return _0x2b1b57['sendStatus'](_0x29163d);}return _0x2b1b57[_0xb3c3('0x22')](_0x29163d)['end']();};}function respondWithResult(_0x389577,_0x4cd311){_0x4cd311=_0x4cd311||0xc8;return function(_0x546287){if(_0x546287){return _0x389577[_0xb3c3('0x22')](_0x4cd311)[_0xb3c3('0x23')](_0x546287);}};}function respondWithFilteredResult(_0xcdd8b5,_0x30e9de){return function(_0xb53d8b){if(_0xb53d8b){var _0x2517da=typeof _0x30e9de[_0xb3c3('0x24')]===_0xb3c3('0x25')&&typeof _0x30e9de[_0xb3c3('0x26')]===_0xb3c3('0x25');var _0x538f40=_0xb53d8b['count'];var _0x130037=_0x2517da?0x0:_0x30e9de[_0xb3c3('0x24')];var _0xa8a06d=_0x2517da?_0xb53d8b[_0xb3c3('0x27')]:_0x30e9de['offset']+_0x30e9de['limit'];var _0x5c6167;if(_0xa8a06d>=_0x538f40){_0xa8a06d=_0x538f40;_0x5c6167=0xc8;}else{_0x5c6167=0xce;}_0xcdd8b5['status'](_0x5c6167);return _0xcdd8b5[_0xb3c3('0x28')](_0xb3c3('0x29'),_0x130037+'-'+_0xa8a06d+'/'+_0x538f40)[_0xb3c3('0x23')](_0xb53d8b);}return null;};}function patchUpdates(_0x288e9c){return function(_0x38039b){try{jsonpatch[_0xb3c3('0x2a')](_0x38039b,_0x288e9c,!![]);}catch(_0x478b5d){return BPromise['reject'](_0x478b5d);}return _0x38039b[_0xb3c3('0x2b')]();};}function saveUpdates(_0x522aae,_0x19fc87){return function(_0x5335eb){if(_0x5335eb){return _0x5335eb[_0xb3c3('0x2c')](_0x522aae)[_0xb3c3('0x2d')](function(_0x1210b7){return _0x1210b7;});}return null;};}function removeEntity(_0xd5e971,_0x2e1e43){return function(_0x5de021){if(_0x5de021){return _0x5de021['destroy']()[_0xb3c3('0x2d')](function(){var _0xd540df=_0x5de021[_0xb3c3('0x2e')]({'plain':!![]});var _0x33499b=_0xb3c3('0x2f');return db['UserProfileResource'][_0xb3c3('0x30')]({'where':{'type':_0x33499b,'resourceId':_0xd540df['id']}})[_0xb3c3('0x2d')](function(){return _0x5de021;});})[_0xb3c3('0x2d')](function(){_0xd5e971[_0xb3c3('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17dff2,_0x2826a4){return function(_0xfd91c5){if(!_0xfd91c5){_0x17dff2['sendStatus'](0x194);}return _0xfd91c5;};}function handleError(_0x2bc7d4,_0x161540){_0x161540=_0x161540||0x1f4;return function(_0x152e25){logger[_0xb3c3('0x31')](_0x152e25[_0xb3c3('0x32')]);if(_0x152e25[_0xb3c3('0x33')]){delete _0x152e25[_0xb3c3('0x33')];}_0x2bc7d4[_0xb3c3('0x22')](_0x161540)[_0xb3c3('0x34')](_0x152e25);};}exports['index']=function(_0x110e63,_0x588ba9){var _0x584bdf={},_0x494818={},_0x18db78={'count':0x0,'rows':[]};var _0x44ac4e=_[_0xb3c3('0x35')](db[_0xb3c3('0x36')]['rawAttributes'],function(_0x2b5496){return{'name':_0x2b5496['fieldName'],'type':_0x2b5496['type'][_0xb3c3('0x37')]};});_0x494818['model']=_[_0xb3c3('0x35')](_0x44ac4e,_0xb3c3('0x33'));_0x494818[_0xb3c3('0x38')]=_[_0xb3c3('0x39')](_0x110e63[_0xb3c3('0x38')]);_0x494818[_0xb3c3('0x3a')]=_[_0xb3c3('0x3b')](_0x494818[_0xb3c3('0x3c')],_0x494818[_0xb3c3('0x38')]);_0x584bdf[_0xb3c3('0x3d')]=_[_0xb3c3('0x3b')](_0x494818[_0xb3c3('0x3c')],qs[_0xb3c3('0x3e')](_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x3e')]));_0x584bdf['attributes']=_0x584bdf[_0xb3c3('0x3d')][_0xb3c3('0x3f')]?_0x584bdf['attributes']:_0x494818['model'];if(!_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x40')](_0xb3c3('0x41'))){_0x584bdf[_0xb3c3('0x26')]=qs[_0xb3c3('0x26')](_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x26')]);_0x584bdf[_0xb3c3('0x24')]=qs[_0xb3c3('0x24')](_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x24')]);}_0x584bdf[_0xb3c3('0x42')]=qs[_0xb3c3('0x43')](_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x43')]);_0x584bdf[_0xb3c3('0x44')]=qs[_0xb3c3('0x3a')](_['pick'](_0x110e63[_0xb3c3('0x38')],_0x494818[_0xb3c3('0x3a')]),_0x44ac4e);if(_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x45')]){_0x584bdf[_0xb3c3('0x44')]=_[_0xb3c3('0x46')](_0x584bdf['where'],{'$or':_['map'](_0x44ac4e,function(_0x47ad92){if(_0x47ad92[_0xb3c3('0x47')]!=='VIRTUAL'){var _0x5d23cf={};_0x5d23cf[_0x47ad92['name']]={'$like':'%'+_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x45')]+'%'};return _0x5d23cf;}})});}_0x584bdf=_['merge']({},_0x584bdf,_0x110e63['options']);var _0x4b097b={'where':_0x584bdf[_0xb3c3('0x44')]};return db[_0xb3c3('0x36')][_0xb3c3('0x27')](_0x4b097b)[_0xb3c3('0x2d')](function(_0xf04971){_0x18db78[_0xb3c3('0x27')]=_0xf04971;if(_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x48')]){_0x584bdf[_0xb3c3('0x49')]=[{'all':!![]}];}return db[_0xb3c3('0x36')]['findAll'](_0x584bdf);})[_0xb3c3('0x2d')](function(_0x208f6e){_0x18db78[_0xb3c3('0x4a')]=_0x208f6e;return _0x18db78;})[_0xb3c3('0x2d')](respondWithFilteredResult(_0x588ba9,_0x584bdf))['catch'](handleError(_0x588ba9,null));};exports['show']=function(_0x3c7e1b,_0x566cd0){var _0x394ae6={'raw':!![],'where':{'id':_0x3c7e1b[_0xb3c3('0x4b')]['id']}},_0x54dfed={};_0x54dfed[_0xb3c3('0x3c')]=_[_0xb3c3('0x39')](db[_0xb3c3('0x36')]['rawAttributes']);_0x54dfed[_0xb3c3('0x38')]=_['keys'](_0x3c7e1b[_0xb3c3('0x38')]);_0x54dfed[_0xb3c3('0x3a')]=_['intersection'](_0x54dfed[_0xb3c3('0x3c')],_0x54dfed[_0xb3c3('0x38')]);_0x394ae6[_0xb3c3('0x3d')]=_['intersection'](_0x54dfed[_0xb3c3('0x3c')],qs[_0xb3c3('0x3e')](_0x3c7e1b[_0xb3c3('0x38')]['fields']));_0x394ae6['attributes']=_0x394ae6[_0xb3c3('0x3d')]['length']?_0x394ae6[_0xb3c3('0x3d')]:_0x54dfed[_0xb3c3('0x3c')];if(_0x3c7e1b[_0xb3c3('0x38')][_0xb3c3('0x48')]){_0x394ae6[_0xb3c3('0x49')]=[{'all':!![]}];}_0x394ae6=_[_0xb3c3('0x46')]({},_0x394ae6,_0x3c7e1b[_0xb3c3('0x4c')]);return db[_0xb3c3('0x36')]['find'](_0x394ae6)['then'](handleEntityNotFound(_0x566cd0,null))[_0xb3c3('0x2d')](respondWithResult(_0x566cd0,null))[_0xb3c3('0x4d')](handleError(_0x566cd0,null));};exports[_0xb3c3('0x4e')]=function(_0x47a85c,_0x57c589){return db['FaxQueue'][_0xb3c3('0x4e')](_0x47a85c[_0xb3c3('0x4f')],{})[_0xb3c3('0x2d')](function(_0xc982d0){var _0x592416=_0x47a85c[_0xb3c3('0x50')][_0xb3c3('0x2e')]({'plain':!![]});if(!_0x592416)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x592416[_0xb3c3('0x51')]===_0xb3c3('0x50')){var _0x4b5a53=_0xc982d0['get']({'plain':!![]});var _0x507926='FaxQueues';return db[_0xb3c3('0x52')]['find']({'where':{'name':_0x507926,'userProfileId':_0x592416[_0xb3c3('0x53')]},'raw':!![]})[_0xb3c3('0x2d')](function(_0x17e19c){if(_0x17e19c&&_0x17e19c[_0xb3c3('0x54')]===0x0){return db[_0xb3c3('0x55')][_0xb3c3('0x4e')]({'name':_0x4b5a53[_0xb3c3('0x33')],'resourceId':_0x4b5a53['id'],'type':_0x17e19c[_0xb3c3('0x33')],'sectionId':_0x17e19c['id']},{})[_0xb3c3('0x2d')](function(){return _0xc982d0;});}else{return _0xc982d0;}})['catch'](function(_0x2c437b){logger['error'](_0xb3c3('0x56'),_0x2c437b);throw _0x2c437b;});}return _0xc982d0;})[_0xb3c3('0x2d')](respondWithResult(_0x57c589,0xc9))[_0xb3c3('0x4d')](handleError(_0x57c589,null));};exports[_0xb3c3('0x2c')]=function(_0x11141f,_0x36894b){if(_0x11141f[_0xb3c3('0x4f')]['id']){delete _0x11141f[_0xb3c3('0x4f')]['id'];}return db[_0xb3c3('0x36')][_0xb3c3('0x57')]({'where':{'id':_0x11141f[_0xb3c3('0x4b')]['id']}})[_0xb3c3('0x2d')](handleEntityNotFound(_0x36894b,null))[_0xb3c3('0x2d')](saveUpdates(_0x11141f[_0xb3c3('0x4f')],null))['then'](respondWithResult(_0x36894b,null))['catch'](handleError(_0x36894b,null));};exports['destroy']=function(_0x3d30d8,_0x3b19bc){return db['FaxQueue'][_0xb3c3('0x57')]({'where':{'id':_0x3d30d8[_0xb3c3('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3b19bc,null))[_0xb3c3('0x2d')](removeEntity(_0x3b19bc,null))[_0xb3c3('0x4d')](handleError(_0x3b19bc,null));};exports[_0xb3c3('0x58')]=function(_0x59d3e9,_0x1bc431){return db[_0xb3c3('0x36')][_0xb3c3('0x58')]()['then'](respondWithResult(_0x1bc431,null))[_0xb3c3('0x4d')](handleError(_0x1bc431,null));};exports[_0xb3c3('0x59')]=function(_0x287489,_0x8d1410,_0x1b47bf){var _0x4464fe={'raw':!![],'where':{}},_0x1a3f47={},_0x49e36f;return db['FaxQueue'][_0xb3c3('0x5a')]({'where':{'id':_0x287489[_0xb3c3('0x4b')]['id']}})[_0xb3c3('0x2d')](handleEntityNotFound(_0x8d1410,null))['then'](function(_0x3b7488){if(_0x3b7488){_0x49e36f=_0x3b7488['get']({'plain':!![]});_0x1a3f47[_0xb3c3('0x3c')]=_[_0xb3c3('0x39')](db['UserFaxQueue'][_0xb3c3('0x5b')]);_0x1a3f47[_0xb3c3('0x38')]=_[_0xb3c3('0x39')](_0x287489['query']);_0x1a3f47['filters']=_[_0xb3c3('0x3b')](_0x1a3f47[_0xb3c3('0x3c')],_0x1a3f47['query']);_0x4464fe[_0xb3c3('0x3d')]=_[_0xb3c3('0x3b')](_0x1a3f47[_0xb3c3('0x3c')],qs[_0xb3c3('0x3e')](_0x287489['query'][_0xb3c3('0x3e')]));_0x4464fe[_0xb3c3('0x3d')]=_0x4464fe[_0xb3c3('0x3d')][_0xb3c3('0x3f')]?_0x4464fe[_0xb3c3('0x3d')]:_0x1a3f47['model'];if(!_0x287489[_0xb3c3('0x38')][_0xb3c3('0x40')]('nolimit')){_0x4464fe['limit']=qs[_0xb3c3('0x26')](_0x287489[_0xb3c3('0x38')][_0xb3c3('0x26')]);_0x4464fe[_0xb3c3('0x24')]=qs['offset'](_0x287489['query'][_0xb3c3('0x24')]);}_0x4464fe['order']=qs['sort'](_0x287489[_0xb3c3('0x38')][_0xb3c3('0x43')]);_0x4464fe[_0xb3c3('0x44')]=qs[_0xb3c3('0x3a')](_[_0xb3c3('0x5c')](_0x287489['query'],_0x1a3f47[_0xb3c3('0x3a')]));_0x4464fe[_0xb3c3('0x44')][_0xb3c3('0x5d')]=_0x3b7488['id'];if(_0x287489[_0xb3c3('0x38')]['filter']){_0x4464fe['where']=_[_0xb3c3('0x46')](_0x4464fe[_0xb3c3('0x44')],{'$or':_[_0xb3c3('0x35')](_0x4464fe[_0xb3c3('0x3d')],function(_0x255d88){var _0x1a329a={};_0x1a329a[_0x255d88]={'$like':'%'+_0x287489[_0xb3c3('0x38')][_0xb3c3('0x45')]+'%'};return _0x1a329a;})});}_0x4464fe=_['merge']({},_0x4464fe,_0x287489[_0xb3c3('0x4c')]);return db[_0xb3c3('0x5e')]['findAll'](_0x4464fe);}})['then'](function(_0x56cdc4){if(_0x56cdc4){return db[_0xb3c3('0x5f')][_0xb3c3('0x60')]({'where':{'id':_['map'](_0x56cdc4,_0xb3c3('0x61')),'role':_0xb3c3('0x62')},'attributes':['id',_0xb3c3('0x33'),'faxPause',_0xb3c3('0x63'),_0xb3c3('0x64')]});}})['then'](function(_0x556a6e){if(_0x556a6e){return{'count':_0x556a6e[_0xb3c3('0x27')],'rows':_['map'](_0x556a6e[_0xb3c3('0x4a')],function(_0x11c786){return{'membername':_0x11c786[_0xb3c3('0x33')],'UserId':_0x11c786['id'],'queue_name':_0x49e36f[_0xb3c3('0x33')],'FaxQueueId':_0x49e36f['id'],'interface':util[_0xb3c3('0x65')](_0xb3c3('0x66'),_0xb3c3('0x67'),_0x11c786['name']),'penalty':0x0,'paused':_0x11c786[_0xb3c3('0x68')],'createdAt':_0x11c786[_0xb3c3('0x64')],'updatedAt':_0x11c786[_0xb3c3('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x8d1410,_0x4464fe))['catch'](handleError(_0x8d1410,null));};exports['getTeams']=function(_0x3ab0d6,_0x3bb8a0,_0x5d752b){var _0x3d12a2={};var _0x4f6e8b={};var _0x2545cd;var _0xd45e2e;return db[_0xb3c3('0x36')][_0xb3c3('0x5a')]({'where':{'id':_0x3ab0d6[_0xb3c3('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3bb8a0,null))[_0xb3c3('0x2d')](function(_0x3d1e33){if(_0x3d1e33){_0x2545cd=_0x3d1e33;_0x4f6e8b['model']=_[_0xb3c3('0x39')](db[_0xb3c3('0x69')][_0xb3c3('0x5b')]);_0x4f6e8b['query']=_[_0xb3c3('0x39')](_0x3ab0d6['query']);_0x4f6e8b['filters']=_[_0xb3c3('0x3b')](_0x4f6e8b[_0xb3c3('0x3c')],_0x4f6e8b['query']);_0x3d12a2['attributes']=_[_0xb3c3('0x3b')](_0x4f6e8b[_0xb3c3('0x3c')],qs[_0xb3c3('0x3e')](_0x3ab0d6[_0xb3c3('0x38')]['fields']));_0x3d12a2[_0xb3c3('0x3d')]=_0x3d12a2[_0xb3c3('0x3d')]['length']?_0x3d12a2[_0xb3c3('0x3d')]:_0x4f6e8b[_0xb3c3('0x3c')];_0x3d12a2[_0xb3c3('0x42')]=qs[_0xb3c3('0x43')](_0x3ab0d6[_0xb3c3('0x38')][_0xb3c3('0x43')]);_0x3d12a2['where']=qs[_0xb3c3('0x3a')](_[_0xb3c3('0x5c')](_0x3ab0d6[_0xb3c3('0x38')],_0x4f6e8b[_0xb3c3('0x3a')]));if(_0x3ab0d6[_0xb3c3('0x38')]['filter']){_0x3d12a2[_0xb3c3('0x44')]=_[_0xb3c3('0x46')](_0x3d12a2[_0xb3c3('0x44')],{'$or':_[_0xb3c3('0x35')](_0x3d12a2[_0xb3c3('0x3d')],function(_0x11bb80){var _0x3e7394={};_0x3e7394[_0x11bb80]={'$like':'%'+_0x3ab0d6[_0xb3c3('0x38')]['filter']+'%'};return _0x3e7394;})});}_0x3d12a2=_[_0xb3c3('0x46')]({},_0x3d12a2,_0x3ab0d6[_0xb3c3('0x4c')]);return _0x2545cd[_0xb3c3('0x6a')](_0x3d12a2);}})[_0xb3c3('0x2d')](function(_0x907061){if(_0x907061){_0xd45e2e=_0x907061[_0xb3c3('0x3f')];if(!_0x3ab0d6[_0xb3c3('0x38')][_0xb3c3('0x40')](_0xb3c3('0x41'))){_0x3d12a2[_0xb3c3('0x26')]=qs[_0xb3c3('0x26')](_0x3ab0d6[_0xb3c3('0x38')]['limit']);_0x3d12a2['offset']=qs[_0xb3c3('0x24')](_0x3ab0d6['query'][_0xb3c3('0x24')]);}return _0x2545cd[_0xb3c3('0x6a')](_0x3d12a2);}})[_0xb3c3('0x2d')](function(_0x5aabcf){if(_0x5aabcf){return _0x5aabcf?{'count':_0xd45e2e,'rows':_0x5aabcf}:null;}})[_0xb3c3('0x2d')](respondWithResult(_0x3bb8a0,null))[_0xb3c3('0x4d')](handleError(_0x3bb8a0,null));};exports[_0xb3c3('0x6b')]=function(_0x47c9a5,_0x2314d4,_0x33d610){var _0x49f667=_0x47c9a5[_0xb3c3('0x4f')][_0xb3c3('0x6c')];return db[_0xb3c3('0x69')][_0xb3c3('0x6d')]({'where':{'id':_0x49f667},'attributes':['id'],'include':[{'model':db[_0xb3c3('0x5f')],'as':_0xb3c3('0x6e'),'attributes':['id',_0xb3c3('0x33'),'online','voicePause',_0xb3c3('0x6f')],'raw':!![]}]})[_0xb3c3('0x2d')](function(_0x20d95a){if(_0x20d95a){var _0x2b6bc5=_[_0xb3c3('0x70')](_0x20d95a,function(_0x34b8fd){var _0x3a83c1=_0x34b8fd['get']({'plain':!![]});return _0x3a83c1[_0xb3c3('0x6e')];});return db[_0xb3c3('0x36')]['find']({'where':{'id':_0x47c9a5[_0xb3c3('0x4b')]['id']}})[_0xb3c3('0x2d')](function(_0x14b507){return db[_0xb3c3('0x71')][_0xb3c3('0x72')](function(_0x1e2c2a){return _0x14b507[_0xb3c3('0x6b')](_0x49f667,{'transaction':_0x1e2c2a})[_0xb3c3('0x2d')](function(){return BPromise[_0xb3c3('0x73')](_0x2b6bc5,function(_0x119e51){return db['UserFaxQueue'][_0xb3c3('0x74')]({'where':{'UserId':_0x119e51['id'],'FaxQueueId':_0x47c9a5[_0xb3c3('0x4b')]['id']},'transaction':_0x1e2c2a});});})[_0xb3c3('0x2d')](function(){_0x2b6bc5['forEach'](function(_0x1e7ed5){socket[_0xb3c3('0x75')]('userFaxQueue:save',{'UserId':_0x1e7ed5['id'],'FaxQueueId':_0x14b507['id']});});});});});}})['then'](respondWithStatusCode(_0x2314d4,null))[_0xb3c3('0x4d')](handleError(_0x2314d4,null));};exports[_0xb3c3('0x76')]=function(_0x28cfca,_0x413b94,_0x1ddf12){return db[_0xb3c3('0x69')]['findAll']({'where':{'id':_0x28cfca[_0xb3c3('0x38')][_0xb3c3('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xb3c3('0x5f')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x413b94,null))['then'](function(_0x3699ff){var _0x3ad4ce=_['map'](_0x3699ff,'id');var _0x4bf22b=[];var _0x5658c4=[];var _0x3d2f7f=squel[_0xb3c3('0x77')]();_0x3d2f7f[_0xb3c3('0x78')]('tq.TeamId')[_0xb3c3('0x79')](_0xb3c3('0x7a'),'tq')['join'](_0xb3c3('0x7b'),'ut',_0xb3c3('0x7c'))[_0xb3c3('0x44')]('FaxQueueId\x20=\x20?',_0x28cfca[_0xb3c3('0x4b')]['id']);for(var _0x16c5dd=0x0;_0x16c5dd<_0x3699ff[_0xb3c3('0x3f')];_0x16c5dd+=0x1){let _0x1f0384=_0x3699ff[_0x16c5dd];for(var _0x15d93b=0x0;_0x15d93b<_0x1f0384[_0xb3c3('0x6e')][_0xb3c3('0x3f')];_0x15d93b+=0x1){let _0x57e8e5=_0x1f0384[_0xb3c3('0x6e')][_0x15d93b];var _0x472b35=_0x3d2f7f[_0xb3c3('0x7d')]();_0x472b35[_0xb3c3('0x44')]('ut.UserId\x20=\x20?',_0x57e8e5['id']);_0x5658c4[_0xb3c3('0x7e')](db[_0xb3c3('0x71')][_0xb3c3('0x38')](_0x472b35[_0xb3c3('0x7f')](),{'type':db['sequelize']['QueryTypes'][_0xb3c3('0x80')]})[_0xb3c3('0x2d')](function(_0x38656f){if(_0x38656f[_0xb3c3('0x3f')]===0x1){return _0x57e8e5['id'];}else{var _0x4c19ba=_[_0xb3c3('0x81')](_[_0xb3c3('0x35')](_0x38656f,'TeamId'),function(_0x549013){return _[_0xb3c3('0x82')](_0x3ad4ce,_0x549013);});if(_0x4c19ba){return _0x57e8e5['id'];}}}));}}return BPromise[_0xb3c3('0x83')](_0x5658c4)[_0xb3c3('0x2d')](function(_0x2417d0){_0x4bf22b=_(_0x4bf22b)['union'](_0x2417d0)[_0xb3c3('0x84')]()[_0xb3c3('0x85')]();return db['FaxQueue'][_0xb3c3('0x57')]({'where':{'id':_0x28cfca['params']['id']}})[_0xb3c3('0x2d')](function(_0x454006){return db[_0xb3c3('0x71')][_0xb3c3('0x72')](function(_0x22c82f){return _0x454006[_0xb3c3('0x76')](_0x28cfca[_0xb3c3('0x38')][_0xb3c3('0x6c')],{'transaction':_0x22c82f})[_0xb3c3('0x2d')](function(){if(!_[_0xb3c3('0x86')](_0x4bf22b)){return _0x454006[_0xb3c3('0x87')](_0x4bf22b,{'transaction':_0x22c82f});}})[_0xb3c3('0x2d')](function(){_0x4bf22b['forEach'](function(_0x3b5e5b){socket[_0xb3c3('0x75')](_0xb3c3('0x88'),{'UserId':_0x3b5e5b,'FaxQueueId':_0x454006['id']});});});});});});})[_0xb3c3('0x2d')](respondWithStatusCode(_0x413b94,null))['catch'](handleError(_0x413b94,null));};exports[_0xb3c3('0x89')]=function(_0x3dbf79,_0x4aa402,_0x44258a){return db[_0xb3c3('0x36')][_0xb3c3('0x57')]({'where':{'id':_0x3dbf79['params']['id']}})['then'](handleEntityNotFound(_0x4aa402,null))['then'](function(_0x211310){if(_0x211310){return _0x211310[_0xb3c3('0x89')](_0x3dbf79[_0xb3c3('0x4f')]['ids'],_[_0xb3c3('0x8a')](_0x3dbf79[_0xb3c3('0x4f')],[_0xb3c3('0x6c'),'id'])||{})[_0xb3c3('0x8b')](function(_0xcc578){for(var _0x46d9cd=0x0;_0x46d9cd<_0x3dbf79[_0xb3c3('0x4f')][_0xb3c3('0x6c')][_0xb3c3('0x3f')];_0x46d9cd+=0x1){socket[_0xb3c3('0x75')](_0xb3c3('0x8c'),{'UserId':Number(_0x3dbf79['body'][_0xb3c3('0x6c')][_0x46d9cd]),'FaxQueueId':Number(_0x3dbf79[_0xb3c3('0x4b')]['id'])});}return _0xcc578;});}})[_0xb3c3('0x2d')](respondWithResult(_0x4aa402,null))[_0xb3c3('0x4d')](handleError(_0x4aa402,null));};exports[_0xb3c3('0x87')]=function(_0x437cad,_0x19494c,_0x5410bf){return db[_0xb3c3('0x36')]['find']({'where':{'id':_0x437cad[_0xb3c3('0x4b')]['id']}})['then'](handleEntityNotFound(_0x19494c,null))[_0xb3c3('0x2d')](function(_0x12b7c6){if(_0x12b7c6){return _0x12b7c6[_0xb3c3('0x87')](_0x437cad[_0xb3c3('0x38')]['ids'])[_0xb3c3('0x2d')](function(){if(_[_0xb3c3('0x8d')](_0x437cad[_0xb3c3('0x38')]['ids'])){for(var _0x1dfbe2=0x0;_0x1dfbe2<_0x437cad[_0xb3c3('0x38')]['ids'][_0xb3c3('0x3f')];_0x1dfbe2+=0x1){socket['emit'](_0xb3c3('0x88'),{'UserId':Number(_0x437cad['query'][_0xb3c3('0x6c')][_0x1dfbe2]),'FaxQueueId':Number(_0x437cad[_0xb3c3('0x4b')]['id'])});}}else{socket['emit'](_0xb3c3('0x88'),{'UserId':Number(_0x437cad[_0xb3c3('0x38')]['ids']),'FaxQueueId':Number(_0x437cad[_0xb3c3('0x4b')]['id'])});}});}})[_0xb3c3('0x2d')](respondWithStatusCode(_0x19494c,null))[_0xb3c3('0x4d')](handleError(_0x19494c,null));};exports[_0xb3c3('0x8e')]=function(_0x1f9f25,_0x541696,_0x51564c){var _0x4273af={};var _0x597a07={};var _0x1a9481;var _0x481232;return db['FaxQueue'][_0xb3c3('0x5a')]({'where':{'id':_0x1f9f25[_0xb3c3('0x4b')]['id']}})[_0xb3c3('0x2d')](handleEntityNotFound(_0x541696,null))[_0xb3c3('0x2d')](function(_0xa4e097){if(_0xa4e097){_0x1a9481=_0xa4e097;_0x597a07[_0xb3c3('0x3c')]=_[_0xb3c3('0x39')](db[_0xb3c3('0x5f')][_0xb3c3('0x5b')]);_0x597a07[_0xb3c3('0x38')]=_[_0xb3c3('0x39')](_0x1f9f25[_0xb3c3('0x38')]);_0x597a07[_0xb3c3('0x3a')]=_[_0xb3c3('0x3b')](_0x597a07['model'],_0x597a07[_0xb3c3('0x38')]);_0x4273af[_0xb3c3('0x3d')]=_[_0xb3c3('0x3b')](_0x597a07[_0xb3c3('0x3c')],qs[_0xb3c3('0x3e')](_0x1f9f25[_0xb3c3('0x38')][_0xb3c3('0x3e')]));_0x4273af[_0xb3c3('0x3d')]=_0x4273af[_0xb3c3('0x3d')]['length']?_0x4273af[_0xb3c3('0x3d')]:_0x597a07[_0xb3c3('0x3c')];_0x4273af['order']=qs[_0xb3c3('0x43')](_0x1f9f25[_0xb3c3('0x38')][_0xb3c3('0x43')]);_0x4273af[_0xb3c3('0x44')]=qs[_0xb3c3('0x3a')](_[_0xb3c3('0x5c')](_0x1f9f25[_0xb3c3('0x38')],_0x597a07[_0xb3c3('0x3a')]));if(_0x1f9f25[_0xb3c3('0x38')]['filter']){_0x4273af[_0xb3c3('0x44')]=_['merge'](_0x4273af[_0xb3c3('0x44')],{'$or':_['map'](_0x4273af[_0xb3c3('0x3d')],function(_0x5eb4d1){var _0x219633={};_0x219633[_0x5eb4d1]={'$like':'%'+_0x1f9f25['query'][_0xb3c3('0x45')]+'%'};return _0x219633;})});}_0x4273af=_[_0xb3c3('0x46')]({},_0x4273af,_0x1f9f25[_0xb3c3('0x4c')]);return _0x1a9481[_0xb3c3('0x8e')](_0x4273af);}})[_0xb3c3('0x2d')](function(_0x4f0847){if(_0x4f0847){_0x481232=_0x4f0847[_0xb3c3('0x3f')];if(!_0x1f9f25[_0xb3c3('0x38')][_0xb3c3('0x40')]('nolimit')){_0x4273af['limit']=qs[_0xb3c3('0x26')](_0x1f9f25[_0xb3c3('0x38')][_0xb3c3('0x26')]);_0x4273af[_0xb3c3('0x24')]=qs[_0xb3c3('0x24')](_0x1f9f25[_0xb3c3('0x38')][_0xb3c3('0x24')]);}return _0x1a9481['getAgents'](_0x4273af);}})[_0xb3c3('0x2d')](function(_0x5dbe61){if(_0x5dbe61){return _0x5dbe61?{'count':_0x481232,'rows':_0x5dbe61}:null;}})[_0xb3c3('0x2d')](respondWithResult(_0x541696,null))['catch'](handleError(_0x541696,null));};
\ No newline at end of file
+var _0x0670=['create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','describe','getMembers','findOne','order','sort','pick','FaxQueueId','UserFaxQueue','User','findAndCountAll','UserId','faxPause','updatedAt','createdAt','format','%s/%s','getTeams','addTeams','ids','Team','Agents','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','select','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','SELECT','TeamId','all','union','value','removeAgents','userFaxQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','get','FaxQueues','UserProfileResource','error','name','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','filter','where','merge','options','include','findAll','rows','catch','show','params','keys','FaxQueue','includeAll','find'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x0670,0x1d3));var _0x0067=function(_0x13ff53,_0x5e1424){_0x13ff53=_0x13ff53-0x0;var _0x290228=_0x0670[_0x13ff53];return _0x290228;};'use strict';var emlformat=require(_0x0067('0x0'));var rimraf=require(_0x0067('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0067('0x2'));var rp=require(_0x0067('0x3'));var moment=require(_0x0067('0x4'));var BPromise=require(_0x0067('0x5'));var Mustache=require('mustache');var util=require(_0x0067('0x6'));var path=require(_0x0067('0x7'));var sox=require(_0x0067('0x8'));var csv=require(_0x0067('0x9'));var ejs=require(_0x0067('0xa'));var fs=require('fs');var fs_extra=require(_0x0067('0xb'));var _=require('lodash');var squel=require(_0x0067('0xc'));var crypto=require(_0x0067('0xd'));var jsforce=require(_0x0067('0xe'));var deskjs=require(_0x0067('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0067('0x10'));var Redis=require(_0x0067('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x0067('0x12'));var as=require(_0x0067('0x13'));var hardwareService=require(_0x0067('0x14'));var logger=require(_0x0067('0x15'))(_0x0067('0x16'));var utils=require(_0x0067('0x17'));var config=require(_0x0067('0x18'));var licenseUtil=require(_0x0067('0x19'));var db=require(_0x0067('0x1a'))['db'];config[_0x0067('0x1b')]=_[_0x0067('0x1c')](config[_0x0067('0x1b')],{'host':_0x0067('0x1d'),'port':0x18eb});var socket=require(_0x0067('0x1e'))(new Redis(config[_0x0067('0x1b')]));require(_0x0067('0x1f'))[_0x0067('0x20')](socket);function respondWithStatusCode(_0xd98e36,_0x491987){_0x491987=_0x491987||0xcc;return function(_0x131d9e){if(_0x131d9e){return _0xd98e36[_0x0067('0x21')](_0x491987);}return _0xd98e36['status'](_0x491987)[_0x0067('0x22')]();};}function respondWithResult(_0x4fee50,_0x2e2601){_0x2e2601=_0x2e2601||0xc8;return function(_0x36a01e){if(_0x36a01e){return _0x4fee50[_0x0067('0x23')](_0x2e2601)[_0x0067('0x24')](_0x36a01e);}};}function respondWithFilteredResult(_0x3c6ebe,_0x5309ce){return function(_0x58e419){if(_0x58e419){var _0x5ca7eb=typeof _0x5309ce[_0x0067('0x25')]===_0x0067('0x26')&&typeof _0x5309ce[_0x0067('0x27')]===_0x0067('0x26');var _0x9ce744=_0x58e419[_0x0067('0x28')];var _0x424d67=_0x5ca7eb?0x0:_0x5309ce[_0x0067('0x25')];var _0x5d7f9a=_0x5ca7eb?_0x58e419['count']:_0x5309ce[_0x0067('0x25')]+_0x5309ce[_0x0067('0x27')];var _0x27b8a2;if(_0x5d7f9a>=_0x9ce744){_0x5d7f9a=_0x9ce744;_0x27b8a2=0xc8;}else{_0x27b8a2=0xce;}_0x3c6ebe[_0x0067('0x23')](_0x27b8a2);return _0x3c6ebe['set'](_0x0067('0x29'),_0x424d67+'-'+_0x5d7f9a+'/'+_0x9ce744)[_0x0067('0x24')](_0x58e419);}return null;};}function patchUpdates(_0x5cef2d){return function(_0x1e7db9){try{jsonpatch[_0x0067('0x2a')](_0x1e7db9,_0x5cef2d,!![]);}catch(_0x4a364b){return BPromise['reject'](_0x4a364b);}return _0x1e7db9[_0x0067('0x2b')]();};}function saveUpdates(_0x26f279,_0x47a2cf){return function(_0x25a548){if(_0x25a548){return _0x25a548[_0x0067('0x2c')](_0x26f279)[_0x0067('0x2d')](function(_0x2754cf){return _0x2754cf;});}return null;};}function removeEntity(_0x5533b3,_0x4d93b6){return function(_0x598f41){if(_0x598f41){return _0x598f41[_0x0067('0x2e')]()[_0x0067('0x2d')](function(){var _0xce9d44=_0x598f41[_0x0067('0x2f')]({'plain':!![]});var _0x36fbb1=_0x0067('0x30');return db[_0x0067('0x31')]['destroy']({'where':{'type':_0x36fbb1,'resourceId':_0xce9d44['id']}})['then'](function(){return _0x598f41;});})['then'](function(){_0x5533b3[_0x0067('0x23')](0xcc)[_0x0067('0x22')]();});}};}function handleEntityNotFound(_0x419383,_0xe57fc0){return function(_0x30f69a){if(!_0x30f69a){_0x419383[_0x0067('0x21')](0x194);}return _0x30f69a;};}function handleError(_0xb90c7,_0x5677cd){_0x5677cd=_0x5677cd||0x1f4;return function(_0x283146){logger[_0x0067('0x32')](_0x283146['stack']);if(_0x283146[_0x0067('0x33')]){delete _0x283146['name'];}_0xb90c7['status'](_0x5677cd)['send'](_0x283146);};}exports[_0x0067('0x34')]=function(_0x4f69e1,_0x5aee99){var _0x251235={},_0x218afc={},_0x5858fa={'count':0x0,'rows':[]};var _0xc528d1=_[_0x0067('0x35')](db['FaxQueue'][_0x0067('0x36')],function(_0x313720){return{'name':_0x313720[_0x0067('0x37')],'type':_0x313720[_0x0067('0x38')][_0x0067('0x39')]};});_0x218afc[_0x0067('0x3a')]=_[_0x0067('0x35')](_0xc528d1,'name');_0x218afc[_0x0067('0x3b')]=_['keys'](_0x4f69e1[_0x0067('0x3b')]);_0x218afc[_0x0067('0x3c')]=_[_0x0067('0x3d')](_0x218afc[_0x0067('0x3a')],_0x218afc['query']);_0x251235['attributes']=_[_0x0067('0x3d')](_0x218afc[_0x0067('0x3a')],qs[_0x0067('0x3e')](_0x4f69e1[_0x0067('0x3b')][_0x0067('0x3e')]));_0x251235[_0x0067('0x3f')]=_0x251235['attributes'][_0x0067('0x40')]?_0x251235['attributes']:_0x218afc[_0x0067('0x3a')];if(!_0x4f69e1[_0x0067('0x3b')][_0x0067('0x41')](_0x0067('0x42'))){_0x251235['limit']=qs[_0x0067('0x27')](_0x4f69e1[_0x0067('0x3b')][_0x0067('0x27')]);_0x251235[_0x0067('0x25')]=qs[_0x0067('0x25')](_0x4f69e1[_0x0067('0x3b')][_0x0067('0x25')]);}_0x251235['order']=qs['sort'](_0x4f69e1[_0x0067('0x3b')]['sort']);_0x251235['where']=qs[_0x0067('0x3c')](_['pick'](_0x4f69e1['query'],_0x218afc[_0x0067('0x3c')]),_0xc528d1);if(_0x4f69e1[_0x0067('0x3b')][_0x0067('0x43')]){_0x251235[_0x0067('0x44')]=_['merge'](_0x251235['where'],{'$or':_[_0x0067('0x35')](_0xc528d1,function(_0x39f898){if(_0x39f898[_0x0067('0x38')]!=='VIRTUAL'){var _0x3eaf34={};_0x3eaf34[_0x39f898[_0x0067('0x33')]]={'$like':'%'+_0x4f69e1[_0x0067('0x3b')][_0x0067('0x43')]+'%'};return _0x3eaf34;}})});}_0x251235=_[_0x0067('0x45')]({},_0x251235,_0x4f69e1[_0x0067('0x46')]);var _0x4fd7b0={'where':_0x251235[_0x0067('0x44')]};return db['FaxQueue'][_0x0067('0x28')](_0x4fd7b0)['then'](function(_0xa90997){_0x5858fa[_0x0067('0x28')]=_0xa90997;if(_0x4f69e1[_0x0067('0x3b')]['includeAll']){_0x251235[_0x0067('0x47')]=[{'all':!![]}];}return db['FaxQueue'][_0x0067('0x48')](_0x251235);})['then'](function(_0x57b9c8){_0x5858fa[_0x0067('0x49')]=_0x57b9c8;return _0x5858fa;})['then'](respondWithFilteredResult(_0x5aee99,_0x251235))[_0x0067('0x4a')](handleError(_0x5aee99,null));};exports[_0x0067('0x4b')]=function(_0x379609,_0x2e3ab5){var _0x2b353a={'raw':!![],'where':{'id':_0x379609[_0x0067('0x4c')]['id']}},_0xbbb2b4={};_0xbbb2b4[_0x0067('0x3a')]=_[_0x0067('0x4d')](db[_0x0067('0x4e')][_0x0067('0x36')]);_0xbbb2b4[_0x0067('0x3b')]=_[_0x0067('0x4d')](_0x379609['query']);_0xbbb2b4[_0x0067('0x3c')]=_['intersection'](_0xbbb2b4['model'],_0xbbb2b4[_0x0067('0x3b')]);_0x2b353a[_0x0067('0x3f')]=_['intersection'](_0xbbb2b4['model'],qs[_0x0067('0x3e')](_0x379609[_0x0067('0x3b')][_0x0067('0x3e')]));_0x2b353a[_0x0067('0x3f')]=_0x2b353a[_0x0067('0x3f')][_0x0067('0x40')]?_0x2b353a[_0x0067('0x3f')]:_0xbbb2b4[_0x0067('0x3a')];if(_0x379609[_0x0067('0x3b')][_0x0067('0x4f')]){_0x2b353a[_0x0067('0x47')]=[{'all':!![]}];}_0x2b353a=_[_0x0067('0x45')]({},_0x2b353a,_0x379609[_0x0067('0x46')]);return db[_0x0067('0x4e')][_0x0067('0x50')](_0x2b353a)[_0x0067('0x2d')](handleEntityNotFound(_0x2e3ab5,null))[_0x0067('0x2d')](respondWithResult(_0x2e3ab5,null))['catch'](handleError(_0x2e3ab5,null));};exports[_0x0067('0x51')]=function(_0x5060e7,_0x534d5b){return db['FaxQueue'][_0x0067('0x51')](_0x5060e7[_0x0067('0x52')],{})['then'](function(_0x13ef3f){var _0x3d34c4=_0x5060e7[_0x0067('0x53')]['get']({'plain':!![]});if(!_0x3d34c4)throw new Error(_0x0067('0x54'));if(_0x3d34c4[_0x0067('0x55')]===_0x0067('0x53')){var _0x78d76d=_0x13ef3f['get']({'plain':!![]});var _0x5205de='FaxQueues';return db[_0x0067('0x56')][_0x0067('0x50')]({'where':{'name':_0x5205de,'userProfileId':_0x3d34c4['userProfileId']},'raw':!![]})[_0x0067('0x2d')](function(_0x3366f4){if(_0x3366f4&&_0x3366f4[_0x0067('0x57')]===0x0){return db['UserProfileResource'][_0x0067('0x51')]({'name':_0x78d76d[_0x0067('0x33')],'resourceId':_0x78d76d['id'],'type':_0x3366f4[_0x0067('0x33')],'sectionId':_0x3366f4['id']},{})[_0x0067('0x2d')](function(){return _0x13ef3f;});}else{return _0x13ef3f;}})['catch'](function(_0x775a12){logger[_0x0067('0x32')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x775a12);throw _0x775a12;});}return _0x13ef3f;})[_0x0067('0x2d')](respondWithResult(_0x534d5b,0xc9))[_0x0067('0x4a')](handleError(_0x534d5b,null));};exports[_0x0067('0x2c')]=function(_0x3534e0,_0x561ef4){if(_0x3534e0[_0x0067('0x52')]['id']){delete _0x3534e0[_0x0067('0x52')]['id'];}return db['FaxQueue'][_0x0067('0x50')]({'where':{'id':_0x3534e0[_0x0067('0x4c')]['id']}})['then'](handleEntityNotFound(_0x561ef4,null))['then'](saveUpdates(_0x3534e0[_0x0067('0x52')],null))['then'](respondWithResult(_0x561ef4,null))[_0x0067('0x4a')](handleError(_0x561ef4,null));};exports[_0x0067('0x2e')]=function(_0x2c6a1f,_0x381958){return db[_0x0067('0x4e')][_0x0067('0x50')]({'where':{'id':_0x2c6a1f[_0x0067('0x4c')]['id']}})[_0x0067('0x2d')](handleEntityNotFound(_0x381958,null))['then'](removeEntity(_0x381958,null))[_0x0067('0x4a')](handleError(_0x381958,null));};exports[_0x0067('0x58')]=function(_0x2f4975,_0x2ec62f){return db['FaxQueue']['describe']()[_0x0067('0x2d')](respondWithResult(_0x2ec62f,null))[_0x0067('0x4a')](handleError(_0x2ec62f,null));};exports[_0x0067('0x59')]=function(_0x5e2a1d,_0x38e76a,_0x27e656){var _0x5cba4c={'raw':!![],'where':{}},_0x4b3b5d={},_0x47472d;return db['FaxQueue'][_0x0067('0x5a')]({'where':{'id':_0x5e2a1d[_0x0067('0x4c')]['id']}})['then'](handleEntityNotFound(_0x38e76a,null))[_0x0067('0x2d')](function(_0x25bb1b){if(_0x25bb1b){_0x47472d=_0x25bb1b[_0x0067('0x2f')]({'plain':!![]});_0x4b3b5d[_0x0067('0x3a')]=_[_0x0067('0x4d')](db['UserFaxQueue'][_0x0067('0x36')]);_0x4b3b5d[_0x0067('0x3b')]=_[_0x0067('0x4d')](_0x5e2a1d[_0x0067('0x3b')]);_0x4b3b5d[_0x0067('0x3c')]=_['intersection'](_0x4b3b5d[_0x0067('0x3a')],_0x4b3b5d[_0x0067('0x3b')]);_0x5cba4c[_0x0067('0x3f')]=_[_0x0067('0x3d')](_0x4b3b5d[_0x0067('0x3a')],qs[_0x0067('0x3e')](_0x5e2a1d[_0x0067('0x3b')][_0x0067('0x3e')]));_0x5cba4c[_0x0067('0x3f')]=_0x5cba4c[_0x0067('0x3f')][_0x0067('0x40')]?_0x5cba4c['attributes']:_0x4b3b5d[_0x0067('0x3a')];if(!_0x5e2a1d[_0x0067('0x3b')]['hasOwnProperty'](_0x0067('0x42'))){_0x5cba4c[_0x0067('0x27')]=qs['limit'](_0x5e2a1d[_0x0067('0x3b')][_0x0067('0x27')]);_0x5cba4c[_0x0067('0x25')]=qs[_0x0067('0x25')](_0x5e2a1d[_0x0067('0x3b')][_0x0067('0x25')]);}_0x5cba4c[_0x0067('0x5b')]=qs[_0x0067('0x5c')](_0x5e2a1d[_0x0067('0x3b')][_0x0067('0x5c')]);_0x5cba4c['where']=qs[_0x0067('0x3c')](_[_0x0067('0x5d')](_0x5e2a1d[_0x0067('0x3b')],_0x4b3b5d[_0x0067('0x3c')]));_0x5cba4c['where'][_0x0067('0x5e')]=_0x25bb1b['id'];if(_0x5e2a1d[_0x0067('0x3b')][_0x0067('0x43')]){_0x5cba4c['where']=_['merge'](_0x5cba4c[_0x0067('0x44')],{'$or':_[_0x0067('0x35')](_0x5cba4c[_0x0067('0x3f')],function(_0x129b70){var _0x356e90={};_0x356e90[_0x129b70]={'$like':'%'+_0x5e2a1d['query'][_0x0067('0x43')]+'%'};return _0x356e90;})});}_0x5cba4c=_[_0x0067('0x45')]({},_0x5cba4c,_0x5e2a1d[_0x0067('0x46')]);return db[_0x0067('0x5f')][_0x0067('0x48')](_0x5cba4c);}})[_0x0067('0x2d')](function(_0x184ba4){if(_0x184ba4){return db[_0x0067('0x60')][_0x0067('0x61')]({'where':{'id':_[_0x0067('0x35')](_0x184ba4,_0x0067('0x62')),'role':'agent'},'attributes':['id',_0x0067('0x33'),_0x0067('0x63'),_0x0067('0x64'),_0x0067('0x65')]});}})[_0x0067('0x2d')](function(_0x387a66){if(_0x387a66){return{'count':_0x387a66[_0x0067('0x28')],'rows':_[_0x0067('0x35')](_0x387a66[_0x0067('0x49')],function(_0x1db3d0){return{'membername':_0x1db3d0[_0x0067('0x33')],'UserId':_0x1db3d0['id'],'queue_name':_0x47472d[_0x0067('0x33')],'FaxQueueId':_0x47472d['id'],'interface':util[_0x0067('0x66')](_0x0067('0x67'),'SIP',_0x1db3d0[_0x0067('0x33')]),'penalty':0x0,'paused':_0x1db3d0[_0x0067('0x63')],'createdAt':_0x1db3d0['createdAt'],'updatedAt':_0x1db3d0[_0x0067('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x0067('0x2d')](respondWithFilteredResult(_0x38e76a,_0x5cba4c))['catch'](handleError(_0x38e76a,null));};exports[_0x0067('0x68')]=function(_0x30cc7b,_0x2ac8d9,_0x1dc152){var _0x187a26={};var _0x5db872={};var _0x4f2173;var _0x359108;return db[_0x0067('0x4e')][_0x0067('0x5a')]({'where':{'id':_0x30cc7b[_0x0067('0x4c')]['id']}})[_0x0067('0x2d')](handleEntityNotFound(_0x2ac8d9,null))[_0x0067('0x2d')](function(_0x24d08e){if(_0x24d08e){_0x4f2173=_0x24d08e;_0x5db872[_0x0067('0x3a')]=_[_0x0067('0x4d')](db['Team'][_0x0067('0x36')]);_0x5db872['query']=_['keys'](_0x30cc7b[_0x0067('0x3b')]);_0x5db872[_0x0067('0x3c')]=_['intersection'](_0x5db872[_0x0067('0x3a')],_0x5db872[_0x0067('0x3b')]);_0x187a26[_0x0067('0x3f')]=_[_0x0067('0x3d')](_0x5db872['model'],qs['fields'](_0x30cc7b[_0x0067('0x3b')][_0x0067('0x3e')]));_0x187a26[_0x0067('0x3f')]=_0x187a26[_0x0067('0x3f')][_0x0067('0x40')]?_0x187a26[_0x0067('0x3f')]:_0x5db872[_0x0067('0x3a')];_0x187a26[_0x0067('0x5b')]=qs['sort'](_0x30cc7b[_0x0067('0x3b')]['sort']);_0x187a26['where']=qs[_0x0067('0x3c')](_['pick'](_0x30cc7b['query'],_0x5db872[_0x0067('0x3c')]));if(_0x30cc7b[_0x0067('0x3b')][_0x0067('0x43')]){_0x187a26[_0x0067('0x44')]=_[_0x0067('0x45')](_0x187a26[_0x0067('0x44')],{'$or':_[_0x0067('0x35')](_0x187a26[_0x0067('0x3f')],function(_0x3ebc71){var _0x504b11={};_0x504b11[_0x3ebc71]={'$like':'%'+_0x30cc7b[_0x0067('0x3b')]['filter']+'%'};return _0x504b11;})});}_0x187a26=_[_0x0067('0x45')]({},_0x187a26,_0x30cc7b[_0x0067('0x46')]);return _0x4f2173[_0x0067('0x68')](_0x187a26);}})[_0x0067('0x2d')](function(_0x3afc4c){if(_0x3afc4c){_0x359108=_0x3afc4c['length'];if(!_0x30cc7b[_0x0067('0x3b')][_0x0067('0x41')]('nolimit')){_0x187a26[_0x0067('0x27')]=qs[_0x0067('0x27')](_0x30cc7b[_0x0067('0x3b')]['limit']);_0x187a26[_0x0067('0x25')]=qs[_0x0067('0x25')](_0x30cc7b[_0x0067('0x3b')][_0x0067('0x25')]);}return _0x4f2173[_0x0067('0x68')](_0x187a26);}})[_0x0067('0x2d')](function(_0xd66c36){if(_0xd66c36){return _0xd66c36?{'count':_0x359108,'rows':_0xd66c36}:null;}})[_0x0067('0x2d')](respondWithResult(_0x2ac8d9,null))[_0x0067('0x4a')](handleError(_0x2ac8d9,null));};exports[_0x0067('0x69')]=function(_0x433edc,_0x41164f,_0xf8ceeb){var _0x3229ce=_0x433edc['body'][_0x0067('0x6a')];return db[_0x0067('0x6b')][_0x0067('0x48')]({'where':{'id':_0x3229ce},'attributes':['id'],'include':[{'model':db[_0x0067('0x60')],'as':_0x0067('0x6c'),'attributes':['id',_0x0067('0x33'),'online','voicePause',_0x0067('0x6d')],'raw':!![]}]})[_0x0067('0x2d')](function(_0x2baa5b){if(_0x2baa5b){var _0x221a15=_[_0x0067('0x6e')](_0x2baa5b,function(_0x583e53){var _0x6bf21f=_0x583e53[_0x0067('0x2f')]({'plain':!![]});return _0x6bf21f['Agents'];});return db[_0x0067('0x4e')][_0x0067('0x50')]({'where':{'id':_0x433edc['params']['id']}})[_0x0067('0x2d')](function(_0x4d332c){return db[_0x0067('0x6f')][_0x0067('0x70')](function(_0x3ba89b){return _0x4d332c[_0x0067('0x69')](_0x3229ce,{'transaction':_0x3ba89b})['then'](function(){return BPromise[_0x0067('0x71')](_0x221a15,function(_0x162a81){return db[_0x0067('0x5f')][_0x0067('0x72')]({'where':{'UserId':_0x162a81['id'],'FaxQueueId':_0x433edc[_0x0067('0x4c')]['id']},'transaction':_0x3ba89b});});})['then'](function(){_0x221a15[_0x0067('0x73')](function(_0x2097b9){socket[_0x0067('0x74')](_0x0067('0x75'),{'UserId':_0x2097b9['id'],'FaxQueueId':_0x4d332c['id']});});});});});}})[_0x0067('0x2d')](respondWithStatusCode(_0x41164f,null))[_0x0067('0x4a')](handleError(_0x41164f,null));};exports[_0x0067('0x76')]=function(_0x42034a,_0x204e78,_0x42d191){return db[_0x0067('0x6b')][_0x0067('0x48')]({'where':{'id':_0x42034a[_0x0067('0x3b')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x0067('0x6c'),'attributes':['id'],'raw':!![]}]})[_0x0067('0x2d')](handleEntityNotFound(_0x204e78,null))[_0x0067('0x2d')](function(_0x245258){var _0x348a15=_['map'](_0x245258,'id');var _0x3469a1=[];var _0x358c69=[];var _0x1ef1c5=squel[_0x0067('0x77')]();_0x1ef1c5['field']('tq.TeamId')[_0x0067('0x78')]('team_has_fax_queues','tq')[_0x0067('0x79')](_0x0067('0x7a'),'ut',_0x0067('0x7b'))[_0x0067('0x44')]('FaxQueueId\x20=\x20?',_0x42034a[_0x0067('0x4c')]['id']);for(var _0x482635=0x0;_0x482635<_0x245258['length'];_0x482635+=0x1){let _0x48f166=_0x245258[_0x482635];for(var _0x41d20c=0x0;_0x41d20c<_0x48f166['Agents'][_0x0067('0x40')];_0x41d20c+=0x1){let _0x4b515b=_0x48f166[_0x0067('0x6c')][_0x41d20c];var _0x5011f2=_0x1ef1c5[_0x0067('0x7c')]();_0x5011f2[_0x0067('0x44')]('ut.UserId\x20=\x20?',_0x4b515b['id']);_0x358c69['push'](db['sequelize']['query'](_0x5011f2['toString'](),{'type':db['sequelize']['QueryTypes'][_0x0067('0x7d')]})['then'](function(_0x1cc03b){if(_0x1cc03b[_0x0067('0x40')]===0x1){return _0x4b515b['id'];}else{var _0x367fdf=_['every'](_['map'](_0x1cc03b,_0x0067('0x7e')),function(_0x5ed294){return _['includes'](_0x348a15,_0x5ed294);});if(_0x367fdf){return _0x4b515b['id'];}}}));}}return BPromise[_0x0067('0x7f')](_0x358c69)['then'](function(_0x55b089){_0x3469a1=_(_0x3469a1)[_0x0067('0x80')](_0x55b089)['compact']()[_0x0067('0x81')]();return db['FaxQueue'][_0x0067('0x50')]({'where':{'id':_0x42034a[_0x0067('0x4c')]['id']}})[_0x0067('0x2d')](function(_0x37173e){return db[_0x0067('0x6f')][_0x0067('0x70')](function(_0x5232ae){return _0x37173e['removeTeams'](_0x42034a[_0x0067('0x3b')][_0x0067('0x6a')],{'transaction':_0x5232ae})[_0x0067('0x2d')](function(){if(!_['isEmpty'](_0x3469a1)){return _0x37173e[_0x0067('0x82')](_0x3469a1,{'transaction':_0x5232ae});}})[_0x0067('0x2d')](function(){_0x3469a1[_0x0067('0x73')](function(_0x4e51b9){socket[_0x0067('0x74')](_0x0067('0x83'),{'UserId':_0x4e51b9,'FaxQueueId':_0x37173e['id']});});});});});});})[_0x0067('0x2d')](respondWithStatusCode(_0x204e78,null))['catch'](handleError(_0x204e78,null));};exports[_0x0067('0x84')]=function(_0x3bb12d,_0x543f6d,_0x11c8eb){return db[_0x0067('0x4e')]['find']({'where':{'id':_0x3bb12d['params']['id']}})[_0x0067('0x2d')](handleEntityNotFound(_0x543f6d,null))['then'](function(_0x4f4f36){if(_0x4f4f36){return _0x4f4f36[_0x0067('0x84')](_0x3bb12d[_0x0067('0x52')]['ids'],_[_0x0067('0x85')](_0x3bb12d['body'],['ids','id'])||{})[_0x0067('0x86')](function(_0x3fd973){for(var _0x3561c0=0x0;_0x3561c0<_0x3bb12d[_0x0067('0x52')][_0x0067('0x6a')]['length'];_0x3561c0+=0x1){socket[_0x0067('0x74')](_0x0067('0x75'),{'UserId':Number(_0x3bb12d[_0x0067('0x52')][_0x0067('0x6a')][_0x3561c0]),'FaxQueueId':Number(_0x3bb12d[_0x0067('0x4c')]['id'])});}return _0x3fd973;});}})['then'](respondWithResult(_0x543f6d,null))[_0x0067('0x4a')](handleError(_0x543f6d,null));};exports[_0x0067('0x82')]=function(_0x57dd36,_0x1af324,_0x40e4b1){return db[_0x0067('0x4e')][_0x0067('0x50')]({'where':{'id':_0x57dd36[_0x0067('0x4c')]['id']}})[_0x0067('0x2d')](handleEntityNotFound(_0x1af324,null))[_0x0067('0x2d')](function(_0x390271){if(_0x390271){return _0x390271[_0x0067('0x82')](_0x57dd36['query'][_0x0067('0x6a')])['then'](function(){if(_[_0x0067('0x87')](_0x57dd36[_0x0067('0x3b')][_0x0067('0x6a')])){for(var _0x353e40=0x0;_0x353e40<_0x57dd36[_0x0067('0x3b')][_0x0067('0x6a')][_0x0067('0x40')];_0x353e40+=0x1){socket[_0x0067('0x74')](_0x0067('0x83'),{'UserId':Number(_0x57dd36[_0x0067('0x3b')][_0x0067('0x6a')][_0x353e40]),'FaxQueueId':Number(_0x57dd36[_0x0067('0x4c')]['id'])});}}else{socket['emit'](_0x0067('0x83'),{'UserId':Number(_0x57dd36[_0x0067('0x3b')][_0x0067('0x6a')]),'FaxQueueId':Number(_0x57dd36[_0x0067('0x4c')]['id'])});}});}})[_0x0067('0x2d')](respondWithStatusCode(_0x1af324,null))['catch'](handleError(_0x1af324,null));};exports['getAgents']=function(_0xc8b0f7,_0x264f3b,_0x198cd9){var _0x42c156={};var _0x45a81b={};var _0x57948b;var _0x9267f5;return db[_0x0067('0x4e')][_0x0067('0x5a')]({'where':{'id':_0xc8b0f7[_0x0067('0x4c')]['id']}})[_0x0067('0x2d')](handleEntityNotFound(_0x264f3b,null))[_0x0067('0x2d')](function(_0x115182){if(_0x115182){_0x57948b=_0x115182;_0x45a81b[_0x0067('0x3a')]=_[_0x0067('0x4d')](db['User'][_0x0067('0x36')]);_0x45a81b[_0x0067('0x3b')]=_[_0x0067('0x4d')](_0xc8b0f7['query']);_0x45a81b['filters']=_[_0x0067('0x3d')](_0x45a81b[_0x0067('0x3a')],_0x45a81b[_0x0067('0x3b')]);_0x42c156[_0x0067('0x3f')]=_['intersection'](_0x45a81b[_0x0067('0x3a')],qs[_0x0067('0x3e')](_0xc8b0f7[_0x0067('0x3b')]['fields']));_0x42c156[_0x0067('0x3f')]=_0x42c156[_0x0067('0x3f')][_0x0067('0x40')]?_0x42c156[_0x0067('0x3f')]:_0x45a81b[_0x0067('0x3a')];_0x42c156[_0x0067('0x5b')]=qs[_0x0067('0x5c')](_0xc8b0f7[_0x0067('0x3b')]['sort']);_0x42c156['where']=qs[_0x0067('0x3c')](_[_0x0067('0x5d')](_0xc8b0f7[_0x0067('0x3b')],_0x45a81b[_0x0067('0x3c')]));if(_0xc8b0f7['query']['filter']){_0x42c156['where']=_[_0x0067('0x45')](_0x42c156[_0x0067('0x44')],{'$or':_[_0x0067('0x35')](_0x42c156[_0x0067('0x3f')],function(_0x426ec1){var _0x440b9a={};_0x440b9a[_0x426ec1]={'$like':'%'+_0xc8b0f7[_0x0067('0x3b')][_0x0067('0x43')]+'%'};return _0x440b9a;})});}_0x42c156=_[_0x0067('0x45')]({},_0x42c156,_0xc8b0f7['options']);return _0x57948b[_0x0067('0x88')](_0x42c156);}})[_0x0067('0x2d')](function(_0x492f08){if(_0x492f08){_0x9267f5=_0x492f08[_0x0067('0x40')];if(!_0xc8b0f7['query'][_0x0067('0x41')]('nolimit')){_0x42c156[_0x0067('0x27')]=qs[_0x0067('0x27')](_0xc8b0f7[_0x0067('0x3b')][_0x0067('0x27')]);_0x42c156['offset']=qs['offset'](_0xc8b0f7[_0x0067('0x3b')][_0x0067('0x25')]);}return _0x57948b[_0x0067('0x88')](_0x42c156);}})[_0x0067('0x2d')](function(_0x4bfe4c){if(_0x4bfe4c){return _0x4bfe4c?{'count':_0x9267f5,'rows':_0x4bfe4c}:null;}})[_0x0067('0x2d')](respondWithResult(_0x264f3b,null))[_0x0067('0x4a')](handleError(_0x264f3b,null));};
\ No newline at end of file
index db11b45..2b3b62c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a01=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x1c4f54,_0x3225e2){var _0x5a1284=function(_0x5cbf2c){while(--_0x5cbf2c){_0x1c4f54['push'](_0x1c4f54['shift']());}};_0x5a1284(++_0x3225e2);}(_0x0a01,0xbd));var _0x10a0=function(_0x240322,_0x59912b){_0x240322=_0x240322-0x0;var _0x41997b=_0x0a01[_0x240322];return _0x41997b;};'use strict';var EventEmitter=require(_0x10a0('0x0'));var FaxQueue=require(_0x10a0('0x1'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x10a0('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x10a0('0x3')};function emitEvent(_0x51ac15){return function(_0x2de3a7,_0x4d50f0,_0xfd2de0){FaxQueueEvents['emit'](_0x51ac15+':'+_0x2de3a7['id'],_0x2de3a7);FaxQueueEvents[_0x10a0('0x4')](_0x51ac15,_0x2de3a7);_0xfd2de0(null);};}for(var e in events){if(events[_0x10a0('0x5')](e)){var event=events[e];FaxQueue[_0x10a0('0x6')](e,emitEvent(event));}}module[_0x10a0('0x7')]=FaxQueueEvents;
\ No newline at end of file
+var _0x0a24=['hook','exports','../../mysqldb','FaxQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x231bd4,_0x443098){var _0x2b187e=function(_0x26aa7c){while(--_0x26aa7c){_0x231bd4['push'](_0x231bd4['shift']());}};_0x2b187e(++_0x443098);}(_0x0a24,0x1b0));var _0x40a2=function(_0x465b0c,_0x569d90){_0x465b0c=_0x465b0c-0x0;var _0x502ff0=_0x0a24[_0x465b0c];return _0x502ff0;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x40a2('0x0'))['db'][_0x40a2('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x40a2('0x2')](0x0);var events={'afterCreate':_0x40a2('0x3'),'afterUpdate':_0x40a2('0x4'),'afterDestroy':_0x40a2('0x5')};function emitEvent(_0x26f0a2){return function(_0x588fe3,_0x389975,_0x414914){FaxQueueEvents[_0x40a2('0x6')](_0x26f0a2+':'+_0x588fe3['id'],_0x588fe3);FaxQueueEvents[_0x40a2('0x6')](_0x26f0a2,_0x588fe3);_0x414914(null);};}for(var e in events){if(events[_0x40a2('0x7')](e)){var event=events[e];FaxQueue[_0x40a2('0x8')](e,emitEvent(event));}}module[_0x40a2('0x9')]=FaxQueueEvents;
\ No newline at end of file
index 29ae8f4..8754d1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec7d=['util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','exports','FaxQueue','fax_queues','lodash'];(function(_0x281c45,_0x23d341){var _0x4d5196=function(_0x544b9e){while(--_0x544b9e){_0x281c45['push'](_0x281c45['shift']());}};_0x4d5196(++_0x23d341);}(_0xec7d,0x143));var _0xdec7=function(_0x1757f2,_0x1b09fa){_0x1757f2=_0x1757f2-0x0;var _0x5e7212=_0xec7d[_0x1757f2];return _0x5e7212;};'use strict';var _=require(_0xdec7('0x0'));var util=require(_0xdec7('0x1'));var logger=require(_0xdec7('0x2'))('api');var moment=require(_0xdec7('0x3'));var BPromise=require('bluebird');var rp=require(_0xdec7('0x4'));var fs=require('fs');var path=require(_0xdec7('0x5'));var rimraf=require(_0xdec7('0x6'));var config=require(_0xdec7('0x7'));var attributes=require(_0xdec7('0x8'));module[_0xdec7('0x9')]=function(_0x5f5713,_0x12224a){return _0x5f5713['define'](_0xdec7('0xa'),attributes,{'tableName':_0xdec7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8661=['path','../../config/environment','define','fax_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x1ec65c,_0x354923){var _0x5249c2=function(_0x451341){while(--_0x451341){_0x1ec65c['push'](_0x1ec65c['shift']());}};_0x5249c2(++_0x354923);}(_0x8661,0x10c));var _0x1866=function(_0x222f14,_0x202cf9){_0x222f14=_0x222f14-0x0;var _0x5e5fd8=_0x8661[_0x222f14];return _0x5e5fd8;};'use strict';var _=require(_0x1866('0x0'));var util=require(_0x1866('0x1'));var logger=require(_0x1866('0x2'))(_0x1866('0x3'));var moment=require(_0x1866('0x4'));var BPromise=require(_0x1866('0x5'));var rp=require(_0x1866('0x6'));var fs=require('fs');var path=require(_0x1866('0x7'));var rimraf=require('rimraf');var config=require(_0x1866('0x8'));var attributes=require('./faxQueue.attributes');module['exports']=function(_0x4c9071,_0x2fa193){return _0x4c9071[_0x1866('0x9')]('FaxQueue',attributes,{'tableName':_0x1866('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5f26cb0..1de5da9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe911=['include','model','map','GetFaxQueue','find','ShowFaxQueue','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','then','info','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FaxQueue,\x20%s,\x20%s','request\x20sent','result','catch','FaxQueue','findAll','options','raw','where','attributes'];(function(_0x507ccd,_0x54afc9){var _0x36887d=function(_0x5f3a53){while(--_0x5f3a53){_0x507ccd['push'](_0x507ccd['shift']());}};_0x36887d(++_0x54afc9);}(_0xe911,0x146));var _0x1e91=function(_0x46d4ba,_0x1968e2){_0x46d4ba=_0x46d4ba-0x0;var _0x26751b=_0xe911[_0x46d4ba];return _0x26751b;};'use strict';var _=require('lodash');var util=require(_0x1e91('0x0'));var moment=require(_0x1e91('0x1'));var BPromise=require(_0x1e91('0x2'));var rs=require(_0x1e91('0x3'));var fs=require('fs');var Redis=require(_0x1e91('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1e91('0x5'));var logger=require(_0x1e91('0x6'))(_0x1e91('0x7'));var config=require('../../config/environment');var jayson=require(_0x1e91('0x8'));var client=jayson[_0x1e91('0x9')][_0x1e91('0xa')]({'port':0x232a});config[_0x1e91('0xb')]=_[_0x1e91('0xc')](config['redis'],{'host':_0x1e91('0xd'),'port':0x18eb});var socket=require(_0x1e91('0xe'))(new Redis(config['redis']));require(_0x1e91('0xf'))['register'](socket);function respondWithRpcPromise(_0x336756,_0x250de4,_0x4a4e54){return new BPromise(function(_0x4109c1,_0x22d66c){return client['request'](_0x336756,_0x4a4e54)[_0x1e91('0x10')](function(_0x57a682){logger[_0x1e91('0x11')]('FaxQueue,\x20%s,\x20%s',_0x250de4,'request\x20sent');logger[_0x1e91('0x12')](_0x1e91('0x13'),_0x250de4,'request\x20sent',JSON[_0x1e91('0x14')](_0x57a682));if(_0x57a682['error']){if(_0x57a682[_0x1e91('0x15')][_0x1e91('0x16')]===0x1f4){logger[_0x1e91('0x15')]('FaxQueue,\x20%s,\x20%s',_0x250de4,_0x57a682[_0x1e91('0x15')][_0x1e91('0x17')]);return _0x22d66c(_0x57a682[_0x1e91('0x15')][_0x1e91('0x17')]);}logger['error'](_0x1e91('0x18'),_0x250de4,_0x57a682[_0x1e91('0x15')][_0x1e91('0x17')]);return _0x4109c1(_0x57a682[_0x1e91('0x15')][_0x1e91('0x17')]);}else{logger[_0x1e91('0x11')](_0x1e91('0x18'),_0x250de4,_0x1e91('0x19'));_0x4109c1(_0x57a682[_0x1e91('0x1a')][_0x1e91('0x17')]);}})[_0x1e91('0x1b')](function(_0x203ecf){logger[_0x1e91('0x15')](_0x1e91('0x18'),_0x250de4,_0x203ecf);_0x22d66c(_0x203ecf);});});}exports['GetFaxQueue']=function(_0xbc43aa){var _0x3c11a7=this;return new Promise(function(_0x69e012,_0x5dd5b0){return db[_0x1e91('0x1c')][_0x1e91('0x1d')]({'raw':_0xbc43aa['options']?_0xbc43aa[_0x1e91('0x1e')][_0x1e91('0x1f')]===undefined?!![]:![]:!![],'where':_0xbc43aa['options']?_0xbc43aa['options'][_0x1e91('0x20')]||null:null,'attributes':_0xbc43aa['options']?_0xbc43aa[_0x1e91('0x1e')][_0x1e91('0x21')]||null:null,'limit':_0xbc43aa[_0x1e91('0x1e')]?_0xbc43aa['options']['limit']||null:null,'include':_0xbc43aa[_0x1e91('0x1e')]?_0xbc43aa[_0x1e91('0x1e')][_0x1e91('0x22')]?_['map'](_0xbc43aa[_0x1e91('0x1e')][_0x1e91('0x22')],function(_0x43d23f){return{'model':db[_0x43d23f[_0x1e91('0x23')]],'as':_0x43d23f['as'],'attributes':_0x43d23f[_0x1e91('0x21')],'include':_0x43d23f['include']?_[_0x1e91('0x24')](_0x43d23f['include'],function(_0x2f00da){return{'model':db[_0x2f00da['model']],'as':_0x2f00da['as'],'attributes':_0x2f00da[_0x1e91('0x21')],'include':_0x2f00da[_0x1e91('0x22')]?_[_0x1e91('0x24')](_0x2f00da[_0x1e91('0x22')],function(_0xd6e8b8){return{'model':db[_0xd6e8b8[_0x1e91('0x23')]],'as':_0xd6e8b8['as'],'attributes':_0xd6e8b8[_0x1e91('0x21')]};}):[]};}):[]};}):[]:[]})[_0x1e91('0x10')](function(_0xcebdef){logger[_0x1e91('0x11')](_0x1e91('0x25'),_0xbc43aa);logger['debug'](_0x1e91('0x25'),_0xbc43aa,JSON[_0x1e91('0x14')](_0xcebdef));_0x69e012(_0xcebdef);})[_0x1e91('0x1b')](function(_0xd4f16d){logger[_0x1e91('0x15')](_0x1e91('0x25'),_0xd4f16d[_0x1e91('0x17')],_0xbc43aa);_0x5dd5b0(_0x3c11a7[_0x1e91('0x15')](0x1f4,_0xd4f16d[_0x1e91('0x17')]));});});};exports['ShowFaxQueue']=function(_0x5d6fd8){var _0x2388b4=this;return new Promise(function(_0xb78b0b,_0x4f9686){return db[_0x1e91('0x1c')][_0x1e91('0x26')]({'raw':_0x5d6fd8[_0x1e91('0x1e')]?_0x5d6fd8[_0x1e91('0x1e')][_0x1e91('0x1f')]===undefined?!![]:![]:!![],'where':_0x5d6fd8['options']?_0x5d6fd8[_0x1e91('0x1e')][_0x1e91('0x20')]||null:null,'attributes':_0x5d6fd8[_0x1e91('0x1e')]?_0x5d6fd8[_0x1e91('0x1e')][_0x1e91('0x21')]||null:null,'include':_0x5d6fd8['options']?_0x5d6fd8['options']['include']?_[_0x1e91('0x24')](_0x5d6fd8[_0x1e91('0x1e')][_0x1e91('0x22')],function(_0x48dc3d){return{'model':db[_0x48dc3d[_0x1e91('0x23')]],'as':_0x48dc3d['as'],'attributes':_0x48dc3d[_0x1e91('0x21')],'include':_0x48dc3d['include']?_[_0x1e91('0x24')](_0x48dc3d[_0x1e91('0x22')],function(_0x1ed5ef){return{'model':db[_0x1ed5ef['model']],'as':_0x1ed5ef['as'],'attributes':_0x1ed5ef[_0x1e91('0x21')],'include':_0x1ed5ef[_0x1e91('0x22')]?_[_0x1e91('0x24')](_0x1ed5ef['include'],function(_0x11875b){return{'model':db[_0x11875b[_0x1e91('0x23')]],'as':_0x11875b['as'],'attributes':_0x11875b[_0x1e91('0x21')]};}):[]};}):[]};}):[]:[]})[_0x1e91('0x10')](function(_0x2cbdfb){logger[_0x1e91('0x11')]('ShowFaxQueue',_0x5d6fd8);logger['debug']('ShowFaxQueue',_0x5d6fd8,JSON['stringify'](_0x2cbdfb));_0xb78b0b(_0x2cbdfb);})[_0x1e91('0x1b')](function(_0x435ad5){logger[_0x1e91('0x15')](_0x1e91('0x27'),_0x435ad5[_0x1e91('0x17')],_0x5d6fd8);_0x4f9686(_0x2388b4[_0x1e91('0x15')](0x1f4,_0x435ad5[_0x1e91('0x17')]));});});};
\ No newline at end of file
+var _0x38ff=['ShowFaxQueue','FaxQueue','find','lodash','util','moment','bluebird','randomstring','jayson/promise','http','redis','localhost','socket.io-emitter','register','request','then','FaxQueue,\x20%s,\x20%s','debug','stringify','error','message','info','request\x20sent','catch','options','raw','where','attributes','limit','include','map','model','GetFaxQueue'];(function(_0x5ce041,_0x1c7828){var _0x38b6a2=function(_0xa9d0f3){while(--_0xa9d0f3){_0x5ce041['push'](_0x5ce041['shift']());}};_0x38b6a2(++_0x1c7828);}(_0x38ff,0x18f));var _0xf38f=function(_0x450bf9,_0x1895de){_0x450bf9=_0x450bf9-0x0;var _0x268350=_0x38ff[_0x450bf9];return _0x268350;};'use strict';var _=require(_0xf38f('0x0'));var util=require(_0xf38f('0x1'));var moment=require(_0xf38f('0x2'));var BPromise=require(_0xf38f('0x3'));var rs=require(_0xf38f('0x4'));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('../../config/environment');var jayson=require(_0xf38f('0x5'));var client=jayson['client'][_0xf38f('0x6')]({'port':0x232a});config[_0xf38f('0x7')]=_['defaults'](config[_0xf38f('0x7')],{'host':_0xf38f('0x8'),'port':0x18eb});var socket=require(_0xf38f('0x9'))(new Redis(config[_0xf38f('0x7')]));require('./faxQueue.socket')[_0xf38f('0xa')](socket);function respondWithRpcPromise(_0xde835a,_0x4aba47,_0xde5ef7){return new BPromise(function(_0xc141ef,_0x42bf29){return client[_0xf38f('0xb')](_0xde835a,_0xde5ef7)[_0xf38f('0xc')](function(_0x1b374e){logger['info'](_0xf38f('0xd'),_0x4aba47,'request\x20sent');logger[_0xf38f('0xe')]('FaxQueue,\x20%s,\x20%s,\x20%s',_0x4aba47,'request\x20sent',JSON[_0xf38f('0xf')](_0x1b374e));if(_0x1b374e[_0xf38f('0x10')]){if(_0x1b374e['error']['code']===0x1f4){logger[_0xf38f('0x10')](_0xf38f('0xd'),_0x4aba47,_0x1b374e[_0xf38f('0x10')][_0xf38f('0x11')]);return _0x42bf29(_0x1b374e[_0xf38f('0x10')]['message']);}logger['error'](_0xf38f('0xd'),_0x4aba47,_0x1b374e[_0xf38f('0x10')]['message']);return _0xc141ef(_0x1b374e[_0xf38f('0x10')][_0xf38f('0x11')]);}else{logger[_0xf38f('0x12')](_0xf38f('0xd'),_0x4aba47,_0xf38f('0x13'));_0xc141ef(_0x1b374e['result'][_0xf38f('0x11')]);}})[_0xf38f('0x14')](function(_0x13eca3){logger[_0xf38f('0x10')](_0xf38f('0xd'),_0x4aba47,_0x13eca3);_0x42bf29(_0x13eca3);});});}exports['GetFaxQueue']=function(_0x48dd41){var _0x49d710=this;return new Promise(function(_0x1cfe59,_0xe74837){return db['FaxQueue']['findAll']({'raw':_0x48dd41[_0xf38f('0x15')]?_0x48dd41[_0xf38f('0x15')][_0xf38f('0x16')]===undefined?!![]:![]:!![],'where':_0x48dd41[_0xf38f('0x15')]?_0x48dd41[_0xf38f('0x15')][_0xf38f('0x17')]||null:null,'attributes':_0x48dd41[_0xf38f('0x15')]?_0x48dd41['options'][_0xf38f('0x18')]||null:null,'limit':_0x48dd41['options']?_0x48dd41['options'][_0xf38f('0x19')]||null:null,'include':_0x48dd41[_0xf38f('0x15')]?_0x48dd41[_0xf38f('0x15')][_0xf38f('0x1a')]?_[_0xf38f('0x1b')](_0x48dd41[_0xf38f('0x15')][_0xf38f('0x1a')],function(_0x5994cf){return{'model':db[_0x5994cf[_0xf38f('0x1c')]],'as':_0x5994cf['as'],'attributes':_0x5994cf['attributes'],'include':_0x5994cf[_0xf38f('0x1a')]?_[_0xf38f('0x1b')](_0x5994cf[_0xf38f('0x1a')],function(_0x438090){return{'model':db[_0x438090[_0xf38f('0x1c')]],'as':_0x438090['as'],'attributes':_0x438090[_0xf38f('0x18')],'include':_0x438090[_0xf38f('0x1a')]?_['map'](_0x438090[_0xf38f('0x1a')],function(_0x98c427){return{'model':db[_0x98c427[_0xf38f('0x1c')]],'as':_0x98c427['as'],'attributes':_0x98c427['attributes']};}):[]};}):[]};}):[]:[]})[_0xf38f('0xc')](function(_0x90c882){logger[_0xf38f('0x12')](_0xf38f('0x1d'),_0x48dd41);logger['debug'](_0xf38f('0x1d'),_0x48dd41,JSON[_0xf38f('0xf')](_0x90c882));_0x1cfe59(_0x90c882);})[_0xf38f('0x14')](function(_0x32d3f8){logger[_0xf38f('0x10')]('GetFaxQueue',_0x32d3f8[_0xf38f('0x11')],_0x48dd41);_0xe74837(_0x49d710[_0xf38f('0x10')](0x1f4,_0x32d3f8[_0xf38f('0x11')]));});});};exports[_0xf38f('0x1e')]=function(_0x42118b){var _0x371fb2=this;return new Promise(function(_0x56397c,_0x22198e){return db[_0xf38f('0x1f')][_0xf38f('0x20')]({'raw':_0x42118b['options']?_0x42118b[_0xf38f('0x15')][_0xf38f('0x16')]===undefined?!![]:![]:!![],'where':_0x42118b[_0xf38f('0x15')]?_0x42118b[_0xf38f('0x15')][_0xf38f('0x17')]||null:null,'attributes':_0x42118b[_0xf38f('0x15')]?_0x42118b[_0xf38f('0x15')][_0xf38f('0x18')]||null:null,'include':_0x42118b[_0xf38f('0x15')]?_0x42118b[_0xf38f('0x15')]['include']?_['map'](_0x42118b['options']['include'],function(_0x298c8a){return{'model':db[_0x298c8a['model']],'as':_0x298c8a['as'],'attributes':_0x298c8a[_0xf38f('0x18')],'include':_0x298c8a[_0xf38f('0x1a')]?_['map'](_0x298c8a[_0xf38f('0x1a')],function(_0x42c969){return{'model':db[_0x42c969[_0xf38f('0x1c')]],'as':_0x42c969['as'],'attributes':_0x42c969['attributes'],'include':_0x42c969[_0xf38f('0x1a')]?_['map'](_0x42c969[_0xf38f('0x1a')],function(_0x424575){return{'model':db[_0x424575[_0xf38f('0x1c')]],'as':_0x424575['as'],'attributes':_0x424575[_0xf38f('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x174453){logger[_0xf38f('0x12')]('ShowFaxQueue',_0x42118b);logger['debug']('ShowFaxQueue',_0x42118b,JSON[_0xf38f('0xf')](_0x174453));_0x56397c(_0x174453);})[_0xf38f('0x14')](function(_0x462f8e){logger[_0xf38f('0x10')](_0xf38f('0x1e'),_0x462f8e[_0xf38f('0x11')],_0x42118b);_0x22198e(_0x371fb2['error'](0x1f4,_0x462f8e[_0xf38f('0x11')]));});});};
\ No newline at end of file
index 879b285..e44296e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3fe=['length','faxQueue:','save','remove','update','emit','removeListener','register'];(function(_0x14540b,_0x85d32d){var _0x394822=function(_0x2e9b0e){while(--_0x2e9b0e){_0x14540b['push'](_0x14540b['shift']());}};_0x394822(++_0x85d32d);}(_0xd3fe,0xb2));var _0xed3f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd3fe[_0x3dd15e];return _0x231fd0;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=[_0xed3f('0x0'),_0xed3f('0x1'),_0xed3f('0x2')];function createListener(_0x12bb7c,_0x225607){return function(_0x31168c){_0x225607[_0xed3f('0x3')](_0x12bb7c,_0x31168c);};}function removeListener(_0x1d6d87,_0x131012){return function(){FaxQueueEvents[_0xed3f('0x4')](_0x1d6d87,_0x131012);};}exports[_0xed3f('0x5')]=function(_0xe6f2d6){for(var _0x5b42ee=0x0,_0x2b5354=events[_0xed3f('0x6')];_0x5b42ee<_0x2b5354;_0x5b42ee++){var _0x154ac3=events[_0x5b42ee];var _0x12e634=createListener(_0xed3f('0x7')+_0x154ac3,_0xe6f2d6);FaxQueueEvents['on'](_0x154ac3,_0x12e634);}};
\ No newline at end of file
+var _0x8463=['update','removeListener','register','length','./faxQueue.events'];(function(_0x8ccf38,_0x1c4b39){var _0x30cd54=function(_0x556d39){while(--_0x556d39){_0x8ccf38['push'](_0x8ccf38['shift']());}};_0x30cd54(++_0x1c4b39);}(_0x8463,0x1b2));var _0x3846=function(_0x49a809,_0x1c466e){_0x49a809=_0x49a809-0x0;var _0x2ae6a1=_0x8463[_0x49a809];return _0x2ae6a1;};'use strict';var FaxQueueEvents=require(_0x3846('0x0'));var events=['save','remove',_0x3846('0x1')];function createListener(_0x19660c,_0x2e2aa0){return function(_0x1434f0){_0x2e2aa0['emit'](_0x19660c,_0x1434f0);};}function removeListener(_0x538315,_0xe32d6d){return function(){FaxQueueEvents[_0x3846('0x2')](_0x538315,_0xe32d6d);};}exports[_0x3846('0x3')]=function(_0x1015a4){for(var _0x3d1b3e=0x0,_0x1a03a7=events[_0x3846('0x4')];_0x3d1b3e<_0x1a03a7;_0x3d1b3e++){var _0x385b9e=events[_0x3d1b3e];var _0x12403a=createListener('faxQueue:'+_0x385b9e,_0x1015a4);FaxQueueEvents['on'](_0x385b9e,_0x12403a);}};
\ No newline at end of file
index 0598fd0..c737ca5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77a9=['../../config/environment','./faxQueue.controller','get','isAuthenticated','index','describe','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','post','create','addAgents','update','delete','destroy','removeTeams','removeAgents','exports','multer','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x3bfc0c,_0xb383e7){var _0x4c6ce6=function(_0x10263c){while(--_0x10263c){_0x3bfc0c['push'](_0x3bfc0c['shift']());}};_0x4c6ce6(++_0xb383e7);}(_0x77a9,0x19e));var _0x977a=function(_0x1f5fec,_0x180c0f){_0x1f5fec=_0x1f5fec-0x0;var _0x148915=_0x77a9[_0x1f5fec];return _0x148915;};'use strict';var multer=require(_0x977a('0x0'));var util=require('util');var path=require(_0x977a('0x1'));var timeout=require('connect-timeout');var express=require(_0x977a('0x2'));var router=express[_0x977a('0x3')]();var fs_extra=require(_0x977a('0x4'));var auth=require(_0x977a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x977a('0x6'));var controller=require(_0x977a('0x7'));router[_0x977a('0x8')]('/',auth[_0x977a('0x9')](),controller[_0x977a('0xa')]);router['get']('/describe',auth[_0x977a('0x9')](),controller[_0x977a('0xb')]);router['get'](_0x977a('0xc'),auth[_0x977a('0x9')](),controller[_0x977a('0xd')]);router[_0x977a('0x8')](_0x977a('0xe'),auth[_0x977a('0x9')](),controller[_0x977a('0xf')]);router[_0x977a('0x8')](_0x977a('0x10'),auth[_0x977a('0x9')](),controller['getTeams']);router[_0x977a('0x8')](_0x977a('0x11'),auth[_0x977a('0x9')](),controller[_0x977a('0x12')]);router[_0x977a('0x13')]('/',auth[_0x977a('0x9')](),controller[_0x977a('0x14')]);router[_0x977a('0x13')](_0x977a('0x10'),auth[_0x977a('0x9')](),controller['addTeams']);router[_0x977a('0x13')]('/:id/users',auth[_0x977a('0x9')](),controller[_0x977a('0x15')]);router['put'](_0x977a('0xc'),auth[_0x977a('0x9')](),controller[_0x977a('0x16')]);router[_0x977a('0x17')]('/:id',auth[_0x977a('0x9')](),controller[_0x977a('0x18')]);router[_0x977a('0x17')]('/:id/teams',auth[_0x977a('0x9')](),controller[_0x977a('0x19')]);router['delete'](_0x977a('0x11'),auth['isAuthenticated'](),controller[_0x977a('0x1a')]);module[_0x977a('0x1b')]=router;
\ No newline at end of file
+var _0x4991=['addAgents','put','update','destroy','delete','/:id/teams','removeAgents','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','index','/describe','isAuthenticated','describe','/:id','/:id/members','getMembers','getTeams','getAgents','post','create','addTeams','/:id/users'];(function(_0x1741c7,_0x93a795){var _0x16db6b=function(_0xec4a6b){while(--_0xec4a6b){_0x1741c7['push'](_0x1741c7['shift']());}};_0x16db6b(++_0x93a795);}(_0x4991,0xf7));var _0x1499=function(_0x57998c,_0x998737){_0x57998c=_0x57998c-0x0;var _0x4724bf=_0x4991[_0x57998c];return _0x4724bf;};'use strict';var multer=require(_0x1499('0x0'));var util=require('util');var path=require(_0x1499('0x1'));var timeout=require('connect-timeout');var express=require(_0x1499('0x2'));var router=express[_0x1499('0x3')]();var fs_extra=require(_0x1499('0x4'));var auth=require(_0x1499('0x5'));var interaction=require(_0x1499('0x6'));var config=require(_0x1499('0x7'));var controller=require(_0x1499('0x8'));router[_0x1499('0x9')]('/',auth['isAuthenticated'](),controller[_0x1499('0xa')]);router[_0x1499('0x9')](_0x1499('0xb'),auth[_0x1499('0xc')](),controller[_0x1499('0xd')]);router[_0x1499('0x9')](_0x1499('0xe'),auth[_0x1499('0xc')](),controller['show']);router[_0x1499('0x9')](_0x1499('0xf'),auth['isAuthenticated'](),controller[_0x1499('0x10')]);router[_0x1499('0x9')]('/:id/teams',auth[_0x1499('0xc')](),controller[_0x1499('0x11')]);router['get']('/:id/users',auth['isAuthenticated'](),controller[_0x1499('0x12')]);router[_0x1499('0x13')]('/',auth[_0x1499('0xc')](),controller[_0x1499('0x14')]);router[_0x1499('0x13')]('/:id/teams',auth['isAuthenticated'](),controller[_0x1499('0x15')]);router['post'](_0x1499('0x16'),auth[_0x1499('0xc')](),controller[_0x1499('0x17')]);router[_0x1499('0x18')]('/:id',auth[_0x1499('0xc')](),controller[_0x1499('0x19')]);router['delete'](_0x1499('0xe'),auth[_0x1499('0xc')](),controller[_0x1499('0x1a')]);router[_0x1499('0x1b')](_0x1499('0x1c'),auth[_0x1499('0xc')](),controller['removeTeams']);router['delete']('/:id/users',auth[_0x1499('0xc')](),controller[_0x1499('0x1d')]);module['exports']=router;
\ No newline at end of file
index 3ed15e0..f954fad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75ee=['exports','STRING','DATE','sequelize'];(function(_0x2028a8,_0x4192be){var _0x4d7bd1=function(_0x527c96){while(--_0x527c96){_0x2028a8['push'](_0x2028a8['shift']());}};_0x4d7bd1(++_0x4192be);}(_0x75ee,0x183));var _0xe75e=function(_0x1d70db,_0x142b63){_0x1d70db=_0x1d70db-0x0;var _0x3060c6=_0x75ee[_0x1d70db];return _0x3060c6;};'use strict';var moment=require('moment');var Sequelize=require(_0xe75e('0x0'));module[_0xe75e('0x1')]={'uniqueid':{'type':Sequelize[_0xe75e('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xe75e('0x2')]},'joinAt':{'type':Sequelize[_0xe75e('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xe75e('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xe75e('0x2')]}};
\ No newline at end of file
+var _0xc2a2=['moment','sequelize','STRING','DATE'];(function(_0x5d94f0,_0x20f4fc){var _0x5c46bd=function(_0x43d36e){while(--_0x43d36e){_0x5d94f0['push'](_0x5d94f0['shift']());}};_0x5c46bd(++_0x20f4fc);}(_0xc2a2,0x98));var _0x2c2a=function(_0x27bacd,_0x15a68e){_0x27bacd=_0x27bacd-0x0;var _0x51a62f=_0xc2a2[_0x27bacd];return _0x51a62f;};'use strict';var moment=require(_0x2c2a('0x0'));var Sequelize=require(_0x2c2a('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x2c2a('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x2c2a('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x2c2a('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index cbf1ec8..f5f7c69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f62=['squel','crypto','jsforce','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','update','destroy','then','error','stack','name','send','index','map','FaxQueueReport','rawAttributes','fieldName','type','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','findAll','rows','catch','include','find','create','body','params','describe','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash'];(function(_0x4b4c3b,_0x121398){var _0x125d77=function(_0x3cdff5){while(--_0x3cdff5){_0x4b4c3b['push'](_0x4b4c3b['shift']());}};_0x125d77(++_0x121398);}(_0x9f62,0x154));var _0x29f6=function(_0x31eea6,_0x5959b6){_0x31eea6=_0x31eea6-0x0;var _0x13d4fc=_0x9f62[_0x31eea6];return _0x13d4fc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x29f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x29f6('0x1'));var rp=require(_0x29f6('0x2'));var moment=require(_0x29f6('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x29f6('0x4'));var path=require(_0x29f6('0x5'));var sox=require(_0x29f6('0x6'));var csv=require(_0x29f6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x29f6('0x8'));var _=require(_0x29f6('0x9'));var squel=require(_0x29f6('0xa'));var crypto=require(_0x29f6('0xb'));var jsforce=require(_0x29f6('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x29f6('0xd'));var authService=require(_0x29f6('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x29f6('0xf'));var logger=require(_0x29f6('0x10'))('api');var utils=require(_0x29f6('0x11'));var config=require(_0x29f6('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x559585,_0x57b2d2){_0x57b2d2=_0x57b2d2||0xcc;return function(_0x2ae0e4){if(_0x2ae0e4){return _0x559585[_0x29f6('0x13')](_0x57b2d2);}return _0x559585[_0x29f6('0x14')](_0x57b2d2)[_0x29f6('0x15')]();};}function respondWithResult(_0x17de6e,_0x156c96){_0x156c96=_0x156c96||0xc8;return function(_0x35d2e2){if(_0x35d2e2){return _0x17de6e[_0x29f6('0x14')](_0x156c96)[_0x29f6('0x16')](_0x35d2e2);}};}function respondWithFilteredResult(_0x19331f,_0x28d314){return function(_0x370484){if(_0x370484){var _0x1dde97=typeof _0x28d314[_0x29f6('0x17')]===_0x29f6('0x18')&&typeof _0x28d314[_0x29f6('0x19')]===_0x29f6('0x18');var _0x5bfda7=_0x370484['count'];var _0x2e66d3=_0x1dde97?0x0:_0x28d314[_0x29f6('0x17')];var _0xb31436=_0x1dde97?_0x370484['count']:_0x28d314[_0x29f6('0x17')]+_0x28d314[_0x29f6('0x19')];var _0x49252f;if(_0xb31436>=_0x5bfda7){_0xb31436=_0x5bfda7;_0x49252f=0xc8;}else{_0x49252f=0xce;}_0x19331f[_0x29f6('0x14')](_0x49252f);return _0x19331f[_0x29f6('0x1a')](_0x29f6('0x1b'),_0x2e66d3+'-'+_0xb31436+'/'+_0x5bfda7)[_0x29f6('0x16')](_0x370484);}return null;};}function patchUpdates(_0xb6e7a9){return function(_0x2bfb3d){try{jsonpatch['apply'](_0x2bfb3d,_0xb6e7a9,!![]);}catch(_0xfb8fd2){return BPromise['reject'](_0xfb8fd2);}return _0x2bfb3d['save']();};}function saveUpdates(_0x470019,_0x1fa159){return function(_0x39c6b3){if(_0x39c6b3){return _0x39c6b3[_0x29f6('0x1c')](_0x470019)['then'](function(_0x2c672e){return _0x2c672e;});}return null;};}function removeEntity(_0x49f67d,_0xd4179c){return function(_0xcce041){if(_0xcce041){return _0xcce041[_0x29f6('0x1d')]()[_0x29f6('0x1e')](function(){_0x49f67d['status'](0xcc)[_0x29f6('0x15')]();});}};}function handleEntityNotFound(_0x4d494f,_0x47c385){return function(_0x1401fb){if(!_0x1401fb){_0x4d494f[_0x29f6('0x13')](0x194);}return _0x1401fb;};}function handleError(_0x2519ac,_0x342038){_0x342038=_0x342038||0x1f4;return function(_0x84ccb7){logger[_0x29f6('0x1f')](_0x84ccb7[_0x29f6('0x20')]);if(_0x84ccb7['name']){delete _0x84ccb7[_0x29f6('0x21')];}_0x2519ac[_0x29f6('0x14')](_0x342038)[_0x29f6('0x22')](_0x84ccb7);};}exports[_0x29f6('0x23')]=function(_0xda0a63,_0x16a6ad){var _0x3790f5={},_0x17b2f2={},_0x3d88db={'count':0x0,'rows':[]};var _0x13a3a2=_[_0x29f6('0x24')](db[_0x29f6('0x25')][_0x29f6('0x26')],function(_0x304c28){return{'name':_0x304c28[_0x29f6('0x27')],'type':_0x304c28[_0x29f6('0x28')][_0x29f6('0x29')]};});_0x17b2f2['model']=_['map'](_0x13a3a2,_0x29f6('0x21'));_0x17b2f2['query']=_[_0x29f6('0x2a')](_0xda0a63[_0x29f6('0x2b')]);_0x17b2f2[_0x29f6('0x2c')]=_[_0x29f6('0x2d')](_0x17b2f2['model'],_0x17b2f2['query']);_0x3790f5[_0x29f6('0x2e')]=_[_0x29f6('0x2d')](_0x17b2f2[_0x29f6('0x2f')],qs[_0x29f6('0x30')](_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x30')]));_0x3790f5[_0x29f6('0x2e')]=_0x3790f5[_0x29f6('0x2e')][_0x29f6('0x31')]?_0x3790f5[_0x29f6('0x2e')]:_0x17b2f2[_0x29f6('0x2f')];if(!_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x32')](_0x29f6('0x33'))){_0x3790f5['limit']=qs['limit'](_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x19')]);_0x3790f5[_0x29f6('0x17')]=qs['offset'](_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x17')]);}_0x3790f5[_0x29f6('0x34')]=qs[_0x29f6('0x35')](_0xda0a63[_0x29f6('0x2b')]['sort']);_0x3790f5[_0x29f6('0x36')]=qs[_0x29f6('0x2c')](_[_0x29f6('0x37')](_0xda0a63[_0x29f6('0x2b')],_0x17b2f2['filters']),_0x13a3a2);if(_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x38')]){_0x3790f5[_0x29f6('0x36')]=_[_0x29f6('0x39')](_0x3790f5['where'],{'$or':_['map'](_0x13a3a2,function(_0x35f9e1){if(_0x35f9e1['type']!==_0x29f6('0x3a')){var _0x551411={};_0x551411[_0x35f9e1[_0x29f6('0x21')]]={'$like':'%'+_0xda0a63['query'][_0x29f6('0x38')]+'%'};return _0x551411;}})});}_0x3790f5=_[_0x29f6('0x39')]({},_0x3790f5,_0xda0a63['options']);var _0x1431fc={'where':_0x3790f5['where']};return db[_0x29f6('0x25')][_0x29f6('0x3b')](_0x1431fc)['then'](function(_0xf9c531){_0x3d88db[_0x29f6('0x3b')]=_0xf9c531;if(_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x3c')]){_0x3790f5['include']=[{'all':!![]}];}return db[_0x29f6('0x25')][_0x29f6('0x3d')](_0x3790f5);})[_0x29f6('0x1e')](function(_0x2322eb){_0x3d88db[_0x29f6('0x3e')]=_0x2322eb;return _0x3d88db;})['then'](respondWithFilteredResult(_0x16a6ad,_0x3790f5))[_0x29f6('0x3f')](handleError(_0x16a6ad,null));};exports['show']=function(_0x2ea303,_0x552257){var _0xbfe671={'raw':!![],'where':{'id':_0x2ea303['params']['id']}},_0x3a8a12={};_0x3a8a12[_0x29f6('0x2f')]=_[_0x29f6('0x2a')](db[_0x29f6('0x25')][_0x29f6('0x26')]);_0x3a8a12['query']=_[_0x29f6('0x2a')](_0x2ea303[_0x29f6('0x2b')]);_0x3a8a12[_0x29f6('0x2c')]=_['intersection'](_0x3a8a12[_0x29f6('0x2f')],_0x3a8a12['query']);_0xbfe671[_0x29f6('0x2e')]=_['intersection'](_0x3a8a12['model'],qs['fields'](_0x2ea303[_0x29f6('0x2b')][_0x29f6('0x30')]));_0xbfe671[_0x29f6('0x2e')]=_0xbfe671[_0x29f6('0x2e')][_0x29f6('0x31')]?_0xbfe671[_0x29f6('0x2e')]:_0x3a8a12[_0x29f6('0x2f')];if(_0x2ea303[_0x29f6('0x2b')][_0x29f6('0x3c')]){_0xbfe671[_0x29f6('0x40')]=[{'all':!![]}];}_0xbfe671=_['merge']({},_0xbfe671,_0x2ea303['options']);return db[_0x29f6('0x25')][_0x29f6('0x41')](_0xbfe671)[_0x29f6('0x1e')](handleEntityNotFound(_0x552257,null))[_0x29f6('0x1e')](respondWithResult(_0x552257,null))['catch'](handleError(_0x552257,null));};exports[_0x29f6('0x42')]=function(_0x1f5609,_0x532df5){return db[_0x29f6('0x25')][_0x29f6('0x42')](_0x1f5609[_0x29f6('0x43')],{})[_0x29f6('0x1e')](respondWithResult(_0x532df5,0xc9))[_0x29f6('0x3f')](handleError(_0x532df5,null));};exports[_0x29f6('0x1c')]=function(_0x320b5e,_0x1f03b6){if(_0x320b5e[_0x29f6('0x43')]['id']){delete _0x320b5e[_0x29f6('0x43')]['id'];}return db[_0x29f6('0x25')][_0x29f6('0x41')]({'where':{'id':_0x320b5e['params']['id']}})[_0x29f6('0x1e')](handleEntityNotFound(_0x1f03b6,null))[_0x29f6('0x1e')](saveUpdates(_0x320b5e[_0x29f6('0x43')],null))[_0x29f6('0x1e')](respondWithResult(_0x1f03b6,null))[_0x29f6('0x3f')](handleError(_0x1f03b6,null));};exports['destroy']=function(_0x2e29e3,_0x52be22){return db['FaxQueueReport'][_0x29f6('0x41')]({'where':{'id':_0x2e29e3[_0x29f6('0x44')]['id']}})[_0x29f6('0x1e')](handleEntityNotFound(_0x52be22,null))[_0x29f6('0x1e')](removeEntity(_0x52be22,null))[_0x29f6('0x3f')](handleError(_0x52be22,null));};exports['describe']=function(_0x167976,_0x458ada){return db['FaxQueueReport'][_0x29f6('0x45')]()['then'](respondWithResult(_0x458ada,null))[_0x29f6('0x3f')](handleError(_0x458ada,null));};
\ No newline at end of file
+var _0x4c6d=['includeAll','include','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','index','map','FaxQueueReport','rawAttributes','fieldName','type','key','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','findAll','show','params'];(function(_0x113f32,_0x263c19){var _0x2a7bc6=function(_0x3e1bb6){while(--_0x3e1bb6){_0x113f32['push'](_0x113f32['shift']());}};_0x2a7bc6(++_0x263c19);}(_0x4c6d,0x1d0));var _0xd4c6=function(_0x92521c,_0x1a7e36){_0x92521c=_0x92521c-0x0;var _0x98678d=_0x4c6d[_0x92521c];return _0x98678d;};'use strict';var emlformat=require(_0xd4c6('0x0'));var rimraf=require(_0xd4c6('0x1'));var zipdir=require(_0xd4c6('0x2'));var jsonpatch=require(_0xd4c6('0x3'));var rp=require(_0xd4c6('0x4'));var moment=require('moment');var BPromise=require(_0xd4c6('0x5'));var Mustache=require(_0xd4c6('0x6'));var util=require(_0xd4c6('0x7'));var path=require('path');var sox=require(_0xd4c6('0x8'));var csv=require(_0xd4c6('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd4c6('0xa'));var _=require(_0xd4c6('0xb'));var squel=require(_0xd4c6('0xc'));var crypto=require('crypto');var jsforce=require(_0xd4c6('0xd'));var deskjs=require(_0xd4c6('0xe'));var toCsv=require(_0xd4c6('0x9'));var querystring=require('querystring');var Papa=require(_0xd4c6('0xf'));var Redis=require(_0xd4c6('0x10'));var authService=require(_0xd4c6('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xd4c6('0x12'));var hardwareService=require(_0xd4c6('0x13'));var logger=require(_0xd4c6('0x14'))(_0xd4c6('0x15'));var utils=require(_0xd4c6('0x16'));var config=require(_0xd4c6('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x35b902,_0x489171){_0x489171=_0x489171||0xcc;return function(_0x162681){if(_0x162681){return _0x35b902[_0xd4c6('0x18')](_0x489171);}return _0x35b902[_0xd4c6('0x19')](_0x489171)[_0xd4c6('0x1a')]();};}function respondWithResult(_0x3a2143,_0x384a98){_0x384a98=_0x384a98||0xc8;return function(_0x94f42e){if(_0x94f42e){return _0x3a2143['status'](_0x384a98)['json'](_0x94f42e);}};}function respondWithFilteredResult(_0x11e6c2,_0x3deb85){return function(_0x25e1fb){if(_0x25e1fb){var _0x25204d=typeof _0x3deb85[_0xd4c6('0x1b')]===_0xd4c6('0x1c')&&typeof _0x3deb85[_0xd4c6('0x1d')]==='undefined';var _0x761a3e=_0x25e1fb[_0xd4c6('0x1e')];var _0x23a16f=_0x25204d?0x0:_0x3deb85[_0xd4c6('0x1b')];var _0x31f328=_0x25204d?_0x25e1fb['count']:_0x3deb85[_0xd4c6('0x1b')]+_0x3deb85[_0xd4c6('0x1d')];var _0x359577;if(_0x31f328>=_0x761a3e){_0x31f328=_0x761a3e;_0x359577=0xc8;}else{_0x359577=0xce;}_0x11e6c2['status'](_0x359577);return _0x11e6c2[_0xd4c6('0x1f')](_0xd4c6('0x20'),_0x23a16f+'-'+_0x31f328+'/'+_0x761a3e)[_0xd4c6('0x21')](_0x25e1fb);}return null;};}function patchUpdates(_0x3b1658){return function(_0x48dbf8){try{jsonpatch[_0xd4c6('0x22')](_0x48dbf8,_0x3b1658,!![]);}catch(_0x4a10d8){return BPromise[_0xd4c6('0x23')](_0x4a10d8);}return _0x48dbf8[_0xd4c6('0x24')]();};}function saveUpdates(_0x2750c9,_0x222813){return function(_0xf536e0){if(_0xf536e0){return _0xf536e0[_0xd4c6('0x25')](_0x2750c9)[_0xd4c6('0x26')](function(_0x3f99e8){return _0x3f99e8;});}return null;};}function removeEntity(_0x155cb3,_0x466330){return function(_0x1ebb17){if(_0x1ebb17){return _0x1ebb17[_0xd4c6('0x27')]()['then'](function(){_0x155cb3['status'](0xcc)[_0xd4c6('0x1a')]();});}};}function handleEntityNotFound(_0x2febbf,_0x4a5390){return function(_0x1dee19){if(!_0x1dee19){_0x2febbf[_0xd4c6('0x18')](0x194);}return _0x1dee19;};}function handleError(_0x100411,_0x565b25){_0x565b25=_0x565b25||0x1f4;return function(_0x35b50c){logger[_0xd4c6('0x28')](_0x35b50c['stack']);if(_0x35b50c[_0xd4c6('0x29')]){delete _0x35b50c[_0xd4c6('0x29')];}_0x100411[_0xd4c6('0x19')](_0x565b25)['send'](_0x35b50c);};}exports[_0xd4c6('0x2a')]=function(_0x3b656d,_0x255630){var _0x4270d5={},_0x2e8c34={},_0x160330={'count':0x0,'rows':[]};var _0x41a8d2=_[_0xd4c6('0x2b')](db[_0xd4c6('0x2c')][_0xd4c6('0x2d')],function(_0x441119){return{'name':_0x441119[_0xd4c6('0x2e')],'type':_0x441119[_0xd4c6('0x2f')][_0xd4c6('0x30')]};});_0x2e8c34['model']=_[_0xd4c6('0x2b')](_0x41a8d2,_0xd4c6('0x29'));_0x2e8c34[_0xd4c6('0x31')]=_[_0xd4c6('0x32')](_0x3b656d['query']);_0x2e8c34['filters']=_['intersection'](_0x2e8c34[_0xd4c6('0x33')],_0x2e8c34[_0xd4c6('0x31')]);_0x4270d5[_0xd4c6('0x34')]=_[_0xd4c6('0x35')](_0x2e8c34[_0xd4c6('0x33')],qs[_0xd4c6('0x36')](_0x3b656d[_0xd4c6('0x31')]['fields']));_0x4270d5[_0xd4c6('0x34')]=_0x4270d5[_0xd4c6('0x34')][_0xd4c6('0x37')]?_0x4270d5['attributes']:_0x2e8c34[_0xd4c6('0x33')];if(!_0x3b656d[_0xd4c6('0x31')][_0xd4c6('0x38')]('nolimit')){_0x4270d5[_0xd4c6('0x1d')]=qs[_0xd4c6('0x1d')](_0x3b656d[_0xd4c6('0x31')][_0xd4c6('0x1d')]);_0x4270d5['offset']=qs[_0xd4c6('0x1b')](_0x3b656d[_0xd4c6('0x31')][_0xd4c6('0x1b')]);}_0x4270d5[_0xd4c6('0x39')]=qs[_0xd4c6('0x3a')](_0x3b656d['query'][_0xd4c6('0x3a')]);_0x4270d5[_0xd4c6('0x3b')]=qs[_0xd4c6('0x3c')](_[_0xd4c6('0x3d')](_0x3b656d[_0xd4c6('0x31')],_0x2e8c34[_0xd4c6('0x3c')]),_0x41a8d2);if(_0x3b656d['query'][_0xd4c6('0x3e')]){_0x4270d5[_0xd4c6('0x3b')]=_[_0xd4c6('0x3f')](_0x4270d5['where'],{'$or':_[_0xd4c6('0x2b')](_0x41a8d2,function(_0x15a1bf){if(_0x15a1bf[_0xd4c6('0x2f')]!==_0xd4c6('0x40')){var _0x24a64e={};_0x24a64e[_0x15a1bf[_0xd4c6('0x29')]]={'$like':'%'+_0x3b656d[_0xd4c6('0x31')][_0xd4c6('0x3e')]+'%'};return _0x24a64e;}})});}_0x4270d5=_[_0xd4c6('0x3f')]({},_0x4270d5,_0x3b656d['options']);var _0x211e08={'where':_0x4270d5['where']};return db['FaxQueueReport'][_0xd4c6('0x1e')](_0x211e08)[_0xd4c6('0x26')](function(_0x238fc9){_0x160330[_0xd4c6('0x1e')]=_0x238fc9;if(_0x3b656d[_0xd4c6('0x31')]['includeAll']){_0x4270d5['include']=[{'all':!![]}];}return db[_0xd4c6('0x2c')][_0xd4c6('0x41')](_0x4270d5);})[_0xd4c6('0x26')](function(_0x14ee8f){_0x160330['rows']=_0x14ee8f;return _0x160330;})[_0xd4c6('0x26')](respondWithFilteredResult(_0x255630,_0x4270d5))['catch'](handleError(_0x255630,null));};exports[_0xd4c6('0x42')]=function(_0x423456,_0x1114db){var _0x51585c={'raw':!![],'where':{'id':_0x423456[_0xd4c6('0x43')]['id']}},_0x470157={};_0x470157[_0xd4c6('0x33')]=_[_0xd4c6('0x32')](db[_0xd4c6('0x2c')][_0xd4c6('0x2d')]);_0x470157[_0xd4c6('0x31')]=_[_0xd4c6('0x32')](_0x423456[_0xd4c6('0x31')]);_0x470157['filters']=_[_0xd4c6('0x35')](_0x470157[_0xd4c6('0x33')],_0x470157[_0xd4c6('0x31')]);_0x51585c['attributes']=_[_0xd4c6('0x35')](_0x470157[_0xd4c6('0x33')],qs[_0xd4c6('0x36')](_0x423456['query']['fields']));_0x51585c[_0xd4c6('0x34')]=_0x51585c[_0xd4c6('0x34')][_0xd4c6('0x37')]?_0x51585c['attributes']:_0x470157[_0xd4c6('0x33')];if(_0x423456[_0xd4c6('0x31')][_0xd4c6('0x44')]){_0x51585c[_0xd4c6('0x45')]=[{'all':!![]}];}_0x51585c=_[_0xd4c6('0x3f')]({},_0x51585c,_0x423456[_0xd4c6('0x46')]);return db['FaxQueueReport'][_0xd4c6('0x47')](_0x51585c)[_0xd4c6('0x26')](handleEntityNotFound(_0x1114db,null))[_0xd4c6('0x26')](respondWithResult(_0x1114db,null))[_0xd4c6('0x48')](handleError(_0x1114db,null));};exports[_0xd4c6('0x49')]=function(_0x2dd2af,_0x34fb42){return db[_0xd4c6('0x2c')]['create'](_0x2dd2af['body'],{})[_0xd4c6('0x26')](respondWithResult(_0x34fb42,0xc9))[_0xd4c6('0x48')](handleError(_0x34fb42,null));};exports[_0xd4c6('0x25')]=function(_0x5bb875,_0x37aa81){if(_0x5bb875[_0xd4c6('0x4a')]['id']){delete _0x5bb875[_0xd4c6('0x4a')]['id'];}return db['FaxQueueReport'][_0xd4c6('0x47')]({'where':{'id':_0x5bb875[_0xd4c6('0x43')]['id']}})[_0xd4c6('0x26')](handleEntityNotFound(_0x37aa81,null))[_0xd4c6('0x26')](saveUpdates(_0x5bb875['body'],null))[_0xd4c6('0x26')](respondWithResult(_0x37aa81,null))[_0xd4c6('0x48')](handleError(_0x37aa81,null));};exports[_0xd4c6('0x27')]=function(_0x14279d,_0x291837){return db[_0xd4c6('0x2c')][_0xd4c6('0x47')]({'where':{'id':_0x14279d['params']['id']}})[_0xd4c6('0x26')](handleEntityNotFound(_0x291837,null))[_0xd4c6('0x26')](removeEntity(_0x291837,null))[_0xd4c6('0x48')](handleError(_0x291837,null));};exports['describe']=function(_0x271365,_0x1ca24a){return db[_0xd4c6('0x2c')][_0xd4c6('0x4b')]()[_0xd4c6('0x26')](respondWithResult(_0x1ca24a,null))[_0xd4c6('0x48')](handleError(_0x1ca24a,null));};
\ No newline at end of file
index f9d7bbe..56489eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['path','../../config/environment','./faxQueueReport.attributes','define','FaxQueueReport','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x77a100,_0x227a8b){var _0x47782b=function(_0xb4832a){while(--_0xb4832a){_0x77a100['push'](_0x77a100['shift']());}};_0x47782b(++_0x227a8b);}(_0x53ec,0x192));var _0xc53e=function(_0x18aaaf,_0x385db6){_0x18aaaf=_0x18aaaf-0x0;var _0x52d892=_0x53ec[_0x18aaaf];return _0x52d892;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var logger=require(_0xc53e('0x2'))(_0xc53e('0x3'));var moment=require(_0xc53e('0x4'));var BPromise=require(_0xc53e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc53e('0x6'));var rimraf=require('rimraf');var config=require(_0xc53e('0x7'));var attributes=require(_0xc53e('0x8'));module['exports']=function(_0x2f1414,_0x4f989b){return _0x2f1414[_0xc53e('0x9')](_0xc53e('0xa'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xc53e('0xb'),'fields':[_0xc53e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x53ec=['path','../../config/environment','./faxQueueReport.attributes','define','FaxQueueReport','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xfc8fb4,_0x4d827a){var _0x42b53e=function(_0x4cef49){while(--_0x4cef49){_0xfc8fb4['push'](_0xfc8fb4['shift']());}};_0x42b53e(++_0x4d827a);}(_0x53ec,0x192));var _0xc53e=function(_0x22d8a6,_0x4383d6){_0x22d8a6=_0x22d8a6-0x0;var _0x1364e0=_0x53ec[_0x22d8a6];return _0x1364e0;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var logger=require(_0xc53e('0x2'))(_0xc53e('0x3'));var moment=require(_0xc53e('0x4'));var BPromise=require(_0xc53e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc53e('0x6'));var rimraf=require('rimraf');var config=require(_0xc53e('0x7'));var attributes=require(_0xc53e('0x8'));module['exports']=function(_0x2f1414,_0x4f989b){return _0x2f1414[_0xc53e('0x9')](_0xc53e('0xa'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xc53e('0xb'),'fields':[_0xc53e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 78b4948..bee2c7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1563=['UpdateFaxQueueReport','update','body','options','where','attributes','limit','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FaxQueueReport,\x20%s,\x20%s','result','CreateFaxQueueReport','FaxQueueReport','create','raw','catch'];(function(_0x345809,_0xf7af6e){var _0x12f6ea=function(_0x292bbe){while(--_0x292bbe){_0x345809['push'](_0x345809['shift']());}};_0x12f6ea(++_0xf7af6e);}(_0x1563,0x172));var _0x3156=function(_0x53ba51,_0x2f2321){_0x53ba51=_0x53ba51-0x0;var _0x2e776e=_0x1563[_0x53ba51];return _0x2e776e;};'use strict';var _=require(_0x3156('0x0'));var util=require(_0x3156('0x1'));var moment=require(_0x3156('0x2'));var BPromise=require('bluebird');var rs=require(_0x3156('0x3'));var fs=require('fs');var Redis=require(_0x3156('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3156('0x5'));var logger=require(_0x3156('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3156('0x7'));var client=jayson['client'][_0x3156('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x44249f,_0x2182a7,_0x4a3cb3){return new BPromise(function(_0x417fc2,_0x547c60){return client[_0x3156('0x9')](_0x44249f,_0x4a3cb3)[_0x3156('0xa')](function(_0x427337){logger[_0x3156('0xb')]('FaxQueueReport,\x20%s,\x20%s',_0x2182a7,_0x3156('0xc'));logger[_0x3156('0xd')](_0x3156('0xe'),_0x2182a7,_0x3156('0xc'),JSON[_0x3156('0xf')](_0x427337));if(_0x427337[_0x3156('0x10')]){if(_0x427337[_0x3156('0x10')][_0x3156('0x11')]===0x1f4){logger[_0x3156('0x10')]('FaxQueueReport,\x20%s,\x20%s',_0x2182a7,_0x427337['error'][_0x3156('0x12')]);return _0x547c60(_0x427337['error'][_0x3156('0x12')]);}logger[_0x3156('0x10')]('FaxQueueReport,\x20%s,\x20%s',_0x2182a7,_0x427337[_0x3156('0x10')][_0x3156('0x12')]);return _0x417fc2(_0x427337[_0x3156('0x10')][_0x3156('0x12')]);}else{logger[_0x3156('0xb')](_0x3156('0x13'),_0x2182a7,_0x3156('0xc'));_0x417fc2(_0x427337[_0x3156('0x14')]['message']);}})['catch'](function(_0xb2fb5c){logger['error'](_0x3156('0x13'),_0x2182a7,_0xb2fb5c);_0x547c60(_0xb2fb5c);});});}exports[_0x3156('0x15')]=function(_0x110ecd){var _0x4ba89d=this;return new Promise(function(_0x206d13,_0x5666d8){return db[_0x3156('0x16')][_0x3156('0x17')](_0x110ecd['body'],{'raw':_0x110ecd['options']?_0x110ecd['options'][_0x3156('0x18')]===undefined?!![]:![]:!![]})[_0x3156('0xa')](function(_0x25e34a){logger[_0x3156('0xb')]('CreateFaxQueueReport',_0x110ecd);logger['debug'](_0x3156('0x15'),_0x110ecd,JSON[_0x3156('0xf')](_0x25e34a));_0x206d13(_0x25e34a);})[_0x3156('0x19')](function(_0x3a08e8){logger['error'](_0x3156('0x15'),_0x3a08e8['message'],_0x110ecd);_0x5666d8(_0x4ba89d[_0x3156('0x10')](0x1f4,_0x3a08e8['message']));});});};exports[_0x3156('0x1a')]=function(_0x53883c){var _0x4ac534=this;return new Promise(function(_0x6e75e5,_0x512310){return db['FaxQueueReport'][_0x3156('0x1b')](_0x53883c[_0x3156('0x1c')],{'raw':_0x53883c[_0x3156('0x1d')]?_0x53883c['options'][_0x3156('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x53883c[_0x3156('0x1d')]?_0x53883c[_0x3156('0x1d')][_0x3156('0x1e')]||null:null,'attributes':_0x53883c['options']?_0x53883c[_0x3156('0x1d')][_0x3156('0x1f')]||null:null,'limit':_0x53883c[_0x3156('0x1d')]?_0x53883c[_0x3156('0x1d')][_0x3156('0x20')]||null:null})[_0x3156('0xa')](function(_0x1569fc){logger['info'](_0x3156('0x1a'),_0x53883c);logger['debug'](_0x3156('0x1a'),_0x53883c,JSON['stringify'](_0x1569fc));_0x6e75e5(_0x1569fc);})[_0x3156('0x19')](function(_0x2c9103){logger[_0x3156('0x10')]('UpdateFaxQueueReport',_0x2c9103['message'],_0x53883c);_0x512310(_0x4ac534[_0x3156('0x10')](0x1f4,_0x2c9103['message']));});});};
\ No newline at end of file
+var _0xf89c=['debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','stringify','catch','UpdateFaxQueueReport','where','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent'];(function(_0x47fd36,_0x41535d){var _0x21a0fc=function(_0x44c07c){while(--_0x44c07c){_0x47fd36['push'](_0x47fd36['shift']());}};_0x21a0fc(++_0x41535d);}(_0xf89c,0xea));var _0xcf89=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf89c[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xcf89('0x0'));var util=require(_0xcf89('0x1'));var moment=require(_0xcf89('0x2'));var BPromise=require(_0xcf89('0x3'));var rs=require(_0xcf89('0x4'));var fs=require('fs');var Redis=require(_0xcf89('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xcf89('0x6'))('rpc');var config=require(_0xcf89('0x7'));var jayson=require(_0xcf89('0x8'));var client=jayson[_0xcf89('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x31c818,_0x1b6b8d,_0xc7690){return new BPromise(function(_0x40e912,_0x509ed5){return client['request'](_0x31c818,_0xc7690)[_0xcf89('0xa')](function(_0x587479){logger[_0xcf89('0xb')](_0xcf89('0xc'),_0x1b6b8d,_0xcf89('0xd'));logger[_0xcf89('0xe')](_0xcf89('0xf'),_0x1b6b8d,_0xcf89('0xd'),JSON['stringify'](_0x587479));if(_0x587479[_0xcf89('0x10')]){if(_0x587479['error'][_0xcf89('0x11')]===0x1f4){logger[_0xcf89('0x10')]('FaxQueueReport,\x20%s,\x20%s',_0x1b6b8d,_0x587479[_0xcf89('0x10')][_0xcf89('0x12')]);return _0x509ed5(_0x587479['error'][_0xcf89('0x12')]);}logger['error']('FaxQueueReport,\x20%s,\x20%s',_0x1b6b8d,_0x587479[_0xcf89('0x10')][_0xcf89('0x12')]);return _0x40e912(_0x587479['error']['message']);}else{logger[_0xcf89('0xb')](_0xcf89('0xc'),_0x1b6b8d,_0xcf89('0xd'));_0x40e912(_0x587479[_0xcf89('0x13')][_0xcf89('0x12')]);}})['catch'](function(_0x32c08c){logger[_0xcf89('0x10')](_0xcf89('0xc'),_0x1b6b8d,_0x32c08c);_0x509ed5(_0x32c08c);});});}exports[_0xcf89('0x14')]=function(_0x500547){var _0x445415=this;return new Promise(function(_0x135ac5,_0x2edb14){return db[_0xcf89('0x15')][_0xcf89('0x16')](_0x500547[_0xcf89('0x17')],{'raw':_0x500547[_0xcf89('0x18')]?_0x500547['options'][_0xcf89('0x19')]===undefined?!![]:![]:!![]})[_0xcf89('0xa')](function(_0x517370){logger['info'](_0xcf89('0x14'),_0x500547);logger['debug'](_0xcf89('0x14'),_0x500547,JSON[_0xcf89('0x1a')](_0x517370));_0x135ac5(_0x517370);})[_0xcf89('0x1b')](function(_0x938e06){logger['error'](_0xcf89('0x14'),_0x938e06[_0xcf89('0x12')],_0x500547);_0x2edb14(_0x445415[_0xcf89('0x10')](0x1f4,_0x938e06[_0xcf89('0x12')]));});});};exports[_0xcf89('0x1c')]=function(_0x2aad61){var _0x42ed07=this;return new Promise(function(_0x3d45bd,_0x5b0695){return db[_0xcf89('0x15')]['update'](_0x2aad61[_0xcf89('0x17')],{'raw':_0x2aad61[_0xcf89('0x18')]?_0x2aad61[_0xcf89('0x18')][_0xcf89('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2aad61[_0xcf89('0x18')]?_0x2aad61['options'][_0xcf89('0x1d')]||null:null,'attributes':_0x2aad61[_0xcf89('0x18')]?_0x2aad61['options']['attributes']||null:null,'limit':_0x2aad61['options']?_0x2aad61[_0xcf89('0x18')][_0xcf89('0x1e')]||null:null})['then'](function(_0x390ca7){logger['info'](_0xcf89('0x1c'),_0x2aad61);logger[_0xcf89('0xe')](_0xcf89('0x1c'),_0x2aad61,JSON[_0xcf89('0x1a')](_0x390ca7));_0x3d45bd(_0x390ca7);})['catch'](function(_0x562e2e){logger[_0xcf89('0x10')](_0xcf89('0x1c'),_0x562e2e[_0xcf89('0x12')],_0x2aad61);_0x5b0695(_0x42ed07['error'](0x1f4,_0x562e2e[_0xcf89('0x12')]));});});};
\ No newline at end of file
index d6aa773..636d79e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbac8=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','put','exports','multer'];(function(_0x47ce7f,_0x1bfdc4){var _0x11ae54=function(_0x24ccf1){while(--_0x24ccf1){_0x47ce7f['push'](_0x47ce7f['shift']());}};_0x11ae54(++_0x1bfdc4);}(_0xbac8,0x18e));var _0x8bac=function(_0x4354a2,_0x3146bf){_0x4354a2=_0x4354a2-0x0;var _0x4412e8=_0xbac8[_0x4354a2];return _0x4412e8;};'use strict';var multer=require(_0x8bac('0x0'));var util=require(_0x8bac('0x1'));var path=require(_0x8bac('0x2'));var timeout=require(_0x8bac('0x3'));var express=require(_0x8bac('0x4'));var router=express[_0x8bac('0x5')]();var fs_extra=require(_0x8bac('0x6'));var auth=require(_0x8bac('0x7'));var interaction=require(_0x8bac('0x8'));var config=require(_0x8bac('0x9'));var controller=require(_0x8bac('0xa'));router['get']('/',auth[_0x8bac('0xb')](),controller[_0x8bac('0xc')]);router[_0x8bac('0xd')](_0x8bac('0xe'),auth['isAuthenticated'](),controller[_0x8bac('0xf')]);router['get'](_0x8bac('0x10'),auth[_0x8bac('0xb')](),controller[_0x8bac('0x11')]);router['post']('/',auth[_0x8bac('0xb')](),controller[_0x8bac('0x12')]);router[_0x8bac('0x13')](_0x8bac('0x10'),auth[_0x8bac('0xb')](),controller['update']);router['delete'](_0x8bac('0x10'),auth[_0x8bac('0xb')](),controller['destroy']);module[_0x8bac('0x14')]=router;
\ No newline at end of file
+var _0xa611=['multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','put','update','destroy','exports'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0xa611,0x156));var _0x1a61=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa611[_0x13ea00];return _0x1f7347;};'use strict';var multer=require(_0x1a61('0x0'));var util=require('util');var path=require(_0x1a61('0x1'));var timeout=require(_0x1a61('0x2'));var express=require(_0x1a61('0x3'));var router=express[_0x1a61('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1a61('0x5'));var interaction=require(_0x1a61('0x6'));var config=require(_0x1a61('0x7'));var controller=require('./faxQueueReport.controller');router['get']('/',auth[_0x1a61('0x8')](),controller[_0x1a61('0x9')]);router[_0x1a61('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x1a61('0xb')]);router[_0x1a61('0xa')](_0x1a61('0xc'),auth['isAuthenticated'](),controller[_0x1a61('0xd')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x1a61('0xe')](_0x1a61('0xc'),auth[_0x1a61('0x8')](),controller[_0x1a61('0xf')]);router['delete'](_0x1a61('0xc'),auth[_0x1a61('0x8')](),controller[_0x1a61('0x10')]);module[_0x1a61('0x11')]=router;
\ No newline at end of file
index 39ae0cd..01be309 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x42459d,_0x395958){var _0x469b6a=function(_0x3c9e5a){while(--_0x3c9e5a){_0x42459d['push'](_0x42459d['shift']());}};_0x469b6a(++_0x395958);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5519a9,_0x1c5147){_0x5519a9=_0x5519a9-0x0;var _0x32f2cc=_0xcb91[_0x5519a9];return _0x32f2cc;};'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(_0x2b0bc2,_0x4331f5){var _0x56e5b9=function(_0x4c1b06){while(--_0x4c1b06){_0x2b0bc2['push'](_0x2b0bc2['shift']());}};_0x56e5b9(++_0x4331f5);}(_0x9bde,0xe1));var _0xe9bd=function(_0x42b73b,_0x54b034){_0x42b73b=_0x42b73b-0x0;var _0x2e844b=_0x9bde[_0x42b73b];return _0x2e844b;};'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 fd04469..1a7f86c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fad=['length','nolimit','order','sort','filters','pick','merge','where','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','includeAll','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields'];(function(_0x872840,_0x55a159){var _0x30d602=function(_0x3bc652){while(--_0x3bc652){_0x872840['push'](_0x872840['shift']());}};_0x30d602(++_0x55a159);}(_0x8fad,0x106));var _0xd8fa=function(_0x34f566,_0x10f38e){_0x34f566=_0x34f566-0x0;var _0x3b0181=_0x8fad[_0x34f566];return _0x3b0181;};'use strict';var emlformat=require(_0xd8fa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd8fa('0x1'));var jsonpatch=require(_0xd8fa('0x2'));var rp=require(_0xd8fa('0x3'));var moment=require(_0xd8fa('0x4'));var BPromise=require(_0xd8fa('0x5'));var Mustache=require(_0xd8fa('0x6'));var util=require(_0xd8fa('0x7'));var path=require(_0xd8fa('0x8'));var sox=require('sox');var csv=require(_0xd8fa('0x9'));var ejs=require(_0xd8fa('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xd8fa('0xb'));var crypto=require(_0xd8fa('0xc'));var jsforce=require(_0xd8fa('0xd'));var deskjs=require(_0xd8fa('0xe'));var toCsv=require(_0xd8fa('0x9'));var querystring=require(_0xd8fa('0xf'));var Papa=require(_0xd8fa('0x10'));var Redis=require(_0xd8fa('0x11'));var authService=require(_0xd8fa('0x12'));var qs=require(_0xd8fa('0x13'));var as=require(_0xd8fa('0x14'));var hardwareService=require(_0xd8fa('0x15'));var logger=require(_0xd8fa('0x16'))('api');var utils=require(_0xd8fa('0x17'));var config=require(_0xd8fa('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xd8fa('0x19'))['db'];function respondWithStatusCode(_0x557f3f,_0x36efe0){_0x36efe0=_0x36efe0||0xcc;return function(_0x5686d4){if(_0x5686d4){return _0x557f3f[_0xd8fa('0x1a')](_0x36efe0);}return _0x557f3f[_0xd8fa('0x1b')](_0x36efe0)[_0xd8fa('0x1c')]();};}function respondWithResult(_0x174aa3,_0x3be8fb){_0x3be8fb=_0x3be8fb||0xc8;return function(_0x42f16f){if(_0x42f16f){return _0x174aa3[_0xd8fa('0x1b')](_0x3be8fb)[_0xd8fa('0x1d')](_0x42f16f);}};}function respondWithFilteredResult(_0x17764b,_0x49893a){return function(_0x5382e5){if(_0x5382e5){var _0x43d585=typeof _0x49893a[_0xd8fa('0x1e')]===_0xd8fa('0x1f')&&typeof _0x49893a[_0xd8fa('0x20')]==='undefined';var _0xfdbb59=_0x5382e5[_0xd8fa('0x21')];var _0x1cf56f=_0x43d585?0x0:_0x49893a[_0xd8fa('0x1e')];var _0x1f43b8=_0x43d585?_0x5382e5[_0xd8fa('0x21')]:_0x49893a[_0xd8fa('0x1e')]+_0x49893a['limit'];var _0x59bc9d;if(_0x1f43b8>=_0xfdbb59){_0x1f43b8=_0xfdbb59;_0x59bc9d=0xc8;}else{_0x59bc9d=0xce;}_0x17764b[_0xd8fa('0x1b')](_0x59bc9d);return _0x17764b[_0xd8fa('0x22')]('Content-Range',_0x1cf56f+'-'+_0x1f43b8+'/'+_0xfdbb59)[_0xd8fa('0x1d')](_0x5382e5);}return null;};}function patchUpdates(_0x2af658){return function(_0x1719af){try{jsonpatch[_0xd8fa('0x23')](_0x1719af,_0x2af658,!![]);}catch(_0x3ee64a){return BPromise[_0xd8fa('0x24')](_0x3ee64a);}return _0x1719af[_0xd8fa('0x25')]();};}function saveUpdates(_0x32bfb1,_0xc5692a){return function(_0x61cfb3){if(_0x61cfb3){return _0x61cfb3[_0xd8fa('0x26')](_0x32bfb1)[_0xd8fa('0x27')](function(_0x4982ee){return _0x4982ee;});}return null;};}function removeEntity(_0x5f2b34,_0xbcc2f1){return function(_0x59435a){if(_0x59435a){return _0x59435a[_0xd8fa('0x28')]()[_0xd8fa('0x27')](function(){_0x5f2b34[_0xd8fa('0x1b')](0xcc)[_0xd8fa('0x1c')]();});}};}function handleEntityNotFound(_0x354d7e,_0x7a8851){return function(_0x158cfd){if(!_0x158cfd){_0x354d7e[_0xd8fa('0x1a')](0x194);}return _0x158cfd;};}function handleError(_0x17f68a,_0x14becc){_0x14becc=_0x14becc||0x1f4;return function(_0x23f78b){logger[_0xd8fa('0x29')](_0x23f78b[_0xd8fa('0x2a')]);if(_0x23f78b['name']){delete _0x23f78b[_0xd8fa('0x2b')];}_0x17f68a[_0xd8fa('0x1b')](_0x14becc)[_0xd8fa('0x2c')](_0x23f78b);};}exports[_0xd8fa('0x2d')]=function(_0x5f449d,_0x30df24){var _0x2a4d52={},_0x1df6aa={},_0x424781={'count':0x0,'rows':[]};var _0x561664=_[_0xd8fa('0x2e')](db[_0xd8fa('0x2f')][_0xd8fa('0x30')],function(_0x53f7ff){return{'name':_0x53f7ff[_0xd8fa('0x31')],'type':_0x53f7ff[_0xd8fa('0x32')][_0xd8fa('0x33')]};});_0x1df6aa[_0xd8fa('0x34')]=_[_0xd8fa('0x2e')](_0x561664,'name');_0x1df6aa['query']=_[_0xd8fa('0x35')](_0x5f449d[_0xd8fa('0x36')]);_0x1df6aa['filters']=_['intersection'](_0x1df6aa['model'],_0x1df6aa['query']);_0x2a4d52[_0xd8fa('0x37')]=_[_0xd8fa('0x38')](_0x1df6aa[_0xd8fa('0x34')],qs['fields'](_0x5f449d['query'][_0xd8fa('0x39')]));_0x2a4d52[_0xd8fa('0x37')]=_0x2a4d52['attributes'][_0xd8fa('0x3a')]?_0x2a4d52[_0xd8fa('0x37')]:_0x1df6aa[_0xd8fa('0x34')];if(!_0x5f449d[_0xd8fa('0x36')]['hasOwnProperty'](_0xd8fa('0x3b'))){_0x2a4d52['limit']=qs[_0xd8fa('0x20')](_0x5f449d[_0xd8fa('0x36')][_0xd8fa('0x20')]);_0x2a4d52[_0xd8fa('0x1e')]=qs[_0xd8fa('0x1e')](_0x5f449d[_0xd8fa('0x36')][_0xd8fa('0x1e')]);}_0x2a4d52[_0xd8fa('0x3c')]=qs[_0xd8fa('0x3d')](_0x5f449d['query'][_0xd8fa('0x3d')]);_0x2a4d52['where']=qs[_0xd8fa('0x3e')](_[_0xd8fa('0x3f')](_0x5f449d[_0xd8fa('0x36')],_0x1df6aa[_0xd8fa('0x3e')]),_0x561664);if(_0x5f449d[_0xd8fa('0x36')]['filter']){_0x2a4d52['where']=_[_0xd8fa('0x40')](_0x2a4d52[_0xd8fa('0x41')],{'$or':_['map'](_0x561664,function(_0x3e85c7){if(_0x3e85c7[_0xd8fa('0x32')]!==_0xd8fa('0x42')){var _0x365c8d={};_0x365c8d[_0x3e85c7[_0xd8fa('0x2b')]]={'$like':'%'+_0x5f449d['query'][_0xd8fa('0x43')]+'%'};return _0x365c8d;}})});}_0x2a4d52=_['merge']({},_0x2a4d52,_0x5f449d[_0xd8fa('0x44')]);var _0xd44ff7={'where':_0x2a4d52[_0xd8fa('0x41')]};return db[_0xd8fa('0x2f')][_0xd8fa('0x21')](_0xd44ff7)['then'](function(_0x2b836e){_0x424781[_0xd8fa('0x21')]=_0x2b836e;if(_0x5f449d[_0xd8fa('0x36')]['includeAll']){_0x2a4d52[_0xd8fa('0x45')]=[{'all':!![]}];}return db['FaxTransferReport'][_0xd8fa('0x46')](_0x2a4d52);})[_0xd8fa('0x27')](function(_0x59ce1c){_0x424781[_0xd8fa('0x47')]=_0x59ce1c;return _0x424781;})[_0xd8fa('0x27')](respondWithFilteredResult(_0x30df24,_0x2a4d52))[_0xd8fa('0x48')](handleError(_0x30df24,null));};exports[_0xd8fa('0x49')]=function(_0x3ac10e,_0x533cb5){var _0x2b22d8={'raw':!![],'where':{'id':_0x3ac10e[_0xd8fa('0x4a')]['id']}},_0x42bdc4={};_0x42bdc4[_0xd8fa('0x34')]=_[_0xd8fa('0x35')](db[_0xd8fa('0x2f')][_0xd8fa('0x30')]);_0x42bdc4[_0xd8fa('0x36')]=_[_0xd8fa('0x35')](_0x3ac10e[_0xd8fa('0x36')]);_0x42bdc4[_0xd8fa('0x3e')]=_[_0xd8fa('0x38')](_0x42bdc4[_0xd8fa('0x34')],_0x42bdc4[_0xd8fa('0x36')]);_0x2b22d8['attributes']=_[_0xd8fa('0x38')](_0x42bdc4[_0xd8fa('0x34')],qs[_0xd8fa('0x39')](_0x3ac10e['query'][_0xd8fa('0x39')]));_0x2b22d8[_0xd8fa('0x37')]=_0x2b22d8[_0xd8fa('0x37')][_0xd8fa('0x3a')]?_0x2b22d8[_0xd8fa('0x37')]:_0x42bdc4['model'];if(_0x3ac10e[_0xd8fa('0x36')][_0xd8fa('0x4b')]){_0x2b22d8[_0xd8fa('0x45')]=[{'all':!![]}];}_0x2b22d8=_[_0xd8fa('0x40')]({},_0x2b22d8,_0x3ac10e[_0xd8fa('0x44')]);return db[_0xd8fa('0x2f')]['find'](_0x2b22d8)[_0xd8fa('0x27')](handleEntityNotFound(_0x533cb5,null))[_0xd8fa('0x27')](respondWithResult(_0x533cb5,null))[_0xd8fa('0x48')](handleError(_0x533cb5,null));};exports[_0xd8fa('0x4c')]=function(_0x373231,_0x460e69){return db[_0xd8fa('0x2f')][_0xd8fa('0x4c')](_0x373231[_0xd8fa('0x4d')],{})[_0xd8fa('0x27')](respondWithResult(_0x460e69,0xc9))[_0xd8fa('0x48')](handleError(_0x460e69,null));};exports[_0xd8fa('0x26')]=function(_0xe6874,_0x31debc){if(_0xe6874[_0xd8fa('0x4d')]['id']){delete _0xe6874['body']['id'];}return db[_0xd8fa('0x2f')]['find']({'where':{'id':_0xe6874[_0xd8fa('0x4a')]['id']}})[_0xd8fa('0x27')](handleEntityNotFound(_0x31debc,null))[_0xd8fa('0x27')](saveUpdates(_0xe6874[_0xd8fa('0x4d')],null))['then'](respondWithResult(_0x31debc,null))[_0xd8fa('0x48')](handleError(_0x31debc,null));};exports[_0xd8fa('0x28')]=function(_0x5521dc,_0xd1de20){return db[_0xd8fa('0x2f')][_0xd8fa('0x4e')]({'where':{'id':_0x5521dc[_0xd8fa('0x4a')]['id']}})[_0xd8fa('0x27')](handleEntityNotFound(_0xd1de20,null))[_0xd8fa('0x27')](removeEntity(_0xd1de20,null))[_0xd8fa('0x48')](handleError(_0xd1de20,null));};exports[_0xd8fa('0x4f')]=function(_0xaf04c6,_0x5ed093){return db[_0xd8fa('0x2f')]['describe']()[_0xd8fa('0x27')](respondWithResult(_0x5ed093,null))['catch'](handleError(_0x5ed093,null));};
\ No newline at end of file
+var _0x6942=['count','set','Content-Range','save','destroy','error','name','map','FaxTransferReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','filter','merge','where','VIRTUAL','then','includeAll','include','findAll','rows','show','params','fields','options','find','catch','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined'];(function(_0x5c5a2e,_0x3dadf0){var _0x29d457=function(_0xe4b354){while(--_0xe4b354){_0x5c5a2e['push'](_0x5c5a2e['shift']());}};_0x29d457(++_0x3dadf0);}(_0x6942,0xbb));var _0x2694=function(_0x4315f0,_0x4f49be){_0x4315f0=_0x4315f0-0x0;var _0x5daaab=_0x6942[_0x4315f0];return _0x5daaab;};'use strict';var emlformat=require(_0x2694('0x0'));var rimraf=require(_0x2694('0x1'));var zipdir=require(_0x2694('0x2'));var jsonpatch=require(_0x2694('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2694('0x4'));var util=require(_0x2694('0x5'));var path=require('path');var sox=require(_0x2694('0x6'));var csv=require(_0x2694('0x7'));var ejs=require(_0x2694('0x8'));var fs=require('fs');var fs_extra=require(_0x2694('0x9'));var _=require('lodash');var squel=require(_0x2694('0xa'));var crypto=require(_0x2694('0xb'));var jsforce=require(_0x2694('0xc'));var deskjs=require(_0x2694('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2694('0xe'));var Papa=require('papaparse');var Redis=require(_0x2694('0xf'));var authService=require(_0x2694('0x10'));var qs=require(_0x2694('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2694('0x12'));var logger=require(_0x2694('0x13'))(_0x2694('0x14'));var utils=require(_0x2694('0x15'));var config=require(_0x2694('0x16'));var licenseUtil=require(_0x2694('0x17'));var db=require(_0x2694('0x18'))['db'];function respondWithStatusCode(_0x3bf6df,_0x3fa1a1){_0x3fa1a1=_0x3fa1a1||0xcc;return function(_0x573e3d){if(_0x573e3d){return _0x3bf6df[_0x2694('0x19')](_0x3fa1a1);}return _0x3bf6df[_0x2694('0x1a')](_0x3fa1a1)[_0x2694('0x1b')]();};}function respondWithResult(_0xeb9dbd,_0x5f1e7b){_0x5f1e7b=_0x5f1e7b||0xc8;return function(_0x4fc2c4){if(_0x4fc2c4){return _0xeb9dbd[_0x2694('0x1a')](_0x5f1e7b)[_0x2694('0x1c')](_0x4fc2c4);}};}function respondWithFilteredResult(_0x56c8d5,_0x4e4d14){return function(_0x456827){if(_0x456827){var _0xc92119=typeof _0x4e4d14[_0x2694('0x1d')]==='undefined'&&typeof _0x4e4d14[_0x2694('0x1e')]===_0x2694('0x1f');var _0x1ca0b4=_0x456827[_0x2694('0x20')];var _0x392269=_0xc92119?0x0:_0x4e4d14[_0x2694('0x1d')];var _0x3f3deb=_0xc92119?_0x456827[_0x2694('0x20')]:_0x4e4d14[_0x2694('0x1d')]+_0x4e4d14[_0x2694('0x1e')];var _0x3c7a32;if(_0x3f3deb>=_0x1ca0b4){_0x3f3deb=_0x1ca0b4;_0x3c7a32=0xc8;}else{_0x3c7a32=0xce;}_0x56c8d5[_0x2694('0x1a')](_0x3c7a32);return _0x56c8d5[_0x2694('0x21')](_0x2694('0x22'),_0x392269+'-'+_0x3f3deb+'/'+_0x1ca0b4)[_0x2694('0x1c')](_0x456827);}return null;};}function patchUpdates(_0x1cb9a9){return function(_0x47573c){try{jsonpatch['apply'](_0x47573c,_0x1cb9a9,!![]);}catch(_0xf906e6){return BPromise['reject'](_0xf906e6);}return _0x47573c[_0x2694('0x23')]();};}function saveUpdates(_0x1bbb03,_0x216734){return function(_0x489ae4){if(_0x489ae4){return _0x489ae4['update'](_0x1bbb03)['then'](function(_0x27fde3){return _0x27fde3;});}return null;};}function removeEntity(_0x3fabda,_0x4da62e){return function(_0x2836de){if(_0x2836de){return _0x2836de[_0x2694('0x24')]()['then'](function(){_0x3fabda['status'](0xcc)[_0x2694('0x1b')]();});}};}function handleEntityNotFound(_0x23a5d3,_0x39f7bc){return function(_0x147f24){if(!_0x147f24){_0x23a5d3[_0x2694('0x19')](0x194);}return _0x147f24;};}function handleError(_0x512480,_0x17929e){_0x17929e=_0x17929e||0x1f4;return function(_0x33942f){logger[_0x2694('0x25')](_0x33942f['stack']);if(_0x33942f[_0x2694('0x26')]){delete _0x33942f[_0x2694('0x26')];}_0x512480[_0x2694('0x1a')](_0x17929e)['send'](_0x33942f);};}exports['index']=function(_0x5bec55,_0x1ab5ba){var _0x129945={},_0x575b03={},_0x11eeed={'count':0x0,'rows':[]};var _0x50b4b7=_[_0x2694('0x27')](db[_0x2694('0x28')][_0x2694('0x29')],function(_0x2c3c99){return{'name':_0x2c3c99[_0x2694('0x2a')],'type':_0x2c3c99[_0x2694('0x2b')]['key']};});_0x575b03[_0x2694('0x2c')]=_[_0x2694('0x27')](_0x50b4b7,'name');_0x575b03[_0x2694('0x2d')]=_[_0x2694('0x2e')](_0x5bec55[_0x2694('0x2d')]);_0x575b03[_0x2694('0x2f')]=_[_0x2694('0x30')](_0x575b03[_0x2694('0x2c')],_0x575b03[_0x2694('0x2d')]);_0x129945[_0x2694('0x31')]=_[_0x2694('0x30')](_0x575b03[_0x2694('0x2c')],qs['fields'](_0x5bec55[_0x2694('0x2d')]['fields']));_0x129945[_0x2694('0x31')]=_0x129945[_0x2694('0x31')][_0x2694('0x32')]?_0x129945[_0x2694('0x31')]:_0x575b03[_0x2694('0x2c')];if(!_0x5bec55['query'][_0x2694('0x33')]('nolimit')){_0x129945[_0x2694('0x1e')]=qs[_0x2694('0x1e')](_0x5bec55['query']['limit']);_0x129945[_0x2694('0x1d')]=qs[_0x2694('0x1d')](_0x5bec55[_0x2694('0x2d')]['offset']);}_0x129945[_0x2694('0x34')]=qs[_0x2694('0x35')](_0x5bec55[_0x2694('0x2d')][_0x2694('0x35')]);_0x129945['where']=qs[_0x2694('0x2f')](_['pick'](_0x5bec55[_0x2694('0x2d')],_0x575b03[_0x2694('0x2f')]),_0x50b4b7);if(_0x5bec55[_0x2694('0x2d')][_0x2694('0x36')]){_0x129945['where']=_[_0x2694('0x37')](_0x129945[_0x2694('0x38')],{'$or':_[_0x2694('0x27')](_0x50b4b7,function(_0x4dac1d){if(_0x4dac1d[_0x2694('0x2b')]!==_0x2694('0x39')){var _0x17b900={};_0x17b900[_0x4dac1d[_0x2694('0x26')]]={'$like':'%'+_0x5bec55[_0x2694('0x2d')][_0x2694('0x36')]+'%'};return _0x17b900;}})});}_0x129945=_[_0x2694('0x37')]({},_0x129945,_0x5bec55['options']);var _0x5cc682={'where':_0x129945[_0x2694('0x38')]};return db[_0x2694('0x28')][_0x2694('0x20')](_0x5cc682)[_0x2694('0x3a')](function(_0x578445){_0x11eeed[_0x2694('0x20')]=_0x578445;if(_0x5bec55[_0x2694('0x2d')][_0x2694('0x3b')]){_0x129945[_0x2694('0x3c')]=[{'all':!![]}];}return db[_0x2694('0x28')][_0x2694('0x3d')](_0x129945);})[_0x2694('0x3a')](function(_0x250045){_0x11eeed[_0x2694('0x3e')]=_0x250045;return _0x11eeed;})[_0x2694('0x3a')](respondWithFilteredResult(_0x1ab5ba,_0x129945))['catch'](handleError(_0x1ab5ba,null));};exports[_0x2694('0x3f')]=function(_0x278b6a,_0x4d231f){var _0x179881={'raw':!![],'where':{'id':_0x278b6a[_0x2694('0x40')]['id']}},_0x4eab87={};_0x4eab87['model']=_['keys'](db['FaxTransferReport']['rawAttributes']);_0x4eab87[_0x2694('0x2d')]=_['keys'](_0x278b6a[_0x2694('0x2d')]);_0x4eab87[_0x2694('0x2f')]=_['intersection'](_0x4eab87[_0x2694('0x2c')],_0x4eab87[_0x2694('0x2d')]);_0x179881[_0x2694('0x31')]=_[_0x2694('0x30')](_0x4eab87['model'],qs[_0x2694('0x41')](_0x278b6a[_0x2694('0x2d')][_0x2694('0x41')]));_0x179881[_0x2694('0x31')]=_0x179881[_0x2694('0x31')][_0x2694('0x32')]?_0x179881[_0x2694('0x31')]:_0x4eab87[_0x2694('0x2c')];if(_0x278b6a[_0x2694('0x2d')]['includeAll']){_0x179881[_0x2694('0x3c')]=[{'all':!![]}];}_0x179881=_[_0x2694('0x37')]({},_0x179881,_0x278b6a[_0x2694('0x42')]);return db[_0x2694('0x28')][_0x2694('0x43')](_0x179881)['then'](handleEntityNotFound(_0x4d231f,null))[_0x2694('0x3a')](respondWithResult(_0x4d231f,null))[_0x2694('0x44')](handleError(_0x4d231f,null));};exports[_0x2694('0x45')]=function(_0x4aaffc,_0x2ef271){return db[_0x2694('0x28')]['create'](_0x4aaffc[_0x2694('0x46')],{})['then'](respondWithResult(_0x2ef271,0xc9))[_0x2694('0x44')](handleError(_0x2ef271,null));};exports[_0x2694('0x47')]=function(_0x3219b2,_0x1ea02e){if(_0x3219b2[_0x2694('0x46')]['id']){delete _0x3219b2[_0x2694('0x46')]['id'];}return db[_0x2694('0x28')][_0x2694('0x43')]({'where':{'id':_0x3219b2[_0x2694('0x40')]['id']}})[_0x2694('0x3a')](handleEntityNotFound(_0x1ea02e,null))[_0x2694('0x3a')](saveUpdates(_0x3219b2['body'],null))[_0x2694('0x3a')](respondWithResult(_0x1ea02e,null))[_0x2694('0x44')](handleError(_0x1ea02e,null));};exports[_0x2694('0x24')]=function(_0x15039d,_0xc04f40){return db[_0x2694('0x28')][_0x2694('0x43')]({'where':{'id':_0x15039d[_0x2694('0x40')]['id']}})['then'](handleEntityNotFound(_0xc04f40,null))[_0x2694('0x3a')](removeEntity(_0xc04f40,null))[_0x2694('0x44')](handleError(_0xc04f40,null));};exports[_0x2694('0x48')]=function(_0x36cef7,_0x461527){return db[_0x2694('0x28')]['describe']()[_0x2694('0x3a')](respondWithResult(_0x461527,null))[_0x2694('0x44')](handleError(_0x461527,null));};
\ No newline at end of file
index 9d8509d..8333f2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3e5=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./faxTransferReport.attributes','exports','FaxTransferReport','report_fax_transfer','uniqueid','lodash'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0xf3e5,0xc3));var _0x5f3e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xf3e5[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0x5f3e('0x0'));var util=require(_0x5f3e('0x1'));var logger=require(_0x5f3e('0x2'))(_0x5f3e('0x3'));var moment=require(_0x5f3e('0x4'));var BPromise=require(_0x5f3e('0x5'));var rp=require(_0x5f3e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5f3e('0x7'));var config=require(_0x5f3e('0x8'));var attributes=require(_0x5f3e('0x9'));module[_0x5f3e('0xa')]=function(_0x1d1187,_0x115405){return _0x1d1187['define'](_0x5f3e('0xb'),attributes,{'tableName':_0x5f3e('0xc'),'paranoid':![],'indexes':[{'name':_0x5f3e('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd7f6=['lodash','util','bluebird','path','rimraf','exports','define','FaxTransferReport','report_fax_transfer','uniqueid'];(function(_0xb24a3e,_0x4a3594){var _0x4038d7=function(_0x1ea3c3){while(--_0x1ea3c3){_0xb24a3e['push'](_0xb24a3e['shift']());}};_0x4038d7(++_0x4a3594);}(_0xd7f6,0x154));var _0x6d7f=function(_0x7d6742,_0xd06af6){_0x7d6742=_0x7d6742-0x0;var _0x48f175=_0xd7f6[_0x7d6742];return _0x48f175;};'use strict';var _=require(_0x6d7f('0x0'));var util=require(_0x6d7f('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x6d7f('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6d7f('0x3'));var rimraf=require(_0x6d7f('0x4'));var config=require('../../config/environment');var attributes=require('./faxTransferReport.attributes');module[_0x6d7f('0x5')]=function(_0x5654a3,_0x110310){return _0x5654a3[_0x6d7f('0x6')](_0x6d7f('0x7'),attributes,{'tableName':_0x6d7f('0x8'),'paranoid':![],'indexes':[{'name':_0x6d7f('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index b1e895e..6ed0ca7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb16=['request\x20sent','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','FaxTransferReport,\x20%s,\x20%s'];(function(_0x5332f1,_0x42f4d7){var _0x55302c=function(_0x337789){while(--_0x337789){_0x5332f1['push'](_0x5332f1['shift']());}};_0x55302c(++_0x42f4d7);}(_0xfb16,0x146));var _0x6fb1=function(_0x6e26e,_0x1f2177){_0x6e26e=_0x6e26e-0x0;var _0x2ef2b2=_0xfb16[_0x6e26e];return _0x2ef2b2;};'use strict';var _=require(_0x6fb1('0x0'));var util=require(_0x6fb1('0x1'));var moment=require(_0x6fb1('0x2'));var BPromise=require(_0x6fb1('0x3'));var rs=require(_0x6fb1('0x4'));var fs=require('fs');var Redis=require(_0x6fb1('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6fb1('0x6'));var logger=require(_0x6fb1('0x7'))(_0x6fb1('0x8'));var config=require(_0x6fb1('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6fb1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x11d2bb,_0x3f507c,_0x22bd16){return new BPromise(function(_0x5240af,_0x57354f){return client[_0x6fb1('0xb')](_0x11d2bb,_0x22bd16)['then'](function(_0x398a49){logger[_0x6fb1('0xc')](_0x6fb1('0xd'),_0x3f507c,_0x6fb1('0xe'));logger['debug'](_0x6fb1('0xf'),_0x3f507c,_0x6fb1('0xe'),JSON['stringify'](_0x398a49));if(_0x398a49['error']){if(_0x398a49[_0x6fb1('0x10')][_0x6fb1('0x11')]===0x1f4){logger[_0x6fb1('0x10')](_0x6fb1('0xd'),_0x3f507c,_0x398a49[_0x6fb1('0x10')]['message']);return _0x57354f(_0x398a49[_0x6fb1('0x10')]['message']);}logger[_0x6fb1('0x10')](_0x6fb1('0xd'),_0x3f507c,_0x398a49[_0x6fb1('0x10')][_0x6fb1('0x12')]);return _0x5240af(_0x398a49[_0x6fb1('0x10')][_0x6fb1('0x12')]);}else{logger[_0x6fb1('0xc')](_0x6fb1('0xd'),_0x3f507c,_0x6fb1('0xe'));_0x5240af(_0x398a49[_0x6fb1('0x13')][_0x6fb1('0x12')]);}})['catch'](function(_0x1c6a49){logger['error']('FaxTransferReport,\x20%s,\x20%s',_0x3f507c,_0x1c6a49);_0x57354f(_0x1c6a49);});});}
\ No newline at end of file
+var _0x533c=['moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x533c,0x9f));var _0xc533=function(_0x2c21a8,_0x10d255){_0x2c21a8=_0x2c21a8-0x0;var _0x342eb2=_0x533c[_0x2c21a8];return _0x342eb2;};'use strict';var _=require('lodash');var util=require(_0xc533('0x0'));var moment=require(_0xc533('0x1'));var BPromise=require(_0xc533('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc533('0x3'))['db'];var utils=require(_0xc533('0x4'));var logger=require(_0xc533('0x5'))('rpc');var config=require(_0xc533('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xc533('0x7')][_0xc533('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x589c81,_0x366206,_0x3821ca){return new BPromise(function(_0x22fee5,_0x2c577f){return client[_0xc533('0x9')](_0x589c81,_0x3821ca)[_0xc533('0xa')](function(_0x259f60){logger[_0xc533('0xb')](_0xc533('0xc'),_0x366206,_0xc533('0xd'));logger['debug'](_0xc533('0xe'),_0x366206,_0xc533('0xd'),JSON['stringify'](_0x259f60));if(_0x259f60[_0xc533('0xf')]){if(_0x259f60[_0xc533('0xf')][_0xc533('0x10')]===0x1f4){logger[_0xc533('0xf')]('FaxTransferReport,\x20%s,\x20%s',_0x366206,_0x259f60[_0xc533('0xf')][_0xc533('0x11')]);return _0x2c577f(_0x259f60['error'][_0xc533('0x11')]);}logger['error'](_0xc533('0xc'),_0x366206,_0x259f60['error'][_0xc533('0x11')]);return _0x22fee5(_0x259f60[_0xc533('0xf')][_0xc533('0x11')]);}else{logger[_0xc533('0xb')](_0xc533('0xc'),_0x366206,_0xc533('0xd'));_0x22fee5(_0x259f60[_0xc533('0x12')][_0xc533('0x11')]);}})[_0xc533('0x13')](function(_0x54c2ee){logger[_0xc533('0xf')](_0xc533('0xc'),_0x366206,_0x54c2ee);_0x2c577f(_0x54c2ee);});});}
\ No newline at end of file
index 24841ef..6a018d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48bb=['describe','/:id','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','/describe'];(function(_0x36bda2,_0x295b69){var _0x36dda9=function(_0x43b9ee){while(--_0x43b9ee){_0x36bda2['push'](_0x36bda2['shift']());}};_0x36dda9(++_0x295b69);}(_0x48bb,0x1e6));var _0xb48b=function(_0x1064bc,_0x206f12){_0x1064bc=_0x1064bc-0x0;var _0x5edc45=_0x48bb[_0x1064bc];return _0x5edc45;};'use strict';var multer=require(_0xb48b('0x0'));var util=require(_0xb48b('0x1'));var path=require(_0xb48b('0x2'));var timeout=require(_0xb48b('0x3'));var express=require(_0xb48b('0x4'));var router=express[_0xb48b('0x5')]();var fs_extra=require(_0xb48b('0x6'));var auth=require(_0xb48b('0x7'));var interaction=require(_0xb48b('0x8'));var config=require(_0xb48b('0x9'));var controller=require(_0xb48b('0xa'));router[_0xb48b('0xb')]('/',auth[_0xb48b('0xc')](),controller['index']);router['get'](_0xb48b('0xd'),auth[_0xb48b('0xc')](),controller[_0xb48b('0xe')]);router[_0xb48b('0xb')](_0xb48b('0xf'),auth[_0xb48b('0xc')](),controller['show']);router['post']('/',auth[_0xb48b('0xc')](),controller['create']);router[_0xb48b('0x10')](_0xb48b('0xf'),auth['isAuthenticated'](),controller[_0xb48b('0x11')]);router[_0xb48b('0x12')](_0xb48b('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0xb48b('0x13')]=router;
\ No newline at end of file
+var _0x5161=['fs-extra','../../components/auth/service','../../config/environment','./faxTransferReport.controller','get','index','/describe','describe','/:id','isAuthenticated','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x5161,0xab));var _0x1516=function(_0x2b77ad,_0xedf347){_0x2b77ad=_0x2b77ad-0x0;var _0x379b8d=_0x5161[_0x2b77ad];return _0x379b8d;};'use strict';var multer=require(_0x1516('0x0'));var util=require(_0x1516('0x1'));var path=require(_0x1516('0x2'));var timeout=require(_0x1516('0x3'));var express=require(_0x1516('0x4'));var router=express['Router']();var fs_extra=require(_0x1516('0x5'));var auth=require(_0x1516('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1516('0x7'));var controller=require(_0x1516('0x8'));router[_0x1516('0x9')]('/',auth['isAuthenticated'](),controller[_0x1516('0xa')]);router[_0x1516('0x9')](_0x1516('0xb'),auth['isAuthenticated'](),controller[_0x1516('0xc')]);router[_0x1516('0x9')](_0x1516('0xd'),auth[_0x1516('0xe')](),controller['show']);router[_0x1516('0xf')]('/',auth[_0x1516('0xe')](),controller[_0x1516('0x10')]);router[_0x1516('0x11')](_0x1516('0xd'),auth[_0x1516('0xe')](),controller[_0x1516('0x12')]);router[_0x1516('0x13')](_0x1516('0xd'),auth[_0x1516('0xe')](),controller[_0x1516('0x14')]);module[_0x1516('0x15')]=router;
\ No newline at end of file
index 4bdd199..14a037a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c69=['/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c69,0x16b));var _0x94c6=function(_0x2983a9,_0x8d8cf0){_0x2983a9=_0x2983a9-0x0;var _0x5b8eeb=_0x4c69[_0x2983a9];return _0x5b8eeb;};'use strict';var multer=require('multer');var util=require(_0x94c6('0x0'));var path=require(_0x94c6('0x1'));var timeout=require(_0x94c6('0x2'));var express=require(_0x94c6('0x3'));var router=express[_0x94c6('0x4')]();var fs_extra=require(_0x94c6('0x5'));var auth=require(_0x94c6('0x6'));var interaction=require(_0x94c6('0x7'));var config=require(_0x94c6('0x8'));var controller=require('./intDeskAccount.controller');router[_0x94c6('0x9')]('/',auth[_0x94c6('0xa')](),controller['index']);router[_0x94c6('0x9')]('/:id',auth[_0x94c6('0xa')](),controller['show']);router[_0x94c6('0x9')](_0x94c6('0xb'),auth[_0x94c6('0xa')](),controller[_0x94c6('0xc')]);router[_0x94c6('0x9')](_0x94c6('0xd'),auth['isAuthenticated'](),controller[_0x94c6('0xe')]);router[_0x94c6('0xf')]('/',auth[_0x94c6('0xa')](),controller[_0x94c6('0x10')]);router['post']('/:id/configurations',auth[_0x94c6('0xa')](),controller[_0x94c6('0x11')]);router['put']('/:id',auth[_0x94c6('0xa')](),controller[_0x94c6('0x12')]);router[_0x94c6('0x13')]('/:id',auth[_0x94c6('0xa')](),controller[_0x94c6('0x14')]);module[_0x94c6('0x15')]=router;
\ No newline at end of file
+var _0x3037=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','show','getConfigurations','/:id/fields','create','/:id/configurations','/:id','destroy','exports','multer','path','connect-timeout','express','Router'];(function(_0x2e3107,_0x25f970){var _0x833d69=function(_0x420e78){while(--_0x420e78){_0x2e3107['push'](_0x2e3107['shift']());}};_0x833d69(++_0x25f970);}(_0x3037,0x13b));var _0x7303=function(_0x3b1138,_0x373d0a){_0x3b1138=_0x3b1138-0x0;var _0x2c4a8d=_0x3037[_0x3b1138];return _0x2c4a8d;};'use strict';var multer=require(_0x7303('0x0'));var util=require('util');var path=require(_0x7303('0x1'));var timeout=require(_0x7303('0x2'));var express=require(_0x7303('0x3'));var router=express[_0x7303('0x4')]();var fs_extra=require(_0x7303('0x5'));var auth=require(_0x7303('0x6'));var interaction=require(_0x7303('0x7'));var config=require(_0x7303('0x8'));var controller=require('./intDeskAccount.controller');router[_0x7303('0x9')]('/',auth['isAuthenticated'](),controller[_0x7303('0xa')]);router[_0x7303('0x9')]('/:id',auth[_0x7303('0xb')](),controller[_0x7303('0xc')]);router[_0x7303('0x9')]('/:id/configurations',auth[_0x7303('0xb')](),controller[_0x7303('0xd')]);router[_0x7303('0x9')](_0x7303('0xe'),auth['isAuthenticated'](),controller['getFields']);router['post']('/',auth[_0x7303('0xb')](),controller[_0x7303('0xf')]);router['post'](_0x7303('0x10'),auth['isAuthenticated'](),controller['addConfiguration']);router['put'](_0x7303('0x11'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x7303('0x11'),auth[_0x7303('0xb')](),controller[_0x7303('0x12')]);module[_0x7303('0x13')]=router;
\ No newline at end of file
index e80df6a..5ca4426 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe78=['sequelize','STRING','ENUM','basic','integrationTab'];(function(_0xbae752,_0x571bff){var _0x3939ff=function(_0x2e85e0){while(--_0x2e85e0){_0xbae752['push'](_0xbae752['shift']());}};_0x3939ff(++_0x571bff);}(_0xfe78,0x69));var _0x8fe7=function(_0xbc5156,_0x178164){_0xbc5156=_0xbc5156-0x0;var _0x327bb9=_0xfe78[_0xbc5156];return _0x327bb9;};'use strict';var Sequelize=require(_0x8fe7('0x0'));module['exports']={'name':{'type':Sequelize[_0x8fe7('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x8fe7('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0x8fe7('0x2')]('basic'),'defaultValue':_0x8fe7('0x3')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0x8fe7('0x1')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x8fe7('0x1')]},'tokenSecret':{'type':Sequelize[_0x8fe7('0x1')]},'serverUrl':{'type':Sequelize[_0x8fe7('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x8fe7('0x2')](_0x8fe7('0x4'),'newTab'),'defaultValue':_0x8fe7('0x4')}};
\ No newline at end of file
+var _0xaf0b=['newTab','exports','STRING','ENUM','basic','integrationTab'];(function(_0xa0e05f,_0x1a3f7e){var _0x25bc8=function(_0x101abd){while(--_0x101abd){_0xa0e05f['push'](_0xa0e05f['shift']());}};_0x25bc8(++_0x1a3f7e);}(_0xaf0b,0x6d));var _0xbaf0=function(_0x1b4e76,_0x4628a0){_0x1b4e76=_0x1b4e76-0x0;var _0x506ddf=_0xaf0b[_0x1b4e76];return _0x506ddf;};'use strict';var Sequelize=require('sequelize');module[_0xbaf0('0x0')]={'name':{'type':Sequelize[_0xbaf0('0x1')]},'description':{'type':Sequelize[_0xbaf0('0x1')]},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0xbaf0('0x2')]('basic'),'defaultValue':_0xbaf0('0x3')},'password':{'type':Sequelize[_0xbaf0('0x1')]},'consumerKey':{'type':Sequelize[_0xbaf0('0x1')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0xbaf0('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbaf0('0x4'),_0xbaf0('0x5')),'defaultValue':_0xbaf0('0x4')}};
\ No newline at end of file
index 587a6c9..3875b72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8294=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','name','index','map','DeskAccount','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','findOne','order','pick','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','DeskConfiguration','DeskField','Descriptions','getFields','priority','remoteUri','authType','username','password','consumerKey','consumerSecret','token','slice','lastIndexOf','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','%s:%s','toString','base64','concat','entries','active','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment'];(function(_0x5e9396,_0x161fdd){var _0x4172e3=function(_0x4acd42){while(--_0x4acd42){_0x5e9396['push'](_0x5e9396['shift']());}};_0x4172e3(++_0x161fdd);}(_0x8294,0x157));var _0x4829=function(_0x52e404,_0x815edb){_0x52e404=_0x52e404-0x0;var _0x5797b4=_0x8294[_0x52e404];return _0x5797b4;};'use strict';var emlformat=require(_0x4829('0x0'));var rimraf=require(_0x4829('0x1'));var zipdir=require(_0x4829('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4829('0x3'));var moment=require(_0x4829('0x4'));var BPromise=require(_0x4829('0x5'));var Mustache=require(_0x4829('0x6'));var util=require(_0x4829('0x7'));var path=require(_0x4829('0x8'));var sox=require(_0x4829('0x9'));var csv=require(_0x4829('0xa'));var ejs=require(_0x4829('0xb'));var fs=require('fs');var fs_extra=require(_0x4829('0xc'));var _=require(_0x4829('0xd'));var squel=require('squel');var crypto=require(_0x4829('0xe'));var jsforce=require(_0x4829('0xf'));var deskjs=require(_0x4829('0x10'));var toCsv=require(_0x4829('0xa'));var querystring=require(_0x4829('0x11'));var Papa=require(_0x4829('0x12'));var Redis=require(_0x4829('0x13'));var authService=require(_0x4829('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4829('0x15'));var logger=require(_0x4829('0x16'))(_0x4829('0x17'));var utils=require(_0x4829('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x4829('0x19'));function respondWithStatusCode(_0x2cd02e,_0x53d0c8){_0x53d0c8=_0x53d0c8||0xcc;return function(_0x4c8cb6){if(_0x4c8cb6){return _0x2cd02e[_0x4829('0x1a')](_0x53d0c8);}return _0x2cd02e[_0x4829('0x1b')](_0x53d0c8)['end']();};}function respondWithResult(_0x19909f,_0x3cbb88){_0x3cbb88=_0x3cbb88||0xc8;return function(_0x1c637f){if(_0x1c637f){return _0x19909f[_0x4829('0x1b')](_0x3cbb88)[_0x4829('0x1c')](_0x1c637f);}};}function respondWithFilteredResult(_0x1f6bd2,_0x30291e){return function(_0x20bbff){if(_0x20bbff){var _0x303d24=typeof _0x30291e[_0x4829('0x1d')]===_0x4829('0x1e')&&typeof _0x30291e['limit']==='undefined';var _0x3e0287=_0x20bbff[_0x4829('0x1f')];var _0x21b576=_0x303d24?0x0:_0x30291e[_0x4829('0x1d')];var _0x5f3f92=_0x303d24?_0x20bbff[_0x4829('0x1f')]:_0x30291e[_0x4829('0x1d')]+_0x30291e[_0x4829('0x20')];var _0x4f425d;if(_0x5f3f92>=_0x3e0287){_0x5f3f92=_0x3e0287;_0x4f425d=0xc8;}else{_0x4f425d=0xce;}_0x1f6bd2[_0x4829('0x1b')](_0x4f425d);return _0x1f6bd2[_0x4829('0x21')](_0x4829('0x22'),_0x21b576+'-'+_0x5f3f92+'/'+_0x3e0287)[_0x4829('0x1c')](_0x20bbff);}return null;};}function patchUpdates(_0x66c659){return function(_0x4150ca){try{jsonpatch[_0x4829('0x23')](_0x4150ca,_0x66c659,!![]);}catch(_0x3921c0){return BPromise[_0x4829('0x24')](_0x3921c0);}return _0x4150ca[_0x4829('0x25')]();};}function saveUpdates(_0x2a31bb,_0x1fb2cd){return function(_0x669db8){if(_0x669db8){return _0x669db8[_0x4829('0x26')](_0x2a31bb)[_0x4829('0x27')](function(_0x43dc97){return _0x43dc97;});}return null;};}function removeEntity(_0x3150ae,_0x11bef5){return function(_0x54d5b6){if(_0x54d5b6){return _0x54d5b6[_0x4829('0x28')]()['then'](function(){_0x3150ae[_0x4829('0x1b')](0xcc)[_0x4829('0x29')]();});}};}function handleEntityNotFound(_0x1b9305,_0x8c9d3a){return function(_0x3bd0f0){if(!_0x3bd0f0){_0x1b9305[_0x4829('0x1a')](0x194);}return _0x3bd0f0;};}function handleError(_0x3876c9,_0x5699aa){_0x5699aa=_0x5699aa||0x1f4;return function(_0x57760d){logger['error'](_0x57760d['stack']);if(_0x57760d[_0x4829('0x2a')]){delete _0x57760d['name'];}_0x3876c9[_0x4829('0x1b')](_0x5699aa)['send'](_0x57760d);};}exports[_0x4829('0x2b')]=function(_0x3ab269,_0xa55dbb){var _0x45f601={},_0x333a5e={},_0x530763={'count':0x0,'rows':[]};var _0x5b7a39=_[_0x4829('0x2c')](db[_0x4829('0x2d')][_0x4829('0x2e')],function(_0x453dcb){return{'name':_0x453dcb[_0x4829('0x2f')],'type':_0x453dcb[_0x4829('0x30')]['key']};});_0x333a5e[_0x4829('0x31')]=_[_0x4829('0x2c')](_0x5b7a39,_0x4829('0x2a'));_0x333a5e['query']=_[_0x4829('0x32')](_0x3ab269[_0x4829('0x33')]);_0x333a5e[_0x4829('0x34')]=_[_0x4829('0x35')](_0x333a5e['model'],_0x333a5e[_0x4829('0x33')]);_0x45f601[_0x4829('0x36')]=_['intersection'](_0x333a5e[_0x4829('0x31')],qs[_0x4829('0x37')](_0x3ab269[_0x4829('0x33')]['fields']));_0x45f601[_0x4829('0x36')]=_0x45f601[_0x4829('0x36')][_0x4829('0x38')]?_0x45f601[_0x4829('0x36')]:_0x333a5e['model'];if(!_0x3ab269[_0x4829('0x33')]['hasOwnProperty'](_0x4829('0x39'))){_0x45f601[_0x4829('0x20')]=qs[_0x4829('0x20')](_0x3ab269['query'][_0x4829('0x20')]);_0x45f601[_0x4829('0x1d')]=qs[_0x4829('0x1d')](_0x3ab269[_0x4829('0x33')]['offset']);}_0x45f601['order']=qs[_0x4829('0x3a')](_0x3ab269[_0x4829('0x33')][_0x4829('0x3a')]);_0x45f601[_0x4829('0x3b')]=qs[_0x4829('0x34')](_['pick'](_0x3ab269['query'],_0x333a5e[_0x4829('0x34')]),_0x5b7a39);if(_0x3ab269[_0x4829('0x33')][_0x4829('0x3c')]){_0x45f601[_0x4829('0x3b')]=_[_0x4829('0x3d')](_0x45f601[_0x4829('0x3b')],{'$or':_[_0x4829('0x2c')](_0x5b7a39,function(_0x3c63ee){if(_0x3c63ee[_0x4829('0x30')]!==_0x4829('0x3e')){var _0x5a8aff={};_0x5a8aff[_0x3c63ee[_0x4829('0x2a')]]={'$like':'%'+_0x3ab269[_0x4829('0x33')]['filter']+'%'};return _0x5a8aff;}})});}_0x45f601=_['merge']({},_0x45f601,_0x3ab269[_0x4829('0x3f')]);var _0xb26a6f={'where':_0x45f601[_0x4829('0x3b')]};return db[_0x4829('0x2d')][_0x4829('0x1f')](_0xb26a6f)[_0x4829('0x27')](function(_0x425642){_0x530763[_0x4829('0x1f')]=_0x425642;if(_0x3ab269['query'][_0x4829('0x40')]){_0x45f601[_0x4829('0x41')]=[{'all':!![]}];}return db[_0x4829('0x2d')]['findAll'](_0x45f601);})[_0x4829('0x27')](function(_0x4eb262){_0x530763[_0x4829('0x42')]=_0x4eb262;return _0x530763;})[_0x4829('0x27')](respondWithFilteredResult(_0xa55dbb,_0x45f601))[_0x4829('0x43')](handleError(_0xa55dbb,null));};exports[_0x4829('0x44')]=function(_0x3532ea,_0x3ccf3b){var _0x2ef8b7={'raw':![],'where':{'id':_0x3532ea[_0x4829('0x45')]['id']}},_0x3a11ac={};_0x3a11ac['model']=_[_0x4829('0x32')](db[_0x4829('0x2d')]['rawAttributes']);_0x3a11ac['query']=_['keys'](_0x3532ea['query']);_0x3a11ac[_0x4829('0x34')]=_[_0x4829('0x35')](_0x3a11ac['model'],_0x3a11ac[_0x4829('0x33')]);_0x2ef8b7[_0x4829('0x36')]=_['intersection'](_0x3a11ac['model'],qs[_0x4829('0x37')](_0x3532ea[_0x4829('0x33')][_0x4829('0x37')]));_0x2ef8b7[_0x4829('0x36')]=_0x2ef8b7['attributes']['length']?_0x2ef8b7['attributes']:_0x3a11ac[_0x4829('0x31')];if(_0x3532ea[_0x4829('0x33')][_0x4829('0x40')]){_0x2ef8b7[_0x4829('0x41')]=[{'all':!![]}];}_0x2ef8b7=_[_0x4829('0x3d')]({},_0x2ef8b7,_0x3532ea[_0x4829('0x3f')]);return db[_0x4829('0x2d')][_0x4829('0x46')](_0x2ef8b7)[_0x4829('0x27')](handleEntityNotFound(_0x3ccf3b,null))[_0x4829('0x27')](respondWithResult(_0x3ccf3b,null))['catch'](handleError(_0x3ccf3b,null));};exports[_0x4829('0x47')]=function(_0x1d80e1,_0x5cc4ba){return db[_0x4829('0x2d')][_0x4829('0x47')](_0x1d80e1[_0x4829('0x48')],{})['then'](respondWithResult(_0x5cc4ba,0xc9))[_0x4829('0x43')](handleError(_0x5cc4ba,null));};exports[_0x4829('0x26')]=function(_0x499f3b,_0x1e8e4b){if(_0x499f3b[_0x4829('0x48')]['id']){delete _0x499f3b['body']['id'];}return db[_0x4829('0x2d')][_0x4829('0x46')]({'where':{'id':_0x499f3b[_0x4829('0x45')]['id']}})['then'](handleEntityNotFound(_0x1e8e4b,null))[_0x4829('0x27')](saveUpdates(_0x499f3b[_0x4829('0x48')],null))['then'](respondWithResult(_0x1e8e4b,null))[_0x4829('0x43')](handleError(_0x1e8e4b,null));};exports[_0x4829('0x28')]=function(_0x2f9918,_0x5231aa){return db['DeskAccount'][_0x4829('0x46')]({'where':{'id':_0x2f9918[_0x4829('0x45')]['id']}})[_0x4829('0x27')](handleEntityNotFound(_0x5231aa,null))[_0x4829('0x27')](removeEntity(_0x5231aa,null))[_0x4829('0x43')](handleError(_0x5231aa,null));};exports['getConfigurations']=function(_0x293d5d,_0x2f30d5,_0x53f9f2){var _0x415d02={};var _0x1cf8cc={};var _0x238877;var _0x3071b5;return db[_0x4829('0x2d')][_0x4829('0x49')]({'where':{'id':_0x293d5d[_0x4829('0x45')]['id']}})[_0x4829('0x27')](handleEntityNotFound(_0x2f30d5,null))[_0x4829('0x27')](function(_0x32a8f2){if(_0x32a8f2){_0x238877=_0x32a8f2;_0x1cf8cc[_0x4829('0x31')]=_[_0x4829('0x32')](db['DeskConfiguration']['rawAttributes']);_0x1cf8cc[_0x4829('0x33')]=_[_0x4829('0x32')](_0x293d5d[_0x4829('0x33')]);_0x1cf8cc[_0x4829('0x34')]=_['intersection'](_0x1cf8cc[_0x4829('0x31')],_0x1cf8cc[_0x4829('0x33')]);_0x415d02[_0x4829('0x36')]=_['intersection'](_0x1cf8cc[_0x4829('0x31')],qs[_0x4829('0x37')](_0x293d5d[_0x4829('0x33')]['fields']));_0x415d02[_0x4829('0x36')]=_0x415d02['attributes'][_0x4829('0x38')]?_0x415d02['attributes']:_0x1cf8cc[_0x4829('0x31')];_0x415d02[_0x4829('0x4a')]=qs['sort'](_0x293d5d[_0x4829('0x33')][_0x4829('0x3a')]);_0x415d02[_0x4829('0x3b')]=qs[_0x4829('0x34')](_[_0x4829('0x4b')](_0x293d5d['query'],_0x1cf8cc[_0x4829('0x34')]));if(_0x293d5d[_0x4829('0x33')]['filter']){_0x415d02[_0x4829('0x3b')]=_[_0x4829('0x3d')](_0x415d02[_0x4829('0x3b')],{'$or':_[_0x4829('0x2c')](_0x415d02['attributes'],function(_0x39b20e){var _0x7c9360={};_0x7c9360[_0x39b20e]={'$like':'%'+_0x293d5d[_0x4829('0x33')][_0x4829('0x3c')]+'%'};return _0x7c9360;})});}_0x415d02=_['merge']({},_0x415d02,_0x293d5d[_0x4829('0x3f')]);return _0x238877[_0x4829('0x4c')](_0x415d02);}})[_0x4829('0x27')](function(_0x5c78e4){if(_0x5c78e4){_0x3071b5=_0x5c78e4['length'];if(!_0x293d5d['query']['hasOwnProperty'](_0x4829('0x39'))){_0x415d02['limit']=qs[_0x4829('0x20')](_0x293d5d[_0x4829('0x33')][_0x4829('0x20')]);_0x415d02[_0x4829('0x1d')]=qs['offset'](_0x293d5d[_0x4829('0x33')][_0x4829('0x1d')]);}return _0x238877[_0x4829('0x4c')](_0x415d02);}})[_0x4829('0x27')](function(_0x3766b8){if(_0x3766b8){return _0x3766b8?{'count':_0x3071b5,'rows':_0x3766b8}:null;}})['then'](respondWithResult(_0x2f30d5,null))[_0x4829('0x43')](handleError(_0x2f30d5,null));};exports[_0x4829('0x4d')]=function(_0x168912,_0xde6f5c,_0x486dc2){if(_0x168912[_0x4829('0x48')]['id']){delete _0x168912[_0x4829('0x48')]['id'];}return db[_0x4829('0x2d')][_0x4829('0x49')]({'where':{'id':_0x168912[_0x4829('0x45')]['id']}})[_0x4829('0x27')](handleEntityNotFound(_0xde6f5c,null))[_0x4829('0x27')](function(_0x3a6a86){if(_0x3a6a86){_0x168912[_0x4829('0x48')][_0x4829('0x4e')]=_0x3a6a86['id'];_0x168912[_0x4829('0x48')][_0x4829('0x4f')]=integrations[_0x4829('0x50')](_0x168912[_0x4829('0x48')][_0x4829('0x51')],_0x168912[_0x4829('0x48')][_0x4829('0x30')]);_0x168912[_0x4829('0x48')]['Descriptions']=integrations[_0x4829('0x52')](_0x168912[_0x4829('0x48')]['channel'],_0x168912[_0x4829('0x48')][_0x4829('0x30')]);return db[_0x4829('0x53')][_0x4829('0x47')](_0x168912[_0x4829('0x48')],{'include':[{'model':db['DeskField'],'as':'Subjects'},{'model':db[_0x4829('0x54')],'as':_0x4829('0x55')}]});}return null;})['then'](respondWithResult(_0xde6f5c,null))[_0x4829('0x43')](handleError(_0xde6f5c,null));};exports[_0x4829('0x56')]=function(_0x24301c,_0x442b1a,_0x5052f1){var _0x599298=[{'name':_0x4829('0x57'),'label':_0x4829('0x57'),'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 _0x21d26e='';return db[_0x4829('0x2d')][_0x4829('0x49')]({'where':{'id':_0x24301c[_0x4829('0x45')]['id']},'attributes':['id',_0x4829('0x58'),_0x4829('0x59'),_0x4829('0x5a'),_0x4829('0x5b'),_0x4829('0x5c'),_0x4829('0x5d'),_0x4829('0x5e'),'tokenSecret']})['then'](handleEntityNotFound(_0x442b1a,null))['then'](function(_0x38d05f){if(_0x38d05f){_0x21d26e=_0x38d05f[_0x4829('0x58')];var _0x4d4489=_0x21d26e[_0x4829('0x5f')](-0x1);if(_0x4d4489==='/'){_0x21d26e=_0x21d26e['substring'](0x0,_0x21d26e[_0x4829('0x60')](_0x4d4489));}var _0x5ecbd2={'method':_0x4829('0x61'),'uri':util[_0x4829('0x62')](_0x4829('0x63'),_0x21d26e),'headers':{'Content-Type':_0x4829('0x64'),'Accept':_0x4829('0x64')},'json':!![]};if(_0x38d05f[_0x4829('0x59')]===_0x4829('0x65')){_0x5ecbd2[_0x4829('0x66')][_0x4829('0x67')]=util[_0x4829('0x62')](_0x4829('0x68'),new Buffer(util[_0x4829('0x62')](_0x4829('0x69'),_0x38d05f[_0x4829('0x5a')],_0x38d05f[_0x4829('0x5b')]))[_0x4829('0x6a')](_0x4829('0x6b')));}return rp(_0x5ecbd2)[_0x4829('0x27')](function(_0x1a3e54){return _0x599298[_0x4829('0x6c')](_[_0x4829('0x2c')](_0x1a3e54['_embedded'][_0x4829('0x6d')],function(_0x22a786){return{'id':_0x22a786[_0x4829('0x2a')],'name':_0x22a786[_0x4829('0x2a')],'type':_0x22a786[_0x4829('0x30')],'active':_0x22a786[_0x4829('0x6e')],'label':_0x22a786['label'],'custom':!![]};}));});}})['then'](function(_0x59db90){return{'count':_0x59db90[_0x4829('0x38')],'rows':_0x59db90};})[_0x4829('0x27')](respondWithResult(_0x442b1a,null))[_0x4829('0x43')](function(_0x317c60){var _0x17e377=_0x24301c[_0x4829('0x33')][_0x4829('0x6f')]?0x1f4:_0x317c60[_0x4829('0x70')]||0x1f4;logger['error'](_0x4829('0x71'),_0x4829('0x56'),_0x17e377,JSON['stringify'](_0x317c60));delete _0x317c60[_0x4829('0x2a')];if(_0x17e377===0x191){_0x17e377=0x190;}_0x442b1a[_0x4829('0x1b')](_0x17e377)[_0x4829('0x72')](_0x24301c['query'][_0x4829('0x6f')]?{'message':_0x4829('0x73'),'statusCode':_0x317c60[_0x4829('0x70')]}:_0x317c60);});};
\ No newline at end of file
+var _0x6fdb=['consumerKey','token','tokenSecret','slice','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','toString','concat','_embedded','entries','active','label','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','DeskAccount','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','merge','map','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','getConfigurations','findOne','DeskConfiguration','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','DeskField','getFields','priority','authType','username','password'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x6fdb,0x169));var _0xb6fd=function(_0x25f74b,_0xb65786){_0x25f74b=_0x25f74b-0x0;var _0x4c248f=_0x6fdb[_0x25f74b];return _0x4c248f;};'use strict';var emlformat=require(_0xb6fd('0x0'));var rimraf=require(_0xb6fd('0x1'));var zipdir=require(_0xb6fd('0x2'));var jsonpatch=require(_0xb6fd('0x3'));var rp=require(_0xb6fd('0x4'));var moment=require(_0xb6fd('0x5'));var BPromise=require(_0xb6fd('0x6'));var Mustache=require(_0xb6fd('0x7'));var util=require('util');var path=require(_0xb6fd('0x8'));var sox=require('sox');var csv=require(_0xb6fd('0x9'));var ejs=require(_0xb6fd('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb6fd('0xb'));var deskjs=require(_0xb6fd('0xc'));var toCsv=require(_0xb6fd('0x9'));var querystring=require(_0xb6fd('0xd'));var Papa=require(_0xb6fd('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb6fd('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb6fd('0x10'));var utils=require(_0xb6fd('0x11'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb6fd('0x12'))['db'];var integrations=require(_0xb6fd('0x13'));function respondWithStatusCode(_0x18a229,_0x54f622){_0x54f622=_0x54f622||0xcc;return function(_0x3b4b8b){if(_0x3b4b8b){return _0x18a229[_0xb6fd('0x14')](_0x54f622);}return _0x18a229[_0xb6fd('0x15')](_0x54f622)[_0xb6fd('0x16')]();};}function respondWithResult(_0x32c913,_0x949d11){_0x949d11=_0x949d11||0xc8;return function(_0x20407e){if(_0x20407e){return _0x32c913[_0xb6fd('0x15')](_0x949d11)[_0xb6fd('0x17')](_0x20407e);}};}function respondWithFilteredResult(_0xfec877,_0x40a8fa){return function(_0x1f67c4){if(_0x1f67c4){var _0x381953=typeof _0x40a8fa[_0xb6fd('0x18')]===_0xb6fd('0x19')&&typeof _0x40a8fa[_0xb6fd('0x1a')]===_0xb6fd('0x19');var _0x485943=_0x1f67c4[_0xb6fd('0x1b')];var _0x2ac31e=_0x381953?0x0:_0x40a8fa[_0xb6fd('0x18')];var _0x5c003a=_0x381953?_0x1f67c4[_0xb6fd('0x1b')]:_0x40a8fa[_0xb6fd('0x18')]+_0x40a8fa['limit'];var _0x295406;if(_0x5c003a>=_0x485943){_0x5c003a=_0x485943;_0x295406=0xc8;}else{_0x295406=0xce;}_0xfec877[_0xb6fd('0x15')](_0x295406);return _0xfec877['set'](_0xb6fd('0x1c'),_0x2ac31e+'-'+_0x5c003a+'/'+_0x485943)['json'](_0x1f67c4);}return null;};}function patchUpdates(_0x1545e4){return function(_0x5b601c){try{jsonpatch[_0xb6fd('0x1d')](_0x5b601c,_0x1545e4,!![]);}catch(_0xcc185a){return BPromise[_0xb6fd('0x1e')](_0xcc185a);}return _0x5b601c[_0xb6fd('0x1f')]();};}function saveUpdates(_0x2038b4,_0x406535){return function(_0x9c6e8e){if(_0x9c6e8e){return _0x9c6e8e[_0xb6fd('0x20')](_0x2038b4)[_0xb6fd('0x21')](function(_0x41b363){return _0x41b363;});}return null;};}function removeEntity(_0x9a5275,_0x521566){return function(_0x4af77b){if(_0x4af77b){return _0x4af77b[_0xb6fd('0x22')]()['then'](function(){_0x9a5275[_0xb6fd('0x15')](0xcc)[_0xb6fd('0x16')]();});}};}function handleEntityNotFound(_0x54a2c2,_0x5caf73){return function(_0x5805b4){if(!_0x5805b4){_0x54a2c2[_0xb6fd('0x14')](0x194);}return _0x5805b4;};}function handleError(_0x281f97,_0x128325){_0x128325=_0x128325||0x1f4;return function(_0x1fc09c){logger['error'](_0x1fc09c[_0xb6fd('0x23')]);if(_0x1fc09c[_0xb6fd('0x24')]){delete _0x1fc09c['name'];}_0x281f97[_0xb6fd('0x15')](_0x128325)[_0xb6fd('0x25')](_0x1fc09c);};}exports[_0xb6fd('0x26')]=function(_0x3a56ac,_0x47b8dd){var _0x473dac={},_0x775e1e={},_0x2de68f={'count':0x0,'rows':[]};var _0x564e50=_['map'](db[_0xb6fd('0x27')][_0xb6fd('0x28')],function(_0x1962dd){return{'name':_0x1962dd[_0xb6fd('0x29')],'type':_0x1962dd['type'][_0xb6fd('0x2a')]};});_0x775e1e[_0xb6fd('0x2b')]=_['map'](_0x564e50,_0xb6fd('0x24'));_0x775e1e[_0xb6fd('0x2c')]=_[_0xb6fd('0x2d')](_0x3a56ac['query']);_0x775e1e[_0xb6fd('0x2e')]=_['intersection'](_0x775e1e['model'],_0x775e1e[_0xb6fd('0x2c')]);_0x473dac[_0xb6fd('0x2f')]=_[_0xb6fd('0x30')](_0x775e1e[_0xb6fd('0x2b')],qs[_0xb6fd('0x31')](_0x3a56ac[_0xb6fd('0x2c')][_0xb6fd('0x31')]));_0x473dac[_0xb6fd('0x2f')]=_0x473dac[_0xb6fd('0x2f')]['length']?_0x473dac['attributes']:_0x775e1e[_0xb6fd('0x2b')];if(!_0x3a56ac[_0xb6fd('0x2c')][_0xb6fd('0x32')]('nolimit')){_0x473dac[_0xb6fd('0x1a')]=qs[_0xb6fd('0x1a')](_0x3a56ac[_0xb6fd('0x2c')][_0xb6fd('0x1a')]);_0x473dac[_0xb6fd('0x18')]=qs[_0xb6fd('0x18')](_0x3a56ac['query'][_0xb6fd('0x18')]);}_0x473dac[_0xb6fd('0x33')]=qs[_0xb6fd('0x34')](_0x3a56ac[_0xb6fd('0x2c')][_0xb6fd('0x34')]);_0x473dac[_0xb6fd('0x35')]=qs['filters'](_[_0xb6fd('0x36')](_0x3a56ac[_0xb6fd('0x2c')],_0x775e1e[_0xb6fd('0x2e')]),_0x564e50);if(_0x3a56ac[_0xb6fd('0x2c')][_0xb6fd('0x37')]){_0x473dac['where']=_[_0xb6fd('0x38')](_0x473dac[_0xb6fd('0x35')],{'$or':_[_0xb6fd('0x39')](_0x564e50,function(_0x2a5fb6){if(_0x2a5fb6[_0xb6fd('0x3a')]!==_0xb6fd('0x3b')){var _0x18f569={};_0x18f569[_0x2a5fb6[_0xb6fd('0x24')]]={'$like':'%'+_0x3a56ac['query'][_0xb6fd('0x37')]+'%'};return _0x18f569;}})});}_0x473dac=_['merge']({},_0x473dac,_0x3a56ac[_0xb6fd('0x3c')]);var _0x5af2dc={'where':_0x473dac[_0xb6fd('0x35')]};return db[_0xb6fd('0x27')]['count'](_0x5af2dc)[_0xb6fd('0x21')](function(_0x52108d){_0x2de68f[_0xb6fd('0x1b')]=_0x52108d;if(_0x3a56ac[_0xb6fd('0x2c')][_0xb6fd('0x3d')]){_0x473dac[_0xb6fd('0x3e')]=[{'all':!![]}];}return db[_0xb6fd('0x27')][_0xb6fd('0x3f')](_0x473dac);})['then'](function(_0x52c99e){_0x2de68f[_0xb6fd('0x40')]=_0x52c99e;return _0x2de68f;})[_0xb6fd('0x21')](respondWithFilteredResult(_0x47b8dd,_0x473dac))[_0xb6fd('0x41')](handleError(_0x47b8dd,null));};exports[_0xb6fd('0x42')]=function(_0x3cccdb,_0xfa713d){var _0x30c87b={'raw':![],'where':{'id':_0x3cccdb[_0xb6fd('0x43')]['id']}},_0xaeb5dd={};_0xaeb5dd[_0xb6fd('0x2b')]=_['keys'](db[_0xb6fd('0x27')][_0xb6fd('0x28')]);_0xaeb5dd[_0xb6fd('0x2c')]=_[_0xb6fd('0x2d')](_0x3cccdb[_0xb6fd('0x2c')]);_0xaeb5dd['filters']=_[_0xb6fd('0x30')](_0xaeb5dd[_0xb6fd('0x2b')],_0xaeb5dd[_0xb6fd('0x2c')]);_0x30c87b['attributes']=_[_0xb6fd('0x30')](_0xaeb5dd[_0xb6fd('0x2b')],qs[_0xb6fd('0x31')](_0x3cccdb[_0xb6fd('0x2c')][_0xb6fd('0x31')]));_0x30c87b['attributes']=_0x30c87b[_0xb6fd('0x2f')][_0xb6fd('0x44')]?_0x30c87b[_0xb6fd('0x2f')]:_0xaeb5dd[_0xb6fd('0x2b')];if(_0x3cccdb['query'][_0xb6fd('0x3d')]){_0x30c87b['include']=[{'all':!![]}];}_0x30c87b=_[_0xb6fd('0x38')]({},_0x30c87b,_0x3cccdb[_0xb6fd('0x3c')]);return db[_0xb6fd('0x27')][_0xb6fd('0x45')](_0x30c87b)[_0xb6fd('0x21')](handleEntityNotFound(_0xfa713d,null))[_0xb6fd('0x21')](respondWithResult(_0xfa713d,null))[_0xb6fd('0x41')](handleError(_0xfa713d,null));};exports[_0xb6fd('0x46')]=function(_0x284e3e,_0x3e55d5){return db[_0xb6fd('0x27')][_0xb6fd('0x46')](_0x284e3e['body'],{})[_0xb6fd('0x21')](respondWithResult(_0x3e55d5,0xc9))[_0xb6fd('0x41')](handleError(_0x3e55d5,null));};exports[_0xb6fd('0x20')]=function(_0x57c548,_0x2fdc9c){if(_0x57c548['body']['id']){delete _0x57c548[_0xb6fd('0x47')]['id'];}return db[_0xb6fd('0x27')][_0xb6fd('0x45')]({'where':{'id':_0x57c548['params']['id']}})[_0xb6fd('0x21')](handleEntityNotFound(_0x2fdc9c,null))['then'](saveUpdates(_0x57c548[_0xb6fd('0x47')],null))[_0xb6fd('0x21')](respondWithResult(_0x2fdc9c,null))[_0xb6fd('0x41')](handleError(_0x2fdc9c,null));};exports[_0xb6fd('0x22')]=function(_0x3cc8f4,_0x363940){return db[_0xb6fd('0x27')][_0xb6fd('0x45')]({'where':{'id':_0x3cc8f4['params']['id']}})[_0xb6fd('0x21')](handleEntityNotFound(_0x363940,null))[_0xb6fd('0x21')](removeEntity(_0x363940,null))[_0xb6fd('0x41')](handleError(_0x363940,null));};exports[_0xb6fd('0x48')]=function(_0x40504d,_0xe9f407,_0x50b13d){var _0x38d6e1={};var _0x44f1f2={};var _0x3c5317;var _0x37116d;return db[_0xb6fd('0x27')][_0xb6fd('0x49')]({'where':{'id':_0x40504d[_0xb6fd('0x43')]['id']}})[_0xb6fd('0x21')](handleEntityNotFound(_0xe9f407,null))[_0xb6fd('0x21')](function(_0x46eff7){if(_0x46eff7){_0x3c5317=_0x46eff7;_0x44f1f2[_0xb6fd('0x2b')]=_[_0xb6fd('0x2d')](db[_0xb6fd('0x4a')][_0xb6fd('0x28')]);_0x44f1f2['query']=_['keys'](_0x40504d[_0xb6fd('0x2c')]);_0x44f1f2['filters']=_[_0xb6fd('0x30')](_0x44f1f2[_0xb6fd('0x2b')],_0x44f1f2[_0xb6fd('0x2c')]);_0x38d6e1['attributes']=_['intersection'](_0x44f1f2[_0xb6fd('0x2b')],qs[_0xb6fd('0x31')](_0x40504d[_0xb6fd('0x2c')][_0xb6fd('0x31')]));_0x38d6e1[_0xb6fd('0x2f')]=_0x38d6e1['attributes'][_0xb6fd('0x44')]?_0x38d6e1[_0xb6fd('0x2f')]:_0x44f1f2[_0xb6fd('0x2b')];_0x38d6e1['order']=qs[_0xb6fd('0x34')](_0x40504d[_0xb6fd('0x2c')][_0xb6fd('0x34')]);_0x38d6e1[_0xb6fd('0x35')]=qs[_0xb6fd('0x2e')](_[_0xb6fd('0x36')](_0x40504d[_0xb6fd('0x2c')],_0x44f1f2[_0xb6fd('0x2e')]));if(_0x40504d[_0xb6fd('0x2c')][_0xb6fd('0x37')]){_0x38d6e1[_0xb6fd('0x35')]=_[_0xb6fd('0x38')](_0x38d6e1[_0xb6fd('0x35')],{'$or':_[_0xb6fd('0x39')](_0x38d6e1[_0xb6fd('0x2f')],function(_0x47f930){var _0x1ce42f={};_0x1ce42f[_0x47f930]={'$like':'%'+_0x40504d[_0xb6fd('0x2c')]['filter']+'%'};return _0x1ce42f;})});}_0x38d6e1=_[_0xb6fd('0x38')]({},_0x38d6e1,_0x40504d[_0xb6fd('0x3c')]);return _0x3c5317['getConfigurations'](_0x38d6e1);}})['then'](function(_0x411874){if(_0x411874){_0x37116d=_0x411874[_0xb6fd('0x44')];if(!_0x40504d['query'][_0xb6fd('0x32')]('nolimit')){_0x38d6e1[_0xb6fd('0x1a')]=qs['limit'](_0x40504d['query']['limit']);_0x38d6e1[_0xb6fd('0x18')]=qs[_0xb6fd('0x18')](_0x40504d[_0xb6fd('0x2c')][_0xb6fd('0x18')]);}return _0x3c5317[_0xb6fd('0x48')](_0x38d6e1);}})[_0xb6fd('0x21')](function(_0xecdef2){if(_0xecdef2){return _0xecdef2?{'count':_0x37116d,'rows':_0xecdef2}:null;}})[_0xb6fd('0x21')](respondWithResult(_0xe9f407,null))[_0xb6fd('0x41')](handleError(_0xe9f407,null));};exports[_0xb6fd('0x4b')]=function(_0x21c193,_0x2c8ddc,_0x4d4d6b){if(_0x21c193[_0xb6fd('0x47')]['id']){delete _0x21c193[_0xb6fd('0x47')]['id'];}return db[_0xb6fd('0x27')][_0xb6fd('0x49')]({'where':{'id':_0x21c193[_0xb6fd('0x43')]['id']}})['then'](handleEntityNotFound(_0x2c8ddc,null))['then'](function(_0x483ce4){if(_0x483ce4){_0x21c193[_0xb6fd('0x47')][_0xb6fd('0x4c')]=_0x483ce4['id'];_0x21c193[_0xb6fd('0x47')][_0xb6fd('0x4d')]=integrations['getSubjects'](_0x21c193[_0xb6fd('0x47')][_0xb6fd('0x4e')],_0x21c193['body'][_0xb6fd('0x3a')]);_0x21c193[_0xb6fd('0x47')][_0xb6fd('0x4f')]=integrations[_0xb6fd('0x50')](_0x21c193[_0xb6fd('0x47')][_0xb6fd('0x4e')],_0x21c193[_0xb6fd('0x47')][_0xb6fd('0x3a')]);return db[_0xb6fd('0x4a')][_0xb6fd('0x46')](_0x21c193['body'],{'include':[{'model':db[_0xb6fd('0x51')],'as':_0xb6fd('0x4d')},{'model':db[_0xb6fd('0x51')],'as':_0xb6fd('0x4f')}]});}return null;})['then'](respondWithResult(_0x2c8ddc,null))[_0xb6fd('0x41')](handleError(_0x2c8ddc,null));};exports[_0xb6fd('0x52')]=function(_0x4b4dcb,_0x3ae887,_0x1a63b7){var _0x411806=[{'name':_0xb6fd('0x53'),'label':_0xb6fd('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 _0x2b47bf='';return db[_0xb6fd('0x27')][_0xb6fd('0x49')]({'where':{'id':_0x4b4dcb[_0xb6fd('0x43')]['id']},'attributes':['id','remoteUri',_0xb6fd('0x54'),_0xb6fd('0x55'),_0xb6fd('0x56'),_0xb6fd('0x57'),'consumerSecret',_0xb6fd('0x58'),_0xb6fd('0x59')]})[_0xb6fd('0x21')](handleEntityNotFound(_0x3ae887,null))[_0xb6fd('0x21')](function(_0x3ae4de){if(_0x3ae4de){_0x2b47bf=_0x3ae4de['remoteUri'];var _0x41fca2=_0x2b47bf[_0xb6fd('0x5a')](-0x1);if(_0x41fca2==='/'){_0x2b47bf=_0x2b47bf[_0xb6fd('0x5b')](0x0,_0x2b47bf[_0xb6fd('0x5c')](_0x41fca2));}var _0x508ac8={'method':_0xb6fd('0x5d'),'uri':util[_0xb6fd('0x5e')](_0xb6fd('0x5f'),_0x2b47bf),'headers':{'Content-Type':'application/json','Accept':_0xb6fd('0x60')},'json':!![]};if(_0x3ae4de[_0xb6fd('0x54')]===_0xb6fd('0x61')){_0x508ac8[_0xb6fd('0x62')][_0xb6fd('0x63')]=util[_0xb6fd('0x5e')](_0xb6fd('0x64'),new Buffer(util['format']('%s:%s',_0x3ae4de[_0xb6fd('0x55')],_0x3ae4de[_0xb6fd('0x56')]))[_0xb6fd('0x65')]('base64'));}return rp(_0x508ac8)['then'](function(_0x192f80){return _0x411806[_0xb6fd('0x66')](_[_0xb6fd('0x39')](_0x192f80[_0xb6fd('0x67')][_0xb6fd('0x68')],function(_0x4af81a){return{'id':_0x4af81a[_0xb6fd('0x24')],'name':_0x4af81a[_0xb6fd('0x24')],'type':_0x4af81a[_0xb6fd('0x3a')],'active':_0x4af81a[_0xb6fd('0x69')],'label':_0x4af81a[_0xb6fd('0x6a')],'custom':!![]};}));});}})[_0xb6fd('0x21')](function(_0x111c93){return{'count':_0x111c93[_0xb6fd('0x44')],'rows':_0x111c93};})['then'](respondWithResult(_0x3ae887,null))['catch'](function(_0x28b2b1){var _0x1f47e5=_0x4b4dcb[_0xb6fd('0x2c')][_0xb6fd('0x6b')]?0x1f4:_0x28b2b1[_0xb6fd('0x6c')]||0x1f4;logger[_0xb6fd('0x6d')](_0xb6fd('0x6e'),_0xb6fd('0x52'),_0x1f47e5,JSON['stringify'](_0x28b2b1));delete _0x28b2b1[_0xb6fd('0x24')];if(_0x1f47e5===0x191){_0x1f47e5=0x190;}_0x3ae887[_0xb6fd('0x15')](_0x1f47e5)['send'](_0x4b4dcb[_0xb6fd('0x2c')][_0xb6fd('0x6b')]?{'message':_0xb6fd('0x6f'),'statusCode':_0x28b2b1[_0xb6fd('0x6c')]}:_0x28b2b1);});};
\ No newline at end of file
index a5e6cd3..515f426 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dee=['request-promise','path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','exports','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','moment','bluebird'];(function(_0x1d0cd5,_0x3e0ba6){var _0x1c4592=function(_0x43b7cd){while(--_0x43b7cd){_0x1d0cd5['push'](_0x1d0cd5['shift']());}};_0x1c4592(++_0x3e0ba6);}(_0x6dee,0x64));var _0xe6de=function(_0x33ecf1,_0x3c75b7){_0x33ecf1=_0x33ecf1-0x0;var _0x2d8779=_0x6dee[_0x33ecf1];return _0x2d8779;};'use strict';var _=require(_0xe6de('0x0'));var util=require(_0xe6de('0x1'));var logger=require(_0xe6de('0x2'))('api');var moment=require(_0xe6de('0x3'));var BPromise=require(_0xe6de('0x4'));var rp=require(_0xe6de('0x5'));var fs=require('fs');var path=require(_0xe6de('0x6'));var rimraf=require(_0xe6de('0x7'));var config=require(_0xe6de('0x8'));var attributes=require(_0xe6de('0x9'));var integrations=require(_0xe6de('0xa'));module[_0xe6de('0xb')]=function(_0x4ad8bc,_0x16972a){return _0x4ad8bc[_0xe6de('0xc')](_0xe6de('0xd'),attributes,{'tableName':_0xe6de('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a8b=['path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','exports','DeskAccount','int_desk_accounts','lodash','api','moment','bluebird'];(function(_0x180b07,_0x56f55b){var _0x4286cc=function(_0x4d782c){while(--_0x4d782c){_0x180b07['push'](_0x180b07['shift']());}};_0x4286cc(++_0x56f55b);}(_0x9a8b,0x104));var _0xb9a8=function(_0x503a07,_0x2b2606){_0x503a07=_0x503a07-0x0;var _0x3106d4=_0x9a8b[_0x503a07];return _0x3106d4;};'use strict';var _=require(_0xb9a8('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb9a8('0x1'));var moment=require(_0xb9a8('0x2'));var BPromise=require(_0xb9a8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb9a8('0x4'));var rimraf=require(_0xb9a8('0x5'));var config=require(_0xb9a8('0x6'));var attributes=require(_0xb9a8('0x7'));var integrations=require(_0xb9a8('0x8'));module[_0xb9a8('0x9')]=function(_0x4ec36a,_0x5334e0){return _0x4ec36a['define'](_0xb9a8('0xa'),attributes,{'tableName':_0xb9a8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1031327..6bfa3b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd792=['raw','debug','ShowDeskAccount','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','then','info','request\x20sent','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','DeskAccount,\x20%s,\x20%s','message','result','catch','DeskAccount','findAll','options','where','attributes','include','map','model','GetDeskAccount','find'];(function(_0x280e24,_0x3cfd99){var _0x5b6dd3=function(_0x53b75c){while(--_0x53b75c){_0x280e24['push'](_0x280e24['shift']());}};_0x5b6dd3(++_0x3cfd99);}(_0xd792,0x103));var _0x2d79=function(_0x21b134,_0x20cdaf){_0x21b134=_0x21b134-0x0;var _0x582a08=_0xd792[_0x21b134];return _0x582a08;};'use strict';var _=require(_0x2d79('0x0'));var util=require(_0x2d79('0x1'));var moment=require('moment');var BPromise=require(_0x2d79('0x2'));var rs=require(_0x2d79('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2d79('0x4'))['db'];var utils=require(_0x2d79('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x2d79('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x2d79('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x757453,_0x26aff9,_0x1c8c17){return new BPromise(function(_0x3e6596,_0x4c9de6){return client['request'](_0x757453,_0x1c8c17)[_0x2d79('0x8')](function(_0x33ecdb){logger[_0x2d79('0x9')]('DeskAccount,\x20%s,\x20%s',_0x26aff9,_0x2d79('0xa'));logger['debug'](_0x2d79('0xb'),_0x26aff9,_0x2d79('0xa'),JSON[_0x2d79('0xc')](_0x33ecdb));if(_0x33ecdb[_0x2d79('0xd')]){if(_0x33ecdb[_0x2d79('0xd')][_0x2d79('0xe')]===0x1f4){logger[_0x2d79('0xd')](_0x2d79('0xf'),_0x26aff9,_0x33ecdb[_0x2d79('0xd')]['message']);return _0x4c9de6(_0x33ecdb[_0x2d79('0xd')]['message']);}logger[_0x2d79('0xd')](_0x2d79('0xf'),_0x26aff9,_0x33ecdb['error'][_0x2d79('0x10')]);return _0x3e6596(_0x33ecdb['error'][_0x2d79('0x10')]);}else{logger[_0x2d79('0x9')]('DeskAccount,\x20%s,\x20%s',_0x26aff9,_0x2d79('0xa'));_0x3e6596(_0x33ecdb[_0x2d79('0x11')][_0x2d79('0x10')]);}})[_0x2d79('0x12')](function(_0x53d226){logger[_0x2d79('0xd')](_0x2d79('0xf'),_0x26aff9,_0x53d226);_0x4c9de6(_0x53d226);});});}exports['GetDeskAccount']=function(_0x24a5cd){var _0x3505ad=this;return new Promise(function(_0x26688a,_0x32fd86){return db[_0x2d79('0x13')][_0x2d79('0x14')]({'raw':_0x24a5cd['options']?_0x24a5cd[_0x2d79('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x24a5cd['options']?_0x24a5cd['options'][_0x2d79('0x16')]||null:null,'attributes':_0x24a5cd[_0x2d79('0x15')]?_0x24a5cd[_0x2d79('0x15')][_0x2d79('0x17')]||null:null,'limit':_0x24a5cd[_0x2d79('0x15')]?_0x24a5cd[_0x2d79('0x15')]['limit']||null:null,'include':_0x24a5cd[_0x2d79('0x15')]?_0x24a5cd['options'][_0x2d79('0x18')]?_[_0x2d79('0x19')](_0x24a5cd[_0x2d79('0x15')][_0x2d79('0x18')],function(_0x311167){return{'model':db[_0x311167['model']],'as':_0x311167['as'],'attributes':_0x311167['attributes'],'include':_0x311167[_0x2d79('0x18')]?_[_0x2d79('0x19')](_0x311167['include'],function(_0xce3634){return{'model':db[_0xce3634['model']],'as':_0xce3634['as'],'attributes':_0xce3634[_0x2d79('0x17')],'include':_0xce3634[_0x2d79('0x18')]?_[_0x2d79('0x19')](_0xce3634[_0x2d79('0x18')],function(_0x5e5bea){return{'model':db[_0x5e5bea[_0x2d79('0x1a')]],'as':_0x5e5bea['as'],'attributes':_0x5e5bea['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5b2a39){logger[_0x2d79('0x9')](_0x2d79('0x1b'),_0x24a5cd);logger['debug'](_0x2d79('0x1b'),_0x24a5cd,JSON[_0x2d79('0xc')](_0x5b2a39));_0x26688a(_0x5b2a39);})[_0x2d79('0x12')](function(_0x2e65e2){logger[_0x2d79('0xd')](_0x2d79('0x1b'),_0x2e65e2[_0x2d79('0x10')],_0x24a5cd);_0x32fd86(_0x3505ad[_0x2d79('0xd')](0x1f4,_0x2e65e2[_0x2d79('0x10')]));});});};exports['ShowDeskAccount']=function(_0x5e3d1c){var _0xf92e13=this;return new Promise(function(_0x22abf3,_0x10acbe){return db[_0x2d79('0x13')][_0x2d79('0x1c')]({'raw':_0x5e3d1c[_0x2d79('0x15')]?_0x5e3d1c['options'][_0x2d79('0x1d')]===undefined?!![]:![]:!![],'where':_0x5e3d1c[_0x2d79('0x15')]?_0x5e3d1c['options'][_0x2d79('0x16')]||null:null,'attributes':_0x5e3d1c[_0x2d79('0x15')]?_0x5e3d1c[_0x2d79('0x15')][_0x2d79('0x17')]||null:null,'include':_0x5e3d1c[_0x2d79('0x15')]?_0x5e3d1c[_0x2d79('0x15')][_0x2d79('0x18')]?_[_0x2d79('0x19')](_0x5e3d1c[_0x2d79('0x15')]['include'],function(_0x15f96d){return{'model':db[_0x15f96d[_0x2d79('0x1a')]],'as':_0x15f96d['as'],'attributes':_0x15f96d['attributes'],'include':_0x15f96d[_0x2d79('0x18')]?_['map'](_0x15f96d[_0x2d79('0x18')],function(_0x4ce824){return{'model':db[_0x4ce824[_0x2d79('0x1a')]],'as':_0x4ce824['as'],'attributes':_0x4ce824['attributes'],'include':_0x4ce824[_0x2d79('0x18')]?_['map'](_0x4ce824['include'],function(_0x3ccc7e){return{'model':db[_0x3ccc7e['model']],'as':_0x3ccc7e['as'],'attributes':_0x3ccc7e[_0x2d79('0x17')]};}):[]};}):[]};}):[]:[]})[_0x2d79('0x8')](function(_0x1676fc){logger[_0x2d79('0x9')]('ShowDeskAccount',_0x5e3d1c);logger[_0x2d79('0x1e')](_0x2d79('0x1f'),_0x5e3d1c,JSON[_0x2d79('0xc')](_0x1676fc));_0x22abf3(_0x1676fc);})['catch'](function(_0x867062){logger[_0x2d79('0xd')]('ShowDeskAccount',_0x867062[_0x2d79('0x10')],_0x5e3d1c);_0x10acbe(_0xf92e13['error'](0x1f4,_0x867062[_0x2d79('0x10')]));});});};
\ No newline at end of file
+var _0x36a7=['message','result','catch','DeskAccount','findAll','options','raw','attributes','limit','include','map','model','debug','GetDeskAccount','ShowDeskAccount','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','info','request\x20sent','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','DeskAccount,\x20%s,\x20%s'];(function(_0xa8dc2d,_0x22d293){var _0x4b9cdb=function(_0x2d0c5b){while(--_0x2d0c5b){_0xa8dc2d['push'](_0xa8dc2d['shift']());}};_0x4b9cdb(++_0x22d293);}(_0x36a7,0x1bc));var _0x736a=function(_0x5dbc76,_0x306c11){_0x5dbc76=_0x5dbc76-0x0;var _0x1d9539=_0x36a7[_0x5dbc76];return _0x1d9539;};'use strict';var _=require('lodash');var util=require(_0x736a('0x0'));var moment=require(_0x736a('0x1'));var BPromise=require('bluebird');var rs=require(_0x736a('0x2'));var fs=require('fs');var Redis=require(_0x736a('0x3'));var db=require(_0x736a('0x4'))['db'];var utils=require(_0x736a('0x5'));var logger=require('../../config/logger')(_0x736a('0x6'));var config=require('../../config/environment');var jayson=require(_0x736a('0x7'));var client=jayson[_0x736a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x436c5e,_0x49ca46,_0x829048){return new BPromise(function(_0x48709c,_0x27f886){return client[_0x736a('0x9')](_0x436c5e,_0x829048)[_0x736a('0xa')](function(_0x119d07){logger[_0x736a('0xb')]('DeskAccount,\x20%s,\x20%s',_0x49ca46,_0x736a('0xc'));logger['debug'](_0x736a('0xd'),_0x49ca46,_0x736a('0xc'),JSON[_0x736a('0xe')](_0x119d07));if(_0x119d07[_0x736a('0xf')]){if(_0x119d07[_0x736a('0xf')][_0x736a('0x10')]===0x1f4){logger[_0x736a('0xf')](_0x736a('0x11'),_0x49ca46,_0x119d07[_0x736a('0xf')]['message']);return _0x27f886(_0x119d07[_0x736a('0xf')][_0x736a('0x12')]);}logger['error']('DeskAccount,\x20%s,\x20%s',_0x49ca46,_0x119d07[_0x736a('0xf')]['message']);return _0x48709c(_0x119d07[_0x736a('0xf')][_0x736a('0x12')]);}else{logger['info'](_0x736a('0x11'),_0x49ca46,_0x736a('0xc'));_0x48709c(_0x119d07[_0x736a('0x13')]['message']);}})[_0x736a('0x14')](function(_0x495ce4){logger[_0x736a('0xf')](_0x736a('0x11'),_0x49ca46,_0x495ce4);_0x27f886(_0x495ce4);});});}exports['GetDeskAccount']=function(_0x4964b3){var _0x52d957=this;return new Promise(function(_0x2b0662,_0x42a4bf){return db[_0x736a('0x15')][_0x736a('0x16')]({'raw':_0x4964b3['options']?_0x4964b3[_0x736a('0x17')][_0x736a('0x18')]===undefined?!![]:![]:!![],'where':_0x4964b3[_0x736a('0x17')]?_0x4964b3[_0x736a('0x17')]['where']||null:null,'attributes':_0x4964b3[_0x736a('0x17')]?_0x4964b3[_0x736a('0x17')][_0x736a('0x19')]||null:null,'limit':_0x4964b3[_0x736a('0x17')]?_0x4964b3[_0x736a('0x17')][_0x736a('0x1a')]||null:null,'include':_0x4964b3[_0x736a('0x17')]?_0x4964b3[_0x736a('0x17')][_0x736a('0x1b')]?_[_0x736a('0x1c')](_0x4964b3['options'][_0x736a('0x1b')],function(_0x170978){return{'model':db[_0x170978[_0x736a('0x1d')]],'as':_0x170978['as'],'attributes':_0x170978[_0x736a('0x19')],'include':_0x170978[_0x736a('0x1b')]?_[_0x736a('0x1c')](_0x170978[_0x736a('0x1b')],function(_0x171f81){return{'model':db[_0x171f81['model']],'as':_0x171f81['as'],'attributes':_0x171f81[_0x736a('0x19')],'include':_0x171f81['include']?_[_0x736a('0x1c')](_0x171f81['include'],function(_0x396614){return{'model':db[_0x396614['model']],'as':_0x396614['as'],'attributes':_0x396614[_0x736a('0x19')]};}):[]};}):[]};}):[]:[]})[_0x736a('0xa')](function(_0x3a6229){logger[_0x736a('0xb')]('GetDeskAccount',_0x4964b3);logger[_0x736a('0x1e')](_0x736a('0x1f'),_0x4964b3,JSON[_0x736a('0xe')](_0x3a6229));_0x2b0662(_0x3a6229);})['catch'](function(_0x2a230c){logger[_0x736a('0xf')]('GetDeskAccount',_0x2a230c[_0x736a('0x12')],_0x4964b3);_0x42a4bf(_0x52d957[_0x736a('0xf')](0x1f4,_0x2a230c['message']));});});};exports[_0x736a('0x20')]=function(_0x350aa8){var _0x4e6a84=this;return new Promise(function(_0x593afa,_0x56ba96){return db['DeskAccount']['find']({'raw':_0x350aa8[_0x736a('0x17')]?_0x350aa8[_0x736a('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x350aa8['options']?_0x350aa8['options']['where']||null:null,'attributes':_0x350aa8[_0x736a('0x17')]?_0x350aa8[_0x736a('0x17')][_0x736a('0x19')]||null:null,'include':_0x350aa8[_0x736a('0x17')]?_0x350aa8[_0x736a('0x17')]['include']?_[_0x736a('0x1c')](_0x350aa8[_0x736a('0x17')][_0x736a('0x1b')],function(_0x14db39){return{'model':db[_0x14db39[_0x736a('0x1d')]],'as':_0x14db39['as'],'attributes':_0x14db39[_0x736a('0x19')],'include':_0x14db39[_0x736a('0x1b')]?_[_0x736a('0x1c')](_0x14db39['include'],function(_0x1f2b6d){return{'model':db[_0x1f2b6d['model']],'as':_0x1f2b6d['as'],'attributes':_0x1f2b6d[_0x736a('0x19')],'include':_0x1f2b6d[_0x736a('0x1b')]?_[_0x736a('0x1c')](_0x1f2b6d['include'],function(_0x5b9d0f){return{'model':db[_0x5b9d0f[_0x736a('0x1d')]],'as':_0x5b9d0f['as'],'attributes':_0x5b9d0f[_0x736a('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1c3042){logger[_0x736a('0xb')](_0x736a('0x20'),_0x350aa8);logger[_0x736a('0x1e')](_0x736a('0x20'),_0x350aa8,JSON[_0x736a('0xe')](_0x1c3042));_0x593afa(_0x1c3042);})['catch'](function(_0x4ab781){logger[_0x736a('0xf')](_0x736a('0x20'),_0x4ab781[_0x736a('0x12')],_0x350aa8);_0x56ba96(_0x4e6a84[_0x736a('0xf')](0x1f4,_0x4ab781[_0x736a('0x12')]));});});};
\ No newline at end of file
index 4f29b98..16f2ebb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','getSubjects','/:id/descriptions','/:id/tags','post','setTags','put','update'];(function(_0x196068,_0x49608c){var _0x175b6c=function(_0xdbad55){while(--_0xdbad55){_0x196068['push'](_0x196068['shift']());}};_0x175b6c(++_0x49608c);}(_0x9c44,0x178));var _0x49c4=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0x9c44[_0x1d9aa0];return _0x226868;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['show']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['get']('/:id/subjects',auth[_0x49c4('0x7')](),controller[_0x49c4('0xd')]);router['get'](_0x49c4('0xe'),auth[_0x49c4('0x7')](),controller['getDescriptions']);router['get'](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller['getTags']);router[_0x49c4('0x10')]('/',auth[_0x49c4('0x7')](),controller['create']);router[_0x49c4('0x10')](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x11')]);router[_0x49c4('0x12')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x13')]);router['delete'](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);module[_0x49c4('0x15')]=router;
\ No newline at end of file
+var _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(_0x18c7b9,_0x455dfc){var _0x5832e5=function(_0x23b413){while(--_0x23b413){_0x18c7b9['push'](_0x18c7b9['shift']());}};_0x5832e5(++_0x455dfc);}(_0x008c,0x188));var _0xc008=function(_0x21b232,_0x1b9b77){_0x21b232=_0x21b232-0x0;var _0x54a541=_0x008c[_0x21b232];return _0x54a541;};'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 382e081..9651653 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1cb=['STRING','exports'];(function(_0x2ef030,_0x21dc23){var _0x326661=function(_0x4694e2){while(--_0x4694e2){_0x2ef030['push'](_0x2ef030['shift']());}};_0x326661(++_0x21dc23);}(_0xe1cb,0x117));var _0xbe1c=function(_0x1ac8fc,_0x14397b){_0x1ac8fc=_0x1ac8fc-0x0;var _0x45571e=_0xe1cb[_0x1ac8fc];return _0x45571e;};'use strict';var Sequelize=require('sequelize');module[_0xbe1c('0x0')]={'name':{'type':Sequelize[_0xbe1c('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8679=['exports'];(function(_0x67f95e,_0x3ca797){var _0x538f5a=function(_0xc919e9){while(--_0xc919e9){_0x67f95e['push'](_0x67f95e['shift']());}};_0x538f5a(++_0x3ca797);}(_0x8679,0x18d));var _0x9867=function(_0x441171,_0x3d4067){_0x441171=_0x441171-0x0;var _0x2539e9=_0x8679[_0x441171];return _0x2539e9;};'use strict';var Sequelize=require('sequelize');module[_0x9867('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e78140a..78453c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79e8=['findAll','rows','catch','show','params','length','find','body','DeskField','getFields','hasOwnProperty','findOne','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','DeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include'];(function(_0x1c4b30,_0x21d23b){var _0x536864=function(_0x5e7768){while(--_0x5e7768){_0x1c4b30['push'](_0x1c4b30['shift']());}};_0x536864(++_0x21d23b);}(_0x79e8,0xb2));var _0x879e=function(_0x1cab5a,_0x3b3ca5){_0x1cab5a=_0x1cab5a-0x0;var _0x3d73a4=_0x79e8[_0x1cab5a];return _0x3d73a4;};'use strict';var emlformat=require(_0x879e('0x0'));var rimraf=require(_0x879e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x879e('0x2'));var rp=require(_0x879e('0x3'));var moment=require(_0x879e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x879e('0x5'));var util=require('util');var path=require('path');var sox=require(_0x879e('0x6'));var csv=require(_0x879e('0x7'));var ejs=require(_0x879e('0x8'));var fs=require('fs');var fs_extra=require(_0x879e('0x9'));var _=require(_0x879e('0xa'));var squel=require(_0x879e('0xb'));var crypto=require(_0x879e('0xc'));var jsforce=require(_0x879e('0xd'));var deskjs=require(_0x879e('0xe'));var toCsv=require(_0x879e('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x879e('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x879e('0x10'));var logger=require('../../config/logger')(_0x879e('0x11'));var utils=require(_0x879e('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x879e('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x474a34,_0xa7ccd){_0xa7ccd=_0xa7ccd||0xcc;return function(_0x253f18){if(_0x253f18){return _0x474a34[_0x879e('0x14')](_0xa7ccd);}return _0x474a34[_0x879e('0x15')](_0xa7ccd)[_0x879e('0x16')]();};}function respondWithResult(_0x2e914d,_0x285dee){_0x285dee=_0x285dee||0xc8;return function(_0x406a26){if(_0x406a26){return _0x2e914d[_0x879e('0x15')](_0x285dee)[_0x879e('0x17')](_0x406a26);}};}function respondWithFilteredResult(_0x197e33,_0x2923b9){return function(_0x1b1017){if(_0x1b1017){var _0x3cd931=typeof _0x2923b9[_0x879e('0x18')]===_0x879e('0x19')&&typeof _0x2923b9[_0x879e('0x1a')]==='undefined';var _0x563e63=_0x1b1017[_0x879e('0x1b')];var _0x2b9968=_0x3cd931?0x0:_0x2923b9[_0x879e('0x18')];var _0x38d098=_0x3cd931?_0x1b1017[_0x879e('0x1b')]:_0x2923b9[_0x879e('0x18')]+_0x2923b9[_0x879e('0x1a')];var _0x438ff3;if(_0x38d098>=_0x563e63){_0x38d098=_0x563e63;_0x438ff3=0xc8;}else{_0x438ff3=0xce;}_0x197e33[_0x879e('0x15')](_0x438ff3);return _0x197e33[_0x879e('0x1c')]('Content-Range',_0x2b9968+'-'+_0x38d098+'/'+_0x563e63)[_0x879e('0x17')](_0x1b1017);}return null;};}function patchUpdates(_0x3a6be2){return function(_0x1bf102){try{jsonpatch[_0x879e('0x1d')](_0x1bf102,_0x3a6be2,!![]);}catch(_0x6a81b4){return BPromise[_0x879e('0x1e')](_0x6a81b4);}return _0x1bf102[_0x879e('0x1f')]();};}function saveUpdates(_0x57abaa,_0x51f973){return function(_0x272a0e){if(_0x272a0e){return _0x272a0e[_0x879e('0x20')](_0x57abaa)[_0x879e('0x21')](function(_0x23ff57){return _0x23ff57;});}return null;};}function removeEntity(_0xdff116,_0x487701){return function(_0x2337f4){if(_0x2337f4){return _0x2337f4[_0x879e('0x22')]()[_0x879e('0x21')](function(){_0xdff116[_0x879e('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f41b6,_0x2cc5f8){return function(_0xf5cc72){if(!_0xf5cc72){_0x1f41b6['sendStatus'](0x194);}return _0xf5cc72;};}function handleError(_0x41c089,_0x4bb6a9){_0x4bb6a9=_0x4bb6a9||0x1f4;return function(_0x1c1401){logger[_0x879e('0x23')](_0x1c1401[_0x879e('0x24')]);if(_0x1c1401['name']){delete _0x1c1401[_0x879e('0x25')];}_0x41c089[_0x879e('0x15')](_0x4bb6a9)[_0x879e('0x26')](_0x1c1401);};}exports['index']=function(_0x338944,_0x9489f8){var _0x335ce3={},_0x5045df={},_0x74109={'count':0x0,'rows':[]};var _0x375cdc=_[_0x879e('0x27')](db[_0x879e('0x28')][_0x879e('0x29')],function(_0x474df0){return{'name':_0x474df0[_0x879e('0x2a')],'type':_0x474df0[_0x879e('0x2b')][_0x879e('0x2c')]};});_0x5045df[_0x879e('0x2d')]=_['map'](_0x375cdc,_0x879e('0x25'));_0x5045df[_0x879e('0x2e')]=_[_0x879e('0x2f')](_0x338944['query']);_0x5045df[_0x879e('0x30')]=_[_0x879e('0x31')](_0x5045df['model'],_0x5045df[_0x879e('0x2e')]);_0x335ce3['attributes']=_['intersection'](_0x5045df['model'],qs[_0x879e('0x32')](_0x338944[_0x879e('0x2e')][_0x879e('0x32')]));_0x335ce3[_0x879e('0x33')]=_0x335ce3[_0x879e('0x33')]['length']?_0x335ce3[_0x879e('0x33')]:_0x5045df[_0x879e('0x2d')];if(!_0x338944[_0x879e('0x2e')]['hasOwnProperty'](_0x879e('0x34'))){_0x335ce3[_0x879e('0x1a')]=qs[_0x879e('0x1a')](_0x338944['query'][_0x879e('0x1a')]);_0x335ce3[_0x879e('0x18')]=qs['offset'](_0x338944['query'][_0x879e('0x18')]);}_0x335ce3[_0x879e('0x35')]=qs[_0x879e('0x36')](_0x338944[_0x879e('0x2e')][_0x879e('0x36')]);_0x335ce3['where']=qs[_0x879e('0x30')](_[_0x879e('0x37')](_0x338944[_0x879e('0x2e')],_0x5045df[_0x879e('0x30')]),_0x375cdc);if(_0x338944[_0x879e('0x2e')][_0x879e('0x38')]){_0x335ce3[_0x879e('0x39')]=_['merge'](_0x335ce3[_0x879e('0x39')],{'$or':_[_0x879e('0x27')](_0x375cdc,function(_0x569d61){if(_0x569d61['type']!=='VIRTUAL'){var _0x53556d={};_0x53556d[_0x569d61[_0x879e('0x25')]]={'$like':'%'+_0x338944[_0x879e('0x2e')]['filter']+'%'};return _0x53556d;}})});}_0x335ce3=_[_0x879e('0x3a')]({},_0x335ce3,_0x338944[_0x879e('0x3b')]);var _0x56d014={'where':_0x335ce3[_0x879e('0x39')]};return db[_0x879e('0x28')][_0x879e('0x1b')](_0x56d014)[_0x879e('0x21')](function(_0x337a83){_0x74109[_0x879e('0x1b')]=_0x337a83;if(_0x338944[_0x879e('0x2e')][_0x879e('0x3c')]){_0x335ce3[_0x879e('0x3d')]=[{'all':!![]}];}return db['DeskConfiguration'][_0x879e('0x3e')](_0x335ce3);})['then'](function(_0x506f81){_0x74109[_0x879e('0x3f')]=_0x506f81;return _0x74109;})[_0x879e('0x21')](respondWithFilteredResult(_0x9489f8,_0x335ce3))[_0x879e('0x40')](handleError(_0x9489f8,null));};exports[_0x879e('0x41')]=function(_0x4c8fd2,_0x4c1e32){var _0x187719={'raw':![],'where':{'id':_0x4c8fd2[_0x879e('0x42')]['id']}},_0xea803d={};_0xea803d[_0x879e('0x2d')]=_['keys'](db[_0x879e('0x28')]['rawAttributes']);_0xea803d['query']=_['keys'](_0x4c8fd2[_0x879e('0x2e')]);_0xea803d[_0x879e('0x30')]=_['intersection'](_0xea803d['model'],_0xea803d[_0x879e('0x2e')]);_0x187719[_0x879e('0x33')]=_[_0x879e('0x31')](_0xea803d[_0x879e('0x2d')],qs[_0x879e('0x32')](_0x4c8fd2['query']['fields']));_0x187719[_0x879e('0x33')]=_0x187719[_0x879e('0x33')][_0x879e('0x43')]?_0x187719[_0x879e('0x33')]:_0xea803d['model'];if(_0x4c8fd2[_0x879e('0x2e')][_0x879e('0x3c')]){_0x187719['include']=[{'all':!![]}];}_0x187719=_[_0x879e('0x3a')]({},_0x187719,_0x4c8fd2[_0x879e('0x3b')]);return db[_0x879e('0x28')][_0x879e('0x44')](_0x187719)[_0x879e('0x21')](handleEntityNotFound(_0x4c1e32,null))[_0x879e('0x21')](respondWithResult(_0x4c1e32,null))[_0x879e('0x40')](handleError(_0x4c1e32,null));};exports['create']=function(_0x4302b1,_0x5f1e24){return db[_0x879e('0x28')]['create'](_0x4302b1[_0x879e('0x45')],{})['then'](respondWithResult(_0x5f1e24,0xc9))['catch'](handleError(_0x5f1e24,null));};exports[_0x879e('0x20')]=function(_0x9ea241,_0x43d11b){if(_0x9ea241[_0x879e('0x45')]['id']){delete _0x9ea241[_0x879e('0x45')]['id'];}return db[_0x879e('0x28')][_0x879e('0x44')]({'where':{'id':_0x9ea241[_0x879e('0x42')]['id']}})[_0x879e('0x21')](handleEntityNotFound(_0x43d11b,null))['then'](saveUpdates(_0x9ea241[_0x879e('0x45')],null))[_0x879e('0x21')](respondWithResult(_0x43d11b,null))[_0x879e('0x40')](handleError(_0x43d11b,null));};exports['destroy']=function(_0x59e421,_0x5ec5fa){return db[_0x879e('0x28')]['find']({'where':{'id':_0x59e421[_0x879e('0x42')]['id']}})[_0x879e('0x21')](handleEntityNotFound(_0x5ec5fa,null))[_0x879e('0x21')](removeEntity(_0x5ec5fa,null))[_0x879e('0x40')](handleError(_0x5ec5fa,null));};exports['getFields']=function(_0x3e0968,_0xdf18f,_0x31e534){var _0x303d44={};var _0x6a3bd2={};var _0x502a70;var _0x70af68;return db[_0x879e('0x28')]['findOne']({'where':{'id':_0x3e0968['params']['id']}})[_0x879e('0x21')](handleEntityNotFound(_0xdf18f,null))[_0x879e('0x21')](function(_0x2905c0){if(_0x2905c0){_0x502a70=_0x2905c0;_0x6a3bd2[_0x879e('0x2d')]=_[_0x879e('0x2f')](db[_0x879e('0x46')][_0x879e('0x29')]);_0x6a3bd2[_0x879e('0x2e')]=_[_0x879e('0x2f')](_0x3e0968[_0x879e('0x2e')]);_0x6a3bd2['filters']=_[_0x879e('0x31')](_0x6a3bd2['model'],_0x6a3bd2['query']);_0x303d44['attributes']=_[_0x879e('0x31')](_0x6a3bd2['model'],qs[_0x879e('0x32')](_0x3e0968[_0x879e('0x2e')][_0x879e('0x32')]));_0x303d44['attributes']=_0x303d44[_0x879e('0x33')]['length']?_0x303d44[_0x879e('0x33')]:_0x6a3bd2[_0x879e('0x2d')];_0x303d44['order']=qs['sort'](_0x3e0968['query'][_0x879e('0x36')]);_0x303d44['where']=qs[_0x879e('0x30')](_[_0x879e('0x37')](_0x3e0968['query'],_0x6a3bd2[_0x879e('0x30')]));if(_0x3e0968[_0x879e('0x2e')][_0x879e('0x38')]){_0x303d44[_0x879e('0x39')]=_[_0x879e('0x3a')](_0x303d44[_0x879e('0x39')],{'$or':_[_0x879e('0x27')](_0x303d44[_0x879e('0x33')],function(_0x3bbf5e){var _0x1c9c21={};_0x1c9c21[_0x3bbf5e]={'$like':'%'+_0x3e0968[_0x879e('0x2e')][_0x879e('0x38')]+'%'};return _0x1c9c21;})});}_0x303d44=_[_0x879e('0x3a')]({},_0x303d44,_0x3e0968[_0x879e('0x3b')]);return _0x502a70[_0x879e('0x47')](_0x303d44);}})['then'](function(_0x14ff51){if(_0x14ff51){_0x70af68=_0x14ff51['length'];if(!_0x3e0968[_0x879e('0x2e')][_0x879e('0x48')](_0x879e('0x34'))){_0x303d44[_0x879e('0x1a')]=qs[_0x879e('0x1a')](_0x3e0968[_0x879e('0x2e')]['limit']);_0x303d44['offset']=qs[_0x879e('0x18')](_0x3e0968[_0x879e('0x2e')][_0x879e('0x18')]);}return _0x502a70[_0x879e('0x47')](_0x303d44);}})['then'](function(_0x541af9){if(_0x541af9){return _0x541af9?{'count':_0x70af68,'rows':_0x541af9}:null;}})[_0x879e('0x21')](respondWithResult(_0xdf18f,null))[_0x879e('0x40')](handleError(_0xdf18f,null));};exports['getSubjects']=function(_0x8fc428,_0x106e2f,_0x3b7050){var _0x40bb5f={};var _0x310029={};var _0x271c9c;var _0x182bf8;return db[_0x879e('0x28')][_0x879e('0x49')]({'where':{'id':_0x8fc428['params']['id']}})['then'](handleEntityNotFound(_0x106e2f,null))[_0x879e('0x21')](function(_0x57d4d6){if(_0x57d4d6){_0x271c9c=_0x57d4d6;_0x310029['model']=_[_0x879e('0x2f')](db['DeskField'][_0x879e('0x29')]);_0x310029[_0x879e('0x2e')]=_[_0x879e('0x2f')](_0x8fc428[_0x879e('0x2e')]);_0x310029[_0x879e('0x30')]=_[_0x879e('0x31')](_0x310029[_0x879e('0x2d')],_0x310029['query']);_0x40bb5f[_0x879e('0x33')]=_[_0x879e('0x31')](_0x310029[_0x879e('0x2d')],qs[_0x879e('0x32')](_0x8fc428['query'][_0x879e('0x32')]));_0x40bb5f['attributes']=_0x40bb5f[_0x879e('0x33')]['length']?_0x40bb5f[_0x879e('0x33')]:_0x310029[_0x879e('0x2d')];_0x40bb5f['order']=qs['sort'](_0x8fc428['query'][_0x879e('0x36')]);_0x40bb5f[_0x879e('0x39')]=qs['filters'](_[_0x879e('0x37')](_0x8fc428[_0x879e('0x2e')],_0x310029[_0x879e('0x30')]));if(_0x8fc428[_0x879e('0x2e')]['filter']){_0x40bb5f[_0x879e('0x39')]=_[_0x879e('0x3a')](_0x40bb5f[_0x879e('0x39')],{'$or':_['map'](_0x40bb5f['attributes'],function(_0xe62cd4){var _0x110e07={};_0x110e07[_0xe62cd4]={'$like':'%'+_0x8fc428['query']['filter']+'%'};return _0x110e07;})});}_0x40bb5f=_['merge']({},_0x40bb5f,_0x8fc428[_0x879e('0x3b')]);return _0x271c9c[_0x879e('0x4a')](_0x40bb5f);}})['then'](function(_0x152d3f){if(_0x152d3f){_0x182bf8=_0x152d3f[_0x879e('0x43')];if(!_0x8fc428[_0x879e('0x2e')][_0x879e('0x48')]('nolimit')){_0x40bb5f[_0x879e('0x1a')]=qs[_0x879e('0x1a')](_0x8fc428[_0x879e('0x2e')][_0x879e('0x1a')]);_0x40bb5f[_0x879e('0x18')]=qs[_0x879e('0x18')](_0x8fc428[_0x879e('0x2e')]['offset']);}return _0x271c9c[_0x879e('0x4a')](_0x40bb5f);}})[_0x879e('0x21')](function(_0x18c6c7){if(_0x18c6c7){return _0x18c6c7?{'count':_0x182bf8,'rows':_0x18c6c7}:null;}})[_0x879e('0x21')](respondWithResult(_0x106e2f,null))['catch'](handleError(_0x106e2f,null));};exports[_0x879e('0x4b')]=function(_0x4f69b2,_0x398bb4,_0x530808){var _0x3ca956={};var _0x5c870b={};var _0x5adec6;var _0x1f5b69;return db[_0x879e('0x28')][_0x879e('0x49')]({'where':{'id':_0x4f69b2[_0x879e('0x42')]['id']}})[_0x879e('0x21')](handleEntityNotFound(_0x398bb4,null))['then'](function(_0x5775e5){if(_0x5775e5){_0x5adec6=_0x5775e5;_0x5c870b['model']=_[_0x879e('0x2f')](db[_0x879e('0x46')]['rawAttributes']);_0x5c870b[_0x879e('0x2e')]=_[_0x879e('0x2f')](_0x4f69b2[_0x879e('0x2e')]);_0x5c870b[_0x879e('0x30')]=_[_0x879e('0x31')](_0x5c870b['model'],_0x5c870b[_0x879e('0x2e')]);_0x3ca956[_0x879e('0x33')]=_[_0x879e('0x31')](_0x5c870b[_0x879e('0x2d')],qs[_0x879e('0x32')](_0x4f69b2[_0x879e('0x2e')][_0x879e('0x32')]));_0x3ca956[_0x879e('0x33')]=_0x3ca956[_0x879e('0x33')][_0x879e('0x43')]?_0x3ca956[_0x879e('0x33')]:_0x5c870b[_0x879e('0x2d')];_0x3ca956[_0x879e('0x35')]=qs[_0x879e('0x36')](_0x4f69b2[_0x879e('0x2e')]['sort']);_0x3ca956[_0x879e('0x39')]=qs['filters'](_[_0x879e('0x37')](_0x4f69b2[_0x879e('0x2e')],_0x5c870b[_0x879e('0x30')]));if(_0x4f69b2[_0x879e('0x2e')][_0x879e('0x38')]){_0x3ca956['where']=_['merge'](_0x3ca956[_0x879e('0x39')],{'$or':_['map'](_0x3ca956[_0x879e('0x33')],function(_0x21df5c){var _0x5d4f09={};_0x5d4f09[_0x21df5c]={'$like':'%'+_0x4f69b2['query'][_0x879e('0x38')]+'%'};return _0x5d4f09;})});}_0x3ca956=_[_0x879e('0x3a')]({},_0x3ca956,_0x4f69b2[_0x879e('0x3b')]);return _0x5adec6[_0x879e('0x4b')](_0x3ca956);}})[_0x879e('0x21')](function(_0x1c6457){if(_0x1c6457){_0x1f5b69=_0x1c6457[_0x879e('0x43')];if(!_0x4f69b2[_0x879e('0x2e')][_0x879e('0x48')]('nolimit')){_0x3ca956[_0x879e('0x1a')]=qs[_0x879e('0x1a')](_0x4f69b2[_0x879e('0x2e')]['limit']);_0x3ca956[_0x879e('0x18')]=qs['offset'](_0x4f69b2[_0x879e('0x2e')][_0x879e('0x18')]);}return _0x5adec6['getDescriptions'](_0x3ca956);}})[_0x879e('0x21')](function(_0x5af4a5){if(_0x5af4a5){return _0x5af4a5?{'count':_0x1f5b69,'rows':_0x5af4a5}:null;}})[_0x879e('0x21')](respondWithResult(_0x398bb4,null))[_0x879e('0x40')](handleError(_0x398bb4,null));};exports[_0x879e('0x4c')]=function(_0x3c4360,_0x18df00,_0x4fc3c9){var _0x231e02={};var _0x343204={};var _0x3facc0;var _0x482978;return db[_0x879e('0x28')][_0x879e('0x49')]({'where':{'id':_0x3c4360[_0x879e('0x42')]['id']}})[_0x879e('0x21')](handleEntityNotFound(_0x18df00,null))[_0x879e('0x21')](function(_0x21b0bd){if(_0x21b0bd){_0x3facc0=_0x21b0bd;_0x343204[_0x879e('0x2d')]=_[_0x879e('0x2f')](db[_0x879e('0x4d')][_0x879e('0x29')]);_0x343204[_0x879e('0x2e')]=_[_0x879e('0x2f')](_0x3c4360['query']);_0x343204[_0x879e('0x30')]=_[_0x879e('0x31')](_0x343204[_0x879e('0x2d')],_0x343204[_0x879e('0x2e')]);_0x231e02['attributes']=_['intersection'](_0x343204[_0x879e('0x2d')],qs[_0x879e('0x32')](_0x3c4360[_0x879e('0x2e')][_0x879e('0x32')]));_0x231e02[_0x879e('0x33')]=_0x231e02[_0x879e('0x33')][_0x879e('0x43')]?_0x231e02[_0x879e('0x33')]:_0x343204['model'];_0x231e02[_0x879e('0x35')]=qs[_0x879e('0x36')](_0x3c4360[_0x879e('0x2e')][_0x879e('0x36')]);_0x231e02['where']=qs['filters'](_[_0x879e('0x37')](_0x3c4360[_0x879e('0x2e')],_0x343204['filters']));if(_0x3c4360['query'][_0x879e('0x38')]){_0x231e02['where']=_[_0x879e('0x3a')](_0x231e02[_0x879e('0x39')],{'$or':_[_0x879e('0x27')](_0x231e02[_0x879e('0x33')],function(_0x49d9b6){var _0x32a403={};_0x32a403[_0x49d9b6]={'$like':'%'+_0x3c4360[_0x879e('0x2e')]['filter']+'%'};return _0x32a403;})});}_0x231e02=_[_0x879e('0x3a')]({},_0x231e02,_0x3c4360[_0x879e('0x3b')]);return _0x3facc0[_0x879e('0x4c')](_0x231e02);}})[_0x879e('0x21')](function(_0x317662){if(_0x317662){_0x482978=_0x317662[_0x879e('0x43')];if(!_0x3c4360[_0x879e('0x2e')][_0x879e('0x48')](_0x879e('0x34'))){_0x231e02[_0x879e('0x1a')]=qs[_0x879e('0x1a')](_0x3c4360[_0x879e('0x2e')][_0x879e('0x1a')]);_0x231e02[_0x879e('0x18')]=qs[_0x879e('0x18')](_0x3c4360[_0x879e('0x2e')][_0x879e('0x18')]);}return _0x3facc0[_0x879e('0x4c')](_0x231e02);}})[_0x879e('0x21')](function(_0x38193f){if(_0x38193f){return _0x38193f?{'count':_0x482978,'rows':_0x38193f}:null;}})[_0x879e('0x21')](respondWithResult(_0x18df00,null))[_0x879e('0x40')](handleError(_0x18df00,null));};exports[_0x879e('0x4e')]=function(_0x537d1c,_0x170449,_0x20497f){if(_0x537d1c[_0x879e('0x45')]['id']){delete _0x537d1c[_0x879e('0x45')]['id'];}return db['DeskConfiguration'][_0x879e('0x49')]({'where':{'id':_0x537d1c['params']['id']}})[_0x879e('0x21')](handleEntityNotFound(_0x170449,null))[_0x879e('0x21')](function(_0x5ab422){if(_0x5ab422){return _0x5ab422[_0x879e('0x4e')](_0x537d1c[_0x879e('0x45')][_0x879e('0x4f')]||[]);}return null;})['then'](respondWithResult(_0x170449,null))['catch'](handleError(_0x170449,null));};
\ No newline at end of file
+var _0xb526=['sort','where','filters','pick','filter','map','VIRTUAL','merge','include','findAll','rows','show','params','keys','length','includeAll','options','catch','create','body','find','getFields','getSubjects','findOne','nolimit','getDescriptions','DeskField','getTags','setTags','ids','eml-format','rimraf','zip-dir','request-promise','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','DeskConfiguration','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','hasOwnProperty','order'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0xb526,0x16e));var _0x6b52=function(_0xdc37a1,_0x53ebb9){_0xdc37a1=_0xdc37a1-0x0;var _0x99b4fe=_0xb526[_0xdc37a1];return _0x99b4fe;};'use strict';var emlformat=require(_0x6b52('0x0'));var rimraf=require(_0x6b52('0x1'));var zipdir=require(_0x6b52('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6b52('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6b52('0x4'));var util=require('util');var path=require(_0x6b52('0x5'));var sox=require('sox');var csv=require(_0x6b52('0x6'));var ejs=require(_0x6b52('0x7'));var fs=require('fs');var fs_extra=require(_0x6b52('0x8'));var _=require(_0x6b52('0x9'));var squel=require(_0x6b52('0xa'));var crypto=require(_0x6b52('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x6b52('0xc'));var toCsv=require(_0x6b52('0x6'));var querystring=require(_0x6b52('0xd'));var Papa=require(_0x6b52('0xe'));var Redis=require(_0x6b52('0xf'));var authService=require(_0x6b52('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6b52('0x11'));var logger=require('../../config/logger')(_0x6b52('0x12'));var utils=require(_0x6b52('0x13'));var config=require(_0x6b52('0x14'));var licenseUtil=require(_0x6b52('0x15'));var db=require(_0x6b52('0x16'))['db'];function respondWithStatusCode(_0x401d3a,_0x2b1242){_0x2b1242=_0x2b1242||0xcc;return function(_0x5cce26){if(_0x5cce26){return _0x401d3a[_0x6b52('0x17')](_0x2b1242);}return _0x401d3a[_0x6b52('0x18')](_0x2b1242)[_0x6b52('0x19')]();};}function respondWithResult(_0xe4ea35,_0xa2de86){_0xa2de86=_0xa2de86||0xc8;return function(_0x1085b2){if(_0x1085b2){return _0xe4ea35[_0x6b52('0x18')](_0xa2de86)[_0x6b52('0x1a')](_0x1085b2);}};}function respondWithFilteredResult(_0x3153fc,_0x492900){return function(_0x1c60b7){if(_0x1c60b7){var _0x13f3b1=typeof _0x492900[_0x6b52('0x1b')]==='undefined'&&typeof _0x492900[_0x6b52('0x1c')]==='undefined';var _0x138610=_0x1c60b7[_0x6b52('0x1d')];var _0x4719d5=_0x13f3b1?0x0:_0x492900[_0x6b52('0x1b')];var _0x1561f3=_0x13f3b1?_0x1c60b7[_0x6b52('0x1d')]:_0x492900['offset']+_0x492900[_0x6b52('0x1c')];var _0x5b29f6;if(_0x1561f3>=_0x138610){_0x1561f3=_0x138610;_0x5b29f6=0xc8;}else{_0x5b29f6=0xce;}_0x3153fc['status'](_0x5b29f6);return _0x3153fc[_0x6b52('0x1e')](_0x6b52('0x1f'),_0x4719d5+'-'+_0x1561f3+'/'+_0x138610)[_0x6b52('0x1a')](_0x1c60b7);}return null;};}function patchUpdates(_0x50e57c){return function(_0x4cf44e){try{jsonpatch[_0x6b52('0x20')](_0x4cf44e,_0x50e57c,!![]);}catch(_0x589ab0){return BPromise[_0x6b52('0x21')](_0x589ab0);}return _0x4cf44e[_0x6b52('0x22')]();};}function saveUpdates(_0x4e9e08,_0x8f530d){return function(_0x461bfb){if(_0x461bfb){return _0x461bfb[_0x6b52('0x23')](_0x4e9e08)[_0x6b52('0x24')](function(_0x647664){return _0x647664;});}return null;};}function removeEntity(_0xfe5aba,_0x43d1e3){return function(_0x46f2be){if(_0x46f2be){return _0x46f2be[_0x6b52('0x25')]()[_0x6b52('0x24')](function(){_0xfe5aba[_0x6b52('0x18')](0xcc)[_0x6b52('0x19')]();});}};}function handleEntityNotFound(_0x127730,_0x56238a){return function(_0x55df7a){if(!_0x55df7a){_0x127730[_0x6b52('0x17')](0x194);}return _0x55df7a;};}function handleError(_0x1095c0,_0x2da857){_0x2da857=_0x2da857||0x1f4;return function(_0x8c61ff){logger[_0x6b52('0x26')](_0x8c61ff[_0x6b52('0x27')]);if(_0x8c61ff[_0x6b52('0x28')]){delete _0x8c61ff[_0x6b52('0x28')];}_0x1095c0[_0x6b52('0x18')](_0x2da857)['send'](_0x8c61ff);};}exports[_0x6b52('0x29')]=function(_0x1d3f4b,_0x4b0821){var _0x5ce775={},_0x34d62f={},_0x2a31e2={'count':0x0,'rows':[]};var _0x4fb300=_['map'](db[_0x6b52('0x2a')][_0x6b52('0x2b')],function(_0x32db44){return{'name':_0x32db44[_0x6b52('0x2c')],'type':_0x32db44[_0x6b52('0x2d')][_0x6b52('0x2e')]};});_0x34d62f[_0x6b52('0x2f')]=_['map'](_0x4fb300,_0x6b52('0x28'));_0x34d62f['query']=_['keys'](_0x1d3f4b[_0x6b52('0x30')]);_0x34d62f['filters']=_[_0x6b52('0x31')](_0x34d62f[_0x6b52('0x2f')],_0x34d62f['query']);_0x5ce775[_0x6b52('0x32')]=_['intersection'](_0x34d62f[_0x6b52('0x2f')],qs[_0x6b52('0x33')](_0x1d3f4b[_0x6b52('0x30')]['fields']));_0x5ce775[_0x6b52('0x32')]=_0x5ce775[_0x6b52('0x32')]['length']?_0x5ce775['attributes']:_0x34d62f[_0x6b52('0x2f')];if(!_0x1d3f4b[_0x6b52('0x30')][_0x6b52('0x34')]('nolimit')){_0x5ce775[_0x6b52('0x1c')]=qs[_0x6b52('0x1c')](_0x1d3f4b[_0x6b52('0x30')]['limit']);_0x5ce775[_0x6b52('0x1b')]=qs[_0x6b52('0x1b')](_0x1d3f4b['query'][_0x6b52('0x1b')]);}_0x5ce775[_0x6b52('0x35')]=qs['sort'](_0x1d3f4b[_0x6b52('0x30')][_0x6b52('0x36')]);_0x5ce775[_0x6b52('0x37')]=qs[_0x6b52('0x38')](_[_0x6b52('0x39')](_0x1d3f4b[_0x6b52('0x30')],_0x34d62f[_0x6b52('0x38')]),_0x4fb300);if(_0x1d3f4b[_0x6b52('0x30')][_0x6b52('0x3a')]){_0x5ce775[_0x6b52('0x37')]=_['merge'](_0x5ce775[_0x6b52('0x37')],{'$or':_[_0x6b52('0x3b')](_0x4fb300,function(_0x321f54){if(_0x321f54[_0x6b52('0x2d')]!==_0x6b52('0x3c')){var _0x250399={};_0x250399[_0x321f54[_0x6b52('0x28')]]={'$like':'%'+_0x1d3f4b[_0x6b52('0x30')][_0x6b52('0x3a')]+'%'};return _0x250399;}})});}_0x5ce775=_[_0x6b52('0x3d')]({},_0x5ce775,_0x1d3f4b['options']);var _0x1af130={'where':_0x5ce775['where']};return db[_0x6b52('0x2a')][_0x6b52('0x1d')](_0x1af130)['then'](function(_0x4ab093){_0x2a31e2['count']=_0x4ab093;if(_0x1d3f4b[_0x6b52('0x30')]['includeAll']){_0x5ce775[_0x6b52('0x3e')]=[{'all':!![]}];}return db[_0x6b52('0x2a')][_0x6b52('0x3f')](_0x5ce775);})[_0x6b52('0x24')](function(_0x1a1eb6){_0x2a31e2[_0x6b52('0x40')]=_0x1a1eb6;return _0x2a31e2;})[_0x6b52('0x24')](respondWithFilteredResult(_0x4b0821,_0x5ce775))['catch'](handleError(_0x4b0821,null));};exports[_0x6b52('0x41')]=function(_0x533abc,_0x403f3d){var _0x5397a9={'raw':![],'where':{'id':_0x533abc[_0x6b52('0x42')]['id']}},_0x323972={};_0x323972['model']=_[_0x6b52('0x43')](db['DeskConfiguration'][_0x6b52('0x2b')]);_0x323972[_0x6b52('0x30')]=_['keys'](_0x533abc['query']);_0x323972['filters']=_['intersection'](_0x323972['model'],_0x323972[_0x6b52('0x30')]);_0x5397a9['attributes']=_[_0x6b52('0x31')](_0x323972[_0x6b52('0x2f')],qs[_0x6b52('0x33')](_0x533abc[_0x6b52('0x30')][_0x6b52('0x33')]));_0x5397a9['attributes']=_0x5397a9[_0x6b52('0x32')][_0x6b52('0x44')]?_0x5397a9[_0x6b52('0x32')]:_0x323972['model'];if(_0x533abc[_0x6b52('0x30')][_0x6b52('0x45')]){_0x5397a9['include']=[{'all':!![]}];}_0x5397a9=_[_0x6b52('0x3d')]({},_0x5397a9,_0x533abc[_0x6b52('0x46')]);return db['DeskConfiguration']['find'](_0x5397a9)[_0x6b52('0x24')](handleEntityNotFound(_0x403f3d,null))[_0x6b52('0x24')](respondWithResult(_0x403f3d,null))[_0x6b52('0x47')](handleError(_0x403f3d,null));};exports[_0x6b52('0x48')]=function(_0x39e339,_0x312c3e){return db[_0x6b52('0x2a')][_0x6b52('0x48')](_0x39e339[_0x6b52('0x49')],{})['then'](respondWithResult(_0x312c3e,0xc9))[_0x6b52('0x47')](handleError(_0x312c3e,null));};exports[_0x6b52('0x23')]=function(_0x202bd6,_0x41f988){if(_0x202bd6[_0x6b52('0x49')]['id']){delete _0x202bd6['body']['id'];}return db[_0x6b52('0x2a')][_0x6b52('0x4a')]({'where':{'id':_0x202bd6[_0x6b52('0x42')]['id']}})['then'](handleEntityNotFound(_0x41f988,null))['then'](saveUpdates(_0x202bd6[_0x6b52('0x49')],null))[_0x6b52('0x24')](respondWithResult(_0x41f988,null))[_0x6b52('0x47')](handleError(_0x41f988,null));};exports[_0x6b52('0x25')]=function(_0x35185c,_0x773340){return db[_0x6b52('0x2a')][_0x6b52('0x4a')]({'where':{'id':_0x35185c[_0x6b52('0x42')]['id']}})['then'](handleEntityNotFound(_0x773340,null))[_0x6b52('0x24')](removeEntity(_0x773340,null))['catch'](handleError(_0x773340,null));};exports['getFields']=function(_0x29a4a3,_0x2d244a,_0x118de8){var _0x4ce272={};var _0x31ee2c={};var _0x3c8f06;var _0xfdb4b2;return db[_0x6b52('0x2a')]['findOne']({'where':{'id':_0x29a4a3[_0x6b52('0x42')]['id']}})['then'](handleEntityNotFound(_0x2d244a,null))[_0x6b52('0x24')](function(_0x295379){if(_0x295379){_0x3c8f06=_0x295379;_0x31ee2c['model']=_[_0x6b52('0x43')](db['DeskField'][_0x6b52('0x2b')]);_0x31ee2c[_0x6b52('0x30')]=_[_0x6b52('0x43')](_0x29a4a3[_0x6b52('0x30')]);_0x31ee2c[_0x6b52('0x38')]=_[_0x6b52('0x31')](_0x31ee2c[_0x6b52('0x2f')],_0x31ee2c[_0x6b52('0x30')]);_0x4ce272[_0x6b52('0x32')]=_[_0x6b52('0x31')](_0x31ee2c[_0x6b52('0x2f')],qs[_0x6b52('0x33')](_0x29a4a3[_0x6b52('0x30')][_0x6b52('0x33')]));_0x4ce272['attributes']=_0x4ce272[_0x6b52('0x32')]['length']?_0x4ce272[_0x6b52('0x32')]:_0x31ee2c[_0x6b52('0x2f')];_0x4ce272['order']=qs[_0x6b52('0x36')](_0x29a4a3[_0x6b52('0x30')][_0x6b52('0x36')]);_0x4ce272['where']=qs[_0x6b52('0x38')](_[_0x6b52('0x39')](_0x29a4a3[_0x6b52('0x30')],_0x31ee2c['filters']));if(_0x29a4a3[_0x6b52('0x30')][_0x6b52('0x3a')]){_0x4ce272[_0x6b52('0x37')]=_[_0x6b52('0x3d')](_0x4ce272[_0x6b52('0x37')],{'$or':_['map'](_0x4ce272[_0x6b52('0x32')],function(_0x460a44){var _0x323ac9={};_0x323ac9[_0x460a44]={'$like':'%'+_0x29a4a3[_0x6b52('0x30')][_0x6b52('0x3a')]+'%'};return _0x323ac9;})});}_0x4ce272=_[_0x6b52('0x3d')]({},_0x4ce272,_0x29a4a3[_0x6b52('0x46')]);return _0x3c8f06['getFields'](_0x4ce272);}})[_0x6b52('0x24')](function(_0x2704ca){if(_0x2704ca){_0xfdb4b2=_0x2704ca[_0x6b52('0x44')];if(!_0x29a4a3[_0x6b52('0x30')][_0x6b52('0x34')]('nolimit')){_0x4ce272[_0x6b52('0x1c')]=qs[_0x6b52('0x1c')](_0x29a4a3['query']['limit']);_0x4ce272[_0x6b52('0x1b')]=qs[_0x6b52('0x1b')](_0x29a4a3['query'][_0x6b52('0x1b')]);}return _0x3c8f06[_0x6b52('0x4b')](_0x4ce272);}})[_0x6b52('0x24')](function(_0x1e0ae9){if(_0x1e0ae9){return _0x1e0ae9?{'count':_0xfdb4b2,'rows':_0x1e0ae9}:null;}})[_0x6b52('0x24')](respondWithResult(_0x2d244a,null))[_0x6b52('0x47')](handleError(_0x2d244a,null));};exports[_0x6b52('0x4c')]=function(_0x573ba3,_0x245460,_0x1a61b4){var _0x50fbd8={};var _0x3a640f={};var _0x14431d;var _0x4ef93c;return db[_0x6b52('0x2a')][_0x6b52('0x4d')]({'where':{'id':_0x573ba3['params']['id']}})['then'](handleEntityNotFound(_0x245460,null))[_0x6b52('0x24')](function(_0x157e1f){if(_0x157e1f){_0x14431d=_0x157e1f;_0x3a640f['model']=_[_0x6b52('0x43')](db['DeskField']['rawAttributes']);_0x3a640f[_0x6b52('0x30')]=_[_0x6b52('0x43')](_0x573ba3[_0x6b52('0x30')]);_0x3a640f[_0x6b52('0x38')]=_[_0x6b52('0x31')](_0x3a640f[_0x6b52('0x2f')],_0x3a640f['query']);_0x50fbd8[_0x6b52('0x32')]=_['intersection'](_0x3a640f[_0x6b52('0x2f')],qs[_0x6b52('0x33')](_0x573ba3[_0x6b52('0x30')]['fields']));_0x50fbd8[_0x6b52('0x32')]=_0x50fbd8[_0x6b52('0x32')][_0x6b52('0x44')]?_0x50fbd8[_0x6b52('0x32')]:_0x3a640f[_0x6b52('0x2f')];_0x50fbd8['order']=qs[_0x6b52('0x36')](_0x573ba3[_0x6b52('0x30')][_0x6b52('0x36')]);_0x50fbd8[_0x6b52('0x37')]=qs[_0x6b52('0x38')](_[_0x6b52('0x39')](_0x573ba3[_0x6b52('0x30')],_0x3a640f['filters']));if(_0x573ba3[_0x6b52('0x30')][_0x6b52('0x3a')]){_0x50fbd8[_0x6b52('0x37')]=_['merge'](_0x50fbd8[_0x6b52('0x37')],{'$or':_['map'](_0x50fbd8[_0x6b52('0x32')],function(_0x56a24a){var _0x3f9252={};_0x3f9252[_0x56a24a]={'$like':'%'+_0x573ba3[_0x6b52('0x30')]['filter']+'%'};return _0x3f9252;})});}_0x50fbd8=_[_0x6b52('0x3d')]({},_0x50fbd8,_0x573ba3[_0x6b52('0x46')]);return _0x14431d['getSubjects'](_0x50fbd8);}})[_0x6b52('0x24')](function(_0x331287){if(_0x331287){_0x4ef93c=_0x331287[_0x6b52('0x44')];if(!_0x573ba3['query'][_0x6b52('0x34')](_0x6b52('0x4e'))){_0x50fbd8[_0x6b52('0x1c')]=qs[_0x6b52('0x1c')](_0x573ba3[_0x6b52('0x30')][_0x6b52('0x1c')]);_0x50fbd8[_0x6b52('0x1b')]=qs['offset'](_0x573ba3['query'][_0x6b52('0x1b')]);}return _0x14431d[_0x6b52('0x4c')](_0x50fbd8);}})[_0x6b52('0x24')](function(_0x4adfed){if(_0x4adfed){return _0x4adfed?{'count':_0x4ef93c,'rows':_0x4adfed}:null;}})[_0x6b52('0x24')](respondWithResult(_0x245460,null))[_0x6b52('0x47')](handleError(_0x245460,null));};exports[_0x6b52('0x4f')]=function(_0x58e73f,_0x39771c,_0x281b7c){var _0x2e64cd={};var _0x244135={};var _0x54a78f;var _0x5d8fd4;return db[_0x6b52('0x2a')]['findOne']({'where':{'id':_0x58e73f['params']['id']}})[_0x6b52('0x24')](handleEntityNotFound(_0x39771c,null))[_0x6b52('0x24')](function(_0x228477){if(_0x228477){_0x54a78f=_0x228477;_0x244135[_0x6b52('0x2f')]=_[_0x6b52('0x43')](db[_0x6b52('0x50')][_0x6b52('0x2b')]);_0x244135['query']=_[_0x6b52('0x43')](_0x58e73f[_0x6b52('0x30')]);_0x244135[_0x6b52('0x38')]=_[_0x6b52('0x31')](_0x244135[_0x6b52('0x2f')],_0x244135[_0x6b52('0x30')]);_0x2e64cd[_0x6b52('0x32')]=_[_0x6b52('0x31')](_0x244135[_0x6b52('0x2f')],qs['fields'](_0x58e73f[_0x6b52('0x30')][_0x6b52('0x33')]));_0x2e64cd[_0x6b52('0x32')]=_0x2e64cd[_0x6b52('0x32')][_0x6b52('0x44')]?_0x2e64cd['attributes']:_0x244135[_0x6b52('0x2f')];_0x2e64cd['order']=qs[_0x6b52('0x36')](_0x58e73f[_0x6b52('0x30')][_0x6b52('0x36')]);_0x2e64cd[_0x6b52('0x37')]=qs[_0x6b52('0x38')](_['pick'](_0x58e73f['query'],_0x244135[_0x6b52('0x38')]));if(_0x58e73f['query'][_0x6b52('0x3a')]){_0x2e64cd[_0x6b52('0x37')]=_['merge'](_0x2e64cd[_0x6b52('0x37')],{'$or':_[_0x6b52('0x3b')](_0x2e64cd[_0x6b52('0x32')],function(_0x57e17a){var _0x482415={};_0x482415[_0x57e17a]={'$like':'%'+_0x58e73f[_0x6b52('0x30')]['filter']+'%'};return _0x482415;})});}_0x2e64cd=_[_0x6b52('0x3d')]({},_0x2e64cd,_0x58e73f[_0x6b52('0x46')]);return _0x54a78f[_0x6b52('0x4f')](_0x2e64cd);}})['then'](function(_0x25d72b){if(_0x25d72b){_0x5d8fd4=_0x25d72b[_0x6b52('0x44')];if(!_0x58e73f[_0x6b52('0x30')][_0x6b52('0x34')](_0x6b52('0x4e'))){_0x2e64cd[_0x6b52('0x1c')]=qs[_0x6b52('0x1c')](_0x58e73f[_0x6b52('0x30')][_0x6b52('0x1c')]);_0x2e64cd[_0x6b52('0x1b')]=qs['offset'](_0x58e73f[_0x6b52('0x30')][_0x6b52('0x1b')]);}return _0x54a78f[_0x6b52('0x4f')](_0x2e64cd);}})[_0x6b52('0x24')](function(_0x3c2776){if(_0x3c2776){return _0x3c2776?{'count':_0x5d8fd4,'rows':_0x3c2776}:null;}})[_0x6b52('0x24')](respondWithResult(_0x39771c,null))['catch'](handleError(_0x39771c,null));};exports[_0x6b52('0x51')]=function(_0x4a7a86,_0x18cb90,_0x25209a){var _0x240430={};var _0x536d19={};var _0x88620c;var _0x4eda9f;return db[_0x6b52('0x2a')][_0x6b52('0x4d')]({'where':{'id':_0x4a7a86[_0x6b52('0x42')]['id']}})[_0x6b52('0x24')](handleEntityNotFound(_0x18cb90,null))[_0x6b52('0x24')](function(_0x5b70cf){if(_0x5b70cf){_0x88620c=_0x5b70cf;_0x536d19['model']=_[_0x6b52('0x43')](db['Tag'][_0x6b52('0x2b')]);_0x536d19[_0x6b52('0x30')]=_[_0x6b52('0x43')](_0x4a7a86[_0x6b52('0x30')]);_0x536d19[_0x6b52('0x38')]=_[_0x6b52('0x31')](_0x536d19[_0x6b52('0x2f')],_0x536d19[_0x6b52('0x30')]);_0x240430[_0x6b52('0x32')]=_[_0x6b52('0x31')](_0x536d19[_0x6b52('0x2f')],qs['fields'](_0x4a7a86[_0x6b52('0x30')]['fields']));_0x240430[_0x6b52('0x32')]=_0x240430['attributes'][_0x6b52('0x44')]?_0x240430[_0x6b52('0x32')]:_0x536d19['model'];_0x240430[_0x6b52('0x35')]=qs[_0x6b52('0x36')](_0x4a7a86[_0x6b52('0x30')][_0x6b52('0x36')]);_0x240430[_0x6b52('0x37')]=qs['filters'](_[_0x6b52('0x39')](_0x4a7a86[_0x6b52('0x30')],_0x536d19['filters']));if(_0x4a7a86[_0x6b52('0x30')][_0x6b52('0x3a')]){_0x240430[_0x6b52('0x37')]=_[_0x6b52('0x3d')](_0x240430['where'],{'$or':_[_0x6b52('0x3b')](_0x240430['attributes'],function(_0x2d0b8e){var _0x1a47b2={};_0x1a47b2[_0x2d0b8e]={'$like':'%'+_0x4a7a86[_0x6b52('0x30')]['filter']+'%'};return _0x1a47b2;})});}_0x240430=_[_0x6b52('0x3d')]({},_0x240430,_0x4a7a86[_0x6b52('0x46')]);return _0x88620c[_0x6b52('0x51')](_0x240430);}})['then'](function(_0x3685d5){if(_0x3685d5){_0x4eda9f=_0x3685d5[_0x6b52('0x44')];if(!_0x4a7a86[_0x6b52('0x30')][_0x6b52('0x34')]('nolimit')){_0x240430[_0x6b52('0x1c')]=qs['limit'](_0x4a7a86[_0x6b52('0x30')]['limit']);_0x240430['offset']=qs[_0x6b52('0x1b')](_0x4a7a86[_0x6b52('0x30')][_0x6b52('0x1b')]);}return _0x88620c[_0x6b52('0x51')](_0x240430);}})[_0x6b52('0x24')](function(_0xc07b7d){if(_0xc07b7d){return _0xc07b7d?{'count':_0x4eda9f,'rows':_0xc07b7d}:null;}})['then'](respondWithResult(_0x18cb90,null))[_0x6b52('0x47')](handleError(_0x18cb90,null));};exports[_0x6b52('0x52')]=function(_0x321b59,_0x5ef555,_0x44fa7a){if(_0x321b59[_0x6b52('0x49')]['id']){delete _0x321b59[_0x6b52('0x49')]['id'];}return db[_0x6b52('0x2a')]['findOne']({'where':{'id':_0x321b59[_0x6b52('0x42')]['id']}})[_0x6b52('0x24')](handleEntityNotFound(_0x5ef555,null))[_0x6b52('0x24')](function(_0x3fac84){if(_0x3fac84){return _0x3fac84['setTags'](_0x321b59[_0x6b52('0x49')][_0x6b52('0x53')]||[]);}return null;})[_0x6b52('0x24')](respondWithResult(_0x5ef555,null))[_0x6b52('0x47')](handleError(_0x5ef555,null));};
\ No newline at end of file
index 8b5d836..d96c9a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42c6=['rimraf','./intDeskConfiguration.attributes','exports','define','DeskConfiguration','int_desk_configurations','moment','path'];(function(_0x2ae00f,_0x126bb6){var _0xd64316=function(_0x44f141){while(--_0x44f141){_0x2ae00f['push'](_0x2ae00f['shift']());}};_0xd64316(++_0x126bb6);}(_0x42c6,0x15e));var _0x642c=function(_0x282b3b,_0x3be3c3){_0x282b3b=_0x282b3b-0x0;var _0x3a44ac=_0x42c6[_0x282b3b];return _0x3a44ac;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x642c('0x0'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x642c('0x1'));var rimraf=require(_0x642c('0x2'));var config=require('../../config/environment');var attributes=require(_0x642c('0x3'));module[_0x642c('0x4')]=function(_0x36c004,_0x17ee84){return _0x36c004[_0x642c('0x5')](_0x642c('0x6'),attributes,{'tableName':_0x642c('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfb27=['bluebird','path','rimraf','../../config/environment','exports','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','moment'];(function(_0x25fa5c,_0x421141){var _0x1bade2=function(_0x3faf20){while(--_0x3faf20){_0x25fa5c['push'](_0x25fa5c['shift']());}};_0x1bade2(++_0x421141);}(_0xfb27,0x11a));var _0x7fb2=function(_0x1bbc08,_0x444008){_0x1bbc08=_0x1bbc08-0x0;var _0x5d825b=_0xfb27[_0x1bbc08];return _0x5d825b;};'use strict';var _=require(_0x7fb2('0x0'));var util=require(_0x7fb2('0x1'));var logger=require(_0x7fb2('0x2'))('api');var moment=require(_0x7fb2('0x3'));var BPromise=require(_0x7fb2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7fb2('0x5'));var rimraf=require(_0x7fb2('0x6'));var config=require(_0x7fb2('0x7'));var attributes=require('./intDeskConfiguration.attributes');module[_0x7fb2('0x8')]=function(_0x2c8f09,_0x261d90){return _0x2c8f09['define'](_0x7fb2('0x9'),attributes,{'tableName':_0x7fb2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b53ae2a..b75156c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9147=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','DeskConfiguration,\x20%s,\x20%s','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0x9147,0x81));var _0x7914=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x9147[_0x311c35];return _0x5cc50c;};'use strict';var _=require(_0x7914('0x0'));var util=require(_0x7914('0x1'));var moment=require(_0x7914('0x2'));var BPromise=require(_0x7914('0x3'));var rs=require(_0x7914('0x4'));var fs=require('fs');var Redis=require(_0x7914('0x5'));var db=require(_0x7914('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x7914('0x7'))(_0x7914('0x8'));var config=require(_0x7914('0x9'));var jayson=require(_0x7914('0xa'));var client=jayson[_0x7914('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x47733d,_0x52a4b1,_0x3193ae){return new BPromise(function(_0x5efc62,_0x59c064){return client[_0x7914('0xc')](_0x47733d,_0x3193ae)[_0x7914('0xd')](function(_0x2d6ea3){logger['info'](_0x7914('0xe'),_0x52a4b1,_0x7914('0xf'));logger['debug'](_0x7914('0x10'),_0x52a4b1,'request\x20sent',JSON[_0x7914('0x11')](_0x2d6ea3));if(_0x2d6ea3[_0x7914('0x12')]){if(_0x2d6ea3[_0x7914('0x12')][_0x7914('0x13')]===0x1f4){logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x52a4b1,_0x2d6ea3[_0x7914('0x12')][_0x7914('0x14')]);return _0x59c064(_0x2d6ea3['error'][_0x7914('0x14')]);}logger[_0x7914('0x12')](_0x7914('0xe'),_0x52a4b1,_0x2d6ea3[_0x7914('0x12')][_0x7914('0x14')]);return _0x5efc62(_0x2d6ea3[_0x7914('0x12')][_0x7914('0x14')]);}else{logger['info'](_0x7914('0xe'),_0x52a4b1,_0x7914('0xf'));_0x5efc62(_0x2d6ea3['result'][_0x7914('0x14')]);}})[_0x7914('0x15')](function(_0xb62f5f){logger[_0x7914('0x12')](_0x7914('0xe'),_0x52a4b1,_0xb62f5f);_0x59c064(_0xb62f5f);});});}
\ No newline at end of file
+var _0x42f4=['jayson/promise','http','then','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','DeskConfiguration,\x20%s,\x20%s','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment'];(function(_0x3bd2fd,_0x383565){var _0x1f958c=function(_0x4c8870){while(--_0x4c8870){_0x3bd2fd['push'](_0x3bd2fd['shift']());}};_0x1f958c(++_0x383565);}(_0x42f4,0x19d));var _0x442f=function(_0x10e840,_0x5b3935){_0x10e840=_0x10e840-0x0;var _0x405caa=_0x42f4[_0x10e840];return _0x405caa;};'use strict';var _=require(_0x442f('0x0'));var util=require('util');var moment=require(_0x442f('0x1'));var BPromise=require(_0x442f('0x2'));var rs=require(_0x442f('0x3'));var fs=require('fs');var Redis=require(_0x442f('0x4'));var db=require(_0x442f('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x442f('0x6'));var jayson=require(_0x442f('0x7'));var client=jayson['client'][_0x442f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x11b450,_0x23c5ba,_0x37dfe7){return new BPromise(function(_0x6c0b4b,_0x476480){return client['request'](_0x11b450,_0x37dfe7)[_0x442f('0x9')](function(_0x4e32af){logger['info']('DeskConfiguration,\x20%s,\x20%s',_0x23c5ba,_0x442f('0xa'));logger[_0x442f('0xb')](_0x442f('0xc'),_0x23c5ba,_0x442f('0xa'),JSON[_0x442f('0xd')](_0x4e32af));if(_0x4e32af[_0x442f('0xe')]){if(_0x4e32af[_0x442f('0xe')][_0x442f('0xf')]===0x1f4){logger[_0x442f('0xe')](_0x442f('0x10'),_0x23c5ba,_0x4e32af['error'][_0x442f('0x11')]);return _0x476480(_0x4e32af[_0x442f('0xe')][_0x442f('0x11')]);}logger[_0x442f('0xe')](_0x442f('0x10'),_0x23c5ba,_0x4e32af[_0x442f('0xe')][_0x442f('0x11')]);return _0x6c0b4b(_0x4e32af[_0x442f('0xe')][_0x442f('0x11')]);}else{logger[_0x442f('0x12')](_0x442f('0x10'),_0x23c5ba,_0x442f('0xa'));_0x6c0b4b(_0x4e32af[_0x442f('0x13')][_0x442f('0x11')]);}})[_0x442f('0x14')](function(_0x3ff2b1){logger['error'](_0x442f('0x10'),_0x23c5ba,_0x3ff2b1);_0x476480(_0x3ff2b1);});});}
\ No newline at end of file
index ae69c1d..d2e8c6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33ad=['Router','fs-extra','../../components/auth/service','isAuthenticated','index','get','/:id','create','put','destroy','exports','util','path','connect-timeout','express'];(function(_0x2000c0,_0x4f3af9){var _0x3792a9=function(_0x56ec20){while(--_0x56ec20){_0x2000c0['push'](_0x2000c0['shift']());}};_0x3792a9(++_0x4f3af9);}(_0x33ad,0x74));var _0xd33a=function(_0x105d5c,_0x14dc1a){_0x105d5c=_0x105d5c-0x0;var _0x44ed7e=_0x33ad[_0x105d5c];return _0x44ed7e;};'use strict';var multer=require('multer');var util=require(_0xd33a('0x0'));var path=require(_0xd33a('0x1'));var timeout=require(_0xd33a('0x2'));var express=require(_0xd33a('0x3'));var router=express[_0xd33a('0x4')]();var fs_extra=require(_0xd33a('0x5'));var auth=require(_0xd33a('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intDeskField.controller');router['get']('/',auth[_0xd33a('0x7')](),controller[_0xd33a('0x8')]);router[_0xd33a('0x9')](_0xd33a('0xa'),auth[_0xd33a('0x7')](),controller['show']);router['post']('/',auth[_0xd33a('0x7')](),controller[_0xd33a('0xb')]);router[_0xd33a('0xc')]('/:id',auth[_0xd33a('0x7')](),controller['update']);router['delete'](_0xd33a('0xa'),auth[_0xd33a('0x7')](),controller[_0xd33a('0xd')]);module[_0xd33a('0xe')]=router;
\ No newline at end of file
+var _0xf7ce=['put','update','delete','destroy','multer','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','/:id','post','create'];(function(_0x41468a,_0x97cada){var _0x3d6692=function(_0x4419ef){while(--_0x4419ef){_0x41468a['push'](_0x41468a['shift']());}};_0x3d6692(++_0x97cada);}(_0xf7ce,0x194));var _0xef7c=function(_0x1343fe,_0x1b99ab){_0x1343fe=_0x1343fe-0x0;var _0x354bc7=_0xf7ce[_0x1343fe];return _0x354bc7;};'use strict';var multer=require(_0xef7c('0x0'));var util=require('util');var path=require(_0xef7c('0x1'));var timeout=require('connect-timeout');var express=require(_0xef7c('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xef7c('0x3'));var interaction=require(_0xef7c('0x4'));var config=require(_0xef7c('0x5'));var controller=require(_0xef7c('0x6'));router[_0xef7c('0x7')]('/',auth[_0xef7c('0x8')](),controller['index']);router[_0xef7c('0x7')](_0xef7c('0x9'),auth[_0xef7c('0x8')](),controller['show']);router[_0xef7c('0xa')]('/',auth[_0xef7c('0x8')](),controller[_0xef7c('0xb')]);router[_0xef7c('0xc')](_0xef7c('0x9'),auth['isAuthenticated'](),controller[_0xef7c('0xd')]);router[_0xef7c('0xe')](_0xef7c('0x9'),auth['isAuthenticated'](),controller[_0xef7c('0xf')]);module['exports']=router;
\ No newline at end of file
index 85481bb..7e6aa7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b3f=['ENUM','string','customVariable','STRING','sequelize','exports'];(function(_0xd88ed,_0x54fd06){var _0x1dad30=function(_0x21323){while(--_0x21323){_0xd88ed['push'](_0xd88ed['shift']());}};_0x1dad30(++_0x54fd06);}(_0x4b3f,0x1f0));var _0xf4b3=function(_0x1eaf3a,_0x5bd7b6){_0x1eaf3a=_0x1eaf3a-0x0;var _0x285fe6=_0x4b3f[_0x1eaf3a];return _0x285fe6;};'use strict';var Sequelize=require(_0xf4b3('0x0'));module[_0xf4b3('0x1')]={'type':{'type':Sequelize[_0xf4b3('0x2')](_0xf4b3('0x3'),'variable',_0xf4b3('0x4'),'keyValue','picklist'),'defaultValue':_0xf4b3('0x3')},'content':{'type':Sequelize[_0xf4b3('0x5')]},'key':{'type':Sequelize[_0xf4b3('0x5')]},'keyType':{'type':Sequelize[_0xf4b3('0x2')]('string','variable',_0xf4b3('0x4'))},'keyContent':{'type':Sequelize[_0xf4b3('0x5')]},'idField':{'type':Sequelize[_0xf4b3('0x5')]},'nameField':{'type':Sequelize[_0xf4b3('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf4b3('0x5')]}};
\ No newline at end of file
+var _0x9a0c=['string','variable','keyValue','picklist','STRING','customVariable','BOOLEAN','sequelize','exports','ENUM'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9a0c,0x1c9));var _0xc9a0=function(_0x200018,_0x284e2c){_0x200018=_0x200018-0x0;var _0x22848a=_0x9a0c[_0x200018];return _0x22848a;};'use strict';var Sequelize=require(_0xc9a0('0x0'));module[_0xc9a0('0x1')]={'type':{'type':Sequelize[_0xc9a0('0x2')](_0xc9a0('0x3'),_0xc9a0('0x4'),'customVariable',_0xc9a0('0x5'),_0xc9a0('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xc9a0('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xc9a0('0x2')](_0xc9a0('0x3'),_0xc9a0('0x4'),_0xc9a0('0x8'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xc9a0('0x7')]},'customField':{'type':Sequelize[_0xc9a0('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc9a0('0x7')]}};
\ No newline at end of file
index da4abcd..2fe0b73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b65=['path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','sendStatus','end','status','json','undefined','count','offset','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','DeskField','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','limit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1b65,0x1b4));var _0x51b6=function(_0x3bd1bd,_0x4a6a33){_0x3bd1bd=_0x3bd1bd-0x0;var _0x46bca6=_0x1b65[_0x3bd1bd];return _0x46bca6;};'use strict';var emlformat=require(_0x51b6('0x0'));var rimraf=require(_0x51b6('0x1'));var zipdir=require(_0x51b6('0x2'));var jsonpatch=require(_0x51b6('0x3'));var rp=require('request-promise');var moment=require(_0x51b6('0x4'));var BPromise=require(_0x51b6('0x5'));var Mustache=require(_0x51b6('0x6'));var util=require(_0x51b6('0x7'));var path=require(_0x51b6('0x8'));var sox=require(_0x51b6('0x9'));var csv=require(_0x51b6('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x51b6('0xb'));var _=require(_0x51b6('0xc'));var squel=require(_0x51b6('0xd'));var crypto=require(_0x51b6('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x51b6('0xf'));var toCsv=require(_0x51b6('0xa'));var querystring=require('querystring');var Papa=require(_0x51b6('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x51b6('0x11'));var as=require(_0x51b6('0x12'));var hardwareService=require(_0x51b6('0x13'));var logger=require(_0x51b6('0x14'))(_0x51b6('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x51b6('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4cd605,_0x422bd4){_0x422bd4=_0x422bd4||0xcc;return function(_0x4ca143){if(_0x4ca143){return _0x4cd605[_0x51b6('0x17')](_0x422bd4);}return _0x4cd605['status'](_0x422bd4)[_0x51b6('0x18')]();};}function respondWithResult(_0x24a386,_0x2890ee){_0x2890ee=_0x2890ee||0xc8;return function(_0x235d8c){if(_0x235d8c){return _0x24a386[_0x51b6('0x19')](_0x2890ee)[_0x51b6('0x1a')](_0x235d8c);}};}function respondWithFilteredResult(_0x4c6cd0,_0x23549b){return function(_0x596863){if(_0x596863){var _0x39583d=typeof _0x23549b['offset']===_0x51b6('0x1b')&&typeof _0x23549b['limit']===_0x51b6('0x1b');var _0x22ffa3=_0x596863[_0x51b6('0x1c')];var _0x3ae3c7=_0x39583d?0x0:_0x23549b[_0x51b6('0x1d')];var _0x22c6da=_0x39583d?_0x596863['count']:_0x23549b[_0x51b6('0x1d')]+_0x23549b['limit'];var _0x2974f0;if(_0x22c6da>=_0x22ffa3){_0x22c6da=_0x22ffa3;_0x2974f0=0xc8;}else{_0x2974f0=0xce;}_0x4c6cd0[_0x51b6('0x19')](_0x2974f0);return _0x4c6cd0['set'](_0x51b6('0x1e'),_0x3ae3c7+'-'+_0x22c6da+'/'+_0x22ffa3)[_0x51b6('0x1a')](_0x596863);}return null;};}function patchUpdates(_0x3fee21){return function(_0x471783){try{jsonpatch[_0x51b6('0x1f')](_0x471783,_0x3fee21,!![]);}catch(_0x663b44){return BPromise[_0x51b6('0x20')](_0x663b44);}return _0x471783[_0x51b6('0x21')]();};}function saveUpdates(_0x4ab876,_0x35d2ab){return function(_0x11db4e){if(_0x11db4e){return _0x11db4e[_0x51b6('0x22')](_0x4ab876)[_0x51b6('0x23')](function(_0x53e709){return _0x53e709;});}return null;};}function removeEntity(_0x3d3456,_0x3680af){return function(_0x51c013){if(_0x51c013){return _0x51c013['destroy']()[_0x51b6('0x23')](function(){_0x3d3456[_0x51b6('0x19')](0xcc)[_0x51b6('0x18')]();});}};}function handleEntityNotFound(_0x59193e,_0x4c1825){return function(_0x22b91b){if(!_0x22b91b){_0x59193e[_0x51b6('0x17')](0x194);}return _0x22b91b;};}function handleError(_0x8c0881,_0x4a5ff8){_0x4a5ff8=_0x4a5ff8||0x1f4;return function(_0x2842b2){logger[_0x51b6('0x24')](_0x2842b2[_0x51b6('0x25')]);if(_0x2842b2[_0x51b6('0x26')]){delete _0x2842b2[_0x51b6('0x26')];}_0x8c0881[_0x51b6('0x19')](_0x4a5ff8)[_0x51b6('0x27')](_0x2842b2);};}exports[_0x51b6('0x28')]=function(_0x51b505,_0x2dc770){var _0x226018={},_0x276443={},_0x48eb13={'count':0x0,'rows':[]};var _0x38f855=_[_0x51b6('0x29')](db[_0x51b6('0x2a')][_0x51b6('0x2b')],function(_0x5c7c35){return{'name':_0x5c7c35[_0x51b6('0x2c')],'type':_0x5c7c35['type'][_0x51b6('0x2d')]};});_0x276443[_0x51b6('0x2e')]=_['map'](_0x38f855,'name');_0x276443[_0x51b6('0x2f')]=_[_0x51b6('0x30')](_0x51b505['query']);_0x276443[_0x51b6('0x31')]=_[_0x51b6('0x32')](_0x276443['model'],_0x276443[_0x51b6('0x2f')]);_0x226018[_0x51b6('0x33')]=_[_0x51b6('0x32')](_0x276443['model'],qs[_0x51b6('0x34')](_0x51b505['query'][_0x51b6('0x34')]));_0x226018[_0x51b6('0x33')]=_0x226018[_0x51b6('0x33')][_0x51b6('0x35')]?_0x226018[_0x51b6('0x33')]:_0x276443[_0x51b6('0x2e')];if(!_0x51b505[_0x51b6('0x2f')][_0x51b6('0x36')]('nolimit')){_0x226018[_0x51b6('0x37')]=qs[_0x51b6('0x37')](_0x51b505['query'][_0x51b6('0x37')]);_0x226018['offset']=qs[_0x51b6('0x1d')](_0x51b505[_0x51b6('0x2f')][_0x51b6('0x1d')]);}_0x226018['order']=qs[_0x51b6('0x38')](_0x51b505[_0x51b6('0x2f')]['sort']);_0x226018[_0x51b6('0x39')]=qs[_0x51b6('0x31')](_[_0x51b6('0x3a')](_0x51b505[_0x51b6('0x2f')],_0x276443[_0x51b6('0x31')]),_0x38f855);if(_0x51b505[_0x51b6('0x2f')][_0x51b6('0x3b')]){_0x226018[_0x51b6('0x39')]=_[_0x51b6('0x3c')](_0x226018[_0x51b6('0x39')],{'$or':_[_0x51b6('0x29')](_0x38f855,function(_0x234d5e){if(_0x234d5e[_0x51b6('0x3d')]!==_0x51b6('0x3e')){var _0x28d14f={};_0x28d14f[_0x234d5e[_0x51b6('0x26')]]={'$like':'%'+_0x51b505['query'][_0x51b6('0x3b')]+'%'};return _0x28d14f;}})});}_0x226018=_['merge']({},_0x226018,_0x51b505[_0x51b6('0x3f')]);var _0x4ad444={'where':_0x226018[_0x51b6('0x39')]};return db[_0x51b6('0x2a')]['count'](_0x4ad444)[_0x51b6('0x23')](function(_0x2b6dd6){_0x48eb13['count']=_0x2b6dd6;if(_0x51b505[_0x51b6('0x2f')][_0x51b6('0x40')]){_0x226018[_0x51b6('0x41')]=[{'all':!![]}];}return db[_0x51b6('0x2a')][_0x51b6('0x42')](_0x226018);})['then'](function(_0x588a05){_0x48eb13['rows']=_0x588a05;return _0x48eb13;})[_0x51b6('0x23')](respondWithFilteredResult(_0x2dc770,_0x226018))[_0x51b6('0x43')](handleError(_0x2dc770,null));};exports[_0x51b6('0x44')]=function(_0xda309d,_0x2c3f6e){var _0x588fc6={'raw':!![],'where':{'id':_0xda309d[_0x51b6('0x45')]['id']}},_0x498717={};_0x498717[_0x51b6('0x2e')]=_[_0x51b6('0x30')](db['DeskField'][_0x51b6('0x2b')]);_0x498717['query']=_[_0x51b6('0x30')](_0xda309d['query']);_0x498717[_0x51b6('0x31')]=_[_0x51b6('0x32')](_0x498717[_0x51b6('0x2e')],_0x498717['query']);_0x588fc6[_0x51b6('0x33')]=_[_0x51b6('0x32')](_0x498717[_0x51b6('0x2e')],qs[_0x51b6('0x34')](_0xda309d[_0x51b6('0x2f')]['fields']));_0x588fc6[_0x51b6('0x33')]=_0x588fc6[_0x51b6('0x33')]['length']?_0x588fc6[_0x51b6('0x33')]:_0x498717[_0x51b6('0x2e')];if(_0xda309d['query']['includeAll']){_0x588fc6['include']=[{'all':!![]}];}_0x588fc6=_['merge']({},_0x588fc6,_0xda309d['options']);return db['DeskField'][_0x51b6('0x46')](_0x588fc6)['then'](handleEntityNotFound(_0x2c3f6e,null))[_0x51b6('0x23')](respondWithResult(_0x2c3f6e,null))[_0x51b6('0x43')](handleError(_0x2c3f6e,null));};exports[_0x51b6('0x47')]=function(_0x21a7ab,_0x4562c6){return db[_0x51b6('0x2a')]['create'](_0x21a7ab[_0x51b6('0x48')],{})['then'](respondWithResult(_0x4562c6,0xc9))[_0x51b6('0x43')](handleError(_0x4562c6,null));};exports[_0x51b6('0x22')]=function(_0x594bb2,_0x44f9d4){if(_0x594bb2[_0x51b6('0x48')]['id']){delete _0x594bb2[_0x51b6('0x48')]['id'];}return db[_0x51b6('0x2a')]['find']({'where':{'id':_0x594bb2[_0x51b6('0x45')]['id']}})[_0x51b6('0x23')](handleEntityNotFound(_0x44f9d4,null))[_0x51b6('0x23')](saveUpdates(_0x594bb2[_0x51b6('0x48')],null))[_0x51b6('0x23')](respondWithResult(_0x44f9d4,null))[_0x51b6('0x43')](handleError(_0x44f9d4,null));};exports[_0x51b6('0x49')]=function(_0x3c977a,_0x27a4e4){return db[_0x51b6('0x2a')][_0x51b6('0x46')]({'where':{'id':_0x3c977a['params']['id']}})[_0x51b6('0x23')](handleEntityNotFound(_0x27a4e4,null))[_0x51b6('0x23')](removeEntity(_0x27a4e4,null))[_0x51b6('0x43')](handleError(_0x27a4e4,null));};
\ No newline at end of file
+var _0x23c7=['moment','mustache','util','path','to-csv','ejs','fs-extra','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','Content-Range','save','update','then','destroy','error','stack','name','map','DeskField','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','filters','find','create','body','eml-format','rimraf','zip-dir','request-promise'];(function(_0x47b7c5,_0x104854){var _0x22e7ee=function(_0x3e7ffe){while(--_0x3e7ffe){_0x47b7c5['push'](_0x47b7c5['shift']());}};_0x22e7ee(++_0x104854);}(_0x23c7,0x86));var _0x723c=function(_0x441406,_0x2104c2){_0x441406=_0x441406-0x0;var _0x495abd=_0x23c7[_0x441406];return _0x495abd;};'use strict';var emlformat=require(_0x723c('0x0'));var rimraf=require(_0x723c('0x1'));var zipdir=require(_0x723c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x723c('0x3'));var moment=require(_0x723c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x723c('0x5'));var util=require(_0x723c('0x6'));var path=require(_0x723c('0x7'));var sox=require('sox');var csv=require(_0x723c('0x8'));var ejs=require(_0x723c('0x9'));var fs=require('fs');var fs_extra=require(_0x723c('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x723c('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x723c('0x8'));var querystring=require(_0x723c('0xc'));var Papa=require(_0x723c('0xd'));var Redis=require('ioredis');var authService=require(_0x723c('0xe'));var qs=require(_0x723c('0xf'));var as=require(_0x723c('0x10'));var hardwareService=require(_0x723c('0x11'));var logger=require(_0x723c('0x12'))('api');var utils=require(_0x723c('0x13'));var config=require(_0x723c('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x723c('0x15'))['db'];function respondWithStatusCode(_0x3855d3,_0x4bd4df){_0x4bd4df=_0x4bd4df||0xcc;return function(_0x47450a){if(_0x47450a){return _0x3855d3[_0x723c('0x16')](_0x4bd4df);}return _0x3855d3[_0x723c('0x17')](_0x4bd4df)[_0x723c('0x18')]();};}function respondWithResult(_0x374696,_0x1a9b06){_0x1a9b06=_0x1a9b06||0xc8;return function(_0x557976){if(_0x557976){return _0x374696[_0x723c('0x17')](_0x1a9b06)['json'](_0x557976);}};}function respondWithFilteredResult(_0x473814,_0x13f071){return function(_0x32c60e){if(_0x32c60e){var _0x9444e4=typeof _0x13f071[_0x723c('0x19')]==='undefined'&&typeof _0x13f071[_0x723c('0x1a')]===_0x723c('0x1b');var _0x164f58=_0x32c60e['count'];var _0x1f6d22=_0x9444e4?0x0:_0x13f071[_0x723c('0x19')];var _0x370368=_0x9444e4?_0x32c60e[_0x723c('0x1c')]:_0x13f071[_0x723c('0x19')]+_0x13f071[_0x723c('0x1a')];var _0x3f63cb;if(_0x370368>=_0x164f58){_0x370368=_0x164f58;_0x3f63cb=0xc8;}else{_0x3f63cb=0xce;}_0x473814['status'](_0x3f63cb);return _0x473814['set'](_0x723c('0x1d'),_0x1f6d22+'-'+_0x370368+'/'+_0x164f58)['json'](_0x32c60e);}return null;};}function patchUpdates(_0x4f6d75){return function(_0xc1794d){try{jsonpatch['apply'](_0xc1794d,_0x4f6d75,!![]);}catch(_0x888838){return BPromise['reject'](_0x888838);}return _0xc1794d[_0x723c('0x1e')]();};}function saveUpdates(_0x80c9f6,_0xde4fe6){return function(_0x1568a3){if(_0x1568a3){return _0x1568a3[_0x723c('0x1f')](_0x80c9f6)[_0x723c('0x20')](function(_0x143d69){return _0x143d69;});}return null;};}function removeEntity(_0x5d113d,_0x140705){return function(_0x3b4542){if(_0x3b4542){return _0x3b4542[_0x723c('0x21')]()[_0x723c('0x20')](function(){_0x5d113d[_0x723c('0x17')](0xcc)[_0x723c('0x18')]();});}};}function handleEntityNotFound(_0x3aa16f,_0xe7940b){return function(_0xebfabc){if(!_0xebfabc){_0x3aa16f[_0x723c('0x16')](0x194);}return _0xebfabc;};}function handleError(_0x51dfd6,_0x46158d){_0x46158d=_0x46158d||0x1f4;return function(_0x569045){logger[_0x723c('0x22')](_0x569045[_0x723c('0x23')]);if(_0x569045[_0x723c('0x24')]){delete _0x569045[_0x723c('0x24')];}_0x51dfd6['status'](_0x46158d)['send'](_0x569045);};}exports['index']=function(_0x191613,_0x1b69c8){var _0x1856fa={},_0x175033={},_0x17e8a0={'count':0x0,'rows':[]};var _0x2f7b71=_[_0x723c('0x25')](db[_0x723c('0x26')][_0x723c('0x27')],function(_0x56d854){return{'name':_0x56d854[_0x723c('0x28')],'type':_0x56d854[_0x723c('0x29')][_0x723c('0x2a')]};});_0x175033['model']=_['map'](_0x2f7b71,_0x723c('0x24'));_0x175033[_0x723c('0x2b')]=_[_0x723c('0x2c')](_0x191613[_0x723c('0x2b')]);_0x175033['filters']=_[_0x723c('0x2d')](_0x175033[_0x723c('0x2e')],_0x175033['query']);_0x1856fa[_0x723c('0x2f')]=_[_0x723c('0x2d')](_0x175033[_0x723c('0x2e')],qs[_0x723c('0x30')](_0x191613[_0x723c('0x2b')][_0x723c('0x30')]));_0x1856fa[_0x723c('0x2f')]=_0x1856fa[_0x723c('0x2f')][_0x723c('0x31')]?_0x1856fa[_0x723c('0x2f')]:_0x175033[_0x723c('0x2e')];if(!_0x191613[_0x723c('0x2b')]['hasOwnProperty'](_0x723c('0x32'))){_0x1856fa[_0x723c('0x1a')]=qs[_0x723c('0x1a')](_0x191613['query'][_0x723c('0x1a')]);_0x1856fa['offset']=qs['offset'](_0x191613[_0x723c('0x2b')][_0x723c('0x19')]);}_0x1856fa['order']=qs[_0x723c('0x33')](_0x191613['query'][_0x723c('0x33')]);_0x1856fa[_0x723c('0x34')]=qs['filters'](_[_0x723c('0x35')](_0x191613['query'],_0x175033['filters']),_0x2f7b71);if(_0x191613[_0x723c('0x2b')][_0x723c('0x36')]){_0x1856fa[_0x723c('0x34')]=_['merge'](_0x1856fa[_0x723c('0x34')],{'$or':_[_0x723c('0x25')](_0x2f7b71,function(_0x48a73a){if(_0x48a73a[_0x723c('0x29')]!==_0x723c('0x37')){var _0xfc61df={};_0xfc61df[_0x48a73a[_0x723c('0x24')]]={'$like':'%'+_0x191613[_0x723c('0x2b')][_0x723c('0x36')]+'%'};return _0xfc61df;}})});}_0x1856fa=_[_0x723c('0x38')]({},_0x1856fa,_0x191613[_0x723c('0x39')]);var _0x41adeb={'where':_0x1856fa[_0x723c('0x34')]};return db[_0x723c('0x26')]['count'](_0x41adeb)[_0x723c('0x20')](function(_0x4a7e26){_0x17e8a0[_0x723c('0x1c')]=_0x4a7e26;if(_0x191613['query'][_0x723c('0x3a')]){_0x1856fa[_0x723c('0x3b')]=[{'all':!![]}];}return db[_0x723c('0x26')][_0x723c('0x3c')](_0x1856fa);})['then'](function(_0x1640dd){_0x17e8a0[_0x723c('0x3d')]=_0x1640dd;return _0x17e8a0;})[_0x723c('0x20')](respondWithFilteredResult(_0x1b69c8,_0x1856fa))[_0x723c('0x3e')](handleError(_0x1b69c8,null));};exports[_0x723c('0x3f')]=function(_0x1ec6fd,_0x38e7f7){var _0x4527ee={'raw':!![],'where':{'id':_0x1ec6fd[_0x723c('0x40')]['id']}},_0x105b8b={};_0x105b8b[_0x723c('0x2e')]=_[_0x723c('0x2c')](db[_0x723c('0x26')][_0x723c('0x27')]);_0x105b8b[_0x723c('0x2b')]=_['keys'](_0x1ec6fd[_0x723c('0x2b')]);_0x105b8b[_0x723c('0x41')]=_[_0x723c('0x2d')](_0x105b8b[_0x723c('0x2e')],_0x105b8b[_0x723c('0x2b')]);_0x4527ee['attributes']=_[_0x723c('0x2d')](_0x105b8b[_0x723c('0x2e')],qs['fields'](_0x1ec6fd[_0x723c('0x2b')]['fields']));_0x4527ee[_0x723c('0x2f')]=_0x4527ee[_0x723c('0x2f')][_0x723c('0x31')]?_0x4527ee[_0x723c('0x2f')]:_0x105b8b[_0x723c('0x2e')];if(_0x1ec6fd[_0x723c('0x2b')][_0x723c('0x3a')]){_0x4527ee['include']=[{'all':!![]}];}_0x4527ee=_[_0x723c('0x38')]({},_0x4527ee,_0x1ec6fd[_0x723c('0x39')]);return db['DeskField'][_0x723c('0x42')](_0x4527ee)['then'](handleEntityNotFound(_0x38e7f7,null))[_0x723c('0x20')](respondWithResult(_0x38e7f7,null))[_0x723c('0x3e')](handleError(_0x38e7f7,null));};exports[_0x723c('0x43')]=function(_0x33354c,_0x4ca1a1){return db[_0x723c('0x26')][_0x723c('0x43')](_0x33354c['body'],{})[_0x723c('0x20')](respondWithResult(_0x4ca1a1,0xc9))[_0x723c('0x3e')](handleError(_0x4ca1a1,null));};exports[_0x723c('0x1f')]=function(_0x2f59c8,_0x1a5971){if(_0x2f59c8[_0x723c('0x44')]['id']){delete _0x2f59c8[_0x723c('0x44')]['id'];}return db['DeskField'][_0x723c('0x42')]({'where':{'id':_0x2f59c8[_0x723c('0x40')]['id']}})['then'](handleEntityNotFound(_0x1a5971,null))[_0x723c('0x20')](saveUpdates(_0x2f59c8['body'],null))['then'](respondWithResult(_0x1a5971,null))[_0x723c('0x3e')](handleError(_0x1a5971,null));};exports[_0x723c('0x21')]=function(_0x31cb6b,_0x512535){return db[_0x723c('0x26')][_0x723c('0x42')]({'where':{'id':_0x31cb6b[_0x723c('0x40')]['id']}})[_0x723c('0x20')](handleEntityNotFound(_0x512535,null))['then'](removeEntity(_0x512535,null))['catch'](handleError(_0x512535,null));};
\ No newline at end of file
index 2ffd7aa..83b536b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e4f=['desk_unique_index','FieldId','util','../../config/logger','moment','request-promise','rimraf','../../config/environment','define','int_desk_fields'];(function(_0x4c9380,_0x2fefc0){var _0x49a523=function(_0x165e85){while(--_0x165e85){_0x4c9380['push'](_0x4c9380['shift']());}};_0x49a523(++_0x2fefc0);}(_0x7e4f,0x7a));var _0xf7e4=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x7e4f[_0x2b4411];return _0x8e41ef;};'use strict';var _=require('lodash');var util=require(_0xf7e4('0x0'));var logger=require(_0xf7e4('0x1'))('api');var moment=require(_0xf7e4('0x2'));var BPromise=require('bluebird');var rp=require(_0xf7e4('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf7e4('0x4'));var config=require(_0xf7e4('0x5'));var attributes=require('./intDeskField.attributes');module['exports']=function(_0x1bee20,_0x5a1c91){return _0x1bee20[_0xf7e4('0x6')]('DeskField',attributes,{'tableName':_0xf7e4('0x7'),'paranoid':![],'indexes':[{'name':_0xf7e4('0x8'),'fields':['idField',_0xf7e4('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3ffc=['FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','exports','define','DeskField','int_desk_fields','desk_unique_index'];(function(_0x5e2dc5,_0x3866a5){var _0x237139=function(_0x58fadd){while(--_0x58fadd){_0x5e2dc5['push'](_0x5e2dc5['shift']());}};_0x237139(++_0x3866a5);}(_0x3ffc,0x133));var _0xc3ff=function(_0x43186d,_0x4b40ec){_0x43186d=_0x43186d-0x0;var _0x5f562c=_0x3ffc[_0x43186d];return _0x5f562c;};'use strict';var _=require(_0xc3ff('0x0'));var util=require(_0xc3ff('0x1'));var logger=require(_0xc3ff('0x2'))(_0xc3ff('0x3'));var moment=require(_0xc3ff('0x4'));var BPromise=require(_0xc3ff('0x5'));var rp=require(_0xc3ff('0x6'));var fs=require('fs');var path=require(_0xc3ff('0x7'));var rimraf=require(_0xc3ff('0x8'));var config=require(_0xc3ff('0x9'));var attributes=require(_0xc3ff('0xa'));module[_0xc3ff('0xb')]=function(_0x354453,_0x19e6b6){return _0x354453[_0xc3ff('0xc')](_0xc3ff('0xd'),attributes,{'tableName':_0xc3ff('0xe'),'paranoid':![],'indexes':[{'name':_0xc3ff('0xf'),'fields':['idField',_0xc3ff('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 70b2e91..64399c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa584=['catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xa584,0xdd));var _0x4a58=function(_0x2dc1ca,_0x46328f){_0x2dc1ca=_0x2dc1ca-0x0;var _0x21b84d=_0xa584[_0x2dc1ca];return _0x21b84d;};'use strict';var _=require('lodash');var util=require(_0x4a58('0x0'));var moment=require(_0x4a58('0x1'));var BPromise=require(_0x4a58('0x2'));var rs=require(_0x4a58('0x3'));var fs=require('fs');var Redis=require(_0x4a58('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4a58('0x5'));var logger=require(_0x4a58('0x6'))(_0x4a58('0x7'));var config=require(_0x4a58('0x8'));var jayson=require(_0x4a58('0x9'));var client=jayson['client'][_0x4a58('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4502a5,_0x5c0ddb,_0x1ca55d){return new BPromise(function(_0x37eb33,_0x5c3899){return client[_0x4a58('0xb')](_0x4502a5,_0x1ca55d)['then'](function(_0x35d0ef){logger[_0x4a58('0xc')](_0x4a58('0xd'),_0x5c0ddb,_0x4a58('0xe'));logger[_0x4a58('0xf')]('DeskField,\x20%s,\x20%s,\x20%s',_0x5c0ddb,'request\x20sent',JSON[_0x4a58('0x10')](_0x35d0ef));if(_0x35d0ef[_0x4a58('0x11')]){if(_0x35d0ef[_0x4a58('0x11')][_0x4a58('0x12')]===0x1f4){logger['error'](_0x4a58('0xd'),_0x5c0ddb,_0x35d0ef['error']['message']);return _0x5c3899(_0x35d0ef[_0x4a58('0x11')][_0x4a58('0x13')]);}logger[_0x4a58('0x11')](_0x4a58('0xd'),_0x5c0ddb,_0x35d0ef[_0x4a58('0x11')][_0x4a58('0x13')]);return _0x37eb33(_0x35d0ef['error'][_0x4a58('0x13')]);}else{logger[_0x4a58('0xc')](_0x4a58('0xd'),_0x5c0ddb,_0x4a58('0xe'));_0x37eb33(_0x35d0ef[_0x4a58('0x14')][_0x4a58('0x13')]);}})[_0x4a58('0x15')](function(_0x24af6a){logger[_0x4a58('0x11')]('DeskField,\x20%s,\x20%s',_0x5c0ddb,_0x24af6a);_0x5c3899(_0x24af6a);});});}
\ No newline at end of file
+var _0x4965=['request\x20sent','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskField,\x20%s,\x20%s'];(function(_0x274565,_0x2f6132){var _0x49faff=function(_0x8e811d){while(--_0x8e811d){_0x274565['push'](_0x274565['shift']());}};_0x49faff(++_0x2f6132);}(_0x4965,0xf9));var _0x5496=function(_0x246b17,_0x17f237){_0x246b17=_0x246b17-0x0;var _0x3cd550=_0x4965[_0x246b17];return _0x3cd550;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x5496('0x0'));var BPromise=require('bluebird');var rs=require(_0x5496('0x1'));var fs=require('fs');var Redis=require(_0x5496('0x2'));var db=require(_0x5496('0x3'))['db'];var utils=require(_0x5496('0x4'));var logger=require(_0x5496('0x5'))(_0x5496('0x6'));var config=require(_0x5496('0x7'));var jayson=require(_0x5496('0x8'));var client=jayson[_0x5496('0x9')][_0x5496('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x37b876,_0x5b3027,_0x3a4dfc){return new BPromise(function(_0x170d6b,_0x3ce919){return client[_0x5496('0xb')](_0x37b876,_0x3a4dfc)[_0x5496('0xc')](function(_0x27d43e){logger[_0x5496('0xd')](_0x5496('0xe'),_0x5b3027,_0x5496('0xf'));logger['debug'](_0x5496('0x10'),_0x5b3027,_0x5496('0xf'),JSON[_0x5496('0x11')](_0x27d43e));if(_0x27d43e[_0x5496('0x12')]){if(_0x27d43e['error']['code']===0x1f4){logger[_0x5496('0x12')](_0x5496('0xe'),_0x5b3027,_0x27d43e[_0x5496('0x12')][_0x5496('0x13')]);return _0x3ce919(_0x27d43e['error'][_0x5496('0x13')]);}logger[_0x5496('0x12')](_0x5496('0xe'),_0x5b3027,_0x27d43e[_0x5496('0x12')][_0x5496('0x13')]);return _0x170d6b(_0x27d43e[_0x5496('0x12')][_0x5496('0x13')]);}else{logger['info'](_0x5496('0xe'),_0x5b3027,'request\x20sent');_0x170d6b(_0x27d43e[_0x5496('0x14')][_0x5496('0x13')]);}})[_0x5496('0x15')](function(_0x2a63ae){logger[_0x5496('0x12')]('DeskField,\x20%s,\x20%s',_0x5b3027,_0x2a63ae);_0x3ce919(_0x2a63ae);});});}
\ No newline at end of file
index 1d01e3d..05a476e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ef5=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDynamics365Account.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','/:id','update','delete','destroy','exports','multer'];(function(_0x32458f,_0x355239){var _0x7c2bea=function(_0x509148){while(--_0x509148){_0x32458f['push'](_0x32458f['shift']());}};_0x7c2bea(++_0x355239);}(_0x6ef5,0x19d));var _0x56ef=function(_0x8acaaf,_0x2c789e){_0x8acaaf=_0x8acaaf-0x0;var _0x417afc=_0x6ef5[_0x8acaaf];return _0x417afc;};'use strict';var multer=require(_0x56ef('0x0'));var util=require(_0x56ef('0x1'));var path=require(_0x56ef('0x2'));var timeout=require(_0x56ef('0x3'));var express=require(_0x56ef('0x4'));var router=express[_0x56ef('0x5')]();var fs_extra=require(_0x56ef('0x6'));var auth=require(_0x56ef('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x56ef('0x8'));router[_0x56ef('0x9')]('/',auth[_0x56ef('0xa')](),controller[_0x56ef('0xb')]);router[_0x56ef('0x9')]('/:id',auth[_0x56ef('0xa')](),controller[_0x56ef('0xc')]);router[_0x56ef('0x9')](_0x56ef('0xd'),auth['isAuthenticated'](),controller[_0x56ef('0xe')]);router[_0x56ef('0x9')](_0x56ef('0xf'),auth[_0x56ef('0xa')](),controller[_0x56ef('0x10')]);router[_0x56ef('0x11')]('/',auth[_0x56ef('0xa')](),controller['create']);router['post'](_0x56ef('0xd'),auth[_0x56ef('0xa')](),controller['addConfiguration']);router['put'](_0x56ef('0x12'),auth[_0x56ef('0xa')](),controller[_0x56ef('0x13')]);router[_0x56ef('0x14')](_0x56ef('0x12'),auth['isAuthenticated'](),controller[_0x56ef('0x15')]);module[_0x56ef('0x16')]=router;
\ No newline at end of file
+var _0x1651=['../../components/interaction/service','./intDynamics365Account.controller','get','index','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','destroy','exports','util','connect-timeout','express','Router','fs-extra'];(function(_0x4e063b,_0xe675f){var _0x43631e=function(_0x1565b6){while(--_0x1565b6){_0x4e063b['push'](_0x4e063b['shift']());}};_0x43631e(++_0xe675f);}(_0x1651,0x103));var _0x1165=function(_0x2284f8,_0x52864a){_0x2284f8=_0x2284f8-0x0;var _0x1cc4a9=_0x1651[_0x2284f8];return _0x1cc4a9;};'use strict';var multer=require('multer');var util=require(_0x1165('0x0'));var path=require('path');var timeout=require(_0x1165('0x1'));var express=require(_0x1165('0x2'));var router=express[_0x1165('0x3')]();var fs_extra=require(_0x1165('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1165('0x5'));var config=require('../../config/environment');var controller=require(_0x1165('0x6'));router[_0x1165('0x7')]('/',auth['isAuthenticated'](),controller[_0x1165('0x8')]);router[_0x1165('0x7')](_0x1165('0x9'),auth[_0x1165('0xa')](),controller[_0x1165('0xb')]);router[_0x1165('0x7')](_0x1165('0xc'),auth['isAuthenticated'](),controller[_0x1165('0xd')]);router[_0x1165('0x7')](_0x1165('0xe'),auth[_0x1165('0xa')](),controller[_0x1165('0xf')]);router['post']('/',auth[_0x1165('0xa')](),controller[_0x1165('0x10')]);router[_0x1165('0x11')]('/:id/configurations',auth[_0x1165('0xa')](),controller[_0x1165('0x12')]);router[_0x1165('0x13')](_0x1165('0x9'),auth[_0x1165('0xa')](),controller['update']);router['delete'](_0x1165('0x9'),auth['isAuthenticated'](),controller[_0x1165('0x14')]);module[_0x1165('0x15')]=router;
\ No newline at end of file
index def854e..0b85ea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa66b=['exports','STRING','sequelize'];(function(_0x37aaa6,_0x3e52a9){var _0x4e29f5=function(_0x41eea1){while(--_0x41eea1){_0x37aaa6['push'](_0x37aaa6['shift']());}};_0x4e29f5(++_0x3e52a9);}(_0xa66b,0x68));var _0xba66=function(_0x21c068,_0x369d6a){_0x21c068=_0x21c068-0x0;var _0x5cf199=_0xa66b[_0x21c068];return _0x5cf199;};'use strict';var Sequelize=require(_0xba66('0x0'));module[_0xba66('0x1')]={'name':{'type':Sequelize[_0xba66('0x2')]},'username':{'type':Sequelize[_0xba66('0x2')]},'password':{'type':Sequelize[_0xba66('0x2')]},'remoteUri':{'type':Sequelize[_0xba66('0x2')]},'tenantId':{'type':Sequelize[_0xba66('0x2')]},'clientId':{'type':Sequelize[_0xba66('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xba66('0x2')]}};
\ No newline at end of file
+var _0xa672=['sequelize','STRING'];(function(_0xada880,_0x33ce7b){var _0x4547dc=function(_0x581cea){while(--_0x581cea){_0xada880['push'](_0xada880['shift']());}};_0x4547dc(++_0x33ce7b);}(_0xa672,0x188));var _0x2a67=function(_0x2e4e19,_0x493b50){_0x2e4e19=_0x2e4e19-0x0;var _0x9ba20b=_0xa672[_0x2e4e19];return _0x9ba20b;};'use strict';var Sequelize=require(_0x2a67('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x2a67('0x1')]},'password':{'type':Sequelize[_0x2a67('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0x2a67('0x1')]},'clientId':{'type':Sequelize[_0x2a67('0x1')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x2a67('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x2a67('0x1')]}};
\ No newline at end of file
index 33d6245..790f64a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf675=['4.0','MetadataId','GET','EntityDefinitions(','remove','includes','LogicalName','forEach','@odata.type','lastIndexOf','PicklistAttributeMetadata','push','all','isNil','StringAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','DateTimeAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','concat','test','statusCode','Wrong\x20credentials',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','true','FalseOption',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','error','stack','send','index','Dynamics365Account','fieldName','type','name','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','merge','map','VIRTUAL','filter','includeAll','include','findAll','catch','show','rawAttributes','options','create','body','find','params','destroy','findOne','nolimit','getConfigurations','AccountId','Subjects','getSubjects','Descriptions','channel','Dynamics365Configuration','getFields','ticketType','incident','PhoneCall','customerid','ownerid','caseorigincode','phonenumber','regardingobjectid','phonecall_activity_parties','accountidname','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyyominame','customeridname','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','importsequencenumber','influencescore','kbarticleidname','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyyominame','msdyn_iotalertname','numberofchildincidents','owneridname','primarycontactidyominame','resolvebykpiidname','responseby','responsiblecontactidyominame','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','subjectidname','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','remoteUri','clientId','slice','substring','%s/api/data/v9.0/','POST','https://login.microsoftonline.com/','tenantId','/oauth2/token','username','password','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20'];(function(_0x45ec12,_0x33fd9d){var _0x2b522b=function(_0x503b50){while(--_0x503b50){_0x45ec12['push'](_0x45ec12['shift']());}};_0x2b522b(++_0x33fd9d);}(_0xf675,0x199));var _0x5f67=function(_0x126fb9,_0x122c59){_0x126fb9=_0x126fb9-0x0;var _0xc8a3b1=_0xf675[_0x126fb9];return _0xc8a3b1;};'use strict';var emlformat=require(_0x5f67('0x0'));var rimraf=require(_0x5f67('0x1'));var zipdir=require(_0x5f67('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5f67('0x3'));var moment=require('moment');var BPromise=require(_0x5f67('0x4'));var Mustache=require(_0x5f67('0x5'));var util=require(_0x5f67('0x6'));var path=require('path');var sox=require(_0x5f67('0x7'));var csv=require(_0x5f67('0x8'));var ejs=require(_0x5f67('0x9'));var fs=require('fs');var fs_extra=require(_0x5f67('0xa'));var _=require('lodash');var squel=require(_0x5f67('0xb'));var crypto=require(_0x5f67('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5f67('0x8'));var querystring=require(_0x5f67('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5f67('0xe'));var qs=require(_0x5f67('0xf'));var as=require(_0x5f67('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x5f67('0x11'));var config=require(_0x5f67('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x5f67('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4653c7,_0x49e27f){_0x49e27f=_0x49e27f||0xcc;return function(_0x34ad41){if(_0x34ad41){return _0x4653c7[_0x5f67('0x14')](_0x49e27f);}return _0x4653c7[_0x5f67('0x15')](_0x49e27f)['end']();};}function respondWithResult(_0x121c72,_0x59b8c6){_0x59b8c6=_0x59b8c6||0xc8;return function(_0x2d9c4e){if(_0x2d9c4e){return _0x121c72['status'](_0x59b8c6)[_0x5f67('0x16')](_0x2d9c4e);}};}function respondWithFilteredResult(_0x50a146,_0x1d1b15){return function(_0x2ea6ad){if(_0x2ea6ad){var _0x3a4cc3=typeof _0x1d1b15[_0x5f67('0x17')]===_0x5f67('0x18')&&typeof _0x1d1b15[_0x5f67('0x19')]===_0x5f67('0x18');var _0x223295=_0x2ea6ad[_0x5f67('0x1a')];var _0x8f3bd6=_0x3a4cc3?0x0:_0x1d1b15['offset'];var _0x5bc956=_0x3a4cc3?_0x2ea6ad[_0x5f67('0x1a')]:_0x1d1b15[_0x5f67('0x17')]+_0x1d1b15['limit'];var _0x3a867b;if(_0x5bc956>=_0x223295){_0x5bc956=_0x223295;_0x3a867b=0xc8;}else{_0x3a867b=0xce;}_0x50a146[_0x5f67('0x15')](_0x3a867b);return _0x50a146[_0x5f67('0x1b')](_0x5f67('0x1c'),_0x8f3bd6+'-'+_0x5bc956+'/'+_0x223295)[_0x5f67('0x16')](_0x2ea6ad);}return null;};}function patchUpdates(_0x3d487b){return function(_0x145218){try{jsonpatch[_0x5f67('0x1d')](_0x145218,_0x3d487b,!![]);}catch(_0xf3f894){return BPromise[_0x5f67('0x1e')](_0xf3f894);}return _0x145218[_0x5f67('0x1f')]();};}function saveUpdates(_0x8d876e,_0x531f2e){return function(_0x31980e){if(_0x31980e){return _0x31980e[_0x5f67('0x20')](_0x8d876e)[_0x5f67('0x21')](function(_0x5bb1de){return _0x5bb1de;});}return null;};}function removeEntity(_0x537b39,_0x217cf9){return function(_0x40b138){if(_0x40b138){return _0x40b138['destroy']()[_0x5f67('0x21')](function(){_0x537b39[_0x5f67('0x15')](0xcc)[_0x5f67('0x22')]();});}};}function handleEntityNotFound(_0x2dc788,_0x4b24de){return function(_0x41cfc3){if(!_0x41cfc3){_0x2dc788['sendStatus'](0x194);}return _0x41cfc3;};}function handleError(_0x31b02e,_0x167601){_0x167601=_0x167601||0x1f4;return function(_0x5af40c){logger[_0x5f67('0x23')](_0x5af40c[_0x5f67('0x24')]);if(_0x5af40c['name']){delete _0x5af40c['name'];}_0x31b02e[_0x5f67('0x15')](_0x167601)[_0x5f67('0x25')](_0x5af40c);};}exports[_0x5f67('0x26')]=function(_0x5dd8d7,_0x3491b0){var _0xd36b79={},_0x4a10b5={},_0x172b47={'count':0x0,'rows':[]};var _0x11da91=_['map'](db[_0x5f67('0x27')]['rawAttributes'],function(_0x30d3fd){return{'name':_0x30d3fd[_0x5f67('0x28')],'type':_0x30d3fd[_0x5f67('0x29')]['key']};});_0x4a10b5['model']=_['map'](_0x11da91,_0x5f67('0x2a'));_0x4a10b5['query']=_[_0x5f67('0x2b')](_0x5dd8d7[_0x5f67('0x2c')]);_0x4a10b5[_0x5f67('0x2d')]=_[_0x5f67('0x2e')](_0x4a10b5['model'],_0x4a10b5['query']);_0xd36b79[_0x5f67('0x2f')]=_[_0x5f67('0x2e')](_0x4a10b5[_0x5f67('0x30')],qs[_0x5f67('0x31')](_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x31')]));_0xd36b79['attributes']=_0xd36b79[_0x5f67('0x2f')][_0x5f67('0x32')]?_0xd36b79[_0x5f67('0x2f')]:_0x4a10b5[_0x5f67('0x30')];if(!_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x33')]('nolimit')){_0xd36b79[_0x5f67('0x19')]=qs[_0x5f67('0x19')](_0x5dd8d7['query'][_0x5f67('0x19')]);_0xd36b79[_0x5f67('0x17')]=qs[_0x5f67('0x17')](_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x17')]);}_0xd36b79[_0x5f67('0x34')]=qs[_0x5f67('0x35')](_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x35')]);_0xd36b79[_0x5f67('0x36')]=qs[_0x5f67('0x2d')](_['pick'](_0x5dd8d7[_0x5f67('0x2c')],_0x4a10b5[_0x5f67('0x2d')]),_0x11da91);if(_0x5dd8d7[_0x5f67('0x2c')]['filter']){_0xd36b79[_0x5f67('0x36')]=_[_0x5f67('0x37')](_0xd36b79[_0x5f67('0x36')],{'$or':_[_0x5f67('0x38')](_0x11da91,function(_0x3fed78){if(_0x3fed78[_0x5f67('0x29')]!==_0x5f67('0x39')){var _0x44a43b={};_0x44a43b[_0x3fed78[_0x5f67('0x2a')]]={'$like':'%'+_0x5dd8d7['query'][_0x5f67('0x3a')]+'%'};return _0x44a43b;}})});}_0xd36b79=_['merge']({},_0xd36b79,_0x5dd8d7['options']);var _0x794915={'where':_0xd36b79[_0x5f67('0x36')]};return db[_0x5f67('0x27')][_0x5f67('0x1a')](_0x794915)[_0x5f67('0x21')](function(_0x47a84b){_0x172b47['count']=_0x47a84b;if(_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x3b')]){_0xd36b79[_0x5f67('0x3c')]=[{'all':!![]}];}return db[_0x5f67('0x27')][_0x5f67('0x3d')](_0xd36b79);})['then'](function(_0x3da68d){_0x172b47['rows']=_0x3da68d;return _0x172b47;})[_0x5f67('0x21')](respondWithFilteredResult(_0x3491b0,_0xd36b79))[_0x5f67('0x3e')](handleError(_0x3491b0,null));};exports[_0x5f67('0x3f')]=function(_0x3a6405,_0x212cc1){var _0x4d8f32={'raw':![],'where':{'id':_0x3a6405['params']['id']}},_0x4baf80={};_0x4baf80[_0x5f67('0x30')]=_['keys'](db['Dynamics365Account'][_0x5f67('0x40')]);_0x4baf80[_0x5f67('0x2c')]=_[_0x5f67('0x2b')](_0x3a6405[_0x5f67('0x2c')]);_0x4baf80[_0x5f67('0x2d')]=_[_0x5f67('0x2e')](_0x4baf80[_0x5f67('0x30')],_0x4baf80[_0x5f67('0x2c')]);_0x4d8f32['attributes']=_[_0x5f67('0x2e')](_0x4baf80[_0x5f67('0x30')],qs['fields'](_0x3a6405[_0x5f67('0x2c')]['fields']));_0x4d8f32[_0x5f67('0x2f')]=_0x4d8f32['attributes'][_0x5f67('0x32')]?_0x4d8f32['attributes']:_0x4baf80[_0x5f67('0x30')];if(_0x3a6405[_0x5f67('0x2c')][_0x5f67('0x3b')]){_0x4d8f32['include']=[{'all':!![]}];}_0x4d8f32=_[_0x5f67('0x37')]({},_0x4d8f32,_0x3a6405[_0x5f67('0x41')]);return db['Dynamics365Account']['find'](_0x4d8f32)[_0x5f67('0x21')](handleEntityNotFound(_0x212cc1,null))[_0x5f67('0x21')](respondWithResult(_0x212cc1,null))[_0x5f67('0x3e')](handleError(_0x212cc1,null));};exports[_0x5f67('0x42')]=function(_0xb58550,_0x3f361b){return db[_0x5f67('0x27')][_0x5f67('0x42')](_0xb58550['body'],{})['then'](respondWithResult(_0x3f361b,0xc9))[_0x5f67('0x3e')](handleError(_0x3f361b,null));};exports[_0x5f67('0x20')]=function(_0x3f3bf9,_0x11d2db){if(_0x3f3bf9[_0x5f67('0x43')]['id']){delete _0x3f3bf9[_0x5f67('0x43')]['id'];}return db[_0x5f67('0x27')][_0x5f67('0x44')]({'where':{'id':_0x3f3bf9[_0x5f67('0x45')]['id']}})['then'](handleEntityNotFound(_0x11d2db,null))[_0x5f67('0x21')](saveUpdates(_0x3f3bf9[_0x5f67('0x43')],null))[_0x5f67('0x21')](respondWithResult(_0x11d2db,null))['catch'](handleError(_0x11d2db,null));};exports[_0x5f67('0x46')]=function(_0x29832a,_0x371bb8){return db[_0x5f67('0x27')][_0x5f67('0x44')]({'where':{'id':_0x29832a[_0x5f67('0x45')]['id']}})[_0x5f67('0x21')](handleEntityNotFound(_0x371bb8,null))['then'](removeEntity(_0x371bb8,null))[_0x5f67('0x3e')](handleError(_0x371bb8,null));};exports['getConfigurations']=function(_0x38d730,_0x43e6b0,_0x3d5cbe){var _0x4a9784={};var _0x1d6f6b={};var _0xaa01c1;var _0x3547be;return db[_0x5f67('0x27')][_0x5f67('0x47')]({'where':{'id':_0x38d730['params']['id']}})[_0x5f67('0x21')](handleEntityNotFound(_0x43e6b0,null))['then'](function(_0x344dc2){if(_0x344dc2){_0xaa01c1=_0x344dc2;_0x1d6f6b[_0x5f67('0x30')]=_[_0x5f67('0x2b')](db['Dynamics365Configuration'][_0x5f67('0x40')]);_0x1d6f6b[_0x5f67('0x2c')]=_['keys'](_0x38d730[_0x5f67('0x2c')]);_0x1d6f6b[_0x5f67('0x2d')]=_[_0x5f67('0x2e')](_0x1d6f6b['model'],_0x1d6f6b['query']);_0x4a9784['attributes']=_[_0x5f67('0x2e')](_0x1d6f6b[_0x5f67('0x30')],qs[_0x5f67('0x31')](_0x38d730['query'][_0x5f67('0x31')]));_0x4a9784[_0x5f67('0x2f')]=_0x4a9784[_0x5f67('0x2f')][_0x5f67('0x32')]?_0x4a9784[_0x5f67('0x2f')]:_0x1d6f6b[_0x5f67('0x30')];_0x4a9784[_0x5f67('0x34')]=qs[_0x5f67('0x35')](_0x38d730[_0x5f67('0x2c')]['sort']);_0x4a9784[_0x5f67('0x36')]=qs[_0x5f67('0x2d')](_['pick'](_0x38d730[_0x5f67('0x2c')],_0x1d6f6b[_0x5f67('0x2d')]));if(_0x38d730[_0x5f67('0x2c')][_0x5f67('0x3a')]){_0x4a9784['where']=_[_0x5f67('0x37')](_0x4a9784[_0x5f67('0x36')],{'$or':_[_0x5f67('0x38')](_0x4a9784[_0x5f67('0x2f')],function(_0x545ef5){var _0x3fa9c0={};_0x3fa9c0[_0x545ef5]={'$like':'%'+_0x38d730[_0x5f67('0x2c')][_0x5f67('0x3a')]+'%'};return _0x3fa9c0;})});}_0x4a9784=_[_0x5f67('0x37')]({},_0x4a9784,_0x38d730['options']);return _0xaa01c1['getConfigurations'](_0x4a9784);}})[_0x5f67('0x21')](function(_0xb1e12c){if(_0xb1e12c){_0x3547be=_0xb1e12c[_0x5f67('0x32')];if(!_0x38d730['query'][_0x5f67('0x33')](_0x5f67('0x48'))){_0x4a9784[_0x5f67('0x19')]=qs['limit'](_0x38d730[_0x5f67('0x2c')][_0x5f67('0x19')]);_0x4a9784[_0x5f67('0x17')]=qs[_0x5f67('0x17')](_0x38d730[_0x5f67('0x2c')][_0x5f67('0x17')]);}return _0xaa01c1[_0x5f67('0x49')](_0x4a9784);}})[_0x5f67('0x21')](function(_0x43de23){if(_0x43de23){return _0x43de23?{'count':_0x3547be,'rows':_0x43de23}:null;}})[_0x5f67('0x21')](respondWithResult(_0x43e6b0,null))['catch'](handleError(_0x43e6b0,null));};exports['addConfiguration']=function(_0x2e0e52,_0x39b262,_0x58ee8c){if(_0x2e0e52['body']['id']){delete _0x2e0e52[_0x5f67('0x43')]['id'];}return db[_0x5f67('0x27')]['findOne']({'where':{'id':_0x2e0e52[_0x5f67('0x45')]['id']}})[_0x5f67('0x21')](handleEntityNotFound(_0x39b262,null))[_0x5f67('0x21')](function(_0x5ed197){if(_0x5ed197){_0x2e0e52['body'][_0x5f67('0x4a')]=_0x5ed197['id'];_0x2e0e52[_0x5f67('0x43')][_0x5f67('0x4b')]=integrations[_0x5f67('0x4c')](_0x2e0e52['body']['channel'],_0x2e0e52['body'][_0x5f67('0x29')]);_0x2e0e52['body'][_0x5f67('0x4d')]=integrations['getDescriptions'](_0x2e0e52[_0x5f67('0x43')][_0x5f67('0x4e')],_0x2e0e52[_0x5f67('0x43')][_0x5f67('0x29')]);return db[_0x5f67('0x4f')][_0x5f67('0x42')](_0x2e0e52[_0x5f67('0x43')],{'include':[{'model':db['Dynamics365Field'],'as':_0x5f67('0x4b')},{'model':db['Dynamics365Field'],'as':_0x5f67('0x4d')}]});}return null;})[_0x5f67('0x21')](respondWithResult(_0x39b262,null))[_0x5f67('0x3e')](handleError(_0x39b262,null));};exports[_0x5f67('0x50')]=function(_0x2baff6,_0x21e3be,_0xf20c36){var _0x10277c=_0x2baff6['query'][_0x5f67('0x51')];var _0x520762=_0x10277c===_0x5f67('0x52')?'Incident':_0x5f67('0x53');var _0xc8010e='';var _0x41293b='';var _0x588dc5='';var _0x520fb1='';var _0x1dbba7='';var _0x20fce1='';var _0x5a4f9b='';var _0x244fb9='';var _0x136a18=['title','description',_0x5f67('0x54'),_0x5f67('0x55'),_0x5f67('0x56'),'subject',_0x5f67('0x57'),_0x5f67('0x58'),'directioncode',_0x5f67('0x59')];var _0x393558=[_0x5f67('0x5a'),'accountidyominame',_0x5f67('0x5b'),_0x5f67('0x5c'),_0x5f67('0x5d'),_0x5f67('0x5e'),_0x5f67('0x5f'),'contractidname',_0x5f67('0x60'),_0x5f67('0x61'),_0x5f67('0x62'),_0x5f67('0x63'),_0x5f67('0x64'),'createdonbehalfbyname',_0x5f67('0x65'),_0x5f67('0x66'),'customeridtype','customeridyominame','emailaddress',_0x5f67('0x67'),_0x5f67('0x68'),_0x5f67('0x69'),_0x5f67('0x6a'),_0x5f67('0x6b'),'firstresponsebykpiidname','followupby',_0x5f67('0x6c'),_0x5f67('0x6d'),_0x5f67('0x6e'),'lastonholdtime',_0x5f67('0x6f'),_0x5f67('0x70'),_0x5f67('0x71'),_0x5f67('0x72'),_0x5f67('0x73'),_0x5f67('0x74'),'modifiedonbehalfbyname',_0x5f67('0x75'),'msdyn_incidenttypename',_0x5f67('0x76'),_0x5f67('0x77'),'onholdtime','overriddencreatedon',_0x5f67('0x78'),'owneridtype','owneridyominame','parentcaseidname','primarycontactidname',_0x5f67('0x79'),'prioritycodename','productidname','productserialnumber','resolveby',_0x5f67('0x7a'),_0x5f67('0x7b'),'responsiblecontactidname',_0x5f67('0x7c'),'sentimentvalue',_0x5f67('0x7d'),_0x5f67('0x7e'),_0x5f67('0x7f'),_0x5f67('0x80'),_0x5f67('0x81'),_0x5f67('0x82'),'ticketnumber','timezoneruleversionnumber',_0x5f67('0x83'),_0x5f67('0x84'),_0x5f67('0x85'),_0x5f67('0x86')];var _0x5a6a5b=_0x136a18['concat'](_0x393558);return db['Dynamics365Account']['findOne']({'where':{'id':_0x2baff6[_0x5f67('0x45')]['id']},'attributes':['id','username','password',_0x5f67('0x87'),'tenantId',_0x5f67('0x88'),'clientSecret']})[_0x5f67('0x21')](handleEntityNotFound(_0x21e3be,null))['then'](function(_0x1005fa){if(_0x1005fa){_0x244fb9=_0x1005fa['remoteUri'];var _0x5202cb=_0x244fb9[_0x5f67('0x89')](-0x1);if(_0x5202cb==='/'){_0x244fb9=_0x244fb9[_0x5f67('0x8a')](0x0,_0x244fb9['lastIndexOf'](_0x5202cb));}_0x5a4f9b=util['format'](_0x5f67('0x8b'),_0x244fb9);var _0x40c39e={'method':_0x5f67('0x8c'),'uri':_0x5f67('0x8d')+_0x1005fa[_0x5f67('0x8e')]+_0x5f67('0x8f'),'form':{'client_id':_0x1005fa[_0x5f67('0x88')],'resource':_0x244fb9,'username':_0x1005fa[_0x5f67('0x90')],'password':_0x1005fa[_0x5f67('0x91')],'grant_type':_0x5f67('0x91'),'client_secret':_0x1005fa['clientSecret']},'json':!![]};return rp(_0x40c39e);}})[_0x5f67('0x21')](function(_0x5f67f3){_0x20fce1=_0x5f67f3[_0x5f67('0x92')];var _0x3c843e={'method':'GET','uri':encodeURI(_0x5a4f9b+_0x5f67('0x93')+_0x520762+'\x27'),'headers':{'Authorization':_0x5f67('0x94')+_0x20fce1,'If-None-Match':null,'OData-Version':_0x5f67('0x95')},'json':!![]};return rp(_0x3c843e);})[_0x5f67('0x21')](function(_0x395c97){var _0x1e0df7=_0x395c97['value'][0x0];var _0x30d4c7=_0x1e0df7[_0x5f67('0x96')];var _0x3fd1f4={'method':_0x5f67('0x97'),'uri':_0x5a4f9b+_0x5f67('0x98')+_0x30d4c7+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':'Bearer\x20'+_0x20fce1,'If-None-Match':null,'OData-Version':_0x5f67('0x95')},'json':!![]};return rp(_0x3fd1f4);})[_0x5f67('0x21')](function(_0x1730a7){_0xc8010e=_0x1730a7;_0x41293b=_0xc8010e['Attributes'];_0x41293b=_[_0x5f67('0x99')](_0x41293b,function(_0x77c146){return!_0x5a6a5b[_0x5f67('0x9a')](_0x77c146[_0x5f67('0x9b')]);});var _0x22cf65=[];var _0x24df53=[];_0x41293b[_0x5f67('0x9c')](function(_0x2e3d41){if(_0x2e3d41['@odata.type']){var _0x565e75=_0x2e3d41[_0x5f67('0x9d')][_0x5f67('0x8a')](_0x2e3d41['@odata.type'][_0x5f67('0x9e')]('.')+0x1);if(_0x565e75===_0x5f67('0x9f')){_0x22cf65[_0x5f67('0xa0')](getSelectList(_0x5a4f9b,_0x10277c,_0x24df53,_0xc8010e['MetadataId'],_0x2e3d41[_0x5f67('0x96')],_0x20fce1));}}});return Promise[_0x5f67('0xa1')](_0x22cf65);})[_0x5f67('0x21')](function(_0x549bb8){_0x588dc5=_0x549bb8[0x0];var _0x4471df=[];var _0x5ab2e1=[];_0x41293b[_0x5f67('0x9c')](function(_0x25ad1f){if(!_[_0x5f67('0xa2')](_0x25ad1f[_0x5f67('0x9d')])){var _0xff33a5=_0x25ad1f[_0x5f67('0x9d')][_0x5f67('0x8a')](_0x25ad1f['@odata.type'][_0x5f67('0x9e')]('.')+0x1);if(_0xff33a5==='BooleanAttributeMetadata'){_0x4471df['push'](getBooleanList(_0x5a4f9b,_0x10277c,_0x5ab2e1,_0xc8010e[_0x5f67('0x96')],_0x25ad1f[_0x5f67('0x96')],_0x20fce1));}}});return Promise[_0x5f67('0xa1')](_0x4471df);})[_0x5f67('0x21')](function(_0x55df2a){_0x520fb1=_0x55df2a[0x0];var _0x112186=[];var _0x32272c=[];_0x41293b[_0x5f67('0x9c')](function(_0x259090){if(_0x259090[_0x5f67('0x9d')]){var _0x5cdc1d=_0x259090[_0x5f67('0x9d')]['substring'](_0x259090[_0x5f67('0x9d')][_0x5f67('0x9e')]('.')+0x1);if(_0x5cdc1d===_0x5f67('0xa3')||_0x5cdc1d==='DoubleAttributeMetadata'||_0x5cdc1d===_0x5f67('0xa4')||_0x5cdc1d===_0x5f67('0xa5')||_0x5cdc1d==='MemoAttributeMetadata'||_0x5cdc1d===_0x5f67('0xa6')||_0x5cdc1d==='StatusAttributeMetadata'||_0x5cdc1d===_0x5f67('0xa7')||_0x5cdc1d===_0x5f67('0xa8')||_0x5cdc1d===_0x5f67('0xa9')){_0x112186[_0x5f67('0xa0')](getInputList(_0x5a4f9b,_0x10277c,_0x5cdc1d,_0x32272c,_0xc8010e[_0x5f67('0x96')],_0x259090[_0x5f67('0x96')],_0x20fce1));}}});return Promise['all'](_0x112186);})['then'](function(_0x3f377e){_0x1dbba7=_0x3f377e[0x0];var _0x3b74b0=_0x588dc5[_0x5f67('0xaa')](_0x520fb1)[_0x5f67('0xaa')](_0x1dbba7);var _0x588f57={'count':_0x3b74b0[_0x5f67('0x32')],'rows':_0x3b74b0};return _0x588f57;})[_0x5f67('0x21')](respondWithResult(_0x21e3be,null))['catch'](function(_0x213587){var _0x3362ba=_0x2baff6[_0x5f67('0x2c')][_0x5f67('0xab')]?0x1f4:_0x213587[_0x5f67('0xac')]||0x1f4;logger[_0x5f67('0x23')](_0x213587[_0x5f67('0x24')]);delete _0x213587[_0x5f67('0x2a')];if(_0x3362ba===0x191){_0x3362ba=0x190;}_0x21e3be[_0x5f67('0x15')](_0x3362ba)[_0x5f67('0x25')](_0x2baff6['query'][_0x5f67('0xab')]?{'message':_0x5f67('0xad'),'statusCode':_0x213587[_0x5f67('0xac')]}:_0x213587);});};function getSelectList(_0x468238,_0x2638c9,_0x2c0a9e,_0x14981d,_0x2f80e0,_0x4bf10c){var _0x18f4fb={'method':'GET','uri':_0x468238+_0x5f67('0x98')+_0x14981d+_0x5f67('0xae')+_0x2f80e0+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x5f67('0xaf'),'headers':{'Authorization':_0x5f67('0x94')+_0x4bf10c,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x18f4fb)['then'](function(_0x8839eb){var _0x20976b=[];var _0x17e554=_0x8839eb[_0x5f67('0xb0')][_0x5f67('0xb1')];_0x17e554[_0x5f67('0x9c')](function(_0x4dab12){_0x20976b[_0x5f67('0xa0')]({'name':_0x4dab12[_0x5f67('0xb2')][_0x5f67('0xb3')][_0x5f67('0xb2')],'value':String(_0x4dab12['Value'])});});var _0x44a972={'id':_0x2638c9+'_'+_0x8839eb['LogicalName'],'name':_0x8839eb[_0x5f67('0xb4')][_0x5f67('0xb3')]['Label'],'custom':![],'options':_0x20976b};_0x2c0a9e[_0x5f67('0xa0')](_0x44a972);return _0x2c0a9e;});}function getBooleanList(_0x112129,_0x33c0bd,_0xf1f5b4,_0x580a30,_0x1e2165,_0x4df798){var _0x1e1b14={'method':_0x5f67('0x97'),'uri':_0x112129+_0x5f67('0x98')+_0x580a30+_0x5f67('0xae')+_0x1e2165+_0x5f67('0xb5'),'headers':{'Authorization':'Bearer\x20'+_0x4df798,'If-None-Match':null,'OData-Version':_0x5f67('0x95')},'json':!![]};return rp(_0x1e1b14)[_0x5f67('0x21')](function(_0x2e09a9){var _0x272d12=[];_0x272d12[_0x5f67('0xa0')]({'name':_0x2e09a9[_0x5f67('0xb0')]['TrueOption'][_0x5f67('0xb2')][_0x5f67('0xb3')][_0x5f67('0xb2')],'value':_0x5f67('0xb6')},{'name':_0x2e09a9[_0x5f67('0xb0')][_0x5f67('0xb7')][_0x5f67('0xb2')]['UserLocalizedLabel'][_0x5f67('0xb2')],'value':'false'});var _0x532202={'id':_0x33c0bd+'_'+_0x2e09a9[_0x5f67('0x9b')],'name':_0x2e09a9[_0x5f67('0xb4')][_0x5f67('0xb3')][_0x5f67('0xb2')],'custom':![],'options':_0x272d12};_0xf1f5b4[_0x5f67('0xa0')](_0x532202);return _0xf1f5b4;});}function getInputList(_0x556718,_0x3dcb35,_0xeb1ec1,_0x5d3054,_0x517f93,_0x1e7ffe,_0xd59c96){var _0x32294c={'method':'GET','uri':_0x556718+_0x5f67('0x98')+_0x517f93+_0x5f67('0xae')+_0x1e7ffe+_0x5f67('0xb8')+_0xeb1ec1+_0x5f67('0xb9'),'headers':{'Authorization':'Bearer\x20'+_0xd59c96,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x32294c)[_0x5f67('0x21')](function(_0x5515be){var _0x1e749e={'id':_0x3dcb35+'_'+_0x5515be[_0x5f67('0x9b')],'name':_0x5515be[_0x5f67('0xb4')][_0x5f67('0xb3')]?_0x5515be[_0x5f67('0xb4')][_0x5f67('0xb3')][_0x5f67('0xb2')]:_0x5515be[_0x5f67('0x9b')],'custom':![],'options':[]};_0x5d3054[_0x5f67('0xa0')](_0x1e749e);return _0x5d3054;});}
\ No newline at end of file
+var _0xf874=['forEach','@odata.type','PicklistAttributeMetadata','push','isNil','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','all','concat','test','statusCode','Wrong\x20credentials','GET','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel','Value',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','FalseOption','false','DisplayName',')/Attributes(',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','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/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','reject','then','destroy','end','error','stack','name','send','index','map','Dynamics365Account','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','includeAll','findAll','rows','show','params','include','options','find','catch','create','body','getConfigurations','findOne','Dynamics365Configuration','length','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','Dynamics365Field','getFields','ticketType','incident','PhoneCall','description','customerid','subject','regardingobjectid','phonecall_activity_parties','actualserviceunits','billedserviceunits','contactidname','contractidname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridtype','customeridyominame','emailaddress','entityimage_timestamp','entityimage_url','escalatedon','firstresponsebykpiidname','importsequencenumber','influencescore','kbarticleidname','masteridname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','parentcaseidname','primarycontactidyominame','resolveby','resolvebykpiidname','responsiblecontactidyominame','sentimentvalue','slaname','socialprofileidname','statecode','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','utcconversiontimezonecode','versionnumber','username','password','remoteUri','tenantId','clientId','clientSecret','slice','substring','lastIndexOf','format','%s/api/data/v9.0/','POST','https://login.microsoftonline.com/','/oauth2/token','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','LogicalName'];(function(_0x58b5b8,_0x24512c){var _0x288d04=function(_0x440990){while(--_0x440990){_0x58b5b8['push'](_0x58b5b8['shift']());}};_0x288d04(++_0x24512c);}(_0xf874,0xed));var _0x4f87=function(_0x4fbbbf,_0xa36f4a){_0x4fbbbf=_0x4fbbbf-0x0;var _0x4d922d=_0xf874[_0x4fbbbf];return _0x4d922d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4f87('0x0'));var jsonpatch=require(_0x4f87('0x1'));var rp=require(_0x4f87('0x2'));var moment=require(_0x4f87('0x3'));var BPromise=require(_0x4f87('0x4'));var Mustache=require(_0x4f87('0x5'));var util=require('util');var path=require(_0x4f87('0x6'));var sox=require(_0x4f87('0x7'));var csv=require(_0x4f87('0x8'));var ejs=require(_0x4f87('0x9'));var fs=require('fs');var fs_extra=require(_0x4f87('0xa'));var _=require(_0x4f87('0xb'));var squel=require('squel');var crypto=require(_0x4f87('0xc'));var jsforce=require(_0x4f87('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4f87('0x8'));var querystring=require(_0x4f87('0xe'));var Papa=require('papaparse');var Redis=require(_0x4f87('0xf'));var authService=require(_0x4f87('0x10'));var qs=require(_0x4f87('0x11'));var as=require(_0x4f87('0x12'));var hardwareService=require(_0x4f87('0x13'));var logger=require(_0x4f87('0x14'))(_0x4f87('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x4f87('0x16'));var db=require(_0x4f87('0x17'))['db'];var integrations=require(_0x4f87('0x18'));function respondWithStatusCode(_0x5e6d04,_0x4ebb6a){_0x4ebb6a=_0x4ebb6a||0xcc;return function(_0x1cfc27){if(_0x1cfc27){return _0x5e6d04[_0x4f87('0x19')](_0x4ebb6a);}return _0x5e6d04[_0x4f87('0x1a')](_0x4ebb6a)['end']();};}function respondWithResult(_0x2f11d2,_0x4a0e2f){_0x4a0e2f=_0x4a0e2f||0xc8;return function(_0x3d6dcb){if(_0x3d6dcb){return _0x2f11d2[_0x4f87('0x1a')](_0x4a0e2f)['json'](_0x3d6dcb);}};}function respondWithFilteredResult(_0x2907f6,_0x325edc){return function(_0xa47360){if(_0xa47360){var _0x405538=typeof _0x325edc[_0x4f87('0x1b')]===_0x4f87('0x1c')&&typeof _0x325edc['limit']===_0x4f87('0x1c');var _0x517a4c=_0xa47360[_0x4f87('0x1d')];var _0x6a3017=_0x405538?0x0:_0x325edc[_0x4f87('0x1b')];var _0x42c399=_0x405538?_0xa47360[_0x4f87('0x1d')]:_0x325edc[_0x4f87('0x1b')]+_0x325edc[_0x4f87('0x1e')];var _0x3b9f89;if(_0x42c399>=_0x517a4c){_0x42c399=_0x517a4c;_0x3b9f89=0xc8;}else{_0x3b9f89=0xce;}_0x2907f6[_0x4f87('0x1a')](_0x3b9f89);return _0x2907f6[_0x4f87('0x1f')](_0x4f87('0x20'),_0x6a3017+'-'+_0x42c399+'/'+_0x517a4c)[_0x4f87('0x21')](_0xa47360);}return null;};}function patchUpdates(_0x17d5f8){return function(_0x576065){try{jsonpatch['apply'](_0x576065,_0x17d5f8,!![]);}catch(_0x3cb630){return BPromise[_0x4f87('0x22')](_0x3cb630);}return _0x576065['save']();};}function saveUpdates(_0x592edd,_0x30636d){return function(_0x5d1e62){if(_0x5d1e62){return _0x5d1e62['update'](_0x592edd)[_0x4f87('0x23')](function(_0x3c4450){return _0x3c4450;});}return null;};}function removeEntity(_0x2a382c,_0x3cf180){return function(_0x17bdbd){if(_0x17bdbd){return _0x17bdbd[_0x4f87('0x24')]()[_0x4f87('0x23')](function(){_0x2a382c['status'](0xcc)[_0x4f87('0x25')]();});}};}function handleEntityNotFound(_0x11eb83,_0x207988){return function(_0x4d771d){if(!_0x4d771d){_0x11eb83[_0x4f87('0x19')](0x194);}return _0x4d771d;};}function handleError(_0x3ebff5,_0x51b8dd){_0x51b8dd=_0x51b8dd||0x1f4;return function(_0x19e3ba){logger[_0x4f87('0x26')](_0x19e3ba[_0x4f87('0x27')]);if(_0x19e3ba[_0x4f87('0x28')]){delete _0x19e3ba['name'];}_0x3ebff5['status'](_0x51b8dd)[_0x4f87('0x29')](_0x19e3ba);};}exports[_0x4f87('0x2a')]=function(_0xeaaf08,_0x39f311){var _0x38e102={},_0x4e8a3d={},_0x24aed4={'count':0x0,'rows':[]};var _0x4ca7c2=_[_0x4f87('0x2b')](db[_0x4f87('0x2c')][_0x4f87('0x2d')],function(_0x430cf9){return{'name':_0x430cf9[_0x4f87('0x2e')],'type':_0x430cf9[_0x4f87('0x2f')][_0x4f87('0x30')]};});_0x4e8a3d['model']=_[_0x4f87('0x2b')](_0x4ca7c2,'name');_0x4e8a3d[_0x4f87('0x31')]=_[_0x4f87('0x32')](_0xeaaf08[_0x4f87('0x31')]);_0x4e8a3d[_0x4f87('0x33')]=_[_0x4f87('0x34')](_0x4e8a3d[_0x4f87('0x35')],_0x4e8a3d[_0x4f87('0x31')]);_0x38e102[_0x4f87('0x36')]=_[_0x4f87('0x34')](_0x4e8a3d[_0x4f87('0x35')],qs[_0x4f87('0x37')](_0xeaaf08[_0x4f87('0x31')]['fields']));_0x38e102[_0x4f87('0x36')]=_0x38e102[_0x4f87('0x36')]['length']?_0x38e102[_0x4f87('0x36')]:_0x4e8a3d[_0x4f87('0x35')];if(!_0xeaaf08[_0x4f87('0x31')]['hasOwnProperty'](_0x4f87('0x38'))){_0x38e102[_0x4f87('0x1e')]=qs['limit'](_0xeaaf08[_0x4f87('0x31')]['limit']);_0x38e102[_0x4f87('0x1b')]=qs[_0x4f87('0x1b')](_0xeaaf08[_0x4f87('0x31')]['offset']);}_0x38e102[_0x4f87('0x39')]=qs['sort'](_0xeaaf08['query'][_0x4f87('0x3a')]);_0x38e102[_0x4f87('0x3b')]=qs['filters'](_[_0x4f87('0x3c')](_0xeaaf08[_0x4f87('0x31')],_0x4e8a3d[_0x4f87('0x33')]),_0x4ca7c2);if(_0xeaaf08[_0x4f87('0x31')]['filter']){_0x38e102['where']=_['merge'](_0x38e102['where'],{'$or':_[_0x4f87('0x2b')](_0x4ca7c2,function(_0x44a0c1){if(_0x44a0c1['type']!==_0x4f87('0x3d')){var _0x3c6f4b={};_0x3c6f4b[_0x44a0c1[_0x4f87('0x28')]]={'$like':'%'+_0xeaaf08[_0x4f87('0x31')][_0x4f87('0x3e')]+'%'};return _0x3c6f4b;}})});}_0x38e102=_[_0x4f87('0x3f')]({},_0x38e102,_0xeaaf08['options']);var _0x13ee29={'where':_0x38e102[_0x4f87('0x3b')]};return db['Dynamics365Account'][_0x4f87('0x1d')](_0x13ee29)[_0x4f87('0x23')](function(_0x4194ac){_0x24aed4['count']=_0x4194ac;if(_0xeaaf08[_0x4f87('0x31')][_0x4f87('0x40')]){_0x38e102['include']=[{'all':!![]}];}return db[_0x4f87('0x2c')][_0x4f87('0x41')](_0x38e102);})[_0x4f87('0x23')](function(_0xe2387f){_0x24aed4[_0x4f87('0x42')]=_0xe2387f;return _0x24aed4;})[_0x4f87('0x23')](respondWithFilteredResult(_0x39f311,_0x38e102))['catch'](handleError(_0x39f311,null));};exports[_0x4f87('0x43')]=function(_0xdf7c8d,_0x117b00){var _0x29c7c5={'raw':![],'where':{'id':_0xdf7c8d[_0x4f87('0x44')]['id']}},_0x5b8c3b={};_0x5b8c3b['model']=_[_0x4f87('0x32')](db[_0x4f87('0x2c')][_0x4f87('0x2d')]);_0x5b8c3b[_0x4f87('0x31')]=_['keys'](_0xdf7c8d['query']);_0x5b8c3b['filters']=_['intersection'](_0x5b8c3b['model'],_0x5b8c3b['query']);_0x29c7c5[_0x4f87('0x36')]=_[_0x4f87('0x34')](_0x5b8c3b[_0x4f87('0x35')],qs[_0x4f87('0x37')](_0xdf7c8d[_0x4f87('0x31')][_0x4f87('0x37')]));_0x29c7c5[_0x4f87('0x36')]=_0x29c7c5[_0x4f87('0x36')]['length']?_0x29c7c5[_0x4f87('0x36')]:_0x5b8c3b[_0x4f87('0x35')];if(_0xdf7c8d[_0x4f87('0x31')][_0x4f87('0x40')]){_0x29c7c5[_0x4f87('0x45')]=[{'all':!![]}];}_0x29c7c5=_[_0x4f87('0x3f')]({},_0x29c7c5,_0xdf7c8d[_0x4f87('0x46')]);return db[_0x4f87('0x2c')][_0x4f87('0x47')](_0x29c7c5)[_0x4f87('0x23')](handleEntityNotFound(_0x117b00,null))[_0x4f87('0x23')](respondWithResult(_0x117b00,null))[_0x4f87('0x48')](handleError(_0x117b00,null));};exports[_0x4f87('0x49')]=function(_0x2399ac,_0x11e6fb){return db[_0x4f87('0x2c')][_0x4f87('0x49')](_0x2399ac['body'],{})[_0x4f87('0x23')](respondWithResult(_0x11e6fb,0xc9))['catch'](handleError(_0x11e6fb,null));};exports['update']=function(_0x3e7383,_0x413993){if(_0x3e7383[_0x4f87('0x4a')]['id']){delete _0x3e7383[_0x4f87('0x4a')]['id'];}return db[_0x4f87('0x2c')][_0x4f87('0x47')]({'where':{'id':_0x3e7383[_0x4f87('0x44')]['id']}})[_0x4f87('0x23')](handleEntityNotFound(_0x413993,null))[_0x4f87('0x23')](saveUpdates(_0x3e7383[_0x4f87('0x4a')],null))['then'](respondWithResult(_0x413993,null))['catch'](handleError(_0x413993,null));};exports[_0x4f87('0x24')]=function(_0x258b6c,_0xb34275){return db['Dynamics365Account']['find']({'where':{'id':_0x258b6c[_0x4f87('0x44')]['id']}})[_0x4f87('0x23')](handleEntityNotFound(_0xb34275,null))[_0x4f87('0x23')](removeEntity(_0xb34275,null))[_0x4f87('0x48')](handleError(_0xb34275,null));};exports[_0x4f87('0x4b')]=function(_0x1d851f,_0x54f089,_0x3d5d27){var _0x4de8bb={};var _0x16361a={};var _0x4c1751;var _0x225c5c;return db[_0x4f87('0x2c')][_0x4f87('0x4c')]({'where':{'id':_0x1d851f[_0x4f87('0x44')]['id']}})[_0x4f87('0x23')](handleEntityNotFound(_0x54f089,null))[_0x4f87('0x23')](function(_0x22c389){if(_0x22c389){_0x4c1751=_0x22c389;_0x16361a['model']=_[_0x4f87('0x32')](db[_0x4f87('0x4d')][_0x4f87('0x2d')]);_0x16361a['query']=_[_0x4f87('0x32')](_0x1d851f['query']);_0x16361a[_0x4f87('0x33')]=_[_0x4f87('0x34')](_0x16361a[_0x4f87('0x35')],_0x16361a[_0x4f87('0x31')]);_0x4de8bb[_0x4f87('0x36')]=_['intersection'](_0x16361a[_0x4f87('0x35')],qs[_0x4f87('0x37')](_0x1d851f['query'][_0x4f87('0x37')]));_0x4de8bb[_0x4f87('0x36')]=_0x4de8bb[_0x4f87('0x36')][_0x4f87('0x4e')]?_0x4de8bb[_0x4f87('0x36')]:_0x16361a[_0x4f87('0x35')];_0x4de8bb[_0x4f87('0x39')]=qs[_0x4f87('0x3a')](_0x1d851f[_0x4f87('0x31')][_0x4f87('0x3a')]);_0x4de8bb[_0x4f87('0x3b')]=qs[_0x4f87('0x33')](_[_0x4f87('0x3c')](_0x1d851f[_0x4f87('0x31')],_0x16361a[_0x4f87('0x33')]));if(_0x1d851f[_0x4f87('0x31')][_0x4f87('0x3e')]){_0x4de8bb[_0x4f87('0x3b')]=_[_0x4f87('0x3f')](_0x4de8bb[_0x4f87('0x3b')],{'$or':_[_0x4f87('0x2b')](_0x4de8bb[_0x4f87('0x36')],function(_0x237a82){var _0x1cbbf3={};_0x1cbbf3[_0x237a82]={'$like':'%'+_0x1d851f[_0x4f87('0x31')][_0x4f87('0x3e')]+'%'};return _0x1cbbf3;})});}_0x4de8bb=_[_0x4f87('0x3f')]({},_0x4de8bb,_0x1d851f[_0x4f87('0x46')]);return _0x4c1751[_0x4f87('0x4b')](_0x4de8bb);}})[_0x4f87('0x23')](function(_0x1709bb){if(_0x1709bb){_0x225c5c=_0x1709bb[_0x4f87('0x4e')];if(!_0x1d851f[_0x4f87('0x31')][_0x4f87('0x4f')]('nolimit')){_0x4de8bb['limit']=qs[_0x4f87('0x1e')](_0x1d851f[_0x4f87('0x31')][_0x4f87('0x1e')]);_0x4de8bb['offset']=qs[_0x4f87('0x1b')](_0x1d851f[_0x4f87('0x31')]['offset']);}return _0x4c1751['getConfigurations'](_0x4de8bb);}})[_0x4f87('0x23')](function(_0xca165b){if(_0xca165b){return _0xca165b?{'count':_0x225c5c,'rows':_0xca165b}:null;}})[_0x4f87('0x23')](respondWithResult(_0x54f089,null))['catch'](handleError(_0x54f089,null));};exports[_0x4f87('0x50')]=function(_0x341617,_0x444114,_0x6b70ad){if(_0x341617[_0x4f87('0x4a')]['id']){delete _0x341617[_0x4f87('0x4a')]['id'];}return db['Dynamics365Account'][_0x4f87('0x4c')]({'where':{'id':_0x341617[_0x4f87('0x44')]['id']}})[_0x4f87('0x23')](handleEntityNotFound(_0x444114,null))['then'](function(_0x4108ac){if(_0x4108ac){_0x341617[_0x4f87('0x4a')][_0x4f87('0x51')]=_0x4108ac['id'];_0x341617['body'][_0x4f87('0x52')]=integrations[_0x4f87('0x53')](_0x341617[_0x4f87('0x4a')]['channel'],_0x341617[_0x4f87('0x4a')][_0x4f87('0x2f')]);_0x341617['body'][_0x4f87('0x54')]=integrations[_0x4f87('0x55')](_0x341617[_0x4f87('0x4a')][_0x4f87('0x56')],_0x341617[_0x4f87('0x4a')][_0x4f87('0x2f')]);return db[_0x4f87('0x4d')][_0x4f87('0x49')](_0x341617[_0x4f87('0x4a')],{'include':[{'model':db[_0x4f87('0x57')],'as':_0x4f87('0x52')},{'model':db[_0x4f87('0x57')],'as':_0x4f87('0x54')}]});}return null;})[_0x4f87('0x23')](respondWithResult(_0x444114,null))[_0x4f87('0x48')](handleError(_0x444114,null));};exports[_0x4f87('0x58')]=function(_0x4ceff6,_0x33e0bd,_0xf2cd72){var _0x2928c2=_0x4ceff6[_0x4f87('0x31')][_0x4f87('0x59')];var _0x24babc=_0x2928c2===_0x4f87('0x5a')?'Incident':_0x4f87('0x5b');var _0x415111='';var _0x13b198='';var _0x154784='';var _0x19712e='';var _0x9ed0c1='';var _0x5530df='';var _0xd60af5='';var _0x12f06f='';var _0x18ac81=['title',_0x4f87('0x5c'),_0x4f87('0x5d'),'ownerid','caseorigincode',_0x4f87('0x5e'),'phonenumber',_0x4f87('0x5f'),'directioncode',_0x4f87('0x60')];var _0x22042f=['accountidname','accountidyominame',_0x4f87('0x61'),_0x4f87('0x62'),_0x4f87('0x63'),'contactidyominame','contractdetailidname',_0x4f87('0x64'),'createdbyexternalpartyname',_0x4f87('0x65'),_0x4f87('0x66'),_0x4f87('0x67'),_0x4f87('0x68'),_0x4f87('0x69'),_0x4f87('0x6a'),'customeridname',_0x4f87('0x6b'),_0x4f87('0x6c'),_0x4f87('0x6d'),'entitlementidname',_0x4f87('0x6e'),_0x4f87('0x6f'),_0x4f87('0x70'),'exchangerate',_0x4f87('0x71'),'followupby',_0x4f87('0x72'),_0x4f87('0x73'),_0x4f87('0x74'),'lastonholdtime',_0x4f87('0x75'),'modifiedbyexternalpartyname',_0x4f87('0x76'),_0x4f87('0x77'),_0x4f87('0x78'),_0x4f87('0x79'),_0x4f87('0x7a'),'modifiedonbehalfbyyominame',_0x4f87('0x7b'),_0x4f87('0x7c'),_0x4f87('0x7d'),_0x4f87('0x7e'),_0x4f87('0x7f'),_0x4f87('0x80'),_0x4f87('0x81'),'owneridyominame',_0x4f87('0x82'),'primarycontactidname',_0x4f87('0x83'),'prioritycodename','productidname','productserialnumber',_0x4f87('0x84'),_0x4f87('0x85'),'responseby','responsiblecontactidname',_0x4f87('0x86'),_0x4f87('0x87'),'slainvokedidname',_0x4f87('0x88'),_0x4f87('0x89'),_0x4f87('0x8a'),_0x4f87('0x8b'),_0x4f87('0x8c'),_0x4f87('0x8d'),_0x4f87('0x8e'),_0x4f87('0x8f'),'traversedpath',_0x4f87('0x90'),_0x4f87('0x91')];var _0x576565=_0x18ac81['concat'](_0x22042f);return db[_0x4f87('0x2c')][_0x4f87('0x4c')]({'where':{'id':_0x4ceff6[_0x4f87('0x44')]['id']},'attributes':['id',_0x4f87('0x92'),_0x4f87('0x93'),_0x4f87('0x94'),_0x4f87('0x95'),_0x4f87('0x96'),_0x4f87('0x97')]})['then'](handleEntityNotFound(_0x33e0bd,null))[_0x4f87('0x23')](function(_0x562077){if(_0x562077){_0x12f06f=_0x562077[_0x4f87('0x94')];var _0x5bc69c=_0x12f06f[_0x4f87('0x98')](-0x1);if(_0x5bc69c==='/'){_0x12f06f=_0x12f06f[_0x4f87('0x99')](0x0,_0x12f06f[_0x4f87('0x9a')](_0x5bc69c));}_0xd60af5=util[_0x4f87('0x9b')](_0x4f87('0x9c'),_0x12f06f);var _0x269017={'method':_0x4f87('0x9d'),'uri':_0x4f87('0x9e')+_0x562077['tenantId']+_0x4f87('0x9f'),'form':{'client_id':_0x562077[_0x4f87('0x96')],'resource':_0x12f06f,'username':_0x562077[_0x4f87('0x92')],'password':_0x562077['password'],'grant_type':_0x4f87('0x93'),'client_secret':_0x562077[_0x4f87('0x97')]},'json':!![]};return rp(_0x269017);}})['then'](function(_0x5e58ab){_0x5530df=_0x5e58ab[_0x4f87('0xa0')];var _0x1b05c3={'method':'GET','uri':encodeURI(_0xd60af5+_0x4f87('0xa1')+_0x24babc+'\x27'),'headers':{'Authorization':_0x4f87('0xa2')+_0x5530df,'If-None-Match':null,'OData-Version':_0x4f87('0xa3')},'json':!![]};return rp(_0x1b05c3);})[_0x4f87('0x23')](function(_0x2cb593){var _0x4b8236=_0x2cb593[_0x4f87('0xa4')][0x0];var _0x5d8c9b=_0x4b8236[_0x4f87('0xa5')];var _0x46e121={'method':'GET','uri':_0xd60af5+_0x4f87('0xa6')+_0x5d8c9b+_0x4f87('0xa7'),'headers':{'Authorization':_0x4f87('0xa2')+_0x5530df,'If-None-Match':null,'OData-Version':_0x4f87('0xa3')},'json':!![]};return rp(_0x46e121);})[_0x4f87('0x23')](function(_0x11b033){_0x415111=_0x11b033;_0x13b198=_0x415111[_0x4f87('0xa8')];_0x13b198=_[_0x4f87('0xa9')](_0x13b198,function(_0x15f94e){return!_0x576565['includes'](_0x15f94e[_0x4f87('0xaa')]);});var _0x3f6f04=[];var _0xa018bb=[];_0x13b198[_0x4f87('0xab')](function(_0xee0eea){if(_0xee0eea[_0x4f87('0xac')]){var _0x51a65b=_0xee0eea['@odata.type'][_0x4f87('0x99')](_0xee0eea[_0x4f87('0xac')][_0x4f87('0x9a')]('.')+0x1);if(_0x51a65b===_0x4f87('0xad')){_0x3f6f04[_0x4f87('0xae')](getSelectList(_0xd60af5,_0x2928c2,_0xa018bb,_0x415111[_0x4f87('0xa5')],_0xee0eea[_0x4f87('0xa5')],_0x5530df));}}});return Promise['all'](_0x3f6f04);})['then'](function(_0x341fc3){_0x154784=_0x341fc3[0x0];var _0x4af225=[];var _0x20e23b=[];_0x13b198[_0x4f87('0xab')](function(_0x14f463){if(!_[_0x4f87('0xaf')](_0x14f463[_0x4f87('0xac')])){var _0x58831b=_0x14f463[_0x4f87('0xac')][_0x4f87('0x99')](_0x14f463[_0x4f87('0xac')]['lastIndexOf']('.')+0x1);if(_0x58831b===_0x4f87('0xb0')){_0x4af225['push'](getBooleanList(_0xd60af5,_0x2928c2,_0x20e23b,_0x415111['MetadataId'],_0x14f463[_0x4f87('0xa5')],_0x5530df));}}});return Promise['all'](_0x4af225);})[_0x4f87('0x23')](function(_0x1cb731){_0x19712e=_0x1cb731[0x0];var _0x3d2734=[];var _0x420959=[];_0x13b198[_0x4f87('0xab')](function(_0x1e11df){if(_0x1e11df['@odata.type']){var _0x3b9c08=_0x1e11df[_0x4f87('0xac')][_0x4f87('0x99')](_0x1e11df[_0x4f87('0xac')][_0x4f87('0x9a')]('.')+0x1);if(_0x3b9c08===_0x4f87('0xb1')||_0x3b9c08===_0x4f87('0xb2')||_0x3b9c08==='BigIntAttributeMetadata'||_0x3b9c08==='IntegerAttributeMetadata'||_0x3b9c08===_0x4f87('0xb3')||_0x3b9c08==='DateTimeAttributeMetadata'||_0x3b9c08===_0x4f87('0xb4')||_0x3b9c08===_0x4f87('0xb5')||_0x3b9c08===_0x4f87('0xb6')||_0x3b9c08===_0x4f87('0xb7')){_0x3d2734[_0x4f87('0xae')](getInputList(_0xd60af5,_0x2928c2,_0x3b9c08,_0x420959,_0x415111[_0x4f87('0xa5')],_0x1e11df[_0x4f87('0xa5')],_0x5530df));}}});return Promise[_0x4f87('0xb8')](_0x3d2734);})['then'](function(_0x15601b){_0x9ed0c1=_0x15601b[0x0];var _0x2b2271=_0x154784['concat'](_0x19712e)[_0x4f87('0xb9')](_0x9ed0c1);var _0x5e3492={'count':_0x2b2271[_0x4f87('0x4e')],'rows':_0x2b2271};return _0x5e3492;})[_0x4f87('0x23')](respondWithResult(_0x33e0bd,null))[_0x4f87('0x48')](function(_0x2f3dd2){var _0x146f3e=_0x4ceff6[_0x4f87('0x31')][_0x4f87('0xba')]?0x1f4:_0x2f3dd2[_0x4f87('0xbb')]||0x1f4;logger[_0x4f87('0x26')](_0x2f3dd2[_0x4f87('0x27')]);delete _0x2f3dd2[_0x4f87('0x28')];if(_0x146f3e===0x191){_0x146f3e=0x190;}_0x33e0bd['status'](_0x146f3e)[_0x4f87('0x29')](_0x4ceff6[_0x4f87('0x31')][_0x4f87('0xba')]?{'message':_0x4f87('0xbc'),'statusCode':_0x2f3dd2[_0x4f87('0xbb')]}:_0x2f3dd2);});};function getSelectList(_0x24166f,_0xc3e8fc,_0x35e798,_0x499417,_0xc3fe98,_0x2e2f54){var _0x43edda={'method':_0x4f87('0xbd'),'uri':_0x24166f+_0x4f87('0xa6')+_0x499417+')/Attributes('+_0xc3fe98+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x4f87('0xbe'),'headers':{'Authorization':_0x4f87('0xa2')+_0x2e2f54,'If-None-Match':null,'OData-Version':_0x4f87('0xa3')},'json':!![]};return rp(_0x43edda)[_0x4f87('0x23')](function(_0x371f73){var _0x30fca2=[];var _0xf82bad=_0x371f73[_0x4f87('0xbf')][_0x4f87('0xc0')];_0xf82bad['forEach'](function(_0x24966c){_0x30fca2['push']({'name':_0x24966c[_0x4f87('0xc1')][_0x4f87('0xc2')][_0x4f87('0xc1')],'value':String(_0x24966c[_0x4f87('0xc3')])});});var _0x1e6b1f={'id':_0xc3e8fc+'_'+_0x371f73['LogicalName'],'name':_0x371f73['DisplayName'][_0x4f87('0xc2')][_0x4f87('0xc1')],'custom':![],'options':_0x30fca2};_0x35e798[_0x4f87('0xae')](_0x1e6b1f);return _0x35e798;});}function getBooleanList(_0x255f64,_0x370957,_0xe15d31,_0x3dd003,_0x452ae4,_0xd87dee){var _0x183357={'method':_0x4f87('0xbd'),'uri':_0x255f64+_0x4f87('0xa6')+_0x3dd003+')/Attributes('+_0x452ae4+_0x4f87('0xc4'),'headers':{'Authorization':_0x4f87('0xa2')+_0xd87dee,'If-None-Match':null,'OData-Version':_0x4f87('0xa3')},'json':!![]};return rp(_0x183357)[_0x4f87('0x23')](function(_0x4f28bf){var _0xb8f8a0=[];_0xb8f8a0[_0x4f87('0xae')]({'name':_0x4f28bf[_0x4f87('0xbf')][_0x4f87('0xc5')]['Label']['UserLocalizedLabel']['Label'],'value':'true'},{'name':_0x4f28bf[_0x4f87('0xbf')][_0x4f87('0xc6')][_0x4f87('0xc1')][_0x4f87('0xc2')][_0x4f87('0xc1')],'value':_0x4f87('0xc7')});var _0x402400={'id':_0x370957+'_'+_0x4f28bf['LogicalName'],'name':_0x4f28bf[_0x4f87('0xc8')][_0x4f87('0xc2')]['Label'],'custom':![],'options':_0xb8f8a0};_0xe15d31['push'](_0x402400);return _0xe15d31;});}function getInputList(_0x235557,_0x4d844e,_0x5f426b,_0x34fd2c,_0x1a3bd6,_0x18ee63,_0x2d4e58){var _0x53dcb3={'method':_0x4f87('0xbd'),'uri':_0x235557+_0x4f87('0xa6')+_0x1a3bd6+_0x4f87('0xc9')+_0x18ee63+_0x4f87('0xca')+_0x5f426b+_0x4f87('0xcb'),'headers':{'Authorization':'Bearer\x20'+_0x2d4e58,'If-None-Match':null,'OData-Version':_0x4f87('0xa3')},'json':!![]};return rp(_0x53dcb3)[_0x4f87('0x23')](function(_0x1608d8){var _0x2593e1={'id':_0x4d844e+'_'+_0x1608d8[_0x4f87('0xaa')],'name':_0x1608d8[_0x4f87('0xc8')][_0x4f87('0xc2')]?_0x1608d8[_0x4f87('0xc8')][_0x4f87('0xc2')][_0x4f87('0xc1')]:_0x1608d8[_0x4f87('0xaa')],'custom':![],'options':[]};_0x34fd2c[_0x4f87('0xae')](_0x2593e1);return _0x34fd2c;});}
\ No newline at end of file
index 059bf7e..e4ead91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['rimraf','./intDynamics365Account.attributes','../../components/integrations/configuration','Dynamics365Account','int_dynamics365_accounts','../../config/logger','api','moment','bluebird','path'];(function(_0x4f0521,_0x315798){var _0x3cf2d0=function(_0x3d106e){while(--_0x3d106e){_0x4f0521['push'](_0x4f0521['shift']());}};_0x3cf2d0(++_0x315798);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x685346,_0x3ef2e5){_0x685346=_0x685346-0x0;var _0x52e15b=_0xcb91[_0x685346];return _0x52e15b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));var integrations=require(_0x1cb9('0x7'));module['exports']=function(_0x226b69,_0x3f7deb){return _0x226b69['define'](_0x1cb9('0x8'),attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts'];(function(_0x22868f,_0x450f48){var _0x97bc75=function(_0x447cb4){while(--_0x447cb4){_0x22868f['push'](_0x22868f['shift']());}};_0x97bc75(++_0x450f48);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var moment=require(_0x3071('0x2'));var BPromise=require(_0x3071('0x3'));var rp=require(_0x3071('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var attributes=require(_0x3071('0x7'));var integrations=require(_0x3071('0x8'));module[_0x3071('0x9')]=function(_0x41cf76,_0x1d3dd6){return _0x41cf76[_0x3071('0xa')](_0x3071('0xb'),attributes,{'tableName':_0x3071('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f31bac7..f2c5f35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd1f=['ShowDynamics365Account','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','stringify','error','code','Dynamics365Account,\x20%s,\x20%s','message','catch','GetDynamics365Account','Dynamics365Account','raw','options','attributes','limit','include','map','model','find','where'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xbd1f,0x1c1));var _0xfbd1=function(_0x36b9b6,_0x541c7e){_0x36b9b6=_0x36b9b6-0x0;var _0xa094a6=_0xbd1f[_0x36b9b6];return _0xa094a6;};'use strict';var _=require(_0xfbd1('0x0'));var util=require(_0xfbd1('0x1'));var moment=require('moment');var BPromise=require(_0xfbd1('0x2'));var rs=require(_0xfbd1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfbd1('0x4'))['db'];var utils=require(_0xfbd1('0x5'));var logger=require('../../config/logger')(_0xfbd1('0x6'));var config=require(_0xfbd1('0x7'));var jayson=require(_0xfbd1('0x8'));var client=jayson[_0xfbd1('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1a8751,_0x447422,_0x1c3dac){return new BPromise(function(_0x500b96,_0x417210){return client['request'](_0x1a8751,_0x1c3dac)[_0xfbd1('0xa')](function(_0x2a67c9){logger[_0xfbd1('0xb')]('Dynamics365Account,\x20%s,\x20%s',_0x447422,_0xfbd1('0xc'));logger[_0xfbd1('0xd')]('Dynamics365Account,\x20%s,\x20%s,\x20%s',_0x447422,_0xfbd1('0xc'),JSON[_0xfbd1('0xe')](_0x2a67c9));if(_0x2a67c9[_0xfbd1('0xf')]){if(_0x2a67c9[_0xfbd1('0xf')][_0xfbd1('0x10')]===0x1f4){logger['error'](_0xfbd1('0x11'),_0x447422,_0x2a67c9['error']['message']);return _0x417210(_0x2a67c9[_0xfbd1('0xf')][_0xfbd1('0x12')]);}logger['error']('Dynamics365Account,\x20%s,\x20%s',_0x447422,_0x2a67c9[_0xfbd1('0xf')][_0xfbd1('0x12')]);return _0x500b96(_0x2a67c9['error'][_0xfbd1('0x12')]);}else{logger[_0xfbd1('0xb')](_0xfbd1('0x11'),_0x447422,'request\x20sent');_0x500b96(_0x2a67c9['result'][_0xfbd1('0x12')]);}})[_0xfbd1('0x13')](function(_0x5361f5){logger[_0xfbd1('0xf')]('Dynamics365Account,\x20%s,\x20%s',_0x447422,_0x5361f5);_0x417210(_0x5361f5);});});}exports[_0xfbd1('0x14')]=function(_0x13a91d){var _0x1d581c=this;return new Promise(function(_0x227717,_0x447d21){return db[_0xfbd1('0x15')]['findAll']({'raw':_0x13a91d['options']?_0x13a91d['options'][_0xfbd1('0x16')]===undefined?!![]:![]:!![],'where':_0x13a91d[_0xfbd1('0x17')]?_0x13a91d['options']['where']||null:null,'attributes':_0x13a91d[_0xfbd1('0x17')]?_0x13a91d['options'][_0xfbd1('0x18')]||null:null,'limit':_0x13a91d[_0xfbd1('0x17')]?_0x13a91d[_0xfbd1('0x17')][_0xfbd1('0x19')]||null:null,'include':_0x13a91d[_0xfbd1('0x17')]?_0x13a91d['options'][_0xfbd1('0x1a')]?_[_0xfbd1('0x1b')](_0x13a91d[_0xfbd1('0x17')]['include'],function(_0x21ced){return{'model':db[_0x21ced[_0xfbd1('0x1c')]],'as':_0x21ced['as'],'attributes':_0x21ced['attributes'],'include':_0x21ced[_0xfbd1('0x1a')]?_['map'](_0x21ced[_0xfbd1('0x1a')],function(_0x1804de){return{'model':db[_0x1804de[_0xfbd1('0x1c')]],'as':_0x1804de['as'],'attributes':_0x1804de['attributes'],'include':_0x1804de[_0xfbd1('0x1a')]?_[_0xfbd1('0x1b')](_0x1804de[_0xfbd1('0x1a')],function(_0x1c87f9){return{'model':db[_0x1c87f9['model']],'as':_0x1c87f9['as'],'attributes':_0x1c87f9[_0xfbd1('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x302d9a){logger['info'](_0xfbd1('0x14'),_0x13a91d);logger[_0xfbd1('0xd')](_0xfbd1('0x14'),_0x13a91d,JSON[_0xfbd1('0xe')](_0x302d9a));_0x227717(_0x302d9a);})[_0xfbd1('0x13')](function(_0x6dd411){logger[_0xfbd1('0xf')](_0xfbd1('0x14'),_0x6dd411[_0xfbd1('0x12')],_0x13a91d);_0x447d21(_0x1d581c[_0xfbd1('0xf')](0x1f4,_0x6dd411[_0xfbd1('0x12')]));});});};exports['ShowDynamics365Account']=function(_0x1f1f96){var _0x464990=this;return new Promise(function(_0x39f872,_0x1dbf71){return db['Dynamics365Account'][_0xfbd1('0x1d')]({'raw':_0x1f1f96[_0xfbd1('0x17')]?_0x1f1f96[_0xfbd1('0x17')][_0xfbd1('0x16')]===undefined?!![]:![]:!![],'where':_0x1f1f96[_0xfbd1('0x17')]?_0x1f1f96[_0xfbd1('0x17')][_0xfbd1('0x1e')]||null:null,'attributes':_0x1f1f96['options']?_0x1f1f96[_0xfbd1('0x17')]['attributes']||null:null,'include':_0x1f1f96[_0xfbd1('0x17')]?_0x1f1f96[_0xfbd1('0x17')][_0xfbd1('0x1a')]?_[_0xfbd1('0x1b')](_0x1f1f96[_0xfbd1('0x17')][_0xfbd1('0x1a')],function(_0x92de1d){return{'model':db[_0x92de1d[_0xfbd1('0x1c')]],'as':_0x92de1d['as'],'attributes':_0x92de1d[_0xfbd1('0x18')],'include':_0x92de1d['include']?_[_0xfbd1('0x1b')](_0x92de1d['include'],function(_0x4320b9){return{'model':db[_0x4320b9[_0xfbd1('0x1c')]],'as':_0x4320b9['as'],'attributes':_0x4320b9['attributes'],'include':_0x4320b9[_0xfbd1('0x1a')]?_[_0xfbd1('0x1b')](_0x4320b9[_0xfbd1('0x1a')],function(_0x5d63f4){return{'model':db[_0x5d63f4[_0xfbd1('0x1c')]],'as':_0x5d63f4['as'],'attributes':_0x5d63f4[_0xfbd1('0x18')]};}):[]};}):[]};}):[]:[]})[_0xfbd1('0xa')](function(_0x6779a6){logger[_0xfbd1('0xb')](_0xfbd1('0x1f'),_0x1f1f96);logger[_0xfbd1('0xd')](_0xfbd1('0x1f'),_0x1f1f96,JSON[_0xfbd1('0xe')](_0x6779a6));_0x39f872(_0x6779a6);})[_0xfbd1('0x13')](function(_0x1d4e52){logger['error'](_0xfbd1('0x1f'),_0x1d4e52['message'],_0x1f1f96);_0x1dbf71(_0x464990[_0xfbd1('0xf')](0x1f4,_0x1d4e52[_0xfbd1('0x12')]));});});};
\ No newline at end of file
+var _0xc6fd=['message','result','catch','GetDynamics365Account','Dynamics365Account','options','raw','where','attributes','limit','include','model','map','ShowDynamics365Account','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x810025,_0x34bb04){var _0x4dbc81=function(_0x2c3907){while(--_0x2c3907){_0x810025['push'](_0x810025['shift']());}};_0x4dbc81(++_0x34bb04);}(_0xc6fd,0x1bf));var _0xdc6f=function(_0x230715,_0x127c70){_0x230715=_0x230715-0x0;var _0x54a0e4=_0xc6fd[_0x230715];return _0x54a0e4;};'use strict';var _=require('lodash');var util=require(_0xdc6f('0x0'));var moment=require(_0xdc6f('0x1'));var BPromise=require(_0xdc6f('0x2'));var rs=require(_0xdc6f('0x3'));var fs=require('fs');var Redis=require(_0xdc6f('0x4'));var db=require(_0xdc6f('0x5'))['db'];var utils=require(_0xdc6f('0x6'));var logger=require(_0xdc6f('0x7'))(_0xdc6f('0x8'));var config=require('../../config/environment');var jayson=require(_0xdc6f('0x9'));var client=jayson[_0xdc6f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4339db,_0x1365a6,_0x11ec95){return new BPromise(function(_0x57f241,_0x5b8573){return client[_0xdc6f('0xb')](_0x4339db,_0x11ec95)[_0xdc6f('0xc')](function(_0x179064){logger[_0xdc6f('0xd')](_0xdc6f('0xe'),_0x1365a6,_0xdc6f('0xf'));logger[_0xdc6f('0x10')](_0xdc6f('0x11'),_0x1365a6,_0xdc6f('0xf'),JSON[_0xdc6f('0x12')](_0x179064));if(_0x179064[_0xdc6f('0x13')]){if(_0x179064[_0xdc6f('0x13')][_0xdc6f('0x14')]===0x1f4){logger[_0xdc6f('0x13')](_0xdc6f('0xe'),_0x1365a6,_0x179064[_0xdc6f('0x13')]['message']);return _0x5b8573(_0x179064[_0xdc6f('0x13')]['message']);}logger[_0xdc6f('0x13')](_0xdc6f('0xe'),_0x1365a6,_0x179064[_0xdc6f('0x13')][_0xdc6f('0x15')]);return _0x57f241(_0x179064[_0xdc6f('0x13')][_0xdc6f('0x15')]);}else{logger['info'](_0xdc6f('0xe'),_0x1365a6,_0xdc6f('0xf'));_0x57f241(_0x179064[_0xdc6f('0x16')]['message']);}})[_0xdc6f('0x17')](function(_0x4d9696){logger[_0xdc6f('0x13')]('Dynamics365Account,\x20%s,\x20%s',_0x1365a6,_0x4d9696);_0x5b8573(_0x4d9696);});});}exports[_0xdc6f('0x18')]=function(_0x59a2b1){var _0x18b69c=this;return new Promise(function(_0x3f894e,_0x175480){return db[_0xdc6f('0x19')]['findAll']({'raw':_0x59a2b1[_0xdc6f('0x1a')]?_0x59a2b1[_0xdc6f('0x1a')][_0xdc6f('0x1b')]===undefined?!![]:![]:!![],'where':_0x59a2b1[_0xdc6f('0x1a')]?_0x59a2b1[_0xdc6f('0x1a')][_0xdc6f('0x1c')]||null:null,'attributes':_0x59a2b1[_0xdc6f('0x1a')]?_0x59a2b1[_0xdc6f('0x1a')][_0xdc6f('0x1d')]||null:null,'limit':_0x59a2b1[_0xdc6f('0x1a')]?_0x59a2b1[_0xdc6f('0x1a')][_0xdc6f('0x1e')]||null:null,'include':_0x59a2b1[_0xdc6f('0x1a')]?_0x59a2b1[_0xdc6f('0x1a')][_0xdc6f('0x1f')]?_['map'](_0x59a2b1[_0xdc6f('0x1a')][_0xdc6f('0x1f')],function(_0xab4625){return{'model':db[_0xab4625[_0xdc6f('0x20')]],'as':_0xab4625['as'],'attributes':_0xab4625[_0xdc6f('0x1d')],'include':_0xab4625[_0xdc6f('0x1f')]?_[_0xdc6f('0x21')](_0xab4625[_0xdc6f('0x1f')],function(_0x1d33a6){return{'model':db[_0x1d33a6[_0xdc6f('0x20')]],'as':_0x1d33a6['as'],'attributes':_0x1d33a6[_0xdc6f('0x1d')],'include':_0x1d33a6[_0xdc6f('0x1f')]?_[_0xdc6f('0x21')](_0x1d33a6[_0xdc6f('0x1f')],function(_0x4a7d45){return{'model':db[_0x4a7d45['model']],'as':_0x4a7d45['as'],'attributes':_0x4a7d45['attributes']};}):[]};}):[]};}):[]:[]})[_0xdc6f('0xc')](function(_0xc5ffcd){logger[_0xdc6f('0xd')](_0xdc6f('0x18'),_0x59a2b1);logger[_0xdc6f('0x10')]('GetDynamics365Account',_0x59a2b1,JSON['stringify'](_0xc5ffcd));_0x3f894e(_0xc5ffcd);})[_0xdc6f('0x17')](function(_0x169cc8){logger[_0xdc6f('0x13')](_0xdc6f('0x18'),_0x169cc8[_0xdc6f('0x15')],_0x59a2b1);_0x175480(_0x18b69c[_0xdc6f('0x13')](0x1f4,_0x169cc8[_0xdc6f('0x15')]));});});};exports[_0xdc6f('0x22')]=function(_0x40fba0){var _0x20cb7a=this;return new Promise(function(_0x5cdf0c,_0x1f8aef){return db[_0xdc6f('0x19')][_0xdc6f('0x23')]({'raw':_0x40fba0[_0xdc6f('0x1a')]?_0x40fba0['options'][_0xdc6f('0x1b')]===undefined?!![]:![]:!![],'where':_0x40fba0[_0xdc6f('0x1a')]?_0x40fba0['options']['where']||null:null,'attributes':_0x40fba0[_0xdc6f('0x1a')]?_0x40fba0[_0xdc6f('0x1a')][_0xdc6f('0x1d')]||null:null,'include':_0x40fba0[_0xdc6f('0x1a')]?_0x40fba0[_0xdc6f('0x1a')][_0xdc6f('0x1f')]?_[_0xdc6f('0x21')](_0x40fba0[_0xdc6f('0x1a')][_0xdc6f('0x1f')],function(_0x1333f9){return{'model':db[_0x1333f9[_0xdc6f('0x20')]],'as':_0x1333f9['as'],'attributes':_0x1333f9[_0xdc6f('0x1d')],'include':_0x1333f9[_0xdc6f('0x1f')]?_[_0xdc6f('0x21')](_0x1333f9[_0xdc6f('0x1f')],function(_0x306252){return{'model':db[_0x306252[_0xdc6f('0x20')]],'as':_0x306252['as'],'attributes':_0x306252[_0xdc6f('0x1d')],'include':_0x306252[_0xdc6f('0x1f')]?_[_0xdc6f('0x21')](_0x306252[_0xdc6f('0x1f')],function(_0xb33dfc){return{'model':db[_0xb33dfc[_0xdc6f('0x20')]],'as':_0xb33dfc['as'],'attributes':_0xb33dfc[_0xdc6f('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xdc6f('0xc')](function(_0x41bb01){logger[_0xdc6f('0xd')](_0xdc6f('0x22'),_0x40fba0);logger[_0xdc6f('0x10')](_0xdc6f('0x22'),_0x40fba0,JSON[_0xdc6f('0x12')](_0x41bb01));_0x5cdf0c(_0x41bb01);})[_0xdc6f('0x17')](function(_0x3c0808){logger['error'](_0xdc6f('0x22'),_0x3c0808['message'],_0x40fba0);_0x1f8aef(_0x20cb7a[_0xdc6f('0x13')](0x1f4,_0x3c0808[_0xdc6f('0x15')]));});});};
\ No newline at end of file
index ae081d4..5ab0b49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb749=['/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','update','delete','/:id','destroy','exports','multer','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','show','/:id/fields'];(function(_0x54b396,_0x3612ee){var _0x532e6d=function(_0xc8286e){while(--_0xc8286e){_0x54b396['push'](_0x54b396['shift']());}};_0x532e6d(++_0x3612ee);}(_0xb749,0xac));var _0x9b74=function(_0x2332b0,_0x4fbb1b){_0x2332b0=_0x2332b0-0x0;var _0x5cd3de=_0xb749[_0x2332b0];return _0x5cd3de;};'use strict';var multer=require(_0x9b74('0x0'));var util=require('util');var path=require(_0x9b74('0x1'));var timeout=require(_0x9b74('0x2'));var express=require('express');var router=express[_0x9b74('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x9b74('0x4'));var interaction=require(_0x9b74('0x5'));var config=require(_0x9b74('0x6'));var controller=require(_0x9b74('0x7'));router[_0x9b74('0x8')]('/',auth[_0x9b74('0x9')](),controller['index']);router[_0x9b74('0x8')]('/:id',auth[_0x9b74('0x9')](),controller[_0x9b74('0xa')]);router[_0x9b74('0x8')](_0x9b74('0xb'),auth[_0x9b74('0x9')](),controller['getFields']);router[_0x9b74('0x8')](_0x9b74('0xc'),auth['isAuthenticated'](),controller[_0x9b74('0xd')]);router[_0x9b74('0x8')](_0x9b74('0xe'),auth['isAuthenticated'](),controller[_0x9b74('0xf')]);router[_0x9b74('0x10')]('/',auth[_0x9b74('0x9')](),controller[_0x9b74('0x11')]);router['put']('/:id',auth[_0x9b74('0x9')](),controller[_0x9b74('0x12')]);router[_0x9b74('0x13')](_0x9b74('0x14'),auth['isAuthenticated'](),controller[_0x9b74('0x15')]);module[_0x9b74('0x16')]=router;
\ No newline at end of file
+var _0x749c=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','isAuthenticated','get','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x57a0c6,_0x6cf382){var _0x5ca60b=function(_0x2586fa){while(--_0x2586fa){_0x57a0c6['push'](_0x57a0c6['shift']());}};_0x5ca60b(++_0x6cf382);}(_0x749c,0x17a));var _0xc749=function(_0x3299d1,_0x545733){_0x3299d1=_0x3299d1-0x0;var _0x44356e=_0x749c[_0x3299d1];return _0x44356e;};'use strict';var multer=require(_0xc749('0x0'));var util=require(_0xc749('0x1'));var path=require(_0xc749('0x2'));var timeout=require(_0xc749('0x3'));var express=require('express');var router=express[_0xc749('0x4')]();var fs_extra=require(_0xc749('0x5'));var auth=require(_0xc749('0x6'));var interaction=require(_0xc749('0x7'));var config=require(_0xc749('0x8'));var controller=require(_0xc749('0x9'));router['get']('/',auth[_0xc749('0xa')](),controller['index']);router[_0xc749('0xb')](_0xc749('0xc'),auth['isAuthenticated'](),controller[_0xc749('0xd')]);router[_0xc749('0xb')](_0xc749('0xe'),auth[_0xc749('0xa')](),controller[_0xc749('0xf')]);router['get'](_0xc749('0x10'),auth[_0xc749('0xa')](),controller['getSubjects']);router[_0xc749('0xb')](_0xc749('0x11'),auth[_0xc749('0xa')](),controller['getDescriptions']);router[_0xc749('0x12')]('/',auth[_0xc749('0xa')](),controller[_0xc749('0x13')]);router[_0xc749('0x14')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xc749('0x15')](_0xc749('0xc'),auth['isAuthenticated'](),controller[_0xc749('0x16')]);module[_0xc749('0x17')]=router;
\ No newline at end of file
index daf01ac..197ce68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8398=['ENUM','incident','sequelize','exports','STRING'];(function(_0x15e634,_0x28558e){var _0x4d5d95=function(_0x5c3a6f){while(--_0x5c3a6f){_0x15e634['push'](_0x15e634['shift']());}};_0x4d5d95(++_0x28558e);}(_0x8398,0xf7));var _0x8839=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0x8398[_0x263a74];return _0x2aa86c;};'use strict';var Sequelize=require(_0x8839('0x0'));module[_0x8839('0x1')]={'name':{'type':Sequelize[_0x8839('0x2')]},'description':{'type':Sequelize[_0x8839('0x2')]},'ticketType':{'type':Sequelize[_0x8839('0x3')](_0x8839('0x4'),'phonecall'),'defaultValue':'incident'}};
\ No newline at end of file
+var _0x6d42=['exports','STRING','ENUM','incident','sequelize'];(function(_0x5d12c5,_0x36a5d8){var _0x3ccedf=function(_0x32873f){while(--_0x32873f){_0x5d12c5['push'](_0x5d12c5['shift']());}};_0x3ccedf(++_0x36a5d8);}(_0x6d42,0x1a8));var _0x26d4=function(_0x5c9217,_0x8934a6){_0x5c9217=_0x5c9217-0x0;var _0x4dc7a2=_0x6d42[_0x5c9217];return _0x4dc7a2;};'use strict';var Sequelize=require(_0x26d4('0x0'));module[_0x26d4('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x26d4('0x2')]},'ticketType':{'type':Sequelize[_0x26d4('0x3')]('incident','phonecall'),'defaultValue':_0x26d4('0x4')}};
\ No newline at end of file
index d8787f9..8a14c78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf370=['crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','getFields','findOne','length','getSubjects','Dynamics365Field','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel'];(function(_0x156dfe,_0x6c74ea){var _0x5233cb=function(_0x558a99){while(--_0x558a99){_0x156dfe['push'](_0x156dfe['shift']());}};_0x5233cb(++_0x6c74ea);}(_0xf370,0x98));var _0x0f37=function(_0x407565,_0x4c4d59){_0x407565=_0x407565-0x0;var _0x543a7c=_0xf370[_0x407565];return _0x543a7c;};'use strict';var emlformat=require(_0x0f37('0x0'));var rimraf=require(_0x0f37('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0f37('0x2'));var rp=require(_0x0f37('0x3'));var moment=require(_0x0f37('0x4'));var BPromise=require(_0x0f37('0x5'));var Mustache=require(_0x0f37('0x6'));var util=require(_0x0f37('0x7'));var path=require(_0x0f37('0x8'));var sox=require(_0x0f37('0x9'));var csv=require(_0x0f37('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0f37('0xb'));var _=require(_0x0f37('0xc'));var squel=require(_0x0f37('0xd'));var crypto=require(_0x0f37('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x0f37('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0f37('0x10'));var Redis=require(_0x0f37('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x0f37('0x12'));var as=require(_0x0f37('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0f37('0x14'))(_0x0f37('0x15'));var utils=require('../../config/utils');var config=require(_0x0f37('0x16'));var licenseUtil=require(_0x0f37('0x17'));var db=require(_0x0f37('0x18'))['db'];function respondWithStatusCode(_0x1cbd0d,_0x42787a){_0x42787a=_0x42787a||0xcc;return function(_0x12778e){if(_0x12778e){return _0x1cbd0d[_0x0f37('0x19')](_0x42787a);}return _0x1cbd0d[_0x0f37('0x1a')](_0x42787a)[_0x0f37('0x1b')]();};}function respondWithResult(_0x4af5fb,_0x32f94d){_0x32f94d=_0x32f94d||0xc8;return function(_0x5dd364){if(_0x5dd364){return _0x4af5fb[_0x0f37('0x1a')](_0x32f94d)['json'](_0x5dd364);}};}function respondWithFilteredResult(_0x3a8de8,_0x4b5123){return function(_0x104778){if(_0x104778){var _0x2cda0b=typeof _0x4b5123[_0x0f37('0x1c')]===_0x0f37('0x1d')&&typeof _0x4b5123[_0x0f37('0x1e')]===_0x0f37('0x1d');var _0x19773b=_0x104778['count'];var _0x150721=_0x2cda0b?0x0:_0x4b5123['offset'];var _0x2ade50=_0x2cda0b?_0x104778['count']:_0x4b5123[_0x0f37('0x1c')]+_0x4b5123['limit'];var _0x3c3110;if(_0x2ade50>=_0x19773b){_0x2ade50=_0x19773b;_0x3c3110=0xc8;}else{_0x3c3110=0xce;}_0x3a8de8[_0x0f37('0x1a')](_0x3c3110);return _0x3a8de8[_0x0f37('0x1f')](_0x0f37('0x20'),_0x150721+'-'+_0x2ade50+'/'+_0x19773b)[_0x0f37('0x21')](_0x104778);}return null;};}function patchUpdates(_0x45bfb5){return function(_0x3af7e5){try{jsonpatch[_0x0f37('0x22')](_0x3af7e5,_0x45bfb5,!![]);}catch(_0x46c9c0){return BPromise[_0x0f37('0x23')](_0x46c9c0);}return _0x3af7e5[_0x0f37('0x24')]();};}function saveUpdates(_0x4397e0,_0x4ecbb9){return function(_0x231bde){if(_0x231bde){return _0x231bde[_0x0f37('0x25')](_0x4397e0)[_0x0f37('0x26')](function(_0x2e8cc3){return _0x2e8cc3;});}return null;};}function removeEntity(_0x4555f9,_0x2b597c){return function(_0x4c94ca){if(_0x4c94ca){return _0x4c94ca[_0x0f37('0x27')]()[_0x0f37('0x26')](function(){_0x4555f9[_0x0f37('0x1a')](0xcc)[_0x0f37('0x1b')]();});}};}function handleEntityNotFound(_0x41dec9,_0x45212b){return function(_0x4bd7f2){if(!_0x4bd7f2){_0x41dec9['sendStatus'](0x194);}return _0x4bd7f2;};}function handleError(_0xe43520,_0x59d67c){_0x59d67c=_0x59d67c||0x1f4;return function(_0x482bf6){logger['error'](_0x482bf6[_0x0f37('0x28')]);if(_0x482bf6['name']){delete _0x482bf6[_0x0f37('0x29')];}_0xe43520[_0x0f37('0x1a')](_0x59d67c)[_0x0f37('0x2a')](_0x482bf6);};}exports[_0x0f37('0x2b')]=function(_0x53c627,_0x27fb80){var _0x536da6={},_0x57e174={},_0x1bea1e={'count':0x0,'rows':[]};var _0x2e8303=_[_0x0f37('0x2c')](db[_0x0f37('0x2d')][_0x0f37('0x2e')],function(_0x1a5b28){return{'name':_0x1a5b28[_0x0f37('0x2f')],'type':_0x1a5b28[_0x0f37('0x30')][_0x0f37('0x31')]};});_0x57e174[_0x0f37('0x32')]=_['map'](_0x2e8303,_0x0f37('0x29'));_0x57e174[_0x0f37('0x33')]=_[_0x0f37('0x34')](_0x53c627[_0x0f37('0x33')]);_0x57e174[_0x0f37('0x35')]=_[_0x0f37('0x36')](_0x57e174[_0x0f37('0x32')],_0x57e174[_0x0f37('0x33')]);_0x536da6['attributes']=_[_0x0f37('0x36')](_0x57e174[_0x0f37('0x32')],qs[_0x0f37('0x37')](_0x53c627['query']['fields']));_0x536da6[_0x0f37('0x38')]=_0x536da6['attributes']['length']?_0x536da6[_0x0f37('0x38')]:_0x57e174[_0x0f37('0x32')];if(!_0x53c627[_0x0f37('0x33')][_0x0f37('0x39')](_0x0f37('0x3a'))){_0x536da6[_0x0f37('0x1e')]=qs[_0x0f37('0x1e')](_0x53c627[_0x0f37('0x33')]['limit']);_0x536da6[_0x0f37('0x1c')]=qs[_0x0f37('0x1c')](_0x53c627['query'][_0x0f37('0x1c')]);}_0x536da6['order']=qs[_0x0f37('0x3b')](_0x53c627[_0x0f37('0x33')]['sort']);_0x536da6[_0x0f37('0x3c')]=qs[_0x0f37('0x35')](_[_0x0f37('0x3d')](_0x53c627['query'],_0x57e174[_0x0f37('0x35')]),_0x2e8303);if(_0x53c627[_0x0f37('0x33')][_0x0f37('0x3e')]){_0x536da6[_0x0f37('0x3c')]=_['merge'](_0x536da6[_0x0f37('0x3c')],{'$or':_[_0x0f37('0x2c')](_0x2e8303,function(_0x11056d){if(_0x11056d[_0x0f37('0x30')]!==_0x0f37('0x3f')){var _0x4fc029={};_0x4fc029[_0x11056d[_0x0f37('0x29')]]={'$like':'%'+_0x53c627['query'][_0x0f37('0x3e')]+'%'};return _0x4fc029;}})});}_0x536da6=_['merge']({},_0x536da6,_0x53c627[_0x0f37('0x40')]);var _0x20e8bc={'where':_0x536da6[_0x0f37('0x3c')]};return db[_0x0f37('0x2d')]['count'](_0x20e8bc)[_0x0f37('0x26')](function(_0x5afedd){_0x1bea1e[_0x0f37('0x41')]=_0x5afedd;if(_0x53c627['query'][_0x0f37('0x42')]){_0x536da6[_0x0f37('0x43')]=[{'all':!![]}];}return db['Dynamics365Configuration'][_0x0f37('0x44')](_0x536da6);})[_0x0f37('0x26')](function(_0x2486d6){_0x1bea1e[_0x0f37('0x45')]=_0x2486d6;return _0x1bea1e;})[_0x0f37('0x26')](respondWithFilteredResult(_0x27fb80,_0x536da6))[_0x0f37('0x46')](handleError(_0x27fb80,null));};exports[_0x0f37('0x47')]=function(_0x5f2635,_0x2ab33b){var _0x314c6c={'raw':![],'where':{'id':_0x5f2635[_0x0f37('0x48')]['id']}},_0xeb93c3={};_0xeb93c3[_0x0f37('0x32')]=_[_0x0f37('0x34')](db[_0x0f37('0x2d')]['rawAttributes']);_0xeb93c3['query']=_['keys'](_0x5f2635[_0x0f37('0x33')]);_0xeb93c3['filters']=_[_0x0f37('0x36')](_0xeb93c3[_0x0f37('0x32')],_0xeb93c3[_0x0f37('0x33')]);_0x314c6c[_0x0f37('0x38')]=_[_0x0f37('0x36')](_0xeb93c3['model'],qs['fields'](_0x5f2635[_0x0f37('0x33')]['fields']));_0x314c6c[_0x0f37('0x38')]=_0x314c6c[_0x0f37('0x38')]['length']?_0x314c6c[_0x0f37('0x38')]:_0xeb93c3['model'];if(_0x5f2635[_0x0f37('0x33')][_0x0f37('0x42')]){_0x314c6c[_0x0f37('0x43')]=[{'all':!![]}];}_0x314c6c=_[_0x0f37('0x49')]({},_0x314c6c,_0x5f2635[_0x0f37('0x40')]);return db[_0x0f37('0x2d')][_0x0f37('0x4a')](_0x314c6c)[_0x0f37('0x26')](handleEntityNotFound(_0x2ab33b,null))['then'](respondWithResult(_0x2ab33b,null))['catch'](handleError(_0x2ab33b,null));};exports['create']=function(_0x48d2a1,_0x208676){return db['Dynamics365Configuration'][_0x0f37('0x4b')](_0x48d2a1[_0x0f37('0x4c')],{})['then'](respondWithResult(_0x208676,0xc9))['catch'](handleError(_0x208676,null));};exports[_0x0f37('0x25')]=function(_0x7d70bb,_0x5e6b6e){if(_0x7d70bb[_0x0f37('0x4c')]['id']){delete _0x7d70bb[_0x0f37('0x4c')]['id'];}return db[_0x0f37('0x2d')][_0x0f37('0x4a')]({'where':{'id':_0x7d70bb[_0x0f37('0x48')]['id']}})['then'](handleEntityNotFound(_0x5e6b6e,null))[_0x0f37('0x26')](saveUpdates(_0x7d70bb['body'],null))[_0x0f37('0x26')](respondWithResult(_0x5e6b6e,null))['catch'](handleError(_0x5e6b6e,null));};exports[_0x0f37('0x27')]=function(_0xb05077,_0x447c74){return db[_0x0f37('0x2d')][_0x0f37('0x4a')]({'where':{'id':_0xb05077[_0x0f37('0x48')]['id']}})[_0x0f37('0x26')](handleEntityNotFound(_0x447c74,null))[_0x0f37('0x26')](removeEntity(_0x447c74,null))['catch'](handleError(_0x447c74,null));};exports[_0x0f37('0x4d')]=function(_0x5590af,_0x584676,_0x5f363f){var _0x2b7ab3={};var _0x29d7ea={};var _0x3f6270;var _0x368e6b;return db[_0x0f37('0x2d')][_0x0f37('0x4e')]({'where':{'id':_0x5590af[_0x0f37('0x48')]['id']}})[_0x0f37('0x26')](handleEntityNotFound(_0x584676,null))[_0x0f37('0x26')](function(_0x54c441){if(_0x54c441){_0x3f6270=_0x54c441;_0x29d7ea['model']=_[_0x0f37('0x34')](db['Dynamics365Field']['rawAttributes']);_0x29d7ea[_0x0f37('0x33')]=_['keys'](_0x5590af[_0x0f37('0x33')]);_0x29d7ea[_0x0f37('0x35')]=_[_0x0f37('0x36')](_0x29d7ea[_0x0f37('0x32')],_0x29d7ea[_0x0f37('0x33')]);_0x2b7ab3[_0x0f37('0x38')]=_[_0x0f37('0x36')](_0x29d7ea[_0x0f37('0x32')],qs['fields'](_0x5590af[_0x0f37('0x33')][_0x0f37('0x37')]));_0x2b7ab3[_0x0f37('0x38')]=_0x2b7ab3['attributes'][_0x0f37('0x4f')]?_0x2b7ab3[_0x0f37('0x38')]:_0x29d7ea['model'];_0x2b7ab3['order']=qs[_0x0f37('0x3b')](_0x5590af[_0x0f37('0x33')][_0x0f37('0x3b')]);_0x2b7ab3[_0x0f37('0x3c')]=qs['filters'](_['pick'](_0x5590af[_0x0f37('0x33')],_0x29d7ea[_0x0f37('0x35')]));if(_0x5590af[_0x0f37('0x33')][_0x0f37('0x3e')]){_0x2b7ab3['where']=_['merge'](_0x2b7ab3[_0x0f37('0x3c')],{'$or':_[_0x0f37('0x2c')](_0x2b7ab3[_0x0f37('0x38')],function(_0x314ba8){var _0x51010c={};_0x51010c[_0x314ba8]={'$like':'%'+_0x5590af['query'][_0x0f37('0x3e')]+'%'};return _0x51010c;})});}_0x2b7ab3=_[_0x0f37('0x49')]({},_0x2b7ab3,_0x5590af['options']);return _0x3f6270[_0x0f37('0x4d')](_0x2b7ab3);}})[_0x0f37('0x26')](function(_0x575a79){if(_0x575a79){_0x368e6b=_0x575a79['length'];if(!_0x5590af[_0x0f37('0x33')][_0x0f37('0x39')]('nolimit')){_0x2b7ab3[_0x0f37('0x1e')]=qs['limit'](_0x5590af['query'][_0x0f37('0x1e')]);_0x2b7ab3[_0x0f37('0x1c')]=qs[_0x0f37('0x1c')](_0x5590af[_0x0f37('0x33')][_0x0f37('0x1c')]);}return _0x3f6270[_0x0f37('0x4d')](_0x2b7ab3);}})[_0x0f37('0x26')](function(_0x10c6a9){if(_0x10c6a9){return _0x10c6a9?{'count':_0x368e6b,'rows':_0x10c6a9}:null;}})['then'](respondWithResult(_0x584676,null))['catch'](handleError(_0x584676,null));};exports[_0x0f37('0x50')]=function(_0x560748,_0x15f532,_0x484a14){var _0x593f5d={};var _0x496cd7={};var _0x56700d;var _0xb10e3;return db[_0x0f37('0x2d')][_0x0f37('0x4e')]({'where':{'id':_0x560748[_0x0f37('0x48')]['id']}})[_0x0f37('0x26')](handleEntityNotFound(_0x15f532,null))[_0x0f37('0x26')](function(_0x11aee3){if(_0x11aee3){_0x56700d=_0x11aee3;_0x496cd7[_0x0f37('0x32')]=_[_0x0f37('0x34')](db[_0x0f37('0x51')]['rawAttributes']);_0x496cd7[_0x0f37('0x33')]=_[_0x0f37('0x34')](_0x560748[_0x0f37('0x33')]);_0x496cd7['filters']=_[_0x0f37('0x36')](_0x496cd7[_0x0f37('0x32')],_0x496cd7[_0x0f37('0x33')]);_0x593f5d[_0x0f37('0x38')]=_[_0x0f37('0x36')](_0x496cd7[_0x0f37('0x32')],qs[_0x0f37('0x37')](_0x560748[_0x0f37('0x33')]['fields']));_0x593f5d[_0x0f37('0x38')]=_0x593f5d[_0x0f37('0x38')]['length']?_0x593f5d[_0x0f37('0x38')]:_0x496cd7[_0x0f37('0x32')];_0x593f5d['order']=qs[_0x0f37('0x3b')](_0x560748[_0x0f37('0x33')]['sort']);_0x593f5d[_0x0f37('0x3c')]=qs[_0x0f37('0x35')](_['pick'](_0x560748[_0x0f37('0x33')],_0x496cd7[_0x0f37('0x35')]));if(_0x560748[_0x0f37('0x33')][_0x0f37('0x3e')]){_0x593f5d[_0x0f37('0x3c')]=_[_0x0f37('0x49')](_0x593f5d['where'],{'$or':_[_0x0f37('0x2c')](_0x593f5d[_0x0f37('0x38')],function(_0x287fd2){var _0x241531={};_0x241531[_0x287fd2]={'$like':'%'+_0x560748[_0x0f37('0x33')][_0x0f37('0x3e')]+'%'};return _0x241531;})});}_0x593f5d=_[_0x0f37('0x49')]({},_0x593f5d,_0x560748[_0x0f37('0x40')]);return _0x56700d[_0x0f37('0x50')](_0x593f5d);}})[_0x0f37('0x26')](function(_0x35c8c2){if(_0x35c8c2){_0xb10e3=_0x35c8c2[_0x0f37('0x4f')];if(!_0x560748['query'][_0x0f37('0x39')](_0x0f37('0x3a'))){_0x593f5d[_0x0f37('0x1e')]=qs[_0x0f37('0x1e')](_0x560748[_0x0f37('0x33')][_0x0f37('0x1e')]);_0x593f5d[_0x0f37('0x1c')]=qs[_0x0f37('0x1c')](_0x560748['query']['offset']);}return _0x56700d[_0x0f37('0x50')](_0x593f5d);}})[_0x0f37('0x26')](function(_0x542db6){if(_0x542db6){return _0x542db6?{'count':_0xb10e3,'rows':_0x542db6}:null;}})[_0x0f37('0x26')](respondWithResult(_0x15f532,null))['catch'](handleError(_0x15f532,null));};exports[_0x0f37('0x52')]=function(_0x1f7b05,_0x286300,_0x5834e2){var _0x5d56c6={};var _0xef65bc={};var _0x258810;var _0x410cd7;return db[_0x0f37('0x2d')][_0x0f37('0x4e')]({'where':{'id':_0x1f7b05['params']['id']}})[_0x0f37('0x26')](handleEntityNotFound(_0x286300,null))[_0x0f37('0x26')](function(_0x31b7b2){if(_0x31b7b2){_0x258810=_0x31b7b2;_0xef65bc[_0x0f37('0x32')]=_[_0x0f37('0x34')](db[_0x0f37('0x51')][_0x0f37('0x2e')]);_0xef65bc[_0x0f37('0x33')]=_['keys'](_0x1f7b05[_0x0f37('0x33')]);_0xef65bc[_0x0f37('0x35')]=_[_0x0f37('0x36')](_0xef65bc[_0x0f37('0x32')],_0xef65bc[_0x0f37('0x33')]);_0x5d56c6[_0x0f37('0x38')]=_[_0x0f37('0x36')](_0xef65bc[_0x0f37('0x32')],qs[_0x0f37('0x37')](_0x1f7b05[_0x0f37('0x33')][_0x0f37('0x37')]));_0x5d56c6[_0x0f37('0x38')]=_0x5d56c6[_0x0f37('0x38')][_0x0f37('0x4f')]?_0x5d56c6[_0x0f37('0x38')]:_0xef65bc[_0x0f37('0x32')];_0x5d56c6['order']=qs['sort'](_0x1f7b05[_0x0f37('0x33')][_0x0f37('0x3b')]);_0x5d56c6['where']=qs['filters'](_[_0x0f37('0x3d')](_0x1f7b05[_0x0f37('0x33')],_0xef65bc[_0x0f37('0x35')]));if(_0x1f7b05['query']['filter']){_0x5d56c6[_0x0f37('0x3c')]=_[_0x0f37('0x49')](_0x5d56c6['where'],{'$or':_['map'](_0x5d56c6['attributes'],function(_0x5dacf9){var _0x34d7bb={};_0x34d7bb[_0x5dacf9]={'$like':'%'+_0x1f7b05['query'][_0x0f37('0x3e')]+'%'};return _0x34d7bb;})});}_0x5d56c6=_['merge']({},_0x5d56c6,_0x1f7b05[_0x0f37('0x40')]);return _0x258810[_0x0f37('0x52')](_0x5d56c6);}})['then'](function(_0x54cac5){if(_0x54cac5){_0x410cd7=_0x54cac5[_0x0f37('0x4f')];if(!_0x1f7b05[_0x0f37('0x33')][_0x0f37('0x39')]('nolimit')){_0x5d56c6[_0x0f37('0x1e')]=qs[_0x0f37('0x1e')](_0x1f7b05[_0x0f37('0x33')]['limit']);_0x5d56c6[_0x0f37('0x1c')]=qs[_0x0f37('0x1c')](_0x1f7b05[_0x0f37('0x33')][_0x0f37('0x1c')]);}return _0x258810[_0x0f37('0x52')](_0x5d56c6);}})[_0x0f37('0x26')](function(_0x5f299a){if(_0x5f299a){return _0x5f299a?{'count':_0x410cd7,'rows':_0x5f299a}:null;}})[_0x0f37('0x26')](respondWithResult(_0x286300,null))['catch'](handleError(_0x286300,null));};
\ No newline at end of file
+var _0x32a5=['pick','merge','type','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','Dynamics365Field','order','hasOwnProperty','getFields','getSubjects','getDescriptions','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','Dynamics365Configuration','query','keys','intersection','fields','attributes','model','nolimit','sort','where','filters'];(function(_0x485abd,_0x32c7c1){var _0x3379f1=function(_0x36b528){while(--_0x36b528){_0x485abd['push'](_0x485abd['shift']());}};_0x3379f1(++_0x32c7c1);}(_0x32a5,0x114));var _0x532a=function(_0xd7ca10,_0x4a6b71){_0xd7ca10=_0xd7ca10-0x0;var _0x4af36f=_0x32a5[_0xd7ca10];return _0x4af36f;};'use strict';var emlformat=require(_0x532a('0x0'));var rimraf=require(_0x532a('0x1'));var zipdir=require(_0x532a('0x2'));var jsonpatch=require(_0x532a('0x3'));var rp=require(_0x532a('0x4'));var moment=require(_0x532a('0x5'));var BPromise=require(_0x532a('0x6'));var Mustache=require(_0x532a('0x7'));var util=require(_0x532a('0x8'));var path=require(_0x532a('0x9'));var sox=require(_0x532a('0xa'));var csv=require(_0x532a('0xb'));var ejs=require(_0x532a('0xc'));var fs=require('fs');var fs_extra=require(_0x532a('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x532a('0xe'));var jsforce=require(_0x532a('0xf'));var deskjs=require(_0x532a('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x532a('0x11'));var Redis=require(_0x532a('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x532a('0x13'));var as=require(_0x532a('0x14'));var hardwareService=require(_0x532a('0x15'));var logger=require(_0x532a('0x16'))(_0x532a('0x17'));var utils=require(_0x532a('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x532a('0x19'));var db=require(_0x532a('0x1a'))['db'];function respondWithStatusCode(_0x16fc35,_0xdb5ce){_0xdb5ce=_0xdb5ce||0xcc;return function(_0x4a3311){if(_0x4a3311){return _0x16fc35['sendStatus'](_0xdb5ce);}return _0x16fc35['status'](_0xdb5ce)[_0x532a('0x1b')]();};}function respondWithResult(_0x17110e,_0x547953){_0x547953=_0x547953||0xc8;return function(_0x3ba599){if(_0x3ba599){return _0x17110e[_0x532a('0x1c')](_0x547953)[_0x532a('0x1d')](_0x3ba599);}};}function respondWithFilteredResult(_0x182d3c,_0x3e8846){return function(_0x4f2061){if(_0x4f2061){var _0x22552e=typeof _0x3e8846[_0x532a('0x1e')]==='undefined'&&typeof _0x3e8846[_0x532a('0x1f')]===_0x532a('0x20');var _0x36089d=_0x4f2061[_0x532a('0x21')];var _0x3595d8=_0x22552e?0x0:_0x3e8846['offset'];var _0x48a85d=_0x22552e?_0x4f2061[_0x532a('0x21')]:_0x3e8846[_0x532a('0x1e')]+_0x3e8846[_0x532a('0x1f')];var _0x4f8c2c;if(_0x48a85d>=_0x36089d){_0x48a85d=_0x36089d;_0x4f8c2c=0xc8;}else{_0x4f8c2c=0xce;}_0x182d3c['status'](_0x4f8c2c);return _0x182d3c[_0x532a('0x22')](_0x532a('0x23'),_0x3595d8+'-'+_0x48a85d+'/'+_0x36089d)['json'](_0x4f2061);}return null;};}function patchUpdates(_0x453f9f){return function(_0x4b4363){try{jsonpatch[_0x532a('0x24')](_0x4b4363,_0x453f9f,!![]);}catch(_0x4eddb9){return BPromise[_0x532a('0x25')](_0x4eddb9);}return _0x4b4363[_0x532a('0x26')]();};}function saveUpdates(_0x478d50,_0x405d98){return function(_0x43466f){if(_0x43466f){return _0x43466f[_0x532a('0x27')](_0x478d50)[_0x532a('0x28')](function(_0x2a2427){return _0x2a2427;});}return null;};}function removeEntity(_0x213625,_0x51e14f){return function(_0x436a69){if(_0x436a69){return _0x436a69[_0x532a('0x29')]()[_0x532a('0x28')](function(){_0x213625[_0x532a('0x1c')](0xcc)[_0x532a('0x1b')]();});}};}function handleEntityNotFound(_0x331709,_0x413ca7){return function(_0x26fcb7){if(!_0x26fcb7){_0x331709[_0x532a('0x2a')](0x194);}return _0x26fcb7;};}function handleError(_0x57bab5,_0xaf04e4){_0xaf04e4=_0xaf04e4||0x1f4;return function(_0x3c6d19){logger[_0x532a('0x2b')](_0x3c6d19[_0x532a('0x2c')]);if(_0x3c6d19[_0x532a('0x2d')]){delete _0x3c6d19[_0x532a('0x2d')];}_0x57bab5[_0x532a('0x1c')](_0xaf04e4)[_0x532a('0x2e')](_0x3c6d19);};}exports[_0x532a('0x2f')]=function(_0xfb3ab4,_0x54249a){var _0x23c8cf={},_0x13a0ba={},_0xcf5e24={'count':0x0,'rows':[]};var _0x49c49b=_[_0x532a('0x30')](db[_0x532a('0x31')]['rawAttributes'],function(_0x3b019d){return{'name':_0x3b019d['fieldName'],'type':_0x3b019d['type']['key']};});_0x13a0ba['model']=_['map'](_0x49c49b,_0x532a('0x2d'));_0x13a0ba[_0x532a('0x32')]=_[_0x532a('0x33')](_0xfb3ab4[_0x532a('0x32')]);_0x13a0ba['filters']=_[_0x532a('0x34')](_0x13a0ba['model'],_0x13a0ba[_0x532a('0x32')]);_0x23c8cf['attributes']=_['intersection'](_0x13a0ba['model'],qs[_0x532a('0x35')](_0xfb3ab4[_0x532a('0x32')][_0x532a('0x35')]));_0x23c8cf[_0x532a('0x36')]=_0x23c8cf[_0x532a('0x36')]['length']?_0x23c8cf[_0x532a('0x36')]:_0x13a0ba[_0x532a('0x37')];if(!_0xfb3ab4[_0x532a('0x32')]['hasOwnProperty'](_0x532a('0x38'))){_0x23c8cf[_0x532a('0x1f')]=qs['limit'](_0xfb3ab4[_0x532a('0x32')][_0x532a('0x1f')]);_0x23c8cf[_0x532a('0x1e')]=qs['offset'](_0xfb3ab4[_0x532a('0x32')][_0x532a('0x1e')]);}_0x23c8cf['order']=qs['sort'](_0xfb3ab4[_0x532a('0x32')][_0x532a('0x39')]);_0x23c8cf[_0x532a('0x3a')]=qs[_0x532a('0x3b')](_[_0x532a('0x3c')](_0xfb3ab4[_0x532a('0x32')],_0x13a0ba[_0x532a('0x3b')]),_0x49c49b);if(_0xfb3ab4[_0x532a('0x32')]['filter']){_0x23c8cf[_0x532a('0x3a')]=_[_0x532a('0x3d')](_0x23c8cf[_0x532a('0x3a')],{'$or':_[_0x532a('0x30')](_0x49c49b,function(_0xa2b827){if(_0xa2b827[_0x532a('0x3e')]!==_0x532a('0x3f')){var _0x270a49={};_0x270a49[_0xa2b827['name']]={'$like':'%'+_0xfb3ab4[_0x532a('0x32')][_0x532a('0x40')]+'%'};return _0x270a49;}})});}_0x23c8cf=_[_0x532a('0x3d')]({},_0x23c8cf,_0xfb3ab4[_0x532a('0x41')]);var _0x378bf2={'where':_0x23c8cf[_0x532a('0x3a')]};return db[_0x532a('0x31')]['count'](_0x378bf2)[_0x532a('0x28')](function(_0x1d86ef){_0xcf5e24['count']=_0x1d86ef;if(_0xfb3ab4['query'][_0x532a('0x42')]){_0x23c8cf[_0x532a('0x43')]=[{'all':!![]}];}return db[_0x532a('0x31')]['findAll'](_0x23c8cf);})[_0x532a('0x28')](function(_0xd7cc6f){_0xcf5e24[_0x532a('0x44')]=_0xd7cc6f;return _0xcf5e24;})[_0x532a('0x28')](respondWithFilteredResult(_0x54249a,_0x23c8cf))[_0x532a('0x45')](handleError(_0x54249a,null));};exports[_0x532a('0x46')]=function(_0x3ff8e5,_0x74f343){var _0x5767f8={'raw':![],'where':{'id':_0x3ff8e5[_0x532a('0x47')]['id']}},_0x4dae30={};_0x4dae30['model']=_[_0x532a('0x33')](db['Dynamics365Configuration'][_0x532a('0x48')]);_0x4dae30[_0x532a('0x32')]=_[_0x532a('0x33')](_0x3ff8e5[_0x532a('0x32')]);_0x4dae30['filters']=_[_0x532a('0x34')](_0x4dae30[_0x532a('0x37')],_0x4dae30['query']);_0x5767f8[_0x532a('0x36')]=_[_0x532a('0x34')](_0x4dae30[_0x532a('0x37')],qs[_0x532a('0x35')](_0x3ff8e5[_0x532a('0x32')][_0x532a('0x35')]));_0x5767f8[_0x532a('0x36')]=_0x5767f8['attributes'][_0x532a('0x49')]?_0x5767f8[_0x532a('0x36')]:_0x4dae30[_0x532a('0x37')];if(_0x3ff8e5[_0x532a('0x32')][_0x532a('0x42')]){_0x5767f8[_0x532a('0x43')]=[{'all':!![]}];}_0x5767f8=_[_0x532a('0x3d')]({},_0x5767f8,_0x3ff8e5[_0x532a('0x41')]);return db[_0x532a('0x31')][_0x532a('0x4a')](_0x5767f8)[_0x532a('0x28')](handleEntityNotFound(_0x74f343,null))[_0x532a('0x28')](respondWithResult(_0x74f343,null))[_0x532a('0x45')](handleError(_0x74f343,null));};exports[_0x532a('0x4b')]=function(_0x1ae66f,_0x4e1124){return db[_0x532a('0x31')][_0x532a('0x4b')](_0x1ae66f['body'],{})[_0x532a('0x28')](respondWithResult(_0x4e1124,0xc9))[_0x532a('0x45')](handleError(_0x4e1124,null));};exports[_0x532a('0x27')]=function(_0x36caa0,_0x1d992d){if(_0x36caa0[_0x532a('0x4c')]['id']){delete _0x36caa0[_0x532a('0x4c')]['id'];}return db[_0x532a('0x31')][_0x532a('0x4a')]({'where':{'id':_0x36caa0[_0x532a('0x47')]['id']}})[_0x532a('0x28')](handleEntityNotFound(_0x1d992d,null))[_0x532a('0x28')](saveUpdates(_0x36caa0[_0x532a('0x4c')],null))[_0x532a('0x28')](respondWithResult(_0x1d992d,null))[_0x532a('0x45')](handleError(_0x1d992d,null));};exports[_0x532a('0x29')]=function(_0x4c0681,_0x108695){return db[_0x532a('0x31')]['find']({'where':{'id':_0x4c0681[_0x532a('0x47')]['id']}})[_0x532a('0x28')](handleEntityNotFound(_0x108695,null))['then'](removeEntity(_0x108695,null))[_0x532a('0x45')](handleError(_0x108695,null));};exports['getFields']=function(_0x34ff5b,_0x33793f,_0x4718af){var _0x5a3819={};var _0x575e37={};var _0x47f744;var _0x3d2545;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x34ff5b[_0x532a('0x47')]['id']}})[_0x532a('0x28')](handleEntityNotFound(_0x33793f,null))[_0x532a('0x28')](function(_0x32221a){if(_0x32221a){_0x47f744=_0x32221a;_0x575e37[_0x532a('0x37')]=_['keys'](db[_0x532a('0x4d')][_0x532a('0x48')]);_0x575e37[_0x532a('0x32')]=_[_0x532a('0x33')](_0x34ff5b[_0x532a('0x32')]);_0x575e37[_0x532a('0x3b')]=_[_0x532a('0x34')](_0x575e37[_0x532a('0x37')],_0x575e37[_0x532a('0x32')]);_0x5a3819[_0x532a('0x36')]=_[_0x532a('0x34')](_0x575e37[_0x532a('0x37')],qs[_0x532a('0x35')](_0x34ff5b[_0x532a('0x32')]['fields']));_0x5a3819[_0x532a('0x36')]=_0x5a3819[_0x532a('0x36')][_0x532a('0x49')]?_0x5a3819[_0x532a('0x36')]:_0x575e37[_0x532a('0x37')];_0x5a3819[_0x532a('0x4e')]=qs['sort'](_0x34ff5b[_0x532a('0x32')][_0x532a('0x39')]);_0x5a3819[_0x532a('0x3a')]=qs[_0x532a('0x3b')](_[_0x532a('0x3c')](_0x34ff5b['query'],_0x575e37[_0x532a('0x3b')]));if(_0x34ff5b['query']['filter']){_0x5a3819[_0x532a('0x3a')]=_[_0x532a('0x3d')](_0x5a3819[_0x532a('0x3a')],{'$or':_[_0x532a('0x30')](_0x5a3819[_0x532a('0x36')],function(_0x39fa0b){var _0x11a8c1={};_0x11a8c1[_0x39fa0b]={'$like':'%'+_0x34ff5b['query'][_0x532a('0x40')]+'%'};return _0x11a8c1;})});}_0x5a3819=_[_0x532a('0x3d')]({},_0x5a3819,_0x34ff5b[_0x532a('0x41')]);return _0x47f744['getFields'](_0x5a3819);}})[_0x532a('0x28')](function(_0x3c1a12){if(_0x3c1a12){_0x3d2545=_0x3c1a12[_0x532a('0x49')];if(!_0x34ff5b['query'][_0x532a('0x4f')](_0x532a('0x38'))){_0x5a3819[_0x532a('0x1f')]=qs[_0x532a('0x1f')](_0x34ff5b[_0x532a('0x32')][_0x532a('0x1f')]);_0x5a3819[_0x532a('0x1e')]=qs[_0x532a('0x1e')](_0x34ff5b[_0x532a('0x32')]['offset']);}return _0x47f744[_0x532a('0x50')](_0x5a3819);}})['then'](function(_0x41cf0e){if(_0x41cf0e){return _0x41cf0e?{'count':_0x3d2545,'rows':_0x41cf0e}:null;}})[_0x532a('0x28')](respondWithResult(_0x33793f,null))['catch'](handleError(_0x33793f,null));};exports[_0x532a('0x51')]=function(_0x7f6e9b,_0x2fbc13,_0x3cb459){var _0x14a7f7={};var _0x2bc647={};var _0x56f53d;var _0x417754;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x7f6e9b['params']['id']}})['then'](handleEntityNotFound(_0x2fbc13,null))[_0x532a('0x28')](function(_0x2a9b93){if(_0x2a9b93){_0x56f53d=_0x2a9b93;_0x2bc647['model']=_[_0x532a('0x33')](db['Dynamics365Field']['rawAttributes']);_0x2bc647['query']=_[_0x532a('0x33')](_0x7f6e9b[_0x532a('0x32')]);_0x2bc647[_0x532a('0x3b')]=_[_0x532a('0x34')](_0x2bc647['model'],_0x2bc647[_0x532a('0x32')]);_0x14a7f7['attributes']=_[_0x532a('0x34')](_0x2bc647['model'],qs[_0x532a('0x35')](_0x7f6e9b[_0x532a('0x32')][_0x532a('0x35')]));_0x14a7f7['attributes']=_0x14a7f7[_0x532a('0x36')][_0x532a('0x49')]?_0x14a7f7[_0x532a('0x36')]:_0x2bc647['model'];_0x14a7f7['order']=qs[_0x532a('0x39')](_0x7f6e9b[_0x532a('0x32')]['sort']);_0x14a7f7[_0x532a('0x3a')]=qs['filters'](_['pick'](_0x7f6e9b[_0x532a('0x32')],_0x2bc647['filters']));if(_0x7f6e9b[_0x532a('0x32')][_0x532a('0x40')]){_0x14a7f7[_0x532a('0x3a')]=_[_0x532a('0x3d')](_0x14a7f7[_0x532a('0x3a')],{'$or':_[_0x532a('0x30')](_0x14a7f7[_0x532a('0x36')],function(_0x473402){var _0x3f4be4={};_0x3f4be4[_0x473402]={'$like':'%'+_0x7f6e9b[_0x532a('0x32')][_0x532a('0x40')]+'%'};return _0x3f4be4;})});}_0x14a7f7=_[_0x532a('0x3d')]({},_0x14a7f7,_0x7f6e9b[_0x532a('0x41')]);return _0x56f53d[_0x532a('0x51')](_0x14a7f7);}})[_0x532a('0x28')](function(_0x23bbb9){if(_0x23bbb9){_0x417754=_0x23bbb9[_0x532a('0x49')];if(!_0x7f6e9b[_0x532a('0x32')][_0x532a('0x4f')](_0x532a('0x38'))){_0x14a7f7[_0x532a('0x1f')]=qs[_0x532a('0x1f')](_0x7f6e9b[_0x532a('0x32')][_0x532a('0x1f')]);_0x14a7f7['offset']=qs[_0x532a('0x1e')](_0x7f6e9b[_0x532a('0x32')]['offset']);}return _0x56f53d[_0x532a('0x51')](_0x14a7f7);}})[_0x532a('0x28')](function(_0x23bd51){if(_0x23bd51){return _0x23bd51?{'count':_0x417754,'rows':_0x23bd51}:null;}})['then'](respondWithResult(_0x2fbc13,null))[_0x532a('0x45')](handleError(_0x2fbc13,null));};exports[_0x532a('0x52')]=function(_0x529da7,_0x57b6ab,_0x2954be){var _0x2fd046={};var _0x5ae466={};var _0x580bc1;var _0x39abb6;return db['Dynamics365Configuration'][_0x532a('0x53')]({'where':{'id':_0x529da7['params']['id']}})[_0x532a('0x28')](handleEntityNotFound(_0x57b6ab,null))['then'](function(_0x4438c5){if(_0x4438c5){_0x580bc1=_0x4438c5;_0x5ae466[_0x532a('0x37')]=_[_0x532a('0x33')](db['Dynamics365Field'][_0x532a('0x48')]);_0x5ae466[_0x532a('0x32')]=_[_0x532a('0x33')](_0x529da7[_0x532a('0x32')]);_0x5ae466[_0x532a('0x3b')]=_[_0x532a('0x34')](_0x5ae466[_0x532a('0x37')],_0x5ae466[_0x532a('0x32')]);_0x2fd046[_0x532a('0x36')]=_['intersection'](_0x5ae466[_0x532a('0x37')],qs[_0x532a('0x35')](_0x529da7[_0x532a('0x32')][_0x532a('0x35')]));_0x2fd046[_0x532a('0x36')]=_0x2fd046[_0x532a('0x36')][_0x532a('0x49')]?_0x2fd046[_0x532a('0x36')]:_0x5ae466[_0x532a('0x37')];_0x2fd046['order']=qs[_0x532a('0x39')](_0x529da7[_0x532a('0x32')]['sort']);_0x2fd046[_0x532a('0x3a')]=qs[_0x532a('0x3b')](_[_0x532a('0x3c')](_0x529da7['query'],_0x5ae466['filters']));if(_0x529da7['query'][_0x532a('0x40')]){_0x2fd046['where']=_[_0x532a('0x3d')](_0x2fd046['where'],{'$or':_[_0x532a('0x30')](_0x2fd046[_0x532a('0x36')],function(_0x187f90){var _0x365677={};_0x365677[_0x187f90]={'$like':'%'+_0x529da7[_0x532a('0x32')][_0x532a('0x40')]+'%'};return _0x365677;})});}_0x2fd046=_['merge']({},_0x2fd046,_0x529da7['options']);return _0x580bc1['getDescriptions'](_0x2fd046);}})[_0x532a('0x28')](function(_0x4ba7c6){if(_0x4ba7c6){_0x39abb6=_0x4ba7c6[_0x532a('0x49')];if(!_0x529da7[_0x532a('0x32')]['hasOwnProperty'](_0x532a('0x38'))){_0x2fd046['limit']=qs[_0x532a('0x1f')](_0x529da7[_0x532a('0x32')]['limit']);_0x2fd046[_0x532a('0x1e')]=qs[_0x532a('0x1e')](_0x529da7[_0x532a('0x32')][_0x532a('0x1e')]);}return _0x580bc1[_0x532a('0x52')](_0x2fd046);}})[_0x532a('0x28')](function(_0x4f43d7){if(_0x4f43d7){return _0x4f43d7?{'count':_0x39abb6,'rows':_0x4f43d7}:null;}})[_0x532a('0x28')](respondWithResult(_0x57b6ab,null))[_0x532a('0x45')](handleError(_0x57b6ab,null));};
\ No newline at end of file
index f0a49ca..d1c0af4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f62=['api','moment','bluebird','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','util'];(function(_0x32563b,_0x40a46d){var _0x578d91=function(_0x383eca){while(--_0x383eca){_0x32563b['push'](_0x32563b['shift']());}};_0x578d91(++_0x40a46d);}(_0x9f62,0x154));var _0x29f6=function(_0x286747,_0x2d9074){_0x286747=_0x286747-0x0;var _0x45194e=_0x9f62[_0x286747];return _0x45194e;};'use strict';var _=require('lodash');var util=require(_0x29f6('0x0'));var logger=require('../../config/logger')(_0x29f6('0x1'));var moment=require(_0x29f6('0x2'));var BPromise=require(_0x29f6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x29f6('0x4'));var config=require(_0x29f6('0x5'));var attributes=require(_0x29f6('0x6'));module[_0x29f6('0x7')]=function(_0x595034,_0xf66137){return _0x595034[_0x29f6('0x8')](_0x29f6('0x9'),attributes,{'tableName':_0x29f6('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(_0x32c09e,_0x596f44){var _0x361fc3=function(_0x4b1780){while(--_0x4b1780){_0x32c09e['push'](_0x32c09e['shift']());}};_0x361fc3(++_0x596f44);}(_0x9c44,0x178));var _0x49c4=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x9c44[_0x1d1779];return _0x2377e9;};'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 c8f24c4..1b23be6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98cf=['then','info','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request'];(function(_0x30c0bd,_0x158128){var _0x1ca046=function(_0x367571){while(--_0x367571){_0x30c0bd['push'](_0x30c0bd['shift']());}};_0x1ca046(++_0x158128);}(_0x98cf,0x137));var _0xf98c=function(_0x555ea3,_0x52b1dd){_0x555ea3=_0x555ea3-0x0;var _0xd5f6cc=_0x98cf[_0x555ea3];return _0xd5f6cc;};'use strict';var _=require(_0xf98c('0x0'));var util=require(_0xf98c('0x1'));var moment=require(_0xf98c('0x2'));var BPromise=require('bluebird');var rs=require(_0xf98c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf98c('0x4'))['db'];var utils=require(_0xf98c('0x5'));var logger=require('../../config/logger')(_0xf98c('0x6'));var config=require(_0xf98c('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf98c('0x8')][_0xf98c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x48f839,_0x11c94e,_0x578b36){return new BPromise(function(_0x1ef4c6,_0x4791cc){return client[_0xf98c('0xa')](_0x48f839,_0x578b36)[_0xf98c('0xb')](function(_0x180ebf){logger[_0xf98c('0xc')]('Dynamics365Configuration,\x20%s,\x20%s',_0x11c94e,'request\x20sent');logger[_0xf98c('0xd')](_0xf98c('0xe'),_0x11c94e,'request\x20sent',JSON[_0xf98c('0xf')](_0x180ebf));if(_0x180ebf[_0xf98c('0x10')]){if(_0x180ebf['error'][_0xf98c('0x11')]===0x1f4){logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x11c94e,_0x180ebf[_0xf98c('0x10')][_0xf98c('0x12')]);return _0x4791cc(_0x180ebf[_0xf98c('0x10')]['message']);}logger['error'](_0xf98c('0x13'),_0x11c94e,_0x180ebf[_0xf98c('0x10')][_0xf98c('0x12')]);return _0x1ef4c6(_0x180ebf[_0xf98c('0x10')][_0xf98c('0x12')]);}else{logger['info'](_0xf98c('0x13'),_0x11c94e,_0xf98c('0x14'));_0x1ef4c6(_0x180ebf[_0xf98c('0x15')][_0xf98c('0x12')]);}})[_0xf98c('0x16')](function(_0x3b6447){logger[_0xf98c('0x10')](_0xf98c('0x13'),_0x11c94e,_0x3b6447);_0x4791cc(_0x3b6447);});});}
\ No newline at end of file
+var _0xf1ea=['../../config/environment','jayson/promise','client','request','then','info','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Dynamics365Configuration,\x20%s,\x20%s','message','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0x3ce3c,_0x319337){var _0x55a2c9=function(_0x1568d0){while(--_0x1568d0){_0x3ce3c['push'](_0x3ce3c['shift']());}};_0x55a2c9(++_0x319337);}(_0xf1ea,0x6c));var _0xaf1e=function(_0x1a2b5f,_0x23f3d0){_0x1a2b5f=_0x1a2b5f-0x0;var _0x53b8ff=_0xf1ea[_0x1a2b5f];return _0x53b8ff;};'use strict';var _=require(_0xaf1e('0x0'));var util=require('util');var moment=require(_0xaf1e('0x1'));var BPromise=require('bluebird');var rs=require(_0xaf1e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaf1e('0x3'))['db'];var utils=require(_0xaf1e('0x4'));var logger=require('../../config/logger')(_0xaf1e('0x5'));var config=require(_0xaf1e('0x6'));var jayson=require(_0xaf1e('0x7'));var client=jayson[_0xaf1e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x19f552,_0x3b367f,_0x5b462a){return new BPromise(function(_0x2a9097,_0x37fb9a){return client[_0xaf1e('0x9')](_0x19f552,_0x5b462a)[_0xaf1e('0xa')](function(_0x32fac0){logger[_0xaf1e('0xb')]('Dynamics365Configuration,\x20%s,\x20%s',_0x3b367f,'request\x20sent');logger['debug'](_0xaf1e('0xc'),_0x3b367f,_0xaf1e('0xd'),JSON['stringify'](_0x32fac0));if(_0x32fac0[_0xaf1e('0xe')]){if(_0x32fac0[_0xaf1e('0xe')][_0xaf1e('0xf')]===0x1f4){logger[_0xaf1e('0xe')](_0xaf1e('0x10'),_0x3b367f,_0x32fac0[_0xaf1e('0xe')][_0xaf1e('0x11')]);return _0x37fb9a(_0x32fac0[_0xaf1e('0xe')][_0xaf1e('0x11')]);}logger['error'](_0xaf1e('0x10'),_0x3b367f,_0x32fac0[_0xaf1e('0xe')]['message']);return _0x2a9097(_0x32fac0['error'][_0xaf1e('0x11')]);}else{logger[_0xaf1e('0xb')](_0xaf1e('0x10'),_0x3b367f,'request\x20sent');_0x2a9097(_0x32fac0['result'][_0xaf1e('0x11')]);}})[_0xaf1e('0x12')](function(_0xdf0aa5){logger[_0xaf1e('0xe')]('Dynamics365Configuration,\x20%s,\x20%s',_0x3b367f,_0xdf0aa5);_0x37fb9a(_0xdf0aa5);});});}
\ No newline at end of file
index d430e20..a68bcf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a50=['isAuthenticated','get','/:id','show','post','create','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x518242,_0x20d41c){var _0x199682=function(_0x5b698a){while(--_0x5b698a){_0x518242['push'](_0x518242['shift']());}};_0x199682(++_0x20d41c);}(_0x5a50,0x149));var _0x05a5=function(_0x2c0c2d,_0x2e4607){_0x2c0c2d=_0x2c0c2d-0x0;var _0x16ebd5=_0x5a50[_0x2c0c2d];return _0x16ebd5;};'use strict';var multer=require(_0x05a5('0x0'));var util=require(_0x05a5('0x1'));var path=require(_0x05a5('0x2'));var timeout=require(_0x05a5('0x3'));var express=require('express');var router=express[_0x05a5('0x4')]();var fs_extra=require(_0x05a5('0x5'));var auth=require(_0x05a5('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intDynamics365Field.controller');router['get']('/',auth[_0x05a5('0x7')](),controller['index']);router[_0x05a5('0x8')](_0x05a5('0x9'),auth[_0x05a5('0x7')](),controller[_0x05a5('0xa')]);router[_0x05a5('0xb')]('/',auth[_0x05a5('0x7')](),controller[_0x05a5('0xc')]);router['put'](_0x05a5('0x9'),auth[_0x05a5('0x7')](),controller[_0x05a5('0xd')]);router[_0x05a5('0xe')](_0x05a5('0x9'),auth['isAuthenticated'](),controller[_0x05a5('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xe44c=['multer','util','connect-timeout','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','post','put','delete','destroy'];(function(_0x3c77a8,_0x1a2062){var _0x4e4486=function(_0x1b8074){while(--_0x1b8074){_0x3c77a8['push'](_0x3c77a8['shift']());}};_0x4e4486(++_0x1a2062);}(_0xe44c,0xdd));var _0xce44=function(_0xbbcb36,_0x586383){_0xbbcb36=_0xbbcb36-0x0;var _0x4278ff=_0xe44c[_0xbbcb36];return _0x4278ff;};'use strict';var multer=require(_0xce44('0x0'));var util=require(_0xce44('0x1'));var path=require('path');var timeout=require(_0xce44('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xce44('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xce44('0x4'));var controller=require('./intDynamics365Field.controller');router[_0xce44('0x5')]('/',auth[_0xce44('0x6')](),controller['index']);router['get'](_0xce44('0x7'),auth[_0xce44('0x6')](),controller[_0xce44('0x8')]);router[_0xce44('0x9')]('/',auth[_0xce44('0x6')](),controller['create']);router[_0xce44('0xa')](_0xce44('0x7'),auth['isAuthenticated'](),controller['update']);router[_0xce44('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xce44('0xc')]);module['exports']=router;
\ No newline at end of file
index 006da65..82aaeeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c68=['string','STRING','variable','BOOLEAN','sequelize','exports','ENUM','customVariable'];(function(_0x18811b,_0x6bede4){var _0x2fbee4=function(_0x4dcf84){while(--_0x4dcf84){_0x18811b['push'](_0x18811b['shift']());}};_0x2fbee4(++_0x6bede4);}(_0x3c68,0x17c));var _0x83c6=function(_0x5935d9,_0x53b325){_0x5935d9=_0x5935d9-0x0;var _0x87520e=_0x3c68[_0x5935d9];return _0x87520e;};'use strict';var Sequelize=require(_0x83c6('0x0'));module[_0x83c6('0x1')]={'type':{'type':Sequelize[_0x83c6('0x2')]('string','variable',_0x83c6('0x3'),'keyValue','picklist'),'defaultValue':_0x83c6('0x4')},'content':{'type':Sequelize[_0x83c6('0x5')]},'key':{'type':Sequelize[_0x83c6('0x5')]},'keyType':{'type':Sequelize[_0x83c6('0x2')](_0x83c6('0x4'),_0x83c6('0x6'),_0x83c6('0x3'))},'keyContent':{'type':Sequelize[_0x83c6('0x5')]},'idField':{'type':Sequelize[_0x83c6('0x5')]},'nameField':{'type':Sequelize[_0x83c6('0x5')]},'customField':{'type':Sequelize[_0x83c6('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x83c6('0x5')]}};
\ No newline at end of file
+var _0xbb8c=['customVariable','BOOLEAN','sequelize','string','variable','keyValue','picklist','STRING','ENUM'];(function(_0x455420,_0x16aa81){var _0x4c118b=function(_0x4ff548){while(--_0x4ff548){_0x455420['push'](_0x455420['shift']());}};_0x4c118b(++_0x16aa81);}(_0xbb8c,0x18e));var _0xcbb8=function(_0x4bf4f3,_0x5cde86){_0x4bf4f3=_0x4bf4f3-0x0;var _0x216f1b=_0xbb8c[_0x4bf4f3];return _0x216f1b;};'use strict';var Sequelize=require(_0xcbb8('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0xcbb8('0x1'),_0xcbb8('0x2'),'customVariable',_0xcbb8('0x3'),_0xcbb8('0x4')),'defaultValue':_0xcbb8('0x1')},'content':{'type':Sequelize[_0xcbb8('0x5')]},'key':{'type':Sequelize[_0xcbb8('0x5')]},'keyType':{'type':Sequelize[_0xcbb8('0x6')](_0xcbb8('0x1'),'variable',_0xcbb8('0x7'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xcbb8('0x5')]},'nameField':{'type':Sequelize[_0xcbb8('0x5')]},'customField':{'type':Sequelize[_0xcbb8('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xcbb8('0x5')]}};
\ No newline at end of file
index 781b453..f9eb59e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8393=['hasOwnProperty','nolimit','limit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','find','catch','create','body','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','set','Content-Range','reject','save','update','then','destroy','error','name','send','index','map','Dynamics365Field','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length'];(function(_0x5bcc80,_0x222063){var _0x508657=function(_0x60aac4){while(--_0x60aac4){_0x5bcc80['push'](_0x5bcc80['shift']());}};_0x508657(++_0x222063);}(_0x8393,0xf1));var _0x3839=function(_0x4a9b8b,_0x500c25){_0x4a9b8b=_0x4a9b8b-0x0;var _0x4c37cf=_0x8393[_0x4a9b8b];return _0x4c37cf;};'use strict';var emlformat=require(_0x3839('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3839('0x1'));var rp=require(_0x3839('0x2'));var moment=require(_0x3839('0x3'));var BPromise=require(_0x3839('0x4'));var Mustache=require(_0x3839('0x5'));var util=require(_0x3839('0x6'));var path=require(_0x3839('0x7'));var sox=require(_0x3839('0x8'));var csv=require(_0x3839('0x9'));var ejs=require(_0x3839('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3839('0xb'));var squel=require(_0x3839('0xc'));var crypto=require('crypto');var jsforce=require(_0x3839('0xd'));var deskjs=require(_0x3839('0xe'));var toCsv=require(_0x3839('0x9'));var querystring=require(_0x3839('0xf'));var Papa=require(_0x3839('0x10'));var Redis=require(_0x3839('0x11'));var authService=require(_0x3839('0x12'));var qs=require(_0x3839('0x13'));var as=require(_0x3839('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3839('0x15'))('api');var utils=require(_0x3839('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x3839('0x17'));var db=require(_0x3839('0x18'))['db'];function respondWithStatusCode(_0x431214,_0x104a36){_0x104a36=_0x104a36||0xcc;return function(_0x56fef1){if(_0x56fef1){return _0x431214['sendStatus'](_0x104a36);}return _0x431214[_0x3839('0x19')](_0x104a36)[_0x3839('0x1a')]();};}function respondWithResult(_0x430679,_0x58781e){_0x58781e=_0x58781e||0xc8;return function(_0xdd5f8b){if(_0xdd5f8b){return _0x430679[_0x3839('0x19')](_0x58781e)[_0x3839('0x1b')](_0xdd5f8b);}};}function respondWithFilteredResult(_0x2346a0,_0x15f6ac){return function(_0x3f8437){if(_0x3f8437){var _0x490263=typeof _0x15f6ac[_0x3839('0x1c')]==='undefined'&&typeof _0x15f6ac['limit']===_0x3839('0x1d');var _0x1be837=_0x3f8437[_0x3839('0x1e')];var _0x187c90=_0x490263?0x0:_0x15f6ac[_0x3839('0x1c')];var _0x3363d9=_0x490263?_0x3f8437[_0x3839('0x1e')]:_0x15f6ac[_0x3839('0x1c')]+_0x15f6ac['limit'];var _0x59f6d5;if(_0x3363d9>=_0x1be837){_0x3363d9=_0x1be837;_0x59f6d5=0xc8;}else{_0x59f6d5=0xce;}_0x2346a0[_0x3839('0x19')](_0x59f6d5);return _0x2346a0[_0x3839('0x1f')](_0x3839('0x20'),_0x187c90+'-'+_0x3363d9+'/'+_0x1be837)['json'](_0x3f8437);}return null;};}function patchUpdates(_0x164c7e){return function(_0x2abdbf){try{jsonpatch['apply'](_0x2abdbf,_0x164c7e,!![]);}catch(_0x480ac4){return BPromise[_0x3839('0x21')](_0x480ac4);}return _0x2abdbf[_0x3839('0x22')]();};}function saveUpdates(_0x3d12ff,_0x2bd888){return function(_0x40bc49){if(_0x40bc49){return _0x40bc49[_0x3839('0x23')](_0x3d12ff)[_0x3839('0x24')](function(_0xeaa2cf){return _0xeaa2cf;});}return null;};}function removeEntity(_0x43e599,_0x54046b){return function(_0x203eff){if(_0x203eff){return _0x203eff[_0x3839('0x25')]()[_0x3839('0x24')](function(){_0x43e599[_0x3839('0x19')](0xcc)[_0x3839('0x1a')]();});}};}function handleEntityNotFound(_0x33d6fe,_0xd35486){return function(_0x50e7f1){if(!_0x50e7f1){_0x33d6fe['sendStatus'](0x194);}return _0x50e7f1;};}function handleError(_0x32e908,_0x36a4){_0x36a4=_0x36a4||0x1f4;return function(_0x3dcd19){logger[_0x3839('0x26')](_0x3dcd19['stack']);if(_0x3dcd19[_0x3839('0x27')]){delete _0x3dcd19[_0x3839('0x27')];}_0x32e908[_0x3839('0x19')](_0x36a4)[_0x3839('0x28')](_0x3dcd19);};}exports[_0x3839('0x29')]=function(_0x5011d5,_0x341ca4){var _0x3e4b60={},_0x2eaef0={},_0xe01249={'count':0x0,'rows':[]};var _0x490523=_[_0x3839('0x2a')](db[_0x3839('0x2b')]['rawAttributes'],function(_0x27fbb0){return{'name':_0x27fbb0[_0x3839('0x2c')],'type':_0x27fbb0[_0x3839('0x2d')][_0x3839('0x2e')]};});_0x2eaef0[_0x3839('0x2f')]=_['map'](_0x490523,_0x3839('0x27'));_0x2eaef0[_0x3839('0x30')]=_[_0x3839('0x31')](_0x5011d5[_0x3839('0x30')]);_0x2eaef0[_0x3839('0x32')]=_[_0x3839('0x33')](_0x2eaef0['model'],_0x2eaef0[_0x3839('0x30')]);_0x3e4b60[_0x3839('0x34')]=_[_0x3839('0x33')](_0x2eaef0[_0x3839('0x2f')],qs[_0x3839('0x35')](_0x5011d5[_0x3839('0x30')][_0x3839('0x35')]));_0x3e4b60[_0x3839('0x34')]=_0x3e4b60[_0x3839('0x34')][_0x3839('0x36')]?_0x3e4b60[_0x3839('0x34')]:_0x2eaef0[_0x3839('0x2f')];if(!_0x5011d5['query'][_0x3839('0x37')](_0x3839('0x38'))){_0x3e4b60[_0x3839('0x39')]=qs[_0x3839('0x39')](_0x5011d5[_0x3839('0x30')]['limit']);_0x3e4b60[_0x3839('0x1c')]=qs[_0x3839('0x1c')](_0x5011d5[_0x3839('0x30')][_0x3839('0x1c')]);}_0x3e4b60[_0x3839('0x3a')]=qs['sort'](_0x5011d5[_0x3839('0x30')][_0x3839('0x3b')]);_0x3e4b60['where']=qs['filters'](_['pick'](_0x5011d5['query'],_0x2eaef0[_0x3839('0x32')]),_0x490523);if(_0x5011d5[_0x3839('0x30')]['filter']){_0x3e4b60[_0x3839('0x3c')]=_[_0x3839('0x3d')](_0x3e4b60['where'],{'$or':_['map'](_0x490523,function(_0x5cf370){if(_0x5cf370[_0x3839('0x2d')]!==_0x3839('0x3e')){var _0x5a0ff1={};_0x5a0ff1[_0x5cf370[_0x3839('0x27')]]={'$like':'%'+_0x5011d5[_0x3839('0x30')][_0x3839('0x3f')]+'%'};return _0x5a0ff1;}})});}_0x3e4b60=_['merge']({},_0x3e4b60,_0x5011d5[_0x3839('0x40')]);var _0x14f14e={'where':_0x3e4b60[_0x3839('0x3c')]};return db[_0x3839('0x2b')][_0x3839('0x1e')](_0x14f14e)['then'](function(_0x5b82d1){_0xe01249['count']=_0x5b82d1;if(_0x5011d5['query'][_0x3839('0x41')]){_0x3e4b60[_0x3839('0x42')]=[{'all':!![]}];}return db[_0x3839('0x2b')]['findAll'](_0x3e4b60);})['then'](function(_0x11d689){_0xe01249[_0x3839('0x43')]=_0x11d689;return _0xe01249;})[_0x3839('0x24')](respondWithFilteredResult(_0x341ca4,_0x3e4b60))['catch'](handleError(_0x341ca4,null));};exports[_0x3839('0x44')]=function(_0x4e579f,_0x95f68){var _0x2f1923={'raw':!![],'where':{'id':_0x4e579f[_0x3839('0x45')]['id']}},_0x93d352={};_0x93d352[_0x3839('0x2f')]=_[_0x3839('0x31')](db['Dynamics365Field']['rawAttributes']);_0x93d352[_0x3839('0x30')]=_[_0x3839('0x31')](_0x4e579f['query']);_0x93d352['filters']=_[_0x3839('0x33')](_0x93d352['model'],_0x93d352[_0x3839('0x30')]);_0x2f1923[_0x3839('0x34')]=_[_0x3839('0x33')](_0x93d352['model'],qs[_0x3839('0x35')](_0x4e579f['query'][_0x3839('0x35')]));_0x2f1923['attributes']=_0x2f1923[_0x3839('0x34')][_0x3839('0x36')]?_0x2f1923[_0x3839('0x34')]:_0x93d352[_0x3839('0x2f')];if(_0x4e579f['query'][_0x3839('0x41')]){_0x2f1923[_0x3839('0x42')]=[{'all':!![]}];}_0x2f1923=_[_0x3839('0x3d')]({},_0x2f1923,_0x4e579f['options']);return db[_0x3839('0x2b')][_0x3839('0x46')](_0x2f1923)[_0x3839('0x24')](handleEntityNotFound(_0x95f68,null))[_0x3839('0x24')](respondWithResult(_0x95f68,null))[_0x3839('0x47')](handleError(_0x95f68,null));};exports[_0x3839('0x48')]=function(_0x3afb33,_0x505c6c){return db[_0x3839('0x2b')][_0x3839('0x48')](_0x3afb33[_0x3839('0x49')],{})[_0x3839('0x24')](respondWithResult(_0x505c6c,0xc9))[_0x3839('0x47')](handleError(_0x505c6c,null));};exports[_0x3839('0x23')]=function(_0x1f2631,_0x46985a){if(_0x1f2631['body']['id']){delete _0x1f2631['body']['id'];}return db[_0x3839('0x2b')][_0x3839('0x46')]({'where':{'id':_0x1f2631[_0x3839('0x45')]['id']}})[_0x3839('0x24')](handleEntityNotFound(_0x46985a,null))[_0x3839('0x24')](saveUpdates(_0x1f2631[_0x3839('0x49')],null))[_0x3839('0x24')](respondWithResult(_0x46985a,null))[_0x3839('0x47')](handleError(_0x46985a,null));};exports[_0x3839('0x25')]=function(_0x31d758,_0x1b0414){return db[_0x3839('0x2b')]['find']({'where':{'id':_0x31d758[_0x3839('0x45')]['id']}})[_0x3839('0x24')](handleEntityNotFound(_0x1b0414,null))[_0x3839('0x24')](removeEntity(_0x1b0414,null))[_0x3839('0x47')](handleError(_0x1b0414,null));};
\ No newline at end of file
+var _0x4f6e=['json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','error','stack','name','index','map','Dynamics365Field','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','keys','create','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end'];(function(_0x4c075b,_0x56c2e7){var _0x228448=function(_0x37c25c){while(--_0x37c25c){_0x4c075b['push'](_0x4c075b['shift']());}};_0x228448(++_0x56c2e7);}(_0x4f6e,0xc7));var _0xe4f6=function(_0x35d3f5,_0x297a30){_0x35d3f5=_0x35d3f5-0x0;var _0x1f50f1=_0x4f6e[_0x35d3f5];return _0x1f50f1;};'use strict';var emlformat=require(_0xe4f6('0x0'));var rimraf=require(_0xe4f6('0x1'));var zipdir=require(_0xe4f6('0x2'));var jsonpatch=require(_0xe4f6('0x3'));var rp=require(_0xe4f6('0x4'));var moment=require(_0xe4f6('0x5'));var BPromise=require(_0xe4f6('0x6'));var Mustache=require(_0xe4f6('0x7'));var util=require('util');var path=require(_0xe4f6('0x8'));var sox=require(_0xe4f6('0x9'));var csv=require('to-csv');var ejs=require(_0xe4f6('0xa'));var fs=require('fs');var fs_extra=require(_0xe4f6('0xb'));var _=require(_0xe4f6('0xc'));var squel=require(_0xe4f6('0xd'));var crypto=require(_0xe4f6('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xe4f6('0xf'));var toCsv=require(_0xe4f6('0x10'));var querystring=require('querystring');var Papa=require(_0xe4f6('0x11'));var Redis=require(_0xe4f6('0x12'));var authService=require(_0xe4f6('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xe4f6('0x14'));var hardwareService=require(_0xe4f6('0x15'));var logger=require(_0xe4f6('0x16'))(_0xe4f6('0x17'));var utils=require(_0xe4f6('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xe4f6('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5a62eb,_0x64acd3){_0x64acd3=_0x64acd3||0xcc;return function(_0x565876){if(_0x565876){return _0x5a62eb[_0xe4f6('0x1a')](_0x64acd3);}return _0x5a62eb[_0xe4f6('0x1b')](_0x64acd3)[_0xe4f6('0x1c')]();};}function respondWithResult(_0x3f5d7f,_0x24e36f){_0x24e36f=_0x24e36f||0xc8;return function(_0x2a8cfe){if(_0x2a8cfe){return _0x3f5d7f[_0xe4f6('0x1b')](_0x24e36f)[_0xe4f6('0x1d')](_0x2a8cfe);}};}function respondWithFilteredResult(_0x584ec5,_0x5ee8d5){return function(_0x5648b0){if(_0x5648b0){var _0x284104=typeof _0x5ee8d5[_0xe4f6('0x1e')]===_0xe4f6('0x1f')&&typeof _0x5ee8d5[_0xe4f6('0x20')]==='undefined';var _0x46c0bf=_0x5648b0[_0xe4f6('0x21')];var _0x2dd1fc=_0x284104?0x0:_0x5ee8d5[_0xe4f6('0x1e')];var _0x4a5df8=_0x284104?_0x5648b0['count']:_0x5ee8d5['offset']+_0x5ee8d5['limit'];var _0x4d8707;if(_0x4a5df8>=_0x46c0bf){_0x4a5df8=_0x46c0bf;_0x4d8707=0xc8;}else{_0x4d8707=0xce;}_0x584ec5[_0xe4f6('0x1b')](_0x4d8707);return _0x584ec5['set'](_0xe4f6('0x22'),_0x2dd1fc+'-'+_0x4a5df8+'/'+_0x46c0bf)[_0xe4f6('0x1d')](_0x5648b0);}return null;};}function patchUpdates(_0x4996a1){return function(_0x191230){try{jsonpatch['apply'](_0x191230,_0x4996a1,!![]);}catch(_0x27f05d){return BPromise[_0xe4f6('0x23')](_0x27f05d);}return _0x191230[_0xe4f6('0x24')]();};}function saveUpdates(_0xa9d1e3,_0x18a1bf){return function(_0x59e26b){if(_0x59e26b){return _0x59e26b[_0xe4f6('0x25')](_0xa9d1e3)[_0xe4f6('0x26')](function(_0x83fd7f){return _0x83fd7f;});}return null;};}function removeEntity(_0x37e7c1,_0x2df25f){return function(_0x41744b){if(_0x41744b){return _0x41744b[_0xe4f6('0x27')]()[_0xe4f6('0x26')](function(){_0x37e7c1[_0xe4f6('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x512925,_0x2911fc){return function(_0x37d29c){if(!_0x37d29c){_0x512925['sendStatus'](0x194);}return _0x37d29c;};}function handleError(_0x59e4d5,_0x564e10){_0x564e10=_0x564e10||0x1f4;return function(_0x196456){logger[_0xe4f6('0x28')](_0x196456[_0xe4f6('0x29')]);if(_0x196456[_0xe4f6('0x2a')]){delete _0x196456[_0xe4f6('0x2a')];}_0x59e4d5[_0xe4f6('0x1b')](_0x564e10)['send'](_0x196456);};}exports[_0xe4f6('0x2b')]=function(_0xbe6554,_0x409226){var _0x2a5af1={},_0x506b5f={},_0x168aa9={'count':0x0,'rows':[]};var _0x2a2dfc=_[_0xe4f6('0x2c')](db[_0xe4f6('0x2d')][_0xe4f6('0x2e')],function(_0x1fdffa){return{'name':_0x1fdffa[_0xe4f6('0x2f')],'type':_0x1fdffa[_0xe4f6('0x30')][_0xe4f6('0x31')]};});_0x506b5f[_0xe4f6('0x32')]=_[_0xe4f6('0x2c')](_0x2a2dfc,'name');_0x506b5f[_0xe4f6('0x33')]=_['keys'](_0xbe6554['query']);_0x506b5f[_0xe4f6('0x34')]=_['intersection'](_0x506b5f[_0xe4f6('0x32')],_0x506b5f[_0xe4f6('0x33')]);_0x2a5af1[_0xe4f6('0x35')]=_[_0xe4f6('0x36')](_0x506b5f['model'],qs[_0xe4f6('0x37')](_0xbe6554[_0xe4f6('0x33')][_0xe4f6('0x37')]));_0x2a5af1[_0xe4f6('0x35')]=_0x2a5af1[_0xe4f6('0x35')]['length']?_0x2a5af1[_0xe4f6('0x35')]:_0x506b5f[_0xe4f6('0x32')];if(!_0xbe6554[_0xe4f6('0x33')][_0xe4f6('0x38')](_0xe4f6('0x39'))){_0x2a5af1[_0xe4f6('0x20')]=qs[_0xe4f6('0x20')](_0xbe6554['query']['limit']);_0x2a5af1[_0xe4f6('0x1e')]=qs[_0xe4f6('0x1e')](_0xbe6554[_0xe4f6('0x33')][_0xe4f6('0x1e')]);}_0x2a5af1[_0xe4f6('0x3a')]=qs[_0xe4f6('0x3b')](_0xbe6554['query'][_0xe4f6('0x3b')]);_0x2a5af1[_0xe4f6('0x3c')]=qs['filters'](_[_0xe4f6('0x3d')](_0xbe6554[_0xe4f6('0x33')],_0x506b5f[_0xe4f6('0x34')]),_0x2a2dfc);if(_0xbe6554['query']['filter']){_0x2a5af1[_0xe4f6('0x3c')]=_[_0xe4f6('0x3e')](_0x2a5af1[_0xe4f6('0x3c')],{'$or':_[_0xe4f6('0x2c')](_0x2a2dfc,function(_0x18eb9c){if(_0x18eb9c[_0xe4f6('0x30')]!==_0xe4f6('0x3f')){var _0xe5dd9a={};_0xe5dd9a[_0x18eb9c[_0xe4f6('0x2a')]]={'$like':'%'+_0xbe6554[_0xe4f6('0x33')][_0xe4f6('0x40')]+'%'};return _0xe5dd9a;}})});}_0x2a5af1=_[_0xe4f6('0x3e')]({},_0x2a5af1,_0xbe6554[_0xe4f6('0x41')]);var _0xec1fa3={'where':_0x2a5af1[_0xe4f6('0x3c')]};return db[_0xe4f6('0x2d')][_0xe4f6('0x21')](_0xec1fa3)[_0xe4f6('0x26')](function(_0x58c63a){_0x168aa9[_0xe4f6('0x21')]=_0x58c63a;if(_0xbe6554[_0xe4f6('0x33')]['includeAll']){_0x2a5af1[_0xe4f6('0x42')]=[{'all':!![]}];}return db[_0xe4f6('0x2d')][_0xe4f6('0x43')](_0x2a5af1);})[_0xe4f6('0x26')](function(_0x1141b6){_0x168aa9[_0xe4f6('0x44')]=_0x1141b6;return _0x168aa9;})[_0xe4f6('0x26')](respondWithFilteredResult(_0x409226,_0x2a5af1))[_0xe4f6('0x45')](handleError(_0x409226,null));};exports[_0xe4f6('0x46')]=function(_0x30b86c,_0x574e04){var _0x11917b={'raw':!![],'where':{'id':_0x30b86c['params']['id']}},_0x4e593e={};_0x4e593e[_0xe4f6('0x32')]=_[_0xe4f6('0x47')](db[_0xe4f6('0x2d')]['rawAttributes']);_0x4e593e[_0xe4f6('0x33')]=_[_0xe4f6('0x47')](_0x30b86c[_0xe4f6('0x33')]);_0x4e593e[_0xe4f6('0x34')]=_[_0xe4f6('0x36')](_0x4e593e['model'],_0x4e593e[_0xe4f6('0x33')]);_0x11917b[_0xe4f6('0x35')]=_[_0xe4f6('0x36')](_0x4e593e[_0xe4f6('0x32')],qs[_0xe4f6('0x37')](_0x30b86c[_0xe4f6('0x33')]['fields']));_0x11917b[_0xe4f6('0x35')]=_0x11917b[_0xe4f6('0x35')]['length']?_0x11917b[_0xe4f6('0x35')]:_0x4e593e[_0xe4f6('0x32')];if(_0x30b86c[_0xe4f6('0x33')]['includeAll']){_0x11917b[_0xe4f6('0x42')]=[{'all':!![]}];}_0x11917b=_['merge']({},_0x11917b,_0x30b86c[_0xe4f6('0x41')]);return db[_0xe4f6('0x2d')]['find'](_0x11917b)[_0xe4f6('0x26')](handleEntityNotFound(_0x574e04,null))[_0xe4f6('0x26')](respondWithResult(_0x574e04,null))[_0xe4f6('0x45')](handleError(_0x574e04,null));};exports[_0xe4f6('0x48')]=function(_0x5f1ec9,_0xdeeb41){return db[_0xe4f6('0x2d')][_0xe4f6('0x48')](_0x5f1ec9[_0xe4f6('0x49')],{})['then'](respondWithResult(_0xdeeb41,0xc9))[_0xe4f6('0x45')](handleError(_0xdeeb41,null));};exports[_0xe4f6('0x25')]=function(_0x441a32,_0x2994c4){if(_0x441a32['body']['id']){delete _0x441a32['body']['id'];}return db[_0xe4f6('0x2d')][_0xe4f6('0x4a')]({'where':{'id':_0x441a32['params']['id']}})[_0xe4f6('0x26')](handleEntityNotFound(_0x2994c4,null))[_0xe4f6('0x26')](saveUpdates(_0x441a32[_0xe4f6('0x49')],null))['then'](respondWithResult(_0x2994c4,null))[_0xe4f6('0x45')](handleError(_0x2994c4,null));};exports[_0xe4f6('0x27')]=function(_0x431862,_0x34abb6){return db[_0xe4f6('0x2d')][_0xe4f6('0x4a')]({'where':{'id':_0x431862[_0xe4f6('0x4b')]['id']}})[_0xe4f6('0x26')](handleEntityNotFound(_0x34abb6,null))[_0xe4f6('0x26')](removeEntity(_0x34abb6,null))['catch'](handleError(_0x34abb6,null));};
\ No newline at end of file
index 6f31b73..b8b7e18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd54d=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','lodash','api'];(function(_0x3e87dd,_0x238b97){var _0x5aa4a9=function(_0x44d64b){while(--_0x44d64b){_0x3e87dd['push'](_0x3e87dd['shift']());}};_0x5aa4a9(++_0x238b97);}(_0xd54d,0x191));var _0xdd54=function(_0xb2d5e0,_0x376535){_0xb2d5e0=_0xb2d5e0-0x0;var _0x244aab=_0xd54d[_0xb2d5e0];return _0x244aab;};'use strict';var _=require(_0xdd54('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xdd54('0x1'));var moment=require(_0xdd54('0x2'));var BPromise=require(_0xdd54('0x3'));var rp=require(_0xdd54('0x4'));var fs=require('fs');var path=require(_0xdd54('0x5'));var rimraf=require(_0xdd54('0x6'));var config=require(_0xdd54('0x7'));var attributes=require(_0xdd54('0x8'));module[_0xdd54('0x9')]=function(_0x47fe95,_0x4a56cc){return _0x47fe95['define'](_0xdd54('0xa'),attributes,{'tableName':_0xdd54('0xb'),'paranoid':![],'indexes':[{'name':_0xdd54('0xc'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9a9=['api','bluebird','request-promise','path','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field','int_dynamics365_fields','idField','FieldId','lodash','util','../../config/logger'];(function(_0x9ae07c,_0x4cba11){var _0x837b1f=function(_0x4f30a7){while(--_0x4f30a7){_0x9ae07c['push'](_0x9ae07c['shift']());}};_0x837b1f(++_0x4cba11);}(_0xa9a9,0xa2));var _0x9a9a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa9a9[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x9a9a('0x0'));var util=require(_0x9a9a('0x1'));var logger=require(_0x9a9a('0x2'))(_0x9a9a('0x3'));var moment=require('moment');var BPromise=require(_0x9a9a('0x4'));var rp=require(_0x9a9a('0x5'));var fs=require('fs');var path=require(_0x9a9a('0x6'));var rimraf=require('rimraf');var config=require(_0x9a9a('0x7'));var attributes=require(_0x9a9a('0x8'));module[_0x9a9a('0x9')]=function(_0x417fe6,_0x2b6925){return _0x417fe6[_0x9a9a('0xa')](_0x9a9a('0xb'),attributes,{'tableName':_0x9a9a('0xc'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0x9a9a('0xd'),_0x9a9a('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3bb4c06..2ebf9d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe21f=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x12beb5,_0x498b31){var _0x351a16=function(_0x881110){while(--_0x881110){_0x12beb5['push'](_0x12beb5['shift']());}};_0x351a16(++_0x498b31);}(_0xe21f,0x155));var _0xfe21=function(_0x5dc3b4,_0x13f0c8){_0x5dc3b4=_0x5dc3b4-0x0;var _0x18a06d=_0xe21f[_0x5dc3b4];return _0x18a06d;};'use strict';var _=require(_0xfe21('0x0'));var util=require(_0xfe21('0x1'));var moment=require(_0xfe21('0x2'));var BPromise=require(_0xfe21('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfe21('0x4'));var db=require(_0xfe21('0x5'))['db'];var utils=require(_0xfe21('0x6'));var logger=require(_0xfe21('0x7'))(_0xfe21('0x8'));var config=require(_0xfe21('0x9'));var jayson=require(_0xfe21('0xa'));var client=jayson[_0xfe21('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x549fa0,_0x5039c1,_0x5b3412){return new BPromise(function(_0x3c2616,_0xdb152c){return client[_0xfe21('0xc')](_0x549fa0,_0x5b3412)[_0xfe21('0xd')](function(_0x538bce){logger[_0xfe21('0xe')](_0xfe21('0xf'),_0x5039c1,_0xfe21('0x10'));logger[_0xfe21('0x11')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x5039c1,'request\x20sent',JSON['stringify'](_0x538bce));if(_0x538bce[_0xfe21('0x12')]){if(_0x538bce['error'][_0xfe21('0x13')]===0x1f4){logger['error']('Dynamics365Field,\x20%s,\x20%s',_0x5039c1,_0x538bce[_0xfe21('0x12')][_0xfe21('0x14')]);return _0xdb152c(_0x538bce[_0xfe21('0x12')][_0xfe21('0x14')]);}logger[_0xfe21('0x12')](_0xfe21('0xf'),_0x5039c1,_0x538bce[_0xfe21('0x12')][_0xfe21('0x14')]);return _0x3c2616(_0x538bce[_0xfe21('0x12')][_0xfe21('0x14')]);}else{logger[_0xfe21('0xe')](_0xfe21('0xf'),_0x5039c1,_0xfe21('0x10'));_0x3c2616(_0x538bce[_0xfe21('0x15')][_0xfe21('0x14')]);}})[_0xfe21('0x16')](function(_0x2d2114){logger[_0xfe21('0x12')]('Dynamics365Field,\x20%s,\x20%s',_0x5039c1,_0x2d2114);_0xdb152c(_0x2d2114);});});}
\ No newline at end of file
+var _0x1372=['../../config/logger','rpc','client','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x1372,0x19e));var _0x2137=function(_0x8d044f,_0x50387a){_0x8d044f=_0x8d044f-0x0;var _0x2c0687=_0x1372[_0x8d044f];return _0x2c0687;};'use strict';var _=require('lodash');var util=require(_0x2137('0x0'));var moment=require('moment');var BPromise=require(_0x2137('0x1'));var rs=require(_0x2137('0x2'));var fs=require('fs');var Redis=require(_0x2137('0x3'));var db=require(_0x2137('0x4'))['db'];var utils=require(_0x2137('0x5'));var logger=require(_0x2137('0x6'))(_0x2137('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2137('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x52ac87,_0x4bf0f8,_0x55174b){return new BPromise(function(_0x478352,_0x40a4a1){return client['request'](_0x52ac87,_0x55174b)[_0x2137('0x9')](function(_0x2b4b38){logger[_0x2137('0xa')](_0x2137('0xb'),_0x4bf0f8,_0x2137('0xc'));logger[_0x2137('0xd')](_0x2137('0xe'),_0x4bf0f8,_0x2137('0xc'),JSON[_0x2137('0xf')](_0x2b4b38));if(_0x2b4b38[_0x2137('0x10')]){if(_0x2b4b38[_0x2137('0x10')][_0x2137('0x11')]===0x1f4){logger[_0x2137('0x10')]('Dynamics365Field,\x20%s,\x20%s',_0x4bf0f8,_0x2b4b38['error'][_0x2137('0x12')]);return _0x40a4a1(_0x2b4b38['error'][_0x2137('0x12')]);}logger[_0x2137('0x10')](_0x2137('0xb'),_0x4bf0f8,_0x2b4b38[_0x2137('0x10')][_0x2137('0x12')]);return _0x478352(_0x2b4b38[_0x2137('0x10')][_0x2137('0x12')]);}else{logger['info'](_0x2137('0xb'),_0x4bf0f8,_0x2137('0xc'));_0x478352(_0x2b4b38[_0x2137('0x13')][_0x2137('0x12')]);}})[_0x2137('0x14')](function(_0x13502c){logger['error'](_0x2137('0xb'),_0x4bf0f8,_0x13502c);_0x40a4a1(_0x13502c);});});}
\ No newline at end of file
index 405d5f1..e2bb107 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0f0=['multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','show','/:id/configurations','getFields','post','create','addConfiguration','/:id','update','delete','destroy','exports'];(function(_0x37d3e0,_0x51d1f4){var _0x5512a3=function(_0x496e6b){while(--_0x496e6b){_0x37d3e0['push'](_0x37d3e0['shift']());}};_0x5512a3(++_0x51d1f4);}(_0xf0f0,0x13b));var _0x0f0f=function(_0x235976,_0x3bb7f3){_0x235976=_0x235976-0x0;var _0xe5627=_0xf0f0[_0x235976];return _0xe5627;};'use strict';var multer=require(_0x0f0f('0x0'));var util=require(_0x0f0f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0f0f('0x2')]();var fs_extra=require(_0x0f0f('0x3'));var auth=require(_0x0f0f('0x4'));var interaction=require(_0x0f0f('0x5'));var config=require(_0x0f0f('0x6'));var controller=require(_0x0f0f('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x0f0f('0x8')]('/:id',auth[_0x0f0f('0x9')](),controller[_0x0f0f('0xa')]);router['get'](_0x0f0f('0xb'),auth[_0x0f0f('0x9')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0x0f0f('0x9')](),controller[_0x0f0f('0xc')]);router[_0x0f0f('0xd')]('/',auth[_0x0f0f('0x9')](),controller[_0x0f0f('0xe')]);router[_0x0f0f('0xd')]('/:id/configurations',auth[_0x0f0f('0x9')](),controller[_0x0f0f('0xf')]);router['put'](_0x0f0f('0x10'),auth[_0x0f0f('0x9')](),controller[_0x0f0f('0x11')]);router[_0x0f0f('0x12')](_0x0f0f('0x10'),auth[_0x0f0f('0x9')](),controller[_0x0f0f('0x13')]);module[_0x0f0f('0x14')]=router;
\ No newline at end of file
+var _0xfa78=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','/:id/fields','getFields','create','addConfiguration','update','destroy','exports','util'];(function(_0x1e91eb,_0x5829a3){var _0x2af75a=function(_0x1815d1){while(--_0x1815d1){_0x1e91eb['push'](_0x1e91eb['shift']());}};_0x2af75a(++_0x5829a3);}(_0xfa78,0x133));var _0x8fa7=function(_0x2a0fc6,_0x37c17b){_0x2a0fc6=_0x2a0fc6-0x0;var _0x32a19d=_0xfa78[_0x2a0fc6];return _0x32a19d;};'use strict';var multer=require('multer');var util=require(_0x8fa7('0x0'));var path=require(_0x8fa7('0x1'));var timeout=require(_0x8fa7('0x2'));var express=require(_0x8fa7('0x3'));var router=express[_0x8fa7('0x4')]();var fs_extra=require(_0x8fa7('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8fa7('0x6'));var config=require(_0x8fa7('0x7'));var controller=require(_0x8fa7('0x8'));router[_0x8fa7('0x9')]('/',auth[_0x8fa7('0xa')](),controller[_0x8fa7('0xb')]);router[_0x8fa7('0x9')](_0x8fa7('0xc'),auth[_0x8fa7('0xa')](),controller['show']);router['get'](_0x8fa7('0xd'),auth[_0x8fa7('0xa')](),controller[_0x8fa7('0xe')]);router[_0x8fa7('0x9')](_0x8fa7('0xf'),auth[_0x8fa7('0xa')](),controller[_0x8fa7('0x10')]);router['post']('/',auth[_0x8fa7('0xa')](),controller[_0x8fa7('0x11')]);router['post']('/:id/configurations',auth['isAuthenticated'](),controller[_0x8fa7('0x12')]);router['put'](_0x8fa7('0xc'),auth[_0x8fa7('0xa')](),controller[_0x8fa7('0x13')]);router['delete']('/:id',auth[_0x8fa7('0xa')](),controller[_0x8fa7('0x14')]);module[_0x8fa7('0x15')]=router;
\ No newline at end of file
index 3edb936..52efbd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4888=['exports','STRING','username'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x4888,0x198));var _0x8488=function(_0x51a9d0,_0xbebd29){_0x51a9d0=_0x51a9d0-0x0;var _0x4db0ee=_0x4888[_0x51a9d0];return _0x4db0ee;};'use strict';var Sequelize=require('sequelize');module[_0x8488('0x0')]={'name':{'type':Sequelize[_0x8488('0x1')]},'description':{'type':Sequelize[_0x8488('0x1')]},'username':{'type':Sequelize[_0x8488('0x1')],'unique':_0x8488('0x2')},'apiKey':{'type':Sequelize[_0x8488('0x1')]},'remoteUri':{'type':Sequelize[_0x8488('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x8488('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x1775=['STRING','username','remoteUri','exports'];(function(_0x4d00bd,_0x4668f7){var _0x1befcd=function(_0x2755c2){while(--_0x2755c2){_0x4d00bd['push'](_0x4d00bd['shift']());}};_0x1befcd(++_0x4668f7);}(_0x1775,0x1db));var _0x5177=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x1775[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require('sequelize');module[_0x5177('0x0')]={'name':{'type':Sequelize[_0x5177('0x1')]},'description':{'type':Sequelize[_0x5177('0x1')]},'username':{'type':Sequelize[_0x5177('0x1')],'unique':_0x5177('0x2')},'apiKey':{'type':Sequelize[_0x5177('0x1')]},'remoteUri':{'type':Sequelize[_0x5177('0x1')],'unique':_0x5177('0x3')},'serverUrl':{'type':Sequelize[_0x5177('0x1')],'allowNull':![]}};
\ No newline at end of file
index 89b3072..5d06f34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5fb=['json','offset','undefined','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','count','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','getConfigurations','findOne','FreshdeskConfiguration','merge','options','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','lastIndexOf','%s/%s','api/v2/ticket_fields','format','Basic\x20%s','toString','requester','subject','description','priority','group','remove','includes','default','custom_text','custom_dropdown','label','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','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','../../components/integrations/configuration','sendStatus','status','end'];(function(_0x727a9b,_0x2c4144){var _0xb93816=function(_0x2025b4){while(--_0x2025b4){_0x727a9b['push'](_0x727a9b['shift']());}};_0xb93816(++_0x2c4144);}(_0xe5fb,0xce));var _0xbe5f=function(_0x2e58c7,_0x23d092){_0x2e58c7=_0x2e58c7-0x0;var _0x26eb00=_0xe5fb[_0x2e58c7];return _0x26eb00;};'use strict';var emlformat=require(_0xbe5f('0x0'));var rimraf=require(_0xbe5f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbe5f('0x2'));var rp=require(_0xbe5f('0x3'));var moment=require(_0xbe5f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbe5f('0x5'));var util=require(_0xbe5f('0x6'));var path=require(_0xbe5f('0x7'));var sox=require(_0xbe5f('0x8'));var csv=require(_0xbe5f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbe5f('0xa'));var _=require(_0xbe5f('0xb'));var squel=require(_0xbe5f('0xc'));var crypto=require(_0xbe5f('0xd'));var jsforce=require(_0xbe5f('0xe'));var deskjs=require(_0xbe5f('0xf'));var toCsv=require('to-csv');var querystring=require(_0xbe5f('0x10'));var Papa=require(_0xbe5f('0x11'));var Redis=require(_0xbe5f('0x12'));var authService=require(_0xbe5f('0x13'));var qs=require(_0xbe5f('0x14'));var as=require(_0xbe5f('0x15'));var hardwareService=require(_0xbe5f('0x16'));var logger=require(_0xbe5f('0x17'))(_0xbe5f('0x18'));var utils=require(_0xbe5f('0x19'));var config=require(_0xbe5f('0x1a'));var licenseUtil=require(_0xbe5f('0x1b'));var db=require('../../mysqldb')['db'];var integrations=require(_0xbe5f('0x1c'));function respondWithStatusCode(_0x227ef6,_0x454a41){_0x454a41=_0x454a41||0xcc;return function(_0x5880c3){if(_0x5880c3){return _0x227ef6[_0xbe5f('0x1d')](_0x454a41);}return _0x227ef6[_0xbe5f('0x1e')](_0x454a41)[_0xbe5f('0x1f')]();};}function respondWithResult(_0x19d245,_0x3b753f){_0x3b753f=_0x3b753f||0xc8;return function(_0x5e2862){if(_0x5e2862){return _0x19d245[_0xbe5f('0x1e')](_0x3b753f)[_0xbe5f('0x20')](_0x5e2862);}};}function respondWithFilteredResult(_0x159fa3,_0x77698b){return function(_0x1b8825){if(_0x1b8825){var _0x345f65=typeof _0x77698b[_0xbe5f('0x21')]===_0xbe5f('0x22')&&typeof _0x77698b['limit']==='undefined';var _0x550702=_0x1b8825['count'];var _0x9b274e=_0x345f65?0x0:_0x77698b[_0xbe5f('0x21')];var _0x30f6d2=_0x345f65?_0x1b8825['count']:_0x77698b['offset']+_0x77698b['limit'];var _0x5d8d6c;if(_0x30f6d2>=_0x550702){_0x30f6d2=_0x550702;_0x5d8d6c=0xc8;}else{_0x5d8d6c=0xce;}_0x159fa3[_0xbe5f('0x1e')](_0x5d8d6c);return _0x159fa3[_0xbe5f('0x23')](_0xbe5f('0x24'),_0x9b274e+'-'+_0x30f6d2+'/'+_0x550702)[_0xbe5f('0x20')](_0x1b8825);}return null;};}function patchUpdates(_0x2c6c52){return function(_0x436cd2){try{jsonpatch['apply'](_0x436cd2,_0x2c6c52,!![]);}catch(_0x100b62){return BPromise[_0xbe5f('0x25')](_0x100b62);}return _0x436cd2[_0xbe5f('0x26')]();};}function saveUpdates(_0x306974,_0x1bfed4){return function(_0x3dccd1){if(_0x3dccd1){return _0x3dccd1[_0xbe5f('0x27')](_0x306974)['then'](function(_0x21cfdd){return _0x21cfdd;});}return null;};}function removeEntity(_0x1ab547,_0x4832a7){return function(_0x37b5a9){if(_0x37b5a9){return _0x37b5a9[_0xbe5f('0x28')]()[_0xbe5f('0x29')](function(){_0x1ab547[_0xbe5f('0x1e')](0xcc)[_0xbe5f('0x1f')]();});}};}function handleEntityNotFound(_0x30e1d5,_0x2d4e89){return function(_0x5326a5){if(!_0x5326a5){_0x30e1d5['sendStatus'](0x194);}return _0x5326a5;};}function handleError(_0x5e85f7,_0x55e7c5){_0x55e7c5=_0x55e7c5||0x1f4;return function(_0x11946e){logger[_0xbe5f('0x2a')](_0x11946e[_0xbe5f('0x2b')]);if(_0x11946e[_0xbe5f('0x2c')]){delete _0x11946e[_0xbe5f('0x2c')];}_0x5e85f7[_0xbe5f('0x1e')](_0x55e7c5)[_0xbe5f('0x2d')](_0x11946e);};}exports[_0xbe5f('0x2e')]=function(_0x1f3451,_0x52ff44){var _0xfe0ddc={},_0x443bdb={},_0x12cd38={'count':0x0,'rows':[]};var _0x3a4fd1=_[_0xbe5f('0x2f')](db[_0xbe5f('0x30')][_0xbe5f('0x31')],function(_0x366ae1){return{'name':_0x366ae1[_0xbe5f('0x32')],'type':_0x366ae1[_0xbe5f('0x33')][_0xbe5f('0x34')]};});_0x443bdb[_0xbe5f('0x35')]=_[_0xbe5f('0x2f')](_0x3a4fd1,_0xbe5f('0x2c'));_0x443bdb[_0xbe5f('0x36')]=_['keys'](_0x1f3451['query']);_0x443bdb[_0xbe5f('0x37')]=_[_0xbe5f('0x38')](_0x443bdb[_0xbe5f('0x35')],_0x443bdb[_0xbe5f('0x36')]);_0xfe0ddc[_0xbe5f('0x39')]=_[_0xbe5f('0x38')](_0x443bdb[_0xbe5f('0x35')],qs[_0xbe5f('0x3a')](_0x1f3451[_0xbe5f('0x36')][_0xbe5f('0x3a')]));_0xfe0ddc[_0xbe5f('0x39')]=_0xfe0ddc['attributes'][_0xbe5f('0x3b')]?_0xfe0ddc['attributes']:_0x443bdb[_0xbe5f('0x35')];if(!_0x1f3451[_0xbe5f('0x36')][_0xbe5f('0x3c')](_0xbe5f('0x3d'))){_0xfe0ddc[_0xbe5f('0x3e')]=qs[_0xbe5f('0x3e')](_0x1f3451[_0xbe5f('0x36')][_0xbe5f('0x3e')]);_0xfe0ddc[_0xbe5f('0x21')]=qs[_0xbe5f('0x21')](_0x1f3451['query'][_0xbe5f('0x21')]);}_0xfe0ddc[_0xbe5f('0x3f')]=qs[_0xbe5f('0x40')](_0x1f3451[_0xbe5f('0x36')][_0xbe5f('0x40')]);_0xfe0ddc[_0xbe5f('0x41')]=qs['filters'](_[_0xbe5f('0x42')](_0x1f3451[_0xbe5f('0x36')],_0x443bdb['filters']),_0x3a4fd1);if(_0x1f3451[_0xbe5f('0x36')][_0xbe5f('0x43')]){_0xfe0ddc['where']=_['merge'](_0xfe0ddc['where'],{'$or':_[_0xbe5f('0x2f')](_0x3a4fd1,function(_0x9ff166){if(_0x9ff166['type']!=='VIRTUAL'){var _0x5f4760={};_0x5f4760[_0x9ff166[_0xbe5f('0x2c')]]={'$like':'%'+_0x1f3451['query'][_0xbe5f('0x43')]+'%'};return _0x5f4760;}})});}_0xfe0ddc=_['merge']({},_0xfe0ddc,_0x1f3451['options']);var _0x40e9a4={'where':_0xfe0ddc[_0xbe5f('0x41')]};return db[_0xbe5f('0x30')][_0xbe5f('0x44')](_0x40e9a4)['then'](function(_0x552997){_0x12cd38['count']=_0x552997;if(_0x1f3451[_0xbe5f('0x36')][_0xbe5f('0x45')]){_0xfe0ddc[_0xbe5f('0x46')]=[{'all':!![]}];}return db[_0xbe5f('0x30')][_0xbe5f('0x47')](_0xfe0ddc);})['then'](function(_0x54102b){_0x12cd38[_0xbe5f('0x48')]=_0x54102b;return _0x12cd38;})[_0xbe5f('0x29')](respondWithFilteredResult(_0x52ff44,_0xfe0ddc))[_0xbe5f('0x49')](handleError(_0x52ff44,null));};exports[_0xbe5f('0x4a')]=function(_0x2e1959,_0x33c554){var _0x2f665d={'raw':![],'where':{'id':_0x2e1959[_0xbe5f('0x4b')]['id']}},_0x1b5e26={};_0x1b5e26[_0xbe5f('0x35')]=_['keys'](db[_0xbe5f('0x30')][_0xbe5f('0x31')]);_0x1b5e26[_0xbe5f('0x36')]=_[_0xbe5f('0x4c')](_0x2e1959[_0xbe5f('0x36')]);_0x1b5e26[_0xbe5f('0x37')]=_[_0xbe5f('0x38')](_0x1b5e26[_0xbe5f('0x35')],_0x1b5e26['query']);_0x2f665d[_0xbe5f('0x39')]=_['intersection'](_0x1b5e26[_0xbe5f('0x35')],qs[_0xbe5f('0x3a')](_0x2e1959[_0xbe5f('0x36')][_0xbe5f('0x3a')]));_0x2f665d[_0xbe5f('0x39')]=_0x2f665d['attributes'][_0xbe5f('0x3b')]?_0x2f665d[_0xbe5f('0x39')]:_0x1b5e26['model'];if(_0x2e1959[_0xbe5f('0x36')][_0xbe5f('0x45')]){_0x2f665d[_0xbe5f('0x46')]=[{'all':!![]}];}_0x2f665d=_['merge']({},_0x2f665d,_0x2e1959['options']);return db[_0xbe5f('0x30')][_0xbe5f('0x4d')](_0x2f665d)[_0xbe5f('0x29')](handleEntityNotFound(_0x33c554,null))[_0xbe5f('0x29')](respondWithResult(_0x33c554,null))[_0xbe5f('0x49')](handleError(_0x33c554,null));};exports[_0xbe5f('0x4e')]=function(_0x47bae0,_0x53a0ab){return db[_0xbe5f('0x30')][_0xbe5f('0x4e')](_0x47bae0['body'],{})[_0xbe5f('0x29')](respondWithResult(_0x53a0ab,0xc9))[_0xbe5f('0x49')](handleError(_0x53a0ab,null));};exports[_0xbe5f('0x27')]=function(_0x674bdd,_0x56c2e7){if(_0x674bdd[_0xbe5f('0x4f')]['id']){delete _0x674bdd[_0xbe5f('0x4f')]['id'];}return db[_0xbe5f('0x30')][_0xbe5f('0x4d')]({'where':{'id':_0x674bdd[_0xbe5f('0x4b')]['id']}})[_0xbe5f('0x29')](handleEntityNotFound(_0x56c2e7,null))['then'](saveUpdates(_0x674bdd['body'],null))[_0xbe5f('0x29')](respondWithResult(_0x56c2e7,null))[_0xbe5f('0x49')](handleError(_0x56c2e7,null));};exports[_0xbe5f('0x28')]=function(_0x343f5a,_0x2768f8){return db[_0xbe5f('0x30')][_0xbe5f('0x4d')]({'where':{'id':_0x343f5a[_0xbe5f('0x4b')]['id']}})[_0xbe5f('0x29')](handleEntityNotFound(_0x2768f8,null))[_0xbe5f('0x29')](removeEntity(_0x2768f8,null))['catch'](handleError(_0x2768f8,null));};exports[_0xbe5f('0x50')]=function(_0x2fa072,_0xc88e05,_0x1537f0){var _0x1790fb={};var _0xc603a9={};var _0x48dcec;var _0x3aefce;return db[_0xbe5f('0x30')][_0xbe5f('0x51')]({'where':{'id':_0x2fa072[_0xbe5f('0x4b')]['id']}})[_0xbe5f('0x29')](handleEntityNotFound(_0xc88e05,null))[_0xbe5f('0x29')](function(_0x140096){if(_0x140096){_0x48dcec=_0x140096;_0xc603a9[_0xbe5f('0x35')]=_[_0xbe5f('0x4c')](db[_0xbe5f('0x52')][_0xbe5f('0x31')]);_0xc603a9[_0xbe5f('0x36')]=_[_0xbe5f('0x4c')](_0x2fa072[_0xbe5f('0x36')]);_0xc603a9[_0xbe5f('0x37')]=_[_0xbe5f('0x38')](_0xc603a9[_0xbe5f('0x35')],_0xc603a9[_0xbe5f('0x36')]);_0x1790fb[_0xbe5f('0x39')]=_[_0xbe5f('0x38')](_0xc603a9[_0xbe5f('0x35')],qs[_0xbe5f('0x3a')](_0x2fa072['query'][_0xbe5f('0x3a')]));_0x1790fb[_0xbe5f('0x39')]=_0x1790fb[_0xbe5f('0x39')][_0xbe5f('0x3b')]?_0x1790fb['attributes']:_0xc603a9[_0xbe5f('0x35')];_0x1790fb[_0xbe5f('0x3f')]=qs[_0xbe5f('0x40')](_0x2fa072[_0xbe5f('0x36')][_0xbe5f('0x40')]);_0x1790fb[_0xbe5f('0x41')]=qs[_0xbe5f('0x37')](_[_0xbe5f('0x42')](_0x2fa072[_0xbe5f('0x36')],_0xc603a9['filters']));if(_0x2fa072[_0xbe5f('0x36')][_0xbe5f('0x43')]){_0x1790fb[_0xbe5f('0x41')]=_[_0xbe5f('0x53')](_0x1790fb[_0xbe5f('0x41')],{'$or':_[_0xbe5f('0x2f')](_0x1790fb['attributes'],function(_0x339fa6){var _0x2e3b99={};_0x2e3b99[_0x339fa6]={'$like':'%'+_0x2fa072[_0xbe5f('0x36')][_0xbe5f('0x43')]+'%'};return _0x2e3b99;})});}_0x1790fb=_[_0xbe5f('0x53')]({},_0x1790fb,_0x2fa072[_0xbe5f('0x54')]);return _0x48dcec['getConfigurations'](_0x1790fb);}})['then'](function(_0x279129){if(_0x279129){_0x3aefce=_0x279129[_0xbe5f('0x3b')];if(!_0x2fa072['query']['hasOwnProperty']('nolimit')){_0x1790fb['limit']=qs['limit'](_0x2fa072[_0xbe5f('0x36')][_0xbe5f('0x3e')]);_0x1790fb['offset']=qs[_0xbe5f('0x21')](_0x2fa072[_0xbe5f('0x36')][_0xbe5f('0x21')]);}return _0x48dcec[_0xbe5f('0x50')](_0x1790fb);}})[_0xbe5f('0x29')](function(_0x249a9a){if(_0x249a9a){return _0x249a9a?{'count':_0x3aefce,'rows':_0x249a9a}:null;}})[_0xbe5f('0x29')](respondWithResult(_0xc88e05,null))[_0xbe5f('0x49')](handleError(_0xc88e05,null));};exports['addConfiguration']=function(_0xbfd242,_0xe2a752,_0x4594c1){if(_0xbfd242[_0xbe5f('0x4f')]['id']){delete _0xbfd242[_0xbe5f('0x4f')]['id'];}return db[_0xbe5f('0x30')][_0xbe5f('0x51')]({'where':{'id':_0xbfd242['params']['id']}})[_0xbe5f('0x29')](handleEntityNotFound(_0xe2a752,null))[_0xbe5f('0x29')](function(_0x31a237){if(_0x31a237){_0xbfd242[_0xbe5f('0x4f')][_0xbe5f('0x55')]=_0x31a237['id'];_0xbfd242['body'][_0xbe5f('0x56')]=integrations[_0xbe5f('0x57')](_0xbfd242[_0xbe5f('0x4f')][_0xbe5f('0x58')],_0xbfd242[_0xbe5f('0x4f')][_0xbe5f('0x33')]);_0xbfd242['body'][_0xbe5f('0x59')]=integrations[_0xbe5f('0x5a')](_0xbfd242[_0xbe5f('0x4f')][_0xbe5f('0x58')],_0xbfd242[_0xbe5f('0x4f')][_0xbe5f('0x33')]);return db[_0xbe5f('0x52')][_0xbe5f('0x4e')](_0xbfd242[_0xbe5f('0x4f')],{'include':[{'model':db['FreshdeskField'],'as':_0xbe5f('0x56')},{'model':db[_0xbe5f('0x5b')],'as':_0xbe5f('0x59')}]});}return null;})[_0xbe5f('0x29')](respondWithResult(_0xe2a752,null))[_0xbe5f('0x49')](handleError(_0xe2a752,null));};exports[_0xbe5f('0x5c')]=function(_0x54956c,_0x2d184e,_0x3a122a){var _0x586aa8='';return db[_0xbe5f('0x30')][_0xbe5f('0x51')]({'where':{'id':_0x54956c[_0xbe5f('0x4b')]['id']},'attributes':['id',_0xbe5f('0x5d'),_0xbe5f('0x5e')]})[_0xbe5f('0x29')](handleEntityNotFound(_0x2d184e,null))[_0xbe5f('0x29')](function(_0x37bc2e){if(_0x37bc2e){_0x586aa8=_0x37bc2e[_0xbe5f('0x5d')];var _0x3852fe=_0x586aa8[_0xbe5f('0x5f')](-0x1);if(_0x3852fe==='/'){_0x586aa8=_0x586aa8['substring'](0x0,_0x586aa8[_0xbe5f('0x60')](_0x3852fe));}return rp({'method':'GET','uri':util['format'](_0xbe5f('0x61'),_0x586aa8,_0xbe5f('0x62')),'headers':{'Authorization':util[_0xbe5f('0x63')](_0xbe5f('0x64'),new Buffer(util['format']('%s:X',_0x37bc2e[_0xbe5f('0x5e')]))[_0xbe5f('0x65')]('base64'))},'json':!![]});}})['then'](function(_0x21b256){if(_0x21b256){var _0x1a94b1=[_0xbe5f('0x66'),_0xbe5f('0x67'),'agent',_0xbe5f('0x68'),_0xbe5f('0x1e'),_0xbe5f('0x69'),'group','source','ticket_type',_0xbe5f('0x6a'),'company'];_[_0xbe5f('0x6b')](_0x21b256,function(_0xa2816){return _0x1a94b1[_0xbe5f('0x6c')](_0xa2816[_0xbe5f('0x2c')])||!_0xa2816[_0xbe5f('0x6d')]&&_0xa2816['type']!==_0xbe5f('0x6e')&&_0xa2816[_0xbe5f('0x33')]!==_0xbe5f('0x6f');});return{'count':_0x21b256[_0xbe5f('0x3b')],'rows':_[_0xbe5f('0x2f')](_0x21b256,function(_0x21f1d8){return{'id':_0x21f1d8['name'],'name':_0x21f1d8[_0xbe5f('0x70')],'custom':!_0x21f1d8[_0xbe5f('0x6d')],'options':_0x21f1d8[_0xbe5f('0x71')]?_[_0xbe5f('0x2f')](_0x21f1d8[_0xbe5f('0x71')],function(_0x4d294e){return{'name':_['capitalize'](_0x4d294e),'value':_0x4d294e};}):[]};})};}})[_0xbe5f('0x29')](respondWithResult(_0x2d184e,null))[_0xbe5f('0x49')](function(_0x59fd19){var _0x24d21d=_0x54956c[_0xbe5f('0x36')][_0xbe5f('0x72')]?0x1f4:_0x59fd19[_0xbe5f('0x73')]||0x1f4;logger[_0xbe5f('0x2a')](_0xbe5f('0x74'),'getFields',_0x24d21d,JSON[_0xbe5f('0x75')](_0x59fd19));delete _0x59fd19[_0xbe5f('0x2c')];if(_0x24d21d===0x191){_0x24d21d=0x190;}_0x2d184e[_0xbe5f('0x1e')](_0x24d21d)[_0xbe5f('0x2d')](_0x54956c['query']['test']?{'message':_0xbe5f('0x76'),'statusCode':_0x59fd19[_0xbe5f('0x73')]}:_0x59fd19);});};
\ No newline at end of file
+var _0xc99a=['label','choices','capitalize','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','count','set','json','reject','save','update','then','destroy','stack','name','index','rawAttributes','fieldName','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','FreshdeskAccount','includeAll','include','rows','catch','show','params','create','body','find','getConfigurations','findOne','FreshdeskConfiguration','length','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','slice','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','%s:X','toString','base64','requester','agent','priority','group','company','remove','includes','default','custom_dropdown'];(function(_0x29d915,_0x54a040){var _0x160f86=function(_0x237dfa){while(--_0x237dfa){_0x29d915['push'](_0x29d915['shift']());}};_0x160f86(++_0x54a040);}(_0xc99a,0x7c));var _0xac99=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc99a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xac99('0x0'));var rimraf=require(_0xac99('0x1'));var zipdir=require(_0xac99('0x2'));var jsonpatch=require(_0xac99('0x3'));var rp=require(_0xac99('0x4'));var moment=require(_0xac99('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xac99('0x6'));var util=require(_0xac99('0x7'));var path=require(_0xac99('0x8'));var sox=require(_0xac99('0x9'));var csv=require(_0xac99('0xa'));var ejs=require(_0xac99('0xb'));var fs=require('fs');var fs_extra=require(_0xac99('0xc'));var _=require(_0xac99('0xd'));var squel=require(_0xac99('0xe'));var crypto=require(_0xac99('0xf'));var jsforce=require(_0xac99('0x10'));var deskjs=require(_0xac99('0x11'));var toCsv=require('to-csv');var querystring=require(_0xac99('0x12'));var Papa=require(_0xac99('0x13'));var Redis=require('ioredis');var authService=require(_0xac99('0x14'));var qs=require(_0xac99('0x15'));var as=require(_0xac99('0x16'));var hardwareService=require(_0xac99('0x17'));var logger=require('../../config/logger')(_0xac99('0x18'));var utils=require(_0xac99('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xac99('0x1a'));function respondWithStatusCode(_0x4e51f4,_0x1ae389){_0x1ae389=_0x1ae389||0xcc;return function(_0x43b96c){if(_0x43b96c){return _0x4e51f4[_0xac99('0x1b')](_0x1ae389);}return _0x4e51f4[_0xac99('0x1c')](_0x1ae389)[_0xac99('0x1d')]();};}function respondWithResult(_0x454f0a,_0x534eb1){_0x534eb1=_0x534eb1||0xc8;return function(_0x4564e1){if(_0x4564e1){return _0x454f0a['status'](_0x534eb1)['json'](_0x4564e1);}};}function respondWithFilteredResult(_0x1ea483,_0xd327f4){return function(_0x5cd3fd){if(_0x5cd3fd){var _0x3ff09c=typeof _0xd327f4[_0xac99('0x1e')]===_0xac99('0x1f')&&typeof _0xd327f4['limit']==='undefined';var _0x8a45d3=_0x5cd3fd[_0xac99('0x20')];var _0xa52fe2=_0x3ff09c?0x0:_0xd327f4[_0xac99('0x1e')];var _0x400b29=_0x3ff09c?_0x5cd3fd[_0xac99('0x20')]:_0xd327f4[_0xac99('0x1e')]+_0xd327f4['limit'];var _0x48ed38;if(_0x400b29>=_0x8a45d3){_0x400b29=_0x8a45d3;_0x48ed38=0xc8;}else{_0x48ed38=0xce;}_0x1ea483[_0xac99('0x1c')](_0x48ed38);return _0x1ea483[_0xac99('0x21')]('Content-Range',_0xa52fe2+'-'+_0x400b29+'/'+_0x8a45d3)[_0xac99('0x22')](_0x5cd3fd);}return null;};}function patchUpdates(_0x258eb1){return function(_0x4f9889){try{jsonpatch['apply'](_0x4f9889,_0x258eb1,!![]);}catch(_0x42af82){return BPromise[_0xac99('0x23')](_0x42af82);}return _0x4f9889[_0xac99('0x24')]();};}function saveUpdates(_0x154f4b,_0x2b7e52){return function(_0x22f164){if(_0x22f164){return _0x22f164[_0xac99('0x25')](_0x154f4b)[_0xac99('0x26')](function(_0x3330df){return _0x3330df;});}return null;};}function removeEntity(_0x50866e,_0x45c3c6){return function(_0x41f345){if(_0x41f345){return _0x41f345[_0xac99('0x27')]()[_0xac99('0x26')](function(){_0x50866e[_0xac99('0x1c')](0xcc)[_0xac99('0x1d')]();});}};}function handleEntityNotFound(_0x53bcb5,_0xb8e570){return function(_0x4480fb){if(!_0x4480fb){_0x53bcb5[_0xac99('0x1b')](0x194);}return _0x4480fb;};}function handleError(_0x33b0d9,_0x586fd3){_0x586fd3=_0x586fd3||0x1f4;return function(_0x3191ea){logger['error'](_0x3191ea[_0xac99('0x28')]);if(_0x3191ea[_0xac99('0x29')]){delete _0x3191ea[_0xac99('0x29')];}_0x33b0d9['status'](_0x586fd3)['send'](_0x3191ea);};}exports[_0xac99('0x2a')]=function(_0x4f2e8b,_0x519816){var _0xa4b35e={},_0x38ff85={},_0x599f62={'count':0x0,'rows':[]};var _0x5b6f60=_['map'](db['FreshdeskAccount'][_0xac99('0x2b')],function(_0xe42bcf){return{'name':_0xe42bcf[_0xac99('0x2c')],'type':_0xe42bcf['type']['key']};});_0x38ff85[_0xac99('0x2d')]=_[_0xac99('0x2e')](_0x5b6f60,'name');_0x38ff85[_0xac99('0x2f')]=_[_0xac99('0x30')](_0x4f2e8b[_0xac99('0x2f')]);_0x38ff85[_0xac99('0x31')]=_[_0xac99('0x32')](_0x38ff85[_0xac99('0x2d')],_0x38ff85[_0xac99('0x2f')]);_0xa4b35e[_0xac99('0x33')]=_['intersection'](_0x38ff85[_0xac99('0x2d')],qs['fields'](_0x4f2e8b[_0xac99('0x2f')][_0xac99('0x34')]));_0xa4b35e[_0xac99('0x33')]=_0xa4b35e[_0xac99('0x33')]['length']?_0xa4b35e[_0xac99('0x33')]:_0x38ff85['model'];if(!_0x4f2e8b[_0xac99('0x2f')][_0xac99('0x35')](_0xac99('0x36'))){_0xa4b35e['limit']=qs[_0xac99('0x37')](_0x4f2e8b[_0xac99('0x2f')][_0xac99('0x37')]);_0xa4b35e['offset']=qs['offset'](_0x4f2e8b[_0xac99('0x2f')]['offset']);}_0xa4b35e[_0xac99('0x38')]=qs[_0xac99('0x39')](_0x4f2e8b[_0xac99('0x2f')][_0xac99('0x39')]);_0xa4b35e[_0xac99('0x3a')]=qs[_0xac99('0x31')](_[_0xac99('0x3b')](_0x4f2e8b[_0xac99('0x2f')],_0x38ff85['filters']),_0x5b6f60);if(_0x4f2e8b[_0xac99('0x2f')][_0xac99('0x3c')]){_0xa4b35e['where']=_['merge'](_0xa4b35e[_0xac99('0x3a')],{'$or':_[_0xac99('0x2e')](_0x5b6f60,function(_0x22a279){if(_0x22a279[_0xac99('0x3d')]!==_0xac99('0x3e')){var _0x427c60={};_0x427c60[_0x22a279[_0xac99('0x29')]]={'$like':'%'+_0x4f2e8b[_0xac99('0x2f')][_0xac99('0x3c')]+'%'};return _0x427c60;}})});}_0xa4b35e=_[_0xac99('0x3f')]({},_0xa4b35e,_0x4f2e8b[_0xac99('0x40')]);var _0xf85b9b={'where':_0xa4b35e[_0xac99('0x3a')]};return db[_0xac99('0x41')][_0xac99('0x20')](_0xf85b9b)[_0xac99('0x26')](function(_0x36b99a){_0x599f62[_0xac99('0x20')]=_0x36b99a;if(_0x4f2e8b['query'][_0xac99('0x42')]){_0xa4b35e[_0xac99('0x43')]=[{'all':!![]}];}return db['FreshdeskAccount']['findAll'](_0xa4b35e);})['then'](function(_0x5ff0d2){_0x599f62[_0xac99('0x44')]=_0x5ff0d2;return _0x599f62;})[_0xac99('0x26')](respondWithFilteredResult(_0x519816,_0xa4b35e))[_0xac99('0x45')](handleError(_0x519816,null));};exports[_0xac99('0x46')]=function(_0xc0c223,_0x48d5e8){var _0x593a7f={'raw':![],'where':{'id':_0xc0c223[_0xac99('0x47')]['id']}},_0x113d95={};_0x113d95['model']=_[_0xac99('0x30')](db[_0xac99('0x41')][_0xac99('0x2b')]);_0x113d95['query']=_[_0xac99('0x30')](_0xc0c223[_0xac99('0x2f')]);_0x113d95[_0xac99('0x31')]=_[_0xac99('0x32')](_0x113d95[_0xac99('0x2d')],_0x113d95['query']);_0x593a7f[_0xac99('0x33')]=_[_0xac99('0x32')](_0x113d95['model'],qs['fields'](_0xc0c223['query'][_0xac99('0x34')]));_0x593a7f['attributes']=_0x593a7f['attributes']['length']?_0x593a7f[_0xac99('0x33')]:_0x113d95[_0xac99('0x2d')];if(_0xc0c223[_0xac99('0x2f')][_0xac99('0x42')]){_0x593a7f['include']=[{'all':!![]}];}_0x593a7f=_[_0xac99('0x3f')]({},_0x593a7f,_0xc0c223['options']);return db[_0xac99('0x41')]['find'](_0x593a7f)[_0xac99('0x26')](handleEntityNotFound(_0x48d5e8,null))['then'](respondWithResult(_0x48d5e8,null))['catch'](handleError(_0x48d5e8,null));};exports[_0xac99('0x48')]=function(_0x5c6254,_0x551475){return db[_0xac99('0x41')]['create'](_0x5c6254[_0xac99('0x49')],{})[_0xac99('0x26')](respondWithResult(_0x551475,0xc9))[_0xac99('0x45')](handleError(_0x551475,null));};exports[_0xac99('0x25')]=function(_0x5abedd,_0x5189d1){if(_0x5abedd[_0xac99('0x49')]['id']){delete _0x5abedd[_0xac99('0x49')]['id'];}return db[_0xac99('0x41')][_0xac99('0x4a')]({'where':{'id':_0x5abedd[_0xac99('0x47')]['id']}})[_0xac99('0x26')](handleEntityNotFound(_0x5189d1,null))[_0xac99('0x26')](saveUpdates(_0x5abedd[_0xac99('0x49')],null))[_0xac99('0x26')](respondWithResult(_0x5189d1,null))['catch'](handleError(_0x5189d1,null));};exports[_0xac99('0x27')]=function(_0x47dcb1,_0x148ab4){return db[_0xac99('0x41')][_0xac99('0x4a')]({'where':{'id':_0x47dcb1[_0xac99('0x47')]['id']}})[_0xac99('0x26')](handleEntityNotFound(_0x148ab4,null))[_0xac99('0x26')](removeEntity(_0x148ab4,null))[_0xac99('0x45')](handleError(_0x148ab4,null));};exports[_0xac99('0x4b')]=function(_0x7e5cd4,_0x4cd670,_0xcffb9f){var _0x1412f8={};var _0x586f70={};var _0x379118;var _0x4b8d50;return db[_0xac99('0x41')][_0xac99('0x4c')]({'where':{'id':_0x7e5cd4[_0xac99('0x47')]['id']}})['then'](handleEntityNotFound(_0x4cd670,null))[_0xac99('0x26')](function(_0x4b44ac){if(_0x4b44ac){_0x379118=_0x4b44ac;_0x586f70['model']=_[_0xac99('0x30')](db[_0xac99('0x4d')][_0xac99('0x2b')]);_0x586f70[_0xac99('0x2f')]=_[_0xac99('0x30')](_0x7e5cd4[_0xac99('0x2f')]);_0x586f70[_0xac99('0x31')]=_['intersection'](_0x586f70[_0xac99('0x2d')],_0x586f70[_0xac99('0x2f')]);_0x1412f8[_0xac99('0x33')]=_[_0xac99('0x32')](_0x586f70[_0xac99('0x2d')],qs[_0xac99('0x34')](_0x7e5cd4['query'][_0xac99('0x34')]));_0x1412f8['attributes']=_0x1412f8[_0xac99('0x33')]['length']?_0x1412f8[_0xac99('0x33')]:_0x586f70[_0xac99('0x2d')];_0x1412f8[_0xac99('0x38')]=qs[_0xac99('0x39')](_0x7e5cd4[_0xac99('0x2f')][_0xac99('0x39')]);_0x1412f8[_0xac99('0x3a')]=qs[_0xac99('0x31')](_[_0xac99('0x3b')](_0x7e5cd4[_0xac99('0x2f')],_0x586f70[_0xac99('0x31')]));if(_0x7e5cd4['query'][_0xac99('0x3c')]){_0x1412f8[_0xac99('0x3a')]=_['merge'](_0x1412f8[_0xac99('0x3a')],{'$or':_[_0xac99('0x2e')](_0x1412f8['attributes'],function(_0x127912){var _0x37f803={};_0x37f803[_0x127912]={'$like':'%'+_0x7e5cd4[_0xac99('0x2f')][_0xac99('0x3c')]+'%'};return _0x37f803;})});}_0x1412f8=_[_0xac99('0x3f')]({},_0x1412f8,_0x7e5cd4[_0xac99('0x40')]);return _0x379118[_0xac99('0x4b')](_0x1412f8);}})['then'](function(_0x4c6a1f){if(_0x4c6a1f){_0x4b8d50=_0x4c6a1f[_0xac99('0x4e')];if(!_0x7e5cd4[_0xac99('0x2f')][_0xac99('0x35')](_0xac99('0x36'))){_0x1412f8[_0xac99('0x37')]=qs[_0xac99('0x37')](_0x7e5cd4[_0xac99('0x2f')]['limit']);_0x1412f8[_0xac99('0x1e')]=qs[_0xac99('0x1e')](_0x7e5cd4[_0xac99('0x2f')][_0xac99('0x1e')]);}return _0x379118['getConfigurations'](_0x1412f8);}})[_0xac99('0x26')](function(_0x2dc876){if(_0x2dc876){return _0x2dc876?{'count':_0x4b8d50,'rows':_0x2dc876}:null;}})[_0xac99('0x26')](respondWithResult(_0x4cd670,null))[_0xac99('0x45')](handleError(_0x4cd670,null));};exports['addConfiguration']=function(_0x3a973e,_0x5f2c30,_0x1570cf){if(_0x3a973e[_0xac99('0x49')]['id']){delete _0x3a973e[_0xac99('0x49')]['id'];}return db[_0xac99('0x41')][_0xac99('0x4c')]({'where':{'id':_0x3a973e[_0xac99('0x47')]['id']}})[_0xac99('0x26')](handleEntityNotFound(_0x5f2c30,null))[_0xac99('0x26')](function(_0x5c72bb){if(_0x5c72bb){_0x3a973e[_0xac99('0x49')][_0xac99('0x4f')]=_0x5c72bb['id'];_0x3a973e[_0xac99('0x49')][_0xac99('0x50')]=integrations[_0xac99('0x51')](_0x3a973e[_0xac99('0x49')][_0xac99('0x52')],_0x3a973e[_0xac99('0x49')][_0xac99('0x3d')]);_0x3a973e['body'][_0xac99('0x53')]=integrations[_0xac99('0x54')](_0x3a973e['body']['channel'],_0x3a973e['body'][_0xac99('0x3d')]);return db['FreshdeskConfiguration'][_0xac99('0x48')](_0x3a973e[_0xac99('0x49')],{'include':[{'model':db[_0xac99('0x55')],'as':'Subjects'},{'model':db[_0xac99('0x55')],'as':_0xac99('0x53')}]});}return null;})[_0xac99('0x26')](respondWithResult(_0x5f2c30,null))[_0xac99('0x45')](handleError(_0x5f2c30,null));};exports[_0xac99('0x56')]=function(_0x5d4869,_0x328985,_0x2f79c3){var _0xf91ffe='';return db['FreshdeskAccount'][_0xac99('0x4c')]({'where':{'id':_0x5d4869['params']['id']},'attributes':['id',_0xac99('0x57'),'apiKey']})[_0xac99('0x26')](handleEntityNotFound(_0x328985,null))[_0xac99('0x26')](function(_0x542548){if(_0x542548){_0xf91ffe=_0x542548[_0xac99('0x57')];var _0x468834=_0xf91ffe[_0xac99('0x58')](-0x1);if(_0x468834==='/'){_0xf91ffe=_0xf91ffe['substring'](0x0,_0xf91ffe[_0xac99('0x59')](_0x468834));}return rp({'method':_0xac99('0x5a'),'uri':util[_0xac99('0x5b')](_0xac99('0x5c'),_0xf91ffe,_0xac99('0x5d')),'headers':{'Authorization':util[_0xac99('0x5b')]('Basic\x20%s',new Buffer(util[_0xac99('0x5b')](_0xac99('0x5e'),_0x542548['apiKey']))[_0xac99('0x5f')](_0xac99('0x60')))},'json':!![]});}})['then'](function(_0x96ef3b){if(_0x96ef3b){var _0xc0e329=[_0xac99('0x61'),'subject',_0xac99('0x62'),'description','status',_0xac99('0x63'),'group','source','ticket_type',_0xac99('0x64'),_0xac99('0x65')];_[_0xac99('0x66')](_0x96ef3b,function(_0xd5f4e5){return _0xc0e329[_0xac99('0x67')](_0xd5f4e5[_0xac99('0x29')])||!_0xd5f4e5[_0xac99('0x68')]&&_0xd5f4e5[_0xac99('0x3d')]!=='custom_text'&&_0xd5f4e5['type']!==_0xac99('0x69');});return{'count':_0x96ef3b[_0xac99('0x4e')],'rows':_[_0xac99('0x2e')](_0x96ef3b,function(_0x4e1e7e){return{'id':_0x4e1e7e['name'],'name':_0x4e1e7e[_0xac99('0x6a')],'custom':!_0x4e1e7e[_0xac99('0x68')],'options':_0x4e1e7e[_0xac99('0x6b')]?_[_0xac99('0x2e')](_0x4e1e7e['choices'],function(_0x5ccf40){return{'name':_[_0xac99('0x6c')](_0x5ccf40),'value':_0x5ccf40};}):[]};})};}})['then'](respondWithResult(_0x328985,null))[_0xac99('0x45')](function(_0x32bea5){var _0x5b40c2=_0x5d4869[_0xac99('0x2f')][_0xac99('0x6d')]?0x1f4:_0x32bea5[_0xac99('0x6e')]||0x1f4;logger[_0xac99('0x6f')](_0xac99('0x70'),_0xac99('0x56'),_0x5b40c2,JSON['stringify'](_0x32bea5));delete _0x32bea5[_0xac99('0x29')];if(_0x5b40c2===0x191){_0x5b40c2=0x190;}_0x328985[_0xac99('0x1c')](_0x5b40c2)[_0xac99('0x71')](_0x5d4869[_0xac99('0x2f')][_0xac99('0x6d')]?{'message':_0xac99('0x72'),'statusCode':_0x32bea5['statusCode']}:_0x32bea5);});};
\ No newline at end of file
index 25cecd9..e516e7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8855=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util'];(function(_0x406115,_0x19f7a1){var _0xbbabdb=function(_0x28554d){while(--_0x28554d){_0x406115['push'](_0x406115['shift']());}};_0xbbabdb(++_0x19f7a1);}(_0x8855,0x1de));var _0x5885=function(_0x40b10d,_0x269d7a){_0x40b10d=_0x40b10d-0x0;var _0x2fe5ad=_0x8855[_0x40b10d];return _0x2fe5ad;};'use strict';var _=require(_0x5885('0x0'));var util=require(_0x5885('0x1'));var logger=require('../../config/logger')(_0x5885('0x2'));var moment=require(_0x5885('0x3'));var BPromise=require(_0x5885('0x4'));var rp=require(_0x5885('0x5'));var fs=require('fs');var path=require(_0x5885('0x6'));var rimraf=require(_0x5885('0x7'));var config=require(_0x5885('0x8'));var attributes=require(_0x5885('0x9'));var integrations=require(_0x5885('0xa'));module[_0x5885('0xb')]=function(_0x562118,_0x3a07d8){return _0x562118[_0x5885('0xc')](_0x5885('0xd'),attributes,{'tableName':_0x5885('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc3a8=['../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x1160b3,_0x2db990){var _0x289735=function(_0x35c114){while(--_0x35c114){_0x1160b3['push'](_0x1160b3['shift']());}};_0x289735(++_0x2db990);}(_0xc3a8,0x171));var _0x8c3a=function(_0x563e99,_0x181622){_0x563e99=_0x563e99-0x0;var _0x196311=_0xc3a8[_0x563e99];return _0x196311;};'use strict';var _=require(_0x8c3a('0x0'));var util=require(_0x8c3a('0x1'));var logger=require(_0x8c3a('0x2'))(_0x8c3a('0x3'));var moment=require('moment');var BPromise=require(_0x8c3a('0x4'));var rp=require(_0x8c3a('0x5'));var fs=require('fs');var path=require(_0x8c3a('0x6'));var rimraf=require(_0x8c3a('0x7'));var config=require(_0x8c3a('0x8'));var attributes=require(_0x8c3a('0x9'));var integrations=require(_0x8c3a('0xa'));module['exports']=function(_0x484ac9,_0x4c0c43){return _0x484ac9['define'](_0x8c3a('0xb'),attributes,{'tableName':_0x8c3a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6f8a44b..5382e2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f96=['catch','ShowFreshdeskAccount','find','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetFreshdeskAccount','FreshdeskAccount','options','raw','where','attributes','limit','map','include','model'];(function(_0x4bcfa6,_0x1c7e43){var _0x1c0165=function(_0x30c963){while(--_0x30c963){_0x4bcfa6['push'](_0x4bcfa6['shift']());}};_0x1c0165(++_0x1c7e43);}(_0x2f96,0x1b3));var _0x62f9=function(_0x40a01b,_0x3c12a5){_0x40a01b=_0x40a01b-0x0;var _0x225a2c=_0x2f96[_0x40a01b];return _0x225a2c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x62f9('0x0'));var BPromise=require(_0x62f9('0x1'));var rs=require(_0x62f9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x62f9('0x3'))['db'];var utils=require(_0x62f9('0x4'));var logger=require(_0x62f9('0x5'))(_0x62f9('0x6'));var config=require(_0x62f9('0x7'));var jayson=require(_0x62f9('0x8'));var client=jayson[_0x62f9('0x9')][_0x62f9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1168a4,_0x5a7975,_0x11101d){return new BPromise(function(_0x22afae,_0x348a14){return client[_0x62f9('0xb')](_0x1168a4,_0x11101d)[_0x62f9('0xc')](function(_0x419aa5){logger[_0x62f9('0xd')](_0x62f9('0xe'),_0x5a7975,_0x62f9('0xf'));logger[_0x62f9('0x10')](_0x62f9('0x11'),_0x5a7975,_0x62f9('0xf'),JSON[_0x62f9('0x12')](_0x419aa5));if(_0x419aa5['error']){if(_0x419aa5[_0x62f9('0x13')][_0x62f9('0x14')]===0x1f4){logger[_0x62f9('0x13')](_0x62f9('0xe'),_0x5a7975,_0x419aa5[_0x62f9('0x13')][_0x62f9('0x15')]);return _0x348a14(_0x419aa5['error'][_0x62f9('0x15')]);}logger[_0x62f9('0x13')](_0x62f9('0xe'),_0x5a7975,_0x419aa5['error'][_0x62f9('0x15')]);return _0x22afae(_0x419aa5[_0x62f9('0x13')][_0x62f9('0x15')]);}else{logger[_0x62f9('0xd')]('FreshdeskAccount,\x20%s,\x20%s',_0x5a7975,_0x62f9('0xf'));_0x22afae(_0x419aa5[_0x62f9('0x16')][_0x62f9('0x15')]);}})['catch'](function(_0x166ee6){logger[_0x62f9('0x13')](_0x62f9('0xe'),_0x5a7975,_0x166ee6);_0x348a14(_0x166ee6);});});}exports[_0x62f9('0x17')]=function(_0x47e9f7){var _0x119755=this;return new Promise(function(_0x561ea7,_0x509606){return db[_0x62f9('0x18')]['findAll']({'raw':_0x47e9f7['options']?_0x47e9f7[_0x62f9('0x19')][_0x62f9('0x1a')]===undefined?!![]:![]:!![],'where':_0x47e9f7[_0x62f9('0x19')]?_0x47e9f7[_0x62f9('0x19')][_0x62f9('0x1b')]||null:null,'attributes':_0x47e9f7['options']?_0x47e9f7[_0x62f9('0x19')][_0x62f9('0x1c')]||null:null,'limit':_0x47e9f7[_0x62f9('0x19')]?_0x47e9f7['options'][_0x62f9('0x1d')]||null:null,'include':_0x47e9f7[_0x62f9('0x19')]?_0x47e9f7[_0x62f9('0x19')]['include']?_[_0x62f9('0x1e')](_0x47e9f7[_0x62f9('0x19')][_0x62f9('0x1f')],function(_0xb8539e){return{'model':db[_0xb8539e[_0x62f9('0x20')]],'as':_0xb8539e['as'],'attributes':_0xb8539e[_0x62f9('0x1c')],'include':_0xb8539e['include']?_[_0x62f9('0x1e')](_0xb8539e['include'],function(_0x6eb3e6){return{'model':db[_0x6eb3e6[_0x62f9('0x20')]],'as':_0x6eb3e6['as'],'attributes':_0x6eb3e6[_0x62f9('0x1c')],'include':_0x6eb3e6[_0x62f9('0x1f')]?_[_0x62f9('0x1e')](_0x6eb3e6['include'],function(_0x4aed81){return{'model':db[_0x4aed81[_0x62f9('0x20')]],'as':_0x4aed81['as'],'attributes':_0x4aed81[_0x62f9('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x62f9('0xc')](function(_0x11015b){logger['info'](_0x62f9('0x17'),_0x47e9f7);logger[_0x62f9('0x10')]('GetFreshdeskAccount',_0x47e9f7,JSON['stringify'](_0x11015b));_0x561ea7(_0x11015b);})[_0x62f9('0x21')](function(_0x2c666e){logger[_0x62f9('0x13')](_0x62f9('0x17'),_0x2c666e['message'],_0x47e9f7);_0x509606(_0x119755[_0x62f9('0x13')](0x1f4,_0x2c666e[_0x62f9('0x15')]));});});};exports[_0x62f9('0x22')]=function(_0x5dc842){var _0x5e1516=this;return new Promise(function(_0x8ad3a1,_0x3e7239){return db[_0x62f9('0x18')][_0x62f9('0x23')]({'raw':_0x5dc842[_0x62f9('0x19')]?_0x5dc842[_0x62f9('0x19')][_0x62f9('0x1a')]===undefined?!![]:![]:!![],'where':_0x5dc842[_0x62f9('0x19')]?_0x5dc842[_0x62f9('0x19')]['where']||null:null,'attributes':_0x5dc842[_0x62f9('0x19')]?_0x5dc842[_0x62f9('0x19')][_0x62f9('0x1c')]||null:null,'include':_0x5dc842[_0x62f9('0x19')]?_0x5dc842[_0x62f9('0x19')][_0x62f9('0x1f')]?_[_0x62f9('0x1e')](_0x5dc842['options'][_0x62f9('0x1f')],function(_0x52fe42){return{'model':db[_0x52fe42[_0x62f9('0x20')]],'as':_0x52fe42['as'],'attributes':_0x52fe42[_0x62f9('0x1c')],'include':_0x52fe42[_0x62f9('0x1f')]?_['map'](_0x52fe42['include'],function(_0x35ed68){return{'model':db[_0x35ed68['model']],'as':_0x35ed68['as'],'attributes':_0x35ed68[_0x62f9('0x1c')],'include':_0x35ed68[_0x62f9('0x1f')]?_['map'](_0x35ed68[_0x62f9('0x1f')],function(_0x4b69ea){return{'model':db[_0x4b69ea[_0x62f9('0x20')]],'as':_0x4b69ea['as'],'attributes':_0x4b69ea[_0x62f9('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x62f9('0xc')](function(_0x35cc87){logger[_0x62f9('0xd')](_0x62f9('0x22'),_0x5dc842);logger[_0x62f9('0x10')](_0x62f9('0x22'),_0x5dc842,JSON[_0x62f9('0x12')](_0x35cc87));_0x8ad3a1(_0x35cc87);})['catch'](function(_0x373c2c){logger[_0x62f9('0x13')](_0x62f9('0x22'),_0x373c2c[_0x62f9('0x15')],_0x5dc842);_0x3e7239(_0x5e1516['error'](0x1f4,_0x373c2c[_0x62f9('0x15')]));});});};
\ No newline at end of file
+var _0xc459=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetFreshdeskAccount','findAll','options','where','attributes','limit','include','map','model','then','catch','ShowFreshdeskAccount','FreshdeskAccount','find','raw','util','bluebird','ioredis'];(function(_0x4e397f,_0x3aadd6){var _0x1a8b5d=function(_0x19701d){while(--_0x19701d){_0x4e397f['push'](_0x4e397f['shift']());}};_0x1a8b5d(++_0x3aadd6);}(_0xc459,0x1d9));var _0x9c45=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc459[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x9c45('0x0'));var moment=require('moment');var BPromise=require(_0x9c45('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9c45('0x2'));var db=require(_0x9c45('0x3'))['db'];var utils=require(_0x9c45('0x4'));var logger=require(_0x9c45('0x5'))(_0x9c45('0x6'));var config=require('../../config/environment');var jayson=require(_0x9c45('0x7'));var client=jayson[_0x9c45('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x7189fc,_0x2d52c4,_0x587b23){return new BPromise(function(_0x2dd755,_0x4ab58f){return client[_0x9c45('0x9')](_0x7189fc,_0x587b23)['then'](function(_0x253be8){logger[_0x9c45('0xa')](_0x9c45('0xb'),_0x2d52c4,_0x9c45('0xc'));logger[_0x9c45('0xd')](_0x9c45('0xe'),_0x2d52c4,_0x9c45('0xc'),JSON[_0x9c45('0xf')](_0x253be8));if(_0x253be8[_0x9c45('0x10')]){if(_0x253be8[_0x9c45('0x10')][_0x9c45('0x11')]===0x1f4){logger[_0x9c45('0x10')]('FreshdeskAccount,\x20%s,\x20%s',_0x2d52c4,_0x253be8[_0x9c45('0x10')][_0x9c45('0x12')]);return _0x4ab58f(_0x253be8[_0x9c45('0x10')][_0x9c45('0x12')]);}logger[_0x9c45('0x10')](_0x9c45('0xb'),_0x2d52c4,_0x253be8[_0x9c45('0x10')][_0x9c45('0x12')]);return _0x2dd755(_0x253be8[_0x9c45('0x10')][_0x9c45('0x12')]);}else{logger[_0x9c45('0xa')](_0x9c45('0xb'),_0x2d52c4,_0x9c45('0xc'));_0x2dd755(_0x253be8['result'][_0x9c45('0x12')]);}})['catch'](function(_0x22a821){logger[_0x9c45('0x10')]('FreshdeskAccount,\x20%s,\x20%s',_0x2d52c4,_0x22a821);_0x4ab58f(_0x22a821);});});}exports[_0x9c45('0x13')]=function(_0xa2a45c){var _0x569fed=this;return new Promise(function(_0x5d5589,_0x1a343d){return db['FreshdeskAccount'][_0x9c45('0x14')]({'raw':_0xa2a45c[_0x9c45('0x15')]?_0xa2a45c[_0x9c45('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0xa2a45c[_0x9c45('0x15')]?_0xa2a45c['options'][_0x9c45('0x16')]||null:null,'attributes':_0xa2a45c[_0x9c45('0x15')]?_0xa2a45c[_0x9c45('0x15')][_0x9c45('0x17')]||null:null,'limit':_0xa2a45c[_0x9c45('0x15')]?_0xa2a45c[_0x9c45('0x15')][_0x9c45('0x18')]||null:null,'include':_0xa2a45c[_0x9c45('0x15')]?_0xa2a45c[_0x9c45('0x15')][_0x9c45('0x19')]?_[_0x9c45('0x1a')](_0xa2a45c[_0x9c45('0x15')][_0x9c45('0x19')],function(_0x4971e9){return{'model':db[_0x4971e9[_0x9c45('0x1b')]],'as':_0x4971e9['as'],'attributes':_0x4971e9[_0x9c45('0x17')],'include':_0x4971e9[_0x9c45('0x19')]?_['map'](_0x4971e9[_0x9c45('0x19')],function(_0x388943){return{'model':db[_0x388943[_0x9c45('0x1b')]],'as':_0x388943['as'],'attributes':_0x388943['attributes'],'include':_0x388943[_0x9c45('0x19')]?_[_0x9c45('0x1a')](_0x388943[_0x9c45('0x19')],function(_0x26ba1c){return{'model':db[_0x26ba1c[_0x9c45('0x1b')]],'as':_0x26ba1c['as'],'attributes':_0x26ba1c[_0x9c45('0x17')]};}):[]};}):[]};}):[]:[]})[_0x9c45('0x1c')](function(_0x5205c2){logger[_0x9c45('0xa')](_0x9c45('0x13'),_0xa2a45c);logger['debug'](_0x9c45('0x13'),_0xa2a45c,JSON[_0x9c45('0xf')](_0x5205c2));_0x5d5589(_0x5205c2);})[_0x9c45('0x1d')](function(_0x1d1ad1){logger[_0x9c45('0x10')](_0x9c45('0x13'),_0x1d1ad1[_0x9c45('0x12')],_0xa2a45c);_0x1a343d(_0x569fed[_0x9c45('0x10')](0x1f4,_0x1d1ad1[_0x9c45('0x12')]));});});};exports[_0x9c45('0x1e')]=function(_0x48b03b){var _0x19d25c=this;return new Promise(function(_0x3d875c,_0x35da53){return db[_0x9c45('0x1f')][_0x9c45('0x20')]({'raw':_0x48b03b[_0x9c45('0x15')]?_0x48b03b[_0x9c45('0x15')][_0x9c45('0x21')]===undefined?!![]:![]:!![],'where':_0x48b03b[_0x9c45('0x15')]?_0x48b03b[_0x9c45('0x15')][_0x9c45('0x16')]||null:null,'attributes':_0x48b03b['options']?_0x48b03b[_0x9c45('0x15')][_0x9c45('0x17')]||null:null,'include':_0x48b03b['options']?_0x48b03b[_0x9c45('0x15')][_0x9c45('0x19')]?_['map'](_0x48b03b[_0x9c45('0x15')][_0x9c45('0x19')],function(_0xc68a63){return{'model':db[_0xc68a63[_0x9c45('0x1b')]],'as':_0xc68a63['as'],'attributes':_0xc68a63[_0x9c45('0x17')],'include':_0xc68a63[_0x9c45('0x19')]?_[_0x9c45('0x1a')](_0xc68a63[_0x9c45('0x19')],function(_0x18ba31){return{'model':db[_0x18ba31[_0x9c45('0x1b')]],'as':_0x18ba31['as'],'attributes':_0x18ba31[_0x9c45('0x17')],'include':_0x18ba31[_0x9c45('0x19')]?_[_0x9c45('0x1a')](_0x18ba31[_0x9c45('0x19')],function(_0x533260){return{'model':db[_0x533260['model']],'as':_0x533260['as'],'attributes':_0x533260[_0x9c45('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3600bc){logger[_0x9c45('0xa')](_0x9c45('0x1e'),_0x48b03b);logger[_0x9c45('0xd')](_0x9c45('0x1e'),_0x48b03b,JSON[_0x9c45('0xf')](_0x3600bc));_0x3d875c(_0x3600bc);})[_0x9c45('0x1d')](function(_0x4e54c7){logger[_0x9c45('0x10')](_0x9c45('0x1e'),_0x4e54c7[_0x9c45('0x12')],_0x48b03b);_0x35da53(_0x19d25c[_0x9c45('0x10')](0x1f4,_0x4e54c7[_0x9c45('0x12')]));});});};
\ No newline at end of file
index d9aa1f4..8dd5534 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc085=['/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','setTags','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated','index'];(function(_0x1a9a72,_0x3724d3){var _0x384c5b=function(_0x2d5b38){while(--_0x2d5b38){_0x1a9a72['push'](_0x1a9a72['shift']());}};_0x384c5b(++_0x3724d3);}(_0xc085,0xfa));var _0x5c08=function(_0x488605,_0x233d2f){_0x488605=_0x488605-0x0;var _0xca44b9=_0xc085[_0x488605];return _0xca44b9;};'use strict';var multer=require('multer');var util=require(_0x5c08('0x0'));var path=require('path');var timeout=require(_0x5c08('0x1'));var express=require(_0x5c08('0x2'));var router=express[_0x5c08('0x3')]();var fs_extra=require(_0x5c08('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5c08('0x5'));var controller=require(_0x5c08('0x6'));router[_0x5c08('0x7')]('/',auth[_0x5c08('0x8')](),controller[_0x5c08('0x9')]);router[_0x5c08('0x7')](_0x5c08('0xa'),auth[_0x5c08('0x8')](),controller[_0x5c08('0xb')]);router['get'](_0x5c08('0xc'),auth['isAuthenticated'](),controller[_0x5c08('0xd')]);router[_0x5c08('0x7')]('/:id/subjects',auth[_0x5c08('0x8')](),controller[_0x5c08('0xe')]);router[_0x5c08('0x7')](_0x5c08('0xf'),auth[_0x5c08('0x8')](),controller[_0x5c08('0x10')]);router['get']('/:id/tags',auth[_0x5c08('0x8')](),controller[_0x5c08('0x11')]);router[_0x5c08('0x12')]('/',auth[_0x5c08('0x8')](),controller[_0x5c08('0x13')]);router[_0x5c08('0x12')](_0x5c08('0x14'),auth[_0x5c08('0x8')](),controller[_0x5c08('0x15')]);router['put'](_0x5c08('0xa'),auth[_0x5c08('0x8')](),controller[_0x5c08('0x16')]);router[_0x5c08('0x17')](_0x5c08('0xa'),auth[_0x5c08('0x8')](),controller[_0x5c08('0x18')]);module[_0x5c08('0x19')]=router;
\ No newline at end of file
+var _0x6ec0=['./intFreshdeskConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x4d05a0,_0x53aa7e){var _0x4c999c=function(_0x358867){while(--_0x358867){_0x4d05a0['push'](_0x4d05a0['shift']());}};_0x4c999c(++_0x53aa7e);}(_0x6ec0,0x1d3));var _0x06ec=function(_0x1e0d29,_0x1f5fab){_0x1e0d29=_0x1e0d29-0x0;var _0x4d395c=_0x6ec0[_0x1e0d29];return _0x4d395c;};'use strict';var multer=require(_0x06ec('0x0'));var util=require(_0x06ec('0x1'));var path=require(_0x06ec('0x2'));var timeout=require(_0x06ec('0x3'));var express=require(_0x06ec('0x4'));var router=express[_0x06ec('0x5')]();var fs_extra=require(_0x06ec('0x6'));var auth=require(_0x06ec('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x06ec('0x8'));var controller=require(_0x06ec('0x9'));router[_0x06ec('0xa')]('/',auth['isAuthenticated'](),controller[_0x06ec('0xb')]);router[_0x06ec('0xa')](_0x06ec('0xc'),auth[_0x06ec('0xd')](),controller[_0x06ec('0xe')]);router['get'](_0x06ec('0xf'),auth['isAuthenticated'](),controller['getFields']);router['get']('/:id/subjects',auth[_0x06ec('0xd')](),controller[_0x06ec('0x10')]);router[_0x06ec('0xa')](_0x06ec('0x11'),auth[_0x06ec('0xd')](),controller[_0x06ec('0x12')]);router[_0x06ec('0xa')](_0x06ec('0x13'),auth['isAuthenticated'](),controller[_0x06ec('0x14')]);router[_0x06ec('0x15')]('/',auth[_0x06ec('0xd')](),controller[_0x06ec('0x16')]);router['post']('/:id/tags',auth[_0x06ec('0xd')](),controller[_0x06ec('0x17')]);router[_0x06ec('0x18')](_0x06ec('0xc'),auth[_0x06ec('0xd')](),controller[_0x06ec('0x19')]);router[_0x06ec('0x1a')]('/:id',auth['isAuthenticated'](),controller[_0x06ec('0x1b')]);module['exports']=router;
\ No newline at end of file
index ad657b4..ded2939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x934c=['STRING','sequelize','exports'];(function(_0x41a7e8,_0x105e86){var _0x270068=function(_0x804e76){while(--_0x804e76){_0x41a7e8['push'](_0x41a7e8['shift']());}};_0x270068(++_0x105e86);}(_0x934c,0xdf));var _0xc934=function(_0x6e308e,_0x35c60e){_0x6e308e=_0x6e308e-0x0;var _0x45e0e3=_0x934c[_0x6e308e];return _0x45e0e3;};'use strict';var Sequelize=require(_0xc934('0x0'));module[_0xc934('0x1')]={'name':{'type':Sequelize[_0xc934('0x2')]},'description':{'type':Sequelize[_0xc934('0x2')]}};
\ No newline at end of file
+var _0xf25b=['sequelize','exports','STRING'];(function(_0x27201f,_0x444196){var _0x2a7813=function(_0x5a698a){while(--_0x5a698a){_0x27201f['push'](_0x27201f['shift']());}};_0x2a7813(++_0x444196);}(_0xf25b,0x165));var _0xbf25=function(_0x3d7e21,_0x290e15){_0x3d7e21=_0x3d7e21-0x0;var _0x4166c5=_0xf25b[_0x3d7e21];return _0x4166c5;};'use strict';var Sequelize=require(_0xbf25('0x0'));module[_0xbf25('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xbf25('0x2')]}};
\ No newline at end of file
index 4a53bc9..dde4e9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a77=['body','find','getFields','findOne','FreshdeskField','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','end','name','send','map','FreshdeskConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','create'];(function(_0x5a4634,_0x3b99f1){var _0x2410f8=function(_0x3546e5){while(--_0x3546e5){_0x5a4634['push'](_0x5a4634['shift']());}};_0x2410f8(++_0x3b99f1);}(_0x3a77,0x152));var _0x73a7=function(_0x54a687,_0x4ce189){_0x54a687=_0x54a687-0x0;var _0x4b5083=_0x3a77[_0x54a687];return _0x4b5083;};'use strict';var emlformat=require(_0x73a7('0x0'));var rimraf=require(_0x73a7('0x1'));var zipdir=require(_0x73a7('0x2'));var jsonpatch=require(_0x73a7('0x3'));var rp=require(_0x73a7('0x4'));var moment=require(_0x73a7('0x5'));var BPromise=require(_0x73a7('0x6'));var Mustache=require('mustache');var util=require(_0x73a7('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x73a7('0x8'));var ejs=require(_0x73a7('0x9'));var fs=require('fs');var fs_extra=require(_0x73a7('0xa'));var _=require('lodash');var squel=require(_0x73a7('0xb'));var crypto=require('crypto');var jsforce=require(_0x73a7('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x73a7('0x8'));var querystring=require('querystring');var Papa=require(_0x73a7('0xd'));var Redis=require(_0x73a7('0xe'));var authService=require(_0x73a7('0xf'));var qs=require(_0x73a7('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x73a7('0x11'))(_0x73a7('0x12'));var utils=require(_0x73a7('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x73a7('0x14'));var db=require(_0x73a7('0x15'))['db'];function respondWithStatusCode(_0x4ffb03,_0x32f112){_0x32f112=_0x32f112||0xcc;return function(_0x207e36){if(_0x207e36){return _0x4ffb03[_0x73a7('0x16')](_0x32f112);}return _0x4ffb03[_0x73a7('0x17')](_0x32f112)['end']();};}function respondWithResult(_0x4357a0,_0x22c090){_0x22c090=_0x22c090||0xc8;return function(_0x367517){if(_0x367517){return _0x4357a0[_0x73a7('0x17')](_0x22c090)['json'](_0x367517);}};}function respondWithFilteredResult(_0xe7abce,_0x6a2e13){return function(_0x4faa43){if(_0x4faa43){var _0x154642=typeof _0x6a2e13['offset']===_0x73a7('0x18')&&typeof _0x6a2e13[_0x73a7('0x19')]==='undefined';var _0x568053=_0x4faa43[_0x73a7('0x1a')];var _0x3e55d7=_0x154642?0x0:_0x6a2e13[_0x73a7('0x1b')];var _0x5e1e38=_0x154642?_0x4faa43[_0x73a7('0x1a')]:_0x6a2e13[_0x73a7('0x1b')]+_0x6a2e13[_0x73a7('0x19')];var _0x5182b6;if(_0x5e1e38>=_0x568053){_0x5e1e38=_0x568053;_0x5182b6=0xc8;}else{_0x5182b6=0xce;}_0xe7abce[_0x73a7('0x17')](_0x5182b6);return _0xe7abce[_0x73a7('0x1c')](_0x73a7('0x1d'),_0x3e55d7+'-'+_0x5e1e38+'/'+_0x568053)[_0x73a7('0x1e')](_0x4faa43);}return null;};}function patchUpdates(_0x1c3393){return function(_0x111b8f){try{jsonpatch[_0x73a7('0x1f')](_0x111b8f,_0x1c3393,!![]);}catch(_0x5eb47c){return BPromise[_0x73a7('0x20')](_0x5eb47c);}return _0x111b8f[_0x73a7('0x21')]();};}function saveUpdates(_0x5eebcd,_0x31249e){return function(_0x456f81){if(_0x456f81){return _0x456f81[_0x73a7('0x22')](_0x5eebcd)[_0x73a7('0x23')](function(_0x55bb9b){return _0x55bb9b;});}return null;};}function removeEntity(_0x4df2d2,_0x13611d){return function(_0xb1b404){if(_0xb1b404){return _0xb1b404[_0x73a7('0x24')]()['then'](function(){_0x4df2d2['status'](0xcc)[_0x73a7('0x25')]();});}};}function handleEntityNotFound(_0x1014ce,_0x2c502c){return function(_0x26a695){if(!_0x26a695){_0x1014ce['sendStatus'](0x194);}return _0x26a695;};}function handleError(_0x483c85,_0x4df08c){_0x4df08c=_0x4df08c||0x1f4;return function(_0x16d5ba){logger['error'](_0x16d5ba['stack']);if(_0x16d5ba['name']){delete _0x16d5ba[_0x73a7('0x26')];}_0x483c85[_0x73a7('0x17')](_0x4df08c)[_0x73a7('0x27')](_0x16d5ba);};}exports['index']=function(_0x2ffb32,_0x332284){var _0x49388b={},_0x12955a={},_0x6c01ac={'count':0x0,'rows':[]};var _0x584935=_[_0x73a7('0x28')](db[_0x73a7('0x29')][_0x73a7('0x2a')],function(_0x4ef06c){return{'name':_0x4ef06c[_0x73a7('0x2b')],'type':_0x4ef06c[_0x73a7('0x2c')][_0x73a7('0x2d')]};});_0x12955a['model']=_[_0x73a7('0x28')](_0x584935,'name');_0x12955a[_0x73a7('0x2e')]=_[_0x73a7('0x2f')](_0x2ffb32[_0x73a7('0x2e')]);_0x12955a[_0x73a7('0x30')]=_[_0x73a7('0x31')](_0x12955a[_0x73a7('0x32')],_0x12955a[_0x73a7('0x2e')]);_0x49388b[_0x73a7('0x33')]=_[_0x73a7('0x31')](_0x12955a[_0x73a7('0x32')],qs['fields'](_0x2ffb32[_0x73a7('0x2e')][_0x73a7('0x34')]));_0x49388b[_0x73a7('0x33')]=_0x49388b['attributes'][_0x73a7('0x35')]?_0x49388b[_0x73a7('0x33')]:_0x12955a[_0x73a7('0x32')];if(!_0x2ffb32[_0x73a7('0x2e')][_0x73a7('0x36')](_0x73a7('0x37'))){_0x49388b['limit']=qs[_0x73a7('0x19')](_0x2ffb32['query']['limit']);_0x49388b[_0x73a7('0x1b')]=qs[_0x73a7('0x1b')](_0x2ffb32[_0x73a7('0x2e')][_0x73a7('0x1b')]);}_0x49388b[_0x73a7('0x38')]=qs[_0x73a7('0x39')](_0x2ffb32[_0x73a7('0x2e')][_0x73a7('0x39')]);_0x49388b[_0x73a7('0x3a')]=qs[_0x73a7('0x30')](_[_0x73a7('0x3b')](_0x2ffb32['query'],_0x12955a['filters']),_0x584935);if(_0x2ffb32[_0x73a7('0x2e')][_0x73a7('0x3c')]){_0x49388b['where']=_['merge'](_0x49388b[_0x73a7('0x3a')],{'$or':_[_0x73a7('0x28')](_0x584935,function(_0x17903f){if(_0x17903f[_0x73a7('0x2c')]!==_0x73a7('0x3d')){var _0x455dae={};_0x455dae[_0x17903f['name']]={'$like':'%'+_0x2ffb32[_0x73a7('0x2e')]['filter']+'%'};return _0x455dae;}})});}_0x49388b=_[_0x73a7('0x3e')]({},_0x49388b,_0x2ffb32[_0x73a7('0x3f')]);var _0x2e02cf={'where':_0x49388b[_0x73a7('0x3a')]};return db['FreshdeskConfiguration'][_0x73a7('0x1a')](_0x2e02cf)[_0x73a7('0x23')](function(_0x327be2){_0x6c01ac[_0x73a7('0x1a')]=_0x327be2;if(_0x2ffb32[_0x73a7('0x2e')][_0x73a7('0x40')]){_0x49388b[_0x73a7('0x41')]=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0x73a7('0x42')](_0x49388b);})[_0x73a7('0x23')](function(_0x33c9a7){_0x6c01ac[_0x73a7('0x43')]=_0x33c9a7;return _0x6c01ac;})[_0x73a7('0x23')](respondWithFilteredResult(_0x332284,_0x49388b))[_0x73a7('0x44')](handleError(_0x332284,null));};exports[_0x73a7('0x45')]=function(_0x19a10f,_0x521d24){var _0x5339c8={'raw':![],'where':{'id':_0x19a10f[_0x73a7('0x46')]['id']}},_0x4a42be={};_0x4a42be[_0x73a7('0x32')]=_[_0x73a7('0x2f')](db['FreshdeskConfiguration'][_0x73a7('0x2a')]);_0x4a42be[_0x73a7('0x2e')]=_[_0x73a7('0x2f')](_0x19a10f['query']);_0x4a42be['filters']=_['intersection'](_0x4a42be[_0x73a7('0x32')],_0x4a42be[_0x73a7('0x2e')]);_0x5339c8[_0x73a7('0x33')]=_['intersection'](_0x4a42be[_0x73a7('0x32')],qs[_0x73a7('0x34')](_0x19a10f['query'][_0x73a7('0x34')]));_0x5339c8[_0x73a7('0x33')]=_0x5339c8[_0x73a7('0x33')]['length']?_0x5339c8[_0x73a7('0x33')]:_0x4a42be[_0x73a7('0x32')];if(_0x19a10f[_0x73a7('0x2e')][_0x73a7('0x40')]){_0x5339c8[_0x73a7('0x41')]=[{'all':!![]}];}_0x5339c8=_[_0x73a7('0x3e')]({},_0x5339c8,_0x19a10f['options']);return db[_0x73a7('0x29')]['find'](_0x5339c8)[_0x73a7('0x23')](handleEntityNotFound(_0x521d24,null))['then'](respondWithResult(_0x521d24,null))['catch'](handleError(_0x521d24,null));};exports[_0x73a7('0x47')]=function(_0x88606,_0x4578c1){return db[_0x73a7('0x29')][_0x73a7('0x47')](_0x88606[_0x73a7('0x48')],{})['then'](respondWithResult(_0x4578c1,0xc9))['catch'](handleError(_0x4578c1,null));};exports['update']=function(_0x28ba78,_0x48c0c0){if(_0x28ba78[_0x73a7('0x48')]['id']){delete _0x28ba78[_0x73a7('0x48')]['id'];}return db[_0x73a7('0x29')]['find']({'where':{'id':_0x28ba78['params']['id']}})[_0x73a7('0x23')](handleEntityNotFound(_0x48c0c0,null))[_0x73a7('0x23')](saveUpdates(_0x28ba78['body'],null))['then'](respondWithResult(_0x48c0c0,null))['catch'](handleError(_0x48c0c0,null));};exports[_0x73a7('0x24')]=function(_0x2ba896,_0xbc255b){return db[_0x73a7('0x29')][_0x73a7('0x49')]({'where':{'id':_0x2ba896[_0x73a7('0x46')]['id']}})['then'](handleEntityNotFound(_0xbc255b,null))[_0x73a7('0x23')](removeEntity(_0xbc255b,null))[_0x73a7('0x44')](handleError(_0xbc255b,null));};exports[_0x73a7('0x4a')]=function(_0x2df85a,_0x5adbd7,_0x35fad6){var _0x509f27={};var _0x13e2f8={};var _0x279f51;var _0x4107c0;return db['FreshdeskConfiguration'][_0x73a7('0x4b')]({'where':{'id':_0x2df85a['params']['id']}})[_0x73a7('0x23')](handleEntityNotFound(_0x5adbd7,null))[_0x73a7('0x23')](function(_0x1b76ab){if(_0x1b76ab){_0x279f51=_0x1b76ab;_0x13e2f8['model']=_[_0x73a7('0x2f')](db[_0x73a7('0x4c')][_0x73a7('0x2a')]);_0x13e2f8[_0x73a7('0x2e')]=_[_0x73a7('0x2f')](_0x2df85a[_0x73a7('0x2e')]);_0x13e2f8[_0x73a7('0x30')]=_[_0x73a7('0x31')](_0x13e2f8[_0x73a7('0x32')],_0x13e2f8['query']);_0x509f27[_0x73a7('0x33')]=_[_0x73a7('0x31')](_0x13e2f8[_0x73a7('0x32')],qs[_0x73a7('0x34')](_0x2df85a[_0x73a7('0x2e')][_0x73a7('0x34')]));_0x509f27['attributes']=_0x509f27[_0x73a7('0x33')][_0x73a7('0x35')]?_0x509f27[_0x73a7('0x33')]:_0x13e2f8[_0x73a7('0x32')];_0x509f27['order']=qs[_0x73a7('0x39')](_0x2df85a[_0x73a7('0x2e')][_0x73a7('0x39')]);_0x509f27[_0x73a7('0x3a')]=qs[_0x73a7('0x30')](_[_0x73a7('0x3b')](_0x2df85a[_0x73a7('0x2e')],_0x13e2f8['filters']));if(_0x2df85a['query'][_0x73a7('0x3c')]){_0x509f27[_0x73a7('0x3a')]=_[_0x73a7('0x3e')](_0x509f27['where'],{'$or':_['map'](_0x509f27[_0x73a7('0x33')],function(_0x1eb31d){var _0x2db418={};_0x2db418[_0x1eb31d]={'$like':'%'+_0x2df85a[_0x73a7('0x2e')][_0x73a7('0x3c')]+'%'};return _0x2db418;})});}_0x509f27=_[_0x73a7('0x3e')]({},_0x509f27,_0x2df85a[_0x73a7('0x3f')]);return _0x279f51[_0x73a7('0x4a')](_0x509f27);}})[_0x73a7('0x23')](function(_0x280c46){if(_0x280c46){_0x4107c0=_0x280c46[_0x73a7('0x35')];if(!_0x2df85a[_0x73a7('0x2e')]['hasOwnProperty']('nolimit')){_0x509f27[_0x73a7('0x19')]=qs[_0x73a7('0x19')](_0x2df85a[_0x73a7('0x2e')]['limit']);_0x509f27[_0x73a7('0x1b')]=qs[_0x73a7('0x1b')](_0x2df85a[_0x73a7('0x2e')][_0x73a7('0x1b')]);}return _0x279f51[_0x73a7('0x4a')](_0x509f27);}})[_0x73a7('0x23')](function(_0x3e7313){if(_0x3e7313){return _0x3e7313?{'count':_0x4107c0,'rows':_0x3e7313}:null;}})[_0x73a7('0x23')](respondWithResult(_0x5adbd7,null))[_0x73a7('0x44')](handleError(_0x5adbd7,null));};exports[_0x73a7('0x4d')]=function(_0x174060,_0x433758,_0x19bd4f){var _0x201d30={};var _0x55d061={};var _0x27b6c6;var _0x16aadc;return db['FreshdeskConfiguration'][_0x73a7('0x4b')]({'where':{'id':_0x174060[_0x73a7('0x46')]['id']}})['then'](handleEntityNotFound(_0x433758,null))['then'](function(_0x411feb){if(_0x411feb){_0x27b6c6=_0x411feb;_0x55d061[_0x73a7('0x32')]=_[_0x73a7('0x2f')](db[_0x73a7('0x4c')]['rawAttributes']);_0x55d061['query']=_[_0x73a7('0x2f')](_0x174060[_0x73a7('0x2e')]);_0x55d061['filters']=_['intersection'](_0x55d061[_0x73a7('0x32')],_0x55d061['query']);_0x201d30[_0x73a7('0x33')]=_[_0x73a7('0x31')](_0x55d061['model'],qs[_0x73a7('0x34')](_0x174060['query'][_0x73a7('0x34')]));_0x201d30['attributes']=_0x201d30['attributes'][_0x73a7('0x35')]?_0x201d30['attributes']:_0x55d061[_0x73a7('0x32')];_0x201d30[_0x73a7('0x38')]=qs['sort'](_0x174060[_0x73a7('0x2e')][_0x73a7('0x39')]);_0x201d30['where']=qs[_0x73a7('0x30')](_[_0x73a7('0x3b')](_0x174060[_0x73a7('0x2e')],_0x55d061[_0x73a7('0x30')]));if(_0x174060[_0x73a7('0x2e')][_0x73a7('0x3c')]){_0x201d30[_0x73a7('0x3a')]=_['merge'](_0x201d30[_0x73a7('0x3a')],{'$or':_['map'](_0x201d30[_0x73a7('0x33')],function(_0x137e88){var _0x592e77={};_0x592e77[_0x137e88]={'$like':'%'+_0x174060['query'][_0x73a7('0x3c')]+'%'};return _0x592e77;})});}_0x201d30=_['merge']({},_0x201d30,_0x174060[_0x73a7('0x3f')]);return _0x27b6c6[_0x73a7('0x4d')](_0x201d30);}})[_0x73a7('0x23')](function(_0x467581){if(_0x467581){_0x16aadc=_0x467581['length'];if(!_0x174060['query'][_0x73a7('0x36')]('nolimit')){_0x201d30[_0x73a7('0x19')]=qs[_0x73a7('0x19')](_0x174060['query'][_0x73a7('0x19')]);_0x201d30[_0x73a7('0x1b')]=qs[_0x73a7('0x1b')](_0x174060[_0x73a7('0x2e')]['offset']);}return _0x27b6c6['getSubjects'](_0x201d30);}})[_0x73a7('0x23')](function(_0x5c2d05){if(_0x5c2d05){return _0x5c2d05?{'count':_0x16aadc,'rows':_0x5c2d05}:null;}})[_0x73a7('0x23')](respondWithResult(_0x433758,null))['catch'](handleError(_0x433758,null));};exports[_0x73a7('0x4e')]=function(_0x3a0ca9,_0x525b69,_0x345388){var _0x5462fb={};var _0x1312cb={};var _0xbf2423;var _0x14458f;return db[_0x73a7('0x29')][_0x73a7('0x4b')]({'where':{'id':_0x3a0ca9[_0x73a7('0x46')]['id']}})[_0x73a7('0x23')](handleEntityNotFound(_0x525b69,null))['then'](function(_0x19e201){if(_0x19e201){_0xbf2423=_0x19e201;_0x1312cb[_0x73a7('0x32')]=_[_0x73a7('0x2f')](db[_0x73a7('0x4c')][_0x73a7('0x2a')]);_0x1312cb[_0x73a7('0x2e')]=_[_0x73a7('0x2f')](_0x3a0ca9[_0x73a7('0x2e')]);_0x1312cb[_0x73a7('0x30')]=_['intersection'](_0x1312cb[_0x73a7('0x32')],_0x1312cb[_0x73a7('0x2e')]);_0x5462fb['attributes']=_['intersection'](_0x1312cb[_0x73a7('0x32')],qs[_0x73a7('0x34')](_0x3a0ca9[_0x73a7('0x2e')][_0x73a7('0x34')]));_0x5462fb[_0x73a7('0x33')]=_0x5462fb[_0x73a7('0x33')][_0x73a7('0x35')]?_0x5462fb[_0x73a7('0x33')]:_0x1312cb[_0x73a7('0x32')];_0x5462fb[_0x73a7('0x38')]=qs[_0x73a7('0x39')](_0x3a0ca9[_0x73a7('0x2e')][_0x73a7('0x39')]);_0x5462fb[_0x73a7('0x3a')]=qs[_0x73a7('0x30')](_[_0x73a7('0x3b')](_0x3a0ca9[_0x73a7('0x2e')],_0x1312cb[_0x73a7('0x30')]));if(_0x3a0ca9['query'][_0x73a7('0x3c')]){_0x5462fb[_0x73a7('0x3a')]=_[_0x73a7('0x3e')](_0x5462fb['where'],{'$or':_['map'](_0x5462fb[_0x73a7('0x33')],function(_0x576126){var _0x334182={};_0x334182[_0x576126]={'$like':'%'+_0x3a0ca9[_0x73a7('0x2e')]['filter']+'%'};return _0x334182;})});}_0x5462fb=_[_0x73a7('0x3e')]({},_0x5462fb,_0x3a0ca9[_0x73a7('0x3f')]);return _0xbf2423[_0x73a7('0x4e')](_0x5462fb);}})[_0x73a7('0x23')](function(_0x5a66e4){if(_0x5a66e4){_0x14458f=_0x5a66e4['length'];if(!_0x3a0ca9[_0x73a7('0x2e')][_0x73a7('0x36')]('nolimit')){_0x5462fb[_0x73a7('0x19')]=qs[_0x73a7('0x19')](_0x3a0ca9['query'][_0x73a7('0x19')]);_0x5462fb[_0x73a7('0x1b')]=qs[_0x73a7('0x1b')](_0x3a0ca9[_0x73a7('0x2e')][_0x73a7('0x1b')]);}return _0xbf2423[_0x73a7('0x4e')](_0x5462fb);}})[_0x73a7('0x23')](function(_0x3a96dd){if(_0x3a96dd){return _0x3a96dd?{'count':_0x14458f,'rows':_0x3a96dd}:null;}})[_0x73a7('0x23')](respondWithResult(_0x525b69,null))['catch'](handleError(_0x525b69,null));};exports[_0x73a7('0x4f')]=function(_0x1d2675,_0xfa9a01,_0x1d9e9b){var _0xed7cbc={};var _0x1e02db={};var _0x44225e;var _0x1b31e0;return db[_0x73a7('0x29')]['findOne']({'where':{'id':_0x1d2675[_0x73a7('0x46')]['id']}})[_0x73a7('0x23')](handleEntityNotFound(_0xfa9a01,null))[_0x73a7('0x23')](function(_0x5538b9){if(_0x5538b9){_0x44225e=_0x5538b9;_0x1e02db[_0x73a7('0x32')]=_[_0x73a7('0x2f')](db[_0x73a7('0x50')]['rawAttributes']);_0x1e02db[_0x73a7('0x2e')]=_[_0x73a7('0x2f')](_0x1d2675[_0x73a7('0x2e')]);_0x1e02db['filters']=_[_0x73a7('0x31')](_0x1e02db[_0x73a7('0x32')],_0x1e02db['query']);_0xed7cbc[_0x73a7('0x33')]=_['intersection'](_0x1e02db[_0x73a7('0x32')],qs[_0x73a7('0x34')](_0x1d2675[_0x73a7('0x2e')][_0x73a7('0x34')]));_0xed7cbc[_0x73a7('0x33')]=_0xed7cbc['attributes'][_0x73a7('0x35')]?_0xed7cbc[_0x73a7('0x33')]:_0x1e02db['model'];_0xed7cbc[_0x73a7('0x38')]=qs[_0x73a7('0x39')](_0x1d2675[_0x73a7('0x2e')][_0x73a7('0x39')]);_0xed7cbc[_0x73a7('0x3a')]=qs[_0x73a7('0x30')](_[_0x73a7('0x3b')](_0x1d2675['query'],_0x1e02db['filters']));if(_0x1d2675[_0x73a7('0x2e')][_0x73a7('0x3c')]){_0xed7cbc['where']=_[_0x73a7('0x3e')](_0xed7cbc[_0x73a7('0x3a')],{'$or':_[_0x73a7('0x28')](_0xed7cbc[_0x73a7('0x33')],function(_0x4664af){var _0x668dde={};_0x668dde[_0x4664af]={'$like':'%'+_0x1d2675[_0x73a7('0x2e')][_0x73a7('0x3c')]+'%'};return _0x668dde;})});}_0xed7cbc=_[_0x73a7('0x3e')]({},_0xed7cbc,_0x1d2675[_0x73a7('0x3f')]);return _0x44225e[_0x73a7('0x4f')](_0xed7cbc);}})['then'](function(_0xb6d814){if(_0xb6d814){_0x1b31e0=_0xb6d814['length'];if(!_0x1d2675[_0x73a7('0x2e')][_0x73a7('0x36')](_0x73a7('0x37'))){_0xed7cbc[_0x73a7('0x19')]=qs[_0x73a7('0x19')](_0x1d2675['query'][_0x73a7('0x19')]);_0xed7cbc[_0x73a7('0x1b')]=qs[_0x73a7('0x1b')](_0x1d2675[_0x73a7('0x2e')][_0x73a7('0x1b')]);}return _0x44225e[_0x73a7('0x4f')](_0xed7cbc);}})[_0x73a7('0x23')](function(_0x345314){if(_0x345314){return _0x345314?{'count':_0x1b31e0,'rows':_0x345314}:null;}})[_0x73a7('0x23')](respondWithResult(_0xfa9a01,null))[_0x73a7('0x44')](handleError(_0xfa9a01,null));};exports['setTags']=function(_0x1a8e40,_0x63391f,_0x3bc536){if(_0x1a8e40['body']['id']){delete _0x1a8e40[_0x73a7('0x48')]['id'];}return db[_0x73a7('0x29')][_0x73a7('0x4b')]({'where':{'id':_0x1a8e40[_0x73a7('0x46')]['id']}})[_0x73a7('0x23')](handleEntityNotFound(_0x63391f,null))[_0x73a7('0x23')](function(_0x517143){if(_0x517143){return _0x517143[_0x73a7('0x51')](_0x1a8e40[_0x73a7('0x48')]['ids']||[]);}return null;})['then'](respondWithResult(_0x63391f,null))[_0x73a7('0x44')](handleError(_0x63391f,null));};
\ No newline at end of file
+var _0xafb6=['FreshdeskField','order','getSubjects','findOne','getDescriptions','getTags','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','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','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','count','set','Content-Range','apply','update','then','end','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filters','filter','where','merge','type','VIRTUAL','options','FreshdeskConfiguration','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','destroy','getFields'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xafb6,0x107));var _0x6afb=function(_0x43d0e6,_0x3c1489){_0x43d0e6=_0x43d0e6-0x0;var _0x51d841=_0xafb6[_0x43d0e6];return _0x51d841;};'use strict';var emlformat=require(_0x6afb('0x0'));var rimraf=require(_0x6afb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6afb('0x2'));var rp=require(_0x6afb('0x3'));var moment=require(_0x6afb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6afb('0x5'));var util=require(_0x6afb('0x6'));var path=require(_0x6afb('0x7'));var sox=require(_0x6afb('0x8'));var csv=require(_0x6afb('0x9'));var ejs=require(_0x6afb('0xa'));var fs=require('fs');var fs_extra=require(_0x6afb('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6afb('0xc'));var jsforce=require(_0x6afb('0xd'));var deskjs=require(_0x6afb('0xe'));var toCsv=require(_0x6afb('0x9'));var querystring=require(_0x6afb('0xf'));var Papa=require(_0x6afb('0x10'));var Redis=require(_0x6afb('0x11'));var authService=require(_0x6afb('0x12'));var qs=require(_0x6afb('0x13'));var as=require(_0x6afb('0x14'));var hardwareService=require(_0x6afb('0x15'));var logger=require(_0x6afb('0x16'))(_0x6afb('0x17'));var utils=require(_0x6afb('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x6afb('0x19'));var db=require(_0x6afb('0x1a'))['db'];function respondWithStatusCode(_0xb3c3e8,_0x3eb3e1){_0x3eb3e1=_0x3eb3e1||0xcc;return function(_0x479f2e){if(_0x479f2e){return _0xb3c3e8[_0x6afb('0x1b')](_0x3eb3e1);}return _0xb3c3e8[_0x6afb('0x1c')](_0x3eb3e1)['end']();};}function respondWithResult(_0x61ec13,_0x5a6817){_0x5a6817=_0x5a6817||0xc8;return function(_0x2ed03f){if(_0x2ed03f){return _0x61ec13[_0x6afb('0x1c')](_0x5a6817)['json'](_0x2ed03f);}};}function respondWithFilteredResult(_0x1e8856,_0x50c82f){return function(_0x1c5926){if(_0x1c5926){var _0x18a624=typeof _0x50c82f[_0x6afb('0x1d')]==='undefined'&&typeof _0x50c82f[_0x6afb('0x1e')]==='undefined';var _0x5e367d=_0x1c5926[_0x6afb('0x1f')];var _0x2ac4f5=_0x18a624?0x0:_0x50c82f[_0x6afb('0x1d')];var _0x2f93a1=_0x18a624?_0x1c5926[_0x6afb('0x1f')]:_0x50c82f['offset']+_0x50c82f['limit'];var _0x53000b;if(_0x2f93a1>=_0x5e367d){_0x2f93a1=_0x5e367d;_0x53000b=0xc8;}else{_0x53000b=0xce;}_0x1e8856[_0x6afb('0x1c')](_0x53000b);return _0x1e8856[_0x6afb('0x20')](_0x6afb('0x21'),_0x2ac4f5+'-'+_0x2f93a1+'/'+_0x5e367d)['json'](_0x1c5926);}return null;};}function patchUpdates(_0xdea70a){return function(_0xe50a49){try{jsonpatch[_0x6afb('0x22')](_0xe50a49,_0xdea70a,!![]);}catch(_0x5b8857){return BPromise['reject'](_0x5b8857);}return _0xe50a49['save']();};}function saveUpdates(_0x3ea236,_0x3c0ee2){return function(_0x1b6ffe){if(_0x1b6ffe){return _0x1b6ffe[_0x6afb('0x23')](_0x3ea236)[_0x6afb('0x24')](function(_0x2bbffd){return _0x2bbffd;});}return null;};}function removeEntity(_0x553532,_0x5df82a){return function(_0x3bc541){if(_0x3bc541){return _0x3bc541['destroy']()[_0x6afb('0x24')](function(){_0x553532[_0x6afb('0x1c')](0xcc)[_0x6afb('0x25')]();});}};}function handleEntityNotFound(_0x3728dd,_0x4a4981){return function(_0x2a816a){if(!_0x2a816a){_0x3728dd[_0x6afb('0x1b')](0x194);}return _0x2a816a;};}function handleError(_0x2e13ad,_0x27a642){_0x27a642=_0x27a642||0x1f4;return function(_0x197d89){logger['error'](_0x197d89[_0x6afb('0x26')]);if(_0x197d89['name']){delete _0x197d89[_0x6afb('0x27')];}_0x2e13ad[_0x6afb('0x1c')](_0x27a642)[_0x6afb('0x28')](_0x197d89);};}exports[_0x6afb('0x29')]=function(_0x36a178,_0x1f6f25){var _0x4bf83b={},_0x4d92be={},_0x259c6f={'count':0x0,'rows':[]};var _0x575c4b=_[_0x6afb('0x2a')](db['FreshdeskConfiguration'][_0x6afb('0x2b')],function(_0x4d5d3b){return{'name':_0x4d5d3b[_0x6afb('0x2c')],'type':_0x4d5d3b['type'][_0x6afb('0x2d')]};});_0x4d92be[_0x6afb('0x2e')]=_[_0x6afb('0x2a')](_0x575c4b,_0x6afb('0x27'));_0x4d92be['query']=_['keys'](_0x36a178[_0x6afb('0x2f')]);_0x4d92be['filters']=_[_0x6afb('0x30')](_0x4d92be['model'],_0x4d92be[_0x6afb('0x2f')]);_0x4bf83b[_0x6afb('0x31')]=_[_0x6afb('0x30')](_0x4d92be['model'],qs[_0x6afb('0x32')](_0x36a178['query'][_0x6afb('0x32')]));_0x4bf83b[_0x6afb('0x31')]=_0x4bf83b[_0x6afb('0x31')][_0x6afb('0x33')]?_0x4bf83b[_0x6afb('0x31')]:_0x4d92be[_0x6afb('0x2e')];if(!_0x36a178[_0x6afb('0x2f')][_0x6afb('0x34')](_0x6afb('0x35'))){_0x4bf83b[_0x6afb('0x1e')]=qs[_0x6afb('0x1e')](_0x36a178['query'][_0x6afb('0x1e')]);_0x4bf83b[_0x6afb('0x1d')]=qs[_0x6afb('0x1d')](_0x36a178[_0x6afb('0x2f')][_0x6afb('0x1d')]);}_0x4bf83b['order']=qs[_0x6afb('0x36')](_0x36a178[_0x6afb('0x2f')][_0x6afb('0x36')]);_0x4bf83b['where']=qs['filters'](_[_0x6afb('0x37')](_0x36a178[_0x6afb('0x2f')],_0x4d92be[_0x6afb('0x38')]),_0x575c4b);if(_0x36a178[_0x6afb('0x2f')][_0x6afb('0x39')]){_0x4bf83b[_0x6afb('0x3a')]=_[_0x6afb('0x3b')](_0x4bf83b[_0x6afb('0x3a')],{'$or':_[_0x6afb('0x2a')](_0x575c4b,function(_0x57d598){if(_0x57d598[_0x6afb('0x3c')]!==_0x6afb('0x3d')){var _0x4b7c4d={};_0x4b7c4d[_0x57d598['name']]={'$like':'%'+_0x36a178[_0x6afb('0x2f')]['filter']+'%'};return _0x4b7c4d;}})});}_0x4bf83b=_['merge']({},_0x4bf83b,_0x36a178[_0x6afb('0x3e')]);var _0x244d2={'where':_0x4bf83b[_0x6afb('0x3a')]};return db[_0x6afb('0x3f')][_0x6afb('0x1f')](_0x244d2)[_0x6afb('0x24')](function(_0x17689f){_0x259c6f[_0x6afb('0x1f')]=_0x17689f;if(_0x36a178[_0x6afb('0x2f')]['includeAll']){_0x4bf83b[_0x6afb('0x40')]=[{'all':!![]}];}return db[_0x6afb('0x3f')][_0x6afb('0x41')](_0x4bf83b);})['then'](function(_0x2ea9b1){_0x259c6f[_0x6afb('0x42')]=_0x2ea9b1;return _0x259c6f;})[_0x6afb('0x24')](respondWithFilteredResult(_0x1f6f25,_0x4bf83b))[_0x6afb('0x43')](handleError(_0x1f6f25,null));};exports[_0x6afb('0x44')]=function(_0x1c7396,_0x123036){var _0x2270cd={'raw':![],'where':{'id':_0x1c7396[_0x6afb('0x45')]['id']}},_0x2ea3cd={};_0x2ea3cd[_0x6afb('0x2e')]=_[_0x6afb('0x46')](db[_0x6afb('0x3f')][_0x6afb('0x2b')]);_0x2ea3cd[_0x6afb('0x2f')]=_[_0x6afb('0x46')](_0x1c7396[_0x6afb('0x2f')]);_0x2ea3cd['filters']=_[_0x6afb('0x30')](_0x2ea3cd[_0x6afb('0x2e')],_0x2ea3cd['query']);_0x2270cd[_0x6afb('0x31')]=_[_0x6afb('0x30')](_0x2ea3cd['model'],qs['fields'](_0x1c7396[_0x6afb('0x2f')]['fields']));_0x2270cd[_0x6afb('0x31')]=_0x2270cd['attributes'][_0x6afb('0x33')]?_0x2270cd[_0x6afb('0x31')]:_0x2ea3cd[_0x6afb('0x2e')];if(_0x1c7396[_0x6afb('0x2f')][_0x6afb('0x47')]){_0x2270cd['include']=[{'all':!![]}];}_0x2270cd=_[_0x6afb('0x3b')]({},_0x2270cd,_0x1c7396[_0x6afb('0x3e')]);return db[_0x6afb('0x3f')][_0x6afb('0x48')](_0x2270cd)[_0x6afb('0x24')](handleEntityNotFound(_0x123036,null))[_0x6afb('0x24')](respondWithResult(_0x123036,null))[_0x6afb('0x43')](handleError(_0x123036,null));};exports['create']=function(_0x33315e,_0x39dfb0){return db[_0x6afb('0x3f')][_0x6afb('0x49')](_0x33315e[_0x6afb('0x4a')],{})[_0x6afb('0x24')](respondWithResult(_0x39dfb0,0xc9))[_0x6afb('0x43')](handleError(_0x39dfb0,null));};exports[_0x6afb('0x23')]=function(_0x494d68,_0xf4297a){if(_0x494d68[_0x6afb('0x4a')]['id']){delete _0x494d68[_0x6afb('0x4a')]['id'];}return db[_0x6afb('0x3f')][_0x6afb('0x48')]({'where':{'id':_0x494d68[_0x6afb('0x45')]['id']}})['then'](handleEntityNotFound(_0xf4297a,null))[_0x6afb('0x24')](saveUpdates(_0x494d68[_0x6afb('0x4a')],null))[_0x6afb('0x24')](respondWithResult(_0xf4297a,null))[_0x6afb('0x43')](handleError(_0xf4297a,null));};exports[_0x6afb('0x4b')]=function(_0xafb26f,_0x50dc6f){return db[_0x6afb('0x3f')][_0x6afb('0x48')]({'where':{'id':_0xafb26f[_0x6afb('0x45')]['id']}})[_0x6afb('0x24')](handleEntityNotFound(_0x50dc6f,null))[_0x6afb('0x24')](removeEntity(_0x50dc6f,null))[_0x6afb('0x43')](handleError(_0x50dc6f,null));};exports[_0x6afb('0x4c')]=function(_0x28a3f8,_0x355563,_0x3f298b){var _0xf1f9ac={};var _0xdb1473={};var _0x38adef;var _0x3ce570;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x28a3f8[_0x6afb('0x45')]['id']}})[_0x6afb('0x24')](handleEntityNotFound(_0x355563,null))['then'](function(_0x274d67){if(_0x274d67){_0x38adef=_0x274d67;_0xdb1473['model']=_[_0x6afb('0x46')](db[_0x6afb('0x4d')]['rawAttributes']);_0xdb1473[_0x6afb('0x2f')]=_[_0x6afb('0x46')](_0x28a3f8[_0x6afb('0x2f')]);_0xdb1473[_0x6afb('0x38')]=_[_0x6afb('0x30')](_0xdb1473[_0x6afb('0x2e')],_0xdb1473['query']);_0xf1f9ac[_0x6afb('0x31')]=_[_0x6afb('0x30')](_0xdb1473[_0x6afb('0x2e')],qs['fields'](_0x28a3f8['query'][_0x6afb('0x32')]));_0xf1f9ac[_0x6afb('0x31')]=_0xf1f9ac[_0x6afb('0x31')]['length']?_0xf1f9ac[_0x6afb('0x31')]:_0xdb1473[_0x6afb('0x2e')];_0xf1f9ac[_0x6afb('0x4e')]=qs['sort'](_0x28a3f8['query'][_0x6afb('0x36')]);_0xf1f9ac[_0x6afb('0x3a')]=qs[_0x6afb('0x38')](_[_0x6afb('0x37')](_0x28a3f8['query'],_0xdb1473[_0x6afb('0x38')]));if(_0x28a3f8[_0x6afb('0x2f')][_0x6afb('0x39')]){_0xf1f9ac[_0x6afb('0x3a')]=_['merge'](_0xf1f9ac[_0x6afb('0x3a')],{'$or':_[_0x6afb('0x2a')](_0xf1f9ac[_0x6afb('0x31')],function(_0x3b698f){var _0x5c247d={};_0x5c247d[_0x3b698f]={'$like':'%'+_0x28a3f8[_0x6afb('0x2f')]['filter']+'%'};return _0x5c247d;})});}_0xf1f9ac=_[_0x6afb('0x3b')]({},_0xf1f9ac,_0x28a3f8[_0x6afb('0x3e')]);return _0x38adef['getFields'](_0xf1f9ac);}})[_0x6afb('0x24')](function(_0x2487e5){if(_0x2487e5){_0x3ce570=_0x2487e5[_0x6afb('0x33')];if(!_0x28a3f8[_0x6afb('0x2f')]['hasOwnProperty']('nolimit')){_0xf1f9ac[_0x6afb('0x1e')]=qs[_0x6afb('0x1e')](_0x28a3f8[_0x6afb('0x2f')][_0x6afb('0x1e')]);_0xf1f9ac[_0x6afb('0x1d')]=qs[_0x6afb('0x1d')](_0x28a3f8[_0x6afb('0x2f')][_0x6afb('0x1d')]);}return _0x38adef['getFields'](_0xf1f9ac);}})['then'](function(_0x568ece){if(_0x568ece){return _0x568ece?{'count':_0x3ce570,'rows':_0x568ece}:null;}})[_0x6afb('0x24')](respondWithResult(_0x355563,null))['catch'](handleError(_0x355563,null));};exports[_0x6afb('0x4f')]=function(_0xd388c3,_0x4e7207,_0x212068){var _0x144522={};var _0x4e69d5={};var _0x5fc4af;var _0x16e1d9;return db[_0x6afb('0x3f')][_0x6afb('0x50')]({'where':{'id':_0xd388c3[_0x6afb('0x45')]['id']}})['then'](handleEntityNotFound(_0x4e7207,null))[_0x6afb('0x24')](function(_0x31cd39){if(_0x31cd39){_0x5fc4af=_0x31cd39;_0x4e69d5[_0x6afb('0x2e')]=_[_0x6afb('0x46')](db[_0x6afb('0x4d')][_0x6afb('0x2b')]);_0x4e69d5[_0x6afb('0x2f')]=_[_0x6afb('0x46')](_0xd388c3['query']);_0x4e69d5[_0x6afb('0x38')]=_[_0x6afb('0x30')](_0x4e69d5['model'],_0x4e69d5['query']);_0x144522[_0x6afb('0x31')]=_['intersection'](_0x4e69d5['model'],qs[_0x6afb('0x32')](_0xd388c3['query']['fields']));_0x144522[_0x6afb('0x31')]=_0x144522[_0x6afb('0x31')][_0x6afb('0x33')]?_0x144522[_0x6afb('0x31')]:_0x4e69d5[_0x6afb('0x2e')];_0x144522[_0x6afb('0x4e')]=qs['sort'](_0xd388c3[_0x6afb('0x2f')]['sort']);_0x144522['where']=qs[_0x6afb('0x38')](_[_0x6afb('0x37')](_0xd388c3['query'],_0x4e69d5[_0x6afb('0x38')]));if(_0xd388c3['query'][_0x6afb('0x39')]){_0x144522['where']=_[_0x6afb('0x3b')](_0x144522[_0x6afb('0x3a')],{'$or':_['map'](_0x144522[_0x6afb('0x31')],function(_0x3a26fc){var _0x770b00={};_0x770b00[_0x3a26fc]={'$like':'%'+_0xd388c3[_0x6afb('0x2f')]['filter']+'%'};return _0x770b00;})});}_0x144522=_['merge']({},_0x144522,_0xd388c3['options']);return _0x5fc4af[_0x6afb('0x4f')](_0x144522);}})['then'](function(_0x48d904){if(_0x48d904){_0x16e1d9=_0x48d904[_0x6afb('0x33')];if(!_0xd388c3[_0x6afb('0x2f')][_0x6afb('0x34')](_0x6afb('0x35'))){_0x144522['limit']=qs[_0x6afb('0x1e')](_0xd388c3[_0x6afb('0x2f')][_0x6afb('0x1e')]);_0x144522['offset']=qs['offset'](_0xd388c3[_0x6afb('0x2f')][_0x6afb('0x1d')]);}return _0x5fc4af[_0x6afb('0x4f')](_0x144522);}})['then'](function(_0x247fb1){if(_0x247fb1){return _0x247fb1?{'count':_0x16e1d9,'rows':_0x247fb1}:null;}})[_0x6afb('0x24')](respondWithResult(_0x4e7207,null))[_0x6afb('0x43')](handleError(_0x4e7207,null));};exports['getDescriptions']=function(_0xc907d1,_0x1694fc,_0x37fbb5){var _0x20b12d={};var _0x41338a={};var _0x4c102f;var _0x18a01f;return db['FreshdeskConfiguration'][_0x6afb('0x50')]({'where':{'id':_0xc907d1[_0x6afb('0x45')]['id']}})[_0x6afb('0x24')](handleEntityNotFound(_0x1694fc,null))[_0x6afb('0x24')](function(_0x4f9455){if(_0x4f9455){_0x4c102f=_0x4f9455;_0x41338a['model']=_[_0x6afb('0x46')](db[_0x6afb('0x4d')][_0x6afb('0x2b')]);_0x41338a[_0x6afb('0x2f')]=_[_0x6afb('0x46')](_0xc907d1[_0x6afb('0x2f')]);_0x41338a[_0x6afb('0x38')]=_[_0x6afb('0x30')](_0x41338a['model'],_0x41338a[_0x6afb('0x2f')]);_0x20b12d[_0x6afb('0x31')]=_['intersection'](_0x41338a[_0x6afb('0x2e')],qs[_0x6afb('0x32')](_0xc907d1[_0x6afb('0x2f')][_0x6afb('0x32')]));_0x20b12d[_0x6afb('0x31')]=_0x20b12d['attributes'][_0x6afb('0x33')]?_0x20b12d[_0x6afb('0x31')]:_0x41338a[_0x6afb('0x2e')];_0x20b12d[_0x6afb('0x4e')]=qs[_0x6afb('0x36')](_0xc907d1[_0x6afb('0x2f')][_0x6afb('0x36')]);_0x20b12d[_0x6afb('0x3a')]=qs['filters'](_[_0x6afb('0x37')](_0xc907d1[_0x6afb('0x2f')],_0x41338a[_0x6afb('0x38')]));if(_0xc907d1[_0x6afb('0x2f')][_0x6afb('0x39')]){_0x20b12d[_0x6afb('0x3a')]=_['merge'](_0x20b12d[_0x6afb('0x3a')],{'$or':_[_0x6afb('0x2a')](_0x20b12d[_0x6afb('0x31')],function(_0x35728c){var _0x19c940={};_0x19c940[_0x35728c]={'$like':'%'+_0xc907d1['query'][_0x6afb('0x39')]+'%'};return _0x19c940;})});}_0x20b12d=_['merge']({},_0x20b12d,_0xc907d1['options']);return _0x4c102f[_0x6afb('0x51')](_0x20b12d);}})[_0x6afb('0x24')](function(_0x58770b){if(_0x58770b){_0x18a01f=_0x58770b[_0x6afb('0x33')];if(!_0xc907d1[_0x6afb('0x2f')][_0x6afb('0x34')]('nolimit')){_0x20b12d[_0x6afb('0x1e')]=qs[_0x6afb('0x1e')](_0xc907d1[_0x6afb('0x2f')][_0x6afb('0x1e')]);_0x20b12d[_0x6afb('0x1d')]=qs[_0x6afb('0x1d')](_0xc907d1[_0x6afb('0x2f')][_0x6afb('0x1d')]);}return _0x4c102f[_0x6afb('0x51')](_0x20b12d);}})[_0x6afb('0x24')](function(_0xf23355){if(_0xf23355){return _0xf23355?{'count':_0x18a01f,'rows':_0xf23355}:null;}})[_0x6afb('0x24')](respondWithResult(_0x1694fc,null))[_0x6afb('0x43')](handleError(_0x1694fc,null));};exports[_0x6afb('0x52')]=function(_0x446273,_0x5cf677,_0x5576fd){var _0x182db7={};var _0x43ef68={};var _0x568518;var _0x284152;return db[_0x6afb('0x3f')][_0x6afb('0x50')]({'where':{'id':_0x446273[_0x6afb('0x45')]['id']}})[_0x6afb('0x24')](handleEntityNotFound(_0x5cf677,null))['then'](function(_0x473c5a){if(_0x473c5a){_0x568518=_0x473c5a;_0x43ef68[_0x6afb('0x2e')]=_['keys'](db['Tag']['rawAttributes']);_0x43ef68[_0x6afb('0x2f')]=_[_0x6afb('0x46')](_0x446273[_0x6afb('0x2f')]);_0x43ef68[_0x6afb('0x38')]=_[_0x6afb('0x30')](_0x43ef68[_0x6afb('0x2e')],_0x43ef68[_0x6afb('0x2f')]);_0x182db7[_0x6afb('0x31')]=_[_0x6afb('0x30')](_0x43ef68[_0x6afb('0x2e')],qs[_0x6afb('0x32')](_0x446273[_0x6afb('0x2f')][_0x6afb('0x32')]));_0x182db7[_0x6afb('0x31')]=_0x182db7[_0x6afb('0x31')][_0x6afb('0x33')]?_0x182db7[_0x6afb('0x31')]:_0x43ef68[_0x6afb('0x2e')];_0x182db7[_0x6afb('0x4e')]=qs[_0x6afb('0x36')](_0x446273[_0x6afb('0x2f')][_0x6afb('0x36')]);_0x182db7[_0x6afb('0x3a')]=qs['filters'](_[_0x6afb('0x37')](_0x446273[_0x6afb('0x2f')],_0x43ef68[_0x6afb('0x38')]));if(_0x446273[_0x6afb('0x2f')]['filter']){_0x182db7[_0x6afb('0x3a')]=_[_0x6afb('0x3b')](_0x182db7[_0x6afb('0x3a')],{'$or':_[_0x6afb('0x2a')](_0x182db7['attributes'],function(_0x168fb3){var _0x34b920={};_0x34b920[_0x168fb3]={'$like':'%'+_0x446273[_0x6afb('0x2f')]['filter']+'%'};return _0x34b920;})});}_0x182db7=_[_0x6afb('0x3b')]({},_0x182db7,_0x446273[_0x6afb('0x3e')]);return _0x568518[_0x6afb('0x52')](_0x182db7);}})[_0x6afb('0x24')](function(_0x461553){if(_0x461553){_0x284152=_0x461553[_0x6afb('0x33')];if(!_0x446273['query'][_0x6afb('0x34')]('nolimit')){_0x182db7['limit']=qs[_0x6afb('0x1e')](_0x446273['query'][_0x6afb('0x1e')]);_0x182db7[_0x6afb('0x1d')]=qs[_0x6afb('0x1d')](_0x446273['query'][_0x6afb('0x1d')]);}return _0x568518[_0x6afb('0x52')](_0x182db7);}})[_0x6afb('0x24')](function(_0x224a5a){if(_0x224a5a){return _0x224a5a?{'count':_0x284152,'rows':_0x224a5a}:null;}})['then'](respondWithResult(_0x5cf677,null))[_0x6afb('0x43')](handleError(_0x5cf677,null));};exports[_0x6afb('0x53')]=function(_0x1c14c9,_0x57e6a,_0x403a44){if(_0x1c14c9[_0x6afb('0x4a')]['id']){delete _0x1c14c9[_0x6afb('0x4a')]['id'];}return db[_0x6afb('0x3f')][_0x6afb('0x50')]({'where':{'id':_0x1c14c9[_0x6afb('0x45')]['id']}})[_0x6afb('0x24')](handleEntityNotFound(_0x57e6a,null))[_0x6afb('0x24')](function(_0x21883){if(_0x21883){return _0x21883[_0x6afb('0x53')](_0x1c14c9[_0x6afb('0x4a')][_0x6afb('0x54')]||[]);}return null;})[_0x6afb('0x24')](respondWithResult(_0x57e6a,null))[_0x6afb('0x43')](handleError(_0x57e6a,null));};
\ No newline at end of file
index 20d2895..74c4721 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3698=['exports','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','./intFreshdeskConfiguration.attributes'];(function(_0x6f6e64,_0x495938){var _0xf7445a=function(_0x42f400){while(--_0x42f400){_0x6f6e64['push'](_0x6f6e64['shift']());}};_0xf7445a(++_0x495938);}(_0x3698,0xd4));var _0x8369=function(_0x464d1b,_0x4d4525){_0x464d1b=_0x464d1b-0x0;var _0x1b21c0=_0x3698[_0x464d1b];return _0x1b21c0;};'use strict';var _=require(_0x8369('0x0'));var util=require(_0x8369('0x1'));var logger=require(_0x8369('0x2'))(_0x8369('0x3'));var moment=require(_0x8369('0x4'));var BPromise=require(_0x8369('0x5'));var rp=require(_0x8369('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8369('0x7'));module[_0x8369('0x8')]=function(_0x110ab5,_0x1c498a){return _0x110ab5['define'](_0x8369('0x9'),attributes,{'tableName':_0x8369('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf304=['../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports','int_freshdesk_configurations','util'];(function(_0x56756b,_0x3e8cc7){var _0xa3002=function(_0x5f1386){while(--_0x5f1386){_0x56756b['push'](_0x56756b['shift']());}};_0xa3002(++_0x3e8cc7);}(_0xf304,0x1c1));var _0x4f30=function(_0xd547cd,_0x3ad91f){_0xd547cd=_0xd547cd-0x0;var _0x1e3cff=_0xf304[_0xd547cd];return _0x1e3cff;};'use strict';var _=require('lodash');var util=require(_0x4f30('0x0'));var logger=require(_0x4f30('0x1'))(_0x4f30('0x2'));var moment=require(_0x4f30('0x3'));var BPromise=require('bluebird');var rp=require(_0x4f30('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4f30('0x5'));var config=require(_0x4f30('0x6'));var attributes=require('./intFreshdeskConfiguration.attributes');module[_0x4f30('0x7')]=function(_0x2563ef,_0x5b6c16){return _0x2563ef['define']('FreshdeskConfiguration',attributes,{'tableName':_0x4f30('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a0c699a..131a7ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a03=['rpc','../../config/environment','jayson/promise','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','bluebird','ioredis'];(function(_0x3a994f,_0x3fec47){var _0x58916c=function(_0x178043){while(--_0x178043){_0x3a994f['push'](_0x3a994f['shift']());}};_0x58916c(++_0x3fec47);}(_0x8a03,0xdd));var _0x38a0=function(_0x2f4d00,_0x492fea){_0x2f4d00=_0x2f4d00-0x0;var _0x1070c8=_0x8a03[_0x2f4d00];return _0x1070c8;};'use strict';var _=require(_0x38a0('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x38a0('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x38a0('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x38a0('0x3'));var config=require(_0x38a0('0x4'));var jayson=require(_0x38a0('0x5'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x51bdd3,_0x23f85b,_0x5958a5){return new BPromise(function(_0x390226,_0x264d5c){return client['request'](_0x51bdd3,_0x5958a5)[_0x38a0('0x6')](function(_0x18b30c){logger[_0x38a0('0x7')](_0x38a0('0x8'),_0x23f85b,_0x38a0('0x9'));logger[_0x38a0('0xa')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x23f85b,'request\x20sent',JSON[_0x38a0('0xb')](_0x18b30c));if(_0x18b30c['error']){if(_0x18b30c[_0x38a0('0xc')]['code']===0x1f4){logger['error'](_0x38a0('0x8'),_0x23f85b,_0x18b30c[_0x38a0('0xc')][_0x38a0('0xd')]);return _0x264d5c(_0x18b30c['error']['message']);}logger[_0x38a0('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x23f85b,_0x18b30c[_0x38a0('0xc')][_0x38a0('0xd')]);return _0x390226(_0x18b30c[_0x38a0('0xc')][_0x38a0('0xd')]);}else{logger[_0x38a0('0x7')](_0x38a0('0x8'),_0x23f85b,_0x38a0('0x9'));_0x390226(_0x18b30c[_0x38a0('0xe')][_0x38a0('0xd')]);}})[_0x38a0('0xf')](function(_0x214e8c){logger['error'](_0x38a0('0x8'),_0x23f85b,_0x214e8c);_0x264d5c(_0x214e8c);});});}
\ No newline at end of file
+var _0xca8f=['debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','jayson/promise','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x34b67e,_0x26dff5){var _0x391eda=function(_0xc9558){while(--_0xc9558){_0x34b67e['push'](_0x34b67e['shift']());}};_0x391eda(++_0x26dff5);}(_0xca8f,0xbc));var _0xfca8=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0xca8f[_0x16b9ed];return _0x66b1f8;};'use strict';var _=require(_0xfca8('0x0'));var util=require(_0xfca8('0x1'));var moment=require(_0xfca8('0x2'));var BPromise=require(_0xfca8('0x3'));var rs=require(_0xfca8('0x4'));var fs=require('fs');var Redis=require(_0xfca8('0x5'));var db=require(_0xfca8('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xfca8('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1725ed,_0x4c8c18,_0x5e3ac6){return new BPromise(function(_0x11c581,_0x538a0a){return client['request'](_0x1725ed,_0x5e3ac6)['then'](function(_0x330dfb){logger['info'](_0xfca8('0x8'),_0x4c8c18,_0xfca8('0x9'));logger[_0xfca8('0xa')](_0xfca8('0xb'),_0x4c8c18,'request\x20sent',JSON[_0xfca8('0xc')](_0x330dfb));if(_0x330dfb[_0xfca8('0xd')]){if(_0x330dfb['error'][_0xfca8('0xe')]===0x1f4){logger[_0xfca8('0xd')](_0xfca8('0x8'),_0x4c8c18,_0x330dfb[_0xfca8('0xd')]['message']);return _0x538a0a(_0x330dfb[_0xfca8('0xd')]['message']);}logger[_0xfca8('0xd')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x4c8c18,_0x330dfb['error'][_0xfca8('0xf')]);return _0x11c581(_0x330dfb[_0xfca8('0xd')][_0xfca8('0xf')]);}else{logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x4c8c18,_0xfca8('0x9'));_0x11c581(_0x330dfb[_0xfca8('0x10')][_0xfca8('0xf')]);}})[_0xfca8('0x11')](function(_0x215f27){logger['error'](_0xfca8('0x8'),_0x4c8c18,_0x215f27);_0x538a0a(_0x215f27);});});}
\ No newline at end of file
index 5ae8cd5..7741e12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe088=['update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','./intFreshdeskField.controller','get','isAuthenticated','post','create','put','/:id'];(function(_0x175e89,_0x20835f){var _0x2ed996=function(_0x56239f){while(--_0x56239f){_0x175e89['push'](_0x175e89['shift']());}};_0x2ed996(++_0x20835f);}(_0xe088,0x1ad));var _0x8e08=function(_0x5f58bb,_0x3f0bad){_0x5f58bb=_0x5f58bb-0x0;var _0xcc672d=_0xe088[_0x5f58bb];return _0xcc672d;};'use strict';var multer=require(_0x8e08('0x0'));var util=require(_0x8e08('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8e08('0x2'));var router=express[_0x8e08('0x3')]();var fs_extra=require(_0x8e08('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x8e08('0x5'));var config=require('../../config/environment');var controller=require(_0x8e08('0x6'));router[_0x8e08('0x7')]('/',auth[_0x8e08('0x8')](),controller['index']);router[_0x8e08('0x7')]('/:id',auth[_0x8e08('0x8')](),controller['show']);router[_0x8e08('0x9')]('/',auth[_0x8e08('0x8')](),controller[_0x8e08('0xa')]);router[_0x8e08('0xb')](_0x8e08('0xc'),auth[_0x8e08('0x8')](),controller[_0x8e08('0xd')]);router[_0x8e08('0xe')](_0x8e08('0xc'),auth[_0x8e08('0x8')](),controller[_0x8e08('0xf')]);module[_0x8e08('0x10')]=router;
\ No newline at end of file
+var _0x97bc=['isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','util','path','express','../../components/interaction/service','get'];(function(_0x2dfef9,_0x3676bb){var _0x1a2740=function(_0x46ef12){while(--_0x46ef12){_0x2dfef9['push'](_0x2dfef9['shift']());}};_0x1a2740(++_0x3676bb);}(_0x97bc,0x127));var _0xc97b=function(_0x57fd55,_0x18e39b){_0x57fd55=_0x57fd55-0x0;var _0x30f529=_0x97bc[_0x57fd55];return _0x30f529;};'use strict';var multer=require('multer');var util=require(_0xc97b('0x0'));var path=require(_0xc97b('0x1'));var timeout=require('connect-timeout');var express=require(_0xc97b('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xc97b('0x3'));var config=require('../../config/environment');var controller=require('./intFreshdeskField.controller');router[_0xc97b('0x4')]('/',auth[_0xc97b('0x5')](),controller[_0xc97b('0x6')]);router[_0xc97b('0x4')](_0xc97b('0x7'),auth[_0xc97b('0x5')](),controller[_0xc97b('0x8')]);router[_0xc97b('0x9')]('/',auth[_0xc97b('0x5')](),controller[_0xc97b('0xa')]);router[_0xc97b('0xb')](_0xc97b('0x7'),auth[_0xc97b('0x5')](),controller[_0xc97b('0xc')]);router[_0xc97b('0xd')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xc97b('0xe')]=router;
\ No newline at end of file
index e4fa86d..3efdf32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5505=['variable','customVariable','STRING','ENUM','BOOLEAN','sequelize','exports','string'];(function(_0x39340a,_0x533d5a){var _0x27fa75=function(_0x176dd0){while(--_0x176dd0){_0x39340a['push'](_0x39340a['shift']());}};_0x27fa75(++_0x533d5a);}(_0x5505,0x18d));var _0x5550=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x5505[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x5550('0x0'));module[_0x5550('0x1')]={'type':{'type':Sequelize['ENUM'](_0x5550('0x2'),_0x5550('0x3'),_0x5550('0x4'),'keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x5550('0x5')]},'keyType':{'type':Sequelize[_0x5550('0x6')](_0x5550('0x2'),_0x5550('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x5550('0x5')]},'idField':{'type':Sequelize[_0x5550('0x5')]},'nameField':{'type':Sequelize[_0x5550('0x5')]},'customField':{'type':Sequelize[_0x5550('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x68c4=['picklist','STRING','BOOLEAN','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x3e531a,_0x28a82a){var _0x3c2574=function(_0x4a0c98){while(--_0x4a0c98){_0x3e531a['push'](_0x3e531a['shift']());}};_0x3c2574(++_0x28a82a);}(_0x68c4,0x1e0));var _0x468c=function(_0x483e3a,_0x568361){_0x483e3a=_0x483e3a-0x0;var _0x43fca9=_0x68c4[_0x483e3a];return _0x43fca9;};'use strict';var Sequelize=require('sequelize');module[_0x468c('0x0')]={'type':{'type':Sequelize[_0x468c('0x1')](_0x468c('0x2'),_0x468c('0x3'),_0x468c('0x4'),_0x468c('0x5'),_0x468c('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x468c('0x7')]},'key':{'type':Sequelize[_0x468c('0x7')]},'keyType':{'type':Sequelize[_0x468c('0x1')]('string',_0x468c('0x3'),_0x468c('0x4'))},'keyContent':{'type':Sequelize[_0x468c('0x7')]},'idField':{'type':Sequelize[_0x468c('0x7')]},'nameField':{'type':Sequelize[_0x468c('0x7')]},'customField':{'type':Sequelize[_0x468c('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 7a1cf5a..3a57284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fce=['merge','VIRTUAL','includeAll','include','FreshdeskField','findAll','show','params','options','find','create','body','catch','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','type','model','keys','filters','intersection','fields','query','attributes','length','nolimit','order','sort','where','pick','filter'];(function(_0x3387dd,_0x12cba3){var _0x34d6b2=function(_0x16e4e3){while(--_0x16e4e3){_0x3387dd['push'](_0x3387dd['shift']());}};_0x34d6b2(++_0x12cba3);}(_0x7fce,0xdc));var _0xe7fc=function(_0x5165e7,_0x47b3c5){_0x5165e7=_0x5165e7-0x0;var _0x11e2c6=_0x7fce[_0x5165e7];return _0x11e2c6;};'use strict';var emlformat=require(_0xe7fc('0x0'));var rimraf=require(_0xe7fc('0x1'));var zipdir=require(_0xe7fc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe7fc('0x3'));var moment=require('moment');var BPromise=require(_0xe7fc('0x4'));var Mustache=require('mustache');var util=require(_0xe7fc('0x5'));var path=require(_0xe7fc('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe7fc('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe7fc('0x8'));var squel=require(_0xe7fc('0x9'));var crypto=require(_0xe7fc('0xa'));var jsforce=require(_0xe7fc('0xb'));var deskjs=require(_0xe7fc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe7fc('0xd'));var Papa=require('papaparse');var Redis=require(_0xe7fc('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xe7fc('0xf'));var as=require(_0xe7fc('0x10'));var hardwareService=require(_0xe7fc('0x11'));var logger=require(_0xe7fc('0x12'))('api');var utils=require(_0xe7fc('0x13'));var config=require(_0xe7fc('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x243600,_0x59da2e){_0x59da2e=_0x59da2e||0xcc;return function(_0x38512a){if(_0x38512a){return _0x243600['sendStatus'](_0x59da2e);}return _0x243600['status'](_0x59da2e)[_0xe7fc('0x15')]();};}function respondWithResult(_0x14fcbf,_0x235692){_0x235692=_0x235692||0xc8;return function(_0x307f58){if(_0x307f58){return _0x14fcbf[_0xe7fc('0x16')](_0x235692)['json'](_0x307f58);}};}function respondWithFilteredResult(_0x272cd5,_0x5ce83f){return function(_0x4da73b){if(_0x4da73b){var _0x1302e5=typeof _0x5ce83f[_0xe7fc('0x17')]===_0xe7fc('0x18')&&typeof _0x5ce83f[_0xe7fc('0x19')]==='undefined';var _0x552429=_0x4da73b['count'];var _0x4aa4f0=_0x1302e5?0x0:_0x5ce83f['offset'];var _0x490a99=_0x1302e5?_0x4da73b[_0xe7fc('0x1a')]:_0x5ce83f['offset']+_0x5ce83f[_0xe7fc('0x19')];var _0xb43fde;if(_0x490a99>=_0x552429){_0x490a99=_0x552429;_0xb43fde=0xc8;}else{_0xb43fde=0xce;}_0x272cd5[_0xe7fc('0x16')](_0xb43fde);return _0x272cd5[_0xe7fc('0x1b')](_0xe7fc('0x1c'),_0x4aa4f0+'-'+_0x490a99+'/'+_0x552429)[_0xe7fc('0x1d')](_0x4da73b);}return null;};}function patchUpdates(_0x329051){return function(_0x763103){try{jsonpatch['apply'](_0x763103,_0x329051,!![]);}catch(_0x39c75a){return BPromise[_0xe7fc('0x1e')](_0x39c75a);}return _0x763103['save']();};}function saveUpdates(_0x587dee,_0x35bb53){return function(_0x3c31e7){if(_0x3c31e7){return _0x3c31e7[_0xe7fc('0x1f')](_0x587dee)[_0xe7fc('0x20')](function(_0x26977a){return _0x26977a;});}return null;};}function removeEntity(_0x11c5a3,_0x3f850f){return function(_0x1731b6){if(_0x1731b6){return _0x1731b6[_0xe7fc('0x21')]()[_0xe7fc('0x20')](function(){_0x11c5a3[_0xe7fc('0x16')](0xcc)[_0xe7fc('0x15')]();});}};}function handleEntityNotFound(_0x12ebdd,_0x5255b7){return function(_0x2d9e77){if(!_0x2d9e77){_0x12ebdd[_0xe7fc('0x22')](0x194);}return _0x2d9e77;};}function handleError(_0x416464,_0x3be1fd){_0x3be1fd=_0x3be1fd||0x1f4;return function(_0x2249ed){logger[_0xe7fc('0x23')](_0x2249ed['stack']);if(_0x2249ed[_0xe7fc('0x24')]){delete _0x2249ed[_0xe7fc('0x24')];}_0x416464[_0xe7fc('0x16')](_0x3be1fd)[_0xe7fc('0x25')](_0x2249ed);};}exports[_0xe7fc('0x26')]=function(_0x4416b5,_0x383ca6){var _0x4da084={},_0x36a68b={},_0x2a08a4={'count':0x0,'rows':[]};var _0x512518=_[_0xe7fc('0x27')](db['FreshdeskField'][_0xe7fc('0x28')],function(_0x27255a){return{'name':_0x27255a['fieldName'],'type':_0x27255a[_0xe7fc('0x29')]['key']};});_0x36a68b[_0xe7fc('0x2a')]=_[_0xe7fc('0x27')](_0x512518,_0xe7fc('0x24'));_0x36a68b['query']=_[_0xe7fc('0x2b')](_0x4416b5['query']);_0x36a68b[_0xe7fc('0x2c')]=_[_0xe7fc('0x2d')](_0x36a68b['model'],_0x36a68b['query']);_0x4da084['attributes']=_['intersection'](_0x36a68b[_0xe7fc('0x2a')],qs[_0xe7fc('0x2e')](_0x4416b5[_0xe7fc('0x2f')][_0xe7fc('0x2e')]));_0x4da084[_0xe7fc('0x30')]=_0x4da084[_0xe7fc('0x30')][_0xe7fc('0x31')]?_0x4da084[_0xe7fc('0x30')]:_0x36a68b[_0xe7fc('0x2a')];if(!_0x4416b5[_0xe7fc('0x2f')]['hasOwnProperty'](_0xe7fc('0x32'))){_0x4da084[_0xe7fc('0x19')]=qs[_0xe7fc('0x19')](_0x4416b5[_0xe7fc('0x2f')][_0xe7fc('0x19')]);_0x4da084['offset']=qs[_0xe7fc('0x17')](_0x4416b5[_0xe7fc('0x2f')][_0xe7fc('0x17')]);}_0x4da084[_0xe7fc('0x33')]=qs[_0xe7fc('0x34')](_0x4416b5[_0xe7fc('0x2f')][_0xe7fc('0x34')]);_0x4da084[_0xe7fc('0x35')]=qs[_0xe7fc('0x2c')](_[_0xe7fc('0x36')](_0x4416b5[_0xe7fc('0x2f')],_0x36a68b[_0xe7fc('0x2c')]),_0x512518);if(_0x4416b5['query'][_0xe7fc('0x37')]){_0x4da084[_0xe7fc('0x35')]=_[_0xe7fc('0x38')](_0x4da084[_0xe7fc('0x35')],{'$or':_[_0xe7fc('0x27')](_0x512518,function(_0x4ed2e4){if(_0x4ed2e4[_0xe7fc('0x29')]!==_0xe7fc('0x39')){var _0x112bb9={};_0x112bb9[_0x4ed2e4[_0xe7fc('0x24')]]={'$like':'%'+_0x4416b5[_0xe7fc('0x2f')][_0xe7fc('0x37')]+'%'};return _0x112bb9;}})});}_0x4da084=_['merge']({},_0x4da084,_0x4416b5['options']);var _0x582053={'where':_0x4da084['where']};return db['FreshdeskField'][_0xe7fc('0x1a')](_0x582053)[_0xe7fc('0x20')](function(_0x4cc33f){_0x2a08a4[_0xe7fc('0x1a')]=_0x4cc33f;if(_0x4416b5['query'][_0xe7fc('0x3a')]){_0x4da084[_0xe7fc('0x3b')]=[{'all':!![]}];}return db[_0xe7fc('0x3c')][_0xe7fc('0x3d')](_0x4da084);})[_0xe7fc('0x20')](function(_0x3e35c7){_0x2a08a4['rows']=_0x3e35c7;return _0x2a08a4;})[_0xe7fc('0x20')](respondWithFilteredResult(_0x383ca6,_0x4da084))['catch'](handleError(_0x383ca6,null));};exports[_0xe7fc('0x3e')]=function(_0x381bb4,_0x533f26){var _0x636368={'raw':!![],'where':{'id':_0x381bb4[_0xe7fc('0x3f')]['id']}},_0x3ce7ad={};_0x3ce7ad[_0xe7fc('0x2a')]=_[_0xe7fc('0x2b')](db[_0xe7fc('0x3c')][_0xe7fc('0x28')]);_0x3ce7ad[_0xe7fc('0x2f')]=_[_0xe7fc('0x2b')](_0x381bb4[_0xe7fc('0x2f')]);_0x3ce7ad[_0xe7fc('0x2c')]=_[_0xe7fc('0x2d')](_0x3ce7ad[_0xe7fc('0x2a')],_0x3ce7ad[_0xe7fc('0x2f')]);_0x636368[_0xe7fc('0x30')]=_[_0xe7fc('0x2d')](_0x3ce7ad[_0xe7fc('0x2a')],qs['fields'](_0x381bb4[_0xe7fc('0x2f')][_0xe7fc('0x2e')]));_0x636368[_0xe7fc('0x30')]=_0x636368['attributes'][_0xe7fc('0x31')]?_0x636368[_0xe7fc('0x30')]:_0x3ce7ad[_0xe7fc('0x2a')];if(_0x381bb4[_0xe7fc('0x2f')][_0xe7fc('0x3a')]){_0x636368['include']=[{'all':!![]}];}_0x636368=_['merge']({},_0x636368,_0x381bb4[_0xe7fc('0x40')]);return db[_0xe7fc('0x3c')][_0xe7fc('0x41')](_0x636368)[_0xe7fc('0x20')](handleEntityNotFound(_0x533f26,null))[_0xe7fc('0x20')](respondWithResult(_0x533f26,null))['catch'](handleError(_0x533f26,null));};exports[_0xe7fc('0x42')]=function(_0x2dd594,_0x2807ff){return db[_0xe7fc('0x3c')][_0xe7fc('0x42')](_0x2dd594[_0xe7fc('0x43')],{})[_0xe7fc('0x20')](respondWithResult(_0x2807ff,0xc9))[_0xe7fc('0x44')](handleError(_0x2807ff,null));};exports[_0xe7fc('0x1f')]=function(_0x45edbf,_0x533f31){if(_0x45edbf[_0xe7fc('0x43')]['id']){delete _0x45edbf['body']['id'];}return db[_0xe7fc('0x3c')][_0xe7fc('0x41')]({'where':{'id':_0x45edbf[_0xe7fc('0x3f')]['id']}})[_0xe7fc('0x20')](handleEntityNotFound(_0x533f31,null))[_0xe7fc('0x20')](saveUpdates(_0x45edbf[_0xe7fc('0x43')],null))[_0xe7fc('0x20')](respondWithResult(_0x533f31,null))[_0xe7fc('0x44')](handleError(_0x533f31,null));};exports[_0xe7fc('0x21')]=function(_0x535afb,_0x63a8bf){return db[_0xe7fc('0x3c')][_0xe7fc('0x41')]({'where':{'id':_0x535afb[_0xe7fc('0x3f')]['id']}})[_0xe7fc('0x20')](handleEntityNotFound(_0x63a8bf,null))[_0xe7fc('0x20')](removeEntity(_0x63a8bf,null))['catch'](handleError(_0x63a8bf,null));};
\ No newline at end of file
+var _0xe5b5=['ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end','offset','undefined','count','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','VIRTUAL','merge','options','FreshdeskField','includeAll','include','findAll','rows','catch','show','create','body','find','params','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'];(function(_0x1e4e3a,_0x3a2b0c){var _0xc4e8ba=function(_0x5d7aca){while(--_0x5d7aca){_0x1e4e3a['push'](_0x1e4e3a['shift']());}};_0xc4e8ba(++_0x3a2b0c);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x38f737,_0x54f685){_0x38f737=_0x38f737-0x0;var _0x7afda3=_0xe5b5[_0x38f737];return _0x7afda3;};'use strict';var emlformat=require(_0x5e5b('0x0'));var rimraf=require(_0x5e5b('0x1'));var zipdir=require(_0x5e5b('0x2'));var jsonpatch=require(_0x5e5b('0x3'));var rp=require(_0x5e5b('0x4'));var moment=require(_0x5e5b('0x5'));var BPromise=require(_0x5e5b('0x6'));var Mustache=require(_0x5e5b('0x7'));var util=require(_0x5e5b('0x8'));var path=require(_0x5e5b('0x9'));var sox=require(_0x5e5b('0xa'));var csv=require(_0x5e5b('0xb'));var ejs=require(_0x5e5b('0xc'));var fs=require('fs');var fs_extra=require(_0x5e5b('0xd'));var _=require(_0x5e5b('0xe'));var squel=require(_0x5e5b('0xf'));var crypto=require(_0x5e5b('0x10'));var jsforce=require(_0x5e5b('0x11'));var deskjs=require(_0x5e5b('0x12'));var toCsv=require(_0x5e5b('0xb'));var querystring=require(_0x5e5b('0x13'));var Papa=require(_0x5e5b('0x14'));var Redis=require(_0x5e5b('0x15'));var authService=require('../../components/auth/service');var qs=require(_0x5e5b('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5e5b('0x17'));var logger=require(_0x5e5b('0x18'))(_0x5e5b('0x19'));var utils=require(_0x5e5b('0x1a'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x310f71,_0x18434e){_0x18434e=_0x18434e||0xcc;return function(_0x4559a0){if(_0x4559a0){return _0x310f71[_0x5e5b('0x1b')](_0x18434e);}return _0x310f71[_0x5e5b('0x1c')](_0x18434e)[_0x5e5b('0x1d')]();};}function respondWithResult(_0x2e331d,_0x49edd0){_0x49edd0=_0x49edd0||0xc8;return function(_0x2b37fa){if(_0x2b37fa){return _0x2e331d[_0x5e5b('0x1c')](_0x49edd0)['json'](_0x2b37fa);}};}function respondWithFilteredResult(_0x227417,_0x578c14){return function(_0x4e9509){if(_0x4e9509){var _0x13a1cb=typeof _0x578c14[_0x5e5b('0x1e')]===_0x5e5b('0x1f')&&typeof _0x578c14['limit']===_0x5e5b('0x1f');var _0x4d490c=_0x4e9509[_0x5e5b('0x20')];var _0x45a091=_0x13a1cb?0x0:_0x578c14['offset'];var _0xe5aa6b=_0x13a1cb?_0x4e9509[_0x5e5b('0x20')]:_0x578c14[_0x5e5b('0x1e')]+_0x578c14['limit'];var _0x2bf0b7;if(_0xe5aa6b>=_0x4d490c){_0xe5aa6b=_0x4d490c;_0x2bf0b7=0xc8;}else{_0x2bf0b7=0xce;}_0x227417[_0x5e5b('0x1c')](_0x2bf0b7);return _0x227417['set'](_0x5e5b('0x21'),_0x45a091+'-'+_0xe5aa6b+'/'+_0x4d490c)[_0x5e5b('0x22')](_0x4e9509);}return null;};}function patchUpdates(_0x3c488e){return function(_0x2d8252){try{jsonpatch[_0x5e5b('0x23')](_0x2d8252,_0x3c488e,!![]);}catch(_0x33d61b){return BPromise[_0x5e5b('0x24')](_0x33d61b);}return _0x2d8252[_0x5e5b('0x25')]();};}function saveUpdates(_0x4a78e3,_0x512e46){return function(_0x256a00){if(_0x256a00){return _0x256a00[_0x5e5b('0x26')](_0x4a78e3)[_0x5e5b('0x27')](function(_0xe1c268){return _0xe1c268;});}return null;};}function removeEntity(_0x2e38ed,_0x28cd95){return function(_0x135c6c){if(_0x135c6c){return _0x135c6c[_0x5e5b('0x28')]()[_0x5e5b('0x27')](function(){_0x2e38ed[_0x5e5b('0x1c')](0xcc)[_0x5e5b('0x1d')]();});}};}function handleEntityNotFound(_0x4da321,_0x1ebb11){return function(_0x75800d){if(!_0x75800d){_0x4da321[_0x5e5b('0x1b')](0x194);}return _0x75800d;};}function handleError(_0x5a2ba8,_0x988e5d){_0x988e5d=_0x988e5d||0x1f4;return function(_0xdb2863){logger['error'](_0xdb2863[_0x5e5b('0x29')]);if(_0xdb2863[_0x5e5b('0x2a')]){delete _0xdb2863[_0x5e5b('0x2a')];}_0x5a2ba8[_0x5e5b('0x1c')](_0x988e5d)[_0x5e5b('0x2b')](_0xdb2863);};}exports[_0x5e5b('0x2c')]=function(_0x2cb695,_0x2b4351){var _0x3f6b25={},_0x42da3b={},_0xcb272c={'count':0x0,'rows':[]};var _0x28157a=_['map'](db['FreshdeskField'][_0x5e5b('0x2d')],function(_0x289f54){return{'name':_0x289f54[_0x5e5b('0x2e')],'type':_0x289f54[_0x5e5b('0x2f')][_0x5e5b('0x30')]};});_0x42da3b['model']=_[_0x5e5b('0x31')](_0x28157a,'name');_0x42da3b[_0x5e5b('0x32')]=_[_0x5e5b('0x33')](_0x2cb695[_0x5e5b('0x32')]);_0x42da3b[_0x5e5b('0x34')]=_['intersection'](_0x42da3b[_0x5e5b('0x35')],_0x42da3b[_0x5e5b('0x32')]);_0x3f6b25['attributes']=_[_0x5e5b('0x36')](_0x42da3b[_0x5e5b('0x35')],qs[_0x5e5b('0x37')](_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x37')]));_0x3f6b25[_0x5e5b('0x38')]=_0x3f6b25[_0x5e5b('0x38')][_0x5e5b('0x39')]?_0x3f6b25['attributes']:_0x42da3b[_0x5e5b('0x35')];if(!_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x3a')](_0x5e5b('0x3b'))){_0x3f6b25[_0x5e5b('0x3c')]=qs[_0x5e5b('0x3c')](_0x2cb695['query']['limit']);_0x3f6b25[_0x5e5b('0x1e')]=qs[_0x5e5b('0x1e')](_0x2cb695[_0x5e5b('0x32')]['offset']);}_0x3f6b25[_0x5e5b('0x3d')]=qs[_0x5e5b('0x3e')](_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x3e')]);_0x3f6b25['where']=qs[_0x5e5b('0x34')](_[_0x5e5b('0x3f')](_0x2cb695['query'],_0x42da3b['filters']),_0x28157a);if(_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x40')]){_0x3f6b25[_0x5e5b('0x41')]=_['merge'](_0x3f6b25[_0x5e5b('0x41')],{'$or':_['map'](_0x28157a,function(_0x5cb741){if(_0x5cb741[_0x5e5b('0x2f')]!==_0x5e5b('0x42')){var _0xef0295={};_0xef0295[_0x5cb741[_0x5e5b('0x2a')]]={'$like':'%'+_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x40')]+'%'};return _0xef0295;}})});}_0x3f6b25=_[_0x5e5b('0x43')]({},_0x3f6b25,_0x2cb695[_0x5e5b('0x44')]);var _0x1034fa={'where':_0x3f6b25['where']};return db[_0x5e5b('0x45')][_0x5e5b('0x20')](_0x1034fa)['then'](function(_0x204487){_0xcb272c['count']=_0x204487;if(_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x46')]){_0x3f6b25[_0x5e5b('0x47')]=[{'all':!![]}];}return db[_0x5e5b('0x45')][_0x5e5b('0x48')](_0x3f6b25);})[_0x5e5b('0x27')](function(_0x371550){_0xcb272c[_0x5e5b('0x49')]=_0x371550;return _0xcb272c;})[_0x5e5b('0x27')](respondWithFilteredResult(_0x2b4351,_0x3f6b25))[_0x5e5b('0x4a')](handleError(_0x2b4351,null));};exports[_0x5e5b('0x4b')]=function(_0x4e6fe2,_0x2b81dd){var _0x40e8ce={'raw':!![],'where':{'id':_0x4e6fe2['params']['id']}},_0x46fec9={};_0x46fec9[_0x5e5b('0x35')]=_[_0x5e5b('0x33')](db['FreshdeskField'][_0x5e5b('0x2d')]);_0x46fec9[_0x5e5b('0x32')]=_['keys'](_0x4e6fe2[_0x5e5b('0x32')]);_0x46fec9['filters']=_['intersection'](_0x46fec9['model'],_0x46fec9[_0x5e5b('0x32')]);_0x40e8ce['attributes']=_[_0x5e5b('0x36')](_0x46fec9['model'],qs[_0x5e5b('0x37')](_0x4e6fe2[_0x5e5b('0x32')][_0x5e5b('0x37')]));_0x40e8ce[_0x5e5b('0x38')]=_0x40e8ce[_0x5e5b('0x38')][_0x5e5b('0x39')]?_0x40e8ce[_0x5e5b('0x38')]:_0x46fec9['model'];if(_0x4e6fe2['query'][_0x5e5b('0x46')]){_0x40e8ce['include']=[{'all':!![]}];}_0x40e8ce=_['merge']({},_0x40e8ce,_0x4e6fe2['options']);return db[_0x5e5b('0x45')]['find'](_0x40e8ce)[_0x5e5b('0x27')](handleEntityNotFound(_0x2b81dd,null))[_0x5e5b('0x27')](respondWithResult(_0x2b81dd,null))[_0x5e5b('0x4a')](handleError(_0x2b81dd,null));};exports[_0x5e5b('0x4c')]=function(_0x2982e7,_0x192445){return db['FreshdeskField'][_0x5e5b('0x4c')](_0x2982e7[_0x5e5b('0x4d')],{})['then'](respondWithResult(_0x192445,0xc9))[_0x5e5b('0x4a')](handleError(_0x192445,null));};exports['update']=function(_0x41e4b3,_0x36d8fa){if(_0x41e4b3[_0x5e5b('0x4d')]['id']){delete _0x41e4b3[_0x5e5b('0x4d')]['id'];}return db['FreshdeskField'][_0x5e5b('0x4e')]({'where':{'id':_0x41e4b3[_0x5e5b('0x4f')]['id']}})['then'](handleEntityNotFound(_0x36d8fa,null))[_0x5e5b('0x27')](saveUpdates(_0x41e4b3[_0x5e5b('0x4d')],null))[_0x5e5b('0x27')](respondWithResult(_0x36d8fa,null))[_0x5e5b('0x4a')](handleError(_0x36d8fa,null));};exports[_0x5e5b('0x28')]=function(_0x5ae8d0,_0x50fc9c){return db[_0x5e5b('0x45')][_0x5e5b('0x4e')]({'where':{'id':_0x5ae8d0['params']['id']}})[_0x5e5b('0x27')](handleEntityNotFound(_0x50fc9c,null))[_0x5e5b('0x27')](removeEntity(_0x50fc9c,null))[_0x5e5b('0x4a')](handleError(_0x50fc9c,null));};
\ No newline at end of file
index 292a965..eea16ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe920=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','FreshdeskField','int_freshdesk_fields','idField','FieldId','lodash','util'];(function(_0x4d49d2,_0x25b27b){var _0x51563d=function(_0x28a77b){while(--_0x28a77b){_0x4d49d2['push'](_0x4d49d2['shift']());}};_0x51563d(++_0x25b27b);}(_0xe920,0xbe));var _0x0e92=function(_0x273dc5,_0x268a81){_0x273dc5=_0x273dc5-0x0;var _0x46dae7=_0xe920[_0x273dc5];return _0x46dae7;};'use strict';var _=require(_0x0e92('0x0'));var util=require(_0x0e92('0x1'));var logger=require(_0x0e92('0x2'))(_0x0e92('0x3'));var moment=require(_0x0e92('0x4'));var BPromise=require(_0x0e92('0x5'));var rp=require(_0x0e92('0x6'));var fs=require('fs');var path=require(_0x0e92('0x7'));var rimraf=require(_0x0e92('0x8'));var config=require(_0x0e92('0x9'));var attributes=require('./intFreshdeskField.attributes');module[_0x0e92('0xa')]=function(_0x5291e2,_0x40d9f2){return _0x5291e2[_0x0e92('0xb')](_0x0e92('0xc'),attributes,{'tableName':_0x0e92('0xd'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0x0e92('0xe'),_0x0e92('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0b27=['exports','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','./intFreshdeskField.attributes'];(function(_0x1c7996,_0x5e6929){var _0x35c93d=function(_0x3599fa){while(--_0x3599fa){_0x1c7996['push'](_0x1c7996['shift']());}};_0x35c93d(++_0x5e6929);}(_0x0b27,0xae));var _0x70b2=function(_0x1a13ed,_0x2b0398){_0x1a13ed=_0x1a13ed-0x0;var _0x35bde6=_0x0b27[_0x1a13ed];return _0x35bde6;};'use strict';var _=require(_0x70b2('0x0'));var util=require(_0x70b2('0x1'));var logger=require(_0x70b2('0x2'))('api');var moment=require(_0x70b2('0x3'));var BPromise=require(_0x70b2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x70b2('0x5'));var config=require(_0x70b2('0x6'));var attributes=require(_0x70b2('0x7'));module[_0x70b2('0x8')]=function(_0xcfcf73,_0x285031){return _0xcfcf73['define']('FreshdeskField',attributes,{'tableName':_0x70b2('0x9'),'paranoid':![],'indexes':[{'name':_0x70b2('0xa'),'fields':[_0x70b2('0xb'),_0x70b2('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 944de16..660ff45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f01=['bluebird','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x6f01,0xd0));var _0x16f0=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6f01[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require(_0x16f0('0x0'));var moment=require(_0x16f0('0x1'));var BPromise=require(_0x16f0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x16f0('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x16f0('0x4'));var config=require(_0x16f0('0x5'));var jayson=require(_0x16f0('0x6'));var client=jayson[_0x16f0('0x7')][_0x16f0('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x18f97a,_0x1410c6,_0x142160){return new BPromise(function(_0xf6f9ae,_0x263a5a){return client[_0x16f0('0x9')](_0x18f97a,_0x142160)[_0x16f0('0xa')](function(_0x3f1a18){logger[_0x16f0('0xb')](_0x16f0('0xc'),_0x1410c6,_0x16f0('0xd'));logger[_0x16f0('0xe')](_0x16f0('0xf'),_0x1410c6,_0x16f0('0xd'),JSON[_0x16f0('0x10')](_0x3f1a18));if(_0x3f1a18[_0x16f0('0x11')]){if(_0x3f1a18[_0x16f0('0x11')]['code']===0x1f4){logger[_0x16f0('0x11')](_0x16f0('0xc'),_0x1410c6,_0x3f1a18[_0x16f0('0x11')]['message']);return _0x263a5a(_0x3f1a18[_0x16f0('0x11')]['message']);}logger[_0x16f0('0x11')](_0x16f0('0xc'),_0x1410c6,_0x3f1a18[_0x16f0('0x11')][_0x16f0('0x12')]);return _0xf6f9ae(_0x3f1a18['error'][_0x16f0('0x12')]);}else{logger[_0x16f0('0xb')]('FreshdeskField,\x20%s,\x20%s',_0x1410c6,_0x16f0('0xd'));_0xf6f9ae(_0x3f1a18[_0x16f0('0x13')][_0x16f0('0x12')]);}})[_0x16f0('0x14')](function(_0x380933){logger[_0x16f0('0x11')](_0x16f0('0xc'),_0x1410c6,_0x380933);_0x263a5a(_0x380933);});});}
\ No newline at end of file
+var _0xf5b2=['../../config/logger','rpc','jayson/promise','client','http','request','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb'];(function(_0x2d991c,_0x1583d4){var _0x3d5af5=function(_0x4401aa){while(--_0x4401aa){_0x2d991c['push'](_0x2d991c['shift']());}};_0x3d5af5(++_0x1583d4);}(_0xf5b2,0x19f));var _0x2f5b=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xf5b2[_0x30ae5e];return _0x1f2e93;};'use strict';var _=require(_0x2f5b('0x0'));var util=require(_0x2f5b('0x1'));var moment=require('moment');var BPromise=require(_0x2f5b('0x2'));var rs=require(_0x2f5b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2f5b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2f5b('0x5'))(_0x2f5b('0x6'));var config=require('../../config/environment');var jayson=require(_0x2f5b('0x7'));var client=jayson[_0x2f5b('0x8')][_0x2f5b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x563070,_0x42b74a,_0x39a3ba){return new BPromise(function(_0x586cfc,_0x198d1d){return client[_0x2f5b('0xa')](_0x563070,_0x39a3ba)['then'](function(_0x54cd90){logger['info'](_0x2f5b('0xb'),_0x42b74a,_0x2f5b('0xc'));logger[_0x2f5b('0xd')](_0x2f5b('0xe'),_0x42b74a,_0x2f5b('0xc'),JSON[_0x2f5b('0xf')](_0x54cd90));if(_0x54cd90[_0x2f5b('0x10')]){if(_0x54cd90['error'][_0x2f5b('0x11')]===0x1f4){logger['error'](_0x2f5b('0xb'),_0x42b74a,_0x54cd90['error'][_0x2f5b('0x12')]);return _0x198d1d(_0x54cd90[_0x2f5b('0x10')][_0x2f5b('0x12')]);}logger[_0x2f5b('0x10')](_0x2f5b('0xb'),_0x42b74a,_0x54cd90[_0x2f5b('0x10')][_0x2f5b('0x12')]);return _0x586cfc(_0x54cd90[_0x2f5b('0x10')][_0x2f5b('0x12')]);}else{logger['info'](_0x2f5b('0xb'),_0x42b74a,_0x2f5b('0xc'));_0x586cfc(_0x54cd90[_0x2f5b('0x13')][_0x2f5b('0x12')]);}})[_0x2f5b('0x14')](function(_0x5c58e8){logger[_0x2f5b('0x10')]('FreshdeskField,\x20%s,\x20%s',_0x42b74a,_0x5c58e8);_0x198d1d(_0x5c58e8);});});}
\ No newline at end of file
index 13b8dfc..0660352 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd87e=['post','create','addConfiguration','update','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intFreshsalesAccount.controller','isAuthenticated','/:id','show','get','getConfigurations','/:id/fields','getFields'];(function(_0x135b11,_0x8b8b53){var _0x7abc52=function(_0x28717e){while(--_0x28717e){_0x135b11['push'](_0x135b11['shift']());}};_0x7abc52(++_0x8b8b53);}(_0xd87e,0x1bf));var _0xed87=function(_0x533bcc,_0x1ba26f){_0x533bcc=_0x533bcc-0x0;var _0x364d38=_0xd87e[_0x533bcc];return _0x364d38;};'use strict';var multer=require(_0xed87('0x0'));var util=require(_0xed87('0x1'));var path=require('path');var timeout=require(_0xed87('0x2'));var express=require(_0xed87('0x3'));var router=express[_0xed87('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xed87('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xed87('0x6'));var controller=require(_0xed87('0x7'));router['get']('/',auth[_0xed87('0x8')](),controller['index']);router['get'](_0xed87('0x9'),auth[_0xed87('0x8')](),controller[_0xed87('0xa')]);router[_0xed87('0xb')]('/:id/configurations',auth[_0xed87('0x8')](),controller[_0xed87('0xc')]);router[_0xed87('0xb')](_0xed87('0xd'),auth[_0xed87('0x8')](),controller[_0xed87('0xe')]);router[_0xed87('0xf')]('/',auth['isAuthenticated'](),controller[_0xed87('0x10')]);router[_0xed87('0xf')]('/:id/configurations',auth[_0xed87('0x8')](),controller[_0xed87('0x11')]);router['put']('/:id',auth[_0xed87('0x8')](),controller[_0xed87('0x12')]);router[_0xed87('0x13')](_0xed87('0x9'),auth[_0xed87('0x8')](),controller[_0xed87('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x4483=['../../components/auth/service','../../components/interaction/service','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra'];(function(_0x5e9b9f,_0x576b1c){var _0x176d49=function(_0x1a3593){while(--_0x1a3593){_0x5e9b9f['push'](_0x5e9b9f['shift']());}};_0x176d49(++_0x576b1c);}(_0x4483,0x1a3));var _0x3448=function(_0x505789,_0x48ca11){_0x505789=_0x505789-0x0;var _0x28e605=_0x4483[_0x505789];return _0x28e605;};'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/configurations',auth[_0x3448('0xa')](),controller[_0x3448('0xe')]);router[_0x3448('0x9')](_0x3448('0xf'),auth[_0x3448('0xa')](),controller[_0x3448('0x10')]);router[_0x3448('0x11')]('/',auth[_0x3448('0xa')](),controller[_0x3448('0x12')]);router[_0x3448('0x11')](_0x3448('0x13'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x3448('0x14')](_0x3448('0xc'),auth['isAuthenticated'](),controller[_0x3448('0x15')]);router[_0x3448('0x16')](_0x3448('0xc'),auth['isAuthenticated'](),controller[_0x3448('0x17')]);module[_0x3448('0x18')]=router;
\ No newline at end of file
index 4d575ed..69ad168 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb44a=['STRING'];(function(_0x53286a,_0x485c92){var _0x5730ff=function(_0x478c81){while(--_0x478c81){_0x53286a['push'](_0x53286a['shift']());}};_0x5730ff(++_0x485c92);}(_0xb44a,0x1c2));var _0xab44=function(_0x385eb1,_0x497a94){_0x385eb1=_0x385eb1-0x0;var _0x5d40eb=_0xb44a[_0x385eb1];return _0x5d40eb;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xab44('0x0')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xab44('0x0')],'unique':'username'},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xab44('0x0')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xab44('0x0')],'allowNull':![]}};
\ No newline at end of file
+var _0x8603=['remoteUri','exports','STRING'];(function(_0x141e70,_0xe92f32){var _0x154b99=function(_0x13c847){while(--_0x13c847){_0x141e70['push'](_0x141e70['shift']());}};_0x154b99(++_0xe92f32);}(_0x8603,0x190));var _0x3860=function(_0x426de2,_0x24acaf){_0x426de2=_0x426de2-0x0;var _0x1dbafc=_0x8603[_0x426de2];return _0x1dbafc;};'use strict';var Sequelize=require('sequelize');module[_0x3860('0x0')]={'name':{'type':Sequelize[_0x3860('0x1')]},'description':{'type':Sequelize[_0x3860('0x1')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'apiKey':{'type':Sequelize[_0x3860('0x1')]},'remoteUri':{'type':Sequelize[_0x3860('0x1')],'unique':_0x3860('0x2')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index b3f4c96..1f26cff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e99=['then','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','merge','where','VIRTUAL','filter','options','FreshsalesAccount','count','include','findAll','rows','catch','params','includeAll','find','create','body','getConfigurations','findOne','FreshsalesConfiguration','hasOwnProperty','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','Subjects','getFields','username','remoteUri','slice','substring','GET','format','/api/selector/owners','users','email','Requested\x20Resource\x20not\x20Found','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','limit','undefined','Content-Range','apply','reject','save','update','destroy'];(function(_0x5e208d,_0x565b29){var _0x4042ec=function(_0x4b5ecf){while(--_0x4b5ecf){_0x5e208d['push'](_0x5e208d['shift']());}};_0x4042ec(++_0x565b29);}(_0x2e99,0x182));var _0x92e9=function(_0x3a4468,_0x288644){_0x3a4468=_0x3a4468-0x0;var _0x19e2f1=_0x2e99[_0x3a4468];return _0x19e2f1;};'use strict';var emlformat=require(_0x92e9('0x0'));var rimraf=require(_0x92e9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x92e9('0x2'));var rp=require(_0x92e9('0x3'));var moment=require('moment');var BPromise=require(_0x92e9('0x4'));var Mustache=require(_0x92e9('0x5'));var util=require(_0x92e9('0x6'));var path=require(_0x92e9('0x7'));var sox=require(_0x92e9('0x8'));var csv=require(_0x92e9('0x9'));var ejs=require(_0x92e9('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x92e9('0xb'));var crypto=require(_0x92e9('0xc'));var jsforce=require(_0x92e9('0xd'));var deskjs=require(_0x92e9('0xe'));var toCsv=require(_0x92e9('0x9'));var querystring=require(_0x92e9('0xf'));var Papa=require(_0x92e9('0x10'));var Redis=require('ioredis');var authService=require(_0x92e9('0x11'));var qs=require(_0x92e9('0x12'));var as=require(_0x92e9('0x13'));var hardwareService=require(_0x92e9('0x14'));var logger=require('../../config/logger')(_0x92e9('0x15'));var utils=require(_0x92e9('0x16'));var config=require(_0x92e9('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x92e9('0x18'))['db'];var integrations=require(_0x92e9('0x19'));function respondWithStatusCode(_0x2c5beb,_0x537109){_0x537109=_0x537109||0xcc;return function(_0x556380){if(_0x556380){return _0x2c5beb[_0x92e9('0x1a')](_0x537109);}return _0x2c5beb[_0x92e9('0x1b')](_0x537109)['end']();};}function respondWithResult(_0x3eeae4,_0xfef8ef){_0xfef8ef=_0xfef8ef||0xc8;return function(_0x5786c9){if(_0x5786c9){return _0x3eeae4[_0x92e9('0x1b')](_0xfef8ef)[_0x92e9('0x1c')](_0x5786c9);}};}function respondWithFilteredResult(_0x381b91,_0x8f6edc){return function(_0x3df4f5){if(_0x3df4f5){var _0x515a7b=typeof _0x8f6edc[_0x92e9('0x1d')]==='undefined'&&typeof _0x8f6edc[_0x92e9('0x1e')]===_0x92e9('0x1f');var _0x3bb919=_0x3df4f5['count'];var _0x5f144e=_0x515a7b?0x0:_0x8f6edc['offset'];var _0x210f11=_0x515a7b?_0x3df4f5['count']:_0x8f6edc['offset']+_0x8f6edc[_0x92e9('0x1e')];var _0x187d01;if(_0x210f11>=_0x3bb919){_0x210f11=_0x3bb919;_0x187d01=0xc8;}else{_0x187d01=0xce;}_0x381b91[_0x92e9('0x1b')](_0x187d01);return _0x381b91['set'](_0x92e9('0x20'),_0x5f144e+'-'+_0x210f11+'/'+_0x3bb919)[_0x92e9('0x1c')](_0x3df4f5);}return null;};}function patchUpdates(_0x1ba94a){return function(_0x2b3949){try{jsonpatch[_0x92e9('0x21')](_0x2b3949,_0x1ba94a,!![]);}catch(_0x46308b){return BPromise[_0x92e9('0x22')](_0x46308b);}return _0x2b3949[_0x92e9('0x23')]();};}function saveUpdates(_0x5abdb9,_0x3da73d){return function(_0xf6b405){if(_0xf6b405){return _0xf6b405[_0x92e9('0x24')](_0x5abdb9)['then'](function(_0x355c5b){return _0x355c5b;});}return null;};}function removeEntity(_0x31f009,_0x250dea){return function(_0x3811fc){if(_0x3811fc){return _0x3811fc[_0x92e9('0x25')]()[_0x92e9('0x26')](function(){_0x31f009[_0x92e9('0x1b')](0xcc)[_0x92e9('0x27')]();});}};}function handleEntityNotFound(_0x2fdbeb,_0x1395dc){return function(_0x4c706f){if(!_0x4c706f){_0x2fdbeb[_0x92e9('0x1a')](0x194);}return _0x4c706f;};}function handleError(_0x4ee026,_0x236fd3){_0x236fd3=_0x236fd3||0x1f4;return function(_0x22d411){logger[_0x92e9('0x28')](_0x22d411[_0x92e9('0x29')]);if(_0x22d411[_0x92e9('0x2a')]){delete _0x22d411[_0x92e9('0x2a')];}_0x4ee026[_0x92e9('0x1b')](_0x236fd3)[_0x92e9('0x2b')](_0x22d411);};}exports[_0x92e9('0x2c')]=function(_0x4164cf,_0x247586){var _0x465199={},_0x26fe8c={},_0x232416={'count':0x0,'rows':[]};var _0x23d710=_[_0x92e9('0x2d')](db['FreshsalesAccount'][_0x92e9('0x2e')],function(_0x1ca541){return{'name':_0x1ca541[_0x92e9('0x2f')],'type':_0x1ca541[_0x92e9('0x30')][_0x92e9('0x31')]};});_0x26fe8c[_0x92e9('0x32')]=_[_0x92e9('0x2d')](_0x23d710,_0x92e9('0x2a'));_0x26fe8c[_0x92e9('0x33')]=_[_0x92e9('0x34')](_0x4164cf['query']);_0x26fe8c[_0x92e9('0x35')]=_[_0x92e9('0x36')](_0x26fe8c['model'],_0x26fe8c[_0x92e9('0x33')]);_0x465199[_0x92e9('0x37')]=_[_0x92e9('0x36')](_0x26fe8c[_0x92e9('0x32')],qs[_0x92e9('0x38')](_0x4164cf[_0x92e9('0x33')][_0x92e9('0x38')]));_0x465199['attributes']=_0x465199[_0x92e9('0x37')][_0x92e9('0x39')]?_0x465199[_0x92e9('0x37')]:_0x26fe8c[_0x92e9('0x32')];if(!_0x4164cf['query']['hasOwnProperty'](_0x92e9('0x3a'))){_0x465199[_0x92e9('0x1e')]=qs[_0x92e9('0x1e')](_0x4164cf[_0x92e9('0x33')]['limit']);_0x465199[_0x92e9('0x1d')]=qs[_0x92e9('0x1d')](_0x4164cf[_0x92e9('0x33')]['offset']);}_0x465199[_0x92e9('0x3b')]=qs[_0x92e9('0x3c')](_0x4164cf[_0x92e9('0x33')][_0x92e9('0x3c')]);_0x465199['where']=qs[_0x92e9('0x35')](_[_0x92e9('0x3d')](_0x4164cf['query'],_0x26fe8c[_0x92e9('0x35')]),_0x23d710);if(_0x4164cf[_0x92e9('0x33')]['filter']){_0x465199['where']=_[_0x92e9('0x3e')](_0x465199[_0x92e9('0x3f')],{'$or':_[_0x92e9('0x2d')](_0x23d710,function(_0x27a19c){if(_0x27a19c[_0x92e9('0x30')]!==_0x92e9('0x40')){var _0x5c6bca={};_0x5c6bca[_0x27a19c['name']]={'$like':'%'+_0x4164cf['query'][_0x92e9('0x41')]+'%'};return _0x5c6bca;}})});}_0x465199=_[_0x92e9('0x3e')]({},_0x465199,_0x4164cf[_0x92e9('0x42')]);var _0x39f81d={'where':_0x465199[_0x92e9('0x3f')]};return db[_0x92e9('0x43')]['count'](_0x39f81d)[_0x92e9('0x26')](function(_0x4fa03b){_0x232416[_0x92e9('0x44')]=_0x4fa03b;if(_0x4164cf[_0x92e9('0x33')]['includeAll']){_0x465199[_0x92e9('0x45')]=[{'all':!![]}];}return db[_0x92e9('0x43')][_0x92e9('0x46')](_0x465199);})['then'](function(_0x55ed5f){_0x232416[_0x92e9('0x47')]=_0x55ed5f;return _0x232416;})[_0x92e9('0x26')](respondWithFilteredResult(_0x247586,_0x465199))[_0x92e9('0x48')](handleError(_0x247586,null));};exports['show']=function(_0xbc1ac3,_0x1866cf){var _0x58a996={'raw':![],'where':{'id':_0xbc1ac3[_0x92e9('0x49')]['id']}},_0x170c21={};_0x170c21[_0x92e9('0x32')]=_[_0x92e9('0x34')](db[_0x92e9('0x43')][_0x92e9('0x2e')]);_0x170c21['query']=_[_0x92e9('0x34')](_0xbc1ac3['query']);_0x170c21[_0x92e9('0x35')]=_[_0x92e9('0x36')](_0x170c21[_0x92e9('0x32')],_0x170c21[_0x92e9('0x33')]);_0x58a996[_0x92e9('0x37')]=_[_0x92e9('0x36')](_0x170c21[_0x92e9('0x32')],qs[_0x92e9('0x38')](_0xbc1ac3[_0x92e9('0x33')][_0x92e9('0x38')]));_0x58a996[_0x92e9('0x37')]=_0x58a996['attributes'][_0x92e9('0x39')]?_0x58a996['attributes']:_0x170c21[_0x92e9('0x32')];if(_0xbc1ac3[_0x92e9('0x33')][_0x92e9('0x4a')]){_0x58a996['include']=[{'all':!![]}];}_0x58a996=_[_0x92e9('0x3e')]({},_0x58a996,_0xbc1ac3[_0x92e9('0x42')]);return db['FreshsalesAccount'][_0x92e9('0x4b')](_0x58a996)[_0x92e9('0x26')](handleEntityNotFound(_0x1866cf,null))[_0x92e9('0x26')](respondWithResult(_0x1866cf,null))[_0x92e9('0x48')](handleError(_0x1866cf,null));};exports[_0x92e9('0x4c')]=function(_0x2de3e4,_0x65fafe){return db[_0x92e9('0x43')]['create'](_0x2de3e4[_0x92e9('0x4d')],{})['then'](respondWithResult(_0x65fafe,0xc9))['catch'](handleError(_0x65fafe,null));};exports['update']=function(_0x3ff59d,_0x29f4a5){if(_0x3ff59d[_0x92e9('0x4d')]['id']){delete _0x3ff59d[_0x92e9('0x4d')]['id'];}return db[_0x92e9('0x43')][_0x92e9('0x4b')]({'where':{'id':_0x3ff59d[_0x92e9('0x49')]['id']}})['then'](handleEntityNotFound(_0x29f4a5,null))[_0x92e9('0x26')](saveUpdates(_0x3ff59d['body'],null))['then'](respondWithResult(_0x29f4a5,null))['catch'](handleError(_0x29f4a5,null));};exports[_0x92e9('0x25')]=function(_0x4d71cf,_0x1d37be){return db[_0x92e9('0x43')][_0x92e9('0x4b')]({'where':{'id':_0x4d71cf['params']['id']}})[_0x92e9('0x26')](handleEntityNotFound(_0x1d37be,null))['then'](removeEntity(_0x1d37be,null))[_0x92e9('0x48')](handleError(_0x1d37be,null));};exports[_0x92e9('0x4e')]=function(_0x4cf4a0,_0x1c8949,_0x201d6f){var _0x3863f2={};var _0xda6644={};var _0x35e38c;var _0xea0a32;return db[_0x92e9('0x43')][_0x92e9('0x4f')]({'where':{'id':_0x4cf4a0['params']['id']}})[_0x92e9('0x26')](handleEntityNotFound(_0x1c8949,null))[_0x92e9('0x26')](function(_0x31a9b0){if(_0x31a9b0){_0x35e38c=_0x31a9b0;_0xda6644[_0x92e9('0x32')]=_[_0x92e9('0x34')](db[_0x92e9('0x50')][_0x92e9('0x2e')]);_0xda6644[_0x92e9('0x33')]=_['keys'](_0x4cf4a0[_0x92e9('0x33')]);_0xda6644[_0x92e9('0x35')]=_[_0x92e9('0x36')](_0xda6644[_0x92e9('0x32')],_0xda6644[_0x92e9('0x33')]);_0x3863f2[_0x92e9('0x37')]=_[_0x92e9('0x36')](_0xda6644[_0x92e9('0x32')],qs[_0x92e9('0x38')](_0x4cf4a0['query'][_0x92e9('0x38')]));_0x3863f2[_0x92e9('0x37')]=_0x3863f2[_0x92e9('0x37')][_0x92e9('0x39')]?_0x3863f2[_0x92e9('0x37')]:_0xda6644[_0x92e9('0x32')];_0x3863f2[_0x92e9('0x3b')]=qs[_0x92e9('0x3c')](_0x4cf4a0[_0x92e9('0x33')][_0x92e9('0x3c')]);_0x3863f2[_0x92e9('0x3f')]=qs[_0x92e9('0x35')](_[_0x92e9('0x3d')](_0x4cf4a0[_0x92e9('0x33')],_0xda6644[_0x92e9('0x35')]));if(_0x4cf4a0['query']['filter']){_0x3863f2[_0x92e9('0x3f')]=_['merge'](_0x3863f2[_0x92e9('0x3f')],{'$or':_['map'](_0x3863f2[_0x92e9('0x37')],function(_0x48b5fc){var _0x51e8b8={};_0x51e8b8[_0x48b5fc]={'$like':'%'+_0x4cf4a0[_0x92e9('0x33')][_0x92e9('0x41')]+'%'};return _0x51e8b8;})});}_0x3863f2=_['merge']({},_0x3863f2,_0x4cf4a0[_0x92e9('0x42')]);return _0x35e38c[_0x92e9('0x4e')](_0x3863f2);}})[_0x92e9('0x26')](function(_0x206354){if(_0x206354){_0xea0a32=_0x206354[_0x92e9('0x39')];if(!_0x4cf4a0[_0x92e9('0x33')][_0x92e9('0x51')](_0x92e9('0x3a'))){_0x3863f2['limit']=qs['limit'](_0x4cf4a0[_0x92e9('0x33')][_0x92e9('0x1e')]);_0x3863f2[_0x92e9('0x1d')]=qs[_0x92e9('0x1d')](_0x4cf4a0[_0x92e9('0x33')][_0x92e9('0x1d')]);}return _0x35e38c[_0x92e9('0x4e')](_0x3863f2);}})[_0x92e9('0x26')](function(_0x2545b7){if(_0x2545b7){return _0x2545b7?{'count':_0xea0a32,'rows':_0x2545b7}:null;}})[_0x92e9('0x26')](respondWithResult(_0x1c8949,null))[_0x92e9('0x48')](handleError(_0x1c8949,null));};exports[_0x92e9('0x52')]=function(_0x59fd78,_0x291e08,_0x5caf1a){if(_0x59fd78['body']['id']){delete _0x59fd78['body']['id'];}return db[_0x92e9('0x43')]['findOne']({'where':{'id':_0x59fd78[_0x92e9('0x49')]['id']}})[_0x92e9('0x26')](handleEntityNotFound(_0x291e08,null))[_0x92e9('0x26')](function(_0x58df55){if(_0x58df55){_0x59fd78[_0x92e9('0x4d')][_0x92e9('0x53')]=_0x58df55['id'];_0x59fd78[_0x92e9('0x4d')]['Subjects']=integrations[_0x92e9('0x54')](_0x59fd78[_0x92e9('0x4d')][_0x92e9('0x55')],_0x59fd78['body'][_0x92e9('0x30')]);_0x59fd78[_0x92e9('0x4d')][_0x92e9('0x56')]=integrations[_0x92e9('0x57')](_0x59fd78[_0x92e9('0x4d')][_0x92e9('0x55')],_0x59fd78['body'][_0x92e9('0x30')]);return db[_0x92e9('0x50')]['create'](_0x59fd78[_0x92e9('0x4d')],{'include':[{'model':db[_0x92e9('0x58')],'as':_0x92e9('0x59')},{'model':db[_0x92e9('0x58')],'as':_0x92e9('0x56')}]});}return null;})['then'](respondWithResult(_0x291e08,null))[_0x92e9('0x48')](handleError(_0x291e08,null));};exports[_0x92e9('0x5a')]=function(_0x21609b,_0x4d2717,_0x186e2b){var _0x5218f8='';var _0x2e23e7='';return db[_0x92e9('0x43')][_0x92e9('0x4f')]({'where':{'id':_0x21609b[_0x92e9('0x49')]['id']},'attributes':['id',_0x92e9('0x5b'),_0x92e9('0x5c'),'apiKey']})[_0x92e9('0x26')](handleEntityNotFound(_0x4d2717,null))[_0x92e9('0x26')](function(_0x515be8){if(_0x515be8){_0x2e23e7=_0x515be8[_0x92e9('0x5b')];_0x5218f8=_0x515be8[_0x92e9('0x5c')];var _0x54c3b1=_0x515be8[_0x92e9('0x5c')][_0x92e9('0x5d')](-0x1);if(_0x54c3b1==='/'){_0x5218f8=_0x5218f8[_0x92e9('0x5e')](0x0,_0x5218f8['lastIndexOf'](_0x54c3b1));}return rp({'method':_0x92e9('0x5f'),'uri':util[_0x92e9('0x60')]('%s%s',_0x5218f8,_0x92e9('0x61')),'headers':{'Authorization':'Token\x20token='+_0x515be8['apiKey']},'json':!![]});}})[_0x92e9('0x26')](function(_0x29b1e2){if(_0x29b1e2){var _0x3e644f=_0x29b1e2[_0x92e9('0x62')];var _0x365ad8=![];var _0x2bff84=null;for(_0x2bff84=0x0;_0x2bff84<_0x3e644f[_0x92e9('0x39')];_0x2bff84++){if(_0x3e644f[_0x2bff84][_0x92e9('0x63')]===_0x2e23e7){_0x365ad8=!![];}}if(_0x365ad8){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x92e9('0x64')});}}})['then'](respondWithResult(_0x4d2717,null))[_0x92e9('0x48')](function(_0x2f1fa8){var _0x2056b9=_0x21609b['query'][_0x92e9('0x65')]?0x1f4:_0x2f1fa8['statusCode']||0x1f4;logger[_0x92e9('0x28')](_0x92e9('0x66'),_0x92e9('0x5a'),_0x2056b9,JSON[_0x92e9('0x67')](_0x2f1fa8));delete _0x2f1fa8[_0x92e9('0x2a')];if(_0x2056b9===0x191){_0x2056b9=0x190;}_0x4d2717[_0x92e9('0x1b')](_0x2056b9)['send'](_0x21609b[_0x92e9('0x33')][_0x92e9('0x65')]?{'message':_0x92e9('0x68'),'statusCode':_0x2f1fa8[_0x92e9('0x69')]}:_0x2f1fa8);});};
\ No newline at end of file
+var _0x7f31=['FreshsalesAccount','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','attributes','fields','query','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','length','options','create','body','update','find','getConfigurations','findOne','FreshsalesConfiguration','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','Subjects','username','apiKey','remoteUri','slice','substring','lastIndexOf','GET','%s%s','/api/selector/owners','Token\x20token=','users','email','statusCode','getFields,\x20%s,\x20%s,\x20%s','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','destroy','then','stack','name','send','index'];(function(_0xc72c78,_0x41eb79){var _0x2439dc=function(_0x401a68){while(--_0x401a68){_0xc72c78['push'](_0xc72c78['shift']());}};_0x2439dc(++_0x41eb79);}(_0x7f31,0xa0));var _0x17f3=function(_0x1a89a1,_0x56d889){_0x1a89a1=_0x1a89a1-0x0;var _0x3d5b46=_0x7f31[_0x1a89a1];return _0x3d5b46;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x17f3('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x17f3('0x1'));var rp=require(_0x17f3('0x2'));var moment=require(_0x17f3('0x3'));var BPromise=require(_0x17f3('0x4'));var Mustache=require(_0x17f3('0x5'));var util=require('util');var path=require('path');var sox=require(_0x17f3('0x6'));var csv=require(_0x17f3('0x7'));var ejs=require(_0x17f3('0x8'));var fs=require('fs');var fs_extra=require(_0x17f3('0x9'));var _=require('lodash');var squel=require(_0x17f3('0xa'));var crypto=require(_0x17f3('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x17f3('0x7'));var querystring=require(_0x17f3('0xc'));var Papa=require(_0x17f3('0xd'));var Redis=require(_0x17f3('0xe'));var authService=require(_0x17f3('0xf'));var qs=require(_0x17f3('0x10'));var as=require(_0x17f3('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x17f3('0x12'));var utils=require(_0x17f3('0x13'));var config=require(_0x17f3('0x14'));var licenseUtil=require(_0x17f3('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0x17f3('0x16'));function respondWithStatusCode(_0x43ac43,_0x2a474b){_0x2a474b=_0x2a474b||0xcc;return function(_0x36ef3c){if(_0x36ef3c){return _0x43ac43[_0x17f3('0x17')](_0x2a474b);}return _0x43ac43['status'](_0x2a474b)[_0x17f3('0x18')]();};}function respondWithResult(_0x3aa1f7,_0x2b3422){_0x2b3422=_0x2b3422||0xc8;return function(_0x46d5b9){if(_0x46d5b9){return _0x3aa1f7[_0x17f3('0x19')](_0x2b3422)[_0x17f3('0x1a')](_0x46d5b9);}};}function respondWithFilteredResult(_0x15925d,_0x7c6b75){return function(_0x5d2985){if(_0x5d2985){var _0x4d8c1e=typeof _0x7c6b75[_0x17f3('0x1b')]===_0x17f3('0x1c')&&typeof _0x7c6b75['limit']==='undefined';var _0xc01249=_0x5d2985[_0x17f3('0x1d')];var _0x525dac=_0x4d8c1e?0x0:_0x7c6b75['offset'];var _0x56eeff=_0x4d8c1e?_0x5d2985[_0x17f3('0x1d')]:_0x7c6b75['offset']+_0x7c6b75[_0x17f3('0x1e')];var _0x44a142;if(_0x56eeff>=_0xc01249){_0x56eeff=_0xc01249;_0x44a142=0xc8;}else{_0x44a142=0xce;}_0x15925d[_0x17f3('0x19')](_0x44a142);return _0x15925d[_0x17f3('0x1f')](_0x17f3('0x20'),_0x525dac+'-'+_0x56eeff+'/'+_0xc01249)[_0x17f3('0x1a')](_0x5d2985);}return null;};}function patchUpdates(_0x2d500c){return function(_0x3ab18b){try{jsonpatch['apply'](_0x3ab18b,_0x2d500c,!![]);}catch(_0x26e1ce){return BPromise[_0x17f3('0x21')](_0x26e1ce);}return _0x3ab18b['save']();};}function saveUpdates(_0x30b076,_0x29dfcd){return function(_0x4242d4){if(_0x4242d4){return _0x4242d4['update'](_0x30b076)['then'](function(_0xdf8814){return _0xdf8814;});}return null;};}function removeEntity(_0x1c9194,_0x369132){return function(_0x1e5ecb){if(_0x1e5ecb){return _0x1e5ecb[_0x17f3('0x22')]()[_0x17f3('0x23')](function(){_0x1c9194['status'](0xcc)[_0x17f3('0x18')]();});}};}function handleEntityNotFound(_0x26798a,_0x306341){return function(_0x1fd1d1){if(!_0x1fd1d1){_0x26798a['sendStatus'](0x194);}return _0x1fd1d1;};}function handleError(_0x73277b,_0x3f9b36){_0x3f9b36=_0x3f9b36||0x1f4;return function(_0x562377){logger['error'](_0x562377[_0x17f3('0x24')]);if(_0x562377[_0x17f3('0x25')]){delete _0x562377['name'];}_0x73277b[_0x17f3('0x19')](_0x3f9b36)[_0x17f3('0x26')](_0x562377);};}exports[_0x17f3('0x27')]=function(_0x485fbb,_0x5a6058){var _0x22b2fb={},_0x2e196d={},_0x47000f={'count':0x0,'rows':[]};var _0x14e5f9=_['map'](db[_0x17f3('0x28')][_0x17f3('0x29')],function(_0x3b6ba2){return{'name':_0x3b6ba2[_0x17f3('0x2a')],'type':_0x3b6ba2[_0x17f3('0x2b')][_0x17f3('0x2c')]};});_0x2e196d[_0x17f3('0x2d')]=_[_0x17f3('0x2e')](_0x14e5f9,'name');_0x2e196d['query']=_[_0x17f3('0x2f')](_0x485fbb['query']);_0x2e196d[_0x17f3('0x30')]=_[_0x17f3('0x31')](_0x2e196d['model'],_0x2e196d['query']);_0x22b2fb[_0x17f3('0x32')]=_['intersection'](_0x2e196d['model'],qs[_0x17f3('0x33')](_0x485fbb[_0x17f3('0x34')]['fields']));_0x22b2fb[_0x17f3('0x32')]=_0x22b2fb[_0x17f3('0x32')]['length']?_0x22b2fb[_0x17f3('0x32')]:_0x2e196d[_0x17f3('0x2d')];if(!_0x485fbb[_0x17f3('0x34')][_0x17f3('0x35')](_0x17f3('0x36'))){_0x22b2fb[_0x17f3('0x1e')]=qs[_0x17f3('0x1e')](_0x485fbb[_0x17f3('0x34')]['limit']);_0x22b2fb[_0x17f3('0x1b')]=qs[_0x17f3('0x1b')](_0x485fbb[_0x17f3('0x34')][_0x17f3('0x1b')]);}_0x22b2fb[_0x17f3('0x37')]=qs['sort'](_0x485fbb[_0x17f3('0x34')][_0x17f3('0x38')]);_0x22b2fb[_0x17f3('0x39')]=qs[_0x17f3('0x30')](_[_0x17f3('0x3a')](_0x485fbb[_0x17f3('0x34')],_0x2e196d[_0x17f3('0x30')]),_0x14e5f9);if(_0x485fbb[_0x17f3('0x34')][_0x17f3('0x3b')]){_0x22b2fb[_0x17f3('0x39')]=_[_0x17f3('0x3c')](_0x22b2fb[_0x17f3('0x39')],{'$or':_[_0x17f3('0x2e')](_0x14e5f9,function(_0x317fc6){if(_0x317fc6[_0x17f3('0x2b')]!==_0x17f3('0x3d')){var _0x158a4c={};_0x158a4c[_0x317fc6['name']]={'$like':'%'+_0x485fbb[_0x17f3('0x34')][_0x17f3('0x3b')]+'%'};return _0x158a4c;}})});}_0x22b2fb=_[_0x17f3('0x3c')]({},_0x22b2fb,_0x485fbb['options']);var _0x59390d={'where':_0x22b2fb['where']};return db['FreshsalesAccount']['count'](_0x59390d)['then'](function(_0x417ffa){_0x47000f[_0x17f3('0x1d')]=_0x417ffa;if(_0x485fbb[_0x17f3('0x34')][_0x17f3('0x3e')]){_0x22b2fb[_0x17f3('0x3f')]=[{'all':!![]}];}return db[_0x17f3('0x28')][_0x17f3('0x40')](_0x22b2fb);})[_0x17f3('0x23')](function(_0xe6a96a){_0x47000f[_0x17f3('0x41')]=_0xe6a96a;return _0x47000f;})[_0x17f3('0x23')](respondWithFilteredResult(_0x5a6058,_0x22b2fb))[_0x17f3('0x42')](handleError(_0x5a6058,null));};exports[_0x17f3('0x43')]=function(_0x3ef4d4,_0x39b357){var _0x37a323={'raw':![],'where':{'id':_0x3ef4d4[_0x17f3('0x44')]['id']}},_0x310f35={};_0x310f35['model']=_[_0x17f3('0x2f')](db['FreshsalesAccount'][_0x17f3('0x29')]);_0x310f35['query']=_[_0x17f3('0x2f')](_0x3ef4d4[_0x17f3('0x34')]);_0x310f35['filters']=_[_0x17f3('0x31')](_0x310f35[_0x17f3('0x2d')],_0x310f35['query']);_0x37a323[_0x17f3('0x32')]=_[_0x17f3('0x31')](_0x310f35['model'],qs[_0x17f3('0x33')](_0x3ef4d4[_0x17f3('0x34')][_0x17f3('0x33')]));_0x37a323['attributes']=_0x37a323[_0x17f3('0x32')][_0x17f3('0x45')]?_0x37a323[_0x17f3('0x32')]:_0x310f35[_0x17f3('0x2d')];if(_0x3ef4d4[_0x17f3('0x34')][_0x17f3('0x3e')]){_0x37a323[_0x17f3('0x3f')]=[{'all':!![]}];}_0x37a323=_[_0x17f3('0x3c')]({},_0x37a323,_0x3ef4d4[_0x17f3('0x46')]);return db[_0x17f3('0x28')]['find'](_0x37a323)[_0x17f3('0x23')](handleEntityNotFound(_0x39b357,null))[_0x17f3('0x23')](respondWithResult(_0x39b357,null))['catch'](handleError(_0x39b357,null));};exports[_0x17f3('0x47')]=function(_0xe7740,_0x1e3337){return db[_0x17f3('0x28')]['create'](_0xe7740[_0x17f3('0x48')],{})[_0x17f3('0x23')](respondWithResult(_0x1e3337,0xc9))[_0x17f3('0x42')](handleError(_0x1e3337,null));};exports[_0x17f3('0x49')]=function(_0x3db63e,_0x334ad9){if(_0x3db63e[_0x17f3('0x48')]['id']){delete _0x3db63e[_0x17f3('0x48')]['id'];}return db[_0x17f3('0x28')][_0x17f3('0x4a')]({'where':{'id':_0x3db63e[_0x17f3('0x44')]['id']}})[_0x17f3('0x23')](handleEntityNotFound(_0x334ad9,null))[_0x17f3('0x23')](saveUpdates(_0x3db63e[_0x17f3('0x48')],null))[_0x17f3('0x23')](respondWithResult(_0x334ad9,null))[_0x17f3('0x42')](handleError(_0x334ad9,null));};exports[_0x17f3('0x22')]=function(_0x22e344,_0x4117b4){return db[_0x17f3('0x28')][_0x17f3('0x4a')]({'where':{'id':_0x22e344[_0x17f3('0x44')]['id']}})[_0x17f3('0x23')](handleEntityNotFound(_0x4117b4,null))[_0x17f3('0x23')](removeEntity(_0x4117b4,null))[_0x17f3('0x42')](handleError(_0x4117b4,null));};exports[_0x17f3('0x4b')]=function(_0x25e614,_0x55653a,_0x61338b){var _0x461754={};var _0x1da66d={};var _0x40dbd0;var _0x11821f;return db[_0x17f3('0x28')][_0x17f3('0x4c')]({'where':{'id':_0x25e614[_0x17f3('0x44')]['id']}})[_0x17f3('0x23')](handleEntityNotFound(_0x55653a,null))[_0x17f3('0x23')](function(_0x3a9baa){if(_0x3a9baa){_0x40dbd0=_0x3a9baa;_0x1da66d[_0x17f3('0x2d')]=_[_0x17f3('0x2f')](db[_0x17f3('0x4d')][_0x17f3('0x29')]);_0x1da66d[_0x17f3('0x34')]=_['keys'](_0x25e614[_0x17f3('0x34')]);_0x1da66d['filters']=_['intersection'](_0x1da66d[_0x17f3('0x2d')],_0x1da66d[_0x17f3('0x34')]);_0x461754[_0x17f3('0x32')]=_[_0x17f3('0x31')](_0x1da66d[_0x17f3('0x2d')],qs['fields'](_0x25e614[_0x17f3('0x34')][_0x17f3('0x33')]));_0x461754[_0x17f3('0x32')]=_0x461754['attributes'][_0x17f3('0x45')]?_0x461754[_0x17f3('0x32')]:_0x1da66d[_0x17f3('0x2d')];_0x461754[_0x17f3('0x37')]=qs['sort'](_0x25e614[_0x17f3('0x34')][_0x17f3('0x38')]);_0x461754[_0x17f3('0x39')]=qs[_0x17f3('0x30')](_[_0x17f3('0x3a')](_0x25e614[_0x17f3('0x34')],_0x1da66d[_0x17f3('0x30')]));if(_0x25e614[_0x17f3('0x34')][_0x17f3('0x3b')]){_0x461754[_0x17f3('0x39')]=_[_0x17f3('0x3c')](_0x461754['where'],{'$or':_[_0x17f3('0x2e')](_0x461754[_0x17f3('0x32')],function(_0xa2ee06){var _0x4e50ec={};_0x4e50ec[_0xa2ee06]={'$like':'%'+_0x25e614[_0x17f3('0x34')][_0x17f3('0x3b')]+'%'};return _0x4e50ec;})});}_0x461754=_[_0x17f3('0x3c')]({},_0x461754,_0x25e614[_0x17f3('0x46')]);return _0x40dbd0[_0x17f3('0x4b')](_0x461754);}})['then'](function(_0x527f0a){if(_0x527f0a){_0x11821f=_0x527f0a[_0x17f3('0x45')];if(!_0x25e614['query']['hasOwnProperty'](_0x17f3('0x36'))){_0x461754[_0x17f3('0x1e')]=qs[_0x17f3('0x1e')](_0x25e614[_0x17f3('0x34')]['limit']);_0x461754[_0x17f3('0x1b')]=qs[_0x17f3('0x1b')](_0x25e614[_0x17f3('0x34')][_0x17f3('0x1b')]);}return _0x40dbd0[_0x17f3('0x4b')](_0x461754);}})[_0x17f3('0x23')](function(_0x19e445){if(_0x19e445){return _0x19e445?{'count':_0x11821f,'rows':_0x19e445}:null;}})[_0x17f3('0x23')](respondWithResult(_0x55653a,null))[_0x17f3('0x42')](handleError(_0x55653a,null));};exports[_0x17f3('0x4e')]=function(_0x1355d3,_0x385f45,_0x205272){if(_0x1355d3[_0x17f3('0x48')]['id']){delete _0x1355d3[_0x17f3('0x48')]['id'];}return db[_0x17f3('0x28')][_0x17f3('0x4c')]({'where':{'id':_0x1355d3[_0x17f3('0x44')]['id']}})[_0x17f3('0x23')](handleEntityNotFound(_0x385f45,null))[_0x17f3('0x23')](function(_0x27f02f){if(_0x27f02f){_0x1355d3[_0x17f3('0x48')][_0x17f3('0x4f')]=_0x27f02f['id'];_0x1355d3[_0x17f3('0x48')]['Subjects']=integrations[_0x17f3('0x50')](_0x1355d3[_0x17f3('0x48')][_0x17f3('0x51')],_0x1355d3[_0x17f3('0x48')][_0x17f3('0x2b')]);_0x1355d3[_0x17f3('0x48')][_0x17f3('0x52')]=integrations[_0x17f3('0x53')](_0x1355d3[_0x17f3('0x48')][_0x17f3('0x51')],_0x1355d3[_0x17f3('0x48')][_0x17f3('0x2b')]);return db['FreshsalesConfiguration'][_0x17f3('0x47')](_0x1355d3[_0x17f3('0x48')],{'include':[{'model':db[_0x17f3('0x54')],'as':_0x17f3('0x55')},{'model':db[_0x17f3('0x54')],'as':_0x17f3('0x52')}]});}return null;})[_0x17f3('0x23')](respondWithResult(_0x385f45,null))[_0x17f3('0x42')](handleError(_0x385f45,null));};exports['getFields']=function(_0x3b9357,_0x22086d,_0x4cc1fe){var _0x3d43fa='';var _0x155c5b='';return db[_0x17f3('0x28')]['findOne']({'where':{'id':_0x3b9357['params']['id']},'attributes':['id',_0x17f3('0x56'),'remoteUri',_0x17f3('0x57')]})[_0x17f3('0x23')](handleEntityNotFound(_0x22086d,null))[_0x17f3('0x23')](function(_0x2212b1){if(_0x2212b1){_0x155c5b=_0x2212b1[_0x17f3('0x56')];_0x3d43fa=_0x2212b1[_0x17f3('0x58')];var _0x36be2e=_0x2212b1['remoteUri'][_0x17f3('0x59')](-0x1);if(_0x36be2e==='/'){_0x3d43fa=_0x3d43fa[_0x17f3('0x5a')](0x0,_0x3d43fa[_0x17f3('0x5b')](_0x36be2e));}return rp({'method':_0x17f3('0x5c'),'uri':util['format'](_0x17f3('0x5d'),_0x3d43fa,_0x17f3('0x5e')),'headers':{'Authorization':_0x17f3('0x5f')+_0x2212b1[_0x17f3('0x57')]},'json':!![]});}})['then'](function(_0x3143de){if(_0x3143de){var _0x2840a2=_0x3143de[_0x17f3('0x60')];var _0x229618=![];var _0x33fda8=null;for(_0x33fda8=0x0;_0x33fda8<_0x2840a2['length'];_0x33fda8++){if(_0x2840a2[_0x33fda8][_0x17f3('0x61')]===_0x155c5b){_0x229618=!![];}}if(_0x229618){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})[_0x17f3('0x23')](respondWithResult(_0x22086d,null))['catch'](function(_0x44ae0d){var _0x2f4f99=_0x3b9357['query']['test']?0x1f4:_0x44ae0d[_0x17f3('0x62')]||0x1f4;logger['error'](_0x17f3('0x63'),'getFields',_0x2f4f99,JSON['stringify'](_0x44ae0d));delete _0x44ae0d[_0x17f3('0x25')];if(_0x2f4f99===0x191){_0x2f4f99=0x190;}_0x22086d[_0x17f3('0x19')](_0x2f4f99)[_0x17f3('0x26')](_0x3b9357[_0x17f3('0x34')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x44ae0d[_0x17f3('0x62')]}:_0x44ae0d);});};
\ No newline at end of file
index 2932f6d..ee21331 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5af=['FreshsalesAccount','int_freshsales_accounts','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../components/integrations/configuration','exports','define'];(function(_0x549d3a,_0x42ff6e){var _0x573922=function(_0x3eff89){while(--_0x3eff89){_0x549d3a['push'](_0x549d3a['shift']());}};_0x573922(++_0x42ff6e);}(_0xe5af,0x9c));var _0xfe5a=function(_0x341c7d,_0x4ca460){_0x341c7d=_0x341c7d-0x0;var _0x5ab893=_0xe5af[_0x341c7d];return _0x5ab893;};'use strict';var _=require('lodash');var util=require(_0xfe5a('0x0'));var logger=require(_0xfe5a('0x1'))('api');var moment=require(_0xfe5a('0x2'));var BPromise=require(_0xfe5a('0x3'));var rp=require(_0xfe5a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfe5a('0x5'));var config=require('../../config/environment');var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0xfe5a('0x6'));module[_0xfe5a('0x7')]=function(_0x4e418f,_0x5eea2e){return _0x4e418f[_0xfe5a('0x8')](_0xfe5a('0x9'),attributes,{'tableName':_0xfe5a('0xa'),'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(_0x10b6bf,_0x446021){var _0x33e8ee=function(_0x26deee){while(--_0x26deee){_0x10b6bf['push'](_0x10b6bf['shift']());}};_0x33e8ee(++_0x446021);}(_0x9f0e,0x116));var _0xe9f0=function(_0x5e2893,_0x42689e){_0x5e2893=_0x5e2893-0x0;var _0x31c185=_0x9f0e[_0x5e2893];return _0x31c185;};'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 a4cfb41..b8aaf48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2da6=['info','FreshsalesAccount,\x20%s,\x20%s','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','FreshsalesAccount','options','raw','where','attributes','include','map','model','GetFreshsalesAccount','ShowFreshsalesAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then'];(function(_0x31ac72,_0x467dcb){var _0xe4325a=function(_0x14c93c){while(--_0x14c93c){_0x31ac72['push'](_0x31ac72['shift']());}};_0xe4325a(++_0x467dcb);}(_0x2da6,0x1dd));var _0x62da=function(_0x5ec366,_0xd3f4c2){_0x5ec366=_0x5ec366-0x0;var _0x57d1f8=_0x2da6[_0x5ec366];return _0x57d1f8;};'use strict';var _=require(_0x62da('0x0'));var util=require(_0x62da('0x1'));var moment=require(_0x62da('0x2'));var BPromise=require(_0x62da('0x3'));var rs=require(_0x62da('0x4'));var fs=require('fs');var Redis=require(_0x62da('0x5'));var db=require(_0x62da('0x6'))['db'];var utils=require(_0x62da('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x62da('0x8'));var jayson=require(_0x62da('0x9'));var client=jayson[_0x62da('0xa')][_0x62da('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x100e73,_0x9d9139,_0x310c15){return new BPromise(function(_0x16f919,_0xbfd2b0){return client['request'](_0x100e73,_0x310c15)[_0x62da('0xc')](function(_0x2a3937){logger[_0x62da('0xd')](_0x62da('0xe'),_0x9d9139,'request\x20sent');logger[_0x62da('0xf')](_0x62da('0x10'),_0x9d9139,_0x62da('0x11'),JSON[_0x62da('0x12')](_0x2a3937));if(_0x2a3937[_0x62da('0x13')]){if(_0x2a3937['error'][_0x62da('0x14')]===0x1f4){logger[_0x62da('0x13')](_0x62da('0xe'),_0x9d9139,_0x2a3937[_0x62da('0x13')][_0x62da('0x15')]);return _0xbfd2b0(_0x2a3937['error']['message']);}logger[_0x62da('0x13')](_0x62da('0xe'),_0x9d9139,_0x2a3937[_0x62da('0x13')][_0x62da('0x15')]);return _0x16f919(_0x2a3937[_0x62da('0x13')][_0x62da('0x15')]);}else{logger[_0x62da('0xd')](_0x62da('0xe'),_0x9d9139,_0x62da('0x11'));_0x16f919(_0x2a3937[_0x62da('0x16')][_0x62da('0x15')]);}})[_0x62da('0x17')](function(_0x1f6bc8){logger[_0x62da('0x13')]('FreshsalesAccount,\x20%s,\x20%s',_0x9d9139,_0x1f6bc8);_0xbfd2b0(_0x1f6bc8);});});}exports['GetFreshsalesAccount']=function(_0xa7050b){var _0x4ae4fb=this;return new Promise(function(_0x4d6482,_0x264366){return db[_0x62da('0x18')]['findAll']({'raw':_0xa7050b[_0x62da('0x19')]?_0xa7050b['options'][_0x62da('0x1a')]===undefined?!![]:![]:!![],'where':_0xa7050b[_0x62da('0x19')]?_0xa7050b[_0x62da('0x19')][_0x62da('0x1b')]||null:null,'attributes':_0xa7050b[_0x62da('0x19')]?_0xa7050b[_0x62da('0x19')][_0x62da('0x1c')]||null:null,'limit':_0xa7050b[_0x62da('0x19')]?_0xa7050b[_0x62da('0x19')]['limit']||null:null,'include':_0xa7050b[_0x62da('0x19')]?_0xa7050b[_0x62da('0x19')][_0x62da('0x1d')]?_[_0x62da('0x1e')](_0xa7050b[_0x62da('0x19')][_0x62da('0x1d')],function(_0x24298a){return{'model':db[_0x24298a['model']],'as':_0x24298a['as'],'attributes':_0x24298a['attributes'],'include':_0x24298a['include']?_[_0x62da('0x1e')](_0x24298a[_0x62da('0x1d')],function(_0x14897c){return{'model':db[_0x14897c[_0x62da('0x1f')]],'as':_0x14897c['as'],'attributes':_0x14897c['attributes'],'include':_0x14897c[_0x62da('0x1d')]?_[_0x62da('0x1e')](_0x14897c['include'],function(_0x3ccf96){return{'model':db[_0x3ccf96[_0x62da('0x1f')]],'as':_0x3ccf96['as'],'attributes':_0x3ccf96[_0x62da('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x41de3a){logger[_0x62da('0xd')](_0x62da('0x20'),_0xa7050b);logger['debug']('GetFreshsalesAccount',_0xa7050b,JSON[_0x62da('0x12')](_0x41de3a));_0x4d6482(_0x41de3a);})[_0x62da('0x17')](function(_0x220ffc){logger['error'](_0x62da('0x20'),_0x220ffc[_0x62da('0x15')],_0xa7050b);_0x264366(_0x4ae4fb[_0x62da('0x13')](0x1f4,_0x220ffc[_0x62da('0x15')]));});});};exports[_0x62da('0x21')]=function(_0x1cf765){var _0x592c6c=this;return new Promise(function(_0xbe398f,_0x4f71bc){return db[_0x62da('0x18')][_0x62da('0x22')]({'raw':_0x1cf765[_0x62da('0x19')]?_0x1cf765[_0x62da('0x19')][_0x62da('0x1a')]===undefined?!![]:![]:!![],'where':_0x1cf765[_0x62da('0x19')]?_0x1cf765['options'][_0x62da('0x1b')]||null:null,'attributes':_0x1cf765[_0x62da('0x19')]?_0x1cf765[_0x62da('0x19')]['attributes']||null:null,'include':_0x1cf765[_0x62da('0x19')]?_0x1cf765[_0x62da('0x19')][_0x62da('0x1d')]?_['map'](_0x1cf765[_0x62da('0x19')][_0x62da('0x1d')],function(_0x55eda7){return{'model':db[_0x55eda7[_0x62da('0x1f')]],'as':_0x55eda7['as'],'attributes':_0x55eda7[_0x62da('0x1c')],'include':_0x55eda7['include']?_[_0x62da('0x1e')](_0x55eda7[_0x62da('0x1d')],function(_0x11bf73){return{'model':db[_0x11bf73[_0x62da('0x1f')]],'as':_0x11bf73['as'],'attributes':_0x11bf73[_0x62da('0x1c')],'include':_0x11bf73[_0x62da('0x1d')]?_[_0x62da('0x1e')](_0x11bf73[_0x62da('0x1d')],function(_0x2f1115){return{'model':db[_0x2f1115[_0x62da('0x1f')]],'as':_0x2f1115['as'],'attributes':_0x2f1115[_0x62da('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x62da('0xc')](function(_0x3057f6){logger[_0x62da('0xd')](_0x62da('0x21'),_0x1cf765);logger[_0x62da('0xf')](_0x62da('0x21'),_0x1cf765,JSON['stringify'](_0x3057f6));_0xbe398f(_0x3057f6);})[_0x62da('0x17')](function(_0x5e9295){logger[_0x62da('0x13')](_0x62da('0x21'),_0x5e9295[_0x62da('0x15')],_0x1cf765);_0x4f71bc(_0x592c6c['error'](0x1f4,_0x5e9295[_0x62da('0x15')]));});});};
\ No newline at end of file
+var _0x5fab=['map','model','info','ShowFreshsalesAccount','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FreshsalesAccount,\x20%s,\x20%s','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','include','attributes'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x5fab,0x177));var _0xb5fa=function(_0x143620,_0x2738da){_0x143620=_0x143620-0x0;var _0x24fcec=_0x5fab[_0x143620];return _0x24fcec;};'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']('FreshsalesAccount,\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')]('FreshsalesAccount,\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']('FreshsalesAccount,\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);});});}exports[_0xb5fa('0x18')]=function(_0x32e9e5){var _0x46eef0=this;return new Promise(function(_0x324ba5,_0x13e82b){return db[_0xb5fa('0x19')][_0xb5fa('0x1a')]({'raw':_0x32e9e5[_0xb5fa('0x1b')]?_0x32e9e5[_0xb5fa('0x1b')][_0xb5fa('0x1c')]===undefined?!![]:![]:!![],'where':_0x32e9e5[_0xb5fa('0x1b')]?_0x32e9e5['options'][_0xb5fa('0x1d')]||null:null,'attributes':_0x32e9e5['options']?_0x32e9e5[_0xb5fa('0x1b')]['attributes']||null:null,'limit':_0x32e9e5[_0xb5fa('0x1b')]?_0x32e9e5[_0xb5fa('0x1b')]['limit']||null:null,'include':_0x32e9e5[_0xb5fa('0x1b')]?_0x32e9e5[_0xb5fa('0x1b')][_0xb5fa('0x1e')]?_['map'](_0x32e9e5[_0xb5fa('0x1b')][_0xb5fa('0x1e')],function(_0x444237){return{'model':db[_0x444237['model']],'as':_0x444237['as'],'attributes':_0x444237[_0xb5fa('0x1f')],'include':_0x444237['include']?_[_0xb5fa('0x20')](_0x444237[_0xb5fa('0x1e')],function(_0x11053a){return{'model':db[_0x11053a[_0xb5fa('0x21')]],'as':_0x11053a['as'],'attributes':_0x11053a[_0xb5fa('0x1f')],'include':_0x11053a[_0xb5fa('0x1e')]?_[_0xb5fa('0x20')](_0x11053a[_0xb5fa('0x1e')],function(_0x568870){return{'model':db[_0x568870['model']],'as':_0x568870['as'],'attributes':_0x568870['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x28a350){logger[_0xb5fa('0x22')](_0xb5fa('0x18'),_0x32e9e5);logger[_0xb5fa('0xf')](_0xb5fa('0x18'),_0x32e9e5,JSON[_0xb5fa('0x11')](_0x28a350));_0x324ba5(_0x28a350);})[_0xb5fa('0x17')](function(_0x353314){logger[_0xb5fa('0x12')](_0xb5fa('0x18'),_0x353314[_0xb5fa('0x14')],_0x32e9e5);_0x13e82b(_0x46eef0[_0xb5fa('0x12')](0x1f4,_0x353314[_0xb5fa('0x14')]));});});};exports[_0xb5fa('0x23')]=function(_0xed02e){var _0x116773=this;return new Promise(function(_0x5a0152,_0x3fd1fb){return db[_0xb5fa('0x19')][_0xb5fa('0x24')]({'raw':_0xed02e[_0xb5fa('0x1b')]?_0xed02e[_0xb5fa('0x1b')][_0xb5fa('0x1c')]===undefined?!![]:![]:!![],'where':_0xed02e[_0xb5fa('0x1b')]?_0xed02e['options'][_0xb5fa('0x1d')]||null:null,'attributes':_0xed02e['options']?_0xed02e['options']['attributes']||null:null,'include':_0xed02e[_0xb5fa('0x1b')]?_0xed02e['options'][_0xb5fa('0x1e')]?_['map'](_0xed02e['options'][_0xb5fa('0x1e')],function(_0x934b49){return{'model':db[_0x934b49['model']],'as':_0x934b49['as'],'attributes':_0x934b49['attributes'],'include':_0x934b49[_0xb5fa('0x1e')]?_[_0xb5fa('0x20')](_0x934b49[_0xb5fa('0x1e')],function(_0x560b53){return{'model':db[_0x560b53[_0xb5fa('0x21')]],'as':_0x560b53['as'],'attributes':_0x560b53[_0xb5fa('0x1f')],'include':_0x560b53['include']?_[_0xb5fa('0x20')](_0x560b53[_0xb5fa('0x1e')],function(_0x204d6b){return{'model':db[_0x204d6b['model']],'as':_0x204d6b['as'],'attributes':_0x204d6b[_0xb5fa('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb5fa('0xd')](function(_0x24ef11){logger['info'](_0xb5fa('0x23'),_0xed02e);logger[_0xb5fa('0xf')](_0xb5fa('0x23'),_0xed02e,JSON[_0xb5fa('0x11')](_0x24ef11));_0x5a0152(_0x24ef11);})['catch'](function(_0x4bba91){logger['error']('ShowFreshsalesAccount',_0x4bba91['message'],_0xed02e);_0x3fd1fb(_0x116773['error'](0x1f4,_0x4bba91[_0xb5fa('0x14')]));});});};
\ No newline at end of file
index 4d011fa..bfd46b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8335=['../../config/environment','./intFreshsalesConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/subjects','getDescriptions','getFields','put','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x212d2d,_0x53a4f6){var _0x38f0fd=function(_0x1300b2){while(--_0x1300b2){_0x212d2d['push'](_0x212d2d['shift']());}};_0x38f0fd(++_0x53a4f6);}(_0x8335,0xcb));var _0x5833=function(_0x2fc4af,_0x15d582){_0x2fc4af=_0x2fc4af-0x0;var _0x41d60a=_0x8335[_0x2fc4af];return _0x41d60a;};'use strict';var multer=require(_0x5833('0x0'));var util=require(_0x5833('0x1'));var path=require(_0x5833('0x2'));var timeout=require(_0x5833('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5833('0x4'));var auth=require(_0x5833('0x5'));var interaction=require(_0x5833('0x6'));var config=require(_0x5833('0x7'));var controller=require(_0x5833('0x8'));router['get']('/',auth[_0x5833('0x9')](),controller[_0x5833('0xa')]);router[_0x5833('0xb')](_0x5833('0xc'),auth[_0x5833('0x9')](),controller[_0x5833('0xd')]);router['get'](_0x5833('0xe'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x5833('0xb')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x5833('0xf')]);router[_0x5833('0xb')]('/:id/fields',auth['isAuthenticated'](),controller[_0x5833('0x10')]);router['post']('/',auth[_0x5833('0x9')](),controller['create']);router[_0x5833('0x11')](_0x5833('0xc'),auth[_0x5833('0x9')](),controller['update']);router[_0x5833('0x12')](_0x5833('0xc'),auth[_0x5833('0x9')](),controller[_0x5833('0x13')]);module[_0x5833('0x14')]=router;
\ No newline at end of file
+var _0x2458=['getDescriptions','/:id/fields','getFields','post','create','put','/:id','update','delete','exports','multer','express','Router','fs-extra','../../components/auth/service','../../config/environment','index','get','isAuthenticated','/:id/subjects'];(function(_0x36c5d9,_0x228005){var _0x185f60=function(_0x1b13ab){while(--_0x1b13ab){_0x36c5d9['push'](_0x36c5d9['shift']());}};_0x185f60(++_0x228005);}(_0x2458,0xbe));var _0x8245=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x2458[_0x59ee6f];return _0x4c0979;};'use strict';var multer=require(_0x8245('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8245('0x1'));var router=express[_0x8245('0x2')]();var fs_extra=require(_0x8245('0x3'));var auth=require(_0x8245('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8245('0x5'));var controller=require('./intFreshsalesConfiguration.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x8245('0x6')]);router[_0x8245('0x7')]('/:id',auth[_0x8245('0x8')](),controller['show']);router['get'](_0x8245('0x9'),auth[_0x8245('0x8')](),controller['getSubjects']);router[_0x8245('0x7')]('/:id/descriptions',auth[_0x8245('0x8')](),controller[_0x8245('0xa')]);router[_0x8245('0x7')](_0x8245('0xb'),auth['isAuthenticated'](),controller[_0x8245('0xc')]);router[_0x8245('0xd')]('/',auth[_0x8245('0x8')](),controller[_0x8245('0xe')]);router[_0x8245('0xf')](_0x8245('0x10'),auth['isAuthenticated'](),controller[_0x8245('0x11')]);router[_0x8245('0x12')](_0x8245('0x10'),auth['isAuthenticated'](),controller['destroy']);module[_0x8245('0x13')]=router;
\ No newline at end of file
index cfbd0de..ec6779f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88f7=['STRING'];(function(_0x1ca3ea,_0x2f02ed){var _0x180ae5=function(_0x1b449a){while(--_0x1b449a){_0x1ca3ea['push'](_0x1ca3ea['shift']());}};_0x180ae5(++_0x2f02ed);}(_0x88f7,0x1af));var _0x788f=function(_0x15c421,_0x6366f7){_0x15c421=_0x15c421-0x0;var _0x5e5ed5=_0x88f7[_0x15c421];return _0x5e5ed5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x788f('0x0')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9109=['STRING','sequelize','exports'];(function(_0xab92ba,_0x23dd74){var _0x1f5f69=function(_0x4b7a6f){while(--_0x4b7a6f){_0xab92ba['push'](_0xab92ba['shift']());}};_0x1f5f69(++_0x23dd74);}(_0x9109,0x133));var _0x9910=function(_0x386525,_0xefae6){_0x386525=_0x386525-0x0;var _0x14d015=_0x9109[_0x386525];return _0x14d015;};'use strict';var Sequelize=require(_0x9910('0x0'));module[_0x9910('0x1')]={'name':{'type':Sequelize[_0x9910('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a2340fa..c7f76c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf941=['../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','then','end','error','stack','name','index','map','FreshsalesConfiguration','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','length','includeAll','find','create','body','getSubjects','findOne','rawAttributes','order','filter','FreshsalesField','getDescriptions','getFields','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment'];(function(_0x35618f,_0x4bedc5){var _0x21b1c3=function(_0x22dfee){while(--_0x22dfee){_0x35618f['push'](_0x35618f['shift']());}};_0x21b1c3(++_0x4bedc5);}(_0xf941,0x135));var _0x1f94=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xf941[_0x6131cd];return _0x47e916;};'use strict';var emlformat=require(_0x1f94('0x0'));var rimraf=require(_0x1f94('0x1'));var zipdir=require(_0x1f94('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1f94('0x3'));var moment=require(_0x1f94('0x4'));var BPromise=require(_0x1f94('0x5'));var Mustache=require(_0x1f94('0x6'));var util=require(_0x1f94('0x7'));var path=require(_0x1f94('0x8'));var sox=require(_0x1f94('0x9'));var csv=require(_0x1f94('0xa'));var ejs=require(_0x1f94('0xb'));var fs=require('fs');var fs_extra=require(_0x1f94('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x1f94('0xd'));var jsforce=require(_0x1f94('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x1f94('0xa'));var querystring=require(_0x1f94('0xf'));var Papa=require(_0x1f94('0x10'));var Redis=require(_0x1f94('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x1f94('0x12'));var as=require(_0x1f94('0x13'));var hardwareService=require(_0x1f94('0x14'));var logger=require('../../config/logger')(_0x1f94('0x15'));var utils=require('../../config/utils');var config=require(_0x1f94('0x16'));var licenseUtil=require(_0x1f94('0x17'));var db=require(_0x1f94('0x18'))['db'];function respondWithStatusCode(_0x50d0a7,_0x2565fc){_0x2565fc=_0x2565fc||0xcc;return function(_0x2d53c1){if(_0x2d53c1){return _0x50d0a7[_0x1f94('0x19')](_0x2565fc);}return _0x50d0a7['status'](_0x2565fc)['end']();};}function respondWithResult(_0x59eeba,_0x4c3c60){_0x4c3c60=_0x4c3c60||0xc8;return function(_0x2eeb25){if(_0x2eeb25){return _0x59eeba[_0x1f94('0x1a')](_0x4c3c60)['json'](_0x2eeb25);}};}function respondWithFilteredResult(_0x5c00d8,_0x5acd5e){return function(_0x487c65){if(_0x487c65){var _0xcbdee4=typeof _0x5acd5e[_0x1f94('0x1b')]===_0x1f94('0x1c')&&typeof _0x5acd5e[_0x1f94('0x1d')]===_0x1f94('0x1c');var _0x5b4d8a=_0x487c65[_0x1f94('0x1e')];var _0x58265d=_0xcbdee4?0x0:_0x5acd5e[_0x1f94('0x1b')];var _0x4e59c8=_0xcbdee4?_0x487c65[_0x1f94('0x1e')]:_0x5acd5e['offset']+_0x5acd5e[_0x1f94('0x1d')];var _0x6d430e;if(_0x4e59c8>=_0x5b4d8a){_0x4e59c8=_0x5b4d8a;_0x6d430e=0xc8;}else{_0x6d430e=0xce;}_0x5c00d8['status'](_0x6d430e);return _0x5c00d8[_0x1f94('0x1f')](_0x1f94('0x20'),_0x58265d+'-'+_0x4e59c8+'/'+_0x5b4d8a)[_0x1f94('0x21')](_0x487c65);}return null;};}function patchUpdates(_0x279695){return function(_0x59bbba){try{jsonpatch[_0x1f94('0x22')](_0x59bbba,_0x279695,!![]);}catch(_0x2d2176){return BPromise['reject'](_0x2d2176);}return _0x59bbba[_0x1f94('0x23')]();};}function saveUpdates(_0x2259b2,_0x177e0f){return function(_0x1b7088){if(_0x1b7088){return _0x1b7088[_0x1f94('0x24')](_0x2259b2)['then'](function(_0x37a8c9){return _0x37a8c9;});}return null;};}function removeEntity(_0x28b284,_0x344478){return function(_0x2fea11){if(_0x2fea11){return _0x2fea11[_0x1f94('0x25')]()[_0x1f94('0x26')](function(){_0x28b284[_0x1f94('0x1a')](0xcc)[_0x1f94('0x27')]();});}};}function handleEntityNotFound(_0x151383,_0x10074c){return function(_0xe6b429){if(!_0xe6b429){_0x151383['sendStatus'](0x194);}return _0xe6b429;};}function handleError(_0xa1d44,_0x2863c8){_0x2863c8=_0x2863c8||0x1f4;return function(_0x2637ab){logger[_0x1f94('0x28')](_0x2637ab[_0x1f94('0x29')]);if(_0x2637ab[_0x1f94('0x2a')]){delete _0x2637ab[_0x1f94('0x2a')];}_0xa1d44[_0x1f94('0x1a')](_0x2863c8)['send'](_0x2637ab);};}exports[_0x1f94('0x2b')]=function(_0x1064a4,_0x5f28f4){var _0x2f44b0={},_0x18fdb5={},_0x18266f={'count':0x0,'rows':[]};var _0x1221e4=_[_0x1f94('0x2c')](db[_0x1f94('0x2d')]['rawAttributes'],function(_0x47c6e8){return{'name':_0x47c6e8[_0x1f94('0x2e')],'type':_0x47c6e8[_0x1f94('0x2f')][_0x1f94('0x30')]};});_0x18fdb5['model']=_[_0x1f94('0x2c')](_0x1221e4,_0x1f94('0x2a'));_0x18fdb5[_0x1f94('0x31')]=_[_0x1f94('0x32')](_0x1064a4[_0x1f94('0x31')]);_0x18fdb5[_0x1f94('0x33')]=_[_0x1f94('0x34')](_0x18fdb5[_0x1f94('0x35')],_0x18fdb5['query']);_0x2f44b0[_0x1f94('0x36')]=_[_0x1f94('0x34')](_0x18fdb5['model'],qs[_0x1f94('0x37')](_0x1064a4['query'][_0x1f94('0x37')]));_0x2f44b0[_0x1f94('0x36')]=_0x2f44b0[_0x1f94('0x36')]['length']?_0x2f44b0['attributes']:_0x18fdb5[_0x1f94('0x35')];if(!_0x1064a4[_0x1f94('0x31')][_0x1f94('0x38')](_0x1f94('0x39'))){_0x2f44b0['limit']=qs['limit'](_0x1064a4[_0x1f94('0x31')][_0x1f94('0x1d')]);_0x2f44b0[_0x1f94('0x1b')]=qs[_0x1f94('0x1b')](_0x1064a4[_0x1f94('0x31')][_0x1f94('0x1b')]);}_0x2f44b0['order']=qs[_0x1f94('0x3a')](_0x1064a4[_0x1f94('0x31')]['sort']);_0x2f44b0[_0x1f94('0x3b')]=qs['filters'](_[_0x1f94('0x3c')](_0x1064a4[_0x1f94('0x31')],_0x18fdb5['filters']),_0x1221e4);if(_0x1064a4[_0x1f94('0x31')]['filter']){_0x2f44b0[_0x1f94('0x3b')]=_[_0x1f94('0x3d')](_0x2f44b0[_0x1f94('0x3b')],{'$or':_[_0x1f94('0x2c')](_0x1221e4,function(_0x9fdb3){if(_0x9fdb3[_0x1f94('0x2f')]!==_0x1f94('0x3e')){var _0x2e72f6={};_0x2e72f6[_0x9fdb3[_0x1f94('0x2a')]]={'$like':'%'+_0x1064a4['query']['filter']+'%'};return _0x2e72f6;}})});}_0x2f44b0=_[_0x1f94('0x3d')]({},_0x2f44b0,_0x1064a4[_0x1f94('0x3f')]);var _0x4d9699={'where':_0x2f44b0[_0x1f94('0x3b')]};return db[_0x1f94('0x2d')]['count'](_0x4d9699)[_0x1f94('0x26')](function(_0x38e66f){_0x18266f[_0x1f94('0x1e')]=_0x38e66f;if(_0x1064a4[_0x1f94('0x31')]['includeAll']){_0x2f44b0[_0x1f94('0x40')]=[{'all':!![]}];}return db[_0x1f94('0x2d')][_0x1f94('0x41')](_0x2f44b0);})[_0x1f94('0x26')](function(_0x4d8cdc){_0x18266f[_0x1f94('0x42')]=_0x4d8cdc;return _0x18266f;})[_0x1f94('0x26')](respondWithFilteredResult(_0x5f28f4,_0x2f44b0))[_0x1f94('0x43')](handleError(_0x5f28f4,null));};exports[_0x1f94('0x44')]=function(_0x3822df,_0x20c331){var _0xfc21f={'raw':![],'where':{'id':_0x3822df[_0x1f94('0x45')]['id']}},_0xbc5c36={};_0xbc5c36['model']=_[_0x1f94('0x32')](db['FreshsalesConfiguration']['rawAttributes']);_0xbc5c36[_0x1f94('0x31')]=_[_0x1f94('0x32')](_0x3822df[_0x1f94('0x31')]);_0xbc5c36[_0x1f94('0x33')]=_[_0x1f94('0x34')](_0xbc5c36[_0x1f94('0x35')],_0xbc5c36[_0x1f94('0x31')]);_0xfc21f[_0x1f94('0x36')]=_[_0x1f94('0x34')](_0xbc5c36[_0x1f94('0x35')],qs[_0x1f94('0x37')](_0x3822df['query'][_0x1f94('0x37')]));_0xfc21f[_0x1f94('0x36')]=_0xfc21f[_0x1f94('0x36')][_0x1f94('0x46')]?_0xfc21f[_0x1f94('0x36')]:_0xbc5c36['model'];if(_0x3822df[_0x1f94('0x31')][_0x1f94('0x47')]){_0xfc21f[_0x1f94('0x40')]=[{'all':!![]}];}_0xfc21f=_[_0x1f94('0x3d')]({},_0xfc21f,_0x3822df[_0x1f94('0x3f')]);return db['FreshsalesConfiguration'][_0x1f94('0x48')](_0xfc21f)[_0x1f94('0x26')](handleEntityNotFound(_0x20c331,null))[_0x1f94('0x26')](respondWithResult(_0x20c331,null))[_0x1f94('0x43')](handleError(_0x20c331,null));};exports[_0x1f94('0x49')]=function(_0x37cf44,_0x272077){return db[_0x1f94('0x2d')][_0x1f94('0x49')](_0x37cf44[_0x1f94('0x4a')],{})[_0x1f94('0x26')](respondWithResult(_0x272077,0xc9))[_0x1f94('0x43')](handleError(_0x272077,null));};exports[_0x1f94('0x24')]=function(_0x477f0a,_0xca72bc){if(_0x477f0a[_0x1f94('0x4a')]['id']){delete _0x477f0a['body']['id'];}return db[_0x1f94('0x2d')][_0x1f94('0x48')]({'where':{'id':_0x477f0a['params']['id']}})[_0x1f94('0x26')](handleEntityNotFound(_0xca72bc,null))[_0x1f94('0x26')](saveUpdates(_0x477f0a[_0x1f94('0x4a')],null))[_0x1f94('0x26')](respondWithResult(_0xca72bc,null))[_0x1f94('0x43')](handleError(_0xca72bc,null));};exports['destroy']=function(_0x1d7242,_0x5c7bb0){return db[_0x1f94('0x2d')]['find']({'where':{'id':_0x1d7242[_0x1f94('0x45')]['id']}})[_0x1f94('0x26')](handleEntityNotFound(_0x5c7bb0,null))[_0x1f94('0x26')](removeEntity(_0x5c7bb0,null))[_0x1f94('0x43')](handleError(_0x5c7bb0,null));};exports[_0x1f94('0x4b')]=function(_0x521fd7,_0x25bbe0,_0x5abd4b){var _0x455073={};var _0x225827={};var _0xb2143c;var _0x42c635;return db[_0x1f94('0x2d')][_0x1f94('0x4c')]({'where':{'id':_0x521fd7[_0x1f94('0x45')]['id']}})['then'](handleEntityNotFound(_0x25bbe0,null))[_0x1f94('0x26')](function(_0xcdf7c8){if(_0xcdf7c8){_0xb2143c=_0xcdf7c8;_0x225827[_0x1f94('0x35')]=_[_0x1f94('0x32')](db['FreshsalesField'][_0x1f94('0x4d')]);_0x225827[_0x1f94('0x31')]=_[_0x1f94('0x32')](_0x521fd7['query']);_0x225827[_0x1f94('0x33')]=_[_0x1f94('0x34')](_0x225827[_0x1f94('0x35')],_0x225827[_0x1f94('0x31')]);_0x455073[_0x1f94('0x36')]=_[_0x1f94('0x34')](_0x225827['model'],qs[_0x1f94('0x37')](_0x521fd7['query']['fields']));_0x455073[_0x1f94('0x36')]=_0x455073[_0x1f94('0x36')]['length']?_0x455073[_0x1f94('0x36')]:_0x225827['model'];_0x455073[_0x1f94('0x4e')]=qs[_0x1f94('0x3a')](_0x521fd7[_0x1f94('0x31')][_0x1f94('0x3a')]);_0x455073[_0x1f94('0x3b')]=qs[_0x1f94('0x33')](_['pick'](_0x521fd7[_0x1f94('0x31')],_0x225827[_0x1f94('0x33')]));if(_0x521fd7[_0x1f94('0x31')][_0x1f94('0x4f')]){_0x455073[_0x1f94('0x3b')]=_['merge'](_0x455073[_0x1f94('0x3b')],{'$or':_[_0x1f94('0x2c')](_0x455073[_0x1f94('0x36')],function(_0x350527){var _0x2a9582={};_0x2a9582[_0x350527]={'$like':'%'+_0x521fd7['query'][_0x1f94('0x4f')]+'%'};return _0x2a9582;})});}_0x455073=_[_0x1f94('0x3d')]({},_0x455073,_0x521fd7[_0x1f94('0x3f')]);return _0xb2143c[_0x1f94('0x4b')](_0x455073);}})['then'](function(_0x6df19f){if(_0x6df19f){_0x42c635=_0x6df19f[_0x1f94('0x46')];if(!_0x521fd7['query'][_0x1f94('0x38')](_0x1f94('0x39'))){_0x455073['limit']=qs['limit'](_0x521fd7['query'][_0x1f94('0x1d')]);_0x455073['offset']=qs[_0x1f94('0x1b')](_0x521fd7['query']['offset']);}return _0xb2143c[_0x1f94('0x4b')](_0x455073);}})[_0x1f94('0x26')](function(_0x6c5c80){if(_0x6c5c80){return _0x6c5c80?{'count':_0x42c635,'rows':_0x6c5c80}:null;}})[_0x1f94('0x26')](respondWithResult(_0x25bbe0,null))[_0x1f94('0x43')](handleError(_0x25bbe0,null));};exports['getDescriptions']=function(_0x473848,_0x9c809a,_0x4bceb4){var _0x10ec87={};var _0x1318d={};var _0xee08b2;var _0x5a4af3;return db[_0x1f94('0x2d')]['findOne']({'where':{'id':_0x473848[_0x1f94('0x45')]['id']}})[_0x1f94('0x26')](handleEntityNotFound(_0x9c809a,null))[_0x1f94('0x26')](function(_0x5171fc){if(_0x5171fc){_0xee08b2=_0x5171fc;_0x1318d[_0x1f94('0x35')]=_[_0x1f94('0x32')](db[_0x1f94('0x50')][_0x1f94('0x4d')]);_0x1318d[_0x1f94('0x31')]=_['keys'](_0x473848['query']);_0x1318d['filters']=_[_0x1f94('0x34')](_0x1318d[_0x1f94('0x35')],_0x1318d['query']);_0x10ec87[_0x1f94('0x36')]=_['intersection'](_0x1318d[_0x1f94('0x35')],qs[_0x1f94('0x37')](_0x473848[_0x1f94('0x31')]['fields']));_0x10ec87[_0x1f94('0x36')]=_0x10ec87[_0x1f94('0x36')][_0x1f94('0x46')]?_0x10ec87[_0x1f94('0x36')]:_0x1318d['model'];_0x10ec87[_0x1f94('0x4e')]=qs[_0x1f94('0x3a')](_0x473848['query']['sort']);_0x10ec87[_0x1f94('0x3b')]=qs[_0x1f94('0x33')](_[_0x1f94('0x3c')](_0x473848['query'],_0x1318d[_0x1f94('0x33')]));if(_0x473848['query'][_0x1f94('0x4f')]){_0x10ec87['where']=_['merge'](_0x10ec87[_0x1f94('0x3b')],{'$or':_[_0x1f94('0x2c')](_0x10ec87[_0x1f94('0x36')],function(_0x11e6f8){var _0x188af8={};_0x188af8[_0x11e6f8]={'$like':'%'+_0x473848[_0x1f94('0x31')][_0x1f94('0x4f')]+'%'};return _0x188af8;})});}_0x10ec87=_[_0x1f94('0x3d')]({},_0x10ec87,_0x473848[_0x1f94('0x3f')]);return _0xee08b2['getDescriptions'](_0x10ec87);}})[_0x1f94('0x26')](function(_0x2116a5){if(_0x2116a5){_0x5a4af3=_0x2116a5[_0x1f94('0x46')];if(!_0x473848[_0x1f94('0x31')]['hasOwnProperty'](_0x1f94('0x39'))){_0x10ec87[_0x1f94('0x1d')]=qs[_0x1f94('0x1d')](_0x473848[_0x1f94('0x31')][_0x1f94('0x1d')]);_0x10ec87['offset']=qs[_0x1f94('0x1b')](_0x473848[_0x1f94('0x31')][_0x1f94('0x1b')]);}return _0xee08b2[_0x1f94('0x51')](_0x10ec87);}})[_0x1f94('0x26')](function(_0x44eac9){if(_0x44eac9){return _0x44eac9?{'count':_0x5a4af3,'rows':_0x44eac9}:null;}})[_0x1f94('0x26')](respondWithResult(_0x9c809a,null))[_0x1f94('0x43')](handleError(_0x9c809a,null));};exports[_0x1f94('0x52')]=function(_0x4d307a,_0x2440d8,_0x593f70){var _0x256dbb={};var _0x44d7d6={};var _0x21d7b8;var _0x2c247a;return db['FreshsalesConfiguration'][_0x1f94('0x4c')]({'where':{'id':_0x4d307a['params']['id']}})['then'](handleEntityNotFound(_0x2440d8,null))['then'](function(_0x333760){if(_0x333760){_0x21d7b8=_0x333760;_0x44d7d6[_0x1f94('0x35')]=_['keys'](db['FreshsalesField']['rawAttributes']);_0x44d7d6[_0x1f94('0x31')]=_['keys'](_0x4d307a[_0x1f94('0x31')]);_0x44d7d6['filters']=_[_0x1f94('0x34')](_0x44d7d6[_0x1f94('0x35')],_0x44d7d6[_0x1f94('0x31')]);_0x256dbb[_0x1f94('0x36')]=_[_0x1f94('0x34')](_0x44d7d6['model'],qs['fields'](_0x4d307a[_0x1f94('0x31')][_0x1f94('0x37')]));_0x256dbb[_0x1f94('0x36')]=_0x256dbb[_0x1f94('0x36')][_0x1f94('0x46')]?_0x256dbb[_0x1f94('0x36')]:_0x44d7d6['model'];_0x256dbb[_0x1f94('0x4e')]=qs['sort'](_0x4d307a['query'][_0x1f94('0x3a')]);_0x256dbb['where']=qs[_0x1f94('0x33')](_[_0x1f94('0x3c')](_0x4d307a['query'],_0x44d7d6[_0x1f94('0x33')]));if(_0x4d307a['query'][_0x1f94('0x4f')]){_0x256dbb['where']=_['merge'](_0x256dbb[_0x1f94('0x3b')],{'$or':_[_0x1f94('0x2c')](_0x256dbb[_0x1f94('0x36')],function(_0x4ba2a7){var _0x4a261e={};_0x4a261e[_0x4ba2a7]={'$like':'%'+_0x4d307a[_0x1f94('0x31')][_0x1f94('0x4f')]+'%'};return _0x4a261e;})});}_0x256dbb=_[_0x1f94('0x3d')]({},_0x256dbb,_0x4d307a['options']);return _0x21d7b8[_0x1f94('0x52')](_0x256dbb);}})['then'](function(_0x50045b){if(_0x50045b){_0x2c247a=_0x50045b[_0x1f94('0x46')];if(!_0x4d307a['query'][_0x1f94('0x38')]('nolimit')){_0x256dbb[_0x1f94('0x1d')]=qs[_0x1f94('0x1d')](_0x4d307a[_0x1f94('0x31')]['limit']);_0x256dbb[_0x1f94('0x1b')]=qs[_0x1f94('0x1b')](_0x4d307a[_0x1f94('0x31')][_0x1f94('0x1b')]);}return _0x21d7b8[_0x1f94('0x52')](_0x256dbb);}})[_0x1f94('0x26')](function(_0x45ddef){if(_0x45ddef){return _0x45ddef?{'count':_0x2c247a,'rows':_0x45ddef}:null;}})[_0x1f94('0x26')](respondWithResult(_0x2440d8,null))[_0x1f94('0x43')](handleError(_0x2440d8,null));};
\ No newline at end of file
+var _0x4dd5=['../../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','limit','undefined','count','save','update','then','destroy','stack','send','index','FreshsalesConfiguration','rawAttributes','fieldName','key','model','map','name','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','where','merge','includeAll','include','findAll','catch','params','options','find','create','body','findOne','FreshsalesField','filter','getSubjects','getDescriptions','getFields','rimraf','fast-json-patch','request-promise','moment','mustache','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse'];(function(_0x52c78e,_0x1dc19a){var _0x53800b=function(_0x5fd21f){while(--_0x5fd21f){_0x52c78e['push'](_0x52c78e['shift']());}};_0x53800b(++_0x1dc19a);}(_0x4dd5,0xce));var _0x54dd=function(_0xc7a1f3,_0x49aefd){_0xc7a1f3=_0xc7a1f3-0x0;var _0x3d2bdb=_0x4dd5[_0xc7a1f3];return _0x3d2bdb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x54dd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x54dd('0x1'));var rp=require(_0x54dd('0x2'));var moment=require(_0x54dd('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x54dd('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x54dd('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x54dd('0x6'));var _=require(_0x54dd('0x7'));var squel=require(_0x54dd('0x8'));var crypto=require('crypto');var jsforce=require(_0x54dd('0x9'));var deskjs=require(_0x54dd('0xa'));var toCsv=require(_0x54dd('0x5'));var querystring=require(_0x54dd('0xb'));var Papa=require(_0x54dd('0xc'));var Redis=require('ioredis');var authService=require(_0x54dd('0xd'));var qs=require(_0x54dd('0xe'));var as=require(_0x54dd('0xf'));var hardwareService=require(_0x54dd('0x10'));var logger=require(_0x54dd('0x11'))(_0x54dd('0x12'));var utils=require(_0x54dd('0x13'));var config=require(_0x54dd('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x54dd('0x15'))['db'];function respondWithStatusCode(_0x215aba,_0x2e20e3){_0x2e20e3=_0x2e20e3||0xcc;return function(_0x580329){if(_0x580329){return _0x215aba[_0x54dd('0x16')](_0x2e20e3);}return _0x215aba[_0x54dd('0x17')](_0x2e20e3)[_0x54dd('0x18')]();};}function respondWithResult(_0x5d8068,_0xba129b){_0xba129b=_0xba129b||0xc8;return function(_0x5e3e1a){if(_0x5e3e1a){return _0x5d8068[_0x54dd('0x17')](_0xba129b)[_0x54dd('0x19')](_0x5e3e1a);}};}function respondWithFilteredResult(_0x10c3c3,_0x23b3fd){return function(_0x15e0a1){if(_0x15e0a1){var _0x1a9974=typeof _0x23b3fd[_0x54dd('0x1a')]==='undefined'&&typeof _0x23b3fd[_0x54dd('0x1b')]===_0x54dd('0x1c');var _0x17a679=_0x15e0a1[_0x54dd('0x1d')];var _0x41a875=_0x1a9974?0x0:_0x23b3fd[_0x54dd('0x1a')];var _0x24a0af=_0x1a9974?_0x15e0a1[_0x54dd('0x1d')]:_0x23b3fd['offset']+_0x23b3fd[_0x54dd('0x1b')];var _0x1c2a52;if(_0x24a0af>=_0x17a679){_0x24a0af=_0x17a679;_0x1c2a52=0xc8;}else{_0x1c2a52=0xce;}_0x10c3c3[_0x54dd('0x17')](_0x1c2a52);return _0x10c3c3['set']('Content-Range',_0x41a875+'-'+_0x24a0af+'/'+_0x17a679)[_0x54dd('0x19')](_0x15e0a1);}return null;};}function patchUpdates(_0x77cae4){return function(_0x4c98f3){try{jsonpatch['apply'](_0x4c98f3,_0x77cae4,!![]);}catch(_0x276782){return BPromise['reject'](_0x276782);}return _0x4c98f3[_0x54dd('0x1e')]();};}function saveUpdates(_0x17f58a,_0x518a39){return function(_0x581844){if(_0x581844){return _0x581844[_0x54dd('0x1f')](_0x17f58a)[_0x54dd('0x20')](function(_0x31f74f){return _0x31f74f;});}return null;};}function removeEntity(_0x469419,_0x407baf){return function(_0x5190d7){if(_0x5190d7){return _0x5190d7[_0x54dd('0x21')]()[_0x54dd('0x20')](function(){_0x469419['status'](0xcc)[_0x54dd('0x18')]();});}};}function handleEntityNotFound(_0x9198fe,_0x3d624f){return function(_0x3fa55f){if(!_0x3fa55f){_0x9198fe['sendStatus'](0x194);}return _0x3fa55f;};}function handleError(_0x480250,_0x210ef8){_0x210ef8=_0x210ef8||0x1f4;return function(_0xacf3ba){logger['error'](_0xacf3ba[_0x54dd('0x22')]);if(_0xacf3ba['name']){delete _0xacf3ba['name'];}_0x480250['status'](_0x210ef8)[_0x54dd('0x23')](_0xacf3ba);};}exports[_0x54dd('0x24')]=function(_0x36f8ca,_0x238b8a){var _0x1689ff={},_0xdc2e7d={},_0x55f196={'count':0x0,'rows':[]};var _0x1abd12=_['map'](db[_0x54dd('0x25')][_0x54dd('0x26')],function(_0x10e623){return{'name':_0x10e623[_0x54dd('0x27')],'type':_0x10e623['type'][_0x54dd('0x28')]};});_0xdc2e7d[_0x54dd('0x29')]=_[_0x54dd('0x2a')](_0x1abd12,_0x54dd('0x2b'));_0xdc2e7d['query']=_[_0x54dd('0x2c')](_0x36f8ca[_0x54dd('0x2d')]);_0xdc2e7d['filters']=_['intersection'](_0xdc2e7d[_0x54dd('0x29')],_0xdc2e7d[_0x54dd('0x2d')]);_0x1689ff[_0x54dd('0x2e')]=_[_0x54dd('0x2f')](_0xdc2e7d[_0x54dd('0x29')],qs[_0x54dd('0x30')](_0x36f8ca[_0x54dd('0x2d')][_0x54dd('0x30')]));_0x1689ff['attributes']=_0x1689ff['attributes'][_0x54dd('0x31')]?_0x1689ff[_0x54dd('0x2e')]:_0xdc2e7d[_0x54dd('0x29')];if(!_0x36f8ca[_0x54dd('0x2d')][_0x54dd('0x32')](_0x54dd('0x33'))){_0x1689ff[_0x54dd('0x1b')]=qs['limit'](_0x36f8ca[_0x54dd('0x2d')][_0x54dd('0x1b')]);_0x1689ff['offset']=qs['offset'](_0x36f8ca[_0x54dd('0x2d')][_0x54dd('0x1a')]);}_0x1689ff[_0x54dd('0x34')]=qs['sort'](_0x36f8ca[_0x54dd('0x2d')][_0x54dd('0x35')]);_0x1689ff['where']=qs['filters'](_[_0x54dd('0x36')](_0x36f8ca['query'],_0xdc2e7d[_0x54dd('0x37')]),_0x1abd12);if(_0x36f8ca['query']['filter']){_0x1689ff[_0x54dd('0x38')]=_[_0x54dd('0x39')](_0x1689ff['where'],{'$or':_[_0x54dd('0x2a')](_0x1abd12,function(_0x266c89){if(_0x266c89['type']!=='VIRTUAL'){var _0x4c399b={};_0x4c399b[_0x266c89[_0x54dd('0x2b')]]={'$like':'%'+_0x36f8ca[_0x54dd('0x2d')]['filter']+'%'};return _0x4c399b;}})});}_0x1689ff=_[_0x54dd('0x39')]({},_0x1689ff,_0x36f8ca['options']);var _0xcce4dc={'where':_0x1689ff[_0x54dd('0x38')]};return db[_0x54dd('0x25')][_0x54dd('0x1d')](_0xcce4dc)[_0x54dd('0x20')](function(_0x41c20c){_0x55f196[_0x54dd('0x1d')]=_0x41c20c;if(_0x36f8ca[_0x54dd('0x2d')][_0x54dd('0x3a')]){_0x1689ff[_0x54dd('0x3b')]=[{'all':!![]}];}return db[_0x54dd('0x25')][_0x54dd('0x3c')](_0x1689ff);})[_0x54dd('0x20')](function(_0x118956){_0x55f196['rows']=_0x118956;return _0x55f196;})[_0x54dd('0x20')](respondWithFilteredResult(_0x238b8a,_0x1689ff))[_0x54dd('0x3d')](handleError(_0x238b8a,null));};exports['show']=function(_0x116c17,_0x533833){var _0xd6b66f={'raw':![],'where':{'id':_0x116c17[_0x54dd('0x3e')]['id']}},_0x199f1d={};_0x199f1d['model']=_['keys'](db[_0x54dd('0x25')][_0x54dd('0x26')]);_0x199f1d[_0x54dd('0x2d')]=_[_0x54dd('0x2c')](_0x116c17['query']);_0x199f1d[_0x54dd('0x37')]=_[_0x54dd('0x2f')](_0x199f1d[_0x54dd('0x29')],_0x199f1d[_0x54dd('0x2d')]);_0xd6b66f['attributes']=_[_0x54dd('0x2f')](_0x199f1d[_0x54dd('0x29')],qs['fields'](_0x116c17[_0x54dd('0x2d')]['fields']));_0xd6b66f[_0x54dd('0x2e')]=_0xd6b66f['attributes'][_0x54dd('0x31')]?_0xd6b66f[_0x54dd('0x2e')]:_0x199f1d['model'];if(_0x116c17[_0x54dd('0x2d')][_0x54dd('0x3a')]){_0xd6b66f[_0x54dd('0x3b')]=[{'all':!![]}];}_0xd6b66f=_['merge']({},_0xd6b66f,_0x116c17[_0x54dd('0x3f')]);return db['FreshsalesConfiguration'][_0x54dd('0x40')](_0xd6b66f)[_0x54dd('0x20')](handleEntityNotFound(_0x533833,null))[_0x54dd('0x20')](respondWithResult(_0x533833,null))[_0x54dd('0x3d')](handleError(_0x533833,null));};exports[_0x54dd('0x41')]=function(_0x238cd9,_0x56b442){return db[_0x54dd('0x25')][_0x54dd('0x41')](_0x238cd9[_0x54dd('0x42')],{})[_0x54dd('0x20')](respondWithResult(_0x56b442,0xc9))[_0x54dd('0x3d')](handleError(_0x56b442,null));};exports[_0x54dd('0x1f')]=function(_0x4e2c51,_0x132e5b){if(_0x4e2c51[_0x54dd('0x42')]['id']){delete _0x4e2c51[_0x54dd('0x42')]['id'];}return db['FreshsalesConfiguration'][_0x54dd('0x40')]({'where':{'id':_0x4e2c51['params']['id']}})['then'](handleEntityNotFound(_0x132e5b,null))['then'](saveUpdates(_0x4e2c51[_0x54dd('0x42')],null))['then'](respondWithResult(_0x132e5b,null))[_0x54dd('0x3d')](handleError(_0x132e5b,null));};exports[_0x54dd('0x21')]=function(_0x40f88c,_0x49b37c){return db[_0x54dd('0x25')]['find']({'where':{'id':_0x40f88c['params']['id']}})[_0x54dd('0x20')](handleEntityNotFound(_0x49b37c,null))[_0x54dd('0x20')](removeEntity(_0x49b37c,null))[_0x54dd('0x3d')](handleError(_0x49b37c,null));};exports['getSubjects']=function(_0x55c1d6,_0x349690,_0x562185){var _0x5a053f={};var _0x6503a6={};var _0xf5549;var _0x30c25b;return db[_0x54dd('0x25')][_0x54dd('0x43')]({'where':{'id':_0x55c1d6['params']['id']}})[_0x54dd('0x20')](handleEntityNotFound(_0x349690,null))['then'](function(_0x4006e3){if(_0x4006e3){_0xf5549=_0x4006e3;_0x6503a6[_0x54dd('0x29')]=_['keys'](db[_0x54dd('0x44')][_0x54dd('0x26')]);_0x6503a6['query']=_['keys'](_0x55c1d6['query']);_0x6503a6['filters']=_[_0x54dd('0x2f')](_0x6503a6['model'],_0x6503a6[_0x54dd('0x2d')]);_0x5a053f[_0x54dd('0x2e')]=_[_0x54dd('0x2f')](_0x6503a6['model'],qs[_0x54dd('0x30')](_0x55c1d6[_0x54dd('0x2d')][_0x54dd('0x30')]));_0x5a053f[_0x54dd('0x2e')]=_0x5a053f['attributes'][_0x54dd('0x31')]?_0x5a053f['attributes']:_0x6503a6[_0x54dd('0x29')];_0x5a053f['order']=qs['sort'](_0x55c1d6[_0x54dd('0x2d')][_0x54dd('0x35')]);_0x5a053f['where']=qs[_0x54dd('0x37')](_['pick'](_0x55c1d6[_0x54dd('0x2d')],_0x6503a6['filters']));if(_0x55c1d6[_0x54dd('0x2d')]['filter']){_0x5a053f[_0x54dd('0x38')]=_['merge'](_0x5a053f[_0x54dd('0x38')],{'$or':_['map'](_0x5a053f[_0x54dd('0x2e')],function(_0xd0cf6c){var _0x2cb641={};_0x2cb641[_0xd0cf6c]={'$like':'%'+_0x55c1d6['query'][_0x54dd('0x45')]+'%'};return _0x2cb641;})});}_0x5a053f=_[_0x54dd('0x39')]({},_0x5a053f,_0x55c1d6[_0x54dd('0x3f')]);return _0xf5549[_0x54dd('0x46')](_0x5a053f);}})[_0x54dd('0x20')](function(_0x2ea623){if(_0x2ea623){_0x30c25b=_0x2ea623[_0x54dd('0x31')];if(!_0x55c1d6[_0x54dd('0x2d')][_0x54dd('0x32')](_0x54dd('0x33'))){_0x5a053f[_0x54dd('0x1b')]=qs[_0x54dd('0x1b')](_0x55c1d6[_0x54dd('0x2d')][_0x54dd('0x1b')]);_0x5a053f['offset']=qs['offset'](_0x55c1d6[_0x54dd('0x2d')][_0x54dd('0x1a')]);}return _0xf5549[_0x54dd('0x46')](_0x5a053f);}})[_0x54dd('0x20')](function(_0xc64089){if(_0xc64089){return _0xc64089?{'count':_0x30c25b,'rows':_0xc64089}:null;}})[_0x54dd('0x20')](respondWithResult(_0x349690,null))[_0x54dd('0x3d')](handleError(_0x349690,null));};exports['getDescriptions']=function(_0x17bd33,_0x17bdc7,_0x5c917f){var _0x4b0a4d={};var _0x269d8f={};var _0x373865;var _0x102f9c;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x17bd33['params']['id']}})[_0x54dd('0x20')](handleEntityNotFound(_0x17bdc7,null))[_0x54dd('0x20')](function(_0x3f052c){if(_0x3f052c){_0x373865=_0x3f052c;_0x269d8f[_0x54dd('0x29')]=_[_0x54dd('0x2c')](db[_0x54dd('0x44')][_0x54dd('0x26')]);_0x269d8f['query']=_['keys'](_0x17bd33[_0x54dd('0x2d')]);_0x269d8f[_0x54dd('0x37')]=_['intersection'](_0x269d8f[_0x54dd('0x29')],_0x269d8f['query']);_0x4b0a4d[_0x54dd('0x2e')]=_[_0x54dd('0x2f')](_0x269d8f[_0x54dd('0x29')],qs[_0x54dd('0x30')](_0x17bd33[_0x54dd('0x2d')][_0x54dd('0x30')]));_0x4b0a4d[_0x54dd('0x2e')]=_0x4b0a4d[_0x54dd('0x2e')][_0x54dd('0x31')]?_0x4b0a4d[_0x54dd('0x2e')]:_0x269d8f[_0x54dd('0x29')];_0x4b0a4d[_0x54dd('0x34')]=qs['sort'](_0x17bd33[_0x54dd('0x2d')][_0x54dd('0x35')]);_0x4b0a4d[_0x54dd('0x38')]=qs[_0x54dd('0x37')](_[_0x54dd('0x36')](_0x17bd33['query'],_0x269d8f[_0x54dd('0x37')]));if(_0x17bd33[_0x54dd('0x2d')][_0x54dd('0x45')]){_0x4b0a4d['where']=_[_0x54dd('0x39')](_0x4b0a4d[_0x54dd('0x38')],{'$or':_[_0x54dd('0x2a')](_0x4b0a4d[_0x54dd('0x2e')],function(_0x317d5c){var _0x2e4138={};_0x2e4138[_0x317d5c]={'$like':'%'+_0x17bd33[_0x54dd('0x2d')]['filter']+'%'};return _0x2e4138;})});}_0x4b0a4d=_[_0x54dd('0x39')]({},_0x4b0a4d,_0x17bd33['options']);return _0x373865[_0x54dd('0x47')](_0x4b0a4d);}})[_0x54dd('0x20')](function(_0x4bd997){if(_0x4bd997){_0x102f9c=_0x4bd997[_0x54dd('0x31')];if(!_0x17bd33['query'][_0x54dd('0x32')](_0x54dd('0x33'))){_0x4b0a4d[_0x54dd('0x1b')]=qs[_0x54dd('0x1b')](_0x17bd33['query']['limit']);_0x4b0a4d[_0x54dd('0x1a')]=qs[_0x54dd('0x1a')](_0x17bd33[_0x54dd('0x2d')][_0x54dd('0x1a')]);}return _0x373865['getDescriptions'](_0x4b0a4d);}})[_0x54dd('0x20')](function(_0x335714){if(_0x335714){return _0x335714?{'count':_0x102f9c,'rows':_0x335714}:null;}})['then'](respondWithResult(_0x17bdc7,null))[_0x54dd('0x3d')](handleError(_0x17bdc7,null));};exports[_0x54dd('0x48')]=function(_0x52c5c3,_0xaf4702,_0x4c1a41){var _0x89367c={};var _0x4e01f6={};var _0x144ed1;var _0x5f3d7f;return db[_0x54dd('0x25')][_0x54dd('0x43')]({'where':{'id':_0x52c5c3[_0x54dd('0x3e')]['id']}})['then'](handleEntityNotFound(_0xaf4702,null))['then'](function(_0x55240d){if(_0x55240d){_0x144ed1=_0x55240d;_0x4e01f6[_0x54dd('0x29')]=_[_0x54dd('0x2c')](db['FreshsalesField']['rawAttributes']);_0x4e01f6['query']=_['keys'](_0x52c5c3[_0x54dd('0x2d')]);_0x4e01f6[_0x54dd('0x37')]=_[_0x54dd('0x2f')](_0x4e01f6[_0x54dd('0x29')],_0x4e01f6['query']);_0x89367c['attributes']=_[_0x54dd('0x2f')](_0x4e01f6[_0x54dd('0x29')],qs['fields'](_0x52c5c3[_0x54dd('0x2d')][_0x54dd('0x30')]));_0x89367c[_0x54dd('0x2e')]=_0x89367c['attributes']['length']?_0x89367c[_0x54dd('0x2e')]:_0x4e01f6[_0x54dd('0x29')];_0x89367c[_0x54dd('0x34')]=qs['sort'](_0x52c5c3['query'][_0x54dd('0x35')]);_0x89367c[_0x54dd('0x38')]=qs[_0x54dd('0x37')](_['pick'](_0x52c5c3['query'],_0x4e01f6['filters']));if(_0x52c5c3[_0x54dd('0x2d')]['filter']){_0x89367c['where']=_[_0x54dd('0x39')](_0x89367c[_0x54dd('0x38')],{'$or':_[_0x54dd('0x2a')](_0x89367c[_0x54dd('0x2e')],function(_0x1e35b4){var _0x181a6b={};_0x181a6b[_0x1e35b4]={'$like':'%'+_0x52c5c3[_0x54dd('0x2d')][_0x54dd('0x45')]+'%'};return _0x181a6b;})});}_0x89367c=_['merge']({},_0x89367c,_0x52c5c3[_0x54dd('0x3f')]);return _0x144ed1['getFields'](_0x89367c);}})[_0x54dd('0x20')](function(_0x2d3bc0){if(_0x2d3bc0){_0x5f3d7f=_0x2d3bc0['length'];if(!_0x52c5c3['query']['hasOwnProperty'](_0x54dd('0x33'))){_0x89367c[_0x54dd('0x1b')]=qs['limit'](_0x52c5c3['query'][_0x54dd('0x1b')]);_0x89367c['offset']=qs[_0x54dd('0x1a')](_0x52c5c3[_0x54dd('0x2d')]['offset']);}return _0x144ed1[_0x54dd('0x48')](_0x89367c);}})[_0x54dd('0x20')](function(_0x3242af){if(_0x3242af){return _0x3242af?{'count':_0x5f3d7f,'rows':_0x3242af}:null;}})['then'](respondWithResult(_0xaf4702,null))['catch'](handleError(_0xaf4702,null));};
\ No newline at end of file
index 7dfc046..90cb111 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20bd=['exports','define','lodash','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes'];(function(_0x1d559c,_0x120e87){var _0x1f1550=function(_0x5035ca){while(--_0x5035ca){_0x1d559c['push'](_0x1d559c['shift']());}};_0x1f1550(++_0x120e87);}(_0x20bd,0xc0));var _0xd20b=function(_0x4d55ef,_0x1a1f7c){_0x4d55ef=_0x4d55ef-0x0;var _0x467e37=_0x20bd[_0x4d55ef];return _0x467e37;};'use strict';var _=require(_0xd20b('0x0'));var util=require('util');var logger=require(_0xd20b('0x1'))(_0xd20b('0x2'));var moment=require('moment');var BPromise=require(_0xd20b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd20b('0x4'));var rimraf=require(_0xd20b('0x5'));var config=require(_0xd20b('0x6'));var attributes=require(_0xd20b('0x7'));module[_0xd20b('0x8')]=function(_0x1a6c0a,_0x1b9665){return _0x1a6c0a[_0xd20b('0x9')]('FreshsalesConfiguration',attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf0ba=['lodash','util','api','moment','rimraf','define','FreshsalesConfiguration'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xf0ba,0x103));var _0xaf0b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf0ba[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xaf0b('0x0'));var util=require(_0xaf0b('0x1'));var logger=require('../../config/logger')(_0xaf0b('0x2'));var moment=require(_0xaf0b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xaf0b('0x4'));var config=require('../../config/environment');var attributes=require('./intFreshsalesConfiguration.attributes');module['exports']=function(_0x1d7d4e,_0x2755dc){return _0x1d7d4e[_0xaf0b('0x5')](_0xaf0b('0x6'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9c1b89f..f167cbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf20d=['info','result','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','request\x20sent','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','error','code','FreshsalesConfiguration,\x20%s,\x20%s','message'];(function(_0x5da280,_0x95073e){var _0x36656a=function(_0x46e3af){while(--_0x46e3af){_0x5da280['push'](_0x5da280['shift']());}};_0x36656a(++_0x95073e);}(_0xf20d,0xa2));var _0xdf20=function(_0x96244a,_0x5af29f){_0x96244a=_0x96244a-0x0;var _0x1a9a25=_0xf20d[_0x96244a];return _0x1a9a25;};'use strict';var _=require(_0xdf20('0x0'));var util=require(_0xdf20('0x1'));var moment=require(_0xdf20('0x2'));var BPromise=require('bluebird');var rs=require(_0xdf20('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdf20('0x4'))['db'];var utils=require(_0xdf20('0x5'));var logger=require(_0xdf20('0x6'))('rpc');var config=require(_0xdf20('0x7'));var jayson=require(_0xdf20('0x8'));var client=jayson[_0xdf20('0x9')][_0xdf20('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x109443,_0x12d486,_0x1f010f){return new BPromise(function(_0x293cf9,_0x2fbe25){return client['request'](_0x109443,_0x1f010f)[_0xdf20('0xb')](function(_0x3d54df){logger['info']('FreshsalesConfiguration,\x20%s,\x20%s',_0x12d486,_0xdf20('0xc'));logger['debug'](_0xdf20('0xd'),_0x12d486,'request\x20sent',JSON['stringify'](_0x3d54df));if(_0x3d54df[_0xdf20('0xe')]){if(_0x3d54df[_0xdf20('0xe')][_0xdf20('0xf')]===0x1f4){logger['error'](_0xdf20('0x10'),_0x12d486,_0x3d54df[_0xdf20('0xe')][_0xdf20('0x11')]);return _0x2fbe25(_0x3d54df[_0xdf20('0xe')][_0xdf20('0x11')]);}logger[_0xdf20('0xe')](_0xdf20('0x10'),_0x12d486,_0x3d54df[_0xdf20('0xe')]['message']);return _0x293cf9(_0x3d54df[_0xdf20('0xe')][_0xdf20('0x11')]);}else{logger[_0xdf20('0x12')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x12d486,_0xdf20('0xc'));_0x293cf9(_0x3d54df[_0xdf20('0x13')][_0xdf20('0x11')]);}})['catch'](function(_0x48b3b3){logger[_0xdf20('0xe')](_0xdf20('0x10'),_0x12d486,_0x48b3b3);_0x2fbe25(_0x48b3b3);});});}
\ No newline at end of file
+var _0x4a4d=['then','info','request\x20sent','debug','error','code','FreshsalesConfiguration,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x343112,_0x45bf38){var _0x1df6c4=function(_0x28704d){while(--_0x28704d){_0x343112['push'](_0x343112['shift']());}};_0x1df6c4(++_0x45bf38);}(_0x4a4d,0x128));var _0xd4a4=function(_0x11c06e,_0x1cb9c7){_0x11c06e=_0x11c06e-0x0;var _0x20a7dc=_0x4a4d[_0x11c06e];return _0x20a7dc;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd4a4('0x0'));var BPromise=require(_0xd4a4('0x1'));var rs=require(_0xd4a4('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd4a4('0x3'))['db'];var utils=require(_0xd4a4('0x4'));var logger=require(_0xd4a4('0x5'))(_0xd4a4('0x6'));var config=require(_0xd4a4('0x7'));var jayson=require(_0xd4a4('0x8'));var client=jayson[_0xd4a4('0x9')][_0xd4a4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x117406,_0x490d67,_0x3ffc1a){return new BPromise(function(_0xd2346f,_0x105e7a){return client[_0xd4a4('0xb')](_0x117406,_0x3ffc1a)[_0xd4a4('0xc')](function(_0x4f4340){logger[_0xd4a4('0xd')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x490d67,_0xd4a4('0xe'));logger[_0xd4a4('0xf')]('FreshsalesConfiguration,\x20%s,\x20%s,\x20%s',_0x490d67,_0xd4a4('0xe'),JSON['stringify'](_0x4f4340));if(_0x4f4340[_0xd4a4('0x10')]){if(_0x4f4340[_0xd4a4('0x10')][_0xd4a4('0x11')]===0x1f4){logger[_0xd4a4('0x10')](_0xd4a4('0x12'),_0x490d67,_0x4f4340['error'][_0xd4a4('0x13')]);return _0x105e7a(_0x4f4340[_0xd4a4('0x10')][_0xd4a4('0x13')]);}logger[_0xd4a4('0x10')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x490d67,_0x4f4340['error']['message']);return _0xd2346f(_0x4f4340['error'][_0xd4a4('0x13')]);}else{logger[_0xd4a4('0xd')](_0xd4a4('0x12'),_0x490d67,_0xd4a4('0xe'));_0xd2346f(_0x4f4340[_0xd4a4('0x14')][_0xd4a4('0x13')]);}})[_0xd4a4('0x15')](function(_0x16567f){logger[_0xd4a4('0x10')](_0xd4a4('0x12'),_0x490d67,_0x16567f);_0x105e7a(_0x16567f);});});}
\ No newline at end of file
index 58afcf7..477eda2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe205=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshsalesField.controller','get','isAuthenticated','index','create','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0xfa2f68,_0x23836e){var _0x252d9a=function(_0x285e61){while(--_0x285e61){_0xfa2f68['push'](_0xfa2f68['shift']());}};_0x252d9a(++_0x23836e);}(_0xe205,0xa7));var _0x5e20=function(_0x1b017e,_0x2d9433){_0x1b017e=_0x1b017e-0x0;var _0x3bf16e=_0xe205[_0x1b017e];return _0x3bf16e;};'use strict';var multer=require(_0x5e20('0x0'));var util=require(_0x5e20('0x1'));var path=require(_0x5e20('0x2'));var timeout=require(_0x5e20('0x3'));var express=require(_0x5e20('0x4'));var router=express[_0x5e20('0x5')]();var fs_extra=require(_0x5e20('0x6'));var auth=require(_0x5e20('0x7'));var interaction=require(_0x5e20('0x8'));var config=require('../../config/environment');var controller=require(_0x5e20('0x9'));router[_0x5e20('0xa')]('/',auth[_0x5e20('0xb')](),controller[_0x5e20('0xc')]);router['get']('/:id',auth[_0x5e20('0xb')](),controller['show']);router['post']('/',auth[_0x5e20('0xb')](),controller[_0x5e20('0xd')]);router['put'](_0x5e20('0xe'),auth[_0x5e20('0xb')](),controller[_0x5e20('0xf')]);router[_0x5e20('0x10')]('/:id',auth[_0x5e20('0xb')](),controller[_0x5e20('0x11')]);module[_0x5e20('0x12')]=router;
\ No newline at end of file
+var _0x1306=['put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x49dfe3,_0x5fb8f){var _0xb2a3ec=function(_0x3af028){while(--_0x3af028){_0x49dfe3['push'](_0x49dfe3['shift']());}};_0xb2a3ec(++_0x5fb8f);}(_0x1306,0x17a));var _0x6130=function(_0x38b959,_0x74a01e){_0x38b959=_0x38b959-0x0;var _0x6a1c1c=_0x1306[_0x38b959];return _0x6a1c1c;};'use strict';var multer=require(_0x6130('0x0'));var util=require(_0x6130('0x1'));var path=require(_0x6130('0x2'));var timeout=require(_0x6130('0x3'));var express=require(_0x6130('0x4'));var router=express[_0x6130('0x5')]();var fs_extra=require(_0x6130('0x6'));var auth=require(_0x6130('0x7'));var interaction=require(_0x6130('0x8'));var config=require(_0x6130('0x9'));var controller=require(_0x6130('0xa'));router[_0x6130('0xb')]('/',auth[_0x6130('0xc')](),controller[_0x6130('0xd')]);router[_0x6130('0xb')](_0x6130('0xe'),auth[_0x6130('0xc')](),controller[_0x6130('0xf')]);router[_0x6130('0x10')]('/',auth[_0x6130('0xc')](),controller[_0x6130('0x11')]);router[_0x6130('0x12')](_0x6130('0xe'),auth[_0x6130('0xc')](),controller[_0x6130('0x13')]);router[_0x6130('0x14')](_0x6130('0xe'),auth[_0x6130('0xc')](),controller[_0x6130('0x15')]);module['exports']=router;
\ No newline at end of file
index 8d6b187..9e37293 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0e7=['string','STRING','BOOLEAN','exports','ENUM','variable','customVariable','keyValue','picklist'];(function(_0x1599bf,_0x3cc1fb){var _0x2470f2=function(_0x555023){while(--_0x555023){_0x1599bf['push'](_0x1599bf['shift']());}};_0x2470f2(++_0x3cc1fb);}(_0xf0e7,0x1f2));var _0x7f0e=function(_0x35bad0,_0x21927d){_0x35bad0=_0x35bad0-0x0;var _0x4fe50f=_0xf0e7[_0x35bad0];return _0x4fe50f;};'use strict';var Sequelize=require('sequelize');module[_0x7f0e('0x0')]={'type':{'type':Sequelize[_0x7f0e('0x1')]('string',_0x7f0e('0x2'),_0x7f0e('0x3'),_0x7f0e('0x4'),_0x7f0e('0x5')),'defaultValue':_0x7f0e('0x6')},'content':{'type':Sequelize[_0x7f0e('0x7')]},'key':{'type':Sequelize[_0x7f0e('0x7')]},'keyType':{'type':Sequelize[_0x7f0e('0x1')]('string','variable',_0x7f0e('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x7f0e('0x7')]},'nameField':{'type':Sequelize[_0x7f0e('0x7')]},'customField':{'type':Sequelize[_0x7f0e('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xad73=['string','variable','customVariable','picklist','STRING','sequelize','exports','ENUM'];(function(_0x5d83c0,_0x133c60){var _0x2979d8=function(_0x497d75){while(--_0x497d75){_0x5d83c0['push'](_0x5d83c0['shift']());}};_0x2979d8(++_0x133c60);}(_0xad73,0xed));var _0x3ad7=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xad73[_0x4565bf];return _0x5610ba;};'use strict';var Sequelize=require(_0x3ad7('0x0'));module[_0x3ad7('0x1')]={'type':{'type':Sequelize[_0x3ad7('0x2')](_0x3ad7('0x3'),_0x3ad7('0x4'),_0x3ad7('0x5'),'keyValue',_0x3ad7('0x6')),'defaultValue':_0x3ad7('0x3')},'content':{'type':Sequelize[_0x3ad7('0x7')]},'key':{'type':Sequelize[_0x3ad7('0x7')]},'keyType':{'type':Sequelize[_0x3ad7('0x2')](_0x3ad7('0x3'),'variable','customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x3ad7('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 37e53f2..fb27e4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x679b=['undefined','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','FreshsalesField','rawAttributes','fieldName','key','query','filters','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','count','include','findAll','params','intersection','length','catch','create','body','find','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../config/logger','api','../../config/license/util','sendStatus','status','end','json','offset'];(function(_0x3cd80f,_0x39b658){var _0x2439a1=function(_0x379e16){while(--_0x379e16){_0x3cd80f['push'](_0x3cd80f['shift']());}};_0x2439a1(++_0x39b658);}(_0x679b,0x180));var _0xb679=function(_0x1a2506,_0xf17646){_0x1a2506=_0x1a2506-0x0;var _0x2cd4ef=_0x679b[_0x1a2506];return _0x2cd4ef;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb679('0x0'));var zipdir=require(_0xb679('0x1'));var jsonpatch=require(_0xb679('0x2'));var rp=require('request-promise');var moment=require(_0xb679('0x3'));var BPromise=require(_0xb679('0x4'));var Mustache=require('mustache');var util=require(_0xb679('0x5'));var path=require('path');var sox=require(_0xb679('0x6'));var csv=require(_0xb679('0x7'));var ejs=require(_0xb679('0x8'));var fs=require('fs');var fs_extra=require(_0xb679('0x9'));var _=require('lodash');var squel=require(_0xb679('0xa'));var crypto=require(_0xb679('0xb'));var jsforce=require(_0xb679('0xc'));var deskjs=require(_0xb679('0xd'));var toCsv=require(_0xb679('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb679('0xe'));var authService=require(_0xb679('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb679('0x10'))(_0xb679('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb679('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xbabed9,_0x5465ac){_0x5465ac=_0x5465ac||0xcc;return function(_0x2b7c24){if(_0x2b7c24){return _0xbabed9[_0xb679('0x13')](_0x5465ac);}return _0xbabed9[_0xb679('0x14')](_0x5465ac)[_0xb679('0x15')]();};}function respondWithResult(_0x54659d,_0x16f6b6){_0x16f6b6=_0x16f6b6||0xc8;return function(_0x4fbd86){if(_0x4fbd86){return _0x54659d[_0xb679('0x14')](_0x16f6b6)[_0xb679('0x16')](_0x4fbd86);}};}function respondWithFilteredResult(_0x4f6c34,_0x3d1d01){return function(_0x11df5a){if(_0x11df5a){var _0x71ba15=typeof _0x3d1d01[_0xb679('0x17')]===_0xb679('0x18')&&typeof _0x3d1d01[_0xb679('0x19')]==='undefined';var _0x59d7e4=_0x11df5a['count'];var _0x538122=_0x71ba15?0x0:_0x3d1d01['offset'];var _0x293c42=_0x71ba15?_0x11df5a['count']:_0x3d1d01[_0xb679('0x17')]+_0x3d1d01[_0xb679('0x19')];var _0x1b102f;if(_0x293c42>=_0x59d7e4){_0x293c42=_0x59d7e4;_0x1b102f=0xc8;}else{_0x1b102f=0xce;}_0x4f6c34[_0xb679('0x14')](_0x1b102f);return _0x4f6c34[_0xb679('0x1a')](_0xb679('0x1b'),_0x538122+'-'+_0x293c42+'/'+_0x59d7e4)[_0xb679('0x16')](_0x11df5a);}return null;};}function patchUpdates(_0x295cc8){return function(_0x4f1261){try{jsonpatch[_0xb679('0x1c')](_0x4f1261,_0x295cc8,!![]);}catch(_0x1e2764){return BPromise[_0xb679('0x1d')](_0x1e2764);}return _0x4f1261[_0xb679('0x1e')]();};}function saveUpdates(_0x35e9cc,_0xe583e0){return function(_0x5d271b){if(_0x5d271b){return _0x5d271b['update'](_0x35e9cc)[_0xb679('0x1f')](function(_0x28b0ee){return _0x28b0ee;});}return null;};}function removeEntity(_0x135c05,_0x1937be){return function(_0x3fdfcf){if(_0x3fdfcf){return _0x3fdfcf[_0xb679('0x20')]()[_0xb679('0x1f')](function(){_0x135c05['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xc7019d,_0xb7925e){return function(_0x2a11f0){if(!_0x2a11f0){_0xc7019d[_0xb679('0x13')](0x194);}return _0x2a11f0;};}function handleError(_0xcb3ac,_0x56939c){_0x56939c=_0x56939c||0x1f4;return function(_0x969ca4){logger[_0xb679('0x21')](_0x969ca4[_0xb679('0x22')]);if(_0x969ca4[_0xb679('0x23')]){delete _0x969ca4[_0xb679('0x23')];}_0xcb3ac['status'](_0x56939c)[_0xb679('0x24')](_0x969ca4);};}exports['index']=function(_0x4e60bd,_0x3504f0){var _0x33a1c9={},_0x5077af={},_0x4fa8d2={'count':0x0,'rows':[]};var _0x50aae9=_[_0xb679('0x25')](db[_0xb679('0x26')][_0xb679('0x27')],function(_0x22de88){return{'name':_0x22de88[_0xb679('0x28')],'type':_0x22de88['type'][_0xb679('0x29')]};});_0x5077af['model']=_[_0xb679('0x25')](_0x50aae9,'name');_0x5077af[_0xb679('0x2a')]=_['keys'](_0x4e60bd['query']);_0x5077af[_0xb679('0x2b')]=_['intersection'](_0x5077af['model'],_0x5077af[_0xb679('0x2a')]);_0x33a1c9[_0xb679('0x2c')]=_['intersection'](_0x5077af[_0xb679('0x2d')],qs[_0xb679('0x2e')](_0x4e60bd['query'][_0xb679('0x2e')]));_0x33a1c9[_0xb679('0x2c')]=_0x33a1c9[_0xb679('0x2c')]['length']?_0x33a1c9[_0xb679('0x2c')]:_0x5077af[_0xb679('0x2d')];if(!_0x4e60bd[_0xb679('0x2a')][_0xb679('0x2f')](_0xb679('0x30'))){_0x33a1c9['limit']=qs[_0xb679('0x19')](_0x4e60bd[_0xb679('0x2a')][_0xb679('0x19')]);_0x33a1c9[_0xb679('0x17')]=qs[_0xb679('0x17')](_0x4e60bd[_0xb679('0x2a')]['offset']);}_0x33a1c9[_0xb679('0x31')]=qs[_0xb679('0x32')](_0x4e60bd[_0xb679('0x2a')][_0xb679('0x32')]);_0x33a1c9[_0xb679('0x33')]=qs[_0xb679('0x2b')](_[_0xb679('0x34')](_0x4e60bd[_0xb679('0x2a')],_0x5077af[_0xb679('0x2b')]),_0x50aae9);if(_0x4e60bd[_0xb679('0x2a')][_0xb679('0x35')]){_0x33a1c9[_0xb679('0x33')]=_['merge'](_0x33a1c9[_0xb679('0x33')],{'$or':_[_0xb679('0x25')](_0x50aae9,function(_0x1c5975){if(_0x1c5975[_0xb679('0x36')]!==_0xb679('0x37')){var _0x7d1756={};_0x7d1756[_0x1c5975[_0xb679('0x23')]]={'$like':'%'+_0x4e60bd[_0xb679('0x2a')][_0xb679('0x35')]+'%'};return _0x7d1756;}})});}_0x33a1c9=_[_0xb679('0x38')]({},_0x33a1c9,_0x4e60bd[_0xb679('0x39')]);var _0x11e89e={'where':_0x33a1c9['where']};return db[_0xb679('0x26')][_0xb679('0x3a')](_0x11e89e)['then'](function(_0x1c6b9b){_0x4fa8d2[_0xb679('0x3a')]=_0x1c6b9b;if(_0x4e60bd[_0xb679('0x2a')]['includeAll']){_0x33a1c9[_0xb679('0x3b')]=[{'all':!![]}];}return db[_0xb679('0x26')][_0xb679('0x3c')](_0x33a1c9);})[_0xb679('0x1f')](function(_0x193d4d){_0x4fa8d2['rows']=_0x193d4d;return _0x4fa8d2;})['then'](respondWithFilteredResult(_0x3504f0,_0x33a1c9))['catch'](handleError(_0x3504f0,null));};exports['show']=function(_0x4e24ed,_0x5299e3){var _0x5222b7={'raw':!![],'where':{'id':_0x4e24ed[_0xb679('0x3d')]['id']}},_0x14994f={};_0x14994f[_0xb679('0x2d')]=_['keys'](db['FreshsalesField']['rawAttributes']);_0x14994f[_0xb679('0x2a')]=_['keys'](_0x4e24ed[_0xb679('0x2a')]);_0x14994f['filters']=_[_0xb679('0x3e')](_0x14994f[_0xb679('0x2d')],_0x14994f['query']);_0x5222b7[_0xb679('0x2c')]=_[_0xb679('0x3e')](_0x14994f[_0xb679('0x2d')],qs[_0xb679('0x2e')](_0x4e24ed['query'][_0xb679('0x2e')]));_0x5222b7[_0xb679('0x2c')]=_0x5222b7[_0xb679('0x2c')][_0xb679('0x3f')]?_0x5222b7['attributes']:_0x14994f[_0xb679('0x2d')];if(_0x4e24ed[_0xb679('0x2a')]['includeAll']){_0x5222b7['include']=[{'all':!![]}];}_0x5222b7=_[_0xb679('0x38')]({},_0x5222b7,_0x4e24ed[_0xb679('0x39')]);return db['FreshsalesField']['find'](_0x5222b7)[_0xb679('0x1f')](handleEntityNotFound(_0x5299e3,null))['then'](respondWithResult(_0x5299e3,null))[_0xb679('0x40')](handleError(_0x5299e3,null));};exports[_0xb679('0x41')]=function(_0x196fe7,_0xfb48ac){return db[_0xb679('0x26')]['create'](_0x196fe7[_0xb679('0x42')],{})[_0xb679('0x1f')](respondWithResult(_0xfb48ac,0xc9))[_0xb679('0x40')](handleError(_0xfb48ac,null));};exports['update']=function(_0x2ff31b,_0x42c557){if(_0x2ff31b[_0xb679('0x42')]['id']){delete _0x2ff31b[_0xb679('0x42')]['id'];}return db[_0xb679('0x26')][_0xb679('0x43')]({'where':{'id':_0x2ff31b[_0xb679('0x3d')]['id']}})[_0xb679('0x1f')](handleEntityNotFound(_0x42c557,null))[_0xb679('0x1f')](saveUpdates(_0x2ff31b[_0xb679('0x42')],null))[_0xb679('0x1f')](respondWithResult(_0x42c557,null))[_0xb679('0x40')](handleError(_0x42c557,null));};exports[_0xb679('0x20')]=function(_0xd80732,_0x4c6b97){return db[_0xb679('0x26')][_0xb679('0x43')]({'where':{'id':_0xd80732[_0xb679('0x3d')]['id']}})[_0xb679('0x1f')](handleEntityNotFound(_0x4c6b97,null))['then'](removeEntity(_0x4c6b97,null))['catch'](handleError(_0x4c6b97,null));};
\ No newline at end of file
+var _0x6681=['end','json','undefined','count','offset','limit','set','apply','reject','update','destroy','then','error','name','send','index','rawAttributes','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','filter','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','FreshsalesField','body','eml-format','rimraf','request-promise','bluebird','mustache','util','sox','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/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x3ca1d7,_0x34a0c5){var _0x4287a4=function(_0x112da3){while(--_0x112da3){_0x3ca1d7['push'](_0x3ca1d7['shift']());}};_0x4287a4(++_0x34a0c5);}(_0x6681,0x1e6));var _0x1668=function(_0x523980,_0x40ede){_0x523980=_0x523980-0x0;var _0x2d5dab=_0x6681[_0x523980];return _0x2d5dab;};'use strict';var emlformat=require(_0x1668('0x0'));var rimraf=require(_0x1668('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1668('0x2'));var moment=require('moment');var BPromise=require(_0x1668('0x3'));var Mustache=require(_0x1668('0x4'));var util=require(_0x1668('0x5'));var path=require('path');var sox=require(_0x1668('0x6'));var csv=require(_0x1668('0x7'));var ejs=require(_0x1668('0x8'));var fs=require('fs');var fs_extra=require(_0x1668('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1668('0xa'));var deskjs=require(_0x1668('0xb'));var toCsv=require(_0x1668('0x7'));var querystring=require(_0x1668('0xc'));var Papa=require(_0x1668('0xd'));var Redis=require('ioredis');var authService=require(_0x1668('0xe'));var qs=require(_0x1668('0xf'));var as=require(_0x1668('0x10'));var hardwareService=require(_0x1668('0x11'));var logger=require(_0x1668('0x12'))(_0x1668('0x13'));var utils=require('../../config/utils');var config=require(_0x1668('0x14'));var licenseUtil=require(_0x1668('0x15'));var db=require(_0x1668('0x16'))['db'];function respondWithStatusCode(_0x220c1a,_0x2f15c8){_0x2f15c8=_0x2f15c8||0xcc;return function(_0x105a52){if(_0x105a52){return _0x220c1a[_0x1668('0x17')](_0x2f15c8);}return _0x220c1a[_0x1668('0x18')](_0x2f15c8)[_0x1668('0x19')]();};}function respondWithResult(_0x51f2f5,_0x3d342e){_0x3d342e=_0x3d342e||0xc8;return function(_0x389826){if(_0x389826){return _0x51f2f5[_0x1668('0x18')](_0x3d342e)[_0x1668('0x1a')](_0x389826);}};}function respondWithFilteredResult(_0x3ca33e,_0x4441ba){return function(_0xa74653){if(_0xa74653){var _0x17a055=typeof _0x4441ba['offset']===_0x1668('0x1b')&&typeof _0x4441ba['limit']==='undefined';var _0x5a5f39=_0xa74653[_0x1668('0x1c')];var _0xd566b=_0x17a055?0x0:_0x4441ba[_0x1668('0x1d')];var _0x1c3b62=_0x17a055?_0xa74653[_0x1668('0x1c')]:_0x4441ba[_0x1668('0x1d')]+_0x4441ba[_0x1668('0x1e')];var _0x2b1c94;if(_0x1c3b62>=_0x5a5f39){_0x1c3b62=_0x5a5f39;_0x2b1c94=0xc8;}else{_0x2b1c94=0xce;}_0x3ca33e[_0x1668('0x18')](_0x2b1c94);return _0x3ca33e[_0x1668('0x1f')]('Content-Range',_0xd566b+'-'+_0x1c3b62+'/'+_0x5a5f39)[_0x1668('0x1a')](_0xa74653);}return null;};}function patchUpdates(_0xa4553c){return function(_0x11e540){try{jsonpatch[_0x1668('0x20')](_0x11e540,_0xa4553c,!![]);}catch(_0x1b85f5){return BPromise[_0x1668('0x21')](_0x1b85f5);}return _0x11e540['save']();};}function saveUpdates(_0x1b977f,_0x387c43){return function(_0x189263){if(_0x189263){return _0x189263[_0x1668('0x22')](_0x1b977f)['then'](function(_0x11584e){return _0x11584e;});}return null;};}function removeEntity(_0x12c6c2,_0xe8c60d){return function(_0x1d113e){if(_0x1d113e){return _0x1d113e[_0x1668('0x23')]()[_0x1668('0x24')](function(){_0x12c6c2[_0x1668('0x18')](0xcc)[_0x1668('0x19')]();});}};}function handleEntityNotFound(_0x4bb4c7,_0x562131){return function(_0x1b2fb6){if(!_0x1b2fb6){_0x4bb4c7[_0x1668('0x17')](0x194);}return _0x1b2fb6;};}function handleError(_0x989f80,_0x343a32){_0x343a32=_0x343a32||0x1f4;return function(_0x490c07){logger[_0x1668('0x25')](_0x490c07['stack']);if(_0x490c07['name']){delete _0x490c07[_0x1668('0x26')];}_0x989f80[_0x1668('0x18')](_0x343a32)[_0x1668('0x27')](_0x490c07);};}exports[_0x1668('0x28')]=function(_0xce75fc,_0x2ac6e8){var _0x139d71={},_0x497373={},_0x5829b6={'count':0x0,'rows':[]};var _0x28d26c=_['map'](db['FreshsalesField'][_0x1668('0x29')],function(_0x1ea46b){return{'name':_0x1ea46b[_0x1668('0x2a')],'type':_0x1ea46b[_0x1668('0x2b')][_0x1668('0x2c')]};});_0x497373[_0x1668('0x2d')]=_[_0x1668('0x2e')](_0x28d26c,'name');_0x497373[_0x1668('0x2f')]=_['keys'](_0xce75fc[_0x1668('0x2f')]);_0x497373[_0x1668('0x30')]=_['intersection'](_0x497373[_0x1668('0x2d')],_0x497373[_0x1668('0x2f')]);_0x139d71[_0x1668('0x31')]=_[_0x1668('0x32')](_0x497373[_0x1668('0x2d')],qs[_0x1668('0x33')](_0xce75fc[_0x1668('0x2f')][_0x1668('0x33')]));_0x139d71[_0x1668('0x31')]=_0x139d71[_0x1668('0x31')][_0x1668('0x34')]?_0x139d71[_0x1668('0x31')]:_0x497373['model'];if(!_0xce75fc[_0x1668('0x2f')][_0x1668('0x35')](_0x1668('0x36'))){_0x139d71[_0x1668('0x1e')]=qs[_0x1668('0x1e')](_0xce75fc[_0x1668('0x2f')][_0x1668('0x1e')]);_0x139d71[_0x1668('0x1d')]=qs['offset'](_0xce75fc['query'][_0x1668('0x1d')]);}_0x139d71[_0x1668('0x37')]=qs[_0x1668('0x38')](_0xce75fc[_0x1668('0x2f')][_0x1668('0x38')]);_0x139d71[_0x1668('0x39')]=qs['filters'](_['pick'](_0xce75fc['query'],_0x497373[_0x1668('0x30')]),_0x28d26c);if(_0xce75fc[_0x1668('0x2f')]['filter']){_0x139d71[_0x1668('0x39')]=_[_0x1668('0x3a')](_0x139d71['where'],{'$or':_[_0x1668('0x2e')](_0x28d26c,function(_0x17b4ee){if(_0x17b4ee[_0x1668('0x2b')]!=='VIRTUAL'){var _0x1b5486={};_0x1b5486[_0x17b4ee[_0x1668('0x26')]]={'$like':'%'+_0xce75fc['query'][_0x1668('0x3b')]+'%'};return _0x1b5486;}})});}_0x139d71=_[_0x1668('0x3a')]({},_0x139d71,_0xce75fc[_0x1668('0x3c')]);var _0x3940c2={'where':_0x139d71[_0x1668('0x39')]};return db['FreshsalesField'][_0x1668('0x1c')](_0x3940c2)[_0x1668('0x24')](function(_0x631b6a){_0x5829b6[_0x1668('0x1c')]=_0x631b6a;if(_0xce75fc[_0x1668('0x2f')]['includeAll']){_0x139d71[_0x1668('0x3d')]=[{'all':!![]}];}return db['FreshsalesField'][_0x1668('0x3e')](_0x139d71);})[_0x1668('0x24')](function(_0x53bce4){_0x5829b6[_0x1668('0x3f')]=_0x53bce4;return _0x5829b6;})[_0x1668('0x24')](respondWithFilteredResult(_0x2ac6e8,_0x139d71))[_0x1668('0x40')](handleError(_0x2ac6e8,null));};exports[_0x1668('0x41')]=function(_0x10d36d,_0x242a9a){var _0x37e487={'raw':!![],'where':{'id':_0x10d36d[_0x1668('0x42')]['id']}},_0x50812f={};_0x50812f[_0x1668('0x2d')]=_[_0x1668('0x43')](db['FreshsalesField'][_0x1668('0x29')]);_0x50812f[_0x1668('0x2f')]=_[_0x1668('0x43')](_0x10d36d[_0x1668('0x2f')]);_0x50812f[_0x1668('0x30')]=_[_0x1668('0x32')](_0x50812f[_0x1668('0x2d')],_0x50812f['query']);_0x37e487[_0x1668('0x31')]=_[_0x1668('0x32')](_0x50812f[_0x1668('0x2d')],qs[_0x1668('0x33')](_0x10d36d[_0x1668('0x2f')][_0x1668('0x33')]));_0x37e487[_0x1668('0x31')]=_0x37e487[_0x1668('0x31')][_0x1668('0x34')]?_0x37e487[_0x1668('0x31')]:_0x50812f[_0x1668('0x2d')];if(_0x10d36d[_0x1668('0x2f')][_0x1668('0x44')]){_0x37e487[_0x1668('0x3d')]=[{'all':!![]}];}_0x37e487=_[_0x1668('0x3a')]({},_0x37e487,_0x10d36d[_0x1668('0x3c')]);return db['FreshsalesField'][_0x1668('0x45')](_0x37e487)[_0x1668('0x24')](handleEntityNotFound(_0x242a9a,null))[_0x1668('0x24')](respondWithResult(_0x242a9a,null))[_0x1668('0x40')](handleError(_0x242a9a,null));};exports[_0x1668('0x46')]=function(_0xa01ce4,_0x285dfb){return db[_0x1668('0x47')]['create'](_0xa01ce4[_0x1668('0x48')],{})[_0x1668('0x24')](respondWithResult(_0x285dfb,0xc9))[_0x1668('0x40')](handleError(_0x285dfb,null));};exports[_0x1668('0x22')]=function(_0x4802c9,_0xf865d7){if(_0x4802c9[_0x1668('0x48')]['id']){delete _0x4802c9[_0x1668('0x48')]['id'];}return db['FreshsalesField'][_0x1668('0x45')]({'where':{'id':_0x4802c9['params']['id']}})[_0x1668('0x24')](handleEntityNotFound(_0xf865d7,null))[_0x1668('0x24')](saveUpdates(_0x4802c9['body'],null))[_0x1668('0x24')](respondWithResult(_0xf865d7,null))[_0x1668('0x40')](handleError(_0xf865d7,null));};exports[_0x1668('0x23')]=function(_0x12bac7,_0x3359d7){return db['FreshsalesField'][_0x1668('0x45')]({'where':{'id':_0x12bac7['params']['id']}})[_0x1668('0x24')](handleEntityNotFound(_0x3359d7,null))[_0x1668('0x24')](removeEntity(_0x3359d7,null))[_0x1668('0x40')](handleError(_0x3359d7,null));};
\ No newline at end of file
index 9cdae4c..851b46b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c8b=['exports','define','int_freshsales_fields','idField','FieldId','util','api','moment','bluebird','path','rimraf','../../config/environment','./intFreshsalesField.attributes'];(function(_0xeab874,_0x5c248e){var _0x5bab28=function(_0xb98c14){while(--_0xb98c14){_0xeab874['push'](_0xeab874['shift']());}};_0x5bab28(++_0x5c248e);}(_0x3c8b,0x18b));var _0xb3c8=function(_0x3ae026,_0x50b98a){_0x3ae026=_0x3ae026-0x0;var _0x2307c0=_0x3c8b[_0x3ae026];return _0x2307c0;};'use strict';var _=require('lodash');var util=require(_0xb3c8('0x0'));var logger=require('../../config/logger')(_0xb3c8('0x1'));var moment=require(_0xb3c8('0x2'));var BPromise=require(_0xb3c8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb3c8('0x4'));var rimraf=require(_0xb3c8('0x5'));var config=require(_0xb3c8('0x6'));var attributes=require(_0xb3c8('0x7'));module[_0xb3c8('0x8')]=function(_0x1fa5f2,_0x46c864){return _0x1fa5f2[_0xb3c8('0x9')]('FreshsalesField',attributes,{'tableName':_0xb3c8('0xa'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0xb3c8('0xb'),_0xb3c8('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x160f=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesField.attributes','int_freshsales_fields'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x160f,0x1ef));var _0xf160=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x160f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf160('0x0'));var util=require(_0xf160('0x1'));var logger=require(_0xf160('0x2'))(_0xf160('0x3'));var moment=require('moment');var BPromise=require(_0xf160('0x4'));var rp=require(_0xf160('0x5'));var fs=require('fs');var path=require(_0xf160('0x6'));var rimraf=require(_0xf160('0x7'));var config=require(_0xf160('0x8'));var attributes=require(_0xf160('0x9'));module['exports']=function(_0x311d63,_0x11902f){return _0x311d63['define']('FreshsalesField',attributes,{'tableName':_0xf160('0xa'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 985abe5..f167fda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','http','request','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x16acb7,_0x4e85a7){var _0x51bdde=function(_0x5bcfa6){while(--_0x5bcfa6){_0x16acb7['push'](_0x16acb7['shift']());}};_0x51bdde(++_0x4e85a7);}(_0x90b1,0x1bb));var _0x190b=function(_0x47b3bc,_0x41cc2d){_0x47b3bc=_0x47b3bc-0x0;var _0x3b024f=_0x90b1[_0x47b3bc];return _0x3b024f;};'use strict';var _=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var moment=require(_0x190b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x190b('0x3'));var db=require(_0x190b('0x4'))['db'];var utils=require(_0x190b('0x5'));var logger=require(_0x190b('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x190b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x34a689,_0x3b57f7,_0x626aa1){return new BPromise(function(_0x311161,_0x802924){return client[_0x190b('0x8')](_0x34a689,_0x626aa1)['then'](function(_0x14b93d){logger[_0x190b('0x9')](_0x190b('0xa'),_0x3b57f7,_0x190b('0xb'));logger[_0x190b('0xc')](_0x190b('0xd'),_0x3b57f7,_0x190b('0xb'),JSON[_0x190b('0xe')](_0x14b93d));if(_0x14b93d['error']){if(_0x14b93d[_0x190b('0xf')][_0x190b('0x10')]===0x1f4){logger['error'](_0x190b('0xa'),_0x3b57f7,_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);return _0x802924(_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);}logger[_0x190b('0xf')](_0x190b('0xa'),_0x3b57f7,_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);return _0x311161(_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);}else{logger[_0x190b('0x9')](_0x190b('0xa'),_0x3b57f7,_0x190b('0xb'));_0x311161(_0x14b93d[_0x190b('0x12')][_0x190b('0x11')]);}})[_0x190b('0x13')](function(_0x5c63d9){logger[_0x190b('0xf')]('FreshsalesField,\x20%s,\x20%s',_0x3b57f7,_0x5c63d9);_0x802924(_0x5c63d9);});});}
\ No newline at end of file
+var _0x2675=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','randomstring','ioredis'];(function(_0x44c30a,_0x5d2636){var _0x341188=function(_0x46baef){while(--_0x46baef){_0x44c30a['push'](_0x44c30a['shift']());}};_0x341188(++_0x5d2636);}(_0x2675,0x75));var _0x5267=function(_0x4496f3,_0x309546){_0x4496f3=_0x4496f3-0x0;var _0x5db3c8=_0x2675[_0x4496f3];return _0x5db3c8;};'use strict';var _=require(_0x5267('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5267('0x1'));var fs=require('fs');var Redis=require(_0x5267('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x5267('0x3'));var logger=require(_0x5267('0x4'))('rpc');var config=require(_0x5267('0x5'));var jayson=require(_0x5267('0x6'));var client=jayson[_0x5267('0x7')][_0x5267('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x20f065,_0xc56cd5,_0x527c16){return new BPromise(function(_0x9e0a27,_0x46bfdf){return client['request'](_0x20f065,_0x527c16)[_0x5267('0x9')](function(_0x5d6645){logger[_0x5267('0xa')](_0x5267('0xb'),_0xc56cd5,_0x5267('0xc'));logger['debug'](_0x5267('0xd'),_0xc56cd5,'request\x20sent',JSON[_0x5267('0xe')](_0x5d6645));if(_0x5d6645['error']){if(_0x5d6645[_0x5267('0xf')][_0x5267('0x10')]===0x1f4){logger[_0x5267('0xf')](_0x5267('0xb'),_0xc56cd5,_0x5d6645[_0x5267('0xf')][_0x5267('0x11')]);return _0x46bfdf(_0x5d6645[_0x5267('0xf')][_0x5267('0x11')]);}logger[_0x5267('0xf')](_0x5267('0xb'),_0xc56cd5,_0x5d6645[_0x5267('0xf')][_0x5267('0x11')]);return _0x9e0a27(_0x5d6645[_0x5267('0xf')]['message']);}else{logger['info'](_0x5267('0xb'),_0xc56cd5,_0x5267('0xc'));_0x9e0a27(_0x5d6645[_0x5267('0x12')][_0x5267('0x11')]);}})[_0x5267('0x13')](function(_0x27e5c6){logger[_0x5267('0xf')](_0x5267('0xb'),_0xc56cd5,_0x27e5c6);_0x46bfdf(_0x27e5c6);});});}
\ No newline at end of file
index d736fe1..056e9b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0xe925d0,_0xa7e39b){var _0x413990=function(_0x1e0370){while(--_0x1e0370){_0xe925d0['push'](_0xe925d0['shift']());}};_0x413990(++_0xa7e39b);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'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 _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(_0xbdee10,_0x10c5b2){var _0x22ff75=function(_0x2a9e9f){while(--_0x2a9e9f){_0xbdee10['push'](_0xbdee10['shift']());}};_0x22ff75(++_0x10c5b2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('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
index 9459094..6a55798 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x090a=['newTab','sequelize','exports','STRING','ENUM','integrationTab'];(function(_0x5ec7f9,_0x3868a4){var _0x151960=function(_0x251a2c){while(--_0x251a2c){_0x5ec7f9['push'](_0x5ec7f9['shift']());}};_0x151960(++_0x3868a4);}(_0x090a,0x133));var _0xa090=function(_0x46a394,_0xc74b03){_0x46a394=_0x46a394-0x0;var _0x1b7534=_0x090a[_0x46a394];return _0x1b7534;};'use strict';var Sequelize=require(_0xa090('0x0'));module[_0xa090('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa090('0x2')]},'username':{'type':Sequelize[_0xa090('0x2')],'unique':'username'},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xa090('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xa090('0x2')]},'securityToken':{'type':Sequelize[_0xa090('0x2')]},'serverUrl':{'type':Sequelize[_0xa090('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xa090('0x3')](_0xa090('0x4'),_0xa090('0x5')),'defaultValue':_0xa090('0x4')}};
\ No newline at end of file
+var _0x29b1=['sequelize','exports','STRING','ENUM','integrationTab'];(function(_0x342700,_0x569f75){var _0x53406f=function(_0x3b3c32){while(--_0x3b3c32){_0x342700['push'](_0x342700['shift']());}};_0x53406f(++_0x569f75);}(_0x29b1,0x16d));var _0x129b=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0x29b1[_0x5c9307];return _0x373e29;};'use strict';var Sequelize=require(_0x129b('0x0'));module[_0x129b('0x1')]={'name':{'type':Sequelize[_0x129b('0x2')]},'description':{'type':Sequelize[_0x129b('0x2')]},'username':{'type':Sequelize[_0x129b('0x2')],'unique':'username'},'remoteUri':{'type':Sequelize[_0x129b('0x2')]},'password':{'type':Sequelize[_0x129b('0x2')]},'clientId':{'type':Sequelize[_0x129b('0x2')]},'clientSecret':{'type':Sequelize[_0x129b('0x2')]},'securityToken':{'type':Sequelize[_0x129b('0x2')]},'serverUrl':{'type':Sequelize[_0x129b('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x129b('0x3')](_0x129b('0x4'),'newTab'),'defaultValue':_0x129b('0x4')}};
\ No newline at end of file
index d5e3cea..f7aa2df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26e8=['getFields','Task','clientId','username','password','securityToken','remoteUri','slice','lastIndexOf','Connection','clientSecret','login','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','Subject','Description','string','int','picklist','boolean','email','textarea','phone','includes','label','custom','picklistValues','value','True','true','False','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../components/integrations/configuration','sendStatus','status','offset','limit','undefined','count','set','json','apply','save','update','then','destroy','end','error','stack','name','send','index','map','SalesforceAccount','fieldName','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','intersection','find','create','body','getConfigurations','SalesforceConfiguration','order','pick','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','SalesforceField','Descriptions'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x26e8,0x12f));var _0x826e=function(_0x4d610f,_0x39c24f){_0x4d610f=_0x4d610f-0x0;var _0x440478=_0x26e8[_0x4d610f];return _0x440478;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x826e('0x0'));var zipdir=require(_0x826e('0x1'));var jsonpatch=require(_0x826e('0x2'));var rp=require(_0x826e('0x3'));var moment=require(_0x826e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x826e('0x5'));var util=require('util');var path=require(_0x826e('0x6'));var sox=require('sox');var csv=require(_0x826e('0x7'));var ejs=require(_0x826e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x826e('0x9'));var crypto=require(_0x826e('0xa'));var jsforce=require(_0x826e('0xb'));var deskjs=require(_0x826e('0xc'));var toCsv=require('to-csv');var querystring=require(_0x826e('0xd'));var Papa=require(_0x826e('0xe'));var Redis=require(_0x826e('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x826e('0x10'));var hardwareService=require(_0x826e('0x11'));var logger=require(_0x826e('0x12'))(_0x826e('0x13'));var utils=require(_0x826e('0x14'));var config=require(_0x826e('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x826e('0x16'));function respondWithStatusCode(_0x36d5e6,_0x166a84){_0x166a84=_0x166a84||0xcc;return function(_0x4a9200){if(_0x4a9200){return _0x36d5e6[_0x826e('0x17')](_0x166a84);}return _0x36d5e6[_0x826e('0x18')](_0x166a84)['end']();};}function respondWithResult(_0x196b9f,_0x571c04){_0x571c04=_0x571c04||0xc8;return function(_0x43843d){if(_0x43843d){return _0x196b9f['status'](_0x571c04)['json'](_0x43843d);}};}function respondWithFilteredResult(_0x30b551,_0x1f348a){return function(_0x44b064){if(_0x44b064){var _0x5547cb=typeof _0x1f348a[_0x826e('0x19')]==='undefined'&&typeof _0x1f348a[_0x826e('0x1a')]===_0x826e('0x1b');var _0x4e87c0=_0x44b064[_0x826e('0x1c')];var _0x44cecb=_0x5547cb?0x0:_0x1f348a[_0x826e('0x19')];var _0x25727b=_0x5547cb?_0x44b064['count']:_0x1f348a['offset']+_0x1f348a['limit'];var _0x1d66f6;if(_0x25727b>=_0x4e87c0){_0x25727b=_0x4e87c0;_0x1d66f6=0xc8;}else{_0x1d66f6=0xce;}_0x30b551['status'](_0x1d66f6);return _0x30b551[_0x826e('0x1d')]('Content-Range',_0x44cecb+'-'+_0x25727b+'/'+_0x4e87c0)[_0x826e('0x1e')](_0x44b064);}return null;};}function patchUpdates(_0x60ff97){return function(_0x46cf36){try{jsonpatch[_0x826e('0x1f')](_0x46cf36,_0x60ff97,!![]);}catch(_0x2fdc07){return BPromise['reject'](_0x2fdc07);}return _0x46cf36[_0x826e('0x20')]();};}function saveUpdates(_0x28a9d2,_0x516c25){return function(_0x2ed155){if(_0x2ed155){return _0x2ed155[_0x826e('0x21')](_0x28a9d2)[_0x826e('0x22')](function(_0x412a8e){return _0x412a8e;});}return null;};}function removeEntity(_0x5a13c5,_0x2dd35e){return function(_0x2ff201){if(_0x2ff201){return _0x2ff201[_0x826e('0x23')]()['then'](function(){_0x5a13c5[_0x826e('0x18')](0xcc)[_0x826e('0x24')]();});}};}function handleEntityNotFound(_0x187538,_0x498edb){return function(_0x221ef2){if(!_0x221ef2){_0x187538[_0x826e('0x17')](0x194);}return _0x221ef2;};}function handleError(_0x286570,_0x28ad20){_0x28ad20=_0x28ad20||0x1f4;return function(_0x57cb4d){logger[_0x826e('0x25')](_0x57cb4d[_0x826e('0x26')]);if(_0x57cb4d[_0x826e('0x27')]){delete _0x57cb4d[_0x826e('0x27')];}_0x286570[_0x826e('0x18')](_0x28ad20)[_0x826e('0x28')](_0x57cb4d);};}exports[_0x826e('0x29')]=function(_0x93c6f9,_0x35cc0a){var _0x274f1a={},_0x453762={},_0x1e1af4={'count':0x0,'rows':[]};var _0x43badf=_[_0x826e('0x2a')](db[_0x826e('0x2b')]['rawAttributes'],function(_0x35d932){return{'name':_0x35d932[_0x826e('0x2c')],'type':_0x35d932['type'][_0x826e('0x2d')]};});_0x453762[_0x826e('0x2e')]=_['map'](_0x43badf,'name');_0x453762[_0x826e('0x2f')]=_[_0x826e('0x30')](_0x93c6f9[_0x826e('0x2f')]);_0x453762[_0x826e('0x31')]=_['intersection'](_0x453762[_0x826e('0x2e')],_0x453762[_0x826e('0x2f')]);_0x274f1a[_0x826e('0x32')]=_['intersection'](_0x453762[_0x826e('0x2e')],qs[_0x826e('0x33')](_0x93c6f9['query'][_0x826e('0x33')]));_0x274f1a[_0x826e('0x32')]=_0x274f1a['attributes'][_0x826e('0x34')]?_0x274f1a['attributes']:_0x453762[_0x826e('0x2e')];if(!_0x93c6f9[_0x826e('0x2f')][_0x826e('0x35')](_0x826e('0x36'))){_0x274f1a[_0x826e('0x1a')]=qs[_0x826e('0x1a')](_0x93c6f9[_0x826e('0x2f')][_0x826e('0x1a')]);_0x274f1a[_0x826e('0x19')]=qs[_0x826e('0x19')](_0x93c6f9['query'][_0x826e('0x19')]);}_0x274f1a['order']=qs[_0x826e('0x37')](_0x93c6f9[_0x826e('0x2f')]['sort']);_0x274f1a[_0x826e('0x38')]=qs[_0x826e('0x31')](_['pick'](_0x93c6f9['query'],_0x453762[_0x826e('0x31')]),_0x43badf);if(_0x93c6f9['query'][_0x826e('0x39')]){_0x274f1a['where']=_['merge'](_0x274f1a['where'],{'$or':_[_0x826e('0x2a')](_0x43badf,function(_0x34b6f4){if(_0x34b6f4[_0x826e('0x3a')]!==_0x826e('0x3b')){var _0x2053a8={};_0x2053a8[_0x34b6f4[_0x826e('0x27')]]={'$like':'%'+_0x93c6f9[_0x826e('0x2f')][_0x826e('0x39')]+'%'};return _0x2053a8;}})});}_0x274f1a=_[_0x826e('0x3c')]({},_0x274f1a,_0x93c6f9[_0x826e('0x3d')]);var _0x3f6af8={'where':_0x274f1a[_0x826e('0x38')]};return db['SalesforceAccount'][_0x826e('0x1c')](_0x3f6af8)[_0x826e('0x22')](function(_0x400a85){_0x1e1af4[_0x826e('0x1c')]=_0x400a85;if(_0x93c6f9[_0x826e('0x2f')][_0x826e('0x3e')]){_0x274f1a[_0x826e('0x3f')]=[{'all':!![]}];}return db['SalesforceAccount'][_0x826e('0x40')](_0x274f1a);})[_0x826e('0x22')](function(_0x43a208){_0x1e1af4[_0x826e('0x41')]=_0x43a208;return _0x1e1af4;})[_0x826e('0x22')](respondWithFilteredResult(_0x35cc0a,_0x274f1a))[_0x826e('0x42')](handleError(_0x35cc0a,null));};exports[_0x826e('0x43')]=function(_0xb3b768,_0x106a59){var _0x813af8={'raw':![],'where':{'id':_0xb3b768[_0x826e('0x44')]['id']}},_0x58b68d={};_0x58b68d[_0x826e('0x2e')]=_[_0x826e('0x30')](db[_0x826e('0x2b')][_0x826e('0x45')]);_0x58b68d['query']=_[_0x826e('0x30')](_0xb3b768['query']);_0x58b68d['filters']=_[_0x826e('0x46')](_0x58b68d[_0x826e('0x2e')],_0x58b68d[_0x826e('0x2f')]);_0x813af8['attributes']=_[_0x826e('0x46')](_0x58b68d['model'],qs[_0x826e('0x33')](_0xb3b768[_0x826e('0x2f')][_0x826e('0x33')]));_0x813af8[_0x826e('0x32')]=_0x813af8[_0x826e('0x32')][_0x826e('0x34')]?_0x813af8['attributes']:_0x58b68d[_0x826e('0x2e')];if(_0xb3b768[_0x826e('0x2f')]['includeAll']){_0x813af8[_0x826e('0x3f')]=[{'all':!![]}];}_0x813af8=_[_0x826e('0x3c')]({},_0x813af8,_0xb3b768[_0x826e('0x3d')]);return db[_0x826e('0x2b')][_0x826e('0x47')](_0x813af8)[_0x826e('0x22')](handleEntityNotFound(_0x106a59,null))[_0x826e('0x22')](respondWithResult(_0x106a59,null))[_0x826e('0x42')](handleError(_0x106a59,null));};exports[_0x826e('0x48')]=function(_0x132927,_0x41a95f){return db[_0x826e('0x2b')][_0x826e('0x48')](_0x132927[_0x826e('0x49')],{})[_0x826e('0x22')](respondWithResult(_0x41a95f,0xc9))[_0x826e('0x42')](handleError(_0x41a95f,null));};exports[_0x826e('0x21')]=function(_0x383293,_0x455c5f){if(_0x383293[_0x826e('0x49')]['id']){delete _0x383293[_0x826e('0x49')]['id'];}return db[_0x826e('0x2b')][_0x826e('0x47')]({'where':{'id':_0x383293[_0x826e('0x44')]['id']}})[_0x826e('0x22')](handleEntityNotFound(_0x455c5f,null))[_0x826e('0x22')](saveUpdates(_0x383293[_0x826e('0x49')],null))[_0x826e('0x22')](respondWithResult(_0x455c5f,null))[_0x826e('0x42')](handleError(_0x455c5f,null));};exports[_0x826e('0x23')]=function(_0x581a6c,_0x3ec710){return db[_0x826e('0x2b')][_0x826e('0x47')]({'where':{'id':_0x581a6c[_0x826e('0x44')]['id']}})[_0x826e('0x22')](handleEntityNotFound(_0x3ec710,null))['then'](removeEntity(_0x3ec710,null))[_0x826e('0x42')](handleError(_0x3ec710,null));};exports[_0x826e('0x4a')]=function(_0xe19868,_0x22efcf,_0x2f059b){var _0x4c7637={};var _0x427afd={};var _0xe2a519;var _0x537425;return db[_0x826e('0x2b')]['findOne']({'where':{'id':_0xe19868[_0x826e('0x44')]['id']}})[_0x826e('0x22')](handleEntityNotFound(_0x22efcf,null))[_0x826e('0x22')](function(_0x47df2f){if(_0x47df2f){_0xe2a519=_0x47df2f;_0x427afd['model']=_[_0x826e('0x30')](db[_0x826e('0x4b')][_0x826e('0x45')]);_0x427afd[_0x826e('0x2f')]=_[_0x826e('0x30')](_0xe19868[_0x826e('0x2f')]);_0x427afd[_0x826e('0x31')]=_[_0x826e('0x46')](_0x427afd[_0x826e('0x2e')],_0x427afd[_0x826e('0x2f')]);_0x4c7637['attributes']=_[_0x826e('0x46')](_0x427afd[_0x826e('0x2e')],qs['fields'](_0xe19868[_0x826e('0x2f')]['fields']));_0x4c7637[_0x826e('0x32')]=_0x4c7637['attributes'][_0x826e('0x34')]?_0x4c7637[_0x826e('0x32')]:_0x427afd[_0x826e('0x2e')];_0x4c7637[_0x826e('0x4c')]=qs['sort'](_0xe19868[_0x826e('0x2f')][_0x826e('0x37')]);_0x4c7637[_0x826e('0x38')]=qs[_0x826e('0x31')](_[_0x826e('0x4d')](_0xe19868[_0x826e('0x2f')],_0x427afd[_0x826e('0x31')]));if(_0xe19868[_0x826e('0x2f')][_0x826e('0x39')]){_0x4c7637[_0x826e('0x38')]=_[_0x826e('0x3c')](_0x4c7637['where'],{'$or':_[_0x826e('0x2a')](_0x4c7637['attributes'],function(_0x211043){var _0x520fbb={};_0x520fbb[_0x211043]={'$like':'%'+_0xe19868[_0x826e('0x2f')][_0x826e('0x39')]+'%'};return _0x520fbb;})});}_0x4c7637=_[_0x826e('0x3c')]({},_0x4c7637,_0xe19868['options']);return _0xe2a519[_0x826e('0x4a')](_0x4c7637);}})[_0x826e('0x22')](function(_0x241fe6){if(_0x241fe6){_0x537425=_0x241fe6[_0x826e('0x34')];if(!_0xe19868[_0x826e('0x2f')][_0x826e('0x35')](_0x826e('0x36'))){_0x4c7637[_0x826e('0x1a')]=qs['limit'](_0xe19868[_0x826e('0x2f')]['limit']);_0x4c7637[_0x826e('0x19')]=qs[_0x826e('0x19')](_0xe19868['query'][_0x826e('0x19')]);}return _0xe2a519['getConfigurations'](_0x4c7637);}})[_0x826e('0x22')](function(_0x38fff9){if(_0x38fff9){return _0x38fff9?{'count':_0x537425,'rows':_0x38fff9}:null;}})[_0x826e('0x22')](respondWithResult(_0x22efcf,null))[_0x826e('0x42')](handleError(_0x22efcf,null));};exports[_0x826e('0x4e')]=function(_0x3e477f,_0x70f6cd,_0x54db9a){if(_0x3e477f[_0x826e('0x49')]['id']){delete _0x3e477f[_0x826e('0x49')]['id'];}return db[_0x826e('0x2b')][_0x826e('0x4f')]({'where':{'id':_0x3e477f['params']['id']}})['then'](handleEntityNotFound(_0x70f6cd,null))[_0x826e('0x22')](function(_0x2dd9f5){if(_0x2dd9f5){_0x3e477f[_0x826e('0x49')][_0x826e('0x50')]=_0x2dd9f5['id'];_0x3e477f[_0x826e('0x49')][_0x826e('0x51')]=integrations[_0x826e('0x52')](_0x3e477f['body'][_0x826e('0x53')],_0x3e477f['body'][_0x826e('0x3a')]);_0x3e477f[_0x826e('0x49')]['Descriptions']=integrations[_0x826e('0x54')](_0x3e477f[_0x826e('0x49')][_0x826e('0x53')],_0x3e477f[_0x826e('0x49')][_0x826e('0x3a')]);return db['SalesforceConfiguration'][_0x826e('0x48')](_0x3e477f['body'],{'include':[{'model':db[_0x826e('0x55')],'as':_0x826e('0x51')},{'model':db['SalesforceField'],'as':_0x826e('0x56')}]});}return null;})['then'](respondWithResult(_0x70f6cd,null))[_0x826e('0x42')](handleError(_0x70f6cd,null));};exports[_0x826e('0x57')]=function(_0x417477,_0x2204bf,_0x3b0d4d){var _0x3163c0;var _0x41bd97='';var _0x2fed8f=_0x826e('0x58');return db[_0x826e('0x2b')][_0x826e('0x4f')]({'where':{'id':_0x417477['params']['id']},'attributes':['id','remoteUri',_0x826e('0x59'),'clientSecret',_0x826e('0x5a'),_0x826e('0x5b'),_0x826e('0x5c')]})[_0x826e('0x22')](handleEntityNotFound(_0x2204bf,null))[_0x826e('0x22')](function(_0x43264c){if(_0x43264c){_0x41bd97=_0x43264c[_0x826e('0x5d')];var _0x20ec71=_0x41bd97[_0x826e('0x5e')](-0x1);if(_0x20ec71==='/'){_0x41bd97=_0x41bd97['substring'](0x0,_0x41bd97[_0x826e('0x5f')](_0x20ec71));}_0x3163c0=new jsforce[(_0x826e('0x60'))]({'oauth2':{'loginUrl':_0x41bd97,'clientId':_0x43264c['clientId'],'clientSecret':_0x43264c[_0x826e('0x61')]}});return _0x3163c0[_0x826e('0x62')](_0x43264c[_0x826e('0x5a')],_0x43264c[_0x826e('0x5b')][_0x826e('0x63')](_0x43264c[_0x826e('0x5c')]));}})['then'](function(_0x23d31e){if(_0x23d31e){if(!_[_0x826e('0x64')](_0x417477[_0x826e('0x2f')][_0x826e('0x65')])){_0x2fed8f=_0x417477[_0x826e('0x2f')][_0x826e('0x65')];}return _0x3163c0[_0x826e('0x66')](_0x2fed8f)[_0x826e('0x67')]();}})[_0x826e('0x22')](function(_0x59b8ac){var _0x538670=[_0x826e('0x68'),_0x826e('0x69'),_0x826e('0x6a'),'IsRecurrence',_0x826e('0x6b'),_0x826e('0x6c')];var _0x45e053=[_0x826e('0x6d'),_0x826e('0x6e'),_0x826e('0x6f'),_0x826e('0x70'),_0x826e('0x71'),_0x826e('0x72'),_0x826e('0x73')];if(_0x59b8ac){_['remove'](_0x59b8ac[_0x826e('0x33')],function(_0x583431){return _0x538670[_0x826e('0x74')](_0x583431['name'])||!_0x45e053[_0x826e('0x74')](_0x583431[_0x826e('0x3a')]);});return{'count':_0x59b8ac[_0x826e('0x33')][_0x826e('0x34')],'rows':_[_0x826e('0x2a')](_0x59b8ac['fields'],function(_0x2fea97){return{'id':_0x2fea97[_0x826e('0x27')],'name':_0x2fea97[_0x826e('0x75')],'custom':_0x2fea97[_0x826e('0x76')],'options':_0x2fea97[_0x826e('0x77')][_0x826e('0x34')]>0x0?_[_0x826e('0x2a')](_0x2fea97[_0x826e('0x77')],function(_0x8b4ed){return{'name':_0x8b4ed[_0x826e('0x75')],'value':_0x8b4ed[_0x826e('0x78')]};}):_0x2fea97[_0x826e('0x3a')]==_0x826e('0x70')?[{'name':_0x826e('0x79'),'value':_0x826e('0x7a')},{'name':_0x826e('0x7b'),'value':_0x826e('0x7c')}]:[]};})};}})[_0x826e('0x22')](respondWithResult(_0x2204bf,null))[_0x826e('0x42')](function(_0x267c03){var _0x4732fb=_0x417477[_0x826e('0x2f')][_0x826e('0x7d')]?0x1f4:_0x267c03[_0x826e('0x7e')]||0x1f4;logger[_0x826e('0x25')](_0x826e('0x7f'),_0x826e('0x57'),_0x4732fb,JSON[_0x826e('0x80')](_0x267c03));delete _0x267c03[_0x826e('0x27')];if(_0x4732fb===0x191){_0x4732fb=0x190;}_0x2204bf['status'](_0x4732fb)['send'](_0x417477[_0x826e('0x2f')][_0x826e('0x7d')]?{'message':_0x826e('0x81'),'statusCode':_0x267c03['statusCode']}:_0x267c03);});};
\ No newline at end of file
+var _0x3fab=['int','picklist','email','textarea','remove','includes','label','picklistValues','boolean','True','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','end','error','name','send','index','map','SalesforceAccount','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','where','pick','filter','merge','options','findAll','rows','catch','show','include','find','create','body','params','getConfigurations','findOne','SalesforceConfiguration','sort','hasOwnProperty','channel','getDescriptions','SalesforceField','Subjects','Descriptions','getFields','Task','remoteUri','username','password','securityToken','slice','substring','lastIndexOf','Connection','clientId','clientSecret','concat','isNil','ticketType','describe','OwnerId','IsReminderSet','IsRecurrence','Subject','Description','string'];(function(_0x332b8a,_0x43f444){var _0x4a891b=function(_0x5e6a04){while(--_0x5e6a04){_0x332b8a['push'](_0x332b8a['shift']());}};_0x4a891b(++_0x43f444);}(_0x3fab,0x184));var _0xb3fa=function(_0x54ee17,_0x53cf15){_0x54ee17=_0x54ee17-0x0;var _0x49c808=_0x3fab[_0x54ee17];return _0x49c808;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb3fa('0x0'));var zipdir=require(_0xb3fa('0x1'));var jsonpatch=require(_0xb3fa('0x2'));var rp=require(_0xb3fa('0x3'));var moment=require(_0xb3fa('0x4'));var BPromise=require(_0xb3fa('0x5'));var Mustache=require(_0xb3fa('0x6'));var util=require(_0xb3fa('0x7'));var path=require(_0xb3fa('0x8'));var sox=require('sox');var csv=require(_0xb3fa('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb3fa('0xa'));var _=require(_0xb3fa('0xb'));var squel=require(_0xb3fa('0xc'));var crypto=require(_0xb3fa('0xd'));var jsforce=require(_0xb3fa('0xe'));var deskjs=require(_0xb3fa('0xf'));var toCsv=require(_0xb3fa('0x9'));var querystring=require(_0xb3fa('0x10'));var Papa=require(_0xb3fa('0x11'));var Redis=require(_0xb3fa('0x12'));var authService=require(_0xb3fa('0x13'));var qs=require(_0xb3fa('0x14'));var as=require(_0xb3fa('0x15'));var hardwareService=require(_0xb3fa('0x16'));var logger=require(_0xb3fa('0x17'))('api');var utils=require(_0xb3fa('0x18'));var config=require(_0xb3fa('0x19'));var licenseUtil=require(_0xb3fa('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x25467d,_0x57f0a3){_0x57f0a3=_0x57f0a3||0xcc;return function(_0xa3f41a){if(_0xa3f41a){return _0x25467d[_0xb3fa('0x1b')](_0x57f0a3);}return _0x25467d[_0xb3fa('0x1c')](_0x57f0a3)['end']();};}function respondWithResult(_0x831332,_0xe157dc){_0xe157dc=_0xe157dc||0xc8;return function(_0x268c9a){if(_0x268c9a){return _0x831332[_0xb3fa('0x1c')](_0xe157dc)[_0xb3fa('0x1d')](_0x268c9a);}};}function respondWithFilteredResult(_0x469126,_0x5c756d){return function(_0x42227){if(_0x42227){var _0x14e6f6=typeof _0x5c756d[_0xb3fa('0x1e')]===_0xb3fa('0x1f')&&typeof _0x5c756d['limit']===_0xb3fa('0x1f');var _0x10bfd6=_0x42227['count'];var _0x53fd3b=_0x14e6f6?0x0:_0x5c756d[_0xb3fa('0x1e')];var _0x2afbdd=_0x14e6f6?_0x42227[_0xb3fa('0x20')]:_0x5c756d[_0xb3fa('0x1e')]+_0x5c756d[_0xb3fa('0x21')];var _0x37b84a;if(_0x2afbdd>=_0x10bfd6){_0x2afbdd=_0x10bfd6;_0x37b84a=0xc8;}else{_0x37b84a=0xce;}_0x469126[_0xb3fa('0x1c')](_0x37b84a);return _0x469126[_0xb3fa('0x22')](_0xb3fa('0x23'),_0x53fd3b+'-'+_0x2afbdd+'/'+_0x10bfd6)[_0xb3fa('0x1d')](_0x42227);}return null;};}function patchUpdates(_0x39d0f3){return function(_0x29bb50){try{jsonpatch[_0xb3fa('0x24')](_0x29bb50,_0x39d0f3,!![]);}catch(_0x1a943a){return BPromise[_0xb3fa('0x25')](_0x1a943a);}return _0x29bb50[_0xb3fa('0x26')]();};}function saveUpdates(_0x337415,_0x33407e){return function(_0x4be7c8){if(_0x4be7c8){return _0x4be7c8[_0xb3fa('0x27')](_0x337415)['then'](function(_0x1fdda4){return _0x1fdda4;});}return null;};}function removeEntity(_0x26e882,_0x2445b0){return function(_0x197f66){if(_0x197f66){return _0x197f66[_0xb3fa('0x28')]()[_0xb3fa('0x29')](function(){_0x26e882[_0xb3fa('0x1c')](0xcc)[_0xb3fa('0x2a')]();});}};}function handleEntityNotFound(_0x4c33bc,_0x5c7a27){return function(_0x53f28e){if(!_0x53f28e){_0x4c33bc['sendStatus'](0x194);}return _0x53f28e;};}function handleError(_0x42c654,_0x41379f){_0x41379f=_0x41379f||0x1f4;return function(_0x3f32d8){logger[_0xb3fa('0x2b')](_0x3f32d8['stack']);if(_0x3f32d8[_0xb3fa('0x2c')]){delete _0x3f32d8[_0xb3fa('0x2c')];}_0x42c654[_0xb3fa('0x1c')](_0x41379f)[_0xb3fa('0x2d')](_0x3f32d8);};}exports[_0xb3fa('0x2e')]=function(_0x1bb850,_0x25570a){var _0x5341e6={},_0x3569e0={},_0x1a622d={'count':0x0,'rows':[]};var _0x18845d=_[_0xb3fa('0x2f')](db[_0xb3fa('0x30')][_0xb3fa('0x31')],function(_0x4c3eea){return{'name':_0x4c3eea['fieldName'],'type':_0x4c3eea[_0xb3fa('0x32')][_0xb3fa('0x33')]};});_0x3569e0[_0xb3fa('0x34')]=_[_0xb3fa('0x2f')](_0x18845d,_0xb3fa('0x2c'));_0x3569e0['query']=_[_0xb3fa('0x35')](_0x1bb850[_0xb3fa('0x36')]);_0x3569e0[_0xb3fa('0x37')]=_[_0xb3fa('0x38')](_0x3569e0['model'],_0x3569e0['query']);_0x5341e6[_0xb3fa('0x39')]=_['intersection'](_0x3569e0[_0xb3fa('0x34')],qs['fields'](_0x1bb850[_0xb3fa('0x36')][_0xb3fa('0x3a')]));_0x5341e6[_0xb3fa('0x39')]=_0x5341e6[_0xb3fa('0x39')][_0xb3fa('0x3b')]?_0x5341e6[_0xb3fa('0x39')]:_0x3569e0['model'];if(!_0x1bb850[_0xb3fa('0x36')]['hasOwnProperty'](_0xb3fa('0x3c'))){_0x5341e6['limit']=qs[_0xb3fa('0x21')](_0x1bb850[_0xb3fa('0x36')][_0xb3fa('0x21')]);_0x5341e6[_0xb3fa('0x1e')]=qs[_0xb3fa('0x1e')](_0x1bb850[_0xb3fa('0x36')][_0xb3fa('0x1e')]);}_0x5341e6[_0xb3fa('0x3d')]=qs['sort'](_0x1bb850[_0xb3fa('0x36')]['sort']);_0x5341e6[_0xb3fa('0x3e')]=qs[_0xb3fa('0x37')](_[_0xb3fa('0x3f')](_0x1bb850['query'],_0x3569e0[_0xb3fa('0x37')]),_0x18845d);if(_0x1bb850['query'][_0xb3fa('0x40')]){_0x5341e6[_0xb3fa('0x3e')]=_[_0xb3fa('0x41')](_0x5341e6[_0xb3fa('0x3e')],{'$or':_[_0xb3fa('0x2f')](_0x18845d,function(_0x44c59d){if(_0x44c59d['type']!=='VIRTUAL'){var _0x312c34={};_0x312c34[_0x44c59d[_0xb3fa('0x2c')]]={'$like':'%'+_0x1bb850[_0xb3fa('0x36')][_0xb3fa('0x40')]+'%'};return _0x312c34;}})});}_0x5341e6=_[_0xb3fa('0x41')]({},_0x5341e6,_0x1bb850[_0xb3fa('0x42')]);var _0x2f6f64={'where':_0x5341e6[_0xb3fa('0x3e')]};return db[_0xb3fa('0x30')][_0xb3fa('0x20')](_0x2f6f64)[_0xb3fa('0x29')](function(_0x9c5a14){_0x1a622d[_0xb3fa('0x20')]=_0x9c5a14;if(_0x1bb850['query']['includeAll']){_0x5341e6['include']=[{'all':!![]}];}return db[_0xb3fa('0x30')][_0xb3fa('0x43')](_0x5341e6);})[_0xb3fa('0x29')](function(_0x4f2ad2){_0x1a622d[_0xb3fa('0x44')]=_0x4f2ad2;return _0x1a622d;})[_0xb3fa('0x29')](respondWithFilteredResult(_0x25570a,_0x5341e6))[_0xb3fa('0x45')](handleError(_0x25570a,null));};exports[_0xb3fa('0x46')]=function(_0x382404,_0x3e95a8){var _0x11f691={'raw':![],'where':{'id':_0x382404['params']['id']}},_0x1793eb={};_0x1793eb[_0xb3fa('0x34')]=_[_0xb3fa('0x35')](db[_0xb3fa('0x30')][_0xb3fa('0x31')]);_0x1793eb[_0xb3fa('0x36')]=_[_0xb3fa('0x35')](_0x382404[_0xb3fa('0x36')]);_0x1793eb[_0xb3fa('0x37')]=_[_0xb3fa('0x38')](_0x1793eb['model'],_0x1793eb['query']);_0x11f691['attributes']=_[_0xb3fa('0x38')](_0x1793eb[_0xb3fa('0x34')],qs[_0xb3fa('0x3a')](_0x382404['query']['fields']));_0x11f691['attributes']=_0x11f691[_0xb3fa('0x39')][_0xb3fa('0x3b')]?_0x11f691[_0xb3fa('0x39')]:_0x1793eb[_0xb3fa('0x34')];if(_0x382404['query']['includeAll']){_0x11f691[_0xb3fa('0x47')]=[{'all':!![]}];}_0x11f691=_[_0xb3fa('0x41')]({},_0x11f691,_0x382404[_0xb3fa('0x42')]);return db[_0xb3fa('0x30')][_0xb3fa('0x48')](_0x11f691)[_0xb3fa('0x29')](handleEntityNotFound(_0x3e95a8,null))['then'](respondWithResult(_0x3e95a8,null))[_0xb3fa('0x45')](handleError(_0x3e95a8,null));};exports[_0xb3fa('0x49')]=function(_0x53973d,_0x5249d2){return db[_0xb3fa('0x30')]['create'](_0x53973d['body'],{})[_0xb3fa('0x29')](respondWithResult(_0x5249d2,0xc9))[_0xb3fa('0x45')](handleError(_0x5249d2,null));};exports[_0xb3fa('0x27')]=function(_0xd0c216,_0x38814b){if(_0xd0c216['body']['id']){delete _0xd0c216[_0xb3fa('0x4a')]['id'];}return db[_0xb3fa('0x30')][_0xb3fa('0x48')]({'where':{'id':_0xd0c216[_0xb3fa('0x4b')]['id']}})['then'](handleEntityNotFound(_0x38814b,null))[_0xb3fa('0x29')](saveUpdates(_0xd0c216[_0xb3fa('0x4a')],null))['then'](respondWithResult(_0x38814b,null))[_0xb3fa('0x45')](handleError(_0x38814b,null));};exports['destroy']=function(_0x3269dd,_0x56f148){return db[_0xb3fa('0x30')][_0xb3fa('0x48')]({'where':{'id':_0x3269dd[_0xb3fa('0x4b')]['id']}})['then'](handleEntityNotFound(_0x56f148,null))[_0xb3fa('0x29')](removeEntity(_0x56f148,null))[_0xb3fa('0x45')](handleError(_0x56f148,null));};exports[_0xb3fa('0x4c')]=function(_0x48edb5,_0x1c318e,_0x138950){var _0x3f840f={};var _0x39b604={};var _0x21c9c9;var _0x33c6e1;return db['SalesforceAccount'][_0xb3fa('0x4d')]({'where':{'id':_0x48edb5['params']['id']}})[_0xb3fa('0x29')](handleEntityNotFound(_0x1c318e,null))[_0xb3fa('0x29')](function(_0x2b5e6a){if(_0x2b5e6a){_0x21c9c9=_0x2b5e6a;_0x39b604[_0xb3fa('0x34')]=_[_0xb3fa('0x35')](db[_0xb3fa('0x4e')][_0xb3fa('0x31')]);_0x39b604['query']=_[_0xb3fa('0x35')](_0x48edb5[_0xb3fa('0x36')]);_0x39b604[_0xb3fa('0x37')]=_[_0xb3fa('0x38')](_0x39b604[_0xb3fa('0x34')],_0x39b604[_0xb3fa('0x36')]);_0x3f840f[_0xb3fa('0x39')]=_[_0xb3fa('0x38')](_0x39b604[_0xb3fa('0x34')],qs[_0xb3fa('0x3a')](_0x48edb5[_0xb3fa('0x36')][_0xb3fa('0x3a')]));_0x3f840f[_0xb3fa('0x39')]=_0x3f840f[_0xb3fa('0x39')][_0xb3fa('0x3b')]?_0x3f840f[_0xb3fa('0x39')]:_0x39b604['model'];_0x3f840f[_0xb3fa('0x3d')]=qs[_0xb3fa('0x4f')](_0x48edb5[_0xb3fa('0x36')][_0xb3fa('0x4f')]);_0x3f840f['where']=qs[_0xb3fa('0x37')](_[_0xb3fa('0x3f')](_0x48edb5[_0xb3fa('0x36')],_0x39b604['filters']));if(_0x48edb5['query']['filter']){_0x3f840f[_0xb3fa('0x3e')]=_[_0xb3fa('0x41')](_0x3f840f['where'],{'$or':_[_0xb3fa('0x2f')](_0x3f840f['attributes'],function(_0x36ce47){var _0x621e80={};_0x621e80[_0x36ce47]={'$like':'%'+_0x48edb5[_0xb3fa('0x36')]['filter']+'%'};return _0x621e80;})});}_0x3f840f=_[_0xb3fa('0x41')]({},_0x3f840f,_0x48edb5['options']);return _0x21c9c9[_0xb3fa('0x4c')](_0x3f840f);}})[_0xb3fa('0x29')](function(_0x1ad753){if(_0x1ad753){_0x33c6e1=_0x1ad753[_0xb3fa('0x3b')];if(!_0x48edb5[_0xb3fa('0x36')][_0xb3fa('0x50')](_0xb3fa('0x3c'))){_0x3f840f[_0xb3fa('0x21')]=qs[_0xb3fa('0x21')](_0x48edb5['query'][_0xb3fa('0x21')]);_0x3f840f[_0xb3fa('0x1e')]=qs['offset'](_0x48edb5[_0xb3fa('0x36')][_0xb3fa('0x1e')]);}return _0x21c9c9[_0xb3fa('0x4c')](_0x3f840f);}})[_0xb3fa('0x29')](function(_0x102e0c){if(_0x102e0c){return _0x102e0c?{'count':_0x33c6e1,'rows':_0x102e0c}:null;}})[_0xb3fa('0x29')](respondWithResult(_0x1c318e,null))[_0xb3fa('0x45')](handleError(_0x1c318e,null));};exports['addConfiguration']=function(_0x474085,_0x29e8b1,_0x3c0c8c){if(_0x474085[_0xb3fa('0x4a')]['id']){delete _0x474085[_0xb3fa('0x4a')]['id'];}return db[_0xb3fa('0x30')]['findOne']({'where':{'id':_0x474085[_0xb3fa('0x4b')]['id']}})[_0xb3fa('0x29')](handleEntityNotFound(_0x29e8b1,null))[_0xb3fa('0x29')](function(_0x3ceab6){if(_0x3ceab6){_0x474085['body']['AccountId']=_0x3ceab6['id'];_0x474085[_0xb3fa('0x4a')]['Subjects']=integrations['getSubjects'](_0x474085[_0xb3fa('0x4a')][_0xb3fa('0x51')],_0x474085[_0xb3fa('0x4a')][_0xb3fa('0x32')]);_0x474085[_0xb3fa('0x4a')]['Descriptions']=integrations[_0xb3fa('0x52')](_0x474085[_0xb3fa('0x4a')][_0xb3fa('0x51')],_0x474085['body'][_0xb3fa('0x32')]);return db[_0xb3fa('0x4e')][_0xb3fa('0x49')](_0x474085['body'],{'include':[{'model':db[_0xb3fa('0x53')],'as':_0xb3fa('0x54')},{'model':db['SalesforceField'],'as':_0xb3fa('0x55')}]});}return null;})['then'](respondWithResult(_0x29e8b1,null))[_0xb3fa('0x45')](handleError(_0x29e8b1,null));};exports[_0xb3fa('0x56')]=function(_0x26dd3b,_0xe99210,_0x3068a5){var _0x202a39;var _0x39fac4='';var _0xab44b7=_0xb3fa('0x57');return db[_0xb3fa('0x30')][_0xb3fa('0x4d')]({'where':{'id':_0x26dd3b[_0xb3fa('0x4b')]['id']},'attributes':['id',_0xb3fa('0x58'),'clientId','clientSecret',_0xb3fa('0x59'),_0xb3fa('0x5a'),_0xb3fa('0x5b')]})[_0xb3fa('0x29')](handleEntityNotFound(_0xe99210,null))[_0xb3fa('0x29')](function(_0x2a3c89){if(_0x2a3c89){_0x39fac4=_0x2a3c89['remoteUri'];var _0x4ee937=_0x39fac4[_0xb3fa('0x5c')](-0x1);if(_0x4ee937==='/'){_0x39fac4=_0x39fac4[_0xb3fa('0x5d')](0x0,_0x39fac4[_0xb3fa('0x5e')](_0x4ee937));}_0x202a39=new jsforce[(_0xb3fa('0x5f'))]({'oauth2':{'loginUrl':_0x39fac4,'clientId':_0x2a3c89[_0xb3fa('0x60')],'clientSecret':_0x2a3c89[_0xb3fa('0x61')]}});return _0x202a39['login'](_0x2a3c89[_0xb3fa('0x59')],_0x2a3c89['password'][_0xb3fa('0x62')](_0x2a3c89['securityToken']));}})[_0xb3fa('0x29')](function(_0xebb9d2){if(_0xebb9d2){if(!_[_0xb3fa('0x63')](_0x26dd3b['query'][_0xb3fa('0x64')])){_0xab44b7=_0x26dd3b[_0xb3fa('0x36')][_0xb3fa('0x64')];}return _0x202a39['sobject'](_0xab44b7)[_0xb3fa('0x65')]();}})[_0xb3fa('0x29')](function(_0x5abac3){var _0x29aa9e=[_0xb3fa('0x66'),'ActivityDate',_0xb3fa('0x67'),_0xb3fa('0x68'),_0xb3fa('0x69'),_0xb3fa('0x6a')];var _0x4c069b=[_0xb3fa('0x6b'),_0xb3fa('0x6c'),_0xb3fa('0x6d'),'boolean',_0xb3fa('0x6e'),_0xb3fa('0x6f'),'phone'];if(_0x5abac3){_[_0xb3fa('0x70')](_0x5abac3[_0xb3fa('0x3a')],function(_0x5c1d2e){return _0x29aa9e[_0xb3fa('0x71')](_0x5c1d2e['name'])||!_0x4c069b[_0xb3fa('0x71')](_0x5c1d2e['type']);});return{'count':_0x5abac3[_0xb3fa('0x3a')][_0xb3fa('0x3b')],'rows':_[_0xb3fa('0x2f')](_0x5abac3['fields'],function(_0x397b35){return{'id':_0x397b35['name'],'name':_0x397b35[_0xb3fa('0x72')],'custom':_0x397b35['custom'],'options':_0x397b35['picklistValues']['length']>0x0?_[_0xb3fa('0x2f')](_0x397b35[_0xb3fa('0x73')],function(_0x28a4c4){return{'name':_0x28a4c4['label'],'value':_0x28a4c4['value']};}):_0x397b35[_0xb3fa('0x32')]==_0xb3fa('0x74')?[{'name':_0xb3fa('0x75'),'value':'true'},{'name':'False','value':_0xb3fa('0x76')}]:[]};})};}})['then'](respondWithResult(_0xe99210,null))[_0xb3fa('0x45')](function(_0x2b0a54){var _0x130842=_0x26dd3b[_0xb3fa('0x36')][_0xb3fa('0x77')]?0x1f4:_0x2b0a54[_0xb3fa('0x78')]||0x1f4;logger[_0xb3fa('0x2b')](_0xb3fa('0x79'),_0xb3fa('0x56'),_0x130842,JSON[_0xb3fa('0x7a')](_0x2b0a54));delete _0x2b0a54['name'];if(_0x130842===0x191){_0x130842=0x190;}_0xe99210[_0xb3fa('0x1c')](_0x130842)[_0xb3fa('0x2d')](_0x26dd3b[_0xb3fa('0x36')][_0xb3fa('0x77')]?{'message':_0xb3fa('0x7b'),'statusCode':_0x2b0a54[_0xb3fa('0x78')]}:_0x2b0a54);});};
\ No newline at end of file
index 9b457b5..b86e253 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c08=['exports','define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration'];(function(_0x313250,_0x20b49e){var _0x54bc32=function(_0x41e41f){while(--_0x41e41f){_0x313250['push'](_0x313250['shift']());}};_0x54bc32(++_0x20b49e);}(_0x1c08,0x17b));var _0x81c0=function(_0x367ac0,_0x2cb992){_0x367ac0=_0x367ac0-0x0;var _0x26013e=_0x1c08[_0x367ac0];return _0x26013e;};'use strict';var _=require(_0x81c0('0x0'));var util=require(_0x81c0('0x1'));var logger=require(_0x81c0('0x2'))(_0x81c0('0x3'));var moment=require('moment');var BPromise=require(_0x81c0('0x4'));var rp=require(_0x81c0('0x5'));var fs=require('fs');var path=require(_0x81c0('0x6'));var rimraf=require(_0x81c0('0x7'));var config=require(_0x81c0('0x8'));var attributes=require(_0x81c0('0x9'));var integrations=require(_0x81c0('0xa'));module[_0x81c0('0xb')]=function(_0x47c1b9,_0x1219a4){return _0x47c1b9[_0x81c0('0xc')](_0x81c0('0xd'),attributes,{'tableName':_0x81c0('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdfe9=['exports','define','int_salesforce_accounts','lodash','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xdfe9,0xc3));var _0x9dfe=function(_0x28f460,_0x279b9f){_0x28f460=_0x28f460-0x0;var _0x4df6f2=_0xdfe9[_0x28f460];return _0x4df6f2;};'use strict';var _=require(_0x9dfe('0x0'));var util=require('util');var logger=require(_0x9dfe('0x1'))('api');var moment=require('moment');var BPromise=require(_0x9dfe('0x2'));var rp=require(_0x9dfe('0x3'));var fs=require('fs');var path=require(_0x9dfe('0x4'));var rimraf=require(_0x9dfe('0x5'));var config=require(_0x9dfe('0x6'));var attributes=require(_0x9dfe('0x7'));var integrations=require(_0x9dfe('0x8'));module[_0x9dfe('0x9')]=function(_0x2b0d0b,_0x3471f0){return _0x2b0d0b[_0x9dfe('0xa')]('SalesforceAccount',attributes,{'tableName':_0x9dfe('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d76bb1d..102be7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f92=['request\x20sent','debug','stringify','error','code','SalesforceAccount,\x20%s,\x20%s','message','info','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','where','attributes','include','map','model','ShowSalesforceAccount','find','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x4861b2,_0x2cd8a9){var _0xf19c3c=function(_0x1175c5){while(--_0x1175c5){_0x4861b2['push'](_0x4861b2['shift']());}};_0xf19c3c(++_0x2cd8a9);}(_0x1f92,0x1ad));var _0x21f9=function(_0xee385c,_0x29b852){_0xee385c=_0xee385c-0x0;var _0x18ad3=_0x1f92[_0xee385c];return _0x18ad3;};'use strict';var _=require(_0x21f9('0x0'));var util=require('util');var moment=require(_0x21f9('0x1'));var BPromise=require(_0x21f9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x21f9('0x3'))['db'];var utils=require(_0x21f9('0x4'));var logger=require(_0x21f9('0x5'))(_0x21f9('0x6'));var config=require(_0x21f9('0x7'));var jayson=require(_0x21f9('0x8'));var client=jayson[_0x21f9('0x9')][_0x21f9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x44afd8,_0x2590dd,_0x2bba30){return new BPromise(function(_0x261881,_0x4abee7){return client[_0x21f9('0xb')](_0x44afd8,_0x2bba30)[_0x21f9('0xc')](function(_0x345f68){logger['info']('SalesforceAccount,\x20%s,\x20%s',_0x2590dd,_0x21f9('0xd'));logger[_0x21f9('0xe')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x2590dd,_0x21f9('0xd'),JSON[_0x21f9('0xf')](_0x345f68));if(_0x345f68[_0x21f9('0x10')]){if(_0x345f68[_0x21f9('0x10')][_0x21f9('0x11')]===0x1f4){logger[_0x21f9('0x10')](_0x21f9('0x12'),_0x2590dd,_0x345f68[_0x21f9('0x10')][_0x21f9('0x13')]);return _0x4abee7(_0x345f68['error']['message']);}logger[_0x21f9('0x10')]('SalesforceAccount,\x20%s,\x20%s',_0x2590dd,_0x345f68[_0x21f9('0x10')][_0x21f9('0x13')]);return _0x261881(_0x345f68[_0x21f9('0x10')][_0x21f9('0x13')]);}else{logger[_0x21f9('0x14')](_0x21f9('0x12'),_0x2590dd,_0x21f9('0xd'));_0x261881(_0x345f68['result'][_0x21f9('0x13')]);}})[_0x21f9('0x15')](function(_0x1c62ca){logger[_0x21f9('0x10')](_0x21f9('0x12'),_0x2590dd,_0x1c62ca);_0x4abee7(_0x1c62ca);});});}exports[_0x21f9('0x16')]=function(_0x219bf5){var _0x1bc133=this;return new Promise(function(_0x1ad569,_0x29ec30){return db[_0x21f9('0x17')][_0x21f9('0x18')]({'raw':_0x219bf5[_0x21f9('0x19')]?_0x219bf5[_0x21f9('0x19')][_0x21f9('0x1a')]===undefined?!![]:![]:!![],'where':_0x219bf5[_0x21f9('0x19')]?_0x219bf5[_0x21f9('0x19')][_0x21f9('0x1b')]||null:null,'attributes':_0x219bf5[_0x21f9('0x19')]?_0x219bf5['options'][_0x21f9('0x1c')]||null:null,'limit':_0x219bf5[_0x21f9('0x19')]?_0x219bf5[_0x21f9('0x19')]['limit']||null:null,'include':_0x219bf5['options']?_0x219bf5[_0x21f9('0x19')][_0x21f9('0x1d')]?_[_0x21f9('0x1e')](_0x219bf5['options'][_0x21f9('0x1d')],function(_0x264d0c){return{'model':db[_0x264d0c[_0x21f9('0x1f')]],'as':_0x264d0c['as'],'attributes':_0x264d0c['attributes'],'include':_0x264d0c[_0x21f9('0x1d')]?_[_0x21f9('0x1e')](_0x264d0c[_0x21f9('0x1d')],function(_0x57bd4d){return{'model':db[_0x57bd4d[_0x21f9('0x1f')]],'as':_0x57bd4d['as'],'attributes':_0x57bd4d[_0x21f9('0x1c')],'include':_0x57bd4d['include']?_[_0x21f9('0x1e')](_0x57bd4d[_0x21f9('0x1d')],function(_0x14731e){return{'model':db[_0x14731e[_0x21f9('0x1f')]],'as':_0x14731e['as'],'attributes':_0x14731e[_0x21f9('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x21f9('0xc')](function(_0x6b6cd6){logger['info']('GetSalesforceAccount',_0x219bf5);logger[_0x21f9('0xe')](_0x21f9('0x16'),_0x219bf5,JSON['stringify'](_0x6b6cd6));_0x1ad569(_0x6b6cd6);})[_0x21f9('0x15')](function(_0x4527e4){logger[_0x21f9('0x10')](_0x21f9('0x16'),_0x4527e4[_0x21f9('0x13')],_0x219bf5);_0x29ec30(_0x1bc133['error'](0x1f4,_0x4527e4[_0x21f9('0x13')]));});});};exports[_0x21f9('0x20')]=function(_0xe9ad3d){var _0x3eeaeb=this;return new Promise(function(_0x166bc1,_0x2f6122){return db[_0x21f9('0x17')][_0x21f9('0x21')]({'raw':_0xe9ad3d[_0x21f9('0x19')]?_0xe9ad3d[_0x21f9('0x19')][_0x21f9('0x1a')]===undefined?!![]:![]:!![],'where':_0xe9ad3d[_0x21f9('0x19')]?_0xe9ad3d['options'][_0x21f9('0x1b')]||null:null,'attributes':_0xe9ad3d[_0x21f9('0x19')]?_0xe9ad3d[_0x21f9('0x19')][_0x21f9('0x1c')]||null:null,'include':_0xe9ad3d[_0x21f9('0x19')]?_0xe9ad3d[_0x21f9('0x19')][_0x21f9('0x1d')]?_['map'](_0xe9ad3d[_0x21f9('0x19')]['include'],function(_0x45751b){return{'model':db[_0x45751b[_0x21f9('0x1f')]],'as':_0x45751b['as'],'attributes':_0x45751b['attributes'],'include':_0x45751b[_0x21f9('0x1d')]?_[_0x21f9('0x1e')](_0x45751b['include'],function(_0x1e1755){return{'model':db[_0x1e1755[_0x21f9('0x1f')]],'as':_0x1e1755['as'],'attributes':_0x1e1755[_0x21f9('0x1c')],'include':_0x1e1755[_0x21f9('0x1d')]?_[_0x21f9('0x1e')](_0x1e1755[_0x21f9('0x1d')],function(_0x52f892){return{'model':db[_0x52f892[_0x21f9('0x1f')]],'as':_0x52f892['as'],'attributes':_0x52f892['attributes']};}):[]};}):[]};}):[]:[]})[_0x21f9('0xc')](function(_0x53474b){logger[_0x21f9('0x14')]('ShowSalesforceAccount',_0xe9ad3d);logger[_0x21f9('0xe')](_0x21f9('0x20'),_0xe9ad3d,JSON[_0x21f9('0xf')](_0x53474b));_0x166bc1(_0x53474b);})[_0x21f9('0x15')](function(_0x2f8690){logger[_0x21f9('0x10')](_0x21f9('0x20'),_0x2f8690[_0x21f9('0x13')],_0xe9ad3d);_0x2f6122(_0x3eeaeb[_0x21f9('0x10')](0x1f4,_0x2f8690[_0x21f9('0x13')]));});});};
\ No newline at end of file
+var _0xeb8e=['jayson/promise','client','http','request','info','request\x20sent','debug','stringify','error','code','SalesforceAccount,\x20%s,\x20%s','message','result','SalesforceAccount','findAll','options','raw','where','attributes','limit','map','include','model','then','GetSalesforceAccount','ShowSalesforceAccount','find','catch','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x370c5c,_0x1d4200){var _0x31eb3e=function(_0x3189ef){while(--_0x3189ef){_0x370c5c['push'](_0x370c5c['shift']());}};_0x31eb3e(++_0x1d4200);}(_0xeb8e,0x157));var _0xeeb8=function(_0x5149dd,_0x4bab83){_0x5149dd=_0x5149dd-0x0;var _0xcaefab=_0xeb8e[_0x5149dd];return _0xcaefab;};'use strict';var _=require('lodash');var util=require(_0xeeb8('0x0'));var moment=require(_0xeeb8('0x1'));var BPromise=require('bluebird');var rs=require(_0xeeb8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xeeb8('0x3'))['db'];var utils=require(_0xeeb8('0x4'));var logger=require(_0xeeb8('0x5'))('rpc');var config=require(_0xeeb8('0x6'));var jayson=require(_0xeeb8('0x7'));var client=jayson[_0xeeb8('0x8')][_0xeeb8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x26a24d,_0x3220d7,_0x2ab166){return new BPromise(function(_0x344ee4,_0x4a10eb){return client[_0xeeb8('0xa')](_0x26a24d,_0x2ab166)['then'](function(_0x8fe044){logger[_0xeeb8('0xb')]('SalesforceAccount,\x20%s,\x20%s',_0x3220d7,_0xeeb8('0xc'));logger[_0xeeb8('0xd')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x3220d7,_0xeeb8('0xc'),JSON[_0xeeb8('0xe')](_0x8fe044));if(_0x8fe044[_0xeeb8('0xf')]){if(_0x8fe044[_0xeeb8('0xf')][_0xeeb8('0x10')]===0x1f4){logger['error'](_0xeeb8('0x11'),_0x3220d7,_0x8fe044[_0xeeb8('0xf')][_0xeeb8('0x12')]);return _0x4a10eb(_0x8fe044[_0xeeb8('0xf')]['message']);}logger[_0xeeb8('0xf')](_0xeeb8('0x11'),_0x3220d7,_0x8fe044['error'][_0xeeb8('0x12')]);return _0x344ee4(_0x8fe044[_0xeeb8('0xf')]['message']);}else{logger[_0xeeb8('0xb')](_0xeeb8('0x11'),_0x3220d7,_0xeeb8('0xc'));_0x344ee4(_0x8fe044[_0xeeb8('0x13')][_0xeeb8('0x12')]);}})['catch'](function(_0x529a2f){logger[_0xeeb8('0xf')](_0xeeb8('0x11'),_0x3220d7,_0x529a2f);_0x4a10eb(_0x529a2f);});});}exports['GetSalesforceAccount']=function(_0x2913fe){var _0x2839c2=this;return new Promise(function(_0x76ffaf,_0x4b23cc){return db[_0xeeb8('0x14')][_0xeeb8('0x15')]({'raw':_0x2913fe['options']?_0x2913fe[_0xeeb8('0x16')][_0xeeb8('0x17')]===undefined?!![]:![]:!![],'where':_0x2913fe['options']?_0x2913fe['options'][_0xeeb8('0x18')]||null:null,'attributes':_0x2913fe['options']?_0x2913fe[_0xeeb8('0x16')][_0xeeb8('0x19')]||null:null,'limit':_0x2913fe[_0xeeb8('0x16')]?_0x2913fe[_0xeeb8('0x16')][_0xeeb8('0x1a')]||null:null,'include':_0x2913fe[_0xeeb8('0x16')]?_0x2913fe['options']['include']?_[_0xeeb8('0x1b')](_0x2913fe[_0xeeb8('0x16')][_0xeeb8('0x1c')],function(_0x197693){return{'model':db[_0x197693[_0xeeb8('0x1d')]],'as':_0x197693['as'],'attributes':_0x197693[_0xeeb8('0x19')],'include':_0x197693[_0xeeb8('0x1c')]?_['map'](_0x197693[_0xeeb8('0x1c')],function(_0x4e7491){return{'model':db[_0x4e7491[_0xeeb8('0x1d')]],'as':_0x4e7491['as'],'attributes':_0x4e7491[_0xeeb8('0x19')],'include':_0x4e7491[_0xeeb8('0x1c')]?_[_0xeeb8('0x1b')](_0x4e7491[_0xeeb8('0x1c')],function(_0x407a8e){return{'model':db[_0x407a8e[_0xeeb8('0x1d')]],'as':_0x407a8e['as'],'attributes':_0x407a8e[_0xeeb8('0x19')]};}):[]};}):[]};}):[]:[]})[_0xeeb8('0x1e')](function(_0x2c8bcd){logger[_0xeeb8('0xb')](_0xeeb8('0x1f'),_0x2913fe);logger[_0xeeb8('0xd')]('GetSalesforceAccount',_0x2913fe,JSON[_0xeeb8('0xe')](_0x2c8bcd));_0x76ffaf(_0x2c8bcd);})['catch'](function(_0x589771){logger[_0xeeb8('0xf')](_0xeeb8('0x1f'),_0x589771[_0xeeb8('0x12')],_0x2913fe);_0x4b23cc(_0x2839c2[_0xeeb8('0xf')](0x1f4,_0x589771[_0xeeb8('0x12')]));});});};exports[_0xeeb8('0x20')]=function(_0x1479cf){var _0x1aac67=this;return new Promise(function(_0x3f4ed7,_0x23df0f){return db[_0xeeb8('0x14')][_0xeeb8('0x21')]({'raw':_0x1479cf[_0xeeb8('0x16')]?_0x1479cf['options']['raw']===undefined?!![]:![]:!![],'where':_0x1479cf[_0xeeb8('0x16')]?_0x1479cf[_0xeeb8('0x16')][_0xeeb8('0x18')]||null:null,'attributes':_0x1479cf[_0xeeb8('0x16')]?_0x1479cf[_0xeeb8('0x16')][_0xeeb8('0x19')]||null:null,'include':_0x1479cf[_0xeeb8('0x16')]?_0x1479cf['options']['include']?_[_0xeeb8('0x1b')](_0x1479cf[_0xeeb8('0x16')]['include'],function(_0x3bce38){return{'model':db[_0x3bce38[_0xeeb8('0x1d')]],'as':_0x3bce38['as'],'attributes':_0x3bce38[_0xeeb8('0x19')],'include':_0x3bce38[_0xeeb8('0x1c')]?_[_0xeeb8('0x1b')](_0x3bce38[_0xeeb8('0x1c')],function(_0x1f94e5){return{'model':db[_0x1f94e5[_0xeeb8('0x1d')]],'as':_0x1f94e5['as'],'attributes':_0x1f94e5[_0xeeb8('0x19')],'include':_0x1f94e5['include']?_['map'](_0x1f94e5[_0xeeb8('0x1c')],function(_0x57a028){return{'model':db[_0x57a028[_0xeeb8('0x1d')]],'as':_0x57a028['as'],'attributes':_0x57a028[_0xeeb8('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5f021c){logger[_0xeeb8('0xb')]('ShowSalesforceAccount',_0x1479cf);logger[_0xeeb8('0xd')](_0xeeb8('0x20'),_0x1479cf,JSON['stringify'](_0x5f021c));_0x3f4ed7(_0x5f021c);})[_0xeeb8('0x22')](function(_0x18603a){logger[_0xeeb8('0xf')](_0xeeb8('0x20'),_0x18603a[_0xeeb8('0x12')],_0x1479cf);_0x23df0f(_0x1aac67['error'](0x1f4,_0x18603a['message']));});});};
\ No newline at end of file
index 706005e..77f5660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x2b4d71,_0xf9e41f){_0x2b4d71=_0x2b4d71-0x0;var _0x2f832b=_0xdb28[_0x2b4d71];return _0x2f832b;};'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
+var _0x2ef3=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','exports','multer','util','path'];(function(_0x49ddde,_0x4e9b56){var _0x2c6eaf=function(_0x5e7469){while(--_0x5e7469){_0x49ddde['push'](_0x49ddde['shift']());}};_0x2c6eaf(++_0x4e9b56);}(_0x2ef3,0xba));var _0x32ef=function(_0x4041df,_0x596ac3){_0x4041df=_0x4041df-0x0;var _0x36e9a8=_0x2ef3[_0x4041df];return _0x36e9a8;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x12')]('/:id',auth[_0x32ef('0xb')](),controller[_0x32ef('0x13')]);router['delete']('/:id',auth[_0x32ef('0xb')](),controller['destroy']);module[_0x32ef('0x14')]=router;
\ No newline at end of file
index b14b28f..76d3271 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dff=['sequelize','STRING','ENUM','Task','contact','lead','account_contact_lead','contact_lead','nothing','account'];(function(_0x10022a,_0x3979d6){var _0x567cce=function(_0x56da6a){while(--_0x56da6a){_0x10022a['push'](_0x10022a['shift']());}};_0x567cce(++_0x3979d6);}(_0x0dff,0x168));var _0xf0df=function(_0x2800d1,_0x136b87){_0x2800d1=_0x2800d1-0x0;var _0x491918=_0x0dff[_0x2800d1];return _0x491918;};'use strict';var Sequelize=require(_0xf0df('0x0'));module['exports']={'name':{'type':Sequelize[_0xf0df('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xf0df('0x2')](_0xf0df('0x3'),'Case'),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize[_0xf0df('0x2')]('contact_lead',_0xf0df('0x4'),_0xf0df('0x5'),_0xf0df('0x6'),'account'),'defaultValue':_0xf0df('0x7')},'moduleCreate':{'type':Sequelize[_0xf0df('0x2')](_0xf0df('0x8'),_0xf0df('0x4'),'lead',_0xf0df('0x9')),'defaultValue':_0xf0df('0x5')},'leadId':{'type':Sequelize[_0xf0df('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0xf0df('0x1')]},'additionalSearchContact':{'type':Sequelize[_0xf0df('0x1')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xe113=['contact_lead','lead','account_contact_lead','nothing','contact','account','exports','STRING','ENUM','Task','Case'];(function(_0x118cc9,_0x4f6a07){var _0x47639a=function(_0x4a32d1){while(--_0x4a32d1){_0x118cc9['push'](_0x118cc9['shift']());}};_0x47639a(++_0x4f6a07);}(_0xe113,0xed));var _0x3e11=function(_0xc39af2,_0x3910d0){_0xc39af2=_0xc39af2-0x0;var _0x2eb502=_0xe113[_0xc39af2];return _0x2eb502;};'use strict';var Sequelize=require('sequelize');module[_0x3e11('0x0')]={'name':{'type':Sequelize[_0x3e11('0x1')]},'description':{'type':Sequelize[_0x3e11('0x1')]},'ticketType':{'type':Sequelize[_0x3e11('0x2')](_0x3e11('0x3'),_0x3e11('0x4')),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize['ENUM'](_0x3e11('0x5'),'contact',_0x3e11('0x6'),_0x3e11('0x7'),'account'),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize['ENUM'](_0x3e11('0x8'),_0x3e11('0x9'),_0x3e11('0x6'),_0x3e11('0xa')),'defaultValue':_0x3e11('0x6')},'leadId':{'type':Sequelize[_0x3e11('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0x3e11('0x1')]},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize[_0x3e11('0x1')]}};
\ No newline at end of file
index 0b0d288..f5974a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aff=['intersection','attributes','fields','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','length','create','body','update','find','getFields','findOne','order','pick','hasOwnProperty','getSubjects','getDescriptions','SalesforceField','eml-format','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../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','reject','save','then','destroy','name','index','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters'];(function(_0x521929,_0x479be5){var _0x632436=function(_0x288290){while(--_0x288290){_0x521929['push'](_0x521929['shift']());}};_0x632436(++_0x479be5);}(_0x3aff,0x148));var _0xf3af=function(_0x4464fb,_0x30f81a){_0x4464fb=_0x4464fb-0x0;var _0x305ca3=_0x3aff[_0x4464fb];return _0x305ca3;};'use strict';var emlformat=require(_0xf3af('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xf3af('0x1'));var moment=require('moment');var BPromise=require(_0xf3af('0x2'));var Mustache=require('mustache');var util=require(_0xf3af('0x3'));var path=require('path');var sox=require(_0xf3af('0x4'));var csv=require(_0xf3af('0x5'));var ejs=require(_0xf3af('0x6'));var fs=require('fs');var fs_extra=require(_0xf3af('0x7'));var _=require(_0xf3af('0x8'));var squel=require('squel');var crypto=require(_0xf3af('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xf3af('0xa'));var toCsv=require(_0xf3af('0x5'));var querystring=require(_0xf3af('0xb'));var Papa=require(_0xf3af('0xc'));var Redis=require('ioredis');var authService=require(_0xf3af('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xf3af('0xe'));var hardwareService=require(_0xf3af('0xf'));var logger=require(_0xf3af('0x10'))(_0xf3af('0x11'));var utils=require('../../config/utils');var config=require(_0xf3af('0x12'));var licenseUtil=require(_0xf3af('0x13'));var db=require(_0xf3af('0x14'))['db'];function respondWithStatusCode(_0x70b03c,_0x314826){_0x314826=_0x314826||0xcc;return function(_0x41c1f5){if(_0x41c1f5){return _0x70b03c[_0xf3af('0x15')](_0x314826);}return _0x70b03c[_0xf3af('0x16')](_0x314826)[_0xf3af('0x17')]();};}function respondWithResult(_0x5deb8a,_0x4d878e){_0x4d878e=_0x4d878e||0xc8;return function(_0x51e0e0){if(_0x51e0e0){return _0x5deb8a['status'](_0x4d878e)[_0xf3af('0x18')](_0x51e0e0);}};}function respondWithFilteredResult(_0x3bf109,_0x41cd1b){return function(_0x55adb2){if(_0x55adb2){var _0xe3f207=typeof _0x41cd1b[_0xf3af('0x19')]===_0xf3af('0x1a')&&typeof _0x41cd1b[_0xf3af('0x1b')]==='undefined';var _0x3eb4b5=_0x55adb2[_0xf3af('0x1c')];var _0x55b30b=_0xe3f207?0x0:_0x41cd1b[_0xf3af('0x19')];var _0xf56224=_0xe3f207?_0x55adb2[_0xf3af('0x1c')]:_0x41cd1b['offset']+_0x41cd1b['limit'];var _0x2c126c;if(_0xf56224>=_0x3eb4b5){_0xf56224=_0x3eb4b5;_0x2c126c=0xc8;}else{_0x2c126c=0xce;}_0x3bf109[_0xf3af('0x16')](_0x2c126c);return _0x3bf109[_0xf3af('0x1d')](_0xf3af('0x1e'),_0x55b30b+'-'+_0xf56224+'/'+_0x3eb4b5)['json'](_0x55adb2);}return null;};}function patchUpdates(_0x2509ff){return function(_0x132371){try{jsonpatch['apply'](_0x132371,_0x2509ff,!![]);}catch(_0x550595){return BPromise[_0xf3af('0x1f')](_0x550595);}return _0x132371[_0xf3af('0x20')]();};}function saveUpdates(_0x5887b5,_0xb1411f){return function(_0x13fea6){if(_0x13fea6){return _0x13fea6['update'](_0x5887b5)[_0xf3af('0x21')](function(_0x2ff49f){return _0x2ff49f;});}return null;};}function removeEntity(_0x49be85,_0x232fc1){return function(_0x49c3a6){if(_0x49c3a6){return _0x49c3a6[_0xf3af('0x22')]()[_0xf3af('0x21')](function(){_0x49be85[_0xf3af('0x16')](0xcc)[_0xf3af('0x17')]();});}};}function handleEntityNotFound(_0x1853fe,_0x543eee){return function(_0x19efc7){if(!_0x19efc7){_0x1853fe['sendStatus'](0x194);}return _0x19efc7;};}function handleError(_0x3e3894,_0x472a72){_0x472a72=_0x472a72||0x1f4;return function(_0x288def){logger['error'](_0x288def['stack']);if(_0x288def[_0xf3af('0x23')]){delete _0x288def[_0xf3af('0x23')];}_0x3e3894[_0xf3af('0x16')](_0x472a72)['send'](_0x288def);};}exports[_0xf3af('0x24')]=function(_0xa175ca,_0x468706){var _0x557b6d={},_0x2b3e86={},_0x5d237a={'count':0x0,'rows':[]};var _0x491957=_[_0xf3af('0x25')](db[_0xf3af('0x26')][_0xf3af('0x27')],function(_0x503630){return{'name':_0x503630[_0xf3af('0x28')],'type':_0x503630[_0xf3af('0x29')][_0xf3af('0x2a')]};});_0x2b3e86[_0xf3af('0x2b')]=_['map'](_0x491957,_0xf3af('0x23'));_0x2b3e86[_0xf3af('0x2c')]=_[_0xf3af('0x2d')](_0xa175ca[_0xf3af('0x2c')]);_0x2b3e86[_0xf3af('0x2e')]=_[_0xf3af('0x2f')](_0x2b3e86[_0xf3af('0x2b')],_0x2b3e86[_0xf3af('0x2c')]);_0x557b6d[_0xf3af('0x30')]=_[_0xf3af('0x2f')](_0x2b3e86['model'],qs[_0xf3af('0x31')](_0xa175ca['query'][_0xf3af('0x31')]));_0x557b6d['attributes']=_0x557b6d['attributes']['length']?_0x557b6d[_0xf3af('0x30')]:_0x2b3e86['model'];if(!_0xa175ca[_0xf3af('0x2c')]['hasOwnProperty'](_0xf3af('0x32'))){_0x557b6d['limit']=qs[_0xf3af('0x1b')](_0xa175ca[_0xf3af('0x2c')]['limit']);_0x557b6d[_0xf3af('0x19')]=qs[_0xf3af('0x19')](_0xa175ca[_0xf3af('0x2c')][_0xf3af('0x19')]);}_0x557b6d['order']=qs['sort'](_0xa175ca[_0xf3af('0x2c')][_0xf3af('0x33')]);_0x557b6d[_0xf3af('0x34')]=qs[_0xf3af('0x2e')](_['pick'](_0xa175ca['query'],_0x2b3e86[_0xf3af('0x2e')]),_0x491957);if(_0xa175ca[_0xf3af('0x2c')][_0xf3af('0x35')]){_0x557b6d[_0xf3af('0x34')]=_[_0xf3af('0x36')](_0x557b6d[_0xf3af('0x34')],{'$or':_[_0xf3af('0x25')](_0x491957,function(_0x1dda19){if(_0x1dda19[_0xf3af('0x29')]!==_0xf3af('0x37')){var _0x381afe={};_0x381afe[_0x1dda19[_0xf3af('0x23')]]={'$like':'%'+_0xa175ca['query'][_0xf3af('0x35')]+'%'};return _0x381afe;}})});}_0x557b6d=_[_0xf3af('0x36')]({},_0x557b6d,_0xa175ca[_0xf3af('0x38')]);var _0x14a357={'where':_0x557b6d[_0xf3af('0x34')]};return db[_0xf3af('0x26')][_0xf3af('0x1c')](_0x14a357)[_0xf3af('0x21')](function(_0x4b4b36){_0x5d237a[_0xf3af('0x1c')]=_0x4b4b36;if(_0xa175ca[_0xf3af('0x2c')][_0xf3af('0x39')]){_0x557b6d[_0xf3af('0x3a')]=[{'all':!![]}];}return db[_0xf3af('0x26')][_0xf3af('0x3b')](_0x557b6d);})[_0xf3af('0x21')](function(_0x125a4b){_0x5d237a['rows']=_0x125a4b;return _0x5d237a;})[_0xf3af('0x21')](respondWithFilteredResult(_0x468706,_0x557b6d))[_0xf3af('0x3c')](handleError(_0x468706,null));};exports['show']=function(_0x5d8398,_0x1c834a){var _0x1cad9e={'raw':![],'where':{'id':_0x5d8398[_0xf3af('0x3d')]['id']}},_0x88d07f={};_0x88d07f[_0xf3af('0x2b')]=_[_0xf3af('0x2d')](db['SalesforceConfiguration']['rawAttributes']);_0x88d07f[_0xf3af('0x2c')]=_[_0xf3af('0x2d')](_0x5d8398[_0xf3af('0x2c')]);_0x88d07f[_0xf3af('0x2e')]=_[_0xf3af('0x2f')](_0x88d07f[_0xf3af('0x2b')],_0x88d07f[_0xf3af('0x2c')]);_0x1cad9e[_0xf3af('0x30')]=_[_0xf3af('0x2f')](_0x88d07f[_0xf3af('0x2b')],qs[_0xf3af('0x31')](_0x5d8398[_0xf3af('0x2c')][_0xf3af('0x31')]));_0x1cad9e[_0xf3af('0x30')]=_0x1cad9e[_0xf3af('0x30')][_0xf3af('0x3e')]?_0x1cad9e[_0xf3af('0x30')]:_0x88d07f[_0xf3af('0x2b')];if(_0x5d8398[_0xf3af('0x2c')][_0xf3af('0x39')]){_0x1cad9e[_0xf3af('0x3a')]=[{'all':!![]}];}_0x1cad9e=_[_0xf3af('0x36')]({},_0x1cad9e,_0x5d8398[_0xf3af('0x38')]);return db['SalesforceConfiguration']['find'](_0x1cad9e)['then'](handleEntityNotFound(_0x1c834a,null))[_0xf3af('0x21')](respondWithResult(_0x1c834a,null))['catch'](handleError(_0x1c834a,null));};exports[_0xf3af('0x3f')]=function(_0x33cf82,_0xcbabcc){return db[_0xf3af('0x26')][_0xf3af('0x3f')](_0x33cf82[_0xf3af('0x40')],{})[_0xf3af('0x21')](respondWithResult(_0xcbabcc,0xc9))[_0xf3af('0x3c')](handleError(_0xcbabcc,null));};exports[_0xf3af('0x41')]=function(_0x2a1b17,_0x147c07){if(_0x2a1b17[_0xf3af('0x40')]['id']){delete _0x2a1b17[_0xf3af('0x40')]['id'];}return db[_0xf3af('0x26')][_0xf3af('0x42')]({'where':{'id':_0x2a1b17['params']['id']}})[_0xf3af('0x21')](handleEntityNotFound(_0x147c07,null))['then'](saveUpdates(_0x2a1b17['body'],null))['then'](respondWithResult(_0x147c07,null))[_0xf3af('0x3c')](handleError(_0x147c07,null));};exports[_0xf3af('0x22')]=function(_0x27de25,_0x2aaafc){return db[_0xf3af('0x26')][_0xf3af('0x42')]({'where':{'id':_0x27de25['params']['id']}})[_0xf3af('0x21')](handleEntityNotFound(_0x2aaafc,null))['then'](removeEntity(_0x2aaafc,null))['catch'](handleError(_0x2aaafc,null));};exports[_0xf3af('0x43')]=function(_0x50f566,_0x8b4633,_0x494546){var _0x1eed7f={};var _0x120c0e={};var _0x3d8b81;var _0x4e2b96;return db[_0xf3af('0x26')][_0xf3af('0x44')]({'where':{'id':_0x50f566['params']['id']}})[_0xf3af('0x21')](handleEntityNotFound(_0x8b4633,null))[_0xf3af('0x21')](function(_0x18a95c){if(_0x18a95c){_0x3d8b81=_0x18a95c;_0x120c0e[_0xf3af('0x2b')]=_[_0xf3af('0x2d')](db['SalesforceField'][_0xf3af('0x27')]);_0x120c0e[_0xf3af('0x2c')]=_[_0xf3af('0x2d')](_0x50f566['query']);_0x120c0e[_0xf3af('0x2e')]=_['intersection'](_0x120c0e[_0xf3af('0x2b')],_0x120c0e[_0xf3af('0x2c')]);_0x1eed7f[_0xf3af('0x30')]=_[_0xf3af('0x2f')](_0x120c0e[_0xf3af('0x2b')],qs[_0xf3af('0x31')](_0x50f566[_0xf3af('0x2c')][_0xf3af('0x31')]));_0x1eed7f[_0xf3af('0x30')]=_0x1eed7f[_0xf3af('0x30')][_0xf3af('0x3e')]?_0x1eed7f['attributes']:_0x120c0e['model'];_0x1eed7f[_0xf3af('0x45')]=qs['sort'](_0x50f566['query'][_0xf3af('0x33')]);_0x1eed7f[_0xf3af('0x34')]=qs[_0xf3af('0x2e')](_[_0xf3af('0x46')](_0x50f566[_0xf3af('0x2c')],_0x120c0e[_0xf3af('0x2e')]));if(_0x50f566['query'][_0xf3af('0x35')]){_0x1eed7f[_0xf3af('0x34')]=_[_0xf3af('0x36')](_0x1eed7f['where'],{'$or':_[_0xf3af('0x25')](_0x1eed7f[_0xf3af('0x30')],function(_0x12a5f9){var _0x2a4f56={};_0x2a4f56[_0x12a5f9]={'$like':'%'+_0x50f566[_0xf3af('0x2c')][_0xf3af('0x35')]+'%'};return _0x2a4f56;})});}_0x1eed7f=_['merge']({},_0x1eed7f,_0x50f566[_0xf3af('0x38')]);return _0x3d8b81[_0xf3af('0x43')](_0x1eed7f);}})[_0xf3af('0x21')](function(_0x4d3062){if(_0x4d3062){_0x4e2b96=_0x4d3062['length'];if(!_0x50f566[_0xf3af('0x2c')][_0xf3af('0x47')]('nolimit')){_0x1eed7f[_0xf3af('0x1b')]=qs[_0xf3af('0x1b')](_0x50f566[_0xf3af('0x2c')][_0xf3af('0x1b')]);_0x1eed7f[_0xf3af('0x19')]=qs[_0xf3af('0x19')](_0x50f566['query'][_0xf3af('0x19')]);}return _0x3d8b81[_0xf3af('0x43')](_0x1eed7f);}})[_0xf3af('0x21')](function(_0x46fe5c){if(_0x46fe5c){return _0x46fe5c?{'count':_0x4e2b96,'rows':_0x46fe5c}:null;}})['then'](respondWithResult(_0x8b4633,null))[_0xf3af('0x3c')](handleError(_0x8b4633,null));};exports[_0xf3af('0x48')]=function(_0x389cf4,_0x12db67,_0x2f4269){var _0x57648c={};var _0xa345b6={};var _0x129007;var _0x3ec711;return db['SalesforceConfiguration'][_0xf3af('0x44')]({'where':{'id':_0x389cf4[_0xf3af('0x3d')]['id']}})['then'](handleEntityNotFound(_0x12db67,null))[_0xf3af('0x21')](function(_0x294583){if(_0x294583){_0x129007=_0x294583;_0xa345b6[_0xf3af('0x2b')]=_[_0xf3af('0x2d')](db['SalesforceField']['rawAttributes']);_0xa345b6[_0xf3af('0x2c')]=_[_0xf3af('0x2d')](_0x389cf4[_0xf3af('0x2c')]);_0xa345b6[_0xf3af('0x2e')]=_[_0xf3af('0x2f')](_0xa345b6['model'],_0xa345b6['query']);_0x57648c[_0xf3af('0x30')]=_['intersection'](_0xa345b6['model'],qs[_0xf3af('0x31')](_0x389cf4[_0xf3af('0x2c')][_0xf3af('0x31')]));_0x57648c[_0xf3af('0x30')]=_0x57648c[_0xf3af('0x30')]['length']?_0x57648c['attributes']:_0xa345b6[_0xf3af('0x2b')];_0x57648c[_0xf3af('0x45')]=qs[_0xf3af('0x33')](_0x389cf4['query'][_0xf3af('0x33')]);_0x57648c[_0xf3af('0x34')]=qs['filters'](_[_0xf3af('0x46')](_0x389cf4['query'],_0xa345b6['filters']));if(_0x389cf4['query'][_0xf3af('0x35')]){_0x57648c[_0xf3af('0x34')]=_[_0xf3af('0x36')](_0x57648c[_0xf3af('0x34')],{'$or':_[_0xf3af('0x25')](_0x57648c['attributes'],function(_0x321ead){var _0x1aba99={};_0x1aba99[_0x321ead]={'$like':'%'+_0x389cf4['query']['filter']+'%'};return _0x1aba99;})});}_0x57648c=_[_0xf3af('0x36')]({},_0x57648c,_0x389cf4[_0xf3af('0x38')]);return _0x129007[_0xf3af('0x48')](_0x57648c);}})[_0xf3af('0x21')](function(_0x3e29f9){if(_0x3e29f9){_0x3ec711=_0x3e29f9['length'];if(!_0x389cf4[_0xf3af('0x2c')][_0xf3af('0x47')]('nolimit')){_0x57648c[_0xf3af('0x1b')]=qs['limit'](_0x389cf4[_0xf3af('0x2c')][_0xf3af('0x1b')]);_0x57648c[_0xf3af('0x19')]=qs[_0xf3af('0x19')](_0x389cf4[_0xf3af('0x2c')][_0xf3af('0x19')]);}return _0x129007['getSubjects'](_0x57648c);}})[_0xf3af('0x21')](function(_0x1162f6){if(_0x1162f6){return _0x1162f6?{'count':_0x3ec711,'rows':_0x1162f6}:null;}})['then'](respondWithResult(_0x12db67,null))[_0xf3af('0x3c')](handleError(_0x12db67,null));};exports[_0xf3af('0x49')]=function(_0x2da192,_0x34366a,_0x213241){var _0xfde04d={};var _0x15af8d={};var _0x127f16;var _0x1658ee;return db[_0xf3af('0x26')][_0xf3af('0x44')]({'where':{'id':_0x2da192['params']['id']}})[_0xf3af('0x21')](handleEntityNotFound(_0x34366a,null))[_0xf3af('0x21')](function(_0x3249ba){if(_0x3249ba){_0x127f16=_0x3249ba;_0x15af8d[_0xf3af('0x2b')]=_[_0xf3af('0x2d')](db[_0xf3af('0x4a')][_0xf3af('0x27')]);_0x15af8d[_0xf3af('0x2c')]=_[_0xf3af('0x2d')](_0x2da192[_0xf3af('0x2c')]);_0x15af8d[_0xf3af('0x2e')]=_[_0xf3af('0x2f')](_0x15af8d[_0xf3af('0x2b')],_0x15af8d['query']);_0xfde04d[_0xf3af('0x30')]=_[_0xf3af('0x2f')](_0x15af8d[_0xf3af('0x2b')],qs[_0xf3af('0x31')](_0x2da192[_0xf3af('0x2c')][_0xf3af('0x31')]));_0xfde04d[_0xf3af('0x30')]=_0xfde04d['attributes'][_0xf3af('0x3e')]?_0xfde04d[_0xf3af('0x30')]:_0x15af8d['model'];_0xfde04d[_0xf3af('0x45')]=qs[_0xf3af('0x33')](_0x2da192[_0xf3af('0x2c')][_0xf3af('0x33')]);_0xfde04d[_0xf3af('0x34')]=qs[_0xf3af('0x2e')](_['pick'](_0x2da192['query'],_0x15af8d[_0xf3af('0x2e')]));if(_0x2da192['query'][_0xf3af('0x35')]){_0xfde04d[_0xf3af('0x34')]=_[_0xf3af('0x36')](_0xfde04d[_0xf3af('0x34')],{'$or':_[_0xf3af('0x25')](_0xfde04d[_0xf3af('0x30')],function(_0x9b3a94){var _0x4efbae={};_0x4efbae[_0x9b3a94]={'$like':'%'+_0x2da192[_0xf3af('0x2c')][_0xf3af('0x35')]+'%'};return _0x4efbae;})});}_0xfde04d=_[_0xf3af('0x36')]({},_0xfde04d,_0x2da192[_0xf3af('0x38')]);return _0x127f16[_0xf3af('0x49')](_0xfde04d);}})['then'](function(_0x2633a5){if(_0x2633a5){_0x1658ee=_0x2633a5[_0xf3af('0x3e')];if(!_0x2da192[_0xf3af('0x2c')][_0xf3af('0x47')](_0xf3af('0x32'))){_0xfde04d[_0xf3af('0x1b')]=qs[_0xf3af('0x1b')](_0x2da192[_0xf3af('0x2c')][_0xf3af('0x1b')]);_0xfde04d['offset']=qs[_0xf3af('0x19')](_0x2da192[_0xf3af('0x2c')][_0xf3af('0x19')]);}return _0x127f16[_0xf3af('0x49')](_0xfde04d);}})[_0xf3af('0x21')](function(_0x3ba0a2){if(_0x3ba0a2){return _0x3ba0a2?{'count':_0x1658ee,'rows':_0x3ba0a2}:null;}})[_0xf3af('0x21')](respondWithResult(_0x34366a,null))[_0xf3af('0x3c')](handleError(_0x34366a,null));};
\ No newline at end of file
+var _0xdc0d=['filter','options','includeAll','include','rows','catch','show','params','rawAttributes','find','create','update','body','destroy','getFields','findOne','order','pick','getSubjects','SalesforceField','getDescriptions','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','send','index','map','SalesforceConfiguration','fieldName','type','key','name','keys','filters','intersection','query','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL'];(function(_0x55a635,_0x4ef554){var _0x2a7b3c=function(_0x4e7299){while(--_0x4e7299){_0x55a635['push'](_0x55a635['shift']());}};_0x2a7b3c(++_0x4ef554);}(_0xdc0d,0xc1));var _0xddc0=function(_0x28c66b,_0x1c6a03){_0x28c66b=_0x28c66b-0x0;var _0x15018d=_0xdc0d[_0x28c66b];return _0x15018d;};'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(_0xddc0('0x2'));var moment=require(_0xddc0('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xddc0('0x4'));var util=require(_0xddc0('0x5'));var path=require(_0xddc0('0x6'));var sox=require(_0xddc0('0x7'));var csv=require('to-csv');var ejs=require(_0xddc0('0x8'));var fs=require('fs');var fs_extra=require(_0xddc0('0x9'));var _=require(_0xddc0('0xa'));var squel=require(_0xddc0('0xb'));var crypto=require('crypto');var jsforce=require(_0xddc0('0xc'));var deskjs=require(_0xddc0('0xd'));var toCsv=require(_0xddc0('0xe'));var querystring=require(_0xddc0('0xf'));var Papa=require(_0xddc0('0x10'));var Redis=require(_0xddc0('0x11'));var authService=require(_0xddc0('0x12'));var qs=require(_0xddc0('0x13'));var as=require(_0xddc0('0x14'));var hardwareService=require(_0xddc0('0x15'));var logger=require(_0xddc0('0x16'))(_0xddc0('0x17'));var utils=require(_0xddc0('0x18'));var config=require(_0xddc0('0x19'));var licenseUtil=require(_0xddc0('0x1a'));var db=require(_0xddc0('0x1b'))['db'];function respondWithStatusCode(_0x465cf2,_0x5e8dd6){_0x5e8dd6=_0x5e8dd6||0xcc;return function(_0xe2827){if(_0xe2827){return _0x465cf2[_0xddc0('0x1c')](_0x5e8dd6);}return _0x465cf2[_0xddc0('0x1d')](_0x5e8dd6)[_0xddc0('0x1e')]();};}function respondWithResult(_0x2cc866,_0x3bbcbf){_0x3bbcbf=_0x3bbcbf||0xc8;return function(_0x594586){if(_0x594586){return _0x2cc866[_0xddc0('0x1d')](_0x3bbcbf)[_0xddc0('0x1f')](_0x594586);}};}function respondWithFilteredResult(_0x182302,_0x1f45bf){return function(_0x52acc2){if(_0x52acc2){var _0x5bb260=typeof _0x1f45bf[_0xddc0('0x20')]===_0xddc0('0x21')&&typeof _0x1f45bf[_0xddc0('0x22')]===_0xddc0('0x21');var _0x4e0558=_0x52acc2[_0xddc0('0x23')];var _0x2540e4=_0x5bb260?0x0:_0x1f45bf['offset'];var _0x3018b5=_0x5bb260?_0x52acc2['count']:_0x1f45bf[_0xddc0('0x20')]+_0x1f45bf[_0xddc0('0x22')];var _0x51df01;if(_0x3018b5>=_0x4e0558){_0x3018b5=_0x4e0558;_0x51df01=0xc8;}else{_0x51df01=0xce;}_0x182302[_0xddc0('0x1d')](_0x51df01);return _0x182302[_0xddc0('0x24')](_0xddc0('0x25'),_0x2540e4+'-'+_0x3018b5+'/'+_0x4e0558)['json'](_0x52acc2);}return null;};}function patchUpdates(_0x1240df){return function(_0x310b82){try{jsonpatch[_0xddc0('0x26')](_0x310b82,_0x1240df,!![]);}catch(_0x32831f){return BPromise[_0xddc0('0x27')](_0x32831f);}return _0x310b82[_0xddc0('0x28')]();};}function saveUpdates(_0x103cb3,_0x5da2ba){return function(_0x1593ec){if(_0x1593ec){return _0x1593ec['update'](_0x103cb3)[_0xddc0('0x29')](function(_0x185cdf){return _0x185cdf;});}return null;};}function removeEntity(_0x180726,_0x54124f){return function(_0xe3cbd9){if(_0xe3cbd9){return _0xe3cbd9['destroy']()[_0xddc0('0x29')](function(){_0x180726[_0xddc0('0x1d')](0xcc)[_0xddc0('0x1e')]();});}};}function handleEntityNotFound(_0x5d26b7,_0x16e65d){return function(_0x48ee06){if(!_0x48ee06){_0x5d26b7[_0xddc0('0x1c')](0x194);}return _0x48ee06;};}function handleError(_0x543e52,_0xf3dc54){_0xf3dc54=_0xf3dc54||0x1f4;return function(_0x482de9){logger[_0xddc0('0x2a')](_0x482de9['stack']);if(_0x482de9['name']){delete _0x482de9['name'];}_0x543e52[_0xddc0('0x1d')](_0xf3dc54)[_0xddc0('0x2b')](_0x482de9);};}exports[_0xddc0('0x2c')]=function(_0x37e3e0,_0x467d5b){var _0x27e08a={},_0x4d9000={},_0x4bf903={'count':0x0,'rows':[]};var _0x5621c0=_[_0xddc0('0x2d')](db[_0xddc0('0x2e')]['rawAttributes'],function(_0x2d0dcc){return{'name':_0x2d0dcc[_0xddc0('0x2f')],'type':_0x2d0dcc[_0xddc0('0x30')][_0xddc0('0x31')]};});_0x4d9000['model']=_[_0xddc0('0x2d')](_0x5621c0,_0xddc0('0x32'));_0x4d9000['query']=_[_0xddc0('0x33')](_0x37e3e0['query']);_0x4d9000[_0xddc0('0x34')]=_[_0xddc0('0x35')](_0x4d9000['model'],_0x4d9000[_0xddc0('0x36')]);_0x27e08a[_0xddc0('0x37')]=_[_0xddc0('0x35')](_0x4d9000[_0xddc0('0x38')],qs[_0xddc0('0x39')](_0x37e3e0[_0xddc0('0x36')][_0xddc0('0x39')]));_0x27e08a['attributes']=_0x27e08a[_0xddc0('0x37')][_0xddc0('0x3a')]?_0x27e08a['attributes']:_0x4d9000['model'];if(!_0x37e3e0[_0xddc0('0x36')][_0xddc0('0x3b')](_0xddc0('0x3c'))){_0x27e08a['limit']=qs[_0xddc0('0x22')](_0x37e3e0[_0xddc0('0x36')][_0xddc0('0x22')]);_0x27e08a[_0xddc0('0x20')]=qs[_0xddc0('0x20')](_0x37e3e0[_0xddc0('0x36')][_0xddc0('0x20')]);}_0x27e08a['order']=qs[_0xddc0('0x3d')](_0x37e3e0[_0xddc0('0x36')][_0xddc0('0x3d')]);_0x27e08a[_0xddc0('0x3e')]=qs[_0xddc0('0x34')](_['pick'](_0x37e3e0[_0xddc0('0x36')],_0x4d9000[_0xddc0('0x34')]),_0x5621c0);if(_0x37e3e0[_0xddc0('0x36')]['filter']){_0x27e08a[_0xddc0('0x3e')]=_[_0xddc0('0x3f')](_0x27e08a[_0xddc0('0x3e')],{'$or':_[_0xddc0('0x2d')](_0x5621c0,function(_0x3c1c07){if(_0x3c1c07[_0xddc0('0x30')]!==_0xddc0('0x40')){var _0x5aed94={};_0x5aed94[_0x3c1c07[_0xddc0('0x32')]]={'$like':'%'+_0x37e3e0[_0xddc0('0x36')][_0xddc0('0x41')]+'%'};return _0x5aed94;}})});}_0x27e08a=_[_0xddc0('0x3f')]({},_0x27e08a,_0x37e3e0[_0xddc0('0x42')]);var _0x1e1512={'where':_0x27e08a[_0xddc0('0x3e')]};return db[_0xddc0('0x2e')]['count'](_0x1e1512)[_0xddc0('0x29')](function(_0x4c6f6e){_0x4bf903[_0xddc0('0x23')]=_0x4c6f6e;if(_0x37e3e0[_0xddc0('0x36')][_0xddc0('0x43')]){_0x27e08a[_0xddc0('0x44')]=[{'all':!![]}];}return db[_0xddc0('0x2e')]['findAll'](_0x27e08a);})[_0xddc0('0x29')](function(_0x4a000b){_0x4bf903[_0xddc0('0x45')]=_0x4a000b;return _0x4bf903;})[_0xddc0('0x29')](respondWithFilteredResult(_0x467d5b,_0x27e08a))[_0xddc0('0x46')](handleError(_0x467d5b,null));};exports[_0xddc0('0x47')]=function(_0x428156,_0x58627a){var _0x82b4a4={'raw':![],'where':{'id':_0x428156[_0xddc0('0x48')]['id']}},_0x556285={};_0x556285[_0xddc0('0x38')]=_[_0xddc0('0x33')](db['SalesforceConfiguration'][_0xddc0('0x49')]);_0x556285[_0xddc0('0x36')]=_[_0xddc0('0x33')](_0x428156[_0xddc0('0x36')]);_0x556285[_0xddc0('0x34')]=_['intersection'](_0x556285[_0xddc0('0x38')],_0x556285[_0xddc0('0x36')]);_0x82b4a4['attributes']=_[_0xddc0('0x35')](_0x556285[_0xddc0('0x38')],qs[_0xddc0('0x39')](_0x428156[_0xddc0('0x36')][_0xddc0('0x39')]));_0x82b4a4[_0xddc0('0x37')]=_0x82b4a4[_0xddc0('0x37')][_0xddc0('0x3a')]?_0x82b4a4[_0xddc0('0x37')]:_0x556285[_0xddc0('0x38')];if(_0x428156[_0xddc0('0x36')]['includeAll']){_0x82b4a4['include']=[{'all':!![]}];}_0x82b4a4=_[_0xddc0('0x3f')]({},_0x82b4a4,_0x428156[_0xddc0('0x42')]);return db['SalesforceConfiguration'][_0xddc0('0x4a')](_0x82b4a4)[_0xddc0('0x29')](handleEntityNotFound(_0x58627a,null))[_0xddc0('0x29')](respondWithResult(_0x58627a,null))[_0xddc0('0x46')](handleError(_0x58627a,null));};exports[_0xddc0('0x4b')]=function(_0x44efe8,_0x1598d5){return db['SalesforceConfiguration']['create'](_0x44efe8['body'],{})[_0xddc0('0x29')](respondWithResult(_0x1598d5,0xc9))[_0xddc0('0x46')](handleError(_0x1598d5,null));};exports[_0xddc0('0x4c')]=function(_0x3f49a7,_0x59eb6e){if(_0x3f49a7[_0xddc0('0x4d')]['id']){delete _0x3f49a7[_0xddc0('0x4d')]['id'];}return db[_0xddc0('0x2e')][_0xddc0('0x4a')]({'where':{'id':_0x3f49a7[_0xddc0('0x48')]['id']}})[_0xddc0('0x29')](handleEntityNotFound(_0x59eb6e,null))[_0xddc0('0x29')](saveUpdates(_0x3f49a7[_0xddc0('0x4d')],null))[_0xddc0('0x29')](respondWithResult(_0x59eb6e,null))[_0xddc0('0x46')](handleError(_0x59eb6e,null));};exports[_0xddc0('0x4e')]=function(_0x258403,_0x179e26){return db['SalesforceConfiguration'][_0xddc0('0x4a')]({'where':{'id':_0x258403[_0xddc0('0x48')]['id']}})['then'](handleEntityNotFound(_0x179e26,null))[_0xddc0('0x29')](removeEntity(_0x179e26,null))[_0xddc0('0x46')](handleError(_0x179e26,null));};exports[_0xddc0('0x4f')]=function(_0x303fe4,_0xe3cd12,_0x2a5757){var _0x2b9654={};var _0x5a8c81={};var _0x2c32f8;var _0x4c5f86;return db['SalesforceConfiguration'][_0xddc0('0x50')]({'where':{'id':_0x303fe4[_0xddc0('0x48')]['id']}})[_0xddc0('0x29')](handleEntityNotFound(_0xe3cd12,null))[_0xddc0('0x29')](function(_0x198164){if(_0x198164){_0x2c32f8=_0x198164;_0x5a8c81[_0xddc0('0x38')]=_[_0xddc0('0x33')](db['SalesforceField']['rawAttributes']);_0x5a8c81['query']=_[_0xddc0('0x33')](_0x303fe4[_0xddc0('0x36')]);_0x5a8c81[_0xddc0('0x34')]=_['intersection'](_0x5a8c81[_0xddc0('0x38')],_0x5a8c81[_0xddc0('0x36')]);_0x2b9654[_0xddc0('0x37')]=_[_0xddc0('0x35')](_0x5a8c81[_0xddc0('0x38')],qs[_0xddc0('0x39')](_0x303fe4['query'][_0xddc0('0x39')]));_0x2b9654[_0xddc0('0x37')]=_0x2b9654[_0xddc0('0x37')][_0xddc0('0x3a')]?_0x2b9654['attributes']:_0x5a8c81[_0xddc0('0x38')];_0x2b9654[_0xddc0('0x51')]=qs[_0xddc0('0x3d')](_0x303fe4[_0xddc0('0x36')][_0xddc0('0x3d')]);_0x2b9654[_0xddc0('0x3e')]=qs[_0xddc0('0x34')](_[_0xddc0('0x52')](_0x303fe4['query'],_0x5a8c81[_0xddc0('0x34')]));if(_0x303fe4[_0xddc0('0x36')]['filter']){_0x2b9654[_0xddc0('0x3e')]=_[_0xddc0('0x3f')](_0x2b9654[_0xddc0('0x3e')],{'$or':_['map'](_0x2b9654[_0xddc0('0x37')],function(_0xb616d6){var _0x1d2657={};_0x1d2657[_0xb616d6]={'$like':'%'+_0x303fe4['query'][_0xddc0('0x41')]+'%'};return _0x1d2657;})});}_0x2b9654=_['merge']({},_0x2b9654,_0x303fe4[_0xddc0('0x42')]);return _0x2c32f8[_0xddc0('0x4f')](_0x2b9654);}})['then'](function(_0x152bae){if(_0x152bae){_0x4c5f86=_0x152bae[_0xddc0('0x3a')];if(!_0x303fe4[_0xddc0('0x36')][_0xddc0('0x3b')](_0xddc0('0x3c'))){_0x2b9654[_0xddc0('0x22')]=qs[_0xddc0('0x22')](_0x303fe4[_0xddc0('0x36')][_0xddc0('0x22')]);_0x2b9654['offset']=qs[_0xddc0('0x20')](_0x303fe4[_0xddc0('0x36')][_0xddc0('0x20')]);}return _0x2c32f8['getFields'](_0x2b9654);}})[_0xddc0('0x29')](function(_0x397424){if(_0x397424){return _0x397424?{'count':_0x4c5f86,'rows':_0x397424}:null;}})[_0xddc0('0x29')](respondWithResult(_0xe3cd12,null))[_0xddc0('0x46')](handleError(_0xe3cd12,null));};exports[_0xddc0('0x53')]=function(_0x39d69f,_0x73396e,_0x331417){var _0x481cb3={};var _0x39ba2c={};var _0x5ed9ac;var _0x559473;return db['SalesforceConfiguration']['findOne']({'where':{'id':_0x39d69f['params']['id']}})[_0xddc0('0x29')](handleEntityNotFound(_0x73396e,null))[_0xddc0('0x29')](function(_0x46b22c){if(_0x46b22c){_0x5ed9ac=_0x46b22c;_0x39ba2c['model']=_[_0xddc0('0x33')](db[_0xddc0('0x54')][_0xddc0('0x49')]);_0x39ba2c[_0xddc0('0x36')]=_[_0xddc0('0x33')](_0x39d69f[_0xddc0('0x36')]);_0x39ba2c[_0xddc0('0x34')]=_['intersection'](_0x39ba2c[_0xddc0('0x38')],_0x39ba2c['query']);_0x481cb3[_0xddc0('0x37')]=_['intersection'](_0x39ba2c['model'],qs[_0xddc0('0x39')](_0x39d69f[_0xddc0('0x36')][_0xddc0('0x39')]));_0x481cb3['attributes']=_0x481cb3['attributes'][_0xddc0('0x3a')]?_0x481cb3['attributes']:_0x39ba2c[_0xddc0('0x38')];_0x481cb3[_0xddc0('0x51')]=qs['sort'](_0x39d69f[_0xddc0('0x36')][_0xddc0('0x3d')]);_0x481cb3[_0xddc0('0x3e')]=qs['filters'](_['pick'](_0x39d69f[_0xddc0('0x36')],_0x39ba2c[_0xddc0('0x34')]));if(_0x39d69f[_0xddc0('0x36')][_0xddc0('0x41')]){_0x481cb3[_0xddc0('0x3e')]=_[_0xddc0('0x3f')](_0x481cb3[_0xddc0('0x3e')],{'$or':_[_0xddc0('0x2d')](_0x481cb3[_0xddc0('0x37')],function(_0x2b7628){var _0x1dfea9={};_0x1dfea9[_0x2b7628]={'$like':'%'+_0x39d69f[_0xddc0('0x36')][_0xddc0('0x41')]+'%'};return _0x1dfea9;})});}_0x481cb3=_['merge']({},_0x481cb3,_0x39d69f[_0xddc0('0x42')]);return _0x5ed9ac[_0xddc0('0x53')](_0x481cb3);}})['then'](function(_0x541e2c){if(_0x541e2c){_0x559473=_0x541e2c[_0xddc0('0x3a')];if(!_0x39d69f[_0xddc0('0x36')][_0xddc0('0x3b')](_0xddc0('0x3c'))){_0x481cb3[_0xddc0('0x22')]=qs[_0xddc0('0x22')](_0x39d69f[_0xddc0('0x36')][_0xddc0('0x22')]);_0x481cb3[_0xddc0('0x20')]=qs[_0xddc0('0x20')](_0x39d69f[_0xddc0('0x36')][_0xddc0('0x20')]);}return _0x5ed9ac[_0xddc0('0x53')](_0x481cb3);}})[_0xddc0('0x29')](function(_0x4ee331){if(_0x4ee331){return _0x4ee331?{'count':_0x559473,'rows':_0x4ee331}:null;}})[_0xddc0('0x29')](respondWithResult(_0x73396e,null))[_0xddc0('0x46')](handleError(_0x73396e,null));};exports[_0xddc0('0x55')]=function(_0xacc923,_0x500883,_0xad93e9){var _0xe259d0={};var _0x2c5751={};var _0x5718e3;var _0x19b06;return db[_0xddc0('0x2e')][_0xddc0('0x50')]({'where':{'id':_0xacc923['params']['id']}})['then'](handleEntityNotFound(_0x500883,null))[_0xddc0('0x29')](function(_0x4a9b37){if(_0x4a9b37){_0x5718e3=_0x4a9b37;_0x2c5751[_0xddc0('0x38')]=_[_0xddc0('0x33')](db[_0xddc0('0x54')]['rawAttributes']);_0x2c5751[_0xddc0('0x36')]=_['keys'](_0xacc923[_0xddc0('0x36')]);_0x2c5751[_0xddc0('0x34')]=_[_0xddc0('0x35')](_0x2c5751['model'],_0x2c5751[_0xddc0('0x36')]);_0xe259d0[_0xddc0('0x37')]=_[_0xddc0('0x35')](_0x2c5751['model'],qs[_0xddc0('0x39')](_0xacc923['query'][_0xddc0('0x39')]));_0xe259d0[_0xddc0('0x37')]=_0xe259d0[_0xddc0('0x37')][_0xddc0('0x3a')]?_0xe259d0[_0xddc0('0x37')]:_0x2c5751[_0xddc0('0x38')];_0xe259d0[_0xddc0('0x51')]=qs['sort'](_0xacc923[_0xddc0('0x36')][_0xddc0('0x3d')]);_0xe259d0['where']=qs['filters'](_[_0xddc0('0x52')](_0xacc923[_0xddc0('0x36')],_0x2c5751[_0xddc0('0x34')]));if(_0xacc923[_0xddc0('0x36')][_0xddc0('0x41')]){_0xe259d0['where']=_['merge'](_0xe259d0['where'],{'$or':_['map'](_0xe259d0['attributes'],function(_0xbe522b){var _0x44f2a8={};_0x44f2a8[_0xbe522b]={'$like':'%'+_0xacc923[_0xddc0('0x36')][_0xddc0('0x41')]+'%'};return _0x44f2a8;})});}_0xe259d0=_[_0xddc0('0x3f')]({},_0xe259d0,_0xacc923[_0xddc0('0x42')]);return _0x5718e3['getDescriptions'](_0xe259d0);}})[_0xddc0('0x29')](function(_0x1042ac){if(_0x1042ac){_0x19b06=_0x1042ac[_0xddc0('0x3a')];if(!_0xacc923[_0xddc0('0x36')][_0xddc0('0x3b')]('nolimit')){_0xe259d0[_0xddc0('0x22')]=qs[_0xddc0('0x22')](_0xacc923[_0xddc0('0x36')][_0xddc0('0x22')]);_0xe259d0[_0xddc0('0x20')]=qs[_0xddc0('0x20')](_0xacc923[_0xddc0('0x36')][_0xddc0('0x20')]);}return _0x5718e3['getDescriptions'](_0xe259d0);}})[_0xddc0('0x29')](function(_0x5b7082){if(_0x5b7082){return _0x5b7082?{'count':_0x19b06,'rows':_0x5b7082}:null;}})[_0xddc0('0x29')](respondWithResult(_0x500883,null))[_0xddc0('0x46')](handleError(_0x500883,null));};
\ No newline at end of file
index 88689eb..528f089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e99=['lodash','util','api','moment','request-promise','path','../../config/environment','./intSalesforceConfiguration.attributes','define','int_salesforce_configurations'];(function(_0xda464c,_0x26e47d){var _0x19e222=function(_0x1ec605){while(--_0x1ec605){_0xda464c['push'](_0xda464c['shift']());}};_0x19e222(++_0x26e47d);}(_0x7e99,0x186));var _0x97e9=function(_0x307086,_0x3bfe4e){_0x307086=_0x307086-0x0;var _0x699043=_0x7e99[_0x307086];return _0x699043;};'use strict';var _=require(_0x97e9('0x0'));var util=require(_0x97e9('0x1'));var logger=require('../../config/logger')(_0x97e9('0x2'));var moment=require(_0x97e9('0x3'));var BPromise=require('bluebird');var rp=require(_0x97e9('0x4'));var fs=require('fs');var path=require(_0x97e9('0x5'));var rimraf=require('rimraf');var config=require(_0x97e9('0x6'));var attributes=require(_0x97e9('0x7'));module['exports']=function(_0x3175c4,_0xf5b0b9){return _0x3175c4[_0x97e9('0x8')]('SalesforceConfiguration',attributes,{'tableName':_0x97e9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc8d5=['define','SalesforceConfiguration','int_salesforce_configurations','util','api','moment','path','../../config/environment','exports'];(function(_0xce2cb0,_0x5a4e65){var _0x291687=function(_0x1b62e0){while(--_0x1b62e0){_0xce2cb0['push'](_0xce2cb0['shift']());}};_0x291687(++_0x5a4e65);}(_0xc8d5,0x1bc));var _0x5c8d=function(_0x40f25a,_0x24ca3d){_0x40f25a=_0x40f25a-0x0;var _0x4d7e99=_0xc8d5[_0x40f25a];return _0x4d7e99;};'use strict';var _=require('lodash');var util=require(_0x5c8d('0x0'));var logger=require('../../config/logger')(_0x5c8d('0x1'));var moment=require(_0x5c8d('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x5c8d('0x3'));var rimraf=require('rimraf');var config=require(_0x5c8d('0x4'));var attributes=require('./intSalesforceConfiguration.attributes');module[_0x5c8d('0x5')]=function(_0x39478e,_0x34028d){return _0x39478e[_0x5c8d('0x6')](_0x5c8d('0x7'),attributes,{'tableName':_0x5c8d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cdb6f18..41d4c18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3a7=['jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3c59fc,_0x10dbd2){var _0x2b78d4=function(_0x5f161a){while(--_0x5f161a){_0x3c59fc['push'](_0x3c59fc['shift']());}};_0x2b78d4(++_0x10dbd2);}(_0xf3a7,0x1ea));var _0x7f3a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf3a7[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x7f3a('0x0'));var util=require(_0x7f3a('0x1'));var moment=require(_0x7f3a('0x2'));var BPromise=require(_0x7f3a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7f3a('0x4'));var db=require(_0x7f3a('0x5'))['db'];var utils=require(_0x7f3a('0x6'));var logger=require(_0x7f3a('0x7'))(_0x7f3a('0x8'));var config=require(_0x7f3a('0x9'));var jayson=require(_0x7f3a('0xa'));var client=jayson[_0x7f3a('0xb')][_0x7f3a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x34bfdb,_0x2ba4fa,_0x223f24){return new BPromise(function(_0x31796d,_0x2a2dbf){return client[_0x7f3a('0xd')](_0x34bfdb,_0x223f24)[_0x7f3a('0xe')](function(_0x2dcbcc){logger[_0x7f3a('0xf')](_0x7f3a('0x10'),_0x2ba4fa,'request\x20sent');logger[_0x7f3a('0x11')](_0x7f3a('0x12'),_0x2ba4fa,_0x7f3a('0x13'),JSON[_0x7f3a('0x14')](_0x2dcbcc));if(_0x2dcbcc[_0x7f3a('0x15')]){if(_0x2dcbcc['error'][_0x7f3a('0x16')]===0x1f4){logger[_0x7f3a('0x15')](_0x7f3a('0x10'),_0x2ba4fa,_0x2dcbcc[_0x7f3a('0x15')][_0x7f3a('0x17')]);return _0x2a2dbf(_0x2dcbcc['error'][_0x7f3a('0x17')]);}logger[_0x7f3a('0x15')](_0x7f3a('0x10'),_0x2ba4fa,_0x2dcbcc[_0x7f3a('0x15')][_0x7f3a('0x17')]);return _0x31796d(_0x2dcbcc[_0x7f3a('0x15')][_0x7f3a('0x17')]);}else{logger[_0x7f3a('0xf')](_0x7f3a('0x10'),_0x2ba4fa,'request\x20sent');_0x31796d(_0x2dcbcc['result']['message']);}})[_0x7f3a('0x18')](function(_0x358a37){logger[_0x7f3a('0x15')]('SalesforceConfiguration,\x20%s,\x20%s',_0x2ba4fa,_0x358a37);_0x2a2dbf(_0x358a37);});});}
\ No newline at end of file
+var _0xeca9=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','http','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util'];(function(_0x545b5f,_0x4509a5){var _0x5a7784=function(_0x494c2b){while(--_0x494c2b){_0x545b5f['push'](_0x545b5f['shift']());}};_0x5a7784(++_0x4509a5);}(_0xeca9,0x17a));var _0x9eca=function(_0x5af9cc,_0x4e30c8){_0x5af9cc=_0x5af9cc-0x0;var _0x3d7c12=_0xeca9[_0x5af9cc];return _0x3d7c12;};'use strict';var _=require(_0x9eca('0x0'));var util=require(_0x9eca('0x1'));var moment=require(_0x9eca('0x2'));var BPromise=require(_0x9eca('0x3'));var rs=require(_0x9eca('0x4'));var fs=require('fs');var Redis=require(_0x9eca('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9eca('0x6'));var logger=require(_0x9eca('0x7'))(_0x9eca('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x9eca('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x61afe5,_0xb114ca,_0x469f66){return new BPromise(function(_0x289e36,_0x2cb784){return client['request'](_0x61afe5,_0x469f66)[_0x9eca('0xa')](function(_0x18cbd1){logger[_0x9eca('0xb')](_0x9eca('0xc'),_0xb114ca,_0x9eca('0xd'));logger[_0x9eca('0xe')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0xb114ca,_0x9eca('0xd'),JSON[_0x9eca('0xf')](_0x18cbd1));if(_0x18cbd1[_0x9eca('0x10')]){if(_0x18cbd1['error'][_0x9eca('0x11')]===0x1f4){logger[_0x9eca('0x10')](_0x9eca('0xc'),_0xb114ca,_0x18cbd1[_0x9eca('0x10')][_0x9eca('0x12')]);return _0x2cb784(_0x18cbd1[_0x9eca('0x10')][_0x9eca('0x12')]);}logger['error'](_0x9eca('0xc'),_0xb114ca,_0x18cbd1[_0x9eca('0x10')][_0x9eca('0x12')]);return _0x289e36(_0x18cbd1[_0x9eca('0x10')]['message']);}else{logger[_0x9eca('0xb')](_0x9eca('0xc'),_0xb114ca,_0x9eca('0xd'));_0x289e36(_0x18cbd1['result'][_0x9eca('0x12')]);}})[_0x9eca('0x13')](function(_0x1f9c6b){logger['error'](_0x9eca('0xc'),_0xb114ca,_0x1f9c6b);_0x2cb784(_0x1f9c6b);});});}
\ No newline at end of file
index b2f5961..8521cb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e51=['post','put','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intSalesforceField.controller','index','/:id','isAuthenticated','show'];(function(_0xa6a4f8,_0x31f67d){var _0x528152=function(_0x221777){while(--_0x221777){_0xa6a4f8['push'](_0xa6a4f8['shift']());}};_0x528152(++_0x31f67d);}(_0x5e51,0x148));var _0x15e5=function(_0x5e76c6,_0xf16290){_0x5e76c6=_0x5e76c6-0x0;var _0x43fb22=_0x5e51[_0x5e76c6];return _0x43fb22;};'use strict';var multer=require('multer');var util=require(_0x15e5('0x0'));var path=require(_0x15e5('0x1'));var timeout=require(_0x15e5('0x2'));var express=require(_0x15e5('0x3'));var router=express[_0x15e5('0x4')]();var fs_extra=require(_0x15e5('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x15e5('0x6'));var config=require('../../config/environment');var controller=require(_0x15e5('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x15e5('0x8')]);router['get'](_0x15e5('0x9'),auth[_0x15e5('0xa')](),controller[_0x15e5('0xb')]);router[_0x15e5('0xc')]('/',auth[_0x15e5('0xa')](),controller['create']);router[_0x15e5('0xd')](_0x15e5('0x9'),auth[_0x15e5('0xa')](),controller['update']);router[_0x15e5('0xe')]('/:id',auth[_0x15e5('0xa')](),controller[_0x15e5('0xf')]);module[_0x15e5('0x10')]=router;
\ No newline at end of file
+var _0xbc65=['put','update','delete','exports','multer','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','post','create'];(function(_0x49d6d7,_0x3761b6){var _0x1df3f7=function(_0x377137){while(--_0x377137){_0x49d6d7['push'](_0x49d6d7['shift']());}};_0x1df3f7(++_0x3761b6);}(_0xbc65,0x94));var _0x5bc6=function(_0x4f36d0,_0x13cf1a){_0x4f36d0=_0x4f36d0-0x0;var _0x4b792a=_0xbc65[_0x4f36d0];return _0x4b792a;};'use strict';var multer=require(_0x5bc6('0x0'));var util=require('util');var path=require(_0x5bc6('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5bc6('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x5bc6('0x3'));var interaction=require(_0x5bc6('0x4'));var config=require(_0x5bc6('0x5'));var controller=require('./intSalesforceField.controller');router[_0x5bc6('0x6')]('/',auth[_0x5bc6('0x7')](),controller[_0x5bc6('0x8')]);router[_0x5bc6('0x6')](_0x5bc6('0x9'),auth[_0x5bc6('0x7')](),controller['show']);router[_0x5bc6('0xa')]('/',auth[_0x5bc6('0x7')](),controller[_0x5bc6('0xb')]);router[_0x5bc6('0xc')](_0x5bc6('0x9'),auth[_0x5bc6('0x7')](),controller[_0x5bc6('0xd')]);router[_0x5bc6('0xe')](_0x5bc6('0x9'),auth[_0x5bc6('0x7')](),controller['destroy']);module[_0x5bc6('0xf')]=router;
\ No newline at end of file
index ba16c47..8ab5df9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97f8=['customVariable','picklist','STRING','variable','sequelize','ENUM','string'];(function(_0x2abc3d,_0x48edca){var _0x252745=function(_0x32bb6f){while(--_0x32bb6f){_0x2abc3d['push'](_0x2abc3d['shift']());}};_0x252745(++_0x48edca);}(_0x97f8,0x170));var _0x897f=function(_0x3265af,_0x505052){_0x3265af=_0x3265af-0x0;var _0x15955b=_0x97f8[_0x3265af];return _0x15955b;};'use strict';var Sequelize=require(_0x897f('0x0'));module['exports']={'type':{'type':Sequelize[_0x897f('0x1')](_0x897f('0x2'),'variable',_0x897f('0x3'),'keyValue',_0x897f('0x4')),'defaultValue':_0x897f('0x2')},'content':{'type':Sequelize[_0x897f('0x5')]},'key':{'type':Sequelize[_0x897f('0x5')]},'keyType':{'type':Sequelize[_0x897f('0x1')](_0x897f('0x2'),_0x897f('0x6'),'customVariable')},'keyContent':{'type':Sequelize[_0x897f('0x5')]},'idField':{'type':Sequelize[_0x897f('0x5')]},'variableName':{'type':Sequelize[_0x897f('0x5')]}};
\ No newline at end of file
+var _0x4e84=['keyValue','STRING','ENUM','string','variable'];(function(_0x3b121a,_0x43132c){var _0x449387=function(_0x8a7bdb){while(--_0x8a7bdb){_0x3b121a['push'](_0x3b121a['shift']());}};_0x449387(++_0x43132c);}(_0x4e84,0x147));var _0x44e8=function(_0x29ba76,_0x485cad){_0x29ba76=_0x29ba76-0x0;var _0xf92e6d=_0x4e84[_0x29ba76];return _0xf92e6d;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x44e8('0x0')](_0x44e8('0x1'),_0x44e8('0x2'),'customVariable',_0x44e8('0x3'),'picklist'),'defaultValue':_0x44e8('0x1')},'content':{'type':Sequelize[_0x44e8('0x4')]},'key':{'type':Sequelize[_0x44e8('0x4')]},'keyType':{'type':Sequelize[_0x44e8('0x0')]('string',_0x44e8('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0x44e8('0x4')]},'idField':{'type':Sequelize[_0x44e8('0x4')]},'variableName':{'type':Sequelize[_0x44e8('0x4')]}};
\ No newline at end of file
index a5bc95b..508a7ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a68=['filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','where','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','keys','length','include','find','create','body','params','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','name','index','map','SalesforceField','rawAttributes','fieldName','type','key','query'];(function(_0x437654,_0x5f40bc){var _0x4711d5=function(_0x342f61){while(--_0x342f61){_0x437654['push'](_0x437654['shift']());}};_0x4711d5(++_0x5f40bc);}(_0x0a68,0x194));var _0x80a6=function(_0x37b2b9,_0x4a68ab){_0x37b2b9=_0x37b2b9-0x0;var _0x422cb3=_0x0a68[_0x37b2b9];return _0x422cb3;};'use strict';var emlformat=require(_0x80a6('0x0'));var rimraf=require(_0x80a6('0x1'));var zipdir=require(_0x80a6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x80a6('0x3'));var moment=require('moment');var BPromise=require(_0x80a6('0x4'));var Mustache=require(_0x80a6('0x5'));var util=require(_0x80a6('0x6'));var path=require(_0x80a6('0x7'));var sox=require(_0x80a6('0x8'));var csv=require(_0x80a6('0x9'));var ejs=require(_0x80a6('0xa'));var fs=require('fs');var fs_extra=require(_0x80a6('0xb'));var _=require(_0x80a6('0xc'));var squel=require(_0x80a6('0xd'));var crypto=require(_0x80a6('0xe'));var jsforce=require(_0x80a6('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x80a6('0x9'));var querystring=require(_0x80a6('0x10'));var Papa=require(_0x80a6('0x11'));var Redis=require(_0x80a6('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x80a6('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x80a6('0x14'));var logger=require(_0x80a6('0x15'))(_0x80a6('0x16'));var utils=require(_0x80a6('0x17'));var config=require(_0x80a6('0x18'));var licenseUtil=require(_0x80a6('0x19'));var db=require(_0x80a6('0x1a'))['db'];function respondWithStatusCode(_0x27bc1f,_0x5a3a55){_0x5a3a55=_0x5a3a55||0xcc;return function(_0x3689ba){if(_0x3689ba){return _0x27bc1f['sendStatus'](_0x5a3a55);}return _0x27bc1f[_0x80a6('0x1b')](_0x5a3a55)[_0x80a6('0x1c')]();};}function respondWithResult(_0x4dfca,_0x4ec1a5){_0x4ec1a5=_0x4ec1a5||0xc8;return function(_0xe426bf){if(_0xe426bf){return _0x4dfca[_0x80a6('0x1b')](_0x4ec1a5)[_0x80a6('0x1d')](_0xe426bf);}};}function respondWithFilteredResult(_0x1d107f,_0x5d0664){return function(_0x5b9f57){if(_0x5b9f57){var _0x30323e=typeof _0x5d0664[_0x80a6('0x1e')]==='undefined'&&typeof _0x5d0664[_0x80a6('0x1f')]===_0x80a6('0x20');var _0x33eb62=_0x5b9f57[_0x80a6('0x21')];var _0x16343c=_0x30323e?0x0:_0x5d0664['offset'];var _0x143eb7=_0x30323e?_0x5b9f57[_0x80a6('0x21')]:_0x5d0664[_0x80a6('0x1e')]+_0x5d0664['limit'];var _0x44c1d3;if(_0x143eb7>=_0x33eb62){_0x143eb7=_0x33eb62;_0x44c1d3=0xc8;}else{_0x44c1d3=0xce;}_0x1d107f['status'](_0x44c1d3);return _0x1d107f['set'](_0x80a6('0x22'),_0x16343c+'-'+_0x143eb7+'/'+_0x33eb62)['json'](_0x5b9f57);}return null;};}function patchUpdates(_0x3494f5){return function(_0x15f107){try{jsonpatch[_0x80a6('0x23')](_0x15f107,_0x3494f5,!![]);}catch(_0x4b3029){return BPromise[_0x80a6('0x24')](_0x4b3029);}return _0x15f107[_0x80a6('0x25')]();};}function saveUpdates(_0x5e3f9c,_0x3a5a1b){return function(_0x4df03b){if(_0x4df03b){return _0x4df03b[_0x80a6('0x26')](_0x5e3f9c)[_0x80a6('0x27')](function(_0x1ea0ef){return _0x1ea0ef;});}return null;};}function removeEntity(_0x198161,_0x3c3ab3){return function(_0x18bc25){if(_0x18bc25){return _0x18bc25[_0x80a6('0x28')]()[_0x80a6('0x27')](function(){_0x198161[_0x80a6('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a8d10,_0x1fbcbb){return function(_0x5cf1f0){if(!_0x5cf1f0){_0x3a8d10[_0x80a6('0x29')](0x194);}return _0x5cf1f0;};}function handleError(_0x489e07,_0x383e84){_0x383e84=_0x383e84||0x1f4;return function(_0x31a449){logger['error'](_0x31a449[_0x80a6('0x2a')]);if(_0x31a449[_0x80a6('0x2b')]){delete _0x31a449[_0x80a6('0x2b')];}_0x489e07['status'](_0x383e84)['send'](_0x31a449);};}exports[_0x80a6('0x2c')]=function(_0x236b37,_0x478c33){var _0x489a48={},_0x1c08ee={},_0x25179a={'count':0x0,'rows':[]};var _0x34caf7=_[_0x80a6('0x2d')](db[_0x80a6('0x2e')][_0x80a6('0x2f')],function(_0xfa0943){return{'name':_0xfa0943[_0x80a6('0x30')],'type':_0xfa0943[_0x80a6('0x31')][_0x80a6('0x32')]};});_0x1c08ee['model']=_[_0x80a6('0x2d')](_0x34caf7,_0x80a6('0x2b'));_0x1c08ee[_0x80a6('0x33')]=_['keys'](_0x236b37[_0x80a6('0x33')]);_0x1c08ee[_0x80a6('0x34')]=_['intersection'](_0x1c08ee[_0x80a6('0x35')],_0x1c08ee[_0x80a6('0x33')]);_0x489a48[_0x80a6('0x36')]=_[_0x80a6('0x37')](_0x1c08ee[_0x80a6('0x35')],qs[_0x80a6('0x38')](_0x236b37[_0x80a6('0x33')][_0x80a6('0x38')]));_0x489a48['attributes']=_0x489a48[_0x80a6('0x36')]['length']?_0x489a48[_0x80a6('0x36')]:_0x1c08ee[_0x80a6('0x35')];if(!_0x236b37['query'][_0x80a6('0x39')](_0x80a6('0x3a'))){_0x489a48['limit']=qs[_0x80a6('0x1f')](_0x236b37['query'][_0x80a6('0x1f')]);_0x489a48[_0x80a6('0x1e')]=qs[_0x80a6('0x1e')](_0x236b37['query']['offset']);}_0x489a48[_0x80a6('0x3b')]=qs['sort'](_0x236b37['query']['sort']);_0x489a48[_0x80a6('0x3c')]=qs[_0x80a6('0x34')](_['pick'](_0x236b37[_0x80a6('0x33')],_0x1c08ee[_0x80a6('0x34')]),_0x34caf7);if(_0x236b37['query'][_0x80a6('0x3d')]){_0x489a48[_0x80a6('0x3c')]=_[_0x80a6('0x3e')](_0x489a48[_0x80a6('0x3c')],{'$or':_[_0x80a6('0x2d')](_0x34caf7,function(_0x1c1f1e){if(_0x1c1f1e[_0x80a6('0x31')]!==_0x80a6('0x3f')){var _0x480ed5={};_0x480ed5[_0x1c1f1e[_0x80a6('0x2b')]]={'$like':'%'+_0x236b37[_0x80a6('0x33')][_0x80a6('0x3d')]+'%'};return _0x480ed5;}})});}_0x489a48=_[_0x80a6('0x3e')]({},_0x489a48,_0x236b37[_0x80a6('0x40')]);var _0x789c19={'where':_0x489a48[_0x80a6('0x3c')]};return db[_0x80a6('0x2e')][_0x80a6('0x21')](_0x789c19)['then'](function(_0x7beab7){_0x25179a[_0x80a6('0x21')]=_0x7beab7;if(_0x236b37[_0x80a6('0x33')][_0x80a6('0x41')]){_0x489a48['include']=[{'all':!![]}];}return db[_0x80a6('0x2e')]['findAll'](_0x489a48);})[_0x80a6('0x27')](function(_0x5983cc){_0x25179a[_0x80a6('0x42')]=_0x5983cc;return _0x25179a;})[_0x80a6('0x27')](respondWithFilteredResult(_0x478c33,_0x489a48))[_0x80a6('0x43')](handleError(_0x478c33,null));};exports[_0x80a6('0x44')]=function(_0x3edeb1,_0x55dce2){var _0x1edf27={'raw':!![],'where':{'id':_0x3edeb1['params']['id']}},_0x5b22da={};_0x5b22da['model']=_['keys'](db[_0x80a6('0x2e')]['rawAttributes']);_0x5b22da[_0x80a6('0x33')]=_[_0x80a6('0x45')](_0x3edeb1[_0x80a6('0x33')]);_0x5b22da['filters']=_[_0x80a6('0x37')](_0x5b22da[_0x80a6('0x35')],_0x5b22da[_0x80a6('0x33')]);_0x1edf27[_0x80a6('0x36')]=_[_0x80a6('0x37')](_0x5b22da[_0x80a6('0x35')],qs['fields'](_0x3edeb1[_0x80a6('0x33')][_0x80a6('0x38')]));_0x1edf27[_0x80a6('0x36')]=_0x1edf27[_0x80a6('0x36')][_0x80a6('0x46')]?_0x1edf27['attributes']:_0x5b22da['model'];if(_0x3edeb1['query'][_0x80a6('0x41')]){_0x1edf27[_0x80a6('0x47')]=[{'all':!![]}];}_0x1edf27=_[_0x80a6('0x3e')]({},_0x1edf27,_0x3edeb1[_0x80a6('0x40')]);return db['SalesforceField'][_0x80a6('0x48')](_0x1edf27)[_0x80a6('0x27')](handleEntityNotFound(_0x55dce2,null))[_0x80a6('0x27')](respondWithResult(_0x55dce2,null))[_0x80a6('0x43')](handleError(_0x55dce2,null));};exports['create']=function(_0xe934c3,_0x14a5cb){return db[_0x80a6('0x2e')][_0x80a6('0x49')](_0xe934c3[_0x80a6('0x4a')],{})[_0x80a6('0x27')](respondWithResult(_0x14a5cb,0xc9))[_0x80a6('0x43')](handleError(_0x14a5cb,null));};exports[_0x80a6('0x26')]=function(_0x563c1e,_0x3f76e0){if(_0x563c1e[_0x80a6('0x4a')]['id']){delete _0x563c1e['body']['id'];}return db[_0x80a6('0x2e')]['find']({'where':{'id':_0x563c1e[_0x80a6('0x4b')]['id']}})[_0x80a6('0x27')](handleEntityNotFound(_0x3f76e0,null))[_0x80a6('0x27')](saveUpdates(_0x563c1e[_0x80a6('0x4a')],null))[_0x80a6('0x27')](respondWithResult(_0x3f76e0,null))[_0x80a6('0x43')](handleError(_0x3f76e0,null));};exports[_0x80a6('0x28')]=function(_0xdd7245,_0xd15c0f){return db['SalesforceField'][_0x80a6('0x48')]({'where':{'id':_0xdd7245[_0x80a6('0x4b')]['id']}})['then'](handleEntityNotFound(_0xd15c0f,null))[_0x80a6('0x27')](removeEntity(_0xd15c0f,null))['catch'](handleError(_0xd15c0f,null));};
\ No newline at end of file
+var _0xa46c=['to-csv','ejs','fs-extra','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','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','json','apply','save','update','then','destroy','name','send','map','rawAttributes','fieldName','type','key','query','model','attributes','sort','where','pick','filter','merge','VIRTUAL','options','SalesforceField','includeAll','findAll','rows','catch','show','params','keys','filters','intersection','fields','length','create','body','find','rimraf','zip-dir','request-promise','moment','util','sox'];(function(_0x1a9204,_0x1c9e00){var _0x17ca68=function(_0x1f4399){while(--_0x1f4399){_0x1a9204['push'](_0x1a9204['shift']());}};_0x17ca68(++_0x1c9e00);}(_0xa46c,0x1a4));var _0xca46=function(_0x334657,_0xff1ce7){_0x334657=_0x334657-0x0;var _0x15de7d=_0xa46c[_0x334657];return _0x15de7d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xca46('0x0'));var zipdir=require(_0xca46('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xca46('0x2'));var moment=require(_0xca46('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xca46('0x4'));var path=require('path');var sox=require(_0xca46('0x5'));var csv=require(_0xca46('0x6'));var ejs=require(_0xca46('0x7'));var fs=require('fs');var fs_extra=require(_0xca46('0x8'));var _=require('lodash');var squel=require(_0xca46('0x9'));var crypto=require(_0xca46('0xa'));var jsforce=require(_0xca46('0xb'));var deskjs=require(_0xca46('0xc'));var toCsv=require(_0xca46('0x6'));var querystring=require(_0xca46('0xd'));var Papa=require(_0xca46('0xe'));var Redis=require('ioredis');var authService=require(_0xca46('0xf'));var qs=require(_0xca46('0x10'));var as=require(_0xca46('0x11'));var hardwareService=require(_0xca46('0x12'));var logger=require(_0xca46('0x13'))(_0xca46('0x14'));var utils=require(_0xca46('0x15'));var config=require(_0xca46('0x16'));var licenseUtil=require(_0xca46('0x17'));var db=require(_0xca46('0x18'))['db'];function respondWithStatusCode(_0x426677,_0x4b03c1){_0x4b03c1=_0x4b03c1||0xcc;return function(_0x4d3a50){if(_0x4d3a50){return _0x426677[_0xca46('0x19')](_0x4b03c1);}return _0x426677[_0xca46('0x1a')](_0x4b03c1)[_0xca46('0x1b')]();};}function respondWithResult(_0x202d8c,_0x441ddc){_0x441ddc=_0x441ddc||0xc8;return function(_0x150bb1){if(_0x150bb1){return _0x202d8c[_0xca46('0x1a')](_0x441ddc)['json'](_0x150bb1);}};}function respondWithFilteredResult(_0x1f9123,_0x34873d){return function(_0x3dd7cd){if(_0x3dd7cd){var _0x3dce79=typeof _0x34873d[_0xca46('0x1c')]===_0xca46('0x1d')&&typeof _0x34873d['limit']==='undefined';var _0x341bdd=_0x3dd7cd[_0xca46('0x1e')];var _0x2b2a3a=_0x3dce79?0x0:_0x34873d['offset'];var _0x5caa46=_0x3dce79?_0x3dd7cd['count']:_0x34873d['offset']+_0x34873d[_0xca46('0x1f')];var _0x2d37bb;if(_0x5caa46>=_0x341bdd){_0x5caa46=_0x341bdd;_0x2d37bb=0xc8;}else{_0x2d37bb=0xce;}_0x1f9123[_0xca46('0x1a')](_0x2d37bb);return _0x1f9123[_0xca46('0x20')]('Content-Range',_0x2b2a3a+'-'+_0x5caa46+'/'+_0x341bdd)[_0xca46('0x21')](_0x3dd7cd);}return null;};}function patchUpdates(_0x322c8e){return function(_0x2dca7c){try{jsonpatch[_0xca46('0x22')](_0x2dca7c,_0x322c8e,!![]);}catch(_0x57de09){return BPromise['reject'](_0x57de09);}return _0x2dca7c[_0xca46('0x23')]();};}function saveUpdates(_0x2dc4e8,_0x479376){return function(_0x270180){if(_0x270180){return _0x270180[_0xca46('0x24')](_0x2dc4e8)[_0xca46('0x25')](function(_0xb2f6c3){return _0xb2f6c3;});}return null;};}function removeEntity(_0x3c8b42,_0x315c2c){return function(_0x52df87){if(_0x52df87){return _0x52df87[_0xca46('0x26')]()['then'](function(){_0x3c8b42[_0xca46('0x1a')](0xcc)[_0xca46('0x1b')]();});}};}function handleEntityNotFound(_0x28d627,_0x506a91){return function(_0x50e49d){if(!_0x50e49d){_0x28d627['sendStatus'](0x194);}return _0x50e49d;};}function handleError(_0xf72903,_0x4eaade){_0x4eaade=_0x4eaade||0x1f4;return function(_0x564712){logger['error'](_0x564712['stack']);if(_0x564712[_0xca46('0x27')]){delete _0x564712[_0xca46('0x27')];}_0xf72903[_0xca46('0x1a')](_0x4eaade)[_0xca46('0x28')](_0x564712);};}exports['index']=function(_0x12137f,_0x322744){var _0xe5f6dd={},_0x22cbf5={},_0x565a00={'count':0x0,'rows':[]};var _0x31da80=_[_0xca46('0x29')](db['SalesforceField'][_0xca46('0x2a')],function(_0x514255){return{'name':_0x514255[_0xca46('0x2b')],'type':_0x514255[_0xca46('0x2c')][_0xca46('0x2d')]};});_0x22cbf5['model']=_['map'](_0x31da80,'name');_0x22cbf5[_0xca46('0x2e')]=_['keys'](_0x12137f[_0xca46('0x2e')]);_0x22cbf5['filters']=_['intersection'](_0x22cbf5[_0xca46('0x2f')],_0x22cbf5[_0xca46('0x2e')]);_0xe5f6dd['attributes']=_['intersection'](_0x22cbf5[_0xca46('0x2f')],qs['fields'](_0x12137f[_0xca46('0x2e')]['fields']));_0xe5f6dd['attributes']=_0xe5f6dd[_0xca46('0x30')]['length']?_0xe5f6dd[_0xca46('0x30')]:_0x22cbf5[_0xca46('0x2f')];if(!_0x12137f[_0xca46('0x2e')]['hasOwnProperty']('nolimit')){_0xe5f6dd['limit']=qs[_0xca46('0x1f')](_0x12137f[_0xca46('0x2e')][_0xca46('0x1f')]);_0xe5f6dd['offset']=qs[_0xca46('0x1c')](_0x12137f[_0xca46('0x2e')]['offset']);}_0xe5f6dd['order']=qs['sort'](_0x12137f[_0xca46('0x2e')][_0xca46('0x31')]);_0xe5f6dd[_0xca46('0x32')]=qs['filters'](_[_0xca46('0x33')](_0x12137f[_0xca46('0x2e')],_0x22cbf5['filters']),_0x31da80);if(_0x12137f[_0xca46('0x2e')][_0xca46('0x34')]){_0xe5f6dd[_0xca46('0x32')]=_[_0xca46('0x35')](_0xe5f6dd[_0xca46('0x32')],{'$or':_[_0xca46('0x29')](_0x31da80,function(_0x244d9e){if(_0x244d9e['type']!==_0xca46('0x36')){var _0x7e4d2d={};_0x7e4d2d[_0x244d9e[_0xca46('0x27')]]={'$like':'%'+_0x12137f['query'][_0xca46('0x34')]+'%'};return _0x7e4d2d;}})});}_0xe5f6dd=_[_0xca46('0x35')]({},_0xe5f6dd,_0x12137f[_0xca46('0x37')]);var _0x3a0ac8={'where':_0xe5f6dd[_0xca46('0x32')]};return db[_0xca46('0x38')][_0xca46('0x1e')](_0x3a0ac8)[_0xca46('0x25')](function(_0x324e34){_0x565a00[_0xca46('0x1e')]=_0x324e34;if(_0x12137f['query'][_0xca46('0x39')]){_0xe5f6dd['include']=[{'all':!![]}];}return db[_0xca46('0x38')][_0xca46('0x3a')](_0xe5f6dd);})['then'](function(_0x2155b6){_0x565a00[_0xca46('0x3b')]=_0x2155b6;return _0x565a00;})[_0xca46('0x25')](respondWithFilteredResult(_0x322744,_0xe5f6dd))[_0xca46('0x3c')](handleError(_0x322744,null));};exports[_0xca46('0x3d')]=function(_0x3c9970,_0x5e42ec){var _0x5e6a43={'raw':!![],'where':{'id':_0x3c9970[_0xca46('0x3e')]['id']}},_0x3e88f9={};_0x3e88f9[_0xca46('0x2f')]=_[_0xca46('0x3f')](db[_0xca46('0x38')][_0xca46('0x2a')]);_0x3e88f9[_0xca46('0x2e')]=_[_0xca46('0x3f')](_0x3c9970[_0xca46('0x2e')]);_0x3e88f9[_0xca46('0x40')]=_[_0xca46('0x41')](_0x3e88f9[_0xca46('0x2f')],_0x3e88f9[_0xca46('0x2e')]);_0x5e6a43[_0xca46('0x30')]=_[_0xca46('0x41')](_0x3e88f9[_0xca46('0x2f')],qs['fields'](_0x3c9970[_0xca46('0x2e')][_0xca46('0x42')]));_0x5e6a43[_0xca46('0x30')]=_0x5e6a43[_0xca46('0x30')][_0xca46('0x43')]?_0x5e6a43[_0xca46('0x30')]:_0x3e88f9[_0xca46('0x2f')];if(_0x3c9970['query']['includeAll']){_0x5e6a43['include']=[{'all':!![]}];}_0x5e6a43=_[_0xca46('0x35')]({},_0x5e6a43,_0x3c9970['options']);return db[_0xca46('0x38')]['find'](_0x5e6a43)[_0xca46('0x25')](handleEntityNotFound(_0x5e42ec,null))[_0xca46('0x25')](respondWithResult(_0x5e42ec,null))[_0xca46('0x3c')](handleError(_0x5e42ec,null));};exports[_0xca46('0x44')]=function(_0x116590,_0xfd4f79){return db[_0xca46('0x38')][_0xca46('0x44')](_0x116590[_0xca46('0x45')],{})['then'](respondWithResult(_0xfd4f79,0xc9))[_0xca46('0x3c')](handleError(_0xfd4f79,null));};exports[_0xca46('0x24')]=function(_0x867bc,_0x583b6d){if(_0x867bc['body']['id']){delete _0x867bc[_0xca46('0x45')]['id'];}return db[_0xca46('0x38')][_0xca46('0x46')]({'where':{'id':_0x867bc['params']['id']}})['then'](handleEntityNotFound(_0x583b6d,null))[_0xca46('0x25')](saveUpdates(_0x867bc['body'],null))[_0xca46('0x25')](respondWithResult(_0x583b6d,null))[_0xca46('0x3c')](handleError(_0x583b6d,null));};exports[_0xca46('0x26')]=function(_0x19ace9,_0xb84b9a){return db[_0xca46('0x38')][_0xca46('0x46')]({'where':{'id':_0x19ace9[_0xca46('0x3e')]['id']}})['then'](handleEntityNotFound(_0xb84b9a,null))[_0xca46('0x25')](removeEntity(_0xb84b9a,null))['catch'](handleError(_0xb84b9a,null));};
\ No newline at end of file
index 383def2..8569052 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8008=['lodash','util','api','bluebird','request-promise','path','rimraf','exports','define','salesforce_unique_index'];(function(_0x49d11b,_0x601f4a){var _0x34b12c=function(_0x32d77f){while(--_0x32d77f){_0x49d11b['push'](_0x49d11b['shift']());}};_0x34b12c(++_0x601f4a);}(_0x8008,0xd2));var _0x8800=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8008[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x8800('0x0'));var util=require(_0x8800('0x1'));var logger=require('../../config/logger')(_0x8800('0x2'));var moment=require('moment');var BPromise=require(_0x8800('0x3'));var rp=require(_0x8800('0x4'));var fs=require('fs');var path=require(_0x8800('0x5'));var rimraf=require(_0x8800('0x6'));var config=require('../../config/environment');var attributes=require('./intSalesforceField.attributes');module[_0x8800('0x7')]=function(_0x5e8819,_0x21e466){return _0x5e8819[_0x8800('0x8')]('SalesforceField',attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x8800('0x9'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa40=['salesforce_unique_index','FieldId','lodash','api','moment','bluebird','request-promise','rimraf','./intSalesforceField.attributes','exports','int_salesforce_fields'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfa40,0x120));var _0x0fa4=function(_0x3f4891,_0x4e6f62){_0x3f4891=_0x3f4891-0x0;var _0x54f2d8=_0xfa40[_0x3f4891];return _0x54f2d8;};'use strict';var _=require(_0x0fa4('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0fa4('0x1'));var moment=require(_0x0fa4('0x2'));var BPromise=require(_0x0fa4('0x3'));var rp=require(_0x0fa4('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0fa4('0x5'));var config=require('../../config/environment');var attributes=require(_0x0fa4('0x6'));module[_0x0fa4('0x7')]=function(_0x9f8cd7,_0x2ec42b){return _0x9f8cd7['define']('SalesforceField',attributes,{'tableName':_0x0fa4('0x8'),'paranoid':![],'indexes':[{'name':_0x0fa4('0x9'),'fields':['idField',_0x0fa4('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0c11538..142e201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa71c=['request','then','request\x20sent','debug','stringify','code','error','SalesforceField,\x20%s,\x20%s','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x55daf2,_0x1b48de){var _0x1c8500=function(_0x4686b5){while(--_0x4686b5){_0x55daf2['push'](_0x55daf2['shift']());}};_0x1c8500(++_0x1b48de);}(_0xa71c,0x193));var _0xca71=function(_0x44548e,_0x3ae4cd){_0x44548e=_0x44548e-0x0;var _0x4cd439=_0xa71c[_0x44548e];return _0x4cd439;};'use strict';var _=require(_0xca71('0x0'));var util=require(_0xca71('0x1'));var moment=require('moment');var BPromise=require(_0xca71('0x2'));var rs=require(_0xca71('0x3'));var fs=require('fs');var Redis=require(_0xca71('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xca71('0x5'));var logger=require(_0xca71('0x6'))(_0xca71('0x7'));var config=require(_0xca71('0x8'));var jayson=require(_0xca71('0x9'));var client=jayson[_0xca71('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x139630,_0x5ee201,_0x6ee12c){return new BPromise(function(_0x59557a,_0x142381){return client[_0xca71('0xb')](_0x139630,_0x6ee12c)[_0xca71('0xc')](function(_0x4f2881){logger['info']('SalesforceField,\x20%s,\x20%s',_0x5ee201,_0xca71('0xd'));logger[_0xca71('0xe')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x5ee201,_0xca71('0xd'),JSON[_0xca71('0xf')](_0x4f2881));if(_0x4f2881['error']){if(_0x4f2881['error'][_0xca71('0x10')]===0x1f4){logger[_0xca71('0x11')](_0xca71('0x12'),_0x5ee201,_0x4f2881[_0xca71('0x11')][_0xca71('0x13')]);return _0x142381(_0x4f2881[_0xca71('0x11')][_0xca71('0x13')]);}logger[_0xca71('0x11')](_0xca71('0x12'),_0x5ee201,_0x4f2881['error']['message']);return _0x59557a(_0x4f2881[_0xca71('0x11')][_0xca71('0x13')]);}else{logger[_0xca71('0x14')]('SalesforceField,\x20%s,\x20%s',_0x5ee201,'request\x20sent');_0x59557a(_0x4f2881[_0xca71('0x15')][_0xca71('0x13')]);}})[_0xca71('0x16')](function(_0x1ad8d5){logger[_0xca71('0x11')](_0xca71('0x12'),_0x5ee201,_0x1ad8d5);_0x142381(_0x1ad8d5);});});}
\ No newline at end of file
+var _0xeebd=['../../config/environment','jayson/promise','client','http','request','then','SalesforceField,\x20%s,\x20%s','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0x251d3b,_0x3741c4){var _0x3568f0=function(_0x327c80){while(--_0x327c80){_0x251d3b['push'](_0x251d3b['shift']());}};_0x3568f0(++_0x3741c4);}(_0xeebd,0x149));var _0xdeeb=function(_0x3b153c,_0x3c1fca){_0x3b153c=_0x3b153c-0x0;var _0x4b1920=_0xeebd[_0x3b153c];return _0x4b1920;};'use strict';var _=require(_0xdeeb('0x0'));var util=require(_0xdeeb('0x1'));var moment=require(_0xdeeb('0x2'));var BPromise=require('bluebird');var rs=require(_0xdeeb('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdeeb('0x4'))['db'];var utils=require(_0xdeeb('0x5'));var logger=require('../../config/logger')(_0xdeeb('0x6'));var config=require(_0xdeeb('0x7'));var jayson=require(_0xdeeb('0x8'));var client=jayson[_0xdeeb('0x9')][_0xdeeb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54960b,_0x40e1ef,_0x1bb1bd){return new BPromise(function(_0x3b92f4,_0xfca6f4){return client[_0xdeeb('0xb')](_0x54960b,_0x1bb1bd)[_0xdeeb('0xc')](function(_0x4f524c){logger['info'](_0xdeeb('0xd'),_0x40e1ef,_0xdeeb('0xe'));logger['debug'](_0xdeeb('0xf'),_0x40e1ef,_0xdeeb('0xe'),JSON[_0xdeeb('0x10')](_0x4f524c));if(_0x4f524c['error']){if(_0x4f524c[_0xdeeb('0x11')][_0xdeeb('0x12')]===0x1f4){logger[_0xdeeb('0x11')]('SalesforceField,\x20%s,\x20%s',_0x40e1ef,_0x4f524c['error'][_0xdeeb('0x13')]);return _0xfca6f4(_0x4f524c['error']['message']);}logger['error'](_0xdeeb('0xd'),_0x40e1ef,_0x4f524c['error']['message']);return _0x3b92f4(_0x4f524c[_0xdeeb('0x11')][_0xdeeb('0x13')]);}else{logger[_0xdeeb('0x14')](_0xdeeb('0xd'),_0x40e1ef,'request\x20sent');_0x3b92f4(_0x4f524c['result'][_0xdeeb('0x13')]);}})['catch'](function(_0x1a09b8){logger[_0xdeeb('0x11')]('SalesforceField,\x20%s,\x20%s',_0x40e1ef,_0x1a09b8);_0xfca6f4(_0x1a09b8);});});}
\ No newline at end of file
index 29b9444..1126bfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf491=['../../components/auth/service','../../config/environment','./intServicenowAccount.controller','get','/:id/configurations','isAuthenticated','/:id/fields','getFields','create','post','put','/:id','update','delete','destroy','exports','multer','util','path','Router'];(function(_0x24de8e,_0x58d206){var _0x482694=function(_0x338528){while(--_0x338528){_0x24de8e['push'](_0x24de8e['shift']());}};_0x482694(++_0x58d206);}(_0xf491,0x178));var _0x1f49=function(_0x23870c,_0x28959b){_0x23870c=_0x23870c-0x0;var _0x197d1f=_0xf491[_0x23870c];return _0x197d1f;};'use strict';var multer=require(_0x1f49('0x0'));var util=require(_0x1f49('0x1'));var path=require(_0x1f49('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1f49('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1f49('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1f49('0x5'));var controller=require(_0x1f49('0x6'));router[_0x1f49('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x1f49('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x1f49('0x7')](_0x1f49('0x8'),auth[_0x1f49('0x9')](),controller['getConfigurations']);router[_0x1f49('0x7')](_0x1f49('0xa'),auth[_0x1f49('0x9')](),controller[_0x1f49('0xb')]);router['post']('/',auth[_0x1f49('0x9')](),controller[_0x1f49('0xc')]);router[_0x1f49('0xd')](_0x1f49('0x8'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x1f49('0xe')](_0x1f49('0xf'),auth[_0x1f49('0x9')](),controller[_0x1f49('0x10')]);router[_0x1f49('0x11')](_0x1f49('0xf'),auth[_0x1f49('0x9')](),controller[_0x1f49('0x12')]);module[_0x1f49('0x13')]=router;
\ No newline at end of file
+var _0x7a0a=['create','addConfiguration','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','post'];(function(_0x22c5d5,_0x1fcad1){var _0x3b9fc5=function(_0x2edc85){while(--_0x2edc85){_0x22c5d5['push'](_0x22c5d5['shift']());}};_0x3b9fc5(++_0x1fcad1);}(_0x7a0a,0xc6));var _0xa7a0=function(_0x1a5faf,_0x3b6d0a){_0x1a5faf=_0x1a5faf-0x0;var _0x2911fd=_0x7a0a[_0x1a5faf];return _0x2911fd;};'use strict';var multer=require(_0xa7a0('0x0'));var util=require(_0xa7a0('0x1'));var path=require(_0xa7a0('0x2'));var timeout=require(_0xa7a0('0x3'));var express=require(_0xa7a0('0x4'));var router=express[_0xa7a0('0x5')]();var fs_extra=require(_0xa7a0('0x6'));var auth=require(_0xa7a0('0x7'));var interaction=require(_0xa7a0('0x8'));var config=require(_0xa7a0('0x9'));var controller=require(_0xa7a0('0xa'));router[_0xa7a0('0xb')]('/',auth[_0xa7a0('0xc')](),controller['index']);router[_0xa7a0('0xb')](_0xa7a0('0xd'),auth[_0xa7a0('0xc')](),controller[_0xa7a0('0xe')]);router[_0xa7a0('0xb')]('/:id/configurations',auth['isAuthenticated'](),controller['getConfigurations']);router['get'](_0xa7a0('0xf'),auth[_0xa7a0('0xc')](),controller[_0xa7a0('0x10')]);router[_0xa7a0('0x11')]('/',auth[_0xa7a0('0xc')](),controller[_0xa7a0('0x12')]);router[_0xa7a0('0x11')]('/:id/configurations',auth[_0xa7a0('0xc')](),controller[_0xa7a0('0x13')]);router[_0xa7a0('0x14')](_0xa7a0('0xd'),auth[_0xa7a0('0xc')](),controller['update']);router[_0xa7a0('0x15')](_0xa7a0('0xd'),auth[_0xa7a0('0xc')](),controller[_0xa7a0('0x16')]);module[_0xa7a0('0x17')]=router;
\ No newline at end of file
index 5a92305..2dce7bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x453b=['STRING','username','sequelize','exports'];(function(_0x5814ca,_0x3b6713){var _0xeb1833=function(_0x553de1){while(--_0x553de1){_0x5814ca['push'](_0x5814ca['shift']());}};_0xeb1833(++_0x3b6713);}(_0x453b,0x1aa));var _0xb453=function(_0x54de5d,_0x1f8b26){_0x54de5d=_0x54de5d-0x0;var _0x1b349e=_0x453b[_0x54de5d];return _0x1b349e;};'use strict';var Sequelize=require(_0xb453('0x0'));module[_0xb453('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb453('0x2')]},'username':{'type':Sequelize[_0xb453('0x2')],'unique':_0xb453('0x3')},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xb453('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xb453('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xf036=['remoteUri','sequelize','exports','STRING'];(function(_0x423a5b,_0x589f80){var _0x565ab4=function(_0x489d64){while(--_0x489d64){_0x423a5b['push'](_0x423a5b['shift']());}};_0x565ab4(++_0x589f80);}(_0xf036,0x161));var _0x6f03=function(_0xc1fd12,_0x5549fe){_0xc1fd12=_0xc1fd12-0x0;var _0x3efe80=_0xf036[_0xc1fd12];return _0x3efe80;};'use strict';var Sequelize=require(_0x6f03('0x0'));module[_0x6f03('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x6f03('0x2')],'unique':'username'},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x6f03('0x2')]},'remoteUri':{'type':Sequelize[_0x6f03('0x2')],'unique':_0x6f03('0x3')},'serverUrl':{'type':Sequelize[_0x6f03('0x2')],'allowNull':![]}};
\ No newline at end of file
index 356ce80..e46646b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeb5=['offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','error','stack','name','index','map','ServicenowAccount','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','create','body','find','getConfigurations','findOne','params','ServicenowConfiguration','getSubjects','channel','getDescriptions','ServicenowField','Descriptions','getFields','made_sla','hold_reason','knowledge','subcategory','incident_state','severity','category','parent','caused_by','watch_list','sys_updated_on','child_incidents','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','sys_domain','state','sys_created_by','calendar_stc','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','short_description','close_code','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','description','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','reopened_by','problem_id','company','reassignment_count','activity_due','assigned_to','comments','sla_due','comments_and_work_notes','sys_mod_count','reopen_count','escalation','upon_approval','location','username','password','email','remoteUri','slice','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','remove','includes','forEach','label','push','all','assign','log','TCL:\x20_object','concat','test','statusCode','send','Wrong\x20credentials','True','true','False','sys_choice?sysparm_query=name=incident^element=','inactive','false','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','../../components/parsers/advancedSearch','../../config/logger','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json'];(function(_0x236ed6,_0x562e24){var _0x2507e4=function(_0x1fdd4b){while(--_0x1fdd4b){_0x236ed6['push'](_0x236ed6['shift']());}};_0x2507e4(++_0x562e24);}(_0xdeb5,0x9a));var _0x5deb=function(_0x4fc01a,_0x49d35c){_0x4fc01a=_0x4fc01a-0x0;var _0x1ccf29=_0xdeb5[_0x4fc01a];return _0x1ccf29;};'use strict';var emlformat=require(_0x5deb('0x0'));var rimraf=require(_0x5deb('0x1'));var zipdir=require(_0x5deb('0x2'));var jsonpatch=require(_0x5deb('0x3'));var rp=require(_0x5deb('0x4'));var moment=require(_0x5deb('0x5'));var BPromise=require(_0x5deb('0x6'));var Mustache=require(_0x5deb('0x7'));var util=require(_0x5deb('0x8'));var path=require(_0x5deb('0x9'));var sox=require(_0x5deb('0xa'));var csv=require(_0x5deb('0xb'));var ejs=require(_0x5deb('0xc'));var fs=require('fs');var fs_extra=require(_0x5deb('0xd'));var _=require(_0x5deb('0xe'));var squel=require(_0x5deb('0xf'));var crypto=require(_0x5deb('0x10'));var jsforce=require(_0x5deb('0x11'));var deskjs=require(_0x5deb('0x12'));var toCsv=require(_0x5deb('0xb'));var querystring=require(_0x5deb('0x13'));var Papa=require(_0x5deb('0x14'));var Redis=require('ioredis');var authService=require(_0x5deb('0x15'));var qs=require(_0x5deb('0x16'));var as=require(_0x5deb('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5deb('0x18'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5deb('0x19'));var db=require('../../mysqldb')['db'];var integrations=require(_0x5deb('0x1a'));function respondWithStatusCode(_0xaa95a7,_0x13a5f6){_0x13a5f6=_0x13a5f6||0xcc;return function(_0x4e414c){if(_0x4e414c){return _0xaa95a7[_0x5deb('0x1b')](_0x13a5f6);}return _0xaa95a7[_0x5deb('0x1c')](_0x13a5f6)[_0x5deb('0x1d')]();};}function respondWithResult(_0x4a5359,_0x19caa2){_0x19caa2=_0x19caa2||0xc8;return function(_0x1907e2){if(_0x1907e2){return _0x4a5359[_0x5deb('0x1c')](_0x19caa2)[_0x5deb('0x1e')](_0x1907e2);}};}function respondWithFilteredResult(_0x5d5c3a,_0xceaf9d){return function(_0x5c17e0){if(_0x5c17e0){var _0x59e7d5=typeof _0xceaf9d[_0x5deb('0x1f')]===_0x5deb('0x20')&&typeof _0xceaf9d[_0x5deb('0x21')]===_0x5deb('0x20');var _0x38b5ec=_0x5c17e0['count'];var _0x40d59c=_0x59e7d5?0x0:_0xceaf9d[_0x5deb('0x1f')];var _0x114edc=_0x59e7d5?_0x5c17e0[_0x5deb('0x22')]:_0xceaf9d['offset']+_0xceaf9d[_0x5deb('0x21')];var _0x4c0ad7;if(_0x114edc>=_0x38b5ec){_0x114edc=_0x38b5ec;_0x4c0ad7=0xc8;}else{_0x4c0ad7=0xce;}_0x5d5c3a[_0x5deb('0x1c')](_0x4c0ad7);return _0x5d5c3a[_0x5deb('0x23')](_0x5deb('0x24'),_0x40d59c+'-'+_0x114edc+'/'+_0x38b5ec)['json'](_0x5c17e0);}return null;};}function patchUpdates(_0x519967){return function(_0x1a64ea){try{jsonpatch[_0x5deb('0x25')](_0x1a64ea,_0x519967,!![]);}catch(_0x281b70){return BPromise['reject'](_0x281b70);}return _0x1a64ea['save']();};}function saveUpdates(_0x877d1d,_0x55be8b){return function(_0x2ffbd7){if(_0x2ffbd7){return _0x2ffbd7[_0x5deb('0x26')](_0x877d1d)[_0x5deb('0x27')](function(_0xd9a26d){return _0xd9a26d;});}return null;};}function removeEntity(_0x2a3c86,_0xf03ed6){return function(_0x30d67d){if(_0x30d67d){return _0x30d67d[_0x5deb('0x28')]()[_0x5deb('0x27')](function(){_0x2a3c86[_0x5deb('0x1c')](0xcc)[_0x5deb('0x1d')]();});}};}function handleEntityNotFound(_0x4680d8,_0x3121c8){return function(_0x5286f3){if(!_0x5286f3){_0x4680d8[_0x5deb('0x1b')](0x194);}return _0x5286f3;};}function handleError(_0x35fe0f,_0x47a4f9){_0x47a4f9=_0x47a4f9||0x1f4;return function(_0x3e4749){logger[_0x5deb('0x29')](_0x3e4749[_0x5deb('0x2a')]);if(_0x3e4749[_0x5deb('0x2b')]){delete _0x3e4749[_0x5deb('0x2b')];}_0x35fe0f[_0x5deb('0x1c')](_0x47a4f9)['send'](_0x3e4749);};}exports[_0x5deb('0x2c')]=function(_0x215066,_0x364b68){var _0x47f88d={},_0x359244={},_0x4268a3={'count':0x0,'rows':[]};var _0x4ac189=_[_0x5deb('0x2d')](db[_0x5deb('0x2e')][_0x5deb('0x2f')],function(_0x2c1edc){return{'name':_0x2c1edc[_0x5deb('0x30')],'type':_0x2c1edc['type'][_0x5deb('0x31')]};});_0x359244[_0x5deb('0x32')]=_[_0x5deb('0x2d')](_0x4ac189,_0x5deb('0x2b'));_0x359244[_0x5deb('0x33')]=_[_0x5deb('0x34')](_0x215066['query']);_0x359244['filters']=_[_0x5deb('0x35')](_0x359244[_0x5deb('0x32')],_0x359244[_0x5deb('0x33')]);_0x47f88d[_0x5deb('0x36')]=_['intersection'](_0x359244['model'],qs['fields'](_0x215066[_0x5deb('0x33')][_0x5deb('0x37')]));_0x47f88d[_0x5deb('0x36')]=_0x47f88d[_0x5deb('0x36')]['length']?_0x47f88d[_0x5deb('0x36')]:_0x359244[_0x5deb('0x32')];if(!_0x215066[_0x5deb('0x33')]['hasOwnProperty'](_0x5deb('0x38'))){_0x47f88d[_0x5deb('0x21')]=qs[_0x5deb('0x21')](_0x215066[_0x5deb('0x33')]['limit']);_0x47f88d['offset']=qs[_0x5deb('0x1f')](_0x215066['query'][_0x5deb('0x1f')]);}_0x47f88d[_0x5deb('0x39')]=qs[_0x5deb('0x3a')](_0x215066[_0x5deb('0x33')][_0x5deb('0x3a')]);_0x47f88d[_0x5deb('0x3b')]=qs[_0x5deb('0x3c')](_[_0x5deb('0x3d')](_0x215066[_0x5deb('0x33')],_0x359244['filters']),_0x4ac189);if(_0x215066[_0x5deb('0x33')][_0x5deb('0x3e')]){_0x47f88d[_0x5deb('0x3b')]=_[_0x5deb('0x3f')](_0x47f88d[_0x5deb('0x3b')],{'$or':_[_0x5deb('0x2d')](_0x4ac189,function(_0x2ebcf6){if(_0x2ebcf6[_0x5deb('0x40')]!==_0x5deb('0x41')){var _0x245b23={};_0x245b23[_0x2ebcf6[_0x5deb('0x2b')]]={'$like':'%'+_0x215066[_0x5deb('0x33')]['filter']+'%'};return _0x245b23;}})});}_0x47f88d=_[_0x5deb('0x3f')]({},_0x47f88d,_0x215066[_0x5deb('0x42')]);var _0x27b28d={'where':_0x47f88d[_0x5deb('0x3b')]};return db[_0x5deb('0x2e')][_0x5deb('0x22')](_0x27b28d)[_0x5deb('0x27')](function(_0x26eb00){_0x4268a3['count']=_0x26eb00;if(_0x215066[_0x5deb('0x33')][_0x5deb('0x43')]){_0x47f88d[_0x5deb('0x44')]=[{'all':!![]}];}return db[_0x5deb('0x2e')][_0x5deb('0x45')](_0x47f88d);})[_0x5deb('0x27')](function(_0x10f417){_0x4268a3[_0x5deb('0x46')]=_0x10f417;return _0x4268a3;})[_0x5deb('0x27')](respondWithFilteredResult(_0x364b68,_0x47f88d))[_0x5deb('0x47')](handleError(_0x364b68,null));};exports[_0x5deb('0x48')]=function(_0x55246b,_0x3f05c1){var _0x21b914={'raw':![],'where':{'id':_0x55246b['params']['id']}},_0x332281={};_0x332281['model']=_[_0x5deb('0x34')](db['ServicenowAccount'][_0x5deb('0x2f')]);_0x332281[_0x5deb('0x33')]=_[_0x5deb('0x34')](_0x55246b['query']);_0x332281[_0x5deb('0x3c')]=_[_0x5deb('0x35')](_0x332281[_0x5deb('0x32')],_0x332281[_0x5deb('0x33')]);_0x21b914['attributes']=_['intersection'](_0x332281[_0x5deb('0x32')],qs[_0x5deb('0x37')](_0x55246b[_0x5deb('0x33')][_0x5deb('0x37')]));_0x21b914[_0x5deb('0x36')]=_0x21b914[_0x5deb('0x36')][_0x5deb('0x49')]?_0x21b914[_0x5deb('0x36')]:_0x332281[_0x5deb('0x32')];if(_0x55246b['query'][_0x5deb('0x43')]){_0x21b914[_0x5deb('0x44')]=[{'all':!![]}];}_0x21b914=_[_0x5deb('0x3f')]({},_0x21b914,_0x55246b[_0x5deb('0x42')]);return db[_0x5deb('0x2e')]['find'](_0x21b914)[_0x5deb('0x27')](handleEntityNotFound(_0x3f05c1,null))[_0x5deb('0x27')](respondWithResult(_0x3f05c1,null))['catch'](handleError(_0x3f05c1,null));};exports[_0x5deb('0x4a')]=function(_0x5334de,_0xab415b){return db['ServicenowAccount'][_0x5deb('0x4a')](_0x5334de[_0x5deb('0x4b')],{})[_0x5deb('0x27')](respondWithResult(_0xab415b,0xc9))[_0x5deb('0x47')](handleError(_0xab415b,null));};exports[_0x5deb('0x26')]=function(_0x373d9a,_0x241c93){if(_0x373d9a[_0x5deb('0x4b')]['id']){delete _0x373d9a[_0x5deb('0x4b')]['id'];}return db[_0x5deb('0x2e')][_0x5deb('0x4c')]({'where':{'id':_0x373d9a['params']['id']}})[_0x5deb('0x27')](handleEntityNotFound(_0x241c93,null))['then'](saveUpdates(_0x373d9a[_0x5deb('0x4b')],null))[_0x5deb('0x27')](respondWithResult(_0x241c93,null))[_0x5deb('0x47')](handleError(_0x241c93,null));};exports['destroy']=function(_0x4a952e,_0x49fd0d){return db[_0x5deb('0x2e')]['find']({'where':{'id':_0x4a952e['params']['id']}})[_0x5deb('0x27')](handleEntityNotFound(_0x49fd0d,null))[_0x5deb('0x27')](removeEntity(_0x49fd0d,null))[_0x5deb('0x47')](handleError(_0x49fd0d,null));};exports[_0x5deb('0x4d')]=function(_0x4e05f8,_0x58e500,_0x4576de){var _0x4eae81={};var _0x29e1b0={};var _0x4819dc;var _0x2fad29;return db[_0x5deb('0x2e')][_0x5deb('0x4e')]({'where':{'id':_0x4e05f8[_0x5deb('0x4f')]['id']}})[_0x5deb('0x27')](handleEntityNotFound(_0x58e500,null))['then'](function(_0x2ffce1){if(_0x2ffce1){_0x4819dc=_0x2ffce1;_0x29e1b0[_0x5deb('0x32')]=_[_0x5deb('0x34')](db[_0x5deb('0x50')][_0x5deb('0x2f')]);_0x29e1b0[_0x5deb('0x33')]=_[_0x5deb('0x34')](_0x4e05f8[_0x5deb('0x33')]);_0x29e1b0[_0x5deb('0x3c')]=_[_0x5deb('0x35')](_0x29e1b0[_0x5deb('0x32')],_0x29e1b0[_0x5deb('0x33')]);_0x4eae81[_0x5deb('0x36')]=_[_0x5deb('0x35')](_0x29e1b0[_0x5deb('0x32')],qs['fields'](_0x4e05f8[_0x5deb('0x33')][_0x5deb('0x37')]));_0x4eae81[_0x5deb('0x36')]=_0x4eae81['attributes'][_0x5deb('0x49')]?_0x4eae81[_0x5deb('0x36')]:_0x29e1b0[_0x5deb('0x32')];_0x4eae81[_0x5deb('0x39')]=qs[_0x5deb('0x3a')](_0x4e05f8[_0x5deb('0x33')][_0x5deb('0x3a')]);_0x4eae81[_0x5deb('0x3b')]=qs[_0x5deb('0x3c')](_[_0x5deb('0x3d')](_0x4e05f8['query'],_0x29e1b0[_0x5deb('0x3c')]));if(_0x4e05f8[_0x5deb('0x33')][_0x5deb('0x3e')]){_0x4eae81['where']=_['merge'](_0x4eae81[_0x5deb('0x3b')],{'$or':_[_0x5deb('0x2d')](_0x4eae81[_0x5deb('0x36')],function(_0x3f702b){var _0x1a6ce5={};_0x1a6ce5[_0x3f702b]={'$like':'%'+_0x4e05f8[_0x5deb('0x33')]['filter']+'%'};return _0x1a6ce5;})});}_0x4eae81=_[_0x5deb('0x3f')]({},_0x4eae81,_0x4e05f8['options']);return _0x4819dc[_0x5deb('0x4d')](_0x4eae81);}})[_0x5deb('0x27')](function(_0x2df334){if(_0x2df334){_0x2fad29=_0x2df334[_0x5deb('0x49')];if(!_0x4e05f8['query']['hasOwnProperty']('nolimit')){_0x4eae81[_0x5deb('0x21')]=qs[_0x5deb('0x21')](_0x4e05f8[_0x5deb('0x33')][_0x5deb('0x21')]);_0x4eae81[_0x5deb('0x1f')]=qs['offset'](_0x4e05f8[_0x5deb('0x33')][_0x5deb('0x1f')]);}return _0x4819dc[_0x5deb('0x4d')](_0x4eae81);}})['then'](function(_0x2cf037){if(_0x2cf037){return _0x2cf037?{'count':_0x2fad29,'rows':_0x2cf037}:null;}})[_0x5deb('0x27')](respondWithResult(_0x58e500,null))[_0x5deb('0x47')](handleError(_0x58e500,null));};exports['addConfiguration']=function(_0x64c0e8,_0x3e6e93,_0x2866f1){if(_0x64c0e8[_0x5deb('0x4b')]['id']){delete _0x64c0e8[_0x5deb('0x4b')]['id'];}return db[_0x5deb('0x2e')][_0x5deb('0x4e')]({'where':{'id':_0x64c0e8[_0x5deb('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3e6e93,null))[_0x5deb('0x27')](function(_0x5088d7){if(_0x5088d7){_0x64c0e8[_0x5deb('0x4b')]['AccountId']=_0x5088d7['id'];_0x64c0e8['body']['Subjects']=integrations[_0x5deb('0x51')](_0x64c0e8['body'][_0x5deb('0x52')],_0x64c0e8[_0x5deb('0x4b')][_0x5deb('0x40')]);_0x64c0e8[_0x5deb('0x4b')]['Descriptions']=integrations[_0x5deb('0x53')](_0x64c0e8[_0x5deb('0x4b')][_0x5deb('0x52')],_0x64c0e8['body'][_0x5deb('0x40')]);return db[_0x5deb('0x50')][_0x5deb('0x4a')](_0x64c0e8['body'],{'include':[{'model':db[_0x5deb('0x54')],'as':'Subjects'},{'model':db['ServicenowField'],'as':_0x5deb('0x55')}]});}return null;})[_0x5deb('0x27')](respondWithResult(_0x3e6e93,null))['catch'](handleError(_0x3e6e93,null));};exports[_0x5deb('0x56')]=function(_0x2f94af,_0x38df9f,_0x1937a2){var _0x5119b2=[_0x5deb('0x57'),_0x5deb('0x58'),_0x5deb('0x59'),_0x5deb('0x5a'),'close_code','notify',_0x5deb('0x5b'),_0x5deb('0x5c'),_0x5deb('0x5d')];var _0x3f1ec8=[_0x5deb('0x5e'),_0x5deb('0x57'),_0x5deb('0x5f'),_0x5deb('0x60'),'upon_reject',_0x5deb('0x61'),_0x5deb('0x62'),'hold_reason','approval_history','number',_0x5deb('0x63'),_0x5deb('0x64'),_0x5deb('0x65'),_0x5deb('0x66'),_0x5deb('0x67'),_0x5deb('0x68'),_0x5deb('0x69'),_0x5deb('0x6a'),'knowledge',_0x5deb('0x39'),_0x5deb('0x6b'),'closed_at',_0x5deb('0x6c'),_0x5deb('0x6d'),_0x5deb('0x6e'),'active',_0x5deb('0x6f'),_0x5deb('0x70'),_0x5deb('0x71'),_0x5deb('0x72'),_0x5deb('0x73'),_0x5deb('0x74'),_0x5deb('0x75'),_0x5deb('0x76'),_0x5deb('0x77'),'group_list',_0x5deb('0x78'),'reopened_time',_0x5deb('0x79'),_0x5deb('0x7a'),_0x5deb('0x7b'),_0x5deb('0x5a'),'work_notes',_0x5deb('0x7c'),_0x5deb('0x7d'),_0x5deb('0x7e'),_0x5deb('0x7f'),_0x5deb('0x80'),_0x5deb('0x81'),_0x5deb('0x82'),_0x5deb('0x83'),_0x5deb('0x84'),'calendar_duration','notify',_0x5deb('0x85'),_0x5deb('0x86'),_0x5deb('0x87'),_0x5deb('0x88'),_0x5deb('0x89'),_0x5deb('0x8a'),'contact_type',_0x5deb('0x8b'),_0x5deb('0x5b'),'urgency',_0x5deb('0x8c'),_0x5deb('0x8d'),_0x5deb('0x8e'),_0x5deb('0x8f'),_0x5deb('0x90'),'severity',_0x5deb('0x91'),_0x5deb('0x92'),'approval',_0x5deb('0x93'),'due_date',_0x5deb('0x94'),_0x5deb('0x95'),'sys_tags',_0x5deb('0x96'),_0x5deb('0x97'),'correlation_id',_0x5deb('0x98'),_0x5deb('0x5d')];var _0x53976f='';var _0x5b8f39='';var _0x146b54=[];var _0x563ca3='';var _0xadfeeb='';var _0x4e567c=[];var _0x3b843d='';var _0xe7bc72='';var _0x3eda1a={};var _0x11d16e='';return db[_0x5deb('0x2e')][_0x5deb('0x4e')]({'where':{'id':_0x2f94af[_0x5deb('0x4f')]['id']},'attributes':['id',_0x5deb('0x99'),_0x5deb('0x9a'),_0x5deb('0x9b'),_0x5deb('0x9c'),'serverUrl']})[_0x5deb('0x27')](handleEntityNotFound(_0x38df9f,null))[_0x5deb('0x27')](function(_0x4121a4){if(_0x4121a4){_0x11d16e=_0x4121a4[_0x5deb('0x9c')];var _0x176746=_0x11d16e[_0x5deb('0x9d')](-0x1);if(_0x176746==='/'){_0x11d16e=_0x11d16e['substring'](0x0,_0x11d16e[_0x5deb('0x9e')](_0x176746));}_0xe7bc72=util[_0x5deb('0x9f')](_0x5deb('0xa0'),_0x11d16e);_0x3b843d=util['format'](_0x5deb('0xa1'),_0x11d16e);_0x3eda1a={'user':_0x4121a4[_0x5deb('0x99')],'pass':_0x4121a4[_0x5deb('0x9a')]};var _0xe544a7={'method':_0x5deb('0xa2'),'uri':_0xe7bc72+_0x5deb('0xa3'),'auth':_0x3eda1a,'json':!![]};return rp(_0xe544a7);}})['then'](function(_0x2a66b0){if(_0x2a66b0['result'][_0x5deb('0x49')]>0x0){_0x53976f=_0x2a66b0[_0x5deb('0xa4')];}console['log']('incident\x20table\x20objects',_0x53976f);_0x4e567c=[];_0x5b8f39=Object['assign']([],_0x53976f);_[_0x5deb('0xa5')](_0x5b8f39,function(_0x4b1f38){return!_0x5119b2[_0x5deb('0xa6')](_0x4b1f38['name']);});_0x5b8f39[_0x5deb('0xa7')](function(_0xe38b7d){var _0x35fe20=createFieldObject(_0x3b843d,_0x3eda1a,_0xe38b7d['internalType'],_0xe38b7d['name'],_0xe38b7d[_0x5deb('0xa8')],![]);_0x4e567c[_0x5deb('0xa9')](_0x35fe20);});return Promise[_0x5deb('0xaa')](_0x4e567c);})[_0x5deb('0x27')](function(_0x1c1a86){_0x146b54=_0x1c1a86;_0x563ca3=Object[_0x5deb('0xab')]([],_0x53976f);console[_0x5deb('0xac')](_0x5deb('0xad'),_0x53976f);_[_0x5deb('0xa5')](_0x563ca3,function(_0x968818){return _0x3f1ec8[_0x5deb('0xa6')](_0x968818['name']);});console[_0x5deb('0xac')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x563ca3);_0x4e567c=[];_0x563ca3[_0x5deb('0xa7')](function(_0x102bde){var _0x4b88b1=createFieldObject(_0x3b843d,_0x3eda1a,_0x102bde['internalType'],_0x102bde[_0x5deb('0x2b')],_0x102bde[_0x5deb('0xa8')],!![]);_0x4e567c[_0x5deb('0xa9')](_0x4b88b1);});return Promise[_0x5deb('0xaa')](_0x4e567c);})[_0x5deb('0x27')](function(_0x12ad08){_0xadfeeb=_0x12ad08;var _0x553050=_0x146b54[_0x5deb('0xae')](_0xadfeeb);return{'count':_0x553050['length'],'rows':_0x553050};})[_0x5deb('0x27')](respondWithResult(_0x38df9f,null))[_0x5deb('0x47')](function(_0x5c7bb5){console[_0x5deb('0xac')]('ServiceNow\x20error:\x20'+_0x5c7bb5);var _0x4619dd=_0x2f94af[_0x5deb('0x33')][_0x5deb('0xaf')]?0x1f4:_0x5c7bb5[_0x5deb('0xb0')]||0x1f4;logger[_0x5deb('0x29')](_0x5c7bb5[_0x5deb('0x2a')]);delete _0x5c7bb5[_0x5deb('0x2b')];if(_0x4619dd===0x191){_0x4619dd=0x190;}_0x38df9f[_0x5deb('0x1c')](_0x4619dd)[_0x5deb('0xb1')](_0x2f94af[_0x5deb('0x33')][_0x5deb('0xaf')]?{'message':_0x5deb('0xb2'),'statusCode':_0x5c7bb5[_0x5deb('0xb0')]}:_0x5c7bb5);});};function createFieldObject(_0x45e847,_0x743b8,_0x5471a6,_0x2b6335,_0x128f76,_0x243733){return new Promise(function(_0x268819,_0x47ae46){var _0x15d968={'id':_0x2b6335,'name':_0x128f76,'custom':_0x243733};if(_0x5471a6==='boolean'){_0x15d968['options']=[{'name':_0x5deb('0xb3'),'value':_0x5deb('0xb4')},{'name':_0x5deb('0xb5'),'value':'false'}];_0x268819(_0x15d968);}else{var _0x37aecc={'method':_0x5deb('0xa2'),'uri':_0x45e847+_0x5deb('0xb6')+_0x2b6335,'auth':_0x743b8,'json':!![]};return rp(_0x37aecc)[_0x5deb('0x27')](function(_0x48605d){var _0x388abd=[];if(_0x48605d[_0x5deb('0xa4')]['length']>0x0){_0x48605d[_0x5deb('0xa4')][_0x5deb('0xa7')](function(_0x34840e){if(_0x34840e[_0x5deb('0xb7')]===_0x5deb('0xb8')){var _0x229830={'name':_0x34840e[_0x5deb('0xa8')],'value':_0x34840e['value']};_0x388abd['push'](_0x229830);}});}_0x15d968[_0x5deb('0x42')]=_0x388abd;if(_0x15d968[_0x5deb('0x42')][_0x5deb('0x49')]>0x0){_0x268819(_0x15d968);}else{if(_0x243733==![]){_0x268819();}else{_0x268819(_0x15d968);}}});}});}
\ No newline at end of file
+var _0xe935=['TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','ServiceNow\x20error:\x20','test','statusCode','Wrong\x20credentials','boolean','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','value','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','count','Content-Range','reject','save','then','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick','filter','VIRTUAL','merge','options','ServicenowAccount','includeAll','include','findAll','rows','catch','show','params','keys','find','create','update','body','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','AccountId','Subjects','channel','Descriptions','ServicenowField','getFields','made_sla','hold_reason','knowledge','subcategory','notify','incident_state','category','parent','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','approval_history','number','resolved_by','sys_updated_by','opened_by','sys_created_on','sys_domain','sys_created_by','calendar_stc','closed_at','delivery_plan','impact','active','business_service','sys_domain_path','rfc','time_worked','expected_start','business_duration','group_list','work_end','reopened_time','caller_id','approval_set','work_notes','short_description','close_code','correlation_display','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','urgency','problem_id','reassignment_count','activity_due','assigned_to','severity','sla_due','approval','comments_and_work_notes','due_date','reopen_count','escalation','upon_approval','correlation_id','location','username','password','email','remoteUri','serverUrl','lastIndexOf','format','%s/api/now/table/','GET','result','log','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','label','push','all'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0xe935,0x185));var _0x5e93=function(_0x5f09be,_0x4f1b25){_0x5f09be=_0x5f09be-0x0;var _0x1013c1=_0xe935[_0x5f09be];return _0x1013c1;};'use strict';var emlformat=require(_0x5e93('0x0'));var rimraf=require(_0x5e93('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5e93('0x2'));var rp=require(_0x5e93('0x3'));var moment=require(_0x5e93('0x4'));var BPromise=require(_0x5e93('0x5'));var Mustache=require(_0x5e93('0x6'));var util=require(_0x5e93('0x7'));var path=require(_0x5e93('0x8'));var sox=require(_0x5e93('0x9'));var csv=require(_0x5e93('0xa'));var ejs=require(_0x5e93('0xb'));var fs=require('fs');var fs_extra=require(_0x5e93('0xc'));var _=require(_0x5e93('0xd'));var squel=require(_0x5e93('0xe'));var crypto=require(_0x5e93('0xf'));var jsforce=require(_0x5e93('0x10'));var deskjs=require(_0x5e93('0x11'));var toCsv=require(_0x5e93('0xa'));var querystring=require(_0x5e93('0x12'));var Papa=require(_0x5e93('0x13'));var Redis=require(_0x5e93('0x14'));var authService=require(_0x5e93('0x15'));var qs=require(_0x5e93('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e93('0x17'))('api');var utils=require(_0x5e93('0x18'));var config=require(_0x5e93('0x19'));var licenseUtil=require(_0x5e93('0x1a'));var db=require(_0x5e93('0x1b'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5c5547,_0x2d378e){_0x2d378e=_0x2d378e||0xcc;return function(_0x30ffb3){if(_0x30ffb3){return _0x5c5547[_0x5e93('0x1c')](_0x2d378e);}return _0x5c5547[_0x5e93('0x1d')](_0x2d378e)[_0x5e93('0x1e')]();};}function respondWithResult(_0x5ef439,_0xdc44ee){_0xdc44ee=_0xdc44ee||0xc8;return function(_0x1139bf){if(_0x1139bf){return _0x5ef439['status'](_0xdc44ee)[_0x5e93('0x1f')](_0x1139bf);}};}function respondWithFilteredResult(_0x402244,_0x116ea0){return function(_0xc61384){if(_0xc61384){var _0x5885cb=typeof _0x116ea0[_0x5e93('0x20')]==='undefined'&&typeof _0x116ea0['limit']==='undefined';var _0x167c13=_0xc61384[_0x5e93('0x21')];var _0x1a01ec=_0x5885cb?0x0:_0x116ea0['offset'];var _0x58926c=_0x5885cb?_0xc61384[_0x5e93('0x21')]:_0x116ea0[_0x5e93('0x20')]+_0x116ea0['limit'];var _0x5602f0;if(_0x58926c>=_0x167c13){_0x58926c=_0x167c13;_0x5602f0=0xc8;}else{_0x5602f0=0xce;}_0x402244[_0x5e93('0x1d')](_0x5602f0);return _0x402244['set'](_0x5e93('0x22'),_0x1a01ec+'-'+_0x58926c+'/'+_0x167c13)[_0x5e93('0x1f')](_0xc61384);}return null;};}function patchUpdates(_0x236e4a){return function(_0x41e113){try{jsonpatch['apply'](_0x41e113,_0x236e4a,!![]);}catch(_0x181dc4){return BPromise[_0x5e93('0x23')](_0x181dc4);}return _0x41e113[_0x5e93('0x24')]();};}function saveUpdates(_0x557be7,_0xca8b5){return function(_0xfd80b0){if(_0xfd80b0){return _0xfd80b0['update'](_0x557be7)[_0x5e93('0x25')](function(_0x1ad02f){return _0x1ad02f;});}return null;};}function removeEntity(_0x166e5e,_0x29b799){return function(_0x12f501){if(_0x12f501){return _0x12f501['destroy']()['then'](function(){_0x166e5e[_0x5e93('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x32de1b,_0x10a9f1){return function(_0x6b2e74){if(!_0x6b2e74){_0x32de1b[_0x5e93('0x1c')](0x194);}return _0x6b2e74;};}function handleError(_0x181b9f,_0x9112d7){_0x9112d7=_0x9112d7||0x1f4;return function(_0x4991b0){logger[_0x5e93('0x26')](_0x4991b0['stack']);if(_0x4991b0[_0x5e93('0x27')]){delete _0x4991b0[_0x5e93('0x27')];}_0x181b9f[_0x5e93('0x1d')](_0x9112d7)[_0x5e93('0x28')](_0x4991b0);};}exports[_0x5e93('0x29')]=function(_0x5deaa3,_0x4ea7fd){var _0x48ede1={},_0x3c69ba={},_0x29f697={'count':0x0,'rows':[]};var _0x1c6f52=_[_0x5e93('0x2a')](db['ServicenowAccount'][_0x5e93('0x2b')],function(_0x194aa1){return{'name':_0x194aa1[_0x5e93('0x2c')],'type':_0x194aa1[_0x5e93('0x2d')][_0x5e93('0x2e')]};});_0x3c69ba[_0x5e93('0x2f')]=_[_0x5e93('0x2a')](_0x1c6f52,_0x5e93('0x27'));_0x3c69ba[_0x5e93('0x30')]=_['keys'](_0x5deaa3['query']);_0x3c69ba[_0x5e93('0x31')]=_[_0x5e93('0x32')](_0x3c69ba['model'],_0x3c69ba[_0x5e93('0x30')]);_0x48ede1[_0x5e93('0x33')]=_[_0x5e93('0x32')](_0x3c69ba[_0x5e93('0x2f')],qs[_0x5e93('0x34')](_0x5deaa3[_0x5e93('0x30')][_0x5e93('0x34')]));_0x48ede1['attributes']=_0x48ede1['attributes'][_0x5e93('0x35')]?_0x48ede1[_0x5e93('0x33')]:_0x3c69ba['model'];if(!_0x5deaa3[_0x5e93('0x30')][_0x5e93('0x36')]('nolimit')){_0x48ede1['limit']=qs['limit'](_0x5deaa3[_0x5e93('0x30')][_0x5e93('0x37')]);_0x48ede1[_0x5e93('0x20')]=qs[_0x5e93('0x20')](_0x5deaa3['query'][_0x5e93('0x20')]);}_0x48ede1[_0x5e93('0x38')]=qs[_0x5e93('0x39')](_0x5deaa3[_0x5e93('0x30')][_0x5e93('0x39')]);_0x48ede1[_0x5e93('0x3a')]=qs[_0x5e93('0x31')](_[_0x5e93('0x3b')](_0x5deaa3[_0x5e93('0x30')],_0x3c69ba[_0x5e93('0x31')]),_0x1c6f52);if(_0x5deaa3['query'][_0x5e93('0x3c')]){_0x48ede1['where']=_['merge'](_0x48ede1['where'],{'$or':_[_0x5e93('0x2a')](_0x1c6f52,function(_0x43493f){if(_0x43493f['type']!==_0x5e93('0x3d')){var _0x3924e4={};_0x3924e4[_0x43493f['name']]={'$like':'%'+_0x5deaa3[_0x5e93('0x30')][_0x5e93('0x3c')]+'%'};return _0x3924e4;}})});}_0x48ede1=_[_0x5e93('0x3e')]({},_0x48ede1,_0x5deaa3[_0x5e93('0x3f')]);var _0x1dfc45={'where':_0x48ede1['where']};return db[_0x5e93('0x40')][_0x5e93('0x21')](_0x1dfc45)[_0x5e93('0x25')](function(_0x484d21){_0x29f697['count']=_0x484d21;if(_0x5deaa3['query'][_0x5e93('0x41')]){_0x48ede1[_0x5e93('0x42')]=[{'all':!![]}];}return db[_0x5e93('0x40')][_0x5e93('0x43')](_0x48ede1);})[_0x5e93('0x25')](function(_0x546e4c){_0x29f697[_0x5e93('0x44')]=_0x546e4c;return _0x29f697;})[_0x5e93('0x25')](respondWithFilteredResult(_0x4ea7fd,_0x48ede1))[_0x5e93('0x45')](handleError(_0x4ea7fd,null));};exports[_0x5e93('0x46')]=function(_0x366549,_0x32a8d9){var _0x3b9e6a={'raw':![],'where':{'id':_0x366549[_0x5e93('0x47')]['id']}},_0x497b36={};_0x497b36[_0x5e93('0x2f')]=_['keys'](db[_0x5e93('0x40')]['rawAttributes']);_0x497b36[_0x5e93('0x30')]=_[_0x5e93('0x48')](_0x366549['query']);_0x497b36[_0x5e93('0x31')]=_[_0x5e93('0x32')](_0x497b36[_0x5e93('0x2f')],_0x497b36[_0x5e93('0x30')]);_0x3b9e6a[_0x5e93('0x33')]=_['intersection'](_0x497b36[_0x5e93('0x2f')],qs[_0x5e93('0x34')](_0x366549[_0x5e93('0x30')][_0x5e93('0x34')]));_0x3b9e6a[_0x5e93('0x33')]=_0x3b9e6a[_0x5e93('0x33')][_0x5e93('0x35')]?_0x3b9e6a[_0x5e93('0x33')]:_0x497b36[_0x5e93('0x2f')];if(_0x366549['query']['includeAll']){_0x3b9e6a[_0x5e93('0x42')]=[{'all':!![]}];}_0x3b9e6a=_[_0x5e93('0x3e')]({},_0x3b9e6a,_0x366549[_0x5e93('0x3f')]);return db[_0x5e93('0x40')][_0x5e93('0x49')](_0x3b9e6a)[_0x5e93('0x25')](handleEntityNotFound(_0x32a8d9,null))['then'](respondWithResult(_0x32a8d9,null))[_0x5e93('0x45')](handleError(_0x32a8d9,null));};exports[_0x5e93('0x4a')]=function(_0x428620,_0x49218f){return db['ServicenowAccount'][_0x5e93('0x4a')](_0x428620['body'],{})[_0x5e93('0x25')](respondWithResult(_0x49218f,0xc9))[_0x5e93('0x45')](handleError(_0x49218f,null));};exports[_0x5e93('0x4b')]=function(_0x54e368,_0x4be2b2){if(_0x54e368[_0x5e93('0x4c')]['id']){delete _0x54e368[_0x5e93('0x4c')]['id'];}return db[_0x5e93('0x40')][_0x5e93('0x49')]({'where':{'id':_0x54e368['params']['id']}})['then'](handleEntityNotFound(_0x4be2b2,null))[_0x5e93('0x25')](saveUpdates(_0x54e368[_0x5e93('0x4c')],null))[_0x5e93('0x25')](respondWithResult(_0x4be2b2,null))['catch'](handleError(_0x4be2b2,null));};exports['destroy']=function(_0x41410f,_0x143c1c){return db[_0x5e93('0x40')]['find']({'where':{'id':_0x41410f[_0x5e93('0x47')]['id']}})[_0x5e93('0x25')](handleEntityNotFound(_0x143c1c,null))['then'](removeEntity(_0x143c1c,null))[_0x5e93('0x45')](handleError(_0x143c1c,null));};exports[_0x5e93('0x4d')]=function(_0x5a0ae6,_0x4ea864,_0xab20b8){var _0x4949ca={};var _0x3c84a5={};var _0x27a27d;var _0x20cc52;return db[_0x5e93('0x40')][_0x5e93('0x4e')]({'where':{'id':_0x5a0ae6[_0x5e93('0x47')]['id']}})[_0x5e93('0x25')](handleEntityNotFound(_0x4ea864,null))[_0x5e93('0x25')](function(_0x11b083){if(_0x11b083){_0x27a27d=_0x11b083;_0x3c84a5['model']=_[_0x5e93('0x48')](db[_0x5e93('0x4f')][_0x5e93('0x2b')]);_0x3c84a5['query']=_['keys'](_0x5a0ae6[_0x5e93('0x30')]);_0x3c84a5[_0x5e93('0x31')]=_[_0x5e93('0x32')](_0x3c84a5['model'],_0x3c84a5[_0x5e93('0x30')]);_0x4949ca[_0x5e93('0x33')]=_[_0x5e93('0x32')](_0x3c84a5[_0x5e93('0x2f')],qs[_0x5e93('0x34')](_0x5a0ae6['query']['fields']));_0x4949ca['attributes']=_0x4949ca[_0x5e93('0x33')][_0x5e93('0x35')]?_0x4949ca[_0x5e93('0x33')]:_0x3c84a5[_0x5e93('0x2f')];_0x4949ca[_0x5e93('0x38')]=qs['sort'](_0x5a0ae6[_0x5e93('0x30')][_0x5e93('0x39')]);_0x4949ca[_0x5e93('0x3a')]=qs['filters'](_[_0x5e93('0x3b')](_0x5a0ae6['query'],_0x3c84a5[_0x5e93('0x31')]));if(_0x5a0ae6[_0x5e93('0x30')][_0x5e93('0x3c')]){_0x4949ca[_0x5e93('0x3a')]=_['merge'](_0x4949ca['where'],{'$or':_['map'](_0x4949ca[_0x5e93('0x33')],function(_0x6d1bdf){var _0x380637={};_0x380637[_0x6d1bdf]={'$like':'%'+_0x5a0ae6[_0x5e93('0x30')][_0x5e93('0x3c')]+'%'};return _0x380637;})});}_0x4949ca=_['merge']({},_0x4949ca,_0x5a0ae6[_0x5e93('0x3f')]);return _0x27a27d[_0x5e93('0x4d')](_0x4949ca);}})[_0x5e93('0x25')](function(_0x1635b8){if(_0x1635b8){_0x20cc52=_0x1635b8['length'];if(!_0x5a0ae6['query'][_0x5e93('0x36')]('nolimit')){_0x4949ca[_0x5e93('0x37')]=qs[_0x5e93('0x37')](_0x5a0ae6[_0x5e93('0x30')][_0x5e93('0x37')]);_0x4949ca[_0x5e93('0x20')]=qs[_0x5e93('0x20')](_0x5a0ae6[_0x5e93('0x30')]['offset']);}return _0x27a27d[_0x5e93('0x4d')](_0x4949ca);}})['then'](function(_0x44e9f9){if(_0x44e9f9){return _0x44e9f9?{'count':_0x20cc52,'rows':_0x44e9f9}:null;}})[_0x5e93('0x25')](respondWithResult(_0x4ea864,null))['catch'](handleError(_0x4ea864,null));};exports[_0x5e93('0x50')]=function(_0x5f1903,_0x131ad3,_0x7bd9bb){if(_0x5f1903['body']['id']){delete _0x5f1903['body']['id'];}return db[_0x5e93('0x40')]['findOne']({'where':{'id':_0x5f1903[_0x5e93('0x47')]['id']}})[_0x5e93('0x25')](handleEntityNotFound(_0x131ad3,null))[_0x5e93('0x25')](function(_0x153ef4){if(_0x153ef4){_0x5f1903['body'][_0x5e93('0x51')]=_0x153ef4['id'];_0x5f1903[_0x5e93('0x4c')][_0x5e93('0x52')]=integrations['getSubjects'](_0x5f1903[_0x5e93('0x4c')][_0x5e93('0x53')],_0x5f1903[_0x5e93('0x4c')][_0x5e93('0x2d')]);_0x5f1903[_0x5e93('0x4c')][_0x5e93('0x54')]=integrations['getDescriptions'](_0x5f1903[_0x5e93('0x4c')][_0x5e93('0x53')],_0x5f1903[_0x5e93('0x4c')][_0x5e93('0x2d')]);return db['ServicenowConfiguration'][_0x5e93('0x4a')](_0x5f1903[_0x5e93('0x4c')],{'include':[{'model':db['ServicenowField'],'as':_0x5e93('0x52')},{'model':db[_0x5e93('0x55')],'as':_0x5e93('0x54')}]});}return null;})[_0x5e93('0x25')](respondWithResult(_0x131ad3,null))['catch'](handleError(_0x131ad3,null));};exports[_0x5e93('0x56')]=function(_0x589276,_0x2fb636,_0x5550e6){var _0x3662a6=[_0x5e93('0x57'),_0x5e93('0x58'),_0x5e93('0x59'),_0x5e93('0x5a'),'close_code',_0x5e93('0x5b'),_0x5e93('0x5c'),'severity',_0x5e93('0x5d')];var _0x156724=[_0x5e93('0x5e'),'made_sla',_0x5e93('0x5f'),_0x5e93('0x60'),_0x5e93('0x61'),_0x5e93('0x62'),_0x5e93('0x63'),_0x5e93('0x58'),_0x5e93('0x64'),_0x5e93('0x65'),_0x5e93('0x66'),_0x5e93('0x67'),_0x5e93('0x68'),'user_input',_0x5e93('0x69'),_0x5e93('0x6a'),'state',_0x5e93('0x6b'),'knowledge',_0x5e93('0x38'),_0x5e93('0x6c'),_0x5e93('0x6d'),'cmdb_ci',_0x5e93('0x6e'),_0x5e93('0x6f'),_0x5e93('0x70'),'work_notes_list',_0x5e93('0x71'),'priority',_0x5e93('0x72'),_0x5e93('0x73'),_0x5e93('0x74'),_0x5e93('0x75'),'opened_at',_0x5e93('0x76'),_0x5e93('0x77'),_0x5e93('0x78'),_0x5e93('0x79'),'resolved_at',_0x5e93('0x7a'),_0x5e93('0x7b'),_0x5e93('0x5a'),_0x5e93('0x7c'),_0x5e93('0x7d'),_0x5e93('0x7e'),_0x5e93('0x7f'),'delivery_task','work_start',_0x5e93('0x80'),_0x5e93('0x81'),_0x5e93('0x82'),_0x5e93('0x83'),_0x5e93('0x84'),_0x5e93('0x5b'),_0x5e93('0x85'),_0x5e93('0x86'),_0x5e93('0x87'),_0x5e93('0x88'),_0x5e93('0x89'),_0x5e93('0x8a'),_0x5e93('0x8b'),'reopened_by',_0x5e93('0x5c'),_0x5e93('0x8c'),_0x5e93('0x8d'),'company',_0x5e93('0x8e'),_0x5e93('0x8f'),_0x5e93('0x90'),_0x5e93('0x91'),'comments',_0x5e93('0x92'),_0x5e93('0x93'),_0x5e93('0x94'),_0x5e93('0x95'),'sys_mod_count',_0x5e93('0x96'),'sys_tags',_0x5e93('0x97'),_0x5e93('0x98'),_0x5e93('0x99'),_0x5e93('0x9a'),_0x5e93('0x5d')];var _0x51d5ee='';var _0x5558c9='';var _0x48dd9a=[];var _0x44d679='';var _0x32ab3f='';var _0x1fab01=[];var _0x4914f7='';var _0x30f9a8='';var _0x537b38={};var _0x3712b4='';return db[_0x5e93('0x40')][_0x5e93('0x4e')]({'where':{'id':_0x589276['params']['id']},'attributes':['id',_0x5e93('0x9b'),_0x5e93('0x9c'),_0x5e93('0x9d'),_0x5e93('0x9e'),_0x5e93('0x9f')]})[_0x5e93('0x25')](handleEntityNotFound(_0x2fb636,null))['then'](function(_0x5304e2){if(_0x5304e2){_0x3712b4=_0x5304e2[_0x5e93('0x9e')];var _0x5082f2=_0x3712b4['slice'](-0x1);if(_0x5082f2==='/'){_0x3712b4=_0x3712b4['substring'](0x0,_0x3712b4[_0x5e93('0xa0')](_0x5082f2));}_0x30f9a8=util[_0x5e93('0xa1')]('%s/api/now/doc/table/schema/',_0x3712b4);_0x4914f7=util[_0x5e93('0xa1')](_0x5e93('0xa2'),_0x3712b4);_0x537b38={'user':_0x5304e2[_0x5e93('0x9b')],'pass':_0x5304e2['password']};var _0x5c88b3={'method':_0x5e93('0xa3'),'uri':_0x30f9a8+'incident?sysparm_display_value=all','auth':_0x537b38,'json':!![]};return rp(_0x5c88b3);}})[_0x5e93('0x25')](function(_0x2b4b00){if(_0x2b4b00[_0x5e93('0xa4')][_0x5e93('0x35')]>0x0){_0x51d5ee=_0x2b4b00['result'];}console[_0x5e93('0xa5')](_0x5e93('0xa6'),_0x51d5ee);_0x1fab01=[];_0x5558c9=Object[_0x5e93('0xa7')]([],_0x51d5ee);_[_0x5e93('0xa8')](_0x5558c9,function(_0x108a11){return!_0x3662a6[_0x5e93('0xa9')](_0x108a11[_0x5e93('0x27')]);});_0x5558c9[_0x5e93('0xaa')](function(_0x4bb6fd){var _0xe57ae8=createFieldObject(_0x4914f7,_0x537b38,_0x4bb6fd[_0x5e93('0xab')],_0x4bb6fd[_0x5e93('0x27')],_0x4bb6fd[_0x5e93('0xac')],![]);_0x1fab01[_0x5e93('0xad')](_0xe57ae8);});return Promise[_0x5e93('0xae')](_0x1fab01);})[_0x5e93('0x25')](function(_0x44ff18){_0x48dd9a=_0x44ff18;_0x44d679=Object[_0x5e93('0xa7')]([],_0x51d5ee);console[_0x5e93('0xa5')](_0x5e93('0xaf'),_0x51d5ee);_[_0x5e93('0xa8')](_0x44d679,function(_0x2b5242){return _0x156724[_0x5e93('0xa9')](_0x2b5242['name']);});console[_0x5e93('0xa5')](_0x5e93('0xb0'),_0x44d679);_0x1fab01=[];_0x44d679[_0x5e93('0xaa')](function(_0xf08e1){var _0x3ac39b=createFieldObject(_0x4914f7,_0x537b38,_0xf08e1[_0x5e93('0xab')],_0xf08e1[_0x5e93('0x27')],_0xf08e1['label'],!![]);_0x1fab01['push'](_0x3ac39b);});return Promise[_0x5e93('0xae')](_0x1fab01);})['then'](function(_0x1bd6b6){_0x32ab3f=_0x1bd6b6;var _0x522bb3=_0x48dd9a[_0x5e93('0xb1')](_0x32ab3f);return{'count':_0x522bb3[_0x5e93('0x35')],'rows':_0x522bb3};})[_0x5e93('0x25')](respondWithResult(_0x2fb636,null))[_0x5e93('0x45')](function(_0x1a936f){console['log'](_0x5e93('0xb2')+_0x1a936f);var _0x451646=_0x589276[_0x5e93('0x30')][_0x5e93('0xb3')]?0x1f4:_0x1a936f[_0x5e93('0xb4')]||0x1f4;logger[_0x5e93('0x26')](_0x1a936f['stack']);delete _0x1a936f[_0x5e93('0x27')];if(_0x451646===0x191){_0x451646=0x190;}_0x2fb636['status'](_0x451646)[_0x5e93('0x28')](_0x589276['query'][_0x5e93('0xb3')]?{'message':_0x5e93('0xb5'),'statusCode':_0x1a936f[_0x5e93('0xb4')]}:_0x1a936f);});};function createFieldObject(_0x5eb860,_0x54d743,_0x1d634f,_0x58f5ce,_0x43e0ee,_0x3e83db){return new Promise(function(_0x55fd10,_0x37553c){var _0x26bd41={'id':_0x58f5ce,'name':_0x43e0ee,'custom':_0x3e83db};if(_0x1d634f===_0x5e93('0xb6')){_0x26bd41[_0x5e93('0x3f')]=[{'name':'True','value':'true'},{'name':_0x5e93('0xb7'),'value':_0x5e93('0xb8')}];_0x55fd10(_0x26bd41);}else{var _0x41e7e8={'method':_0x5e93('0xa3'),'uri':_0x5eb860+_0x5e93('0xb9')+_0x58f5ce,'auth':_0x54d743,'json':!![]};return rp(_0x41e7e8)[_0x5e93('0x25')](function(_0xee11ce){var _0x4141a3=[];if(_0xee11ce[_0x5e93('0xa4')]['length']>0x0){_0xee11ce[_0x5e93('0xa4')][_0x5e93('0xaa')](function(_0x27c43f){if(_0x27c43f[_0x5e93('0xba')]==='false'){var _0x52d1c4={'name':_0x27c43f['label'],'value':_0x27c43f[_0x5e93('0xbb')]};_0x4141a3[_0x5e93('0xad')](_0x52d1c4);}});}_0x26bd41[_0x5e93('0x3f')]=_0x4141a3;if(_0x26bd41['options'][_0x5e93('0x35')]>0x0){_0x55fd10(_0x26bd41);}else{if(_0x3e83db==![]){_0x55fd10();}else{_0x55fd10(_0x26bd41);}}});}});}
\ No newline at end of file
index ef22a56..eb60af9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2ca=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','ServicenowAccount','int_servicenow_accounts','lodash','util'];(function(_0x233716,_0x346676){var _0x302298=function(_0x53d84c){while(--_0x53d84c){_0x233716['push'](_0x233716['shift']());}};_0x302298(++_0x346676);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x50c492,_0x5c1e67){_0x50c492=_0x50c492-0x0;var _0x3505a8=_0xf2ca[_0x50c492];return _0x3505a8;};'use strict';var _=require(_0xaf2c('0x0'));var util=require(_0xaf2c('0x1'));var logger=require(_0xaf2c('0x2'))('api');var moment=require(_0xaf2c('0x3'));var BPromise=require(_0xaf2c('0x4'));var rp=require(_0xaf2c('0x5'));var fs=require('fs');var path=require(_0xaf2c('0x6'));var rimraf=require(_0xaf2c('0x7'));var config=require(_0xaf2c('0x8'));var attributes=require('./intServicenowAccount.attributes');var integrations=require(_0xaf2c('0x9'));module[_0xaf2c('0xa')]=function(_0x297740,_0x1f9531){return _0x297740['define'](_0xaf2c('0xb'),attributes,{'tableName':_0xaf2c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4975=['path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','define','ServicenowAccount','int_servicenow_accounts','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0xbcef7a,_0x1cdd36){var _0x19c98e=function(_0x379193){while(--_0x379193){_0xbcef7a['push'](_0xbcef7a['shift']());}};_0x19c98e(++_0x1cdd36);}(_0x4975,0x86));var _0x5497=function(_0x43191b,_0xa33607){_0x43191b=_0x43191b-0x0;var _0x47a09e=_0x4975[_0x43191b];return _0x47a09e;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var logger=require(_0x5497('0x1'))(_0x5497('0x2'));var moment=require(_0x5497('0x3'));var BPromise=require(_0x5497('0x4'));var rp=require(_0x5497('0x5'));var fs=require('fs');var path=require(_0x5497('0x6'));var rimraf=require(_0x5497('0x7'));var config=require(_0x5497('0x8'));var attributes=require(_0x5497('0x9'));var integrations=require(_0x5497('0xa'));module['exports']=function(_0x37e48d,_0x4f563d){return _0x37e48d[_0x5497('0xb')](_0x5497('0xc'),attributes,{'tableName':_0x5497('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9797a94..9c6d74e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a6e=['find','ShowServicenowAccount','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','error','message','catch','GetServicenowAccount','ServicenowAccount','options','raw','where','attributes','include','map','model','debug','stringify'];(function(_0x29859f,_0x2f7896){var _0x3a4118=function(_0x724cc7){while(--_0x724cc7){_0x29859f['push'](_0x29859f['shift']());}};_0x3a4118(++_0x2f7896);}(_0x9a6e,0xdb));var _0xe9a6=function(_0x422be2,_0x1c439e){_0x422be2=_0x422be2-0x0;var _0x1b820e=_0x9a6e[_0x422be2];return _0x1b820e;};'use strict';var _=require(_0xe9a6('0x0'));var util=require(_0xe9a6('0x1'));var moment=require('moment');var BPromise=require(_0xe9a6('0x2'));var rs=require(_0xe9a6('0x3'));var fs=require('fs');var Redis=require(_0xe9a6('0x4'));var db=require(_0xe9a6('0x5'))['db'];var utils=require(_0xe9a6('0x6'));var logger=require(_0xe9a6('0x7'))('rpc');var config=require(_0xe9a6('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe9a6('0x9')][_0xe9a6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1a2ae9,_0x200263,_0x53e594){return new BPromise(function(_0xa6da24,_0xc9dece){return client['request'](_0x1a2ae9,_0x53e594)[_0xe9a6('0xb')](function(_0x168e7c){logger[_0xe9a6('0xc')](_0xe9a6('0xd'),_0x200263,_0xe9a6('0xe'));logger['debug']('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x200263,'request\x20sent',JSON['stringify'](_0x168e7c));if(_0x168e7c[_0xe9a6('0xf')]){if(_0x168e7c[_0xe9a6('0xf')]['code']===0x1f4){logger[_0xe9a6('0xf')](_0xe9a6('0xd'),_0x200263,_0x168e7c[_0xe9a6('0xf')][_0xe9a6('0x10')]);return _0xc9dece(_0x168e7c[_0xe9a6('0xf')]['message']);}logger['error'](_0xe9a6('0xd'),_0x200263,_0x168e7c['error'][_0xe9a6('0x10')]);return _0xa6da24(_0x168e7c['error'][_0xe9a6('0x10')]);}else{logger[_0xe9a6('0xc')]('ServicenowAccount,\x20%s,\x20%s',_0x200263,_0xe9a6('0xe'));_0xa6da24(_0x168e7c['result']['message']);}})[_0xe9a6('0x11')](function(_0x31d382){logger[_0xe9a6('0xf')](_0xe9a6('0xd'),_0x200263,_0x31d382);_0xc9dece(_0x31d382);});});}exports[_0xe9a6('0x12')]=function(_0x306efd){var _0x46a61=this;return new Promise(function(_0x5b31b9,_0x1c02d3){return db[_0xe9a6('0x13')]['findAll']({'raw':_0x306efd[_0xe9a6('0x14')]?_0x306efd[_0xe9a6('0x14')][_0xe9a6('0x15')]===undefined?!![]:![]:!![],'where':_0x306efd[_0xe9a6('0x14')]?_0x306efd['options'][_0xe9a6('0x16')]||null:null,'attributes':_0x306efd[_0xe9a6('0x14')]?_0x306efd[_0xe9a6('0x14')][_0xe9a6('0x17')]||null:null,'limit':_0x306efd[_0xe9a6('0x14')]?_0x306efd[_0xe9a6('0x14')]['limit']||null:null,'include':_0x306efd[_0xe9a6('0x14')]?_0x306efd['options'][_0xe9a6('0x18')]?_[_0xe9a6('0x19')](_0x306efd['options']['include'],function(_0x1cb30f){return{'model':db[_0x1cb30f['model']],'as':_0x1cb30f['as'],'attributes':_0x1cb30f[_0xe9a6('0x17')],'include':_0x1cb30f['include']?_[_0xe9a6('0x19')](_0x1cb30f['include'],function(_0xf28ba7){return{'model':db[_0xf28ba7['model']],'as':_0xf28ba7['as'],'attributes':_0xf28ba7[_0xe9a6('0x17')],'include':_0xf28ba7[_0xe9a6('0x18')]?_[_0xe9a6('0x19')](_0xf28ba7[_0xe9a6('0x18')],function(_0x5e0397){return{'model':db[_0x5e0397[_0xe9a6('0x1a')]],'as':_0x5e0397['as'],'attributes':_0x5e0397[_0xe9a6('0x17')]};}):[]};}):[]};}):[]:[]})[_0xe9a6('0xb')](function(_0x5dcb00){logger['info']('GetServicenowAccount',_0x306efd);logger[_0xe9a6('0x1b')](_0xe9a6('0x12'),_0x306efd,JSON[_0xe9a6('0x1c')](_0x5dcb00));_0x5b31b9(_0x5dcb00);})['catch'](function(_0x236838){logger['error'](_0xe9a6('0x12'),_0x236838[_0xe9a6('0x10')],_0x306efd);_0x1c02d3(_0x46a61[_0xe9a6('0xf')](0x1f4,_0x236838['message']));});});};exports['ShowServicenowAccount']=function(_0x199f42){var _0xee6637=this;return new Promise(function(_0x3a1ad9,_0x361866){return db[_0xe9a6('0x13')][_0xe9a6('0x1d')]({'raw':_0x199f42['options']?_0x199f42[_0xe9a6('0x14')][_0xe9a6('0x15')]===undefined?!![]:![]:!![],'where':_0x199f42['options']?_0x199f42['options'][_0xe9a6('0x16')]||null:null,'attributes':_0x199f42['options']?_0x199f42[_0xe9a6('0x14')][_0xe9a6('0x17')]||null:null,'include':_0x199f42[_0xe9a6('0x14')]?_0x199f42[_0xe9a6('0x14')][_0xe9a6('0x18')]?_[_0xe9a6('0x19')](_0x199f42[_0xe9a6('0x14')]['include'],function(_0x403cde){return{'model':db[_0x403cde[_0xe9a6('0x1a')]],'as':_0x403cde['as'],'attributes':_0x403cde[_0xe9a6('0x17')],'include':_0x403cde['include']?_['map'](_0x403cde[_0xe9a6('0x18')],function(_0x721f76){return{'model':db[_0x721f76['model']],'as':_0x721f76['as'],'attributes':_0x721f76['attributes'],'include':_0x721f76[_0xe9a6('0x18')]?_[_0xe9a6('0x19')](_0x721f76[_0xe9a6('0x18')],function(_0x461e90){return{'model':db[_0x461e90[_0xe9a6('0x1a')]],'as':_0x461e90['as'],'attributes':_0x461e90[_0xe9a6('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1cddd2){logger[_0xe9a6('0xc')]('ShowServicenowAccount',_0x199f42);logger[_0xe9a6('0x1b')]('ShowServicenowAccount',_0x199f42,JSON[_0xe9a6('0x1c')](_0x1cddd2));_0x3a1ad9(_0x1cddd2);})[_0xe9a6('0x11')](function(_0x100a9b){logger['error'](_0xe9a6('0x1e'),_0x100a9b['message'],_0x199f42);_0x361866(_0xee6637[_0xe9a6('0xf')](0x1f4,_0x100a9b['message']));});});};
\ No newline at end of file
+var _0x2a17=['ServicenowAccount,\x20%s,\x20%s','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','GetServicenowAccount','ServicenowAccount','findAll','options','where','attributes','limit','map','include','model','then','catch','find','info','ShowServicenowAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x20c1c7,_0x55f442){var _0x5ab7f6=function(_0x5c6198){while(--_0x5c6198){_0x20c1c7['push'](_0x20c1c7['shift']());}};_0x5ab7f6(++_0x55f442);}(_0x2a17,0x113));var _0x72a1=function(_0x33ce24,_0x579005){_0x33ce24=_0x33ce24-0x0;var _0x5ca4ac=_0x2a17[_0x33ce24];return _0x5ca4ac;};'use strict';var _=require(_0x72a1('0x0'));var util=require(_0x72a1('0x1'));var moment=require(_0x72a1('0x2'));var BPromise=require(_0x72a1('0x3'));var rs=require(_0x72a1('0x4'));var fs=require('fs');var Redis=require(_0x72a1('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x72a1('0x6'));var logger=require(_0x72a1('0x7'))('rpc');var config=require(_0x72a1('0x8'));var jayson=require(_0x72a1('0x9'));var client=jayson[_0x72a1('0xa')][_0x72a1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x18cfbc,_0x5c3910,_0x3c48ad){return new BPromise(function(_0x10f08a,_0x4b6953){return client[_0x72a1('0xc')](_0x18cfbc,_0x3c48ad)['then'](function(_0x4c22fd){logger['info'](_0x72a1('0xd'),_0x5c3910,'request\x20sent');logger[_0x72a1('0xe')](_0x72a1('0xf'),_0x5c3910,'request\x20sent',JSON[_0x72a1('0x10')](_0x4c22fd));if(_0x4c22fd[_0x72a1('0x11')]){if(_0x4c22fd[_0x72a1('0x11')]['code']===0x1f4){logger[_0x72a1('0x11')](_0x72a1('0xd'),_0x5c3910,_0x4c22fd['error'][_0x72a1('0x12')]);return _0x4b6953(_0x4c22fd[_0x72a1('0x11')][_0x72a1('0x12')]);}logger[_0x72a1('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x5c3910,_0x4c22fd['error'][_0x72a1('0x12')]);return _0x10f08a(_0x4c22fd['error'][_0x72a1('0x12')]);}else{logger['info'](_0x72a1('0xd'),_0x5c3910,_0x72a1('0x13'));_0x10f08a(_0x4c22fd[_0x72a1('0x14')]['message']);}})['catch'](function(_0x41166f){logger[_0x72a1('0x11')](_0x72a1('0xd'),_0x5c3910,_0x41166f);_0x4b6953(_0x41166f);});});}exports[_0x72a1('0x15')]=function(_0x57381b){var _0x4ab1f6=this;return new Promise(function(_0x48e99c,_0x57aab9){return db[_0x72a1('0x16')][_0x72a1('0x17')]({'raw':_0x57381b[_0x72a1('0x18')]?_0x57381b[_0x72a1('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x57381b['options']?_0x57381b[_0x72a1('0x18')][_0x72a1('0x19')]||null:null,'attributes':_0x57381b[_0x72a1('0x18')]?_0x57381b[_0x72a1('0x18')][_0x72a1('0x1a')]||null:null,'limit':_0x57381b['options']?_0x57381b[_0x72a1('0x18')][_0x72a1('0x1b')]||null:null,'include':_0x57381b[_0x72a1('0x18')]?_0x57381b[_0x72a1('0x18')]['include']?_[_0x72a1('0x1c')](_0x57381b[_0x72a1('0x18')][_0x72a1('0x1d')],function(_0x1e76db){return{'model':db[_0x1e76db[_0x72a1('0x1e')]],'as':_0x1e76db['as'],'attributes':_0x1e76db[_0x72a1('0x1a')],'include':_0x1e76db['include']?_['map'](_0x1e76db['include'],function(_0x250154){return{'model':db[_0x250154[_0x72a1('0x1e')]],'as':_0x250154['as'],'attributes':_0x250154['attributes'],'include':_0x250154[_0x72a1('0x1d')]?_[_0x72a1('0x1c')](_0x250154['include'],function(_0x4ec1e9){return{'model':db[_0x4ec1e9[_0x72a1('0x1e')]],'as':_0x4ec1e9['as'],'attributes':_0x4ec1e9[_0x72a1('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x72a1('0x1f')](function(_0x543517){logger['info'](_0x72a1('0x15'),_0x57381b);logger['debug']('GetServicenowAccount',_0x57381b,JSON[_0x72a1('0x10')](_0x543517));_0x48e99c(_0x543517);})[_0x72a1('0x20')](function(_0x31c5bb){logger['error']('GetServicenowAccount',_0x31c5bb[_0x72a1('0x12')],_0x57381b);_0x57aab9(_0x4ab1f6[_0x72a1('0x11')](0x1f4,_0x31c5bb[_0x72a1('0x12')]));});});};exports['ShowServicenowAccount']=function(_0x504f1d){var _0x12f67f=this;return new Promise(function(_0x93045b,_0x3cced0){return db[_0x72a1('0x16')][_0x72a1('0x21')]({'raw':_0x504f1d[_0x72a1('0x18')]?_0x504f1d[_0x72a1('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x504f1d[_0x72a1('0x18')]?_0x504f1d[_0x72a1('0x18')]['where']||null:null,'attributes':_0x504f1d['options']?_0x504f1d[_0x72a1('0x18')]['attributes']||null:null,'include':_0x504f1d[_0x72a1('0x18')]?_0x504f1d[_0x72a1('0x18')][_0x72a1('0x1d')]?_[_0x72a1('0x1c')](_0x504f1d[_0x72a1('0x18')][_0x72a1('0x1d')],function(_0x292205){return{'model':db[_0x292205[_0x72a1('0x1e')]],'as':_0x292205['as'],'attributes':_0x292205[_0x72a1('0x1a')],'include':_0x292205[_0x72a1('0x1d')]?_[_0x72a1('0x1c')](_0x292205[_0x72a1('0x1d')],function(_0x4e047b){return{'model':db[_0x4e047b['model']],'as':_0x4e047b['as'],'attributes':_0x4e047b[_0x72a1('0x1a')],'include':_0x4e047b[_0x72a1('0x1d')]?_[_0x72a1('0x1c')](_0x4e047b[_0x72a1('0x1d')],function(_0x18ff3b){return{'model':db[_0x18ff3b[_0x72a1('0x1e')]],'as':_0x18ff3b['as'],'attributes':_0x18ff3b[_0x72a1('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5a398f){logger[_0x72a1('0x22')](_0x72a1('0x23'),_0x504f1d);logger['debug'](_0x72a1('0x23'),_0x504f1d,JSON[_0x72a1('0x10')](_0x5a398f));_0x93045b(_0x5a398f);})['catch'](function(_0xa4de6c){logger[_0x72a1('0x11')](_0x72a1('0x23'),_0xa4de6c[_0x72a1('0x12')],_0x504f1d);_0x3cced0(_0x12f67f[_0x72a1('0x11')](0x1f4,_0xa4de6c['message']));});});};
\ No newline at end of file
index ff0a560..4a005c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99b6=['/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','update','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','index'];(function(_0x72c11f,_0xc2f446){var _0x55ac38=function(_0x3127f5){while(--_0x3127f5){_0x72c11f['push'](_0x72c11f['shift']());}};_0x55ac38(++_0xc2f446);}(_0x99b6,0x84));var _0x699b=function(_0x1bb083,_0xdf31c9){_0x1bb083=_0x1bb083-0x0;var _0x54067e=_0x99b6[_0x1bb083];return _0x54067e;};'use strict';var multer=require(_0x699b('0x0'));var util=require(_0x699b('0x1'));var path=require('path');var timeout=require(_0x699b('0x2'));var express=require('express');var router=express[_0x699b('0x3')]();var fs_extra=require(_0x699b('0x4'));var auth=require(_0x699b('0x5'));var interaction=require(_0x699b('0x6'));var config=require(_0x699b('0x7'));var controller=require(_0x699b('0x8'));router[_0x699b('0x9')]('/',auth[_0x699b('0xa')](),controller[_0x699b('0xb')]);router[_0x699b('0x9')](_0x699b('0xc'),auth['isAuthenticated'](),controller[_0x699b('0xd')]);router[_0x699b('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0x699b('0xe')]);router[_0x699b('0x9')](_0x699b('0xf'),auth[_0x699b('0xa')](),controller[_0x699b('0x10')]);router['get'](_0x699b('0x11'),auth[_0x699b('0xa')](),controller[_0x699b('0x12')]);router[_0x699b('0x13')]('/',auth[_0x699b('0xa')](),controller[_0x699b('0x14')]);router['put'](_0x699b('0xc'),auth[_0x699b('0xa')](),controller[_0x699b('0x15')]);router['delete'](_0x699b('0xc'),auth[_0x699b('0xa')](),controller[_0x699b('0x16')]);module[_0x699b('0x17')]=router;
\ No newline at end of file
+var _0xe043=['../../config/environment','./intServicenowConfiguration.controller','isAuthenticated','index','/:id','show','get','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe043,0x12b));var _0x3e04=function(_0x2e2015,_0xaa9072){_0x2e2015=_0x2e2015-0x0;var _0x5d8e99=_0xe043[_0x2e2015];return _0x5d8e99;};'use strict';var multer=require(_0x3e04('0x0'));var util=require(_0x3e04('0x1'));var path=require(_0x3e04('0x2'));var timeout=require(_0x3e04('0x3'));var express=require(_0x3e04('0x4'));var router=express[_0x3e04('0x5')]();var fs_extra=require(_0x3e04('0x6'));var auth=require(_0x3e04('0x7'));var interaction=require(_0x3e04('0x8'));var config=require(_0x3e04('0x9'));var controller=require(_0x3e04('0xa'));router['get']('/',auth[_0x3e04('0xb')](),controller[_0x3e04('0xc')]);router['get'](_0x3e04('0xd'),auth[_0x3e04('0xb')](),controller[_0x3e04('0xe')]);router[_0x3e04('0xf')](_0x3e04('0x10'),auth['isAuthenticated'](),controller[_0x3e04('0x11')]);router['get'](_0x3e04('0x12'),auth['isAuthenticated'](),controller[_0x3e04('0x13')]);router['get']('/:id/descriptions',auth[_0x3e04('0xb')](),controller[_0x3e04('0x14')]);router[_0x3e04('0x15')]('/',auth[_0x3e04('0xb')](),controller[_0x3e04('0x16')]);router[_0x3e04('0x17')](_0x3e04('0xd'),auth[_0x3e04('0xb')](),controller[_0x3e04('0x18')]);router[_0x3e04('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x3e04('0x1a')]);module[_0x3e04('0x1b')]=router;
\ No newline at end of file
index 5b2f291..65d937a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfb0=['sequelize','exports','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbfb0,0x1b0));var _0x0bfb=function(_0x4e0026,_0x2b52b6){_0x4e0026=_0x4e0026-0x0;var _0x3f8ee7=_0xbfb0[_0x4e0026];return _0x3f8ee7;};'use strict';var Sequelize=require(_0x0bfb('0x0'));module[_0x0bfb('0x1')]={'name':{'type':Sequelize[_0x0bfb('0x2')]},'description':{'type':Sequelize[_0x0bfb('0x2')]}};
\ No newline at end of file
+var _0x488b=['sequelize','exports','STRING'];(function(_0x1d7050,_0xfe6b3e){var _0x2b8a9d=function(_0x1e8395){while(--_0x1e8395){_0x1d7050['push'](_0x1d7050['shift']());}};_0x2b8a9d(++_0xfe6b3e);}(_0x488b,0x1e0));var _0xb488=function(_0x3d0d29,_0x200a60){_0x3d0d29=_0x3d0d29-0x0;var _0x2f88e5=_0x488b[_0x3d0d29];return _0x2f88e5;};'use strict';var Sequelize=require(_0xb488('0x0'));module[_0xb488('0x1')]={'name':{'type':Sequelize[_0xb488('0x2')]},'description':{'type':Sequelize[_0xb488('0x2')]}};
\ No newline at end of file
index 95f0c62..5515238 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d5d=['moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','sort','where','pick','filter','VIRTUAL','merge','options','ServicenowConfiguration','includeAll','include','findAll','rows','catch','show','find','update','body','params','getFields','findOne','ServicenowField','length','order','map','hasOwnProperty','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0x9d5d,0xf5));var _0xd9d5=function(_0x14afc0,_0x5e8b91){_0x14afc0=_0x14afc0-0x0;var _0x5a532f=_0x9d5d[_0x14afc0];return _0x5a532f;};'use strict';var emlformat=require(_0xd9d5('0x0'));var rimraf=require(_0xd9d5('0x1'));var zipdir=require(_0xd9d5('0x2'));var jsonpatch=require(_0xd9d5('0x3'));var rp=require('request-promise');var moment=require(_0xd9d5('0x4'));var BPromise=require(_0xd9d5('0x5'));var Mustache=require(_0xd9d5('0x6'));var util=require(_0xd9d5('0x7'));var path=require(_0xd9d5('0x8'));var sox=require(_0xd9d5('0x9'));var csv=require(_0xd9d5('0xa'));var ejs=require(_0xd9d5('0xb'));var fs=require('fs');var fs_extra=require(_0xd9d5('0xc'));var _=require(_0xd9d5('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd9d5('0xe'));var deskjs=require(_0xd9d5('0xf'));var toCsv=require(_0xd9d5('0xa'));var querystring=require(_0xd9d5('0x10'));var Papa=require(_0xd9d5('0x11'));var Redis=require(_0xd9d5('0x12'));var authService=require(_0xd9d5('0x13'));var qs=require(_0xd9d5('0x14'));var as=require(_0xd9d5('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd9d5('0x16'))('api');var utils=require(_0xd9d5('0x17'));var config=require(_0xd9d5('0x18'));var licenseUtil=require(_0xd9d5('0x19'));var db=require(_0xd9d5('0x1a'))['db'];function respondWithStatusCode(_0x38acb9,_0x9edbfe){_0x9edbfe=_0x9edbfe||0xcc;return function(_0x4aa22f){if(_0x4aa22f){return _0x38acb9[_0xd9d5('0x1b')](_0x9edbfe);}return _0x38acb9[_0xd9d5('0x1c')](_0x9edbfe)[_0xd9d5('0x1d')]();};}function respondWithResult(_0x59a917,_0x5243ee){_0x5243ee=_0x5243ee||0xc8;return function(_0x543b5a){if(_0x543b5a){return _0x59a917[_0xd9d5('0x1c')](_0x5243ee)[_0xd9d5('0x1e')](_0x543b5a);}};}function respondWithFilteredResult(_0x38aac0,_0xb8190f){return function(_0x1fa6ff){if(_0x1fa6ff){var _0x2c4e96=typeof _0xb8190f[_0xd9d5('0x1f')]===_0xd9d5('0x20')&&typeof _0xb8190f[_0xd9d5('0x21')]==='undefined';var _0x65062a=_0x1fa6ff[_0xd9d5('0x22')];var _0x3e077b=_0x2c4e96?0x0:_0xb8190f[_0xd9d5('0x1f')];var _0x19f3d9=_0x2c4e96?_0x1fa6ff[_0xd9d5('0x22')]:_0xb8190f[_0xd9d5('0x1f')]+_0xb8190f[_0xd9d5('0x21')];var _0x4c5d23;if(_0x19f3d9>=_0x65062a){_0x19f3d9=_0x65062a;_0x4c5d23=0xc8;}else{_0x4c5d23=0xce;}_0x38aac0[_0xd9d5('0x1c')](_0x4c5d23);return _0x38aac0[_0xd9d5('0x23')]('Content-Range',_0x3e077b+'-'+_0x19f3d9+'/'+_0x65062a)[_0xd9d5('0x1e')](_0x1fa6ff);}return null;};}function patchUpdates(_0x4d913e){return function(_0x245638){try{jsonpatch[_0xd9d5('0x24')](_0x245638,_0x4d913e,!![]);}catch(_0x232a49){return BPromise[_0xd9d5('0x25')](_0x232a49);}return _0x245638['save']();};}function saveUpdates(_0x3a7430,_0x37b136){return function(_0xcad88c){if(_0xcad88c){return _0xcad88c['update'](_0x3a7430)[_0xd9d5('0x26')](function(_0x27f72f){return _0x27f72f;});}return null;};}function removeEntity(_0x1f9620,_0x1a9dff){return function(_0x1c1339){if(_0x1c1339){return _0x1c1339[_0xd9d5('0x27')]()[_0xd9d5('0x26')](function(){_0x1f9620['status'](0xcc)[_0xd9d5('0x1d')]();});}};}function handleEntityNotFound(_0x32098e,_0x42512b){return function(_0x54ef04){if(!_0x54ef04){_0x32098e[_0xd9d5('0x1b')](0x194);}return _0x54ef04;};}function handleError(_0x29c283,_0x777d8c){_0x777d8c=_0x777d8c||0x1f4;return function(_0x417a71){logger[_0xd9d5('0x28')](_0x417a71[_0xd9d5('0x29')]);if(_0x417a71[_0xd9d5('0x2a')]){delete _0x417a71[_0xd9d5('0x2a')];}_0x29c283[_0xd9d5('0x1c')](_0x777d8c)[_0xd9d5('0x2b')](_0x417a71);};}exports[_0xd9d5('0x2c')]=function(_0x6ccf3b,_0x49e36c){var _0x5989f4={},_0x1b02a6={},_0x39bc6e={'count':0x0,'rows':[]};var _0x212e4c=_['map'](db['ServicenowConfiguration'][_0xd9d5('0x2d')],function(_0x408bfd){return{'name':_0x408bfd[_0xd9d5('0x2e')],'type':_0x408bfd[_0xd9d5('0x2f')]['key']};});_0x1b02a6['model']=_['map'](_0x212e4c,_0xd9d5('0x2a'));_0x1b02a6[_0xd9d5('0x30')]=_[_0xd9d5('0x31')](_0x6ccf3b[_0xd9d5('0x30')]);_0x1b02a6[_0xd9d5('0x32')]=_[_0xd9d5('0x33')](_0x1b02a6[_0xd9d5('0x34')],_0x1b02a6[_0xd9d5('0x30')]);_0x5989f4[_0xd9d5('0x35')]=_['intersection'](_0x1b02a6[_0xd9d5('0x34')],qs[_0xd9d5('0x36')](_0x6ccf3b[_0xd9d5('0x30')][_0xd9d5('0x36')]));_0x5989f4[_0xd9d5('0x35')]=_0x5989f4['attributes']['length']?_0x5989f4[_0xd9d5('0x35')]:_0x1b02a6[_0xd9d5('0x34')];if(!_0x6ccf3b['query']['hasOwnProperty']('nolimit')){_0x5989f4[_0xd9d5('0x21')]=qs['limit'](_0x6ccf3b['query'][_0xd9d5('0x21')]);_0x5989f4['offset']=qs[_0xd9d5('0x1f')](_0x6ccf3b[_0xd9d5('0x30')][_0xd9d5('0x1f')]);}_0x5989f4['order']=qs[_0xd9d5('0x37')](_0x6ccf3b['query'][_0xd9d5('0x37')]);_0x5989f4[_0xd9d5('0x38')]=qs[_0xd9d5('0x32')](_[_0xd9d5('0x39')](_0x6ccf3b['query'],_0x1b02a6[_0xd9d5('0x32')]),_0x212e4c);if(_0x6ccf3b[_0xd9d5('0x30')][_0xd9d5('0x3a')]){_0x5989f4[_0xd9d5('0x38')]=_['merge'](_0x5989f4[_0xd9d5('0x38')],{'$or':_['map'](_0x212e4c,function(_0x3e8c4a){if(_0x3e8c4a['type']!==_0xd9d5('0x3b')){var _0x4c82ac={};_0x4c82ac[_0x3e8c4a['name']]={'$like':'%'+_0x6ccf3b[_0xd9d5('0x30')]['filter']+'%'};return _0x4c82ac;}})});}_0x5989f4=_[_0xd9d5('0x3c')]({},_0x5989f4,_0x6ccf3b[_0xd9d5('0x3d')]);var _0x1af726={'where':_0x5989f4[_0xd9d5('0x38')]};return db[_0xd9d5('0x3e')][_0xd9d5('0x22')](_0x1af726)['then'](function(_0x4f9ce7){_0x39bc6e['count']=_0x4f9ce7;if(_0x6ccf3b['query'][_0xd9d5('0x3f')]){_0x5989f4[_0xd9d5('0x40')]=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xd9d5('0x41')](_0x5989f4);})[_0xd9d5('0x26')](function(_0xcf2cca){_0x39bc6e[_0xd9d5('0x42')]=_0xcf2cca;return _0x39bc6e;})[_0xd9d5('0x26')](respondWithFilteredResult(_0x49e36c,_0x5989f4))[_0xd9d5('0x43')](handleError(_0x49e36c,null));};exports[_0xd9d5('0x44')]=function(_0x5e3e73,_0x473a57){var _0x3fb3f1={'raw':![],'where':{'id':_0x5e3e73['params']['id']}},_0x1788a6={};_0x1788a6[_0xd9d5('0x34')]=_['keys'](db[_0xd9d5('0x3e')][_0xd9d5('0x2d')]);_0x1788a6[_0xd9d5('0x30')]=_['keys'](_0x5e3e73[_0xd9d5('0x30')]);_0x1788a6[_0xd9d5('0x32')]=_[_0xd9d5('0x33')](_0x1788a6['model'],_0x1788a6[_0xd9d5('0x30')]);_0x3fb3f1[_0xd9d5('0x35')]=_[_0xd9d5('0x33')](_0x1788a6[_0xd9d5('0x34')],qs[_0xd9d5('0x36')](_0x5e3e73[_0xd9d5('0x30')][_0xd9d5('0x36')]));_0x3fb3f1['attributes']=_0x3fb3f1[_0xd9d5('0x35')]['length']?_0x3fb3f1[_0xd9d5('0x35')]:_0x1788a6[_0xd9d5('0x34')];if(_0x5e3e73['query'][_0xd9d5('0x3f')]){_0x3fb3f1[_0xd9d5('0x40')]=[{'all':!![]}];}_0x3fb3f1=_[_0xd9d5('0x3c')]({},_0x3fb3f1,_0x5e3e73[_0xd9d5('0x3d')]);return db['ServicenowConfiguration'][_0xd9d5('0x45')](_0x3fb3f1)[_0xd9d5('0x26')](handleEntityNotFound(_0x473a57,null))[_0xd9d5('0x26')](respondWithResult(_0x473a57,null))[_0xd9d5('0x43')](handleError(_0x473a57,null));};exports['create']=function(_0x226da2,_0x121a0e){return db[_0xd9d5('0x3e')]['create'](_0x226da2['body'],{})[_0xd9d5('0x26')](respondWithResult(_0x121a0e,0xc9))[_0xd9d5('0x43')](handleError(_0x121a0e,null));};exports[_0xd9d5('0x46')]=function(_0x2dab1b,_0x29195){if(_0x2dab1b[_0xd9d5('0x47')]['id']){delete _0x2dab1b[_0xd9d5('0x47')]['id'];}return db[_0xd9d5('0x3e')][_0xd9d5('0x45')]({'where':{'id':_0x2dab1b[_0xd9d5('0x48')]['id']}})[_0xd9d5('0x26')](handleEntityNotFound(_0x29195,null))[_0xd9d5('0x26')](saveUpdates(_0x2dab1b['body'],null))[_0xd9d5('0x26')](respondWithResult(_0x29195,null))[_0xd9d5('0x43')](handleError(_0x29195,null));};exports[_0xd9d5('0x27')]=function(_0x4ec588,_0xe06382){return db[_0xd9d5('0x3e')][_0xd9d5('0x45')]({'where':{'id':_0x4ec588[_0xd9d5('0x48')]['id']}})['then'](handleEntityNotFound(_0xe06382,null))[_0xd9d5('0x26')](removeEntity(_0xe06382,null))[_0xd9d5('0x43')](handleError(_0xe06382,null));};exports[_0xd9d5('0x49')]=function(_0x1dd495,_0x410c83,_0x19ae31){var _0x1be065={};var _0x45d9cc={};var _0x2b41bf;var _0x227399;return db['ServicenowConfiguration'][_0xd9d5('0x4a')]({'where':{'id':_0x1dd495[_0xd9d5('0x48')]['id']}})[_0xd9d5('0x26')](handleEntityNotFound(_0x410c83,null))[_0xd9d5('0x26')](function(_0x50d8ec){if(_0x50d8ec){_0x2b41bf=_0x50d8ec;_0x45d9cc[_0xd9d5('0x34')]=_[_0xd9d5('0x31')](db[_0xd9d5('0x4b')][_0xd9d5('0x2d')]);_0x45d9cc['query']=_[_0xd9d5('0x31')](_0x1dd495[_0xd9d5('0x30')]);_0x45d9cc['filters']=_[_0xd9d5('0x33')](_0x45d9cc['model'],_0x45d9cc[_0xd9d5('0x30')]);_0x1be065[_0xd9d5('0x35')]=_[_0xd9d5('0x33')](_0x45d9cc['model'],qs[_0xd9d5('0x36')](_0x1dd495[_0xd9d5('0x30')]['fields']));_0x1be065[_0xd9d5('0x35')]=_0x1be065[_0xd9d5('0x35')][_0xd9d5('0x4c')]?_0x1be065[_0xd9d5('0x35')]:_0x45d9cc[_0xd9d5('0x34')];_0x1be065[_0xd9d5('0x4d')]=qs[_0xd9d5('0x37')](_0x1dd495[_0xd9d5('0x30')][_0xd9d5('0x37')]);_0x1be065[_0xd9d5('0x38')]=qs[_0xd9d5('0x32')](_[_0xd9d5('0x39')](_0x1dd495['query'],_0x45d9cc[_0xd9d5('0x32')]));if(_0x1dd495[_0xd9d5('0x30')][_0xd9d5('0x3a')]){_0x1be065[_0xd9d5('0x38')]=_[_0xd9d5('0x3c')](_0x1be065[_0xd9d5('0x38')],{'$or':_[_0xd9d5('0x4e')](_0x1be065[_0xd9d5('0x35')],function(_0x57a24c){var _0x4e709e={};_0x4e709e[_0x57a24c]={'$like':'%'+_0x1dd495[_0xd9d5('0x30')]['filter']+'%'};return _0x4e709e;})});}_0x1be065=_[_0xd9d5('0x3c')]({},_0x1be065,_0x1dd495[_0xd9d5('0x3d')]);return _0x2b41bf[_0xd9d5('0x49')](_0x1be065);}})[_0xd9d5('0x26')](function(_0x1adb33){if(_0x1adb33){_0x227399=_0x1adb33[_0xd9d5('0x4c')];if(!_0x1dd495[_0xd9d5('0x30')][_0xd9d5('0x4f')](_0xd9d5('0x50'))){_0x1be065[_0xd9d5('0x21')]=qs['limit'](_0x1dd495[_0xd9d5('0x30')][_0xd9d5('0x21')]);_0x1be065['offset']=qs['offset'](_0x1dd495['query'][_0xd9d5('0x1f')]);}return _0x2b41bf[_0xd9d5('0x49')](_0x1be065);}})[_0xd9d5('0x26')](function(_0x2a9fec){if(_0x2a9fec){return _0x2a9fec?{'count':_0x227399,'rows':_0x2a9fec}:null;}})[_0xd9d5('0x26')](respondWithResult(_0x410c83,null))[_0xd9d5('0x43')](handleError(_0x410c83,null));};exports[_0xd9d5('0x51')]=function(_0x2ece8d,_0x45ca90,_0x23f40f){var _0x51998a={};var _0x22a063={};var _0x117cac;var _0x4dcbf5;return db[_0xd9d5('0x3e')]['findOne']({'where':{'id':_0x2ece8d[_0xd9d5('0x48')]['id']}})['then'](handleEntityNotFound(_0x45ca90,null))[_0xd9d5('0x26')](function(_0x17d725){if(_0x17d725){_0x117cac=_0x17d725;_0x22a063['model']=_[_0xd9d5('0x31')](db[_0xd9d5('0x4b')]['rawAttributes']);_0x22a063[_0xd9d5('0x30')]=_[_0xd9d5('0x31')](_0x2ece8d[_0xd9d5('0x30')]);_0x22a063[_0xd9d5('0x32')]=_['intersection'](_0x22a063[_0xd9d5('0x34')],_0x22a063[_0xd9d5('0x30')]);_0x51998a[_0xd9d5('0x35')]=_['intersection'](_0x22a063[_0xd9d5('0x34')],qs[_0xd9d5('0x36')](_0x2ece8d[_0xd9d5('0x30')]['fields']));_0x51998a['attributes']=_0x51998a[_0xd9d5('0x35')][_0xd9d5('0x4c')]?_0x51998a['attributes']:_0x22a063[_0xd9d5('0x34')];_0x51998a['order']=qs[_0xd9d5('0x37')](_0x2ece8d[_0xd9d5('0x30')][_0xd9d5('0x37')]);_0x51998a[_0xd9d5('0x38')]=qs[_0xd9d5('0x32')](_[_0xd9d5('0x39')](_0x2ece8d['query'],_0x22a063[_0xd9d5('0x32')]));if(_0x2ece8d[_0xd9d5('0x30')][_0xd9d5('0x3a')]){_0x51998a[_0xd9d5('0x38')]=_[_0xd9d5('0x3c')](_0x51998a[_0xd9d5('0x38')],{'$or':_[_0xd9d5('0x4e')](_0x51998a[_0xd9d5('0x35')],function(_0x187934){var _0x4ea7e1={};_0x4ea7e1[_0x187934]={'$like':'%'+_0x2ece8d[_0xd9d5('0x30')][_0xd9d5('0x3a')]+'%'};return _0x4ea7e1;})});}_0x51998a=_['merge']({},_0x51998a,_0x2ece8d['options']);return _0x117cac[_0xd9d5('0x51')](_0x51998a);}})[_0xd9d5('0x26')](function(_0x7fec55){if(_0x7fec55){_0x4dcbf5=_0x7fec55[_0xd9d5('0x4c')];if(!_0x2ece8d['query'][_0xd9d5('0x4f')](_0xd9d5('0x50'))){_0x51998a[_0xd9d5('0x21')]=qs[_0xd9d5('0x21')](_0x2ece8d[_0xd9d5('0x30')][_0xd9d5('0x21')]);_0x51998a['offset']=qs[_0xd9d5('0x1f')](_0x2ece8d[_0xd9d5('0x30')][_0xd9d5('0x1f')]);}return _0x117cac[_0xd9d5('0x51')](_0x51998a);}})[_0xd9d5('0x26')](function(_0x3824cf){if(_0x3824cf){return _0x3824cf?{'count':_0x4dcbf5,'rows':_0x3824cf}:null;}})['then'](respondWithResult(_0x45ca90,null))['catch'](handleError(_0x45ca90,null));};exports[_0xd9d5('0x52')]=function(_0x335d93,_0x219673,_0x529626){var _0x11cbfb={};var _0x102051={};var _0x2c06e0;var _0xf33444;return db[_0xd9d5('0x3e')]['findOne']({'where':{'id':_0x335d93[_0xd9d5('0x48')]['id']}})[_0xd9d5('0x26')](handleEntityNotFound(_0x219673,null))[_0xd9d5('0x26')](function(_0x429395){if(_0x429395){_0x2c06e0=_0x429395;_0x102051['model']=_[_0xd9d5('0x31')](db['ServicenowField'][_0xd9d5('0x2d')]);_0x102051[_0xd9d5('0x30')]=_[_0xd9d5('0x31')](_0x335d93[_0xd9d5('0x30')]);_0x102051[_0xd9d5('0x32')]=_[_0xd9d5('0x33')](_0x102051[_0xd9d5('0x34')],_0x102051[_0xd9d5('0x30')]);_0x11cbfb['attributes']=_['intersection'](_0x102051['model'],qs['fields'](_0x335d93[_0xd9d5('0x30')]['fields']));_0x11cbfb[_0xd9d5('0x35')]=_0x11cbfb[_0xd9d5('0x35')][_0xd9d5('0x4c')]?_0x11cbfb[_0xd9d5('0x35')]:_0x102051[_0xd9d5('0x34')];_0x11cbfb[_0xd9d5('0x4d')]=qs[_0xd9d5('0x37')](_0x335d93[_0xd9d5('0x30')]['sort']);_0x11cbfb[_0xd9d5('0x38')]=qs['filters'](_['pick'](_0x335d93[_0xd9d5('0x30')],_0x102051['filters']));if(_0x335d93[_0xd9d5('0x30')][_0xd9d5('0x3a')]){_0x11cbfb[_0xd9d5('0x38')]=_[_0xd9d5('0x3c')](_0x11cbfb['where'],{'$or':_[_0xd9d5('0x4e')](_0x11cbfb[_0xd9d5('0x35')],function(_0x38d6fb){var _0x565e38={};_0x565e38[_0x38d6fb]={'$like':'%'+_0x335d93[_0xd9d5('0x30')][_0xd9d5('0x3a')]+'%'};return _0x565e38;})});}_0x11cbfb=_[_0xd9d5('0x3c')]({},_0x11cbfb,_0x335d93[_0xd9d5('0x3d')]);return _0x2c06e0[_0xd9d5('0x52')](_0x11cbfb);}})['then'](function(_0x1a156d){if(_0x1a156d){_0xf33444=_0x1a156d[_0xd9d5('0x4c')];if(!_0x335d93[_0xd9d5('0x30')][_0xd9d5('0x4f')]('nolimit')){_0x11cbfb[_0xd9d5('0x21')]=qs['limit'](_0x335d93[_0xd9d5('0x30')]['limit']);_0x11cbfb[_0xd9d5('0x1f')]=qs[_0xd9d5('0x1f')](_0x335d93[_0xd9d5('0x30')]['offset']);}return _0x2c06e0[_0xd9d5('0x52')](_0x11cbfb);}})[_0xd9d5('0x26')](function(_0x123994){if(_0x123994){return _0x123994?{'count':_0xf33444,'rows':_0x123994}:null;}})[_0xd9d5('0x26')](respondWithResult(_0x219673,null))[_0xd9d5('0x43')](handleError(_0x219673,null));};
\ No newline at end of file
+var _0xccb0=['end','status','json','undefined','limit','count','offset','Content-Range','apply','save','update','then','destroy','error','name','map','ServicenowConfiguration','type','model','query','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','includeAll','findAll','rows','show','params','keys','rawAttributes','fields','merge','options','catch','create','body','find','getFields','findOne','ServicenowField','length','getSubjects','getDescriptions','pick','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus'];(function(_0x498181,_0x2c6f81){var _0x3bb2cb=function(_0x124234){while(--_0x124234){_0x498181['push'](_0x498181['shift']());}};_0x3bb2cb(++_0x2c6f81);}(_0xccb0,0xcb));var _0x0ccb=function(_0x56cb19,_0x4f487b){_0x56cb19=_0x56cb19-0x0;var _0x1bead2=_0xccb0[_0x56cb19];return _0x1bead2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0ccb('0x0'));var zipdir=require(_0x0ccb('0x1'));var jsonpatch=require(_0x0ccb('0x2'));var rp=require(_0x0ccb('0x3'));var moment=require(_0x0ccb('0x4'));var BPromise=require(_0x0ccb('0x5'));var Mustache=require(_0x0ccb('0x6'));var util=require(_0x0ccb('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x0ccb('0x8'));var ejs=require(_0x0ccb('0x9'));var fs=require('fs');var fs_extra=require(_0x0ccb('0xa'));var _=require(_0x0ccb('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0ccb('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x0ccb('0x8'));var querystring=require(_0x0ccb('0xd'));var Papa=require(_0x0ccb('0xe'));var Redis=require(_0x0ccb('0xf'));var authService=require(_0x0ccb('0x10'));var qs=require(_0x0ccb('0x11'));var as=require(_0x0ccb('0x12'));var hardwareService=require(_0x0ccb('0x13'));var logger=require(_0x0ccb('0x14'))(_0x0ccb('0x15'));var utils=require(_0x0ccb('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0ccb('0x17'))['db'];function respondWithStatusCode(_0x18f0df,_0x449c23){_0x449c23=_0x449c23||0xcc;return function(_0x5cca0a){if(_0x5cca0a){return _0x18f0df[_0x0ccb('0x18')](_0x449c23);}return _0x18f0df['status'](_0x449c23)[_0x0ccb('0x19')]();};}function respondWithResult(_0x8b1faa,_0x4091e5){_0x4091e5=_0x4091e5||0xc8;return function(_0x4e1f49){if(_0x4e1f49){return _0x8b1faa[_0x0ccb('0x1a')](_0x4091e5)[_0x0ccb('0x1b')](_0x4e1f49);}};}function respondWithFilteredResult(_0x54b22e,_0x5845b6){return function(_0x33519b){if(_0x33519b){var _0x1e13b5=typeof _0x5845b6['offset']===_0x0ccb('0x1c')&&typeof _0x5845b6[_0x0ccb('0x1d')]==='undefined';var _0x3b3dc9=_0x33519b[_0x0ccb('0x1e')];var _0x266875=_0x1e13b5?0x0:_0x5845b6[_0x0ccb('0x1f')];var _0x283976=_0x1e13b5?_0x33519b[_0x0ccb('0x1e')]:_0x5845b6[_0x0ccb('0x1f')]+_0x5845b6[_0x0ccb('0x1d')];var _0x596aaf;if(_0x283976>=_0x3b3dc9){_0x283976=_0x3b3dc9;_0x596aaf=0xc8;}else{_0x596aaf=0xce;}_0x54b22e[_0x0ccb('0x1a')](_0x596aaf);return _0x54b22e['set'](_0x0ccb('0x20'),_0x266875+'-'+_0x283976+'/'+_0x3b3dc9)['json'](_0x33519b);}return null;};}function patchUpdates(_0x6068a){return function(_0x2e8bbe){try{jsonpatch[_0x0ccb('0x21')](_0x2e8bbe,_0x6068a,!![]);}catch(_0x30ecfa){return BPromise['reject'](_0x30ecfa);}return _0x2e8bbe[_0x0ccb('0x22')]();};}function saveUpdates(_0x1d6ee6,_0x34a7b7){return function(_0x5dabe6){if(_0x5dabe6){return _0x5dabe6[_0x0ccb('0x23')](_0x1d6ee6)[_0x0ccb('0x24')](function(_0x1eca66){return _0x1eca66;});}return null;};}function removeEntity(_0x2fa8f6,_0x4834ba){return function(_0x4415c4){if(_0x4415c4){return _0x4415c4[_0x0ccb('0x25')]()[_0x0ccb('0x24')](function(){_0x2fa8f6[_0x0ccb('0x1a')](0xcc)[_0x0ccb('0x19')]();});}};}function handleEntityNotFound(_0x1a36ef,_0x48565e){return function(_0x57041e){if(!_0x57041e){_0x1a36ef[_0x0ccb('0x18')](0x194);}return _0x57041e;};}function handleError(_0x424d89,_0xef9ea8){_0xef9ea8=_0xef9ea8||0x1f4;return function(_0x24f84f){logger[_0x0ccb('0x26')](_0x24f84f['stack']);if(_0x24f84f[_0x0ccb('0x27')]){delete _0x24f84f[_0x0ccb('0x27')];}_0x424d89[_0x0ccb('0x1a')](_0xef9ea8)['send'](_0x24f84f);};}exports['index']=function(_0x2a24dc,_0x55dd58){var _0x2d0854={},_0x3431b3={},_0x16dc1a={'count':0x0,'rows':[]};var _0x2791bb=_[_0x0ccb('0x28')](db[_0x0ccb('0x29')]['rawAttributes'],function(_0x224782){return{'name':_0x224782['fieldName'],'type':_0x224782[_0x0ccb('0x2a')]['key']};});_0x3431b3[_0x0ccb('0x2b')]=_[_0x0ccb('0x28')](_0x2791bb,_0x0ccb('0x27'));_0x3431b3[_0x0ccb('0x2c')]=_['keys'](_0x2a24dc['query']);_0x3431b3[_0x0ccb('0x2d')]=_[_0x0ccb('0x2e')](_0x3431b3[_0x0ccb('0x2b')],_0x3431b3[_0x0ccb('0x2c')]);_0x2d0854[_0x0ccb('0x2f')]=_[_0x0ccb('0x2e')](_0x3431b3['model'],qs['fields'](_0x2a24dc[_0x0ccb('0x2c')]['fields']));_0x2d0854[_0x0ccb('0x2f')]=_0x2d0854[_0x0ccb('0x2f')]['length']?_0x2d0854[_0x0ccb('0x2f')]:_0x3431b3[_0x0ccb('0x2b')];if(!_0x2a24dc['query'][_0x0ccb('0x30')](_0x0ccb('0x31'))){_0x2d0854['limit']=qs[_0x0ccb('0x1d')](_0x2a24dc[_0x0ccb('0x2c')][_0x0ccb('0x1d')]);_0x2d0854[_0x0ccb('0x1f')]=qs[_0x0ccb('0x1f')](_0x2a24dc[_0x0ccb('0x2c')]['offset']);}_0x2d0854[_0x0ccb('0x32')]=qs[_0x0ccb('0x33')](_0x2a24dc['query']['sort']);_0x2d0854[_0x0ccb('0x34')]=qs[_0x0ccb('0x2d')](_['pick'](_0x2a24dc['query'],_0x3431b3[_0x0ccb('0x2d')]),_0x2791bb);if(_0x2a24dc[_0x0ccb('0x2c')][_0x0ccb('0x35')]){_0x2d0854[_0x0ccb('0x34')]=_['merge'](_0x2d0854[_0x0ccb('0x34')],{'$or':_[_0x0ccb('0x28')](_0x2791bb,function(_0x126b47){if(_0x126b47[_0x0ccb('0x2a')]!==_0x0ccb('0x36')){var _0x2be8cc={};_0x2be8cc[_0x126b47[_0x0ccb('0x27')]]={'$like':'%'+_0x2a24dc[_0x0ccb('0x2c')][_0x0ccb('0x35')]+'%'};return _0x2be8cc;}})});}_0x2d0854=_['merge']({},_0x2d0854,_0x2a24dc['options']);var _0x36e2df={'where':_0x2d0854['where']};return db[_0x0ccb('0x29')][_0x0ccb('0x1e')](_0x36e2df)['then'](function(_0x4580a9){_0x16dc1a['count']=_0x4580a9;if(_0x2a24dc[_0x0ccb('0x2c')][_0x0ccb('0x37')]){_0x2d0854['include']=[{'all':!![]}];}return db[_0x0ccb('0x29')][_0x0ccb('0x38')](_0x2d0854);})[_0x0ccb('0x24')](function(_0x4021f8){_0x16dc1a[_0x0ccb('0x39')]=_0x4021f8;return _0x16dc1a;})[_0x0ccb('0x24')](respondWithFilteredResult(_0x55dd58,_0x2d0854))['catch'](handleError(_0x55dd58,null));};exports[_0x0ccb('0x3a')]=function(_0x18448d,_0x1e2dda){var _0x4fb6ac={'raw':![],'where':{'id':_0x18448d[_0x0ccb('0x3b')]['id']}},_0x76d68d={};_0x76d68d[_0x0ccb('0x2b')]=_[_0x0ccb('0x3c')](db[_0x0ccb('0x29')][_0x0ccb('0x3d')]);_0x76d68d[_0x0ccb('0x2c')]=_[_0x0ccb('0x3c')](_0x18448d[_0x0ccb('0x2c')]);_0x76d68d['filters']=_[_0x0ccb('0x2e')](_0x76d68d[_0x0ccb('0x2b')],_0x76d68d[_0x0ccb('0x2c')]);_0x4fb6ac[_0x0ccb('0x2f')]=_[_0x0ccb('0x2e')](_0x76d68d['model'],qs[_0x0ccb('0x3e')](_0x18448d[_0x0ccb('0x2c')][_0x0ccb('0x3e')]));_0x4fb6ac[_0x0ccb('0x2f')]=_0x4fb6ac['attributes']['length']?_0x4fb6ac[_0x0ccb('0x2f')]:_0x76d68d[_0x0ccb('0x2b')];if(_0x18448d[_0x0ccb('0x2c')]['includeAll']){_0x4fb6ac['include']=[{'all':!![]}];}_0x4fb6ac=_[_0x0ccb('0x3f')]({},_0x4fb6ac,_0x18448d[_0x0ccb('0x40')]);return db[_0x0ccb('0x29')]['find'](_0x4fb6ac)[_0x0ccb('0x24')](handleEntityNotFound(_0x1e2dda,null))['then'](respondWithResult(_0x1e2dda,null))[_0x0ccb('0x41')](handleError(_0x1e2dda,null));};exports['create']=function(_0x52422d,_0x57a9ed){return db[_0x0ccb('0x29')][_0x0ccb('0x42')](_0x52422d['body'],{})['then'](respondWithResult(_0x57a9ed,0xc9))[_0x0ccb('0x41')](handleError(_0x57a9ed,null));};exports[_0x0ccb('0x23')]=function(_0x43283d,_0x1162aa){if(_0x43283d[_0x0ccb('0x43')]['id']){delete _0x43283d[_0x0ccb('0x43')]['id'];}return db[_0x0ccb('0x29')][_0x0ccb('0x44')]({'where':{'id':_0x43283d[_0x0ccb('0x3b')]['id']}})['then'](handleEntityNotFound(_0x1162aa,null))[_0x0ccb('0x24')](saveUpdates(_0x43283d[_0x0ccb('0x43')],null))['then'](respondWithResult(_0x1162aa,null))[_0x0ccb('0x41')](handleError(_0x1162aa,null));};exports[_0x0ccb('0x25')]=function(_0x294cd6,_0x3f339e){return db[_0x0ccb('0x29')][_0x0ccb('0x44')]({'where':{'id':_0x294cd6[_0x0ccb('0x3b')]['id']}})['then'](handleEntityNotFound(_0x3f339e,null))[_0x0ccb('0x24')](removeEntity(_0x3f339e,null))['catch'](handleError(_0x3f339e,null));};exports[_0x0ccb('0x45')]=function(_0x18fcbf,_0x3b2a5d,_0x38260b){var _0x260d9b={};var _0x533a27={};var _0x3352d9;var _0xc040d9;return db[_0x0ccb('0x29')][_0x0ccb('0x46')]({'where':{'id':_0x18fcbf['params']['id']}})[_0x0ccb('0x24')](handleEntityNotFound(_0x3b2a5d,null))[_0x0ccb('0x24')](function(_0x5f14aa){if(_0x5f14aa){_0x3352d9=_0x5f14aa;_0x533a27[_0x0ccb('0x2b')]=_[_0x0ccb('0x3c')](db[_0x0ccb('0x47')][_0x0ccb('0x3d')]);_0x533a27['query']=_[_0x0ccb('0x3c')](_0x18fcbf[_0x0ccb('0x2c')]);_0x533a27[_0x0ccb('0x2d')]=_[_0x0ccb('0x2e')](_0x533a27[_0x0ccb('0x2b')],_0x533a27[_0x0ccb('0x2c')]);_0x260d9b[_0x0ccb('0x2f')]=_[_0x0ccb('0x2e')](_0x533a27[_0x0ccb('0x2b')],qs['fields'](_0x18fcbf[_0x0ccb('0x2c')][_0x0ccb('0x3e')]));_0x260d9b['attributes']=_0x260d9b[_0x0ccb('0x2f')]['length']?_0x260d9b['attributes']:_0x533a27[_0x0ccb('0x2b')];_0x260d9b['order']=qs[_0x0ccb('0x33')](_0x18fcbf[_0x0ccb('0x2c')]['sort']);_0x260d9b[_0x0ccb('0x34')]=qs[_0x0ccb('0x2d')](_['pick'](_0x18fcbf[_0x0ccb('0x2c')],_0x533a27[_0x0ccb('0x2d')]));if(_0x18fcbf[_0x0ccb('0x2c')]['filter']){_0x260d9b[_0x0ccb('0x34')]=_[_0x0ccb('0x3f')](_0x260d9b[_0x0ccb('0x34')],{'$or':_[_0x0ccb('0x28')](_0x260d9b[_0x0ccb('0x2f')],function(_0x1e76ac){var _0x4477fe={};_0x4477fe[_0x1e76ac]={'$like':'%'+_0x18fcbf[_0x0ccb('0x2c')][_0x0ccb('0x35')]+'%'};return _0x4477fe;})});}_0x260d9b=_['merge']({},_0x260d9b,_0x18fcbf[_0x0ccb('0x40')]);return _0x3352d9[_0x0ccb('0x45')](_0x260d9b);}})[_0x0ccb('0x24')](function(_0x44d4bf){if(_0x44d4bf){_0xc040d9=_0x44d4bf[_0x0ccb('0x48')];if(!_0x18fcbf['query'][_0x0ccb('0x30')](_0x0ccb('0x31'))){_0x260d9b[_0x0ccb('0x1d')]=qs[_0x0ccb('0x1d')](_0x18fcbf[_0x0ccb('0x2c')][_0x0ccb('0x1d')]);_0x260d9b['offset']=qs[_0x0ccb('0x1f')](_0x18fcbf[_0x0ccb('0x2c')]['offset']);}return _0x3352d9[_0x0ccb('0x45')](_0x260d9b);}})['then'](function(_0x59b417){if(_0x59b417){return _0x59b417?{'count':_0xc040d9,'rows':_0x59b417}:null;}})[_0x0ccb('0x24')](respondWithResult(_0x3b2a5d,null))[_0x0ccb('0x41')](handleError(_0x3b2a5d,null));};exports[_0x0ccb('0x49')]=function(_0x40c2d2,_0x5340fb,_0x2d2209){var _0x1495f9={};var _0x2d3dcc={};var _0x12315c;var _0xf4a315;return db[_0x0ccb('0x29')][_0x0ccb('0x46')]({'where':{'id':_0x40c2d2[_0x0ccb('0x3b')]['id']}})[_0x0ccb('0x24')](handleEntityNotFound(_0x5340fb,null))['then'](function(_0x28b229){if(_0x28b229){_0x12315c=_0x28b229;_0x2d3dcc['model']=_[_0x0ccb('0x3c')](db[_0x0ccb('0x47')][_0x0ccb('0x3d')]);_0x2d3dcc[_0x0ccb('0x2c')]=_[_0x0ccb('0x3c')](_0x40c2d2['query']);_0x2d3dcc[_0x0ccb('0x2d')]=_[_0x0ccb('0x2e')](_0x2d3dcc[_0x0ccb('0x2b')],_0x2d3dcc[_0x0ccb('0x2c')]);_0x1495f9[_0x0ccb('0x2f')]=_[_0x0ccb('0x2e')](_0x2d3dcc[_0x0ccb('0x2b')],qs['fields'](_0x40c2d2[_0x0ccb('0x2c')][_0x0ccb('0x3e')]));_0x1495f9[_0x0ccb('0x2f')]=_0x1495f9[_0x0ccb('0x2f')][_0x0ccb('0x48')]?_0x1495f9['attributes']:_0x2d3dcc[_0x0ccb('0x2b')];_0x1495f9[_0x0ccb('0x32')]=qs['sort'](_0x40c2d2[_0x0ccb('0x2c')][_0x0ccb('0x33')]);_0x1495f9[_0x0ccb('0x34')]=qs[_0x0ccb('0x2d')](_['pick'](_0x40c2d2[_0x0ccb('0x2c')],_0x2d3dcc[_0x0ccb('0x2d')]));if(_0x40c2d2[_0x0ccb('0x2c')][_0x0ccb('0x35')]){_0x1495f9[_0x0ccb('0x34')]=_[_0x0ccb('0x3f')](_0x1495f9[_0x0ccb('0x34')],{'$or':_[_0x0ccb('0x28')](_0x1495f9[_0x0ccb('0x2f')],function(_0x4c0ccd){var _0x508a85={};_0x508a85[_0x4c0ccd]={'$like':'%'+_0x40c2d2['query']['filter']+'%'};return _0x508a85;})});}_0x1495f9=_[_0x0ccb('0x3f')]({},_0x1495f9,_0x40c2d2[_0x0ccb('0x40')]);return _0x12315c[_0x0ccb('0x49')](_0x1495f9);}})[_0x0ccb('0x24')](function(_0x2c21c1){if(_0x2c21c1){_0xf4a315=_0x2c21c1[_0x0ccb('0x48')];if(!_0x40c2d2[_0x0ccb('0x2c')]['hasOwnProperty'](_0x0ccb('0x31'))){_0x1495f9[_0x0ccb('0x1d')]=qs[_0x0ccb('0x1d')](_0x40c2d2['query']['limit']);_0x1495f9['offset']=qs[_0x0ccb('0x1f')](_0x40c2d2['query'][_0x0ccb('0x1f')]);}return _0x12315c[_0x0ccb('0x49')](_0x1495f9);}})[_0x0ccb('0x24')](function(_0x198875){if(_0x198875){return _0x198875?{'count':_0xf4a315,'rows':_0x198875}:null;}})[_0x0ccb('0x24')](respondWithResult(_0x5340fb,null))['catch'](handleError(_0x5340fb,null));};exports[_0x0ccb('0x4a')]=function(_0xbd5e46,_0x5ce685,_0x3cc8cd){var _0x1ce96d={};var _0x1c626a={};var _0x35cfb7;var _0x5216ed;return db[_0x0ccb('0x29')]['findOne']({'where':{'id':_0xbd5e46['params']['id']}})[_0x0ccb('0x24')](handleEntityNotFound(_0x5ce685,null))[_0x0ccb('0x24')](function(_0x1afb30){if(_0x1afb30){_0x35cfb7=_0x1afb30;_0x1c626a['model']=_[_0x0ccb('0x3c')](db[_0x0ccb('0x47')][_0x0ccb('0x3d')]);_0x1c626a[_0x0ccb('0x2c')]=_[_0x0ccb('0x3c')](_0xbd5e46[_0x0ccb('0x2c')]);_0x1c626a['filters']=_[_0x0ccb('0x2e')](_0x1c626a[_0x0ccb('0x2b')],_0x1c626a[_0x0ccb('0x2c')]);_0x1ce96d[_0x0ccb('0x2f')]=_['intersection'](_0x1c626a['model'],qs['fields'](_0xbd5e46['query']['fields']));_0x1ce96d[_0x0ccb('0x2f')]=_0x1ce96d[_0x0ccb('0x2f')][_0x0ccb('0x48')]?_0x1ce96d[_0x0ccb('0x2f')]:_0x1c626a[_0x0ccb('0x2b')];_0x1ce96d[_0x0ccb('0x32')]=qs[_0x0ccb('0x33')](_0xbd5e46[_0x0ccb('0x2c')]['sort']);_0x1ce96d[_0x0ccb('0x34')]=qs[_0x0ccb('0x2d')](_[_0x0ccb('0x4b')](_0xbd5e46[_0x0ccb('0x2c')],_0x1c626a[_0x0ccb('0x2d')]));if(_0xbd5e46['query'][_0x0ccb('0x35')]){_0x1ce96d[_0x0ccb('0x34')]=_[_0x0ccb('0x3f')](_0x1ce96d['where'],{'$or':_['map'](_0x1ce96d[_0x0ccb('0x2f')],function(_0x40be49){var _0x1b9013={};_0x1b9013[_0x40be49]={'$like':'%'+_0xbd5e46[_0x0ccb('0x2c')][_0x0ccb('0x35')]+'%'};return _0x1b9013;})});}_0x1ce96d=_[_0x0ccb('0x3f')]({},_0x1ce96d,_0xbd5e46['options']);return _0x35cfb7[_0x0ccb('0x4a')](_0x1ce96d);}})[_0x0ccb('0x24')](function(_0x11a9f4){if(_0x11a9f4){_0x5216ed=_0x11a9f4['length'];if(!_0xbd5e46[_0x0ccb('0x2c')]['hasOwnProperty']('nolimit')){_0x1ce96d[_0x0ccb('0x1d')]=qs[_0x0ccb('0x1d')](_0xbd5e46[_0x0ccb('0x2c')][_0x0ccb('0x1d')]);_0x1ce96d[_0x0ccb('0x1f')]=qs[_0x0ccb('0x1f')](_0xbd5e46[_0x0ccb('0x2c')][_0x0ccb('0x1f')]);}return _0x35cfb7['getDescriptions'](_0x1ce96d);}})['then'](function(_0xd10159){if(_0xd10159){return _0xd10159?{'count':_0x5216ed,'rows':_0xd10159}:null;}})[_0x0ccb('0x24')](respondWithResult(_0x5ce685,null))[_0x0ccb('0x41')](handleError(_0x5ce685,null));};
\ No newline at end of file
index d326a69..0b2eb83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68b7=['request-promise','path','rimraf','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations','lodash','../../config/logger','api','moment'];(function(_0x19196a,_0x4c7f3e){var _0x4c196d=function(_0xf4cf49){while(--_0xf4cf49){_0x19196a['push'](_0x19196a['shift']());}};_0x4c196d(++_0x4c7f3e);}(_0x68b7,0x8c));var _0x768b=function(_0x27c3bc,_0x54632d){_0x27c3bc=_0x27c3bc-0x0;var _0x2d756a=_0x68b7[_0x27c3bc];return _0x2d756a;};'use strict';var _=require(_0x768b('0x0'));var util=require('util');var logger=require(_0x768b('0x1'))(_0x768b('0x2'));var moment=require(_0x768b('0x3'));var BPromise=require('bluebird');var rp=require(_0x768b('0x4'));var fs=require('fs');var path=require(_0x768b('0x5'));var rimraf=require(_0x768b('0x6'));var config=require('../../config/environment');var attributes=require(_0x768b('0x7'));module[_0x768b('0x8')]=function(_0x18aaaa,_0x31aba4){return _0x18aaaa[_0x768b('0x9')](_0x768b('0xa'),attributes,{'tableName':_0x768b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb4e2=['exports','ServicenowConfiguration','int_servicenow_configurations','lodash','api','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xb4e2,0x1aa));var _0x2b4e=function(_0x598e83,_0x2d7111){_0x598e83=_0x598e83-0x0;var _0x4cf40b=_0xb4e2[_0x598e83];return _0x4cf40b;};'use strict';var _=require(_0x2b4e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2b4e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2b4e('0x2'));var rimraf=require(_0x2b4e('0x3'));var config=require(_0x2b4e('0x4'));var attributes=require(_0x2b4e('0x5'));module[_0x2b4e('0x6')]=function(_0x1a77ed,_0x10f028){return _0x1a77ed['define'](_0x2b4e('0x7'),attributes,{'tableName':_0x2b4e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 46a3d6a..c57efcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafca=['http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x3a7a34,_0x4b8cd5){var _0x371b54=function(_0x275439){while(--_0x275439){_0x3a7a34['push'](_0x3a7a34['shift']());}};_0x371b54(++_0x4b8cd5);}(_0xafca,0x1ef));var _0xaafc=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xafca[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xaafc('0x0'));var util=require('util');var moment=require(_0xaafc('0x1'));var BPromise=require(_0xaafc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaafc('0x3'))['db'];var utils=require(_0xaafc('0x4'));var logger=require(_0xaafc('0x5'))(_0xaafc('0x6'));var config=require(_0xaafc('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xaafc('0x8')][_0xaafc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x978cf0,_0x29d3ec,_0x83ea82){return new BPromise(function(_0x2cf865,_0xd953fb){return client[_0xaafc('0xa')](_0x978cf0,_0x83ea82)[_0xaafc('0xb')](function(_0x318181){logger[_0xaafc('0xc')](_0xaafc('0xd'),_0x29d3ec,'request\x20sent');logger['debug'](_0xaafc('0xe'),_0x29d3ec,'request\x20sent',JSON[_0xaafc('0xf')](_0x318181));if(_0x318181['error']){if(_0x318181[_0xaafc('0x10')]['code']===0x1f4){logger[_0xaafc('0x10')](_0xaafc('0xd'),_0x29d3ec,_0x318181[_0xaafc('0x10')][_0xaafc('0x11')]);return _0xd953fb(_0x318181[_0xaafc('0x10')][_0xaafc('0x11')]);}logger[_0xaafc('0x10')](_0xaafc('0xd'),_0x29d3ec,_0x318181[_0xaafc('0x10')][_0xaafc('0x11')]);return _0x2cf865(_0x318181[_0xaafc('0x10')]['message']);}else{logger[_0xaafc('0xc')](_0xaafc('0xd'),_0x29d3ec,_0xaafc('0x12'));_0x2cf865(_0x318181[_0xaafc('0x13')][_0xaafc('0x11')]);}})[_0xaafc('0x14')](function(_0x1f46e8){logger[_0xaafc('0x10')](_0xaafc('0xd'),_0x29d3ec,_0x1f46e8);_0xd953fb(_0x1f46e8);});});}
\ No newline at end of file
+var _0x3fdb=['code','message','info','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','then','ServicenowConfiguration,\x20%s,\x20%s','debug','request\x20sent','stringify','error'];(function(_0x377d47,_0x3d5e9a){var _0x289c2f=function(_0xc78e4f){while(--_0xc78e4f){_0x377d47['push'](_0x377d47['shift']());}};_0x289c2f(++_0x3d5e9a);}(_0x3fdb,0x89));var _0xb3fd=function(_0x493fa8,_0x40cf07){_0x493fa8=_0x493fa8-0x0;var _0x48bf1b=_0x3fdb[_0x493fa8];return _0x48bf1b;};'use strict';var _=require(_0xb3fd('0x0'));var util=require(_0xb3fd('0x1'));var moment=require(_0xb3fd('0x2'));var BPromise=require(_0xb3fd('0x3'));var rs=require(_0xb3fd('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb3fd('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb3fd('0x6'));var config=require(_0xb3fd('0x7'));var jayson=require(_0xb3fd('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1b414e,_0x2f81f8,_0x206967){return new BPromise(function(_0x1c6f5f,_0xdd00ed){return client['request'](_0x1b414e,_0x206967)[_0xb3fd('0x9')](function(_0x163d61){logger['info'](_0xb3fd('0xa'),_0x2f81f8,'request\x20sent');logger[_0xb3fd('0xb')]('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x2f81f8,_0xb3fd('0xc'),JSON[_0xb3fd('0xd')](_0x163d61));if(_0x163d61['error']){if(_0x163d61[_0xb3fd('0xe')][_0xb3fd('0xf')]===0x1f4){logger['error'](_0xb3fd('0xa'),_0x2f81f8,_0x163d61[_0xb3fd('0xe')][_0xb3fd('0x10')]);return _0xdd00ed(_0x163d61[_0xb3fd('0xe')][_0xb3fd('0x10')]);}logger[_0xb3fd('0xe')](_0xb3fd('0xa'),_0x2f81f8,_0x163d61[_0xb3fd('0xe')]['message']);return _0x1c6f5f(_0x163d61['error'][_0xb3fd('0x10')]);}else{logger[_0xb3fd('0x11')](_0xb3fd('0xa'),_0x2f81f8,_0xb3fd('0xc'));_0x1c6f5f(_0x163d61[_0xb3fd('0x12')][_0xb3fd('0x10')]);}})['catch'](function(_0x227a66){logger[_0xb3fd('0xe')]('ServicenowConfiguration,\x20%s,\x20%s',_0x2f81f8,_0x227a66);_0xdd00ed(_0x227a66);});});}
\ No newline at end of file
index d973246..cf8ae0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30a8=['index','get','/:id','show','post','put','update','delete','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','isAuthenticated'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x30a8,0x171));var _0x830a=function(_0x1e6ab8,_0x216121){_0x1e6ab8=_0x1e6ab8-0x0;var _0x4a3c76=_0x30a8[_0x1e6ab8];return _0x4a3c76;};'use strict';var multer=require(_0x830a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x830a('0x1'));var express=require(_0x830a('0x2'));var router=express[_0x830a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x830a('0x4'));var interaction=require(_0x830a('0x5'));var config=require(_0x830a('0x6'));var controller=require(_0x830a('0x7'));router['get']('/',auth[_0x830a('0x8')](),controller[_0x830a('0x9')]);router[_0x830a('0xa')](_0x830a('0xb'),auth['isAuthenticated'](),controller[_0x830a('0xc')]);router[_0x830a('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x830a('0xe')](_0x830a('0xb'),auth[_0x830a('0x8')](),controller[_0x830a('0xf')]);router[_0x830a('0x10')](_0x830a('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x830a('0x11')]=router;
\ No newline at end of file
+var _0x0389=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intServicenowField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','exports','multer','util','express'];(function(_0x20c1dd,_0xe514b8){var _0x408aaa=function(_0xe648db){while(--_0xe648db){_0x20c1dd['push'](_0x20c1dd['shift']());}};_0x408aaa(++_0xe514b8);}(_0x0389,0x153));var _0x9038=function(_0x5d5bcb,_0x25e2ea){_0x5d5bcb=_0x5d5bcb-0x0;var _0x4ea5eb=_0x0389[_0x5d5bcb];return _0x4ea5eb;};'use strict';var multer=require(_0x9038('0x0'));var util=require(_0x9038('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9038('0x2'));var router=express[_0x9038('0x3')]();var fs_extra=require(_0x9038('0x4'));var auth=require(_0x9038('0x5'));var interaction=require(_0x9038('0x6'));var config=require('../../config/environment');var controller=require(_0x9038('0x7'));router[_0x9038('0x8')]('/',auth[_0x9038('0x9')](),controller[_0x9038('0xa')]);router[_0x9038('0x8')](_0x9038('0xb'),auth[_0x9038('0x9')](),controller[_0x9038('0xc')]);router[_0x9038('0xd')]('/',auth['isAuthenticated'](),controller[_0x9038('0xe')]);router[_0x9038('0xf')](_0x9038('0xb'),auth['isAuthenticated'](),controller[_0x9038('0x10')]);router['delete'](_0x9038('0xb'),auth[_0x9038('0x9')](),controller['destroy']);module[_0x9038('0x11')]=router;
\ No newline at end of file
index 4131ffc..7d89f44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb24=['customVariable','keyValue','picklist','STRING','variable','BOOLEAN','exports','ENUM','string'];(function(_0x572743,_0x2cc13c){var _0x3abb61=function(_0x47d6fb){while(--_0x47d6fb){_0x572743['push'](_0x572743['shift']());}};_0x3abb61(++_0x2cc13c);}(_0xcb24,0xb1));var _0x4cb2=function(_0x26ad08,_0x784432){_0x26ad08=_0x26ad08-0x0;var _0xfeebfb=_0xcb24[_0x26ad08];return _0xfeebfb;};'use strict';var Sequelize=require('sequelize');module[_0x4cb2('0x0')]={'type':{'type':Sequelize[_0x4cb2('0x1')](_0x4cb2('0x2'),'variable',_0x4cb2('0x3'),_0x4cb2('0x4'),_0x4cb2('0x5')),'defaultValue':_0x4cb2('0x2')},'content':{'type':Sequelize[_0x4cb2('0x6')]},'key':{'type':Sequelize[_0x4cb2('0x6')]},'keyType':{'type':Sequelize[_0x4cb2('0x1')](_0x4cb2('0x2'),_0x4cb2('0x7'),'customVariable')},'keyContent':{'type':Sequelize[_0x4cb2('0x6')]},'idField':{'type':Sequelize[_0x4cb2('0x6')]},'nameField':{'type':Sequelize[_0x4cb2('0x6')]},'customField':{'type':Sequelize[_0x4cb2('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4cb2('0x6')]}};
\ No newline at end of file
+var _0x55a7=['STRING','variable','customVariable','BOOLEAN','ENUM','string','keyValue','picklist'];(function(_0x133f81,_0x550e62){var _0x2eef30=function(_0x48e9bf){while(--_0x48e9bf){_0x133f81['push'](_0x133f81['shift']());}};_0x2eef30(++_0x550e62);}(_0x55a7,0x1bc));var _0x755a=function(_0x38edb8,_0x1af82e){_0x38edb8=_0x38edb8-0x0;var _0x3a11dc=_0x55a7[_0x38edb8];return _0x3a11dc;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x755a('0x0')](_0x755a('0x1'),'variable','customVariable',_0x755a('0x2'),_0x755a('0x3')),'defaultValue':_0x755a('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x755a('0x4')]},'keyType':{'type':Sequelize[_0x755a('0x0')](_0x755a('0x1'),_0x755a('0x5'),_0x755a('0x6'))},'keyContent':{'type':Sequelize[_0x755a('0x4')]},'idField':{'type':Sequelize[_0x755a('0x4')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x755a('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x755a('0x4')]}};
\ No newline at end of file
index fcf54ab..101e04c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15df=['nolimit','order','sort','filters','filter','where','VIRTUAL','ServicenowField','include','findAll','rows','catch','params','includeAll','merge','options','find','create','body','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x15df,0xa9));var _0xf15d=function(_0x12f1ed,_0x6588f5){_0x12f1ed=_0x12f1ed-0x0;var _0x10c1bb=_0x15df[_0x12f1ed];return _0x10c1bb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf15d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf15d('0x1'));var rp=require('request-promise');var moment=require(_0xf15d('0x2'));var BPromise=require(_0xf15d('0x3'));var Mustache=require(_0xf15d('0x4'));var util=require(_0xf15d('0x5'));var path=require(_0xf15d('0x6'));var sox=require(_0xf15d('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf15d('0x8'));var _=require(_0xf15d('0x9'));var squel=require(_0xf15d('0xa'));var crypto=require('crypto');var jsforce=require(_0xf15d('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xf15d('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf15d('0xd'));var authService=require(_0xf15d('0xe'));var qs=require(_0xf15d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf15d('0x10'));var logger=require(_0xf15d('0x11'))(_0xf15d('0x12'));var utils=require(_0xf15d('0x13'));var config=require(_0xf15d('0x14'));var licenseUtil=require(_0xf15d('0x15'));var db=require(_0xf15d('0x16'))['db'];function respondWithStatusCode(_0x20c85d,_0x17f078){_0x17f078=_0x17f078||0xcc;return function(_0x4abec9){if(_0x4abec9){return _0x20c85d[_0xf15d('0x17')](_0x17f078);}return _0x20c85d[_0xf15d('0x18')](_0x17f078)[_0xf15d('0x19')]();};}function respondWithResult(_0x29258a,_0x54f37d){_0x54f37d=_0x54f37d||0xc8;return function(_0x2bb603){if(_0x2bb603){return _0x29258a['status'](_0x54f37d)['json'](_0x2bb603);}};}function respondWithFilteredResult(_0x569703,_0xb01775){return function(_0x363d4f){if(_0x363d4f){var _0xbc86c=typeof _0xb01775[_0xf15d('0x1a')]===_0xf15d('0x1b')&&typeof _0xb01775[_0xf15d('0x1c')]===_0xf15d('0x1b');var _0x4ada27=_0x363d4f[_0xf15d('0x1d')];var _0x278080=_0xbc86c?0x0:_0xb01775[_0xf15d('0x1a')];var _0x3fc3b3=_0xbc86c?_0x363d4f[_0xf15d('0x1d')]:_0xb01775['offset']+_0xb01775['limit'];var _0x35ba91;if(_0x3fc3b3>=_0x4ada27){_0x3fc3b3=_0x4ada27;_0x35ba91=0xc8;}else{_0x35ba91=0xce;}_0x569703[_0xf15d('0x18')](_0x35ba91);return _0x569703['set'](_0xf15d('0x1e'),_0x278080+'-'+_0x3fc3b3+'/'+_0x4ada27)[_0xf15d('0x1f')](_0x363d4f);}return null;};}function patchUpdates(_0x46bcc8){return function(_0x4a67c8){try{jsonpatch[_0xf15d('0x20')](_0x4a67c8,_0x46bcc8,!![]);}catch(_0x19c9cc){return BPromise[_0xf15d('0x21')](_0x19c9cc);}return _0x4a67c8[_0xf15d('0x22')]();};}function saveUpdates(_0x3b8761,_0x13af6d){return function(_0x4917e7){if(_0x4917e7){return _0x4917e7[_0xf15d('0x23')](_0x3b8761)[_0xf15d('0x24')](function(_0x36ae54){return _0x36ae54;});}return null;};}function removeEntity(_0x56450e,_0x5558e6){return function(_0x2a04ca){if(_0x2a04ca){return _0x2a04ca[_0xf15d('0x25')]()[_0xf15d('0x24')](function(){_0x56450e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5cfb6d,_0x577cd7){return function(_0x49768f){if(!_0x49768f){_0x5cfb6d[_0xf15d('0x17')](0x194);}return _0x49768f;};}function handleError(_0x4be581,_0x25ee8e){_0x25ee8e=_0x25ee8e||0x1f4;return function(_0x31df39){logger[_0xf15d('0x26')](_0x31df39[_0xf15d('0x27')]);if(_0x31df39[_0xf15d('0x28')]){delete _0x31df39[_0xf15d('0x28')];}_0x4be581['status'](_0x25ee8e)[_0xf15d('0x29')](_0x31df39);};}exports[_0xf15d('0x2a')]=function(_0xf72a92,_0x1506e2){var _0x2227ce={},_0x464201={},_0x82698c={'count':0x0,'rows':[]};var _0x18c179=_[_0xf15d('0x2b')](db['ServicenowField'][_0xf15d('0x2c')],function(_0x34c2be){return{'name':_0x34c2be[_0xf15d('0x2d')],'type':_0x34c2be[_0xf15d('0x2e')][_0xf15d('0x2f')]};});_0x464201[_0xf15d('0x30')]=_[_0xf15d('0x2b')](_0x18c179,_0xf15d('0x28'));_0x464201['query']=_[_0xf15d('0x31')](_0xf72a92[_0xf15d('0x32')]);_0x464201['filters']=_[_0xf15d('0x33')](_0x464201[_0xf15d('0x30')],_0x464201[_0xf15d('0x32')]);_0x2227ce[_0xf15d('0x34')]=_[_0xf15d('0x33')](_0x464201['model'],qs[_0xf15d('0x35')](_0xf72a92[_0xf15d('0x32')][_0xf15d('0x35')]));_0x2227ce['attributes']=_0x2227ce['attributes'][_0xf15d('0x36')]?_0x2227ce[_0xf15d('0x34')]:_0x464201[_0xf15d('0x30')];if(!_0xf72a92['query'][_0xf15d('0x37')](_0xf15d('0x38'))){_0x2227ce['limit']=qs[_0xf15d('0x1c')](_0xf72a92[_0xf15d('0x32')]['limit']);_0x2227ce['offset']=qs[_0xf15d('0x1a')](_0xf72a92['query'][_0xf15d('0x1a')]);}_0x2227ce[_0xf15d('0x39')]=qs[_0xf15d('0x3a')](_0xf72a92[_0xf15d('0x32')][_0xf15d('0x3a')]);_0x2227ce['where']=qs['filters'](_['pick'](_0xf72a92['query'],_0x464201[_0xf15d('0x3b')]),_0x18c179);if(_0xf72a92['query'][_0xf15d('0x3c')]){_0x2227ce[_0xf15d('0x3d')]=_['merge'](_0x2227ce[_0xf15d('0x3d')],{'$or':_['map'](_0x18c179,function(_0x114cf9){if(_0x114cf9[_0xf15d('0x2e')]!==_0xf15d('0x3e')){var _0x40c2fc={};_0x40c2fc[_0x114cf9[_0xf15d('0x28')]]={'$like':'%'+_0xf72a92[_0xf15d('0x32')]['filter']+'%'};return _0x40c2fc;}})});}_0x2227ce=_['merge']({},_0x2227ce,_0xf72a92['options']);var _0x57ae62={'where':_0x2227ce[_0xf15d('0x3d')]};return db[_0xf15d('0x3f')][_0xf15d('0x1d')](_0x57ae62)[_0xf15d('0x24')](function(_0xdffde9){_0x82698c[_0xf15d('0x1d')]=_0xdffde9;if(_0xf72a92[_0xf15d('0x32')]['includeAll']){_0x2227ce[_0xf15d('0x40')]=[{'all':!![]}];}return db[_0xf15d('0x3f')][_0xf15d('0x41')](_0x2227ce);})[_0xf15d('0x24')](function(_0x16267e){_0x82698c[_0xf15d('0x42')]=_0x16267e;return _0x82698c;})[_0xf15d('0x24')](respondWithFilteredResult(_0x1506e2,_0x2227ce))[_0xf15d('0x43')](handleError(_0x1506e2,null));};exports['show']=function(_0x1dcb74,_0x12baae){var _0x149798={'raw':!![],'where':{'id':_0x1dcb74[_0xf15d('0x44')]['id']}},_0x23319e={};_0x23319e[_0xf15d('0x30')]=_[_0xf15d('0x31')](db['ServicenowField'][_0xf15d('0x2c')]);_0x23319e[_0xf15d('0x32')]=_[_0xf15d('0x31')](_0x1dcb74[_0xf15d('0x32')]);_0x23319e['filters']=_['intersection'](_0x23319e[_0xf15d('0x30')],_0x23319e[_0xf15d('0x32')]);_0x149798[_0xf15d('0x34')]=_['intersection'](_0x23319e[_0xf15d('0x30')],qs[_0xf15d('0x35')](_0x1dcb74['query'][_0xf15d('0x35')]));_0x149798[_0xf15d('0x34')]=_0x149798[_0xf15d('0x34')]['length']?_0x149798[_0xf15d('0x34')]:_0x23319e['model'];if(_0x1dcb74[_0xf15d('0x32')][_0xf15d('0x45')]){_0x149798[_0xf15d('0x40')]=[{'all':!![]}];}_0x149798=_[_0xf15d('0x46')]({},_0x149798,_0x1dcb74[_0xf15d('0x47')]);return db[_0xf15d('0x3f')][_0xf15d('0x48')](_0x149798)['then'](handleEntityNotFound(_0x12baae,null))[_0xf15d('0x24')](respondWithResult(_0x12baae,null))[_0xf15d('0x43')](handleError(_0x12baae,null));};exports[_0xf15d('0x49')]=function(_0x385663,_0x1b7576){return db['ServicenowField'][_0xf15d('0x49')](_0x385663[_0xf15d('0x4a')],{})['then'](respondWithResult(_0x1b7576,0xc9))['catch'](handleError(_0x1b7576,null));};exports[_0xf15d('0x23')]=function(_0x44ce2d,_0x22ff7b){if(_0x44ce2d[_0xf15d('0x4a')]['id']){delete _0x44ce2d[_0xf15d('0x4a')]['id'];}return db[_0xf15d('0x3f')][_0xf15d('0x48')]({'where':{'id':_0x44ce2d[_0xf15d('0x44')]['id']}})['then'](handleEntityNotFound(_0x22ff7b,null))[_0xf15d('0x24')](saveUpdates(_0x44ce2d[_0xf15d('0x4a')],null))[_0xf15d('0x24')](respondWithResult(_0x22ff7b,null))[_0xf15d('0x43')](handleError(_0x22ff7b,null));};exports[_0xf15d('0x25')]=function(_0x3acd20,_0x399096){return db[_0xf15d('0x3f')][_0xf15d('0x48')]({'where':{'id':_0x3acd20[_0xf15d('0x44')]['id']}})['then'](handleEntityNotFound(_0x399096,null))[_0xf15d('0x24')](removeEntity(_0x399096,null))['catch'](handleError(_0x399096,null));};
\ No newline at end of file
+var _0xc35b=['nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','show','params','keys','length','find','catch','create','body','eml-format','fast-json-patch','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','send','index','map','ServicenowField','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','hasOwnProperty'];(function(_0x1098db,_0x39ba6b){var _0x14f090=function(_0x473ffe){while(--_0x473ffe){_0x1098db['push'](_0x1098db['shift']());}};_0x14f090(++_0x39ba6b);}(_0xc35b,0xf4));var _0xbc35=function(_0x58dc25,_0x49b9d5){_0x58dc25=_0x58dc25-0x0;var _0x21b0a7=_0xc35b[_0x58dc25];return _0x21b0a7;};'use strict';var emlformat=require(_0xbc35('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xbc35('0x1'));var rp=require('request-promise');var moment=require(_0xbc35('0x2'));var BPromise=require(_0xbc35('0x3'));var Mustache=require('mustache');var util=require(_0xbc35('0x4'));var path=require(_0xbc35('0x5'));var sox=require(_0xbc35('0x6'));var csv=require(_0xbc35('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbc35('0x8'));var _=require(_0xbc35('0x9'));var squel=require(_0xbc35('0xa'));var crypto=require(_0xbc35('0xb'));var jsforce=require(_0xbc35('0xc'));var deskjs=require(_0xbc35('0xd'));var toCsv=require(_0xbc35('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbc35('0xe'));var authService=require(_0xbc35('0xf'));var qs=require(_0xbc35('0x10'));var as=require(_0xbc35('0x11'));var hardwareService=require(_0xbc35('0x12'));var logger=require(_0xbc35('0x13'))(_0xbc35('0x14'));var utils=require('../../config/utils');var config=require(_0xbc35('0x15'));var licenseUtil=require(_0xbc35('0x16'));var db=require(_0xbc35('0x17'))['db'];function respondWithStatusCode(_0x28bd1d,_0x212847){_0x212847=_0x212847||0xcc;return function(_0x4e9de0){if(_0x4e9de0){return _0x28bd1d[_0xbc35('0x18')](_0x212847);}return _0x28bd1d[_0xbc35('0x19')](_0x212847)['end']();};}function respondWithResult(_0x5e4c67,_0x5da71b){_0x5da71b=_0x5da71b||0xc8;return function(_0x4f8e49){if(_0x4f8e49){return _0x5e4c67['status'](_0x5da71b)[_0xbc35('0x1a')](_0x4f8e49);}};}function respondWithFilteredResult(_0x173023,_0x8475b3){return function(_0x418d09){if(_0x418d09){var _0x429fba=typeof _0x8475b3[_0xbc35('0x1b')]===_0xbc35('0x1c')&&typeof _0x8475b3['limit']===_0xbc35('0x1c');var _0x359ce9=_0x418d09[_0xbc35('0x1d')];var _0x333a63=_0x429fba?0x0:_0x8475b3[_0xbc35('0x1b')];var _0x378b3d=_0x429fba?_0x418d09['count']:_0x8475b3[_0xbc35('0x1b')]+_0x8475b3[_0xbc35('0x1e')];var _0xb3b803;if(_0x378b3d>=_0x359ce9){_0x378b3d=_0x359ce9;_0xb3b803=0xc8;}else{_0xb3b803=0xce;}_0x173023[_0xbc35('0x19')](_0xb3b803);return _0x173023[_0xbc35('0x1f')](_0xbc35('0x20'),_0x333a63+'-'+_0x378b3d+'/'+_0x359ce9)['json'](_0x418d09);}return null;};}function patchUpdates(_0x3eaa9b){return function(_0x242e82){try{jsonpatch['apply'](_0x242e82,_0x3eaa9b,!![]);}catch(_0x4f58f7){return BPromise[_0xbc35('0x21')](_0x4f58f7);}return _0x242e82[_0xbc35('0x22')]();};}function saveUpdates(_0x478a1d,_0x2a948c){return function(_0x5c8480){if(_0x5c8480){return _0x5c8480[_0xbc35('0x23')](_0x478a1d)[_0xbc35('0x24')](function(_0x4019dc){return _0x4019dc;});}return null;};}function removeEntity(_0x69d57,_0x375af2){return function(_0xa4c6dd){if(_0xa4c6dd){return _0xa4c6dd[_0xbc35('0x25')]()[_0xbc35('0x24')](function(){_0x69d57[_0xbc35('0x19')](0xcc)[_0xbc35('0x26')]();});}};}function handleEntityNotFound(_0x3cb307,_0x56ba8f){return function(_0x1a0348){if(!_0x1a0348){_0x3cb307[_0xbc35('0x18')](0x194);}return _0x1a0348;};}function handleError(_0x2972e0,_0x291467){_0x291467=_0x291467||0x1f4;return function(_0x46a269){logger[_0xbc35('0x27')](_0x46a269[_0xbc35('0x28')]);if(_0x46a269['name']){delete _0x46a269[_0xbc35('0x29')];}_0x2972e0[_0xbc35('0x19')](_0x291467)[_0xbc35('0x2a')](_0x46a269);};}exports[_0xbc35('0x2b')]=function(_0x206f6c,_0x2b88b8){var _0x521191={},_0x366689={},_0xc6fcef={'count':0x0,'rows':[]};var _0x3beef4=_[_0xbc35('0x2c')](db[_0xbc35('0x2d')][_0xbc35('0x2e')],function(_0x3dd38a){return{'name':_0x3dd38a[_0xbc35('0x2f')],'type':_0x3dd38a[_0xbc35('0x30')][_0xbc35('0x31')]};});_0x366689[_0xbc35('0x32')]=_[_0xbc35('0x2c')](_0x3beef4,_0xbc35('0x29'));_0x366689[_0xbc35('0x33')]=_['keys'](_0x206f6c['query']);_0x366689[_0xbc35('0x34')]=_['intersection'](_0x366689[_0xbc35('0x32')],_0x366689['query']);_0x521191['attributes']=_[_0xbc35('0x35')](_0x366689['model'],qs['fields'](_0x206f6c[_0xbc35('0x33')]['fields']));_0x521191[_0xbc35('0x36')]=_0x521191[_0xbc35('0x36')]['length']?_0x521191['attributes']:_0x366689['model'];if(!_0x206f6c['query'][_0xbc35('0x37')](_0xbc35('0x38'))){_0x521191[_0xbc35('0x1e')]=qs[_0xbc35('0x1e')](_0x206f6c[_0xbc35('0x33')][_0xbc35('0x1e')]);_0x521191['offset']=qs[_0xbc35('0x1b')](_0x206f6c[_0xbc35('0x33')]['offset']);}_0x521191[_0xbc35('0x39')]=qs[_0xbc35('0x3a')](_0x206f6c[_0xbc35('0x33')]['sort']);_0x521191[_0xbc35('0x3b')]=qs['filters'](_['pick'](_0x206f6c[_0xbc35('0x33')],_0x366689[_0xbc35('0x34')]),_0x3beef4);if(_0x206f6c['query'][_0xbc35('0x3c')]){_0x521191[_0xbc35('0x3b')]=_['merge'](_0x521191[_0xbc35('0x3b')],{'$or':_[_0xbc35('0x2c')](_0x3beef4,function(_0x3dea60){if(_0x3dea60[_0xbc35('0x30')]!=='VIRTUAL'){var _0x5974fa={};_0x5974fa[_0x3dea60[_0xbc35('0x29')]]={'$like':'%'+_0x206f6c['query'][_0xbc35('0x3c')]+'%'};return _0x5974fa;}})});}_0x521191=_[_0xbc35('0x3d')]({},_0x521191,_0x206f6c[_0xbc35('0x3e')]);var _0x2ba93f={'where':_0x521191[_0xbc35('0x3b')]};return db[_0xbc35('0x2d')][_0xbc35('0x1d')](_0x2ba93f)[_0xbc35('0x24')](function(_0x50ec4d){_0xc6fcef[_0xbc35('0x1d')]=_0x50ec4d;if(_0x206f6c[_0xbc35('0x33')][_0xbc35('0x3f')]){_0x521191[_0xbc35('0x40')]=[{'all':!![]}];}return db[_0xbc35('0x2d')][_0xbc35('0x41')](_0x521191);})[_0xbc35('0x24')](function(_0x29d896){_0xc6fcef[_0xbc35('0x42')]=_0x29d896;return _0xc6fcef;})[_0xbc35('0x24')](respondWithFilteredResult(_0x2b88b8,_0x521191))['catch'](handleError(_0x2b88b8,null));};exports[_0xbc35('0x43')]=function(_0x5d52de,_0x70b6e2){var _0x250d67={'raw':!![],'where':{'id':_0x5d52de[_0xbc35('0x44')]['id']}},_0x32e84b={};_0x32e84b[_0xbc35('0x32')]=_[_0xbc35('0x45')](db[_0xbc35('0x2d')][_0xbc35('0x2e')]);_0x32e84b['query']=_[_0xbc35('0x45')](_0x5d52de[_0xbc35('0x33')]);_0x32e84b[_0xbc35('0x34')]=_[_0xbc35('0x35')](_0x32e84b['model'],_0x32e84b['query']);_0x250d67['attributes']=_[_0xbc35('0x35')](_0x32e84b['model'],qs['fields'](_0x5d52de[_0xbc35('0x33')]['fields']));_0x250d67['attributes']=_0x250d67[_0xbc35('0x36')][_0xbc35('0x46')]?_0x250d67[_0xbc35('0x36')]:_0x32e84b['model'];if(_0x5d52de[_0xbc35('0x33')][_0xbc35('0x3f')]){_0x250d67[_0xbc35('0x40')]=[{'all':!![]}];}_0x250d67=_['merge']({},_0x250d67,_0x5d52de['options']);return db[_0xbc35('0x2d')][_0xbc35('0x47')](_0x250d67)[_0xbc35('0x24')](handleEntityNotFound(_0x70b6e2,null))[_0xbc35('0x24')](respondWithResult(_0x70b6e2,null))[_0xbc35('0x48')](handleError(_0x70b6e2,null));};exports[_0xbc35('0x49')]=function(_0x5650db,_0x490936){return db['ServicenowField'][_0xbc35('0x49')](_0x5650db[_0xbc35('0x4a')],{})['then'](respondWithResult(_0x490936,0xc9))[_0xbc35('0x48')](handleError(_0x490936,null));};exports[_0xbc35('0x23')]=function(_0x27fbe7,_0x5379a3){if(_0x27fbe7['body']['id']){delete _0x27fbe7['body']['id'];}return db[_0xbc35('0x2d')][_0xbc35('0x47')]({'where':{'id':_0x27fbe7['params']['id']}})[_0xbc35('0x24')](handleEntityNotFound(_0x5379a3,null))[_0xbc35('0x24')](saveUpdates(_0x27fbe7[_0xbc35('0x4a')],null))[_0xbc35('0x24')](respondWithResult(_0x5379a3,null))[_0xbc35('0x48')](handleError(_0x5379a3,null));};exports['destroy']=function(_0x5a161d,_0x57fdde){return db['ServicenowField']['find']({'where':{'id':_0x5a161d[_0xbc35('0x44')]['id']}})['then'](handleEntityNotFound(_0x57fdde,null))[_0xbc35('0x24')](removeEntity(_0x57fdde,null))[_0xbc35('0x48')](handleError(_0x57fdde,null));};
\ No newline at end of file
index e4a2a64..6d35d28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc99=['api','moment','bluebird','request-promise','rimraf','./intServicenowField.attributes','define','ServicenowField','servicenow_unique_index','idField','lodash','../../config/logger'];(function(_0xa71f02,_0x5c9690){var _0x19798a=function(_0x8b592c){while(--_0x8b592c){_0xa71f02['push'](_0xa71f02['shift']());}};_0x19798a(++_0x5c9690);}(_0xfc99,0x17e));var _0x9fc9=function(_0x5a1475,_0x417765){_0x5a1475=_0x5a1475-0x0;var _0x5430e7=_0xfc99[_0x5a1475];return _0x5430e7;};'use strict';var _=require(_0x9fc9('0x0'));var util=require('util');var logger=require(_0x9fc9('0x1'))(_0x9fc9('0x2'));var moment=require(_0x9fc9('0x3'));var BPromise=require(_0x9fc9('0x4'));var rp=require(_0x9fc9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9fc9('0x6'));var config=require('../../config/environment');var attributes=require(_0x9fc9('0x7'));module['exports']=function(_0x230198,_0x4386eb){return _0x230198[_0x9fc9('0x8')](_0x9fc9('0x9'),attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':_0x9fc9('0xa'),'fields':[_0x9fc9('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x068a=['request-promise','path','rimraf','./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','lodash','util','../../config/logger','moment','bluebird'];(function(_0x11b19b,_0x213234){var _0x1daac1=function(_0x516d3b){while(--_0x516d3b){_0x11b19b['push'](_0x11b19b['shift']());}};_0x1daac1(++_0x213234);}(_0x068a,0x1bd));var _0xa068=function(_0x15e345,_0x2c1e2a){_0x15e345=_0x15e345-0x0;var _0x1916cd=_0x068a[_0x15e345];return _0x1916cd;};'use strict';var _=require(_0xa068('0x0'));var util=require(_0xa068('0x1'));var logger=require(_0xa068('0x2'))('api');var moment=require(_0xa068('0x3'));var BPromise=require(_0xa068('0x4'));var rp=require(_0xa068('0x5'));var fs=require('fs');var path=require(_0xa068('0x6'));var rimraf=require(_0xa068('0x7'));var config=require('../../config/environment');var attributes=require(_0xa068('0x8'));module[_0xa068('0x9')]=function(_0x2452f4,_0x9afcd8){return _0x2452f4[_0xa068('0xa')](_0xa068('0xb'),attributes,{'tableName':_0xa068('0xc'),'paranoid':![],'indexes':[{'name':_0xa068('0xd'),'fields':[_0xa068('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1f23b10..f493e31 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(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0xda3f,0xec));var _0xfda3=function(_0x2f2226,_0x4ed27a){_0x2f2226=_0x2f2226-0x0;var _0x30eaee=_0xda3f[_0x2f2226];return _0x30eaee;};'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 _0xd8b0=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','ioredis'];(function(_0x4ac424,_0x554b5d){var _0xe1b890=function(_0x5e85c4){while(--_0x5e85c4){_0x4ac424['push'](_0x4ac424['shift']());}};_0xe1b890(++_0x554b5d);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'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 432f66d..3dfc487 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x4deff3,_0x2df052){var _0x507bfd=function(_0x4f72dd){while(--_0x4f72dd){_0x4deff3['push'](_0x4deff3['shift']());}};_0x507bfd(++_0x2df052);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x4c8d1c,_0x30b3b3){var _0x36bbdb=function(_0x856e78){while(--_0x856e78){_0x4c8d1c['push'](_0x4c8d1c['shift']());}};_0x36bbdb(++_0x30b3b3);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'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 7fd96b3..7a7148f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x1c225d,_0x2ac333){var _0x405f59=function(_0x3a31eb){while(--_0x3a31eb){_0x1c225d['push'](_0x1c225d['shift']());}};_0x405f59(++_0x2ac333);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'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(_0x5fa74d,_0x320f69){var _0x303222=function(_0x17d16d){while(--_0x17d16d){_0x5fa74d['push'](_0x5fa74d['shift']());}};_0x303222(++_0x320f69);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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 db90682..efc9c02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7d3=['getFields','assigned_user_id','created_by','date_start','duration_hours','duration_minutes','parent_type','direction','findOne','username','password','remoteUri','slice','substring','lastIndexOf','login','JSON','stringify','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','POST','format','/service/v4_1/rest.php','get_module_fields','Calls','values','remove','label','endsWith','value','test','statusCode','Wrong\x20credentials','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','name','send','index','map','SugarcrmAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','where','VIRTUAL','merge','options','includeAll','include','catch','show','params','length','find','create','body','destroy','getConfigurations','SugarcrmConfiguration','sort','filter','AccountId','getSubjects','Descriptions','channel','SugarcrmField','Subjects'];(function(_0x3820a8,_0x2a1fce){var _0x533cae=function(_0x15c4ce){while(--_0x15c4ce){_0x3820a8['push'](_0x3820a8['shift']());}};_0x533cae(++_0x2a1fce);}(_0xa7d3,0x1ea));var _0x3a7d=function(_0x2393c4,_0x22c157){_0x2393c4=_0x2393c4-0x0;var _0x31c7be=_0xa7d3[_0x2393c4];return _0x31c7be;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3a7d('0x0'));var rp=require(_0x3a7d('0x1'));var moment=require(_0x3a7d('0x2'));var BPromise=require(_0x3a7d('0x3'));var Mustache=require(_0x3a7d('0x4'));var util=require(_0x3a7d('0x5'));var path=require(_0x3a7d('0x6'));var sox=require(_0x3a7d('0x7'));var csv=require(_0x3a7d('0x8'));var ejs=require(_0x3a7d('0x9'));var fs=require('fs');var fs_extra=require(_0x3a7d('0xa'));var _=require(_0x3a7d('0xb'));var squel=require('squel');var crypto=require(_0x3a7d('0xc'));var jsforce=require(_0x3a7d('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x3a7d('0x8'));var querystring=require(_0x3a7d('0xe'));var Papa=require(_0x3a7d('0xf'));var Redis=require('ioredis');var authService=require(_0x3a7d('0x10'));var qs=require(_0x3a7d('0x11'));var as=require(_0x3a7d('0x12'));var hardwareService=require(_0x3a7d('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x3a7d('0x14'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x275b3f,_0x1aea43){_0x1aea43=_0x1aea43||0xcc;return function(_0x1fbcaa){if(_0x1fbcaa){return _0x275b3f[_0x3a7d('0x15')](_0x1aea43);}return _0x275b3f[_0x3a7d('0x16')](_0x1aea43)[_0x3a7d('0x17')]();};}function respondWithResult(_0x6772bf,_0x2b0381){_0x2b0381=_0x2b0381||0xc8;return function(_0x1e1bbb){if(_0x1e1bbb){return _0x6772bf[_0x3a7d('0x16')](_0x2b0381)[_0x3a7d('0x18')](_0x1e1bbb);}};}function respondWithFilteredResult(_0x4f5d1a,_0x3b118d){return function(_0x5be59f){if(_0x5be59f){var _0x3017bd=typeof _0x3b118d[_0x3a7d('0x19')]===_0x3a7d('0x1a')&&typeof _0x3b118d[_0x3a7d('0x1b')]===_0x3a7d('0x1a');var _0x1be67d=_0x5be59f[_0x3a7d('0x1c')];var _0x32e521=_0x3017bd?0x0:_0x3b118d[_0x3a7d('0x19')];var _0x25ab84=_0x3017bd?_0x5be59f['count']:_0x3b118d[_0x3a7d('0x19')]+_0x3b118d[_0x3a7d('0x1b')];var _0x39fd54;if(_0x25ab84>=_0x1be67d){_0x25ab84=_0x1be67d;_0x39fd54=0xc8;}else{_0x39fd54=0xce;}_0x4f5d1a[_0x3a7d('0x16')](_0x39fd54);return _0x4f5d1a[_0x3a7d('0x1d')](_0x3a7d('0x1e'),_0x32e521+'-'+_0x25ab84+'/'+_0x1be67d)[_0x3a7d('0x18')](_0x5be59f);}return null;};}function patchUpdates(_0x4ee28c){return function(_0x44d07f){try{jsonpatch[_0x3a7d('0x1f')](_0x44d07f,_0x4ee28c,!![]);}catch(_0x27bf1a){return BPromise[_0x3a7d('0x20')](_0x27bf1a);}return _0x44d07f[_0x3a7d('0x21')]();};}function saveUpdates(_0x278f05,_0xf1748c){return function(_0x2b2d15){if(_0x2b2d15){return _0x2b2d15[_0x3a7d('0x22')](_0x278f05)[_0x3a7d('0x23')](function(_0x550629){return _0x550629;});}return null;};}function removeEntity(_0x46bcc4,_0x6d0bff){return function(_0x381a7a){if(_0x381a7a){return _0x381a7a['destroy']()[_0x3a7d('0x23')](function(){_0x46bcc4['status'](0xcc)[_0x3a7d('0x17')]();});}};}function handleEntityNotFound(_0x1146bb,_0x1b67ea){return function(_0x330350){if(!_0x330350){_0x1146bb[_0x3a7d('0x15')](0x194);}return _0x330350;};}function handleError(_0x20440a,_0x191cb8){_0x191cb8=_0x191cb8||0x1f4;return function(_0x219deb){logger[_0x3a7d('0x24')](_0x219deb['stack']);if(_0x219deb[_0x3a7d('0x25')]){delete _0x219deb[_0x3a7d('0x25')];}_0x20440a[_0x3a7d('0x16')](_0x191cb8)[_0x3a7d('0x26')](_0x219deb);};}exports[_0x3a7d('0x27')]=function(_0x353d22,_0x381181){var _0x336a59={},_0x2495de={},_0x2da02e={'count':0x0,'rows':[]};var _0x4c9341=_[_0x3a7d('0x28')](db[_0x3a7d('0x29')][_0x3a7d('0x2a')],function(_0x4bf481){return{'name':_0x4bf481[_0x3a7d('0x2b')],'type':_0x4bf481[_0x3a7d('0x2c')][_0x3a7d('0x2d')]};});_0x2495de['model']=_[_0x3a7d('0x28')](_0x4c9341,'name');_0x2495de[_0x3a7d('0x2e')]=_[_0x3a7d('0x2f')](_0x353d22['query']);_0x2495de[_0x3a7d('0x30')]=_[_0x3a7d('0x31')](_0x2495de[_0x3a7d('0x32')],_0x2495de[_0x3a7d('0x2e')]);_0x336a59[_0x3a7d('0x33')]=_[_0x3a7d('0x31')](_0x2495de[_0x3a7d('0x32')],qs[_0x3a7d('0x34')](_0x353d22[_0x3a7d('0x2e')]['fields']));_0x336a59[_0x3a7d('0x33')]=_0x336a59[_0x3a7d('0x33')]['length']?_0x336a59[_0x3a7d('0x33')]:_0x2495de[_0x3a7d('0x32')];if(!_0x353d22['query'][_0x3a7d('0x35')](_0x3a7d('0x36'))){_0x336a59['limit']=qs[_0x3a7d('0x1b')](_0x353d22[_0x3a7d('0x2e')]['limit']);_0x336a59[_0x3a7d('0x19')]=qs[_0x3a7d('0x19')](_0x353d22[_0x3a7d('0x2e')][_0x3a7d('0x19')]);}_0x336a59[_0x3a7d('0x37')]=qs['sort'](_0x353d22[_0x3a7d('0x2e')]['sort']);_0x336a59[_0x3a7d('0x38')]=qs[_0x3a7d('0x30')](_['pick'](_0x353d22[_0x3a7d('0x2e')],_0x2495de['filters']),_0x4c9341);if(_0x353d22[_0x3a7d('0x2e')]['filter']){_0x336a59[_0x3a7d('0x38')]=_['merge'](_0x336a59[_0x3a7d('0x38')],{'$or':_[_0x3a7d('0x28')](_0x4c9341,function(_0x14635f){if(_0x14635f['type']!==_0x3a7d('0x39')){var _0x3835ba={};_0x3835ba[_0x14635f[_0x3a7d('0x25')]]={'$like':'%'+_0x353d22['query']['filter']+'%'};return _0x3835ba;}})});}_0x336a59=_[_0x3a7d('0x3a')]({},_0x336a59,_0x353d22[_0x3a7d('0x3b')]);var _0x3248f9={'where':_0x336a59[_0x3a7d('0x38')]};return db[_0x3a7d('0x29')]['count'](_0x3248f9)['then'](function(_0x5da1cb){_0x2da02e[_0x3a7d('0x1c')]=_0x5da1cb;if(_0x353d22[_0x3a7d('0x2e')][_0x3a7d('0x3c')]){_0x336a59[_0x3a7d('0x3d')]=[{'all':!![]}];}return db[_0x3a7d('0x29')]['findAll'](_0x336a59);})[_0x3a7d('0x23')](function(_0x689ae5){_0x2da02e['rows']=_0x689ae5;return _0x2da02e;})['then'](respondWithFilteredResult(_0x381181,_0x336a59))[_0x3a7d('0x3e')](handleError(_0x381181,null));};exports[_0x3a7d('0x3f')]=function(_0x4d8596,_0xd140a0){var _0x4711f1={'raw':![],'where':{'id':_0x4d8596[_0x3a7d('0x40')]['id']}},_0x2c7422={};_0x2c7422['model']=_[_0x3a7d('0x2f')](db['SugarcrmAccount'][_0x3a7d('0x2a')]);_0x2c7422[_0x3a7d('0x2e')]=_[_0x3a7d('0x2f')](_0x4d8596[_0x3a7d('0x2e')]);_0x2c7422[_0x3a7d('0x30')]=_[_0x3a7d('0x31')](_0x2c7422[_0x3a7d('0x32')],_0x2c7422[_0x3a7d('0x2e')]);_0x4711f1[_0x3a7d('0x33')]=_[_0x3a7d('0x31')](_0x2c7422[_0x3a7d('0x32')],qs['fields'](_0x4d8596['query'][_0x3a7d('0x34')]));_0x4711f1[_0x3a7d('0x33')]=_0x4711f1[_0x3a7d('0x33')][_0x3a7d('0x41')]?_0x4711f1[_0x3a7d('0x33')]:_0x2c7422['model'];if(_0x4d8596[_0x3a7d('0x2e')][_0x3a7d('0x3c')]){_0x4711f1[_0x3a7d('0x3d')]=[{'all':!![]}];}_0x4711f1=_[_0x3a7d('0x3a')]({},_0x4711f1,_0x4d8596[_0x3a7d('0x3b')]);return db[_0x3a7d('0x29')][_0x3a7d('0x42')](_0x4711f1)[_0x3a7d('0x23')](handleEntityNotFound(_0xd140a0,null))['then'](respondWithResult(_0xd140a0,null))[_0x3a7d('0x3e')](handleError(_0xd140a0,null));};exports[_0x3a7d('0x43')]=function(_0x3ef72e,_0x52b3f1){return db[_0x3a7d('0x29')]['create'](_0x3ef72e[_0x3a7d('0x44')],{})[_0x3a7d('0x23')](respondWithResult(_0x52b3f1,0xc9))['catch'](handleError(_0x52b3f1,null));};exports[_0x3a7d('0x22')]=function(_0x4b9fe6,_0x12a73e){if(_0x4b9fe6[_0x3a7d('0x44')]['id']){delete _0x4b9fe6[_0x3a7d('0x44')]['id'];}return db[_0x3a7d('0x29')][_0x3a7d('0x42')]({'where':{'id':_0x4b9fe6['params']['id']}})[_0x3a7d('0x23')](handleEntityNotFound(_0x12a73e,null))[_0x3a7d('0x23')](saveUpdates(_0x4b9fe6[_0x3a7d('0x44')],null))[_0x3a7d('0x23')](respondWithResult(_0x12a73e,null))[_0x3a7d('0x3e')](handleError(_0x12a73e,null));};exports[_0x3a7d('0x45')]=function(_0x2a9f29,_0xa70d33){return db['SugarcrmAccount'][_0x3a7d('0x42')]({'where':{'id':_0x2a9f29[_0x3a7d('0x40')]['id']}})[_0x3a7d('0x23')](handleEntityNotFound(_0xa70d33,null))[_0x3a7d('0x23')](removeEntity(_0xa70d33,null))[_0x3a7d('0x3e')](handleError(_0xa70d33,null));};exports[_0x3a7d('0x46')]=function(_0x2a8b44,_0xfd48bc,_0x306990){var _0x17a9d9={};var _0x7a2335={};var _0x98bc67;var _0xa8cd76;return db['SugarcrmAccount']['findOne']({'where':{'id':_0x2a8b44[_0x3a7d('0x40')]['id']}})['then'](handleEntityNotFound(_0xfd48bc,null))[_0x3a7d('0x23')](function(_0x47a963){if(_0x47a963){_0x98bc67=_0x47a963;_0x7a2335[_0x3a7d('0x32')]=_[_0x3a7d('0x2f')](db[_0x3a7d('0x47')][_0x3a7d('0x2a')]);_0x7a2335['query']=_[_0x3a7d('0x2f')](_0x2a8b44[_0x3a7d('0x2e')]);_0x7a2335['filters']=_[_0x3a7d('0x31')](_0x7a2335['model'],_0x7a2335[_0x3a7d('0x2e')]);_0x17a9d9[_0x3a7d('0x33')]=_['intersection'](_0x7a2335[_0x3a7d('0x32')],qs[_0x3a7d('0x34')](_0x2a8b44[_0x3a7d('0x2e')][_0x3a7d('0x34')]));_0x17a9d9[_0x3a7d('0x33')]=_0x17a9d9[_0x3a7d('0x33')]['length']?_0x17a9d9[_0x3a7d('0x33')]:_0x7a2335[_0x3a7d('0x32')];_0x17a9d9[_0x3a7d('0x37')]=qs[_0x3a7d('0x48')](_0x2a8b44[_0x3a7d('0x2e')]['sort']);_0x17a9d9[_0x3a7d('0x38')]=qs['filters'](_['pick'](_0x2a8b44[_0x3a7d('0x2e')],_0x7a2335[_0x3a7d('0x30')]));if(_0x2a8b44[_0x3a7d('0x2e')][_0x3a7d('0x49')]){_0x17a9d9[_0x3a7d('0x38')]=_[_0x3a7d('0x3a')](_0x17a9d9[_0x3a7d('0x38')],{'$or':_[_0x3a7d('0x28')](_0x17a9d9[_0x3a7d('0x33')],function(_0x24aba1){var _0x1b9056={};_0x1b9056[_0x24aba1]={'$like':'%'+_0x2a8b44[_0x3a7d('0x2e')]['filter']+'%'};return _0x1b9056;})});}_0x17a9d9=_[_0x3a7d('0x3a')]({},_0x17a9d9,_0x2a8b44[_0x3a7d('0x3b')]);return _0x98bc67['getConfigurations'](_0x17a9d9);}})[_0x3a7d('0x23')](function(_0x367bdc){if(_0x367bdc){_0xa8cd76=_0x367bdc[_0x3a7d('0x41')];if(!_0x2a8b44[_0x3a7d('0x2e')][_0x3a7d('0x35')](_0x3a7d('0x36'))){_0x17a9d9['limit']=qs[_0x3a7d('0x1b')](_0x2a8b44[_0x3a7d('0x2e')]['limit']);_0x17a9d9[_0x3a7d('0x19')]=qs['offset'](_0x2a8b44[_0x3a7d('0x2e')][_0x3a7d('0x19')]);}return _0x98bc67[_0x3a7d('0x46')](_0x17a9d9);}})[_0x3a7d('0x23')](function(_0x30d30f){if(_0x30d30f){return _0x30d30f?{'count':_0xa8cd76,'rows':_0x30d30f}:null;}})[_0x3a7d('0x23')](respondWithResult(_0xfd48bc,null))[_0x3a7d('0x3e')](handleError(_0xfd48bc,null));};exports['addConfiguration']=function(_0x8dc025,_0x78a210,_0x1f573f){if(_0x8dc025[_0x3a7d('0x44')]['id']){delete _0x8dc025[_0x3a7d('0x44')]['id'];}return db[_0x3a7d('0x29')]['findOne']({'where':{'id':_0x8dc025[_0x3a7d('0x40')]['id']}})[_0x3a7d('0x23')](handleEntityNotFound(_0x78a210,null))[_0x3a7d('0x23')](function(_0x28b7fd){if(_0x28b7fd){_0x8dc025['body'][_0x3a7d('0x4a')]=_0x28b7fd['id'];_0x8dc025[_0x3a7d('0x44')]['Subjects']=integrations[_0x3a7d('0x4b')](_0x8dc025[_0x3a7d('0x44')]['channel'],_0x8dc025[_0x3a7d('0x44')][_0x3a7d('0x2c')]);_0x8dc025[_0x3a7d('0x44')][_0x3a7d('0x4c')]=integrations['getDescriptions'](_0x8dc025[_0x3a7d('0x44')][_0x3a7d('0x4d')],_0x8dc025[_0x3a7d('0x44')][_0x3a7d('0x2c')]);return db['SugarcrmConfiguration'][_0x3a7d('0x43')](_0x8dc025[_0x3a7d('0x44')],{'include':[{'model':db[_0x3a7d('0x4e')],'as':_0x3a7d('0x4f')},{'model':db['SugarcrmField'],'as':_0x3a7d('0x4c')}]});}return null;})[_0x3a7d('0x23')](respondWithResult(_0x78a210,null))[_0x3a7d('0x3e')](handleError(_0x78a210,null));};exports[_0x3a7d('0x50')]=function(_0x432c59,_0x2df38c,_0x681521){var _0x1100cf='';var _0xe8ab66=['id','name',_0x3a7d('0x51'),_0x3a7d('0x52'),'description',_0x3a7d('0x53'),_0x3a7d('0x54'),_0x3a7d('0x55'),'parent_id',_0x3a7d('0x56'),'parent_name',_0x3a7d('0x57')];return db[_0x3a7d('0x29')][_0x3a7d('0x58')]({'where':{'id':_0x432c59[_0x3a7d('0x40')]['id']},'attributes':['id',_0x3a7d('0x59'),_0x3a7d('0x5a'),'remoteUri']})[_0x3a7d('0x23')](handleEntityNotFound(_0x2df38c,null))[_0x3a7d('0x23')](function(_0x7f18cd){if(_0x7f18cd){_0x1100cf=_0x7f18cd[_0x3a7d('0x5b')];var _0x3501ef=_0x1100cf[_0x3a7d('0x5c')](-0x1);if(_0x3501ef==='/'){_0x1100cf=_0x1100cf[_0x3a7d('0x5d')](0x0,_0x1100cf[_0x3a7d('0x5e')](_0x3501ef));}return rp({'method':'POST','uri':util['format']('%s%s',_0x1100cf,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x3a7d('0x5f'),'input_type':_0x3a7d('0x60'),'response_type':_0x3a7d('0x60'),'rest_data':JSON[_0x3a7d('0x61')]({'user_auth':{'user_name':_0x7f18cd[_0x3a7d('0x59')],'password':_0x7f18cd['password'],'encryption':_0x3a7d('0x62')},'application':_0x3a7d('0x63')})}});}})[_0x3a7d('0x23')](function(_0x2401f4){if(_0x2401f4&&_0x2401f4['name']!==_0x3a7d('0x64')&&_0x2401f4['name']!=='Password\x20Expired'){return rp({'method':_0x3a7d('0x65'),'uri':util[_0x3a7d('0x66')]('%s%s',_0x1100cf,_0x3a7d('0x67')),'json':!![],'form':{'method':_0x3a7d('0x68'),'input_type':_0x3a7d('0x60'),'response_type':_0x3a7d('0x60'),'rest_data':JSON[_0x3a7d('0x61')]({'session':_0x2401f4['id'],'module_name':_0x3a7d('0x69')})}})[_0x3a7d('0x23')](function(_0x217a44){if(_0x217a44){var _0x4279e8=_[_0x3a7d('0x6a')](_0x217a44['module_fields']);_[_0x3a7d('0x6b')](_0x4279e8,function(_0x4c0e79){return _0xe8ab66['includes'](_0x4c0e79[_0x3a7d('0x25')]);});return{'count':_0x4279e8[_0x3a7d('0x41')],'rows':_[_0x3a7d('0x28')](_0x4279e8,function(_0x45387c){return{'id':_0x45387c['name'],'name':_0x45387c[_0x3a7d('0x6c')],'custom':_[_0x3a7d('0x6d')](_0x45387c[_0x3a7d('0x25')],'_c')?!![]:![],'options':_0x45387c['options']?_['map'](_[_0x3a7d('0x6a')](_0x45387c['options']),function(_0xb55b08){return{'name':_0xb55b08[_0x3a7d('0x6e')],'value':_0xb55b08[_0x3a7d('0x25')]};}):[]};})};}})['then'](respondWithResult(_0x2df38c,null))['catch'](function(_0x1a6b59){var _0x43d23f=_0x432c59[_0x3a7d('0x2e')][_0x3a7d('0x6f')]?0x1f4:_0x1a6b59[_0x3a7d('0x70')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x3a7d('0x50'),_0x43d23f,JSON[_0x3a7d('0x61')](_0x1a6b59));delete _0x1a6b59[_0x3a7d('0x25')];if(_0x43d23f===0x191){_0x43d23f=0x190;}_0x2df38c['status'](_0x43d23f)[_0x3a7d('0x26')](_0x432c59[_0x3a7d('0x2e')][_0x3a7d('0x6f')]?{'message':_0x3a7d('0x71'),'statusCode':_0x1a6b59['statusCode']}:_0x1a6b59);});}else{var _0x54111a=0x1f4;_0x2df38c[_0x3a7d('0x16')](_0x54111a)[_0x3a7d('0x26')]({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
+var _0xa8fd=['options','includeAll','findAll','rows','catch','show','params','keys','find','create','body','destroy','getConfigurations','findOne','SugarcrmConfiguration','order','AccountId','Subjects','channel','getDescriptions','Descriptions','created_by','description','date_start','duration_hours','duration_minutes','parent_type','parent_name','username','password','remoteUri','slice','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','stringify','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','JSON','Calls','values','module_fields','remove','includes','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','update','then','error','name','index','map','SugarcrmAccount','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x163742,_0x467e36){var _0x1152ac=function(_0x40a83d){while(--_0x40a83d){_0x163742['push'](_0x163742['shift']());}};_0x1152ac(++_0x467e36);}(_0xa8fd,0x17a));var _0xda8f=function(_0x469b44,_0x48f739){_0x469b44=_0x469b44-0x0;var _0xeafc5e=_0xa8fd[_0x469b44];return _0xeafc5e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xda8f('0x0'));var zipdir=require(_0xda8f('0x1'));var jsonpatch=require(_0xda8f('0x2'));var rp=require(_0xda8f('0x3'));var moment=require(_0xda8f('0x4'));var BPromise=require(_0xda8f('0x5'));var Mustache=require(_0xda8f('0x6'));var util=require(_0xda8f('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xda8f('0x8'));var ejs=require(_0xda8f('0x9'));var fs=require('fs');var fs_extra=require(_0xda8f('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xda8f('0xb'));var toCsv=require(_0xda8f('0x8'));var querystring=require(_0xda8f('0xc'));var Papa=require('papaparse');var Redis=require(_0xda8f('0xd'));var authService=require(_0xda8f('0xe'));var qs=require(_0xda8f('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xda8f('0x10'))('api');var utils=require(_0xda8f('0x11'));var config=require(_0xda8f('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xda8f('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1e7969,_0x3bc5c2){_0x3bc5c2=_0x3bc5c2||0xcc;return function(_0x1b7972){if(_0x1b7972){return _0x1e7969[_0xda8f('0x14')](_0x3bc5c2);}return _0x1e7969[_0xda8f('0x15')](_0x3bc5c2)['end']();};}function respondWithResult(_0x203532,_0x524e82){_0x524e82=_0x524e82||0xc8;return function(_0x38b198){if(_0x38b198){return _0x203532['status'](_0x524e82)[_0xda8f('0x16')](_0x38b198);}};}function respondWithFilteredResult(_0x25eaed,_0x43ee2d){return function(_0x264488){if(_0x264488){var _0x9dba31=typeof _0x43ee2d[_0xda8f('0x17')]===_0xda8f('0x18')&&typeof _0x43ee2d[_0xda8f('0x19')]===_0xda8f('0x18');var _0x22bc5f=_0x264488[_0xda8f('0x1a')];var _0x5da974=_0x9dba31?0x0:_0x43ee2d[_0xda8f('0x17')];var _0x5eb4a4=_0x9dba31?_0x264488[_0xda8f('0x1a')]:_0x43ee2d[_0xda8f('0x17')]+_0x43ee2d[_0xda8f('0x19')];var _0x5d16bc;if(_0x5eb4a4>=_0x22bc5f){_0x5eb4a4=_0x22bc5f;_0x5d16bc=0xc8;}else{_0x5d16bc=0xce;}_0x25eaed['status'](_0x5d16bc);return _0x25eaed[_0xda8f('0x1b')]('Content-Range',_0x5da974+'-'+_0x5eb4a4+'/'+_0x22bc5f)[_0xda8f('0x16')](_0x264488);}return null;};}function patchUpdates(_0x261358){return function(_0x5f405d){try{jsonpatch[_0xda8f('0x1c')](_0x5f405d,_0x261358,!![]);}catch(_0x276065){return BPromise['reject'](_0x276065);}return _0x5f405d['save']();};}function saveUpdates(_0x243c9d,_0xf83a9){return function(_0x3bc92c){if(_0x3bc92c){return _0x3bc92c[_0xda8f('0x1d')](_0x243c9d)[_0xda8f('0x1e')](function(_0x3f709c){return _0x3f709c;});}return null;};}function removeEntity(_0x3c036a,_0x1acd2c){return function(_0x3d6c89){if(_0x3d6c89){return _0x3d6c89['destroy']()[_0xda8f('0x1e')](function(){_0x3c036a[_0xda8f('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2426af,_0x652829){return function(_0x275408){if(!_0x275408){_0x2426af['sendStatus'](0x194);}return _0x275408;};}function handleError(_0x1fdd4c,_0x26b08d){_0x26b08d=_0x26b08d||0x1f4;return function(_0x3789b7){logger[_0xda8f('0x1f')](_0x3789b7['stack']);if(_0x3789b7[_0xda8f('0x20')]){delete _0x3789b7[_0xda8f('0x20')];}_0x1fdd4c[_0xda8f('0x15')](_0x26b08d)['send'](_0x3789b7);};}exports[_0xda8f('0x21')]=function(_0x33b8b7,_0x57bba1){var _0x30682c={},_0x2dea16={},_0x287a9c={'count':0x0,'rows':[]};var _0xcc25ea=_[_0xda8f('0x22')](db[_0xda8f('0x23')][_0xda8f('0x24')],function(_0x4f7f5a){return{'name':_0x4f7f5a[_0xda8f('0x25')],'type':_0x4f7f5a[_0xda8f('0x26')]['key']};});_0x2dea16[_0xda8f('0x27')]=_[_0xda8f('0x22')](_0xcc25ea,'name');_0x2dea16[_0xda8f('0x28')]=_['keys'](_0x33b8b7[_0xda8f('0x28')]);_0x2dea16[_0xda8f('0x29')]=_[_0xda8f('0x2a')](_0x2dea16[_0xda8f('0x27')],_0x2dea16['query']);_0x30682c[_0xda8f('0x2b')]=_[_0xda8f('0x2a')](_0x2dea16[_0xda8f('0x27')],qs[_0xda8f('0x2c')](_0x33b8b7[_0xda8f('0x28')][_0xda8f('0x2c')]));_0x30682c['attributes']=_0x30682c[_0xda8f('0x2b')][_0xda8f('0x2d')]?_0x30682c[_0xda8f('0x2b')]:_0x2dea16[_0xda8f('0x27')];if(!_0x33b8b7['query'][_0xda8f('0x2e')](_0xda8f('0x2f'))){_0x30682c[_0xda8f('0x19')]=qs[_0xda8f('0x19')](_0x33b8b7[_0xda8f('0x28')][_0xda8f('0x19')]);_0x30682c[_0xda8f('0x17')]=qs[_0xda8f('0x17')](_0x33b8b7[_0xda8f('0x28')]['offset']);}_0x30682c['order']=qs[_0xda8f('0x30')](_0x33b8b7['query'][_0xda8f('0x30')]);_0x30682c[_0xda8f('0x31')]=qs['filters'](_[_0xda8f('0x32')](_0x33b8b7[_0xda8f('0x28')],_0x2dea16['filters']),_0xcc25ea);if(_0x33b8b7[_0xda8f('0x28')][_0xda8f('0x33')]){_0x30682c[_0xda8f('0x31')]=_[_0xda8f('0x34')](_0x30682c[_0xda8f('0x31')],{'$or':_['map'](_0xcc25ea,function(_0x558aea){if(_0x558aea['type']!==_0xda8f('0x35')){var _0x417e42={};_0x417e42[_0x558aea[_0xda8f('0x20')]]={'$like':'%'+_0x33b8b7[_0xda8f('0x28')]['filter']+'%'};return _0x417e42;}})});}_0x30682c=_[_0xda8f('0x34')]({},_0x30682c,_0x33b8b7[_0xda8f('0x36')]);var _0x83799a={'where':_0x30682c[_0xda8f('0x31')]};return db['SugarcrmAccount'][_0xda8f('0x1a')](_0x83799a)[_0xda8f('0x1e')](function(_0x402500){_0x287a9c[_0xda8f('0x1a')]=_0x402500;if(_0x33b8b7[_0xda8f('0x28')][_0xda8f('0x37')]){_0x30682c['include']=[{'all':!![]}];}return db['SugarcrmAccount'][_0xda8f('0x38')](_0x30682c);})[_0xda8f('0x1e')](function(_0x1a2618){_0x287a9c[_0xda8f('0x39')]=_0x1a2618;return _0x287a9c;})[_0xda8f('0x1e')](respondWithFilteredResult(_0x57bba1,_0x30682c))[_0xda8f('0x3a')](handleError(_0x57bba1,null));};exports[_0xda8f('0x3b')]=function(_0x1e45aa,_0x2021b6){var _0x5426b8={'raw':![],'where':{'id':_0x1e45aa[_0xda8f('0x3c')]['id']}},_0x1a5f7d={};_0x1a5f7d[_0xda8f('0x27')]=_[_0xda8f('0x3d')](db['SugarcrmAccount']['rawAttributes']);_0x1a5f7d[_0xda8f('0x28')]=_[_0xda8f('0x3d')](_0x1e45aa[_0xda8f('0x28')]);_0x1a5f7d['filters']=_[_0xda8f('0x2a')](_0x1a5f7d[_0xda8f('0x27')],_0x1a5f7d['query']);_0x5426b8[_0xda8f('0x2b')]=_[_0xda8f('0x2a')](_0x1a5f7d[_0xda8f('0x27')],qs[_0xda8f('0x2c')](_0x1e45aa[_0xda8f('0x28')][_0xda8f('0x2c')]));_0x5426b8[_0xda8f('0x2b')]=_0x5426b8['attributes'][_0xda8f('0x2d')]?_0x5426b8[_0xda8f('0x2b')]:_0x1a5f7d[_0xda8f('0x27')];if(_0x1e45aa[_0xda8f('0x28')]['includeAll']){_0x5426b8['include']=[{'all':!![]}];}_0x5426b8=_[_0xda8f('0x34')]({},_0x5426b8,_0x1e45aa['options']);return db[_0xda8f('0x23')][_0xda8f('0x3e')](_0x5426b8)[_0xda8f('0x1e')](handleEntityNotFound(_0x2021b6,null))['then'](respondWithResult(_0x2021b6,null))[_0xda8f('0x3a')](handleError(_0x2021b6,null));};exports[_0xda8f('0x3f')]=function(_0x14af57,_0x5021dd){return db['SugarcrmAccount'][_0xda8f('0x3f')](_0x14af57[_0xda8f('0x40')],{})['then'](respondWithResult(_0x5021dd,0xc9))[_0xda8f('0x3a')](handleError(_0x5021dd,null));};exports['update']=function(_0x3e820a,_0x2cecca){if(_0x3e820a[_0xda8f('0x40')]['id']){delete _0x3e820a[_0xda8f('0x40')]['id'];}return db[_0xda8f('0x23')]['find']({'where':{'id':_0x3e820a[_0xda8f('0x3c')]['id']}})[_0xda8f('0x1e')](handleEntityNotFound(_0x2cecca,null))['then'](saveUpdates(_0x3e820a[_0xda8f('0x40')],null))[_0xda8f('0x1e')](respondWithResult(_0x2cecca,null))[_0xda8f('0x3a')](handleError(_0x2cecca,null));};exports[_0xda8f('0x41')]=function(_0x349834,_0x1ed6d1){return db['SugarcrmAccount'][_0xda8f('0x3e')]({'where':{'id':_0x349834['params']['id']}})['then'](handleEntityNotFound(_0x1ed6d1,null))[_0xda8f('0x1e')](removeEntity(_0x1ed6d1,null))[_0xda8f('0x3a')](handleError(_0x1ed6d1,null));};exports[_0xda8f('0x42')]=function(_0x1c2ab8,_0x5aee2a,_0x2071bb){var _0x2a5bf2={};var _0xc91b40={};var _0x2b092b;var _0x240127;return db['SugarcrmAccount'][_0xda8f('0x43')]({'where':{'id':_0x1c2ab8['params']['id']}})['then'](handleEntityNotFound(_0x5aee2a,null))[_0xda8f('0x1e')](function(_0x395882){if(_0x395882){_0x2b092b=_0x395882;_0xc91b40[_0xda8f('0x27')]=_[_0xda8f('0x3d')](db[_0xda8f('0x44')][_0xda8f('0x24')]);_0xc91b40[_0xda8f('0x28')]=_[_0xda8f('0x3d')](_0x1c2ab8[_0xda8f('0x28')]);_0xc91b40[_0xda8f('0x29')]=_[_0xda8f('0x2a')](_0xc91b40['model'],_0xc91b40[_0xda8f('0x28')]);_0x2a5bf2[_0xda8f('0x2b')]=_[_0xda8f('0x2a')](_0xc91b40[_0xda8f('0x27')],qs['fields'](_0x1c2ab8[_0xda8f('0x28')][_0xda8f('0x2c')]));_0x2a5bf2[_0xda8f('0x2b')]=_0x2a5bf2[_0xda8f('0x2b')]['length']?_0x2a5bf2['attributes']:_0xc91b40[_0xda8f('0x27')];_0x2a5bf2[_0xda8f('0x45')]=qs[_0xda8f('0x30')](_0x1c2ab8['query']['sort']);_0x2a5bf2[_0xda8f('0x31')]=qs[_0xda8f('0x29')](_[_0xda8f('0x32')](_0x1c2ab8[_0xda8f('0x28')],_0xc91b40[_0xda8f('0x29')]));if(_0x1c2ab8[_0xda8f('0x28')]['filter']){_0x2a5bf2[_0xda8f('0x31')]=_[_0xda8f('0x34')](_0x2a5bf2[_0xda8f('0x31')],{'$or':_[_0xda8f('0x22')](_0x2a5bf2['attributes'],function(_0x193849){var _0x2d5cd1={};_0x2d5cd1[_0x193849]={'$like':'%'+_0x1c2ab8['query'][_0xda8f('0x33')]+'%'};return _0x2d5cd1;})});}_0x2a5bf2=_['merge']({},_0x2a5bf2,_0x1c2ab8['options']);return _0x2b092b['getConfigurations'](_0x2a5bf2);}})[_0xda8f('0x1e')](function(_0x25e998){if(_0x25e998){_0x240127=_0x25e998[_0xda8f('0x2d')];if(!_0x1c2ab8[_0xda8f('0x28')][_0xda8f('0x2e')](_0xda8f('0x2f'))){_0x2a5bf2['limit']=qs['limit'](_0x1c2ab8[_0xda8f('0x28')][_0xda8f('0x19')]);_0x2a5bf2['offset']=qs[_0xda8f('0x17')](_0x1c2ab8[_0xda8f('0x28')][_0xda8f('0x17')]);}return _0x2b092b[_0xda8f('0x42')](_0x2a5bf2);}})[_0xda8f('0x1e')](function(_0x63580e){if(_0x63580e){return _0x63580e?{'count':_0x240127,'rows':_0x63580e}:null;}})[_0xda8f('0x1e')](respondWithResult(_0x5aee2a,null))[_0xda8f('0x3a')](handleError(_0x5aee2a,null));};exports['addConfiguration']=function(_0x4ec9cf,_0x486c09,_0x4ddef9){if(_0x4ec9cf[_0xda8f('0x40')]['id']){delete _0x4ec9cf[_0xda8f('0x40')]['id'];}return db[_0xda8f('0x23')][_0xda8f('0x43')]({'where':{'id':_0x4ec9cf[_0xda8f('0x3c')]['id']}})[_0xda8f('0x1e')](handleEntityNotFound(_0x486c09,null))[_0xda8f('0x1e')](function(_0x741a9b){if(_0x741a9b){_0x4ec9cf[_0xda8f('0x40')][_0xda8f('0x46')]=_0x741a9b['id'];_0x4ec9cf[_0xda8f('0x40')][_0xda8f('0x47')]=integrations['getSubjects'](_0x4ec9cf['body'][_0xda8f('0x48')],_0x4ec9cf[_0xda8f('0x40')][_0xda8f('0x26')]);_0x4ec9cf[_0xda8f('0x40')]['Descriptions']=integrations[_0xda8f('0x49')](_0x4ec9cf['body'][_0xda8f('0x48')],_0x4ec9cf[_0xda8f('0x40')]['type']);return db[_0xda8f('0x44')]['create'](_0x4ec9cf[_0xda8f('0x40')],{'include':[{'model':db['SugarcrmField'],'as':'Subjects'},{'model':db['SugarcrmField'],'as':_0xda8f('0x4a')}]});}return null;})[_0xda8f('0x1e')](respondWithResult(_0x486c09,null))[_0xda8f('0x3a')](handleError(_0x486c09,null));};exports['getFields']=function(_0x43db92,_0x163af9,_0x338bfa){var _0xa70b3='';var _0x311041=['id',_0xda8f('0x20'),'assigned_user_id',_0xda8f('0x4b'),_0xda8f('0x4c'),_0xda8f('0x4d'),_0xda8f('0x4e'),_0xda8f('0x4f'),'parent_id',_0xda8f('0x50'),_0xda8f('0x51'),'direction'];return db[_0xda8f('0x23')][_0xda8f('0x43')]({'where':{'id':_0x43db92[_0xda8f('0x3c')]['id']},'attributes':['id',_0xda8f('0x52'),_0xda8f('0x53'),_0xda8f('0x54')]})[_0xda8f('0x1e')](handleEntityNotFound(_0x163af9,null))[_0xda8f('0x1e')](function(_0x214b76){if(_0x214b76){_0xa70b3=_0x214b76['remoteUri'];var _0x18faa4=_0xa70b3[_0xda8f('0x55')](-0x1);if(_0x18faa4==='/'){_0xa70b3=_0xa70b3[_0xda8f('0x56')](0x0,_0xa70b3[_0xda8f('0x57')](_0x18faa4));}return rp({'method':_0xda8f('0x58'),'uri':util[_0xda8f('0x59')](_0xda8f('0x5a'),_0xa70b3,_0xda8f('0x5b')),'json':!![],'form':{'method':_0xda8f('0x5c'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0xda8f('0x5d')]({'user_auth':{'user_name':_0x214b76[_0xda8f('0x52')],'password':_0x214b76[_0xda8f('0x53')],'encryption':_0xda8f('0x5e')},'application':_0xda8f('0x5f')})}});}})['then'](function(_0x15751d){if(_0x15751d&&_0x15751d[_0xda8f('0x20')]!==_0xda8f('0x60')&&_0x15751d['name']!==_0xda8f('0x61')){return rp({'method':_0xda8f('0x58'),'uri':util[_0xda8f('0x59')]('%s%s',_0xa70b3,_0xda8f('0x5b')),'json':!![],'form':{'method':'get_module_fields','input_type':'JSON','response_type':_0xda8f('0x62'),'rest_data':JSON['stringify']({'session':_0x15751d['id'],'module_name':_0xda8f('0x63')})}})[_0xda8f('0x1e')](function(_0x427139){if(_0x427139){var _0x452acc=_[_0xda8f('0x64')](_0x427139[_0xda8f('0x65')]);_[_0xda8f('0x66')](_0x452acc,function(_0x273a4a){return _0x311041[_0xda8f('0x67')](_0x273a4a['name']);});return{'count':_0x452acc[_0xda8f('0x2d')],'rows':_['map'](_0x452acc,function(_0x5592e3){return{'id':_0x5592e3[_0xda8f('0x20')],'name':_0x5592e3['label'],'custom':_['endsWith'](_0x5592e3[_0xda8f('0x20')],'_c')?!![]:![],'options':_0x5592e3['options']?_[_0xda8f('0x22')](_[_0xda8f('0x64')](_0x5592e3[_0xda8f('0x36')]),function(_0x4ec0c8){return{'name':_0x4ec0c8['value'],'value':_0x4ec0c8[_0xda8f('0x20')]};}):[]};})};}})[_0xda8f('0x1e')](respondWithResult(_0x163af9,null))[_0xda8f('0x3a')](function(_0x2351af){var _0x2fe3b1=_0x43db92[_0xda8f('0x28')][_0xda8f('0x68')]?0x1f4:_0x2351af[_0xda8f('0x69')]||0x1f4;logger[_0xda8f('0x1f')](_0xda8f('0x6a'),'getFields',_0x2fe3b1,JSON[_0xda8f('0x5d')](_0x2351af));delete _0x2351af[_0xda8f('0x20')];if(_0x2fe3b1===0x191){_0x2fe3b1=0x190;}_0x163af9['status'](_0x2fe3b1)[_0xda8f('0x6b')](_0x43db92[_0xda8f('0x28')][_0xda8f('0x68')]?{'message':'Wrong\x20credentials','statusCode':_0x2351af['statusCode']}:_0x2351af);});}else{var _0x3956e1=0x1f4;_0x163af9[_0xda8f('0x15')](_0x3956e1)['send']({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
index e8bc8df..9672f61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaf6=['request-promise','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','int_sugarcrm_accounts','util','../../config/logger','api','moment','bluebird'];(function(_0x4652e3,_0x5348a7){var _0x1b55c1=function(_0x1ca9b8){while(--_0x1ca9b8){_0x4652e3['push'](_0x4652e3['shift']());}};_0x1b55c1(++_0x5348a7);}(_0xfaf6,0xcd));var _0x6faf=function(_0x20151c,_0x340afa){_0x20151c=_0x20151c-0x0;var _0xaeff0d=_0xfaf6[_0x20151c];return _0xaeff0d;};'use strict';var _=require('lodash');var util=require(_0x6faf('0x0'));var logger=require(_0x6faf('0x1'))(_0x6faf('0x2'));var moment=require(_0x6faf('0x3'));var BPromise=require(_0x6faf('0x4'));var rp=require(_0x6faf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6faf('0x6'));var config=require(_0x6faf('0x7'));var attributes=require(_0x6faf('0x8'));var integrations=require(_0x6faf('0x9'));module[_0x6faf('0xa')]=function(_0x21c61c,_0x556e4d){return _0x21c61c[_0x6faf('0xb')](_0x6faf('0xc'),attributes,{'tableName':_0x6faf('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd28f=['../../config/environment','./intSugarcrmAccount.attributes','exports','define','util','bluebird','path','rimraf'];(function(_0x7416ca,_0x23f355){var _0x309f2a=function(_0x46ce62){while(--_0x46ce62){_0x7416ca['push'](_0x7416ca['shift']());}};_0x309f2a(++_0x23f355);}(_0xd28f,0x134));var _0xfd28=function(_0x2c3d94,_0x2023ee){_0x2c3d94=_0x2c3d94-0x0;var _0x2090c1=_0xd28f[_0x2c3d94];return _0x2090c1;};'use strict';var _=require('lodash');var util=require(_0xfd28('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xfd28('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfd28('0x2'));var rimraf=require(_0xfd28('0x3'));var config=require(_0xfd28('0x4'));var attributes=require(_0xfd28('0x5'));var integrations=require('../../components/integrations/configuration');module[_0xfd28('0x6')]=function(_0x272b78,_0xc0877){return _0x272b78[_0xfd28('0x7')]('SugarcrmAccount',attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c726714..2c0752c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2820=['options','raw','where','attributes','limit','include','map','model','debug','ShowSugarcrmAccount','find','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll'];(function(_0x123911,_0x361093){var _0x261713=function(_0x20952f){while(--_0x20952f){_0x123911['push'](_0x123911['shift']());}};_0x261713(++_0x361093);}(_0x2820,0x1e7));var _0x0282=function(_0x360cd1,_0x4bf479){_0x360cd1=_0x360cd1-0x0;var _0x13314b=_0x2820[_0x360cd1];return _0x13314b;};'use strict';var _=require('lodash');var util=require(_0x0282('0x0'));var moment=require(_0x0282('0x1'));var BPromise=require(_0x0282('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0282('0x3'))['db'];var utils=require(_0x0282('0x4'));var logger=require('../../config/logger')(_0x0282('0x5'));var config=require(_0x0282('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x0282('0x7')][_0x0282('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x203635,_0x525939,_0x25be7a){return new BPromise(function(_0x1795e6,_0x48a553){return client['request'](_0x203635,_0x25be7a)[_0x0282('0x9')](function(_0x58418a){logger['info'](_0x0282('0xa'),_0x525939,_0x0282('0xb'));logger['debug'](_0x0282('0xc'),_0x525939,_0x0282('0xb'),JSON[_0x0282('0xd')](_0x58418a));if(_0x58418a[_0x0282('0xe')]){if(_0x58418a[_0x0282('0xe')][_0x0282('0xf')]===0x1f4){logger['error'](_0x0282('0xa'),_0x525939,_0x58418a[_0x0282('0xe')][_0x0282('0x10')]);return _0x48a553(_0x58418a['error'][_0x0282('0x10')]);}logger[_0x0282('0xe')](_0x0282('0xa'),_0x525939,_0x58418a[_0x0282('0xe')][_0x0282('0x10')]);return _0x1795e6(_0x58418a[_0x0282('0xe')][_0x0282('0x10')]);}else{logger[_0x0282('0x11')](_0x0282('0xa'),_0x525939,_0x0282('0xb'));_0x1795e6(_0x58418a[_0x0282('0x12')][_0x0282('0x10')]);}})[_0x0282('0x13')](function(_0x3eeacc){logger['error'](_0x0282('0xa'),_0x525939,_0x3eeacc);_0x48a553(_0x3eeacc);});});}exports[_0x0282('0x14')]=function(_0xdb3795){var _0xf00ad3=this;return new Promise(function(_0x373c1c,_0x1c2fb6){return db[_0x0282('0x15')][_0x0282('0x16')]({'raw':_0xdb3795[_0x0282('0x17')]?_0xdb3795[_0x0282('0x17')][_0x0282('0x18')]===undefined?!![]:![]:!![],'where':_0xdb3795[_0x0282('0x17')]?_0xdb3795[_0x0282('0x17')][_0x0282('0x19')]||null:null,'attributes':_0xdb3795[_0x0282('0x17')]?_0xdb3795[_0x0282('0x17')][_0x0282('0x1a')]||null:null,'limit':_0xdb3795['options']?_0xdb3795[_0x0282('0x17')][_0x0282('0x1b')]||null:null,'include':_0xdb3795[_0x0282('0x17')]?_0xdb3795['options'][_0x0282('0x1c')]?_[_0x0282('0x1d')](_0xdb3795[_0x0282('0x17')][_0x0282('0x1c')],function(_0x2728c6){return{'model':db[_0x2728c6[_0x0282('0x1e')]],'as':_0x2728c6['as'],'attributes':_0x2728c6[_0x0282('0x1a')],'include':_0x2728c6[_0x0282('0x1c')]?_[_0x0282('0x1d')](_0x2728c6[_0x0282('0x1c')],function(_0xd51603){return{'model':db[_0xd51603[_0x0282('0x1e')]],'as':_0xd51603['as'],'attributes':_0xd51603[_0x0282('0x1a')],'include':_0xd51603[_0x0282('0x1c')]?_['map'](_0xd51603['include'],function(_0x5d9305){return{'model':db[_0x5d9305[_0x0282('0x1e')]],'as':_0x5d9305['as'],'attributes':_0x5d9305['attributes']};}):[]};}):[]};}):[]:[]})[_0x0282('0x9')](function(_0x408c2e){logger['info'](_0x0282('0x14'),_0xdb3795);logger[_0x0282('0x1f')](_0x0282('0x14'),_0xdb3795,JSON[_0x0282('0xd')](_0x408c2e));_0x373c1c(_0x408c2e);})[_0x0282('0x13')](function(_0x5d7b45){logger[_0x0282('0xe')](_0x0282('0x14'),_0x5d7b45[_0x0282('0x10')],_0xdb3795);_0x1c2fb6(_0xf00ad3[_0x0282('0xe')](0x1f4,_0x5d7b45['message']));});});};exports[_0x0282('0x20')]=function(_0x35bccf){var _0x43075b=this;return new Promise(function(_0x24e8c1,_0x1a3017){return db[_0x0282('0x15')][_0x0282('0x21')]({'raw':_0x35bccf[_0x0282('0x17')]?_0x35bccf['options'][_0x0282('0x18')]===undefined?!![]:![]:!![],'where':_0x35bccf[_0x0282('0x17')]?_0x35bccf['options'][_0x0282('0x19')]||null:null,'attributes':_0x35bccf[_0x0282('0x17')]?_0x35bccf[_0x0282('0x17')]['attributes']||null:null,'include':_0x35bccf[_0x0282('0x17')]?_0x35bccf[_0x0282('0x17')]['include']?_['map'](_0x35bccf[_0x0282('0x17')][_0x0282('0x1c')],function(_0x834d89){return{'model':db[_0x834d89['model']],'as':_0x834d89['as'],'attributes':_0x834d89[_0x0282('0x1a')],'include':_0x834d89[_0x0282('0x1c')]?_['map'](_0x834d89[_0x0282('0x1c')],function(_0x5ca2db){return{'model':db[_0x5ca2db['model']],'as':_0x5ca2db['as'],'attributes':_0x5ca2db[_0x0282('0x1a')],'include':_0x5ca2db[_0x0282('0x1c')]?_[_0x0282('0x1d')](_0x5ca2db[_0x0282('0x1c')],function(_0x3bcec4){return{'model':db[_0x3bcec4['model']],'as':_0x3bcec4['as'],'attributes':_0x3bcec4['attributes']};}):[]};}):[]};}):[]:[]})[_0x0282('0x9')](function(_0x11d118){logger['info']('ShowSugarcrmAccount',_0x35bccf);logger[_0x0282('0x1f')](_0x0282('0x20'),_0x35bccf,JSON[_0x0282('0xd')](_0x11d118));_0x24e8c1(_0x11d118);})[_0x0282('0x13')](function(_0x2b08f4){logger[_0x0282('0xe')](_0x0282('0x20'),_0x2b08f4[_0x0282('0x10')],_0x35bccf);_0x1a3017(_0x43075b[_0x0282('0xe')](0x1f4,_0x2b08f4[_0x0282('0x10')]));});});};
\ No newline at end of file
+var _0xf945=['error','code','message','SugarcrmAccount,\x20%s,\x20%s','GetSugarcrmAccount','findAll','options','raw','where','attributes','limit','map','include','model','ShowSugarcrmAccount','SugarcrmAccount','find','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5b78e8,_0x55096b){var _0xf2c321=function(_0x4e0cff){while(--_0x4e0cff){_0x5b78e8['push'](_0x5b78e8['shift']());}};_0xf2c321(++_0x55096b);}(_0xf945,0xea));var _0x5f94=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xf945[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x5f94('0x0'));var util=require(_0x5f94('0x1'));var moment=require(_0x5f94('0x2'));var BPromise=require('bluebird');var rs=require(_0x5f94('0x3'));var fs=require('fs');var Redis=require(_0x5f94('0x4'));var db=require(_0x5f94('0x5'))['db'];var utils=require(_0x5f94('0x6'));var logger=require(_0x5f94('0x7'))(_0x5f94('0x8'));var config=require('../../config/environment');var jayson=require(_0x5f94('0x9'));var client=jayson[_0x5f94('0xa')][_0x5f94('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x49eab3,_0x127ce3,_0x1eade0){return new BPromise(function(_0x3e9996,_0x3f8dd2){return client['request'](_0x49eab3,_0x1eade0)[_0x5f94('0xc')](function(_0x3ccbf5){logger[_0x5f94('0xd')]('SugarcrmAccount,\x20%s,\x20%s',_0x127ce3,_0x5f94('0xe'));logger[_0x5f94('0xf')](_0x5f94('0x10'),_0x127ce3,_0x5f94('0xe'),JSON[_0x5f94('0x11')](_0x3ccbf5));if(_0x3ccbf5[_0x5f94('0x12')]){if(_0x3ccbf5[_0x5f94('0x12')][_0x5f94('0x13')]===0x1f4){logger[_0x5f94('0x12')]('SugarcrmAccount,\x20%s,\x20%s',_0x127ce3,_0x3ccbf5[_0x5f94('0x12')][_0x5f94('0x14')]);return _0x3f8dd2(_0x3ccbf5['error'][_0x5f94('0x14')]);}logger[_0x5f94('0x12')](_0x5f94('0x15'),_0x127ce3,_0x3ccbf5[_0x5f94('0x12')][_0x5f94('0x14')]);return _0x3e9996(_0x3ccbf5[_0x5f94('0x12')][_0x5f94('0x14')]);}else{logger[_0x5f94('0xd')]('SugarcrmAccount,\x20%s,\x20%s',_0x127ce3,_0x5f94('0xe'));_0x3e9996(_0x3ccbf5['result'][_0x5f94('0x14')]);}})['catch'](function(_0x18fec7){logger[_0x5f94('0x12')](_0x5f94('0x15'),_0x127ce3,_0x18fec7);_0x3f8dd2(_0x18fec7);});});}exports[_0x5f94('0x16')]=function(_0x3e9813){var _0x3ca398=this;return new Promise(function(_0x275e24,_0x2bf4fb){return db['SugarcrmAccount'][_0x5f94('0x17')]({'raw':_0x3e9813[_0x5f94('0x18')]?_0x3e9813[_0x5f94('0x18')][_0x5f94('0x19')]===undefined?!![]:![]:!![],'where':_0x3e9813[_0x5f94('0x18')]?_0x3e9813[_0x5f94('0x18')][_0x5f94('0x1a')]||null:null,'attributes':_0x3e9813['options']?_0x3e9813[_0x5f94('0x18')][_0x5f94('0x1b')]||null:null,'limit':_0x3e9813[_0x5f94('0x18')]?_0x3e9813[_0x5f94('0x18')][_0x5f94('0x1c')]||null:null,'include':_0x3e9813[_0x5f94('0x18')]?_0x3e9813[_0x5f94('0x18')]['include']?_[_0x5f94('0x1d')](_0x3e9813[_0x5f94('0x18')][_0x5f94('0x1e')],function(_0x195531){return{'model':db[_0x195531['model']],'as':_0x195531['as'],'attributes':_0x195531[_0x5f94('0x1b')],'include':_0x195531[_0x5f94('0x1e')]?_[_0x5f94('0x1d')](_0x195531[_0x5f94('0x1e')],function(_0x4f1f51){return{'model':db[_0x4f1f51[_0x5f94('0x1f')]],'as':_0x4f1f51['as'],'attributes':_0x4f1f51['attributes'],'include':_0x4f1f51[_0x5f94('0x1e')]?_[_0x5f94('0x1d')](_0x4f1f51[_0x5f94('0x1e')],function(_0x19767a){return{'model':db[_0x19767a['model']],'as':_0x19767a['as'],'attributes':_0x19767a[_0x5f94('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x5f94('0xc')](function(_0x1caedf){logger['info'](_0x5f94('0x16'),_0x3e9813);logger[_0x5f94('0xf')](_0x5f94('0x16'),_0x3e9813,JSON[_0x5f94('0x11')](_0x1caedf));_0x275e24(_0x1caedf);})['catch'](function(_0x20d67f){logger[_0x5f94('0x12')]('GetSugarcrmAccount',_0x20d67f[_0x5f94('0x14')],_0x3e9813);_0x2bf4fb(_0x3ca398['error'](0x1f4,_0x20d67f[_0x5f94('0x14')]));});});};exports[_0x5f94('0x20')]=function(_0x1639b9){var _0x563454=this;return new Promise(function(_0x3b254f,_0x5bf3a8){return db[_0x5f94('0x21')][_0x5f94('0x22')]({'raw':_0x1639b9[_0x5f94('0x18')]?_0x1639b9[_0x5f94('0x18')][_0x5f94('0x19')]===undefined?!![]:![]:!![],'where':_0x1639b9['options']?_0x1639b9[_0x5f94('0x18')][_0x5f94('0x1a')]||null:null,'attributes':_0x1639b9[_0x5f94('0x18')]?_0x1639b9[_0x5f94('0x18')][_0x5f94('0x1b')]||null:null,'include':_0x1639b9['options']?_0x1639b9[_0x5f94('0x18')][_0x5f94('0x1e')]?_[_0x5f94('0x1d')](_0x1639b9[_0x5f94('0x18')]['include'],function(_0x29ddfd){return{'model':db[_0x29ddfd[_0x5f94('0x1f')]],'as':_0x29ddfd['as'],'attributes':_0x29ddfd[_0x5f94('0x1b')],'include':_0x29ddfd[_0x5f94('0x1e')]?_[_0x5f94('0x1d')](_0x29ddfd[_0x5f94('0x1e')],function(_0xdd7b3f){return{'model':db[_0xdd7b3f[_0x5f94('0x1f')]],'as':_0xdd7b3f['as'],'attributes':_0xdd7b3f[_0x5f94('0x1b')],'include':_0xdd7b3f[_0x5f94('0x1e')]?_[_0x5f94('0x1d')](_0xdd7b3f[_0x5f94('0x1e')],function(_0x4b03d1){return{'model':db[_0x4b03d1[_0x5f94('0x1f')]],'as':_0x4b03d1['as'],'attributes':_0x4b03d1[_0x5f94('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x5f94('0xc')](function(_0x2b2a6c){logger[_0x5f94('0xd')](_0x5f94('0x20'),_0x1639b9);logger[_0x5f94('0xf')](_0x5f94('0x20'),_0x1639b9,JSON[_0x5f94('0x11')](_0x2b2a6c));_0x3b254f(_0x2b2a6c);})[_0x5f94('0x23')](function(_0x3e8be8){logger[_0x5f94('0x12')](_0x5f94('0x20'),_0x3e8be8['message'],_0x1639b9);_0x5bf3a8(_0x563454[_0x5f94('0x12')](0x1f4,_0x3e8be8[_0x5f94('0x14')]));});});};
\ No newline at end of file
index 1e89a98..fb2c2b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44fb=['put','update','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','/:id/subjects','getSubjects','/:id/descriptions','post','create'];(function(_0x58e078,_0x29d415){var _0x3349f2=function(_0x5920d7){while(--_0x5920d7){_0x58e078['push'](_0x58e078['shift']());}};_0x3349f2(++_0x29d415);}(_0x44fb,0x1a8));var _0xb44f=function(_0x167cfa,_0x8af9ef){_0x167cfa=_0x167cfa-0x0;var _0x427357=_0x44fb[_0x167cfa];return _0x427357;};'use strict';var multer=require(_0xb44f('0x0'));var util=require(_0xb44f('0x1'));var path=require('path');var timeout=require(_0xb44f('0x2'));var express=require(_0xb44f('0x3'));var router=express[_0xb44f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb44f('0x5'));var interaction=require(_0xb44f('0x6'));var config=require(_0xb44f('0x7'));var controller=require('./intSugarcrmConfiguration.controller');router[_0xb44f('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb44f('0x8')](_0xb44f('0x9'),auth[_0xb44f('0xa')](),controller[_0xb44f('0xb')]);router[_0xb44f('0x8')]('/:id/fields',auth[_0xb44f('0xa')](),controller['getFields']);router['get'](_0xb44f('0xc'),auth[_0xb44f('0xa')](),controller[_0xb44f('0xd')]);router[_0xb44f('0x8')](_0xb44f('0xe'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0xb44f('0xf')]('/',auth[_0xb44f('0xa')](),controller[_0xb44f('0x10')]);router[_0xb44f('0x11')](_0xb44f('0x9'),auth[_0xb44f('0xa')](),controller[_0xb44f('0x12')]);router['delete'](_0xb44f('0x9'),auth[_0xb44f('0xa')](),controller[_0xb44f('0x13')]);module[_0xb44f('0x14')]=router;
\ No newline at end of file
+var _0x500c=['isAuthenticated','/:id','show','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmConfiguration.controller','get'];(function(_0x19426f,_0x1451a6){var _0x2907e9=function(_0x4a00da){while(--_0x4a00da){_0x19426f['push'](_0x19426f['shift']());}};_0x2907e9(++_0x1451a6);}(_0x500c,0x1ed));var _0xc500=function(_0x31585d,_0x3866ca){_0x31585d=_0x31585d-0x0;var _0x68d8d4=_0x500c[_0x31585d];return _0x68d8d4;};'use strict';var multer=require(_0xc500('0x0'));var util=require(_0xc500('0x1'));var path=require(_0xc500('0x2'));var timeout=require(_0xc500('0x3'));var express=require(_0xc500('0x4'));var router=express[_0xc500('0x5')]();var fs_extra=require(_0xc500('0x6'));var auth=require(_0xc500('0x7'));var interaction=require(_0xc500('0x8'));var config=require('../../config/environment');var controller=require(_0xc500('0x9'));router[_0xc500('0xa')]('/',auth[_0xc500('0xb')](),controller['index']);router[_0xc500('0xa')](_0xc500('0xc'),auth[_0xc500('0xb')](),controller[_0xc500('0xd')]);router[_0xc500('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0xc500('0xe')]);router[_0xc500('0xa')](_0xc500('0xf'),auth[_0xc500('0xb')](),controller['getSubjects']);router[_0xc500('0xa')](_0xc500('0x10'),auth['isAuthenticated'](),controller[_0xc500('0x11')]);router[_0xc500('0x12')]('/',auth['isAuthenticated'](),controller[_0xc500('0x13')]);router[_0xc500('0x14')](_0xc500('0xc'),auth[_0xc500('0xb')](),controller[_0xc500('0x15')]);router['delete'](_0xc500('0xc'),auth[_0xc500('0xb')](),controller[_0xc500('0x16')]);module[_0xc500('0x17')]=router;
\ No newline at end of file
index ba5788c..a17aa1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80f6=['STRING','sequelize','exports'];(function(_0x5e709a,_0x1d7975){var _0x57401a=function(_0x27eab5){while(--_0x27eab5){_0x5e709a['push'](_0x5e709a['shift']());}};_0x57401a(++_0x1d7975);}(_0x80f6,0x13c));var _0x680f=function(_0x141491,_0x22a272){_0x141491=_0x141491-0x0;var _0xdd712b=_0x80f6[_0x141491];return _0xdd712b;};'use strict';var Sequelize=require(_0x680f('0x0'));module[_0x680f('0x1')]={'name':{'type':Sequelize[_0x680f('0x2')]},'description':{'type':Sequelize[_0x680f('0x2')]}};
\ No newline at end of file
+var _0x276c=['sequelize','exports','STRING'];(function(_0x294652,_0x36149f){var _0x50bb88=function(_0x5b1b47){while(--_0x5b1b47){_0x294652['push'](_0x294652['shift']());}};_0x50bb88(++_0x36149f);}(_0x276c,0x186));var _0xc276=function(_0x54430c,_0x59b3d5){_0x54430c=_0x54430c-0x0;var _0x5ca43b=_0x276c[_0x54430c];return _0x5ca43b;};'use strict';var Sequelize=require(_0xc276('0x0'));module[_0xc276('0x1')]={'name':{'type':Sequelize[_0xc276('0x2')]},'description':{'type':Sequelize[_0xc276('0x2')]}};
\ No newline at end of file
index 394848a..7ee978f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4aa6=['type','key','model','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','SugarcrmConfiguration','findAll','rows','catch','show','params','keys','merge','create','body','find','findOne','SugarcrmField','getFields','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName'];(function(_0xbcc4c5,_0x39940f){var _0x2c9d61=function(_0x56d663){while(--_0x56d663){_0xbcc4c5['push'](_0xbcc4c5['shift']());}};_0x2c9d61(++_0x39940f);}(_0x4aa6,0x174));var _0x64aa=function(_0x451dfc,_0x6d474f){_0x451dfc=_0x451dfc-0x0;var _0x3dd56b=_0x4aa6[_0x451dfc];return _0x3dd56b;};'use strict';var emlformat=require(_0x64aa('0x0'));var rimraf=require(_0x64aa('0x1'));var zipdir=require(_0x64aa('0x2'));var jsonpatch=require(_0x64aa('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x64aa('0x4'));var util=require(_0x64aa('0x5'));var path=require(_0x64aa('0x6'));var sox=require(_0x64aa('0x7'));var csv=require(_0x64aa('0x8'));var ejs=require(_0x64aa('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x64aa('0xa'));var squel=require('squel');var crypto=require(_0x64aa('0xb'));var jsforce=require(_0x64aa('0xc'));var deskjs=require(_0x64aa('0xd'));var toCsv=require('to-csv');var querystring=require(_0x64aa('0xe'));var Papa=require(_0x64aa('0xf'));var Redis=require(_0x64aa('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x64aa('0x11'));var as=require(_0x64aa('0x12'));var hardwareService=require(_0x64aa('0x13'));var logger=require(_0x64aa('0x14'))(_0x64aa('0x15'));var utils=require(_0x64aa('0x16'));var config=require(_0x64aa('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x64aa('0x18'))['db'];function respondWithStatusCode(_0x156737,_0x312a9b){_0x312a9b=_0x312a9b||0xcc;return function(_0x5164a5){if(_0x5164a5){return _0x156737[_0x64aa('0x19')](_0x312a9b);}return _0x156737['status'](_0x312a9b)['end']();};}function respondWithResult(_0x2bb65d,_0x2a4dbf){_0x2a4dbf=_0x2a4dbf||0xc8;return function(_0x39cf54){if(_0x39cf54){return _0x2bb65d[_0x64aa('0x1a')](_0x2a4dbf)[_0x64aa('0x1b')](_0x39cf54);}};}function respondWithFilteredResult(_0x20077b,_0x2f1a55){return function(_0x4086bb){if(_0x4086bb){var _0x88f3f8=typeof _0x2f1a55['offset']===_0x64aa('0x1c')&&typeof _0x2f1a55[_0x64aa('0x1d')]===_0x64aa('0x1c');var _0x17ce45=_0x4086bb[_0x64aa('0x1e')];var _0x3ada09=_0x88f3f8?0x0:_0x2f1a55[_0x64aa('0x1f')];var _0x198bac=_0x88f3f8?_0x4086bb[_0x64aa('0x1e')]:_0x2f1a55['offset']+_0x2f1a55[_0x64aa('0x1d')];var _0x350451;if(_0x198bac>=_0x17ce45){_0x198bac=_0x17ce45;_0x350451=0xc8;}else{_0x350451=0xce;}_0x20077b[_0x64aa('0x1a')](_0x350451);return _0x20077b[_0x64aa('0x20')](_0x64aa('0x21'),_0x3ada09+'-'+_0x198bac+'/'+_0x17ce45)[_0x64aa('0x1b')](_0x4086bb);}return null;};}function patchUpdates(_0x4881f5){return function(_0x421af9){try{jsonpatch[_0x64aa('0x22')](_0x421af9,_0x4881f5,!![]);}catch(_0x1ab95a){return BPromise[_0x64aa('0x23')](_0x1ab95a);}return _0x421af9[_0x64aa('0x24')]();};}function saveUpdates(_0x1aa2f2,_0x117084){return function(_0x25a5ad){if(_0x25a5ad){return _0x25a5ad[_0x64aa('0x25')](_0x1aa2f2)[_0x64aa('0x26')](function(_0x391dce){return _0x391dce;});}return null;};}function removeEntity(_0xce9880,_0x2f36b7){return function(_0x5a4ee1){if(_0x5a4ee1){return _0x5a4ee1[_0x64aa('0x27')]()[_0x64aa('0x26')](function(){_0xce9880[_0x64aa('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f2d91,_0x53e459){return function(_0x126acc){if(!_0x126acc){_0x5f2d91[_0x64aa('0x19')](0x194);}return _0x126acc;};}function handleError(_0x48cf4f,_0x2bf212){_0x2bf212=_0x2bf212||0x1f4;return function(_0x3ac8f6){logger[_0x64aa('0x28')](_0x3ac8f6[_0x64aa('0x29')]);if(_0x3ac8f6[_0x64aa('0x2a')]){delete _0x3ac8f6[_0x64aa('0x2a')];}_0x48cf4f[_0x64aa('0x1a')](_0x2bf212)[_0x64aa('0x2b')](_0x3ac8f6);};}exports[_0x64aa('0x2c')]=function(_0x599770,_0x517dab){var _0x27bb46={},_0x626bb1={},_0xe77851={'count':0x0,'rows':[]};var _0x4303cf=_[_0x64aa('0x2d')](db['SugarcrmConfiguration'][_0x64aa('0x2e')],function(_0x49c41f){return{'name':_0x49c41f[_0x64aa('0x2f')],'type':_0x49c41f[_0x64aa('0x30')][_0x64aa('0x31')]};});_0x626bb1[_0x64aa('0x32')]=_[_0x64aa('0x2d')](_0x4303cf,_0x64aa('0x2a'));_0x626bb1[_0x64aa('0x33')]=_['keys'](_0x599770[_0x64aa('0x33')]);_0x626bb1[_0x64aa('0x34')]=_['intersection'](_0x626bb1[_0x64aa('0x32')],_0x626bb1[_0x64aa('0x33')]);_0x27bb46[_0x64aa('0x35')]=_[_0x64aa('0x36')](_0x626bb1[_0x64aa('0x32')],qs[_0x64aa('0x37')](_0x599770['query'][_0x64aa('0x37')]));_0x27bb46[_0x64aa('0x35')]=_0x27bb46['attributes'][_0x64aa('0x38')]?_0x27bb46[_0x64aa('0x35')]:_0x626bb1[_0x64aa('0x32')];if(!_0x599770[_0x64aa('0x33')]['hasOwnProperty'](_0x64aa('0x39'))){_0x27bb46[_0x64aa('0x1d')]=qs[_0x64aa('0x1d')](_0x599770[_0x64aa('0x33')][_0x64aa('0x1d')]);_0x27bb46[_0x64aa('0x1f')]=qs[_0x64aa('0x1f')](_0x599770[_0x64aa('0x33')][_0x64aa('0x1f')]);}_0x27bb46[_0x64aa('0x3a')]=qs['sort'](_0x599770['query'][_0x64aa('0x3b')]);_0x27bb46[_0x64aa('0x3c')]=qs[_0x64aa('0x34')](_[_0x64aa('0x3d')](_0x599770[_0x64aa('0x33')],_0x626bb1[_0x64aa('0x34')]),_0x4303cf);if(_0x599770[_0x64aa('0x33')][_0x64aa('0x3e')]){_0x27bb46['where']=_['merge'](_0x27bb46[_0x64aa('0x3c')],{'$or':_['map'](_0x4303cf,function(_0x450ded){if(_0x450ded['type']!==_0x64aa('0x3f')){var _0x19a9be={};_0x19a9be[_0x450ded[_0x64aa('0x2a')]]={'$like':'%'+_0x599770[_0x64aa('0x33')][_0x64aa('0x3e')]+'%'};return _0x19a9be;}})});}_0x27bb46=_['merge']({},_0x27bb46,_0x599770[_0x64aa('0x40')]);var _0x375696={'where':_0x27bb46['where']};return db['SugarcrmConfiguration'][_0x64aa('0x1e')](_0x375696)[_0x64aa('0x26')](function(_0x4ded98){_0xe77851[_0x64aa('0x1e')]=_0x4ded98;if(_0x599770[_0x64aa('0x33')][_0x64aa('0x41')]){_0x27bb46[_0x64aa('0x42')]=[{'all':!![]}];}return db[_0x64aa('0x43')][_0x64aa('0x44')](_0x27bb46);})[_0x64aa('0x26')](function(_0x38a733){_0xe77851[_0x64aa('0x45')]=_0x38a733;return _0xe77851;})['then'](respondWithFilteredResult(_0x517dab,_0x27bb46))[_0x64aa('0x46')](handleError(_0x517dab,null));};exports[_0x64aa('0x47')]=function(_0x14f1dc,_0xd495bb){var _0x2ee29b={'raw':![],'where':{'id':_0x14f1dc[_0x64aa('0x48')]['id']}},_0x2f7290={};_0x2f7290[_0x64aa('0x32')]=_[_0x64aa('0x49')](db[_0x64aa('0x43')]['rawAttributes']);_0x2f7290['query']=_[_0x64aa('0x49')](_0x14f1dc['query']);_0x2f7290[_0x64aa('0x34')]=_[_0x64aa('0x36')](_0x2f7290['model'],_0x2f7290[_0x64aa('0x33')]);_0x2ee29b[_0x64aa('0x35')]=_[_0x64aa('0x36')](_0x2f7290[_0x64aa('0x32')],qs[_0x64aa('0x37')](_0x14f1dc[_0x64aa('0x33')][_0x64aa('0x37')]));_0x2ee29b[_0x64aa('0x35')]=_0x2ee29b[_0x64aa('0x35')][_0x64aa('0x38')]?_0x2ee29b['attributes']:_0x2f7290[_0x64aa('0x32')];if(_0x14f1dc['query']['includeAll']){_0x2ee29b[_0x64aa('0x42')]=[{'all':!![]}];}_0x2ee29b=_[_0x64aa('0x4a')]({},_0x2ee29b,_0x14f1dc['options']);return db[_0x64aa('0x43')]['find'](_0x2ee29b)[_0x64aa('0x26')](handleEntityNotFound(_0xd495bb,null))[_0x64aa('0x26')](respondWithResult(_0xd495bb,null))[_0x64aa('0x46')](handleError(_0xd495bb,null));};exports[_0x64aa('0x4b')]=function(_0x5d000b,_0x357a7f){return db[_0x64aa('0x43')][_0x64aa('0x4b')](_0x5d000b[_0x64aa('0x4c')],{})[_0x64aa('0x26')](respondWithResult(_0x357a7f,0xc9))['catch'](handleError(_0x357a7f,null));};exports[_0x64aa('0x25')]=function(_0x30e032,_0x2af7e0){if(_0x30e032[_0x64aa('0x4c')]['id']){delete _0x30e032[_0x64aa('0x4c')]['id'];}return db[_0x64aa('0x43')][_0x64aa('0x4d')]({'where':{'id':_0x30e032[_0x64aa('0x48')]['id']}})[_0x64aa('0x26')](handleEntityNotFound(_0x2af7e0,null))[_0x64aa('0x26')](saveUpdates(_0x30e032[_0x64aa('0x4c')],null))['then'](respondWithResult(_0x2af7e0,null))[_0x64aa('0x46')](handleError(_0x2af7e0,null));};exports['destroy']=function(_0x307578,_0x2ee05e){return db[_0x64aa('0x43')][_0x64aa('0x4d')]({'where':{'id':_0x307578[_0x64aa('0x48')]['id']}})[_0x64aa('0x26')](handleEntityNotFound(_0x2ee05e,null))['then'](removeEntity(_0x2ee05e,null))[_0x64aa('0x46')](handleError(_0x2ee05e,null));};exports['getFields']=function(_0x302a2b,_0x52f819,_0x4d74a5){var _0x367e0d={};var _0x11cd31={};var _0x365a82;var _0x4cdf28;return db[_0x64aa('0x43')][_0x64aa('0x4e')]({'where':{'id':_0x302a2b['params']['id']}})['then'](handleEntityNotFound(_0x52f819,null))[_0x64aa('0x26')](function(_0x33c1e8){if(_0x33c1e8){_0x365a82=_0x33c1e8;_0x11cd31['model']=_[_0x64aa('0x49')](db[_0x64aa('0x4f')][_0x64aa('0x2e')]);_0x11cd31[_0x64aa('0x33')]=_[_0x64aa('0x49')](_0x302a2b['query']);_0x11cd31[_0x64aa('0x34')]=_[_0x64aa('0x36')](_0x11cd31[_0x64aa('0x32')],_0x11cd31[_0x64aa('0x33')]);_0x367e0d[_0x64aa('0x35')]=_[_0x64aa('0x36')](_0x11cd31['model'],qs[_0x64aa('0x37')](_0x302a2b['query'][_0x64aa('0x37')]));_0x367e0d['attributes']=_0x367e0d[_0x64aa('0x35')][_0x64aa('0x38')]?_0x367e0d[_0x64aa('0x35')]:_0x11cd31['model'];_0x367e0d[_0x64aa('0x3a')]=qs[_0x64aa('0x3b')](_0x302a2b[_0x64aa('0x33')][_0x64aa('0x3b')]);_0x367e0d[_0x64aa('0x3c')]=qs[_0x64aa('0x34')](_['pick'](_0x302a2b['query'],_0x11cd31['filters']));if(_0x302a2b[_0x64aa('0x33')][_0x64aa('0x3e')]){_0x367e0d['where']=_[_0x64aa('0x4a')](_0x367e0d[_0x64aa('0x3c')],{'$or':_[_0x64aa('0x2d')](_0x367e0d[_0x64aa('0x35')],function(_0x230576){var _0x34fdbb={};_0x34fdbb[_0x230576]={'$like':'%'+_0x302a2b[_0x64aa('0x33')][_0x64aa('0x3e')]+'%'};return _0x34fdbb;})});}_0x367e0d=_['merge']({},_0x367e0d,_0x302a2b['options']);return _0x365a82[_0x64aa('0x50')](_0x367e0d);}})['then'](function(_0xb4a50e){if(_0xb4a50e){_0x4cdf28=_0xb4a50e[_0x64aa('0x38')];if(!_0x302a2b[_0x64aa('0x33')][_0x64aa('0x51')](_0x64aa('0x39'))){_0x367e0d[_0x64aa('0x1d')]=qs['limit'](_0x302a2b['query'][_0x64aa('0x1d')]);_0x367e0d[_0x64aa('0x1f')]=qs[_0x64aa('0x1f')](_0x302a2b[_0x64aa('0x33')]['offset']);}return _0x365a82[_0x64aa('0x50')](_0x367e0d);}})[_0x64aa('0x26')](function(_0x1d3580){if(_0x1d3580){return _0x1d3580?{'count':_0x4cdf28,'rows':_0x1d3580}:null;}})[_0x64aa('0x26')](respondWithResult(_0x52f819,null))['catch'](handleError(_0x52f819,null));};exports['getSubjects']=function(_0x11283d,_0x39d157,_0x2927c5){var _0x2679e4={};var _0x1efd54={};var _0x16bb9c;var _0x31c640;return db[_0x64aa('0x43')][_0x64aa('0x4e')]({'where':{'id':_0x11283d[_0x64aa('0x48')]['id']}})['then'](handleEntityNotFound(_0x39d157,null))['then'](function(_0xd3288a){if(_0xd3288a){_0x16bb9c=_0xd3288a;_0x1efd54['model']=_[_0x64aa('0x49')](db[_0x64aa('0x4f')][_0x64aa('0x2e')]);_0x1efd54['query']=_[_0x64aa('0x49')](_0x11283d[_0x64aa('0x33')]);_0x1efd54['filters']=_[_0x64aa('0x36')](_0x1efd54[_0x64aa('0x32')],_0x1efd54['query']);_0x2679e4['attributes']=_[_0x64aa('0x36')](_0x1efd54[_0x64aa('0x32')],qs['fields'](_0x11283d['query'][_0x64aa('0x37')]));_0x2679e4[_0x64aa('0x35')]=_0x2679e4[_0x64aa('0x35')][_0x64aa('0x38')]?_0x2679e4[_0x64aa('0x35')]:_0x1efd54['model'];_0x2679e4[_0x64aa('0x3a')]=qs[_0x64aa('0x3b')](_0x11283d[_0x64aa('0x33')][_0x64aa('0x3b')]);_0x2679e4[_0x64aa('0x3c')]=qs['filters'](_[_0x64aa('0x3d')](_0x11283d['query'],_0x1efd54[_0x64aa('0x34')]));if(_0x11283d[_0x64aa('0x33')][_0x64aa('0x3e')]){_0x2679e4[_0x64aa('0x3c')]=_['merge'](_0x2679e4[_0x64aa('0x3c')],{'$or':_[_0x64aa('0x2d')](_0x2679e4['attributes'],function(_0x5ee0a2){var _0x1225b9={};_0x1225b9[_0x5ee0a2]={'$like':'%'+_0x11283d[_0x64aa('0x33')][_0x64aa('0x3e')]+'%'};return _0x1225b9;})});}_0x2679e4=_[_0x64aa('0x4a')]({},_0x2679e4,_0x11283d[_0x64aa('0x40')]);return _0x16bb9c[_0x64aa('0x52')](_0x2679e4);}})[_0x64aa('0x26')](function(_0x2e49f4){if(_0x2e49f4){_0x31c640=_0x2e49f4[_0x64aa('0x38')];if(!_0x11283d[_0x64aa('0x33')][_0x64aa('0x51')]('nolimit')){_0x2679e4[_0x64aa('0x1d')]=qs[_0x64aa('0x1d')](_0x11283d[_0x64aa('0x33')][_0x64aa('0x1d')]);_0x2679e4[_0x64aa('0x1f')]=qs[_0x64aa('0x1f')](_0x11283d[_0x64aa('0x33')][_0x64aa('0x1f')]);}return _0x16bb9c['getSubjects'](_0x2679e4);}})[_0x64aa('0x26')](function(_0x132ed9){if(_0x132ed9){return _0x132ed9?{'count':_0x31c640,'rows':_0x132ed9}:null;}})[_0x64aa('0x26')](respondWithResult(_0x39d157,null))[_0x64aa('0x46')](handleError(_0x39d157,null));};exports[_0x64aa('0x53')]=function(_0x8237db,_0x33c966,_0x2bcf8d){var _0xcb4f13={};var _0x207082={};var _0x46e182;var _0x4a8d2b;return db[_0x64aa('0x43')][_0x64aa('0x4e')]({'where':{'id':_0x8237db[_0x64aa('0x48')]['id']}})[_0x64aa('0x26')](handleEntityNotFound(_0x33c966,null))[_0x64aa('0x26')](function(_0x5c6110){if(_0x5c6110){_0x46e182=_0x5c6110;_0x207082['model']=_[_0x64aa('0x49')](db[_0x64aa('0x4f')][_0x64aa('0x2e')]);_0x207082[_0x64aa('0x33')]=_[_0x64aa('0x49')](_0x8237db['query']);_0x207082[_0x64aa('0x34')]=_[_0x64aa('0x36')](_0x207082['model'],_0x207082[_0x64aa('0x33')]);_0xcb4f13[_0x64aa('0x35')]=_['intersection'](_0x207082[_0x64aa('0x32')],qs[_0x64aa('0x37')](_0x8237db[_0x64aa('0x33')][_0x64aa('0x37')]));_0xcb4f13[_0x64aa('0x35')]=_0xcb4f13['attributes'][_0x64aa('0x38')]?_0xcb4f13[_0x64aa('0x35')]:_0x207082['model'];_0xcb4f13[_0x64aa('0x3a')]=qs['sort'](_0x8237db[_0x64aa('0x33')][_0x64aa('0x3b')]);_0xcb4f13[_0x64aa('0x3c')]=qs['filters'](_[_0x64aa('0x3d')](_0x8237db['query'],_0x207082[_0x64aa('0x34')]));if(_0x8237db[_0x64aa('0x33')]['filter']){_0xcb4f13[_0x64aa('0x3c')]=_['merge'](_0xcb4f13[_0x64aa('0x3c')],{'$or':_[_0x64aa('0x2d')](_0xcb4f13[_0x64aa('0x35')],function(_0x4406ed){var _0x1aca69={};_0x1aca69[_0x4406ed]={'$like':'%'+_0x8237db[_0x64aa('0x33')]['filter']+'%'};return _0x1aca69;})});}_0xcb4f13=_[_0x64aa('0x4a')]({},_0xcb4f13,_0x8237db[_0x64aa('0x40')]);return _0x46e182[_0x64aa('0x53')](_0xcb4f13);}})[_0x64aa('0x26')](function(_0x55d14a){if(_0x55d14a){_0x4a8d2b=_0x55d14a[_0x64aa('0x38')];if(!_0x8237db[_0x64aa('0x33')][_0x64aa('0x51')](_0x64aa('0x39'))){_0xcb4f13['limit']=qs[_0x64aa('0x1d')](_0x8237db[_0x64aa('0x33')][_0x64aa('0x1d')]);_0xcb4f13[_0x64aa('0x1f')]=qs[_0x64aa('0x1f')](_0x8237db['query']['offset']);}return _0x46e182[_0x64aa('0x53')](_0xcb4f13);}})[_0x64aa('0x26')](function(_0x11e22c){if(_0x11e22c){return _0x11e22c?{'count':_0x4a8d2b,'rows':_0x11e22c}:null;}})[_0x64aa('0x26')](respondWithResult(_0x33c966,null))['catch'](handleError(_0x33c966,null));};
\ No newline at end of file
+var _0x4226=['create','body','getFields','SugarcrmField','rawAttributes','getSubjects','findOne','getDescriptions','eml-format','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','index','map','SugarcrmConfiguration','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','includeAll','findAll','catch','show','params','keys','length','include','find'];(function(_0x409e15,_0x370b4c){var _0x70e0fb=function(_0x1ae0ae){while(--_0x1ae0ae){_0x409e15['push'](_0x409e15['shift']());}};_0x70e0fb(++_0x370b4c);}(_0x4226,0x189));var _0x6422=function(_0x4e549f,_0x2923ef){_0x4e549f=_0x4e549f-0x0;var _0x13ab94=_0x4226[_0x4e549f];return _0x13ab94;};'use strict';var emlformat=require(_0x6422('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6422('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6422('0x2'));var BPromise=require(_0x6422('0x3'));var Mustache=require(_0x6422('0x4'));var util=require('util');var path=require(_0x6422('0x5'));var sox=require(_0x6422('0x6'));var csv=require(_0x6422('0x7'));var ejs=require(_0x6422('0x8'));var fs=require('fs');var fs_extra=require(_0x6422('0x9'));var _=require(_0x6422('0xa'));var squel=require(_0x6422('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6422('0x7'));var querystring=require(_0x6422('0xc'));var Papa=require(_0x6422('0xd'));var Redis=require('ioredis');var authService=require(_0x6422('0xe'));var qs=require(_0x6422('0xf'));var as=require(_0x6422('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6422('0x11'));var utils=require('../../config/utils');var config=require(_0x6422('0x12'));var licenseUtil=require(_0x6422('0x13'));var db=require(_0x6422('0x14'))['db'];function respondWithStatusCode(_0x479a16,_0x5dde73){_0x5dde73=_0x5dde73||0xcc;return function(_0x31680b){if(_0x31680b){return _0x479a16[_0x6422('0x15')](_0x5dde73);}return _0x479a16[_0x6422('0x16')](_0x5dde73)[_0x6422('0x17')]();};}function respondWithResult(_0x309f45,_0x581a99){_0x581a99=_0x581a99||0xc8;return function(_0x6b52c2){if(_0x6b52c2){return _0x309f45[_0x6422('0x16')](_0x581a99)['json'](_0x6b52c2);}};}function respondWithFilteredResult(_0x2aa803,_0x524185){return function(_0x5c61cb){if(_0x5c61cb){var _0x46ea40=typeof _0x524185[_0x6422('0x18')]===_0x6422('0x19')&&typeof _0x524185['limit']===_0x6422('0x19');var _0x2483d3=_0x5c61cb[_0x6422('0x1a')];var _0x35f90d=_0x46ea40?0x0:_0x524185[_0x6422('0x18')];var _0x52f2c1=_0x46ea40?_0x5c61cb[_0x6422('0x1a')]:_0x524185[_0x6422('0x18')]+_0x524185[_0x6422('0x1b')];var _0x1b37b0;if(_0x52f2c1>=_0x2483d3){_0x52f2c1=_0x2483d3;_0x1b37b0=0xc8;}else{_0x1b37b0=0xce;}_0x2aa803[_0x6422('0x16')](_0x1b37b0);return _0x2aa803[_0x6422('0x1c')](_0x6422('0x1d'),_0x35f90d+'-'+_0x52f2c1+'/'+_0x2483d3)[_0x6422('0x1e')](_0x5c61cb);}return null;};}function patchUpdates(_0x9634af){return function(_0x5c2460){try{jsonpatch[_0x6422('0x1f')](_0x5c2460,_0x9634af,!![]);}catch(_0x187617){return BPromise[_0x6422('0x20')](_0x187617);}return _0x5c2460[_0x6422('0x21')]();};}function saveUpdates(_0x401d14,_0x4968bb){return function(_0x463388){if(_0x463388){return _0x463388[_0x6422('0x22')](_0x401d14)[_0x6422('0x23')](function(_0x7fd472){return _0x7fd472;});}return null;};}function removeEntity(_0xe4752a,_0x39abef){return function(_0x5cd767){if(_0x5cd767){return _0x5cd767[_0x6422('0x24')]()[_0x6422('0x23')](function(){_0xe4752a[_0x6422('0x16')](0xcc)[_0x6422('0x17')]();});}};}function handleEntityNotFound(_0x255c07,_0x4da946){return function(_0x202528){if(!_0x202528){_0x255c07['sendStatus'](0x194);}return _0x202528;};}function handleError(_0x3ce114,_0x18e678){_0x18e678=_0x18e678||0x1f4;return function(_0x3ad941){logger[_0x6422('0x25')](_0x3ad941['stack']);if(_0x3ad941[_0x6422('0x26')]){delete _0x3ad941[_0x6422('0x26')];}_0x3ce114['status'](_0x18e678)[_0x6422('0x27')](_0x3ad941);};}exports[_0x6422('0x28')]=function(_0x4a1fb0,_0x4073af){var _0x539de2={},_0x1e5b31={},_0xd488c8={'count':0x0,'rows':[]};var _0x332cf5=_[_0x6422('0x29')](db[_0x6422('0x2a')]['rawAttributes'],function(_0x5b32a0){return{'name':_0x5b32a0['fieldName'],'type':_0x5b32a0['type'][_0x6422('0x2b')]};});_0x1e5b31[_0x6422('0x2c')]=_[_0x6422('0x29')](_0x332cf5,_0x6422('0x26'));_0x1e5b31[_0x6422('0x2d')]=_['keys'](_0x4a1fb0[_0x6422('0x2d')]);_0x1e5b31[_0x6422('0x2e')]=_['intersection'](_0x1e5b31[_0x6422('0x2c')],_0x1e5b31['query']);_0x539de2['attributes']=_[_0x6422('0x2f')](_0x1e5b31[_0x6422('0x2c')],qs['fields'](_0x4a1fb0[_0x6422('0x2d')][_0x6422('0x30')]));_0x539de2[_0x6422('0x31')]=_0x539de2[_0x6422('0x31')]['length']?_0x539de2['attributes']:_0x1e5b31[_0x6422('0x2c')];if(!_0x4a1fb0[_0x6422('0x2d')][_0x6422('0x32')](_0x6422('0x33'))){_0x539de2[_0x6422('0x1b')]=qs[_0x6422('0x1b')](_0x4a1fb0[_0x6422('0x2d')][_0x6422('0x1b')]);_0x539de2[_0x6422('0x18')]=qs['offset'](_0x4a1fb0[_0x6422('0x2d')][_0x6422('0x18')]);}_0x539de2[_0x6422('0x34')]=qs[_0x6422('0x35')](_0x4a1fb0['query'][_0x6422('0x35')]);_0x539de2[_0x6422('0x36')]=qs[_0x6422('0x2e')](_[_0x6422('0x37')](_0x4a1fb0[_0x6422('0x2d')],_0x1e5b31['filters']),_0x332cf5);if(_0x4a1fb0[_0x6422('0x2d')][_0x6422('0x38')]){_0x539de2[_0x6422('0x36')]=_[_0x6422('0x39')](_0x539de2[_0x6422('0x36')],{'$or':_[_0x6422('0x29')](_0x332cf5,function(_0x23a06f){if(_0x23a06f[_0x6422('0x3a')]!=='VIRTUAL'){var _0x2a8afe={};_0x2a8afe[_0x23a06f[_0x6422('0x26')]]={'$like':'%'+_0x4a1fb0[_0x6422('0x2d')]['filter']+'%'};return _0x2a8afe;}})});}_0x539de2=_[_0x6422('0x39')]({},_0x539de2,_0x4a1fb0[_0x6422('0x3b')]);var _0x5e2af={'where':_0x539de2[_0x6422('0x36')]};return db['SugarcrmConfiguration']['count'](_0x5e2af)['then'](function(_0x12c315){_0xd488c8['count']=_0x12c315;if(_0x4a1fb0['query'][_0x6422('0x3c')]){_0x539de2['include']=[{'all':!![]}];}return db[_0x6422('0x2a')][_0x6422('0x3d')](_0x539de2);})['then'](function(_0x50e25d){_0xd488c8['rows']=_0x50e25d;return _0xd488c8;})[_0x6422('0x23')](respondWithFilteredResult(_0x4073af,_0x539de2))[_0x6422('0x3e')](handleError(_0x4073af,null));};exports[_0x6422('0x3f')]=function(_0x1823af,_0x307b0f){var _0x257894={'raw':![],'where':{'id':_0x1823af[_0x6422('0x40')]['id']}},_0xa1b610={};_0xa1b610[_0x6422('0x2c')]=_['keys'](db[_0x6422('0x2a')]['rawAttributes']);_0xa1b610['query']=_[_0x6422('0x41')](_0x1823af[_0x6422('0x2d')]);_0xa1b610[_0x6422('0x2e')]=_[_0x6422('0x2f')](_0xa1b610[_0x6422('0x2c')],_0xa1b610[_0x6422('0x2d')]);_0x257894[_0x6422('0x31')]=_[_0x6422('0x2f')](_0xa1b610[_0x6422('0x2c')],qs[_0x6422('0x30')](_0x1823af[_0x6422('0x2d')][_0x6422('0x30')]));_0x257894[_0x6422('0x31')]=_0x257894[_0x6422('0x31')][_0x6422('0x42')]?_0x257894[_0x6422('0x31')]:_0xa1b610[_0x6422('0x2c')];if(_0x1823af[_0x6422('0x2d')][_0x6422('0x3c')]){_0x257894[_0x6422('0x43')]=[{'all':!![]}];}_0x257894=_[_0x6422('0x39')]({},_0x257894,_0x1823af[_0x6422('0x3b')]);return db[_0x6422('0x2a')][_0x6422('0x44')](_0x257894)['then'](handleEntityNotFound(_0x307b0f,null))[_0x6422('0x23')](respondWithResult(_0x307b0f,null))[_0x6422('0x3e')](handleError(_0x307b0f,null));};exports[_0x6422('0x45')]=function(_0x34fc21,_0xcb856b){return db[_0x6422('0x2a')][_0x6422('0x45')](_0x34fc21[_0x6422('0x46')],{})[_0x6422('0x23')](respondWithResult(_0xcb856b,0xc9))[_0x6422('0x3e')](handleError(_0xcb856b,null));};exports[_0x6422('0x22')]=function(_0x40569a,_0x1933c9){if(_0x40569a[_0x6422('0x46')]['id']){delete _0x40569a[_0x6422('0x46')]['id'];}return db[_0x6422('0x2a')]['find']({'where':{'id':_0x40569a[_0x6422('0x40')]['id']}})[_0x6422('0x23')](handleEntityNotFound(_0x1933c9,null))[_0x6422('0x23')](saveUpdates(_0x40569a[_0x6422('0x46')],null))[_0x6422('0x23')](respondWithResult(_0x1933c9,null))[_0x6422('0x3e')](handleError(_0x1933c9,null));};exports[_0x6422('0x24')]=function(_0x380dec,_0x13adfb){return db['SugarcrmConfiguration'][_0x6422('0x44')]({'where':{'id':_0x380dec[_0x6422('0x40')]['id']}})[_0x6422('0x23')](handleEntityNotFound(_0x13adfb,null))[_0x6422('0x23')](removeEntity(_0x13adfb,null))[_0x6422('0x3e')](handleError(_0x13adfb,null));};exports[_0x6422('0x47')]=function(_0x5bd1ae,_0x310b16,_0x5b4c92){var _0x510bde={};var _0x3f24b3={};var _0x5d71dc;var _0x20fe80;return db[_0x6422('0x2a')]['findOne']({'where':{'id':_0x5bd1ae[_0x6422('0x40')]['id']}})[_0x6422('0x23')](handleEntityNotFound(_0x310b16,null))[_0x6422('0x23')](function(_0xcd3ad9){if(_0xcd3ad9){_0x5d71dc=_0xcd3ad9;_0x3f24b3['model']=_[_0x6422('0x41')](db[_0x6422('0x48')][_0x6422('0x49')]);_0x3f24b3[_0x6422('0x2d')]=_[_0x6422('0x41')](_0x5bd1ae[_0x6422('0x2d')]);_0x3f24b3[_0x6422('0x2e')]=_[_0x6422('0x2f')](_0x3f24b3[_0x6422('0x2c')],_0x3f24b3[_0x6422('0x2d')]);_0x510bde[_0x6422('0x31')]=_[_0x6422('0x2f')](_0x3f24b3[_0x6422('0x2c')],qs[_0x6422('0x30')](_0x5bd1ae[_0x6422('0x2d')][_0x6422('0x30')]));_0x510bde['attributes']=_0x510bde[_0x6422('0x31')][_0x6422('0x42')]?_0x510bde[_0x6422('0x31')]:_0x3f24b3[_0x6422('0x2c')];_0x510bde[_0x6422('0x34')]=qs['sort'](_0x5bd1ae[_0x6422('0x2d')][_0x6422('0x35')]);_0x510bde[_0x6422('0x36')]=qs['filters'](_[_0x6422('0x37')](_0x5bd1ae[_0x6422('0x2d')],_0x3f24b3[_0x6422('0x2e')]));if(_0x5bd1ae[_0x6422('0x2d')]['filter']){_0x510bde[_0x6422('0x36')]=_[_0x6422('0x39')](_0x510bde['where'],{'$or':_[_0x6422('0x29')](_0x510bde[_0x6422('0x31')],function(_0x3802a7){var _0x218ca0={};_0x218ca0[_0x3802a7]={'$like':'%'+_0x5bd1ae[_0x6422('0x2d')]['filter']+'%'};return _0x218ca0;})});}_0x510bde=_[_0x6422('0x39')]({},_0x510bde,_0x5bd1ae[_0x6422('0x3b')]);return _0x5d71dc['getFields'](_0x510bde);}})[_0x6422('0x23')](function(_0x22270d){if(_0x22270d){_0x20fe80=_0x22270d['length'];if(!_0x5bd1ae[_0x6422('0x2d')]['hasOwnProperty']('nolimit')){_0x510bde['limit']=qs['limit'](_0x5bd1ae[_0x6422('0x2d')][_0x6422('0x1b')]);_0x510bde[_0x6422('0x18')]=qs[_0x6422('0x18')](_0x5bd1ae['query']['offset']);}return _0x5d71dc['getFields'](_0x510bde);}})[_0x6422('0x23')](function(_0xb79f59){if(_0xb79f59){return _0xb79f59?{'count':_0x20fe80,'rows':_0xb79f59}:null;}})['then'](respondWithResult(_0x310b16,null))['catch'](handleError(_0x310b16,null));};exports[_0x6422('0x4a')]=function(_0x21ccd7,_0x1e540,_0x1f2bfc){var _0x402557={};var _0x1b0a64={};var _0xbdd54a;var _0x15dcdd;return db[_0x6422('0x2a')][_0x6422('0x4b')]({'where':{'id':_0x21ccd7['params']['id']}})[_0x6422('0x23')](handleEntityNotFound(_0x1e540,null))['then'](function(_0x3fbb19){if(_0x3fbb19){_0xbdd54a=_0x3fbb19;_0x1b0a64['model']=_[_0x6422('0x41')](db[_0x6422('0x48')]['rawAttributes']);_0x1b0a64[_0x6422('0x2d')]=_['keys'](_0x21ccd7['query']);_0x1b0a64[_0x6422('0x2e')]=_[_0x6422('0x2f')](_0x1b0a64[_0x6422('0x2c')],_0x1b0a64[_0x6422('0x2d')]);_0x402557[_0x6422('0x31')]=_['intersection'](_0x1b0a64[_0x6422('0x2c')],qs[_0x6422('0x30')](_0x21ccd7['query'][_0x6422('0x30')]));_0x402557[_0x6422('0x31')]=_0x402557[_0x6422('0x31')]['length']?_0x402557['attributes']:_0x1b0a64['model'];_0x402557[_0x6422('0x34')]=qs[_0x6422('0x35')](_0x21ccd7[_0x6422('0x2d')]['sort']);_0x402557[_0x6422('0x36')]=qs[_0x6422('0x2e')](_[_0x6422('0x37')](_0x21ccd7['query'],_0x1b0a64['filters']));if(_0x21ccd7[_0x6422('0x2d')][_0x6422('0x38')]){_0x402557[_0x6422('0x36')]=_[_0x6422('0x39')](_0x402557[_0x6422('0x36')],{'$or':_[_0x6422('0x29')](_0x402557['attributes'],function(_0x245eba){var _0x1be90e={};_0x1be90e[_0x245eba]={'$like':'%'+_0x21ccd7[_0x6422('0x2d')]['filter']+'%'};return _0x1be90e;})});}_0x402557=_['merge']({},_0x402557,_0x21ccd7[_0x6422('0x3b')]);return _0xbdd54a[_0x6422('0x4a')](_0x402557);}})[_0x6422('0x23')](function(_0x313ec4){if(_0x313ec4){_0x15dcdd=_0x313ec4[_0x6422('0x42')];if(!_0x21ccd7[_0x6422('0x2d')]['hasOwnProperty'](_0x6422('0x33'))){_0x402557[_0x6422('0x1b')]=qs[_0x6422('0x1b')](_0x21ccd7[_0x6422('0x2d')]['limit']);_0x402557[_0x6422('0x18')]=qs[_0x6422('0x18')](_0x21ccd7[_0x6422('0x2d')]['offset']);}return _0xbdd54a[_0x6422('0x4a')](_0x402557);}})[_0x6422('0x23')](function(_0x4354fc){if(_0x4354fc){return _0x4354fc?{'count':_0x15dcdd,'rows':_0x4354fc}:null;}})['then'](respondWithResult(_0x1e540,null))[_0x6422('0x3e')](handleError(_0x1e540,null));};exports[_0x6422('0x4c')]=function(_0x898012,_0x114c2b,_0x4acaeb){var _0xfc75fa={};var _0x4407ae={};var _0x46e939;var _0x3c3ed7;return db[_0x6422('0x2a')][_0x6422('0x4b')]({'where':{'id':_0x898012[_0x6422('0x40')]['id']}})[_0x6422('0x23')](handleEntityNotFound(_0x114c2b,null))[_0x6422('0x23')](function(_0x24c240){if(_0x24c240){_0x46e939=_0x24c240;_0x4407ae[_0x6422('0x2c')]=_[_0x6422('0x41')](db[_0x6422('0x48')]['rawAttributes']);_0x4407ae[_0x6422('0x2d')]=_[_0x6422('0x41')](_0x898012[_0x6422('0x2d')]);_0x4407ae['filters']=_['intersection'](_0x4407ae[_0x6422('0x2c')],_0x4407ae['query']);_0xfc75fa[_0x6422('0x31')]=_['intersection'](_0x4407ae[_0x6422('0x2c')],qs[_0x6422('0x30')](_0x898012['query']['fields']));_0xfc75fa[_0x6422('0x31')]=_0xfc75fa[_0x6422('0x31')][_0x6422('0x42')]?_0xfc75fa[_0x6422('0x31')]:_0x4407ae['model'];_0xfc75fa[_0x6422('0x34')]=qs[_0x6422('0x35')](_0x898012[_0x6422('0x2d')]['sort']);_0xfc75fa['where']=qs[_0x6422('0x2e')](_[_0x6422('0x37')](_0x898012['query'],_0x4407ae['filters']));if(_0x898012['query'][_0x6422('0x38')]){_0xfc75fa[_0x6422('0x36')]=_[_0x6422('0x39')](_0xfc75fa[_0x6422('0x36')],{'$or':_['map'](_0xfc75fa[_0x6422('0x31')],function(_0x3a1c05){var _0x3a76d6={};_0x3a76d6[_0x3a1c05]={'$like':'%'+_0x898012[_0x6422('0x2d')][_0x6422('0x38')]+'%'};return _0x3a76d6;})});}_0xfc75fa=_[_0x6422('0x39')]({},_0xfc75fa,_0x898012['options']);return _0x46e939[_0x6422('0x4c')](_0xfc75fa);}})[_0x6422('0x23')](function(_0x250faa){if(_0x250faa){_0x3c3ed7=_0x250faa['length'];if(!_0x898012[_0x6422('0x2d')][_0x6422('0x32')](_0x6422('0x33'))){_0xfc75fa['limit']=qs[_0x6422('0x1b')](_0x898012['query'][_0x6422('0x1b')]);_0xfc75fa[_0x6422('0x18')]=qs[_0x6422('0x18')](_0x898012['query'][_0x6422('0x18')]);}return _0x46e939[_0x6422('0x4c')](_0xfc75fa);}})['then'](function(_0x45628f){if(_0x45628f){return _0x45628f?{'count':_0x3c3ed7,'rows':_0x45628f}:null;}})[_0x6422('0x23')](respondWithResult(_0x114c2b,null))['catch'](handleError(_0x114c2b,null));};
\ No newline at end of file
index 61acd0d..c08f0b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b45=['bluebird','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','int_sugarcrm_configurations','lodash','util','api'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x4b45,0x1bf));var _0x54b4=function(_0xa388f7,_0x244326){_0xa388f7=_0xa388f7-0x0;var _0x42037f=_0x4b45[_0xa388f7];return _0x42037f;};'use strict';var _=require(_0x54b4('0x0'));var util=require(_0x54b4('0x1'));var logger=require('../../config/logger')(_0x54b4('0x2'));var moment=require('moment');var BPromise=require(_0x54b4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x54b4('0x4'));var config=require(_0x54b4('0x5'));var attributes=require(_0x54b4('0x6'));module[_0x54b4('0x7')]=function(_0x274540,_0x37f214){return _0x274540['define']('SugarcrmConfiguration',attributes,{'tableName':_0x54b4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9ddb=['moment','bluebird','request-promise','path','rimraf','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','util','../../config/logger'];(function(_0x204e5c,_0x1bba4f){var _0x514032=function(_0x5707bb){while(--_0x5707bb){_0x204e5c['push'](_0x204e5c['shift']());}};_0x514032(++_0x1bba4f);}(_0x9ddb,0x1cc));var _0xb9dd=function(_0x2dce9d,_0x2cc39f){_0x2dce9d=_0x2dce9d-0x0;var _0x414e7b=_0x9ddb[_0x2dce9d];return _0x414e7b;};'use strict';var _=require('lodash');var util=require(_0xb9dd('0x0'));var logger=require(_0xb9dd('0x1'))('api');var moment=require(_0xb9dd('0x2'));var BPromise=require(_0xb9dd('0x3'));var rp=require(_0xb9dd('0x4'));var fs=require('fs');var path=require(_0xb9dd('0x5'));var rimraf=require(_0xb9dd('0x6'));var config=require('../../config/environment');var attributes=require(_0xb9dd('0x7'));module[_0xb9dd('0x8')]=function(_0x25977c,_0x44aac5){return _0x25977c[_0xb9dd('0x9')](_0xb9dd('0xa'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 191e67f..709070c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9862=['request','then','info','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','SugarcrmConfiguration,\x20%s,\x20%s','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x82c4df,_0x192546){var _0xe3b9ec=function(_0x5a4f31){while(--_0x5a4f31){_0x82c4df['push'](_0x82c4df['shift']());}};_0xe3b9ec(++_0x192546);}(_0x9862,0x113));var _0x2986=function(_0x434836,_0x5458f6){_0x434836=_0x434836-0x0;var _0x52390f=_0x9862[_0x434836];return _0x52390f;};'use strict';var _=require('lodash');var util=require(_0x2986('0x0'));var moment=require(_0x2986('0x1'));var BPromise=require(_0x2986('0x2'));var rs=require(_0x2986('0x3'));var fs=require('fs');var Redis=require(_0x2986('0x4'));var db=require(_0x2986('0x5'))['db'];var utils=require(_0x2986('0x6'));var logger=require(_0x2986('0x7'))(_0x2986('0x8'));var config=require(_0x2986('0x9'));var jayson=require(_0x2986('0xa'));var client=jayson[_0x2986('0xb')][_0x2986('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4f760c,_0x1fe037,_0x4cff9d){return new BPromise(function(_0x239b7c,_0x5728f0){return client[_0x2986('0xd')](_0x4f760c,_0x4cff9d)[_0x2986('0xe')](function(_0x3f0661){logger[_0x2986('0xf')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x1fe037,_0x2986('0x10'));logger[_0x2986('0x11')](_0x2986('0x12'),_0x1fe037,'request\x20sent',JSON[_0x2986('0x13')](_0x3f0661));if(_0x3f0661[_0x2986('0x14')]){if(_0x3f0661['error'][_0x2986('0x15')]===0x1f4){logger['error'](_0x2986('0x16'),_0x1fe037,_0x3f0661[_0x2986('0x14')][_0x2986('0x17')]);return _0x5728f0(_0x3f0661[_0x2986('0x14')][_0x2986('0x17')]);}logger[_0x2986('0x14')](_0x2986('0x16'),_0x1fe037,_0x3f0661['error'][_0x2986('0x17')]);return _0x239b7c(_0x3f0661[_0x2986('0x14')]['message']);}else{logger[_0x2986('0xf')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x1fe037,_0x2986('0x10'));_0x239b7c(_0x3f0661['result'][_0x2986('0x17')]);}})['catch'](function(_0x1a42bb){logger[_0x2986('0x14')](_0x2986('0x16'),_0x1fe037,_0x1a42bb);_0x5728f0(_0x1a42bb);});});}
\ No newline at end of file
+var _0x0538=['result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x3b8d1d,_0x45b42b){var _0x4a47ef=function(_0x42fec9){while(--_0x42fec9){_0x3b8d1d['push'](_0x3b8d1d['shift']());}};_0x4a47ef(++_0x45b42b);}(_0x0538,0x182));var _0x8053=function(_0x52121d,_0x1d1704){_0x52121d=_0x52121d-0x0;var _0x448627=_0x0538[_0x52121d];return _0x448627;};'use strict';var _=require(_0x8053('0x0'));var util=require(_0x8053('0x1'));var moment=require(_0x8053('0x2'));var BPromise=require(_0x8053('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8053('0x4'));var db=require(_0x8053('0x5'))['db'];var utils=require(_0x8053('0x6'));var logger=require(_0x8053('0x7'))(_0x8053('0x8'));var config=require(_0x8053('0x9'));var jayson=require(_0x8053('0xa'));var client=jayson[_0x8053('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d433c,_0x46b106,_0x8d0a11){return new BPromise(function(_0x332e21,_0x5c8b8e){return client[_0x8053('0xc')](_0x5d433c,_0x8d0a11)[_0x8053('0xd')](function(_0x43168c){logger[_0x8053('0xe')](_0x8053('0xf'),_0x46b106,_0x8053('0x10'));logger[_0x8053('0x11')](_0x8053('0x12'),_0x46b106,_0x8053('0x10'),JSON[_0x8053('0x13')](_0x43168c));if(_0x43168c[_0x8053('0x14')]){if(_0x43168c[_0x8053('0x14')]['code']===0x1f4){logger[_0x8053('0x14')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x46b106,_0x43168c[_0x8053('0x14')][_0x8053('0x15')]);return _0x5c8b8e(_0x43168c[_0x8053('0x14')][_0x8053('0x15')]);}logger['error']('SugarcrmConfiguration,\x20%s,\x20%s',_0x46b106,_0x43168c[_0x8053('0x14')][_0x8053('0x15')]);return _0x332e21(_0x43168c[_0x8053('0x14')][_0x8053('0x15')]);}else{logger['info'](_0x8053('0xf'),_0x46b106,'request\x20sent');_0x332e21(_0x43168c[_0x8053('0x16')]['message']);}})[_0x8053('0x17')](function(_0x33305b){logger['error'](_0x8053('0xf'),_0x46b106,_0x33305b);_0x5c8b8e(_0x33305b);});});}
\ No newline at end of file
index aabe777..ebd0da6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc8=['post','create','put','/:id','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get'];(function(_0x2acedb,_0x5865fc){var _0x450e2e=function(_0x49552d){while(--_0x49552d){_0x2acedb['push'](_0x2acedb['shift']());}};_0x450e2e(++_0x5865fc);}(_0x4fc8,0x15a));var _0x84fc=function(_0x5a70d8,_0xbfc41a){_0x5a70d8=_0x5a70d8-0x0;var _0x5f1483=_0x4fc8[_0x5a70d8];return _0x5f1483;};'use strict';var multer=require('multer');var util=require(_0x84fc('0x0'));var path=require(_0x84fc('0x1'));var timeout=require(_0x84fc('0x2'));var express=require(_0x84fc('0x3'));var router=express[_0x84fc('0x4')]();var fs_extra=require(_0x84fc('0x5'));var auth=require(_0x84fc('0x6'));var interaction=require(_0x84fc('0x7'));var config=require(_0x84fc('0x8'));var controller=require('./intSugarcrmField.controller');router['get']('/',auth[_0x84fc('0x9')](),controller['index']);router[_0x84fc('0xa')]('/:id',auth[_0x84fc('0x9')](),controller['show']);router[_0x84fc('0xb')]('/',auth[_0x84fc('0x9')](),controller[_0x84fc('0xc')]);router[_0x84fc('0xd')](_0x84fc('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x84fc('0xe'),auth[_0x84fc('0x9')](),controller[_0x84fc('0xf')]);module[_0x84fc('0x10')]=router;
\ No newline at end of file
+var _0x7050=['multer','util','express','Router','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','isAuthenticated','get','/:id','show','post','create','put','update','delete','destroy'];(function(_0x492257,_0x2c3557){var _0x274a9a=function(_0x4e42e9){while(--_0x4e42e9){_0x492257['push'](_0x492257['shift']());}};_0x274a9a(++_0x2c3557);}(_0x7050,0xee));var _0x0705=function(_0x2e04ef,_0x31a596){_0x2e04ef=_0x2e04ef-0x0;var _0x5722b0=_0x7050[_0x2e04ef];return _0x5722b0;};'use strict';var multer=require(_0x0705('0x0'));var util=require(_0x0705('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0705('0x2'));var router=express[_0x0705('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0705('0x4'));var config=require(_0x0705('0x5'));var controller=require(_0x0705('0x6'));router['get']('/',auth[_0x0705('0x7')](),controller['index']);router[_0x0705('0x8')](_0x0705('0x9'),auth[_0x0705('0x7')](),controller[_0x0705('0xa')]);router[_0x0705('0xb')]('/',auth[_0x0705('0x7')](),controller[_0x0705('0xc')]);router[_0x0705('0xd')](_0x0705('0x9'),auth['isAuthenticated'](),controller[_0x0705('0xe')]);router[_0x0705('0xf')](_0x0705('0x9'),auth[_0x0705('0x7')](),controller[_0x0705('0x10')]);module['exports']=router;
\ No newline at end of file
index df22ce5..5e113c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb587=['BOOLEAN','sequelize','exports','string','customVariable','keyValue','picklist','STRING','ENUM','variable'];(function(_0x238202,_0x10da07){var _0x217367=function(_0x34f6d0){while(--_0x34f6d0){_0x238202['push'](_0x238202['shift']());}};_0x217367(++_0x10da07);}(_0xb587,0x141));var _0x7b58=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb587[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x7b58('0x0'));module[_0x7b58('0x1')]={'type':{'type':Sequelize['ENUM'](_0x7b58('0x2'),'variable',_0x7b58('0x3'),_0x7b58('0x4'),_0x7b58('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x7b58('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x7b58('0x7')](_0x7b58('0x2'),_0x7b58('0x8'),_0x7b58('0x3'))},'keyContent':{'type':Sequelize[_0x7b58('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x7b58('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7b58('0x6')]}};
\ No newline at end of file
+var _0xa17b=['string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','exports','ENUM'];(function(_0x444169,_0x327199){var _0x5c15fd=function(_0x233418){while(--_0x233418){_0x444169['push'](_0x444169['shift']());}};_0x5c15fd(++_0x327199);}(_0xa17b,0x1d2));var _0xba17=function(_0x3b10bf,_0x10ecf7){_0x3b10bf=_0x3b10bf-0x0;var _0x53a0fd=_0xa17b[_0x3b10bf];return _0x53a0fd;};'use strict';var Sequelize=require('sequelize');module[_0xba17('0x0')]={'type':{'type':Sequelize[_0xba17('0x1')](_0xba17('0x2'),_0xba17('0x3'),_0xba17('0x4'),_0xba17('0x5'),_0xba17('0x6')),'defaultValue':_0xba17('0x2')},'content':{'type':Sequelize[_0xba17('0x7')]},'key':{'type':Sequelize[_0xba17('0x7')]},'keyType':{'type':Sequelize['ENUM']('string',_0xba17('0x3'),_0xba17('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xba17('0x7')]},'customField':{'type':Sequelize[_0xba17('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xba17('0x7')]}};
\ No newline at end of file
index 11a71c1..5e85632 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2ef=['stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','attributes','intersection','fields','length','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','options','SugarcrmField','includeAll','include','findAll','catch','show','keys','find','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','destroy','then','end','error'];(function(_0x37c619,_0x16734c){var _0x1980d4=function(_0x381ac9){while(--_0x381ac9){_0x37c619['push'](_0x37c619['shift']());}};_0x1980d4(++_0x16734c);}(_0xa2ef,0x157));var _0xfa2e=function(_0x424378,_0x54908f){_0x424378=_0x424378-0x0;var _0x21e4b3=_0xa2ef[_0x424378];return _0x21e4b3;};'use strict';var emlformat=require(_0xfa2e('0x0'));var rimraf=require(_0xfa2e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfa2e('0x2'));var rp=require(_0xfa2e('0x3'));var moment=require('moment');var BPromise=require(_0xfa2e('0x4'));var Mustache=require(_0xfa2e('0x5'));var util=require(_0xfa2e('0x6'));var path=require(_0xfa2e('0x7'));var sox=require(_0xfa2e('0x8'));var csv=require(_0xfa2e('0x9'));var ejs=require(_0xfa2e('0xa'));var fs=require('fs');var fs_extra=require(_0xfa2e('0xb'));var _=require(_0xfa2e('0xc'));var squel=require(_0xfa2e('0xd'));var crypto=require(_0xfa2e('0xe'));var jsforce=require(_0xfa2e('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xfa2e('0x9'));var querystring=require(_0xfa2e('0x10'));var Papa=require(_0xfa2e('0x11'));var Redis=require(_0xfa2e('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xfa2e('0x13'));var hardwareService=require(_0xfa2e('0x14'));var logger=require(_0xfa2e('0x15'))(_0xfa2e('0x16'));var utils=require(_0xfa2e('0x17'));var config=require(_0xfa2e('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xfa2e('0x19'))['db'];function respondWithStatusCode(_0x332245,_0x1bd72f){_0x1bd72f=_0x1bd72f||0xcc;return function(_0x2c181c){if(_0x2c181c){return _0x332245[_0xfa2e('0x1a')](_0x1bd72f);}return _0x332245[_0xfa2e('0x1b')](_0x1bd72f)['end']();};}function respondWithResult(_0x2ef2f9,_0x3a2a37){_0x3a2a37=_0x3a2a37||0xc8;return function(_0x485241){if(_0x485241){return _0x2ef2f9['status'](_0x3a2a37)[_0xfa2e('0x1c')](_0x485241);}};}function respondWithFilteredResult(_0xd39b8f,_0x2fedc1){return function(_0x3f71a5){if(_0x3f71a5){var _0xd86ff2=typeof _0x2fedc1['offset']===_0xfa2e('0x1d')&&typeof _0x2fedc1[_0xfa2e('0x1e')]===_0xfa2e('0x1d');var _0x512f72=_0x3f71a5[_0xfa2e('0x1f')];var _0x6f318e=_0xd86ff2?0x0:_0x2fedc1[_0xfa2e('0x20')];var _0x49ff42=_0xd86ff2?_0x3f71a5[_0xfa2e('0x1f')]:_0x2fedc1[_0xfa2e('0x20')]+_0x2fedc1[_0xfa2e('0x1e')];var _0x1cbcfc;if(_0x49ff42>=_0x512f72){_0x49ff42=_0x512f72;_0x1cbcfc=0xc8;}else{_0x1cbcfc=0xce;}_0xd39b8f[_0xfa2e('0x1b')](_0x1cbcfc);return _0xd39b8f[_0xfa2e('0x21')](_0xfa2e('0x22'),_0x6f318e+'-'+_0x49ff42+'/'+_0x512f72)['json'](_0x3f71a5);}return null;};}function patchUpdates(_0x5bc4f8){return function(_0x8e474b){try{jsonpatch['apply'](_0x8e474b,_0x5bc4f8,!![]);}catch(_0x237d6c){return BPromise[_0xfa2e('0x23')](_0x237d6c);}return _0x8e474b[_0xfa2e('0x24')]();};}function saveUpdates(_0x6d0279,_0x331571){return function(_0x56ab17){if(_0x56ab17){return _0x56ab17[_0xfa2e('0x25')](_0x6d0279)['then'](function(_0x2e6016){return _0x2e6016;});}return null;};}function removeEntity(_0x9ca864,_0x339954){return function(_0x5ea087){if(_0x5ea087){return _0x5ea087[_0xfa2e('0x26')]()[_0xfa2e('0x27')](function(){_0x9ca864[_0xfa2e('0x1b')](0xcc)[_0xfa2e('0x28')]();});}};}function handleEntityNotFound(_0xe96b2d,_0x5b1366){return function(_0xab755b){if(!_0xab755b){_0xe96b2d[_0xfa2e('0x1a')](0x194);}return _0xab755b;};}function handleError(_0x3b16ac,_0x47409a){_0x47409a=_0x47409a||0x1f4;return function(_0xa5d672){logger[_0xfa2e('0x29')](_0xa5d672[_0xfa2e('0x2a')]);if(_0xa5d672[_0xfa2e('0x2b')]){delete _0xa5d672['name'];}_0x3b16ac[_0xfa2e('0x1b')](_0x47409a)[_0xfa2e('0x2c')](_0xa5d672);};}exports[_0xfa2e('0x2d')]=function(_0x52875a,_0x255c9d){var _0x5b52aa={},_0x19e0f1={},_0x5eb0aa={'count':0x0,'rows':[]};var _0x2dfb56=_[_0xfa2e('0x2e')](db['SugarcrmField'][_0xfa2e('0x2f')],function(_0x17b2cd){return{'name':_0x17b2cd[_0xfa2e('0x30')],'type':_0x17b2cd[_0xfa2e('0x31')][_0xfa2e('0x32')]};});_0x19e0f1[_0xfa2e('0x33')]=_[_0xfa2e('0x2e')](_0x2dfb56,_0xfa2e('0x2b'));_0x19e0f1[_0xfa2e('0x34')]=_['keys'](_0x52875a[_0xfa2e('0x34')]);_0x19e0f1['filters']=_['intersection'](_0x19e0f1[_0xfa2e('0x33')],_0x19e0f1[_0xfa2e('0x34')]);_0x5b52aa[_0xfa2e('0x35')]=_[_0xfa2e('0x36')](_0x19e0f1[_0xfa2e('0x33')],qs['fields'](_0x52875a[_0xfa2e('0x34')][_0xfa2e('0x37')]));_0x5b52aa[_0xfa2e('0x35')]=_0x5b52aa[_0xfa2e('0x35')][_0xfa2e('0x38')]?_0x5b52aa[_0xfa2e('0x35')]:_0x19e0f1[_0xfa2e('0x33')];if(!_0x52875a[_0xfa2e('0x34')]['hasOwnProperty'](_0xfa2e('0x39'))){_0x5b52aa[_0xfa2e('0x1e')]=qs[_0xfa2e('0x1e')](_0x52875a['query']['limit']);_0x5b52aa[_0xfa2e('0x20')]=qs[_0xfa2e('0x20')](_0x52875a['query'][_0xfa2e('0x20')]);}_0x5b52aa[_0xfa2e('0x3a')]=qs['sort'](_0x52875a[_0xfa2e('0x34')][_0xfa2e('0x3b')]);_0x5b52aa[_0xfa2e('0x3c')]=qs['filters'](_['pick'](_0x52875a[_0xfa2e('0x34')],_0x19e0f1[_0xfa2e('0x3d')]),_0x2dfb56);if(_0x52875a[_0xfa2e('0x34')][_0xfa2e('0x3e')]){_0x5b52aa[_0xfa2e('0x3c')]=_['merge'](_0x5b52aa[_0xfa2e('0x3c')],{'$or':_[_0xfa2e('0x2e')](_0x2dfb56,function(_0x4093b9){if(_0x4093b9['type']!==_0xfa2e('0x3f')){var _0x12197d={};_0x12197d[_0x4093b9[_0xfa2e('0x2b')]]={'$like':'%'+_0x52875a[_0xfa2e('0x34')][_0xfa2e('0x3e')]+'%'};return _0x12197d;}})});}_0x5b52aa=_[_0xfa2e('0x40')]({},_0x5b52aa,_0x52875a[_0xfa2e('0x41')]);var _0x23cf5b={'where':_0x5b52aa[_0xfa2e('0x3c')]};return db[_0xfa2e('0x42')][_0xfa2e('0x1f')](_0x23cf5b)[_0xfa2e('0x27')](function(_0x2571b5){_0x5eb0aa['count']=_0x2571b5;if(_0x52875a['query'][_0xfa2e('0x43')]){_0x5b52aa[_0xfa2e('0x44')]=[{'all':!![]}];}return db[_0xfa2e('0x42')][_0xfa2e('0x45')](_0x5b52aa);})[_0xfa2e('0x27')](function(_0x6b532e){_0x5eb0aa['rows']=_0x6b532e;return _0x5eb0aa;})[_0xfa2e('0x27')](respondWithFilteredResult(_0x255c9d,_0x5b52aa))[_0xfa2e('0x46')](handleError(_0x255c9d,null));};exports[_0xfa2e('0x47')]=function(_0x576cb8,_0x51897f){var _0x7938b={'raw':!![],'where':{'id':_0x576cb8['params']['id']}},_0x5557f0={};_0x5557f0['model']=_['keys'](db[_0xfa2e('0x42')][_0xfa2e('0x2f')]);_0x5557f0[_0xfa2e('0x34')]=_[_0xfa2e('0x48')](_0x576cb8[_0xfa2e('0x34')]);_0x5557f0['filters']=_[_0xfa2e('0x36')](_0x5557f0[_0xfa2e('0x33')],_0x5557f0[_0xfa2e('0x34')]);_0x7938b['attributes']=_['intersection'](_0x5557f0['model'],qs[_0xfa2e('0x37')](_0x576cb8[_0xfa2e('0x34')][_0xfa2e('0x37')]));_0x7938b[_0xfa2e('0x35')]=_0x7938b['attributes'][_0xfa2e('0x38')]?_0x7938b[_0xfa2e('0x35')]:_0x5557f0[_0xfa2e('0x33')];if(_0x576cb8[_0xfa2e('0x34')][_0xfa2e('0x43')]){_0x7938b[_0xfa2e('0x44')]=[{'all':!![]}];}_0x7938b=_[_0xfa2e('0x40')]({},_0x7938b,_0x576cb8[_0xfa2e('0x41')]);return db['SugarcrmField'][_0xfa2e('0x49')](_0x7938b)[_0xfa2e('0x27')](handleEntityNotFound(_0x51897f,null))[_0xfa2e('0x27')](respondWithResult(_0x51897f,null))[_0xfa2e('0x46')](handleError(_0x51897f,null));};exports[_0xfa2e('0x4a')]=function(_0x20b9a6,_0x287d21){return db['SugarcrmField'][_0xfa2e('0x4a')](_0x20b9a6[_0xfa2e('0x4b')],{})['then'](respondWithResult(_0x287d21,0xc9))['catch'](handleError(_0x287d21,null));};exports[_0xfa2e('0x25')]=function(_0x2a5c6a,_0x22e6a3){if(_0x2a5c6a[_0xfa2e('0x4b')]['id']){delete _0x2a5c6a[_0xfa2e('0x4b')]['id'];}return db[_0xfa2e('0x42')][_0xfa2e('0x49')]({'where':{'id':_0x2a5c6a[_0xfa2e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x22e6a3,null))[_0xfa2e('0x27')](saveUpdates(_0x2a5c6a[_0xfa2e('0x4b')],null))[_0xfa2e('0x27')](respondWithResult(_0x22e6a3,null))[_0xfa2e('0x46')](handleError(_0x22e6a3,null));};exports['destroy']=function(_0x5d2450,_0x5f07dd){return db['SugarcrmField'][_0xfa2e('0x49')]({'where':{'id':_0x5d2450[_0xfa2e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5f07dd,null))[_0xfa2e('0x27')](removeEntity(_0x5f07dd,null))[_0xfa2e('0x46')](handleError(_0x5f07dd,null));};
\ No newline at end of file
+var _0x9a95=['where','pick','VIRTUAL','merge','options','findAll','rawAttributes','include','find','create','body','catch','eml-format','moment','bluebird','sox','to-csv','ejs','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','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SugarcrmField','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort'];(function(_0x30c1bb,_0x3cb0da){var _0x42807c=function(_0x546b1c){while(--_0x546b1c){_0x30c1bb['push'](_0x30c1bb['shift']());}};_0x42807c(++_0x3cb0da);}(_0x9a95,0xd5));var _0x59a9=function(_0x9e171d,_0x32b054){_0x9e171d=_0x9e171d-0x0;var _0x4ed6bf=_0x9a95[_0x9e171d];return _0x4ed6bf;};'use strict';var emlformat=require(_0x59a9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x59a9('0x1'));var BPromise=require(_0x59a9('0x2'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x59a9('0x3'));var csv=require(_0x59a9('0x4'));var ejs=require(_0x59a9('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x59a9('0x6'));var squel=require('squel');var crypto=require(_0x59a9('0x7'));var jsforce=require(_0x59a9('0x8'));var deskjs=require(_0x59a9('0x9'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x59a9('0xa'));var Redis=require(_0x59a9('0xb'));var authService=require(_0x59a9('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x59a9('0xd'));var hardwareService=require(_0x59a9('0xe'));var logger=require(_0x59a9('0xf'))(_0x59a9('0x10'));var utils=require(_0x59a9('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x59a9('0x12'));var db=require(_0x59a9('0x13'))['db'];function respondWithStatusCode(_0x321e88,_0x224a2b){_0x224a2b=_0x224a2b||0xcc;return function(_0xee6121){if(_0xee6121){return _0x321e88[_0x59a9('0x14')](_0x224a2b);}return _0x321e88[_0x59a9('0x15')](_0x224a2b)[_0x59a9('0x16')]();};}function respondWithResult(_0x3d6bdd,_0x423692){_0x423692=_0x423692||0xc8;return function(_0x49ca42){if(_0x49ca42){return _0x3d6bdd[_0x59a9('0x15')](_0x423692)[_0x59a9('0x17')](_0x49ca42);}};}function respondWithFilteredResult(_0x59be47,_0x334f0f){return function(_0x4abd5f){if(_0x4abd5f){var _0x2792e9=typeof _0x334f0f[_0x59a9('0x18')]==='undefined'&&typeof _0x334f0f[_0x59a9('0x19')]===_0x59a9('0x1a');var _0x12ecf2=_0x4abd5f['count'];var _0x17f31d=_0x2792e9?0x0:_0x334f0f[_0x59a9('0x18')];var _0x4dc59d=_0x2792e9?_0x4abd5f[_0x59a9('0x1b')]:_0x334f0f[_0x59a9('0x18')]+_0x334f0f[_0x59a9('0x19')];var _0x1ca22a;if(_0x4dc59d>=_0x12ecf2){_0x4dc59d=_0x12ecf2;_0x1ca22a=0xc8;}else{_0x1ca22a=0xce;}_0x59be47[_0x59a9('0x15')](_0x1ca22a);return _0x59be47[_0x59a9('0x1c')](_0x59a9('0x1d'),_0x17f31d+'-'+_0x4dc59d+'/'+_0x12ecf2)[_0x59a9('0x17')](_0x4abd5f);}return null;};}function patchUpdates(_0x5bbfe7){return function(_0x29bb26){try{jsonpatch[_0x59a9('0x1e')](_0x29bb26,_0x5bbfe7,!![]);}catch(_0x242309){return BPromise[_0x59a9('0x1f')](_0x242309);}return _0x29bb26[_0x59a9('0x20')]();};}function saveUpdates(_0x734ce7,_0x370a90){return function(_0x25b7b4){if(_0x25b7b4){return _0x25b7b4[_0x59a9('0x21')](_0x734ce7)[_0x59a9('0x22')](function(_0x377989){return _0x377989;});}return null;};}function removeEntity(_0x18cb16,_0xa890ae){return function(_0x818030){if(_0x818030){return _0x818030[_0x59a9('0x23')]()[_0x59a9('0x22')](function(){_0x18cb16['status'](0xcc)[_0x59a9('0x16')]();});}};}function handleEntityNotFound(_0x5a2c85,_0x55e23c){return function(_0x5a9a65){if(!_0x5a9a65){_0x5a2c85[_0x59a9('0x14')](0x194);}return _0x5a9a65;};}function handleError(_0x28044b,_0x33b2ea){_0x33b2ea=_0x33b2ea||0x1f4;return function(_0x11ae02){logger[_0x59a9('0x24')](_0x11ae02[_0x59a9('0x25')]);if(_0x11ae02['name']){delete _0x11ae02[_0x59a9('0x26')];}_0x28044b[_0x59a9('0x15')](_0x33b2ea)[_0x59a9('0x27')](_0x11ae02);};}exports[_0x59a9('0x28')]=function(_0xe79f5e,_0x267d32){var _0x458144={},_0x45f04d={},_0x365b69={'count':0x0,'rows':[]};var _0x31cb16=_[_0x59a9('0x29')](db[_0x59a9('0x2a')]['rawAttributes'],function(_0x2e1528){return{'name':_0x2e1528[_0x59a9('0x2b')],'type':_0x2e1528[_0x59a9('0x2c')]['key']};});_0x45f04d[_0x59a9('0x2d')]=_[_0x59a9('0x29')](_0x31cb16,_0x59a9('0x26'));_0x45f04d[_0x59a9('0x2e')]=_[_0x59a9('0x2f')](_0xe79f5e[_0x59a9('0x2e')]);_0x45f04d[_0x59a9('0x30')]=_[_0x59a9('0x31')](_0x45f04d[_0x59a9('0x2d')],_0x45f04d[_0x59a9('0x2e')]);_0x458144[_0x59a9('0x32')]=_[_0x59a9('0x31')](_0x45f04d[_0x59a9('0x2d')],qs['fields'](_0xe79f5e[_0x59a9('0x2e')][_0x59a9('0x33')]));_0x458144[_0x59a9('0x32')]=_0x458144[_0x59a9('0x32')][_0x59a9('0x34')]?_0x458144[_0x59a9('0x32')]:_0x45f04d[_0x59a9('0x2d')];if(!_0xe79f5e['query'][_0x59a9('0x35')]('nolimit')){_0x458144[_0x59a9('0x19')]=qs[_0x59a9('0x19')](_0xe79f5e[_0x59a9('0x2e')][_0x59a9('0x19')]);_0x458144[_0x59a9('0x18')]=qs[_0x59a9('0x18')](_0xe79f5e[_0x59a9('0x2e')]['offset']);}_0x458144['order']=qs[_0x59a9('0x36')](_0xe79f5e[_0x59a9('0x2e')][_0x59a9('0x36')]);_0x458144[_0x59a9('0x37')]=qs[_0x59a9('0x30')](_[_0x59a9('0x38')](_0xe79f5e['query'],_0x45f04d[_0x59a9('0x30')]),_0x31cb16);if(_0xe79f5e[_0x59a9('0x2e')]['filter']){_0x458144[_0x59a9('0x37')]=_['merge'](_0x458144[_0x59a9('0x37')],{'$or':_['map'](_0x31cb16,function(_0x3705c8){if(_0x3705c8[_0x59a9('0x2c')]!==_0x59a9('0x39')){var _0x78a753={};_0x78a753[_0x3705c8['name']]={'$like':'%'+_0xe79f5e[_0x59a9('0x2e')]['filter']+'%'};return _0x78a753;}})});}_0x458144=_[_0x59a9('0x3a')]({},_0x458144,_0xe79f5e[_0x59a9('0x3b')]);var _0x2f86a2={'where':_0x458144['where']};return db[_0x59a9('0x2a')][_0x59a9('0x1b')](_0x2f86a2)['then'](function(_0x5e2ba3){_0x365b69[_0x59a9('0x1b')]=_0x5e2ba3;if(_0xe79f5e[_0x59a9('0x2e')]['includeAll']){_0x458144['include']=[{'all':!![]}];}return db[_0x59a9('0x2a')][_0x59a9('0x3c')](_0x458144);})['then'](function(_0x168cc4){_0x365b69['rows']=_0x168cc4;return _0x365b69;})[_0x59a9('0x22')](respondWithFilteredResult(_0x267d32,_0x458144))['catch'](handleError(_0x267d32,null));};exports['show']=function(_0x116d5d,_0x3182ae){var _0x13b421={'raw':!![],'where':{'id':_0x116d5d['params']['id']}},_0x5eb4b9={};_0x5eb4b9[_0x59a9('0x2d')]=_[_0x59a9('0x2f')](db[_0x59a9('0x2a')][_0x59a9('0x3d')]);_0x5eb4b9[_0x59a9('0x2e')]=_[_0x59a9('0x2f')](_0x116d5d['query']);_0x5eb4b9[_0x59a9('0x30')]=_['intersection'](_0x5eb4b9[_0x59a9('0x2d')],_0x5eb4b9[_0x59a9('0x2e')]);_0x13b421[_0x59a9('0x32')]=_[_0x59a9('0x31')](_0x5eb4b9['model'],qs[_0x59a9('0x33')](_0x116d5d[_0x59a9('0x2e')]['fields']));_0x13b421[_0x59a9('0x32')]=_0x13b421[_0x59a9('0x32')][_0x59a9('0x34')]?_0x13b421[_0x59a9('0x32')]:_0x5eb4b9[_0x59a9('0x2d')];if(_0x116d5d[_0x59a9('0x2e')]['includeAll']){_0x13b421[_0x59a9('0x3e')]=[{'all':!![]}];}_0x13b421=_['merge']({},_0x13b421,_0x116d5d[_0x59a9('0x3b')]);return db[_0x59a9('0x2a')][_0x59a9('0x3f')](_0x13b421)[_0x59a9('0x22')](handleEntityNotFound(_0x3182ae,null))['then'](respondWithResult(_0x3182ae,null))['catch'](handleError(_0x3182ae,null));};exports['create']=function(_0x10cf8d,_0x5de906){return db['SugarcrmField'][_0x59a9('0x40')](_0x10cf8d[_0x59a9('0x41')],{})[_0x59a9('0x22')](respondWithResult(_0x5de906,0xc9))[_0x59a9('0x42')](handleError(_0x5de906,null));};exports[_0x59a9('0x21')]=function(_0x3442aa,_0x19ec4f){if(_0x3442aa[_0x59a9('0x41')]['id']){delete _0x3442aa[_0x59a9('0x41')]['id'];}return db[_0x59a9('0x2a')][_0x59a9('0x3f')]({'where':{'id':_0x3442aa['params']['id']}})[_0x59a9('0x22')](handleEntityNotFound(_0x19ec4f,null))[_0x59a9('0x22')](saveUpdates(_0x3442aa[_0x59a9('0x41')],null))[_0x59a9('0x22')](respondWithResult(_0x19ec4f,null))[_0x59a9('0x42')](handleError(_0x19ec4f,null));};exports[_0x59a9('0x23')]=function(_0x1d228f,_0x2cb55d){return db[_0x59a9('0x2a')][_0x59a9('0x3f')]({'where':{'id':_0x1d228f['params']['id']}})[_0x59a9('0x22')](handleEntityNotFound(_0x2cb55d,null))[_0x59a9('0x22')](removeEntity(_0x2cb55d,null))[_0x59a9('0x42')](handleError(_0x2cb55d,null));};
\ No newline at end of file
index 871536d..6179b52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20dd=['../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','util','../../config/logger','moment','bluebird','path'];(function(_0x5edca6,_0x1178a6){var _0x2d30ab=function(_0x15c024){while(--_0x15c024){_0x5edca6['push'](_0x5edca6['shift']());}};_0x2d30ab(++_0x1178a6);}(_0x20dd,0x87));var _0xd20d=function(_0x10dc5d,_0x35ef9e){_0x10dc5d=_0x10dc5d-0x0;var _0x141f2b=_0x20dd[_0x10dc5d];return _0x141f2b;};'use strict';var _=require('lodash');var util=require(_0xd20d('0x0'));var logger=require(_0xd20d('0x1'))('api');var moment=require(_0xd20d('0x2'));var BPromise=require(_0xd20d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd20d('0x4'));var rimraf=require('rimraf');var config=require(_0xd20d('0x5'));var attributes=require(_0xd20d('0x6'));module[_0xd20d('0x7')]=function(_0x4c3191,_0xcf391d){return _0x4c3191[_0xd20d('0x8')](_0xd20d('0x9'),attributes,{'tableName':_0xd20d('0xa'),'paranoid':![],'indexes':[{'name':_0xd20d('0xb'),'fields':[_0xd20d('0xc'),_0xd20d('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdfd9=['int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intSugarcrmField.attributes','exports','define'];(function(_0x31f31e,_0x2faa28){var _0x25b275=function(_0x500701){while(--_0x500701){_0x31f31e['push'](_0x31f31e['shift']());}};_0x25b275(++_0x2faa28);}(_0xdfd9,0x124));var _0x9dfd=function(_0x5b8287,_0x36c4f4){_0x5b8287=_0x5b8287-0x0;var _0x484441=_0xdfd9[_0x5b8287];return _0x484441;};'use strict';var _=require(_0x9dfd('0x0'));var util=require(_0x9dfd('0x1'));var logger=require(_0x9dfd('0x2'))(_0x9dfd('0x3'));var moment=require(_0x9dfd('0x4'));var BPromise=require(_0x9dfd('0x5'));var rp=require(_0x9dfd('0x6'));var fs=require('fs');var path=require(_0x9dfd('0x7'));var rimraf=require(_0x9dfd('0x8'));var config=require('../../config/environment');var attributes=require(_0x9dfd('0x9'));module[_0x9dfd('0xa')]=function(_0x43e687,_0x5111d2){return _0x43e687[_0x9dfd('0xb')]('SugarcrmField',attributes,{'tableName':_0x9dfd('0xc'),'paranoid':![],'indexes':[{'name':_0x9dfd('0xd'),'fields':[_0x9dfd('0xe'),_0x9dfd('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index a7ab3a5..4ee363f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9be5=['info','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','error','code','SugarcrmField,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x9be5,0x189));var _0x59be=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0x9be5[_0x3c4737];return _0x2bb926;};'use strict';var _=require(_0x59be('0x0'));var util=require(_0x59be('0x1'));var moment=require(_0x59be('0x2'));var BPromise=require(_0x59be('0x3'));var rs=require(_0x59be('0x4'));var fs=require('fs');var Redis=require(_0x59be('0x5'));var db=require(_0x59be('0x6'))['db'];var utils=require(_0x59be('0x7'));var logger=require(_0x59be('0x8'))(_0x59be('0x9'));var config=require(_0x59be('0xa'));var jayson=require(_0x59be('0xb'));var client=jayson[_0x59be('0xc')][_0x59be('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x105ca8,_0x201ff6,_0x4858ef){return new BPromise(function(_0x8338cf,_0x58fe57){return client['request'](_0x105ca8,_0x4858ef)[_0x59be('0xe')](function(_0x1e48c5){logger[_0x59be('0xf')]('SugarcrmField,\x20%s,\x20%s',_0x201ff6,_0x59be('0x10'));logger[_0x59be('0x11')](_0x59be('0x12'),_0x201ff6,_0x59be('0x10'),JSON['stringify'](_0x1e48c5));if(_0x1e48c5[_0x59be('0x13')]){if(_0x1e48c5[_0x59be('0x13')][_0x59be('0x14')]===0x1f4){logger[_0x59be('0x13')](_0x59be('0x15'),_0x201ff6,_0x1e48c5['error'][_0x59be('0x16')]);return _0x58fe57(_0x1e48c5[_0x59be('0x13')][_0x59be('0x16')]);}logger[_0x59be('0x13')](_0x59be('0x15'),_0x201ff6,_0x1e48c5[_0x59be('0x13')]['message']);return _0x8338cf(_0x1e48c5[_0x59be('0x13')][_0x59be('0x16')]);}else{logger[_0x59be('0xf')](_0x59be('0x15'),_0x201ff6,'request\x20sent');_0x8338cf(_0x1e48c5['result'][_0x59be('0x16')]);}})[_0x59be('0x17')](function(_0x550be2){logger[_0x59be('0x13')](_0x59be('0x15'),_0x201ff6,_0x550be2);_0x58fe57(_0x550be2);});});}
\ No newline at end of file
+var _0xf699=['../../config/environment','jayson/promise','client','request','then','SugarcrmField,\x20%s,\x20%s','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x5c5c52,_0x36d085){var _0x4229ff=function(_0x3806df){while(--_0x3806df){_0x5c5c52['push'](_0x5c5c52['shift']());}};_0x4229ff(++_0x36d085);}(_0xf699,0x15e));var _0x9f69=function(_0x2c3955,_0x29f0c9){_0x2c3955=_0x2c3955-0x0;var _0x39aca2=_0xf699[_0x2c3955];return _0x39aca2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9f69('0x0'));var BPromise=require(_0x9f69('0x1'));var rs=require(_0x9f69('0x2'));var fs=require('fs');var Redis=require(_0x9f69('0x3'));var db=require(_0x9f69('0x4'))['db'];var utils=require(_0x9f69('0x5'));var logger=require(_0x9f69('0x6'))('rpc');var config=require(_0x9f69('0x7'));var jayson=require(_0x9f69('0x8'));var client=jayson[_0x9f69('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1a7f9a,_0x57f9d0,_0x31b238){return new BPromise(function(_0x27688d,_0xd48fb8){return client[_0x9f69('0xa')](_0x1a7f9a,_0x31b238)[_0x9f69('0xb')](function(_0x582837){logger['info'](_0x9f69('0xc'),_0x57f9d0,'request\x20sent');logger[_0x9f69('0xd')](_0x9f69('0xe'),_0x57f9d0,_0x9f69('0xf'),JSON['stringify'](_0x582837));if(_0x582837[_0x9f69('0x10')]){if(_0x582837[_0x9f69('0x10')][_0x9f69('0x11')]===0x1f4){logger[_0x9f69('0x10')](_0x9f69('0xc'),_0x57f9d0,_0x582837[_0x9f69('0x10')][_0x9f69('0x12')]);return _0xd48fb8(_0x582837[_0x9f69('0x10')]['message']);}logger['error'](_0x9f69('0xc'),_0x57f9d0,_0x582837[_0x9f69('0x10')][_0x9f69('0x12')]);return _0x27688d(_0x582837[_0x9f69('0x10')][_0x9f69('0x12')]);}else{logger[_0x9f69('0x13')](_0x9f69('0xc'),_0x57f9d0,_0x9f69('0xf'));_0x27688d(_0x582837['result']['message']);}})[_0x9f69('0x14')](function(_0x270b16){logger['error'](_0x9f69('0xc'),_0x57f9d0,_0x270b16);_0xd48fb8(_0x270b16);});});}
\ No newline at end of file
index 9ea73a5..5194748 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e0d=['/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','put','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x2b46f7,_0x5f1a2b){var _0x2f837c=function(_0x51ac5e){while(--_0x51ac5e){_0x2b46f7['push'](_0x2b46f7['shift']());}};_0x2f837c(++_0x5f1a2b);}(_0x8e0d,0x82));var _0xd8e0=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0x8e0d[_0x363ef8];return _0x148822;};'use strict';var multer=require(_0xd8e0('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xd8e0('0x1'));var express=require(_0xd8e0('0x2'));var router=express['Router']();var fs_extra=require(_0xd8e0('0x3'));var auth=require(_0xd8e0('0x4'));var interaction=require(_0xd8e0('0x5'));var config=require(_0xd8e0('0x6'));var controller=require('./intVtigerAccount.controller');router['get']('/',auth[_0xd8e0('0x7')](),controller[_0xd8e0('0x8')]);router[_0xd8e0('0x9')](_0xd8e0('0xa'),auth['isAuthenticated'](),controller[_0xd8e0('0xb')]);router[_0xd8e0('0x9')](_0xd8e0('0xc'),auth[_0xd8e0('0x7')](),controller[_0xd8e0('0xd')]);router['get'](_0xd8e0('0xe'),auth['isAuthenticated'](),controller[_0xd8e0('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd8e0('0x10')]);router[_0xd8e0('0x11')](_0xd8e0('0xc'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0xd8e0('0x12')]('/:id',auth[_0xd8e0('0x7')](),controller['update']);router['delete']('/:id',auth[_0xd8e0('0x7')](),controller['destroy']);module[_0xd8e0('0x13')]=router;
\ No newline at end of file
+var _0x077a=['../../config/environment','get','isAuthenticated','show','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x077a,0x1f2));var _0xa077=function(_0x2d98f1,_0x21174b){_0x2d98f1=_0x2d98f1-0x0;var _0x701cc7=_0x077a[_0x2d98f1];return _0x701cc7;};'use strict';var multer=require(_0xa077('0x0'));var util=require('util');var path=require(_0xa077('0x1'));var timeout=require(_0xa077('0x2'));var express=require(_0xa077('0x3'));var router=express[_0xa077('0x4')]();var fs_extra=require(_0xa077('0x5'));var auth=require(_0xa077('0x6'));var interaction=require(_0xa077('0x7'));var config=require(_0xa077('0x8'));var controller=require('./intVtigerAccount.controller');router[_0xa077('0x9')]('/',auth[_0xa077('0xa')](),controller['index']);router['get']('/:id',auth[_0xa077('0xa')](),controller[_0xa077('0xb')]);router['get']('/:id/configurations',auth[_0xa077('0xa')](),controller[_0xa077('0xc')]);router[_0xa077('0x9')](_0xa077('0xd'),auth[_0xa077('0xa')](),controller[_0xa077('0xe')]);router[_0xa077('0xf')]('/',auth['isAuthenticated'](),controller[_0xa077('0x10')]);router[_0xa077('0xf')](_0xa077('0x11'),auth[_0xa077('0xa')](),controller['addConfiguration']);router['put'](_0xa077('0x12'),auth[_0xa077('0xa')](),controller[_0xa077('0x13')]);router[_0xa077('0x14')](_0xa077('0x12'),auth[_0xa077('0xa')](),controller[_0xa077('0x15')]);module[_0xa077('0x16')]=router;
\ No newline at end of file
index 7e9947d..404eda1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3268=['STRING','HelpDesk','exports'];(function(_0x3fcee8,_0x24cfb3){var _0x32e04d=function(_0x19a0d1){while(--_0x19a0d1){_0x3fcee8['push'](_0x3fcee8['shift']());}};_0x32e04d(++_0x24cfb3);}(_0x3268,0xbc));var _0x8326=function(_0x355631,_0x539cef){_0x355631=_0x355631-0x0;var _0x38a5fa=_0x3268[_0x355631];return _0x38a5fa;};'use strict';var Sequelize=require('sequelize');module[_0x8326('0x0')]={'name':{'type':Sequelize[_0x8326('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x8326('0x1')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0x8326('0x1')],'allowNull':![],'defaultValue':_0x8326('0x2')},'remoteUri':{'type':Sequelize[_0x8326('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x8326('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x22f3=['STRING','HelpDesk','sequelize'];(function(_0x12c217,_0x589aa1){var _0x11018f=function(_0x450db7){while(--_0x450db7){_0x12c217['push'](_0x12c217['shift']());}};_0x11018f(++_0x589aa1);}(_0x22f3,0x12e));var _0x322f=function(_0x448299,_0x107cfe){_0x448299=_0x448299-0x0;var _0x4aa96c=_0x22f3[_0x448299];return _0x4aa96c;};'use strict';var Sequelize=require(_0x322f('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x322f('0x1')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0x322f('0x1')],'allowNull':![],'defaultValue':_0x322f('0x2')},'remoteUri':{'type':Sequelize[_0x322f('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x322f('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x322f('0x1')],'allowNull':![]}};
\ No newline at end of file
index cc5b4d6..a193857 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41e7=['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','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','VtigerAccount','rawAttributes','fieldName','type','key','query','intersection','model','fields','attributes','length','nolimit','order','sort','filters','pick','filter','merge','VIRTUAL','options','where','include','findAll','rows','catch','show','keys','includeAll','find','create','body','params','findOne','VtigerConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','md5','getFields','username','description','serverUrl','accessKey','moduleName','substring','format','%s/webservice.php','GET','POST','result','token','describe','success','autogenerated','reference','owner','remove','includes','editable','cf_','picklist','value','log','vTiger\x20error:\x20','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x41e7,0xe4));var _0x741e=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x41e7[_0x17d9e3];return _0x14192d;};'use strict';var emlformat=require(_0x741e('0x0'));var rimraf=require(_0x741e('0x1'));var zipdir=require(_0x741e('0x2'));var jsonpatch=require(_0x741e('0x3'));var rp=require(_0x741e('0x4'));var moment=require(_0x741e('0x5'));var BPromise=require(_0x741e('0x6'));var Mustache=require(_0x741e('0x7'));var util=require('util');var path=require(_0x741e('0x8'));var sox=require(_0x741e('0x9'));var csv=require(_0x741e('0xa'));var ejs=require(_0x741e('0xb'));var fs=require('fs');var fs_extra=require(_0x741e('0xc'));var _=require(_0x741e('0xd'));var squel=require(_0x741e('0xe'));var crypto=require(_0x741e('0xf'));var jsforce=require(_0x741e('0x10'));var deskjs=require(_0x741e('0x11'));var toCsv=require(_0x741e('0xa'));var querystring=require(_0x741e('0x12'));var Papa=require(_0x741e('0x13'));var Redis=require(_0x741e('0x14'));var authService=require(_0x741e('0x15'));var qs=require(_0x741e('0x16'));var as=require(_0x741e('0x17'));var hardwareService=require(_0x741e('0x18'));var logger=require(_0x741e('0x19'))(_0x741e('0x1a'));var utils=require(_0x741e('0x1b'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x741e('0x1c'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x56db0f,_0x4dc4ff){_0x4dc4ff=_0x4dc4ff||0xcc;return function(_0x1d4ff7){if(_0x1d4ff7){return _0x56db0f['sendStatus'](_0x4dc4ff);}return _0x56db0f[_0x741e('0x1d')](_0x4dc4ff)['end']();};}function respondWithResult(_0x193dc0,_0x4b060c){_0x4b060c=_0x4b060c||0xc8;return function(_0x570747){if(_0x570747){return _0x193dc0[_0x741e('0x1d')](_0x4b060c)[_0x741e('0x1e')](_0x570747);}};}function respondWithFilteredResult(_0x4c3a4b,_0x2e656d){return function(_0x5df91a){if(_0x5df91a){var _0xda6aa2=typeof _0x2e656d[_0x741e('0x1f')]===_0x741e('0x20')&&typeof _0x2e656d['limit']===_0x741e('0x20');var _0xbc5e4b=_0x5df91a[_0x741e('0x21')];var _0x4dba5d=_0xda6aa2?0x0:_0x2e656d['offset'];var _0x366f8e=_0xda6aa2?_0x5df91a[_0x741e('0x21')]:_0x2e656d['offset']+_0x2e656d[_0x741e('0x22')];var _0x583561;if(_0x366f8e>=_0xbc5e4b){_0x366f8e=_0xbc5e4b;_0x583561=0xc8;}else{_0x583561=0xce;}_0x4c3a4b[_0x741e('0x1d')](_0x583561);return _0x4c3a4b[_0x741e('0x23')](_0x741e('0x24'),_0x4dba5d+'-'+_0x366f8e+'/'+_0xbc5e4b)[_0x741e('0x1e')](_0x5df91a);}return null;};}function patchUpdates(_0x508960){return function(_0xd98864){try{jsonpatch['apply'](_0xd98864,_0x508960,!![]);}catch(_0x3c19f7){return BPromise['reject'](_0x3c19f7);}return _0xd98864['save']();};}function saveUpdates(_0x28d756,_0x3053f8){return function(_0x28de2d){if(_0x28de2d){return _0x28de2d[_0x741e('0x25')](_0x28d756)[_0x741e('0x26')](function(_0x589229){return _0x589229;});}return null;};}function removeEntity(_0x4d7983,_0x4a1108){return function(_0x577acc){if(_0x577acc){return _0x577acc[_0x741e('0x27')]()[_0x741e('0x26')](function(){_0x4d7983['status'](0xcc)[_0x741e('0x28')]();});}};}function handleEntityNotFound(_0xb5074b,_0x35c6b4){return function(_0x3604c6){if(!_0x3604c6){_0xb5074b[_0x741e('0x29')](0x194);}return _0x3604c6;};}function handleError(_0x2e4c8f,_0x44ca36){_0x44ca36=_0x44ca36||0x1f4;return function(_0x2f4858){logger[_0x741e('0x2a')](_0x2f4858[_0x741e('0x2b')]);if(_0x2f4858['name']){delete _0x2f4858[_0x741e('0x2c')];}_0x2e4c8f[_0x741e('0x1d')](_0x44ca36)[_0x741e('0x2d')](_0x2f4858);};}exports[_0x741e('0x2e')]=function(_0xa70aaf,_0x4adfa4){var _0x4f3a02={},_0x4e4a2f={},_0x2c9a4c={'count':0x0,'rows':[]};var _0x16141c=_[_0x741e('0x2f')](db[_0x741e('0x30')][_0x741e('0x31')],function(_0x3f8ad4){return{'name':_0x3f8ad4[_0x741e('0x32')],'type':_0x3f8ad4[_0x741e('0x33')][_0x741e('0x34')]};});_0x4e4a2f['model']=_['map'](_0x16141c,_0x741e('0x2c'));_0x4e4a2f[_0x741e('0x35')]=_['keys'](_0xa70aaf[_0x741e('0x35')]);_0x4e4a2f['filters']=_[_0x741e('0x36')](_0x4e4a2f[_0x741e('0x37')],_0x4e4a2f[_0x741e('0x35')]);_0x4f3a02['attributes']=_[_0x741e('0x36')](_0x4e4a2f['model'],qs[_0x741e('0x38')](_0xa70aaf[_0x741e('0x35')][_0x741e('0x38')]));_0x4f3a02[_0x741e('0x39')]=_0x4f3a02[_0x741e('0x39')][_0x741e('0x3a')]?_0x4f3a02[_0x741e('0x39')]:_0x4e4a2f[_0x741e('0x37')];if(!_0xa70aaf[_0x741e('0x35')]['hasOwnProperty'](_0x741e('0x3b'))){_0x4f3a02['limit']=qs[_0x741e('0x22')](_0xa70aaf[_0x741e('0x35')][_0x741e('0x22')]);_0x4f3a02[_0x741e('0x1f')]=qs[_0x741e('0x1f')](_0xa70aaf['query'][_0x741e('0x1f')]);}_0x4f3a02[_0x741e('0x3c')]=qs['sort'](_0xa70aaf[_0x741e('0x35')][_0x741e('0x3d')]);_0x4f3a02['where']=qs[_0x741e('0x3e')](_[_0x741e('0x3f')](_0xa70aaf[_0x741e('0x35')],_0x4e4a2f[_0x741e('0x3e')]),_0x16141c);if(_0xa70aaf[_0x741e('0x35')][_0x741e('0x40')]){_0x4f3a02['where']=_[_0x741e('0x41')](_0x4f3a02['where'],{'$or':_[_0x741e('0x2f')](_0x16141c,function(_0x43433a){if(_0x43433a[_0x741e('0x33')]!==_0x741e('0x42')){var _0x14ec75={};_0x14ec75[_0x43433a[_0x741e('0x2c')]]={'$like':'%'+_0xa70aaf[_0x741e('0x35')]['filter']+'%'};return _0x14ec75;}})});}_0x4f3a02=_[_0x741e('0x41')]({},_0x4f3a02,_0xa70aaf[_0x741e('0x43')]);var _0x2a379c={'where':_0x4f3a02[_0x741e('0x44')]};return db['VtigerAccount']['count'](_0x2a379c)[_0x741e('0x26')](function(_0x5ce736){_0x2c9a4c['count']=_0x5ce736;if(_0xa70aaf[_0x741e('0x35')]['includeAll']){_0x4f3a02[_0x741e('0x45')]=[{'all':!![]}];}return db['VtigerAccount'][_0x741e('0x46')](_0x4f3a02);})[_0x741e('0x26')](function(_0x1e0d94){_0x2c9a4c[_0x741e('0x47')]=_0x1e0d94;return _0x2c9a4c;})['then'](respondWithFilteredResult(_0x4adfa4,_0x4f3a02))[_0x741e('0x48')](handleError(_0x4adfa4,null));};exports[_0x741e('0x49')]=function(_0xc068aa,_0x17ab5f){var _0xecb88f={'raw':![],'where':{'id':_0xc068aa['params']['id']}},_0xc85dc0={};_0xc85dc0[_0x741e('0x37')]=_[_0x741e('0x4a')](db[_0x741e('0x30')][_0x741e('0x31')]);_0xc85dc0[_0x741e('0x35')]=_[_0x741e('0x4a')](_0xc068aa[_0x741e('0x35')]);_0xc85dc0[_0x741e('0x3e')]=_[_0x741e('0x36')](_0xc85dc0['model'],_0xc85dc0[_0x741e('0x35')]);_0xecb88f[_0x741e('0x39')]=_[_0x741e('0x36')](_0xc85dc0['model'],qs[_0x741e('0x38')](_0xc068aa[_0x741e('0x35')][_0x741e('0x38')]));_0xecb88f[_0x741e('0x39')]=_0xecb88f[_0x741e('0x39')][_0x741e('0x3a')]?_0xecb88f[_0x741e('0x39')]:_0xc85dc0[_0x741e('0x37')];if(_0xc068aa['query'][_0x741e('0x4b')]){_0xecb88f[_0x741e('0x45')]=[{'all':!![]}];}_0xecb88f=_[_0x741e('0x41')]({},_0xecb88f,_0xc068aa['options']);return db[_0x741e('0x30')][_0x741e('0x4c')](_0xecb88f)[_0x741e('0x26')](handleEntityNotFound(_0x17ab5f,null))['then'](respondWithResult(_0x17ab5f,null))[_0x741e('0x48')](handleError(_0x17ab5f,null));};exports[_0x741e('0x4d')]=function(_0x38e0b1,_0x398a29){return db[_0x741e('0x30')][_0x741e('0x4d')](_0x38e0b1['body'],{})[_0x741e('0x26')](respondWithResult(_0x398a29,0xc9))[_0x741e('0x48')](handleError(_0x398a29,null));};exports[_0x741e('0x25')]=function(_0x176e89,_0x4a7c08){if(_0x176e89[_0x741e('0x4e')]['id']){delete _0x176e89[_0x741e('0x4e')]['id'];}return db['VtigerAccount'][_0x741e('0x4c')]({'where':{'id':_0x176e89[_0x741e('0x4f')]['id']}})['then'](handleEntityNotFound(_0x4a7c08,null))[_0x741e('0x26')](saveUpdates(_0x176e89[_0x741e('0x4e')],null))['then'](respondWithResult(_0x4a7c08,null))[_0x741e('0x48')](handleError(_0x4a7c08,null));};exports[_0x741e('0x27')]=function(_0x4daf85,_0x44223e){return db[_0x741e('0x30')][_0x741e('0x4c')]({'where':{'id':_0x4daf85['params']['id']}})[_0x741e('0x26')](handleEntityNotFound(_0x44223e,null))['then'](removeEntity(_0x44223e,null))[_0x741e('0x48')](handleError(_0x44223e,null));};exports['getConfigurations']=function(_0x5eb829,_0x54c566,_0x15364a){var _0x2a1c2e={};var _0x3e8e98={};var _0x363944;var _0x5cd470;return db[_0x741e('0x30')][_0x741e('0x50')]({'where':{'id':_0x5eb829[_0x741e('0x4f')]['id']}})[_0x741e('0x26')](handleEntityNotFound(_0x54c566,null))['then'](function(_0x5443da){if(_0x5443da){_0x363944=_0x5443da;_0x3e8e98[_0x741e('0x37')]=_['keys'](db[_0x741e('0x51')][_0x741e('0x31')]);_0x3e8e98[_0x741e('0x35')]=_['keys'](_0x5eb829['query']);_0x3e8e98[_0x741e('0x3e')]=_[_0x741e('0x36')](_0x3e8e98[_0x741e('0x37')],_0x3e8e98[_0x741e('0x35')]);_0x2a1c2e[_0x741e('0x39')]=_['intersection'](_0x3e8e98[_0x741e('0x37')],qs[_0x741e('0x38')](_0x5eb829['query'][_0x741e('0x38')]));_0x2a1c2e[_0x741e('0x39')]=_0x2a1c2e[_0x741e('0x39')][_0x741e('0x3a')]?_0x2a1c2e[_0x741e('0x39')]:_0x3e8e98['model'];_0x2a1c2e[_0x741e('0x3c')]=qs[_0x741e('0x3d')](_0x5eb829['query']['sort']);_0x2a1c2e[_0x741e('0x44')]=qs[_0x741e('0x3e')](_[_0x741e('0x3f')](_0x5eb829[_0x741e('0x35')],_0x3e8e98['filters']));if(_0x5eb829[_0x741e('0x35')]['filter']){_0x2a1c2e[_0x741e('0x44')]=_[_0x741e('0x41')](_0x2a1c2e['where'],{'$or':_[_0x741e('0x2f')](_0x2a1c2e[_0x741e('0x39')],function(_0x5d365d){var _0xc90e0b={};_0xc90e0b[_0x5d365d]={'$like':'%'+_0x5eb829[_0x741e('0x35')]['filter']+'%'};return _0xc90e0b;})});}_0x2a1c2e=_[_0x741e('0x41')]({},_0x2a1c2e,_0x5eb829[_0x741e('0x43')]);return _0x363944['getConfigurations'](_0x2a1c2e);}})[_0x741e('0x26')](function(_0x31d483){if(_0x31d483){_0x5cd470=_0x31d483[_0x741e('0x3a')];if(!_0x5eb829[_0x741e('0x35')]['hasOwnProperty'](_0x741e('0x3b'))){_0x2a1c2e[_0x741e('0x22')]=qs[_0x741e('0x22')](_0x5eb829[_0x741e('0x35')][_0x741e('0x22')]);_0x2a1c2e['offset']=qs['offset'](_0x5eb829[_0x741e('0x35')][_0x741e('0x1f')]);}return _0x363944['getConfigurations'](_0x2a1c2e);}})['then'](function(_0x580e6f){if(_0x580e6f){return _0x580e6f?{'count':_0x5cd470,'rows':_0x580e6f}:null;}})['then'](respondWithResult(_0x54c566,null))[_0x741e('0x48')](handleError(_0x54c566,null));};exports[_0x741e('0x52')]=function(_0x471ff4,_0x5c1906,_0x15b083){if(_0x471ff4[_0x741e('0x4e')]['id']){delete _0x471ff4['body']['id'];}return db['VtigerAccount'][_0x741e('0x50')]({'where':{'id':_0x471ff4['params']['id']}})[_0x741e('0x26')](handleEntityNotFound(_0x5c1906,null))[_0x741e('0x26')](function(_0x332788){if(_0x332788){_0x471ff4[_0x741e('0x4e')][_0x741e('0x53')]=_0x332788['id'];_0x471ff4['body'][_0x741e('0x54')]=integrations[_0x741e('0x55')](_0x471ff4[_0x741e('0x4e')][_0x741e('0x56')],_0x471ff4['body'][_0x741e('0x33')]);_0x471ff4[_0x741e('0x4e')][_0x741e('0x57')]=integrations[_0x741e('0x58')](_0x471ff4[_0x741e('0x4e')][_0x741e('0x56')],_0x471ff4['body'][_0x741e('0x33')]);return db[_0x741e('0x51')]['create'](_0x471ff4[_0x741e('0x4e')],{'include':[{'model':db[_0x741e('0x59')],'as':_0x741e('0x54')},{'model':db['VtigerField'],'as':_0x741e('0x57')}]});}return null;})[_0x741e('0x26')](respondWithResult(_0x5c1906,null))[_0x741e('0x48')](handleError(_0x5c1906,null));};var md5=require(_0x741e('0x5a'));exports[_0x741e('0x5b')]=function(_0x399e0d,_0x1dfe81,_0x16f8cd){var _0x49ed28=null;var _0x336710=null;var _0x260a43=null;var _0x5d72f0=null;var _0x222dfc='';return db[_0x741e('0x30')][_0x741e('0x50')]({'where':{'id':_0x399e0d[_0x741e('0x4f')]['id']},'attributes':['id',_0x741e('0x2c'),_0x741e('0x5c'),_0x741e('0x5d'),'moduleName','remoteUri',_0x741e('0x5e'),_0x741e('0x5f')]})[_0x741e('0x26')](handleEntityNotFound(_0x1dfe81,null))[_0x741e('0x26')](function(_0x5872b7){if(_0x5872b7){_0x49ed28=_0x5872b7[_0x741e('0x5c')];_0x336710=_0x5872b7[_0x741e('0x5f')];_0x260a43=_0x5872b7[_0x741e('0x60')];_0x222dfc=_0x5872b7['remoteUri'];var _0x2a3f20=_0x222dfc['slice'](-0x1);if(_0x2a3f20==='/'){_0x222dfc=_0x222dfc[_0x741e('0x61')](0x0,_0x222dfc['lastIndexOf'](_0x2a3f20));}_0x5d72f0=util[_0x741e('0x62')](_0x741e('0x63'),_0x222dfc);var _0x28abf3={'method':_0x741e('0x64'),'uri':_0x5d72f0,'qs':{'operation':'getchallenge','username':_0x5872b7['username']},'json':!![]};return rp(_0x28abf3);}})[_0x741e('0x26')](function(_0x2a1be6){if(_0x2a1be6['success']){var _0x336351={'method':_0x741e('0x65'),'uri':_0x5d72f0,'form':{'operation':'login','username':_0x49ed28,'accessKey':md5(_0x2a1be6[_0x741e('0x66')][_0x741e('0x67')]+_0x336710)},'json':!![]};return rp(_0x336351);}})[_0x741e('0x26')](function(_0x203e58){if(_0x203e58['success']){var _0x30fde9={'method':_0x741e('0x64'),'uri':_0x5d72f0,'qs':{'operation':_0x741e('0x68'),'username':_0x49ed28,'sessionName':_0x203e58[_0x741e('0x66')]['sessionName'],'elementType':_0x260a43},'json':!![]};return rp(_0x30fde9);}})[_0x741e('0x26')](function(_0x170480){if(_0x170480[_0x741e('0x69')]){var _0x5e43da=[_0x741e('0x6a'),_0x741e('0x6b'),_0x741e('0x6c')];_[_0x741e('0x6d')](_0x170480['result'][_0x741e('0x38')],function(_0x4c45a0){return _0x5e43da[_0x741e('0x6e')](_0x4c45a0['type'][_0x741e('0x2c')]);});_[_0x741e('0x6d')](_0x170480[_0x741e('0x66')][_0x741e('0x38')],function(_0x5d176a){return _0x5d176a[_0x741e('0x6f')]==='false';});return{'count':_0x170480['result']['fields']['length'],'rows':_[_0x741e('0x2f')](_0x170480[_0x741e('0x66')]['fields'],function(_0x2802e2){return{'id':_0x2802e2['name'],'name':_0x2802e2['label'],'custom':_['startsWith'](_0x2802e2[_0x741e('0x2c')],_0x741e('0x70'))?!![]:![],'options':_0x2802e2[_0x741e('0x33')]['name']===_0x741e('0x71')&&_0x2802e2[_0x741e('0x33')]['picklistValues'][_0x741e('0x3a')]>0x0?_[_0x741e('0x2f')](_0x2802e2[_0x741e('0x33')]['picklistValues'],function(_0x315634){return{'name':_0x315634['label'],'value':_0x315634[_0x741e('0x72')]};}):[]};})};}})['then'](respondWithResult(_0x1dfe81,null))['catch'](function(_0x2a9908){console[_0x741e('0x73')](_0x741e('0x74')+_0x2a9908);var _0x13bd22=_0x399e0d[_0x741e('0x35')][_0x741e('0x75')]?0x1f4:_0x2a9908[_0x741e('0x76')]||0x1f4;logger[_0x741e('0x2a')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x13bd22,JSON[_0x741e('0x77')](_0x2a9908));delete _0x2a9908[_0x741e('0x2c')];if(_0x13bd22===0x191){_0x13bd22=0x190;}_0x1dfe81[_0x741e('0x1d')](_0x13bd22)['send'](_0x399e0d['query'][_0x741e('0x75')]?{'message':_0x741e('0x78'),'statusCode':_0x2a9908[_0x741e('0x76')]}:_0x2a9908);});};
\ No newline at end of file
+var _0xc1bf=['end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','error','stack','name','send','VtigerAccount','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','where','pick','merge','map','VIRTUAL','filter','options','then','includeAll','include','findAll','catch','show','find','create','body','params','getConfigurations','findOne','VtigerConfiguration','sort','nolimit','addConfiguration','AccountId','Subjects','getSubjects','getDescriptions','channel','VtigerField','Descriptions','md5','username','description','moduleName','accessKey','remoteUri','slice','substring','lastIndexOf','format','%s/webservice.php','getchallenge','POST','login','result','token','success','GET','describe','sessionName','autogenerated','reference','owner','includes','remove','false','cf_','picklist','picklistValues','label','value','log','statusCode','getFields','stringify','test','Wrong\x20credentials','eml-format','zip-dir','request-promise','moment','bluebird','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status'];(function(_0xf4ce9d,_0x174348){var _0x16c6a1=function(_0x1b8522){while(--_0x1b8522){_0xf4ce9d['push'](_0xf4ce9d['shift']());}};_0x16c6a1(++_0x174348);}(_0xc1bf,0x1c6));var _0xfc1b=function(_0x14fad0,_0x278d75){_0x14fad0=_0x14fad0-0x0;var _0x5c665f=_0xc1bf[_0x14fad0];return _0x5c665f;};'use strict';var emlformat=require(_0xfc1b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfc1b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfc1b('0x2'));var moment=require(_0xfc1b('0x3'));var BPromise=require(_0xfc1b('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xfc1b('0x5'));var csv=require(_0xfc1b('0x6'));var ejs=require(_0xfc1b('0x7'));var fs=require('fs');var fs_extra=require(_0xfc1b('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xfc1b('0x9'));var jsforce=require(_0xfc1b('0xa'));var deskjs=require(_0xfc1b('0xb'));var toCsv=require('to-csv');var querystring=require(_0xfc1b('0xc'));var Papa=require('papaparse');var Redis=require(_0xfc1b('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xfc1b('0xe'));var as=require(_0xfc1b('0xf'));var hardwareService=require(_0xfc1b('0x10'));var logger=require(_0xfc1b('0x11'))('api');var utils=require('../../config/utils');var config=require(_0xfc1b('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xfc1b('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x409785,_0xa29d40){_0xa29d40=_0xa29d40||0xcc;return function(_0x7050fd){if(_0x7050fd){return _0x409785[_0xfc1b('0x14')](_0xa29d40);}return _0x409785[_0xfc1b('0x15')](_0xa29d40)[_0xfc1b('0x16')]();};}function respondWithResult(_0x87d95d,_0x11f758){_0x11f758=_0x11f758||0xc8;return function(_0x1ac3fe){if(_0x1ac3fe){return _0x87d95d[_0xfc1b('0x15')](_0x11f758)[_0xfc1b('0x17')](_0x1ac3fe);}};}function respondWithFilteredResult(_0xedf1a9,_0x216a8f){return function(_0x30a71a){if(_0x30a71a){var _0x49b0e0=typeof _0x216a8f[_0xfc1b('0x18')]===_0xfc1b('0x19')&&typeof _0x216a8f[_0xfc1b('0x1a')]===_0xfc1b('0x19');var _0x49486e=_0x30a71a[_0xfc1b('0x1b')];var _0x47239a=_0x49b0e0?0x0:_0x216a8f[_0xfc1b('0x18')];var _0x5db089=_0x49b0e0?_0x30a71a[_0xfc1b('0x1b')]:_0x216a8f['offset']+_0x216a8f[_0xfc1b('0x1a')];var _0x56c09a;if(_0x5db089>=_0x49486e){_0x5db089=_0x49486e;_0x56c09a=0xc8;}else{_0x56c09a=0xce;}_0xedf1a9[_0xfc1b('0x15')](_0x56c09a);return _0xedf1a9[_0xfc1b('0x1c')]('Content-Range',_0x47239a+'-'+_0x5db089+'/'+_0x49486e)[_0xfc1b('0x17')](_0x30a71a);}return null;};}function patchUpdates(_0x50e3d9){return function(_0x3e5b8f){try{jsonpatch[_0xfc1b('0x1d')](_0x3e5b8f,_0x50e3d9,!![]);}catch(_0x5bdbce){return BPromise[_0xfc1b('0x1e')](_0x5bdbce);}return _0x3e5b8f[_0xfc1b('0x1f')]();};}function saveUpdates(_0x571068,_0x48dc1b){return function(_0x3bd5a2){if(_0x3bd5a2){return _0x3bd5a2[_0xfc1b('0x20')](_0x571068)['then'](function(_0x6412b2){return _0x6412b2;});}return null;};}function removeEntity(_0x1ba958,_0x2586c2){return function(_0x4da133){if(_0x4da133){return _0x4da133[_0xfc1b('0x21')]()['then'](function(){_0x1ba958['status'](0xcc)[_0xfc1b('0x16')]();});}};}function handleEntityNotFound(_0x4a241d,_0x455f99){return function(_0x346b5e){if(!_0x346b5e){_0x4a241d[_0xfc1b('0x14')](0x194);}return _0x346b5e;};}function handleError(_0x3f72de,_0x21ca03){_0x21ca03=_0x21ca03||0x1f4;return function(_0x46fe01){logger[_0xfc1b('0x22')](_0x46fe01[_0xfc1b('0x23')]);if(_0x46fe01[_0xfc1b('0x24')]){delete _0x46fe01['name'];}_0x3f72de['status'](_0x21ca03)[_0xfc1b('0x25')](_0x46fe01);};}exports['index']=function(_0x4c94aa,_0xbafdd4){var _0x509381={},_0x52072b={},_0x38315d={'count':0x0,'rows':[]};var _0xf56d26=_['map'](db[_0xfc1b('0x26')][_0xfc1b('0x27')],function(_0x13dfa0){return{'name':_0x13dfa0[_0xfc1b('0x28')],'type':_0x13dfa0[_0xfc1b('0x29')]['key']};});_0x52072b[_0xfc1b('0x2a')]=_['map'](_0xf56d26,_0xfc1b('0x24'));_0x52072b[_0xfc1b('0x2b')]=_[_0xfc1b('0x2c')](_0x4c94aa['query']);_0x52072b[_0xfc1b('0x2d')]=_['intersection'](_0x52072b[_0xfc1b('0x2a')],_0x52072b[_0xfc1b('0x2b')]);_0x509381[_0xfc1b('0x2e')]=_[_0xfc1b('0x2f')](_0x52072b['model'],qs[_0xfc1b('0x30')](_0x4c94aa[_0xfc1b('0x2b')][_0xfc1b('0x30')]));_0x509381[_0xfc1b('0x2e')]=_0x509381[_0xfc1b('0x2e')][_0xfc1b('0x31')]?_0x509381[_0xfc1b('0x2e')]:_0x52072b['model'];if(!_0x4c94aa[_0xfc1b('0x2b')][_0xfc1b('0x32')]('nolimit')){_0x509381[_0xfc1b('0x1a')]=qs[_0xfc1b('0x1a')](_0x4c94aa[_0xfc1b('0x2b')][_0xfc1b('0x1a')]);_0x509381['offset']=qs[_0xfc1b('0x18')](_0x4c94aa['query'][_0xfc1b('0x18')]);}_0x509381[_0xfc1b('0x33')]=qs['sort'](_0x4c94aa[_0xfc1b('0x2b')]['sort']);_0x509381[_0xfc1b('0x34')]=qs['filters'](_[_0xfc1b('0x35')](_0x4c94aa[_0xfc1b('0x2b')],_0x52072b['filters']),_0xf56d26);if(_0x4c94aa[_0xfc1b('0x2b')]['filter']){_0x509381[_0xfc1b('0x34')]=_[_0xfc1b('0x36')](_0x509381[_0xfc1b('0x34')],{'$or':_[_0xfc1b('0x37')](_0xf56d26,function(_0x4f8554){if(_0x4f8554['type']!==_0xfc1b('0x38')){var _0x3306fa={};_0x3306fa[_0x4f8554[_0xfc1b('0x24')]]={'$like':'%'+_0x4c94aa['query'][_0xfc1b('0x39')]+'%'};return _0x3306fa;}})});}_0x509381=_[_0xfc1b('0x36')]({},_0x509381,_0x4c94aa[_0xfc1b('0x3a')]);var _0xa8ceda={'where':_0x509381['where']};return db[_0xfc1b('0x26')][_0xfc1b('0x1b')](_0xa8ceda)[_0xfc1b('0x3b')](function(_0x1e0b1f){_0x38315d[_0xfc1b('0x1b')]=_0x1e0b1f;if(_0x4c94aa[_0xfc1b('0x2b')][_0xfc1b('0x3c')]){_0x509381[_0xfc1b('0x3d')]=[{'all':!![]}];}return db['VtigerAccount'][_0xfc1b('0x3e')](_0x509381);})[_0xfc1b('0x3b')](function(_0x12ad9f){_0x38315d['rows']=_0x12ad9f;return _0x38315d;})[_0xfc1b('0x3b')](respondWithFilteredResult(_0xbafdd4,_0x509381))[_0xfc1b('0x3f')](handleError(_0xbafdd4,null));};exports[_0xfc1b('0x40')]=function(_0x26609f,_0xfc0200){var _0x32e78a={'raw':![],'where':{'id':_0x26609f['params']['id']}},_0x2b0e0b={};_0x2b0e0b['model']=_[_0xfc1b('0x2c')](db[_0xfc1b('0x26')][_0xfc1b('0x27')]);_0x2b0e0b[_0xfc1b('0x2b')]=_[_0xfc1b('0x2c')](_0x26609f[_0xfc1b('0x2b')]);_0x2b0e0b[_0xfc1b('0x2d')]=_[_0xfc1b('0x2f')](_0x2b0e0b['model'],_0x2b0e0b[_0xfc1b('0x2b')]);_0x32e78a[_0xfc1b('0x2e')]=_[_0xfc1b('0x2f')](_0x2b0e0b['model'],qs[_0xfc1b('0x30')](_0x26609f['query'][_0xfc1b('0x30')]));_0x32e78a[_0xfc1b('0x2e')]=_0x32e78a['attributes'][_0xfc1b('0x31')]?_0x32e78a[_0xfc1b('0x2e')]:_0x2b0e0b[_0xfc1b('0x2a')];if(_0x26609f[_0xfc1b('0x2b')][_0xfc1b('0x3c')]){_0x32e78a[_0xfc1b('0x3d')]=[{'all':!![]}];}_0x32e78a=_[_0xfc1b('0x36')]({},_0x32e78a,_0x26609f[_0xfc1b('0x3a')]);return db[_0xfc1b('0x26')][_0xfc1b('0x41')](_0x32e78a)[_0xfc1b('0x3b')](handleEntityNotFound(_0xfc0200,null))[_0xfc1b('0x3b')](respondWithResult(_0xfc0200,null))[_0xfc1b('0x3f')](handleError(_0xfc0200,null));};exports[_0xfc1b('0x42')]=function(_0x1cac04,_0x4ca09e){return db['VtigerAccount'][_0xfc1b('0x42')](_0x1cac04[_0xfc1b('0x43')],{})['then'](respondWithResult(_0x4ca09e,0xc9))[_0xfc1b('0x3f')](handleError(_0x4ca09e,null));};exports[_0xfc1b('0x20')]=function(_0x3c4c75,_0x281cc8){if(_0x3c4c75['body']['id']){delete _0x3c4c75[_0xfc1b('0x43')]['id'];}return db['VtigerAccount']['find']({'where':{'id':_0x3c4c75[_0xfc1b('0x44')]['id']}})[_0xfc1b('0x3b')](handleEntityNotFound(_0x281cc8,null))['then'](saveUpdates(_0x3c4c75[_0xfc1b('0x43')],null))['then'](respondWithResult(_0x281cc8,null))['catch'](handleError(_0x281cc8,null));};exports['destroy']=function(_0xc34ca6,_0x1b132f){return db[_0xfc1b('0x26')][_0xfc1b('0x41')]({'where':{'id':_0xc34ca6[_0xfc1b('0x44')]['id']}})[_0xfc1b('0x3b')](handleEntityNotFound(_0x1b132f,null))[_0xfc1b('0x3b')](removeEntity(_0x1b132f,null))[_0xfc1b('0x3f')](handleError(_0x1b132f,null));};exports[_0xfc1b('0x45')]=function(_0x438fe9,_0x292efc,_0x2dd5f2){var _0x248e9d={};var _0x48fdad={};var _0x280c97;var _0x4ecae0;return db[_0xfc1b('0x26')][_0xfc1b('0x46')]({'where':{'id':_0x438fe9[_0xfc1b('0x44')]['id']}})[_0xfc1b('0x3b')](handleEntityNotFound(_0x292efc,null))[_0xfc1b('0x3b')](function(_0xd56d0c){if(_0xd56d0c){_0x280c97=_0xd56d0c;_0x48fdad[_0xfc1b('0x2a')]=_[_0xfc1b('0x2c')](db[_0xfc1b('0x47')][_0xfc1b('0x27')]);_0x48fdad[_0xfc1b('0x2b')]=_[_0xfc1b('0x2c')](_0x438fe9[_0xfc1b('0x2b')]);_0x48fdad[_0xfc1b('0x2d')]=_[_0xfc1b('0x2f')](_0x48fdad[_0xfc1b('0x2a')],_0x48fdad['query']);_0x248e9d['attributes']=_[_0xfc1b('0x2f')](_0x48fdad[_0xfc1b('0x2a')],qs[_0xfc1b('0x30')](_0x438fe9[_0xfc1b('0x2b')][_0xfc1b('0x30')]));_0x248e9d['attributes']=_0x248e9d['attributes'][_0xfc1b('0x31')]?_0x248e9d[_0xfc1b('0x2e')]:_0x48fdad[_0xfc1b('0x2a')];_0x248e9d[_0xfc1b('0x33')]=qs[_0xfc1b('0x48')](_0x438fe9[_0xfc1b('0x2b')][_0xfc1b('0x48')]);_0x248e9d[_0xfc1b('0x34')]=qs[_0xfc1b('0x2d')](_[_0xfc1b('0x35')](_0x438fe9[_0xfc1b('0x2b')],_0x48fdad[_0xfc1b('0x2d')]));if(_0x438fe9['query']['filter']){_0x248e9d[_0xfc1b('0x34')]=_['merge'](_0x248e9d[_0xfc1b('0x34')],{'$or':_[_0xfc1b('0x37')](_0x248e9d[_0xfc1b('0x2e')],function(_0x51fd61){var _0x590b66={};_0x590b66[_0x51fd61]={'$like':'%'+_0x438fe9[_0xfc1b('0x2b')][_0xfc1b('0x39')]+'%'};return _0x590b66;})});}_0x248e9d=_[_0xfc1b('0x36')]({},_0x248e9d,_0x438fe9[_0xfc1b('0x3a')]);return _0x280c97[_0xfc1b('0x45')](_0x248e9d);}})['then'](function(_0x1e0e73){if(_0x1e0e73){_0x4ecae0=_0x1e0e73[_0xfc1b('0x31')];if(!_0x438fe9[_0xfc1b('0x2b')][_0xfc1b('0x32')](_0xfc1b('0x49'))){_0x248e9d[_0xfc1b('0x1a')]=qs[_0xfc1b('0x1a')](_0x438fe9['query'][_0xfc1b('0x1a')]);_0x248e9d[_0xfc1b('0x18')]=qs[_0xfc1b('0x18')](_0x438fe9['query'][_0xfc1b('0x18')]);}return _0x280c97[_0xfc1b('0x45')](_0x248e9d);}})[_0xfc1b('0x3b')](function(_0x43c8e1){if(_0x43c8e1){return _0x43c8e1?{'count':_0x4ecae0,'rows':_0x43c8e1}:null;}})[_0xfc1b('0x3b')](respondWithResult(_0x292efc,null))[_0xfc1b('0x3f')](handleError(_0x292efc,null));};exports[_0xfc1b('0x4a')]=function(_0x12ef7a,_0x2f6007,_0x36624b){if(_0x12ef7a[_0xfc1b('0x43')]['id']){delete _0x12ef7a['body']['id'];}return db[_0xfc1b('0x26')][_0xfc1b('0x46')]({'where':{'id':_0x12ef7a[_0xfc1b('0x44')]['id']}})['then'](handleEntityNotFound(_0x2f6007,null))[_0xfc1b('0x3b')](function(_0x57761a){if(_0x57761a){_0x12ef7a[_0xfc1b('0x43')][_0xfc1b('0x4b')]=_0x57761a['id'];_0x12ef7a[_0xfc1b('0x43')][_0xfc1b('0x4c')]=integrations[_0xfc1b('0x4d')](_0x12ef7a[_0xfc1b('0x43')]['channel'],_0x12ef7a[_0xfc1b('0x43')][_0xfc1b('0x29')]);_0x12ef7a[_0xfc1b('0x43')]['Descriptions']=integrations[_0xfc1b('0x4e')](_0x12ef7a[_0xfc1b('0x43')][_0xfc1b('0x4f')],_0x12ef7a[_0xfc1b('0x43')][_0xfc1b('0x29')]);return db[_0xfc1b('0x47')][_0xfc1b('0x42')](_0x12ef7a['body'],{'include':[{'model':db['VtigerField'],'as':_0xfc1b('0x4c')},{'model':db[_0xfc1b('0x50')],'as':_0xfc1b('0x51')}]});}return null;})['then'](respondWithResult(_0x2f6007,null))[_0xfc1b('0x3f')](handleError(_0x2f6007,null));};var md5=require(_0xfc1b('0x52'));exports['getFields']=function(_0x5677eb,_0x51bedc,_0x26bf78){var _0x54aca2=null;var _0x1d7a48=null;var _0xa8c44a=null;var _0x12bfd7=null;var _0x6da8b7='';return db[_0xfc1b('0x26')][_0xfc1b('0x46')]({'where':{'id':_0x5677eb[_0xfc1b('0x44')]['id']},'attributes':['id',_0xfc1b('0x24'),_0xfc1b('0x53'),_0xfc1b('0x54'),_0xfc1b('0x55'),'remoteUri','serverUrl',_0xfc1b('0x56')]})[_0xfc1b('0x3b')](handleEntityNotFound(_0x51bedc,null))[_0xfc1b('0x3b')](function(_0x5a7804){if(_0x5a7804){_0x54aca2=_0x5a7804[_0xfc1b('0x53')];_0x1d7a48=_0x5a7804['accessKey'];_0xa8c44a=_0x5a7804[_0xfc1b('0x55')];_0x6da8b7=_0x5a7804[_0xfc1b('0x57')];var _0x2582ae=_0x6da8b7[_0xfc1b('0x58')](-0x1);if(_0x2582ae==='/'){_0x6da8b7=_0x6da8b7[_0xfc1b('0x59')](0x0,_0x6da8b7[_0xfc1b('0x5a')](_0x2582ae));}_0x12bfd7=util[_0xfc1b('0x5b')](_0xfc1b('0x5c'),_0x6da8b7);var _0x338f77={'method':'GET','uri':_0x12bfd7,'qs':{'operation':_0xfc1b('0x5d'),'username':_0x5a7804[_0xfc1b('0x53')]},'json':!![]};return rp(_0x338f77);}})[_0xfc1b('0x3b')](function(_0x2fd497){if(_0x2fd497['success']){var _0x103e45={'method':_0xfc1b('0x5e'),'uri':_0x12bfd7,'form':{'operation':_0xfc1b('0x5f'),'username':_0x54aca2,'accessKey':md5(_0x2fd497[_0xfc1b('0x60')][_0xfc1b('0x61')]+_0x1d7a48)},'json':!![]};return rp(_0x103e45);}})[_0xfc1b('0x3b')](function(_0x3971cd){if(_0x3971cd[_0xfc1b('0x62')]){var _0x2e6b8f={'method':_0xfc1b('0x63'),'uri':_0x12bfd7,'qs':{'operation':_0xfc1b('0x64'),'username':_0x54aca2,'sessionName':_0x3971cd[_0xfc1b('0x60')][_0xfc1b('0x65')],'elementType':_0xa8c44a},'json':!![]};return rp(_0x2e6b8f);}})[_0xfc1b('0x3b')](function(_0x4b37fa){if(_0x4b37fa[_0xfc1b('0x62')]){var _0x19c190=[_0xfc1b('0x66'),_0xfc1b('0x67'),_0xfc1b('0x68')];_['remove'](_0x4b37fa['result']['fields'],function(_0x2e76bf){return _0x19c190[_0xfc1b('0x69')](_0x2e76bf['type'][_0xfc1b('0x24')]);});_[_0xfc1b('0x6a')](_0x4b37fa[_0xfc1b('0x60')][_0xfc1b('0x30')],function(_0x2e1451){return _0x2e1451['editable']===_0xfc1b('0x6b');});return{'count':_0x4b37fa[_0xfc1b('0x60')][_0xfc1b('0x30')]['length'],'rows':_['map'](_0x4b37fa[_0xfc1b('0x60')][_0xfc1b('0x30')],function(_0x41fabd){return{'id':_0x41fabd[_0xfc1b('0x24')],'name':_0x41fabd['label'],'custom':_['startsWith'](_0x41fabd['name'],_0xfc1b('0x6c'))?!![]:![],'options':_0x41fabd[_0xfc1b('0x29')]['name']===_0xfc1b('0x6d')&&_0x41fabd[_0xfc1b('0x29')]['picklistValues'][_0xfc1b('0x31')]>0x0?_['map'](_0x41fabd[_0xfc1b('0x29')][_0xfc1b('0x6e')],function(_0x564d0a){return{'name':_0x564d0a[_0xfc1b('0x6f')],'value':_0x564d0a[_0xfc1b('0x70')]};}):[]};})};}})[_0xfc1b('0x3b')](respondWithResult(_0x51bedc,null))[_0xfc1b('0x3f')](function(_0x58453e){console[_0xfc1b('0x71')]('vTiger\x20error:\x20'+_0x58453e);var _0x268b8c=_0x5677eb[_0xfc1b('0x2b')]['test']?0x1f4:_0x58453e[_0xfc1b('0x72')]||0x1f4;logger[_0xfc1b('0x22')]('getFields,\x20%s,\x20%s,\x20%s',_0xfc1b('0x73'),_0x268b8c,JSON[_0xfc1b('0x74')](_0x58453e));delete _0x58453e['name'];if(_0x268b8c===0x191){_0x268b8c=0x190;}_0x51bedc[_0xfc1b('0x15')](_0x268b8c)[_0xfc1b('0x25')](_0x5677eb[_0xfc1b('0x2b')][_0xfc1b('0x75')]?{'message':_0xfc1b('0x76'),'statusCode':_0x58453e[_0xfc1b('0x72')]}:_0x58453e);});};
\ No newline at end of file
index cf03a07..4a6de5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x773d=['api','moment','bluebird','request-promise','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','lodash','util','../../config/logger'];(function(_0x1811e6,_0x906641){var _0x2f6034=function(_0x1d77cf){while(--_0x1d77cf){_0x1811e6['push'](_0x1811e6['shift']());}};_0x2f6034(++_0x906641);}(_0x773d,0x193));var _0xd773=function(_0x3bfbec,_0x38356f){_0x3bfbec=_0x3bfbec-0x0;var _0x11021f=_0x773d[_0x3bfbec];return _0x11021f;};'use strict';var _=require(_0xd773('0x0'));var util=require(_0xd773('0x1'));var logger=require(_0xd773('0x2'))(_0xd773('0x3'));var moment=require(_0xd773('0x4'));var BPromise=require(_0xd773('0x5'));var rp=require(_0xd773('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xd773('0x7'));var attributes=require(_0xd773('0x8'));var integrations=require(_0xd773('0x9'));module[_0xd773('0xa')]=function(_0x4bce1c,_0x5d7e9d){return _0x4bce1c[_0xd773('0xb')](_0xd773('0xc'),attributes,{'tableName':_0xd773('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9fdc=['api','moment','bluebird','path','rimraf','./intVtigerAccount.attributes','../../components/integrations/configuration','define','VtigerAccount','int_vtiger_accounts','lodash','util','../../config/logger'];(function(_0x1fb7d1,_0x108781){var _0x2480d8=function(_0x9bc3d9){while(--_0x9bc3d9){_0x1fb7d1['push'](_0x1fb7d1['shift']());}};_0x2480d8(++_0x108781);}(_0x9fdc,0x1c4));var _0xc9fd=function(_0x28611e,_0x586726){_0x28611e=_0x28611e-0x0;var _0x530f69=_0x9fdc[_0x28611e];return _0x530f69;};'use strict';var _=require(_0xc9fd('0x0'));var util=require(_0xc9fd('0x1'));var logger=require(_0xc9fd('0x2'))(_0xc9fd('0x3'));var moment=require(_0xc9fd('0x4'));var BPromise=require(_0xc9fd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc9fd('0x6'));var rimraf=require(_0xc9fd('0x7'));var config=require('../../config/environment');var attributes=require(_0xc9fd('0x8'));var integrations=require(_0xc9fd('0x9'));module['exports']=function(_0xbcca39,_0x41e8bd){return _0xbcca39[_0xc9fd('0xa')](_0xc9fd('0xb'),attributes,{'tableName':_0xc9fd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e433a11..b1ee7d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9354=['catch','GetVtigerAccount','findAll','options','where','attributes','limit','include','map','model','then','stringify','ShowVtigerAccount','raw','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','error','message','result'];(function(_0x3bc10d,_0x53afae){var _0xbe2aad=function(_0x5b2c66){while(--_0x5b2c66){_0x3bc10d['push'](_0x3bc10d['shift']());}};_0xbe2aad(++_0x53afae);}(_0x9354,0x96));var _0x4935=function(_0x345de7,_0x1de531){_0x345de7=_0x345de7-0x0;var _0x26ffc7=_0x9354[_0x345de7];return _0x26ffc7;};'use strict';var _=require('lodash');var util=require(_0x4935('0x0'));var moment=require(_0x4935('0x1'));var BPromise=require('bluebird');var rs=require(_0x4935('0x2'));var fs=require('fs');var Redis=require(_0x4935('0x3'));var db=require(_0x4935('0x4'))['db'];var utils=require(_0x4935('0x5'));var logger=require('../../config/logger')(_0x4935('0x6'));var config=require(_0x4935('0x7'));var jayson=require(_0x4935('0x8'));var client=jayson[_0x4935('0x9')][_0x4935('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e47bd,_0x118d36,_0x2d735e){return new BPromise(function(_0x10793e,_0x4c9902){return client[_0x4935('0xb')](_0x2e47bd,_0x2d735e)['then'](function(_0x2aac9a){logger[_0x4935('0xc')](_0x4935('0xd'),_0x118d36,_0x4935('0xe'));logger[_0x4935('0xf')](_0x4935('0x10'),_0x118d36,'request\x20sent',JSON['stringify'](_0x2aac9a));if(_0x2aac9a[_0x4935('0x11')]){if(_0x2aac9a['error']['code']===0x1f4){logger[_0x4935('0x11')](_0x4935('0xd'),_0x118d36,_0x2aac9a[_0x4935('0x11')][_0x4935('0x12')]);return _0x4c9902(_0x2aac9a[_0x4935('0x11')][_0x4935('0x12')]);}logger[_0x4935('0x11')](_0x4935('0xd'),_0x118d36,_0x2aac9a[_0x4935('0x11')][_0x4935('0x12')]);return _0x10793e(_0x2aac9a[_0x4935('0x11')][_0x4935('0x12')]);}else{logger[_0x4935('0xc')](_0x4935('0xd'),_0x118d36,_0x4935('0xe'));_0x10793e(_0x2aac9a[_0x4935('0x13')]['message']);}})[_0x4935('0x14')](function(_0x46526a){logger[_0x4935('0x11')](_0x4935('0xd'),_0x118d36,_0x46526a);_0x4c9902(_0x46526a);});});}exports[_0x4935('0x15')]=function(_0x429ef3){var _0x4ebc63=this;return new Promise(function(_0xd70eff,_0x145277){return db['VtigerAccount'][_0x4935('0x16')]({'raw':_0x429ef3[_0x4935('0x17')]?_0x429ef3[_0x4935('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x429ef3['options']?_0x429ef3[_0x4935('0x17')][_0x4935('0x18')]||null:null,'attributes':_0x429ef3[_0x4935('0x17')]?_0x429ef3[_0x4935('0x17')][_0x4935('0x19')]||null:null,'limit':_0x429ef3[_0x4935('0x17')]?_0x429ef3[_0x4935('0x17')][_0x4935('0x1a')]||null:null,'include':_0x429ef3['options']?_0x429ef3[_0x4935('0x17')][_0x4935('0x1b')]?_[_0x4935('0x1c')](_0x429ef3[_0x4935('0x17')][_0x4935('0x1b')],function(_0x53530f){return{'model':db[_0x53530f['model']],'as':_0x53530f['as'],'attributes':_0x53530f[_0x4935('0x19')],'include':_0x53530f[_0x4935('0x1b')]?_[_0x4935('0x1c')](_0x53530f[_0x4935('0x1b')],function(_0x344e51){return{'model':db[_0x344e51[_0x4935('0x1d')]],'as':_0x344e51['as'],'attributes':_0x344e51[_0x4935('0x19')],'include':_0x344e51[_0x4935('0x1b')]?_[_0x4935('0x1c')](_0x344e51[_0x4935('0x1b')],function(_0x1d08b5){return{'model':db[_0x1d08b5[_0x4935('0x1d')]],'as':_0x1d08b5['as'],'attributes':_0x1d08b5[_0x4935('0x19')]};}):[]};}):[]};}):[]:[]})[_0x4935('0x1e')](function(_0x359522){logger['info']('GetVtigerAccount',_0x429ef3);logger['debug'](_0x4935('0x15'),_0x429ef3,JSON[_0x4935('0x1f')](_0x359522));_0xd70eff(_0x359522);})['catch'](function(_0x3f0707){logger[_0x4935('0x11')](_0x4935('0x15'),_0x3f0707[_0x4935('0x12')],_0x429ef3);_0x145277(_0x4ebc63[_0x4935('0x11')](0x1f4,_0x3f0707[_0x4935('0x12')]));});});};exports[_0x4935('0x20')]=function(_0x2fe6da){var _0x5b3c8e=this;return new Promise(function(_0xb7fe2a,_0x2dcb0b){return db['VtigerAccount']['find']({'raw':_0x2fe6da[_0x4935('0x17')]?_0x2fe6da['options'][_0x4935('0x21')]===undefined?!![]:![]:!![],'where':_0x2fe6da[_0x4935('0x17')]?_0x2fe6da[_0x4935('0x17')]['where']||null:null,'attributes':_0x2fe6da['options']?_0x2fe6da[_0x4935('0x17')][_0x4935('0x19')]||null:null,'include':_0x2fe6da['options']?_0x2fe6da[_0x4935('0x17')][_0x4935('0x1b')]?_[_0x4935('0x1c')](_0x2fe6da[_0x4935('0x17')][_0x4935('0x1b')],function(_0x4a69bc){return{'model':db[_0x4a69bc['model']],'as':_0x4a69bc['as'],'attributes':_0x4a69bc[_0x4935('0x19')],'include':_0x4a69bc[_0x4935('0x1b')]?_['map'](_0x4a69bc['include'],function(_0xb3d934){return{'model':db[_0xb3d934['model']],'as':_0xb3d934['as'],'attributes':_0xb3d934[_0x4935('0x19')],'include':_0xb3d934[_0x4935('0x1b')]?_[_0x4935('0x1c')](_0xb3d934[_0x4935('0x1b')],function(_0x1d77b8){return{'model':db[_0x1d77b8[_0x4935('0x1d')]],'as':_0x1d77b8['as'],'attributes':_0x1d77b8['attributes']};}):[]};}):[]};}):[]:[]})[_0x4935('0x1e')](function(_0x51b7ac){logger[_0x4935('0xc')]('ShowVtigerAccount',_0x2fe6da);logger[_0x4935('0xf')]('ShowVtigerAccount',_0x2fe6da,JSON[_0x4935('0x1f')](_0x51b7ac));_0xb7fe2a(_0x51b7ac);})[_0x4935('0x14')](function(_0x352679){logger[_0x4935('0x11')](_0x4935('0x20'),_0x352679[_0x4935('0x12')],_0x2fe6da);_0x2dcb0b(_0x5b3c8e[_0x4935('0x11')](0x1f4,_0x352679['message']));});});};
\ No newline at end of file
+var _0x236c=['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','result','catch','GetVtigerAccount','options','raw','where','attributes','include','map','model','VtigerAccount','find','ShowVtigerAccount','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x9f916e,_0x4431db){var _0x3d6222=function(_0x559275){while(--_0x559275){_0x9f916e['push'](_0x9f916e['shift']());}};_0x3d6222(++_0x4431db);}(_0x236c,0x155));var _0xc236=function(_0x57402d,_0x3bccd4){_0x57402d=_0x57402d-0x0;var _0x20ab0a=_0x236c[_0x57402d];return _0x20ab0a;};'use strict';var _=require(_0xc236('0x0'));var util=require('util');var moment=require(_0xc236('0x1'));var BPromise=require(_0xc236('0x2'));var rs=require(_0xc236('0x3'));var fs=require('fs');var Redis=require(_0xc236('0x4'));var db=require(_0xc236('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc236('0x6'))(_0xc236('0x7'));var config=require(_0xc236('0x8'));var jayson=require(_0xc236('0x9'));var client=jayson[_0xc236('0xa')][_0xc236('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5abd65,_0xd612c6,_0x4d349b){return new BPromise(function(_0x51a13b,_0x5bc6a2){return client['request'](_0x5abd65,_0x4d349b)[_0xc236('0xc')](function(_0x4b8dc6){logger[_0xc236('0xd')](_0xc236('0xe'),_0xd612c6,_0xc236('0xf'));logger[_0xc236('0x10')](_0xc236('0x11'),_0xd612c6,'request\x20sent',JSON[_0xc236('0x12')](_0x4b8dc6));if(_0x4b8dc6[_0xc236('0x13')]){if(_0x4b8dc6['error'][_0xc236('0x14')]===0x1f4){logger[_0xc236('0x13')]('VtigerAccount,\x20%s,\x20%s',_0xd612c6,_0x4b8dc6[_0xc236('0x13')]['message']);return _0x5bc6a2(_0x4b8dc6['error'][_0xc236('0x15')]);}logger[_0xc236('0x13')](_0xc236('0xe'),_0xd612c6,_0x4b8dc6[_0xc236('0x13')]['message']);return _0x51a13b(_0x4b8dc6[_0xc236('0x13')]['message']);}else{logger['info'](_0xc236('0xe'),_0xd612c6,_0xc236('0xf'));_0x51a13b(_0x4b8dc6[_0xc236('0x16')][_0xc236('0x15')]);}})[_0xc236('0x17')](function(_0x5ac3ed){logger['error']('VtigerAccount,\x20%s,\x20%s',_0xd612c6,_0x5ac3ed);_0x5bc6a2(_0x5ac3ed);});});}exports[_0xc236('0x18')]=function(_0x76f45){var _0x11ec65=this;return new Promise(function(_0x541a20,_0x13b432){return db['VtigerAccount']['findAll']({'raw':_0x76f45[_0xc236('0x19')]?_0x76f45[_0xc236('0x19')][_0xc236('0x1a')]===undefined?!![]:![]:!![],'where':_0x76f45[_0xc236('0x19')]?_0x76f45[_0xc236('0x19')][_0xc236('0x1b')]||null:null,'attributes':_0x76f45[_0xc236('0x19')]?_0x76f45[_0xc236('0x19')][_0xc236('0x1c')]||null:null,'limit':_0x76f45[_0xc236('0x19')]?_0x76f45[_0xc236('0x19')]['limit']||null:null,'include':_0x76f45[_0xc236('0x19')]?_0x76f45[_0xc236('0x19')][_0xc236('0x1d')]?_[_0xc236('0x1e')](_0x76f45[_0xc236('0x19')][_0xc236('0x1d')],function(_0x3a315b){return{'model':db[_0x3a315b[_0xc236('0x1f')]],'as':_0x3a315b['as'],'attributes':_0x3a315b[_0xc236('0x1c')],'include':_0x3a315b[_0xc236('0x1d')]?_[_0xc236('0x1e')](_0x3a315b['include'],function(_0x308cd6){return{'model':db[_0x308cd6[_0xc236('0x1f')]],'as':_0x308cd6['as'],'attributes':_0x308cd6[_0xc236('0x1c')],'include':_0x308cd6[_0xc236('0x1d')]?_['map'](_0x308cd6[_0xc236('0x1d')],function(_0x5da4b2){return{'model':db[_0x5da4b2['model']],'as':_0x5da4b2['as'],'attributes':_0x5da4b2[_0xc236('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x36e578){logger['info'](_0xc236('0x18'),_0x76f45);logger['debug'](_0xc236('0x18'),_0x76f45,JSON[_0xc236('0x12')](_0x36e578));_0x541a20(_0x36e578);})['catch'](function(_0x5a61b5){logger[_0xc236('0x13')](_0xc236('0x18'),_0x5a61b5[_0xc236('0x15')],_0x76f45);_0x13b432(_0x11ec65[_0xc236('0x13')](0x1f4,_0x5a61b5['message']));});});};exports['ShowVtigerAccount']=function(_0x28ffa5){var _0x53b767=this;return new Promise(function(_0x2c756f,_0x4ddc87){return db[_0xc236('0x20')][_0xc236('0x21')]({'raw':_0x28ffa5['options']?_0x28ffa5['options'][_0xc236('0x1a')]===undefined?!![]:![]:!![],'where':_0x28ffa5[_0xc236('0x19')]?_0x28ffa5[_0xc236('0x19')][_0xc236('0x1b')]||null:null,'attributes':_0x28ffa5[_0xc236('0x19')]?_0x28ffa5[_0xc236('0x19')][_0xc236('0x1c')]||null:null,'include':_0x28ffa5[_0xc236('0x19')]?_0x28ffa5[_0xc236('0x19')]['include']?_['map'](_0x28ffa5['options'][_0xc236('0x1d')],function(_0xfda1f9){return{'model':db[_0xfda1f9[_0xc236('0x1f')]],'as':_0xfda1f9['as'],'attributes':_0xfda1f9[_0xc236('0x1c')],'include':_0xfda1f9[_0xc236('0x1d')]?_[_0xc236('0x1e')](_0xfda1f9[_0xc236('0x1d')],function(_0x5761de){return{'model':db[_0x5761de[_0xc236('0x1f')]],'as':_0x5761de['as'],'attributes':_0x5761de[_0xc236('0x1c')],'include':_0x5761de[_0xc236('0x1d')]?_['map'](_0x5761de[_0xc236('0x1d')],function(_0x2a8f33){return{'model':db[_0x2a8f33[_0xc236('0x1f')]],'as':_0x2a8f33['as'],'attributes':_0x2a8f33[_0xc236('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x12348b){logger[_0xc236('0xd')](_0xc236('0x22'),_0x28ffa5);logger[_0xc236('0x10')](_0xc236('0x22'),_0x28ffa5,JSON[_0xc236('0x12')](_0x12348b));_0x2c756f(_0x12348b);})[_0xc236('0x17')](function(_0x11ca1c){logger[_0xc236('0x13')](_0xc236('0x22'),_0x11ca1c[_0xc236('0x15')],_0x28ffa5);_0x4ddc87(_0x53b767[_0xc236('0x13')](0x1f4,_0x11ca1c[_0xc236('0x15')]));});});};
\ No newline at end of file
index b50af10..96f46d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19cf=['multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intVtigerConfiguration.controller','isAuthenticated','get','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','destroy','exports'];(function(_0x257579,_0x627180){var _0x1a329d=function(_0x27e1f8){while(--_0x27e1f8){_0x257579['push'](_0x257579['shift']());}};_0x1a329d(++_0x627180);}(_0x19cf,0xdc));var _0xf19c=function(_0x4fce51,_0x31cfcb){_0x4fce51=_0x4fce51-0x0;var _0x28649d=_0x19cf[_0x4fce51];return _0x28649d;};'use strict';var multer=require(_0xf19c('0x0'));var util=require('util');var path=require(_0xf19c('0x1'));var timeout=require(_0xf19c('0x2'));var express=require(_0xf19c('0x3'));var router=express[_0xf19c('0x4')]();var fs_extra=require(_0xf19c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf19c('0x6'));var config=require('../../config/environment');var controller=require(_0xf19c('0x7'));router['get']('/',auth[_0xf19c('0x8')](),controller['index']);router[_0xf19c('0x9')](_0xf19c('0xa'),auth[_0xf19c('0x8')](),controller[_0xf19c('0xb')]);router[_0xf19c('0x9')](_0xf19c('0xc'),auth[_0xf19c('0x8')](),controller[_0xf19c('0xd')]);router[_0xf19c('0x9')](_0xf19c('0xe'),auth[_0xf19c('0x8')](),controller['getSubjects']);router[_0xf19c('0x9')](_0xf19c('0xf'),auth[_0xf19c('0x8')](),controller[_0xf19c('0x10')]);router[_0xf19c('0x11')]('/',auth[_0xf19c('0x8')](),controller[_0xf19c('0x12')]);router[_0xf19c('0x13')](_0xf19c('0xa'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xf19c('0x14')]);module[_0xf19c('0x15')]=router;
\ No newline at end of file
+var _0xcdd4=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intVtigerConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','put','destroy','multer'];(function(_0x30222a,_0xf6745f){var _0x3ba3ca=function(_0x6fec91){while(--_0x6fec91){_0x30222a['push'](_0x30222a['shift']());}};_0x3ba3ca(++_0xf6745f);}(_0xcdd4,0x18e));var _0x4cdd=function(_0x4fb71f,_0x2f43aa){_0x4fb71f=_0x4fb71f-0x0;var _0x48ba69=_0xcdd4[_0x4fb71f];return _0x48ba69;};'use strict';var multer=require(_0x4cdd('0x0'));var util=require(_0x4cdd('0x1'));var path=require(_0x4cdd('0x2'));var timeout=require(_0x4cdd('0x3'));var express=require(_0x4cdd('0x4'));var router=express[_0x4cdd('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4cdd('0x6'));var interaction=require(_0x4cdd('0x7'));var config=require('../../config/environment');var controller=require(_0x4cdd('0x8'));router[_0x4cdd('0x9')]('/',auth[_0x4cdd('0xa')](),controller['index']);router[_0x4cdd('0x9')](_0x4cdd('0xb'),auth[_0x4cdd('0xa')](),controller[_0x4cdd('0xc')]);router[_0x4cdd('0x9')](_0x4cdd('0xd'),auth[_0x4cdd('0xa')](),controller[_0x4cdd('0xe')]);router[_0x4cdd('0x9')](_0x4cdd('0xf'),auth[_0x4cdd('0xa')](),controller[_0x4cdd('0x10')]);router[_0x4cdd('0x9')](_0x4cdd('0x11'),auth[_0x4cdd('0xa')](),controller[_0x4cdd('0x12')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x4cdd('0x13')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0x4cdd('0xb'),auth[_0x4cdd('0xa')](),controller[_0x4cdd('0x14')]);module['exports']=router;
\ No newline at end of file
index 9e92f2e..1f22831 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd566=['sequelize','STRING'];(function(_0x1bed81,_0x4b326a){var _0x2ac7ac=function(_0x3ce991){while(--_0x3ce991){_0x1bed81['push'](_0x1bed81['shift']());}};_0x2ac7ac(++_0x4b326a);}(_0xd566,0xe2));var _0x6d56=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xd566[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0x6d56('0x0'));module['exports']={'name':{'type':Sequelize[_0x6d56('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x317a=['exports','STRING','sequelize'];(function(_0x8ebd39,_0x5c9379){var _0x46cf97=function(_0x248874){while(--_0x248874){_0x8ebd39['push'](_0x8ebd39['shift']());}};_0x46cf97(++_0x5c9379);}(_0x317a,0x1c4));var _0xa317=function(_0x4ccb31,_0x15cef9){_0x4ccb31=_0x4ccb31-0x0;var _0x4bce35=_0x317a[_0x4ccb31];return _0x4bce35;};'use strict';var Sequelize=require(_0xa317('0x0'));module[_0xa317('0x1')]={'name':{'type':Sequelize[_0xa317('0x2')]},'description':{'type':Sequelize[_0xa317('0x2')]}};
\ No newline at end of file
index 605caea..a99fa40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81a7=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','offset','limit','undefined','count','Content-Range','json','apply','reject','update','then','destroy','end','error','name','send','index','map','VtigerConfiguration','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','params','catch','create','body','find','getFields','findOne','VtigerField','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x4763ed,_0x92d47d){var _0x1bf5bd=function(_0x5ba695){while(--_0x5ba695){_0x4763ed['push'](_0x4763ed['shift']());}};_0x1bf5bd(++_0x92d47d);}(_0x81a7,0x177));var _0x781a=function(_0x314a0f,_0x1a21de){_0x314a0f=_0x314a0f-0x0;var _0x4a1784=_0x81a7[_0x314a0f];return _0x4a1784;};'use strict';var emlformat=require(_0x781a('0x0'));var rimraf=require(_0x781a('0x1'));var zipdir=require(_0x781a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x781a('0x3'));var Mustache=require(_0x781a('0x4'));var util=require('util');var path=require('path');var sox=require(_0x781a('0x5'));var csv=require(_0x781a('0x6'));var ejs=require(_0x781a('0x7'));var fs=require('fs');var fs_extra=require(_0x781a('0x8'));var _=require(_0x781a('0x9'));var squel=require(_0x781a('0xa'));var crypto=require(_0x781a('0xb'));var jsforce=require(_0x781a('0xc'));var deskjs=require(_0x781a('0xd'));var toCsv=require(_0x781a('0x6'));var querystring=require(_0x781a('0xe'));var Papa=require(_0x781a('0xf'));var Redis=require(_0x781a('0x10'));var authService=require(_0x781a('0x11'));var qs=require(_0x781a('0x12'));var as=require(_0x781a('0x13'));var hardwareService=require(_0x781a('0x14'));var logger=require(_0x781a('0x15'))(_0x781a('0x16'));var utils=require(_0x781a('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x781a('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5c83cf,_0x255fe0){_0x255fe0=_0x255fe0||0xcc;return function(_0x396d33){if(_0x396d33){return _0x5c83cf[_0x781a('0x19')](_0x255fe0);}return _0x5c83cf[_0x781a('0x1a')](_0x255fe0)['end']();};}function respondWithResult(_0x479cc3,_0x3520e3){_0x3520e3=_0x3520e3||0xc8;return function(_0x2741b3){if(_0x2741b3){return _0x479cc3['status'](_0x3520e3)['json'](_0x2741b3);}};}function respondWithFilteredResult(_0x3de439,_0x4e63be){return function(_0x207761){if(_0x207761){var _0x284dfb=typeof _0x4e63be[_0x781a('0x1b')]==='undefined'&&typeof _0x4e63be[_0x781a('0x1c')]===_0x781a('0x1d');var _0x1a5bdc=_0x207761[_0x781a('0x1e')];var _0x49580c=_0x284dfb?0x0:_0x4e63be[_0x781a('0x1b')];var _0x156403=_0x284dfb?_0x207761[_0x781a('0x1e')]:_0x4e63be[_0x781a('0x1b')]+_0x4e63be[_0x781a('0x1c')];var _0x34941e;if(_0x156403>=_0x1a5bdc){_0x156403=_0x1a5bdc;_0x34941e=0xc8;}else{_0x34941e=0xce;}_0x3de439[_0x781a('0x1a')](_0x34941e);return _0x3de439['set'](_0x781a('0x1f'),_0x49580c+'-'+_0x156403+'/'+_0x1a5bdc)[_0x781a('0x20')](_0x207761);}return null;};}function patchUpdates(_0x4fdf89){return function(_0x5eb516){try{jsonpatch[_0x781a('0x21')](_0x5eb516,_0x4fdf89,!![]);}catch(_0x942c9a){return BPromise[_0x781a('0x22')](_0x942c9a);}return _0x5eb516['save']();};}function saveUpdates(_0x1175fa,_0x37c8d0){return function(_0x24f38c){if(_0x24f38c){return _0x24f38c[_0x781a('0x23')](_0x1175fa)[_0x781a('0x24')](function(_0x10b6c8){return _0x10b6c8;});}return null;};}function removeEntity(_0x2f7720,_0x14e2b8){return function(_0x2eb32f){if(_0x2eb32f){return _0x2eb32f[_0x781a('0x25')]()['then'](function(){_0x2f7720[_0x781a('0x1a')](0xcc)[_0x781a('0x26')]();});}};}function handleEntityNotFound(_0x2f97a0,_0x4312c1){return function(_0x431b25){if(!_0x431b25){_0x2f97a0['sendStatus'](0x194);}return _0x431b25;};}function handleError(_0x12d233,_0x28ebf9){_0x28ebf9=_0x28ebf9||0x1f4;return function(_0x410cde){logger[_0x781a('0x27')](_0x410cde['stack']);if(_0x410cde[_0x781a('0x28')]){delete _0x410cde[_0x781a('0x28')];}_0x12d233[_0x781a('0x1a')](_0x28ebf9)[_0x781a('0x29')](_0x410cde);};}exports[_0x781a('0x2a')]=function(_0x2be8a7,_0x3ac9a2){var _0x373b41={},_0x45b21b={},_0x25f702={'count':0x0,'rows':[]};var _0x2eac72=_[_0x781a('0x2b')](db[_0x781a('0x2c')][_0x781a('0x2d')],function(_0x51f644){return{'name':_0x51f644[_0x781a('0x2e')],'type':_0x51f644[_0x781a('0x2f')]['key']};});_0x45b21b[_0x781a('0x30')]=_[_0x781a('0x2b')](_0x2eac72,'name');_0x45b21b[_0x781a('0x31')]=_[_0x781a('0x32')](_0x2be8a7[_0x781a('0x31')]);_0x45b21b[_0x781a('0x33')]=_['intersection'](_0x45b21b[_0x781a('0x30')],_0x45b21b[_0x781a('0x31')]);_0x373b41[_0x781a('0x34')]=_[_0x781a('0x35')](_0x45b21b['model'],qs[_0x781a('0x36')](_0x2be8a7[_0x781a('0x31')][_0x781a('0x36')]));_0x373b41[_0x781a('0x34')]=_0x373b41['attributes'][_0x781a('0x37')]?_0x373b41[_0x781a('0x34')]:_0x45b21b[_0x781a('0x30')];if(!_0x2be8a7[_0x781a('0x31')]['hasOwnProperty'](_0x781a('0x38'))){_0x373b41[_0x781a('0x1c')]=qs[_0x781a('0x1c')](_0x2be8a7[_0x781a('0x31')][_0x781a('0x1c')]);_0x373b41['offset']=qs[_0x781a('0x1b')](_0x2be8a7[_0x781a('0x31')][_0x781a('0x1b')]);}_0x373b41[_0x781a('0x39')]=qs[_0x781a('0x3a')](_0x2be8a7[_0x781a('0x31')]['sort']);_0x373b41['where']=qs[_0x781a('0x33')](_[_0x781a('0x3b')](_0x2be8a7[_0x781a('0x31')],_0x45b21b[_0x781a('0x33')]),_0x2eac72);if(_0x2be8a7[_0x781a('0x31')][_0x781a('0x3c')]){_0x373b41[_0x781a('0x3d')]=_['merge'](_0x373b41[_0x781a('0x3d')],{'$or':_[_0x781a('0x2b')](_0x2eac72,function(_0x5b1211){if(_0x5b1211['type']!=='VIRTUAL'){var _0x53eff8={};_0x53eff8[_0x5b1211[_0x781a('0x28')]]={'$like':'%'+_0x2be8a7[_0x781a('0x31')][_0x781a('0x3c')]+'%'};return _0x53eff8;}})});}_0x373b41=_[_0x781a('0x3e')]({},_0x373b41,_0x2be8a7[_0x781a('0x3f')]);var _0x4b7363={'where':_0x373b41[_0x781a('0x3d')]};return db[_0x781a('0x2c')][_0x781a('0x1e')](_0x4b7363)[_0x781a('0x24')](function(_0x1e656c){_0x25f702[_0x781a('0x1e')]=_0x1e656c;if(_0x2be8a7[_0x781a('0x31')][_0x781a('0x40')]){_0x373b41[_0x781a('0x41')]=[{'all':!![]}];}return db[_0x781a('0x2c')][_0x781a('0x42')](_0x373b41);})['then'](function(_0x4e958e){_0x25f702[_0x781a('0x43')]=_0x4e958e;return _0x25f702;})[_0x781a('0x24')](respondWithFilteredResult(_0x3ac9a2,_0x373b41))['catch'](handleError(_0x3ac9a2,null));};exports['show']=function(_0x31c685,_0x39ac9f){var _0x2e7ed9={'raw':![],'where':{'id':_0x31c685[_0x781a('0x44')]['id']}},_0x31ba8b={};_0x31ba8b[_0x781a('0x30')]=_[_0x781a('0x32')](db[_0x781a('0x2c')][_0x781a('0x2d')]);_0x31ba8b[_0x781a('0x31')]=_[_0x781a('0x32')](_0x31c685[_0x781a('0x31')]);_0x31ba8b[_0x781a('0x33')]=_[_0x781a('0x35')](_0x31ba8b[_0x781a('0x30')],_0x31ba8b[_0x781a('0x31')]);_0x2e7ed9[_0x781a('0x34')]=_['intersection'](_0x31ba8b['model'],qs[_0x781a('0x36')](_0x31c685['query'][_0x781a('0x36')]));_0x2e7ed9[_0x781a('0x34')]=_0x2e7ed9[_0x781a('0x34')]['length']?_0x2e7ed9[_0x781a('0x34')]:_0x31ba8b[_0x781a('0x30')];if(_0x31c685[_0x781a('0x31')]['includeAll']){_0x2e7ed9[_0x781a('0x41')]=[{'all':!![]}];}_0x2e7ed9=_[_0x781a('0x3e')]({},_0x2e7ed9,_0x31c685[_0x781a('0x3f')]);return db[_0x781a('0x2c')]['find'](_0x2e7ed9)[_0x781a('0x24')](handleEntityNotFound(_0x39ac9f,null))[_0x781a('0x24')](respondWithResult(_0x39ac9f,null))[_0x781a('0x45')](handleError(_0x39ac9f,null));};exports['create']=function(_0xb1517a,_0x236a3a){return db[_0x781a('0x2c')][_0x781a('0x46')](_0xb1517a[_0x781a('0x47')],{})[_0x781a('0x24')](respondWithResult(_0x236a3a,0xc9))[_0x781a('0x45')](handleError(_0x236a3a,null));};exports[_0x781a('0x23')]=function(_0xd13a57,_0xfb3ed){if(_0xd13a57[_0x781a('0x47')]['id']){delete _0xd13a57[_0x781a('0x47')]['id'];}return db[_0x781a('0x2c')][_0x781a('0x48')]({'where':{'id':_0xd13a57['params']['id']}})['then'](handleEntityNotFound(_0xfb3ed,null))[_0x781a('0x24')](saveUpdates(_0xd13a57[_0x781a('0x47')],null))[_0x781a('0x24')](respondWithResult(_0xfb3ed,null))[_0x781a('0x45')](handleError(_0xfb3ed,null));};exports[_0x781a('0x25')]=function(_0x43da86,_0x524789){return db[_0x781a('0x2c')][_0x781a('0x48')]({'where':{'id':_0x43da86[_0x781a('0x44')]['id']}})[_0x781a('0x24')](handleEntityNotFound(_0x524789,null))[_0x781a('0x24')](removeEntity(_0x524789,null))[_0x781a('0x45')](handleError(_0x524789,null));};exports[_0x781a('0x49')]=function(_0x229282,_0x509d0f,_0x37b735){var _0x4cef8c={};var _0x4801f2={};var _0x36f18e;var _0xc37afb;return db[_0x781a('0x2c')][_0x781a('0x4a')]({'where':{'id':_0x229282[_0x781a('0x44')]['id']}})['then'](handleEntityNotFound(_0x509d0f,null))[_0x781a('0x24')](function(_0x4db810){if(_0x4db810){_0x36f18e=_0x4db810;_0x4801f2[_0x781a('0x30')]=_[_0x781a('0x32')](db[_0x781a('0x4b')][_0x781a('0x2d')]);_0x4801f2['query']=_[_0x781a('0x32')](_0x229282['query']);_0x4801f2['filters']=_['intersection'](_0x4801f2[_0x781a('0x30')],_0x4801f2[_0x781a('0x31')]);_0x4cef8c[_0x781a('0x34')]=_[_0x781a('0x35')](_0x4801f2[_0x781a('0x30')],qs['fields'](_0x229282[_0x781a('0x31')][_0x781a('0x36')]));_0x4cef8c[_0x781a('0x34')]=_0x4cef8c[_0x781a('0x34')][_0x781a('0x37')]?_0x4cef8c[_0x781a('0x34')]:_0x4801f2['model'];_0x4cef8c[_0x781a('0x39')]=qs[_0x781a('0x3a')](_0x229282[_0x781a('0x31')]['sort']);_0x4cef8c[_0x781a('0x3d')]=qs['filters'](_[_0x781a('0x3b')](_0x229282[_0x781a('0x31')],_0x4801f2[_0x781a('0x33')]));if(_0x229282['query'][_0x781a('0x3c')]){_0x4cef8c[_0x781a('0x3d')]=_[_0x781a('0x3e')](_0x4cef8c['where'],{'$or':_[_0x781a('0x2b')](_0x4cef8c[_0x781a('0x34')],function(_0x333234){var _0x375330={};_0x375330[_0x333234]={'$like':'%'+_0x229282[_0x781a('0x31')][_0x781a('0x3c')]+'%'};return _0x375330;})});}_0x4cef8c=_['merge']({},_0x4cef8c,_0x229282[_0x781a('0x3f')]);return _0x36f18e['getFields'](_0x4cef8c);}})[_0x781a('0x24')](function(_0x1595ac){if(_0x1595ac){_0xc37afb=_0x1595ac[_0x781a('0x37')];if(!_0x229282['query'][_0x781a('0x4c')](_0x781a('0x38'))){_0x4cef8c[_0x781a('0x1c')]=qs[_0x781a('0x1c')](_0x229282[_0x781a('0x31')][_0x781a('0x1c')]);_0x4cef8c[_0x781a('0x1b')]=qs[_0x781a('0x1b')](_0x229282[_0x781a('0x31')]['offset']);}return _0x36f18e[_0x781a('0x49')](_0x4cef8c);}})['then'](function(_0x39f2f9){if(_0x39f2f9){return _0x39f2f9?{'count':_0xc37afb,'rows':_0x39f2f9}:null;}})[_0x781a('0x24')](respondWithResult(_0x509d0f,null))[_0x781a('0x45')](handleError(_0x509d0f,null));};exports['getSubjects']=function(_0x42faac,_0x2eb190,_0x3b7c38){var _0x292288={};var _0x2493e8={};var _0x1c4263;var _0x1e9069;return db[_0x781a('0x2c')][_0x781a('0x4a')]({'where':{'id':_0x42faac[_0x781a('0x44')]['id']}})[_0x781a('0x24')](handleEntityNotFound(_0x2eb190,null))[_0x781a('0x24')](function(_0x4ae184){if(_0x4ae184){_0x1c4263=_0x4ae184;_0x2493e8[_0x781a('0x30')]=_[_0x781a('0x32')](db[_0x781a('0x4b')]['rawAttributes']);_0x2493e8[_0x781a('0x31')]=_[_0x781a('0x32')](_0x42faac[_0x781a('0x31')]);_0x2493e8[_0x781a('0x33')]=_[_0x781a('0x35')](_0x2493e8[_0x781a('0x30')],_0x2493e8['query']);_0x292288[_0x781a('0x34')]=_[_0x781a('0x35')](_0x2493e8[_0x781a('0x30')],qs[_0x781a('0x36')](_0x42faac[_0x781a('0x31')][_0x781a('0x36')]));_0x292288['attributes']=_0x292288[_0x781a('0x34')]['length']?_0x292288[_0x781a('0x34')]:_0x2493e8[_0x781a('0x30')];_0x292288[_0x781a('0x39')]=qs[_0x781a('0x3a')](_0x42faac[_0x781a('0x31')][_0x781a('0x3a')]);_0x292288[_0x781a('0x3d')]=qs[_0x781a('0x33')](_[_0x781a('0x3b')](_0x42faac['query'],_0x2493e8[_0x781a('0x33')]));if(_0x42faac[_0x781a('0x31')]['filter']){_0x292288[_0x781a('0x3d')]=_[_0x781a('0x3e')](_0x292288['where'],{'$or':_[_0x781a('0x2b')](_0x292288['attributes'],function(_0x95f21e){var _0x5c2e98={};_0x5c2e98[_0x95f21e]={'$like':'%'+_0x42faac[_0x781a('0x31')][_0x781a('0x3c')]+'%'};return _0x5c2e98;})});}_0x292288=_[_0x781a('0x3e')]({},_0x292288,_0x42faac[_0x781a('0x3f')]);return _0x1c4263['getSubjects'](_0x292288);}})['then'](function(_0x59bb86){if(_0x59bb86){_0x1e9069=_0x59bb86[_0x781a('0x37')];if(!_0x42faac['query'][_0x781a('0x4c')](_0x781a('0x38'))){_0x292288['limit']=qs['limit'](_0x42faac[_0x781a('0x31')]['limit']);_0x292288[_0x781a('0x1b')]=qs['offset'](_0x42faac[_0x781a('0x31')][_0x781a('0x1b')]);}return _0x1c4263[_0x781a('0x4d')](_0x292288);}})[_0x781a('0x24')](function(_0x173d95){if(_0x173d95){return _0x173d95?{'count':_0x1e9069,'rows':_0x173d95}:null;}})[_0x781a('0x24')](respondWithResult(_0x2eb190,null))['catch'](handleError(_0x2eb190,null));};exports['getDescriptions']=function(_0x16e351,_0x3351fa,_0x508dbb){var _0x3f0465={};var _0x44f602={};var _0xe36ead;var _0x406a1e;return db['VtigerConfiguration'][_0x781a('0x4a')]({'where':{'id':_0x16e351[_0x781a('0x44')]['id']}})[_0x781a('0x24')](handleEntityNotFound(_0x3351fa,null))[_0x781a('0x24')](function(_0x305dc5){if(_0x305dc5){_0xe36ead=_0x305dc5;_0x44f602[_0x781a('0x30')]=_[_0x781a('0x32')](db[_0x781a('0x4b')][_0x781a('0x2d')]);_0x44f602[_0x781a('0x31')]=_[_0x781a('0x32')](_0x16e351[_0x781a('0x31')]);_0x44f602[_0x781a('0x33')]=_[_0x781a('0x35')](_0x44f602['model'],_0x44f602[_0x781a('0x31')]);_0x3f0465[_0x781a('0x34')]=_[_0x781a('0x35')](_0x44f602[_0x781a('0x30')],qs[_0x781a('0x36')](_0x16e351[_0x781a('0x31')]['fields']));_0x3f0465[_0x781a('0x34')]=_0x3f0465[_0x781a('0x34')][_0x781a('0x37')]?_0x3f0465[_0x781a('0x34')]:_0x44f602[_0x781a('0x30')];_0x3f0465[_0x781a('0x39')]=qs[_0x781a('0x3a')](_0x16e351[_0x781a('0x31')][_0x781a('0x3a')]);_0x3f0465['where']=qs[_0x781a('0x33')](_[_0x781a('0x3b')](_0x16e351[_0x781a('0x31')],_0x44f602['filters']));if(_0x16e351[_0x781a('0x31')][_0x781a('0x3c')]){_0x3f0465[_0x781a('0x3d')]=_[_0x781a('0x3e')](_0x3f0465[_0x781a('0x3d')],{'$or':_['map'](_0x3f0465[_0x781a('0x34')],function(_0x1d2468){var _0x4cd4a7={};_0x4cd4a7[_0x1d2468]={'$like':'%'+_0x16e351['query'][_0x781a('0x3c')]+'%'};return _0x4cd4a7;})});}_0x3f0465=_[_0x781a('0x3e')]({},_0x3f0465,_0x16e351[_0x781a('0x3f')]);return _0xe36ead[_0x781a('0x4e')](_0x3f0465);}})[_0x781a('0x24')](function(_0x4dd426){if(_0x4dd426){_0x406a1e=_0x4dd426[_0x781a('0x37')];if(!_0x16e351[_0x781a('0x31')][_0x781a('0x4c')](_0x781a('0x38'))){_0x3f0465['limit']=qs[_0x781a('0x1c')](_0x16e351['query'][_0x781a('0x1c')]);_0x3f0465[_0x781a('0x1b')]=qs[_0x781a('0x1b')](_0x16e351[_0x781a('0x31')]['offset']);}return _0xe36ead[_0x781a('0x4e')](_0x3f0465);}})[_0x781a('0x24')](function(_0x5aa209){if(_0x5aa209){return _0x5aa209?{'count':_0x406a1e,'rows':_0x5aa209}:null;}})[_0x781a('0x24')](respondWithResult(_0x3351fa,null))[_0x781a('0x45')](handleError(_0x3351fa,null));};
\ No newline at end of file
+var _0x8b9d=['VtigerField','getDescriptions','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','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','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','stack','name','send','index','map','VtigerConfiguration','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','keys','find','create','body','getFields','findOne','order','nolimit','getSubjects'];(function(_0x17b341,_0x286dad){var _0x5686f6=function(_0x2db12){while(--_0x2db12){_0x17b341['push'](_0x17b341['shift']());}};_0x5686f6(++_0x286dad);}(_0x8b9d,0x1ee));var _0xd8b9=function(_0x3ea5e1,_0x17c486){_0x3ea5e1=_0x3ea5e1-0x0;var _0x1b81d7=_0x8b9d[_0x3ea5e1];return _0x1b81d7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd8b9('0x0'));var jsonpatch=require(_0xd8b9('0x1'));var rp=require(_0xd8b9('0x2'));var moment=require(_0xd8b9('0x3'));var BPromise=require(_0xd8b9('0x4'));var Mustache=require(_0xd8b9('0x5'));var util=require(_0xd8b9('0x6'));var path=require(_0xd8b9('0x7'));var sox=require(_0xd8b9('0x8'));var csv=require('to-csv');var ejs=require(_0xd8b9('0x9'));var fs=require('fs');var fs_extra=require(_0xd8b9('0xa'));var _=require('lodash');var squel=require(_0xd8b9('0xb'));var crypto=require('crypto');var jsforce=require(_0xd8b9('0xc'));var deskjs=require(_0xd8b9('0xd'));var toCsv=require(_0xd8b9('0xe'));var querystring=require(_0xd8b9('0xf'));var Papa=require(_0xd8b9('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd8b9('0x11'));var as=require(_0xd8b9('0x12'));var hardwareService=require(_0xd8b9('0x13'));var logger=require(_0xd8b9('0x14'))(_0xd8b9('0x15'));var utils=require(_0xd8b9('0x16'));var config=require(_0xd8b9('0x17'));var licenseUtil=require(_0xd8b9('0x18'));var db=require(_0xd8b9('0x19'))['db'];function respondWithStatusCode(_0x480383,_0xcd42d5){_0xcd42d5=_0xcd42d5||0xcc;return function(_0x4a85ab){if(_0x4a85ab){return _0x480383[_0xd8b9('0x1a')](_0xcd42d5);}return _0x480383[_0xd8b9('0x1b')](_0xcd42d5)[_0xd8b9('0x1c')]();};}function respondWithResult(_0x13d444,_0x357b66){_0x357b66=_0x357b66||0xc8;return function(_0x13fffe){if(_0x13fffe){return _0x13d444['status'](_0x357b66)[_0xd8b9('0x1d')](_0x13fffe);}};}function respondWithFilteredResult(_0x1ab226,_0xbd8941){return function(_0x229e53){if(_0x229e53){var _0x359fbc=typeof _0xbd8941[_0xd8b9('0x1e')]===_0xd8b9('0x1f')&&typeof _0xbd8941[_0xd8b9('0x20')]===_0xd8b9('0x1f');var _0x260ea1=_0x229e53[_0xd8b9('0x21')];var _0x4e03da=_0x359fbc?0x0:_0xbd8941[_0xd8b9('0x1e')];var _0x5cee45=_0x359fbc?_0x229e53['count']:_0xbd8941['offset']+_0xbd8941['limit'];var _0x36a5db;if(_0x5cee45>=_0x260ea1){_0x5cee45=_0x260ea1;_0x36a5db=0xc8;}else{_0x36a5db=0xce;}_0x1ab226[_0xd8b9('0x1b')](_0x36a5db);return _0x1ab226[_0xd8b9('0x22')](_0xd8b9('0x23'),_0x4e03da+'-'+_0x5cee45+'/'+_0x260ea1)[_0xd8b9('0x1d')](_0x229e53);}return null;};}function patchUpdates(_0x31f94e){return function(_0x561c2){try{jsonpatch[_0xd8b9('0x24')](_0x561c2,_0x31f94e,!![]);}catch(_0x4fb94a){return BPromise[_0xd8b9('0x25')](_0x4fb94a);}return _0x561c2[_0xd8b9('0x26')]();};}function saveUpdates(_0x396f22,_0x3fc766){return function(_0x1ba866){if(_0x1ba866){return _0x1ba866['update'](_0x396f22)[_0xd8b9('0x27')](function(_0x30277d){return _0x30277d;});}return null;};}function removeEntity(_0x23c5ad,_0x1e5d2f){return function(_0x1d8046){if(_0x1d8046){return _0x1d8046[_0xd8b9('0x28')]()['then'](function(){_0x23c5ad[_0xd8b9('0x1b')](0xcc)[_0xd8b9('0x1c')]();});}};}function handleEntityNotFound(_0x4ef8da,_0x22884b){return function(_0x15b221){if(!_0x15b221){_0x4ef8da[_0xd8b9('0x1a')](0x194);}return _0x15b221;};}function handleError(_0x521079,_0x34c368){_0x34c368=_0x34c368||0x1f4;return function(_0x4f829d){logger['error'](_0x4f829d[_0xd8b9('0x29')]);if(_0x4f829d[_0xd8b9('0x2a')]){delete _0x4f829d[_0xd8b9('0x2a')];}_0x521079['status'](_0x34c368)[_0xd8b9('0x2b')](_0x4f829d);};}exports[_0xd8b9('0x2c')]=function(_0x3ffe23,_0xdf89e6){var _0x4666fe={},_0x4f3973={},_0x253646={'count':0x0,'rows':[]};var _0x718a9e=_[_0xd8b9('0x2d')](db[_0xd8b9('0x2e')][_0xd8b9('0x2f')],function(_0x149446){return{'name':_0x149446['fieldName'],'type':_0x149446[_0xd8b9('0x30')][_0xd8b9('0x31')]};});_0x4f3973[_0xd8b9('0x32')]=_['map'](_0x718a9e,'name');_0x4f3973[_0xd8b9('0x33')]=_['keys'](_0x3ffe23[_0xd8b9('0x33')]);_0x4f3973[_0xd8b9('0x34')]=_[_0xd8b9('0x35')](_0x4f3973[_0xd8b9('0x32')],_0x4f3973[_0xd8b9('0x33')]);_0x4666fe[_0xd8b9('0x36')]=_[_0xd8b9('0x35')](_0x4f3973[_0xd8b9('0x32')],qs['fields'](_0x3ffe23['query'][_0xd8b9('0x37')]));_0x4666fe[_0xd8b9('0x36')]=_0x4666fe[_0xd8b9('0x36')][_0xd8b9('0x38')]?_0x4666fe[_0xd8b9('0x36')]:_0x4f3973[_0xd8b9('0x32')];if(!_0x3ffe23[_0xd8b9('0x33')][_0xd8b9('0x39')]('nolimit')){_0x4666fe['limit']=qs['limit'](_0x3ffe23[_0xd8b9('0x33')][_0xd8b9('0x20')]);_0x4666fe[_0xd8b9('0x1e')]=qs[_0xd8b9('0x1e')](_0x3ffe23[_0xd8b9('0x33')][_0xd8b9('0x1e')]);}_0x4666fe['order']=qs['sort'](_0x3ffe23['query'][_0xd8b9('0x3a')]);_0x4666fe[_0xd8b9('0x3b')]=qs[_0xd8b9('0x34')](_[_0xd8b9('0x3c')](_0x3ffe23[_0xd8b9('0x33')],_0x4f3973[_0xd8b9('0x34')]),_0x718a9e);if(_0x3ffe23['query'][_0xd8b9('0x3d')]){_0x4666fe[_0xd8b9('0x3b')]=_['merge'](_0x4666fe['where'],{'$or':_[_0xd8b9('0x2d')](_0x718a9e,function(_0xfbf8f2){if(_0xfbf8f2['type']!==_0xd8b9('0x3e')){var _0x409fd6={};_0x409fd6[_0xfbf8f2['name']]={'$like':'%'+_0x3ffe23[_0xd8b9('0x33')][_0xd8b9('0x3d')]+'%'};return _0x409fd6;}})});}_0x4666fe=_[_0xd8b9('0x3f')]({},_0x4666fe,_0x3ffe23[_0xd8b9('0x40')]);var _0x65b61f={'where':_0x4666fe[_0xd8b9('0x3b')]};return db[_0xd8b9('0x2e')][_0xd8b9('0x21')](_0x65b61f)[_0xd8b9('0x27')](function(_0x7517a1){_0x253646['count']=_0x7517a1;if(_0x3ffe23[_0xd8b9('0x33')][_0xd8b9('0x41')]){_0x4666fe[_0xd8b9('0x42')]=[{'all':!![]}];}return db[_0xd8b9('0x2e')]['findAll'](_0x4666fe);})['then'](function(_0x65d13e){_0x253646[_0xd8b9('0x43')]=_0x65d13e;return _0x253646;})[_0xd8b9('0x27')](respondWithFilteredResult(_0xdf89e6,_0x4666fe))[_0xd8b9('0x44')](handleError(_0xdf89e6,null));};exports[_0xd8b9('0x45')]=function(_0xad241e,_0x4efef7){var _0x19da88={'raw':![],'where':{'id':_0xad241e[_0xd8b9('0x46')]['id']}},_0x26e3a6={};_0x26e3a6[_0xd8b9('0x32')]=_['keys'](db[_0xd8b9('0x2e')][_0xd8b9('0x2f')]);_0x26e3a6['query']=_[_0xd8b9('0x47')](_0xad241e[_0xd8b9('0x33')]);_0x26e3a6['filters']=_[_0xd8b9('0x35')](_0x26e3a6[_0xd8b9('0x32')],_0x26e3a6[_0xd8b9('0x33')]);_0x19da88[_0xd8b9('0x36')]=_[_0xd8b9('0x35')](_0x26e3a6[_0xd8b9('0x32')],qs[_0xd8b9('0x37')](_0xad241e[_0xd8b9('0x33')]['fields']));_0x19da88[_0xd8b9('0x36')]=_0x19da88[_0xd8b9('0x36')]['length']?_0x19da88[_0xd8b9('0x36')]:_0x26e3a6[_0xd8b9('0x32')];if(_0xad241e[_0xd8b9('0x33')][_0xd8b9('0x41')]){_0x19da88[_0xd8b9('0x42')]=[{'all':!![]}];}_0x19da88=_['merge']({},_0x19da88,_0xad241e[_0xd8b9('0x40')]);return db[_0xd8b9('0x2e')][_0xd8b9('0x48')](_0x19da88)[_0xd8b9('0x27')](handleEntityNotFound(_0x4efef7,null))[_0xd8b9('0x27')](respondWithResult(_0x4efef7,null))[_0xd8b9('0x44')](handleError(_0x4efef7,null));};exports['create']=function(_0x913b9b,_0x1c9713){return db[_0xd8b9('0x2e')][_0xd8b9('0x49')](_0x913b9b['body'],{})[_0xd8b9('0x27')](respondWithResult(_0x1c9713,0xc9))[_0xd8b9('0x44')](handleError(_0x1c9713,null));};exports['update']=function(_0x326f98,_0x454556){if(_0x326f98[_0xd8b9('0x4a')]['id']){delete _0x326f98['body']['id'];}return db[_0xd8b9('0x2e')][_0xd8b9('0x48')]({'where':{'id':_0x326f98['params']['id']}})[_0xd8b9('0x27')](handleEntityNotFound(_0x454556,null))['then'](saveUpdates(_0x326f98[_0xd8b9('0x4a')],null))[_0xd8b9('0x27')](respondWithResult(_0x454556,null))[_0xd8b9('0x44')](handleError(_0x454556,null));};exports[_0xd8b9('0x28')]=function(_0x1f693c,_0x19799d){return db[_0xd8b9('0x2e')]['find']({'where':{'id':_0x1f693c[_0xd8b9('0x46')]['id']}})[_0xd8b9('0x27')](handleEntityNotFound(_0x19799d,null))['then'](removeEntity(_0x19799d,null))['catch'](handleError(_0x19799d,null));};exports[_0xd8b9('0x4b')]=function(_0x4d6790,_0x846d9f,_0x36fdd7){var _0x4adb58={};var _0x226fad={};var _0x52eba9;var _0x12c737;return db[_0xd8b9('0x2e')][_0xd8b9('0x4c')]({'where':{'id':_0x4d6790[_0xd8b9('0x46')]['id']}})['then'](handleEntityNotFound(_0x846d9f,null))[_0xd8b9('0x27')](function(_0x232331){if(_0x232331){_0x52eba9=_0x232331;_0x226fad[_0xd8b9('0x32')]=_[_0xd8b9('0x47')](db['VtigerField'][_0xd8b9('0x2f')]);_0x226fad[_0xd8b9('0x33')]=_[_0xd8b9('0x47')](_0x4d6790['query']);_0x226fad[_0xd8b9('0x34')]=_['intersection'](_0x226fad[_0xd8b9('0x32')],_0x226fad['query']);_0x4adb58[_0xd8b9('0x36')]=_['intersection'](_0x226fad['model'],qs[_0xd8b9('0x37')](_0x4d6790['query']['fields']));_0x4adb58[_0xd8b9('0x36')]=_0x4adb58[_0xd8b9('0x36')][_0xd8b9('0x38')]?_0x4adb58[_0xd8b9('0x36')]:_0x226fad[_0xd8b9('0x32')];_0x4adb58[_0xd8b9('0x4d')]=qs[_0xd8b9('0x3a')](_0x4d6790[_0xd8b9('0x33')][_0xd8b9('0x3a')]);_0x4adb58[_0xd8b9('0x3b')]=qs['filters'](_['pick'](_0x4d6790[_0xd8b9('0x33')],_0x226fad[_0xd8b9('0x34')]));if(_0x4d6790['query'][_0xd8b9('0x3d')]){_0x4adb58[_0xd8b9('0x3b')]=_[_0xd8b9('0x3f')](_0x4adb58[_0xd8b9('0x3b')],{'$or':_[_0xd8b9('0x2d')](_0x4adb58[_0xd8b9('0x36')],function(_0x49c992){var _0x48c736={};_0x48c736[_0x49c992]={'$like':'%'+_0x4d6790[_0xd8b9('0x33')][_0xd8b9('0x3d')]+'%'};return _0x48c736;})});}_0x4adb58=_['merge']({},_0x4adb58,_0x4d6790['options']);return _0x52eba9[_0xd8b9('0x4b')](_0x4adb58);}})['then'](function(_0x331e5d){if(_0x331e5d){_0x12c737=_0x331e5d[_0xd8b9('0x38')];if(!_0x4d6790['query']['hasOwnProperty'](_0xd8b9('0x4e'))){_0x4adb58[_0xd8b9('0x20')]=qs[_0xd8b9('0x20')](_0x4d6790[_0xd8b9('0x33')][_0xd8b9('0x20')]);_0x4adb58[_0xd8b9('0x1e')]=qs[_0xd8b9('0x1e')](_0x4d6790[_0xd8b9('0x33')][_0xd8b9('0x1e')]);}return _0x52eba9[_0xd8b9('0x4b')](_0x4adb58);}})[_0xd8b9('0x27')](function(_0x4367db){if(_0x4367db){return _0x4367db?{'count':_0x12c737,'rows':_0x4367db}:null;}})['then'](respondWithResult(_0x846d9f,null))[_0xd8b9('0x44')](handleError(_0x846d9f,null));};exports[_0xd8b9('0x4f')]=function(_0x33e356,_0x26d1ee,_0x3a117e){var _0x4585b2={};var _0x997add={};var _0x1e544b;var _0x5080cd;return db[_0xd8b9('0x2e')][_0xd8b9('0x4c')]({'where':{'id':_0x33e356[_0xd8b9('0x46')]['id']}})['then'](handleEntityNotFound(_0x26d1ee,null))['then'](function(_0x559163){if(_0x559163){_0x1e544b=_0x559163;_0x997add[_0xd8b9('0x32')]=_[_0xd8b9('0x47')](db[_0xd8b9('0x50')]['rawAttributes']);_0x997add[_0xd8b9('0x33')]=_[_0xd8b9('0x47')](_0x33e356[_0xd8b9('0x33')]);_0x997add[_0xd8b9('0x34')]=_['intersection'](_0x997add[_0xd8b9('0x32')],_0x997add[_0xd8b9('0x33')]);_0x4585b2[_0xd8b9('0x36')]=_[_0xd8b9('0x35')](_0x997add[_0xd8b9('0x32')],qs['fields'](_0x33e356[_0xd8b9('0x33')][_0xd8b9('0x37')]));_0x4585b2[_0xd8b9('0x36')]=_0x4585b2[_0xd8b9('0x36')]['length']?_0x4585b2[_0xd8b9('0x36')]:_0x997add['model'];_0x4585b2[_0xd8b9('0x4d')]=qs['sort'](_0x33e356[_0xd8b9('0x33')][_0xd8b9('0x3a')]);_0x4585b2[_0xd8b9('0x3b')]=qs[_0xd8b9('0x34')](_['pick'](_0x33e356[_0xd8b9('0x33')],_0x997add[_0xd8b9('0x34')]));if(_0x33e356[_0xd8b9('0x33')][_0xd8b9('0x3d')]){_0x4585b2[_0xd8b9('0x3b')]=_['merge'](_0x4585b2[_0xd8b9('0x3b')],{'$or':_[_0xd8b9('0x2d')](_0x4585b2[_0xd8b9('0x36')],function(_0x18fea5){var _0x7c2e3a={};_0x7c2e3a[_0x18fea5]={'$like':'%'+_0x33e356[_0xd8b9('0x33')]['filter']+'%'};return _0x7c2e3a;})});}_0x4585b2=_[_0xd8b9('0x3f')]({},_0x4585b2,_0x33e356['options']);return _0x1e544b['getSubjects'](_0x4585b2);}})[_0xd8b9('0x27')](function(_0x5a5c13){if(_0x5a5c13){_0x5080cd=_0x5a5c13[_0xd8b9('0x38')];if(!_0x33e356['query'][_0xd8b9('0x39')](_0xd8b9('0x4e'))){_0x4585b2[_0xd8b9('0x20')]=qs[_0xd8b9('0x20')](_0x33e356[_0xd8b9('0x33')][_0xd8b9('0x20')]);_0x4585b2[_0xd8b9('0x1e')]=qs[_0xd8b9('0x1e')](_0x33e356[_0xd8b9('0x33')]['offset']);}return _0x1e544b['getSubjects'](_0x4585b2);}})[_0xd8b9('0x27')](function(_0x206823){if(_0x206823){return _0x206823?{'count':_0x5080cd,'rows':_0x206823}:null;}})['then'](respondWithResult(_0x26d1ee,null))[_0xd8b9('0x44')](handleError(_0x26d1ee,null));};exports[_0xd8b9('0x51')]=function(_0x5c92e9,_0x59bc3f,_0x4ffe11){var _0xfbd78c={};var _0x166872={};var _0x40fbf3;var _0x1e271b;return db[_0xd8b9('0x2e')][_0xd8b9('0x4c')]({'where':{'id':_0x5c92e9[_0xd8b9('0x46')]['id']}})['then'](handleEntityNotFound(_0x59bc3f,null))['then'](function(_0x5a06ad){if(_0x5a06ad){_0x40fbf3=_0x5a06ad;_0x166872[_0xd8b9('0x32')]=_[_0xd8b9('0x47')](db[_0xd8b9('0x50')][_0xd8b9('0x2f')]);_0x166872['query']=_['keys'](_0x5c92e9[_0xd8b9('0x33')]);_0x166872[_0xd8b9('0x34')]=_[_0xd8b9('0x35')](_0x166872[_0xd8b9('0x32')],_0x166872[_0xd8b9('0x33')]);_0xfbd78c[_0xd8b9('0x36')]=_[_0xd8b9('0x35')](_0x166872[_0xd8b9('0x32')],qs[_0xd8b9('0x37')](_0x5c92e9[_0xd8b9('0x33')][_0xd8b9('0x37')]));_0xfbd78c[_0xd8b9('0x36')]=_0xfbd78c[_0xd8b9('0x36')]['length']?_0xfbd78c[_0xd8b9('0x36')]:_0x166872[_0xd8b9('0x32')];_0xfbd78c['order']=qs[_0xd8b9('0x3a')](_0x5c92e9[_0xd8b9('0x33')][_0xd8b9('0x3a')]);_0xfbd78c[_0xd8b9('0x3b')]=qs[_0xd8b9('0x34')](_[_0xd8b9('0x3c')](_0x5c92e9[_0xd8b9('0x33')],_0x166872[_0xd8b9('0x34')]));if(_0x5c92e9['query']['filter']){_0xfbd78c[_0xd8b9('0x3b')]=_[_0xd8b9('0x3f')](_0xfbd78c[_0xd8b9('0x3b')],{'$or':_[_0xd8b9('0x2d')](_0xfbd78c[_0xd8b9('0x36')],function(_0x4a6c43){var _0x101128={};_0x101128[_0x4a6c43]={'$like':'%'+_0x5c92e9[_0xd8b9('0x33')][_0xd8b9('0x3d')]+'%'};return _0x101128;})});}_0xfbd78c=_['merge']({},_0xfbd78c,_0x5c92e9[_0xd8b9('0x40')]);return _0x40fbf3[_0xd8b9('0x51')](_0xfbd78c);}})[_0xd8b9('0x27')](function(_0x3ce43b){if(_0x3ce43b){_0x1e271b=_0x3ce43b['length'];if(!_0x5c92e9[_0xd8b9('0x33')][_0xd8b9('0x39')](_0xd8b9('0x4e'))){_0xfbd78c[_0xd8b9('0x20')]=qs[_0xd8b9('0x20')](_0x5c92e9[_0xd8b9('0x33')][_0xd8b9('0x20')]);_0xfbd78c['offset']=qs[_0xd8b9('0x1e')](_0x5c92e9['query'][_0xd8b9('0x1e')]);}return _0x40fbf3[_0xd8b9('0x51')](_0xfbd78c);}})[_0xd8b9('0x27')](function(_0xcecebb){if(_0xcecebb){return _0xcecebb?{'count':_0x1e271b,'rows':_0xcecebb}:null;}})['then'](respondWithResult(_0x59bc3f,null))['catch'](handleError(_0x59bc3f,null));};
\ No newline at end of file
index 449bc1a..5beb18d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc72b=['int_vtiger_configurations','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','exports','define','VtigerConfiguration'];(function(_0x59625f,_0x3b2c76){var _0x498e1e=function(_0x85bb84){while(--_0x85bb84){_0x59625f['push'](_0x59625f['shift']());}};_0x498e1e(++_0x3b2c76);}(_0xc72b,0x1e5));var _0xbc72=function(_0x100e36,_0x4da225){_0x100e36=_0x100e36-0x0;var _0x1df0c9=_0xc72b[_0x100e36];return _0x1df0c9;};'use strict';var _=require('lodash');var util=require(_0xbc72('0x0'));var logger=require(_0xbc72('0x1'))('api');var moment=require(_0xbc72('0x2'));var BPromise=require('bluebird');var rp=require(_0xbc72('0x3'));var fs=require('fs');var path=require(_0xbc72('0x4'));var rimraf=require(_0xbc72('0x5'));var config=require(_0xbc72('0x6'));var attributes=require('./intVtigerConfiguration.attributes');module[_0xbc72('0x7')]=function(_0x1f4fdf,_0xe2593e){return _0x1f4fdf[_0xbc72('0x8')](_0xbc72('0x9'),attributes,{'tableName':_0xbc72('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4156=['int_vtiger_configurations','lodash','util','api','bluebird','request-promise','path','rimraf','exports','define','VtigerConfiguration'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x4156,0x198));var _0x6415=function(_0x41e9dc,_0x2152f6){_0x41e9dc=_0x41e9dc-0x0;var _0x2f0c56=_0x4156[_0x41e9dc];return _0x2f0c56;};'use strict';var _=require(_0x6415('0x0'));var util=require(_0x6415('0x1'));var logger=require('../../config/logger')(_0x6415('0x2'));var moment=require('moment');var BPromise=require(_0x6415('0x3'));var rp=require(_0x6415('0x4'));var fs=require('fs');var path=require(_0x6415('0x5'));var rimraf=require(_0x6415('0x6'));var config=require('../../config/environment');var attributes=require('./intVtigerConfiguration.attributes');module[_0x6415('0x7')]=function(_0x18970b,_0x326b04){return _0x18970b[_0x6415('0x8')](_0x6415('0x9'),attributes,{'tableName':_0x6415('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5af3a8f..b4f6da1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1e3=['message','catch','util','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code'];(function(_0x5aa2b6,_0x589465){var _0x2e529b=function(_0x3cfae8){while(--_0x3cfae8){_0x5aa2b6['push'](_0x5aa2b6['shift']());}};_0x2e529b(++_0x589465);}(_0xa1e3,0xad));var _0x3a1e=function(_0x29b286,_0x52d803){_0x29b286=_0x29b286-0x0;var _0x21275c=_0xa1e3[_0x29b286];return _0x21275c;};'use strict';var _=require('lodash');var util=require(_0x3a1e('0x0'));var moment=require('moment');var BPromise=require(_0x3a1e('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3a1e('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x3a1e('0x3'));var logger=require(_0x3a1e('0x4'))('rpc');var config=require(_0x3a1e('0x5'));var jayson=require(_0x3a1e('0x6'));var client=jayson[_0x3a1e('0x7')][_0x3a1e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3d1d63,_0x3ec156,_0x62c77a){return new BPromise(function(_0x1ec1e4,_0x25fb53){return client[_0x3a1e('0x9')](_0x3d1d63,_0x62c77a)[_0x3a1e('0xa')](function(_0x7b5c90){logger[_0x3a1e('0xb')](_0x3a1e('0xc'),_0x3ec156,_0x3a1e('0xd'));logger[_0x3a1e('0xe')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x3ec156,_0x3a1e('0xd'),JSON['stringify'](_0x7b5c90));if(_0x7b5c90[_0x3a1e('0xf')]){if(_0x7b5c90['error'][_0x3a1e('0x10')]===0x1f4){logger['error'](_0x3a1e('0xc'),_0x3ec156,_0x7b5c90[_0x3a1e('0xf')]['message']);return _0x25fb53(_0x7b5c90[_0x3a1e('0xf')]['message']);}logger[_0x3a1e('0xf')](_0x3a1e('0xc'),_0x3ec156,_0x7b5c90[_0x3a1e('0xf')][_0x3a1e('0x11')]);return _0x1ec1e4(_0x7b5c90[_0x3a1e('0xf')]['message']);}else{logger['info'](_0x3a1e('0xc'),_0x3ec156,_0x3a1e('0xd'));_0x1ec1e4(_0x7b5c90['result'][_0x3a1e('0x11')]);}})[_0x3a1e('0x12')](function(_0x3d431c){logger[_0x3a1e('0xf')](_0x3a1e('0xc'),_0x3ec156,_0x3d431c);_0x25fb53(_0x3d431c);});});}
\ No newline at end of file
+var _0x1cf8=['debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','VtigerConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x586d12,_0x44383c){var _0x217a33=function(_0xc768c7){while(--_0xc768c7){_0x586d12['push'](_0x586d12['shift']());}};_0x217a33(++_0x44383c);}(_0x1cf8,0x93));var _0x81cf=function(_0x591cfd,_0x501204){_0x591cfd=_0x591cfd-0x0;var _0x4d0100=_0x1cf8[_0x591cfd];return _0x4d0100;};'use strict';var _=require('lodash');var util=require(_0x81cf('0x0'));var moment=require(_0x81cf('0x1'));var BPromise=require(_0x81cf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x81cf('0x3'));var db=require(_0x81cf('0x4'))['db'];var utils=require(_0x81cf('0x5'));var logger=require(_0x81cf('0x6'))(_0x81cf('0x7'));var config=require(_0x81cf('0x8'));var jayson=require(_0x81cf('0x9'));var client=jayson[_0x81cf('0xa')][_0x81cf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2df8ed,_0x5f3d93,_0x4d43a9){return new BPromise(function(_0x54cb93,_0x13ab36){return client['request'](_0x2df8ed,_0x4d43a9)['then'](function(_0x18f2b1){logger['info'](_0x81cf('0xc'),_0x5f3d93,_0x81cf('0xd'));logger[_0x81cf('0xe')](_0x81cf('0xf'),_0x5f3d93,_0x81cf('0xd'),JSON[_0x81cf('0x10')](_0x18f2b1));if(_0x18f2b1[_0x81cf('0x11')]){if(_0x18f2b1[_0x81cf('0x11')][_0x81cf('0x12')]===0x1f4){logger[_0x81cf('0x11')](_0x81cf('0xc'),_0x5f3d93,_0x18f2b1['error'][_0x81cf('0x13')]);return _0x13ab36(_0x18f2b1['error'][_0x81cf('0x13')]);}logger[_0x81cf('0x11')]('VtigerConfiguration,\x20%s,\x20%s',_0x5f3d93,_0x18f2b1[_0x81cf('0x11')][_0x81cf('0x13')]);return _0x54cb93(_0x18f2b1[_0x81cf('0x11')]['message']);}else{logger[_0x81cf('0x14')]('VtigerConfiguration,\x20%s,\x20%s',_0x5f3d93,_0x81cf('0xd'));_0x54cb93(_0x18f2b1[_0x81cf('0x15')][_0x81cf('0x13')]);}})[_0x81cf('0x16')](function(_0x264a35){logger[_0x81cf('0x11')](_0x81cf('0xc'),_0x5f3d93,_0x264a35);_0x13ab36(_0x264a35);});});}
\ No newline at end of file
index 3150854..7828c11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea7=['update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','show','post','/:id'];(function(_0x3324d6,_0x156731){var _0x588698=function(_0x37743a){while(--_0x37743a){_0x3324d6['push'](_0x3324d6['shift']());}};_0x588698(++_0x156731);}(_0xcea7,0x81));var _0x7cea=function(_0x371898,_0x431924){_0x371898=_0x371898-0x0;var _0x1fab9d=_0xcea7[_0x371898];return _0x1fab9d;};'use strict';var multer=require(_0x7cea('0x0'));var util=require(_0x7cea('0x1'));var path=require(_0x7cea('0x2'));var timeout=require(_0x7cea('0x3'));var express=require(_0x7cea('0x4'));var router=express[_0x7cea('0x5')]();var fs_extra=require(_0x7cea('0x6'));var auth=require(_0x7cea('0x7'));var interaction=require(_0x7cea('0x8'));var config=require('../../config/environment');var controller=require('./intVtigerField.controller');router['get']('/',auth[_0x7cea('0x9')](),controller[_0x7cea('0xa')]);router[_0x7cea('0xb')]('/:id',auth[_0x7cea('0x9')](),controller[_0x7cea('0xc')]);router[_0x7cea('0xd')]('/',auth[_0x7cea('0x9')](),controller['create']);router['put'](_0x7cea('0xe'),auth[_0x7cea('0x9')](),controller[_0x7cea('0xf')]);router[_0x7cea('0x10')](_0x7cea('0xe'),auth['isAuthenticated'](),controller['destroy']);module[_0x7cea('0x11')]=router;
\ No newline at end of file
+var _0xbb9c=['index','show','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x1c67d1,_0x299922){var _0x2ff6b1=function(_0x428fa1){while(--_0x428fa1){_0x1c67d1['push'](_0x1c67d1['shift']());}};_0x2ff6b1(++_0x299922);}(_0xbb9c,0x7c));var _0xcbb9=function(_0x39ffd1,_0x299703){_0x39ffd1=_0x39ffd1-0x0;var _0x31267e=_0xbb9c[_0x39ffd1];return _0x31267e;};'use strict';var multer=require(_0xcbb9('0x0'));var util=require(_0xcbb9('0x1'));var path=require(_0xcbb9('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xcbb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xcbb9('0x4'));var interaction=require(_0xcbb9('0x5'));var config=require(_0xcbb9('0x6'));var controller=require('./intVtigerField.controller');router[_0xcbb9('0x7')]('/',auth[_0xcbb9('0x8')](),controller[_0xcbb9('0x9')]);router['get']('/:id',auth[_0xcbb9('0x8')](),controller[_0xcbb9('0xa')]);router[_0xcbb9('0xb')]('/',auth[_0xcbb9('0x8')](),controller[_0xcbb9('0xc')]);router[_0xcbb9('0xd')](_0xcbb9('0xe'),auth[_0xcbb9('0x8')](),controller[_0xcbb9('0xf')]);router[_0xcbb9('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xcbb9('0x11')]);module[_0xcbb9('0x12')]=router;
\ No newline at end of file
index 14d3049..d8abbf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76f6=['customVariable','BOOLEAN','sequelize','exports','ENUM','string','variable','keyValue','picklist','STRING'];(function(_0x2d5146,_0xb0aebf){var _0x58ffaf=function(_0x219001){while(--_0x219001){_0x2d5146['push'](_0x2d5146['shift']());}};_0x58ffaf(++_0xb0aebf);}(_0x76f6,0xa2));var _0x676f=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x76f6[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x676f('0x0'));module[_0x676f('0x1')]={'type':{'type':Sequelize[_0x676f('0x2')](_0x676f('0x3'),_0x676f('0x4'),'customVariable',_0x676f('0x5'),_0x676f('0x6')),'defaultValue':_0x676f('0x3')},'content':{'type':Sequelize[_0x676f('0x7')]},'key':{'type':Sequelize[_0x676f('0x7')]},'keyType':{'type':Sequelize[_0x676f('0x2')]('string',_0x676f('0x4'),_0x676f('0x8'))},'keyContent':{'type':Sequelize[_0x676f('0x7')]},'idField':{'type':Sequelize[_0x676f('0x7')]},'nameField':{'type':Sequelize[_0x676f('0x7')]},'customField':{'type':Sequelize[_0x676f('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x676f('0x7')]}};
\ No newline at end of file
+var _0xeca6=['STRING','sequelize','ENUM','string','variable','keyValue'];(function(_0x599e60,_0x5b6519){var _0x468e19=function(_0xcdfd97){while(--_0xcdfd97){_0x599e60['push'](_0x599e60['shift']());}};_0x468e19(++_0x5b6519);}(_0xeca6,0x121));var _0x6eca=function(_0x525320,_0x2601df){_0x525320=_0x525320-0x0;var _0x38966b=_0xeca6[_0x525320];return _0x38966b;};'use strict';var Sequelize=require(_0x6eca('0x0'));module['exports']={'type':{'type':Sequelize[_0x6eca('0x1')](_0x6eca('0x2'),_0x6eca('0x3'),'customVariable',_0x6eca('0x4'),'picklist'),'defaultValue':_0x6eca('0x2')},'content':{'type':Sequelize[_0x6eca('0x5')]},'key':{'type':Sequelize[_0x6eca('0x5')]},'keyType':{'type':Sequelize[_0x6eca('0x1')](_0x6eca('0x2'),_0x6eca('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x6eca('0x5')]},'idField':{'type':Sequelize[_0x6eca('0x5')]},'nameField':{'type':Sequelize[_0x6eca('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6eca('0x5')]}};
\ No newline at end of file
index 2d7e7c0..0a0b840 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ed0=['filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','end','sendStatus','error','name','index','map','VtigerField','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x4f45bc,_0x3ea5f3){var _0x2c5112=function(_0x5f707b){while(--_0x5f707b){_0x4f45bc['push'](_0x4f45bc['shift']());}};_0x2c5112(++_0x3ea5f3);}(_0x5ed0,0x195));var _0x05ed=function(_0xde3f0e,_0x57ab89){_0xde3f0e=_0xde3f0e-0x0;var _0x4b1f70=_0x5ed0[_0xde3f0e];return _0x4b1f70;};'use strict';var emlformat=require(_0x05ed('0x0'));var rimraf=require(_0x05ed('0x1'));var zipdir=require(_0x05ed('0x2'));var jsonpatch=require(_0x05ed('0x3'));var rp=require(_0x05ed('0x4'));var moment=require(_0x05ed('0x5'));var BPromise=require(_0x05ed('0x6'));var Mustache=require(_0x05ed('0x7'));var util=require(_0x05ed('0x8'));var path=require(_0x05ed('0x9'));var sox=require(_0x05ed('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x05ed('0xb'));var squel=require(_0x05ed('0xc'));var crypto=require(_0x05ed('0xd'));var jsforce=require(_0x05ed('0xe'));var deskjs=require(_0x05ed('0xf'));var toCsv=require(_0x05ed('0x10'));var querystring=require(_0x05ed('0x11'));var Papa=require(_0x05ed('0x12'));var Redis=require(_0x05ed('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x05ed('0x14'));var as=require(_0x05ed('0x15'));var hardwareService=require(_0x05ed('0x16'));var logger=require(_0x05ed('0x17'))(_0x05ed('0x18'));var utils=require(_0x05ed('0x19'));var config=require(_0x05ed('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x05ed('0x1b'))['db'];function respondWithStatusCode(_0x54f1fd,_0x351e36){_0x351e36=_0x351e36||0xcc;return function(_0x3b77aa){if(_0x3b77aa){return _0x54f1fd['sendStatus'](_0x351e36);}return _0x54f1fd[_0x05ed('0x1c')](_0x351e36)['end']();};}function respondWithResult(_0x452b50,_0x248a4b){_0x248a4b=_0x248a4b||0xc8;return function(_0x4b952a){if(_0x4b952a){return _0x452b50[_0x05ed('0x1c')](_0x248a4b)[_0x05ed('0x1d')](_0x4b952a);}};}function respondWithFilteredResult(_0x484364,_0x56886c){return function(_0x4c3396){if(_0x4c3396){var _0x503df5=typeof _0x56886c[_0x05ed('0x1e')]===_0x05ed('0x1f')&&typeof _0x56886c[_0x05ed('0x20')]===_0x05ed('0x1f');var _0x75cb71=_0x4c3396[_0x05ed('0x21')];var _0x973923=_0x503df5?0x0:_0x56886c['offset'];var _0x4cadc2=_0x503df5?_0x4c3396[_0x05ed('0x21')]:_0x56886c['offset']+_0x56886c['limit'];var _0xcbe40e;if(_0x4cadc2>=_0x75cb71){_0x4cadc2=_0x75cb71;_0xcbe40e=0xc8;}else{_0xcbe40e=0xce;}_0x484364[_0x05ed('0x1c')](_0xcbe40e);return _0x484364[_0x05ed('0x22')](_0x05ed('0x23'),_0x973923+'-'+_0x4cadc2+'/'+_0x75cb71)[_0x05ed('0x1d')](_0x4c3396);}return null;};}function patchUpdates(_0x5ed341){return function(_0x54504a){try{jsonpatch['apply'](_0x54504a,_0x5ed341,!![]);}catch(_0x5b5fe0){return BPromise['reject'](_0x5b5fe0);}return _0x54504a[_0x05ed('0x24')]();};}function saveUpdates(_0x146f4e,_0x1983aa){return function(_0x2a2291){if(_0x2a2291){return _0x2a2291[_0x05ed('0x25')](_0x146f4e)[_0x05ed('0x26')](function(_0x2841a8){return _0x2841a8;});}return null;};}function removeEntity(_0x4d007f,_0x53f659){return function(_0x402aed){if(_0x402aed){return _0x402aed[_0x05ed('0x27')]()[_0x05ed('0x26')](function(){_0x4d007f[_0x05ed('0x1c')](0xcc)[_0x05ed('0x28')]();});}};}function handleEntityNotFound(_0x11d524,_0x1f4a15){return function(_0xeec084){if(!_0xeec084){_0x11d524[_0x05ed('0x29')](0x194);}return _0xeec084;};}function handleError(_0x573836,_0x2258f3){_0x2258f3=_0x2258f3||0x1f4;return function(_0x26b4d1){logger[_0x05ed('0x2a')](_0x26b4d1['stack']);if(_0x26b4d1['name']){delete _0x26b4d1[_0x05ed('0x2b')];}_0x573836[_0x05ed('0x1c')](_0x2258f3)['send'](_0x26b4d1);};}exports[_0x05ed('0x2c')]=function(_0x52f2f8,_0x12972d){var _0x4da19b={},_0x4eade9={},_0xdcfea5={'count':0x0,'rows':[]};var _0x4517fb=_[_0x05ed('0x2d')](db[_0x05ed('0x2e')][_0x05ed('0x2f')],function(_0x44d7bf){return{'name':_0x44d7bf[_0x05ed('0x30')],'type':_0x44d7bf['type'][_0x05ed('0x31')]};});_0x4eade9[_0x05ed('0x32')]=_[_0x05ed('0x2d')](_0x4517fb,'name');_0x4eade9[_0x05ed('0x33')]=_[_0x05ed('0x34')](_0x52f2f8[_0x05ed('0x33')]);_0x4eade9[_0x05ed('0x35')]=_[_0x05ed('0x36')](_0x4eade9[_0x05ed('0x32')],_0x4eade9[_0x05ed('0x33')]);_0x4da19b[_0x05ed('0x37')]=_[_0x05ed('0x36')](_0x4eade9[_0x05ed('0x32')],qs['fields'](_0x52f2f8[_0x05ed('0x33')][_0x05ed('0x38')]));_0x4da19b[_0x05ed('0x37')]=_0x4da19b['attributes'][_0x05ed('0x39')]?_0x4da19b[_0x05ed('0x37')]:_0x4eade9[_0x05ed('0x32')];if(!_0x52f2f8[_0x05ed('0x33')][_0x05ed('0x3a')](_0x05ed('0x3b'))){_0x4da19b[_0x05ed('0x20')]=qs[_0x05ed('0x20')](_0x52f2f8[_0x05ed('0x33')][_0x05ed('0x20')]);_0x4da19b['offset']=qs['offset'](_0x52f2f8[_0x05ed('0x33')][_0x05ed('0x1e')]);}_0x4da19b[_0x05ed('0x3c')]=qs['sort'](_0x52f2f8[_0x05ed('0x33')][_0x05ed('0x3d')]);_0x4da19b[_0x05ed('0x3e')]=qs['filters'](_['pick'](_0x52f2f8[_0x05ed('0x33')],_0x4eade9[_0x05ed('0x35')]),_0x4517fb);if(_0x52f2f8[_0x05ed('0x33')][_0x05ed('0x3f')]){_0x4da19b[_0x05ed('0x3e')]=_[_0x05ed('0x40')](_0x4da19b[_0x05ed('0x3e')],{'$or':_[_0x05ed('0x2d')](_0x4517fb,function(_0x1c9cef){if(_0x1c9cef[_0x05ed('0x41')]!==_0x05ed('0x42')){var _0x9aa22b={};_0x9aa22b[_0x1c9cef['name']]={'$like':'%'+_0x52f2f8[_0x05ed('0x33')]['filter']+'%'};return _0x9aa22b;}})});}_0x4da19b=_[_0x05ed('0x40')]({},_0x4da19b,_0x52f2f8[_0x05ed('0x43')]);var _0x434627={'where':_0x4da19b[_0x05ed('0x3e')]};return db[_0x05ed('0x2e')]['count'](_0x434627)[_0x05ed('0x26')](function(_0x43f0bb){_0xdcfea5[_0x05ed('0x21')]=_0x43f0bb;if(_0x52f2f8[_0x05ed('0x33')]['includeAll']){_0x4da19b[_0x05ed('0x44')]=[{'all':!![]}];}return db[_0x05ed('0x2e')][_0x05ed('0x45')](_0x4da19b);})[_0x05ed('0x26')](function(_0x1a2e7){_0xdcfea5[_0x05ed('0x46')]=_0x1a2e7;return _0xdcfea5;})[_0x05ed('0x26')](respondWithFilteredResult(_0x12972d,_0x4da19b))[_0x05ed('0x47')](handleError(_0x12972d,null));};exports[_0x05ed('0x48')]=function(_0x452180,_0x5df377){var _0x1b4dca={'raw':!![],'where':{'id':_0x452180['params']['id']}},_0x307eaf={};_0x307eaf[_0x05ed('0x32')]=_[_0x05ed('0x34')](db[_0x05ed('0x2e')][_0x05ed('0x2f')]);_0x307eaf[_0x05ed('0x33')]=_[_0x05ed('0x34')](_0x452180['query']);_0x307eaf[_0x05ed('0x35')]=_[_0x05ed('0x36')](_0x307eaf['model'],_0x307eaf[_0x05ed('0x33')]);_0x1b4dca[_0x05ed('0x37')]=_[_0x05ed('0x36')](_0x307eaf[_0x05ed('0x32')],qs[_0x05ed('0x38')](_0x452180[_0x05ed('0x33')][_0x05ed('0x38')]));_0x1b4dca[_0x05ed('0x37')]=_0x1b4dca['attributes'][_0x05ed('0x39')]?_0x1b4dca['attributes']:_0x307eaf[_0x05ed('0x32')];if(_0x452180[_0x05ed('0x33')][_0x05ed('0x49')]){_0x1b4dca['include']=[{'all':!![]}];}_0x1b4dca=_[_0x05ed('0x40')]({},_0x1b4dca,_0x452180['options']);return db[_0x05ed('0x2e')][_0x05ed('0x4a')](_0x1b4dca)[_0x05ed('0x26')](handleEntityNotFound(_0x5df377,null))[_0x05ed('0x26')](respondWithResult(_0x5df377,null))['catch'](handleError(_0x5df377,null));};exports[_0x05ed('0x4b')]=function(_0x378b24,_0x22f7c3){return db[_0x05ed('0x2e')]['create'](_0x378b24[_0x05ed('0x4c')],{})[_0x05ed('0x26')](respondWithResult(_0x22f7c3,0xc9))[_0x05ed('0x47')](handleError(_0x22f7c3,null));};exports[_0x05ed('0x25')]=function(_0x30f65a,_0x45113f){if(_0x30f65a['body']['id']){delete _0x30f65a['body']['id'];}return db['VtigerField']['find']({'where':{'id':_0x30f65a['params']['id']}})[_0x05ed('0x26')](handleEntityNotFound(_0x45113f,null))['then'](saveUpdates(_0x30f65a['body'],null))['then'](respondWithResult(_0x45113f,null))[_0x05ed('0x47')](handleError(_0x45113f,null));};exports[_0x05ed('0x27')]=function(_0xf42cd7,_0x4bd073){return db[_0x05ed('0x2e')]['find']({'where':{'id':_0xf42cd7[_0x05ed('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4bd073,null))[_0x05ed('0x26')](removeEntity(_0x4bd073,null))[_0x05ed('0x47')](handleError(_0x4bd073,null));};
\ No newline at end of file
+var _0xe1a3=['nolimit','sort','where','pick','filter','merge','options','VtigerField','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','limit','undefined','count','offset','status','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','rawAttributes','fieldName','type','map','query','filters','intersection','attributes','model','fields','length','hasOwnProperty'];(function(_0x3f5d5c,_0xefb026){var _0x27155c=function(_0x45c59f){while(--_0x45c59f){_0x3f5d5c['push'](_0x3f5d5c['shift']());}};_0x27155c(++_0xefb026);}(_0xe1a3,0xf7));var _0x3e1a=function(_0x22f84c,_0x150580){_0x22f84c=_0x22f84c-0x0;var _0x30794a=_0xe1a3[_0x22f84c];return _0x30794a;};'use strict';var emlformat=require(_0x3e1a('0x0'));var rimraf=require(_0x3e1a('0x1'));var zipdir=require(_0x3e1a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3e1a('0x3'));var moment=require(_0x3e1a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3e1a('0x5'));var util=require(_0x3e1a('0x6'));var path=require(_0x3e1a('0x7'));var sox=require(_0x3e1a('0x8'));var csv=require('to-csv');var ejs=require(_0x3e1a('0x9'));var fs=require('fs');var fs_extra=require(_0x3e1a('0xa'));var _=require('lodash');var squel=require(_0x3e1a('0xb'));var crypto=require(_0x3e1a('0xc'));var jsforce=require(_0x3e1a('0xd'));var deskjs=require(_0x3e1a('0xe'));var toCsv=require('to-csv');var querystring=require(_0x3e1a('0xf'));var Papa=require(_0x3e1a('0x10'));var Redis=require(_0x3e1a('0x11'));var authService=require(_0x3e1a('0x12'));var qs=require(_0x3e1a('0x13'));var as=require(_0x3e1a('0x14'));var hardwareService=require(_0x3e1a('0x15'));var logger=require('../../config/logger')(_0x3e1a('0x16'));var utils=require('../../config/utils');var config=require(_0x3e1a('0x17'));var licenseUtil=require(_0x3e1a('0x18'));var db=require(_0x3e1a('0x19'))['db'];function respondWithStatusCode(_0x58feb7,_0x25df0c){_0x25df0c=_0x25df0c||0xcc;return function(_0x53a761){if(_0x53a761){return _0x58feb7[_0x3e1a('0x1a')](_0x25df0c);}return _0x58feb7['status'](_0x25df0c)[_0x3e1a('0x1b')]();};}function respondWithResult(_0x8cd3f9,_0x56c345){_0x56c345=_0x56c345||0xc8;return function(_0x335326){if(_0x335326){return _0x8cd3f9['status'](_0x56c345)[_0x3e1a('0x1c')](_0x335326);}};}function respondWithFilteredResult(_0x4b6841,_0x14bbcc){return function(_0x317a3d){if(_0x317a3d){var _0x10d3cd=typeof _0x14bbcc['offset']==='undefined'&&typeof _0x14bbcc[_0x3e1a('0x1d')]===_0x3e1a('0x1e');var _0x44c9b9=_0x317a3d[_0x3e1a('0x1f')];var _0x388c54=_0x10d3cd?0x0:_0x14bbcc[_0x3e1a('0x20')];var _0x59aee7=_0x10d3cd?_0x317a3d[_0x3e1a('0x1f')]:_0x14bbcc[_0x3e1a('0x20')]+_0x14bbcc['limit'];var _0x2c6ce5;if(_0x59aee7>=_0x44c9b9){_0x59aee7=_0x44c9b9;_0x2c6ce5=0xc8;}else{_0x2c6ce5=0xce;}_0x4b6841[_0x3e1a('0x21')](_0x2c6ce5);return _0x4b6841[_0x3e1a('0x22')](_0x3e1a('0x23'),_0x388c54+'-'+_0x59aee7+'/'+_0x44c9b9)[_0x3e1a('0x1c')](_0x317a3d);}return null;};}function patchUpdates(_0x11f11a){return function(_0x5597a2){try{jsonpatch['apply'](_0x5597a2,_0x11f11a,!![]);}catch(_0x40e469){return BPromise[_0x3e1a('0x24')](_0x40e469);}return _0x5597a2[_0x3e1a('0x25')]();};}function saveUpdates(_0x55ea7d,_0x440f4d){return function(_0x4e38e0){if(_0x4e38e0){return _0x4e38e0[_0x3e1a('0x26')](_0x55ea7d)['then'](function(_0x2832a3){return _0x2832a3;});}return null;};}function removeEntity(_0x3482ff,_0x451119){return function(_0x50991a){if(_0x50991a){return _0x50991a[_0x3e1a('0x27')]()[_0x3e1a('0x28')](function(){_0x3482ff['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xf46c35,_0x297d54){return function(_0x2f75e1){if(!_0x2f75e1){_0xf46c35[_0x3e1a('0x1a')](0x194);}return _0x2f75e1;};}function handleError(_0x229524,_0x579eaa){_0x579eaa=_0x579eaa||0x1f4;return function(_0x10f3f9){logger[_0x3e1a('0x29')](_0x10f3f9[_0x3e1a('0x2a')]);if(_0x10f3f9[_0x3e1a('0x2b')]){delete _0x10f3f9[_0x3e1a('0x2b')];}_0x229524[_0x3e1a('0x21')](_0x579eaa)[_0x3e1a('0x2c')](_0x10f3f9);};}exports['index']=function(_0x12f6f1,_0x270cc6){var _0x40be16={},_0x2fb6aa={},_0x193cd4={'count':0x0,'rows':[]};var _0x189ea0=_['map'](db['VtigerField'][_0x3e1a('0x2d')],function(_0x196192){return{'name':_0x196192[_0x3e1a('0x2e')],'type':_0x196192[_0x3e1a('0x2f')]['key']};});_0x2fb6aa['model']=_[_0x3e1a('0x30')](_0x189ea0,_0x3e1a('0x2b'));_0x2fb6aa['query']=_['keys'](_0x12f6f1[_0x3e1a('0x31')]);_0x2fb6aa[_0x3e1a('0x32')]=_[_0x3e1a('0x33')](_0x2fb6aa['model'],_0x2fb6aa[_0x3e1a('0x31')]);_0x40be16[_0x3e1a('0x34')]=_[_0x3e1a('0x33')](_0x2fb6aa[_0x3e1a('0x35')],qs[_0x3e1a('0x36')](_0x12f6f1[_0x3e1a('0x31')][_0x3e1a('0x36')]));_0x40be16['attributes']=_0x40be16[_0x3e1a('0x34')][_0x3e1a('0x37')]?_0x40be16[_0x3e1a('0x34')]:_0x2fb6aa[_0x3e1a('0x35')];if(!_0x12f6f1[_0x3e1a('0x31')][_0x3e1a('0x38')](_0x3e1a('0x39'))){_0x40be16[_0x3e1a('0x1d')]=qs[_0x3e1a('0x1d')](_0x12f6f1[_0x3e1a('0x31')][_0x3e1a('0x1d')]);_0x40be16[_0x3e1a('0x20')]=qs[_0x3e1a('0x20')](_0x12f6f1[_0x3e1a('0x31')]['offset']);}_0x40be16['order']=qs[_0x3e1a('0x3a')](_0x12f6f1[_0x3e1a('0x31')][_0x3e1a('0x3a')]);_0x40be16[_0x3e1a('0x3b')]=qs[_0x3e1a('0x32')](_[_0x3e1a('0x3c')](_0x12f6f1['query'],_0x2fb6aa[_0x3e1a('0x32')]),_0x189ea0);if(_0x12f6f1[_0x3e1a('0x31')]['filter']){_0x40be16[_0x3e1a('0x3b')]=_['merge'](_0x40be16['where'],{'$or':_[_0x3e1a('0x30')](_0x189ea0,function(_0x304d46){if(_0x304d46[_0x3e1a('0x2f')]!=='VIRTUAL'){var _0x144234={};_0x144234[_0x304d46[_0x3e1a('0x2b')]]={'$like':'%'+_0x12f6f1[_0x3e1a('0x31')][_0x3e1a('0x3d')]+'%'};return _0x144234;}})});}_0x40be16=_[_0x3e1a('0x3e')]({},_0x40be16,_0x12f6f1[_0x3e1a('0x3f')]);var _0xda9439={'where':_0x40be16[_0x3e1a('0x3b')]};return db[_0x3e1a('0x40')][_0x3e1a('0x1f')](_0xda9439)[_0x3e1a('0x28')](function(_0x134174){_0x193cd4['count']=_0x134174;if(_0x12f6f1[_0x3e1a('0x31')]['includeAll']){_0x40be16[_0x3e1a('0x41')]=[{'all':!![]}];}return db['VtigerField'][_0x3e1a('0x42')](_0x40be16);})[_0x3e1a('0x28')](function(_0x3fd924){_0x193cd4[_0x3e1a('0x43')]=_0x3fd924;return _0x193cd4;})[_0x3e1a('0x28')](respondWithFilteredResult(_0x270cc6,_0x40be16))[_0x3e1a('0x44')](handleError(_0x270cc6,null));};exports[_0x3e1a('0x45')]=function(_0x21edff,_0x3892c2){var _0x1fe31c={'raw':!![],'where':{'id':_0x21edff[_0x3e1a('0x46')]['id']}},_0x4b1fd={};_0x4b1fd[_0x3e1a('0x35')]=_['keys'](db[_0x3e1a('0x40')][_0x3e1a('0x2d')]);_0x4b1fd[_0x3e1a('0x31')]=_[_0x3e1a('0x47')](_0x21edff['query']);_0x4b1fd[_0x3e1a('0x32')]=_[_0x3e1a('0x33')](_0x4b1fd[_0x3e1a('0x35')],_0x4b1fd['query']);_0x1fe31c[_0x3e1a('0x34')]=_[_0x3e1a('0x33')](_0x4b1fd[_0x3e1a('0x35')],qs[_0x3e1a('0x36')](_0x21edff[_0x3e1a('0x31')]['fields']));_0x1fe31c['attributes']=_0x1fe31c[_0x3e1a('0x34')][_0x3e1a('0x37')]?_0x1fe31c['attributes']:_0x4b1fd['model'];if(_0x21edff[_0x3e1a('0x31')][_0x3e1a('0x48')]){_0x1fe31c['include']=[{'all':!![]}];}_0x1fe31c=_[_0x3e1a('0x3e')]({},_0x1fe31c,_0x21edff[_0x3e1a('0x3f')]);return db['VtigerField'][_0x3e1a('0x49')](_0x1fe31c)[_0x3e1a('0x28')](handleEntityNotFound(_0x3892c2,null))[_0x3e1a('0x28')](respondWithResult(_0x3892c2,null))[_0x3e1a('0x44')](handleError(_0x3892c2,null));};exports[_0x3e1a('0x4a')]=function(_0x10c2cc,_0x525240){return db[_0x3e1a('0x40')][_0x3e1a('0x4a')](_0x10c2cc[_0x3e1a('0x4b')],{})[_0x3e1a('0x28')](respondWithResult(_0x525240,0xc9))[_0x3e1a('0x44')](handleError(_0x525240,null));};exports[_0x3e1a('0x26')]=function(_0x204979,_0x18465b){if(_0x204979[_0x3e1a('0x4b')]['id']){delete _0x204979[_0x3e1a('0x4b')]['id'];}return db[_0x3e1a('0x40')][_0x3e1a('0x49')]({'where':{'id':_0x204979[_0x3e1a('0x46')]['id']}})['then'](handleEntityNotFound(_0x18465b,null))[_0x3e1a('0x28')](saveUpdates(_0x204979[_0x3e1a('0x4b')],null))[_0x3e1a('0x28')](respondWithResult(_0x18465b,null))[_0x3e1a('0x44')](handleError(_0x18465b,null));};exports[_0x3e1a('0x27')]=function(_0x5941bf,_0x3010a1){return db[_0x3e1a('0x40')][_0x3e1a('0x49')]({'where':{'id':_0x5941bf[_0x3e1a('0x46')]['id']}})[_0x3e1a('0x28')](handleEntityNotFound(_0x3010a1,null))[_0x3e1a('0x28')](removeEntity(_0x3010a1,null))[_0x3e1a('0x44')](handleError(_0x3010a1,null));};
\ No newline at end of file
index b826aa1..48933a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60df=['rimraf','../../config/environment','./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x3ae00b,_0x260102){var _0x396e24=function(_0x3a5f14){while(--_0x3a5f14){_0x3ae00b['push'](_0x3ae00b['shift']());}};_0x396e24(++_0x260102);}(_0x60df,0x92));var _0xf60d=function(_0x5965e4,_0x496d02){_0x5965e4=_0x5965e4-0x0;var _0x2f1f53=_0x60df[_0x5965e4];return _0x2f1f53;};'use strict';var _=require(_0xf60d('0x0'));var util=require(_0xf60d('0x1'));var logger=require(_0xf60d('0x2'))(_0xf60d('0x3'));var moment=require(_0xf60d('0x4'));var BPromise=require('bluebird');var rp=require(_0xf60d('0x5'));var fs=require('fs');var path=require(_0xf60d('0x6'));var rimraf=require(_0xf60d('0x7'));var config=require(_0xf60d('0x8'));var attributes=require(_0xf60d('0x9'));module[_0xf60d('0xa')]=function(_0x1911be,_0x55e981){return _0x1911be[_0xf60d('0xb')](_0xf60d('0xc'),attributes,{'tableName':_0xf60d('0xd'),'paranoid':![],'indexes':[{'name':_0xf60d('0xe'),'fields':[_0xf60d('0xf'),_0xf60d('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7b77=['../../config/environment','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x24065b,_0x1775ba){var _0x88b0b7=function(_0x1143fc){while(--_0x1143fc){_0x24065b['push'](_0x24065b['shift']());}};_0x88b0b7(++_0x1775ba);}(_0x7b77,0x170));var _0x77b7=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0x7b77[_0x45d3f0];return _0x314b79;};'use strict';var _=require('lodash');var util=require(_0x77b7('0x0'));var logger=require(_0x77b7('0x1'))(_0x77b7('0x2'));var moment=require(_0x77b7('0x3'));var BPromise=require(_0x77b7('0x4'));var rp=require(_0x77b7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x77b7('0x6'));var config=require(_0x77b7('0x7'));var attributes=require('./intVtigerField.attributes');module[_0x77b7('0x8')]=function(_0x1d8912,_0x33ccdf){return _0x1d8912[_0x77b7('0x9')](_0x77b7('0xa'),attributes,{'tableName':_0x77b7('0xb'),'paranoid':![],'indexes':[{'name':_0x77b7('0xc'),'fields':[_0x77b7('0xd'),_0x77b7('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0bcf962..b7b9fce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb18e=['then','info','debug','VtigerField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VtigerField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','http','request'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0xb18e,0x147));var _0xeb18=function(_0x37e845,_0x219f9f){_0x37e845=_0x37e845-0x0;var _0x59e55b=_0xb18e[_0x37e845];return _0x59e55b;};'use strict';var _=require(_0xeb18('0x0'));var util=require(_0xeb18('0x1'));var moment=require(_0xeb18('0x2'));var BPromise=require('bluebird');var rs=require(_0xeb18('0x3'));var fs=require('fs');var Redis=require(_0xeb18('0x4'));var db=require(_0xeb18('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xeb18('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xeb18('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1aade2,_0x43c5e2,_0x3f7204){return new BPromise(function(_0x293512,_0x3874f1){return client[_0xeb18('0x8')](_0x1aade2,_0x3f7204)[_0xeb18('0x9')](function(_0x573558){logger[_0xeb18('0xa')]('VtigerField,\x20%s,\x20%s',_0x43c5e2,'request\x20sent');logger[_0xeb18('0xb')](_0xeb18('0xc'),_0x43c5e2,_0xeb18('0xd'),JSON[_0xeb18('0xe')](_0x573558));if(_0x573558['error']){if(_0x573558[_0xeb18('0xf')][_0xeb18('0x10')]===0x1f4){logger['error'](_0xeb18('0x11'),_0x43c5e2,_0x573558[_0xeb18('0xf')][_0xeb18('0x12')]);return _0x3874f1(_0x573558['error']['message']);}logger[_0xeb18('0xf')](_0xeb18('0x11'),_0x43c5e2,_0x573558[_0xeb18('0xf')][_0xeb18('0x12')]);return _0x293512(_0x573558[_0xeb18('0xf')][_0xeb18('0x12')]);}else{logger[_0xeb18('0xa')]('VtigerField,\x20%s,\x20%s',_0x43c5e2,'request\x20sent');_0x293512(_0x573558[_0xeb18('0x13')][_0xeb18('0x12')]);}})[_0xeb18('0x14')](function(_0x421aad){logger[_0xeb18('0xf')](_0xeb18('0x11'),_0x43c5e2,_0x421aad);_0x3874f1(_0x421aad);});});}
\ No newline at end of file
+var _0xc79f=['error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0xbe1633,_0x131480){var _0x843975=function(_0x1070f){while(--_0x1070f){_0xbe1633['push'](_0xbe1633['shift']());}};_0x843975(++_0x131480);}(_0xc79f,0x82));var _0xfc79=function(_0x502812,_0x2834e3){_0x502812=_0x502812-0x0;var _0x9fe255=_0xc79f[_0x502812];return _0x9fe255;};'use strict';var _=require(_0xfc79('0x0'));var util=require(_0xfc79('0x1'));var moment=require(_0xfc79('0x2'));var BPromise=require(_0xfc79('0x3'));var rs=require(_0xfc79('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfc79('0x5'))['db'];var utils=require(_0xfc79('0x6'));var logger=require(_0xfc79('0x7'))(_0xfc79('0x8'));var config=require(_0xfc79('0x9'));var jayson=require(_0xfc79('0xa'));var client=jayson[_0xfc79('0xb')][_0xfc79('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3df358,_0x47f36c,_0x8c8b37){return new BPromise(function(_0x59bf11,_0x18a07e){return client[_0xfc79('0xd')](_0x3df358,_0x8c8b37)[_0xfc79('0xe')](function(_0x4eb2f6){logger[_0xfc79('0xf')](_0xfc79('0x10'),_0x47f36c,_0xfc79('0x11'));logger[_0xfc79('0x12')]('VtigerField,\x20%s,\x20%s,\x20%s',_0x47f36c,_0xfc79('0x11'),JSON[_0xfc79('0x13')](_0x4eb2f6));if(_0x4eb2f6[_0xfc79('0x14')]){if(_0x4eb2f6['error'][_0xfc79('0x15')]===0x1f4){logger[_0xfc79('0x14')]('VtigerField,\x20%s,\x20%s',_0x47f36c,_0x4eb2f6[_0xfc79('0x14')]['message']);return _0x18a07e(_0x4eb2f6[_0xfc79('0x14')][_0xfc79('0x16')]);}logger[_0xfc79('0x14')]('VtigerField,\x20%s,\x20%s',_0x47f36c,_0x4eb2f6[_0xfc79('0x14')][_0xfc79('0x16')]);return _0x59bf11(_0x4eb2f6[_0xfc79('0x14')][_0xfc79('0x16')]);}else{logger[_0xfc79('0xf')](_0xfc79('0x10'),_0x47f36c,'request\x20sent');_0x59bf11(_0x4eb2f6[_0xfc79('0x17')][_0xfc79('0x16')]);}})[_0xfc79('0x18')](function(_0x322972){logger['error'](_0xfc79('0x10'),_0x47f36c,_0x322972);_0x18a07e(_0x322972);});});}
\ No newline at end of file
index 660311c..6f72b3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa97d=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','put','update','destroy','exports','connect-timeout'];(function(_0x187f12,_0x40d281){var _0x8e230e=function(_0x1c5e9c){while(--_0x1c5e9c){_0x187f12['push'](_0x187f12['shift']());}};_0x8e230e(++_0x40d281);}(_0xa97d,0x17b));var _0xda97=function(_0x56ec07,_0x56a55f){_0x56ec07=_0x56ec07-0x0;var _0x3ce6f7=_0xa97d[_0x56ec07];return _0x3ce6f7;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xda97('0x0'));var express=require(_0xda97('0x1'));var router=express[_0xda97('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xda97('0x3'));var interaction=require(_0xda97('0x4'));var config=require(_0xda97('0x5'));var controller=require('./intZendeskAccount.controller');router[_0xda97('0x6')]('/',auth[_0xda97('0x7')](),controller['index']);router[_0xda97('0x6')](_0xda97('0x8'),auth[_0xda97('0x7')](),controller['show']);router[_0xda97('0x6')](_0xda97('0x9'),auth[_0xda97('0x7')](),controller['getConfigurations']);router[_0xda97('0x6')](_0xda97('0xa'),auth['isAuthenticated'](),controller[_0xda97('0xb')]);router[_0xda97('0xc')]('/',auth[_0xda97('0x7')](),controller[_0xda97('0xd')]);router[_0xda97('0xc')]('/:id/configurations',auth[_0xda97('0x7')](),controller[_0xda97('0xe')]);router[_0xda97('0xf')](_0xda97('0x8'),auth[_0xda97('0x7')](),controller[_0xda97('0x10')]);router['delete'](_0xda97('0x8'),auth[_0xda97('0x7')](),controller[_0xda97('0x11')]);module[_0xda97('0x12')]=router;
\ No newline at end of file
+var _0x574e=['../../config/environment','./intZendeskAccount.controller','isAuthenticated','index','/:id','show','getConfigurations','get','/:id/fields','post','create','addConfiguration','put','update','delete','exports','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2f7198,_0x3a03fa){var _0x245714=function(_0x11b156){while(--_0x11b156){_0x2f7198['push'](_0x2f7198['shift']());}};_0x245714(++_0x3a03fa);}(_0x574e,0x121));var _0xe574=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x574e[_0x3bf83f];return _0x22c4a9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe574('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe574('0x1')]();var fs_extra=require(_0xe574('0x2'));var auth=require(_0xe574('0x3'));var interaction=require(_0xe574('0x4'));var config=require(_0xe574('0x5'));var controller=require(_0xe574('0x6'));router['get']('/',auth[_0xe574('0x7')](),controller[_0xe574('0x8')]);router['get'](_0xe574('0x9'),auth[_0xe574('0x7')](),controller[_0xe574('0xa')]);router['get']('/:id/configurations',auth[_0xe574('0x7')](),controller[_0xe574('0xb')]);router[_0xe574('0xc')](_0xe574('0xd'),auth['isAuthenticated'](),controller['getFields']);router[_0xe574('0xe')]('/',auth[_0xe574('0x7')](),controller[_0xe574('0xf')]);router['post']('/:id/configurations',auth[_0xe574('0x7')](),controller[_0xe574('0x10')]);router[_0xe574('0x11')](_0xe574('0x9'),auth[_0xe574('0x7')](),controller[_0xe574('0x12')]);router[_0xe574('0x13')](_0xe574('0x9'),auth[_0xe574('0x7')](),controller['destroy']);module[_0xe574('0x14')]=router;
\ No newline at end of file
index 74441cc..ca417ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b84=['sequelize','exports','STRING','username','remoteUri','ENUM','password','token','integrationTab','newTab'];(function(_0x1e1965,_0x55785c){var _0x1a2e96=function(_0x27d366){while(--_0x27d366){_0x1e1965['push'](_0x1e1965['shift']());}};_0x1a2e96(++_0x55785c);}(_0x7b84,0x17c));var _0x47b8=function(_0x2372b5,_0xd752a4){_0x2372b5=_0x2372b5-0x0;var _0x587cf3=_0x7b84[_0x2372b5];return _0x587cf3;};'use strict';var Sequelize=require(_0x47b8('0x0'));module[_0x47b8('0x1')]={'name':{'type':Sequelize[_0x47b8('0x2')]},'description':{'type':Sequelize[_0x47b8('0x2')]},'username':{'type':Sequelize[_0x47b8('0x2')],'unique':_0x47b8('0x3')},'password':{'type':Sequelize[_0x47b8('0x2')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x47b8('0x2')],'unique':_0x47b8('0x4')},'authType':{'type':Sequelize[_0x47b8('0x5')](_0x47b8('0x6'),_0x47b8('0x7')),'defaultValue':_0x47b8('0x6')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x47b8('0x5')](_0x47b8('0x8'),_0x47b8('0x9')),'defaultValue':_0x47b8('0x8')}};
\ No newline at end of file
+var _0xb934=['integrationTab','newTab','sequelize','exports','STRING','username','password','token'];(function(_0x56d5a0,_0x438083){var _0x46d4f0=function(_0x5bd0c5){while(--_0x5bd0c5){_0x56d5a0['push'](_0x56d5a0['shift']());}};_0x46d4f0(++_0x438083);}(_0xb934,0x92));var _0x4b93=function(_0x4d8780,_0x612164){_0x4d8780=_0x4d8780-0x0;var _0x46ea35=_0xb934[_0x4d8780];return _0x46ea35;};'use strict';var Sequelize=require(_0x4b93('0x0'));module[_0x4b93('0x1')]={'name':{'type':Sequelize[_0x4b93('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x4b93('0x2')],'unique':_0x4b93('0x3')},'password':{'type':Sequelize[_0x4b93('0x2')]},'token':{'type':Sequelize[_0x4b93('0x2')]},'remoteUri':{'type':Sequelize[_0x4b93('0x2')],'unique':'remoteUri'},'authType':{'type':Sequelize['ENUM'](_0x4b93('0x4'),_0x4b93('0x5')),'defaultValue':_0x4b93('0x4')},'serverUrl':{'type':Sequelize[_0x4b93('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x4b93('0x6'),_0x4b93('0x7')),'defaultValue':_0x4b93('0x6')}};
\ No newline at end of file
index 1ddca74..0acee07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9348=['authType','remoteUri','substring','lastIndexOf','%s/%s','ticket_fields','password','headers','format','Basic\x20%s','%s:%s','toString','base64','Sequelize','ValidationError','Unknown\x20authentication\x20type','description','group','assignee','remove','includes','position','title','system_field_options','custom_field_options','test','statusCode','stringify','Wrong\x20credentials','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','undefined','limit','offset','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','ZendeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','create','body','find','getConfigurations','ZendeskConfiguration','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','Descriptions','getFields','username','token'];(function(_0x69448,_0x3732d2){var _0x21e177=function(_0x50f3b3){while(--_0x50f3b3){_0x69448['push'](_0x69448['shift']());}};_0x21e177(++_0x3732d2);}(_0x9348,0x10d));var _0x8934=function(_0x45eb29,_0x309e77){_0x45eb29=_0x45eb29-0x0;var _0x2339af=_0x9348[_0x45eb29];return _0x2339af;};'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'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x68427d,_0x108eab){_0x108eab=_0x108eab||0xcc;return function(_0x46bca5){if(_0x46bca5){return _0x68427d[_0x8934('0x19')](_0x108eab);}return _0x68427d[_0x8934('0x1a')](_0x108eab)[_0x8934('0x1b')]();};}function respondWithResult(_0x5b560f,_0x254720){_0x254720=_0x254720||0xc8;return function(_0x38230a){if(_0x38230a){return _0x5b560f[_0x8934('0x1a')](_0x254720)[_0x8934('0x1c')](_0x38230a);}};}function respondWithFilteredResult(_0x34d4dc,_0x41e6a9){return function(_0x2a5b04){if(_0x2a5b04){var _0x357cf8=typeof _0x41e6a9['offset']===_0x8934('0x1d')&&typeof _0x41e6a9[_0x8934('0x1e')]===_0x8934('0x1d');var _0x5de8f0=_0x2a5b04['count'];var _0x597eed=_0x357cf8?0x0:_0x41e6a9[_0x8934('0x1f')];var _0x51f9ed=_0x357cf8?_0x2a5b04[_0x8934('0x20')]:_0x41e6a9[_0x8934('0x1f')]+_0x41e6a9[_0x8934('0x1e')];var _0x36c3b9;if(_0x51f9ed>=_0x5de8f0){_0x51f9ed=_0x5de8f0;_0x36c3b9=0xc8;}else{_0x36c3b9=0xce;}_0x34d4dc[_0x8934('0x1a')](_0x36c3b9);return _0x34d4dc['set'](_0x8934('0x21'),_0x597eed+'-'+_0x51f9ed+'/'+_0x5de8f0)['json'](_0x2a5b04);}return null;};}function patchUpdates(_0x476c6c){return function(_0x34f4e7){try{jsonpatch[_0x8934('0x22')](_0x34f4e7,_0x476c6c,!![]);}catch(_0x379445){return BPromise[_0x8934('0x23')](_0x379445);}return _0x34f4e7[_0x8934('0x24')]();};}function saveUpdates(_0x36fe20,_0x4f4a9b){return function(_0xe763c6){if(_0xe763c6){return _0xe763c6[_0x8934('0x25')](_0x36fe20)[_0x8934('0x26')](function(_0x343e09){return _0x343e09;});}return null;};}function removeEntity(_0x43b89a,_0x5e593b){return function(_0x3cf295){if(_0x3cf295){return _0x3cf295[_0x8934('0x27')]()[_0x8934('0x26')](function(){_0x43b89a['status'](0xcc)[_0x8934('0x1b')]();});}};}function handleEntityNotFound(_0x561df2,_0x14c5f0){return function(_0x1783ce){if(!_0x1783ce){_0x561df2[_0x8934('0x19')](0x194);}return _0x1783ce;};}function handleError(_0x5ef0ed,_0x1fd5eb){_0x1fd5eb=_0x1fd5eb||0x1f4;return function(_0x15910b){logger[_0x8934('0x28')](_0x15910b[_0x8934('0x29')]);if(_0x15910b['name']){delete _0x15910b[_0x8934('0x2a')];}_0x5ef0ed[_0x8934('0x1a')](_0x1fd5eb)[_0x8934('0x2b')](_0x15910b);};}exports[_0x8934('0x2c')]=function(_0x44972b,_0x20d448){var _0x3f328a={},_0x457634={},_0x9c6a71={'count':0x0,'rows':[]};var _0x18938a=_['map'](db[_0x8934('0x2d')][_0x8934('0x2e')],function(_0x54d28d){return{'name':_0x54d28d[_0x8934('0x2f')],'type':_0x54d28d[_0x8934('0x30')][_0x8934('0x31')]};});_0x457634[_0x8934('0x32')]=_['map'](_0x18938a,_0x8934('0x2a'));_0x457634[_0x8934('0x33')]=_[_0x8934('0x34')](_0x44972b[_0x8934('0x33')]);_0x457634[_0x8934('0x35')]=_['intersection'](_0x457634[_0x8934('0x32')],_0x457634['query']);_0x3f328a['attributes']=_[_0x8934('0x36')](_0x457634[_0x8934('0x32')],qs[_0x8934('0x37')](_0x44972b[_0x8934('0x33')]['fields']));_0x3f328a[_0x8934('0x38')]=_0x3f328a[_0x8934('0x38')][_0x8934('0x39')]?_0x3f328a[_0x8934('0x38')]:_0x457634[_0x8934('0x32')];if(!_0x44972b['query'][_0x8934('0x3a')](_0x8934('0x3b'))){_0x3f328a['limit']=qs['limit'](_0x44972b[_0x8934('0x33')][_0x8934('0x1e')]);_0x3f328a['offset']=qs['offset'](_0x44972b[_0x8934('0x33')][_0x8934('0x1f')]);}_0x3f328a[_0x8934('0x3c')]=qs[_0x8934('0x3d')](_0x44972b[_0x8934('0x33')][_0x8934('0x3d')]);_0x3f328a[_0x8934('0x3e')]=qs[_0x8934('0x35')](_[_0x8934('0x3f')](_0x44972b[_0x8934('0x33')],_0x457634[_0x8934('0x35')]),_0x18938a);if(_0x44972b['query'][_0x8934('0x40')]){_0x3f328a[_0x8934('0x3e')]=_['merge'](_0x3f328a[_0x8934('0x3e')],{'$or':_[_0x8934('0x41')](_0x18938a,function(_0x414091){if(_0x414091[_0x8934('0x30')]!==_0x8934('0x42')){var _0x5b0307={};_0x5b0307[_0x414091['name']]={'$like':'%'+_0x44972b['query'][_0x8934('0x40')]+'%'};return _0x5b0307;}})});}_0x3f328a=_[_0x8934('0x43')]({},_0x3f328a,_0x44972b[_0x8934('0x44')]);var _0x53581b={'where':_0x3f328a[_0x8934('0x3e')]};return db['ZendeskAccount']['count'](_0x53581b)[_0x8934('0x26')](function(_0x1f36d0){_0x9c6a71['count']=_0x1f36d0;if(_0x44972b['query'][_0x8934('0x45')]){_0x3f328a[_0x8934('0x46')]=[{'all':!![]}];}return db[_0x8934('0x2d')]['findAll'](_0x3f328a);})[_0x8934('0x26')](function(_0x5e543c){_0x9c6a71[_0x8934('0x47')]=_0x5e543c;return _0x9c6a71;})['then'](respondWithFilteredResult(_0x20d448,_0x3f328a))[_0x8934('0x48')](handleError(_0x20d448,null));};exports[_0x8934('0x49')]=function(_0x83be9e,_0x566d67){var _0xefdfab={'raw':![],'where':{'id':_0x83be9e[_0x8934('0x4a')]['id']}},_0x350d04={};_0x350d04[_0x8934('0x32')]=_['keys'](db[_0x8934('0x2d')][_0x8934('0x2e')]);_0x350d04[_0x8934('0x33')]=_[_0x8934('0x34')](_0x83be9e[_0x8934('0x33')]);_0x350d04[_0x8934('0x35')]=_[_0x8934('0x36')](_0x350d04[_0x8934('0x32')],_0x350d04['query']);_0xefdfab['attributes']=_['intersection'](_0x350d04[_0x8934('0x32')],qs[_0x8934('0x37')](_0x83be9e['query'][_0x8934('0x37')]));_0xefdfab['attributes']=_0xefdfab[_0x8934('0x38')][_0x8934('0x39')]?_0xefdfab['attributes']:_0x350d04[_0x8934('0x32')];if(_0x83be9e[_0x8934('0x33')][_0x8934('0x45')]){_0xefdfab[_0x8934('0x46')]=[{'all':!![]}];}_0xefdfab=_['merge']({},_0xefdfab,_0x83be9e[_0x8934('0x44')]);return db[_0x8934('0x2d')]['find'](_0xefdfab)[_0x8934('0x26')](handleEntityNotFound(_0x566d67,null))[_0x8934('0x26')](respondWithResult(_0x566d67,null))[_0x8934('0x48')](handleError(_0x566d67,null));};exports[_0x8934('0x4b')]=function(_0x406d0a,_0x419e30){return db[_0x8934('0x2d')][_0x8934('0x4b')](_0x406d0a[_0x8934('0x4c')],{})[_0x8934('0x26')](respondWithResult(_0x419e30,0xc9))[_0x8934('0x48')](handleError(_0x419e30,null));};exports[_0x8934('0x25')]=function(_0x2c322d,_0x2febf5){if(_0x2c322d[_0x8934('0x4c')]['id']){delete _0x2c322d[_0x8934('0x4c')]['id'];}return db[_0x8934('0x2d')][_0x8934('0x4d')]({'where':{'id':_0x2c322d['params']['id']}})[_0x8934('0x26')](handleEntityNotFound(_0x2febf5,null))[_0x8934('0x26')](saveUpdates(_0x2c322d['body'],null))['then'](respondWithResult(_0x2febf5,null))['catch'](handleError(_0x2febf5,null));};exports['destroy']=function(_0x3610a0,_0x15310a){return db[_0x8934('0x2d')]['find']({'where':{'id':_0x3610a0['params']['id']}})[_0x8934('0x26')](handleEntityNotFound(_0x15310a,null))['then'](removeEntity(_0x15310a,null))['catch'](handleError(_0x15310a,null));};exports[_0x8934('0x4e')]=function(_0x2778f9,_0x173bc1,_0x334f27){var _0x21ca17={};var _0x1b66d8={};var _0x3902fb;var _0x575bd7;return db[_0x8934('0x2d')]['findOne']({'where':{'id':_0x2778f9[_0x8934('0x4a')]['id']}})[_0x8934('0x26')](handleEntityNotFound(_0x173bc1,null))[_0x8934('0x26')](function(_0x3df31e){if(_0x3df31e){_0x3902fb=_0x3df31e;_0x1b66d8[_0x8934('0x32')]=_[_0x8934('0x34')](db[_0x8934('0x4f')][_0x8934('0x2e')]);_0x1b66d8['query']=_[_0x8934('0x34')](_0x2778f9[_0x8934('0x33')]);_0x1b66d8[_0x8934('0x35')]=_[_0x8934('0x36')](_0x1b66d8[_0x8934('0x32')],_0x1b66d8['query']);_0x21ca17[_0x8934('0x38')]=_[_0x8934('0x36')](_0x1b66d8[_0x8934('0x32')],qs['fields'](_0x2778f9[_0x8934('0x33')][_0x8934('0x37')]));_0x21ca17[_0x8934('0x38')]=_0x21ca17['attributes']['length']?_0x21ca17['attributes']:_0x1b66d8[_0x8934('0x32')];_0x21ca17[_0x8934('0x3c')]=qs[_0x8934('0x3d')](_0x2778f9['query'][_0x8934('0x3d')]);_0x21ca17[_0x8934('0x3e')]=qs['filters'](_['pick'](_0x2778f9[_0x8934('0x33')],_0x1b66d8[_0x8934('0x35')]));if(_0x2778f9[_0x8934('0x33')][_0x8934('0x40')]){_0x21ca17['where']=_['merge'](_0x21ca17['where'],{'$or':_['map'](_0x21ca17[_0x8934('0x38')],function(_0x2b8837){var _0x18d08e={};_0x18d08e[_0x2b8837]={'$like':'%'+_0x2778f9[_0x8934('0x33')][_0x8934('0x40')]+'%'};return _0x18d08e;})});}_0x21ca17=_[_0x8934('0x43')]({},_0x21ca17,_0x2778f9['options']);return _0x3902fb[_0x8934('0x4e')](_0x21ca17);}})[_0x8934('0x26')](function(_0x4991bd){if(_0x4991bd){_0x575bd7=_0x4991bd[_0x8934('0x39')];if(!_0x2778f9['query'][_0x8934('0x3a')]('nolimit')){_0x21ca17[_0x8934('0x1e')]=qs[_0x8934('0x1e')](_0x2778f9[_0x8934('0x33')][_0x8934('0x1e')]);_0x21ca17[_0x8934('0x1f')]=qs[_0x8934('0x1f')](_0x2778f9[_0x8934('0x33')]['offset']);}return _0x3902fb['getConfigurations'](_0x21ca17);}})[_0x8934('0x26')](function(_0x3a0378){if(_0x3a0378){return _0x3a0378?{'count':_0x575bd7,'rows':_0x3a0378}:null;}})[_0x8934('0x26')](respondWithResult(_0x173bc1,null))[_0x8934('0x48')](handleError(_0x173bc1,null));};exports[_0x8934('0x50')]=function(_0x18850a,_0x35c437,_0x112957){if(_0x18850a[_0x8934('0x4c')]['id']){delete _0x18850a[_0x8934('0x4c')]['id'];}return db[_0x8934('0x2d')][_0x8934('0x51')]({'where':{'id':_0x18850a[_0x8934('0x4a')]['id']}})[_0x8934('0x26')](handleEntityNotFound(_0x35c437,null))['then'](function(_0x5c2819){if(_0x5c2819){_0x18850a[_0x8934('0x4c')][_0x8934('0x52')]=_0x5c2819['id'];_0x18850a[_0x8934('0x4c')][_0x8934('0x53')]=integrations[_0x8934('0x54')](_0x18850a[_0x8934('0x4c')][_0x8934('0x55')],_0x18850a['body'][_0x8934('0x30')]);_0x18850a[_0x8934('0x4c')]['Descriptions']=integrations[_0x8934('0x56')](_0x18850a['body'][_0x8934('0x55')],_0x18850a[_0x8934('0x4c')][_0x8934('0x30')]);return db['ZendeskConfiguration'][_0x8934('0x4b')](_0x18850a[_0x8934('0x4c')],{'include':[{'model':db['ZendeskField'],'as':_0x8934('0x53')},{'model':db['ZendeskField'],'as':_0x8934('0x57')}]});}return null;})['then'](respondWithResult(_0x35c437,null))[_0x8934('0x48')](handleError(_0x35c437,null));};exports[_0x8934('0x58')]=function(_0x24b0ce,_0x5ea4fe,_0x196372){var _0xfbad9='';return db[_0x8934('0x2d')][_0x8934('0x51')]({'where':{'id':_0x24b0ce['params']['id']},'attributes':['id',_0x8934('0x59'),'password',_0x8934('0x5a'),_0x8934('0x5b'),_0x8934('0x5c')]})[_0x8934('0x26')](handleEntityNotFound(_0x5ea4fe,null))['then'](function(_0xc2799d){if(_0xc2799d){_0xfbad9=_0xc2799d[_0x8934('0x5c')];var _0xd880ba=_0xfbad9['slice'](-0x1);if(_0xd880ba==='/'){_0xfbad9=_0xfbad9[_0x8934('0x5d')](0x0,_0xfbad9[_0x8934('0x5e')](_0xd880ba));}var _0x2acd18={'method':'GET','uri':util['format'](_0x8934('0x5f'),_0xfbad9,_0x8934('0x60')),'json':!![]};switch(_0xc2799d[_0x8934('0x5b')]){case _0x8934('0x61'):_0x2acd18[_0x8934('0x62')]={'Authorization':util[_0x8934('0x63')](_0x8934('0x64'),new Buffer(util[_0x8934('0x63')](_0x8934('0x65'),_0xc2799d['username'],_0xc2799d[_0x8934('0x61')]))[_0x8934('0x66')](_0x8934('0x67')))};break;case _0x8934('0x5a'):_0x2acd18[_0x8934('0x62')]={'Authorization':util['format'](_0x8934('0x64'),new Buffer(util[_0x8934('0x63')]('%s/token:%s',_0xc2799d[_0x8934('0x59')],_0xc2799d['token']))['toString']('base64'))};break;default:throw new db[(_0x8934('0x68'))][(_0x8934('0x69'))](_0x8934('0x6a'));}return rp(_0x2acd18);}})['then'](function(_0x2c289b){if(_0x2c289b){var _0x1d3372=['subject',_0x8934('0x6b'),_0x8934('0x6c'),_0x8934('0x6d')];_[_0x8934('0x6e')](_0x2c289b[_0x8934('0x60')],function(_0x324722){return _0x1d3372[_0x8934('0x6f')](_0x324722[_0x8934('0x30')]);});return{'count':_0x2c289b[_0x8934('0x60')][_0x8934('0x39')],'rows':_['map'](_0x2c289b[_0x8934('0x60')],function(_0x31e7d1){return{'id':_0x31e7d1['id'],'name':_0x31e7d1[_0x8934('0x70')]>0x7?_0x31e7d1[_0x8934('0x71')]:_0x31e7d1[_0x8934('0x30')],'custom':_0x31e7d1[_0x8934('0x70')]>0x7?!![]:![],'options':_0x31e7d1[_0x8934('0x72')]?_0x31e7d1['system_field_options']:_0x31e7d1[_0x8934('0x73')]?_0x31e7d1[_0x8934('0x73')]:[]};})};}})[_0x8934('0x26')](respondWithResult(_0x5ea4fe,null))[_0x8934('0x48')](function(_0x9de459){var _0xdf0ab2=_0x24b0ce[_0x8934('0x33')][_0x8934('0x74')]?0x1f4:_0x9de459[_0x8934('0x75')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x8934('0x58'),_0xdf0ab2,JSON[_0x8934('0x76')](_0x9de459));delete _0x9de459['name'];if(_0xdf0ab2===0x191){_0xdf0ab2=0x190;}_0x5ea4fe[_0x8934('0x1a')](_0xdf0ab2)[_0x8934('0x2b')](_0x24b0ce[_0x8934('0x33')][_0x8934('0x74')]?{'message':_0x8934('0x77'),'statusCode':_0x9de459[_0x8934('0x75')]}:_0x9de459);});};
\ No newline at end of file
+var _0xb62e=['custom_field_options','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','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','../../config/license/util','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','sendStatus','error','stack','name','send','map','ZendeskAccount','fieldName','type','key','model','query','intersection','fields','attributes','hasOwnProperty','order','sort','where','filters','filter','VIRTUAL','merge','include','rows','catch','keys','rawAttributes','length','find','create','update','body','params','getConfigurations','findOne','ZendeskConfiguration','pick','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','ZendeskField','getFields','username','password','token','authType','remoteUri','slice','lastIndexOf','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','%s:%s','toString','%s/token:%s','base64','ValidationError','Unknown\x20authentication\x20type','description','group','assignee','includes','position','system_field_options'];(function(_0x153ae3,_0x73020c){var _0x254984=function(_0x5336b9){while(--_0x5336b9){_0x153ae3['push'](_0x153ae3['shift']());}};_0x254984(++_0x73020c);}(_0xb62e,0x1de));var _0xeb62=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xb62e[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0xeb62('0x0'));var rimraf=require(_0xeb62('0x1'));var zipdir=require(_0xeb62('0x2'));var jsonpatch=require(_0xeb62('0x3'));var rp=require('request-promise');var moment=require(_0xeb62('0x4'));var BPromise=require(_0xeb62('0x5'));var Mustache=require(_0xeb62('0x6'));var util=require(_0xeb62('0x7'));var path=require(_0xeb62('0x8'));var sox=require(_0xeb62('0x9'));var csv=require('to-csv');var ejs=require(_0xeb62('0xa'));var fs=require('fs');var fs_extra=require(_0xeb62('0xb'));var _=require(_0xeb62('0xc'));var squel=require('squel');var crypto=require(_0xeb62('0xd'));var jsforce=require(_0xeb62('0xe'));var deskjs=require(_0xeb62('0xf'));var toCsv=require(_0xeb62('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xeb62('0x11'));var authService=require(_0xeb62('0x12'));var qs=require(_0xeb62('0x13'));var as=require(_0xeb62('0x14'));var hardwareService=require(_0xeb62('0x15'));var logger=require(_0xeb62('0x16'))(_0xeb62('0x17'));var utils=require(_0xeb62('0x18'));var config=require(_0xeb62('0x19'));var licenseUtil=require(_0xeb62('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require(_0xeb62('0x1b'));function respondWithStatusCode(_0xcc11c4,_0x27671e){_0x27671e=_0x27671e||0xcc;return function(_0x6822bc){if(_0x6822bc){return _0xcc11c4['sendStatus'](_0x27671e);}return _0xcc11c4[_0xeb62('0x1c')](_0x27671e)[_0xeb62('0x1d')]();};}function respondWithResult(_0x23fb15,_0x4da178){_0x4da178=_0x4da178||0xc8;return function(_0x26c3fd){if(_0x26c3fd){return _0x23fb15[_0xeb62('0x1c')](_0x4da178)[_0xeb62('0x1e')](_0x26c3fd);}};}function respondWithFilteredResult(_0x4ce9fa,_0x1f6a1f){return function(_0x15b3e8){if(_0x15b3e8){var _0x184106=typeof _0x1f6a1f[_0xeb62('0x1f')]===_0xeb62('0x20')&&typeof _0x1f6a1f[_0xeb62('0x21')]===_0xeb62('0x20');var _0x1324d7=_0x15b3e8[_0xeb62('0x22')];var _0x27fd84=_0x184106?0x0:_0x1f6a1f[_0xeb62('0x1f')];var _0x11d516=_0x184106?_0x15b3e8[_0xeb62('0x22')]:_0x1f6a1f['offset']+_0x1f6a1f[_0xeb62('0x21')];var _0x130e2f;if(_0x11d516>=_0x1324d7){_0x11d516=_0x1324d7;_0x130e2f=0xc8;}else{_0x130e2f=0xce;}_0x4ce9fa[_0xeb62('0x1c')](_0x130e2f);return _0x4ce9fa[_0xeb62('0x23')](_0xeb62('0x24'),_0x27fd84+'-'+_0x11d516+'/'+_0x1324d7)[_0xeb62('0x1e')](_0x15b3e8);}return null;};}function patchUpdates(_0x2ed96d){return function(_0x589bf2){try{jsonpatch['apply'](_0x589bf2,_0x2ed96d,!![]);}catch(_0x1fbfaa){return BPromise[_0xeb62('0x25')](_0x1fbfaa);}return _0x589bf2[_0xeb62('0x26')]();};}function saveUpdates(_0x13243f,_0x122b15){return function(_0x4cafcf){if(_0x4cafcf){return _0x4cafcf['update'](_0x13243f)[_0xeb62('0x27')](function(_0x132861){return _0x132861;});}return null;};}function removeEntity(_0x182781,_0x395b70){return function(_0x55a169){if(_0x55a169){return _0x55a169['destroy']()[_0xeb62('0x27')](function(){_0x182781['status'](0xcc)[_0xeb62('0x1d')]();});}};}function handleEntityNotFound(_0x4b0f46,_0xfe3e16){return function(_0x516a72){if(!_0x516a72){_0x4b0f46[_0xeb62('0x28')](0x194);}return _0x516a72;};}function handleError(_0x6bfbbc,_0x46d1bb){_0x46d1bb=_0x46d1bb||0x1f4;return function(_0x4e4268){logger[_0xeb62('0x29')](_0x4e4268[_0xeb62('0x2a')]);if(_0x4e4268[_0xeb62('0x2b')]){delete _0x4e4268[_0xeb62('0x2b')];}_0x6bfbbc[_0xeb62('0x1c')](_0x46d1bb)[_0xeb62('0x2c')](_0x4e4268);};}exports['index']=function(_0x192517,_0x1616ee){var _0x57169a={},_0x157474={},_0x2b51b2={'count':0x0,'rows':[]};var _0x2c967c=_[_0xeb62('0x2d')](db[_0xeb62('0x2e')]['rawAttributes'],function(_0x4b58af){return{'name':_0x4b58af[_0xeb62('0x2f')],'type':_0x4b58af[_0xeb62('0x30')][_0xeb62('0x31')]};});_0x157474[_0xeb62('0x32')]=_[_0xeb62('0x2d')](_0x2c967c,_0xeb62('0x2b'));_0x157474[_0xeb62('0x33')]=_['keys'](_0x192517[_0xeb62('0x33')]);_0x157474['filters']=_['intersection'](_0x157474[_0xeb62('0x32')],_0x157474[_0xeb62('0x33')]);_0x57169a['attributes']=_[_0xeb62('0x34')](_0x157474['model'],qs[_0xeb62('0x35')](_0x192517[_0xeb62('0x33')]['fields']));_0x57169a[_0xeb62('0x36')]=_0x57169a[_0xeb62('0x36')]['length']?_0x57169a[_0xeb62('0x36')]:_0x157474[_0xeb62('0x32')];if(!_0x192517[_0xeb62('0x33')][_0xeb62('0x37')]('nolimit')){_0x57169a[_0xeb62('0x21')]=qs[_0xeb62('0x21')](_0x192517['query']['limit']);_0x57169a[_0xeb62('0x1f')]=qs[_0xeb62('0x1f')](_0x192517['query'][_0xeb62('0x1f')]);}_0x57169a[_0xeb62('0x38')]=qs[_0xeb62('0x39')](_0x192517[_0xeb62('0x33')][_0xeb62('0x39')]);_0x57169a[_0xeb62('0x3a')]=qs[_0xeb62('0x3b')](_['pick'](_0x192517['query'],_0x157474[_0xeb62('0x3b')]),_0x2c967c);if(_0x192517[_0xeb62('0x33')][_0xeb62('0x3c')]){_0x57169a[_0xeb62('0x3a')]=_['merge'](_0x57169a[_0xeb62('0x3a')],{'$or':_['map'](_0x2c967c,function(_0x20fd7a){if(_0x20fd7a[_0xeb62('0x30')]!==_0xeb62('0x3d')){var _0x136c5a={};_0x136c5a[_0x20fd7a[_0xeb62('0x2b')]]={'$like':'%'+_0x192517[_0xeb62('0x33')][_0xeb62('0x3c')]+'%'};return _0x136c5a;}})});}_0x57169a=_[_0xeb62('0x3e')]({},_0x57169a,_0x192517['options']);var _0x38f91b={'where':_0x57169a[_0xeb62('0x3a')]};return db[_0xeb62('0x2e')][_0xeb62('0x22')](_0x38f91b)['then'](function(_0x4eda8b){_0x2b51b2[_0xeb62('0x22')]=_0x4eda8b;if(_0x192517[_0xeb62('0x33')]['includeAll']){_0x57169a[_0xeb62('0x3f')]=[{'all':!![]}];}return db[_0xeb62('0x2e')]['findAll'](_0x57169a);})[_0xeb62('0x27')](function(_0x478a54){_0x2b51b2[_0xeb62('0x40')]=_0x478a54;return _0x2b51b2;})['then'](respondWithFilteredResult(_0x1616ee,_0x57169a))[_0xeb62('0x41')](handleError(_0x1616ee,null));};exports['show']=function(_0x2bf77f,_0x609b2d){var _0x317f50={'raw':![],'where':{'id':_0x2bf77f['params']['id']}},_0x594274={};_0x594274[_0xeb62('0x32')]=_[_0xeb62('0x42')](db[_0xeb62('0x2e')][_0xeb62('0x43')]);_0x594274[_0xeb62('0x33')]=_['keys'](_0x2bf77f[_0xeb62('0x33')]);_0x594274['filters']=_[_0xeb62('0x34')](_0x594274['model'],_0x594274[_0xeb62('0x33')]);_0x317f50['attributes']=_[_0xeb62('0x34')](_0x594274['model'],qs[_0xeb62('0x35')](_0x2bf77f[_0xeb62('0x33')][_0xeb62('0x35')]));_0x317f50[_0xeb62('0x36')]=_0x317f50[_0xeb62('0x36')][_0xeb62('0x44')]?_0x317f50['attributes']:_0x594274[_0xeb62('0x32')];if(_0x2bf77f[_0xeb62('0x33')]['includeAll']){_0x317f50['include']=[{'all':!![]}];}_0x317f50=_['merge']({},_0x317f50,_0x2bf77f['options']);return db[_0xeb62('0x2e')][_0xeb62('0x45')](_0x317f50)['then'](handleEntityNotFound(_0x609b2d,null))[_0xeb62('0x27')](respondWithResult(_0x609b2d,null))[_0xeb62('0x41')](handleError(_0x609b2d,null));};exports[_0xeb62('0x46')]=function(_0x16e262,_0x39595c){return db['ZendeskAccount'][_0xeb62('0x46')](_0x16e262['body'],{})[_0xeb62('0x27')](respondWithResult(_0x39595c,0xc9))[_0xeb62('0x41')](handleError(_0x39595c,null));};exports[_0xeb62('0x47')]=function(_0x18c40d,_0x1f2d87){if(_0x18c40d[_0xeb62('0x48')]['id']){delete _0x18c40d[_0xeb62('0x48')]['id'];}return db[_0xeb62('0x2e')][_0xeb62('0x45')]({'where':{'id':_0x18c40d[_0xeb62('0x49')]['id']}})[_0xeb62('0x27')](handleEntityNotFound(_0x1f2d87,null))[_0xeb62('0x27')](saveUpdates(_0x18c40d['body'],null))[_0xeb62('0x27')](respondWithResult(_0x1f2d87,null))['catch'](handleError(_0x1f2d87,null));};exports['destroy']=function(_0x2dcb2d,_0x31fd4a){return db['ZendeskAccount'][_0xeb62('0x45')]({'where':{'id':_0x2dcb2d[_0xeb62('0x49')]['id']}})['then'](handleEntityNotFound(_0x31fd4a,null))[_0xeb62('0x27')](removeEntity(_0x31fd4a,null))[_0xeb62('0x41')](handleError(_0x31fd4a,null));};exports[_0xeb62('0x4a')]=function(_0x60617,_0xe71e83,_0x1e6238){var _0x351027={};var _0x190e65={};var _0x497714;var _0x3e2be9;return db['ZendeskAccount'][_0xeb62('0x4b')]({'where':{'id':_0x60617[_0xeb62('0x49')]['id']}})[_0xeb62('0x27')](handleEntityNotFound(_0xe71e83,null))[_0xeb62('0x27')](function(_0x35d92d){if(_0x35d92d){_0x497714=_0x35d92d;_0x190e65[_0xeb62('0x32')]=_[_0xeb62('0x42')](db[_0xeb62('0x4c')]['rawAttributes']);_0x190e65['query']=_['keys'](_0x60617['query']);_0x190e65[_0xeb62('0x3b')]=_['intersection'](_0x190e65[_0xeb62('0x32')],_0x190e65['query']);_0x351027[_0xeb62('0x36')]=_[_0xeb62('0x34')](_0x190e65[_0xeb62('0x32')],qs['fields'](_0x60617[_0xeb62('0x33')][_0xeb62('0x35')]));_0x351027['attributes']=_0x351027[_0xeb62('0x36')][_0xeb62('0x44')]?_0x351027[_0xeb62('0x36')]:_0x190e65[_0xeb62('0x32')];_0x351027['order']=qs[_0xeb62('0x39')](_0x60617[_0xeb62('0x33')]['sort']);_0x351027[_0xeb62('0x3a')]=qs[_0xeb62('0x3b')](_[_0xeb62('0x4d')](_0x60617[_0xeb62('0x33')],_0x190e65[_0xeb62('0x3b')]));if(_0x60617[_0xeb62('0x33')][_0xeb62('0x3c')]){_0x351027[_0xeb62('0x3a')]=_[_0xeb62('0x3e')](_0x351027[_0xeb62('0x3a')],{'$or':_[_0xeb62('0x2d')](_0x351027[_0xeb62('0x36')],function(_0x200b43){var _0x3ae984={};_0x3ae984[_0x200b43]={'$like':'%'+_0x60617[_0xeb62('0x33')][_0xeb62('0x3c')]+'%'};return _0x3ae984;})});}_0x351027=_['merge']({},_0x351027,_0x60617['options']);return _0x497714['getConfigurations'](_0x351027);}})['then'](function(_0x279b83){if(_0x279b83){_0x3e2be9=_0x279b83['length'];if(!_0x60617[_0xeb62('0x33')][_0xeb62('0x37')](_0xeb62('0x4e'))){_0x351027[_0xeb62('0x21')]=qs[_0xeb62('0x21')](_0x60617[_0xeb62('0x33')][_0xeb62('0x21')]);_0x351027[_0xeb62('0x1f')]=qs[_0xeb62('0x1f')](_0x60617[_0xeb62('0x33')]['offset']);}return _0x497714[_0xeb62('0x4a')](_0x351027);}})[_0xeb62('0x27')](function(_0x42e992){if(_0x42e992){return _0x42e992?{'count':_0x3e2be9,'rows':_0x42e992}:null;}})[_0xeb62('0x27')](respondWithResult(_0xe71e83,null))['catch'](handleError(_0xe71e83,null));};exports[_0xeb62('0x4f')]=function(_0x2e5456,_0x3ff00a,_0x2abd21){if(_0x2e5456[_0xeb62('0x48')]['id']){delete _0x2e5456[_0xeb62('0x48')]['id'];}return db[_0xeb62('0x2e')][_0xeb62('0x4b')]({'where':{'id':_0x2e5456[_0xeb62('0x49')]['id']}})[_0xeb62('0x27')](handleEntityNotFound(_0x3ff00a,null))[_0xeb62('0x27')](function(_0x510275){if(_0x510275){_0x2e5456[_0xeb62('0x48')][_0xeb62('0x50')]=_0x510275['id'];_0x2e5456[_0xeb62('0x48')][_0xeb62('0x51')]=integrations[_0xeb62('0x52')](_0x2e5456[_0xeb62('0x48')][_0xeb62('0x53')],_0x2e5456[_0xeb62('0x48')][_0xeb62('0x30')]);_0x2e5456[_0xeb62('0x48')]['Descriptions']=integrations[_0xeb62('0x54')](_0x2e5456[_0xeb62('0x48')][_0xeb62('0x53')],_0x2e5456[_0xeb62('0x48')]['type']);return db[_0xeb62('0x4c')][_0xeb62('0x46')](_0x2e5456[_0xeb62('0x48')],{'include':[{'model':db[_0xeb62('0x55')],'as':_0xeb62('0x51')},{'model':db[_0xeb62('0x55')],'as':'Descriptions'}]});}return null;})[_0xeb62('0x27')](respondWithResult(_0x3ff00a,null))[_0xeb62('0x41')](handleError(_0x3ff00a,null));};exports[_0xeb62('0x56')]=function(_0x173c07,_0x351acf,_0x28d0ff){var _0x2e4502='';return db[_0xeb62('0x2e')][_0xeb62('0x4b')]({'where':{'id':_0x173c07[_0xeb62('0x49')]['id']},'attributes':['id',_0xeb62('0x57'),_0xeb62('0x58'),_0xeb62('0x59'),_0xeb62('0x5a'),_0xeb62('0x5b')]})[_0xeb62('0x27')](handleEntityNotFound(_0x351acf,null))['then'](function(_0x3b3eb1){if(_0x3b3eb1){_0x2e4502=_0x3b3eb1['remoteUri'];var _0x6ea297=_0x2e4502[_0xeb62('0x5c')](-0x1);if(_0x6ea297==='/'){_0x2e4502=_0x2e4502['substring'](0x0,_0x2e4502[_0xeb62('0x5d')](_0x6ea297));}var _0x10986a={'method':_0xeb62('0x5e'),'uri':util[_0xeb62('0x5f')](_0xeb62('0x60'),_0x2e4502,_0xeb62('0x61')),'json':!![]};switch(_0x3b3eb1[_0xeb62('0x5a')]){case _0xeb62('0x58'):_0x10986a[_0xeb62('0x62')]={'Authorization':util[_0xeb62('0x5f')](_0xeb62('0x63'),new Buffer(util[_0xeb62('0x5f')](_0xeb62('0x64'),_0x3b3eb1['username'],_0x3b3eb1[_0xeb62('0x58')]))[_0xeb62('0x65')]('base64'))};break;case _0xeb62('0x59'):_0x10986a['headers']={'Authorization':util[_0xeb62('0x5f')](_0xeb62('0x63'),new Buffer(util[_0xeb62('0x5f')](_0xeb62('0x66'),_0x3b3eb1[_0xeb62('0x57')],_0x3b3eb1[_0xeb62('0x59')]))['toString'](_0xeb62('0x67')))};break;default:throw new db['Sequelize'][(_0xeb62('0x68'))](_0xeb62('0x69'));}return rp(_0x10986a);}})[_0xeb62('0x27')](function(_0x489410){if(_0x489410){var _0x1dcd96=['subject',_0xeb62('0x6a'),_0xeb62('0x6b'),_0xeb62('0x6c')];_['remove'](_0x489410[_0xeb62('0x61')],function(_0x3ad496){return _0x1dcd96[_0xeb62('0x6d')](_0x3ad496[_0xeb62('0x30')]);});return{'count':_0x489410[_0xeb62('0x61')][_0xeb62('0x44')],'rows':_['map'](_0x489410['ticket_fields'],function(_0x4c7a56){return{'id':_0x4c7a56['id'],'name':_0x4c7a56['position']>0x7?_0x4c7a56['title']:_0x4c7a56[_0xeb62('0x30')],'custom':_0x4c7a56[_0xeb62('0x6e')]>0x7?!![]:![],'options':_0x4c7a56[_0xeb62('0x6f')]?_0x4c7a56[_0xeb62('0x6f')]:_0x4c7a56[_0xeb62('0x70')]?_0x4c7a56[_0xeb62('0x70')]:[]};})};}})[_0xeb62('0x27')](respondWithResult(_0x351acf,null))[_0xeb62('0x41')](function(_0xb28adb){var _0x2c6bb3=_0x173c07[_0xeb62('0x33')][_0xeb62('0x71')]?0x1f4:_0xb28adb['statusCode']||0x1f4;logger[_0xeb62('0x29')](_0xeb62('0x72'),_0xeb62('0x56'),_0x2c6bb3,JSON[_0xeb62('0x73')](_0xb28adb));delete _0xb28adb[_0xeb62('0x2b')];if(_0x2c6bb3===0x191){_0x2c6bb3=0x190;}_0x351acf[_0xeb62('0x1c')](_0x2c6bb3)[_0xeb62('0x2c')](_0x173c07[_0xeb62('0x33')][_0xeb62('0x71')]?{'message':_0xeb62('0x74'),'statusCode':_0xb28adb[_0xeb62('0x75')]}:_0xb28adb);});};
\ No newline at end of file
index 1892df3..7a13ad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0d7=['ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0xd0d7,0x1d6));var _0x7d0d=function(_0x5d184b,_0x1b04c5){_0x5d184b=_0x5d184b-0x0;var _0x5cee64=_0xd0d7[_0x5d184b];return _0x5cee64;};'use strict';var _=require(_0x7d0d('0x0'));var util=require(_0x7d0d('0x1'));var logger=require(_0x7d0d('0x2'))(_0x7d0d('0x3'));var moment=require(_0x7d0d('0x4'));var BPromise=require('bluebird');var rp=require(_0x7d0d('0x5'));var fs=require('fs');var path=require(_0x7d0d('0x6'));var rimraf=require(_0x7d0d('0x7'));var config=require(_0x7d0d('0x8'));var attributes=require(_0x7d0d('0x9'));var integrations=require(_0x7d0d('0xa'));module['exports']=function(_0x511d19,_0x5edb44){return _0x511d19['define'](_0x7d0d('0xb'),attributes,{'tableName':_0x7d0d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xea06=['exports','define','ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','moment','request-promise','path','../../config/environment'];(function(_0x1ddf0a,_0x5c5bd5){var _0x5bf4c9=function(_0x1aa6d9){while(--_0x1aa6d9){_0x1ddf0a['push'](_0x1ddf0a['shift']());}};_0x5bf4c9(++_0x5c5bd5);}(_0xea06,0x1a6));var _0x6ea0=function(_0x413332,_0x57907b){_0x413332=_0x413332-0x0;var _0x23d2c5=_0xea06[_0x413332];return _0x23d2c5;};'use strict';var _=require(_0x6ea0('0x0'));var util=require(_0x6ea0('0x1'));var logger=require(_0x6ea0('0x2'))('api');var moment=require(_0x6ea0('0x3'));var BPromise=require('bluebird');var rp=require(_0x6ea0('0x4'));var fs=require('fs');var path=require(_0x6ea0('0x5'));var rimraf=require('rimraf');var config=require(_0x6ea0('0x6'));var attributes=require('./intZendeskAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0x6ea0('0x7')]=function(_0x3ecd86,_0x2187cb){return _0x3ecd86[_0x6ea0('0x8')](_0x6ea0('0x9'),attributes,{'tableName':_0x6ea0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a78fd28..11f5d1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3451=['where','attributes','limit','include','map','stringify','ShowZendeskAccount','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw'];(function(_0x474bc0,_0x26989c){var _0x4b24cf=function(_0x4be866){while(--_0x4be866){_0x474bc0['push'](_0x474bc0['shift']());}};_0x4b24cf(++_0x26989c);}(_0x3451,0x1a8));var _0x1345=function(_0x456716,_0x569449){_0x456716=_0x456716-0x0;var _0x72e44f=_0x3451[_0x456716];return _0x72e44f;};'use strict';var _=require(_0x1345('0x0'));var util=require(_0x1345('0x1'));var moment=require(_0x1345('0x2'));var BPromise=require(_0x1345('0x3'));var rs=require(_0x1345('0x4'));var fs=require('fs');var Redis=require(_0x1345('0x5'));var db=require(_0x1345('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x1345('0x7'))(_0x1345('0x8'));var config=require('../../config/environment');var jayson=require(_0x1345('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5e3d53,_0x155146,_0x145fda){return new BPromise(function(_0x5ed70,_0x7be220){return client['request'](_0x5e3d53,_0x145fda)[_0x1345('0xa')](function(_0x2cd946){logger[_0x1345('0xb')](_0x1345('0xc'),_0x155146,_0x1345('0xd'));logger[_0x1345('0xe')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x155146,_0x1345('0xd'),JSON['stringify'](_0x2cd946));if(_0x2cd946[_0x1345('0xf')]){if(_0x2cd946[_0x1345('0xf')][_0x1345('0x10')]===0x1f4){logger[_0x1345('0xf')]('ZendeskAccount,\x20%s,\x20%s',_0x155146,_0x2cd946['error'][_0x1345('0x11')]);return _0x7be220(_0x2cd946[_0x1345('0xf')][_0x1345('0x11')]);}logger[_0x1345('0xf')]('ZendeskAccount,\x20%s,\x20%s',_0x155146,_0x2cd946[_0x1345('0xf')][_0x1345('0x11')]);return _0x5ed70(_0x2cd946[_0x1345('0xf')][_0x1345('0x11')]);}else{logger[_0x1345('0xb')]('ZendeskAccount,\x20%s,\x20%s',_0x155146,'request\x20sent');_0x5ed70(_0x2cd946['result'][_0x1345('0x11')]);}})[_0x1345('0x12')](function(_0x37626e){logger[_0x1345('0xf')](_0x1345('0xc'),_0x155146,_0x37626e);_0x7be220(_0x37626e);});});}exports[_0x1345('0x13')]=function(_0x4bb2a7){var _0x263476=this;return new Promise(function(_0x1451a6,_0x2fcba0){return db[_0x1345('0x14')][_0x1345('0x15')]({'raw':_0x4bb2a7[_0x1345('0x16')]?_0x4bb2a7[_0x1345('0x16')][_0x1345('0x17')]===undefined?!![]:![]:!![],'where':_0x4bb2a7[_0x1345('0x16')]?_0x4bb2a7[_0x1345('0x16')][_0x1345('0x18')]||null:null,'attributes':_0x4bb2a7[_0x1345('0x16')]?_0x4bb2a7[_0x1345('0x16')][_0x1345('0x19')]||null:null,'limit':_0x4bb2a7['options']?_0x4bb2a7[_0x1345('0x16')][_0x1345('0x1a')]||null:null,'include':_0x4bb2a7[_0x1345('0x16')]?_0x4bb2a7[_0x1345('0x16')][_0x1345('0x1b')]?_[_0x1345('0x1c')](_0x4bb2a7[_0x1345('0x16')]['include'],function(_0x3ee936){return{'model':db[_0x3ee936['model']],'as':_0x3ee936['as'],'attributes':_0x3ee936[_0x1345('0x19')],'include':_0x3ee936[_0x1345('0x1b')]?_[_0x1345('0x1c')](_0x3ee936['include'],function(_0x2bb4fd){return{'model':db[_0x2bb4fd['model']],'as':_0x2bb4fd['as'],'attributes':_0x2bb4fd['attributes'],'include':_0x2bb4fd[_0x1345('0x1b')]?_[_0x1345('0x1c')](_0x2bb4fd[_0x1345('0x1b')],function(_0x378801){return{'model':db[_0x378801['model']],'as':_0x378801['as'],'attributes':_0x378801[_0x1345('0x19')]};}):[]};}):[]};}):[]:[]})[_0x1345('0xa')](function(_0x3ebdf6){logger['info'](_0x1345('0x13'),_0x4bb2a7);logger[_0x1345('0xe')](_0x1345('0x13'),_0x4bb2a7,JSON[_0x1345('0x1d')](_0x3ebdf6));_0x1451a6(_0x3ebdf6);})[_0x1345('0x12')](function(_0x52c436){logger[_0x1345('0xf')](_0x1345('0x13'),_0x52c436['message'],_0x4bb2a7);_0x2fcba0(_0x263476['error'](0x1f4,_0x52c436[_0x1345('0x11')]));});});};exports[_0x1345('0x1e')]=function(_0x3d325f){var _0x3b7bdb=this;return new Promise(function(_0x20e799,_0x5b619d){return db[_0x1345('0x14')]['find']({'raw':_0x3d325f[_0x1345('0x16')]?_0x3d325f[_0x1345('0x16')][_0x1345('0x17')]===undefined?!![]:![]:!![],'where':_0x3d325f[_0x1345('0x16')]?_0x3d325f[_0x1345('0x16')]['where']||null:null,'attributes':_0x3d325f[_0x1345('0x16')]?_0x3d325f[_0x1345('0x16')][_0x1345('0x19')]||null:null,'include':_0x3d325f[_0x1345('0x16')]?_0x3d325f[_0x1345('0x16')][_0x1345('0x1b')]?_[_0x1345('0x1c')](_0x3d325f[_0x1345('0x16')][_0x1345('0x1b')],function(_0x17743d){return{'model':db[_0x17743d['model']],'as':_0x17743d['as'],'attributes':_0x17743d[_0x1345('0x19')],'include':_0x17743d['include']?_[_0x1345('0x1c')](_0x17743d[_0x1345('0x1b')],function(_0x1982d7){return{'model':db[_0x1982d7[_0x1345('0x1f')]],'as':_0x1982d7['as'],'attributes':_0x1982d7[_0x1345('0x19')],'include':_0x1982d7['include']?_[_0x1345('0x1c')](_0x1982d7['include'],function(_0x2c1e4f){return{'model':db[_0x2c1e4f[_0x1345('0x1f')]],'as':_0x2c1e4f['as'],'attributes':_0x2c1e4f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x108714){logger[_0x1345('0xb')](_0x1345('0x1e'),_0x3d325f);logger[_0x1345('0xe')]('ShowZendeskAccount',_0x3d325f,JSON[_0x1345('0x1d')](_0x108714));_0x20e799(_0x108714);})[_0x1345('0x12')](function(_0x5b5c0f){logger[_0x1345('0xf')](_0x1345('0x1e'),_0x5b5c0f[_0x1345('0x11')],_0x3d325f);_0x5b619d(_0x3b7bdb[_0x1345('0xf')](0x1f4,_0x5b5c0f['message']));});});};
\ No newline at end of file
+var _0x8420=['debug','stringify','error','code','message','result','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where','attributes','include','model','map','info','catch','ShowZendeskAccount','find','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','ZendeskAccount,\x20%s,\x20%s'];(function(_0x34430b,_0xbcf696){var _0x1201ee=function(_0x26f691){while(--_0x26f691){_0x34430b['push'](_0x34430b['shift']());}};_0x1201ee(++_0xbcf696);}(_0x8420,0xbe));var _0x0842=function(_0xed0567,_0x3619b2){_0xed0567=_0xed0567-0x0;var _0x122a6f=_0x8420[_0xed0567];return _0x122a6f;};'use strict';var _=require(_0x0842('0x0'));var util=require(_0x0842('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0842('0x2'));var fs=require('fs');var Redis=require(_0x0842('0x3'));var db=require(_0x0842('0x4'))['db'];var utils=require(_0x0842('0x5'));var logger=require(_0x0842('0x6'))(_0x0842('0x7'));var config=require(_0x0842('0x8'));var jayson=require(_0x0842('0x9'));var client=jayson[_0x0842('0xa')][_0x0842('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x16368b,_0x3c1e4a,_0x1bd980){return new BPromise(function(_0x4d79de,_0x324aac){return client['request'](_0x16368b,_0x1bd980)[_0x0842('0xc')](function(_0x285865){logger['info'](_0x0842('0xd'),_0x3c1e4a,'request\x20sent');logger[_0x0842('0xe')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x3c1e4a,'request\x20sent',JSON[_0x0842('0xf')](_0x285865));if(_0x285865[_0x0842('0x10')]){if(_0x285865['error'][_0x0842('0x11')]===0x1f4){logger[_0x0842('0x10')](_0x0842('0xd'),_0x3c1e4a,_0x285865['error'][_0x0842('0x12')]);return _0x324aac(_0x285865[_0x0842('0x10')]['message']);}logger['error'](_0x0842('0xd'),_0x3c1e4a,_0x285865['error'][_0x0842('0x12')]);return _0x4d79de(_0x285865[_0x0842('0x10')][_0x0842('0x12')]);}else{logger['info'](_0x0842('0xd'),_0x3c1e4a,'request\x20sent');_0x4d79de(_0x285865[_0x0842('0x13')][_0x0842('0x12')]);}})['catch'](function(_0x2fdd5c){logger[_0x0842('0x10')](_0x0842('0xd'),_0x3c1e4a,_0x2fdd5c);_0x324aac(_0x2fdd5c);});});}exports[_0x0842('0x14')]=function(_0x3dcd2c){var _0x416e57=this;return new Promise(function(_0x526499,_0x23cf1a){return db[_0x0842('0x15')][_0x0842('0x16')]({'raw':_0x3dcd2c[_0x0842('0x17')]?_0x3dcd2c[_0x0842('0x17')][_0x0842('0x18')]===undefined?!![]:![]:!![],'where':_0x3dcd2c['options']?_0x3dcd2c[_0x0842('0x17')][_0x0842('0x19')]||null:null,'attributes':_0x3dcd2c[_0x0842('0x17')]?_0x3dcd2c['options'][_0x0842('0x1a')]||null:null,'limit':_0x3dcd2c['options']?_0x3dcd2c[_0x0842('0x17')]['limit']||null:null,'include':_0x3dcd2c[_0x0842('0x17')]?_0x3dcd2c[_0x0842('0x17')][_0x0842('0x1b')]?_['map'](_0x3dcd2c['options'][_0x0842('0x1b')],function(_0x54ef4a){return{'model':db[_0x54ef4a[_0x0842('0x1c')]],'as':_0x54ef4a['as'],'attributes':_0x54ef4a[_0x0842('0x1a')],'include':_0x54ef4a['include']?_[_0x0842('0x1d')](_0x54ef4a[_0x0842('0x1b')],function(_0x3ac369){return{'model':db[_0x3ac369[_0x0842('0x1c')]],'as':_0x3ac369['as'],'attributes':_0x3ac369[_0x0842('0x1a')],'include':_0x3ac369[_0x0842('0x1b')]?_[_0x0842('0x1d')](_0x3ac369[_0x0842('0x1b')],function(_0x20a509){return{'model':db[_0x20a509['model']],'as':_0x20a509['as'],'attributes':_0x20a509[_0x0842('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0842('0xc')](function(_0x23e3eb){logger[_0x0842('0x1e')](_0x0842('0x14'),_0x3dcd2c);logger[_0x0842('0xe')](_0x0842('0x14'),_0x3dcd2c,JSON[_0x0842('0xf')](_0x23e3eb));_0x526499(_0x23e3eb);})[_0x0842('0x1f')](function(_0x5f4b14){logger[_0x0842('0x10')](_0x0842('0x14'),_0x5f4b14['message'],_0x3dcd2c);_0x23cf1a(_0x416e57['error'](0x1f4,_0x5f4b14['message']));});});};exports[_0x0842('0x20')]=function(_0x210451){var _0x589866=this;return new Promise(function(_0x1eac71,_0x4b76c1){return db['ZendeskAccount'][_0x0842('0x21')]({'raw':_0x210451[_0x0842('0x17')]?_0x210451[_0x0842('0x17')][_0x0842('0x18')]===undefined?!![]:![]:!![],'where':_0x210451[_0x0842('0x17')]?_0x210451[_0x0842('0x17')][_0x0842('0x19')]||null:null,'attributes':_0x210451[_0x0842('0x17')]?_0x210451[_0x0842('0x17')][_0x0842('0x1a')]||null:null,'include':_0x210451[_0x0842('0x17')]?_0x210451['options'][_0x0842('0x1b')]?_[_0x0842('0x1d')](_0x210451[_0x0842('0x17')][_0x0842('0x1b')],function(_0xe5326){return{'model':db[_0xe5326[_0x0842('0x1c')]],'as':_0xe5326['as'],'attributes':_0xe5326[_0x0842('0x1a')],'include':_0xe5326[_0x0842('0x1b')]?_[_0x0842('0x1d')](_0xe5326[_0x0842('0x1b')],function(_0x33d9d7){return{'model':db[_0x33d9d7[_0x0842('0x1c')]],'as':_0x33d9d7['as'],'attributes':_0x33d9d7[_0x0842('0x1a')],'include':_0x33d9d7[_0x0842('0x1b')]?_['map'](_0x33d9d7[_0x0842('0x1b')],function(_0x5793c8){return{'model':db[_0x5793c8[_0x0842('0x1c')]],'as':_0x5793c8['as'],'attributes':_0x5793c8['attributes']};}):[]};}):[]};}):[]:[]})[_0x0842('0xc')](function(_0x49e207){logger[_0x0842('0x1e')](_0x0842('0x20'),_0x210451);logger[_0x0842('0xe')](_0x0842('0x20'),_0x210451,JSON[_0x0842('0xf')](_0x49e207));_0x1eac71(_0x49e207);})[_0x0842('0x1f')](function(_0x469e92){logger[_0x0842('0x10')](_0x0842('0x20'),_0x469e92[_0x0842('0x12')],_0x210451);_0x4b76c1(_0x589866[_0x0842('0x10')](0x1f4,_0x469e92[_0x0842('0x12')]));});});};
\ No newline at end of file
index 7fda892..7618c57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','/:id/tags','post','create','put','destroy','exports','util','path','fs-extra','../../components/interaction/service'];(function(_0x7078a,_0x2efdba){var _0x16ac85=function(_0xdf342a){while(--_0xdf342a){_0x7078a['push'](_0x7078a['shift']());}};_0x16ac85(++_0x2efdba);}(_0xda3f,0xec));var _0xfda3=function(_0x17f80c,_0x36b485){_0x17f80c=_0x17f80c-0x0;var _0x1b905f=_0xda3f[_0x17f80c];return _0x1b905f;};'use strict';var multer=require('multer');var util=require(_0xfda3('0x0'));var path=require(_0xfda3('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xfda3('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xfda3('0x3'));var config=require(_0xfda3('0x4'));var controller=require('./intZendeskConfiguration.controller');router[_0xfda3('0x5')]('/',auth[_0xfda3('0x6')](),controller['index']);router['get'](_0xfda3('0x7'),auth[_0xfda3('0x6')](),controller[_0xfda3('0x8')]);router[_0xfda3('0x5')](_0xfda3('0x9'),auth[_0xfda3('0x6')](),controller[_0xfda3('0xa')]);router[_0xfda3('0x5')](_0xfda3('0xb'),auth[_0xfda3('0x6')](),controller[_0xfda3('0xc')]);router[_0xfda3('0x5')]('/:id/descriptions',auth[_0xfda3('0x6')](),controller[_0xfda3('0xd')]);router[_0xfda3('0x5')](_0xfda3('0xe'),auth[_0xfda3('0x6')](),controller['getTags']);router[_0xfda3('0xf')]('/',auth['isAuthenticated'](),controller[_0xfda3('0x10')]);router[_0xfda3('0xf')]('/:id/tags',auth['isAuthenticated'](),controller['setTags']);router[_0xfda3('0x11')](_0xfda3('0x7'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xfda3('0x7'),auth[_0xfda3('0x6')](),controller[_0xfda3('0x12')]);module[_0xfda3('0x13')]=router;
\ No newline at end of file
+var _0x7916=['getDescriptions','get','/:id/tags','getTags','post','create','setTags','update','delete','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskConfiguration.controller','isAuthenticated','index','/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions'];(function(_0x1e4380,_0x47b6f1){var _0xef9e4a=function(_0x4ce989){while(--_0x4ce989){_0x1e4380['push'](_0x1e4380['shift']());}};_0xef9e4a(++_0x47b6f1);}(_0x7916,0x128));var _0x6791=function(_0x23c5f8,_0x1d2886){_0x23c5f8=_0x23c5f8-0x0;var _0xf5e25e=_0x7916[_0x23c5f8];return _0xf5e25e;};'use strict';var multer=require(_0x6791('0x0'));var util=require('util');var path=require(_0x6791('0x1'));var timeout=require(_0x6791('0x2'));var express=require('express');var router=express[_0x6791('0x3')]();var fs_extra=require(_0x6791('0x4'));var auth=require(_0x6791('0x5'));var interaction=require(_0x6791('0x6'));var config=require('../../config/environment');var controller=require(_0x6791('0x7'));router['get']('/',auth[_0x6791('0x8')](),controller[_0x6791('0x9')]);router['get'](_0x6791('0xa'),auth['isAuthenticated'](),controller[_0x6791('0xb')]);router['get']('/:id/fields',auth[_0x6791('0x8')](),controller[_0x6791('0xc')]);router['get'](_0x6791('0xd'),auth[_0x6791('0x8')](),controller[_0x6791('0xe')]);router['get'](_0x6791('0xf'),auth[_0x6791('0x8')](),controller[_0x6791('0x10')]);router[_0x6791('0x11')](_0x6791('0x12'),auth[_0x6791('0x8')](),controller[_0x6791('0x13')]);router[_0x6791('0x14')]('/',auth[_0x6791('0x8')](),controller[_0x6791('0x15')]);router[_0x6791('0x14')]('/:id/tags',auth['isAuthenticated'](),controller[_0x6791('0x16')]);router['put'](_0x6791('0xa'),auth['isAuthenticated'](),controller[_0x6791('0x17')]);router[_0x6791('0x18')]('/:id',auth[_0x6791('0x8')](),controller['destroy']);module[_0x6791('0x19')]=router;
\ No newline at end of file
index 843ae93..6e6e335 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dd6=['STRING','exports'];(function(_0x44946b,_0xf874ec){var _0x249bc4=function(_0x40a23e){while(--_0x40a23e){_0x44946b['push'](_0x44946b['shift']());}};_0x249bc4(++_0xf874ec);}(_0x7dd6,0x6b));var _0x67dd=function(_0x166d93,_0x301f09){_0x166d93=_0x166d93-0x0;var _0xba708=_0x7dd6[_0x166d93];return _0xba708;};'use strict';var Sequelize=require('sequelize');module[_0x67dd('0x0')]={'name':{'type':Sequelize[_0x67dd('0x1')]},'description':{'type':Sequelize[_0x67dd('0x1')]}};
\ No newline at end of file
+var _0xff9b=['exports','STRING','sequelize'];(function(_0x400d0a,_0x2229f0){var _0x4c9468=function(_0x767669){while(--_0x767669){_0x400d0a['push'](_0x400d0a['shift']());}};_0x4c9468(++_0x2229f0);}(_0xff9b,0x194));var _0xbff9=function(_0x34c0c4,_0x104627){_0x34c0c4=_0x34c0c4-0x0;var _0xcdc1fb=_0xff9b[_0x34c0c4];return _0xcdc1fb;};'use strict';var Sequelize=require(_0xbff9('0x0'));module[_0xbff9('0x1')]={'name':{'type':Sequelize[_0xbff9('0x2')]},'description':{'type':Sequelize[_0xbff9('0x2')]}};
\ No newline at end of file
index e4fa740..1db4be4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fe2=['update','destroy','then','stack','name','index','map','ZendeskConfiguration','type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','create','body','find','getFields','findOne','pick','getSubjects','ZendeskField','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save'];(function(_0x7a8be9,_0x1caf02){var _0x4bab19=function(_0x539448){while(--_0x539448){_0x7a8be9['push'](_0x7a8be9['shift']());}};_0x4bab19(++_0x1caf02);}(_0x4fe2,0x86));var _0x24fe=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x4fe2[_0x502c7d];return _0x30b7ed;};'use strict';var emlformat=require(_0x24fe('0x0'));var rimraf=require(_0x24fe('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x24fe('0x2'));var rp=require(_0x24fe('0x3'));var moment=require(_0x24fe('0x4'));var BPromise=require(_0x24fe('0x5'));var Mustache=require('mustache');var util=require(_0x24fe('0x6'));var path=require(_0x24fe('0x7'));var sox=require(_0x24fe('0x8'));var csv=require(_0x24fe('0x9'));var ejs=require(_0x24fe('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x24fe('0xb'));var crypto=require(_0x24fe('0xc'));var jsforce=require(_0x24fe('0xd'));var deskjs=require(_0x24fe('0xe'));var toCsv=require(_0x24fe('0x9'));var querystring=require(_0x24fe('0xf'));var Papa=require('papaparse');var Redis=require(_0x24fe('0x10'));var authService=require(_0x24fe('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x24fe('0x12'));var hardwareService=require(_0x24fe('0x13'));var logger=require(_0x24fe('0x14'))(_0x24fe('0x15'));var utils=require(_0x24fe('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x24fe('0x17'));var db=require(_0x24fe('0x18'))['db'];function respondWithStatusCode(_0x42b86d,_0x3ce163){_0x3ce163=_0x3ce163||0xcc;return function(_0x5a29be){if(_0x5a29be){return _0x42b86d[_0x24fe('0x19')](_0x3ce163);}return _0x42b86d[_0x24fe('0x1a')](_0x3ce163)[_0x24fe('0x1b')]();};}function respondWithResult(_0x38226e,_0x9d556a){_0x9d556a=_0x9d556a||0xc8;return function(_0x2c70e6){if(_0x2c70e6){return _0x38226e[_0x24fe('0x1a')](_0x9d556a)['json'](_0x2c70e6);}};}function respondWithFilteredResult(_0x537210,_0x3aab0d){return function(_0x57b988){if(_0x57b988){var _0x29543f=typeof _0x3aab0d['offset']===_0x24fe('0x1c')&&typeof _0x3aab0d[_0x24fe('0x1d')]===_0x24fe('0x1c');var _0x4cdfad=_0x57b988['count'];var _0x5c1fb2=_0x29543f?0x0:_0x3aab0d[_0x24fe('0x1e')];var _0x4ef8d6=_0x29543f?_0x57b988[_0x24fe('0x1f')]:_0x3aab0d[_0x24fe('0x1e')]+_0x3aab0d[_0x24fe('0x1d')];var _0x446eaa;if(_0x4ef8d6>=_0x4cdfad){_0x4ef8d6=_0x4cdfad;_0x446eaa=0xc8;}else{_0x446eaa=0xce;}_0x537210[_0x24fe('0x1a')](_0x446eaa);return _0x537210[_0x24fe('0x20')](_0x24fe('0x21'),_0x5c1fb2+'-'+_0x4ef8d6+'/'+_0x4cdfad)[_0x24fe('0x22')](_0x57b988);}return null;};}function patchUpdates(_0x55bb7d){return function(_0x4a2ef1){try{jsonpatch[_0x24fe('0x23')](_0x4a2ef1,_0x55bb7d,!![]);}catch(_0xaebc87){return BPromise[_0x24fe('0x24')](_0xaebc87);}return _0x4a2ef1[_0x24fe('0x25')]();};}function saveUpdates(_0x1e1faa,_0x4c8d34){return function(_0x3ed356){if(_0x3ed356){return _0x3ed356[_0x24fe('0x26')](_0x1e1faa)['then'](function(_0x43e4fa){return _0x43e4fa;});}return null;};}function removeEntity(_0xe6fcce,_0x1c38e7){return function(_0x5ec55c){if(_0x5ec55c){return _0x5ec55c[_0x24fe('0x27')]()[_0x24fe('0x28')](function(){_0xe6fcce[_0x24fe('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xbaaec9,_0x2335cc){return function(_0x51f38c){if(!_0x51f38c){_0xbaaec9['sendStatus'](0x194);}return _0x51f38c;};}function handleError(_0x3661d0,_0x52180a){_0x52180a=_0x52180a||0x1f4;return function(_0x523755){logger['error'](_0x523755[_0x24fe('0x29')]);if(_0x523755[_0x24fe('0x2a')]){delete _0x523755[_0x24fe('0x2a')];}_0x3661d0[_0x24fe('0x1a')](_0x52180a)['send'](_0x523755);};}exports[_0x24fe('0x2b')]=function(_0x561d16,_0x37d388){var _0xb8d9b9={},_0x37a028={},_0x3bf101={'count':0x0,'rows':[]};var _0x55347d=_[_0x24fe('0x2c')](db[_0x24fe('0x2d')]['rawAttributes'],function(_0x201866){return{'name':_0x201866['fieldName'],'type':_0x201866[_0x24fe('0x2e')][_0x24fe('0x2f')]};});_0x37a028['model']=_[_0x24fe('0x2c')](_0x55347d,'name');_0x37a028['query']=_['keys'](_0x561d16[_0x24fe('0x30')]);_0x37a028[_0x24fe('0x31')]=_[_0x24fe('0x32')](_0x37a028['model'],_0x37a028[_0x24fe('0x30')]);_0xb8d9b9['attributes']=_['intersection'](_0x37a028[_0x24fe('0x33')],qs[_0x24fe('0x34')](_0x561d16[_0x24fe('0x30')][_0x24fe('0x34')]));_0xb8d9b9[_0x24fe('0x35')]=_0xb8d9b9['attributes'][_0x24fe('0x36')]?_0xb8d9b9['attributes']:_0x37a028[_0x24fe('0x33')];if(!_0x561d16[_0x24fe('0x30')][_0x24fe('0x37')](_0x24fe('0x38'))){_0xb8d9b9[_0x24fe('0x1d')]=qs[_0x24fe('0x1d')](_0x561d16[_0x24fe('0x30')][_0x24fe('0x1d')]);_0xb8d9b9[_0x24fe('0x1e')]=qs[_0x24fe('0x1e')](_0x561d16[_0x24fe('0x30')]['offset']);}_0xb8d9b9[_0x24fe('0x39')]=qs[_0x24fe('0x3a')](_0x561d16[_0x24fe('0x30')][_0x24fe('0x3a')]);_0xb8d9b9['where']=qs[_0x24fe('0x31')](_['pick'](_0x561d16['query'],_0x37a028['filters']),_0x55347d);if(_0x561d16[_0x24fe('0x30')]['filter']){_0xb8d9b9[_0x24fe('0x3b')]=_[_0x24fe('0x3c')](_0xb8d9b9[_0x24fe('0x3b')],{'$or':_[_0x24fe('0x2c')](_0x55347d,function(_0x440185){if(_0x440185[_0x24fe('0x2e')]!==_0x24fe('0x3d')){var _0x353e5d={};_0x353e5d[_0x440185[_0x24fe('0x2a')]]={'$like':'%'+_0x561d16[_0x24fe('0x30')][_0x24fe('0x3e')]+'%'};return _0x353e5d;}})});}_0xb8d9b9=_[_0x24fe('0x3c')]({},_0xb8d9b9,_0x561d16[_0x24fe('0x3f')]);var _0x5435c3={'where':_0xb8d9b9[_0x24fe('0x3b')]};return db[_0x24fe('0x2d')]['count'](_0x5435c3)[_0x24fe('0x28')](function(_0x3f8301){_0x3bf101['count']=_0x3f8301;if(_0x561d16[_0x24fe('0x30')][_0x24fe('0x40')]){_0xb8d9b9[_0x24fe('0x41')]=[{'all':!![]}];}return db[_0x24fe('0x2d')][_0x24fe('0x42')](_0xb8d9b9);})[_0x24fe('0x28')](function(_0x55dc6f){_0x3bf101[_0x24fe('0x43')]=_0x55dc6f;return _0x3bf101;})[_0x24fe('0x28')](respondWithFilteredResult(_0x37d388,_0xb8d9b9))[_0x24fe('0x44')](handleError(_0x37d388,null));};exports[_0x24fe('0x45')]=function(_0x3cdaf5,_0x454923){var _0x4ed660={'raw':![],'where':{'id':_0x3cdaf5[_0x24fe('0x46')]['id']}},_0x31279e={};_0x31279e['model']=_[_0x24fe('0x47')](db[_0x24fe('0x2d')][_0x24fe('0x48')]);_0x31279e['query']=_[_0x24fe('0x47')](_0x3cdaf5[_0x24fe('0x30')]);_0x31279e[_0x24fe('0x31')]=_['intersection'](_0x31279e['model'],_0x31279e[_0x24fe('0x30')]);_0x4ed660['attributes']=_[_0x24fe('0x32')](_0x31279e[_0x24fe('0x33')],qs['fields'](_0x3cdaf5[_0x24fe('0x30')][_0x24fe('0x34')]));_0x4ed660[_0x24fe('0x35')]=_0x4ed660[_0x24fe('0x35')][_0x24fe('0x36')]?_0x4ed660[_0x24fe('0x35')]:_0x31279e[_0x24fe('0x33')];if(_0x3cdaf5[_0x24fe('0x30')][_0x24fe('0x40')]){_0x4ed660[_0x24fe('0x41')]=[{'all':!![]}];}_0x4ed660=_['merge']({},_0x4ed660,_0x3cdaf5[_0x24fe('0x3f')]);return db[_0x24fe('0x2d')]['find'](_0x4ed660)[_0x24fe('0x28')](handleEntityNotFound(_0x454923,null))[_0x24fe('0x28')](respondWithResult(_0x454923,null))['catch'](handleError(_0x454923,null));};exports[_0x24fe('0x49')]=function(_0x9cab68,_0x38907c){return db[_0x24fe('0x2d')][_0x24fe('0x49')](_0x9cab68['body'],{})['then'](respondWithResult(_0x38907c,0xc9))[_0x24fe('0x44')](handleError(_0x38907c,null));};exports[_0x24fe('0x26')]=function(_0x59746f,_0x556117){if(_0x59746f[_0x24fe('0x4a')]['id']){delete _0x59746f['body']['id'];}return db[_0x24fe('0x2d')][_0x24fe('0x4b')]({'where':{'id':_0x59746f[_0x24fe('0x46')]['id']}})['then'](handleEntityNotFound(_0x556117,null))[_0x24fe('0x28')](saveUpdates(_0x59746f[_0x24fe('0x4a')],null))[_0x24fe('0x28')](respondWithResult(_0x556117,null))['catch'](handleError(_0x556117,null));};exports[_0x24fe('0x27')]=function(_0x477e44,_0xaf1a12){return db[_0x24fe('0x2d')][_0x24fe('0x4b')]({'where':{'id':_0x477e44['params']['id']}})[_0x24fe('0x28')](handleEntityNotFound(_0xaf1a12,null))['then'](removeEntity(_0xaf1a12,null))['catch'](handleError(_0xaf1a12,null));};exports[_0x24fe('0x4c')]=function(_0x21b54f,_0x3906f8,_0x343de6){var _0x4bbae7={};var _0x595428={};var _0x595bef;var _0x3f7f75;return db['ZendeskConfiguration'][_0x24fe('0x4d')]({'where':{'id':_0x21b54f[_0x24fe('0x46')]['id']}})[_0x24fe('0x28')](handleEntityNotFound(_0x3906f8,null))['then'](function(_0x381080){if(_0x381080){_0x595bef=_0x381080;_0x595428[_0x24fe('0x33')]=_[_0x24fe('0x47')](db['ZendeskField'][_0x24fe('0x48')]);_0x595428['query']=_['keys'](_0x21b54f['query']);_0x595428[_0x24fe('0x31')]=_[_0x24fe('0x32')](_0x595428['model'],_0x595428[_0x24fe('0x30')]);_0x4bbae7['attributes']=_[_0x24fe('0x32')](_0x595428['model'],qs[_0x24fe('0x34')](_0x21b54f[_0x24fe('0x30')][_0x24fe('0x34')]));_0x4bbae7['attributes']=_0x4bbae7['attributes'][_0x24fe('0x36')]?_0x4bbae7['attributes']:_0x595428['model'];_0x4bbae7[_0x24fe('0x39')]=qs[_0x24fe('0x3a')](_0x21b54f['query']['sort']);_0x4bbae7[_0x24fe('0x3b')]=qs[_0x24fe('0x31')](_[_0x24fe('0x4e')](_0x21b54f['query'],_0x595428[_0x24fe('0x31')]));if(_0x21b54f[_0x24fe('0x30')][_0x24fe('0x3e')]){_0x4bbae7['where']=_['merge'](_0x4bbae7[_0x24fe('0x3b')],{'$or':_[_0x24fe('0x2c')](_0x4bbae7[_0x24fe('0x35')],function(_0x21f382){var _0x236df0={};_0x236df0[_0x21f382]={'$like':'%'+_0x21b54f[_0x24fe('0x30')]['filter']+'%'};return _0x236df0;})});}_0x4bbae7=_[_0x24fe('0x3c')]({},_0x4bbae7,_0x21b54f[_0x24fe('0x3f')]);return _0x595bef['getFields'](_0x4bbae7);}})[_0x24fe('0x28')](function(_0x4701cf){if(_0x4701cf){_0x3f7f75=_0x4701cf[_0x24fe('0x36')];if(!_0x21b54f[_0x24fe('0x30')][_0x24fe('0x37')]('nolimit')){_0x4bbae7[_0x24fe('0x1d')]=qs[_0x24fe('0x1d')](_0x21b54f['query'][_0x24fe('0x1d')]);_0x4bbae7[_0x24fe('0x1e')]=qs['offset'](_0x21b54f[_0x24fe('0x30')][_0x24fe('0x1e')]);}return _0x595bef['getFields'](_0x4bbae7);}})[_0x24fe('0x28')](function(_0x586948){if(_0x586948){return _0x586948?{'count':_0x3f7f75,'rows':_0x586948}:null;}})[_0x24fe('0x28')](respondWithResult(_0x3906f8,null))['catch'](handleError(_0x3906f8,null));};exports[_0x24fe('0x4f')]=function(_0x5d9e3d,_0x5a7f97,_0x43bee0){var _0x377e47={};var _0x5012df={};var _0xac54ed;var _0x4512a5;return db[_0x24fe('0x2d')][_0x24fe('0x4d')]({'where':{'id':_0x5d9e3d[_0x24fe('0x46')]['id']}})[_0x24fe('0x28')](handleEntityNotFound(_0x5a7f97,null))[_0x24fe('0x28')](function(_0x1cdacd){if(_0x1cdacd){_0xac54ed=_0x1cdacd;_0x5012df[_0x24fe('0x33')]=_[_0x24fe('0x47')](db[_0x24fe('0x50')][_0x24fe('0x48')]);_0x5012df[_0x24fe('0x30')]=_[_0x24fe('0x47')](_0x5d9e3d[_0x24fe('0x30')]);_0x5012df[_0x24fe('0x31')]=_[_0x24fe('0x32')](_0x5012df[_0x24fe('0x33')],_0x5012df[_0x24fe('0x30')]);_0x377e47['attributes']=_[_0x24fe('0x32')](_0x5012df[_0x24fe('0x33')],qs['fields'](_0x5d9e3d['query'][_0x24fe('0x34')]));_0x377e47[_0x24fe('0x35')]=_0x377e47['attributes'][_0x24fe('0x36')]?_0x377e47['attributes']:_0x5012df['model'];_0x377e47['order']=qs['sort'](_0x5d9e3d['query'][_0x24fe('0x3a')]);_0x377e47['where']=qs[_0x24fe('0x31')](_[_0x24fe('0x4e')](_0x5d9e3d[_0x24fe('0x30')],_0x5012df[_0x24fe('0x31')]));if(_0x5d9e3d[_0x24fe('0x30')][_0x24fe('0x3e')]){_0x377e47[_0x24fe('0x3b')]=_[_0x24fe('0x3c')](_0x377e47[_0x24fe('0x3b')],{'$or':_[_0x24fe('0x2c')](_0x377e47[_0x24fe('0x35')],function(_0x429ac6){var _0x59798f={};_0x59798f[_0x429ac6]={'$like':'%'+_0x5d9e3d[_0x24fe('0x30')][_0x24fe('0x3e')]+'%'};return _0x59798f;})});}_0x377e47=_[_0x24fe('0x3c')]({},_0x377e47,_0x5d9e3d[_0x24fe('0x3f')]);return _0xac54ed[_0x24fe('0x4f')](_0x377e47);}})['then'](function(_0x179e87){if(_0x179e87){_0x4512a5=_0x179e87['length'];if(!_0x5d9e3d[_0x24fe('0x30')][_0x24fe('0x37')](_0x24fe('0x38'))){_0x377e47[_0x24fe('0x1d')]=qs[_0x24fe('0x1d')](_0x5d9e3d['query'][_0x24fe('0x1d')]);_0x377e47['offset']=qs[_0x24fe('0x1e')](_0x5d9e3d['query'][_0x24fe('0x1e')]);}return _0xac54ed['getSubjects'](_0x377e47);}})[_0x24fe('0x28')](function(_0x445d31){if(_0x445d31){return _0x445d31?{'count':_0x4512a5,'rows':_0x445d31}:null;}})['then'](respondWithResult(_0x5a7f97,null))[_0x24fe('0x44')](handleError(_0x5a7f97,null));};exports['getDescriptions']=function(_0x3cb378,_0x2dea1b,_0x156e46){var _0x2cd785={};var _0x1a1c15={};var _0xdd690e;var _0x3e883e;return db[_0x24fe('0x2d')]['findOne']({'where':{'id':_0x3cb378['params']['id']}})[_0x24fe('0x28')](handleEntityNotFound(_0x2dea1b,null))[_0x24fe('0x28')](function(_0x23d0c4){if(_0x23d0c4){_0xdd690e=_0x23d0c4;_0x1a1c15[_0x24fe('0x33')]=_[_0x24fe('0x47')](db[_0x24fe('0x50')][_0x24fe('0x48')]);_0x1a1c15[_0x24fe('0x30')]=_[_0x24fe('0x47')](_0x3cb378[_0x24fe('0x30')]);_0x1a1c15[_0x24fe('0x31')]=_[_0x24fe('0x32')](_0x1a1c15[_0x24fe('0x33')],_0x1a1c15[_0x24fe('0x30')]);_0x2cd785[_0x24fe('0x35')]=_[_0x24fe('0x32')](_0x1a1c15[_0x24fe('0x33')],qs[_0x24fe('0x34')](_0x3cb378['query'][_0x24fe('0x34')]));_0x2cd785['attributes']=_0x2cd785[_0x24fe('0x35')][_0x24fe('0x36')]?_0x2cd785[_0x24fe('0x35')]:_0x1a1c15['model'];_0x2cd785[_0x24fe('0x39')]=qs['sort'](_0x3cb378[_0x24fe('0x30')][_0x24fe('0x3a')]);_0x2cd785[_0x24fe('0x3b')]=qs[_0x24fe('0x31')](_[_0x24fe('0x4e')](_0x3cb378[_0x24fe('0x30')],_0x1a1c15[_0x24fe('0x31')]));if(_0x3cb378['query'][_0x24fe('0x3e')]){_0x2cd785[_0x24fe('0x3b')]=_[_0x24fe('0x3c')](_0x2cd785[_0x24fe('0x3b')],{'$or':_[_0x24fe('0x2c')](_0x2cd785[_0x24fe('0x35')],function(_0x5eaa76){var _0x3f5ca4={};_0x3f5ca4[_0x5eaa76]={'$like':'%'+_0x3cb378[_0x24fe('0x30')][_0x24fe('0x3e')]+'%'};return _0x3f5ca4;})});}_0x2cd785=_[_0x24fe('0x3c')]({},_0x2cd785,_0x3cb378[_0x24fe('0x3f')]);return _0xdd690e[_0x24fe('0x51')](_0x2cd785);}})['then'](function(_0x6af2c3){if(_0x6af2c3){_0x3e883e=_0x6af2c3['length'];if(!_0x3cb378[_0x24fe('0x30')][_0x24fe('0x37')](_0x24fe('0x38'))){_0x2cd785[_0x24fe('0x1d')]=qs[_0x24fe('0x1d')](_0x3cb378[_0x24fe('0x30')][_0x24fe('0x1d')]);_0x2cd785[_0x24fe('0x1e')]=qs[_0x24fe('0x1e')](_0x3cb378[_0x24fe('0x30')][_0x24fe('0x1e')]);}return _0xdd690e['getDescriptions'](_0x2cd785);}})[_0x24fe('0x28')](function(_0x3b6d50){if(_0x3b6d50){return _0x3b6d50?{'count':_0x3e883e,'rows':_0x3b6d50}:null;}})[_0x24fe('0x28')](respondWithResult(_0x2dea1b,null))[_0x24fe('0x44')](handleError(_0x2dea1b,null));};exports[_0x24fe('0x52')]=function(_0x3aa2f6,_0x8ae034,_0x28567d){var _0x225e68={};var _0x4a91d1={};var _0x5daa4e;var _0x1ddf3d;return db['ZendeskConfiguration'][_0x24fe('0x4d')]({'where':{'id':_0x3aa2f6[_0x24fe('0x46')]['id']}})[_0x24fe('0x28')](handleEntityNotFound(_0x8ae034,null))['then'](function(_0x5db460){if(_0x5db460){_0x5daa4e=_0x5db460;_0x4a91d1[_0x24fe('0x33')]=_['keys'](db[_0x24fe('0x53')][_0x24fe('0x48')]);_0x4a91d1[_0x24fe('0x30')]=_['keys'](_0x3aa2f6[_0x24fe('0x30')]);_0x4a91d1[_0x24fe('0x31')]=_['intersection'](_0x4a91d1['model'],_0x4a91d1[_0x24fe('0x30')]);_0x225e68[_0x24fe('0x35')]=_['intersection'](_0x4a91d1['model'],qs['fields'](_0x3aa2f6[_0x24fe('0x30')][_0x24fe('0x34')]));_0x225e68[_0x24fe('0x35')]=_0x225e68[_0x24fe('0x35')][_0x24fe('0x36')]?_0x225e68['attributes']:_0x4a91d1[_0x24fe('0x33')];_0x225e68['order']=qs[_0x24fe('0x3a')](_0x3aa2f6['query'][_0x24fe('0x3a')]);_0x225e68[_0x24fe('0x3b')]=qs['filters'](_['pick'](_0x3aa2f6['query'],_0x4a91d1['filters']));if(_0x3aa2f6[_0x24fe('0x30')][_0x24fe('0x3e')]){_0x225e68['where']=_[_0x24fe('0x3c')](_0x225e68[_0x24fe('0x3b')],{'$or':_[_0x24fe('0x2c')](_0x225e68[_0x24fe('0x35')],function(_0x20eef9){var _0x3585e9={};_0x3585e9[_0x20eef9]={'$like':'%'+_0x3aa2f6['query'][_0x24fe('0x3e')]+'%'};return _0x3585e9;})});}_0x225e68=_['merge']({},_0x225e68,_0x3aa2f6['options']);return _0x5daa4e[_0x24fe('0x52')](_0x225e68);}})[_0x24fe('0x28')](function(_0x39854c){if(_0x39854c){_0x1ddf3d=_0x39854c[_0x24fe('0x36')];if(!_0x3aa2f6['query'][_0x24fe('0x37')](_0x24fe('0x38'))){_0x225e68[_0x24fe('0x1d')]=qs[_0x24fe('0x1d')](_0x3aa2f6[_0x24fe('0x30')][_0x24fe('0x1d')]);_0x225e68[_0x24fe('0x1e')]=qs['offset'](_0x3aa2f6[_0x24fe('0x30')][_0x24fe('0x1e')]);}return _0x5daa4e[_0x24fe('0x52')](_0x225e68);}})['then'](function(_0x49a6d5){if(_0x49a6d5){return _0x49a6d5?{'count':_0x1ddf3d,'rows':_0x49a6d5}:null;}})['then'](respondWithResult(_0x8ae034,null))['catch'](handleError(_0x8ae034,null));};exports['setTags']=function(_0x43dab6,_0x213379,_0x56a199){if(_0x43dab6[_0x24fe('0x4a')]['id']){delete _0x43dab6[_0x24fe('0x4a')]['id'];}return db[_0x24fe('0x2d')]['findOne']({'where':{'id':_0x43dab6[_0x24fe('0x46')]['id']}})['then'](handleEntityNotFound(_0x213379,null))['then'](function(_0x26d1cc){if(_0x26d1cc){return _0x26d1cc[_0x24fe('0x54')](_0x43dab6[_0x24fe('0x4a')][_0x24fe('0x55')]||[]);}return null;})[_0x24fe('0x28')](respondWithResult(_0x213379,null))['catch'](handleError(_0x213379,null));};
\ No newline at end of file
+var _0xaa31=['getFields','findOne','ZendeskField','length','hasOwnProperty','limit','getSubjects','getDescriptions','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','save','update','then','error','stack','name','send','index','map','ZendeskConfiguration','fieldName','type','model','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','keys','rawAttributes','find','catch','create','body','destroy','params'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaa31,0x1af));var _0x1aa3=function(_0x40a825,_0x3bac79){_0x40a825=_0x40a825-0x0;var _0x273a54=_0xaa31[_0x40a825];return _0x273a54;};'use strict';var emlformat=require(_0x1aa3('0x0'));var rimraf=require(_0x1aa3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1aa3('0x2'));var rp=require(_0x1aa3('0x3'));var moment=require(_0x1aa3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1aa3('0x5'));var util=require(_0x1aa3('0x6'));var path=require('path');var sox=require(_0x1aa3('0x7'));var csv=require(_0x1aa3('0x8'));var ejs=require(_0x1aa3('0x9'));var fs=require('fs');var fs_extra=require(_0x1aa3('0xa'));var _=require(_0x1aa3('0xb'));var squel=require(_0x1aa3('0xc'));var crypto=require(_0x1aa3('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1aa3('0xe'));var toCsv=require(_0x1aa3('0x8'));var querystring=require('querystring');var Papa=require(_0x1aa3('0xf'));var Redis=require('ioredis');var authService=require(_0x1aa3('0x10'));var qs=require(_0x1aa3('0x11'));var as=require(_0x1aa3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1aa3('0x13'))(_0x1aa3('0x14'));var utils=require(_0x1aa3('0x15'));var config=require(_0x1aa3('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x1aa3('0x17'))['db'];function respondWithStatusCode(_0x596b20,_0x2bb595){_0x2bb595=_0x2bb595||0xcc;return function(_0x464f3e){if(_0x464f3e){return _0x596b20[_0x1aa3('0x18')](_0x2bb595);}return _0x596b20[_0x1aa3('0x19')](_0x2bb595)[_0x1aa3('0x1a')]();};}function respondWithResult(_0xde185b,_0x212970){_0x212970=_0x212970||0xc8;return function(_0x811073){if(_0x811073){return _0xde185b[_0x1aa3('0x19')](_0x212970)[_0x1aa3('0x1b')](_0x811073);}};}function respondWithFilteredResult(_0x24127a,_0x597216){return function(_0x38fa4d){if(_0x38fa4d){var _0xbbda26=typeof _0x597216[_0x1aa3('0x1c')]===_0x1aa3('0x1d')&&typeof _0x597216['limit']===_0x1aa3('0x1d');var _0x2d00ba=_0x38fa4d[_0x1aa3('0x1e')];var _0x5966f7=_0xbbda26?0x0:_0x597216[_0x1aa3('0x1c')];var _0x5d0023=_0xbbda26?_0x38fa4d['count']:_0x597216[_0x1aa3('0x1c')]+_0x597216['limit'];var _0x5e2df6;if(_0x5d0023>=_0x2d00ba){_0x5d0023=_0x2d00ba;_0x5e2df6=0xc8;}else{_0x5e2df6=0xce;}_0x24127a[_0x1aa3('0x19')](_0x5e2df6);return _0x24127a[_0x1aa3('0x1f')](_0x1aa3('0x20'),_0x5966f7+'-'+_0x5d0023+'/'+_0x2d00ba)['json'](_0x38fa4d);}return null;};}function patchUpdates(_0x5d79fa){return function(_0x2017c0){try{jsonpatch['apply'](_0x2017c0,_0x5d79fa,!![]);}catch(_0x65a777){return BPromise[_0x1aa3('0x21')](_0x65a777);}return _0x2017c0[_0x1aa3('0x22')]();};}function saveUpdates(_0x1bfbeb,_0x2bc479){return function(_0x3d466a){if(_0x3d466a){return _0x3d466a[_0x1aa3('0x23')](_0x1bfbeb)['then'](function(_0x3b785f){return _0x3b785f;});}return null;};}function removeEntity(_0x379219,_0x5b705e){return function(_0x2862a1){if(_0x2862a1){return _0x2862a1['destroy']()[_0x1aa3('0x24')](function(){_0x379219[_0x1aa3('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f8966,_0x17383c){return function(_0x5621ff){if(!_0x5621ff){_0x2f8966[_0x1aa3('0x18')](0x194);}return _0x5621ff;};}function handleError(_0x39700d,_0x313d8e){_0x313d8e=_0x313d8e||0x1f4;return function(_0x5577c8){logger[_0x1aa3('0x25')](_0x5577c8[_0x1aa3('0x26')]);if(_0x5577c8['name']){delete _0x5577c8[_0x1aa3('0x27')];}_0x39700d[_0x1aa3('0x19')](_0x313d8e)[_0x1aa3('0x28')](_0x5577c8);};}exports[_0x1aa3('0x29')]=function(_0x30fba1,_0x570906){var _0x465b94={},_0x765805={},_0x155514={'count':0x0,'rows':[]};var _0x4bec54=_[_0x1aa3('0x2a')](db[_0x1aa3('0x2b')]['rawAttributes'],function(_0x491fde){return{'name':_0x491fde[_0x1aa3('0x2c')],'type':_0x491fde[_0x1aa3('0x2d')]['key']};});_0x765805[_0x1aa3('0x2e')]=_[_0x1aa3('0x2a')](_0x4bec54,'name');_0x765805['query']=_['keys'](_0x30fba1[_0x1aa3('0x2f')]);_0x765805[_0x1aa3('0x30')]=_[_0x1aa3('0x31')](_0x765805[_0x1aa3('0x2e')],_0x765805[_0x1aa3('0x2f')]);_0x465b94[_0x1aa3('0x32')]=_[_0x1aa3('0x31')](_0x765805[_0x1aa3('0x2e')],qs[_0x1aa3('0x33')](_0x30fba1[_0x1aa3('0x2f')][_0x1aa3('0x33')]));_0x465b94[_0x1aa3('0x32')]=_0x465b94[_0x1aa3('0x32')]['length']?_0x465b94['attributes']:_0x765805['model'];if(!_0x30fba1[_0x1aa3('0x2f')]['hasOwnProperty'](_0x1aa3('0x34'))){_0x465b94['limit']=qs['limit'](_0x30fba1[_0x1aa3('0x2f')]['limit']);_0x465b94[_0x1aa3('0x1c')]=qs[_0x1aa3('0x1c')](_0x30fba1[_0x1aa3('0x2f')][_0x1aa3('0x1c')]);}_0x465b94[_0x1aa3('0x35')]=qs['sort'](_0x30fba1['query'][_0x1aa3('0x36')]);_0x465b94[_0x1aa3('0x37')]=qs[_0x1aa3('0x30')](_[_0x1aa3('0x38')](_0x30fba1[_0x1aa3('0x2f')],_0x765805[_0x1aa3('0x30')]),_0x4bec54);if(_0x30fba1[_0x1aa3('0x2f')][_0x1aa3('0x39')]){_0x465b94[_0x1aa3('0x37')]=_[_0x1aa3('0x3a')](_0x465b94[_0x1aa3('0x37')],{'$or':_['map'](_0x4bec54,function(_0x19830a){if(_0x19830a[_0x1aa3('0x2d')]!==_0x1aa3('0x3b')){var _0x21d7ee={};_0x21d7ee[_0x19830a[_0x1aa3('0x27')]]={'$like':'%'+_0x30fba1[_0x1aa3('0x2f')][_0x1aa3('0x39')]+'%'};return _0x21d7ee;}})});}_0x465b94=_[_0x1aa3('0x3a')]({},_0x465b94,_0x30fba1[_0x1aa3('0x3c')]);var _0x5c7f67={'where':_0x465b94[_0x1aa3('0x37')]};return db[_0x1aa3('0x2b')]['count'](_0x5c7f67)[_0x1aa3('0x24')](function(_0x570b4a){_0x155514[_0x1aa3('0x1e')]=_0x570b4a;if(_0x30fba1[_0x1aa3('0x2f')][_0x1aa3('0x3d')]){_0x465b94[_0x1aa3('0x3e')]=[{'all':!![]}];}return db['ZendeskConfiguration'][_0x1aa3('0x3f')](_0x465b94);})[_0x1aa3('0x24')](function(_0x4bb156){_0x155514[_0x1aa3('0x40')]=_0x4bb156;return _0x155514;})[_0x1aa3('0x24')](respondWithFilteredResult(_0x570906,_0x465b94))['catch'](handleError(_0x570906,null));};exports['show']=function(_0x596fa4,_0x471c47){var _0x4e5d46={'raw':![],'where':{'id':_0x596fa4['params']['id']}},_0x29083e={};_0x29083e[_0x1aa3('0x2e')]=_[_0x1aa3('0x41')](db[_0x1aa3('0x2b')][_0x1aa3('0x42')]);_0x29083e[_0x1aa3('0x2f')]=_[_0x1aa3('0x41')](_0x596fa4[_0x1aa3('0x2f')]);_0x29083e[_0x1aa3('0x30')]=_['intersection'](_0x29083e[_0x1aa3('0x2e')],_0x29083e[_0x1aa3('0x2f')]);_0x4e5d46[_0x1aa3('0x32')]=_['intersection'](_0x29083e[_0x1aa3('0x2e')],qs[_0x1aa3('0x33')](_0x596fa4[_0x1aa3('0x2f')][_0x1aa3('0x33')]));_0x4e5d46[_0x1aa3('0x32')]=_0x4e5d46[_0x1aa3('0x32')]['length']?_0x4e5d46['attributes']:_0x29083e[_0x1aa3('0x2e')];if(_0x596fa4[_0x1aa3('0x2f')][_0x1aa3('0x3d')]){_0x4e5d46['include']=[{'all':!![]}];}_0x4e5d46=_[_0x1aa3('0x3a')]({},_0x4e5d46,_0x596fa4[_0x1aa3('0x3c')]);return db[_0x1aa3('0x2b')][_0x1aa3('0x43')](_0x4e5d46)[_0x1aa3('0x24')](handleEntityNotFound(_0x471c47,null))['then'](respondWithResult(_0x471c47,null))[_0x1aa3('0x44')](handleError(_0x471c47,null));};exports[_0x1aa3('0x45')]=function(_0x265c9f,_0x169aba){return db[_0x1aa3('0x2b')][_0x1aa3('0x45')](_0x265c9f[_0x1aa3('0x46')],{})['then'](respondWithResult(_0x169aba,0xc9))[_0x1aa3('0x44')](handleError(_0x169aba,null));};exports[_0x1aa3('0x23')]=function(_0x199cfd,_0x2c98d2){if(_0x199cfd[_0x1aa3('0x46')]['id']){delete _0x199cfd['body']['id'];}return db[_0x1aa3('0x2b')]['find']({'where':{'id':_0x199cfd['params']['id']}})['then'](handleEntityNotFound(_0x2c98d2,null))[_0x1aa3('0x24')](saveUpdates(_0x199cfd['body'],null))[_0x1aa3('0x24')](respondWithResult(_0x2c98d2,null))[_0x1aa3('0x44')](handleError(_0x2c98d2,null));};exports[_0x1aa3('0x47')]=function(_0x52a09b,_0x4606a6){return db['ZendeskConfiguration'][_0x1aa3('0x43')]({'where':{'id':_0x52a09b[_0x1aa3('0x48')]['id']}})['then'](handleEntityNotFound(_0x4606a6,null))['then'](removeEntity(_0x4606a6,null))[_0x1aa3('0x44')](handleError(_0x4606a6,null));};exports[_0x1aa3('0x49')]=function(_0x3b0b69,_0x5b0138,_0x1e4a4a){var _0x4db02b={};var _0xda902b={};var _0x501dac;var _0x5e188a;return db[_0x1aa3('0x2b')][_0x1aa3('0x4a')]({'where':{'id':_0x3b0b69[_0x1aa3('0x48')]['id']}})[_0x1aa3('0x24')](handleEntityNotFound(_0x5b0138,null))[_0x1aa3('0x24')](function(_0x1beb20){if(_0x1beb20){_0x501dac=_0x1beb20;_0xda902b[_0x1aa3('0x2e')]=_[_0x1aa3('0x41')](db[_0x1aa3('0x4b')]['rawAttributes']);_0xda902b[_0x1aa3('0x2f')]=_[_0x1aa3('0x41')](_0x3b0b69[_0x1aa3('0x2f')]);_0xda902b[_0x1aa3('0x30')]=_[_0x1aa3('0x31')](_0xda902b[_0x1aa3('0x2e')],_0xda902b[_0x1aa3('0x2f')]);_0x4db02b[_0x1aa3('0x32')]=_[_0x1aa3('0x31')](_0xda902b[_0x1aa3('0x2e')],qs[_0x1aa3('0x33')](_0x3b0b69[_0x1aa3('0x2f')]['fields']));_0x4db02b[_0x1aa3('0x32')]=_0x4db02b[_0x1aa3('0x32')]['length']?_0x4db02b['attributes']:_0xda902b[_0x1aa3('0x2e')];_0x4db02b[_0x1aa3('0x35')]=qs['sort'](_0x3b0b69[_0x1aa3('0x2f')][_0x1aa3('0x36')]);_0x4db02b[_0x1aa3('0x37')]=qs[_0x1aa3('0x30')](_[_0x1aa3('0x38')](_0x3b0b69[_0x1aa3('0x2f')],_0xda902b['filters']));if(_0x3b0b69[_0x1aa3('0x2f')][_0x1aa3('0x39')]){_0x4db02b['where']=_[_0x1aa3('0x3a')](_0x4db02b[_0x1aa3('0x37')],{'$or':_['map'](_0x4db02b[_0x1aa3('0x32')],function(_0x364d5f){var _0x27720f={};_0x27720f[_0x364d5f]={'$like':'%'+_0x3b0b69[_0x1aa3('0x2f')][_0x1aa3('0x39')]+'%'};return _0x27720f;})});}_0x4db02b=_[_0x1aa3('0x3a')]({},_0x4db02b,_0x3b0b69['options']);return _0x501dac[_0x1aa3('0x49')](_0x4db02b);}})['then'](function(_0x7610ee){if(_0x7610ee){_0x5e188a=_0x7610ee[_0x1aa3('0x4c')];if(!_0x3b0b69[_0x1aa3('0x2f')][_0x1aa3('0x4d')]('nolimit')){_0x4db02b[_0x1aa3('0x4e')]=qs[_0x1aa3('0x4e')](_0x3b0b69[_0x1aa3('0x2f')]['limit']);_0x4db02b[_0x1aa3('0x1c')]=qs[_0x1aa3('0x1c')](_0x3b0b69[_0x1aa3('0x2f')][_0x1aa3('0x1c')]);}return _0x501dac[_0x1aa3('0x49')](_0x4db02b);}})['then'](function(_0x8d0ba5){if(_0x8d0ba5){return _0x8d0ba5?{'count':_0x5e188a,'rows':_0x8d0ba5}:null;}})['then'](respondWithResult(_0x5b0138,null))['catch'](handleError(_0x5b0138,null));};exports[_0x1aa3('0x4f')]=function(_0x561acf,_0x374a42,_0x4b35ec){var _0x4dfaa4={};var _0x1530ca={};var _0x576c3b;var _0x280745;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x561acf[_0x1aa3('0x48')]['id']}})[_0x1aa3('0x24')](handleEntityNotFound(_0x374a42,null))[_0x1aa3('0x24')](function(_0x383a4a){if(_0x383a4a){_0x576c3b=_0x383a4a;_0x1530ca[_0x1aa3('0x2e')]=_[_0x1aa3('0x41')](db[_0x1aa3('0x4b')]['rawAttributes']);_0x1530ca['query']=_[_0x1aa3('0x41')](_0x561acf[_0x1aa3('0x2f')]);_0x1530ca[_0x1aa3('0x30')]=_[_0x1aa3('0x31')](_0x1530ca['model'],_0x1530ca['query']);_0x4dfaa4[_0x1aa3('0x32')]=_[_0x1aa3('0x31')](_0x1530ca[_0x1aa3('0x2e')],qs[_0x1aa3('0x33')](_0x561acf[_0x1aa3('0x2f')][_0x1aa3('0x33')]));_0x4dfaa4['attributes']=_0x4dfaa4[_0x1aa3('0x32')][_0x1aa3('0x4c')]?_0x4dfaa4[_0x1aa3('0x32')]:_0x1530ca[_0x1aa3('0x2e')];_0x4dfaa4[_0x1aa3('0x35')]=qs[_0x1aa3('0x36')](_0x561acf['query']['sort']);_0x4dfaa4['where']=qs[_0x1aa3('0x30')](_[_0x1aa3('0x38')](_0x561acf[_0x1aa3('0x2f')],_0x1530ca['filters']));if(_0x561acf[_0x1aa3('0x2f')]['filter']){_0x4dfaa4['where']=_[_0x1aa3('0x3a')](_0x4dfaa4[_0x1aa3('0x37')],{'$or':_['map'](_0x4dfaa4['attributes'],function(_0x480333){var _0x1fa0fe={};_0x1fa0fe[_0x480333]={'$like':'%'+_0x561acf[_0x1aa3('0x2f')][_0x1aa3('0x39')]+'%'};return _0x1fa0fe;})});}_0x4dfaa4=_[_0x1aa3('0x3a')]({},_0x4dfaa4,_0x561acf[_0x1aa3('0x3c')]);return _0x576c3b[_0x1aa3('0x4f')](_0x4dfaa4);}})[_0x1aa3('0x24')](function(_0x984907){if(_0x984907){_0x280745=_0x984907[_0x1aa3('0x4c')];if(!_0x561acf[_0x1aa3('0x2f')][_0x1aa3('0x4d')](_0x1aa3('0x34'))){_0x4dfaa4[_0x1aa3('0x4e')]=qs[_0x1aa3('0x4e')](_0x561acf[_0x1aa3('0x2f')][_0x1aa3('0x4e')]);_0x4dfaa4[_0x1aa3('0x1c')]=qs[_0x1aa3('0x1c')](_0x561acf['query'][_0x1aa3('0x1c')]);}return _0x576c3b[_0x1aa3('0x4f')](_0x4dfaa4);}})[_0x1aa3('0x24')](function(_0x2f37bd){if(_0x2f37bd){return _0x2f37bd?{'count':_0x280745,'rows':_0x2f37bd}:null;}})[_0x1aa3('0x24')](respondWithResult(_0x374a42,null))['catch'](handleError(_0x374a42,null));};exports[_0x1aa3('0x50')]=function(_0x4a8b61,_0x24860e,_0x4c112f){var _0xcda20c={};var _0x5f1d41={};var _0x15bed1;var _0x472bc4;return db[_0x1aa3('0x2b')]['findOne']({'where':{'id':_0x4a8b61[_0x1aa3('0x48')]['id']}})[_0x1aa3('0x24')](handleEntityNotFound(_0x24860e,null))[_0x1aa3('0x24')](function(_0x15e9b2){if(_0x15e9b2){_0x15bed1=_0x15e9b2;_0x5f1d41[_0x1aa3('0x2e')]=_['keys'](db[_0x1aa3('0x4b')][_0x1aa3('0x42')]);_0x5f1d41[_0x1aa3('0x2f')]=_['keys'](_0x4a8b61[_0x1aa3('0x2f')]);_0x5f1d41[_0x1aa3('0x30')]=_[_0x1aa3('0x31')](_0x5f1d41[_0x1aa3('0x2e')],_0x5f1d41[_0x1aa3('0x2f')]);_0xcda20c[_0x1aa3('0x32')]=_['intersection'](_0x5f1d41[_0x1aa3('0x2e')],qs[_0x1aa3('0x33')](_0x4a8b61[_0x1aa3('0x2f')][_0x1aa3('0x33')]));_0xcda20c[_0x1aa3('0x32')]=_0xcda20c['attributes'][_0x1aa3('0x4c')]?_0xcda20c['attributes']:_0x5f1d41[_0x1aa3('0x2e')];_0xcda20c[_0x1aa3('0x35')]=qs[_0x1aa3('0x36')](_0x4a8b61['query'][_0x1aa3('0x36')]);_0xcda20c[_0x1aa3('0x37')]=qs[_0x1aa3('0x30')](_[_0x1aa3('0x38')](_0x4a8b61[_0x1aa3('0x2f')],_0x5f1d41['filters']));if(_0x4a8b61[_0x1aa3('0x2f')][_0x1aa3('0x39')]){_0xcda20c[_0x1aa3('0x37')]=_['merge'](_0xcda20c[_0x1aa3('0x37')],{'$or':_[_0x1aa3('0x2a')](_0xcda20c[_0x1aa3('0x32')],function(_0x41113f){var _0x11a7dc={};_0x11a7dc[_0x41113f]={'$like':'%'+_0x4a8b61[_0x1aa3('0x2f')][_0x1aa3('0x39')]+'%'};return _0x11a7dc;})});}_0xcda20c=_[_0x1aa3('0x3a')]({},_0xcda20c,_0x4a8b61[_0x1aa3('0x3c')]);return _0x15bed1[_0x1aa3('0x50')](_0xcda20c);}})[_0x1aa3('0x24')](function(_0x5cfc4e){if(_0x5cfc4e){_0x472bc4=_0x5cfc4e['length'];if(!_0x4a8b61[_0x1aa3('0x2f')][_0x1aa3('0x4d')]('nolimit')){_0xcda20c[_0x1aa3('0x4e')]=qs['limit'](_0x4a8b61['query'][_0x1aa3('0x4e')]);_0xcda20c[_0x1aa3('0x1c')]=qs['offset'](_0x4a8b61[_0x1aa3('0x2f')][_0x1aa3('0x1c')]);}return _0x15bed1[_0x1aa3('0x50')](_0xcda20c);}})[_0x1aa3('0x24')](function(_0x95c9d5){if(_0x95c9d5){return _0x95c9d5?{'count':_0x472bc4,'rows':_0x95c9d5}:null;}})[_0x1aa3('0x24')](respondWithResult(_0x24860e,null))[_0x1aa3('0x44')](handleError(_0x24860e,null));};exports['getTags']=function(_0x487fcf,_0x5ad807,_0x36a615){var _0x57ac17={};var _0x4d8aa2={};var _0x4f2d24;var _0x42196e;return db[_0x1aa3('0x2b')][_0x1aa3('0x4a')]({'where':{'id':_0x487fcf[_0x1aa3('0x48')]['id']}})[_0x1aa3('0x24')](handleEntityNotFound(_0x5ad807,null))[_0x1aa3('0x24')](function(_0x12b9c4){if(_0x12b9c4){_0x4f2d24=_0x12b9c4;_0x4d8aa2[_0x1aa3('0x2e')]=_[_0x1aa3('0x41')](db[_0x1aa3('0x51')][_0x1aa3('0x42')]);_0x4d8aa2[_0x1aa3('0x2f')]=_[_0x1aa3('0x41')](_0x487fcf[_0x1aa3('0x2f')]);_0x4d8aa2[_0x1aa3('0x30')]=_[_0x1aa3('0x31')](_0x4d8aa2[_0x1aa3('0x2e')],_0x4d8aa2[_0x1aa3('0x2f')]);_0x57ac17[_0x1aa3('0x32')]=_[_0x1aa3('0x31')](_0x4d8aa2[_0x1aa3('0x2e')],qs[_0x1aa3('0x33')](_0x487fcf[_0x1aa3('0x2f')][_0x1aa3('0x33')]));_0x57ac17[_0x1aa3('0x32')]=_0x57ac17[_0x1aa3('0x32')][_0x1aa3('0x4c')]?_0x57ac17[_0x1aa3('0x32')]:_0x4d8aa2[_0x1aa3('0x2e')];_0x57ac17[_0x1aa3('0x35')]=qs[_0x1aa3('0x36')](_0x487fcf[_0x1aa3('0x2f')][_0x1aa3('0x36')]);_0x57ac17[_0x1aa3('0x37')]=qs[_0x1aa3('0x30')](_[_0x1aa3('0x38')](_0x487fcf[_0x1aa3('0x2f')],_0x4d8aa2['filters']));if(_0x487fcf['query'][_0x1aa3('0x39')]){_0x57ac17['where']=_[_0x1aa3('0x3a')](_0x57ac17[_0x1aa3('0x37')],{'$or':_[_0x1aa3('0x2a')](_0x57ac17[_0x1aa3('0x32')],function(_0x5219a6){var _0x58ae72={};_0x58ae72[_0x5219a6]={'$like':'%'+_0x487fcf[_0x1aa3('0x2f')]['filter']+'%'};return _0x58ae72;})});}_0x57ac17=_['merge']({},_0x57ac17,_0x487fcf[_0x1aa3('0x3c')]);return _0x4f2d24['getTags'](_0x57ac17);}})[_0x1aa3('0x24')](function(_0x5e32f8){if(_0x5e32f8){_0x42196e=_0x5e32f8['length'];if(!_0x487fcf[_0x1aa3('0x2f')][_0x1aa3('0x4d')](_0x1aa3('0x34'))){_0x57ac17[_0x1aa3('0x4e')]=qs[_0x1aa3('0x4e')](_0x487fcf['query'][_0x1aa3('0x4e')]);_0x57ac17[_0x1aa3('0x1c')]=qs['offset'](_0x487fcf[_0x1aa3('0x2f')][_0x1aa3('0x1c')]);}return _0x4f2d24['getTags'](_0x57ac17);}})['then'](function(_0x2fd78b){if(_0x2fd78b){return _0x2fd78b?{'count':_0x42196e,'rows':_0x2fd78b}:null;}})[_0x1aa3('0x24')](respondWithResult(_0x5ad807,null))[_0x1aa3('0x44')](handleError(_0x5ad807,null));};exports[_0x1aa3('0x52')]=function(_0xd899be,_0x2c93c3,_0x668c5d){if(_0xd899be[_0x1aa3('0x46')]['id']){delete _0xd899be[_0x1aa3('0x46')]['id'];}return db[_0x1aa3('0x2b')][_0x1aa3('0x4a')]({'where':{'id':_0xd899be[_0x1aa3('0x48')]['id']}})[_0x1aa3('0x24')](handleEntityNotFound(_0x2c93c3,null))[_0x1aa3('0x24')](function(_0x2883f0){if(_0x2883f0){return _0x2883f0[_0x1aa3('0x52')](_0xd899be[_0x1aa3('0x46')][_0x1aa3('0x53')]||[]);}return null;})['then'](respondWithResult(_0x2c93c3,null))[_0x1aa3('0x44')](handleError(_0x2c93c3,null));};
\ No newline at end of file
index fad354d..cbcb327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe605=['exports','define','int_zendesk_configurations','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes'];(function(_0x27b32e,_0xf515b4){var _0x644883=function(_0x32cd35){while(--_0x32cd35){_0x27b32e['push'](_0x27b32e['shift']());}};_0x644883(++_0xf515b4);}(_0xe605,0x92));var _0x5e60=function(_0x57bc99,_0x3ab973){_0x57bc99=_0x57bc99-0x0;var _0x55ab4c=_0xe605[_0x57bc99];return _0x55ab4c;};'use strict';var _=require(_0x5e60('0x0'));var util=require(_0x5e60('0x1'));var logger=require('../../config/logger')(_0x5e60('0x2'));var moment=require(_0x5e60('0x3'));var BPromise=require(_0x5e60('0x4'));var rp=require(_0x5e60('0x5'));var fs=require('fs');var path=require(_0x5e60('0x6'));var rimraf=require(_0x5e60('0x7'));var config=require(_0x5e60('0x8'));var attributes=require(_0x5e60('0x9'));module[_0x5e60('0xa')]=function(_0xc41535,_0x1d4a08){return _0xc41535[_0x5e60('0xb')]('ZendeskConfiguration',attributes,{'tableName':_0x5e60('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7334=['exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes'];(function(_0x4695ba,_0x5a7f2a){var _0x524b7d=function(_0xfc9707){while(--_0xfc9707){_0x4695ba['push'](_0x4695ba['shift']());}};_0x524b7d(++_0x5a7f2a);}(_0x7334,0x184));var _0x4733=function(_0x13c326,_0x3d77b4){_0x13c326=_0x13c326-0x0;var _0xaa5ba3=_0x7334[_0x13c326];return _0xaa5ba3;};'use strict';var _=require(_0x4733('0x0'));var util=require(_0x4733('0x1'));var logger=require(_0x4733('0x2'))('api');var moment=require('moment');var BPromise=require(_0x4733('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4733('0x4'));var rimraf=require(_0x4733('0x5'));var config=require(_0x4733('0x6'));var attributes=require(_0x4733('0x7'));module[_0x4733('0x8')]=function(_0x449ead,_0x16d7cc){return _0x449ead[_0x4733('0x9')](_0x4733('0xa'),attributes,{'tableName':_0x4733('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 97e3005..51f5883 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd289=['result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','info','request\x20sent','debug','stringify','error','ZendeskConfiguration,\x20%s,\x20%s','message'];(function(_0x38e5a3,_0x51c02c){var _0x1cdda3=function(_0x1fd301){while(--_0x1fd301){_0x38e5a3['push'](_0x38e5a3['shift']());}};_0x1cdda3(++_0x51c02c);}(_0xd289,0x1cd));var _0x9d28=function(_0x26236f,_0x36916c){_0x26236f=_0x26236f-0x0;var _0x11c59f=_0xd289[_0x26236f];return _0x11c59f;};'use strict';var _=require(_0x9d28('0x0'));var util=require(_0x9d28('0x1'));var moment=require(_0x9d28('0x2'));var BPromise=require(_0x9d28('0x3'));var rs=require(_0x9d28('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9d28('0x5'))['db'];var utils=require(_0x9d28('0x6'));var logger=require(_0x9d28('0x7'))(_0x9d28('0x8'));var config=require(_0x9d28('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x117c32,_0x451f74,_0x3f0206){return new BPromise(function(_0x38b4e3,_0x280f7b){return client[_0x9d28('0xa')](_0x117c32,_0x3f0206)[_0x9d28('0xb')](function(_0x29643d){logger[_0x9d28('0xc')]('ZendeskConfiguration,\x20%s,\x20%s',_0x451f74,_0x9d28('0xd'));logger[_0x9d28('0xe')]('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x451f74,_0x9d28('0xd'),JSON[_0x9d28('0xf')](_0x29643d));if(_0x29643d['error']){if(_0x29643d[_0x9d28('0x10')]['code']===0x1f4){logger[_0x9d28('0x10')](_0x9d28('0x11'),_0x451f74,_0x29643d[_0x9d28('0x10')][_0x9d28('0x12')]);return _0x280f7b(_0x29643d[_0x9d28('0x10')][_0x9d28('0x12')]);}logger[_0x9d28('0x10')](_0x9d28('0x11'),_0x451f74,_0x29643d[_0x9d28('0x10')][_0x9d28('0x12')]);return _0x38b4e3(_0x29643d[_0x9d28('0x10')]['message']);}else{logger[_0x9d28('0xc')](_0x9d28('0x11'),_0x451f74,_0x9d28('0xd'));_0x38b4e3(_0x29643d[_0x9d28('0x13')][_0x9d28('0x12')]);}})['catch'](function(_0x33b461){logger[_0x9d28('0x10')](_0x9d28('0x11'),_0x451f74,_0x33b461);_0x280f7b(_0x33b461);});});}
\ No newline at end of file
+var _0x0ebc=['code','message','result','catch','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error'];(function(_0x4d4058,_0x43085c){var _0x1529ec=function(_0x254e77){while(--_0x254e77){_0x4d4058['push'](_0x4d4058['shift']());}};_0x1529ec(++_0x43085c);}(_0x0ebc,0x115));var _0xc0eb=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0ebc[_0x2641f9];return _0x585741;};'use strict';var _=require('lodash');var util=require(_0xc0eb('0x0'));var moment=require(_0xc0eb('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc0eb('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xc0eb('0x3'));var logger=require(_0xc0eb('0x4'))(_0xc0eb('0x5'));var config=require(_0xc0eb('0x6'));var jayson=require(_0xc0eb('0x7'));var client=jayson[_0xc0eb('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f891b,_0x22d71a,_0x279fa6){return new BPromise(function(_0x4836d3,_0x3947f0){return client[_0xc0eb('0x9')](_0x1f891b,_0x279fa6)[_0xc0eb('0xa')](function(_0x40973e){logger[_0xc0eb('0xb')](_0xc0eb('0xc'),_0x22d71a,_0xc0eb('0xd'));logger[_0xc0eb('0xe')](_0xc0eb('0xf'),_0x22d71a,_0xc0eb('0xd'),JSON['stringify'](_0x40973e));if(_0x40973e[_0xc0eb('0x10')]){if(_0x40973e[_0xc0eb('0x10')][_0xc0eb('0x11')]===0x1f4){logger[_0xc0eb('0x10')](_0xc0eb('0xc'),_0x22d71a,_0x40973e['error'][_0xc0eb('0x12')]);return _0x3947f0(_0x40973e[_0xc0eb('0x10')][_0xc0eb('0x12')]);}logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x22d71a,_0x40973e[_0xc0eb('0x10')][_0xc0eb('0x12')]);return _0x4836d3(_0x40973e[_0xc0eb('0x10')]['message']);}else{logger[_0xc0eb('0xb')](_0xc0eb('0xc'),_0x22d71a,'request\x20sent');_0x4836d3(_0x40973e[_0xc0eb('0x13')]['message']);}})[_0xc0eb('0x14')](function(_0x20d8fc){logger[_0xc0eb('0x10')]('ZendeskConfiguration,\x20%s,\x20%s',_0x22d71a,_0x20d8fc);_0x3947f0(_0x20d8fc);});});}
\ No newline at end of file
index 53150ab..ff72b38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d8a=['get','/:id','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskField.controller','isAuthenticated','index'];(function(_0x337388,_0x4aa66c){var _0x406db9=function(_0x51e489){while(--_0x51e489){_0x337388['push'](_0x337388['shift']());}};_0x406db9(++_0x4aa66c);}(_0x7d8a,0xff));var _0xa7d8=function(_0x28aea5,_0x3bb12e){_0x28aea5=_0x28aea5-0x0;var _0x6a55f9=_0x7d8a[_0x28aea5];return _0x6a55f9;};'use strict';var multer=require(_0xa7d8('0x0'));var util=require(_0xa7d8('0x1'));var path=require('path');var timeout=require(_0xa7d8('0x2'));var express=require(_0xa7d8('0x3'));var router=express[_0xa7d8('0x4')]();var fs_extra=require(_0xa7d8('0x5'));var auth=require(_0xa7d8('0x6'));var interaction=require(_0xa7d8('0x7'));var config=require('../../config/environment');var controller=require(_0xa7d8('0x8'));router['get']('/',auth[_0xa7d8('0x9')](),controller[_0xa7d8('0xa')]);router[_0xa7d8('0xb')](_0xa7d8('0xc'),auth[_0xa7d8('0x9')](),controller['show']);router[_0xa7d8('0xd')]('/',auth[_0xa7d8('0x9')](),controller[_0xa7d8('0xe')]);router[_0xa7d8('0xf')]('/:id',auth[_0xa7d8('0x9')](),controller[_0xa7d8('0x10')]);router[_0xa7d8('0x11')](_0xa7d8('0xc'),auth['isAuthenticated'](),controller[_0xa7d8('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xb335=['Router','fs-extra','../../components/interaction/service','./intZendeskField.controller','get','index','isAuthenticated','show','create','put','update','/:id','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xb335,0xf2));var _0x5b33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb335[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x5b33('0x0'));var util=require(_0x5b33('0x1'));var path=require(_0x5b33('0x2'));var timeout=require(_0x5b33('0x3'));var express=require(_0x5b33('0x4'));var router=express[_0x5b33('0x5')]();var fs_extra=require(_0x5b33('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x5b33('0x7'));var config=require('../../config/environment');var controller=require(_0x5b33('0x8'));router[_0x5b33('0x9')]('/',auth['isAuthenticated'](),controller[_0x5b33('0xa')]);router[_0x5b33('0x9')]('/:id',auth[_0x5b33('0xb')](),controller[_0x5b33('0xc')]);router['post']('/',auth[_0x5b33('0xb')](),controller[_0x5b33('0xd')]);router[_0x5b33('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x5b33('0xf')]);router['delete'](_0x5b33('0x10'),auth['isAuthenticated'](),controller[_0x5b33('0x11')]);module[_0x5b33('0x12')]=router;
\ No newline at end of file
index 264fb9b..6ed827d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14af=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize','exports'];(function(_0x4c440b,_0x3ea627){var _0x2d48cf=function(_0x56bac7){while(--_0x56bac7){_0x4c440b['push'](_0x4c440b['shift']());}};_0x2d48cf(++_0x3ea627);}(_0x14af,0x85));var _0xf14a=function(_0x4b216b,_0xa2909c){_0x4b216b=_0x4b216b-0x0;var _0x375163=_0x14af[_0x4b216b];return _0x375163;};'use strict';var Sequelize=require(_0xf14a('0x0'));module[_0xf14a('0x1')]={'type':{'type':Sequelize[_0xf14a('0x2')](_0xf14a('0x3'),_0xf14a('0x4'),_0xf14a('0x5'),_0xf14a('0x6'),_0xf14a('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0xf14a('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xf14a('0x3'),_0xf14a('0x4'),_0xf14a('0x5'))},'keyContent':{'type':Sequelize[_0xf14a('0x8')]},'idField':{'type':Sequelize[_0xf14a('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf14a('0x8')]}};
\ No newline at end of file
+var _0xcf03=['sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN'];(function(_0x4bc764,_0x29a439){var _0x3b240b=function(_0x49ffc2){while(--_0x49ffc2){_0x4bc764['push'](_0x4bc764['shift']());}};_0x3b240b(++_0x29a439);}(_0xcf03,0x10e));var _0x3cf0=function(_0x43f860,_0x35f82b){_0x43f860=_0x43f860-0x0;var _0x67e360=_0xcf03[_0x43f860];return _0x67e360;};'use strict';var Sequelize=require(_0x3cf0('0x0'));module[_0x3cf0('0x1')]={'type':{'type':Sequelize[_0x3cf0('0x2')](_0x3cf0('0x3'),_0x3cf0('0x4'),_0x3cf0('0x5'),_0x3cf0('0x6'),_0x3cf0('0x7')),'defaultValue':_0x3cf0('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x3cf0('0x2')](_0x3cf0('0x3'),_0x3cf0('0x4'),_0x3cf0('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x3cf0('0x8')]},'customField':{'type':Sequelize[_0x3cf0('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3cf0('0x8')]}};
\ No newline at end of file
index 506be2d..1710fb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb162=['end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','destroy','error','stack','index','map','ZendeskField','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','then','findAll','rows','show','includeAll','include','options','find','catch','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','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','../../mysqldb','sendStatus','status'];(function(_0x285154,_0xad3651){var _0x472725=function(_0x3f5393){while(--_0x3f5393){_0x285154['push'](_0x285154['shift']());}};_0x472725(++_0xad3651);}(_0xb162,0x110));var _0x2b16=function(_0x3a4185,_0x63e96e){_0x3a4185=_0x3a4185-0x0;var _0x4866cf=_0xb162[_0x3a4185];return _0x4866cf;};'use strict';var emlformat=require(_0x2b16('0x0'));var rimraf=require(_0x2b16('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2b16('0x2'));var rp=require(_0x2b16('0x3'));var moment=require(_0x2b16('0x4'));var BPromise=require(_0x2b16('0x5'));var Mustache=require(_0x2b16('0x6'));var util=require(_0x2b16('0x7'));var path=require(_0x2b16('0x8'));var sox=require(_0x2b16('0x9'));var csv=require(_0x2b16('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2b16('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2b16('0xc'));var jsforce=require(_0x2b16('0xd'));var deskjs=require(_0x2b16('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2b16('0xf'));var Papa=require(_0x2b16('0x10'));var Redis=require('ioredis');var authService=require(_0x2b16('0x11'));var qs=require(_0x2b16('0x12'));var as=require(_0x2b16('0x13'));var hardwareService=require(_0x2b16('0x14'));var logger=require(_0x2b16('0x15'))(_0x2b16('0x16'));var utils=require(_0x2b16('0x17'));var config=require(_0x2b16('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x2b16('0x19'))['db'];function respondWithStatusCode(_0x2270cc,_0x29f1b8){_0x29f1b8=_0x29f1b8||0xcc;return function(_0x49626c){if(_0x49626c){return _0x2270cc[_0x2b16('0x1a')](_0x29f1b8);}return _0x2270cc[_0x2b16('0x1b')](_0x29f1b8)[_0x2b16('0x1c')]();};}function respondWithResult(_0x5a45a4,_0x30614f){_0x30614f=_0x30614f||0xc8;return function(_0x237f4a){if(_0x237f4a){return _0x5a45a4[_0x2b16('0x1b')](_0x30614f)[_0x2b16('0x1d')](_0x237f4a);}};}function respondWithFilteredResult(_0x5aeaac,_0x3378af){return function(_0x258887){if(_0x258887){var _0x515427=typeof _0x3378af[_0x2b16('0x1e')]===_0x2b16('0x1f')&&typeof _0x3378af[_0x2b16('0x20')]===_0x2b16('0x1f');var _0x34e8bf=_0x258887[_0x2b16('0x21')];var _0x49559c=_0x515427?0x0:_0x3378af[_0x2b16('0x1e')];var _0x54534a=_0x515427?_0x258887['count']:_0x3378af[_0x2b16('0x1e')]+_0x3378af[_0x2b16('0x20')];var _0x58f344;if(_0x54534a>=_0x34e8bf){_0x54534a=_0x34e8bf;_0x58f344=0xc8;}else{_0x58f344=0xce;}_0x5aeaac[_0x2b16('0x1b')](_0x58f344);return _0x5aeaac[_0x2b16('0x22')](_0x2b16('0x23'),_0x49559c+'-'+_0x54534a+'/'+_0x34e8bf)[_0x2b16('0x1d')](_0x258887);}return null;};}function patchUpdates(_0x2c9d2d){return function(_0x4411ca){try{jsonpatch[_0x2b16('0x24')](_0x4411ca,_0x2c9d2d,!![]);}catch(_0x5e0819){return BPromise[_0x2b16('0x25')](_0x5e0819);}return _0x4411ca['save']();};}function saveUpdates(_0x350cc6,_0x4903bf){return function(_0x414b16){if(_0x414b16){return _0x414b16['update'](_0x350cc6)['then'](function(_0x244929){return _0x244929;});}return null;};}function removeEntity(_0x40ce10,_0x52b0e8){return function(_0x573781){if(_0x573781){return _0x573781[_0x2b16('0x26')]()['then'](function(){_0x40ce10[_0x2b16('0x1b')](0xcc)[_0x2b16('0x1c')]();});}};}function handleEntityNotFound(_0x91b384,_0xa76e4a){return function(_0x3bc92b){if(!_0x3bc92b){_0x91b384[_0x2b16('0x1a')](0x194);}return _0x3bc92b;};}function handleError(_0x540266,_0x54381a){_0x54381a=_0x54381a||0x1f4;return function(_0x2b0404){logger[_0x2b16('0x27')](_0x2b0404[_0x2b16('0x28')]);if(_0x2b0404['name']){delete _0x2b0404['name'];}_0x540266[_0x2b16('0x1b')](_0x54381a)['send'](_0x2b0404);};}exports[_0x2b16('0x29')]=function(_0x4cf7ed,_0x2908f5){var _0x595df4={},_0x5a21a4={},_0x26f895={'count':0x0,'rows':[]};var _0x3c543b=_[_0x2b16('0x2a')](db[_0x2b16('0x2b')][_0x2b16('0x2c')],function(_0x2819cd){return{'name':_0x2819cd[_0x2b16('0x2d')],'type':_0x2819cd[_0x2b16('0x2e')][_0x2b16('0x2f')]};});_0x5a21a4[_0x2b16('0x30')]=_[_0x2b16('0x2a')](_0x3c543b,_0x2b16('0x31'));_0x5a21a4[_0x2b16('0x32')]=_[_0x2b16('0x33')](_0x4cf7ed[_0x2b16('0x32')]);_0x5a21a4[_0x2b16('0x34')]=_['intersection'](_0x5a21a4[_0x2b16('0x30')],_0x5a21a4[_0x2b16('0x32')]);_0x595df4['attributes']=_[_0x2b16('0x35')](_0x5a21a4[_0x2b16('0x30')],qs[_0x2b16('0x36')](_0x4cf7ed[_0x2b16('0x32')][_0x2b16('0x36')]));_0x595df4[_0x2b16('0x37')]=_0x595df4[_0x2b16('0x37')][_0x2b16('0x38')]?_0x595df4[_0x2b16('0x37')]:_0x5a21a4[_0x2b16('0x30')];if(!_0x4cf7ed[_0x2b16('0x32')][_0x2b16('0x39')](_0x2b16('0x3a'))){_0x595df4[_0x2b16('0x20')]=qs[_0x2b16('0x20')](_0x4cf7ed[_0x2b16('0x32')][_0x2b16('0x20')]);_0x595df4[_0x2b16('0x1e')]=qs[_0x2b16('0x1e')](_0x4cf7ed['query']['offset']);}_0x595df4['order']=qs[_0x2b16('0x3b')](_0x4cf7ed[_0x2b16('0x32')][_0x2b16('0x3b')]);_0x595df4[_0x2b16('0x3c')]=qs[_0x2b16('0x34')](_['pick'](_0x4cf7ed[_0x2b16('0x32')],_0x5a21a4[_0x2b16('0x34')]),_0x3c543b);if(_0x4cf7ed[_0x2b16('0x32')][_0x2b16('0x3d')]){_0x595df4[_0x2b16('0x3c')]=_[_0x2b16('0x3e')](_0x595df4[_0x2b16('0x3c')],{'$or':_[_0x2b16('0x2a')](_0x3c543b,function(_0x378e5b){if(_0x378e5b[_0x2b16('0x2e')]!=='VIRTUAL'){var _0x376ffb={};_0x376ffb[_0x378e5b['name']]={'$like':'%'+_0x4cf7ed['query'][_0x2b16('0x3d')]+'%'};return _0x376ffb;}})});}_0x595df4=_[_0x2b16('0x3e')]({},_0x595df4,_0x4cf7ed['options']);var _0x2288b5={'where':_0x595df4['where']};return db[_0x2b16('0x2b')]['count'](_0x2288b5)[_0x2b16('0x3f')](function(_0x1a9a3a){_0x26f895['count']=_0x1a9a3a;if(_0x4cf7ed['query']['includeAll']){_0x595df4['include']=[{'all':!![]}];}return db['ZendeskField'][_0x2b16('0x40')](_0x595df4);})['then'](function(_0x1a6dcd){_0x26f895[_0x2b16('0x41')]=_0x1a6dcd;return _0x26f895;})[_0x2b16('0x3f')](respondWithFilteredResult(_0x2908f5,_0x595df4))['catch'](handleError(_0x2908f5,null));};exports[_0x2b16('0x42')]=function(_0x5b1a1d,_0x3f142e){var _0x1701a4={'raw':!![],'where':{'id':_0x5b1a1d['params']['id']}},_0x14c482={};_0x14c482[_0x2b16('0x30')]=_[_0x2b16('0x33')](db[_0x2b16('0x2b')]['rawAttributes']);_0x14c482['query']=_[_0x2b16('0x33')](_0x5b1a1d[_0x2b16('0x32')]);_0x14c482[_0x2b16('0x34')]=_[_0x2b16('0x35')](_0x14c482[_0x2b16('0x30')],_0x14c482['query']);_0x1701a4[_0x2b16('0x37')]=_[_0x2b16('0x35')](_0x14c482[_0x2b16('0x30')],qs[_0x2b16('0x36')](_0x5b1a1d[_0x2b16('0x32')][_0x2b16('0x36')]));_0x1701a4[_0x2b16('0x37')]=_0x1701a4[_0x2b16('0x37')][_0x2b16('0x38')]?_0x1701a4[_0x2b16('0x37')]:_0x14c482[_0x2b16('0x30')];if(_0x5b1a1d[_0x2b16('0x32')][_0x2b16('0x43')]){_0x1701a4[_0x2b16('0x44')]=[{'all':!![]}];}_0x1701a4=_[_0x2b16('0x3e')]({},_0x1701a4,_0x5b1a1d[_0x2b16('0x45')]);return db[_0x2b16('0x2b')][_0x2b16('0x46')](_0x1701a4)[_0x2b16('0x3f')](handleEntityNotFound(_0x3f142e,null))[_0x2b16('0x3f')](respondWithResult(_0x3f142e,null))[_0x2b16('0x47')](handleError(_0x3f142e,null));};exports[_0x2b16('0x48')]=function(_0x501f84,_0x374bbc){return db[_0x2b16('0x2b')][_0x2b16('0x48')](_0x501f84[_0x2b16('0x49')],{})[_0x2b16('0x3f')](respondWithResult(_0x374bbc,0xc9))[_0x2b16('0x47')](handleError(_0x374bbc,null));};exports['update']=function(_0x37a65e,_0x2dc3d7){if(_0x37a65e[_0x2b16('0x49')]['id']){delete _0x37a65e[_0x2b16('0x49')]['id'];}return db[_0x2b16('0x2b')][_0x2b16('0x46')]({'where':{'id':_0x37a65e[_0x2b16('0x4a')]['id']}})[_0x2b16('0x3f')](handleEntityNotFound(_0x2dc3d7,null))[_0x2b16('0x3f')](saveUpdates(_0x37a65e[_0x2b16('0x49')],null))[_0x2b16('0x3f')](respondWithResult(_0x2dc3d7,null))[_0x2b16('0x47')](handleError(_0x2dc3d7,null));};exports[_0x2b16('0x26')]=function(_0x4fac59,_0x3e30eb){return db[_0x2b16('0x2b')]['find']({'where':{'id':_0x4fac59[_0x2b16('0x4a')]['id']}})[_0x2b16('0x3f')](handleEntityNotFound(_0x3e30eb,null))[_0x2b16('0x3f')](removeEntity(_0x3e30eb,null))[_0x2b16('0x47')](handleError(_0x3e30eb,null));};
\ No newline at end of file
+var _0xc1cd=['destroy','error','stack','name','send','ZendeskField','rawAttributes','fieldName','type','key','map','query','keys','filters','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','intersection','find','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../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','reject','save','update','then'];(function(_0x54a687,_0x4ce189){var _0x4b5083=function(_0x4e9dc7){while(--_0x4e9dc7){_0x54a687['push'](_0x54a687['shift']());}};_0x4b5083(++_0x4ce189);}(_0xc1cd,0x1e6));var _0xdc1c=function(_0x115c27,_0x57ed18){_0x115c27=_0x115c27-0x0;var _0x2b6431=_0xc1cd[_0x115c27];return _0x2b6431;};'use strict';var emlformat=require(_0xdc1c('0x0'));var rimraf=require(_0xdc1c('0x1'));var zipdir=require(_0xdc1c('0x2'));var jsonpatch=require(_0xdc1c('0x3'));var rp=require('request-promise');var moment=require(_0xdc1c('0x4'));var BPromise=require(_0xdc1c('0x5'));var Mustache=require('mustache');var util=require(_0xdc1c('0x6'));var path=require(_0xdc1c('0x7'));var sox=require('sox');var csv=require(_0xdc1c('0x8'));var ejs=require(_0xdc1c('0x9'));var fs=require('fs');var fs_extra=require(_0xdc1c('0xa'));var _=require(_0xdc1c('0xb'));var squel=require(_0xdc1c('0xc'));var crypto=require('crypto');var jsforce=require(_0xdc1c('0xd'));var deskjs=require(_0xdc1c('0xe'));var toCsv=require('to-csv');var querystring=require(_0xdc1c('0xf'));var Papa=require(_0xdc1c('0x10'));var Redis=require('ioredis');var authService=require(_0xdc1c('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xdc1c('0x12'));var hardwareService=require(_0xdc1c('0x13'));var logger=require(_0xdc1c('0x14'))(_0xdc1c('0x15'));var utils=require('../../config/utils');var config=require(_0xdc1c('0x16'));var licenseUtil=require(_0xdc1c('0x17'));var db=require(_0xdc1c('0x18'))['db'];function respondWithStatusCode(_0x16f013,_0x2b25ef){_0x2b25ef=_0x2b25ef||0xcc;return function(_0x1d4e86){if(_0x1d4e86){return _0x16f013[_0xdc1c('0x19')](_0x2b25ef);}return _0x16f013[_0xdc1c('0x1a')](_0x2b25ef)[_0xdc1c('0x1b')]();};}function respondWithResult(_0x544685,_0x2f1ec7){_0x2f1ec7=_0x2f1ec7||0xc8;return function(_0x1a45a9){if(_0x1a45a9){return _0x544685[_0xdc1c('0x1a')](_0x2f1ec7)[_0xdc1c('0x1c')](_0x1a45a9);}};}function respondWithFilteredResult(_0xaf1d5,_0x27842c){return function(_0x47be19){if(_0x47be19){var _0x1669c1=typeof _0x27842c[_0xdc1c('0x1d')]===_0xdc1c('0x1e')&&typeof _0x27842c[_0xdc1c('0x1f')]===_0xdc1c('0x1e');var _0x3ec757=_0x47be19[_0xdc1c('0x20')];var _0x49bc37=_0x1669c1?0x0:_0x27842c['offset'];var _0x47c609=_0x1669c1?_0x47be19[_0xdc1c('0x20')]:_0x27842c['offset']+_0x27842c[_0xdc1c('0x1f')];var _0x1abcbd;if(_0x47c609>=_0x3ec757){_0x47c609=_0x3ec757;_0x1abcbd=0xc8;}else{_0x1abcbd=0xce;}_0xaf1d5[_0xdc1c('0x1a')](_0x1abcbd);return _0xaf1d5[_0xdc1c('0x21')](_0xdc1c('0x22'),_0x49bc37+'-'+_0x47c609+'/'+_0x3ec757)[_0xdc1c('0x1c')](_0x47be19);}return null;};}function patchUpdates(_0x2b3e9d){return function(_0x315ee1){try{jsonpatch['apply'](_0x315ee1,_0x2b3e9d,!![]);}catch(_0x426498){return BPromise[_0xdc1c('0x23')](_0x426498);}return _0x315ee1[_0xdc1c('0x24')]();};}function saveUpdates(_0x546a68,_0x83d7ab){return function(_0x37d167){if(_0x37d167){return _0x37d167[_0xdc1c('0x25')](_0x546a68)[_0xdc1c('0x26')](function(_0x4c7a8f){return _0x4c7a8f;});}return null;};}function removeEntity(_0x143f6f,_0x53e296){return function(_0x24ee8e){if(_0x24ee8e){return _0x24ee8e[_0xdc1c('0x27')]()[_0xdc1c('0x26')](function(){_0x143f6f[_0xdc1c('0x1a')](0xcc)[_0xdc1c('0x1b')]();});}};}function handleEntityNotFound(_0x469b6d,_0x470a28){return function(_0x4a0085){if(!_0x4a0085){_0x469b6d[_0xdc1c('0x19')](0x194);}return _0x4a0085;};}function handleError(_0x3cd97f,_0x1f603a){_0x1f603a=_0x1f603a||0x1f4;return function(_0x16dbc6){logger[_0xdc1c('0x28')](_0x16dbc6[_0xdc1c('0x29')]);if(_0x16dbc6[_0xdc1c('0x2a')]){delete _0x16dbc6[_0xdc1c('0x2a')];}_0x3cd97f[_0xdc1c('0x1a')](_0x1f603a)[_0xdc1c('0x2b')](_0x16dbc6);};}exports['index']=function(_0xb77c16,_0x30bd89){var _0x306be2={},_0x2df256={},_0x48eb9a={'count':0x0,'rows':[]};var _0x4a320c=_['map'](db[_0xdc1c('0x2c')][_0xdc1c('0x2d')],function(_0x2fd38e){return{'name':_0x2fd38e[_0xdc1c('0x2e')],'type':_0x2fd38e[_0xdc1c('0x2f')][_0xdc1c('0x30')]};});_0x2df256['model']=_[_0xdc1c('0x31')](_0x4a320c,'name');_0x2df256[_0xdc1c('0x32')]=_[_0xdc1c('0x33')](_0xb77c16[_0xdc1c('0x32')]);_0x2df256[_0xdc1c('0x34')]=_['intersection'](_0x2df256['model'],_0x2df256['query']);_0x306be2[_0xdc1c('0x35')]=_['intersection'](_0x2df256[_0xdc1c('0x36')],qs['fields'](_0xb77c16[_0xdc1c('0x32')][_0xdc1c('0x37')]));_0x306be2[_0xdc1c('0x35')]=_0x306be2[_0xdc1c('0x35')]['length']?_0x306be2[_0xdc1c('0x35')]:_0x2df256[_0xdc1c('0x36')];if(!_0xb77c16['query'][_0xdc1c('0x38')](_0xdc1c('0x39'))){_0x306be2[_0xdc1c('0x1f')]=qs[_0xdc1c('0x1f')](_0xb77c16[_0xdc1c('0x32')][_0xdc1c('0x1f')]);_0x306be2[_0xdc1c('0x1d')]=qs['offset'](_0xb77c16[_0xdc1c('0x32')][_0xdc1c('0x1d')]);}_0x306be2[_0xdc1c('0x3a')]=qs[_0xdc1c('0x3b')](_0xb77c16[_0xdc1c('0x32')]['sort']);_0x306be2[_0xdc1c('0x3c')]=qs[_0xdc1c('0x34')](_[_0xdc1c('0x3d')](_0xb77c16[_0xdc1c('0x32')],_0x2df256[_0xdc1c('0x34')]),_0x4a320c);if(_0xb77c16['query'][_0xdc1c('0x3e')]){_0x306be2[_0xdc1c('0x3c')]=_[_0xdc1c('0x3f')](_0x306be2[_0xdc1c('0x3c')],{'$or':_[_0xdc1c('0x31')](_0x4a320c,function(_0xc527e3){if(_0xc527e3['type']!==_0xdc1c('0x40')){var _0x324615={};_0x324615[_0xc527e3['name']]={'$like':'%'+_0xb77c16[_0xdc1c('0x32')][_0xdc1c('0x3e')]+'%'};return _0x324615;}})});}_0x306be2=_[_0xdc1c('0x3f')]({},_0x306be2,_0xb77c16[_0xdc1c('0x41')]);var _0x3ab0cf={'where':_0x306be2[_0xdc1c('0x3c')]};return db['ZendeskField'][_0xdc1c('0x20')](_0x3ab0cf)[_0xdc1c('0x26')](function(_0x395461){_0x48eb9a[_0xdc1c('0x20')]=_0x395461;if(_0xb77c16['query'][_0xdc1c('0x42')]){_0x306be2[_0xdc1c('0x43')]=[{'all':!![]}];}return db[_0xdc1c('0x2c')]['findAll'](_0x306be2);})[_0xdc1c('0x26')](function(_0x131186){_0x48eb9a[_0xdc1c('0x44')]=_0x131186;return _0x48eb9a;})[_0xdc1c('0x26')](respondWithFilteredResult(_0x30bd89,_0x306be2))[_0xdc1c('0x45')](handleError(_0x30bd89,null));};exports[_0xdc1c('0x46')]=function(_0x3c3cf1,_0x4d4c93){var _0xd1ec27={'raw':!![],'where':{'id':_0x3c3cf1[_0xdc1c('0x47')]['id']}},_0x29bc80={};_0x29bc80[_0xdc1c('0x36')]=_[_0xdc1c('0x33')](db['ZendeskField'][_0xdc1c('0x2d')]);_0x29bc80[_0xdc1c('0x32')]=_[_0xdc1c('0x33')](_0x3c3cf1[_0xdc1c('0x32')]);_0x29bc80[_0xdc1c('0x34')]=_['intersection'](_0x29bc80[_0xdc1c('0x36')],_0x29bc80[_0xdc1c('0x32')]);_0xd1ec27[_0xdc1c('0x35')]=_[_0xdc1c('0x48')](_0x29bc80[_0xdc1c('0x36')],qs[_0xdc1c('0x37')](_0x3c3cf1[_0xdc1c('0x32')][_0xdc1c('0x37')]));_0xd1ec27[_0xdc1c('0x35')]=_0xd1ec27[_0xdc1c('0x35')]['length']?_0xd1ec27['attributes']:_0x29bc80[_0xdc1c('0x36')];if(_0x3c3cf1['query'][_0xdc1c('0x42')]){_0xd1ec27[_0xdc1c('0x43')]=[{'all':!![]}];}_0xd1ec27=_[_0xdc1c('0x3f')]({},_0xd1ec27,_0x3c3cf1[_0xdc1c('0x41')]);return db[_0xdc1c('0x2c')][_0xdc1c('0x49')](_0xd1ec27)[_0xdc1c('0x26')](handleEntityNotFound(_0x4d4c93,null))[_0xdc1c('0x26')](respondWithResult(_0x4d4c93,null))[_0xdc1c('0x45')](handleError(_0x4d4c93,null));};exports['create']=function(_0x3ea884,_0x4021c1){return db[_0xdc1c('0x2c')]['create'](_0x3ea884[_0xdc1c('0x4a')],{})[_0xdc1c('0x26')](respondWithResult(_0x4021c1,0xc9))['catch'](handleError(_0x4021c1,null));};exports[_0xdc1c('0x25')]=function(_0x4897e7,_0x21ecef){if(_0x4897e7['body']['id']){delete _0x4897e7[_0xdc1c('0x4a')]['id'];}return db['ZendeskField'][_0xdc1c('0x49')]({'where':{'id':_0x4897e7[_0xdc1c('0x47')]['id']}})[_0xdc1c('0x26')](handleEntityNotFound(_0x21ecef,null))[_0xdc1c('0x26')](saveUpdates(_0x4897e7[_0xdc1c('0x4a')],null))[_0xdc1c('0x26')](respondWithResult(_0x21ecef,null))[_0xdc1c('0x45')](handleError(_0x21ecef,null));};exports['destroy']=function(_0xc7c018,_0x338323){return db[_0xdc1c('0x2c')][_0xdc1c('0x49')]({'where':{'id':_0xc7c018['params']['id']}})['then'](handleEntityNotFound(_0x338323,null))[_0xdc1c('0x26')](removeEntity(_0x338323,null))[_0xdc1c('0x45')](handleError(_0x338323,null));};
\ No newline at end of file
index 2d71aa9..48fbc60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69e1=['int_zendesk_fields','zendesk_unique_index','idField','FieldId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports'];(function(_0x1e1c84,_0x121a07){var _0x46614e=function(_0x2ca946){while(--_0x2ca946){_0x1e1c84['push'](_0x1e1c84['shift']());}};_0x46614e(++_0x121a07);}(_0x69e1,0x1b1));var _0x169e=function(_0x33a428,_0x2c418d){_0x33a428=_0x33a428-0x0;var _0x3b583f=_0x69e1[_0x33a428];return _0x3b583f;};'use strict';var _=require('lodash');var util=require(_0x169e('0x0'));var logger=require(_0x169e('0x1'))(_0x169e('0x2'));var moment=require(_0x169e('0x3'));var BPromise=require(_0x169e('0x4'));var rp=require(_0x169e('0x5'));var fs=require('fs');var path=require(_0x169e('0x6'));var rimraf=require(_0x169e('0x7'));var config=require('../../config/environment');var attributes=require('./intZendeskField.attributes');module[_0x169e('0x8')]=function(_0xad4790,_0xd00bd0){return _0xad4790['define']('ZendeskField',attributes,{'tableName':_0x169e('0x9'),'paranoid':![],'indexes':[{'name':_0x169e('0xa'),'fields':[_0x169e('0xb'),_0x169e('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x01c0=['idField','FieldId','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskField.attributes','ZendeskField','int_zendesk_fields','zendesk_unique_index'];(function(_0x31d89b,_0x351c66){var _0x3ec630=function(_0x5454df){while(--_0x5454df){_0x31d89b['push'](_0x31d89b['shift']());}};_0x3ec630(++_0x351c66);}(_0x01c0,0x1f0));var _0x001c=function(_0x4c445a,_0x4ee80f){_0x4c445a=_0x4c445a-0x0;var _0x2f611c=_0x01c0[_0x4c445a];return _0x2f611c;};'use strict';var _=require('lodash');var util=require(_0x001c('0x0'));var logger=require('../../config/logger')(_0x001c('0x1'));var moment=require('moment');var BPromise=require(_0x001c('0x2'));var rp=require(_0x001c('0x3'));var fs=require('fs');var path=require(_0x001c('0x4'));var rimraf=require(_0x001c('0x5'));var config=require(_0x001c('0x6'));var attributes=require(_0x001c('0x7'));module['exports']=function(_0xffa62d,_0x32fe1e){return _0xffa62d['define'](_0x001c('0x8'),attributes,{'tableName':_0x001c('0x9'),'paranoid':![],'indexes':[{'name':_0x001c('0xa'),'fields':[_0x001c('0xb'),_0x001c('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index bd7d66b..8b268cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7309=['client','http','request','then','info','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','error','code','ZendeskField,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise'];(function(_0x3294f1,_0x6cf327){var _0x45b3b3=function(_0x14771f){while(--_0x14771f){_0x3294f1['push'](_0x3294f1['shift']());}};_0x45b3b3(++_0x6cf327);}(_0x7309,0x116));var _0x9730=function(_0x51cabc,_0x422a05){_0x51cabc=_0x51cabc-0x0;var _0x10bef4=_0x7309[_0x51cabc];return _0x10bef4;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9730('0x0'));var BPromise=require(_0x9730('0x1'));var rs=require(_0x9730('0x2'));var fs=require('fs');var Redis=require(_0x9730('0x3'));var db=require(_0x9730('0x4'))['db'];var utils=require(_0x9730('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x9730('0x6'));var jayson=require(_0x9730('0x7'));var client=jayson[_0x9730('0x8')][_0x9730('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4f2263,_0x27c318,_0x4c46c0){return new BPromise(function(_0xa03cb3,_0x3cc2f1){return client[_0x9730('0xa')](_0x4f2263,_0x4c46c0)[_0x9730('0xb')](function(_0x418d4f){logger[_0x9730('0xc')]('ZendeskField,\x20%s,\x20%s',_0x27c318,_0x9730('0xd'));logger[_0x9730('0xe')](_0x9730('0xf'),_0x27c318,_0x9730('0xd'),JSON['stringify'](_0x418d4f));if(_0x418d4f[_0x9730('0x10')]){if(_0x418d4f[_0x9730('0x10')][_0x9730('0x11')]===0x1f4){logger[_0x9730('0x10')](_0x9730('0x12'),_0x27c318,_0x418d4f[_0x9730('0x10')][_0x9730('0x13')]);return _0x3cc2f1(_0x418d4f[_0x9730('0x10')][_0x9730('0x13')]);}logger[_0x9730('0x10')](_0x9730('0x12'),_0x27c318,_0x418d4f[_0x9730('0x10')][_0x9730('0x13')]);return _0xa03cb3(_0x418d4f[_0x9730('0x10')][_0x9730('0x13')]);}else{logger[_0x9730('0xc')]('ZendeskField,\x20%s,\x20%s',_0x27c318,_0x9730('0xd'));_0xa03cb3(_0x418d4f[_0x9730('0x14')][_0x9730('0x13')]);}})[_0x9730('0x15')](function(_0x32f265){logger['error'](_0x9730('0x12'),_0x27c318,_0x32f265);_0x3cc2f1(_0x32f265);});});}
\ No newline at end of file
+var _0x990e=['then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request'];(function(_0x403115,_0x2d6d03){var _0x596ef3=function(_0x145d97){while(--_0x145d97){_0x403115['push'](_0x403115['shift']());}};_0x596ef3(++_0x2d6d03);}(_0x990e,0x14d));var _0xe990=function(_0xdc660a,_0xdb2773){_0xdc660a=_0xdc660a-0x0;var _0x45c5e5=_0x990e[_0xdc660a];return _0x45c5e5;};'use strict';var _=require(_0xe990('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe990('0x1'));var db=require(_0xe990('0x2'))['db'];var utils=require(_0xe990('0x3'));var logger=require(_0xe990('0x4'))(_0xe990('0x5'));var config=require(_0xe990('0x6'));var jayson=require(_0xe990('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x234874,_0x2b5299,_0x2f3c46){return new BPromise(function(_0x4b854d,_0x1a9006){return client[_0xe990('0x8')](_0x234874,_0x2f3c46)[_0xe990('0x9')](function(_0x41d54e){logger[_0xe990('0xa')](_0xe990('0xb'),_0x2b5299,_0xe990('0xc'));logger[_0xe990('0xd')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x2b5299,_0xe990('0xc'),JSON[_0xe990('0xe')](_0x41d54e));if(_0x41d54e['error']){if(_0x41d54e[_0xe990('0xf')][_0xe990('0x10')]===0x1f4){logger[_0xe990('0xf')](_0xe990('0xb'),_0x2b5299,_0x41d54e[_0xe990('0xf')][_0xe990('0x11')]);return _0x1a9006(_0x41d54e[_0xe990('0xf')][_0xe990('0x11')]);}logger['error'](_0xe990('0xb'),_0x2b5299,_0x41d54e[_0xe990('0xf')]['message']);return _0x4b854d(_0x41d54e[_0xe990('0xf')][_0xe990('0x11')]);}else{logger[_0xe990('0xa')](_0xe990('0xb'),_0x2b5299,'request\x20sent');_0x4b854d(_0x41d54e['result'][_0xe990('0x11')]);}})[_0xe990('0x12')](function(_0x2aefcf){logger[_0xe990('0xf')](_0xe990('0xb'),_0x2b5299,_0x2aefcf);_0x1a9006(_0x2aefcf);});});}
\ No newline at end of file
index 8735f19..e0f286c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0de=['post','addConfiguration','put','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','/:id/configurations','isAuthenticated','/:id/fields','getFields'];(function(_0x3c2a69,_0x4c8b41){var _0x596bc8=function(_0x1b4b7c){while(--_0x1b4b7c){_0x3c2a69['push'](_0x3c2a69['shift']());}};_0x596bc8(++_0x4c8b41);}(_0xc0de,0x11e));var _0xec0d=function(_0x194a79,_0x3d49ae){_0x194a79=_0x194a79-0x0;var _0x533d98=_0xc0de[_0x194a79];return _0x533d98;};'use strict';var multer=require(_0xec0d('0x0'));var util=require('util');var path=require(_0xec0d('0x1'));var timeout=require(_0xec0d('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xec0d('0x3'));var auth=require(_0xec0d('0x4'));var interaction=require(_0xec0d('0x5'));var config=require(_0xec0d('0x6'));var controller=require('./intZohoAccount.controller');router[_0xec0d('0x7')]('/',auth['isAuthenticated'](),controller[_0xec0d('0x8')]);router['get'](_0xec0d('0x9'),auth['isAuthenticated'](),controller['show']);router[_0xec0d('0x7')](_0xec0d('0xa'),auth[_0xec0d('0xb')](),controller['getConfigurations']);router[_0xec0d('0x7')](_0xec0d('0xc'),auth[_0xec0d('0xb')](),controller[_0xec0d('0xd')]);router[_0xec0d('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xec0d('0xa'),auth[_0xec0d('0xb')](),controller[_0xec0d('0xf')]);router[_0xec0d('0x10')]('/:id',auth[_0xec0d('0xb')](),controller['update']);router[_0xec0d('0x11')](_0xec0d('0x9'),auth[_0xec0d('0xb')](),controller[_0xec0d('0x12')]);module[_0xec0d('0x13')]=router;
\ No newline at end of file
+var _0x0460=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','show','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','put','/:id','update','destroy','exports'];(function(_0x53be10,_0x4dd3ee){var _0xd3a730=function(_0x5eadfd){while(--_0x5eadfd){_0x53be10['push'](_0x53be10['shift']());}};_0xd3a730(++_0x4dd3ee);}(_0x0460,0x96));var _0x0046=function(_0x175330,_0xa38af3){_0x175330=_0x175330-0x0;var _0x4d4072=_0x0460[_0x175330];return _0x4d4072;};'use strict';var multer=require('multer');var util=require(_0x0046('0x0'));var path=require(_0x0046('0x1'));var timeout=require(_0x0046('0x2'));var express=require(_0x0046('0x3'));var router=express[_0x0046('0x4')]();var fs_extra=require(_0x0046('0x5'));var auth=require(_0x0046('0x6'));var interaction=require(_0x0046('0x7'));var config=require(_0x0046('0x8'));var controller=require(_0x0046('0x9'));router[_0x0046('0xa')]('/',auth[_0x0046('0xb')](),controller[_0x0046('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x0046('0xd')]);router[_0x0046('0xa')](_0x0046('0xe'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x0046('0xa')](_0x0046('0xf'),auth['isAuthenticated'](),controller[_0x0046('0x10')]);router[_0x0046('0x11')]('/',auth['isAuthenticated'](),controller[_0x0046('0x12')]);router[_0x0046('0x11')]('/:id/configurations',auth[_0x0046('0xb')](),controller[_0x0046('0x13')]);router[_0x0046('0x14')](_0x0046('0x15'),auth[_0x0046('0xb')](),controller[_0x0046('0x16')]);router['delete']('/:id',auth[_0x0046('0xb')](),controller[_0x0046('0x17')]);module[_0x0046('0x18')]=router;
\ No newline at end of file
index 7a424a4..e4d2c94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ff3=['STRING','exports'];(function(_0x299fa,_0x47bbcb){var _0x5e57a0=function(_0x39e22e){while(--_0x39e22e){_0x299fa['push'](_0x299fa['shift']());}};_0x5e57a0(++_0x47bbcb);}(_0x5ff3,0x17d));var _0x35ff=function(_0x35e992,_0x5bda3a){_0x35e992=_0x35e992-0x0;var _0x418157=_0x5ff3[_0x35e992];return _0x418157;};'use strict';var Sequelize=require('sequelize');module[_0x35ff('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x35ff('0x1')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x35ff('0x1')]},'clientId':{'type':Sequelize[_0x35ff('0x1')]},'clientSecret':{'type':Sequelize[_0x35ff('0x1')]},'serverUrl':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x35ff('0x1')]}};
\ No newline at end of file
+var _0x9f62=['exports','STRING'];(function(_0x6b5c6e,_0x5168d2){var _0x143473=function(_0x1700c1){while(--_0x1700c1){_0x6b5c6e['push'](_0x6b5c6e['shift']());}};_0x143473(++_0x5168d2);}(_0x9f62,0x154));var _0x29f6=function(_0x36ff40,_0x2b9e76){_0x36ff40=_0x36ff40-0x0;var _0x4b4f45=_0x9f62[_0x36ff40];return _0x4b4f45;};'use strict';var Sequelize=require('sequelize');module[_0x29f6('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x29f6('0x1')]},'host':{'type':Sequelize[_0x29f6('0x1')]},'zone':{'type':Sequelize[_0x29f6('0x1')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x29f6('0x1')],'allowNull':![]},'code':{'type':Sequelize[_0x29f6('0x1')]},'refreshToken':{'type':Sequelize[_0x29f6('0x1')]}};
\ No newline at end of file
index a32f1df..6d015b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d0c=['length','nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','include','findAll','catch','params','keys','find','create','body','findOne','hasOwnProperty','getConfigurations','AccountId','Subjects','getSubjects','channel','getDescriptions','ZohoConfiguration','ZohoField','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','getFields','serverUrl','code','host','zoho.eu','com','slice','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','Calls','Zoho-oauthtoken\x20','response','Owner','Subject','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','push','custom_field','data_type','picklist','pick_list_values','getFields,\x20%s,\x20%s,\x20%s','test','statusCode','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','map','ZohoAccount','rawAttributes','type','key','model','query','intersection','attributes','fields'];(function(_0x1a80df,_0x315037){var _0x1362fc=function(_0x42a0ff){while(--_0x42a0ff){_0x1a80df['push'](_0x1a80df['shift']());}};_0x1362fc(++_0x315037);}(_0x4d0c,0x13d));var _0xc4d0=function(_0x44794a,_0x1f5482){_0x44794a=_0x44794a-0x0;var _0x5d81ae=_0x4d0c[_0x44794a];return _0x5d81ae;};'use strict';var emlformat=require(_0xc4d0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc4d0('0x1'));var jsonpatch=require(_0xc4d0('0x2'));var rp=require(_0xc4d0('0x3'));var moment=require(_0xc4d0('0x4'));var BPromise=require(_0xc4d0('0x5'));var Mustache=require(_0xc4d0('0x6'));var util=require(_0xc4d0('0x7'));var path=require('path');var sox=require(_0xc4d0('0x8'));var csv=require(_0xc4d0('0x9'));var ejs=require(_0xc4d0('0xa'));var fs=require('fs');var fs_extra=require(_0xc4d0('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc4d0('0xc'));var jsforce=require(_0xc4d0('0xd'));var deskjs=require(_0xc4d0('0xe'));var toCsv=require(_0xc4d0('0x9'));var querystring=require('querystring');var Papa=require(_0xc4d0('0xf'));var Redis=require(_0xc4d0('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc4d0('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc4d0('0x12'))(_0xc4d0('0x13'));var utils=require('../../config/utils');var config=require(_0xc4d0('0x14'));var licenseUtil=require(_0xc4d0('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0xc4d0('0x16'));function respondWithStatusCode(_0xc0fc19,_0x3eabc8){_0x3eabc8=_0x3eabc8||0xcc;return function(_0x4072f4){if(_0x4072f4){return _0xc0fc19[_0xc4d0('0x17')](_0x3eabc8);}return _0xc0fc19[_0xc4d0('0x18')](_0x3eabc8)[_0xc4d0('0x19')]();};}function respondWithResult(_0x5bc924,_0x13d13f){_0x13d13f=_0x13d13f||0xc8;return function(_0x4821ce){if(_0x4821ce){return _0x5bc924[_0xc4d0('0x18')](_0x13d13f)['json'](_0x4821ce);}};}function respondWithFilteredResult(_0x40458f,_0x326ebe){return function(_0x9e4bdb){if(_0x9e4bdb){var _0x573bab=typeof _0x326ebe[_0xc4d0('0x1a')]===_0xc4d0('0x1b')&&typeof _0x326ebe[_0xc4d0('0x1c')]===_0xc4d0('0x1b');var _0x11a3a4=_0x9e4bdb[_0xc4d0('0x1d')];var _0x30281d=_0x573bab?0x0:_0x326ebe[_0xc4d0('0x1a')];var _0x5370b9=_0x573bab?_0x9e4bdb[_0xc4d0('0x1d')]:_0x326ebe[_0xc4d0('0x1a')]+_0x326ebe[_0xc4d0('0x1c')];var _0x11d00f;if(_0x5370b9>=_0x11a3a4){_0x5370b9=_0x11a3a4;_0x11d00f=0xc8;}else{_0x11d00f=0xce;}_0x40458f[_0xc4d0('0x18')](_0x11d00f);return _0x40458f[_0xc4d0('0x1e')](_0xc4d0('0x1f'),_0x30281d+'-'+_0x5370b9+'/'+_0x11a3a4)[_0xc4d0('0x20')](_0x9e4bdb);}return null;};}function patchUpdates(_0x3267bb){return function(_0x56f172){try{jsonpatch[_0xc4d0('0x21')](_0x56f172,_0x3267bb,!![]);}catch(_0x556f9b){return BPromise[_0xc4d0('0x22')](_0x556f9b);}return _0x56f172[_0xc4d0('0x23')]();};}function saveUpdates(_0x2c476e,_0x32b2e9){return function(_0x56aeb1){if(_0x56aeb1){return _0x56aeb1[_0xc4d0('0x24')](_0x2c476e)[_0xc4d0('0x25')](function(_0x519d97){return _0x519d97;});}return null;};}function removeEntity(_0x3db4ee,_0x2bbdf2){return function(_0x1f08f6){if(_0x1f08f6){return _0x1f08f6[_0xc4d0('0x26')]()[_0xc4d0('0x25')](function(){_0x3db4ee['status'](0xcc)[_0xc4d0('0x19')]();});}};}function handleEntityNotFound(_0x254890,_0xb6705f){return function(_0x34f44f){if(!_0x34f44f){_0x254890[_0xc4d0('0x17')](0x194);}return _0x34f44f;};}function handleError(_0x9bdda7,_0x27c79e){_0x27c79e=_0x27c79e||0x1f4;return function(_0x243025){logger[_0xc4d0('0x27')](_0x243025['stack']);if(_0x243025[_0xc4d0('0x28')]){delete _0x243025['name'];}_0x9bdda7[_0xc4d0('0x18')](_0x27c79e)[_0xc4d0('0x29')](_0x243025);};}exports['index']=function(_0x3f973f,_0x5d45cd){var _0x21889b={},_0x270261={},_0x3c56e6={'count':0x0,'rows':[]};var _0x3f4cb3=_[_0xc4d0('0x2a')](db[_0xc4d0('0x2b')][_0xc4d0('0x2c')],function(_0x5de004){return{'name':_0x5de004['fieldName'],'type':_0x5de004[_0xc4d0('0x2d')][_0xc4d0('0x2e')]};});_0x270261[_0xc4d0('0x2f')]=_[_0xc4d0('0x2a')](_0x3f4cb3,_0xc4d0('0x28'));_0x270261[_0xc4d0('0x30')]=_['keys'](_0x3f973f['query']);_0x270261['filters']=_[_0xc4d0('0x31')](_0x270261[_0xc4d0('0x2f')],_0x270261[_0xc4d0('0x30')]);_0x21889b[_0xc4d0('0x32')]=_[_0xc4d0('0x31')](_0x270261[_0xc4d0('0x2f')],qs[_0xc4d0('0x33')](_0x3f973f[_0xc4d0('0x30')][_0xc4d0('0x33')]));_0x21889b['attributes']=_0x21889b[_0xc4d0('0x32')][_0xc4d0('0x34')]?_0x21889b[_0xc4d0('0x32')]:_0x270261[_0xc4d0('0x2f')];if(!_0x3f973f['query']['hasOwnProperty'](_0xc4d0('0x35'))){_0x21889b[_0xc4d0('0x1c')]=qs[_0xc4d0('0x1c')](_0x3f973f[_0xc4d0('0x30')]['limit']);_0x21889b[_0xc4d0('0x1a')]=qs['offset'](_0x3f973f[_0xc4d0('0x30')][_0xc4d0('0x1a')]);}_0x21889b[_0xc4d0('0x36')]=qs[_0xc4d0('0x37')](_0x3f973f[_0xc4d0('0x30')]['sort']);_0x21889b['where']=qs[_0xc4d0('0x38')](_[_0xc4d0('0x39')](_0x3f973f[_0xc4d0('0x30')],_0x270261[_0xc4d0('0x38')]),_0x3f4cb3);if(_0x3f973f[_0xc4d0('0x30')][_0xc4d0('0x3a')]){_0x21889b[_0xc4d0('0x3b')]=_[_0xc4d0('0x3c')](_0x21889b[_0xc4d0('0x3b')],{'$or':_['map'](_0x3f4cb3,function(_0x1eefe1){if(_0x1eefe1[_0xc4d0('0x2d')]!=='VIRTUAL'){var _0x435e93={};_0x435e93[_0x1eefe1['name']]={'$like':'%'+_0x3f973f[_0xc4d0('0x30')][_0xc4d0('0x3a')]+'%'};return _0x435e93;}})});}_0x21889b=_[_0xc4d0('0x3c')]({},_0x21889b,_0x3f973f[_0xc4d0('0x3d')]);var _0x36b5d6={'where':_0x21889b[_0xc4d0('0x3b')]};return db[_0xc4d0('0x2b')]['count'](_0x36b5d6)[_0xc4d0('0x25')](function(_0x49c179){_0x3c56e6['count']=_0x49c179;if(_0x3f973f[_0xc4d0('0x30')][_0xc4d0('0x3e')]){_0x21889b[_0xc4d0('0x3f')]=[{'all':!![]}];}return db[_0xc4d0('0x2b')][_0xc4d0('0x40')](_0x21889b);})[_0xc4d0('0x25')](function(_0x13210c){_0x3c56e6['rows']=_0x13210c;return _0x3c56e6;})[_0xc4d0('0x25')](respondWithFilteredResult(_0x5d45cd,_0x21889b))[_0xc4d0('0x41')](handleError(_0x5d45cd,null));};exports['show']=function(_0xcfdcd2,_0x593028){var _0x45de35={'raw':![],'where':{'id':_0xcfdcd2[_0xc4d0('0x42')]['id']}},_0x9f83b8={};_0x9f83b8[_0xc4d0('0x2f')]=_['keys'](db[_0xc4d0('0x2b')]['rawAttributes']);_0x9f83b8[_0xc4d0('0x30')]=_[_0xc4d0('0x43')](_0xcfdcd2[_0xc4d0('0x30')]);_0x9f83b8[_0xc4d0('0x38')]=_[_0xc4d0('0x31')](_0x9f83b8[_0xc4d0('0x2f')],_0x9f83b8[_0xc4d0('0x30')]);_0x45de35['attributes']=_[_0xc4d0('0x31')](_0x9f83b8['model'],qs[_0xc4d0('0x33')](_0xcfdcd2[_0xc4d0('0x30')][_0xc4d0('0x33')]));_0x45de35[_0xc4d0('0x32')]=_0x45de35[_0xc4d0('0x32')][_0xc4d0('0x34')]?_0x45de35[_0xc4d0('0x32')]:_0x9f83b8[_0xc4d0('0x2f')];if(_0xcfdcd2[_0xc4d0('0x30')][_0xc4d0('0x3e')]){_0x45de35[_0xc4d0('0x3f')]=[{'all':!![]}];}_0x45de35=_[_0xc4d0('0x3c')]({},_0x45de35,_0xcfdcd2[_0xc4d0('0x3d')]);return db['ZohoAccount'][_0xc4d0('0x44')](_0x45de35)[_0xc4d0('0x25')](handleEntityNotFound(_0x593028,null))[_0xc4d0('0x25')](respondWithResult(_0x593028,null))[_0xc4d0('0x41')](handleError(_0x593028,null));};exports[_0xc4d0('0x45')]=function(_0xbe46a0,_0x2c75c3){return db['ZohoAccount'][_0xc4d0('0x45')](_0xbe46a0[_0xc4d0('0x46')],{})[_0xc4d0('0x25')](respondWithResult(_0x2c75c3,0xc9))['catch'](handleError(_0x2c75c3,null));};exports['update']=function(_0x586b15,_0x336f16){if(_0x586b15[_0xc4d0('0x46')]['id']){delete _0x586b15[_0xc4d0('0x46')]['id'];}return db['ZohoAccount']['find']({'where':{'id':_0x586b15[_0xc4d0('0x42')]['id']}})[_0xc4d0('0x25')](handleEntityNotFound(_0x336f16,null))['then'](saveUpdates(_0x586b15['body'],null))[_0xc4d0('0x25')](respondWithResult(_0x336f16,null))[_0xc4d0('0x41')](handleError(_0x336f16,null));};exports[_0xc4d0('0x26')]=function(_0x1e4cbd,_0x1ef410){return db['ZohoAccount'][_0xc4d0('0x44')]({'where':{'id':_0x1e4cbd[_0xc4d0('0x42')]['id']}})[_0xc4d0('0x25')](handleEntityNotFound(_0x1ef410,null))[_0xc4d0('0x25')](removeEntity(_0x1ef410,null))['catch'](handleError(_0x1ef410,null));};exports['getConfigurations']=function(_0x453dab,_0x21333b,_0x11845c){var _0x2fd0aa={};var _0x30c2c5={};var _0x5f469c;var _0x2c508d;return db[_0xc4d0('0x2b')][_0xc4d0('0x47')]({'where':{'id':_0x453dab[_0xc4d0('0x42')]['id']}})[_0xc4d0('0x25')](handleEntityNotFound(_0x21333b,null))[_0xc4d0('0x25')](function(_0x3c9847){if(_0x3c9847){_0x5f469c=_0x3c9847;_0x30c2c5[_0xc4d0('0x2f')]=_[_0xc4d0('0x43')](db['ZohoConfiguration']['rawAttributes']);_0x30c2c5[_0xc4d0('0x30')]=_[_0xc4d0('0x43')](_0x453dab['query']);_0x30c2c5[_0xc4d0('0x38')]=_[_0xc4d0('0x31')](_0x30c2c5[_0xc4d0('0x2f')],_0x30c2c5[_0xc4d0('0x30')]);_0x2fd0aa[_0xc4d0('0x32')]=_[_0xc4d0('0x31')](_0x30c2c5[_0xc4d0('0x2f')],qs[_0xc4d0('0x33')](_0x453dab[_0xc4d0('0x30')]['fields']));_0x2fd0aa['attributes']=_0x2fd0aa['attributes'][_0xc4d0('0x34')]?_0x2fd0aa[_0xc4d0('0x32')]:_0x30c2c5[_0xc4d0('0x2f')];_0x2fd0aa[_0xc4d0('0x36')]=qs['sort'](_0x453dab[_0xc4d0('0x30')][_0xc4d0('0x37')]);_0x2fd0aa[_0xc4d0('0x3b')]=qs[_0xc4d0('0x38')](_[_0xc4d0('0x39')](_0x453dab[_0xc4d0('0x30')],_0x30c2c5[_0xc4d0('0x38')]));if(_0x453dab[_0xc4d0('0x30')][_0xc4d0('0x3a')]){_0x2fd0aa['where']=_[_0xc4d0('0x3c')](_0x2fd0aa['where'],{'$or':_['map'](_0x2fd0aa['attributes'],function(_0x5df262){var _0x265887={};_0x265887[_0x5df262]={'$like':'%'+_0x453dab[_0xc4d0('0x30')][_0xc4d0('0x3a')]+'%'};return _0x265887;})});}_0x2fd0aa=_[_0xc4d0('0x3c')]({},_0x2fd0aa,_0x453dab['options']);return _0x5f469c['getConfigurations'](_0x2fd0aa);}})['then'](function(_0x193520){if(_0x193520){_0x2c508d=_0x193520[_0xc4d0('0x34')];if(!_0x453dab[_0xc4d0('0x30')][_0xc4d0('0x48')](_0xc4d0('0x35'))){_0x2fd0aa[_0xc4d0('0x1c')]=qs[_0xc4d0('0x1c')](_0x453dab['query']['limit']);_0x2fd0aa['offset']=qs['offset'](_0x453dab[_0xc4d0('0x30')][_0xc4d0('0x1a')]);}return _0x5f469c[_0xc4d0('0x49')](_0x2fd0aa);}})[_0xc4d0('0x25')](function(_0x2c5e94){if(_0x2c5e94){return _0x2c5e94?{'count':_0x2c508d,'rows':_0x2c5e94}:null;}})[_0xc4d0('0x25')](respondWithResult(_0x21333b,null))[_0xc4d0('0x41')](handleError(_0x21333b,null));};exports['addConfiguration']=function(_0x3ef3e4,_0x2deb7f,_0x269280){if(_0x3ef3e4[_0xc4d0('0x46')]['id']){delete _0x3ef3e4['body']['id'];}return db[_0xc4d0('0x2b')][_0xc4d0('0x47')]({'where':{'id':_0x3ef3e4[_0xc4d0('0x42')]['id']}})['then'](handleEntityNotFound(_0x2deb7f,null))[_0xc4d0('0x25')](function(_0x21e58c){if(_0x21e58c){_0x3ef3e4['body'][_0xc4d0('0x4a')]=_0x21e58c['id'];_0x3ef3e4[_0xc4d0('0x46')][_0xc4d0('0x4b')]=integrations[_0xc4d0('0x4c')](_0x3ef3e4[_0xc4d0('0x46')][_0xc4d0('0x4d')],_0x3ef3e4[_0xc4d0('0x46')][_0xc4d0('0x2d')]);_0x3ef3e4['body']['Descriptions']=integrations[_0xc4d0('0x4e')](_0x3ef3e4[_0xc4d0('0x46')]['channel'],_0x3ef3e4[_0xc4d0('0x46')][_0xc4d0('0x2d')]);return db[_0xc4d0('0x4f')][_0xc4d0('0x45')](_0x3ef3e4['body'],{'include':[{'model':db[_0xc4d0('0x50')],'as':_0xc4d0('0x4b')},{'model':db[_0xc4d0('0x50')],'as':'Descriptions'}]});}return null;})[_0xc4d0('0x25')](respondWithResult(_0x2deb7f,null))[_0xc4d0('0x41')](handleError(_0x2deb7f,null));};function getAccessToken(_0x1e9d8d){return new Promise(function(_0x4f21ed,_0x292057){var _0x4ac291;switch(_0x1e9d8d[_0xc4d0('0x51')]){case'US':_0x4ac291='https://accounts.zoho.com';break;case'AU':_0x4ac291=_0xc4d0('0x52');break;case'EU':_0x4ac291=_0xc4d0('0x53');break;case'IN':_0x4ac291=_0xc4d0('0x54');break;case'CN':_0x4ac291='https://accounts.zoho.com.cn';break;default:_0x4ac291=_0xc4d0('0x53');break;}var _0x1c959c={'method':'POST','uri':_0x4ac291+_0xc4d0('0x55'),'qs':{'refresh_token':_0x1e9d8d[_0xc4d0('0x56')],'client_id':_0x1e9d8d[_0xc4d0('0x57')],'client_secret':_0x1e9d8d[_0xc4d0('0x58')],'grant_type':_0xc4d0('0x59')},'json':!![]};return rp(_0x1c959c)[_0xc4d0('0x25')](function(_0x196815){if(_0x196815[_0xc4d0('0x5a')]){_0x4f21ed(_0x196815[_0xc4d0('0x5a')]);}else{_0x292057('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})['catch'](function(_0x2063ae){_0x292057(_0x2063ae);});});}exports[_0xc4d0('0x5b')]=function(_0x437dae,_0x546b9e,_0x11a2ca){var _0x1d64ff,_0x250696,_0x402e5a,_0x4b2028,_0x456a03;return db[_0xc4d0('0x2b')][_0xc4d0('0x47')]({'where':{'id':_0x437dae[_0xc4d0('0x42')]['id']},'attributes':['id','host',_0xc4d0('0x51'),_0xc4d0('0x57'),_0xc4d0('0x58'),_0xc4d0('0x5c'),_0xc4d0('0x5d'),_0xc4d0('0x56')]})[_0xc4d0('0x25')](handleEntityNotFound(_0x546b9e,null))[_0xc4d0('0x25')](function(_0x4d7b86){_0x456a03=_0x4d7b86;_0x1d64ff=_0x456a03[_0xc4d0('0x5e')];_0x250696=_0x1d64ff===_0xc4d0('0x5f')?'eu':_0xc4d0('0x60');_0x402e5a=_0x456a03['serverUrl'];var _0x49ad2c=_0x402e5a[_0xc4d0('0x61')](-0x1);if(_0x49ad2c==='/'||_0x49ad2c==='\x5c'||_0x49ad2c===':'){_0x402e5a=_0x402e5a['substring'](0x0,_0x402e5a[_0xc4d0('0x62')](_0x49ad2c));}if(!_0x456a03[_0xc4d0('0x56')]){throw new Error(_0xc4d0('0x63'));}return getAccessToken(_0x456a03);})[_0xc4d0('0x25')](function(_0x504f64){if(_0x504f64){return rp({'method':_0xc4d0('0x64'),'uri':util['format']('https://www.zohoapis.%s/crm/v2/settings/fields',_0x250696),'qs':{'module':_0xc4d0('0x65')},'headers':{'Authorization':_0xc4d0('0x66')+_0x504f64},'json':!![]});}})['then'](function(_0x3eb140){if(_0x3eb140){if(_0x3eb140[_0xc4d0('0x67')]&&_0x3eb140[_0xc4d0('0x67')][_0xc4d0('0x27')]){throw new Error(_0x3eb140[_0xc4d0('0x67')][_0xc4d0('0x27')]['message']);}var _0x176a7b=[];var _0x483e6d=[];var _0x1f922b=[_0xc4d0('0x68'),_0xc4d0('0x69'),'Description',_0xc4d0('0x6a'),_0xc4d0('0x6b'),_0xc4d0('0x6c'),_0xc4d0('0x6d'),_0xc4d0('0x6e')];_0x483e6d=_[_0xc4d0('0x6f')](_0x3eb140[_0xc4d0('0x33')],function(_0x101255){return _0x1f922b[_0xc4d0('0x70')](_0x101255[_0xc4d0('0x71')]);});for(var _0x44b06f=0x0;_0x44b06f<_0x483e6d['length'];_0x44b06f++){if(_0x483e6d[_0x44b06f][_0xc4d0('0x72')]===![]){_0x176a7b[_0xc4d0('0x73')]({'id':_0x483e6d[_0x44b06f]['id'],'name':_0x483e6d[_0x44b06f]['display_label'],'custom':_0x483e6d[_0x44b06f][_0xc4d0('0x74')],'options':_0x483e6d[_0x44b06f][_0xc4d0('0x75')]===_0xc4d0('0x76')&&_0x483e6d[_0x44b06f][_0xc4d0('0x77')]['length']>-0x1?_[_0xc4d0('0x2a')](_0x483e6d[_0x44b06f]['pick_list_values'],function(_0x25440d){return{'name':_0x25440d,'value':_0x25440d};}):[]});}}return{'count':_0x176a7b[_0xc4d0('0x34')],'rows':_0x176a7b};}else{return{'count':0x0,'rows':[]};}})[_0xc4d0('0x25')](respondWithResult(_0x546b9e,null))['catch'](function(_0xf9045d){var _0x17abf9=_0x437dae['query']['test']?0x1f4:_0xf9045d['statusCode']||0x1f4;logger[_0xc4d0('0x27')](_0xc4d0('0x78'),_0xc4d0('0x5b'),_0x17abf9,JSON['stringify'](_0xf9045d));delete _0xf9045d[_0xc4d0('0x28')];if(_0x17abf9===0x191){_0x17abf9=0x190;}_0x546b9e[_0xc4d0('0x18')](_0x17abf9)[_0xc4d0('0x29')](_0x437dae[_0xc4d0('0x30')][_0xc4d0('0x79')]?{'message':'Wrong\x20credentials','statusCode':_0xf9045d[_0xc4d0('0x7a')]}:_0xf9045d);});};
\ No newline at end of file
+var _0xbc61=['../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','save','update','then','destroy','end','error','stack','name','send','index','map','ZohoAccount','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','merge','where','VIRTUAL','includeAll','include','findAll','catch','show','params','rawAttributes','create','body','find','getConfigurations','findOne','ZohoConfiguration','order','options','addConfiguration','Subjects','getSubjects','channel','getDescriptions','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','/oauth/v2/token','refreshToken','clientSecret','refresh_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientId','code','zoho.eu','com','serverUrl','slice','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','Calls','Zoho-oauthtoken\x20','response','Owner','Subject','Description','WhoId','Call_Duration','Call_Start_Time','Call_Type','remove','includes','api_name','push','display_label','custom_field','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x32f2f4,_0x5c6859){var _0xf3f40c=function(_0x4c031d){while(--_0x4c031d){_0x32f2f4['push'](_0x32f2f4['shift']());}};_0xf3f40c(++_0x5c6859);}(_0xbc61,0x16e));var _0x1bc6=function(_0x2e578f,_0x1a1449){_0x2e578f=_0x2e578f-0x0;var _0x2217a2=_0xbc61[_0x2e578f];return _0x2217a2;};'use strict';var emlformat=require(_0x1bc6('0x0'));var rimraf=require(_0x1bc6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1bc6('0x2'));var rp=require(_0x1bc6('0x3'));var moment=require(_0x1bc6('0x4'));var BPromise=require(_0x1bc6('0x5'));var Mustache=require(_0x1bc6('0x6'));var util=require(_0x1bc6('0x7'));var path=require(_0x1bc6('0x8'));var sox=require(_0x1bc6('0x9'));var csv=require(_0x1bc6('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1bc6('0xb'));var squel=require(_0x1bc6('0xc'));var crypto=require(_0x1bc6('0xd'));var jsforce=require(_0x1bc6('0xe'));var deskjs=require(_0x1bc6('0xf'));var toCsv=require(_0x1bc6('0xa'));var querystring=require('querystring');var Papa=require(_0x1bc6('0x10'));var Redis=require(_0x1bc6('0x11'));var authService=require(_0x1bc6('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1bc6('0x13'));var hardwareService=require(_0x1bc6('0x14'));var logger=require(_0x1bc6('0x15'))(_0x1bc6('0x16'));var utils=require(_0x1bc6('0x17'));var config=require(_0x1bc6('0x18'));var licenseUtil=require(_0x1bc6('0x19'));var db=require(_0x1bc6('0x1a'))['db'];var integrations=require(_0x1bc6('0x1b'));function respondWithStatusCode(_0x3dd22c,_0x2193a6){_0x2193a6=_0x2193a6||0xcc;return function(_0x265ba4){if(_0x265ba4){return _0x3dd22c[_0x1bc6('0x1c')](_0x2193a6);}return _0x3dd22c[_0x1bc6('0x1d')](_0x2193a6)['end']();};}function respondWithResult(_0x21c137,_0x330f54){_0x330f54=_0x330f54||0xc8;return function(_0xa64f00){if(_0xa64f00){return _0x21c137['status'](_0x330f54)[_0x1bc6('0x1e')](_0xa64f00);}};}function respondWithFilteredResult(_0x12499b,_0x3db617){return function(_0x1f8c01){if(_0x1f8c01){var _0x32219a=typeof _0x3db617[_0x1bc6('0x1f')]===_0x1bc6('0x20')&&typeof _0x3db617[_0x1bc6('0x21')]===_0x1bc6('0x20');var _0x2b7edd=_0x1f8c01['count'];var _0x483b8c=_0x32219a?0x0:_0x3db617['offset'];var _0x3a30af=_0x32219a?_0x1f8c01[_0x1bc6('0x22')]:_0x3db617['offset']+_0x3db617['limit'];var _0x27d43f;if(_0x3a30af>=_0x2b7edd){_0x3a30af=_0x2b7edd;_0x27d43f=0xc8;}else{_0x27d43f=0xce;}_0x12499b[_0x1bc6('0x1d')](_0x27d43f);return _0x12499b[_0x1bc6('0x23')]('Content-Range',_0x483b8c+'-'+_0x3a30af+'/'+_0x2b7edd)['json'](_0x1f8c01);}return null;};}function patchUpdates(_0x133577){return function(_0x33f8a0){try{jsonpatch['apply'](_0x33f8a0,_0x133577,!![]);}catch(_0x50ee06){return BPromise['reject'](_0x50ee06);}return _0x33f8a0[_0x1bc6('0x24')]();};}function saveUpdates(_0xab8753,_0x5987b0){return function(_0x4223ec){if(_0x4223ec){return _0x4223ec[_0x1bc6('0x25')](_0xab8753)[_0x1bc6('0x26')](function(_0x1160e9){return _0x1160e9;});}return null;};}function removeEntity(_0x1e8672,_0x51856e){return function(_0x225e1b){if(_0x225e1b){return _0x225e1b[_0x1bc6('0x27')]()[_0x1bc6('0x26')](function(){_0x1e8672['status'](0xcc)[_0x1bc6('0x28')]();});}};}function handleEntityNotFound(_0x27f9fc,_0x47a971){return function(_0x55a36b){if(!_0x55a36b){_0x27f9fc[_0x1bc6('0x1c')](0x194);}return _0x55a36b;};}function handleError(_0x413b32,_0x533d0c){_0x533d0c=_0x533d0c||0x1f4;return function(_0x558c57){logger[_0x1bc6('0x29')](_0x558c57[_0x1bc6('0x2a')]);if(_0x558c57[_0x1bc6('0x2b')]){delete _0x558c57['name'];}_0x413b32['status'](_0x533d0c)[_0x1bc6('0x2c')](_0x558c57);};}exports[_0x1bc6('0x2d')]=function(_0x513a9a,_0x20e2f6){var _0x10e758={},_0xa9032d={},_0x52de9a={'count':0x0,'rows':[]};var _0x45371b=_[_0x1bc6('0x2e')](db[_0x1bc6('0x2f')]['rawAttributes'],function(_0x3154cb){return{'name':_0x3154cb[_0x1bc6('0x30')],'type':_0x3154cb[_0x1bc6('0x31')]['key']};});_0xa9032d[_0x1bc6('0x32')]=_[_0x1bc6('0x2e')](_0x45371b,_0x1bc6('0x2b'));_0xa9032d[_0x1bc6('0x33')]=_[_0x1bc6('0x34')](_0x513a9a['query']);_0xa9032d[_0x1bc6('0x35')]=_['intersection'](_0xa9032d['model'],_0xa9032d['query']);_0x10e758[_0x1bc6('0x36')]=_[_0x1bc6('0x37')](_0xa9032d[_0x1bc6('0x32')],qs[_0x1bc6('0x38')](_0x513a9a[_0x1bc6('0x33')][_0x1bc6('0x38')]));_0x10e758[_0x1bc6('0x36')]=_0x10e758[_0x1bc6('0x36')][_0x1bc6('0x39')]?_0x10e758[_0x1bc6('0x36')]:_0xa9032d['model'];if(!_0x513a9a[_0x1bc6('0x33')][_0x1bc6('0x3a')](_0x1bc6('0x3b'))){_0x10e758[_0x1bc6('0x21')]=qs[_0x1bc6('0x21')](_0x513a9a['query']['limit']);_0x10e758[_0x1bc6('0x1f')]=qs[_0x1bc6('0x1f')](_0x513a9a[_0x1bc6('0x33')][_0x1bc6('0x1f')]);}_0x10e758['order']=qs[_0x1bc6('0x3c')](_0x513a9a[_0x1bc6('0x33')][_0x1bc6('0x3c')]);_0x10e758['where']=qs[_0x1bc6('0x35')](_[_0x1bc6('0x3d')](_0x513a9a[_0x1bc6('0x33')],_0xa9032d[_0x1bc6('0x35')]),_0x45371b);if(_0x513a9a[_0x1bc6('0x33')][_0x1bc6('0x3e')]){_0x10e758['where']=_[_0x1bc6('0x3f')](_0x10e758[_0x1bc6('0x40')],{'$or':_[_0x1bc6('0x2e')](_0x45371b,function(_0x49ec08){if(_0x49ec08[_0x1bc6('0x31')]!==_0x1bc6('0x41')){var _0x5122a7={};_0x5122a7[_0x49ec08['name']]={'$like':'%'+_0x513a9a[_0x1bc6('0x33')][_0x1bc6('0x3e')]+'%'};return _0x5122a7;}})});}_0x10e758=_[_0x1bc6('0x3f')]({},_0x10e758,_0x513a9a['options']);var _0xa881ca={'where':_0x10e758[_0x1bc6('0x40')]};return db['ZohoAccount'][_0x1bc6('0x22')](_0xa881ca)[_0x1bc6('0x26')](function(_0xcec26f){_0x52de9a[_0x1bc6('0x22')]=_0xcec26f;if(_0x513a9a['query'][_0x1bc6('0x42')]){_0x10e758[_0x1bc6('0x43')]=[{'all':!![]}];}return db[_0x1bc6('0x2f')][_0x1bc6('0x44')](_0x10e758);})[_0x1bc6('0x26')](function(_0x5c6f79){_0x52de9a['rows']=_0x5c6f79;return _0x52de9a;})[_0x1bc6('0x26')](respondWithFilteredResult(_0x20e2f6,_0x10e758))[_0x1bc6('0x45')](handleError(_0x20e2f6,null));};exports[_0x1bc6('0x46')]=function(_0x1e236f,_0x2e942d){var _0x383ad5={'raw':![],'where':{'id':_0x1e236f[_0x1bc6('0x47')]['id']}},_0x41209d={};_0x41209d[_0x1bc6('0x32')]=_['keys'](db[_0x1bc6('0x2f')][_0x1bc6('0x48')]);_0x41209d['query']=_[_0x1bc6('0x34')](_0x1e236f[_0x1bc6('0x33')]);_0x41209d[_0x1bc6('0x35')]=_[_0x1bc6('0x37')](_0x41209d[_0x1bc6('0x32')],_0x41209d[_0x1bc6('0x33')]);_0x383ad5[_0x1bc6('0x36')]=_[_0x1bc6('0x37')](_0x41209d[_0x1bc6('0x32')],qs[_0x1bc6('0x38')](_0x1e236f['query'][_0x1bc6('0x38')]));_0x383ad5[_0x1bc6('0x36')]=_0x383ad5[_0x1bc6('0x36')][_0x1bc6('0x39')]?_0x383ad5[_0x1bc6('0x36')]:_0x41209d['model'];if(_0x1e236f[_0x1bc6('0x33')][_0x1bc6('0x42')]){_0x383ad5[_0x1bc6('0x43')]=[{'all':!![]}];}_0x383ad5=_[_0x1bc6('0x3f')]({},_0x383ad5,_0x1e236f['options']);return db[_0x1bc6('0x2f')]['find'](_0x383ad5)[_0x1bc6('0x26')](handleEntityNotFound(_0x2e942d,null))[_0x1bc6('0x26')](respondWithResult(_0x2e942d,null))[_0x1bc6('0x45')](handleError(_0x2e942d,null));};exports[_0x1bc6('0x49')]=function(_0xd9fbf7,_0x4162d2){return db[_0x1bc6('0x2f')][_0x1bc6('0x49')](_0xd9fbf7['body'],{})['then'](respondWithResult(_0x4162d2,0xc9))[_0x1bc6('0x45')](handleError(_0x4162d2,null));};exports[_0x1bc6('0x25')]=function(_0x3d4962,_0x18f2d9){if(_0x3d4962['body']['id']){delete _0x3d4962[_0x1bc6('0x4a')]['id'];}return db[_0x1bc6('0x2f')][_0x1bc6('0x4b')]({'where':{'id':_0x3d4962[_0x1bc6('0x47')]['id']}})[_0x1bc6('0x26')](handleEntityNotFound(_0x18f2d9,null))['then'](saveUpdates(_0x3d4962['body'],null))[_0x1bc6('0x26')](respondWithResult(_0x18f2d9,null))[_0x1bc6('0x45')](handleError(_0x18f2d9,null));};exports[_0x1bc6('0x27')]=function(_0x20cfde,_0x11eca2){return db[_0x1bc6('0x2f')][_0x1bc6('0x4b')]({'where':{'id':_0x20cfde[_0x1bc6('0x47')]['id']}})[_0x1bc6('0x26')](handleEntityNotFound(_0x11eca2,null))[_0x1bc6('0x26')](removeEntity(_0x11eca2,null))[_0x1bc6('0x45')](handleError(_0x11eca2,null));};exports[_0x1bc6('0x4c')]=function(_0x53aed6,_0x202296,_0x47553a){var _0x615241={};var _0x3d8996={};var _0x4c51d1;var _0x424764;return db[_0x1bc6('0x2f')][_0x1bc6('0x4d')]({'where':{'id':_0x53aed6[_0x1bc6('0x47')]['id']}})[_0x1bc6('0x26')](handleEntityNotFound(_0x202296,null))[_0x1bc6('0x26')](function(_0x3affdd){if(_0x3affdd){_0x4c51d1=_0x3affdd;_0x3d8996[_0x1bc6('0x32')]=_['keys'](db[_0x1bc6('0x4e')]['rawAttributes']);_0x3d8996[_0x1bc6('0x33')]=_['keys'](_0x53aed6['query']);_0x3d8996['filters']=_[_0x1bc6('0x37')](_0x3d8996[_0x1bc6('0x32')],_0x3d8996[_0x1bc6('0x33')]);_0x615241[_0x1bc6('0x36')]=_[_0x1bc6('0x37')](_0x3d8996['model'],qs[_0x1bc6('0x38')](_0x53aed6[_0x1bc6('0x33')][_0x1bc6('0x38')]));_0x615241[_0x1bc6('0x36')]=_0x615241[_0x1bc6('0x36')][_0x1bc6('0x39')]?_0x615241[_0x1bc6('0x36')]:_0x3d8996[_0x1bc6('0x32')];_0x615241[_0x1bc6('0x4f')]=qs[_0x1bc6('0x3c')](_0x53aed6[_0x1bc6('0x33')][_0x1bc6('0x3c')]);_0x615241['where']=qs[_0x1bc6('0x35')](_[_0x1bc6('0x3d')](_0x53aed6[_0x1bc6('0x33')],_0x3d8996[_0x1bc6('0x35')]));if(_0x53aed6[_0x1bc6('0x33')][_0x1bc6('0x3e')]){_0x615241[_0x1bc6('0x40')]=_['merge'](_0x615241[_0x1bc6('0x40')],{'$or':_[_0x1bc6('0x2e')](_0x615241['attributes'],function(_0x2ac26c){var _0x1147d4={};_0x1147d4[_0x2ac26c]={'$like':'%'+_0x53aed6[_0x1bc6('0x33')][_0x1bc6('0x3e')]+'%'};return _0x1147d4;})});}_0x615241=_['merge']({},_0x615241,_0x53aed6[_0x1bc6('0x50')]);return _0x4c51d1[_0x1bc6('0x4c')](_0x615241);}})['then'](function(_0x527b84){if(_0x527b84){_0x424764=_0x527b84['length'];if(!_0x53aed6[_0x1bc6('0x33')][_0x1bc6('0x3a')]('nolimit')){_0x615241[_0x1bc6('0x21')]=qs[_0x1bc6('0x21')](_0x53aed6[_0x1bc6('0x33')][_0x1bc6('0x21')]);_0x615241[_0x1bc6('0x1f')]=qs[_0x1bc6('0x1f')](_0x53aed6[_0x1bc6('0x33')]['offset']);}return _0x4c51d1[_0x1bc6('0x4c')](_0x615241);}})['then'](function(_0x160090){if(_0x160090){return _0x160090?{'count':_0x424764,'rows':_0x160090}:null;}})[_0x1bc6('0x26')](respondWithResult(_0x202296,null))[_0x1bc6('0x45')](handleError(_0x202296,null));};exports[_0x1bc6('0x51')]=function(_0x4bc2d4,_0x29a6a9,_0xbc9d14){if(_0x4bc2d4[_0x1bc6('0x4a')]['id']){delete _0x4bc2d4[_0x1bc6('0x4a')]['id'];}return db[_0x1bc6('0x2f')]['findOne']({'where':{'id':_0x4bc2d4[_0x1bc6('0x47')]['id']}})[_0x1bc6('0x26')](handleEntityNotFound(_0x29a6a9,null))[_0x1bc6('0x26')](function(_0x190f0f){if(_0x190f0f){_0x4bc2d4[_0x1bc6('0x4a')]['AccountId']=_0x190f0f['id'];_0x4bc2d4[_0x1bc6('0x4a')][_0x1bc6('0x52')]=integrations[_0x1bc6('0x53')](_0x4bc2d4[_0x1bc6('0x4a')][_0x1bc6('0x54')],_0x4bc2d4[_0x1bc6('0x4a')]['type']);_0x4bc2d4[_0x1bc6('0x4a')]['Descriptions']=integrations[_0x1bc6('0x55')](_0x4bc2d4['body'][_0x1bc6('0x54')],_0x4bc2d4[_0x1bc6('0x4a')][_0x1bc6('0x31')]);return db[_0x1bc6('0x4e')][_0x1bc6('0x49')](_0x4bc2d4[_0x1bc6('0x4a')],{'include':[{'model':db[_0x1bc6('0x56')],'as':'Subjects'},{'model':db[_0x1bc6('0x56')],'as':'Descriptions'}]});}return null;})[_0x1bc6('0x26')](respondWithResult(_0x29a6a9,null))[_0x1bc6('0x45')](handleError(_0x29a6a9,null));};function getAccessToken(_0x7e71c1){return new Promise(function(_0x58e90c,_0x255051){var _0x30791a;switch(_0x7e71c1[_0x1bc6('0x57')]){case'US':_0x30791a=_0x1bc6('0x58');break;case'AU':_0x30791a=_0x1bc6('0x59');break;case'EU':_0x30791a='https://accounts.zoho.eu';break;case'IN':_0x30791a=_0x1bc6('0x5a');break;case'CN':_0x30791a=_0x1bc6('0x5b');break;default:_0x30791a=_0x1bc6('0x5c');break;}var _0xa0e9a2={'method':'POST','uri':_0x30791a+_0x1bc6('0x5d'),'qs':{'refresh_token':_0x7e71c1[_0x1bc6('0x5e')],'client_id':_0x7e71c1['clientId'],'client_secret':_0x7e71c1[_0x1bc6('0x5f')],'grant_type':_0x1bc6('0x60')},'json':!![]};return rp(_0xa0e9a2)['then'](function(_0x226eee){if(_0x226eee['access_token']){_0x58e90c(_0x226eee['access_token']);}else{_0x255051(_0x1bc6('0x61'));}})['catch'](function(_0x2d683e){_0x255051(_0x2d683e);});});}exports[_0x1bc6('0x62')]=function(_0x5402ca,_0x4c439f,_0x356639){var _0x36be2e,_0x567e4a,_0x2b5b19,_0x27cff2,_0xa852b2;return db[_0x1bc6('0x2f')][_0x1bc6('0x4d')]({'where':{'id':_0x5402ca[_0x1bc6('0x47')]['id']},'attributes':['id',_0x1bc6('0x63'),_0x1bc6('0x57'),_0x1bc6('0x64'),_0x1bc6('0x5f'),'serverUrl',_0x1bc6('0x65'),'refreshToken']})['then'](handleEntityNotFound(_0x4c439f,null))[_0x1bc6('0x26')](function(_0x256be0){_0xa852b2=_0x256be0;_0x36be2e=_0xa852b2[_0x1bc6('0x63')];_0x567e4a=_0x36be2e===_0x1bc6('0x66')?'eu':_0x1bc6('0x67');_0x2b5b19=_0xa852b2[_0x1bc6('0x68')];var _0x3a1386=_0x2b5b19[_0x1bc6('0x69')](-0x1);if(_0x3a1386==='/'||_0x3a1386==='\x5c'||_0x3a1386===':'){_0x2b5b19=_0x2b5b19['substring'](0x0,_0x2b5b19['lastIndexOf'](_0x3a1386));}if(!_0xa852b2[_0x1bc6('0x5e')]){throw new Error(_0x1bc6('0x6a'));}return getAccessToken(_0xa852b2);})[_0x1bc6('0x26')](function(_0x5778fc){if(_0x5778fc){return rp({'method':_0x1bc6('0x6b'),'uri':util['format']('https://www.zohoapis.%s/crm/v2/settings/fields',_0x567e4a),'qs':{'module':_0x1bc6('0x6c')},'headers':{'Authorization':_0x1bc6('0x6d')+_0x5778fc},'json':!![]});}})[_0x1bc6('0x26')](function(_0x11d378){if(_0x11d378){if(_0x11d378[_0x1bc6('0x6e')]&&_0x11d378[_0x1bc6('0x6e')][_0x1bc6('0x29')]){throw new Error(_0x11d378[_0x1bc6('0x6e')]['error']['message']);}var _0x503e71=[];var _0x12af93=[];var _0x8d6b45=[_0x1bc6('0x6f'),_0x1bc6('0x70'),_0x1bc6('0x71'),_0x1bc6('0x72'),_0x1bc6('0x73'),'Call_Result',_0x1bc6('0x74'),_0x1bc6('0x75')];_0x12af93=_[_0x1bc6('0x76')](_0x11d378[_0x1bc6('0x38')],function(_0x1d01b3){return _0x8d6b45[_0x1bc6('0x77')](_0x1d01b3[_0x1bc6('0x78')]);});for(var _0x545ff0=0x0;_0x545ff0<_0x12af93[_0x1bc6('0x39')];_0x545ff0++){if(_0x12af93[_0x545ff0]['system_mandatory']===![]){_0x503e71[_0x1bc6('0x79')]({'id':_0x12af93[_0x545ff0]['id'],'name':_0x12af93[_0x545ff0][_0x1bc6('0x7a')],'custom':_0x12af93[_0x545ff0][_0x1bc6('0x7b')],'options':_0x12af93[_0x545ff0][_0x1bc6('0x7c')]===_0x1bc6('0x7d')&&_0x12af93[_0x545ff0][_0x1bc6('0x7e')][_0x1bc6('0x39')]>-0x1?_[_0x1bc6('0x2e')](_0x12af93[_0x545ff0][_0x1bc6('0x7e')],function(_0x514765){return{'name':_0x514765,'value':_0x514765};}):[]});}}return{'count':_0x503e71[_0x1bc6('0x39')],'rows':_0x503e71};}else{return{'count':0x0,'rows':[]};}})[_0x1bc6('0x26')](respondWithResult(_0x4c439f,null))[_0x1bc6('0x45')](function(_0x2c04f9){var _0x330ae4=_0x5402ca[_0x1bc6('0x33')][_0x1bc6('0x7f')]?0x1f4:_0x2c04f9[_0x1bc6('0x80')]||0x1f4;logger['error'](_0x1bc6('0x81'),_0x1bc6('0x62'),_0x330ae4,JSON['stringify'](_0x2c04f9));delete _0x2c04f9[_0x1bc6('0x2b')];if(_0x330ae4===0x191){_0x330ae4=0x190;}_0x4c439f[_0x1bc6('0x1d')](_0x330ae4)[_0x1bc6('0x2c')](_0x5402ca[_0x1bc6('0x33')][_0x1bc6('0x7f')]?{'message':_0x1bc6('0x82'),'statusCode':_0x2c04f9[_0x1bc6('0x80')]}:_0x2c04f9);});};
\ No newline at end of file
index df80658..791d827 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8665=['host','lastIndexOf','https://accounts.zoho.com.au','application/x-www-form-urlencoded','info','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','serverUrl','clientId','clientSecret','code','slice','substring','zone','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','parse','refresh_token','refreshToken','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch'];(function(_0xc4531,_0x554edd){var _0x44897d=function(_0x367dbc){while(--_0x367dbc){_0xc4531['push'](_0xc4531['shift']());}};_0x44897d(++_0x554edd);}(_0x8665,0x15d));var _0x5866=function(_0x9d35b5,_0x5cde87){_0x9d35b5=_0x9d35b5-0x0;var _0x25fb99=_0x8665[_0x9d35b5];return _0x25fb99;};'use strict';var _=require('lodash');var util=require(_0x5866('0x0'));var logger=require(_0x5866('0x1'))(_0x5866('0x2'));var moment=require(_0x5866('0x3'));var BPromise=require(_0x5866('0x4'));var rp=require(_0x5866('0x5'));var fs=require('fs');var path=require(_0x5866('0x6'));var rimraf=require(_0x5866('0x7'));var config=require('../../config/environment');var attributes=require('./intZohoAccount.attributes');var integrations=require(_0x5866('0x8'));module[_0x5866('0x9')]=function(_0x11cf30,_0x3171ec){return _0x11cf30[_0x5866('0xa')](_0x5866('0xb'),attributes,{'tableName':_0x5866('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x326e74,_0xb36b04,_0x2a75be){if(_0x326e74[_0x5866('0xd')]('zone')||_0x326e74[_0x5866('0xd')](_0x5866('0xe'))||_0x326e74['changed'](_0x5866('0xf'))||_0x326e74[_0x5866('0xd')](_0x5866('0x10'))||_0x326e74[_0x5866('0xd')](_0x5866('0x11'))||_0x326e74[_0x5866('0xd')]('host')){var _0x261edd,_0x2f6d2a;_0x261edd=_0x326e74[_0x5866('0xe')];var _0x1b51a0=_0x261edd[_0x5866('0x12')](-0x1);if(_0x1b51a0==='/'||_0x1b51a0==='\x5c'||_0x1b51a0===':'){_0x261edd=_0x261edd[_0x5866('0x13')](0x0,_0x261edd['lastIndexOf'](_0x1b51a0));}switch(_0x326e74[_0x5866('0x14')]){case'US':_0x2f6d2a=_0x5866('0x15');break;case'AU':_0x2f6d2a='https://accounts.zoho.com.au';break;case'IN':_0x2f6d2a=_0x5866('0x16');break;case'CN':_0x2f6d2a=_0x5866('0x17');break;default:_0x2f6d2a=_0x5866('0x18');break;}var _0x573b4d={'method':_0x5866('0x19'),'uri':_0x2f6d2a+_0x5866('0x1a'),'form':{'grant_type':_0x5866('0x1b'),'client_id':_0x326e74[_0x5866('0xf')],'client_secret':_0x326e74[_0x5866('0x10')],'redirect_uri':_0x326e74[_0x5866('0xe')],'code':_0x326e74[_0x5866('0x11')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x573b4d)['then'](function(_0x4a943f){var _0x26b4a9=JSON[_0x5866('0x1c')](_0x4a943f);if(_0x26b4a9[_0x5866('0x1d')]){_0x326e74[_0x5866('0x1e')]=_0x26b4a9['refresh_token'];logger['info'](util[_0x5866('0x1f')](_0x5866('0x20'),_0x326e74[_0x5866('0x21')],_0x326e74['id']));}else{logger[_0x5866('0x22')](util[_0x5866('0x1f')](_0x5866('0x23'),_0x326e74[_0x5866('0x21')],_0x326e74['id']),util[_0x5866('0x24')](_0x26b4a9,{'showHidden':![],'depth':null}));}return _0x2a75be(null,_0xb36b04);})[_0x5866('0x25')](function(_0x559159){logger[_0x5866('0x22')](util[_0x5866('0x1f')](_0x5866('0x23'),_0x326e74[_0x5866('0x21')],_0x326e74['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x2a75be(_0x559159);});}else{return _0x2a75be(null,_0xb36b04);}},'beforeUpdate':function(_0x52932e,_0x559161,_0x3de42e){if(_0x52932e[_0x5866('0xd')](_0x5866('0x14'))||_0x52932e[_0x5866('0xd')](_0x5866('0xe'))||_0x52932e[_0x5866('0xd')](_0x5866('0xf'))||_0x52932e[_0x5866('0xd')]('clientSecret')||_0x52932e[_0x5866('0xd')](_0x5866('0x11'))||_0x52932e['changed'](_0x5866('0x26'))){var _0x12bed8,_0x24fcab;_0x12bed8=_0x52932e[_0x5866('0xe')];var _0x303802=_0x12bed8['slice'](-0x1);if(_0x303802==='/'||_0x303802==='\x5c'||_0x303802===':'){_0x12bed8=_0x12bed8['substring'](0x0,_0x12bed8[_0x5866('0x27')](_0x303802));}switch(_0x52932e[_0x5866('0x14')]){case'US':_0x24fcab=_0x5866('0x15');break;case'AU':_0x24fcab=_0x5866('0x28');break;case'IN':_0x24fcab='https://accounts.zoho.in';break;case'CN':_0x24fcab=_0x5866('0x17');break;default:_0x24fcab=_0x5866('0x18');break;}var _0x327926={'method':_0x5866('0x19'),'uri':_0x24fcab+_0x5866('0x1a'),'form':{'grant_type':_0x5866('0x1b'),'client_id':_0x52932e[_0x5866('0xf')],'client_secret':_0x52932e[_0x5866('0x10')],'redirect_uri':_0x52932e['serverUrl'],'code':_0x52932e['code']},'headers':{'Content-Type':_0x5866('0x29')}};return rp(_0x327926)['then'](function(_0x36fa7c){var _0x3d9929=JSON[_0x5866('0x1c')](_0x36fa7c);if(_0x3d9929[_0x5866('0x1d')]){_0x52932e[_0x5866('0x1e')]=_0x3d9929[_0x5866('0x1d')];logger[_0x5866('0x2a')](util[_0x5866('0x1f')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x52932e[_0x5866('0x21')],_0x52932e['id']));}else{logger[_0x5866('0x22')](util[_0x5866('0x1f')](_0x5866('0x23'),_0x52932e[_0x5866('0x21')],_0x52932e['id']),util[_0x5866('0x24')](_0x3d9929,{'showHidden':![],'depth':null}));}return _0x3de42e(null,_0x559161);})[_0x5866('0x25')](function(_0x18c90b){logger[_0x5866('0x22')](util[_0x5866('0x1f')](_0x5866('0x23'),_0x52932e['name'],_0x52932e['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x3de42e(_0x18c90b);});}else{return _0x3de42e(null,_0x559161);}}}});};
\ No newline at end of file
+var _0x5f85=['substring','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','then','parse','refreshToken','refresh_token','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','lastIndexOf','application/x-www-form-urlencoded','info','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intZohoAccount.attributes','ZohoAccount','int_zoho_accounts','zone','serverUrl','changed','clientId','clientSecret','code','host'];(function(_0x22eeb7,_0x210734){var _0x30645f=function(_0x606625){while(--_0x606625){_0x22eeb7['push'](_0x22eeb7['shift']());}};_0x30645f(++_0x210734);}(_0x5f85,0x1b0));var _0x55f8=function(_0x494dfa,_0x2089db){_0x494dfa=_0x494dfa-0x0;var _0x379d54=_0x5f85[_0x494dfa];return _0x379d54;};'use strict';var _=require(_0x55f8('0x0'));var util=require(_0x55f8('0x1'));var logger=require(_0x55f8('0x2'))(_0x55f8('0x3'));var moment=require(_0x55f8('0x4'));var BPromise=require('bluebird');var rp=require(_0x55f8('0x5'));var fs=require('fs');var path=require(_0x55f8('0x6'));var rimraf=require(_0x55f8('0x7'));var config=require(_0x55f8('0x8'));var attributes=require(_0x55f8('0x9'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x536c86,_0x20b327){return _0x536c86['define'](_0x55f8('0xa'),attributes,{'tableName':_0x55f8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1a0a5e,_0x58d435,_0xfdef98){if(_0x1a0a5e['changed'](_0x55f8('0xc'))||_0x1a0a5e['changed'](_0x55f8('0xd'))||_0x1a0a5e[_0x55f8('0xe')](_0x55f8('0xf'))||_0x1a0a5e[_0x55f8('0xe')](_0x55f8('0x10'))||_0x1a0a5e[_0x55f8('0xe')](_0x55f8('0x11'))||_0x1a0a5e['changed'](_0x55f8('0x12'))){var _0x46a5b2,_0x3c43bf;_0x46a5b2=_0x1a0a5e[_0x55f8('0xd')];var _0x2bb647=_0x46a5b2['slice'](-0x1);if(_0x2bb647==='/'||_0x2bb647==='\x5c'||_0x2bb647===':'){_0x46a5b2=_0x46a5b2[_0x55f8('0x13')](0x0,_0x46a5b2['lastIndexOf'](_0x2bb647));}switch(_0x1a0a5e[_0x55f8('0xc')]){case'US':_0x3c43bf='https://accounts.zoho.com';break;case'AU':_0x3c43bf=_0x55f8('0x14');break;case'IN':_0x3c43bf=_0x55f8('0x15');break;case'CN':_0x3c43bf=_0x55f8('0x16');break;default:_0x3c43bf=_0x55f8('0x17');break;}var _0x3b0ea8={'method':_0x55f8('0x18'),'uri':_0x3c43bf+_0x55f8('0x19'),'form':{'grant_type':_0x55f8('0x1a'),'client_id':_0x1a0a5e[_0x55f8('0xf')],'client_secret':_0x1a0a5e['clientSecret'],'redirect_uri':_0x1a0a5e['serverUrl'],'code':_0x1a0a5e[_0x55f8('0x11')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x3b0ea8)[_0x55f8('0x1b')](function(_0x371445){var _0x492f9d=JSON[_0x55f8('0x1c')](_0x371445);if(_0x492f9d['refresh_token']){_0x1a0a5e[_0x55f8('0x1d')]=_0x492f9d[_0x55f8('0x1e')];logger['info'](util[_0x55f8('0x1f')](_0x55f8('0x20'),_0x1a0a5e[_0x55f8('0x21')],_0x1a0a5e['id']));}else{logger[_0x55f8('0x22')](util[_0x55f8('0x1f')](_0x55f8('0x23'),_0x1a0a5e['name'],_0x1a0a5e['id']),util[_0x55f8('0x24')](_0x492f9d,{'showHidden':![],'depth':null}));}return _0xfdef98(null,_0x58d435);})[_0x55f8('0x25')](function(_0x2babf6){logger[_0x55f8('0x22')](util[_0x55f8('0x1f')](_0x55f8('0x23'),_0x1a0a5e[_0x55f8('0x21')],_0x1a0a5e['id']),util[_0x55f8('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0xfdef98(_0x2babf6);});}else{return _0xfdef98(null,_0x58d435);}},'beforeUpdate':function(_0x2e1446,_0x2c3e01,_0x4437f6){if(_0x2e1446['changed'](_0x55f8('0xc'))||_0x2e1446['changed'](_0x55f8('0xd'))||_0x2e1446[_0x55f8('0xe')](_0x55f8('0xf'))||_0x2e1446[_0x55f8('0xe')]('clientSecret')||_0x2e1446[_0x55f8('0xe')](_0x55f8('0x11'))||_0x2e1446[_0x55f8('0xe')]('host')){var _0xb50e6b,_0x458257;_0xb50e6b=_0x2e1446[_0x55f8('0xd')];var _0x58a394=_0xb50e6b['slice'](-0x1);if(_0x58a394==='/'||_0x58a394==='\x5c'||_0x58a394===':'){_0xb50e6b=_0xb50e6b[_0x55f8('0x13')](0x0,_0xb50e6b[_0x55f8('0x26')](_0x58a394));}switch(_0x2e1446[_0x55f8('0xc')]){case'US':_0x458257='https://accounts.zoho.com';break;case'AU':_0x458257='https://accounts.zoho.com.au';break;case'IN':_0x458257='https://accounts.zoho.in';break;case'CN':_0x458257=_0x55f8('0x16');break;default:_0x458257=_0x55f8('0x17');break;}var _0x286f62={'method':_0x55f8('0x18'),'uri':_0x458257+'/oauth/v2/token','form':{'grant_type':_0x55f8('0x1a'),'client_id':_0x2e1446[_0x55f8('0xf')],'client_secret':_0x2e1446[_0x55f8('0x10')],'redirect_uri':_0x2e1446[_0x55f8('0xd')],'code':_0x2e1446[_0x55f8('0x11')]},'headers':{'Content-Type':_0x55f8('0x27')}};return rp(_0x286f62)[_0x55f8('0x1b')](function(_0x3a18ed){var _0x3fa468=JSON[_0x55f8('0x1c')](_0x3a18ed);if(_0x3fa468[_0x55f8('0x1e')]){_0x2e1446[_0x55f8('0x1d')]=_0x3fa468[_0x55f8('0x1e')];logger[_0x55f8('0x28')](util[_0x55f8('0x1f')](_0x55f8('0x20'),_0x2e1446['name'],_0x2e1446['id']));}else{logger[_0x55f8('0x22')](util[_0x55f8('0x1f')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2e1446[_0x55f8('0x21')],_0x2e1446['id']),util[_0x55f8('0x24')](_0x3fa468,{'showHidden':![],'depth':null}));}return _0x4437f6(null,_0x2c3e01);})[_0x55f8('0x25')](function(_0x5d582c){logger[_0x55f8('0x22')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2e1446[_0x55f8('0x21')],_0x2e1446['id']),util[_0x55f8('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x4437f6(_0x5d582c);});}else{return _0x4437f6(null,_0x2c3e01);}}}});};
\ No newline at end of file
index 528f0e9..31ae8e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b78=['info','request\x20sent','debug','stringify','error','ZohoAccount,\x20%s,\x20%s','message','result','catch','GetZohoAccount','ZohoAccount','options','raw','where','attributes','limit','include','map','model','then','ShowZohoAccount','find','util','moment','bluebird','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0x0b78,0x1d6));var _0x80b7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0b78[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x80b7('0x0'));var moment=require(_0x80b7('0x1'));var BPromise=require(_0x80b7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x80b7('0x3'));var db=require(_0x80b7('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x80b7('0x5'));var jayson=require(_0x80b7('0x6'));var client=jayson[_0x80b7('0x7')][_0x80b7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x33bdd8,_0x332cd5,_0x5ecbbf){return new BPromise(function(_0x1a0374,_0x114ef7){return client[_0x80b7('0x9')](_0x33bdd8,_0x5ecbbf)['then'](function(_0x54053b){logger[_0x80b7('0xa')]('ZohoAccount,\x20%s,\x20%s',_0x332cd5,_0x80b7('0xb'));logger[_0x80b7('0xc')]('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x332cd5,_0x80b7('0xb'),JSON[_0x80b7('0xd')](_0x54053b));if(_0x54053b[_0x80b7('0xe')]){if(_0x54053b[_0x80b7('0xe')]['code']===0x1f4){logger['error'](_0x80b7('0xf'),_0x332cd5,_0x54053b[_0x80b7('0xe')][_0x80b7('0x10')]);return _0x114ef7(_0x54053b[_0x80b7('0xe')][_0x80b7('0x10')]);}logger[_0x80b7('0xe')](_0x80b7('0xf'),_0x332cd5,_0x54053b[_0x80b7('0xe')][_0x80b7('0x10')]);return _0x1a0374(_0x54053b['error']['message']);}else{logger['info']('ZohoAccount,\x20%s,\x20%s',_0x332cd5,_0x80b7('0xb'));_0x1a0374(_0x54053b[_0x80b7('0x11')][_0x80b7('0x10')]);}})[_0x80b7('0x12')](function(_0x6c9f31){logger[_0x80b7('0xe')](_0x80b7('0xf'),_0x332cd5,_0x6c9f31);_0x114ef7(_0x6c9f31);});});}exports[_0x80b7('0x13')]=function(_0x22abaa){var _0x3b27ac=this;return new Promise(function(_0x25b5e9,_0x1ed4e6){return db[_0x80b7('0x14')]['findAll']({'raw':_0x22abaa[_0x80b7('0x15')]?_0x22abaa[_0x80b7('0x15')][_0x80b7('0x16')]===undefined?!![]:![]:!![],'where':_0x22abaa[_0x80b7('0x15')]?_0x22abaa[_0x80b7('0x15')][_0x80b7('0x17')]||null:null,'attributes':_0x22abaa[_0x80b7('0x15')]?_0x22abaa[_0x80b7('0x15')][_0x80b7('0x18')]||null:null,'limit':_0x22abaa[_0x80b7('0x15')]?_0x22abaa[_0x80b7('0x15')][_0x80b7('0x19')]||null:null,'include':_0x22abaa['options']?_0x22abaa['options'][_0x80b7('0x1a')]?_[_0x80b7('0x1b')](_0x22abaa[_0x80b7('0x15')]['include'],function(_0x9fccdc){return{'model':db[_0x9fccdc[_0x80b7('0x1c')]],'as':_0x9fccdc['as'],'attributes':_0x9fccdc[_0x80b7('0x18')],'include':_0x9fccdc[_0x80b7('0x1a')]?_[_0x80b7('0x1b')](_0x9fccdc[_0x80b7('0x1a')],function(_0x44ab49){return{'model':db[_0x44ab49[_0x80b7('0x1c')]],'as':_0x44ab49['as'],'attributes':_0x44ab49[_0x80b7('0x18')],'include':_0x44ab49[_0x80b7('0x1a')]?_[_0x80b7('0x1b')](_0x44ab49['include'],function(_0x328c15){return{'model':db[_0x328c15[_0x80b7('0x1c')]],'as':_0x328c15['as'],'attributes':_0x328c15[_0x80b7('0x18')]};}):[]};}):[]};}):[]:[]})[_0x80b7('0x1d')](function(_0x3fc028){logger[_0x80b7('0xa')](_0x80b7('0x13'),_0x22abaa);logger[_0x80b7('0xc')]('GetZohoAccount',_0x22abaa,JSON[_0x80b7('0xd')](_0x3fc028));_0x25b5e9(_0x3fc028);})[_0x80b7('0x12')](function(_0x1dc2df){logger[_0x80b7('0xe')](_0x80b7('0x13'),_0x1dc2df['message'],_0x22abaa);_0x1ed4e6(_0x3b27ac[_0x80b7('0xe')](0x1f4,_0x1dc2df[_0x80b7('0x10')]));});});};exports[_0x80b7('0x1e')]=function(_0x5a931c){var _0x1dddba=this;return new Promise(function(_0x2dbb98,_0x198d77){return db['ZohoAccount'][_0x80b7('0x1f')]({'raw':_0x5a931c[_0x80b7('0x15')]?_0x5a931c['options'][_0x80b7('0x16')]===undefined?!![]:![]:!![],'where':_0x5a931c[_0x80b7('0x15')]?_0x5a931c[_0x80b7('0x15')][_0x80b7('0x17')]||null:null,'attributes':_0x5a931c[_0x80b7('0x15')]?_0x5a931c[_0x80b7('0x15')]['attributes']||null:null,'include':_0x5a931c[_0x80b7('0x15')]?_0x5a931c[_0x80b7('0x15')][_0x80b7('0x1a')]?_['map'](_0x5a931c[_0x80b7('0x15')][_0x80b7('0x1a')],function(_0x2c87e6){return{'model':db[_0x2c87e6['model']],'as':_0x2c87e6['as'],'attributes':_0x2c87e6[_0x80b7('0x18')],'include':_0x2c87e6[_0x80b7('0x1a')]?_[_0x80b7('0x1b')](_0x2c87e6[_0x80b7('0x1a')],function(_0x5971d9){return{'model':db[_0x5971d9[_0x80b7('0x1c')]],'as':_0x5971d9['as'],'attributes':_0x5971d9[_0x80b7('0x18')],'include':_0x5971d9[_0x80b7('0x1a')]?_['map'](_0x5971d9['include'],function(_0x373cbb){return{'model':db[_0x373cbb[_0x80b7('0x1c')]],'as':_0x373cbb['as'],'attributes':_0x373cbb[_0x80b7('0x18')]};}):[]};}):[]};}):[]:[]})[_0x80b7('0x1d')](function(_0x546697){logger['info'](_0x80b7('0x1e'),_0x5a931c);logger[_0x80b7('0xc')](_0x80b7('0x1e'),_0x5a931c,JSON[_0x80b7('0xd')](_0x546697));_0x2dbb98(_0x546697);})['catch'](function(_0x1226cf){logger[_0x80b7('0xe')]('ShowZohoAccount',_0x1226cf[_0x80b7('0x10')],_0x5a931c);_0x198d77(_0x1dddba['error'](0x1f4,_0x1226cf[_0x80b7('0x10')]));});});};
\ No newline at end of file
+var _0x186d=['ShowZohoAccount','find','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetZohoAccount','ZohoAccount','options','where','attributes','limit','map','include','model','then','stringify'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0x186d,0x1ca));var _0xd186=function(_0x21cf80,_0x1fb0a1){_0x21cf80=_0x21cf80-0x0;var _0x5c6bed=_0x186d[_0x21cf80];return _0x5c6bed;};'use strict';var _=require('lodash');var util=require(_0xd186('0x0'));var moment=require(_0xd186('0x1'));var BPromise=require(_0xd186('0x2'));var rs=require(_0xd186('0x3'));var fs=require('fs');var Redis=require(_0xd186('0x4'));var db=require(_0xd186('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd186('0x6'))(_0xd186('0x7'));var config=require(_0xd186('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd186('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x60fc96,_0x2ecccd,_0x4970a3){return new BPromise(function(_0x36fdc3,_0xd76bc8){return client[_0xd186('0xa')](_0x60fc96,_0x4970a3)['then'](function(_0x1ef64a){logger[_0xd186('0xb')](_0xd186('0xc'),_0x2ecccd,_0xd186('0xd'));logger[_0xd186('0xe')](_0xd186('0xf'),_0x2ecccd,'request\x20sent',JSON['stringify'](_0x1ef64a));if(_0x1ef64a[_0xd186('0x10')]){if(_0x1ef64a['error'][_0xd186('0x11')]===0x1f4){logger[_0xd186('0x10')](_0xd186('0xc'),_0x2ecccd,_0x1ef64a['error'][_0xd186('0x12')]);return _0xd76bc8(_0x1ef64a['error'][_0xd186('0x12')]);}logger[_0xd186('0x10')](_0xd186('0xc'),_0x2ecccd,_0x1ef64a[_0xd186('0x10')][_0xd186('0x12')]);return _0x36fdc3(_0x1ef64a[_0xd186('0x10')][_0xd186('0x12')]);}else{logger[_0xd186('0xb')](_0xd186('0xc'),_0x2ecccd,_0xd186('0xd'));_0x36fdc3(_0x1ef64a[_0xd186('0x13')]['message']);}})[_0xd186('0x14')](function(_0x94b224){logger[_0xd186('0x10')](_0xd186('0xc'),_0x2ecccd,_0x94b224);_0xd76bc8(_0x94b224);});});}exports[_0xd186('0x15')]=function(_0x45fc9f){var _0x23a1b0=this;return new Promise(function(_0x5d1a1c,_0x44c9d2){return db[_0xd186('0x16')]['findAll']({'raw':_0x45fc9f[_0xd186('0x17')]?_0x45fc9f[_0xd186('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x45fc9f['options']?_0x45fc9f[_0xd186('0x17')][_0xd186('0x18')]||null:null,'attributes':_0x45fc9f[_0xd186('0x17')]?_0x45fc9f[_0xd186('0x17')][_0xd186('0x19')]||null:null,'limit':_0x45fc9f['options']?_0x45fc9f[_0xd186('0x17')][_0xd186('0x1a')]||null:null,'include':_0x45fc9f[_0xd186('0x17')]?_0x45fc9f['options']['include']?_[_0xd186('0x1b')](_0x45fc9f[_0xd186('0x17')][_0xd186('0x1c')],function(_0x5a5ff0){return{'model':db[_0x5a5ff0['model']],'as':_0x5a5ff0['as'],'attributes':_0x5a5ff0[_0xd186('0x19')],'include':_0x5a5ff0[_0xd186('0x1c')]?_['map'](_0x5a5ff0['include'],function(_0x116618){return{'model':db[_0x116618[_0xd186('0x1d')]],'as':_0x116618['as'],'attributes':_0x116618[_0xd186('0x19')],'include':_0x116618[_0xd186('0x1c')]?_[_0xd186('0x1b')](_0x116618[_0xd186('0x1c')],function(_0x341818){return{'model':db[_0x341818['model']],'as':_0x341818['as'],'attributes':_0x341818['attributes']};}):[]};}):[]};}):[]:[]})[_0xd186('0x1e')](function(_0x1e2cce){logger[_0xd186('0xb')](_0xd186('0x15'),_0x45fc9f);logger[_0xd186('0xe')]('GetZohoAccount',_0x45fc9f,JSON[_0xd186('0x1f')](_0x1e2cce));_0x5d1a1c(_0x1e2cce);})[_0xd186('0x14')](function(_0x27b95a){logger[_0xd186('0x10')](_0xd186('0x15'),_0x27b95a[_0xd186('0x12')],_0x45fc9f);_0x44c9d2(_0x23a1b0[_0xd186('0x10')](0x1f4,_0x27b95a[_0xd186('0x12')]));});});};exports[_0xd186('0x20')]=function(_0x2dbedd){var _0x37c08f=this;return new Promise(function(_0x3e6d60,_0x4493b9){return db[_0xd186('0x16')][_0xd186('0x21')]({'raw':_0x2dbedd[_0xd186('0x17')]?_0x2dbedd[_0xd186('0x17')][_0xd186('0x22')]===undefined?!![]:![]:!![],'where':_0x2dbedd[_0xd186('0x17')]?_0x2dbedd[_0xd186('0x17')][_0xd186('0x18')]||null:null,'attributes':_0x2dbedd[_0xd186('0x17')]?_0x2dbedd[_0xd186('0x17')][_0xd186('0x19')]||null:null,'include':_0x2dbedd[_0xd186('0x17')]?_0x2dbedd[_0xd186('0x17')][_0xd186('0x1c')]?_[_0xd186('0x1b')](_0x2dbedd[_0xd186('0x17')][_0xd186('0x1c')],function(_0x24629e){return{'model':db[_0x24629e[_0xd186('0x1d')]],'as':_0x24629e['as'],'attributes':_0x24629e['attributes'],'include':_0x24629e[_0xd186('0x1c')]?_[_0xd186('0x1b')](_0x24629e[_0xd186('0x1c')],function(_0x111783){return{'model':db[_0x111783[_0xd186('0x1d')]],'as':_0x111783['as'],'attributes':_0x111783[_0xd186('0x19')],'include':_0x111783[_0xd186('0x1c')]?_[_0xd186('0x1b')](_0x111783['include'],function(_0x265eed){return{'model':db[_0x265eed[_0xd186('0x1d')]],'as':_0x265eed['as'],'attributes':_0x265eed[_0xd186('0x19')]};}):[]};}):[]};}):[]:[]})[_0xd186('0x1e')](function(_0x473a4b){logger[_0xd186('0xb')](_0xd186('0x20'),_0x2dbedd);logger[_0xd186('0xe')](_0xd186('0x20'),_0x2dbedd,JSON[_0xd186('0x1f')](_0x473a4b));_0x3e6d60(_0x473a4b);})[_0xd186('0x14')](function(_0x5a6afc){logger['error'](_0xd186('0x20'),_0x5a6afc[_0xd186('0x12')],_0x2dbedd);_0x4493b9(_0x37c08f['error'](0x1f4,_0x5a6afc[_0xd186('0x12')]));});});};
\ No newline at end of file
index 0d9d405..44e8d5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5540=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','show','/:id/fields','getFields','/:id/subjects','isAuthenticated','getSubjects','/:id/descriptions','getDescriptions','create','put','/:id','destroy','exports','multer','util'];(function(_0x20dd87,_0x510d8b){var _0x31d72f=function(_0x42bc8e){while(--_0x42bc8e){_0x20dd87['push'](_0x20dd87['shift']());}};_0x31d72f(++_0x510d8b);}(_0x5540,0x106));var _0x0554=function(_0x31feca,_0x3ac71c){_0x31feca=_0x31feca-0x0;var _0x2654d7=_0x5540[_0x31feca];return _0x2654d7;};'use strict';var multer=require(_0x0554('0x0'));var util=require(_0x0554('0x1'));var path=require('path');var timeout=require(_0x0554('0x2'));var express=require(_0x0554('0x3'));var router=express[_0x0554('0x4')]();var fs_extra=require(_0x0554('0x5'));var auth=require(_0x0554('0x6'));var interaction=require(_0x0554('0x7'));var config=require(_0x0554('0x8'));var controller=require(_0x0554('0x9'));router[_0x0554('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x0554('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0554('0xb')]);router[_0x0554('0xa')](_0x0554('0xc'),auth['isAuthenticated'](),controller[_0x0554('0xd')]);router[_0x0554('0xa')](_0x0554('0xe'),auth[_0x0554('0xf')](),controller[_0x0554('0x10')]);router['get'](_0x0554('0x11'),auth[_0x0554('0xf')](),controller[_0x0554('0x12')]);router['post']('/',auth[_0x0554('0xf')](),controller[_0x0554('0x13')]);router[_0x0554('0x14')](_0x0554('0x15'),auth[_0x0554('0xf')](),controller['update']);router['delete'](_0x0554('0x15'),auth[_0x0554('0xf')](),controller[_0x0554('0x16')]);module[_0x0554('0x17')]=router;
\ No newline at end of file
+var _0xf07d=['/:id/descriptions','post','create','/:id','update','delete','destroy','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getSubjects'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xf07d,0xb0));var _0xdf07=function(_0x42cc1e,_0x3b7b56){_0x42cc1e=_0x42cc1e-0x0;var _0x512ba9=_0xf07d[_0x42cc1e];return _0x512ba9;};'use strict';var multer=require(_0xdf07('0x0'));var util=require('util');var path=require(_0xdf07('0x1'));var timeout=require('connect-timeout');var express=require(_0xdf07('0x2'));var router=express['Router']();var fs_extra=require(_0xdf07('0x3'));var auth=require(_0xdf07('0x4'));var interaction=require(_0xdf07('0x5'));var config=require(_0xdf07('0x6'));var controller=require(_0xdf07('0x7'));router[_0xdf07('0x8')]('/',auth[_0xdf07('0x9')](),controller[_0xdf07('0xa')]);router[_0xdf07('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xdf07('0xb')]);router[_0xdf07('0x8')](_0xdf07('0xc'),auth[_0xdf07('0x9')](),controller[_0xdf07('0xd')]);router['get'](_0xdf07('0xe'),auth['isAuthenticated'](),controller[_0xdf07('0xf')]);router[_0xdf07('0x8')](_0xdf07('0x10'),auth[_0xdf07('0x9')](),controller['getDescriptions']);router[_0xdf07('0x11')]('/',auth[_0xdf07('0x9')](),controller[_0xdf07('0x12')]);router['put'](_0xdf07('0x13'),auth['isAuthenticated'](),controller[_0xdf07('0x14')]);router[_0xdf07('0x15')](_0xdf07('0x13'),auth[_0xdf07('0x9')](),controller[_0xdf07('0x16')]);module[_0xdf07('0x17')]=router;
\ No newline at end of file
index 158c81a..5d1888e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94ac=['contact_lead','sequelize','exports','STRING','ENUM','lead','contact','nothing'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0x94ac,0x139));var _0xc94a=function(_0x3ad08f,_0x37b7aa){_0x3ad08f=_0x3ad08f-0x0;var _0x26c37c=_0x94ac[_0x3ad08f];return _0x26c37c;};'use strict';var Sequelize=require(_0xc94a('0x0'));module[_0xc94a('0x1')]={'name':{'type':Sequelize[_0xc94a('0x2')]},'moduleCreate':{'type':Sequelize[_0xc94a('0x3')](_0xc94a('0x4'),_0xc94a('0x5'),_0xc94a('0x6')),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0xc94a('0x3')](_0xc94a('0x7'),'contact','lead'),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0xc94a('0x2')]}};
\ No newline at end of file
+var _0x6c1c=['lead','nothing','contact_lead','contact','STRING','sequelize','exports','ENUM'];(function(_0x4b3e49,_0x9e566c){var _0x57e339=function(_0x1430e9){while(--_0x1430e9){_0x4b3e49['push'](_0x4b3e49['shift']());}};_0x57e339(++_0x9e566c);}(_0x6c1c,0x18d));var _0xc6c1=function(_0x43dc7e,_0x49a390){_0x43dc7e=_0x43dc7e-0x0;var _0x21e12d=_0x6c1c[_0x43dc7e];return _0x21e12d;};'use strict';var Sequelize=require(_0xc6c1('0x0'));module[_0xc6c1('0x1')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0xc6c1('0x2')](_0xc6c1('0x3'),'contact',_0xc6c1('0x4')),'defaultValue':_0xc6c1('0x3')},'moduleSearch':{'type':Sequelize[_0xc6c1('0x2')](_0xc6c1('0x5'),_0xc6c1('0x6'),'lead'),'defaultValue':_0xc6c1('0x5')},'description':{'type':Sequelize[_0xc6c1('0x7')]}};
\ No newline at end of file
index f9d75ca..66b7539 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1ef=['attributes','length','hasOwnProperty','nolimit','sort','pick','where','VIRTUAL','merge','findAll','rows','then','catch','show','fields','includeAll','include','options','create','body','find','params','getFields','findOne','ZohoField','order','filter','getSubjects','getDescriptions','eml-format','rimraf','moment','bluebird','mustache','util','path','sox','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','error','name','index','ZohoConfiguration','rawAttributes','type','key','model','map','query','keys','filters','intersection'];(function(_0x1e03a6,_0xf0349){var _0x295b64=function(_0x1ad0a5){while(--_0x1ad0a5){_0x1e03a6['push'](_0x1e03a6['shift']());}};_0x295b64(++_0xf0349);}(_0xa1ef,0x1f1));var _0xfa1e=function(_0x4e158a,_0x31b81e){_0x4e158a=_0x4e158a-0x0;var _0x168261=_0xa1ef[_0x4e158a];return _0x168261;};'use strict';var emlformat=require(_0xfa1e('0x0'));var rimraf=require(_0xfa1e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xfa1e('0x2'));var BPromise=require(_0xfa1e('0x3'));var Mustache=require(_0xfa1e('0x4'));var util=require(_0xfa1e('0x5'));var path=require(_0xfa1e('0x6'));var sox=require(_0xfa1e('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfa1e('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfa1e('0x9'));var deskjs=require('desk.js');var toCsv=require(_0xfa1e('0xa'));var querystring=require(_0xfa1e('0xb'));var Papa=require(_0xfa1e('0xc'));var Redis=require(_0xfa1e('0xd'));var authService=require(_0xfa1e('0xe'));var qs=require(_0xfa1e('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfa1e('0x10'))(_0xfa1e('0x11'));var utils=require('../../config/utils');var config=require(_0xfa1e('0x12'));var licenseUtil=require(_0xfa1e('0x13'));var db=require(_0xfa1e('0x14'))['db'];function respondWithStatusCode(_0x1c2397,_0x297df3){_0x297df3=_0x297df3||0xcc;return function(_0x46e804){if(_0x46e804){return _0x1c2397['sendStatus'](_0x297df3);}return _0x1c2397[_0xfa1e('0x15')](_0x297df3)[_0xfa1e('0x16')]();};}function respondWithResult(_0x2e3763,_0xd2adeb){_0xd2adeb=_0xd2adeb||0xc8;return function(_0x363d11){if(_0x363d11){return _0x2e3763[_0xfa1e('0x15')](_0xd2adeb)[_0xfa1e('0x17')](_0x363d11);}};}function respondWithFilteredResult(_0x5ef54f,_0x30ff35){return function(_0x4de925){if(_0x4de925){var _0x389cdc=typeof _0x30ff35[_0xfa1e('0x18')]==='undefined'&&typeof _0x30ff35[_0xfa1e('0x19')]===_0xfa1e('0x1a');var _0x5eef40=_0x4de925[_0xfa1e('0x1b')];var _0x10ceee=_0x389cdc?0x0:_0x30ff35[_0xfa1e('0x18')];var _0x568439=_0x389cdc?_0x4de925[_0xfa1e('0x1b')]:_0x30ff35[_0xfa1e('0x18')]+_0x30ff35[_0xfa1e('0x19')];var _0x56b119;if(_0x568439>=_0x5eef40){_0x568439=_0x5eef40;_0x56b119=0xc8;}else{_0x56b119=0xce;}_0x5ef54f[_0xfa1e('0x15')](_0x56b119);return _0x5ef54f[_0xfa1e('0x1c')](_0xfa1e('0x1d'),_0x10ceee+'-'+_0x568439+'/'+_0x5eef40)[_0xfa1e('0x17')](_0x4de925);}return null;};}function patchUpdates(_0x3a9b3c){return function(_0xb6c64f){try{jsonpatch[_0xfa1e('0x1e')](_0xb6c64f,_0x3a9b3c,!![]);}catch(_0x5849be){return BPromise[_0xfa1e('0x1f')](_0x5849be);}return _0xb6c64f[_0xfa1e('0x20')]();};}function saveUpdates(_0x1a1f94,_0x22c376){return function(_0x2387cd){if(_0x2387cd){return _0x2387cd[_0xfa1e('0x21')](_0x1a1f94)['then'](function(_0x588a8f){return _0x588a8f;});}return null;};}function removeEntity(_0x272d38,_0x3a171c){return function(_0x514b4c){if(_0x514b4c){return _0x514b4c[_0xfa1e('0x22')]()['then'](function(){_0x272d38[_0xfa1e('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x503989,_0x3ab60b){return function(_0x1f1fd4){if(!_0x1f1fd4){_0x503989[_0xfa1e('0x23')](0x194);}return _0x1f1fd4;};}function handleError(_0x1bade2,_0x48a10b){_0x48a10b=_0x48a10b||0x1f4;return function(_0x166869){logger[_0xfa1e('0x24')](_0x166869['stack']);if(_0x166869[_0xfa1e('0x25')]){delete _0x166869['name'];}_0x1bade2[_0xfa1e('0x15')](_0x48a10b)['send'](_0x166869);};}exports[_0xfa1e('0x26')]=function(_0x39eb7d,_0x5c9f92){var _0x3f0c7c={},_0x2f5129={},_0x3bc399={'count':0x0,'rows':[]};var _0x420e50=_['map'](db[_0xfa1e('0x27')][_0xfa1e('0x28')],function(_0x22e546){return{'name':_0x22e546['fieldName'],'type':_0x22e546[_0xfa1e('0x29')][_0xfa1e('0x2a')]};});_0x2f5129[_0xfa1e('0x2b')]=_[_0xfa1e('0x2c')](_0x420e50,_0xfa1e('0x25'));_0x2f5129[_0xfa1e('0x2d')]=_[_0xfa1e('0x2e')](_0x39eb7d[_0xfa1e('0x2d')]);_0x2f5129[_0xfa1e('0x2f')]=_[_0xfa1e('0x30')](_0x2f5129[_0xfa1e('0x2b')],_0x2f5129[_0xfa1e('0x2d')]);_0x3f0c7c[_0xfa1e('0x31')]=_[_0xfa1e('0x30')](_0x2f5129[_0xfa1e('0x2b')],qs['fields'](_0x39eb7d[_0xfa1e('0x2d')]['fields']));_0x3f0c7c[_0xfa1e('0x31')]=_0x3f0c7c['attributes'][_0xfa1e('0x32')]?_0x3f0c7c[_0xfa1e('0x31')]:_0x2f5129['model'];if(!_0x39eb7d[_0xfa1e('0x2d')][_0xfa1e('0x33')](_0xfa1e('0x34'))){_0x3f0c7c['limit']=qs['limit'](_0x39eb7d[_0xfa1e('0x2d')][_0xfa1e('0x19')]);_0x3f0c7c[_0xfa1e('0x18')]=qs[_0xfa1e('0x18')](_0x39eb7d[_0xfa1e('0x2d')][_0xfa1e('0x18')]);}_0x3f0c7c['order']=qs[_0xfa1e('0x35')](_0x39eb7d[_0xfa1e('0x2d')]['sort']);_0x3f0c7c['where']=qs['filters'](_[_0xfa1e('0x36')](_0x39eb7d[_0xfa1e('0x2d')],_0x2f5129[_0xfa1e('0x2f')]),_0x420e50);if(_0x39eb7d['query']['filter']){_0x3f0c7c[_0xfa1e('0x37')]=_['merge'](_0x3f0c7c[_0xfa1e('0x37')],{'$or':_['map'](_0x420e50,function(_0x112d04){if(_0x112d04[_0xfa1e('0x29')]!==_0xfa1e('0x38')){var _0x1f3e4d={};_0x1f3e4d[_0x112d04[_0xfa1e('0x25')]]={'$like':'%'+_0x39eb7d[_0xfa1e('0x2d')]['filter']+'%'};return _0x1f3e4d;}})});}_0x3f0c7c=_[_0xfa1e('0x39')]({},_0x3f0c7c,_0x39eb7d['options']);var _0x2ec951={'where':_0x3f0c7c[_0xfa1e('0x37')]};return db[_0xfa1e('0x27')][_0xfa1e('0x1b')](_0x2ec951)['then'](function(_0x29868a){_0x3bc399[_0xfa1e('0x1b')]=_0x29868a;if(_0x39eb7d[_0xfa1e('0x2d')]['includeAll']){_0x3f0c7c['include']=[{'all':!![]}];}return db[_0xfa1e('0x27')][_0xfa1e('0x3a')](_0x3f0c7c);})['then'](function(_0x34d809){_0x3bc399[_0xfa1e('0x3b')]=_0x34d809;return _0x3bc399;})[_0xfa1e('0x3c')](respondWithFilteredResult(_0x5c9f92,_0x3f0c7c))[_0xfa1e('0x3d')](handleError(_0x5c9f92,null));};exports[_0xfa1e('0x3e')]=function(_0x3c8e7c,_0x2e729b){var _0x1c575a={'raw':![],'where':{'id':_0x3c8e7c['params']['id']}},_0x2d60c9={};_0x2d60c9[_0xfa1e('0x2b')]=_[_0xfa1e('0x2e')](db[_0xfa1e('0x27')][_0xfa1e('0x28')]);_0x2d60c9[_0xfa1e('0x2d')]=_[_0xfa1e('0x2e')](_0x3c8e7c[_0xfa1e('0x2d')]);_0x2d60c9[_0xfa1e('0x2f')]=_[_0xfa1e('0x30')](_0x2d60c9[_0xfa1e('0x2b')],_0x2d60c9[_0xfa1e('0x2d')]);_0x1c575a[_0xfa1e('0x31')]=_['intersection'](_0x2d60c9[_0xfa1e('0x2b')],qs[_0xfa1e('0x3f')](_0x3c8e7c[_0xfa1e('0x2d')][_0xfa1e('0x3f')]));_0x1c575a[_0xfa1e('0x31')]=_0x1c575a[_0xfa1e('0x31')][_0xfa1e('0x32')]?_0x1c575a[_0xfa1e('0x31')]:_0x2d60c9[_0xfa1e('0x2b')];if(_0x3c8e7c[_0xfa1e('0x2d')][_0xfa1e('0x40')]){_0x1c575a[_0xfa1e('0x41')]=[{'all':!![]}];}_0x1c575a=_[_0xfa1e('0x39')]({},_0x1c575a,_0x3c8e7c[_0xfa1e('0x42')]);return db['ZohoConfiguration']['find'](_0x1c575a)[_0xfa1e('0x3c')](handleEntityNotFound(_0x2e729b,null))[_0xfa1e('0x3c')](respondWithResult(_0x2e729b,null))['catch'](handleError(_0x2e729b,null));};exports[_0xfa1e('0x43')]=function(_0xe1edbc,_0x19bac8){return db[_0xfa1e('0x27')][_0xfa1e('0x43')](_0xe1edbc['body'],{})[_0xfa1e('0x3c')](respondWithResult(_0x19bac8,0xc9))[_0xfa1e('0x3d')](handleError(_0x19bac8,null));};exports[_0xfa1e('0x21')]=function(_0x381262,_0x2a5709){if(_0x381262[_0xfa1e('0x44')]['id']){delete _0x381262['body']['id'];}return db[_0xfa1e('0x27')][_0xfa1e('0x45')]({'where':{'id':_0x381262[_0xfa1e('0x46')]['id']}})[_0xfa1e('0x3c')](handleEntityNotFound(_0x2a5709,null))['then'](saveUpdates(_0x381262[_0xfa1e('0x44')],null))['then'](respondWithResult(_0x2a5709,null))[_0xfa1e('0x3d')](handleError(_0x2a5709,null));};exports['destroy']=function(_0x36f69c,_0x51f4fc){return db['ZohoConfiguration'][_0xfa1e('0x45')]({'where':{'id':_0x36f69c['params']['id']}})[_0xfa1e('0x3c')](handleEntityNotFound(_0x51f4fc,null))[_0xfa1e('0x3c')](removeEntity(_0x51f4fc,null))[_0xfa1e('0x3d')](handleError(_0x51f4fc,null));};exports[_0xfa1e('0x47')]=function(_0x503ee9,_0x2f5471,_0x1b2cc8){var _0x438f94={};var _0x398209={};var _0x49dfe2;var _0x34a206;return db[_0xfa1e('0x27')][_0xfa1e('0x48')]({'where':{'id':_0x503ee9[_0xfa1e('0x46')]['id']}})[_0xfa1e('0x3c')](handleEntityNotFound(_0x2f5471,null))['then'](function(_0x8ad3e9){if(_0x8ad3e9){_0x49dfe2=_0x8ad3e9;_0x398209[_0xfa1e('0x2b')]=_[_0xfa1e('0x2e')](db[_0xfa1e('0x49')]['rawAttributes']);_0x398209[_0xfa1e('0x2d')]=_[_0xfa1e('0x2e')](_0x503ee9[_0xfa1e('0x2d')]);_0x398209[_0xfa1e('0x2f')]=_[_0xfa1e('0x30')](_0x398209['model'],_0x398209[_0xfa1e('0x2d')]);_0x438f94[_0xfa1e('0x31')]=_[_0xfa1e('0x30')](_0x398209['model'],qs['fields'](_0x503ee9[_0xfa1e('0x2d')]['fields']));_0x438f94[_0xfa1e('0x31')]=_0x438f94[_0xfa1e('0x31')][_0xfa1e('0x32')]?_0x438f94[_0xfa1e('0x31')]:_0x398209[_0xfa1e('0x2b')];_0x438f94[_0xfa1e('0x4a')]=qs[_0xfa1e('0x35')](_0x503ee9[_0xfa1e('0x2d')]['sort']);_0x438f94['where']=qs[_0xfa1e('0x2f')](_[_0xfa1e('0x36')](_0x503ee9[_0xfa1e('0x2d')],_0x398209['filters']));if(_0x503ee9[_0xfa1e('0x2d')][_0xfa1e('0x4b')]){_0x438f94[_0xfa1e('0x37')]=_[_0xfa1e('0x39')](_0x438f94[_0xfa1e('0x37')],{'$or':_['map'](_0x438f94[_0xfa1e('0x31')],function(_0x1307fc){var _0x5b273d={};_0x5b273d[_0x1307fc]={'$like':'%'+_0x503ee9[_0xfa1e('0x2d')]['filter']+'%'};return _0x5b273d;})});}_0x438f94=_[_0xfa1e('0x39')]({},_0x438f94,_0x503ee9[_0xfa1e('0x42')]);return _0x49dfe2[_0xfa1e('0x47')](_0x438f94);}})[_0xfa1e('0x3c')](function(_0x4af1d8){if(_0x4af1d8){_0x34a206=_0x4af1d8[_0xfa1e('0x32')];if(!_0x503ee9[_0xfa1e('0x2d')]['hasOwnProperty'](_0xfa1e('0x34'))){_0x438f94[_0xfa1e('0x19')]=qs['limit'](_0x503ee9[_0xfa1e('0x2d')]['limit']);_0x438f94[_0xfa1e('0x18')]=qs[_0xfa1e('0x18')](_0x503ee9['query'][_0xfa1e('0x18')]);}return _0x49dfe2[_0xfa1e('0x47')](_0x438f94);}})[_0xfa1e('0x3c')](function(_0x294345){if(_0x294345){return _0x294345?{'count':_0x34a206,'rows':_0x294345}:null;}})['then'](respondWithResult(_0x2f5471,null))[_0xfa1e('0x3d')](handleError(_0x2f5471,null));};exports['getSubjects']=function(_0x21a2d7,_0x1501dc,_0x2733b1){var _0x3f3e31={};var _0x997559={};var _0x116d83;var _0x292151;return db['ZohoConfiguration'][_0xfa1e('0x48')]({'where':{'id':_0x21a2d7[_0xfa1e('0x46')]['id']}})['then'](handleEntityNotFound(_0x1501dc,null))['then'](function(_0x3c25a5){if(_0x3c25a5){_0x116d83=_0x3c25a5;_0x997559[_0xfa1e('0x2b')]=_[_0xfa1e('0x2e')](db[_0xfa1e('0x49')]['rawAttributes']);_0x997559[_0xfa1e('0x2d')]=_['keys'](_0x21a2d7[_0xfa1e('0x2d')]);_0x997559[_0xfa1e('0x2f')]=_[_0xfa1e('0x30')](_0x997559[_0xfa1e('0x2b')],_0x997559['query']);_0x3f3e31[_0xfa1e('0x31')]=_['intersection'](_0x997559[_0xfa1e('0x2b')],qs[_0xfa1e('0x3f')](_0x21a2d7[_0xfa1e('0x2d')][_0xfa1e('0x3f')]));_0x3f3e31[_0xfa1e('0x31')]=_0x3f3e31[_0xfa1e('0x31')][_0xfa1e('0x32')]?_0x3f3e31[_0xfa1e('0x31')]:_0x997559[_0xfa1e('0x2b')];_0x3f3e31['order']=qs[_0xfa1e('0x35')](_0x21a2d7[_0xfa1e('0x2d')][_0xfa1e('0x35')]);_0x3f3e31[_0xfa1e('0x37')]=qs['filters'](_['pick'](_0x21a2d7[_0xfa1e('0x2d')],_0x997559[_0xfa1e('0x2f')]));if(_0x21a2d7[_0xfa1e('0x2d')][_0xfa1e('0x4b')]){_0x3f3e31[_0xfa1e('0x37')]=_['merge'](_0x3f3e31[_0xfa1e('0x37')],{'$or':_[_0xfa1e('0x2c')](_0x3f3e31[_0xfa1e('0x31')],function(_0x483d86){var _0x40c90b={};_0x40c90b[_0x483d86]={'$like':'%'+_0x21a2d7[_0xfa1e('0x2d')]['filter']+'%'};return _0x40c90b;})});}_0x3f3e31=_[_0xfa1e('0x39')]({},_0x3f3e31,_0x21a2d7[_0xfa1e('0x42')]);return _0x116d83[_0xfa1e('0x4c')](_0x3f3e31);}})[_0xfa1e('0x3c')](function(_0x3878a7){if(_0x3878a7){_0x292151=_0x3878a7['length'];if(!_0x21a2d7[_0xfa1e('0x2d')][_0xfa1e('0x33')](_0xfa1e('0x34'))){_0x3f3e31[_0xfa1e('0x19')]=qs[_0xfa1e('0x19')](_0x21a2d7[_0xfa1e('0x2d')][_0xfa1e('0x19')]);_0x3f3e31['offset']=qs['offset'](_0x21a2d7[_0xfa1e('0x2d')][_0xfa1e('0x18')]);}return _0x116d83['getSubjects'](_0x3f3e31);}})['then'](function(_0x23464c){if(_0x23464c){return _0x23464c?{'count':_0x292151,'rows':_0x23464c}:null;}})[_0xfa1e('0x3c')](respondWithResult(_0x1501dc,null))[_0xfa1e('0x3d')](handleError(_0x1501dc,null));};exports[_0xfa1e('0x4d')]=function(_0x522013,_0x43931b,_0x48aadf){var _0x5c2c0f={};var _0x53f355={};var _0x406b70;var _0xc8b5c4;return db[_0xfa1e('0x27')]['findOne']({'where':{'id':_0x522013[_0xfa1e('0x46')]['id']}})['then'](handleEntityNotFound(_0x43931b,null))[_0xfa1e('0x3c')](function(_0x19ae0d){if(_0x19ae0d){_0x406b70=_0x19ae0d;_0x53f355['model']=_['keys'](db[_0xfa1e('0x49')]['rawAttributes']);_0x53f355[_0xfa1e('0x2d')]=_['keys'](_0x522013['query']);_0x53f355[_0xfa1e('0x2f')]=_[_0xfa1e('0x30')](_0x53f355[_0xfa1e('0x2b')],_0x53f355[_0xfa1e('0x2d')]);_0x5c2c0f[_0xfa1e('0x31')]=_[_0xfa1e('0x30')](_0x53f355['model'],qs[_0xfa1e('0x3f')](_0x522013['query'][_0xfa1e('0x3f')]));_0x5c2c0f['attributes']=_0x5c2c0f[_0xfa1e('0x31')]['length']?_0x5c2c0f[_0xfa1e('0x31')]:_0x53f355['model'];_0x5c2c0f[_0xfa1e('0x4a')]=qs[_0xfa1e('0x35')](_0x522013[_0xfa1e('0x2d')][_0xfa1e('0x35')]);_0x5c2c0f[_0xfa1e('0x37')]=qs[_0xfa1e('0x2f')](_[_0xfa1e('0x36')](_0x522013[_0xfa1e('0x2d')],_0x53f355['filters']));if(_0x522013['query'][_0xfa1e('0x4b')]){_0x5c2c0f[_0xfa1e('0x37')]=_[_0xfa1e('0x39')](_0x5c2c0f['where'],{'$or':_[_0xfa1e('0x2c')](_0x5c2c0f['attributes'],function(_0x3d0adf){var _0x1a387b={};_0x1a387b[_0x3d0adf]={'$like':'%'+_0x522013[_0xfa1e('0x2d')]['filter']+'%'};return _0x1a387b;})});}_0x5c2c0f=_[_0xfa1e('0x39')]({},_0x5c2c0f,_0x522013[_0xfa1e('0x42')]);return _0x406b70[_0xfa1e('0x4d')](_0x5c2c0f);}})['then'](function(_0x1115ac){if(_0x1115ac){_0xc8b5c4=_0x1115ac[_0xfa1e('0x32')];if(!_0x522013[_0xfa1e('0x2d')][_0xfa1e('0x33')](_0xfa1e('0x34'))){_0x5c2c0f[_0xfa1e('0x19')]=qs[_0xfa1e('0x19')](_0x522013[_0xfa1e('0x2d')][_0xfa1e('0x19')]);_0x5c2c0f[_0xfa1e('0x18')]=qs[_0xfa1e('0x18')](_0x522013[_0xfa1e('0x2d')]['offset']);}return _0x406b70[_0xfa1e('0x4d')](_0x5c2c0f);}})['then'](function(_0x1d57f6){if(_0x1d57f6){return _0x1d57f6?{'count':_0xc8b5c4,'rows':_0x1d57f6}:null;}})[_0xfa1e('0x3c')](respondWithResult(_0x43931b,null))[_0xfa1e('0x3d')](handleError(_0x43931b,null));};
\ No newline at end of file
+var _0x54bb=['path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','end','json','offset','undefined','limit','count','status','set','apply','reject','save','update','then','destroy','error','name','send','ZohoConfiguration','rawAttributes','fieldName','key','model','map','keys','query','attributes','intersection','fields','length','nolimit','order','sort','filters','filter','merge','where','type','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','findOne','ZohoField','pick','getFields','getSubjects','getDescriptions','hasOwnProperty','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x35a032,_0x526cae){var _0x12749c=function(_0x2b8dfd){while(--_0x2b8dfd){_0x35a032['push'](_0x35a032['shift']());}};_0x12749c(++_0x526cae);}(_0x54bb,0xef));var _0xb54b=function(_0x14490c,_0x50e8ab){_0x14490c=_0x14490c-0x0;var _0x2f6825=_0x54bb[_0x14490c];return _0x2f6825;};'use strict';var emlformat=require(_0xb54b('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb54b('0x1'));var rp=require(_0xb54b('0x2'));var moment=require(_0xb54b('0x3'));var BPromise=require(_0xb54b('0x4'));var Mustache=require(_0xb54b('0x5'));var util=require(_0xb54b('0x6'));var path=require(_0xb54b('0x7'));var sox=require(_0xb54b('0x8'));var csv=require(_0xb54b('0x9'));var ejs=require(_0xb54b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb54b('0xb'));var squel=require(_0xb54b('0xc'));var crypto=require(_0xb54b('0xd'));var jsforce=require(_0xb54b('0xe'));var deskjs=require(_0xb54b('0xf'));var toCsv=require(_0xb54b('0x9'));var querystring=require('querystring');var Papa=require(_0xb54b('0x10'));var Redis=require(_0xb54b('0x11'));var authService=require(_0xb54b('0x12'));var qs=require(_0xb54b('0x13'));var as=require(_0xb54b('0x14'));var hardwareService=require(_0xb54b('0x15'));var logger=require(_0xb54b('0x16'))(_0xb54b('0x17'));var utils=require('../../config/utils');var config=require(_0xb54b('0x18'));var licenseUtil=require(_0xb54b('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x134681,_0x5da91f){_0x5da91f=_0x5da91f||0xcc;return function(_0x34f6a8){if(_0x34f6a8){return _0x134681[_0xb54b('0x1a')](_0x5da91f);}return _0x134681['status'](_0x5da91f)[_0xb54b('0x1b')]();};}function respondWithResult(_0x5d29a7,_0x2d6694){_0x2d6694=_0x2d6694||0xc8;return function(_0x51b2af){if(_0x51b2af){return _0x5d29a7['status'](_0x2d6694)[_0xb54b('0x1c')](_0x51b2af);}};}function respondWithFilteredResult(_0x27e55d,_0x430c12){return function(_0xb9ee14){if(_0xb9ee14){var _0x4b0673=typeof _0x430c12[_0xb54b('0x1d')]===_0xb54b('0x1e')&&typeof _0x430c12[_0xb54b('0x1f')]==='undefined';var _0x3d72ba=_0xb9ee14[_0xb54b('0x20')];var _0x4841a0=_0x4b0673?0x0:_0x430c12[_0xb54b('0x1d')];var _0x46344a=_0x4b0673?_0xb9ee14[_0xb54b('0x20')]:_0x430c12[_0xb54b('0x1d')]+_0x430c12[_0xb54b('0x1f')];var _0x763106;if(_0x46344a>=_0x3d72ba){_0x46344a=_0x3d72ba;_0x763106=0xc8;}else{_0x763106=0xce;}_0x27e55d[_0xb54b('0x21')](_0x763106);return _0x27e55d[_0xb54b('0x22')]('Content-Range',_0x4841a0+'-'+_0x46344a+'/'+_0x3d72ba)[_0xb54b('0x1c')](_0xb9ee14);}return null;};}function patchUpdates(_0x317032){return function(_0x543241){try{jsonpatch[_0xb54b('0x23')](_0x543241,_0x317032,!![]);}catch(_0x128446){return BPromise[_0xb54b('0x24')](_0x128446);}return _0x543241[_0xb54b('0x25')]();};}function saveUpdates(_0x41f97f,_0x339d6c){return function(_0x128b71){if(_0x128b71){return _0x128b71[_0xb54b('0x26')](_0x41f97f)[_0xb54b('0x27')](function(_0x16a4f4){return _0x16a4f4;});}return null;};}function removeEntity(_0x11c6b7,_0x20b7bc){return function(_0x30fe9b){if(_0x30fe9b){return _0x30fe9b[_0xb54b('0x28')]()[_0xb54b('0x27')](function(){_0x11c6b7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x48a4dc,_0x2c944c){return function(_0x424ac6){if(!_0x424ac6){_0x48a4dc[_0xb54b('0x1a')](0x194);}return _0x424ac6;};}function handleError(_0xd35e83,_0x2f85dd){_0x2f85dd=_0x2f85dd||0x1f4;return function(_0x482c6f){logger[_0xb54b('0x29')](_0x482c6f['stack']);if(_0x482c6f['name']){delete _0x482c6f[_0xb54b('0x2a')];}_0xd35e83[_0xb54b('0x21')](_0x2f85dd)[_0xb54b('0x2b')](_0x482c6f);};}exports['index']=function(_0x14acbc,_0x363931){var _0x4c5055={},_0x3186c1={},_0x30fc1d={'count':0x0,'rows':[]};var _0xdf3a=_['map'](db[_0xb54b('0x2c')][_0xb54b('0x2d')],function(_0x23be14){return{'name':_0x23be14[_0xb54b('0x2e')],'type':_0x23be14['type'][_0xb54b('0x2f')]};});_0x3186c1[_0xb54b('0x30')]=_[_0xb54b('0x31')](_0xdf3a,_0xb54b('0x2a'));_0x3186c1['query']=_[_0xb54b('0x32')](_0x14acbc[_0xb54b('0x33')]);_0x3186c1['filters']=_['intersection'](_0x3186c1[_0xb54b('0x30')],_0x3186c1[_0xb54b('0x33')]);_0x4c5055[_0xb54b('0x34')]=_[_0xb54b('0x35')](_0x3186c1[_0xb54b('0x30')],qs[_0xb54b('0x36')](_0x14acbc[_0xb54b('0x33')][_0xb54b('0x36')]));_0x4c5055[_0xb54b('0x34')]=_0x4c5055[_0xb54b('0x34')][_0xb54b('0x37')]?_0x4c5055[_0xb54b('0x34')]:_0x3186c1[_0xb54b('0x30')];if(!_0x14acbc[_0xb54b('0x33')]['hasOwnProperty'](_0xb54b('0x38'))){_0x4c5055[_0xb54b('0x1f')]=qs['limit'](_0x14acbc[_0xb54b('0x33')][_0xb54b('0x1f')]);_0x4c5055['offset']=qs[_0xb54b('0x1d')](_0x14acbc[_0xb54b('0x33')]['offset']);}_0x4c5055[_0xb54b('0x39')]=qs[_0xb54b('0x3a')](_0x14acbc['query'][_0xb54b('0x3a')]);_0x4c5055['where']=qs[_0xb54b('0x3b')](_['pick'](_0x14acbc['query'],_0x3186c1[_0xb54b('0x3b')]),_0xdf3a);if(_0x14acbc[_0xb54b('0x33')][_0xb54b('0x3c')]){_0x4c5055['where']=_[_0xb54b('0x3d')](_0x4c5055[_0xb54b('0x3e')],{'$or':_[_0xb54b('0x31')](_0xdf3a,function(_0x36a310){if(_0x36a310[_0xb54b('0x3f')]!==_0xb54b('0x40')){var _0x57b34b={};_0x57b34b[_0x36a310['name']]={'$like':'%'+_0x14acbc[_0xb54b('0x33')][_0xb54b('0x3c')]+'%'};return _0x57b34b;}})});}_0x4c5055=_[_0xb54b('0x3d')]({},_0x4c5055,_0x14acbc[_0xb54b('0x41')]);var _0x2d6f0f={'where':_0x4c5055[_0xb54b('0x3e')]};return db[_0xb54b('0x2c')][_0xb54b('0x20')](_0x2d6f0f)[_0xb54b('0x27')](function(_0x24f23b){_0x30fc1d[_0xb54b('0x20')]=_0x24f23b;if(_0x14acbc[_0xb54b('0x33')][_0xb54b('0x42')]){_0x4c5055[_0xb54b('0x43')]=[{'all':!![]}];}return db[_0xb54b('0x2c')]['findAll'](_0x4c5055);})[_0xb54b('0x27')](function(_0x89c9c7){_0x30fc1d[_0xb54b('0x44')]=_0x89c9c7;return _0x30fc1d;})[_0xb54b('0x27')](respondWithFilteredResult(_0x363931,_0x4c5055))[_0xb54b('0x45')](handleError(_0x363931,null));};exports[_0xb54b('0x46')]=function(_0x5a245a,_0x4f6e90){var _0x2c0615={'raw':![],'where':{'id':_0x5a245a[_0xb54b('0x47')]['id']}},_0x3ff4e4={};_0x3ff4e4[_0xb54b('0x30')]=_['keys'](db[_0xb54b('0x2c')][_0xb54b('0x2d')]);_0x3ff4e4[_0xb54b('0x33')]=_['keys'](_0x5a245a[_0xb54b('0x33')]);_0x3ff4e4[_0xb54b('0x3b')]=_[_0xb54b('0x35')](_0x3ff4e4[_0xb54b('0x30')],_0x3ff4e4['query']);_0x2c0615[_0xb54b('0x34')]=_[_0xb54b('0x35')](_0x3ff4e4[_0xb54b('0x30')],qs['fields'](_0x5a245a[_0xb54b('0x33')][_0xb54b('0x36')]));_0x2c0615[_0xb54b('0x34')]=_0x2c0615['attributes'][_0xb54b('0x37')]?_0x2c0615['attributes']:_0x3ff4e4[_0xb54b('0x30')];if(_0x5a245a[_0xb54b('0x33')]['includeAll']){_0x2c0615[_0xb54b('0x43')]=[{'all':!![]}];}_0x2c0615=_[_0xb54b('0x3d')]({},_0x2c0615,_0x5a245a[_0xb54b('0x41')]);return db[_0xb54b('0x2c')][_0xb54b('0x48')](_0x2c0615)['then'](handleEntityNotFound(_0x4f6e90,null))['then'](respondWithResult(_0x4f6e90,null))['catch'](handleError(_0x4f6e90,null));};exports[_0xb54b('0x49')]=function(_0x32d848,_0x2c5440){return db['ZohoConfiguration'][_0xb54b('0x49')](_0x32d848[_0xb54b('0x4a')],{})[_0xb54b('0x27')](respondWithResult(_0x2c5440,0xc9))[_0xb54b('0x45')](handleError(_0x2c5440,null));};exports[_0xb54b('0x26')]=function(_0x38b7ae,_0x5791fd){if(_0x38b7ae[_0xb54b('0x4a')]['id']){delete _0x38b7ae[_0xb54b('0x4a')]['id'];}return db[_0xb54b('0x2c')][_0xb54b('0x48')]({'where':{'id':_0x38b7ae[_0xb54b('0x47')]['id']}})[_0xb54b('0x27')](handleEntityNotFound(_0x5791fd,null))['then'](saveUpdates(_0x38b7ae['body'],null))['then'](respondWithResult(_0x5791fd,null))['catch'](handleError(_0x5791fd,null));};exports[_0xb54b('0x28')]=function(_0x19d8ff,_0x17c441){return db[_0xb54b('0x2c')][_0xb54b('0x48')]({'where':{'id':_0x19d8ff['params']['id']}})['then'](handleEntityNotFound(_0x17c441,null))[_0xb54b('0x27')](removeEntity(_0x17c441,null))['catch'](handleError(_0x17c441,null));};exports['getFields']=function(_0x908aa3,_0x567046,_0x2af6de){var _0x39bfc4={};var _0x6c4d5d={};var _0x2cb310;var _0x1e9ca8;return db[_0xb54b('0x2c')][_0xb54b('0x4b')]({'where':{'id':_0x908aa3[_0xb54b('0x47')]['id']}})[_0xb54b('0x27')](handleEntityNotFound(_0x567046,null))['then'](function(_0x2618cd){if(_0x2618cd){_0x2cb310=_0x2618cd;_0x6c4d5d[_0xb54b('0x30')]=_['keys'](db[_0xb54b('0x4c')]['rawAttributes']);_0x6c4d5d[_0xb54b('0x33')]=_[_0xb54b('0x32')](_0x908aa3[_0xb54b('0x33')]);_0x6c4d5d[_0xb54b('0x3b')]=_[_0xb54b('0x35')](_0x6c4d5d['model'],_0x6c4d5d[_0xb54b('0x33')]);_0x39bfc4[_0xb54b('0x34')]=_[_0xb54b('0x35')](_0x6c4d5d[_0xb54b('0x30')],qs[_0xb54b('0x36')](_0x908aa3['query'][_0xb54b('0x36')]));_0x39bfc4[_0xb54b('0x34')]=_0x39bfc4[_0xb54b('0x34')][_0xb54b('0x37')]?_0x39bfc4[_0xb54b('0x34')]:_0x6c4d5d['model'];_0x39bfc4[_0xb54b('0x39')]=qs['sort'](_0x908aa3[_0xb54b('0x33')][_0xb54b('0x3a')]);_0x39bfc4['where']=qs[_0xb54b('0x3b')](_[_0xb54b('0x4d')](_0x908aa3[_0xb54b('0x33')],_0x6c4d5d[_0xb54b('0x3b')]));if(_0x908aa3['query']['filter']){_0x39bfc4[_0xb54b('0x3e')]=_[_0xb54b('0x3d')](_0x39bfc4[_0xb54b('0x3e')],{'$or':_[_0xb54b('0x31')](_0x39bfc4[_0xb54b('0x34')],function(_0x4e5b3c){var _0x331d7d={};_0x331d7d[_0x4e5b3c]={'$like':'%'+_0x908aa3['query'][_0xb54b('0x3c')]+'%'};return _0x331d7d;})});}_0x39bfc4=_[_0xb54b('0x3d')]({},_0x39bfc4,_0x908aa3[_0xb54b('0x41')]);return _0x2cb310[_0xb54b('0x4e')](_0x39bfc4);}})[_0xb54b('0x27')](function(_0x1b7bdb){if(_0x1b7bdb){_0x1e9ca8=_0x1b7bdb['length'];if(!_0x908aa3[_0xb54b('0x33')]['hasOwnProperty'](_0xb54b('0x38'))){_0x39bfc4[_0xb54b('0x1f')]=qs[_0xb54b('0x1f')](_0x908aa3['query'][_0xb54b('0x1f')]);_0x39bfc4[_0xb54b('0x1d')]=qs[_0xb54b('0x1d')](_0x908aa3[_0xb54b('0x33')][_0xb54b('0x1d')]);}return _0x2cb310['getFields'](_0x39bfc4);}})[_0xb54b('0x27')](function(_0x5aadcc){if(_0x5aadcc){return _0x5aadcc?{'count':_0x1e9ca8,'rows':_0x5aadcc}:null;}})['then'](respondWithResult(_0x567046,null))[_0xb54b('0x45')](handleError(_0x567046,null));};exports[_0xb54b('0x4f')]=function(_0x3337fa,_0xe99ad8,_0x9d7ad7){var _0x52c4cc={};var _0x48fd7f={};var _0x531e63;var _0x1f665c;return db[_0xb54b('0x2c')][_0xb54b('0x4b')]({'where':{'id':_0x3337fa[_0xb54b('0x47')]['id']}})[_0xb54b('0x27')](handleEntityNotFound(_0xe99ad8,null))[_0xb54b('0x27')](function(_0x439c19){if(_0x439c19){_0x531e63=_0x439c19;_0x48fd7f[_0xb54b('0x30')]=_[_0xb54b('0x32')](db[_0xb54b('0x4c')][_0xb54b('0x2d')]);_0x48fd7f[_0xb54b('0x33')]=_[_0xb54b('0x32')](_0x3337fa['query']);_0x48fd7f[_0xb54b('0x3b')]=_[_0xb54b('0x35')](_0x48fd7f[_0xb54b('0x30')],_0x48fd7f[_0xb54b('0x33')]);_0x52c4cc['attributes']=_['intersection'](_0x48fd7f['model'],qs[_0xb54b('0x36')](_0x3337fa[_0xb54b('0x33')][_0xb54b('0x36')]));_0x52c4cc['attributes']=_0x52c4cc[_0xb54b('0x34')][_0xb54b('0x37')]?_0x52c4cc[_0xb54b('0x34')]:_0x48fd7f[_0xb54b('0x30')];_0x52c4cc['order']=qs['sort'](_0x3337fa[_0xb54b('0x33')][_0xb54b('0x3a')]);_0x52c4cc['where']=qs[_0xb54b('0x3b')](_['pick'](_0x3337fa[_0xb54b('0x33')],_0x48fd7f['filters']));if(_0x3337fa[_0xb54b('0x33')][_0xb54b('0x3c')]){_0x52c4cc[_0xb54b('0x3e')]=_[_0xb54b('0x3d')](_0x52c4cc[_0xb54b('0x3e')],{'$or':_[_0xb54b('0x31')](_0x52c4cc[_0xb54b('0x34')],function(_0x33a799){var _0xfdfce6={};_0xfdfce6[_0x33a799]={'$like':'%'+_0x3337fa[_0xb54b('0x33')][_0xb54b('0x3c')]+'%'};return _0xfdfce6;})});}_0x52c4cc=_['merge']({},_0x52c4cc,_0x3337fa['options']);return _0x531e63[_0xb54b('0x4f')](_0x52c4cc);}})[_0xb54b('0x27')](function(_0x54ce1e){if(_0x54ce1e){_0x1f665c=_0x54ce1e[_0xb54b('0x37')];if(!_0x3337fa[_0xb54b('0x33')]['hasOwnProperty'](_0xb54b('0x38'))){_0x52c4cc[_0xb54b('0x1f')]=qs['limit'](_0x3337fa['query'][_0xb54b('0x1f')]);_0x52c4cc[_0xb54b('0x1d')]=qs[_0xb54b('0x1d')](_0x3337fa['query'][_0xb54b('0x1d')]);}return _0x531e63[_0xb54b('0x4f')](_0x52c4cc);}})[_0xb54b('0x27')](function(_0x2bac74){if(_0x2bac74){return _0x2bac74?{'count':_0x1f665c,'rows':_0x2bac74}:null;}})[_0xb54b('0x27')](respondWithResult(_0xe99ad8,null))[_0xb54b('0x45')](handleError(_0xe99ad8,null));};exports[_0xb54b('0x50')]=function(_0x4139be,_0x16343b,_0x29cf29){var _0x16a221={};var _0x4a1b62={};var _0x4312dd;var _0xdadc2e;return db[_0xb54b('0x2c')]['findOne']({'where':{'id':_0x4139be[_0xb54b('0x47')]['id']}})['then'](handleEntityNotFound(_0x16343b,null))[_0xb54b('0x27')](function(_0x3dc920){if(_0x3dc920){_0x4312dd=_0x3dc920;_0x4a1b62[_0xb54b('0x30')]=_['keys'](db[_0xb54b('0x4c')][_0xb54b('0x2d')]);_0x4a1b62['query']=_[_0xb54b('0x32')](_0x4139be[_0xb54b('0x33')]);_0x4a1b62['filters']=_[_0xb54b('0x35')](_0x4a1b62[_0xb54b('0x30')],_0x4a1b62[_0xb54b('0x33')]);_0x16a221[_0xb54b('0x34')]=_['intersection'](_0x4a1b62[_0xb54b('0x30')],qs[_0xb54b('0x36')](_0x4139be[_0xb54b('0x33')][_0xb54b('0x36')]));_0x16a221['attributes']=_0x16a221[_0xb54b('0x34')][_0xb54b('0x37')]?_0x16a221['attributes']:_0x4a1b62[_0xb54b('0x30')];_0x16a221[_0xb54b('0x39')]=qs['sort'](_0x4139be[_0xb54b('0x33')][_0xb54b('0x3a')]);_0x16a221[_0xb54b('0x3e')]=qs[_0xb54b('0x3b')](_[_0xb54b('0x4d')](_0x4139be[_0xb54b('0x33')],_0x4a1b62[_0xb54b('0x3b')]));if(_0x4139be[_0xb54b('0x33')][_0xb54b('0x3c')]){_0x16a221[_0xb54b('0x3e')]=_['merge'](_0x16a221[_0xb54b('0x3e')],{'$or':_[_0xb54b('0x31')](_0x16a221[_0xb54b('0x34')],function(_0x21db69){var _0x2941d6={};_0x2941d6[_0x21db69]={'$like':'%'+_0x4139be[_0xb54b('0x33')][_0xb54b('0x3c')]+'%'};return _0x2941d6;})});}_0x16a221=_[_0xb54b('0x3d')]({},_0x16a221,_0x4139be['options']);return _0x4312dd['getDescriptions'](_0x16a221);}})['then'](function(_0x19e810){if(_0x19e810){_0xdadc2e=_0x19e810[_0xb54b('0x37')];if(!_0x4139be[_0xb54b('0x33')][_0xb54b('0x51')](_0xb54b('0x38'))){_0x16a221['limit']=qs['limit'](_0x4139be[_0xb54b('0x33')][_0xb54b('0x1f')]);_0x16a221['offset']=qs[_0xb54b('0x1d')](_0x4139be[_0xb54b('0x33')]['offset']);}return _0x4312dd['getDescriptions'](_0x16a221);}})[_0xb54b('0x27')](function(_0x55b67e){if(_0x55b67e){return _0x55b67e?{'count':_0xdadc2e,'rows':_0x55b67e}:null;}})[_0xb54b('0x27')](respondWithResult(_0x16343b,null))[_0xb54b('0x45')](handleError(_0x16343b,null));};
\ No newline at end of file
index 69e15d0..c9b925a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3071=['request-promise','path','rimraf','exports','define','int_zoho_configurations','util','../../config/logger','moment','bluebird'];(function(_0x243cb0,_0x13564e){var _0x30d42e=function(_0x35b4fa){while(--_0x35b4fa){_0x243cb0['push'](_0x243cb0['shift']());}};_0x30d42e(++_0x13564e);}(_0x3071,0x132));var _0x1307=function(_0x519756,_0x288785){_0x519756=_0x519756-0x0;var _0x37047e=_0x3071[_0x519756];return _0x37047e;};'use strict';var _=require('lodash');var util=require(_0x1307('0x0'));var logger=require(_0x1307('0x1'))('api');var moment=require(_0x1307('0x2'));var BPromise=require(_0x1307('0x3'));var rp=require(_0x1307('0x4'));var fs=require('fs');var path=require(_0x1307('0x5'));var rimraf=require(_0x1307('0x6'));var config=require('../../config/environment');var attributes=require('./intZohoConfiguration.attributes');module[_0x1307('0x7')]=function(_0x2c7629,_0x3301c6){return _0x2c7629[_0x1307('0x8')]('ZohoConfiguration',attributes,{'tableName':_0x1307('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbbd8=['exports','define','int_zoho_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intZohoConfiguration.attributes'];(function(_0x31d707,_0x733c2b){var _0x3ff20d=function(_0x42de7a){while(--_0x42de7a){_0x31d707['push'](_0x31d707['shift']());}};_0x3ff20d(++_0x733c2b);}(_0xbbd8,0x17c));var _0x8bbd=function(_0x865244,_0x1ccfe7){_0x865244=_0x865244-0x0;var _0x47275a=_0xbbd8[_0x865244];return _0x47275a;};'use strict';var _=require(_0x8bbd('0x0'));var util=require(_0x8bbd('0x1'));var logger=require(_0x8bbd('0x2'))(_0x8bbd('0x3'));var moment=require(_0x8bbd('0x4'));var BPromise=require(_0x8bbd('0x5'));var rp=require(_0x8bbd('0x6'));var fs=require('fs');var path=require(_0x8bbd('0x7'));var rimraf=require('rimraf');var config=require(_0x8bbd('0x8'));var attributes=require(_0x8bbd('0x9'));module[_0x8bbd('0xa')]=function(_0x19a5b6,_0x1833f6){return _0x19a5b6[_0x8bbd('0xb')]('ZohoConfiguration',attributes,{'tableName':_0x8bbd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ee5c756..caadf71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4692=['../../config/environment','client','http','request','then','info','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','ZohoConfiguration,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc'];(function(_0x3cd154,_0x54c960){var _0x4ef352=function(_0x5093a6){while(--_0x5093a6){_0x3cd154['push'](_0x3cd154['shift']());}};_0x4ef352(++_0x54c960);}(_0x4692,0xbe));var _0x2469=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x4692[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x2469('0x0'));var util=require(_0x2469('0x1'));var moment=require(_0x2469('0x2'));var BPromise=require(_0x2469('0x3'));var rs=require(_0x2469('0x4'));var fs=require('fs');var Redis=require(_0x2469('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2469('0x6'))(_0x2469('0x7'));var config=require(_0x2469('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2469('0x9')][_0x2469('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe79c0d,_0x2612a7,_0x5ebb80){return new BPromise(function(_0x5dc5e0,_0x5bbdd0){return client[_0x2469('0xb')](_0xe79c0d,_0x5ebb80)[_0x2469('0xc')](function(_0x5a0cea){logger[_0x2469('0xd')]('ZohoConfiguration,\x20%s,\x20%s',_0x2612a7,_0x2469('0xe'));logger[_0x2469('0xf')](_0x2469('0x10'),_0x2612a7,_0x2469('0xe'),JSON[_0x2469('0x11')](_0x5a0cea));if(_0x5a0cea[_0x2469('0x12')]){if(_0x5a0cea[_0x2469('0x12')]['code']===0x1f4){logger['error'](_0x2469('0x13'),_0x2612a7,_0x5a0cea[_0x2469('0x12')][_0x2469('0x14')]);return _0x5bbdd0(_0x5a0cea['error']['message']);}logger['error'](_0x2469('0x13'),_0x2612a7,_0x5a0cea[_0x2469('0x12')][_0x2469('0x14')]);return _0x5dc5e0(_0x5a0cea[_0x2469('0x12')][_0x2469('0x14')]);}else{logger[_0x2469('0xd')](_0x2469('0x13'),_0x2612a7,_0x2469('0xe'));_0x5dc5e0(_0x5a0cea[_0x2469('0x15')][_0x2469('0x14')]);}})['catch'](function(_0x33ad98){logger[_0x2469('0x12')](_0x2469('0x13'),_0x2612a7,_0x33ad98);_0x5bbdd0(_0x33ad98);});});}
\ No newline at end of file
+var _0x78af=['bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment'];(function(_0x1e4360,_0x930b9b){var _0x31e6b4=function(_0x49dd8e){while(--_0x49dd8e){_0x1e4360['push'](_0x1e4360['shift']());}};_0x31e6b4(++_0x930b9b);}(_0x78af,0x19f));var _0xf78a=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x78af[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0xf78a('0x0'));var util=require(_0xf78a('0x1'));var moment=require(_0xf78a('0x2'));var BPromise=require(_0xf78a('0x3'));var rs=require(_0xf78a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf78a('0x5'))['db'];var utils=require(_0xf78a('0x6'));var logger=require('../../config/logger')(_0xf78a('0x7'));var config=require(_0xf78a('0x8'));var jayson=require(_0xf78a('0x9'));var client=jayson['client'][_0xf78a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1ab92a,_0x1ab02a,_0x535576){return new BPromise(function(_0x39c263,_0x5d1568){return client[_0xf78a('0xb')](_0x1ab92a,_0x535576)[_0xf78a('0xc')](function(_0x10cfe2){logger[_0xf78a('0xd')](_0xf78a('0xe'),_0x1ab02a,_0xf78a('0xf'));logger['debug'](_0xf78a('0x10'),_0x1ab02a,_0xf78a('0xf'),JSON[_0xf78a('0x11')](_0x10cfe2));if(_0x10cfe2['error']){if(_0x10cfe2['error']['code']===0x1f4){logger['error'](_0xf78a('0xe'),_0x1ab02a,_0x10cfe2[_0xf78a('0x12')][_0xf78a('0x13')]);return _0x5d1568(_0x10cfe2[_0xf78a('0x12')][_0xf78a('0x13')]);}logger[_0xf78a('0x12')](_0xf78a('0xe'),_0x1ab02a,_0x10cfe2['error'][_0xf78a('0x13')]);return _0x39c263(_0x10cfe2['error'][_0xf78a('0x13')]);}else{logger[_0xf78a('0xd')]('ZohoConfiguration,\x20%s,\x20%s',_0x1ab02a,_0xf78a('0xf'));_0x39c263(_0x10cfe2[_0xf78a('0x14')][_0xf78a('0x13')]);}})[_0xf78a('0x15')](function(_0x5313a3){logger[_0xf78a('0x12')](_0xf78a('0xe'),_0x1ab02a,_0x5313a3);_0x5d1568(_0x5313a3);});});}
\ No newline at end of file
index 3f2884c..8c57992 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcb7=['/:id','isAuthenticated','show','create','put','update','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZohoField.controller','get'];(function(_0x17d921,_0x5a0ff8){var _0x11c9b6=function(_0x3c8667){while(--_0x3c8667){_0x17d921['push'](_0x17d921['shift']());}};_0x11c9b6(++_0x5a0ff8);}(_0xdcb7,0x118));var _0x7dcb=function(_0x2861e6,_0x19893f){_0x2861e6=_0x2861e6-0x0;var _0xea3712=_0xdcb7[_0x2861e6];return _0xea3712;};'use strict';var multer=require('multer');var util=require(_0x7dcb('0x0'));var path=require(_0x7dcb('0x1'));var timeout=require(_0x7dcb('0x2'));var express=require('express');var router=express[_0x7dcb('0x3')]();var fs_extra=require(_0x7dcb('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7dcb('0x5'));var config=require(_0x7dcb('0x6'));var controller=require(_0x7dcb('0x7'));router[_0x7dcb('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7dcb('0x8')](_0x7dcb('0x9'),auth[_0x7dcb('0xa')](),controller[_0x7dcb('0xb')]);router['post']('/',auth[_0x7dcb('0xa')](),controller[_0x7dcb('0xc')]);router[_0x7dcb('0xd')](_0x7dcb('0x9'),auth[_0x7dcb('0xa')](),controller[_0x7dcb('0xe')]);router['delete'](_0x7dcb('0x9'),auth[_0x7dcb('0xa')](),controller[_0x7dcb('0xf')]);module[_0x7dcb('0x10')]=router;
\ No newline at end of file
+var _0x4072=['index','/:id','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intZohoField.controller','get','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4072,0x1be));var _0x2407=function(_0x2072f4,_0x1f2f7e){_0x2072f4=_0x2072f4-0x0;var _0x330448=_0x4072[_0x2072f4];return _0x330448;};'use strict';var multer=require(_0x2407('0x0'));var util=require(_0x2407('0x1'));var path=require('path');var timeout=require(_0x2407('0x2'));var express=require(_0x2407('0x3'));var router=express[_0x2407('0x4')]();var fs_extra=require(_0x2407('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2407('0x6'));var config=require('../../config/environment');var controller=require(_0x2407('0x7'));router[_0x2407('0x8')]('/',auth[_0x2407('0x9')](),controller[_0x2407('0xa')]);router[_0x2407('0x8')](_0x2407('0xb'),auth[_0x2407('0x9')](),controller['show']);router[_0x2407('0xc')]('/',auth[_0x2407('0x9')](),controller[_0x2407('0xd')]);router[_0x2407('0xe')](_0x2407('0xb'),auth[_0x2407('0x9')](),controller[_0x2407('0xf')]);router[_0x2407('0x10')]('/:id',auth[_0x2407('0x9')](),controller[_0x2407('0x11')]);module[_0x2407('0x12')]=router;
\ No newline at end of file
index 6ec9883..25a78e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cea=['STRING','variable','BOOLEAN','sequelize','ENUM','string','customVariable','keyValue','picklist'];(function(_0x2bc586,_0x346c61){var _0x403324=function(_0x1f1177){while(--_0x1f1177){_0x2bc586['push'](_0x2bc586['shift']());}};_0x403324(++_0x346c61);}(_0x7cea,0x108));var _0xa7ce=function(_0x5aaf05,_0x3241e0){_0x5aaf05=_0x5aaf05-0x0;var _0x240d54=_0x7cea[_0x5aaf05];return _0x240d54;};'use strict';var Sequelize=require(_0xa7ce('0x0'));module['exports']={'type':{'type':Sequelize[_0xa7ce('0x1')](_0xa7ce('0x2'),'variable',_0xa7ce('0x3'),_0xa7ce('0x4'),_0xa7ce('0x5')),'defaultValue':_0xa7ce('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xa7ce('0x6')]},'keyType':{'type':Sequelize[_0xa7ce('0x1')](_0xa7ce('0x2'),_0xa7ce('0x7'),_0xa7ce('0x3'))},'keyContent':{'type':Sequelize[_0xa7ce('0x6')]},'idField':{'type':Sequelize[_0xa7ce('0x6')]},'nameField':{'type':Sequelize[_0xa7ce('0x6')]},'customField':{'type':Sequelize[_0xa7ce('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xa7ce('0x6')]}};
\ No newline at end of file
+var _0x9b0f=['variable','BOOLEAN','sequelize','exports','string','customVariable','keyValue','picklist','STRING'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x9b0f,0xc8));var _0xf9b0=function(_0x2e80b3,_0x1f73e2){_0x2e80b3=_0x2e80b3-0x0;var _0x1269b5=_0x9b0f[_0x2e80b3];return _0x1269b5;};'use strict';var Sequelize=require(_0xf9b0('0x0'));module[_0xf9b0('0x1')]={'type':{'type':Sequelize['ENUM'](_0xf9b0('0x2'),'variable',_0xf9b0('0x3'),_0xf9b0('0x4'),_0xf9b0('0x5')),'defaultValue':_0xf9b0('0x2')},'content':{'type':Sequelize[_0xf9b0('0x6')]},'key':{'type':Sequelize[_0xf9b0('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0xf9b0('0x2'),_0xf9b0('0x7'),'customVariable')},'keyContent':{'type':Sequelize[_0xf9b0('0x6')]},'idField':{'type':Sequelize[_0xf9b0('0x6')]},'nameField':{'type':Sequelize[_0xf9b0('0x6')]},'customField':{'type':Sequelize[_0xf9b0('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf9b0('0x6')]}};
\ No newline at end of file
index 1ef194b..aa8cb76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf70=['fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','ZohoField','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes'];(function(_0x860520,_0x20520a){var _0x22ce80=function(_0x54ccbf){while(--_0x54ccbf){_0x860520['push'](_0x860520['shift']());}};_0x22ce80(++_0x20520a);}(_0xbf70,0x1b0));var _0x0bf7=function(_0xebcad1,_0x4fbdbc){_0xebcad1=_0xebcad1-0x0;var _0x5de580=_0xbf70[_0xebcad1];return _0x5de580;};'use strict';var emlformat=require(_0x0bf7('0x0'));var rimraf=require(_0x0bf7('0x1'));var zipdir=require(_0x0bf7('0x2'));var jsonpatch=require(_0x0bf7('0x3'));var rp=require(_0x0bf7('0x4'));var moment=require(_0x0bf7('0x5'));var BPromise=require(_0x0bf7('0x6'));var Mustache=require(_0x0bf7('0x7'));var util=require(_0x0bf7('0x8'));var path=require('path');var sox=require(_0x0bf7('0x9'));var csv=require(_0x0bf7('0xa'));var ejs=require(_0x0bf7('0xb'));var fs=require('fs');var fs_extra=require(_0x0bf7('0xc'));var _=require('lodash');var squel=require(_0x0bf7('0xd'));var crypto=require(_0x0bf7('0xe'));var jsforce=require(_0x0bf7('0xf'));var deskjs=require(_0x0bf7('0x10'));var toCsv=require(_0x0bf7('0xa'));var querystring=require(_0x0bf7('0x11'));var Papa=require(_0x0bf7('0x12'));var Redis=require(_0x0bf7('0x13'));var authService=require(_0x0bf7('0x14'));var qs=require(_0x0bf7('0x15'));var as=require(_0x0bf7('0x16'));var hardwareService=require(_0x0bf7('0x17'));var logger=require('../../config/logger')(_0x0bf7('0x18'));var utils=require(_0x0bf7('0x19'));var config=require(_0x0bf7('0x1a'));var licenseUtil=require(_0x0bf7('0x1b'));var db=require(_0x0bf7('0x1c'))['db'];function respondWithStatusCode(_0x80544f,_0xf35073){_0xf35073=_0xf35073||0xcc;return function(_0x1ef562){if(_0x1ef562){return _0x80544f['sendStatus'](_0xf35073);}return _0x80544f['status'](_0xf35073)[_0x0bf7('0x1d')]();};}function respondWithResult(_0x4ba753,_0x30ee6a){_0x30ee6a=_0x30ee6a||0xc8;return function(_0x17655b){if(_0x17655b){return _0x4ba753[_0x0bf7('0x1e')](_0x30ee6a)[_0x0bf7('0x1f')](_0x17655b);}};}function respondWithFilteredResult(_0x3cc22c,_0x598935){return function(_0x319d68){if(_0x319d68){var _0x4764e9=typeof _0x598935[_0x0bf7('0x20')]===_0x0bf7('0x21')&&typeof _0x598935['limit']==='undefined';var _0x1f00ba=_0x319d68['count'];var _0x39d88c=_0x4764e9?0x0:_0x598935[_0x0bf7('0x20')];var _0x4bc308=_0x4764e9?_0x319d68[_0x0bf7('0x22')]:_0x598935[_0x0bf7('0x20')]+_0x598935[_0x0bf7('0x23')];var _0x383bd2;if(_0x4bc308>=_0x1f00ba){_0x4bc308=_0x1f00ba;_0x383bd2=0xc8;}else{_0x383bd2=0xce;}_0x3cc22c[_0x0bf7('0x1e')](_0x383bd2);return _0x3cc22c[_0x0bf7('0x24')](_0x0bf7('0x25'),_0x39d88c+'-'+_0x4bc308+'/'+_0x1f00ba)[_0x0bf7('0x1f')](_0x319d68);}return null;};}function patchUpdates(_0x194aff){return function(_0x172190){try{jsonpatch[_0x0bf7('0x26')](_0x172190,_0x194aff,!![]);}catch(_0x59ea27){return BPromise[_0x0bf7('0x27')](_0x59ea27);}return _0x172190[_0x0bf7('0x28')]();};}function saveUpdates(_0x2aa441,_0x24955b){return function(_0x2146cd){if(_0x2146cd){return _0x2146cd[_0x0bf7('0x29')](_0x2aa441)[_0x0bf7('0x2a')](function(_0x26017b){return _0x26017b;});}return null;};}function removeEntity(_0x5d7850,_0x58931a){return function(_0x5c61c7){if(_0x5c61c7){return _0x5c61c7['destroy']()[_0x0bf7('0x2a')](function(){_0x5d7850[_0x0bf7('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe66b4a,_0x4847da){return function(_0x30bd14){if(!_0x30bd14){_0xe66b4a[_0x0bf7('0x2b')](0x194);}return _0x30bd14;};}function handleError(_0x37e4f8,_0x1d23a4){_0x1d23a4=_0x1d23a4||0x1f4;return function(_0x2607f6){logger[_0x0bf7('0x2c')](_0x2607f6[_0x0bf7('0x2d')]);if(_0x2607f6[_0x0bf7('0x2e')]){delete _0x2607f6['name'];}_0x37e4f8[_0x0bf7('0x1e')](_0x1d23a4)[_0x0bf7('0x2f')](_0x2607f6);};}exports[_0x0bf7('0x30')]=function(_0x586fad,_0x5e0022){var _0x41cea1={},_0x46c9db={},_0x4ff4d9={'count':0x0,'rows':[]};var _0x86bb40=_['map'](db[_0x0bf7('0x31')][_0x0bf7('0x32')],function(_0x3db49b){return{'name':_0x3db49b[_0x0bf7('0x33')],'type':_0x3db49b[_0x0bf7('0x34')][_0x0bf7('0x35')]};});_0x46c9db[_0x0bf7('0x36')]=_[_0x0bf7('0x37')](_0x86bb40,_0x0bf7('0x2e'));_0x46c9db[_0x0bf7('0x38')]=_[_0x0bf7('0x39')](_0x586fad[_0x0bf7('0x38')]);_0x46c9db['filters']=_[_0x0bf7('0x3a')](_0x46c9db['model'],_0x46c9db[_0x0bf7('0x38')]);_0x41cea1[_0x0bf7('0x3b')]=_[_0x0bf7('0x3a')](_0x46c9db[_0x0bf7('0x36')],qs[_0x0bf7('0x3c')](_0x586fad[_0x0bf7('0x38')][_0x0bf7('0x3c')]));_0x41cea1[_0x0bf7('0x3b')]=_0x41cea1[_0x0bf7('0x3b')]['length']?_0x41cea1[_0x0bf7('0x3b')]:_0x46c9db[_0x0bf7('0x36')];if(!_0x586fad['query'][_0x0bf7('0x3d')](_0x0bf7('0x3e'))){_0x41cea1[_0x0bf7('0x23')]=qs[_0x0bf7('0x23')](_0x586fad[_0x0bf7('0x38')][_0x0bf7('0x23')]);_0x41cea1[_0x0bf7('0x20')]=qs[_0x0bf7('0x20')](_0x586fad['query'][_0x0bf7('0x20')]);}_0x41cea1[_0x0bf7('0x3f')]=qs[_0x0bf7('0x40')](_0x586fad[_0x0bf7('0x38')][_0x0bf7('0x40')]);_0x41cea1[_0x0bf7('0x41')]=qs[_0x0bf7('0x42')](_[_0x0bf7('0x43')](_0x586fad[_0x0bf7('0x38')],_0x46c9db['filters']),_0x86bb40);if(_0x586fad[_0x0bf7('0x38')][_0x0bf7('0x44')]){_0x41cea1[_0x0bf7('0x41')]=_[_0x0bf7('0x45')](_0x41cea1[_0x0bf7('0x41')],{'$or':_[_0x0bf7('0x37')](_0x86bb40,function(_0xc6af24){if(_0xc6af24['type']!==_0x0bf7('0x46')){var _0x4e3c2d={};_0x4e3c2d[_0xc6af24[_0x0bf7('0x2e')]]={'$like':'%'+_0x586fad[_0x0bf7('0x38')][_0x0bf7('0x44')]+'%'};return _0x4e3c2d;}})});}_0x41cea1=_['merge']({},_0x41cea1,_0x586fad[_0x0bf7('0x47')]);var _0x4b7158={'where':_0x41cea1[_0x0bf7('0x41')]};return db[_0x0bf7('0x31')][_0x0bf7('0x22')](_0x4b7158)[_0x0bf7('0x2a')](function(_0x2c1a28){_0x4ff4d9['count']=_0x2c1a28;if(_0x586fad['query'][_0x0bf7('0x48')]){_0x41cea1[_0x0bf7('0x49')]=[{'all':!![]}];}return db[_0x0bf7('0x31')][_0x0bf7('0x4a')](_0x41cea1);})[_0x0bf7('0x2a')](function(_0x4d1bb4){_0x4ff4d9[_0x0bf7('0x4b')]=_0x4d1bb4;return _0x4ff4d9;})[_0x0bf7('0x2a')](respondWithFilteredResult(_0x5e0022,_0x41cea1))[_0x0bf7('0x4c')](handleError(_0x5e0022,null));};exports[_0x0bf7('0x4d')]=function(_0x2ebd0b,_0x1cdc3b){var _0x3075b6={'raw':!![],'where':{'id':_0x2ebd0b[_0x0bf7('0x4e')]['id']}},_0x2de398={};_0x2de398['model']=_[_0x0bf7('0x39')](db[_0x0bf7('0x31')]['rawAttributes']);_0x2de398[_0x0bf7('0x38')]=_['keys'](_0x2ebd0b[_0x0bf7('0x38')]);_0x2de398[_0x0bf7('0x42')]=_[_0x0bf7('0x3a')](_0x2de398[_0x0bf7('0x36')],_0x2de398[_0x0bf7('0x38')]);_0x3075b6[_0x0bf7('0x3b')]=_[_0x0bf7('0x3a')](_0x2de398['model'],qs[_0x0bf7('0x3c')](_0x2ebd0b[_0x0bf7('0x38')][_0x0bf7('0x3c')]));_0x3075b6[_0x0bf7('0x3b')]=_0x3075b6[_0x0bf7('0x3b')][_0x0bf7('0x4f')]?_0x3075b6['attributes']:_0x2de398['model'];if(_0x2ebd0b[_0x0bf7('0x38')][_0x0bf7('0x48')]){_0x3075b6[_0x0bf7('0x49')]=[{'all':!![]}];}_0x3075b6=_[_0x0bf7('0x45')]({},_0x3075b6,_0x2ebd0b[_0x0bf7('0x47')]);return db[_0x0bf7('0x31')][_0x0bf7('0x50')](_0x3075b6)['then'](handleEntityNotFound(_0x1cdc3b,null))[_0x0bf7('0x2a')](respondWithResult(_0x1cdc3b,null))[_0x0bf7('0x4c')](handleError(_0x1cdc3b,null));};exports['create']=function(_0x213169,_0x304dbb){return db[_0x0bf7('0x31')]['create'](_0x213169['body'],{})[_0x0bf7('0x2a')](respondWithResult(_0x304dbb,0xc9))[_0x0bf7('0x4c')](handleError(_0x304dbb,null));};exports['update']=function(_0x20fad4,_0x1c51c7){if(_0x20fad4[_0x0bf7('0x51')]['id']){delete _0x20fad4['body']['id'];}return db[_0x0bf7('0x31')][_0x0bf7('0x50')]({'where':{'id':_0x20fad4[_0x0bf7('0x4e')]['id']}})[_0x0bf7('0x2a')](handleEntityNotFound(_0x1c51c7,null))[_0x0bf7('0x2a')](saveUpdates(_0x20fad4[_0x0bf7('0x51')],null))['then'](respondWithResult(_0x1c51c7,null))[_0x0bf7('0x4c')](handleError(_0x1c51c7,null));};exports['destroy']=function(_0x5a8156,_0x3a9fdd){return db[_0x0bf7('0x31')][_0x0bf7('0x50')]({'where':{'id':_0x5a8156[_0x0bf7('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3a9fdd,null))['then'](removeEntity(_0x3a9fdd,null))[_0x0bf7('0x4c')](handleError(_0x3a9fdd,null));};
\ No newline at end of file
+var _0x6bfc=['map','ZohoField','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','then','include','findAll','rows','show','params','rawAttributes','length','includeAll','options','find','create','body','catch','update','destroy','eml-format','rimraf','moment','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','error','stack','name','send','index'];(function(_0x4adc62,_0x472f8c){var _0x1f946f=function(_0x50890c){while(--_0x50890c){_0x4adc62['push'](_0x4adc62['shift']());}};_0x1f946f(++_0x472f8c);}(_0x6bfc,0x1da));var _0xc6bf=function(_0x3a3529,_0x4bc9c4){_0x3a3529=_0x3a3529-0x0;var _0x219629=_0x6bfc[_0x3a3529];return _0x219629;};'use strict';var emlformat=require(_0xc6bf('0x0'));var rimraf=require(_0xc6bf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc6bf('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xc6bf('0x3'));var sox=require('sox');var csv=require(_0xc6bf('0x4'));var ejs=require(_0xc6bf('0x5'));var fs=require('fs');var fs_extra=require(_0xc6bf('0x6'));var _=require(_0xc6bf('0x7'));var squel=require(_0xc6bf('0x8'));var crypto=require('crypto');var jsforce=require(_0xc6bf('0x9'));var deskjs=require(_0xc6bf('0xa'));var toCsv=require(_0xc6bf('0x4'));var querystring=require('querystring');var Papa=require(_0xc6bf('0xb'));var Redis=require('ioredis');var authService=require(_0xc6bf('0xc'));var qs=require(_0xc6bf('0xd'));var as=require(_0xc6bf('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc6bf('0xf'));var utils=require(_0xc6bf('0x10'));var config=require(_0xc6bf('0x11'));var licenseUtil=require(_0xc6bf('0x12'));var db=require(_0xc6bf('0x13'))['db'];function respondWithStatusCode(_0x2b7258,_0x5c7519){_0x5c7519=_0x5c7519||0xcc;return function(_0x5e6016){if(_0x5e6016){return _0x2b7258[_0xc6bf('0x14')](_0x5c7519);}return _0x2b7258[_0xc6bf('0x15')](_0x5c7519)[_0xc6bf('0x16')]();};}function respondWithResult(_0x549676,_0x317c16){_0x317c16=_0x317c16||0xc8;return function(_0x367362){if(_0x367362){return _0x549676[_0xc6bf('0x15')](_0x317c16)[_0xc6bf('0x17')](_0x367362);}};}function respondWithFilteredResult(_0x87ca1e,_0x54e9ba){return function(_0x34db13){if(_0x34db13){var _0xc6c574=typeof _0x54e9ba[_0xc6bf('0x18')]==='undefined'&&typeof _0x54e9ba[_0xc6bf('0x19')]===_0xc6bf('0x1a');var _0x40f4eb=_0x34db13[_0xc6bf('0x1b')];var _0x111be4=_0xc6c574?0x0:_0x54e9ba[_0xc6bf('0x18')];var _0x2b1bfd=_0xc6c574?_0x34db13['count']:_0x54e9ba['offset']+_0x54e9ba['limit'];var _0x426e0f;if(_0x2b1bfd>=_0x40f4eb){_0x2b1bfd=_0x40f4eb;_0x426e0f=0xc8;}else{_0x426e0f=0xce;}_0x87ca1e[_0xc6bf('0x15')](_0x426e0f);return _0x87ca1e[_0xc6bf('0x1c')](_0xc6bf('0x1d'),_0x111be4+'-'+_0x2b1bfd+'/'+_0x40f4eb)[_0xc6bf('0x17')](_0x34db13);}return null;};}function patchUpdates(_0x819710){return function(_0x4dd523){try{jsonpatch[_0xc6bf('0x1e')](_0x4dd523,_0x819710,!![]);}catch(_0x1ea701){return BPromise['reject'](_0x1ea701);}return _0x4dd523[_0xc6bf('0x1f')]();};}function saveUpdates(_0x19a5c3,_0x21fbc0){return function(_0x11d0e7){if(_0x11d0e7){return _0x11d0e7['update'](_0x19a5c3)['then'](function(_0x2525f7){return _0x2525f7;});}return null;};}function removeEntity(_0x133c4a,_0x4532fc){return function(_0x2880ff){if(_0x2880ff){return _0x2880ff['destroy']()['then'](function(){_0x133c4a[_0xc6bf('0x15')](0xcc)[_0xc6bf('0x16')]();});}};}function handleEntityNotFound(_0x1b5ca0,_0x202201){return function(_0x2ffac7){if(!_0x2ffac7){_0x1b5ca0[_0xc6bf('0x14')](0x194);}return _0x2ffac7;};}function handleError(_0x49d311,_0x4c6483){_0x4c6483=_0x4c6483||0x1f4;return function(_0x173fd5){logger[_0xc6bf('0x20')](_0x173fd5[_0xc6bf('0x21')]);if(_0x173fd5[_0xc6bf('0x22')]){delete _0x173fd5[_0xc6bf('0x22')];}_0x49d311[_0xc6bf('0x15')](_0x4c6483)[_0xc6bf('0x23')](_0x173fd5);};}exports[_0xc6bf('0x24')]=function(_0x194fba,_0x5c2309){var _0x1786f6={},_0x3e844c={},_0x36df3e={'count':0x0,'rows':[]};var _0x1c909b=_[_0xc6bf('0x25')](db[_0xc6bf('0x26')]['rawAttributes'],function(_0x224335){return{'name':_0x224335[_0xc6bf('0x27')],'type':_0x224335[_0xc6bf('0x28')][_0xc6bf('0x29')]};});_0x3e844c['model']=_[_0xc6bf('0x25')](_0x1c909b,_0xc6bf('0x22'));_0x3e844c[_0xc6bf('0x2a')]=_[_0xc6bf('0x2b')](_0x194fba['query']);_0x3e844c[_0xc6bf('0x2c')]=_[_0xc6bf('0x2d')](_0x3e844c['model'],_0x3e844c['query']);_0x1786f6[_0xc6bf('0x2e')]=_[_0xc6bf('0x2d')](_0x3e844c[_0xc6bf('0x2f')],qs['fields'](_0x194fba[_0xc6bf('0x2a')][_0xc6bf('0x30')]));_0x1786f6['attributes']=_0x1786f6[_0xc6bf('0x2e')]['length']?_0x1786f6[_0xc6bf('0x2e')]:_0x3e844c[_0xc6bf('0x2f')];if(!_0x194fba['query'][_0xc6bf('0x31')](_0xc6bf('0x32'))){_0x1786f6[_0xc6bf('0x19')]=qs['limit'](_0x194fba[_0xc6bf('0x2a')]['limit']);_0x1786f6[_0xc6bf('0x18')]=qs[_0xc6bf('0x18')](_0x194fba[_0xc6bf('0x2a')][_0xc6bf('0x18')]);}_0x1786f6[_0xc6bf('0x33')]=qs[_0xc6bf('0x34')](_0x194fba[_0xc6bf('0x2a')][_0xc6bf('0x34')]);_0x1786f6[_0xc6bf('0x35')]=qs[_0xc6bf('0x2c')](_['pick'](_0x194fba[_0xc6bf('0x2a')],_0x3e844c[_0xc6bf('0x2c')]),_0x1c909b);if(_0x194fba[_0xc6bf('0x2a')][_0xc6bf('0x36')]){_0x1786f6[_0xc6bf('0x35')]=_[_0xc6bf('0x37')](_0x1786f6[_0xc6bf('0x35')],{'$or':_['map'](_0x1c909b,function(_0x5d7f16){if(_0x5d7f16[_0xc6bf('0x28')]!==_0xc6bf('0x38')){var _0x5d263d={};_0x5d263d[_0x5d7f16[_0xc6bf('0x22')]]={'$like':'%'+_0x194fba['query'][_0xc6bf('0x36')]+'%'};return _0x5d263d;}})});}_0x1786f6=_[_0xc6bf('0x37')]({},_0x1786f6,_0x194fba['options']);var _0x14e2ae={'where':_0x1786f6[_0xc6bf('0x35')]};return db[_0xc6bf('0x26')][_0xc6bf('0x1b')](_0x14e2ae)[_0xc6bf('0x39')](function(_0x3f6cd5){_0x36df3e['count']=_0x3f6cd5;if(_0x194fba['query']['includeAll']){_0x1786f6[_0xc6bf('0x3a')]=[{'all':!![]}];}return db[_0xc6bf('0x26')][_0xc6bf('0x3b')](_0x1786f6);})[_0xc6bf('0x39')](function(_0x3e2db7){_0x36df3e[_0xc6bf('0x3c')]=_0x3e2db7;return _0x36df3e;})[_0xc6bf('0x39')](respondWithFilteredResult(_0x5c2309,_0x1786f6))['catch'](handleError(_0x5c2309,null));};exports[_0xc6bf('0x3d')]=function(_0x102627,_0x2c7b0a){var _0x51ab69={'raw':!![],'where':{'id':_0x102627[_0xc6bf('0x3e')]['id']}},_0x4e04df={};_0x4e04df[_0xc6bf('0x2f')]=_[_0xc6bf('0x2b')](db['ZohoField'][_0xc6bf('0x3f')]);_0x4e04df['query']=_[_0xc6bf('0x2b')](_0x102627[_0xc6bf('0x2a')]);_0x4e04df[_0xc6bf('0x2c')]=_[_0xc6bf('0x2d')](_0x4e04df[_0xc6bf('0x2f')],_0x4e04df[_0xc6bf('0x2a')]);_0x51ab69['attributes']=_[_0xc6bf('0x2d')](_0x4e04df[_0xc6bf('0x2f')],qs[_0xc6bf('0x30')](_0x102627[_0xc6bf('0x2a')][_0xc6bf('0x30')]));_0x51ab69[_0xc6bf('0x2e')]=_0x51ab69[_0xc6bf('0x2e')][_0xc6bf('0x40')]?_0x51ab69[_0xc6bf('0x2e')]:_0x4e04df[_0xc6bf('0x2f')];if(_0x102627[_0xc6bf('0x2a')][_0xc6bf('0x41')]){_0x51ab69['include']=[{'all':!![]}];}_0x51ab69=_[_0xc6bf('0x37')]({},_0x51ab69,_0x102627[_0xc6bf('0x42')]);return db['ZohoField'][_0xc6bf('0x43')](_0x51ab69)[_0xc6bf('0x39')](handleEntityNotFound(_0x2c7b0a,null))[_0xc6bf('0x39')](respondWithResult(_0x2c7b0a,null))['catch'](handleError(_0x2c7b0a,null));};exports[_0xc6bf('0x44')]=function(_0xaa3277,_0x3d2a40){return db[_0xc6bf('0x26')]['create'](_0xaa3277[_0xc6bf('0x45')],{})[_0xc6bf('0x39')](respondWithResult(_0x3d2a40,0xc9))[_0xc6bf('0x46')](handleError(_0x3d2a40,null));};exports[_0xc6bf('0x47')]=function(_0x128b3c,_0x34678b){if(_0x128b3c[_0xc6bf('0x45')]['id']){delete _0x128b3c[_0xc6bf('0x45')]['id'];}return db[_0xc6bf('0x26')]['find']({'where':{'id':_0x128b3c[_0xc6bf('0x3e')]['id']}})[_0xc6bf('0x39')](handleEntityNotFound(_0x34678b,null))[_0xc6bf('0x39')](saveUpdates(_0x128b3c[_0xc6bf('0x45')],null))[_0xc6bf('0x39')](respondWithResult(_0x34678b,null))[_0xc6bf('0x46')](handleError(_0x34678b,null));};exports[_0xc6bf('0x48')]=function(_0xd64b5f,_0xf1fc8d){return db[_0xc6bf('0x26')][_0xc6bf('0x43')]({'where':{'id':_0xd64b5f[_0xc6bf('0x3e')]['id']}})[_0xc6bf('0x39')](handleEntityNotFound(_0xf1fc8d,null))[_0xc6bf('0x39')](removeEntity(_0xf1fc8d,null))[_0xc6bf('0x46')](handleError(_0xf1fc8d,null));};
\ No newline at end of file
index 8c924ae..9785a2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['FieldId','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','./intZohoField.attributes','exports','define','int_zoho_fields','zoho_unique_index','idField'];(function(_0x1e3c16,_0x372caa){var _0x47a0c9=function(_0x47f81d){while(--_0x47f81d){_0x1e3c16['push'](_0x1e3c16['shift']());}};_0x47a0c9(++_0x372caa);}(_0xba34,0x119));var _0x4ba3=function(_0x55d862,_0x430bc5){_0x55d862=_0x55d862-0x0;var _0x89937=_0xba34[_0x55d862];return _0x89937;};'use strict';var _=require(_0x4ba3('0x0'));var util=require(_0x4ba3('0x1'));var logger=require(_0x4ba3('0x2'))(_0x4ba3('0x3'));var moment=require(_0x4ba3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4ba3('0x5'));var config=require(_0x4ba3('0x6'));var attributes=require(_0x4ba3('0x7'));module[_0x4ba3('0x8')]=function(_0x3590a1,_0xb88621){return _0x3590a1[_0x4ba3('0x9')]('ZohoField',attributes,{'tableName':_0x4ba3('0xa'),'paranoid':![],'indexes':[{'name':_0x4ba3('0xb'),'fields':[_0x4ba3('0xc'),_0x4ba3('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf61e=['idField','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoField.attributes','exports','define','int_zoho_fields','zoho_unique_index'];(function(_0x564b0a,_0x4dd651){var _0x350a24=function(_0x200bb4){while(--_0x200bb4){_0x564b0a['push'](_0x564b0a['shift']());}};_0x350a24(++_0x4dd651);}(_0xf61e,0x191));var _0xef61=function(_0x5e4cf0,_0x5a5330){_0x5e4cf0=_0x5e4cf0-0x0;var _0x1d52ef=_0xf61e[_0x5e4cf0];return _0x1d52ef;};'use strict';var _=require(_0xef61('0x0'));var util=require(_0xef61('0x1'));var logger=require(_0xef61('0x2'))(_0xef61('0x3'));var moment=require(_0xef61('0x4'));var BPromise=require(_0xef61('0x5'));var rp=require(_0xef61('0x6'));var fs=require('fs');var path=require(_0xef61('0x7'));var rimraf=require(_0xef61('0x8'));var config=require(_0xef61('0x9'));var attributes=require(_0xef61('0xa'));module[_0xef61('0xb')]=function(_0x5b00b2,_0x9e17f4){return _0x5b00b2[_0xef61('0xc')]('ZohoField',attributes,{'tableName':_0xef61('0xd'),'paranoid':![],'indexes':[{'name':_0xef61('0xe'),'fields':[_0xef61('0xf'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c0a2761..465f14c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x853b=['../../config/environment','jayson/promise','client','http','request','then','info','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZohoField,\x20%s,\x20%s','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x28d18e,_0x46a650){var _0x1eef33=function(_0x347409){while(--_0x347409){_0x28d18e['push'](_0x28d18e['shift']());}};_0x1eef33(++_0x46a650);}(_0x853b,0xb0));var _0xb853=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x853b[_0x465028];return _0xb783d4;};'use strict';var _=require(_0xb853('0x0'));var util=require(_0xb853('0x1'));var moment=require('moment');var BPromise=require(_0xb853('0x2'));var rs=require(_0xb853('0x3'));var fs=require('fs');var Redis=require(_0xb853('0x4'));var db=require(_0xb853('0x5'))['db'];var utils=require(_0xb853('0x6'));var logger=require(_0xb853('0x7'))('rpc');var config=require(_0xb853('0x8'));var jayson=require(_0xb853('0x9'));var client=jayson[_0xb853('0xa')][_0xb853('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4938f8,_0x4748d1,_0x400c41){return new BPromise(function(_0x490d75,_0x57ff6f){return client[_0xb853('0xc')](_0x4938f8,_0x400c41)[_0xb853('0xd')](function(_0x1cc010){logger[_0xb853('0xe')]('ZohoField,\x20%s,\x20%s',_0x4748d1,'request\x20sent');logger[_0xb853('0xf')](_0xb853('0x10'),_0x4748d1,'request\x20sent',JSON[_0xb853('0x11')](_0x1cc010));if(_0x1cc010[_0xb853('0x12')]){if(_0x1cc010[_0xb853('0x12')][_0xb853('0x13')]===0x1f4){logger[_0xb853('0x12')]('ZohoField,\x20%s,\x20%s',_0x4748d1,_0x1cc010[_0xb853('0x12')][_0xb853('0x14')]);return _0x57ff6f(_0x1cc010['error'][_0xb853('0x14')]);}logger[_0xb853('0x12')]('ZohoField,\x20%s,\x20%s',_0x4748d1,_0x1cc010['error'][_0xb853('0x14')]);return _0x490d75(_0x1cc010[_0xb853('0x12')][_0xb853('0x14')]);}else{logger[_0xb853('0xe')](_0xb853('0x15'),_0x4748d1,'request\x20sent');_0x490d75(_0x1cc010['result'][_0xb853('0x14')]);}})[_0xb853('0x16')](function(_0x5ed0ba){logger[_0xb853('0x12')](_0xb853('0x15'),_0x4748d1,_0x5ed0ba);_0x57ff6f(_0x5ed0ba);});});}
\ No newline at end of file
+var _0x4300=['bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','ZohoField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash'];(function(_0x407bd8,_0x277add){var _0x20b6c9=function(_0x215b6c){while(--_0x215b6c){_0x407bd8['push'](_0x407bd8['shift']());}};_0x20b6c9(++_0x277add);}(_0x4300,0x167));var _0x0430=function(_0x103934,_0x303761){_0x103934=_0x103934-0x0;var _0x3e2889=_0x4300[_0x103934];return _0x3e2889;};'use strict';var _=require(_0x0430('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0430('0x1'));var rs=require(_0x0430('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0430('0x3'));var logger=require('../../config/logger')(_0x0430('0x4'));var config=require(_0x0430('0x5'));var jayson=require(_0x0430('0x6'));var client=jayson[_0x0430('0x7')][_0x0430('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3b860d,_0x4252d3,_0x181c61){return new BPromise(function(_0x31b96f,_0x167798){return client[_0x0430('0x9')](_0x3b860d,_0x181c61)[_0x0430('0xa')](function(_0x5c3487){logger[_0x0430('0xb')](_0x0430('0xc'),_0x4252d3,_0x0430('0xd'));logger['debug'](_0x0430('0xe'),_0x4252d3,_0x0430('0xd'),JSON['stringify'](_0x5c3487));if(_0x5c3487[_0x0430('0xf')]){if(_0x5c3487[_0x0430('0xf')][_0x0430('0x10')]===0x1f4){logger[_0x0430('0xf')](_0x0430('0xc'),_0x4252d3,_0x5c3487[_0x0430('0xf')]['message']);return _0x167798(_0x5c3487[_0x0430('0xf')][_0x0430('0x11')]);}logger[_0x0430('0xf')](_0x0430('0xc'),_0x4252d3,_0x5c3487[_0x0430('0xf')]['message']);return _0x31b96f(_0x5c3487[_0x0430('0xf')][_0x0430('0x11')]);}else{logger[_0x0430('0xb')](_0x0430('0xc'),_0x4252d3,_0x0430('0xd'));_0x31b96f(_0x5c3487[_0x0430('0x12')]['message']);}})[_0x0430('0x13')](function(_0x4858b4){logger[_0x0430('0xf')](_0x0430('0xc'),_0x4252d3,_0x4858b4);_0x167798(_0x4858b4);});});}
\ No newline at end of file
index 9fc9b3b..4794976 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(_0x24696b,_0x12de19){var _0x3f86b0=function(_0x11f2eb){while(--_0x11f2eb){_0x24696b['push'](_0x24696b['shift']());}};_0x3f86b0(++_0x12de19);}(_0x9c44,0x178));var _0x49c4=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x9c44[_0x17b6e3];return _0x3906f3;};'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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x724b9a,_0x5a5fca){var _0x4c1413=function(_0x1f9ed1){while(--_0x1f9ed1){_0x724b9a['push'](_0x724b9a['shift']());}};_0x4c1413(++_0x5a5fca);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 8662a48..ee657d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18ad=['app.js','BOOLEAN','state','sequelize','exports','STRING','unique_name_and_version'];(function(_0x22760e,_0x36048f){var _0x3a501b=function(_0x58a5dc){while(--_0x58a5dc){_0x22760e['push'](_0x22760e['shift']());}};_0x3a501b(++_0x36048f);}(_0x18ad,0x1bc));var _0xd18a=function(_0x5413f5,_0x3154c7){_0x5413f5=_0x5413f5-0x0;var _0x639288=_0x18ad[_0x5413f5];return _0x639288;};'use strict';var Sequelize=require(_0xd18a('0x0'));module[_0xd18a('0x1')]={'name':{'type':Sequelize[_0xd18a('0x2')],'allowNull':![],'unique':_0xd18a('0x3')},'version':{'type':Sequelize[_0xd18a('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize['STRING'],'defaultValue':_0xd18a('0x4')},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize[_0xd18a('0x2')]},'type':{'type':Sequelize[_0xd18a('0x2')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0xd18a('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0xd18a('0x2')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0xd18a('0x2')],'unique':_0xd18a('0x6')},'description':{'type':Sequelize[_0xd18a('0x2')]},'title':{'type':Sequelize[_0xd18a('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
+var _0xcaaf=['exports','STRING','unique_name_and_version','app.js','state','sequelize'];(function(_0x5a25f6,_0x3db5cb){var _0x5a524d=function(_0x11f0fd){while(--_0x11f0fd){_0x5a25f6['push'](_0x5a25f6['shift']());}};_0x5a524d(++_0x3db5cb);}(_0xcaaf,0xcb));var _0xfcaa=function(_0x3717e0,_0x11a3e1){_0x3717e0=_0x3717e0-0x0;var _0x3c5316=_0xcaaf[_0x3717e0];return _0x3c5316;};'use strict';var Sequelize=require(_0xfcaa('0x0'));module[_0xfcaa('0x1')]={'name':{'type':Sequelize[_0xfcaa('0x2')],'allowNull':![],'unique':_0xfcaa('0x3')},'version':{'type':Sequelize[_0xfcaa('0x2')],'allowNull':![],'unique':_0xfcaa('0x3')},'main':{'type':Sequelize[_0xfcaa('0x2')],'defaultValue':_0xfcaa('0x4')},'filename':{'type':Sequelize[_0xfcaa('0x2')]},'path':{'type':Sequelize[_0xfcaa('0x2')]},'type':{'type':Sequelize[_0xfcaa('0x2')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize[_0xfcaa('0x2')]},'logo':{'type':Sequelize[_0xfcaa('0x2')]},'state':{'type':Sequelize[_0xfcaa('0x2')],'unique':_0xfcaa('0x5')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize[_0xfcaa('0x2')]},'remoteUri':{'type':Sequelize[_0xfcaa('0x2')]},'link':{'type':Sequelize[_0xfcaa('0x2')],'defaultValue':'#'}};
\ No newline at end of file
index e3a748b..8a6af08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x430c=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined','offset','count','set','Content-Range','then','destroy','error','stack','name','send','index','Integration','rawAttributes','fieldName','key','model','map','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','create','body','update','find','eml-format','fast-json-patch','request-promise','moment','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x5365a9,_0x34eee4){var _0x43b00c=function(_0x42de41){while(--_0x42de41){_0x5365a9['push'](_0x5365a9['shift']());}};_0x43b00c(++_0x34eee4);}(_0x430c,0x1a1));var _0xc430=function(_0x1f7839,_0x2a26e6){_0x1f7839=_0x1f7839-0x0;var _0x36b42e=_0x430c[_0x1f7839];return _0x36b42e;};'use strict';var emlformat=require(_0xc430('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc430('0x1'));var rp=require(_0xc430('0x2'));var moment=require(_0xc430('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xc430('0x4'));var csv=require(_0xc430('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc430('0x6'));var _=require('lodash');var squel=require(_0xc430('0x7'));var crypto=require(_0xc430('0x8'));var jsforce=require(_0xc430('0x9'));var deskjs=require(_0xc430('0xa'));var toCsv=require(_0xc430('0x5'));var querystring=require(_0xc430('0xb'));var Papa=require(_0xc430('0xc'));var Redis=require(_0xc430('0xd'));var authService=require(_0xc430('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xc430('0xf'));var hardwareService=require(_0xc430('0x10'));var logger=require('../../config/logger')(_0xc430('0x11'));var utils=require('../../config/utils');var config=require(_0xc430('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xc430('0x13'))['db'];function respondWithStatusCode(_0x8aa2e6,_0xc5f92){_0xc5f92=_0xc5f92||0xcc;return function(_0x1fb8ce){if(_0x1fb8ce){return _0x8aa2e6[_0xc430('0x14')](_0xc5f92);}return _0x8aa2e6[_0xc430('0x15')](_0xc5f92)[_0xc430('0x16')]();};}function respondWithResult(_0x54d851,_0x4e9134){_0x4e9134=_0x4e9134||0xc8;return function(_0x3f359c){if(_0x3f359c){return _0x54d851[_0xc430('0x15')](_0x4e9134)[_0xc430('0x17')](_0x3f359c);}};}function respondWithFilteredResult(_0x2ef538,_0x31d3b7){return function(_0x55cc6c){if(_0x55cc6c){var _0x111598=typeof _0x31d3b7['offset']==='undefined'&&typeof _0x31d3b7[_0xc430('0x18')]===_0xc430('0x19');var _0x2327c5=_0x55cc6c['count'];var _0x5d3acc=_0x111598?0x0:_0x31d3b7[_0xc430('0x1a')];var _0x4c1937=_0x111598?_0x55cc6c[_0xc430('0x1b')]:_0x31d3b7['offset']+_0x31d3b7['limit'];var _0x2f3203;if(_0x4c1937>=_0x2327c5){_0x4c1937=_0x2327c5;_0x2f3203=0xc8;}else{_0x2f3203=0xce;}_0x2ef538['status'](_0x2f3203);return _0x2ef538[_0xc430('0x1c')](_0xc430('0x1d'),_0x5d3acc+'-'+_0x4c1937+'/'+_0x2327c5)[_0xc430('0x17')](_0x55cc6c);}return null;};}function patchUpdates(_0x1f90bb){return function(_0x2a1ea1){try{jsonpatch['apply'](_0x2a1ea1,_0x1f90bb,!![]);}catch(_0x388a2f){return BPromise['reject'](_0x388a2f);}return _0x2a1ea1['save']();};}function saveUpdates(_0x3b7c3d,_0x2ea352){return function(_0x3c7afa){if(_0x3c7afa){return _0x3c7afa['update'](_0x3b7c3d)[_0xc430('0x1e')](function(_0x57d26e){return _0x57d26e;});}return null;};}function removeEntity(_0x23425d,_0x22ebfb){return function(_0x4efecd){if(_0x4efecd){return _0x4efecd[_0xc430('0x1f')]()[_0xc430('0x1e')](function(){_0x23425d['status'](0xcc)[_0xc430('0x16')]();});}};}function handleEntityNotFound(_0x59c498,_0x3aa85e){return function(_0x4b5280){if(!_0x4b5280){_0x59c498[_0xc430('0x14')](0x194);}return _0x4b5280;};}function handleError(_0x21e28a,_0x50110b){_0x50110b=_0x50110b||0x1f4;return function(_0x33433f){logger[_0xc430('0x20')](_0x33433f[_0xc430('0x21')]);if(_0x33433f[_0xc430('0x22')]){delete _0x33433f[_0xc430('0x22')];}_0x21e28a['status'](_0x50110b)[_0xc430('0x23')](_0x33433f);};}exports[_0xc430('0x24')]=function(_0x1c1da9,_0x1591e3){var _0x542cba={},_0x1f8086={},_0x4cf56c={'count':0x0,'rows':[]};var _0x1d65ee=_['map'](db[_0xc430('0x25')][_0xc430('0x26')],function(_0xfc8767){return{'name':_0xfc8767[_0xc430('0x27')],'type':_0xfc8767['type'][_0xc430('0x28')]};});_0x1f8086[_0xc430('0x29')]=_[_0xc430('0x2a')](_0x1d65ee,_0xc430('0x22'));_0x1f8086['query']=_[_0xc430('0x2b')](_0x1c1da9[_0xc430('0x2c')]);_0x1f8086['filters']=_[_0xc430('0x2d')](_0x1f8086['model'],_0x1f8086['query']);_0x542cba[_0xc430('0x2e')]=_[_0xc430('0x2d')](_0x1f8086[_0xc430('0x29')],qs[_0xc430('0x2f')](_0x1c1da9[_0xc430('0x2c')][_0xc430('0x2f')]));_0x542cba[_0xc430('0x2e')]=_0x542cba[_0xc430('0x2e')]['length']?_0x542cba[_0xc430('0x2e')]:_0x1f8086['model'];if(!_0x1c1da9[_0xc430('0x2c')][_0xc430('0x30')](_0xc430('0x31'))){_0x542cba[_0xc430('0x18')]=qs['limit'](_0x1c1da9[_0xc430('0x2c')]['limit']);_0x542cba['offset']=qs[_0xc430('0x1a')](_0x1c1da9[_0xc430('0x2c')]['offset']);}_0x542cba[_0xc430('0x32')]=qs[_0xc430('0x33')](_0x1c1da9[_0xc430('0x2c')][_0xc430('0x33')]);_0x542cba[_0xc430('0x34')]=qs[_0xc430('0x35')](_[_0xc430('0x36')](_0x1c1da9[_0xc430('0x2c')],_0x1f8086[_0xc430('0x35')]),_0x1d65ee);if(_0x1c1da9[_0xc430('0x2c')][_0xc430('0x37')]){_0x542cba[_0xc430('0x34')]=_[_0xc430('0x38')](_0x542cba[_0xc430('0x34')],{'$or':_[_0xc430('0x2a')](_0x1d65ee,function(_0x537e4c){if(_0x537e4c[_0xc430('0x39')]!==_0xc430('0x3a')){var _0x24363b={};_0x24363b[_0x537e4c[_0xc430('0x22')]]={'$like':'%'+_0x1c1da9['query'][_0xc430('0x37')]+'%'};return _0x24363b;}})});}_0x542cba=_[_0xc430('0x38')]({},_0x542cba,_0x1c1da9[_0xc430('0x3b')]);var _0x45b3dc={'where':_0x542cba[_0xc430('0x34')]};return db[_0xc430('0x25')]['count'](_0x45b3dc)[_0xc430('0x1e')](function(_0x348f2f){_0x4cf56c[_0xc430('0x1b')]=_0x348f2f;if(_0x1c1da9[_0xc430('0x2c')][_0xc430('0x3c')]){_0x542cba[_0xc430('0x3d')]=[{'all':!![]}];}return db[_0xc430('0x25')][_0xc430('0x3e')](_0x542cba);})[_0xc430('0x1e')](function(_0x4174d2){_0x4cf56c[_0xc430('0x3f')]=_0x4174d2;return _0x4cf56c;})[_0xc430('0x1e')](respondWithFilteredResult(_0x1591e3,_0x542cba))[_0xc430('0x40')](handleError(_0x1591e3,null));};exports[_0xc430('0x41')]=function(_0x5a9c4b,_0x47edb0){var _0x4983e0={'raw':![],'where':{'id':_0x5a9c4b[_0xc430('0x42')]['id']}},_0x262063={};_0x262063[_0xc430('0x29')]=_[_0xc430('0x2b')](db[_0xc430('0x25')][_0xc430('0x26')]);_0x262063[_0xc430('0x2c')]=_[_0xc430('0x2b')](_0x5a9c4b[_0xc430('0x2c')]);_0x262063[_0xc430('0x35')]=_[_0xc430('0x2d')](_0x262063[_0xc430('0x29')],_0x262063[_0xc430('0x2c')]);_0x4983e0[_0xc430('0x2e')]=_[_0xc430('0x2d')](_0x262063[_0xc430('0x29')],qs['fields'](_0x5a9c4b[_0xc430('0x2c')][_0xc430('0x2f')]));_0x4983e0[_0xc430('0x2e')]=_0x4983e0[_0xc430('0x2e')][_0xc430('0x43')]?_0x4983e0[_0xc430('0x2e')]:_0x262063[_0xc430('0x29')];if(_0x5a9c4b[_0xc430('0x2c')]['includeAll']){_0x4983e0[_0xc430('0x3d')]=[{'all':!![]}];}_0x4983e0=_['merge']({},_0x4983e0,_0x5a9c4b[_0xc430('0x3b')]);return db[_0xc430('0x25')]['find'](_0x4983e0)['then'](handleEntityNotFound(_0x47edb0,null))[_0xc430('0x1e')](respondWithResult(_0x47edb0,null))['catch'](handleError(_0x47edb0,null));};exports['create']=function(_0x10db27,_0x4eafae){return db[_0xc430('0x25')][_0xc430('0x44')](_0x10db27[_0xc430('0x45')],{})['then'](respondWithResult(_0x4eafae,0xc9))[_0xc430('0x40')](handleError(_0x4eafae,null));};exports[_0xc430('0x46')]=function(_0x19e563,_0x549400){if(_0x19e563[_0xc430('0x45')]['id']){delete _0x19e563[_0xc430('0x45')]['id'];}return db[_0xc430('0x25')][_0xc430('0x47')]({'where':{'id':_0x19e563[_0xc430('0x42')]['id']}})[_0xc430('0x1e')](handleEntityNotFound(_0x549400,null))[_0xc430('0x1e')](saveUpdates(_0x19e563['body'],null))[_0xc430('0x1e')](respondWithResult(_0x549400,null))[_0xc430('0x40')](handleError(_0x549400,null));};exports[_0xc430('0x1f')]=function(_0x4e9aff,_0x23cb41){return db[_0xc430('0x25')][_0xc430('0x47')]({'where':{'id':_0x4e9aff[_0xc430('0x42')]['id']}})['then'](handleEntityNotFound(_0x23cb41,null))[_0xc430('0x1e')](removeEntity(_0x23cb41,null))['catch'](handleError(_0x23cb41,null));};
\ No newline at end of file
+var _0xba34=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','Integration','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x1ce38d,_0x12d659){var _0x47d36d=function(_0x3f2977){while(--_0x3f2977){_0x1ce38d['push'](_0x1ce38d['shift']());}};_0x47d36d(++_0x12d659);}(_0xba34,0x119));var _0x4ba3=function(_0x4b96f8,_0x10b458){_0x4b96f8=_0x4b96f8-0x0;var _0x5c0136=_0xba34[_0x4b96f8];return _0x5c0136;};'use strict';var emlformat=require(_0x4ba3('0x0'));var rimraf=require(_0x4ba3('0x1'));var zipdir=require(_0x4ba3('0x2'));var jsonpatch=require(_0x4ba3('0x3'));var rp=require(_0x4ba3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4ba3('0x5'));var path=require(_0x4ba3('0x6'));var sox=require(_0x4ba3('0x7'));var csv=require(_0x4ba3('0x8'));var ejs=require(_0x4ba3('0x9'));var fs=require('fs');var fs_extra=require(_0x4ba3('0xa'));var _=require(_0x4ba3('0xb'));var squel=require('squel');var crypto=require(_0x4ba3('0xc'));var jsforce=require(_0x4ba3('0xd'));var deskjs=require(_0x4ba3('0xe'));var toCsv=require(_0x4ba3('0x8'));var querystring=require(_0x4ba3('0xf'));var Papa=require(_0x4ba3('0x10'));var Redis=require(_0x4ba3('0x11'));var authService=require(_0x4ba3('0x12'));var qs=require(_0x4ba3('0x13'));var as=require(_0x4ba3('0x14'));var hardwareService=require(_0x4ba3('0x15'));var logger=require('../../config/logger')(_0x4ba3('0x16'));var utils=require(_0x4ba3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4ba3('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1073d4,_0x52f55c){_0x52f55c=_0x52f55c||0xcc;return function(_0x256f02){if(_0x256f02){return _0x1073d4[_0x4ba3('0x19')](_0x52f55c);}return _0x1073d4[_0x4ba3('0x1a')](_0x52f55c)[_0x4ba3('0x1b')]();};}function respondWithResult(_0x2bc796,_0x3d2ace){_0x3d2ace=_0x3d2ace||0xc8;return function(_0x3a74f7){if(_0x3a74f7){return _0x2bc796[_0x4ba3('0x1a')](_0x3d2ace)[_0x4ba3('0x1c')](_0x3a74f7);}};}function respondWithFilteredResult(_0x401366,_0x36638b){return function(_0x301359){if(_0x301359){var _0x29a9d1=typeof _0x36638b[_0x4ba3('0x1d')]===_0x4ba3('0x1e')&&typeof _0x36638b[_0x4ba3('0x1f')]==='undefined';var _0x382fd0=_0x301359[_0x4ba3('0x20')];var _0x5ff7ce=_0x29a9d1?0x0:_0x36638b[_0x4ba3('0x1d')];var _0x556290=_0x29a9d1?_0x301359[_0x4ba3('0x20')]:_0x36638b[_0x4ba3('0x1d')]+_0x36638b[_0x4ba3('0x1f')];var _0x1e2ce5;if(_0x556290>=_0x382fd0){_0x556290=_0x382fd0;_0x1e2ce5=0xc8;}else{_0x1e2ce5=0xce;}_0x401366[_0x4ba3('0x1a')](_0x1e2ce5);return _0x401366[_0x4ba3('0x21')]('Content-Range',_0x5ff7ce+'-'+_0x556290+'/'+_0x382fd0)['json'](_0x301359);}return null;};}function patchUpdates(_0x2278b0){return function(_0x579d9f){try{jsonpatch[_0x4ba3('0x22')](_0x579d9f,_0x2278b0,!![]);}catch(_0x163967){return BPromise[_0x4ba3('0x23')](_0x163967);}return _0x579d9f[_0x4ba3('0x24')]();};}function saveUpdates(_0x46f1f5,_0x278a23){return function(_0x4a0823){if(_0x4a0823){return _0x4a0823[_0x4ba3('0x25')](_0x46f1f5)[_0x4ba3('0x26')](function(_0x5c28f9){return _0x5c28f9;});}return null;};}function removeEntity(_0x28bb3d,_0x4ffe39){return function(_0x1ae4de){if(_0x1ae4de){return _0x1ae4de[_0x4ba3('0x27')]()[_0x4ba3('0x26')](function(){_0x28bb3d[_0x4ba3('0x1a')](0xcc)[_0x4ba3('0x1b')]();});}};}function handleEntityNotFound(_0xe29a49,_0x159596){return function(_0xe1f7d2){if(!_0xe1f7d2){_0xe29a49[_0x4ba3('0x19')](0x194);}return _0xe1f7d2;};}function handleError(_0x2e67a0,_0x50c729){_0x50c729=_0x50c729||0x1f4;return function(_0x252f37){logger[_0x4ba3('0x28')](_0x252f37[_0x4ba3('0x29')]);if(_0x252f37['name']){delete _0x252f37[_0x4ba3('0x2a')];}_0x2e67a0[_0x4ba3('0x1a')](_0x50c729)[_0x4ba3('0x2b')](_0x252f37);};}exports['index']=function(_0x10cae6,_0x843276){var _0x34ecb4={},_0x22394d={},_0x4a339e={'count':0x0,'rows':[]};var _0x590108=_[_0x4ba3('0x2c')](db[_0x4ba3('0x2d')][_0x4ba3('0x2e')],function(_0x19f039){return{'name':_0x19f039[_0x4ba3('0x2f')],'type':_0x19f039[_0x4ba3('0x30')]['key']};});_0x22394d[_0x4ba3('0x31')]=_[_0x4ba3('0x2c')](_0x590108,_0x4ba3('0x2a'));_0x22394d[_0x4ba3('0x32')]=_[_0x4ba3('0x33')](_0x10cae6[_0x4ba3('0x32')]);_0x22394d[_0x4ba3('0x34')]=_[_0x4ba3('0x35')](_0x22394d[_0x4ba3('0x31')],_0x22394d[_0x4ba3('0x32')]);_0x34ecb4['attributes']=_['intersection'](_0x22394d['model'],qs[_0x4ba3('0x36')](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x36')]));_0x34ecb4[_0x4ba3('0x37')]=_0x34ecb4[_0x4ba3('0x37')][_0x4ba3('0x38')]?_0x34ecb4[_0x4ba3('0x37')]:_0x22394d[_0x4ba3('0x31')];if(!_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x39')](_0x4ba3('0x3a'))){_0x34ecb4[_0x4ba3('0x1f')]=qs['limit'](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x1f')]);_0x34ecb4[_0x4ba3('0x1d')]=qs['offset'](_0x10cae6[_0x4ba3('0x32')]['offset']);}_0x34ecb4[_0x4ba3('0x3b')]=qs[_0x4ba3('0x3c')](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x3c')]);_0x34ecb4[_0x4ba3('0x3d')]=qs[_0x4ba3('0x34')](_['pick'](_0x10cae6[_0x4ba3('0x32')],_0x22394d[_0x4ba3('0x34')]),_0x590108);if(_0x10cae6[_0x4ba3('0x32')]['filter']){_0x34ecb4[_0x4ba3('0x3d')]=_[_0x4ba3('0x3e')](_0x34ecb4['where'],{'$or':_[_0x4ba3('0x2c')](_0x590108,function(_0x503777){if(_0x503777['type']!==_0x4ba3('0x3f')){var _0x1acc74={};_0x1acc74[_0x503777[_0x4ba3('0x2a')]]={'$like':'%'+_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x40')]+'%'};return _0x1acc74;}})});}_0x34ecb4=_['merge']({},_0x34ecb4,_0x10cae6[_0x4ba3('0x41')]);var _0x10e4b5={'where':_0x34ecb4[_0x4ba3('0x3d')]};return db[_0x4ba3('0x2d')][_0x4ba3('0x20')](_0x10e4b5)[_0x4ba3('0x26')](function(_0x349af4){_0x4a339e[_0x4ba3('0x20')]=_0x349af4;if(_0x10cae6['query'][_0x4ba3('0x42')]){_0x34ecb4[_0x4ba3('0x43')]=[{'all':!![]}];}return db[_0x4ba3('0x2d')][_0x4ba3('0x44')](_0x34ecb4);})[_0x4ba3('0x26')](function(_0x25b2c9){_0x4a339e[_0x4ba3('0x45')]=_0x25b2c9;return _0x4a339e;})[_0x4ba3('0x26')](respondWithFilteredResult(_0x843276,_0x34ecb4))[_0x4ba3('0x46')](handleError(_0x843276,null));};exports[_0x4ba3('0x47')]=function(_0x3b9a0a,_0x1c58d2){var _0x1d031b={'raw':![],'where':{'id':_0x3b9a0a['params']['id']}},_0x28b649={};_0x28b649['model']=_['keys'](db['Integration']['rawAttributes']);_0x28b649[_0x4ba3('0x32')]=_['keys'](_0x3b9a0a[_0x4ba3('0x32')]);_0x28b649['filters']=_[_0x4ba3('0x35')](_0x28b649[_0x4ba3('0x31')],_0x28b649[_0x4ba3('0x32')]);_0x1d031b[_0x4ba3('0x37')]=_[_0x4ba3('0x35')](_0x28b649['model'],qs[_0x4ba3('0x36')](_0x3b9a0a['query'][_0x4ba3('0x36')]));_0x1d031b['attributes']=_0x1d031b[_0x4ba3('0x37')][_0x4ba3('0x38')]?_0x1d031b[_0x4ba3('0x37')]:_0x28b649[_0x4ba3('0x31')];if(_0x3b9a0a[_0x4ba3('0x32')][_0x4ba3('0x42')]){_0x1d031b[_0x4ba3('0x43')]=[{'all':!![]}];}_0x1d031b=_['merge']({},_0x1d031b,_0x3b9a0a[_0x4ba3('0x41')]);return db[_0x4ba3('0x2d')][_0x4ba3('0x48')](_0x1d031b)[_0x4ba3('0x26')](handleEntityNotFound(_0x1c58d2,null))[_0x4ba3('0x26')](respondWithResult(_0x1c58d2,null))['catch'](handleError(_0x1c58d2,null));};exports['create']=function(_0xa4bbb2,_0x1fe115){return db[_0x4ba3('0x2d')]['create'](_0xa4bbb2[_0x4ba3('0x49')],{})[_0x4ba3('0x26')](respondWithResult(_0x1fe115,0xc9))[_0x4ba3('0x46')](handleError(_0x1fe115,null));};exports['update']=function(_0x47f588,_0x34dc04){if(_0x47f588['body']['id']){delete _0x47f588[_0x4ba3('0x49')]['id'];}return db[_0x4ba3('0x2d')][_0x4ba3('0x48')]({'where':{'id':_0x47f588[_0x4ba3('0x4a')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x34dc04,null))[_0x4ba3('0x26')](saveUpdates(_0x47f588['body'],null))[_0x4ba3('0x26')](respondWithResult(_0x34dc04,null))[_0x4ba3('0x46')](handleError(_0x34dc04,null));};exports['destroy']=function(_0x325475,_0x12ae6f){return db[_0x4ba3('0x2d')][_0x4ba3('0x48')]({'where':{'id':_0x325475[_0x4ba3('0x4a')]['id']}})['then'](handleEntityNotFound(_0x12ae6f,null))[_0x4ba3('0x26')](removeEntity(_0x12ae6f,null))[_0x4ba3('0x46')](handleError(_0x12ae6f,null));};
\ No newline at end of file
index ea7b09a..ca07429 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4742=['rimraf','../../config/environment','./integration.attributes','define','Integration','integrations','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x231118,_0x12041a){var _0x42bd92=function(_0x182901){while(--_0x182901){_0x231118['push'](_0x231118['shift']());}};_0x42bd92(++_0x12041a);}(_0x4742,0x1b6));var _0x2474=function(_0x169195,_0xffd958){_0x169195=_0x169195-0x0;var _0x3c1f6c=_0x4742[_0x169195];return _0x3c1f6c;};'use strict';var _=require(_0x2474('0x0'));var util=require('util');var logger=require(_0x2474('0x1'))(_0x2474('0x2'));var moment=require(_0x2474('0x3'));var BPromise=require(_0x2474('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2474('0x5'));var rimraf=require(_0x2474('0x6'));var config=require(_0x2474('0x7'));var attributes=require(_0x2474('0x8'));module['exports']=function(_0x365a3f,_0x3bb181){return _0x365a3f[_0x2474('0x9')](_0x2474('0xa'),attributes,{'tableName':_0x2474('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x20f9=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','Integration','integrations','lodash'];(function(_0x1259a0,_0x1f3316){var _0x1a8ff2=function(_0x502de8){while(--_0x502de8){_0x1259a0['push'](_0x1259a0['shift']());}};_0x1a8ff2(++_0x1f3316);}(_0x20f9,0x1cd));var _0x920f=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x20f9[_0x2dea24];return _0x309d58;};'use strict';var _=require(_0x920f('0x0'));var util=require('util');var logger=require(_0x920f('0x1'))('api');var moment=require(_0x920f('0x2'));var BPromise=require(_0x920f('0x3'));var rp=require(_0x920f('0x4'));var fs=require('fs');var path=require(_0x920f('0x5'));var rimraf=require(_0x920f('0x6'));var config=require(_0x920f('0x7'));var attributes=require('./integration.attributes');module[_0x920f('0x8')]=function(_0x208534,_0x5858c8){return _0x208534['define'](_0x920f('0x9'),attributes,{'tableName':_0x920f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 365110c..ed1610e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x896e=['Integration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x88a170,_0x570911){var _0x171401=function(_0x375835){while(--_0x375835){_0x88a170['push'](_0x88a170['shift']());}};_0x171401(++_0x570911);}(_0x896e,0x1e9));var _0xe896=function(_0x1930a2,_0x43eeb1){_0x1930a2=_0x1930a2-0x0;var _0x36fb1f=_0x896e[_0x1930a2];return _0x36fb1f;};'use strict';var _=require(_0xe896('0x0'));var util=require(_0xe896('0x1'));var moment=require(_0xe896('0x2'));var BPromise=require(_0xe896('0x3'));var rs=require(_0xe896('0x4'));var fs=require('fs');var Redis=require(_0xe896('0x5'));var db=require(_0xe896('0x6'))['db'];var utils=require(_0xe896('0x7'));var logger=require(_0xe896('0x8'))(_0xe896('0x9'));var config=require(_0xe896('0xa'));var jayson=require(_0xe896('0xb'));var client=jayson['client'][_0xe896('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x7a0721,_0x3b902c,_0x264eeb){return new BPromise(function(_0x43c619,_0x5a1909){return client[_0xe896('0xd')](_0x7a0721,_0x264eeb)[_0xe896('0xe')](function(_0x37a90d){logger['info'](_0xe896('0xf'),_0x3b902c,'request\x20sent');logger[_0xe896('0x10')]('Integration,\x20%s,\x20%s,\x20%s',_0x3b902c,_0xe896('0x11'),JSON[_0xe896('0x12')](_0x37a90d));if(_0x37a90d[_0xe896('0x13')]){if(_0x37a90d['error'][_0xe896('0x14')]===0x1f4){logger[_0xe896('0x13')](_0xe896('0xf'),_0x3b902c,_0x37a90d['error'][_0xe896('0x15')]);return _0x5a1909(_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);}logger['error'](_0xe896('0xf'),_0x3b902c,_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);return _0x43c619(_0x37a90d['error']['message']);}else{logger[_0xe896('0x16')](_0xe896('0xf'),_0x3b902c,'request\x20sent');_0x43c619(_0x37a90d['result'][_0xe896('0x15')]);}})[_0xe896('0x17')](function(_0x57f04b){logger[_0xe896('0x13')]('Integration,\x20%s,\x20%s',_0x3b902c,_0x57f04b);_0x5a1909(_0x57f04b);});});}
\ No newline at end of file
+var _0x4975=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring'];(function(_0xdc37a1,_0x53ebb9){var _0x99b4fe=function(_0x2811e3){while(--_0x2811e3){_0xdc37a1['push'](_0xdc37a1['shift']());}};_0x99b4fe(++_0x53ebb9);}(_0x4975,0x86));var _0x5497=function(_0x8d74d1,_0x291588){_0x8d74d1=_0x8d74d1-0x0;var _0x1b61ba=_0x4975[_0x8d74d1];return _0x1b61ba;};'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')]('Integration,\x20%s,\x20%s',_0x1d0019,_0x4073e6);_0x57f930(_0x4073e6);});});}
\ No newline at end of file
index 9ec1d23..0c2f896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['update','delete','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x4f8a25,_0x4efaf5){var _0x5796fe=function(_0x5dcc54){while(--_0x5dcc54){_0x4f8a25['push'](_0x4f8a25['shift']());}};_0x5796fe(++_0x4efaf5);}(_0xef0f,0x168));var _0xfef0=function(_0x5532e1,_0x388cd1){_0x5532e1=_0x5532e1-0x0;var _0x276bb5=_0xef0f[_0x5532e1];return _0x276bb5;};'use strict';var multer=require(_0xfef0('0x0'));var util=require('util');var path=require(_0xfef0('0x1'));var timeout=require(_0xfef0('0x2'));var express=require(_0xfef0('0x3'));var router=express['Router']();var fs_extra=require(_0xfef0('0x4'));var auth=require(_0xfef0('0x5'));var interaction=require(_0xfef0('0x6'));var config=require('../../config/environment');var controller=require(_0xfef0('0x7'));router[_0xfef0('0x8')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0xa')]);router[_0xfef0('0x8')](_0xfef0('0xb'),auth['isAuthenticated'](),controller[_0xfef0('0xc')]);router['get'](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0xe')]);router[_0xfef0('0xf')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0x10')]);router[_0xfef0('0x11')](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x12')]);router[_0xfef0('0x13')](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x1261=['create','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','index','get','isAuthenticated','describe','/:id','post'];(function(_0x2b019f,_0x439269){var _0x4f0554=function(_0x319856){while(--_0x319856){_0x2b019f['push'](_0x2b019f['shift']());}};_0x4f0554(++_0x439269);}(_0x1261,0x144));var _0x1126=function(_0x5b3b6a,_0x906f49){_0x5b3b6a=_0x5b3b6a-0x0;var _0x4a9af7=_0x1261[_0x5b3b6a];return _0x4a9af7;};'use strict';var multer=require('multer');var util=require(_0x1126('0x0'));var path=require(_0x1126('0x1'));var timeout=require(_0x1126('0x2'));var express=require(_0x1126('0x3'));var router=express[_0x1126('0x4')]();var fs_extra=require(_0x1126('0x5'));var auth=require(_0x1126('0x6'));var interaction=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var controller=require(_0x1126('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x1126('0xa')]);router[_0x1126('0xb')]('/describe',auth[_0x1126('0xc')](),controller[_0x1126('0xd')]);router[_0x1126('0xb')](_0x1126('0xe'),auth[_0x1126('0xc')](),controller['show']);router[_0x1126('0xf')]('/',auth[_0x1126('0xc')](),controller[_0x1126('0x10')]);router['put'](_0x1126('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x1126('0x11')]('/:id',auth[_0x1126('0xc')](),controller[_0x1126('0x12')]);module[_0x1126('0x13')]=router;
\ No newline at end of file
index 1644dcd..d58a5e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ea8=['SENT','SENDING','FAILED','sequelize','exports','STRING','DATE','BOOLEAN','INTEGER','TEXT'];(function(_0x538182,_0x1670c6){var _0x8eb6c5=function(_0x478a05){while(--_0x478a05){_0x538182['push'](_0x538182['shift']());}};_0x8eb6c5(++_0x1670c6);}(_0x8ea8,0x1c5));var _0x88ea=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8ea8[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x88ea('0x0'));module[_0x88ea('0x1')]={'integration':{'type':Sequelize[_0x88ea('0x2')]},'eventChannel':{'type':Sequelize[_0x88ea('0x2')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0x88ea('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x88ea('0x2')]},'calleridnum':{'type':Sequelize[_0x88ea('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x88ea('0x2')]},'membername':{'type':Sequelize[_0x88ea('0x2')]},'agentcalledAt':{'type':Sequelize[_0x88ea('0x3')]},'agentconnectAt':{'type':Sequelize[_0x88ea('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x88ea('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0x88ea('0x5')]},'agentacw':{'type':Sequelize[_0x88ea('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x88ea('0x5')]},'reason':{'type':Sequelize[_0x88ea('0x2')]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x88ea('0x3')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x88ea('0x3')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x88ea('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x88ea('0x2')]},'connectedlinenum':{'type':Sequelize[_0x88ea('0x2')]},'connectedlinename':{'type':Sequelize[_0x88ea('0x2')]},'language':{'type':Sequelize[_0x88ea('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x88ea('0x2')]},'exten':{'type':Sequelize[_0x88ea('0x2')]},'priority':{'type':Sequelize[_0x88ea('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x88ea('0x2')]},'destcalleridnum':{'type':Sequelize[_0x88ea('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x88ea('0x2')]},'destlanguage':{'type':Sequelize[_0x88ea('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x88ea('0x2')]},'destexten':{'type':Sequelize[_0x88ea('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x88ea('0x2')]},'messageId':{'type':Sequelize[_0x88ea('0x2')]},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0x88ea('0x2')]},'from':{'type':Sequelize[_0x88ea('0x2')]},'to':{'type':Sequelize[_0x88ea('0x2')]},'cc':{'type':Sequelize[_0x88ea('0x2')]},'attachment':{'type':Sequelize[_0x88ea('0x6')]},'html':{'type':Sequelize[_0x88ea('0x6')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize['ENUM'](_0x88ea('0x7'),_0x88ea('0x8'),'RECEIVED',_0x88ea('0x9'))},'url':{'type':Sequelize['STRING']},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x7eac=['DATE','INTEGER','BOOLEAN','TEXT','ENUM','SENT','SENDING','FAILED','sequelize','STRING'];(function(_0x28794f,_0x8a58fc){var _0x57ddc0=function(_0x29e5f7){while(--_0x29e5f7){_0x28794f['push'](_0x28794f['shift']());}};_0x57ddc0(++_0x8a58fc);}(_0x7eac,0x1ac));var _0xc7ea=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x7eac[_0x122096];return _0x3d1966;};'use strict';var Sequelize=require(_0xc7ea('0x0'));module['exports']={'integration':{'type':Sequelize[_0xc7ea('0x1')]},'eventChannel':{'type':Sequelize[_0xc7ea('0x1')]},'exitStatus':{'type':Sequelize[_0xc7ea('0x1')]},'ticketId':{'type':Sequelize[_0xc7ea('0x1')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xc7ea('0x1')]},'calleridname':{'type':Sequelize[_0xc7ea('0x1')]},'queue':{'type':Sequelize[_0xc7ea('0x1')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xc7ea('0x1')]},'agentcalledAt':{'type':Sequelize[_0xc7ea('0x2')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xc7ea('0x3')]},'agentcomplete':{'type':Sequelize[_0xc7ea('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0xc7ea('0x3')]},'agentacw':{'type':Sequelize[_0xc7ea('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xc7ea('0x3')]},'reason':{'type':Sequelize[_0xc7ea('0x1')]},'agentringnoanswer':{'type':Sequelize[_0xc7ea('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xc7ea('0x2')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xc7ea('0x2')]},'lastevent':{'type':Sequelize[_0xc7ea('0x1')]},'channel':{'type':Sequelize[_0xc7ea('0x1')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xc7ea('0x1')]},'language':{'type':Sequelize[_0xc7ea('0x1')]},'accountcode':{'type':Sequelize[_0xc7ea('0x1')]},'context':{'type':Sequelize[_0xc7ea('0x1')]},'exten':{'type':Sequelize[_0xc7ea('0x1')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xc7ea('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xc7ea('0x1')]},'destcalleridnum':{'type':Sequelize[_0xc7ea('0x1')]},'destcalleridname':{'type':Sequelize[_0xc7ea('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xc7ea('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xc7ea('0x1')]},'destlanguage':{'type':Sequelize[_0xc7ea('0x1')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0xc7ea('0x1')]},'destexten':{'type':Sequelize[_0xc7ea('0x1')]},'destpriority':{'type':Sequelize[_0xc7ea('0x1')]},'destuniqueid':{'type':Sequelize[_0xc7ea('0x1')]},'messageId':{'type':Sequelize[_0xc7ea('0x1')]},'inReplyTo':{'type':Sequelize[_0xc7ea('0x1')]},'subject':{'type':Sequelize[_0xc7ea('0x1')]},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xc7ea('0x1')]},'attachment':{'type':Sequelize[_0xc7ea('0x5')]},'html':{'type':Sequelize[_0xc7ea('0x5')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize[_0xc7ea('0x6')](_0xc7ea('0x7'),_0xc7ea('0x8'),'RECEIVED',_0xc7ea('0x9'))},'url':{'type':Sequelize[_0xc7ea('0x1')]},'app':{'type':Sequelize[_0xc7ea('0x1')]},'appdata':{'type':Sequelize[_0xc7ea('0x1')]},'projectId':{'type':Sequelize[_0xc7ea('0x3')]}};
\ No newline at end of file
index 6c0d16a..a9b3e11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dc4=['save','update','then','error','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','options','IntegrationReport','includeAll','include','findAll','rows','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject'];(function(_0x9dfc10,_0x19c2d5){var _0x4f938a=function(_0x12b1e5){while(--_0x12b1e5){_0x9dfc10['push'](_0x9dfc10['shift']());}};_0x4f938a(++_0x19c2d5);}(_0x8dc4,0x1a2));var _0x48dc=function(_0x1fbdf4,_0x3288d9){_0x1fbdf4=_0x1fbdf4-0x0;var _0xe8c87b=_0x8dc4[_0x1fbdf4];return _0xe8c87b;};'use strict';var emlformat=require(_0x48dc('0x0'));var rimraf=require(_0x48dc('0x1'));var zipdir=require(_0x48dc('0x2'));var jsonpatch=require(_0x48dc('0x3'));var rp=require(_0x48dc('0x4'));var moment=require(_0x48dc('0x5'));var BPromise=require(_0x48dc('0x6'));var Mustache=require('mustache');var util=require(_0x48dc('0x7'));var path=require(_0x48dc('0x8'));var sox=require('sox');var csv=require(_0x48dc('0x9'));var ejs=require(_0x48dc('0xa'));var fs=require('fs');var fs_extra=require(_0x48dc('0xb'));var _=require(_0x48dc('0xc'));var squel=require(_0x48dc('0xd'));var crypto=require('crypto');var jsforce=require(_0x48dc('0xe'));var deskjs=require(_0x48dc('0xf'));var toCsv=require(_0x48dc('0x9'));var querystring=require(_0x48dc('0x10'));var Papa=require(_0x48dc('0x11'));var Redis=require(_0x48dc('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x48dc('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x48dc('0x14'))(_0x48dc('0x15'));var utils=require(_0x48dc('0x16'));var config=require(_0x48dc('0x17'));var licenseUtil=require(_0x48dc('0x18'));var db=require(_0x48dc('0x19'))['db'];function respondWithStatusCode(_0x32ca8d,_0x585c21){_0x585c21=_0x585c21||0xcc;return function(_0x5533c1){if(_0x5533c1){return _0x32ca8d[_0x48dc('0x1a')](_0x585c21);}return _0x32ca8d[_0x48dc('0x1b')](_0x585c21)[_0x48dc('0x1c')]();};}function respondWithResult(_0x47da25,_0x5bb54e){_0x5bb54e=_0x5bb54e||0xc8;return function(_0x23b957){if(_0x23b957){return _0x47da25[_0x48dc('0x1b')](_0x5bb54e)[_0x48dc('0x1d')](_0x23b957);}};}function respondWithFilteredResult(_0xbd3c61,_0x58f6ba){return function(_0x51fb2d){if(_0x51fb2d){var _0x3dee4f=typeof _0x58f6ba['offset']==='undefined'&&typeof _0x58f6ba['limit']===_0x48dc('0x1e');var _0x150c10=_0x51fb2d[_0x48dc('0x1f')];var _0xc6f647=_0x3dee4f?0x0:_0x58f6ba['offset'];var _0x39a32a=_0x3dee4f?_0x51fb2d[_0x48dc('0x1f')]:_0x58f6ba[_0x48dc('0x20')]+_0x58f6ba[_0x48dc('0x21')];var _0xf7689d;if(_0x39a32a>=_0x150c10){_0x39a32a=_0x150c10;_0xf7689d=0xc8;}else{_0xf7689d=0xce;}_0xbd3c61[_0x48dc('0x1b')](_0xf7689d);return _0xbd3c61[_0x48dc('0x22')](_0x48dc('0x23'),_0xc6f647+'-'+_0x39a32a+'/'+_0x150c10)[_0x48dc('0x1d')](_0x51fb2d);}return null;};}function patchUpdates(_0x7112e7){return function(_0x41bfcd){try{jsonpatch[_0x48dc('0x24')](_0x41bfcd,_0x7112e7,!![]);}catch(_0x12a3f8){return BPromise[_0x48dc('0x25')](_0x12a3f8);}return _0x41bfcd[_0x48dc('0x26')]();};}function saveUpdates(_0x1e98b6,_0x39264e){return function(_0x110d66){if(_0x110d66){return _0x110d66[_0x48dc('0x27')](_0x1e98b6)[_0x48dc('0x28')](function(_0x10a5d7){return _0x10a5d7;});}return null;};}function removeEntity(_0x1fa78b,_0x4617d3){return function(_0x4ccc9c){if(_0x4ccc9c){return _0x4ccc9c['destroy']()[_0x48dc('0x28')](function(){_0x1fa78b[_0x48dc('0x1b')](0xcc)[_0x48dc('0x1c')]();});}};}function handleEntityNotFound(_0x5c60ab,_0x3de30f){return function(_0x585b1c){if(!_0x585b1c){_0x5c60ab[_0x48dc('0x1a')](0x194);}return _0x585b1c;};}function handleError(_0x4757ec,_0x2be159){_0x2be159=_0x2be159||0x1f4;return function(_0x2c3dd3){logger[_0x48dc('0x29')](_0x2c3dd3['stack']);if(_0x2c3dd3['name']){delete _0x2c3dd3[_0x48dc('0x2a')];}_0x4757ec['status'](_0x2be159)[_0x48dc('0x2b')](_0x2c3dd3);};}exports[_0x48dc('0x2c')]=function(_0x434dfa,_0x548ba5){var _0x2396c2={},_0x4b1da2={},_0x47430c={'count':0x0,'rows':[]};var _0x434209=_[_0x48dc('0x2d')](db['IntegrationReport'][_0x48dc('0x2e')],function(_0x5a910b){return{'name':_0x5a910b[_0x48dc('0x2f')],'type':_0x5a910b[_0x48dc('0x30')]['key']};});_0x4b1da2[_0x48dc('0x31')]=_[_0x48dc('0x2d')](_0x434209,_0x48dc('0x2a'));_0x4b1da2[_0x48dc('0x32')]=_[_0x48dc('0x33')](_0x434dfa['query']);_0x4b1da2[_0x48dc('0x34')]=_['intersection'](_0x4b1da2[_0x48dc('0x31')],_0x4b1da2['query']);_0x2396c2[_0x48dc('0x35')]=_[_0x48dc('0x36')](_0x4b1da2[_0x48dc('0x31')],qs['fields'](_0x434dfa['query'][_0x48dc('0x37')]));_0x2396c2['attributes']=_0x2396c2[_0x48dc('0x35')][_0x48dc('0x38')]?_0x2396c2['attributes']:_0x4b1da2['model'];if(!_0x434dfa[_0x48dc('0x32')]['hasOwnProperty'](_0x48dc('0x39'))){_0x2396c2['limit']=qs[_0x48dc('0x21')](_0x434dfa[_0x48dc('0x32')]['limit']);_0x2396c2['offset']=qs[_0x48dc('0x20')](_0x434dfa[_0x48dc('0x32')]['offset']);}_0x2396c2[_0x48dc('0x3a')]=qs[_0x48dc('0x3b')](_0x434dfa[_0x48dc('0x32')][_0x48dc('0x3b')]);_0x2396c2[_0x48dc('0x3c')]=qs[_0x48dc('0x34')](_[_0x48dc('0x3d')](_0x434dfa[_0x48dc('0x32')],_0x4b1da2[_0x48dc('0x34')]),_0x434209);if(_0x434dfa[_0x48dc('0x32')][_0x48dc('0x3e')]){_0x2396c2[_0x48dc('0x3c')]=_[_0x48dc('0x3f')](_0x2396c2[_0x48dc('0x3c')],{'$or':_[_0x48dc('0x2d')](_0x434209,function(_0x1f2e5b){if(_0x1f2e5b['type']!=='VIRTUAL'){var _0xac2d9={};_0xac2d9[_0x1f2e5b['name']]={'$like':'%'+_0x434dfa[_0x48dc('0x32')]['filter']+'%'};return _0xac2d9;}})});}_0x2396c2=_['merge']({},_0x2396c2,_0x434dfa[_0x48dc('0x40')]);var _0x2bd174={'where':_0x2396c2[_0x48dc('0x3c')]};return db[_0x48dc('0x41')]['count'](_0x2bd174)['then'](function(_0x41c024){_0x47430c[_0x48dc('0x1f')]=_0x41c024;if(_0x434dfa['query'][_0x48dc('0x42')]){_0x2396c2[_0x48dc('0x43')]=[{'all':!![]}];}return db[_0x48dc('0x41')][_0x48dc('0x44')](_0x2396c2);})['then'](function(_0x2c7ea1){_0x47430c[_0x48dc('0x45')]=_0x2c7ea1;return _0x47430c;})[_0x48dc('0x28')](respondWithFilteredResult(_0x548ba5,_0x2396c2))[_0x48dc('0x46')](handleError(_0x548ba5,null));};exports['show']=function(_0x4f662e,_0x23ee5f){var _0x4752a9={'raw':![],'where':{'id':_0x4f662e[_0x48dc('0x47')]['id']}},_0x263f77={};_0x263f77['model']=_[_0x48dc('0x33')](db[_0x48dc('0x41')]['rawAttributes']);_0x263f77['query']=_['keys'](_0x4f662e[_0x48dc('0x32')]);_0x263f77[_0x48dc('0x34')]=_[_0x48dc('0x36')](_0x263f77[_0x48dc('0x31')],_0x263f77['query']);_0x4752a9['attributes']=_[_0x48dc('0x36')](_0x263f77[_0x48dc('0x31')],qs[_0x48dc('0x37')](_0x4f662e[_0x48dc('0x32')]['fields']));_0x4752a9[_0x48dc('0x35')]=_0x4752a9[_0x48dc('0x35')][_0x48dc('0x38')]?_0x4752a9[_0x48dc('0x35')]:_0x263f77[_0x48dc('0x31')];if(_0x4f662e['query'][_0x48dc('0x42')]){_0x4752a9['include']=[{'all':!![]}];}_0x4752a9=_['merge']({},_0x4752a9,_0x4f662e[_0x48dc('0x40')]);return db[_0x48dc('0x41')][_0x48dc('0x48')](_0x4752a9)['then'](handleEntityNotFound(_0x23ee5f,null))['then'](respondWithResult(_0x23ee5f,null))[_0x48dc('0x46')](handleError(_0x23ee5f,null));};exports[_0x48dc('0x49')]=function(_0x5be680,_0x37e87f){return db[_0x48dc('0x41')]['create'](_0x5be680['body'],{})[_0x48dc('0x28')](respondWithResult(_0x37e87f,0xc9))['catch'](handleError(_0x37e87f,null));};exports[_0x48dc('0x27')]=function(_0x260453,_0x4dd47b){if(_0x260453['body']['id']){delete _0x260453['body']['id'];}return db[_0x48dc('0x41')][_0x48dc('0x48')]({'where':{'id':_0x260453[_0x48dc('0x47')]['id']}})[_0x48dc('0x28')](handleEntityNotFound(_0x4dd47b,null))[_0x48dc('0x28')](saveUpdates(_0x260453[_0x48dc('0x4a')],null))[_0x48dc('0x28')](respondWithResult(_0x4dd47b,null))[_0x48dc('0x46')](handleError(_0x4dd47b,null));};exports['destroy']=function(_0x6f756b,_0x1b699c){return db['IntegrationReport']['find']({'where':{'id':_0x6f756b[_0x48dc('0x47')]['id']}})[_0x48dc('0x28')](handleEntityNotFound(_0x1b699c,null))[_0x48dc('0x28')](removeEntity(_0x1b699c,null))[_0x48dc('0x46')](handleError(_0x1b699c,null));};exports[_0x48dc('0x4b')]=function(_0x4aeb07,_0x4e2be7){return db[_0x48dc('0x41')][_0x48dc('0x4b')]()[_0x48dc('0x28')](respondWithResult(_0x4e2be7,null))[_0x48dc('0x46')](handleError(_0x4e2be7,null));};
\ No newline at end of file
+var _0x0706=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','IntegrationReport','include','rows','catch','show','params','includeAll','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce'];(function(_0x2ef086,_0x138059){var _0x7ca82=function(_0x5c48e4){while(--_0x5c48e4){_0x2ef086['push'](_0x2ef086['shift']());}};_0x7ca82(++_0x138059);}(_0x0706,0xd7));var _0x6070=function(_0x24e3e1,_0x2d14de){_0x24e3e1=_0x24e3e1-0x0;var _0x5bbe06=_0x0706[_0x24e3e1];return _0x5bbe06;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6070('0x0'));var zipdir=require(_0x6070('0x1'));var jsonpatch=require(_0x6070('0x2'));var rp=require(_0x6070('0x3'));var moment=require(_0x6070('0x4'));var BPromise=require(_0x6070('0x5'));var Mustache=require(_0x6070('0x6'));var util=require(_0x6070('0x7'));var path=require(_0x6070('0x8'));var sox=require(_0x6070('0x9'));var csv=require(_0x6070('0xa'));var ejs=require(_0x6070('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6070('0xc'));var squel=require(_0x6070('0xd'));var crypto=require(_0x6070('0xe'));var jsforce=require(_0x6070('0xf'));var deskjs=require(_0x6070('0x10'));var toCsv=require('to-csv');var querystring=require(_0x6070('0x11'));var Papa=require(_0x6070('0x12'));var Redis=require(_0x6070('0x13'));var authService=require(_0x6070('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x6070('0x15'));var hardwareService=require(_0x6070('0x16'));var logger=require(_0x6070('0x17'))(_0x6070('0x18'));var utils=require(_0x6070('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x6070('0x1a'));var db=require(_0x6070('0x1b'))['db'];function respondWithStatusCode(_0x20a10f,_0x249a12){_0x249a12=_0x249a12||0xcc;return function(_0x53e90b){if(_0x53e90b){return _0x20a10f[_0x6070('0x1c')](_0x249a12);}return _0x20a10f['status'](_0x249a12)[_0x6070('0x1d')]();};}function respondWithResult(_0x142354,_0x45cbb5){_0x45cbb5=_0x45cbb5||0xc8;return function(_0x5e3308){if(_0x5e3308){return _0x142354[_0x6070('0x1e')](_0x45cbb5)['json'](_0x5e3308);}};}function respondWithFilteredResult(_0x1c3aca,_0x2b6e82){return function(_0x6b5019){if(_0x6b5019){var _0x1bab2d=typeof _0x2b6e82[_0x6070('0x1f')]===_0x6070('0x20')&&typeof _0x2b6e82[_0x6070('0x21')]===_0x6070('0x20');var _0x227618=_0x6b5019[_0x6070('0x22')];var _0x42476c=_0x1bab2d?0x0:_0x2b6e82[_0x6070('0x1f')];var _0xea6065=_0x1bab2d?_0x6b5019[_0x6070('0x22')]:_0x2b6e82[_0x6070('0x1f')]+_0x2b6e82['limit'];var _0x379055;if(_0xea6065>=_0x227618){_0xea6065=_0x227618;_0x379055=0xc8;}else{_0x379055=0xce;}_0x1c3aca[_0x6070('0x1e')](_0x379055);return _0x1c3aca[_0x6070('0x23')](_0x6070('0x24'),_0x42476c+'-'+_0xea6065+'/'+_0x227618)[_0x6070('0x25')](_0x6b5019);}return null;};}function patchUpdates(_0x19c79e){return function(_0x5301e5){try{jsonpatch['apply'](_0x5301e5,_0x19c79e,!![]);}catch(_0x1aae8c){return BPromise[_0x6070('0x26')](_0x1aae8c);}return _0x5301e5['save']();};}function saveUpdates(_0x30f7de,_0x566d44){return function(_0x2089eb){if(_0x2089eb){return _0x2089eb[_0x6070('0x27')](_0x30f7de)[_0x6070('0x28')](function(_0x240cda){return _0x240cda;});}return null;};}function removeEntity(_0x5a9303,_0xbc299a){return function(_0x30a767){if(_0x30a767){return _0x30a767[_0x6070('0x29')]()[_0x6070('0x28')](function(){_0x5a9303[_0x6070('0x1e')](0xcc)[_0x6070('0x1d')]();});}};}function handleEntityNotFound(_0x264426,_0xd10eb1){return function(_0x527fbc){if(!_0x527fbc){_0x264426[_0x6070('0x1c')](0x194);}return _0x527fbc;};}function handleError(_0x4a444e,_0x10b06a){_0x10b06a=_0x10b06a||0x1f4;return function(_0x50a27c){logger[_0x6070('0x2a')](_0x50a27c[_0x6070('0x2b')]);if(_0x50a27c['name']){delete _0x50a27c[_0x6070('0x2c')];}_0x4a444e[_0x6070('0x1e')](_0x10b06a)[_0x6070('0x2d')](_0x50a27c);};}exports[_0x6070('0x2e')]=function(_0x3d5fcc,_0x30841d){var _0x5a2dc8={},_0x2efce0={},_0x1ff738={'count':0x0,'rows':[]};var _0x1357ff=_['map'](db['IntegrationReport'][_0x6070('0x2f')],function(_0x25201f){return{'name':_0x25201f[_0x6070('0x30')],'type':_0x25201f[_0x6070('0x31')][_0x6070('0x32')]};});_0x2efce0[_0x6070('0x33')]=_['map'](_0x1357ff,_0x6070('0x2c'));_0x2efce0[_0x6070('0x34')]=_[_0x6070('0x35')](_0x3d5fcc[_0x6070('0x34')]);_0x2efce0[_0x6070('0x36')]=_['intersection'](_0x2efce0[_0x6070('0x33')],_0x2efce0[_0x6070('0x34')]);_0x5a2dc8['attributes']=_[_0x6070('0x37')](_0x2efce0['model'],qs[_0x6070('0x38')](_0x3d5fcc[_0x6070('0x34')]['fields']));_0x5a2dc8[_0x6070('0x39')]=_0x5a2dc8[_0x6070('0x39')][_0x6070('0x3a')]?_0x5a2dc8['attributes']:_0x2efce0[_0x6070('0x33')];if(!_0x3d5fcc[_0x6070('0x34')][_0x6070('0x3b')](_0x6070('0x3c'))){_0x5a2dc8['limit']=qs[_0x6070('0x21')](_0x3d5fcc[_0x6070('0x34')][_0x6070('0x21')]);_0x5a2dc8[_0x6070('0x1f')]=qs[_0x6070('0x1f')](_0x3d5fcc[_0x6070('0x34')][_0x6070('0x1f')]);}_0x5a2dc8['order']=qs[_0x6070('0x3d')](_0x3d5fcc[_0x6070('0x34')][_0x6070('0x3d')]);_0x5a2dc8[_0x6070('0x3e')]=qs[_0x6070('0x36')](_['pick'](_0x3d5fcc[_0x6070('0x34')],_0x2efce0[_0x6070('0x36')]),_0x1357ff);if(_0x3d5fcc[_0x6070('0x34')][_0x6070('0x3f')]){_0x5a2dc8[_0x6070('0x3e')]=_[_0x6070('0x40')](_0x5a2dc8['where'],{'$or':_['map'](_0x1357ff,function(_0xb64f18){if(_0xb64f18[_0x6070('0x31')]!=='VIRTUAL'){var _0x2d064b={};_0x2d064b[_0xb64f18[_0x6070('0x2c')]]={'$like':'%'+_0x3d5fcc[_0x6070('0x34')][_0x6070('0x3f')]+'%'};return _0x2d064b;}})});}_0x5a2dc8=_[_0x6070('0x40')]({},_0x5a2dc8,_0x3d5fcc[_0x6070('0x41')]);var _0xce597d={'where':_0x5a2dc8['where']};return db[_0x6070('0x42')][_0x6070('0x22')](_0xce597d)[_0x6070('0x28')](function(_0x19d585){_0x1ff738[_0x6070('0x22')]=_0x19d585;if(_0x3d5fcc['query']['includeAll']){_0x5a2dc8[_0x6070('0x43')]=[{'all':!![]}];}return db[_0x6070('0x42')]['findAll'](_0x5a2dc8);})[_0x6070('0x28')](function(_0x256c4f){_0x1ff738[_0x6070('0x44')]=_0x256c4f;return _0x1ff738;})['then'](respondWithFilteredResult(_0x30841d,_0x5a2dc8))[_0x6070('0x45')](handleError(_0x30841d,null));};exports[_0x6070('0x46')]=function(_0xd61cae,_0x2613be){var _0x9670ac={'raw':![],'where':{'id':_0xd61cae[_0x6070('0x47')]['id']}},_0x5b0a6c={};_0x5b0a6c['model']=_[_0x6070('0x35')](db[_0x6070('0x42')]['rawAttributes']);_0x5b0a6c[_0x6070('0x34')]=_[_0x6070('0x35')](_0xd61cae['query']);_0x5b0a6c['filters']=_[_0x6070('0x37')](_0x5b0a6c[_0x6070('0x33')],_0x5b0a6c[_0x6070('0x34')]);_0x9670ac['attributes']=_[_0x6070('0x37')](_0x5b0a6c[_0x6070('0x33')],qs['fields'](_0xd61cae[_0x6070('0x34')]['fields']));_0x9670ac[_0x6070('0x39')]=_0x9670ac['attributes'][_0x6070('0x3a')]?_0x9670ac[_0x6070('0x39')]:_0x5b0a6c['model'];if(_0xd61cae['query'][_0x6070('0x48')]){_0x9670ac[_0x6070('0x43')]=[{'all':!![]}];}_0x9670ac=_['merge']({},_0x9670ac,_0xd61cae[_0x6070('0x41')]);return db[_0x6070('0x42')][_0x6070('0x49')](_0x9670ac)[_0x6070('0x28')](handleEntityNotFound(_0x2613be,null))[_0x6070('0x28')](respondWithResult(_0x2613be,null))['catch'](handleError(_0x2613be,null));};exports['create']=function(_0x1eb436,_0x54f856){return db[_0x6070('0x42')][_0x6070('0x4a')](_0x1eb436[_0x6070('0x4b')],{})['then'](respondWithResult(_0x54f856,0xc9))[_0x6070('0x45')](handleError(_0x54f856,null));};exports[_0x6070('0x27')]=function(_0x55cf7a,_0x187dd6){if(_0x55cf7a['body']['id']){delete _0x55cf7a['body']['id'];}return db[_0x6070('0x42')][_0x6070('0x49')]({'where':{'id':_0x55cf7a[_0x6070('0x47')]['id']}})[_0x6070('0x28')](handleEntityNotFound(_0x187dd6,null))['then'](saveUpdates(_0x55cf7a['body'],null))['then'](respondWithResult(_0x187dd6,null))['catch'](handleError(_0x187dd6,null));};exports[_0x6070('0x29')]=function(_0x434e88,_0x14c6cc){return db[_0x6070('0x42')][_0x6070('0x49')]({'where':{'id':_0x434e88[_0x6070('0x47')]['id']}})[_0x6070('0x28')](handleEntityNotFound(_0x14c6cc,null))['then'](removeEntity(_0x14c6cc,null))[_0x6070('0x45')](handleError(_0x14c6cc,null));};exports[_0x6070('0x4c')]=function(_0x2cbe2f,_0x5563a5){return db[_0x6070('0x42')][_0x6070('0x4c')]()[_0x6070('0x28')](respondWithResult(_0x5563a5,null))['catch'](handleError(_0x5563a5,null));};
\ No newline at end of file
index deac9f7..81b7f7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b73=['bluebird','request-promise','path','rimraf','../../config/environment','./integrationReport.attributes','exports','define','IntegrationReport','report_integration','lodash','util','../../config/logger'];(function(_0x3328bd,_0x34b6cc){var _0xf2012a=function(_0x35a4e5){while(--_0x35a4e5){_0x3328bd['push'](_0x3328bd['shift']());}};_0xf2012a(++_0x34b6cc);}(_0x9b73,0x14f));var _0x39b7=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9b73[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x39b7('0x0'));var util=require(_0x39b7('0x1'));var logger=require(_0x39b7('0x2'))('api');var moment=require('moment');var BPromise=require(_0x39b7('0x3'));var rp=require(_0x39b7('0x4'));var fs=require('fs');var path=require(_0x39b7('0x5'));var rimraf=require(_0x39b7('0x6'));var config=require(_0x39b7('0x7'));var attributes=require(_0x39b7('0x8'));module[_0x39b7('0x9')]=function(_0x4446be,_0x4e4d39){return _0x4446be[_0x39b7('0xa')](_0x39b7('0xb'),attributes,{'tableName':_0x39b7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e84=['report_integration','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./integrationReport.attributes','exports','define','IntegrationReport'];(function(_0x5198e8,_0x2f0021){var _0x39efca=function(_0xa0fe01){while(--_0xa0fe01){_0x5198e8['push'](_0x5198e8['shift']());}};_0x39efca(++_0x2f0021);}(_0x2e84,0x146));var _0x42e8=function(_0x525410,_0x2226b5){_0x525410=_0x525410-0x0;var _0x5ae943=_0x2e84[_0x525410];return _0x5ae943;};'use strict';var _=require(_0x42e8('0x0'));var util=require(_0x42e8('0x1'));var logger=require(_0x42e8('0x2'))('api');var moment=require(_0x42e8('0x3'));var BPromise=require(_0x42e8('0x4'));var rp=require(_0x42e8('0x5'));var fs=require('fs');var path=require(_0x42e8('0x6'));var rimraf=require(_0x42e8('0x7'));var config=require('../../config/environment');var attributes=require(_0x42e8('0x8'));module[_0x42e8('0x9')]=function(_0x1ac2d1,_0x4eb7e8){return _0x1ac2d1[_0x42e8('0xa')](_0x42e8('0xb'),attributes,{'tableName':_0x42e8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4ab7fbc..3b6dd36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['http','request','then','info','IntegrationReport,\x20%s,\x20%s','debug','IntegrationReport,\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(_0x148e39,_0x581123){var _0x47d521=function(_0x8019b2){while(--_0x8019b2){_0x148e39['push'](_0x148e39['shift']());}};_0x47d521(++_0x581123);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x1a7dd6,_0x31be8e){_0x1a7dd6=_0x1a7dd6-0x0;var _0x114d31=_0xc6ac[_0x1a7dd6];return _0x114d31;};'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']('IntegrationReport,\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 _0x326f=['info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x119d2f,_0x2bda92){var _0x4c438c=function(_0x3ee44b){while(--_0x3ee44b){_0x119d2f['push'](_0x119d2f['shift']());}};_0x4c438c(++_0x2bda92);}(_0x326f,0xd1));var _0xf326=function(_0x5c98b2,_0x4b6199){_0x5c98b2=_0x5c98b2-0x0;var _0x3c0ae1=_0x326f[_0x5c98b2];return _0x3c0ae1;};'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')]('IntegrationReport,\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')]('IntegrationReport,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}
\ No newline at end of file
index 16d0c6d..269a861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9485=['index','/:id/sub_intervals','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','addIntervals','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./interval.controller','get','isAuthenticated'];(function(_0x25d314,_0x2ef847){var _0x1a31e2=function(_0x122cbf){while(--_0x122cbf){_0x25d314['push'](_0x25d314['shift']());}};_0x1a31e2(++_0x2ef847);}(_0x9485,0x8b));var _0x5948=function(_0x3c5d36,_0x2cd165){_0x3c5d36=_0x3c5d36-0x0;var _0xf0c844=_0x9485[_0x3c5d36];return _0xf0c844;};'use strict';var multer=require(_0x5948('0x0'));var util=require(_0x5948('0x1'));var path=require(_0x5948('0x2'));var timeout=require(_0x5948('0x3'));var express=require('express');var router=express[_0x5948('0x4')]();var fs_extra=require(_0x5948('0x5'));var auth=require(_0x5948('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5948('0x7'));var controller=require(_0x5948('0x8'));router[_0x5948('0x9')]('/',auth[_0x5948('0xa')](),controller[_0x5948('0xb')]);router[_0x5948('0x9')]('/:id',auth[_0x5948('0xa')](),controller['show']);router[_0x5948('0x9')](_0x5948('0xc'),auth['isAuthenticated'](),controller[_0x5948('0xd')]);router[_0x5948('0xe')]('/',auth['isAuthenticated'](),controller[_0x5948('0xf')]);router[_0x5948('0xe')](_0x5948('0xc'),auth[_0x5948('0xa')](),controller[_0x5948('0x10')]);router[_0x5948('0xe')](_0x5948('0x11'),auth[_0x5948('0xa')](),controller[_0x5948('0x12')]);router[_0x5948('0x13')](_0x5948('0x14'),auth['isAuthenticated'](),controller[_0x5948('0x15')]);router[_0x5948('0x16')](_0x5948('0x14'),auth[_0x5948('0xa')](),controller[_0x5948('0x17')]);module[_0x5948('0x18')]=router;
\ No newline at end of file
+var _0xbb1a=['Router','fs-extra','../../components/interaction/service','../../config/environment','./interval.controller','isAuthenticated','index','get','/:id','/:id/sub_intervals','getIntervals','create','post','addInterval','/:id/sub_intervals/create_many','addIntervals','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0xdfabd7,_0x2f8286){var _0x534c39=function(_0x2f8f47){while(--_0x2f8f47){_0xdfabd7['push'](_0xdfabd7['shift']());}};_0x534c39(++_0x2f8286);}(_0xbb1a,0x14c));var _0xabb1=function(_0x3a6c6f,_0x1bbc4e){_0x3a6c6f=_0x3a6c6f-0x0;var _0x4dd32e=_0xbb1a[_0x3a6c6f];return _0x4dd32e;};'use strict';var multer=require(_0xabb1('0x0'));var util=require(_0xabb1('0x1'));var path=require(_0xabb1('0x2'));var timeout=require(_0xabb1('0x3'));var express=require('express');var router=express[_0xabb1('0x4')]();var fs_extra=require(_0xabb1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xabb1('0x6'));var config=require(_0xabb1('0x7'));var controller=require(_0xabb1('0x8'));router['get']('/',auth[_0xabb1('0x9')](),controller[_0xabb1('0xa')]);router[_0xabb1('0xb')](_0xabb1('0xc'),auth[_0xabb1('0x9')](),controller['show']);router[_0xabb1('0xb')](_0xabb1('0xd'),auth[_0xabb1('0x9')](),controller[_0xabb1('0xe')]);router['post']('/',auth[_0xabb1('0x9')](),controller[_0xabb1('0xf')]);router[_0xabb1('0x10')]('/:id/sub_intervals',auth[_0xabb1('0x9')](),controller[_0xabb1('0x11')]);router[_0xabb1('0x10')](_0xabb1('0x12'),auth[_0xabb1('0x9')](),controller[_0xabb1('0x13')]);router['put'](_0xabb1('0xc'),auth[_0xabb1('0x9')](),controller[_0xabb1('0x14')]);router[_0xabb1('0x15')](_0xabb1('0xc'),auth['isAuthenticated'](),controller[_0xabb1('0x16')]);module[_0xabb1('0x17')]=router;
\ No newline at end of file
index d90ba9e..e3597ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd184=['sequelize','STRING'];(function(_0x13b19a,_0x53d0bc){var _0x106bc0=function(_0x33046b){while(--_0x33046b){_0x13b19a['push'](_0x13b19a['shift']());}};_0x106bc0(++_0x53d0bc);}(_0xd184,0x1c8));var _0x4d18=function(_0x4acd26,_0x40f588){_0x4acd26=_0x4acd26-0x0;var _0x465453=_0xd184[_0x4acd26];return _0x465453;};'use strict';var Sequelize=require(_0x4d18('0x0'));module['exports']={'name':{'type':Sequelize[_0x4d18('0x1')]},'description':{'type':Sequelize[_0x4d18('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0x7b4a=['STRING'];(function(_0x204b72,_0x26d93d){var _0x39c008=function(_0x25dff1){while(--_0x25dff1){_0x204b72['push'](_0x204b72['shift']());}};_0x39c008(++_0x26d93d);}(_0x7b4a,0x92));var _0xa7b4=function(_0x44ca6e,_0x5e2c91){_0x44ca6e=_0x44ca6e-0x0;var _0x2edab2=_0x7b4a[_0x44ca6e];return _0x2edab2;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xa7b4('0x0')]},'description':{'type':Sequelize[_0xa7b4('0x0')]},'interval':{'type':Sequelize[_0xa7b4('0x0')],'allowNull':!![]}};
\ No newline at end of file
index db4c1f2..903fbe0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb945=['model','map','query','filters','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','Interval','includeAll','include','findAll','catch','show','keys','intersection','options','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','params','addInterval','IntervalId','getIntervals','findOne','pick','nolimit','addIntervals','sequelize','transaction','bulkCreate','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','Intervals','UserProfileResource','destroy','error','name','rawAttributes','fieldName','type','key'];(function(_0x5b617b,_0x18d41b){var _0x2baf50=function(_0x4059e3){while(--_0x4059e3){_0x5b617b['push'](_0x5b617b['shift']());}};_0x2baf50(++_0x18d41b);}(_0xb945,0xde));var _0x5b94=function(_0xd46033,_0xa8f11f){_0xd46033=_0xd46033-0x0;var _0x2c64d9=_0xb945[_0xd46033];return _0x2c64d9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5b94('0x0'));var rp=require('request-promise');var moment=require(_0x5b94('0x1'));var BPromise=require(_0x5b94('0x2'));var Mustache=require(_0x5b94('0x3'));var util=require('util');var path=require(_0x5b94('0x4'));var sox=require(_0x5b94('0x5'));var csv=require(_0x5b94('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5b94('0x7'));var _=require(_0x5b94('0x8'));var squel=require(_0x5b94('0x9'));var crypto=require(_0x5b94('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5b94('0x6'));var querystring=require(_0x5b94('0xb'));var Papa=require(_0x5b94('0xc'));var Redis=require(_0x5b94('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5b94('0xe'));var as=require(_0x5b94('0xf'));var hardwareService=require(_0x5b94('0x10'));var logger=require(_0x5b94('0x11'))(_0x5b94('0x12'));var utils=require(_0x5b94('0x13'));var config=require(_0x5b94('0x14'));var licenseUtil=require(_0x5b94('0x15'));var db=require(_0x5b94('0x16'))['db'];var extensions=require(_0x5b94('0x17'));function respondWithStatusCode(_0x549362,_0x2ee063){_0x2ee063=_0x2ee063||0xcc;return function(_0x34f278){if(_0x34f278){return _0x549362['sendStatus'](_0x2ee063);}return _0x549362[_0x5b94('0x18')](_0x2ee063)[_0x5b94('0x19')]();};}function respondWithResult(_0x3de15d,_0x19c94e){_0x19c94e=_0x19c94e||0xc8;return function(_0x486932){if(_0x486932){return _0x3de15d[_0x5b94('0x18')](_0x19c94e)[_0x5b94('0x1a')](_0x486932);}};}function respondWithFilteredResult(_0x118978,_0x1c5e72){return function(_0x34e0de){if(_0x34e0de){var _0x57c41f=typeof _0x1c5e72[_0x5b94('0x1b')]===_0x5b94('0x1c')&&typeof _0x1c5e72[_0x5b94('0x1d')]==='undefined';var _0x27d658=_0x34e0de[_0x5b94('0x1e')];var _0x265441=_0x57c41f?0x0:_0x1c5e72[_0x5b94('0x1b')];var _0x3f330c=_0x57c41f?_0x34e0de[_0x5b94('0x1e')]:_0x1c5e72[_0x5b94('0x1b')]+_0x1c5e72[_0x5b94('0x1d')];var _0x21f925;if(_0x3f330c>=_0x27d658){_0x3f330c=_0x27d658;_0x21f925=0xc8;}else{_0x21f925=0xce;}_0x118978['status'](_0x21f925);return _0x118978[_0x5b94('0x1f')](_0x5b94('0x20'),_0x265441+'-'+_0x3f330c+'/'+_0x27d658)[_0x5b94('0x1a')](_0x34e0de);}return null;};}function patchUpdates(_0x371bf0){return function(_0x463586){try{jsonpatch[_0x5b94('0x21')](_0x463586,_0x371bf0,!![]);}catch(_0x389bd1){return BPromise['reject'](_0x389bd1);}return _0x463586[_0x5b94('0x22')]();};}function saveUpdates(_0x531081,_0x2d984f){return function(_0x4c1fef){if(_0x4c1fef){return _0x4c1fef['update'](_0x531081)[_0x5b94('0x23')](function(_0x51304c){return _0x51304c;});}return null;};}function removeEntity(_0x234322,_0x184d86){return function(_0x2bceda){if(_0x2bceda){return _0x2bceda['destroy']()[_0x5b94('0x23')](function(){var _0x41c7fa=_0x2bceda['get']({'plain':!![]});var _0x4ef2d2=_0x5b94('0x24');return db[_0x5b94('0x25')][_0x5b94('0x26')]({'where':{'type':_0x4ef2d2,'resourceId':_0x41c7fa['id']}})['then'](function(){return _0x2bceda;});})[_0x5b94('0x23')](function(){_0x234322[_0x5b94('0x18')](0xcc)[_0x5b94('0x19')]();});}};}function handleEntityNotFound(_0xe479f5,_0x2c3891){return function(_0x47f412){if(!_0x47f412){_0xe479f5['sendStatus'](0x194);}return _0x47f412;};}function handleError(_0x4fa992,_0x13883c){_0x13883c=_0x13883c||0x1f4;return function(_0x2ddd39){logger[_0x5b94('0x27')](_0x2ddd39['stack']);if(_0x2ddd39[_0x5b94('0x28')]){delete _0x2ddd39['name'];}_0x4fa992[_0x5b94('0x18')](_0x13883c)['send'](_0x2ddd39);};}exports['index']=function(_0x17ff57,_0x5d0f45){var _0x350322={},_0x6e152={},_0x4b71d6={'count':0x0,'rows':[]};var _0x2dd0fc=_['map'](db['Interval'][_0x5b94('0x29')],function(_0x4d397c){return{'name':_0x4d397c[_0x5b94('0x2a')],'type':_0x4d397c[_0x5b94('0x2b')][_0x5b94('0x2c')]};});_0x6e152[_0x5b94('0x2d')]=_[_0x5b94('0x2e')](_0x2dd0fc,_0x5b94('0x28'));_0x6e152[_0x5b94('0x2f')]=_['keys'](_0x17ff57[_0x5b94('0x2f')]);_0x6e152[_0x5b94('0x30')]=_['intersection'](_0x6e152[_0x5b94('0x2d')],_0x6e152[_0x5b94('0x2f')]);_0x350322[_0x5b94('0x31')]=_['intersection'](_0x6e152[_0x5b94('0x2d')],qs[_0x5b94('0x32')](_0x17ff57[_0x5b94('0x2f')][_0x5b94('0x32')]));_0x350322['attributes']=_0x350322[_0x5b94('0x31')][_0x5b94('0x33')]?_0x350322[_0x5b94('0x31')]:_0x6e152[_0x5b94('0x2d')];if(!_0x17ff57['query'][_0x5b94('0x34')]('nolimit')){_0x350322[_0x5b94('0x1d')]=qs[_0x5b94('0x1d')](_0x17ff57[_0x5b94('0x2f')][_0x5b94('0x1d')]);_0x350322[_0x5b94('0x1b')]=qs['offset'](_0x17ff57[_0x5b94('0x2f')]['offset']);}_0x350322[_0x5b94('0x35')]=qs[_0x5b94('0x36')](_0x17ff57[_0x5b94('0x2f')]['sort']);_0x350322[_0x5b94('0x37')]=qs[_0x5b94('0x30')](_['pick'](_0x17ff57['query'],_0x6e152['filters']),_0x2dd0fc);if(_0x17ff57['query'][_0x5b94('0x38')]){_0x350322[_0x5b94('0x37')]=_[_0x5b94('0x39')](_0x350322[_0x5b94('0x37')],{'$or':_[_0x5b94('0x2e')](_0x2dd0fc,function(_0x317628){if(_0x317628['type']!==_0x5b94('0x3a')){var _0x5a2c08={};_0x5a2c08[_0x317628['name']]={'$like':'%'+_0x17ff57[_0x5b94('0x2f')][_0x5b94('0x38')]+'%'};return _0x5a2c08;}})});}_0x350322=_[_0x5b94('0x39')]({},_0x350322,_0x17ff57['options']);var _0x4fc940={'where':_0x350322[_0x5b94('0x37')]};return db[_0x5b94('0x3b')][_0x5b94('0x1e')](_0x4fc940)[_0x5b94('0x23')](function(_0x73c19){_0x4b71d6[_0x5b94('0x1e')]=_0x73c19;if(_0x17ff57[_0x5b94('0x2f')][_0x5b94('0x3c')]){_0x350322[_0x5b94('0x3d')]=[{'all':!![]}];}return db['Interval'][_0x5b94('0x3e')](_0x350322);})[_0x5b94('0x23')](function(_0x2d634d){_0x4b71d6['rows']=_0x2d634d;return _0x4b71d6;})['then'](respondWithFilteredResult(_0x5d0f45,_0x350322))[_0x5b94('0x3f')](handleError(_0x5d0f45,null));};exports[_0x5b94('0x40')]=function(_0x3bab97,_0x1231cd){var _0x5388ab={'raw':!![],'where':{'id':_0x3bab97['params']['id']}},_0x2d9d8e={};_0x2d9d8e[_0x5b94('0x2d')]=_[_0x5b94('0x41')](db[_0x5b94('0x3b')][_0x5b94('0x29')]);_0x2d9d8e[_0x5b94('0x2f')]=_[_0x5b94('0x41')](_0x3bab97[_0x5b94('0x2f')]);_0x2d9d8e[_0x5b94('0x30')]=_['intersection'](_0x2d9d8e[_0x5b94('0x2d')],_0x2d9d8e[_0x5b94('0x2f')]);_0x5388ab[_0x5b94('0x31')]=_[_0x5b94('0x42')](_0x2d9d8e[_0x5b94('0x2d')],qs[_0x5b94('0x32')](_0x3bab97[_0x5b94('0x2f')][_0x5b94('0x32')]));_0x5388ab[_0x5b94('0x31')]=_0x5388ab[_0x5b94('0x31')]['length']?_0x5388ab[_0x5b94('0x31')]:_0x2d9d8e['model'];if(_0x3bab97['query'][_0x5b94('0x3c')]){_0x5388ab[_0x5b94('0x3d')]=[{'all':!![]}];}_0x5388ab=_[_0x5b94('0x39')]({},_0x5388ab,_0x3bab97[_0x5b94('0x43')]);return db[_0x5b94('0x3b')]['find'](_0x5388ab)[_0x5b94('0x23')](handleEntityNotFound(_0x1231cd,null))[_0x5b94('0x23')](respondWithResult(_0x1231cd,null))[_0x5b94('0x3f')](handleError(_0x1231cd,null));};exports[_0x5b94('0x44')]=function(_0x23ce5a,_0x5e5768){return db[_0x5b94('0x3b')][_0x5b94('0x44')](_0x23ce5a[_0x5b94('0x45')],{})[_0x5b94('0x23')](function(_0x243c38){var _0x3f8051=_0x23ce5a['user'][_0x5b94('0x46')]({'plain':!![]});if(!_0x3f8051)throw new Error(_0x5b94('0x47'));if(_0x3f8051[_0x5b94('0x48')]==='user'){var _0x252505=_0x243c38[_0x5b94('0x46')]({'plain':!![]});var _0x4908ca=_0x5b94('0x24');return db['UserProfileSection']['find']({'where':{'name':_0x4908ca,'userProfileId':_0x3f8051[_0x5b94('0x49')]},'raw':!![]})[_0x5b94('0x23')](function(_0x482c5f){if(_0x482c5f&&_0x482c5f[_0x5b94('0x4a')]===0x0){return db[_0x5b94('0x25')][_0x5b94('0x44')]({'name':_0x252505[_0x5b94('0x28')],'resourceId':_0x252505['id'],'type':_0x482c5f[_0x5b94('0x28')],'sectionId':_0x482c5f['id']},{})[_0x5b94('0x23')](function(){return _0x243c38;});}else{return _0x243c38;}})[_0x5b94('0x3f')](function(_0x1f01d8){logger[_0x5b94('0x27')](_0x5b94('0x4b'),_0x1f01d8);throw _0x1f01d8;});}return _0x243c38;})[_0x5b94('0x23')](respondWithResult(_0x5e5768,0xc9))[_0x5b94('0x3f')](handleError(_0x5e5768,null));};exports[_0x5b94('0x4c')]=function(_0x84f828,_0x4270f9){if(_0x84f828[_0x5b94('0x45')]['id']){delete _0x84f828[_0x5b94('0x45')]['id'];}return db[_0x5b94('0x3b')][_0x5b94('0x4d')]({'where':{'id':_0x84f828[_0x5b94('0x4e')]['id']}})[_0x5b94('0x23')](handleEntityNotFound(_0x4270f9,null))[_0x5b94('0x23')](saveUpdates(_0x84f828['body'],null))['then'](respondWithResult(_0x4270f9,null))['catch'](handleError(_0x4270f9,null));};exports['destroy']=function(_0x5d6f6a,_0x54f6f4){return db['Interval'][_0x5b94('0x4d')]({'where':{'id':_0x5d6f6a['params']['id']}})[_0x5b94('0x23')](handleEntityNotFound(_0x54f6f4,null))[_0x5b94('0x23')](removeEntity(_0x54f6f4,null))[_0x5b94('0x3f')](handleError(_0x54f6f4,null));};exports[_0x5b94('0x4f')]=function(_0x12b92e,_0x2bc08a,_0x1e4ef7){if(_0x12b92e['body']['id']){delete _0x12b92e[_0x5b94('0x45')]['id'];}return db['Interval'][_0x5b94('0x4d')]({'where':{'id':_0x12b92e[_0x5b94('0x4e')]['id']}})[_0x5b94('0x23')](handleEntityNotFound(_0x2bc08a,null))[_0x5b94('0x23')](function(_0x587456){if(_0x587456){_0x12b92e[_0x5b94('0x45')][_0x5b94('0x50')]=_0x587456['id'];return db[_0x5b94('0x3b')][_0x5b94('0x44')](_0x12b92e[_0x5b94('0x45')]);}})['then'](respondWithResult(_0x2bc08a,null))[_0x5b94('0x3f')](handleError(_0x2bc08a,null));};exports[_0x5b94('0x51')]=function(_0x5a59d8,_0x2035a0,_0x285f1b){var _0x184a87={};var _0xe9f3a7={};var _0xbc320e;var _0x2676cf;return db[_0x5b94('0x3b')][_0x5b94('0x52')]({'where':{'id':_0x5a59d8[_0x5b94('0x4e')]['id']}})[_0x5b94('0x23')](handleEntityNotFound(_0x2035a0,null))[_0x5b94('0x23')](function(_0x4adcb2){if(_0x4adcb2){_0xbc320e=_0x4adcb2;_0xe9f3a7[_0x5b94('0x2d')]=_[_0x5b94('0x41')](db[_0x5b94('0x3b')]['rawAttributes']);_0xe9f3a7[_0x5b94('0x2f')]=_['keys'](_0x5a59d8[_0x5b94('0x2f')]);_0xe9f3a7['filters']=_['intersection'](_0xe9f3a7[_0x5b94('0x2d')],_0xe9f3a7[_0x5b94('0x2f')]);_0x184a87[_0x5b94('0x31')]=_[_0x5b94('0x42')](_0xe9f3a7[_0x5b94('0x2d')],qs[_0x5b94('0x32')](_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x32')]));_0x184a87[_0x5b94('0x31')]=_0x184a87[_0x5b94('0x31')]['length']?_0x184a87[_0x5b94('0x31')]:_0xe9f3a7[_0x5b94('0x2d')];_0x184a87[_0x5b94('0x35')]=qs[_0x5b94('0x36')](_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x36')]);_0x184a87[_0x5b94('0x37')]=qs[_0x5b94('0x30')](_[_0x5b94('0x53')](_0x5a59d8['query'],_0xe9f3a7[_0x5b94('0x30')]));if(_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x38')]){_0x184a87[_0x5b94('0x37')]=_[_0x5b94('0x39')](_0x184a87[_0x5b94('0x37')],{'$or':_[_0x5b94('0x2e')](_0x184a87[_0x5b94('0x31')],function(_0x1b5f57){var _0x29be29={};_0x29be29[_0x1b5f57]={'$like':'%'+_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x38')]+'%'};return _0x29be29;})});}_0x184a87=_['merge']({},_0x184a87,_0x5a59d8['options']);return _0xbc320e[_0x5b94('0x51')](_0x184a87);}})[_0x5b94('0x23')](function(_0x52e1c1){if(_0x52e1c1){_0x2676cf=_0x52e1c1[_0x5b94('0x33')];if(!_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x34')](_0x5b94('0x54'))){_0x184a87[_0x5b94('0x1d')]=qs[_0x5b94('0x1d')](_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x1d')]);_0x184a87[_0x5b94('0x1b')]=qs['offset'](_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x1b')]);}return _0xbc320e[_0x5b94('0x51')](_0x184a87);}})[_0x5b94('0x23')](function(_0x5a633f){if(_0x5a633f){return _0x5a633f?{'count':_0x2676cf,'rows':_0x5a633f}:null;}})[_0x5b94('0x23')](respondWithResult(_0x2035a0,null))['catch'](handleError(_0x2035a0,null));};exports[_0x5b94('0x55')]=function(_0x2b73af,_0x2b936b,_0x46d188){return db[_0x5b94('0x3b')]['findOne']({'where':{'id':_0x2b73af['params']['id']}})[_0x5b94('0x23')](handleEntityNotFound(_0x2b936b,null))['then'](function(_0x10624e){if(_0x10624e){return db[_0x5b94('0x56')][_0x5b94('0x57')](function(_0x5a10d4){return db['Interval'][_0x5b94('0x26')]({'where':{'IntervalId':_0x2b73af[_0x5b94('0x4e')]['id']},'transaction':_0x5a10d4})[_0x5b94('0x23')](function(_0x2d0c3b){var _0x3678b5=_[_0x5b94('0x2e')](_0x2b73af[_0x5b94('0x45')],function(_0x3da4e7){delete _0x3da4e7['id'];_0x3da4e7[_0x5b94('0x50')]=_0x2b73af[_0x5b94('0x4e')]['id'];return _0x3da4e7;});return db[_0x5b94('0x3b')][_0x5b94('0x58')](_0x3678b5,{'transaction':_0x5a10d4});});})['then'](function(){return db[_0x5b94('0x3b')][_0x5b94('0x3e')]({'where':{'IntervalId':_0x2b73af[_0x5b94('0x4e')]['id']}});});}})['then'](respondWithResult(_0x2b936b,null))['catch'](handleError(_0x2b936b,null));};
\ No newline at end of file
+var _0x10d6=['key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','filter','options','includeAll','include','rows','params','keys','create','body','user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','IntervalId','getIntervals','findOne','addIntervals','sequelize','transaction','bulkCreate','findAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','status','end','json','offset','undefined','count','set','apply','reject','save','update','then','destroy','get','Intervals','UserProfileResource','sendStatus','error','stack','name','send','index','map','Interval','rawAttributes','type'];(function(_0x30645a,_0x1b5094){var _0x7e58ae=function(_0x46d662){while(--_0x46d662){_0x30645a['push'](_0x30645a['shift']());}};_0x7e58ae(++_0x1b5094);}(_0x10d6,0x87));var _0x610d=function(_0x4da34e,_0x7fbea9){_0x4da34e=_0x4da34e-0x0;var _0xca120d=_0x10d6[_0x4da34e];return _0xca120d;};'use strict';var emlformat=require(_0x610d('0x0'));var rimraf=require(_0x610d('0x1'));var zipdir=require(_0x610d('0x2'));var jsonpatch=require(_0x610d('0x3'));var rp=require('request-promise');var moment=require(_0x610d('0x4'));var BPromise=require(_0x610d('0x5'));var Mustache=require('mustache');var util=require(_0x610d('0x6'));var path=require(_0x610d('0x7'));var sox=require(_0x610d('0x8'));var csv=require(_0x610d('0x9'));var ejs=require(_0x610d('0xa'));var fs=require('fs');var fs_extra=require(_0x610d('0xb'));var _=require(_0x610d('0xc'));var squel=require(_0x610d('0xd'));var crypto=require(_0x610d('0xe'));var jsforce=require(_0x610d('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x610d('0x9'));var querystring=require(_0x610d('0x10'));var Papa=require(_0x610d('0x11'));var Redis=require('ioredis');var authService=require(_0x610d('0x12'));var qs=require(_0x610d('0x13'));var as=require(_0x610d('0x14'));var hardwareService=require(_0x610d('0x15'));var logger=require(_0x610d('0x16'))(_0x610d('0x17'));var utils=require(_0x610d('0x18'));var config=require(_0x610d('0x19'));var licenseUtil=require(_0x610d('0x1a'));var db=require(_0x610d('0x1b'))['db'];var extensions=require(_0x610d('0x1c'));function respondWithStatusCode(_0x25530f,_0x2743d5){_0x2743d5=_0x2743d5||0xcc;return function(_0x24dfe7){if(_0x24dfe7){return _0x25530f['sendStatus'](_0x2743d5);}return _0x25530f[_0x610d('0x1d')](_0x2743d5)[_0x610d('0x1e')]();};}function respondWithResult(_0x29513a,_0x1f192e){_0x1f192e=_0x1f192e||0xc8;return function(_0x1ec187){if(_0x1ec187){return _0x29513a[_0x610d('0x1d')](_0x1f192e)[_0x610d('0x1f')](_0x1ec187);}};}function respondWithFilteredResult(_0x5dfffe,_0x26acba){return function(_0x48cb01){if(_0x48cb01){var _0x529a7c=typeof _0x26acba[_0x610d('0x20')]===_0x610d('0x21')&&typeof _0x26acba['limit']===_0x610d('0x21');var _0x5ce2c3=_0x48cb01[_0x610d('0x22')];var _0x54ccc8=_0x529a7c?0x0:_0x26acba[_0x610d('0x20')];var _0xb279c9=_0x529a7c?_0x48cb01[_0x610d('0x22')]:_0x26acba[_0x610d('0x20')]+_0x26acba['limit'];var _0x4c5739;if(_0xb279c9>=_0x5ce2c3){_0xb279c9=_0x5ce2c3;_0x4c5739=0xc8;}else{_0x4c5739=0xce;}_0x5dfffe['status'](_0x4c5739);return _0x5dfffe[_0x610d('0x23')]('Content-Range',_0x54ccc8+'-'+_0xb279c9+'/'+_0x5ce2c3)['json'](_0x48cb01);}return null;};}function patchUpdates(_0x11b660){return function(_0x50d75b){try{jsonpatch[_0x610d('0x24')](_0x50d75b,_0x11b660,!![]);}catch(_0x5a99b6){return BPromise[_0x610d('0x25')](_0x5a99b6);}return _0x50d75b[_0x610d('0x26')]();};}function saveUpdates(_0x1b4561,_0x344c30){return function(_0x153b89){if(_0x153b89){return _0x153b89[_0x610d('0x27')](_0x1b4561)[_0x610d('0x28')](function(_0x2f82b0){return _0x2f82b0;});}return null;};}function removeEntity(_0x206ab6,_0x3e1d1e){return function(_0x5cd9cf){if(_0x5cd9cf){return _0x5cd9cf[_0x610d('0x29')]()[_0x610d('0x28')](function(){var _0x3b0c37=_0x5cd9cf[_0x610d('0x2a')]({'plain':!![]});var _0x4c5fd1=_0x610d('0x2b');return db[_0x610d('0x2c')][_0x610d('0x29')]({'where':{'type':_0x4c5fd1,'resourceId':_0x3b0c37['id']}})[_0x610d('0x28')](function(){return _0x5cd9cf;});})['then'](function(){_0x206ab6[_0x610d('0x1d')](0xcc)[_0x610d('0x1e')]();});}};}function handleEntityNotFound(_0x402e82,_0x5e5667){return function(_0x1c0062){if(!_0x1c0062){_0x402e82[_0x610d('0x2d')](0x194);}return _0x1c0062;};}function handleError(_0x10cf1d,_0x44ecdb){_0x44ecdb=_0x44ecdb||0x1f4;return function(_0x59aca4){logger[_0x610d('0x2e')](_0x59aca4[_0x610d('0x2f')]);if(_0x59aca4['name']){delete _0x59aca4[_0x610d('0x30')];}_0x10cf1d[_0x610d('0x1d')](_0x44ecdb)[_0x610d('0x31')](_0x59aca4);};}exports[_0x610d('0x32')]=function(_0xe031b4,_0x41c571){var _0x333114={},_0x53a9f4={},_0x3716bf={'count':0x0,'rows':[]};var _0x1119e6=_[_0x610d('0x33')](db[_0x610d('0x34')][_0x610d('0x35')],function(_0x202a28){return{'name':_0x202a28['fieldName'],'type':_0x202a28[_0x610d('0x36')][_0x610d('0x37')]};});_0x53a9f4[_0x610d('0x38')]=_[_0x610d('0x33')](_0x1119e6,_0x610d('0x30'));_0x53a9f4[_0x610d('0x39')]=_['keys'](_0xe031b4[_0x610d('0x39')]);_0x53a9f4[_0x610d('0x3a')]=_[_0x610d('0x3b')](_0x53a9f4[_0x610d('0x38')],_0x53a9f4['query']);_0x333114[_0x610d('0x3c')]=_[_0x610d('0x3b')](_0x53a9f4[_0x610d('0x38')],qs[_0x610d('0x3d')](_0xe031b4[_0x610d('0x39')]['fields']));_0x333114[_0x610d('0x3c')]=_0x333114[_0x610d('0x3c')][_0x610d('0x3e')]?_0x333114[_0x610d('0x3c')]:_0x53a9f4[_0x610d('0x38')];if(!_0xe031b4['query'][_0x610d('0x3f')](_0x610d('0x40'))){_0x333114[_0x610d('0x41')]=qs[_0x610d('0x41')](_0xe031b4['query'][_0x610d('0x41')]);_0x333114[_0x610d('0x20')]=qs['offset'](_0xe031b4['query'][_0x610d('0x20')]);}_0x333114[_0x610d('0x42')]=qs[_0x610d('0x43')](_0xe031b4[_0x610d('0x39')][_0x610d('0x43')]);_0x333114[_0x610d('0x44')]=qs[_0x610d('0x3a')](_[_0x610d('0x45')](_0xe031b4[_0x610d('0x39')],_0x53a9f4[_0x610d('0x3a')]),_0x1119e6);if(_0xe031b4['query']['filter']){_0x333114[_0x610d('0x44')]=_[_0x610d('0x46')](_0x333114['where'],{'$or':_[_0x610d('0x33')](_0x1119e6,function(_0x27a716){if(_0x27a716[_0x610d('0x36')]!=='VIRTUAL'){var _0x58ee2c={};_0x58ee2c[_0x27a716['name']]={'$like':'%'+_0xe031b4[_0x610d('0x39')][_0x610d('0x47')]+'%'};return _0x58ee2c;}})});}_0x333114=_[_0x610d('0x46')]({},_0x333114,_0xe031b4[_0x610d('0x48')]);var _0x5faccf={'where':_0x333114['where']};return db[_0x610d('0x34')][_0x610d('0x22')](_0x5faccf)[_0x610d('0x28')](function(_0x5c64f8){_0x3716bf[_0x610d('0x22')]=_0x5c64f8;if(_0xe031b4[_0x610d('0x39')][_0x610d('0x49')]){_0x333114[_0x610d('0x4a')]=[{'all':!![]}];}return db['Interval']['findAll'](_0x333114);})[_0x610d('0x28')](function(_0x23553f){_0x3716bf[_0x610d('0x4b')]=_0x23553f;return _0x3716bf;})[_0x610d('0x28')](respondWithFilteredResult(_0x41c571,_0x333114))['catch'](handleError(_0x41c571,null));};exports['show']=function(_0x43831b,_0x3897db){var _0x2b46c1={'raw':!![],'where':{'id':_0x43831b[_0x610d('0x4c')]['id']}},_0x267c7e={};_0x267c7e['model']=_['keys'](db[_0x610d('0x34')][_0x610d('0x35')]);_0x267c7e[_0x610d('0x39')]=_[_0x610d('0x4d')](_0x43831b[_0x610d('0x39')]);_0x267c7e[_0x610d('0x3a')]=_[_0x610d('0x3b')](_0x267c7e['model'],_0x267c7e[_0x610d('0x39')]);_0x2b46c1[_0x610d('0x3c')]=_[_0x610d('0x3b')](_0x267c7e[_0x610d('0x38')],qs[_0x610d('0x3d')](_0x43831b[_0x610d('0x39')][_0x610d('0x3d')]));_0x2b46c1[_0x610d('0x3c')]=_0x2b46c1[_0x610d('0x3c')]['length']?_0x2b46c1['attributes']:_0x267c7e[_0x610d('0x38')];if(_0x43831b[_0x610d('0x39')][_0x610d('0x49')]){_0x2b46c1[_0x610d('0x4a')]=[{'all':!![]}];}_0x2b46c1=_['merge']({},_0x2b46c1,_0x43831b['options']);return db[_0x610d('0x34')]['find'](_0x2b46c1)[_0x610d('0x28')](handleEntityNotFound(_0x3897db,null))[_0x610d('0x28')](respondWithResult(_0x3897db,null))['catch'](handleError(_0x3897db,null));};exports[_0x610d('0x4e')]=function(_0x3243c7,_0x5a4211){return db[_0x610d('0x34')][_0x610d('0x4e')](_0x3243c7[_0x610d('0x4f')],{})[_0x610d('0x28')](function(_0x12d7bf){var _0x286911=_0x3243c7[_0x610d('0x50')][_0x610d('0x2a')]({'plain':!![]});if(!_0x286911)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x286911[_0x610d('0x51')]===_0x610d('0x50')){var _0x2cbaed=_0x12d7bf[_0x610d('0x2a')]({'plain':!![]});var _0xdd3517=_0x610d('0x2b');return db[_0x610d('0x52')][_0x610d('0x53')]({'where':{'name':_0xdd3517,'userProfileId':_0x286911['userProfileId']},'raw':!![]})[_0x610d('0x28')](function(_0x3d1698){if(_0x3d1698&&_0x3d1698[_0x610d('0x54')]===0x0){return db['UserProfileResource'][_0x610d('0x4e')]({'name':_0x2cbaed[_0x610d('0x30')],'resourceId':_0x2cbaed['id'],'type':_0x3d1698[_0x610d('0x30')],'sectionId':_0x3d1698['id']},{})['then'](function(){return _0x12d7bf;});}else{return _0x12d7bf;}})['catch'](function(_0x427dfc){logger[_0x610d('0x2e')](_0x610d('0x55'),_0x427dfc);throw _0x427dfc;});}return _0x12d7bf;})[_0x610d('0x28')](respondWithResult(_0x5a4211,0xc9))[_0x610d('0x56')](handleError(_0x5a4211,null));};exports['update']=function(_0x42970b,_0x4e8f6d){if(_0x42970b[_0x610d('0x4f')]['id']){delete _0x42970b[_0x610d('0x4f')]['id'];}return db['Interval'][_0x610d('0x53')]({'where':{'id':_0x42970b[_0x610d('0x4c')]['id']}})[_0x610d('0x28')](handleEntityNotFound(_0x4e8f6d,null))[_0x610d('0x28')](saveUpdates(_0x42970b['body'],null))[_0x610d('0x28')](respondWithResult(_0x4e8f6d,null))[_0x610d('0x56')](handleError(_0x4e8f6d,null));};exports[_0x610d('0x29')]=function(_0x1c978d,_0x490076){return db[_0x610d('0x34')][_0x610d('0x53')]({'where':{'id':_0x1c978d['params']['id']}})[_0x610d('0x28')](handleEntityNotFound(_0x490076,null))[_0x610d('0x28')](removeEntity(_0x490076,null))[_0x610d('0x56')](handleError(_0x490076,null));};exports['addInterval']=function(_0x547237,_0x47e564,_0x4e84bc){if(_0x547237[_0x610d('0x4f')]['id']){delete _0x547237[_0x610d('0x4f')]['id'];}return db['Interval']['find']({'where':{'id':_0x547237[_0x610d('0x4c')]['id']}})['then'](handleEntityNotFound(_0x47e564,null))[_0x610d('0x28')](function(_0x4b1930){if(_0x4b1930){_0x547237[_0x610d('0x4f')][_0x610d('0x57')]=_0x4b1930['id'];return db[_0x610d('0x34')]['create'](_0x547237[_0x610d('0x4f')]);}})['then'](respondWithResult(_0x47e564,null))[_0x610d('0x56')](handleError(_0x47e564,null));};exports[_0x610d('0x58')]=function(_0x5b57bf,_0x2ec71c,_0x2b1389){var _0x56b33a={};var _0x422524={};var _0x12c357;var _0x1fd6be;return db[_0x610d('0x34')][_0x610d('0x59')]({'where':{'id':_0x5b57bf['params']['id']}})[_0x610d('0x28')](handleEntityNotFound(_0x2ec71c,null))[_0x610d('0x28')](function(_0x421011){if(_0x421011){_0x12c357=_0x421011;_0x422524[_0x610d('0x38')]=_[_0x610d('0x4d')](db[_0x610d('0x34')][_0x610d('0x35')]);_0x422524[_0x610d('0x39')]=_[_0x610d('0x4d')](_0x5b57bf[_0x610d('0x39')]);_0x422524[_0x610d('0x3a')]=_[_0x610d('0x3b')](_0x422524[_0x610d('0x38')],_0x422524[_0x610d('0x39')]);_0x56b33a[_0x610d('0x3c')]=_[_0x610d('0x3b')](_0x422524[_0x610d('0x38')],qs[_0x610d('0x3d')](_0x5b57bf[_0x610d('0x39')][_0x610d('0x3d')]));_0x56b33a[_0x610d('0x3c')]=_0x56b33a[_0x610d('0x3c')][_0x610d('0x3e')]?_0x56b33a['attributes']:_0x422524[_0x610d('0x38')];_0x56b33a[_0x610d('0x42')]=qs[_0x610d('0x43')](_0x5b57bf[_0x610d('0x39')][_0x610d('0x43')]);_0x56b33a[_0x610d('0x44')]=qs['filters'](_['pick'](_0x5b57bf[_0x610d('0x39')],_0x422524[_0x610d('0x3a')]));if(_0x5b57bf[_0x610d('0x39')]['filter']){_0x56b33a[_0x610d('0x44')]=_[_0x610d('0x46')](_0x56b33a[_0x610d('0x44')],{'$or':_[_0x610d('0x33')](_0x56b33a[_0x610d('0x3c')],function(_0x51987d){var _0x74fd24={};_0x74fd24[_0x51987d]={'$like':'%'+_0x5b57bf['query'][_0x610d('0x47')]+'%'};return _0x74fd24;})});}_0x56b33a=_[_0x610d('0x46')]({},_0x56b33a,_0x5b57bf[_0x610d('0x48')]);return _0x12c357['getIntervals'](_0x56b33a);}})[_0x610d('0x28')](function(_0x2d6bb7){if(_0x2d6bb7){_0x1fd6be=_0x2d6bb7[_0x610d('0x3e')];if(!_0x5b57bf[_0x610d('0x39')]['hasOwnProperty'](_0x610d('0x40'))){_0x56b33a[_0x610d('0x41')]=qs[_0x610d('0x41')](_0x5b57bf[_0x610d('0x39')][_0x610d('0x41')]);_0x56b33a['offset']=qs[_0x610d('0x20')](_0x5b57bf['query'][_0x610d('0x20')]);}return _0x12c357[_0x610d('0x58')](_0x56b33a);}})[_0x610d('0x28')](function(_0x161a0b){if(_0x161a0b){return _0x161a0b?{'count':_0x1fd6be,'rows':_0x161a0b}:null;}})[_0x610d('0x28')](respondWithResult(_0x2ec71c,null))['catch'](handleError(_0x2ec71c,null));};exports[_0x610d('0x5a')]=function(_0x453741,_0x273104,_0x47e57b){return db[_0x610d('0x34')][_0x610d('0x59')]({'where':{'id':_0x453741[_0x610d('0x4c')]['id']}})[_0x610d('0x28')](handleEntityNotFound(_0x273104,null))['then'](function(_0x3cf1b0){if(_0x3cf1b0){return db[_0x610d('0x5b')][_0x610d('0x5c')](function(_0x4a6444){return db[_0x610d('0x34')]['destroy']({'where':{'IntervalId':_0x453741['params']['id']},'transaction':_0x4a6444})[_0x610d('0x28')](function(_0x5e36a7){var _0x58a6ba=_['map'](_0x453741[_0x610d('0x4f')],function(_0x3bc57a){delete _0x3bc57a['id'];_0x3bc57a[_0x610d('0x57')]=_0x453741[_0x610d('0x4c')]['id'];return _0x3bc57a;});return db['Interval'][_0x610d('0x5d')](_0x58a6ba,{'transaction':_0x4a6444});});})[_0x610d('0x28')](function(){return db['Interval'][_0x610d('0x5e')]({'where':{'IntervalId':_0x453741['params']['id']}});});}})[_0x610d('0x28')](respondWithResult(_0x273104,null))[_0x610d('0x56')](handleError(_0x273104,null));};
\ No newline at end of file
index 4f81c98..889dfbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a80=['./interval.attributes','../../components/extensions/rewrite','exports','Interval','tools_intervals','rewrite','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x362382,_0x3aad6f){var _0x33c3dc=function(_0x22447d){while(--_0x22447d){_0x362382['push'](_0x362382['shift']());}};_0x33c3dc(++_0x3aad6f);}(_0x6a80,0x1e7));var _0x06a8=function(_0x504fa3,_0x56e4ee){_0x504fa3=_0x504fa3-0x0;var _0x8323e4=_0x6a80[_0x504fa3];return _0x8323e4;};'use strict';var _=require(_0x06a8('0x0'));var util=require(_0x06a8('0x1'));var logger=require('../../config/logger')(_0x06a8('0x2'));var moment=require(_0x06a8('0x3'));var BPromise=require(_0x06a8('0x4'));var rp=require(_0x06a8('0x5'));var fs=require('fs');var path=require(_0x06a8('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x06a8('0x7'));var extensions=require(_0x06a8('0x8'));module[_0x06a8('0x9')]=function(_0x1f63e6,_0x518e52){return _0x1f63e6['define'](_0x06a8('0xa'),attributes,{'tableName':_0x06a8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x469d13,_0x57ad19){extensions[_0x06a8('0xc')](_0x1f63e6,_0x469d13);},'afterBulkCreate':function(_0x4abf65,_0x298436,_0x5e5851){_0x5e5851();extensions[_0x06a8('0xc')](_0x1f63e6,_0x4abf65[0x0]);},'afterUpdate':function(_0x5510e7,_0x3e0b26){extensions[_0x06a8('0xc')](_0x1f63e6,_0x5510e7);},'afterDestroy':function(_0x1324e1,_0x24b833){extensions['rewrite'](_0x1f63e6,_0x1324e1);}}});};
\ No newline at end of file
+var _0xaeb6=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./interval.attributes','../../components/extensions/rewrite','exports','Interval','rewrite','lodash','util','../../config/logger'];(function(_0x2aefcc,_0x4532a5){var _0x17e2c1=function(_0x128b05){while(--_0x128b05){_0x2aefcc['push'](_0x2aefcc['shift']());}};_0x17e2c1(++_0x4532a5);}(_0xaeb6,0x115));var _0x6aeb=function(_0x56ffd3,_0x64d8dc){_0x56ffd3=_0x56ffd3-0x0;var _0x27ea6=_0xaeb6[_0x56ffd3];return _0x27ea6;};'use strict';var _=require(_0x6aeb('0x0'));var util=require(_0x6aeb('0x1'));var logger=require(_0x6aeb('0x2'))('api');var moment=require(_0x6aeb('0x3'));var BPromise=require(_0x6aeb('0x4'));var rp=require(_0x6aeb('0x5'));var fs=require('fs');var path=require(_0x6aeb('0x6'));var rimraf=require(_0x6aeb('0x7'));var config=require(_0x6aeb('0x8'));var attributes=require(_0x6aeb('0x9'));var extensions=require(_0x6aeb('0xa'));module[_0x6aeb('0xb')]=function(_0x36df8f,_0x29f401){return _0x36df8f['define'](_0x6aeb('0xc'),attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x213d42,_0x499c8b){extensions[_0x6aeb('0xd')](_0x36df8f,_0x213d42);},'afterBulkCreate':function(_0x28fdd5,_0x328026,_0x529417){_0x529417();extensions[_0x6aeb('0xd')](_0x36df8f,_0x28fdd5[0x0]);},'afterUpdate':function(_0x21dded,_0x197e11){extensions[_0x6aeb('0xd')](_0x36df8f,_0x21dded);},'afterDestroy':function(_0xeac232,_0x96236b){extensions[_0x6aeb('0xd')](_0x36df8f,_0xeac232);}}});};
\ No newline at end of file
index f53fb0a..9c7ce03 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(_0x3dc68d,_0x1c1951){var _0xdf7f94=function(_0x339428){while(--_0x339428){_0x3dc68d['push'](_0x3dc68d['shift']());}};_0xdf7f94(++_0x1c1951);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'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(_0x40be86,_0x68fe5d){var _0xda3c3b=function(_0x39deab){while(--_0x39deab){_0x40be86['push'](_0x40be86['shift']());}};_0xda3c3b(++_0x68fe5d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'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 de94856..13a015a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x2f9467,_0x40576f){var _0x39894c=function(_0x13e344){while(--_0x13e344){_0x2f9467['push'](_0x2f9467['shift']());}};_0x39894c(++_0x40576f);}(_0x5f66,0x1a0));var _0x65f6=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x5f66[_0x502c7d];return _0x30b7ed;};'use strict';var express=require('express');var router=express[_0x65f6('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x65f6('0x1'));router[_0x65f6('0x2')]('/',auth[_0x65f6('0x3')](),controller[_0x65f6('0x4')]);module[_0x65f6('0x5')]=router;
\ No newline at end of file
+var _0x0b0e=['exports','express','../../components/auth/service','post','isAuthenticated','send'];(function(_0x29d915,_0x54a040){var _0x160f86=function(_0x237dfa){while(--_0x237dfa){_0x29d915['push'](_0x29d915['shift']());}};_0x160f86(++_0x54a040);}(_0x0b0e,0x187));var _0xe0b0=function(_0x1b8bda,_0x43ad31){_0x1b8bda=_0x1b8bda-0x0;var _0x1f7050=_0x0b0e[_0x1b8bda];return _0x1f7050;};'use strict';var express=require(_0xe0b0('0x0'));var router=express['Router']();var auth=require(_0xe0b0('0x1'));var controller=require('./jira.controller');router[_0xe0b0('0x2')]('/',auth[_0xe0b0('0x3')](),controller[_0xe0b0('0x4')]);module[_0xe0b0('0x5')]=router;
\ No newline at end of file
index 1467425..b0ae411 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcba0=['/rest/api/2/issue','POST','application/json','Basic\x20','toString','base64','request','setEncoding','data','end','status','statusCode','json','parse','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','body','headers','remoteAddress','socket','connection','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','MOTGUI','summary','\x20from\x20','issuetype','fields','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com'];(function(_0xbb6683,_0xf3bb){var _0x3ca15a=function(_0x2da09){while(--_0x2da09){_0xbb6683['push'](_0xbb6683['shift']());}};_0x3ca15a(++_0xf3bb);}(_0xcba0,0x188));var _0x0cba=function(_0x2320bd,_0x5cc478){_0x2320bd=_0x2320bd-0x0;var _0x4c2f77=_0xcba0[_0x2320bd];return _0x4c2f77;};'use strict';var BPromise=require(_0x0cba('0x0'));var https=require(_0x0cba('0x1'));var logger=require(_0x0cba('0x2'))(_0x0cba('0x3'));var USERNAME=_0x0cba('0x4');var PASSWORD=_0x0cba('0x5');function openIssue(_0x2ec77a,_0x2c6380){var _0x3e1d5f={'fields':{'project':{'key':_0x2ec77a['key']||_0x0cba('0x6')},'summary':(_0x2ec77a[_0x0cba('0x7')]||'Report')+_0x0cba('0x8')+_0x2ec77a['ip'],'description':_0x2ec77a['description']||JSON['stringify'](_0x2ec77a),'issuetype':{'name':_0x2ec77a[_0x0cba('0x9')]||'Bug'}}};_0x3e1d5f[_0x0cba('0xa')]['customfield_11500']=_0x2ec77a[_0x0cba('0xb')];_0x3e1d5f[_0x0cba('0xa')][_0x0cba('0xc')]=_0x2ec77a[_0x0cba('0xd')];_0x3e1d5f[_0x0cba('0xa')][_0x0cba('0xe')]=_0x2ec77a[_0x0cba('0xf')];_0x3e1d5f[_0x0cba('0xa')][_0x0cba('0x10')]=_0x2ec77a[_0x0cba('0x11')];_0x3e1d5f[_0x0cba('0xa')][_0x0cba('0x12')]=_0x2ec77a[_0x0cba('0x13')];_0x3e1d5f[_0x0cba('0xa')][_0x0cba('0x14')]=_0x2ec77a['ip'];var _0x222dbf={'host':_0x0cba('0x15'),'port':0x1bb,'path':_0x0cba('0x16'),'method':_0x0cba('0x17'),'timeout':0x4e20,'headers':{'Content-Type':_0x0cba('0x18'),'Authorization':_0x0cba('0x19')+new Buffer(USERNAME+':'+PASSWORD)[_0x0cba('0x1a')](_0x0cba('0x1b'))}};var _0x4e5312=JSON['stringify'](_0x3e1d5f);var _0x279e38=https[_0x0cba('0x1c')](_0x222dbf,function(_0x43fd92){_0x43fd92[_0x0cba('0x1d')]('utf8');var _0x43c952='';_0x43fd92['on'](_0x0cba('0x1e'),function(_0x56f836){_0x43c952+=_0x56f836;});_0x43fd92['on'](_0x0cba('0x1f'),function(){if(_0x2c6380){return _0x2c6380[_0x0cba('0x20')](_0x43fd92[_0x0cba('0x21')])[_0x0cba('0x22')](JSON[_0x0cba('0x23')](_0x43c952));}});});_0x279e38['on']('error',function(_0x384841){if(_0x2c6380){return _0x2c6380[_0x0cba('0x20')](0x1f4)['json']({'errors':[{'message':_0x0cba('0x24'),'type':_0x0cba('0x25')}]});}});_0x279e38[_0x0cba('0x26')](_0x4e5312);_0x279e38[_0x0cba('0x1f')]();}exports[_0x0cba('0x27')]=openIssue;exports[_0x0cba('0x28')]=function(_0xa4f69f,_0x3093ef){_0xa4f69f[_0x0cba('0x29')]['ip']=_0xa4f69f[_0x0cba('0x2a')]['x-forwarded-for']||_0xa4f69f['connection'][_0x0cba('0x2b')]||_0xa4f69f[_0x0cba('0x2c')][_0x0cba('0x2b')]||_0xa4f69f[_0x0cba('0x2d')][_0x0cba('0x2c')][_0x0cba('0x2b')];return openIssue(_0xa4f69f[_0x0cba('0x29')],_0x3093ef);};
\ No newline at end of file
+var _0x9e63=['toString','base64','request','setEncoding','utf8','data','status','json','parse','error','write','openIssue','body','headers','x-forwarded-for','connection','remoteAddress','socket','3eAmWpBVP0','MOTGUI','summary','\x20from\x20','stringify','issuetype','Bug','fields','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','name','reason','customfield_10102','/rest/api/2/issue','POST','application/json','Basic\x20'];(function(_0x21ce89,_0xd3df2d){var _0x68c7a=function(_0x4b420b){while(--_0x4b420b){_0x21ce89['push'](_0x21ce89['shift']());}};_0x68c7a(++_0xd3df2d);}(_0x9e63,0xfc));var _0x39e6=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x9e63[_0x5c351c];return _0x26f3b3;};'use strict';var BPromise=require('bluebird');var https=require('https');var logger=require('../../config/logger')('api');var USERNAME='support';var PASSWORD=_0x39e6('0x0');function openIssue(_0x2d1724,_0x540f29){var _0x541fa5={'fields':{'project':{'key':_0x2d1724['key']||_0x39e6('0x1')},'summary':(_0x2d1724[_0x39e6('0x2')]||'Report')+_0x39e6('0x3')+_0x2d1724['ip'],'description':_0x2d1724['description']||JSON[_0x39e6('0x4')](_0x2d1724),'issuetype':{'name':_0x2d1724[_0x39e6('0x5')]||_0x39e6('0x6')}}};_0x541fa5[_0x39e6('0x7')]['customfield_11500']=_0x2d1724[_0x39e6('0x8')];_0x541fa5[_0x39e6('0x7')][_0x39e6('0x9')]=_0x2d1724[_0x39e6('0xa')];_0x541fa5[_0x39e6('0x7')][_0x39e6('0xb')]=_0x2d1724[_0x39e6('0xc')];_0x541fa5[_0x39e6('0x7')][_0x39e6('0xd')]=_0x2d1724[_0x39e6('0xe')];_0x541fa5[_0x39e6('0x7')]['customfield_11504']=_0x2d1724[_0x39e6('0xf')];_0x541fa5[_0x39e6('0x7')][_0x39e6('0x10')]=_0x2d1724['ip'];var _0x3b60d2={'host':'track.xcallymotion.com','port':0x1bb,'path':_0x39e6('0x11'),'method':_0x39e6('0x12'),'timeout':0x4e20,'headers':{'Content-Type':_0x39e6('0x13'),'Authorization':_0x39e6('0x14')+new Buffer(USERNAME+':'+PASSWORD)[_0x39e6('0x15')](_0x39e6('0x16'))}};var _0x3fdd36=JSON[_0x39e6('0x4')](_0x541fa5);var _0x143000=https[_0x39e6('0x17')](_0x3b60d2,function(_0x320649){_0x320649[_0x39e6('0x18')](_0x39e6('0x19'));var _0x5a9f0f='';_0x320649['on'](_0x39e6('0x1a'),function(_0x554414){_0x5a9f0f+=_0x554414;});_0x320649['on']('end',function(){if(_0x540f29){return _0x540f29[_0x39e6('0x1b')](_0x320649['statusCode'])[_0x39e6('0x1c')](JSON[_0x39e6('0x1d')](_0x5a9f0f));}});});_0x143000['on'](_0x39e6('0x1e'),function(_0x174812){if(_0x540f29){return _0x540f29[_0x39e6('0x1b')](0x1f4)['json']({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':'api.jira'}]});}});_0x143000[_0x39e6('0x1f')](_0x3fdd36);_0x143000['end']();}exports[_0x39e6('0x20')]=openIssue;exports['send']=function(_0x11fdf8,_0x316009){_0x11fdf8[_0x39e6('0x21')]['ip']=_0x11fdf8[_0x39e6('0x22')][_0x39e6('0x23')]||_0x11fdf8[_0x39e6('0x24')][_0x39e6('0x25')]||_0x11fdf8[_0x39e6('0x26')][_0x39e6('0x25')]||_0x11fdf8['connection']['socket'][_0x39e6('0x25')];return openIssue(_0x11fdf8['body'],_0x316009);};
\ No newline at end of file
index 21cb3bc..9824848 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','index','/describe','isAuthenticated','describe','get','/:id','show','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service'];(function(_0x4e23df,_0x1a3b01){var _0x326e41=function(_0x4b457a){while(--_0x4b457a){_0x4e23df['push'](_0x4e23df['shift']());}};_0x326e41(++_0x1a3b01);}(_0xb43b,0x1b2));var _0xbb43=function(_0x308750,_0x4714db){_0x308750=_0x308750-0x0;var _0x5674fa=_0xb43b[_0x308750];return _0x5674fa;};'use strict';var multer=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var path=require('path');var timeout=require(_0xbb43('0x2'));var express=require(_0xbb43('0x3'));var router=express[_0xbb43('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xbb43('0x5'));var interaction=require(_0xbb43('0x6'));var config=require(_0xbb43('0x7'));var controller=require(_0xbb43('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xbb43('0x9')]);router['get'](_0xbb43('0xa'),auth[_0xbb43('0xb')](),controller[_0xbb43('0xc')]);router[_0xbb43('0xd')](_0xbb43('0xe'),auth['isAuthenticated'](),controller[_0xbb43('0xf')]);router[_0xbb43('0x10')]('/',auth['isAuthenticated'](),controller[_0xbb43('0x11')]);router[_0xbb43('0x12')](_0xbb43('0xe'),auth[_0xbb43('0xb')](),controller[_0xbb43('0x13')]);router[_0xbb43('0x14')]('/:id',auth[_0xbb43('0xb')](),controller[_0xbb43('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x9bde=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','put','delete','destroy','util','connect-timeout','Router'];(function(_0xa3e19d,_0x298316){var _0x27d955=function(_0x1606e8){while(--_0x1606e8){_0xa3e19d['push'](_0xa3e19d['shift']());}};_0x27d955(++_0x298316);}(_0x9bde,0xe1));var _0xe9bd=function(_0x2a67ae,_0x1b861b){_0x2a67ae=_0x2a67ae-0x0;var _0x8bafe4=_0x9bde[_0x2a67ae];return _0x8bafe4;};'use strict';var multer=require('multer');var util=require(_0xe9bd('0x0'));var path=require('path');var timeout=require(_0xe9bd('0x1'));var express=require('express');var router=express[_0xe9bd('0x2')]();var fs_extra=require(_0xe9bd('0x3'));var auth=require(_0xe9bd('0x4'));var interaction=require(_0xe9bd('0x5'));var config=require(_0xe9bd('0x6'));var controller=require(_0xe9bd('0x7'));router[_0xe9bd('0x8')]('/',auth['isAuthenticated'](),controller[_0xe9bd('0x9')]);router[_0xe9bd('0x8')](_0xe9bd('0xa'),auth[_0xe9bd('0xb')](),controller[_0xe9bd('0xc')]);router[_0xe9bd('0x8')](_0xe9bd('0xd'),auth[_0xe9bd('0xb')](),controller[_0xe9bd('0xe')]);router[_0xe9bd('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xe9bd('0x10')](_0xe9bd('0xd'),auth[_0xe9bd('0xb')](),controller['update']);router[_0xe9bd('0x11')](_0xe9bd('0xd'),auth[_0xe9bd('0xb')](),controller[_0xe9bd('0x12')]);module['exports']=router;
\ No newline at end of file
index 7c672a5..52bf83a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7a54,0x106));var _0x47a5=function(_0x24c5e3,_0x129016){_0x24c5e3=_0x24c5e3-0x0;var _0x43c84b=_0x7a54[_0x24c5e3];return _0x43c84b;};'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(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x7a54,0x106));var _0x47a5=function(_0x22c0b1,_0x36b68c){_0x22c0b1=_0x22c0b1-0x0;var _0x5aa47e=_0x7a54[_0x22c0b1];return _0x5aa47e;};'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 7172080..bd2ba72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x379e=['key','model','query','keys','intersection','attributes','fields','length','nolimit','sort','filters','pick','filter','merge','where','VIRTUAL','options','includeAll','include','JscriptyAnswerReport','rows','show','find','create','body','update','catch','params','describe','eml-format','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','set','Content-Range','reject','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x379e,0x104));var _0xe379=function(_0x19d3d7,_0x3be694){_0x19d3d7=_0x19d3d7-0x0;var _0x111a85=_0x379e[_0x19d3d7];return _0x111a85;};'use strict';var emlformat=require(_0xe379('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe379('0x1'));var moment=require(_0xe379('0x2'));var BPromise=require(_0xe379('0x3'));var Mustache=require(_0xe379('0x4'));var util=require(_0xe379('0x5'));var path=require(_0xe379('0x6'));var sox=require(_0xe379('0x7'));var csv=require('to-csv');var ejs=require(_0xe379('0x8'));var fs=require('fs');var fs_extra=require(_0xe379('0x9'));var _=require(_0xe379('0xa'));var squel=require(_0xe379('0xb'));var crypto=require(_0xe379('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe379('0xd'));var toCsv=require(_0xe379('0xe'));var querystring=require(_0xe379('0xf'));var Papa=require(_0xe379('0x10'));var Redis=require(_0xe379('0x11'));var authService=require(_0xe379('0x12'));var qs=require(_0xe379('0x13'));var as=require(_0xe379('0x14'));var hardwareService=require(_0xe379('0x15'));var logger=require('../../config/logger')(_0xe379('0x16'));var utils=require(_0xe379('0x17'));var config=require(_0xe379('0x18'));var licenseUtil=require(_0xe379('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c6562,_0x2642a8){_0x2642a8=_0x2642a8||0xcc;return function(_0x45cf1a){if(_0x45cf1a){return _0x4c6562[_0xe379('0x1a')](_0x2642a8);}return _0x4c6562[_0xe379('0x1b')](_0x2642a8)[_0xe379('0x1c')]();};}function respondWithResult(_0x1ee8e0,_0x2a5b60){_0x2a5b60=_0x2a5b60||0xc8;return function(_0x70d82){if(_0x70d82){return _0x1ee8e0['status'](_0x2a5b60)[_0xe379('0x1d')](_0x70d82);}};}function respondWithFilteredResult(_0xab59c7,_0x20eaaf){return function(_0x105d7f){if(_0x105d7f){var _0x3d9351=typeof _0x20eaaf[_0xe379('0x1e')]==='undefined'&&typeof _0x20eaaf[_0xe379('0x1f')]==='undefined';var _0x2c2bd9=_0x105d7f['count'];var _0x150d92=_0x3d9351?0x0:_0x20eaaf[_0xe379('0x1e')];var _0xe4f3d1=_0x3d9351?_0x105d7f[_0xe379('0x20')]:_0x20eaaf['offset']+_0x20eaaf[_0xe379('0x1f')];var _0x260b2e;if(_0xe4f3d1>=_0x2c2bd9){_0xe4f3d1=_0x2c2bd9;_0x260b2e=0xc8;}else{_0x260b2e=0xce;}_0xab59c7[_0xe379('0x1b')](_0x260b2e);return _0xab59c7[_0xe379('0x21')](_0xe379('0x22'),_0x150d92+'-'+_0xe4f3d1+'/'+_0x2c2bd9)['json'](_0x105d7f);}return null;};}function patchUpdates(_0x2c749e){return function(_0x3a8d17){try{jsonpatch['apply'](_0x3a8d17,_0x2c749e,!![]);}catch(_0x39ec4d){return BPromise[_0xe379('0x23')](_0x39ec4d);}return _0x3a8d17[_0xe379('0x24')]();};}function saveUpdates(_0x2e946f,_0x32f43e){return function(_0x10b3c3){if(_0x10b3c3){return _0x10b3c3['update'](_0x2e946f)[_0xe379('0x25')](function(_0x32e16e){return _0x32e16e;});}return null;};}function removeEntity(_0x21e31b,_0x48b543){return function(_0x38236b){if(_0x38236b){return _0x38236b[_0xe379('0x26')]()['then'](function(){_0x21e31b[_0xe379('0x1b')](0xcc)[_0xe379('0x1c')]();});}};}function handleEntityNotFound(_0x4da256,_0x544bf3){return function(_0x22f596){if(!_0x22f596){_0x4da256[_0xe379('0x1a')](0x194);}return _0x22f596;};}function handleError(_0x26ba82,_0x4aa041){_0x4aa041=_0x4aa041||0x1f4;return function(_0x17ba51){logger[_0xe379('0x27')](_0x17ba51[_0xe379('0x28')]);if(_0x17ba51[_0xe379('0x29')]){delete _0x17ba51['name'];}_0x26ba82[_0xe379('0x1b')](_0x4aa041)[_0xe379('0x2a')](_0x17ba51);};}exports[_0xe379('0x2b')]=function(_0x50b0aa,_0x33037d){var _0x120239={},_0x5d9ca1={},_0x24c85d={'count':0x0,'rows':[]};var _0x528a44=_[_0xe379('0x2c')](db['JscriptyAnswerReport'][_0xe379('0x2d')],function(_0x214a0c){return{'name':_0x214a0c[_0xe379('0x2e')],'type':_0x214a0c[_0xe379('0x2f')][_0xe379('0x30')]};});_0x5d9ca1[_0xe379('0x31')]=_[_0xe379('0x2c')](_0x528a44,'name');_0x5d9ca1[_0xe379('0x32')]=_[_0xe379('0x33')](_0x50b0aa[_0xe379('0x32')]);_0x5d9ca1['filters']=_[_0xe379('0x34')](_0x5d9ca1['model'],_0x5d9ca1['query']);_0x120239[_0xe379('0x35')]=_[_0xe379('0x34')](_0x5d9ca1[_0xe379('0x31')],qs[_0xe379('0x36')](_0x50b0aa['query'][_0xe379('0x36')]));_0x120239[_0xe379('0x35')]=_0x120239['attributes'][_0xe379('0x37')]?_0x120239[_0xe379('0x35')]:_0x5d9ca1[_0xe379('0x31')];if(!_0x50b0aa[_0xe379('0x32')]['hasOwnProperty'](_0xe379('0x38'))){_0x120239['limit']=qs[_0xe379('0x1f')](_0x50b0aa[_0xe379('0x32')][_0xe379('0x1f')]);_0x120239[_0xe379('0x1e')]=qs[_0xe379('0x1e')](_0x50b0aa['query'][_0xe379('0x1e')]);}_0x120239['order']=qs[_0xe379('0x39')](_0x50b0aa[_0xe379('0x32')][_0xe379('0x39')]);_0x120239['where']=qs[_0xe379('0x3a')](_[_0xe379('0x3b')](_0x50b0aa[_0xe379('0x32')],_0x5d9ca1[_0xe379('0x3a')]),_0x528a44);if(_0x50b0aa['query'][_0xe379('0x3c')]){_0x120239['where']=_[_0xe379('0x3d')](_0x120239[_0xe379('0x3e')],{'$or':_[_0xe379('0x2c')](_0x528a44,function(_0x12e67e){if(_0x12e67e[_0xe379('0x2f')]!==_0xe379('0x3f')){var _0x56ebb7={};_0x56ebb7[_0x12e67e[_0xe379('0x29')]]={'$like':'%'+_0x50b0aa['query'][_0xe379('0x3c')]+'%'};return _0x56ebb7;}})});}_0x120239=_[_0xe379('0x3d')]({},_0x120239,_0x50b0aa[_0xe379('0x40')]);var _0x2e3eef={'where':_0x120239[_0xe379('0x3e')]};return db['JscriptyAnswerReport'][_0xe379('0x20')](_0x2e3eef)[_0xe379('0x25')](function(_0x59ba54){_0x24c85d['count']=_0x59ba54;if(_0x50b0aa['query'][_0xe379('0x41')]){_0x120239[_0xe379('0x42')]=[{'all':!![]}];}return db[_0xe379('0x43')]['findAll'](_0x120239);})[_0xe379('0x25')](function(_0x3089df){_0x24c85d[_0xe379('0x44')]=_0x3089df;return _0x24c85d;})[_0xe379('0x25')](respondWithFilteredResult(_0x33037d,_0x120239))['catch'](handleError(_0x33037d,null));};exports[_0xe379('0x45')]=function(_0x36ce8e,_0x3c6f5d){var _0x32ecbe={'raw':!![],'where':{'id':_0x36ce8e['params']['id']}},_0x48f0cc={};_0x48f0cc[_0xe379('0x31')]=_[_0xe379('0x33')](db[_0xe379('0x43')][_0xe379('0x2d')]);_0x48f0cc[_0xe379('0x32')]=_[_0xe379('0x33')](_0x36ce8e['query']);_0x48f0cc[_0xe379('0x3a')]=_['intersection'](_0x48f0cc[_0xe379('0x31')],_0x48f0cc[_0xe379('0x32')]);_0x32ecbe[_0xe379('0x35')]=_[_0xe379('0x34')](_0x48f0cc[_0xe379('0x31')],qs[_0xe379('0x36')](_0x36ce8e[_0xe379('0x32')][_0xe379('0x36')]));_0x32ecbe[_0xe379('0x35')]=_0x32ecbe[_0xe379('0x35')][_0xe379('0x37')]?_0x32ecbe[_0xe379('0x35')]:_0x48f0cc[_0xe379('0x31')];if(_0x36ce8e[_0xe379('0x32')][_0xe379('0x41')]){_0x32ecbe[_0xe379('0x42')]=[{'all':!![]}];}_0x32ecbe=_[_0xe379('0x3d')]({},_0x32ecbe,_0x36ce8e[_0xe379('0x40')]);return db[_0xe379('0x43')][_0xe379('0x46')](_0x32ecbe)[_0xe379('0x25')](handleEntityNotFound(_0x3c6f5d,null))[_0xe379('0x25')](respondWithResult(_0x3c6f5d,null))['catch'](handleError(_0x3c6f5d,null));};exports[_0xe379('0x47')]=function(_0x266bfe,_0x42a378){return db[_0xe379('0x43')][_0xe379('0x47')](_0x266bfe[_0xe379('0x48')],{})['then'](respondWithResult(_0x42a378,0xc9))['catch'](handleError(_0x42a378,null));};exports[_0xe379('0x49')]=function(_0x5db39f,_0x55b27b){if(_0x5db39f[_0xe379('0x48')]['id']){delete _0x5db39f[_0xe379('0x48')]['id'];}return db[_0xe379('0x43')][_0xe379('0x46')]({'where':{'id':_0x5db39f['params']['id']}})[_0xe379('0x25')](handleEntityNotFound(_0x55b27b,null))[_0xe379('0x25')](saveUpdates(_0x5db39f['body'],null))[_0xe379('0x25')](respondWithResult(_0x55b27b,null))[_0xe379('0x4a')](handleError(_0x55b27b,null));};exports['destroy']=function(_0x4ac3eb,_0x3af1be){return db[_0xe379('0x43')]['find']({'where':{'id':_0x4ac3eb[_0xe379('0x4b')]['id']}})[_0xe379('0x25')](handleEntityNotFound(_0x3af1be,null))[_0xe379('0x25')](removeEntity(_0x3af1be,null))[_0xe379('0x4a')](handleError(_0x3af1be,null));};exports[_0xe379('0x4c')]=function(_0x4a9c86,_0x337775){return db['JscriptyAnswerReport']['describe']()[_0xe379('0x25')](respondWithResult(_0x337775,null))[_0xe379('0x4a')](handleError(_0x337775,null));};
\ No newline at end of file
+var _0xafdd=['pick','filter','merge','type','VIRTUAL','options','JscriptyAnswerReport','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','send','fieldName','model','map','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','sort','where'];(function(_0x404cde,_0x27b51c){var _0x139882=function(_0x1f31d1){while(--_0x1f31d1){_0x404cde['push'](_0x404cde['shift']());}};_0x139882(++_0x27b51c);}(_0xafdd,0x19a));var _0xdafd=function(_0x21ada1,_0x24c45d){_0x21ada1=_0x21ada1-0x0;var _0x354599=_0xafdd[_0x21ada1];return _0x354599;};'use strict';var emlformat=require(_0xdafd('0x0'));var rimraf=require(_0xdafd('0x1'));var zipdir=require(_0xdafd('0x2'));var jsonpatch=require(_0xdafd('0x3'));var rp=require(_0xdafd('0x4'));var moment=require(_0xdafd('0x5'));var BPromise=require(_0xdafd('0x6'));var Mustache=require(_0xdafd('0x7'));var util=require('util');var path=require(_0xdafd('0x8'));var sox=require(_0xdafd('0x9'));var csv=require(_0xdafd('0xa'));var ejs=require(_0xdafd('0xb'));var fs=require('fs');var fs_extra=require(_0xdafd('0xc'));var _=require(_0xdafd('0xd'));var squel=require(_0xdafd('0xe'));var crypto=require('crypto');var jsforce=require(_0xdafd('0xf'));var deskjs=require(_0xdafd('0x10'));var toCsv=require(_0xdafd('0xa'));var querystring=require('querystring');var Papa=require(_0xdafd('0x11'));var Redis=require(_0xdafd('0x12'));var authService=require(_0xdafd('0x13'));var qs=require(_0xdafd('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdafd('0x15'));var logger=require(_0xdafd('0x16'))(_0xdafd('0x17'));var utils=require(_0xdafd('0x18'));var config=require(_0xdafd('0x19'));var licenseUtil=require(_0xdafd('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x166176,_0x594f47){_0x594f47=_0x594f47||0xcc;return function(_0x553508){if(_0x553508){return _0x166176[_0xdafd('0x1b')](_0x594f47);}return _0x166176[_0xdafd('0x1c')](_0x594f47)['end']();};}function respondWithResult(_0x43a716,_0x490382){_0x490382=_0x490382||0xc8;return function(_0x4b09da){if(_0x4b09da){return _0x43a716[_0xdafd('0x1c')](_0x490382)[_0xdafd('0x1d')](_0x4b09da);}};}function respondWithFilteredResult(_0x583b1d,_0x267bfc){return function(_0x186379){if(_0x186379){var _0x496515=typeof _0x267bfc[_0xdafd('0x1e')]===_0xdafd('0x1f')&&typeof _0x267bfc[_0xdafd('0x20')]==='undefined';var _0xb382ca=_0x186379[_0xdafd('0x21')];var _0x4fc3a4=_0x496515?0x0:_0x267bfc['offset'];var _0x2569b2=_0x496515?_0x186379['count']:_0x267bfc[_0xdafd('0x1e')]+_0x267bfc[_0xdafd('0x20')];var _0x1e64d3;if(_0x2569b2>=_0xb382ca){_0x2569b2=_0xb382ca;_0x1e64d3=0xc8;}else{_0x1e64d3=0xce;}_0x583b1d[_0xdafd('0x1c')](_0x1e64d3);return _0x583b1d[_0xdafd('0x22')](_0xdafd('0x23'),_0x4fc3a4+'-'+_0x2569b2+'/'+_0xb382ca)[_0xdafd('0x1d')](_0x186379);}return null;};}function patchUpdates(_0x42e0f9){return function(_0x8480a8){try{jsonpatch[_0xdafd('0x24')](_0x8480a8,_0x42e0f9,!![]);}catch(_0xee767e){return BPromise[_0xdafd('0x25')](_0xee767e);}return _0x8480a8[_0xdafd('0x26')]();};}function saveUpdates(_0xf4a521,_0x491d96){return function(_0x230495){if(_0x230495){return _0x230495['update'](_0xf4a521)[_0xdafd('0x27')](function(_0x5e96cc){return _0x5e96cc;});}return null;};}function removeEntity(_0x439bbf,_0x35ef78){return function(_0x7f10f6){if(_0x7f10f6){return _0x7f10f6[_0xdafd('0x28')]()[_0xdafd('0x27')](function(){_0x439bbf[_0xdafd('0x1c')](0xcc)[_0xdafd('0x29')]();});}};}function handleEntityNotFound(_0x30cba9,_0x3846dd){return function(_0x5cd11d){if(!_0x5cd11d){_0x30cba9[_0xdafd('0x1b')](0x194);}return _0x5cd11d;};}function handleError(_0x2ab575,_0x18554c){_0x18554c=_0x18554c||0x1f4;return function(_0x1feb5b){logger[_0xdafd('0x2a')](_0x1feb5b[_0xdafd('0x2b')]);if(_0x1feb5b[_0xdafd('0x2c')]){delete _0x1feb5b[_0xdafd('0x2c')];}_0x2ab575[_0xdafd('0x1c')](_0x18554c)[_0xdafd('0x2d')](_0x1feb5b);};}exports['index']=function(_0x243182,_0x14626b){var _0x13ab81={},_0x249743={},_0x21edb6={'count':0x0,'rows':[]};var _0x324f0f=_['map'](db['JscriptyAnswerReport']['rawAttributes'],function(_0xcca4f){return{'name':_0xcca4f[_0xdafd('0x2e')],'type':_0xcca4f['type']['key']};});_0x249743[_0xdafd('0x2f')]=_[_0xdafd('0x30')](_0x324f0f,_0xdafd('0x2c'));_0x249743[_0xdafd('0x31')]=_[_0xdafd('0x32')](_0x243182[_0xdafd('0x31')]);_0x249743[_0xdafd('0x33')]=_['intersection'](_0x249743[_0xdafd('0x2f')],_0x249743[_0xdafd('0x31')]);_0x13ab81[_0xdafd('0x34')]=_['intersection'](_0x249743[_0xdafd('0x2f')],qs[_0xdafd('0x35')](_0x243182['query'][_0xdafd('0x35')]));_0x13ab81[_0xdafd('0x34')]=_0x13ab81[_0xdafd('0x34')]['length']?_0x13ab81[_0xdafd('0x34')]:_0x249743[_0xdafd('0x2f')];if(!_0x243182[_0xdafd('0x31')][_0xdafd('0x36')](_0xdafd('0x37'))){_0x13ab81[_0xdafd('0x20')]=qs[_0xdafd('0x20')](_0x243182['query'][_0xdafd('0x20')]);_0x13ab81[_0xdafd('0x1e')]=qs[_0xdafd('0x1e')](_0x243182[_0xdafd('0x31')][_0xdafd('0x1e')]);}_0x13ab81['order']=qs[_0xdafd('0x38')](_0x243182[_0xdafd('0x31')]['sort']);_0x13ab81[_0xdafd('0x39')]=qs[_0xdafd('0x33')](_[_0xdafd('0x3a')](_0x243182[_0xdafd('0x31')],_0x249743[_0xdafd('0x33')]),_0x324f0f);if(_0x243182[_0xdafd('0x31')][_0xdafd('0x3b')]){_0x13ab81[_0xdafd('0x39')]=_[_0xdafd('0x3c')](_0x13ab81[_0xdafd('0x39')],{'$or':_[_0xdafd('0x30')](_0x324f0f,function(_0x245163){if(_0x245163[_0xdafd('0x3d')]!==_0xdafd('0x3e')){var _0xb1e264={};_0xb1e264[_0x245163[_0xdafd('0x2c')]]={'$like':'%'+_0x243182[_0xdafd('0x31')][_0xdafd('0x3b')]+'%'};return _0xb1e264;}})});}_0x13ab81=_[_0xdafd('0x3c')]({},_0x13ab81,_0x243182[_0xdafd('0x3f')]);var _0x3f25c2={'where':_0x13ab81[_0xdafd('0x39')]};return db[_0xdafd('0x40')][_0xdafd('0x21')](_0x3f25c2)[_0xdafd('0x27')](function(_0x21d43d){_0x21edb6['count']=_0x21d43d;if(_0x243182['query'][_0xdafd('0x41')]){_0x13ab81['include']=[{'all':!![]}];}return db[_0xdafd('0x40')][_0xdafd('0x42')](_0x13ab81);})['then'](function(_0x4b463c){_0x21edb6[_0xdafd('0x43')]=_0x4b463c;return _0x21edb6;})[_0xdafd('0x27')](respondWithFilteredResult(_0x14626b,_0x13ab81))[_0xdafd('0x44')](handleError(_0x14626b,null));};exports[_0xdafd('0x45')]=function(_0xbc5159,_0x184a59){var _0x3a3a14={'raw':!![],'where':{'id':_0xbc5159[_0xdafd('0x46')]['id']}},_0x2417f8={};_0x2417f8['model']=_['keys'](db[_0xdafd('0x40')][_0xdafd('0x47')]);_0x2417f8[_0xdafd('0x31')]=_[_0xdafd('0x32')](_0xbc5159[_0xdafd('0x31')]);_0x2417f8[_0xdafd('0x33')]=_[_0xdafd('0x48')](_0x2417f8[_0xdafd('0x2f')],_0x2417f8[_0xdafd('0x31')]);_0x3a3a14[_0xdafd('0x34')]=_[_0xdafd('0x48')](_0x2417f8[_0xdafd('0x2f')],qs[_0xdafd('0x35')](_0xbc5159['query'][_0xdafd('0x35')]));_0x3a3a14['attributes']=_0x3a3a14[_0xdafd('0x34')]['length']?_0x3a3a14[_0xdafd('0x34')]:_0x2417f8[_0xdafd('0x2f')];if(_0xbc5159[_0xdafd('0x31')][_0xdafd('0x41')]){_0x3a3a14[_0xdafd('0x49')]=[{'all':!![]}];}_0x3a3a14=_[_0xdafd('0x3c')]({},_0x3a3a14,_0xbc5159['options']);return db[_0xdafd('0x40')][_0xdafd('0x4a')](_0x3a3a14)[_0xdafd('0x27')](handleEntityNotFound(_0x184a59,null))[_0xdafd('0x27')](respondWithResult(_0x184a59,null))[_0xdafd('0x44')](handleError(_0x184a59,null));};exports['create']=function(_0x48cc85,_0x189d61){return db[_0xdafd('0x40')][_0xdafd('0x4b')](_0x48cc85[_0xdafd('0x4c')],{})[_0xdafd('0x27')](respondWithResult(_0x189d61,0xc9))[_0xdafd('0x44')](handleError(_0x189d61,null));};exports[_0xdafd('0x4d')]=function(_0x2f5e4c,_0x2ae4cd){if(_0x2f5e4c['body']['id']){delete _0x2f5e4c[_0xdafd('0x4c')]['id'];}return db[_0xdafd('0x40')][_0xdafd('0x4a')]({'where':{'id':_0x2f5e4c[_0xdafd('0x46')]['id']}})['then'](handleEntityNotFound(_0x2ae4cd,null))[_0xdafd('0x27')](saveUpdates(_0x2f5e4c[_0xdafd('0x4c')],null))[_0xdafd('0x27')](respondWithResult(_0x2ae4cd,null))[_0xdafd('0x44')](handleError(_0x2ae4cd,null));};exports[_0xdafd('0x28')]=function(_0x4b6fbb,_0x5af1a8){return db[_0xdafd('0x40')][_0xdafd('0x4a')]({'where':{'id':_0x4b6fbb['params']['id']}})['then'](handleEntityNotFound(_0x5af1a8,null))[_0xdafd('0x27')](removeEntity(_0x5af1a8,null))[_0xdafd('0x44')](handleError(_0x5af1a8,null));};exports['describe']=function(_0x2dde06,_0x5dc9a0){return db[_0xdafd('0x40')]['describe']()['then'](respondWithResult(_0x5dc9a0,null))[_0xdafd('0x44')](handleError(_0x5dc9a0,null));};
\ No newline at end of file
index 7d86442..4d9f711 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08cc=['bluebird','request-promise','path','../../config/environment','exports','define','JscriptyAnswerReport','lodash','util','../../config/logger','api','moment'];(function(_0x3f6c4b,_0x2f89b5){var _0x4da1ab=function(_0x44a7eb){while(--_0x44a7eb){_0x3f6c4b['push'](_0x3f6c4b['shift']());}};_0x4da1ab(++_0x2f89b5);}(_0x08cc,0x13f));var _0xc08c=function(_0x904e3c,_0xadb3dc){_0x904e3c=_0x904e3c-0x0;var _0xa2cb50=_0x08cc[_0x904e3c];return _0xa2cb50;};'use strict';var _=require(_0xc08c('0x0'));var util=require(_0xc08c('0x1'));var logger=require(_0xc08c('0x2'))(_0xc08c('0x3'));var moment=require(_0xc08c('0x4'));var BPromise=require(_0xc08c('0x5'));var rp=require(_0xc08c('0x6'));var fs=require('fs');var path=require(_0xc08c('0x7'));var rimraf=require('rimraf');var config=require(_0xc08c('0x8'));var attributes=require('./jscriptyAnswerReport.attributes');module[_0xc08c('0x9')]=function(_0x482616,_0x1c1980){return _0x482616[_0xc08c('0xa')](_0xc08c('0xb'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcdf0=['bluebird','request-promise','path','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','util','../../config/logger','moment'];(function(_0x315928,_0x1c7022){var _0x2aee52=function(_0x3c57df){while(--_0x3c57df){_0x315928['push'](_0x315928['shift']());}};_0x2aee52(++_0x1c7022);}(_0xcdf0,0x1a0));var _0x0cdf=function(_0x51ea8d,_0x5f87d4){_0x51ea8d=_0x51ea8d-0x0;var _0x319795=_0xcdf0[_0x51ea8d];return _0x319795;};'use strict';var _=require(_0x0cdf('0x0'));var util=require(_0x0cdf('0x1'));var logger=require(_0x0cdf('0x2'))('api');var moment=require(_0x0cdf('0x3'));var BPromise=require(_0x0cdf('0x4'));var rp=require(_0x0cdf('0x5'));var fs=require('fs');var path=require(_0x0cdf('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x0cdf('0x7'));module[_0x0cdf('0x8')]=function(_0x4505c0,_0x2d6c6c){return _0x4505c0[_0x0cdf('0x9')](_0x0cdf('0xa'),attributes,{'tableName':_0x0cdf('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index afa2bab..2dd6c0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e9c=['JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x241ccf,_0x2f51c4){var _0x2b7277=function(_0xafe1e7){while(--_0xafe1e7){_0x241ccf['push'](_0x241ccf['shift']());}};_0x2b7277(++_0x2f51c4);}(_0x3e9c,0x172));var _0xc3e9=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x3e9c[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0xc3e9('0x0'));var util=require(_0xc3e9('0x1'));var moment=require('moment');var BPromise=require(_0xc3e9('0x2'));var rs=require(_0xc3e9('0x3'));var fs=require('fs');var Redis=require(_0xc3e9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc3e9('0x5'));var logger=require(_0xc3e9('0x6'))(_0xc3e9('0x7'));var config=require('../../config/environment');var jayson=require(_0xc3e9('0x8'));var client=jayson[_0xc3e9('0x9')][_0xc3e9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x316818,_0x147726,_0x4c4a0e){return new BPromise(function(_0x4f7675,_0x4361a4){return client[_0xc3e9('0xb')](_0x316818,_0x4c4a0e)[_0xc3e9('0xc')](function(_0x54c4e9){logger[_0xc3e9('0xd')](_0xc3e9('0xe'),_0x147726,_0xc3e9('0xf'));logger[_0xc3e9('0x10')](_0xc3e9('0x11'),_0x147726,_0xc3e9('0xf'),JSON[_0xc3e9('0x12')](_0x54c4e9));if(_0x54c4e9[_0xc3e9('0x13')]){if(_0x54c4e9[_0xc3e9('0x13')][_0xc3e9('0x14')]===0x1f4){logger[_0xc3e9('0x13')](_0xc3e9('0xe'),_0x147726,_0x54c4e9['error']['message']);return _0x4361a4(_0x54c4e9['error'][_0xc3e9('0x15')]);}logger[_0xc3e9('0x13')](_0xc3e9('0xe'),_0x147726,_0x54c4e9[_0xc3e9('0x13')]['message']);return _0x4f7675(_0x54c4e9[_0xc3e9('0x13')][_0xc3e9('0x15')]);}else{logger['info'](_0xc3e9('0xe'),_0x147726,_0xc3e9('0xf'));_0x4f7675(_0x54c4e9[_0xc3e9('0x16')][_0xc3e9('0x15')]);}})[_0xc3e9('0x17')](function(_0x3312a5){logger['error'](_0xc3e9('0xe'),_0x147726,_0x3312a5);_0x4361a4(_0x3312a5);});});}
\ No newline at end of file
+var _0x05c6=['message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0xbf5344,_0x56c8ce){var _0x2547c5=function(_0x3f0ef2){while(--_0x3f0ef2){_0xbf5344['push'](_0xbf5344['shift']());}};_0x2547c5(++_0x56c8ce);}(_0x05c6,0x109));var _0x605c=function(_0x2e48b3,_0x15b6eb){_0x2e48b3=_0x2e48b3-0x0;var _0x3aee21=_0x05c6[_0x2e48b3];return _0x3aee21;};'use strict';var _=require(_0x605c('0x0'));var util=require(_0x605c('0x1'));var moment=require(_0x605c('0x2'));var BPromise=require(_0x605c('0x3'));var rs=require(_0x605c('0x4'));var fs=require('fs');var Redis=require(_0x605c('0x5'));var db=require(_0x605c('0x6'))['db'];var utils=require(_0x605c('0x7'));var logger=require(_0x605c('0x8'))('rpc');var config=require(_0x605c('0x9'));var jayson=require(_0x605c('0xa'));var client=jayson[_0x605c('0xb')][_0x605c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x253c82,_0x1f0b5f,_0xe1beb3){return new BPromise(function(_0x5958c4,_0x5ddc4a){return client[_0x605c('0xd')](_0x253c82,_0xe1beb3)[_0x605c('0xe')](function(_0x5591c4){logger[_0x605c('0xf')](_0x605c('0x10'),_0x1f0b5f,'request\x20sent');logger[_0x605c('0x11')](_0x605c('0x12'),_0x1f0b5f,_0x605c('0x13'),JSON[_0x605c('0x14')](_0x5591c4));if(_0x5591c4[_0x605c('0x15')]){if(_0x5591c4[_0x605c('0x15')][_0x605c('0x16')]===0x1f4){logger[_0x605c('0x15')](_0x605c('0x10'),_0x1f0b5f,_0x5591c4[_0x605c('0x15')]['message']);return _0x5ddc4a(_0x5591c4[_0x605c('0x15')][_0x605c('0x17')]);}logger[_0x605c('0x15')](_0x605c('0x10'),_0x1f0b5f,_0x5591c4[_0x605c('0x15')][_0x605c('0x17')]);return _0x5958c4(_0x5591c4['error'][_0x605c('0x17')]);}else{logger[_0x605c('0xf')](_0x605c('0x10'),_0x1f0b5f,_0x605c('0x13'));_0x5958c4(_0x5591c4['result'][_0x605c('0x17')]);}})['catch'](function(_0x401188){logger[_0x605c('0x15')](_0x605c('0x10'),_0x1f0b5f,_0x401188);_0x5ddc4a(_0x401188);});});}
\ No newline at end of file
index a9c711d..87c23d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4d6=['/:id/answers','getAnswers','30s','getSummary','create','post','clone','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','/:id','getSessions'];(function(_0x3e75fe,_0x3fbf77){var _0x55bed1=function(_0x53af3c){while(--_0x53af3c){_0x3e75fe['push'](_0x3e75fe['shift']());}};_0x55bed1(++_0x3fbf77);}(_0xf4d6,0x143));var _0x6f4d=function(_0x1802df,_0x2048ea){_0x1802df=_0x1802df-0x0;var _0x382e85=_0xf4d6[_0x1802df];return _0x382e85;};'use strict';var multer=require(_0x6f4d('0x0'));var util=require('util');var path=require(_0x6f4d('0x1'));var timeout=require(_0x6f4d('0x2'));var express=require('express');var router=express[_0x6f4d('0x3')]();var fs_extra=require(_0x6f4d('0x4'));var auth=require(_0x6f4d('0x5'));var interaction=require(_0x6f4d('0x6'));var config=require(_0x6f4d('0x7'));var controller=require(_0x6f4d('0x8'));router[_0x6f4d('0x9')]('/',auth[_0x6f4d('0xa')](),controller['index']);router[_0x6f4d('0x9')](_0x6f4d('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x6f4d('0x9')]('/:id/sessions',auth['isAuthenticated'](),controller[_0x6f4d('0xc')]);router['get'](_0x6f4d('0xd'),auth[_0x6f4d('0xa')](),controller[_0x6f4d('0xe')]);router[_0x6f4d('0x9')]('/:id/summary',auth[_0x6f4d('0xa')](),timeout(_0x6f4d('0xf')),controller[_0x6f4d('0x10')]);router['post']('/',auth[_0x6f4d('0xa')](),controller[_0x6f4d('0x11')]);router[_0x6f4d('0x12')]('/:id/clone',auth[_0x6f4d('0xa')](),controller[_0x6f4d('0x13')]);router['put']('/:id',auth[_0x6f4d('0xa')](),controller[_0x6f4d('0x14')]);router[_0x6f4d('0x15')](_0x6f4d('0xb'),auth[_0x6f4d('0xa')](),controller[_0x6f4d('0x16')]);module[_0x6f4d('0x17')]=router;
\ No newline at end of file
+var _0x29e0=['isAuthenticated','show','getSessions','getAnswers','/:id/summary','30s','clone','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','./jscriptyProject.controller','get','index','/:id'];(function(_0x2288e9,_0x15e163){var _0x24bec9=function(_0xf4dd47){while(--_0xf4dd47){_0x2288e9['push'](_0x2288e9['shift']());}};_0x24bec9(++_0x15e163);}(_0x29e0,0x68));var _0x029e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x29e0[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x029e('0x0'));var util=require(_0x029e('0x1'));var path=require(_0x029e('0x2'));var timeout=require(_0x029e('0x3'));var express=require(_0x029e('0x4'));var router=express['Router']();var fs_extra=require(_0x029e('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x029e('0x6'));var controller=require(_0x029e('0x7'));router[_0x029e('0x8')]('/',auth['isAuthenticated'](),controller[_0x029e('0x9')]);router[_0x029e('0x8')](_0x029e('0xa'),auth[_0x029e('0xb')](),controller[_0x029e('0xc')]);router[_0x029e('0x8')]('/:id/sessions',auth[_0x029e('0xb')](),controller[_0x029e('0xd')]);router[_0x029e('0x8')]('/:id/answers',auth[_0x029e('0xb')](),controller[_0x029e('0xe')]);router[_0x029e('0x8')](_0x029e('0xf'),auth[_0x029e('0xb')](),timeout(_0x029e('0x10')),controller['getSummary']);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/clone',auth[_0x029e('0xb')](),controller[_0x029e('0x11')]);router[_0x029e('0x12')](_0x029e('0xa'),auth[_0x029e('0xb')](),controller[_0x029e('0x13')]);router[_0x029e('0x14')](_0x029e('0xa'),auth[_0x029e('0xb')](),controller[_0x029e('0x15')]);module[_0x029e('0x16')]=router;
\ No newline at end of file
index a44c329..e021214 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e47=['long','setDataValue','formData','stringify','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','lodash','util','exports','STRING','TEXT'];(function(_0xd8b0ca,_0x1d7dd9){var _0x2dba3c=function(_0x5a2343){while(--_0x5a2343){_0xd8b0ca['push'](_0xd8b0ca['shift']());}};_0x2dba3c(++_0x1d7dd9);}(_0x4e47,0x18f));var _0x74e4=function(_0x43316e,_0x16aef6){_0x43316e=_0x43316e-0x0;var _0x5cbfa8=_0x4e47[_0x43316e];return _0x5cbfa8;};'use strict';var Sequelize=require(_0x74e4('0x0'));var _=require(_0x74e4('0x1'));var util=require(_0x74e4('0x2'));module[_0x74e4('0x3')]={'name':{'type':Sequelize[_0x74e4('0x4')],'unique':'name'},'description':{'type':Sequelize[_0x74e4('0x4')]},'formData':{'type':Sequelize[_0x74e4('0x5')](_0x74e4('0x6')),'set':function(_0x50ba66){if(_['isObjectLike'](_0x50ba66)){this[_0x74e4('0x7')](_0x74e4('0x8'),JSON[_0x74e4('0x9')](_0x50ba66));}else if(_['isString'](_0x50ba66)){this[_0x74e4('0x7')]('formData',_0x50ba66);}else{this[_0x74e4('0x7')](_0x74e4('0x8'),util[_0x74e4('0xa')](_0x74e4('0xb'),this['getDataValue']('name')||'',this[_0x74e4('0xc')](_0x74e4('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x74e4('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x74e4('0xe')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9dd4=['util','exports','name','STRING','long','isObjectLike','stringify','setDataValue','formData','getDataValue','description','BOOLEAN'];(function(_0x2c955b,_0x13a7a2){var _0xd4f567=function(_0x38a45b){while(--_0x38a45b){_0x2c955b['push'](_0x2c955b['shift']());}};_0xd4f567(++_0x13a7a2);}(_0x9dd4,0xa8));var _0x49dd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9dd4[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');var _=require('lodash');var util=require(_0x49dd('0x0'));module[_0x49dd('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x49dd('0x2')},'description':{'type':Sequelize[_0x49dd('0x3')]},'formData':{'type':Sequelize['TEXT'](_0x49dd('0x4')),'set':function(_0x1cbaa0){if(_[_0x49dd('0x5')](_0x1cbaa0)){this['setDataValue']('formData',JSON[_0x49dd('0x6')](_0x1cbaa0));}else if(_['isString'](_0x1cbaa0)){this[_0x49dd('0x7')]('formData',_0x1cbaa0);}else{this[_0x49dd('0x7')](_0x49dd('0x8'),util['format']('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this[_0x49dd('0x9')](_0x49dd('0x2'))||'',this[_0x49dd('0x9')](_0x49dd('0xa'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x49dd('0xb')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x49dd('0xb')],'defaultValue':![]}};
\ No newline at end of file
index d8e6136..cee6c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dfd=['../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','UserProfileResource','stack','name','send','map','JscriptyProject','rawAttributes','fieldName','key','model','keys','filters','query','attributes','fields','hasOwnProperty','nolimit','where','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','intersection','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','Projects','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','length','omit','updatedAt','userProfileId','error','update','params','getSessions','findOne','JscriptySessionReport','order','sort','pick','ProjectId','findAll','JscriptyAnswerReport','number','toString','indexOf','replace','getSummary','startTime','parse','JscriptyQuestionReport','-createdAt','questionId','question','starttime','YYYY-MM-DD\x20HH:mm:ss','answer','push','isEmpty','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-type','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','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(_0x30ebbd,_0x3f51d8){var _0xc3b968=function(_0x562357){while(--_0x562357){_0x30ebbd['push'](_0x30ebbd['shift']());}};_0xc3b968(++_0x3f51d8);}(_0x4dfd,0x148));var _0xd4df=function(_0x4c1834,_0x210f70){_0x4c1834=_0x4c1834-0x0;var _0x38c043=_0x4dfd[_0x4c1834];return _0x38c043;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd4df('0x0'));var jsonpatch=require(_0xd4df('0x1'));var rp=require(_0xd4df('0x2'));var moment=require(_0xd4df('0x3'));var BPromise=require(_0xd4df('0x4'));var Mustache=require(_0xd4df('0x5'));var util=require(_0xd4df('0x6'));var path=require(_0xd4df('0x7'));var sox=require(_0xd4df('0x8'));var csv=require(_0xd4df('0x9'));var ejs=require(_0xd4df('0xa'));var fs=require('fs');var fs_extra=require(_0xd4df('0xb'));var _=require('lodash');var squel=require(_0xd4df('0xc'));var crypto=require(_0xd4df('0xd'));var jsforce=require(_0xd4df('0xe'));var deskjs=require(_0xd4df('0xf'));var toCsv=require(_0xd4df('0x9'));var querystring=require(_0xd4df('0x10'));var Papa=require(_0xd4df('0x11'));var Redis=require('ioredis');var authService=require(_0xd4df('0x12'));var qs=require(_0xd4df('0x13'));var as=require(_0xd4df('0x14'));var hardwareService=require(_0xd4df('0x15'));var logger=require(_0xd4df('0x16'))(_0xd4df('0x17'));var utils=require('../../config/utils');var config=require(_0xd4df('0x18'));var licenseUtil=require(_0xd4df('0x19'));var db=require(_0xd4df('0x1a'))['db'];function respondWithStatusCode(_0x2f7d9e,_0x295be4){_0x295be4=_0x295be4||0xcc;return function(_0x30009b){if(_0x30009b){return _0x2f7d9e[_0xd4df('0x1b')](_0x295be4);}return _0x2f7d9e[_0xd4df('0x1c')](_0x295be4)[_0xd4df('0x1d')]();};}function respondWithResult(_0x531aea,_0x433771){_0x433771=_0x433771||0xc8;return function(_0x4e2d80){if(_0x4e2d80){return _0x531aea[_0xd4df('0x1c')](_0x433771)[_0xd4df('0x1e')](_0x4e2d80);}};}function respondWithFilteredResult(_0x2f88de,_0x2e9a83){return function(_0x32daa5){if(_0x32daa5){var _0x15db6d=typeof _0x2e9a83[_0xd4df('0x1f')]===_0xd4df('0x20')&&typeof _0x2e9a83[_0xd4df('0x21')]==='undefined';var _0xa40996=_0x32daa5[_0xd4df('0x22')];var _0x34b0b9=_0x15db6d?0x0:_0x2e9a83[_0xd4df('0x1f')];var _0x9b4ad4=_0x15db6d?_0x32daa5['count']:_0x2e9a83[_0xd4df('0x1f')]+_0x2e9a83[_0xd4df('0x21')];var _0x30edf7;if(_0x9b4ad4>=_0xa40996){_0x9b4ad4=_0xa40996;_0x30edf7=0xc8;}else{_0x30edf7=0xce;}_0x2f88de['status'](_0x30edf7);return _0x2f88de[_0xd4df('0x23')]('Content-Range',_0x34b0b9+'-'+_0x9b4ad4+'/'+_0xa40996)[_0xd4df('0x1e')](_0x32daa5);}return null;};}function patchUpdates(_0x949bd4){return function(_0x2f3f51){try{jsonpatch[_0xd4df('0x24')](_0x2f3f51,_0x949bd4,!![]);}catch(_0x44df46){return BPromise[_0xd4df('0x25')](_0x44df46);}return _0x2f3f51[_0xd4df('0x26')]();};}function saveUpdates(_0x58e2dd,_0x4daa75){return function(_0x544648){if(_0x544648){return _0x544648['update'](_0x58e2dd)[_0xd4df('0x27')](function(_0x3ec72d){return _0x3ec72d;});}return null;};}function removeEntity(_0x22b3a2,_0x3898af){return function(_0xdff551){if(_0xdff551){return _0xdff551[_0xd4df('0x28')]()[_0xd4df('0x27')](function(){var _0x31c7c7=_0xdff551['get']({'plain':!![]});var _0x5030dc='Projects';return db[_0xd4df('0x29')]['destroy']({'where':{'type':_0x5030dc,'resourceId':_0x31c7c7['id']}})[_0xd4df('0x27')](function(){return _0xdff551;});})[_0xd4df('0x27')](function(){_0x22b3a2[_0xd4df('0x1c')](0xcc)[_0xd4df('0x1d')]();});}};}function handleEntityNotFound(_0x1b418d,_0x768b50){return function(_0x2bb17a){if(!_0x2bb17a){_0x1b418d[_0xd4df('0x1b')](0x194);}return _0x2bb17a;};}function handleError(_0x131f99,_0x2d2e1a){_0x2d2e1a=_0x2d2e1a||0x1f4;return function(_0x3db2ba){logger['error'](_0x3db2ba[_0xd4df('0x2a')]);if(_0x3db2ba[_0xd4df('0x2b')]){delete _0x3db2ba[_0xd4df('0x2b')];}_0x131f99['status'](_0x2d2e1a)[_0xd4df('0x2c')](_0x3db2ba);};}exports['index']=function(_0x331c33,_0x110d42){var _0x5c9acc={},_0x2f6dbd={},_0x56e265={'count':0x0,'rows':[]};var _0x52a5f8=_[_0xd4df('0x2d')](db[_0xd4df('0x2e')][_0xd4df('0x2f')],function(_0x56b812){return{'name':_0x56b812[_0xd4df('0x30')],'type':_0x56b812['type'][_0xd4df('0x31')]};});_0x2f6dbd[_0xd4df('0x32')]=_['map'](_0x52a5f8,_0xd4df('0x2b'));_0x2f6dbd['query']=_[_0xd4df('0x33')](_0x331c33['query']);_0x2f6dbd[_0xd4df('0x34')]=_['intersection'](_0x2f6dbd['model'],_0x2f6dbd[_0xd4df('0x35')]);_0x5c9acc[_0xd4df('0x36')]=_['intersection'](_0x2f6dbd[_0xd4df('0x32')],qs[_0xd4df('0x37')](_0x331c33[_0xd4df('0x35')][_0xd4df('0x37')]));_0x5c9acc[_0xd4df('0x36')]=_0x5c9acc['attributes']['length']?_0x5c9acc[_0xd4df('0x36')]:_0x2f6dbd[_0xd4df('0x32')];if(!_0x331c33[_0xd4df('0x35')][_0xd4df('0x38')](_0xd4df('0x39'))){_0x5c9acc[_0xd4df('0x21')]=qs[_0xd4df('0x21')](_0x331c33['query'][_0xd4df('0x21')]);_0x5c9acc['offset']=qs['offset'](_0x331c33['query'][_0xd4df('0x1f')]);}_0x5c9acc['order']=qs['sort'](_0x331c33['query']['sort']);_0x5c9acc[_0xd4df('0x3a')]=qs[_0xd4df('0x34')](_['pick'](_0x331c33[_0xd4df('0x35')],_0x2f6dbd[_0xd4df('0x34')]),_0x52a5f8);if(_0x331c33['query'][_0xd4df('0x3b')]){_0x5c9acc[_0xd4df('0x3a')]=_[_0xd4df('0x3c')](_0x5c9acc['where'],{'$or':_[_0xd4df('0x2d')](_0x52a5f8,function(_0x566621){if(_0x566621[_0xd4df('0x3d')]!==_0xd4df('0x3e')){var _0x1f2a4e={};_0x1f2a4e[_0x566621[_0xd4df('0x2b')]]={'$like':'%'+_0x331c33[_0xd4df('0x35')]['filter']+'%'};return _0x1f2a4e;}})});}_0x5c9acc=_[_0xd4df('0x3c')]({},_0x5c9acc,_0x331c33[_0xd4df('0x3f')]);var _0x2b869c={'where':_0x5c9acc['where']};return db[_0xd4df('0x2e')][_0xd4df('0x22')](_0x2b869c)[_0xd4df('0x27')](function(_0x2caaf5){_0x56e265[_0xd4df('0x22')]=_0x2caaf5;if(_0x331c33[_0xd4df('0x35')][_0xd4df('0x40')]){_0x5c9acc[_0xd4df('0x41')]=[{'all':!![]}];}return db[_0xd4df('0x2e')]['findAll'](_0x5c9acc);})['then'](function(_0x3921ca){_0x56e265[_0xd4df('0x42')]=_0x3921ca;return _0x56e265;})[_0xd4df('0x27')](respondWithFilteredResult(_0x110d42,_0x5c9acc))[_0xd4df('0x43')](handleError(_0x110d42,null));};exports[_0xd4df('0x44')]=function(_0x3b5329,_0x4b9f72){var _0x1ac5d5={'raw':![],'where':{'id':_0x3b5329['params']['id']}},_0x4013ff={};_0x4013ff[_0xd4df('0x32')]=_[_0xd4df('0x33')](db[_0xd4df('0x2e')][_0xd4df('0x2f')]);_0x4013ff[_0xd4df('0x35')]=_[_0xd4df('0x33')](_0x3b5329[_0xd4df('0x35')]);_0x4013ff['filters']=_[_0xd4df('0x45')](_0x4013ff[_0xd4df('0x32')],_0x4013ff[_0xd4df('0x35')]);_0x1ac5d5[_0xd4df('0x36')]=_[_0xd4df('0x45')](_0x4013ff[_0xd4df('0x32')],qs[_0xd4df('0x37')](_0x3b5329[_0xd4df('0x35')]['fields']));_0x1ac5d5[_0xd4df('0x36')]=_0x1ac5d5[_0xd4df('0x36')]['length']?_0x1ac5d5[_0xd4df('0x36')]:_0x4013ff[_0xd4df('0x32')];if(_0x3b5329[_0xd4df('0x35')][_0xd4df('0x40')]){_0x1ac5d5[_0xd4df('0x41')]=[{'all':!![]}];}_0x1ac5d5=_[_0xd4df('0x3c')]({},_0x1ac5d5,_0x3b5329['options']);return db[_0xd4df('0x2e')]['find'](_0x1ac5d5)[_0xd4df('0x27')](handleEntityNotFound(_0x4b9f72,null))[_0xd4df('0x27')](respondWithResult(_0x4b9f72,null))[_0xd4df('0x43')](handleError(_0x4b9f72,null));};exports[_0xd4df('0x46')]=function(_0x4b716b,_0x181659){return db[_0xd4df('0x2e')][_0xd4df('0x46')](_0x4b716b[_0xd4df('0x47')],{})[_0xd4df('0x27')](function(_0x248f2d){var _0x308120=_0x4b716b[_0xd4df('0x48')]['get']({'plain':!![]});if(!_0x308120)throw new Error(_0xd4df('0x49'));if(_0x308120[_0xd4df('0x4a')]===_0xd4df('0x48')){var _0x257da8=_0x248f2d[_0xd4df('0x4b')]({'plain':!![]});var _0x153bf8=_0xd4df('0x4c');return db['UserProfileSection'][_0xd4df('0x4d')]({'where':{'name':_0x153bf8,'userProfileId':_0x308120['userProfileId']},'raw':!![]})[_0xd4df('0x27')](function(_0x2d9624){if(_0x2d9624&&_0x2d9624[_0xd4df('0x4e')]===0x0){return db[_0xd4df('0x29')][_0xd4df('0x46')]({'name':_0x257da8[_0xd4df('0x2b')],'resourceId':_0x257da8['id'],'type':_0x2d9624['name'],'sectionId':_0x2d9624['id']},{})[_0xd4df('0x27')](function(){return _0x248f2d;});}else{return _0x248f2d;}})[_0xd4df('0x43')](function(_0x387b88){logger['error'](_0xd4df('0x4f'),_0x387b88);throw _0x387b88;});}return _0x248f2d;})['then'](respondWithResult(_0x181659,0xc9))[_0xd4df('0x43')](handleError(_0x181659,null));};exports[_0xd4df('0x50')]=function(_0x456a4e,_0x813995){var _0x3ff72c={'where':{'id':_0x456a4e['params']['id']}},_0x894ba6={};_0x894ba6[_0xd4df('0x32')]=_[_0xd4df('0x33')](db[_0xd4df('0x2e')]['rawAttributes']);_0x3ff72c[_0xd4df('0x36')]=_['intersection'](_0x894ba6[_0xd4df('0x32')],qs[_0xd4df('0x37')](_0x456a4e[_0xd4df('0x35')][_0xd4df('0x37')]));_0x3ff72c[_0xd4df('0x36')]=_0x3ff72c[_0xd4df('0x36')][_0xd4df('0x51')]?_0x3ff72c[_0xd4df('0x36')]:_0x894ba6[_0xd4df('0x32')];if(_0x456a4e[_0xd4df('0x35')][_0xd4df('0x40')]){_0x3ff72c[_0xd4df('0x41')]=[{'all':!![]}];}_0x3ff72c=_[_0xd4df('0x3c')]({},_0x3ff72c,_0x456a4e[_0xd4df('0x3f')]);return db['JscriptyProject']['find'](_0x3ff72c)[_0xd4df('0x27')](handleEntityNotFound(_0x813995,null))[_0xd4df('0x27')](function(_0x47242a){if(_0x47242a){var _0x536d94=_0x47242a[_0xd4df('0x4b')]({'plain':!![]});_0x536d94=qs[_0xd4df('0x52')](_0x536d94,['id','createdAt',_0xd4df('0x53')]);_0x456a4e['body']=_['omit'](_0x456a4e[_0xd4df('0x47')],['id','createdAt',_0xd4df('0x53')]);return db[_0xd4df('0x2e')][_0xd4df('0x46')](_['merge'](_0x536d94,_0x456a4e[_0xd4df('0x47')]),{'include':_0x456a4e[_0xd4df('0x35')][_0xd4df('0x40')]?[{'all':!![]}]:undefined})[_0xd4df('0x27')](function(_0x537163){var _0x1c9e35=_0x456a4e[_0xd4df('0x48')][_0xd4df('0x4b')]({'plain':!![]});if(!_0x1c9e35)throw new Error(_0xd4df('0x49'));if(_0x1c9e35[_0xd4df('0x4a')]===_0xd4df('0x48')){var _0x1aecf3=_0x537163['get']({'plain':!![]});var _0x435f4b=_0xd4df('0x4c');return db['UserProfileSection'][_0xd4df('0x4d')]({'where':{'name':_0x435f4b,'userProfileId':_0x1c9e35[_0xd4df('0x54')]},'raw':!![]})[_0xd4df('0x27')](function(_0x3bf71a){if(_0x3bf71a&&_0x3bf71a['autoAssociation']===0x0){return db['UserProfileResource'][_0xd4df('0x46')]({'name':_0x1aecf3[_0xd4df('0x2b')],'resourceId':_0x1aecf3['id'],'type':_0x3bf71a[_0xd4df('0x2b')],'sectionId':_0x3bf71a['id']},{})[_0xd4df('0x27')](function(){return _0x537163;});}else{return _0x537163;}})[_0xd4df('0x43')](function(_0xf680ed){logger[_0xd4df('0x55')](_0xd4df('0x4f'),_0xf680ed);throw _0xf680ed;});}return _0x537163;});}})[_0xd4df('0x27')](respondWithResult(_0x813995,0xc9))[_0xd4df('0x43')](handleError(_0x813995,null));};exports[_0xd4df('0x56')]=function(_0x2667fb,_0x20db13){if(_0x2667fb[_0xd4df('0x47')]['id']){delete _0x2667fb[_0xd4df('0x47')]['id'];}return db[_0xd4df('0x2e')]['find']({'where':{'id':_0x2667fb[_0xd4df('0x57')]['id']}})[_0xd4df('0x27')](handleEntityNotFound(_0x20db13,null))[_0xd4df('0x27')](saveUpdates(_0x2667fb['body'],null))[_0xd4df('0x27')](respondWithResult(_0x20db13,null))[_0xd4df('0x43')](handleError(_0x20db13,null));};exports['destroy']=function(_0x440acf,_0x58f541){return db[_0xd4df('0x2e')][_0xd4df('0x4d')]({'where':{'id':_0x440acf[_0xd4df('0x57')]['id']}})['then'](handleEntityNotFound(_0x58f541,null))['then'](removeEntity(_0x58f541,null))[_0xd4df('0x43')](handleError(_0x58f541,null));};exports[_0xd4df('0x58')]=function(_0x121423,_0x357004,_0x39a5bd){var _0x3955bc={'raw':!![],'where':{}};var _0x251c15={};var _0x3a5510={'count':0x0,'rows':[]};return db[_0xd4df('0x2e')][_0xd4df('0x59')]({'where':{'id':_0x121423['params']['id']}})['then'](handleEntityNotFound(_0x357004,null))['then'](function(_0x10bd56){if(_0x10bd56){_0x251c15['model']=_['keys'](db[_0xd4df('0x5a')]['rawAttributes']);_0x251c15['query']=_[_0xd4df('0x33')](_0x121423[_0xd4df('0x35')]);_0x251c15[_0xd4df('0x34')]=_[_0xd4df('0x45')](_0x251c15[_0xd4df('0x32')],_0x251c15[_0xd4df('0x35')]);_0x3955bc[_0xd4df('0x36')]=_['intersection'](_0x251c15['model'],qs[_0xd4df('0x37')](_0x121423[_0xd4df('0x35')][_0xd4df('0x37')]));_0x3955bc[_0xd4df('0x36')]=_0x3955bc[_0xd4df('0x36')][_0xd4df('0x51')]?_0x3955bc['attributes']:_0x251c15[_0xd4df('0x32')];if(!_0x121423['query'][_0xd4df('0x38')](_0xd4df('0x39'))){_0x3955bc[_0xd4df('0x21')]=qs[_0xd4df('0x21')](_0x121423[_0xd4df('0x35')][_0xd4df('0x21')]);_0x3955bc[_0xd4df('0x1f')]=qs['offset'](_0x121423['query']['offset']);}_0x3955bc[_0xd4df('0x5b')]=qs[_0xd4df('0x5c')](_0x121423['query'][_0xd4df('0x5c')]);_0x3955bc[_0xd4df('0x3a')]=qs[_0xd4df('0x34')](_[_0xd4df('0x5d')](_0x121423['query'],_0x251c15[_0xd4df('0x34')]));_0x3955bc[_0xd4df('0x3a')][_0xd4df('0x5e')]=_0x10bd56['id'];if(_0x121423['query']['filter']){_0x3955bc[_0xd4df('0x3a')]=_[_0xd4df('0x3c')](_0x3955bc['where'],{'$or':_[_0xd4df('0x2d')](_0x3955bc[_0xd4df('0x36')],function(_0x2cafa9){var _0x3e2160={};_0x3e2160[_0x2cafa9]={'$like':'%'+_0x121423[_0xd4df('0x35')][_0xd4df('0x3b')]+'%'};return _0x3e2160;})});}_0x3955bc=_[_0xd4df('0x3c')]({},_0x3955bc,_0x121423['options']);return db[_0xd4df('0x5a')][_0xd4df('0x22')]({'where':_0x3955bc[_0xd4df('0x3a')]})[_0xd4df('0x27')](function(_0x496fbd){_0x3a5510[_0xd4df('0x22')]=_0x496fbd;if(_0x121423[_0xd4df('0x35')][_0xd4df('0x40')]){_0x3955bc[_0xd4df('0x41')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0xd4df('0x5f')](_0x3955bc);})[_0xd4df('0x27')](function(_0x58df03){_0x3a5510[_0xd4df('0x42')]=_0x58df03;return _0x3a5510;});}})[_0xd4df('0x27')](respondWithFilteredResult(_0x357004,_0x3955bc))[_0xd4df('0x43')](handleError(_0x357004,null));};exports['getAnswers']=function(_0x1297fa,_0x4ef0c8,_0x59070d){var _0x1ff873={'raw':!![],'where':{}};var _0x317492={};var _0x182a98={'count':0x0,'rows':[]};return db['JscriptyProject'][_0xd4df('0x59')]({'where':{'id':_0x1297fa[_0xd4df('0x57')]['id']}})['then'](handleEntityNotFound(_0x4ef0c8,null))[_0xd4df('0x27')](function(_0x49534f){if(_0x49534f){_0x317492[_0xd4df('0x32')]=_[_0xd4df('0x33')](db['JscriptyAnswerReport'][_0xd4df('0x2f')]);_0x317492['query']=_[_0xd4df('0x33')](_0x1297fa['query']);_0x317492[_0xd4df('0x34')]=_[_0xd4df('0x45')](_0x317492[_0xd4df('0x32')],_0x317492['query']);_0x1ff873[_0xd4df('0x36')]=_[_0xd4df('0x45')](_0x317492[_0xd4df('0x32')],qs[_0xd4df('0x37')](_0x1297fa[_0xd4df('0x35')][_0xd4df('0x37')]));_0x1ff873[_0xd4df('0x36')]=_0x1ff873[_0xd4df('0x36')][_0xd4df('0x51')]?_0x1ff873['attributes']:_0x317492[_0xd4df('0x32')];if(!_0x1297fa['query']['hasOwnProperty'](_0xd4df('0x39'))){_0x1ff873[_0xd4df('0x21')]=qs[_0xd4df('0x21')](_0x1297fa['query'][_0xd4df('0x21')]);_0x1ff873[_0xd4df('0x1f')]=qs['offset'](_0x1297fa[_0xd4df('0x35')][_0xd4df('0x1f')]);}_0x1ff873[_0xd4df('0x5b')]=qs[_0xd4df('0x5c')](_0x1297fa[_0xd4df('0x35')][_0xd4df('0x5c')]);_0x1ff873[_0xd4df('0x3a')]=qs[_0xd4df('0x34')](_[_0xd4df('0x5d')](_0x1297fa['query'],_0x317492['filters']));_0x1ff873[_0xd4df('0x3a')]['ProjectId']=_0x49534f['id'];if(_0x1297fa[_0xd4df('0x35')]['filter']){_0x1ff873['where']=_[_0xd4df('0x3c')](_0x1ff873[_0xd4df('0x3a')],{'$or':_['map'](_0x1ff873['attributes'],function(_0x41276d){var _0x4e6ce1={};_0x4e6ce1[_0x41276d]={'$like':'%'+_0x1297fa[_0xd4df('0x35')][_0xd4df('0x3b')]+'%'};return _0x4e6ce1;})});}_0x1ff873=_[_0xd4df('0x3c')]({},_0x1ff873,_0x1297fa[_0xd4df('0x3f')]);return db[_0xd4df('0x60')][_0xd4df('0x22')]({'where':_0x1ff873[_0xd4df('0x3a')]})[_0xd4df('0x27')](function(_0x4c00e8){_0x182a98[_0xd4df('0x22')]=_0x4c00e8;if(_0x1297fa[_0xd4df('0x35')][_0xd4df('0x40')]){_0x1ff873[_0xd4df('0x41')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xd4df('0x5f')](_0x1ff873);})['then'](function(_0x3e0388){_0x182a98[_0xd4df('0x42')]=_0x3e0388;return _0x182a98;});}})[_0xd4df('0x27')](respondWithFilteredResult(_0x4ef0c8,_0x1ff873))[_0xd4df('0x43')](handleError(_0x4ef0c8,null));};function char(_0x430744){return _0xd4df('0x61')===typeof _0x430744?String['fromCharCode'][_0xd4df('0x24')](null,arguments):_0x430744;}function needsEncapsulation(_0x48e7d9){return!!_0x48e7d9&&(_0x48e7d9[_0xd4df('0x62')]()['indexOf'](char(0xd))>=0x0||_0x48e7d9[_0xd4df('0x62')]()[_0xd4df('0x63')](char(0xa))>=0x0||_0x48e7d9[_0xd4df('0x62')]()['indexOf'](char(0x2c))>=0x0||_0x48e7d9[_0xd4df('0x62')]()[_0xd4df('0x63')](char(0x22))>=0x0);}function encapsulate(_0x58f5e4){var _0x1c3a8f=char(0x22),_0x3134b7='\x5c'+char(0x22),_0x9585c2=_0x58f5e4[_0xd4df('0x62')]()[_0xd4df('0x64')](new RegExp(_0x1c3a8f,'g'),_0x3134b7);return _0x1c3a8f+_0x9585c2+_0x1c3a8f;}exports[_0xd4df('0x65')]=function(_0xf16861,_0x5ed0b2,_0x5ed0ac){var _0x3b42e2,_0x446436;var _0x2ddbe3={'where':{'ProjectId':_0xf16861[_0xd4df('0x57')]['id']}};if(_0xf16861[_0xd4df('0x35')][_0xd4df('0x66')]){_0x2ddbe3[_0xd4df('0x3a')]['starttime']=JSON[_0xd4df('0x67')](_0xf16861['query'][_0xd4df('0x66')]);}return db[_0xd4df('0x5a')][_0xd4df('0x5f')](_0x2ddbe3)[_0xd4df('0x27')](handleEntityNotFound(_0x5ed0b2,null))[_0xd4df('0x27')](function(_0x14e18f){if(_0x14e18f){_0x3b42e2=_0x14e18f;return db[_0xd4df('0x68')]['findAll']({'where':{'SessionId':{'$in':_[_0xd4df('0x2d')](_0x3b42e2,'id')},'ProjectId':_0xf16861[_0xd4df('0x57')]['id']},'order':_0xd4df('0x69')});}})[_0xd4df('0x27')](handleEntityNotFound(_0x5ed0b2,null))[_0xd4df('0x27')](function(_0x3e0317){if(_0x3e0317){_0x446436=_0x3e0317;var _0x949e4d={};for(var _0x14bce7=0x0,_0x3396f2=_0x446436[_0xd4df('0x51')];_0x14bce7<_0x3396f2;_0x14bce7++){if(!_0x949e4d['hasOwnProperty'](_0x446436[_0x14bce7][_0xd4df('0x6a')])){_0x949e4d[_0x446436[_0x14bce7]['questionId']]=needsEncapsulation(_0x446436[_0x14bce7]['question'])?encapsulate(_0x446436[_0x14bce7][_0xd4df('0x6b')]):_0x446436[_0x14bce7][_0xd4df('0x6b')];}}var _0x34b89f=[],_0x473d81={};for(var _0x468d06=0x0,_0x101512=_0x3b42e2[_0xd4df('0x51')];_0x468d06<_0x101512;_0x468d06++){_0x473d81={'ProjectId':_0xf16861[_0xd4df('0x57')]['id'],'SessionId':_0x3b42e2[_0x468d06]['id'],'StartTime':moment(_0x3b42e2[_0x468d06][_0xd4df('0x6c')])['format'](_0xd4df('0x6d'))};for(var _0x54b381=0x0,_0x476bb8=_0x446436['length'];_0x54b381<_0x476bb8;_0x54b381++){if(_0x446436[_0x54b381]['SessionId']==_0x3b42e2[_0x468d06]['id']&&_0x949e4d['hasOwnProperty'](_0x446436[_0x54b381]['questionId'])){_0x473d81[_0x949e4d[_0x446436[_0x54b381][_0xd4df('0x6a')]]]=_0x446436[_0x54b381][_0xd4df('0x6e')];}}for(var _0x31b777 in _0x949e4d){if(!_0x473d81['hasOwnProperty'](_0x949e4d[_0x31b777])){_0x473d81[_0x949e4d[_0x31b777]]=null;}}_0x34b89f[_0xd4df('0x6f')](_0x473d81);}return _0x34b89f;}})['then'](function(_0x2cd961){if(!_[_0xd4df('0x70')](_0x2cd961)){var _0xab86d5=toCsv(_0x2cd961);var _0x42bca9=Date['now']();fs[_0xd4df('0x71')](util[_0xd4df('0x72')](_0xd4df('0x73'),_0xf16861['params']['id'],_0x42bca9),_0xab86d5);_0x5ed0b2['setHeader']('Content-disposition','attachment;\x20filename='+util[_0xd4df('0x72')]('Jscripty_Project_%d_Summary_%s.csv',_0xf16861[_0xd4df('0x57')]['id'],_0x42bca9));_0x5ed0b2[_0xd4df('0x74')](_0xd4df('0x75'),'text/csv');return _0x5ed0b2['download'](util[_0xd4df('0x72')](_0xd4df('0x73'),_0xf16861[_0xd4df('0x57')]['id'],_0x42bca9));}else{return _0x5ed0b2[_0xd4df('0x1b')](0xcc);}})[_0xd4df('0x43')](handleError(_0x5ed0b2,null));};
\ No newline at end of file
+var _0x5ed0=['Projects','UserProfileResource','error','stack','name','send','rawAttributes','fieldName','type','key','model','map','query','keys','attributes','fields','length','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','JscriptyProject','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','get','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','getSessions','findOne','JscriptySessionReport','hasOwnProperty','ProjectId','getAnswers','nolimit','JscriptyAnswerReport','number','fromCharCode','indexOf','toString','replace','getSummary','parse','startTime','JscriptyQuestionReport','-createdAt','question','starttime','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','questionId','answer','push','now','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','text/csv','download','sendStatus','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','destroy','then'];(function(_0x3d83ac,_0x1d0135){var _0x299760=function(_0x40c1a3){while(--_0x40c1a3){_0x3d83ac['push'](_0x3d83ac['shift']());}};_0x299760(++_0x1d0135);}(_0x5ed0,0xcb));var _0x05ed=function(_0x1b34a9,_0x5996fd){_0x1b34a9=_0x1b34a9-0x0;var _0x1e44c2=_0x5ed0[_0x1b34a9];return _0x1e44c2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x05ed('0x0'));var zipdir=require(_0x05ed('0x1'));var jsonpatch=require(_0x05ed('0x2'));var rp=require(_0x05ed('0x3'));var moment=require(_0x05ed('0x4'));var BPromise=require(_0x05ed('0x5'));var Mustache=require(_0x05ed('0x6'));var util=require(_0x05ed('0x7'));var path=require('path');var sox=require(_0x05ed('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x05ed('0x9'));var _=require(_0x05ed('0xa'));var squel=require(_0x05ed('0xb'));var crypto=require(_0x05ed('0xc'));var jsforce=require(_0x05ed('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x05ed('0xe'));var querystring=require('querystring');var Papa=require(_0x05ed('0xf'));var Redis=require(_0x05ed('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x05ed('0x11'));var as=require(_0x05ed('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x05ed('0x13'))(_0x05ed('0x14'));var utils=require(_0x05ed('0x15'));var config=require(_0x05ed('0x16'));var licenseUtil=require(_0x05ed('0x17'));var db=require(_0x05ed('0x18'))['db'];function respondWithStatusCode(_0x2dec9f,_0x5b9170){_0x5b9170=_0x5b9170||0xcc;return function(_0x53eef1){if(_0x53eef1){return _0x2dec9f['sendStatus'](_0x5b9170);}return _0x2dec9f[_0x05ed('0x19')](_0x5b9170)[_0x05ed('0x1a')]();};}function respondWithResult(_0x38f438,_0x555079){_0x555079=_0x555079||0xc8;return function(_0x227853){if(_0x227853){return _0x38f438[_0x05ed('0x19')](_0x555079)[_0x05ed('0x1b')](_0x227853);}};}function respondWithFilteredResult(_0x396c5f,_0x5cc174){return function(_0x3b901f){if(_0x3b901f){var _0x3ccf0b=typeof _0x5cc174[_0x05ed('0x1c')]==='undefined'&&typeof _0x5cc174[_0x05ed('0x1d')]===_0x05ed('0x1e');var _0x56617e=_0x3b901f[_0x05ed('0x1f')];var _0x59f0ce=_0x3ccf0b?0x0:_0x5cc174[_0x05ed('0x1c')];var _0x2b459d=_0x3ccf0b?_0x3b901f[_0x05ed('0x1f')]:_0x5cc174['offset']+_0x5cc174['limit'];var _0xac60ea;if(_0x2b459d>=_0x56617e){_0x2b459d=_0x56617e;_0xac60ea=0xc8;}else{_0xac60ea=0xce;}_0x396c5f[_0x05ed('0x19')](_0xac60ea);return _0x396c5f[_0x05ed('0x20')](_0x05ed('0x21'),_0x59f0ce+'-'+_0x2b459d+'/'+_0x56617e)[_0x05ed('0x1b')](_0x3b901f);}return null;};}function patchUpdates(_0x3b023c){return function(_0xd0e6ba){try{jsonpatch['apply'](_0xd0e6ba,_0x3b023c,!![]);}catch(_0x1cc4fb){return BPromise[_0x05ed('0x22')](_0x1cc4fb);}return _0xd0e6ba[_0x05ed('0x23')]();};}function saveUpdates(_0x5002b0,_0x2a3302){return function(_0x52aa1a){if(_0x52aa1a){return _0x52aa1a[_0x05ed('0x24')](_0x5002b0)['then'](function(_0x48a8b1){return _0x48a8b1;});}return null;};}function removeEntity(_0x52fece,_0x534041){return function(_0x26e6b1){if(_0x26e6b1){return _0x26e6b1[_0x05ed('0x25')]()[_0x05ed('0x26')](function(){var _0x45e18e=_0x26e6b1['get']({'plain':!![]});var _0x4f76cb=_0x05ed('0x27');return db[_0x05ed('0x28')][_0x05ed('0x25')]({'where':{'type':_0x4f76cb,'resourceId':_0x45e18e['id']}})[_0x05ed('0x26')](function(){return _0x26e6b1;});})[_0x05ed('0x26')](function(){_0x52fece[_0x05ed('0x19')](0xcc)[_0x05ed('0x1a')]();});}};}function handleEntityNotFound(_0x141c8f,_0x41e6d1){return function(_0x5cecf7){if(!_0x5cecf7){_0x141c8f['sendStatus'](0x194);}return _0x5cecf7;};}function handleError(_0x5cfc0d,_0x1400ad){_0x1400ad=_0x1400ad||0x1f4;return function(_0x5854cc){logger[_0x05ed('0x29')](_0x5854cc[_0x05ed('0x2a')]);if(_0x5854cc[_0x05ed('0x2b')]){delete _0x5854cc['name'];}_0x5cfc0d['status'](_0x1400ad)[_0x05ed('0x2c')](_0x5854cc);};}exports['index']=function(_0xc49b2a,_0x215288){var _0x3faeda={},_0x7644f0={},_0x548ded={'count':0x0,'rows':[]};var _0x635a3e=_['map'](db['JscriptyProject'][_0x05ed('0x2d')],function(_0x299d3d){return{'name':_0x299d3d[_0x05ed('0x2e')],'type':_0x299d3d[_0x05ed('0x2f')][_0x05ed('0x30')]};});_0x7644f0[_0x05ed('0x31')]=_[_0x05ed('0x32')](_0x635a3e,_0x05ed('0x2b'));_0x7644f0[_0x05ed('0x33')]=_[_0x05ed('0x34')](_0xc49b2a[_0x05ed('0x33')]);_0x7644f0['filters']=_['intersection'](_0x7644f0['model'],_0x7644f0[_0x05ed('0x33')]);_0x3faeda[_0x05ed('0x35')]=_['intersection'](_0x7644f0[_0x05ed('0x31')],qs[_0x05ed('0x36')](_0xc49b2a[_0x05ed('0x33')][_0x05ed('0x36')]));_0x3faeda[_0x05ed('0x35')]=_0x3faeda[_0x05ed('0x35')][_0x05ed('0x37')]?_0x3faeda[_0x05ed('0x35')]:_0x7644f0[_0x05ed('0x31')];if(!_0xc49b2a[_0x05ed('0x33')]['hasOwnProperty']('nolimit')){_0x3faeda[_0x05ed('0x1d')]=qs[_0x05ed('0x1d')](_0xc49b2a['query']['limit']);_0x3faeda[_0x05ed('0x1c')]=qs[_0x05ed('0x1c')](_0xc49b2a[_0x05ed('0x33')][_0x05ed('0x1c')]);}_0x3faeda[_0x05ed('0x38')]=qs[_0x05ed('0x39')](_0xc49b2a[_0x05ed('0x33')][_0x05ed('0x39')]);_0x3faeda[_0x05ed('0x3a')]=qs[_0x05ed('0x3b')](_[_0x05ed('0x3c')](_0xc49b2a[_0x05ed('0x33')],_0x7644f0[_0x05ed('0x3b')]),_0x635a3e);if(_0xc49b2a[_0x05ed('0x33')]['filter']){_0x3faeda[_0x05ed('0x3a')]=_[_0x05ed('0x3d')](_0x3faeda[_0x05ed('0x3a')],{'$or':_[_0x05ed('0x32')](_0x635a3e,function(_0xd16e8a){if(_0xd16e8a[_0x05ed('0x2f')]!==_0x05ed('0x3e')){var _0x3fb452={};_0x3fb452[_0xd16e8a[_0x05ed('0x2b')]]={'$like':'%'+_0xc49b2a['query'][_0x05ed('0x3f')]+'%'};return _0x3fb452;}})});}_0x3faeda=_[_0x05ed('0x3d')]({},_0x3faeda,_0xc49b2a[_0x05ed('0x40')]);var _0x998fe1={'where':_0x3faeda[_0x05ed('0x3a')]};return db[_0x05ed('0x41')][_0x05ed('0x1f')](_0x998fe1)[_0x05ed('0x26')](function(_0x30c836){_0x548ded[_0x05ed('0x1f')]=_0x30c836;if(_0xc49b2a[_0x05ed('0x33')][_0x05ed('0x42')]){_0x3faeda[_0x05ed('0x43')]=[{'all':!![]}];}return db[_0x05ed('0x41')][_0x05ed('0x44')](_0x3faeda);})['then'](function(_0xc6bee3){_0x548ded[_0x05ed('0x45')]=_0xc6bee3;return _0x548ded;})[_0x05ed('0x26')](respondWithFilteredResult(_0x215288,_0x3faeda))[_0x05ed('0x46')](handleError(_0x215288,null));};exports[_0x05ed('0x47')]=function(_0x26e12a,_0x22ded8){var _0x2d2c9e={'raw':![],'where':{'id':_0x26e12a[_0x05ed('0x48')]['id']}},_0x20a4ed={};_0x20a4ed[_0x05ed('0x31')]=_[_0x05ed('0x34')](db['JscriptyProject']['rawAttributes']);_0x20a4ed[_0x05ed('0x33')]=_['keys'](_0x26e12a[_0x05ed('0x33')]);_0x20a4ed[_0x05ed('0x3b')]=_[_0x05ed('0x49')](_0x20a4ed[_0x05ed('0x31')],_0x20a4ed[_0x05ed('0x33')]);_0x2d2c9e[_0x05ed('0x35')]=_[_0x05ed('0x49')](_0x20a4ed[_0x05ed('0x31')],qs[_0x05ed('0x36')](_0x26e12a[_0x05ed('0x33')][_0x05ed('0x36')]));_0x2d2c9e[_0x05ed('0x35')]=_0x2d2c9e['attributes'][_0x05ed('0x37')]?_0x2d2c9e[_0x05ed('0x35')]:_0x20a4ed[_0x05ed('0x31')];if(_0x26e12a[_0x05ed('0x33')][_0x05ed('0x42')]){_0x2d2c9e[_0x05ed('0x43')]=[{'all':!![]}];}_0x2d2c9e=_['merge']({},_0x2d2c9e,_0x26e12a[_0x05ed('0x40')]);return db['JscriptyProject'][_0x05ed('0x4a')](_0x2d2c9e)[_0x05ed('0x26')](handleEntityNotFound(_0x22ded8,null))[_0x05ed('0x26')](respondWithResult(_0x22ded8,null))[_0x05ed('0x46')](handleError(_0x22ded8,null));};exports[_0x05ed('0x4b')]=function(_0x39d033,_0x14d66f){return db[_0x05ed('0x41')][_0x05ed('0x4b')](_0x39d033[_0x05ed('0x4c')],{})['then'](function(_0xa7fbe8){var _0x27c8e2=_0x39d033['user'][_0x05ed('0x4d')]({'plain':!![]});if(!_0x27c8e2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x27c8e2[_0x05ed('0x4e')]==='user'){var _0x264880=_0xa7fbe8[_0x05ed('0x4d')]({'plain':!![]});var _0x6eef32=_0x05ed('0x27');return db['UserProfileSection'][_0x05ed('0x4a')]({'where':{'name':_0x6eef32,'userProfileId':_0x27c8e2[_0x05ed('0x4f')]},'raw':!![]})[_0x05ed('0x26')](function(_0x25cedc){if(_0x25cedc&&_0x25cedc['autoAssociation']===0x0){return db['UserProfileResource'][_0x05ed('0x4b')]({'name':_0x264880['name'],'resourceId':_0x264880['id'],'type':_0x25cedc[_0x05ed('0x2b')],'sectionId':_0x25cedc['id']},{})[_0x05ed('0x26')](function(){return _0xa7fbe8;});}else{return _0xa7fbe8;}})['catch'](function(_0x208700){logger[_0x05ed('0x29')](_0x05ed('0x50'),_0x208700);throw _0x208700;});}return _0xa7fbe8;})[_0x05ed('0x26')](respondWithResult(_0x14d66f,0xc9))[_0x05ed('0x46')](handleError(_0x14d66f,null));};exports['clone']=function(_0x5e860e,_0x3416f8){var _0x32d501={'where':{'id':_0x5e860e[_0x05ed('0x48')]['id']}},_0x22745c={};_0x22745c[_0x05ed('0x31')]=_[_0x05ed('0x34')](db[_0x05ed('0x41')][_0x05ed('0x2d')]);_0x32d501[_0x05ed('0x35')]=_['intersection'](_0x22745c['model'],qs[_0x05ed('0x36')](_0x5e860e[_0x05ed('0x33')][_0x05ed('0x36')]));_0x32d501['attributes']=_0x32d501[_0x05ed('0x35')][_0x05ed('0x37')]?_0x32d501[_0x05ed('0x35')]:_0x22745c['model'];if(_0x5e860e[_0x05ed('0x33')][_0x05ed('0x42')]){_0x32d501[_0x05ed('0x43')]=[{'all':!![]}];}_0x32d501=_['merge']({},_0x32d501,_0x5e860e[_0x05ed('0x40')]);return db[_0x05ed('0x41')][_0x05ed('0x4a')](_0x32d501)['then'](handleEntityNotFound(_0x3416f8,null))[_0x05ed('0x26')](function(_0x4ca5ae){if(_0x4ca5ae){var _0x7fb8a9=_0x4ca5ae[_0x05ed('0x4d')]({'plain':!![]});_0x7fb8a9=qs[_0x05ed('0x51')](_0x7fb8a9,['id','createdAt','updatedAt']);_0x5e860e[_0x05ed('0x4c')]=_[_0x05ed('0x51')](_0x5e860e[_0x05ed('0x4c')],['id',_0x05ed('0x52'),_0x05ed('0x53')]);return db['JscriptyProject']['create'](_[_0x05ed('0x3d')](_0x7fb8a9,_0x5e860e[_0x05ed('0x4c')]),{'include':_0x5e860e['query'][_0x05ed('0x42')]?[{'all':!![]}]:undefined})[_0x05ed('0x26')](function(_0x20be05){var _0x30a355=_0x5e860e[_0x05ed('0x54')][_0x05ed('0x4d')]({'plain':!![]});if(!_0x30a355)throw new Error(_0x05ed('0x55'));if(_0x30a355[_0x05ed('0x4e')]==='user'){var _0x4d002e=_0x20be05[_0x05ed('0x4d')]({'plain':!![]});var _0x2e3846='Projects';return db[_0x05ed('0x56')][_0x05ed('0x4a')]({'where':{'name':_0x2e3846,'userProfileId':_0x30a355[_0x05ed('0x4f')]},'raw':!![]})[_0x05ed('0x26')](function(_0x463cbb){if(_0x463cbb&&_0x463cbb['autoAssociation']===0x0){return db[_0x05ed('0x28')][_0x05ed('0x4b')]({'name':_0x4d002e[_0x05ed('0x2b')],'resourceId':_0x4d002e['id'],'type':_0x463cbb[_0x05ed('0x2b')],'sectionId':_0x463cbb['id']},{})['then'](function(){return _0x20be05;});}else{return _0x20be05;}})[_0x05ed('0x46')](function(_0x52fd36){logger[_0x05ed('0x29')](_0x05ed('0x50'),_0x52fd36);throw _0x52fd36;});}return _0x20be05;});}})['then'](respondWithResult(_0x3416f8,0xc9))['catch'](handleError(_0x3416f8,null));};exports['update']=function(_0x4e3548,_0x4bd43a){if(_0x4e3548['body']['id']){delete _0x4e3548[_0x05ed('0x4c')]['id'];}return db[_0x05ed('0x41')][_0x05ed('0x4a')]({'where':{'id':_0x4e3548[_0x05ed('0x48')]['id']}})[_0x05ed('0x26')](handleEntityNotFound(_0x4bd43a,null))[_0x05ed('0x26')](saveUpdates(_0x4e3548[_0x05ed('0x4c')],null))[_0x05ed('0x26')](respondWithResult(_0x4bd43a,null))['catch'](handleError(_0x4bd43a,null));};exports['destroy']=function(_0x3cf35d,_0x3ad1a3){return db[_0x05ed('0x41')][_0x05ed('0x4a')]({'where':{'id':_0x3cf35d['params']['id']}})[_0x05ed('0x26')](handleEntityNotFound(_0x3ad1a3,null))[_0x05ed('0x26')](removeEntity(_0x3ad1a3,null))[_0x05ed('0x46')](handleError(_0x3ad1a3,null));};exports[_0x05ed('0x57')]=function(_0x2effa6,_0x28835c,_0x161c6b){var _0x230e7f={'raw':!![],'where':{}};var _0x2af65c={};var _0x4c58cc={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x05ed('0x58')]({'where':{'id':_0x2effa6[_0x05ed('0x48')]['id']}})[_0x05ed('0x26')](handleEntityNotFound(_0x28835c,null))[_0x05ed('0x26')](function(_0x1c3fa1){if(_0x1c3fa1){_0x2af65c[_0x05ed('0x31')]=_[_0x05ed('0x34')](db[_0x05ed('0x59')][_0x05ed('0x2d')]);_0x2af65c['query']=_[_0x05ed('0x34')](_0x2effa6['query']);_0x2af65c['filters']=_[_0x05ed('0x49')](_0x2af65c[_0x05ed('0x31')],_0x2af65c[_0x05ed('0x33')]);_0x230e7f['attributes']=_[_0x05ed('0x49')](_0x2af65c[_0x05ed('0x31')],qs[_0x05ed('0x36')](_0x2effa6[_0x05ed('0x33')][_0x05ed('0x36')]));_0x230e7f[_0x05ed('0x35')]=_0x230e7f[_0x05ed('0x35')][_0x05ed('0x37')]?_0x230e7f['attributes']:_0x2af65c[_0x05ed('0x31')];if(!_0x2effa6[_0x05ed('0x33')][_0x05ed('0x5a')]('nolimit')){_0x230e7f['limit']=qs[_0x05ed('0x1d')](_0x2effa6[_0x05ed('0x33')][_0x05ed('0x1d')]);_0x230e7f[_0x05ed('0x1c')]=qs[_0x05ed('0x1c')](_0x2effa6[_0x05ed('0x33')]['offset']);}_0x230e7f[_0x05ed('0x38')]=qs['sort'](_0x2effa6[_0x05ed('0x33')]['sort']);_0x230e7f[_0x05ed('0x3a')]=qs[_0x05ed('0x3b')](_[_0x05ed('0x3c')](_0x2effa6[_0x05ed('0x33')],_0x2af65c['filters']));_0x230e7f[_0x05ed('0x3a')][_0x05ed('0x5b')]=_0x1c3fa1['id'];if(_0x2effa6[_0x05ed('0x33')][_0x05ed('0x3f')]){_0x230e7f[_0x05ed('0x3a')]=_['merge'](_0x230e7f[_0x05ed('0x3a')],{'$or':_[_0x05ed('0x32')](_0x230e7f[_0x05ed('0x35')],function(_0x690a0f){var _0x214b78={};_0x214b78[_0x690a0f]={'$like':'%'+_0x2effa6[_0x05ed('0x33')][_0x05ed('0x3f')]+'%'};return _0x214b78;})});}_0x230e7f=_['merge']({},_0x230e7f,_0x2effa6[_0x05ed('0x40')]);return db['JscriptySessionReport']['count']({'where':_0x230e7f['where']})[_0x05ed('0x26')](function(_0x30e7d6){_0x4c58cc[_0x05ed('0x1f')]=_0x30e7d6;if(_0x2effa6[_0x05ed('0x33')][_0x05ed('0x42')]){_0x230e7f['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x05ed('0x44')](_0x230e7f);})[_0x05ed('0x26')](function(_0x31ba8f){_0x4c58cc[_0x05ed('0x45')]=_0x31ba8f;return _0x4c58cc;});}})[_0x05ed('0x26')](respondWithFilteredResult(_0x28835c,_0x230e7f))[_0x05ed('0x46')](handleError(_0x28835c,null));};exports[_0x05ed('0x5c')]=function(_0x1e1f96,_0x491974,_0x5f32f2){var _0x174c04={'raw':!![],'where':{}};var _0x1af921={};var _0x375749={'count':0x0,'rows':[]};return db[_0x05ed('0x41')][_0x05ed('0x58')]({'where':{'id':_0x1e1f96['params']['id']}})[_0x05ed('0x26')](handleEntityNotFound(_0x491974,null))[_0x05ed('0x26')](function(_0x4f4c9a){if(_0x4f4c9a){_0x1af921['model']=_['keys'](db['JscriptyAnswerReport'][_0x05ed('0x2d')]);_0x1af921[_0x05ed('0x33')]=_[_0x05ed('0x34')](_0x1e1f96[_0x05ed('0x33')]);_0x1af921[_0x05ed('0x3b')]=_[_0x05ed('0x49')](_0x1af921[_0x05ed('0x31')],_0x1af921[_0x05ed('0x33')]);_0x174c04[_0x05ed('0x35')]=_[_0x05ed('0x49')](_0x1af921['model'],qs[_0x05ed('0x36')](_0x1e1f96[_0x05ed('0x33')][_0x05ed('0x36')]));_0x174c04[_0x05ed('0x35')]=_0x174c04['attributes']['length']?_0x174c04[_0x05ed('0x35')]:_0x1af921[_0x05ed('0x31')];if(!_0x1e1f96['query'][_0x05ed('0x5a')](_0x05ed('0x5d'))){_0x174c04[_0x05ed('0x1d')]=qs[_0x05ed('0x1d')](_0x1e1f96[_0x05ed('0x33')][_0x05ed('0x1d')]);_0x174c04[_0x05ed('0x1c')]=qs[_0x05ed('0x1c')](_0x1e1f96[_0x05ed('0x33')]['offset']);}_0x174c04['order']=qs[_0x05ed('0x39')](_0x1e1f96[_0x05ed('0x33')][_0x05ed('0x39')]);_0x174c04['where']=qs['filters'](_[_0x05ed('0x3c')](_0x1e1f96[_0x05ed('0x33')],_0x1af921[_0x05ed('0x3b')]));_0x174c04['where'][_0x05ed('0x5b')]=_0x4f4c9a['id'];if(_0x1e1f96[_0x05ed('0x33')][_0x05ed('0x3f')]){_0x174c04[_0x05ed('0x3a')]=_[_0x05ed('0x3d')](_0x174c04['where'],{'$or':_[_0x05ed('0x32')](_0x174c04[_0x05ed('0x35')],function(_0x3addd5){var _0x32f8d2={};_0x32f8d2[_0x3addd5]={'$like':'%'+_0x1e1f96[_0x05ed('0x33')][_0x05ed('0x3f')]+'%'};return _0x32f8d2;})});}_0x174c04=_[_0x05ed('0x3d')]({},_0x174c04,_0x1e1f96[_0x05ed('0x40')]);return db[_0x05ed('0x5e')][_0x05ed('0x1f')]({'where':_0x174c04[_0x05ed('0x3a')]})['then'](function(_0x24f21c){_0x375749[_0x05ed('0x1f')]=_0x24f21c;if(_0x1e1f96[_0x05ed('0x33')][_0x05ed('0x42')]){_0x174c04[_0x05ed('0x43')]=[{'all':!![]}];}return db[_0x05ed('0x5e')][_0x05ed('0x44')](_0x174c04);})[_0x05ed('0x26')](function(_0x194bc9){_0x375749[_0x05ed('0x45')]=_0x194bc9;return _0x375749;});}})[_0x05ed('0x26')](respondWithFilteredResult(_0x491974,_0x174c04))[_0x05ed('0x46')](handleError(_0x491974,null));};function char(_0x2895bb){return _0x05ed('0x5f')===typeof _0x2895bb?String[_0x05ed('0x60')]['apply'](null,arguments):_0x2895bb;}function needsEncapsulation(_0x7833f7){return!!_0x7833f7&&(_0x7833f7['toString']()[_0x05ed('0x61')](char(0xd))>=0x0||_0x7833f7[_0x05ed('0x62')]()[_0x05ed('0x61')](char(0xa))>=0x0||_0x7833f7[_0x05ed('0x62')]()[_0x05ed('0x61')](char(0x2c))>=0x0||_0x7833f7[_0x05ed('0x62')]()[_0x05ed('0x61')](char(0x22))>=0x0);}function encapsulate(_0x5833dd){var _0x21e98c=char(0x22),_0x4c861e='\x5c'+char(0x22),_0x45206a=_0x5833dd[_0x05ed('0x62')]()[_0x05ed('0x63')](new RegExp(_0x21e98c,'g'),_0x4c861e);return _0x21e98c+_0x45206a+_0x21e98c;}exports[_0x05ed('0x64')]=function(_0x124f43,_0x449773,_0x40f908){var _0x55219d,_0x51995b;var _0x3c810b={'where':{'ProjectId':_0x124f43[_0x05ed('0x48')]['id']}};if(_0x124f43['query']['startTime']){_0x3c810b[_0x05ed('0x3a')]['starttime']=JSON[_0x05ed('0x65')](_0x124f43['query'][_0x05ed('0x66')]);}return db[_0x05ed('0x59')]['findAll'](_0x3c810b)[_0x05ed('0x26')](handleEntityNotFound(_0x449773,null))['then'](function(_0x4d395c){if(_0x4d395c){_0x55219d=_0x4d395c;return db[_0x05ed('0x67')][_0x05ed('0x44')]({'where':{'SessionId':{'$in':_[_0x05ed('0x32')](_0x55219d,'id')},'ProjectId':_0x124f43[_0x05ed('0x48')]['id']},'order':_0x05ed('0x68')});}})[_0x05ed('0x26')](handleEntityNotFound(_0x449773,null))[_0x05ed('0x26')](function(_0x1f3c36){if(_0x1f3c36){_0x51995b=_0x1f3c36;var _0x17cf11={};for(var _0x29d59a=0x0,_0x23ce3d=_0x51995b[_0x05ed('0x37')];_0x29d59a<_0x23ce3d;_0x29d59a++){if(!_0x17cf11[_0x05ed('0x5a')](_0x51995b[_0x29d59a]['questionId'])){_0x17cf11[_0x51995b[_0x29d59a]['questionId']]=needsEncapsulation(_0x51995b[_0x29d59a][_0x05ed('0x69')])?encapsulate(_0x51995b[_0x29d59a][_0x05ed('0x69')]):_0x51995b[_0x29d59a]['question'];}}var _0x1b56e0=[],_0x51eb83={};for(var _0x186ee0=0x0,_0x58a64a=_0x55219d[_0x05ed('0x37')];_0x186ee0<_0x58a64a;_0x186ee0++){_0x51eb83={'ProjectId':_0x124f43['params']['id'],'SessionId':_0x55219d[_0x186ee0]['id'],'StartTime':moment(_0x55219d[_0x186ee0][_0x05ed('0x6a')])[_0x05ed('0x6b')](_0x05ed('0x6c'))};for(var _0x455223=0x0,_0x3be5ab=_0x51995b['length'];_0x455223<_0x3be5ab;_0x455223++){if(_0x51995b[_0x455223][_0x05ed('0x6d')]==_0x55219d[_0x186ee0]['id']&&_0x17cf11[_0x05ed('0x5a')](_0x51995b[_0x455223][_0x05ed('0x6e')])){_0x51eb83[_0x17cf11[_0x51995b[_0x455223]['questionId']]]=_0x51995b[_0x455223][_0x05ed('0x6f')];}}for(var _0x1d4769 in _0x17cf11){if(!_0x51eb83[_0x05ed('0x5a')](_0x17cf11[_0x1d4769])){_0x51eb83[_0x17cf11[_0x1d4769]]=null;}}_0x1b56e0[_0x05ed('0x70')](_0x51eb83);}return _0x1b56e0;}})[_0x05ed('0x26')](function(_0x489dc9){if(!_['isEmpty'](_0x489dc9)){var _0x118e41=toCsv(_0x489dc9);var _0x361f9f=Date[_0x05ed('0x71')]();fs['writeFileSync'](util[_0x05ed('0x6b')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x124f43[_0x05ed('0x48')]['id'],_0x361f9f),_0x118e41);_0x449773[_0x05ed('0x72')](_0x05ed('0x73'),_0x05ed('0x74')+util[_0x05ed('0x6b')](_0x05ed('0x75'),_0x124f43[_0x05ed('0x48')]['id'],_0x361f9f));_0x449773[_0x05ed('0x72')]('Content-type',_0x05ed('0x76'));return _0x449773[_0x05ed('0x77')](util[_0x05ed('0x6b')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x124f43[_0x05ed('0x48')]['id'],_0x361f9f));}else{return _0x449773[_0x05ed('0x78')](0xcc);}})[_0x05ed('0x46')](handleError(_0x449773,null));};
\ No newline at end of file
index db914ce..aac1a57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ff=['./jscriptyProject.attributes','exports','JscriptyProject','lodash','util','api','path','../../config/environment'];(function(_0x2c22aa,_0x46163d){var _0x2c40cf=function(_0x109946){while(--_0x109946){_0x2c22aa['push'](_0x2c22aa['shift']());}};_0x2c40cf(++_0x46163d);}(_0xb2ff,0x123));var _0xfb2f=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xb2ff[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xfb2f('0x0'));var util=require(_0xfb2f('0x1'));var logger=require('../../config/logger')(_0xfb2f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xfb2f('0x3'));var rimraf=require('rimraf');var config=require(_0xfb2f('0x4'));var attributes=require(_0xfb2f('0x5'));module[_0xfb2f('0x6')]=function(_0x1d3416,_0x542ce7){return _0x1d3416['define'](_0xfb2f('0x7'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcddd=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes','exports','define','jscripty_projects','lodash','util','../../config/logger'];(function(_0x4d41ea,_0x571df1){var _0x19da3c=function(_0xe64fdd){while(--_0xe64fdd){_0x4d41ea['push'](_0x4d41ea['shift']());}};_0x19da3c(++_0x571df1);}(_0xcddd,0x1a1));var _0xdcdd=function(_0x3b5b64,_0x2a48bf){_0x3b5b64=_0x3b5b64-0x0;var _0x1d8641=_0xcddd[_0x3b5b64];return _0x1d8641;};'use strict';var _=require(_0xdcdd('0x0'));var util=require(_0xdcdd('0x1'));var logger=require(_0xdcdd('0x2'))(_0xdcdd('0x3'));var moment=require(_0xdcdd('0x4'));var BPromise=require(_0xdcdd('0x5'));var rp=require(_0xdcdd('0x6'));var fs=require('fs');var path=require(_0xdcdd('0x7'));var rimraf=require(_0xdcdd('0x8'));var config=require(_0xdcdd('0x9'));var attributes=require(_0xdcdd('0xa'));module[_0xdcdd('0xb')]=function(_0x59f64b,_0x171c54){return _0x59f64b[_0xdcdd('0xc')]('JscriptyProject',attributes,{'tableName':_0xdcdd('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8c30f4d..f184bc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','info','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','error','JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird'];(function(_0x1f8cbc,_0x404fad){var _0x26e5d6=function(_0x3777bf){while(--_0x3777bf){_0x1f8cbc['push'](_0x1f8cbc['shift']());}};_0x26e5d6(++_0x404fad);}(_0xaa88,0x137));var _0x8aa8=function(_0x1168a1,_0xa0d8c9){_0x1168a1=_0x1168a1-0x0;var _0xcc5ad8=_0xaa88[_0x1168a1];return _0xcc5ad8;};'use strict';var _=require(_0x8aa8('0x0'));var util=require(_0x8aa8('0x1'));var moment=require(_0x8aa8('0x2'));var BPromise=require(_0x8aa8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8aa8('0x4'));var db=require(_0x8aa8('0x5'))['db'];var utils=require(_0x8aa8('0x6'));var logger=require(_0x8aa8('0x7'))(_0x8aa8('0x8'));var config=require(_0x8aa8('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8aa8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5264ff,_0x449d2d,_0x1ed84d){return new BPromise(function(_0x27c08d,_0x40826f){return client['request'](_0x5264ff,_0x1ed84d)[_0x8aa8('0xb')](function(_0x2d974c){logger[_0x8aa8('0xc')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0x8aa8('0xd'));logger[_0x8aa8('0xe')](_0x8aa8('0xf'),_0x449d2d,_0x8aa8('0xd'),JSON['stringify'](_0x2d974c));if(_0x2d974c[_0x8aa8('0x10')]){if(_0x2d974c[_0x8aa8('0x10')]['code']===0x1f4){logger[_0x8aa8('0x10')](_0x8aa8('0x11'),_0x449d2d,_0x2d974c[_0x8aa8('0x10')]['message']);return _0x40826f(_0x2d974c[_0x8aa8('0x10')][_0x8aa8('0x12')]);}logger[_0x8aa8('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0x2d974c[_0x8aa8('0x10')]['message']);return _0x27c08d(_0x2d974c['error'][_0x8aa8('0x12')]);}else{logger[_0x8aa8('0xc')](_0x8aa8('0x11'),_0x449d2d,_0x8aa8('0xd'));_0x27c08d(_0x2d974c[_0x8aa8('0x13')][_0x8aa8('0x12')]);}})[_0x8aa8('0x14')](function(_0xd59fb8){logger[_0x8aa8('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0xd59fb8);_0x40826f(_0xd59fb8);});});}
\ No newline at end of file
+var _0x0713=['JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\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(_0x2b0bcf,_0x3beb02){var _0x2573da=function(_0x328a98){while(--_0x328a98){_0x2b0bcf['push'](_0x2b0bcf['shift']());}};_0x2573da(++_0x3beb02);}(_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')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('JscriptyProject,\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')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
index 937e566..931991e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f63=['exports','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','index','/describe','describe','isAuthenticated','post','create','put','/:id','update','delete','destroy'];(function(_0x812dcf,_0x12b0ed){var _0x146a71=function(_0x11132d){while(--_0x11132d){_0x812dcf['push'](_0x812dcf['shift']());}};_0x146a71(++_0x12b0ed);}(_0x9f63,0xd2));var _0x39f6=function(_0x946e15,_0x5500c2){_0x946e15=_0x946e15-0x0;var _0x4d1f5a=_0x9f63[_0x946e15];return _0x4d1f5a;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x39f6('0x0'));var express=require(_0x39f6('0x1'));var router=express[_0x39f6('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x39f6('0x3'));var config=require(_0x39f6('0x4'));var controller=require(_0x39f6('0x5'));router[_0x39f6('0x6')]('/',auth['isAuthenticated'](),controller[_0x39f6('0x7')]);router[_0x39f6('0x6')](_0x39f6('0x8'),auth['isAuthenticated'](),controller[_0x39f6('0x9')]);router[_0x39f6('0x6')]('/:id',auth[_0x39f6('0xa')](),controller['show']);router[_0x39f6('0xb')]('/',auth[_0x39f6('0xa')](),controller[_0x39f6('0xc')]);router[_0x39f6('0xd')](_0x39f6('0xe'),auth[_0x39f6('0xa')](),controller[_0x39f6('0xf')]);router[_0x39f6('0x10')](_0x39f6('0xe'),auth[_0x39f6('0xa')](),controller[_0x39f6('0x11')]);module[_0x39f6('0x12')]=router;
\ No newline at end of file
+var _0x2704=['describe','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyQuestionReport.controller','get','isAuthenticated','index'];(function(_0x292cb2,_0x479a0e){var _0x9dec9e=function(_0x2235d8){while(--_0x2235d8){_0x292cb2['push'](_0x292cb2['shift']());}};_0x9dec9e(++_0x479a0e);}(_0x2704,0xf0));var _0x4270=function(_0x3e5608,_0x8b6979){_0x3e5608=_0x3e5608-0x0;var _0x4128d3=_0x2704[_0x3e5608];return _0x4128d3;};'use strict';var multer=require(_0x4270('0x0'));var util=require(_0x4270('0x1'));var path=require(_0x4270('0x2'));var timeout=require(_0x4270('0x3'));var express=require(_0x4270('0x4'));var router=express['Router']();var fs_extra=require(_0x4270('0x5'));var auth=require(_0x4270('0x6'));var interaction=require(_0x4270('0x7'));var config=require('../../config/environment');var controller=require(_0x4270('0x8'));router[_0x4270('0x9')]('/',auth[_0x4270('0xa')](),controller[_0x4270('0xb')]);router['get']('/describe',auth[_0x4270('0xa')](),controller[_0x4270('0xc')]);router[_0x4270('0x9')](_0x4270('0xd'),auth['isAuthenticated'](),controller[_0x4270('0xe')]);router[_0x4270('0xf')]('/',auth[_0x4270('0xa')](),controller[_0x4270('0x10')]);router[_0x4270('0x11')](_0x4270('0xd'),auth[_0x4270('0xa')](),controller['update']);router[_0x4270('0x12')](_0x4270('0xd'),auth['isAuthenticated'](),controller[_0x4270('0x13')]);module[_0x4270('0x14')]=router;
\ No newline at end of file
index 8267586..9806458 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x7a54,0x106));var _0x47a5=function(_0xc2b969,_0x1dcb9f){_0xc2b969=_0xc2b969-0x0;var _0x3c79ac=_0x7a54[_0xc2b969];return _0x3c79ac;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x7a54,0x106));var _0x47a5=function(_0x2dc0ec,_0x351f32){_0x2dc0ec=_0x2dc0ec-0x0;var _0x160f03=_0x7a54[_0x2dc0ec];return _0x160f03;};'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 c74fde8..f1e4d84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79f7=['JscriptyQuestionReport','include','findAll','rows','show','params','includeAll','options','find','create','body','catch','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','to-csv','ejs','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','error','stack','name','map','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','VIRTUAL'];(function(_0x207811,_0x3420a6){var _0x170d56=function(_0x4340b7){while(--_0x4340b7){_0x207811['push'](_0x207811['shift']());}};_0x170d56(++_0x3420a6);}(_0x79f7,0x180));var _0x779f=function(_0x3df7a4,_0x3d8f7c){_0x3df7a4=_0x3df7a4-0x0;var _0x3edd1d=_0x79f7[_0x3df7a4];return _0x3edd1d;};'use strict';var emlformat=require(_0x779f('0x0'));var rimraf=require(_0x779f('0x1'));var zipdir=require(_0x779f('0x2'));var jsonpatch=require(_0x779f('0x3'));var rp=require(_0x779f('0x4'));var moment=require(_0x779f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x779f('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x779f('0x7'));var ejs=require(_0x779f('0x8'));var fs=require('fs');var fs_extra=require(_0x779f('0x9'));var _=require('lodash');var squel=require(_0x779f('0xa'));var crypto=require('crypto');var jsforce=require(_0x779f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x779f('0x7'));var querystring=require(_0x779f('0xc'));var Papa=require(_0x779f('0xd'));var Redis=require(_0x779f('0xe'));var authService=require(_0x779f('0xf'));var qs=require(_0x779f('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x779f('0x11'));var logger=require(_0x779f('0x12'))(_0x779f('0x13'));var utils=require(_0x779f('0x14'));var config=require(_0x779f('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x233129,_0x5a78f9){_0x5a78f9=_0x5a78f9||0xcc;return function(_0x2c441a){if(_0x2c441a){return _0x233129[_0x779f('0x16')](_0x5a78f9);}return _0x233129['status'](_0x5a78f9)[_0x779f('0x17')]();};}function respondWithResult(_0x30166e,_0x4d12b8){_0x4d12b8=_0x4d12b8||0xc8;return function(_0x2fd815){if(_0x2fd815){return _0x30166e[_0x779f('0x18')](_0x4d12b8)[_0x779f('0x19')](_0x2fd815);}};}function respondWithFilteredResult(_0x583178,_0x36db53){return function(_0x1b6d97){if(_0x1b6d97){var _0x2e0915=typeof _0x36db53[_0x779f('0x1a')]===_0x779f('0x1b')&&typeof _0x36db53[_0x779f('0x1c')]==='undefined';var _0x3a82e2=_0x1b6d97[_0x779f('0x1d')];var _0x172f7d=_0x2e0915?0x0:_0x36db53[_0x779f('0x1a')];var _0x5c784e=_0x2e0915?_0x1b6d97[_0x779f('0x1d')]:_0x36db53[_0x779f('0x1a')]+_0x36db53[_0x779f('0x1c')];var _0x529acd;if(_0x5c784e>=_0x3a82e2){_0x5c784e=_0x3a82e2;_0x529acd=0xc8;}else{_0x529acd=0xce;}_0x583178[_0x779f('0x18')](_0x529acd);return _0x583178[_0x779f('0x1e')](_0x779f('0x1f'),_0x172f7d+'-'+_0x5c784e+'/'+_0x3a82e2)[_0x779f('0x19')](_0x1b6d97);}return null;};}function patchUpdates(_0x58c7a3){return function(_0x1c297e){try{jsonpatch[_0x779f('0x20')](_0x1c297e,_0x58c7a3,!![]);}catch(_0x3772b6){return BPromise[_0x779f('0x21')](_0x3772b6);}return _0x1c297e[_0x779f('0x22')]();};}function saveUpdates(_0x1a718f,_0x3bf79b){return function(_0x5012d5){if(_0x5012d5){return _0x5012d5['update'](_0x1a718f)['then'](function(_0x217294){return _0x217294;});}return null;};}function removeEntity(_0x3dfd49,_0x50e486){return function(_0x12549d){if(_0x12549d){return _0x12549d[_0x779f('0x23')]()[_0x779f('0x24')](function(){_0x3dfd49[_0x779f('0x18')](0xcc)[_0x779f('0x17')]();});}};}function handleEntityNotFound(_0x36712d,_0x5ced59){return function(_0x663481){if(!_0x663481){_0x36712d[_0x779f('0x16')](0x194);}return _0x663481;};}function handleError(_0x129f69,_0x2dfb1b){_0x2dfb1b=_0x2dfb1b||0x1f4;return function(_0x47d388){logger[_0x779f('0x25')](_0x47d388[_0x779f('0x26')]);if(_0x47d388[_0x779f('0x27')]){delete _0x47d388[_0x779f('0x27')];}_0x129f69['status'](_0x2dfb1b)['send'](_0x47d388);};}exports['index']=function(_0x399e40,_0x231865){var _0xfe2302={},_0x48615f={},_0x557645={'count':0x0,'rows':[]};var _0x2906e7=_[_0x779f('0x28')](db['JscriptyQuestionReport'][_0x779f('0x29')],function(_0x642c85){return{'name':_0x642c85[_0x779f('0x2a')],'type':_0x642c85[_0x779f('0x2b')][_0x779f('0x2c')]};});_0x48615f['model']=_[_0x779f('0x28')](_0x2906e7,_0x779f('0x27'));_0x48615f[_0x779f('0x2d')]=_[_0x779f('0x2e')](_0x399e40[_0x779f('0x2d')]);_0x48615f['filters']=_[_0x779f('0x2f')](_0x48615f[_0x779f('0x30')],_0x48615f[_0x779f('0x2d')]);_0xfe2302[_0x779f('0x31')]=_['intersection'](_0x48615f[_0x779f('0x30')],qs[_0x779f('0x32')](_0x399e40['query']['fields']));_0xfe2302[_0x779f('0x31')]=_0xfe2302[_0x779f('0x31')][_0x779f('0x33')]?_0xfe2302['attributes']:_0x48615f[_0x779f('0x30')];if(!_0x399e40[_0x779f('0x2d')][_0x779f('0x34')]('nolimit')){_0xfe2302[_0x779f('0x1c')]=qs['limit'](_0x399e40[_0x779f('0x2d')][_0x779f('0x1c')]);_0xfe2302[_0x779f('0x1a')]=qs[_0x779f('0x1a')](_0x399e40[_0x779f('0x2d')][_0x779f('0x1a')]);}_0xfe2302[_0x779f('0x35')]=qs[_0x779f('0x36')](_0x399e40['query'][_0x779f('0x36')]);_0xfe2302[_0x779f('0x37')]=qs[_0x779f('0x38')](_['pick'](_0x399e40['query'],_0x48615f[_0x779f('0x38')]),_0x2906e7);if(_0x399e40['query'][_0x779f('0x39')]){_0xfe2302[_0x779f('0x37')]=_[_0x779f('0x3a')](_0xfe2302[_0x779f('0x37')],{'$or':_[_0x779f('0x28')](_0x2906e7,function(_0x23d64f){if(_0x23d64f[_0x779f('0x2b')]!==_0x779f('0x3b')){var _0x4629ea={};_0x4629ea[_0x23d64f[_0x779f('0x27')]]={'$like':'%'+_0x399e40[_0x779f('0x2d')][_0x779f('0x39')]+'%'};return _0x4629ea;}})});}_0xfe2302=_[_0x779f('0x3a')]({},_0xfe2302,_0x399e40['options']);var _0x426530={'where':_0xfe2302[_0x779f('0x37')]};return db[_0x779f('0x3c')][_0x779f('0x1d')](_0x426530)[_0x779f('0x24')](function(_0x145bdf){_0x557645['count']=_0x145bdf;if(_0x399e40[_0x779f('0x2d')]['includeAll']){_0xfe2302[_0x779f('0x3d')]=[{'all':!![]}];}return db[_0x779f('0x3c')][_0x779f('0x3e')](_0xfe2302);})[_0x779f('0x24')](function(_0x2ec152){_0x557645[_0x779f('0x3f')]=_0x2ec152;return _0x557645;})[_0x779f('0x24')](respondWithFilteredResult(_0x231865,_0xfe2302))['catch'](handleError(_0x231865,null));};exports[_0x779f('0x40')]=function(_0x4560a9,_0x2ec249){var _0x3e3471={'raw':!![],'where':{'id':_0x4560a9[_0x779f('0x41')]['id']}},_0x121903={};_0x121903[_0x779f('0x30')]=_['keys'](db['JscriptyQuestionReport'][_0x779f('0x29')]);_0x121903[_0x779f('0x2d')]=_['keys'](_0x4560a9[_0x779f('0x2d')]);_0x121903[_0x779f('0x38')]=_['intersection'](_0x121903['model'],_0x121903[_0x779f('0x2d')]);_0x3e3471['attributes']=_[_0x779f('0x2f')](_0x121903['model'],qs['fields'](_0x4560a9[_0x779f('0x2d')]['fields']));_0x3e3471['attributes']=_0x3e3471[_0x779f('0x31')][_0x779f('0x33')]?_0x3e3471[_0x779f('0x31')]:_0x121903[_0x779f('0x30')];if(_0x4560a9[_0x779f('0x2d')][_0x779f('0x42')]){_0x3e3471[_0x779f('0x3d')]=[{'all':!![]}];}_0x3e3471=_['merge']({},_0x3e3471,_0x4560a9[_0x779f('0x43')]);return db['JscriptyQuestionReport'][_0x779f('0x44')](_0x3e3471)[_0x779f('0x24')](handleEntityNotFound(_0x2ec249,null))['then'](respondWithResult(_0x2ec249,null))['catch'](handleError(_0x2ec249,null));};exports['create']=function(_0x45731c,_0x27a1e4){return db[_0x779f('0x3c')][_0x779f('0x45')](_0x45731c[_0x779f('0x46')],{})[_0x779f('0x24')](respondWithResult(_0x27a1e4,0xc9))[_0x779f('0x47')](handleError(_0x27a1e4,null));};exports[_0x779f('0x48')]=function(_0x4fcc88,_0x5524db){if(_0x4fcc88[_0x779f('0x46')]['id']){delete _0x4fcc88[_0x779f('0x46')]['id'];}return db[_0x779f('0x3c')][_0x779f('0x44')]({'where':{'id':_0x4fcc88['params']['id']}})[_0x779f('0x24')](handleEntityNotFound(_0x5524db,null))['then'](saveUpdates(_0x4fcc88['body'],null))['then'](respondWithResult(_0x5524db,null))[_0x779f('0x47')](handleError(_0x5524db,null));};exports['destroy']=function(_0x4e986f,_0x550ace){return db[_0x779f('0x3c')][_0x779f('0x44')]({'where':{'id':_0x4e986f[_0x779f('0x41')]['id']}})[_0x779f('0x24')](handleEntityNotFound(_0x550ace,null))[_0x779f('0x24')](removeEntity(_0x550ace,null))[_0x779f('0x47')](handleError(_0x550ace,null));};exports['describe']=function(_0x398e78,_0x8b04b1){return db[_0x779f('0x3c')][_0x779f('0x49')]()[_0x779f('0x24')](respondWithResult(_0x8b04b1,null))[_0x779f('0x47')](handleError(_0x8b04b1,null));};
\ No newline at end of file
+var _0xfb21=['JscriptyQuestionReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','filter','merge','VIRTUAL','options','then','findAll','rows','show','params','length','includeAll','find','catch','body','describe','eml-format','rimraf','request-promise','moment','mustache','util','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','reject','update','destroy','error','stack','name','send','index','map'];(function(_0x24332,_0xbab807){var _0x4827c4=function(_0x259a34){while(--_0x259a34){_0x24332['push'](_0x24332['shift']());}};_0x4827c4(++_0xbab807);}(_0xfb21,0xeb));var _0x1fb2=function(_0x12ac8b,_0x439c9e){_0x12ac8b=_0x12ac8b-0x0;var _0x20e0a2=_0xfb21[_0x12ac8b];return _0x20e0a2;};'use strict';var emlformat=require(_0x1fb2('0x0'));var rimraf=require(_0x1fb2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1fb2('0x2'));var moment=require(_0x1fb2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x1fb2('0x4'));var util=require(_0x1fb2('0x5'));var path=require(_0x1fb2('0x6'));var sox=require('sox');var csv=require(_0x1fb2('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1fb2('0x8'));var _=require(_0x1fb2('0x9'));var squel=require('squel');var crypto=require(_0x1fb2('0xa'));var jsforce=require(_0x1fb2('0xb'));var deskjs=require(_0x1fb2('0xc'));var toCsv=require(_0x1fb2('0x7'));var querystring=require('querystring');var Papa=require(_0x1fb2('0xd'));var Redis=require(_0x1fb2('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x1fb2('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1fb2('0x10'));var utils=require(_0x1fb2('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x1fb2('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2af428,_0x894aee){_0x894aee=_0x894aee||0xcc;return function(_0x497a38){if(_0x497a38){return _0x2af428[_0x1fb2('0x13')](_0x894aee);}return _0x2af428[_0x1fb2('0x14')](_0x894aee)[_0x1fb2('0x15')]();};}function respondWithResult(_0x7dcdb1,_0x3b6d81){_0x3b6d81=_0x3b6d81||0xc8;return function(_0x5da8d3){if(_0x5da8d3){return _0x7dcdb1[_0x1fb2('0x14')](_0x3b6d81)[_0x1fb2('0x16')](_0x5da8d3);}};}function respondWithFilteredResult(_0x358213,_0x563152){return function(_0x3d391a){if(_0x3d391a){var _0x23576a=typeof _0x563152[_0x1fb2('0x17')]===_0x1fb2('0x18')&&typeof _0x563152['limit']===_0x1fb2('0x18');var _0x12b7bb=_0x3d391a[_0x1fb2('0x19')];var _0x6a1152=_0x23576a?0x0:_0x563152[_0x1fb2('0x17')];var _0x4fd194=_0x23576a?_0x3d391a[_0x1fb2('0x19')]:_0x563152[_0x1fb2('0x17')]+_0x563152[_0x1fb2('0x1a')];var _0xbd7c14;if(_0x4fd194>=_0x12b7bb){_0x4fd194=_0x12b7bb;_0xbd7c14=0xc8;}else{_0xbd7c14=0xce;}_0x358213[_0x1fb2('0x14')](_0xbd7c14);return _0x358213['set'](_0x1fb2('0x1b'),_0x6a1152+'-'+_0x4fd194+'/'+_0x12b7bb)[_0x1fb2('0x16')](_0x3d391a);}return null;};}function patchUpdates(_0x27d54f){return function(_0x17027b){try{jsonpatch['apply'](_0x17027b,_0x27d54f,!![]);}catch(_0x15461f){return BPromise[_0x1fb2('0x1c')](_0x15461f);}return _0x17027b['save']();};}function saveUpdates(_0x11cb15,_0x51af50){return function(_0x32ea4b){if(_0x32ea4b){return _0x32ea4b[_0x1fb2('0x1d')](_0x11cb15)['then'](function(_0x1fae22){return _0x1fae22;});}return null;};}function removeEntity(_0x229d23,_0xa93147){return function(_0x318d1b){if(_0x318d1b){return _0x318d1b[_0x1fb2('0x1e')]()['then'](function(){_0x229d23[_0x1fb2('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x19e04d,_0x3e659a){return function(_0x3b145f){if(!_0x3b145f){_0x19e04d[_0x1fb2('0x13')](0x194);}return _0x3b145f;};}function handleError(_0x8f2a24,_0x1c9df1){_0x1c9df1=_0x1c9df1||0x1f4;return function(_0x5af436){logger[_0x1fb2('0x1f')](_0x5af436[_0x1fb2('0x20')]);if(_0x5af436[_0x1fb2('0x21')]){delete _0x5af436[_0x1fb2('0x21')];}_0x8f2a24['status'](_0x1c9df1)[_0x1fb2('0x22')](_0x5af436);};}exports[_0x1fb2('0x23')]=function(_0x44b82d,_0x4d7fde){var _0x33ebdd={},_0x56d139={},_0xe4b267={'count':0x0,'rows':[]};var _0x181d9e=_[_0x1fb2('0x24')](db[_0x1fb2('0x25')][_0x1fb2('0x26')],function(_0xc2a70f){return{'name':_0xc2a70f[_0x1fb2('0x27')],'type':_0xc2a70f[_0x1fb2('0x28')][_0x1fb2('0x29')]};});_0x56d139[_0x1fb2('0x2a')]=_['map'](_0x181d9e,_0x1fb2('0x21'));_0x56d139[_0x1fb2('0x2b')]=_[_0x1fb2('0x2c')](_0x44b82d[_0x1fb2('0x2b')]);_0x56d139[_0x1fb2('0x2d')]=_[_0x1fb2('0x2e')](_0x56d139['model'],_0x56d139[_0x1fb2('0x2b')]);_0x33ebdd[_0x1fb2('0x2f')]=_['intersection'](_0x56d139[_0x1fb2('0x2a')],qs[_0x1fb2('0x30')](_0x44b82d[_0x1fb2('0x2b')][_0x1fb2('0x30')]));_0x33ebdd['attributes']=_0x33ebdd[_0x1fb2('0x2f')]['length']?_0x33ebdd[_0x1fb2('0x2f')]:_0x56d139[_0x1fb2('0x2a')];if(!_0x44b82d[_0x1fb2('0x2b')]['hasOwnProperty'](_0x1fb2('0x31'))){_0x33ebdd['limit']=qs[_0x1fb2('0x1a')](_0x44b82d['query'][_0x1fb2('0x1a')]);_0x33ebdd[_0x1fb2('0x17')]=qs['offset'](_0x44b82d[_0x1fb2('0x2b')][_0x1fb2('0x17')]);}_0x33ebdd[_0x1fb2('0x32')]=qs['sort'](_0x44b82d[_0x1fb2('0x2b')][_0x1fb2('0x33')]);_0x33ebdd[_0x1fb2('0x34')]=qs[_0x1fb2('0x2d')](_['pick'](_0x44b82d[_0x1fb2('0x2b')],_0x56d139[_0x1fb2('0x2d')]),_0x181d9e);if(_0x44b82d['query'][_0x1fb2('0x35')]){_0x33ebdd[_0x1fb2('0x34')]=_[_0x1fb2('0x36')](_0x33ebdd[_0x1fb2('0x34')],{'$or':_[_0x1fb2('0x24')](_0x181d9e,function(_0x22c2f1){if(_0x22c2f1[_0x1fb2('0x28')]!==_0x1fb2('0x37')){var _0xcb8268={};_0xcb8268[_0x22c2f1['name']]={'$like':'%'+_0x44b82d[_0x1fb2('0x2b')][_0x1fb2('0x35')]+'%'};return _0xcb8268;}})});}_0x33ebdd=_[_0x1fb2('0x36')]({},_0x33ebdd,_0x44b82d[_0x1fb2('0x38')]);var _0x320623={'where':_0x33ebdd[_0x1fb2('0x34')]};return db['JscriptyQuestionReport'][_0x1fb2('0x19')](_0x320623)[_0x1fb2('0x39')](function(_0x12baba){_0xe4b267[_0x1fb2('0x19')]=_0x12baba;if(_0x44b82d[_0x1fb2('0x2b')]['includeAll']){_0x33ebdd['include']=[{'all':!![]}];}return db[_0x1fb2('0x25')][_0x1fb2('0x3a')](_0x33ebdd);})['then'](function(_0x25db87){_0xe4b267[_0x1fb2('0x3b')]=_0x25db87;return _0xe4b267;})[_0x1fb2('0x39')](respondWithFilteredResult(_0x4d7fde,_0x33ebdd))['catch'](handleError(_0x4d7fde,null));};exports[_0x1fb2('0x3c')]=function(_0x2ce153,_0x193540){var _0x240c80={'raw':!![],'where':{'id':_0x2ce153[_0x1fb2('0x3d')]['id']}},_0x4625cb={};_0x4625cb['model']=_['keys'](db[_0x1fb2('0x25')]['rawAttributes']);_0x4625cb['query']=_[_0x1fb2('0x2c')](_0x2ce153[_0x1fb2('0x2b')]);_0x4625cb[_0x1fb2('0x2d')]=_[_0x1fb2('0x2e')](_0x4625cb['model'],_0x4625cb['query']);_0x240c80[_0x1fb2('0x2f')]=_[_0x1fb2('0x2e')](_0x4625cb[_0x1fb2('0x2a')],qs['fields'](_0x2ce153['query']['fields']));_0x240c80[_0x1fb2('0x2f')]=_0x240c80[_0x1fb2('0x2f')][_0x1fb2('0x3e')]?_0x240c80[_0x1fb2('0x2f')]:_0x4625cb[_0x1fb2('0x2a')];if(_0x2ce153[_0x1fb2('0x2b')][_0x1fb2('0x3f')]){_0x240c80['include']=[{'all':!![]}];}_0x240c80=_[_0x1fb2('0x36')]({},_0x240c80,_0x2ce153[_0x1fb2('0x38')]);return db[_0x1fb2('0x25')][_0x1fb2('0x40')](_0x240c80)[_0x1fb2('0x39')](handleEntityNotFound(_0x193540,null))[_0x1fb2('0x39')](respondWithResult(_0x193540,null))['catch'](handleError(_0x193540,null));};exports['create']=function(_0x528546,_0x300b87){return db[_0x1fb2('0x25')]['create'](_0x528546['body'],{})['then'](respondWithResult(_0x300b87,0xc9))[_0x1fb2('0x41')](handleError(_0x300b87,null));};exports['update']=function(_0x2154e0,_0x53fb72){if(_0x2154e0[_0x1fb2('0x42')]['id']){delete _0x2154e0[_0x1fb2('0x42')]['id'];}return db['JscriptyQuestionReport'][_0x1fb2('0x40')]({'where':{'id':_0x2154e0[_0x1fb2('0x3d')]['id']}})[_0x1fb2('0x39')](handleEntityNotFound(_0x53fb72,null))[_0x1fb2('0x39')](saveUpdates(_0x2154e0['body'],null))[_0x1fb2('0x39')](respondWithResult(_0x53fb72,null))[_0x1fb2('0x41')](handleError(_0x53fb72,null));};exports[_0x1fb2('0x1e')]=function(_0x4eed2c,_0x150548){return db[_0x1fb2('0x25')][_0x1fb2('0x40')]({'where':{'id':_0x4eed2c[_0x1fb2('0x3d')]['id']}})[_0x1fb2('0x39')](handleEntityNotFound(_0x150548,null))[_0x1fb2('0x39')](removeEntity(_0x150548,null))[_0x1fb2('0x41')](handleError(_0x150548,null));};exports[_0x1fb2('0x43')]=function(_0x368f13,_0x26cb28){return db['JscriptyQuestionReport'][_0x1fb2('0x43')]()['then'](respondWithResult(_0x26cb28,null))['catch'](handleError(_0x26cb28,null));};
\ No newline at end of file
index 6383c05..5d90572 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb9a=['bluebird','request-promise','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','report_jscripty_questions','util','../../config/logger','moment'];(function(_0x7d30b0,_0x593dce){var _0x253771=function(_0x2c0537){while(--_0x2c0537){_0x7d30b0['push'](_0x7d30b0['shift']());}};_0x253771(++_0x593dce);}(_0xdb9a,0x173));var _0xadb9=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xdb9a[_0x5b644e];return _0x49c6bf;};'use strict';var _=require('lodash');var util=require(_0xadb9('0x0'));var logger=require(_0xadb9('0x1'))('api');var moment=require(_0xadb9('0x2'));var BPromise=require(_0xadb9('0x3'));var rp=require(_0xadb9('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xadb9('0x5'));var config=require(_0xadb9('0x6'));var attributes=require(_0xadb9('0x7'));module[_0xadb9('0x8')]=function(_0x1063e5,_0x7f3118){return _0x1063e5[_0xadb9('0x9')]('JscriptyQuestionReport',attributes,{'tableName':_0xadb9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf32a=['rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','report_jscripty_questions','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2bf21e,_0x297ef3){var _0x754813=function(_0x28ef47){while(--_0x28ef47){_0x2bf21e['push'](_0x2bf21e['shift']());}};_0x754813(++_0x297ef3);}(_0xf32a,0x1a6));var _0xaf32=function(_0x10ac84,_0x35a677){_0x10ac84=_0x10ac84-0x0;var _0x2abe56=_0xf32a[_0x10ac84];return _0x2abe56;};'use strict';var _=require(_0xaf32('0x0'));var util=require(_0xaf32('0x1'));var logger=require(_0xaf32('0x2'))(_0xaf32('0x3'));var moment=require(_0xaf32('0x4'));var BPromise=require(_0xaf32('0x5'));var rp=require(_0xaf32('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaf32('0x7'));var config=require(_0xaf32('0x8'));var attributes=require(_0xaf32('0x9'));module[_0xaf32('0xa')]=function(_0x2821d9,_0x1680d4){return _0x2821d9[_0xaf32('0xb')]('JscriptyQuestionReport',attributes,{'tableName':_0xaf32('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ddadc71..791f21e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x981d=['stringify','error','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','rpc','http','request','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s'];(function(_0x2b8807,_0xf92c50){var _0x26493f=function(_0x473062){while(--_0x473062){_0x2b8807['push'](_0x2b8807['shift']());}};_0x26493f(++_0xf92c50);}(_0x981d,0x137));var _0xd981=function(_0x321721,_0x44f31a){_0x321721=_0x321721-0x0;var _0xb72892=_0x981d[_0x321721];return _0xb72892;};'use strict';var _=require(_0xd981('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd981('0x1'));var rs=require(_0xd981('0x2'));var fs=require('fs');var Redis=require(_0xd981('0x3'));var db=require(_0xd981('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd981('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xd981('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2a3f43,_0x42b549,_0x329b4f){return new BPromise(function(_0x2f9d6c,_0x148a3d){return client[_0xd981('0x7')](_0x2a3f43,_0x329b4f)['then'](function(_0x1aa160){logger[_0xd981('0x8')](_0xd981('0x9'),_0x42b549,_0xd981('0xa'));logger[_0xd981('0xb')](_0xd981('0xc'),_0x42b549,_0xd981('0xa'),JSON[_0xd981('0xd')](_0x1aa160));if(_0x1aa160[_0xd981('0xe')]){if(_0x1aa160['error']['code']===0x1f4){logger[_0xd981('0xe')](_0xd981('0x9'),_0x42b549,_0x1aa160[_0xd981('0xe')]['message']);return _0x148a3d(_0x1aa160['error']['message']);}logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x42b549,_0x1aa160[_0xd981('0xe')]['message']);return _0x2f9d6c(_0x1aa160[_0xd981('0xe')][_0xd981('0xf')]);}else{logger[_0xd981('0x8')](_0xd981('0x9'),_0x42b549,'request\x20sent');_0x2f9d6c(_0x1aa160[_0xd981('0x10')]['message']);}})[_0xd981('0x11')](function(_0xbaccd8){logger[_0xd981('0xe')](_0xd981('0x9'),_0x42b549,_0xbaccd8);_0x148a3d(_0xbaccd8);});});}
\ No newline at end of file
+var _0x3c1f=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','jayson/promise','http','request','then','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash'];(function(_0x41f882,_0x360760){var _0x402761=function(_0x325158){while(--_0x325158){_0x41f882['push'](_0x41f882['shift']());}};_0x402761(++_0x360760);}(_0x3c1f,0x1e2));var _0xf3c1=function(_0x29dd47,_0x2a6524){_0x29dd47=_0x29dd47-0x0;var _0x38053f=_0x3c1f[_0x29dd47];return _0x38053f;};'use strict';var _=require(_0xf3c1('0x0'));var util=require(_0xf3c1('0x1'));var moment=require(_0xf3c1('0x2'));var BPromise=require(_0xf3c1('0x3'));var rs=require(_0xf3c1('0x4'));var fs=require('fs');var Redis=require(_0xf3c1('0x5'));var db=require(_0xf3c1('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xf3c1('0x7'));var client=jayson['client'][_0xf3c1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x342c05,_0x1bc33e,_0x3a116d){return new BPromise(function(_0x3d36aa,_0x249296){return client[_0xf3c1('0x9')](_0x342c05,_0x3a116d)[_0xf3c1('0xa')](function(_0x2671ce){logger['info'](_0xf3c1('0xb'),_0x1bc33e,_0xf3c1('0xc'));logger[_0xf3c1('0xd')](_0xf3c1('0xe'),_0x1bc33e,_0xf3c1('0xc'),JSON[_0xf3c1('0xf')](_0x2671ce));if(_0x2671ce[_0xf3c1('0x10')]){if(_0x2671ce[_0xf3c1('0x10')][_0xf3c1('0x11')]===0x1f4){logger[_0xf3c1('0x10')](_0xf3c1('0xb'),_0x1bc33e,_0x2671ce[_0xf3c1('0x10')][_0xf3c1('0x12')]);return _0x249296(_0x2671ce[_0xf3c1('0x10')]['message']);}logger[_0xf3c1('0x10')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x1bc33e,_0x2671ce['error']['message']);return _0x3d36aa(_0x2671ce[_0xf3c1('0x10')]['message']);}else{logger[_0xf3c1('0x13')](_0xf3c1('0xb'),_0x1bc33e,_0xf3c1('0xc'));_0x3d36aa(_0x2671ce[_0xf3c1('0x14')][_0xf3c1('0x12')]);}})['catch'](function(_0x174e4b){logger[_0xf3c1('0x10')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x1bc33e,_0x174e4b);_0x249296(_0x174e4b);});});}
\ No newline at end of file
index f16a357..bb1eaa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3336=['show','/:id/questions','getQuestions','post','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3336,0x133));var _0x6333=function(_0x409deb,_0x2b731){_0x409deb=_0x409deb-0x0;var _0x15a4f7=_0x3336[_0x409deb];return _0x15a4f7;};'use strict';var multer=require(_0x6333('0x0'));var util=require(_0x6333('0x1'));var path=require(_0x6333('0x2'));var timeout=require(_0x6333('0x3'));var express=require(_0x6333('0x4'));var router=express[_0x6333('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6333('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6333('0x7'));var controller=require(_0x6333('0x8'));router[_0x6333('0x9')]('/',auth[_0x6333('0xa')](),controller[_0x6333('0xb')]);router[_0x6333('0x9')](_0x6333('0xc'),auth[_0x6333('0xa')](),controller[_0x6333('0xd')]);router[_0x6333('0x9')](_0x6333('0xe'),auth['isAuthenticated'](),controller[_0x6333('0xf')]);router[_0x6333('0x9')](_0x6333('0x10'),auth['isAuthenticated'](),controller[_0x6333('0x11')]);router[_0x6333('0x12')]('/',auth[_0x6333('0xa')](),controller['create']);router[_0x6333('0x13')](_0x6333('0xe'),auth[_0x6333('0xa')](),controller[_0x6333('0x14')]);router[_0x6333('0x15')](_0x6333('0xe'),auth[_0x6333('0xa')](),controller[_0x6333('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xabc1=['fs-extra','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','index','isAuthenticated','describe','show','/:id/questions','getQuestions','create','delete','destroy','exports','multer','util','path','connect-timeout','Router'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0xabc1,0xeb));var _0x1abc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xabc1[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x1abc('0x0'));var util=require(_0x1abc('0x1'));var path=require(_0x1abc('0x2'));var timeout=require(_0x1abc('0x3'));var express=require('express');var router=express[_0x1abc('0x4')]();var fs_extra=require(_0x1abc('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1abc('0x6'));var config=require(_0x1abc('0x7'));var controller=require(_0x1abc('0x8'));router[_0x1abc('0x9')]('/',auth['isAuthenticated'](),controller[_0x1abc('0xa')]);router[_0x1abc('0x9')]('/describe',auth[_0x1abc('0xb')](),controller[_0x1abc('0xc')]);router[_0x1abc('0x9')]('/:id',auth[_0x1abc('0xb')](),controller[_0x1abc('0xd')]);router[_0x1abc('0x9')](_0x1abc('0xe'),auth['isAuthenticated'](),controller[_0x1abc('0xf')]);router['post']('/',auth[_0x1abc('0xb')](),controller[_0x1abc('0x10')]);router['put']('/:id',auth[_0x1abc('0xb')](),controller['update']);router[_0x1abc('0x11')]('/:id',auth[_0x1abc('0xb')](),controller[_0x1abc('0x12')]);module[_0x1abc('0x13')]=router;
\ No newline at end of file
index bf2d84e..33ddd87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6f9=['endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','sequelize','exports','DATE'];(function(_0x3beabd,_0x34fb49){var _0x43d256=function(_0x12d8ab){while(--_0x12d8ab){_0x3beabd['push'](_0x3beabd['shift']());}};_0x43d256(++_0x34fb49);}(_0xb6f9,0x145));var _0x9b6f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb6f9[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require('moment');var Sequelize=require(_0x9b6f('0x0'));module[_0x9b6f('0x1')]={'starttime':{'type':Sequelize[_0x9b6f('0x2')],'set':function(_0x9c479d){this['setDataValue']('starttime',_0x9c479d);this['setDataValue'](_0x9b6f('0x3'),moment()[_0x9b6f('0x4')](_0x9b6f('0x5')));}},'endtime':{'type':Sequelize[_0x9b6f('0x2')]},'membername':{'type':Sequelize[_0x9b6f('0x6')]},'projectname':{'type':Sequelize[_0x9b6f('0x6')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x9b6f('0x6')]},'calleridname':{'type':Sequelize[_0x9b6f('0x6')]},'calleridnum':{'type':Sequelize[_0x9b6f('0x6')]},'completed':{'type':Sequelize[_0x9b6f('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0x6c03=['STRING','BOOLEAN','moment','sequelize','setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0xef4bd,_0x535a84){var _0x345bf2=function(_0x1781c8){while(--_0x1781c8){_0xef4bd['push'](_0xef4bd['shift']());}};_0x345bf2(++_0x535a84);}(_0x6c03,0x1c4));var _0x36c0=function(_0x5ba6e3,_0x4e7550){_0x5ba6e3=_0x5ba6e3-0x0;var _0x331692=_0x6c03[_0x5ba6e3];return _0x331692;};'use strict';var moment=require(_0x36c0('0x0'));var Sequelize=require(_0x36c0('0x1'));module['exports']={'starttime':{'type':Sequelize['DATE'],'set':function(_0x4f4e07){this[_0x36c0('0x2')](_0x36c0('0x3'),_0x4f4e07);this[_0x36c0('0x2')](_0x36c0('0x4'),moment()[_0x36c0('0x5')](_0x36c0('0x6')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0x36c0('0x7')]},'projectname':{'type':Sequelize[_0x36c0('0x7')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x36c0('0x7')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0x36c0('0x8')],'defaultValue':![]}};
\ No newline at end of file
index a8d637b..901d558 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb2f=['apply','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','query','keys','model','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','JscriptySessionReport','include','findAll','rows','catch','params','attributes','includeAll','find','create','body','update','describe','getQuestions','findOne','JscriptyQuestionReport','pick','SessionId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x2d022f,_0x258843){var _0xaa1339=function(_0x265c06){while(--_0x265c06){_0x2d022f['push'](_0x2d022f['shift']());}};_0xaa1339(++_0x258843);}(_0xdb2f,0x1bd));var _0xfdb2=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xdb2f[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0xfdb2('0x0'));var rimraf=require(_0xfdb2('0x1'));var zipdir=require(_0xfdb2('0x2'));var jsonpatch=require(_0xfdb2('0x3'));var rp=require(_0xfdb2('0x4'));var moment=require(_0xfdb2('0x5'));var BPromise=require(_0xfdb2('0x6'));var Mustache=require(_0xfdb2('0x7'));var util=require(_0xfdb2('0x8'));var path=require(_0xfdb2('0x9'));var sox=require(_0xfdb2('0xa'));var csv=require(_0xfdb2('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfdb2('0xc'));var _=require(_0xfdb2('0xd'));var squel=require('squel');var crypto=require(_0xfdb2('0xe'));var jsforce=require(_0xfdb2('0xf'));var deskjs=require(_0xfdb2('0x10'));var toCsv=require(_0xfdb2('0xb'));var querystring=require('querystring');var Papa=require(_0xfdb2('0x11'));var Redis=require(_0xfdb2('0x12'));var authService=require(_0xfdb2('0x13'));var qs=require(_0xfdb2('0x14'));var as=require(_0xfdb2('0x15'));var hardwareService=require(_0xfdb2('0x16'));var logger=require(_0xfdb2('0x17'))('api');var utils=require(_0xfdb2('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xfdb2('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1417ce,_0x5a9e4b){_0x5a9e4b=_0x5a9e4b||0xcc;return function(_0x21ad1c){if(_0x21ad1c){return _0x1417ce[_0xfdb2('0x1a')](_0x5a9e4b);}return _0x1417ce['status'](_0x5a9e4b)['end']();};}function respondWithResult(_0x14d0a6,_0x5e3e2a){_0x5e3e2a=_0x5e3e2a||0xc8;return function(_0x21b226){if(_0x21b226){return _0x14d0a6[_0xfdb2('0x1b')](_0x5e3e2a)[_0xfdb2('0x1c')](_0x21b226);}};}function respondWithFilteredResult(_0x489fdc,_0x2e5d0e){return function(_0x11ef21){if(_0x11ef21){var _0x3e2bf7=typeof _0x2e5d0e[_0xfdb2('0x1d')]===_0xfdb2('0x1e')&&typeof _0x2e5d0e[_0xfdb2('0x1f')]==='undefined';var _0x49dbe8=_0x11ef21[_0xfdb2('0x20')];var _0x5e64dd=_0x3e2bf7?0x0:_0x2e5d0e[_0xfdb2('0x1d')];var _0x4dff84=_0x3e2bf7?_0x11ef21['count']:_0x2e5d0e[_0xfdb2('0x1d')]+_0x2e5d0e[_0xfdb2('0x1f')];var _0x369be9;if(_0x4dff84>=_0x49dbe8){_0x4dff84=_0x49dbe8;_0x369be9=0xc8;}else{_0x369be9=0xce;}_0x489fdc['status'](_0x369be9);return _0x489fdc[_0xfdb2('0x21')](_0xfdb2('0x22'),_0x5e64dd+'-'+_0x4dff84+'/'+_0x49dbe8)[_0xfdb2('0x1c')](_0x11ef21);}return null;};}function patchUpdates(_0x1bba28){return function(_0x59a1d0){try{jsonpatch[_0xfdb2('0x23')](_0x59a1d0,_0x1bba28,!![]);}catch(_0x1a4059){return BPromise['reject'](_0x1a4059);}return _0x59a1d0['save']();};}function saveUpdates(_0x59c33a,_0x1ec81d){return function(_0x1486a1){if(_0x1486a1){return _0x1486a1['update'](_0x59c33a)[_0xfdb2('0x24')](function(_0x2dcbd0){return _0x2dcbd0;});}return null;};}function removeEntity(_0x1148d6,_0x28c858){return function(_0x2d290c){if(_0x2d290c){return _0x2d290c[_0xfdb2('0x25')]()[_0xfdb2('0x24')](function(){_0x1148d6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x29a24e,_0x2c8e96){return function(_0x241cf1){if(!_0x241cf1){_0x29a24e[_0xfdb2('0x1a')](0x194);}return _0x241cf1;};}function handleError(_0x2f3698,_0x3a52ba){_0x3a52ba=_0x3a52ba||0x1f4;return function(_0x319228){logger[_0xfdb2('0x26')](_0x319228['stack']);if(_0x319228['name']){delete _0x319228[_0xfdb2('0x27')];}_0x2f3698[_0xfdb2('0x1b')](_0x3a52ba)[_0xfdb2('0x28')](_0x319228);};}exports[_0xfdb2('0x29')]=function(_0x5a100e,_0x4ff6dd){var _0x494a31={},_0x352c99={},_0x35189={'count':0x0,'rows':[]};var _0x160270=_[_0xfdb2('0x2a')](db['JscriptySessionReport'][_0xfdb2('0x2b')],function(_0x4a41a2){return{'name':_0x4a41a2[_0xfdb2('0x2c')],'type':_0x4a41a2[_0xfdb2('0x2d')]['key']};});_0x352c99['model']=_[_0xfdb2('0x2a')](_0x160270,_0xfdb2('0x27'));_0x352c99[_0xfdb2('0x2e')]=_[_0xfdb2('0x2f')](_0x5a100e[_0xfdb2('0x2e')]);_0x352c99['filters']=_['intersection'](_0x352c99[_0xfdb2('0x30')],_0x352c99[_0xfdb2('0x2e')]);_0x494a31['attributes']=_[_0xfdb2('0x31')](_0x352c99[_0xfdb2('0x30')],qs['fields'](_0x5a100e[_0xfdb2('0x2e')][_0xfdb2('0x32')]));_0x494a31['attributes']=_0x494a31['attributes'][_0xfdb2('0x33')]?_0x494a31['attributes']:_0x352c99[_0xfdb2('0x30')];if(!_0x5a100e['query'][_0xfdb2('0x34')](_0xfdb2('0x35'))){_0x494a31[_0xfdb2('0x1f')]=qs[_0xfdb2('0x1f')](_0x5a100e[_0xfdb2('0x2e')][_0xfdb2('0x1f')]);_0x494a31[_0xfdb2('0x1d')]=qs[_0xfdb2('0x1d')](_0x5a100e[_0xfdb2('0x2e')][_0xfdb2('0x1d')]);}_0x494a31[_0xfdb2('0x36')]=qs[_0xfdb2('0x37')](_0x5a100e[_0xfdb2('0x2e')][_0xfdb2('0x37')]);_0x494a31[_0xfdb2('0x38')]=qs[_0xfdb2('0x39')](_['pick'](_0x5a100e['query'],_0x352c99[_0xfdb2('0x39')]),_0x160270);if(_0x5a100e[_0xfdb2('0x2e')][_0xfdb2('0x3a')]){_0x494a31['where']=_[_0xfdb2('0x3b')](_0x494a31[_0xfdb2('0x38')],{'$or':_[_0xfdb2('0x2a')](_0x160270,function(_0x13823b){if(_0x13823b[_0xfdb2('0x2d')]!==_0xfdb2('0x3c')){var _0x3bf524={};_0x3bf524[_0x13823b[_0xfdb2('0x27')]]={'$like':'%'+_0x5a100e[_0xfdb2('0x2e')]['filter']+'%'};return _0x3bf524;}})});}_0x494a31=_[_0xfdb2('0x3b')]({},_0x494a31,_0x5a100e[_0xfdb2('0x3d')]);var _0x2e4645={'where':_0x494a31['where']};return db[_0xfdb2('0x3e')]['count'](_0x2e4645)[_0xfdb2('0x24')](function(_0x33970d){_0x35189[_0xfdb2('0x20')]=_0x33970d;if(_0x5a100e[_0xfdb2('0x2e')]['includeAll']){_0x494a31[_0xfdb2('0x3f')]=[{'all':!![]}];}return db[_0xfdb2('0x3e')][_0xfdb2('0x40')](_0x494a31);})[_0xfdb2('0x24')](function(_0x14ab46){_0x35189[_0xfdb2('0x41')]=_0x14ab46;return _0x35189;})['then'](respondWithFilteredResult(_0x4ff6dd,_0x494a31))[_0xfdb2('0x42')](handleError(_0x4ff6dd,null));};exports['show']=function(_0x506232,_0x3a3513){var _0x5d4a1a={'raw':!![],'where':{'id':_0x506232[_0xfdb2('0x43')]['id']}},_0x181257={};_0x181257['model']=_['keys'](db[_0xfdb2('0x3e')]['rawAttributes']);_0x181257[_0xfdb2('0x2e')]=_[_0xfdb2('0x2f')](_0x506232[_0xfdb2('0x2e')]);_0x181257['filters']=_[_0xfdb2('0x31')](_0x181257[_0xfdb2('0x30')],_0x181257['query']);_0x5d4a1a[_0xfdb2('0x44')]=_[_0xfdb2('0x31')](_0x181257[_0xfdb2('0x30')],qs['fields'](_0x506232[_0xfdb2('0x2e')]['fields']));_0x5d4a1a[_0xfdb2('0x44')]=_0x5d4a1a['attributes']['length']?_0x5d4a1a[_0xfdb2('0x44')]:_0x181257['model'];if(_0x506232['query'][_0xfdb2('0x45')]){_0x5d4a1a[_0xfdb2('0x3f')]=[{'all':!![]}];}_0x5d4a1a=_[_0xfdb2('0x3b')]({},_0x5d4a1a,_0x506232['options']);return db[_0xfdb2('0x3e')][_0xfdb2('0x46')](_0x5d4a1a)[_0xfdb2('0x24')](handleEntityNotFound(_0x3a3513,null))[_0xfdb2('0x24')](respondWithResult(_0x3a3513,null))[_0xfdb2('0x42')](handleError(_0x3a3513,null));};exports['create']=function(_0x204a15,_0x2b4851){return db['JscriptySessionReport'][_0xfdb2('0x47')](_0x204a15[_0xfdb2('0x48')],{})['then'](respondWithResult(_0x2b4851,0xc9))[_0xfdb2('0x42')](handleError(_0x2b4851,null));};exports[_0xfdb2('0x49')]=function(_0x4eda8c,_0x589534){if(_0x4eda8c[_0xfdb2('0x48')]['id']){delete _0x4eda8c[_0xfdb2('0x48')]['id'];}return db[_0xfdb2('0x3e')][_0xfdb2('0x46')]({'where':{'id':_0x4eda8c[_0xfdb2('0x43')]['id']}})[_0xfdb2('0x24')](handleEntityNotFound(_0x589534,null))[_0xfdb2('0x24')](saveUpdates(_0x4eda8c[_0xfdb2('0x48')],null))[_0xfdb2('0x24')](respondWithResult(_0x589534,null))[_0xfdb2('0x42')](handleError(_0x589534,null));};exports[_0xfdb2('0x25')]=function(_0x355e3b,_0x346908){return db[_0xfdb2('0x3e')][_0xfdb2('0x46')]({'where':{'id':_0x355e3b[_0xfdb2('0x43')]['id']}})['then'](handleEntityNotFound(_0x346908,null))[_0xfdb2('0x24')](removeEntity(_0x346908,null))[_0xfdb2('0x42')](handleError(_0x346908,null));};exports[_0xfdb2('0x4a')]=function(_0xc6a540,_0x4e485e){return db[_0xfdb2('0x3e')]['describe']()[_0xfdb2('0x24')](respondWithResult(_0x4e485e,null))[_0xfdb2('0x42')](handleError(_0x4e485e,null));};exports[_0xfdb2('0x4b')]=function(_0x3c4f0e,_0x45fc43,_0x545900){var _0x43e8e4={'raw':!![],'where':{}};var _0x576eb3={};var _0x3b4224={'count':0x0,'rows':[]};return db[_0xfdb2('0x3e')][_0xfdb2('0x4c')]({'where':{'id':_0x3c4f0e[_0xfdb2('0x43')]['id']}})[_0xfdb2('0x24')](handleEntityNotFound(_0x45fc43,null))[_0xfdb2('0x24')](function(_0x3100ec){if(_0x3100ec){_0x576eb3[_0xfdb2('0x30')]=_[_0xfdb2('0x2f')](db[_0xfdb2('0x4d')][_0xfdb2('0x2b')]);_0x576eb3[_0xfdb2('0x2e')]=_[_0xfdb2('0x2f')](_0x3c4f0e[_0xfdb2('0x2e')]);_0x576eb3['filters']=_[_0xfdb2('0x31')](_0x576eb3[_0xfdb2('0x30')],_0x576eb3[_0xfdb2('0x2e')]);_0x43e8e4[_0xfdb2('0x44')]=_['intersection'](_0x576eb3[_0xfdb2('0x30')],qs[_0xfdb2('0x32')](_0x3c4f0e[_0xfdb2('0x2e')]['fields']));_0x43e8e4['attributes']=_0x43e8e4['attributes'][_0xfdb2('0x33')]?_0x43e8e4[_0xfdb2('0x44')]:_0x576eb3[_0xfdb2('0x30')];if(!_0x3c4f0e[_0xfdb2('0x2e')][_0xfdb2('0x34')](_0xfdb2('0x35'))){_0x43e8e4[_0xfdb2('0x1f')]=qs[_0xfdb2('0x1f')](_0x3c4f0e['query'][_0xfdb2('0x1f')]);_0x43e8e4['offset']=qs[_0xfdb2('0x1d')](_0x3c4f0e[_0xfdb2('0x2e')]['offset']);}_0x43e8e4[_0xfdb2('0x36')]=qs[_0xfdb2('0x37')](_0x3c4f0e[_0xfdb2('0x2e')][_0xfdb2('0x37')]);_0x43e8e4[_0xfdb2('0x38')]=qs['filters'](_[_0xfdb2('0x4e')](_0x3c4f0e[_0xfdb2('0x2e')],_0x576eb3['filters']));_0x43e8e4[_0xfdb2('0x38')][_0xfdb2('0x4f')]=_0x3100ec['id'];if(_0x3c4f0e[_0xfdb2('0x2e')]['filter']){_0x43e8e4[_0xfdb2('0x38')]=_[_0xfdb2('0x3b')](_0x43e8e4[_0xfdb2('0x38')],{'$or':_[_0xfdb2('0x2a')](_0x43e8e4[_0xfdb2('0x44')],function(_0x4ccc57){var _0x51dae5={};_0x51dae5[_0x4ccc57]={'$like':'%'+_0x3c4f0e[_0xfdb2('0x2e')][_0xfdb2('0x3a')]+'%'};return _0x51dae5;})});}_0x43e8e4=_[_0xfdb2('0x3b')]({},_0x43e8e4,_0x3c4f0e['options']);return db[_0xfdb2('0x4d')][_0xfdb2('0x20')]({'where':_0x43e8e4[_0xfdb2('0x38')]})[_0xfdb2('0x24')](function(_0x3cc8e7){_0x3b4224[_0xfdb2('0x20')]=_0x3cc8e7;if(_0x3c4f0e[_0xfdb2('0x2e')][_0xfdb2('0x45')]){_0x43e8e4[_0xfdb2('0x3f')]=[{'all':!![]}];}return db[_0xfdb2('0x4d')][_0xfdb2('0x40')](_0x43e8e4);})[_0xfdb2('0x24')](function(_0x334ae1){_0x3b4224[_0xfdb2('0x41')]=_0x334ae1;return _0x3b4224;});}})[_0xfdb2('0x24')](respondWithFilteredResult(_0x45fc43,_0x43e8e4))[_0xfdb2('0x42')](handleError(_0x45fc43,null));};
\ No newline at end of file
+var _0x757f=['order','sort','where','filters','filter','merge','VIRTUAL','options','include','findAll','show','includeAll','catch','create','body','find','params','describe','findOne','JscriptyQuestionReport','SessionId','rows','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','end','json','offset','undefined','limit','count','status','set','Content-Range','save','update','then','destroy','sendStatus','stack','name','send','map','JscriptySessionReport','rawAttributes','fieldName','type','key','model','keys','intersection','query','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x4a20ab,_0x5de8c2){var _0x2720ca=function(_0x20788a){while(--_0x20788a){_0x4a20ab['push'](_0x4a20ab['shift']());}};_0x2720ca(++_0x5de8c2);}(_0x757f,0xf7));var _0xf757=function(_0x1ff6d1,_0x52f903){_0x1ff6d1=_0x1ff6d1-0x0;var _0x1554cd=_0x757f[_0x1ff6d1];return _0x1554cd;};'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(_0xf757('0x0'));var moment=require('moment');var BPromise=require(_0xf757('0x1'));var Mustache=require(_0xf757('0x2'));var util=require(_0xf757('0x3'));var path=require(_0xf757('0x4'));var sox=require(_0xf757('0x5'));var csv=require(_0xf757('0x6'));var ejs=require(_0xf757('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xf757('0x8'));var crypto=require(_0xf757('0x9'));var jsforce=require(_0xf757('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xf757('0x6'));var querystring=require(_0xf757('0xb'));var Papa=require(_0xf757('0xc'));var Redis=require(_0xf757('0xd'));var authService=require(_0xf757('0xe'));var qs=require(_0xf757('0xf'));var as=require(_0xf757('0x10'));var hardwareService=require(_0xf757('0x11'));var logger=require(_0xf757('0x12'))('api');var utils=require(_0xf757('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf757('0x14'))['db'];function respondWithStatusCode(_0x4cb192,_0x3a1076){_0x3a1076=_0x3a1076||0xcc;return function(_0x29734b){if(_0x29734b){return _0x4cb192['sendStatus'](_0x3a1076);}return _0x4cb192['status'](_0x3a1076)[_0xf757('0x15')]();};}function respondWithResult(_0x2fd457,_0x555073){_0x555073=_0x555073||0xc8;return function(_0x1a61e5){if(_0x1a61e5){return _0x2fd457['status'](_0x555073)[_0xf757('0x16')](_0x1a61e5);}};}function respondWithFilteredResult(_0x3430d0,_0x5508a8){return function(_0x2c1e39){if(_0x2c1e39){var _0x32d900=typeof _0x5508a8[_0xf757('0x17')]===_0xf757('0x18')&&typeof _0x5508a8[_0xf757('0x19')]===_0xf757('0x18');var _0x34c876=_0x2c1e39[_0xf757('0x1a')];var _0x2731f9=_0x32d900?0x0:_0x5508a8[_0xf757('0x17')];var _0x211472=_0x32d900?_0x2c1e39[_0xf757('0x1a')]:_0x5508a8['offset']+_0x5508a8['limit'];var _0x364b88;if(_0x211472>=_0x34c876){_0x211472=_0x34c876;_0x364b88=0xc8;}else{_0x364b88=0xce;}_0x3430d0[_0xf757('0x1b')](_0x364b88);return _0x3430d0[_0xf757('0x1c')](_0xf757('0x1d'),_0x2731f9+'-'+_0x211472+'/'+_0x34c876)[_0xf757('0x16')](_0x2c1e39);}return null;};}function patchUpdates(_0xe9dbff){return function(_0xd60c2b){try{jsonpatch['apply'](_0xd60c2b,_0xe9dbff,!![]);}catch(_0x127ed1){return BPromise['reject'](_0x127ed1);}return _0xd60c2b[_0xf757('0x1e')]();};}function saveUpdates(_0x4c99fe,_0x5df578){return function(_0x30bfbb){if(_0x30bfbb){return _0x30bfbb[_0xf757('0x1f')](_0x4c99fe)[_0xf757('0x20')](function(_0x46ad87){return _0x46ad87;});}return null;};}function removeEntity(_0x991133,_0x3393b6){return function(_0x473004){if(_0x473004){return _0x473004[_0xf757('0x21')]()['then'](function(){_0x991133['status'](0xcc)[_0xf757('0x15')]();});}};}function handleEntityNotFound(_0x3b0458,_0xabbad3){return function(_0x37c6ea){if(!_0x37c6ea){_0x3b0458[_0xf757('0x22')](0x194);}return _0x37c6ea;};}function handleError(_0x227b08,_0x54a5b5){_0x54a5b5=_0x54a5b5||0x1f4;return function(_0xdfd4cc){logger['error'](_0xdfd4cc[_0xf757('0x23')]);if(_0xdfd4cc[_0xf757('0x24')]){delete _0xdfd4cc[_0xf757('0x24')];}_0x227b08['status'](_0x54a5b5)[_0xf757('0x25')](_0xdfd4cc);};}exports['index']=function(_0x4e2141,_0x2ffd23){var _0x14aa9a={},_0x21d83b={},_0x321643={'count':0x0,'rows':[]};var _0x3d2188=_[_0xf757('0x26')](db[_0xf757('0x27')][_0xf757('0x28')],function(_0x23952e){return{'name':_0x23952e[_0xf757('0x29')],'type':_0x23952e[_0xf757('0x2a')][_0xf757('0x2b')]};});_0x21d83b[_0xf757('0x2c')]=_[_0xf757('0x26')](_0x3d2188,_0xf757('0x24'));_0x21d83b['query']=_[_0xf757('0x2d')](_0x4e2141['query']);_0x21d83b['filters']=_[_0xf757('0x2e')](_0x21d83b[_0xf757('0x2c')],_0x21d83b[_0xf757('0x2f')]);_0x14aa9a[_0xf757('0x30')]=_[_0xf757('0x2e')](_0x21d83b[_0xf757('0x2c')],qs[_0xf757('0x31')](_0x4e2141['query']['fields']));_0x14aa9a['attributes']=_0x14aa9a[_0xf757('0x30')][_0xf757('0x32')]?_0x14aa9a['attributes']:_0x21d83b[_0xf757('0x2c')];if(!_0x4e2141[_0xf757('0x2f')][_0xf757('0x33')](_0xf757('0x34'))){_0x14aa9a['limit']=qs['limit'](_0x4e2141[_0xf757('0x2f')][_0xf757('0x19')]);_0x14aa9a[_0xf757('0x17')]=qs['offset'](_0x4e2141[_0xf757('0x2f')][_0xf757('0x17')]);}_0x14aa9a[_0xf757('0x35')]=qs[_0xf757('0x36')](_0x4e2141[_0xf757('0x2f')][_0xf757('0x36')]);_0x14aa9a[_0xf757('0x37')]=qs['filters'](_['pick'](_0x4e2141[_0xf757('0x2f')],_0x21d83b[_0xf757('0x38')]),_0x3d2188);if(_0x4e2141[_0xf757('0x2f')][_0xf757('0x39')]){_0x14aa9a[_0xf757('0x37')]=_[_0xf757('0x3a')](_0x14aa9a[_0xf757('0x37')],{'$or':_['map'](_0x3d2188,function(_0x585cf4){if(_0x585cf4[_0xf757('0x2a')]!==_0xf757('0x3b')){var _0x2d487e={};_0x2d487e[_0x585cf4[_0xf757('0x24')]]={'$like':'%'+_0x4e2141[_0xf757('0x2f')]['filter']+'%'};return _0x2d487e;}})});}_0x14aa9a=_[_0xf757('0x3a')]({},_0x14aa9a,_0x4e2141[_0xf757('0x3c')]);var _0x1e936a={'where':_0x14aa9a[_0xf757('0x37')]};return db[_0xf757('0x27')][_0xf757('0x1a')](_0x1e936a)[_0xf757('0x20')](function(_0x59502a){_0x321643['count']=_0x59502a;if(_0x4e2141['query']['includeAll']){_0x14aa9a[_0xf757('0x3d')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0xf757('0x3e')](_0x14aa9a);})['then'](function(_0x4a4321){_0x321643['rows']=_0x4a4321;return _0x321643;})[_0xf757('0x20')](respondWithFilteredResult(_0x2ffd23,_0x14aa9a))['catch'](handleError(_0x2ffd23,null));};exports[_0xf757('0x3f')]=function(_0x1e4df6,_0x4c82bf){var _0x304e49={'raw':!![],'where':{'id':_0x1e4df6['params']['id']}},_0x45197b={};_0x45197b[_0xf757('0x2c')]=_[_0xf757('0x2d')](db['JscriptySessionReport'][_0xf757('0x28')]);_0x45197b[_0xf757('0x2f')]=_['keys'](_0x1e4df6[_0xf757('0x2f')]);_0x45197b[_0xf757('0x38')]=_[_0xf757('0x2e')](_0x45197b[_0xf757('0x2c')],_0x45197b[_0xf757('0x2f')]);_0x304e49[_0xf757('0x30')]=_[_0xf757('0x2e')](_0x45197b[_0xf757('0x2c')],qs[_0xf757('0x31')](_0x1e4df6[_0xf757('0x2f')][_0xf757('0x31')]));_0x304e49[_0xf757('0x30')]=_0x304e49['attributes'][_0xf757('0x32')]?_0x304e49['attributes']:_0x45197b['model'];if(_0x1e4df6[_0xf757('0x2f')][_0xf757('0x40')]){_0x304e49[_0xf757('0x3d')]=[{'all':!![]}];}_0x304e49=_[_0xf757('0x3a')]({},_0x304e49,_0x1e4df6[_0xf757('0x3c')]);return db[_0xf757('0x27')]['find'](_0x304e49)['then'](handleEntityNotFound(_0x4c82bf,null))[_0xf757('0x20')](respondWithResult(_0x4c82bf,null))[_0xf757('0x41')](handleError(_0x4c82bf,null));};exports[_0xf757('0x42')]=function(_0x263d75,_0x5cd4b1){return db[_0xf757('0x27')]['create'](_0x263d75[_0xf757('0x43')],{})[_0xf757('0x20')](respondWithResult(_0x5cd4b1,0xc9))['catch'](handleError(_0x5cd4b1,null));};exports[_0xf757('0x1f')]=function(_0x2b2efd,_0x5e6090){if(_0x2b2efd[_0xf757('0x43')]['id']){delete _0x2b2efd[_0xf757('0x43')]['id'];}return db['JscriptySessionReport'][_0xf757('0x44')]({'where':{'id':_0x2b2efd[_0xf757('0x45')]['id']}})[_0xf757('0x20')](handleEntityNotFound(_0x5e6090,null))[_0xf757('0x20')](saveUpdates(_0x2b2efd['body'],null))['then'](respondWithResult(_0x5e6090,null))[_0xf757('0x41')](handleError(_0x5e6090,null));};exports['destroy']=function(_0xa4be2f,_0x59ab46){return db[_0xf757('0x27')]['find']({'where':{'id':_0xa4be2f[_0xf757('0x45')]['id']}})[_0xf757('0x20')](handleEntityNotFound(_0x59ab46,null))[_0xf757('0x20')](removeEntity(_0x59ab46,null))[_0xf757('0x41')](handleError(_0x59ab46,null));};exports[_0xf757('0x46')]=function(_0xe5e7e1,_0x5a22dc){return db[_0xf757('0x27')][_0xf757('0x46')]()['then'](respondWithResult(_0x5a22dc,null))[_0xf757('0x41')](handleError(_0x5a22dc,null));};exports['getQuestions']=function(_0x41c600,_0x35d760,_0x29fd77){var _0x5c1577={'raw':!![],'where':{}};var _0x42c18a={};var _0x1a7090={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0xf757('0x47')]({'where':{'id':_0x41c600[_0xf757('0x45')]['id']}})[_0xf757('0x20')](handleEntityNotFound(_0x35d760,null))['then'](function(_0x4e56a3){if(_0x4e56a3){_0x42c18a[_0xf757('0x2c')]=_['keys'](db[_0xf757('0x48')][_0xf757('0x28')]);_0x42c18a[_0xf757('0x2f')]=_[_0xf757('0x2d')](_0x41c600[_0xf757('0x2f')]);_0x42c18a[_0xf757('0x38')]=_[_0xf757('0x2e')](_0x42c18a['model'],_0x42c18a[_0xf757('0x2f')]);_0x5c1577[_0xf757('0x30')]=_[_0xf757('0x2e')](_0x42c18a[_0xf757('0x2c')],qs[_0xf757('0x31')](_0x41c600['query'][_0xf757('0x31')]));_0x5c1577['attributes']=_0x5c1577[_0xf757('0x30')][_0xf757('0x32')]?_0x5c1577['attributes']:_0x42c18a[_0xf757('0x2c')];if(!_0x41c600[_0xf757('0x2f')]['hasOwnProperty'](_0xf757('0x34'))){_0x5c1577[_0xf757('0x19')]=qs[_0xf757('0x19')](_0x41c600[_0xf757('0x2f')][_0xf757('0x19')]);_0x5c1577['offset']=qs[_0xf757('0x17')](_0x41c600[_0xf757('0x2f')][_0xf757('0x17')]);}_0x5c1577[_0xf757('0x35')]=qs['sort'](_0x41c600[_0xf757('0x2f')][_0xf757('0x36')]);_0x5c1577[_0xf757('0x37')]=qs[_0xf757('0x38')](_['pick'](_0x41c600[_0xf757('0x2f')],_0x42c18a['filters']));_0x5c1577['where'][_0xf757('0x49')]=_0x4e56a3['id'];if(_0x41c600[_0xf757('0x2f')][_0xf757('0x39')]){_0x5c1577['where']=_[_0xf757('0x3a')](_0x5c1577[_0xf757('0x37')],{'$or':_[_0xf757('0x26')](_0x5c1577[_0xf757('0x30')],function(_0x2b2f18){var _0x3ef54a={};_0x3ef54a[_0x2b2f18]={'$like':'%'+_0x41c600[_0xf757('0x2f')][_0xf757('0x39')]+'%'};return _0x3ef54a;})});}_0x5c1577=_[_0xf757('0x3a')]({},_0x5c1577,_0x41c600[_0xf757('0x3c')]);return db['JscriptyQuestionReport'][_0xf757('0x1a')]({'where':_0x5c1577[_0xf757('0x37')]})[_0xf757('0x20')](function(_0x457b40){_0x1a7090['count']=_0x457b40;if(_0x41c600[_0xf757('0x2f')][_0xf757('0x40')]){_0x5c1577['include']=[{'all':!![]}];}return db[_0xf757('0x48')][_0xf757('0x3e')](_0x5c1577);})[_0xf757('0x20')](function(_0x7ad6d0){_0x1a7090[_0xf757('0x4a')]=_0x7ad6d0;return _0x1a7090;});}})['then'](respondWithFilteredResult(_0x35d760,_0x5c1577))['catch'](handleError(_0x35d760,null));};
\ No newline at end of file
index e5a8a06..14440ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4745=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','define','report_jscripty_sessions','lodash','util','../../config/logger'];(function(_0x54c1d1,_0x478f5e){var _0xbb806d=function(_0x478de3){while(--_0x478de3){_0x54c1d1['push'](_0x54c1d1['shift']());}};_0xbb806d(++_0x478f5e);}(_0x4745,0x1e7));var _0x5474=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0x4745[_0x92c450];return _0x2a9599;};'use strict';var _=require(_0x5474('0x0'));var util=require(_0x5474('0x1'));var logger=require(_0x5474('0x2'))(_0x5474('0x3'));var moment=require(_0x5474('0x4'));var BPromise=require(_0x5474('0x5'));var rp=require(_0x5474('0x6'));var fs=require('fs');var path=require(_0x5474('0x7'));var rimraf=require(_0x5474('0x8'));var config=require(_0x5474('0x9'));var attributes=require(_0x5474('0xa'));module[_0x5474('0xb')]=function(_0x4e7ce7,_0x3d1e1){return _0x4e7ce7[_0x5474('0xc')]('JscriptySessionReport',attributes,{'tableName':_0x5474('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1cb9=['./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','lodash','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x1b7d83,_0x38e21d){var _0x501e82=function(_0x3568de){while(--_0x3568de){_0x1b7d83['push'](_0x1b7d83['shift']());}};_0x501e82(++_0x38e21d);}(_0x1cb9,0x14e));var _0x91cb=function(_0x38aa56,_0x530439){_0x38aa56=_0x38aa56-0x0;var _0x5302c4=_0x1cb9[_0x38aa56];return _0x5302c4;};'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_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 17b3be9..9dbcc33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b0=['client','http','request','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x9a764,_0x399ff6){var _0x43f792=function(_0x41a032){while(--_0x41a032){_0x9a764['push'](_0x9a764['shift']());}};_0x43f792(++_0x399ff6);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x3dc428,_0x2d1a25){_0x3dc428=_0x3dc428-0x0;var _0x4bdea0=_0xa6b0[_0x3dc428];return _0x4bdea0;};'use strict';var _=require(_0x0a6b('0x0'));var util=require(_0x0a6b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0a6b('0x2'));var fs=require('fs');var Redis=require(_0x0a6b('0x3'));var db=require(_0x0a6b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0a6b('0x5'))(_0x0a6b('0x6'));var config=require(_0x0a6b('0x7'));var jayson=require(_0x0a6b('0x8'));var client=jayson[_0x0a6b('0x9')][_0x0a6b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b5fb5,_0xa908dd,_0x26f761){return new BPromise(function(_0x340a33,_0x8e89f){return client[_0x0a6b('0xb')](_0x1b5fb5,_0x26f761)['then'](function(_0x493948){logger[_0x0a6b('0xc')](_0x0a6b('0xd'),_0xa908dd,_0x0a6b('0xe'));logger[_0x0a6b('0xf')](_0x0a6b('0x10'),_0xa908dd,_0x0a6b('0xe'),JSON[_0x0a6b('0x11')](_0x493948));if(_0x493948[_0x0a6b('0x12')]){if(_0x493948[_0x0a6b('0x12')][_0x0a6b('0x13')]===0x1f4){logger[_0x0a6b('0x12')](_0x0a6b('0xd'),_0xa908dd,_0x493948[_0x0a6b('0x12')][_0x0a6b('0x14')]);return _0x8e89f(_0x493948['error']['message']);}logger[_0x0a6b('0x12')](_0x0a6b('0xd'),_0xa908dd,_0x493948[_0x0a6b('0x12')][_0x0a6b('0x14')]);return _0x340a33(_0x493948[_0x0a6b('0x12')][_0x0a6b('0x14')]);}else{logger[_0x0a6b('0xc')](_0x0a6b('0xd'),_0xa908dd,_0x0a6b('0xe'));_0x340a33(_0x493948[_0x0a6b('0x15')]['message']);}})[_0x0a6b('0x16')](function(_0x1538f4){logger['error'](_0x0a6b('0xd'),_0xa908dd,_0x1538f4);_0x8e89f(_0x1538f4);});});}
\ No newline at end of file
+var _0x8952=['JscriptySessionReport,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error'];(function(_0x25019f,_0x243013){var _0x3f0abd=function(_0x3a4984){while(--_0x3a4984){_0x25019f['push'](_0x25019f['shift']());}};_0x3f0abd(++_0x243013);}(_0x8952,0x17e));var _0x2895=function(_0x14b799,_0x3d4657){_0x14b799=_0x14b799-0x0;var _0x4eaf21=_0x8952[_0x14b799];return _0x4eaf21;};'use strict';var _=require('lodash');var util=require(_0x2895('0x0'));var moment=require(_0x2895('0x1'));var BPromise=require(_0x2895('0x2'));var rs=require(_0x2895('0x3'));var fs=require('fs');var Redis=require(_0x2895('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2895('0x5'));var logger=require(_0x2895('0x6'))(_0x2895('0x7'));var config=require('../../config/environment');var jayson=require(_0x2895('0x8'));var client=jayson[_0x2895('0x9')][_0x2895('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4ea619,_0x526c32,_0x238b4a){return new BPromise(function(_0x335002,_0x159f86){return client[_0x2895('0xb')](_0x4ea619,_0x238b4a)[_0x2895('0xc')](function(_0x4952fa){logger[_0x2895('0xd')]('JscriptySessionReport,\x20%s,\x20%s',_0x526c32,_0x2895('0xe'));logger['debug']('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x526c32,'request\x20sent',JSON[_0x2895('0xf')](_0x4952fa));if(_0x4952fa[_0x2895('0x10')]){if(_0x4952fa[_0x2895('0x10')]['code']===0x1f4){logger[_0x2895('0x10')](_0x2895('0x11'),_0x526c32,_0x4952fa['error'][_0x2895('0x12')]);return _0x159f86(_0x4952fa[_0x2895('0x10')]['message']);}logger['error'](_0x2895('0x11'),_0x526c32,_0x4952fa[_0x2895('0x10')]['message']);return _0x335002(_0x4952fa[_0x2895('0x10')][_0x2895('0x12')]);}else{logger[_0x2895('0xd')](_0x2895('0x11'),_0x526c32,_0x2895('0xe'));_0x335002(_0x4952fa[_0x2895('0x13')][_0x2895('0x12')]);}})[_0x2895('0x14')](function(_0x3e96d7){logger[_0x2895('0x10')](_0x2895('0x11'),_0x526c32,_0x3e96d7);_0x159f86(_0x3e96d7);});});}
\ No newline at end of file
index 833041a..510ad5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf50b=['put','/:id','isAuthenticated','update','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./license.controller','get','index'];(function(_0x218dd5,_0x556e84){var _0x4524c7=function(_0x419e15){while(--_0x419e15){_0x218dd5['push'](_0x218dd5['shift']());}};_0x4524c7(++_0x556e84);}(_0xf50b,0xc8));var _0xbf50=function(_0x2c133f,_0x386f){_0x2c133f=_0x2c133f-0x0;var _0x763aa9=_0xf50b[_0x2c133f];return _0x763aa9;};'use strict';var multer=require(_0xbf50('0x0'));var util=require(_0xbf50('0x1'));var path=require('path');var timeout=require(_0xbf50('0x2'));var express=require(_0xbf50('0x3'));var router=express[_0xbf50('0x4')]();var fs_extra=require(_0xbf50('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xbf50('0x6'));var config=require('../../config/environment');var controller=require(_0xbf50('0x7'));router[_0xbf50('0x8')]('/',controller[_0xbf50('0x9')]);router[_0xbf50('0xa')](_0xbf50('0xb'),auth[_0xbf50('0xc')](),controller[_0xbf50('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0x37cc=['util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./license.controller','get','index','put','/:id','isAuthenticated','update','multer'];(function(_0x2770f3,_0x588449){var _0x528b11=function(_0x42ec3c){while(--_0x42ec3c){_0x2770f3['push'](_0x2770f3['shift']());}};_0x528b11(++_0x588449);}(_0x37cc,0x185));var _0xc37c=function(_0x102174,_0x5c5944){_0x102174=_0x102174-0x0;var _0x23934f=_0x37cc[_0x102174];return _0x23934f;};'use strict';var multer=require(_0xc37c('0x0'));var util=require(_0xc37c('0x1'));var path=require(_0xc37c('0x2'));var timeout=require(_0xc37c('0x3'));var express=require(_0xc37c('0x4'));var router=express[_0xc37c('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xc37c('0x6'));var config=require(_0xc37c('0x7'));var controller=require(_0xc37c('0x8'));router[_0xc37c('0x9')]('/',controller[_0xc37c('0xa')]);router[_0xc37c('0xb')](_0xc37c('0xc'),auth[_0xc37c('0xd')](),controller[_0xc37c('0xe')]);module['exports']=router;
\ No newline at end of file
index 5ad5e4c..cbcf496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45f5=['sequelize','TEXT','STRING','INTEGER'];(function(_0x46f1a6,_0xc7a582){var _0x38429a=function(_0x31adae){while(--_0x31adae){_0x46f1a6['push'](_0x46f1a6['shift']());}};_0x38429a(++_0xc7a582);}(_0x45f5,0x94));var _0x545f=function(_0x5cabac,_0x5ccb08){_0x5cabac=_0x5cabac-0x0;var _0x5f47b8=_0x45f5[_0x5cabac];return _0x5f47b8;};'use strict';var Sequelize=require(_0x545f('0x0'));module['exports']={'license':{'type':Sequelize[_0x545f('0x1')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0x545f('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x545f('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9a15=['STRING','INTEGER','exports','TEXT'];(function(_0x2b6676,_0x3f94b6){var _0xafd0ec=function(_0x8235ac){while(--_0x8235ac){_0x2b6676['push'](_0x2b6676['shift']());}};_0xafd0ec(++_0x3f94b6);}(_0x9a15,0x15e));var _0x59a1=function(_0x205655,_0x575792){_0x205655=_0x205655-0x0;var _0x23be40=_0x9a15[_0x205655];return _0x23be40;};'use strict';var Sequelize=require('sequelize');module[_0x59a1('0x0')]={'license':{'type':Sequelize[_0x59a1('0x1')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0x59a1('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x59a1('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index adc67f4..a217c4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','model','keys','License','rawAttributes','query','intersection','attributes','fields','merge','getLicense','catch','find','get','body','demo','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','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','../../config/license/util','../../mysqldb'];(function(_0x5399b0,_0xfd3c16){var _0x54f067=function(_0x5e6e36){while(--_0x5e6e36){_0x5399b0['push'](_0x5399b0['shift']());}};_0x54f067(++_0xfd3c16);}(_0xabce,0x103));var _0xeabc=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xabce[_0x3054be];return _0x3df150;};'use strict';var emlformat=require(_0xeabc('0x0'));var rimraf=require(_0xeabc('0x1'));var zipdir=require(_0xeabc('0x2'));var jsonpatch=require(_0xeabc('0x3'));var rp=require(_0xeabc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xeabc('0x5'));var util=require(_0xeabc('0x6'));var path=require(_0xeabc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeabc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeabc('0x9'));var squel=require('squel');var crypto=require(_0xeabc('0xa'));var jsforce=require(_0xeabc('0xb'));var deskjs=require(_0xeabc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xeabc('0xd'));var Papa=require(_0xeabc('0xe'));var Redis=require(_0xeabc('0xf'));var authService=require(_0xeabc('0x10'));var qs=require(_0xeabc('0x11'));var as=require(_0xeabc('0x12'));var hardwareService=require(_0xeabc('0x13'));var logger=require(_0xeabc('0x14'))(_0xeabc('0x15'));var utils=require(_0xeabc('0x16'));var config=require(_0xeabc('0x17'));var licenseUtil=require(_0xeabc('0x18'));var db=require(_0xeabc('0x19'))['db'];function respondWithStatusCode(_0x3fd0b5,_0x36a92e){_0x36a92e=_0x36a92e||0xcc;return function(_0xcfbf06){if(_0xcfbf06){return _0x3fd0b5['sendStatus'](_0x36a92e);}return _0x3fd0b5[_0xeabc('0x1a')](_0x36a92e)[_0xeabc('0x1b')]();};}function respondWithResult(_0x3251c6,_0x55f0de){_0x55f0de=_0x55f0de||0xc8;return function(_0x5f4ee8){if(_0x5f4ee8){return _0x3251c6[_0xeabc('0x1a')](_0x55f0de)[_0xeabc('0x1c')](_0x5f4ee8);}};}function respondWithFilteredResult(_0x326bac,_0x53d5cb){return function(_0xf913d7){if(_0xf913d7){var _0x638976=typeof _0x53d5cb['offset']==='undefined'&&typeof _0x53d5cb[_0xeabc('0x1d')]==='undefined';var _0x3d0e21=_0xf913d7[_0xeabc('0x1e')];var _0x58a3c0=_0x638976?0x0:_0x53d5cb[_0xeabc('0x1f')];var _0x31dd53=_0x638976?_0xf913d7[_0xeabc('0x1e')]:_0x53d5cb[_0xeabc('0x1f')]+_0x53d5cb[_0xeabc('0x1d')];var _0x5d92e5;if(_0x31dd53>=_0x3d0e21){_0x31dd53=_0x3d0e21;_0x5d92e5=0xc8;}else{_0x5d92e5=0xce;}_0x326bac[_0xeabc('0x1a')](_0x5d92e5);return _0x326bac['set'](_0xeabc('0x20'),_0x58a3c0+'-'+_0x31dd53+'/'+_0x3d0e21)[_0xeabc('0x1c')](_0xf913d7);}return null;};}function patchUpdates(_0x502947){return function(_0x28063a){try{jsonpatch[_0xeabc('0x21')](_0x28063a,_0x502947,!![]);}catch(_0x254590){return BPromise[_0xeabc('0x22')](_0x254590);}return _0x28063a[_0xeabc('0x23')]();};}function saveUpdates(_0x4e99a4,_0xecdbf){return function(_0x10c675){if(_0x10c675){return _0x10c675[_0xeabc('0x24')](_0x4e99a4)['then'](function(_0x457f27){return _0x457f27;});}return null;};}function removeEntity(_0x3854d2,_0x214953){return function(_0x319119){if(_0x319119){return _0x319119['destroy']()[_0xeabc('0x25')](function(){_0x3854d2['status'](0xcc)[_0xeabc('0x1b')]();});}};}function handleEntityNotFound(_0x4d4e29,_0x811f0d){return function(_0x12acbd){if(!_0x12acbd){_0x4d4e29[_0xeabc('0x26')](0x194);}return _0x12acbd;};}function handleError(_0x3f194e,_0x3a1a04){_0x3a1a04=_0x3a1a04||0x1f4;return function(_0x137293){logger[_0xeabc('0x27')](_0x137293['stack']);if(_0x137293['name']){delete _0x137293[_0xeabc('0x28')];}_0x3f194e['status'](_0x3a1a04)[_0xeabc('0x29')](_0x137293);};}var utilLicense=require(_0xeabc('0x18'));exports['index']=function(_0x2163e6,_0x38572d){var _0x2b568f={'raw':!![],'where':{'id':0x1}},_0x2f8633={};_0x2f8633[_0xeabc('0x2a')]=_[_0xeabc('0x2b')](db[_0xeabc('0x2c')][_0xeabc('0x2d')]);_0x2f8633[_0xeabc('0x2e')]=_['keys'](_0x2163e6[_0xeabc('0x2e')]);_0x2f8633['filters']=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],_0x2f8633[_0xeabc('0x2e')]);_0x2b568f[_0xeabc('0x30')]=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],qs[_0xeabc('0x31')](_0x2163e6['query'][_0xeabc('0x31')]));_0x2b568f[_0xeabc('0x30')]=_0x2b568f[_0xeabc('0x30')]['length']?_0x2b568f[_0xeabc('0x30')]:_0x2f8633[_0xeabc('0x2a')];_0x2b568f=_[_0xeabc('0x32')]({},_0x2b568f,_0x2163e6['options']);return utilLicense[_0xeabc('0x33')](_0x2b568f)[_0xeabc('0x25')](respondWithResult(_0x38572d,null))[_0xeabc('0x34')](handleError(_0x38572d,null));};exports['update']=function(_0xf98c7c,_0x286203){if(_0xf98c7c['body']['id']){delete _0xf98c7c['body']['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x35')]({'where':{'id':_0xf98c7c['params']['id']}})[_0xeabc('0x25')](handleEntityNotFound(_0x286203,null))[_0xeabc('0x25')](function(_0x3edee7){var _0x10434e=_0x3edee7[_0xeabc('0x36')]({'plain':!![]});return utilLicense['checkLicense'](_0x10434e,_0xf98c7c[_0xeabc('0x37')]['key']);})[_0xeabc('0x25')](function(_0x2bda29){if(!_0x2bda29[_0xeabc('0x38')]){return saveUpdates(_0xf98c7c['body'],null);}return _0x2bda29;})['then'](respondWithResult(_0x286203,null))[_0xeabc('0x34')](handleError(_0x286203,null));};
\ No newline at end of file
+var _0x0295=['demo','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','stack','name','send','../../config/license/util','model','keys','rawAttributes','query','filters','intersection','attributes','fields','merge','options','catch','body','License','find','checkLicense','key'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x0295,0x1f0));var _0x5029=function(_0x6317d6,_0x424384){_0x6317d6=_0x6317d6-0x0;var _0x5add4d=_0x0295[_0x6317d6];return _0x5add4d;};'use strict';var emlformat=require(_0x5029('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5029('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5029('0x2'));var Mustache=require(_0x5029('0x3'));var util=require(_0x5029('0x4'));var path=require(_0x5029('0x5'));var sox=require(_0x5029('0x6'));var csv=require(_0x5029('0x7'));var ejs=require(_0x5029('0x8'));var fs=require('fs');var fs_extra=require(_0x5029('0x9'));var _=require(_0x5029('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5029('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5029('0xc'));var Papa=require('papaparse');var Redis=require(_0x5029('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5029('0xe'));var as=require(_0x5029('0xf'));var hardwareService=require(_0x5029('0x10'));var logger=require('../../config/logger')(_0x5029('0x11'));var utils=require(_0x5029('0x12'));var config=require(_0x5029('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5029('0x14'))['db'];function respondWithStatusCode(_0x2442b2,_0x4cced9){_0x4cced9=_0x4cced9||0xcc;return function(_0x4fa22d){if(_0x4fa22d){return _0x2442b2['sendStatus'](_0x4cced9);}return _0x2442b2['status'](_0x4cced9)[_0x5029('0x15')]();};}function respondWithResult(_0x2e0369,_0x12c237){_0x12c237=_0x12c237||0xc8;return function(_0x434630){if(_0x434630){return _0x2e0369[_0x5029('0x16')](_0x12c237)[_0x5029('0x17')](_0x434630);}};}function respondWithFilteredResult(_0xe278b7,_0x317c20){return function(_0x10bf55){if(_0x10bf55){var _0x326923=typeof _0x317c20[_0x5029('0x18')]===_0x5029('0x19')&&typeof _0x317c20[_0x5029('0x1a')]===_0x5029('0x19');var _0x343918=_0x10bf55['count'];var _0x1ed567=_0x326923?0x0:_0x317c20[_0x5029('0x18')];var _0x35de81=_0x326923?_0x10bf55[_0x5029('0x1b')]:_0x317c20[_0x5029('0x18')]+_0x317c20[_0x5029('0x1a')];var _0xaba461;if(_0x35de81>=_0x343918){_0x35de81=_0x343918;_0xaba461=0xc8;}else{_0xaba461=0xce;}_0xe278b7['status'](_0xaba461);return _0xe278b7[_0x5029('0x1c')]('Content-Range',_0x1ed567+'-'+_0x35de81+'/'+_0x343918)[_0x5029('0x17')](_0x10bf55);}return null;};}function patchUpdates(_0x8a414c){return function(_0x2710aa){try{jsonpatch[_0x5029('0x1d')](_0x2710aa,_0x8a414c,!![]);}catch(_0x4b5854){return BPromise['reject'](_0x4b5854);}return _0x2710aa[_0x5029('0x1e')]();};}function saveUpdates(_0x4a49b6,_0x3f657d){return function(_0x853a34){if(_0x853a34){return _0x853a34[_0x5029('0x1f')](_0x4a49b6)[_0x5029('0x20')](function(_0x16bd22){return _0x16bd22;});}return null;};}function removeEntity(_0x3a3e52,_0x125c26){return function(_0x356dac){if(_0x356dac){return _0x356dac[_0x5029('0x21')]()['then'](function(){_0x3a3e52['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x588d90,_0x45666c){return function(_0x51093c){if(!_0x51093c){_0x588d90['sendStatus'](0x194);}return _0x51093c;};}function handleError(_0x181da0,_0x1e7e61){_0x1e7e61=_0x1e7e61||0x1f4;return function(_0x36d810){logger['error'](_0x36d810[_0x5029('0x22')]);if(_0x36d810[_0x5029('0x23')]){delete _0x36d810['name'];}_0x181da0[_0x5029('0x16')](_0x1e7e61)[_0x5029('0x24')](_0x36d810);};}var utilLicense=require(_0x5029('0x25'));exports['index']=function(_0x32da06,_0x251f99){var _0xe5313e={'raw':!![],'where':{'id':0x1}},_0x4b6f92={};_0x4b6f92[_0x5029('0x26')]=_[_0x5029('0x27')](db['License'][_0x5029('0x28')]);_0x4b6f92[_0x5029('0x29')]=_[_0x5029('0x27')](_0x32da06[_0x5029('0x29')]);_0x4b6f92[_0x5029('0x2a')]=_[_0x5029('0x2b')](_0x4b6f92[_0x5029('0x26')],_0x4b6f92[_0x5029('0x29')]);_0xe5313e[_0x5029('0x2c')]=_[_0x5029('0x2b')](_0x4b6f92[_0x5029('0x26')],qs[_0x5029('0x2d')](_0x32da06['query'][_0x5029('0x2d')]));_0xe5313e['attributes']=_0xe5313e[_0x5029('0x2c')]['length']?_0xe5313e['attributes']:_0x4b6f92[_0x5029('0x26')];_0xe5313e=_[_0x5029('0x2e')]({},_0xe5313e,_0x32da06[_0x5029('0x2f')]);return utilLicense['getLicense'](_0xe5313e)[_0x5029('0x20')](respondWithResult(_0x251f99,null))[_0x5029('0x30')](handleError(_0x251f99,null));};exports[_0x5029('0x1f')]=function(_0x29c59a,_0x1bb896){if(_0x29c59a[_0x5029('0x31')]['id']){delete _0x29c59a[_0x5029('0x31')]['id'];}return db[_0x5029('0x32')][_0x5029('0x33')]({'where':{'id':_0x29c59a['params']['id']}})[_0x5029('0x20')](handleEntityNotFound(_0x1bb896,null))[_0x5029('0x20')](function(_0xc110e8){var _0x1b3817=_0xc110e8['get']({'plain':!![]});return utilLicense[_0x5029('0x34')](_0x1b3817,_0x29c59a[_0x5029('0x31')][_0x5029('0x35')]);})['then'](function(_0x4904cc){if(!_0x4904cc[_0x5029('0x36')]){return saveUpdates(_0x29c59a[_0x5029('0x31')],null);}return _0x4904cc;})['then'](respondWithResult(_0x1bb896,null))['catch'](handleError(_0x1bb896,null));};
\ No newline at end of file
index facc96b..831d112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd9b=['request-promise','path','rimraf','./license.attributes','exports','define','license','lodash','util','api','moment','bluebird'];(function(_0x368787,_0x29d74f){var _0x545265=function(_0x35b1d1){while(--_0x35b1d1){_0x368787['push'](_0x368787['shift']());}};_0x545265(++_0x29d74f);}(_0xbd9b,0x67));var _0xbbd9=function(_0x3aa130,_0x323ce4){_0x3aa130=_0x3aa130-0x0;var _0x2de283=_0xbd9b[_0x3aa130];return _0x2de283;};'use strict';var _=require(_0xbbd9('0x0'));var util=require(_0xbbd9('0x1'));var logger=require('../../config/logger')(_0xbbd9('0x2'));var moment=require(_0xbbd9('0x3'));var BPromise=require(_0xbbd9('0x4'));var rp=require(_0xbbd9('0x5'));var fs=require('fs');var path=require(_0xbbd9('0x6'));var rimraf=require(_0xbbd9('0x7'));var config=require('../../config/environment');var attributes=require(_0xbbd9('0x8'));module[_0xbbd9('0x9')]=function(_0x2e1852,_0x2d8013){return _0x2e1852[_0xbbd9('0xa')]('License',attributes,{'tableName':_0xbbd9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x51ae=['define','License','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./license.attributes','exports'];(function(_0x11fe3e,_0xb1f741){var _0x26cf87=function(_0x2b3532){while(--_0x2b3532){_0x11fe3e['push'](_0x11fe3e['shift']());}};_0x26cf87(++_0xb1f741);}(_0x51ae,0x1b2));var _0xe51a=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0x51ae[_0x3899d1];return _0xeb4a7d;};'use strict';var _=require('lodash');var util=require(_0xe51a('0x0'));var logger=require(_0xe51a('0x1'))(_0xe51a('0x2'));var moment=require('moment');var BPromise=require(_0xe51a('0x3'));var rp=require(_0xe51a('0x4'));var fs=require('fs');var path=require(_0xe51a('0x5'));var rimraf=require(_0xe51a('0x6'));var config=require(_0xe51a('0x7'));var attributes=require(_0xe51a('0x8'));module[_0xe51a('0x9')]=function(_0x595c22,_0x5921ef){return _0x595c22[_0xe51a('0xa')](_0xe51a('0xb'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ef5f55d..edf534e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcee=['rpc','jayson/promise','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x45dd0e,_0x28e603){var _0x50e5ca=function(_0x46a412){while(--_0x46a412){_0x45dd0e['push'](_0x45dd0e['shift']());}};_0x50e5ca(++_0x28e603);}(_0xdcee,0xe8));var _0xedce=function(_0x10b6ae,_0x56a559){_0x10b6ae=_0x10b6ae-0x0;var _0x1321e9=_0xdcee[_0x10b6ae];return _0x1321e9;};'use strict';var _=require(_0xedce('0x0'));var util=require(_0xedce('0x1'));var moment=require(_0xedce('0x2'));var BPromise=require(_0xedce('0x3'));var rs=require(_0xedce('0x4'));var fs=require('fs');var Redis=require(_0xedce('0x5'));var db=require(_0xedce('0x6'))['db'];var utils=require(_0xedce('0x7'));var logger=require('../../config/logger')(_0xedce('0x8'));var config=require('../../config/environment');var jayson=require(_0xedce('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3ad40b,_0x1a0b40,_0x2bab6f){return new BPromise(function(_0x4ee61f,_0x1efe3b){return client['request'](_0x3ad40b,_0x2bab6f)['then'](function(_0x5bcd96){logger[_0xedce('0xa')](_0xedce('0xb'),_0x1a0b40,_0xedce('0xc'));logger[_0xedce('0xd')](_0xedce('0xe'),_0x1a0b40,_0xedce('0xc'),JSON[_0xedce('0xf')](_0x5bcd96));if(_0x5bcd96[_0xedce('0x10')]){if(_0x5bcd96['error']['code']===0x1f4){logger[_0xedce('0x10')](_0xedce('0xb'),_0x1a0b40,_0x5bcd96[_0xedce('0x10')][_0xedce('0x11')]);return _0x1efe3b(_0x5bcd96[_0xedce('0x10')][_0xedce('0x11')]);}logger[_0xedce('0x10')]('License,\x20%s,\x20%s',_0x1a0b40,_0x5bcd96[_0xedce('0x10')][_0xedce('0x11')]);return _0x4ee61f(_0x5bcd96[_0xedce('0x10')][_0xedce('0x11')]);}else{logger['info'](_0xedce('0xb'),_0x1a0b40,_0xedce('0xc'));_0x4ee61f(_0x5bcd96[_0xedce('0x12')]['message']);}})[_0xedce('0x13')](function(_0x23bc4d){logger['error'](_0xedce('0xb'),_0x1a0b40,_0x23bc4d);_0x1efe3b(_0x23bc4d);});});}
\ No newline at end of file
+var _0x8443=['../../config/utils','rpc','jayson/promise','http','request','then','debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','License,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x43aecd,_0x186598){var _0x4aca52=function(_0x5f3a2e){while(--_0x5f3a2e){_0x43aecd['push'](_0x43aecd['shift']());}};_0x4aca52(++_0x186598);}(_0x8443,0x1b3));var _0x3844=function(_0x13248d,_0x35184a){_0x13248d=_0x13248d-0x0;var _0x564f27=_0x8443[_0x13248d];return _0x564f27;};'use strict';var _=require(_0x3844('0x0'));var util=require('util');var moment=require(_0x3844('0x1'));var BPromise=require(_0x3844('0x2'));var rs=require(_0x3844('0x3'));var fs=require('fs');var Redis=require(_0x3844('0x4'));var db=require(_0x3844('0x5'))['db'];var utils=require(_0x3844('0x6'));var logger=require('../../config/logger')(_0x3844('0x7'));var config=require('../../config/environment');var jayson=require(_0x3844('0x8'));var client=jayson['client'][_0x3844('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x343e94,_0x2fb68f,_0x46c76b){return new BPromise(function(_0x3741b8,_0x1f7a1a){return client[_0x3844('0xa')](_0x343e94,_0x46c76b)[_0x3844('0xb')](function(_0x1c8bf7){logger['info']('License,\x20%s,\x20%s',_0x2fb68f,'request\x20sent');logger[_0x3844('0xc')](_0x3844('0xd'),_0x2fb68f,_0x3844('0xe'),JSON[_0x3844('0xf')](_0x1c8bf7));if(_0x1c8bf7[_0x3844('0x10')]){if(_0x1c8bf7[_0x3844('0x10')]['code']===0x1f4){logger[_0x3844('0x10')](_0x3844('0x11'),_0x2fb68f,_0x1c8bf7['error']['message']);return _0x1f7a1a(_0x1c8bf7[_0x3844('0x10')][_0x3844('0x12')]);}logger[_0x3844('0x10')](_0x3844('0x11'),_0x2fb68f,_0x1c8bf7[_0x3844('0x10')][_0x3844('0x12')]);return _0x3741b8(_0x1c8bf7[_0x3844('0x10')]['message']);}else{logger['info'](_0x3844('0x11'),_0x2fb68f,_0x3844('0xe'));_0x3741b8(_0x1c8bf7[_0x3844('0x13')][_0x3844('0x12')]);}})[_0x3844('0x14')](function(_0x38b75e){logger[_0x3844('0x10')]('License,\x20%s,\x20%s',_0x2fb68f,_0x38b75e);_0x1f7a1a(_0x38b75e);});});}
\ No newline at end of file
index 848c7b2..39a6b0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x366e=['update','delete','removeAnswers','removeImap','removeSmtp','destroy','/:id/users','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','isAuthenticated','index','/describe','get','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','getAgents','post','addDisposition','create','addImap','addSmtp','addInteraction','addApplications','/:id/send','send','addAgents','put'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x366e,0xf2));var _0xe366=function(_0x1c322f,_0x3ba8e9){_0x1c322f=_0x1c322f-0x0;var _0x318f79=_0x366e[_0x1c322f];return _0x318f79;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xe366('0x0'));var express=require(_0xe366('0x1'));var router=express[_0xe366('0x2')]();var fs_extra=require(_0xe366('0x3'));var auth=require(_0xe366('0x4'));var interaction=require(_0xe366('0x5'));var config=require(_0xe366('0x6'));var controller=require(_0xe366('0x7'));router['get']('/',auth[_0xe366('0x8')](),controller[_0xe366('0x9')]);router['get'](_0xe366('0xa'),auth[_0xe366('0x8')](),controller['describe']);router[_0xe366('0xb')](_0xe366('0xc'),auth['isAuthenticated'](),controller[_0xe366('0xd')]);router[_0xe366('0xb')](_0xe366('0xe'),auth[_0xe366('0x8')](),controller[_0xe366('0xf')]);router[_0xe366('0xb')](_0xe366('0x10'),auth[_0xe366('0x8')](),controller[_0xe366('0x11')]);router[_0xe366('0xb')](_0xe366('0x12'),auth['isAuthenticated'](),controller[_0xe366('0x13')]);router['get'](_0xe366('0x14'),auth['isAuthenticated'](),controller[_0xe366('0x15')]);router[_0xe366('0xb')](_0xe366('0x16'),auth[_0xe366('0x8')](),controller[_0xe366('0x17')]);router[_0xe366('0xb')](_0xe366('0x18'),auth[_0xe366('0x8')](),controller[_0xe366('0x19')]);router[_0xe366('0xb')](_0xe366('0x1a'),auth['isAuthenticated'](),controller[_0xe366('0x1b')]);router[_0xe366('0xb')]('/:id/verify',auth[_0xe366('0x8')](),controller['verifySmtp']);router[_0xe366('0xb')]('/:id/users',auth[_0xe366('0x8')](),controller[_0xe366('0x1c')]);router[_0xe366('0x1d')](_0xe366('0xe'),auth[_0xe366('0x8')](),controller[_0xe366('0x1e')]);router[_0xe366('0x1d')](_0xe366('0x10'),auth[_0xe366('0x8')](),controller['addAnswer']);router[_0xe366('0x1d')]('/',auth[_0xe366('0x8')](),controller[_0xe366('0x1f')]);router[_0xe366('0x1d')](_0xe366('0x12'),auth['isAuthenticated'](),controller[_0xe366('0x20')]);router[_0xe366('0x1d')](_0xe366('0x14'),auth[_0xe366('0x8')](),controller[_0xe366('0x21')]);router[_0xe366('0x1d')](_0xe366('0x16'),auth[_0xe366('0x8')](),controller[_0xe366('0x22')]);router[_0xe366('0x1d')](_0xe366('0x18'),auth[_0xe366('0x8')](),controller[_0xe366('0x23')]);router[_0xe366('0x1d')](_0xe366('0x24'),auth[_0xe366('0x8')](),controller[_0xe366('0x25')]);router[_0xe366('0x1d')]('/:id/users',auth[_0xe366('0x8')](),controller[_0xe366('0x26')]);router[_0xe366('0x27')](_0xe366('0xc'),auth[_0xe366('0x8')](),controller[_0xe366('0x28')]);router['delete'](_0xe366('0xe'),auth[_0xe366('0x8')](),controller['removeDispositions']);router[_0xe366('0x29')](_0xe366('0x10'),auth[_0xe366('0x8')](),controller[_0xe366('0x2a')]);router[_0xe366('0x29')]('/:id/in_servers',auth[_0xe366('0x8')](),controller[_0xe366('0x2b')]);router[_0xe366('0x29')](_0xe366('0x14'),auth[_0xe366('0x8')](),controller[_0xe366('0x2c')]);router[_0xe366('0x29')](_0xe366('0xc'),auth[_0xe366('0x8')](),controller[_0xe366('0x2d')]);router[_0xe366('0x29')](_0xe366('0x2e'),auth[_0xe366('0x8')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x8e35=['/:id/users','post','addDisposition','addAnswer','create','addInteraction','addApplications','/:id/send','send','addAgents','put','update','delete','removeImap','removeSmtp','destroy','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','/:id/out_servers','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/verify','verifySmtp'];(function(_0xfceccc,_0x3c3365){var _0x47e40c=function(_0x1f6c56){while(--_0x1f6c56){_0xfceccc['push'](_0xfceccc['shift']());}};_0x47e40c(++_0x3c3365);}(_0x8e35,0xca));var _0x58e3=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x8e35[_0x21a9d9];return _0x46adce;};'use strict';var multer=require(_0x58e3('0x0'));var util=require(_0x58e3('0x1'));var path=require(_0x58e3('0x2'));var timeout=require(_0x58e3('0x3'));var express=require('express');var router=express[_0x58e3('0x4')]();var fs_extra=require(_0x58e3('0x5'));var auth=require(_0x58e3('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./mailAccount.controller');router[_0x58e3('0x7')]('/',auth[_0x58e3('0x8')](),controller[_0x58e3('0x9')]);router['get'](_0x58e3('0xa'),auth[_0x58e3('0x8')](),controller[_0x58e3('0xb')]);router[_0x58e3('0x7')](_0x58e3('0xc'),auth[_0x58e3('0x8')](),controller[_0x58e3('0xd')]);router[_0x58e3('0x7')](_0x58e3('0xe'),auth[_0x58e3('0x8')](),controller[_0x58e3('0xf')]);router[_0x58e3('0x7')](_0x58e3('0x10'),auth['isAuthenticated'](),controller[_0x58e3('0x11')]);router['get'](_0x58e3('0x12'),auth[_0x58e3('0x8')](),controller[_0x58e3('0x13')]);router[_0x58e3('0x7')](_0x58e3('0x14'),auth[_0x58e3('0x8')](),controller['getSmtp']);router[_0x58e3('0x7')](_0x58e3('0x15'),auth[_0x58e3('0x8')](),controller[_0x58e3('0x16')]);router[_0x58e3('0x7')](_0x58e3('0x17'),auth[_0x58e3('0x8')](),controller['getApplications']);router[_0x58e3('0x7')](_0x58e3('0x18'),auth['isAuthenticated'](),controller[_0x58e3('0x19')]);router['get'](_0x58e3('0x1a'),auth[_0x58e3('0x8')](),controller[_0x58e3('0x1b')]);router['get'](_0x58e3('0x1c'),auth[_0x58e3('0x8')](),controller['getAgents']);router[_0x58e3('0x1d')](_0x58e3('0xe'),auth[_0x58e3('0x8')](),controller[_0x58e3('0x1e')]);router[_0x58e3('0x1d')]('/:id/canned_answers',auth[_0x58e3('0x8')](),controller[_0x58e3('0x1f')]);router[_0x58e3('0x1d')]('/',auth[_0x58e3('0x8')](),controller[_0x58e3('0x20')]);router[_0x58e3('0x1d')]('/:id/in_servers',auth[_0x58e3('0x8')](),controller['addImap']);router[_0x58e3('0x1d')](_0x58e3('0x14'),auth['isAuthenticated'](),controller['addSmtp']);router[_0x58e3('0x1d')](_0x58e3('0x15'),auth[_0x58e3('0x8')](),controller[_0x58e3('0x21')]);router['post'](_0x58e3('0x17'),auth[_0x58e3('0x8')](),controller[_0x58e3('0x22')]);router[_0x58e3('0x1d')](_0x58e3('0x23'),auth[_0x58e3('0x8')](),controller[_0x58e3('0x24')]);router[_0x58e3('0x1d')]('/:id/users',auth[_0x58e3('0x8')](),controller[_0x58e3('0x25')]);router[_0x58e3('0x26')](_0x58e3('0xc'),auth[_0x58e3('0x8')](),controller[_0x58e3('0x27')]);router[_0x58e3('0x28')]('/:id/dispositions',auth[_0x58e3('0x8')](),controller['removeDispositions']);router[_0x58e3('0x28')](_0x58e3('0x10'),auth[_0x58e3('0x8')](),controller['removeAnswers']);router[_0x58e3('0x28')](_0x58e3('0x12'),auth[_0x58e3('0x8')](),controller[_0x58e3('0x29')]);router['delete'](_0x58e3('0x14'),auth['isAuthenticated'](),controller[_0x58e3('0x2a')]);router[_0x58e3('0x28')](_0x58e3('0xc'),auth[_0x58e3('0x8')](),controller[_0x58e3('0x2b')]);router[_0x58e3('0x28')](_0x58e3('0x1c'),auth['isAuthenticated'](),controller[_0x58e3('0x2c')]);module[_0x58e3('0x2d')]=router;
\ No newline at end of file
index 7910deb..7cd39a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee24=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','exports','STRING','BOOLEAN','Arial,Helvetica,sans-serif','INTEGER','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}'];(function(_0x50235f,_0x1f6fb9){var _0x50d800=function(_0x4a7b87){while(--_0x4a7b87){_0x50235f['push'](_0x50235f['shift']());}};_0x50d800(++_0x1f6fb9);}(_0xee24,0x1a6));var _0x4ee2=function(_0x10abcd,_0x2fd20b){_0x10abcd=_0x10abcd-0x0;var _0x22a5f3=_0xee24[_0x10abcd];return _0x22a5f3;};'use strict';var Sequelize=require('sequelize');module[_0x4ee2('0x0')]={'description':{'type':Sequelize[_0x4ee2('0x1')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x4ee2('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x4ee2('0x1')],'allowNull':![]},'template':{'type':Sequelize['TEXT']},'markAsUnread':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x4ee2('0x1')],'allowNull':![],'defaultValue':_0x4ee2('0x3')},'fontSize':{'type':Sequelize[_0x4ee2('0x4')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x4ee2('0x5')],'defaultValue':function(){return _0x4ee2('0x6');}},'notificationSound':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x4ee2('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4ee2('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x4ee2('0x7')},'mandatoryDisposition':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':![],'comment':_0x4ee2('0x8'),'set':function(_0x2145d5){if(!_0x2145d5)this[_0x4ee2('0x9')]('mandatoryDispositionPauseId',null);this[_0x4ee2('0x9')](_0x4ee2('0xa'),_0x2145d5);}}};
\ No newline at end of file
+var _0xff96=['sequelize','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','UNSIGNED','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition'];(function(_0x4655fb,_0x4fcd72){var _0x2f2caa=function(_0x20f375){while(--_0x20f375){_0x4655fb['push'](_0x4655fb['shift']());}};_0x2f2caa(++_0x4fcd72);}(_0xff96,0x179));var _0x6ff9=function(_0x332ddf,_0x1ed1b5){_0x332ddf=_0x332ddf-0x0;var _0x4798a9=_0xff96[_0x332ddf];return _0x4798a9;};'use strict';var Sequelize=require(_0x6ff9('0x0'));module[_0x6ff9('0x1')]={'description':{'type':Sequelize[_0x6ff9('0x2')]},'name':{'type':Sequelize[_0x6ff9('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0x6ff9('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x6ff9('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x6ff9('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0x6ff9('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x6ff9('0x4')]},'markAsUnread':{'type':Sequelize[_0x6ff9('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x6ff9('0x2')],'allowNull':![],'defaultValue':_0x6ff9('0x5')},'fontSize':{'type':Sequelize['INTEGER'](0x2)[_0x6ff9('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x6ff9('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x6ff9('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x6ff9('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x6ff9('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x6ff9('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x6ff9('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x6ff9('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x6ff9('0x3')],'defaultValue':![],'comment':_0x6ff9('0x9'),'set':function(_0xdadc3c){if(!_0xdadc3c)this[_0x6ff9('0xa')](_0x6ff9('0xb'),null);this[_0x6ff9('0xa')](_0x6ff9('0xc'),_0xdadc3c);}}};
\ No newline at end of file
index 16db6e9..de6dd35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4622=['VIRTUAL','options','includeAll','include','rows','params','find','body','describe','MailAccountId','Disposition','findOne','order','addAnswer','CannedAnswer','create','findAll','removeAnswers','ids','key','email','ListId','active','description','isNil','cauthentication','user','password','pass','cpassword','authentication','host','port','service','cservice','cuser','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','MailAccounts','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','setImap','getSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','User','Owner','fullname','Tag','color','tag','addApplications','sequelize','MailApplication','findAndCountAll','priority','getApplications','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','send','CmList','List','Contacts','DESC','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','auth','secure','defaults','messageId','subject','attach','out','Interaction','Messages','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','zip-dir','request-promise','bluebird','mustache','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','localhost','redis','./mailAccount.socket','register','jayson/promise','client','http','request','then','info','MailAccount,\x20%s,\x20%s','debug','error','code','message','request\x20sent','result','catch','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','UserProfileResource','end','stack','name','index','MailServerIn','Imap','MailServerOut','Smtp','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','type','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge'];(function(_0x5810b8,_0x401588){var _0x13a456=function(_0x4c25e1){while(--_0x4c25e1){_0x5810b8['push'](_0x5810b8['shift']());}};_0x13a456(++_0x401588);}(_0x4622,0x1e7));var _0x2462=function(_0x3cc9d9,_0x69ed38){_0x3cc9d9=_0x3cc9d9-0x0;var _0x1a425d=_0x4622[_0x3cc9d9];return _0x1a425d;};'use strict';var emlformat=require(_0x2462('0x0'));var rimraf=require(_0x2462('0x1'));var zipdir=require(_0x2462('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2462('0x3'));var moment=require('moment');var BPromise=require(_0x2462('0x4'));var Mustache=require(_0x2462('0x5'));var util=require('util');var path=require(_0x2462('0x6'));var sox=require('sox');var csv=require(_0x2462('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2462('0x8'));var squel=require(_0x2462('0x9'));var crypto=require(_0x2462('0xa'));var jsforce=require(_0x2462('0xb'));var deskjs=require(_0x2462('0xc'));var toCsv=require(_0x2462('0x7'));var querystring=require(_0x2462('0xd'));var Papa=require(_0x2462('0xe'));var htmlToText=require(_0x2462('0xf'));var juice=require(_0x2462('0x10'));var Redis=require(_0x2462('0x11'));var authService=require(_0x2462('0x12'));var qs=require(_0x2462('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2462('0x14'));var logger=require(_0x2462('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x2462('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2462('0x17'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x2462('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2462('0x19')]));require(_0x2462('0x1a'))[_0x2462('0x1b')](socket);var jayson=require(_0x2462('0x1c'));var client=jayson[_0x2462('0x1d')][_0x2462('0x1e')]({'port':0x232b});function respondWithRpcPromise(_0x2fd98f,_0x4ad894,_0x4fa983,_0x4d132b){return new BPromise(function(_0x571487,_0x4622ae){var _0xd3469f=_0x4d132b||client;return _0xd3469f[_0x2462('0x1f')](_0x2fd98f,_0x4fa983)[_0x2462('0x20')](function(_0xb868c){logger[_0x2462('0x21')](_0x2462('0x22'),_0x4ad894,'request\x20sent');logger[_0x2462('0x23')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x4ad894,'request\x20sent',JSON['stringify'](_0xb868c));if(_0xb868c['error']){if(_0xb868c[_0x2462('0x24')][_0x2462('0x25')]===0x1f4){logger[_0x2462('0x24')](_0x2462('0x22'),_0x4ad894,_0xb868c[_0x2462('0x24')][_0x2462('0x26')]);return _0x4622ae(_0xb868c[_0x2462('0x24')][_0x2462('0x26')]);}logger['error'](_0x2462('0x22'),_0x4ad894,_0xb868c[_0x2462('0x24')][_0x2462('0x26')]);return _0x571487(_0xb868c[_0x2462('0x24')][_0x2462('0x26')]);}else{logger[_0x2462('0x21')](_0x2462('0x22'),_0x4ad894,_0x2462('0x27'));_0x571487(_0xb868c[_0x2462('0x28')][_0x2462('0x26')]);}})[_0x2462('0x29')](function(_0x4a917b){logger[_0x2462('0x24')](_0x2462('0x22'),_0x4ad894,_0x4a917b);_0x4622ae(_0x4a917b);});});}function respondWithStatusCode(_0x156546,_0x6dd46){_0x6dd46=_0x6dd46||0xcc;return function(_0x324b97){if(_0x324b97){return _0x156546[_0x2462('0x2a')](_0x6dd46);}return _0x156546[_0x2462('0x2b')](_0x6dd46)['end']();};}function respondWithResult(_0x1da604,_0x4c7788){_0x4c7788=_0x4c7788||0xc8;return function(_0x52828c){if(_0x52828c){return _0x1da604[_0x2462('0x2b')](_0x4c7788)[_0x2462('0x2c')](_0x52828c);}};}function respondWithFilteredResult(_0x27abc3,_0x143ee3){return function(_0x46b624){if(_0x46b624){var _0xccb954=typeof _0x143ee3[_0x2462('0x2d')]==='undefined'&&typeof _0x143ee3['limit']===_0x2462('0x2e');var _0x598d06=_0x46b624[_0x2462('0x2f')];var _0x2feac3=_0xccb954?0x0:_0x143ee3['offset'];var _0xfd9ebc=_0xccb954?_0x46b624[_0x2462('0x2f')]:_0x143ee3[_0x2462('0x2d')]+_0x143ee3[_0x2462('0x30')];var _0x1a6196;if(_0xfd9ebc>=_0x598d06){_0xfd9ebc=_0x598d06;_0x1a6196=0xc8;}else{_0x1a6196=0xce;}_0x27abc3[_0x2462('0x2b')](_0x1a6196);return _0x27abc3[_0x2462('0x31')](_0x2462('0x32'),_0x2feac3+'-'+_0xfd9ebc+'/'+_0x598d06)['json'](_0x46b624);}return null;};}function patchUpdates(_0x58af47){return function(_0x4a431f){try{jsonpatch[_0x2462('0x33')](_0x4a431f,_0x58af47,!![]);}catch(_0x5ee7f3){return BPromise[_0x2462('0x34')](_0x5ee7f3);}return _0x4a431f[_0x2462('0x35')]();};}function saveUpdates(_0x32b81e,_0x3f96b5){return function(_0x2740bc){if(_0x2740bc){return _0x2740bc[_0x2462('0x36')](_0x32b81e)['then'](function(_0x4a1a78){return _0x4a1a78;});}return null;};}function removeEntity(_0x543ef0,_0x4fe51e){return function(_0x2ec0bd){if(_0x2ec0bd){return _0x2ec0bd[_0x2462('0x37')]()[_0x2462('0x20')](function(){var _0xa0bad0=_0x2ec0bd['get']({'plain':!![]});var _0x12e1b2='MailAccounts';return db[_0x2462('0x38')][_0x2462('0x37')]({'where':{'type':_0x12e1b2,'resourceId':_0xa0bad0['id']}})[_0x2462('0x20')](function(){return _0x2ec0bd;});})[_0x2462('0x20')](function(){_0x543ef0['status'](0xcc)[_0x2462('0x39')]();});}};}function handleEntityNotFound(_0x2a1dcb,_0x950da1){return function(_0x4a10c2){if(!_0x4a10c2){_0x2a1dcb[_0x2462('0x2a')](0x194);}return _0x4a10c2;};}function handleError(_0xd9e4e6,_0x438ccf){_0x438ccf=_0x438ccf||0x1f4;return function(_0x484639){logger[_0x2462('0x24')](_0x484639[_0x2462('0x3a')]);if(_0x484639[_0x2462('0x3b')]){delete _0x484639[_0x2462('0x3b')];}_0xd9e4e6[_0x2462('0x2b')](_0x438ccf)['send'](_0x484639);};}exports[_0x2462('0x3c')]=function(_0x336c3f,_0x76e4cd){var _0xf11fd1={'include':[{'model':db[_0x2462('0x3d')],'as':_0x2462('0x3e')},{'model':db[_0x2462('0x3f')],'as':_0x2462('0x40')},{'model':db[_0x2462('0x41')],'as':_0x2462('0x42')}]},_0x431ae8={},_0x409370={'count':0x0,'rows':[]};var _0x27dd72=_[_0x2462('0x43')](db[_0x2462('0x44')][_0x2462('0x45')],function(_0x39d6c8){return{'name':_0x39d6c8['fieldName'],'type':_0x39d6c8[_0x2462('0x46')]['key']};});_0x431ae8[_0x2462('0x47')]=_[_0x2462('0x43')](_0x27dd72,_0x2462('0x3b'));_0x431ae8['query']=_[_0x2462('0x48')](_0x336c3f[_0x2462('0x49')]);_0x431ae8['filters']=_['intersection'](_0x431ae8['model'],_0x431ae8['query']);_0xf11fd1[_0x2462('0x4a')]=_[_0x2462('0x4b')](_0x431ae8[_0x2462('0x47')],qs[_0x2462('0x4c')](_0x336c3f[_0x2462('0x49')]['fields']));_0xf11fd1[_0x2462('0x4a')]=_0xf11fd1['attributes'][_0x2462('0x4d')]?_0xf11fd1[_0x2462('0x4a')]:_0x431ae8[_0x2462('0x47')];if(!_0x336c3f[_0x2462('0x49')][_0x2462('0x4e')](_0x2462('0x4f'))){_0xf11fd1[_0x2462('0x30')]=qs['limit'](_0x336c3f[_0x2462('0x49')]['limit']);_0xf11fd1[_0x2462('0x2d')]=qs['offset'](_0x336c3f[_0x2462('0x49')][_0x2462('0x2d')]);}_0xf11fd1['order']=qs[_0x2462('0x50')](_0x336c3f[_0x2462('0x49')]['sort']);_0xf11fd1[_0x2462('0x51')]=qs[_0x2462('0x52')](_[_0x2462('0x53')](_0x336c3f['query'],_0x431ae8[_0x2462('0x52')]),_0x27dd72);if(_0x336c3f[_0x2462('0x49')][_0x2462('0x54')]){_0xf11fd1[_0x2462('0x51')]=_[_0x2462('0x55')](_0xf11fd1[_0x2462('0x51')],{'$or':_[_0x2462('0x43')](_0x27dd72,function(_0x44d6cf){if(_0x44d6cf[_0x2462('0x46')]!==_0x2462('0x56')){var _0x4f6748={};_0x4f6748[_0x44d6cf[_0x2462('0x3b')]]={'$like':'%'+_0x336c3f['query'][_0x2462('0x54')]+'%'};return _0x4f6748;}})});}_0xf11fd1=_[_0x2462('0x55')]({},_0xf11fd1,_0x336c3f[_0x2462('0x57')]);var _0x59b6dd={'where':_0xf11fd1['where']};return db[_0x2462('0x44')][_0x2462('0x2f')](_0x59b6dd)[_0x2462('0x20')](function(_0x5b96b1){_0x409370[_0x2462('0x2f')]=_0x5b96b1;if(_0x336c3f['query'][_0x2462('0x58')]){_0xf11fd1[_0x2462('0x59')]=[{'all':!![]}];}return db[_0x2462('0x44')]['findAll'](_0xf11fd1);})['then'](function(_0x5a2213){_0x409370[_0x2462('0x5a')]=_0x5a2213;return _0x409370;})['then'](respondWithFilteredResult(_0x76e4cd,_0xf11fd1))['catch'](handleError(_0x76e4cd,null));};exports['show']=function(_0x3fbc32,_0xd63a8){var _0xc09dfc={'raw':![],'where':{'id':_0x3fbc32[_0x2462('0x5b')]['id']},'include':[{'model':db[_0x2462('0x3d')],'as':_0x2462('0x3e')},{'model':db['MailServerOut'],'as':_0x2462('0x40')},{'model':db['Pause'],'as':_0x2462('0x42')}]},_0x417c1a={};_0x417c1a[_0x2462('0x47')]=_['keys'](db['MailAccount'][_0x2462('0x45')]);_0x417c1a[_0x2462('0x49')]=_['keys'](_0x3fbc32[_0x2462('0x49')]);_0x417c1a[_0x2462('0x52')]=_[_0x2462('0x4b')](_0x417c1a[_0x2462('0x47')],_0x417c1a[_0x2462('0x49')]);_0xc09dfc[_0x2462('0x4a')]=_[_0x2462('0x4b')](_0x417c1a[_0x2462('0x47')],qs['fields'](_0x3fbc32[_0x2462('0x49')][_0x2462('0x4c')]));_0xc09dfc['attributes']=_0xc09dfc[_0x2462('0x4a')]['length']?_0xc09dfc['attributes']:_0x417c1a[_0x2462('0x47')];if(_0x3fbc32[_0x2462('0x49')][_0x2462('0x58')]){_0xc09dfc[_0x2462('0x59')]=[{'all':!![]}];}_0xc09dfc=_[_0x2462('0x55')]({},_0xc09dfc,_0x3fbc32[_0x2462('0x57')]);return db[_0x2462('0x44')][_0x2462('0x5c')](_0xc09dfc)['then'](handleEntityNotFound(_0xd63a8,null))['then'](respondWithResult(_0xd63a8,null))['catch'](handleError(_0xd63a8,null));};exports[_0x2462('0x36')]=function(_0xf3508c,_0x282476){if(_0xf3508c[_0x2462('0x5d')]['id']){delete _0xf3508c[_0x2462('0x5d')]['id'];}return db[_0x2462('0x44')][_0x2462('0x5c')]({'where':{'id':_0xf3508c[_0x2462('0x5b')]['id']},'include':[{'model':db[_0x2462('0x3d')],'as':_0x2462('0x3e')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0x2462('0x41')],'as':_0x2462('0x42')}]})[_0x2462('0x20')](handleEntityNotFound(_0x282476,null))[_0x2462('0x20')](saveUpdates(_0xf3508c[_0x2462('0x5d')],null))[_0x2462('0x20')](function(_0x29ea9a){if(_0x29ea9a&&_0xf3508c['body'][_0x2462('0x3e')]){return db[_0x2462('0x3d')][_0x2462('0x36')](_0xf3508c[_0x2462('0x5d')][_0x2462('0x3e')],{'where':{'MailAccountId':_0x29ea9a['id']}})[_0x2462('0x20')](function(){return _0x29ea9a;});}return _0x29ea9a;})[_0x2462('0x20')](function(_0x25e68d){if(_0x25e68d&&_0xf3508c[_0x2462('0x5d')][_0x2462('0x40')]){return db[_0x2462('0x3f')][_0x2462('0x36')](_0xf3508c['body'][_0x2462('0x40')],{'where':{'MailAccountId':_0x25e68d['id']}})['then'](function(){return _0x25e68d;});}return _0x25e68d;})[_0x2462('0x20')](respondWithResult(_0x282476,null))[_0x2462('0x29')](handleError(_0x282476,null));};exports['describe']=function(_0x10419c,_0x24ff64){return db[_0x2462('0x44')][_0x2462('0x5e')]()[_0x2462('0x20')](respondWithResult(_0x24ff64,null))[_0x2462('0x29')](handleError(_0x24ff64,null));};exports['addDisposition']=function(_0x20c718,_0x4d9ab2,_0xa2fe79){if(_0x20c718[_0x2462('0x5d')]['id']){delete _0x20c718['body']['id'];}return db['MailAccount'][_0x2462('0x5c')]({'where':{'id':_0x20c718[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x4d9ab2,null))[_0x2462('0x20')](function(_0x487305){if(_0x487305){_0x20c718[_0x2462('0x5d')][_0x2462('0x5f')]=_0x487305['id'];return db[_0x2462('0x60')]['create'](_0x20c718['body']);}})[_0x2462('0x20')](respondWithResult(_0x4d9ab2,null))['catch'](handleError(_0x4d9ab2,null));};exports['getDispositions']=function(_0x45a553,_0x1b28b1,_0x1c7960){var _0x1b4b1f={'raw':![],'where':{}};var _0x53688c={};var _0x998101={'count':0x0,'rows':[]};return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x45a553[_0x2462('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1b28b1,null))[_0x2462('0x20')](function(_0x20f0f7){if(_0x20f0f7){_0x53688c[_0x2462('0x47')]=_['keys'](db[_0x2462('0x60')][_0x2462('0x45')]);_0x53688c[_0x2462('0x49')]=_[_0x2462('0x48')](_0x45a553[_0x2462('0x49')]);_0x53688c[_0x2462('0x52')]=_[_0x2462('0x4b')](_0x53688c[_0x2462('0x47')],_0x53688c[_0x2462('0x49')]);_0x1b4b1f[_0x2462('0x4a')]=_[_0x2462('0x4b')](_0x53688c[_0x2462('0x47')],qs[_0x2462('0x4c')](_0x45a553[_0x2462('0x49')]['fields']));_0x1b4b1f[_0x2462('0x4a')]=_0x1b4b1f[_0x2462('0x4a')][_0x2462('0x4d')]?_0x1b4b1f[_0x2462('0x4a')]:_0x53688c[_0x2462('0x47')];if(!_0x45a553['query'][_0x2462('0x4e')]('nolimit')){_0x1b4b1f[_0x2462('0x30')]=qs[_0x2462('0x30')](_0x45a553[_0x2462('0x49')]['limit']);_0x1b4b1f[_0x2462('0x2d')]=qs[_0x2462('0x2d')](_0x45a553[_0x2462('0x49')][_0x2462('0x2d')]);}_0x1b4b1f[_0x2462('0x62')]=qs[_0x2462('0x50')](_0x45a553[_0x2462('0x49')][_0x2462('0x50')]);_0x1b4b1f[_0x2462('0x51')]=qs[_0x2462('0x52')](_[_0x2462('0x53')](_0x45a553[_0x2462('0x49')],_0x53688c[_0x2462('0x52')]));_0x1b4b1f[_0x2462('0x51')][_0x2462('0x5f')]=_0x20f0f7['id'];if(_0x45a553[_0x2462('0x49')][_0x2462('0x54')]){_0x1b4b1f['where']=_['merge'](_0x1b4b1f[_0x2462('0x51')],{'$or':_['map'](_0x1b4b1f['attributes'],function(_0x36363e){var _0x594854={};_0x594854[_0x36363e]={'$like':'%'+_0x45a553['query'][_0x2462('0x54')]+'%'};return _0x594854;})});}_0x1b4b1f=_[_0x2462('0x55')]({},_0x1b4b1f,_0x45a553['options']);return db[_0x2462('0x60')][_0x2462('0x2f')]({'where':_0x1b4b1f[_0x2462('0x51')]})[_0x2462('0x20')](function(_0x3d3e95){_0x998101[_0x2462('0x2f')]=_0x3d3e95;if(_0x45a553['query'][_0x2462('0x58')]){_0x1b4b1f[_0x2462('0x59')]=[{'all':!![]}];}return db[_0x2462('0x60')]['findAll'](_0x1b4b1f);})['then'](function(_0x4d2440){_0x998101['rows']=_0x4d2440;return _0x998101;});}})[_0x2462('0x20')](respondWithFilteredResult(_0x1b28b1,_0x1b4b1f))[_0x2462('0x29')](handleError(_0x1b28b1,null));};exports['removeDispositions']=function(_0x478d42,_0x54ef12,_0x1adb3e){return db['MailAccount'][_0x2462('0x5c')]({'where':{'id':_0x478d42[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x54ef12,null))[_0x2462('0x20')](function(_0x4a2776){if(_0x4a2776){return _0x4a2776['removeDispositions'](_0x478d42[_0x2462('0x49')]['ids']);}})[_0x2462('0x20')](respondWithStatusCode(_0x54ef12,null))[_0x2462('0x29')](handleError(_0x54ef12,null));};exports[_0x2462('0x63')]=function(_0x4d18b6,_0x5d9257,_0x30ba54){if(_0x4d18b6[_0x2462('0x5d')]['id']){delete _0x4d18b6[_0x2462('0x5d')]['id'];}return db[_0x2462('0x44')]['find']({'where':{'id':_0x4d18b6['params']['id']}})['then'](handleEntityNotFound(_0x5d9257,null))[_0x2462('0x20')](function(_0x547e35){if(_0x547e35){_0x4d18b6['body'][_0x2462('0x5f')]=_0x547e35['id'];return db[_0x2462('0x64')][_0x2462('0x65')](_0x4d18b6[_0x2462('0x5d')]);}})[_0x2462('0x20')](respondWithResult(_0x5d9257,null))['catch'](handleError(_0x5d9257,null));};exports['getAnswers']=function(_0x19c2ae,_0x5d93f4,_0x2a7f82){var _0x106689={'raw':![],'where':{}};var _0x22b9d0={};var _0x4151a5={'count':0x0,'rows':[]};return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x19c2ae['params']['id']}})['then'](handleEntityNotFound(_0x5d93f4,null))[_0x2462('0x20')](function(_0x466767){if(_0x466767){_0x22b9d0[_0x2462('0x47')]=_[_0x2462('0x48')](db[_0x2462('0x64')][_0x2462('0x45')]);_0x22b9d0[_0x2462('0x49')]=_[_0x2462('0x48')](_0x19c2ae['query']);_0x22b9d0[_0x2462('0x52')]=_[_0x2462('0x4b')](_0x22b9d0[_0x2462('0x47')],_0x22b9d0[_0x2462('0x49')]);_0x106689[_0x2462('0x4a')]=_[_0x2462('0x4b')](_0x22b9d0['model'],qs[_0x2462('0x4c')](_0x19c2ae['query'][_0x2462('0x4c')]));_0x106689[_0x2462('0x4a')]=_0x106689[_0x2462('0x4a')][_0x2462('0x4d')]?_0x106689[_0x2462('0x4a')]:_0x22b9d0[_0x2462('0x47')];if(!_0x19c2ae[_0x2462('0x49')][_0x2462('0x4e')]('nolimit')){_0x106689['limit']=qs[_0x2462('0x30')](_0x19c2ae['query']['limit']);_0x106689[_0x2462('0x2d')]=qs[_0x2462('0x2d')](_0x19c2ae[_0x2462('0x49')]['offset']);}_0x106689[_0x2462('0x62')]=qs['sort'](_0x19c2ae['query'][_0x2462('0x50')]);_0x106689[_0x2462('0x51')]=qs['filters'](_[_0x2462('0x53')](_0x19c2ae[_0x2462('0x49')],_0x22b9d0[_0x2462('0x52')]));_0x106689[_0x2462('0x51')][_0x2462('0x5f')]=_0x466767['id'];if(_0x19c2ae[_0x2462('0x49')][_0x2462('0x54')]){_0x106689[_0x2462('0x51')]=_[_0x2462('0x55')](_0x106689[_0x2462('0x51')],{'$or':_[_0x2462('0x43')](_0x106689[_0x2462('0x4a')],function(_0x1a45bc){var _0x443b28={};_0x443b28[_0x1a45bc]={'$like':'%'+_0x19c2ae[_0x2462('0x49')][_0x2462('0x54')]+'%'};return _0x443b28;})});}_0x106689=_[_0x2462('0x55')]({},_0x106689,_0x19c2ae['options']);return db[_0x2462('0x64')][_0x2462('0x2f')]({'where':_0x106689['where']})[_0x2462('0x20')](function(_0x10ef4f){_0x4151a5[_0x2462('0x2f')]=_0x10ef4f;if(_0x19c2ae['query'][_0x2462('0x58')]){_0x106689[_0x2462('0x59')]=[{'all':!![]}];}return db[_0x2462('0x64')][_0x2462('0x66')](_0x106689);})[_0x2462('0x20')](function(_0xdbb1c8){_0x4151a5[_0x2462('0x5a')]=_0xdbb1c8;return _0x4151a5;});}})[_0x2462('0x20')](respondWithFilteredResult(_0x5d93f4,_0x106689))['catch'](handleError(_0x5d93f4,null));};exports[_0x2462('0x67')]=function(_0x489985,_0x4c7781,_0x2c7d68){return db[_0x2462('0x44')][_0x2462('0x5c')]({'where':{'id':_0x489985[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x4c7781,null))[_0x2462('0x20')](function(_0x2f9712){if(_0x2f9712){return _0x2f9712[_0x2462('0x67')](_0x489985[_0x2462('0x49')][_0x2462('0x68')]);}})[_0x2462('0x20')](respondWithStatusCode(_0x4c7781,null))[_0x2462('0x29')](handleError(_0x4c7781,null));};exports[_0x2462('0x65')]=function(_0x18a108,_0x57df77){var _0x39d7a5={'name':_0x18a108[_0x2462('0x5d')][_0x2462('0x3b')],'key':_0x18a108[_0x2462('0x5d')][_0x2462('0x69')],'email':_0x18a108[_0x2462('0x5d')][_0x2462('0x6a')],'ListId':_0x18a108[_0x2462('0x5d')][_0x2462('0x6b')],'active':!_['isNil'](_0x18a108[_0x2462('0x5d')]['active'])?_0x18a108[_0x2462('0x5d')][_0x2462('0x6c')]:!![],'description':_0x18a108[_0x2462('0x5d')][_0x2462('0x6d')]||null,'Imap':{},'Smtp':{}};if(_[_0x2462('0x6e')](_0x18a108[_0x2462('0x5d')]['cservice'])){if(_0x18a108[_0x2462('0x5d')][_0x2462('0x6f')]){_0x39d7a5[_0x2462('0x3e')][_0x2462('0x70')]=_0x39d7a5[_0x2462('0x40')]['user']=_0x18a108['body']['cuser'];_0x39d7a5['Imap'][_0x2462('0x71')]=_0x39d7a5['Smtp'][_0x2462('0x72')]=_0x18a108[_0x2462('0x5d')][_0x2462('0x73')];}else{_0x39d7a5[_0x2462('0x3e')]['authentication']=_0x39d7a5['Smtp'][_0x2462('0x74')]=![];}_0x39d7a5[_0x2462('0x3e')][_0x2462('0x75')]=_0x18a108[_0x2462('0x5d')][_0x2462('0x3e')][_0x2462('0x75')];_0x39d7a5[_0x2462('0x3e')]['port']=_0x18a108['body'][_0x2462('0x3e')][_0x2462('0x76')];_0x39d7a5['Smtp'][_0x2462('0x75')]=_0x18a108[_0x2462('0x5d')][_0x2462('0x40')]['host'];_0x39d7a5['Smtp'][_0x2462('0x76')]=_0x18a108[_0x2462('0x5d')][_0x2462('0x40')][_0x2462('0x76')];}else{_0x39d7a5[_0x2462('0x3e')]['service']=_0x39d7a5['Smtp'][_0x2462('0x77')]=_0x18a108[_0x2462('0x5d')][_0x2462('0x78')];_0x39d7a5[_0x2462('0x3e')]['user']=_0x39d7a5[_0x2462('0x40')][_0x2462('0x70')]=_0x18a108[_0x2462('0x5d')][_0x2462('0x79')];_0x39d7a5[_0x2462('0x3e')][_0x2462('0x71')]=_0x39d7a5[_0x2462('0x40')][_0x2462('0x72')]=_0x18a108['body'][_0x2462('0x73')];}return db[_0x2462('0x44')][_0x2462('0x65')](_0x39d7a5,{'include':[{'model':db[_0x2462('0x3f')],'as':_0x2462('0x40')},{'model':db[_0x2462('0x3d')],'as':'Imap'}]})['then'](function(_0x419690){var _0x32a80b=_0x18a108[_0x2462('0x70')][_0x2462('0x7a')]({'plain':!![]});if(!_0x32a80b)throw new Error(_0x2462('0x7b'));if(_0x32a80b['role']==='user'){var _0x13c5af=_0x419690[_0x2462('0x7a')]({'plain':!![]});return db[_0x2462('0x7c')][_0x2462('0x5c')]({'where':{'name':_0x2462('0x7d'),'userProfileId':_0x32a80b['userProfileId']},'raw':!![]})[_0x2462('0x20')](function(_0x46da77){if(_0x46da77&&_0x46da77[_0x2462('0x7e')]===0x0){return db[_0x2462('0x38')][_0x2462('0x65')]({'name':_0x13c5af[_0x2462('0x3b')],'resourceId':_0x13c5af['id'],'type':_0x46da77[_0x2462('0x3b')],'sectionId':_0x46da77['id']},{})[_0x2462('0x20')](function(){return _0x419690;});}else{return _0x419690;}})[_0x2462('0x29')](function(_0x782d5e){logger['error'](_0x2462('0x7f'),_0x782d5e);throw _0x782d5e;});}return _0x419690;})[_0x2462('0x20')](respondWithResult(_0x57df77,0xc9))[_0x2462('0x29')](handleError(_0x57df77,null));};exports[_0x2462('0x80')]=function(_0x4fba41,_0x48d707,_0xb8e42b){return db['MailAccount']['findOne']({'where':{'id':_0x4fba41[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x48d707,null))[_0x2462('0x20')](function(_0x54745b){if(_0x54745b){return _0x54745b[_0x2462('0x80')]();}return null;})[_0x2462('0x20')](respondWithResult(_0x48d707,null))[_0x2462('0x29')](handleError(_0x48d707,null));};exports[_0x2462('0x81')]=function(_0x3eee21,_0x1a59de,_0x27cec9){if(_0x3eee21[_0x2462('0x5d')]['id']){delete _0x3eee21[_0x2462('0x5d')]['id'];}return db[_0x2462('0x44')][_0x2462('0x5c')]({'where':{'id':_0x3eee21[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x1a59de,null))[_0x2462('0x20')](function(_0xd4c32d){if(_0xd4c32d){_0x3eee21[_0x2462('0x5d')][_0x2462('0x5f')]=_0xd4c32d['id'];return db[_0x2462('0x3d')][_0x2462('0x65')](_0x3eee21['body']);}})[_0x2462('0x20')](respondWithResult(_0x1a59de,null))[_0x2462('0x29')](handleError(_0x1a59de,null));};exports['removeImap']=function(_0x42ad79,_0x1293e3,_0x2514ab){return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x42ad79['params']['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x1293e3,null))[_0x2462('0x20')](function(_0x32836a){if(_0x32836a){return _0x32836a[_0x2462('0x82')](null);}return null;})[_0x2462('0x20')](respondWithStatusCode(_0x1293e3,null))[_0x2462('0x29')](handleError(_0x1293e3,null));};exports[_0x2462('0x83')]=function(_0x1cb570,_0x2a26e1,_0x35a7e1){return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x1cb570[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x2a26e1,null))[_0x2462('0x20')](function(_0x14c04a){if(_0x14c04a){return _0x14c04a[_0x2462('0x83')]();}return null;})[_0x2462('0x20')](respondWithResult(_0x2a26e1,null))[_0x2462('0x29')](handleError(_0x2a26e1,null));};exports['addSmtp']=function(_0x21eee2,_0x1e1d23,_0x4fba16){if(_0x21eee2[_0x2462('0x5d')]['id']){delete _0x21eee2[_0x2462('0x5d')]['id'];}return db[_0x2462('0x44')]['find']({'where':{'id':_0x21eee2[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x1e1d23,null))[_0x2462('0x20')](function(_0x2a5768){if(_0x2a5768){_0x21eee2[_0x2462('0x5d')][_0x2462('0x5f')]=_0x2a5768['id'];return db[_0x2462('0x3f')][_0x2462('0x65')](_0x21eee2[_0x2462('0x5d')]);}})[_0x2462('0x20')](respondWithResult(_0x1e1d23,null))[_0x2462('0x29')](handleError(_0x1e1d23,null));};exports[_0x2462('0x84')]=function(_0x31e3cd,_0x5ec1ac,_0x1b12c0){return db[_0x2462('0x44')]['findOne']({'where':{'id':_0x31e3cd[_0x2462('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5ec1ac,null))[_0x2462('0x20')](function(_0xe2234c){if(_0xe2234c){return _0xe2234c[_0x2462('0x85')](null);}return null;})[_0x2462('0x20')](respondWithStatusCode(_0x5ec1ac,null))[_0x2462('0x29')](handleError(_0x5ec1ac,null));};exports[_0x2462('0x86')]=function(_0xd44881,_0x6b0676,_0x3bab68){return db[_0x2462('0x87')][_0x2462('0x5c')]({'where':{'id':_0xd44881['params']['id']}})['then'](handleEntityNotFound(_0x6b0676,null))['then'](function(_0x4bc0cf){if(_0x4bc0cf){return _0x4bc0cf[_0x2462('0x86')](_0xd44881[_0x2462('0x5d')][_0x2462('0x68')],_[_0x2462('0x88')](_0xd44881[_0x2462('0x5d')],[_0x2462('0x68'),'id'])||{});}})[_0x2462('0x20')](respondWithResult(_0x6b0676,null))[_0x2462('0x29')](handleError(_0x6b0676,null));};exports[_0x2462('0x89')]=function(_0x5da6a2,_0x1854c3,_0x4bfcbd){var _0x4f1ed9={'raw':![],'where':{}};var _0x4a1114={};var _0x2463ee={'count':0x0,'rows':[]};return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x5da6a2[_0x2462('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1854c3,null))['then'](function(_0x4d41e1){if(_0x4d41e1){_0x4a1114[_0x2462('0x47')]=_[_0x2462('0x48')](db[_0x2462('0x87')][_0x2462('0x45')]);_0x4a1114[_0x2462('0x49')]=_[_0x2462('0x48')](_0x5da6a2['query']);_0x4a1114[_0x2462('0x52')]=_[_0x2462('0x4b')](_0x4a1114['model'],_0x4a1114[_0x2462('0x49')]);_0x4f1ed9[_0x2462('0x4a')]=_[_0x2462('0x4b')](_0x4a1114[_0x2462('0x47')],qs['fields'](_0x5da6a2[_0x2462('0x49')][_0x2462('0x4c')]));_0x4f1ed9[_0x2462('0x4a')]=_0x4f1ed9[_0x2462('0x4a')][_0x2462('0x4d')]?_0x4f1ed9['attributes']:_0x4a1114[_0x2462('0x47')];if(!_0x5da6a2[_0x2462('0x49')][_0x2462('0x4e')](_0x2462('0x4f'))){_0x4f1ed9[_0x2462('0x30')]=qs[_0x2462('0x30')](_0x5da6a2[_0x2462('0x49')]['limit']);_0x4f1ed9[_0x2462('0x2d')]=qs[_0x2462('0x2d')](_0x5da6a2[_0x2462('0x49')][_0x2462('0x2d')]);}_0x4f1ed9['order']=qs[_0x2462('0x50')](_0x5da6a2[_0x2462('0x49')][_0x2462('0x50')]);_0x4f1ed9[_0x2462('0x51')]=qs[_0x2462('0x52')](_['pick'](_0x5da6a2[_0x2462('0x49')],_0x4a1114['filters']));_0x4f1ed9[_0x2462('0x51')][_0x2462('0x5f')]=_0x4d41e1['id'];if(_0x5da6a2[_0x2462('0x49')][_0x2462('0x54')]){_0x4f1ed9[_0x2462('0x51')]=_[_0x2462('0x55')](_0x4f1ed9[_0x2462('0x51')],{'$or':_[_0x2462('0x43')](_0x4f1ed9['attributes'],function(_0x4bca3f){var _0x1ff813={};_0x1ff813[_0x4bca3f]={'$like':'%'+_0x5da6a2[_0x2462('0x49')][_0x2462('0x54')]+'%'};return _0x1ff813;})});}_0x4f1ed9=_[_0x2462('0x55')]({},_0x4f1ed9,_0x5da6a2[_0x2462('0x57')]);return db['MailInteraction'][_0x2462('0x2f')]({'where':_0x4f1ed9[_0x2462('0x51')]})[_0x2462('0x20')](function(_0x52ef24){_0x2463ee[_0x2462('0x2f')]=_0x52ef24;if(_0x5da6a2[_0x2462('0x49')][_0x2462('0x58')]){_0x4f1ed9['include']=[{'model':db[_0x2462('0x8a')],'as':'Contact','required':![]},{'model':db[_0x2462('0x8b')],'as':_0x2462('0x8c'),'attributes':[_0x2462('0x3b'),_0x2462('0x8d'),'internal'],'required':![]},{'model':db[_0x2462('0x8e')],'as':'Tags','attributes':['id',_0x2462('0x3b'),_0x2462('0x8f')],'where':_0x5da6a2[_0x2462('0x49')][_0x2462('0x90')]?{'id':_0x5da6a2[_0x2462('0x49')][_0x2462('0x90')]}:undefined,'required':_0x5da6a2[_0x2462('0x49')][_0x2462('0x90')]?!![]:![]}];}return db[_0x2462('0x87')]['findAll'](_0x4f1ed9);})[_0x2462('0x20')](function(_0x1bea17){_0x2463ee['rows']=_0x1bea17;return _0x2463ee;});}})[_0x2462('0x20')](respondWithFilteredResult(_0x1854c3,_0x4f1ed9))[_0x2462('0x29')](handleError(_0x1854c3,null));};exports[_0x2462('0x91')]=function(_0x14bdd5,_0x414cc5,_0x1f4862){return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x14bdd5[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x414cc5,null))[_0x2462('0x20')](function(_0x70e3cf){if(_0x70e3cf){return db[_0x2462('0x92')]['transaction'](function(_0x44030b){return db[_0x2462('0x93')][_0x2462('0x37')]({'where':{'MailAccountId':_0x14bdd5[_0x2462('0x5b')]['id']},'transaction':_0x44030b})[_0x2462('0x20')](function(_0x12f385){var _0x110d61=_[_0x2462('0x43')](_0x14bdd5['body'],function(_0x55163e){_0x55163e[_0x2462('0x5f')]=_0x14bdd5[_0x2462('0x5b')]['id'];return _0x55163e;});return db[_0x2462('0x93')]['bulkCreate'](_0x110d61,{'transaction':_0x44030b});});})[_0x2462('0x20')](function(){return db['MailApplication'][_0x2462('0x94')]({'where':{'MailAccountId':_0x14bdd5[_0x2462('0x5b')]['id']},'order':_0x2462('0x95')});});}})[_0x2462('0x20')](respondWithResult(_0x414cc5,null))[_0x2462('0x29')](handleError(_0x414cc5,null));};exports[_0x2462('0x96')]=function(_0x33f9dc,_0x1df280,_0x2dab9a){var _0x2dd146={};var _0x584c48={};var _0x16e960;var _0x206618;return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x33f9dc[_0x2462('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1df280,null))[_0x2462('0x20')](function(_0x452bca){if(_0x452bca){_0x16e960=_0x452bca;_0x584c48['model']=_[_0x2462('0x48')](db['MailApplication'][_0x2462('0x45')]);_0x584c48['query']=_[_0x2462('0x48')](_0x33f9dc[_0x2462('0x49')]);_0x584c48['filters']=_[_0x2462('0x4b')](_0x584c48[_0x2462('0x47')],_0x584c48[_0x2462('0x49')]);_0x2dd146['attributes']=_[_0x2462('0x4b')](_0x584c48[_0x2462('0x47')],qs[_0x2462('0x4c')](_0x33f9dc[_0x2462('0x49')][_0x2462('0x4c')]));_0x2dd146[_0x2462('0x4a')]=_0x2dd146['attributes'][_0x2462('0x4d')]?_0x2dd146[_0x2462('0x4a')]:_0x584c48[_0x2462('0x47')];_0x2dd146[_0x2462('0x62')]=qs['sort'](_0x33f9dc['query']['sort']);_0x2dd146[_0x2462('0x51')]=qs[_0x2462('0x52')](_[_0x2462('0x53')](_0x33f9dc[_0x2462('0x49')],_0x584c48['filters']));if(_0x33f9dc[_0x2462('0x49')][_0x2462('0x54')]){_0x2dd146['where']=_[_0x2462('0x55')](_0x2dd146[_0x2462('0x51')],{'$or':_['map'](_0x2dd146[_0x2462('0x4a')],function(_0x165156){var _0x5410ac={};_0x5410ac[_0x165156]={'$like':'%'+_0x33f9dc[_0x2462('0x49')][_0x2462('0x54')]+'%'};return _0x5410ac;})});}_0x2dd146=_[_0x2462('0x55')]({},_0x2dd146,_0x33f9dc['options']);return _0x16e960[_0x2462('0x96')](_0x2dd146);}})[_0x2462('0x20')](function(_0x5e6d58){if(_0x5e6d58){_0x206618=_0x5e6d58[_0x2462('0x4d')];if(!_0x33f9dc[_0x2462('0x49')]['hasOwnProperty'](_0x2462('0x4f'))){_0x2dd146[_0x2462('0x30')]=qs[_0x2462('0x30')](_0x33f9dc[_0x2462('0x49')][_0x2462('0x30')]);_0x2dd146[_0x2462('0x2d')]=qs[_0x2462('0x2d')](_0x33f9dc[_0x2462('0x49')][_0x2462('0x2d')]);}return _0x16e960[_0x2462('0x96')](_0x2dd146);}})[_0x2462('0x20')](function(_0x438bdb){if(_0x438bdb){return _0x438bdb?{'count':_0x206618,'rows':_0x438bdb}:null;}})[_0x2462('0x20')](respondWithResult(_0x1df280,null))[_0x2462('0x29')](handleError(_0x1df280,null));};exports['getMessages']=function(_0xc9a355,_0x32b511,_0x47c1cd){var _0x501c7b={'raw':!![],'where':{}};var _0x4c2e03={};var _0x2ae4a7={'count':0x0,'rows':[]};return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0xc9a355[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x32b511,null))[_0x2462('0x20')](function(_0x23c6e0){if(_0x23c6e0){_0x4c2e03[_0x2462('0x47')]=_['keys'](db[_0x2462('0x97')][_0x2462('0x45')]);_0x4c2e03[_0x2462('0x49')]=_[_0x2462('0x48')](_0xc9a355[_0x2462('0x49')]);_0x4c2e03[_0x2462('0x52')]=_[_0x2462('0x4b')](_0x4c2e03[_0x2462('0x47')],_0x4c2e03[_0x2462('0x49')]);_0x501c7b[_0x2462('0x4a')]=_['intersection'](_0x4c2e03[_0x2462('0x47')],qs[_0x2462('0x4c')](_0xc9a355[_0x2462('0x49')][_0x2462('0x4c')]));_0x501c7b[_0x2462('0x4a')]=_0x501c7b[_0x2462('0x4a')]['length']?_0x501c7b[_0x2462('0x4a')]:_0x4c2e03['model'];if(!_0xc9a355['query'][_0x2462('0x4e')](_0x2462('0x4f'))){_0x501c7b[_0x2462('0x30')]=qs['limit'](_0xc9a355[_0x2462('0x49')][_0x2462('0x30')]);_0x501c7b['offset']=qs[_0x2462('0x2d')](_0xc9a355[_0x2462('0x49')][_0x2462('0x2d')]);}_0x501c7b[_0x2462('0x62')]=qs[_0x2462('0x50')](_0xc9a355['query']['sort']);_0x501c7b[_0x2462('0x51')]=qs[_0x2462('0x52')](_[_0x2462('0x53')](_0xc9a355[_0x2462('0x49')],_0x4c2e03[_0x2462('0x52')]));_0x501c7b[_0x2462('0x51')][_0x2462('0x5f')]=_0x23c6e0['id'];if(_0xc9a355[_0x2462('0x49')]['filter']){_0x501c7b[_0x2462('0x51')]=_['merge'](_0x501c7b[_0x2462('0x51')],{'$or':_[_0x2462('0x43')](_0x501c7b[_0x2462('0x4a')],function(_0x90158a){var _0x365fb0={};_0x365fb0[_0x90158a]={'$like':'%'+_0xc9a355[_0x2462('0x49')][_0x2462('0x54')]+'%'};return _0x365fb0;})});}if(_0xc9a355[_0x2462('0x49')][_0x2462('0x98')]){var _0x1c4f39=_0xc9a355[_0x2462('0x49')][_0x2462('0x98')][_0x2462('0x99')](',');var _0x191a84={};_0x191a84[_0x1c4f39[0x0]]={'$gte':moment(_0x1c4f39[0x1])[_0x2462('0x9a')](_0x2462('0x9b'))};_0x501c7b[_0x2462('0x51')]=_[_0x2462('0x55')](_0x501c7b[_0x2462('0x51')],_0x191a84);}_0x501c7b=_[_0x2462('0x55')]({},_0x501c7b,_0xc9a355[_0x2462('0x57')]);return db[_0x2462('0x97')][_0x2462('0x2f')]({'where':_0x501c7b[_0x2462('0x51')]})[_0x2462('0x20')](function(_0xb10c23){_0x2ae4a7[_0x2462('0x2f')]=_0xb10c23;if(_0xc9a355[_0x2462('0x49')][_0x2462('0x58')]){_0x501c7b[_0x2462('0x59')]=[{'all':!![]}];}return db['MailMessage']['findAll'](_0x501c7b);})['then'](function(_0x1334f0){if(_0xc9a355[_0x2462('0x49')][_0x2462('0x9c')]==='true'){for(var _0x2e5e1e=0x0;_0x2e5e1e<_0x1334f0['length'];_0x2e5e1e++){_0x1334f0[_0x2e5e1e][_0x2462('0x5d')]=juice(_0x1334f0[_0x2e5e1e]['body']);}}_0x2ae4a7['rows']=_0x1334f0;return _0x2ae4a7;});}})['then'](respondWithFilteredResult(_0x32b511,_0x501c7b))['catch'](handleError(_0x32b511,null));};exports[_0x2462('0x9d')]=function(_0x4b7057,_0x4b9372,_0x27da68){var _0x1c533a,_0x2f8194={},_0x491155;if(_0x4b7057['body']['to']){_0x491155=_0x4b7057['body']['to'][_0x2462('0x99')](',')[0x0];}return db[_0x2462('0x44')][_0x2462('0x5c')]({'where':{'id':_0x4b7057[_0x2462('0x5b')]['id']},'include':[{'model':db[_0x2462('0x9e')],'as':_0x2462('0x9f'),'include':[{'model':db[_0x2462('0x8a')],'as':_0x2462('0xa0'),'where':{'email':_0x491155},'limit':0x1,'order':[['updatedAt',_0x2462('0xa1')]]}]},{'model':db[_0x2462('0x3f')],'as':_0x2462('0x40'),'raw':!![]}]})[_0x2462('0x20')](handleEntityNotFound(_0x4b9372,null))[_0x2462('0x20')](function(_0x5b6668){if(_0x5b6668){_0x1c533a=_0x5b6668;if(_0x5b6668['Smtp']){if(_['isNil'](_0x4b7057[_0x2462('0x5d')]['from'])){_0x4b7057['body'][_0x2462('0xa2')]=util[_0x2462('0x9a')](_0x2462('0xa3'),_0x5b6668[_0x2462('0x3b')],_0x5b6668[_0x2462('0x6a')]||_0x5b6668['Smtp'][_0x2462('0x70')]);}if(_0x4b7057['body'][_0x2462('0xa4')]&&_0x4b7057['body'][_0x2462('0xa4')][_0x2462('0x4d')]){for(var _0x1a1ec4=0x0;_0x1a1ec4<_0x4b7057[_0x2462('0x5d')][_0x2462('0xa4')][_0x2462('0x4d')];_0x1a1ec4+=0x1){_0x4b7057['body']['attachments'][_0x1a1ec4]={'filename':_0x4b7057[_0x2462('0x5d')][_0x2462('0xa4')][_0x1a1ec4]['name'],'path':path[_0x2462('0xa5')](config[_0x2462('0xa6')],_0x2462('0xa7'),_0x4b7057[_0x2462('0x5d')][_0x2462('0xa4')][_0x1a1ec4][_0x2462('0xa8')])};}}var _0x4ccefc={'tls':{'rejectUnauthorized':![]}};if(_[_0x2462('0x6e')](_0x5b6668[_0x2462('0x40')][_0x2462('0x77')])){if(_0x5b6668[_0x2462('0x40')][_0x2462('0x74')]){_0x4ccefc[_0x2462('0xa9')]={'user':_0x5b6668[_0x2462('0x40')][_0x2462('0x70')],'pass':_0x5b6668[_0x2462('0x40')]['pass']};}_0x4ccefc[_0x2462('0x75')]=_0x5b6668[_0x2462('0x40')][_0x2462('0x75')];_0x4ccefc[_0x2462('0x76')]=_0x5b6668[_0x2462('0x40')]['port'];_0x4ccefc[_0x2462('0xaa')]=_0x5b6668[_0x2462('0x40')][_0x2462('0xaa')];}else{_0x4ccefc[_0x2462('0x77')]=_0x5b6668[_0x2462('0x40')]['service'];_0x4ccefc[_0x2462('0xa9')]={'user':_0x5b6668[_0x2462('0x40')][_0x2462('0x70')],'pass':_0x5b6668[_0x2462('0x40')]['pass']};}return respondWithRpcPromise('SendMail','sendMail',{'account':_0x4ccefc,'message':_0x4b7057[_0x2462('0x5d')]});}else{throw new Error('List\x20not\x20found');}}})[_0x2462('0x20')](function(_0x4c2907){if(_0x4c2907){_0x2f8194=_0x4c2907;if(_0x1c533a[_0x2462('0x9f')]){if(_0x1c533a[_0x2462('0x9f')][_0x2462('0xa0')][_0x2462('0x4d')]){return _0x1c533a[_0x2462('0x9f')][_0x2462('0xa0')][0x0];}else{return db['CmContact']['create'](_[_0x2462('0xab')](_0x4b7057['body'],{'firstName':_0x4b7057['body']['to'],'email':_0x4b7057['body']['to'],'phone':_0x4b7057[_0x2462('0x5d')]['to'],'ListId':_0x1c533a[_0x2462('0x6b')]}));}}else{throw new Error('List\x20not\x20found');}}})['then'](function(_0x35689d){if(_0x35689d){var _0x52bfc7={'UserId':_0x4b7057['user']['id'],'ContactId':_0x35689d['id'],'MailAccountId':_0x1c533a['id'],'inReplyTo':_0x2f8194[_0x2462('0xac')],'to':_0x4b7057[_0x2462('0x5d')]['from'],'cc':_0x4b7057[_0x2462('0x5d')]['cc'],'subject':_0x4b7057[_0x2462('0x5d')][_0x2462('0xad')],'attach':_0x4b7057[_0x2462('0x5d')][_0x2462('0xae')],'firstMsgDirection':'out','lastMsgAt':moment()['format'](_0x2462('0x9b')),'lastMsgDirection':_0x2462('0xaf'),'Messages':[_[_0x2462('0x55')](_0x4b7057['body'],{'messageId':_0x2f8194['messageId'],'sentAt':moment()[_0x2462('0x9a')](_0x2462('0x9b')),'read':!![],'MailAccountId':_0x1c533a['id'],'UserId':_0x4b7057[_0x2462('0x70')]['id'],'ContactId':_0x35689d['id']})]};if(_0x4b7057[_0x2462('0x5d')]['Interaction']){_0x52bfc7=_[_0x2462('0x55')](_0x52bfc7,_0x4b7057[_0x2462('0x5d')][_0x2462('0xb0')]);}return db['MailInteraction'][_0x2462('0x65')](_0x52bfc7,{'include':[{'model':db['MailMessage'],'as':_0x2462('0xb1')}]});}})[_0x2462('0x20')](respondWithResult(_0x4b9372,null))[_0x2462('0x29')](handleError(_0x4b9372,null));};exports[_0x2462('0xb2')]=function(_0x5bc112,_0x578c03,_0x1d9130){return db[_0x2462('0x44')]['find']({'where':{'id':_0x5bc112[_0x2462('0x5b')]['id']},'include':[{'model':db[_0x2462('0x3f')],'as':_0x2462('0x40'),'raw':!![]}]})[_0x2462('0x20')](handleEntityNotFound(_0x578c03,null))['then'](function(_0x24c483){if(_0x24c483&&_0x24c483['Smtp']){var _0x4ebbcf={'id':_0x24c483['id'],'tls':{'rejectUnauthorized':![]}};if(_0x24c483[_0x2462('0x40')][_0x2462('0x77')]){_0x4ebbcf[_0x2462('0x77')]=_0x24c483[_0x2462('0x40')][_0x2462('0x77')];}else{_0x4ebbcf[_0x2462('0x75')]=_0x24c483[_0x2462('0x40')][_0x2462('0x75')];_0x4ebbcf[_0x2462('0x76')]=_0x24c483[_0x2462('0x40')][_0x2462('0x76')];_0x4ebbcf[_0x2462('0xaa')]=_0x24c483[_0x2462('0x40')][_0x2462('0xaa')];}if(_0x24c483[_0x2462('0x40')][_0x2462('0x74')]){_0x4ebbcf[_0x2462('0xa9')]={'user':_0x24c483[_0x2462('0x40')][_0x2462('0x70')],'pass':_0x24c483[_0x2462('0x40')][_0x2462('0x72')]};}return respondWithRpcPromise(_0x2462('0xb3'),_0x2462('0xb2'),{'account':_0x4ebbcf});}})[_0x2462('0x20')](respondWithResult(_0x578c03,null))[_0x2462('0x29')](handleError(_0x578c03,null));};exports[_0x2462('0x37')]=function(_0x1de7e7,_0x368496){return db[_0x2462('0x44')]['find']({'where':{'id':_0x1de7e7[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x368496,null))[_0x2462('0x20')](function(_0x4c2e5d){if(_0x4c2e5d&&_0x4c2e5d[_0x2462('0x77')]){throw new db[(_0x2462('0xb4'))][(_0x2462('0xb5'))](_0x2462('0xb6'));}return _0x4c2e5d;})['then'](removeEntity(_0x368496,null))[_0x2462('0x29')](handleError(_0x368496,null));};exports[_0x2462('0xb7')]=function(_0x1ab79b,_0xe6dc77,_0x431946){return db[_0x2462('0x44')][_0x2462('0x5c')]({'where':{'id':_0x1ab79b[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0xe6dc77,null))[_0x2462('0x20')](function(_0x22ed1c){if(_0x22ed1c){return _0x22ed1c[_0x2462('0xb7')](_0x1ab79b['body'][_0x2462('0x68')],_[_0x2462('0x88')](_0x1ab79b['body'],[_0x2462('0x68'),'id'])||{})[_0x2462('0xb8')](function(_0x4b8b19){for(var _0x4fd145=0x0;_0x4fd145<_0x1ab79b[_0x2462('0x5d')]['ids'][_0x2462('0x4d')];_0x4fd145+=0x1){socket[_0x2462('0xb9')](_0x2462('0xba'),{'UserId':Number(_0x1ab79b[_0x2462('0x5d')][_0x2462('0x68')][_0x4fd145]),'MailAccountId':Number(_0x1ab79b[_0x2462('0x5b')]['id'])});}return _0x4b8b19;});}})[_0x2462('0x20')](respondWithResult(_0xe6dc77,null))[_0x2462('0x29')](handleError(_0xe6dc77,null));};exports[_0x2462('0xbb')]=function(_0x45ccba,_0x22edaa,_0x477880){return db[_0x2462('0x44')][_0x2462('0x5c')]({'where':{'id':_0x45ccba['params']['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x22edaa,null))[_0x2462('0x20')](function(_0x4f83b9){if(_0x4f83b9){return _0x4f83b9[_0x2462('0xbb')](_0x45ccba[_0x2462('0x49')][_0x2462('0x68')])[_0x2462('0x20')](function(){if(_[_0x2462('0xbc')](_0x45ccba[_0x2462('0x49')]['ids'])){for(var _0x5824e5=0x0;_0x5824e5<_0x45ccba[_0x2462('0x49')][_0x2462('0x68')][_0x2462('0x4d')];_0x5824e5+=0x1){socket[_0x2462('0xb9')]('userMailAccount:remove',{'UserId':Number(_0x45ccba['query']['ids'][_0x5824e5]),'MailAccountId':Number(_0x45ccba[_0x2462('0x5b')]['id'])});}}else{socket[_0x2462('0xb9')](_0x2462('0xbd'),{'UserId':Number(_0x45ccba['query'][_0x2462('0x68')]),'MailAccountId':Number(_0x45ccba[_0x2462('0x5b')]['id'])});}});}})[_0x2462('0x20')](respondWithStatusCode(_0x22edaa,null))['catch'](handleError(_0x22edaa,null));};exports[_0x2462('0xbe')]=function(_0x4751f3,_0x354954,_0x2594f1){var _0x519ad5={};var _0x229666={};var _0x588d3a;var _0x5f2a17;return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x4751f3[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x354954,null))['then'](function(_0x52f7fc){if(_0x52f7fc){_0x588d3a=_0x52f7fc;_0x229666[_0x2462('0x47')]=_['keys'](db[_0x2462('0x8b')][_0x2462('0x45')]);_0x229666[_0x2462('0x49')]=_[_0x2462('0x48')](_0x4751f3[_0x2462('0x49')]);_0x229666[_0x2462('0x52')]=_['intersection'](_0x229666[_0x2462('0x47')],_0x229666[_0x2462('0x49')]);_0x519ad5[_0x2462('0x4a')]=_[_0x2462('0x4b')](_0x229666[_0x2462('0x47')],qs['fields'](_0x4751f3[_0x2462('0x49')][_0x2462('0x4c')]));_0x519ad5[_0x2462('0x4a')]=_0x519ad5[_0x2462('0x4a')][_0x2462('0x4d')]?_0x519ad5[_0x2462('0x4a')]:_0x229666[_0x2462('0x47')];_0x519ad5[_0x2462('0x62')]=qs[_0x2462('0x50')](_0x4751f3[_0x2462('0x49')][_0x2462('0x50')]);_0x519ad5['where']=qs['filters'](_[_0x2462('0x53')](_0x4751f3[_0x2462('0x49')],_0x229666['filters']));if(_0x4751f3[_0x2462('0x49')][_0x2462('0x54')]){_0x519ad5['where']=_[_0x2462('0x55')](_0x519ad5['where'],{'$or':_['map'](_0x519ad5[_0x2462('0x4a')],function(_0x3e5e65){var _0x10bd76={};_0x10bd76[_0x3e5e65]={'$like':'%'+_0x4751f3[_0x2462('0x49')][_0x2462('0x54')]+'%'};return _0x10bd76;})});}_0x519ad5=_[_0x2462('0x55')]({},_0x519ad5,_0x4751f3[_0x2462('0x57')]);return _0x588d3a[_0x2462('0xbe')](_0x519ad5);}})['then'](function(_0x2d6e92){if(_0x2d6e92){_0x5f2a17=_0x2d6e92[_0x2462('0x4d')];if(!_0x4751f3[_0x2462('0x49')][_0x2462('0x4e')](_0x2462('0x4f'))){_0x519ad5['limit']=qs['limit'](_0x4751f3[_0x2462('0x49')][_0x2462('0x30')]);_0x519ad5[_0x2462('0x2d')]=qs[_0x2462('0x2d')](_0x4751f3[_0x2462('0x49')]['offset']);}return _0x588d3a['getAgents'](_0x519ad5);}})[_0x2462('0x20')](function(_0x15f400){if(_0x15f400){return _0x15f400?{'count':_0x5f2a17,'rows':_0x15f400}:null;}})['then'](respondWithResult(_0x354954,null))[_0x2462('0x29')](handleError(_0x354954,null));};
\ No newline at end of file
+var _0xfa1f=['MailAccounts','sendStatus','name','send','index','MailServerIn','Imap','MailServerOut','mandatoryDispositionPause','map','MailAccount','fieldName','key','query','keys','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','type','options','includeAll','include','findAll','rows','params','Smtp','model','rawAttributes','body','find','Pause','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','nolimit','removeDispositions','ids','CannedAnswer','getAnswers','findOne','removeAnswers','email','ListId','isNil','active','cservice','user','cuser','password','pass','cpassword','host','port','service','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','addSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','Contact','User','Owner','fullname','internal','Tags','color','tag','addApplications','sequelize','transaction','MailApplication','bulkCreate','findAndCountAll','priority','getApplications','getMessages','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','true','CmList','List','CmContact','Contacts','updatedAt','DESC','from','%s\x20<%s>','attachments','join','server/files/attachments','basename','authentication','auth','secure','SendMail','sendMail','List\x20not\x20found','subject','attach','out','Interaction','Messages','VerifySmtp','verifySmtp','Sequelize','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','omit','spread','emit','userMailAccount:save','removeAgents','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./mailAccount.socket','jayson/promise','client','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy'];(function(_0x41ed7b,_0x18b32f){var _0x13e198=function(_0x35bac1){while(--_0x35bac1){_0x41ed7b['push'](_0x41ed7b['shift']());}};_0x13e198(++_0x18b32f);}(_0xfa1f,0x8c));var _0xffa1=function(_0x2892da,_0x191a40){_0x2892da=_0x2892da-0x0;var _0x28cff2=_0xfa1f[_0x2892da];return _0x28cff2;};'use strict';var emlformat=require(_0xffa1('0x0'));var rimraf=require(_0xffa1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xffa1('0x2'));var rp=require(_0xffa1('0x3'));var moment=require(_0xffa1('0x4'));var BPromise=require(_0xffa1('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xffa1('0x6'));var sox=require(_0xffa1('0x7'));var csv=require(_0xffa1('0x8'));var ejs=require(_0xffa1('0x9'));var fs=require('fs');var fs_extra=require(_0xffa1('0xa'));var _=require(_0xffa1('0xb'));var squel=require(_0xffa1('0xc'));var crypto=require(_0xffa1('0xd'));var jsforce=require(_0xffa1('0xe'));var deskjs=require(_0xffa1('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var htmlToText=require(_0xffa1('0x10'));var juice=require(_0xffa1('0x11'));var Redis=require(_0xffa1('0x12'));var authService=require(_0xffa1('0x13'));var qs=require(_0xffa1('0x14'));var as=require(_0xffa1('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xffa1('0x16'));var utils=require(_0xffa1('0x17'));var config=require(_0xffa1('0x18'));var licenseUtil=require(_0xffa1('0x19'));var db=require(_0xffa1('0x1a'))['db'];config[_0xffa1('0x1b')]=_[_0xffa1('0x1c')](config[_0xffa1('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xffa1('0x1d'))(new Redis(config[_0xffa1('0x1b')]));require(_0xffa1('0x1e'))['register'](socket);var jayson=require(_0xffa1('0x1f'));var client=jayson[_0xffa1('0x20')]['http']({'port':0x232b});function respondWithRpcPromise(_0x5b5a6b,_0x61161a,_0x367bfc,_0x3ba4be){return new BPromise(function(_0x15d3d4,_0x13314b){var _0x1c6c48=_0x3ba4be||client;return _0x1c6c48['request'](_0x5b5a6b,_0x367bfc)['then'](function(_0x3b3b7e){logger['info'](_0xffa1('0x21'),_0x61161a,_0xffa1('0x22'));logger[_0xffa1('0x23')](_0xffa1('0x24'),_0x61161a,_0xffa1('0x22'),JSON[_0xffa1('0x25')](_0x3b3b7e));if(_0x3b3b7e['error']){if(_0x3b3b7e[_0xffa1('0x26')][_0xffa1('0x27')]===0x1f4){logger['error'](_0xffa1('0x21'),_0x61161a,_0x3b3b7e[_0xffa1('0x26')][_0xffa1('0x28')]);return _0x13314b(_0x3b3b7e['error'][_0xffa1('0x28')]);}logger[_0xffa1('0x26')](_0xffa1('0x21'),_0x61161a,_0x3b3b7e[_0xffa1('0x26')][_0xffa1('0x28')]);return _0x15d3d4(_0x3b3b7e[_0xffa1('0x26')]['message']);}else{logger['info'](_0xffa1('0x21'),_0x61161a,_0xffa1('0x22'));_0x15d3d4(_0x3b3b7e['result'][_0xffa1('0x28')]);}})[_0xffa1('0x29')](function(_0x5c47b9){logger[_0xffa1('0x26')](_0xffa1('0x21'),_0x61161a,_0x5c47b9);_0x13314b(_0x5c47b9);});});}function respondWithStatusCode(_0x42c10a,_0x338104){_0x338104=_0x338104||0xcc;return function(_0x69cd0b){if(_0x69cd0b){return _0x42c10a['sendStatus'](_0x338104);}return _0x42c10a[_0xffa1('0x2a')](_0x338104)[_0xffa1('0x2b')]();};}function respondWithResult(_0x4994d2,_0xbbdd0a){_0xbbdd0a=_0xbbdd0a||0xc8;return function(_0x23868d){if(_0x23868d){return _0x4994d2['status'](_0xbbdd0a)[_0xffa1('0x2c')](_0x23868d);}};}function respondWithFilteredResult(_0x177459,_0x48db37){return function(_0x1f5618){if(_0x1f5618){var _0xa29b2=typeof _0x48db37[_0xffa1('0x2d')]===_0xffa1('0x2e')&&typeof _0x48db37['limit']===_0xffa1('0x2e');var _0x328a4=_0x1f5618[_0xffa1('0x2f')];var _0x58cc28=_0xa29b2?0x0:_0x48db37[_0xffa1('0x2d')];var _0x1017fd=_0xa29b2?_0x1f5618[_0xffa1('0x2f')]:_0x48db37['offset']+_0x48db37[_0xffa1('0x30')];var _0x4ef20b;if(_0x1017fd>=_0x328a4){_0x1017fd=_0x328a4;_0x4ef20b=0xc8;}else{_0x4ef20b=0xce;}_0x177459[_0xffa1('0x2a')](_0x4ef20b);return _0x177459[_0xffa1('0x31')](_0xffa1('0x32'),_0x58cc28+'-'+_0x1017fd+'/'+_0x328a4)[_0xffa1('0x2c')](_0x1f5618);}return null;};}function patchUpdates(_0x4db8d6){return function(_0x2d001a){try{jsonpatch[_0xffa1('0x33')](_0x2d001a,_0x4db8d6,!![]);}catch(_0x436613){return BPromise['reject'](_0x436613);}return _0x2d001a[_0xffa1('0x34')]();};}function saveUpdates(_0x36485b,_0x5f133d){return function(_0x5c7e7d){if(_0x5c7e7d){return _0x5c7e7d[_0xffa1('0x35')](_0x36485b)[_0xffa1('0x36')](function(_0x105a6b){return _0x105a6b;});}return null;};}function removeEntity(_0x5028ac,_0x1a8cb5){return function(_0x239b92){if(_0x239b92){return _0x239b92[_0xffa1('0x37')]()[_0xffa1('0x36')](function(){var _0x4f586f=_0x239b92['get']({'plain':!![]});var _0x2976c9=_0xffa1('0x38');return db['UserProfileResource'][_0xffa1('0x37')]({'where':{'type':_0x2976c9,'resourceId':_0x4f586f['id']}})['then'](function(){return _0x239b92;});})[_0xffa1('0x36')](function(){_0x5028ac[_0xffa1('0x2a')](0xcc)[_0xffa1('0x2b')]();});}};}function handleEntityNotFound(_0x1dbda7,_0x2daf07){return function(_0x6036a7){if(!_0x6036a7){_0x1dbda7[_0xffa1('0x39')](0x194);}return _0x6036a7;};}function handleError(_0x58a806,_0x2a225b){_0x2a225b=_0x2a225b||0x1f4;return function(_0x5bf605){logger[_0xffa1('0x26')](_0x5bf605['stack']);if(_0x5bf605[_0xffa1('0x3a')]){delete _0x5bf605[_0xffa1('0x3a')];}_0x58a806[_0xffa1('0x2a')](_0x2a225b)[_0xffa1('0x3b')](_0x5bf605);};}exports[_0xffa1('0x3c')]=function(_0x22a2c9,_0x267609){var _0x197c4d={'include':[{'model':db[_0xffa1('0x3d')],'as':_0xffa1('0x3e')},{'model':db[_0xffa1('0x3f')],'as':'Smtp'},{'model':db['Pause'],'as':_0xffa1('0x40')}]},_0x2e1dda={},_0x287a8d={'count':0x0,'rows':[]};var _0x39df81=_[_0xffa1('0x41')](db[_0xffa1('0x42')]['rawAttributes'],function(_0x3691f6){return{'name':_0x3691f6[_0xffa1('0x43')],'type':_0x3691f6['type'][_0xffa1('0x44')]};});_0x2e1dda['model']=_[_0xffa1('0x41')](_0x39df81,'name');_0x2e1dda[_0xffa1('0x45')]=_[_0xffa1('0x46')](_0x22a2c9[_0xffa1('0x45')]);_0x2e1dda['filters']=_['intersection'](_0x2e1dda['model'],_0x2e1dda['query']);_0x197c4d[_0xffa1('0x47')]=_[_0xffa1('0x48')](_0x2e1dda['model'],qs[_0xffa1('0x49')](_0x22a2c9[_0xffa1('0x45')]['fields']));_0x197c4d['attributes']=_0x197c4d[_0xffa1('0x47')][_0xffa1('0x4a')]?_0x197c4d[_0xffa1('0x47')]:_0x2e1dda['model'];if(!_0x22a2c9[_0xffa1('0x45')][_0xffa1('0x4b')]('nolimit')){_0x197c4d[_0xffa1('0x30')]=qs[_0xffa1('0x30')](_0x22a2c9[_0xffa1('0x45')][_0xffa1('0x30')]);_0x197c4d['offset']=qs[_0xffa1('0x2d')](_0x22a2c9[_0xffa1('0x45')][_0xffa1('0x2d')]);}_0x197c4d[_0xffa1('0x4c')]=qs[_0xffa1('0x4d')](_0x22a2c9[_0xffa1('0x45')][_0xffa1('0x4d')]);_0x197c4d[_0xffa1('0x4e')]=qs[_0xffa1('0x4f')](_[_0xffa1('0x50')](_0x22a2c9['query'],_0x2e1dda['filters']),_0x39df81);if(_0x22a2c9['query'][_0xffa1('0x51')]){_0x197c4d[_0xffa1('0x4e')]=_[_0xffa1('0x52')](_0x197c4d['where'],{'$or':_[_0xffa1('0x41')](_0x39df81,function(_0x2f7130){if(_0x2f7130[_0xffa1('0x53')]!=='VIRTUAL'){var _0x5e2008={};_0x5e2008[_0x2f7130[_0xffa1('0x3a')]]={'$like':'%'+_0x22a2c9[_0xffa1('0x45')][_0xffa1('0x51')]+'%'};return _0x5e2008;}})});}_0x197c4d=_['merge']({},_0x197c4d,_0x22a2c9[_0xffa1('0x54')]);var _0xc818fa={'where':_0x197c4d['where']};return db[_0xffa1('0x42')][_0xffa1('0x2f')](_0xc818fa)[_0xffa1('0x36')](function(_0x24a88b){_0x287a8d[_0xffa1('0x2f')]=_0x24a88b;if(_0x22a2c9[_0xffa1('0x45')][_0xffa1('0x55')]){_0x197c4d[_0xffa1('0x56')]=[{'all':!![]}];}return db['MailAccount'][_0xffa1('0x57')](_0x197c4d);})[_0xffa1('0x36')](function(_0x351c53){_0x287a8d[_0xffa1('0x58')]=_0x351c53;return _0x287a8d;})['then'](respondWithFilteredResult(_0x267609,_0x197c4d))[_0xffa1('0x29')](handleError(_0x267609,null));};exports['show']=function(_0x42c2a2,_0xcd33fe){var _0xc87102={'raw':![],'where':{'id':_0x42c2a2[_0xffa1('0x59')]['id']},'include':[{'model':db[_0xffa1('0x3d')],'as':_0xffa1('0x3e')},{'model':db[_0xffa1('0x3f')],'as':_0xffa1('0x5a')},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x495a6e={};_0x495a6e[_0xffa1('0x5b')]=_[_0xffa1('0x46')](db[_0xffa1('0x42')][_0xffa1('0x5c')]);_0x495a6e[_0xffa1('0x45')]=_[_0xffa1('0x46')](_0x42c2a2[_0xffa1('0x45')]);_0x495a6e[_0xffa1('0x4f')]=_['intersection'](_0x495a6e[_0xffa1('0x5b')],_0x495a6e[_0xffa1('0x45')]);_0xc87102[_0xffa1('0x47')]=_['intersection'](_0x495a6e[_0xffa1('0x5b')],qs[_0xffa1('0x49')](_0x42c2a2['query']['fields']));_0xc87102['attributes']=_0xc87102[_0xffa1('0x47')][_0xffa1('0x4a')]?_0xc87102[_0xffa1('0x47')]:_0x495a6e[_0xffa1('0x5b')];if(_0x42c2a2[_0xffa1('0x45')][_0xffa1('0x55')]){_0xc87102[_0xffa1('0x56')]=[{'all':!![]}];}_0xc87102=_[_0xffa1('0x52')]({},_0xc87102,_0x42c2a2['options']);return db[_0xffa1('0x42')]['find'](_0xc87102)['then'](handleEntityNotFound(_0xcd33fe,null))['then'](respondWithResult(_0xcd33fe,null))['catch'](handleError(_0xcd33fe,null));};exports[_0xffa1('0x35')]=function(_0x296b49,_0x5f5c34){if(_0x296b49[_0xffa1('0x5d')]['id']){delete _0x296b49[_0xffa1('0x5d')]['id'];}return db[_0xffa1('0x42')][_0xffa1('0x5e')]({'where':{'id':_0x296b49[_0xffa1('0x59')]['id']},'include':[{'model':db[_0xffa1('0x3d')],'as':_0xffa1('0x3e')},{'model':db[_0xffa1('0x3f')],'as':'Smtp'},{'model':db[_0xffa1('0x5f')],'as':'mandatoryDispositionPause'}]})[_0xffa1('0x36')](handleEntityNotFound(_0x5f5c34,null))[_0xffa1('0x36')](saveUpdates(_0x296b49[_0xffa1('0x5d')],null))['then'](function(_0x3a5d70){if(_0x3a5d70&&_0x296b49['body']['Imap']){return db[_0xffa1('0x3d')][_0xffa1('0x35')](_0x296b49[_0xffa1('0x5d')][_0xffa1('0x3e')],{'where':{'MailAccountId':_0x3a5d70['id']}})[_0xffa1('0x36')](function(){return _0x3a5d70;});}return _0x3a5d70;})[_0xffa1('0x36')](function(_0x325d02){if(_0x325d02&&_0x296b49['body'][_0xffa1('0x5a')]){return db[_0xffa1('0x3f')]['update'](_0x296b49['body']['Smtp'],{'where':{'MailAccountId':_0x325d02['id']}})[_0xffa1('0x36')](function(){return _0x325d02;});}return _0x325d02;})[_0xffa1('0x36')](respondWithResult(_0x5f5c34,null))[_0xffa1('0x29')](handleError(_0x5f5c34,null));};exports[_0xffa1('0x60')]=function(_0x39d109,_0x525032){return db[_0xffa1('0x42')][_0xffa1('0x60')]()['then'](respondWithResult(_0x525032,null))[_0xffa1('0x29')](handleError(_0x525032,null));};exports[_0xffa1('0x61')]=function(_0x370b80,_0x1e7fc4,_0x1b2e03){if(_0x370b80[_0xffa1('0x5d')]['id']){delete _0x370b80[_0xffa1('0x5d')]['id'];}return db[_0xffa1('0x42')][_0xffa1('0x5e')]({'where':{'id':_0x370b80['params']['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x1e7fc4,null))[_0xffa1('0x36')](function(_0x1044fe){if(_0x1044fe){_0x370b80[_0xffa1('0x5d')][_0xffa1('0x62')]=_0x1044fe['id'];return db[_0xffa1('0x63')][_0xffa1('0x64')](_0x370b80[_0xffa1('0x5d')]);}})[_0xffa1('0x36')](respondWithResult(_0x1e7fc4,null))[_0xffa1('0x29')](handleError(_0x1e7fc4,null));};exports[_0xffa1('0x65')]=function(_0x335e0b,_0x2484ae,_0x37df27){var _0x21146e={'raw':![],'where':{}};var _0x2ce75b={};var _0x391408={'count':0x0,'rows':[]};return db[_0xffa1('0x42')]['findOne']({'where':{'id':_0x335e0b[_0xffa1('0x59')]['id']}})['then'](handleEntityNotFound(_0x2484ae,null))[_0xffa1('0x36')](function(_0x5dec22){if(_0x5dec22){_0x2ce75b[_0xffa1('0x5b')]=_['keys'](db[_0xffa1('0x63')]['rawAttributes']);_0x2ce75b[_0xffa1('0x45')]=_[_0xffa1('0x46')](_0x335e0b['query']);_0x2ce75b['filters']=_['intersection'](_0x2ce75b['model'],_0x2ce75b['query']);_0x21146e['attributes']=_[_0xffa1('0x48')](_0x2ce75b[_0xffa1('0x5b')],qs['fields'](_0x335e0b[_0xffa1('0x45')][_0xffa1('0x49')]));_0x21146e[_0xffa1('0x47')]=_0x21146e[_0xffa1('0x47')][_0xffa1('0x4a')]?_0x21146e[_0xffa1('0x47')]:_0x2ce75b[_0xffa1('0x5b')];if(!_0x335e0b[_0xffa1('0x45')][_0xffa1('0x4b')](_0xffa1('0x66'))){_0x21146e[_0xffa1('0x30')]=qs['limit'](_0x335e0b[_0xffa1('0x45')]['limit']);_0x21146e[_0xffa1('0x2d')]=qs[_0xffa1('0x2d')](_0x335e0b[_0xffa1('0x45')][_0xffa1('0x2d')]);}_0x21146e['order']=qs[_0xffa1('0x4d')](_0x335e0b[_0xffa1('0x45')][_0xffa1('0x4d')]);_0x21146e['where']=qs[_0xffa1('0x4f')](_[_0xffa1('0x50')](_0x335e0b['query'],_0x2ce75b[_0xffa1('0x4f')]));_0x21146e[_0xffa1('0x4e')][_0xffa1('0x62')]=_0x5dec22['id'];if(_0x335e0b[_0xffa1('0x45')][_0xffa1('0x51')]){_0x21146e['where']=_[_0xffa1('0x52')](_0x21146e['where'],{'$or':_[_0xffa1('0x41')](_0x21146e[_0xffa1('0x47')],function(_0x227e5b){var _0x510f7b={};_0x510f7b[_0x227e5b]={'$like':'%'+_0x335e0b['query'][_0xffa1('0x51')]+'%'};return _0x510f7b;})});}_0x21146e=_[_0xffa1('0x52')]({},_0x21146e,_0x335e0b[_0xffa1('0x54')]);return db[_0xffa1('0x63')][_0xffa1('0x2f')]({'where':_0x21146e['where']})[_0xffa1('0x36')](function(_0x5d29cd){_0x391408['count']=_0x5d29cd;if(_0x335e0b[_0xffa1('0x45')][_0xffa1('0x55')]){_0x21146e[_0xffa1('0x56')]=[{'all':!![]}];}return db['Disposition'][_0xffa1('0x57')](_0x21146e);})[_0xffa1('0x36')](function(_0x118b44){_0x391408[_0xffa1('0x58')]=_0x118b44;return _0x391408;});}})[_0xffa1('0x36')](respondWithFilteredResult(_0x2484ae,_0x21146e))[_0xffa1('0x29')](handleError(_0x2484ae,null));};exports['removeDispositions']=function(_0x13e889,_0x5e2eee,_0x1e3eda){return db[_0xffa1('0x42')]['find']({'where':{'id':_0x13e889[_0xffa1('0x59')]['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x5e2eee,null))['then'](function(_0x4fd93){if(_0x4fd93){return _0x4fd93[_0xffa1('0x67')](_0x13e889[_0xffa1('0x45')][_0xffa1('0x68')]);}})['then'](respondWithStatusCode(_0x5e2eee,null))['catch'](handleError(_0x5e2eee,null));};exports['addAnswer']=function(_0x2c1e05,_0x15cf61,_0x3bcc58){if(_0x2c1e05[_0xffa1('0x5d')]['id']){delete _0x2c1e05[_0xffa1('0x5d')]['id'];}return db['MailAccount']['find']({'where':{'id':_0x2c1e05[_0xffa1('0x59')]['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x15cf61,null))[_0xffa1('0x36')](function(_0x394d5d){if(_0x394d5d){_0x2c1e05[_0xffa1('0x5d')]['MailAccountId']=_0x394d5d['id'];return db[_0xffa1('0x69')][_0xffa1('0x64')](_0x2c1e05[_0xffa1('0x5d')]);}})[_0xffa1('0x36')](respondWithResult(_0x15cf61,null))[_0xffa1('0x29')](handleError(_0x15cf61,null));};exports[_0xffa1('0x6a')]=function(_0xd75bf5,_0x267881,_0x51796d){var _0x2ec324={'raw':![],'where':{}};var _0x36a53e={};var _0x5ad4fc={'count':0x0,'rows':[]};return db[_0xffa1('0x42')][_0xffa1('0x6b')]({'where':{'id':_0xd75bf5['params']['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x267881,null))[_0xffa1('0x36')](function(_0x2e9168){if(_0x2e9168){_0x36a53e['model']=_[_0xffa1('0x46')](db[_0xffa1('0x69')][_0xffa1('0x5c')]);_0x36a53e[_0xffa1('0x45')]=_[_0xffa1('0x46')](_0xd75bf5[_0xffa1('0x45')]);_0x36a53e['filters']=_[_0xffa1('0x48')](_0x36a53e[_0xffa1('0x5b')],_0x36a53e['query']);_0x2ec324[_0xffa1('0x47')]=_[_0xffa1('0x48')](_0x36a53e[_0xffa1('0x5b')],qs[_0xffa1('0x49')](_0xd75bf5['query'][_0xffa1('0x49')]));_0x2ec324['attributes']=_0x2ec324[_0xffa1('0x47')][_0xffa1('0x4a')]?_0x2ec324['attributes']:_0x36a53e[_0xffa1('0x5b')];if(!_0xd75bf5[_0xffa1('0x45')][_0xffa1('0x4b')](_0xffa1('0x66'))){_0x2ec324[_0xffa1('0x30')]=qs[_0xffa1('0x30')](_0xd75bf5[_0xffa1('0x45')][_0xffa1('0x30')]);_0x2ec324[_0xffa1('0x2d')]=qs[_0xffa1('0x2d')](_0xd75bf5[_0xffa1('0x45')][_0xffa1('0x2d')]);}_0x2ec324['order']=qs[_0xffa1('0x4d')](_0xd75bf5[_0xffa1('0x45')][_0xffa1('0x4d')]);_0x2ec324[_0xffa1('0x4e')]=qs[_0xffa1('0x4f')](_[_0xffa1('0x50')](_0xd75bf5[_0xffa1('0x45')],_0x36a53e['filters']));_0x2ec324[_0xffa1('0x4e')]['MailAccountId']=_0x2e9168['id'];if(_0xd75bf5['query']['filter']){_0x2ec324[_0xffa1('0x4e')]=_[_0xffa1('0x52')](_0x2ec324['where'],{'$or':_[_0xffa1('0x41')](_0x2ec324[_0xffa1('0x47')],function(_0x588a8f){var _0x32696a={};_0x32696a[_0x588a8f]={'$like':'%'+_0xd75bf5[_0xffa1('0x45')]['filter']+'%'};return _0x32696a;})});}_0x2ec324=_['merge']({},_0x2ec324,_0xd75bf5[_0xffa1('0x54')]);return db[_0xffa1('0x69')][_0xffa1('0x2f')]({'where':_0x2ec324[_0xffa1('0x4e')]})[_0xffa1('0x36')](function(_0x46255a){_0x5ad4fc[_0xffa1('0x2f')]=_0x46255a;if(_0xd75bf5[_0xffa1('0x45')][_0xffa1('0x55')]){_0x2ec324[_0xffa1('0x56')]=[{'all':!![]}];}return db[_0xffa1('0x69')][_0xffa1('0x57')](_0x2ec324);})['then'](function(_0x2ff40d){_0x5ad4fc[_0xffa1('0x58')]=_0x2ff40d;return _0x5ad4fc;});}})[_0xffa1('0x36')](respondWithFilteredResult(_0x267881,_0x2ec324))['catch'](handleError(_0x267881,null));};exports['removeAnswers']=function(_0x5cdadf,_0x2eb5f9,_0xf2efd7){return db[_0xffa1('0x42')][_0xffa1('0x5e')]({'where':{'id':_0x5cdadf['params']['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x2eb5f9,null))[_0xffa1('0x36')](function(_0x25fb69){if(_0x25fb69){return _0x25fb69[_0xffa1('0x6c')](_0x5cdadf[_0xffa1('0x45')]['ids']);}})['then'](respondWithStatusCode(_0x2eb5f9,null))[_0xffa1('0x29')](handleError(_0x2eb5f9,null));};exports[_0xffa1('0x64')]=function(_0x12d782,_0x5aa7d9){var _0x1fff61={'name':_0x12d782[_0xffa1('0x5d')][_0xffa1('0x3a')],'key':_0x12d782[_0xffa1('0x5d')]['key'],'email':_0x12d782[_0xffa1('0x5d')][_0xffa1('0x6d')],'ListId':_0x12d782[_0xffa1('0x5d')][_0xffa1('0x6e')],'active':!_[_0xffa1('0x6f')](_0x12d782[_0xffa1('0x5d')][_0xffa1('0x70')])?_0x12d782[_0xffa1('0x5d')]['active']:!![],'description':_0x12d782['body']['description']||null,'Imap':{},'Smtp':{}};if(_[_0xffa1('0x6f')](_0x12d782[_0xffa1('0x5d')][_0xffa1('0x71')])){if(_0x12d782[_0xffa1('0x5d')]['cauthentication']){_0x1fff61[_0xffa1('0x3e')][_0xffa1('0x72')]=_0x1fff61[_0xffa1('0x5a')][_0xffa1('0x72')]=_0x12d782[_0xffa1('0x5d')][_0xffa1('0x73')];_0x1fff61[_0xffa1('0x3e')][_0xffa1('0x74')]=_0x1fff61[_0xffa1('0x5a')][_0xffa1('0x75')]=_0x12d782[_0xffa1('0x5d')][_0xffa1('0x76')];}else{_0x1fff61[_0xffa1('0x3e')]['authentication']=_0x1fff61['Smtp']['authentication']=![];}_0x1fff61[_0xffa1('0x3e')][_0xffa1('0x77')]=_0x12d782[_0xffa1('0x5d')][_0xffa1('0x3e')]['host'];_0x1fff61[_0xffa1('0x3e')][_0xffa1('0x78')]=_0x12d782[_0xffa1('0x5d')][_0xffa1('0x3e')][_0xffa1('0x78')];_0x1fff61['Smtp']['host']=_0x12d782[_0xffa1('0x5d')]['Smtp'][_0xffa1('0x77')];_0x1fff61[_0xffa1('0x5a')][_0xffa1('0x78')]=_0x12d782['body'][_0xffa1('0x5a')][_0xffa1('0x78')];}else{_0x1fff61[_0xffa1('0x3e')][_0xffa1('0x79')]=_0x1fff61[_0xffa1('0x5a')][_0xffa1('0x79')]=_0x12d782['body'][_0xffa1('0x71')];_0x1fff61[_0xffa1('0x3e')][_0xffa1('0x72')]=_0x1fff61[_0xffa1('0x5a')][_0xffa1('0x72')]=_0x12d782['body'][_0xffa1('0x73')];_0x1fff61['Imap'][_0xffa1('0x74')]=_0x1fff61['Smtp'][_0xffa1('0x75')]=_0x12d782['body'][_0xffa1('0x76')];}return db[_0xffa1('0x42')]['create'](_0x1fff61,{'include':[{'model':db[_0xffa1('0x3f')],'as':_0xffa1('0x5a')},{'model':db[_0xffa1('0x3d')],'as':_0xffa1('0x3e')}]})[_0xffa1('0x36')](function(_0x1da8b2){var _0x33963f=_0x12d782[_0xffa1('0x72')][_0xffa1('0x7a')]({'plain':!![]});if(!_0x33963f)throw new Error(_0xffa1('0x7b'));if(_0x33963f[_0xffa1('0x7c')]===_0xffa1('0x72')){var _0x36f11a=_0x1da8b2['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0xffa1('0x38'),'userProfileId':_0x33963f[_0xffa1('0x7d')]},'raw':!![]})['then'](function(_0x29eb88){if(_0x29eb88&&_0x29eb88[_0xffa1('0x7e')]===0x0){return db[_0xffa1('0x7f')][_0xffa1('0x64')]({'name':_0x36f11a[_0xffa1('0x3a')],'resourceId':_0x36f11a['id'],'type':_0x29eb88['name'],'sectionId':_0x29eb88['id']},{})['then'](function(){return _0x1da8b2;});}else{return _0x1da8b2;}})[_0xffa1('0x29')](function(_0x29d040){logger[_0xffa1('0x26')](_0xffa1('0x80'),_0x29d040);throw _0x29d040;});}return _0x1da8b2;})[_0xffa1('0x36')](respondWithResult(_0x5aa7d9,0xc9))['catch'](handleError(_0x5aa7d9,null));};exports[_0xffa1('0x81')]=function(_0x53f9ff,_0x3d596b,_0x1cb436){return db[_0xffa1('0x42')][_0xffa1('0x6b')]({'where':{'id':_0x53f9ff[_0xffa1('0x59')]['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x3d596b,null))[_0xffa1('0x36')](function(_0x5a2f95){if(_0x5a2f95){return _0x5a2f95[_0xffa1('0x81')]();}return null;})['then'](respondWithResult(_0x3d596b,null))['catch'](handleError(_0x3d596b,null));};exports[_0xffa1('0x82')]=function(_0x2f0ca9,_0x2beb88,_0xdfd732){if(_0x2f0ca9['body']['id']){delete _0x2f0ca9[_0xffa1('0x5d')]['id'];}return db[_0xffa1('0x42')][_0xffa1('0x5e')]({'where':{'id':_0x2f0ca9['params']['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x2beb88,null))[_0xffa1('0x36')](function(_0x2ada2d){if(_0x2ada2d){_0x2f0ca9[_0xffa1('0x5d')][_0xffa1('0x62')]=_0x2ada2d['id'];return db['MailServerIn'][_0xffa1('0x64')](_0x2f0ca9[_0xffa1('0x5d')]);}})['then'](respondWithResult(_0x2beb88,null))[_0xffa1('0x29')](handleError(_0x2beb88,null));};exports[_0xffa1('0x83')]=function(_0x1df143,_0x262ea6,_0x72eccb){return db[_0xffa1('0x42')]['findOne']({'where':{'id':_0x1df143[_0xffa1('0x59')]['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x262ea6,null))[_0xffa1('0x36')](function(_0x2c84a1){if(_0x2c84a1){return _0x2c84a1[_0xffa1('0x84')](null);}return null;})[_0xffa1('0x36')](respondWithStatusCode(_0x262ea6,null))[_0xffa1('0x29')](handleError(_0x262ea6,null));};exports['getSmtp']=function(_0x57d48c,_0x27d72b,_0x202bae){return db['MailAccount'][_0xffa1('0x6b')]({'where':{'id':_0x57d48c[_0xffa1('0x59')]['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x27d72b,null))[_0xffa1('0x36')](function(_0x2f6b82){if(_0x2f6b82){return _0x2f6b82['getSmtp']();}return null;})['then'](respondWithResult(_0x27d72b,null))[_0xffa1('0x29')](handleError(_0x27d72b,null));};exports[_0xffa1('0x85')]=function(_0x56f0cb,_0x43e087,_0x3b95c6){if(_0x56f0cb[_0xffa1('0x5d')]['id']){delete _0x56f0cb['body']['id'];}return db[_0xffa1('0x42')][_0xffa1('0x5e')]({'where':{'id':_0x56f0cb[_0xffa1('0x59')]['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x43e087,null))[_0xffa1('0x36')](function(_0x26a1e9){if(_0x26a1e9){_0x56f0cb[_0xffa1('0x5d')]['MailAccountId']=_0x26a1e9['id'];return db['MailServerOut'][_0xffa1('0x64')](_0x56f0cb[_0xffa1('0x5d')]);}})[_0xffa1('0x36')](respondWithResult(_0x43e087,null))[_0xffa1('0x29')](handleError(_0x43e087,null));};exports[_0xffa1('0x86')]=function(_0x4bf574,_0x5831ad,_0x325cf3){return db[_0xffa1('0x42')]['findOne']({'where':{'id':_0x4bf574[_0xffa1('0x59')]['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x5831ad,null))[_0xffa1('0x36')](function(_0x47bf45){if(_0x47bf45){return _0x47bf45[_0xffa1('0x87')](null);}return null;})['then'](respondWithStatusCode(_0x5831ad,null))[_0xffa1('0x29')](handleError(_0x5831ad,null));};exports[_0xffa1('0x88')]=function(_0x2d08be,_0x307f9a,_0x484209){return db[_0xffa1('0x89')][_0xffa1('0x5e')]({'where':{'id':_0x2d08be['params']['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x307f9a,null))[_0xffa1('0x36')](function(_0x20b4b7){if(_0x20b4b7){return _0x20b4b7[_0xffa1('0x88')](_0x2d08be[_0xffa1('0x5d')]['ids'],_['omit'](_0x2d08be['body'],[_0xffa1('0x68'),'id'])||{});}})[_0xffa1('0x36')](respondWithResult(_0x307f9a,null))[_0xffa1('0x29')](handleError(_0x307f9a,null));};exports['getInteractions']=function(_0x4d6c3c,_0x47d7e1,_0x121505){var _0x4b5dbe={'raw':![],'where':{}};var _0x504960={};var _0x4eaee5={'count':0x0,'rows':[]};return db[_0xffa1('0x42')][_0xffa1('0x6b')]({'where':{'id':_0x4d6c3c['params']['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x47d7e1,null))[_0xffa1('0x36')](function(_0x303680){if(_0x303680){_0x504960[_0xffa1('0x5b')]=_[_0xffa1('0x46')](db[_0xffa1('0x89')][_0xffa1('0x5c')]);_0x504960[_0xffa1('0x45')]=_[_0xffa1('0x46')](_0x4d6c3c[_0xffa1('0x45')]);_0x504960[_0xffa1('0x4f')]=_[_0xffa1('0x48')](_0x504960[_0xffa1('0x5b')],_0x504960[_0xffa1('0x45')]);_0x4b5dbe['attributes']=_[_0xffa1('0x48')](_0x504960[_0xffa1('0x5b')],qs[_0xffa1('0x49')](_0x4d6c3c[_0xffa1('0x45')]['fields']));_0x4b5dbe[_0xffa1('0x47')]=_0x4b5dbe['attributes'][_0xffa1('0x4a')]?_0x4b5dbe[_0xffa1('0x47')]:_0x504960[_0xffa1('0x5b')];if(!_0x4d6c3c['query'][_0xffa1('0x4b')](_0xffa1('0x66'))){_0x4b5dbe['limit']=qs[_0xffa1('0x30')](_0x4d6c3c['query'][_0xffa1('0x30')]);_0x4b5dbe[_0xffa1('0x2d')]=qs[_0xffa1('0x2d')](_0x4d6c3c[_0xffa1('0x45')][_0xffa1('0x2d')]);}_0x4b5dbe['order']=qs['sort'](_0x4d6c3c[_0xffa1('0x45')]['sort']);_0x4b5dbe[_0xffa1('0x4e')]=qs[_0xffa1('0x4f')](_['pick'](_0x4d6c3c['query'],_0x504960[_0xffa1('0x4f')]));_0x4b5dbe[_0xffa1('0x4e')][_0xffa1('0x62')]=_0x303680['id'];if(_0x4d6c3c[_0xffa1('0x45')][_0xffa1('0x51')]){_0x4b5dbe['where']=_[_0xffa1('0x52')](_0x4b5dbe[_0xffa1('0x4e')],{'$or':_['map'](_0x4b5dbe[_0xffa1('0x47')],function(_0x4d3fa1){var _0x143e8d={};_0x143e8d[_0x4d3fa1]={'$like':'%'+_0x4d6c3c[_0xffa1('0x45')][_0xffa1('0x51')]+'%'};return _0x143e8d;})});}_0x4b5dbe=_[_0xffa1('0x52')]({},_0x4b5dbe,_0x4d6c3c[_0xffa1('0x54')]);return db[_0xffa1('0x89')][_0xffa1('0x2f')]({'where':_0x4b5dbe[_0xffa1('0x4e')]})[_0xffa1('0x36')](function(_0x41ea9a){_0x4eaee5[_0xffa1('0x2f')]=_0x41ea9a;if(_0x4d6c3c[_0xffa1('0x45')][_0xffa1('0x55')]){_0x4b5dbe[_0xffa1('0x56')]=[{'model':db['CmContact'],'as':_0xffa1('0x8a'),'required':![]},{'model':db[_0xffa1('0x8b')],'as':_0xffa1('0x8c'),'attributes':['name',_0xffa1('0x8d'),_0xffa1('0x8e')],'required':![]},{'model':db['Tag'],'as':_0xffa1('0x8f'),'attributes':['id','name',_0xffa1('0x90')],'where':_0x4d6c3c[_0xffa1('0x45')]['tag']?{'id':_0x4d6c3c['query']['tag']}:undefined,'required':_0x4d6c3c[_0xffa1('0x45')][_0xffa1('0x91')]?!![]:![]}];}return db[_0xffa1('0x89')][_0xffa1('0x57')](_0x4b5dbe);})[_0xffa1('0x36')](function(_0xf12f57){_0x4eaee5[_0xffa1('0x58')]=_0xf12f57;return _0x4eaee5;});}})[_0xffa1('0x36')](respondWithFilteredResult(_0x47d7e1,_0x4b5dbe))['catch'](handleError(_0x47d7e1,null));};exports[_0xffa1('0x92')]=function(_0x5debdc,_0x215e28,_0x2b706b){return db[_0xffa1('0x42')][_0xffa1('0x6b')]({'where':{'id':_0x5debdc[_0xffa1('0x59')]['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x215e28,null))['then'](function(_0x60240e){if(_0x60240e){return db[_0xffa1('0x93')][_0xffa1('0x94')](function(_0x4075e5){return db['MailApplication'][_0xffa1('0x37')]({'where':{'MailAccountId':_0x5debdc[_0xffa1('0x59')]['id']},'transaction':_0x4075e5})['then'](function(_0x20d4ab){var _0xb2be55=_['map'](_0x5debdc[_0xffa1('0x5d')],function(_0x390f6c){_0x390f6c[_0xffa1('0x62')]=_0x5debdc[_0xffa1('0x59')]['id'];return _0x390f6c;});return db[_0xffa1('0x95')][_0xffa1('0x96')](_0xb2be55,{'transaction':_0x4075e5});});})[_0xffa1('0x36')](function(){return db[_0xffa1('0x95')][_0xffa1('0x97')]({'where':{'MailAccountId':_0x5debdc[_0xffa1('0x59')]['id']},'order':_0xffa1('0x98')});});}})['then'](respondWithResult(_0x215e28,null))[_0xffa1('0x29')](handleError(_0x215e28,null));};exports[_0xffa1('0x99')]=function(_0x42a2ed,_0x4c1eed,_0x5eb20a){var _0x50935a={};var _0x1c16d7={};var _0x52830c;var _0x238e3f;return db[_0xffa1('0x42')][_0xffa1('0x6b')]({'where':{'id':_0x42a2ed[_0xffa1('0x59')]['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x4c1eed,null))[_0xffa1('0x36')](function(_0x1d03c3){if(_0x1d03c3){_0x52830c=_0x1d03c3;_0x1c16d7[_0xffa1('0x5b')]=_['keys'](db[_0xffa1('0x95')][_0xffa1('0x5c')]);_0x1c16d7[_0xffa1('0x45')]=_[_0xffa1('0x46')](_0x42a2ed[_0xffa1('0x45')]);_0x1c16d7['filters']=_[_0xffa1('0x48')](_0x1c16d7[_0xffa1('0x5b')],_0x1c16d7['query']);_0x50935a[_0xffa1('0x47')]=_['intersection'](_0x1c16d7[_0xffa1('0x5b')],qs[_0xffa1('0x49')](_0x42a2ed[_0xffa1('0x45')][_0xffa1('0x49')]));_0x50935a['attributes']=_0x50935a[_0xffa1('0x47')][_0xffa1('0x4a')]?_0x50935a[_0xffa1('0x47')]:_0x1c16d7[_0xffa1('0x5b')];_0x50935a[_0xffa1('0x4c')]=qs['sort'](_0x42a2ed[_0xffa1('0x45')][_0xffa1('0x4d')]);_0x50935a[_0xffa1('0x4e')]=qs[_0xffa1('0x4f')](_[_0xffa1('0x50')](_0x42a2ed[_0xffa1('0x45')],_0x1c16d7[_0xffa1('0x4f')]));if(_0x42a2ed[_0xffa1('0x45')]['filter']){_0x50935a['where']=_['merge'](_0x50935a['where'],{'$or':_['map'](_0x50935a['attributes'],function(_0x31117a){var _0x28aa24={};_0x28aa24[_0x31117a]={'$like':'%'+_0x42a2ed['query'][_0xffa1('0x51')]+'%'};return _0x28aa24;})});}_0x50935a=_[_0xffa1('0x52')]({},_0x50935a,_0x42a2ed[_0xffa1('0x54')]);return _0x52830c[_0xffa1('0x99')](_0x50935a);}})[_0xffa1('0x36')](function(_0x56648d){if(_0x56648d){_0x238e3f=_0x56648d[_0xffa1('0x4a')];if(!_0x42a2ed[_0xffa1('0x45')][_0xffa1('0x4b')](_0xffa1('0x66'))){_0x50935a['limit']=qs[_0xffa1('0x30')](_0x42a2ed[_0xffa1('0x45')][_0xffa1('0x30')]);_0x50935a[_0xffa1('0x2d')]=qs[_0xffa1('0x2d')](_0x42a2ed[_0xffa1('0x45')]['offset']);}return _0x52830c[_0xffa1('0x99')](_0x50935a);}})['then'](function(_0x2cbb62){if(_0x2cbb62){return _0x2cbb62?{'count':_0x238e3f,'rows':_0x2cbb62}:null;}})[_0xffa1('0x36')](respondWithResult(_0x4c1eed,null))['catch'](handleError(_0x4c1eed,null));};exports[_0xffa1('0x9a')]=function(_0x3b6390,_0x39b318,_0x2a61e3){var _0x419c68={'raw':!![],'where':{}};var _0x442521={};var _0x4205ba={'count':0x0,'rows':[]};return db[_0xffa1('0x42')][_0xffa1('0x6b')]({'where':{'id':_0x3b6390[_0xffa1('0x59')]['id']}})['then'](handleEntityNotFound(_0x39b318,null))[_0xffa1('0x36')](function(_0x8516b7){if(_0x8516b7){_0x442521[_0xffa1('0x5b')]=_[_0xffa1('0x46')](db[_0xffa1('0x9b')][_0xffa1('0x5c')]);_0x442521[_0xffa1('0x45')]=_[_0xffa1('0x46')](_0x3b6390['query']);_0x442521['filters']=_[_0xffa1('0x48')](_0x442521['model'],_0x442521[_0xffa1('0x45')]);_0x419c68[_0xffa1('0x47')]=_[_0xffa1('0x48')](_0x442521['model'],qs[_0xffa1('0x49')](_0x3b6390['query'][_0xffa1('0x49')]));_0x419c68['attributes']=_0x419c68['attributes']['length']?_0x419c68[_0xffa1('0x47')]:_0x442521[_0xffa1('0x5b')];if(!_0x3b6390[_0xffa1('0x45')][_0xffa1('0x4b')](_0xffa1('0x66'))){_0x419c68[_0xffa1('0x30')]=qs[_0xffa1('0x30')](_0x3b6390[_0xffa1('0x45')][_0xffa1('0x30')]);_0x419c68[_0xffa1('0x2d')]=qs[_0xffa1('0x2d')](_0x3b6390['query'][_0xffa1('0x2d')]);}_0x419c68[_0xffa1('0x4c')]=qs[_0xffa1('0x4d')](_0x3b6390[_0xffa1('0x45')][_0xffa1('0x4d')]);_0x419c68[_0xffa1('0x4e')]=qs[_0xffa1('0x4f')](_[_0xffa1('0x50')](_0x3b6390['query'],_0x442521[_0xffa1('0x4f')]));_0x419c68[_0xffa1('0x4e')]['MailAccountId']=_0x8516b7['id'];if(_0x3b6390[_0xffa1('0x45')][_0xffa1('0x51')]){_0x419c68[_0xffa1('0x4e')]=_[_0xffa1('0x52')](_0x419c68[_0xffa1('0x4e')],{'$or':_[_0xffa1('0x41')](_0x419c68[_0xffa1('0x47')],function(_0x104f2d){var _0x5b9e74={};_0x5b9e74[_0x104f2d]={'$like':'%'+_0x3b6390[_0xffa1('0x45')][_0xffa1('0x51')]+'%'};return _0x5b9e74;})});}if(_0x3b6390[_0xffa1('0x45')]['$gte']){var _0x338e87=_0x3b6390['query'][_0xffa1('0x9c')][_0xffa1('0x9d')](',');var _0x46106d={};_0x46106d[_0x338e87[0x0]]={'$gte':moment(_0x338e87[0x1])[_0xffa1('0x9e')](_0xffa1('0x9f'))};_0x419c68[_0xffa1('0x4e')]=_[_0xffa1('0x52')](_0x419c68['where'],_0x46106d);}_0x419c68=_[_0xffa1('0x52')]({},_0x419c68,_0x3b6390[_0xffa1('0x54')]);return db['MailMessage']['count']({'where':_0x419c68[_0xffa1('0x4e')]})[_0xffa1('0x36')](function(_0x348a68){_0x4205ba['count']=_0x348a68;if(_0x3b6390[_0xffa1('0x45')][_0xffa1('0x55')]){_0x419c68[_0xffa1('0x56')]=[{'all':!![]}];}return db['MailMessage'][_0xffa1('0x57')](_0x419c68);})['then'](function(_0x2ba61a){if(_0x3b6390[_0xffa1('0x45')]['inlineCss']===_0xffa1('0xa0')){for(var _0x426480=0x0;_0x426480<_0x2ba61a[_0xffa1('0x4a')];_0x426480++){_0x2ba61a[_0x426480][_0xffa1('0x5d')]=juice(_0x2ba61a[_0x426480][_0xffa1('0x5d')]);}}_0x4205ba['rows']=_0x2ba61a;return _0x4205ba;});}})['then'](respondWithFilteredResult(_0x39b318,_0x419c68))['catch'](handleError(_0x39b318,null));};exports['send']=function(_0x5b43c9,_0x4edfb0,_0x53ff41){var _0x2f15d3,_0x512587={},_0x4d5540;if(_0x5b43c9[_0xffa1('0x5d')]['to']){_0x4d5540=_0x5b43c9['body']['to'][_0xffa1('0x9d')](',')[0x0];}return db[_0xffa1('0x42')][_0xffa1('0x5e')]({'where':{'id':_0x5b43c9[_0xffa1('0x59')]['id']},'include':[{'model':db[_0xffa1('0xa1')],'as':_0xffa1('0xa2'),'include':[{'model':db[_0xffa1('0xa3')],'as':_0xffa1('0xa4'),'where':{'email':_0x4d5540},'limit':0x1,'order':[[_0xffa1('0xa5'),_0xffa1('0xa6')]]}]},{'model':db[_0xffa1('0x3f')],'as':_0xffa1('0x5a'),'raw':!![]}]})[_0xffa1('0x36')](handleEntityNotFound(_0x4edfb0,null))['then'](function(_0x4e2492){if(_0x4e2492){_0x2f15d3=_0x4e2492;if(_0x4e2492['Smtp']){if(_[_0xffa1('0x6f')](_0x5b43c9[_0xffa1('0x5d')][_0xffa1('0xa7')])){_0x5b43c9[_0xffa1('0x5d')][_0xffa1('0xa7')]=util[_0xffa1('0x9e')](_0xffa1('0xa8'),_0x4e2492[_0xffa1('0x3a')],_0x4e2492['email']||_0x4e2492[_0xffa1('0x5a')]['user']);}if(_0x5b43c9[_0xffa1('0x5d')][_0xffa1('0xa9')]&&_0x5b43c9[_0xffa1('0x5d')][_0xffa1('0xa9')][_0xffa1('0x4a')]){for(var _0x3f10df=0x0;_0x3f10df<_0x5b43c9['body'][_0xffa1('0xa9')][_0xffa1('0x4a')];_0x3f10df+=0x1){_0x5b43c9['body'][_0xffa1('0xa9')][_0x3f10df]={'filename':_0x5b43c9[_0xffa1('0x5d')]['attachments'][_0x3f10df][_0xffa1('0x3a')],'path':path[_0xffa1('0xaa')](config['root'],_0xffa1('0xab'),_0x5b43c9[_0xffa1('0x5d')][_0xffa1('0xa9')][_0x3f10df][_0xffa1('0xac')])};}}var _0x4f62a7={'tls':{'rejectUnauthorized':![]}};if(_[_0xffa1('0x6f')](_0x4e2492['Smtp'][_0xffa1('0x79')])){if(_0x4e2492['Smtp'][_0xffa1('0xad')]){_0x4f62a7[_0xffa1('0xae')]={'user':_0x4e2492[_0xffa1('0x5a')][_0xffa1('0x72')],'pass':_0x4e2492[_0xffa1('0x5a')][_0xffa1('0x75')]};}_0x4f62a7[_0xffa1('0x77')]=_0x4e2492[_0xffa1('0x5a')][_0xffa1('0x77')];_0x4f62a7['port']=_0x4e2492[_0xffa1('0x5a')][_0xffa1('0x78')];_0x4f62a7[_0xffa1('0xaf')]=_0x4e2492[_0xffa1('0x5a')][_0xffa1('0xaf')];}else{_0x4f62a7['service']=_0x4e2492[_0xffa1('0x5a')][_0xffa1('0x79')];_0x4f62a7[_0xffa1('0xae')]={'user':_0x4e2492[_0xffa1('0x5a')][_0xffa1('0x72')],'pass':_0x4e2492[_0xffa1('0x5a')][_0xffa1('0x75')]};}return respondWithRpcPromise(_0xffa1('0xb0'),_0xffa1('0xb1'),{'account':_0x4f62a7,'message':_0x5b43c9[_0xffa1('0x5d')]});}else{throw new Error(_0xffa1('0xb2'));}}})['then'](function(_0x22340a){if(_0x22340a){_0x512587=_0x22340a;if(_0x2f15d3[_0xffa1('0xa2')]){if(_0x2f15d3[_0xffa1('0xa2')][_0xffa1('0xa4')][_0xffa1('0x4a')]){return _0x2f15d3['List'][_0xffa1('0xa4')][0x0];}else{return db[_0xffa1('0xa3')][_0xffa1('0x64')](_[_0xffa1('0x1c')](_0x5b43c9[_0xffa1('0x5d')],{'firstName':_0x5b43c9['body']['to'],'email':_0x5b43c9[_0xffa1('0x5d')]['to'],'phone':_0x5b43c9['body']['to'],'ListId':_0x2f15d3[_0xffa1('0x6e')]}));}}else{throw new Error('List\x20not\x20found');}}})[_0xffa1('0x36')](function(_0xea4282){if(_0xea4282){var _0x1bc23f={'UserId':_0x5b43c9['user']['id'],'ContactId':_0xea4282['id'],'MailAccountId':_0x2f15d3['id'],'inReplyTo':_0x512587['messageId'],'to':_0x5b43c9[_0xffa1('0x5d')][_0xffa1('0xa7')],'cc':_0x5b43c9[_0xffa1('0x5d')]['cc'],'subject':_0x5b43c9[_0xffa1('0x5d')][_0xffa1('0xb3')],'attach':_0x5b43c9[_0xffa1('0x5d')][_0xffa1('0xb4')],'firstMsgDirection':'out','lastMsgAt':moment()[_0xffa1('0x9e')](_0xffa1('0x9f')),'lastMsgDirection':_0xffa1('0xb5'),'Messages':[_['merge'](_0x5b43c9[_0xffa1('0x5d')],{'messageId':_0x512587['messageId'],'sentAt':moment()[_0xffa1('0x9e')](_0xffa1('0x9f')),'read':!![],'MailAccountId':_0x2f15d3['id'],'UserId':_0x5b43c9[_0xffa1('0x72')]['id'],'ContactId':_0xea4282['id']})]};if(_0x5b43c9['body'][_0xffa1('0xb6')]){_0x1bc23f=_[_0xffa1('0x52')](_0x1bc23f,_0x5b43c9[_0xffa1('0x5d')][_0xffa1('0xb6')]);}return db[_0xffa1('0x89')][_0xffa1('0x64')](_0x1bc23f,{'include':[{'model':db[_0xffa1('0x9b')],'as':_0xffa1('0xb7')}]});}})[_0xffa1('0x36')](respondWithResult(_0x4edfb0,null))[_0xffa1('0x29')](handleError(_0x4edfb0,null));};exports['verifySmtp']=function(_0x501f6d,_0x405481,_0x2b721b){return db['MailAccount'][_0xffa1('0x5e')]({'where':{'id':_0x501f6d[_0xffa1('0x59')]['id']},'include':[{'model':db[_0xffa1('0x3f')],'as':_0xffa1('0x5a'),'raw':!![]}]})[_0xffa1('0x36')](handleEntityNotFound(_0x405481,null))[_0xffa1('0x36')](function(_0x11611e){if(_0x11611e&&_0x11611e[_0xffa1('0x5a')]){var _0x4a6df3={'id':_0x11611e['id'],'tls':{'rejectUnauthorized':![]}};if(_0x11611e[_0xffa1('0x5a')][_0xffa1('0x79')]){_0x4a6df3[_0xffa1('0x79')]=_0x11611e[_0xffa1('0x5a')][_0xffa1('0x79')];}else{_0x4a6df3['host']=_0x11611e[_0xffa1('0x5a')]['host'];_0x4a6df3[_0xffa1('0x78')]=_0x11611e['Smtp'][_0xffa1('0x78')];_0x4a6df3[_0xffa1('0xaf')]=_0x11611e[_0xffa1('0x5a')][_0xffa1('0xaf')];}if(_0x11611e['Smtp'][_0xffa1('0xad')]){_0x4a6df3[_0xffa1('0xae')]={'user':_0x11611e[_0xffa1('0x5a')][_0xffa1('0x72')],'pass':_0x11611e['Smtp'][_0xffa1('0x75')]};}return respondWithRpcPromise(_0xffa1('0xb8'),_0xffa1('0xb9'),{'account':_0x4a6df3});}})['then'](respondWithResult(_0x405481,null))['catch'](handleError(_0x405481,null));};exports[_0xffa1('0x37')]=function(_0x3ae486,_0x46af8e){return db[_0xffa1('0x42')]['find']({'where':{'id':_0x3ae486[_0xffa1('0x59')]['id']}})['then'](handleEntityNotFound(_0x46af8e,null))[_0xffa1('0x36')](function(_0x4d758a){if(_0x4d758a&&_0x4d758a[_0xffa1('0x79')]){throw new db[(_0xffa1('0xba'))]['ValidationError'](_0xffa1('0xbb'));}return _0x4d758a;})[_0xffa1('0x36')](removeEntity(_0x46af8e,null))['catch'](handleError(_0x46af8e,null));};exports[_0xffa1('0xbc')]=function(_0x2f4ad3,_0x2a468a,_0x258fd6){return db['MailAccount']['find']({'where':{'id':_0x2f4ad3[_0xffa1('0x59')]['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x2a468a,null))[_0xffa1('0x36')](function(_0x5c8ef8){if(_0x5c8ef8){return _0x5c8ef8['addAgents'](_0x2f4ad3[_0xffa1('0x5d')][_0xffa1('0x68')],_[_0xffa1('0xbd')](_0x2f4ad3[_0xffa1('0x5d')],[_0xffa1('0x68'),'id'])||{})[_0xffa1('0xbe')](function(_0x287ae9){for(var _0x2f2a2a=0x0;_0x2f2a2a<_0x2f4ad3[_0xffa1('0x5d')][_0xffa1('0x68')][_0xffa1('0x4a')];_0x2f2a2a+=0x1){socket[_0xffa1('0xbf')](_0xffa1('0xc0'),{'UserId':Number(_0x2f4ad3[_0xffa1('0x5d')]['ids'][_0x2f2a2a]),'MailAccountId':Number(_0x2f4ad3[_0xffa1('0x59')]['id'])});}return _0x287ae9;});}})['then'](respondWithResult(_0x2a468a,null))[_0xffa1('0x29')](handleError(_0x2a468a,null));};exports[_0xffa1('0xc1')]=function(_0x24de99,_0x1d387b,_0x58bbed){return db['MailAccount'][_0xffa1('0x5e')]({'where':{'id':_0x24de99[_0xffa1('0x59')]['id']}})['then'](handleEntityNotFound(_0x1d387b,null))['then'](function(_0x2ba81b){if(_0x2ba81b){return _0x2ba81b[_0xffa1('0xc1')](_0x24de99['query'][_0xffa1('0x68')])[_0xffa1('0x36')](function(){if(_[_0xffa1('0xc2')](_0x24de99[_0xffa1('0x45')][_0xffa1('0x68')])){for(var _0x17da06=0x0;_0x17da06<_0x24de99['query']['ids'][_0xffa1('0x4a')];_0x17da06+=0x1){socket[_0xffa1('0xbf')]('userMailAccount:remove',{'UserId':Number(_0x24de99[_0xffa1('0x45')][_0xffa1('0x68')][_0x17da06]),'MailAccountId':Number(_0x24de99[_0xffa1('0x59')]['id'])});}}else{socket['emit']('userMailAccount:remove',{'UserId':Number(_0x24de99[_0xffa1('0x45')][_0xffa1('0x68')]),'MailAccountId':Number(_0x24de99[_0xffa1('0x59')]['id'])});}});}})[_0xffa1('0x36')](respondWithStatusCode(_0x1d387b,null))['catch'](handleError(_0x1d387b,null));};exports[_0xffa1('0xc3')]=function(_0x4d7ff6,_0x2d5beb,_0x54be64){var _0x113e31={};var _0x53e929={};var _0x5073be;var _0x1833c6;return db[_0xffa1('0x42')][_0xffa1('0x6b')]({'where':{'id':_0x4d7ff6[_0xffa1('0x59')]['id']}})[_0xffa1('0x36')](handleEntityNotFound(_0x2d5beb,null))[_0xffa1('0x36')](function(_0x205539){if(_0x205539){_0x5073be=_0x205539;_0x53e929[_0xffa1('0x5b')]=_[_0xffa1('0x46')](db['User'][_0xffa1('0x5c')]);_0x53e929[_0xffa1('0x45')]=_['keys'](_0x4d7ff6['query']);_0x53e929[_0xffa1('0x4f')]=_[_0xffa1('0x48')](_0x53e929[_0xffa1('0x5b')],_0x53e929[_0xffa1('0x45')]);_0x113e31['attributes']=_[_0xffa1('0x48')](_0x53e929[_0xffa1('0x5b')],qs[_0xffa1('0x49')](_0x4d7ff6[_0xffa1('0x45')][_0xffa1('0x49')]));_0x113e31[_0xffa1('0x47')]=_0x113e31[_0xffa1('0x47')][_0xffa1('0x4a')]?_0x113e31[_0xffa1('0x47')]:_0x53e929[_0xffa1('0x5b')];_0x113e31[_0xffa1('0x4c')]=qs[_0xffa1('0x4d')](_0x4d7ff6[_0xffa1('0x45')][_0xffa1('0x4d')]);_0x113e31[_0xffa1('0x4e')]=qs[_0xffa1('0x4f')](_['pick'](_0x4d7ff6[_0xffa1('0x45')],_0x53e929[_0xffa1('0x4f')]));if(_0x4d7ff6[_0xffa1('0x45')][_0xffa1('0x51')]){_0x113e31[_0xffa1('0x4e')]=_['merge'](_0x113e31[_0xffa1('0x4e')],{'$or':_[_0xffa1('0x41')](_0x113e31[_0xffa1('0x47')],function(_0x5eb14a){var _0x487bd6={};_0x487bd6[_0x5eb14a]={'$like':'%'+_0x4d7ff6[_0xffa1('0x45')][_0xffa1('0x51')]+'%'};return _0x487bd6;})});}_0x113e31=_[_0xffa1('0x52')]({},_0x113e31,_0x4d7ff6['options']);return _0x5073be[_0xffa1('0xc3')](_0x113e31);}})[_0xffa1('0x36')](function(_0x86cd4c){if(_0x86cd4c){_0x1833c6=_0x86cd4c['length'];if(!_0x4d7ff6[_0xffa1('0x45')][_0xffa1('0x4b')](_0xffa1('0x66'))){_0x113e31[_0xffa1('0x30')]=qs[_0xffa1('0x30')](_0x4d7ff6[_0xffa1('0x45')][_0xffa1('0x30')]);_0x113e31[_0xffa1('0x2d')]=qs[_0xffa1('0x2d')](_0x4d7ff6['query'][_0xffa1('0x2d')]);}return _0x5073be['getAgents'](_0x113e31);}})[_0xffa1('0x36')](function(_0x300dd3){if(_0x300dd3){return _0x300dd3?{'count':_0x1833c6,'rows':_0x300dd3}:null;}})[_0xffa1('0x36')](respondWithResult(_0x2d5beb,null))['catch'](handleError(_0x2d5beb,null));};
\ No newline at end of file
index 32c06c1..31af2d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a93=['hasOwnProperty','hook','events','../../mysqldb','MailAccount','save','update','remove'];(function(_0x4dd8cb,_0x5c67f9){var _0x5cf72d=function(_0x21f171){while(--_0x21f171){_0x4dd8cb['push'](_0x4dd8cb['shift']());}};_0x5cf72d(++_0x5c67f9);}(_0x0a93,0x6a));var _0x30a9=function(_0x566415,_0x3e375d){_0x566415=_0x566415-0x0;var _0x228869=_0x0a93[_0x566415];return _0x228869;};'use strict';var EventEmitter=require(_0x30a9('0x0'));var MailAccount=require(_0x30a9('0x1'))['db'][_0x30a9('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x30a9('0x3'),'afterUpdate':_0x30a9('0x4'),'afterDestroy':_0x30a9('0x5')};function emitEvent(_0x2bdf19){return function(_0x556c5e,_0x53e03b,_0x54321d){MailAccountEvents['emit'](_0x2bdf19+':'+_0x556c5e['id'],_0x556c5e);MailAccountEvents['emit'](_0x2bdf19,_0x556c5e);_0x54321d(null);};}for(var e in events){if(events[_0x30a9('0x6')](e)){var event=events[e];MailAccount[_0x30a9('0x7')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
+var _0xb934=['hasOwnProperty','hook','events','../../mysqldb','MailAccount','save','update','remove','emit'];(function(_0x2983c4,_0x2e6582){var _0x57f3b4=function(_0x513860){while(--_0x513860){_0x2983c4['push'](_0x2983c4['shift']());}};_0x57f3b4(++_0x2e6582);}(_0xb934,0x92));var _0x4b93=function(_0x424403,_0x27727b){_0x424403=_0x424403-0x0;var _0x5b3b28=_0xb934[_0x424403];return _0x5b3b28;};'use strict';var EventEmitter=require(_0x4b93('0x0'));var MailAccount=require(_0x4b93('0x1'))['db'][_0x4b93('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4b93('0x3'),'afterUpdate':_0x4b93('0x4'),'afterDestroy':_0x4b93('0x5')};function emitEvent(_0x2b2930){return function(_0x17c638,_0x50c02e,_0x5e6389){MailAccountEvents[_0x4b93('0x6')](_0x2b2930+':'+_0x17c638['id'],_0x17c638);MailAccountEvents[_0x4b93('0x6')](_0x2b2930,_0x17c638);_0x5e6389(null);};}for(var e in events){if(events[_0x4b93('0x7')](e)){var event=events[e];MailAccount[_0x4b93('0x8')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
index 1952cd8..f787467 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf285=['mail_accounts','lodash','../../config/logger','api','moment','path','rimraf','../../config/environment','./mailAccount.attributes','exports','define','MailAccount'];(function(_0x5c2888,_0x7b6665){var _0x115094=function(_0x14d0f1){while(--_0x14d0f1){_0x5c2888['push'](_0x5c2888['shift']());}};_0x115094(++_0x7b6665);}(_0xf285,0x121));var _0x5f28=function(_0x43dd74,_0x2161fe){_0x43dd74=_0x43dd74-0x0;var _0xed76d3=_0xf285[_0x43dd74];return _0xed76d3;};'use strict';var _=require(_0x5f28('0x0'));var util=require('util');var logger=require(_0x5f28('0x1'))(_0x5f28('0x2'));var moment=require(_0x5f28('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x5f28('0x4'));var rimraf=require(_0x5f28('0x5'));var config=require(_0x5f28('0x6'));var attributes=require(_0x5f28('0x7'));module[_0x5f28('0x8')]=function(_0x47ccd4,_0x22a828){return _0x47ccd4[_0x5f28('0x9')](_0x5f28('0xa'),attributes,{'tableName':_0x5f28('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd69d=['bluebird','request-promise','path','rimraf','exports','define','mail_accounts','lodash','util','../../config/logger','api','moment'];(function(_0x381472,_0x389f86){var _0x484e00=function(_0x4d824c){while(--_0x4d824c){_0x381472['push'](_0x381472['shift']());}};_0x484e00(++_0x389f86);}(_0xd69d,0x97));var _0xdd69=function(_0xf3e7e0,_0x4a1521){_0xf3e7e0=_0xf3e7e0-0x0;var _0x5e640d=_0xd69d[_0xf3e7e0];return _0x5e640d;};'use strict';var _=require(_0xdd69('0x0'));var util=require(_0xdd69('0x1'));var logger=require(_0xdd69('0x2'))(_0xdd69('0x3'));var moment=require(_0xdd69('0x4'));var BPromise=require(_0xdd69('0x5'));var rp=require(_0xdd69('0x6'));var fs=require('fs');var path=require(_0xdd69('0x7'));var rimraf=require(_0xdd69('0x8'));var config=require('../../config/environment');var attributes=require('./mailAccount.attributes');module[_0xdd69('0x9')]=function(_0x502924,_0x525f73){return _0x502924[_0xdd69('0xa')]('MailAccount',attributes,{'tableName':_0xdd69('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 15350c1..d3b1a54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cff=['redis','defaults','./mailAccount.socket','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch','options','raw','where','attributes','limit','include','map','model','GetMailAccount','stringify','ShowMailAccount','NotifyMailAccount','body','mail','difference','keys','CmContact','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','find','account','CmList','List','DESC','Applications','omit','applications','list','orderBy','priority','asc','length','autoclose','Contacts','List\x20not\x20found','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','inReplyTo','MailInteraction','create','update','get','interaction','contact','originTo','bcc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','UserId','name','unshift','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0xe2d654,_0x16726f){var _0x16fffe=function(_0x1659d7){while(--_0x1659d7){_0xe2d654['push'](_0xe2d654['shift']());}};_0x16fffe(++_0x16726f);}(_0x1cff,0x10d));var _0xf1cf=function(_0x270426,_0x1a60e3){_0x270426=_0x270426-0x0;var _0x5edf1e=_0x1cff[_0x270426];return _0x5edf1e;};'use strict';var _=require(_0xf1cf('0x0'));var util=require('util');var moment=require(_0xf1cf('0x1'));var BPromise=require('bluebird');var rs=require(_0xf1cf('0x2'));var fs=require('fs');var Redis=require(_0xf1cf('0x3'));var db=require(_0xf1cf('0x4'))['db'];var utils=require(_0xf1cf('0x5'));var logger=require(_0xf1cf('0x6'))(_0xf1cf('0x7'));var config=require('../../config/environment');var jayson=require(_0xf1cf('0x8'));var client=jayson[_0xf1cf('0x9')]['http']({'port':0x232c});config[_0xf1cf('0xa')]=_[_0xf1cf('0xb')](config[_0xf1cf('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf1cf('0xa')]));require(_0xf1cf('0xc'))['register'](socket);function respondWithRpcPromise(_0x1f469b,_0x2b6943,_0x1b00e2){return new BPromise(function(_0x3cf75c,_0x25575f){return client[_0xf1cf('0xd')](_0x1f469b,_0x1b00e2)[_0xf1cf('0xe')](function(_0x3d655f){logger[_0xf1cf('0xf')](_0xf1cf('0x10'),_0x2b6943,_0xf1cf('0x11'));logger[_0xf1cf('0x12')](_0xf1cf('0x13'),_0x2b6943,_0xf1cf('0x11'),JSON['stringify'](_0x3d655f));if(_0x3d655f[_0xf1cf('0x14')]){if(_0x3d655f[_0xf1cf('0x14')]['code']===0x1f4){logger['error'](_0xf1cf('0x10'),_0x2b6943,_0x3d655f['error'][_0xf1cf('0x15')]);return _0x25575f(_0x3d655f[_0xf1cf('0x14')][_0xf1cf('0x15')]);}logger[_0xf1cf('0x14')]('MailAccount,\x20%s,\x20%s',_0x2b6943,_0x3d655f[_0xf1cf('0x14')][_0xf1cf('0x15')]);return _0x3cf75c(_0x3d655f[_0xf1cf('0x14')][_0xf1cf('0x15')]);}else{logger[_0xf1cf('0xf')](_0xf1cf('0x10'),_0x2b6943,_0xf1cf('0x11'));_0x3cf75c(_0x3d655f[_0xf1cf('0x16')][_0xf1cf('0x15')]);}})[_0xf1cf('0x17')](function(_0x36837d){logger[_0xf1cf('0x14')](_0xf1cf('0x10'),_0x2b6943,_0x36837d);_0x25575f(_0x36837d);});});}exports['GetMailAccount']=function(_0x1b4e89){var _0x20ea7d=this;return new Promise(function(_0x1695c5,_0x4cce51){return db['MailAccount']['findAll']({'raw':_0x1b4e89[_0xf1cf('0x18')]?_0x1b4e89[_0xf1cf('0x18')][_0xf1cf('0x19')]===undefined?!![]:![]:!![],'where':_0x1b4e89['options']?_0x1b4e89[_0xf1cf('0x18')][_0xf1cf('0x1a')]||null:null,'attributes':_0x1b4e89['options']?_0x1b4e89['options'][_0xf1cf('0x1b')]||null:null,'limit':_0x1b4e89[_0xf1cf('0x18')]?_0x1b4e89['options'][_0xf1cf('0x1c')]||null:null,'include':_0x1b4e89[_0xf1cf('0x18')]?_0x1b4e89[_0xf1cf('0x18')]['include']?_['map'](_0x1b4e89[_0xf1cf('0x18')][_0xf1cf('0x1d')],function(_0x54b4dc){return{'model':db[_0x54b4dc['model']],'as':_0x54b4dc['as'],'attributes':_0x54b4dc['attributes'],'include':_0x54b4dc[_0xf1cf('0x1d')]?_[_0xf1cf('0x1e')](_0x54b4dc[_0xf1cf('0x1d')],function(_0x2385a){return{'model':db[_0x2385a['model']],'as':_0x2385a['as'],'attributes':_0x2385a[_0xf1cf('0x1b')],'include':_0x2385a[_0xf1cf('0x1d')]?_[_0xf1cf('0x1e')](_0x2385a[_0xf1cf('0x1d')],function(_0x44d1db){return{'model':db[_0x44d1db[_0xf1cf('0x1f')]],'as':_0x44d1db['as'],'attributes':_0x44d1db['attributes']};}):[]};}):[]};}):[]:[]})[_0xf1cf('0xe')](function(_0xfad6ca){logger[_0xf1cf('0xf')](_0xf1cf('0x20'),_0x1b4e89);logger[_0xf1cf('0x12')](_0xf1cf('0x20'),_0x1b4e89,JSON[_0xf1cf('0x21')](_0xfad6ca));_0x1695c5(_0xfad6ca);})[_0xf1cf('0x17')](function(_0x50d9f1){logger['error'](_0xf1cf('0x20'),_0x50d9f1[_0xf1cf('0x15')],_0x1b4e89);_0x4cce51(_0x20ea7d[_0xf1cf('0x14')](0x1f4,_0x50d9f1[_0xf1cf('0x15')]));});});};exports[_0xf1cf('0x22')]=function(_0x2bbb5f){var _0x25a7b9=this;return new Promise(function(_0x4fa871,_0x28003a){return db['MailAccount']['find']({'raw':_0x2bbb5f[_0xf1cf('0x18')]?_0x2bbb5f[_0xf1cf('0x18')][_0xf1cf('0x19')]===undefined?!![]:![]:!![],'where':_0x2bbb5f[_0xf1cf('0x18')]?_0x2bbb5f[_0xf1cf('0x18')][_0xf1cf('0x1a')]||null:null,'attributes':_0x2bbb5f[_0xf1cf('0x18')]?_0x2bbb5f[_0xf1cf('0x18')][_0xf1cf('0x1b')]||null:null,'include':_0x2bbb5f[_0xf1cf('0x18')]?_0x2bbb5f['options'][_0xf1cf('0x1d')]?_['map'](_0x2bbb5f[_0xf1cf('0x18')][_0xf1cf('0x1d')],function(_0x18082c){return{'model':db[_0x18082c[_0xf1cf('0x1f')]],'as':_0x18082c['as'],'attributes':_0x18082c['attributes'],'include':_0x18082c[_0xf1cf('0x1d')]?_[_0xf1cf('0x1e')](_0x18082c[_0xf1cf('0x1d')],function(_0x3447bc){return{'model':db[_0x3447bc[_0xf1cf('0x1f')]],'as':_0x3447bc['as'],'attributes':_0x3447bc[_0xf1cf('0x1b')],'include':_0x3447bc['include']?_[_0xf1cf('0x1e')](_0x3447bc[_0xf1cf('0x1d')],function(_0x69bb9a){return{'model':db[_0x69bb9a[_0xf1cf('0x1f')]],'as':_0x69bb9a['as'],'attributes':_0x69bb9a[_0xf1cf('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xf1cf('0xe')](function(_0xe938a7){logger[_0xf1cf('0xf')](_0xf1cf('0x22'),_0x2bbb5f);logger[_0xf1cf('0x12')](_0xf1cf('0x22'),_0x2bbb5f,JSON['stringify'](_0xe938a7));_0x4fa871(_0xe938a7);})[_0xf1cf('0x17')](function(_0x3c83d4){logger[_0xf1cf('0x14')](_0xf1cf('0x22'),_0x3c83d4[_0xf1cf('0x15')],_0x2bbb5f);_0x28003a(_0x25a7b9[_0xf1cf('0x14')](0x1f4,_0x3c83d4[_0xf1cf('0x15')]));});});};exports[_0xf1cf('0x23')]=function(_0x13438b){var _0x4ca26c=this;return new Promise(function(_0x2ee464,_0x81385e){var _0xecb635={'body':_0x13438b[_0xf1cf('0x24')],'channel':_0xf1cf('0x25')};var _0x49ccc6=_[_0xf1cf('0x26')](_[_0xf1cf('0x27')](db[_0xf1cf('0x28')]['rawAttributes']),['createdAt',_0xf1cf('0x29'),_0xf1cf('0x2a'),_0xf1cf('0x2b')]);var _0x40feec=![];if(_0x13438b[_0xf1cf('0x24')]['id']){delete _0x13438b['body']['id'];}if(_['isNil'](_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x2c')])){return _0x81385e(_0x4ca26c['error'](0x1f4,_0xf1cf('0x2d')));}if(_[_0xf1cf('0x2e')](_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x24')])||_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x24')]===''){return _0x81385e(_0x4ca26c[_0xf1cf('0x14')](0x1f4,_0xf1cf('0x2f')));}if(_[_0xf1cf('0x2e')](_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x30')])){return _0x81385e(_0x4ca26c[_0xf1cf('0x14')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x49ccc6));}if(!_['includes'](_0x49ccc6,_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x30')])){return _0x81385e(_0x4ca26c[_0xf1cf('0x14')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x49ccc6));}var _0x40c6ca={};_0x40c6ca[_0x13438b['body'][_0xf1cf('0x30')]]=_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x2c')];return db['MailAccount'][_0xf1cf('0x31')]({'where':{'id':_0x13438b[_0xf1cf('0x32')]['id']},'include':[{'model':db[_0xf1cf('0x33')],'as':_0xf1cf('0x34'),'include':[{'model':db[_0xf1cf('0x28')],'as':'Contacts','where':_0x40c6ca,'limit':0x1,'order':[[_0xf1cf('0x29'),_0xf1cf('0x35')]]}]},{'model':db['MailApplication'],'as':_0xf1cf('0x36')},{'model':db['MailServerOut'],'as':'Smtp'}]})[_0xf1cf('0xe')](function(_0x307347){if(_0x307347&&_0x307347[_0xf1cf('0x34')]){var _0x267ecc=_0x307347['get']({'plain':!![]});_0xecb635[_0xf1cf('0x32')]=_[_0xf1cf('0x37')](_0x267ecc,[_0xf1cf('0x36'),_0xf1cf('0x34')]);_0xecb635[_0xf1cf('0x38')]=_0x267ecc['Applications'];_0xecb635[_0xf1cf('0x39')]=_0x267ecc[_0xf1cf('0x34')];_0xecb635[_0xf1cf('0x38')]=_[_0xf1cf('0x3a')](_0xecb635[_0xf1cf('0x38')],[_0xf1cf('0x3b')],[_0xf1cf('0x3c')]);if(_0xecb635[_0xf1cf('0x32')]&&_0xecb635[_0xf1cf('0x32')]['autoclose']){_0xecb635['applications']['push']({'id':0x0,'priority':_0xecb635[_0xf1cf('0x38')][_0xf1cf('0x3d')]+0x1,'app':'close','appdata':_0xf1cf('0x3e'),'interval':'*,*,*,*'});}if(_0xecb635[_0xf1cf('0x32')][_0xf1cf('0x36')]){delete _0xecb635['account'][_0xf1cf('0x36')];}if(_0xecb635[_0xf1cf('0x32')][_0xf1cf('0x34')]){delete _0xecb635['account'][_0xf1cf('0x34')];}if(_0x267ecc['List'][_0xf1cf('0x3f')]['length']){return _0x267ecc['List'][_0xf1cf('0x3f')][0x0];}var _0x5643cd=_[_0xf1cf('0xb')](_0x13438b[_0xf1cf('0x24')],{'firstName':_0x13438b['body'][_0xf1cf('0x2c')],'ListId':_0x267ecc[_0xf1cf('0x2b')]});_0x5643cd[_0x13438b['body'][_0xf1cf('0x30')]]=_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x2c')];return db[_0xf1cf('0x28')]['create'](_0x5643cd);}else{throw new Error(_0xf1cf('0x40'));}})[_0xf1cf('0xe')](function(_0x341fa8){_0xecb635['contact']=_0x341fa8;if(_0x341fa8){if(!_0x13438b['body'][_0xf1cf('0x15')][_0xf1cf('0x41')]){_0x13438b['body'][_0xf1cf('0x15')][_0xf1cf('0x41')]=rs[_0xf1cf('0x42')]()+'\x20'+_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['from'];}var _0x1ac860={'ContactId':_0x341fa8['id'],'MailAccountId':_0x13438b[_0xf1cf('0x32')]['id'],'inReplyTo':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')][_0xf1cf('0x41')],'to':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')][_0xf1cf('0x2c')],'cc':_0x13438b[_0xf1cf('0x24')]['message']['cc'],'subject':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')][_0xf1cf('0x43')],'attach':_0x13438b[_0xf1cf('0x24')]['message'][_0xf1cf('0x44')],'lastMsgAt':moment()[_0xf1cf('0x45')](_0xf1cf('0x46')),'lastMsgDirection':'in'};return db['MailInteraction'][_0xf1cf('0x31')]({'where':{'closed':![],'MailAccountId':_0x13438b['account']['id']},'include':[{'model':db[_0xf1cf('0x47')],'as':'Messages','attributes':[_0xf1cf('0x41')],'where':{'messageId':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')][_0xf1cf('0x48')]}}]})[_0xf1cf('0xe')](function(_0x33c808){if(_0x33c808){return[_0x33c808,![]];}return db[_0xf1cf('0x49')][_0xf1cf('0x4a')](_0x1ac860)[_0xf1cf('0xe')](function(_0x3709a5){return[_0x3709a5,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x49490e,_0x3e9aa0){if(_0x49490e){_0x40feec=_0x3e9aa0;if(!_0x3e9aa0){return _0x49490e[_0xf1cf('0x4b')]({'inReplyTo':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['messageId'],'to':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['from'],'cc':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['cc'],'subject':_0x13438b['body'][_0xf1cf('0x15')]['subject'],'attach':_0x49490e[_0xf1cf('0x44')]?_0x49490e[_0xf1cf('0x44')]:_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')][_0xf1cf('0x44')],'substatus':null,'substatusAt':moment()[_0xf1cf('0x45')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0xf1cf('0x45')](_0xf1cf('0x46')),'lastMsgDirection':'in'});}else{return _0x49490e;}}})[_0xf1cf('0xe')](function(_0x1fd03a){_0xecb635['interaction']=_0x1fd03a[_0xf1cf('0x4c')]({'plain':!![]});_0xecb635[_0xf1cf('0x4d')]['created']=_0x40feec;return db['MailMessage'][_0xf1cf('0x4a')]({'body':_0x13438b['body'][_0xf1cf('0x24')],'MailAccountId':_0x13438b[_0xf1cf('0x32')]['id'],'MailInteractionId':_0x1fd03a['id'],'direction':'in','ContactId':_0xecb635[_0xf1cf('0x4e')]['id'],'messageId':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')][_0xf1cf('0x41')],'from':_0x13438b['body'][_0xf1cf('0x15')][_0xf1cf('0x2c')],'to':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['to'],'cc':_0x13438b['body']['message']['cc'],'subject':_0x13438b['body']['message']['subject'],'attach':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['attach'],'Attachments':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['attachments'],'originTo':_0x13438b['body']['message'][_0xf1cf('0x4f')],'originCc':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['originCc'],'bcc':_0x13438b['body']['message'][_0xf1cf('0x50')],'ChatWebsiteId':_0x13438b[_0xf1cf('0x24')]['message'][_0xf1cf('0x51')]||null,'originChannel':_0x13438b['body'][_0xf1cf('0x15')][_0xf1cf('0x52')]||_0xf1cf('0x53'),'ChatOfflineMessageId':_0x13438b['body']['message'][_0xf1cf('0x54')]||null},{'include':[{'model':db[_0xf1cf('0x55')],'as':'Attachments'}]});})['then'](function(_0xdf6140){_0xecb635[_0xf1cf('0x15')]=_0xdf6140;if(_0xecb635[_0xf1cf('0x4d')][_0xf1cf('0x56')]){return db['User']['find']({'attributes':['id',_0xf1cf('0x57')],'where':{'id':_0xecb635['interaction'][_0xf1cf('0x56')]}})['then'](function(_0x4917e8){if(_0x4917e8){_0xecb635[_0xf1cf('0x38')][_0xf1cf('0x58')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4917e8[_0xf1cf('0x57')]+','+(_0xecb635['account'][_0xf1cf('0x59')]||0xa),'interval':_0xf1cf('0x5a')});}return respondWithRpcPromise(_0xf1cf('0x5b'),_0xf1cf('0x5c'),_0xecb635);});}return respondWithRpcPromise('Start',_0xf1cf('0x5c'),_0xecb635);})[_0xf1cf('0xe')](function(_0x9045ec){_0x2ee464(_0x9045ec);})['catch'](function(_0x5cae03){_0x81385e(_0x4ca26c[_0xf1cf('0x14')](0x1f4,_0x5cae03['message']));});});};
\ No newline at end of file
+var _0x4f8b=['mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','Contacts','updatedAt','DESC','MailApplication','Applications','MailServerOut','Smtp','get','omit','applications','orderBy','priority','asc','autoclose','length','close','*,*,*,*','create','List\x20not\x20found','messageId','generate','subject','attach','format','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','update','YYYY-MM-DD\x20HH:mm:ss','interaction','created','contact','originCc','bcc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','User','unshift','agent','name','waitForTheAssignedAgent','Start','startRouting','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','request','info','request\x20sent','error','code','MailAccount,\x20%s,\x20%s','message','result','catch','GetMailAccount','MailAccount','findAll','options','raw','where','attributes','limit','map','include','model','then','debug','stringify','ShowMailAccount','find','NotifyMailAccount','difference','keys','CmContact','createdAt','CompanyId','ListId','body','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey'];(function(_0x505b1,_0x3f2a5d){var _0x6f5380=function(_0x439bda){while(--_0x439bda){_0x505b1['push'](_0x505b1['shift']());}};_0x6f5380(++_0x3f2a5d);}(_0x4f8b,0x116));var _0xb4f8=function(_0x592dcd,_0x369200){_0x592dcd=_0x592dcd-0x0;var _0x2888c0=_0x4f8b[_0x592dcd];return _0x2888c0;};'use strict';var _=require(_0xb4f8('0x0'));var util=require(_0xb4f8('0x1'));var moment=require('moment');var BPromise=require(_0xb4f8('0x2'));var rs=require(_0xb4f8('0x3'));var fs=require('fs');var Redis=require(_0xb4f8('0x4'));var db=require(_0xb4f8('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb4f8('0x6'))(_0xb4f8('0x7'));var config=require(_0xb4f8('0x8'));var jayson=require(_0xb4f8('0x9'));var client=jayson['client'][_0xb4f8('0xa')]({'port':0x232c});config[_0xb4f8('0xb')]=_[_0xb4f8('0xc')](config['redis'],{'host':_0xb4f8('0xd'),'port':0x18eb});var socket=require(_0xb4f8('0xe'))(new Redis(config[_0xb4f8('0xb')]));require(_0xb4f8('0xf'))[_0xb4f8('0x10')](socket);function respondWithRpcPromise(_0x3682f0,_0x132bfb,_0x2f347d){return new BPromise(function(_0xc8db7c,_0x569c1a){return client[_0xb4f8('0x11')](_0x3682f0,_0x2f347d)['then'](function(_0xdfabc1){logger[_0xb4f8('0x12')]('MailAccount,\x20%s,\x20%s',_0x132bfb,_0xb4f8('0x13'));logger['debug']('MailAccount,\x20%s,\x20%s,\x20%s',_0x132bfb,_0xb4f8('0x13'),JSON['stringify'](_0xdfabc1));if(_0xdfabc1[_0xb4f8('0x14')]){if(_0xdfabc1['error'][_0xb4f8('0x15')]===0x1f4){logger[_0xb4f8('0x14')](_0xb4f8('0x16'),_0x132bfb,_0xdfabc1['error'][_0xb4f8('0x17')]);return _0x569c1a(_0xdfabc1[_0xb4f8('0x14')][_0xb4f8('0x17')]);}logger[_0xb4f8('0x14')]('MailAccount,\x20%s,\x20%s',_0x132bfb,_0xdfabc1[_0xb4f8('0x14')][_0xb4f8('0x17')]);return _0xc8db7c(_0xdfabc1[_0xb4f8('0x14')][_0xb4f8('0x17')]);}else{logger['info'](_0xb4f8('0x16'),_0x132bfb,_0xb4f8('0x13'));_0xc8db7c(_0xdfabc1[_0xb4f8('0x18')][_0xb4f8('0x17')]);}})[_0xb4f8('0x19')](function(_0x171873){logger[_0xb4f8('0x14')](_0xb4f8('0x16'),_0x132bfb,_0x171873);_0x569c1a(_0x171873);});});}exports[_0xb4f8('0x1a')]=function(_0x42ddea){var _0x1bf7e9=this;return new Promise(function(_0x59fecc,_0x13c2d0){return db[_0xb4f8('0x1b')][_0xb4f8('0x1c')]({'raw':_0x42ddea[_0xb4f8('0x1d')]?_0x42ddea['options'][_0xb4f8('0x1e')]===undefined?!![]:![]:!![],'where':_0x42ddea['options']?_0x42ddea[_0xb4f8('0x1d')][_0xb4f8('0x1f')]||null:null,'attributes':_0x42ddea[_0xb4f8('0x1d')]?_0x42ddea[_0xb4f8('0x1d')][_0xb4f8('0x20')]||null:null,'limit':_0x42ddea[_0xb4f8('0x1d')]?_0x42ddea[_0xb4f8('0x1d')][_0xb4f8('0x21')]||null:null,'include':_0x42ddea[_0xb4f8('0x1d')]?_0x42ddea[_0xb4f8('0x1d')]['include']?_[_0xb4f8('0x22')](_0x42ddea[_0xb4f8('0x1d')][_0xb4f8('0x23')],function(_0x32a3d8){return{'model':db[_0x32a3d8[_0xb4f8('0x24')]],'as':_0x32a3d8['as'],'attributes':_0x32a3d8[_0xb4f8('0x20')],'include':_0x32a3d8[_0xb4f8('0x23')]?_[_0xb4f8('0x22')](_0x32a3d8[_0xb4f8('0x23')],function(_0x323c2f){return{'model':db[_0x323c2f[_0xb4f8('0x24')]],'as':_0x323c2f['as'],'attributes':_0x323c2f[_0xb4f8('0x20')],'include':_0x323c2f[_0xb4f8('0x23')]?_[_0xb4f8('0x22')](_0x323c2f['include'],function(_0x142fe9){return{'model':db[_0x142fe9[_0xb4f8('0x24')]],'as':_0x142fe9['as'],'attributes':_0x142fe9[_0xb4f8('0x20')]};}):[]};}):[]};}):[]:[]})[_0xb4f8('0x25')](function(_0x48210f){logger[_0xb4f8('0x12')](_0xb4f8('0x1a'),_0x42ddea);logger[_0xb4f8('0x26')](_0xb4f8('0x1a'),_0x42ddea,JSON[_0xb4f8('0x27')](_0x48210f));_0x59fecc(_0x48210f);})[_0xb4f8('0x19')](function(_0x42b826){logger[_0xb4f8('0x14')](_0xb4f8('0x1a'),_0x42b826[_0xb4f8('0x17')],_0x42ddea);_0x13c2d0(_0x1bf7e9[_0xb4f8('0x14')](0x1f4,_0x42b826[_0xb4f8('0x17')]));});});};exports[_0xb4f8('0x28')]=function(_0x285418){var _0x25fcb3=this;return new Promise(function(_0xa7d8ed,_0x14491b){return db[_0xb4f8('0x1b')][_0xb4f8('0x29')]({'raw':_0x285418[_0xb4f8('0x1d')]?_0x285418[_0xb4f8('0x1d')][_0xb4f8('0x1e')]===undefined?!![]:![]:!![],'where':_0x285418[_0xb4f8('0x1d')]?_0x285418[_0xb4f8('0x1d')][_0xb4f8('0x1f')]||null:null,'attributes':_0x285418[_0xb4f8('0x1d')]?_0x285418['options'][_0xb4f8('0x20')]||null:null,'include':_0x285418['options']?_0x285418[_0xb4f8('0x1d')][_0xb4f8('0x23')]?_[_0xb4f8('0x22')](_0x285418['options'][_0xb4f8('0x23')],function(_0xd084c2){return{'model':db[_0xd084c2[_0xb4f8('0x24')]],'as':_0xd084c2['as'],'attributes':_0xd084c2[_0xb4f8('0x20')],'include':_0xd084c2[_0xb4f8('0x23')]?_[_0xb4f8('0x22')](_0xd084c2[_0xb4f8('0x23')],function(_0x2e166b){return{'model':db[_0x2e166b[_0xb4f8('0x24')]],'as':_0x2e166b['as'],'attributes':_0x2e166b['attributes'],'include':_0x2e166b[_0xb4f8('0x23')]?_[_0xb4f8('0x22')](_0x2e166b[_0xb4f8('0x23')],function(_0x3cb99d){return{'model':db[_0x3cb99d[_0xb4f8('0x24')]],'as':_0x3cb99d['as'],'attributes':_0x3cb99d[_0xb4f8('0x20')]};}):[]};}):[]};}):[]:[]})[_0xb4f8('0x25')](function(_0x48d81f){logger[_0xb4f8('0x12')](_0xb4f8('0x28'),_0x285418);logger['debug'](_0xb4f8('0x28'),_0x285418,JSON['stringify'](_0x48d81f));_0xa7d8ed(_0x48d81f);})[_0xb4f8('0x19')](function(_0x2e27d3){logger[_0xb4f8('0x14')](_0xb4f8('0x28'),_0x2e27d3[_0xb4f8('0x17')],_0x285418);_0x14491b(_0x25fcb3[_0xb4f8('0x14')](0x1f4,_0x2e27d3[_0xb4f8('0x17')]));});});};exports[_0xb4f8('0x2a')]=function(_0x2d0044){var _0x467a22=this;return new Promise(function(_0x4131f4,_0x117fba){var _0x51205e={'body':_0x2d0044['body'],'channel':'mail'};var _0x15fb6e=_[_0xb4f8('0x2b')](_[_0xb4f8('0x2c')](db[_0xb4f8('0x2d')]['rawAttributes']),[_0xb4f8('0x2e'),'updatedAt',_0xb4f8('0x2f'),_0xb4f8('0x30')]);var _0x2a9460=![];if(_0x2d0044[_0xb4f8('0x31')]['id']){delete _0x2d0044[_0xb4f8('0x31')]['id'];}if(_[_0xb4f8('0x32')](_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x33')])){return _0x117fba(_0x467a22[_0xb4f8('0x14')](0x1f4,_0xb4f8('0x34')));}if(_[_0xb4f8('0x32')](_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x31')])||_0x2d0044['body'][_0xb4f8('0x31')]===''){return _0x117fba(_0x467a22[_0xb4f8('0x14')](0x1f4,_0xb4f8('0x35')));}if(_[_0xb4f8('0x32')](_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x36')])){return _0x117fba(_0x467a22[_0xb4f8('0x14')](0x1f4,_0xb4f8('0x37')+_0x15fb6e));}if(!_[_0xb4f8('0x38')](_0x15fb6e,_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x36')])){return _0x117fba(_0x467a22[_0xb4f8('0x14')](0x1f4,_0xb4f8('0x39')+_0x15fb6e));}var _0x48c864={};_0x48c864[_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x36')]]=_0x2d0044[_0xb4f8('0x31')]['from'];return db[_0xb4f8('0x1b')][_0xb4f8('0x29')]({'where':{'id':_0x2d0044[_0xb4f8('0x3a')]['id']},'include':[{'model':db[_0xb4f8('0x3b')],'as':_0xb4f8('0x3c'),'include':[{'model':db['CmContact'],'as':_0xb4f8('0x3d'),'where':_0x48c864,'limit':0x1,'order':[[_0xb4f8('0x3e'),_0xb4f8('0x3f')]]}]},{'model':db[_0xb4f8('0x40')],'as':_0xb4f8('0x41')},{'model':db[_0xb4f8('0x42')],'as':_0xb4f8('0x43')}]})['then'](function(_0x34786b){if(_0x34786b&&_0x34786b[_0xb4f8('0x3c')]){var _0x239815=_0x34786b[_0xb4f8('0x44')]({'plain':!![]});_0x51205e['account']=_[_0xb4f8('0x45')](_0x239815,[_0xb4f8('0x41'),_0xb4f8('0x3c')]);_0x51205e[_0xb4f8('0x46')]=_0x239815[_0xb4f8('0x41')];_0x51205e['list']=_0x239815[_0xb4f8('0x3c')];_0x51205e[_0xb4f8('0x46')]=_[_0xb4f8('0x47')](_0x51205e[_0xb4f8('0x46')],[_0xb4f8('0x48')],[_0xb4f8('0x49')]);if(_0x51205e[_0xb4f8('0x3a')]&&_0x51205e[_0xb4f8('0x3a')][_0xb4f8('0x4a')]){_0x51205e[_0xb4f8('0x46')]['push']({'id':0x0,'priority':_0x51205e['applications'][_0xb4f8('0x4b')]+0x1,'app':_0xb4f8('0x4c'),'appdata':_0xb4f8('0x4a'),'interval':_0xb4f8('0x4d')});}if(_0x51205e['account'][_0xb4f8('0x41')]){delete _0x51205e[_0xb4f8('0x3a')][_0xb4f8('0x41')];}if(_0x51205e['account'][_0xb4f8('0x3c')]){delete _0x51205e[_0xb4f8('0x3a')][_0xb4f8('0x3c')];}if(_0x239815[_0xb4f8('0x3c')][_0xb4f8('0x3d')][_0xb4f8('0x4b')]){return _0x239815[_0xb4f8('0x3c')]['Contacts'][0x0];}var _0x410be4=_[_0xb4f8('0xc')](_0x2d0044[_0xb4f8('0x31')],{'firstName':_0x2d0044['body'][_0xb4f8('0x33')],'ListId':_0x239815[_0xb4f8('0x30')]});_0x410be4[_0x2d0044[_0xb4f8('0x31')]['mapKey']]=_0x2d0044['body'][_0xb4f8('0x33')];return db[_0xb4f8('0x2d')][_0xb4f8('0x4e')](_0x410be4);}else{throw new Error(_0xb4f8('0x4f'));}})[_0xb4f8('0x25')](function(_0x43875d){_0x51205e['contact']=_0x43875d;if(_0x43875d){if(!_0x2d0044['body']['message'][_0xb4f8('0x50')]){_0x2d0044[_0xb4f8('0x31')]['message'][_0xb4f8('0x50')]=rs[_0xb4f8('0x51')]()+'\x20'+_0x2d0044['body'][_0xb4f8('0x17')][_0xb4f8('0x33')];}var _0x123da2={'ContactId':_0x43875d['id'],'MailAccountId':_0x2d0044[_0xb4f8('0x3a')]['id'],'inReplyTo':_0x2d0044['body']['message'][_0xb4f8('0x50')],'to':_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x17')]['from'],'cc':_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x17')]['cc'],'subject':_0x2d0044['body'][_0xb4f8('0x17')][_0xb4f8('0x52')],'attach':_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x17')][_0xb4f8('0x53')],'lastMsgAt':moment()[_0xb4f8('0x54')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db['MailInteraction'][_0xb4f8('0x29')]({'where':{'closed':![],'MailAccountId':_0x2d0044[_0xb4f8('0x3a')]['id']},'include':[{'model':db[_0xb4f8('0x55')],'as':_0xb4f8('0x56'),'attributes':[_0xb4f8('0x50')],'where':{'messageId':_0x2d0044['body']['message'][_0xb4f8('0x57')]}}]})[_0xb4f8('0x25')](function(_0x59da91){if(_0x59da91){return[_0x59da91,![]];}return db['MailInteraction'][_0xb4f8('0x4e')](_0x123da2)[_0xb4f8('0x25')](function(_0x45753f){return[_0x45753f,!![]];});});}else{throw new Error(_0xb4f8('0x58'));}})[_0xb4f8('0x59')](function(_0xc8569d,_0x1c741a){if(_0xc8569d){_0x2a9460=_0x1c741a;if(!_0x1c741a){return _0xc8569d[_0xb4f8('0x5a')]({'inReplyTo':_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x17')]['messageId'],'to':_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x17')][_0xb4f8('0x33')],'cc':_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x17')]['cc'],'subject':_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x17')][_0xb4f8('0x52')],'attach':_0xc8569d[_0xb4f8('0x53')]?_0xc8569d[_0xb4f8('0x53')]:_0x2d0044[_0xb4f8('0x31')]['message'][_0xb4f8('0x53')],'substatus':null,'substatusAt':moment()[_0xb4f8('0x54')](_0xb4f8('0x5b')),'lastMsgAt':moment()[_0xb4f8('0x54')](_0xb4f8('0x5b')),'lastMsgDirection':'in'});}else{return _0xc8569d;}}})[_0xb4f8('0x25')](function(_0x5496e1){_0x51205e[_0xb4f8('0x5c')]=_0x5496e1['get']({'plain':!![]});_0x51205e[_0xb4f8('0x5c')][_0xb4f8('0x5d')]=_0x2a9460;return db[_0xb4f8('0x55')][_0xb4f8('0x4e')]({'body':_0x2d0044[_0xb4f8('0x31')]['body'],'MailAccountId':_0x2d0044[_0xb4f8('0x3a')]['id'],'MailInteractionId':_0x5496e1['id'],'direction':'in','ContactId':_0x51205e[_0xb4f8('0x5e')]['id'],'messageId':_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x17')][_0xb4f8('0x50')],'from':_0x2d0044['body'][_0xb4f8('0x17')][_0xb4f8('0x33')],'to':_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x17')]['to'],'cc':_0x2d0044[_0xb4f8('0x31')]['message']['cc'],'subject':_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x17')]['subject'],'attach':_0x2d0044['body']['message'][_0xb4f8('0x53')],'Attachments':_0x2d0044['body']['message']['attachments'],'originTo':_0x2d0044[_0xb4f8('0x31')]['message']['originTo'],'originCc':_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x17')][_0xb4f8('0x5f')],'bcc':_0x2d0044[_0xb4f8('0x31')]['message'][_0xb4f8('0x60')],'ChatWebsiteId':_0x2d0044['body'][_0xb4f8('0x17')][_0xb4f8('0x61')]||null,'originChannel':_0x2d0044[_0xb4f8('0x31')]['message'][_0xb4f8('0x62')]||_0xb4f8('0x63'),'ChatOfflineMessageId':_0x2d0044[_0xb4f8('0x31')][_0xb4f8('0x17')][_0xb4f8('0x64')]||null},{'include':[{'model':db[_0xb4f8('0x65')],'as':_0xb4f8('0x66')}]});})['then'](function(_0x1eabfb){_0x51205e[_0xb4f8('0x17')]=_0x1eabfb;if(_0x51205e[_0xb4f8('0x5c')][_0xb4f8('0x67')]){return db[_0xb4f8('0x68')]['find']({'attributes':['id','name'],'where':{'id':_0x51205e[_0xb4f8('0x5c')][_0xb4f8('0x67')]}})['then'](function(_0x30f198){if(_0x30f198){_0x51205e['applications'][_0xb4f8('0x69')]({'id':0x0,'priority':0x0,'app':_0xb4f8('0x6a'),'appdata':_0x30f198[_0xb4f8('0x6b')]+','+(_0x51205e[_0xb4f8('0x3a')][_0xb4f8('0x6c')]||0xa),'interval':_0xb4f8('0x4d')});}return respondWithRpcPromise(_0xb4f8('0x6d'),_0xb4f8('0x6e'),_0x51205e);});}return respondWithRpcPromise(_0xb4f8('0x6d'),_0xb4f8('0x6e'),_0x51205e);})['then'](function(_0x27e0f8){_0x4131f4(_0x27e0f8);})[_0xb4f8('0x19')](function(_0x5d1331){_0x117fba(_0x467a22[_0xb4f8('0x14')](0x1f4,_0x5d1331[_0xb4f8('0x17')]));});});};
\ No newline at end of file
index edc04e0..dafa035 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0790=['length','mailAccount:','emit','register'];(function(_0x160cd5,_0x19c58e){var _0x366763=function(_0x3b8e31){while(--_0x3b8e31){_0x160cd5['push'](_0x160cd5['shift']());}};_0x366763(++_0x19c58e);}(_0x0790,0xf2));var _0x0079=function(_0x36d203,_0x3653f3){_0x36d203=_0x36d203-0x0;var _0x2f9e62=_0x0790[_0x36d203];return _0x2f9e62;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=['save','remove','update'];function createListener(_0x417cac,_0x8cc555){return function(_0xb37be0){_0x8cc555[_0x0079('0x0')](_0x417cac,_0xb37be0);};}function removeListener(_0x27d0ca,_0x15b085){return function(){MailAccountEvents['removeListener'](_0x27d0ca,_0x15b085);};}exports[_0x0079('0x1')]=function(_0x473d73){for(var _0x20e8f6=0x0,_0x504031=events[_0x0079('0x2')];_0x20e8f6<_0x504031;_0x20e8f6++){var _0x235f01=events[_0x20e8f6];var _0x246e71=createListener(_0x0079('0x3')+_0x235f01,_0x473d73);MailAccountEvents['on'](_0x235f01,_0x246e71);}};
\ No newline at end of file
+var _0x73a1=['update','emit','register','length','mailAccount:','remove'];(function(_0x52afbc,_0x28fa12){var _0x1f4a08=function(_0x4c549a){while(--_0x4c549a){_0x52afbc['push'](_0x52afbc['shift']());}};_0x1f4a08(++_0x28fa12);}(_0x73a1,0x161));var _0x173a=function(_0x2525f1,_0x47034f){_0x2525f1=_0x2525f1-0x0;var _0x13c1b5=_0x73a1[_0x2525f1];return _0x13c1b5;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=['save',_0x173a('0x0'),_0x173a('0x1')];function createListener(_0x4e1b32,_0x380652){return function(_0x279349){_0x380652[_0x173a('0x2')](_0x4e1b32,_0x279349);};}function removeListener(_0xf2a2c8,_0x4a3f0f){return function(){MailAccountEvents['removeListener'](_0xf2a2c8,_0x4a3f0f);};}exports[_0x173a('0x3')]=function(_0x1a8b94){for(var _0xac84a=0x0,_0xbd8757=events[_0x173a('0x4')];_0xac84a<_0xbd8757;_0xac84a++){var _0x550e2b=events[_0xac84a];var _0x2b545e=createListener(_0x173a('0x5')+_0x550e2b,_0x1a8b94);MailAccountEvents['on'](_0x550e2b,_0x2b545e);}};
\ No newline at end of file
index 4f8934b..1ba643a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5108=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','show','/:id','update','isAuthenticated','destroy'];(function(_0x1eae7c,_0x42d9a3){var _0x1377d7=function(_0x190fd1){while(--_0x190fd1){_0x1eae7c['push'](_0x1eae7c['shift']());}};_0x1377d7(++_0x42d9a3);}(_0x5108,0xe1));var _0x8510=function(_0x1e2446,_0xf4b68){_0x1e2446=_0x1e2446-0x0;var _0x1a6369=_0x5108[_0x1e2446];return _0x1a6369;};'use strict';var multer=require(_0x8510('0x0'));var util=require(_0x8510('0x1'));var path=require(_0x8510('0x2'));var timeout=require(_0x8510('0x3'));var express=require('express');var router=express[_0x8510('0x4')]();var fs_extra=require(_0x8510('0x5'));var auth=require(_0x8510('0x6'));var interaction=require(_0x8510('0x7'));var config=require(_0x8510('0x8'));var controller=require('./mailApplication.controller');router[_0x8510('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x8510('0xa')]);router['put'](_0x8510('0xb'),auth['isAuthenticated'](),controller[_0x8510('0xc')]);router['delete'](_0x8510('0xb'),auth[_0x8510('0xd')](),controller[_0x8510('0xe')]);module[_0x8510('0xf')]=router;
\ No newline at end of file
+var _0x397e=['../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x7586c0,_0x3e8c35){var _0x42001e=function(_0x396853){while(--_0x396853){_0x7586c0['push'](_0x7586c0['shift']());}};_0x42001e(++_0x3e8c35);}(_0x397e,0xd8));var _0xe397=function(_0x57a5e5,_0x18b0d6){_0x57a5e5=_0x57a5e5-0x0;var _0x354012=_0x397e[_0x57a5e5];return _0x354012;};'use strict';var multer=require(_0xe397('0x0'));var util=require(_0xe397('0x1'));var path=require(_0xe397('0x2'));var timeout=require('connect-timeout');var express=require(_0xe397('0x3'));var router=express[_0xe397('0x4')]();var fs_extra=require(_0xe397('0x5'));var auth=require(_0xe397('0x6'));var interaction=require(_0xe397('0x7'));var config=require(_0xe397('0x8'));var controller=require(_0xe397('0x9'));router[_0xe397('0xa')](_0xe397('0xb'),auth[_0xe397('0xc')](),controller['show']);router[_0xe397('0xd')](_0xe397('0xb'),auth[_0xe397('0xc')](),controller['update']);router['delete'](_0xe397('0xb'),auth['isAuthenticated'](),controller[_0xe397('0xe')]);module[_0xe397('0xf')]=router;
\ No newline at end of file
index f621922..a2a529e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0b4=['INTEGER','STRING','noop','TEXT','sequelize','exports'];(function(_0x114c1c,_0x5bfd6d){var _0x50a0a6=function(_0x4f97f0){while(--_0x4f97f0){_0x114c1c['push'](_0x114c1c['shift']());}};_0x50a0a6(++_0x5bfd6d);}(_0xd0b4,0xfa));var _0x4d0b=function(_0x52a1eb,_0x89a577){_0x52a1eb=_0x52a1eb-0x0;var _0x581239=_0xd0b4[_0x52a1eb];return _0x581239;};'use strict';var Sequelize=require(_0x4d0b('0x0'));module[_0x4d0b('0x1')]={'priority':{'type':Sequelize[_0x4d0b('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x4d0b('0x3')],'allowNull':![],'defaultValue':_0x4d0b('0x4')},'appdata':{'type':Sequelize[_0x4d0b('0x5')]()},'description':{'type':Sequelize[_0x4d0b('0x3')]},'interval':{'type':Sequelize[_0x4d0b('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x18ce=['INTEGER','STRING','noop','*,*,*,*','sequelize','exports'];(function(_0x2ea20d,_0x5e8e3c){var _0x3ba66a=function(_0x164ca6){while(--_0x164ca6){_0x2ea20d['push'](_0x2ea20d['shift']());}};_0x3ba66a(++_0x5e8e3c);}(_0x18ce,0x18a));var _0xe18c=function(_0x3eef0d,_0x38a38b){_0x3eef0d=_0x3eef0d-0x0;var _0x2c78fc=_0x18ce[_0x3eef0d];return _0x2c78fc;};'use strict';var Sequelize=require(_0xe18c('0x0'));module[_0xe18c('0x1')]={'priority':{'type':Sequelize[_0xe18c('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xe18c('0x3')],'allowNull':![],'defaultValue':_0xe18c('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xe18c('0x3')],'defaultValue':_0xe18c('0x5')}};
\ No newline at end of file
index 17e150c..4e26755 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(_0x551906,_0x569941){var _0x58bfb6=function(_0x1eb6de){while(--_0x1eb6de){_0x551906['push'](_0x551906['shift']());}};_0x58bfb6(++_0x569941);}(_0xe706,0xa3));var _0x6e70=function(_0x48291a,_0x5a29dc){_0x48291a=_0x48291a-0x0;var _0xf76871=_0xe706[_0x48291a];return _0xf76871;};'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 _0x9c44=['Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','show','params','model','keys','MailApplication','rawAttributes','query','attributes','intersection','fields','length','includeAll','include','merge','options','find','then','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set'];(function(_0x154f21,_0x3c7f37){var _0x5ae16f=function(_0x214498){while(--_0x214498){_0x154f21['push'](_0x154f21['shift']());}};_0x5ae16f(++_0x3c7f37);}(_0x9c44,0x178));var _0x49c4=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x9c44[_0x18ab2a];return _0x16dcee;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x49c4('0x0'));var jsonpatch=require(_0x49c4('0x1'));var rp=require(_0x49c4('0x2'));var moment=require(_0x49c4('0x3'));var BPromise=require(_0x49c4('0x4'));var Mustache=require(_0x49c4('0x5'));var util=require('util');var path=require('path');var sox=require(_0x49c4('0x6'));var csv=require('to-csv');var ejs=require(_0x49c4('0x7'));var fs=require('fs');var fs_extra=require(_0x49c4('0x8'));var _=require(_0x49c4('0x9'));var squel=require(_0x49c4('0xa'));var crypto=require(_0x49c4('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x49c4('0xc'));var toCsv=require(_0x49c4('0xd'));var querystring=require(_0x49c4('0xe'));var Papa=require(_0x49c4('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49c4('0x10'));var as=require(_0x49c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49c4('0x12'))(_0x49c4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x49c4('0x14'));var db=require(_0x49c4('0x15'))['db'];function respondWithStatusCode(_0x5487cd,_0x7df3a9){_0x7df3a9=_0x7df3a9||0xcc;return function(_0x403bfb){if(_0x403bfb){return _0x5487cd['sendStatus'](_0x7df3a9);}return _0x5487cd[_0x49c4('0x16')](_0x7df3a9)[_0x49c4('0x17')]();};}function respondWithResult(_0x21f15a,_0x2decee){_0x2decee=_0x2decee||0xc8;return function(_0x12777c){if(_0x12777c){return _0x21f15a[_0x49c4('0x16')](_0x2decee)[_0x49c4('0x18')](_0x12777c);}};}function respondWithFilteredResult(_0x3de397,_0x58d177){return function(_0x3acd06){if(_0x3acd06){var _0x141003=typeof _0x58d177[_0x49c4('0x19')]===_0x49c4('0x1a')&&typeof _0x58d177[_0x49c4('0x1b')]==='undefined';var _0x44e607=_0x3acd06[_0x49c4('0x1c')];var _0x4c3253=_0x141003?0x0:_0x58d177['offset'];var _0x3c782d=_0x141003?_0x3acd06[_0x49c4('0x1c')]:_0x58d177[_0x49c4('0x19')]+_0x58d177['limit'];var _0x24856d;if(_0x3c782d>=_0x44e607){_0x3c782d=_0x44e607;_0x24856d=0xc8;}else{_0x24856d=0xce;}_0x3de397['status'](_0x24856d);return _0x3de397[_0x49c4('0x1d')](_0x49c4('0x1e'),_0x4c3253+'-'+_0x3c782d+'/'+_0x44e607)[_0x49c4('0x18')](_0x3acd06);}return null;};}function patchUpdates(_0x291526){return function(_0x382040){try{jsonpatch[_0x49c4('0x1f')](_0x382040,_0x291526,!![]);}catch(_0x280893){return BPromise[_0x49c4('0x20')](_0x280893);}return _0x382040[_0x49c4('0x21')]();};}function saveUpdates(_0x578447,_0x527126){return function(_0x57f502){if(_0x57f502){return _0x57f502[_0x49c4('0x22')](_0x578447)['then'](function(_0x592bb8){return _0x592bb8;});}return null;};}function removeEntity(_0x2263ae,_0x15581b){return function(_0x26c640){if(_0x26c640){return _0x26c640[_0x49c4('0x23')]()['then'](function(){_0x2263ae['status'](0xcc)[_0x49c4('0x17')]();});}};}function handleEntityNotFound(_0x9cb797,_0x565423){return function(_0x207358){if(!_0x207358){_0x9cb797[_0x49c4('0x24')](0x194);}return _0x207358;};}function handleError(_0x210159,_0xa7a826){_0xa7a826=_0xa7a826||0x1f4;return function(_0x531d92){logger['error'](_0x531d92[_0x49c4('0x25')]);if(_0x531d92['name']){delete _0x531d92[_0x49c4('0x26')];}_0x210159[_0x49c4('0x16')](_0xa7a826)[_0x49c4('0x27')](_0x531d92);};}exports[_0x49c4('0x28')]=function(_0x5987ae,_0x889909){var _0x2b2793={'raw':!![],'where':{'id':_0x5987ae[_0x49c4('0x29')]['id']}},_0x46e04d={};_0x46e04d[_0x49c4('0x2a')]=_[_0x49c4('0x2b')](db[_0x49c4('0x2c')][_0x49c4('0x2d')]);_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2b')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d['filters']=_['intersection'](_0x46e04d['model'],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x2f')]=_[_0x49c4('0x30')](_0x46e04d[_0x49c4('0x2a')],qs[_0x49c4('0x31')](_0x5987ae['query'][_0x49c4('0x31')]));_0x2b2793[_0x49c4('0x2f')]=_0x2b2793[_0x49c4('0x2f')][_0x49c4('0x32')]?_0x2b2793['attributes']:_0x46e04d['model'];if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x33')]){_0x2b2793[_0x49c4('0x34')]=[{'all':!![]}];}_0x2b2793=_[_0x49c4('0x35')]({},_0x2b2793,_0x5987ae[_0x49c4('0x36')]);return db['MailApplication'][_0x49c4('0x37')](_0x2b2793)[_0x49c4('0x38')](handleEntityNotFound(_0x889909,null))[_0x49c4('0x38')](respondWithResult(_0x889909,null))['catch'](handleError(_0x889909,null));};exports['update']=function(_0x85dce2,_0x1991e9){if(_0x85dce2[_0x49c4('0x39')]['id']){delete _0x85dce2[_0x49c4('0x39')]['id'];}return db[_0x49c4('0x2c')][_0x49c4('0x37')]({'where':{'id':_0x85dce2[_0x49c4('0x29')]['id']}})[_0x49c4('0x38')](handleEntityNotFound(_0x1991e9,null))[_0x49c4('0x38')](saveUpdates(_0x85dce2['body'],null))[_0x49c4('0x38')](respondWithResult(_0x1991e9,null))['catch'](handleError(_0x1991e9,null));};exports[_0x49c4('0x23')]=function(_0x349791,_0x2625a6){return db[_0x49c4('0x2c')]['find']({'where':{'id':_0x349791[_0x49c4('0x29')]['id']}})[_0x49c4('0x38')](handleEntityNotFound(_0x2625a6,null))[_0x49c4('0x38')](removeEntity(_0x2625a6,null))['catch'](handleError(_0x2625a6,null));};
\ No newline at end of file
index f9682ae..fa979bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc66=['path','rimraf','../../config/environment','./mailApplication.attributes','exports','define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2bc3f4,_0x470b26){var _0x14ac53=function(_0x5121bd){while(--_0x5121bd){_0x2bc3f4['push'](_0x2bc3f4['shift']());}};_0x14ac53(++_0x470b26);}(_0xfc66,0x1c4));var _0x6fc6=function(_0xe05fd3,_0x4bf7a9){_0xe05fd3=_0xe05fd3-0x0;var _0x4a5805=_0xfc66[_0xe05fd3];return _0x4a5805;};'use strict';var _=require(_0x6fc6('0x0'));var util=require(_0x6fc6('0x1'));var logger=require(_0x6fc6('0x2'))(_0x6fc6('0x3'));var moment=require(_0x6fc6('0x4'));var BPromise=require(_0x6fc6('0x5'));var rp=require(_0x6fc6('0x6'));var fs=require('fs');var path=require(_0x6fc6('0x7'));var rimraf=require(_0x6fc6('0x8'));var config=require(_0x6fc6('0x9'));var attributes=require(_0x6fc6('0xa'));module[_0x6fc6('0xb')]=function(_0x19a3ac,_0x54d1fc){return _0x19a3ac[_0x6fc6('0xc')](_0x6fc6('0xd'),attributes,{'tableName':_0x6fc6('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6fc6('0xf'),'collate':_0x6fc6('0x10')});};
\ No newline at end of file
+var _0x03bd=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./mailApplication.attributes','exports','define','mail_applications','utf8mb4_unicode_ci','util'];(function(_0x49cb92,_0x3c31a6){var _0x16ee5a=function(_0x48e0c6){while(--_0x48e0c6){_0x49cb92['push'](_0x49cb92['shift']());}};_0x16ee5a(++_0x3c31a6);}(_0x03bd,0x11d));var _0xd03b=function(_0x258e9d,_0x12bfd7){_0x258e9d=_0x258e9d-0x0;var _0x1efa78=_0x03bd[_0x258e9d];return _0x1efa78;};'use strict';var _=require('lodash');var util=require(_0xd03b('0x0'));var logger=require(_0xd03b('0x1'))(_0xd03b('0x2'));var moment=require('moment');var BPromise=require(_0xd03b('0x3'));var rp=require(_0xd03b('0x4'));var fs=require('fs');var path=require(_0xd03b('0x5'));var rimraf=require(_0xd03b('0x6'));var config=require(_0xd03b('0x7'));var attributes=require(_0xd03b('0x8'));module[_0xd03b('0x9')]=function(_0x302fcd,_0x2d403e){return _0x302fcd[_0xd03b('0xa')]('MailApplication',attributes,{'tableName':_0xd03b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xd03b('0xc')});};
\ No newline at end of file
index dd09e3a..80ecc98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb602=['result','catch','UpdateMailApplication','MailApplication','update','options','raw','limit','then','lodash','util','moment','bluebird','../../config/utils','../../config/environment','client','http','request','MailApplication,\x20%s,\x20%s','debug','stringify','error','code','message','info','request\x20sent'];(function(_0x33a47b,_0x25022a){var _0x3164d0=function(_0x1f070f){while(--_0x1f070f){_0x33a47b['push'](_0x33a47b['shift']());}};_0x3164d0(++_0x25022a);}(_0xb602,0x175));var _0x2b60=function(_0x22d6f8,_0x4bbab4){_0x22d6f8=_0x22d6f8-0x0;var _0xdff824=_0xb602[_0x22d6f8];return _0xdff824;};'use strict';var _=require(_0x2b60('0x0'));var util=require(_0x2b60('0x1'));var moment=require(_0x2b60('0x2'));var BPromise=require(_0x2b60('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2b60('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x2b60('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x2b60('0x6')][_0x2b60('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x272982,_0x149e5d,_0x43420e){return new BPromise(function(_0x2b54bf,_0x25de9f){return client[_0x2b60('0x8')](_0x272982,_0x43420e)['then'](function(_0x1dff91){logger['info'](_0x2b60('0x9'),_0x149e5d,'request\x20sent');logger[_0x2b60('0xa')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x149e5d,'request\x20sent',JSON[_0x2b60('0xb')](_0x1dff91));if(_0x1dff91['error']){if(_0x1dff91[_0x2b60('0xc')][_0x2b60('0xd')]===0x1f4){logger[_0x2b60('0xc')](_0x2b60('0x9'),_0x149e5d,_0x1dff91[_0x2b60('0xc')]['message']);return _0x25de9f(_0x1dff91[_0x2b60('0xc')]['message']);}logger[_0x2b60('0xc')](_0x2b60('0x9'),_0x149e5d,_0x1dff91['error'][_0x2b60('0xe')]);return _0x2b54bf(_0x1dff91['error'][_0x2b60('0xe')]);}else{logger[_0x2b60('0xf')](_0x2b60('0x9'),_0x149e5d,_0x2b60('0x10'));_0x2b54bf(_0x1dff91[_0x2b60('0x11')][_0x2b60('0xe')]);}})[_0x2b60('0x12')](function(_0x208575){logger[_0x2b60('0xc')](_0x2b60('0x9'),_0x149e5d,_0x208575);_0x25de9f(_0x208575);});});}exports[_0x2b60('0x13')]=function(_0xf2daa0){var _0x2e4779=this;return new Promise(function(_0xa9dde4,_0x4ec5fd){return db[_0x2b60('0x14')][_0x2b60('0x15')](_0xf2daa0['body'],{'raw':_0xf2daa0['options']?_0xf2daa0[_0x2b60('0x16')][_0x2b60('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf2daa0[_0x2b60('0x16')]?_0xf2daa0[_0x2b60('0x16')]['where']||null:null,'attributes':_0xf2daa0[_0x2b60('0x16')]?_0xf2daa0[_0x2b60('0x16')]['attributes']||null:null,'limit':_0xf2daa0[_0x2b60('0x16')]?_0xf2daa0['options'][_0x2b60('0x18')]||null:null})[_0x2b60('0x19')](function(_0xca02cf){logger[_0x2b60('0xf')]('UpdateMailApplication',_0xf2daa0);logger['debug'](_0x2b60('0x13'),_0xf2daa0,JSON[_0x2b60('0xb')](_0xca02cf));_0xa9dde4(_0xca02cf);})['catch'](function(_0x4f4caa){logger[_0x2b60('0xc')](_0x2b60('0x13'),_0x4f4caa[_0x2b60('0xe')],_0xf2daa0);_0x4ec5fd(_0x2e4779[_0x2b60('0xc')](0x1f4,_0x4f4caa['message']));});});};
\ No newline at end of file
+var _0x5eaa=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailApplication,\x20%s,\x20%s','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','UpdateMailApplication','MailApplication','update','options','raw','where','limit','debug','lodash','util','moment'];(function(_0x112463,_0x38b460){var _0xd35505=function(_0x22723a){while(--_0x22723a){_0x112463['push'](_0x112463['shift']());}};_0xd35505(++_0x38b460);}(_0x5eaa,0x133));var _0xa5ea=function(_0x1ac12c,_0x43fad2){_0x1ac12c=_0x1ac12c-0x0;var _0x4b2bce=_0x5eaa[_0x1ac12c];return _0x4b2bce;};'use strict';var _=require(_0xa5ea('0x0'));var util=require(_0xa5ea('0x1'));var moment=require(_0xa5ea('0x2'));var BPromise=require(_0xa5ea('0x3'));var rs=require(_0xa5ea('0x4'));var fs=require('fs');var Redis=require(_0xa5ea('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa5ea('0x6'));var logger=require(_0xa5ea('0x7'))(_0xa5ea('0x8'));var config=require(_0xa5ea('0x9'));var jayson=require(_0xa5ea('0xa'));var client=jayson[_0xa5ea('0xb')][_0xa5ea('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5dbd7e,_0x6e668e,_0x2567ae){return new BPromise(function(_0x2b7fd9,_0x3e3fa8){return client[_0xa5ea('0xd')](_0x5dbd7e,_0x2567ae)[_0xa5ea('0xe')](function(_0x3afd7f){logger[_0xa5ea('0xf')](_0xa5ea('0x10'),_0x6e668e,'request\x20sent');logger['debug'](_0xa5ea('0x11'),_0x6e668e,_0xa5ea('0x12'),JSON[_0xa5ea('0x13')](_0x3afd7f));if(_0x3afd7f['error']){if(_0x3afd7f[_0xa5ea('0x14')]['code']===0x1f4){logger['error'](_0xa5ea('0x10'),_0x6e668e,_0x3afd7f[_0xa5ea('0x14')][_0xa5ea('0x15')]);return _0x3e3fa8(_0x3afd7f[_0xa5ea('0x14')][_0xa5ea('0x15')]);}logger[_0xa5ea('0x14')](_0xa5ea('0x10'),_0x6e668e,_0x3afd7f[_0xa5ea('0x14')][_0xa5ea('0x15')]);return _0x2b7fd9(_0x3afd7f['error'][_0xa5ea('0x15')]);}else{logger[_0xa5ea('0xf')](_0xa5ea('0x10'),_0x6e668e,_0xa5ea('0x12'));_0x2b7fd9(_0x3afd7f[_0xa5ea('0x16')][_0xa5ea('0x15')]);}})['catch'](function(_0x15c316){logger[_0xa5ea('0x14')](_0xa5ea('0x10'),_0x6e668e,_0x15c316);_0x3e3fa8(_0x15c316);});});}exports[_0xa5ea('0x17')]=function(_0x42f72e){var _0x1b686f=this;return new Promise(function(_0x49d5b3,_0x2c2566){return db[_0xa5ea('0x18')][_0xa5ea('0x19')](_0x42f72e['body'],{'raw':_0x42f72e[_0xa5ea('0x1a')]?_0x42f72e[_0xa5ea('0x1a')][_0xa5ea('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x42f72e[_0xa5ea('0x1a')]?_0x42f72e[_0xa5ea('0x1a')][_0xa5ea('0x1c')]||null:null,'attributes':_0x42f72e[_0xa5ea('0x1a')]?_0x42f72e[_0xa5ea('0x1a')]['attributes']||null:null,'limit':_0x42f72e[_0xa5ea('0x1a')]?_0x42f72e[_0xa5ea('0x1a')][_0xa5ea('0x1d')]||null:null})[_0xa5ea('0xe')](function(_0x80d173){logger[_0xa5ea('0xf')](_0xa5ea('0x17'),_0x42f72e);logger[_0xa5ea('0x1e')]('UpdateMailApplication',_0x42f72e,JSON[_0xa5ea('0x13')](_0x80d173));_0x49d5b3(_0x80d173);})['catch'](function(_0x4e17c1){logger['error']('UpdateMailApplication',_0x4e17c1['message'],_0x42f72e);_0x2c2566(_0x1b686f[_0xa5ea('0x14')](0x1f4,_0x4e17c1[_0xa5ea('0x15')]));});});};
\ No newline at end of file
index 790826b..60dd77d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62c2=['./mailInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','addMessage','/:id/tags','mailinteraction:addtags','addTags','put','tracked','mail','mailinteraction:update','update','mailinteraction:destroy','exports','Router'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x62c2,0xbf));var _0x262c=function(_0x22f716,_0x1f5ed8){_0x22f716=_0x22f716-0x0;var _0x11d495=_0x62c2[_0x22f716];return _0x11d495;};'use strict';var express=require('express');var router=express[_0x262c('0x0')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var controller=require(_0x262c('0x1'));router[_0x262c('0x2')]('/',auth[_0x262c('0x3')](),controller[_0x262c('0x4')]);router['get'](_0x262c('0x5'),auth[_0x262c('0x3')](),controller[_0x262c('0x6')]);router[_0x262c('0x2')](_0x262c('0x7'),auth['isAuthenticated'](),controller[_0x262c('0x8')]);router[_0x262c('0x2')](_0x262c('0x9'),auth[_0x262c('0x3')](),controller[_0x262c('0xa')]);router[_0x262c('0x2')](_0x262c('0xb'),auth[_0x262c('0x3')](),controller['download']);router[_0x262c('0xc')]('/',auth[_0x262c('0x3')](),controller['create']);router[_0x262c('0xc')](_0x262c('0x9'),auth[_0x262c('0x3')](),controller[_0x262c('0xd')]);router[_0x262c('0xc')](_0x262c('0xe'),auth['isAuthenticated'](),interaction['tracked']('mail',_0x262c('0xf')),controller[_0x262c('0x10')]);router[_0x262c('0x11')](_0x262c('0x7'),auth[_0x262c('0x3')](),interaction[_0x262c('0x12')](_0x262c('0x13'),_0x262c('0x14')),controller[_0x262c('0x15')]);router['delete'](_0x262c('0x7'),auth[_0x262c('0x3')](),interaction['tracked']('mail',_0x262c('0x16')),controller['destroy']);router['delete'](_0x262c('0xe'),auth[_0x262c('0x3')](),controller['removeTags']);module[_0x262c('0x17')]=router;
\ No newline at end of file
+var _0xf578=['tracked','mail','addTags','mailinteraction:update','update','mailinteraction:destroy','destroy','delete','removeTags','exports','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','/:id','show','/:id/messages','getMessages','/:id/download','post','create'];(function(_0x46075c,_0x1befde){var _0x46147d=function(_0xdd64fc){while(--_0xdd64fc){_0x46075c['push'](_0x46075c['shift']());}};_0x46147d(++_0x1befde);}(_0xf578,0x9a));var _0x8f57=function(_0x59710f,_0x44c7f0){_0x59710f=_0x59710f-0x0;var _0xaae66a=_0xf578[_0x59710f];return _0xaae66a;};'use strict';var express=require('express');var router=express[_0x8f57('0x0')]();var auth=require(_0x8f57('0x1'));var interaction=require(_0x8f57('0x2'));var controller=require('./mailInteraction.controller');router[_0x8f57('0x3')]('/',auth[_0x8f57('0x4')](),controller[_0x8f57('0x5')]);router['get'](_0x8f57('0x6'),auth['isAuthenticated'](),controller['describe']);router[_0x8f57('0x3')](_0x8f57('0x7'),auth[_0x8f57('0x4')](),controller[_0x8f57('0x8')]);router['get'](_0x8f57('0x9'),auth[_0x8f57('0x4')](),controller[_0x8f57('0xa')]);router['get'](_0x8f57('0xb'),auth['isAuthenticated'](),controller['download']);router[_0x8f57('0xc')]('/',auth[_0x8f57('0x4')](),controller[_0x8f57('0xd')]);router['post'](_0x8f57('0x9'),auth['isAuthenticated'](),controller['addMessage']);router['post']('/:id/tags',auth['isAuthenticated'](),interaction[_0x8f57('0xe')](_0x8f57('0xf'),'mailinteraction:addtags'),controller[_0x8f57('0x10')]);router['put'](_0x8f57('0x7'),auth['isAuthenticated'](),interaction[_0x8f57('0xe')](_0x8f57('0xf'),_0x8f57('0x11')),controller[_0x8f57('0x12')]);router['delete']('/:id',auth['isAuthenticated'](),interaction['tracked'](_0x8f57('0xf'),_0x8f57('0x13')),controller[_0x8f57('0x14')]);router[_0x8f57('0x15')]('/:id/tags',auth['isAuthenticated'](),controller[_0x8f57('0x16')]);module[_0x8f57('0x17')]=router;
\ No newline at end of file
index d35201e..79000d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ca7=['out','iconv','BOOLEAN','STRING','TEXT','long','DATE','ENUM'];(function(_0x369590,_0x1e5b2f){var _0x4c4888=function(_0x5db1cb){while(--_0x5db1cb){_0x369590['push'](_0x369590['shift']());}};_0x4c4888(++_0x1e5b2f);}(_0x8ca7,0x149));var _0x78ca=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8ca7[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');var iconv=require(_0x78ca('0x0'));module['exports']={'closed':{'type':Sequelize[_0x78ca('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x78ca('0x2')]},'secondDisposition':{'type':Sequelize[_0x78ca('0x2')]},'thirdDisposition':{'type':Sequelize[_0x78ca('0x2')]},'note':{'type':Sequelize[_0x78ca('0x2')]},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x78ca('0x3')](_0x78ca('0x4'))},'subject':{'type':Sequelize[_0x78ca('0x3')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x78ca('0x2')](0x3c)},'substatusAt':{'type':Sequelize[_0x78ca('0x5')]},'firstMsgDirection':{'type':Sequelize[_0x78ca('0x6')]('in',_0x78ca('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x78ca('0x5')]},'lastMsgDirection':{'type':Sequelize[_0x78ca('0x6')]('in',_0x78ca('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x78ca('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc254=['STRING','TEXT','long','ENUM','out','exports','BOOLEAN','DATE'];(function(_0xc78285,_0x1a42e5){var _0x5714c4=function(_0xd1d1a){while(--_0xd1d1a){_0xc78285['push'](_0xc78285['shift']());}};_0x5714c4(++_0x1a42e5);}(_0xc254,0x1ed));var _0x4c25=function(_0x26376c,_0x50f0ba){_0x26376c=_0x26376c-0x0;var _0x483a39=_0xc254[_0x26376c];return _0x483a39;};'use strict';var Sequelize=require('sequelize');var iconv=require('iconv');module[_0x4c25('0x0')]={'closed':{'type':Sequelize[_0x4c25('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x4c25('0x2')]},'disposition':{'type':Sequelize[_0x4c25('0x3')]},'secondDisposition':{'type':Sequelize[_0x4c25('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x4c25('0x3')](0x1fe)},'to':{'type':Sequelize[_0x4c25('0x3')]},'cc':{'type':Sequelize[_0x4c25('0x4')](_0x4c25('0x5'))},'subject':{'type':Sequelize[_0x4c25('0x4')]()},'attach':{'type':Sequelize[_0x4c25('0x1')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x4c25('0x2')]},'substatus':{'type':Sequelize['STRING'](0x3c)},'substatusAt':{'type':Sequelize[_0x4c25('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x4c25('0x6')]('in',_0x4c25('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x4c25('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x4c25('0x6')]('in',_0x4c25('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index f90ed02..0920f66 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(_0x1a2b51,_0xa3a7ef){var _0x58e9da=function(_0xdd21fa){while(--_0xdd21fa){_0x1a2b51['push'](_0x1a2b51['shift']());}};_0x58e9da(++_0xa3a7ef);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x0a9e('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x0a9e('0x4'));var squel=require(_0x0a9e('0x5'));var juice=require(_0x0a9e('0x6'));var Redis=require(_0x0a9e('0x7'));var qs=require(_0x0a9e('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0x0a9e('0x9'))(_0x0a9e('0xa'));var config=require(_0x0a9e('0xb'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x0a9e('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0a9e('0xd'))(new Redis(config[_0x0a9e('0xe')]));require(_0x0a9e('0xf'))[_0x0a9e('0x10')](socket);function respondWithStatusCode(_0xfeb75b,_0xbd1168){_0xbd1168=_0xbd1168||0xcc;return function(_0x4a4c56){if(_0x4a4c56){return _0xfeb75b['sendStatus'](_0xbd1168);}return _0xfeb75b['status'](_0xbd1168)['end']();};}function respondWithResult(_0x273d4d,_0x36471c){_0x36471c=_0x36471c||0xc8;return function(_0xd5b662){if(_0xd5b662){return _0x273d4d[_0x0a9e('0x11')](_0x36471c)[_0x0a9e('0x12')](_0xd5b662);}};}function respondWithFilteredResult(_0x69aeb7,_0x5db4b0){return function(_0x4283ce){if(_0x4283ce){var _0x239b12=typeof _0x5db4b0[_0x0a9e('0x13')]===_0x0a9e('0x14')&&typeof _0x5db4b0[_0x0a9e('0x15')]===_0x0a9e('0x14');var _0x52a03d=_0x4283ce[_0x0a9e('0x16')];var _0x5d0880=_0x239b12?0x0:_0x5db4b0[_0x0a9e('0x13')];var _0x519dfd=_0x239b12?_0x4283ce[_0x0a9e('0x16')]:_0x5db4b0[_0x0a9e('0x13')]+_0x5db4b0['limit'];var _0x225616;if(_0x519dfd>=_0x52a03d){_0x519dfd=_0x52a03d;_0x225616=0xc8;}else{_0x225616=0xce;}_0x69aeb7['status'](_0x225616);return _0x69aeb7[_0x0a9e('0x17')](_0x0a9e('0x18'),_0x5d0880+'-'+_0x519dfd+'/'+_0x52a03d)[_0x0a9e('0x12')](_0x4283ce);}return null;};}function saveUpdates(_0x205fd6){return function(_0x31b1ca){if(_0x31b1ca){return _0x31b1ca[_0x0a9e('0x19')](_0x205fd6)[_0x0a9e('0x1a')](function(_0x20559e){return _0x20559e;});}return null;};}function removeEntity(_0x1314ae){return function(_0x112016){if(_0x112016){return _0x112016[_0x0a9e('0x1b')]()[_0x0a9e('0x1a')](function(){_0x1314ae['status'](0xcc)[_0x0a9e('0x1c')]();});}};}function handleEntityNotFound(_0x155cce){return function(_0x53682f){if(!_0x53682f){_0x155cce[_0x0a9e('0x1d')](0x194);}return _0x53682f;};}function handleError(_0x5a09ef,_0x588269){_0x588269=_0x588269||0x1f4;return function(_0x3a02e1){logger[_0x0a9e('0x1e')](_0x3a02e1[_0x0a9e('0x1f')]);if(_0x3a02e1[_0x0a9e('0x20')]){delete _0x3a02e1['name'];}_0x5a09ef[_0x0a9e('0x11')](_0x588269)[_0x0a9e('0x21')](_0x3a02e1);};}function getInteractionUsers(_0x3b45bc,_0x4d00e6){return new BPromise(function(_0x370d86,_0x42ac8f){try{if(_0x4d00e6[_0x3b45bc['id']]){_0x3b45bc[_0x0a9e('0x22')]=_['map'](_0x4d00e6[_0x3b45bc['id']],function(_0x59181e){return{'id':_0x59181e['id'],'fullname':_0x59181e[_0x0a9e('0x23')]};});}}catch(_0x3a8e58){_0x42ac8f(_0x3a8e58);}_0x370d86(_0x3b45bc);});}function getInteractionTags(_0x40c424,_0x33161b){return new BPromise(function(_0x526cf3,_0x384319){try{if(_0x40c424['TagIds']){_0x40c424[_0x0a9e('0x24')]=[];_0x40c424['TagIds'][_0x0a9e('0x25')](',')[_0x0a9e('0x26')](function(_0x25fba9){_0x40c424[_0x0a9e('0x24')][_0x0a9e('0x27')](_0x33161b[_0x25fba9]);});}delete _0x40c424[_0x0a9e('0x28')];}catch(_0x11c3b6){_0x384319(_0x11c3b6);}_0x526cf3(_0x40c424);});}function getLastMessageText(_0x14de77){return new BPromise(function(_0x5a101a,_0x3652a7){return db[_0x0a9e('0x29')][_0x0a9e('0x2a')]({'where':{'$and':[{'MailInteractionId':_0x14de77['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x0a9e('0x2b')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x0a9e('0x2c'),'raw':!![]})[_0x0a9e('0x1a')](function(_0x1843b2){if(_0x1843b2&&_0x1843b2[_0x0a9e('0x2d')]){_0x14de77[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1843b2[_0x0a9e('0x2d')]);}_0x5a101a(_0x14de77);})[_0x0a9e('0x30')](function(_0x1dbde2){_0x3652a7(_0x1dbde2);});});}function updateMailInteraction(_0x540530,_0x426950,_0x5d1e0e,_0x2407f9){return new BPromise(function(_0x3ae878,_0x1122db){return getInteractionUsers(_0x540530,_0x5d1e0e)[_0x0a9e('0x1a')](function(_0x25ce3a){return getInteractionTags(_0x25ce3a,_0x426950);})['then'](function(_0x66c1d2){if(_0x2407f9){_0x3ae878(getLastMessageText(_0x66c1d2));}else{_0x3ae878(_0x66c1d2);}})[_0x0a9e('0x30')](function(_0x40cb85){_0x1122db(_0x40cb85);});});}exports[_0x0a9e('0x31')]=function(_0x2b45ea,_0x409319){var _0x332d35={},_0x39e565={},_0x5583a4={'count':0x0,'rows':[]};var _0x44295a=_['map'](db[_0x0a9e('0x32')][_0x0a9e('0x33')],function(_0x2b7e7f){return{'name':_0x2b7e7f[_0x0a9e('0x34')],'type':_0x2b7e7f['type'][_0x0a9e('0x35')]};});_0x39e565[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x44295a,_0x0a9e('0x20'));_0x39e565['query']=_['keys'](_0x2b45ea[_0x0a9e('0x38')]);_0x39e565['filters']=_[_0x0a9e('0x39')](_0x39e565[_0x0a9e('0x36')],_0x39e565[_0x0a9e('0x38')]);_0x332d35[_0x0a9e('0x3a')]=_['intersection'](_0x39e565[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x2b45ea[_0x0a9e('0x38')]['fields']));_0x332d35[_0x0a9e('0x3a')]=_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x3c')]?_0x332d35['attributes']:_0x39e565['model'];if(!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3d')]('nolimit')){_0x332d35[_0x0a9e('0x15')]=qs[_0x0a9e('0x15')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x15')]);_0x332d35['offset']=qs['offset'](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x13')]);}_0x332d35['order']=qs[_0x0a9e('0x3e')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x332d35['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x2b45ea[_0x0a9e('0x38')],_0x39e565[_0x0a9e('0x3f')]),_0x44295a);var _0x13cb1f=[];var _0xeaa5e5=squel[_0x0a9e('0x41')]()[_0x0a9e('0x42')]('id')[_0x0a9e('0x42')](_0x0a9e('0x20'))[_0x0a9e('0x42')](_0x0a9e('0x43'))[_0x0a9e('0x44')](_0x0a9e('0x45'));var _0x37f6cc=squel['select']()['field'](_0x0a9e('0x46'))[_0x0a9e('0x42')](_0x0a9e('0x47'))[_0x0a9e('0x42')](_0x0a9e('0x48'))[_0x0a9e('0x44')](_0x0a9e('0x49'),'ui')[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'u',_0x0a9e('0x4c'));var _0x2c2cb0=squel[_0x0a9e('0x41')]()['from'](_0x0a9e('0x4d'),'i')[_0x0a9e('0x4a')](_0x0a9e('0x4e'),'c',_0x0a9e('0x4f'))[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'o',_0x0a9e('0x50'))[_0x0a9e('0x4a')]('mail_accounts','a',_0x0a9e('0x51'))['left_join'](_0x0a9e('0x52'),'me',_0x0a9e('0x53'))[_0x0a9e('0x4a')]('mail_interaction_has_tags','it',_0x0a9e('0x54'))[_0x0a9e('0x4a')](_0x0a9e('0x45'),'t',_0x0a9e('0x55'));var _0x45c845=squel[_0x0a9e('0x56')]();var _0x45bf7f=[];var _0x5bbcde=squel[_0x0a9e('0x56')]();var _0x1bde3c;if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]){_0x1bde3c=as[_0x0a9e('0x58')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]);var _0x19383e=_0x1bde3c[_0x0a9e('0x59')];for(var _0x58a5c2=0x0;_0x58a5c2<_0x1bde3c[_0x0a9e('0x5a')][_0x0a9e('0x3c')];_0x58a5c2++){var _0x4f7240=_0x1bde3c['conditions'][_0x58a5c2];var _0x5ddf84='i';var _0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,[_0x0a9e('0x20'),_0x4f7240[_0x0a9e('0x42')]]);if(!_0x1adfee){switch(_0x4f7240[_0x0a9e('0x42')]){case _0x0a9e('0x5c'):if(_0x4f7240[_0x0a9e('0x5d')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')]('`'+_0x4f7240['field']+'`\x20=\x200');}else{_0x2c2cb0['having']('`'+_0x4f7240[_0x0a9e('0x42')]+_0x0a9e('0x5f'));}break;case _0x0a9e('0x60'):if(_0x4f7240['operator']===_0x0a9e('0x61')){if(_0x4f7240[_0x0a9e('0x5d')]['split']('\x20')['length']>0x1){_0x45c845[_0x19383e](_0x0a9e('0x62'),qs['getFullTextValue'](_0x4f7240[_0x0a9e('0x5d')]),null);}else{var _0x4c3845='%'+_0x4f7240[_0x0a9e('0x5d')]+'%';_0x45c845[_0x19383e](_0x0a9e('0x63'),_0x4c3845,_0x4c3845,_0x4c3845);}}else{_0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,['name',_0x0a9e('0x64')]);_0x4f7240[_0x0a9e('0x42')]='ContactId';_0x2244d6=as['buildExpression'](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6['value'][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'Tag':var _0xe22ccc=_0x4f7240['value']['split'](',')['map'](function(_0x2da03c){return Number(_0x2da03c);});_0xe22ccc['forEach'](function(_0x2f7092){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x2f7092+',%');});_0x45bf7f=_[_0x0a9e('0x69')](_0x45bf7f,_0xe22ccc);break;case _0x0a9e('0x6a'):if(_0x4f7240[_0x0a9e('0x6b')]===_0x0a9e('0x61')){_0x45c845[_0x19383e](_0x0a9e('0x6c'),'%'+_0x4f7240[_0x0a9e('0x5d')]+'%',null);}else{_0x1adfee=_['find'](_0x44295a,[_0x0a9e('0x20'),_0x0a9e('0x6d')]);_0x4f7240[_0x0a9e('0x42')]=_0x0a9e('0x6d');_0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'plainBody':_0x2244d6=as[_0x0a9e('0x6e')]('me',null,_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6['value']['start'],_0x2244d6[_0x0a9e('0x5d')]['end']);break;}}else{var _0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}}}else{var _0x5854cc=_(_0x2b45ea[_0x0a9e('0x38')])[_0x0a9e('0x6f')]()[_0x0a9e('0x37')](function(_0x5adf8f){return _[_0x0a9e('0x70')](_0x44295a,[_0x0a9e('0x20'),_0x5adf8f])?_0x5adf8f:undefined;})[_0x0a9e('0x71')]()[_0x0a9e('0x5d')]();if(!_['isEmpty'](_0x5854cc)){_0x5854cc[_0x0a9e('0x26')](function(_0xe05a5a){if(_0xe05a5a==='MailAccountId'){_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x73'),[][_0x0a9e('0x74')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]));}else if(_0xe05a5a===_0x0a9e('0x75')){var _0x4d4a35=JSON[_0x0a9e('0x76')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a])[_0x0a9e('0x77')];var _0x47bb43=JSON[_0x0a9e('0x76')](_0x2b45ea['query'][_0xe05a5a])['$lte'];_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x78'),_0x4d4a35,_0x47bb43);}else{if(_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]===_0x0a9e('0x79')){_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7a'));}else{_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7b'),_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]);}}});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7d'));}else{_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7e'));}}if(_0x2b45ea[_0x0a9e('0x38')]['tag']){_0x45bf7f=_[_0x0a9e('0x7f')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x80')])?_0x2b45ea['query'][_0x0a9e('0x80')]:new Array(_0x2b45ea[_0x0a9e('0x38')]['tag']);_0x45bf7f[_0x0a9e('0x26')](function(_0x56e31e){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x56e31e+',%');});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x81')]){var _0x4a43a8=_0x2b45ea['query']['filter'][_0x0a9e('0x82')]('\x5c','\x5c\x5c')[_0x0a9e('0x82')](/'/g,'\x27\x27');if(qs[_0x0a9e('0x83')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x84'),_0x4a43a8+'%');}else if(qs[_0x0a9e('0x85')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x86'),_0x4a43a8+'%');}else{_0x45c845['or'](_0x0a9e('0x87'),qs[_0x0a9e('0x88')](_0x4a43a8))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0a9e('0x88')](_0x4a43a8));}}}_0x2c2cb0[_0x0a9e('0x72')](_0x45c845);_0x2c2cb0[_0x0a9e('0x89')]('i.id');var _0x2bdc44={'type':db['Sequelize'][_0x0a9e('0x8a')][_0x0a9e('0x8b')],'raw':!![]};var _0x4c46c1=_0x2c2cb0[_0x0a9e('0x8c')]();_0x4c46c1[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x4c46c1[_0x0a9e('0x42')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x0a9e('0x5c'));if(_0x332d35[_0x0a9e('0x8e')]){_0x332d35[_0x0a9e('0x8e')][_0x0a9e('0x26')](function(_0x5b7fc3){var _0x109ccb=_0x5b7fc3[0x0]===_0x0a9e('0x8f')?_0x5b7fc3[0x0]:'i.'+_0x5b7fc3[0x0];_0x2c2cb0[_0x0a9e('0x8e')](_0x109ccb,_0x5b7fc3[0x1]===_0x0a9e('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x45bf7f)){_0x2c2cb0[_0x0a9e('0x5e')](_0x5bbcde);_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x91'),_0x45bf7f);}BPromise[_0x0a9e('0x92')]()[_0x0a9e('0x1a')](function(){if(!_0x1bde3c){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return;_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x94'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x94'));return;}if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]!==_0x0a9e('0x97'))return;return _0x2b45ea['user'][_0x0a9e('0x98')]({'attributes':['id'],'raw':!![]})[_0x0a9e('0x1a')](function(_0xc599b3){if(_['isEmpty'](_0xc599b3)){_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x99'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x99'));}else{_0x4c46c1['where']('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));_0x2c2cb0[_0x0a9e('0x72')]('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));}});})['then'](function(){if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]==='agent'&&!_0x1bde3c&&!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0x4c46c1[_0x0a9e('0x9b')](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x444f1f){_0x5583a4['count']=_0x444f1f[_0x0a9e('0x3c')];if(_0x5583a4[_0x0a9e('0x16')]===0x0)return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0xeaa5e5['toString'](),_0x2bdc44)[_0x0a9e('0x1a')](function(_0xf0db1){_0x13cb1f=_['keyBy'](_0xf0db1,'id');_0x2bdc44=_[_0x0a9e('0x9c')](_0x2bdc44,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3b')]){_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x26')](function(_0x5af453){_0x2c2cb0['field']('i.'+_0x5af453);});}else{_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x9d'),_0x0a9e('0x5c'));_0x2c2cb0['field'](_0x0a9e('0x9e'),_0x0a9e('0x9f'));_0x2c2cb0['field']('a.mandatoryDisposition',_0x0a9e('0xa0'));_0x2c2cb0['field']('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa1'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa2'));_0x2c2cb0['field'](_0x0a9e('0xa3'));_0x2c2cb0['field'](_0x0a9e('0xa4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa5'));_0x2c2cb0[_0x0a9e('0x42')]('i.lastMsgAt');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa6'));_0x2c2cb0[_0x0a9e('0x42')]('i.subject');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa7'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa9'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xaa'));_0x2c2cb0['field'](_0x0a9e('0xab'));_0x2c2cb0[_0x0a9e('0x42')]('i.ContactId');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xac'));_0x2c2cb0[_0x0a9e('0x42')]('i.UserId');_0x2c2cb0[_0x0a9e('0x42')]('c.firstName',_0x0a9e('0xad'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xae'),_0x0a9e('0xaf'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb0'),_0x0a9e('0xb1'));_0x2c2cb0[_0x0a9e('0x42')]('c.phone',_0x0a9e('0xb2'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb3'),_0x0a9e('0xb4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb5'),_0x0a9e('0xb6'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb7'),_0x0a9e('0xb8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb9'),_0x0a9e('0xba'));_0x2c2cb0['field'](_0x0a9e('0xbb'),_0x0a9e('0x28'));}if(_0x332d35[_0x0a9e('0x15')])_0x2c2cb0[_0x0a9e('0x15')](_0x332d35[_0x0a9e('0x15')]);if(_0x332d35['offset'])_0x2c2cb0[_0x0a9e('0x13')](_0x332d35[_0x0a9e('0x13')]);return db['sequelize'][_0x0a9e('0x38')](_0x2c2cb0['toString'](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x27041d){if(_0x27041d[_0x0a9e('0x3c')]>0x0)_0x37f6cc[_0x0a9e('0x72')]('ui.MailInteractionId\x20IN\x20?',_[_0x0a9e('0x37')](_0x27041d,'id'));return db['sequelize'][_0x0a9e('0x38')](_0x37f6cc[_0x0a9e('0x9b')](),_0x2bdc44)['then'](function(_0x231c6a){var _0x63c9f7=_[_0x0a9e('0xbc')](_0x231c6a,'MailInteractionId');var _0x4c788f=[];return db[_0x0a9e('0xbd')][_0x0a9e('0x2a')]({'attributes':[_0x0a9e('0xbe')],'raw':!![]})[_0x0a9e('0x1a')](function(_0x3f2f40){var _0x2450a8=_0x3f2f40[_0x0a9e('0xbe')];_0x27041d[_0x0a9e('0x26')](function(_0x3f8124){_0x4c788f['push'](updateMailInteraction(_0x3f8124,_0x13cb1f,_0x63c9f7,_0x2450a8));});return BPromise[_0x0a9e('0xbf')](_0x4c788f);});});});})['then'](function(_0x287324){_0x5583a4[_0x0a9e('0xc0')]=_0x287324;return _0x5583a4;})[_0x0a9e('0x1a')](respondWithFilteredResult(_0x409319,_0x332d35))[_0x0a9e('0x30')](handleError(_0x409319,null));};exports[_0x0a9e('0xc1')]=function(_0x4e7273,_0x436313){var _0x4667bf={'raw':![],'where':{'id':_0x4e7273[_0x0a9e('0xc2')]['id']}},_0x2791c5={};_0x2791c5[_0x0a9e('0x36')]=_['keys'](db['MailInteraction'][_0x0a9e('0x33')]);_0x2791c5['query']=_[_0x0a9e('0x6f')](_0x4e7273[_0x0a9e('0x38')]);_0x2791c5[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x2791c5[_0x0a9e('0x36')],_0x2791c5[_0x0a9e('0x38')]);_0x4667bf['attributes']=_['intersection'](_0x2791c5[_0x0a9e('0x36')],qs['fields'](_0x4e7273[_0x0a9e('0x38')]['fields']));_0x4667bf[_0x0a9e('0x3a')]=_0x4667bf['attributes']['length']?_0x4667bf[_0x0a9e('0x3a')]:_0x2791c5[_0x0a9e('0x36')];if(_0x4e7273['query'][_0x0a9e('0xc3')]){_0x4667bf[_0x0a9e('0xc4')]=[{'all':!![]}];}_0x4667bf=_[_0x0a9e('0x9c')]({},_0x4667bf,_0x4e7273[_0x0a9e('0xc5')]);return db[_0x0a9e('0x32')]['find'](_0x4667bf)['then'](handleEntityNotFound(_0x436313,null))[_0x0a9e('0x1a')](respondWithResult(_0x436313,null))[_0x0a9e('0x30')](handleError(_0x436313,null));};exports[_0x0a9e('0xc6')]=function(_0x24beb6,_0x59303b){return db['MailInteraction'][_0x0a9e('0xc6')](_0x24beb6[_0x0a9e('0xc7')],{})['then'](respondWithResult(_0x59303b,0xc9))[_0x0a9e('0x30')](handleError(_0x59303b,null));};exports[_0x0a9e('0x19')]=function(_0xcacabb,_0x2427d5){if(_0xcacabb[_0x0a9e('0xc7')]['id']){delete _0xcacabb[_0x0a9e('0xc7')]['id'];}return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0xcacabb[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x2427d5,null))['then'](saveUpdates(_0xcacabb[_0x0a9e('0xc7')],null))[_0x0a9e('0x1a')](respondWithResult(_0x2427d5,null))[_0x0a9e('0x30')](handleError(_0x2427d5,null));};exports[_0x0a9e('0x1b')]=function(_0x1d0b02,_0x547e37){return db['MailInteraction'][_0x0a9e('0x5b')]({'where':{'id':_0x1d0b02[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x547e37,null))[_0x0a9e('0x1a')](removeEntity(_0x547e37,null))[_0x0a9e('0x30')](handleError(_0x547e37,null));};exports['describe']=function(_0x1339d0,_0x3c775a){return db[_0x0a9e('0x32')]['describe']()[_0x0a9e('0x1a')](respondWithResult(_0x3c775a,null))['catch'](handleError(_0x3c775a,null));};exports[_0x0a9e('0xc8')]=function(_0x4799d4,_0x25b745){return db[_0x0a9e('0x29')][_0x0a9e('0x5b')]({'where':{'id':_0x4799d4['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x25b745,null))['then'](function(_0x4383da){if(_0x4383da){return _0x4383da[_0x0a9e('0xc8')](_0x4799d4[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x4799d4[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{});}})[_0x0a9e('0x1a')](respondWithResult(_0x25b745,null))[_0x0a9e('0x30')](handleError(_0x25b745,null));};exports[_0x0a9e('0xcb')]=function(_0x4262d0,_0xc876d4){var _0x2415fe={'raw':![],'where':{}};var _0x399def={};var _0x98c62c={'count':0x0,'rows':[]};return db[_0x0a9e('0x32')]['findOne']({'where':{'id':_0x4262d0['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0xc876d4,null))['then'](function(_0x1d999b){if(_0x1d999b){_0x399def[_0x0a9e('0x36')]=_['keys'](db[_0x0a9e('0x29')][_0x0a9e('0x33')]);_0x399def[_0x0a9e('0x38')]=_[_0x0a9e('0x6f')](_0x4262d0['query']);_0x399def[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],_0x399def[_0x0a9e('0x38')]);_0x2415fe['attributes']=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x4262d0['query'][_0x0a9e('0x3b')]));_0x2415fe[_0x0a9e('0x3a')]=_0x2415fe[_0x0a9e('0x3a')]['length']?_0x2415fe[_0x0a9e('0x3a')]:_0x399def[_0x0a9e('0x36')];if(!_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3d')](_0x0a9e('0xcc'))){_0x2415fe['limit']=qs[_0x0a9e('0x15')](_0x4262d0[_0x0a9e('0x38')]['limit']);_0x2415fe[_0x0a9e('0x13')]=qs[_0x0a9e('0x13')](_0x4262d0[_0x0a9e('0x38')]['offset']);}_0x2415fe['order']=qs['sort'](_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x2415fe['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x4262d0[_0x0a9e('0x38')],_0x399def['filters']));_0x2415fe[_0x0a9e('0x72')][_0x0a9e('0xcd')]=_0x1d999b['id'];if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x81')]){_0x2415fe[_0x0a9e('0x72')]=_[_0x0a9e('0x9c')](_0x2415fe[_0x0a9e('0x72')],{'$or':_[_0x0a9e('0x37')](_0x2415fe[_0x0a9e('0x3a')],function(_0x5a1848){var _0x43c397={};_0x43c397[_0x5a1848]={'$like':'%'+_0x4262d0['query'][_0x0a9e('0x81')]+'%'};return _0x43c397;})});}if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]){var _0x3cf222=_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]['split'](',');var _0x1a0314={};_0x1a0314[_0x3cf222[0x0]]={'$gte':moment(_0x3cf222[0x1])[_0x0a9e('0xce')](_0x0a9e('0xcf'))};_0x2415fe[_0x0a9e('0x72')]=_['merge'](_0x2415fe[_0x0a9e('0x72')],_0x1a0314);}_0x2415fe=_[_0x0a9e('0x9c')]({},_0x2415fe,_0x4262d0[_0x0a9e('0xc5')]);return db[_0x0a9e('0x29')][_0x0a9e('0x16')]({'where':_0x2415fe[_0x0a9e('0x72')]})[_0x0a9e('0x1a')](function(_0x25931e){_0x98c62c[_0x0a9e('0x16')]=_0x25931e;if(_0x4262d0[_0x0a9e('0x38')]['includeAll']){_0x2415fe[_0x0a9e('0xc4')]=[{'all':!![]}];}return db[_0x0a9e('0x29')][_0x0a9e('0xd0')](_0x2415fe);})[_0x0a9e('0x1a')](function(_0xea8bd1){if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0xd1')]===_0x0a9e('0xd2')){for(var _0x566b90=0x0;_0x566b90<_0xea8bd1[_0x0a9e('0x3c')];_0x566b90++){_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]=juice(_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]);}}_0x98c62c['rows']=_0xea8bd1;return _0x98c62c;});}})[_0x0a9e('0x1a')](respondWithFilteredResult(_0xc876d4,_0x2415fe))[_0x0a9e('0x30')](handleError(_0xc876d4,null));};exports[_0x0a9e('0xd3')]=function(_0x97d5b5,_0x370b5e){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x97d5b5[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x370b5e,null))[_0x0a9e('0x1a')](function(_0x5a7dad){if(_0x5a7dad){return _0x5a7dad[_0x0a9e('0xd4')](_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x97d5b5[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{})['spread'](function(){return db[_0x0a9e('0xd5')]['findAll']({'attributes':['id','name','color'],'where':{'id':_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')]}});})[_0x0a9e('0x1a')](function(_0x2a07d0){socket['emit'](_0x0a9e('0xd6'),{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]});return{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]};});}})[_0x0a9e('0x1a')](respondWithResult(_0x370b5e,null))[_0x0a9e('0x30')](handleError(_0x370b5e,null));};exports['removeTags']=function(_0x57b1b1,_0x9484c8){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x57b1b1['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x9484c8,null))[_0x0a9e('0x1a')](function(_0x422f0a){if(_0x422f0a){return _0x422f0a['removeTags'](_0x57b1b1[_0x0a9e('0x38')][_0x0a9e('0xc9')]);}})[_0x0a9e('0x1a')](respondWithStatusCode(_0x9484c8,null))['catch'](handleError(_0x9484c8,null));};exports[_0x0a9e('0xd7')]=function(_0x336b30,_0x3b7213){var _0x549e03=moment()['unix']()['toString']();var _0x3b04fd=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdb'));var _0x532424=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdc'));var _0x33a26c=path[_0x0a9e('0xd8')](_0x3b04fd,_0x549e03);var _0x580dd6=util[_0x0a9e('0xce')]('transcript-%d-%s.zip',_0x336b30[_0x0a9e('0xc2')]['id'],_0x549e03);var _0x5c57e1=path[_0x0a9e('0xd8')](_0x3b04fd,_0x580dd6);var _0x57b7d4=[];if(_0x336b30[_0x0a9e('0x38')][_0x0a9e('0xdc')]){_0x57b7d4[_0x0a9e('0x27')]({'model':db[_0x0a9e('0xdd')],'as':_0x0a9e('0xde'),'raw':!![]});}var _0x251dd9=[{'model':db[_0x0a9e('0x29')],'as':'Messages','attributes':['id',_0x0a9e('0xc7'),_0x0a9e('0x44'),'to','cc','bcc',_0x0a9e('0xdf'),_0x0a9e('0x75')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x57b7d4}];return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x336b30[_0x0a9e('0xc2')]['id']},'include':_0x251dd9})['then'](handleEntityNotFound(_0x3b7213,null))[_0x0a9e('0x1a')](function(_0xf49ed4){if(_0xf49ed4&&_0xf49ed4[_0x0a9e('0xe0')]){var _0x3f0d64=_0xf49ed4[_0x0a9e('0xe1')]({'plain':!![]});fs[_0x0a9e('0xe2')](_0x33a26c);return BPromise[_0x0a9e('0xe3')](_0x3f0d64[_0x0a9e('0xe0')],function(_0x22767f,_0x426c3c){var _0x56e148={'from':_0x22767f[_0x0a9e('0x44')],'to':_0x22767f['to'],'subject':_0x22767f['subject'],'html':_0x22767f[_0x0a9e('0xc7')],'headers':{'Date':moment(_0x22767f[_0x0a9e('0x75')])[_0x0a9e('0xce')](_0x0a9e('0xe4'))},'attachments':[]};if(_0x22767f['cc']){_0x56e148[_0x0a9e('0xe5')]['Cc']=_0x22767f['cc'];}if(_0x22767f[_0x0a9e('0xe6')]){_0x56e148['headers'][_0x0a9e('0xe7')]=_0x22767f[_0x0a9e('0xe6')];}return new BPromise(function(_0x2977a7,_0x55a599){if(_0x22767f[_0x0a9e('0xde')]){for(var _0x402544=0x0;_0x402544<_0x22767f[_0x0a9e('0xde')][_0x0a9e('0x3c')];_0x402544++){var _0x31e1e0=_0x22767f[_0x0a9e('0xde')][_0x402544];var _0x1e93f5=path['join'](_0x532424,_0x31e1e0[_0x0a9e('0xe8')]);if(fs[_0x0a9e('0xe9')](_0x1e93f5)){_0x56e148[_0x0a9e('0xdc')][_0x0a9e('0x27')]({'name':_0x31e1e0[_0x0a9e('0x20')],'contentType':_0x31e1e0[_0x0a9e('0x65')],'data':fs[_0x0a9e('0xea')](_0x1e93f5)});}}}emlformat['build'](_0x56e148,function(_0x5c8720,_0x10aa22){if(_0x5c8720)return _0x55a599(_0x5c8720);fs[_0x0a9e('0xeb')](path[_0x0a9e('0xd8')](_0x33a26c,util[_0x0a9e('0xce')](_0x0a9e('0xec'),_0x426c3c)),_0x10aa22);return _0x2977a7(_0x10aa22);});});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x609711,_0x584854){zipdir(_0x33a26c,{'saveTo':_0x5c57e1},function(_0x39ea62,_0x1d7fc4){if(_0x39ea62)return _0x584854(_0x39ea62);return _0x609711(_0x1d7fc4);});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x2675a5,_0x1b1757){rimraf(_0x33a26c,function(_0x3c6082){if(_0x3c6082)_0x1b1757(_0x3c6082);return _0x2675a5();});});})[_0x0a9e('0x1a')](function(){return _0x3b7213['download'](_0x5c57e1,_0x580dd6,function(_0x311288){if(!_0x311288)fs[_0x0a9e('0xed')](_0x5c57e1);});});});}else{return _0x3b7213[_0x0a9e('0x1d')](0xc8);}})['catch'](handleError(_0x3b7213,null));};
\ No newline at end of file
+var _0xa9e0=['o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','Setting','enableEmailPreview','all','rows','show','params','includeAll','include','options','create','body','addMessage','ids','omit','getMessages','nolimit','MailInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','Tag','mailInteractionTags:save','download','join','root','server','tmp','attachments','Attachment','Attachments','subject','Messages','get','mkdirSync','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','readFileSync','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','util','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','socket.io-emitter','redis','./mailInteraction.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','Users','fullname','Tags','split','forEach','push','TagIds','MailMessage','findOne','out','-id','plainBody','lastMsgText','trimStart','catch','index','MailInteraction','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','sort','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','mail_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20>\x200','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','keys','some','compact','where','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','QueryTypes','SELECT','clone','i.id','order','contactName','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','sequelize','toString','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','Account.mandatoryDisposition','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgDirection','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.MailAccountId','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname'];(function(_0x46f2c2,_0x139b26){var _0x128b9e=function(_0x38740e){while(--_0x38740e){_0x46f2c2['push'](_0x46f2c2['shift']());}};_0x128b9e(++_0x139b26);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x0a9e('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x0a9e('0x4'));var squel=require(_0x0a9e('0x5'));var juice=require(_0x0a9e('0x6'));var Redis=require(_0x0a9e('0x7'));var qs=require(_0x0a9e('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0x0a9e('0x9'))(_0x0a9e('0xa'));var config=require(_0x0a9e('0xb'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x0a9e('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0a9e('0xd'))(new Redis(config[_0x0a9e('0xe')]));require(_0x0a9e('0xf'))[_0x0a9e('0x10')](socket);function respondWithStatusCode(_0xfeb75b,_0xbd1168){_0xbd1168=_0xbd1168||0xcc;return function(_0x4a4c56){if(_0x4a4c56){return _0xfeb75b['sendStatus'](_0xbd1168);}return _0xfeb75b['status'](_0xbd1168)['end']();};}function respondWithResult(_0x273d4d,_0x36471c){_0x36471c=_0x36471c||0xc8;return function(_0xd5b662){if(_0xd5b662){return _0x273d4d[_0x0a9e('0x11')](_0x36471c)[_0x0a9e('0x12')](_0xd5b662);}};}function respondWithFilteredResult(_0x69aeb7,_0x5db4b0){return function(_0x4283ce){if(_0x4283ce){var _0x239b12=typeof _0x5db4b0[_0x0a9e('0x13')]===_0x0a9e('0x14')&&typeof _0x5db4b0[_0x0a9e('0x15')]===_0x0a9e('0x14');var _0x52a03d=_0x4283ce[_0x0a9e('0x16')];var _0x5d0880=_0x239b12?0x0:_0x5db4b0[_0x0a9e('0x13')];var _0x519dfd=_0x239b12?_0x4283ce[_0x0a9e('0x16')]:_0x5db4b0[_0x0a9e('0x13')]+_0x5db4b0['limit'];var _0x225616;if(_0x519dfd>=_0x52a03d){_0x519dfd=_0x52a03d;_0x225616=0xc8;}else{_0x225616=0xce;}_0x69aeb7['status'](_0x225616);return _0x69aeb7[_0x0a9e('0x17')](_0x0a9e('0x18'),_0x5d0880+'-'+_0x519dfd+'/'+_0x52a03d)[_0x0a9e('0x12')](_0x4283ce);}return null;};}function saveUpdates(_0x205fd6){return function(_0x31b1ca){if(_0x31b1ca){return _0x31b1ca[_0x0a9e('0x19')](_0x205fd6)[_0x0a9e('0x1a')](function(_0x20559e){return _0x20559e;});}return null;};}function removeEntity(_0x1314ae){return function(_0x112016){if(_0x112016){return _0x112016[_0x0a9e('0x1b')]()[_0x0a9e('0x1a')](function(){_0x1314ae['status'](0xcc)[_0x0a9e('0x1c')]();});}};}function handleEntityNotFound(_0x155cce){return function(_0x53682f){if(!_0x53682f){_0x155cce[_0x0a9e('0x1d')](0x194);}return _0x53682f;};}function handleError(_0x5a09ef,_0x588269){_0x588269=_0x588269||0x1f4;return function(_0x3a02e1){logger[_0x0a9e('0x1e')](_0x3a02e1[_0x0a9e('0x1f')]);if(_0x3a02e1[_0x0a9e('0x20')]){delete _0x3a02e1['name'];}_0x5a09ef[_0x0a9e('0x11')](_0x588269)[_0x0a9e('0x21')](_0x3a02e1);};}function getInteractionUsers(_0x3b45bc,_0x4d00e6){return new BPromise(function(_0x370d86,_0x42ac8f){try{if(_0x4d00e6[_0x3b45bc['id']]){_0x3b45bc[_0x0a9e('0x22')]=_['map'](_0x4d00e6[_0x3b45bc['id']],function(_0x59181e){return{'id':_0x59181e['id'],'fullname':_0x59181e[_0x0a9e('0x23')]};});}}catch(_0x3a8e58){_0x42ac8f(_0x3a8e58);}_0x370d86(_0x3b45bc);});}function getInteractionTags(_0x40c424,_0x33161b){return new BPromise(function(_0x526cf3,_0x384319){try{if(_0x40c424['TagIds']){_0x40c424[_0x0a9e('0x24')]=[];_0x40c424['TagIds'][_0x0a9e('0x25')](',')[_0x0a9e('0x26')](function(_0x25fba9){_0x40c424[_0x0a9e('0x24')][_0x0a9e('0x27')](_0x33161b[_0x25fba9]);});}delete _0x40c424[_0x0a9e('0x28')];}catch(_0x11c3b6){_0x384319(_0x11c3b6);}_0x526cf3(_0x40c424);});}function getLastMessageText(_0x14de77){return new BPromise(function(_0x5a101a,_0x3652a7){return db[_0x0a9e('0x29')][_0x0a9e('0x2a')]({'where':{'$and':[{'MailInteractionId':_0x14de77['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x0a9e('0x2b')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x0a9e('0x2c'),'raw':!![]})[_0x0a9e('0x1a')](function(_0x1843b2){if(_0x1843b2&&_0x1843b2[_0x0a9e('0x2d')]){_0x14de77[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1843b2[_0x0a9e('0x2d')]);}_0x5a101a(_0x14de77);})[_0x0a9e('0x30')](function(_0x1dbde2){_0x3652a7(_0x1dbde2);});});}function updateMailInteraction(_0x540530,_0x426950,_0x5d1e0e,_0x2407f9){return new BPromise(function(_0x3ae878,_0x1122db){return getInteractionUsers(_0x540530,_0x5d1e0e)[_0x0a9e('0x1a')](function(_0x25ce3a){return getInteractionTags(_0x25ce3a,_0x426950);})['then'](function(_0x66c1d2){if(_0x2407f9){_0x3ae878(getLastMessageText(_0x66c1d2));}else{_0x3ae878(_0x66c1d2);}})[_0x0a9e('0x30')](function(_0x40cb85){_0x1122db(_0x40cb85);});});}exports[_0x0a9e('0x31')]=function(_0x2b45ea,_0x409319){var _0x332d35={},_0x39e565={},_0x5583a4={'count':0x0,'rows':[]};var _0x44295a=_['map'](db[_0x0a9e('0x32')][_0x0a9e('0x33')],function(_0x2b7e7f){return{'name':_0x2b7e7f[_0x0a9e('0x34')],'type':_0x2b7e7f['type'][_0x0a9e('0x35')]};});_0x39e565[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x44295a,_0x0a9e('0x20'));_0x39e565['query']=_['keys'](_0x2b45ea[_0x0a9e('0x38')]);_0x39e565['filters']=_[_0x0a9e('0x39')](_0x39e565[_0x0a9e('0x36')],_0x39e565[_0x0a9e('0x38')]);_0x332d35[_0x0a9e('0x3a')]=_['intersection'](_0x39e565[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x2b45ea[_0x0a9e('0x38')]['fields']));_0x332d35[_0x0a9e('0x3a')]=_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x3c')]?_0x332d35['attributes']:_0x39e565['model'];if(!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3d')]('nolimit')){_0x332d35[_0x0a9e('0x15')]=qs[_0x0a9e('0x15')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x15')]);_0x332d35['offset']=qs['offset'](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x13')]);}_0x332d35['order']=qs[_0x0a9e('0x3e')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x332d35['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x2b45ea[_0x0a9e('0x38')],_0x39e565[_0x0a9e('0x3f')]),_0x44295a);var _0x13cb1f=[];var _0xeaa5e5=squel[_0x0a9e('0x41')]()[_0x0a9e('0x42')]('id')[_0x0a9e('0x42')](_0x0a9e('0x20'))[_0x0a9e('0x42')](_0x0a9e('0x43'))[_0x0a9e('0x44')](_0x0a9e('0x45'));var _0x37f6cc=squel['select']()['field'](_0x0a9e('0x46'))[_0x0a9e('0x42')](_0x0a9e('0x47'))[_0x0a9e('0x42')](_0x0a9e('0x48'))[_0x0a9e('0x44')](_0x0a9e('0x49'),'ui')[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'u',_0x0a9e('0x4c'));var _0x2c2cb0=squel[_0x0a9e('0x41')]()['from'](_0x0a9e('0x4d'),'i')[_0x0a9e('0x4a')](_0x0a9e('0x4e'),'c',_0x0a9e('0x4f'))[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'o',_0x0a9e('0x50'))[_0x0a9e('0x4a')]('mail_accounts','a',_0x0a9e('0x51'))['left_join'](_0x0a9e('0x52'),'me',_0x0a9e('0x53'))[_0x0a9e('0x4a')]('mail_interaction_has_tags','it',_0x0a9e('0x54'))[_0x0a9e('0x4a')](_0x0a9e('0x45'),'t',_0x0a9e('0x55'));var _0x45c845=squel[_0x0a9e('0x56')]();var _0x45bf7f=[];var _0x5bbcde=squel[_0x0a9e('0x56')]();var _0x1bde3c;if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]){_0x1bde3c=as[_0x0a9e('0x58')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]);var _0x19383e=_0x1bde3c[_0x0a9e('0x59')];for(var _0x58a5c2=0x0;_0x58a5c2<_0x1bde3c[_0x0a9e('0x5a')][_0x0a9e('0x3c')];_0x58a5c2++){var _0x4f7240=_0x1bde3c['conditions'][_0x58a5c2];var _0x5ddf84='i';var _0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,[_0x0a9e('0x20'),_0x4f7240[_0x0a9e('0x42')]]);if(!_0x1adfee){switch(_0x4f7240[_0x0a9e('0x42')]){case _0x0a9e('0x5c'):if(_0x4f7240[_0x0a9e('0x5d')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')]('`'+_0x4f7240['field']+'`\x20=\x200');}else{_0x2c2cb0['having']('`'+_0x4f7240[_0x0a9e('0x42')]+_0x0a9e('0x5f'));}break;case _0x0a9e('0x60'):if(_0x4f7240['operator']===_0x0a9e('0x61')){if(_0x4f7240[_0x0a9e('0x5d')]['split']('\x20')['length']>0x1){_0x45c845[_0x19383e](_0x0a9e('0x62'),qs['getFullTextValue'](_0x4f7240[_0x0a9e('0x5d')]),null);}else{var _0x4c3845='%'+_0x4f7240[_0x0a9e('0x5d')]+'%';_0x45c845[_0x19383e](_0x0a9e('0x63'),_0x4c3845,_0x4c3845,_0x4c3845);}}else{_0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,['name',_0x0a9e('0x64')]);_0x4f7240[_0x0a9e('0x42')]='ContactId';_0x2244d6=as['buildExpression'](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6['value'][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'Tag':var _0xe22ccc=_0x4f7240['value']['split'](',')['map'](function(_0x2da03c){return Number(_0x2da03c);});_0xe22ccc['forEach'](function(_0x2f7092){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x2f7092+',%');});_0x45bf7f=_[_0x0a9e('0x69')](_0x45bf7f,_0xe22ccc);break;case _0x0a9e('0x6a'):if(_0x4f7240[_0x0a9e('0x6b')]===_0x0a9e('0x61')){_0x45c845[_0x19383e](_0x0a9e('0x6c'),'%'+_0x4f7240[_0x0a9e('0x5d')]+'%',null);}else{_0x1adfee=_['find'](_0x44295a,[_0x0a9e('0x20'),_0x0a9e('0x6d')]);_0x4f7240[_0x0a9e('0x42')]=_0x0a9e('0x6d');_0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'plainBody':_0x2244d6=as[_0x0a9e('0x6e')]('me',null,_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6['value']['start'],_0x2244d6[_0x0a9e('0x5d')]['end']);break;}}else{var _0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}}}else{var _0x5854cc=_(_0x2b45ea[_0x0a9e('0x38')])[_0x0a9e('0x6f')]()[_0x0a9e('0x37')](function(_0x5adf8f){return _[_0x0a9e('0x70')](_0x44295a,[_0x0a9e('0x20'),_0x5adf8f])?_0x5adf8f:undefined;})[_0x0a9e('0x71')]()[_0x0a9e('0x5d')]();if(!_['isEmpty'](_0x5854cc)){_0x5854cc[_0x0a9e('0x26')](function(_0xe05a5a){if(_0xe05a5a==='MailAccountId'){_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x73'),[][_0x0a9e('0x74')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]));}else if(_0xe05a5a===_0x0a9e('0x75')){var _0x4d4a35=JSON[_0x0a9e('0x76')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a])[_0x0a9e('0x77')];var _0x47bb43=JSON[_0x0a9e('0x76')](_0x2b45ea['query'][_0xe05a5a])['$lte'];_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x78'),_0x4d4a35,_0x47bb43);}else{if(_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]===_0x0a9e('0x79')){_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7a'));}else{_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7b'),_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]);}}});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7d'));}else{_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7e'));}}if(_0x2b45ea[_0x0a9e('0x38')]['tag']){_0x45bf7f=_[_0x0a9e('0x7f')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x80')])?_0x2b45ea['query'][_0x0a9e('0x80')]:new Array(_0x2b45ea[_0x0a9e('0x38')]['tag']);_0x45bf7f[_0x0a9e('0x26')](function(_0x56e31e){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x56e31e+',%');});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x81')]){var _0x4a43a8=_0x2b45ea['query']['filter'][_0x0a9e('0x82')]('\x5c','\x5c\x5c')[_0x0a9e('0x82')](/'/g,'\x27\x27');if(qs[_0x0a9e('0x83')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x84'),_0x4a43a8+'%');}else if(qs[_0x0a9e('0x85')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x86'),_0x4a43a8+'%');}else{_0x45c845['or'](_0x0a9e('0x87'),qs[_0x0a9e('0x88')](_0x4a43a8))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0a9e('0x88')](_0x4a43a8));}}}_0x2c2cb0[_0x0a9e('0x72')](_0x45c845);_0x2c2cb0[_0x0a9e('0x89')]('i.id');var _0x2bdc44={'type':db['Sequelize'][_0x0a9e('0x8a')][_0x0a9e('0x8b')],'raw':!![]};var _0x4c46c1=_0x2c2cb0[_0x0a9e('0x8c')]();_0x4c46c1[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x4c46c1[_0x0a9e('0x42')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x0a9e('0x5c'));if(_0x332d35[_0x0a9e('0x8e')]){_0x332d35[_0x0a9e('0x8e')][_0x0a9e('0x26')](function(_0x5b7fc3){var _0x109ccb=_0x5b7fc3[0x0]===_0x0a9e('0x8f')?_0x5b7fc3[0x0]:'i.'+_0x5b7fc3[0x0];_0x2c2cb0[_0x0a9e('0x8e')](_0x109ccb,_0x5b7fc3[0x1]===_0x0a9e('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x45bf7f)){_0x2c2cb0[_0x0a9e('0x5e')](_0x5bbcde);_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x91'),_0x45bf7f);}BPromise[_0x0a9e('0x92')]()[_0x0a9e('0x1a')](function(){if(!_0x1bde3c){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return;_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x94'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x94'));return;}if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]!==_0x0a9e('0x97'))return;return _0x2b45ea['user'][_0x0a9e('0x98')]({'attributes':['id'],'raw':!![]})[_0x0a9e('0x1a')](function(_0xc599b3){if(_['isEmpty'](_0xc599b3)){_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x99'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x99'));}else{_0x4c46c1['where']('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));_0x2c2cb0[_0x0a9e('0x72')]('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));}});})['then'](function(){if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]==='agent'&&!_0x1bde3c&&!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0x4c46c1[_0x0a9e('0x9b')](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x444f1f){_0x5583a4['count']=_0x444f1f[_0x0a9e('0x3c')];if(_0x5583a4[_0x0a9e('0x16')]===0x0)return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0xeaa5e5['toString'](),_0x2bdc44)[_0x0a9e('0x1a')](function(_0xf0db1){_0x13cb1f=_['keyBy'](_0xf0db1,'id');_0x2bdc44=_[_0x0a9e('0x9c')](_0x2bdc44,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3b')]){_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x26')](function(_0x5af453){_0x2c2cb0['field']('i.'+_0x5af453);});}else{_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x9d'),_0x0a9e('0x5c'));_0x2c2cb0['field'](_0x0a9e('0x9e'),_0x0a9e('0x9f'));_0x2c2cb0['field']('a.mandatoryDisposition',_0x0a9e('0xa0'));_0x2c2cb0['field']('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa1'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa2'));_0x2c2cb0['field'](_0x0a9e('0xa3'));_0x2c2cb0['field'](_0x0a9e('0xa4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa5'));_0x2c2cb0[_0x0a9e('0x42')]('i.lastMsgAt');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa6'));_0x2c2cb0[_0x0a9e('0x42')]('i.subject');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa7'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa9'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xaa'));_0x2c2cb0['field'](_0x0a9e('0xab'));_0x2c2cb0[_0x0a9e('0x42')]('i.ContactId');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xac'));_0x2c2cb0[_0x0a9e('0x42')]('i.UserId');_0x2c2cb0[_0x0a9e('0x42')]('c.firstName',_0x0a9e('0xad'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xae'),_0x0a9e('0xaf'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb0'),_0x0a9e('0xb1'));_0x2c2cb0[_0x0a9e('0x42')]('c.phone',_0x0a9e('0xb2'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb3'),_0x0a9e('0xb4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb5'),_0x0a9e('0xb6'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb7'),_0x0a9e('0xb8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb9'),_0x0a9e('0xba'));_0x2c2cb0['field'](_0x0a9e('0xbb'),_0x0a9e('0x28'));}if(_0x332d35[_0x0a9e('0x15')])_0x2c2cb0[_0x0a9e('0x15')](_0x332d35[_0x0a9e('0x15')]);if(_0x332d35['offset'])_0x2c2cb0[_0x0a9e('0x13')](_0x332d35[_0x0a9e('0x13')]);return db['sequelize'][_0x0a9e('0x38')](_0x2c2cb0['toString'](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x27041d){if(_0x27041d[_0x0a9e('0x3c')]>0x0)_0x37f6cc[_0x0a9e('0x72')]('ui.MailInteractionId\x20IN\x20?',_[_0x0a9e('0x37')](_0x27041d,'id'));return db['sequelize'][_0x0a9e('0x38')](_0x37f6cc[_0x0a9e('0x9b')](),_0x2bdc44)['then'](function(_0x231c6a){var _0x63c9f7=_[_0x0a9e('0xbc')](_0x231c6a,'MailInteractionId');var _0x4c788f=[];return db[_0x0a9e('0xbd')][_0x0a9e('0x2a')]({'attributes':[_0x0a9e('0xbe')],'raw':!![]})[_0x0a9e('0x1a')](function(_0x3f2f40){var _0x2450a8=_0x3f2f40[_0x0a9e('0xbe')];_0x27041d[_0x0a9e('0x26')](function(_0x3f8124){_0x4c788f['push'](updateMailInteraction(_0x3f8124,_0x13cb1f,_0x63c9f7,_0x2450a8));});return BPromise[_0x0a9e('0xbf')](_0x4c788f);});});});})['then'](function(_0x287324){_0x5583a4[_0x0a9e('0xc0')]=_0x287324;return _0x5583a4;})[_0x0a9e('0x1a')](respondWithFilteredResult(_0x409319,_0x332d35))[_0x0a9e('0x30')](handleError(_0x409319,null));};exports[_0x0a9e('0xc1')]=function(_0x4e7273,_0x436313){var _0x4667bf={'raw':![],'where':{'id':_0x4e7273[_0x0a9e('0xc2')]['id']}},_0x2791c5={};_0x2791c5[_0x0a9e('0x36')]=_['keys'](db['MailInteraction'][_0x0a9e('0x33')]);_0x2791c5['query']=_[_0x0a9e('0x6f')](_0x4e7273[_0x0a9e('0x38')]);_0x2791c5[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x2791c5[_0x0a9e('0x36')],_0x2791c5[_0x0a9e('0x38')]);_0x4667bf['attributes']=_['intersection'](_0x2791c5[_0x0a9e('0x36')],qs['fields'](_0x4e7273[_0x0a9e('0x38')]['fields']));_0x4667bf[_0x0a9e('0x3a')]=_0x4667bf['attributes']['length']?_0x4667bf[_0x0a9e('0x3a')]:_0x2791c5[_0x0a9e('0x36')];if(_0x4e7273['query'][_0x0a9e('0xc3')]){_0x4667bf[_0x0a9e('0xc4')]=[{'all':!![]}];}_0x4667bf=_[_0x0a9e('0x9c')]({},_0x4667bf,_0x4e7273[_0x0a9e('0xc5')]);return db[_0x0a9e('0x32')]['find'](_0x4667bf)['then'](handleEntityNotFound(_0x436313,null))[_0x0a9e('0x1a')](respondWithResult(_0x436313,null))[_0x0a9e('0x30')](handleError(_0x436313,null));};exports[_0x0a9e('0xc6')]=function(_0x24beb6,_0x59303b){return db['MailInteraction'][_0x0a9e('0xc6')](_0x24beb6[_0x0a9e('0xc7')],{})['then'](respondWithResult(_0x59303b,0xc9))[_0x0a9e('0x30')](handleError(_0x59303b,null));};exports[_0x0a9e('0x19')]=function(_0xcacabb,_0x2427d5){if(_0xcacabb[_0x0a9e('0xc7')]['id']){delete _0xcacabb[_0x0a9e('0xc7')]['id'];}return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0xcacabb[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x2427d5,null))['then'](saveUpdates(_0xcacabb[_0x0a9e('0xc7')],null))[_0x0a9e('0x1a')](respondWithResult(_0x2427d5,null))[_0x0a9e('0x30')](handleError(_0x2427d5,null));};exports[_0x0a9e('0x1b')]=function(_0x1d0b02,_0x547e37){return db['MailInteraction'][_0x0a9e('0x5b')]({'where':{'id':_0x1d0b02[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x547e37,null))[_0x0a9e('0x1a')](removeEntity(_0x547e37,null))[_0x0a9e('0x30')](handleError(_0x547e37,null));};exports['describe']=function(_0x1339d0,_0x3c775a){return db[_0x0a9e('0x32')]['describe']()[_0x0a9e('0x1a')](respondWithResult(_0x3c775a,null))['catch'](handleError(_0x3c775a,null));};exports[_0x0a9e('0xc8')]=function(_0x4799d4,_0x25b745){return db[_0x0a9e('0x29')][_0x0a9e('0x5b')]({'where':{'id':_0x4799d4['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x25b745,null))['then'](function(_0x4383da){if(_0x4383da){return _0x4383da[_0x0a9e('0xc8')](_0x4799d4[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x4799d4[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{});}})[_0x0a9e('0x1a')](respondWithResult(_0x25b745,null))[_0x0a9e('0x30')](handleError(_0x25b745,null));};exports[_0x0a9e('0xcb')]=function(_0x4262d0,_0xc876d4){var _0x2415fe={'raw':![],'where':{}};var _0x399def={};var _0x98c62c={'count':0x0,'rows':[]};return db[_0x0a9e('0x32')]['findOne']({'where':{'id':_0x4262d0['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0xc876d4,null))['then'](function(_0x1d999b){if(_0x1d999b){_0x399def[_0x0a9e('0x36')]=_['keys'](db[_0x0a9e('0x29')][_0x0a9e('0x33')]);_0x399def[_0x0a9e('0x38')]=_[_0x0a9e('0x6f')](_0x4262d0['query']);_0x399def[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],_0x399def[_0x0a9e('0x38')]);_0x2415fe['attributes']=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x4262d0['query'][_0x0a9e('0x3b')]));_0x2415fe[_0x0a9e('0x3a')]=_0x2415fe[_0x0a9e('0x3a')]['length']?_0x2415fe[_0x0a9e('0x3a')]:_0x399def[_0x0a9e('0x36')];if(!_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3d')](_0x0a9e('0xcc'))){_0x2415fe['limit']=qs[_0x0a9e('0x15')](_0x4262d0[_0x0a9e('0x38')]['limit']);_0x2415fe[_0x0a9e('0x13')]=qs[_0x0a9e('0x13')](_0x4262d0[_0x0a9e('0x38')]['offset']);}_0x2415fe['order']=qs['sort'](_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x2415fe['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x4262d0[_0x0a9e('0x38')],_0x399def['filters']));_0x2415fe[_0x0a9e('0x72')][_0x0a9e('0xcd')]=_0x1d999b['id'];if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x81')]){_0x2415fe[_0x0a9e('0x72')]=_[_0x0a9e('0x9c')](_0x2415fe[_0x0a9e('0x72')],{'$or':_[_0x0a9e('0x37')](_0x2415fe[_0x0a9e('0x3a')],function(_0x5a1848){var _0x43c397={};_0x43c397[_0x5a1848]={'$like':'%'+_0x4262d0['query'][_0x0a9e('0x81')]+'%'};return _0x43c397;})});}if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]){var _0x3cf222=_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]['split'](',');var _0x1a0314={};_0x1a0314[_0x3cf222[0x0]]={'$gte':moment(_0x3cf222[0x1])[_0x0a9e('0xce')](_0x0a9e('0xcf'))};_0x2415fe[_0x0a9e('0x72')]=_['merge'](_0x2415fe[_0x0a9e('0x72')],_0x1a0314);}_0x2415fe=_[_0x0a9e('0x9c')]({},_0x2415fe,_0x4262d0[_0x0a9e('0xc5')]);return db[_0x0a9e('0x29')][_0x0a9e('0x16')]({'where':_0x2415fe[_0x0a9e('0x72')]})[_0x0a9e('0x1a')](function(_0x25931e){_0x98c62c[_0x0a9e('0x16')]=_0x25931e;if(_0x4262d0[_0x0a9e('0x38')]['includeAll']){_0x2415fe[_0x0a9e('0xc4')]=[{'all':!![]}];}return db[_0x0a9e('0x29')][_0x0a9e('0xd0')](_0x2415fe);})[_0x0a9e('0x1a')](function(_0xea8bd1){if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0xd1')]===_0x0a9e('0xd2')){for(var _0x566b90=0x0;_0x566b90<_0xea8bd1[_0x0a9e('0x3c')];_0x566b90++){_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]=juice(_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]);}}_0x98c62c['rows']=_0xea8bd1;return _0x98c62c;});}})[_0x0a9e('0x1a')](respondWithFilteredResult(_0xc876d4,_0x2415fe))[_0x0a9e('0x30')](handleError(_0xc876d4,null));};exports[_0x0a9e('0xd3')]=function(_0x97d5b5,_0x370b5e){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x97d5b5[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x370b5e,null))[_0x0a9e('0x1a')](function(_0x5a7dad){if(_0x5a7dad){return _0x5a7dad[_0x0a9e('0xd4')](_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x97d5b5[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{})['spread'](function(){return db[_0x0a9e('0xd5')]['findAll']({'attributes':['id','name','color'],'where':{'id':_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')]}});})[_0x0a9e('0x1a')](function(_0x2a07d0){socket['emit'](_0x0a9e('0xd6'),{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]});return{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]};});}})[_0x0a9e('0x1a')](respondWithResult(_0x370b5e,null))[_0x0a9e('0x30')](handleError(_0x370b5e,null));};exports['removeTags']=function(_0x57b1b1,_0x9484c8){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x57b1b1['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x9484c8,null))[_0x0a9e('0x1a')](function(_0x422f0a){if(_0x422f0a){return _0x422f0a['removeTags'](_0x57b1b1[_0x0a9e('0x38')][_0x0a9e('0xc9')]);}})[_0x0a9e('0x1a')](respondWithStatusCode(_0x9484c8,null))['catch'](handleError(_0x9484c8,null));};exports[_0x0a9e('0xd7')]=function(_0x336b30,_0x3b7213){var _0x549e03=moment()['unix']()['toString']();var _0x3b04fd=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdb'));var _0x532424=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdc'));var _0x33a26c=path[_0x0a9e('0xd8')](_0x3b04fd,_0x549e03);var _0x580dd6=util[_0x0a9e('0xce')]('transcript-%d-%s.zip',_0x336b30[_0x0a9e('0xc2')]['id'],_0x549e03);var _0x5c57e1=path[_0x0a9e('0xd8')](_0x3b04fd,_0x580dd6);var _0x57b7d4=[];if(_0x336b30[_0x0a9e('0x38')][_0x0a9e('0xdc')]){_0x57b7d4[_0x0a9e('0x27')]({'model':db[_0x0a9e('0xdd')],'as':_0x0a9e('0xde'),'raw':!![]});}var _0x251dd9=[{'model':db[_0x0a9e('0x29')],'as':'Messages','attributes':['id',_0x0a9e('0xc7'),_0x0a9e('0x44'),'to','cc','bcc',_0x0a9e('0xdf'),_0x0a9e('0x75')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x57b7d4}];return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x336b30[_0x0a9e('0xc2')]['id']},'include':_0x251dd9})['then'](handleEntityNotFound(_0x3b7213,null))[_0x0a9e('0x1a')](function(_0xf49ed4){if(_0xf49ed4&&_0xf49ed4[_0x0a9e('0xe0')]){var _0x3f0d64=_0xf49ed4[_0x0a9e('0xe1')]({'plain':!![]});fs[_0x0a9e('0xe2')](_0x33a26c);return BPromise[_0x0a9e('0xe3')](_0x3f0d64[_0x0a9e('0xe0')],function(_0x22767f,_0x426c3c){var _0x56e148={'from':_0x22767f[_0x0a9e('0x44')],'to':_0x22767f['to'],'subject':_0x22767f['subject'],'html':_0x22767f[_0x0a9e('0xc7')],'headers':{'Date':moment(_0x22767f[_0x0a9e('0x75')])[_0x0a9e('0xce')](_0x0a9e('0xe4'))},'attachments':[]};if(_0x22767f['cc']){_0x56e148[_0x0a9e('0xe5')]['Cc']=_0x22767f['cc'];}if(_0x22767f[_0x0a9e('0xe6')]){_0x56e148['headers'][_0x0a9e('0xe7')]=_0x22767f[_0x0a9e('0xe6')];}return new BPromise(function(_0x2977a7,_0x55a599){if(_0x22767f[_0x0a9e('0xde')]){for(var _0x402544=0x0;_0x402544<_0x22767f[_0x0a9e('0xde')][_0x0a9e('0x3c')];_0x402544++){var _0x31e1e0=_0x22767f[_0x0a9e('0xde')][_0x402544];var _0x1e93f5=path['join'](_0x532424,_0x31e1e0[_0x0a9e('0xe8')]);if(fs[_0x0a9e('0xe9')](_0x1e93f5)){_0x56e148[_0x0a9e('0xdc')][_0x0a9e('0x27')]({'name':_0x31e1e0[_0x0a9e('0x20')],'contentType':_0x31e1e0[_0x0a9e('0x65')],'data':fs[_0x0a9e('0xea')](_0x1e93f5)});}}}emlformat['build'](_0x56e148,function(_0x5c8720,_0x10aa22){if(_0x5c8720)return _0x55a599(_0x5c8720);fs[_0x0a9e('0xeb')](path[_0x0a9e('0xd8')](_0x33a26c,util[_0x0a9e('0xce')](_0x0a9e('0xec'),_0x426c3c)),_0x10aa22);return _0x2977a7(_0x10aa22);});});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x609711,_0x584854){zipdir(_0x33a26c,{'saveTo':_0x5c57e1},function(_0x39ea62,_0x1d7fc4){if(_0x39ea62)return _0x584854(_0x39ea62);return _0x609711(_0x1d7fc4);});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x2675a5,_0x1b1757){rimraf(_0x33a26c,function(_0x3c6082){if(_0x3c6082)_0x1b1757(_0x3c6082);return _0x2675a5();});});})[_0x0a9e('0x1a')](function(){return _0x3b7213['download'](_0x5c57e1,_0x580dd6,function(_0x311288){if(!_0x311288)fs[_0x0a9e('0xed')](_0x5c57e1);});});});}else{return _0x3b7213[_0x0a9e('0x1d')](0xc8);}})['catch'](handleError(_0x3b7213,null));};
\ No newline at end of file
index ab27eb2..098841d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b0a=['MailInteraction','MailMessage','setMaxListeners','save','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','../../mysqldb'];(function(_0x2c32b3,_0x5704fd){var _0x2bab98=function(_0x36b0c3){while(--_0x36b0c3){_0x2c32b3['push'](_0x2c32b3['shift']());}};_0x2bab98(++_0x5704fd);}(_0x3b0a,0xa9));var _0xa3b0=function(_0x5db380,_0x5be964){_0x5db380=_0x5db380-0x0;var _0x483264=_0x3b0a[_0x5db380];return _0x483264;};'use strict';var EventEmitter=require('events');var MailInteraction=require(_0xa3b0('0x0'))['db'][_0xa3b0('0x1')];var MailMessage=require(_0xa3b0('0x0'))['db'][_0xa3b0('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xa3b0('0x3')](0x0);var events={'afterCreate':_0xa3b0('0x4'),'afterUpdate':'update','afterDestroy':_0xa3b0('0x5')};function emitEvent(_0xdd1ca9){return function(_0x2ad724,_0x505f19,_0x29863f){_0x2ad724[_0xa3b0('0x6')]({'attributes':['id'],'raw':!![]})[_0xa3b0('0x7')](function(_0x157e6b){_0x2ad724[_0xa3b0('0x8')](_0xa3b0('0x9'),_0x157e6b[_0xa3b0('0xa')](function(_0x463402){return{'id':_0x463402['id']};}));return MailMessage[_0xa3b0('0xb')]({'where':{'MailInteractionId':_0x2ad724['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa3b0('0x7')](function(_0x48c875){_0x2ad724['setDataValue'](_0xa3b0('0xc'),_0x48c875[_0xa3b0('0xd')]);MailInteractionEvents[_0xa3b0('0xe')](_0xdd1ca9+':'+_0x2ad724['id'],_0x2ad724);MailInteractionEvents[_0xa3b0('0xe')](_0xdd1ca9,_0x2ad724);_0x29863f(null);})[_0xa3b0('0xf')](_0x29863f(null));};}for(var e in events){if(events[_0xa3b0('0x10')](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
+var _0x6c77=['../../mysqldb','MailInteraction','MailMessage','save','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','emit','hasOwnProperty','hook','exports'];(function(_0x57f9bf,_0x5d5531){var _0x6264eb=function(_0x3f105a){while(--_0x3f105a){_0x57f9bf['push'](_0x57f9bf['shift']());}};_0x6264eb(++_0x5d5531);}(_0x6c77,0x143));var _0x76c7=function(_0x1e7944,_0x5a1ee7){_0x1e7944=_0x1e7944-0x0;var _0x4be825=_0x6c77[_0x1e7944];return _0x4be825;};'use strict';var EventEmitter=require('events');var MailInteraction=require(_0x76c7('0x0'))['db'][_0x76c7('0x1')];var MailMessage=require(_0x76c7('0x0'))['db'][_0x76c7('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x76c7('0x3'),'afterUpdate':_0x76c7('0x4'),'afterDestroy':_0x76c7('0x5')};function emitEvent(_0x5bf5b3){return function(_0x47d842,_0xbf4b41,_0x14a005){_0x47d842[_0x76c7('0x6')]({'attributes':['id'],'raw':!![]})[_0x76c7('0x7')](function(_0x125582){_0x47d842[_0x76c7('0x8')](_0x76c7('0x9'),_0x125582[_0x76c7('0xa')](function(_0x10a693){return{'id':_0x10a693['id']};}));return MailMessage[_0x76c7('0xb')]({'where':{'MailInteractionId':_0x47d842['id'],'direction':'in','read':![]},'raw':!![]});})[_0x76c7('0x7')](function(_0x14e4a2){_0x47d842[_0x76c7('0x8')](_0x76c7('0xc'),_0x14e4a2['length']);MailInteractionEvents['emit'](_0x5bf5b3+':'+_0x47d842['id'],_0x47d842);MailInteractionEvents[_0x76c7('0xd')](_0x5bf5b3,_0x47d842);_0x14a005(null);})['catch'](_0x14a005(null));};}for(var e in events){if(events[_0x76c7('0xe')](e)){var event=events[e];MailInteraction[_0x76c7('0xf')](e,emitEvent(event));}}module[_0x76c7('0x10')]=MailInteractionEvents;
\ No newline at end of file
index cc07591..dcf3d4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd3e=['utf8mb4_unicode_ci','util','api','moment','bluebird','request-promise','../../config/environment','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','FULLTEXT','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','format','models','get','MailMessage','update','then','utf8mb4'];(function(_0x216799,_0x44b817){var _0x3661c3=function(_0x28f85e){while(--_0x28f85e){_0x216799['push'](_0x216799['shift']());}};_0x3661c3(++_0x44b817);}(_0xdd3e,0x65));var _0xedd3=function(_0x6c434d,_0x5ae386){_0x6c434d=_0x6c434d-0x0;var _0x5a1f2f=_0xdd3e[_0x6c434d];return _0x5a1f2f;};'use strict';var _=require('lodash');var util=require(_0xedd3('0x0'));var logger=require('../../config/logger')(_0xedd3('0x1'));var moment=require(_0xedd3('0x2'));var BPromise=require(_0xedd3('0x3'));var rp=require(_0xedd3('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xedd3('0x5'));var attributes=require(_0xedd3('0x6'));module[_0xedd3('0x7')]=function(_0x1cfee6,_0x3c29c3){return _0x1cfee6[_0xedd3('0x8')]('MailInteraction',attributes,{'tableName':_0xedd3('0x9'),'paranoid':![],'indexes':[{'name':_0xedd3('0xa'),'fields':['subject','to'],'type':_0xedd3('0xb')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x246201,_0x3d5f75,_0x3d1d02){if(_0x246201[_0xedd3('0xc')]){_0x246201[_0xedd3('0xd')]=moment()['format'](_0xedd3('0xe'));}if(_0x246201[_0xedd3('0xf')]){_0x246201[_0xedd3('0x10')]=moment()[_0xedd3('0x11')]('YYYY-MM-DD\x20HH:mm:ss');}_0x3d1d02(null,_0x3d5f75);},'beforeUpdate':function(_0x32c4c6,_0xca41b3,_0x99b76e){if(_0x32c4c6['changed'](_0xedd3('0xc'))){_0x32c4c6[_0xedd3('0xd')]=_0x32c4c6[_0xedd3('0xc')]?moment()[_0xedd3('0x11')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x32c4c6['changed'](_0xedd3('0xf'))){_0x32c4c6['closedAt']=moment()[_0xedd3('0x11')](_0xedd3('0xe'));_0x32c4c6['substatus']=null;_0x32c4c6[_0xedd3('0xd')]=null;}_0x99b76e(null,_0x32c4c6);},'afterUpdate':function(_0x4112b0,_0x2c4093,_0x580d05){var _0xa36f2=_0x1cfee6[_0xedd3('0x12')];var _0x163e10=_0x4112b0[_0xedd3('0x13')]({'plain':!![]});if(_0x163e10[_0xedd3('0xf')]){return _0xa36f2[_0xedd3('0x14')][_0xedd3('0x15')]({'read':!![]},{'where':{'MailInteractionId':_0x163e10['id']}})[_0xedd3('0x16')](function(){_0x580d05();})['catch'](function(_0x588fa2){_0x580d05(_0x588fa2);});}else{_0x580d05();}}},'charset':_0xedd3('0x17'),'collate':_0xedd3('0x18')});};
\ No newline at end of file
+var _0x2651=['substatusAt','format','closedAt','YYYY-MM-DD\x20HH:mm:ss','changed','models','get','closed','MailMessage','update','then','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','subject','FULLTEXT','substatus'];(function(_0x592238,_0xc8ff1e){var _0x4bdf33=function(_0x525784){while(--_0x525784){_0x592238['push'](_0x592238['shift']());}};_0x4bdf33(++_0xc8ff1e);}(_0x2651,0xed));var _0x1265=function(_0xc67528,_0x24e2fb){_0xc67528=_0xc67528-0x0;var _0x38e26d=_0x2651[_0xc67528];return _0x38e26d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1265('0x0'))(_0x1265('0x1'));var moment=require(_0x1265('0x2'));var BPromise=require('bluebird');var rp=require(_0x1265('0x3'));var fs=require('fs');var path=require(_0x1265('0x4'));var rimraf=require(_0x1265('0x5'));var config=require(_0x1265('0x6'));var attributes=require(_0x1265('0x7'));module[_0x1265('0x8')]=function(_0x17daa3,_0x5658ed){return _0x17daa3[_0x1265('0x9')](_0x1265('0xa'),attributes,{'tableName':_0x1265('0xb'),'paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':[_0x1265('0xc'),'to'],'type':_0x1265('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5c716f,_0x140854,_0x3c888a){if(_0x5c716f[_0x1265('0xe')]){_0x5c716f[_0x1265('0xf')]=moment()[_0x1265('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x5c716f['closed']){_0x5c716f[_0x1265('0x11')]=moment()[_0x1265('0x10')](_0x1265('0x12'));}_0x3c888a(null,_0x140854);},'beforeUpdate':function(_0x411e92,_0x1b5c5a,_0x4c6346){if(_0x411e92['changed'](_0x1265('0xe'))){_0x411e92[_0x1265('0xf')]=_0x411e92['substatus']?moment()[_0x1265('0x10')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x411e92[_0x1265('0x13')]('closed')){_0x411e92[_0x1265('0x11')]=moment()['format'](_0x1265('0x12'));_0x411e92['substatus']=null;_0x411e92[_0x1265('0xf')]=null;}_0x4c6346(null,_0x411e92);},'afterUpdate':function(_0x461ed4,_0x5355a7,_0x571473){var _0x58ecbe=_0x17daa3[_0x1265('0x14')];var _0x377828=_0x461ed4[_0x1265('0x15')]({'plain':!![]});if(_0x377828[_0x1265('0x16')]){return _0x58ecbe[_0x1265('0x17')][_0x1265('0x18')]({'read':!![]},{'where':{'MailInteractionId':_0x377828['id']}})[_0x1265('0x19')](function(){_0x571473();})['catch'](function(_0x4c4472){_0x571473(_0x4c4472);});}else{_0x571473();}}},'charset':_0x1265('0x1a'),'collate':_0x1265('0x1b')});};
\ No newline at end of file
index 13c1404..96db56c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb768=['raw','where','attributes','limit','AddTagsToMailInteraction','find','addTags','body','ids','omit','spread','AddTags','stringify','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','UpdateMailInteraction','MailInteraction','update','options'];(function(_0x561a67,_0x431e77){var _0x2fc22f=function(_0x53a231){while(--_0x53a231){_0x561a67['push'](_0x561a67['shift']());}};_0x2fc22f(++_0x431e77);}(_0xb768,0x1ba));var _0x8b76=function(_0x315476,_0x4e1d2f){_0x315476=_0x315476-0x0;var _0x552681=_0xb768[_0x315476];return _0x552681;};'use strict';var _=require(_0x8b76('0x0'));var util=require('util');var moment=require(_0x8b76('0x1'));var BPromise=require(_0x8b76('0x2'));var rs=require(_0x8b76('0x3'));var fs=require('fs');var Redis=require(_0x8b76('0x4'));var db=require(_0x8b76('0x5'))['db'];var utils=require(_0x8b76('0x6'));var logger=require(_0x8b76('0x7'))('rpc');var config=require(_0x8b76('0x8'));var jayson=require(_0x8b76('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x8b76('0xa')]=_[_0x8b76('0xb')](config[_0x8b76('0xa')],{'host':_0x8b76('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8b76('0xa')]));require('./mailInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x53b740,_0x53d318,_0x594f40){return new BPromise(function(_0x482941,_0x34cc5b){return client['request'](_0x53b740,_0x594f40)[_0x8b76('0xd')](function(_0x2076e5){logger[_0x8b76('0xe')](_0x8b76('0xf'),_0x53d318,_0x8b76('0x10'));logger[_0x8b76('0x11')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x53d318,'request\x20sent',JSON['stringify'](_0x2076e5));if(_0x2076e5['error']){if(_0x2076e5[_0x8b76('0x12')]['code']===0x1f4){logger[_0x8b76('0x12')](_0x8b76('0xf'),_0x53d318,_0x2076e5['error'][_0x8b76('0x13')]);return _0x34cc5b(_0x2076e5[_0x8b76('0x12')]['message']);}logger[_0x8b76('0x12')]('MailInteraction,\x20%s,\x20%s',_0x53d318,_0x2076e5[_0x8b76('0x12')]['message']);return _0x482941(_0x2076e5[_0x8b76('0x12')][_0x8b76('0x13')]);}else{logger[_0x8b76('0xe')](_0x8b76('0xf'),_0x53d318,'request\x20sent');_0x482941(_0x2076e5[_0x8b76('0x14')][_0x8b76('0x13')]);}})[_0x8b76('0x15')](function(_0x18cf50){logger[_0x8b76('0x12')]('MailInteraction,\x20%s,\x20%s',_0x53d318,_0x18cf50);_0x34cc5b(_0x18cf50);});});}exports[_0x8b76('0x16')]=function(_0x941a11){var _0x4338b9=this;return new Promise(function(_0x148d44,_0x541047){return db[_0x8b76('0x17')][_0x8b76('0x18')](_0x941a11['body'],{'raw':_0x941a11[_0x8b76('0x19')]?_0x941a11['options'][_0x8b76('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x941a11[_0x8b76('0x19')]?_0x941a11[_0x8b76('0x19')][_0x8b76('0x1b')]||null:null,'attributes':_0x941a11[_0x8b76('0x19')]?_0x941a11['options'][_0x8b76('0x1c')]||null:null,'limit':_0x941a11[_0x8b76('0x19')]?_0x941a11['options'][_0x8b76('0x1d')]||null:null})[_0x8b76('0xd')](function(_0x2c2c3a){logger[_0x8b76('0xe')](_0x8b76('0x16'),_0x941a11);logger['debug'](_0x8b76('0x16'),_0x941a11,JSON['stringify'](_0x2c2c3a));_0x148d44(_0x2c2c3a);})[_0x8b76('0x15')](function(_0x32db79){logger[_0x8b76('0x12')](_0x8b76('0x16'),_0x32db79[_0x8b76('0x13')],_0x941a11);_0x541047(_0x4338b9['error'](0x1f4,_0x32db79[_0x8b76('0x13')]));});});};exports[_0x8b76('0x1e')]=function(_0xebafb0){return new Promise(function(_0x4ac2e0,_0x2a508e){return db['MailInteraction'][_0x8b76('0x1f')]({'where':_0xebafb0[_0x8b76('0x19')]?_0xebafb0[_0x8b76('0x19')][_0x8b76('0x1b')]||null:null})[_0x8b76('0xd')](function(_0xe30c0b){if(_0xe30c0b){return _0xe30c0b[_0x8b76('0x20')](_0xebafb0[_0x8b76('0x21')][_0x8b76('0x22')],_[_0x8b76('0x23')](_0xebafb0[_0x8b76('0x21')],['ids','id'])||{});}})[_0x8b76('0x24')](function(_0x91fe9e){logger[_0x8b76('0xe')](_0x8b76('0x25'),_0xebafb0);logger[_0x8b76('0x11')](_0x8b76('0x25'),_0xebafb0,JSON[_0x8b76('0x26')](_0x91fe9e));_0x4ac2e0(_0x91fe9e);})[_0x8b76('0x15')](function(_0x4d1ed0){logger[_0x8b76('0x12')](_0x8b76('0x25'),_0x4d1ed0['message'],_0xebafb0);_0x2a508e(_this['error'](0x1f4,_0x4d1ed0[_0x8b76('0x13')]));});});};
\ No newline at end of file
+var _0x9a6b=['defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','info','request\x20sent','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','MailInteraction,\x20%s,\x20%s','message','result','catch','UpdateMailInteraction','MailInteraction','update','options','raw','where','attributes','limit','debug','AddTagsToMailInteraction','find','addTags','body','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis'];(function(_0x575df4,_0x45f896){var _0x362a87=function(_0x53329a){while(--_0x53329a){_0x575df4['push'](_0x575df4['shift']());}};_0x362a87(++_0x45f896);}(_0x9a6b,0x77));var _0xb9a6=function(_0x41bb80,_0x52dec9){_0x41bb80=_0x41bb80-0x0;var _0x4945f5=_0x9a6b[_0x41bb80];return _0x4945f5;};'use strict';var _=require(_0xb9a6('0x0'));var util=require(_0xb9a6('0x1'));var moment=require(_0xb9a6('0x2'));var BPromise=require(_0xb9a6('0x3'));var rs=require(_0xb9a6('0x4'));var fs=require('fs');var Redis=require(_0xb9a6('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb9a6('0x6'));var logger=require('../../config/logger')(_0xb9a6('0x7'));var config=require(_0xb9a6('0x8'));var jayson=require(_0xb9a6('0x9'));var client=jayson[_0xb9a6('0xa')][_0xb9a6('0xb')]({'port':0x232a});config[_0xb9a6('0xc')]=_[_0xb9a6('0xd')](config[_0xb9a6('0xc')],{'host':_0xb9a6('0xe'),'port':0x18eb});var socket=require(_0xb9a6('0xf'))(new Redis(config['redis']));require(_0xb9a6('0x10'))[_0xb9a6('0x11')](socket);function respondWithRpcPromise(_0x57ddb8,_0x121da3,_0x13f166){return new BPromise(function(_0x296a91,_0x222d3b){return client['request'](_0x57ddb8,_0x13f166)['then'](function(_0x5012ee){logger[_0xb9a6('0x12')]('MailInteraction,\x20%s,\x20%s',_0x121da3,_0xb9a6('0x13'));logger['debug'](_0xb9a6('0x14'),_0x121da3,_0xb9a6('0x13'),JSON[_0xb9a6('0x15')](_0x5012ee));if(_0x5012ee[_0xb9a6('0x16')]){if(_0x5012ee[_0xb9a6('0x16')][_0xb9a6('0x17')]===0x1f4){logger[_0xb9a6('0x16')](_0xb9a6('0x18'),_0x121da3,_0x5012ee[_0xb9a6('0x16')]['message']);return _0x222d3b(_0x5012ee[_0xb9a6('0x16')][_0xb9a6('0x19')]);}logger[_0xb9a6('0x16')](_0xb9a6('0x18'),_0x121da3,_0x5012ee['error'][_0xb9a6('0x19')]);return _0x296a91(_0x5012ee[_0xb9a6('0x16')][_0xb9a6('0x19')]);}else{logger['info'](_0xb9a6('0x18'),_0x121da3,_0xb9a6('0x13'));_0x296a91(_0x5012ee[_0xb9a6('0x1a')][_0xb9a6('0x19')]);}})[_0xb9a6('0x1b')](function(_0x5c39a6){logger[_0xb9a6('0x16')](_0xb9a6('0x18'),_0x121da3,_0x5c39a6);_0x222d3b(_0x5c39a6);});});}exports[_0xb9a6('0x1c')]=function(_0x45e6c8){var _0x525841=this;return new Promise(function(_0x5d2374,_0x1cb89e){return db[_0xb9a6('0x1d')][_0xb9a6('0x1e')](_0x45e6c8['body'],{'raw':_0x45e6c8[_0xb9a6('0x1f')]?_0x45e6c8['options'][_0xb9a6('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45e6c8[_0xb9a6('0x1f')]?_0x45e6c8['options'][_0xb9a6('0x21')]||null:null,'attributes':_0x45e6c8['options']?_0x45e6c8['options'][_0xb9a6('0x22')]||null:null,'limit':_0x45e6c8[_0xb9a6('0x1f')]?_0x45e6c8[_0xb9a6('0x1f')][_0xb9a6('0x23')]||null:null})['then'](function(_0x193b3b){logger[_0xb9a6('0x12')](_0xb9a6('0x1c'),_0x45e6c8);logger[_0xb9a6('0x24')]('UpdateMailInteraction',_0x45e6c8,JSON[_0xb9a6('0x15')](_0x193b3b));_0x5d2374(_0x193b3b);})[_0xb9a6('0x1b')](function(_0x3ebdcd){logger[_0xb9a6('0x16')](_0xb9a6('0x1c'),_0x3ebdcd[_0xb9a6('0x19')],_0x45e6c8);_0x1cb89e(_0x525841[_0xb9a6('0x16')](0x1f4,_0x3ebdcd['message']));});});};exports[_0xb9a6('0x25')]=function(_0x4273bc){return new Promise(function(_0x4dd977,_0x429830){return db['MailInteraction'][_0xb9a6('0x26')]({'where':_0x4273bc['options']?_0x4273bc[_0xb9a6('0x1f')][_0xb9a6('0x21')]||null:null})['then'](function(_0x108043){if(_0x108043){return _0x108043[_0xb9a6('0x27')](_0x4273bc[_0xb9a6('0x28')][_0xb9a6('0x29')],_[_0xb9a6('0x2a')](_0x4273bc[_0xb9a6('0x28')],[_0xb9a6('0x29'),'id'])||{});}})['spread'](function(_0x441947){logger[_0xb9a6('0x12')](_0xb9a6('0x2b'),_0x4273bc);logger[_0xb9a6('0x24')]('AddTags',_0x4273bc,JSON[_0xb9a6('0x15')](_0x441947));_0x4dd977(_0x441947);})[_0xb9a6('0x1b')](function(_0x5dc86c){logger[_0xb9a6('0x16')](_0xb9a6('0x2b'),_0x5dc86c[_0xb9a6('0x19')],_0x4273bc);_0x429830(_this[_0xb9a6('0x16')](0x1f4,_0x5dc86c[_0xb9a6('0x19')]));});});};
\ No newline at end of file
index c88b87f..5db36b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1354=['register','mailInteraction:','./mailInteraction.events','remove','update','removeListener'];(function(_0x22a8c4,_0x51c09a){var _0x104c6d=function(_0x4d4d3d){while(--_0x4d4d3d){_0x22a8c4['push'](_0x22a8c4['shift']());}};_0x104c6d(++_0x51c09a);}(_0x1354,0x7a));var _0x4135=function(_0x484032,_0x11ce70){_0x484032=_0x484032-0x0;var _0xec7c10=_0x1354[_0x484032];return _0xec7c10;};'use strict';var MailInteractionEvents=require(_0x4135('0x0'));var events=['save',_0x4135('0x1'),_0x4135('0x2')];function createListener(_0x623120,_0x2d8451){return function(_0x5d9ed2){_0x2d8451['emit'](_0x623120,_0x5d9ed2);};}function removeListener(_0x313642,_0x9b1a81){return function(){MailInteractionEvents[_0x4135('0x3')](_0x313642,_0x9b1a81);};}exports[_0x4135('0x4')]=function(_0x63e752){for(var _0x4c6980=0x0,_0x3e2862=events['length'];_0x4c6980<_0x3e2862;_0x4c6980++){var _0x45f57f=events[_0x4c6980];var _0xda7619=createListener(_0x4135('0x5')+_0x45f57f,_0x63e752);MailInteractionEvents['on'](_0x45f57f,_0xda7619);}};
\ No newline at end of file
+var _0xe7c4=['update','emit','removeListener','mailInteraction:','./mailInteraction.events','remove'];(function(_0x3299d1,_0x545733){var _0x44356e=function(_0x52fd77){while(--_0x52fd77){_0x3299d1['push'](_0x3299d1['shift']());}};_0x44356e(++_0x545733);}(_0xe7c4,0x13c));var _0x4e7c=function(_0x3b9ca3,_0x3f24de){_0x3b9ca3=_0x3b9ca3-0x0;var _0x3369ce=_0xe7c4[_0x3b9ca3];return _0x3369ce;};'use strict';var MailInteractionEvents=require(_0x4e7c('0x0'));var events=['save',_0x4e7c('0x1'),_0x4e7c('0x2')];function createListener(_0x225fd5,_0x320c43){return function(_0x4cc367){_0x320c43[_0x4e7c('0x3')](_0x225fd5,_0x4cc367);};}function removeListener(_0x245976,_0x4726d0){return function(){MailInteractionEvents[_0x4e7c('0x4')](_0x245976,_0x4726d0);};}exports['register']=function(_0x242e0c){for(var _0x1d570a=0x0,_0x12e342=events['length'];_0x1d570a<_0x12e342;_0x1d570a++){var _0x27ce2b=events[_0x1d570a];var _0x213f75=createListener(_0x4e7c('0x5')+_0x27ce2b,_0x242e0c);MailInteractionEvents['on'](_0x27ce2b,_0x213f75);}};
\ No newline at end of file
index 8fc3c79..1983827 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2964=['fs-extra','../../components/auth/service','../../components/interaction/service','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','post','tracked','mailmessage:create','create','put','update','accept','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x3e50b9,_0x3089be){var _0x289a4e=function(_0x55e4b5){while(--_0x55e4b5){_0x3e50b9['push'](_0x3e50b9['shift']());}};_0x289a4e(++_0x3089be);}(_0x2964,0x108));var _0x4296=function(_0x2f2d91,_0x44eaa7){_0x2f2d91=_0x2f2d91-0x0;var _0x161f79=_0x2964[_0x2f2d91];return _0x161f79;};'use strict';var multer=require(_0x4296('0x0'));var util=require(_0x4296('0x1'));var path=require(_0x4296('0x2'));var timeout=require(_0x4296('0x3'));var express=require(_0x4296('0x4'));var router=express[_0x4296('0x5')]();var fs_extra=require(_0x4296('0x6'));var auth=require(_0x4296('0x7'));var interaction=require(_0x4296('0x8'));var config=require('../../config/environment');var controller=require(_0x4296('0x9'));router[_0x4296('0xa')]('/',auth[_0x4296('0xb')](),controller[_0x4296('0xc')]);router[_0x4296('0xa')](_0x4296('0xd'),auth['isAuthenticated'](),controller[_0x4296('0xe')]);router[_0x4296('0xa')](_0x4296('0xf'),auth[_0x4296('0xb')](),controller[_0x4296('0x10')]);router[_0x4296('0xa')](_0x4296('0x11'),auth[_0x4296('0xb')](),controller[_0x4296('0x12')]);router[_0x4296('0x13')]('/',auth[_0x4296('0xb')](),interaction[_0x4296('0x14')]('mail',_0x4296('0x15')),controller[_0x4296('0x16')]);router[_0x4296('0x17')](_0x4296('0xf'),auth[_0x4296('0xb')](),controller[_0x4296('0x18')]);router[_0x4296('0x17')]('/:id/accept',auth[_0x4296('0xb')](),controller[_0x4296('0x19')]);router[_0x4296('0x17')]('/:id/reject',auth[_0x4296('0xb')](),controller[_0x4296('0x1a')]);router[_0x4296('0x1b')]('/:id',auth[_0x4296('0xb')](),controller[_0x4296('0x1c')]);module[_0x4296('0x1d')]=router;
\ No newline at end of file
+var _0x73bd=['/:id','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./mailMessage.controller','index','get','/describe','isAuthenticated','describe','show','download','post','mail','mailmessage:create','put','/:id/accept','accept','/:id/reject','reject'];(function(_0xdfe86a,_0x3173e3){var _0x425b8d=function(_0x2f36aa){while(--_0x2f36aa){_0xdfe86a['push'](_0xdfe86a['shift']());}};_0x425b8d(++_0x3173e3);}(_0x73bd,0x6b));var _0xd73b=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x73bd[_0x4565bf];return _0x5610ba;};'use strict';var multer=require(_0xd73b('0x0'));var util=require('util');var path=require(_0xd73b('0x1'));var timeout=require(_0xd73b('0x2'));var express=require(_0xd73b('0x3'));var router=express[_0xd73b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd73b('0x5'));var interaction=require(_0xd73b('0x6'));var config=require('../../config/environment');var controller=require(_0xd73b('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xd73b('0x8')]);router[_0xd73b('0x9')](_0xd73b('0xa'),auth[_0xd73b('0xb')](),controller[_0xd73b('0xc')]);router[_0xd73b('0x9')]('/:id',auth[_0xd73b('0xb')](),controller[_0xd73b('0xd')]);router['get']('/:id/download',auth[_0xd73b('0xb')](),controller[_0xd73b('0xe')]);router[_0xd73b('0xf')]('/',auth[_0xd73b('0xb')](),interaction['tracked'](_0xd73b('0x10'),_0xd73b('0x11')),controller['create']);router[_0xd73b('0x12')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xd73b('0x12')](_0xd73b('0x13'),auth[_0xd73b('0xb')](),controller[_0xd73b('0x14')]);router[_0xd73b('0x12')](_0xd73b('0x15'),auth[_0xd73b('0xb')](),controller[_0xd73b('0x16')]);router['delete'](_0xd73b('0x17'),auth[_0xd73b('0xb')](),controller[_0xd73b('0x18')]);module[_0xd73b('0x19')]=router;
\ No newline at end of file
index 550888e..cf9a9ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x977f=['STRING','DATE','INTEGER','Email','Chat','sequelize','exports','TEXT','long','medium','BOOLEAN','ENUM','out'];(function(_0x56b034,_0xb96f9b){var _0x25f338=function(_0x4134cd){while(--_0x4134cd){_0x56b034['push'](_0x56b034['shift']());}};_0x25f338(++_0xb96f9b);}(_0x977f,0x94));var _0xf977=function(_0x3fbb92,_0x55bc02){_0x3fbb92=_0x3fbb92-0x0;var _0x5e7bea=_0x977f[_0x3fbb92];return _0x5e7bea;};'use strict';var Sequelize=require(_0xf977('0x0'));var _=require('lodash');module[_0xf977('0x1')]={'body':{'type':Sequelize[_0xf977('0x2')](_0xf977('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0xf977('0x4'))},'read':{'type':Sequelize[_0xf977('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0xf977('0x6')]('in',_0xf977('0x7')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xf977('0x8')](0x1fe)},'from':{'type':Sequelize[_0xf977('0x8')]},'to':{'type':Sequelize[_0xf977('0x2')](_0xf977('0x3'))},'cc':{'type':Sequelize[_0xf977('0x2')]('long')},'bcc':{'type':Sequelize[_0xf977('0x2')](_0xf977('0x3'))},'subject':{'type':Sequelize[_0xf977('0x2')]},'sentAt':{'type':Sequelize[_0xf977('0x9')]},'attach':{'type':Sequelize[_0xf977('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize[_0xf977('0x9')]},'originTo':{'type':Sequelize[_0xf977('0x2')]('long')},'originCc':{'type':Sequelize['TEXT'](_0xf977('0x3'))},'originChannel':{'type':Sequelize[_0xf977('0x6')](_0xf977('0xb'),_0xf977('0xc')),'defaultValue':_0xf977('0xb'),'allowNull':![]}};
\ No newline at end of file
+var _0xf60f=['exports','TEXT','medium','BOOLEAN','out','STRING','long','DATE','ENUM','Email','lodash'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf60f,0x128));var _0xff60=function(_0x44d730,_0x54fcc2){_0x44d730=_0x44d730-0x0;var _0x16faee=_0xf60f[_0x44d730];return _0x16faee;};'use strict';var Sequelize=require('sequelize');var _=require(_0xff60('0x0'));module[_0xff60('0x1')]={'body':{'type':Sequelize[_0xff60('0x2')]('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0xff60('0x2')](_0xff60('0x3'))},'read':{'type':Sequelize[_0xff60('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xff60('0x5')),'defaultValue':_0xff60('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0xff60('0x6')]},'to':{'type':Sequelize['TEXT'](_0xff60('0x7'))},'cc':{'type':Sequelize[_0xff60('0x2')](_0xff60('0x7'))},'bcc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize[_0xff60('0x2')]},'sentAt':{'type':Sequelize[_0xff60('0x8')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0xff60('0x4')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0xff60('0x2')]('long')},'originCc':{'type':Sequelize[_0xff60('0x2')](_0xff60('0x7'))},'originChannel':{'type':Sequelize[_0xff60('0x9')](_0xff60('0xa'),'Chat'),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
index df0f00f..418214b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x368c=['sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','length','find','body','params','describe','create','direction','out','secret','split','MailAccount','findOne','CmList','List','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','isNil','host','port','secure','auth','user','pass','service','attachments','server/files/attachments','ListId','List\x20not\x20found','SendMail','sendMail','messageId','format','accept','mail','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','get','MailInteraction','MailInteractionId','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','agent','fullname','internal','manual','channel','motionChannel','event','fromString','EventManager','acceptmessage','role','null','RejectMessage','rejectMessage','SELECT','contact','User','interface','rejectmessage','download','unix','toString','root','server','files','join','message-%s.eml','from','bcc','subject','createdAt','Attachments','headers','Bcc','existsSync','push','readFileSync','build','writeFileSync','eml-format','moment','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','client','http','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','status','undefined','count','offset','limit','json','update','end','sendStatus','stack','send','index','map','MailMessage','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0xdefbc3,_0x1ea49a){var _0x367798=function(_0x594678){while(--_0x594678){_0xdefbc3['push'](_0xdefbc3['shift']());}};_0x367798(++_0x1ea49a);}(_0x368c,0x1b4));var _0xc368=function(_0x54a656,_0x67a619){_0x54a656=_0x54a656-0x0;var _0x5198e5=_0x368c[_0x54a656];return _0x5198e5;};'use strict';var emlformat=require(_0xc368('0x0'));var moment=require(_0xc368('0x1'));var BPromise=require('bluebird');var util=require('util');var path=require(_0xc368('0x2'));var fs=require('fs');var _=require(_0xc368('0x3'));var Redis=require(_0xc368('0x4'));var htmlToText=require(_0xc368('0x5'));var qs=require(_0xc368('0x6'));var logger=require(_0xc368('0x7'))(_0xc368('0x8'));var interaction_log=require(_0xc368('0x7'))(_0xc368('0x9'));var config=require('../../config/environment');var db=require(_0xc368('0xa'))['db'];config[_0xc368('0xb')]=_[_0xc368('0xc')](config[_0xc368('0xb')],{'host':_0xc368('0xd'),'port':0x18eb});var socket=require(_0xc368('0xe'))(new Redis(config['redis']));require(_0xc368('0xf'))[_0xc368('0x10')](socket);var jayson=require(_0xc368('0x11'));var client=jayson[_0xc368('0x12')]['http']({'port':0x232c});var client9003=jayson['client'][_0xc368('0x13')]({'port':0x232b});var client9002=jayson[_0xc368('0x12')][_0xc368('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x4a9875,_0x42edb8,_0x2e9195,_0x2262f2){return new BPromise(function(_0xad9512,_0x4c80c3){var _0x722b5e=_0x2262f2||client;return _0x722b5e[_0xc368('0x14')](_0x4a9875,_0x2e9195)[_0xc368('0x15')](function(_0x3b0bbc){logger['info'](_0xc368('0x16'),_0x42edb8,_0xc368('0x17'));logger[_0xc368('0x18')](_0xc368('0x19'),_0x42edb8,_0xc368('0x17'),JSON[_0xc368('0x1a')](_0x3b0bbc));if(_0x3b0bbc[_0xc368('0x1b')]){if(_0x3b0bbc[_0xc368('0x1b')][_0xc368('0x1c')]===0x1f4){logger[_0xc368('0x1b')](_0xc368('0x16'),_0x42edb8,_0x3b0bbc[_0xc368('0x1b')][_0xc368('0x1d')]);return _0x4c80c3(_0x3b0bbc['error'][_0xc368('0x1d')]);}logger['error'](_0xc368('0x16'),_0x42edb8,_0x3b0bbc[_0xc368('0x1b')][_0xc368('0x1d')]);return _0xad9512(_0x3b0bbc[_0xc368('0x1b')][_0xc368('0x1d')]);}else{logger[_0xc368('0x1e')](_0xc368('0x16'),_0x42edb8,'request\x20sent');_0xad9512(_0x3b0bbc[_0xc368('0x1f')]['message']);}})[_0xc368('0x20')](function(_0x3e9444){logger['error'](_0xc368('0x16'),_0x42edb8,_0x3e9444);_0x4c80c3(_0x3e9444);});});}function respondWithResult(_0x3019b3,_0x4b4e3d){_0x4b4e3d=_0x4b4e3d||0xc8;return function(_0xd3be9a){if(_0xd3be9a){return _0x3019b3[_0xc368('0x21')](_0x4b4e3d)['json'](_0xd3be9a);}};}function respondWithFilteredResult(_0x2728ae,_0x1648ae){return function(_0x379444){if(_0x379444){var _0x5db6a0=typeof _0x1648ae['offset']==='undefined'&&typeof _0x1648ae['limit']===_0xc368('0x22');var _0x5663be=_0x379444[_0xc368('0x23')];var _0x2accb0=_0x5db6a0?0x0:_0x1648ae[_0xc368('0x24')];var _0x201608=_0x5db6a0?_0x379444[_0xc368('0x23')]:_0x1648ae[_0xc368('0x24')]+_0x1648ae[_0xc368('0x25')];var _0x584625;if(_0x201608>=_0x5663be){_0x201608=_0x5663be;_0x584625=0xc8;}else{_0x584625=0xce;}_0x2728ae[_0xc368('0x21')](_0x584625);return _0x2728ae['set']('Content-Range',_0x2accb0+'-'+_0x201608+'/'+_0x5663be)[_0xc368('0x26')](_0x379444);}return null;};}function saveUpdates(_0x134dd0){return function(_0x4e97cc){if(_0x4e97cc){return _0x4e97cc[_0xc368('0x27')](_0x134dd0)['then'](function(_0x175b5f){return _0x175b5f;});}return null;};}function removeEntity(_0x46050b){return function(_0x11a4ec){if(_0x11a4ec){return _0x11a4ec['destroy']()['then'](function(){_0x46050b['status'](0xcc)[_0xc368('0x28')]();});}};}function handleEntityNotFound(_0x4f196b){return function(_0x38e523){if(!_0x38e523){_0x4f196b[_0xc368('0x29')](0x194);}return _0x38e523;};}function handleError(_0x24c597,_0x465975){_0x465975=_0x465975||0x1f4;return function(_0x2cdc82){logger['error'](_0x2cdc82[_0xc368('0x2a')]);if(_0x2cdc82['name']){delete _0x2cdc82['name'];}_0x24c597[_0xc368('0x21')](_0x465975)[_0xc368('0x2b')](_0x2cdc82);};}exports[_0xc368('0x2c')]=function(_0x23dd6e,_0x4e010a){var _0x420f71={},_0x2e0144={},_0x161d9a={'count':0x0,'rows':[]};var _0x53b44f=_[_0xc368('0x2d')](db[_0xc368('0x2e')][_0xc368('0x2f')],function(_0xefd9a1){return{'name':_0xefd9a1[_0xc368('0x30')],'type':_0xefd9a1[_0xc368('0x31')][_0xc368('0x32')]};});_0x2e0144[_0xc368('0x33')]=_['map'](_0x53b44f,_0xc368('0x34'));_0x2e0144[_0xc368('0x35')]=_[_0xc368('0x36')](_0x23dd6e[_0xc368('0x35')]);_0x2e0144[_0xc368('0x37')]=_[_0xc368('0x38')](_0x2e0144[_0xc368('0x33')],_0x2e0144[_0xc368('0x35')]);_0x420f71[_0xc368('0x39')]=_[_0xc368('0x38')](_0x2e0144[_0xc368('0x33')],qs[_0xc368('0x3a')](_0x23dd6e[_0xc368('0x35')]['fields']));_0x420f71['attributes']=_0x420f71[_0xc368('0x39')]['length']?_0x420f71['attributes']:_0x2e0144[_0xc368('0x33')];if(!_0x23dd6e[_0xc368('0x35')][_0xc368('0x3b')](_0xc368('0x3c'))){_0x420f71[_0xc368('0x25')]=qs[_0xc368('0x25')](_0x23dd6e['query'][_0xc368('0x25')]);_0x420f71[_0xc368('0x24')]=qs[_0xc368('0x24')](_0x23dd6e['query'][_0xc368('0x24')]);}_0x420f71[_0xc368('0x3d')]=qs['sort'](_0x23dd6e['query'][_0xc368('0x3e')]);_0x420f71[_0xc368('0x3f')]=qs['filters'](_[_0xc368('0x40')](_0x23dd6e[_0xc368('0x35')],_0x2e0144[_0xc368('0x37')]),_0x53b44f);if(_0x23dd6e['query'][_0xc368('0x41')]){_0x420f71[_0xc368('0x3f')]=_['merge'](_0x420f71[_0xc368('0x3f')],{'$or':_[_0xc368('0x2d')](_0x53b44f,function(_0x4b2cad){if(_0x4b2cad[_0xc368('0x31')]!=='VIRTUAL'){var _0x19dcdc={};_0x19dcdc[_0x4b2cad[_0xc368('0x34')]]={'$like':'%'+_0x23dd6e[_0xc368('0x35')][_0xc368('0x41')]+'%'};return _0x19dcdc;}})});}_0x420f71=_[_0xc368('0x42')]({},_0x420f71,_0x23dd6e[_0xc368('0x43')]);var _0x3e20ea={'where':_0x420f71['where']};return db['MailMessage'][_0xc368('0x23')](_0x3e20ea)[_0xc368('0x15')](function(_0x209ab6){_0x161d9a[_0xc368('0x23')]=_0x209ab6;if(_0x23dd6e[_0xc368('0x35')][_0xc368('0x44')]){_0x420f71[_0xc368('0x45')]=[{'all':!![]}];}return db[_0xc368('0x2e')][_0xc368('0x46')](_0x420f71);})[_0xc368('0x15')](function(_0x2057ff){_0x161d9a[_0xc368('0x47')]=_0x2057ff;return _0x161d9a;})['then'](respondWithFilteredResult(_0x4e010a,_0x420f71))[_0xc368('0x20')](handleError(_0x4e010a,null));};exports[_0xc368('0x48')]=function(_0x163055,_0x13d08d){var _0x3179a4={'raw':!![],'where':{'id':_0x163055['params']['id']}},_0x6ece1f={};_0x6ece1f[_0xc368('0x33')]=_[_0xc368('0x36')](db[_0xc368('0x2e')]['rawAttributes']);_0x6ece1f[_0xc368('0x35')]=_[_0xc368('0x36')](_0x163055[_0xc368('0x35')]);_0x6ece1f[_0xc368('0x37')]=_[_0xc368('0x38')](_0x6ece1f[_0xc368('0x33')],_0x6ece1f[_0xc368('0x35')]);_0x3179a4[_0xc368('0x39')]=_['intersection'](_0x6ece1f[_0xc368('0x33')],qs[_0xc368('0x3a')](_0x163055[_0xc368('0x35')][_0xc368('0x3a')]));_0x3179a4['attributes']=_0x3179a4[_0xc368('0x39')][_0xc368('0x49')]?_0x3179a4['attributes']:_0x6ece1f[_0xc368('0x33')];if(_0x163055[_0xc368('0x35')][_0xc368('0x44')]){_0x3179a4['include']=[{'all':!![]}];}_0x3179a4=_['merge']({},_0x3179a4,_0x163055[_0xc368('0x43')]);return db[_0xc368('0x2e')][_0xc368('0x4a')](_0x3179a4)[_0xc368('0x15')](handleEntityNotFound(_0x13d08d,null))['then'](respondWithResult(_0x13d08d,null))[_0xc368('0x20')](handleError(_0x13d08d,null));};exports[_0xc368('0x27')]=function(_0x55bbe3,_0x1e9b60){if(_0x55bbe3[_0xc368('0x4b')]['id']){delete _0x55bbe3[_0xc368('0x4b')]['id'];}return db[_0xc368('0x2e')][_0xc368('0x4a')]({'where':{'id':_0x55bbe3[_0xc368('0x4c')]['id']}})[_0xc368('0x15')](handleEntityNotFound(_0x1e9b60,null))[_0xc368('0x15')](saveUpdates(_0x55bbe3['body'],null))[_0xc368('0x15')](respondWithResult(_0x1e9b60,null))[_0xc368('0x20')](handleError(_0x1e9b60,null));};exports['destroy']=function(_0x200b8b,_0x1dd784){return db['MailMessage']['find']({'where':{'id':_0x200b8b[_0xc368('0x4c')]['id']}})[_0xc368('0x15')](handleEntityNotFound(_0x1dd784,null))[_0xc368('0x15')](removeEntity(_0x1dd784,null))[_0xc368('0x20')](handleError(_0x1dd784,null));};exports[_0xc368('0x4d')]=function(_0x22e61e,_0x267ccf){return db[_0xc368('0x2e')]['describe']()[_0xc368('0x15')](respondWithResult(_0x267ccf,null))['catch'](handleError(_0x267ccf,null));};exports[_0xc368('0x4e')]=function(_0x3a6043,_0x2b6611){return db[_0xc368('0x2e')][_0xc368('0x4e')](_0x3a6043['body'])[_0xc368('0x15')](function(_0x10cc53){if(_0x10cc53){if(_0x10cc53[_0xc368('0x4f')]===_0xc368('0x50')&&!_0x10cc53[_0xc368('0x51')]){var _0x6681f7,_0x2f410e,_0x517152;if(_0x3a6043[_0xc368('0x4b')]['to']){_0x2f410e=_0x3a6043[_0xc368('0x4b')]['to'][_0xc368('0x52')](',')[0x0];}return db[_0xc368('0x53')][_0xc368('0x54')]({'where':{'id':_0x10cc53['MailAccountId']},'include':[{'model':db[_0xc368('0x55')],'as':_0xc368('0x56'),'include':[{'model':db[_0xc368('0x57')],'as':_0xc368('0x58'),'where':{'email':_0x2f410e},'limit':0x1,'order':[[_0xc368('0x59'),_0xc368('0x5a')]]}]},{'model':db[_0xc368('0x5b')],'as':'Smtp','raw':!![]}]})[_0xc368('0x15')](function(_0x2f346d){_0x6681f7=_0x2f346d;if(_0x6681f7&&_0x6681f7[_0xc368('0x5c')]){var _0x7db3aa={'tls':{'rejectUnauthorized':![]}};if(_[_0xc368('0x5d')](_0x6681f7[_0xc368('0x5c')]['service'])){_0x7db3aa[_0xc368('0x5e')]=_0x6681f7[_0xc368('0x5c')]['host'];_0x7db3aa[_0xc368('0x5f')]=_0x6681f7['Smtp'][_0xc368('0x5f')];_0x7db3aa[_0xc368('0x60')]=_0x6681f7[_0xc368('0x5c')][_0xc368('0x60')];if(_0x6681f7[_0xc368('0x5c')]['authentication']){_0x7db3aa[_0xc368('0x61')]={'user':_0x6681f7[_0xc368('0x5c')][_0xc368('0x62')],'pass':_0x6681f7[_0xc368('0x5c')][_0xc368('0x63')]};}}else{_0x7db3aa[_0xc368('0x64')]=_0x6681f7[_0xc368('0x5c')][_0xc368('0x64')];_0x7db3aa[_0xc368('0x61')]={'user':_0x6681f7[_0xc368('0x5c')]['user'],'pass':_0x6681f7[_0xc368('0x5c')][_0xc368('0x63')]};_0x7db3aa[_0xc368('0x60')]=_0x6681f7[_0xc368('0x5c')][_0xc368('0x60')];}if(_0x3a6043['body'][_0xc368('0x65')]&&_0x3a6043['body'][_0xc368('0x65')]['length']){for(var _0x5cf467=0x0;_0x5cf467<_0x3a6043[_0xc368('0x4b')]['attachments'][_0xc368('0x49')];_0x5cf467+=0x1){_0x3a6043[_0xc368('0x4b')][_0xc368('0x65')][_0x5cf467]={'filename':_0x3a6043[_0xc368('0x4b')][_0xc368('0x65')][_0x5cf467][_0xc368('0x34')],'path':path['join'](config['root'],_0xc368('0x66'),_0x3a6043[_0xc368('0x4b')][_0xc368('0x65')][_0x5cf467]['basename'])};}}_0x517152={'account':_0x7db3aa,'message':_0x3a6043[_0xc368('0x4b')]};return;}})['then'](function(){if(_0x6681f7['List']){if(_0x6681f7[_0xc368('0x56')][_0xc368('0x58')][_0xc368('0x49')]){return _0x6681f7[_0xc368('0x56')][_0xc368('0x58')][0x0];}else{return db[_0xc368('0x57')][_0xc368('0x4e')](_[_0xc368('0xc')](_0x3a6043[_0xc368('0x4b')],{'firstName':_0x3a6043['body']['to'],'email':_0x3a6043[_0xc368('0x4b')]['to'],'phone':_0x3a6043[_0xc368('0x4b')]['to'],'ListId':_0x6681f7[_0xc368('0x67')]}));}}else{throw new Error(_0xc368('0x68'));}})[_0xc368('0x15')](function(){if(_0x517152){return respondWithRpcPromise(_0xc368('0x69'),_0xc368('0x6a'),_0x517152,client9003)['then'](function(_0x138bb9){return _0x10cc53[_0xc368('0x27')]({'read':!![],'messageId':_0x138bb9[_0xc368('0x6b')],'sentAt':moment()[_0xc368('0x6c')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0xc368('0x20')](function(_0x873e37){logger[_0xc368('0x1b')]('%s',JSON[_0xc368('0x1a')](_0x873e37));return _0x10cc53;});}return _0x10cc53;});}return _0x10cc53;}})[_0xc368('0x15')](respondWithResult(_0x2b6611,0xc9))[_0xc368('0x20')](handleError(_0x2b6611,null));};exports[_0xc368('0x6d')]=function(_0xc7f5d3,_0x3ffa6d){var _0x58fe23={'agent':{},'channel':_0xc368('0x6e')};if(_0xc7f5d3[_0xc368('0x4b')]['id']){delete _0xc7f5d3[_0xc368('0x4b')]['id'];}_0xc7f5d3[_0xc368('0x4b')][_0xc368('0x6f')]=!![];_0xc7f5d3[_0xc368('0x4b')][_0xc368('0x70')]=moment()[_0xc368('0x6c')](_0xc368('0x71'));_0xc7f5d3['body']['UserId']=_0xc7f5d3[_0xc368('0x4b')][_0xc368('0x72')]||_0xc7f5d3[_0xc368('0x62')]['id'];_0x58fe23['agent']['id']=_0xc7f5d3[_0xc368('0x4b')][_0xc368('0x72')];return db['MailMessage'][_0xc368('0x4a')]({'where':{'id':_0xc7f5d3[_0xc368('0x4c')]['id'],'UserId':null}})[_0xc368('0x15')](handleEntityNotFound(_0x3ffa6d,null))[_0xc368('0x15')](saveUpdates(_0xc7f5d3['body'],null))[_0xc368('0x15')](function(_0x56d635){if(_0x56d635){_0x58fe23[_0xc368('0x1d')]=_0x56d635[_0xc368('0x73')]({'plain':!![]});return db[_0xc368('0x74')][_0xc368('0x4a')]({'where':{'id':_0x56d635[_0xc368('0x75')]}});}return null;})[_0xc368('0x15')](handleEntityNotFound(_0x3ffa6d,null))[_0xc368('0x15')](function(_0x264009){if(_0x264009){return _0x264009[_0xc368('0x27')]({'UserId':_0xc7f5d3[_0xc368('0x4b')][_0xc368('0x72')],'read1stAt':_[_0xc368('0x5d')](_0x264009['read1stAt'])?moment()[_0xc368('0x6c')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x4135b2){if(_0x4135b2){_0x58fe23[_0xc368('0x76')]=_0x4135b2[_0xc368('0x73')]({'plain':!![]});interaction_log[_0xc368('0x1e')](_0xc368('0x77'),_0xc7f5d3[_0xc368('0x62')]['id'],_0xc7f5d3[_0xc368('0x62')][_0xc368('0x34')],_0xc7f5d3['user']['role'],_0x58fe23['interaction']['id'],_0xc7f5d3['body']?JSON[_0xc368('0x1a')](_0xc7f5d3[_0xc368('0x4b')]):'null');return respondWithRpcPromise(_0xc368('0x78'),_0xc368('0x79'),_0x58fe23);}return null;})[_0xc368('0x15')](function(_0x3eca9a){var _0x376d86=_0xc368('0x7a')+_0x3eca9a[_0xc368('0x1d')][_0xc368('0x7b')];return db[_0xc368('0x7c')][_0xc368('0x35')](_0x376d86,{'type':db[_0xc368('0x7d')][_0xc368('0x7e')]['SELECT'],'raw':!![]})[_0xc368('0x15')](function(_0x14d8d0){return _0x14d8d0;});})['then'](function(_0x4c48d2){if(_0x4c48d2){_0x58fe23[_0xc368('0x1d')]['contact']=_0x4c48d2[0x0];if(!_0xc7f5d3[_0xc368('0x4b')]['UserId'])return;return db['User'][_0xc368('0x4a')]({'where':{'id':_0xc7f5d3['body'][_0xc368('0x72')],'role':_0xc368('0x7f')},'attributes':['id',_0xc368('0x34'),_0xc368('0x80'),'email',_0xc368('0x81')],'raw':!![]});}return null;})[_0xc368('0x15')](function(_0x60e3a1){if(!_0x60e3a1)return null;_0x58fe23[_0xc368('0x1d')]['agent']=_0x60e3a1;return _0x58fe23;})[_0xc368('0x15')](function(_0x5ee8b7){if(_0x5ee8b7){if(_0xc7f5d3[_0xc368('0x4b')][_0xc368('0x82')]){_0x58fe23[_0xc368('0x1d')]['interface']=util[_0xc368('0x6c')]('SIP/%s',_0xc7f5d3['user'][_0xc368('0x34')]);_0x58fe23['message']['channel']=_0x58fe23[_0xc368('0x83')];_0x58fe23[_0xc368('0x1d')][_0xc368('0x84')]=_0x58fe23[_0xc368('0x83')];_0x58fe23[_0xc368('0x1d')][_0xc368('0x85')]=_0xc368('0x6d');_0x58fe23[_0xc368('0x1d')][_0xc368('0x4b')]=htmlToText[_0xc368('0x86')](_0x58fe23['message'][_0xc368('0x4b')]);return respondWithRpcPromise('EventManager',_0xc368('0x87'),{'event':_0xc368('0x88'),'message':_0x58fe23[_0xc368('0x1d')]},client9002)[_0xc368('0x15')](function(){return _0x58fe23;});}return _0x58fe23;}return null;})[_0xc368('0x15')](respondWithResult(_0x3ffa6d,null))[_0xc368('0x20')](handleError(_0x3ffa6d,null));};exports['reject']=function(_0x4bbf28,_0x3714e6){var _0x2e00fb={'agent':{},'channel':'mail'};if(_0x4bbf28[_0xc368('0x4b')]['id']){delete _0x4bbf28[_0xc368('0x4b')]['id'];}_0x4bbf28['body'][_0xc368('0x72')]=_0x4bbf28[_0xc368('0x4b')]['UserId']||_0x4bbf28[_0xc368('0x62')]['id'];_0x2e00fb['agent']['id']=_0x4bbf28['body'][_0xc368('0x72')];return db[_0xc368('0x2e')]['find']({'where':{'id':_0x4bbf28['params']['id'],'UserId':null}})[_0xc368('0x15')](handleEntityNotFound(_0x3714e6,null))[_0xc368('0x15')](function(_0x3e72d6){if(_0x3e72d6){_0x2e00fb[_0xc368('0x1d')]=_0x3e72d6[_0xc368('0x73')]({'plain':!![]});return db[_0xc368('0x74')][_0xc368('0x4a')]({'where':{'id':_0x3e72d6[_0xc368('0x75')]}});}return null;})[_0xc368('0x15')](handleEntityNotFound(_0x3714e6,null))[_0xc368('0x15')](function(_0x46c20d){if(_0x46c20d){_0x2e00fb[_0xc368('0x76')]=_0x46c20d[_0xc368('0x73')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x4bbf28[_0xc368('0x62')]['id'],_0x4bbf28[_0xc368('0x62')]['name'],_0x4bbf28[_0xc368('0x62')][_0xc368('0x89')],_0x2e00fb[_0xc368('0x76')]['id'],_0x4bbf28['body']?JSON[_0xc368('0x1a')](_0x4bbf28[_0xc368('0x4b')]):_0xc368('0x8a'));return respondWithRpcPromise(_0xc368('0x8b'),_0xc368('0x8c'),_0x2e00fb);}return null;})['then'](function(_0x2bc4f9){var _0x257305=_0xc368('0x7a')+_0x2bc4f9[_0xc368('0x1d')][_0xc368('0x7b')];return db[_0xc368('0x7c')][_0xc368('0x35')](_0x257305,{'type':db[_0xc368('0x7d')][_0xc368('0x7e')][_0xc368('0x8d')],'raw':!![]})[_0xc368('0x15')](function(_0x2897c2){return _0x2897c2;});})[_0xc368('0x15')](function(_0xcce20b){if(_0xcce20b){_0x2e00fb[_0xc368('0x1d')][_0xc368('0x8e')]=_0xcce20b[0x0];if(!_0x4bbf28[_0xc368('0x4b')][_0xc368('0x72')])return;return db[_0xc368('0x8f')][_0xc368('0x4a')]({'where':{'id':_0x4bbf28[_0xc368('0x4b')]['UserId'],'role':_0xc368('0x7f')},'attributes':['id','name',_0xc368('0x80'),'email',_0xc368('0x81')],'raw':!![]});}return null;})[_0xc368('0x15')](function(_0x533067){if(!_0x533067)return null;_0x2e00fb[_0xc368('0x1d')][_0xc368('0x7f')]=_0x533067;return _0x2e00fb;})[_0xc368('0x15')](function(_0x496076){if(_0x496076){_0x496076[_0xc368('0x1d')][_0xc368('0x90')]=util[_0xc368('0x6c')]('SIP/%s',_0x4bbf28[_0xc368('0x62')]['name']);_0x496076[_0xc368('0x1d')][_0xc368('0x83')]=_0x2e00fb[_0xc368('0x83')];_0x496076['message'][_0xc368('0x84')]=_0x2e00fb[_0xc368('0x83')];_0x496076[_0xc368('0x1d')][_0xc368('0x85')]='reject';_0x496076[_0xc368('0x1d')][_0xc368('0x4b')]=htmlToText[_0xc368('0x86')](_0x2e00fb[_0xc368('0x1d')][_0xc368('0x4b')]);respondWithRpcPromise(_0xc368('0x87'),_0xc368('0x87'),{'event':_0xc368('0x91'),'message':_0x496076['message']},client9002);return _0x2e00fb;}return null;})[_0xc368('0x15')](respondWithResult(_0x3714e6,null))['catch'](handleError(_0x3714e6,null));};exports[_0xc368('0x92')]=function(_0x1e5b01,_0x6dcaa2){var _0x208f1d=moment()[_0xc368('0x93')]()[_0xc368('0x94')]();var _0x1864b0=path['join'](config[_0xc368('0x95')],_0xc368('0x96'),_0xc368('0x97'),'tmp');var _0x4d1fcc=path[_0xc368('0x98')](config[_0xc368('0x95')],_0xc368('0x96'),_0xc368('0x97'),_0xc368('0x65'));var _0x30a91d=util['format'](_0xc368('0x99'),_0x208f1d);return db['MailMessage'][_0xc368('0x4a')]({'where':{'id':_0x1e5b01['params']['id']},'attributes':['id',_0xc368('0x4b'),_0xc368('0x9a'),'to','cc',_0xc368('0x9b'),_0xc368('0x9c'),_0xc368('0x9d')],'include':_0x1e5b01['query'][_0xc368('0x65')]?[{'model':db['Attachment'],'as':_0xc368('0x9e')}]:undefined})[_0xc368('0x15')](handleEntityNotFound(_0x6dcaa2,null))['then'](function(_0xd339d8){if(_0xd339d8){var _0x4cfd69=_0xd339d8;var _0x4da879={'from':_0x4cfd69[_0xc368('0x9a')],'to':_0x4cfd69['to'],'subject':_0x4cfd69['subject'],'html':_0x4cfd69['body'],'headers':{'Date':moment(_0x4cfd69[_0xc368('0x9d')])[_0xc368('0x6c')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0xd339d8['cc']){_0x4da879[_0xc368('0x9f')]['Cc']=_0xd339d8['cc'];}if(_0xd339d8[_0xc368('0x9b')]){_0x4da879['headers'][_0xc368('0xa0')]=_0xd339d8[_0xc368('0x9b')];}return new BPromise(function(_0x8fa167,_0x54a01e){if(_0xd339d8[_0xc368('0x9e')]){for(var _0x566347=0x0;_0x566347<_0xd339d8[_0xc368('0x9e')][_0xc368('0x49')];_0x566347++){var _0x480157=_0xd339d8[_0xc368('0x9e')][_0x566347];var _0x28b4c7=path['join'](_0x4d1fcc,_0x480157['basename']);if(fs[_0xc368('0xa1')](_0x28b4c7)){_0x4da879[_0xc368('0x65')][_0xc368('0xa2')]({'name':_0x480157['name'],'contentType':_0x480157[_0xc368('0x31')],'data':fs[_0xc368('0xa3')](_0x28b4c7)});}}}emlformat[_0xc368('0xa4')](_0x4da879,function(_0x4a6e2c,_0x47f83c){if(_0x4a6e2c)return _0x54a01e(_0x4a6e2c);fs[_0xc368('0xa5')](path[_0xc368('0x98')](_0x1864b0,_0x30a91d),_0x47f83c);return _0x8fa167(_0x47f83c);});});}})['then'](function(_0x1e5b10){if(_0x1e5b10){return _0x6dcaa2[_0xc368('0x92')](path[_0xc368('0x98')](_0x1864b0,_0x30a91d),_0x30a91d,function(_0x513674){if(!_0x513674)fs['unlinkSync'](path[_0xc368('0x98')](_0x1864b0,_0x30a91d));});}})['catch'](handleError(_0x6dcaa2,null));};
\ No newline at end of file
+var _0x55ca=['offset','limit','Content-Range','then','destroy','end','sendStatus','stack','name','send','index','map','MailMessage','fieldName','type','key','model','query','keys','attributes','length','nolimit','sort','where','filters','pick','filter','merge','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','fields','include','options','find','update','body','describe','create','direction','out','secret','split','MailAccount','findOne','MailAccountId','CmList','List','Contacts','updatedAt','DESC','MailServerOut','Smtp','isNil','host','port','secure','authentication','user','pass','service','auth','attachments','join','root','server/files/attachments','basename','CmContact','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','readAt','UserId','get','MailInteractionId','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','User','agent','fullname','email','internal','manual','channel','event','fromString','EventManager','acceptmessage','reject','MailInteraction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','interface','SIP/%s','rejectmessage','unix','server','files','message-%s.eml','from','bcc','subject','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Attachments','existsSync','push','readFileSync','build','writeFileSync','download','eml-format','moment','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','defaults','redis','socket.io-emitter','jayson/promise','client','http','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','status','json','undefined','count'];(function(_0x5d496d,_0x48494f){var _0x1a20a8=function(_0x3e3315){while(--_0x3e3315){_0x5d496d['push'](_0x5d496d['shift']());}};_0x1a20a8(++_0x48494f);}(_0x55ca,0x126));var _0xa55c=function(_0xcfc88f,_0x239d01){_0xcfc88f=_0xcfc88f-0x0;var _0x20cfc0=_0x55ca[_0xcfc88f];return _0x20cfc0;};'use strict';var emlformat=require(_0xa55c('0x0'));var moment=require(_0xa55c('0x1'));var BPromise=require('bluebird');var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0xa55c('0x2'));var Redis=require(_0xa55c('0x3'));var htmlToText=require('html-to-text');var qs=require(_0xa55c('0x4'));var logger=require(_0xa55c('0x5'))(_0xa55c('0x6'));var interaction_log=require(_0xa55c('0x5'))(_0xa55c('0x7'));var config=require(_0xa55c('0x8'));var db=require(_0xa55c('0x9'))['db'];config['redis']=_[_0xa55c('0xa')](config[_0xa55c('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xa55c('0xc'))(new Redis(config[_0xa55c('0xb')]));require('./mailMessage.socket')['register'](socket);var jayson=require(_0xa55c('0xd'));var client=jayson[_0xa55c('0xe')][_0xa55c('0xf')]({'port':0x232c});var client9003=jayson[_0xa55c('0xe')][_0xa55c('0xf')]({'port':0x232b});var client9002=jayson[_0xa55c('0xe')][_0xa55c('0xf')]({'port':0x232a});function respondWithRpcPromise(_0x70c2de,_0x3998f7,_0x15eec8,_0x5d47ff){return new BPromise(function(_0x59d84a,_0x2a35be){var _0x576044=_0x5d47ff||client;return _0x576044['request'](_0x70c2de,_0x15eec8)['then'](function(_0x18ee85){logger[_0xa55c('0x10')](_0xa55c('0x11'),_0x3998f7,_0xa55c('0x12'));logger[_0xa55c('0x13')](_0xa55c('0x14'),_0x3998f7,'request\x20sent',JSON[_0xa55c('0x15')](_0x18ee85));if(_0x18ee85[_0xa55c('0x16')]){if(_0x18ee85[_0xa55c('0x16')][_0xa55c('0x17')]===0x1f4){logger[_0xa55c('0x16')](_0xa55c('0x11'),_0x3998f7,_0x18ee85[_0xa55c('0x16')][_0xa55c('0x18')]);return _0x2a35be(_0x18ee85[_0xa55c('0x16')]['message']);}logger[_0xa55c('0x16')](_0xa55c('0x11'),_0x3998f7,_0x18ee85[_0xa55c('0x16')][_0xa55c('0x18')]);return _0x59d84a(_0x18ee85[_0xa55c('0x16')][_0xa55c('0x18')]);}else{logger['info']('MailMessage,\x20%s,\x20%s',_0x3998f7,_0xa55c('0x12'));_0x59d84a(_0x18ee85[_0xa55c('0x19')][_0xa55c('0x18')]);}})['catch'](function(_0x383d92){logger[_0xa55c('0x16')]('MailMessage,\x20%s,\x20%s',_0x3998f7,_0x383d92);_0x2a35be(_0x383d92);});});}function respondWithResult(_0x187a87,_0x133096){_0x133096=_0x133096||0xc8;return function(_0x940f28){if(_0x940f28){return _0x187a87[_0xa55c('0x1a')](_0x133096)[_0xa55c('0x1b')](_0x940f28);}};}function respondWithFilteredResult(_0x49ed04,_0x1fc828){return function(_0x504c24){if(_0x504c24){var _0x5ba836=typeof _0x1fc828['offset']===_0xa55c('0x1c')&&typeof _0x1fc828['limit']===_0xa55c('0x1c');var _0x190757=_0x504c24[_0xa55c('0x1d')];var _0xf0e574=_0x5ba836?0x0:_0x1fc828[_0xa55c('0x1e')];var _0x170ba4=_0x5ba836?_0x504c24[_0xa55c('0x1d')]:_0x1fc828[_0xa55c('0x1e')]+_0x1fc828[_0xa55c('0x1f')];var _0x3cd152;if(_0x170ba4>=_0x190757){_0x170ba4=_0x190757;_0x3cd152=0xc8;}else{_0x3cd152=0xce;}_0x49ed04[_0xa55c('0x1a')](_0x3cd152);return _0x49ed04['set'](_0xa55c('0x20'),_0xf0e574+'-'+_0x170ba4+'/'+_0x190757)[_0xa55c('0x1b')](_0x504c24);}return null;};}function saveUpdates(_0x1c9f6b){return function(_0x906caa){if(_0x906caa){return _0x906caa['update'](_0x1c9f6b)[_0xa55c('0x21')](function(_0x22f6b6){return _0x22f6b6;});}return null;};}function removeEntity(_0x1b8388){return function(_0x201941){if(_0x201941){return _0x201941[_0xa55c('0x22')]()[_0xa55c('0x21')](function(){_0x1b8388['status'](0xcc)[_0xa55c('0x23')]();});}};}function handleEntityNotFound(_0x490b7d){return function(_0x35c9c2){if(!_0x35c9c2){_0x490b7d[_0xa55c('0x24')](0x194);}return _0x35c9c2;};}function handleError(_0x1cc53e,_0x223813){_0x223813=_0x223813||0x1f4;return function(_0x4d8416){logger[_0xa55c('0x16')](_0x4d8416[_0xa55c('0x25')]);if(_0x4d8416[_0xa55c('0x26')]){delete _0x4d8416[_0xa55c('0x26')];}_0x1cc53e[_0xa55c('0x1a')](_0x223813)[_0xa55c('0x27')](_0x4d8416);};}exports[_0xa55c('0x28')]=function(_0x24d44d,_0x2808e9){var _0xcbaf2e={},_0x197099={},_0x4eb7c4={'count':0x0,'rows':[]};var _0x54ca97=_[_0xa55c('0x29')](db[_0xa55c('0x2a')]['rawAttributes'],function(_0x30fadd){return{'name':_0x30fadd[_0xa55c('0x2b')],'type':_0x30fadd[_0xa55c('0x2c')][_0xa55c('0x2d')]};});_0x197099[_0xa55c('0x2e')]=_[_0xa55c('0x29')](_0x54ca97,_0xa55c('0x26'));_0x197099[_0xa55c('0x2f')]=_[_0xa55c('0x30')](_0x24d44d['query']);_0x197099['filters']=_['intersection'](_0x197099[_0xa55c('0x2e')],_0x197099[_0xa55c('0x2f')]);_0xcbaf2e[_0xa55c('0x31')]=_['intersection'](_0x197099[_0xa55c('0x2e')],qs['fields'](_0x24d44d[_0xa55c('0x2f')]['fields']));_0xcbaf2e[_0xa55c('0x31')]=_0xcbaf2e[_0xa55c('0x31')][_0xa55c('0x32')]?_0xcbaf2e['attributes']:_0x197099[_0xa55c('0x2e')];if(!_0x24d44d[_0xa55c('0x2f')]['hasOwnProperty'](_0xa55c('0x33'))){_0xcbaf2e[_0xa55c('0x1f')]=qs['limit'](_0x24d44d['query'][_0xa55c('0x1f')]);_0xcbaf2e['offset']=qs[_0xa55c('0x1e')](_0x24d44d[_0xa55c('0x2f')]['offset']);}_0xcbaf2e['order']=qs['sort'](_0x24d44d['query'][_0xa55c('0x34')]);_0xcbaf2e[_0xa55c('0x35')]=qs[_0xa55c('0x36')](_[_0xa55c('0x37')](_0x24d44d[_0xa55c('0x2f')],_0x197099['filters']),_0x54ca97);if(_0x24d44d[_0xa55c('0x2f')][_0xa55c('0x38')]){_0xcbaf2e[_0xa55c('0x35')]=_[_0xa55c('0x39')](_0xcbaf2e[_0xa55c('0x35')],{'$or':_[_0xa55c('0x29')](_0x54ca97,function(_0x554620){if(_0x554620[_0xa55c('0x2c')]!=='VIRTUAL'){var _0x57a972={};_0x57a972[_0x554620[_0xa55c('0x26')]]={'$like':'%'+_0x24d44d[_0xa55c('0x2f')]['filter']+'%'};return _0x57a972;}})});}_0xcbaf2e=_[_0xa55c('0x39')]({},_0xcbaf2e,_0x24d44d['options']);var _0x5f25f7={'where':_0xcbaf2e[_0xa55c('0x35')]};return db[_0xa55c('0x2a')][_0xa55c('0x1d')](_0x5f25f7)['then'](function(_0x1b2708){_0x4eb7c4[_0xa55c('0x1d')]=_0x1b2708;if(_0x24d44d['query'][_0xa55c('0x3a')]){_0xcbaf2e['include']=[{'all':!![]}];}return db[_0xa55c('0x2a')][_0xa55c('0x3b')](_0xcbaf2e);})['then'](function(_0x66d1de){_0x4eb7c4[_0xa55c('0x3c')]=_0x66d1de;return _0x4eb7c4;})['then'](respondWithFilteredResult(_0x2808e9,_0xcbaf2e))[_0xa55c('0x3d')](handleError(_0x2808e9,null));};exports[_0xa55c('0x3e')]=function(_0x204767,_0x59a6c8){var _0x334f52={'raw':!![],'where':{'id':_0x204767[_0xa55c('0x3f')]['id']}},_0x582901={};_0x582901[_0xa55c('0x2e')]=_[_0xa55c('0x30')](db['MailMessage'][_0xa55c('0x40')]);_0x582901[_0xa55c('0x2f')]=_['keys'](_0x204767[_0xa55c('0x2f')]);_0x582901[_0xa55c('0x36')]=_['intersection'](_0x582901[_0xa55c('0x2e')],_0x582901[_0xa55c('0x2f')]);_0x334f52['attributes']=_[_0xa55c('0x41')](_0x582901[_0xa55c('0x2e')],qs[_0xa55c('0x42')](_0x204767[_0xa55c('0x2f')]['fields']));_0x334f52[_0xa55c('0x31')]=_0x334f52['attributes'][_0xa55c('0x32')]?_0x334f52[_0xa55c('0x31')]:_0x582901[_0xa55c('0x2e')];if(_0x204767['query'][_0xa55c('0x3a')]){_0x334f52[_0xa55c('0x43')]=[{'all':!![]}];}_0x334f52=_['merge']({},_0x334f52,_0x204767[_0xa55c('0x44')]);return db[_0xa55c('0x2a')][_0xa55c('0x45')](_0x334f52)[_0xa55c('0x21')](handleEntityNotFound(_0x59a6c8,null))[_0xa55c('0x21')](respondWithResult(_0x59a6c8,null))[_0xa55c('0x3d')](handleError(_0x59a6c8,null));};exports[_0xa55c('0x46')]=function(_0x129626,_0x3c147b){if(_0x129626[_0xa55c('0x47')]['id']){delete _0x129626['body']['id'];}return db[_0xa55c('0x2a')][_0xa55c('0x45')]({'where':{'id':_0x129626[_0xa55c('0x3f')]['id']}})['then'](handleEntityNotFound(_0x3c147b,null))[_0xa55c('0x21')](saveUpdates(_0x129626[_0xa55c('0x47')],null))['then'](respondWithResult(_0x3c147b,null))[_0xa55c('0x3d')](handleError(_0x3c147b,null));};exports['destroy']=function(_0x2b6a0e,_0x228df4){return db[_0xa55c('0x2a')][_0xa55c('0x45')]({'where':{'id':_0x2b6a0e[_0xa55c('0x3f')]['id']}})['then'](handleEntityNotFound(_0x228df4,null))[_0xa55c('0x21')](removeEntity(_0x228df4,null))[_0xa55c('0x3d')](handleError(_0x228df4,null));};exports['describe']=function(_0x3929a6,_0x2291e0){return db[_0xa55c('0x2a')][_0xa55c('0x48')]()['then'](respondWithResult(_0x2291e0,null))['catch'](handleError(_0x2291e0,null));};exports[_0xa55c('0x49')]=function(_0x250dea,_0x3ca5b8){return db[_0xa55c('0x2a')]['create'](_0x250dea[_0xa55c('0x47')])['then'](function(_0x2742e4){if(_0x2742e4){if(_0x2742e4[_0xa55c('0x4a')]===_0xa55c('0x4b')&&!_0x2742e4[_0xa55c('0x4c')]){var _0xec640,_0x53b2f7,_0x1cb73b;if(_0x250dea['body']['to']){_0x53b2f7=_0x250dea[_0xa55c('0x47')]['to'][_0xa55c('0x4d')](',')[0x0];}return db[_0xa55c('0x4e')][_0xa55c('0x4f')]({'where':{'id':_0x2742e4[_0xa55c('0x50')]},'include':[{'model':db[_0xa55c('0x51')],'as':_0xa55c('0x52'),'include':[{'model':db['CmContact'],'as':_0xa55c('0x53'),'where':{'email':_0x53b2f7},'limit':0x1,'order':[[_0xa55c('0x54'),_0xa55c('0x55')]]}]},{'model':db[_0xa55c('0x56')],'as':_0xa55c('0x57'),'raw':!![]}]})['then'](function(_0xa72718){_0xec640=_0xa72718;if(_0xec640&&_0xec640[_0xa55c('0x57')]){var _0x28bac4={'tls':{'rejectUnauthorized':![]}};if(_[_0xa55c('0x58')](_0xec640[_0xa55c('0x57')]['service'])){_0x28bac4[_0xa55c('0x59')]=_0xec640[_0xa55c('0x57')][_0xa55c('0x59')];_0x28bac4[_0xa55c('0x5a')]=_0xec640[_0xa55c('0x57')]['port'];_0x28bac4[_0xa55c('0x5b')]=_0xec640['Smtp'][_0xa55c('0x5b')];if(_0xec640['Smtp'][_0xa55c('0x5c')]){_0x28bac4['auth']={'user':_0xec640[_0xa55c('0x57')][_0xa55c('0x5d')],'pass':_0xec640[_0xa55c('0x57')][_0xa55c('0x5e')]};}}else{_0x28bac4[_0xa55c('0x5f')]=_0xec640[_0xa55c('0x57')][_0xa55c('0x5f')];_0x28bac4[_0xa55c('0x60')]={'user':_0xec640[_0xa55c('0x57')][_0xa55c('0x5d')],'pass':_0xec640['Smtp'][_0xa55c('0x5e')]};_0x28bac4[_0xa55c('0x5b')]=_0xec640['Smtp'][_0xa55c('0x5b')];}if(_0x250dea[_0xa55c('0x47')][_0xa55c('0x61')]&&_0x250dea[_0xa55c('0x47')][_0xa55c('0x61')][_0xa55c('0x32')]){for(var _0x3cef1f=0x0;_0x3cef1f<_0x250dea[_0xa55c('0x47')]['attachments'][_0xa55c('0x32')];_0x3cef1f+=0x1){_0x250dea[_0xa55c('0x47')][_0xa55c('0x61')][_0x3cef1f]={'filename':_0x250dea[_0xa55c('0x47')][_0xa55c('0x61')][_0x3cef1f][_0xa55c('0x26')],'path':path[_0xa55c('0x62')](config[_0xa55c('0x63')],_0xa55c('0x64'),_0x250dea['body'][_0xa55c('0x61')][_0x3cef1f][_0xa55c('0x65')])};}}_0x1cb73b={'account':_0x28bac4,'message':_0x250dea[_0xa55c('0x47')]};return;}})[_0xa55c('0x21')](function(){if(_0xec640[_0xa55c('0x52')]){if(_0xec640[_0xa55c('0x52')][_0xa55c('0x53')][_0xa55c('0x32')]){return _0xec640[_0xa55c('0x52')][_0xa55c('0x53')][0x0];}else{return db[_0xa55c('0x66')]['create'](_[_0xa55c('0xa')](_0x250dea['body'],{'firstName':_0x250dea[_0xa55c('0x47')]['to'],'email':_0x250dea[_0xa55c('0x47')]['to'],'phone':_0x250dea[_0xa55c('0x47')]['to'],'ListId':_0xec640['ListId']}));}}else{throw new Error('List\x20not\x20found');}})[_0xa55c('0x21')](function(){if(_0x1cb73b){return respondWithRpcPromise(_0xa55c('0x67'),_0xa55c('0x68'),_0x1cb73b,client9003)[_0xa55c('0x21')](function(_0x4c7ee1){return _0x2742e4[_0xa55c('0x46')]({'read':!![],'messageId':_0x4c7ee1[_0xa55c('0x69')],'sentAt':moment()[_0xa55c('0x6a')](_0xa55c('0x6b'))});})[_0xa55c('0x3d')](function(_0x500968){logger['error']('%s',JSON[_0xa55c('0x15')](_0x500968));return _0x2742e4;});}return _0x2742e4;});}return _0x2742e4;}})[_0xa55c('0x21')](respondWithResult(_0x3ca5b8,0xc9))[_0xa55c('0x3d')](handleError(_0x3ca5b8,null));};exports[_0xa55c('0x6c')]=function(_0x1af9d5,_0x4b2032){var _0x14febc={'agent':{},'channel':_0xa55c('0x6d')};if(_0x1af9d5['body']['id']){delete _0x1af9d5[_0xa55c('0x47')]['id'];}_0x1af9d5[_0xa55c('0x47')][_0xa55c('0x6e')]=!![];_0x1af9d5['body'][_0xa55c('0x6f')]=moment()[_0xa55c('0x6a')](_0xa55c('0x6b'));_0x1af9d5[_0xa55c('0x47')][_0xa55c('0x70')]=_0x1af9d5['body'][_0xa55c('0x70')]||_0x1af9d5[_0xa55c('0x5d')]['id'];_0x14febc['agent']['id']=_0x1af9d5['body'][_0xa55c('0x70')];return db['MailMessage'][_0xa55c('0x45')]({'where':{'id':_0x1af9d5[_0xa55c('0x3f')]['id'],'UserId':null}})[_0xa55c('0x21')](handleEntityNotFound(_0x4b2032,null))[_0xa55c('0x21')](saveUpdates(_0x1af9d5[_0xa55c('0x47')],null))[_0xa55c('0x21')](function(_0x22b06f){if(_0x22b06f){_0x14febc[_0xa55c('0x18')]=_0x22b06f[_0xa55c('0x71')]({'plain':!![]});return db['MailInteraction'][_0xa55c('0x45')]({'where':{'id':_0x22b06f[_0xa55c('0x72')]}});}return null;})[_0xa55c('0x21')](handleEntityNotFound(_0x4b2032,null))[_0xa55c('0x21')](function(_0x4f0a26){if(_0x4f0a26){return _0x4f0a26[_0xa55c('0x46')]({'UserId':_0x1af9d5[_0xa55c('0x47')][_0xa55c('0x70')],'read1stAt':_[_0xa55c('0x58')](_0x4f0a26['read1stAt'])?moment()['format'](_0xa55c('0x6b')):undefined});}return null;})[_0xa55c('0x21')](function(_0x12e3a8){if(_0x12e3a8){_0x14febc[_0xa55c('0x73')]=_0x12e3a8['get']({'plain':!![]});interaction_log['info'](_0xa55c('0x74'),_0x1af9d5[_0xa55c('0x5d')]['id'],_0x1af9d5[_0xa55c('0x5d')][_0xa55c('0x26')],_0x1af9d5[_0xa55c('0x5d')][_0xa55c('0x75')],_0x14febc[_0xa55c('0x73')]['id'],_0x1af9d5['body']?JSON[_0xa55c('0x15')](_0x1af9d5['body']):_0xa55c('0x76'));return respondWithRpcPromise('AcceptMessage',_0xa55c('0x77'),_0x14febc);}return null;})[_0xa55c('0x21')](function(_0x441c11){var _0xcc187f=_0xa55c('0x78')+_0x441c11[_0xa55c('0x18')][_0xa55c('0x79')];return db[_0xa55c('0x7a')]['query'](_0xcc187f,{'type':db['Sequelize'][_0xa55c('0x7b')][_0xa55c('0x7c')],'raw':!![]})[_0xa55c('0x21')](function(_0x256db0){return _0x256db0;});})[_0xa55c('0x21')](function(_0x137728){if(_0x137728){_0x14febc['message'][_0xa55c('0x7d')]=_0x137728[0x0];if(!_0x1af9d5[_0xa55c('0x47')][_0xa55c('0x70')])return;return db[_0xa55c('0x7e')][_0xa55c('0x45')]({'where':{'id':_0x1af9d5[_0xa55c('0x47')][_0xa55c('0x70')],'role':_0xa55c('0x7f')},'attributes':['id','name',_0xa55c('0x80'),_0xa55c('0x81'),_0xa55c('0x82')],'raw':!![]});}return null;})[_0xa55c('0x21')](function(_0xa957ad){if(!_0xa957ad)return null;_0x14febc['message'][_0xa55c('0x7f')]=_0xa957ad;return _0x14febc;})[_0xa55c('0x21')](function(_0x58296a){if(_0x58296a){if(_0x1af9d5['body'][_0xa55c('0x83')]){_0x14febc[_0xa55c('0x18')]['interface']=util['format']('SIP/%s',_0x1af9d5['user'][_0xa55c('0x26')]);_0x14febc[_0xa55c('0x18')][_0xa55c('0x84')]=_0x14febc[_0xa55c('0x84')];_0x14febc[_0xa55c('0x18')][_0xa55c('0x85')]='accept';_0x14febc[_0xa55c('0x18')][_0xa55c('0x47')]=htmlToText[_0xa55c('0x86')](_0x14febc[_0xa55c('0x18')]['body']);return respondWithRpcPromise(_0xa55c('0x87'),_0xa55c('0x87'),{'event':_0xa55c('0x88'),'message':_0x14febc['message']},client9002)[_0xa55c('0x21')](function(){return _0x14febc;});}return _0x14febc;}return null;})['then'](respondWithResult(_0x4b2032,null))['catch'](handleError(_0x4b2032,null));};exports[_0xa55c('0x89')]=function(_0x413b45,_0x1e298d){var _0x249b0c={'agent':{},'channel':_0xa55c('0x6d')};if(_0x413b45[_0xa55c('0x47')]['id']){delete _0x413b45[_0xa55c('0x47')]['id'];}_0x413b45['body']['UserId']=_0x413b45[_0xa55c('0x47')][_0xa55c('0x70')]||_0x413b45[_0xa55c('0x5d')]['id'];_0x249b0c[_0xa55c('0x7f')]['id']=_0x413b45[_0xa55c('0x47')][_0xa55c('0x70')];return db[_0xa55c('0x2a')][_0xa55c('0x45')]({'where':{'id':_0x413b45[_0xa55c('0x3f')]['id'],'UserId':null}})[_0xa55c('0x21')](handleEntityNotFound(_0x1e298d,null))['then'](function(_0xc9c3fa){if(_0xc9c3fa){_0x249b0c[_0xa55c('0x18')]=_0xc9c3fa['get']({'plain':!![]});return db[_0xa55c('0x8a')]['find']({'where':{'id':_0xc9c3fa[_0xa55c('0x72')]}});}return null;})[_0xa55c('0x21')](handleEntityNotFound(_0x1e298d,null))[_0xa55c('0x21')](function(_0x314205){if(_0x314205){_0x249b0c[_0xa55c('0x73')]=_0x314205['get']({'plain':!![]});interaction_log[_0xa55c('0x10')](_0xa55c('0x8b'),_0x413b45[_0xa55c('0x5d')]['id'],_0x413b45[_0xa55c('0x5d')][_0xa55c('0x26')],_0x413b45[_0xa55c('0x5d')][_0xa55c('0x75')],_0x249b0c['interaction']['id'],_0x413b45['body']?JSON['stringify'](_0x413b45[_0xa55c('0x47')]):'null');return respondWithRpcPromise(_0xa55c('0x8c'),_0xa55c('0x8d'),_0x249b0c);}return null;})[_0xa55c('0x21')](function(_0x73162a){var _0x26ca90='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x73162a[_0xa55c('0x18')]['ContactId'];return db[_0xa55c('0x7a')][_0xa55c('0x2f')](_0x26ca90,{'type':db[_0xa55c('0x8e')][_0xa55c('0x7b')]['SELECT'],'raw':!![]})[_0xa55c('0x21')](function(_0x46f8ab){return _0x46f8ab;});})[_0xa55c('0x21')](function(_0x17a36c){if(_0x17a36c){_0x249b0c[_0xa55c('0x18')][_0xa55c('0x7d')]=_0x17a36c[0x0];if(!_0x413b45[_0xa55c('0x47')][_0xa55c('0x70')])return;return db['User'][_0xa55c('0x45')]({'where':{'id':_0x413b45[_0xa55c('0x47')][_0xa55c('0x70')],'role':_0xa55c('0x7f')},'attributes':['id',_0xa55c('0x26'),_0xa55c('0x80'),'email',_0xa55c('0x82')],'raw':!![]});}return null;})['then'](function(_0x3b9712){if(!_0x3b9712)return null;_0x249b0c['message'][_0xa55c('0x7f')]=_0x3b9712;return _0x249b0c;})[_0xa55c('0x21')](function(_0x17312b){if(_0x17312b){_0x17312b['message'][_0xa55c('0x8f')]=util[_0xa55c('0x6a')](_0xa55c('0x90'),_0x413b45['user'][_0xa55c('0x26')]);_0x17312b['message'][_0xa55c('0x84')]=_0x249b0c[_0xa55c('0x84')];_0x17312b['message'][_0xa55c('0x85')]='reject';_0x17312b[_0xa55c('0x18')][_0xa55c('0x47')]=htmlToText['fromString'](_0x249b0c[_0xa55c('0x18')][_0xa55c('0x47')]);respondWithRpcPromise('EventManager',_0xa55c('0x87'),{'event':_0xa55c('0x91'),'message':_0x17312b['message']},client9002);return _0x249b0c;}return null;})[_0xa55c('0x21')](respondWithResult(_0x1e298d,null))['catch'](handleError(_0x1e298d,null));};exports['download']=function(_0x28a26d,_0x3113b9){var _0x28a71e=moment()[_0xa55c('0x92')]()['toString']();var _0x307895=path['join'](config[_0xa55c('0x63')],'server','files','tmp');var _0x999114=path['join'](config['root'],_0xa55c('0x93'),_0xa55c('0x94'),_0xa55c('0x61'));var _0x4046ae=util[_0xa55c('0x6a')](_0xa55c('0x95'),_0x28a71e);return db[_0xa55c('0x2a')][_0xa55c('0x45')]({'where':{'id':_0x28a26d[_0xa55c('0x3f')]['id']},'attributes':['id',_0xa55c('0x47'),_0xa55c('0x96'),'to','cc',_0xa55c('0x97'),_0xa55c('0x98'),'createdAt'],'include':_0x28a26d[_0xa55c('0x2f')]['attachments']?[{'model':db['Attachment'],'as':'Attachments'}]:undefined})[_0xa55c('0x21')](handleEntityNotFound(_0x3113b9,null))['then'](function(_0xd5a27a){if(_0xd5a27a){var _0x55e447=_0xd5a27a;var _0x3169dd={'from':_0x55e447['from'],'to':_0x55e447['to'],'subject':_0x55e447['subject'],'html':_0x55e447[_0xa55c('0x47')],'headers':{'Date':moment(_0x55e447['createdAt'])['format'](_0xa55c('0x99'))},'attachments':[]};if(_0xd5a27a['cc']){_0x3169dd[_0xa55c('0x9a')]['Cc']=_0xd5a27a['cc'];}if(_0xd5a27a['bcc']){_0x3169dd[_0xa55c('0x9a')]['Bcc']=_0xd5a27a[_0xa55c('0x97')];}return new BPromise(function(_0x403dff,_0x1dcd8a){if(_0xd5a27a['Attachments']){for(var _0x50df67=0x0;_0x50df67<_0xd5a27a[_0xa55c('0x9b')][_0xa55c('0x32')];_0x50df67++){var _0x36064f=_0xd5a27a[_0xa55c('0x9b')][_0x50df67];var _0x4297bf=path[_0xa55c('0x62')](_0x999114,_0x36064f[_0xa55c('0x65')]);if(fs[_0xa55c('0x9c')](_0x4297bf)){_0x3169dd['attachments'][_0xa55c('0x9d')]({'name':_0x36064f[_0xa55c('0x26')],'contentType':_0x36064f[_0xa55c('0x2c')],'data':fs[_0xa55c('0x9e')](_0x4297bf)});}}}emlformat[_0xa55c('0x9f')](_0x3169dd,function(_0x1a01de,_0x2fa186){if(_0x1a01de)return _0x1dcd8a(_0x1a01de);fs[_0xa55c('0xa0')](path[_0xa55c('0x62')](_0x307895,_0x4046ae),_0x2fa186);return _0x403dff(_0x2fa186);});});}})['then'](function(_0x19ebd5){if(_0x19ebd5){return _0x3113b9[_0xa55c('0xa1')](path[_0xa55c('0x62')](_0x307895,_0x4046ae),_0x4046ae,function(_0x5ea9c8){if(!_0x5ea9c8)fs['unlinkSync'](path['join'](_0x307895,_0x4046ae));});}})[_0xa55c('0x3d')](handleError(_0x3113b9,null));};
\ No newline at end of file
index d3bec23..d7c6b27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02d9=['setMaxListeners','save','remove','emit','hasOwnProperty','../../mysqldb','MailMessage'];(function(_0x1a9479,_0x427a74){var _0x40964b=function(_0x26e6ea){while(--_0x26e6ea){_0x1a9479['push'](_0x1a9479['shift']());}};_0x40964b(++_0x427a74);}(_0x02d9,0x194));var _0x902d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x02d9[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var MailMessage=require(_0x902d('0x0'))['db'][_0x902d('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x902d('0x2')](0x0);var events={'afterCreate':_0x902d('0x3'),'afterUpdate':'update','afterDestroy':_0x902d('0x4')};function emitEvent(_0x2a4b41){return function(_0x3a4258,_0x40e5fc,_0x294f50){MailMessageEvents['emit'](_0x2a4b41+':'+_0x3a4258['id'],_0x3a4258);MailMessageEvents[_0x902d('0x5')](_0x2a4b41,_0x3a4258);_0x294f50(null);};}for(var e in events){if(events[_0x902d('0x6')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
+var _0x2941=['hasOwnProperty','events','../../mysqldb','setMaxListeners','update','emit'];(function(_0x5ed841,_0x26fbc7){var _0x5412c0=function(_0xc8a5eb){while(--_0xc8a5eb){_0x5ed841['push'](_0x5ed841['shift']());}};_0x5412c0(++_0x26fbc7);}(_0x2941,0x193));var _0x1294=function(_0x4201de,_0x43ac07){_0x4201de=_0x4201de-0x0;var _0x3fef97=_0x2941[_0x4201de];return _0x3fef97;};'use strict';var EventEmitter=require(_0x1294('0x0'));var MailMessage=require(_0x1294('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x1294('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x1294('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3f9c2a){return function(_0x50187d,_0x214686,_0x3be0d9){MailMessageEvents['emit'](_0x3f9c2a+':'+_0x50187d['id'],_0x50187d);MailMessageEvents[_0x1294('0x4')](_0x3f9c2a,_0x50187d);_0x3be0d9(null);};}for(var e in events){if(events[_0x1294('0x5')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
index 3e2904a..b428733 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64b1=['body','fromString','models','get','direction','toLowerCase','out','isNil','UserId','MailInteraction','then','catch','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','subject','FULLTEXT'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x64b1,0xed));var _0x164b=function(_0x3349e0,_0x28dedd){_0x3349e0=_0x3349e0-0x0;var _0x952ab3=_0x64b1[_0x3349e0];return _0x952ab3;};'use strict';var _=require(_0x164b('0x0'));var util=require('util');var logger=require(_0x164b('0x1'))('api');var moment=require(_0x164b('0x2'));var BPromise=require(_0x164b('0x3'));var rp=require(_0x164b('0x4'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require('path');var rimraf=require(_0x164b('0x5'));var config=require(_0x164b('0x6'));var attributes=require(_0x164b('0x7'));module[_0x164b('0x8')]=function(_0x1ad726,_0x1279ac){return _0x1ad726[_0x164b('0x9')](_0x164b('0xa'),attributes,{'tableName':_0x164b('0xb'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0x164b('0xc')]},{'name':'fti_mail_messages','fields':['plainBody',_0x164b('0xd')],'type':_0x164b('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3049e5,_0x121531,_0x411843){if(_0x3049e5[_0x164b('0xf')]){_0x3049e5['plainBody']=htmlToText[_0x164b('0x10')](_0x3049e5[_0x164b('0xf')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x411843(null,_0x121531);},'afterCreate':function(_0x13e385,_0x256b52,_0xf6cc8c){var _0xa3ff34=_0x1ad726[_0x164b('0x11')];var _0xd59009=_0x13e385[_0x164b('0x12')]({'plain':!![]});if(_0xd59009[_0x164b('0x13')][_0x164b('0x14')]()==='in'||_0xd59009[_0x164b('0x13')][_0x164b('0x14')]()===_0x164b('0x15')&&!_0xd59009['secret']&&!_[_0x164b('0x16')](_0xd59009[_0x164b('0x17')])){_0xa3ff34[_0x164b('0x18')]['findOne']({'where':{'id':_0xd59009['MailInteractionId']}})[_0x164b('0x19')](function(_0x3d491a){if(_0x3d491a){_0x3d491a['update']({'lastMsgAt':_0xd59009['createdAt'],'lastMsgDirection':_0xd59009[_0x164b('0x13')][_0x164b('0x14')]()});}})[_0x164b('0x1a')](function(_0x42052f){console['error'](_0x42052f);});}_0xf6cc8c();}},'charset':'utf8mb4','collate':_0x164b('0x1b')});};
\ No newline at end of file
+var _0xeb27=['define','mail_messages','messageId','plainBody','subject','body','models','get','direction','toLowerCase','out','secret','isNil','MailInteraction','then','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','html-to-text','path','rimraf'];(function(_0x244c2a,_0x3af6cd){var _0x1b378f=function(_0x5069f6){while(--_0x5069f6){_0x244c2a['push'](_0x244c2a['shift']());}};_0x1b378f(++_0x3af6cd);}(_0xeb27,0x152));var _0x7eb2=function(_0x457f07,_0x5ae617){_0x457f07=_0x457f07-0x0;var _0x11b093=_0xeb27[_0x457f07];return _0x11b093;};'use strict';var _=require(_0x7eb2('0x0'));var util=require(_0x7eb2('0x1'));var logger=require(_0x7eb2('0x2'))(_0x7eb2('0x3'));var moment=require(_0x7eb2('0x4'));var BPromise=require(_0x7eb2('0x5'));var rp=require(_0x7eb2('0x6'));var htmlToText=require(_0x7eb2('0x7'));var fs=require('fs');var path=require(_0x7eb2('0x8'));var rimraf=require(_0x7eb2('0x9'));var config=require('../../config/environment');var attributes=require('./mailMessage.attributes');module['exports']=function(_0x46ad47,_0x4a4e11){return _0x46ad47[_0x7eb2('0xa')]('MailMessage',attributes,{'tableName':_0x7eb2('0xb'),'paranoid':![],'indexes':[{'name':_0x7eb2('0xc'),'fields':[_0x7eb2('0xc')]},{'name':'fti_mail_messages','fields':[_0x7eb2('0xd'),_0x7eb2('0xe')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1304cf,_0x471591,_0x170de6){if(_0x1304cf[_0x7eb2('0xf')]){_0x1304cf[_0x7eb2('0xd')]=htmlToText['fromString'](_0x1304cf['body'],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x170de6(null,_0x471591);},'afterCreate':function(_0x4b8d61,_0x3cfb4a,_0x1f3ae1){var _0x54a8fd=_0x46ad47[_0x7eb2('0x10')];var _0x419408=_0x4b8d61[_0x7eb2('0x11')]({'plain':!![]});if(_0x419408[_0x7eb2('0x12')][_0x7eb2('0x13')]()==='in'||_0x419408[_0x7eb2('0x12')][_0x7eb2('0x13')]()===_0x7eb2('0x14')&&!_0x419408[_0x7eb2('0x15')]&&!_[_0x7eb2('0x16')](_0x419408['UserId'])){_0x54a8fd[_0x7eb2('0x17')]['findOne']({'where':{'id':_0x419408['MailInteractionId']}})[_0x7eb2('0x18')](function(_0x329035){if(_0x329035){_0x329035['update']({'lastMsgAt':_0x419408[_0x7eb2('0x19')],'lastMsgDirection':_0x419408[_0x7eb2('0x12')][_0x7eb2('0x13')]()});}})['catch'](function(_0x1f714a){console[_0x7eb2('0x1a')](_0x1f714a);});}_0x1f3ae1();}},'charset':_0x7eb2('0x1b'),'collate':_0x7eb2('0x1c')});};
\ No newline at end of file
index 117423b..a62ea24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f4=['CreateMailMessage','create','body','options','raw','debug','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x3efa79,_0xe4f028){var _0x53e599=function(_0x374807){while(--_0x374807){_0x3efa79['push'](_0x3efa79['shift']());}};_0x53e599(++_0xe4f028);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x4f4f55,_0x21d475){_0x4f4f55=_0x4f4f55-0x0;var _0x51c8a7=_0xd4f4[_0x4f4f55];return _0x51c8a7;};'use strict';var _=require(_0x4d4f('0x0'));var util=require(_0x4d4f('0x1'));var moment=require(_0x4d4f('0x2'));var BPromise=require(_0x4d4f('0x3'));var rs=require(_0x4d4f('0x4'));var fs=require('fs');var Redis=require(_0x4d4f('0x5'));var db=require(_0x4d4f('0x6'))['db'];var utils=require(_0x4d4f('0x7'));var logger=require(_0x4d4f('0x8'))(_0x4d4f('0x9'));var config=require(_0x4d4f('0xa'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x4d4f('0xb')]=_[_0x4d4f('0xc')](config[_0x4d4f('0xb')],{'host':_0x4d4f('0xd'),'port':0x18eb});var socket=require(_0x4d4f('0xe'))(new Redis(config[_0x4d4f('0xb')]));require(_0x4d4f('0xf'))[_0x4d4f('0x10')](socket);function respondWithRpcPromise(_0x385597,_0xba5200,_0x20db50){return new BPromise(function(_0x88b592,_0x128d39){return client[_0x4d4f('0x11')](_0x385597,_0x20db50)[_0x4d4f('0x12')](function(_0x28fb3e){logger[_0x4d4f('0x13')](_0x4d4f('0x14'),_0xba5200,'request\x20sent');logger['debug']('MailMessage,\x20%s,\x20%s,\x20%s',_0xba5200,_0x4d4f('0x15'),JSON[_0x4d4f('0x16')](_0x28fb3e));if(_0x28fb3e['error']){if(_0x28fb3e[_0x4d4f('0x17')][_0x4d4f('0x18')]===0x1f4){logger[_0x4d4f('0x17')]('MailMessage,\x20%s,\x20%s',_0xba5200,_0x28fb3e[_0x4d4f('0x17')][_0x4d4f('0x19')]);return _0x128d39(_0x28fb3e[_0x4d4f('0x17')]['message']);}logger[_0x4d4f('0x17')]('MailMessage,\x20%s,\x20%s',_0xba5200,_0x28fb3e[_0x4d4f('0x17')][_0x4d4f('0x19')]);return _0x88b592(_0x28fb3e[_0x4d4f('0x17')]['message']);}else{logger[_0x4d4f('0x13')](_0x4d4f('0x14'),_0xba5200,'request\x20sent');_0x88b592(_0x28fb3e['result']['message']);}})['catch'](function(_0x5eebec){logger[_0x4d4f('0x17')](_0x4d4f('0x14'),_0xba5200,_0x5eebec);_0x128d39(_0x5eebec);});});}exports[_0x4d4f('0x1a')]=function(_0x3566a5){var _0x5d7b1f=this;return new Promise(function(_0x5b2863,_0x1e1ae2){return db['MailMessage'][_0x4d4f('0x1b')](_0x3566a5[_0x4d4f('0x1c')],{'raw':_0x3566a5[_0x4d4f('0x1d')]?_0x3566a5[_0x4d4f('0x1d')][_0x4d4f('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x570520){logger[_0x4d4f('0x13')]('CreateMailMessage',_0x3566a5);logger[_0x4d4f('0x1f')](_0x4d4f('0x1a'),_0x3566a5,JSON[_0x4d4f('0x16')](_0x570520));_0x5b2863(_0x570520);})[_0x4d4f('0x20')](function(_0xf3f7a4){logger['error'](_0x4d4f('0x1a'),_0xf3f7a4[_0x4d4f('0x19')],_0x3566a5);_0x1e1ae2(_0x5d7b1f[_0x4d4f('0x17')](0x1f4,_0xf3f7a4[_0x4d4f('0x19')]));});});};
\ No newline at end of file
+var _0x958a=['./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateMailMessage','MailMessage','create','body','options','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x351876,_0x317334){var _0x43302b=function(_0x216209){while(--_0x216209){_0x351876['push'](_0x351876['shift']());}};_0x43302b(++_0x317334);}(_0x958a,0x128));var _0xa958=function(_0x182851,_0x3860b8){_0x182851=_0x182851-0x0;var _0x59d983=_0x958a[_0x182851];return _0x59d983;};'use strict';var _=require(_0xa958('0x0'));var util=require(_0xa958('0x1'));var moment=require('moment');var BPromise=require(_0xa958('0x2'));var rs=require(_0xa958('0x3'));var fs=require('fs');var Redis=require(_0xa958('0x4'));var db=require(_0xa958('0x5'))['db'];var utils=require(_0xa958('0x6'));var logger=require('../../config/logger')(_0xa958('0x7'));var config=require('../../config/environment');var jayson=require(_0xa958('0x8'));var client=jayson[_0xa958('0x9')][_0xa958('0xa')]({'port':0x232a});config[_0xa958('0xb')]=_[_0xa958('0xc')](config[_0xa958('0xb')],{'host':_0xa958('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xa958('0xe'))[_0xa958('0xf')](socket);function respondWithRpcPromise(_0x11f090,_0x44b66e,_0x37afa0){return new BPromise(function(_0x94caac,_0xebb1c6){return client[_0xa958('0x10')](_0x11f090,_0x37afa0)[_0xa958('0x11')](function(_0x250999){logger[_0xa958('0x12')](_0xa958('0x13'),_0x44b66e,_0xa958('0x14'));logger['debug']('MailMessage,\x20%s,\x20%s,\x20%s',_0x44b66e,'request\x20sent',JSON[_0xa958('0x15')](_0x250999));if(_0x250999[_0xa958('0x16')]){if(_0x250999[_0xa958('0x16')]['code']===0x1f4){logger[_0xa958('0x16')]('MailMessage,\x20%s,\x20%s',_0x44b66e,_0x250999['error']['message']);return _0xebb1c6(_0x250999[_0xa958('0x16')][_0xa958('0x17')]);}logger[_0xa958('0x16')](_0xa958('0x13'),_0x44b66e,_0x250999[_0xa958('0x16')][_0xa958('0x17')]);return _0x94caac(_0x250999[_0xa958('0x16')][_0xa958('0x17')]);}else{logger['info'](_0xa958('0x13'),_0x44b66e,'request\x20sent');_0x94caac(_0x250999[_0xa958('0x18')][_0xa958('0x17')]);}})['catch'](function(_0xe4129a){logger[_0xa958('0x16')](_0xa958('0x13'),_0x44b66e,_0xe4129a);_0xebb1c6(_0xe4129a);});});}exports[_0xa958('0x19')]=function(_0x2759ad){var _0x1f82aa=this;return new Promise(function(_0x56314b,_0x4a90c2){return db[_0xa958('0x1a')][_0xa958('0x1b')](_0x2759ad[_0xa958('0x1c')],{'raw':_0x2759ad['options']?_0x2759ad[_0xa958('0x1d')][_0xa958('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x28cf12){logger[_0xa958('0x12')]('CreateMailMessage',_0x2759ad);logger['debug'](_0xa958('0x19'),_0x2759ad,JSON[_0xa958('0x15')](_0x28cf12));_0x56314b(_0x28cf12);})['catch'](function(_0x25f461){logger[_0xa958('0x16')](_0xa958('0x19'),_0x25f461[_0xa958('0x17')],_0x2759ad);_0x4a90c2(_0x1f82aa[_0xa958('0x16')](0x1f4,_0x25f461[_0xa958('0x17')]));});});};
\ No newline at end of file
index ae95021..836b826 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae79=['removeListener','register','mailMessage:','./mailMessage.events','save','remove','update','emit'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0xae79,0x1d3));var _0x9ae7=function(_0x5aa70d,_0xa17184){_0x5aa70d=_0x5aa70d-0x0;var _0x1cbad0=_0xae79[_0x5aa70d];return _0x1cbad0;};'use strict';var MailMessageEvents=require(_0x9ae7('0x0'));var events=[_0x9ae7('0x1'),_0x9ae7('0x2'),_0x9ae7('0x3')];function createListener(_0x1f75bc,_0x2cc556){return function(_0x26b6a7){_0x2cc556[_0x9ae7('0x4')](_0x1f75bc,_0x26b6a7);};}function removeListener(_0x988f5e,_0x27817e){return function(){MailMessageEvents[_0x9ae7('0x5')](_0x988f5e,_0x27817e);};}exports[_0x9ae7('0x6')]=function(_0x3e98cf){for(var _0x396863=0x0,_0x409d34=events['length'];_0x396863<_0x409d34;_0x396863++){var _0x2761c2=events[_0x396863];var _0x47774e=createListener(_0x9ae7('0x7')+_0x2761c2,_0x3e98cf);MailMessageEvents['on'](_0x2761c2,_0x47774e);}};
\ No newline at end of file
+var _0x4f16=['save','remove','emit','register','length','./mailMessage.events'];(function(_0x3c0d54,_0x2af799){var _0x4d173a=function(_0x45c598){while(--_0x45c598){_0x3c0d54['push'](_0x3c0d54['shift']());}};_0x4d173a(++_0x2af799);}(_0x4f16,0x11f));var _0x64f1=function(_0x224f30,_0x4483c7){_0x224f30=_0x224f30-0x0;var _0x2a67ad=_0x4f16[_0x224f30];return _0x2a67ad;};'use strict';var MailMessageEvents=require(_0x64f1('0x0'));var events=[_0x64f1('0x1'),_0x64f1('0x2'),'update'];function createListener(_0x5d656a,_0x575de2){return function(_0x22ba91){_0x575de2[_0x64f1('0x3')](_0x5d656a,_0x22ba91);};}function removeListener(_0x4a171e,_0x147609){return function(){MailMessageEvents['removeListener'](_0x4a171e,_0x147609);};}exports[_0x64f1('0x4')]=function(_0x1ff13e){for(var _0x464433=0x0,_0x3dbc28=events[_0x64f1('0x5')];_0x464433<_0x3dbc28;_0x464433++){var _0x2904fa=events[_0x464433];var _0x465cc1=createListener('mailMessage:'+_0x2904fa,_0x1ff13e);MailMessageEvents['on'](_0x2904fa,_0x465cc1);}};
\ No newline at end of file
index 030663b..b34321f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70f7=['/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','delete','/:id','destroy','removeTeams','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','describe','get','show','getMembers'];(function(_0x482ee4,_0x4f17aa){var _0x2a3a0a=function(_0x5e9364){while(--_0x5e9364){_0x482ee4['push'](_0x482ee4['shift']());}};_0x2a3a0a(++_0x4f17aa);}(_0x70f7,0x14d));var _0x770f=function(_0x1bfe2b,_0x34856e){_0x1bfe2b=_0x1bfe2b-0x0;var _0x1477d4=_0x70f7[_0x1bfe2b];return _0x1477d4;};'use strict';var multer=require(_0x770f('0x0'));var util=require(_0x770f('0x1'));var path=require(_0x770f('0x2'));var timeout=require('connect-timeout');var express=require(_0x770f('0x3'));var router=express[_0x770f('0x4')]();var fs_extra=require(_0x770f('0x5'));var auth=require(_0x770f('0x6'));var interaction=require(_0x770f('0x7'));var config=require(_0x770f('0x8'));var controller=require('./mailQueue.controller');router['get']('/',auth[_0x770f('0x9')](),controller[_0x770f('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x770f('0xb')]);router[_0x770f('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x770f('0xd')]);router[_0x770f('0xc')]('/:id/members',auth['isAuthenticated'](),controller[_0x770f('0xe')]);router['get'](_0x770f('0xf'),auth[_0x770f('0x9')](),controller[_0x770f('0x10')]);router[_0x770f('0xc')](_0x770f('0x11'),auth[_0x770f('0x9')](),controller[_0x770f('0x12')]);router[_0x770f('0x13')]('/',auth[_0x770f('0x9')](),controller[_0x770f('0x14')]);router['post']('/:id/teams',auth[_0x770f('0x9')](),controller[_0x770f('0x15')]);router[_0x770f('0x13')]('/:id/users',auth[_0x770f('0x9')](),controller[_0x770f('0x16')]);router[_0x770f('0x17')]('/:id',auth[_0x770f('0x9')](),controller['update']);router[_0x770f('0x18')](_0x770f('0x19'),auth['isAuthenticated'](),controller[_0x770f('0x1a')]);router[_0x770f('0x18')](_0x770f('0xf'),auth[_0x770f('0x9')](),controller[_0x770f('0x1b')]);router[_0x770f('0x18')]('/:id/users',auth[_0x770f('0x9')](),controller['removeAgents']);module[_0x770f('0x1c')]=router;
\ No newline at end of file
+var _0xb4cf=['update','destroy','removeTeams','delete','/:id/users','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','isAuthenticated','index','describe','get','/:id','show','/:id/members','getTeams','post','create','/:id/teams','addTeams'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0xb4cf,0xef));var _0xfb4c=function(_0x268ff7,_0x14fc60){_0x268ff7=_0x268ff7-0x0;var _0x247f8c=_0xb4cf[_0x268ff7];return _0x247f8c;};'use strict';var multer=require(_0xfb4c('0x0'));var util=require(_0xfb4c('0x1'));var path=require(_0xfb4c('0x2'));var timeout=require(_0xfb4c('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xfb4c('0x4'));var auth=require(_0xfb4c('0x5'));var interaction=require(_0xfb4c('0x6'));var config=require(_0xfb4c('0x7'));var controller=require(_0xfb4c('0x8'));router['get']('/',auth[_0xfb4c('0x9')](),controller[_0xfb4c('0xa')]);router['get']('/describe',auth[_0xfb4c('0x9')](),controller[_0xfb4c('0xb')]);router[_0xfb4c('0xc')](_0xfb4c('0xd'),auth[_0xfb4c('0x9')](),controller[_0xfb4c('0xe')]);router[_0xfb4c('0xc')](_0xfb4c('0xf'),auth[_0xfb4c('0x9')](),controller['getMembers']);router[_0xfb4c('0xc')]('/:id/teams',auth['isAuthenticated'](),controller[_0xfb4c('0x10')]);router[_0xfb4c('0xc')]('/:id/users',auth[_0xfb4c('0x9')](),controller['getAgents']);router[_0xfb4c('0x11')]('/',auth[_0xfb4c('0x9')](),controller[_0xfb4c('0x12')]);router[_0xfb4c('0x11')](_0xfb4c('0x13'),auth[_0xfb4c('0x9')](),controller[_0xfb4c('0x14')]);router[_0xfb4c('0x11')]('/:id/users',auth[_0xfb4c('0x9')](),controller['addAgents']);router['put'](_0xfb4c('0xd'),auth['isAuthenticated'](),controller[_0xfb4c('0x15')]);router['delete']('/:id',auth[_0xfb4c('0x9')](),controller[_0xfb4c('0x16')]);router['delete'](_0xfb4c('0x13'),auth[_0xfb4c('0x9')](),controller[_0xfb4c('0x17')]);router[_0xfb4c('0x18')](_0xfb4c('0x19'),auth['isAuthenticated'](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index a529f95..318c442 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b94=['exports','STRING','INTEGER','ENUM','rrmemory','beepall','sequelize'];(function(_0x104a0f,_0x363a29){var _0x116e42=function(_0x4f5c2a){while(--_0x4f5c2a){_0x104a0f['push'](_0x104a0f['shift']());}};_0x116e42(++_0x363a29);}(_0x0b94,0xdf));var _0x40b9=function(_0xab7808,_0x2c0ac5){_0xab7808=_0xab7808-0x0;var _0x55a45a=_0x0b94[_0xab7808];return _0x55a45a;};'use strict';var Sequelize=require(_0x40b9('0x0'));module[_0x40b9('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x40b9('0x2')]},'timeout':{'type':Sequelize[_0x40b9('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x40b9('0x4')](_0x40b9('0x5'),_0x40b9('0x6'),'roundrobin')}};
\ No newline at end of file
+var _0xcbf0=['rrmemory','beepall','roundrobin','exports','STRING','ENUM'];(function(_0x1fc5dc,_0x3065cd){var _0x2fab18=function(_0x5dbb92){while(--_0x5dbb92){_0x1fc5dc['push'](_0x1fc5dc['shift']());}};_0x2fab18(++_0x3065cd);}(_0xcbf0,0x81));var _0x0cbf=function(_0x5dc246,_0x17fbee){_0x5dc246=_0x5dc246-0x0;var _0x3271be=_0xcbf0[_0x5dc246];return _0x3271be;};'use strict';var Sequelize=require('sequelize');module[_0x0cbf('0x0')]={'name':{'type':Sequelize[_0x0cbf('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x0cbf('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x0cbf('0x2')](_0x0cbf('0x3'),_0x0cbf('0x4'),_0x0cbf('0x5'))}};
\ No newline at end of file
index 134ae53..57054bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe23=['removeTeams','tq.TeamId','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','SELECT','TeamId','includes','all','union','value','transaction','isEmpty','removeAgents','forEach','addAgents','omit','spread','isArray','userMailQueue:remove','getAgents','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','register','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','get','MailQueues','UserProfileResource','end','name','send','index','map','MailQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','intersection','merge','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserMailQueue','hasOwnProperty','nolimit','order','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','addTeams','ids','Team','online','voicePause','interface','Agents','each','findOrCreate','emit','userMailQueue:save'];(function(_0x4eb713,_0x41293d){var _0x4bc1f7=function(_0x49ad95){while(--_0x49ad95){_0x4eb713['push'](_0x4eb713['shift']());}};_0x4bc1f7(++_0x41293d);}(_0xbe23,0x1c2));var _0x3be2=function(_0x22895a,_0x1aa9c3){_0x22895a=_0x22895a-0x0;var _0x5cee51=_0xbe23[_0x22895a];return _0x5cee51;};'use strict';var emlformat=require(_0x3be2('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3be2('0x1'));var rp=require(_0x3be2('0x2'));var moment=require(_0x3be2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3be2('0x4'));var util=require(_0x3be2('0x5'));var path=require(_0x3be2('0x6'));var sox=require(_0x3be2('0x7'));var csv=require(_0x3be2('0x8'));var ejs=require(_0x3be2('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3be2('0xa'));var crypto=require(_0x3be2('0xb'));var jsforce=require(_0x3be2('0xc'));var deskjs=require(_0x3be2('0xd'));var toCsv=require('to-csv');var querystring=require(_0x3be2('0xe'));var Papa=require(_0x3be2('0xf'));var Redis=require(_0x3be2('0x10'));var authService=require(_0x3be2('0x11'));var qs=require(_0x3be2('0x12'));var as=require(_0x3be2('0x13'));var hardwareService=require(_0x3be2('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x3be2('0x15'));var licenseUtil=require(_0x3be2('0x16'));var db=require('../../mysqldb')['db'];config[_0x3be2('0x17')]=_[_0x3be2('0x18')](config[_0x3be2('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x3be2('0x19'))(new Redis(config['redis']));require('./mailQueue.socket')[_0x3be2('0x1a')](socket);function respondWithStatusCode(_0x176389,_0x5d0123){_0x5d0123=_0x5d0123||0xcc;return function(_0x3179ae){if(_0x3179ae){return _0x176389['sendStatus'](_0x5d0123);}return _0x176389[_0x3be2('0x1b')](_0x5d0123)['end']();};}function respondWithResult(_0x8fae14,_0xdab76c){_0xdab76c=_0xdab76c||0xc8;return function(_0x34a71e){if(_0x34a71e){return _0x8fae14[_0x3be2('0x1b')](_0xdab76c)[_0x3be2('0x1c')](_0x34a71e);}};}function respondWithFilteredResult(_0x33a9ef,_0x26d86e){return function(_0x2fe4eb){if(_0x2fe4eb){var _0x3b4c5f=typeof _0x26d86e[_0x3be2('0x1d')]===_0x3be2('0x1e')&&typeof _0x26d86e[_0x3be2('0x1f')]===_0x3be2('0x1e');var _0x4beb76=_0x2fe4eb[_0x3be2('0x20')];var _0xf86328=_0x3b4c5f?0x0:_0x26d86e[_0x3be2('0x1d')];var _0x1c628e=_0x3b4c5f?_0x2fe4eb[_0x3be2('0x20')]:_0x26d86e[_0x3be2('0x1d')]+_0x26d86e[_0x3be2('0x1f')];var _0x3f7780;if(_0x1c628e>=_0x4beb76){_0x1c628e=_0x4beb76;_0x3f7780=0xc8;}else{_0x3f7780=0xce;}_0x33a9ef['status'](_0x3f7780);return _0x33a9ef[_0x3be2('0x21')](_0x3be2('0x22'),_0xf86328+'-'+_0x1c628e+'/'+_0x4beb76)[_0x3be2('0x1c')](_0x2fe4eb);}return null;};}function patchUpdates(_0xd2c980){return function(_0x4109b5){try{jsonpatch['apply'](_0x4109b5,_0xd2c980,!![]);}catch(_0x44bf46){return BPromise[_0x3be2('0x23')](_0x44bf46);}return _0x4109b5[_0x3be2('0x24')]();};}function saveUpdates(_0x3e6f86,_0x2b8b5b){return function(_0xc1417b){if(_0xc1417b){return _0xc1417b[_0x3be2('0x25')](_0x3e6f86)[_0x3be2('0x26')](function(_0x554c83){return _0x554c83;});}return null;};}function removeEntity(_0x4ae344,_0x53157b){return function(_0x28f05d){if(_0x28f05d){return _0x28f05d[_0x3be2('0x27')]()[_0x3be2('0x26')](function(){var _0xf22677=_0x28f05d[_0x3be2('0x28')]({'plain':!![]});var _0x38c9fc=_0x3be2('0x29');return db[_0x3be2('0x2a')][_0x3be2('0x27')]({'where':{'type':_0x38c9fc,'resourceId':_0xf22677['id']}})[_0x3be2('0x26')](function(){return _0x28f05d;});})[_0x3be2('0x26')](function(){_0x4ae344[_0x3be2('0x1b')](0xcc)[_0x3be2('0x2b')]();});}};}function handleEntityNotFound(_0x360922,_0x517913){return function(_0x2cc1e6){if(!_0x2cc1e6){_0x360922['sendStatus'](0x194);}return _0x2cc1e6;};}function handleError(_0x8807ee,_0x2b7d78){_0x2b7d78=_0x2b7d78||0x1f4;return function(_0xbb8c02){logger['error'](_0xbb8c02['stack']);if(_0xbb8c02[_0x3be2('0x2c')]){delete _0xbb8c02[_0x3be2('0x2c')];}_0x8807ee[_0x3be2('0x1b')](_0x2b7d78)[_0x3be2('0x2d')](_0xbb8c02);};}exports[_0x3be2('0x2e')]=function(_0x51e01b,_0x259777){var _0x14406c={},_0x3fa53a={},_0x1cc687={'count':0x0,'rows':[]};var _0x2a5704=_[_0x3be2('0x2f')](db[_0x3be2('0x30')][_0x3be2('0x31')],function(_0xd48ae1){return{'name':_0xd48ae1[_0x3be2('0x32')],'type':_0xd48ae1[_0x3be2('0x33')][_0x3be2('0x34')]};});_0x3fa53a[_0x3be2('0x35')]=_[_0x3be2('0x2f')](_0x2a5704,_0x3be2('0x2c'));_0x3fa53a[_0x3be2('0x36')]=_[_0x3be2('0x37')](_0x51e01b[_0x3be2('0x36')]);_0x3fa53a[_0x3be2('0x38')]=_['intersection'](_0x3fa53a['model'],_0x3fa53a[_0x3be2('0x36')]);_0x14406c[_0x3be2('0x39')]=_['intersection'](_0x3fa53a[_0x3be2('0x35')],qs['fields'](_0x51e01b['query'][_0x3be2('0x3a')]));_0x14406c[_0x3be2('0x39')]=_0x14406c[_0x3be2('0x39')][_0x3be2('0x3b')]?_0x14406c['attributes']:_0x3fa53a[_0x3be2('0x35')];if(!_0x51e01b[_0x3be2('0x36')]['hasOwnProperty']('nolimit')){_0x14406c['limit']=qs[_0x3be2('0x1f')](_0x51e01b[_0x3be2('0x36')][_0x3be2('0x1f')]);_0x14406c[_0x3be2('0x1d')]=qs[_0x3be2('0x1d')](_0x51e01b[_0x3be2('0x36')][_0x3be2('0x1d')]);}_0x14406c['order']=qs['sort'](_0x51e01b[_0x3be2('0x36')][_0x3be2('0x3c')]);_0x14406c[_0x3be2('0x3d')]=qs[_0x3be2('0x38')](_[_0x3be2('0x3e')](_0x51e01b[_0x3be2('0x36')],_0x3fa53a[_0x3be2('0x38')]),_0x2a5704);if(_0x51e01b[_0x3be2('0x36')][_0x3be2('0x3f')]){_0x14406c[_0x3be2('0x3d')]=_['merge'](_0x14406c[_0x3be2('0x3d')],{'$or':_[_0x3be2('0x2f')](_0x2a5704,function(_0x4d2d58){if(_0x4d2d58[_0x3be2('0x33')]!==_0x3be2('0x40')){var _0x21ffed={};_0x21ffed[_0x4d2d58['name']]={'$like':'%'+_0x51e01b[_0x3be2('0x36')][_0x3be2('0x3f')]+'%'};return _0x21ffed;}})});}_0x14406c=_['merge']({},_0x14406c,_0x51e01b[_0x3be2('0x41')]);var _0x244789={'where':_0x14406c[_0x3be2('0x3d')]};return db[_0x3be2('0x30')][_0x3be2('0x20')](_0x244789)['then'](function(_0x3e472f){_0x1cc687[_0x3be2('0x20')]=_0x3e472f;if(_0x51e01b[_0x3be2('0x36')][_0x3be2('0x42')]){_0x14406c[_0x3be2('0x43')]=[{'all':!![]}];}return db[_0x3be2('0x30')][_0x3be2('0x44')](_0x14406c);})[_0x3be2('0x26')](function(_0x394434){_0x1cc687[_0x3be2('0x45')]=_0x394434;return _0x1cc687;})['then'](respondWithFilteredResult(_0x259777,_0x14406c))[_0x3be2('0x46')](handleError(_0x259777,null));};exports['show']=function(_0x1028ee,_0x30e316){var _0x1e710b={'raw':!![],'where':{'id':_0x1028ee[_0x3be2('0x47')]['id']}},_0x2ddfeb={};_0x2ddfeb[_0x3be2('0x35')]=_[_0x3be2('0x37')](db[_0x3be2('0x30')]['rawAttributes']);_0x2ddfeb[_0x3be2('0x36')]=_[_0x3be2('0x37')](_0x1028ee[_0x3be2('0x36')]);_0x2ddfeb[_0x3be2('0x38')]=_[_0x3be2('0x48')](_0x2ddfeb[_0x3be2('0x35')],_0x2ddfeb['query']);_0x1e710b[_0x3be2('0x39')]=_[_0x3be2('0x48')](_0x2ddfeb[_0x3be2('0x35')],qs['fields'](_0x1028ee[_0x3be2('0x36')]['fields']));_0x1e710b['attributes']=_0x1e710b['attributes'][_0x3be2('0x3b')]?_0x1e710b['attributes']:_0x2ddfeb['model'];if(_0x1028ee['query'][_0x3be2('0x42')]){_0x1e710b[_0x3be2('0x43')]=[{'all':!![]}];}_0x1e710b=_[_0x3be2('0x49')]({},_0x1e710b,_0x1028ee[_0x3be2('0x41')]);return db[_0x3be2('0x30')][_0x3be2('0x4a')](_0x1e710b)['then'](handleEntityNotFound(_0x30e316,null))['then'](respondWithResult(_0x30e316,null))[_0x3be2('0x46')](handleError(_0x30e316,null));};exports['create']=function(_0x527443,_0x1797f9){return db[_0x3be2('0x30')][_0x3be2('0x4b')](_0x527443[_0x3be2('0x4c')],{})[_0x3be2('0x26')](function(_0x1d75a4){var _0x2d877d=_0x527443[_0x3be2('0x4d')]['get']({'plain':!![]});if(!_0x2d877d)throw new Error(_0x3be2('0x4e'));if(_0x2d877d[_0x3be2('0x4f')]===_0x3be2('0x4d')){var _0x13ec24=_0x1d75a4[_0x3be2('0x28')]({'plain':!![]});var _0x184d8d=_0x3be2('0x29');return db[_0x3be2('0x50')][_0x3be2('0x4a')]({'where':{'name':_0x184d8d,'userProfileId':_0x2d877d[_0x3be2('0x51')]},'raw':!![]})[_0x3be2('0x26')](function(_0x5ef0d0){if(_0x5ef0d0&&_0x5ef0d0[_0x3be2('0x52')]===0x0){return db[_0x3be2('0x2a')]['create']({'name':_0x13ec24[_0x3be2('0x2c')],'resourceId':_0x13ec24['id'],'type':_0x5ef0d0[_0x3be2('0x2c')],'sectionId':_0x5ef0d0['id']},{})[_0x3be2('0x26')](function(){return _0x1d75a4;});}else{return _0x1d75a4;}})['catch'](function(_0x55f24f){logger[_0x3be2('0x53')](_0x3be2('0x54'),_0x55f24f);throw _0x55f24f;});}return _0x1d75a4;})[_0x3be2('0x26')](respondWithResult(_0x1797f9,0xc9))[_0x3be2('0x46')](handleError(_0x1797f9,null));};exports[_0x3be2('0x25')]=function(_0x2b237e,_0x15c391){if(_0x2b237e[_0x3be2('0x4c')]['id']){delete _0x2b237e['body']['id'];}return db[_0x3be2('0x30')][_0x3be2('0x4a')]({'where':{'id':_0x2b237e[_0x3be2('0x47')]['id']}})['then'](handleEntityNotFound(_0x15c391,null))[_0x3be2('0x26')](saveUpdates(_0x2b237e['body'],null))['then'](respondWithResult(_0x15c391,null))[_0x3be2('0x46')](handleError(_0x15c391,null));};exports[_0x3be2('0x27')]=function(_0x4ea350,_0x5dc4a7){return db['MailQueue'][_0x3be2('0x4a')]({'where':{'id':_0x4ea350['params']['id']}})[_0x3be2('0x26')](handleEntityNotFound(_0x5dc4a7,null))[_0x3be2('0x26')](removeEntity(_0x5dc4a7,null))[_0x3be2('0x46')](handleError(_0x5dc4a7,null));};exports['describe']=function(_0x2bc8f7,_0x15aad9){return db[_0x3be2('0x30')][_0x3be2('0x55')]()[_0x3be2('0x26')](respondWithResult(_0x15aad9,null))['catch'](handleError(_0x15aad9,null));};exports[_0x3be2('0x56')]=function(_0x1fedfa,_0x150c18,_0x2423d9){var _0x4ac78f={'raw':!![],'where':{}},_0x276748={},_0x24ec69;return db[_0x3be2('0x30')][_0x3be2('0x57')]({'where':{'id':_0x1fedfa[_0x3be2('0x47')]['id']}})['then'](handleEntityNotFound(_0x150c18,null))[_0x3be2('0x26')](function(_0x225b40){if(_0x225b40){_0x24ec69=_0x225b40[_0x3be2('0x28')]({'plain':!![]});_0x276748['model']=_[_0x3be2('0x37')](db[_0x3be2('0x58')][_0x3be2('0x31')]);_0x276748[_0x3be2('0x36')]=_['keys'](_0x1fedfa[_0x3be2('0x36')]);_0x276748[_0x3be2('0x38')]=_[_0x3be2('0x48')](_0x276748[_0x3be2('0x35')],_0x276748['query']);_0x4ac78f['attributes']=_['intersection'](_0x276748[_0x3be2('0x35')],qs[_0x3be2('0x3a')](_0x1fedfa[_0x3be2('0x36')][_0x3be2('0x3a')]));_0x4ac78f[_0x3be2('0x39')]=_0x4ac78f['attributes'][_0x3be2('0x3b')]?_0x4ac78f['attributes']:_0x276748[_0x3be2('0x35')];if(!_0x1fedfa[_0x3be2('0x36')][_0x3be2('0x59')](_0x3be2('0x5a'))){_0x4ac78f['limit']=qs['limit'](_0x1fedfa[_0x3be2('0x36')]['limit']);_0x4ac78f[_0x3be2('0x1d')]=qs[_0x3be2('0x1d')](_0x1fedfa['query']['offset']);}_0x4ac78f[_0x3be2('0x5b')]=qs[_0x3be2('0x3c')](_0x1fedfa[_0x3be2('0x36')][_0x3be2('0x3c')]);_0x4ac78f[_0x3be2('0x3d')]=qs[_0x3be2('0x38')](_[_0x3be2('0x3e')](_0x1fedfa['query'],_0x276748[_0x3be2('0x38')]));_0x4ac78f[_0x3be2('0x3d')]['MailQueueId']=_0x225b40['id'];if(_0x1fedfa[_0x3be2('0x36')][_0x3be2('0x3f')]){_0x4ac78f[_0x3be2('0x3d')]=_[_0x3be2('0x49')](_0x4ac78f[_0x3be2('0x3d')],{'$or':_[_0x3be2('0x2f')](_0x4ac78f[_0x3be2('0x39')],function(_0x5dd2cb){var _0x17784a={};_0x17784a[_0x5dd2cb]={'$like':'%'+_0x1fedfa[_0x3be2('0x36')][_0x3be2('0x3f')]+'%'};return _0x17784a;})});}_0x4ac78f=_['merge']({},_0x4ac78f,_0x1fedfa[_0x3be2('0x41')]);return db[_0x3be2('0x58')][_0x3be2('0x44')](_0x4ac78f);}})[_0x3be2('0x26')](function(_0x4847f4){if(_0x4847f4){return db[_0x3be2('0x5c')][_0x3be2('0x5d')]({'where':{'id':_[_0x3be2('0x2f')](_0x4847f4,_0x3be2('0x5e')),'role':_0x3be2('0x5f')},'attributes':['id','name',_0x3be2('0x60'),_0x3be2('0x61'),_0x3be2('0x62')]});}})[_0x3be2('0x26')](function(_0x242f89){if(_0x242f89){return{'count':_0x242f89['count'],'rows':_[_0x3be2('0x2f')](_0x242f89[_0x3be2('0x45')],function(_0x268108){return{'membername':_0x268108[_0x3be2('0x2c')],'UserId':_0x268108['id'],'queue_name':_0x24ec69[_0x3be2('0x2c')],'MailQueueId':_0x24ec69['id'],'interface':util[_0x3be2('0x63')](_0x3be2('0x64'),_0x3be2('0x65'),_0x268108[_0x3be2('0x2c')]),'penalty':0x0,'paused':_0x268108[_0x3be2('0x60')],'createdAt':_0x268108['createdAt'],'updatedAt':_0x268108[_0x3be2('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x3be2('0x26')](respondWithFilteredResult(_0x150c18,_0x4ac78f))['catch'](handleError(_0x150c18,null));};exports[_0x3be2('0x66')]=function(_0x383f9,_0x37646d,_0x22e54f){var _0x55288a={};var _0x4f5ddb={};var _0x1635d3;var _0x18e09b;return db[_0x3be2('0x30')]['findOne']({'where':{'id':_0x383f9[_0x3be2('0x47')]['id']}})[_0x3be2('0x26')](handleEntityNotFound(_0x37646d,null))[_0x3be2('0x26')](function(_0x167d06){if(_0x167d06){_0x1635d3=_0x167d06;_0x4f5ddb['model']=_[_0x3be2('0x37')](db['Team'][_0x3be2('0x31')]);_0x4f5ddb[_0x3be2('0x36')]=_[_0x3be2('0x37')](_0x383f9[_0x3be2('0x36')]);_0x4f5ddb[_0x3be2('0x38')]=_[_0x3be2('0x48')](_0x4f5ddb[_0x3be2('0x35')],_0x4f5ddb[_0x3be2('0x36')]);_0x55288a[_0x3be2('0x39')]=_[_0x3be2('0x48')](_0x4f5ddb[_0x3be2('0x35')],qs[_0x3be2('0x3a')](_0x383f9[_0x3be2('0x36')][_0x3be2('0x3a')]));_0x55288a[_0x3be2('0x39')]=_0x55288a[_0x3be2('0x39')][_0x3be2('0x3b')]?_0x55288a[_0x3be2('0x39')]:_0x4f5ddb[_0x3be2('0x35')];_0x55288a[_0x3be2('0x5b')]=qs[_0x3be2('0x3c')](_0x383f9[_0x3be2('0x36')][_0x3be2('0x3c')]);_0x55288a[_0x3be2('0x3d')]=qs[_0x3be2('0x38')](_[_0x3be2('0x3e')](_0x383f9[_0x3be2('0x36')],_0x4f5ddb[_0x3be2('0x38')]));if(_0x383f9[_0x3be2('0x36')][_0x3be2('0x3f')]){_0x55288a[_0x3be2('0x3d')]=_[_0x3be2('0x49')](_0x55288a['where'],{'$or':_[_0x3be2('0x2f')](_0x55288a[_0x3be2('0x39')],function(_0x50a2dd){var _0xba4b13={};_0xba4b13[_0x50a2dd]={'$like':'%'+_0x383f9[_0x3be2('0x36')][_0x3be2('0x3f')]+'%'};return _0xba4b13;})});}_0x55288a=_['merge']({},_0x55288a,_0x383f9[_0x3be2('0x41')]);return _0x1635d3[_0x3be2('0x66')](_0x55288a);}})[_0x3be2('0x26')](function(_0x4efced){if(_0x4efced){_0x18e09b=_0x4efced[_0x3be2('0x3b')];if(!_0x383f9['query']['hasOwnProperty'](_0x3be2('0x5a'))){_0x55288a[_0x3be2('0x1f')]=qs[_0x3be2('0x1f')](_0x383f9[_0x3be2('0x36')][_0x3be2('0x1f')]);_0x55288a[_0x3be2('0x1d')]=qs[_0x3be2('0x1d')](_0x383f9[_0x3be2('0x36')][_0x3be2('0x1d')]);}return _0x1635d3[_0x3be2('0x66')](_0x55288a);}})[_0x3be2('0x26')](function(_0x4d7806){if(_0x4d7806){return _0x4d7806?{'count':_0x18e09b,'rows':_0x4d7806}:null;}})[_0x3be2('0x26')](respondWithResult(_0x37646d,null))[_0x3be2('0x46')](handleError(_0x37646d,null));};exports[_0x3be2('0x67')]=function(_0x366527,_0x15b579,_0x4bc71c){var _0x2e53f8=_0x366527[_0x3be2('0x4c')][_0x3be2('0x68')];return db[_0x3be2('0x69')]['findAll']({'where':{'id':_0x2e53f8},'attributes':['id'],'include':[{'model':db[_0x3be2('0x5c')],'as':'Agents','attributes':['id',_0x3be2('0x2c'),_0x3be2('0x6a'),_0x3be2('0x6b'),_0x3be2('0x6c')],'raw':!![]}]})[_0x3be2('0x26')](function(_0x83e324){if(_0x83e324){var _0x30aae2=_['flatMap'](_0x83e324,function(_0x120834){var _0x198921=_0x120834[_0x3be2('0x28')]({'plain':!![]});return _0x198921[_0x3be2('0x6d')];});return db['MailQueue'][_0x3be2('0x4a')]({'where':{'id':_0x366527[_0x3be2('0x47')]['id']}})[_0x3be2('0x26')](function(_0x4dc5fc){return db['sequelize']['transaction'](function(_0x33d8c1){return _0x4dc5fc[_0x3be2('0x67')](_0x2e53f8,{'transaction':_0x33d8c1})[_0x3be2('0x26')](function(){return BPromise[_0x3be2('0x6e')](_0x30aae2,function(_0x51a244){return db[_0x3be2('0x58')][_0x3be2('0x6f')]({'where':{'UserId':_0x51a244['id'],'MailQueueId':_0x366527['params']['id']},'transaction':_0x33d8c1});});})[_0x3be2('0x26')](function(){_0x30aae2['forEach'](function(_0x8d3045){socket[_0x3be2('0x70')](_0x3be2('0x71'),{'UserId':_0x8d3045['id'],'MailQueueId':_0x4dc5fc['id']});});});});});}})[_0x3be2('0x26')](respondWithStatusCode(_0x15b579,null))[_0x3be2('0x46')](handleError(_0x15b579,null));};exports[_0x3be2('0x72')]=function(_0x460c75,_0x1d02c4,_0x3c5ee1){return db[_0x3be2('0x69')][_0x3be2('0x44')]({'where':{'id':_0x460c75[_0x3be2('0x36')][_0x3be2('0x68')]},'attributes':['id'],'include':[{'model':db[_0x3be2('0x5c')],'as':_0x3be2('0x6d'),'attributes':['id'],'raw':!![]}]})[_0x3be2('0x26')](handleEntityNotFound(_0x1d02c4,null))[_0x3be2('0x26')](function(_0xe3d8a){var _0x15bc3d=_['map'](_0xe3d8a,'id');var _0x9de14f=[];var _0x2b5f8d=[];var _0x42bf09=squel['select']();_0x42bf09['field'](_0x3be2('0x73'))['from'](_0x3be2('0x74'),'tq')[_0x3be2('0x75')](_0x3be2('0x76'),'ut',_0x3be2('0x77'))[_0x3be2('0x3d')](_0x3be2('0x78'),_0x460c75[_0x3be2('0x47')]['id']);for(var _0x1d0fb4=0x0;_0x1d0fb4<_0xe3d8a[_0x3be2('0x3b')];_0x1d0fb4+=0x1){let _0x2f61c0=_0xe3d8a[_0x1d0fb4];for(var _0x53a1b1=0x0;_0x53a1b1<_0x2f61c0['Agents']['length'];_0x53a1b1+=0x1){let _0x4950d7=_0x2f61c0[_0x3be2('0x6d')][_0x53a1b1];var _0x3b32ef=_0x42bf09['clone']();_0x3b32ef[_0x3be2('0x3d')](_0x3be2('0x79'),_0x4950d7['id']);_0x2b5f8d[_0x3be2('0x7a')](db[_0x3be2('0x7b')][_0x3be2('0x36')](_0x3b32ef['toString'](),{'type':db[_0x3be2('0x7b')][_0x3be2('0x7c')][_0x3be2('0x7d')]})['then'](function(_0x160c3e){if(_0x160c3e[_0x3be2('0x3b')]===0x1){return _0x4950d7['id'];}else{var _0x1cbc5a=_['every'](_[_0x3be2('0x2f')](_0x160c3e,_0x3be2('0x7e')),function(_0x16231b){return _[_0x3be2('0x7f')](_0x15bc3d,_0x16231b);});if(_0x1cbc5a){return _0x4950d7['id'];}}}));}}return BPromise[_0x3be2('0x80')](_0x2b5f8d)[_0x3be2('0x26')](function(_0x434f96){_0x9de14f=_(_0x9de14f)[_0x3be2('0x81')](_0x434f96)['compact']()[_0x3be2('0x82')]();return db[_0x3be2('0x30')][_0x3be2('0x4a')]({'where':{'id':_0x460c75[_0x3be2('0x47')]['id']}})[_0x3be2('0x26')](function(_0x34e2a4){return db['sequelize'][_0x3be2('0x83')](function(_0x3473ed){return _0x34e2a4['removeTeams'](_0x460c75[_0x3be2('0x36')][_0x3be2('0x68')],{'transaction':_0x3473ed})[_0x3be2('0x26')](function(){if(!_[_0x3be2('0x84')](_0x9de14f)){return _0x34e2a4[_0x3be2('0x85')](_0x9de14f,{'transaction':_0x3473ed});}})[_0x3be2('0x26')](function(){_0x9de14f[_0x3be2('0x86')](function(_0x1dac2b){socket[_0x3be2('0x70')]('userMailQueue:remove',{'UserId':_0x1dac2b,'MailQueueId':_0x34e2a4['id']});});});});});});})[_0x3be2('0x26')](respondWithStatusCode(_0x1d02c4,null))[_0x3be2('0x46')](handleError(_0x1d02c4,null));};exports['addAgents']=function(_0x9ca7ad,_0x4e3191,_0x310418){return db[_0x3be2('0x30')]['find']({'where':{'id':_0x9ca7ad[_0x3be2('0x47')]['id']}})['then'](handleEntityNotFound(_0x4e3191,null))[_0x3be2('0x26')](function(_0x12f26e){if(_0x12f26e){return _0x12f26e[_0x3be2('0x87')](_0x9ca7ad[_0x3be2('0x4c')][_0x3be2('0x68')],_[_0x3be2('0x88')](_0x9ca7ad[_0x3be2('0x4c')],['ids','id'])||{})[_0x3be2('0x89')](function(_0x45ee22){for(var _0x1d48f6=0x0;_0x1d48f6<_0x9ca7ad[_0x3be2('0x4c')][_0x3be2('0x68')][_0x3be2('0x3b')];_0x1d48f6+=0x1){socket['emit']('userMailQueue:save',{'UserId':Number(_0x9ca7ad['body']['ids'][_0x1d48f6]),'MailQueueId':Number(_0x9ca7ad[_0x3be2('0x47')]['id'])});}return _0x45ee22;});}})['then'](respondWithResult(_0x4e3191,null))['catch'](handleError(_0x4e3191,null));};exports[_0x3be2('0x85')]=function(_0x5aa847,_0x196b29,_0x26a5bb){return db['MailQueue'][_0x3be2('0x4a')]({'where':{'id':_0x5aa847[_0x3be2('0x47')]['id']}})[_0x3be2('0x26')](handleEntityNotFound(_0x196b29,null))[_0x3be2('0x26')](function(_0x72b487){if(_0x72b487){return _0x72b487[_0x3be2('0x85')](_0x5aa847['query'][_0x3be2('0x68')])[_0x3be2('0x26')](function(){if(_[_0x3be2('0x8a')](_0x5aa847['query']['ids'])){for(var _0x455ed5=0x0;_0x455ed5<_0x5aa847[_0x3be2('0x36')][_0x3be2('0x68')][_0x3be2('0x3b')];_0x455ed5+=0x1){socket[_0x3be2('0x70')](_0x3be2('0x8b'),{'UserId':Number(_0x5aa847[_0x3be2('0x36')][_0x3be2('0x68')][_0x455ed5]),'MailQueueId':Number(_0x5aa847[_0x3be2('0x47')]['id'])});}}else{socket[_0x3be2('0x70')](_0x3be2('0x8b'),{'UserId':Number(_0x5aa847[_0x3be2('0x36')][_0x3be2('0x68')]),'MailQueueId':Number(_0x5aa847[_0x3be2('0x47')]['id'])});}});}})[_0x3be2('0x26')](respondWithStatusCode(_0x196b29,null))['catch'](handleError(_0x196b29,null));};exports[_0x3be2('0x8c')]=function(_0x5ea1df,_0x3c46c5,_0x916b41){var _0x4458be={};var _0x4640b1={};var _0x407123;var _0x425f3f;return db[_0x3be2('0x30')][_0x3be2('0x57')]({'where':{'id':_0x5ea1df[_0x3be2('0x47')]['id']}})[_0x3be2('0x26')](handleEntityNotFound(_0x3c46c5,null))[_0x3be2('0x26')](function(_0x140c4b){if(_0x140c4b){_0x407123=_0x140c4b;_0x4640b1[_0x3be2('0x35')]=_['keys'](db[_0x3be2('0x5c')][_0x3be2('0x31')]);_0x4640b1[_0x3be2('0x36')]=_[_0x3be2('0x37')](_0x5ea1df[_0x3be2('0x36')]);_0x4640b1[_0x3be2('0x38')]=_[_0x3be2('0x48')](_0x4640b1['model'],_0x4640b1[_0x3be2('0x36')]);_0x4458be['attributes']=_[_0x3be2('0x48')](_0x4640b1[_0x3be2('0x35')],qs[_0x3be2('0x3a')](_0x5ea1df[_0x3be2('0x36')]['fields']));_0x4458be[_0x3be2('0x39')]=_0x4458be[_0x3be2('0x39')]['length']?_0x4458be[_0x3be2('0x39')]:_0x4640b1[_0x3be2('0x35')];_0x4458be[_0x3be2('0x5b')]=qs[_0x3be2('0x3c')](_0x5ea1df[_0x3be2('0x36')]['sort']);_0x4458be[_0x3be2('0x3d')]=qs[_0x3be2('0x38')](_[_0x3be2('0x3e')](_0x5ea1df['query'],_0x4640b1['filters']));if(_0x5ea1df[_0x3be2('0x36')]['filter']){_0x4458be[_0x3be2('0x3d')]=_[_0x3be2('0x49')](_0x4458be[_0x3be2('0x3d')],{'$or':_[_0x3be2('0x2f')](_0x4458be[_0x3be2('0x39')],function(_0x4fef9c){var _0x495beb={};_0x495beb[_0x4fef9c]={'$like':'%'+_0x5ea1df['query'][_0x3be2('0x3f')]+'%'};return _0x495beb;})});}_0x4458be=_['merge']({},_0x4458be,_0x5ea1df[_0x3be2('0x41')]);return _0x407123['getAgents'](_0x4458be);}})[_0x3be2('0x26')](function(_0x410b93){if(_0x410b93){_0x425f3f=_0x410b93[_0x3be2('0x3b')];if(!_0x5ea1df[_0x3be2('0x36')][_0x3be2('0x59')](_0x3be2('0x5a'))){_0x4458be[_0x3be2('0x1f')]=qs[_0x3be2('0x1f')](_0x5ea1df[_0x3be2('0x36')][_0x3be2('0x1f')]);_0x4458be['offset']=qs[_0x3be2('0x1d')](_0x5ea1df[_0x3be2('0x36')]['offset']);}return _0x407123[_0x3be2('0x8c')](_0x4458be);}})[_0x3be2('0x26')](function(_0x201158){if(_0x201158){return _0x201158?{'count':_0x425f3f,'rows':_0x201158}:null;}})[_0x3be2('0x26')](respondWithResult(_0x3c46c5,null))[_0x3be2('0x46')](handleError(_0x3c46c5,null));};
\ No newline at end of file
+var _0x9fa9=['removeTeams','select','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','isEmpty','userMailQueue:remove','addAgents','spread','removeAgents','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','MailQueues','UserProfileResource','end','error','stack','name','send','index','map','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','MailQueue','includeAll','findAll','rows','catch','show','params','rawAttributes','keys','include','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','pick','options','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','SIP','getTeams','ids','Team','Agents','online','voicePause','interface','flatMap','transaction','addTeams','each','findOrCreate','forEach','emit','userMailQueue:save'];(function(_0x4fb452,_0x32f7b3){var _0x35b1bd=function(_0x137b0a){while(--_0x137b0a){_0x4fb452['push'](_0x4fb452['shift']());}};_0x35b1bd(++_0x32f7b3);}(_0x9fa9,0x1c7));var _0x99fa=function(_0x20fbd5,_0x4e7f52){_0x20fbd5=_0x20fbd5-0x0;var _0x5ea57c=_0x9fa9[_0x20fbd5];return _0x5ea57c;};'use strict';var emlformat=require(_0x99fa('0x0'));var rimraf=require(_0x99fa('0x1'));var zipdir=require(_0x99fa('0x2'));var jsonpatch=require(_0x99fa('0x3'));var rp=require(_0x99fa('0x4'));var moment=require(_0x99fa('0x5'));var BPromise=require(_0x99fa('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x99fa('0x7'));var sox=require(_0x99fa('0x8'));var csv=require(_0x99fa('0x9'));var ejs=require(_0x99fa('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x99fa('0xb'));var jsforce=require(_0x99fa('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x99fa('0x9'));var querystring=require('querystring');var Papa=require(_0x99fa('0xd'));var Redis=require(_0x99fa('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x99fa('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x99fa('0x10'));var utils=require(_0x99fa('0x11'));var config=require(_0x99fa('0x12'));var licenseUtil=require(_0x99fa('0x13'));var db=require(_0x99fa('0x14'))['db'];config[_0x99fa('0x15')]=_[_0x99fa('0x16')](config['redis'],{'host':_0x99fa('0x17'),'port':0x18eb});var socket=require(_0x99fa('0x18'))(new Redis(config[_0x99fa('0x15')]));require(_0x99fa('0x19'))['register'](socket);function respondWithStatusCode(_0xd06dd9,_0x3a56c4){_0x3a56c4=_0x3a56c4||0xcc;return function(_0x8e7451){if(_0x8e7451){return _0xd06dd9[_0x99fa('0x1a')](_0x3a56c4);}return _0xd06dd9[_0x99fa('0x1b')](_0x3a56c4)['end']();};}function respondWithResult(_0x9876a6,_0x14b2e1){_0x14b2e1=_0x14b2e1||0xc8;return function(_0x5b7e76){if(_0x5b7e76){return _0x9876a6['status'](_0x14b2e1)[_0x99fa('0x1c')](_0x5b7e76);}};}function respondWithFilteredResult(_0x38a6b2,_0x562ccb){return function(_0x4f1720){if(_0x4f1720){var _0xc7cf01=typeof _0x562ccb[_0x99fa('0x1d')]===_0x99fa('0x1e')&&typeof _0x562ccb['limit']===_0x99fa('0x1e');var _0xa29aa1=_0x4f1720[_0x99fa('0x1f')];var _0x3e71c0=_0xc7cf01?0x0:_0x562ccb[_0x99fa('0x1d')];var _0x3944d8=_0xc7cf01?_0x4f1720[_0x99fa('0x1f')]:_0x562ccb[_0x99fa('0x1d')]+_0x562ccb[_0x99fa('0x20')];var _0x1f1a04;if(_0x3944d8>=_0xa29aa1){_0x3944d8=_0xa29aa1;_0x1f1a04=0xc8;}else{_0x1f1a04=0xce;}_0x38a6b2[_0x99fa('0x1b')](_0x1f1a04);return _0x38a6b2[_0x99fa('0x21')](_0x99fa('0x22'),_0x3e71c0+'-'+_0x3944d8+'/'+_0xa29aa1)[_0x99fa('0x1c')](_0x4f1720);}return null;};}function patchUpdates(_0x3e8ae2){return function(_0x563216){try{jsonpatch[_0x99fa('0x23')](_0x563216,_0x3e8ae2,!![]);}catch(_0x160a19){return BPromise[_0x99fa('0x24')](_0x160a19);}return _0x563216[_0x99fa('0x25')]();};}function saveUpdates(_0x462d7f,_0x5b1687){return function(_0x14266e){if(_0x14266e){return _0x14266e[_0x99fa('0x26')](_0x462d7f)[_0x99fa('0x27')](function(_0x541605){return _0x541605;});}return null;};}function removeEntity(_0x2270f9,_0x45ca52){return function(_0x48e2b6){if(_0x48e2b6){return _0x48e2b6[_0x99fa('0x28')]()['then'](function(){var _0x53793e=_0x48e2b6[_0x99fa('0x29')]({'plain':!![]});var _0x12e5ed=_0x99fa('0x2a');return db[_0x99fa('0x2b')][_0x99fa('0x28')]({'where':{'type':_0x12e5ed,'resourceId':_0x53793e['id']}})[_0x99fa('0x27')](function(){return _0x48e2b6;});})['then'](function(){_0x2270f9['status'](0xcc)[_0x99fa('0x2c')]();});}};}function handleEntityNotFound(_0x243e9f,_0x176523){return function(_0x3d0656){if(!_0x3d0656){_0x243e9f[_0x99fa('0x1a')](0x194);}return _0x3d0656;};}function handleError(_0x1e297a,_0x1b48de){_0x1b48de=_0x1b48de||0x1f4;return function(_0x5927fd){logger[_0x99fa('0x2d')](_0x5927fd[_0x99fa('0x2e')]);if(_0x5927fd[_0x99fa('0x2f')]){delete _0x5927fd['name'];}_0x1e297a[_0x99fa('0x1b')](_0x1b48de)[_0x99fa('0x30')](_0x5927fd);};}exports[_0x99fa('0x31')]=function(_0x1f8000,_0x488c07){var _0xfa365b={},_0x5aef47={},_0x3de95f={'count':0x0,'rows':[]};var _0x167fa5=_[_0x99fa('0x32')](db['MailQueue']['rawAttributes'],function(_0x644187){return{'name':_0x644187[_0x99fa('0x33')],'type':_0x644187[_0x99fa('0x34')][_0x99fa('0x35')]};});_0x5aef47[_0x99fa('0x36')]=_['map'](_0x167fa5,_0x99fa('0x2f'));_0x5aef47[_0x99fa('0x37')]=_['keys'](_0x1f8000[_0x99fa('0x37')]);_0x5aef47[_0x99fa('0x38')]=_[_0x99fa('0x39')](_0x5aef47[_0x99fa('0x36')],_0x5aef47[_0x99fa('0x37')]);_0xfa365b['attributes']=_['intersection'](_0x5aef47[_0x99fa('0x36')],qs[_0x99fa('0x3a')](_0x1f8000[_0x99fa('0x37')][_0x99fa('0x3a')]));_0xfa365b[_0x99fa('0x3b')]=_0xfa365b['attributes'][_0x99fa('0x3c')]?_0xfa365b['attributes']:_0x5aef47[_0x99fa('0x36')];if(!_0x1f8000['query'][_0x99fa('0x3d')](_0x99fa('0x3e'))){_0xfa365b['limit']=qs[_0x99fa('0x20')](_0x1f8000['query'][_0x99fa('0x20')]);_0xfa365b['offset']=qs[_0x99fa('0x1d')](_0x1f8000[_0x99fa('0x37')]['offset']);}_0xfa365b[_0x99fa('0x3f')]=qs[_0x99fa('0x40')](_0x1f8000[_0x99fa('0x37')]['sort']);_0xfa365b[_0x99fa('0x41')]=qs['filters'](_['pick'](_0x1f8000['query'],_0x5aef47[_0x99fa('0x38')]),_0x167fa5);if(_0x1f8000[_0x99fa('0x37')][_0x99fa('0x42')]){_0xfa365b['where']=_[_0x99fa('0x43')](_0xfa365b[_0x99fa('0x41')],{'$or':_['map'](_0x167fa5,function(_0x34a678){if(_0x34a678[_0x99fa('0x34')]!==_0x99fa('0x44')){var _0x496321={};_0x496321[_0x34a678[_0x99fa('0x2f')]]={'$like':'%'+_0x1f8000[_0x99fa('0x37')][_0x99fa('0x42')]+'%'};return _0x496321;}})});}_0xfa365b=_[_0x99fa('0x43')]({},_0xfa365b,_0x1f8000['options']);var _0x2e5a06={'where':_0xfa365b[_0x99fa('0x41')]};return db[_0x99fa('0x45')][_0x99fa('0x1f')](_0x2e5a06)[_0x99fa('0x27')](function(_0x3c0a99){_0x3de95f[_0x99fa('0x1f')]=_0x3c0a99;if(_0x1f8000[_0x99fa('0x37')][_0x99fa('0x46')]){_0xfa365b['include']=[{'all':!![]}];}return db[_0x99fa('0x45')][_0x99fa('0x47')](_0xfa365b);})[_0x99fa('0x27')](function(_0x481673){_0x3de95f[_0x99fa('0x48')]=_0x481673;return _0x3de95f;})['then'](respondWithFilteredResult(_0x488c07,_0xfa365b))[_0x99fa('0x49')](handleError(_0x488c07,null));};exports[_0x99fa('0x4a')]=function(_0x444e24,_0x1b0d98){var _0x39efcc={'raw':!![],'where':{'id':_0x444e24[_0x99fa('0x4b')]['id']}},_0x5075c2={};_0x5075c2['model']=_['keys'](db[_0x99fa('0x45')][_0x99fa('0x4c')]);_0x5075c2['query']=_[_0x99fa('0x4d')](_0x444e24['query']);_0x5075c2[_0x99fa('0x38')]=_['intersection'](_0x5075c2[_0x99fa('0x36')],_0x5075c2[_0x99fa('0x37')]);_0x39efcc[_0x99fa('0x3b')]=_[_0x99fa('0x39')](_0x5075c2['model'],qs[_0x99fa('0x3a')](_0x444e24['query']['fields']));_0x39efcc[_0x99fa('0x3b')]=_0x39efcc['attributes'][_0x99fa('0x3c')]?_0x39efcc[_0x99fa('0x3b')]:_0x5075c2[_0x99fa('0x36')];if(_0x444e24[_0x99fa('0x37')][_0x99fa('0x46')]){_0x39efcc[_0x99fa('0x4e')]=[{'all':!![]}];}_0x39efcc=_[_0x99fa('0x43')]({},_0x39efcc,_0x444e24['options']);return db[_0x99fa('0x45')][_0x99fa('0x4f')](_0x39efcc)[_0x99fa('0x27')](handleEntityNotFound(_0x1b0d98,null))[_0x99fa('0x27')](respondWithResult(_0x1b0d98,null))[_0x99fa('0x49')](handleError(_0x1b0d98,null));};exports[_0x99fa('0x50')]=function(_0x3fe70f,_0x11da3d){return db[_0x99fa('0x45')][_0x99fa('0x50')](_0x3fe70f['body'],{})[_0x99fa('0x27')](function(_0x3a9e80){var _0x4affca=_0x3fe70f[_0x99fa('0x51')][_0x99fa('0x29')]({'plain':!![]});if(!_0x4affca)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4affca[_0x99fa('0x52')]===_0x99fa('0x51')){var _0x256121=_0x3a9e80['get']({'plain':!![]});var _0x20a879=_0x99fa('0x2a');return db[_0x99fa('0x53')]['find']({'where':{'name':_0x20a879,'userProfileId':_0x4affca[_0x99fa('0x54')]},'raw':!![]})[_0x99fa('0x27')](function(_0x36cae1){if(_0x36cae1&&_0x36cae1[_0x99fa('0x55')]===0x0){return db['UserProfileResource'][_0x99fa('0x50')]({'name':_0x256121[_0x99fa('0x2f')],'resourceId':_0x256121['id'],'type':_0x36cae1[_0x99fa('0x2f')],'sectionId':_0x36cae1['id']},{})[_0x99fa('0x27')](function(){return _0x3a9e80;});}else{return _0x3a9e80;}})[_0x99fa('0x49')](function(_0x203966){logger[_0x99fa('0x2d')](_0x99fa('0x56'),_0x203966);throw _0x203966;});}return _0x3a9e80;})[_0x99fa('0x27')](respondWithResult(_0x11da3d,0xc9))['catch'](handleError(_0x11da3d,null));};exports[_0x99fa('0x26')]=function(_0x1da5dc,_0x443553){if(_0x1da5dc[_0x99fa('0x57')]['id']){delete _0x1da5dc[_0x99fa('0x57')]['id'];}return db[_0x99fa('0x45')][_0x99fa('0x4f')]({'where':{'id':_0x1da5dc[_0x99fa('0x4b')]['id']}})['then'](handleEntityNotFound(_0x443553,null))[_0x99fa('0x27')](saveUpdates(_0x1da5dc[_0x99fa('0x57')],null))[_0x99fa('0x27')](respondWithResult(_0x443553,null))['catch'](handleError(_0x443553,null));};exports[_0x99fa('0x28')]=function(_0x383aaa,_0x22283f){return db[_0x99fa('0x45')][_0x99fa('0x4f')]({'where':{'id':_0x383aaa[_0x99fa('0x4b')]['id']}})['then'](handleEntityNotFound(_0x22283f,null))[_0x99fa('0x27')](removeEntity(_0x22283f,null))[_0x99fa('0x49')](handleError(_0x22283f,null));};exports[_0x99fa('0x58')]=function(_0x3cf8b0,_0x358f6d){return db[_0x99fa('0x45')]['describe']()[_0x99fa('0x27')](respondWithResult(_0x358f6d,null))['catch'](handleError(_0x358f6d,null));};exports[_0x99fa('0x59')]=function(_0x280bf6,_0x58fc84,_0x2ade73){var _0xfdb25a={'raw':!![],'where':{}},_0x69b51d={},_0x496c7e;return db['MailQueue'][_0x99fa('0x5a')]({'where':{'id':_0x280bf6[_0x99fa('0x4b')]['id']}})[_0x99fa('0x27')](handleEntityNotFound(_0x58fc84,null))[_0x99fa('0x27')](function(_0x3be319){if(_0x3be319){_0x496c7e=_0x3be319['get']({'plain':!![]});_0x69b51d['model']=_[_0x99fa('0x4d')](db['UserMailQueue'][_0x99fa('0x4c')]);_0x69b51d[_0x99fa('0x37')]=_['keys'](_0x280bf6['query']);_0x69b51d['filters']=_['intersection'](_0x69b51d['model'],_0x69b51d['query']);_0xfdb25a[_0x99fa('0x3b')]=_[_0x99fa('0x39')](_0x69b51d['model'],qs[_0x99fa('0x3a')](_0x280bf6[_0x99fa('0x37')][_0x99fa('0x3a')]));_0xfdb25a[_0x99fa('0x3b')]=_0xfdb25a[_0x99fa('0x3b')][_0x99fa('0x3c')]?_0xfdb25a[_0x99fa('0x3b')]:_0x69b51d[_0x99fa('0x36')];if(!_0x280bf6[_0x99fa('0x37')][_0x99fa('0x3d')](_0x99fa('0x3e'))){_0xfdb25a['limit']=qs['limit'](_0x280bf6[_0x99fa('0x37')][_0x99fa('0x20')]);_0xfdb25a[_0x99fa('0x1d')]=qs[_0x99fa('0x1d')](_0x280bf6['query']['offset']);}_0xfdb25a[_0x99fa('0x3f')]=qs[_0x99fa('0x40')](_0x280bf6[_0x99fa('0x37')][_0x99fa('0x40')]);_0xfdb25a['where']=qs[_0x99fa('0x38')](_[_0x99fa('0x5b')](_0x280bf6[_0x99fa('0x37')],_0x69b51d[_0x99fa('0x38')]));_0xfdb25a[_0x99fa('0x41')]['MailQueueId']=_0x3be319['id'];if(_0x280bf6['query']['filter']){_0xfdb25a['where']=_[_0x99fa('0x43')](_0xfdb25a['where'],{'$or':_['map'](_0xfdb25a[_0x99fa('0x3b')],function(_0x5b916e){var _0x3bbc99={};_0x3bbc99[_0x5b916e]={'$like':'%'+_0x280bf6[_0x99fa('0x37')]['filter']+'%'};return _0x3bbc99;})});}_0xfdb25a=_[_0x99fa('0x43')]({},_0xfdb25a,_0x280bf6[_0x99fa('0x5c')]);return db['UserMailQueue'][_0x99fa('0x47')](_0xfdb25a);}})['then'](function(_0x143570){if(_0x143570){return db[_0x99fa('0x5d')][_0x99fa('0x5e')]({'where':{'id':_['map'](_0x143570,_0x99fa('0x5f')),'role':_0x99fa('0x60')},'attributes':['id',_0x99fa('0x2f'),_0x99fa('0x61'),_0x99fa('0x62'),_0x99fa('0x63')]});}})[_0x99fa('0x27')](function(_0x19e9b9){if(_0x19e9b9){return{'count':_0x19e9b9['count'],'rows':_[_0x99fa('0x32')](_0x19e9b9[_0x99fa('0x48')],function(_0x30f989){return{'membername':_0x30f989['name'],'UserId':_0x30f989['id'],'queue_name':_0x496c7e['name'],'MailQueueId':_0x496c7e['id'],'interface':util[_0x99fa('0x64')]('%s/%s',_0x99fa('0x65'),_0x30f989[_0x99fa('0x2f')]),'penalty':0x0,'paused':_0x30f989[_0x99fa('0x61')],'createdAt':_0x30f989[_0x99fa('0x63')],'updatedAt':_0x30f989[_0x99fa('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x58fc84,_0xfdb25a))[_0x99fa('0x49')](handleError(_0x58fc84,null));};exports['getTeams']=function(_0x492715,_0x4e5517,_0x4ef396){var _0x44e424={};var _0x5df7d7={};var _0x3459ab;var _0x12c010;return db[_0x99fa('0x45')][_0x99fa('0x5a')]({'where':{'id':_0x492715[_0x99fa('0x4b')]['id']}})[_0x99fa('0x27')](handleEntityNotFound(_0x4e5517,null))[_0x99fa('0x27')](function(_0x93a771){if(_0x93a771){_0x3459ab=_0x93a771;_0x5df7d7[_0x99fa('0x36')]=_[_0x99fa('0x4d')](db['Team'][_0x99fa('0x4c')]);_0x5df7d7['query']=_[_0x99fa('0x4d')](_0x492715[_0x99fa('0x37')]);_0x5df7d7[_0x99fa('0x38')]=_[_0x99fa('0x39')](_0x5df7d7[_0x99fa('0x36')],_0x5df7d7['query']);_0x44e424[_0x99fa('0x3b')]=_[_0x99fa('0x39')](_0x5df7d7['model'],qs[_0x99fa('0x3a')](_0x492715[_0x99fa('0x37')]['fields']));_0x44e424[_0x99fa('0x3b')]=_0x44e424[_0x99fa('0x3b')][_0x99fa('0x3c')]?_0x44e424[_0x99fa('0x3b')]:_0x5df7d7[_0x99fa('0x36')];_0x44e424[_0x99fa('0x3f')]=qs[_0x99fa('0x40')](_0x492715[_0x99fa('0x37')][_0x99fa('0x40')]);_0x44e424[_0x99fa('0x41')]=qs[_0x99fa('0x38')](_[_0x99fa('0x5b')](_0x492715[_0x99fa('0x37')],_0x5df7d7[_0x99fa('0x38')]));if(_0x492715[_0x99fa('0x37')][_0x99fa('0x42')]){_0x44e424[_0x99fa('0x41')]=_['merge'](_0x44e424['where'],{'$or':_['map'](_0x44e424[_0x99fa('0x3b')],function(_0x4d2c56){var _0x366e50={};_0x366e50[_0x4d2c56]={'$like':'%'+_0x492715['query']['filter']+'%'};return _0x366e50;})});}_0x44e424=_[_0x99fa('0x43')]({},_0x44e424,_0x492715[_0x99fa('0x5c')]);return _0x3459ab[_0x99fa('0x66')](_0x44e424);}})['then'](function(_0x2607a3){if(_0x2607a3){_0x12c010=_0x2607a3[_0x99fa('0x3c')];if(!_0x492715[_0x99fa('0x37')][_0x99fa('0x3d')](_0x99fa('0x3e'))){_0x44e424['limit']=qs['limit'](_0x492715[_0x99fa('0x37')][_0x99fa('0x20')]);_0x44e424[_0x99fa('0x1d')]=qs[_0x99fa('0x1d')](_0x492715[_0x99fa('0x37')][_0x99fa('0x1d')]);}return _0x3459ab[_0x99fa('0x66')](_0x44e424);}})[_0x99fa('0x27')](function(_0x27241a){if(_0x27241a){return _0x27241a?{'count':_0x12c010,'rows':_0x27241a}:null;}})[_0x99fa('0x27')](respondWithResult(_0x4e5517,null))[_0x99fa('0x49')](handleError(_0x4e5517,null));};exports['addTeams']=function(_0x36812f,_0x422f90,_0x550f76){var _0x58b0a9=_0x36812f[_0x99fa('0x57')][_0x99fa('0x67')];return db[_0x99fa('0x68')][_0x99fa('0x47')]({'where':{'id':_0x58b0a9},'attributes':['id'],'include':[{'model':db[_0x99fa('0x5d')],'as':_0x99fa('0x69'),'attributes':['id',_0x99fa('0x2f'),_0x99fa('0x6a'),_0x99fa('0x6b'),_0x99fa('0x6c')],'raw':!![]}]})[_0x99fa('0x27')](function(_0x3ae67a){if(_0x3ae67a){var _0x4437d6=_[_0x99fa('0x6d')](_0x3ae67a,function(_0x23630e){var _0x55b772=_0x23630e[_0x99fa('0x29')]({'plain':!![]});return _0x55b772['Agents'];});return db['MailQueue']['find']({'where':{'id':_0x36812f[_0x99fa('0x4b')]['id']}})['then'](function(_0x166cc1){return db['sequelize'][_0x99fa('0x6e')](function(_0x16983b){return _0x166cc1[_0x99fa('0x6f')](_0x58b0a9,{'transaction':_0x16983b})['then'](function(){return BPromise[_0x99fa('0x70')](_0x4437d6,function(_0x8b5e99){return db['UserMailQueue'][_0x99fa('0x71')]({'where':{'UserId':_0x8b5e99['id'],'MailQueueId':_0x36812f['params']['id']},'transaction':_0x16983b});});})[_0x99fa('0x27')](function(){_0x4437d6[_0x99fa('0x72')](function(_0x3a6e65){socket[_0x99fa('0x73')](_0x99fa('0x74'),{'UserId':_0x3a6e65['id'],'MailQueueId':_0x166cc1['id']});});});});});}})[_0x99fa('0x27')](respondWithStatusCode(_0x422f90,null))['catch'](handleError(_0x422f90,null));};exports[_0x99fa('0x75')]=function(_0x24a89b,_0x42a217,_0x7fc3df){return db[_0x99fa('0x68')]['findAll']({'where':{'id':_0x24a89b['query'][_0x99fa('0x67')]},'attributes':['id'],'include':[{'model':db[_0x99fa('0x5d')],'as':_0x99fa('0x69'),'attributes':['id'],'raw':!![]}]})[_0x99fa('0x27')](handleEntityNotFound(_0x42a217,null))[_0x99fa('0x27')](function(_0x5868a0){var _0x445619=_['map'](_0x5868a0,'id');var _0x3fd2e0=[];var _0x48e9db=[];var _0x2973de=squel[_0x99fa('0x76')]();_0x2973de['field']('tq.TeamId')[_0x99fa('0x77')](_0x99fa('0x78'),'tq')[_0x99fa('0x79')](_0x99fa('0x7a'),'ut',_0x99fa('0x7b'))[_0x99fa('0x41')](_0x99fa('0x7c'),_0x24a89b[_0x99fa('0x4b')]['id']);for(var _0x145c52=0x0;_0x145c52<_0x5868a0[_0x99fa('0x3c')];_0x145c52+=0x1){let _0x54efff=_0x5868a0[_0x145c52];for(var _0x10d6df=0x0;_0x10d6df<_0x54efff[_0x99fa('0x69')][_0x99fa('0x3c')];_0x10d6df+=0x1){let _0x506208=_0x54efff[_0x99fa('0x69')][_0x10d6df];var _0x59ab39=_0x2973de[_0x99fa('0x7d')]();_0x59ab39[_0x99fa('0x41')](_0x99fa('0x7e'),_0x506208['id']);_0x48e9db[_0x99fa('0x7f')](db[_0x99fa('0x80')][_0x99fa('0x37')](_0x59ab39[_0x99fa('0x81')](),{'type':db[_0x99fa('0x80')][_0x99fa('0x82')][_0x99fa('0x83')]})[_0x99fa('0x27')](function(_0x3ba569){if(_0x3ba569[_0x99fa('0x3c')]===0x1){return _0x506208['id'];}else{var _0x3f20c8=_[_0x99fa('0x84')](_[_0x99fa('0x32')](_0x3ba569,_0x99fa('0x85')),function(_0x16e37a){return _[_0x99fa('0x86')](_0x445619,_0x16e37a);});if(_0x3f20c8){return _0x506208['id'];}}}));}}return BPromise[_0x99fa('0x87')](_0x48e9db)[_0x99fa('0x27')](function(_0x2f4816){_0x3fd2e0=_(_0x3fd2e0)['union'](_0x2f4816)[_0x99fa('0x88')]()['value']();return db[_0x99fa('0x45')][_0x99fa('0x4f')]({'where':{'id':_0x24a89b[_0x99fa('0x4b')]['id']}})['then'](function(_0x305024){return db['sequelize'][_0x99fa('0x6e')](function(_0x498e90){return _0x305024['removeTeams'](_0x24a89b[_0x99fa('0x37')][_0x99fa('0x67')],{'transaction':_0x498e90})[_0x99fa('0x27')](function(){if(!_[_0x99fa('0x89')](_0x3fd2e0)){return _0x305024['removeAgents'](_0x3fd2e0,{'transaction':_0x498e90});}})[_0x99fa('0x27')](function(){_0x3fd2e0[_0x99fa('0x72')](function(_0x2d6501){socket['emit'](_0x99fa('0x8a'),{'UserId':_0x2d6501,'MailQueueId':_0x305024['id']});});});});});});})[_0x99fa('0x27')](respondWithStatusCode(_0x42a217,null))[_0x99fa('0x49')](handleError(_0x42a217,null));};exports['addAgents']=function(_0x305bba,_0x113993,_0x1276a6){return db['MailQueue'][_0x99fa('0x4f')]({'where':{'id':_0x305bba[_0x99fa('0x4b')]['id']}})[_0x99fa('0x27')](handleEntityNotFound(_0x113993,null))['then'](function(_0x12f55a){if(_0x12f55a){return _0x12f55a[_0x99fa('0x8b')](_0x305bba[_0x99fa('0x57')][_0x99fa('0x67')],_['omit'](_0x305bba[_0x99fa('0x57')],[_0x99fa('0x67'),'id'])||{})[_0x99fa('0x8c')](function(_0x59ff24){for(var _0x537003=0x0;_0x537003<_0x305bba[_0x99fa('0x57')][_0x99fa('0x67')][_0x99fa('0x3c')];_0x537003+=0x1){socket['emit'](_0x99fa('0x74'),{'UserId':Number(_0x305bba[_0x99fa('0x57')][_0x99fa('0x67')][_0x537003]),'MailQueueId':Number(_0x305bba[_0x99fa('0x4b')]['id'])});}return _0x59ff24;});}})[_0x99fa('0x27')](respondWithResult(_0x113993,null))[_0x99fa('0x49')](handleError(_0x113993,null));};exports[_0x99fa('0x8d')]=function(_0x39bc74,_0x5856b7,_0x41a6ea){return db[_0x99fa('0x45')]['find']({'where':{'id':_0x39bc74[_0x99fa('0x4b')]['id']}})[_0x99fa('0x27')](handleEntityNotFound(_0x5856b7,null))[_0x99fa('0x27')](function(_0x1c9b8e){if(_0x1c9b8e){return _0x1c9b8e[_0x99fa('0x8d')](_0x39bc74[_0x99fa('0x37')]['ids'])[_0x99fa('0x27')](function(){if(_['isArray'](_0x39bc74[_0x99fa('0x37')]['ids'])){for(var _0x3c9d30=0x0;_0x3c9d30<_0x39bc74['query']['ids'][_0x99fa('0x3c')];_0x3c9d30+=0x1){socket[_0x99fa('0x73')]('userMailQueue:remove',{'UserId':Number(_0x39bc74[_0x99fa('0x37')]['ids'][_0x3c9d30]),'MailQueueId':Number(_0x39bc74[_0x99fa('0x4b')]['id'])});}}else{socket['emit'](_0x99fa('0x8a'),{'UserId':Number(_0x39bc74[_0x99fa('0x37')][_0x99fa('0x67')]),'MailQueueId':Number(_0x39bc74[_0x99fa('0x4b')]['id'])});}});}})['then'](respondWithStatusCode(_0x5856b7,null))[_0x99fa('0x49')](handleError(_0x5856b7,null));};exports['getAgents']=function(_0x4ff46a,_0x2174cb,_0x4a99d9){var _0x2a5b36={};var _0xd1b1d={};var _0x540f68;var _0x9aef14;return db[_0x99fa('0x45')][_0x99fa('0x5a')]({'where':{'id':_0x4ff46a['params']['id']}})['then'](handleEntityNotFound(_0x2174cb,null))[_0x99fa('0x27')](function(_0x40bd8d){if(_0x40bd8d){_0x540f68=_0x40bd8d;_0xd1b1d['model']=_[_0x99fa('0x4d')](db[_0x99fa('0x5d')][_0x99fa('0x4c')]);_0xd1b1d['query']=_[_0x99fa('0x4d')](_0x4ff46a[_0x99fa('0x37')]);_0xd1b1d['filters']=_[_0x99fa('0x39')](_0xd1b1d['model'],_0xd1b1d[_0x99fa('0x37')]);_0x2a5b36[_0x99fa('0x3b')]=_['intersection'](_0xd1b1d[_0x99fa('0x36')],qs[_0x99fa('0x3a')](_0x4ff46a['query'][_0x99fa('0x3a')]));_0x2a5b36[_0x99fa('0x3b')]=_0x2a5b36[_0x99fa('0x3b')][_0x99fa('0x3c')]?_0x2a5b36[_0x99fa('0x3b')]:_0xd1b1d['model'];_0x2a5b36[_0x99fa('0x3f')]=qs['sort'](_0x4ff46a['query']['sort']);_0x2a5b36[_0x99fa('0x41')]=qs[_0x99fa('0x38')](_[_0x99fa('0x5b')](_0x4ff46a[_0x99fa('0x37')],_0xd1b1d[_0x99fa('0x38')]));if(_0x4ff46a['query']['filter']){_0x2a5b36[_0x99fa('0x41')]=_[_0x99fa('0x43')](_0x2a5b36[_0x99fa('0x41')],{'$or':_[_0x99fa('0x32')](_0x2a5b36[_0x99fa('0x3b')],function(_0x580bb3){var _0x586aba={};_0x586aba[_0x580bb3]={'$like':'%'+_0x4ff46a['query']['filter']+'%'};return _0x586aba;})});}_0x2a5b36=_[_0x99fa('0x43')]({},_0x2a5b36,_0x4ff46a[_0x99fa('0x5c')]);return _0x540f68['getAgents'](_0x2a5b36);}})[_0x99fa('0x27')](function(_0x9bd13){if(_0x9bd13){_0x9aef14=_0x9bd13[_0x99fa('0x3c')];if(!_0x4ff46a[_0x99fa('0x37')][_0x99fa('0x3d')](_0x99fa('0x3e'))){_0x2a5b36[_0x99fa('0x20')]=qs[_0x99fa('0x20')](_0x4ff46a[_0x99fa('0x37')][_0x99fa('0x20')]);_0x2a5b36[_0x99fa('0x1d')]=qs[_0x99fa('0x1d')](_0x4ff46a[_0x99fa('0x37')][_0x99fa('0x1d')]);}return _0x540f68[_0x99fa('0x8e')](_0x2a5b36);}})[_0x99fa('0x27')](function(_0x30572a){if(_0x30572a){return _0x30572a?{'count':_0x9aef14,'rows':_0x30572a}:null;}})[_0x99fa('0x27')](respondWithResult(_0x2174cb,null))[_0x99fa('0x49')](handleError(_0x2174cb,null));};
\ No newline at end of file
index 5efa6f2..a39405c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa335=['exports','../../mysqldb','MailQueue','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x549a09,_0x2fe584){var _0x3ef978=function(_0x245752){while(--_0x245752){_0x549a09['push'](_0x549a09['shift']());}};_0x3ef978(++_0x2fe584);}(_0xa335,0x145));var _0x5a33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa335[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var MailQueue=require(_0x5a33('0x0'))['db'][_0x5a33('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5a33('0x2'),'afterUpdate':_0x5a33('0x3'),'afterDestroy':_0x5a33('0x4')};function emitEvent(_0x5b62e1){return function(_0x3e91e2,_0x2bffca,_0x1bf6be){MailQueueEvents[_0x5a33('0x5')](_0x5b62e1+':'+_0x3e91e2['id'],_0x3e91e2);MailQueueEvents[_0x5a33('0x5')](_0x5b62e1,_0x3e91e2);_0x1bf6be(null);};}for(var e in events){if(events[_0x5a33('0x6')](e)){var event=events[e];MailQueue[_0x5a33('0x7')](e,emitEvent(event));}}module[_0x5a33('0x8')]=MailQueueEvents;
\ No newline at end of file
+var _0x1647=['../../mysqldb','MailQueue','save','update','emit','hasOwnProperty','events'];(function(_0x24df5d,_0x27035e){var _0x503729=function(_0x4e6272){while(--_0x4e6272){_0x24df5d['push'](_0x24df5d['shift']());}};_0x503729(++_0x27035e);}(_0x1647,0x13a));var _0x7164=function(_0x2ff51e,_0x327cdf){_0x2ff51e=_0x2ff51e-0x0;var _0x603124=_0x1647[_0x2ff51e];return _0x603124;};'use strict';var EventEmitter=require(_0x7164('0x0'));var MailQueue=require(_0x7164('0x1'))['db'][_0x7164('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7164('0x3'),'afterUpdate':_0x7164('0x4'),'afterDestroy':'remove'};function emitEvent(_0x517fbc){return function(_0x17b8bf,_0x48703f,_0x30e448){MailQueueEvents['emit'](_0x517fbc+':'+_0x17b8bf['id'],_0x17b8bf);MailQueueEvents[_0x7164('0x5')](_0x517fbc,_0x17b8bf);_0x30e448(null);};}for(var e in events){if(events[_0x7164('0x6')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module['exports']=MailQueueEvents;
\ No newline at end of file
index 7bccb2e..f047dda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c36=['mail_queues','lodash','util','../../config/logger','api','bluebird','../../config/environment','./mailQueue.attributes','define','MailQueue'];(function(_0x431ae1,_0x385f06){var _0x27fcbd=function(_0x16e71f){while(--_0x16e71f){_0x431ae1['push'](_0x431ae1['shift']());}};_0x27fcbd(++_0x385f06);}(_0x3c36,0x1d7));var _0x63c3=function(_0x4452b6,_0x920e41){_0x4452b6=_0x4452b6-0x0;var _0x2b48f8=_0x3c36[_0x4452b6];return _0x2b48f8;};'use strict';var _=require(_0x63c3('0x0'));var util=require(_0x63c3('0x1'));var logger=require(_0x63c3('0x2'))(_0x63c3('0x3'));var moment=require('moment');var BPromise=require(_0x63c3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x63c3('0x5'));var attributes=require(_0x63c3('0x6'));module['exports']=function(_0xef4a58,_0x43f0fd){return _0xef4a58[_0x63c3('0x7')](_0x63c3('0x8'),attributes,{'tableName':_0x63c3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x98a0=['exports','define','MailQueue','util','moment','request-promise','path','rimraf','./mailQueue.attributes'];(function(_0x53df6d,_0x473b48){var _0x220499=function(_0x56c6ec){while(--_0x56c6ec){_0x53df6d['push'](_0x53df6d['shift']());}};_0x220499(++_0x473b48);}(_0x98a0,0x1c5));var _0x098a=function(_0x41133e,_0x5b98fb){_0x41133e=_0x41133e-0x0;var _0xf444df=_0x98a0[_0x41133e];return _0xf444df;};'use strict';var _=require('lodash');var util=require(_0x098a('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x098a('0x1'));var BPromise=require('bluebird');var rp=require(_0x098a('0x2'));var fs=require('fs');var path=require(_0x098a('0x3'));var rimraf=require(_0x098a('0x4'));var config=require('../../config/environment');var attributes=require(_0x098a('0x5'));module[_0x098a('0x6')]=function(_0x2ef906,_0x417786){return _0x2ef906[_0x098a('0x7')](_0x098a('0x8'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 815ffa6..4b8cd5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0628=['../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s','debug','MailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMailQueue','MailQueue','options','raw','where','limit','map','include','attributes','model','ShowMailQueue','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x0628,0x173));var _0x8062=function(_0x1fee6c,_0x423559){_0x1fee6c=_0x1fee6c-0x0;var _0x5c7760=_0x0628[_0x1fee6c];return _0x5c7760;};'use strict';var _=require(_0x8062('0x0'));var util=require(_0x8062('0x1'));var moment=require(_0x8062('0x2'));var BPromise=require('bluebird');var rs=require(_0x8062('0x3'));var fs=require('fs');var Redis=require(_0x8062('0x4'));var db=require(_0x8062('0x5'))['db'];var utils=require(_0x8062('0x6'));var logger=require(_0x8062('0x7'))(_0x8062('0x8'));var config=require(_0x8062('0x9'));var jayson=require(_0x8062('0xa'));var client=jayson['client'][_0x8062('0xb')]({'port':0x232a});config[_0x8062('0xc')]=_[_0x8062('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x8062('0xe'))(new Redis(config[_0x8062('0xc')]));require(_0x8062('0xf'))[_0x8062('0x10')](socket);function respondWithRpcPromise(_0x2f2705,_0xded67c,_0xf3e6ab){return new BPromise(function(_0xc9b267,_0x1b6da2){return client[_0x8062('0x11')](_0x2f2705,_0xf3e6ab)[_0x8062('0x12')](function(_0x38833c){logger[_0x8062('0x13')](_0x8062('0x14'),_0xded67c,'request\x20sent');logger[_0x8062('0x15')](_0x8062('0x16'),_0xded67c,_0x8062('0x17'),JSON[_0x8062('0x18')](_0x38833c));if(_0x38833c['error']){if(_0x38833c[_0x8062('0x19')][_0x8062('0x1a')]===0x1f4){logger[_0x8062('0x19')](_0x8062('0x14'),_0xded67c,_0x38833c['error']['message']);return _0x1b6da2(_0x38833c[_0x8062('0x19')][_0x8062('0x1b')]);}logger['error'](_0x8062('0x14'),_0xded67c,_0x38833c[_0x8062('0x19')]['message']);return _0xc9b267(_0x38833c['error']['message']);}else{logger['info'](_0x8062('0x14'),_0xded67c,_0x8062('0x17'));_0xc9b267(_0x38833c[_0x8062('0x1c')][_0x8062('0x1b')]);}})[_0x8062('0x1d')](function(_0x2dbe80){logger[_0x8062('0x19')](_0x8062('0x14'),_0xded67c,_0x2dbe80);_0x1b6da2(_0x2dbe80);});});}exports[_0x8062('0x1e')]=function(_0x371fa8){var _0x417bdb=this;return new Promise(function(_0x2764de,_0x344b93){return db[_0x8062('0x1f')]['findAll']({'raw':_0x371fa8[_0x8062('0x20')]?_0x371fa8[_0x8062('0x20')][_0x8062('0x21')]===undefined?!![]:![]:!![],'where':_0x371fa8[_0x8062('0x20')]?_0x371fa8[_0x8062('0x20')][_0x8062('0x22')]||null:null,'attributes':_0x371fa8[_0x8062('0x20')]?_0x371fa8['options']['attributes']||null:null,'limit':_0x371fa8[_0x8062('0x20')]?_0x371fa8[_0x8062('0x20')][_0x8062('0x23')]||null:null,'include':_0x371fa8[_0x8062('0x20')]?_0x371fa8['options']['include']?_[_0x8062('0x24')](_0x371fa8[_0x8062('0x20')][_0x8062('0x25')],function(_0x2c6740){return{'model':db[_0x2c6740['model']],'as':_0x2c6740['as'],'attributes':_0x2c6740[_0x8062('0x26')],'include':_0x2c6740[_0x8062('0x25')]?_[_0x8062('0x24')](_0x2c6740[_0x8062('0x25')],function(_0x3721e6){return{'model':db[_0x3721e6[_0x8062('0x27')]],'as':_0x3721e6['as'],'attributes':_0x3721e6[_0x8062('0x26')],'include':_0x3721e6[_0x8062('0x25')]?_[_0x8062('0x24')](_0x3721e6['include'],function(_0x1a0d6d){return{'model':db[_0x1a0d6d['model']],'as':_0x1a0d6d['as'],'attributes':_0x1a0d6d[_0x8062('0x26')]};}):[]};}):[]};}):[]:[]})[_0x8062('0x12')](function(_0x2f69f4){logger[_0x8062('0x13')](_0x8062('0x1e'),_0x371fa8);logger['debug']('GetMailQueue',_0x371fa8,JSON['stringify'](_0x2f69f4));_0x2764de(_0x2f69f4);})[_0x8062('0x1d')](function(_0x2514ad){logger[_0x8062('0x19')](_0x8062('0x1e'),_0x2514ad[_0x8062('0x1b')],_0x371fa8);_0x344b93(_0x417bdb['error'](0x1f4,_0x2514ad[_0x8062('0x1b')]));});});};exports[_0x8062('0x28')]=function(_0xc59e76){var _0x413ce4=this;return new Promise(function(_0x5a3b47,_0x3cb521){return db[_0x8062('0x1f')][_0x8062('0x29')]({'raw':_0xc59e76[_0x8062('0x20')]?_0xc59e76['options'][_0x8062('0x21')]===undefined?!![]:![]:!![],'where':_0xc59e76[_0x8062('0x20')]?_0xc59e76[_0x8062('0x20')][_0x8062('0x22')]||null:null,'attributes':_0xc59e76['options']?_0xc59e76[_0x8062('0x20')][_0x8062('0x26')]||null:null,'include':_0xc59e76[_0x8062('0x20')]?_0xc59e76[_0x8062('0x20')]['include']?_['map'](_0xc59e76[_0x8062('0x20')][_0x8062('0x25')],function(_0x438bc1){return{'model':db[_0x438bc1[_0x8062('0x27')]],'as':_0x438bc1['as'],'attributes':_0x438bc1['attributes'],'include':_0x438bc1[_0x8062('0x25')]?_[_0x8062('0x24')](_0x438bc1[_0x8062('0x25')],function(_0x11075b){return{'model':db[_0x11075b['model']],'as':_0x11075b['as'],'attributes':_0x11075b['attributes'],'include':_0x11075b[_0x8062('0x25')]?_['map'](_0x11075b['include'],function(_0x22796a){return{'model':db[_0x22796a['model']],'as':_0x22796a['as'],'attributes':_0x22796a[_0x8062('0x26')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xdf5642){logger[_0x8062('0x13')](_0x8062('0x28'),_0xc59e76);logger[_0x8062('0x15')](_0x8062('0x28'),_0xc59e76,JSON[_0x8062('0x18')](_0xdf5642));_0x5a3b47(_0xdf5642);})['catch'](function(_0x1e1018){logger[_0x8062('0x19')](_0x8062('0x28'),_0x1e1018['message'],_0xc59e76);_0x3cb521(_0x413ce4[_0x8062('0x19')](0x1f4,_0x1e1018[_0x8062('0x1b')]));});});};
\ No newline at end of file
+var _0x929a=['../../config/utils','../../config/logger','rpc','jayson/promise','redis','./mailQueue.socket','register','info','MailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailQueue,\x20%s,\x20%s','message','result','catch','GetMailQueue','MailQueue','findAll','options','raw','where','attributes','limit','include','map','model','then','debug','find','ShowMailQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x41bb0b,_0x28189e){var _0x1032a6=function(_0x5a4d0e){while(--_0x5a4d0e){_0x41bb0b['push'](_0x41bb0b['shift']());}};_0x1032a6(++_0x28189e);}(_0x929a,0x10a));var _0xa929=function(_0x32401e,_0x394a65){_0x32401e=_0x32401e-0x0;var _0x1e45c2=_0x929a[_0x32401e];return _0x1e45c2;};'use strict';var _=require(_0xa929('0x0'));var util=require(_0xa929('0x1'));var moment=require(_0xa929('0x2'));var BPromise=require(_0xa929('0x3'));var rs=require(_0xa929('0x4'));var fs=require('fs');var Redis=require(_0xa929('0x5'));var db=require(_0xa929('0x6'))['db'];var utils=require(_0xa929('0x7'));var logger=require(_0xa929('0x8'))(_0xa929('0x9'));var config=require('../../config/environment');var jayson=require(_0xa929('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0xa929('0xb')]=_['defaults'](config[_0xa929('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa929('0xb')]));require(_0xa929('0xc'))[_0xa929('0xd')](socket);function respondWithRpcPromise(_0x5cda3c,_0x5ce9cb,_0x4bbc6c){return new BPromise(function(_0x5a9ad6,_0x23a95e){return client['request'](_0x5cda3c,_0x4bbc6c)['then'](function(_0xc3b270){logger[_0xa929('0xe')]('MailQueue,\x20%s,\x20%s',_0x5ce9cb,'request\x20sent');logger['debug'](_0xa929('0xf'),_0x5ce9cb,_0xa929('0x10'),JSON[_0xa929('0x11')](_0xc3b270));if(_0xc3b270[_0xa929('0x12')]){if(_0xc3b270[_0xa929('0x12')][_0xa929('0x13')]===0x1f4){logger['error'](_0xa929('0x14'),_0x5ce9cb,_0xc3b270[_0xa929('0x12')]['message']);return _0x23a95e(_0xc3b270['error'][_0xa929('0x15')]);}logger['error']('MailQueue,\x20%s,\x20%s',_0x5ce9cb,_0xc3b270[_0xa929('0x12')][_0xa929('0x15')]);return _0x5a9ad6(_0xc3b270[_0xa929('0x12')][_0xa929('0x15')]);}else{logger[_0xa929('0xe')](_0xa929('0x14'),_0x5ce9cb,_0xa929('0x10'));_0x5a9ad6(_0xc3b270[_0xa929('0x16')]['message']);}})[_0xa929('0x17')](function(_0x149d1f){logger[_0xa929('0x12')](_0xa929('0x14'),_0x5ce9cb,_0x149d1f);_0x23a95e(_0x149d1f);});});}exports[_0xa929('0x18')]=function(_0xc4909a){var _0x172117=this;return new Promise(function(_0x15644c,_0x53442d){return db[_0xa929('0x19')][_0xa929('0x1a')]({'raw':_0xc4909a[_0xa929('0x1b')]?_0xc4909a[_0xa929('0x1b')][_0xa929('0x1c')]===undefined?!![]:![]:!![],'where':_0xc4909a[_0xa929('0x1b')]?_0xc4909a[_0xa929('0x1b')][_0xa929('0x1d')]||null:null,'attributes':_0xc4909a['options']?_0xc4909a[_0xa929('0x1b')][_0xa929('0x1e')]||null:null,'limit':_0xc4909a['options']?_0xc4909a[_0xa929('0x1b')][_0xa929('0x1f')]||null:null,'include':_0xc4909a[_0xa929('0x1b')]?_0xc4909a[_0xa929('0x1b')][_0xa929('0x20')]?_[_0xa929('0x21')](_0xc4909a[_0xa929('0x1b')][_0xa929('0x20')],function(_0x254b4d){return{'model':db[_0x254b4d[_0xa929('0x22')]],'as':_0x254b4d['as'],'attributes':_0x254b4d[_0xa929('0x1e')],'include':_0x254b4d[_0xa929('0x20')]?_[_0xa929('0x21')](_0x254b4d[_0xa929('0x20')],function(_0x42e496){return{'model':db[_0x42e496[_0xa929('0x22')]],'as':_0x42e496['as'],'attributes':_0x42e496[_0xa929('0x1e')],'include':_0x42e496['include']?_[_0xa929('0x21')](_0x42e496[_0xa929('0x20')],function(_0x58de45){return{'model':db[_0x58de45[_0xa929('0x22')]],'as':_0x58de45['as'],'attributes':_0x58de45['attributes']};}):[]};}):[]};}):[]:[]})[_0xa929('0x23')](function(_0x1e740d){logger[_0xa929('0xe')](_0xa929('0x18'),_0xc4909a);logger[_0xa929('0x24')](_0xa929('0x18'),_0xc4909a,JSON['stringify'](_0x1e740d));_0x15644c(_0x1e740d);})[_0xa929('0x17')](function(_0x4fa0f3){logger[_0xa929('0x12')](_0xa929('0x18'),_0x4fa0f3[_0xa929('0x15')],_0xc4909a);_0x53442d(_0x172117[_0xa929('0x12')](0x1f4,_0x4fa0f3[_0xa929('0x15')]));});});};exports['ShowMailQueue']=function(_0xd3fb22){var _0x4ef10e=this;return new Promise(function(_0x698cfa,_0x56edcb){return db[_0xa929('0x19')][_0xa929('0x25')]({'raw':_0xd3fb22[_0xa929('0x1b')]?_0xd3fb22[_0xa929('0x1b')][_0xa929('0x1c')]===undefined?!![]:![]:!![],'where':_0xd3fb22[_0xa929('0x1b')]?_0xd3fb22[_0xa929('0x1b')][_0xa929('0x1d')]||null:null,'attributes':_0xd3fb22[_0xa929('0x1b')]?_0xd3fb22['options'][_0xa929('0x1e')]||null:null,'include':_0xd3fb22[_0xa929('0x1b')]?_0xd3fb22['options']['include']?_['map'](_0xd3fb22['options'][_0xa929('0x20')],function(_0x562a60){return{'model':db[_0x562a60[_0xa929('0x22')]],'as':_0x562a60['as'],'attributes':_0x562a60['attributes'],'include':_0x562a60[_0xa929('0x20')]?_[_0xa929('0x21')](_0x562a60[_0xa929('0x20')],function(_0x2d54b6){return{'model':db[_0x2d54b6[_0xa929('0x22')]],'as':_0x2d54b6['as'],'attributes':_0x2d54b6[_0xa929('0x1e')],'include':_0x2d54b6[_0xa929('0x20')]?_[_0xa929('0x21')](_0x2d54b6[_0xa929('0x20')],function(_0x58a28d){return{'model':db[_0x58a28d[_0xa929('0x22')]],'as':_0x58a28d['as'],'attributes':_0x58a28d[_0xa929('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xa929('0x23')](function(_0x183435){logger[_0xa929('0xe')](_0xa929('0x26'),_0xd3fb22);logger['debug']('ShowMailQueue',_0xd3fb22,JSON[_0xa929('0x11')](_0x183435));_0x698cfa(_0x183435);})[_0xa929('0x17')](function(_0x53aeab){logger[_0xa929('0x12')](_0xa929('0x26'),_0x53aeab[_0xa929('0x15')],_0xd3fb22);_0x56edcb(_0x4ef10e[_0xa929('0x12')](0x1f4,_0x53aeab['message']));});});};
\ No newline at end of file
index 33fa7fe..b0f0963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f4c=['register','length','mailQueue:','./mailQueue.events','save','remove','update','emit'];(function(_0x2821d0,_0x5149d1){var _0x3683d6=function(_0x238d51){while(--_0x238d51){_0x2821d0['push'](_0x2821d0['shift']());}};_0x3683d6(++_0x5149d1);}(_0x8f4c,0x113));var _0xc8f4=function(_0x4f51f9,_0x5d5613){_0x4f51f9=_0x4f51f9-0x0;var _0x533984=_0x8f4c[_0x4f51f9];return _0x533984;};'use strict';var MailQueueEvents=require(_0xc8f4('0x0'));var events=[_0xc8f4('0x1'),_0xc8f4('0x2'),_0xc8f4('0x3')];function createListener(_0x19893b,_0x134d73){return function(_0x580083){_0x134d73[_0xc8f4('0x4')](_0x19893b,_0x580083);};}function removeListener(_0x47350d,_0x133764){return function(){MailQueueEvents['removeListener'](_0x47350d,_0x133764);};}exports[_0xc8f4('0x5')]=function(_0x5208da){for(var _0x4c86f8=0x0,_0x520063=events[_0xc8f4('0x6')];_0x4c86f8<_0x520063;_0x4c86f8++){var _0x48c39d=events[_0x4c86f8];var _0x3ea9a2=createListener(_0xc8f4('0x7')+_0x48c39d,_0x5208da);MailQueueEvents['on'](_0x48c39d,_0x3ea9a2);}};
\ No newline at end of file
+var _0x6789=['./mailQueue.events','save','remove','update','removeListener','register','length'];(function(_0xc56a93,_0x54071a){var _0xe88b5b=function(_0xb6c9bc){while(--_0xb6c9bc){_0xc56a93['push'](_0xc56a93['shift']());}};_0xe88b5b(++_0x54071a);}(_0x6789,0xcb));var _0x9678=function(_0x19bf6f,_0x31ffef){_0x19bf6f=_0x19bf6f-0x0;var _0x43a18a=_0x6789[_0x19bf6f];return _0x43a18a;};'use strict';var MailQueueEvents=require(_0x9678('0x0'));var events=[_0x9678('0x1'),_0x9678('0x2'),_0x9678('0x3')];function createListener(_0x4ce75d,_0x47642d){return function(_0x3dfa64){_0x47642d['emit'](_0x4ce75d,_0x3dfa64);};}function removeListener(_0x5a21d5,_0x3405da){return function(){MailQueueEvents[_0x9678('0x4')](_0x5a21d5,_0x3405da);};}exports[_0x9678('0x5')]=function(_0x4d47fc){for(var _0x1ff8c9=0x0,_0x5a71b4=events[_0x9678('0x6')];_0x1ff8c9<_0x5a71b4;_0x1ff8c9++){var _0x4c4d20=events[_0x1ff8c9];var _0x368c42=createListener('mailQueue:'+_0x4c4d20,_0x4d47fc);MailQueueEvents['on'](_0x4c4d20,_0x368c42);}};
\ No newline at end of file
index 104cfbf..9944047 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddb6=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','index','/describe','describe','get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x101557,_0x139da6){var _0xfda26a=function(_0x195b82){while(--_0x195b82){_0x101557['push'](_0x101557['shift']());}};_0xfda26a(++_0x139da6);}(_0xddb6,0x1a3));var _0x6ddb=function(_0x2bd486,_0x47a6ab){_0x2bd486=_0x2bd486-0x0;var _0x35c35f=_0xddb6[_0x2bd486];return _0x35c35f;};'use strict';var multer=require(_0x6ddb('0x0'));var util=require(_0x6ddb('0x1'));var path=require(_0x6ddb('0x2'));var timeout=require(_0x6ddb('0x3'));var express=require(_0x6ddb('0x4'));var router=express[_0x6ddb('0x5')]();var fs_extra=require(_0x6ddb('0x6'));var auth=require(_0x6ddb('0x7'));var interaction=require(_0x6ddb('0x8'));var config=require(_0x6ddb('0x9'));var controller=require(_0x6ddb('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x6ddb('0xb')]);router['get'](_0x6ddb('0xc'),auth['isAuthenticated'](),controller[_0x6ddb('0xd')]);router[_0x6ddb('0xe')](_0x6ddb('0xf'),auth[_0x6ddb('0x10')](),controller[_0x6ddb('0x11')]);router[_0x6ddb('0x12')]('/',auth['isAuthenticated'](),controller[_0x6ddb('0x13')]);router[_0x6ddb('0x14')]('/:id',auth[_0x6ddb('0x10')](),controller[_0x6ddb('0x15')]);router[_0x6ddb('0x16')](_0x6ddb('0xf'),auth[_0x6ddb('0x10')](),controller[_0x6ddb('0x17')]);module[_0x6ddb('0x18')]=router;
\ No newline at end of file
+var _0x6c2e=['describe','/:id','show','create','put','update','destroy','exports','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','/describe'];(function(_0x1c8a09,_0x5b3517){var _0x191569=function(_0xa567d6){while(--_0xa567d6){_0x1c8a09['push'](_0x1c8a09['shift']());}};_0x191569(++_0x5b3517);}(_0x6c2e,0x17e));var _0xe6c2=function(_0xc71505,_0x2270a1){_0xc71505=_0xc71505-0x0;var _0x337df1=_0x6c2e[_0xc71505];return _0x337df1;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xe6c2('0x0'));var express=require(_0xe6c2('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xe6c2('0x2'));var interaction=require(_0xe6c2('0x3'));var config=require(_0xe6c2('0x4'));var controller=require(_0xe6c2('0x5'));router[_0xe6c2('0x6')]('/',auth[_0xe6c2('0x7')](),controller['index']);router['get'](_0xe6c2('0x8'),auth[_0xe6c2('0x7')](),controller[_0xe6c2('0x9')]);router[_0xe6c2('0x6')](_0xe6c2('0xa'),auth[_0xe6c2('0x7')](),controller[_0xe6c2('0xb')]);router['post']('/',auth[_0xe6c2('0x7')](),controller[_0xe6c2('0xc')]);router[_0xe6c2('0xd')]('/:id',auth[_0xe6c2('0x7')](),controller[_0xe6c2('0xe')]);router['delete'](_0xe6c2('0xa'),auth['isAuthenticated'](),controller[_0xe6c2('0xf')]);module[_0xe6c2('0x10')]=router;
\ No newline at end of file
index 699c686..6fc475f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65e0=['moment','sequelize','exports','STRING','DATE'];(function(_0x13e0e6,_0x146b11){var _0x3f374f=function(_0x4ac979){while(--_0x4ac979){_0x13e0e6['push'](_0x13e0e6['shift']());}};_0x3f374f(++_0x146b11);}(_0x65e0,0x96));var _0x065e=function(_0xc0213d,_0x4a3b1d){_0xc0213d=_0xc0213d-0x0;var _0x1a93c4=_0x65e0[_0xc0213d];return _0x1a93c4;};'use strict';var moment=require(_0x065e('0x0'));var Sequelize=require(_0x065e('0x1'));module[_0x065e('0x2')]={'uniqueid':{'type':Sequelize[_0x065e('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x065e('0x4')]},'leaveAt':{'type':Sequelize[_0x065e('0x4')]},'acceptAt':{'type':Sequelize[_0x065e('0x4')]},'exitAt':{'type':Sequelize[_0x065e('0x4')]},'reason':{'type':Sequelize[_0x065e('0x3')]}};
\ No newline at end of file
+var _0x6a7c=['exports','STRING','DATE','moment'];(function(_0x4258c5,_0x3390fd){var _0x5b953c=function(_0x1401b4){while(--_0x1401b4){_0x4258c5['push'](_0x4258c5['shift']());}};_0x5b953c(++_0x3390fd);}(_0x6a7c,0x1e7));var _0xc6a7=function(_0x208c6c,_0x37848a){_0x208c6c=_0x208c6c-0x0;var _0x37496b=_0x6a7c[_0x208c6c];return _0x37496b;};'use strict';var moment=require(_0xc6a7('0x0'));var Sequelize=require('sequelize');module[_0xc6a7('0x1')]={'uniqueid':{'type':Sequelize[_0xc6a7('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xc6a7('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xc6a7('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index dea9e2e..6e68e06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5af=['length','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','MailQueueReport','includeAll','include','findAll','catch','params','create','body','find','describe','rimraf','zip-dir','request-promise','moment','bluebird','util','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','then','error','stack','name','rawAttributes','key','model','map','query','keys','filters','intersection','fields','attributes'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0xe5af,0x9c));var _0xfe5a=function(_0x2ec183,_0x55f033){_0x2ec183=_0x2ec183-0x0;var _0x52d19e=_0xe5af[_0x2ec183];return _0x52d19e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfe5a('0x0'));var zipdir=require(_0xfe5a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfe5a('0x2'));var moment=require(_0xfe5a('0x3'));var BPromise=require(_0xfe5a('0x4'));var Mustache=require('mustache');var util=require(_0xfe5a('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xfe5a('0x6'));var ejs=require(_0xfe5a('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfe5a('0x8'));var crypto=require(_0xfe5a('0x9'));var jsforce=require(_0xfe5a('0xa'));var deskjs=require(_0xfe5a('0xb'));var toCsv=require('to-csv');var querystring=require(_0xfe5a('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfe5a('0xd'));var qs=require(_0xfe5a('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfe5a('0xf'));var logger=require(_0xfe5a('0x10'))(_0xfe5a('0x11'));var utils=require(_0xfe5a('0x12'));var config=require(_0xfe5a('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xfe5a('0x14'))['db'];function respondWithStatusCode(_0x9d1f4f,_0x20b206){_0x20b206=_0x20b206||0xcc;return function(_0x374ded){if(_0x374ded){return _0x9d1f4f[_0xfe5a('0x15')](_0x20b206);}return _0x9d1f4f['status'](_0x20b206)[_0xfe5a('0x16')]();};}function respondWithResult(_0x17bbbe,_0x42969b){_0x42969b=_0x42969b||0xc8;return function(_0x362115){if(_0x362115){return _0x17bbbe[_0xfe5a('0x17')](_0x42969b)[_0xfe5a('0x18')](_0x362115);}};}function respondWithFilteredResult(_0x375380,_0xeb454){return function(_0x111d4d){if(_0x111d4d){var _0x18c57b=typeof _0xeb454[_0xfe5a('0x19')]===_0xfe5a('0x1a')&&typeof _0xeb454[_0xfe5a('0x1b')]===_0xfe5a('0x1a');var _0x3edcab=_0x111d4d[_0xfe5a('0x1c')];var _0x5bf597=_0x18c57b?0x0:_0xeb454[_0xfe5a('0x19')];var _0x456707=_0x18c57b?_0x111d4d['count']:_0xeb454[_0xfe5a('0x19')]+_0xeb454[_0xfe5a('0x1b')];var _0x39d905;if(_0x456707>=_0x3edcab){_0x456707=_0x3edcab;_0x39d905=0xc8;}else{_0x39d905=0xce;}_0x375380['status'](_0x39d905);return _0x375380['set'](_0xfe5a('0x1d'),_0x5bf597+'-'+_0x456707+'/'+_0x3edcab)[_0xfe5a('0x18')](_0x111d4d);}return null;};}function patchUpdates(_0xded538){return function(_0x3b3022){try{jsonpatch[_0xfe5a('0x1e')](_0x3b3022,_0xded538,!![]);}catch(_0x355869){return BPromise['reject'](_0x355869);}return _0x3b3022[_0xfe5a('0x1f')]();};}function saveUpdates(_0x592521,_0x3dfa57){return function(_0x39d825){if(_0x39d825){return _0x39d825[_0xfe5a('0x20')](_0x592521)['then'](function(_0x4bbef1){return _0x4bbef1;});}return null;};}function removeEntity(_0x247be4,_0x3e55fd){return function(_0x494df3){if(_0x494df3){return _0x494df3[_0xfe5a('0x21')]()[_0xfe5a('0x22')](function(){_0x247be4['status'](0xcc)[_0xfe5a('0x16')]();});}};}function handleEntityNotFound(_0x3a4f3c,_0x31cc60){return function(_0x2b4f1c){if(!_0x2b4f1c){_0x3a4f3c['sendStatus'](0x194);}return _0x2b4f1c;};}function handleError(_0x42136e,_0x2f5d04){_0x2f5d04=_0x2f5d04||0x1f4;return function(_0x24481f){logger[_0xfe5a('0x23')](_0x24481f[_0xfe5a('0x24')]);if(_0x24481f[_0xfe5a('0x25')]){delete _0x24481f[_0xfe5a('0x25')];}_0x42136e[_0xfe5a('0x17')](_0x2f5d04)['send'](_0x24481f);};}exports['index']=function(_0x712b44,_0x485f9d){var _0xc53869={},_0xfcb05b={},_0x11bf97={'count':0x0,'rows':[]};var _0x482a35=_['map'](db['MailQueueReport'][_0xfe5a('0x26')],function(_0x582f2d){return{'name':_0x582f2d['fieldName'],'type':_0x582f2d['type'][_0xfe5a('0x27')]};});_0xfcb05b[_0xfe5a('0x28')]=_[_0xfe5a('0x29')](_0x482a35,_0xfe5a('0x25'));_0xfcb05b[_0xfe5a('0x2a')]=_[_0xfe5a('0x2b')](_0x712b44[_0xfe5a('0x2a')]);_0xfcb05b[_0xfe5a('0x2c')]=_[_0xfe5a('0x2d')](_0xfcb05b[_0xfe5a('0x28')],_0xfcb05b[_0xfe5a('0x2a')]);_0xc53869['attributes']=_[_0xfe5a('0x2d')](_0xfcb05b[_0xfe5a('0x28')],qs['fields'](_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x2e')]));_0xc53869[_0xfe5a('0x2f')]=_0xc53869[_0xfe5a('0x2f')][_0xfe5a('0x30')]?_0xc53869['attributes']:_0xfcb05b['model'];if(!_0x712b44[_0xfe5a('0x2a')]['hasOwnProperty'](_0xfe5a('0x31'))){_0xc53869[_0xfe5a('0x1b')]=qs[_0xfe5a('0x1b')](_0x712b44[_0xfe5a('0x2a')]['limit']);_0xc53869[_0xfe5a('0x19')]=qs[_0xfe5a('0x19')](_0x712b44[_0xfe5a('0x2a')]['offset']);}_0xc53869[_0xfe5a('0x32')]=qs[_0xfe5a('0x33')](_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x33')]);_0xc53869['where']=qs[_0xfe5a('0x2c')](_['pick'](_0x712b44[_0xfe5a('0x2a')],_0xfcb05b[_0xfe5a('0x2c')]),_0x482a35);if(_0x712b44['query'][_0xfe5a('0x34')]){_0xc53869[_0xfe5a('0x35')]=_[_0xfe5a('0x36')](_0xc53869[_0xfe5a('0x35')],{'$or':_['map'](_0x482a35,function(_0x193ce0){if(_0x193ce0[_0xfe5a('0x37')]!==_0xfe5a('0x38')){var _0x560088={};_0x560088[_0x193ce0[_0xfe5a('0x25')]]={'$like':'%'+_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x34')]+'%'};return _0x560088;}})});}_0xc53869=_[_0xfe5a('0x36')]({},_0xc53869,_0x712b44[_0xfe5a('0x39')]);var _0x162c48={'where':_0xc53869[_0xfe5a('0x35')]};return db[_0xfe5a('0x3a')][_0xfe5a('0x1c')](_0x162c48)[_0xfe5a('0x22')](function(_0x20da14){_0x11bf97['count']=_0x20da14;if(_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x3b')]){_0xc53869[_0xfe5a('0x3c')]=[{'all':!![]}];}return db[_0xfe5a('0x3a')][_0xfe5a('0x3d')](_0xc53869);})[_0xfe5a('0x22')](function(_0x3475fb){_0x11bf97['rows']=_0x3475fb;return _0x11bf97;})[_0xfe5a('0x22')](respondWithFilteredResult(_0x485f9d,_0xc53869))[_0xfe5a('0x3e')](handleError(_0x485f9d,null));};exports['show']=function(_0x59caa1,_0x252904){var _0x4c17fd={'raw':!![],'where':{'id':_0x59caa1[_0xfe5a('0x3f')]['id']}},_0x54096d={};_0x54096d[_0xfe5a('0x28')]=_['keys'](db[_0xfe5a('0x3a')]['rawAttributes']);_0x54096d[_0xfe5a('0x2a')]=_[_0xfe5a('0x2b')](_0x59caa1[_0xfe5a('0x2a')]);_0x54096d[_0xfe5a('0x2c')]=_[_0xfe5a('0x2d')](_0x54096d[_0xfe5a('0x28')],_0x54096d['query']);_0x4c17fd[_0xfe5a('0x2f')]=_[_0xfe5a('0x2d')](_0x54096d[_0xfe5a('0x28')],qs[_0xfe5a('0x2e')](_0x59caa1[_0xfe5a('0x2a')][_0xfe5a('0x2e')]));_0x4c17fd[_0xfe5a('0x2f')]=_0x4c17fd[_0xfe5a('0x2f')][_0xfe5a('0x30')]?_0x4c17fd[_0xfe5a('0x2f')]:_0x54096d[_0xfe5a('0x28')];if(_0x59caa1[_0xfe5a('0x2a')][_0xfe5a('0x3b')]){_0x4c17fd[_0xfe5a('0x3c')]=[{'all':!![]}];}_0x4c17fd=_['merge']({},_0x4c17fd,_0x59caa1[_0xfe5a('0x39')]);return db[_0xfe5a('0x3a')]['find'](_0x4c17fd)['then'](handleEntityNotFound(_0x252904,null))[_0xfe5a('0x22')](respondWithResult(_0x252904,null))[_0xfe5a('0x3e')](handleError(_0x252904,null));};exports[_0xfe5a('0x40')]=function(_0x3ccf98,_0x3cf1b5){return db[_0xfe5a('0x3a')][_0xfe5a('0x40')](_0x3ccf98['body'],{})[_0xfe5a('0x22')](respondWithResult(_0x3cf1b5,0xc9))['catch'](handleError(_0x3cf1b5,null));};exports[_0xfe5a('0x20')]=function(_0x5a807e,_0x433562){if(_0x5a807e[_0xfe5a('0x41')]['id']){delete _0x5a807e[_0xfe5a('0x41')]['id'];}return db[_0xfe5a('0x3a')]['find']({'where':{'id':_0x5a807e[_0xfe5a('0x3f')]['id']}})[_0xfe5a('0x22')](handleEntityNotFound(_0x433562,null))['then'](saveUpdates(_0x5a807e[_0xfe5a('0x41')],null))['then'](respondWithResult(_0x433562,null))['catch'](handleError(_0x433562,null));};exports[_0xfe5a('0x21')]=function(_0x4e02c9,_0x374ce5){return db[_0xfe5a('0x3a')][_0xfe5a('0x42')]({'where':{'id':_0x4e02c9[_0xfe5a('0x3f')]['id']}})['then'](handleEntityNotFound(_0x374ce5,null))[_0xfe5a('0x22')](removeEntity(_0x374ce5,null))['catch'](handleError(_0x374ce5,null));};exports[_0xfe5a('0x43')]=function(_0x38409b,_0x149132){return db['MailQueueReport'][_0xfe5a('0x43')]()[_0xfe5a('0x22')](respondWithResult(_0x149132,null))['catch'](handleError(_0x149132,null));};
\ No newline at end of file
+var _0x90b1=['intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','pick','filter','merge','where','type','options','MailQueueReport','includeAll','rows','include','find','catch','body','params','describe','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'];(function(_0x400778,_0x128a83){var _0x33fd3c=function(_0x25f4fb){while(--_0x25f4fb){_0x400778['push'](_0x400778['shift']());}};_0x33fd3c(++_0x128a83);}(_0x90b1,0x1bb));var _0x190b=function(_0x5e985d,_0x65dc0f){_0x5e985d=_0x5e985d-0x0;var _0x2974ad=_0x90b1[_0x5e985d];return _0x2974ad;};'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['MailQueueReport'][_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['MailQueueReport']['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['create']=function(_0x1f2262,_0xadc789){return db[_0x190b('0x3d')]['create'](_0x1f2262[_0x190b('0x43')],{})[_0x190b('0x22')](respondWithResult(_0xadc789,0xc9))[_0x190b('0x42')](handleError(_0xadc789,null));};exports['update']=function(_0x4cb561,_0x14958e){if(_0x4cb561[_0x190b('0x43')]['id']){delete _0x4cb561[_0x190b('0x43')]['id'];}return db[_0x190b('0x3d')][_0x190b('0x41')]({'where':{'id':_0x4cb561[_0x190b('0x44')]['id']}})['then'](handleEntityNotFound(_0x14958e,null))[_0x190b('0x22')](saveUpdates(_0x4cb561[_0x190b('0x43')],null))[_0x190b('0x22')](respondWithResult(_0x14958e,null))['catch'](handleError(_0x14958e,null));};exports[_0x190b('0x23')]=function(_0x38c135,_0x215ab6){return db['MailQueueReport'][_0x190b('0x41')]({'where':{'id':_0x38c135[_0x190b('0x44')]['id']}})[_0x190b('0x22')](handleEntityNotFound(_0x215ab6,null))[_0x190b('0x22')](removeEntity(_0x215ab6,null))[_0x190b('0x42')](handleError(_0x215ab6,null));};exports[_0x190b('0x45')]=function(_0x33cc78,_0x2ea1c8){return db[_0x190b('0x3d')][_0x190b('0x45')]()[_0x190b('0x22')](respondWithResult(_0x2ea1c8,null))['catch'](handleError(_0x2ea1c8,null));};
\ No newline at end of file
index 2ba7d2e..6d9f314 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f60=['MailQueueReport','report_mail_queue','uniqueid','lodash','util','api','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','define'];(function(_0x117473,_0x485375){var _0x38711a=function(_0x33e119){while(--_0x33e119){_0x117473['push'](_0x117473['shift']());}};_0x38711a(++_0x485375);}(_0x1f60,0x1bf));var _0x01f6=function(_0x2ca2d9,_0x493cfb){_0x2ca2d9=_0x2ca2d9-0x0;var _0x218a20=_0x1f60[_0x2ca2d9];return _0x218a20;};'use strict';var _=require(_0x01f6('0x0'));var util=require(_0x01f6('0x1'));var logger=require('../../config/logger')(_0x01f6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x01f6('0x3'));var fs=require('fs');var path=require(_0x01f6('0x4'));var rimraf=require(_0x01f6('0x5'));var config=require(_0x01f6('0x6'));var attributes=require(_0x01f6('0x7'));module['exports']=function(_0x150d0b,_0x13ddeb){return _0x150d0b[_0x01f6('0x8')](_0x01f6('0x9'),attributes,{'tableName':_0x01f6('0xa'),'paranoid':![],'indexes':[{'name':_0x01f6('0xb'),'fields':[_0x01f6('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf2f5=['exports','define','MailQueueReport','report_mail_queue','uniqueid','lodash','util','../../config/logger','api','request-promise','path','../../config/environment'];(function(_0x802997,_0x5534a2){var _0x35c641=function(_0x22c4f2){while(--_0x22c4f2){_0x802997['push'](_0x802997['shift']());}};_0x35c641(++_0x5534a2);}(_0xf2f5,0x1d9));var _0x5f2f=function(_0x44451f,_0x4b1b91){_0x44451f=_0x44451f-0x0;var _0x1b24c5=_0xf2f5[_0x44451f];return _0x1b24c5;};'use strict';var _=require(_0x5f2f('0x0'));var util=require(_0x5f2f('0x1'));var logger=require(_0x5f2f('0x2'))(_0x5f2f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5f2f('0x4'));var fs=require('fs');var path=require(_0x5f2f('0x5'));var rimraf=require('rimraf');var config=require(_0x5f2f('0x6'));var attributes=require('./mailQueueReport.attributes');module[_0x5f2f('0x7')]=function(_0x54f784,_0x15cb2a){return _0x54f784[_0x5f2f('0x8')](_0x5f2f('0x9'),attributes,{'tableName':_0x5f2f('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x5f2f('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 8cf2553..a1a3e95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x13fd51,_0x403570){var _0x576306=function(_0x217b7b){while(--_0x217b7b){_0x13fd51['push'](_0x13fd51['shift']());}};_0x576306(++_0x403570);}(_0x326f,0xd1));var _0xf326=function(_0x23101a,_0x50481f){_0x23101a=_0x23101a-0x0;var _0x4f811a=_0x326f[_0x23101a];return _0x4f811a;};'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
+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(_0x54eb2d,_0x1369a4){var _0x1db258=function(_0xdfb198){while(--_0xdfb198){_0x54eb2d['push'](_0x54eb2d['shift']());}};_0x1db258(++_0x1369a4);}(_0x326f,0xd1));var _0xf326=function(_0x5c809d,_0x513fab){_0x5c809d=_0x5c809d-0x0;var _0x2fe12a=_0x326f[_0x5c809d];return _0x2fe12a;};'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 0cc970f..fbe4be6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x441c12,_0x491e5a){var _0x312edf=function(_0x40605b){while(--_0x40605b){_0x441c12['push'](_0x441c12['shift']());}};_0x312edf(++_0x491e5a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x3aa9d1,_0x5a7841){var _0x465a8e=function(_0x5c1dfe){while(--_0x5c1dfe){_0x3aa9d1['push'](_0x3aa9d1['shift']());}};_0x465a8e(++_0x5a7841);}(_0x70e0,0x17b));var _0x070e=function(_0x246256,_0x66764d){_0x246256=_0x246256-0x0;var _0x376129=_0x70e0[_0x246256];return _0x376129;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index cff2f61..8dcf589 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x073e=['sequelize','exports','STRING','INTEGER','BOOLEAN'];(function(_0xa9dd3e,_0x218069){var _0x4f03a1=function(_0x3427d7){while(--_0x3427d7){_0xa9dd3e['push'](_0xa9dd3e['shift']());}};_0x4f03a1(++_0x218069);}(_0x073e,0x181));var _0xe073=function(_0x4ee096,_0x53f5d2){_0x4ee096=_0x4ee096-0x0;var _0x575f3c=_0x073e[_0x4ee096];return _0x575f3c;};'use strict';var Sequelize=require(_0xe073('0x0'));module[_0xe073('0x1')]={'description':{'type':Sequelize[_0xe073('0x2')]},'host':{'type':Sequelize[_0xe073('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xe073('0x3')]},'tls':{'type':Sequelize[_0xe073('0x4')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xe073('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0xe073('0x2')]}};
\ No newline at end of file
+var _0x1bc6=['STRING','BOOLEAN','INBOX','INTEGER','sequelize','exports'];(function(_0x5c24c2,_0x195081){var _0x5473ac=function(_0x4585b1){while(--_0x4585b1){_0x5c24c2['push'](_0x5c24c2['shift']());}};_0x5473ac(++_0x195081);}(_0x1bc6,0x94));var _0x61bc=function(_0x5dc4b8,_0x34d93){_0x5dc4b8=_0x5dc4b8-0x0;var _0x4d86fb=_0x1bc6[_0x5dc4b8];return _0x4d86fb;};'use strict';var Sequelize=require(_0x61bc('0x0'));module[_0x61bc('0x1')]={'description':{'type':Sequelize[_0x61bc('0x2')]},'host':{'type':Sequelize[_0x61bc('0x2')]},'authentication':{'type':Sequelize[_0x61bc('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0x61bc('0x2')]},'password':{'type':Sequelize[_0x61bc('0x2')]},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize[_0x61bc('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x61bc('0x2')],'defaultValue':_0x61bc('0x4')},'connTimeout':{'type':Sequelize[_0x61bc('0x5')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x61bc('0x5')],'defaultValue':0x5},'service':{'type':Sequelize[_0x61bc('0x2')]}};
\ No newline at end of file
index 047595e..6f6a2a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33ce=['path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','mail_servers_in','lodash','../../config/logger','api','moment','bluebird'];(function(_0xacfcd9,_0xb223f7){var _0x4d112d=function(_0x3a2318){while(--_0x3a2318){_0xacfcd9['push'](_0xacfcd9['shift']());}};_0x4d112d(++_0xb223f7);}(_0x33ce,0x1b5));var _0xe33c=function(_0x3b295e,_0x3c18a6){_0x3b295e=_0x3b295e-0x0;var _0x22a0bc=_0x33ce[_0x3b295e];return _0x22a0bc;};'use strict';var _=require(_0xe33c('0x0'));var util=require('util');var logger=require(_0xe33c('0x1'))(_0xe33c('0x2'));var moment=require(_0xe33c('0x3'));var BPromise=require(_0xe33c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe33c('0x5'));var rimraf=require(_0xe33c('0x6'));var config=require(_0xe33c('0x7'));var attributes=require(_0xe33c('0x8'));module[_0xe33c('0x9')]=function(_0x3d90f9,_0x28fcd8){return _0x3d90f9[_0xe33c('0xa')](_0xe33c('0xb'),attributes,{'tableName':_0xe33c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x67fc=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','MailServerIn','mail_servers_in','util'];(function(_0x35fd9b,_0x1a3975){var _0xd06ff4=function(_0x141e51){while(--_0x141e51){_0x35fd9b['push'](_0x35fd9b['shift']());}};_0xd06ff4(++_0x1a3975);}(_0x67fc,0x196));var _0xc67f=function(_0x43241c,_0xad3f71){_0x43241c=_0x43241c-0x0;var _0x43b112=_0x67fc[_0x43241c];return _0x43b112;};'use strict';var _=require('lodash');var util=require(_0xc67f('0x0'));var logger=require(_0xc67f('0x1'))(_0xc67f('0x2'));var moment=require(_0xc67f('0x3'));var BPromise=require('bluebird');var rp=require(_0xc67f('0x4'));var fs=require('fs');var path=require(_0xc67f('0x5'));var rimraf=require(_0xc67f('0x6'));var config=require(_0xc67f('0x7'));var attributes=require('./mailServerIn.attributes');module[_0xc67f('0x8')]=function(_0x3acd5e,_0x3fa3ea){return _0x3acd5e['define'](_0xc67f('0x9'),attributes,{'tableName':_0xc67f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4ce2127..d21a5e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67be=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','MailServerIn','options','raw','where','attributes','limit','include','map','model','GetMailServerIn','lodash','util','moment'];(function(_0x456b57,_0x58691a){var _0x18f49f=function(_0x1dc195){while(--_0x1dc195){_0x456b57['push'](_0x456b57['shift']());}};_0x18f49f(++_0x58691a);}(_0x67be,0x105));var _0xe67b=function(_0x1568f4,_0x13bf98){_0x1568f4=_0x1568f4-0x0;var _0x3ad3fc=_0x67be[_0x1568f4];return _0x3ad3fc;};'use strict';var _=require(_0xe67b('0x0'));var util=require(_0xe67b('0x1'));var moment=require(_0xe67b('0x2'));var BPromise=require(_0xe67b('0x3'));var rs=require(_0xe67b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe67b('0x5'))['db'];var utils=require(_0xe67b('0x6'));var logger=require(_0xe67b('0x7'))(_0xe67b('0x8'));var config=require('../../config/environment');var jayson=require(_0xe67b('0x9'));var client=jayson[_0xe67b('0xa')][_0xe67b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x55b950,_0x1a381b,_0x4872de){return new BPromise(function(_0x3f1251,_0x2fcd18){return client[_0xe67b('0xc')](_0x55b950,_0x4872de)[_0xe67b('0xd')](function(_0x447a7a){logger[_0xe67b('0xe')](_0xe67b('0xf'),_0x1a381b,'request\x20sent');logger[_0xe67b('0x10')](_0xe67b('0x11'),_0x1a381b,_0xe67b('0x12'),JSON[_0xe67b('0x13')](_0x447a7a));if(_0x447a7a[_0xe67b('0x14')]){if(_0x447a7a[_0xe67b('0x14')]['code']===0x1f4){logger['error'](_0xe67b('0xf'),_0x1a381b,_0x447a7a['error'][_0xe67b('0x15')]);return _0x2fcd18(_0x447a7a[_0xe67b('0x14')][_0xe67b('0x15')]);}logger[_0xe67b('0x14')](_0xe67b('0xf'),_0x1a381b,_0x447a7a[_0xe67b('0x14')][_0xe67b('0x15')]);return _0x3f1251(_0x447a7a[_0xe67b('0x14')][_0xe67b('0x15')]);}else{logger[_0xe67b('0xe')](_0xe67b('0xf'),_0x1a381b,_0xe67b('0x12'));_0x3f1251(_0x447a7a[_0xe67b('0x16')]['message']);}})['catch'](function(_0x48b8d5){logger[_0xe67b('0x14')]('MailServerIn,\x20%s,\x20%s',_0x1a381b,_0x48b8d5);_0x2fcd18(_0x48b8d5);});});}exports['GetMailServerIn']=function(_0x1427df){var _0x2a8f99=this;return new Promise(function(_0x575a43,_0x3261c1){return db[_0xe67b('0x17')]['findAll']({'raw':_0x1427df[_0xe67b('0x18')]?_0x1427df['options'][_0xe67b('0x19')]===undefined?!![]:![]:!![],'where':_0x1427df[_0xe67b('0x18')]?_0x1427df[_0xe67b('0x18')][_0xe67b('0x1a')]||null:null,'attributes':_0x1427df[_0xe67b('0x18')]?_0x1427df[_0xe67b('0x18')][_0xe67b('0x1b')]||null:null,'limit':_0x1427df[_0xe67b('0x18')]?_0x1427df[_0xe67b('0x18')][_0xe67b('0x1c')]||null:null,'include':_0x1427df[_0xe67b('0x18')]?_0x1427df['options'][_0xe67b('0x1d')]?_[_0xe67b('0x1e')](_0x1427df['options'][_0xe67b('0x1d')],function(_0x260e04){return{'model':db[_0x260e04[_0xe67b('0x1f')]],'as':_0x260e04['as'],'attributes':_0x260e04[_0xe67b('0x1b')],'include':_0x260e04[_0xe67b('0x1d')]?_[_0xe67b('0x1e')](_0x260e04['include'],function(_0x46ae23){return{'model':db[_0x46ae23[_0xe67b('0x1f')]],'as':_0x46ae23['as'],'attributes':_0x46ae23[_0xe67b('0x1b')],'include':_0x46ae23[_0xe67b('0x1d')]?_[_0xe67b('0x1e')](_0x46ae23[_0xe67b('0x1d')],function(_0x5461aa){return{'model':db[_0x5461aa[_0xe67b('0x1f')]],'as':_0x5461aa['as'],'attributes':_0x5461aa[_0xe67b('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xe67b('0xd')](function(_0x33cf1f){logger[_0xe67b('0xe')](_0xe67b('0x20'),_0x1427df);logger[_0xe67b('0x10')]('GetMailServerIn',_0x1427df,JSON[_0xe67b('0x13')](_0x33cf1f));_0x575a43(_0x33cf1f);})['catch'](function(_0x241413){logger[_0xe67b('0x14')](_0xe67b('0x20'),_0x241413[_0xe67b('0x15')],_0x1427df);_0x3261c1(_0x2a8f99[_0xe67b('0x14')](0x1f4,_0x241413[_0xe67b('0x15')]));});});};
\ No newline at end of file
+var _0x957b=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetMailServerIn','MailServerIn','options','raw','attributes','limit','include','map','model','lodash','util'];(function(_0x3f140b,_0x2e3418){var _0x739cb6=function(_0x4011d9){while(--_0x4011d9){_0x3f140b['push'](_0x3f140b['shift']());}};_0x739cb6(++_0x2e3418);}(_0x957b,0x1ee));var _0xb957=function(_0x32b92d,_0x4fb7a9){_0x32b92d=_0x32b92d-0x0;var _0x59ca48=_0x957b[_0x32b92d];return _0x59ca48;};'use strict';var _=require(_0xb957('0x0'));var util=require(_0xb957('0x1'));var moment=require(_0xb957('0x2'));var BPromise=require(_0xb957('0x3'));var rs=require(_0xb957('0x4'));var fs=require('fs');var Redis=require(_0xb957('0x5'));var db=require(_0xb957('0x6'))['db'];var utils=require(_0xb957('0x7'));var logger=require(_0xb957('0x8'))(_0xb957('0x9'));var config=require('../../config/environment');var jayson=require(_0xb957('0xa'));var client=jayson[_0xb957('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5daf95,_0x67885,_0x3731f7){return new BPromise(function(_0x5822f8,_0x38c1d9){return client['request'](_0x5daf95,_0x3731f7)[_0xb957('0xc')](function(_0x353c31){logger[_0xb957('0xd')](_0xb957('0xe'),_0x67885,_0xb957('0xf'));logger[_0xb957('0x10')](_0xb957('0x11'),_0x67885,'request\x20sent',JSON[_0xb957('0x12')](_0x353c31));if(_0x353c31[_0xb957('0x13')]){if(_0x353c31['error']['code']===0x1f4){logger[_0xb957('0x13')](_0xb957('0xe'),_0x67885,_0x353c31['error'][_0xb957('0x14')]);return _0x38c1d9(_0x353c31['error']['message']);}logger[_0xb957('0x13')](_0xb957('0xe'),_0x67885,_0x353c31[_0xb957('0x13')][_0xb957('0x14')]);return _0x5822f8(_0x353c31['error'][_0xb957('0x14')]);}else{logger[_0xb957('0xd')](_0xb957('0xe'),_0x67885,_0xb957('0xf'));_0x5822f8(_0x353c31['result'][_0xb957('0x14')]);}})[_0xb957('0x15')](function(_0x37da86){logger[_0xb957('0x13')](_0xb957('0xe'),_0x67885,_0x37da86);_0x38c1d9(_0x37da86);});});}exports[_0xb957('0x16')]=function(_0x6acaf5){var _0x374907=this;return new Promise(function(_0x60c77c,_0x47230a){return db[_0xb957('0x17')]['findAll']({'raw':_0x6acaf5[_0xb957('0x18')]?_0x6acaf5[_0xb957('0x18')][_0xb957('0x19')]===undefined?!![]:![]:!![],'where':_0x6acaf5[_0xb957('0x18')]?_0x6acaf5[_0xb957('0x18')]['where']||null:null,'attributes':_0x6acaf5[_0xb957('0x18')]?_0x6acaf5[_0xb957('0x18')][_0xb957('0x1a')]||null:null,'limit':_0x6acaf5[_0xb957('0x18')]?_0x6acaf5[_0xb957('0x18')][_0xb957('0x1b')]||null:null,'include':_0x6acaf5['options']?_0x6acaf5[_0xb957('0x18')][_0xb957('0x1c')]?_[_0xb957('0x1d')](_0x6acaf5[_0xb957('0x18')][_0xb957('0x1c')],function(_0x44c539){return{'model':db[_0x44c539['model']],'as':_0x44c539['as'],'attributes':_0x44c539[_0xb957('0x1a')],'include':_0x44c539['include']?_[_0xb957('0x1d')](_0x44c539['include'],function(_0x1d8e27){return{'model':db[_0x1d8e27['model']],'as':_0x1d8e27['as'],'attributes':_0x1d8e27[_0xb957('0x1a')],'include':_0x1d8e27[_0xb957('0x1c')]?_[_0xb957('0x1d')](_0x1d8e27['include'],function(_0x441547){return{'model':db[_0x441547[_0xb957('0x1e')]],'as':_0x441547['as'],'attributes':_0x441547[_0xb957('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xb957('0xc')](function(_0xc143ce){logger[_0xb957('0xd')](_0xb957('0x16'),_0x6acaf5);logger['debug'](_0xb957('0x16'),_0x6acaf5,JSON[_0xb957('0x12')](_0xc143ce));_0x60c77c(_0xc143ce);})[_0xb957('0x15')](function(_0x303771){logger[_0xb957('0x13')](_0xb957('0x16'),_0x303771[_0xb957('0x14')],_0x6acaf5);_0x47230a(_0x374907[_0xb957('0x13')](0x1f4,_0x303771[_0xb957('0x14')]));});});};
\ No newline at end of file
index 1413461..2fb59c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x7a54,0x106));var _0x47a5=function(_0x2ebe95,_0x3c1de9){_0x2ebe95=_0x2ebe95-0x0;var _0x43a6e7=_0x7a54[_0x2ebe95];return _0x43a6e7;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
+var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x7a54,0x106));var _0x47a5=function(_0x41a168,_0xb352b4){_0x41a168=_0x41a168-0x0;var _0x455950=_0x7a54[_0x41a168];return _0x455950;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
index 611b30d..46e1925 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf30d=['exports','STRING','INTEGER','BOOLEAN'];(function(_0x551b1c,_0x3584f9){var _0x131273=function(_0x553185){while(--_0x553185){_0x551b1c['push'](_0x551b1c['shift']());}};_0x131273(++_0x3584f9);}(_0xf30d,0xd0));var _0xdf30=function(_0x42013a,_0x455d8f){_0x42013a=_0x42013a-0x0;var _0x48b136=_0xf30d[_0x42013a];return _0x48b136;};'use strict';var Sequelize=require('sequelize');module[_0xdf30('0x0')]={'description':{'type':Sequelize[_0xdf30('0x1')]},'host':{'type':Sequelize[_0xdf30('0x1')]},'user':{'type':Sequelize[_0xdf30('0x1')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xdf30('0x2')]},'secure':{'type':Sequelize[_0xdf30('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0xdf30('0x1')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xa473=['INTEGER','BOOLEAN','sequelize','exports','STRING'];(function(_0x493c7a,_0x30ea93){var _0x1ad499=function(_0x5c8318){while(--_0x5c8318){_0x493c7a['push'](_0x493c7a['shift']());}};_0x1ad499(++_0x30ea93);}(_0xa473,0x89));var _0x3a47=function(_0x471eb3,_0x20e09e){_0x471eb3=_0x471eb3-0x0;var _0x273048=_0xa473[_0x471eb3];return _0x273048;};'use strict';var Sequelize=require(_0x3a47('0x0'));module[_0x3a47('0x1')]={'description':{'type':Sequelize[_0x3a47('0x2')]},'host':{'type':Sequelize[_0x3a47('0x2')]},'user':{'type':Sequelize[_0x3a47('0x2')]},'pass':{'type':Sequelize[_0x3a47('0x2')]},'port':{'type':Sequelize[_0x3a47('0x3')]},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0x3a47('0x2')]},'authentication':{'type':Sequelize[_0x3a47('0x4')],'defaultValue':!![]}};
\ No newline at end of file
index 2d003c8..e8cafab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe475=['ejs','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/license/util','../../mysqldb','status','offset','undefined','count','set','json','reject','save','then','destroy','end','sendStatus','error','stack','name','send','map','MailServerOut','fieldName','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','where','filter','includeAll','findAll','rows','show','params','keys','rawAttributes','merge','options','find','catch','create','body','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv'];(function(_0x57ca86,_0x50f912){var _0x584c2=function(_0x592bef){while(--_0x592bef){_0x57ca86['push'](_0x57ca86['shift']());}};_0x584c2(++_0x50f912);}(_0xe475,0x8f));var _0x5e47=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe475[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x5e47('0x0'));var rimraf=require(_0x5e47('0x1'));var zipdir=require(_0x5e47('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5e47('0x3'));var moment=require(_0x5e47('0x4'));var BPromise=require(_0x5e47('0x5'));var Mustache=require(_0x5e47('0x6'));var util=require(_0x5e47('0x7'));var path=require(_0x5e47('0x8'));var sox=require(_0x5e47('0x9'));var csv=require(_0x5e47('0xa'));var ejs=require(_0x5e47('0xb'));var fs=require('fs');var fs_extra=require(_0x5e47('0xc'));var _=require(_0x5e47('0xd'));var squel=require(_0x5e47('0xe'));var crypto=require(_0x5e47('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x5e47('0x10'));var toCsv=require('to-csv');var querystring=require(_0x5e47('0x11'));var Papa=require(_0x5e47('0x12'));var Redis=require(_0x5e47('0x13'));var authService=require(_0x5e47('0x14'));var qs=require(_0x5e47('0x15'));var as=require(_0x5e47('0x16'));var hardwareService=require(_0x5e47('0x17'));var logger=require('../../config/logger')(_0x5e47('0x18'));var utils=require(_0x5e47('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x5e47('0x1a'));var db=require(_0x5e47('0x1b'))['db'];function respondWithStatusCode(_0x3ddec8,_0x3fca6f){_0x3fca6f=_0x3fca6f||0xcc;return function(_0x834b56){if(_0x834b56){return _0x3ddec8['sendStatus'](_0x3fca6f);}return _0x3ddec8['status'](_0x3fca6f)['end']();};}function respondWithResult(_0x1f2e49,_0x26dabb){_0x26dabb=_0x26dabb||0xc8;return function(_0x221bac){if(_0x221bac){return _0x1f2e49[_0x5e47('0x1c')](_0x26dabb)['json'](_0x221bac);}};}function respondWithFilteredResult(_0x88bed9,_0x32e445){return function(_0x2e0d8c){if(_0x2e0d8c){var _0x1157b8=typeof _0x32e445[_0x5e47('0x1d')]===_0x5e47('0x1e')&&typeof _0x32e445['limit']==='undefined';var _0x15c4b5=_0x2e0d8c[_0x5e47('0x1f')];var _0x2f2ce9=_0x1157b8?0x0:_0x32e445['offset'];var _0x45671d=_0x1157b8?_0x2e0d8c['count']:_0x32e445[_0x5e47('0x1d')]+_0x32e445['limit'];var _0x1b29f1;if(_0x45671d>=_0x15c4b5){_0x45671d=_0x15c4b5;_0x1b29f1=0xc8;}else{_0x1b29f1=0xce;}_0x88bed9[_0x5e47('0x1c')](_0x1b29f1);return _0x88bed9[_0x5e47('0x20')]('Content-Range',_0x2f2ce9+'-'+_0x45671d+'/'+_0x15c4b5)[_0x5e47('0x21')](_0x2e0d8c);}return null;};}function patchUpdates(_0x1b0616){return function(_0x55ab84){try{jsonpatch['apply'](_0x55ab84,_0x1b0616,!![]);}catch(_0x1dc3b1){return BPromise[_0x5e47('0x22')](_0x1dc3b1);}return _0x55ab84[_0x5e47('0x23')]();};}function saveUpdates(_0x133236,_0x57171d){return function(_0x5ae72a){if(_0x5ae72a){return _0x5ae72a['update'](_0x133236)[_0x5e47('0x24')](function(_0x313cda){return _0x313cda;});}return null;};}function removeEntity(_0x554c92,_0x32a497){return function(_0x3f703f){if(_0x3f703f){return _0x3f703f[_0x5e47('0x25')]()[_0x5e47('0x24')](function(){_0x554c92[_0x5e47('0x1c')](0xcc)[_0x5e47('0x26')]();});}};}function handleEntityNotFound(_0x226828,_0x427b17){return function(_0x438218){if(!_0x438218){_0x226828[_0x5e47('0x27')](0x194);}return _0x438218;};}function handleError(_0x2a8f4c,_0x7a1b44){_0x7a1b44=_0x7a1b44||0x1f4;return function(_0x1f7947){logger[_0x5e47('0x28')](_0x1f7947[_0x5e47('0x29')]);if(_0x1f7947[_0x5e47('0x2a')]){delete _0x1f7947['name'];}_0x2a8f4c[_0x5e47('0x1c')](_0x7a1b44)[_0x5e47('0x2b')](_0x1f7947);};}exports['index']=function(_0x314835,_0xbfc967){var _0x1093e8={},_0x273813={},_0x16e131={'count':0x0,'rows':[]};var _0x2615dc=_[_0x5e47('0x2c')](db[_0x5e47('0x2d')]['rawAttributes'],function(_0x2cdd51){return{'name':_0x2cdd51[_0x5e47('0x2e')],'type':_0x2cdd51['type'][_0x5e47('0x2f')]};});_0x273813['model']=_[_0x5e47('0x2c')](_0x2615dc,_0x5e47('0x2a'));_0x273813[_0x5e47('0x30')]=_['keys'](_0x314835[_0x5e47('0x30')]);_0x273813[_0x5e47('0x31')]=_[_0x5e47('0x32')](_0x273813[_0x5e47('0x33')],_0x273813[_0x5e47('0x30')]);_0x1093e8[_0x5e47('0x34')]=_[_0x5e47('0x32')](_0x273813[_0x5e47('0x33')],qs[_0x5e47('0x35')](_0x314835[_0x5e47('0x30')][_0x5e47('0x35')]));_0x1093e8[_0x5e47('0x34')]=_0x1093e8['attributes'][_0x5e47('0x36')]?_0x1093e8[_0x5e47('0x34')]:_0x273813['model'];if(!_0x314835['query'][_0x5e47('0x37')](_0x5e47('0x38'))){_0x1093e8[_0x5e47('0x39')]=qs[_0x5e47('0x39')](_0x314835[_0x5e47('0x30')][_0x5e47('0x39')]);_0x1093e8[_0x5e47('0x1d')]=qs[_0x5e47('0x1d')](_0x314835[_0x5e47('0x30')][_0x5e47('0x1d')]);}_0x1093e8[_0x5e47('0x3a')]=qs[_0x5e47('0x3b')](_0x314835[_0x5e47('0x30')][_0x5e47('0x3b')]);_0x1093e8['where']=qs[_0x5e47('0x31')](_[_0x5e47('0x3c')](_0x314835[_0x5e47('0x30')],_0x273813['filters']),_0x2615dc);if(_0x314835['query']['filter']){_0x1093e8[_0x5e47('0x3d')]=_['merge'](_0x1093e8[_0x5e47('0x3d')],{'$or':_[_0x5e47('0x2c')](_0x2615dc,function(_0x1e599c){if(_0x1e599c['type']!=='VIRTUAL'){var _0x2408fe={};_0x2408fe[_0x1e599c['name']]={'$like':'%'+_0x314835[_0x5e47('0x30')][_0x5e47('0x3e')]+'%'};return _0x2408fe;}})});}_0x1093e8=_['merge']({},_0x1093e8,_0x314835['options']);var _0x22c188={'where':_0x1093e8['where']};return db[_0x5e47('0x2d')][_0x5e47('0x1f')](_0x22c188)['then'](function(_0x499f9c){_0x16e131['count']=_0x499f9c;if(_0x314835[_0x5e47('0x30')][_0x5e47('0x3f')]){_0x1093e8['include']=[{'all':!![]}];}return db['MailServerOut'][_0x5e47('0x40')](_0x1093e8);})[_0x5e47('0x24')](function(_0x736483){_0x16e131[_0x5e47('0x41')]=_0x736483;return _0x16e131;})['then'](respondWithFilteredResult(_0xbfc967,_0x1093e8))['catch'](handleError(_0xbfc967,null));};exports[_0x5e47('0x42')]=function(_0x282f1b,_0x1b84fd){var _0x5e01={'raw':!![],'where':{'id':_0x282f1b[_0x5e47('0x43')]['id']}},_0x2b6249={};_0x2b6249['model']=_[_0x5e47('0x44')](db[_0x5e47('0x2d')][_0x5e47('0x45')]);_0x2b6249[_0x5e47('0x30')]=_[_0x5e47('0x44')](_0x282f1b[_0x5e47('0x30')]);_0x2b6249[_0x5e47('0x31')]=_[_0x5e47('0x32')](_0x2b6249[_0x5e47('0x33')],_0x2b6249[_0x5e47('0x30')]);_0x5e01[_0x5e47('0x34')]=_['intersection'](_0x2b6249[_0x5e47('0x33')],qs[_0x5e47('0x35')](_0x282f1b[_0x5e47('0x30')][_0x5e47('0x35')]));_0x5e01[_0x5e47('0x34')]=_0x5e01[_0x5e47('0x34')][_0x5e47('0x36')]?_0x5e01['attributes']:_0x2b6249[_0x5e47('0x33')];if(_0x282f1b[_0x5e47('0x30')][_0x5e47('0x3f')]){_0x5e01['include']=[{'all':!![]}];}_0x5e01=_[_0x5e47('0x46')]({},_0x5e01,_0x282f1b[_0x5e47('0x47')]);return db['MailServerOut'][_0x5e47('0x48')](_0x5e01)['then'](handleEntityNotFound(_0x1b84fd,null))['then'](respondWithResult(_0x1b84fd,null))[_0x5e47('0x49')](handleError(_0x1b84fd,null));};exports[_0x5e47('0x4a')]=function(_0x4b5a7b,_0x386dba){return db['MailServerOut']['create'](_0x4b5a7b[_0x5e47('0x4b')],{})[_0x5e47('0x24')](respondWithResult(_0x386dba,0xc9))[_0x5e47('0x49')](handleError(_0x386dba,null));};exports[_0x5e47('0x4c')]=function(_0x2de2ce,_0x2e78be){if(_0x2de2ce[_0x5e47('0x4b')]['id']){delete _0x2de2ce[_0x5e47('0x4b')]['id'];}return db[_0x5e47('0x2d')][_0x5e47('0x48')]({'where':{'id':_0x2de2ce[_0x5e47('0x43')]['id']}})[_0x5e47('0x24')](handleEntityNotFound(_0x2e78be,null))[_0x5e47('0x24')](saveUpdates(_0x2de2ce[_0x5e47('0x4b')],null))[_0x5e47('0x24')](respondWithResult(_0x2e78be,null))[_0x5e47('0x49')](handleError(_0x2e78be,null));};exports[_0x5e47('0x25')]=function(_0x1d8b01,_0x4d1981){return db['MailServerOut']['find']({'where':{'id':_0x1d8b01['params']['id']}})[_0x5e47('0x24')](handleEntityNotFound(_0x4d1981,null))[_0x5e47('0x24')](removeEntity(_0x4d1981,null))[_0x5e47('0x49')](handleError(_0x4d1981,null));};
\ No newline at end of file
+var _0x915a=['fs-extra','lodash','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','error','stack','send','map','MailServerOut','fieldName','type','model','query','keys','attributes','length','hasOwnProperty','order','sort','where','filters','filter','merge','VIRTUAL','name','options','includeAll','include','rows','catch','show','params','rawAttributes','fields','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path'];(function(_0x321b3f,_0x244847){var _0x5d7ab8=function(_0x30af22){while(--_0x30af22){_0x321b3f['push'](_0x321b3f['shift']());}};_0x5d7ab8(++_0x244847);}(_0x915a,0x84));var _0xa915=function(_0x56fc7a,_0x308766){_0x56fc7a=_0x56fc7a-0x0;var _0x899edb=_0x915a[_0x56fc7a];return _0x899edb;};'use strict';var emlformat=require(_0xa915('0x0'));var rimraf=require(_0xa915('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa915('0x2'));var rp=require(_0xa915('0x3'));var moment=require(_0xa915('0x4'));var BPromise=require(_0xa915('0x5'));var Mustache=require(_0xa915('0x6'));var util=require('util');var path=require(_0xa915('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa915('0x8'));var _=require(_0xa915('0x9'));var squel=require('squel');var crypto=require(_0xa915('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xa915('0xb'));var toCsv=require(_0xa915('0xc'));var querystring=require(_0xa915('0xd'));var Papa=require('papaparse');var Redis=require(_0xa915('0xe'));var authService=require(_0xa915('0xf'));var qs=require(_0xa915('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa915('0x11'))(_0xa915('0x12'));var utils=require(_0xa915('0x13'));var config=require(_0xa915('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xa915('0x15'))['db'];function respondWithStatusCode(_0x3a9f7f,_0x4fdd79){_0x4fdd79=_0x4fdd79||0xcc;return function(_0x1bf2cc){if(_0x1bf2cc){return _0x3a9f7f[_0xa915('0x16')](_0x4fdd79);}return _0x3a9f7f[_0xa915('0x17')](_0x4fdd79)['end']();};}function respondWithResult(_0x2f76e1,_0x941cfc){_0x941cfc=_0x941cfc||0xc8;return function(_0x310804){if(_0x310804){return _0x2f76e1[_0xa915('0x17')](_0x941cfc)[_0xa915('0x18')](_0x310804);}};}function respondWithFilteredResult(_0x2597cb,_0x43168b){return function(_0x132d49){if(_0x132d49){var _0x894a08=typeof _0x43168b[_0xa915('0x19')]===_0xa915('0x1a')&&typeof _0x43168b[_0xa915('0x1b')]===_0xa915('0x1a');var _0x3f1c91=_0x132d49['count'];var _0xd9b294=_0x894a08?0x0:_0x43168b[_0xa915('0x19')];var _0x2fa041=_0x894a08?_0x132d49[_0xa915('0x1c')]:_0x43168b[_0xa915('0x19')]+_0x43168b[_0xa915('0x1b')];var _0x16e578;if(_0x2fa041>=_0x3f1c91){_0x2fa041=_0x3f1c91;_0x16e578=0xc8;}else{_0x16e578=0xce;}_0x2597cb[_0xa915('0x17')](_0x16e578);return _0x2597cb[_0xa915('0x1d')](_0xa915('0x1e'),_0xd9b294+'-'+_0x2fa041+'/'+_0x3f1c91)[_0xa915('0x18')](_0x132d49);}return null;};}function patchUpdates(_0x57c23d){return function(_0x184b2a){try{jsonpatch[_0xa915('0x1f')](_0x184b2a,_0x57c23d,!![]);}catch(_0x439bdd){return BPromise['reject'](_0x439bdd);}return _0x184b2a[_0xa915('0x20')]();};}function saveUpdates(_0x3b2d5a,_0x502cd1){return function(_0xf4bdc1){if(_0xf4bdc1){return _0xf4bdc1[_0xa915('0x21')](_0x3b2d5a)[_0xa915('0x22')](function(_0x2a8bc2){return _0x2a8bc2;});}return null;};}function removeEntity(_0x3d3d25,_0x14cda1){return function(_0x2e44de){if(_0x2e44de){return _0x2e44de[_0xa915('0x23')]()[_0xa915('0x22')](function(){_0x3d3d25[_0xa915('0x17')](0xcc)[_0xa915('0x24')]();});}};}function handleEntityNotFound(_0x2c9637,_0x4fc303){return function(_0x3f9b66){if(!_0x3f9b66){_0x2c9637['sendStatus'](0x194);}return _0x3f9b66;};}function handleError(_0x32ed2d,_0x32c649){_0x32c649=_0x32c649||0x1f4;return function(_0x246b97){logger[_0xa915('0x25')](_0x246b97[_0xa915('0x26')]);if(_0x246b97['name']){delete _0x246b97['name'];}_0x32ed2d[_0xa915('0x17')](_0x32c649)[_0xa915('0x27')](_0x246b97);};}exports['index']=function(_0x24a0e0,_0x238858){var _0x433f71={},_0x56bc46={},_0x2e8f06={'count':0x0,'rows':[]};var _0x5445a8=_[_0xa915('0x28')](db[_0xa915('0x29')]['rawAttributes'],function(_0x4c4a9a){return{'name':_0x4c4a9a[_0xa915('0x2a')],'type':_0x4c4a9a[_0xa915('0x2b')]['key']};});_0x56bc46[_0xa915('0x2c')]=_[_0xa915('0x28')](_0x5445a8,'name');_0x56bc46[_0xa915('0x2d')]=_[_0xa915('0x2e')](_0x24a0e0['query']);_0x56bc46['filters']=_['intersection'](_0x56bc46[_0xa915('0x2c')],_0x56bc46['query']);_0x433f71[_0xa915('0x2f')]=_['intersection'](_0x56bc46[_0xa915('0x2c')],qs['fields'](_0x24a0e0['query']['fields']));_0x433f71['attributes']=_0x433f71[_0xa915('0x2f')][_0xa915('0x30')]?_0x433f71[_0xa915('0x2f')]:_0x56bc46[_0xa915('0x2c')];if(!_0x24a0e0[_0xa915('0x2d')][_0xa915('0x31')]('nolimit')){_0x433f71[_0xa915('0x1b')]=qs[_0xa915('0x1b')](_0x24a0e0['query'][_0xa915('0x1b')]);_0x433f71[_0xa915('0x19')]=qs['offset'](_0x24a0e0[_0xa915('0x2d')][_0xa915('0x19')]);}_0x433f71[_0xa915('0x32')]=qs['sort'](_0x24a0e0[_0xa915('0x2d')][_0xa915('0x33')]);_0x433f71[_0xa915('0x34')]=qs[_0xa915('0x35')](_['pick'](_0x24a0e0[_0xa915('0x2d')],_0x56bc46[_0xa915('0x35')]),_0x5445a8);if(_0x24a0e0[_0xa915('0x2d')][_0xa915('0x36')]){_0x433f71['where']=_[_0xa915('0x37')](_0x433f71[_0xa915('0x34')],{'$or':_[_0xa915('0x28')](_0x5445a8,function(_0x4f4d47){if(_0x4f4d47[_0xa915('0x2b')]!==_0xa915('0x38')){var _0x11f651={};_0x11f651[_0x4f4d47[_0xa915('0x39')]]={'$like':'%'+_0x24a0e0[_0xa915('0x2d')]['filter']+'%'};return _0x11f651;}})});}_0x433f71=_[_0xa915('0x37')]({},_0x433f71,_0x24a0e0[_0xa915('0x3a')]);var _0x49c13e={'where':_0x433f71[_0xa915('0x34')]};return db['MailServerOut'][_0xa915('0x1c')](_0x49c13e)['then'](function(_0x529430){_0x2e8f06[_0xa915('0x1c')]=_0x529430;if(_0x24a0e0[_0xa915('0x2d')][_0xa915('0x3b')]){_0x433f71[_0xa915('0x3c')]=[{'all':!![]}];}return db['MailServerOut']['findAll'](_0x433f71);})[_0xa915('0x22')](function(_0x2016a8){_0x2e8f06[_0xa915('0x3d')]=_0x2016a8;return _0x2e8f06;})[_0xa915('0x22')](respondWithFilteredResult(_0x238858,_0x433f71))[_0xa915('0x3e')](handleError(_0x238858,null));};exports[_0xa915('0x3f')]=function(_0x110d82,_0x3eeee4){var _0x34c7d0={'raw':!![],'where':{'id':_0x110d82[_0xa915('0x40')]['id']}},_0x3b7e1a={};_0x3b7e1a[_0xa915('0x2c')]=_['keys'](db[_0xa915('0x29')][_0xa915('0x41')]);_0x3b7e1a[_0xa915('0x2d')]=_[_0xa915('0x2e')](_0x110d82['query']);_0x3b7e1a[_0xa915('0x35')]=_['intersection'](_0x3b7e1a[_0xa915('0x2c')],_0x3b7e1a[_0xa915('0x2d')]);_0x34c7d0['attributes']=_['intersection'](_0x3b7e1a[_0xa915('0x2c')],qs[_0xa915('0x42')](_0x110d82[_0xa915('0x2d')][_0xa915('0x42')]));_0x34c7d0[_0xa915('0x2f')]=_0x34c7d0[_0xa915('0x2f')]['length']?_0x34c7d0[_0xa915('0x2f')]:_0x3b7e1a['model'];if(_0x110d82[_0xa915('0x2d')][_0xa915('0x3b')]){_0x34c7d0[_0xa915('0x3c')]=[{'all':!![]}];}_0x34c7d0=_[_0xa915('0x37')]({},_0x34c7d0,_0x110d82[_0xa915('0x3a')]);return db[_0xa915('0x29')][_0xa915('0x43')](_0x34c7d0)[_0xa915('0x22')](handleEntityNotFound(_0x3eeee4,null))['then'](respondWithResult(_0x3eeee4,null))[_0xa915('0x3e')](handleError(_0x3eeee4,null));};exports[_0xa915('0x44')]=function(_0x2e9ac4,_0x409db9){return db[_0xa915('0x29')][_0xa915('0x44')](_0x2e9ac4[_0xa915('0x45')],{})[_0xa915('0x22')](respondWithResult(_0x409db9,0xc9))['catch'](handleError(_0x409db9,null));};exports[_0xa915('0x21')]=function(_0x3d0402,_0x133075){if(_0x3d0402[_0xa915('0x45')]['id']){delete _0x3d0402[_0xa915('0x45')]['id'];}return db[_0xa915('0x29')]['find']({'where':{'id':_0x3d0402['params']['id']}})[_0xa915('0x22')](handleEntityNotFound(_0x133075,null))[_0xa915('0x22')](saveUpdates(_0x3d0402[_0xa915('0x45')],null))[_0xa915('0x22')](respondWithResult(_0x133075,null))[_0xa915('0x3e')](handleError(_0x133075,null));};exports[_0xa915('0x23')]=function(_0x1bc870,_0x135927){return db[_0xa915('0x29')]['find']({'where':{'id':_0x1bc870[_0xa915('0x40')]['id']}})[_0xa915('0x22')](handleEntityNotFound(_0x135927,null))[_0xa915('0x22')](removeEntity(_0x135927,null))[_0xa915('0x3e')](handleError(_0x135927,null));};
\ No newline at end of file
index 9dd8f7d..efbb090 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb700=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerOut.attributes','exports','MailServerOut','mail_servers_out','lodash'];(function(_0x4dba79,_0x2eaa57){var _0x57662a=function(_0x667768){while(--_0x667768){_0x4dba79['push'](_0x4dba79['shift']());}};_0x57662a(++_0x2eaa57);}(_0xb700,0x9b));var _0x0b70=function(_0x5ce8b9,_0x5cded8){_0x5ce8b9=_0x5ce8b9-0x0;var _0xe34be0=_0xb700[_0x5ce8b9];return _0xe34be0;};'use strict';var _=require(_0x0b70('0x0'));var util=require('util');var logger=require(_0x0b70('0x1'))(_0x0b70('0x2'));var moment=require(_0x0b70('0x3'));var BPromise=require(_0x0b70('0x4'));var rp=require(_0x0b70('0x5'));var fs=require('fs');var path=require(_0x0b70('0x6'));var rimraf=require(_0x0b70('0x7'));var config=require(_0x0b70('0x8'));var attributes=require(_0x0b70('0x9'));module[_0x0b70('0xa')]=function(_0x3df31b,_0x57d749){return _0x3df31b['define'](_0x0b70('0xb'),attributes,{'tableName':_0x0b70('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd265=['MailServerOut','mail_servers_out','lodash','util','bluebird','request-promise','./mailServerOut.attributes','exports','define'];(function(_0x23a641,_0x158bfe){var _0x5bbf71=function(_0x24ef77){while(--_0x24ef77){_0x23a641['push'](_0x23a641['shift']());}};_0x5bbf71(++_0x158bfe);}(_0xd265,0x1a0));var _0x5d26=function(_0x31dd73,_0x17510c){_0x31dd73=_0x31dd73-0x0;var _0x3de5d4=_0xd265[_0x31dd73];return _0x3de5d4;};'use strict';var _=require(_0x5d26('0x0'));var util=require(_0x5d26('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x5d26('0x2'));var rp=require(_0x5d26('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5d26('0x4'));module[_0x5d26('0x5')]=function(_0x207c5e,_0x1ab877){return _0x207c5e[_0x5d26('0x6')](_0x5d26('0x7'),attributes,{'tableName':_0x5d26('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 30ee2b4..904bca6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailServerOut,\x20%s,\x20%s','MailServerOut,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x534c33,_0x120ebc){var _0x22b732=function(_0x2ecd80){while(--_0x2ecd80){_0x534c33['push'](_0x534c33['shift']());}};_0x22b732(++_0x120ebc);}(_0x2ef3,0xba));var _0x32ef=function(_0x246ae7,_0xe87c35){_0x246ae7=_0x246ae7-0x0;var _0x40a5d1=_0x2ef3[_0x246ae7];return _0x40a5d1;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('MailServerOut,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('MailServerOut,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
+var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x62ab10,_0x4fd32d){var _0x485345=function(_0x5e16d9){while(--_0x5e16d9){_0x62ab10['push'](_0x62ab10['shift']());}};_0x485345(++_0x4fd32d);}(_0xdb28,0x106));var _0x8db2=function(_0x4fdce8,_0x350258){_0x4fdce8=_0x4fdce8-0x0;var _0x3dd493=_0xdb28[_0x4fdce8];return _0x3dd493;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
index 866f2d4..354b9b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x694a=['/:id','show','post','create','put','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/describe','describe'];(function(_0x594ae6,_0x39a7c7){var _0x36d241=function(_0x372d68){while(--_0x372d68){_0x594ae6['push'](_0x594ae6['shift']());}};_0x36d241(++_0x39a7c7);}(_0x694a,0x1ed));var _0xa694=function(_0x385379,_0x9b2b8c){_0x385379=_0x385379-0x0;var _0x1dc027=_0x694a[_0x385379];return _0x1dc027;};'use strict';var multer=require('multer');var util=require(_0xa694('0x0'));var path=require(_0xa694('0x1'));var timeout=require(_0xa694('0x2'));var express=require(_0xa694('0x3'));var router=express[_0xa694('0x4')]();var fs_extra=require(_0xa694('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa694('0x6'));var config=require('../../config/environment');var controller=require('./mailSubstatus.controller');router[_0xa694('0x7')]('/',auth[_0xa694('0x8')](),controller['index']);router[_0xa694('0x7')](_0xa694('0x9'),auth[_0xa694('0x8')](),controller[_0xa694('0xa')]);router['get'](_0xa694('0xb'),auth[_0xa694('0x8')](),controller[_0xa694('0xc')]);router[_0xa694('0xd')]('/',auth[_0xa694('0x8')](),controller[_0xa694('0xe')]);router[_0xa694('0xf')](_0xa694('0xb'),auth[_0xa694('0x8')](),controller['update']);router[_0xa694('0x10')]('/:id',auth[_0xa694('0x8')](),controller['destroy']);module[_0xa694('0x11')]=router;
\ No newline at end of file
+var _0xb867=['express','Router','fs-extra','../../components/interaction/service','./mailSubstatus.controller','get','index','/describe','isAuthenticated','describe','/:id','put','update','delete','exports','multer','util','connect-timeout'];(function(_0x54f126,_0x4688c4){var _0x42dce0=function(_0x367ce1){while(--_0x367ce1){_0x54f126['push'](_0x54f126['shift']());}};_0x42dce0(++_0x4688c4);}(_0xb867,0x1bf));var _0x7b86=function(_0x35aab5,_0x3846ab){_0x35aab5=_0x35aab5-0x0;var _0x412756=_0xb867[_0x35aab5];return _0x412756;};'use strict';var multer=require(_0x7b86('0x0'));var util=require(_0x7b86('0x1'));var path=require('path');var timeout=require(_0x7b86('0x2'));var express=require(_0x7b86('0x3'));var router=express[_0x7b86('0x4')]();var fs_extra=require(_0x7b86('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x7b86('0x6'));var config=require('../../config/environment');var controller=require(_0x7b86('0x7'));router[_0x7b86('0x8')]('/',auth['isAuthenticated'](),controller[_0x7b86('0x9')]);router[_0x7b86('0x8')](_0x7b86('0xa'),auth[_0x7b86('0xb')](),controller[_0x7b86('0xc')]);router[_0x7b86('0x8')](_0x7b86('0xd'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x7b86('0xe')](_0x7b86('0xd'),auth['isAuthenticated'](),controller[_0x7b86('0xf')]);router[_0x7b86('0x10')]('/:id',auth[_0x7b86('0xb')](),controller['destroy']);module[_0x7b86('0x11')]=router;
\ No newline at end of file
index d1333de..5c1e263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c46=['name','sequelize'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x8c46,0x171));var _0x68c4=function(_0x156515,_0x760da4){_0x156515=_0x156515-0x0;var _0x3e1e8b=_0x8c46[_0x156515];return _0x3e1e8b;};'use strict';var Sequelize=require(_0x68c4('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x68c4('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x446c=['STRING','name','sequelize','exports'];(function(_0x249541,_0x156929){var _0x79a2aa=function(_0x24c1d5){while(--_0x24c1d5){_0x249541['push'](_0x249541['shift']());}};_0x79a2aa(++_0x156929);}(_0x446c,0x156));var _0xc446=function(_0x4b2251,_0x393f10){_0x4b2251=_0x4b2251-0x0;var _0x5d22fb=_0x446c[_0x4b2251];return _0x5d22fb;};'use strict';var Sequelize=require(_0xc446('0x0'));module[_0xc446('0x1')]={'name':{'type':Sequelize[_0xc446('0x2')],'unique':_0xc446('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4f5715e..ded3b44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0137=['request-promise','moment','bluebird','mustache','util','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save','then','end','error','stack','name','send','index','map','MailSubstatus','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','catch','show','params','includeAll','create','update','body','find','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x3f083b,_0x199509){var _0x51ee09=function(_0x4c282d){while(--_0x4c282d){_0x3f083b['push'](_0x3f083b['shift']());}};_0x51ee09(++_0x199509);}(_0x0137,0x178));var _0x7013=function(_0x44799d,_0x26c23a){_0x44799d=_0x44799d-0x0;var _0x4f4a20=_0x0137[_0x44799d];return _0x4f4a20;};'use strict';var emlformat=require(_0x7013('0x0'));var rimraf=require(_0x7013('0x1'));var zipdir=require(_0x7013('0x2'));var jsonpatch=require(_0x7013('0x3'));var rp=require(_0x7013('0x4'));var moment=require(_0x7013('0x5'));var BPromise=require(_0x7013('0x6'));var Mustache=require(_0x7013('0x7'));var util=require(_0x7013('0x8'));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(_0x7013('0x9'));var _=require(_0x7013('0xa'));var squel=require('squel');var crypto=require(_0x7013('0xb'));var jsforce=require(_0x7013('0xc'));var deskjs=require(_0x7013('0xd'));var toCsv=require(_0x7013('0xe'));var querystring=require(_0x7013('0xf'));var Papa=require(_0x7013('0x10'));var Redis=require('ioredis');var authService=require(_0x7013('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x7013('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x7013('0x13'));var config=require(_0x7013('0x14'));var licenseUtil=require(_0x7013('0x15'));var db=require(_0x7013('0x16'))['db'];function respondWithStatusCode(_0x158bed,_0xe83767){_0xe83767=_0xe83767||0xcc;return function(_0x3fde9f){if(_0x3fde9f){return _0x158bed[_0x7013('0x17')](_0xe83767);}return _0x158bed[_0x7013('0x18')](_0xe83767)['end']();};}function respondWithResult(_0x5e72bb,_0x1e7425){_0x1e7425=_0x1e7425||0xc8;return function(_0x4d0d83){if(_0x4d0d83){return _0x5e72bb[_0x7013('0x18')](_0x1e7425)['json'](_0x4d0d83);}};}function respondWithFilteredResult(_0xed06de,_0x48d4c4){return function(_0x1fb144){if(_0x1fb144){var _0x283666=typeof _0x48d4c4['offset']===_0x7013('0x19')&&typeof _0x48d4c4[_0x7013('0x1a')]===_0x7013('0x19');var _0x3442ac=_0x1fb144['count'];var _0x110165=_0x283666?0x0:_0x48d4c4[_0x7013('0x1b')];var _0x4e9885=_0x283666?_0x1fb144[_0x7013('0x1c')]:_0x48d4c4[_0x7013('0x1b')]+_0x48d4c4[_0x7013('0x1a')];var _0x16d6dd;if(_0x4e9885>=_0x3442ac){_0x4e9885=_0x3442ac;_0x16d6dd=0xc8;}else{_0x16d6dd=0xce;}_0xed06de[_0x7013('0x18')](_0x16d6dd);return _0xed06de[_0x7013('0x1d')](_0x7013('0x1e'),_0x110165+'-'+_0x4e9885+'/'+_0x3442ac)[_0x7013('0x1f')](_0x1fb144);}return null;};}function patchUpdates(_0x11044e){return function(_0x587e7e){try{jsonpatch[_0x7013('0x20')](_0x587e7e,_0x11044e,!![]);}catch(_0xf9e4d6){return BPromise[_0x7013('0x21')](_0xf9e4d6);}return _0x587e7e[_0x7013('0x22')]();};}function saveUpdates(_0x5c70f3,_0x5dfab6){return function(_0x322247){if(_0x322247){return _0x322247['update'](_0x5c70f3)[_0x7013('0x23')](function(_0x56f6a1){return _0x56f6a1;});}return null;};}function removeEntity(_0x2b322c,_0x4e72af){return function(_0xa343b){if(_0xa343b){return _0xa343b['destroy']()[_0x7013('0x23')](function(){_0x2b322c['status'](0xcc)[_0x7013('0x24')]();});}};}function handleEntityNotFound(_0x488d8d,_0xbef5fe){return function(_0x396cc4){if(!_0x396cc4){_0x488d8d[_0x7013('0x17')](0x194);}return _0x396cc4;};}function handleError(_0x565b92,_0x585d34){_0x585d34=_0x585d34||0x1f4;return function(_0x59bfdb){logger[_0x7013('0x25')](_0x59bfdb[_0x7013('0x26')]);if(_0x59bfdb['name']){delete _0x59bfdb[_0x7013('0x27')];}_0x565b92[_0x7013('0x18')](_0x585d34)[_0x7013('0x28')](_0x59bfdb);};}exports[_0x7013('0x29')]=function(_0x2e4090,_0x52afcc){var _0x366693={},_0x539cb8={},_0x2d94fd={'count':0x0,'rows':[]};var _0x5a1014=_[_0x7013('0x2a')](db[_0x7013('0x2b')][_0x7013('0x2c')],function(_0x18daf4){return{'name':_0x18daf4['fieldName'],'type':_0x18daf4[_0x7013('0x2d')][_0x7013('0x2e')]};});_0x539cb8[_0x7013('0x2f')]=_[_0x7013('0x2a')](_0x5a1014,_0x7013('0x27'));_0x539cb8['query']=_[_0x7013('0x30')](_0x2e4090[_0x7013('0x31')]);_0x539cb8[_0x7013('0x32')]=_[_0x7013('0x33')](_0x539cb8['model'],_0x539cb8['query']);_0x366693['attributes']=_[_0x7013('0x33')](_0x539cb8[_0x7013('0x2f')],qs['fields'](_0x2e4090[_0x7013('0x31')][_0x7013('0x34')]));_0x366693[_0x7013('0x35')]=_0x366693[_0x7013('0x35')][_0x7013('0x36')]?_0x366693['attributes']:_0x539cb8[_0x7013('0x2f')];if(!_0x2e4090[_0x7013('0x31')]['hasOwnProperty'](_0x7013('0x37'))){_0x366693[_0x7013('0x1a')]=qs[_0x7013('0x1a')](_0x2e4090[_0x7013('0x31')][_0x7013('0x1a')]);_0x366693[_0x7013('0x1b')]=qs['offset'](_0x2e4090[_0x7013('0x31')][_0x7013('0x1b')]);}_0x366693[_0x7013('0x38')]=qs[_0x7013('0x39')](_0x2e4090[_0x7013('0x31')][_0x7013('0x39')]);_0x366693[_0x7013('0x3a')]=qs[_0x7013('0x32')](_[_0x7013('0x3b')](_0x2e4090[_0x7013('0x31')],_0x539cb8[_0x7013('0x32')]),_0x5a1014);if(_0x2e4090[_0x7013('0x31')]['filter']){_0x366693[_0x7013('0x3a')]=_[_0x7013('0x3c')](_0x366693['where'],{'$or':_[_0x7013('0x2a')](_0x5a1014,function(_0x11d993){if(_0x11d993['type']!==_0x7013('0x3d')){var _0x417683={};_0x417683[_0x11d993['name']]={'$like':'%'+_0x2e4090['query'][_0x7013('0x3e')]+'%'};return _0x417683;}})});}_0x366693=_[_0x7013('0x3c')]({},_0x366693,_0x2e4090[_0x7013('0x3f')]);var _0x33ea3e={'where':_0x366693[_0x7013('0x3a')]};return db[_0x7013('0x2b')]['count'](_0x33ea3e)['then'](function(_0xf09a2){_0x2d94fd['count']=_0xf09a2;if(_0x2e4090[_0x7013('0x31')]['includeAll']){_0x366693[_0x7013('0x40')]=[{'all':!![]}];}return db[_0x7013('0x2b')][_0x7013('0x41')](_0x366693);})[_0x7013('0x23')](function(_0x251c2e){_0x2d94fd['rows']=_0x251c2e;return _0x2d94fd;})[_0x7013('0x23')](respondWithFilteredResult(_0x52afcc,_0x366693))[_0x7013('0x42')](handleError(_0x52afcc,null));};exports[_0x7013('0x43')]=function(_0x575d8b,_0x391018){var _0x2f6a88={'raw':!![],'where':{'id':_0x575d8b[_0x7013('0x44')]['id']}},_0x7cd98={};_0x7cd98[_0x7013('0x2f')]=_[_0x7013('0x30')](db[_0x7013('0x2b')][_0x7013('0x2c')]);_0x7cd98[_0x7013('0x31')]=_[_0x7013('0x30')](_0x575d8b['query']);_0x7cd98['filters']=_[_0x7013('0x33')](_0x7cd98[_0x7013('0x2f')],_0x7cd98[_0x7013('0x31')]);_0x2f6a88[_0x7013('0x35')]=_['intersection'](_0x7cd98[_0x7013('0x2f')],qs[_0x7013('0x34')](_0x575d8b['query']['fields']));_0x2f6a88['attributes']=_0x2f6a88['attributes'][_0x7013('0x36')]?_0x2f6a88['attributes']:_0x7cd98[_0x7013('0x2f')];if(_0x575d8b[_0x7013('0x31')][_0x7013('0x45')]){_0x2f6a88[_0x7013('0x40')]=[{'all':!![]}];}_0x2f6a88=_[_0x7013('0x3c')]({},_0x2f6a88,_0x575d8b[_0x7013('0x3f')]);return db['MailSubstatus']['find'](_0x2f6a88)['then'](handleEntityNotFound(_0x391018,null))[_0x7013('0x23')](respondWithResult(_0x391018,null))[_0x7013('0x42')](handleError(_0x391018,null));};exports['create']=function(_0x5b02e0,_0x249b94){return db[_0x7013('0x2b')][_0x7013('0x46')](_0x5b02e0['body'],{})['then'](respondWithResult(_0x249b94,0xc9))[_0x7013('0x42')](handleError(_0x249b94,null));};exports[_0x7013('0x47')]=function(_0x48561c,_0x367a55){if(_0x48561c['body']['id']){delete _0x48561c[_0x7013('0x48')]['id'];}return db[_0x7013('0x2b')][_0x7013('0x49')]({'where':{'id':_0x48561c[_0x7013('0x44')]['id']}})[_0x7013('0x23')](handleEntityNotFound(_0x367a55,null))[_0x7013('0x23')](saveUpdates(_0x48561c[_0x7013('0x48')],null))[_0x7013('0x23')](respondWithResult(_0x367a55,null))[_0x7013('0x42')](handleError(_0x367a55,null));};exports[_0x7013('0x4a')]=function(_0x49d761,_0x1a5b2b){return db[_0x7013('0x2b')][_0x7013('0x49')]({'where':{'id':_0x49d761[_0x7013('0x44')]['id']}})[_0x7013('0x23')](handleEntityNotFound(_0x1a5b2b,null))[_0x7013('0x23')](removeEntity(_0x1a5b2b,null))[_0x7013('0x42')](handleError(_0x1a5b2b,null));};exports[_0x7013('0x4b')]=function(_0x44ddfa,_0x12d9db){return db['MailSubstatus'][_0x7013('0x4b')]()[_0x7013('0x23')](respondWithResult(_0x12d9db,null))['catch'](handleError(_0x12d9db,null));};
\ No newline at end of file
+var _0x40c6=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','reject','save','then','destroy','sendStatus','error','name','send','index','map','MailSubstatus','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','include','findAll','rows','catch','show','keys','includeAll','options','find','create','body','update','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x5e1f79,_0x310cfe){var _0x4dc026=function(_0x23f01e){while(--_0x23f01e){_0x5e1f79['push'](_0x5e1f79['shift']());}};_0x4dc026(++_0x310cfe);}(_0x40c6,0x1b2));var _0x640c=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x40c6[_0x17d9e3];return _0x14192d;};'use strict';var emlformat=require(_0x640c('0x0'));var rimraf=require(_0x640c('0x1'));var zipdir=require(_0x640c('0x2'));var jsonpatch=require(_0x640c('0x3'));var rp=require(_0x640c('0x4'));var moment=require(_0x640c('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x640c('0x6'));var sox=require(_0x640c('0x7'));var csv=require(_0x640c('0x8'));var ejs=require(_0x640c('0x9'));var fs=require('fs');var fs_extra=require(_0x640c('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x640c('0xb'));var jsforce=require(_0x640c('0xc'));var deskjs=require(_0x640c('0xd'));var toCsv=require(_0x640c('0x8'));var querystring=require(_0x640c('0xe'));var Papa=require(_0x640c('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x640c('0x10'));var hardwareService=require(_0x640c('0x11'));var logger=require(_0x640c('0x12'))(_0x640c('0x13'));var utils=require(_0x640c('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x640c('0x15'));var db=require(_0x640c('0x16'))['db'];function respondWithStatusCode(_0x1a98fa,_0x260782){_0x260782=_0x260782||0xcc;return function(_0x42d68d){if(_0x42d68d){return _0x1a98fa['sendStatus'](_0x260782);}return _0x1a98fa[_0x640c('0x17')](_0x260782)[_0x640c('0x18')]();};}function respondWithResult(_0x1187f0,_0x32b577){_0x32b577=_0x32b577||0xc8;return function(_0xc3a8c2){if(_0xc3a8c2){return _0x1187f0['status'](_0x32b577)[_0x640c('0x19')](_0xc3a8c2);}};}function respondWithFilteredResult(_0x3dd320,_0x19cecc){return function(_0x410583){if(_0x410583){var _0x27ae5a=typeof _0x19cecc[_0x640c('0x1a')]===_0x640c('0x1b')&&typeof _0x19cecc['limit']===_0x640c('0x1b');var _0x52bfc9=_0x410583[_0x640c('0x1c')];var _0x4d76ce=_0x27ae5a?0x0:_0x19cecc[_0x640c('0x1a')];var _0x3919cb=_0x27ae5a?_0x410583[_0x640c('0x1c')]:_0x19cecc[_0x640c('0x1a')]+_0x19cecc[_0x640c('0x1d')];var _0x5e0fab;if(_0x3919cb>=_0x52bfc9){_0x3919cb=_0x52bfc9;_0x5e0fab=0xc8;}else{_0x5e0fab=0xce;}_0x3dd320[_0x640c('0x17')](_0x5e0fab);return _0x3dd320[_0x640c('0x1e')]('Content-Range',_0x4d76ce+'-'+_0x3919cb+'/'+_0x52bfc9)['json'](_0x410583);}return null;};}function patchUpdates(_0x24fcb0){return function(_0xecb07){try{jsonpatch[_0x640c('0x1f')](_0xecb07,_0x24fcb0,!![]);}catch(_0x1347f3){return BPromise[_0x640c('0x20')](_0x1347f3);}return _0xecb07[_0x640c('0x21')]();};}function saveUpdates(_0x65c390,_0x49c464){return function(_0x25518b){if(_0x25518b){return _0x25518b['update'](_0x65c390)[_0x640c('0x22')](function(_0x23237e){return _0x23237e;});}return null;};}function removeEntity(_0x9e876b,_0x327856){return function(_0x373be9){if(_0x373be9){return _0x373be9[_0x640c('0x23')]()[_0x640c('0x22')](function(){_0x9e876b[_0x640c('0x17')](0xcc)[_0x640c('0x18')]();});}};}function handleEntityNotFound(_0x269c8e,_0x372274){return function(_0x5265d5){if(!_0x5265d5){_0x269c8e[_0x640c('0x24')](0x194);}return _0x5265d5;};}function handleError(_0x217e1d,_0x49e5f1){_0x49e5f1=_0x49e5f1||0x1f4;return function(_0x381c40){logger[_0x640c('0x25')](_0x381c40['stack']);if(_0x381c40['name']){delete _0x381c40[_0x640c('0x26')];}_0x217e1d[_0x640c('0x17')](_0x49e5f1)[_0x640c('0x27')](_0x381c40);};}exports[_0x640c('0x28')]=function(_0x473d90,_0x52b48f){var _0x1d1e63={},_0x1de62d={},_0x4f6c5c={'count':0x0,'rows':[]};var _0x4a3a4f=_[_0x640c('0x29')](db[_0x640c('0x2a')]['rawAttributes'],function(_0x2977bd){return{'name':_0x2977bd['fieldName'],'type':_0x2977bd['type'][_0x640c('0x2b')]};});_0x1de62d[_0x640c('0x2c')]=_['map'](_0x4a3a4f,_0x640c('0x26'));_0x1de62d[_0x640c('0x2d')]=_['keys'](_0x473d90[_0x640c('0x2d')]);_0x1de62d[_0x640c('0x2e')]=_[_0x640c('0x2f')](_0x1de62d[_0x640c('0x2c')],_0x1de62d['query']);_0x1d1e63[_0x640c('0x30')]=_[_0x640c('0x2f')](_0x1de62d['model'],qs[_0x640c('0x31')](_0x473d90[_0x640c('0x2d')][_0x640c('0x31')]));_0x1d1e63['attributes']=_0x1d1e63['attributes'][_0x640c('0x32')]?_0x1d1e63['attributes']:_0x1de62d[_0x640c('0x2c')];if(!_0x473d90[_0x640c('0x2d')][_0x640c('0x33')](_0x640c('0x34'))){_0x1d1e63[_0x640c('0x1d')]=qs[_0x640c('0x1d')](_0x473d90[_0x640c('0x2d')][_0x640c('0x1d')]);_0x1d1e63[_0x640c('0x1a')]=qs['offset'](_0x473d90['query']['offset']);}_0x1d1e63[_0x640c('0x35')]=qs['sort'](_0x473d90[_0x640c('0x2d')][_0x640c('0x36')]);_0x1d1e63[_0x640c('0x37')]=qs['filters'](_[_0x640c('0x38')](_0x473d90[_0x640c('0x2d')],_0x1de62d[_0x640c('0x2e')]),_0x4a3a4f);if(_0x473d90[_0x640c('0x2d')][_0x640c('0x39')]){_0x1d1e63[_0x640c('0x37')]=_[_0x640c('0x3a')](_0x1d1e63[_0x640c('0x37')],{'$or':_['map'](_0x4a3a4f,function(_0x53cc34){if(_0x53cc34[_0x640c('0x3b')]!==_0x640c('0x3c')){var _0x13f195={};_0x13f195[_0x53cc34['name']]={'$like':'%'+_0x473d90[_0x640c('0x2d')][_0x640c('0x39')]+'%'};return _0x13f195;}})});}_0x1d1e63=_[_0x640c('0x3a')]({},_0x1d1e63,_0x473d90['options']);var _0x3f24c9={'where':_0x1d1e63['where']};return db[_0x640c('0x2a')]['count'](_0x3f24c9)['then'](function(_0x4882ef){_0x4f6c5c[_0x640c('0x1c')]=_0x4882ef;if(_0x473d90[_0x640c('0x2d')]['includeAll']){_0x1d1e63[_0x640c('0x3d')]=[{'all':!![]}];}return db[_0x640c('0x2a')][_0x640c('0x3e')](_0x1d1e63);})[_0x640c('0x22')](function(_0x3fe2){_0x4f6c5c[_0x640c('0x3f')]=_0x3fe2;return _0x4f6c5c;})[_0x640c('0x22')](respondWithFilteredResult(_0x52b48f,_0x1d1e63))[_0x640c('0x40')](handleError(_0x52b48f,null));};exports[_0x640c('0x41')]=function(_0x4de0e2,_0x584a5d){var _0x553f2d={'raw':!![],'where':{'id':_0x4de0e2['params']['id']}},_0x3aa2d8={};_0x3aa2d8['model']=_['keys'](db[_0x640c('0x2a')]['rawAttributes']);_0x3aa2d8[_0x640c('0x2d')]=_[_0x640c('0x42')](_0x4de0e2['query']);_0x3aa2d8[_0x640c('0x2e')]=_[_0x640c('0x2f')](_0x3aa2d8[_0x640c('0x2c')],_0x3aa2d8[_0x640c('0x2d')]);_0x553f2d[_0x640c('0x30')]=_['intersection'](_0x3aa2d8[_0x640c('0x2c')],qs[_0x640c('0x31')](_0x4de0e2[_0x640c('0x2d')]['fields']));_0x553f2d[_0x640c('0x30')]=_0x553f2d[_0x640c('0x30')][_0x640c('0x32')]?_0x553f2d[_0x640c('0x30')]:_0x3aa2d8[_0x640c('0x2c')];if(_0x4de0e2[_0x640c('0x2d')][_0x640c('0x43')]){_0x553f2d[_0x640c('0x3d')]=[{'all':!![]}];}_0x553f2d=_[_0x640c('0x3a')]({},_0x553f2d,_0x4de0e2[_0x640c('0x44')]);return db['MailSubstatus'][_0x640c('0x45')](_0x553f2d)[_0x640c('0x22')](handleEntityNotFound(_0x584a5d,null))[_0x640c('0x22')](respondWithResult(_0x584a5d,null))[_0x640c('0x40')](handleError(_0x584a5d,null));};exports[_0x640c('0x46')]=function(_0x26c1a6,_0x73db9f){return db[_0x640c('0x2a')][_0x640c('0x46')](_0x26c1a6[_0x640c('0x47')],{})[_0x640c('0x22')](respondWithResult(_0x73db9f,0xc9))[_0x640c('0x40')](handleError(_0x73db9f,null));};exports[_0x640c('0x48')]=function(_0x465977,_0x3bf8d1){if(_0x465977[_0x640c('0x47')]['id']){delete _0x465977[_0x640c('0x47')]['id'];}return db[_0x640c('0x2a')][_0x640c('0x45')]({'where':{'id':_0x465977[_0x640c('0x49')]['id']}})['then'](handleEntityNotFound(_0x3bf8d1,null))[_0x640c('0x22')](saveUpdates(_0x465977[_0x640c('0x47')],null))[_0x640c('0x22')](respondWithResult(_0x3bf8d1,null))[_0x640c('0x40')](handleError(_0x3bf8d1,null));};exports[_0x640c('0x23')]=function(_0x393464,_0x5b370e){return db[_0x640c('0x2a')][_0x640c('0x45')]({'where':{'id':_0x393464['params']['id']}})['then'](handleEntityNotFound(_0x5b370e,null))[_0x640c('0x22')](removeEntity(_0x5b370e,null))['catch'](handleError(_0x5b370e,null));};exports[_0x640c('0x4a')]=function(_0x1b4e92,_0xd082cc){return db[_0x640c('0x2a')]['describe']()[_0x640c('0x22')](respondWithResult(_0xd082cc,null))['catch'](handleError(_0xd082cc,null));};
\ No newline at end of file
index 8d81b53..5fd8461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee7d=['MailSubstatus','mail_substatuses','lodash','api','moment','bluebird','rimraf','../../config/environment','./mailSubstatus.attributes','define'];(function(_0x285c85,_0x132c21){var _0x2f81cd=function(_0x9b9962){while(--_0x9b9962){_0x285c85['push'](_0x285c85['shift']());}};_0x2f81cd(++_0x132c21);}(_0xee7d,0xa2));var _0xdee7=function(_0x1245fd,_0x5effe9){_0x1245fd=_0x1245fd-0x0;var _0x159e8d=_0xee7d[_0x1245fd];return _0x159e8d;};'use strict';var _=require(_0xdee7('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xdee7('0x1'));var moment=require(_0xdee7('0x2'));var BPromise=require(_0xdee7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xdee7('0x4'));var config=require(_0xdee7('0x5'));var attributes=require(_0xdee7('0x6'));module['exports']=function(_0x55307c,_0x29cd60){return _0x55307c[_0xdee7('0x7')](_0xdee7('0x8'),attributes,{'tableName':_0xdee7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1e35=['rimraf','../../config/environment','./mailSubstatus.attributes','define','mail_substatuses','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x1e35,0x198));var _0x51e3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1e35[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x51e3('0x0'));var util=require(_0x51e3('0x1'));var logger=require(_0x51e3('0x2'))(_0x51e3('0x3'));var moment=require(_0x51e3('0x4'));var BPromise=require(_0x51e3('0x5'));var rp=require(_0x51e3('0x6'));var fs=require('fs');var path=require(_0x51e3('0x7'));var rimraf=require(_0x51e3('0x8'));var config=require(_0x51e3('0x9'));var attributes=require(_0x51e3('0xa'));module['exports']=function(_0x162e40,_0x273b85){return _0x162e40[_0x51e3('0xb')]('MailSubstatus',attributes,{'tableName':_0x51e3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9df2d06..9229dc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1059=['http','request','info','debug','stringify','code','error','message','MailSubstatus,\x20%s,\x20%s','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client'];(function(_0xd63d8,_0xd87d73){var _0x4c5e68=function(_0xa327d8){while(--_0xa327d8){_0xd63d8['push'](_0xd63d8['shift']());}};_0x4c5e68(++_0xd87d73);}(_0x1059,0x1ba));var _0x9105=function(_0x31b286,_0x542fb5){_0x31b286=_0x31b286-0x0;var _0x541635=_0x1059[_0x31b286];return _0x541635;};'use strict';var _=require(_0x9105('0x0'));var util=require('util');var moment=require(_0x9105('0x1'));var BPromise=require('bluebird');var rs=require(_0x9105('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9105('0x3'))['db'];var utils=require(_0x9105('0x4'));var logger=require(_0x9105('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9105('0x6'));var client=jayson[_0x9105('0x7')][_0x9105('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x154424,_0x460435,_0xbc19fd){return new BPromise(function(_0x46bf91,_0x390412){return client[_0x9105('0x9')](_0x154424,_0xbc19fd)['then'](function(_0x3e81db){logger[_0x9105('0xa')]('MailSubstatus,\x20%s,\x20%s',_0x460435,'request\x20sent');logger[_0x9105('0xb')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x460435,'request\x20sent',JSON[_0x9105('0xc')](_0x3e81db));if(_0x3e81db['error']){if(_0x3e81db['error'][_0x9105('0xd')]===0x1f4){logger[_0x9105('0xe')]('MailSubstatus,\x20%s,\x20%s',_0x460435,_0x3e81db['error'][_0x9105('0xf')]);return _0x390412(_0x3e81db['error']['message']);}logger[_0x9105('0xe')](_0x9105('0x10'),_0x460435,_0x3e81db['error'][_0x9105('0xf')]);return _0x46bf91(_0x3e81db[_0x9105('0xe')]['message']);}else{logger[_0x9105('0xa')](_0x9105('0x10'),_0x460435,'request\x20sent');_0x46bf91(_0x3e81db['result'][_0x9105('0xf')]);}})[_0x9105('0x11')](function(_0x501338){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x460435,_0x501338);_0x390412(_0x501338);});});}
\ No newline at end of file
+var _0xb8d1=['http','request','info','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','MailSubstatus,\x20%s,\x20%s','message','result','catch','util','bluebird','randomstring','ioredis','client'];(function(_0x4a1794,_0x5c4c1f){var _0x46858a=function(_0x183b8d){while(--_0x183b8d){_0x4a1794['push'](_0x4a1794['shift']());}};_0x46858a(++_0x5c4c1f);}(_0xb8d1,0x83));var _0x1b8d=function(_0x5341ff,_0x1de6df){_0x5341ff=_0x5341ff-0x0;var _0x53be58=_0xb8d1[_0x5341ff];return _0x53be58;};'use strict';var _=require('lodash');var util=require(_0x1b8d('0x0'));var moment=require('moment');var BPromise=require(_0x1b8d('0x1'));var rs=require(_0x1b8d('0x2'));var fs=require('fs');var Redis=require(_0x1b8d('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1b8d('0x4')][_0x1b8d('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x57b346,_0x3754dd,_0x592eb0){return new BPromise(function(_0x5761e5,_0x473c91){return client[_0x1b8d('0x6')](_0x57b346,_0x592eb0)['then'](function(_0xd7204c){logger[_0x1b8d('0x7')]('MailSubstatus,\x20%s,\x20%s',_0x3754dd,_0x1b8d('0x8'));logger[_0x1b8d('0x9')](_0x1b8d('0xa'),_0x3754dd,_0x1b8d('0x8'),JSON[_0x1b8d('0xb')](_0xd7204c));if(_0xd7204c[_0x1b8d('0xc')]){if(_0xd7204c['error']['code']===0x1f4){logger[_0x1b8d('0xc')](_0x1b8d('0xd'),_0x3754dd,_0xd7204c[_0x1b8d('0xc')]['message']);return _0x473c91(_0xd7204c['error'][_0x1b8d('0xe')]);}logger['error']('MailSubstatus,\x20%s,\x20%s',_0x3754dd,_0xd7204c[_0x1b8d('0xc')][_0x1b8d('0xe')]);return _0x5761e5(_0xd7204c[_0x1b8d('0xc')][_0x1b8d('0xe')]);}else{logger[_0x1b8d('0x7')](_0x1b8d('0xd'),_0x3754dd,_0x1b8d('0x8'));_0x5761e5(_0xd7204c[_0x1b8d('0xf')][_0x1b8d('0xe')]);}})[_0x1b8d('0x10')](function(_0x6e1df7){logger[_0x1b8d('0xc')](_0x1b8d('0xd'),_0x3754dd,_0x6e1df7);_0x473c91(_0x6e1df7);});});}
\ No newline at end of file
index f71b7ec..e05d5a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7440=['get','index','/describe','isAuthenticated','describe','/:id','post','create','update','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1bf6b7,_0x12519b){var _0x5e2768=function(_0x2fb507){while(--_0x2fb507){_0x1bf6b7['push'](_0x1bf6b7['shift']());}};_0x5e2768(++_0x12519b);}(_0x7440,0x91));var _0x0744=function(_0x3939d9,_0x2da4f5){_0x3939d9=_0x3939d9-0x0;var _0x5be6cb=_0x7440[_0x3939d9];return _0x5be6cb;};'use strict';var multer=require(_0x0744('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x0744('0x1'));var express=require(_0x0744('0x2'));var router=express[_0x0744('0x3')]();var fs_extra=require(_0x0744('0x4'));var auth=require(_0x0744('0x5'));var interaction=require(_0x0744('0x6'));var config=require(_0x0744('0x7'));var controller=require('./mailTransferReport.controller');router[_0x0744('0x8')]('/',auth['isAuthenticated'](),controller[_0x0744('0x9')]);router[_0x0744('0x8')](_0x0744('0xa'),auth[_0x0744('0xb')](),controller[_0x0744('0xc')]);router[_0x0744('0x8')](_0x0744('0xd'),auth[_0x0744('0xb')](),controller['show']);router[_0x0744('0xe')]('/',auth[_0x0744('0xb')](),controller[_0x0744('0xf')]);router['put']('/:id',auth[_0x0744('0xb')](),controller[_0x0744('0x10')]);router['delete'](_0x0744('0xd'),auth[_0x0744('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xc9e2=['delete','destroy','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','update'];(function(_0x59c193,_0x381e04){var _0x3ef4a6=function(_0x223507){while(--_0x223507){_0x59c193['push'](_0x59c193['shift']());}};_0x3ef4a6(++_0x381e04);}(_0xc9e2,0x1b8));var _0x2c9e=function(_0x9759c9,_0x168c81){_0x9759c9=_0x9759c9-0x0;var _0x37f2d2=_0xc9e2[_0x9759c9];return _0x37f2d2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2c9e('0x0'));var timeout=require(_0x2c9e('0x1'));var express=require('express');var router=express[_0x2c9e('0x2')]();var fs_extra=require(_0x2c9e('0x3'));var auth=require(_0x2c9e('0x4'));var interaction=require(_0x2c9e('0x5'));var config=require('../../config/environment');var controller=require(_0x2c9e('0x6'));router[_0x2c9e('0x7')]('/',auth[_0x2c9e('0x8')](),controller[_0x2c9e('0x9')]);router[_0x2c9e('0x7')](_0x2c9e('0xa'),auth['isAuthenticated'](),controller[_0x2c9e('0xb')]);router[_0x2c9e('0x7')](_0x2c9e('0xc'),auth['isAuthenticated'](),controller[_0x2c9e('0xd')]);router[_0x2c9e('0xe')]('/',auth[_0x2c9e('0x8')](),controller['create']);router['put'](_0x2c9e('0xc'),auth['isAuthenticated'](),controller[_0x2c9e('0xf')]);router[_0x2c9e('0x10')](_0x2c9e('0xc'),auth[_0x2c9e('0x8')](),controller[_0x2c9e('0x11')]);module[_0x2c9e('0x12')]=router;
\ No newline at end of file
index ff76ed5..fc97066 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x21f089,_0x5ebacd){var _0x59c5e7=function(_0x2af336){while(--_0x2af336){_0x21f089['push'](_0x21f089['shift']());}};_0x59c5e7(++_0x5ebacd);}(_0x9c44,0x178));var _0x49c4=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x9c44[_0x4d613c];return _0x301fe3;};'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 _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x5691a3,_0x4fc5dc){var _0x20ec92=function(_0xfb56c8){while(--_0xfb56c8){_0x5691a3['push'](_0x5691a3['shift']());}};_0x20ec92(++_0x4fc5dc);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1bc0ae,_0x439dfe){_0x1bc0ae=_0x1bc0ae-0x0;var _0x501104=_0xcb91[_0x1bc0ae];return _0x501104;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
index 5821246..713e9db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8678=['ejs','lodash','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','end','status','json','undefined','limit','offset','count','set','apply','reject','update','then','sendStatus','error','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','where','merge','VIRTUAL','filter','options','include','findAll','rows','params','includeAll','catch','create','body','find','destroy','describe','eml-format','zip-dir','moment','bluebird','mustache','util','path','sox'];(function(_0x298d34,_0x160b1b){var _0x451392=function(_0x2df217){while(--_0x2df217){_0x298d34['push'](_0x298d34['shift']());}};_0x451392(++_0x160b1b);}(_0x8678,0xdf));var _0x8867=function(_0x37e2a5,_0x3964ec){_0x37e2a5=_0x37e2a5-0x0;var _0x3f2bba=_0x8678[_0x37e2a5];return _0x3f2bba;};'use strict';var emlformat=require(_0x8867('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8867('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8867('0x2'));var BPromise=require(_0x8867('0x3'));var Mustache=require(_0x8867('0x4'));var util=require(_0x8867('0x5'));var path=require(_0x8867('0x6'));var sox=require(_0x8867('0x7'));var csv=require('to-csv');var ejs=require(_0x8867('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8867('0x9'));var squel=require('squel');var crypto=require(_0x8867('0xa'));var jsforce=require(_0x8867('0xb'));var deskjs=require(_0x8867('0xc'));var toCsv=require(_0x8867('0xd'));var querystring=require(_0x8867('0xe'));var Papa=require(_0x8867('0xf'));var Redis=require(_0x8867('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8867('0x11'));var as=require(_0x8867('0x12'));var hardwareService=require(_0x8867('0x13'));var logger=require(_0x8867('0x14'))(_0x8867('0x15'));var utils=require(_0x8867('0x16'));var config=require(_0x8867('0x17'));var licenseUtil=require(_0x8867('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b29b1,_0x46cf74){_0x46cf74=_0x46cf74||0xcc;return function(_0xf16382){if(_0xf16382){return _0x2b29b1['sendStatus'](_0x46cf74);}return _0x2b29b1['status'](_0x46cf74)[_0x8867('0x19')]();};}function respondWithResult(_0x9f36fe,_0x12647d){_0x12647d=_0x12647d||0xc8;return function(_0x159b1a){if(_0x159b1a){return _0x9f36fe[_0x8867('0x1a')](_0x12647d)[_0x8867('0x1b')](_0x159b1a);}};}function respondWithFilteredResult(_0x3c6f60,_0x3c080c){return function(_0x208a1e){if(_0x208a1e){var _0x2c2164=typeof _0x3c080c['offset']===_0x8867('0x1c')&&typeof _0x3c080c[_0x8867('0x1d')]===_0x8867('0x1c');var _0x3bd064=_0x208a1e['count'];var _0xe32f14=_0x2c2164?0x0:_0x3c080c[_0x8867('0x1e')];var _0xa205b3=_0x2c2164?_0x208a1e[_0x8867('0x1f')]:_0x3c080c[_0x8867('0x1e')]+_0x3c080c[_0x8867('0x1d')];var _0x54a3ee;if(_0xa205b3>=_0x3bd064){_0xa205b3=_0x3bd064;_0x54a3ee=0xc8;}else{_0x54a3ee=0xce;}_0x3c6f60['status'](_0x54a3ee);return _0x3c6f60[_0x8867('0x20')]('Content-Range',_0xe32f14+'-'+_0xa205b3+'/'+_0x3bd064)['json'](_0x208a1e);}return null;};}function patchUpdates(_0x2a2af7){return function(_0x413bb3){try{jsonpatch[_0x8867('0x21')](_0x413bb3,_0x2a2af7,!![]);}catch(_0x208467){return BPromise[_0x8867('0x22')](_0x208467);}return _0x413bb3['save']();};}function saveUpdates(_0x226285,_0x21e1ff){return function(_0x32567a){if(_0x32567a){return _0x32567a[_0x8867('0x23')](_0x226285)[_0x8867('0x24')](function(_0x486b85){return _0x486b85;});}return null;};}function removeEntity(_0x37a4fd,_0x2ce157){return function(_0xad45c2){if(_0xad45c2){return _0xad45c2['destroy']()[_0x8867('0x24')](function(){_0x37a4fd[_0x8867('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x548bc4,_0x40cf23){return function(_0x55a321){if(!_0x55a321){_0x548bc4[_0x8867('0x25')](0x194);}return _0x55a321;};}function handleError(_0x23b8b2,_0x565a85){_0x565a85=_0x565a85||0x1f4;return function(_0x4bc340){logger[_0x8867('0x26')](_0x4bc340[_0x8867('0x27')]);if(_0x4bc340['name']){delete _0x4bc340[_0x8867('0x28')];}_0x23b8b2[_0x8867('0x1a')](_0x565a85)[_0x8867('0x29')](_0x4bc340);};}exports[_0x8867('0x2a')]=function(_0x521353,_0x3f0e19){var _0x4230db={},_0x72093a={},_0x322afe={'count':0x0,'rows':[]};var _0x54d211=_[_0x8867('0x2b')](db[_0x8867('0x2c')][_0x8867('0x2d')],function(_0x5a46ce){return{'name':_0x5a46ce[_0x8867('0x2e')],'type':_0x5a46ce[_0x8867('0x2f')][_0x8867('0x30')]};});_0x72093a[_0x8867('0x31')]=_[_0x8867('0x2b')](_0x54d211,_0x8867('0x28'));_0x72093a[_0x8867('0x32')]=_[_0x8867('0x33')](_0x521353['query']);_0x72093a['filters']=_[_0x8867('0x34')](_0x72093a['model'],_0x72093a[_0x8867('0x32')]);_0x4230db[_0x8867('0x35')]=_[_0x8867('0x34')](_0x72093a[_0x8867('0x31')],qs[_0x8867('0x36')](_0x521353[_0x8867('0x32')][_0x8867('0x36')]));_0x4230db[_0x8867('0x35')]=_0x4230db[_0x8867('0x35')][_0x8867('0x37')]?_0x4230db['attributes']:_0x72093a[_0x8867('0x31')];if(!_0x521353['query'][_0x8867('0x38')](_0x8867('0x39'))){_0x4230db[_0x8867('0x1d')]=qs['limit'](_0x521353['query'][_0x8867('0x1d')]);_0x4230db['offset']=qs[_0x8867('0x1e')](_0x521353[_0x8867('0x32')]['offset']);}_0x4230db[_0x8867('0x3a')]=qs[_0x8867('0x3b')](_0x521353[_0x8867('0x32')][_0x8867('0x3b')]);_0x4230db['where']=qs['filters'](_['pick'](_0x521353[_0x8867('0x32')],_0x72093a[_0x8867('0x3c')]),_0x54d211);if(_0x521353['query']['filter']){_0x4230db[_0x8867('0x3d')]=_[_0x8867('0x3e')](_0x4230db[_0x8867('0x3d')],{'$or':_[_0x8867('0x2b')](_0x54d211,function(_0x499276){if(_0x499276['type']!==_0x8867('0x3f')){var _0x15efe6={};_0x15efe6[_0x499276[_0x8867('0x28')]]={'$like':'%'+_0x521353[_0x8867('0x32')][_0x8867('0x40')]+'%'};return _0x15efe6;}})});}_0x4230db=_[_0x8867('0x3e')]({},_0x4230db,_0x521353[_0x8867('0x41')]);var _0x5cc2b1={'where':_0x4230db[_0x8867('0x3d')]};return db[_0x8867('0x2c')][_0x8867('0x1f')](_0x5cc2b1)['then'](function(_0x48f2af){_0x322afe[_0x8867('0x1f')]=_0x48f2af;if(_0x521353[_0x8867('0x32')]['includeAll']){_0x4230db[_0x8867('0x42')]=[{'all':!![]}];}return db[_0x8867('0x2c')][_0x8867('0x43')](_0x4230db);})[_0x8867('0x24')](function(_0x44921b){_0x322afe[_0x8867('0x44')]=_0x44921b;return _0x322afe;})[_0x8867('0x24')](respondWithFilteredResult(_0x3f0e19,_0x4230db))['catch'](handleError(_0x3f0e19,null));};exports['show']=function(_0x2ce287,_0x24f6d6){var _0x3983cb={'raw':!![],'where':{'id':_0x2ce287[_0x8867('0x45')]['id']}},_0x35d229={};_0x35d229[_0x8867('0x31')]=_[_0x8867('0x33')](db[_0x8867('0x2c')][_0x8867('0x2d')]);_0x35d229[_0x8867('0x32')]=_[_0x8867('0x33')](_0x2ce287[_0x8867('0x32')]);_0x35d229[_0x8867('0x3c')]=_['intersection'](_0x35d229['model'],_0x35d229[_0x8867('0x32')]);_0x3983cb['attributes']=_['intersection'](_0x35d229[_0x8867('0x31')],qs[_0x8867('0x36')](_0x2ce287[_0x8867('0x32')][_0x8867('0x36')]));_0x3983cb[_0x8867('0x35')]=_0x3983cb[_0x8867('0x35')]['length']?_0x3983cb['attributes']:_0x35d229['model'];if(_0x2ce287[_0x8867('0x32')][_0x8867('0x46')]){_0x3983cb[_0x8867('0x42')]=[{'all':!![]}];}_0x3983cb=_[_0x8867('0x3e')]({},_0x3983cb,_0x2ce287[_0x8867('0x41')]);return db[_0x8867('0x2c')]['find'](_0x3983cb)[_0x8867('0x24')](handleEntityNotFound(_0x24f6d6,null))[_0x8867('0x24')](respondWithResult(_0x24f6d6,null))[_0x8867('0x47')](handleError(_0x24f6d6,null));};exports['create']=function(_0x3d107b,_0x571749){return db[_0x8867('0x2c')][_0x8867('0x48')](_0x3d107b['body'],{})[_0x8867('0x24')](respondWithResult(_0x571749,0xc9))[_0x8867('0x47')](handleError(_0x571749,null));};exports[_0x8867('0x23')]=function(_0x2f83db,_0x58dc82){if(_0x2f83db[_0x8867('0x49')]['id']){delete _0x2f83db[_0x8867('0x49')]['id'];}return db[_0x8867('0x2c')][_0x8867('0x4a')]({'where':{'id':_0x2f83db[_0x8867('0x45')]['id']}})[_0x8867('0x24')](handleEntityNotFound(_0x58dc82,null))[_0x8867('0x24')](saveUpdates(_0x2f83db[_0x8867('0x49')],null))['then'](respondWithResult(_0x58dc82,null))[_0x8867('0x47')](handleError(_0x58dc82,null));};exports[_0x8867('0x4b')]=function(_0x39f11f,_0x4b6cf4){return db[_0x8867('0x2c')][_0x8867('0x4a')]({'where':{'id':_0x39f11f['params']['id']}})[_0x8867('0x24')](handleEntityNotFound(_0x4b6cf4,null))[_0x8867('0x24')](removeEntity(_0x4b6cf4,null))['catch'](handleError(_0x4b6cf4,null));};exports[_0x8867('0x4c')]=function(_0x3f0ba4,_0x2751da){return db['MailTransferReport']['describe']()['then'](respondWithResult(_0x2751da,null))[_0x8867('0x47')](handleError(_0x2751da,null));};
\ No newline at end of file
+var _0x9cac=['MailTransferReport','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','VIRTUAL','merge','options','count','includeAll','include','findAll','rows','catch','params','rawAttributes','find','body','describe','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','end','status','json','offset','undefined','set','Content-Range','apply','save','update','destroy','then','sendStatus','error','name','send','map'];(function(_0x31295c,_0x2f2b82){var _0x2c150e=function(_0x957f1){while(--_0x957f1){_0x31295c['push'](_0x31295c['shift']());}};_0x2c150e(++_0x2f2b82);}(_0x9cac,0x68));var _0xc9ca=function(_0x97edb1,_0x5b17bf){_0x97edb1=_0x97edb1-0x0;var _0x34004e=_0x9cac[_0x97edb1];return _0x34004e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc9ca('0x0'));var zipdir=require(_0xc9ca('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc9ca('0x2'));var moment=require(_0xc9ca('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc9ca('0x4'));var path=require(_0xc9ca('0x5'));var sox=require(_0xc9ca('0x6'));var csv=require(_0xc9ca('0x7'));var ejs=require(_0xc9ca('0x8'));var fs=require('fs');var fs_extra=require(_0xc9ca('0x9'));var _=require(_0xc9ca('0xa'));var squel=require(_0xc9ca('0xb'));var crypto=require(_0xc9ca('0xc'));var jsforce=require(_0xc9ca('0xd'));var deskjs=require(_0xc9ca('0xe'));var toCsv=require(_0xc9ca('0x7'));var querystring=require(_0xc9ca('0xf'));var Papa=require(_0xc9ca('0x10'));var Redis=require('ioredis');var authService=require(_0xc9ca('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xc9ca('0x12'));var hardwareService=require(_0xc9ca('0x13'));var logger=require(_0xc9ca('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4204a0,_0x4c023a){_0x4c023a=_0x4c023a||0xcc;return function(_0x1aff1d){if(_0x1aff1d){return _0x4204a0['sendStatus'](_0x4c023a);}return _0x4204a0['status'](_0x4c023a)[_0xc9ca('0x15')]();};}function respondWithResult(_0x4bbc0f,_0x2adf24){_0x2adf24=_0x2adf24||0xc8;return function(_0x487d59){if(_0x487d59){return _0x4bbc0f[_0xc9ca('0x16')](_0x2adf24)[_0xc9ca('0x17')](_0x487d59);}};}function respondWithFilteredResult(_0x594b30,_0x314885){return function(_0x3c395e){if(_0x3c395e){var _0x130a8f=typeof _0x314885[_0xc9ca('0x18')]===_0xc9ca('0x19')&&typeof _0x314885['limit']===_0xc9ca('0x19');var _0x1c1e67=_0x3c395e['count'];var _0xd342dc=_0x130a8f?0x0:_0x314885[_0xc9ca('0x18')];var _0x49f6e9=_0x130a8f?_0x3c395e['count']:_0x314885[_0xc9ca('0x18')]+_0x314885['limit'];var _0x5c8157;if(_0x49f6e9>=_0x1c1e67){_0x49f6e9=_0x1c1e67;_0x5c8157=0xc8;}else{_0x5c8157=0xce;}_0x594b30[_0xc9ca('0x16')](_0x5c8157);return _0x594b30[_0xc9ca('0x1a')](_0xc9ca('0x1b'),_0xd342dc+'-'+_0x49f6e9+'/'+_0x1c1e67)['json'](_0x3c395e);}return null;};}function patchUpdates(_0x519547){return function(_0x464161){try{jsonpatch[_0xc9ca('0x1c')](_0x464161,_0x519547,!![]);}catch(_0x4d001b){return BPromise['reject'](_0x4d001b);}return _0x464161[_0xc9ca('0x1d')]();};}function saveUpdates(_0x395913,_0x24ccde){return function(_0x5a72c3){if(_0x5a72c3){return _0x5a72c3[_0xc9ca('0x1e')](_0x395913)['then'](function(_0x88a539){return _0x88a539;});}return null;};}function removeEntity(_0x210c9e,_0xafbfc2){return function(_0x5f342d){if(_0x5f342d){return _0x5f342d[_0xc9ca('0x1f')]()[_0xc9ca('0x20')](function(){_0x210c9e[_0xc9ca('0x16')](0xcc)[_0xc9ca('0x15')]();});}};}function handleEntityNotFound(_0x1944fa,_0x2a2d4f){return function(_0x3d4815){if(!_0x3d4815){_0x1944fa[_0xc9ca('0x21')](0x194);}return _0x3d4815;};}function handleError(_0x3cfbdc,_0x34c0ce){_0x34c0ce=_0x34c0ce||0x1f4;return function(_0x32f6e5){logger[_0xc9ca('0x22')](_0x32f6e5['stack']);if(_0x32f6e5['name']){delete _0x32f6e5[_0xc9ca('0x23')];}_0x3cfbdc['status'](_0x34c0ce)[_0xc9ca('0x24')](_0x32f6e5);};}exports['index']=function(_0x1f2c20,_0x368f3a){var _0x190dbf={},_0x1bb452={},_0x397ec0={'count':0x0,'rows':[]};var _0x20372d=_[_0xc9ca('0x25')](db[_0xc9ca('0x26')]['rawAttributes'],function(_0xccb074){return{'name':_0xccb074[_0xc9ca('0x27')],'type':_0xccb074[_0xc9ca('0x28')][_0xc9ca('0x29')]};});_0x1bb452[_0xc9ca('0x2a')]=_[_0xc9ca('0x25')](_0x20372d,'name');_0x1bb452['query']=_[_0xc9ca('0x2b')](_0x1f2c20[_0xc9ca('0x2c')]);_0x1bb452[_0xc9ca('0x2d')]=_[_0xc9ca('0x2e')](_0x1bb452[_0xc9ca('0x2a')],_0x1bb452[_0xc9ca('0x2c')]);_0x190dbf[_0xc9ca('0x2f')]=_[_0xc9ca('0x2e')](_0x1bb452[_0xc9ca('0x2a')],qs[_0xc9ca('0x30')](_0x1f2c20['query'][_0xc9ca('0x30')]));_0x190dbf[_0xc9ca('0x2f')]=_0x190dbf[_0xc9ca('0x2f')][_0xc9ca('0x31')]?_0x190dbf[_0xc9ca('0x2f')]:_0x1bb452[_0xc9ca('0x2a')];if(!_0x1f2c20[_0xc9ca('0x2c')][_0xc9ca('0x32')](_0xc9ca('0x33'))){_0x190dbf[_0xc9ca('0x34')]=qs['limit'](_0x1f2c20[_0xc9ca('0x2c')][_0xc9ca('0x34')]);_0x190dbf[_0xc9ca('0x18')]=qs['offset'](_0x1f2c20['query'][_0xc9ca('0x18')]);}_0x190dbf[_0xc9ca('0x35')]=qs[_0xc9ca('0x36')](_0x1f2c20['query'][_0xc9ca('0x36')]);_0x190dbf[_0xc9ca('0x37')]=qs['filters'](_['pick'](_0x1f2c20['query'],_0x1bb452[_0xc9ca('0x2d')]),_0x20372d);if(_0x1f2c20['query'][_0xc9ca('0x38')]){_0x190dbf['where']=_['merge'](_0x190dbf[_0xc9ca('0x37')],{'$or':_['map'](_0x20372d,function(_0x48a747){if(_0x48a747[_0xc9ca('0x28')]!==_0xc9ca('0x39')){var _0x2716cc={};_0x2716cc[_0x48a747[_0xc9ca('0x23')]]={'$like':'%'+_0x1f2c20['query']['filter']+'%'};return _0x2716cc;}})});}_0x190dbf=_[_0xc9ca('0x3a')]({},_0x190dbf,_0x1f2c20[_0xc9ca('0x3b')]);var _0x555f0d={'where':_0x190dbf[_0xc9ca('0x37')]};return db['MailTransferReport']['count'](_0x555f0d)['then'](function(_0x4b3d7e){_0x397ec0[_0xc9ca('0x3c')]=_0x4b3d7e;if(_0x1f2c20[_0xc9ca('0x2c')][_0xc9ca('0x3d')]){_0x190dbf[_0xc9ca('0x3e')]=[{'all':!![]}];}return db['MailTransferReport'][_0xc9ca('0x3f')](_0x190dbf);})['then'](function(_0x1b1ae8){_0x397ec0[_0xc9ca('0x40')]=_0x1b1ae8;return _0x397ec0;})[_0xc9ca('0x20')](respondWithFilteredResult(_0x368f3a,_0x190dbf))[_0xc9ca('0x41')](handleError(_0x368f3a,null));};exports['show']=function(_0xaabc7b,_0x16782a){var _0x51b1e3={'raw':!![],'where':{'id':_0xaabc7b[_0xc9ca('0x42')]['id']}},_0x2ecf07={};_0x2ecf07[_0xc9ca('0x2a')]=_[_0xc9ca('0x2b')](db['MailTransferReport'][_0xc9ca('0x43')]);_0x2ecf07[_0xc9ca('0x2c')]=_[_0xc9ca('0x2b')](_0xaabc7b[_0xc9ca('0x2c')]);_0x2ecf07[_0xc9ca('0x2d')]=_['intersection'](_0x2ecf07[_0xc9ca('0x2a')],_0x2ecf07['query']);_0x51b1e3['attributes']=_[_0xc9ca('0x2e')](_0x2ecf07[_0xc9ca('0x2a')],qs[_0xc9ca('0x30')](_0xaabc7b[_0xc9ca('0x2c')][_0xc9ca('0x30')]));_0x51b1e3[_0xc9ca('0x2f')]=_0x51b1e3[_0xc9ca('0x2f')]['length']?_0x51b1e3[_0xc9ca('0x2f')]:_0x2ecf07[_0xc9ca('0x2a')];if(_0xaabc7b[_0xc9ca('0x2c')][_0xc9ca('0x3d')]){_0x51b1e3[_0xc9ca('0x3e')]=[{'all':!![]}];}_0x51b1e3=_[_0xc9ca('0x3a')]({},_0x51b1e3,_0xaabc7b[_0xc9ca('0x3b')]);return db[_0xc9ca('0x26')][_0xc9ca('0x44')](_0x51b1e3)[_0xc9ca('0x20')](handleEntityNotFound(_0x16782a,null))[_0xc9ca('0x20')](respondWithResult(_0x16782a,null))['catch'](handleError(_0x16782a,null));};exports['create']=function(_0x494bc5,_0x53c352){return db[_0xc9ca('0x26')]['create'](_0x494bc5['body'],{})[_0xc9ca('0x20')](respondWithResult(_0x53c352,0xc9))[_0xc9ca('0x41')](handleError(_0x53c352,null));};exports[_0xc9ca('0x1e')]=function(_0x42bd63,_0x16e59b){if(_0x42bd63['body']['id']){delete _0x42bd63[_0xc9ca('0x45')]['id'];}return db[_0xc9ca('0x26')]['find']({'where':{'id':_0x42bd63['params']['id']}})[_0xc9ca('0x20')](handleEntityNotFound(_0x16e59b,null))['then'](saveUpdates(_0x42bd63[_0xc9ca('0x45')],null))[_0xc9ca('0x20')](respondWithResult(_0x16e59b,null))[_0xc9ca('0x41')](handleError(_0x16e59b,null));};exports[_0xc9ca('0x1f')]=function(_0x5092f9,_0x442c98){return db['MailTransferReport'][_0xc9ca('0x44')]({'where':{'id':_0x5092f9[_0xc9ca('0x42')]['id']}})[_0xc9ca('0x20')](handleEntityNotFound(_0x442c98,null))['then'](removeEntity(_0x442c98,null))[_0xc9ca('0x41')](handleError(_0x442c98,null));};exports['describe']=function(_0x5313b7,_0x21935f){return db[_0xc9ca('0x26')][_0xc9ca('0x46')]()[_0xc9ca('0x20')](respondWithResult(_0x21935f,null))[_0xc9ca('0x41')](handleError(_0x21935f,null));};
\ No newline at end of file
index 85ee0bd..0b71300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x535f=['moment','bluebird','request-promise','path','../../config/environment','./mailTransferReport.attributes','exports','define','uniqueid','util','../../config/logger'];(function(_0x2c4e6f,_0x1b97b2){var _0x2d6ed1=function(_0x1cf0d3){while(--_0x1cf0d3){_0x2c4e6f['push'](_0x2c4e6f['shift']());}};_0x2d6ed1(++_0x1b97b2);}(_0x535f,0x111));var _0xf535=function(_0x5ad37c,_0x48985a){_0x5ad37c=_0x5ad37c-0x0;var _0x322c6a=_0x535f[_0x5ad37c];return _0x322c6a;};'use strict';var _=require('lodash');var util=require(_0xf535('0x0'));var logger=require(_0xf535('0x1'))('api');var moment=require(_0xf535('0x2'));var BPromise=require(_0xf535('0x3'));var rp=require(_0xf535('0x4'));var fs=require('fs');var path=require(_0xf535('0x5'));var rimraf=require('rimraf');var config=require(_0xf535('0x6'));var attributes=require(_0xf535('0x7'));module[_0xf535('0x8')]=function(_0x30936d,_0x41ca74){return _0x30936d[_0xf535('0x9')]('MailTransferReport',attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0xf535('0xa'),'fields':[_0xf535('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbe83=['api','moment','bluebird','path','rimraf','../../config/environment','./mailTransferReport.attributes','define','report_mail_transfer','uniqueid','lodash','../../config/logger'];(function(_0x515b97,_0xfc8d6e){var _0x459279=function(_0x2e1726){while(--_0x2e1726){_0x515b97['push'](_0x515b97['shift']());}};_0x459279(++_0xfc8d6e);}(_0xbe83,0xee));var _0x3be8=function(_0x3edb74,_0x283921){_0x3edb74=_0x3edb74-0x0;var _0x2d9c4d=_0xbe83[_0x3edb74];return _0x2d9c4d;};'use strict';var _=require(_0x3be8('0x0'));var util=require('util');var logger=require(_0x3be8('0x1'))(_0x3be8('0x2'));var moment=require(_0x3be8('0x3'));var BPromise=require(_0x3be8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3be8('0x5'));var rimraf=require(_0x3be8('0x6'));var config=require(_0x3be8('0x7'));var attributes=require(_0x3be8('0x8'));module['exports']=function(_0x2def96,_0x31183c){return _0x2def96[_0x3be8('0x9')]('MailTransferReport',attributes,{'tableName':_0x3be8('0xa'),'paranoid':![],'indexes':[{'name':_0x3be8('0xb'),'fields':[_0x3be8('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 5a5f58c..d4d7f46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ab=['util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','client','http','request','then','MailTransferReport,\x20%s,\x20%s','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash'];(function(_0x19cfb9,_0x43a74a){var _0x372df7=function(_0x6eed38){while(--_0x6eed38){_0x19cfb9['push'](_0x19cfb9['shift']());}};_0x372df7(++_0x43a74a);}(_0x55ab,0xb7));var _0xb55a=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x55ab[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0xb55a('0x0'));var util=require(_0xb55a('0x1'));var moment=require(_0xb55a('0x2'));var BPromise=require(_0xb55a('0x3'));var rs=require(_0xb55a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb55a('0x5'));var logger=require('../../config/logger')(_0xb55a('0x6'));var config=require(_0xb55a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb55a('0x8')][_0xb55a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x495fb3,_0x1dae30,_0x5a3cef){return new BPromise(function(_0x36e205,_0x4dfadf){return client[_0xb55a('0xa')](_0x495fb3,_0x5a3cef)[_0xb55a('0xb')](function(_0x3a699f){logger['info'](_0xb55a('0xc'),_0x1dae30,'request\x20sent');logger[_0xb55a('0xd')](_0xb55a('0xe'),_0x1dae30,_0xb55a('0xf'),JSON[_0xb55a('0x10')](_0x3a699f));if(_0x3a699f[_0xb55a('0x11')]){if(_0x3a699f[_0xb55a('0x11')][_0xb55a('0x12')]===0x1f4){logger[_0xb55a('0x11')]('MailTransferReport,\x20%s,\x20%s',_0x1dae30,_0x3a699f['error'][_0xb55a('0x13')]);return _0x4dfadf(_0x3a699f['error'][_0xb55a('0x13')]);}logger['error'](_0xb55a('0xc'),_0x1dae30,_0x3a699f[_0xb55a('0x11')][_0xb55a('0x13')]);return _0x36e205(_0x3a699f[_0xb55a('0x11')][_0xb55a('0x13')]);}else{logger[_0xb55a('0x14')](_0xb55a('0xc'),_0x1dae30,_0xb55a('0xf'));_0x36e205(_0x3a699f[_0xb55a('0x15')][_0xb55a('0x13')]);}})[_0xb55a('0x16')](function(_0xcbb3ab){logger[_0xb55a('0x11')](_0xb55a('0xc'),_0x1dae30,_0xcbb3ab);_0x4dfadf(_0xcbb3ab);});});}
\ No newline at end of file
+var _0xa3fc=['code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0xdb4955,_0x145b00){var _0x39daf9=function(_0x183327){while(--_0x183327){_0xdb4955['push'](_0xdb4955['shift']());}};_0x39daf9(++_0x145b00);}(_0xa3fc,0x1e8));var _0xca3f=function(_0xa0be1c,_0x152d5d){_0xa0be1c=_0xa0be1c-0x0;var _0x546eec=_0xa3fc[_0xa0be1c];return _0x546eec;};'use strict';var _=require(_0xca3f('0x0'));var util=require(_0xca3f('0x1'));var moment=require(_0xca3f('0x2'));var BPromise=require('bluebird');var rs=require(_0xca3f('0x3'));var fs=require('fs');var Redis=require(_0xca3f('0x4'));var db=require(_0xca3f('0x5'))['db'];var utils=require(_0xca3f('0x6'));var logger=require('../../config/logger')(_0xca3f('0x7'));var config=require(_0xca3f('0x8'));var jayson=require(_0xca3f('0x9'));var client=jayson[_0xca3f('0xa')][_0xca3f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3e4508,_0x32929b,_0x2f15a7){return new BPromise(function(_0x2a2b8b,_0x17e4b1){return client[_0xca3f('0xc')](_0x3e4508,_0x2f15a7)['then'](function(_0x32a9da){logger[_0xca3f('0xd')](_0xca3f('0xe'),_0x32929b,'request\x20sent');logger['debug']('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x32929b,_0xca3f('0xf'),JSON[_0xca3f('0x10')](_0x32a9da));if(_0x32a9da[_0xca3f('0x11')]){if(_0x32a9da[_0xca3f('0x11')][_0xca3f('0x12')]===0x1f4){logger[_0xca3f('0x11')](_0xca3f('0xe'),_0x32929b,_0x32a9da[_0xca3f('0x11')][_0xca3f('0x13')]);return _0x17e4b1(_0x32a9da[_0xca3f('0x11')][_0xca3f('0x13')]);}logger[_0xca3f('0x11')]('MailTransferReport,\x20%s,\x20%s',_0x32929b,_0x32a9da['error'][_0xca3f('0x13')]);return _0x2a2b8b(_0x32a9da[_0xca3f('0x11')][_0xca3f('0x13')]);}else{logger[_0xca3f('0xd')]('MailTransferReport,\x20%s,\x20%s',_0x32929b,_0xca3f('0xf'));_0x2a2b8b(_0x32a9da[_0xca3f('0x14')][_0xca3f('0x13')]);}})[_0xca3f('0x15')](function(_0x2ec0fd){logger[_0xca3f('0x11')](_0xca3f('0xe'),_0x32929b,_0x2ec0fd);_0x17e4b1(_0x2ec0fd);});});}
\ No newline at end of file
index fdde9c8..d9c19fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x704a=['exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','/describe','/:id','show','post','put','delete','destroy'];(function(_0xd1c39b,_0x16f0c6){var _0x58f5bc=function(_0x412cf3){while(--_0x412cf3){_0xd1c39b['push'](_0xd1c39b['shift']());}};_0x58f5bc(++_0x16f0c6);}(_0x704a,0x86));var _0xa704=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x704a[_0x209941];return _0x1e8729;};'use strict';var multer=require(_0xa704('0x0'));var util=require('util');var path=require(_0xa704('0x1'));var timeout=require(_0xa704('0x2'));var express=require('express');var router=express[_0xa704('0x3')]();var fs_extra=require(_0xa704('0x4'));var auth=require(_0xa704('0x5'));var interaction=require(_0xa704('0x6'));var config=require(_0xa704('0x7'));var controller=require(_0xa704('0x8'));router[_0xa704('0x9')]('/',auth[_0xa704('0xa')](),controller['index']);router[_0xa704('0x9')](_0xa704('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xa704('0x9')](_0xa704('0xc'),auth[_0xa704('0xa')](),controller[_0xa704('0xd')]);router[_0xa704('0xe')]('/',auth[_0xa704('0xa')](),controller['create']);router[_0xa704('0xf')](_0xa704('0xc'),auth[_0xa704('0xa')](),controller['update']);router[_0xa704('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xa704('0x11')]);module[_0xa704('0x12')]=router;
\ No newline at end of file
+var _0x72b3=['index','get','describe','/:id','show','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','isAuthenticated'];(function(_0x5a7b07,_0x428cbd){var _0x44338b=function(_0x54c986){while(--_0x54c986){_0x5a7b07['push'](_0x5a7b07['shift']());}};_0x44338b(++_0x428cbd);}(_0x72b3,0x106));var _0x372b=function(_0x5cb1af,_0x4bdc8c){_0x5cb1af=_0x5cb1af-0x0;var _0x8d7940=_0x72b3[_0x5cb1af];return _0x8d7940;};'use strict';var multer=require(_0x372b('0x0'));var util=require(_0x372b('0x1'));var path=require(_0x372b('0x2'));var timeout=require(_0x372b('0x3'));var express=require(_0x372b('0x4'));var router=express['Router']();var fs_extra=require(_0x372b('0x5'));var auth=require(_0x372b('0x6'));var interaction=require(_0x372b('0x7'));var config=require(_0x372b('0x8'));var controller=require(_0x372b('0x9'));router['get']('/',auth[_0x372b('0xa')](),controller[_0x372b('0xb')]);router[_0x372b('0xc')]('/describe',auth['isAuthenticated'](),controller[_0x372b('0xd')]);router['get'](_0x372b('0xe'),auth['isAuthenticated'](),controller[_0x372b('0xf')]);router['post']('/',auth[_0x372b('0xa')](),controller[_0x372b('0x10')]);router['put'](_0x372b('0xe'),auth[_0x372b('0xa')](),controller[_0x372b('0x11')]);router[_0x372b('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x372b('0x13')]);module[_0x372b('0x14')]=router;
\ No newline at end of file
index dbf0c76..b9a527c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7914=['seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[queue]','sequelize','moment','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','enterAt','diff'];(function(_0x264bea,_0x3080ab){var _0x5fa694=function(_0x1ee3ff){while(--_0x1ee3ff){_0x264bea['push'](_0x264bea['shift']());}};_0x5fa694(++_0x3080ab);}(_0x7914,0x107));var _0x4791=function(_0x56d34e,_0x1bf74f){_0x56d34e=_0x56d34e-0x0;var _0x379864=_0x7914[_0x56d34e];return _0x379864;};'use strict';var Sequelize=require(_0x4791('0x0'));var moment=require(_0x4791('0x1'));module['exports']={'channel':{'type':Sequelize[_0x4791('0x2')]},'membername':{'type':Sequelize[_0x4791('0x2')]},'interface':{'type':Sequelize[_0x4791('0x2')]},'type':{'type':Sequelize[_0x4791('0x2')],'defaultValue':_0x4791('0x3'),'comment':_0x4791('0x4')},'duration':{'type':Sequelize[_0x4791('0x5')]},'enterAt':{'type':Sequelize[_0x4791('0x6')]},'exitAt':{'type':Sequelize[_0x4791('0x6')],'set':function(_0x3ec3ea){var _0x498f55=moment(_0x3ec3ea);var _0x306863=moment(this['getDataValue'](_0x4791('0x7')));var _0x22163f=_0x498f55[_0x4791('0x8')](_0x306863,_0x4791('0x9'));this[_0x4791('0xa')](_0x4791('0xb'),_0x3ec3ea);this[_0x4791('0xa')](_0x4791('0xc'),_0x22163f||null);}},'data1':{'type':Sequelize['STRING'],'comment':_0x4791('0xd')},'data2':{'type':Sequelize[_0x4791('0x2')],'comment':_0x4791('0xe')},'data3':{'type':Sequelize[_0x4791('0x2')],'comment':_0x4791('0xf')},'data4':{'type':Sequelize[_0x4791('0x2')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize[_0x4791('0x2')],'comment':_0x4791('0x10')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0x4791('0x5')]},'uniqueid':{'type':Sequelize[_0x4791('0x2')]}};
\ No newline at end of file
+var _0x4156=['talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','enterAt','seconds','setDataValue','exitAt','talk:[start]','talk:[destination]','talk:[dial\x20string]'];(function(_0x17430b,_0x2b1d31){var _0x19a5a4=function(_0x2d93ad){while(--_0x2d93ad){_0x17430b['push'](_0x17430b['shift']());}};_0x19a5a4(++_0x2b1d31);}(_0x4156,0xf1));var _0x6415=function(_0x5b259c,_0x448e3d){_0x5b259c=_0x5b259c-0x0;var _0x3ade5c=_0x4156[_0x5b259c];return _0x3ade5c;};'use strict';var Sequelize=require(_0x6415('0x0'));var moment=require(_0x6415('0x1'));module[_0x6415('0x2')]={'channel':{'type':Sequelize[_0x6415('0x3')]},'membername':{'type':Sequelize[_0x6415('0x3')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x6415('0x3')],'defaultValue':_0x6415('0x4'),'comment':_0x6415('0x5')},'duration':{'type':Sequelize[_0x6415('0x6')]},'enterAt':{'type':Sequelize[_0x6415('0x7')]},'exitAt':{'type':Sequelize[_0x6415('0x7')],'set':function(_0x192a98){var _0x496a42=moment(_0x192a98);var _0x24cb0=moment(this['getDataValue'](_0x6415('0x8')));var _0x266237=_0x496a42['diff'](_0x24cb0,_0x6415('0x9'));this[_0x6415('0xa')](_0x6415('0xb'),_0x192a98);this[_0x6415('0xa')]('duration',_0x266237||null);}},'data1':{'type':Sequelize[_0x6415('0x3')],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize['STRING'],'comment':_0x6415('0xc')},'data3':{'type':Sequelize[_0x6415('0x3')],'comment':_0x6415('0xd')},'data4':{'type':Sequelize[_0x6415('0x3')],'comment':_0x6415('0xe')},'data5':{'type':Sequelize[_0x6415('0x3')],'comment':_0x6415('0xf')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x6415('0x3')]}};
\ No newline at end of file
index 7fef74c..18dab78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','MemberReport','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x202b05,_0x5a246c){var _0x22a0a7=function(_0x5157f2){while(--_0x5157f2){_0x202b05['push'](_0x202b05['shift']());}};_0x22a0a7(++_0x5a246c);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['MemberReport']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['MemberReport'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['MemberReport'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x4ffc8a['params']['id']}})['then'](handleEntityNotFound(_0x19da63,null))['then'](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x4c')]=function(_0x4cf5db,_0x1cd85){return db[_0x7995('0x40')][_0x7995('0x4c')]()[_0x7995('0x26')](respondWithResult(_0x1cd85,null))[_0x7995('0x49')](handleError(_0x1cd85,null));};
\ No newline at end of file
+var _0xedd9=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','update','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','then','end','error','stack','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','name','query'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xedd9,0xfc));var _0x9edd=function(_0x121a12,_0x4f605c){_0x121a12=_0x121a12-0x0;var _0x5688cf=_0xedd9[_0x121a12];return _0x5688cf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];function respondWithStatusCode(_0xfd544a,_0x287ddd){_0x287ddd=_0x287ddd||0xcc;return function(_0x3a7b84){if(_0x3a7b84){return _0xfd544a[_0x9edd('0x18')](_0x287ddd);}return _0xfd544a[_0x9edd('0x19')](_0x287ddd)['end']();};}function respondWithResult(_0x176bfa,_0x44fc7c){_0x44fc7c=_0x44fc7c||0xc8;return function(_0x891832){if(_0x891832){return _0x176bfa[_0x9edd('0x19')](_0x44fc7c)[_0x9edd('0x1a')](_0x891832);}};}function respondWithFilteredResult(_0x338f3c,_0x1042aa){return function(_0x75a4ab){if(_0x75a4ab){var _0x4ea60f=typeof _0x1042aa[_0x9edd('0x1b')]===_0x9edd('0x1c')&&typeof _0x1042aa[_0x9edd('0x1d')]==='undefined';var _0x1b54c0=_0x75a4ab[_0x9edd('0x1e')];var _0x40ba32=_0x4ea60f?0x0:_0x1042aa['offset'];var _0x43dc70=_0x4ea60f?_0x75a4ab['count']:_0x1042aa[_0x9edd('0x1b')]+_0x1042aa[_0x9edd('0x1d')];var _0x4bdb88;if(_0x43dc70>=_0x1b54c0){_0x43dc70=_0x1b54c0;_0x4bdb88=0xc8;}else{_0x4bdb88=0xce;}_0x338f3c['status'](_0x4bdb88);return _0x338f3c[_0x9edd('0x1f')]('Content-Range',_0x40ba32+'-'+_0x43dc70+'/'+_0x1b54c0)[_0x9edd('0x1a')](_0x75a4ab);}return null;};}function patchUpdates(_0x54a03f){return function(_0x535f37){try{jsonpatch[_0x9edd('0x20')](_0x535f37,_0x54a03f,!![]);}catch(_0x1c46a8){return BPromise['reject'](_0x1c46a8);}return _0x535f37['save']();};}function saveUpdates(_0x341d67,_0x186186){return function(_0x477878){if(_0x477878){return _0x477878['update'](_0x341d67)[_0x9edd('0x21')](function(_0x1dca43){return _0x1dca43;});}return null;};}function removeEntity(_0x44a6c1,_0x2ca65f){return function(_0x339a0d){if(_0x339a0d){return _0x339a0d['destroy']()[_0x9edd('0x21')](function(){_0x44a6c1[_0x9edd('0x19')](0xcc)[_0x9edd('0x22')]();});}};}function handleEntityNotFound(_0x2f9f86,_0x310a4d){return function(_0x4d507f){if(!_0x4d507f){_0x2f9f86['sendStatus'](0x194);}return _0x4d507f;};}function handleError(_0x3276ee,_0xfeca7b){_0xfeca7b=_0xfeca7b||0x1f4;return function(_0x8d67aa){logger[_0x9edd('0x23')](_0x8d67aa[_0x9edd('0x24')]);if(_0x8d67aa['name']){delete _0x8d67aa['name'];}_0x3276ee[_0x9edd('0x19')](_0xfeca7b)[_0x9edd('0x25')](_0x8d67aa);};}exports[_0x9edd('0x26')]=function(_0x52746a,_0x238b22){var _0x28cfae={},_0x2ae8dd={},_0x41af53={'count':0x0,'rows':[]};var _0x5eccfb=_[_0x9edd('0x27')](db[_0x9edd('0x28')][_0x9edd('0x29')],function(_0x12c1bc){return{'name':_0x12c1bc[_0x9edd('0x2a')],'type':_0x12c1bc[_0x9edd('0x2b')][_0x9edd('0x2c')]};});_0x2ae8dd[_0x9edd('0x2d')]=_[_0x9edd('0x27')](_0x5eccfb,_0x9edd('0x2e'));_0x2ae8dd[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x52746a[_0x9edd('0x2f')]);_0x2ae8dd[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],_0x2ae8dd[_0x9edd('0x2f')]);_0x28cfae[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],qs[_0x9edd('0x34')](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x28cfae[_0x9edd('0x33')]=_0x28cfae[_0x9edd('0x33')][_0x9edd('0x35')]?_0x28cfae[_0x9edd('0x33')]:_0x2ae8dd[_0x9edd('0x2d')];if(!_0x52746a[_0x9edd('0x2f')][_0x9edd('0x36')](_0x9edd('0x37'))){_0x28cfae[_0x9edd('0x1d')]=qs[_0x9edd('0x1d')](_0x52746a[_0x9edd('0x2f')]['limit']);_0x28cfae[_0x9edd('0x1b')]=qs['offset'](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x1b')]);}_0x28cfae[_0x9edd('0x38')]=qs[_0x9edd('0x39')](_0x52746a[_0x9edd('0x2f')]['sort']);_0x28cfae[_0x9edd('0x3a')]=qs[_0x9edd('0x31')](_[_0x9edd('0x3b')](_0x52746a[_0x9edd('0x2f')],_0x2ae8dd[_0x9edd('0x31')]),_0x5eccfb);if(_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]){_0x28cfae[_0x9edd('0x3a')]=_[_0x9edd('0x3d')](_0x28cfae[_0x9edd('0x3a')],{'$or':_['map'](_0x5eccfb,function(_0x231604){if(_0x231604['type']!==_0x9edd('0x3e')){var _0x5658d6={};_0x5658d6[_0x231604[_0x9edd('0x2e')]]={'$like':'%'+_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]+'%'};return _0x5658d6;}})});}_0x28cfae=_['merge']({},_0x28cfae,_0x52746a[_0x9edd('0x3f')]);var _0xcbd0ef={'where':_0x28cfae[_0x9edd('0x3a')]};return db['MemberReport'][_0x9edd('0x1e')](_0xcbd0ef)['then'](function(_0x1fc4fb){_0x41af53[_0x9edd('0x1e')]=_0x1fc4fb;if(_0x52746a['query'][_0x9edd('0x40')]){_0x28cfae[_0x9edd('0x41')]=[{'all':!![]}];}return db[_0x9edd('0x28')][_0x9edd('0x42')](_0x28cfae);})['then'](function(_0x449f01){_0x41af53['rows']=_0x449f01;return _0x41af53;})[_0x9edd('0x21')](respondWithFilteredResult(_0x238b22,_0x28cfae))[_0x9edd('0x43')](handleError(_0x238b22,null));};exports['show']=function(_0x318757,_0x49a128){var _0x548299={'raw':!![],'where':{'id':_0x318757[_0x9edd('0x44')]['id']}},_0x369b69={};_0x369b69[_0x9edd('0x2d')]=_[_0x9edd('0x30')](db[_0x9edd('0x28')][_0x9edd('0x29')]);_0x369b69[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x318757[_0x9edd('0x2f')]);_0x369b69[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x369b69[_0x9edd('0x2d')],_0x369b69[_0x9edd('0x2f')]);_0x548299[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x369b69['model'],qs[_0x9edd('0x34')](_0x318757[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x548299[_0x9edd('0x33')]=_0x548299[_0x9edd('0x33')][_0x9edd('0x35')]?_0x548299[_0x9edd('0x33')]:_0x369b69['model'];if(_0x318757['query']['includeAll']){_0x548299[_0x9edd('0x41')]=[{'all':!![]}];}_0x548299=_['merge']({},_0x548299,_0x318757[_0x9edd('0x3f')]);return db[_0x9edd('0x28')][_0x9edd('0x45')](_0x548299)[_0x9edd('0x21')](handleEntityNotFound(_0x49a128,null))[_0x9edd('0x21')](respondWithResult(_0x49a128,null))['catch'](handleError(_0x49a128,null));};exports[_0x9edd('0x46')]=function(_0x35e63c,_0x40e33d){return db['MemberReport'][_0x9edd('0x46')](_0x35e63c[_0x9edd('0x47')],{})[_0x9edd('0x21')](respondWithResult(_0x40e33d,0xc9))[_0x9edd('0x43')](handleError(_0x40e33d,null));};exports[_0x9edd('0x48')]=function(_0x35bdec,_0x4d4f33){if(_0x35bdec[_0x9edd('0x47')]['id']){delete _0x35bdec[_0x9edd('0x47')]['id'];}return db['MemberReport'][_0x9edd('0x45')]({'where':{'id':_0x35bdec[_0x9edd('0x44')]['id']}})['then'](handleEntityNotFound(_0x4d4f33,null))[_0x9edd('0x21')](saveUpdates(_0x35bdec[_0x9edd('0x47')],null))[_0x9edd('0x21')](respondWithResult(_0x4d4f33,null))['catch'](handleError(_0x4d4f33,null));};exports[_0x9edd('0x49')]=function(_0x151157,_0x317a60){return db[_0x9edd('0x28')]['find']({'where':{'id':_0x151157[_0x9edd('0x44')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x317a60,null))[_0x9edd('0x21')](removeEntity(_0x317a60,null))['catch'](handleError(_0x317a60,null));};exports[_0x9edd('0x4a')]=function(_0x21f6ce,_0x57db43){return db[_0x9edd('0x28')]['describe']()[_0x9edd('0x21')](respondWithResult(_0x57db43,null))[_0x9edd('0x43')](handleError(_0x57db43,null));};
\ No newline at end of file
index f1b2062..f3e9aed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe25=['../../config/environment','./memberReport.attributes','exports','define','membername_interface','membername','interface','lodash','util','../../config/logger','api','moment'];(function(_0x146dd7,_0x4d877d){var _0x2af0bb=function(_0x2327bc){while(--_0x2327bc){_0x146dd7['push'](_0x146dd7['shift']());}};_0x2af0bb(++_0x4d877d);}(_0xbe25,0x1ab));var _0x5be2=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xbe25[_0x1cc8fe];return _0x230054;};'use strict';var _=require(_0x5be2('0x0'));var util=require(_0x5be2('0x1'));var logger=require(_0x5be2('0x2'))(_0x5be2('0x3'));var moment=require(_0x5be2('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5be2('0x5'));var attributes=require(_0x5be2('0x6'));module[_0x5be2('0x7')]=function(_0x127e09,_0x27458f){return _0x127e09[_0x5be2('0x8')]('MemberReport',attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x5be2('0x9'),'fields':[_0x5be2('0xa'),_0x5be2('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6d13=['MemberReport','membername_interface','membername','interface','../../config/logger','api','moment','path','../../config/environment','./memberReport.attributes','exports','define'];(function(_0x28b0a4,_0x2ea758){var _0x105ce6=function(_0x6df20f){while(--_0x6df20f){_0x28b0a4['push'](_0x28b0a4['shift']());}};_0x105ce6(++_0x2ea758);}(_0x6d13,0xd0));var _0x36d1=function(_0x33f1f1,_0x3f2a10){_0x33f1f1=_0x33f1f1-0x0;var _0x3052d4=_0x6d13[_0x33f1f1];return _0x3052d4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x36d1('0x0'))(_0x36d1('0x1'));var moment=require(_0x36d1('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x36d1('0x3'));var rimraf=require('rimraf');var config=require(_0x36d1('0x4'));var attributes=require(_0x36d1('0x5'));module[_0x36d1('0x6')]=function(_0x4bf97f,_0x355714){return _0x4bf97f[_0x36d1('0x7')](_0x36d1('0x8'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x36d1('0x9'),'fields':[_0x36d1('0xa'),_0x36d1('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index d7699e7..a6454f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x737d=['request\x20sent','debug','stringify','error','MemberReport,\x20%s,\x20%s','message','catch','GetMemberReport','findAll','options','where','attributes','limit','map','include','model','then','CreateMemberReport','MemberReport','body','raw','UpdateMemberReport','update','lodash','util','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','info'];(function(_0x36d1f6,_0x522a10){var _0x138210=function(_0x27f93b){while(--_0x27f93b){_0x36d1f6['push'](_0x36d1f6['shift']());}};_0x138210(++_0x522a10);}(_0x737d,0xbc));var _0xd737=function(_0x4736a5,_0x2e5e72){_0x4736a5=_0x4736a5-0x0;var _0x32258=_0x737d[_0x4736a5];return _0x32258;};'use strict';var _=require(_0xd737('0x0'));var util=require(_0xd737('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd737('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xd737('0x3'))('rpc');var config=require(_0xd737('0x4'));var jayson=require(_0xd737('0x5'));var client=jayson[_0xd737('0x6')][_0xd737('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x46f559,_0x3ee641,_0x3a78be){return new BPromise(function(_0xb077fb,_0x1034aa){return client[_0xd737('0x8')](_0x46f559,_0x3a78be)['then'](function(_0x2aa91f){logger[_0xd737('0x9')]('MemberReport,\x20%s,\x20%s',_0x3ee641,_0xd737('0xa'));logger[_0xd737('0xb')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x3ee641,_0xd737('0xa'),JSON[_0xd737('0xc')](_0x2aa91f));if(_0x2aa91f['error']){if(_0x2aa91f[_0xd737('0xd')]['code']===0x1f4){logger[_0xd737('0xd')](_0xd737('0xe'),_0x3ee641,_0x2aa91f['error']['message']);return _0x1034aa(_0x2aa91f[_0xd737('0xd')][_0xd737('0xf')]);}logger['error'](_0xd737('0xe'),_0x3ee641,_0x2aa91f[_0xd737('0xd')][_0xd737('0xf')]);return _0xb077fb(_0x2aa91f[_0xd737('0xd')][_0xd737('0xf')]);}else{logger[_0xd737('0x9')](_0xd737('0xe'),_0x3ee641,_0xd737('0xa'));_0xb077fb(_0x2aa91f['result']['message']);}})[_0xd737('0x10')](function(_0x28238c){logger[_0xd737('0xd')](_0xd737('0xe'),_0x3ee641,_0x28238c);_0x1034aa(_0x28238c);});});}exports[_0xd737('0x11')]=function(_0x39401d){var _0x130579=this;return new Promise(function(_0x1f6fa1,_0x508e0b){return db['MemberReport'][_0xd737('0x12')]({'raw':_0x39401d['options']?_0x39401d['options']['raw']===undefined?!![]:![]:!![],'where':_0x39401d['options']?_0x39401d[_0xd737('0x13')][_0xd737('0x14')]||null:null,'attributes':_0x39401d[_0xd737('0x13')]?_0x39401d['options'][_0xd737('0x15')]||null:null,'limit':_0x39401d['options']?_0x39401d[_0xd737('0x13')][_0xd737('0x16')]||null:null,'include':_0x39401d[_0xd737('0x13')]?_0x39401d[_0xd737('0x13')]['include']?_[_0xd737('0x17')](_0x39401d['options'][_0xd737('0x18')],function(_0x48a116){return{'model':db[_0x48a116[_0xd737('0x19')]],'as':_0x48a116['as'],'attributes':_0x48a116[_0xd737('0x15')],'include':_0x48a116[_0xd737('0x18')]?_[_0xd737('0x17')](_0x48a116[_0xd737('0x18')],function(_0x507029){return{'model':db[_0x507029['model']],'as':_0x507029['as'],'attributes':_0x507029[_0xd737('0x15')],'include':_0x507029[_0xd737('0x18')]?_['map'](_0x507029[_0xd737('0x18')],function(_0x45aa95){return{'model':db[_0x45aa95[_0xd737('0x19')]],'as':_0x45aa95['as'],'attributes':_0x45aa95[_0xd737('0x15')]};}):[]};}):[]};}):[]:[]})[_0xd737('0x1a')](function(_0x10e7bf){logger['info'](_0xd737('0x11'),_0x39401d);logger[_0xd737('0xb')](_0xd737('0x11'),_0x39401d,JSON[_0xd737('0xc')](_0x10e7bf));_0x1f6fa1(_0x10e7bf);})['catch'](function(_0x53029a){logger[_0xd737('0xd')]('GetMemberReport',_0x53029a[_0xd737('0xf')],_0x39401d);_0x508e0b(_0x130579[_0xd737('0xd')](0x1f4,_0x53029a['message']));});});};exports[_0xd737('0x1b')]=function(_0xf6787b){var _0x1f4528=this;return new Promise(function(_0x309c42,_0x17b80d){return db[_0xd737('0x1c')]['create'](_0xf6787b[_0xd737('0x1d')],{'raw':_0xf6787b[_0xd737('0x13')]?_0xf6787b[_0xd737('0x13')][_0xd737('0x1e')]===undefined?!![]:![]:!![]})[_0xd737('0x1a')](function(_0x5e43aa){logger['info']('CreateMemberReport',_0xf6787b);logger['debug'](_0xd737('0x1b'),_0xf6787b,JSON['stringify'](_0x5e43aa));_0x309c42(_0x5e43aa);})[_0xd737('0x10')](function(_0x42df1e){logger['error'](_0xd737('0x1b'),_0x42df1e['message'],_0xf6787b);_0x17b80d(_0x1f4528[_0xd737('0xd')](0x1f4,_0x42df1e[_0xd737('0xf')]));});});};exports[_0xd737('0x1f')]=function(_0x145adc){var _0x3ced48=this;return new Promise(function(_0x4465b9,_0x53e080){return db[_0xd737('0x1c')][_0xd737('0x20')](_0x145adc[_0xd737('0x1d')],{'raw':_0x145adc[_0xd737('0x13')]?_0x145adc[_0xd737('0x13')][_0xd737('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x145adc[_0xd737('0x13')]?_0x145adc[_0xd737('0x13')]['where']||null:null,'attributes':_0x145adc[_0xd737('0x13')]?_0x145adc['options']['attributes']||null:null,'limit':_0x145adc[_0xd737('0x13')]?_0x145adc[_0xd737('0x13')][_0xd737('0x16')]||null:null})[_0xd737('0x1a')](function(_0x5bfd4c){logger[_0xd737('0x9')](_0xd737('0x1f'),_0x145adc);logger[_0xd737('0xb')](_0xd737('0x1f'),_0x145adc,JSON[_0xd737('0xc')](_0x5bfd4c));_0x4465b9(_0x5bfd4c);})[_0xd737('0x10')](function(_0xf2000e){logger['error'](_0xd737('0x1f'),_0xf2000e['message'],_0x145adc);_0x53e080(_0x3ced48['error'](0x1f4,_0xf2000e['message']));});});};
\ No newline at end of file
+var _0xdced=['model','catch','CreateMemberReport','body','UpdateMemberReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','then','info','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','message','MemberReport,\x20%s,\x20%s','request\x20sent','GetMemberReport','MemberReport','findAll','options','raw','attributes','limit','include','map'];(function(_0x2b3e62,_0x1cf54a){var _0x26ad91=function(_0x47da1b){while(--_0x47da1b){_0x2b3e62['push'](_0x2b3e62['shift']());}};_0x26ad91(++_0x1cf54a);}(_0xdced,0xcb));var _0xddce=function(_0x2cf50a,_0x36d487){_0x2cf50a=_0x2cf50a-0x0;var _0x4dd5ce=_0xdced[_0x2cf50a];return _0x4dd5ce;};'use strict';var _=require('lodash');var util=require(_0xddce('0x0'));var moment=require(_0xddce('0x1'));var BPromise=require(_0xddce('0x2'));var rs=require(_0xddce('0x3'));var fs=require('fs');var Redis=require(_0xddce('0x4'));var db=require(_0xddce('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xddce('0x6'))('rpc');var config=require(_0xddce('0x7'));var jayson=require(_0xddce('0x8'));var client=jayson['client'][_0xddce('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x57e11c,_0x24970d,_0x46b464){return new BPromise(function(_0x272a2c,_0x105bf9){return client['request'](_0x57e11c,_0x46b464)[_0xddce('0xa')](function(_0x392605){logger[_0xddce('0xb')]('MemberReport,\x20%s,\x20%s',_0x24970d,'request\x20sent');logger[_0xddce('0xc')](_0xddce('0xd'),_0x24970d,'request\x20sent',JSON[_0xddce('0xe')](_0x392605));if(_0x392605[_0xddce('0xf')]){if(_0x392605[_0xddce('0xf')]['code']===0x1f4){logger[_0xddce('0xf')]('MemberReport,\x20%s,\x20%s',_0x24970d,_0x392605[_0xddce('0xf')][_0xddce('0x10')]);return _0x105bf9(_0x392605[_0xddce('0xf')][_0xddce('0x10')]);}logger[_0xddce('0xf')](_0xddce('0x11'),_0x24970d,_0x392605[_0xddce('0xf')]['message']);return _0x272a2c(_0x392605['error'][_0xddce('0x10')]);}else{logger[_0xddce('0xb')]('MemberReport,\x20%s,\x20%s',_0x24970d,_0xddce('0x12'));_0x272a2c(_0x392605['result'][_0xddce('0x10')]);}})['catch'](function(_0x30205e){logger[_0xddce('0xf')]('MemberReport,\x20%s,\x20%s',_0x24970d,_0x30205e);_0x105bf9(_0x30205e);});});}exports[_0xddce('0x13')]=function(_0x3934a5){var _0x3ffac2=this;return new Promise(function(_0xde10a5,_0x4a35c7){return db[_0xddce('0x14')][_0xddce('0x15')]({'raw':_0x3934a5[_0xddce('0x16')]?_0x3934a5['options'][_0xddce('0x17')]===undefined?!![]:![]:!![],'where':_0x3934a5['options']?_0x3934a5[_0xddce('0x16')]['where']||null:null,'attributes':_0x3934a5[_0xddce('0x16')]?_0x3934a5[_0xddce('0x16')][_0xddce('0x18')]||null:null,'limit':_0x3934a5['options']?_0x3934a5[_0xddce('0x16')][_0xddce('0x19')]||null:null,'include':_0x3934a5[_0xddce('0x16')]?_0x3934a5[_0xddce('0x16')][_0xddce('0x1a')]?_[_0xddce('0x1b')](_0x3934a5[_0xddce('0x16')][_0xddce('0x1a')],function(_0x5caf7f){return{'model':db[_0x5caf7f[_0xddce('0x1c')]],'as':_0x5caf7f['as'],'attributes':_0x5caf7f[_0xddce('0x18')],'include':_0x5caf7f[_0xddce('0x1a')]?_[_0xddce('0x1b')](_0x5caf7f['include'],function(_0x23fe7b){return{'model':db[_0x23fe7b[_0xddce('0x1c')]],'as':_0x23fe7b['as'],'attributes':_0x23fe7b['attributes'],'include':_0x23fe7b[_0xddce('0x1a')]?_[_0xddce('0x1b')](_0x23fe7b[_0xddce('0x1a')],function(_0x1b2e2c){return{'model':db[_0x1b2e2c[_0xddce('0x1c')]],'as':_0x1b2e2c['as'],'attributes':_0x1b2e2c[_0xddce('0x18')]};}):[]};}):[]};}):[]:[]})[_0xddce('0xa')](function(_0x573528){logger['info']('GetMemberReport',_0x3934a5);logger[_0xddce('0xc')](_0xddce('0x13'),_0x3934a5,JSON[_0xddce('0xe')](_0x573528));_0xde10a5(_0x573528);})[_0xddce('0x1d')](function(_0x2e1353){logger[_0xddce('0xf')](_0xddce('0x13'),_0x2e1353['message'],_0x3934a5);_0x4a35c7(_0x3ffac2[_0xddce('0xf')](0x1f4,_0x2e1353[_0xddce('0x10')]));});});};exports[_0xddce('0x1e')]=function(_0x561ba7){var _0x5bee5a=this;return new Promise(function(_0x198f23,_0x2df087){return db[_0xddce('0x14')]['create'](_0x561ba7[_0xddce('0x1f')],{'raw':_0x561ba7['options']?_0x561ba7[_0xddce('0x16')][_0xddce('0x17')]===undefined?!![]:![]:!![]})[_0xddce('0xa')](function(_0x41ef00){logger[_0xddce('0xb')]('CreateMemberReport',_0x561ba7);logger[_0xddce('0xc')]('CreateMemberReport',_0x561ba7,JSON['stringify'](_0x41ef00));_0x198f23(_0x41ef00);})[_0xddce('0x1d')](function(_0x46d2af){logger[_0xddce('0xf')](_0xddce('0x1e'),_0x46d2af[_0xddce('0x10')],_0x561ba7);_0x2df087(_0x5bee5a[_0xddce('0xf')](0x1f4,_0x46d2af['message']));});});};exports[_0xddce('0x20')]=function(_0x3ab413){var _0x555db7=this;return new Promise(function(_0x164629,_0x247d31){return db[_0xddce('0x14')]['update'](_0x3ab413[_0xddce('0x1f')],{'raw':_0x3ab413[_0xddce('0x16')]?_0x3ab413[_0xddce('0x16')][_0xddce('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ab413['options']?_0x3ab413[_0xddce('0x16')]['where']||null:null,'attributes':_0x3ab413[_0xddce('0x16')]?_0x3ab413[_0xddce('0x16')][_0xddce('0x18')]||null:null,'limit':_0x3ab413['options']?_0x3ab413[_0xddce('0x16')]['limit']||null:null})['then'](function(_0x2e32fc){logger['info']('UpdateMemberReport',_0x3ab413);logger['debug'](_0xddce('0x20'),_0x3ab413,JSON['stringify'](_0x2e32fc));_0x164629(_0x2e32fc);})[_0xddce('0x1d')](function(_0x5c7431){logger['error'](_0xddce('0x20'),_0x5c7431[_0xddce('0x10')],_0x3ab413);_0x247d31(_0x555db7['error'](0x1f4,_0x5c7431[_0xddce('0x10')]));});});};
\ No newline at end of file
index 4d0b092..5113496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50e3=['get','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x34fd2d,_0xc9074d){var _0x1cf3bd=function(_0x28217f){while(--_0x28217f){_0x34fd2d['push'](_0x34fd2d['shift']());}};_0x1cf3bd(++_0xc9074d);}(_0x50e3,0xea));var _0x350e=function(_0x35ff0a,_0x2f7775){_0x35ff0a=_0x35ff0a-0x0;var _0x4f5e23=_0x50e3[_0x35ff0a];return _0x4f5e23;};'use strict';var multer=require('multer');var util=require(_0x350e('0x0'));var path=require('path');var timeout=require(_0x350e('0x1'));var express=require(_0x350e('0x2'));var router=express[_0x350e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x350e('0x4'));var interaction=require(_0x350e('0x5'));var config=require('../../config/environment');var controller=require('./migration.controller');router[_0x350e('0x6')]('/',controller['index']);module[_0x350e('0x7')]=router;
\ No newline at end of file
+var _0xf771=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./migration.controller','get','index','exports','multer'];(function(_0xd511d,_0x3546b9){var _0x3f148e=function(_0x51f35f){while(--_0x51f35f){_0xd511d['push'](_0xd511d['shift']());}};_0x3f148e(++_0x3546b9);}(_0xf771,0x8e));var _0x1f77=function(_0x3122b0,_0x24b106){_0x3122b0=_0x3122b0-0x0;var _0x163681=_0xf771[_0x3122b0];return _0x163681;};'use strict';var multer=require(_0x1f77('0x0'));var util=require(_0x1f77('0x1'));var path=require(_0x1f77('0x2'));var timeout=require(_0x1f77('0x3'));var express=require(_0x1f77('0x4'));var router=express[_0x1f77('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x1f77('0x6'));var interaction=require(_0x1f77('0x7'));var config=require(_0x1f77('0x8'));var controller=require(_0x1f77('0x9'));router[_0x1f77('0xa')]('/',controller[_0x1f77('0xb')]);module[_0x1f77('0xc')]=router;
\ No newline at end of file
index db1257a..26f83d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2207=['version','exports','STRING'];(function(_0x27bf75,_0x21787c){var _0x5078a1=function(_0x5379bd){while(--_0x5379bd){_0x27bf75['push'](_0x27bf75['shift']());}};_0x5078a1(++_0x21787c);}(_0x2207,0x8b));var _0x7220=function(_0x3aaaaa,_0x106612){_0x3aaaaa=_0x3aaaaa-0x0;var _0x48d14d=_0x2207[_0x3aaaaa];return _0x48d14d;};'use strict';var Sequelize=require('sequelize');module[_0x7220('0x0')]={'version':{'type':Sequelize[_0x7220('0x1')],'unique':_0x7220('0x2')}};
\ No newline at end of file
+var _0x5522=['STRING','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5522,0x117));var _0x2552=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x5522[_0x432682];return _0x463d05;};'use strict';var Sequelize=require(_0x2552('0x0'));module['exports']={'version':{'type':Sequelize[_0x2552('0x1')],'unique':'version'}};
\ No newline at end of file
index a5774a6..8155fb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07ea=['findAll','rows','catch','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','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','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','stack','name','send','index','Migration','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','map','include'];(function(_0x4f3e61,_0x4ac856){var _0x37a26e=function(_0xf3a1e5){while(--_0xf3a1e5){_0x4f3e61['push'](_0x4f3e61['shift']());}};_0x37a26e(++_0x4ac856);}(_0x07ea,0x177));var _0xa07e=function(_0x1e5cb0,_0x864448){_0x1e5cb0=_0x1e5cb0-0x0;var _0x20ac9d=_0x07ea[_0x1e5cb0];return _0x20ac9d;};'use strict';var emlformat=require(_0xa07e('0x0'));var rimraf=require(_0xa07e('0x1'));var zipdir=require(_0xa07e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa07e('0x3'));var BPromise=require(_0xa07e('0x4'));var Mustache=require(_0xa07e('0x5'));var util=require(_0xa07e('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xa07e('0x7'));var ejs=require(_0xa07e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa07e('0x9'));var squel=require(_0xa07e('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa07e('0x7'));var querystring=require(_0xa07e('0xb'));var Papa=require(_0xa07e('0xc'));var Redis=require(_0xa07e('0xd'));var authService=require(_0xa07e('0xe'));var qs=require(_0xa07e('0xf'));var as=require(_0xa07e('0x10'));var hardwareService=require(_0xa07e('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0xa07e('0x12'));var config=require(_0xa07e('0x13'));var licenseUtil=require(_0xa07e('0x14'));var db=require(_0xa07e('0x15'))['db'];function respondWithStatusCode(_0x37facf,_0x4f0033){_0x4f0033=_0x4f0033||0xcc;return function(_0x2e2d45){if(_0x2e2d45){return _0x37facf[_0xa07e('0x16')](_0x4f0033);}return _0x37facf[_0xa07e('0x17')](_0x4f0033)[_0xa07e('0x18')]();};}function respondWithResult(_0x14c595,_0x409ee1){_0x409ee1=_0x409ee1||0xc8;return function(_0x2f0860){if(_0x2f0860){return _0x14c595[_0xa07e('0x17')](_0x409ee1)[_0xa07e('0x19')](_0x2f0860);}};}function respondWithFilteredResult(_0x42250e,_0x5f003a){return function(_0x288d47){if(_0x288d47){var _0x5900f4=typeof _0x5f003a[_0xa07e('0x1a')]===_0xa07e('0x1b')&&typeof _0x5f003a[_0xa07e('0x1c')]===_0xa07e('0x1b');var _0x2320e=_0x288d47[_0xa07e('0x1d')];var _0x51430d=_0x5900f4?0x0:_0x5f003a[_0xa07e('0x1a')];var _0x42e36b=_0x5900f4?_0x288d47[_0xa07e('0x1d')]:_0x5f003a[_0xa07e('0x1a')]+_0x5f003a[_0xa07e('0x1c')];var _0x4e3c90;if(_0x42e36b>=_0x2320e){_0x42e36b=_0x2320e;_0x4e3c90=0xc8;}else{_0x4e3c90=0xce;}_0x42250e[_0xa07e('0x17')](_0x4e3c90);return _0x42250e[_0xa07e('0x1e')](_0xa07e('0x1f'),_0x51430d+'-'+_0x42e36b+'/'+_0x2320e)[_0xa07e('0x19')](_0x288d47);}return null;};}function patchUpdates(_0x56268){return function(_0x27a9d0){try{jsonpatch['apply'](_0x27a9d0,_0x56268,!![]);}catch(_0x4f76f2){return BPromise['reject'](_0x4f76f2);}return _0x27a9d0[_0xa07e('0x20')]();};}function saveUpdates(_0xc1de3b,_0x52513f){return function(_0x513e97){if(_0x513e97){return _0x513e97[_0xa07e('0x21')](_0xc1de3b)[_0xa07e('0x22')](function(_0x43fba6){return _0x43fba6;});}return null;};}function removeEntity(_0xc1e2b,_0x5708a2){return function(_0x4f2cb9){if(_0x4f2cb9){return _0x4f2cb9[_0xa07e('0x23')]()[_0xa07e('0x22')](function(){_0xc1e2b['status'](0xcc)[_0xa07e('0x18')]();});}};}function handleEntityNotFound(_0x1fb9bf,_0x50c6eb){return function(_0x1508e8){if(!_0x1508e8){_0x1fb9bf[_0xa07e('0x16')](0x194);}return _0x1508e8;};}function handleError(_0x1336ab,_0x25c3fa){_0x25c3fa=_0x25c3fa||0x1f4;return function(_0x140f20){logger['error'](_0x140f20[_0xa07e('0x24')]);if(_0x140f20['name']){delete _0x140f20[_0xa07e('0x25')];}_0x1336ab[_0xa07e('0x17')](_0x25c3fa)[_0xa07e('0x26')](_0x140f20);};}exports[_0xa07e('0x27')]=function(_0x1c8611,_0x420daf){var _0x34b32d={},_0x130406={},_0x31da01={'count':0x0,'rows':[]};var _0x200a5a=_['map'](db[_0xa07e('0x28')]['rawAttributes'],function(_0x55053d){return{'name':_0x55053d[_0xa07e('0x29')],'type':_0x55053d[_0xa07e('0x2a')][_0xa07e('0x2b')]};});_0x130406[_0xa07e('0x2c')]=_['map'](_0x200a5a,_0xa07e('0x25'));_0x130406[_0xa07e('0x2d')]=_[_0xa07e('0x2e')](_0x1c8611[_0xa07e('0x2d')]);_0x130406[_0xa07e('0x2f')]=_[_0xa07e('0x30')](_0x130406[_0xa07e('0x2c')],_0x130406[_0xa07e('0x2d')]);_0x34b32d[_0xa07e('0x31')]=_[_0xa07e('0x30')](_0x130406[_0xa07e('0x2c')],qs[_0xa07e('0x32')](_0x1c8611[_0xa07e('0x2d')][_0xa07e('0x32')]));_0x34b32d[_0xa07e('0x31')]=_0x34b32d[_0xa07e('0x31')]['length']?_0x34b32d[_0xa07e('0x31')]:_0x130406[_0xa07e('0x2c')];if(!_0x1c8611['query'][_0xa07e('0x33')](_0xa07e('0x34'))){_0x34b32d['limit']=qs[_0xa07e('0x1c')](_0x1c8611[_0xa07e('0x2d')][_0xa07e('0x1c')]);_0x34b32d['offset']=qs[_0xa07e('0x1a')](_0x1c8611[_0xa07e('0x2d')]['offset']);}_0x34b32d['order']=qs[_0xa07e('0x35')](_0x1c8611[_0xa07e('0x2d')][_0xa07e('0x35')]);_0x34b32d[_0xa07e('0x36')]=qs[_0xa07e('0x2f')](_[_0xa07e('0x37')](_0x1c8611[_0xa07e('0x2d')],_0x130406[_0xa07e('0x2f')]),_0x200a5a);if(_0x1c8611['query']['filter']){_0x34b32d['where']=_[_0xa07e('0x38')](_0x34b32d[_0xa07e('0x36')],{'$or':_[_0xa07e('0x39')](_0x200a5a,function(_0xb48a44){if(_0xb48a44['type']!=='VIRTUAL'){var _0x3b346a={};_0x3b346a[_0xb48a44[_0xa07e('0x25')]]={'$like':'%'+_0x1c8611[_0xa07e('0x2d')]['filter']+'%'};return _0x3b346a;}})});}_0x34b32d=_[_0xa07e('0x38')]({},_0x34b32d,_0x1c8611['options']);var _0x310386={'where':_0x34b32d['where']};return db[_0xa07e('0x28')][_0xa07e('0x1d')](_0x310386)[_0xa07e('0x22')](function(_0x3d4172){_0x31da01[_0xa07e('0x1d')]=_0x3d4172;if(_0x1c8611[_0xa07e('0x2d')]['includeAll']){_0x34b32d[_0xa07e('0x3a')]=[{'all':!![]}];}return db[_0xa07e('0x28')][_0xa07e('0x3b')](_0x34b32d);})[_0xa07e('0x22')](function(_0x309635){_0x31da01[_0xa07e('0x3c')]=_0x309635;return _0x31da01;})[_0xa07e('0x22')](respondWithFilteredResult(_0x420daf,_0x34b32d))[_0xa07e('0x3d')](handleError(_0x420daf,null));};
\ No newline at end of file
+var _0xf9c9=['offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','error','stack','send','index','map','Migration','type','name','query','keys','filters','model','attributes','intersection','fields','length','order','sort','where','pick','VIRTUAL','merge','options','includeAll','rows','catch','eml-format','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','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'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xf9c9,0xe6));var _0x9f9c=function(_0x5dc198,_0x5389cb){_0x5dc198=_0x5dc198-0x0;var _0x4934e1=_0xf9c9[_0x5dc198];return _0x4934e1;};'use strict';var emlformat=require(_0x9f9c('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9f9c('0x1'));var rp=require(_0x9f9c('0x2'));var moment=require('moment');var BPromise=require(_0x9f9c('0x3'));var Mustache=require(_0x9f9c('0x4'));var util=require('util');var path=require('path');var sox=require(_0x9f9c('0x5'));var csv=require(_0x9f9c('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9f9c('0x7'));var _=require(_0x9f9c('0x8'));var squel=require(_0x9f9c('0x9'));var crypto=require(_0x9f9c('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x9f9c('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9f9c('0xc'));var Redis=require(_0x9f9c('0xd'));var authService=require(_0x9f9c('0xe'));var qs=require(_0x9f9c('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9f9c('0x10'));var logger=require(_0x9f9c('0x11'))(_0x9f9c('0x12'));var utils=require(_0x9f9c('0x13'));var config=require(_0x9f9c('0x14'));var licenseUtil=require(_0x9f9c('0x15'));var db=require(_0x9f9c('0x16'))['db'];function respondWithStatusCode(_0x32400a,_0x16f40b){_0x16f40b=_0x16f40b||0xcc;return function(_0x5f0cd6){if(_0x5f0cd6){return _0x32400a[_0x9f9c('0x17')](_0x16f40b);}return _0x32400a[_0x9f9c('0x18')](_0x16f40b)['end']();};}function respondWithResult(_0x203f4c,_0x414b7a){_0x414b7a=_0x414b7a||0xc8;return function(_0x250632){if(_0x250632){return _0x203f4c[_0x9f9c('0x18')](_0x414b7a)[_0x9f9c('0x19')](_0x250632);}};}function respondWithFilteredResult(_0x469bcd,_0x13ee90){return function(_0x24cd97){if(_0x24cd97){var _0x327c16=typeof _0x13ee90[_0x9f9c('0x1a')]===_0x9f9c('0x1b')&&typeof _0x13ee90[_0x9f9c('0x1c')]===_0x9f9c('0x1b');var _0x3f7f2a=_0x24cd97['count'];var _0xe28af1=_0x327c16?0x0:_0x13ee90[_0x9f9c('0x1a')];var _0x28f6bf=_0x327c16?_0x24cd97[_0x9f9c('0x1d')]:_0x13ee90[_0x9f9c('0x1a')]+_0x13ee90[_0x9f9c('0x1c')];var _0x389d73;if(_0x28f6bf>=_0x3f7f2a){_0x28f6bf=_0x3f7f2a;_0x389d73=0xc8;}else{_0x389d73=0xce;}_0x469bcd['status'](_0x389d73);return _0x469bcd[_0x9f9c('0x1e')](_0x9f9c('0x1f'),_0xe28af1+'-'+_0x28f6bf+'/'+_0x3f7f2a)['json'](_0x24cd97);}return null;};}function patchUpdates(_0x221246){return function(_0x2e5472){try{jsonpatch[_0x9f9c('0x20')](_0x2e5472,_0x221246,!![]);}catch(_0x405212){return BPromise['reject'](_0x405212);}return _0x2e5472[_0x9f9c('0x21')]();};}function saveUpdates(_0x35aca6,_0x4656e1){return function(_0x5e75d1){if(_0x5e75d1){return _0x5e75d1[_0x9f9c('0x22')](_0x35aca6)[_0x9f9c('0x23')](function(_0x4fd54a){return _0x4fd54a;});}return null;};}function removeEntity(_0x53f5bd,_0x24ce39){return function(_0x8e0375){if(_0x8e0375){return _0x8e0375[_0x9f9c('0x24')]()[_0x9f9c('0x23')](function(){_0x53f5bd[_0x9f9c('0x18')](0xcc)[_0x9f9c('0x25')]();});}};}function handleEntityNotFound(_0x46a50f,_0x7b7610){return function(_0x3c59df){if(!_0x3c59df){_0x46a50f[_0x9f9c('0x17')](0x194);}return _0x3c59df;};}function handleError(_0x198fd6,_0x123c68){_0x123c68=_0x123c68||0x1f4;return function(_0x13c457){logger[_0x9f9c('0x26')](_0x13c457[_0x9f9c('0x27')]);if(_0x13c457['name']){delete _0x13c457['name'];}_0x198fd6[_0x9f9c('0x18')](_0x123c68)[_0x9f9c('0x28')](_0x13c457);};}exports[_0x9f9c('0x29')]=function(_0x53cce2,_0x30ac57){var _0x72b13b={},_0x3bd491={},_0xa01302={'count':0x0,'rows':[]};var _0x82da83=_[_0x9f9c('0x2a')](db[_0x9f9c('0x2b')]['rawAttributes'],function(_0x2b688e){return{'name':_0x2b688e['fieldName'],'type':_0x2b688e[_0x9f9c('0x2c')]['key']};});_0x3bd491['model']=_['map'](_0x82da83,_0x9f9c('0x2d'));_0x3bd491[_0x9f9c('0x2e')]=_[_0x9f9c('0x2f')](_0x53cce2[_0x9f9c('0x2e')]);_0x3bd491[_0x9f9c('0x30')]=_['intersection'](_0x3bd491[_0x9f9c('0x31')],_0x3bd491[_0x9f9c('0x2e')]);_0x72b13b[_0x9f9c('0x32')]=_[_0x9f9c('0x33')](_0x3bd491[_0x9f9c('0x31')],qs[_0x9f9c('0x34')](_0x53cce2[_0x9f9c('0x2e')][_0x9f9c('0x34')]));_0x72b13b[_0x9f9c('0x32')]=_0x72b13b['attributes'][_0x9f9c('0x35')]?_0x72b13b[_0x9f9c('0x32')]:_0x3bd491['model'];if(!_0x53cce2[_0x9f9c('0x2e')]['hasOwnProperty']('nolimit')){_0x72b13b[_0x9f9c('0x1c')]=qs[_0x9f9c('0x1c')](_0x53cce2[_0x9f9c('0x2e')][_0x9f9c('0x1c')]);_0x72b13b[_0x9f9c('0x1a')]=qs[_0x9f9c('0x1a')](_0x53cce2[_0x9f9c('0x2e')][_0x9f9c('0x1a')]);}_0x72b13b[_0x9f9c('0x36')]=qs[_0x9f9c('0x37')](_0x53cce2[_0x9f9c('0x2e')]['sort']);_0x72b13b[_0x9f9c('0x38')]=qs[_0x9f9c('0x30')](_[_0x9f9c('0x39')](_0x53cce2[_0x9f9c('0x2e')],_0x3bd491[_0x9f9c('0x30')]),_0x82da83);if(_0x53cce2[_0x9f9c('0x2e')]['filter']){_0x72b13b[_0x9f9c('0x38')]=_['merge'](_0x72b13b['where'],{'$or':_[_0x9f9c('0x2a')](_0x82da83,function(_0x3f3fe6){if(_0x3f3fe6[_0x9f9c('0x2c')]!==_0x9f9c('0x3a')){var _0x128652={};_0x128652[_0x3f3fe6[_0x9f9c('0x2d')]]={'$like':'%'+_0x53cce2[_0x9f9c('0x2e')]['filter']+'%'};return _0x128652;}})});}_0x72b13b=_[_0x9f9c('0x3b')]({},_0x72b13b,_0x53cce2[_0x9f9c('0x3c')]);var _0x27bc7c={'where':_0x72b13b['where']};return db[_0x9f9c('0x2b')]['count'](_0x27bc7c)[_0x9f9c('0x23')](function(_0x34dafd){_0xa01302[_0x9f9c('0x1d')]=_0x34dafd;if(_0x53cce2['query'][_0x9f9c('0x3d')]){_0x72b13b['include']=[{'all':!![]}];}return db[_0x9f9c('0x2b')]['findAll'](_0x72b13b);})['then'](function(_0x2223a0){_0xa01302[_0x9f9c('0x3e')]=_0x2223a0;return _0xa01302;})[_0x9f9c('0x23')](respondWithFilteredResult(_0x30ac57,_0x72b13b))[_0x9f9c('0x3f')](handleError(_0x30ac57,null));};
\ No newline at end of file
index 651999b..e4aed5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7cd=['api','bluebird','request-promise','rimraf','./migration.attributes','exports','define','Migration','lodash','util'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xf7cd,0x102));var _0xdf7c=function(_0x178551,_0xb93833){_0x178551=_0x178551-0x0;var _0x29bff7=_0xf7cd[_0x178551];return _0x29bff7;};'use strict';var _=require(_0xdf7c('0x0'));var util=require(_0xdf7c('0x1'));var logger=require('../../config/logger')(_0xdf7c('0x2'));var moment=require('moment');var BPromise=require(_0xdf7c('0x3'));var rp=require(_0xdf7c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdf7c('0x5'));var config=require('../../config/environment');var attributes=require(_0xdf7c('0x6'));module[_0xdf7c('0x7')]=function(_0x2d35bd,_0x56bbb2){return _0x2d35bd[_0xdf7c('0x8')](_0xdf7c('0x9'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9415=['request-promise','path','rimraf','../../config/environment','./migration.attributes','exports','define','Migration','migrations','util','moment','bluebird'];(function(_0xf5b801,_0x44147e){var _0x5eceba=function(_0x5ae7e9){while(--_0x5ae7e9){_0xf5b801['push'](_0xf5b801['shift']());}};_0x5eceba(++_0x44147e);}(_0x9415,0x1ad));var _0x5941=function(_0x516eb0,_0x2bf9ee){_0x516eb0=_0x516eb0-0x0;var _0x4a9a49=_0x9415[_0x516eb0];return _0x4a9a49;};'use strict';var _=require('lodash');var util=require(_0x5941('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x5941('0x1'));var BPromise=require(_0x5941('0x2'));var rp=require(_0x5941('0x3'));var fs=require('fs');var path=require(_0x5941('0x4'));var rimraf=require(_0x5941('0x5'));var config=require(_0x5941('0x6'));var attributes=require(_0x5941('0x7'));module[_0x5941('0x8')]=function(_0x3c54b4,_0x106b30){return _0x3c54b4[_0x5941('0x9')](_0x5941('0xa'),attributes,{'tableName':_0x5941('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5c39c15..7f4e84c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf1a=['../../config/environment','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc'];(function(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0xbf1a,0x7c));var _0xabf1=function(_0x51993b,_0x4e2a17){_0x51993b=_0x51993b-0x0;var _0x370f2b=_0xbf1a[_0x51993b];return _0x370f2b;};'use strict';var _=require(_0xabf1('0x0'));var util=require(_0xabf1('0x1'));var moment=require(_0xabf1('0x2'));var BPromise=require(_0xabf1('0x3'));var rs=require(_0xabf1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xabf1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xabf1('0x6'))(_0xabf1('0x7'));var config=require(_0xabf1('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xabf1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4f5b53,_0x3bdf07,_0x1cc1f6){return new BPromise(function(_0x1f48f5,_0x3eb992){return client[_0xabf1('0xa')](_0x4f5b53,_0x1cc1f6)[_0xabf1('0xb')](function(_0x59a7a2){logger[_0xabf1('0xc')](_0xabf1('0xd'),_0x3bdf07,_0xabf1('0xe'));logger[_0xabf1('0xf')](_0xabf1('0x10'),_0x3bdf07,_0xabf1('0xe'),JSON['stringify'](_0x59a7a2));if(_0x59a7a2[_0xabf1('0x11')]){if(_0x59a7a2[_0xabf1('0x11')][_0xabf1('0x12')]===0x1f4){logger[_0xabf1('0x11')](_0xabf1('0xd'),_0x3bdf07,_0x59a7a2[_0xabf1('0x11')][_0xabf1('0x13')]);return _0x3eb992(_0x59a7a2[_0xabf1('0x11')][_0xabf1('0x13')]);}logger[_0xabf1('0x11')]('Migration,\x20%s,\x20%s',_0x3bdf07,_0x59a7a2[_0xabf1('0x11')][_0xabf1('0x13')]);return _0x1f48f5(_0x59a7a2[_0xabf1('0x11')]['message']);}else{logger[_0xabf1('0xc')](_0xabf1('0xd'),_0x3bdf07,_0xabf1('0xe'));_0x1f48f5(_0x59a7a2[_0xabf1('0x14')]['message']);}})[_0xabf1('0x15')](function(_0x4b138d){logger[_0xabf1('0x11')](_0xabf1('0xd'),_0x3bdf07,_0x4b138d);_0x3eb992(_0x4b138d);});});}
\ No newline at end of file
+var _0xc17f=['Migration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info'];(function(_0x3fa817,_0x10927d){var _0x51d9fe=function(_0x42be1a){while(--_0x42be1a){_0x3fa817['push'](_0x3fa817['shift']());}};_0x51d9fe(++_0x10927d);}(_0xc17f,0xb8));var _0xfc17=function(_0x11eb16,_0x32da13){_0x11eb16=_0x11eb16-0x0;var _0x5d5d01=_0xc17f[_0x11eb16];return _0x5d5d01;};'use strict';var _=require(_0xfc17('0x0'));var util=require(_0xfc17('0x1'));var moment=require(_0xfc17('0x2'));var BPromise=require(_0xfc17('0x3'));var rs=require(_0xfc17('0x4'));var fs=require('fs');var Redis=require(_0xfc17('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xfc17('0x6'));var logger=require(_0xfc17('0x7'))(_0xfc17('0x8'));var config=require(_0xfc17('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xfc17('0xa')][_0xfc17('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x21c2ef,_0x11fa33,_0x404ee0){return new BPromise(function(_0x3cd590,_0x149054){return client[_0xfc17('0xc')](_0x21c2ef,_0x404ee0)['then'](function(_0x33bd35){logger[_0xfc17('0xd')](_0xfc17('0xe'),_0x11fa33,_0xfc17('0xf'));logger['debug']('Migration,\x20%s,\x20%s,\x20%s',_0x11fa33,_0xfc17('0xf'),JSON[_0xfc17('0x10')](_0x33bd35));if(_0x33bd35[_0xfc17('0x11')]){if(_0x33bd35[_0xfc17('0x11')][_0xfc17('0x12')]===0x1f4){logger[_0xfc17('0x11')](_0xfc17('0xe'),_0x11fa33,_0x33bd35[_0xfc17('0x11')][_0xfc17('0x13')]);return _0x149054(_0x33bd35[_0xfc17('0x11')]['message']);}logger[_0xfc17('0x11')](_0xfc17('0xe'),_0x11fa33,_0x33bd35[_0xfc17('0x11')]['message']);return _0x3cd590(_0x33bd35[_0xfc17('0x11')][_0xfc17('0x13')]);}else{logger[_0xfc17('0xd')](_0xfc17('0xe'),_0x11fa33,_0xfc17('0xf'));_0x3cd590(_0x33bd35[_0xfc17('0x14')][_0xfc17('0x13')]);}})[_0xfc17('0x15')](function(_0x35f947){logger[_0xfc17('0x11')](_0xfc17('0xe'),_0x11fa33,_0x35f947);_0x149054(_0x35f947);});});}
\ No newline at end of file
index ec54e81..a1a18c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1d3=['delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','post','put','update'];(function(_0x18941f,_0x20095e){var _0x15ea1b=function(_0x4b42f1){while(--_0x4b42f1){_0x18941f['push'](_0x18941f['shift']());}};_0x15ea1b(++_0x20095e);}(_0xe1d3,0x159));var _0x3e1d=function(_0x1ac00d,_0x465802){_0x1ac00d=_0x1ac00d-0x0;var _0xf8bcb0=_0xe1d3[_0x1ac00d];return _0xf8bcb0;};'use strict';var multer=require(_0x3e1d('0x0'));var util=require(_0x3e1d('0x1'));var path=require(_0x3e1d('0x2'));var timeout=require(_0x3e1d('0x3'));var express=require(_0x3e1d('0x4'));var router=express['Router']();var fs_extra=require(_0x3e1d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3e1d('0x6'));var config=require(_0x3e1d('0x7'));var controller=require('./network.controller');router['get']('/',auth[_0x3e1d('0x8')](),controller[_0x3e1d('0x9')]);router[_0x3e1d('0xa')](_0x3e1d('0xb'),auth[_0x3e1d('0x8')](),controller['show']);router[_0x3e1d('0xc')]('/',auth[_0x3e1d('0x8')](),controller['create']);router[_0x3e1d('0xd')](_0x3e1d('0xb'),auth[_0x3e1d('0x8')](),controller[_0x3e1d('0xe')]);router[_0x3e1d('0xf')](_0x3e1d('0xb'),auth[_0x3e1d('0x8')](),controller[_0x3e1d('0x10')]);module[_0x3e1d('0x11')]=router;
\ No newline at end of file
+var _0xcdd2=['create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./network.controller','get','index','/:id','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcdd2,0x83));var _0x2cdd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcdd2[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x2cdd('0x0'));var util=require(_0x2cdd('0x1'));var path=require(_0x2cdd('0x2'));var timeout=require(_0x2cdd('0x3'));var express=require('express');var router=express[_0x2cdd('0x4')]();var fs_extra=require(_0x2cdd('0x5'));var auth=require(_0x2cdd('0x6'));var interaction=require(_0x2cdd('0x7'));var config=require('../../config/environment');var controller=require(_0x2cdd('0x8'));router[_0x2cdd('0x9')]('/',auth['isAuthenticated'](),controller[_0x2cdd('0xa')]);router[_0x2cdd('0x9')](_0x2cdd('0xb'),auth[_0x2cdd('0xc')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x2cdd('0xd')]);router['put'](_0x2cdd('0xb'),auth[_0x2cdd('0xc')](),controller[_0x2cdd('0xe')]);router[_0x2cdd('0xf')](_0x2cdd('0xb'),auth[_0x2cdd('0xc')](),controller[_0x2cdd('0x10')]);module[_0x2cdd('0x11')]=router;
\ No newline at end of file
index 1359cab..8621057 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41b=['localnet','externip','stun','turn','STRING','sequelize','exports','ENUM'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xa41b,0x105));var _0xba41=function(_0x52a857,_0xc99fa1){_0x52a857=_0x52a857-0x0;var _0x4e2aae=_0xa41b[_0x52a857];return _0x4e2aae;};'use strict';var Sequelize=require(_0xba41('0x0'));module[_0xba41('0x1')]={'type':{'type':Sequelize[_0xba41('0x2')](_0xba41('0x3'),_0xba41('0x4'),_0xba41('0x5'),_0xba41('0x6'))},'value':{'type':Sequelize[_0xba41('0x7')]},'username':{'type':Sequelize[_0xba41('0x7')]},'password':{'type':Sequelize[_0xba41('0x7')]}};
\ No newline at end of file
+var _0xfaab=['exports','ENUM','localnet','externip','turn','STRING','sequelize'];(function(_0x5cef89,_0x431277){var _0x3bb05c=function(_0x2f773b){while(--_0x2f773b){_0x5cef89['push'](_0x5cef89['shift']());}};_0x3bb05c(++_0x431277);}(_0xfaab,0x180));var _0xbfaa=function(_0x43934f,_0x1ed2b6){_0x43934f=_0x43934f-0x0;var _0x179ffc=_0xfaab[_0x43934f];return _0x179ffc;};'use strict';var Sequelize=require(_0xbfaa('0x0'));module[_0xbfaa('0x1')]={'type':{'type':Sequelize[_0xbfaa('0x2')](_0xbfaa('0x3'),_0xbfaa('0x4'),'stun',_0xbfaa('0x5'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xbfaa('0x6')]}};
\ No newline at end of file
index dc63b6b..5f4c78c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc0b=['then','info','Network,\x20%s,\x20%s','request\x20sent','debug','error','message','result','sendStatus','end','undefined','limit','count','offset','set','Content-Range','json','reject','save','update','destroy','status','stack','name','map','Network','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','sequelize','transaction','body','toUpperCase','STUN','readFileSync','root','utf8','render','Reload','create','res_stun_monitor.so','TURN','join','server/files/templates/turn_multiple.ejs','writeFileSync','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','server/files/templates/stun_multiple.ejs','/etc/asterisk/turn_xcally.conf','/etc/asterisk/stun_xcally.conf','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','jayson/promise','http','request'];(function(_0x4c7b20,_0x361515){var _0x4872bd=function(_0x358e19){while(--_0x358e19){_0x4c7b20['push'](_0x4c7b20['shift']());}};_0x4872bd(++_0x361515);}(_0xfc0b,0x189));var _0xbfc0=function(_0xfc2e4e,_0x419a93){_0xfc2e4e=_0xfc2e4e-0x0;var _0x321dc7=_0xfc0b[_0xfc2e4e];return _0x321dc7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbfc0('0x0'));var zipdir=require(_0xbfc0('0x1'));var jsonpatch=require(_0xbfc0('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xbfc0('0x3'));var Mustache=require(_0xbfc0('0x4'));var util=require('util');var path=require(_0xbfc0('0x5'));var sox=require(_0xbfc0('0x6'));var csv=require(_0xbfc0('0x7'));var ejs=require(_0xbfc0('0x8'));var fs=require('fs');var fs_extra=require(_0xbfc0('0x9'));var _=require(_0xbfc0('0xa'));var squel=require(_0xbfc0('0xb'));var crypto=require(_0xbfc0('0xc'));var jsforce=require(_0xbfc0('0xd'));var deskjs=require(_0xbfc0('0xe'));var toCsv=require(_0xbfc0('0x7'));var querystring=require('querystring');var Papa=require(_0xbfc0('0xf'));var Redis=require(_0xbfc0('0x10'));var authService=require(_0xbfc0('0x11'));var qs=require(_0xbfc0('0x12'));var as=require(_0xbfc0('0x13'));var hardwareService=require(_0xbfc0('0x14'));var logger=require(_0xbfc0('0x15'))('api');var utils=require(_0xbfc0('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbfc0('0x17'));var db=require('../../mysqldb')['db'];var jayson=require(_0xbfc0('0x18'));var client=jayson['client'][_0xbfc0('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x4de2c3,_0x25448a,_0xfd91bc,_0x5ed393){return new BPromise(function(_0x3c2a3e,_0x2e3f35){var _0x380f81=_0x5ed393||client;return _0x380f81[_0xbfc0('0x1a')](_0x4de2c3,_0xfd91bc)[_0xbfc0('0x1b')](function(_0x27eaf6){logger[_0xbfc0('0x1c')](_0xbfc0('0x1d'),_0x25448a,_0xbfc0('0x1e'));logger[_0xbfc0('0x1f')]('Network,\x20%s,\x20%s,\x20%s',_0x25448a,_0xbfc0('0x1e'),JSON['stringify'](_0x27eaf6));if(_0x27eaf6[_0xbfc0('0x20')]){if(_0x27eaf6[_0xbfc0('0x20')]['code']===0x1f4){logger['error'](_0xbfc0('0x1d'),_0x25448a,_0x27eaf6[_0xbfc0('0x20')]['message']);return _0x2e3f35(_0x27eaf6[_0xbfc0('0x20')][_0xbfc0('0x21')]);}logger[_0xbfc0('0x20')]('Network,\x20%s,\x20%s',_0x25448a,_0x27eaf6[_0xbfc0('0x20')][_0xbfc0('0x21')]);return _0x3c2a3e(_0x27eaf6[_0xbfc0('0x20')][_0xbfc0('0x21')]);}else{logger[_0xbfc0('0x1c')](_0xbfc0('0x1d'),_0x25448a,_0xbfc0('0x1e'));_0x3c2a3e(_0x27eaf6[_0xbfc0('0x22')][_0xbfc0('0x21')]);}})['catch'](function(_0x27da61){logger[_0xbfc0('0x20')](_0xbfc0('0x1d'),_0x25448a,_0x27da61);_0x2e3f35(_0x27da61);});});}function respondWithStatusCode(_0x280852,_0x23d469){_0x23d469=_0x23d469||0xcc;return function(_0x2fb0a1){if(_0x2fb0a1){return _0x280852[_0xbfc0('0x23')](_0x23d469);}return _0x280852['status'](_0x23d469)[_0xbfc0('0x24')]();};}function respondWithResult(_0x4510c0,_0x339b2c){_0x339b2c=_0x339b2c||0xc8;return function(_0x28ad83){if(_0x28ad83){return _0x4510c0['status'](_0x339b2c)['json'](_0x28ad83);}};}function respondWithFilteredResult(_0x38cb82,_0x46e338){return function(_0x176e76){if(_0x176e76){var _0x1a71fa=typeof _0x46e338['offset']===_0xbfc0('0x25')&&typeof _0x46e338[_0xbfc0('0x26')]===_0xbfc0('0x25');var _0x2af12f=_0x176e76[_0xbfc0('0x27')];var _0x1a884c=_0x1a71fa?0x0:_0x46e338[_0xbfc0('0x28')];var _0x3bda22=_0x1a71fa?_0x176e76[_0xbfc0('0x27')]:_0x46e338[_0xbfc0('0x28')]+_0x46e338[_0xbfc0('0x26')];var _0x32df1d;if(_0x3bda22>=_0x2af12f){_0x3bda22=_0x2af12f;_0x32df1d=0xc8;}else{_0x32df1d=0xce;}_0x38cb82['status'](_0x32df1d);return _0x38cb82[_0xbfc0('0x29')](_0xbfc0('0x2a'),_0x1a884c+'-'+_0x3bda22+'/'+_0x2af12f)[_0xbfc0('0x2b')](_0x176e76);}return null;};}function patchUpdates(_0x38f3f6){return function(_0xb2cdac){try{jsonpatch['apply'](_0xb2cdac,_0x38f3f6,!![]);}catch(_0x792817){return BPromise[_0xbfc0('0x2c')](_0x792817);}return _0xb2cdac[_0xbfc0('0x2d')]();};}function saveUpdates(_0x59a9bd,_0x41bb35){return function(_0x3b4a3d){if(_0x3b4a3d){return _0x3b4a3d[_0xbfc0('0x2e')](_0x59a9bd)['then'](function(_0x200fb4){return _0x200fb4;});}return null;};}function removeEntity(_0x2ff7f8,_0xf57c3c){return function(_0x2c870e){if(_0x2c870e){return _0x2c870e[_0xbfc0('0x2f')]()[_0xbfc0('0x1b')](function(){_0x2ff7f8[_0xbfc0('0x30')](0xcc)[_0xbfc0('0x24')]();});}};}function handleEntityNotFound(_0x3048f3,_0x5d7697){return function(_0x452323){if(!_0x452323){_0x3048f3[_0xbfc0('0x23')](0x194);}return _0x452323;};}function handleError(_0x5cdaf0,_0x2e967e){_0x2e967e=_0x2e967e||0x1f4;return function(_0x9d213d){logger[_0xbfc0('0x20')](_0x9d213d[_0xbfc0('0x31')]);if(_0x9d213d[_0xbfc0('0x32')]){delete _0x9d213d['name'];}_0x5cdaf0[_0xbfc0('0x30')](_0x2e967e)['send'](_0x9d213d);};}exports['index']=function(_0x5dbb5e,_0x418c57){var _0x1d175a={},_0x36464b={},_0x26b73f={'count':0x0,'rows':[]};var _0x41f2ff=_[_0xbfc0('0x33')](db[_0xbfc0('0x34')][_0xbfc0('0x35')],function(_0x4c3779){return{'name':_0x4c3779['fieldName'],'type':_0x4c3779['type'][_0xbfc0('0x36')]};});_0x36464b[_0xbfc0('0x37')]=_['map'](_0x41f2ff,'name');_0x36464b[_0xbfc0('0x38')]=_[_0xbfc0('0x39')](_0x5dbb5e[_0xbfc0('0x38')]);_0x36464b[_0xbfc0('0x3a')]=_[_0xbfc0('0x3b')](_0x36464b['model'],_0x36464b[_0xbfc0('0x38')]);_0x1d175a[_0xbfc0('0x3c')]=_[_0xbfc0('0x3b')](_0x36464b['model'],qs['fields'](_0x5dbb5e[_0xbfc0('0x38')][_0xbfc0('0x3d')]));_0x1d175a[_0xbfc0('0x3c')]=_0x1d175a['attributes'][_0xbfc0('0x3e')]?_0x1d175a[_0xbfc0('0x3c')]:_0x36464b[_0xbfc0('0x37')];if(!_0x5dbb5e[_0xbfc0('0x38')][_0xbfc0('0x3f')](_0xbfc0('0x40'))){_0x1d175a['limit']=qs[_0xbfc0('0x26')](_0x5dbb5e[_0xbfc0('0x38')]['limit']);_0x1d175a[_0xbfc0('0x28')]=qs[_0xbfc0('0x28')](_0x5dbb5e['query'][_0xbfc0('0x28')]);}_0x1d175a['order']=qs[_0xbfc0('0x41')](_0x5dbb5e[_0xbfc0('0x38')]['sort']);_0x1d175a['where']=qs[_0xbfc0('0x3a')](_[_0xbfc0('0x42')](_0x5dbb5e[_0xbfc0('0x38')],_0x36464b[_0xbfc0('0x3a')]),_0x41f2ff);if(_0x5dbb5e[_0xbfc0('0x38')]['filter']){_0x1d175a[_0xbfc0('0x43')]=_['merge'](_0x1d175a[_0xbfc0('0x43')],{'$or':_[_0xbfc0('0x33')](_0x41f2ff,function(_0x47e50b){if(_0x47e50b[_0xbfc0('0x44')]!==_0xbfc0('0x45')){var _0x287520={};_0x287520[_0x47e50b[_0xbfc0('0x32')]]={'$like':'%'+_0x5dbb5e[_0xbfc0('0x38')][_0xbfc0('0x46')]+'%'};return _0x287520;}})});}_0x1d175a=_[_0xbfc0('0x47')]({},_0x1d175a,_0x5dbb5e[_0xbfc0('0x48')]);var _0x4d27f2={'where':_0x1d175a[_0xbfc0('0x43')]};return db[_0xbfc0('0x34')][_0xbfc0('0x27')](_0x4d27f2)['then'](function(_0x394f3c){_0x26b73f['count']=_0x394f3c;if(_0x5dbb5e[_0xbfc0('0x38')][_0xbfc0('0x49')]){_0x1d175a[_0xbfc0('0x4a')]=[{'all':!![]}];}return db[_0xbfc0('0x34')][_0xbfc0('0x4b')](_0x1d175a);})[_0xbfc0('0x1b')](function(_0x3f457e){_0x26b73f[_0xbfc0('0x4c')]=_0x3f457e;return _0x26b73f;})[_0xbfc0('0x1b')](respondWithFilteredResult(_0x418c57,_0x1d175a))[_0xbfc0('0x4d')](handleError(_0x418c57,null));};exports[_0xbfc0('0x4e')]=function(_0x52f47c,_0xbc745c){var _0x799f3={'raw':!![],'where':{'id':_0x52f47c[_0xbfc0('0x4f')]['id']}},_0xf81ba9={};_0xf81ba9['model']=_[_0xbfc0('0x39')](db[_0xbfc0('0x34')][_0xbfc0('0x35')]);_0xf81ba9['query']=_['keys'](_0x52f47c[_0xbfc0('0x38')]);_0xf81ba9[_0xbfc0('0x3a')]=_['intersection'](_0xf81ba9[_0xbfc0('0x37')],_0xf81ba9['query']);_0x799f3[_0xbfc0('0x3c')]=_['intersection'](_0xf81ba9[_0xbfc0('0x37')],qs[_0xbfc0('0x3d')](_0x52f47c['query'][_0xbfc0('0x3d')]));_0x799f3[_0xbfc0('0x3c')]=_0x799f3[_0xbfc0('0x3c')]['length']?_0x799f3[_0xbfc0('0x3c')]:_0xf81ba9[_0xbfc0('0x37')];if(_0x52f47c[_0xbfc0('0x38')][_0xbfc0('0x49')]){_0x799f3['include']=[{'all':!![]}];}_0x799f3=_[_0xbfc0('0x47')]({},_0x799f3,_0x52f47c['options']);return db['Network'][_0xbfc0('0x50')](_0x799f3)[_0xbfc0('0x1b')](handleEntityNotFound(_0xbc745c,null))[_0xbfc0('0x1b')](respondWithResult(_0xbc745c,null))['catch'](handleError(_0xbc745c,null));};exports['create']=function(_0x119629,_0x173f04,_0xcc345c){var _0x32373a;return db[_0xbfc0('0x51')][_0xbfc0('0x52')](function(_0x176386){return db[_0xbfc0('0x34')]['create'](_0x119629['body'],{'raw':!![]})[_0xbfc0('0x1b')](function(_0x5c538a){_0x32373a=_0x5c538a;return db['Network']['findAll']({'where':{'type':_0x119629[_0xbfc0('0x53')][_0xbfc0('0x44')]},'raw':!![]});})[_0xbfc0('0x1b')](function(_0xbad4e0){if(_0x32373a[_0xbfc0('0x44')][_0xbfc0('0x54')]()==_0xbfc0('0x55')){var _0x195818=fs[_0xbfc0('0x56')](path['join'](config[_0xbfc0('0x57')],'server/files/templates/stun_multiple.ejs'),_0xbfc0('0x58'));var _0x15e1ad=ejs[_0xbfc0('0x59')](_0x195818,{'networks':_0xbad4e0||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x15e1ad);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x5b'),{'module':_0xbfc0('0x5c')});}else if(_0x32373a[_0xbfc0('0x44')][_0xbfc0('0x54')]()==_0xbfc0('0x5d')){var _0x5d8968=fs[_0xbfc0('0x56')](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],_0xbfc0('0x5f')),_0xbfc0('0x58'));var _0x11eca7=ejs[_0xbfc0('0x59')](_0x5d8968,{'networks':_0xbad4e0||[]});fs[_0xbfc0('0x60')]('/etc/asterisk/turn_xcally.conf',_0x11eca7);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x5b'),{'module':'res_stun_monitor.so'});}else{var _0xae6719=fs[_0xbfc0('0x56')](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],_0xbfc0('0x61')),_0xbfc0('0x58'));var _0x1234a1=ejs[_0xbfc0('0x59')](_0xae6719,{'networks':_0xbad4e0||[]});fs[_0xbfc0('0x60')](util[_0xbfc0('0x62')](_0xbfc0('0x63'),_0x119629[_0xbfc0('0x53')][_0xbfc0('0x44')][_0xbfc0('0x64')]()),_0x1234a1);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x5b'),{'module':_0xbfc0('0x65')});}return null;})[_0xbfc0('0x1b')](function(){return _0x32373a;});})[_0xbfc0('0x1b')](respondWithResult(_0x173f04,0xc9))['catch'](handleError(_0x173f04,null));};exports[_0xbfc0('0x2e')]=function(_0x25a5db,_0x32afc8,_0xd090f5){var _0x425950;return db[_0xbfc0('0x51')][_0xbfc0('0x52')](function(_0x31ccce){return db['Network'][_0xbfc0('0x50')]({'where':{'id':_0x25a5db[_0xbfc0('0x4f')]['id']}})['then'](handleEntityNotFound(_0x32afc8,null))[_0xbfc0('0x1b')](saveUpdates(_0x25a5db['body'],null))[_0xbfc0('0x1b')](function(_0xcf730){if(_0xcf730){_0x425950=_0xcf730;return db[_0xbfc0('0x34')]['findAll']({'where':{'type':_0x425950[_0xbfc0('0x44')]},'raw':!![]});}return null;})[_0xbfc0('0x1b')](function(_0x3c24d9){if(_0x425950['type'][_0xbfc0('0x54')]()==_0xbfc0('0x55')){var _0x49a101=fs[_0xbfc0('0x56')](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],_0xbfc0('0x66')),'utf8');var _0x449ecb=ejs[_0xbfc0('0x59')](_0x49a101,{'networks':_0x3c24d9||[]});fs[_0xbfc0('0x60')]('/etc/asterisk/stun_xcally.conf',_0x449ecb);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x2e'),{'module':_0xbfc0('0x5c')});}else if(_0x425950['type'][_0xbfc0('0x54')]()==_0xbfc0('0x5d')){var _0x53c721=fs[_0xbfc0('0x56')](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],_0xbfc0('0x5f')),'utf8');var _0x42b1fe=ejs[_0xbfc0('0x59')](_0x53c721,{'networks':_0x3c24d9||[]});fs['writeFileSync'](_0xbfc0('0x67'),_0x42b1fe);return respondWithRpcPromise('Reload',_0xbfc0('0x2e'),{'module':_0xbfc0('0x5c')});}else{var _0x3630bd=fs[_0xbfc0('0x56')](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],_0xbfc0('0x61')),'utf8');var _0x106c8f=ejs[_0xbfc0('0x59')](_0x3630bd,{'networks':_0x3c24d9||[]});fs[_0xbfc0('0x60')](util[_0xbfc0('0x62')]('/etc/asterisk/sip_xcally_%s.conf',_0x25a5db[_0xbfc0('0x53')][_0xbfc0('0x44')][_0xbfc0('0x64')]()),_0x106c8f);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x2e'),{'module':_0xbfc0('0x65')});}return null;})[_0xbfc0('0x1b')](function(_0x46ef10){if(_0x46ef10){return _0x425950;}return null;});})[_0xbfc0('0x1b')](respondWithResult(_0x32afc8,null))[_0xbfc0('0x4d')](handleError(_0x32afc8,null));};exports['destroy']=function(_0x1f5820,_0x4dbb9c,_0x2c600a){var _0x3d44f5;return db[_0xbfc0('0x34')][_0xbfc0('0x50')]({'where':{'id':_0x1f5820[_0xbfc0('0x4f')]['id']}})['then'](function(_0x2b178c){_0x3d44f5=_0x2b178c;return _0x2b178c;})[_0xbfc0('0x1b')](handleEntityNotFound(_0x4dbb9c,null))[_0xbfc0('0x1b')](removeEntity(_0x4dbb9c,null))[_0xbfc0('0x1b')](function(){if(_0x3d44f5){return db['Network'][_0xbfc0('0x4b')]({'where':{'type':_0x3d44f5[_0xbfc0('0x44')]},'raw':!![]});}})['then'](function(_0x51376f){if(_0x3d44f5[_0xbfc0('0x44')][_0xbfc0('0x54')]()=='STUN'){var _0x17a040=fs[_0xbfc0('0x56')](path['join'](config['root'],_0xbfc0('0x66')),_0xbfc0('0x58'));var _0x144af8=ejs[_0xbfc0('0x59')](_0x17a040,{'networks':_0x51376f||[]});fs['writeFileSync'](_0xbfc0('0x68'),_0x144af8);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x2f'),{'module':_0xbfc0('0x5c')});}else if(_0x3d44f5[_0xbfc0('0x44')]['toUpperCase']()==_0xbfc0('0x5d')){var _0x2b8ca8=fs[_0xbfc0('0x56')](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],_0xbfc0('0x5f')),_0xbfc0('0x58'));var _0x3f8fc7=ejs[_0xbfc0('0x59')](_0x2b8ca8,{'networks':_0x51376f||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x3f8fc7);return respondWithRpcPromise(_0xbfc0('0x5a'),'destroy',{'module':_0xbfc0('0x5c')});}else{var _0x4af7c9=fs['readFileSync'](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],'server/files/templates/network.ejs'),_0xbfc0('0x58'));var _0x86dd21=ejs[_0xbfc0('0x59')](_0x4af7c9,{'networks':_0x51376f||[]});fs['writeFileSync'](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x1f5820['body']['type'][_0xbfc0('0x64')]()),_0x86dd21);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x2f'),{'module':'chan_sip.so'});}return null;})['catch'](handleError(_0x4dbb9c,null));};
\ No newline at end of file
+var _0xd72b=['/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','update','params','server/files/templates/turn_multiple.ejs','server/files/templates/network.ejs','chan_sip.so','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','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','jayson/promise','client','request','then','request\x20sent','stringify','error','message','Network,\x20%s,\x20%s','info','result','catch','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','destroy','end','name','send','map','Network','rawAttributes','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','fields','create','sequelize','transaction','body','findAll','type','toUpperCase','STUN','readFileSync','root','server/files/templates/stun_multiple.ejs','render','/etc/asterisk/stun_xcally.conf','Reload','TURN','join','utf8','writeFileSync'];(function(_0x5930aa,_0xf07ae){var _0x274e6c=function(_0x4dbb3b){while(--_0x4dbb3b){_0x5930aa['push'](_0x5930aa['shift']());}};_0x274e6c(++_0xf07ae);}(_0xd72b,0x1ba));var _0xbd72=function(_0x5d3a61,_0x799e98){_0x5d3a61=_0x5d3a61-0x0;var _0x31abbd=_0xd72b[_0x5d3a61];return _0x31abbd;};'use strict';var emlformat=require(_0xbd72('0x0'));var rimraf=require(_0xbd72('0x1'));var zipdir=require(_0xbd72('0x2'));var jsonpatch=require(_0xbd72('0x3'));var rp=require(_0xbd72('0x4'));var moment=require(_0xbd72('0x5'));var BPromise=require(_0xbd72('0x6'));var Mustache=require('mustache');var util=require(_0xbd72('0x7'));var path=require(_0xbd72('0x8'));var sox=require('sox');var csv=require(_0xbd72('0x9'));var ejs=require(_0xbd72('0xa'));var fs=require('fs');var fs_extra=require(_0xbd72('0xb'));var _=require(_0xbd72('0xc'));var squel=require(_0xbd72('0xd'));var crypto=require('crypto');var jsforce=require(_0xbd72('0xe'));var deskjs=require(_0xbd72('0xf'));var toCsv=require('to-csv');var querystring=require(_0xbd72('0x10'));var Papa=require('papaparse');var Redis=require(_0xbd72('0x11'));var authService=require(_0xbd72('0x12'));var qs=require(_0xbd72('0x13'));var as=require(_0xbd72('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbd72('0x15'))(_0xbd72('0x16'));var utils=require(_0xbd72('0x17'));var config=require(_0xbd72('0x18'));var licenseUtil=require(_0xbd72('0x19'));var db=require('../../mysqldb')['db'];var jayson=require(_0xbd72('0x1a'));var client=jayson[_0xbd72('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b499d,_0x2c5de2,_0x70be67,_0x1661fc){return new BPromise(function(_0x56e9ca,_0x5cd756){var _0x42fc88=_0x1661fc||client;return _0x42fc88[_0xbd72('0x1c')](_0x1b499d,_0x70be67)[_0xbd72('0x1d')](function(_0x3d86fb){logger['info']('Network,\x20%s,\x20%s',_0x2c5de2,_0xbd72('0x1e'));logger['debug']('Network,\x20%s,\x20%s,\x20%s',_0x2c5de2,_0xbd72('0x1e'),JSON[_0xbd72('0x1f')](_0x3d86fb));if(_0x3d86fb['error']){if(_0x3d86fb[_0xbd72('0x20')]['code']===0x1f4){logger[_0xbd72('0x20')]('Network,\x20%s,\x20%s',_0x2c5de2,_0x3d86fb['error'][_0xbd72('0x21')]);return _0x5cd756(_0x3d86fb[_0xbd72('0x20')][_0xbd72('0x21')]);}logger['error'](_0xbd72('0x22'),_0x2c5de2,_0x3d86fb[_0xbd72('0x20')][_0xbd72('0x21')]);return _0x56e9ca(_0x3d86fb[_0xbd72('0x20')][_0xbd72('0x21')]);}else{logger[_0xbd72('0x23')](_0xbd72('0x22'),_0x2c5de2,_0xbd72('0x1e'));_0x56e9ca(_0x3d86fb[_0xbd72('0x24')]['message']);}})[_0xbd72('0x25')](function(_0x46eafa){logger[_0xbd72('0x20')]('Network,\x20%s,\x20%s',_0x2c5de2,_0x46eafa);_0x5cd756(_0x46eafa);});});}function respondWithStatusCode(_0x33514d,_0x15cc5e){_0x15cc5e=_0x15cc5e||0xcc;return function(_0x1d1a27){if(_0x1d1a27){return _0x33514d[_0xbd72('0x26')](_0x15cc5e);}return _0x33514d['status'](_0x15cc5e)['end']();};}function respondWithResult(_0x175907,_0x33d6d3){_0x33d6d3=_0x33d6d3||0xc8;return function(_0x1042df){if(_0x1042df){return _0x175907[_0xbd72('0x27')](_0x33d6d3)[_0xbd72('0x28')](_0x1042df);}};}function respondWithFilteredResult(_0x10dc04,_0x4adbc9){return function(_0x4b3d2a){if(_0x4b3d2a){var _0x3d51e1=typeof _0x4adbc9[_0xbd72('0x29')]==='undefined'&&typeof _0x4adbc9[_0xbd72('0x2a')]===_0xbd72('0x2b');var _0x5055c4=_0x4b3d2a[_0xbd72('0x2c')];var _0x2493b6=_0x3d51e1?0x0:_0x4adbc9[_0xbd72('0x29')];var _0x294ba6=_0x3d51e1?_0x4b3d2a[_0xbd72('0x2c')]:_0x4adbc9[_0xbd72('0x29')]+_0x4adbc9[_0xbd72('0x2a')];var _0x111e2a;if(_0x294ba6>=_0x5055c4){_0x294ba6=_0x5055c4;_0x111e2a=0xc8;}else{_0x111e2a=0xce;}_0x10dc04[_0xbd72('0x27')](_0x111e2a);return _0x10dc04[_0xbd72('0x2d')](_0xbd72('0x2e'),_0x2493b6+'-'+_0x294ba6+'/'+_0x5055c4)[_0xbd72('0x28')](_0x4b3d2a);}return null;};}function patchUpdates(_0x79da7c){return function(_0x4b734d){try{jsonpatch[_0xbd72('0x2f')](_0x4b734d,_0x79da7c,!![]);}catch(_0x30bc88){return BPromise[_0xbd72('0x30')](_0x30bc88);}return _0x4b734d[_0xbd72('0x31')]();};}function saveUpdates(_0x1f1ab4,_0x364eb7){return function(_0x301780){if(_0x301780){return _0x301780['update'](_0x1f1ab4)['then'](function(_0x57c1b3){return _0x57c1b3;});}return null;};}function removeEntity(_0x53b498,_0x40828f){return function(_0x39ad0c){if(_0x39ad0c){return _0x39ad0c[_0xbd72('0x32')]()['then'](function(){_0x53b498[_0xbd72('0x27')](0xcc)[_0xbd72('0x33')]();});}};}function handleEntityNotFound(_0x966317,_0x28d037){return function(_0x3257cb){if(!_0x3257cb){_0x966317['sendStatus'](0x194);}return _0x3257cb;};}function handleError(_0x550c3b,_0x5cd3b3){_0x5cd3b3=_0x5cd3b3||0x1f4;return function(_0x28776f){logger[_0xbd72('0x20')](_0x28776f['stack']);if(_0x28776f['name']){delete _0x28776f[_0xbd72('0x34')];}_0x550c3b[_0xbd72('0x27')](_0x5cd3b3)[_0xbd72('0x35')](_0x28776f);};}exports['index']=function(_0xc73659,_0x112502){var _0x455135={},_0x49dc7c={},_0x40d955={'count':0x0,'rows':[]};var _0x53da55=_[_0xbd72('0x36')](db[_0xbd72('0x37')][_0xbd72('0x38')],function(_0x32a016){return{'name':_0x32a016['fieldName'],'type':_0x32a016['type'][_0xbd72('0x39')]};});_0x49dc7c[_0xbd72('0x3a')]=_[_0xbd72('0x36')](_0x53da55,_0xbd72('0x34'));_0x49dc7c[_0xbd72('0x3b')]=_[_0xbd72('0x3c')](_0xc73659['query']);_0x49dc7c[_0xbd72('0x3d')]=_[_0xbd72('0x3e')](_0x49dc7c[_0xbd72('0x3a')],_0x49dc7c[_0xbd72('0x3b')]);_0x455135['attributes']=_[_0xbd72('0x3e')](_0x49dc7c[_0xbd72('0x3a')],qs['fields'](_0xc73659[_0xbd72('0x3b')]['fields']));_0x455135[_0xbd72('0x3f')]=_0x455135[_0xbd72('0x3f')][_0xbd72('0x40')]?_0x455135[_0xbd72('0x3f')]:_0x49dc7c[_0xbd72('0x3a')];if(!_0xc73659[_0xbd72('0x3b')][_0xbd72('0x41')](_0xbd72('0x42'))){_0x455135[_0xbd72('0x2a')]=qs[_0xbd72('0x2a')](_0xc73659[_0xbd72('0x3b')][_0xbd72('0x2a')]);_0x455135[_0xbd72('0x29')]=qs[_0xbd72('0x29')](_0xc73659[_0xbd72('0x3b')][_0xbd72('0x29')]);}_0x455135[_0xbd72('0x43')]=qs[_0xbd72('0x44')](_0xc73659['query'][_0xbd72('0x44')]);_0x455135[_0xbd72('0x45')]=qs['filters'](_[_0xbd72('0x46')](_0xc73659[_0xbd72('0x3b')],_0x49dc7c['filters']),_0x53da55);if(_0xc73659[_0xbd72('0x3b')][_0xbd72('0x47')]){_0x455135[_0xbd72('0x45')]=_[_0xbd72('0x48')](_0x455135[_0xbd72('0x45')],{'$or':_[_0xbd72('0x36')](_0x53da55,function(_0x5ab00c){if(_0x5ab00c['type']!==_0xbd72('0x49')){var _0x10eb3b={};_0x10eb3b[_0x5ab00c[_0xbd72('0x34')]]={'$like':'%'+_0xc73659[_0xbd72('0x3b')][_0xbd72('0x47')]+'%'};return _0x10eb3b;}})});}_0x455135=_['merge']({},_0x455135,_0xc73659[_0xbd72('0x4a')]);var _0x14b178={'where':_0x455135['where']};return db['Network'][_0xbd72('0x2c')](_0x14b178)['then'](function(_0x559048){_0x40d955[_0xbd72('0x2c')]=_0x559048;if(_0xc73659[_0xbd72('0x3b')][_0xbd72('0x4b')]){_0x455135[_0xbd72('0x4c')]=[{'all':!![]}];}return db[_0xbd72('0x37')]['findAll'](_0x455135);})[_0xbd72('0x1d')](function(_0x46e255){_0x40d955[_0xbd72('0x4d')]=_0x46e255;return _0x40d955;})['then'](respondWithFilteredResult(_0x112502,_0x455135))[_0xbd72('0x25')](handleError(_0x112502,null));};exports[_0xbd72('0x4e')]=function(_0x990612,_0x324557){var _0xdb06f4={'raw':!![],'where':{'id':_0x990612['params']['id']}},_0xf55c9e={};_0xf55c9e[_0xbd72('0x3a')]=_['keys'](db[_0xbd72('0x37')][_0xbd72('0x38')]);_0xf55c9e[_0xbd72('0x3b')]=_['keys'](_0x990612['query']);_0xf55c9e[_0xbd72('0x3d')]=_[_0xbd72('0x3e')](_0xf55c9e[_0xbd72('0x3a')],_0xf55c9e[_0xbd72('0x3b')]);_0xdb06f4['attributes']=_[_0xbd72('0x3e')](_0xf55c9e[_0xbd72('0x3a')],qs['fields'](_0x990612[_0xbd72('0x3b')][_0xbd72('0x4f')]));_0xdb06f4[_0xbd72('0x3f')]=_0xdb06f4[_0xbd72('0x3f')][_0xbd72('0x40')]?_0xdb06f4[_0xbd72('0x3f')]:_0xf55c9e[_0xbd72('0x3a')];if(_0x990612['query']['includeAll']){_0xdb06f4[_0xbd72('0x4c')]=[{'all':!![]}];}_0xdb06f4=_[_0xbd72('0x48')]({},_0xdb06f4,_0x990612[_0xbd72('0x4a')]);return db[_0xbd72('0x37')]['find'](_0xdb06f4)['then'](handleEntityNotFound(_0x324557,null))[_0xbd72('0x1d')](respondWithResult(_0x324557,null))[_0xbd72('0x25')](handleError(_0x324557,null));};exports[_0xbd72('0x50')]=function(_0x3258cb,_0x522dc6,_0x427474){var _0x90832a;return db[_0xbd72('0x51')][_0xbd72('0x52')](function(_0xaadf4){return db[_0xbd72('0x37')][_0xbd72('0x50')](_0x3258cb[_0xbd72('0x53')],{'raw':!![]})[_0xbd72('0x1d')](function(_0x5401e6){_0x90832a=_0x5401e6;return db[_0xbd72('0x37')][_0xbd72('0x54')]({'where':{'type':_0x3258cb[_0xbd72('0x53')][_0xbd72('0x55')]},'raw':!![]});})[_0xbd72('0x1d')](function(_0x36d7ef){if(_0x90832a[_0xbd72('0x55')][_0xbd72('0x56')]()==_0xbd72('0x57')){var _0x2d218c=fs[_0xbd72('0x58')](path['join'](config[_0xbd72('0x59')],_0xbd72('0x5a')),'utf8');var _0x16ed4b=ejs[_0xbd72('0x5b')](_0x2d218c,{'networks':_0x36d7ef||[]});fs['writeFileSync'](_0xbd72('0x5c'),_0x16ed4b);return respondWithRpcPromise(_0xbd72('0x5d'),_0xbd72('0x50'),{'module':'res_stun_monitor.so'});}else if(_0x90832a[_0xbd72('0x55')]['toUpperCase']()==_0xbd72('0x5e')){var _0x49e00d=fs[_0xbd72('0x58')](path[_0xbd72('0x5f')](config[_0xbd72('0x59')],'server/files/templates/turn_multiple.ejs'),_0xbd72('0x60'));var _0x4d13f2=ejs['render'](_0x49e00d,{'networks':_0x36d7ef||[]});fs[_0xbd72('0x61')](_0xbd72('0x62'),_0x4d13f2);return respondWithRpcPromise(_0xbd72('0x5d'),_0xbd72('0x50'),{'module':_0xbd72('0x63')});}else{var _0x6499b6=fs[_0xbd72('0x58')](path[_0xbd72('0x5f')](config[_0xbd72('0x59')],'server/files/templates/network.ejs'),'utf8');var _0x5ad26e=ejs[_0xbd72('0x5b')](_0x6499b6,{'networks':_0x36d7ef||[]});fs[_0xbd72('0x61')](util[_0xbd72('0x64')](_0xbd72('0x65'),_0x3258cb['body'][_0xbd72('0x55')][_0xbd72('0x66')]()),_0x5ad26e);return respondWithRpcPromise(_0xbd72('0x5d'),_0xbd72('0x50'),{'module':'chan_sip.so'});}return null;})['then'](function(){return _0x90832a;});})[_0xbd72('0x1d')](respondWithResult(_0x522dc6,0xc9))['catch'](handleError(_0x522dc6,null));};exports[_0xbd72('0x67')]=function(_0x44f663,_0x35c20f,_0x2abe6e){var _0xe4a8be;return db[_0xbd72('0x51')]['transaction'](function(_0x2c2ad3){return db[_0xbd72('0x37')]['find']({'where':{'id':_0x44f663[_0xbd72('0x68')]['id']}})[_0xbd72('0x1d')](handleEntityNotFound(_0x35c20f,null))[_0xbd72('0x1d')](saveUpdates(_0x44f663[_0xbd72('0x53')],null))['then'](function(_0x4d093a){if(_0x4d093a){_0xe4a8be=_0x4d093a;return db[_0xbd72('0x37')][_0xbd72('0x54')]({'where':{'type':_0xe4a8be[_0xbd72('0x55')]},'raw':!![]});}return null;})['then'](function(_0x19445e){if(_0xe4a8be['type']['toUpperCase']()==_0xbd72('0x57')){var _0x1c5678=fs[_0xbd72('0x58')](path['join'](config['root'],'server/files/templates/stun_multiple.ejs'),_0xbd72('0x60'));var _0x33d049=ejs[_0xbd72('0x5b')](_0x1c5678,{'networks':_0x19445e||[]});fs[_0xbd72('0x61')](_0xbd72('0x5c'),_0x33d049);return respondWithRpcPromise(_0xbd72('0x5d'),_0xbd72('0x67'),{'module':_0xbd72('0x63')});}else if(_0xe4a8be[_0xbd72('0x55')][_0xbd72('0x56')]()==_0xbd72('0x5e')){var _0x4ddcdb=fs[_0xbd72('0x58')](path[_0xbd72('0x5f')](config[_0xbd72('0x59')],_0xbd72('0x69')),'utf8');var _0x2c06d0=ejs[_0xbd72('0x5b')](_0x4ddcdb,{'networks':_0x19445e||[]});fs[_0xbd72('0x61')](_0xbd72('0x62'),_0x2c06d0);return respondWithRpcPromise('Reload',_0xbd72('0x67'),{'module':'res_stun_monitor.so'});}else{var _0x2b8019=fs[_0xbd72('0x58')](path[_0xbd72('0x5f')](config[_0xbd72('0x59')],_0xbd72('0x6a')),_0xbd72('0x60'));var _0x534b88=ejs[_0xbd72('0x5b')](_0x2b8019,{'networks':_0x19445e||[]});fs[_0xbd72('0x61')](util['format'](_0xbd72('0x65'),_0x44f663[_0xbd72('0x53')][_0xbd72('0x55')][_0xbd72('0x66')]()),_0x534b88);return respondWithRpcPromise(_0xbd72('0x5d'),_0xbd72('0x67'),{'module':_0xbd72('0x6b')});}return null;})['then'](function(_0xb86f16){if(_0xb86f16){return _0xe4a8be;}return null;});})[_0xbd72('0x1d')](respondWithResult(_0x35c20f,null))[_0xbd72('0x25')](handleError(_0x35c20f,null));};exports[_0xbd72('0x32')]=function(_0x56f4b2,_0xbad9a,_0x373d43){var _0x117ebf;return db[_0xbd72('0x37')]['find']({'where':{'id':_0x56f4b2[_0xbd72('0x68')]['id']}})[_0xbd72('0x1d')](function(_0x200acf){_0x117ebf=_0x200acf;return _0x200acf;})['then'](handleEntityNotFound(_0xbad9a,null))['then'](removeEntity(_0xbad9a,null))[_0xbd72('0x1d')](function(){if(_0x117ebf){return db[_0xbd72('0x37')]['findAll']({'where':{'type':_0x117ebf[_0xbd72('0x55')]},'raw':!![]});}})['then'](function(_0x381236){if(_0x117ebf['type'][_0xbd72('0x56')]()==_0xbd72('0x57')){var _0x4d11a2=fs[_0xbd72('0x58')](path[_0xbd72('0x5f')](config[_0xbd72('0x59')],_0xbd72('0x5a')),_0xbd72('0x60'));var _0x478dbd=ejs[_0xbd72('0x5b')](_0x4d11a2,{'networks':_0x381236||[]});fs[_0xbd72('0x61')](_0xbd72('0x5c'),_0x478dbd);return respondWithRpcPromise(_0xbd72('0x5d'),_0xbd72('0x32'),{'module':_0xbd72('0x63')});}else if(_0x117ebf[_0xbd72('0x55')]['toUpperCase']()==_0xbd72('0x5e')){var _0x1d18fe=fs[_0xbd72('0x58')](path[_0xbd72('0x5f')](config[_0xbd72('0x59')],_0xbd72('0x69')),_0xbd72('0x60'));var _0x5da33f=ejs[_0xbd72('0x5b')](_0x1d18fe,{'networks':_0x381236||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x5da33f);return respondWithRpcPromise('Reload',_0xbd72('0x32'),{'module':_0xbd72('0x63')});}else{var _0xb58ce2=fs[_0xbd72('0x58')](path[_0xbd72('0x5f')](config[_0xbd72('0x59')],_0xbd72('0x6a')),_0xbd72('0x60'));var _0x3255c6=ejs[_0xbd72('0x5b')](_0xb58ce2,{'networks':_0x381236||[]});fs[_0xbd72('0x61')](util[_0xbd72('0x64')](_0xbd72('0x65'),_0x56f4b2[_0xbd72('0x53')][_0xbd72('0x55')]['toLowerCase']()),_0x3255c6);return respondWithRpcPromise(_0xbd72('0x5d'),_0xbd72('0x32'),{'module':_0xbd72('0x6b')});}return null;})[_0xbd72('0x25')](handleError(_0xbad9a,null));};
\ No newline at end of file
index ffba4db..85f0e6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa45c=['request-promise','rimraf','exports','define','network','lodash','util','moment'];(function(_0x4f7329,_0x52b4a0){var _0x163d0e=function(_0x6f3fb6){while(--_0x6f3fb6){_0x4f7329['push'](_0x4f7329['shift']());}};_0x163d0e(++_0x52b4a0);}(_0xa45c,0x6d));var _0xca45=function(_0x56e892,_0x192ad2){_0x56e892=_0x56e892-0x0;var _0x51b574=_0xa45c[_0x56e892];return _0x51b574;};'use strict';var _=require(_0xca45('0x0'));var util=require(_0xca45('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xca45('0x2'));var BPromise=require('bluebird');var rp=require(_0xca45('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xca45('0x4'));var config=require('../../config/environment');var attributes=require('./network.attributes');module[_0xca45('0x5')]=function(_0x3803d6,_0x18d789){return _0x3803d6[_0xca45('0x6')]('Network',attributes,{'tableName':_0xca45('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdace=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','Network','network','lodash'];(function(_0x485aa1,_0x4975f4){var _0x559f53=function(_0x4753b8){while(--_0x4753b8){_0x485aa1['push'](_0x485aa1['shift']());}};_0x559f53(++_0x4975f4);}(_0xdace,0xc5));var _0xedac=function(_0x4c98b9,_0x1ad11b){_0x4c98b9=_0x4c98b9-0x0;var _0x3a257a=_0xdace[_0x4c98b9];return _0x3a257a;};'use strict';var _=require(_0xedac('0x0'));var util=require('util');var logger=require(_0xedac('0x1'))(_0xedac('0x2'));var moment=require(_0xedac('0x3'));var BPromise=require('bluebird');var rp=require(_0xedac('0x4'));var fs=require('fs');var path=require(_0xedac('0x5'));var rimraf=require(_0xedac('0x6'));var config=require(_0xedac('0x7'));var attributes=require('./network.attributes');module[_0xedac('0x8')]=function(_0x1cba89,_0x39328a){return _0x1cba89['define'](_0xedac('0x9'),attributes,{'tableName':_0xedac('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8ca4db1..b621920 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7a54,0x106));var _0x47a5=function(_0x176d81,_0x35c768){_0x176d81=_0x176d81-0x0;var _0x36427f=_0x7a54[_0x176d81];return _0x36427f;};'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(_0x4a54c0,_0x21949d){var _0x34b322=function(_0x4fe3ad){while(--_0x4fe3ad){_0x4a54c0['push'](_0x4a54c0['shift']());}};_0x34b322(++_0x21949d);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'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 3362029..c617e51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2f9=['../../components/interaction/service','./openchannelAccount.controller','get','isAuthenticated','index','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/users','getAgents','create','post','addDisposition','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send','put','update','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x426560,_0x51a27d){var _0x4a5192=function(_0x265317){while(--_0x265317){_0x426560['push'](_0x426560['shift']());}};_0x4a5192(++_0x51a27d);}(_0xc2f9,0x1e4));var _0x9c2f=function(_0x1e8c91,_0x2a57c6){_0x1e8c91=_0x1e8c91-0x0;var _0x4d7229=_0xc2f9[_0x1e8c91];return _0x4d7229;};'use strict';var multer=require(_0x9c2f('0x0'));var util=require(_0x9c2f('0x1'));var path=require(_0x9c2f('0x2'));var timeout=require(_0x9c2f('0x3'));var express=require(_0x9c2f('0x4'));var router=express[_0x9c2f('0x5')]();var fs_extra=require(_0x9c2f('0x6'));var auth=require(_0x9c2f('0x7'));var interaction=require(_0x9c2f('0x8'));var config=require('../../config/environment');var controller=require(_0x9c2f('0x9'));router[_0x9c2f('0xa')]('/',auth[_0x9c2f('0xb')](),controller[_0x9c2f('0xc')]);router[_0x9c2f('0xa')]('/describe',auth[_0x9c2f('0xb')](),controller['describe']);router[_0x9c2f('0xa')](_0x9c2f('0xd'),auth[_0x9c2f('0xb')](),controller['show']);router[_0x9c2f('0xa')](_0x9c2f('0xe'),auth['isAuthenticated'](),controller[_0x9c2f('0xf')]);router[_0x9c2f('0xa')](_0x9c2f('0x10'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x11')]);router[_0x9c2f('0xa')](_0x9c2f('0x12'),auth['isAuthenticated'](),controller[_0x9c2f('0x13')]);router[_0x9c2f('0xa')](_0x9c2f('0x14'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x15')]);router[_0x9c2f('0xa')](_0x9c2f('0x16'),auth['isAuthenticated'](),controller[_0x9c2f('0x17')]);router['post']('/',auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x18')]);router[_0x9c2f('0x19')]('/:id/dispositions',auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x1a')]);router['post']('/:id/canned_answers',auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x1b')]);router[_0x9c2f('0x19')](_0x9c2f('0x1c'),controller[_0x9c2f('0x1d')]);router[_0x9c2f('0x19')](_0x9c2f('0x12'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x1e')]);router[_0x9c2f('0x19')](_0x9c2f('0x16'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x1f')]);router[_0x9c2f('0x19')](_0x9c2f('0x20'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x21')]);router[_0x9c2f('0x22')](_0x9c2f('0xd'),auth['isAuthenticated'](),controller[_0x9c2f('0x23')]);router[_0x9c2f('0x24')](_0x9c2f('0xd'),auth[_0x9c2f('0xb')](),controller['destroy']);router[_0x9c2f('0x24')](_0x9c2f('0xe'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x25')]);router[_0x9c2f('0x24')](_0x9c2f('0x10'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x26')]);router['delete'](_0x9c2f('0x16'),auth['isAuthenticated'](),controller[_0x9c2f('0x27')]);module[_0x9c2f('0x28')]=router;
\ No newline at end of file
+var _0x27c1=['index','describe','isAuthenticated','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','getAgents','create','post','addDisposition','/:id/notify','notify','addApplications','/:id/users','addAgents','/:id/send','send','put','/:id','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelAccount.controller','get'];(function(_0x2ba232,_0x47c0c0){var _0x223765=function(_0x51002e){while(--_0x51002e){_0x2ba232['push'](_0x2ba232['shift']());}};_0x223765(++_0x47c0c0);}(_0x27c1,0xc7));var _0x127c=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0x27c1[_0x346737];return _0x1ade2e;};'use strict';var multer=require(_0x127c('0x0'));var util=require(_0x127c('0x1'));var path=require(_0x127c('0x2'));var timeout=require(_0x127c('0x3'));var express=require(_0x127c('0x4'));var router=express[_0x127c('0x5')]();var fs_extra=require(_0x127c('0x6'));var auth=require(_0x127c('0x7'));var interaction=require(_0x127c('0x8'));var config=require('../../config/environment');var controller=require(_0x127c('0x9'));router[_0x127c('0xa')]('/',auth['isAuthenticated'](),controller[_0x127c('0xb')]);router[_0x127c('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x127c('0xc')]);router[_0x127c('0xa')]('/:id',auth[_0x127c('0xd')](),controller[_0x127c('0xe')]);router[_0x127c('0xa')](_0x127c('0xf'),auth[_0x127c('0xd')](),controller['getDispositions']);router[_0x127c('0xa')](_0x127c('0x10'),auth[_0x127c('0xd')](),controller[_0x127c('0x11')]);router['get'](_0x127c('0x12'),auth[_0x127c('0xd')](),controller[_0x127c('0x13')]);router[_0x127c('0xa')](_0x127c('0x14'),auth[_0x127c('0xd')](),controller[_0x127c('0x15')]);router[_0x127c('0xa')]('/:id/users',auth[_0x127c('0xd')](),controller[_0x127c('0x16')]);router['post']('/',auth[_0x127c('0xd')](),controller[_0x127c('0x17')]);router[_0x127c('0x18')](_0x127c('0xf'),auth[_0x127c('0xd')](),controller[_0x127c('0x19')]);router['post']('/:id/canned_answers',auth['isAuthenticated'](),controller['addAnswer']);router[_0x127c('0x18')](_0x127c('0x1a'),controller[_0x127c('0x1b')]);router[_0x127c('0x18')](_0x127c('0x12'),auth[_0x127c('0xd')](),controller[_0x127c('0x1c')]);router[_0x127c('0x18')](_0x127c('0x1d'),auth[_0x127c('0xd')](),controller[_0x127c('0x1e')]);router[_0x127c('0x18')](_0x127c('0x1f'),auth['isAuthenticated'](),controller[_0x127c('0x20')]);router[_0x127c('0x21')](_0x127c('0x22'),auth[_0x127c('0xd')](),controller[_0x127c('0x23')]);router[_0x127c('0x24')]('/:id',auth[_0x127c('0xd')](),controller[_0x127c('0x25')]);router['delete']('/:id/dispositions',auth['isAuthenticated'](),controller[_0x127c('0x26')]);router['delete'](_0x127c('0x10'),auth['isAuthenticated'](),controller[_0x127c('0x27')]);router[_0x127c('0x24')]('/:id/users',auth[_0x127c('0xd')](),controller[_0x127c('0x28')]);module[_0x127c('0x29')]=router;
\ No newline at end of file
index e6c7828..8c273e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d1b=['INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','STRING','name','BOOLEAN'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x5d1b,0xe2));var _0xb5d1=function(_0x32ddd2,_0xe0f618){_0x32ddd2=_0x32ddd2-0x0;var _0x48de30=_0x5d1b[_0x32ddd2];return _0x48de30;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xb5d1('0x0'));module['exports']={'name':{'type':Sequelize[_0xb5d1('0x1')],'unique':_0xb5d1('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xb5d1('0x1')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0xb5d1('0x1')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xb5d1('0x1')],'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[_0xb5d1('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xb5d1('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xb5d1('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xb5d1('0x1')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xb5d1('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xb5d1('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xb5d1('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb5d1('0x4')],'allowNull':!![],'defaultValue':null,'comment':_0xb5d1('0x5')},'mandatoryDisposition':{'type':Sequelize[_0xb5d1('0x3')],'defaultValue':![],'comment':_0xb5d1('0x6'),'set':function(_0xd61a3c){if(!_0xd61a3c)this[_0xb5d1('0x7')](_0xb5d1('0x8'),null);this[_0xb5d1('0x7')](_0xb5d1('0x9'),_0xd61a3c);}}};
\ No newline at end of file
+var _0xe1de=['BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x9fefe8,_0x372bb1){var _0x17ecf3=function(_0x37b677){while(--_0x37b677){_0x9fefe8['push'](_0x9fefe8['shift']());}};_0x17ecf3(++_0x372bb1);}(_0xe1de,0x1e0));var _0xee1d=function(_0x1406ae,_0x292395){_0x1406ae=_0x1406ae-0x0;var _0x23a076=_0xe1de[_0x1406ae];return _0x23a076;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0xee1d('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xee1d('0x1')]},'token':{'type':Sequelize[_0xee1d('0x1')],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0xee1d('0x1')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xee1d('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xee1d('0x2')],'defaultValue':function(){return _0xee1d('0x3');}},'notificationSound':{'type':Sequelize[_0xee1d('0x4')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xee1d('0x4')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xee1d('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xee1d('0x1')]},'queueTransfer':{'type':Sequelize[_0xee1d('0x4')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xee1d('0x4')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xee1d('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0xee1d('0x6')},'mandatoryDisposition':{'type':Sequelize[_0xee1d('0x4')],'defaultValue':![],'comment':_0xee1d('0x7'),'set':function(_0x571827){if(!_0x571827)this[_0xee1d('0x8')](_0xee1d('0x9'),null);this[_0xee1d('0x8')](_0xee1d('0xa'),_0x571827);}}};
\ No newline at end of file
index 9ff8fc6..5cf39d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21b6=['limit','count','offset','set','Content-Range','save','update','then','destroy','get','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','VIRTUAL','merge','includeAll','include','findAll','rows','catch','options','find','user','role','OpenchannelAccounts','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','hasOwnProperty','filter','removeDispositions','ids','addAnswer','CannedAnswer','findOne','pick','removeAnswers','notify','CmContact','Sequelize','ValidationError','difference','updatedAt','createdAt','CompanyId','isNil','from','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','Contacts','DESC','OpenchannelApplication','Applications','account','applications','list','orderBy','priority','asc','defaults','ListId','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','messageId','created','interaction','autoclose','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','sequelize','bulkCreate','getApplications','Contact','Owner','internal','Tag','Tags','color','tag','addAgents','omit','emit','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./openchannelAccount.socket','jayson/promise','client','http','request','info','OpenchannelAccount,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','sendStatus','end','status','json','undefined'];(function(_0x5cca06,_0x4073a2){var _0x141053=function(_0x4ae781){while(--_0x4ae781){_0x5cca06['push'](_0x5cca06['shift']());}};_0x141053(++_0x4073a2);}(_0x21b6,0x8e));var _0x621b=function(_0x1eb3f9,_0x39edcf){_0x1eb3f9=_0x1eb3f9-0x0;var _0x2c5e73=_0x21b6[_0x1eb3f9];return _0x2c5e73;};'use strict';var emlformat=require(_0x621b('0x0'));var rimraf=require(_0x621b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x621b('0x2'));var rp=require('request-promise');var moment=require(_0x621b('0x3'));var BPromise=require(_0x621b('0x4'));var Mustache=require(_0x621b('0x5'));var util=require(_0x621b('0x6'));var path=require(_0x621b('0x7'));var sox=require('sox');var csv=require(_0x621b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x621b('0x9'));var squel=require(_0x621b('0xa'));var crypto=require(_0x621b('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x621b('0x8'));var querystring=require(_0x621b('0xc'));var Papa=require(_0x621b('0xd'));var Redis=require('ioredis');var authService=require(_0x621b('0xe'));var qs=require(_0x621b('0xf'));var as=require(_0x621b('0x10'));var hardwareService=require(_0x621b('0x11'));var logger=require(_0x621b('0x12'))('api');var utils=require(_0x621b('0x13'));var config=require(_0x621b('0x14'));var licenseUtil=require(_0x621b('0x15'));var db=require('../../mysqldb')['db'];config[_0x621b('0x16')]=_['defaults'](config[_0x621b('0x16')],{'host':_0x621b('0x17'),'port':0x18eb});var socket=require(_0x621b('0x18'))(new Redis(config[_0x621b('0x16')]));require(_0x621b('0x19'))['register'](socket);var jayson=require(_0x621b('0x1a'));var client=jayson[_0x621b('0x1b')][_0x621b('0x1c')]({'port':0x232c});var client9002=jayson[_0x621b('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f3416,_0x5093bc,_0x4f68d9,_0x325290){return new BPromise(function(_0x34043b,_0x65afc2){var _0x1a28dc=_0x325290||client;return _0x1a28dc[_0x621b('0x1d')](_0x1f3416,_0x4f68d9)['then'](function(_0x4e7a58){logger[_0x621b('0x1e')](_0x621b('0x1f'),_0x5093bc,'request\x20sent');logger[_0x621b('0x20')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x5093bc,_0x621b('0x21'),JSON['stringify'](_0x4e7a58));if(_0x4e7a58[_0x621b('0x22')]){if(_0x4e7a58[_0x621b('0x22')][_0x621b('0x23')]===0x1f4){logger[_0x621b('0x22')](_0x621b('0x1f'),_0x5093bc,_0x4e7a58['error'][_0x621b('0x24')]);return _0x65afc2(_0x4e7a58[_0x621b('0x22')]['message']);}logger['error'](_0x621b('0x1f'),_0x5093bc,_0x4e7a58[_0x621b('0x22')][_0x621b('0x24')]);return _0x34043b(_0x4e7a58[_0x621b('0x22')]['message']);}else{logger['info'](_0x621b('0x1f'),_0x5093bc,_0x621b('0x21'));_0x34043b(_0x4e7a58[_0x621b('0x25')][_0x621b('0x24')]);}})['catch'](function(_0xbfcefa){logger[_0x621b('0x22')](_0x621b('0x1f'),_0x5093bc,_0xbfcefa);_0x65afc2(_0xbfcefa);});});}function respondWithStatusCode(_0x4967ef,_0x169aef){_0x169aef=_0x169aef||0xcc;return function(_0x492102){if(_0x492102){return _0x4967ef[_0x621b('0x26')](_0x169aef);}return _0x4967ef['status'](_0x169aef)[_0x621b('0x27')]();};}function respondWithResult(_0x25bc2f,_0x3493d4){_0x3493d4=_0x3493d4||0xc8;return function(_0x34a534){if(_0x34a534){return _0x25bc2f[_0x621b('0x28')](_0x3493d4)[_0x621b('0x29')](_0x34a534);}};}function respondWithFilteredResult(_0x3ac1fd,_0x19d51b){return function(_0x2b96f3){if(_0x2b96f3){var _0x492999=typeof _0x19d51b['offset']===_0x621b('0x2a')&&typeof _0x19d51b[_0x621b('0x2b')]===_0x621b('0x2a');var _0x3a4922=_0x2b96f3[_0x621b('0x2c')];var _0x4c9760=_0x492999?0x0:_0x19d51b[_0x621b('0x2d')];var _0x4380a0=_0x492999?_0x2b96f3[_0x621b('0x2c')]:_0x19d51b['offset']+_0x19d51b['limit'];var _0x36bf35;if(_0x4380a0>=_0x3a4922){_0x4380a0=_0x3a4922;_0x36bf35=0xc8;}else{_0x36bf35=0xce;}_0x3ac1fd[_0x621b('0x28')](_0x36bf35);return _0x3ac1fd[_0x621b('0x2e')](_0x621b('0x2f'),_0x4c9760+'-'+_0x4380a0+'/'+_0x3a4922)['json'](_0x2b96f3);}return null;};}function patchUpdates(_0x4bf71c){return function(_0x27233f){try{jsonpatch['apply'](_0x27233f,_0x4bf71c,!![]);}catch(_0x220067){return BPromise['reject'](_0x220067);}return _0x27233f[_0x621b('0x30')]();};}function saveUpdates(_0xad79d1,_0x43a8ac){return function(_0x44fbfb){if(_0x44fbfb){return _0x44fbfb[_0x621b('0x31')](_0xad79d1)[_0x621b('0x32')](function(_0x4a629f){return _0x4a629f;});}return null;};}function removeEntity(_0x12a1b0,_0x5a1070){return function(_0x40b727){if(_0x40b727){return _0x40b727[_0x621b('0x33')]()[_0x621b('0x32')](function(){var _0x9e38cb=_0x40b727[_0x621b('0x34')]({'plain':!![]});var _0x1bb3ac='OpenchannelAccounts';return db[_0x621b('0x35')]['destroy']({'where':{'type':_0x1bb3ac,'resourceId':_0x9e38cb['id']}})[_0x621b('0x32')](function(){return _0x40b727;});})[_0x621b('0x32')](function(){_0x12a1b0['status'](0xcc)[_0x621b('0x27')]();});}};}function handleEntityNotFound(_0x3e7da7,_0x58d260){return function(_0x41e282){if(!_0x41e282){_0x3e7da7[_0x621b('0x26')](0x194);}return _0x41e282;};}function handleError(_0x4c8dfe,_0x49c5e9){_0x49c5e9=_0x49c5e9||0x1f4;return function(_0x516429){logger[_0x621b('0x22')](_0x516429[_0x621b('0x36')]);if(_0x516429[_0x621b('0x37')]){delete _0x516429[_0x621b('0x37')];}_0x4c8dfe[_0x621b('0x28')](_0x49c5e9)['send'](_0x516429);};}exports[_0x621b('0x38')]=function(_0x13b5c7,_0x46d565){var _0x45e089={'include':[{'model':db[_0x621b('0x39')],'as':_0x621b('0x3a')}]},_0x5645f4={},_0xa377be={'count':0x0,'rows':[]};var _0x1d7b7e=_[_0x621b('0x3b')](db[_0x621b('0x3c')][_0x621b('0x3d')],function(_0x47fb35){return{'name':_0x47fb35[_0x621b('0x3e')],'type':_0x47fb35[_0x621b('0x3f')]['key']};});_0x5645f4[_0x621b('0x40')]=_[_0x621b('0x3b')](_0x1d7b7e,_0x621b('0x37'));_0x5645f4['query']=_[_0x621b('0x41')](_0x13b5c7[_0x621b('0x42')]);_0x5645f4[_0x621b('0x43')]=_[_0x621b('0x44')](_0x5645f4[_0x621b('0x40')],_0x5645f4[_0x621b('0x42')]);_0x45e089['attributes']=_[_0x621b('0x44')](_0x5645f4[_0x621b('0x40')],qs['fields'](_0x13b5c7[_0x621b('0x42')][_0x621b('0x45')]));_0x45e089[_0x621b('0x46')]=_0x45e089[_0x621b('0x46')][_0x621b('0x47')]?_0x45e089[_0x621b('0x46')]:_0x5645f4[_0x621b('0x40')];if(!_0x13b5c7['query']['hasOwnProperty'](_0x621b('0x48'))){_0x45e089[_0x621b('0x2b')]=qs[_0x621b('0x2b')](_0x13b5c7['query'][_0x621b('0x2b')]);_0x45e089['offset']=qs['offset'](_0x13b5c7[_0x621b('0x42')][_0x621b('0x2d')]);}_0x45e089[_0x621b('0x49')]=qs[_0x621b('0x4a')](_0x13b5c7[_0x621b('0x42')]['sort']);_0x45e089['where']=qs[_0x621b('0x43')](_['pick'](_0x13b5c7[_0x621b('0x42')],_0x5645f4[_0x621b('0x43')]),_0x1d7b7e);if(_0x13b5c7[_0x621b('0x42')]['filter']){_0x45e089[_0x621b('0x4b')]=_['merge'](_0x45e089[_0x621b('0x4b')],{'$or':_[_0x621b('0x3b')](_0x1d7b7e,function(_0x433a8d){if(_0x433a8d['type']!==_0x621b('0x4c')){var _0x3f7307={};_0x3f7307[_0x433a8d['name']]={'$like':'%'+_0x13b5c7[_0x621b('0x42')]['filter']+'%'};return _0x3f7307;}})});}_0x45e089=_[_0x621b('0x4d')]({},_0x45e089,_0x13b5c7['options']);var _0x580e9e={'where':_0x45e089['where']};return db[_0x621b('0x3c')][_0x621b('0x2c')](_0x580e9e)['then'](function(_0x3937e4){_0xa377be['count']=_0x3937e4;if(_0x13b5c7[_0x621b('0x42')][_0x621b('0x4e')]){_0x45e089[_0x621b('0x4f')]=[{'all':!![]}];}return db[_0x621b('0x3c')][_0x621b('0x50')](_0x45e089);})[_0x621b('0x32')](function(_0x3f995c){_0xa377be[_0x621b('0x51')]=_0x3f995c;return _0xa377be;})['then'](respondWithFilteredResult(_0x46d565,_0x45e089))[_0x621b('0x52')](handleError(_0x46d565,null));};exports['show']=function(_0x44871a,_0x423a37){var _0x20c575={'raw':![],'where':{'id':_0x44871a['params']['id']},'include':[{'model':db[_0x621b('0x39')],'as':_0x621b('0x3a')}]},_0x3d75d4={};_0x3d75d4[_0x621b('0x40')]=_[_0x621b('0x41')](db['OpenchannelAccount']['rawAttributes']);_0x3d75d4[_0x621b('0x42')]=_[_0x621b('0x41')](_0x44871a[_0x621b('0x42')]);_0x3d75d4[_0x621b('0x43')]=_[_0x621b('0x44')](_0x3d75d4[_0x621b('0x40')],_0x3d75d4[_0x621b('0x42')]);_0x20c575[_0x621b('0x46')]=_[_0x621b('0x44')](_0x3d75d4[_0x621b('0x40')],qs[_0x621b('0x45')](_0x44871a[_0x621b('0x42')]['fields']));_0x20c575['attributes']=_0x20c575['attributes'][_0x621b('0x47')]?_0x20c575[_0x621b('0x46')]:_0x3d75d4[_0x621b('0x40')];if(_0x44871a[_0x621b('0x42')]['includeAll']){_0x20c575[_0x621b('0x4f')]=[{'all':!![]}];}_0x20c575=_[_0x621b('0x4d')]({},_0x20c575,_0x44871a[_0x621b('0x53')]);return db[_0x621b('0x3c')][_0x621b('0x54')](_0x20c575)[_0x621b('0x32')](handleEntityNotFound(_0x423a37,null))[_0x621b('0x32')](respondWithResult(_0x423a37,null))[_0x621b('0x52')](handleError(_0x423a37,null));};exports['create']=function(_0x4829b1,_0x388f68){return db[_0x621b('0x3c')]['create'](_0x4829b1['body'],{})[_0x621b('0x32')](function(_0x7f19ca){var _0xba028b=_0x4829b1[_0x621b('0x55')][_0x621b('0x34')]({'plain':!![]});if(!_0xba028b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xba028b[_0x621b('0x56')]===_0x621b('0x55')){var _0x3eefe8=_0x7f19ca[_0x621b('0x34')]({'plain':!![]});var _0x49ad2c=_0x621b('0x57');return db[_0x621b('0x58')][_0x621b('0x54')]({'where':{'name':_0x49ad2c,'userProfileId':_0xba028b[_0x621b('0x59')]},'raw':!![]})[_0x621b('0x32')](function(_0x1a4aad){if(_0x1a4aad&&_0x1a4aad[_0x621b('0x5a')]===0x0){return db[_0x621b('0x35')][_0x621b('0x5b')]({'name':_0x3eefe8[_0x621b('0x37')],'resourceId':_0x3eefe8['id'],'type':_0x1a4aad['name'],'sectionId':_0x1a4aad['id']},{})[_0x621b('0x32')](function(){return _0x7f19ca;});}else{return _0x7f19ca;}})[_0x621b('0x52')](function(_0x3990d4){logger[_0x621b('0x22')](_0x621b('0x5c'),_0x3990d4);throw _0x3990d4;});}return _0x7f19ca;})['then'](respondWithResult(_0x388f68,0xc9))[_0x621b('0x52')](handleError(_0x388f68,null));};exports[_0x621b('0x31')]=function(_0x2f30f0,_0xe82afd){if(_0x2f30f0[_0x621b('0x5d')]['id']){delete _0x2f30f0['body']['id'];}return db[_0x621b('0x3c')]['find']({'where':{'id':_0x2f30f0['params']['id']},'include':[{'model':db['Pause'],'as':_0x621b('0x3a')}]})[_0x621b('0x32')](handleEntityNotFound(_0xe82afd,null))[_0x621b('0x32')](saveUpdates(_0x2f30f0[_0x621b('0x5d')],null))[_0x621b('0x32')](respondWithResult(_0xe82afd,null))['catch'](handleError(_0xe82afd,null));};exports[_0x621b('0x33')]=function(_0x38ca21,_0x170fa0){return db[_0x621b('0x3c')]['find']({'where':{'id':_0x38ca21[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x170fa0,null))[_0x621b('0x32')](removeEntity(_0x170fa0,null))[_0x621b('0x52')](handleError(_0x170fa0,null));};exports['describe']=function(_0x46f612,_0x4b36a2){return db[_0x621b('0x3c')][_0x621b('0x5f')]()[_0x621b('0x32')](respondWithResult(_0x4b36a2,null))[_0x621b('0x52')](handleError(_0x4b36a2,null));};exports[_0x621b('0x60')]=function(_0x899104,_0x7152cb,_0x4aac9a){if(_0x899104[_0x621b('0x5d')]['id']){delete _0x899104['body']['id'];}return db['OpenchannelAccount'][_0x621b('0x54')]({'where':{'id':_0x899104[_0x621b('0x5e')]['id']}})['then'](handleEntityNotFound(_0x7152cb,null))['then'](function(_0x17b65e){if(_0x17b65e){_0x899104[_0x621b('0x5d')][_0x621b('0x61')]=_0x17b65e['id'];return db[_0x621b('0x62')][_0x621b('0x5b')](_0x899104[_0x621b('0x5d')]);}})[_0x621b('0x32')](respondWithResult(_0x7152cb,null))['catch'](handleError(_0x7152cb,null));};exports[_0x621b('0x63')]=function(_0x2459ae,_0x4c9c2f,_0x3097b7){var _0x5be22b={'raw':![],'where':{}};var _0x2c2d0e={};var _0x189aed={'count':0x0,'rows':[]};return db[_0x621b('0x3c')]['findOne']({'where':{'id':_0x2459ae[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x4c9c2f,null))[_0x621b('0x32')](function(_0x337ada){if(_0x337ada){_0x2c2d0e[_0x621b('0x40')]=_[_0x621b('0x41')](db[_0x621b('0x62')][_0x621b('0x3d')]);_0x2c2d0e[_0x621b('0x42')]=_[_0x621b('0x41')](_0x2459ae[_0x621b('0x42')]);_0x2c2d0e[_0x621b('0x43')]=_[_0x621b('0x44')](_0x2c2d0e[_0x621b('0x40')],_0x2c2d0e[_0x621b('0x42')]);_0x5be22b['attributes']=_[_0x621b('0x44')](_0x2c2d0e[_0x621b('0x40')],qs[_0x621b('0x45')](_0x2459ae['query'][_0x621b('0x45')]));_0x5be22b[_0x621b('0x46')]=_0x5be22b[_0x621b('0x46')]['length']?_0x5be22b[_0x621b('0x46')]:_0x2c2d0e['model'];if(!_0x2459ae[_0x621b('0x42')][_0x621b('0x64')]('nolimit')){_0x5be22b[_0x621b('0x2b')]=qs[_0x621b('0x2b')](_0x2459ae['query'][_0x621b('0x2b')]);_0x5be22b[_0x621b('0x2d')]=qs[_0x621b('0x2d')](_0x2459ae['query'][_0x621b('0x2d')]);}_0x5be22b[_0x621b('0x49')]=qs[_0x621b('0x4a')](_0x2459ae['query'][_0x621b('0x4a')]);_0x5be22b['where']=qs['filters'](_['pick'](_0x2459ae[_0x621b('0x42')],_0x2c2d0e[_0x621b('0x43')]));_0x5be22b[_0x621b('0x4b')][_0x621b('0x61')]=_0x337ada['id'];if(_0x2459ae[_0x621b('0x42')][_0x621b('0x65')]){_0x5be22b['where']=_[_0x621b('0x4d')](_0x5be22b[_0x621b('0x4b')],{'$or':_['map'](_0x5be22b[_0x621b('0x46')],function(_0x5db57c){var _0x141547={};_0x141547[_0x5db57c]={'$like':'%'+_0x2459ae[_0x621b('0x42')][_0x621b('0x65')]+'%'};return _0x141547;})});}_0x5be22b=_['merge']({},_0x5be22b,_0x2459ae['options']);return db[_0x621b('0x62')][_0x621b('0x2c')]({'where':_0x5be22b['where']})[_0x621b('0x32')](function(_0x135a52){_0x189aed[_0x621b('0x2c')]=_0x135a52;if(_0x2459ae['query']['includeAll']){_0x5be22b[_0x621b('0x4f')]=[{'all':!![]}];}return db['Disposition'][_0x621b('0x50')](_0x5be22b);})['then'](function(_0x33eafb){_0x189aed[_0x621b('0x51')]=_0x33eafb;return _0x189aed;});}})[_0x621b('0x32')](respondWithFilteredResult(_0x4c9c2f,_0x5be22b))[_0x621b('0x52')](handleError(_0x4c9c2f,null));};exports[_0x621b('0x66')]=function(_0x1cba48,_0x4e56bd,_0x580f53){return db['OpenchannelAccount'][_0x621b('0x54')]({'where':{'id':_0x1cba48['params']['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x4e56bd,null))[_0x621b('0x32')](function(_0x1eab3e){if(_0x1eab3e){return _0x1eab3e['removeDispositions'](_0x1cba48['query'][_0x621b('0x67')]);}})[_0x621b('0x32')](respondWithStatusCode(_0x4e56bd,null))[_0x621b('0x52')](handleError(_0x4e56bd,null));};exports[_0x621b('0x68')]=function(_0x39fbcd,_0x3d4ef0,_0x57d175){if(_0x39fbcd[_0x621b('0x5d')]['id']){delete _0x39fbcd[_0x621b('0x5d')]['id'];}return db[_0x621b('0x3c')]['find']({'where':{'id':_0x39fbcd[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x3d4ef0,null))['then'](function(_0x422508){if(_0x422508){_0x39fbcd[_0x621b('0x5d')][_0x621b('0x61')]=_0x422508['id'];return db[_0x621b('0x69')]['create'](_0x39fbcd[_0x621b('0x5d')]);}})[_0x621b('0x32')](respondWithResult(_0x3d4ef0,null))[_0x621b('0x52')](handleError(_0x3d4ef0,null));};exports['getAnswers']=function(_0x426768,_0x527c10,_0x5c0b0f){var _0x3647e0={'raw':![],'where':{}};var _0x14d6ad={};var _0x5374d1={'count':0x0,'rows':[]};return db[_0x621b('0x3c')][_0x621b('0x6a')]({'where':{'id':_0x426768[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x527c10,null))[_0x621b('0x32')](function(_0x2d950c){if(_0x2d950c){_0x14d6ad['model']=_['keys'](db[_0x621b('0x69')]['rawAttributes']);_0x14d6ad[_0x621b('0x42')]=_['keys'](_0x426768[_0x621b('0x42')]);_0x14d6ad[_0x621b('0x43')]=_[_0x621b('0x44')](_0x14d6ad[_0x621b('0x40')],_0x14d6ad[_0x621b('0x42')]);_0x3647e0[_0x621b('0x46')]=_[_0x621b('0x44')](_0x14d6ad[_0x621b('0x40')],qs[_0x621b('0x45')](_0x426768['query'][_0x621b('0x45')]));_0x3647e0[_0x621b('0x46')]=_0x3647e0[_0x621b('0x46')]['length']?_0x3647e0[_0x621b('0x46')]:_0x14d6ad[_0x621b('0x40')];if(!_0x426768['query'][_0x621b('0x64')]('nolimit')){_0x3647e0[_0x621b('0x2b')]=qs[_0x621b('0x2b')](_0x426768[_0x621b('0x42')][_0x621b('0x2b')]);_0x3647e0[_0x621b('0x2d')]=qs[_0x621b('0x2d')](_0x426768['query']['offset']);}_0x3647e0[_0x621b('0x49')]=qs['sort'](_0x426768[_0x621b('0x42')][_0x621b('0x4a')]);_0x3647e0[_0x621b('0x4b')]=qs[_0x621b('0x43')](_[_0x621b('0x6b')](_0x426768['query'],_0x14d6ad['filters']));_0x3647e0['where'][_0x621b('0x61')]=_0x2d950c['id'];if(_0x426768[_0x621b('0x42')][_0x621b('0x65')]){_0x3647e0[_0x621b('0x4b')]=_[_0x621b('0x4d')](_0x3647e0[_0x621b('0x4b')],{'$or':_['map'](_0x3647e0[_0x621b('0x46')],function(_0x502ad6){var _0x2a6862={};_0x2a6862[_0x502ad6]={'$like':'%'+_0x426768[_0x621b('0x42')]['filter']+'%'};return _0x2a6862;})});}_0x3647e0=_[_0x621b('0x4d')]({},_0x3647e0,_0x426768[_0x621b('0x53')]);return db[_0x621b('0x69')][_0x621b('0x2c')]({'where':_0x3647e0[_0x621b('0x4b')]})['then'](function(_0x248387){_0x5374d1[_0x621b('0x2c')]=_0x248387;if(_0x426768[_0x621b('0x42')]['includeAll']){_0x3647e0[_0x621b('0x4f')]=[{'all':!![]}];}return db['CannedAnswer'][_0x621b('0x50')](_0x3647e0);})['then'](function(_0x3f448d){_0x5374d1['rows']=_0x3f448d;return _0x5374d1;});}})[_0x621b('0x32')](respondWithFilteredResult(_0x527c10,_0x3647e0))[_0x621b('0x52')](handleError(_0x527c10,null));};exports[_0x621b('0x6c')]=function(_0x3d8b87,_0x5708a2,_0x947d22){return db[_0x621b('0x3c')]['find']({'where':{'id':_0x3d8b87[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x5708a2,null))[_0x621b('0x32')](function(_0x59db14){if(_0x59db14){return _0x59db14[_0x621b('0x6c')](_0x3d8b87['query'][_0x621b('0x67')]);}})[_0x621b('0x32')](respondWithStatusCode(_0x5708a2,null))[_0x621b('0x52')](handleError(_0x5708a2,null));};exports[_0x621b('0x6d')]=function(_0x2d7d08,_0x1404a5,_0x1a8470){var _0xfdda38={'body':_0x2d7d08[_0x621b('0x5d')],'channel':'openchannel'};var _0x5e995c=[];var _0x135581=[];var _0x30b962={};var _0x4175e6=![];return db[_0x621b('0x6e')]['describe']()[_0x621b('0x32')](function(_0x37c91d){if(!_0x37c91d){throw new db[(_0x621b('0x6f'))][(_0x621b('0x70'))]('no\x20available\x20attributes');}_0x5e995c=_[_0x621b('0x71')](_['keys'](_0x37c91d),['createdAt',_0x621b('0x72')]);_0x135581=_[_0x621b('0x71')](_[_0x621b('0x41')](_0x37c91d),[_0x621b('0x73'),_0x621b('0x72'),_0x621b('0x74'),'ListId']);if(_0x2d7d08[_0x621b('0x5d')]['id']){delete _0x2d7d08[_0x621b('0x5d')]['id'];}if(_[_0x621b('0x75')](_0x2d7d08[_0x621b('0x5d')][_0x621b('0x76')])){throw new db[(_0x621b('0x6f'))]['ValidationError']('from\x20is\x20mandatory');}if(_['isNil'](_0x2d7d08[_0x621b('0x5d')][_0x621b('0x5d')])||_0x2d7d08['body'][_0x621b('0x5d')]===''){throw new db['Sequelize'][(_0x621b('0x70'))](_0x621b('0x77'));}if(_[_0x621b('0x75')](_0x2d7d08['body'][_0x621b('0x78')])){throw new db[(_0x621b('0x6f'))]['ValidationError'](_0x621b('0x79')+_0x135581);}if(!_[_0x621b('0x7a')](_0x135581,_0x2d7d08[_0x621b('0x5d')][_0x621b('0x78')])){throw new db['Sequelize'][(_0x621b('0x70'))](_0x621b('0x7b')+_0x135581);}_0x30b962[_0x2d7d08['body'][_0x621b('0x78')]]=_0x2d7d08[_0x621b('0x5d')][_0x621b('0x76')];})[_0x621b('0x32')](function(){return db['OpenchannelAccount'][_0x621b('0x54')]({'where':{'id':_0x2d7d08[_0x621b('0x5e')]['id']},'include':[{'model':db[_0x621b('0x7c')],'as':_0x621b('0x7d'),'include':[{'model':db[_0x621b('0x6e')],'as':_0x621b('0x7e'),'where':_0x30b962,'limit':0x1,'order':[['updatedAt',_0x621b('0x7f')]]}]},{'model':db[_0x621b('0x80')],'as':_0x621b('0x81')}]});})['then'](handleEntityNotFound(_0x1404a5,null))['then'](function(_0x371f3e){if(_0x371f3e&&_0x371f3e[_0x621b('0x7d')]){_0xfdda38[_0x621b('0x82')]=_0x371f3e;_0xfdda38[_0x621b('0x83')]=_0x371f3e[_0x621b('0x81')];_0xfdda38[_0x621b('0x84')]=_0x371f3e[_0x621b('0x7d')];_0xfdda38[_0x621b('0x83')]=_[_0x621b('0x85')](_0xfdda38[_0x621b('0x83')],[_0x621b('0x86')],[_0x621b('0x87')]);if(_0xfdda38[_0x621b('0x82')][_0x621b('0x81')]){delete _0xfdda38[_0x621b('0x82')][_0x621b('0x81')];}if(_0xfdda38[_0x621b('0x82')][_0x621b('0x7d')]&&_0xfdda38['account'][_0x621b('0x7d')][_0x621b('0x7e')]['length']){return _0xfdda38['account'][_0x621b('0x7d')][_0x621b('0x7e')][0x0];}var _0x1eab8a=_[_0x621b('0x88')](_0x2d7d08[_0x621b('0x5d')],{'firstName':_0x2d7d08['body'][_0x621b('0x76')],'ListId':_0x371f3e[_0x621b('0x89')]});_0x1eab8a[_0x2d7d08[_0x621b('0x5d')]['mapKey']]=_0x2d7d08['body'][_0x621b('0x76')];return db[_0x621b('0x6e')][_0x621b('0x5b')](_0x1eab8a,{'fields':_0x5e995c,'raw':!![]});}})[_0x621b('0x32')](handleEntityNotFound(_0x1404a5,null))[_0x621b('0x32')](function(_0x362968){_0xfdda38[_0x621b('0x8a')]=_0x362968;if(_0x362968){var _0x44236d={'ContactId':_0x362968['id'],'OpenchannelAccountId':_0x2d7d08[_0x621b('0x5e')]['id'],'from':(_0x362968[_0x621b('0x8b')]||'')+'\x20'+(_0x362968[_0x621b('0x8c')]||'')};var _0x5151f6={'OpenchannelAccountId':_0x2d7d08[_0x621b('0x5e')]['id'],'closed':![]};if(_0x2d7d08[_0x621b('0x5d')][_0x621b('0x8d')]){_0x5151f6['threadId']=_0x2d7d08[_0x621b('0x5d')]['threadId'];return db[_0x621b('0x8e')]['find']({'where':_0x5151f6})[_0x621b('0x32')](function(_0xb28c92){if(_0xb28c92){return[_0xb28c92,![]];}_0x44236d[_0x621b('0x8d')]=_0x2d7d08[_0x621b('0x5d')][_0x621b('0x8d')];_0x44236d[_0x621b('0x8f')]=_0x2d7d08['body']['externalUrl'];return db[_0x621b('0x8e')][_0x621b('0x5b')](_0x44236d)[_0x621b('0x32')](function(_0x2cf781){return[_0x2cf781,!![]];});});}else{_0x5151f6[_0x621b('0x8d')]=null;}_0x5151f6[_0x621b('0x90')]=_0x362968['id'];return db[_0x621b('0x8e')]['find']({'where':_0x5151f6})[_0x621b('0x32')](function(_0x3b6b14){if(_0x3b6b14){return[_0x3b6b14,![]];}return db[_0x621b('0x8e')]['create'](_0x44236d)[_0x621b('0x32')](function(_0x22c032){return[_0x22c032,!![]];});});}})[_0x621b('0x91')](function(_0x5119c4,_0x31727e){if(_0x5119c4){_0x4175e6=_0x31727e;if(!_0x31727e){var _0x709a6={'from':(_0xfdda38[_0x621b('0x8a')][_0x621b('0x8b')]||'')+'\x20'+(_0xfdda38[_0x621b('0x8a')]['lastName']||'')};if(_0x2d7d08[_0x621b('0x5d')][_0x621b('0x8d')]&&_0x2d7d08[_0x621b('0x5d')][_0x621b('0x92')]&&_0x2d7d08[_0x621b('0x5d')][_0x621b('0x8d')]!=_0x2d7d08[_0x621b('0x5d')]['messageId']){_0x709a6[_0x621b('0x8d')]=_0x2d7d08[_0x621b('0x5d')][_0x621b('0x92')];}return _0x5119c4[_0x621b('0x31')](_0x709a6);}else{return _0x5119c4;}}})[_0x621b('0x32')](function(_0x3bb4af){_0xfdda38['interaction']=_0x3bb4af[_0x621b('0x34')]({'plain':!![]});_0xfdda38['interaction'][_0x621b('0x93')]=_0x4175e6;if(_0xfdda38[_0x621b('0x94')]['created']){if(_0xfdda38[_0x621b('0x82')][_0x621b('0x95')]){_0xfdda38[_0x621b('0x83')][_0x621b('0x96')]({'id':0x0,'priority':_0xfdda38['applications'][_0x621b('0x47')]+0x1,'app':_0x621b('0x97'),'appdata':_0x621b('0x98'),'interval':_0x621b('0x99')});}}return db[_0x621b('0x9a')][_0x621b('0x5b')]({'body':_0x2d7d08[_0x621b('0x5d')][_0x621b('0x5d')],'OpenchannelAccountId':_0x2d7d08['params']['id'],'OpenchannelInteractionId':_0x3bb4af['id'],'direction':'in','ContactId':_0xfdda38[_0x621b('0x8a')]['id'],'AttachmentId':_0x2d7d08['body'][_0x621b('0x9b')]});})[_0x621b('0x32')](function(_0x2fd11a){_0xfdda38[_0x621b('0x24')]=_0x2fd11a;if(_0xfdda38[_0x621b('0x94')][_0x621b('0x9c')]){return db[_0x621b('0x9d')][_0x621b('0x54')]({'attributes':['id',_0x621b('0x37')],'where':{'id':_0xfdda38[_0x621b('0x94')][_0x621b('0x9c')]}})[_0x621b('0x32')](function(_0x3ba83c){if(_0x3ba83c){_0xfdda38[_0x621b('0x83')][_0x621b('0x9e')]({'id':0x0,'priority':0x0,'app':_0x621b('0x9f'),'appdata':_0x3ba83c['name']+','+(_0xfdda38[_0x621b('0x82')][_0x621b('0xa0')]||0xa),'interval':_0x621b('0x99')});_0xfdda38[_0x621b('0xa1')]=![];}return respondWithRpcPromise(_0x621b('0xa2'),_0x621b('0xa3'),_0xfdda38);});}return respondWithRpcPromise(_0x621b('0xa2'),_0x621b('0xa3'),_0xfdda38);})[_0x621b('0x32')](function(_0x145587){respondWithRpcPromise('EventManager',_0x621b('0xa4'),{'event':_0x621b('0x6d'),'message':_0x145587},client9002);return _0x145587;})['then'](respondWithResult(_0x1404a5,null))['catch'](handleError(_0x1404a5,null));};exports['addApplications']=function(_0x351596,_0x516b8a,_0x216e4e){return db[_0x621b('0x3c')][_0x621b('0x6a')]({'where':{'id':_0x351596['params']['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x516b8a,null))[_0x621b('0x32')](function(_0x2a98f3){if(_0x2a98f3){return db[_0x621b('0xa5')]['transaction'](function(_0x477b7c){return db[_0x621b('0x80')][_0x621b('0x33')]({'where':{'OpenchannelAccountId':_0x351596[_0x621b('0x5e')]['id']},'transaction':_0x477b7c})[_0x621b('0x32')](function(_0x9c66be){var _0x304d65=_[_0x621b('0x3b')](_0x351596[_0x621b('0x5d')],function(_0x495437){_0x495437['OpenchannelAccountId']=_0x351596['params']['id'];return _0x495437;});return db[_0x621b('0x80')][_0x621b('0xa6')](_0x304d65,{'transaction':_0x477b7c});});})['then'](function(){return db['OpenchannelApplication']['findAndCountAll']({'where':{'OpenchannelAccountId':_0x351596['params']['id']},'order':_0x621b('0x86')});});}})[_0x621b('0x32')](respondWithResult(_0x516b8a,null))[_0x621b('0x52')](handleError(_0x516b8a,null));};exports[_0x621b('0xa7')]=function(_0x823c68,_0x5a6154,_0x51cefe){var _0x58f64c={};var _0x554330={};var _0x39277d;var _0x2f920f;return db['OpenchannelAccount'][_0x621b('0x6a')]({'where':{'id':_0x823c68[_0x621b('0x5e')]['id']}})['then'](handleEntityNotFound(_0x5a6154,null))[_0x621b('0x32')](function(_0x50529c){if(_0x50529c){_0x39277d=_0x50529c;_0x554330[_0x621b('0x40')]=_[_0x621b('0x41')](db['OpenchannelApplication'][_0x621b('0x3d')]);_0x554330[_0x621b('0x42')]=_[_0x621b('0x41')](_0x823c68[_0x621b('0x42')]);_0x554330[_0x621b('0x43')]=_[_0x621b('0x44')](_0x554330['model'],_0x554330['query']);_0x58f64c[_0x621b('0x46')]=_['intersection'](_0x554330[_0x621b('0x40')],qs[_0x621b('0x45')](_0x823c68[_0x621b('0x42')][_0x621b('0x45')]));_0x58f64c[_0x621b('0x46')]=_0x58f64c['attributes'][_0x621b('0x47')]?_0x58f64c[_0x621b('0x46')]:_0x554330[_0x621b('0x40')];_0x58f64c[_0x621b('0x49')]=qs[_0x621b('0x4a')](_0x823c68[_0x621b('0x42')][_0x621b('0x4a')]);_0x58f64c[_0x621b('0x4b')]=qs[_0x621b('0x43')](_[_0x621b('0x6b')](_0x823c68['query'],_0x554330[_0x621b('0x43')]));if(_0x823c68['query']['filter']){_0x58f64c[_0x621b('0x4b')]=_[_0x621b('0x4d')](_0x58f64c['where'],{'$or':_[_0x621b('0x3b')](_0x58f64c[_0x621b('0x46')],function(_0xc30427){var _0x24e010={};_0x24e010[_0xc30427]={'$like':'%'+_0x823c68[_0x621b('0x42')][_0x621b('0x65')]+'%'};return _0x24e010;})});}_0x58f64c=_[_0x621b('0x4d')]({},_0x58f64c,_0x823c68['options']);return _0x39277d[_0x621b('0xa7')](_0x58f64c);}})[_0x621b('0x32')](function(_0x34c95b){if(_0x34c95b){_0x2f920f=_0x34c95b[_0x621b('0x47')];if(!_0x823c68[_0x621b('0x42')][_0x621b('0x64')](_0x621b('0x48'))){_0x58f64c[_0x621b('0x2b')]=qs[_0x621b('0x2b')](_0x823c68[_0x621b('0x42')][_0x621b('0x2b')]);_0x58f64c['offset']=qs['offset'](_0x823c68['query'][_0x621b('0x2d')]);}return _0x39277d[_0x621b('0xa7')](_0x58f64c);}})[_0x621b('0x32')](function(_0x14f490){if(_0x14f490){return _0x14f490?{'count':_0x2f920f,'rows':_0x14f490}:null;}})[_0x621b('0x32')](respondWithResult(_0x5a6154,null))[_0x621b('0x52')](handleError(_0x5a6154,null));};exports['getInteractions']=function(_0x4cd220,_0x251c4d,_0x2ae604){var _0x280eec={'raw':![],'where':{}};var _0x2db15c={};var _0xb1d537={'count':0x0,'rows':[]};return db[_0x621b('0x3c')]['findOne']({'where':{'id':_0x4cd220[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x251c4d,null))[_0x621b('0x32')](function(_0x30059c){if(_0x30059c){_0x2db15c[_0x621b('0x40')]=_[_0x621b('0x41')](db[_0x621b('0x8e')][_0x621b('0x3d')]);_0x2db15c['query']=_[_0x621b('0x41')](_0x4cd220[_0x621b('0x42')]);_0x2db15c[_0x621b('0x43')]=_[_0x621b('0x44')](_0x2db15c['model'],_0x2db15c['query']);_0x280eec[_0x621b('0x46')]=_[_0x621b('0x44')](_0x2db15c[_0x621b('0x40')],qs['fields'](_0x4cd220['query'][_0x621b('0x45')]));_0x280eec[_0x621b('0x46')]=_0x280eec[_0x621b('0x46')][_0x621b('0x47')]?_0x280eec[_0x621b('0x46')]:_0x2db15c[_0x621b('0x40')];if(!_0x4cd220[_0x621b('0x42')][_0x621b('0x64')](_0x621b('0x48'))){_0x280eec['limit']=qs[_0x621b('0x2b')](_0x4cd220['query'][_0x621b('0x2b')]);_0x280eec['offset']=qs[_0x621b('0x2d')](_0x4cd220[_0x621b('0x42')][_0x621b('0x2d')]);}_0x280eec['order']=qs['sort'](_0x4cd220[_0x621b('0x42')][_0x621b('0x4a')]);_0x280eec['where']=qs[_0x621b('0x43')](_[_0x621b('0x6b')](_0x4cd220[_0x621b('0x42')],_0x2db15c[_0x621b('0x43')]));_0x280eec[_0x621b('0x4b')][_0x621b('0x61')]=_0x30059c['id'];if(_0x4cd220['query'][_0x621b('0x65')]){_0x280eec[_0x621b('0x4b')]=_[_0x621b('0x4d')](_0x280eec[_0x621b('0x4b')],{'$or':_[_0x621b('0x3b')](_0x280eec[_0x621b('0x46')],function(_0x46987f){var _0x4699cb={};_0x4699cb[_0x46987f]={'$like':'%'+_0x4cd220[_0x621b('0x42')][_0x621b('0x65')]+'%'};return _0x4699cb;})});}_0x280eec=_[_0x621b('0x4d')]({},_0x280eec,_0x4cd220[_0x621b('0x53')]);return db[_0x621b('0x8e')]['count']({'where':_0x280eec[_0x621b('0x4b')]})['then'](function(_0x169566){_0xb1d537[_0x621b('0x2c')]=_0x169566;if(_0x4cd220[_0x621b('0x42')][_0x621b('0x4e')]){_0x280eec[_0x621b('0x4f')]=[{'model':db[_0x621b('0x6e')],'as':_0x621b('0xa8'),'required':![]},{'model':db[_0x621b('0x9d')],'as':_0x621b('0xa9'),'attributes':[_0x621b('0x37'),'fullname',_0x621b('0xaa')],'required':![]},{'model':db[_0x621b('0xab')],'as':_0x621b('0xac'),'attributes':['id','name',_0x621b('0xad')],'where':_0x4cd220[_0x621b('0x42')][_0x621b('0xae')]?{'id':_0x4cd220[_0x621b('0x42')]['tag']}:undefined,'required':_0x4cd220[_0x621b('0x42')][_0x621b('0xae')]?!![]:![]}];}return db[_0x621b('0x8e')][_0x621b('0x50')](_0x280eec);})[_0x621b('0x32')](function(_0x1a03d1){_0xb1d537['rows']=_0x1a03d1;return _0xb1d537;});}})[_0x621b('0x32')](respondWithFilteredResult(_0x251c4d,_0x280eec))['catch'](handleError(_0x251c4d,null));};exports[_0x621b('0xaf')]=function(_0x4ca588,_0x4e178c,_0x534c8e){return db[_0x621b('0x3c')][_0x621b('0x54')]({'where':{'id':_0x4ca588['params']['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x4e178c,null))[_0x621b('0x32')](function(_0x4d10d6){if(_0x4d10d6){return _0x4d10d6[_0x621b('0xaf')](_0x4ca588[_0x621b('0x5d')][_0x621b('0x67')],_[_0x621b('0xb0')](_0x4ca588[_0x621b('0x5d')],[_0x621b('0x67'),'id'])||{})[_0x621b('0x91')](function(_0x2f8693){for(var _0x7cc27e=0x0;_0x7cc27e<_0x4ca588[_0x621b('0x5d')][_0x621b('0x67')]['length'];_0x7cc27e+=0x1){socket[_0x621b('0xb1')]('userOpenchannelAccount:save',{'UserId':Number(_0x4ca588['body'][_0x621b('0x67')][_0x7cc27e]),'OpenchannelAccountId':Number(_0x4ca588[_0x621b('0x5e')]['id'])});}return _0x2f8693;});}})[_0x621b('0x32')](respondWithResult(_0x4e178c,null))['catch'](handleError(_0x4e178c,null));};exports['removeAgents']=function(_0x5a7f7a,_0x450b32,_0x5c5b00){return db['OpenchannelAccount'][_0x621b('0x54')]({'where':{'id':_0x5a7f7a[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x450b32,null))[_0x621b('0x32')](function(_0x577325){if(_0x577325){return _0x577325[_0x621b('0xb2')](_0x5a7f7a[_0x621b('0x42')][_0x621b('0x67')])[_0x621b('0x32')](function(){if(_[_0x621b('0xb3')](_0x5a7f7a[_0x621b('0x42')][_0x621b('0x67')])){for(var _0x4d56fe=0x0;_0x4d56fe<_0x5a7f7a[_0x621b('0x42')]['ids']['length'];_0x4d56fe+=0x1){socket['emit'](_0x621b('0xb4'),{'UserId':Number(_0x5a7f7a[_0x621b('0x42')]['ids'][_0x4d56fe]),'OpenchannelAccountId':Number(_0x5a7f7a[_0x621b('0x5e')]['id'])});}}else{socket[_0x621b('0xb1')](_0x621b('0xb4'),{'UserId':Number(_0x5a7f7a[_0x621b('0x42')][_0x621b('0x67')]),'OpenchannelAccountId':Number(_0x5a7f7a[_0x621b('0x5e')]['id'])});}});}})[_0x621b('0x32')](respondWithStatusCode(_0x450b32,null))[_0x621b('0x52')](handleError(_0x450b32,null));};exports['getAgents']=function(_0x5e8d42,_0x59c096,_0x24a6da){var _0x3e4a94={};var _0x4fbe2b={};var _0x5af633;var _0x228509;return db[_0x621b('0x3c')][_0x621b('0x6a')]({'where':{'id':_0x5e8d42[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x59c096,null))[_0x621b('0x32')](function(_0xc5b1b3){if(_0xc5b1b3){_0x5af633=_0xc5b1b3;_0x4fbe2b[_0x621b('0x40')]=_[_0x621b('0x41')](db[_0x621b('0x9d')]['rawAttributes']);_0x4fbe2b[_0x621b('0x42')]=_[_0x621b('0x41')](_0x5e8d42[_0x621b('0x42')]);_0x4fbe2b[_0x621b('0x43')]=_[_0x621b('0x44')](_0x4fbe2b[_0x621b('0x40')],_0x4fbe2b[_0x621b('0x42')]);_0x3e4a94[_0x621b('0x46')]=_[_0x621b('0x44')](_0x4fbe2b[_0x621b('0x40')],qs['fields'](_0x5e8d42['query'][_0x621b('0x45')]));_0x3e4a94[_0x621b('0x46')]=_0x3e4a94[_0x621b('0x46')][_0x621b('0x47')]?_0x3e4a94[_0x621b('0x46')]:_0x4fbe2b[_0x621b('0x40')];_0x3e4a94[_0x621b('0x49')]=qs['sort'](_0x5e8d42[_0x621b('0x42')][_0x621b('0x4a')]);_0x3e4a94['where']=qs[_0x621b('0x43')](_[_0x621b('0x6b')](_0x5e8d42[_0x621b('0x42')],_0x4fbe2b['filters']));if(_0x5e8d42[_0x621b('0x42')][_0x621b('0x65')]){_0x3e4a94[_0x621b('0x4b')]=_[_0x621b('0x4d')](_0x3e4a94['where'],{'$or':_[_0x621b('0x3b')](_0x3e4a94['attributes'],function(_0x119972){var _0xe62f9={};_0xe62f9[_0x119972]={'$like':'%'+_0x5e8d42[_0x621b('0x42')]['filter']+'%'};return _0xe62f9;})});}_0x3e4a94=_['merge']({},_0x3e4a94,_0x5e8d42[_0x621b('0x53')]);return _0x5af633['getAgents'](_0x3e4a94);}})[_0x621b('0x32')](function(_0x2b73d6){if(_0x2b73d6){_0x228509=_0x2b73d6['length'];if(!_0x5e8d42['query'][_0x621b('0x64')](_0x621b('0x48'))){_0x3e4a94['limit']=qs[_0x621b('0x2b')](_0x5e8d42[_0x621b('0x42')][_0x621b('0x2b')]);_0x3e4a94[_0x621b('0x2d')]=qs[_0x621b('0x2d')](_0x5e8d42['query'][_0x621b('0x2d')]);}return _0x5af633[_0x621b('0xb5')](_0x3e4a94);}})[_0x621b('0x32')](function(_0xe4c607){if(_0xe4c607){return _0xe4c607?{'count':_0x228509,'rows':_0xe4c607}:null;}})[_0x621b('0x32')](respondWithResult(_0x59c096,null))[_0x621b('0x52')](handleError(_0x59c096,null));};exports['send']=function(_0x1bb48a,_0x7c8b71,_0x5d51dd){var _0x321960,_0x3dd346,_0x4f2fa6;if(_[_0x621b('0x75')](_0x1bb48a[_0x621b('0x5d')]['body'])||_0x1bb48a['body'][_0x621b('0x5d')]===''){throw new db[(_0x621b('0x6f'))][(_0x621b('0x70'))](_0x621b('0x77'));}if(_[_0x621b('0x75')](_0x1bb48a[_0x621b('0x5d')]['to'])){}_0x321960=_0x1bb48a[_0x621b('0x5d')]['to'];return db['OpenchannelAccount'][_0x621b('0x6a')]({'where':{'id':_0x1bb48a['params']['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x7c8b71,null))[_0x621b('0x32')](function(_0x311ea2){if(_0x311ea2){return db[_0x621b('0x3c')][_0x621b('0x54')]({'where':{'id':_0x311ea2['id']},'include':[{'model':db[_0x621b('0x7c')],'as':'List','include':[{'model':db[_0x621b('0x6e')],'as':'Contacts','where':{[_0x311ea2[_0x621b('0x78')]]:_0x321960},'limit':0x1,'order':[[_0x621b('0x72'),'DESC']]}]}]})[_0x621b('0x32')](handleEntityNotFound(_0x7c8b71,null))['then'](function(_0x21a77f){if(_0x21a77f&&_0x21a77f[_0x621b('0x7d')]){_0x3dd346=_0x21a77f['get']({'plain':!![]});if(_0x3dd346['List']&&_0x3dd346[_0x621b('0x7d')]['Contacts'][_0x621b('0x47')]){return _0x3dd346['List'][_0x621b('0x7e')][0x0];}return db[_0x621b('0x6e')]['create'](_['defaults'](_0x1bb48a['body'],{'firstName':_0x321960,[_0x21a77f[_0x621b('0x78')]]:_0x321960,'phone':_0x321960,'ListId':_0x3dd346[_0x621b('0x89')]}));}})[_0x621b('0x32')](handleEntityNotFound(_0x7c8b71,null))['then'](function(_0x1fd4e7){if(_0x1fd4e7){_0x4f2fa6=_0x1fd4e7;return db[_0x621b('0x8e')][_0x621b('0x54')]({'where':{'ContactId':_0x4f2fa6['id'],'closed':![],'OpenchannelAccountId':_0x3dd346['id']}})[_0x621b('0x32')](function(_0x28b5c7){if(_0x28b5c7){return[_0x28b5c7,![]];}return db[_0x621b('0x8e')][_0x621b('0x5b')]({'UserId':_0x1bb48a[_0x621b('0x55')]['id'],'ContactId':_0x4f2fa6['id'],'OpenchannelAccountId':_0x3dd346['id'],'lastMsgDirection':_0x621b('0xb6'),'Messages':[_['merge'](_0x1bb48a[_0x621b('0x5d')],{'read':![],'body':_0x1bb48a['body'][_0x621b('0x5d')],'OpenchannelAccountId':_0x3dd346['id'],'UserId':_0x1bb48a['user']['id'],'ContactId':_0x4f2fa6['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0x621b('0xb7')}]})[_0x621b('0x32')](function(_0x2389c0){return[_0x2389c0,!![]];});});}})[_0x621b('0x91')](function(_0x1c67d7,_0x16552c){if(_0x16552c){return _0x1c67d7;}return db[_0x621b('0x9a')][_0x621b('0x5b')](_[_0x621b('0x4d')](_0x1bb48a[_0x621b('0x5d')],{'read':![],'body':_0x1bb48a[_0x621b('0x5d')]['body'],'OpenchannelAccountId':_0x3dd346['id'],'OpenchannelInteractionId':_0x1c67d7['id'],'UserId':_0x1bb48a['user']['id'],'ContactId':_0x4f2fa6['id']}))[_0x621b('0x32')](function(_0x4e1c82){_0x1c67d7[_0x621b('0xb8')]['Messages']=[];_0x1c67d7['dataValues'][_0x621b('0xb7')]['push'](_0x4e1c82[_0x621b('0xb8')]);return _0x1c67d7;});});}})[_0x621b('0x32')](respondWithResult(_0x7c8b71,null))[_0x621b('0x52')](handleError(_0x7c8b71,null));};
\ No newline at end of file
+var _0xe482=['contact','firstName','lastName','threadId','OpenchannelInteraction','ContactId','spread','messageId','created','interaction','autoclose','push','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','addApplications','bulkCreate','getApplications','getInteractions','User','fullname','internal','Tags','color','tag','addAgents','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./openchannelAccount.socket','register','jayson/promise','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','get','OpenchannelAccounts','UserProfileResource','destroy','end','stack','name','send','Pause','mandatoryDispositionPause','OpenchannelAccount','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','findAll','rows','show','params','rawAttributes','length','includeAll','include','merge','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','nolimit','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','openchannel','CmContact','Sequelize','ValidationError','difference','createdAt','CompanyId','ListId','isNil','from','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','CmList','List','Contacts','DESC','OpenchannelApplication','Applications','account','applications','list','orderBy','priority'];(function(_0x1ca3d2,_0x239901){var _0x124421=function(_0xd23740){while(--_0xd23740){_0x1ca3d2['push'](_0x1ca3d2['shift']());}};_0x124421(++_0x239901);}(_0xe482,0x1a3));var _0x2e48=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0xe482[_0x3511d3];return _0x5d6321;};'use strict';var emlformat=require(_0x2e48('0x0'));var rimraf=require(_0x2e48('0x1'));var zipdir=require(_0x2e48('0x2'));var jsonpatch=require(_0x2e48('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2e48('0x4'));var Mustache=require(_0x2e48('0x5'));var util=require(_0x2e48('0x6'));var path=require(_0x2e48('0x7'));var sox=require(_0x2e48('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2e48('0x9'));var _=require(_0x2e48('0xa'));var squel=require(_0x2e48('0xb'));var crypto=require(_0x2e48('0xc'));var jsforce=require(_0x2e48('0xd'));var deskjs=require(_0x2e48('0xe'));var toCsv=require(_0x2e48('0xf'));var querystring=require(_0x2e48('0x10'));var Papa=require(_0x2e48('0x11'));var Redis=require(_0x2e48('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2e48('0x13'));var hardwareService=require(_0x2e48('0x14'));var logger=require('../../config/logger')(_0x2e48('0x15'));var utils=require(_0x2e48('0x16'));var config=require(_0x2e48('0x17'));var licenseUtil=require(_0x2e48('0x18'));var db=require('../../mysqldb')['db'];config[_0x2e48('0x19')]=_[_0x2e48('0x1a')](config[_0x2e48('0x19')],{'host':_0x2e48('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x2e48('0x1c'))[_0x2e48('0x1d')](socket);var jayson=require(_0x2e48('0x1e'));var client=jayson[_0x2e48('0x1f')][_0x2e48('0x20')]({'port':0x232c});var client9002=jayson[_0x2e48('0x1f')][_0x2e48('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x219843,_0x2ae242,_0x37b780,_0x3a8cc5){return new BPromise(function(_0x49bfd4,_0xecbeb4){var _0x412d25=_0x3a8cc5||client;return _0x412d25[_0x2e48('0x21')](_0x219843,_0x37b780)[_0x2e48('0x22')](function(_0x3a09a4){logger[_0x2e48('0x23')](_0x2e48('0x24'),_0x2ae242,'request\x20sent');logger[_0x2e48('0x25')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x2ae242,_0x2e48('0x26'),JSON[_0x2e48('0x27')](_0x3a09a4));if(_0x3a09a4[_0x2e48('0x28')]){if(_0x3a09a4[_0x2e48('0x28')][_0x2e48('0x29')]===0x1f4){logger[_0x2e48('0x28')]('OpenchannelAccount,\x20%s,\x20%s',_0x2ae242,_0x3a09a4[_0x2e48('0x28')][_0x2e48('0x2a')]);return _0xecbeb4(_0x3a09a4[_0x2e48('0x28')][_0x2e48('0x2a')]);}logger['error'](_0x2e48('0x24'),_0x2ae242,_0x3a09a4[_0x2e48('0x28')]['message']);return _0x49bfd4(_0x3a09a4[_0x2e48('0x28')][_0x2e48('0x2a')]);}else{logger[_0x2e48('0x23')]('OpenchannelAccount,\x20%s,\x20%s',_0x2ae242,_0x2e48('0x26'));_0x49bfd4(_0x3a09a4[_0x2e48('0x2b')][_0x2e48('0x2a')]);}})['catch'](function(_0x5bf24e){logger[_0x2e48('0x28')]('OpenchannelAccount,\x20%s,\x20%s',_0x2ae242,_0x5bf24e);_0xecbeb4(_0x5bf24e);});});}function respondWithStatusCode(_0xd246ca,_0x32219a){_0x32219a=_0x32219a||0xcc;return function(_0x31a176){if(_0x31a176){return _0xd246ca[_0x2e48('0x2c')](_0x32219a);}return _0xd246ca[_0x2e48('0x2d')](_0x32219a)['end']();};}function respondWithResult(_0x234285,_0x1ad466){_0x1ad466=_0x1ad466||0xc8;return function(_0x1d4e38){if(_0x1d4e38){return _0x234285[_0x2e48('0x2d')](_0x1ad466)[_0x2e48('0x2e')](_0x1d4e38);}};}function respondWithFilteredResult(_0x2dd05f,_0x25c145){return function(_0xe2594e){if(_0xe2594e){var _0x415f20=typeof _0x25c145[_0x2e48('0x2f')]==='undefined'&&typeof _0x25c145['limit']===_0x2e48('0x30');var _0x4f10f4=_0xe2594e[_0x2e48('0x31')];var _0x242695=_0x415f20?0x0:_0x25c145[_0x2e48('0x2f')];var _0x21fab4=_0x415f20?_0xe2594e[_0x2e48('0x31')]:_0x25c145[_0x2e48('0x2f')]+_0x25c145[_0x2e48('0x32')];var _0x35152a;if(_0x21fab4>=_0x4f10f4){_0x21fab4=_0x4f10f4;_0x35152a=0xc8;}else{_0x35152a=0xce;}_0x2dd05f[_0x2e48('0x2d')](_0x35152a);return _0x2dd05f[_0x2e48('0x33')](_0x2e48('0x34'),_0x242695+'-'+_0x21fab4+'/'+_0x4f10f4)[_0x2e48('0x2e')](_0xe2594e);}return null;};}function patchUpdates(_0x2461aa){return function(_0x4ec4e4){try{jsonpatch['apply'](_0x4ec4e4,_0x2461aa,!![]);}catch(_0x1dd8f4){return BPromise[_0x2e48('0x35')](_0x1dd8f4);}return _0x4ec4e4[_0x2e48('0x36')]();};}function saveUpdates(_0x94e8d6,_0x3993fe){return function(_0x4c7853){if(_0x4c7853){return _0x4c7853[_0x2e48('0x37')](_0x94e8d6)[_0x2e48('0x22')](function(_0x1f4452){return _0x1f4452;});}return null;};}function removeEntity(_0x3409dc,_0x18d402){return function(_0x179f23){if(_0x179f23){return _0x179f23['destroy']()[_0x2e48('0x22')](function(){var _0x42ca86=_0x179f23[_0x2e48('0x38')]({'plain':!![]});var _0x39c924=_0x2e48('0x39');return db[_0x2e48('0x3a')][_0x2e48('0x3b')]({'where':{'type':_0x39c924,'resourceId':_0x42ca86['id']}})['then'](function(){return _0x179f23;});})[_0x2e48('0x22')](function(){_0x3409dc[_0x2e48('0x2d')](0xcc)[_0x2e48('0x3c')]();});}};}function handleEntityNotFound(_0xc3413f,_0x3906f3){return function(_0x326c2a){if(!_0x326c2a){_0xc3413f[_0x2e48('0x2c')](0x194);}return _0x326c2a;};}function handleError(_0x517fa2,_0x4c07b1){_0x4c07b1=_0x4c07b1||0x1f4;return function(_0x2ac86b){logger[_0x2e48('0x28')](_0x2ac86b[_0x2e48('0x3d')]);if(_0x2ac86b['name']){delete _0x2ac86b[_0x2e48('0x3e')];}_0x517fa2[_0x2e48('0x2d')](_0x4c07b1)[_0x2e48('0x3f')](_0x2ac86b);};}exports['index']=function(_0x1768f2,_0x50bce0){var _0x3113fa={'include':[{'model':db[_0x2e48('0x40')],'as':_0x2e48('0x41')}]},_0x2d4ae8={},_0x43953c={'count':0x0,'rows':[]};var _0x30a368=_['map'](db[_0x2e48('0x42')]['rawAttributes'],function(_0x5f2e0f){return{'name':_0x5f2e0f[_0x2e48('0x43')],'type':_0x5f2e0f[_0x2e48('0x44')][_0x2e48('0x45')]};});_0x2d4ae8[_0x2e48('0x46')]=_[_0x2e48('0x47')](_0x30a368,'name');_0x2d4ae8[_0x2e48('0x48')]=_[_0x2e48('0x49')](_0x1768f2['query']);_0x2d4ae8[_0x2e48('0x4a')]=_[_0x2e48('0x4b')](_0x2d4ae8[_0x2e48('0x46')],_0x2d4ae8[_0x2e48('0x48')]);_0x3113fa[_0x2e48('0x4c')]=_['intersection'](_0x2d4ae8[_0x2e48('0x46')],qs[_0x2e48('0x4d')](_0x1768f2[_0x2e48('0x48')][_0x2e48('0x4d')]));_0x3113fa[_0x2e48('0x4c')]=_0x3113fa['attributes']['length']?_0x3113fa['attributes']:_0x2d4ae8['model'];if(!_0x1768f2[_0x2e48('0x48')][_0x2e48('0x4e')]('nolimit')){_0x3113fa[_0x2e48('0x32')]=qs[_0x2e48('0x32')](_0x1768f2[_0x2e48('0x48')][_0x2e48('0x32')]);_0x3113fa[_0x2e48('0x2f')]=qs[_0x2e48('0x2f')](_0x1768f2['query'][_0x2e48('0x2f')]);}_0x3113fa[_0x2e48('0x4f')]=qs['sort'](_0x1768f2[_0x2e48('0x48')][_0x2e48('0x50')]);_0x3113fa[_0x2e48('0x51')]=qs[_0x2e48('0x4a')](_[_0x2e48('0x52')](_0x1768f2[_0x2e48('0x48')],_0x2d4ae8[_0x2e48('0x4a')]),_0x30a368);if(_0x1768f2['query']['filter']){_0x3113fa[_0x2e48('0x51')]=_['merge'](_0x3113fa['where'],{'$or':_[_0x2e48('0x47')](_0x30a368,function(_0x3f9b66){if(_0x3f9b66[_0x2e48('0x44')]!==_0x2e48('0x53')){var _0x592bca={};_0x592bca[_0x3f9b66[_0x2e48('0x3e')]]={'$like':'%'+_0x1768f2['query'][_0x2e48('0x54')]+'%'};return _0x592bca;}})});}_0x3113fa=_['merge']({},_0x3113fa,_0x1768f2['options']);var _0xb50787={'where':_0x3113fa[_0x2e48('0x51')]};return db[_0x2e48('0x42')][_0x2e48('0x31')](_0xb50787)[_0x2e48('0x22')](function(_0x478b41){_0x43953c[_0x2e48('0x31')]=_0x478b41;if(_0x1768f2[_0x2e48('0x48')]['includeAll']){_0x3113fa['include']=[{'all':!![]}];}return db['OpenchannelAccount'][_0x2e48('0x55')](_0x3113fa);})[_0x2e48('0x22')](function(_0x59f7b9){_0x43953c[_0x2e48('0x56')]=_0x59f7b9;return _0x43953c;})['then'](respondWithFilteredResult(_0x50bce0,_0x3113fa))['catch'](handleError(_0x50bce0,null));};exports[_0x2e48('0x57')]=function(_0x1761c0,_0x194983){var _0x10c590={'raw':![],'where':{'id':_0x1761c0[_0x2e48('0x58')]['id']},'include':[{'model':db['Pause'],'as':_0x2e48('0x41')}]},_0x4510c5={};_0x4510c5[_0x2e48('0x46')]=_[_0x2e48('0x49')](db[_0x2e48('0x42')][_0x2e48('0x59')]);_0x4510c5[_0x2e48('0x48')]=_[_0x2e48('0x49')](_0x1761c0['query']);_0x4510c5[_0x2e48('0x4a')]=_['intersection'](_0x4510c5[_0x2e48('0x46')],_0x4510c5[_0x2e48('0x48')]);_0x10c590[_0x2e48('0x4c')]=_[_0x2e48('0x4b')](_0x4510c5[_0x2e48('0x46')],qs[_0x2e48('0x4d')](_0x1761c0[_0x2e48('0x48')][_0x2e48('0x4d')]));_0x10c590[_0x2e48('0x4c')]=_0x10c590['attributes'][_0x2e48('0x5a')]?_0x10c590['attributes']:_0x4510c5[_0x2e48('0x46')];if(_0x1761c0['query'][_0x2e48('0x5b')]){_0x10c590[_0x2e48('0x5c')]=[{'all':!![]}];}_0x10c590=_[_0x2e48('0x5d')]({},_0x10c590,_0x1761c0[_0x2e48('0x5e')]);return db[_0x2e48('0x42')][_0x2e48('0x5f')](_0x10c590)[_0x2e48('0x22')](handleEntityNotFound(_0x194983,null))['then'](respondWithResult(_0x194983,null))[_0x2e48('0x60')](handleError(_0x194983,null));};exports[_0x2e48('0x61')]=function(_0x591c92,_0x13bb6a){return db['OpenchannelAccount'][_0x2e48('0x61')](_0x591c92[_0x2e48('0x62')],{})[_0x2e48('0x22')](function(_0x1ef526){var _0x7952f9=_0x591c92[_0x2e48('0x63')][_0x2e48('0x38')]({'plain':!![]});if(!_0x7952f9)throw new Error(_0x2e48('0x64'));if(_0x7952f9[_0x2e48('0x65')]===_0x2e48('0x63')){var _0x565e81=_0x1ef526[_0x2e48('0x38')]({'plain':!![]});var _0x1e7431=_0x2e48('0x39');return db[_0x2e48('0x66')][_0x2e48('0x5f')]({'where':{'name':_0x1e7431,'userProfileId':_0x7952f9[_0x2e48('0x67')]},'raw':!![]})[_0x2e48('0x22')](function(_0x4d110a){if(_0x4d110a&&_0x4d110a['autoAssociation']===0x0){return db[_0x2e48('0x3a')][_0x2e48('0x61')]({'name':_0x565e81['name'],'resourceId':_0x565e81['id'],'type':_0x4d110a['name'],'sectionId':_0x4d110a['id']},{})[_0x2e48('0x22')](function(){return _0x1ef526;});}else{return _0x1ef526;}})[_0x2e48('0x60')](function(_0x99604a){logger[_0x2e48('0x28')](_0x2e48('0x68'),_0x99604a);throw _0x99604a;});}return _0x1ef526;})[_0x2e48('0x22')](respondWithResult(_0x13bb6a,0xc9))[_0x2e48('0x60')](handleError(_0x13bb6a,null));};exports[_0x2e48('0x37')]=function(_0x3e0032,_0x49c555){if(_0x3e0032[_0x2e48('0x62')]['id']){delete _0x3e0032[_0x2e48('0x62')]['id'];}return db[_0x2e48('0x42')][_0x2e48('0x5f')]({'where':{'id':_0x3e0032[_0x2e48('0x58')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x49c555,null))['then'](saveUpdates(_0x3e0032[_0x2e48('0x62')],null))[_0x2e48('0x22')](respondWithResult(_0x49c555,null))[_0x2e48('0x60')](handleError(_0x49c555,null));};exports[_0x2e48('0x3b')]=function(_0xb7d39c,_0x2ca844){return db[_0x2e48('0x42')][_0x2e48('0x5f')]({'where':{'id':_0xb7d39c[_0x2e48('0x58')]['id']}})['then'](handleEntityNotFound(_0x2ca844,null))[_0x2e48('0x22')](removeEntity(_0x2ca844,null))['catch'](handleError(_0x2ca844,null));};exports[_0x2e48('0x69')]=function(_0x198613,_0x7fcfec){return db[_0x2e48('0x42')][_0x2e48('0x69')]()['then'](respondWithResult(_0x7fcfec,null))[_0x2e48('0x60')](handleError(_0x7fcfec,null));};exports[_0x2e48('0x6a')]=function(_0x59fee,_0x2aa9e4,_0x5767ae){if(_0x59fee[_0x2e48('0x62')]['id']){delete _0x59fee[_0x2e48('0x62')]['id'];}return db[_0x2e48('0x42')][_0x2e48('0x5f')]({'where':{'id':_0x59fee['params']['id']}})['then'](handleEntityNotFound(_0x2aa9e4,null))[_0x2e48('0x22')](function(_0x57bd33){if(_0x57bd33){_0x59fee[_0x2e48('0x62')][_0x2e48('0x6b')]=_0x57bd33['id'];return db[_0x2e48('0x6c')]['create'](_0x59fee[_0x2e48('0x62')]);}})[_0x2e48('0x22')](respondWithResult(_0x2aa9e4,null))[_0x2e48('0x60')](handleError(_0x2aa9e4,null));};exports[_0x2e48('0x6d')]=function(_0x20924d,_0x3d133f,_0x4c1fca){var _0x26be64={'raw':![],'where':{}};var _0x2efbd3={};var _0x3d5af5={'count':0x0,'rows':[]};return db[_0x2e48('0x42')][_0x2e48('0x6e')]({'where':{'id':_0x20924d[_0x2e48('0x58')]['id']}})['then'](handleEntityNotFound(_0x3d133f,null))[_0x2e48('0x22')](function(_0x713172){if(_0x713172){_0x2efbd3[_0x2e48('0x46')]=_[_0x2e48('0x49')](db[_0x2e48('0x6c')][_0x2e48('0x59')]);_0x2efbd3[_0x2e48('0x48')]=_[_0x2e48('0x49')](_0x20924d['query']);_0x2efbd3['filters']=_[_0x2e48('0x4b')](_0x2efbd3['model'],_0x2efbd3[_0x2e48('0x48')]);_0x26be64[_0x2e48('0x4c')]=_['intersection'](_0x2efbd3['model'],qs[_0x2e48('0x4d')](_0x20924d['query'][_0x2e48('0x4d')]));_0x26be64[_0x2e48('0x4c')]=_0x26be64[_0x2e48('0x4c')][_0x2e48('0x5a')]?_0x26be64[_0x2e48('0x4c')]:_0x2efbd3['model'];if(!_0x20924d[_0x2e48('0x48')]['hasOwnProperty'](_0x2e48('0x6f'))){_0x26be64[_0x2e48('0x32')]=qs[_0x2e48('0x32')](_0x20924d['query'][_0x2e48('0x32')]);_0x26be64[_0x2e48('0x2f')]=qs['offset'](_0x20924d[_0x2e48('0x48')][_0x2e48('0x2f')]);}_0x26be64['order']=qs[_0x2e48('0x50')](_0x20924d[_0x2e48('0x48')][_0x2e48('0x50')]);_0x26be64['where']=qs[_0x2e48('0x4a')](_[_0x2e48('0x52')](_0x20924d[_0x2e48('0x48')],_0x2efbd3['filters']));_0x26be64['where'][_0x2e48('0x6b')]=_0x713172['id'];if(_0x20924d[_0x2e48('0x48')][_0x2e48('0x54')]){_0x26be64[_0x2e48('0x51')]=_[_0x2e48('0x5d')](_0x26be64['where'],{'$or':_[_0x2e48('0x47')](_0x26be64[_0x2e48('0x4c')],function(_0x152e55){var _0x2eb0cf={};_0x2eb0cf[_0x152e55]={'$like':'%'+_0x20924d[_0x2e48('0x48')]['filter']+'%'};return _0x2eb0cf;})});}_0x26be64=_['merge']({},_0x26be64,_0x20924d[_0x2e48('0x5e')]);return db[_0x2e48('0x6c')][_0x2e48('0x31')]({'where':_0x26be64[_0x2e48('0x51')]})[_0x2e48('0x22')](function(_0x2446b6){_0x3d5af5[_0x2e48('0x31')]=_0x2446b6;if(_0x20924d[_0x2e48('0x48')][_0x2e48('0x5b')]){_0x26be64['include']=[{'all':!![]}];}return db[_0x2e48('0x6c')]['findAll'](_0x26be64);})[_0x2e48('0x22')](function(_0x205fa4){_0x3d5af5[_0x2e48('0x56')]=_0x205fa4;return _0x3d5af5;});}})['then'](respondWithFilteredResult(_0x3d133f,_0x26be64))[_0x2e48('0x60')](handleError(_0x3d133f,null));};exports['removeDispositions']=function(_0x29c46c,_0x5888f3,_0x7f05da){return db['OpenchannelAccount'][_0x2e48('0x5f')]({'where':{'id':_0x29c46c['params']['id']}})[_0x2e48('0x22')](handleEntityNotFound(_0x5888f3,null))[_0x2e48('0x22')](function(_0x5cb774){if(_0x5cb774){return _0x5cb774[_0x2e48('0x70')](_0x29c46c[_0x2e48('0x48')][_0x2e48('0x71')]);}})[_0x2e48('0x22')](respondWithStatusCode(_0x5888f3,null))[_0x2e48('0x60')](handleError(_0x5888f3,null));};exports[_0x2e48('0x72')]=function(_0x3f4356,_0x32fcd4,_0x3eaf63){if(_0x3f4356[_0x2e48('0x62')]['id']){delete _0x3f4356[_0x2e48('0x62')]['id'];}return db[_0x2e48('0x42')]['find']({'where':{'id':_0x3f4356['params']['id']}})[_0x2e48('0x22')](handleEntityNotFound(_0x32fcd4,null))[_0x2e48('0x22')](function(_0x41b12a){if(_0x41b12a){_0x3f4356['body'][_0x2e48('0x6b')]=_0x41b12a['id'];return db[_0x2e48('0x73')][_0x2e48('0x61')](_0x3f4356['body']);}})[_0x2e48('0x22')](respondWithResult(_0x32fcd4,null))[_0x2e48('0x60')](handleError(_0x32fcd4,null));};exports[_0x2e48('0x74')]=function(_0x2e89fb,_0x3c7b34,_0x1046f1){var _0x3f6478={'raw':![],'where':{}};var _0x3ee7cf={};var _0x36117d={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0x2e48('0x6e')]({'where':{'id':_0x2e89fb[_0x2e48('0x58')]['id']}})[_0x2e48('0x22')](handleEntityNotFound(_0x3c7b34,null))['then'](function(_0x54f602){if(_0x54f602){_0x3ee7cf[_0x2e48('0x46')]=_['keys'](db[_0x2e48('0x73')][_0x2e48('0x59')]);_0x3ee7cf[_0x2e48('0x48')]=_[_0x2e48('0x49')](_0x2e89fb[_0x2e48('0x48')]);_0x3ee7cf[_0x2e48('0x4a')]=_[_0x2e48('0x4b')](_0x3ee7cf[_0x2e48('0x46')],_0x3ee7cf[_0x2e48('0x48')]);_0x3f6478[_0x2e48('0x4c')]=_[_0x2e48('0x4b')](_0x3ee7cf['model'],qs[_0x2e48('0x4d')](_0x2e89fb[_0x2e48('0x48')]['fields']));_0x3f6478['attributes']=_0x3f6478[_0x2e48('0x4c')][_0x2e48('0x5a')]?_0x3f6478[_0x2e48('0x4c')]:_0x3ee7cf[_0x2e48('0x46')];if(!_0x2e89fb[_0x2e48('0x48')]['hasOwnProperty'](_0x2e48('0x6f'))){_0x3f6478[_0x2e48('0x32')]=qs[_0x2e48('0x32')](_0x2e89fb['query'][_0x2e48('0x32')]);_0x3f6478['offset']=qs[_0x2e48('0x2f')](_0x2e89fb['query'][_0x2e48('0x2f')]);}_0x3f6478[_0x2e48('0x4f')]=qs[_0x2e48('0x50')](_0x2e89fb[_0x2e48('0x48')][_0x2e48('0x50')]);_0x3f6478['where']=qs['filters'](_['pick'](_0x2e89fb['query'],_0x3ee7cf[_0x2e48('0x4a')]));_0x3f6478[_0x2e48('0x51')][_0x2e48('0x6b')]=_0x54f602['id'];if(_0x2e89fb[_0x2e48('0x48')]['filter']){_0x3f6478[_0x2e48('0x51')]=_['merge'](_0x3f6478[_0x2e48('0x51')],{'$or':_['map'](_0x3f6478[_0x2e48('0x4c')],function(_0x179521){var _0x262ae4={};_0x262ae4[_0x179521]={'$like':'%'+_0x2e89fb[_0x2e48('0x48')][_0x2e48('0x54')]+'%'};return _0x262ae4;})});}_0x3f6478=_[_0x2e48('0x5d')]({},_0x3f6478,_0x2e89fb['options']);return db[_0x2e48('0x73')][_0x2e48('0x31')]({'where':_0x3f6478[_0x2e48('0x51')]})[_0x2e48('0x22')](function(_0x39a509){_0x36117d[_0x2e48('0x31')]=_0x39a509;if(_0x2e89fb[_0x2e48('0x48')][_0x2e48('0x5b')]){_0x3f6478[_0x2e48('0x5c')]=[{'all':!![]}];}return db[_0x2e48('0x73')][_0x2e48('0x55')](_0x3f6478);})[_0x2e48('0x22')](function(_0x4d612c){_0x36117d['rows']=_0x4d612c;return _0x36117d;});}})[_0x2e48('0x22')](respondWithFilteredResult(_0x3c7b34,_0x3f6478))[_0x2e48('0x60')](handleError(_0x3c7b34,null));};exports[_0x2e48('0x75')]=function(_0x1a4096,_0x33e142,_0x5862f3){return db['OpenchannelAccount'][_0x2e48('0x5f')]({'where':{'id':_0x1a4096['params']['id']}})[_0x2e48('0x22')](handleEntityNotFound(_0x33e142,null))[_0x2e48('0x22')](function(_0x565bdf){if(_0x565bdf){return _0x565bdf['removeAnswers'](_0x1a4096[_0x2e48('0x48')][_0x2e48('0x71')]);}})[_0x2e48('0x22')](respondWithStatusCode(_0x33e142,null))[_0x2e48('0x60')](handleError(_0x33e142,null));};exports[_0x2e48('0x76')]=function(_0x1f47dc,_0x567a9f,_0x214bec){var _0x4bb8db={'body':_0x1f47dc['body'],'channel':_0x2e48('0x77')};var _0x1462e0=[];var _0x506513=[];var _0x382e28={};var _0x21c6b7=![];return db[_0x2e48('0x78')][_0x2e48('0x69')]()[_0x2e48('0x22')](function(_0x1193d4){if(!_0x1193d4){throw new db[(_0x2e48('0x79'))][(_0x2e48('0x7a'))]('no\x20available\x20attributes');}_0x1462e0=_[_0x2e48('0x7b')](_[_0x2e48('0x49')](_0x1193d4),[_0x2e48('0x7c'),'updatedAt']);_0x506513=_[_0x2e48('0x7b')](_[_0x2e48('0x49')](_0x1193d4),[_0x2e48('0x7c'),'updatedAt',_0x2e48('0x7d'),_0x2e48('0x7e')]);if(_0x1f47dc['body']['id']){delete _0x1f47dc[_0x2e48('0x62')]['id'];}if(_[_0x2e48('0x7f')](_0x1f47dc['body'][_0x2e48('0x80')])){throw new db['Sequelize'][(_0x2e48('0x7a'))](_0x2e48('0x81'));}if(_[_0x2e48('0x7f')](_0x1f47dc[_0x2e48('0x62')][_0x2e48('0x62')])||_0x1f47dc[_0x2e48('0x62')][_0x2e48('0x62')]===''){throw new db[(_0x2e48('0x79'))][(_0x2e48('0x7a'))](_0x2e48('0x82'));}if(_[_0x2e48('0x7f')](_0x1f47dc[_0x2e48('0x62')][_0x2e48('0x83')])){throw new db[(_0x2e48('0x79'))][(_0x2e48('0x7a'))](_0x2e48('0x84')+_0x506513);}if(!_['includes'](_0x506513,_0x1f47dc[_0x2e48('0x62')][_0x2e48('0x83')])){throw new db[(_0x2e48('0x79'))][(_0x2e48('0x7a'))](_0x2e48('0x85')+_0x506513);}_0x382e28[_0x1f47dc[_0x2e48('0x62')][_0x2e48('0x83')]]=_0x1f47dc['body'][_0x2e48('0x80')];})['then'](function(){return db[_0x2e48('0x42')][_0x2e48('0x5f')]({'where':{'id':_0x1f47dc[_0x2e48('0x58')]['id']},'include':[{'model':db[_0x2e48('0x86')],'as':_0x2e48('0x87'),'include':[{'model':db[_0x2e48('0x78')],'as':_0x2e48('0x88'),'where':_0x382e28,'limit':0x1,'order':[['updatedAt',_0x2e48('0x89')]]}]},{'model':db[_0x2e48('0x8a')],'as':_0x2e48('0x8b')}]});})[_0x2e48('0x22')](handleEntityNotFound(_0x567a9f,null))[_0x2e48('0x22')](function(_0x2196bd){if(_0x2196bd&&_0x2196bd['List']){_0x4bb8db[_0x2e48('0x8c')]=_0x2196bd;_0x4bb8db[_0x2e48('0x8d')]=_0x2196bd[_0x2e48('0x8b')];_0x4bb8db[_0x2e48('0x8e')]=_0x2196bd[_0x2e48('0x87')];_0x4bb8db[_0x2e48('0x8d')]=_[_0x2e48('0x8f')](_0x4bb8db[_0x2e48('0x8d')],[_0x2e48('0x90')],['asc']);if(_0x4bb8db[_0x2e48('0x8c')][_0x2e48('0x8b')]){delete _0x4bb8db[_0x2e48('0x8c')][_0x2e48('0x8b')];}if(_0x4bb8db[_0x2e48('0x8c')][_0x2e48('0x87')]&&_0x4bb8db[_0x2e48('0x8c')]['List'][_0x2e48('0x88')][_0x2e48('0x5a')]){return _0x4bb8db[_0x2e48('0x8c')]['List'][_0x2e48('0x88')][0x0];}var _0x328b99=_[_0x2e48('0x1a')](_0x1f47dc['body'],{'firstName':_0x1f47dc[_0x2e48('0x62')][_0x2e48('0x80')],'ListId':_0x2196bd[_0x2e48('0x7e')]});_0x328b99[_0x1f47dc['body'][_0x2e48('0x83')]]=_0x1f47dc['body']['from'];return db[_0x2e48('0x78')][_0x2e48('0x61')](_0x328b99,{'fields':_0x1462e0,'raw':!![]});}})['then'](handleEntityNotFound(_0x567a9f,null))[_0x2e48('0x22')](function(_0x548899){_0x4bb8db[_0x2e48('0x91')]=_0x548899;if(_0x548899){var _0x57b214={'ContactId':_0x548899['id'],'OpenchannelAccountId':_0x1f47dc['params']['id'],'from':(_0x548899[_0x2e48('0x92')]||'')+'\x20'+(_0x548899[_0x2e48('0x93')]||'')};var _0x319c16={'OpenchannelAccountId':_0x1f47dc[_0x2e48('0x58')]['id'],'closed':![]};if(_0x1f47dc[_0x2e48('0x62')]['threadId']){_0x319c16[_0x2e48('0x94')]=_0x1f47dc[_0x2e48('0x62')]['threadId'];return db[_0x2e48('0x95')][_0x2e48('0x5f')]({'where':_0x319c16})[_0x2e48('0x22')](function(_0x25fdde){if(_0x25fdde){return[_0x25fdde,![]];}_0x57b214[_0x2e48('0x94')]=_0x1f47dc[_0x2e48('0x62')][_0x2e48('0x94')];_0x57b214['externalUrl']=_0x1f47dc['body']['externalUrl'];return db[_0x2e48('0x95')][_0x2e48('0x61')](_0x57b214)[_0x2e48('0x22')](function(_0x38f0d0){return[_0x38f0d0,!![]];});});}else{_0x319c16[_0x2e48('0x94')]=null;}_0x319c16[_0x2e48('0x96')]=_0x548899['id'];return db[_0x2e48('0x95')][_0x2e48('0x5f')]({'where':_0x319c16})[_0x2e48('0x22')](function(_0x49b7cb){if(_0x49b7cb){return[_0x49b7cb,![]];}return db[_0x2e48('0x95')][_0x2e48('0x61')](_0x57b214)[_0x2e48('0x22')](function(_0x4c2b6c){return[_0x4c2b6c,!![]];});});}})[_0x2e48('0x97')](function(_0x2f9074,_0x458459){if(_0x2f9074){_0x21c6b7=_0x458459;if(!_0x458459){var _0x1148f7={'from':(_0x4bb8db[_0x2e48('0x91')][_0x2e48('0x92')]||'')+'\x20'+(_0x4bb8db[_0x2e48('0x91')][_0x2e48('0x93')]||'')};if(_0x1f47dc[_0x2e48('0x62')]['threadId']&&_0x1f47dc[_0x2e48('0x62')][_0x2e48('0x98')]&&_0x1f47dc['body'][_0x2e48('0x94')]!=_0x1f47dc[_0x2e48('0x62')][_0x2e48('0x98')]){_0x1148f7[_0x2e48('0x94')]=_0x1f47dc[_0x2e48('0x62')][_0x2e48('0x98')];}return _0x2f9074[_0x2e48('0x37')](_0x1148f7);}else{return _0x2f9074;}}})[_0x2e48('0x22')](function(_0x3bb4eb){_0x4bb8db['interaction']=_0x3bb4eb[_0x2e48('0x38')]({'plain':!![]});_0x4bb8db['interaction'][_0x2e48('0x99')]=_0x21c6b7;if(_0x4bb8db[_0x2e48('0x9a')]['created']){if(_0x4bb8db[_0x2e48('0x8c')][_0x2e48('0x9b')]){_0x4bb8db[_0x2e48('0x8d')][_0x2e48('0x9c')]({'id':0x0,'priority':_0x4bb8db[_0x2e48('0x8d')][_0x2e48('0x5a')]+0x1,'app':'close','appdata':_0x2e48('0x9d'),'interval':_0x2e48('0x9e')});}}return db[_0x2e48('0x9f')][_0x2e48('0x61')]({'body':_0x1f47dc[_0x2e48('0x62')][_0x2e48('0x62')],'OpenchannelAccountId':_0x1f47dc[_0x2e48('0x58')]['id'],'OpenchannelInteractionId':_0x3bb4eb['id'],'direction':'in','ContactId':_0x4bb8db[_0x2e48('0x91')]['id'],'AttachmentId':_0x1f47dc[_0x2e48('0x62')][_0x2e48('0xa0')]});})[_0x2e48('0x22')](function(_0x11ff16){_0x4bb8db['message']=_0x11ff16;if(_0x4bb8db[_0x2e48('0x9a')][_0x2e48('0xa1')]){return db['User'][_0x2e48('0x5f')]({'attributes':['id',_0x2e48('0x3e')],'where':{'id':_0x4bb8db[_0x2e48('0x9a')][_0x2e48('0xa1')]}})[_0x2e48('0x22')](function(_0x10ac40){if(_0x10ac40){_0x4bb8db[_0x2e48('0x8d')][_0x2e48('0xa2')]({'id':0x0,'priority':0x0,'app':_0x2e48('0xa3'),'appdata':_0x10ac40[_0x2e48('0x3e')]+','+(_0x4bb8db[_0x2e48('0x8c')][_0x2e48('0xa4')]||0xa),'interval':_0x2e48('0x9e')});_0x4bb8db[_0x2e48('0xa5')]=![];}return respondWithRpcPromise(_0x2e48('0xa6'),'startRouting',_0x4bb8db);});}return respondWithRpcPromise(_0x2e48('0xa6'),_0x2e48('0xa7'),_0x4bb8db);})['then'](function(_0x35447d){respondWithRpcPromise('EventManager',_0x2e48('0xa8'),{'event':_0x2e48('0x76'),'message':_0x35447d},client9002);return _0x35447d;})[_0x2e48('0x22')](respondWithResult(_0x567a9f,null))['catch'](handleError(_0x567a9f,null));};exports[_0x2e48('0xa9')]=function(_0x44b012,_0x72b839,_0x4020c3){return db['OpenchannelAccount']['findOne']({'where':{'id':_0x44b012[_0x2e48('0x58')]['id']}})[_0x2e48('0x22')](handleEntityNotFound(_0x72b839,null))['then'](function(_0x293e6a){if(_0x293e6a){return db['sequelize']['transaction'](function(_0x322ba1){return db[_0x2e48('0x8a')]['destroy']({'where':{'OpenchannelAccountId':_0x44b012['params']['id']},'transaction':_0x322ba1})[_0x2e48('0x22')](function(_0x3c9a0a){var _0x5243b9=_[_0x2e48('0x47')](_0x44b012[_0x2e48('0x62')],function(_0x12637e){_0x12637e[_0x2e48('0x6b')]=_0x44b012['params']['id'];return _0x12637e;});return db[_0x2e48('0x8a')][_0x2e48('0xaa')](_0x5243b9,{'transaction':_0x322ba1});});})[_0x2e48('0x22')](function(){return db[_0x2e48('0x8a')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x44b012[_0x2e48('0x58')]['id']},'order':_0x2e48('0x90')});});}})['then'](respondWithResult(_0x72b839,null))[_0x2e48('0x60')](handleError(_0x72b839,null));};exports[_0x2e48('0xab')]=function(_0x10ea3c,_0xfdd346,_0x35189){var _0x5dc8b0={};var _0x180f41={};var _0x340bb7;var _0x1448d0;return db[_0x2e48('0x42')][_0x2e48('0x6e')]({'where':{'id':_0x10ea3c[_0x2e48('0x58')]['id']}})['then'](handleEntityNotFound(_0xfdd346,null))['then'](function(_0x487627){if(_0x487627){_0x340bb7=_0x487627;_0x180f41['model']=_['keys'](db[_0x2e48('0x8a')][_0x2e48('0x59')]);_0x180f41[_0x2e48('0x48')]=_['keys'](_0x10ea3c[_0x2e48('0x48')]);_0x180f41[_0x2e48('0x4a')]=_[_0x2e48('0x4b')](_0x180f41['model'],_0x180f41[_0x2e48('0x48')]);_0x5dc8b0[_0x2e48('0x4c')]=_[_0x2e48('0x4b')](_0x180f41['model'],qs['fields'](_0x10ea3c[_0x2e48('0x48')]['fields']));_0x5dc8b0[_0x2e48('0x4c')]=_0x5dc8b0['attributes'][_0x2e48('0x5a')]?_0x5dc8b0[_0x2e48('0x4c')]:_0x180f41['model'];_0x5dc8b0[_0x2e48('0x4f')]=qs[_0x2e48('0x50')](_0x10ea3c['query'][_0x2e48('0x50')]);_0x5dc8b0[_0x2e48('0x51')]=qs[_0x2e48('0x4a')](_[_0x2e48('0x52')](_0x10ea3c['query'],_0x180f41[_0x2e48('0x4a')]));if(_0x10ea3c['query']['filter']){_0x5dc8b0[_0x2e48('0x51')]=_[_0x2e48('0x5d')](_0x5dc8b0['where'],{'$or':_[_0x2e48('0x47')](_0x5dc8b0[_0x2e48('0x4c')],function(_0x31eb72){var _0x4f3088={};_0x4f3088[_0x31eb72]={'$like':'%'+_0x10ea3c[_0x2e48('0x48')]['filter']+'%'};return _0x4f3088;})});}_0x5dc8b0=_[_0x2e48('0x5d')]({},_0x5dc8b0,_0x10ea3c[_0x2e48('0x5e')]);return _0x340bb7[_0x2e48('0xab')](_0x5dc8b0);}})[_0x2e48('0x22')](function(_0x27452d){if(_0x27452d){_0x1448d0=_0x27452d[_0x2e48('0x5a')];if(!_0x10ea3c[_0x2e48('0x48')][_0x2e48('0x4e')]('nolimit')){_0x5dc8b0['limit']=qs[_0x2e48('0x32')](_0x10ea3c[_0x2e48('0x48')][_0x2e48('0x32')]);_0x5dc8b0[_0x2e48('0x2f')]=qs[_0x2e48('0x2f')](_0x10ea3c[_0x2e48('0x48')][_0x2e48('0x2f')]);}return _0x340bb7[_0x2e48('0xab')](_0x5dc8b0);}})[_0x2e48('0x22')](function(_0x5db060){if(_0x5db060){return _0x5db060?{'count':_0x1448d0,'rows':_0x5db060}:null;}})[_0x2e48('0x22')](respondWithResult(_0xfdd346,null))['catch'](handleError(_0xfdd346,null));};exports[_0x2e48('0xac')]=function(_0x3893f4,_0x36f33c,_0x4c496b){var _0x380ff3={'raw':![],'where':{}};var _0x3d4afe={};var _0x1b823b={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x3893f4[_0x2e48('0x58')]['id']}})[_0x2e48('0x22')](handleEntityNotFound(_0x36f33c,null))[_0x2e48('0x22')](function(_0x1e9cf3){if(_0x1e9cf3){_0x3d4afe[_0x2e48('0x46')]=_[_0x2e48('0x49')](db['OpenchannelInteraction'][_0x2e48('0x59')]);_0x3d4afe['query']=_[_0x2e48('0x49')](_0x3893f4[_0x2e48('0x48')]);_0x3d4afe[_0x2e48('0x4a')]=_['intersection'](_0x3d4afe[_0x2e48('0x46')],_0x3d4afe[_0x2e48('0x48')]);_0x380ff3['attributes']=_[_0x2e48('0x4b')](_0x3d4afe[_0x2e48('0x46')],qs[_0x2e48('0x4d')](_0x3893f4[_0x2e48('0x48')]['fields']));_0x380ff3['attributes']=_0x380ff3['attributes'][_0x2e48('0x5a')]?_0x380ff3[_0x2e48('0x4c')]:_0x3d4afe[_0x2e48('0x46')];if(!_0x3893f4['query'][_0x2e48('0x4e')]('nolimit')){_0x380ff3['limit']=qs['limit'](_0x3893f4['query'][_0x2e48('0x32')]);_0x380ff3['offset']=qs[_0x2e48('0x2f')](_0x3893f4['query'][_0x2e48('0x2f')]);}_0x380ff3[_0x2e48('0x4f')]=qs[_0x2e48('0x50')](_0x3893f4[_0x2e48('0x48')]['sort']);_0x380ff3[_0x2e48('0x51')]=qs[_0x2e48('0x4a')](_[_0x2e48('0x52')](_0x3893f4[_0x2e48('0x48')],_0x3d4afe[_0x2e48('0x4a')]));_0x380ff3['where']['OpenchannelAccountId']=_0x1e9cf3['id'];if(_0x3893f4['query']['filter']){_0x380ff3[_0x2e48('0x51')]=_[_0x2e48('0x5d')](_0x380ff3[_0x2e48('0x51')],{'$or':_[_0x2e48('0x47')](_0x380ff3['attributes'],function(_0x37110e){var _0x52227e={};_0x52227e[_0x37110e]={'$like':'%'+_0x3893f4[_0x2e48('0x48')][_0x2e48('0x54')]+'%'};return _0x52227e;})});}_0x380ff3=_[_0x2e48('0x5d')]({},_0x380ff3,_0x3893f4[_0x2e48('0x5e')]);return db[_0x2e48('0x95')][_0x2e48('0x31')]({'where':_0x380ff3[_0x2e48('0x51')]})[_0x2e48('0x22')](function(_0x595470){_0x1b823b['count']=_0x595470;if(_0x3893f4['query'][_0x2e48('0x5b')]){_0x380ff3['include']=[{'model':db[_0x2e48('0x78')],'as':'Contact','required':![]},{'model':db[_0x2e48('0xad')],'as':'Owner','attributes':[_0x2e48('0x3e'),_0x2e48('0xae'),_0x2e48('0xaf')],'required':![]},{'model':db['Tag'],'as':_0x2e48('0xb0'),'attributes':['id',_0x2e48('0x3e'),_0x2e48('0xb1')],'where':_0x3893f4['query'][_0x2e48('0xb2')]?{'id':_0x3893f4[_0x2e48('0x48')][_0x2e48('0xb2')]}:undefined,'required':_0x3893f4['query'][_0x2e48('0xb2')]?!![]:![]}];}return db[_0x2e48('0x95')]['findAll'](_0x380ff3);})['then'](function(_0x4f741d){_0x1b823b[_0x2e48('0x56')]=_0x4f741d;return _0x1b823b;});}})[_0x2e48('0x22')](respondWithFilteredResult(_0x36f33c,_0x380ff3))[_0x2e48('0x60')](handleError(_0x36f33c,null));};exports[_0x2e48('0xb3')]=function(_0x25d7e6,_0x2f4059,_0x3ba646){return db[_0x2e48('0x42')][_0x2e48('0x5f')]({'where':{'id':_0x25d7e6[_0x2e48('0x58')]['id']}})[_0x2e48('0x22')](handleEntityNotFound(_0x2f4059,null))[_0x2e48('0x22')](function(_0x522890){if(_0x522890){return _0x522890[_0x2e48('0xb3')](_0x25d7e6['body']['ids'],_['omit'](_0x25d7e6[_0x2e48('0x62')],[_0x2e48('0x71'),'id'])||{})['spread'](function(_0x219896){for(var _0x4c6d73=0x0;_0x4c6d73<_0x25d7e6[_0x2e48('0x62')][_0x2e48('0x71')][_0x2e48('0x5a')];_0x4c6d73+=0x1){socket[_0x2e48('0xb4')](_0x2e48('0xb5'),{'UserId':Number(_0x25d7e6[_0x2e48('0x62')]['ids'][_0x4c6d73]),'OpenchannelAccountId':Number(_0x25d7e6['params']['id'])});}return _0x219896;});}})['then'](respondWithResult(_0x2f4059,null))[_0x2e48('0x60')](handleError(_0x2f4059,null));};exports[_0x2e48('0xb6')]=function(_0x59b8a7,_0x17a3e8,_0x1fd6d2){return db[_0x2e48('0x42')][_0x2e48('0x5f')]({'where':{'id':_0x59b8a7[_0x2e48('0x58')]['id']}})['then'](handleEntityNotFound(_0x17a3e8,null))['then'](function(_0x43f1d0){if(_0x43f1d0){return _0x43f1d0['removeAgents'](_0x59b8a7[_0x2e48('0x48')][_0x2e48('0x71')])[_0x2e48('0x22')](function(){if(_[_0x2e48('0xb7')](_0x59b8a7[_0x2e48('0x48')][_0x2e48('0x71')])){for(var _0xa6b998=0x0;_0xa6b998<_0x59b8a7['query']['ids']['length'];_0xa6b998+=0x1){socket[_0x2e48('0xb4')](_0x2e48('0xb8'),{'UserId':Number(_0x59b8a7[_0x2e48('0x48')][_0x2e48('0x71')][_0xa6b998]),'OpenchannelAccountId':Number(_0x59b8a7['params']['id'])});}}else{socket[_0x2e48('0xb4')]('userOpenchannelAccount:remove',{'UserId':Number(_0x59b8a7['query']['ids']),'OpenchannelAccountId':Number(_0x59b8a7[_0x2e48('0x58')]['id'])});}});}})[_0x2e48('0x22')](respondWithStatusCode(_0x17a3e8,null))[_0x2e48('0x60')](handleError(_0x17a3e8,null));};exports['getAgents']=function(_0x2eb492,_0x3661a3,_0x20a09c){var _0x3f3bc6={};var _0x156330={};var _0x4a8ba2;var _0x4e708c;return db[_0x2e48('0x42')][_0x2e48('0x6e')]({'where':{'id':_0x2eb492[_0x2e48('0x58')]['id']}})[_0x2e48('0x22')](handleEntityNotFound(_0x3661a3,null))['then'](function(_0x351f60){if(_0x351f60){_0x4a8ba2=_0x351f60;_0x156330[_0x2e48('0x46')]=_[_0x2e48('0x49')](db[_0x2e48('0xad')][_0x2e48('0x59')]);_0x156330[_0x2e48('0x48')]=_[_0x2e48('0x49')](_0x2eb492[_0x2e48('0x48')]);_0x156330[_0x2e48('0x4a')]=_['intersection'](_0x156330[_0x2e48('0x46')],_0x156330[_0x2e48('0x48')]);_0x3f3bc6['attributes']=_[_0x2e48('0x4b')](_0x156330[_0x2e48('0x46')],qs[_0x2e48('0x4d')](_0x2eb492[_0x2e48('0x48')][_0x2e48('0x4d')]));_0x3f3bc6['attributes']=_0x3f3bc6['attributes'][_0x2e48('0x5a')]?_0x3f3bc6[_0x2e48('0x4c')]:_0x156330['model'];_0x3f3bc6['order']=qs[_0x2e48('0x50')](_0x2eb492[_0x2e48('0x48')][_0x2e48('0x50')]);_0x3f3bc6['where']=qs['filters'](_[_0x2e48('0x52')](_0x2eb492[_0x2e48('0x48')],_0x156330[_0x2e48('0x4a')]));if(_0x2eb492[_0x2e48('0x48')][_0x2e48('0x54')]){_0x3f3bc6['where']=_[_0x2e48('0x5d')](_0x3f3bc6[_0x2e48('0x51')],{'$or':_[_0x2e48('0x47')](_0x3f3bc6[_0x2e48('0x4c')],function(_0x3dbe21){var _0x139ac4={};_0x139ac4[_0x3dbe21]={'$like':'%'+_0x2eb492[_0x2e48('0x48')]['filter']+'%'};return _0x139ac4;})});}_0x3f3bc6=_['merge']({},_0x3f3bc6,_0x2eb492[_0x2e48('0x5e')]);return _0x4a8ba2[_0x2e48('0xb9')](_0x3f3bc6);}})['then'](function(_0x1e513e){if(_0x1e513e){_0x4e708c=_0x1e513e[_0x2e48('0x5a')];if(!_0x2eb492['query'][_0x2e48('0x4e')](_0x2e48('0x6f'))){_0x3f3bc6[_0x2e48('0x32')]=qs['limit'](_0x2eb492[_0x2e48('0x48')][_0x2e48('0x32')]);_0x3f3bc6[_0x2e48('0x2f')]=qs[_0x2e48('0x2f')](_0x2eb492[_0x2e48('0x48')][_0x2e48('0x2f')]);}return _0x4a8ba2[_0x2e48('0xb9')](_0x3f3bc6);}})[_0x2e48('0x22')](function(_0x297f28){if(_0x297f28){return _0x297f28?{'count':_0x4e708c,'rows':_0x297f28}:null;}})[_0x2e48('0x22')](respondWithResult(_0x3661a3,null))[_0x2e48('0x60')](handleError(_0x3661a3,null));};exports['send']=function(_0xd92dd7,_0x13165d,_0xf7ce66){var _0x4e07c3,_0x118bdc,_0x177f4c;if(_[_0x2e48('0x7f')](_0xd92dd7[_0x2e48('0x62')][_0x2e48('0x62')])||_0xd92dd7[_0x2e48('0x62')][_0x2e48('0x62')]===''){throw new db['Sequelize'][(_0x2e48('0x7a'))](_0x2e48('0x82'));}if(_[_0x2e48('0x7f')](_0xd92dd7['body']['to'])){}_0x4e07c3=_0xd92dd7['body']['to'];return db[_0x2e48('0x42')]['findOne']({'where':{'id':_0xd92dd7[_0x2e48('0x58')]['id']}})[_0x2e48('0x22')](handleEntityNotFound(_0x13165d,null))[_0x2e48('0x22')](function(_0x4dd3fd){if(_0x4dd3fd){return db['OpenchannelAccount'][_0x2e48('0x5f')]({'where':{'id':_0x4dd3fd['id']},'include':[{'model':db[_0x2e48('0x86')],'as':_0x2e48('0x87'),'include':[{'model':db[_0x2e48('0x78')],'as':_0x2e48('0x88'),'where':{[_0x4dd3fd[_0x2e48('0x83')]]:_0x4e07c3},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0x2e48('0x22')](handleEntityNotFound(_0x13165d,null))[_0x2e48('0x22')](function(_0x61e764){if(_0x61e764&&_0x61e764[_0x2e48('0x87')]){_0x118bdc=_0x61e764['get']({'plain':!![]});if(_0x118bdc['List']&&_0x118bdc[_0x2e48('0x87')][_0x2e48('0x88')][_0x2e48('0x5a')]){return _0x118bdc[_0x2e48('0x87')][_0x2e48('0x88')][0x0];}return db[_0x2e48('0x78')]['create'](_['defaults'](_0xd92dd7[_0x2e48('0x62')],{'firstName':_0x4e07c3,[_0x61e764[_0x2e48('0x83')]]:_0x4e07c3,'phone':_0x4e07c3,'ListId':_0x118bdc[_0x2e48('0x7e')]}));}})['then'](handleEntityNotFound(_0x13165d,null))[_0x2e48('0x22')](function(_0x26c74d){if(_0x26c74d){_0x177f4c=_0x26c74d;return db[_0x2e48('0x95')][_0x2e48('0x5f')]({'where':{'ContactId':_0x177f4c['id'],'closed':![],'OpenchannelAccountId':_0x118bdc['id']}})[_0x2e48('0x22')](function(_0x2d026c){if(_0x2d026c){return[_0x2d026c,![]];}return db[_0x2e48('0x95')]['create']({'UserId':_0xd92dd7[_0x2e48('0x63')]['id'],'ContactId':_0x177f4c['id'],'OpenchannelAccountId':_0x118bdc['id'],'lastMsgDirection':'out','Messages':[_['merge'](_0xd92dd7['body'],{'read':![],'body':_0xd92dd7[_0x2e48('0x62')][_0x2e48('0x62')],'OpenchannelAccountId':_0x118bdc['id'],'UserId':_0xd92dd7[_0x2e48('0x63')]['id'],'ContactId':_0x177f4c['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0x2e48('0xba')}]})[_0x2e48('0x22')](function(_0x40b123){return[_0x40b123,!![]];});});}})[_0x2e48('0x97')](function(_0x997af,_0x2869ca){if(_0x2869ca){return _0x997af;}return db[_0x2e48('0x9f')][_0x2e48('0x61')](_[_0x2e48('0x5d')](_0xd92dd7['body'],{'read':![],'body':_0xd92dd7['body']['body'],'OpenchannelAccountId':_0x118bdc['id'],'OpenchannelInteractionId':_0x997af['id'],'UserId':_0xd92dd7[_0x2e48('0x63')]['id'],'ContactId':_0x177f4c['id']}))['then'](function(_0xdca56c){_0x997af[_0x2e48('0xbb')][_0x2e48('0xba')]=[];_0x997af[_0x2e48('0xbb')][_0x2e48('0xba')][_0x2e48('0x9c')](_0xdca56c[_0x2e48('0xbb')]);return _0x997af;});});}})[_0x2e48('0x22')](respondWithResult(_0x13165d,null))[_0x2e48('0x60')](handleError(_0x13165d,null));};
\ No newline at end of file
index 3608c61..44eead9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13f6=['save','update','remove','emit','hasOwnProperty','events','../../mysqldb'];(function(_0x17214a,_0x5dede8){var _0x1903db=function(_0x110712){while(--_0x110712){_0x17214a['push'](_0x17214a['shift']());}};_0x1903db(++_0x5dede8);}(_0x13f6,0x124));var _0x613f=function(_0x58a440,_0x2b62a9){_0x58a440=_0x58a440-0x0;var _0x40ff4b=_0x13f6[_0x58a440];return _0x40ff4b;};'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 _0xf109=['OpenchannelAccount','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x565aa4,_0x92b82){var _0x1dbc52=function(_0x59d66d){while(--_0x59d66d){_0x565aa4['push'](_0x565aa4['shift']());}};_0x1dbc52(++_0x92b82);}(_0xf109,0xce));var _0x9f10=function(_0x101e7b,_0x4ef05b){_0x101e7b=_0x101e7b-0x0;var _0x4995c0=_0xf109[_0x101e7b];return _0x4995c0;};'use strict';var EventEmitter=require(_0x9f10('0x0'));var OpenchannelAccount=require(_0x9f10('0x1'))['db'][_0x9f10('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x9f10('0x3')};function emitEvent(_0x74f517){return function(_0x74d0ee,_0x26f01c,_0x4027f4){OpenchannelAccountEvents[_0x9f10('0x4')](_0x74f517+':'+_0x74d0ee['id'],_0x74d0ee);OpenchannelAccountEvents[_0x9f10('0x4')](_0x74f517,_0x74d0ee);_0x4027f4(null);};}for(var e in events){if(events[_0x9f10('0x5')](e)){var event=events[e];OpenchannelAccount[_0x9f10('0x6')](e,emitEvent(event));}}module[_0x9f10('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
index 7dbe562..dc47bb5 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(_0xe6138e,_0x37312e){var _0x238b59=function(_0x8fadfe){while(--_0x8fadfe){_0xe6138e['push'](_0xe6138e['shift']());}};_0x238b59(++_0x37312e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa9e0[_0x484e36];return _0xafc85d;};'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(_0x13b7b5,_0x1e06aa){var _0x362645=function(_0xfefd4e){while(--_0xfefd4e){_0x13b7b5['push'](_0x13b7b5['shift']());}};_0x362645(++_0x1e06aa);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'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 42b1d5f..dbcc162 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74f0=['message','result','catch','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2f5290,_0x3b4318){var _0x4d84d4=function(_0x19dae4){while(--_0x19dae4){_0x2f5290['push'](_0x2f5290['shift']());}};_0x4d84d4(++_0x3b4318);}(_0x74f0,0xf3));var _0x074f=function(_0x34ed48,_0x2cc995){_0x34ed48=_0x34ed48-0x0;var _0x37da5c=_0x74f0[_0x34ed48];return _0x37da5c;};'use strict';var _=require('lodash');var util=require(_0x074f('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x074f('0x1'));var fs=require('fs');var Redis=require(_0x074f('0x2'));var db=require(_0x074f('0x3'))['db'];var utils=require(_0x074f('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x074f('0x5'));var jayson=require(_0x074f('0x6'));var client=jayson[_0x074f('0x7')][_0x074f('0x8')]({'port':0x232a});config[_0x074f('0x9')]=_[_0x074f('0xa')](config[_0x074f('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x074f('0xb'))(new Redis(config[_0x074f('0x9')]));require('./openchannelAccount.socket')[_0x074f('0xc')](socket);function respondWithRpcPromise(_0x1a778a,_0x4337f9,_0x33d8c4){return new BPromise(function(_0x40179d,_0x4f37e1){return client['request'](_0x1a778a,_0x33d8c4)[_0x074f('0xd')](function(_0x41646d){logger[_0x074f('0xe')](_0x074f('0xf'),_0x4337f9,_0x074f('0x10'));logger[_0x074f('0x11')](_0x074f('0x12'),_0x4337f9,_0x074f('0x10'),JSON[_0x074f('0x13')](_0x41646d));if(_0x41646d['error']){if(_0x41646d[_0x074f('0x14')]['code']===0x1f4){logger[_0x074f('0x14')](_0x074f('0xf'),_0x4337f9,_0x41646d[_0x074f('0x14')][_0x074f('0x15')]);return _0x4f37e1(_0x41646d[_0x074f('0x14')][_0x074f('0x15')]);}logger[_0x074f('0x14')](_0x074f('0xf'),_0x4337f9,_0x41646d[_0x074f('0x14')][_0x074f('0x15')]);return _0x40179d(_0x41646d[_0x074f('0x14')]['message']);}else{logger[_0x074f('0xe')](_0x074f('0xf'),_0x4337f9,_0x074f('0x10'));_0x40179d(_0x41646d[_0x074f('0x16')][_0x074f('0x15')]);}})[_0x074f('0x17')](function(_0x548aab){logger['error'](_0x074f('0xf'),_0x4337f9,_0x548aab);_0x4f37e1(_0x548aab);});});}
\ No newline at end of file
+var _0x9c2c=['defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','request','then','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','ioredis','../../config/utils','../../config/logger','jayson/promise','http','redis'];(function(_0x906575,_0x36eda6){var _0x2ca509=function(_0x5ad5d6){while(--_0x5ad5d6){_0x906575['push'](_0x906575['shift']());}};_0x2ca509(++_0x36eda6);}(_0x9c2c,0x1c0));var _0xc9c2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9c2c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc9c2('0x0'));var util=require(_0xc9c2('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc9c2('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xc9c2('0x3'));var logger=require(_0xc9c2('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc9c2('0x5'));var client=jayson['client'][_0xc9c2('0x6')]({'port':0x232a});config[_0xc9c2('0x7')]=_[_0xc9c2('0x8')](config[_0xc9c2('0x7')],{'host':_0xc9c2('0x9'),'port':0x18eb});var socket=require(_0xc9c2('0xa'))(new Redis(config[_0xc9c2('0x7')]));require(_0xc9c2('0xb'))[_0xc9c2('0xc')](socket);function respondWithRpcPromise(_0x53e18d,_0x342609,_0x530f6a){return new BPromise(function(_0x46e650,_0x3e5847){return client[_0xc9c2('0xd')](_0x53e18d,_0x530f6a)[_0xc9c2('0xe')](function(_0x5894a4){logger['info'](_0xc9c2('0xf'),_0x342609,_0xc9c2('0x10'));logger['debug'](_0xc9c2('0x11'),_0x342609,_0xc9c2('0x10'),JSON[_0xc9c2('0x12')](_0x5894a4));if(_0x5894a4[_0xc9c2('0x13')]){if(_0x5894a4[_0xc9c2('0x13')][_0xc9c2('0x14')]===0x1f4){logger[_0xc9c2('0x13')](_0xc9c2('0xf'),_0x342609,_0x5894a4[_0xc9c2('0x13')][_0xc9c2('0x15')]);return _0x3e5847(_0x5894a4[_0xc9c2('0x13')][_0xc9c2('0x15')]);}logger['error'](_0xc9c2('0xf'),_0x342609,_0x5894a4[_0xc9c2('0x13')][_0xc9c2('0x15')]);return _0x46e650(_0x5894a4[_0xc9c2('0x13')][_0xc9c2('0x15')]);}else{logger['info'](_0xc9c2('0xf'),_0x342609,_0xc9c2('0x10'));_0x46e650(_0x5894a4[_0xc9c2('0x16')]['message']);}})[_0xc9c2('0x17')](function(_0x7de09c){logger[_0xc9c2('0x13')]('OpenchannelAccount,\x20%s,\x20%s',_0x342609,_0x7de09c);_0x3e5847(_0x7de09c);});});}
\ No newline at end of file
index e967c44..0d22e99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c42=['remove','update','emit','removeListener','register','length','save'];(function(_0x1153ff,_0x2bb354){var _0xbc230a=function(_0x179812){while(--_0x179812){_0x1153ff['push'](_0x1153ff['shift']());}};_0xbc230a(++_0x2bb354);}(_0x1c42,0x13a));var _0x21c4=function(_0x203216,_0x3cce8a){_0x203216=_0x203216-0x0;var _0x35faf8=_0x1c42[_0x203216];return _0x35faf8;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0x21c4('0x0'),_0x21c4('0x1'),_0x21c4('0x2')];function createListener(_0x558257,_0x27cb4a){return function(_0x40bc3e){_0x27cb4a[_0x21c4('0x3')](_0x558257,_0x40bc3e);};}function removeListener(_0xd7340,_0x435179){return function(){OpenchannelAccountEvents[_0x21c4('0x4')](_0xd7340,_0x435179);};}exports[_0x21c4('0x5')]=function(_0x8d4312){for(var _0x4fc4da=0x0,_0x247ec9=events[_0x21c4('0x6')];_0x4fc4da<_0x247ec9;_0x4fc4da++){var _0x54b2ea=events[_0x4fc4da];var _0x184e75=createListener('openchannelAccount:'+_0x54b2ea,_0x8d4312);OpenchannelAccountEvents['on'](_0x54b2ea,_0x184e75);}};
\ No newline at end of file
+var _0x847d=['length','openchannelAccount:','save','remove','update','emit','removeListener','register'];(function(_0x52dbd5,_0x493a12){var _0x5570ff=function(_0x363e32){while(--_0x363e32){_0x52dbd5['push'](_0x52dbd5['shift']());}};_0x5570ff(++_0x493a12);}(_0x847d,0x14a));var _0xd847=function(_0x2ff238,_0x1811d2){_0x2ff238=_0x2ff238-0x0;var _0x204a56=_0x847d[_0x2ff238];return _0x204a56;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0xd847('0x0'),_0xd847('0x1'),_0xd847('0x2')];function createListener(_0x4f2500,_0x202b1c){return function(_0x4a85d8){_0x202b1c[_0xd847('0x3')](_0x4f2500,_0x4a85d8);};}function removeListener(_0x18051f,_0x5258c0){return function(){OpenchannelAccountEvents[_0xd847('0x4')](_0x18051f,_0x5258c0);};}exports[_0xd847('0x5')]=function(_0x375a88){for(var _0x13d8d4=0x0,_0x5f3349=events[_0xd847('0x6')];_0x13d8d4<_0x5f3349;_0x13d8d4++){var _0x19fdb5=events[_0x13d8d4];var _0x2bb22b=createListener(_0xd847('0x7')+_0x19fdb5,_0x375a88);OpenchannelAccountEvents['on'](_0x19fdb5,_0x2bb22b);}};
\ No newline at end of file
index aae486a..473915f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08c2=['isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get'];(function(_0x55a802,_0x10ab3a){var _0x1a0461=function(_0x43d162){while(--_0x43d162){_0x55a802['push'](_0x55a802['shift']());}};_0x1a0461(++_0x10ab3a);}(_0x08c2,0x1e5));var _0x208c=function(_0x1dd2cc,_0x36ddfe){_0x1dd2cc=_0x1dd2cc-0x0;var _0x305d8e=_0x08c2[_0x1dd2cc];return _0x305d8e;};'use strict';var multer=require(_0x208c('0x0'));var util=require(_0x208c('0x1'));var path=require(_0x208c('0x2'));var timeout=require(_0x208c('0x3'));var express=require('express');var router=express[_0x208c('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x208c('0x5'));var config=require(_0x208c('0x6'));var controller=require(_0x208c('0x7'));router[_0x208c('0x8')]('/',auth[_0x208c('0x9')](),controller[_0x208c('0xa')]);router[_0x208c('0x8')](_0x208c('0xb'),auth[_0x208c('0x9')](),controller[_0x208c('0xc')]);router[_0x208c('0xd')]('/',auth[_0x208c('0x9')](),controller[_0x208c('0xe')]);router[_0x208c('0xf')]('/:id',auth[_0x208c('0x9')](),controller[_0x208c('0x10')]);router[_0x208c('0x11')](_0x208c('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x208c('0x12')]=router;
\ No newline at end of file
+var _0x7656=['/:id','post','create','put','delete','destroy','exports','multer','connect-timeout','express','fs-extra','../../components/interaction/service','./openchannelApplication.controller','isAuthenticated','index'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x7656,0xac));var _0x6765=function(_0x3db741,_0x25144e){_0x3db741=_0x3db741-0x0;var _0x1f81b9=_0x7656[_0x3db741];return _0x1f81b9;};'use strict';var multer=require(_0x6765('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6765('0x1'));var express=require(_0x6765('0x2'));var router=express['Router']();var fs_extra=require(_0x6765('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x6765('0x4'));var config=require('../../config/environment');var controller=require(_0x6765('0x5'));router['get']('/',auth[_0x6765('0x6')](),controller[_0x6765('0x7')]);router['get'](_0x6765('0x8'),auth[_0x6765('0x6')](),controller['show']);router[_0x6765('0x9')]('/',auth[_0x6765('0x6')](),controller[_0x6765('0xa')]);router[_0x6765('0xb')](_0x6765('0x8'),auth[_0x6765('0x6')](),controller['update']);router[_0x6765('0xc')]('/:id',auth[_0x6765('0x6')](),controller[_0x6765('0xd')]);module[_0x6765('0xe')]=router;
\ No newline at end of file
index 5bbaba5..502386f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe404=['exports','INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x24cdd5,_0x4232a0){var _0x52a09e=function(_0x2599f4){while(--_0x2599f4){_0x24cdd5['push'](_0x24cdd5['shift']());}};_0x52a09e(++_0x4232a0);}(_0xe404,0x117));var _0x4e40=function(_0x202829,_0x2de9a2){_0x202829=_0x202829-0x0;var _0x4003f3=_0xe404[_0x202829];return _0x4003f3;};'use strict';var Sequelize=require(_0x4e40('0x0'));module[_0x4e40('0x1')]={'priority':{'type':Sequelize[_0x4e40('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x4e40('0x3')],'allowNull':![],'defaultValue':_0x4e40('0x4')},'appdata':{'type':Sequelize[_0x4e40('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x4e40('0x6')}};
\ No newline at end of file
+var _0x3e95=['*,*,*,*','sequelize','exports','INTEGER','noop','TEXT','STRING'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x3e95,0xe8));var _0x53e9=function(_0x250350,_0xa983d1){_0x250350=_0x250350-0x0;var _0x210910=_0x3e95[_0x250350];return _0x210910;};'use strict';var Sequelize=require(_0x53e9('0x0'));module[_0x53e9('0x1')]={'priority':{'type':Sequelize[_0x53e9('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x53e9('0x3')},'appdata':{'type':Sequelize[_0x53e9('0x4')]()},'description':{'type':Sequelize[_0x53e9('0x5')]},'interval':{'type':Sequelize[_0x53e9('0x5')],'defaultValue':_0x53e9('0x6')}};
\ No newline at end of file
index ccc028c..efadb41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5bd=['VIRTUAL','options','OpenchannelApplication','count','includeAll','include','findAll','rows','catch','params','find','create','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','limit','set','Content-Range','json','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x49a456,_0x76c6d6){var _0x5818aa=function(_0x327b84){while(--_0x327b84){_0x49a456['push'](_0x49a456['shift']());}};_0x5818aa(++_0x76c6d6);}(_0xc5bd,0x184));var _0xdc5b=function(_0x23b494,_0x3caa8b){_0x23b494=_0x23b494-0x0;var _0xf0b3fe=_0xc5bd[_0x23b494];return _0xf0b3fe;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdc5b('0x0'));var zipdir=require(_0xdc5b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdc5b('0x2'));var moment=require(_0xdc5b('0x3'));var BPromise=require(_0xdc5b('0x4'));var Mustache=require(_0xdc5b('0x5'));var util=require('util');var path=require('path');var sox=require(_0xdc5b('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdc5b('0x7'));var _=require(_0xdc5b('0x8'));var squel=require(_0xdc5b('0x9'));var crypto=require(_0xdc5b('0xa'));var jsforce=require(_0xdc5b('0xb'));var deskjs=require(_0xdc5b('0xc'));var toCsv=require('to-csv');var querystring=require(_0xdc5b('0xd'));var Papa=require(_0xdc5b('0xe'));var Redis=require('ioredis');var authService=require(_0xdc5b('0xf'));var qs=require(_0xdc5b('0x10'));var as=require(_0xdc5b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdc5b('0x12'))(_0xdc5b('0x13'));var utils=require(_0xdc5b('0x14'));var config=require(_0xdc5b('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xdc5b('0x16'))['db'];function respondWithStatusCode(_0x354141,_0x5d0867){_0x5d0867=_0x5d0867||0xcc;return function(_0x525601){if(_0x525601){return _0x354141['sendStatus'](_0x5d0867);}return _0x354141[_0xdc5b('0x17')](_0x5d0867)[_0xdc5b('0x18')]();};}function respondWithResult(_0x2bb8a5,_0x4f778a){_0x4f778a=_0x4f778a||0xc8;return function(_0x174754){if(_0x174754){return _0x2bb8a5[_0xdc5b('0x17')](_0x4f778a)['json'](_0x174754);}};}function respondWithFilteredResult(_0xe12104,_0x32bb19){return function(_0x4821e5){if(_0x4821e5){var _0x211e98=typeof _0x32bb19[_0xdc5b('0x19')]===_0xdc5b('0x1a')&&typeof _0x32bb19[_0xdc5b('0x1b')]===_0xdc5b('0x1a');var _0x3ae184=_0x4821e5['count'];var _0x402c64=_0x211e98?0x0:_0x32bb19[_0xdc5b('0x19')];var _0x2e792e=_0x211e98?_0x4821e5['count']:_0x32bb19[_0xdc5b('0x19')]+_0x32bb19['limit'];var _0x59f500;if(_0x2e792e>=_0x3ae184){_0x2e792e=_0x3ae184;_0x59f500=0xc8;}else{_0x59f500=0xce;}_0xe12104[_0xdc5b('0x17')](_0x59f500);return _0xe12104[_0xdc5b('0x1c')](_0xdc5b('0x1d'),_0x402c64+'-'+_0x2e792e+'/'+_0x3ae184)[_0xdc5b('0x1e')](_0x4821e5);}return null;};}function patchUpdates(_0x490aac){return function(_0x126bb0){try{jsonpatch['apply'](_0x126bb0,_0x490aac,!![]);}catch(_0x5883e8){return BPromise[_0xdc5b('0x1f')](_0x5883e8);}return _0x126bb0[_0xdc5b('0x20')]();};}function saveUpdates(_0x3c71a2,_0x3ffb3c){return function(_0x5607ba){if(_0x5607ba){return _0x5607ba[_0xdc5b('0x21')](_0x3c71a2)[_0xdc5b('0x22')](function(_0x416f9e){return _0x416f9e;});}return null;};}function removeEntity(_0x5f8832,_0x4ab8db){return function(_0xcc1637){if(_0xcc1637){return _0xcc1637[_0xdc5b('0x23')]()[_0xdc5b('0x22')](function(){_0x5f8832[_0xdc5b('0x17')](0xcc)[_0xdc5b('0x18')]();});}};}function handleEntityNotFound(_0x3ae4e4,_0x181dce){return function(_0x43fb13){if(!_0x43fb13){_0x3ae4e4[_0xdc5b('0x24')](0x194);}return _0x43fb13;};}function handleError(_0x23816c,_0x4ef813){_0x4ef813=_0x4ef813||0x1f4;return function(_0x2558dd){logger[_0xdc5b('0x25')](_0x2558dd[_0xdc5b('0x26')]);if(_0x2558dd[_0xdc5b('0x27')]){delete _0x2558dd[_0xdc5b('0x27')];}_0x23816c[_0xdc5b('0x17')](_0x4ef813)[_0xdc5b('0x28')](_0x2558dd);};}exports['index']=function(_0x221fcd,_0x5d457d){var _0x4c3ae={},_0x8bdf78={},_0x36ebce={'count':0x0,'rows':[]};var _0x307206=_[_0xdc5b('0x29')](db['OpenchannelApplication'][_0xdc5b('0x2a')],function(_0x4015dd){return{'name':_0x4015dd[_0xdc5b('0x2b')],'type':_0x4015dd[_0xdc5b('0x2c')][_0xdc5b('0x2d')]};});_0x8bdf78['model']=_['map'](_0x307206,_0xdc5b('0x27'));_0x8bdf78[_0xdc5b('0x2e')]=_[_0xdc5b('0x2f')](_0x221fcd[_0xdc5b('0x2e')]);_0x8bdf78[_0xdc5b('0x30')]=_[_0xdc5b('0x31')](_0x8bdf78[_0xdc5b('0x32')],_0x8bdf78['query']);_0x4c3ae[_0xdc5b('0x33')]=_['intersection'](_0x8bdf78[_0xdc5b('0x32')],qs[_0xdc5b('0x34')](_0x221fcd[_0xdc5b('0x2e')][_0xdc5b('0x34')]));_0x4c3ae['attributes']=_0x4c3ae[_0xdc5b('0x33')][_0xdc5b('0x35')]?_0x4c3ae[_0xdc5b('0x33')]:_0x8bdf78[_0xdc5b('0x32')];if(!_0x221fcd[_0xdc5b('0x2e')][_0xdc5b('0x36')](_0xdc5b('0x37'))){_0x4c3ae[_0xdc5b('0x1b')]=qs[_0xdc5b('0x1b')](_0x221fcd[_0xdc5b('0x2e')][_0xdc5b('0x1b')]);_0x4c3ae[_0xdc5b('0x19')]=qs['offset'](_0x221fcd[_0xdc5b('0x2e')]['offset']);}_0x4c3ae[_0xdc5b('0x38')]=qs[_0xdc5b('0x39')](_0x221fcd[_0xdc5b('0x2e')]['sort']);_0x4c3ae[_0xdc5b('0x3a')]=qs['filters'](_[_0xdc5b('0x3b')](_0x221fcd[_0xdc5b('0x2e')],_0x8bdf78[_0xdc5b('0x30')]),_0x307206);if(_0x221fcd['query'][_0xdc5b('0x3c')]){_0x4c3ae[_0xdc5b('0x3a')]=_[_0xdc5b('0x3d')](_0x4c3ae[_0xdc5b('0x3a')],{'$or':_[_0xdc5b('0x29')](_0x307206,function(_0x17d4ff){if(_0x17d4ff[_0xdc5b('0x2c')]!==_0xdc5b('0x3e')){var _0x401198={};_0x401198[_0x17d4ff['name']]={'$like':'%'+_0x221fcd['query'][_0xdc5b('0x3c')]+'%'};return _0x401198;}})});}_0x4c3ae=_[_0xdc5b('0x3d')]({},_0x4c3ae,_0x221fcd[_0xdc5b('0x3f')]);var _0x51a476={'where':_0x4c3ae[_0xdc5b('0x3a')]};return db[_0xdc5b('0x40')][_0xdc5b('0x41')](_0x51a476)[_0xdc5b('0x22')](function(_0x27dc4c){_0x36ebce['count']=_0x27dc4c;if(_0x221fcd[_0xdc5b('0x2e')][_0xdc5b('0x42')]){_0x4c3ae[_0xdc5b('0x43')]=[{'all':!![]}];}return db[_0xdc5b('0x40')][_0xdc5b('0x44')](_0x4c3ae);})[_0xdc5b('0x22')](function(_0x1d996b){_0x36ebce[_0xdc5b('0x45')]=_0x1d996b;return _0x36ebce;})[_0xdc5b('0x22')](respondWithFilteredResult(_0x5d457d,_0x4c3ae))[_0xdc5b('0x46')](handleError(_0x5d457d,null));};exports['show']=function(_0x5f48b1,_0x13239b){var _0x3b8e4a={'raw':!![],'where':{'id':_0x5f48b1[_0xdc5b('0x47')]['id']}},_0x355a81={};_0x355a81[_0xdc5b('0x32')]=_[_0xdc5b('0x2f')](db[_0xdc5b('0x40')][_0xdc5b('0x2a')]);_0x355a81[_0xdc5b('0x2e')]=_['keys'](_0x5f48b1[_0xdc5b('0x2e')]);_0x355a81[_0xdc5b('0x30')]=_[_0xdc5b('0x31')](_0x355a81['model'],_0x355a81[_0xdc5b('0x2e')]);_0x3b8e4a[_0xdc5b('0x33')]=_[_0xdc5b('0x31')](_0x355a81['model'],qs[_0xdc5b('0x34')](_0x5f48b1[_0xdc5b('0x2e')][_0xdc5b('0x34')]));_0x3b8e4a[_0xdc5b('0x33')]=_0x3b8e4a[_0xdc5b('0x33')]['length']?_0x3b8e4a[_0xdc5b('0x33')]:_0x355a81['model'];if(_0x5f48b1[_0xdc5b('0x2e')]['includeAll']){_0x3b8e4a['include']=[{'all':!![]}];}_0x3b8e4a=_[_0xdc5b('0x3d')]({},_0x3b8e4a,_0x5f48b1['options']);return db[_0xdc5b('0x40')][_0xdc5b('0x48')](_0x3b8e4a)[_0xdc5b('0x22')](handleEntityNotFound(_0x13239b,null))[_0xdc5b('0x22')](respondWithResult(_0x13239b,null))[_0xdc5b('0x46')](handleError(_0x13239b,null));};exports[_0xdc5b('0x49')]=function(_0x3dadb4,_0x3e6475){return db[_0xdc5b('0x40')]['create'](_0x3dadb4[_0xdc5b('0x4a')],{})[_0xdc5b('0x22')](respondWithResult(_0x3e6475,0xc9))['catch'](handleError(_0x3e6475,null));};exports[_0xdc5b('0x21')]=function(_0x4da6d8,_0x415048){if(_0x4da6d8['body']['id']){delete _0x4da6d8[_0xdc5b('0x4a')]['id'];}return db['OpenchannelApplication']['find']({'where':{'id':_0x4da6d8[_0xdc5b('0x47')]['id']}})['then'](handleEntityNotFound(_0x415048,null))['then'](saveUpdates(_0x4da6d8['body'],null))[_0xdc5b('0x22')](respondWithResult(_0x415048,null))[_0xdc5b('0x46')](handleError(_0x415048,null));};exports[_0xdc5b('0x23')]=function(_0x1a14b3,_0x28fcd8){return db[_0xdc5b('0x40')][_0xdc5b('0x48')]({'where':{'id':_0x1a14b3[_0xdc5b('0x47')]['id']}})['then'](handleEntityNotFound(_0x28fcd8,null))[_0xdc5b('0x22')](removeEntity(_0x28fcd8,null))[_0xdc5b('0x46')](handleError(_0x28fcd8,null));};
\ No newline at end of file
+var _0xe4f2=['findAll','catch','params','length','create','body','find','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','save','update','destroy','then','sendStatus','error','name','send','index','map','OpenchannelApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','includeAll','include'];(function(_0x53c140,_0x577300){var _0x5c079b=function(_0x357129){while(--_0x357129){_0x53c140['push'](_0x53c140['shift']());}};_0x5c079b(++_0x577300);}(_0xe4f2,0x179));var _0x2e4f=function(_0x2d1371,_0x43aef7){_0x2d1371=_0x2d1371-0x0;var _0xf17680=_0xe4f2[_0x2d1371];return _0xf17680;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2e4f('0x0'));var jsonpatch=require(_0x2e4f('0x1'));var rp=require(_0x2e4f('0x2'));var moment=require(_0x2e4f('0x3'));var BPromise=require(_0x2e4f('0x4'));var Mustache=require('mustache');var util=require(_0x2e4f('0x5'));var path=require(_0x2e4f('0x6'));var sox=require(_0x2e4f('0x7'));var csv=require(_0x2e4f('0x8'));var ejs=require(_0x2e4f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2e4f('0xa'));var squel=require(_0x2e4f('0xb'));var crypto=require('crypto');var jsforce=require(_0x2e4f('0xc'));var deskjs=require(_0x2e4f('0xd'));var toCsv=require(_0x2e4f('0x8'));var querystring=require(_0x2e4f('0xe'));var Papa=require(_0x2e4f('0xf'));var Redis=require(_0x2e4f('0x10'));var authService=require(_0x2e4f('0x11'));var qs=require(_0x2e4f('0x12'));var as=require(_0x2e4f('0x13'));var hardwareService=require(_0x2e4f('0x14'));var logger=require(_0x2e4f('0x15'))(_0x2e4f('0x16'));var utils=require(_0x2e4f('0x17'));var config=require(_0x2e4f('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x2e4f('0x19'))['db'];function respondWithStatusCode(_0x3b9d60,_0x2151dd){_0x2151dd=_0x2151dd||0xcc;return function(_0x25dcac){if(_0x25dcac){return _0x3b9d60['sendStatus'](_0x2151dd);}return _0x3b9d60[_0x2e4f('0x1a')](_0x2151dd)[_0x2e4f('0x1b')]();};}function respondWithResult(_0x32c583,_0x1fea4c){_0x1fea4c=_0x1fea4c||0xc8;return function(_0x90e648){if(_0x90e648){return _0x32c583[_0x2e4f('0x1a')](_0x1fea4c)[_0x2e4f('0x1c')](_0x90e648);}};}function respondWithFilteredResult(_0xf1eeb9,_0x485593){return function(_0x36cc44){if(_0x36cc44){var _0x3a8e1f=typeof _0x485593[_0x2e4f('0x1d')]===_0x2e4f('0x1e')&&typeof _0x485593[_0x2e4f('0x1f')]===_0x2e4f('0x1e');var _0x5eadbe=_0x36cc44['count'];var _0x5a7ae3=_0x3a8e1f?0x0:_0x485593[_0x2e4f('0x1d')];var _0x414287=_0x3a8e1f?_0x36cc44[_0x2e4f('0x20')]:_0x485593[_0x2e4f('0x1d')]+_0x485593[_0x2e4f('0x1f')];var _0x5496d4;if(_0x414287>=_0x5eadbe){_0x414287=_0x5eadbe;_0x5496d4=0xc8;}else{_0x5496d4=0xce;}_0xf1eeb9[_0x2e4f('0x1a')](_0x5496d4);return _0xf1eeb9[_0x2e4f('0x21')]('Content-Range',_0x5a7ae3+'-'+_0x414287+'/'+_0x5eadbe)[_0x2e4f('0x1c')](_0x36cc44);}return null;};}function patchUpdates(_0x18481f){return function(_0x3c95bb){try{jsonpatch[_0x2e4f('0x22')](_0x3c95bb,_0x18481f,!![]);}catch(_0x438ec1){return BPromise['reject'](_0x438ec1);}return _0x3c95bb[_0x2e4f('0x23')]();};}function saveUpdates(_0x1da02e,_0x372f68){return function(_0x4a3a7a){if(_0x4a3a7a){return _0x4a3a7a[_0x2e4f('0x24')](_0x1da02e)['then'](function(_0x3bae8c){return _0x3bae8c;});}return null;};}function removeEntity(_0x14145f,_0x540845){return function(_0x38ed8f){if(_0x38ed8f){return _0x38ed8f[_0x2e4f('0x25')]()[_0x2e4f('0x26')](function(){_0x14145f[_0x2e4f('0x1a')](0xcc)[_0x2e4f('0x1b')]();});}};}function handleEntityNotFound(_0x5465c3,_0x333fb2){return function(_0x27f4a1){if(!_0x27f4a1){_0x5465c3[_0x2e4f('0x27')](0x194);}return _0x27f4a1;};}function handleError(_0x255a89,_0x550312){_0x550312=_0x550312||0x1f4;return function(_0x34e0e4){logger[_0x2e4f('0x28')](_0x34e0e4['stack']);if(_0x34e0e4[_0x2e4f('0x29')]){delete _0x34e0e4[_0x2e4f('0x29')];}_0x255a89['status'](_0x550312)[_0x2e4f('0x2a')](_0x34e0e4);};}exports[_0x2e4f('0x2b')]=function(_0x51ac4d,_0x247a5b){var _0x16960e={},_0x450ba8={},_0x55c51d={'count':0x0,'rows':[]};var _0x18592b=_[_0x2e4f('0x2c')](db[_0x2e4f('0x2d')][_0x2e4f('0x2e')],function(_0x2ec4eb){return{'name':_0x2ec4eb[_0x2e4f('0x2f')],'type':_0x2ec4eb[_0x2e4f('0x30')][_0x2e4f('0x31')]};});_0x450ba8[_0x2e4f('0x32')]=_[_0x2e4f('0x2c')](_0x18592b,_0x2e4f('0x29'));_0x450ba8[_0x2e4f('0x33')]=_[_0x2e4f('0x34')](_0x51ac4d[_0x2e4f('0x33')]);_0x450ba8[_0x2e4f('0x35')]=_[_0x2e4f('0x36')](_0x450ba8[_0x2e4f('0x32')],_0x450ba8[_0x2e4f('0x33')]);_0x16960e[_0x2e4f('0x37')]=_[_0x2e4f('0x36')](_0x450ba8[_0x2e4f('0x32')],qs[_0x2e4f('0x38')](_0x51ac4d[_0x2e4f('0x33')][_0x2e4f('0x38')]));_0x16960e[_0x2e4f('0x37')]=_0x16960e[_0x2e4f('0x37')]['length']?_0x16960e[_0x2e4f('0x37')]:_0x450ba8[_0x2e4f('0x32')];if(!_0x51ac4d['query'][_0x2e4f('0x39')](_0x2e4f('0x3a'))){_0x16960e[_0x2e4f('0x1f')]=qs[_0x2e4f('0x1f')](_0x51ac4d['query']['limit']);_0x16960e[_0x2e4f('0x1d')]=qs[_0x2e4f('0x1d')](_0x51ac4d[_0x2e4f('0x33')][_0x2e4f('0x1d')]);}_0x16960e[_0x2e4f('0x3b')]=qs[_0x2e4f('0x3c')](_0x51ac4d['query'][_0x2e4f('0x3c')]);_0x16960e[_0x2e4f('0x3d')]=qs[_0x2e4f('0x35')](_[_0x2e4f('0x3e')](_0x51ac4d[_0x2e4f('0x33')],_0x450ba8['filters']),_0x18592b);if(_0x51ac4d[_0x2e4f('0x33')]['filter']){_0x16960e[_0x2e4f('0x3d')]=_[_0x2e4f('0x3f')](_0x16960e[_0x2e4f('0x3d')],{'$or':_['map'](_0x18592b,function(_0x36d528){if(_0x36d528[_0x2e4f('0x30')]!=='VIRTUAL'){var _0x289691={};_0x289691[_0x36d528[_0x2e4f('0x29')]]={'$like':'%'+_0x51ac4d[_0x2e4f('0x33')]['filter']+'%'};return _0x289691;}})});}_0x16960e=_[_0x2e4f('0x3f')]({},_0x16960e,_0x51ac4d[_0x2e4f('0x40')]);var _0x4763b5={'where':_0x16960e[_0x2e4f('0x3d')]};return db['OpenchannelApplication']['count'](_0x4763b5)[_0x2e4f('0x26')](function(_0x39ad86){_0x55c51d[_0x2e4f('0x20')]=_0x39ad86;if(_0x51ac4d[_0x2e4f('0x33')][_0x2e4f('0x41')]){_0x16960e[_0x2e4f('0x42')]=[{'all':!![]}];}return db[_0x2e4f('0x2d')][_0x2e4f('0x43')](_0x16960e);})[_0x2e4f('0x26')](function(_0x23d476){_0x55c51d['rows']=_0x23d476;return _0x55c51d;})[_0x2e4f('0x26')](respondWithFilteredResult(_0x247a5b,_0x16960e))[_0x2e4f('0x44')](handleError(_0x247a5b,null));};exports['show']=function(_0x4acaea,_0x1a8a06){var _0x9bcb67={'raw':!![],'where':{'id':_0x4acaea[_0x2e4f('0x45')]['id']}},_0x398c3b={};_0x398c3b['model']=_['keys'](db['OpenchannelApplication'][_0x2e4f('0x2e')]);_0x398c3b[_0x2e4f('0x33')]=_[_0x2e4f('0x34')](_0x4acaea[_0x2e4f('0x33')]);_0x398c3b[_0x2e4f('0x35')]=_[_0x2e4f('0x36')](_0x398c3b[_0x2e4f('0x32')],_0x398c3b[_0x2e4f('0x33')]);_0x9bcb67[_0x2e4f('0x37')]=_[_0x2e4f('0x36')](_0x398c3b[_0x2e4f('0x32')],qs[_0x2e4f('0x38')](_0x4acaea[_0x2e4f('0x33')][_0x2e4f('0x38')]));_0x9bcb67[_0x2e4f('0x37')]=_0x9bcb67[_0x2e4f('0x37')][_0x2e4f('0x46')]?_0x9bcb67[_0x2e4f('0x37')]:_0x398c3b[_0x2e4f('0x32')];if(_0x4acaea[_0x2e4f('0x33')]['includeAll']){_0x9bcb67[_0x2e4f('0x42')]=[{'all':!![]}];}_0x9bcb67=_[_0x2e4f('0x3f')]({},_0x9bcb67,_0x4acaea[_0x2e4f('0x40')]);return db[_0x2e4f('0x2d')]['find'](_0x9bcb67)[_0x2e4f('0x26')](handleEntityNotFound(_0x1a8a06,null))['then'](respondWithResult(_0x1a8a06,null))[_0x2e4f('0x44')](handleError(_0x1a8a06,null));};exports[_0x2e4f('0x47')]=function(_0x39817c,_0x38d8ce){return db[_0x2e4f('0x2d')][_0x2e4f('0x47')](_0x39817c[_0x2e4f('0x48')],{})[_0x2e4f('0x26')](respondWithResult(_0x38d8ce,0xc9))['catch'](handleError(_0x38d8ce,null));};exports[_0x2e4f('0x24')]=function(_0x1493ae,_0x4d2077){if(_0x1493ae['body']['id']){delete _0x1493ae[_0x2e4f('0x48')]['id'];}return db[_0x2e4f('0x2d')][_0x2e4f('0x49')]({'where':{'id':_0x1493ae[_0x2e4f('0x45')]['id']}})['then'](handleEntityNotFound(_0x4d2077,null))[_0x2e4f('0x26')](saveUpdates(_0x1493ae[_0x2e4f('0x48')],null))[_0x2e4f('0x26')](respondWithResult(_0x4d2077,null))[_0x2e4f('0x44')](handleError(_0x4d2077,null));};exports['destroy']=function(_0x354b48,_0x282d9){return db['OpenchannelApplication'][_0x2e4f('0x49')]({'where':{'id':_0x354b48[_0x2e4f('0x45')]['id']}})[_0x2e4f('0x26')](handleEntityNotFound(_0x282d9,null))[_0x2e4f('0x26')](removeEntity(_0x282d9,null))[_0x2e4f('0x44')](handleError(_0x282d9,null));};
\ No newline at end of file
index 92a976f..c654e3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc06d=['rimraf','./openchannelApplication.attributes','define','OpenchannelApplication','openchannel_applications','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x16337a,_0x4789a1){var _0x422365=function(_0x34f039){while(--_0x34f039){_0x16337a['push'](_0x16337a['shift']());}};_0x422365(++_0x4789a1);}(_0xc06d,0x1e5));var _0xdc06=function(_0x32e039,_0x5d3039){_0x32e039=_0x32e039-0x0;var _0x34f410=_0xc06d[_0x32e039];return _0x34f410;};'use strict';var _=require(_0xdc06('0x0'));var util=require(_0xdc06('0x1'));var logger=require(_0xdc06('0x2'))(_0xdc06('0x3'));var moment=require('moment');var BPromise=require(_0xdc06('0x4'));var rp=require(_0xdc06('0x5'));var fs=require('fs');var path=require(_0xdc06('0x6'));var rimraf=require(_0xdc06('0x7'));var config=require('../../config/environment');var attributes=require(_0xdc06('0x8'));module['exports']=function(_0x191772,_0x392f77){return _0x191772[_0xdc06('0x9')](_0xdc06('0xa'),attributes,{'tableName':_0xdc06('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x897e=['request-promise','path','../../config/environment','./openchannelApplication.attributes','define','openchannel_applications','../../config/logger','api','moment','bluebird'];(function(_0x451231,_0xcc9ee){var _0x3b5b08=function(_0x131dda){while(--_0x131dda){_0x451231['push'](_0x451231['shift']());}};_0x3b5b08(++_0xcc9ee);}(_0x897e,0x18c));var _0xe897=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x897e[_0x13b02f];return _0x12e9a6;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe897('0x0'))(_0xe897('0x1'));var moment=require(_0xe897('0x2'));var BPromise=require(_0xe897('0x3'));var rp=require(_0xe897('0x4'));var fs=require('fs');var path=require(_0xe897('0x5'));var rimraf=require('rimraf');var config=require(_0xe897('0x6'));var attributes=require(_0xe897('0x7'));module['exports']=function(_0x536ab2,_0x4a73d3){return _0x536ab2[_0xe897('0x8')]('OpenchannelApplication',attributes,{'tableName':_0xe897('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index fca53ba..c1651ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f3b=['catch','body','options','where','attributes','limit','UpdateOpenchannelApplication','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x1112af,_0x1341c8){var _0x153496=function(_0x4aa7e1){while(--_0x4aa7e1){_0x1112af['push'](_0x1112af['shift']());}};_0x153496(++_0x1341c8);}(_0x2f3b,0x19c));var _0xb2f3=function(_0xe16390,_0x58c6e9){_0xe16390=_0xe16390-0x0;var _0x1ed342=_0x2f3b[_0xe16390];return _0x1ed342;};'use strict';var _=require(_0xb2f3('0x0'));var util=require('util');var moment=require(_0xb2f3('0x1'));var BPromise=require(_0xb2f3('0x2'));var rs=require(_0xb2f3('0x3'));var fs=require('fs');var Redis=require(_0xb2f3('0x4'));var db=require(_0xb2f3('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb2f3('0x6'))(_0xb2f3('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xb2f3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x41bd6a,_0x27e7b2,_0x49bb50){return new BPromise(function(_0x4a5d6d,_0x5eb7e4){return client[_0xb2f3('0x9')](_0x41bd6a,_0x49bb50)[_0xb2f3('0xa')](function(_0x28d1ba){logger[_0xb2f3('0xb')](_0xb2f3('0xc'),_0x27e7b2,_0xb2f3('0xd'));logger[_0xb2f3('0xe')](_0xb2f3('0xf'),_0x27e7b2,_0xb2f3('0xd'),JSON[_0xb2f3('0x10')](_0x28d1ba));if(_0x28d1ba[_0xb2f3('0x11')]){if(_0x28d1ba[_0xb2f3('0x11')][_0xb2f3('0x12')]===0x1f4){logger[_0xb2f3('0x11')](_0xb2f3('0xc'),_0x27e7b2,_0x28d1ba['error'][_0xb2f3('0x13')]);return _0x5eb7e4(_0x28d1ba[_0xb2f3('0x11')]['message']);}logger[_0xb2f3('0x11')](_0xb2f3('0xc'),_0x27e7b2,_0x28d1ba[_0xb2f3('0x11')][_0xb2f3('0x13')]);return _0x4a5d6d(_0x28d1ba[_0xb2f3('0x11')]['message']);}else{logger[_0xb2f3('0xb')](_0xb2f3('0xc'),_0x27e7b2,_0xb2f3('0xd'));_0x4a5d6d(_0x28d1ba['result']['message']);}})[_0xb2f3('0x14')](function(_0x33c5b0){logger[_0xb2f3('0x11')](_0xb2f3('0xc'),_0x27e7b2,_0x33c5b0);_0x5eb7e4(_0x33c5b0);});});}exports['UpdateOpenchannelApplication']=function(_0x3ed74d){var _0x37ba58=this;return new Promise(function(_0x13f61f,_0x2bae50){return db['OpenchannelApplication']['update'](_0x3ed74d[_0xb2f3('0x15')],{'raw':_0x3ed74d[_0xb2f3('0x16')]?_0x3ed74d['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ed74d[_0xb2f3('0x16')]?_0x3ed74d['options'][_0xb2f3('0x17')]||null:null,'attributes':_0x3ed74d['options']?_0x3ed74d[_0xb2f3('0x16')][_0xb2f3('0x18')]||null:null,'limit':_0x3ed74d[_0xb2f3('0x16')]?_0x3ed74d[_0xb2f3('0x16')][_0xb2f3('0x19')]||null:null})[_0xb2f3('0xa')](function(_0x29d9bf){logger[_0xb2f3('0xb')]('UpdateOpenchannelApplication',_0x3ed74d);logger['debug'](_0xb2f3('0x1a'),_0x3ed74d,JSON['stringify'](_0x29d9bf));_0x13f61f(_0x29d9bf);})[_0xb2f3('0x14')](function(_0x219692){logger[_0xb2f3('0x11')](_0xb2f3('0x1a'),_0x219692[_0xb2f3('0x13')],_0x3ed74d);_0x2bae50(_0x37ba58['error'](0x1f4,_0x219692['message']));});});};
\ No newline at end of file
+var _0x2992=['bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','raw','limit','then','stringify','util'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x2992,0xb3));var _0x2299=function(_0x2b2b33,_0x56606f){_0x2b2b33=_0x2b2b33-0x0;var _0x229157=_0x2992[_0x2b2b33];return _0x229157;};'use strict';var _=require('lodash');var util=require(_0x2299('0x0'));var moment=require('moment');var BPromise=require(_0x2299('0x1'));var rs=require(_0x2299('0x2'));var fs=require('fs');var Redis=require(_0x2299('0x3'));var db=require(_0x2299('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2299('0x5'));var config=require(_0x2299('0x6'));var jayson=require(_0x2299('0x7'));var client=jayson[_0x2299('0x8')][_0x2299('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x989353,_0x1eb5a7,_0x1401b3){return new BPromise(function(_0x19d324,_0x4470c5){return client[_0x2299('0xa')](_0x989353,_0x1401b3)['then'](function(_0x1a5583){logger[_0x2299('0xb')](_0x2299('0xc'),_0x1eb5a7,_0x2299('0xd'));logger[_0x2299('0xe')](_0x2299('0xf'),_0x1eb5a7,_0x2299('0xd'),JSON['stringify'](_0x1a5583));if(_0x1a5583[_0x2299('0x10')]){if(_0x1a5583[_0x2299('0x10')][_0x2299('0x11')]===0x1f4){logger[_0x2299('0x10')](_0x2299('0xc'),_0x1eb5a7,_0x1a5583[_0x2299('0x10')][_0x2299('0x12')]);return _0x4470c5(_0x1a5583[_0x2299('0x10')]['message']);}logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x1eb5a7,_0x1a5583[_0x2299('0x10')][_0x2299('0x12')]);return _0x19d324(_0x1a5583[_0x2299('0x10')][_0x2299('0x12')]);}else{logger[_0x2299('0xb')](_0x2299('0xc'),_0x1eb5a7,_0x2299('0xd'));_0x19d324(_0x1a5583[_0x2299('0x13')][_0x2299('0x12')]);}})[_0x2299('0x14')](function(_0x179a40){logger[_0x2299('0x10')](_0x2299('0xc'),_0x1eb5a7,_0x179a40);_0x4470c5(_0x179a40);});});}exports[_0x2299('0x15')]=function(_0x50a9fc){var _0x33e7db=this;return new Promise(function(_0x56dedb,_0x1eae9e){return db[_0x2299('0x16')][_0x2299('0x17')](_0x50a9fc[_0x2299('0x18')],{'raw':_0x50a9fc[_0x2299('0x19')]?_0x50a9fc[_0x2299('0x19')][_0x2299('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x50a9fc[_0x2299('0x19')]?_0x50a9fc[_0x2299('0x19')]['where']||null:null,'attributes':_0x50a9fc[_0x2299('0x19')]?_0x50a9fc[_0x2299('0x19')]['attributes']||null:null,'limit':_0x50a9fc[_0x2299('0x19')]?_0x50a9fc[_0x2299('0x19')][_0x2299('0x1b')]||null:null})[_0x2299('0x1c')](function(_0x4c986c){logger[_0x2299('0xb')](_0x2299('0x15'),_0x50a9fc);logger[_0x2299('0xe')](_0x2299('0x15'),_0x50a9fc,JSON[_0x2299('0x1d')](_0x4c986c));_0x56dedb(_0x4c986c);})[_0x2299('0x14')](function(_0x27f190){logger[_0x2299('0x10')](_0x2299('0x15'),_0x27f190[_0x2299('0x12')],_0x50a9fc);_0x1eae9e(_0x33e7db[_0x2299('0x10')](0x1f4,_0x27f190[_0x2299('0x12')]));});});};
\ No newline at end of file
index bd488ae..995b41b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce3f=['get','isAuthenticated','index','/describe','/:id','show','getMessages','/:id/download','download','post','/:id/messages','addMessage','/:id/tags','tracked','openchannelinteraction:addtags','addTags','openchannel','openchannelinteraction:update','update','delete','destroy','removeTags','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x458dcd,_0x5da2a5){var _0x37dcb2=function(_0x380276){while(--_0x380276){_0x458dcd['push'](_0x458dcd['shift']());}};_0x37dcb2(++_0x5da2a5);}(_0xce3f,0xe9));var _0xfce3=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0xce3f[_0x42245d];return _0x4b211a;};'use strict';var multer=require(_0xfce3('0x0'));var util=require(_0xfce3('0x1'));var path=require(_0xfce3('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xfce3('0x3')]();var fs_extra=require(_0xfce3('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfce3('0x5'));var config=require(_0xfce3('0x6'));var controller=require('./openchannelInteraction.controller');router[_0xfce3('0x7')]('/',auth[_0xfce3('0x8')](),controller[_0xfce3('0x9')]);router[_0xfce3('0x7')](_0xfce3('0xa'),auth[_0xfce3('0x8')](),controller['describe']);router[_0xfce3('0x7')](_0xfce3('0xb'),auth[_0xfce3('0x8')](),controller[_0xfce3('0xc')]);router[_0xfce3('0x7')]('/:id/messages',auth[_0xfce3('0x8')](),controller[_0xfce3('0xd')]);router[_0xfce3('0x7')](_0xfce3('0xe'),auth['isAuthenticated'](),controller[_0xfce3('0xf')]);router[_0xfce3('0x10')]('/',auth[_0xfce3('0x8')](),controller['create']);router[_0xfce3('0x10')](_0xfce3('0x11'),auth[_0xfce3('0x8')](),controller[_0xfce3('0x12')]);router[_0xfce3('0x10')](_0xfce3('0x13'),auth[_0xfce3('0x8')](),interaction[_0xfce3('0x14')]('openchannel',_0xfce3('0x15')),controller[_0xfce3('0x16')]);router['put'](_0xfce3('0xb'),auth[_0xfce3('0x8')](),interaction[_0xfce3('0x14')](_0xfce3('0x17'),_0xfce3('0x18')),controller[_0xfce3('0x19')]);router[_0xfce3('0x1a')](_0xfce3('0xb'),auth[_0xfce3('0x8')](),interaction['tracked']('openchannel','openchannelinteraction:destroy'),controller[_0xfce3('0x1b')]);router[_0xfce3('0x1a')](_0xfce3('0x13'),auth[_0xfce3('0x8')](),controller[_0xfce3('0x1c')]);module[_0xfce3('0x1d')]=router;
\ No newline at end of file
+var _0xcc62=['openchannelinteraction:destroy','destroy','removeTags','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id/messages','getMessages','/:id/download','download','post','create','/:id/tags','openchannel','openchannelinteraction:addtags','addTags','/:id','tracked','openchannelinteraction:update','update','delete'];(function(_0x409563,_0x5c7e74){var _0x1be44a=function(_0x2a269b){while(--_0x2a269b){_0x409563['push'](_0x409563['shift']());}};_0x1be44a(++_0x5c7e74);}(_0xcc62,0x9a));var _0x2cc6=function(_0x212eb1,_0x4685ec){_0x212eb1=_0x212eb1-0x0;var _0x7575b3=_0xcc62[_0x212eb1];return _0x7575b3;};'use strict';var multer=require(_0x2cc6('0x0'));var util=require('util');var path=require(_0x2cc6('0x1'));var timeout=require('connect-timeout');var express=require(_0x2cc6('0x2'));var router=express['Router']();var fs_extra=require(_0x2cc6('0x3'));var auth=require(_0x2cc6('0x4'));var interaction=require(_0x2cc6('0x5'));var config=require(_0x2cc6('0x6'));var controller=require('./openchannelInteraction.controller');router[_0x2cc6('0x7')]('/',auth[_0x2cc6('0x8')](),controller[_0x2cc6('0x9')]);router[_0x2cc6('0x7')]('/describe',auth[_0x2cc6('0x8')](),controller[_0x2cc6('0xa')]);router['get']('/:id',auth[_0x2cc6('0x8')](),controller['show']);router[_0x2cc6('0x7')](_0x2cc6('0xb'),auth[_0x2cc6('0x8')](),controller[_0x2cc6('0xc')]);router[_0x2cc6('0x7')](_0x2cc6('0xd'),auth[_0x2cc6('0x8')](),controller[_0x2cc6('0xe')]);router[_0x2cc6('0xf')]('/',auth[_0x2cc6('0x8')](),controller[_0x2cc6('0x10')]);router[_0x2cc6('0xf')](_0x2cc6('0xb'),auth[_0x2cc6('0x8')](),controller['addMessage']);router[_0x2cc6('0xf')](_0x2cc6('0x11'),auth[_0x2cc6('0x8')](),interaction['tracked'](_0x2cc6('0x12'),_0x2cc6('0x13')),controller[_0x2cc6('0x14')]);router['put'](_0x2cc6('0x15'),auth['isAuthenticated'](),interaction[_0x2cc6('0x16')](_0x2cc6('0x12'),_0x2cc6('0x17')),controller[_0x2cc6('0x18')]);router[_0x2cc6('0x19')](_0x2cc6('0x15'),auth[_0x2cc6('0x8')](),interaction[_0x2cc6('0x16')](_0x2cc6('0x12'),_0x2cc6('0x1a')),controller[_0x2cc6('0x1b')]);router[_0x2cc6('0x19')](_0x2cc6('0x11'),auth[_0x2cc6('0x8')](),controller[_0x2cc6('0x1c')]);module[_0x2cc6('0x1d')]=router;
\ No newline at end of file
index cdfb97e..83e11eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7314=['DATE','STRING','ENUM','BOOLEAN','sequelize','exports'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x7314,0x100));var _0x4731=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7314[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x4731('0x0'));module[_0x4731('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x4731('0x2')]},'disposition':{'type':Sequelize[_0x4731('0x3')]},'secondDisposition':{'type':Sequelize[_0x4731('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x4731('0x3')]},'read1stAt':{'type':Sequelize[_0x4731('0x2')]},'threadId':{'type':Sequelize[_0x4731('0x3')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x4731('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x4731('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x4731('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x4731('0x5')],'defaultValue':![]}};
\ No newline at end of file
+var _0xee24=['DATE','ENUM','exports','BOOLEAN','STRING'];(function(_0xa18535,_0x4432e7){var _0xb6a1cf=function(_0x186892){while(--_0x186892){_0xa18535['push'](_0xa18535['shift']());}};_0xb6a1cf(++_0x4432e7);}(_0xee24,0x1a6));var _0x4ee2=function(_0x5c1a3d,_0x304db0){_0x5c1a3d=_0x5c1a3d-0x0;var _0xa2e546=_0xee24[_0x5c1a3d];return _0xa2e546;};'use strict';var Sequelize=require('sequelize');module[_0x4ee2('0x0')]={'closed':{'type':Sequelize[_0x4ee2('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x4ee2('0x2')]},'secondDisposition':{'type':Sequelize[_0x4ee2('0x2')]},'thirdDisposition':{'type':Sequelize[_0x4ee2('0x2')]},'note':{'type':Sequelize[_0x4ee2('0x2')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x4ee2('0x2')]},'externalUrl':{'type':Sequelize[_0x4ee2('0x2')]},'lastMsgAt':{'type':Sequelize[_0x4ee2('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x4ee2('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x4ee2('0x2')]},'autoreplyExecuted':{'type':Sequelize[_0x4ee2('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 8805e7b..ae7232f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ac7=['OpenchannelInteraction','rawAttributes','fieldName','type','key','query','filters','model','intersection','fields','attributes','order','sort','where','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','left_join','users','openchannel_interactions','cm_contacts','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','length','find','unreadMessages','value','`\x20=\x200','having','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','keys','some','compact','OpenchannelAccountId','i.OpenchannelAccountId\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','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','QueryTypes','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','toString','merge','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','c.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','OpenchannelInteractionId','push','all','rows','show','params','include','options','create','body','catch','describe','addMessage','OpenchannelMessage','ids','omit','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','addTags','setTags','spread','Tag','emit','removeTags','download','unix','join','root','server','tmp','files','attachments','User','CmContact','firstName','lastName','Attachment','Messages','direction','secret','OpenchannelAccount','Account','Owner','N.A.','closedAt','disposition','threadId','Public','Private','basename','createReadStream','pipe','createWriteStream','out','renderFile','views','transcript-','Openchannel','createPdfFromHTML','log','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','./openchannelInteraction.socket','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','Users','map','fullname','TagIds','Tags','split','index'];(function(_0x1111b6,_0x406ede){var _0x2b4945=function(_0x31ec4f){while(--_0x31ec4f){_0x1111b6['push'](_0x1111b6['shift']());}};_0x2b4945(++_0x406ede);}(_0x6ac7,0x1ab));var _0x76ac=function(_0x19d63e,_0x1c6651){_0x19d63e=_0x19d63e-0x0;var _0x596ef2=_0x6ac7[_0x19d63e];return _0x596ef2;};'use strict';var emlformat=require(_0x76ac('0x0'));var rimraf=require(_0x76ac('0x1'));var zipdir=require(_0x76ac('0x2'));var jsonpatch=require(_0x76ac('0x3'));var rp=require(_0x76ac('0x4'));var moment=require(_0x76ac('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x76ac('0x6'));var path=require('path');var sox=require(_0x76ac('0x7'));var csv=require(_0x76ac('0x8'));var ejs=require(_0x76ac('0x9'));var fs=require('fs');var fs_extra=require(_0x76ac('0xa'));var _=require(_0x76ac('0xb'));var squel=require('squel');var crypto=require(_0x76ac('0xc'));var jsforce=require(_0x76ac('0xd'));var deskjs=require(_0x76ac('0xe'));var toCsv=require(_0x76ac('0x8'));var querystring=require('querystring');var Papa=require(_0x76ac('0xf'));var Redis=require(_0x76ac('0x10'));var authService=require(_0x76ac('0x11'));var qs=require(_0x76ac('0x12'));var as=require(_0x76ac('0x13'));var pdf=require(_0x76ac('0x14'));var hardwareService=require(_0x76ac('0x15'));var logger=require(_0x76ac('0x16'))('api');var utils=require(_0x76ac('0x17'));var config=require(_0x76ac('0x18'));var licenseUtil=require(_0x76ac('0x19'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x76ac('0x1a')](config[_0x76ac('0x1b')],{'host':_0x76ac('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x76ac('0x1b')]));require(_0x76ac('0x1d'))['register'](socket);function respondWithStatusCode(_0xbf9987,_0x5b5042){_0x5b5042=_0x5b5042||0xcc;return function(_0x332adc){if(_0x332adc){return _0xbf9987['sendStatus'](_0x5b5042);}return _0xbf9987['status'](_0x5b5042)[_0x76ac('0x1e')]();};}function respondWithResult(_0x3fbbae,_0x205e9f){_0x205e9f=_0x205e9f||0xc8;return function(_0x5d6ed4){if(_0x5d6ed4){return _0x3fbbae[_0x76ac('0x1f')](_0x205e9f)['json'](_0x5d6ed4);}};}function respondWithFilteredResult(_0x2f2ed1,_0x4c6625){return function(_0x5eb1fd){if(_0x5eb1fd){var _0x5c2823=typeof _0x4c6625[_0x76ac('0x20')]===_0x76ac('0x21')&&typeof _0x4c6625[_0x76ac('0x22')]==='undefined';var _0x4be157=_0x5eb1fd['count'];var _0xff32e4=_0x5c2823?0x0:_0x4c6625[_0x76ac('0x20')];var _0x41914b=_0x5c2823?_0x5eb1fd[_0x76ac('0x23')]:_0x4c6625[_0x76ac('0x20')]+_0x4c6625['limit'];var _0x317d9a;if(_0x41914b>=_0x4be157){_0x41914b=_0x4be157;_0x317d9a=0xc8;}else{_0x317d9a=0xce;}_0x2f2ed1[_0x76ac('0x1f')](_0x317d9a);return _0x2f2ed1[_0x76ac('0x24')](_0x76ac('0x25'),_0xff32e4+'-'+_0x41914b+'/'+_0x4be157)['json'](_0x5eb1fd);}return null;};}function patchUpdates(_0x28e99c){return function(_0xdcff52){try{jsonpatch[_0x76ac('0x26')](_0xdcff52,_0x28e99c,!![]);}catch(_0x2e078b){return BPromise[_0x76ac('0x27')](_0x2e078b);}return _0xdcff52[_0x76ac('0x28')]();};}function saveUpdates(_0x2756a5,_0x32507c){return function(_0x199250){if(_0x199250){return _0x199250[_0x76ac('0x29')](_0x2756a5)['then'](function(_0x5789c8){return _0x5789c8;});}return null;};}function removeEntity(_0x263e0f,_0x60973e){return function(_0x18244d){if(_0x18244d){return _0x18244d[_0x76ac('0x2a')]()[_0x76ac('0x2b')](function(){_0x263e0f[_0x76ac('0x1f')](0xcc)[_0x76ac('0x1e')]();});}};}function handleEntityNotFound(_0x53bdff,_0x54dcf5){return function(_0x39034a){if(!_0x39034a){_0x53bdff[_0x76ac('0x2c')](0x194);}return _0x39034a;};}function handleError(_0x5ef1d7,_0xe3a84a){_0xe3a84a=_0xe3a84a||0x1f4;return function(_0x217a6e){logger[_0x76ac('0x2d')](_0x217a6e[_0x76ac('0x2e')]);if(_0x217a6e[_0x76ac('0x2f')]){delete _0x217a6e[_0x76ac('0x2f')];}_0x5ef1d7[_0x76ac('0x1f')](_0xe3a84a)['send'](_0x217a6e);};}function getInteractionUsers(_0x1aeaa4,_0x12a103){return new BPromise(function(_0x43a91e,_0x1ececf){try{if(_0x12a103[_0x1aeaa4['id']]){_0x1aeaa4[_0x76ac('0x30')]=_[_0x76ac('0x31')](_0x12a103[_0x1aeaa4['id']],function(_0x562174){return{'id':_0x562174['id'],'fullname':_0x562174[_0x76ac('0x32')]};});}}catch(_0xbac5d3){_0x1ececf(_0xbac5d3);}_0x43a91e(_0x1aeaa4);});}function getInteractionTags(_0x1990a5,_0x3309ff){return new BPromise(function(_0x49e631,_0x582818){try{if(_0x1990a5[_0x76ac('0x33')]){_0x1990a5[_0x76ac('0x34')]=[];_0x1990a5[_0x76ac('0x33')][_0x76ac('0x35')](',')['forEach'](function(_0x3d3b1c){_0x1990a5['Tags']['push'](_0x3309ff[_0x3d3b1c]);});}delete _0x1990a5['TagIds'];}catch(_0x1807d3){_0x582818(_0x1807d3);}_0x49e631(_0x1990a5);});}function updateOpenchannelInteraction(_0x3fb334,_0x2d682d,_0x20bad5){return new BPromise(function(_0x4daf96,_0x2897ae){return getInteractionUsers(_0x3fb334,_0x20bad5)[_0x76ac('0x2b')](function(_0x53bb6e){return getInteractionTags(_0x53bb6e,_0x2d682d);})['then'](function(_0x1ee50a){_0x4daf96(_0x1ee50a);})['catch'](function(_0x20af06){_0x2897ae(_0x20af06);});});}exports[_0x76ac('0x36')]=function(_0x160152,_0x19a1f3){var _0x578c15={},_0x42db4f={},_0xfaae7c={'count':0x0,'rows':[]};var _0x5c6174=_[_0x76ac('0x31')](db[_0x76ac('0x37')][_0x76ac('0x38')],function(_0x565b27){return{'name':_0x565b27[_0x76ac('0x39')],'type':_0x565b27[_0x76ac('0x3a')][_0x76ac('0x3b')]};});_0x42db4f['model']=_['map'](_0x5c6174,_0x76ac('0x2f'));_0x42db4f[_0x76ac('0x3c')]=_['keys'](_0x160152['query']);_0x42db4f[_0x76ac('0x3d')]=_['intersection'](_0x42db4f[_0x76ac('0x3e')],_0x42db4f['query']);_0x578c15['attributes']=_[_0x76ac('0x3f')](_0x42db4f[_0x76ac('0x3e')],qs['fields'](_0x160152['query'][_0x76ac('0x40')]));_0x578c15[_0x76ac('0x41')]=_0x578c15[_0x76ac('0x41')]['length']?_0x578c15[_0x76ac('0x41')]:_0x42db4f[_0x76ac('0x3e')];if(!_0x160152[_0x76ac('0x3c')]['hasOwnProperty']('nolimit')){_0x578c15[_0x76ac('0x22')]=qs[_0x76ac('0x22')](_0x160152[_0x76ac('0x3c')]['limit']);_0x578c15[_0x76ac('0x20')]=qs['offset'](_0x160152[_0x76ac('0x3c')][_0x76ac('0x20')]);}_0x578c15[_0x76ac('0x42')]=qs[_0x76ac('0x43')](_0x160152[_0x76ac('0x3c')][_0x76ac('0x43')]);_0x578c15[_0x76ac('0x44')]=qs[_0x76ac('0x3d')](_[_0x76ac('0x45')](_0x160152[_0x76ac('0x3c')],_0x42db4f['filters']),_0x5c6174);var _0x33c66b=[];var _0x4f669f=squel[_0x76ac('0x46')]()[_0x76ac('0x47')]('id')['field'](_0x76ac('0x2f'))['field'](_0x76ac('0x48'))[_0x76ac('0x49')](_0x76ac('0x4a'));var _0x46aa92=squel[_0x76ac('0x46')]()[_0x76ac('0x47')](_0x76ac('0x4b'))[_0x76ac('0x47')](_0x76ac('0x4c'))[_0x76ac('0x47')](_0x76ac('0x4d'))['from']('user_has_openchannel_interactions','ui')[_0x76ac('0x4e')](_0x76ac('0x4f'),'u','u.id\x20=\x20ui.UserId');var _0x5dbf39=squel[_0x76ac('0x46')]()['from'](_0x76ac('0x50'),'i')[_0x76ac('0x4e')](_0x76ac('0x51'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join'](_0x76ac('0x4f'),'o',_0x76ac('0x52'))[_0x76ac('0x4e')](_0x76ac('0x53'),'a',_0x76ac('0x54'))[_0x76ac('0x4e')](_0x76ac('0x55'),'me',_0x76ac('0x56'))[_0x76ac('0x4e')]('openchannel_interaction_has_tags','it',_0x76ac('0x57'))[_0x76ac('0x4e')](_0x76ac('0x4a'),'t',_0x76ac('0x58'));var _0x4c6eb7=squel[_0x76ac('0x59')]();var _0x43a775=[];var _0x1e8e93=squel[_0x76ac('0x59')]();var _0x46c52a;if(_0x160152[_0x76ac('0x3c')]['search']){_0x46c52a=as[_0x76ac('0x5a')](_0x160152[_0x76ac('0x3c')][_0x76ac('0x5b')]);var _0x58312c=_0x46c52a[_0x76ac('0x5c')];for(var _0x27ad3e=0x0;_0x27ad3e<_0x46c52a[_0x76ac('0x5d')][_0x76ac('0x5e')];_0x27ad3e++){var _0xc199f0=_0x46c52a['conditions'][_0x27ad3e];var _0x3c0ad8='i';var _0x3c76c6=_[_0x76ac('0x5f')](_0x5c6174,[_0x76ac('0x2f'),_0xc199f0[_0x76ac('0x47')]]);if(!_0x3c76c6){switch(_0xc199f0[_0x76ac('0x47')]){case _0x76ac('0x60'):if(_0xc199f0[_0x76ac('0x61')]==0x1){_0x5dbf39['having']('`'+_0xc199f0[_0x76ac('0x47')]+_0x76ac('0x62'));}else{_0x5dbf39[_0x76ac('0x63')]('`'+_0xc199f0[_0x76ac('0x47')]+'`\x20>\x200');}break;case _0x76ac('0x64'):if(_0xc199f0[_0x76ac('0x65')]===_0x76ac('0x66')){if(_0xc199f0[_0x76ac('0x61')][_0x76ac('0x35')]('\x20')['length']>0x1){_0x4c6eb7[_0x58312c](_0x76ac('0x67'),qs[_0x76ac('0x68')](_0xc199f0[_0x76ac('0x61')]),null);}else{var _0x26fbc1='%'+_0xc199f0[_0x76ac('0x61')]+'%';_0x4c6eb7[_0x58312c](_0x76ac('0x69'),_0x26fbc1,_0x26fbc1,_0x26fbc1);}}else{_0x3c76c6=_[_0x76ac('0x5f')](_0x5c6174,[_0x76ac('0x2f'),_0x76ac('0x6a')]);_0xc199f0['field']='ContactId';_0x3f7729=as['buildExpression'](_0x3c0ad8,_0x3c76c6[_0x76ac('0x3a')],_0xc199f0);_0x4c6eb7[_0x58312c](_0x3f7729[_0x76ac('0x6b')],_0x3f7729[_0x76ac('0x61')][_0x76ac('0x6c')],_0x3f7729['value'][_0x76ac('0x1e')]);}break;case'Tag':var _0x1691d5=_0xc199f0[_0x76ac('0x61')][_0x76ac('0x35')](',')[_0x76ac('0x31')](function(_0x1e0f1d){return Number(_0x1e0f1d);});_0x1691d5[_0x76ac('0x6d')](function(_0x5dc4a0){_0x1e8e93['or'](_0x76ac('0x6e'),'%,'+_0x5dc4a0+',%');});_0x43a775=_[_0x76ac('0x6f')](_0x43a775,_0x1691d5);break;case'User':if(_0xc199f0['operator']===_0x76ac('0x66')){_0x4c6eb7[_0x58312c](_0x76ac('0x70'),'%'+_0xc199f0[_0x76ac('0x61')]+'%',null);}else{_0x3c76c6=_[_0x76ac('0x5f')](_0x5c6174,[_0x76ac('0x2f'),'UserId']);_0xc199f0[_0x76ac('0x47')]=_0x76ac('0x71');_0x3f7729=as[_0x76ac('0x72')](_0x3c0ad8,_0x3c76c6[_0x76ac('0x3a')],_0xc199f0);_0x4c6eb7[_0x58312c](_0x3f7729['text'],_0x3f7729[_0x76ac('0x61')]['start'],_0x3f7729['value'][_0x76ac('0x1e')]);}break;case'body':_0x3f7729=as[_0x76ac('0x72')]('me',null,_0xc199f0);_0x4c6eb7[_0x58312c](_0x3f7729[_0x76ac('0x6b')],_0x3f7729['value'][_0x76ac('0x6c')],_0x3f7729['value'][_0x76ac('0x1e')]);break;}}else{var _0x3f7729=as[_0x76ac('0x72')](_0x3c0ad8,_0x3c76c6['type'],_0xc199f0);_0x4c6eb7[_0x58312c](_0x3f7729[_0x76ac('0x6b')],_0x3f7729[_0x76ac('0x61')][_0x76ac('0x6c')],_0x3f7729[_0x76ac('0x61')][_0x76ac('0x1e')]);}}}else{var _0x20dee8=_(_0x160152[_0x76ac('0x3c')])[_0x76ac('0x73')]()[_0x76ac('0x31')](function(_0x4a16fe){return _[_0x76ac('0x74')](_0x5c6174,[_0x76ac('0x2f'),_0x4a16fe])?_0x4a16fe:undefined;})[_0x76ac('0x75')]()[_0x76ac('0x61')]();if(!_['isEmpty'](_0x20dee8)){_0x20dee8[_0x76ac('0x6d')](function(_0x4522a5){if(_0x4522a5===_0x76ac('0x76')){_0x5dbf39[_0x76ac('0x44')](_0x76ac('0x77'),[][_0x76ac('0x78')](_0x160152[_0x76ac('0x3c')][_0x4522a5]));}else if(_0x4522a5===_0x76ac('0x79')){var _0x46e01f=JSON['parse'](_0x160152[_0x76ac('0x3c')][_0x4522a5])[_0x76ac('0x7a')];var _0x540339=JSON[_0x76ac('0x7b')](_0x160152['query'][_0x4522a5])[_0x76ac('0x7c')];_0x5dbf39[_0x76ac('0x44')](_0x76ac('0x7d'),_0x46e01f,_0x540339);}else{if(_0x160152[_0x76ac('0x3c')][_0x4522a5]===_0x76ac('0x7e')){_0x5dbf39['where']('i.'+_0x4522a5+_0x76ac('0x7f'));}else{_0x5dbf39[_0x76ac('0x44')]('i.'+_0x4522a5+_0x76ac('0x80'),_0x160152[_0x76ac('0x3c')][_0x4522a5]);}}});}if(_0x160152['query'][_0x76ac('0x81')]){if(_0x160152[_0x76ac('0x3c')][_0x76ac('0x81')]==0x1){_0x5dbf39[_0x76ac('0x63')](_0x76ac('0x82'));}else{_0x5dbf39[_0x76ac('0x63')]('`unreadMessages`\x20>\x200');}}if(_0x160152[_0x76ac('0x3c')][_0x76ac('0x83')]){_0x43a775=_[_0x76ac('0x84')](_0x160152['query'][_0x76ac('0x83')])?_0x160152[_0x76ac('0x3c')][_0x76ac('0x83')]:new Array(_0x160152[_0x76ac('0x3c')][_0x76ac('0x83')]);_0x43a775[_0x76ac('0x6d')](function(_0x130e64){_0x1e8e93['or'](_0x76ac('0x6e'),'%,'+_0x130e64+',%');});}if(_0x160152[_0x76ac('0x3c')][_0x76ac('0x85')]){var _0x28fd2e=_0x160152[_0x76ac('0x3c')]['filter'][_0x76ac('0x86')]('\x5c','\x5c\x5c')[_0x76ac('0x86')](/'/g,'\x27\x27');if(qs[_0x76ac('0x87')](_0x28fd2e)){_0x4c6eb7['or']('i.id\x20LIKE\x20?',_0x28fd2e+'%');}else{_0x4c6eb7['or'](_0x76ac('0x88'),qs[_0x76ac('0x68')](_0x28fd2e))['or'](_0x76ac('0x89'),_0x28fd2e+'%')['or'](_0x76ac('0x8a'),_0x28fd2e+'%');}}}_0x5dbf39['where'](_0x4c6eb7);_0x5dbf39[_0x76ac('0x8b')]('i.id');var _0x14c6c2={'type':db['Sequelize'][_0x76ac('0x8c')][_0x76ac('0x8d')],'raw':!![]};var _0x589524=_0x5dbf39[_0x76ac('0x8e')]();_0x589524['field'](_0x76ac('0x8f'));_0x589524[_0x76ac('0x47')](_0x76ac('0x90'),_0x76ac('0x60'));if(_0x578c15[_0x76ac('0x42')]){_0x578c15[_0x76ac('0x42')]['forEach'](function(_0x521671){var _0x5e251e=_0x521671[0x0]===_0x76ac('0x91')?_0x521671[0x0]:'i.'+_0x521671[0x0];_0x5dbf39[_0x76ac('0x42')](_0x5e251e,_0x521671[0x1]===_0x76ac('0x92')?![]:!![]);});}if(!_[_0x76ac('0x93')](_0x43a775)){_0x5dbf39[_0x76ac('0x63')](_0x1e8e93);_0x589524[_0x76ac('0x44')]('t.id\x20IN\x20?',_0x43a775);}BPromise[_0x76ac('0x94')]()[_0x76ac('0x2b')](function(){if(!_0x46c52a){if(_0x160152[_0x76ac('0x3c')][_0x76ac('0x76')])return;_0x589524['where'](_0x76ac('0x95'));_0x5dbf39[_0x76ac('0x44')](_0x76ac('0x95'));return;}if(_0x160152[_0x76ac('0x96')][_0x76ac('0x97')]!==_0x76ac('0x98'))return;return _0x160152['user'][_0x76ac('0x99')]({'attributes':['id'],'raw':!![]})[_0x76ac('0x2b')](function(_0x5ce974){if(_[_0x76ac('0x93')](_0x5ce974)){_0x589524[_0x76ac('0x44')](_0x76ac('0x9a'));_0x5dbf39['where'](_0x76ac('0x9a'));}else{_0x589524[_0x76ac('0x44')](_0x76ac('0x77'),_[_0x76ac('0x31')](_0x5ce974,'id'));_0x5dbf39[_0x76ac('0x44')]('i.OpenchannelAccountId\x20IN\x20?',_[_0x76ac('0x31')](_0x5ce974,'id'));}});})[_0x76ac('0x2b')](function(){if(_0x160152[_0x76ac('0x96')][_0x76ac('0x97')]===_0x76ac('0x98')&&!_0x46c52a&&!_0x160152['query'][_0x76ac('0x76')])return[];return db[_0x76ac('0x9b')]['query'](_0x589524[_0x76ac('0x9c')](),_0x14c6c2);})[_0x76ac('0x2b')](function(_0x1f2506){_0xfaae7c['count']=_0x1f2506[_0x76ac('0x5e')];if(_0xfaae7c[_0x76ac('0x23')]===0x0)return[];return db[_0x76ac('0x9b')][_0x76ac('0x3c')](_0x4f669f[_0x76ac('0x9c')](),_0x14c6c2)['then'](function(_0x308ee1){_0x33c66b=_['keyBy'](_0x308ee1,'id');_0x14c6c2=_[_0x76ac('0x9d')](_0x14c6c2,{'model':db[_0x76ac('0x37')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x160152[_0x76ac('0x3c')][_0x76ac('0x40')]){_0x578c15[_0x76ac('0x41')][_0x76ac('0x6d')](function(_0xbc6d9c){_0x5dbf39['field']('i.'+_0xbc6d9c);});}else{_0x5dbf39['field'](_0x76ac('0x90'),'unreadMessages');_0x5dbf39['field']('a.key','Account.key');_0x5dbf39[_0x76ac('0x47')](_0x76ac('0x9e'),_0x76ac('0x9f'));_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xa0'),_0x76ac('0x91'));_0x5dbf39[_0x76ac('0x47')]('i.*');_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xa1'),_0x76ac('0xa2'));_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xa3'),'Contact.lastName');_0x5dbf39['field'](_0x76ac('0xa4'),_0x76ac('0xa5'));_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xa6'),_0x76ac('0xa7'));_0x5dbf39['field'](_0x76ac('0xa8'),_0x76ac('0xa9'));_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xaa'),'Contact.fax');_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xab'),_0x76ac('0xac'));_0x5dbf39['field'](_0x76ac('0xad'),_0x76ac('0xae'));_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xaf'),_0x76ac('0x33'));}if(_0x578c15[_0x76ac('0x22')])_0x5dbf39[_0x76ac('0x22')](_0x578c15[_0x76ac('0x22')]);if(_0x578c15[_0x76ac('0x20')])_0x5dbf39[_0x76ac('0x20')](_0x578c15[_0x76ac('0x20')]);return db['sequelize'][_0x76ac('0x3c')](_0x5dbf39[_0x76ac('0x9c')](),_0x14c6c2);})['then'](function(_0xa66f80){if(_0xa66f80['length']>0x0)_0x46aa92[_0x76ac('0x44')]('ui.OpenchannelInteractionId\x20IN\x20?',_[_0x76ac('0x31')](_0xa66f80,'id'));return db[_0x76ac('0x9b')]['query'](_0x46aa92[_0x76ac('0x9c')](),_0x14c6c2)['then'](function(_0x509bee){var _0x457b44=_[_0x76ac('0xb0')](_0x509bee,_0x76ac('0xb1'));var _0x551468=[];_0xa66f80[_0x76ac('0x6d')](function(_0x1ebd0f){_0x551468[_0x76ac('0xb2')](updateOpenchannelInteraction(_0x1ebd0f,_0x33c66b,_0x457b44));});return BPromise[_0x76ac('0xb3')](_0x551468);});});})['then'](function(_0x4b006e){_0xfaae7c[_0x76ac('0xb4')]=_0x4b006e;return _0xfaae7c;})['then'](respondWithFilteredResult(_0x19a1f3,_0x578c15))['catch'](handleError(_0x19a1f3,null));};exports[_0x76ac('0xb5')]=function(_0x2beb5e,_0x533c30){var _0x470b97={};if(_0x2beb5e['query'][_0x76ac('0x3a')]&&_0x2beb5e['query'][_0x76ac('0x3a')]==='from'){_0x470b97[_0x76ac('0x49')]=_0x2beb5e['params']['id'];}else{_0x470b97['id']=_0x2beb5e[_0x76ac('0xb6')]['id'];}var _0x4031c8={'raw':![],'where':_0x470b97},_0xef4b8f={};_0xef4b8f[_0x76ac('0x3e')]=_[_0x76ac('0x73')](db['OpenchannelInteraction'][_0x76ac('0x38')]);_0xef4b8f[_0x76ac('0x3c')]=_[_0x76ac('0x73')](_0x2beb5e[_0x76ac('0x3c')]);_0xef4b8f['filters']=_[_0x76ac('0x3f')](_0xef4b8f[_0x76ac('0x3e')],_0xef4b8f[_0x76ac('0x3c')]);_0x4031c8[_0x76ac('0x41')]=_[_0x76ac('0x3f')](_0xef4b8f[_0x76ac('0x3e')],qs['fields'](_0x2beb5e[_0x76ac('0x3c')][_0x76ac('0x40')]));_0x4031c8['attributes']=_0x4031c8['attributes'][_0x76ac('0x5e')]?_0x4031c8[_0x76ac('0x41')]:_0xef4b8f[_0x76ac('0x3e')];if(_0x2beb5e[_0x76ac('0x3c')]['includeAll']){_0x4031c8[_0x76ac('0xb7')]=[{'all':!![]}];}_0x4031c8=_[_0x76ac('0x9d')]({},_0x4031c8,_0x2beb5e[_0x76ac('0xb8')]);return db[_0x76ac('0x37')][_0x76ac('0x5f')](_0x4031c8)[_0x76ac('0x2b')](handleEntityNotFound(_0x533c30,null))[_0x76ac('0x2b')](respondWithResult(_0x533c30,null))['catch'](handleError(_0x533c30,null));};exports['create']=function(_0x3dba03,_0x375f82){return db[_0x76ac('0x37')][_0x76ac('0xb9')](_0x3dba03[_0x76ac('0xba')],{})[_0x76ac('0x2b')](respondWithResult(_0x375f82,0xc9))[_0x76ac('0xbb')](handleError(_0x375f82,null));};exports[_0x76ac('0x29')]=function(_0x16e41c,_0x34b51a){if(_0x16e41c[_0x76ac('0xba')]['id']){delete _0x16e41c[_0x76ac('0xba')]['id'];}return db[_0x76ac('0x37')]['find']({'where':{'id':_0x16e41c[_0x76ac('0xb6')]['id']}})[_0x76ac('0x2b')](handleEntityNotFound(_0x34b51a,null))[_0x76ac('0x2b')](saveUpdates(_0x16e41c[_0x76ac('0xba')],null))[_0x76ac('0x2b')](respondWithResult(_0x34b51a,null))[_0x76ac('0xbb')](handleError(_0x34b51a,null));};exports['destroy']=function(_0x17252e,_0x47c4d1){return db[_0x76ac('0x37')][_0x76ac('0x5f')]({'where':{'id':_0x17252e[_0x76ac('0xb6')]['id']}})[_0x76ac('0x2b')](handleEntityNotFound(_0x47c4d1,null))['then'](removeEntity(_0x47c4d1,null))[_0x76ac('0xbb')](handleError(_0x47c4d1,null));};exports[_0x76ac('0xbc')]=function(_0x5b20a1,_0x47c5fd){return db[_0x76ac('0x37')][_0x76ac('0xbc')]()[_0x76ac('0x2b')](respondWithResult(_0x47c5fd,null))['catch'](handleError(_0x47c5fd,null));};exports[_0x76ac('0xbd')]=function(_0x27f887,_0x34ab60,_0x41bd44){return db[_0x76ac('0xbe')][_0x76ac('0x5f')]({'where':{'id':_0x27f887[_0x76ac('0xb6')]['id']}})[_0x76ac('0x2b')](handleEntityNotFound(_0x34ab60,null))[_0x76ac('0x2b')](function(_0x8d91a4){if(_0x8d91a4){return _0x8d91a4['addMessage'](_0x27f887[_0x76ac('0xba')][_0x76ac('0xbf')],_[_0x76ac('0xc0')](_0x27f887['body'],[_0x76ac('0xbf'),'id'])||{});}})[_0x76ac('0x2b')](respondWithResult(_0x34ab60,null))[_0x76ac('0xbb')](handleError(_0x34ab60,null));};exports['getMessages']=function(_0x45f908,_0x3aaf1e,_0x40bb81){var _0x5794c6={'raw':![],'where':{}};var _0x522f01={};var _0x1b51ec={'count':0x0,'rows':[]};return db[_0x76ac('0x37')]['findOne']({'where':{'id':_0x45f908[_0x76ac('0xb6')]['id']}})[_0x76ac('0x2b')](handleEntityNotFound(_0x3aaf1e,null))[_0x76ac('0x2b')](function(_0x47cff1){if(_0x47cff1){_0x522f01[_0x76ac('0x3e')]=_[_0x76ac('0x73')](db['OpenchannelMessage'][_0x76ac('0x38')]);_0x522f01[_0x76ac('0x3c')]=_[_0x76ac('0x73')](_0x45f908[_0x76ac('0x3c')]);_0x522f01[_0x76ac('0x3d')]=_[_0x76ac('0x3f')](_0x522f01[_0x76ac('0x3e')],_0x522f01[_0x76ac('0x3c')]);_0x5794c6['attributes']=_[_0x76ac('0x3f')](_0x522f01['model'],qs[_0x76ac('0x40')](_0x45f908['query']['fields']));_0x5794c6[_0x76ac('0x41')]=_0x5794c6[_0x76ac('0x41')][_0x76ac('0x5e')]?_0x5794c6[_0x76ac('0x41')]:_0x522f01['model'];if(!_0x45f908[_0x76ac('0x3c')]['hasOwnProperty'](_0x76ac('0xc1'))){_0x5794c6[_0x76ac('0x22')]=qs['limit'](_0x45f908[_0x76ac('0x3c')][_0x76ac('0x22')]);_0x5794c6['offset']=qs[_0x76ac('0x20')](_0x45f908[_0x76ac('0x3c')][_0x76ac('0x20')]);}_0x5794c6[_0x76ac('0x42')]=qs[_0x76ac('0x43')](_0x45f908['query'][_0x76ac('0x43')]);_0x5794c6[_0x76ac('0x44')]=qs[_0x76ac('0x3d')](_[_0x76ac('0x45')](_0x45f908[_0x76ac('0x3c')],_0x522f01[_0x76ac('0x3d')]));_0x5794c6['where'][_0x76ac('0xb1')]=_0x47cff1['id'];if(_0x45f908[_0x76ac('0x3c')][_0x76ac('0x85')]){_0x5794c6[_0x76ac('0x44')]=_['merge'](_0x5794c6[_0x76ac('0x44')],{'$or':_[_0x76ac('0x31')](_0x5794c6[_0x76ac('0x41')],function(_0xc152e5){var _0x162baa={};_0x162baa[_0xc152e5]={'$like':'%'+_0x45f908[_0x76ac('0x3c')]['filter']+'%'};return _0x162baa;})});}if(_0x45f908[_0x76ac('0x3c')][_0x76ac('0x7a')]){var _0x16fc2c=_0x45f908[_0x76ac('0x3c')][_0x76ac('0x7a')][_0x76ac('0x35')](',');var _0x46b1d5={};_0x46b1d5[_0x16fc2c[0x0]]={'$gte':moment(_0x16fc2c[0x1])[_0x76ac('0xc2')](_0x76ac('0xc3'))};_0x5794c6[_0x76ac('0x44')]=_[_0x76ac('0x9d')](_0x5794c6[_0x76ac('0x44')],_0x46b1d5);}_0x5794c6=_[_0x76ac('0x9d')]({},_0x5794c6,_0x45f908['options']);return db['OpenchannelMessage'][_0x76ac('0x23')]({'where':_0x5794c6[_0x76ac('0x44')]})[_0x76ac('0x2b')](function(_0x396c93){_0x1b51ec[_0x76ac('0x23')]=_0x396c93;if(_0x45f908[_0x76ac('0x3c')][_0x76ac('0xc4')]){_0x5794c6['include']=[{'all':!![]}];}return db[_0x76ac('0xbe')][_0x76ac('0xc5')](_0x5794c6);})[_0x76ac('0x2b')](function(_0x1a99d0){_0x1b51ec['rows']=_0x1a99d0;return _0x1b51ec;});}})[_0x76ac('0x2b')](respondWithFilteredResult(_0x3aaf1e,_0x5794c6))[_0x76ac('0xbb')](handleError(_0x3aaf1e,null));};exports[_0x76ac('0xc6')]=function(_0x276c07,_0x1ea076,_0x4ecc78){return db[_0x76ac('0x37')][_0x76ac('0x5f')]({'where':{'id':_0x276c07[_0x76ac('0xb6')]['id']}})[_0x76ac('0x2b')](handleEntityNotFound(_0x1ea076,null))[_0x76ac('0x2b')](function(_0x4d4c1e){if(_0x4d4c1e){return _0x4d4c1e[_0x76ac('0xc7')](_0x276c07[_0x76ac('0xba')][_0x76ac('0xbf')],_['omit'](_0x276c07[_0x76ac('0xba')],['ids','id'])||{})[_0x76ac('0xc8')](function(){return db[_0x76ac('0xc9')]['findAll']({'attributes':['id',_0x76ac('0x2f'),'color'],'where':{'id':_0x276c07[_0x76ac('0xba')][_0x76ac('0xbf')]}});})[_0x76ac('0x2b')](function(_0x382587){socket[_0x76ac('0xca')]('openchannelInteractionTags:save',{'id':Number(_0x276c07[_0x76ac('0xb6')]['id']),'tags':_0x382587||[]});return{'id':Number(_0x276c07['params']['id']),'tags':_0x382587||[]};});}})[_0x76ac('0x2b')](respondWithResult(_0x1ea076,null))['catch'](handleError(_0x1ea076,null));};exports[_0x76ac('0xcb')]=function(_0x1d6403,_0x44576f,_0x8bba84){return db['OpenchannelInteraction'][_0x76ac('0x5f')]({'where':{'id':_0x1d6403[_0x76ac('0xb6')]['id']}})[_0x76ac('0x2b')](handleEntityNotFound(_0x44576f,null))['then'](function(_0x26624c){if(_0x26624c){return _0x26624c['removeTags'](_0x1d6403[_0x76ac('0x3c')][_0x76ac('0xbf')]);}})[_0x76ac('0x2b')](respondWithStatusCode(_0x44576f,null))[_0x76ac('0xbb')](handleError(_0x44576f,null));};exports[_0x76ac('0xcc')]=function(_0x1d50ae,_0x135575){var _0x329a8c=moment()[_0x76ac('0xcd')]()[_0x76ac('0x9c')]();var _0x1aac3f=path[_0x76ac('0xce')](config[_0x76ac('0xcf')],_0x76ac('0xd0'),'files',_0x76ac('0xd1'));var _0x58feeb=path[_0x76ac('0xce')](config[_0x76ac('0xcf')],_0x76ac('0xd0'),_0x76ac('0xd2'),_0x76ac('0xd3'));var _0x3d1f35=path[_0x76ac('0xce')](_0x1aac3f,_0x329a8c);var _0x565d03=util[_0x76ac('0xc2')]('transcript-%d-%s.zip',_0x1d50ae[_0x76ac('0xb6')]['id'],_0x329a8c);var _0x59ae=path[_0x76ac('0xce')](_0x1aac3f,_0x565d03);var _0x17b7bd=[];_0x17b7bd[_0x76ac('0xb2')]({'model':db[_0x76ac('0xd4')],'as':_0x76ac('0xd4'),'attributes':['id',_0x76ac('0x32')],'raw':!![]});_0x17b7bd[_0x76ac('0xb2')]({'model':db[_0x76ac('0xd5')],'as':_0x76ac('0x64'),'attributes':['id',_0x76ac('0xd6'),_0x76ac('0xd7')],'raw':!![]});if(_0x1d50ae[_0x76ac('0x3c')][_0x76ac('0xd3')]){_0x17b7bd['push']({'model':db['Attachment'],'as':_0x76ac('0xd8'),'raw':!![]});}var _0x4a823a=[{'model':db[_0x76ac('0xbe')],'as':_0x76ac('0xd9'),'attributes':['id',_0x76ac('0xba'),_0x76ac('0x79'),_0x76ac('0xda'),_0x76ac('0xdb'),_0x76ac('0x81')],'include':_0x17b7bd}];_0x4a823a['push']({'model':db[_0x76ac('0xdc')],'as':_0x76ac('0xdd'),'attributes':['id','name']});_0x4a823a[_0x76ac('0xb2')]({'model':db[_0x76ac('0xd4')],'as':_0x76ac('0xde'),'attributes':['id',_0x76ac('0x32')]});return db[_0x76ac('0x37')][_0x76ac('0x5f')]({'where':{'id':_0x1d50ae['params']['id']},'include':_0x4a823a})['then'](handleEntityNotFound(_0x135575,null))[_0x76ac('0x2b')](function(_0x404beb){if(_0x404beb){var _0x40b4ff=_0x404beb['get']({'plain':!![]});fs['mkdirSync'](_0x3d1f35);var _0x56da1c={'channel':'Openchannel','account':_0x40b4ff[_0x76ac('0xdd')][_0x76ac('0x2f')],'agent':_0x40b4ff[_0x76ac('0xde')]?_0x40b4ff[_0x76ac('0xde')][_0x76ac('0x32')]:_0x76ac('0xdf'),'createdAt':moment(_0x40b4ff[_0x76ac('0x79')])[_0x76ac('0xc2')](_0x76ac('0xc3'))[_0x76ac('0x9c')](),'closedAt':_0x40b4ff['closed']?moment(_0x40b4ff[_0x76ac('0xe0')])[_0x76ac('0xc2')](_0x76ac('0xc3'))[_0x76ac('0x9c')]():'','disposition':_0x40b4ff[_0x76ac('0xe1')],'visibility':_0x40b4ff[_0x76ac('0xe2')]?_0x76ac('0xe3'):_0x76ac('0xe4'),'messages':_(_0x40b4ff[_0x76ac('0xd9')])[_0x76ac('0x85')]({'secret':![]})[_0x76ac('0x31')](function(_0x4e156b){if(_0x4e156b[_0x76ac('0xd8')]){var _0x41d203=path[_0x76ac('0xce')](_0x58feeb,_0x4e156b[_0x76ac('0xd8')][_0x76ac('0xe5')]);if(fs['existsSync'](_0x41d203)){fs[_0x76ac('0xe6')](_0x41d203)[_0x76ac('0xe7')](fs[_0x76ac('0xe8')](path['join'](_0x3d1f35,_0x4e156b['Attachment']['basename'])));}}return{'date':moment(_0x4e156b[_0x76ac('0x79')])[_0x76ac('0xc2')](_0x76ac('0xc3'))['toString'](),'sender':_0x4e156b[_0x76ac('0xda')]===_0x76ac('0xe9')?_0x4e156b[_0x76ac('0xd4')]?_0x4e156b[_0x76ac('0xd4')][_0x76ac('0x32')]:'System':_0x4e156b[_0x76ac('0x64')][_0x76ac('0xd6')]+(_0x4e156b[_0x76ac('0x64')][_0x76ac('0xd7')]?'\x20'+_0x4e156b[_0x76ac('0x64')][_0x76ac('0xd7')]:''),'body':_0x4e156b[_0x76ac('0xd8')]?_0x4e156b[_0x76ac('0xd8')][_0x76ac('0xe5')]:_0x4e156b[_0x76ac('0xba')],'direction':_0x4e156b[_0x76ac('0xda')]===_0x76ac('0xe9')?'A':'C','secret':_0x4e156b['secret'],'read':_0x4e156b[_0x76ac('0x81')],'attachment':_0x4e156b[_0x76ac('0xd8')]};})['value']()};return ejs[_0x76ac('0xea')](path['join'](config[_0x76ac('0xcf')],'server',_0x76ac('0xeb'),'downloadInteraction.ejs'),{'interaction':_0x56da1c})[_0x76ac('0x2b')](function(_0x4f7b20){var _0x93aba1=path[_0x76ac('0xce')](_0x3d1f35,_0x76ac('0xec')+_0x40b4ff['id']+'-'+_0x329a8c+'.pdf');var _0x3d2c68={'path':_0x93aba1,'channel':_0x76ac('0xed'),'interactionId':_0x40b4ff['id']};return pdf[_0x76ac('0xee')](_0x4f7b20,_0x3d2c68);})[_0x76ac('0x2b')](function(){return new BPromise(function(_0x55e322,_0x3894c3){zipdir(_0x3d1f35,{'saveTo':_0x59ae},function(_0x14ccd2,_0x2891d8){if(_0x14ccd2)return _0x3894c3(_0x14ccd2);return _0x55e322(_0x2891d8);});})[_0x76ac('0x2b')](function(){return new BPromise(function(_0x1464d6,_0x345bad){rimraf(_0x3d1f35,function(_0x145101){if(_0x145101)_0x345bad(_0x145101);return _0x1464d6();});});})[_0x76ac('0x2b')](function(){return _0x135575[_0x76ac('0xcc')](_0x59ae,_0x565d03,function(_0x28c5a1){if(_0x28c5a1){console[_0x76ac('0xef')](_0x76ac('0xf0'),_0x28c5a1);}else{fs['unlinkSync'](_0x59ae);}});});});}else{return _0x135575[_0x76ac('0x2c')](0xc8);}})['catch'](handleError(_0x135575,null));};
\ No newline at end of file
+var _0x5130=['where','filters','select','field','color','tools_tags','u.id','ui.OpenchannelInteractionId','from','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','unreadMessages','`\x20>\x200','Contact','$substring','value','getFullTextValue','find','ContactId','text','start','Tag','split','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','body','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','having','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SELECT','clone','contactName','DESC','isEmpty','resolve','OpenchannelAccountId','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','agent','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','toString','keyBy','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','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','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','rows','catch','show','params','includeAll','include','merge','options','create','destroy','describe','addMessage','ids','omit','getMessages','findOne','OpenchannelMessage','nolimit','pick','format','YYYY-MM-DD\x20HH:mm:ss','addTags','spread','findAll','openchannelInteractionTags:save','removeTags','download','root','server','files','tmp','join','attachments','transcript-%d-%s.zip','User','firstName','lastName','Attachment','Messages','direction','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','closedAt','Private','basename','existsSync','createReadStream','createWriteStream','out','System','views','downloadInteraction.ejs','createPdfFromHTML','log','err','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','error','stack','name','send','Users','fullname','TagIds','forEach','Tags','push','index','map','OpenchannelInteraction','rawAttributes','type','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort'];(function(_0x18d212,_0x3d20f3){var _0x46bb07=function(_0x2286b5){while(--_0x2286b5){_0x18d212['push'](_0x18d212['shift']());}};_0x46bb07(++_0x3d20f3);}(_0x5130,0xa4));var _0x0513=function(_0x11ca63,_0xea9f9c){_0x11ca63=_0x11ca63-0x0;var _0x41f1f6=_0x5130[_0x11ca63];return _0x41f1f6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0513('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0513('0x1'));var rp=require(_0x0513('0x2'));var moment=require(_0x0513('0x3'));var BPromise=require(_0x0513('0x4'));var Mustache=require(_0x0513('0x5'));var util=require(_0x0513('0x6'));var path=require(_0x0513('0x7'));var sox=require('sox');var csv=require(_0x0513('0x8'));var ejs=require(_0x0513('0x9'));var fs=require('fs');var fs_extra=require(_0x0513('0xa'));var _=require(_0x0513('0xb'));var squel=require(_0x0513('0xc'));var crypto=require(_0x0513('0xd'));var jsforce=require(_0x0513('0xe'));var deskjs=require(_0x0513('0xf'));var toCsv=require(_0x0513('0x8'));var querystring=require(_0x0513('0x10'));var Papa=require(_0x0513('0x11'));var Redis=require(_0x0513('0x12'));var authService=require(_0x0513('0x13'));var qs=require(_0x0513('0x14'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0513('0x15'));var utils=require(_0x0513('0x16'));var config=require(_0x0513('0x17'));var licenseUtil=require(_0x0513('0x18'));var db=require('../../mysqldb')['db'];config[_0x0513('0x19')]=_[_0x0513('0x1a')](config['redis'],{'host':_0x0513('0x1b'),'port':0x18eb});var socket=require(_0x0513('0x1c'))(new Redis(config['redis']));require(_0x0513('0x1d'))['register'](socket);function respondWithStatusCode(_0x47062b,_0x580040){_0x580040=_0x580040||0xcc;return function(_0xcfa1d6){if(_0xcfa1d6){return _0x47062b[_0x0513('0x1e')](_0x580040);}return _0x47062b[_0x0513('0x1f')](_0x580040)[_0x0513('0x20')]();};}function respondWithResult(_0x45897d,_0x1ea2ff){_0x1ea2ff=_0x1ea2ff||0xc8;return function(_0x23e631){if(_0x23e631){return _0x45897d['status'](_0x1ea2ff)[_0x0513('0x21')](_0x23e631);}};}function respondWithFilteredResult(_0x3e3154,_0x544d3a){return function(_0x3f5c86){if(_0x3f5c86){var _0x33a8dc=typeof _0x544d3a['offset']===_0x0513('0x22')&&typeof _0x544d3a[_0x0513('0x23')]===_0x0513('0x22');var _0x348367=_0x3f5c86[_0x0513('0x24')];var _0x675d4a=_0x33a8dc?0x0:_0x544d3a[_0x0513('0x25')];var _0x266fea=_0x33a8dc?_0x3f5c86['count']:_0x544d3a['offset']+_0x544d3a['limit'];var _0x5425ef;if(_0x266fea>=_0x348367){_0x266fea=_0x348367;_0x5425ef=0xc8;}else{_0x5425ef=0xce;}_0x3e3154[_0x0513('0x1f')](_0x5425ef);return _0x3e3154[_0x0513('0x26')](_0x0513('0x27'),_0x675d4a+'-'+_0x266fea+'/'+_0x348367)['json'](_0x3f5c86);}return null;};}function patchUpdates(_0x3c28f3){return function(_0x35642c){try{jsonpatch[_0x0513('0x28')](_0x35642c,_0x3c28f3,!![]);}catch(_0x48190c){return BPromise[_0x0513('0x29')](_0x48190c);}return _0x35642c[_0x0513('0x2a')]();};}function saveUpdates(_0x2a2f12,_0x1a3c88){return function(_0x21c9d2){if(_0x21c9d2){return _0x21c9d2['update'](_0x2a2f12)['then'](function(_0x125eb0){return _0x125eb0;});}return null;};}function removeEntity(_0xd26c8e,_0x589276){return function(_0x241504){if(_0x241504){return _0x241504['destroy']()[_0x0513('0x2b')](function(){_0xd26c8e[_0x0513('0x1f')](0xcc)[_0x0513('0x20')]();});}};}function handleEntityNotFound(_0x4178d8,_0x38724b){return function(_0x48fb6e){if(!_0x48fb6e){_0x4178d8[_0x0513('0x1e')](0x194);}return _0x48fb6e;};}function handleError(_0x2ad64d,_0x2d35b5){_0x2d35b5=_0x2d35b5||0x1f4;return function(_0x56ea2e){logger[_0x0513('0x2c')](_0x56ea2e[_0x0513('0x2d')]);if(_0x56ea2e[_0x0513('0x2e')]){delete _0x56ea2e[_0x0513('0x2e')];}_0x2ad64d['status'](_0x2d35b5)[_0x0513('0x2f')](_0x56ea2e);};}function getInteractionUsers(_0x1ff229,_0x3c3d0d){return new BPromise(function(_0x16060b,_0xd84464){try{if(_0x3c3d0d[_0x1ff229['id']]){_0x1ff229[_0x0513('0x30')]=_['map'](_0x3c3d0d[_0x1ff229['id']],function(_0x1834ae){return{'id':_0x1834ae['id'],'fullname':_0x1834ae[_0x0513('0x31')]};});}}catch(_0x1d83ae){_0xd84464(_0x1d83ae);}_0x16060b(_0x1ff229);});}function getInteractionTags(_0xc21454,_0x98ab10){return new BPromise(function(_0x4cfb97,_0x498ccb){try{if(_0xc21454[_0x0513('0x32')]){_0xc21454['Tags']=[];_0xc21454[_0x0513('0x32')]['split'](',')[_0x0513('0x33')](function(_0xc2da98){_0xc21454[_0x0513('0x34')][_0x0513('0x35')](_0x98ab10[_0xc2da98]);});}delete _0xc21454['TagIds'];}catch(_0x26a4b0){_0x498ccb(_0x26a4b0);}_0x4cfb97(_0xc21454);});}function updateOpenchannelInteraction(_0x1c1152,_0x2cc612,_0x128dc1){return new BPromise(function(_0x1bd5bb,_0x2f0630){return getInteractionUsers(_0x1c1152,_0x128dc1)[_0x0513('0x2b')](function(_0x476265){return getInteractionTags(_0x476265,_0x2cc612);})[_0x0513('0x2b')](function(_0x1597e3){_0x1bd5bb(_0x1597e3);})['catch'](function(_0x283431){_0x2f0630(_0x283431);});});}exports[_0x0513('0x36')]=function(_0x5a222f,_0x3fb082){var _0xc494b2={},_0x4ef35a={},_0x215e92={'count':0x0,'rows':[]};var _0x317440=_[_0x0513('0x37')](db[_0x0513('0x38')][_0x0513('0x39')],function(_0x233663){return{'name':_0x233663['fieldName'],'type':_0x233663[_0x0513('0x3a')]['key']};});_0x4ef35a[_0x0513('0x3b')]=_[_0x0513('0x37')](_0x317440,_0x0513('0x2e'));_0x4ef35a['query']=_[_0x0513('0x3c')](_0x5a222f[_0x0513('0x3d')]);_0x4ef35a['filters']=_[_0x0513('0x3e')](_0x4ef35a[_0x0513('0x3b')],_0x4ef35a[_0x0513('0x3d')]);_0xc494b2[_0x0513('0x3f')]=_[_0x0513('0x3e')](_0x4ef35a[_0x0513('0x3b')],qs[_0x0513('0x40')](_0x5a222f[_0x0513('0x3d')][_0x0513('0x40')]));_0xc494b2[_0x0513('0x3f')]=_0xc494b2[_0x0513('0x3f')][_0x0513('0x41')]?_0xc494b2[_0x0513('0x3f')]:_0x4ef35a[_0x0513('0x3b')];if(!_0x5a222f[_0x0513('0x3d')][_0x0513('0x42')]('nolimit')){_0xc494b2['limit']=qs[_0x0513('0x23')](_0x5a222f[_0x0513('0x3d')][_0x0513('0x23')]);_0xc494b2[_0x0513('0x25')]=qs[_0x0513('0x25')](_0x5a222f['query']['offset']);}_0xc494b2[_0x0513('0x43')]=qs['sort'](_0x5a222f[_0x0513('0x3d')][_0x0513('0x44')]);_0xc494b2[_0x0513('0x45')]=qs['filters'](_['pick'](_0x5a222f['query'],_0x4ef35a[_0x0513('0x46')]),_0x317440);var _0x1e59a1=[];var _0x193f6d=squel[_0x0513('0x47')]()[_0x0513('0x48')]('id')[_0x0513('0x48')](_0x0513('0x2e'))['field'](_0x0513('0x49'))['from'](_0x0513('0x4a'));var _0x350247=squel['select']()[_0x0513('0x48')](_0x0513('0x4b'))[_0x0513('0x48')]('u.fullname')['field'](_0x0513('0x4c'))[_0x0513('0x4d')](_0x0513('0x4e'),'ui')[_0x0513('0x4f')](_0x0513('0x50'),'u',_0x0513('0x51'));var _0x5aaa80=squel['select']()['from']('openchannel_interactions','i')[_0x0513('0x4f')](_0x0513('0x52'),'c',_0x0513('0x53'))['left_join'](_0x0513('0x50'),'o',_0x0513('0x54'))[_0x0513('0x4f')](_0x0513('0x55'),'a',_0x0513('0x56'))['left_join'](_0x0513('0x57'),'me',_0x0513('0x58'))[_0x0513('0x4f')](_0x0513('0x59'),'it','it.OpenchannelInteractionId\x20=\x20i.id')[_0x0513('0x4f')](_0x0513('0x4a'),'t',_0x0513('0x5a'));var _0x55b1c4=squel[_0x0513('0x5b')]();var _0x519e75=[];var _0xdba067=squel[_0x0513('0x5b')]();var _0x5d4df2;if(_0x5a222f[_0x0513('0x3d')][_0x0513('0x5c')]){_0x5d4df2=as['parseSearch'](_0x5a222f[_0x0513('0x3d')]['search']);var _0xdfd0a1=_0x5d4df2[_0x0513('0x5d')];for(var _0x5411cd=0x0;_0x5411cd<_0x5d4df2[_0x0513('0x5e')][_0x0513('0x41')];_0x5411cd++){var _0x133eb7=_0x5d4df2['conditions'][_0x5411cd];var _0x30c72b='i';var _0x3b5118=_['find'](_0x317440,[_0x0513('0x2e'),_0x133eb7[_0x0513('0x48')]]);if(!_0x3b5118){switch(_0x133eb7['field']){case _0x0513('0x5f'):if(_0x133eb7['value']==0x1){_0x5aaa80['having']('`'+_0x133eb7['field']+'`\x20=\x200');}else{_0x5aaa80['having']('`'+_0x133eb7[_0x0513('0x48')]+_0x0513('0x60'));}break;case _0x0513('0x61'):if(_0x133eb7['operator']===_0x0513('0x62')){if(_0x133eb7[_0x0513('0x63')]['split']('\x20')[_0x0513('0x41')]>0x1){_0x55b1c4[_0xdfd0a1]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0513('0x64')](_0x133eb7[_0x0513('0x63')]),null);}else{var _0xa8eb99='%'+_0x133eb7[_0x0513('0x63')]+'%';_0x55b1c4[_0xdfd0a1]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0xa8eb99,_0xa8eb99,_0xa8eb99);}}else{_0x3b5118=_[_0x0513('0x65')](_0x317440,[_0x0513('0x2e'),_0x0513('0x66')]);_0x133eb7[_0x0513('0x48')]=_0x0513('0x66');_0x272d48=as['buildExpression'](_0x30c72b,_0x3b5118[_0x0513('0x3a')],_0x133eb7);_0x55b1c4[_0xdfd0a1](_0x272d48[_0x0513('0x67')],_0x272d48['value'][_0x0513('0x68')],_0x272d48[_0x0513('0x63')][_0x0513('0x20')]);}break;case _0x0513('0x69'):var _0x46b07d=_0x133eb7[_0x0513('0x63')][_0x0513('0x6a')](',')[_0x0513('0x37')](function(_0x23aca0){return Number(_0x23aca0);});_0x46b07d[_0x0513('0x33')](function(_0x585de5){_0xdba067['or'](_0x0513('0x6b'),'%,'+_0x585de5+',%');});_0x519e75=_['union'](_0x519e75,_0x46b07d);break;case'User':if(_0x133eb7['operator']===_0x0513('0x62')){_0x55b1c4[_0xdfd0a1](_0x0513('0x6c'),'%'+_0x133eb7['value']+'%',null);}else{_0x3b5118=_['find'](_0x317440,[_0x0513('0x2e'),_0x0513('0x6d')]);_0x133eb7[_0x0513('0x48')]=_0x0513('0x6d');_0x272d48=as[_0x0513('0x6e')](_0x30c72b,_0x3b5118[_0x0513('0x3a')],_0x133eb7);_0x55b1c4[_0xdfd0a1](_0x272d48[_0x0513('0x67')],_0x272d48[_0x0513('0x63')]['start'],_0x272d48[_0x0513('0x63')][_0x0513('0x20')]);}break;case _0x0513('0x6f'):_0x272d48=as['buildExpression']('me',null,_0x133eb7);_0x55b1c4[_0xdfd0a1](_0x272d48['text'],_0x272d48['value']['start'],_0x272d48[_0x0513('0x63')][_0x0513('0x20')]);break;}}else{var _0x272d48=as[_0x0513('0x6e')](_0x30c72b,_0x3b5118[_0x0513('0x3a')],_0x133eb7);_0x55b1c4[_0xdfd0a1](_0x272d48[_0x0513('0x67')],_0x272d48['value'][_0x0513('0x68')],_0x272d48['value'][_0x0513('0x20')]);}}}else{var _0x2bf5d5=_(_0x5a222f[_0x0513('0x3d')])[_0x0513('0x3c')]()[_0x0513('0x37')](function(_0x34f3e2){return _['some'](_0x317440,[_0x0513('0x2e'),_0x34f3e2])?_0x34f3e2:undefined;})['compact']()[_0x0513('0x63')]();if(!_['isEmpty'](_0x2bf5d5)){_0x2bf5d5[_0x0513('0x33')](function(_0x5e84a5){if(_0x5e84a5==='OpenchannelAccountId'){_0x5aaa80['where'](_0x0513('0x70'),[][_0x0513('0x71')](_0x5a222f['query'][_0x5e84a5]));}else if(_0x5e84a5===_0x0513('0x72')){var _0x55ebbf=JSON[_0x0513('0x73')](_0x5a222f[_0x0513('0x3d')][_0x5e84a5])[_0x0513('0x74')];var _0x5e9933=JSON[_0x0513('0x73')](_0x5a222f[_0x0513('0x3d')][_0x5e84a5])[_0x0513('0x75')];_0x5aaa80[_0x0513('0x45')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x55ebbf,_0x5e9933);}else{if(_0x5a222f[_0x0513('0x3d')][_0x5e84a5]===_0x0513('0x76')){_0x5aaa80['where']('i.'+_0x5e84a5+_0x0513('0x77'));}else{_0x5aaa80[_0x0513('0x45')]('i.'+_0x5e84a5+_0x0513('0x78'),_0x5a222f['query'][_0x5e84a5]);}}});}if(_0x5a222f['query'][_0x0513('0x79')]){if(_0x5a222f['query'][_0x0513('0x79')]==0x1){_0x5aaa80['having'](_0x0513('0x7a'));}else{_0x5aaa80[_0x0513('0x7b')](_0x0513('0x7c'));}}if(_0x5a222f[_0x0513('0x3d')][_0x0513('0x7d')]){_0x519e75=_[_0x0513('0x7e')](_0x5a222f[_0x0513('0x3d')][_0x0513('0x7d')])?_0x5a222f[_0x0513('0x3d')][_0x0513('0x7d')]:new Array(_0x5a222f['query'][_0x0513('0x7d')]);_0x519e75[_0x0513('0x33')](function(_0x40aa58){_0xdba067['or'](_0x0513('0x6b'),'%,'+_0x40aa58+',%');});}if(_0x5a222f[_0x0513('0x3d')][_0x0513('0x7f')]){var _0x39f68d=_0x5a222f['query'][_0x0513('0x7f')][_0x0513('0x80')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x0513('0x81')](_0x39f68d)){_0x55b1c4['or'](_0x0513('0x82'),_0x39f68d+'%');}else{_0x55b1c4['or'](_0x0513('0x83'),qs[_0x0513('0x64')](_0x39f68d))['or']('i.from\x20LIKE\x20?',_0x39f68d+'%')['or'](_0x0513('0x84'),_0x39f68d+'%');}}}_0x5aaa80['where'](_0x55b1c4);_0x5aaa80['group'](_0x0513('0x85'));var _0x12a2ab={'type':db[_0x0513('0x86')][_0x0513('0x87')][_0x0513('0x88')],'raw':!![]};var _0xb3ee29=_0x5aaa80[_0x0513('0x89')]();_0xb3ee29[_0x0513('0x48')](_0x0513('0x85'));_0xb3ee29['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x0513('0x5f'));if(_0xc494b2[_0x0513('0x43')]){_0xc494b2[_0x0513('0x43')][_0x0513('0x33')](function(_0xe1c375){var _0x1a007e=_0xe1c375[0x0]===_0x0513('0x8a')?_0xe1c375[0x0]:'i.'+_0xe1c375[0x0];_0x5aaa80[_0x0513('0x43')](_0x1a007e,_0xe1c375[0x1]===_0x0513('0x8b')?![]:!![]);});}if(!_[_0x0513('0x8c')](_0x519e75)){_0x5aaa80[_0x0513('0x7b')](_0xdba067);_0xb3ee29[_0x0513('0x45')]('t.id\x20IN\x20?',_0x519e75);}BPromise[_0x0513('0x8d')]()['then'](function(){if(!_0x5d4df2){if(_0x5a222f['query'][_0x0513('0x8e')])return;_0xb3ee29[_0x0513('0x45')](_0x0513('0x8f'));_0x5aaa80[_0x0513('0x45')](_0x0513('0x8f'));return;}if(_0x5a222f[_0x0513('0x90')]['role']!==_0x0513('0x91'))return;return _0x5a222f[_0x0513('0x90')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})[_0x0513('0x2b')](function(_0xb4b96){if(_['isEmpty'](_0xb4b96)){_0xb3ee29['where'](_0x0513('0x92'));_0x5aaa80[_0x0513('0x45')](_0x0513('0x92'));}else{_0xb3ee29[_0x0513('0x45')](_0x0513('0x70'),_['map'](_0xb4b96,'id'));_0x5aaa80[_0x0513('0x45')](_0x0513('0x70'),_[_0x0513('0x37')](_0xb4b96,'id'));}});})['then'](function(){if(_0x5a222f[_0x0513('0x90')]['role']===_0x0513('0x91')&&!_0x5d4df2&&!_0x5a222f[_0x0513('0x3d')][_0x0513('0x8e')])return[];return db['sequelize']['query'](_0xb3ee29['toString'](),_0x12a2ab);})[_0x0513('0x2b')](function(_0x43c52f){_0x215e92[_0x0513('0x24')]=_0x43c52f[_0x0513('0x41')];if(_0x215e92['count']===0x0)return[];return db[_0x0513('0x93')][_0x0513('0x3d')](_0x193f6d[_0x0513('0x94')](),_0x12a2ab)[_0x0513('0x2b')](function(_0x5d23aa){_0x1e59a1=_[_0x0513('0x95')](_0x5d23aa,'id');_0x12a2ab=_['merge'](_0x12a2ab,{'model':db[_0x0513('0x38')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5a222f[_0x0513('0x3d')][_0x0513('0x40')]){_0xc494b2[_0x0513('0x3f')][_0x0513('0x33')](function(_0x48a9c5){_0x5aaa80[_0x0513('0x48')]('i.'+_0x48a9c5);});}else{_0x5aaa80[_0x0513('0x48')](_0x0513('0x96'),_0x0513('0x5f'));_0x5aaa80[_0x0513('0x48')](_0x0513('0x97'),_0x0513('0x98'));_0x5aaa80[_0x0513('0x48')](_0x0513('0x99'),_0x0513('0x9a'));_0x5aaa80[_0x0513('0x48')](_0x0513('0x9b'),_0x0513('0x8a'));_0x5aaa80[_0x0513('0x48')](_0x0513('0x9c'));_0x5aaa80[_0x0513('0x48')](_0x0513('0x9d'),_0x0513('0x9e'));_0x5aaa80['field'](_0x0513('0x9f'),_0x0513('0xa0'));_0x5aaa80['field'](_0x0513('0xa1'),'Contact.email');_0x5aaa80[_0x0513('0x48')]('c.phone',_0x0513('0xa2'));_0x5aaa80['field'](_0x0513('0xa3'),'Contact.mobile');_0x5aaa80['field'](_0x0513('0xa4'),_0x0513('0xa5'));_0x5aaa80[_0x0513('0x48')](_0x0513('0xa6'),'Owner.fullname');_0x5aaa80[_0x0513('0x48')](_0x0513('0xa7'),_0x0513('0xa8'));_0x5aaa80[_0x0513('0x48')](_0x0513('0xa9'),_0x0513('0x32'));}if(_0xc494b2['limit'])_0x5aaa80[_0x0513('0x23')](_0xc494b2[_0x0513('0x23')]);if(_0xc494b2[_0x0513('0x25')])_0x5aaa80[_0x0513('0x25')](_0xc494b2[_0x0513('0x25')]);return db[_0x0513('0x93')][_0x0513('0x3d')](_0x5aaa80['toString'](),_0x12a2ab);})[_0x0513('0x2b')](function(_0x4beb45){if(_0x4beb45[_0x0513('0x41')]>0x0)_0x350247[_0x0513('0x45')](_0x0513('0xaa'),_['map'](_0x4beb45,'id'));return db[_0x0513('0x93')][_0x0513('0x3d')](_0x350247[_0x0513('0x94')](),_0x12a2ab)[_0x0513('0x2b')](function(_0x53b12b){var _0x1d1ab2=_[_0x0513('0xab')](_0x53b12b,_0x0513('0xac'));var _0xdad0e4=[];_0x4beb45['forEach'](function(_0x3f286d){_0xdad0e4[_0x0513('0x35')](updateOpenchannelInteraction(_0x3f286d,_0x1e59a1,_0x1d1ab2));});return BPromise[_0x0513('0xad')](_0xdad0e4);});});})[_0x0513('0x2b')](function(_0x24654d){_0x215e92[_0x0513('0xae')]=_0x24654d;return _0x215e92;})['then'](respondWithFilteredResult(_0x3fb082,_0xc494b2))[_0x0513('0xaf')](handleError(_0x3fb082,null));};exports[_0x0513('0xb0')]=function(_0x453f20,_0xe64f9d){var _0x3c0378={};if(_0x453f20[_0x0513('0x3d')][_0x0513('0x3a')]&&_0x453f20['query'][_0x0513('0x3a')]===_0x0513('0x4d')){_0x3c0378['from']=_0x453f20[_0x0513('0xb1')]['id'];}else{_0x3c0378['id']=_0x453f20['params']['id'];}var _0x55fc8b={'raw':![],'where':_0x3c0378},_0x56dafc={};_0x56dafc[_0x0513('0x3b')]=_[_0x0513('0x3c')](db['OpenchannelInteraction'][_0x0513('0x39')]);_0x56dafc[_0x0513('0x3d')]=_[_0x0513('0x3c')](_0x453f20[_0x0513('0x3d')]);_0x56dafc[_0x0513('0x46')]=_[_0x0513('0x3e')](_0x56dafc[_0x0513('0x3b')],_0x56dafc['query']);_0x55fc8b[_0x0513('0x3f')]=_[_0x0513('0x3e')](_0x56dafc['model'],qs['fields'](_0x453f20['query'][_0x0513('0x40')]));_0x55fc8b[_0x0513('0x3f')]=_0x55fc8b[_0x0513('0x3f')][_0x0513('0x41')]?_0x55fc8b[_0x0513('0x3f')]:_0x56dafc['model'];if(_0x453f20[_0x0513('0x3d')][_0x0513('0xb2')]){_0x55fc8b[_0x0513('0xb3')]=[{'all':!![]}];}_0x55fc8b=_[_0x0513('0xb4')]({},_0x55fc8b,_0x453f20[_0x0513('0xb5')]);return db[_0x0513('0x38')][_0x0513('0x65')](_0x55fc8b)[_0x0513('0x2b')](handleEntityNotFound(_0xe64f9d,null))[_0x0513('0x2b')](respondWithResult(_0xe64f9d,null))[_0x0513('0xaf')](handleError(_0xe64f9d,null));};exports['create']=function(_0x5bde64,_0x270749){return db[_0x0513('0x38')][_0x0513('0xb6')](_0x5bde64['body'],{})[_0x0513('0x2b')](respondWithResult(_0x270749,0xc9))[_0x0513('0xaf')](handleError(_0x270749,null));};exports['update']=function(_0x52e8dc,_0x1c5dee){if(_0x52e8dc[_0x0513('0x6f')]['id']){delete _0x52e8dc[_0x0513('0x6f')]['id'];}return db['OpenchannelInteraction'][_0x0513('0x65')]({'where':{'id':_0x52e8dc[_0x0513('0xb1')]['id']}})[_0x0513('0x2b')](handleEntityNotFound(_0x1c5dee,null))[_0x0513('0x2b')](saveUpdates(_0x52e8dc[_0x0513('0x6f')],null))[_0x0513('0x2b')](respondWithResult(_0x1c5dee,null))[_0x0513('0xaf')](handleError(_0x1c5dee,null));};exports[_0x0513('0xb7')]=function(_0x3c1026,_0x281db){return db['OpenchannelInteraction']['find']({'where':{'id':_0x3c1026[_0x0513('0xb1')]['id']}})[_0x0513('0x2b')](handleEntityNotFound(_0x281db,null))['then'](removeEntity(_0x281db,null))[_0x0513('0xaf')](handleError(_0x281db,null));};exports['describe']=function(_0x571b88,_0x2a98d0){return db['OpenchannelInteraction'][_0x0513('0xb8')]()[_0x0513('0x2b')](respondWithResult(_0x2a98d0,null))[_0x0513('0xaf')](handleError(_0x2a98d0,null));};exports['addMessage']=function(_0x23d991,_0x47c7d0,_0x405fd7){return db['OpenchannelMessage'][_0x0513('0x65')]({'where':{'id':_0x23d991['params']['id']}})['then'](handleEntityNotFound(_0x47c7d0,null))[_0x0513('0x2b')](function(_0x570ba7){if(_0x570ba7){return _0x570ba7[_0x0513('0xb9')](_0x23d991[_0x0513('0x6f')][_0x0513('0xba')],_[_0x0513('0xbb')](_0x23d991['body'],[_0x0513('0xba'),'id'])||{});}})['then'](respondWithResult(_0x47c7d0,null))[_0x0513('0xaf')](handleError(_0x47c7d0,null));};exports[_0x0513('0xbc')]=function(_0x4544e6,_0x5ebf5b,_0x54efac){var _0x16565c={'raw':![],'where':{}};var _0x4e5ffe={};var _0x421d61={'count':0x0,'rows':[]};return db[_0x0513('0x38')][_0x0513('0xbd')]({'where':{'id':_0x4544e6[_0x0513('0xb1')]['id']}})[_0x0513('0x2b')](handleEntityNotFound(_0x5ebf5b,null))[_0x0513('0x2b')](function(_0x2cd843){if(_0x2cd843){_0x4e5ffe['model']=_[_0x0513('0x3c')](db[_0x0513('0xbe')][_0x0513('0x39')]);_0x4e5ffe[_0x0513('0x3d')]=_['keys'](_0x4544e6['query']);_0x4e5ffe[_0x0513('0x46')]=_[_0x0513('0x3e')](_0x4e5ffe[_0x0513('0x3b')],_0x4e5ffe[_0x0513('0x3d')]);_0x16565c[_0x0513('0x3f')]=_[_0x0513('0x3e')](_0x4e5ffe[_0x0513('0x3b')],qs['fields'](_0x4544e6[_0x0513('0x3d')]['fields']));_0x16565c[_0x0513('0x3f')]=_0x16565c[_0x0513('0x3f')][_0x0513('0x41')]?_0x16565c[_0x0513('0x3f')]:_0x4e5ffe[_0x0513('0x3b')];if(!_0x4544e6[_0x0513('0x3d')][_0x0513('0x42')](_0x0513('0xbf'))){_0x16565c[_0x0513('0x23')]=qs['limit'](_0x4544e6[_0x0513('0x3d')]['limit']);_0x16565c[_0x0513('0x25')]=qs[_0x0513('0x25')](_0x4544e6[_0x0513('0x3d')][_0x0513('0x25')]);}_0x16565c[_0x0513('0x43')]=qs[_0x0513('0x44')](_0x4544e6[_0x0513('0x3d')]['sort']);_0x16565c[_0x0513('0x45')]=qs[_0x0513('0x46')](_[_0x0513('0xc0')](_0x4544e6['query'],_0x4e5ffe['filters']));_0x16565c[_0x0513('0x45')][_0x0513('0xac')]=_0x2cd843['id'];if(_0x4544e6['query'][_0x0513('0x7f')]){_0x16565c[_0x0513('0x45')]=_[_0x0513('0xb4')](_0x16565c[_0x0513('0x45')],{'$or':_[_0x0513('0x37')](_0x16565c[_0x0513('0x3f')],function(_0x2227dc){var _0xa4f526={};_0xa4f526[_0x2227dc]={'$like':'%'+_0x4544e6[_0x0513('0x3d')]['filter']+'%'};return _0xa4f526;})});}if(_0x4544e6[_0x0513('0x3d')]['$gte']){var _0x1bb3dc=_0x4544e6[_0x0513('0x3d')][_0x0513('0x74')]['split'](',');var _0x10cb6a={};_0x10cb6a[_0x1bb3dc[0x0]]={'$gte':moment(_0x1bb3dc[0x1])[_0x0513('0xc1')](_0x0513('0xc2'))};_0x16565c[_0x0513('0x45')]=_[_0x0513('0xb4')](_0x16565c[_0x0513('0x45')],_0x10cb6a);}_0x16565c=_[_0x0513('0xb4')]({},_0x16565c,_0x4544e6[_0x0513('0xb5')]);return db['OpenchannelMessage'][_0x0513('0x24')]({'where':_0x16565c['where']})[_0x0513('0x2b')](function(_0x5dcec2){_0x421d61['count']=_0x5dcec2;if(_0x4544e6['query']['includeAll']){_0x16565c[_0x0513('0xb3')]=[{'all':!![]}];}return db[_0x0513('0xbe')]['findAll'](_0x16565c);})[_0x0513('0x2b')](function(_0x4f8ece){_0x421d61[_0x0513('0xae')]=_0x4f8ece;return _0x421d61;});}})[_0x0513('0x2b')](respondWithFilteredResult(_0x5ebf5b,_0x16565c))[_0x0513('0xaf')](handleError(_0x5ebf5b,null));};exports[_0x0513('0xc3')]=function(_0x742e2b,_0x5554cf,_0x447101){return db[_0x0513('0x38')][_0x0513('0x65')]({'where':{'id':_0x742e2b['params']['id']}})[_0x0513('0x2b')](handleEntityNotFound(_0x5554cf,null))[_0x0513('0x2b')](function(_0x26ed16){if(_0x26ed16){return _0x26ed16['setTags'](_0x742e2b[_0x0513('0x6f')][_0x0513('0xba')],_[_0x0513('0xbb')](_0x742e2b[_0x0513('0x6f')],[_0x0513('0xba'),'id'])||{})[_0x0513('0xc4')](function(){return db['Tag'][_0x0513('0xc5')]({'attributes':['id',_0x0513('0x2e'),_0x0513('0x49')],'where':{'id':_0x742e2b['body'][_0x0513('0xba')]}});})[_0x0513('0x2b')](function(_0x1549e3){socket['emit'](_0x0513('0xc6'),{'id':Number(_0x742e2b['params']['id']),'tags':_0x1549e3||[]});return{'id':Number(_0x742e2b[_0x0513('0xb1')]['id']),'tags':_0x1549e3||[]};});}})[_0x0513('0x2b')](respondWithResult(_0x5554cf,null))['catch'](handleError(_0x5554cf,null));};exports[_0x0513('0xc7')]=function(_0x3ae564,_0x4e8dcf,_0x2e598d){return db['OpenchannelInteraction'][_0x0513('0x65')]({'where':{'id':_0x3ae564[_0x0513('0xb1')]['id']}})[_0x0513('0x2b')](handleEntityNotFound(_0x4e8dcf,null))['then'](function(_0x57d0eb){if(_0x57d0eb){return _0x57d0eb[_0x0513('0xc7')](_0x3ae564[_0x0513('0x3d')][_0x0513('0xba')]);}})[_0x0513('0x2b')](respondWithStatusCode(_0x4e8dcf,null))[_0x0513('0xaf')](handleError(_0x4e8dcf,null));};exports[_0x0513('0xc8')]=function(_0x913d11,_0x1e7e3f){var _0x497f94=moment()['unix']()[_0x0513('0x94')]();var _0x148062=path['join'](config[_0x0513('0xc9')],_0x0513('0xca'),_0x0513('0xcb'),_0x0513('0xcc'));var _0xc40088=path[_0x0513('0xcd')](config[_0x0513('0xc9')],_0x0513('0xca'),_0x0513('0xcb'),_0x0513('0xce'));var _0x3a78e9=path[_0x0513('0xcd')](_0x148062,_0x497f94);var _0x517140=util[_0x0513('0xc1')](_0x0513('0xcf'),_0x913d11['params']['id'],_0x497f94);var _0x187600=path[_0x0513('0xcd')](_0x148062,_0x517140);var _0x1c3d67=[];_0x1c3d67[_0x0513('0x35')]({'model':db[_0x0513('0xd0')],'as':_0x0513('0xd0'),'attributes':['id',_0x0513('0x31')],'raw':!![]});_0x1c3d67['push']({'model':db['CmContact'],'as':_0x0513('0x61'),'attributes':['id',_0x0513('0xd1'),_0x0513('0xd2')],'raw':!![]});if(_0x913d11['query'][_0x0513('0xce')]){_0x1c3d67[_0x0513('0x35')]({'model':db[_0x0513('0xd3')],'as':_0x0513('0xd3'),'raw':!![]});}var _0xd4ac97=[{'model':db[_0x0513('0xbe')],'as':_0x0513('0xd4'),'attributes':['id',_0x0513('0x6f'),_0x0513('0x72'),_0x0513('0xd5'),'secret',_0x0513('0x79')],'include':_0x1c3d67}];_0xd4ac97[_0x0513('0x35')]({'model':db[_0x0513('0xd6')],'as':_0x0513('0xd7'),'attributes':['id',_0x0513('0x2e')]});_0xd4ac97[_0x0513('0x35')]({'model':db[_0x0513('0xd0')],'as':_0x0513('0xd8'),'attributes':['id',_0x0513('0x31')]});return db[_0x0513('0x38')][_0x0513('0x65')]({'where':{'id':_0x913d11['params']['id']},'include':_0xd4ac97})[_0x0513('0x2b')](handleEntityNotFound(_0x1e7e3f,null))[_0x0513('0x2b')](function(_0x30cdd0){if(_0x30cdd0){var _0x2efc0d=_0x30cdd0[_0x0513('0xd9')]({'plain':!![]});fs[_0x0513('0xda')](_0x3a78e9);var _0x3ec659={'channel':_0x0513('0xdb'),'account':_0x2efc0d['Account'][_0x0513('0x2e')],'agent':_0x2efc0d[_0x0513('0xd8')]?_0x2efc0d[_0x0513('0xd8')][_0x0513('0x31')]:'N.A.','createdAt':moment(_0x2efc0d[_0x0513('0x72')])[_0x0513('0xc1')](_0x0513('0xc2'))[_0x0513('0x94')](),'closedAt':_0x2efc0d['closed']?moment(_0x2efc0d[_0x0513('0xdc')])[_0x0513('0xc1')](_0x0513('0xc2'))[_0x0513('0x94')]():'','disposition':_0x2efc0d['disposition'],'visibility':_0x2efc0d['threadId']?'Public':_0x0513('0xdd'),'messages':_(_0x2efc0d['Messages'])[_0x0513('0x7f')]({'secret':![]})[_0x0513('0x37')](function(_0x5ebd17){if(_0x5ebd17['Attachment']){var _0x86391e=path['join'](_0xc40088,_0x5ebd17[_0x0513('0xd3')][_0x0513('0xde')]);if(fs[_0x0513('0xdf')](_0x86391e)){fs[_0x0513('0xe0')](_0x86391e)['pipe'](fs[_0x0513('0xe1')](path[_0x0513('0xcd')](_0x3a78e9,_0x5ebd17[_0x0513('0xd3')][_0x0513('0xde')])));}}return{'date':moment(_0x5ebd17['createdAt'])[_0x0513('0xc1')](_0x0513('0xc2'))[_0x0513('0x94')](),'sender':_0x5ebd17[_0x0513('0xd5')]===_0x0513('0xe2')?_0x5ebd17[_0x0513('0xd0')]?_0x5ebd17[_0x0513('0xd0')][_0x0513('0x31')]:_0x0513('0xe3'):_0x5ebd17[_0x0513('0x61')]['firstName']+(_0x5ebd17[_0x0513('0x61')][_0x0513('0xd2')]?'\x20'+_0x5ebd17[_0x0513('0x61')][_0x0513('0xd2')]:''),'body':_0x5ebd17[_0x0513('0xd3')]?_0x5ebd17[_0x0513('0xd3')][_0x0513('0xde')]:_0x5ebd17[_0x0513('0x6f')],'direction':_0x5ebd17[_0x0513('0xd5')]==='out'?'A':'C','secret':_0x5ebd17['secret'],'read':_0x5ebd17[_0x0513('0x79')],'attachment':_0x5ebd17[_0x0513('0xd3')]};})[_0x0513('0x63')]()};return ejs['renderFile'](path[_0x0513('0xcd')](config[_0x0513('0xc9')],_0x0513('0xca'),_0x0513('0xe4'),_0x0513('0xe5')),{'interaction':_0x3ec659})['then'](function(_0x1932e9){var _0x494c4c=path['join'](_0x3a78e9,'transcript-'+_0x2efc0d['id']+'-'+_0x497f94+'.pdf');var _0x421df2={'path':_0x494c4c,'channel':_0x0513('0xdb'),'interactionId':_0x2efc0d['id']};return pdf[_0x0513('0xe6')](_0x1932e9,_0x421df2);})['then'](function(){return new BPromise(function(_0x435b2e,_0x359f65){zipdir(_0x3a78e9,{'saveTo':_0x187600},function(_0x4b01e3,_0x58ddce){if(_0x4b01e3)return _0x359f65(_0x4b01e3);return _0x435b2e(_0x58ddce);});})[_0x0513('0x2b')](function(){return new BPromise(function(_0x4e4d31,_0x38d75f){rimraf(_0x3a78e9,function(_0x30e18f){if(_0x30e18f)_0x38d75f(_0x30e18f);return _0x4e4d31();});});})[_0x0513('0x2b')](function(){return _0x1e7e3f[_0x0513('0xc8')](_0x187600,_0x517140,function(_0x49fd00){if(_0x49fd00){console[_0x0513('0xe7')](_0x0513('0xe8'),_0x49fd00);}else{fs['unlinkSync'](_0x187600);}});});});}else{return _0x1e7e3f[_0x0513('0x1e')](0xc8);}})[_0x0513('0xaf')](handleError(_0x1e7e3f,null));};
\ No newline at end of file
index ff498cb..b18993d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f0d=['map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners','save','update','getUsers','then','setDataValue','Users'];(function(_0x3d2475,_0x3dc2c8){var _0x4e1625=function(_0xbd56f0){while(--_0xbd56f0){_0x3d2475['push'](_0x3d2475['shift']());}};_0x4e1625(++_0x3dc2c8);}(_0x7f0d,0x113));var _0xd7f0=function(_0xf6804f,_0x1e69a6){_0xf6804f=_0xf6804f-0x0;var _0x21ded0=_0x7f0d[_0xf6804f];return _0x21ded0;};'use strict';var EventEmitter=require(_0xd7f0('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0xd7f0('0x1'))['db'][_0xd7f0('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xd7f0('0x3')](0x0);var events={'afterCreate':_0xd7f0('0x4'),'afterUpdate':_0xd7f0('0x5'),'afterDestroy':'remove'};function emitEvent(_0x12b7b8){return function(_0x136190,_0xcffae9,_0x5cec6b){_0x136190[_0xd7f0('0x6')]({'attributes':['id'],'raw':!![]})[_0xd7f0('0x7')](function(_0x1e232a){_0x136190[_0xd7f0('0x8')](_0xd7f0('0x9'),_0x1e232a[_0xd7f0('0xa')](function(_0x5c1dad){return{'id':_0x5c1dad['id']};}));return OpenchannelMessage[_0xd7f0('0xb')]({'where':{'OpenchannelInteractionId':_0x136190['id'],'direction':'in','read':![]},'raw':!![]});})[_0xd7f0('0x7')](function(_0x151ca7){_0x136190[_0xd7f0('0x8')](_0xd7f0('0xc'),_0x151ca7[_0xd7f0('0xd')]);OpenchannelInteractionEvents['emit'](_0x12b7b8+':'+_0x136190['id'],_0x136190);OpenchannelInteractionEvents[_0xd7f0('0xe')](_0x12b7b8,_0x136190);_0x5cec6b(null);})[_0xd7f0('0xf')](_0x5cec6b(null));};}for(var e in events){if(events[_0xd7f0('0x10')](e)){var event=events[e];OpenchannelInteraction[_0xd7f0('0x11')](e,emitEvent(event));}}module[_0xd7f0('0x12')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xa153=['OpenchannelInteraction','OpenchannelMessage','setMaxListeners','save','update','getUsers','findAll','then','length','emit','catch','hasOwnProperty','events','../../mysqldb'];(function(_0x337518,_0x530369){var _0x45a2a3=function(_0x49af45){while(--_0x49af45){_0x337518['push'](_0x337518['shift']());}};_0x45a2a3(++_0x530369);}(_0xa153,0x132));var _0x3a15=function(_0x359464,_0x3d1f02){_0x359464=_0x359464-0x0;var _0x358f92=_0xa153[_0x359464];return _0x358f92;};'use strict';var EventEmitter=require(_0x3a15('0x0'));var OpenchannelInteraction=require(_0x3a15('0x1'))['db'][_0x3a15('0x2')];var OpenchannelMessage=require(_0x3a15('0x1'))['db'][_0x3a15('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x3a15('0x4')](0x0);var events={'afterCreate':_0x3a15('0x5'),'afterUpdate':_0x3a15('0x6'),'afterDestroy':'remove'};function emitEvent(_0x2619a4){return function(_0x279818,_0x18eaf1,_0x4d606d){_0x279818[_0x3a15('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0xcc3e05){_0x279818['setDataValue']('Users',_0xcc3e05['map'](function(_0x221c61){return{'id':_0x221c61['id']};}));return OpenchannelMessage[_0x3a15('0x8')]({'where':{'OpenchannelInteractionId':_0x279818['id'],'direction':'in','read':![]},'raw':!![]});})[_0x3a15('0x9')](function(_0x129a99){_0x279818['setDataValue']('unreadMessages',_0x129a99[_0x3a15('0xa')]);OpenchannelInteractionEvents[_0x3a15('0xb')](_0x2619a4+':'+_0x279818['id'],_0x279818);OpenchannelInteractionEvents[_0x3a15('0xb')](_0x2619a4,_0x279818);_0x4d606d(null);})[_0x3a15('0xc')](_0x4d606d(null));};}for(var e in events){if(events[_0x3a15('0xd')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
index 8c76a00..79034e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c0b=['request-promise','rimraf','../../config/environment','./openchannelInteraction.attributes','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment'];(function(_0x39e283,_0x247e6b){var _0x7de89f=function(_0x2f8c50){while(--_0x2f8c50){_0x39e283['push'](_0x39e283['shift']());}};_0x7de89f(++_0x247e6b);}(_0x9c0b,0xc8));var _0xb9c0=function(_0x33c147,_0xd24400){_0x33c147=_0x33c147-0x0;var _0x216d7d=_0x9c0b[_0x33c147];return _0x216d7d;};'use strict';var _=require(_0xb9c0('0x0'));var util=require(_0xb9c0('0x1'));var logger=require('../../config/logger')(_0xb9c0('0x2'));var moment=require(_0xb9c0('0x3'));var BPromise=require('bluebird');var rp=require(_0xb9c0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb9c0('0x5'));var config=require(_0xb9c0('0x6'));var attributes=require(_0xb9c0('0x7'));module['exports']=function(_0x2a29e1,_0x3cd88a){return _0x2a29e1[_0xb9c0('0x8')](_0xb9c0('0x9'),attributes,{'tableName':_0xb9c0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb9c0('0xb'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x21b5ba,_0x3273ba,_0x3e8b88){if(_0x21b5ba[_0xb9c0('0xc')](_0xb9c0('0xd'))){_0x21b5ba[_0xb9c0('0xe')]=moment()[_0xb9c0('0xf')](_0xb9c0('0x10'));}_0x3e8b88(null,_0x21b5ba);}}});};
\ No newline at end of file
+var _0x84d4=['openchannel_interactions','utf8mb4_unicode_ci','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction'];(function(_0x5cc5b8,_0x4be1a8){var _0x3e3371=function(_0x2e6216){while(--_0x2e6216){_0x5cc5b8['push'](_0x5cc5b8['shift']());}};_0x3e3371(++_0x4be1a8);}(_0x84d4,0x197));var _0x484d=function(_0x498267,_0x2029de){_0x498267=_0x498267-0x0;var _0x219a77=_0x84d4[_0x498267];return _0x219a77;};'use strict';var _=require(_0x484d('0x0'));var util=require('util');var logger=require(_0x484d('0x1'))(_0x484d('0x2'));var moment=require(_0x484d('0x3'));var BPromise=require(_0x484d('0x4'));var rp=require(_0x484d('0x5'));var fs=require('fs');var path=require(_0x484d('0x6'));var rimraf=require(_0x484d('0x7'));var config=require(_0x484d('0x8'));var attributes=require(_0x484d('0x9'));module[_0x484d('0xa')]=function(_0x11fd16,_0x2be968){return _0x11fd16[_0x484d('0xb')](_0x484d('0xc'),attributes,{'tableName':_0x484d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x484d('0xe'),'hooks':{'beforeUpdate':function(_0x2594c0,_0x43d5ea,_0x58c4f7){if(_0x2594c0[_0x484d('0xf')](_0x484d('0x10'))){_0x2594c0[_0x484d('0x11')]=moment()[_0x484d('0x12')](_0x484d('0x13'));}_0x58c4f7(null,_0x2594c0);}}});};
\ No newline at end of file
index a76e006..ab3163f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa791=['jayson/promise','client','http','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','OpenchannelInteraction','update','body','options','raw','attributes','limit','UpdateOpenchannelInteraction','AddTagsToOpenchannelInteraction','find','where','addTags','ids','spread','AddTags','lodash','util','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x456e6c,_0x505c52){var _0x373dcc=function(_0x913f7e){while(--_0x913f7e){_0x456e6c['push'](_0x456e6c['shift']());}};_0x373dcc(++_0x505c52);}(_0xa791,0x1c8));var _0x1a79=function(_0x5ac909,_0x1aab79){_0x5ac909=_0x5ac909-0x0;var _0x222478=_0xa791[_0x5ac909];return _0x222478;};'use strict';var _=require(_0x1a79('0x0'));var util=require(_0x1a79('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1a79('0x2'));var db=require(_0x1a79('0x3'))['db'];var utils=require(_0x1a79('0x4'));var logger=require('../../config/logger')(_0x1a79('0x5'));var config=require('../../config/environment');var jayson=require(_0x1a79('0x6'));var client=jayson[_0x1a79('0x7')][_0x1a79('0x8')]({'port':0x232a});config[_0x1a79('0x9')]=_[_0x1a79('0xa')](config[_0x1a79('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x1a79('0xb'))(new Redis(config[_0x1a79('0x9')]));require(_0x1a79('0xc'))[_0x1a79('0xd')](socket);function respondWithRpcPromise(_0x43a543,_0x1807a8,_0x482d67){return new BPromise(function(_0xa2f6a9,_0x4e3d92){return client[_0x1a79('0xe')](_0x43a543,_0x482d67)[_0x1a79('0xf')](function(_0x509caf){logger[_0x1a79('0x10')](_0x1a79('0x11'),_0x1807a8,'request\x20sent');logger[_0x1a79('0x12')](_0x1a79('0x13'),_0x1807a8,_0x1a79('0x14'),JSON[_0x1a79('0x15')](_0x509caf));if(_0x509caf[_0x1a79('0x16')]){if(_0x509caf[_0x1a79('0x16')][_0x1a79('0x17')]===0x1f4){logger[_0x1a79('0x16')](_0x1a79('0x11'),_0x1807a8,_0x509caf[_0x1a79('0x16')][_0x1a79('0x18')]);return _0x4e3d92(_0x509caf[_0x1a79('0x16')][_0x1a79('0x18')]);}logger['error'](_0x1a79('0x11'),_0x1807a8,_0x509caf[_0x1a79('0x16')][_0x1a79('0x18')]);return _0xa2f6a9(_0x509caf[_0x1a79('0x16')][_0x1a79('0x18')]);}else{logger[_0x1a79('0x10')](_0x1a79('0x11'),_0x1807a8,_0x1a79('0x14'));_0xa2f6a9(_0x509caf[_0x1a79('0x19')][_0x1a79('0x18')]);}})[_0x1a79('0x1a')](function(_0x5ad62d){logger['error'](_0x1a79('0x11'),_0x1807a8,_0x5ad62d);_0x4e3d92(_0x5ad62d);});});}exports['UpdateOpenchannelInteraction']=function(_0x429ba9){var _0xc13fc3=this;return new Promise(function(_0x5d0288,_0x3fc637){return db[_0x1a79('0x1b')][_0x1a79('0x1c')](_0x429ba9[_0x1a79('0x1d')],{'raw':_0x429ba9[_0x1a79('0x1e')]?_0x429ba9[_0x1a79('0x1e')][_0x1a79('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x429ba9[_0x1a79('0x1e')]?_0x429ba9[_0x1a79('0x1e')]['where']||null:null,'attributes':_0x429ba9[_0x1a79('0x1e')]?_0x429ba9[_0x1a79('0x1e')][_0x1a79('0x20')]||null:null,'limit':_0x429ba9['options']?_0x429ba9['options'][_0x1a79('0x21')]||null:null})[_0x1a79('0xf')](function(_0x33b610){logger[_0x1a79('0x10')]('UpdateOpenchannelInteraction',_0x429ba9);logger[_0x1a79('0x12')](_0x1a79('0x22'),_0x429ba9,JSON['stringify'](_0x33b610));_0x5d0288(_0x33b610);})[_0x1a79('0x1a')](function(_0xa7d4e5){logger[_0x1a79('0x16')](_0x1a79('0x22'),_0xa7d4e5[_0x1a79('0x18')],_0x429ba9);_0x3fc637(_0xc13fc3[_0x1a79('0x16')](0x1f4,_0xa7d4e5['message']));});});};exports[_0x1a79('0x23')]=function(_0x41c8b1){return new Promise(function(_0x5327fe,_0x56de28){return db[_0x1a79('0x1b')][_0x1a79('0x24')]({'where':_0x41c8b1[_0x1a79('0x1e')]?_0x41c8b1['options'][_0x1a79('0x25')]||null:null})['then'](function(_0x2ae05c){if(_0x2ae05c){return _0x2ae05c[_0x1a79('0x26')](_0x41c8b1[_0x1a79('0x1d')][_0x1a79('0x27')],_['omit'](_0x41c8b1['body'],[_0x1a79('0x27'),'id'])||{});}})[_0x1a79('0x28')](function(_0x587fe1){logger[_0x1a79('0x10')](_0x1a79('0x29'),_0x41c8b1);logger[_0x1a79('0x12')]('AddTags',_0x41c8b1,JSON[_0x1a79('0x15')](_0x587fe1));_0x5327fe(_0x587fe1);})[_0x1a79('0x1a')](function(_0x513d05){logger[_0x1a79('0x16')]('AddTags',_0x513d05[_0x1a79('0x18')],_0x41c8b1);_0x56de28(_this[_0x1a79('0x16')](0x1f4,_0x513d05[_0x1a79('0x18')]));});});};
\ No newline at end of file
+var _0xdcdd=['options','raw','where','attributes','limit','catch','AddTagsToOpenchannelInteraction','find','addTags','body','ids','AddTags','debug','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','UpdateOpenchannelInteraction','OpenchannelInteraction'];(function(_0x3765ff,_0x44a10f){var _0x212474=function(_0x48d0c9){while(--_0x48d0c9){_0x3765ff['push'](_0x3765ff['shift']());}};_0x212474(++_0x44a10f);}(_0xdcdd,0x110));var _0xddcd=function(_0x4be7ce,_0x4d145c){_0x4be7ce=_0x4be7ce-0x0;var _0x1e39e0=_0xdcdd[_0x4be7ce];return _0x1e39e0;};'use strict';var _=require(_0xddcd('0x0'));var util=require(_0xddcd('0x1'));var moment=require('moment');var BPromise=require(_0xddcd('0x2'));var rs=require(_0xddcd('0x3'));var fs=require('fs');var Redis=require(_0xddcd('0x4'));var db=require(_0xddcd('0x5'))['db'];var utils=require(_0xddcd('0x6'));var logger=require(_0xddcd('0x7'))(_0xddcd('0x8'));var config=require(_0xddcd('0x9'));var jayson=require(_0xddcd('0xa'));var client=jayson[_0xddcd('0xb')]['http']({'port':0x232a});config[_0xddcd('0xc')]=_[_0xddcd('0xd')](config[_0xddcd('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xddcd('0xe'))(new Redis(config[_0xddcd('0xc')]));require(_0xddcd('0xf'))[_0xddcd('0x10')](socket);function respondWithRpcPromise(_0x5449f2,_0x388796,_0x4ac666){return new BPromise(function(_0x141fea,_0x43c389){return client[_0xddcd('0x11')](_0x5449f2,_0x4ac666)[_0xddcd('0x12')](function(_0x335086){logger[_0xddcd('0x13')](_0xddcd('0x14'),_0x388796,_0xddcd('0x15'));logger['debug'](_0xddcd('0x16'),_0x388796,_0xddcd('0x15'),JSON['stringify'](_0x335086));if(_0x335086[_0xddcd('0x17')]){if(_0x335086[_0xddcd('0x17')][_0xddcd('0x18')]===0x1f4){logger[_0xddcd('0x17')](_0xddcd('0x14'),_0x388796,_0x335086['error']['message']);return _0x43c389(_0x335086[_0xddcd('0x17')][_0xddcd('0x19')]);}logger[_0xddcd('0x17')](_0xddcd('0x14'),_0x388796,_0x335086['error'][_0xddcd('0x19')]);return _0x141fea(_0x335086[_0xddcd('0x17')][_0xddcd('0x19')]);}else{logger[_0xddcd('0x13')](_0xddcd('0x14'),_0x388796,_0xddcd('0x15'));_0x141fea(_0x335086[_0xddcd('0x1a')][_0xddcd('0x19')]);}})['catch'](function(_0x43c09d){logger[_0xddcd('0x17')](_0xddcd('0x14'),_0x388796,_0x43c09d);_0x43c389(_0x43c09d);});});}exports[_0xddcd('0x1b')]=function(_0x2febfd){var _0x47a8f9=this;return new Promise(function(_0x4f2b55,_0x1812d4){return db[_0xddcd('0x1c')]['update'](_0x2febfd['body'],{'raw':_0x2febfd[_0xddcd('0x1d')]?_0x2febfd[_0xddcd('0x1d')][_0xddcd('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2febfd['options']?_0x2febfd[_0xddcd('0x1d')][_0xddcd('0x1f')]||null:null,'attributes':_0x2febfd[_0xddcd('0x1d')]?_0x2febfd[_0xddcd('0x1d')][_0xddcd('0x20')]||null:null,'limit':_0x2febfd[_0xddcd('0x1d')]?_0x2febfd[_0xddcd('0x1d')][_0xddcd('0x21')]||null:null})[_0xddcd('0x12')](function(_0x5840e7){logger[_0xddcd('0x13')]('UpdateOpenchannelInteraction',_0x2febfd);logger['debug'](_0xddcd('0x1b'),_0x2febfd,JSON['stringify'](_0x5840e7));_0x4f2b55(_0x5840e7);})[_0xddcd('0x22')](function(_0x161449){logger[_0xddcd('0x17')](_0xddcd('0x1b'),_0x161449[_0xddcd('0x19')],_0x2febfd);_0x1812d4(_0x47a8f9[_0xddcd('0x17')](0x1f4,_0x161449[_0xddcd('0x19')]));});});};exports[_0xddcd('0x23')]=function(_0x36dc14){return new Promise(function(_0x1a592e,_0x2a3342){return db[_0xddcd('0x1c')][_0xddcd('0x24')]({'where':_0x36dc14[_0xddcd('0x1d')]?_0x36dc14[_0xddcd('0x1d')][_0xddcd('0x1f')]||null:null})[_0xddcd('0x12')](function(_0xe06d44){if(_0xe06d44){return _0xe06d44[_0xddcd('0x25')](_0x36dc14[_0xddcd('0x26')][_0xddcd('0x27')],_['omit'](_0x36dc14[_0xddcd('0x26')],['ids','id'])||{});}})['spread'](function(_0x176686){logger[_0xddcd('0x13')](_0xddcd('0x28'),_0x36dc14);logger[_0xddcd('0x29')](_0xddcd('0x28'),_0x36dc14,JSON[_0xddcd('0x2a')](_0x176686));_0x1a592e(_0x176686);})['catch'](function(_0x14fed2){logger[_0xddcd('0x17')](_0xddcd('0x28'),_0x14fed2['message'],_0x36dc14);_0x2a3342(_this[_0xddcd('0x17')](0x1f4,_0x14fed2[_0xddcd('0x19')]));});});};
\ No newline at end of file
index 8668e3d..8faf67f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5632=['length','./openchannelInteraction.events','save','remove','emit','removeListener','register'];(function(_0x32a547,_0x1e6dcb){var _0x277e66=function(_0x53f787){while(--_0x53f787){_0x32a547['push'](_0x32a547['shift']());}};_0x277e66(++_0x1e6dcb);}(_0x5632,0x1f2));var _0x2563=function(_0x48cf28,_0x2b9da5){_0x48cf28=_0x48cf28-0x0;var _0xc7ad51=_0x5632[_0x48cf28];return _0xc7ad51;};'use strict';var OpenchannelInteractionEvents=require(_0x2563('0x0'));var events=[_0x2563('0x1'),_0x2563('0x2'),'update'];function createListener(_0x44e159,_0x2734be){return function(_0x401154){_0x2734be[_0x2563('0x3')](_0x44e159,_0x401154);};}function removeListener(_0x357ce8,_0x4e3a94){return function(){OpenchannelInteractionEvents[_0x2563('0x4')](_0x357ce8,_0x4e3a94);};}exports[_0x2563('0x5')]=function(_0x3ea998){for(var _0x110344=0x0,_0x4fd05b=events[_0x2563('0x6')];_0x110344<_0x4fd05b;_0x110344++){var _0x3840e3=events[_0x110344];var _0x2ea815=createListener('openchannelInteraction:'+_0x3840e3,_0x3ea998);OpenchannelInteractionEvents['on'](_0x3840e3,_0x2ea815);}};
\ No newline at end of file
+var _0xc48e=['remove','update','emit','removeListener','length','openchannelInteraction:','./openchannelInteraction.events','save'];(function(_0x5416db,_0x55683a){var _0x243e35=function(_0x1eb623){while(--_0x1eb623){_0x5416db['push'](_0x5416db['shift']());}};_0x243e35(++_0x55683a);}(_0xc48e,0x18e));var _0xec48=function(_0x4fde55,_0x15e7dc){_0x4fde55=_0x4fde55-0x0;var _0x3024cf=_0xc48e[_0x4fde55];return _0x3024cf;};'use strict';var OpenchannelInteractionEvents=require(_0xec48('0x0'));var events=[_0xec48('0x1'),_0xec48('0x2'),_0xec48('0x3')];function createListener(_0x30607e,_0x50cd81){return function(_0x42d1b8){_0x50cd81[_0xec48('0x4')](_0x30607e,_0x42d1b8);};}function removeListener(_0x5b5bf0,_0x521586){return function(){OpenchannelInteractionEvents[_0xec48('0x5')](_0x5b5bf0,_0x521586);};}exports['register']=function(_0x1ea196){for(var _0x4ef5c1=0x0,_0x278308=events[_0xec48('0x6')];_0x4ef5c1<_0x278308;_0x4ef5c1++){var _0x31d699=events[_0x4ef5c1];var _0xe46cba=createListener(_0xec48('0x7')+_0x31d699,_0x1ea196);OpenchannelInteractionEvents['on'](_0x31d699,_0xe46cba);}};
\ No newline at end of file
index 9d812fa..07c2ef5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['get','isAuthenticated','index','/describe','describe','/:id','post','tracked','openchannel','openchannelmessage:create','put','update','accept','/:id/reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelMessage.controller'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var controller=require(_0x3071('0x7'));router[_0x3071('0x8')]('/',auth[_0x3071('0x9')](),controller[_0x3071('0xa')]);router[_0x3071('0x8')](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0xc')]);router[_0x3071('0x8')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller['show']);router[_0x3071('0xe')]('/',auth[_0x3071('0x9')](),interaction[_0x3071('0xf')](_0x3071('0x10'),_0x3071('0x11')),controller['create']);router[_0x3071('0x12')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller[_0x3071('0x13')]);router[_0x3071('0x12')]('/:id/accept',auth['isAuthenticated'](),controller[_0x3071('0x14')]);router['put'](_0x3071('0x15'),auth[_0x3071('0x9')](),controller['reject']);router[_0x3071('0x16')]('/:id',auth[_0x3071('0x9')](),controller[_0x3071('0x17')]);module[_0x3071('0x18')]=router;
\ No newline at end of file
+var _0x70e0=['put','update','/:id/accept','accept','destroy','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','isAuthenticated','describe','get','/:id','show','post','openchannel','openchannelmessage:create','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x70e0,0x17b));var _0x070e=function(_0x59b31a,_0x54ff67){_0x59b31a=_0x59b31a-0x0;var _0x2d8dfd=_0x70e0[_0x59b31a];return _0x2d8dfd;};'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');var controller=require(_0x070e('0x7'));router['get']('/',auth[_0x070e('0x8')](),controller['index']);router['get']('/describe',auth[_0x070e('0x8')](),controller[_0x070e('0x9')]);router[_0x070e('0xa')](_0x070e('0xb'),auth[_0x070e('0x8')](),controller[_0x070e('0xc')]);router[_0x070e('0xd')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x070e('0xe'),_0x070e('0xf')),controller[_0x070e('0x10')]);router[_0x070e('0x11')](_0x070e('0xb'),auth[_0x070e('0x8')](),controller[_0x070e('0x12')]);router[_0x070e('0x11')](_0x070e('0x13'),auth[_0x070e('0x8')](),controller[_0x070e('0x14')]);router['put']('/:id/reject',auth[_0x070e('0x8')](),controller['reject']);router['delete']('/:id',auth[_0x070e('0x8')](),controller[_0x070e('0x15')]);module['exports']=router;
\ No newline at end of file
index 67330ef..100b1e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe511=['medium','BOOLEAN','ENUM','out','DATE','STRING','TEXT','sequelize','exports'];(function(_0x5ac5c7,_0x3e5ecd){var _0x1eede1=function(_0x128357){while(--_0x128357){_0x5ac5c7['push'](_0x5ac5c7['shift']());}};_0x1eede1(++_0x3e5ecd);}(_0xe511,0x16f));var _0x1e51=function(_0x5ee823,_0x24650b){_0x5ee823=_0x5ee823-0x0;var _0x209bd2=_0xe511[_0x5ee823];return _0x209bd2;};'use strict';var Sequelize=require(_0x1e51('0x0'));module[_0x1e51('0x1')]={'body':{'type':Sequelize['TEXT'](_0x1e51('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x1e51('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x1e51('0x4')]('in','out'),'defaultValue':_0x1e51('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x1e51('0x6')]},'providerName':{'type':Sequelize[_0x1e51('0x7')]},'providerResponse':{'type':Sequelize[_0x1e51('0x8')]}};
\ No newline at end of file
+var _0x9354=['out','DATE','STRING','exports','TEXT','BOOLEAN','ENUM'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x9354,0x96));var _0x4935=function(_0x283b55,_0x279bee){_0x283b55=_0x283b55-0x0;var _0x192e58=_0x9354[_0x283b55];return _0x192e58;};'use strict';var Sequelize=require('sequelize');module[_0x4935('0x0')]={'body':{'type':Sequelize[_0x4935('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x4935('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0x4935('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4935('0x3')]('in',_0x4935('0x4')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x4935('0x5')]},'providerName':{'type':Sequelize[_0x4935('0x6')]},'providerResponse':{'type':Sequelize[_0x4935('0x1')]}};
\ No newline at end of file
index b64fa79..9d3ffcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67f5=['acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','fullname','email','internal','manual','interface','channel','motionChannel','event','accept','EventManager','acceptmessage','openchannel-interactions','reject','OpenchannelInteractionId','role','SELECT','SIP/%s','eml-format','rimraf','request-promise','moment','bluebird','mustache','sox','to-csv','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','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','client','http','request','info','request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','OpenchannelMessage,\x20%s,\x20%s','sendStatus','status','json','offset','limit','set','apply','save','destroy','then','end','name','send','index','map','OpenchannelMessage','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','nolimit','order','sort','where','merge','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','catch','params','find','create','body','describe','openchannel','read','readAt','UserId','user','agent','get','OpenchannelInteraction','update','isNil','read1stAt','format','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','null'];(function(_0x202d24,_0x5e8641){var _0x2b3a8e=function(_0x4c7c4a){while(--_0x4c7c4a){_0x202d24['push'](_0x202d24['shift']());}};_0x2b3a8e(++_0x5e8641);}(_0x67f5,0x99));var _0x567f=function(_0x2e249d,_0x41b7e7){_0x2e249d=_0x2e249d-0x0;var _0x1faa37=_0x67f5[_0x2e249d];return _0x1faa37;};'use strict';var emlformat=require(_0x567f('0x0'));var rimraf=require(_0x567f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x567f('0x2'));var moment=require(_0x567f('0x3'));var BPromise=require(_0x567f('0x4'));var Mustache=require(_0x567f('0x5'));var util=require('util');var path=require('path');var sox=require(_0x567f('0x6'));var csv=require(_0x567f('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x567f('0x8'));var _=require(_0x567f('0x9'));var squel=require(_0x567f('0xa'));var crypto=require('crypto');var jsforce=require(_0x567f('0xb'));var deskjs=require(_0x567f('0xc'));var toCsv=require(_0x567f('0x7'));var querystring=require(_0x567f('0xd'));var Papa=require(_0x567f('0xe'));var Redis=require(_0x567f('0xf'));var authService=require(_0x567f('0x10'));var qs=require(_0x567f('0x11'));var as=require(_0x567f('0x12'));var hardwareService=require(_0x567f('0x13'));var logger=require(_0x567f('0x14'))(_0x567f('0x15'));var utils=require(_0x567f('0x16'));var config=require(_0x567f('0x17'));var licenseUtil=require(_0x567f('0x18'));var db=require(_0x567f('0x19'))['db'];config[_0x567f('0x1a')]=_[_0x567f('0x1b')](config['redis'],{'host':_0x567f('0x1c'),'port':0x18eb});var socket=require(_0x567f('0x1d'))(new Redis(config[_0x567f('0x1a')]));require(_0x567f('0x1e'))[_0x567f('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0x567f('0x20')][_0x567f('0x21')]({'port':0x232c});var client9002=jayson['client'][_0x567f('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x51429d,_0x395d6c,_0xf0fb55,_0x3322eb){return new BPromise(function(_0x1ed15e,_0x37dd23){var _0x35386e=_0x3322eb||client;return _0x35386e[_0x567f('0x22')](_0x51429d,_0xf0fb55)['then'](function(_0xf27b39){logger[_0x567f('0x23')]('OpenchannelMessage,\x20%s,\x20%s',_0x395d6c,_0x567f('0x24'));logger['debug'](_0x567f('0x25'),_0x395d6c,'request\x20sent',JSON[_0x567f('0x26')](_0xf27b39));if(_0xf27b39[_0x567f('0x27')]){if(_0xf27b39[_0x567f('0x27')][_0x567f('0x28')]===0x1f4){logger[_0x567f('0x27')]('OpenchannelMessage,\x20%s,\x20%s',_0x395d6c,_0xf27b39[_0x567f('0x27')][_0x567f('0x29')]);return _0x37dd23(_0xf27b39[_0x567f('0x27')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x395d6c,_0xf27b39[_0x567f('0x27')][_0x567f('0x29')]);return _0x1ed15e(_0xf27b39[_0x567f('0x27')][_0x567f('0x29')]);}else{logger[_0x567f('0x23')](_0x567f('0x2a'),_0x395d6c,_0x567f('0x24'));_0x1ed15e(_0xf27b39['result'][_0x567f('0x29')]);}})['catch'](function(_0x3a9cfa){logger[_0x567f('0x27')](_0x567f('0x2a'),_0x395d6c,_0x3a9cfa);_0x37dd23(_0x3a9cfa);});});}function respondWithStatusCode(_0x21403e,_0x1654d5){_0x1654d5=_0x1654d5||0xcc;return function(_0xa9f997){if(_0xa9f997){return _0x21403e[_0x567f('0x2b')](_0x1654d5);}return _0x21403e[_0x567f('0x2c')](_0x1654d5)['end']();};}function respondWithResult(_0x311625,_0x5bc03c){_0x5bc03c=_0x5bc03c||0xc8;return function(_0x1d0884){if(_0x1d0884){return _0x311625['status'](_0x5bc03c)[_0x567f('0x2d')](_0x1d0884);}};}function respondWithFilteredResult(_0x406a36,_0x386513){return function(_0x38dbca){if(_0x38dbca){var _0x2201c0=typeof _0x386513[_0x567f('0x2e')]==='undefined'&&typeof _0x386513['limit']==='undefined';var _0x46fdc4=_0x38dbca['count'];var _0x1e1952=_0x2201c0?0x0:_0x386513[_0x567f('0x2e')];var _0x36c49c=_0x2201c0?_0x38dbca['count']:_0x386513[_0x567f('0x2e')]+_0x386513[_0x567f('0x2f')];var _0x20cfb0;if(_0x36c49c>=_0x46fdc4){_0x36c49c=_0x46fdc4;_0x20cfb0=0xc8;}else{_0x20cfb0=0xce;}_0x406a36[_0x567f('0x2c')](_0x20cfb0);return _0x406a36[_0x567f('0x30')]('Content-Range',_0x1e1952+'-'+_0x36c49c+'/'+_0x46fdc4)[_0x567f('0x2d')](_0x38dbca);}return null;};}function patchUpdates(_0x421919){return function(_0x108b2f){try{jsonpatch[_0x567f('0x31')](_0x108b2f,_0x421919,!![]);}catch(_0x1cea6a){return BPromise['reject'](_0x1cea6a);}return _0x108b2f[_0x567f('0x32')]();};}function saveUpdates(_0x327318,_0x16819a){return function(_0x564104){if(_0x564104){return _0x564104['update'](_0x327318)['then'](function(_0x294d12){return _0x294d12;});}return null;};}function removeEntity(_0x1c4e1e,_0x536786){return function(_0x429b0f){if(_0x429b0f){return _0x429b0f[_0x567f('0x33')]()[_0x567f('0x34')](function(){_0x1c4e1e[_0x567f('0x2c')](0xcc)[_0x567f('0x35')]();});}};}function handleEntityNotFound(_0x22cd7a,_0x598128){return function(_0x501031){if(!_0x501031){_0x22cd7a[_0x567f('0x2b')](0x194);}return _0x501031;};}function handleError(_0x2d9be3,_0x303420){_0x303420=_0x303420||0x1f4;return function(_0x41473c){logger['error'](_0x41473c['stack']);if(_0x41473c['name']){delete _0x41473c[_0x567f('0x36')];}_0x2d9be3[_0x567f('0x2c')](_0x303420)[_0x567f('0x37')](_0x41473c);};}exports[_0x567f('0x38')]=function(_0x45ddeb,_0x5a4ae4){var _0x4db1c8={},_0x56979e={},_0x46fa74={'count':0x0,'rows':[]};var _0x5c999c=_[_0x567f('0x39')](db[_0x567f('0x3a')][_0x567f('0x3b')],function(_0x575962){return{'name':_0x575962[_0x567f('0x3c')],'type':_0x575962[_0x567f('0x3d')][_0x567f('0x3e')]};});_0x56979e[_0x567f('0x3f')]=_[_0x567f('0x39')](_0x5c999c,_0x567f('0x36'));_0x56979e['query']=_[_0x567f('0x40')](_0x45ddeb['query']);_0x56979e[_0x567f('0x41')]=_[_0x567f('0x42')](_0x56979e[_0x567f('0x3f')],_0x56979e[_0x567f('0x43')]);_0x4db1c8[_0x567f('0x44')]=_[_0x567f('0x42')](_0x56979e[_0x567f('0x3f')],qs[_0x567f('0x45')](_0x45ddeb[_0x567f('0x43')][_0x567f('0x45')]));_0x4db1c8[_0x567f('0x44')]=_0x4db1c8[_0x567f('0x44')][_0x567f('0x46')]?_0x4db1c8[_0x567f('0x44')]:_0x56979e[_0x567f('0x3f')];if(!_0x45ddeb[_0x567f('0x43')]['hasOwnProperty'](_0x567f('0x47'))){_0x4db1c8[_0x567f('0x2f')]=qs[_0x567f('0x2f')](_0x45ddeb[_0x567f('0x43')][_0x567f('0x2f')]);_0x4db1c8['offset']=qs[_0x567f('0x2e')](_0x45ddeb[_0x567f('0x43')][_0x567f('0x2e')]);}_0x4db1c8[_0x567f('0x48')]=qs[_0x567f('0x49')](_0x45ddeb[_0x567f('0x43')][_0x567f('0x49')]);_0x4db1c8['where']=qs[_0x567f('0x41')](_['pick'](_0x45ddeb['query'],_0x56979e['filters']),_0x5c999c);if(_0x45ddeb[_0x567f('0x43')]['filter']){_0x4db1c8[_0x567f('0x4a')]=_[_0x567f('0x4b')](_0x4db1c8[_0x567f('0x4a')],{'$or':_['map'](_0x5c999c,function(_0x3ce23f){if(_0x3ce23f[_0x567f('0x3d')]!==_0x567f('0x4c')){var _0x390ed7={};_0x390ed7[_0x3ce23f[_0x567f('0x36')]]={'$like':'%'+_0x45ddeb[_0x567f('0x43')][_0x567f('0x4d')]+'%'};return _0x390ed7;}})});}_0x4db1c8=_[_0x567f('0x4b')]({},_0x4db1c8,_0x45ddeb[_0x567f('0x4e')]);var _0x1558c8={'where':_0x4db1c8[_0x567f('0x4a')]};return db[_0x567f('0x3a')][_0x567f('0x4f')](_0x1558c8)['then'](function(_0x155028){_0x46fa74[_0x567f('0x4f')]=_0x155028;if(_0x45ddeb['query'][_0x567f('0x50')]){_0x4db1c8[_0x567f('0x51')]=[{'all':!![]}];}return db[_0x567f('0x3a')][_0x567f('0x52')](_0x4db1c8);})[_0x567f('0x34')](function(_0x2898bc){_0x46fa74[_0x567f('0x53')]=_0x2898bc;return _0x46fa74;})[_0x567f('0x34')](respondWithFilteredResult(_0x5a4ae4,_0x4db1c8))[_0x567f('0x54')](handleError(_0x5a4ae4,null));};exports['show']=function(_0x33526f,_0x47b001){var _0x55737d={'raw':!![],'where':{'id':_0x33526f[_0x567f('0x55')]['id']}},_0x288e0d={};_0x288e0d[_0x567f('0x3f')]=_[_0x567f('0x40')](db['OpenchannelMessage']['rawAttributes']);_0x288e0d['query']=_[_0x567f('0x40')](_0x33526f[_0x567f('0x43')]);_0x288e0d[_0x567f('0x41')]=_['intersection'](_0x288e0d[_0x567f('0x3f')],_0x288e0d[_0x567f('0x43')]);_0x55737d['attributes']=_['intersection'](_0x288e0d[_0x567f('0x3f')],qs[_0x567f('0x45')](_0x33526f[_0x567f('0x43')]['fields']));_0x55737d[_0x567f('0x44')]=_0x55737d[_0x567f('0x44')]['length']?_0x55737d['attributes']:_0x288e0d[_0x567f('0x3f')];if(_0x33526f[_0x567f('0x43')]['includeAll']){_0x55737d['include']=[{'all':!![]}];}_0x55737d=_[_0x567f('0x4b')]({},_0x55737d,_0x33526f[_0x567f('0x4e')]);return db[_0x567f('0x3a')][_0x567f('0x56')](_0x55737d)[_0x567f('0x34')](handleEntityNotFound(_0x47b001,null))['then'](respondWithResult(_0x47b001,null))['catch'](handleError(_0x47b001,null));};exports[_0x567f('0x57')]=function(_0x527301,_0x18bc80){return db[_0x567f('0x3a')]['create'](_0x527301[_0x567f('0x58')],{})[_0x567f('0x34')](respondWithResult(_0x18bc80,0xc9))['catch'](handleError(_0x18bc80,null));};exports['update']=function(_0x445ad7,_0x3cde8a){if(_0x445ad7[_0x567f('0x58')]['id']){delete _0x445ad7[_0x567f('0x58')]['id'];}return db[_0x567f('0x3a')][_0x567f('0x56')]({'where':{'id':_0x445ad7['params']['id']}})[_0x567f('0x34')](handleEntityNotFound(_0x3cde8a,null))[_0x567f('0x34')](saveUpdates(_0x445ad7[_0x567f('0x58')],null))[_0x567f('0x34')](respondWithResult(_0x3cde8a,null))[_0x567f('0x54')](handleError(_0x3cde8a,null));};exports[_0x567f('0x33')]=function(_0x115af0,_0x4aacc1){return db[_0x567f('0x3a')]['find']({'where':{'id':_0x115af0[_0x567f('0x55')]['id']}})['then'](handleEntityNotFound(_0x4aacc1,null))[_0x567f('0x34')](removeEntity(_0x4aacc1,null))['catch'](handleError(_0x4aacc1,null));};exports[_0x567f('0x59')]=function(_0x1ccf16,_0x3104fb){return db['OpenchannelMessage'][_0x567f('0x59')]()[_0x567f('0x34')](respondWithResult(_0x3104fb,null))[_0x567f('0x54')](handleError(_0x3104fb,null));};var interaction_log=require(_0x567f('0x14'))('openchannel-interactions');exports['accept']=function(_0x8690a2,_0x22f58f,_0x36273f){var _0x1bf3ac={'agent':{},'channel':_0x567f('0x5a')};if(_0x8690a2[_0x567f('0x58')]['id']){delete _0x8690a2['body']['id'];}_0x8690a2[_0x567f('0x58')][_0x567f('0x5b')]=!![];_0x8690a2['body'][_0x567f('0x5c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x8690a2['body'][_0x567f('0x5d')]=_0x8690a2[_0x567f('0x58')][_0x567f('0x5d')]||_0x8690a2[_0x567f('0x5e')]['id'];_0x1bf3ac[_0x567f('0x5f')]['id']=_0x8690a2['body'][_0x567f('0x5d')];return db[_0x567f('0x3a')][_0x567f('0x56')]({'where':{'id':_0x8690a2[_0x567f('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x22f58f,null))[_0x567f('0x34')](saveUpdates(_0x8690a2[_0x567f('0x58')],null))[_0x567f('0x34')](function(_0x137624){if(_0x137624){_0x1bf3ac[_0x567f('0x29')]=_0x137624[_0x567f('0x60')]({'plain':!![]});return db[_0x567f('0x61')][_0x567f('0x56')]({'where':{'id':_0x137624['OpenchannelInteractionId']}});}return null;})[_0x567f('0x34')](handleEntityNotFound(_0x22f58f,null))[_0x567f('0x34')](function(_0x5c5988){if(_0x5c5988){return _0x5c5988[_0x567f('0x62')]({'UserId':_0x8690a2[_0x567f('0x58')][_0x567f('0x5d')],'read1stAt':_[_0x567f('0x63')](_0x5c5988[_0x567f('0x64')])?moment()[_0x567f('0x65')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x567f('0x34')](function(_0x3a45eb){if(_0x3a45eb){_0x1bf3ac['interaction']=_0x3a45eb['get']({'plain':!![]});interaction_log[_0x567f('0x23')](_0x567f('0x66'),_0x8690a2[_0x567f('0x5e')]['id'],_0x8690a2[_0x567f('0x5e')]['name'],_0x8690a2['user']['role'],_0x1bf3ac[_0x567f('0x67')]['id'],_0x8690a2[_0x567f('0x58')]?JSON[_0x567f('0x26')](_0x8690a2[_0x567f('0x58')]):_0x567f('0x68'));return respondWithRpcPromise('AcceptMessage',_0x567f('0x69'),_0x1bf3ac);}return null;})[_0x567f('0x34')](function(_0x231619){var _0x126c6a=_0x567f('0x6a')+_0x231619[_0x567f('0x29')][_0x567f('0x6b')];return db[_0x567f('0x6c')]['query'](_0x126c6a,{'type':db[_0x567f('0x6d')][_0x567f('0x6e')]['SELECT'],'raw':!![]})[_0x567f('0x34')](function(_0x138022){return _0x138022;});})[_0x567f('0x34')](function(_0x5a0f2c){if(_0x5a0f2c){_0x1bf3ac['message'][_0x567f('0x6f')]=_0x5a0f2c[0x0];if(!_0x8690a2[_0x567f('0x58')][_0x567f('0x5d')])return;return db['User'][_0x567f('0x56')]({'where':{'id':_0x8690a2['body'][_0x567f('0x5d')],'role':_0x567f('0x5f')},'attributes':['id',_0x567f('0x36'),_0x567f('0x70'),_0x567f('0x71'),_0x567f('0x72')],'raw':!![]});}return null;})['then'](function(_0x5bddb5){if(!_0x5bddb5)return null;_0x1bf3ac[_0x567f('0x29')][_0x567f('0x5f')]=_0x5bddb5;return _0x1bf3ac;})[_0x567f('0x34')](function(_0x414024){if(_0x414024){if(_0x8690a2[_0x567f('0x58')][_0x567f('0x73')]){_0x1bf3ac[_0x567f('0x29')][_0x567f('0x74')]=util[_0x567f('0x65')]('SIP/%s',_0x8690a2[_0x567f('0x5e')][_0x567f('0x36')]);_0x1bf3ac['message'][_0x567f('0x75')]=_0x1bf3ac[_0x567f('0x75')];_0x1bf3ac[_0x567f('0x29')][_0x567f('0x76')]=_0x1bf3ac[_0x567f('0x75')];_0x1bf3ac['message'][_0x567f('0x77')]=_0x567f('0x78');return respondWithRpcPromise(_0x567f('0x79'),'EventManager',{'event':_0x567f('0x7a'),'message':_0x1bf3ac['message']},client9002)[_0x567f('0x34')](function(){return _0x1bf3ac;});}return _0x1bf3ac;}return null;})[_0x567f('0x34')](respondWithResult(_0x22f58f,null))['catch'](handleError(_0x22f58f,null));};var interaction_log=require(_0x567f('0x14'))(_0x567f('0x7b'));exports[_0x567f('0x7c')]=function(_0x436aa6,_0x19d64b,_0x165405){var _0xbb747d={'agent':{},'channel':_0x567f('0x5a')};if(_0x436aa6[_0x567f('0x58')]['id']){delete _0x436aa6['body']['id'];}_0x436aa6[_0x567f('0x58')][_0x567f('0x5d')]=_0x436aa6[_0x567f('0x58')]['UserId']||_0x436aa6[_0x567f('0x5e')]['id'];_0xbb747d[_0x567f('0x5f')]['id']=_0x436aa6[_0x567f('0x58')][_0x567f('0x5d')];return db['OpenchannelMessage'][_0x567f('0x56')]({'where':{'id':_0x436aa6[_0x567f('0x55')]['id'],'UserId':null}})[_0x567f('0x34')](handleEntityNotFound(_0x19d64b,null))[_0x567f('0x34')](function(_0x1b88af){if(_0x1b88af){_0xbb747d[_0x567f('0x29')]=_0x1b88af[_0x567f('0x60')]({'plain':!![]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x1b88af[_0x567f('0x7d')]}});}return null;})[_0x567f('0x34')](handleEntityNotFound(_0x19d64b,null))[_0x567f('0x34')](function(_0xa0e987){if(_0xa0e987){_0xbb747d[_0x567f('0x67')]=_0xa0e987[_0x567f('0x60')]({'plain':!![]});interaction_log[_0x567f('0x23')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x436aa6['user']['id'],_0x436aa6['user'][_0x567f('0x36')],_0x436aa6[_0x567f('0x5e')][_0x567f('0x7e')],_0xbb747d[_0x567f('0x67')]['id'],_0x436aa6[_0x567f('0x58')]?JSON[_0x567f('0x26')](_0x436aa6['body']):_0x567f('0x68'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0xbb747d);}return null;})[_0x567f('0x34')](function(_0x5cbfba){var _0x58c5bc=_0x567f('0x6a')+_0x5cbfba[_0x567f('0x29')][_0x567f('0x6b')];return db[_0x567f('0x6c')][_0x567f('0x43')](_0x58c5bc,{'type':db[_0x567f('0x6d')][_0x567f('0x6e')][_0x567f('0x7f')],'raw':!![]})['then'](function(_0x2f66a5){return _0x2f66a5;});})[_0x567f('0x34')](function(_0x403b1f){if(_0x403b1f){_0xbb747d['message']['contact']=_0x403b1f[0x0];if(!_0x436aa6['body'][_0x567f('0x5d')])return;return db['User'][_0x567f('0x56')]({'where':{'id':_0x436aa6[_0x567f('0x58')][_0x567f('0x5d')],'role':'agent'},'attributes':['id','name','fullname',_0x567f('0x71'),_0x567f('0x72')],'raw':!![]});}return null;})[_0x567f('0x34')](function(_0x1f1b31){if(!_0x1f1b31)return null;_0xbb747d[_0x567f('0x29')]['agent']=_0x1f1b31;return _0xbb747d;})['then'](function(_0xd28c65){if(_0xd28c65){_0xd28c65[_0x567f('0x29')]['interface']=util[_0x567f('0x65')](_0x567f('0x80'),_0x436aa6['user'][_0x567f('0x36')]);_0xd28c65[_0x567f('0x29')][_0x567f('0x75')]=_0xbb747d[_0x567f('0x75')];_0xd28c65[_0x567f('0x29')][_0x567f('0x76')]=_0xbb747d[_0x567f('0x75')];_0xd28c65['message'][_0x567f('0x77')]=_0x567f('0x7c');respondWithRpcPromise(_0x567f('0x79'),_0x567f('0x79'),{'event':'rejectmessage','message':_0xd28c65[_0x567f('0x29')]},client9002);return _0xbb747d;}return null;})[_0x567f('0x34')](respondWithResult(_0x19d64b,null))['catch'](handleError(_0x19d64b,null));};
\ No newline at end of file
+var _0x9cef=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','http','client','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','destroy','stack','name','send','index','map','OpenchannelMessage','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','order','sort','where','filter','merge','options','includeAll','include','rows','catch','show','params','keys','length','find','create','body','describe','openchannel-interactions','accept','openchannel','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','stringify','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','contact','User','fullname','internal','interface','SIP/%s','channel','EventManager','acceptmessage','reject','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','ContactId','QueryTypes','email','event','rejectmessage','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x4e0c31,_0x208e9f){var _0x3fd7df=function(_0x5ee817){while(--_0x5ee817){_0x4e0c31['push'](_0x4e0c31['shift']());}};_0x3fd7df(++_0x208e9f);}(_0x9cef,0xee));var _0xf9ce=function(_0x12fde3,_0x4800c6){_0x12fde3=_0x12fde3-0x0;var _0x521038=_0x9cef[_0x12fde3];return _0x521038;};'use strict';var emlformat=require(_0xf9ce('0x0'));var rimraf=require(_0xf9ce('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf9ce('0x2'));var rp=require(_0xf9ce('0x3'));var moment=require(_0xf9ce('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf9ce('0x5'));var util=require(_0xf9ce('0x6'));var path=require(_0xf9ce('0x7'));var sox=require(_0xf9ce('0x8'));var csv=require(_0xf9ce('0x9'));var ejs=require(_0xf9ce('0xa'));var fs=require('fs');var fs_extra=require(_0xf9ce('0xb'));var _=require(_0xf9ce('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf9ce('0xd'));var deskjs=require(_0xf9ce('0xe'));var toCsv=require(_0xf9ce('0x9'));var querystring=require(_0xf9ce('0xf'));var Papa=require(_0xf9ce('0x10'));var Redis=require(_0xf9ce('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xf9ce('0x12'));var as=require(_0xf9ce('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf9ce('0x14'))('api');var utils=require(_0xf9ce('0x15'));var config=require(_0xf9ce('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xf9ce('0x17'))['db'];config[_0xf9ce('0x18')]=_[_0xf9ce('0x19')](config['redis'],{'host':_0xf9ce('0x1a'),'port':0x18eb});var socket=require(_0xf9ce('0x1b'))(new Redis(config[_0xf9ce('0x18')]));require(_0xf9ce('0x1c'))[_0xf9ce('0x1d')](socket);var jayson=require(_0xf9ce('0x1e'));var client=jayson['client'][_0xf9ce('0x1f')]({'port':0x232c});var client9002=jayson[_0xf9ce('0x20')][_0xf9ce('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x47db4,_0x467699,_0x1471d6,_0xe20a50){return new BPromise(function(_0x313ad0,_0x3329e5){var _0x39f03e=_0xe20a50||client;return _0x39f03e['request'](_0x47db4,_0x1471d6)[_0xf9ce('0x21')](function(_0x39f019){logger[_0xf9ce('0x22')](_0xf9ce('0x23'),_0x467699,_0xf9ce('0x24'));logger['debug'](_0xf9ce('0x25'),_0x467699,'request\x20sent',JSON['stringify'](_0x39f019));if(_0x39f019[_0xf9ce('0x26')]){if(_0x39f019['error']['code']===0x1f4){logger[_0xf9ce('0x26')](_0xf9ce('0x23'),_0x467699,_0x39f019[_0xf9ce('0x26')][_0xf9ce('0x27')]);return _0x3329e5(_0x39f019[_0xf9ce('0x26')][_0xf9ce('0x27')]);}logger[_0xf9ce('0x26')](_0xf9ce('0x23'),_0x467699,_0x39f019['error'][_0xf9ce('0x27')]);return _0x313ad0(_0x39f019[_0xf9ce('0x26')][_0xf9ce('0x27')]);}else{logger[_0xf9ce('0x22')](_0xf9ce('0x23'),_0x467699,_0xf9ce('0x24'));_0x313ad0(_0x39f019[_0xf9ce('0x28')][_0xf9ce('0x27')]);}})['catch'](function(_0x25cdd9){logger[_0xf9ce('0x26')](_0xf9ce('0x23'),_0x467699,_0x25cdd9);_0x3329e5(_0x25cdd9);});});}function respondWithStatusCode(_0x29aff0,_0x5151db){_0x5151db=_0x5151db||0xcc;return function(_0x551cc3){if(_0x551cc3){return _0x29aff0[_0xf9ce('0x29')](_0x5151db);}return _0x29aff0[_0xf9ce('0x2a')](_0x5151db)[_0xf9ce('0x2b')]();};}function respondWithResult(_0x5d8772,_0x196b3c){_0x196b3c=_0x196b3c||0xc8;return function(_0x3f4053){if(_0x3f4053){return _0x5d8772[_0xf9ce('0x2a')](_0x196b3c)[_0xf9ce('0x2c')](_0x3f4053);}};}function respondWithFilteredResult(_0x4a0736,_0x1e892a){return function(_0x26fbfe){if(_0x26fbfe){var _0x45095c=typeof _0x1e892a[_0xf9ce('0x2d')]===_0xf9ce('0x2e')&&typeof _0x1e892a[_0xf9ce('0x2f')]===_0xf9ce('0x2e');var _0x13cfb3=_0x26fbfe['count'];var _0x17e047=_0x45095c?0x0:_0x1e892a['offset'];var _0x498183=_0x45095c?_0x26fbfe[_0xf9ce('0x30')]:_0x1e892a[_0xf9ce('0x2d')]+_0x1e892a['limit'];var _0x2fa276;if(_0x498183>=_0x13cfb3){_0x498183=_0x13cfb3;_0x2fa276=0xc8;}else{_0x2fa276=0xce;}_0x4a0736['status'](_0x2fa276);return _0x4a0736[_0xf9ce('0x31')](_0xf9ce('0x32'),_0x17e047+'-'+_0x498183+'/'+_0x13cfb3)[_0xf9ce('0x2c')](_0x26fbfe);}return null;};}function patchUpdates(_0x44ab8c){return function(_0x574c1f){try{jsonpatch['apply'](_0x574c1f,_0x44ab8c,!![]);}catch(_0x241d0d){return BPromise['reject'](_0x241d0d);}return _0x574c1f[_0xf9ce('0x33')]();};}function saveUpdates(_0x256527,_0x6903f){return function(_0xc34639){if(_0xc34639){return _0xc34639[_0xf9ce('0x34')](_0x256527)['then'](function(_0x2997da){return _0x2997da;});}return null;};}function removeEntity(_0x18c990,_0x3f516a){return function(_0x5f3bef){if(_0x5f3bef){return _0x5f3bef[_0xf9ce('0x35')]()[_0xf9ce('0x21')](function(){_0x18c990[_0xf9ce('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2001a9,_0x31ece8){return function(_0x1efeee){if(!_0x1efeee){_0x2001a9[_0xf9ce('0x29')](0x194);}return _0x1efeee;};}function handleError(_0x2899e4,_0x2c37e4){_0x2c37e4=_0x2c37e4||0x1f4;return function(_0x168cba){logger[_0xf9ce('0x26')](_0x168cba[_0xf9ce('0x36')]);if(_0x168cba[_0xf9ce('0x37')]){delete _0x168cba[_0xf9ce('0x37')];}_0x2899e4[_0xf9ce('0x2a')](_0x2c37e4)[_0xf9ce('0x38')](_0x168cba);};}exports[_0xf9ce('0x39')]=function(_0x333630,_0x14edfb){var _0x1e285b={},_0xe7467={},_0x583f92={'count':0x0,'rows':[]};var _0x5955e7=_[_0xf9ce('0x3a')](db[_0xf9ce('0x3b')][_0xf9ce('0x3c')],function(_0x5862a7){return{'name':_0x5862a7[_0xf9ce('0x3d')],'type':_0x5862a7[_0xf9ce('0x3e')][_0xf9ce('0x3f')]};});_0xe7467[_0xf9ce('0x40')]=_[_0xf9ce('0x3a')](_0x5955e7,_0xf9ce('0x37'));_0xe7467[_0xf9ce('0x41')]=_['keys'](_0x333630[_0xf9ce('0x41')]);_0xe7467[_0xf9ce('0x42')]=_[_0xf9ce('0x43')](_0xe7467['model'],_0xe7467[_0xf9ce('0x41')]);_0x1e285b[_0xf9ce('0x44')]=_['intersection'](_0xe7467[_0xf9ce('0x40')],qs[_0xf9ce('0x45')](_0x333630['query']['fields']));_0x1e285b[_0xf9ce('0x44')]=_0x1e285b[_0xf9ce('0x44')]['length']?_0x1e285b[_0xf9ce('0x44')]:_0xe7467['model'];if(!_0x333630[_0xf9ce('0x41')]['hasOwnProperty'](_0xf9ce('0x46'))){_0x1e285b['limit']=qs['limit'](_0x333630['query'][_0xf9ce('0x2f')]);_0x1e285b['offset']=qs[_0xf9ce('0x2d')](_0x333630[_0xf9ce('0x41')][_0xf9ce('0x2d')]);}_0x1e285b[_0xf9ce('0x47')]=qs[_0xf9ce('0x48')](_0x333630[_0xf9ce('0x41')][_0xf9ce('0x48')]);_0x1e285b['where']=qs['filters'](_['pick'](_0x333630['query'],_0xe7467[_0xf9ce('0x42')]),_0x5955e7);if(_0x333630[_0xf9ce('0x41')]['filter']){_0x1e285b[_0xf9ce('0x49')]=_['merge'](_0x1e285b[_0xf9ce('0x49')],{'$or':_[_0xf9ce('0x3a')](_0x5955e7,function(_0xf46fb3){if(_0xf46fb3[_0xf9ce('0x3e')]!=='VIRTUAL'){var _0x1e2e8a={};_0x1e2e8a[_0xf46fb3['name']]={'$like':'%'+_0x333630[_0xf9ce('0x41')][_0xf9ce('0x4a')]+'%'};return _0x1e2e8a;}})});}_0x1e285b=_[_0xf9ce('0x4b')]({},_0x1e285b,_0x333630[_0xf9ce('0x4c')]);var _0x2a655f={'where':_0x1e285b[_0xf9ce('0x49')]};return db['OpenchannelMessage']['count'](_0x2a655f)[_0xf9ce('0x21')](function(_0x280fc5){_0x583f92['count']=_0x280fc5;if(_0x333630['query'][_0xf9ce('0x4d')]){_0x1e285b[_0xf9ce('0x4e')]=[{'all':!![]}];}return db['OpenchannelMessage']['findAll'](_0x1e285b);})[_0xf9ce('0x21')](function(_0x10cb69){_0x583f92[_0xf9ce('0x4f')]=_0x10cb69;return _0x583f92;})[_0xf9ce('0x21')](respondWithFilteredResult(_0x14edfb,_0x1e285b))[_0xf9ce('0x50')](handleError(_0x14edfb,null));};exports[_0xf9ce('0x51')]=function(_0x3dc1e5,_0x3c6169){var _0x4d968e={'raw':!![],'where':{'id':_0x3dc1e5[_0xf9ce('0x52')]['id']}},_0x114746={};_0x114746['model']=_[_0xf9ce('0x53')](db[_0xf9ce('0x3b')]['rawAttributes']);_0x114746[_0xf9ce('0x41')]=_[_0xf9ce('0x53')](_0x3dc1e5[_0xf9ce('0x41')]);_0x114746[_0xf9ce('0x42')]=_[_0xf9ce('0x43')](_0x114746['model'],_0x114746[_0xf9ce('0x41')]);_0x4d968e[_0xf9ce('0x44')]=_[_0xf9ce('0x43')](_0x114746['model'],qs[_0xf9ce('0x45')](_0x3dc1e5['query'][_0xf9ce('0x45')]));_0x4d968e[_0xf9ce('0x44')]=_0x4d968e['attributes'][_0xf9ce('0x54')]?_0x4d968e['attributes']:_0x114746[_0xf9ce('0x40')];if(_0x3dc1e5[_0xf9ce('0x41')][_0xf9ce('0x4d')]){_0x4d968e[_0xf9ce('0x4e')]=[{'all':!![]}];}_0x4d968e=_[_0xf9ce('0x4b')]({},_0x4d968e,_0x3dc1e5[_0xf9ce('0x4c')]);return db[_0xf9ce('0x3b')][_0xf9ce('0x55')](_0x4d968e)[_0xf9ce('0x21')](handleEntityNotFound(_0x3c6169,null))['then'](respondWithResult(_0x3c6169,null))[_0xf9ce('0x50')](handleError(_0x3c6169,null));};exports[_0xf9ce('0x56')]=function(_0x381d97,_0x38147e){return db[_0xf9ce('0x3b')]['create'](_0x381d97[_0xf9ce('0x57')],{})[_0xf9ce('0x21')](respondWithResult(_0x38147e,0xc9))['catch'](handleError(_0x38147e,null));};exports[_0xf9ce('0x34')]=function(_0x298769,_0x172b1f){if(_0x298769['body']['id']){delete _0x298769['body']['id'];}return db[_0xf9ce('0x3b')][_0xf9ce('0x55')]({'where':{'id':_0x298769[_0xf9ce('0x52')]['id']}})['then'](handleEntityNotFound(_0x172b1f,null))[_0xf9ce('0x21')](saveUpdates(_0x298769[_0xf9ce('0x57')],null))[_0xf9ce('0x21')](respondWithResult(_0x172b1f,null))['catch'](handleError(_0x172b1f,null));};exports[_0xf9ce('0x35')]=function(_0x30cbbf,_0x2ae929){return db[_0xf9ce('0x3b')][_0xf9ce('0x55')]({'where':{'id':_0x30cbbf[_0xf9ce('0x52')]['id']}})[_0xf9ce('0x21')](handleEntityNotFound(_0x2ae929,null))[_0xf9ce('0x21')](removeEntity(_0x2ae929,null))[_0xf9ce('0x50')](handleError(_0x2ae929,null));};exports['describe']=function(_0x14b9ba,_0x397d3){return db[_0xf9ce('0x3b')][_0xf9ce('0x58')]()[_0xf9ce('0x21')](respondWithResult(_0x397d3,null))[_0xf9ce('0x50')](handleError(_0x397d3,null));};var interaction_log=require('../../config/logger')(_0xf9ce('0x59'));exports[_0xf9ce('0x5a')]=function(_0x44404f,_0x382025,_0x41f820){var _0x5a6ede={'agent':{},'channel':_0xf9ce('0x5b')};if(_0x44404f['body']['id']){delete _0x44404f[_0xf9ce('0x57')]['id'];}_0x44404f[_0xf9ce('0x57')]['read']=!![];_0x44404f[_0xf9ce('0x57')][_0xf9ce('0x5c')]=moment()[_0xf9ce('0x5d')](_0xf9ce('0x5e'));_0x44404f[_0xf9ce('0x57')][_0xf9ce('0x5f')]=_0x44404f[_0xf9ce('0x57')][_0xf9ce('0x5f')]||_0x44404f[_0xf9ce('0x60')]['id'];_0x5a6ede[_0xf9ce('0x61')]['id']=_0x44404f[_0xf9ce('0x57')]['UserId'];return db[_0xf9ce('0x3b')][_0xf9ce('0x55')]({'where':{'id':_0x44404f[_0xf9ce('0x52')]['id'],'UserId':null}})[_0xf9ce('0x21')](handleEntityNotFound(_0x382025,null))[_0xf9ce('0x21')](saveUpdates(_0x44404f[_0xf9ce('0x57')],null))[_0xf9ce('0x21')](function(_0x57c400){if(_0x57c400){_0x5a6ede[_0xf9ce('0x27')]=_0x57c400[_0xf9ce('0x62')]({'plain':!![]});return db[_0xf9ce('0x63')]['find']({'where':{'id':_0x57c400[_0xf9ce('0x64')]}});}return null;})[_0xf9ce('0x21')](handleEntityNotFound(_0x382025,null))[_0xf9ce('0x21')](function(_0x276624){if(_0x276624){return _0x276624[_0xf9ce('0x34')]({'UserId':_0x44404f['body'][_0xf9ce('0x5f')],'read1stAt':_[_0xf9ce('0x65')](_0x276624['read1stAt'])?moment()[_0xf9ce('0x5d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x18ebdc){if(_0x18ebdc){_0x5a6ede['interaction']=_0x18ebdc[_0xf9ce('0x62')]({'plain':!![]});interaction_log['info'](_0xf9ce('0x66'),_0x44404f['user']['id'],_0x44404f[_0xf9ce('0x60')][_0xf9ce('0x37')],_0x44404f[_0xf9ce('0x60')][_0xf9ce('0x67')],_0x5a6ede[_0xf9ce('0x68')]['id'],_0x44404f[_0xf9ce('0x57')]?JSON[_0xf9ce('0x69')](_0x44404f[_0xf9ce('0x57')]):_0xf9ce('0x6a'));return respondWithRpcPromise('AcceptMessage',_0xf9ce('0x6b'),_0x5a6ede);}return null;})[_0xf9ce('0x21')](function(_0x591f7b){var _0x271a7e=_0xf9ce('0x6c')+_0x591f7b['message']['ContactId'];return db[_0xf9ce('0x6d')][_0xf9ce('0x41')](_0x271a7e,{'type':db[_0xf9ce('0x6e')]['QueryTypes']['SELECT'],'raw':!![]})[_0xf9ce('0x21')](function(_0x2fb949){return _0x2fb949;});})['then'](function(_0x1f2ed3){if(_0x1f2ed3){_0x5a6ede[_0xf9ce('0x27')][_0xf9ce('0x6f')]=_0x1f2ed3[0x0];if(!_0x44404f[_0xf9ce('0x57')][_0xf9ce('0x5f')])return;return db[_0xf9ce('0x70')][_0xf9ce('0x55')]({'where':{'id':_0x44404f[_0xf9ce('0x57')]['UserId'],'role':_0xf9ce('0x61')},'attributes':['id',_0xf9ce('0x37'),_0xf9ce('0x71'),'email',_0xf9ce('0x72')],'raw':!![]});}return null;})['then'](function(_0x596f44){if(!_0x596f44)return null;_0x5a6ede[_0xf9ce('0x27')][_0xf9ce('0x61')]=_0x596f44;return _0x5a6ede;})['then'](function(_0x2593e0){if(_0x2593e0){if(_0x44404f[_0xf9ce('0x57')]['manual']){_0x5a6ede[_0xf9ce('0x27')][_0xf9ce('0x73')]=util[_0xf9ce('0x5d')](_0xf9ce('0x74'),_0x44404f[_0xf9ce('0x60')][_0xf9ce('0x37')]);_0x5a6ede[_0xf9ce('0x27')][_0xf9ce('0x75')]=_0x5a6ede[_0xf9ce('0x75')];_0x5a6ede['message']['event']='accept';return respondWithRpcPromise(_0xf9ce('0x76'),'EventManager',{'event':_0xf9ce('0x77'),'message':_0x5a6ede[_0xf9ce('0x27')]},client9002)[_0xf9ce('0x21')](function(){return _0x5a6ede;});}return _0x5a6ede;}return null;})[_0xf9ce('0x21')](respondWithResult(_0x382025,null))[_0xf9ce('0x50')](handleError(_0x382025,null));};var interaction_log=require(_0xf9ce('0x14'))(_0xf9ce('0x59'));exports[_0xf9ce('0x78')]=function(_0x19b0ae,_0x2f9242,_0x4786cd){var _0x598b96={'agent':{},'channel':_0xf9ce('0x5b')};if(_0x19b0ae['body']['id']){delete _0x19b0ae[_0xf9ce('0x57')]['id'];}_0x19b0ae[_0xf9ce('0x57')][_0xf9ce('0x5f')]=_0x19b0ae[_0xf9ce('0x57')][_0xf9ce('0x5f')]||_0x19b0ae[_0xf9ce('0x60')]['id'];_0x598b96[_0xf9ce('0x61')]['id']=_0x19b0ae[_0xf9ce('0x57')][_0xf9ce('0x5f')];return db[_0xf9ce('0x3b')]['find']({'where':{'id':_0x19b0ae['params']['id'],'UserId':null}})[_0xf9ce('0x21')](handleEntityNotFound(_0x2f9242,null))[_0xf9ce('0x21')](function(_0x578365){if(_0x578365){_0x598b96[_0xf9ce('0x27')]=_0x578365[_0xf9ce('0x62')]({'plain':!![]});return db[_0xf9ce('0x63')][_0xf9ce('0x55')]({'where':{'id':_0x578365[_0xf9ce('0x64')]}});}return null;})[_0xf9ce('0x21')](handleEntityNotFound(_0x2f9242,null))[_0xf9ce('0x21')](function(_0x337c5b){if(_0x337c5b){_0x598b96[_0xf9ce('0x68')]=_0x337c5b[_0xf9ce('0x62')]({'plain':!![]});interaction_log[_0xf9ce('0x22')](_0xf9ce('0x79'),_0x19b0ae[_0xf9ce('0x60')]['id'],_0x19b0ae[_0xf9ce('0x60')]['name'],_0x19b0ae[_0xf9ce('0x60')][_0xf9ce('0x67')],_0x598b96[_0xf9ce('0x68')]['id'],_0x19b0ae['body']?JSON[_0xf9ce('0x69')](_0x19b0ae[_0xf9ce('0x57')]):'null');return respondWithRpcPromise(_0xf9ce('0x7a'),'rejectMessage',_0x598b96);}return null;})[_0xf9ce('0x21')](function(_0x20b9d8){var _0x1cf9dc='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x20b9d8[_0xf9ce('0x27')][_0xf9ce('0x7b')];return db['sequelize'][_0xf9ce('0x41')](_0x1cf9dc,{'type':db['Sequelize'][_0xf9ce('0x7c')]['SELECT'],'raw':!![]})[_0xf9ce('0x21')](function(_0x110f14){return _0x110f14;});})[_0xf9ce('0x21')](function(_0x3b3596){if(_0x3b3596){_0x598b96[_0xf9ce('0x27')][_0xf9ce('0x6f')]=_0x3b3596[0x0];if(!_0x19b0ae[_0xf9ce('0x57')][_0xf9ce('0x5f')])return;return db[_0xf9ce('0x70')][_0xf9ce('0x55')]({'where':{'id':_0x19b0ae[_0xf9ce('0x57')][_0xf9ce('0x5f')],'role':_0xf9ce('0x61')},'attributes':['id',_0xf9ce('0x37'),_0xf9ce('0x71'),_0xf9ce('0x7d'),'internal'],'raw':!![]});}return null;})[_0xf9ce('0x21')](function(_0x46f4d7){if(!_0x46f4d7)return null;_0x598b96[_0xf9ce('0x27')][_0xf9ce('0x61')]=_0x46f4d7;return _0x598b96;})[_0xf9ce('0x21')](function(_0x4bb56e){if(_0x4bb56e){_0x4bb56e[_0xf9ce('0x27')]['interface']=util['format'](_0xf9ce('0x74'),_0x19b0ae[_0xf9ce('0x60')][_0xf9ce('0x37')]);_0x4bb56e[_0xf9ce('0x27')]['channel']=_0x598b96['channel'];_0x4bb56e[_0xf9ce('0x27')][_0xf9ce('0x7e')]=_0xf9ce('0x78');respondWithRpcPromise(_0xf9ce('0x76'),'EventManager',{'event':_0xf9ce('0x7f'),'message':_0x4bb56e[_0xf9ce('0x27')]},client9002);return _0x598b96;}return null;})[_0xf9ce('0x21')](respondWithResult(_0x2f9242,null))[_0xf9ce('0x50')](handleError(_0x2f9242,null));};
\ No newline at end of file
index 0a54949..16e309f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16d2=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners','save','update'];(function(_0x57c501,_0x319f03){var _0x4f15ba=function(_0x52e0c1){while(--_0x52e0c1){_0x57c501['push'](_0x57c501['shift']());}};_0x4f15ba(++_0x319f03);}(_0x16d2,0x123));var _0x216d=function(_0x61e3e7,_0xe0e3e8){_0x61e3e7=_0x61e3e7-0x0;var _0x38bf26=_0x16d2[_0x61e3e7];return _0x38bf26;};'use strict';var EventEmitter=require(_0x216d('0x0'));var OpenchannelMessage=require(_0x216d('0x1'))['db'][_0x216d('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x216d('0x3')](0x0);var events={'afterCreate':_0x216d('0x4'),'afterUpdate':_0x216d('0x5'),'afterDestroy':_0x216d('0x6')};function emitEvent(_0x239b49){return function(_0xfd7306,_0x593bb0,_0x2c662d){OpenchannelMessageEvents[_0x216d('0x7')](_0x239b49+':'+_0xfd7306['id'],_0xfd7306);OpenchannelMessageEvents[_0x216d('0x7')](_0x239b49,_0xfd7306);_0x2c662d(null);};}for(var e in events){if(events[_0x216d('0x8')](e)){var event=events[e];OpenchannelMessage[_0x216d('0x9')](e,emitEvent(event));}}module[_0x216d('0xa')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xef33=['hasOwnProperty','exports','events','OpenchannelMessage','setMaxListeners','save','update','remove','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xef33,0x12b));var _0x3ef3=function(_0x5a2ef1,_0x5931ca){_0x5a2ef1=_0x5a2ef1-0x0;var _0x5f107c=_0xef33[_0x5a2ef1];return _0x5f107c;};'use strict';var EventEmitter=require(_0x3ef3('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0x3ef3('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x3ef3('0x2')](0x0);var events={'afterCreate':_0x3ef3('0x3'),'afterUpdate':_0x3ef3('0x4'),'afterDestroy':_0x3ef3('0x5')};function emitEvent(_0x3b1de7){return function(_0x3193e7,_0x4ebd41,_0x1f6b9a){OpenchannelMessageEvents[_0x3ef3('0x6')](_0x3b1de7+':'+_0x3193e7['id'],_0x3193e7);OpenchannelMessageEvents['emit'](_0x3b1de7,_0x3193e7);_0x1f6b9a(null);};}for(var e in events){if(events[_0x3ef3('0x7')](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0x3ef3('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
index 3b96e21..50ce52b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa571=['afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','length','Interaction','omit','Contact','POST','method','GET','OpenchannelMessage,\x20%s,\x20%s','Message\x20%d\x20forwarded\x20to\x20%s','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','../../config/environment','exports','define','OpenchannelMessage','openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','UserId','findOne','OpenchannelInteractionId','createdAt','catch','error','CmContact','then','OpenchannelAccount','OpenchannelAccountId','OpenchannelInteraction','Interactions'];(function(_0x4f782e,_0x5c049d){var _0x3193cd=function(_0x412841){while(--_0x412841){_0x4f782e['push'](_0x4f782e['shift']());}};_0x3193cd(++_0x5c049d);}(_0xa571,0x107));var _0x1a57=function(_0x243c7b,_0x1e479a){_0x243c7b=_0x243c7b-0x0;var _0x45b9c1=_0xa571[_0x243c7b];return _0x45b9c1;};'use strict';var _=require(_0x1a57('0x0'));var util=require(_0x1a57('0x1'));var logger=require(_0x1a57('0x2'))(_0x1a57('0x3'));var moment=require('moment');var BPromise=require(_0x1a57('0x4'));var rp=require(_0x1a57('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1a57('0x6'));var attributes=require('./openchannelMessage.attributes');module[_0x1a57('0x7')]=function(_0xd97a33,_0x22ca20){return _0xd97a33[_0x1a57('0x8')](_0x1a57('0x9'),attributes,{'tableName':_0x1a57('0xa'),'paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':[_0x1a57('0xb')],'type':_0x1a57('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3631d6,_0x58e266,_0x3c8182){var _0x1f7086=_0xd97a33[_0x1a57('0xd')];var _0x289dc0=_0x3631d6[_0x1a57('0xe')]({'plain':!![]});if(_0x289dc0[_0x1a57('0xf')][_0x1a57('0x10')]()==='in'||_0x289dc0[_0x1a57('0xf')]['toLowerCase']()==='out'&&!_0x289dc0[_0x1a57('0x11')]&&!_[_0x1a57('0x12')](_0x289dc0[_0x1a57('0x13')])){_0x1f7086['OpenchannelInteraction'][_0x1a57('0x14')]({'where':{'id':_0x289dc0[_0x1a57('0x15')]}})['then'](function(_0x503278){if(_0x503278){_0x503278['update']({'lastMsgAt':_0x289dc0[_0x1a57('0x16')],'lastMsgDirection':_0x289dc0[_0x1a57('0xf')][_0x1a57('0x10')]()});}})[_0x1a57('0x17')](function(_0x5802d6){console[_0x1a57('0x18')](_0x5802d6);});}if(_0x289dc0['direction']==='out'&&!_0x289dc0[_0x1a57('0x11')]){var _0x1c537f;_0x1f7086[_0x1a57('0x19')]['describe']()[_0x1a57('0x1a')](function(_0x1662a3){return _0x1f7086[_0x1a57('0x1b')]['find']({'where':{'id':_0x289dc0[_0x1a57('0x1c')]},'include':[{'model':_0x1f7086[_0x1a57('0x1d')],'as':_0x1a57('0x1e'),'where':{'id':_0x289dc0[_0x1a57('0x15')]},'limit':0x1,'include':[{'model':_0x1f7086[_0x1a57('0x19')],'as':'Contact','attributes':_['keys'](_0x1662a3)}]}]});})[_0x1a57('0x1a')](function(_0x21e811){_0x1c537f=_0x21e811[_0x1a57('0xe')]({'plain':!![]});if(_0x1c537f&&_0x1c537f['replyUri']){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x1a57('0x1f'),util[_0x1a57('0x20')](_0x1a57('0x21'),_0x289dc0['id'],_0x1c537f[_0x1a57('0x22')]));if(_0x1c537f[_0x1a57('0x1e')]&&_0x1c537f[_0x1a57('0x1e')][_0x1a57('0x23')]){_0x289dc0[_0x1a57('0x24')]=_[_0x1a57('0x25')](_0x1c537f[_0x1a57('0x1e')][0x0],_0x1a57('0x26'));_0x289dc0[_0x1a57('0x26')]=_0x1c537f[_0x1a57('0x1e')][0x0][_0x1a57('0x26')];}var _0x58e266={'method':_0x1a57('0x27'),'uri':encodeURI(_0x1c537f[_0x1a57('0x22')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x58e266[_0x1a57('0x28')]){case _0x1a57('0x29'):_0x58e266['qs']=_0x289dc0;break;case _0x1a57('0x27'):_0x58e266[_0x1a57('0xb')]=_0x289dc0;break;}return rp(_0x58e266)[_0x1a57('0x1a')](function(_0x5a53c8){logger['info'](_0x1a57('0x2a'),_0x1a57('0x1f'),util['format'](_0x1a57('0x2b'),_0x289dc0['id'],_0x1c537f['replyUri']));if(_0x5a53c8[_0x1a57('0xb')][_0x1a57('0x2c')]&&_0x5a53c8['body'][_0x1a57('0x2c')]!=_0x289dc0[_0x1a57('0x24')][_0x1a57('0x2c')]){return _0x1f7086[_0x1a57('0x1d')]['update']({'threadId':_0x5a53c8[_0x1a57('0xb')][_0x1a57('0x2c')]},{'logging':!![],'where':{'id':_0x289dc0[_0x1a57('0x24')]['id']}});}else{return;}})[_0x1a57('0x1a')](function(){return _0x3631d6['update']({'read':!![]});})[_0x1a57('0x17')](function(_0x251a54){logger[_0x1a57('0x18')](_0x1a57('0x2a'),_0x1a57('0x1f'),util[_0x1a57('0x2d')](_0x251a54,{'showHidden':![],'depth':null}));_0x3c8182();});}else{_0x3c8182();}})[_0x1a57('0x2e')](function(){_0x3c8182();});}else{_0x3c8182();}}},'charset':_0x1a57('0x2f'),'collate':_0x1a57('0x30')});};
\ 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(_0x529bcd,_0x5dc8e6){var _0x113ae3=function(_0x3f3a0b){while(--_0x3f3a0b){_0x529bcd['push'](_0x529bcd['shift']());}};_0x113ae3(++_0x5dc8e6);}(_0x1775,0x1db));var _0x5177=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x1775[_0x17d9e3];return _0x14192d;};'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 82b5be5..4fbc52a 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(_0x369146,_0x2ed234){var _0x21870f=function(_0x1376f8){while(--_0x1376f8){_0x369146['push'](_0x369146['shift']());}};_0x21870f(++_0x2ed234);}(_0x5f2f,0x73));var _0xf5f2=function(_0xa59eb9,_0x39e45e){_0xa59eb9=_0xa59eb9-0x0;var _0x2146fd=_0x5f2f[_0xa59eb9];return _0x2146fd;};'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 _0x0b0e=['message','result','OpenchannelMessage','create','body','options','CreateOpenchannelMessage','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','then','info','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x457ae2,_0x270efb){var _0x2cd9cc=function(_0x31d182){while(--_0x31d182){_0x457ae2['push'](_0x457ae2['shift']());}};_0x2cd9cc(++_0x270efb);}(_0x0b0e,0x187));var _0xe0b0=function(_0x2a5099,_0x329e92){_0x2a5099=_0x2a5099-0x0;var _0x2802f1=_0x0b0e[_0x2a5099];return _0x2802f1;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var moment=require(_0xe0b0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe0b0('0x2'));var fs=require('fs');var Redis=require(_0xe0b0('0x3'));var db=require(_0xe0b0('0x4'))['db'];var utils=require(_0xe0b0('0x5'));var logger=require(_0xe0b0('0x6'))(_0xe0b0('0x7'));var config=require(_0xe0b0('0x8'));var jayson=require(_0xe0b0('0x9'));var client=jayson[_0xe0b0('0xa')][_0xe0b0('0xb')]({'port':0x232a});config[_0xe0b0('0xc')]=_['defaults'](config['redis'],{'host':_0xe0b0('0xd'),'port':0x18eb});var socket=require(_0xe0b0('0xe'))(new Redis(config[_0xe0b0('0xc')]));require(_0xe0b0('0xf'))['register'](socket);function respondWithRpcPromise(_0x338e7c,_0x1dd3b8,_0x553d4f){return new BPromise(function(_0x1fef28,_0x2f32b6){return client['request'](_0x338e7c,_0x553d4f)[_0xe0b0('0x10')](function(_0x2cdad2){logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0xe0b0('0x12'));logger[_0xe0b0('0x13')](_0xe0b0('0x14'),_0x1dd3b8,_0xe0b0('0x12'),JSON[_0xe0b0('0x15')](_0x2cdad2));if(_0x2cdad2['error']){if(_0x2cdad2[_0xe0b0('0x16')][_0xe0b0('0x17')]===0x1f4){logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2[_0xe0b0('0x16')]['message']);return _0x2f32b6(_0x2cdad2[_0xe0b0('0x16')]['message']);}logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2['error'][_0xe0b0('0x19')]);return _0x1fef28(_0x2cdad2['error'][_0xe0b0('0x19')]);}else{logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,'request\x20sent');_0x1fef28(_0x2cdad2[_0xe0b0('0x1a')]['message']);}})['catch'](function(_0x4bce65){logger[_0xe0b0('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0x4bce65);_0x2f32b6(_0x4bce65);});});}exports['CreateOpenchannelMessage']=function(_0x10cde1){var _0x59dff5=this;return new Promise(function(_0x472286,_0x5dba2f){return db[_0xe0b0('0x1b')][_0xe0b0('0x1c')](_0x10cde1[_0xe0b0('0x1d')],{'raw':_0x10cde1[_0xe0b0('0x1e')]?_0x10cde1[_0xe0b0('0x1e')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2fa820){logger['info'](_0xe0b0('0x1f'),_0x10cde1);logger[_0xe0b0('0x13')]('CreateOpenchannelMessage',_0x10cde1,JSON[_0xe0b0('0x15')](_0x2fa820));_0x472286(_0x2fa820);})['catch'](function(_0x2208d0){logger['error'](_0xe0b0('0x1f'),_0x2208d0['message'],_0x10cde1);_0x5dba2f(_0x59dff5[_0xe0b0('0x16')](0x1f4,_0x2208d0['message']));});});};
\ No newline at end of file
index 2a7d987..aaaa9c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2f3=['emit','register','length','openchannelMessage:','save','update'];(function(_0x371b47,_0x1e28da){var _0x48fb33=function(_0x2e8031){while(--_0x2e8031){_0x371b47['push'](_0x371b47['shift']());}};_0x48fb33(++_0x1e28da);}(_0xa2f3,0x76));var _0x3a2f=function(_0x4f6972,_0x40529b){_0x4f6972=_0x4f6972-0x0;var _0x471a48=_0xa2f3[_0x4f6972];return _0x471a48;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0x3a2f('0x0'),'remove',_0x3a2f('0x1')];function createListener(_0x2ae180,_0x53e45a){return function(_0x28e1cd){_0x53e45a[_0x3a2f('0x2')](_0x2ae180,_0x28e1cd);};}function removeListener(_0x1b94f5,_0xcab785){return function(){OpenchannelMessageEvents['removeListener'](_0x1b94f5,_0xcab785);};}exports[_0x3a2f('0x3')]=function(_0x553478){for(var _0x581703=0x0,_0x3489bf=events[_0x3a2f('0x4')];_0x581703<_0x3489bf;_0x581703++){var _0xac48f1=events[_0x581703];var _0x5acfa7=createListener(_0x3a2f('0x5')+_0xac48f1,_0x553478);OpenchannelMessageEvents['on'](_0xac48f1,_0x5acfa7);}};
\ No newline at end of file
+var _0xae8a=['update','removeListener','register','length','openchannelMessage:','./openchannelMessage.events','remove'];(function(_0x5eb96d,_0x5a1529){var _0x443d7e=function(_0x4ce5e3){while(--_0x4ce5e3){_0x5eb96d['push'](_0x5eb96d['shift']());}};_0x443d7e(++_0x5a1529);}(_0xae8a,0x98));var _0xaae8=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0xae8a[_0x279d37];return _0x530173;};'use strict';var OpenchannelMessageEvents=require(_0xaae8('0x0'));var events=['save',_0xaae8('0x1'),_0xaae8('0x2')];function createListener(_0x260371,_0x4b351d){return function(_0x1b903e){_0x4b351d['emit'](_0x260371,_0x1b903e);};}function removeListener(_0x403ccf,_0x458ff7){return function(){OpenchannelMessageEvents[_0xaae8('0x3')](_0x403ccf,_0x458ff7);};}exports[_0xaae8('0x4')]=function(_0x37274a){for(var _0x8e703c=0x0,_0x2da908=events[_0xaae8('0x5')];_0x8e703c<_0x2da908;_0x8e703c++){var _0x31a36c=events[_0x8e703c];var _0x3951fb=createListener(_0xaae8('0x6')+_0x31a36c,_0x37274a);OpenchannelMessageEvents['on'](_0x31a36c,_0x3951fb);}};
\ No newline at end of file
index cd4c783..5e78148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe3a=['isAuthenticated','index','/describe','/:id','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','create','post','/:id/teams','addTeams','update','delete','destroy','removeAgents','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x542394,_0xa1dfe7){var _0x3e4354=function(_0x1d4a73){while(--_0x1d4a73){_0x542394['push'](_0x542394['shift']());}};_0x3e4354(++_0xa1dfe7);}(_0xbe3a,0x147));var _0xabe3=function(_0x847be1,_0x24f745){_0x847be1=_0x847be1-0x0;var _0x4e8f21=_0xbe3a[_0x847be1];return _0x4e8f21;};'use strict';var multer=require(_0xabe3('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xabe3('0x1'));var express=require(_0xabe3('0x2'));var router=express[_0xabe3('0x3')]();var fs_extra=require(_0xabe3('0x4'));var auth=require(_0xabe3('0x5'));var interaction=require(_0xabe3('0x6'));var config=require(_0xabe3('0x7'));var controller=require('./openchannelQueue.controller');router[_0xabe3('0x8')]('/',auth[_0xabe3('0x9')](),controller[_0xabe3('0xa')]);router[_0xabe3('0x8')](_0xabe3('0xb'),auth[_0xabe3('0x9')](),controller['describe']);router[_0xabe3('0x8')](_0xabe3('0xc'),auth['isAuthenticated'](),controller[_0xabe3('0xd')]);router['get'](_0xabe3('0xe'),auth[_0xabe3('0x9')](),controller[_0xabe3('0xf')]);router[_0xabe3('0x8')]('/:id/teams',auth[_0xabe3('0x9')](),controller[_0xabe3('0x10')]);router[_0xabe3('0x8')](_0xabe3('0x11'),auth[_0xabe3('0x9')](),controller[_0xabe3('0x12')]);router['post']('/',auth[_0xabe3('0x9')](),controller[_0xabe3('0x13')]);router[_0xabe3('0x14')](_0xabe3('0x15'),auth[_0xabe3('0x9')](),controller[_0xabe3('0x16')]);router[_0xabe3('0x14')](_0xabe3('0x11'),auth[_0xabe3('0x9')](),controller['addAgents']);router['put']('/:id',auth[_0xabe3('0x9')](),controller[_0xabe3('0x17')]);router[_0xabe3('0x18')](_0xabe3('0xc'),auth[_0xabe3('0x9')](),controller[_0xabe3('0x19')]);router['delete']('/:id/teams',auth[_0xabe3('0x9')](),controller['removeTeams']);router[_0xabe3('0x18')](_0xabe3('0x11'),auth['isAuthenticated'](),controller[_0xabe3('0x1a')]);module[_0xabe3('0x1b')]=router;
\ No newline at end of file
+var _0x074d=['Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','getMembers','getTeams','/:id/users','getAgents','post','create','/:id/teams','addTeams','addAgents','update','delete','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x074d,0xdb));var _0xd074=function(_0x476e7a,_0x449bf6){_0x476e7a=_0x476e7a-0x0;var _0x2e7552=_0x074d[_0x476e7a];return _0x2e7552;};'use strict';var multer=require(_0xd074('0x0'));var util=require(_0xd074('0x1'));var path=require(_0xd074('0x2'));var timeout=require(_0xd074('0x3'));var express=require(_0xd074('0x4'));var router=express[_0xd074('0x5')]();var fs_extra=require(_0xd074('0x6'));var auth=require(_0xd074('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xd074('0x8'));var controller=require('./openchannelQueue.controller');router[_0xd074('0x9')]('/',auth[_0xd074('0xa')](),controller[_0xd074('0xb')]);router['get']('/describe',auth[_0xd074('0xa')](),controller['describe']);router[_0xd074('0x9')](_0xd074('0xc'),auth['isAuthenticated'](),controller[_0xd074('0xd')]);router['get']('/:id/members',auth[_0xd074('0xa')](),controller[_0xd074('0xe')]);router[_0xd074('0x9')]('/:id/teams',auth[_0xd074('0xa')](),controller[_0xd074('0xf')]);router[_0xd074('0x9')](_0xd074('0x10'),auth[_0xd074('0xa')](),controller[_0xd074('0x11')]);router[_0xd074('0x12')]('/',auth[_0xd074('0xa')](),controller[_0xd074('0x13')]);router[_0xd074('0x12')](_0xd074('0x14'),auth[_0xd074('0xa')](),controller[_0xd074('0x15')]);router[_0xd074('0x12')](_0xd074('0x10'),auth[_0xd074('0xa')](),controller[_0xd074('0x16')]);router['put'](_0xd074('0xc'),auth[_0xd074('0xa')](),controller[_0xd074('0x17')]);router['delete'](_0xd074('0xc'),auth[_0xd074('0xa')](),controller['destroy']);router[_0xd074('0x18')](_0xd074('0x14'),auth[_0xd074('0xa')](),controller[_0xd074('0x19')]);router[_0xd074('0x18')](_0xd074('0x10'),auth[_0xd074('0xa')](),controller[_0xd074('0x1a')]);module[_0xd074('0x1b')]=router;
\ No newline at end of file
index 2a8b6bb..fb99f1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22fd=['exports','name','ENUM','rrmemory','beepall','roundrobin','sequelize'];(function(_0x3ffebb,_0x1b67b3){var _0x2ad9ce=function(_0x4c978b){while(--_0x4c978b){_0x3ffebb['push'](_0x3ffebb['shift']());}};_0x2ad9ce(++_0x1b67b3);}(_0x22fd,0x187));var _0xd22f=function(_0x3c8e9a,_0x384306){_0x3c8e9a=_0x3c8e9a-0x0;var _0x2d4c57=_0x22fd[_0x3c8e9a];return _0x2d4c57;};'use strict';var Sequelize=require(_0xd22f('0x0'));module[_0xd22f('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xd22f('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xd22f('0x3')](_0xd22f('0x4'),_0xd22f('0x5'),_0xd22f('0x6'))}};
\ No newline at end of file
+var _0x135b=['STRING','name','INTEGER','ENUM','rrmemory','roundrobin','exports'];(function(_0x14915a,_0x222f6b){var _0x2f683c=function(_0x28e694){while(--_0x28e694){_0x14915a['push'](_0x14915a['shift']());}};_0x2f683c(++_0x222f6b);}(_0x135b,0xdf));var _0xb135=function(_0x22ea59,_0x387ed1){_0x22ea59=_0x22ea59-0x0;var _0x444611=_0x135b[_0x22ea59];return _0x444611;};'use strict';var Sequelize=require('sequelize');module[_0xb135('0x0')]={'name':{'type':Sequelize[_0xb135('0x1')],'unique':_0xb135('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb135('0x1')]},'timeout':{'type':Sequelize[_0xb135('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb135('0x4')](_0xb135('0x5'),'beepall',_0xb135('0x6'))}};
\ No newline at end of file
index e91f20c..04c64e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd019=['OpenchannelQueueId','User','findAndCountAll','UserId','agent','updatedAt','createdAt','%s/%s','openchannelPause','getTeams','Team','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','each','forEach','userOpenchannelQueue:save','removeTeams','select','tq.TeamId','team_has_openchannel_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','SELECT','every','TeamId','all','union','value','isEmpty','removeAgents','emit','userOpenchannelQueue:remove','addAgents','omit','spread','isArray','getAgents','rawAttributes','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','redis','socket.io-emitter','./openchannelQueue.socket','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','index','map','OpenchannelQueue','fieldName','type','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserOpenchannelQueue','sort'];(function(_0x32a066,_0xc2b66b){var _0x548224=function(_0x20d21a){while(--_0x20d21a){_0x32a066['push'](_0x32a066['shift']());}};_0x548224(++_0xc2b66b);}(_0xd019,0xb7));var _0x9d01=function(_0x329437,_0x1de73a){_0x329437=_0x329437-0x0;var _0x3789d9=_0xd019[_0x329437];return _0x3789d9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9d01('0x0'));var jsonpatch=require(_0x9d01('0x1'));var rp=require('request-promise');var moment=require(_0x9d01('0x2'));var BPromise=require(_0x9d01('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9d01('0x4'));var sox=require(_0x9d01('0x5'));var csv=require(_0x9d01('0x6'));var ejs=require(_0x9d01('0x7'));var fs=require('fs');var fs_extra=require(_0x9d01('0x8'));var _=require(_0x9d01('0x9'));var squel=require(_0x9d01('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9d01('0x6'));var querystring=require(_0x9d01('0xb'));var Papa=require(_0x9d01('0xc'));var Redis=require(_0x9d01('0xd'));var authService=require(_0x9d01('0xe'));var qs=require(_0x9d01('0xf'));var as=require(_0x9d01('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9d01('0x11'))(_0x9d01('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9d01('0x13'))['db'];config[_0x9d01('0x14')]=_['defaults'](config[_0x9d01('0x14')],{'host':'localhost','port':0x18eb});var socket=require(_0x9d01('0x15'))(new Redis(config['redis']));require(_0x9d01('0x16'))['register'](socket);function respondWithStatusCode(_0x3adaad,_0x217d53){_0x217d53=_0x217d53||0xcc;return function(_0x33ca74){if(_0x33ca74){return _0x3adaad[_0x9d01('0x17')](_0x217d53);}return _0x3adaad['status'](_0x217d53)[_0x9d01('0x18')]();};}function respondWithResult(_0x2839a9,_0x296069){_0x296069=_0x296069||0xc8;return function(_0x5e16c4){if(_0x5e16c4){return _0x2839a9[_0x9d01('0x19')](_0x296069)[_0x9d01('0x1a')](_0x5e16c4);}};}function respondWithFilteredResult(_0x1dadc4,_0x5d51d8){return function(_0x437e3d){if(_0x437e3d){var _0x28547f=typeof _0x5d51d8[_0x9d01('0x1b')]==='undefined'&&typeof _0x5d51d8['limit']===_0x9d01('0x1c');var _0x17a781=_0x437e3d[_0x9d01('0x1d')];var _0x9558ba=_0x28547f?0x0:_0x5d51d8[_0x9d01('0x1b')];var _0x3a536b=_0x28547f?_0x437e3d[_0x9d01('0x1d')]:_0x5d51d8['offset']+_0x5d51d8[_0x9d01('0x1e')];var _0x4e4a65;if(_0x3a536b>=_0x17a781){_0x3a536b=_0x17a781;_0x4e4a65=0xc8;}else{_0x4e4a65=0xce;}_0x1dadc4[_0x9d01('0x19')](_0x4e4a65);return _0x1dadc4[_0x9d01('0x1f')](_0x9d01('0x20'),_0x9558ba+'-'+_0x3a536b+'/'+_0x17a781)['json'](_0x437e3d);}return null;};}function patchUpdates(_0x9c0a0d){return function(_0x48a2e5){try{jsonpatch[_0x9d01('0x21')](_0x48a2e5,_0x9c0a0d,!![]);}catch(_0x3474b3){return BPromise[_0x9d01('0x22')](_0x3474b3);}return _0x48a2e5['save']();};}function saveUpdates(_0x24fc29,_0x1c49c9){return function(_0x129f75){if(_0x129f75){return _0x129f75[_0x9d01('0x23')](_0x24fc29)[_0x9d01('0x24')](function(_0xec7cfa){return _0xec7cfa;});}return null;};}function removeEntity(_0x2781c6,_0x323e39){return function(_0x58749c){if(_0x58749c){return _0x58749c[_0x9d01('0x25')]()[_0x9d01('0x24')](function(){var _0xb17297=_0x58749c[_0x9d01('0x26')]({'plain':!![]});var _0x195585=_0x9d01('0x27');return db[_0x9d01('0x28')]['destroy']({'where':{'type':_0x195585,'resourceId':_0xb17297['id']}})['then'](function(){return _0x58749c;});})[_0x9d01('0x24')](function(){_0x2781c6[_0x9d01('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5823aa,_0x442335){return function(_0x3496ac){if(!_0x3496ac){_0x5823aa[_0x9d01('0x17')](0x194);}return _0x3496ac;};}function handleError(_0x110d7e,_0x14d13a){_0x14d13a=_0x14d13a||0x1f4;return function(_0x22ea1d){logger[_0x9d01('0x29')](_0x22ea1d[_0x9d01('0x2a')]);if(_0x22ea1d[_0x9d01('0x2b')]){delete _0x22ea1d['name'];}_0x110d7e['status'](_0x14d13a)['send'](_0x22ea1d);};}exports[_0x9d01('0x2c')]=function(_0x3d5f9f,_0x509216){var _0x51c685={},_0x2043be={},_0x5edc94={'count':0x0,'rows':[]};var _0x2cf892=_[_0x9d01('0x2d')](db[_0x9d01('0x2e')]['rawAttributes'],function(_0xeab661){return{'name':_0xeab661[_0x9d01('0x2f')],'type':_0xeab661[_0x9d01('0x30')][_0x9d01('0x31')]};});_0x2043be['model']=_[_0x9d01('0x2d')](_0x2cf892,_0x9d01('0x2b'));_0x2043be['query']=_[_0x9d01('0x32')](_0x3d5f9f[_0x9d01('0x33')]);_0x2043be[_0x9d01('0x34')]=_[_0x9d01('0x35')](_0x2043be[_0x9d01('0x36')],_0x2043be[_0x9d01('0x33')]);_0x51c685['attributes']=_[_0x9d01('0x35')](_0x2043be['model'],qs[_0x9d01('0x37')](_0x3d5f9f['query'][_0x9d01('0x37')]));_0x51c685['attributes']=_0x51c685[_0x9d01('0x38')][_0x9d01('0x39')]?_0x51c685[_0x9d01('0x38')]:_0x2043be[_0x9d01('0x36')];if(!_0x3d5f9f[_0x9d01('0x33')][_0x9d01('0x3a')](_0x9d01('0x3b'))){_0x51c685[_0x9d01('0x1e')]=qs[_0x9d01('0x1e')](_0x3d5f9f[_0x9d01('0x33')]['limit']);_0x51c685['offset']=qs[_0x9d01('0x1b')](_0x3d5f9f[_0x9d01('0x33')][_0x9d01('0x1b')]);}_0x51c685[_0x9d01('0x3c')]=qs['sort'](_0x3d5f9f[_0x9d01('0x33')]['sort']);_0x51c685[_0x9d01('0x3d')]=qs[_0x9d01('0x34')](_[_0x9d01('0x3e')](_0x3d5f9f[_0x9d01('0x33')],_0x2043be['filters']),_0x2cf892);if(_0x3d5f9f[_0x9d01('0x33')][_0x9d01('0x3f')]){_0x51c685['where']=_[_0x9d01('0x40')](_0x51c685[_0x9d01('0x3d')],{'$or':_[_0x9d01('0x2d')](_0x2cf892,function(_0x2ce09f){if(_0x2ce09f['type']!==_0x9d01('0x41')){var _0x47eacb={};_0x47eacb[_0x2ce09f[_0x9d01('0x2b')]]={'$like':'%'+_0x3d5f9f['query']['filter']+'%'};return _0x47eacb;}})});}_0x51c685=_['merge']({},_0x51c685,_0x3d5f9f[_0x9d01('0x42')]);var _0x1e4756={'where':_0x51c685[_0x9d01('0x3d')]};return db['OpenchannelQueue'][_0x9d01('0x1d')](_0x1e4756)['then'](function(_0x496b48){_0x5edc94[_0x9d01('0x1d')]=_0x496b48;if(_0x3d5f9f['query'][_0x9d01('0x43')]){_0x51c685[_0x9d01('0x44')]=[{'all':!![]}];}return db['OpenchannelQueue'][_0x9d01('0x45')](_0x51c685);})[_0x9d01('0x24')](function(_0x644c64){_0x5edc94[_0x9d01('0x46')]=_0x644c64;return _0x5edc94;})[_0x9d01('0x24')](respondWithFilteredResult(_0x509216,_0x51c685))[_0x9d01('0x47')](handleError(_0x509216,null));};exports[_0x9d01('0x48')]=function(_0x1c8f30,_0xf40953){var _0x34d77b={'raw':!![],'where':{'id':_0x1c8f30[_0x9d01('0x49')]['id']}},_0x49634d={};_0x49634d[_0x9d01('0x36')]=_[_0x9d01('0x32')](db['OpenchannelQueue']['rawAttributes']);_0x49634d[_0x9d01('0x33')]=_['keys'](_0x1c8f30[_0x9d01('0x33')]);_0x49634d[_0x9d01('0x34')]=_[_0x9d01('0x35')](_0x49634d['model'],_0x49634d['query']);_0x34d77b[_0x9d01('0x38')]=_[_0x9d01('0x35')](_0x49634d['model'],qs['fields'](_0x1c8f30[_0x9d01('0x33')][_0x9d01('0x37')]));_0x34d77b[_0x9d01('0x38')]=_0x34d77b['attributes'][_0x9d01('0x39')]?_0x34d77b[_0x9d01('0x38')]:_0x49634d[_0x9d01('0x36')];if(_0x1c8f30[_0x9d01('0x33')][_0x9d01('0x43')]){_0x34d77b[_0x9d01('0x44')]=[{'all':!![]}];}_0x34d77b=_['merge']({},_0x34d77b,_0x1c8f30[_0x9d01('0x42')]);return db['OpenchannelQueue'][_0x9d01('0x4a')](_0x34d77b)[_0x9d01('0x24')](handleEntityNotFound(_0xf40953,null))['then'](respondWithResult(_0xf40953,null))[_0x9d01('0x47')](handleError(_0xf40953,null));};exports['create']=function(_0x2f23da,_0x3e4a55){return db['OpenchannelQueue'][_0x9d01('0x4b')](_0x2f23da[_0x9d01('0x4c')],{})[_0x9d01('0x24')](function(_0x3b8e68){var _0x536f28=_0x2f23da[_0x9d01('0x4d')]['get']({'plain':!![]});if(!_0x536f28)throw new Error(_0x9d01('0x4e'));if(_0x536f28[_0x9d01('0x4f')]===_0x9d01('0x4d')){var _0x55633b=_0x3b8e68[_0x9d01('0x26')]({'plain':!![]});var _0x8beb91=_0x9d01('0x27');return db[_0x9d01('0x50')][_0x9d01('0x4a')]({'where':{'name':_0x8beb91,'userProfileId':_0x536f28[_0x9d01('0x51')]},'raw':!![]})[_0x9d01('0x24')](function(_0x102ba6){if(_0x102ba6&&_0x102ba6[_0x9d01('0x52')]===0x0){return db['UserProfileResource'][_0x9d01('0x4b')]({'name':_0x55633b[_0x9d01('0x2b')],'resourceId':_0x55633b['id'],'type':_0x102ba6[_0x9d01('0x2b')],'sectionId':_0x102ba6['id']},{})['then'](function(){return _0x3b8e68;});}else{return _0x3b8e68;}})[_0x9d01('0x47')](function(_0x1e3211){logger[_0x9d01('0x29')](_0x9d01('0x53'),_0x1e3211);throw _0x1e3211;});}return _0x3b8e68;})[_0x9d01('0x24')](respondWithResult(_0x3e4a55,0xc9))['catch'](handleError(_0x3e4a55,null));};exports['update']=function(_0xb19f16,_0x1a59c9){if(_0xb19f16[_0x9d01('0x4c')]['id']){delete _0xb19f16['body']['id'];}return db[_0x9d01('0x2e')][_0x9d01('0x4a')]({'where':{'id':_0xb19f16[_0x9d01('0x49')]['id']}})[_0x9d01('0x24')](handleEntityNotFound(_0x1a59c9,null))['then'](saveUpdates(_0xb19f16[_0x9d01('0x4c')],null))['then'](respondWithResult(_0x1a59c9,null))[_0x9d01('0x47')](handleError(_0x1a59c9,null));};exports[_0x9d01('0x25')]=function(_0x4fe82a,_0x2550d5){return db[_0x9d01('0x2e')]['find']({'where':{'id':_0x4fe82a[_0x9d01('0x49')]['id']}})['then'](handleEntityNotFound(_0x2550d5,null))['then'](removeEntity(_0x2550d5,null))[_0x9d01('0x47')](handleError(_0x2550d5,null));};exports[_0x9d01('0x54')]=function(_0x58645e,_0x506a0f){return db[_0x9d01('0x2e')][_0x9d01('0x54')]()['then'](respondWithResult(_0x506a0f,null))[_0x9d01('0x47')](handleError(_0x506a0f,null));};exports[_0x9d01('0x55')]=function(_0x1fdb9f,_0x3647ea,_0x437dad){var _0x3d02a0={'raw':!![],'where':{}},_0x489dc8={},_0x253975;return db['OpenchannelQueue'][_0x9d01('0x56')]({'where':{'id':_0x1fdb9f[_0x9d01('0x49')]['id']}})[_0x9d01('0x24')](handleEntityNotFound(_0x3647ea,null))[_0x9d01('0x24')](function(_0x103f35){if(_0x103f35){_0x253975=_0x103f35[_0x9d01('0x26')]({'plain':!![]});_0x489dc8[_0x9d01('0x36')]=_[_0x9d01('0x32')](db[_0x9d01('0x57')]['rawAttributes']);_0x489dc8[_0x9d01('0x33')]=_['keys'](_0x1fdb9f[_0x9d01('0x33')]);_0x489dc8[_0x9d01('0x34')]=_[_0x9d01('0x35')](_0x489dc8[_0x9d01('0x36')],_0x489dc8['query']);_0x3d02a0[_0x9d01('0x38')]=_[_0x9d01('0x35')](_0x489dc8[_0x9d01('0x36')],qs[_0x9d01('0x37')](_0x1fdb9f[_0x9d01('0x33')][_0x9d01('0x37')]));_0x3d02a0[_0x9d01('0x38')]=_0x3d02a0[_0x9d01('0x38')][_0x9d01('0x39')]?_0x3d02a0[_0x9d01('0x38')]:_0x489dc8['model'];if(!_0x1fdb9f['query'][_0x9d01('0x3a')](_0x9d01('0x3b'))){_0x3d02a0[_0x9d01('0x1e')]=qs[_0x9d01('0x1e')](_0x1fdb9f[_0x9d01('0x33')][_0x9d01('0x1e')]);_0x3d02a0[_0x9d01('0x1b')]=qs[_0x9d01('0x1b')](_0x1fdb9f['query'][_0x9d01('0x1b')]);}_0x3d02a0['order']=qs[_0x9d01('0x58')](_0x1fdb9f[_0x9d01('0x33')][_0x9d01('0x58')]);_0x3d02a0[_0x9d01('0x3d')]=qs[_0x9d01('0x34')](_[_0x9d01('0x3e')](_0x1fdb9f['query'],_0x489dc8[_0x9d01('0x34')]));_0x3d02a0[_0x9d01('0x3d')][_0x9d01('0x59')]=_0x103f35['id'];if(_0x1fdb9f[_0x9d01('0x33')][_0x9d01('0x3f')]){_0x3d02a0[_0x9d01('0x3d')]=_['merge'](_0x3d02a0['where'],{'$or':_[_0x9d01('0x2d')](_0x3d02a0['attributes'],function(_0x3ec7e8){var _0x4a633b={};_0x4a633b[_0x3ec7e8]={'$like':'%'+_0x1fdb9f['query'][_0x9d01('0x3f')]+'%'};return _0x4a633b;})});}_0x3d02a0=_[_0x9d01('0x40')]({},_0x3d02a0,_0x1fdb9f[_0x9d01('0x42')]);return db[_0x9d01('0x57')][_0x9d01('0x45')](_0x3d02a0);}})[_0x9d01('0x24')](function(_0x47f1e4){if(_0x47f1e4){return db[_0x9d01('0x5a')][_0x9d01('0x5b')]({'where':{'id':_[_0x9d01('0x2d')](_0x47f1e4,_0x9d01('0x5c')),'role':_0x9d01('0x5d')},'attributes':['id',_0x9d01('0x2b'),'openchannelPause',_0x9d01('0x5e'),_0x9d01('0x5f')]});}})[_0x9d01('0x24')](function(_0x5e5d89){if(_0x5e5d89){return{'count':_0x5e5d89[_0x9d01('0x1d')],'rows':_[_0x9d01('0x2d')](_0x5e5d89[_0x9d01('0x46')],function(_0x39f377){return{'membername':_0x39f377[_0x9d01('0x2b')],'UserId':_0x39f377['id'],'queue_name':_0x253975['name'],'OpenchannelQueueId':_0x253975['id'],'interface':util['format'](_0x9d01('0x60'),'SIP',_0x39f377[_0x9d01('0x2b')]),'penalty':0x0,'paused':_0x39f377[_0x9d01('0x61')],'createdAt':_0x39f377[_0x9d01('0x5f')],'updatedAt':_0x39f377[_0x9d01('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9d01('0x24')](respondWithFilteredResult(_0x3647ea,_0x3d02a0))['catch'](handleError(_0x3647ea,null));};exports[_0x9d01('0x62')]=function(_0x450ed7,_0x378818,_0x38298a){var _0x4665b8={};var _0x14b681={};var _0x2a97ec;var _0x31bfea;return db[_0x9d01('0x2e')]['findOne']({'where':{'id':_0x450ed7['params']['id']}})[_0x9d01('0x24')](handleEntityNotFound(_0x378818,null))['then'](function(_0x3f4da9){if(_0x3f4da9){_0x2a97ec=_0x3f4da9;_0x14b681[_0x9d01('0x36')]=_['keys'](db[_0x9d01('0x63')]['rawAttributes']);_0x14b681[_0x9d01('0x33')]=_[_0x9d01('0x32')](_0x450ed7[_0x9d01('0x33')]);_0x14b681[_0x9d01('0x34')]=_[_0x9d01('0x35')](_0x14b681[_0x9d01('0x36')],_0x14b681[_0x9d01('0x33')]);_0x4665b8[_0x9d01('0x38')]=_[_0x9d01('0x35')](_0x14b681['model'],qs[_0x9d01('0x37')](_0x450ed7[_0x9d01('0x33')][_0x9d01('0x37')]));_0x4665b8[_0x9d01('0x38')]=_0x4665b8[_0x9d01('0x38')][_0x9d01('0x39')]?_0x4665b8[_0x9d01('0x38')]:_0x14b681[_0x9d01('0x36')];_0x4665b8[_0x9d01('0x3c')]=qs[_0x9d01('0x58')](_0x450ed7[_0x9d01('0x33')]['sort']);_0x4665b8[_0x9d01('0x3d')]=qs['filters'](_[_0x9d01('0x3e')](_0x450ed7['query'],_0x14b681[_0x9d01('0x34')]));if(_0x450ed7['query'][_0x9d01('0x3f')]){_0x4665b8[_0x9d01('0x3d')]=_[_0x9d01('0x40')](_0x4665b8['where'],{'$or':_[_0x9d01('0x2d')](_0x4665b8[_0x9d01('0x38')],function(_0x2daa6d){var _0x142688={};_0x142688[_0x2daa6d]={'$like':'%'+_0x450ed7['query'][_0x9d01('0x3f')]+'%'};return _0x142688;})});}_0x4665b8=_[_0x9d01('0x40')]({},_0x4665b8,_0x450ed7[_0x9d01('0x42')]);return _0x2a97ec[_0x9d01('0x62')](_0x4665b8);}})[_0x9d01('0x24')](function(_0xb47c05){if(_0xb47c05){_0x31bfea=_0xb47c05[_0x9d01('0x39')];if(!_0x450ed7[_0x9d01('0x33')][_0x9d01('0x3a')]('nolimit')){_0x4665b8['limit']=qs[_0x9d01('0x1e')](_0x450ed7[_0x9d01('0x33')][_0x9d01('0x1e')]);_0x4665b8[_0x9d01('0x1b')]=qs[_0x9d01('0x1b')](_0x450ed7[_0x9d01('0x33')][_0x9d01('0x1b')]);}return _0x2a97ec[_0x9d01('0x62')](_0x4665b8);}})[_0x9d01('0x24')](function(_0x593868){if(_0x593868){return _0x593868?{'count':_0x31bfea,'rows':_0x593868}:null;}})['then'](respondWithResult(_0x378818,null))['catch'](handleError(_0x378818,null));};exports[_0x9d01('0x64')]=function(_0x492816,_0x1d6902,_0x43c89b){var _0x2e259c=_0x492816[_0x9d01('0x4c')][_0x9d01('0x65')];return db['Team'][_0x9d01('0x45')]({'where':{'id':_0x2e259c},'attributes':['id'],'include':[{'model':db[_0x9d01('0x5a')],'as':_0x9d01('0x66'),'attributes':['id','name','online',_0x9d01('0x67'),_0x9d01('0x68')],'raw':!![]}]})['then'](function(_0xd909a8){if(_0xd909a8){var _0x1063e2=_[_0x9d01('0x69')](_0xd909a8,function(_0x20ecd9){var _0x27534e=_0x20ecd9[_0x9d01('0x26')]({'plain':!![]});return _0x27534e[_0x9d01('0x66')];});return db[_0x9d01('0x2e')]['find']({'where':{'id':_0x492816[_0x9d01('0x49')]['id']}})[_0x9d01('0x24')](function(_0x5e2321){return db[_0x9d01('0x6a')][_0x9d01('0x6b')](function(_0x274805){return _0x5e2321[_0x9d01('0x64')](_0x2e259c,{'transaction':_0x274805})[_0x9d01('0x24')](function(){return BPromise[_0x9d01('0x6c')](_0x1063e2,function(_0x1ac4cc){return db['UserOpenchannelQueue']['findOrCreate']({'where':{'UserId':_0x1ac4cc['id'],'OpenchannelQueueId':_0x492816[_0x9d01('0x49')]['id']},'transaction':_0x274805});});})['then'](function(){_0x1063e2[_0x9d01('0x6d')](function(_0x324bb2){socket['emit'](_0x9d01('0x6e'),{'UserId':_0x324bb2['id'],'OpenchannelQueueId':_0x5e2321['id']});});});});});}})[_0x9d01('0x24')](respondWithStatusCode(_0x1d6902,null))[_0x9d01('0x47')](handleError(_0x1d6902,null));};exports[_0x9d01('0x6f')]=function(_0x7a431e,_0x4b6107,_0x42d797){return db[_0x9d01('0x63')][_0x9d01('0x45')]({'where':{'id':_0x7a431e[_0x9d01('0x33')][_0x9d01('0x65')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x9d01('0x66'),'attributes':['id'],'raw':!![]}]})[_0x9d01('0x24')](handleEntityNotFound(_0x4b6107,null))[_0x9d01('0x24')](function(_0x1876be){var _0xe1c4c4=_[_0x9d01('0x2d')](_0x1876be,'id');var _0x271f5f=[];var _0x110ebd=[];var _0x36fd62=squel[_0x9d01('0x70')]();_0x36fd62['field'](_0x9d01('0x71'))['from'](_0x9d01('0x72'),'tq')['join'](_0x9d01('0x73'),'ut',_0x9d01('0x74'))[_0x9d01('0x3d')]('OpenchannelQueueId\x20=\x20?',_0x7a431e[_0x9d01('0x49')]['id']);for(var _0x32d921=0x0;_0x32d921<_0x1876be[_0x9d01('0x39')];_0x32d921+=0x1){let _0xa91a21=_0x1876be[_0x32d921];for(var _0x1ab8b6=0x0;_0x1ab8b6<_0xa91a21[_0x9d01('0x66')][_0x9d01('0x39')];_0x1ab8b6+=0x1){let _0xffa476=_0xa91a21[_0x9d01('0x66')][_0x1ab8b6];var _0x5c82fc=_0x36fd62[_0x9d01('0x75')]();_0x5c82fc['where'](_0x9d01('0x76'),_0xffa476['id']);_0x110ebd[_0x9d01('0x77')](db[_0x9d01('0x6a')]['query'](_0x5c82fc['toString'](),{'type':db[_0x9d01('0x6a')]['QueryTypes'][_0x9d01('0x78')]})[_0x9d01('0x24')](function(_0x448e75){if(_0x448e75[_0x9d01('0x39')]===0x1){return _0xffa476['id'];}else{var _0x523c85=_[_0x9d01('0x79')](_[_0x9d01('0x2d')](_0x448e75,_0x9d01('0x7a')),function(_0x26426c){return _['includes'](_0xe1c4c4,_0x26426c);});if(_0x523c85){return _0xffa476['id'];}}}));}}return BPromise[_0x9d01('0x7b')](_0x110ebd)['then'](function(_0x18fa00){_0x271f5f=_(_0x271f5f)[_0x9d01('0x7c')](_0x18fa00)['compact']()[_0x9d01('0x7d')]();return db[_0x9d01('0x2e')]['find']({'where':{'id':_0x7a431e[_0x9d01('0x49')]['id']}})['then'](function(_0x2dd3eb){return db[_0x9d01('0x6a')][_0x9d01('0x6b')](function(_0x1f39d3){return _0x2dd3eb[_0x9d01('0x6f')](_0x7a431e['query'][_0x9d01('0x65')],{'transaction':_0x1f39d3})['then'](function(){if(!_[_0x9d01('0x7e')](_0x271f5f)){return _0x2dd3eb[_0x9d01('0x7f')](_0x271f5f,{'transaction':_0x1f39d3});}})[_0x9d01('0x24')](function(){_0x271f5f[_0x9d01('0x6d')](function(_0x6473be){socket[_0x9d01('0x80')](_0x9d01('0x81'),{'UserId':_0x6473be,'OpenchannelQueueId':_0x2dd3eb['id']});});});});});});})['then'](respondWithStatusCode(_0x4b6107,null))['catch'](handleError(_0x4b6107,null));};exports[_0x9d01('0x82')]=function(_0x54057b,_0x183d5e,_0x5a58d1){return db['OpenchannelQueue']['find']({'where':{'id':_0x54057b[_0x9d01('0x49')]['id']}})['then'](handleEntityNotFound(_0x183d5e,null))[_0x9d01('0x24')](function(_0x483491){if(_0x483491){return _0x483491[_0x9d01('0x82')](_0x54057b[_0x9d01('0x4c')][_0x9d01('0x65')],_[_0x9d01('0x83')](_0x54057b[_0x9d01('0x4c')],[_0x9d01('0x65'),'id'])||{})[_0x9d01('0x84')](function(_0x400ce7){for(var _0x374f22=0x0;_0x374f22<_0x54057b['body'][_0x9d01('0x65')]['length'];_0x374f22+=0x1){socket[_0x9d01('0x80')](_0x9d01('0x6e'),{'UserId':Number(_0x54057b[_0x9d01('0x4c')][_0x9d01('0x65')][_0x374f22]),'OpenchannelQueueId':Number(_0x54057b[_0x9d01('0x49')]['id'])});}return _0x400ce7;});}})['then'](respondWithResult(_0x183d5e,null))[_0x9d01('0x47')](handleError(_0x183d5e,null));};exports[_0x9d01('0x7f')]=function(_0x43a780,_0x32438b,_0x7d239c){return db['OpenchannelQueue'][_0x9d01('0x4a')]({'where':{'id':_0x43a780[_0x9d01('0x49')]['id']}})['then'](handleEntityNotFound(_0x32438b,null))[_0x9d01('0x24')](function(_0x5e0c93){if(_0x5e0c93){return _0x5e0c93['removeAgents'](_0x43a780[_0x9d01('0x33')][_0x9d01('0x65')])['then'](function(){if(_[_0x9d01('0x85')](_0x43a780[_0x9d01('0x33')][_0x9d01('0x65')])){for(var _0x3c78ca=0x0;_0x3c78ca<_0x43a780['query'][_0x9d01('0x65')][_0x9d01('0x39')];_0x3c78ca+=0x1){socket[_0x9d01('0x80')](_0x9d01('0x81'),{'UserId':Number(_0x43a780[_0x9d01('0x33')][_0x9d01('0x65')][_0x3c78ca]),'OpenchannelQueueId':Number(_0x43a780['params']['id'])});}}else{socket[_0x9d01('0x80')]('userOpenchannelQueue:remove',{'UserId':Number(_0x43a780[_0x9d01('0x33')]['ids']),'OpenchannelQueueId':Number(_0x43a780['params']['id'])});}});}})[_0x9d01('0x24')](respondWithStatusCode(_0x32438b,null))[_0x9d01('0x47')](handleError(_0x32438b,null));};exports[_0x9d01('0x86')]=function(_0x3259c8,_0x5a088b,_0xe12b70){var _0x4723f1={};var _0x3f4e22={};var _0x3707e1;var _0x428c17;return db['OpenchannelQueue'][_0x9d01('0x56')]({'where':{'id':_0x3259c8[_0x9d01('0x49')]['id']}})['then'](handleEntityNotFound(_0x5a088b,null))[_0x9d01('0x24')](function(_0x2f78fb){if(_0x2f78fb){_0x3707e1=_0x2f78fb;_0x3f4e22[_0x9d01('0x36')]=_[_0x9d01('0x32')](db['User'][_0x9d01('0x87')]);_0x3f4e22[_0x9d01('0x33')]=_[_0x9d01('0x32')](_0x3259c8[_0x9d01('0x33')]);_0x3f4e22[_0x9d01('0x34')]=_['intersection'](_0x3f4e22[_0x9d01('0x36')],_0x3f4e22[_0x9d01('0x33')]);_0x4723f1[_0x9d01('0x38')]=_[_0x9d01('0x35')](_0x3f4e22[_0x9d01('0x36')],qs['fields'](_0x3259c8['query']['fields']));_0x4723f1['attributes']=_0x4723f1[_0x9d01('0x38')]['length']?_0x4723f1['attributes']:_0x3f4e22['model'];_0x4723f1[_0x9d01('0x3c')]=qs['sort'](_0x3259c8[_0x9d01('0x33')]['sort']);_0x4723f1[_0x9d01('0x3d')]=qs[_0x9d01('0x34')](_[_0x9d01('0x3e')](_0x3259c8[_0x9d01('0x33')],_0x3f4e22[_0x9d01('0x34')]));if(_0x3259c8['query'][_0x9d01('0x3f')]){_0x4723f1[_0x9d01('0x3d')]=_['merge'](_0x4723f1['where'],{'$or':_['map'](_0x4723f1[_0x9d01('0x38')],function(_0x2c7ba1){var _0x35c177={};_0x35c177[_0x2c7ba1]={'$like':'%'+_0x3259c8['query'][_0x9d01('0x3f')]+'%'};return _0x35c177;})});}_0x4723f1=_[_0x9d01('0x40')]({},_0x4723f1,_0x3259c8[_0x9d01('0x42')]);return _0x3707e1[_0x9d01('0x86')](_0x4723f1);}})[_0x9d01('0x24')](function(_0x1a6574){if(_0x1a6574){_0x428c17=_0x1a6574[_0x9d01('0x39')];if(!_0x3259c8[_0x9d01('0x33')][_0x9d01('0x3a')](_0x9d01('0x3b'))){_0x4723f1['limit']=qs['limit'](_0x3259c8[_0x9d01('0x33')]['limit']);_0x4723f1[_0x9d01('0x1b')]=qs[_0x9d01('0x1b')](_0x3259c8[_0x9d01('0x33')][_0x9d01('0x1b')]);}return _0x3707e1[_0x9d01('0x86')](_0x4723f1);}})[_0x9d01('0x24')](function(_0xa34369){if(_0xa34369){return _0xa34369?{'count':_0x428c17,'rows':_0xa34369}:null;}})[_0x9d01('0x24')](respondWithResult(_0x5a088b,null))[_0x9d01('0x47')](handleError(_0x5a088b,null));};
\ No newline at end of file
+var _0x1d5f=['fields','nolimit','order','sort','where','filter','merge','type','options','OpenchannelQueue','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','hasOwnProperty','pick','OpenchannelQueueId','UserOpenchannelQueue','User','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','getTeams','findOne','Team','ids','online','voicePause','sequelize','transaction','addTeams','forEach','emit','userOpenchannelQueue:save','Agents','select','field','tq.TeamId','from','team_has_openchannel_queues','ut.TeamId\x20=\x20tq.TeamId','clone','push','toString','QueryTypes','SELECT','every','includes','all','union','compact','value','removeTeams','userOpenchannelQueue:remove','addAgents','omit','spread','removeAgents','getAgents','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./openchannelQueue.socket','register','sendStatus','status','end','undefined','limit','offset','count','apply','update','then','OpenchannelQueues','UserProfileResource','destroy','stack','name','send','index','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes'];(function(_0x32b993,_0x1c5989){var _0x482780=function(_0x404179){while(--_0x404179){_0x32b993['push'](_0x32b993['shift']());}};_0x482780(++_0x1c5989);}(_0x1d5f,0x158));var _0xf1d5=function(_0x2b55b5,_0x78505e){_0x2b55b5=_0x2b55b5-0x0;var _0x103d28=_0x1d5f[_0x2b55b5];return _0x103d28;};'use strict';var emlformat=require(_0xf1d5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf1d5('0x1'));var rp=require(_0xf1d5('0x2'));var moment=require('moment');var BPromise=require(_0xf1d5('0x3'));var Mustache=require(_0xf1d5('0x4'));var util=require(_0xf1d5('0x5'));var path=require(_0xf1d5('0x6'));var sox=require(_0xf1d5('0x7'));var csv=require('to-csv');var ejs=require(_0xf1d5('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(_0xf1d5('0x9'));var deskjs=require(_0xf1d5('0xa'));var toCsv=require(_0xf1d5('0xb'));var querystring=require(_0xf1d5('0xc'));var Papa=require('papaparse');var Redis=require(_0xf1d5('0xd'));var authService=require(_0xf1d5('0xe'));var qs=require(_0xf1d5('0xf'));var as=require(_0xf1d5('0x10'));var hardwareService=require(_0xf1d5('0x11'));var logger=require(_0xf1d5('0x12'))(_0xf1d5('0x13'));var utils=require(_0xf1d5('0x14'));var config=require(_0xf1d5('0x15'));var licenseUtil=require(_0xf1d5('0x16'));var db=require('../../mysqldb')['db'];config[_0xf1d5('0x17')]=_[_0xf1d5('0x18')](config[_0xf1d5('0x17')],{'host':_0xf1d5('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf1d5('0x17')]));require(_0xf1d5('0x1a'))[_0xf1d5('0x1b')](socket);function respondWithStatusCode(_0x4a1a62,_0x4a09c7){_0x4a09c7=_0x4a09c7||0xcc;return function(_0x191192){if(_0x191192){return _0x4a1a62[_0xf1d5('0x1c')](_0x4a09c7);}return _0x4a1a62[_0xf1d5('0x1d')](_0x4a09c7)[_0xf1d5('0x1e')]();};}function respondWithResult(_0x2d8a95,_0xdb4e01){_0xdb4e01=_0xdb4e01||0xc8;return function(_0x49fe88){if(_0x49fe88){return _0x2d8a95[_0xf1d5('0x1d')](_0xdb4e01)['json'](_0x49fe88);}};}function respondWithFilteredResult(_0x310bca,_0x122c78){return function(_0x5e7889){if(_0x5e7889){var _0x2a0956=typeof _0x122c78['offset']===_0xf1d5('0x1f')&&typeof _0x122c78[_0xf1d5('0x20')]===_0xf1d5('0x1f');var _0x392101=_0x5e7889['count'];var _0x1bc99f=_0x2a0956?0x0:_0x122c78[_0xf1d5('0x21')];var _0x4908e2=_0x2a0956?_0x5e7889[_0xf1d5('0x22')]:_0x122c78[_0xf1d5('0x21')]+_0x122c78[_0xf1d5('0x20')];var _0x2c5ae3;if(_0x4908e2>=_0x392101){_0x4908e2=_0x392101;_0x2c5ae3=0xc8;}else{_0x2c5ae3=0xce;}_0x310bca[_0xf1d5('0x1d')](_0x2c5ae3);return _0x310bca['set']('Content-Range',_0x1bc99f+'-'+_0x4908e2+'/'+_0x392101)['json'](_0x5e7889);}return null;};}function patchUpdates(_0x5318ea){return function(_0xdc8ebb){try{jsonpatch[_0xf1d5('0x23')](_0xdc8ebb,_0x5318ea,!![]);}catch(_0x5ec246){return BPromise['reject'](_0x5ec246);}return _0xdc8ebb['save']();};}function saveUpdates(_0x2dbbc9,_0x4dec8b){return function(_0x4bf383){if(_0x4bf383){return _0x4bf383[_0xf1d5('0x24')](_0x2dbbc9)[_0xf1d5('0x25')](function(_0x45d2e2){return _0x45d2e2;});}return null;};}function removeEntity(_0x51d34c,_0x1eed1d){return function(_0x148506){if(_0x148506){return _0x148506['destroy']()[_0xf1d5('0x25')](function(){var _0x70b0dd=_0x148506['get']({'plain':!![]});var _0x3fe877=_0xf1d5('0x26');return db[_0xf1d5('0x27')][_0xf1d5('0x28')]({'where':{'type':_0x3fe877,'resourceId':_0x70b0dd['id']}})['then'](function(){return _0x148506;});})['then'](function(){_0x51d34c['status'](0xcc)[_0xf1d5('0x1e')]();});}};}function handleEntityNotFound(_0x45ef81,_0x367373){return function(_0x35e92b){if(!_0x35e92b){_0x45ef81[_0xf1d5('0x1c')](0x194);}return _0x35e92b;};}function handleError(_0x46a63f,_0x24f6a1){_0x24f6a1=_0x24f6a1||0x1f4;return function(_0x3c085b){logger['error'](_0x3c085b[_0xf1d5('0x29')]);if(_0x3c085b[_0xf1d5('0x2a')]){delete _0x3c085b[_0xf1d5('0x2a')];}_0x46a63f[_0xf1d5('0x1d')](_0x24f6a1)[_0xf1d5('0x2b')](_0x3c085b);};}exports[_0xf1d5('0x2c')]=function(_0x2240c4,_0x1a6058){var _0x2c2ad6={},_0x963755={},_0xe9bd99={'count':0x0,'rows':[]};var _0x2b235d=_['map'](db['OpenchannelQueue'][_0xf1d5('0x2d')],function(_0x860305){return{'name':_0x860305[_0xf1d5('0x2e')],'type':_0x860305['type'][_0xf1d5('0x2f')]};});_0x963755[_0xf1d5('0x30')]=_[_0xf1d5('0x31')](_0x2b235d,'name');_0x963755[_0xf1d5('0x32')]=_[_0xf1d5('0x33')](_0x2240c4[_0xf1d5('0x32')]);_0x963755[_0xf1d5('0x34')]=_[_0xf1d5('0x35')](_0x963755[_0xf1d5('0x30')],_0x963755[_0xf1d5('0x32')]);_0x2c2ad6[_0xf1d5('0x36')]=_[_0xf1d5('0x35')](_0x963755[_0xf1d5('0x30')],qs[_0xf1d5('0x37')](_0x2240c4[_0xf1d5('0x32')][_0xf1d5('0x37')]));_0x2c2ad6[_0xf1d5('0x36')]=_0x2c2ad6[_0xf1d5('0x36')]['length']?_0x2c2ad6[_0xf1d5('0x36')]:_0x963755[_0xf1d5('0x30')];if(!_0x2240c4[_0xf1d5('0x32')]['hasOwnProperty'](_0xf1d5('0x38'))){_0x2c2ad6[_0xf1d5('0x20')]=qs[_0xf1d5('0x20')](_0x2240c4[_0xf1d5('0x32')]['limit']);_0x2c2ad6[_0xf1d5('0x21')]=qs[_0xf1d5('0x21')](_0x2240c4['query']['offset']);}_0x2c2ad6[_0xf1d5('0x39')]=qs['sort'](_0x2240c4[_0xf1d5('0x32')][_0xf1d5('0x3a')]);_0x2c2ad6[_0xf1d5('0x3b')]=qs[_0xf1d5('0x34')](_['pick'](_0x2240c4[_0xf1d5('0x32')],_0x963755[_0xf1d5('0x34')]),_0x2b235d);if(_0x2240c4['query'][_0xf1d5('0x3c')]){_0x2c2ad6[_0xf1d5('0x3b')]=_[_0xf1d5('0x3d')](_0x2c2ad6[_0xf1d5('0x3b')],{'$or':_['map'](_0x2b235d,function(_0x366fcf){if(_0x366fcf[_0xf1d5('0x3e')]!=='VIRTUAL'){var _0x970f1f={};_0x970f1f[_0x366fcf[_0xf1d5('0x2a')]]={'$like':'%'+_0x2240c4[_0xf1d5('0x32')][_0xf1d5('0x3c')]+'%'};return _0x970f1f;}})});}_0x2c2ad6=_[_0xf1d5('0x3d')]({},_0x2c2ad6,_0x2240c4[_0xf1d5('0x3f')]);var _0x2f3691={'where':_0x2c2ad6['where']};return db[_0xf1d5('0x40')][_0xf1d5('0x22')](_0x2f3691)[_0xf1d5('0x25')](function(_0x171a13){_0xe9bd99['count']=_0x171a13;if(_0x2240c4['query'][_0xf1d5('0x41')]){_0x2c2ad6[_0xf1d5('0x42')]=[{'all':!![]}];}return db[_0xf1d5('0x40')][_0xf1d5('0x43')](_0x2c2ad6);})['then'](function(_0x204609){_0xe9bd99[_0xf1d5('0x44')]=_0x204609;return _0xe9bd99;})[_0xf1d5('0x25')](respondWithFilteredResult(_0x1a6058,_0x2c2ad6))[_0xf1d5('0x45')](handleError(_0x1a6058,null));};exports[_0xf1d5('0x46')]=function(_0x4b2c85,_0x370ff2){var _0x55ec87={'raw':!![],'where':{'id':_0x4b2c85[_0xf1d5('0x47')]['id']}},_0x18648d={};_0x18648d[_0xf1d5('0x30')]=_[_0xf1d5('0x33')](db['OpenchannelQueue'][_0xf1d5('0x2d')]);_0x18648d['query']=_[_0xf1d5('0x33')](_0x4b2c85[_0xf1d5('0x32')]);_0x18648d['filters']=_[_0xf1d5('0x35')](_0x18648d[_0xf1d5('0x30')],_0x18648d[_0xf1d5('0x32')]);_0x55ec87[_0xf1d5('0x36')]=_[_0xf1d5('0x35')](_0x18648d[_0xf1d5('0x30')],qs[_0xf1d5('0x37')](_0x4b2c85[_0xf1d5('0x32')][_0xf1d5('0x37')]));_0x55ec87[_0xf1d5('0x36')]=_0x55ec87[_0xf1d5('0x36')][_0xf1d5('0x48')]?_0x55ec87[_0xf1d5('0x36')]:_0x18648d[_0xf1d5('0x30')];if(_0x4b2c85[_0xf1d5('0x32')][_0xf1d5('0x41')]){_0x55ec87[_0xf1d5('0x42')]=[{'all':!![]}];}_0x55ec87=_[_0xf1d5('0x3d')]({},_0x55ec87,_0x4b2c85[_0xf1d5('0x3f')]);return db[_0xf1d5('0x40')][_0xf1d5('0x49')](_0x55ec87)[_0xf1d5('0x25')](handleEntityNotFound(_0x370ff2,null))[_0xf1d5('0x25')](respondWithResult(_0x370ff2,null))[_0xf1d5('0x45')](handleError(_0x370ff2,null));};exports[_0xf1d5('0x4a')]=function(_0x1fbe16,_0x78751e){return db['OpenchannelQueue'][_0xf1d5('0x4a')](_0x1fbe16[_0xf1d5('0x4b')],{})[_0xf1d5('0x25')](function(_0x40d563){var _0x9b1768=_0x1fbe16['user'][_0xf1d5('0x4c')]({'plain':!![]});if(!_0x9b1768)throw new Error(_0xf1d5('0x4d'));if(_0x9b1768[_0xf1d5('0x4e')]==='user'){var _0x1e08b3=_0x40d563[_0xf1d5('0x4c')]({'plain':!![]});var _0x202f40=_0xf1d5('0x26');return db[_0xf1d5('0x4f')][_0xf1d5('0x49')]({'where':{'name':_0x202f40,'userProfileId':_0x9b1768[_0xf1d5('0x50')]},'raw':!![]})[_0xf1d5('0x25')](function(_0x31e027){if(_0x31e027&&_0x31e027[_0xf1d5('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x1e08b3[_0xf1d5('0x2a')],'resourceId':_0x1e08b3['id'],'type':_0x31e027[_0xf1d5('0x2a')],'sectionId':_0x31e027['id']},{})[_0xf1d5('0x25')](function(){return _0x40d563;});}else{return _0x40d563;}})[_0xf1d5('0x45')](function(_0x1aa5e4){logger[_0xf1d5('0x52')](_0xf1d5('0x53'),_0x1aa5e4);throw _0x1aa5e4;});}return _0x40d563;})[_0xf1d5('0x25')](respondWithResult(_0x78751e,0xc9))['catch'](handleError(_0x78751e,null));};exports[_0xf1d5('0x24')]=function(_0x3ce264,_0x316bca){if(_0x3ce264['body']['id']){delete _0x3ce264[_0xf1d5('0x4b')]['id'];}return db[_0xf1d5('0x40')][_0xf1d5('0x49')]({'where':{'id':_0x3ce264[_0xf1d5('0x47')]['id']}})['then'](handleEntityNotFound(_0x316bca,null))['then'](saveUpdates(_0x3ce264['body'],null))['then'](respondWithResult(_0x316bca,null))[_0xf1d5('0x45')](handleError(_0x316bca,null));};exports[_0xf1d5('0x28')]=function(_0xdfbeda,_0x345e76){return db['OpenchannelQueue'][_0xf1d5('0x49')]({'where':{'id':_0xdfbeda[_0xf1d5('0x47')]['id']}})[_0xf1d5('0x25')](handleEntityNotFound(_0x345e76,null))[_0xf1d5('0x25')](removeEntity(_0x345e76,null))[_0xf1d5('0x45')](handleError(_0x345e76,null));};exports[_0xf1d5('0x54')]=function(_0x51e7d9,_0x1e8d9d){return db['OpenchannelQueue'][_0xf1d5('0x54')]()[_0xf1d5('0x25')](respondWithResult(_0x1e8d9d,null))[_0xf1d5('0x45')](handleError(_0x1e8d9d,null));};exports['getMembers']=function(_0x3ca7fd,_0x54c070,_0x2eed97){var _0x5ca095={'raw':!![],'where':{}},_0x2b2850={},_0x418cce;return db[_0xf1d5('0x40')]['findOne']({'where':{'id':_0x3ca7fd[_0xf1d5('0x47')]['id']}})[_0xf1d5('0x25')](handleEntityNotFound(_0x54c070,null))[_0xf1d5('0x25')](function(_0x5432eb){if(_0x5432eb){_0x418cce=_0x5432eb['get']({'plain':!![]});_0x2b2850[_0xf1d5('0x30')]=_[_0xf1d5('0x33')](db['UserOpenchannelQueue'][_0xf1d5('0x2d')]);_0x2b2850[_0xf1d5('0x32')]=_[_0xf1d5('0x33')](_0x3ca7fd['query']);_0x2b2850[_0xf1d5('0x34')]=_[_0xf1d5('0x35')](_0x2b2850[_0xf1d5('0x30')],_0x2b2850[_0xf1d5('0x32')]);_0x5ca095[_0xf1d5('0x36')]=_['intersection'](_0x2b2850[_0xf1d5('0x30')],qs[_0xf1d5('0x37')](_0x3ca7fd['query'][_0xf1d5('0x37')]));_0x5ca095[_0xf1d5('0x36')]=_0x5ca095['attributes'][_0xf1d5('0x48')]?_0x5ca095[_0xf1d5('0x36')]:_0x2b2850['model'];if(!_0x3ca7fd[_0xf1d5('0x32')][_0xf1d5('0x55')](_0xf1d5('0x38'))){_0x5ca095[_0xf1d5('0x20')]=qs['limit'](_0x3ca7fd['query'][_0xf1d5('0x20')]);_0x5ca095[_0xf1d5('0x21')]=qs[_0xf1d5('0x21')](_0x3ca7fd['query'][_0xf1d5('0x21')]);}_0x5ca095['order']=qs['sort'](_0x3ca7fd['query'][_0xf1d5('0x3a')]);_0x5ca095[_0xf1d5('0x3b')]=qs[_0xf1d5('0x34')](_[_0xf1d5('0x56')](_0x3ca7fd[_0xf1d5('0x32')],_0x2b2850[_0xf1d5('0x34')]));_0x5ca095[_0xf1d5('0x3b')][_0xf1d5('0x57')]=_0x5432eb['id'];if(_0x3ca7fd['query']['filter']){_0x5ca095[_0xf1d5('0x3b')]=_[_0xf1d5('0x3d')](_0x5ca095['where'],{'$or':_[_0xf1d5('0x31')](_0x5ca095[_0xf1d5('0x36')],function(_0x5ba075){var _0x7822f9={};_0x7822f9[_0x5ba075]={'$like':'%'+_0x3ca7fd[_0xf1d5('0x32')][_0xf1d5('0x3c')]+'%'};return _0x7822f9;})});}_0x5ca095=_[_0xf1d5('0x3d')]({},_0x5ca095,_0x3ca7fd[_0xf1d5('0x3f')]);return db[_0xf1d5('0x58')][_0xf1d5('0x43')](_0x5ca095);}})['then'](function(_0x1668fa){if(_0x1668fa){return db[_0xf1d5('0x59')]['findAndCountAll']({'where':{'id':_[_0xf1d5('0x31')](_0x1668fa,'UserId'),'role':_0xf1d5('0x5a')},'attributes':['id',_0xf1d5('0x2a'),_0xf1d5('0x5b'),_0xf1d5('0x5c'),_0xf1d5('0x5d')]});}})[_0xf1d5('0x25')](function(_0xb316b7){if(_0xb316b7){return{'count':_0xb316b7[_0xf1d5('0x22')],'rows':_[_0xf1d5('0x31')](_0xb316b7[_0xf1d5('0x44')],function(_0x4f6f49){return{'membername':_0x4f6f49['name'],'UserId':_0x4f6f49['id'],'queue_name':_0x418cce['name'],'OpenchannelQueueId':_0x418cce['id'],'interface':util[_0xf1d5('0x5e')](_0xf1d5('0x5f'),'SIP',_0x4f6f49[_0xf1d5('0x2a')]),'penalty':0x0,'paused':_0x4f6f49[_0xf1d5('0x5b')],'createdAt':_0x4f6f49[_0xf1d5('0x5d')],'updatedAt':_0x4f6f49[_0xf1d5('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x54c070,_0x5ca095))[_0xf1d5('0x45')](handleError(_0x54c070,null));};exports[_0xf1d5('0x60')]=function(_0x2d81dd,_0x2834d1,_0x13f60a){var _0x47dca0={};var _0x5bc8a9={};var _0x4c5e44;var _0x29dec2;return db['OpenchannelQueue'][_0xf1d5('0x61')]({'where':{'id':_0x2d81dd[_0xf1d5('0x47')]['id']}})[_0xf1d5('0x25')](handleEntityNotFound(_0x2834d1,null))[_0xf1d5('0x25')](function(_0x3621bc){if(_0x3621bc){_0x4c5e44=_0x3621bc;_0x5bc8a9['model']=_[_0xf1d5('0x33')](db[_0xf1d5('0x62')]['rawAttributes']);_0x5bc8a9[_0xf1d5('0x32')]=_[_0xf1d5('0x33')](_0x2d81dd[_0xf1d5('0x32')]);_0x5bc8a9[_0xf1d5('0x34')]=_['intersection'](_0x5bc8a9[_0xf1d5('0x30')],_0x5bc8a9[_0xf1d5('0x32')]);_0x47dca0[_0xf1d5('0x36')]=_[_0xf1d5('0x35')](_0x5bc8a9[_0xf1d5('0x30')],qs['fields'](_0x2d81dd[_0xf1d5('0x32')][_0xf1d5('0x37')]));_0x47dca0[_0xf1d5('0x36')]=_0x47dca0['attributes'][_0xf1d5('0x48')]?_0x47dca0['attributes']:_0x5bc8a9[_0xf1d5('0x30')];_0x47dca0['order']=qs[_0xf1d5('0x3a')](_0x2d81dd[_0xf1d5('0x32')][_0xf1d5('0x3a')]);_0x47dca0['where']=qs['filters'](_['pick'](_0x2d81dd[_0xf1d5('0x32')],_0x5bc8a9['filters']));if(_0x2d81dd[_0xf1d5('0x32')][_0xf1d5('0x3c')]){_0x47dca0['where']=_[_0xf1d5('0x3d')](_0x47dca0[_0xf1d5('0x3b')],{'$or':_['map'](_0x47dca0['attributes'],function(_0x1156f6){var _0x4d9754={};_0x4d9754[_0x1156f6]={'$like':'%'+_0x2d81dd['query'][_0xf1d5('0x3c')]+'%'};return _0x4d9754;})});}_0x47dca0=_[_0xf1d5('0x3d')]({},_0x47dca0,_0x2d81dd['options']);return _0x4c5e44[_0xf1d5('0x60')](_0x47dca0);}})[_0xf1d5('0x25')](function(_0x2c19d7){if(_0x2c19d7){_0x29dec2=_0x2c19d7['length'];if(!_0x2d81dd[_0xf1d5('0x32')][_0xf1d5('0x55')](_0xf1d5('0x38'))){_0x47dca0['limit']=qs[_0xf1d5('0x20')](_0x2d81dd['query'][_0xf1d5('0x20')]);_0x47dca0[_0xf1d5('0x21')]=qs[_0xf1d5('0x21')](_0x2d81dd[_0xf1d5('0x32')][_0xf1d5('0x21')]);}return _0x4c5e44[_0xf1d5('0x60')](_0x47dca0);}})[_0xf1d5('0x25')](function(_0x1f61d3){if(_0x1f61d3){return _0x1f61d3?{'count':_0x29dec2,'rows':_0x1f61d3}:null;}})[_0xf1d5('0x25')](respondWithResult(_0x2834d1,null))[_0xf1d5('0x45')](handleError(_0x2834d1,null));};exports['addTeams']=function(_0xf92677,_0x1ad4c6,_0x333c19){var _0x3caae2=_0xf92677[_0xf1d5('0x4b')][_0xf1d5('0x63')];return db[_0xf1d5('0x62')][_0xf1d5('0x43')]({'where':{'id':_0x3caae2},'attributes':['id'],'include':[{'model':db[_0xf1d5('0x59')],'as':'Agents','attributes':['id',_0xf1d5('0x2a'),_0xf1d5('0x64'),_0xf1d5('0x65'),'interface'],'raw':!![]}]})[_0xf1d5('0x25')](function(_0x523687){if(_0x523687){var _0x3c62c5=_['flatMap'](_0x523687,function(_0x281142){var _0x4aac2d=_0x281142['get']({'plain':!![]});return _0x4aac2d['Agents'];});return db['OpenchannelQueue'][_0xf1d5('0x49')]({'where':{'id':_0xf92677[_0xf1d5('0x47')]['id']}})['then'](function(_0x1bce74){return db[_0xf1d5('0x66')][_0xf1d5('0x67')](function(_0x17ac73){return _0x1bce74[_0xf1d5('0x68')](_0x3caae2,{'transaction':_0x17ac73})['then'](function(){return BPromise['each'](_0x3c62c5,function(_0x5d8951){return db[_0xf1d5('0x58')]['findOrCreate']({'where':{'UserId':_0x5d8951['id'],'OpenchannelQueueId':_0xf92677['params']['id']},'transaction':_0x17ac73});});})[_0xf1d5('0x25')](function(){_0x3c62c5[_0xf1d5('0x69')](function(_0x425970){socket[_0xf1d5('0x6a')](_0xf1d5('0x6b'),{'UserId':_0x425970['id'],'OpenchannelQueueId':_0x1bce74['id']});});});});});}})[_0xf1d5('0x25')](respondWithStatusCode(_0x1ad4c6,null))[_0xf1d5('0x45')](handleError(_0x1ad4c6,null));};exports['removeTeams']=function(_0x4fc8ca,_0x5bdc82,_0x47b4cb){return db[_0xf1d5('0x62')][_0xf1d5('0x43')]({'where':{'id':_0x4fc8ca['query'][_0xf1d5('0x63')]},'attributes':['id'],'include':[{'model':db[_0xf1d5('0x59')],'as':_0xf1d5('0x6c'),'attributes':['id'],'raw':!![]}]})[_0xf1d5('0x25')](handleEntityNotFound(_0x5bdc82,null))[_0xf1d5('0x25')](function(_0x18f7d9){var _0x2cc54d=_['map'](_0x18f7d9,'id');var _0x27fe2c=[];var _0x265fa1=[];var _0x49d910=squel[_0xf1d5('0x6d')]();_0x49d910[_0xf1d5('0x6e')](_0xf1d5('0x6f'))[_0xf1d5('0x70')](_0xf1d5('0x71'),'tq')['join']('user_has_teams','ut',_0xf1d5('0x72'))['where']('OpenchannelQueueId\x20=\x20?',_0x4fc8ca[_0xf1d5('0x47')]['id']);for(var _0x170259=0x0;_0x170259<_0x18f7d9[_0xf1d5('0x48')];_0x170259+=0x1){let _0x8b7b10=_0x18f7d9[_0x170259];for(var _0x4012a0=0x0;_0x4012a0<_0x8b7b10['Agents'][_0xf1d5('0x48')];_0x4012a0+=0x1){let _0x275183=_0x8b7b10['Agents'][_0x4012a0];var _0x5a448e=_0x49d910[_0xf1d5('0x73')]();_0x5a448e['where']('ut.UserId\x20=\x20?',_0x275183['id']);_0x265fa1[_0xf1d5('0x74')](db[_0xf1d5('0x66')][_0xf1d5('0x32')](_0x5a448e[_0xf1d5('0x75')](),{'type':db[_0xf1d5('0x66')][_0xf1d5('0x76')][_0xf1d5('0x77')]})[_0xf1d5('0x25')](function(_0x2b1410){if(_0x2b1410[_0xf1d5('0x48')]===0x1){return _0x275183['id'];}else{var _0x2fa5b2=_[_0xf1d5('0x78')](_[_0xf1d5('0x31')](_0x2b1410,'TeamId'),function(_0x53e3cb){return _[_0xf1d5('0x79')](_0x2cc54d,_0x53e3cb);});if(_0x2fa5b2){return _0x275183['id'];}}}));}}return BPromise[_0xf1d5('0x7a')](_0x265fa1)[_0xf1d5('0x25')](function(_0x506a19){_0x27fe2c=_(_0x27fe2c)[_0xf1d5('0x7b')](_0x506a19)[_0xf1d5('0x7c')]()[_0xf1d5('0x7d')]();return db['OpenchannelQueue'][_0xf1d5('0x49')]({'where':{'id':_0x4fc8ca[_0xf1d5('0x47')]['id']}})[_0xf1d5('0x25')](function(_0x421e14){return db[_0xf1d5('0x66')][_0xf1d5('0x67')](function(_0x89f17){return _0x421e14[_0xf1d5('0x7e')](_0x4fc8ca[_0xf1d5('0x32')]['ids'],{'transaction':_0x89f17})['then'](function(){if(!_['isEmpty'](_0x27fe2c)){return _0x421e14['removeAgents'](_0x27fe2c,{'transaction':_0x89f17});}})[_0xf1d5('0x25')](function(){_0x27fe2c[_0xf1d5('0x69')](function(_0x4ffc24){socket['emit'](_0xf1d5('0x7f'),{'UserId':_0x4ffc24,'OpenchannelQueueId':_0x421e14['id']});});});});});});})[_0xf1d5('0x25')](respondWithStatusCode(_0x5bdc82,null))[_0xf1d5('0x45')](handleError(_0x5bdc82,null));};exports['addAgents']=function(_0x1a7a08,_0x41e545,_0x5ead6d){return db[_0xf1d5('0x40')][_0xf1d5('0x49')]({'where':{'id':_0x1a7a08[_0xf1d5('0x47')]['id']}})[_0xf1d5('0x25')](handleEntityNotFound(_0x41e545,null))['then'](function(_0x4af1ae){if(_0x4af1ae){return _0x4af1ae[_0xf1d5('0x80')](_0x1a7a08['body'][_0xf1d5('0x63')],_[_0xf1d5('0x81')](_0x1a7a08[_0xf1d5('0x4b')],['ids','id'])||{})[_0xf1d5('0x82')](function(_0x89f0f){for(var _0x14d537=0x0;_0x14d537<_0x1a7a08[_0xf1d5('0x4b')]['ids'][_0xf1d5('0x48')];_0x14d537+=0x1){socket[_0xf1d5('0x6a')](_0xf1d5('0x6b'),{'UserId':Number(_0x1a7a08['body']['ids'][_0x14d537]),'OpenchannelQueueId':Number(_0x1a7a08[_0xf1d5('0x47')]['id'])});}return _0x89f0f;});}})['then'](respondWithResult(_0x41e545,null))[_0xf1d5('0x45')](handleError(_0x41e545,null));};exports[_0xf1d5('0x83')]=function(_0x4a7806,_0x246176,_0xed90c1){return db[_0xf1d5('0x40')]['find']({'where':{'id':_0x4a7806['params']['id']}})['then'](handleEntityNotFound(_0x246176,null))[_0xf1d5('0x25')](function(_0x11fa8){if(_0x11fa8){return _0x11fa8[_0xf1d5('0x83')](_0x4a7806[_0xf1d5('0x32')][_0xf1d5('0x63')])['then'](function(){if(_['isArray'](_0x4a7806[_0xf1d5('0x32')][_0xf1d5('0x63')])){for(var _0x570455=0x0;_0x570455<_0x4a7806[_0xf1d5('0x32')]['ids'][_0xf1d5('0x48')];_0x570455+=0x1){socket[_0xf1d5('0x6a')](_0xf1d5('0x7f'),{'UserId':Number(_0x4a7806[_0xf1d5('0x32')][_0xf1d5('0x63')][_0x570455]),'OpenchannelQueueId':Number(_0x4a7806['params']['id'])});}}else{socket[_0xf1d5('0x6a')](_0xf1d5('0x7f'),{'UserId':Number(_0x4a7806[_0xf1d5('0x32')][_0xf1d5('0x63')]),'OpenchannelQueueId':Number(_0x4a7806['params']['id'])});}});}})[_0xf1d5('0x25')](respondWithStatusCode(_0x246176,null))['catch'](handleError(_0x246176,null));};exports['getAgents']=function(_0x5b56e3,_0x36d02c,_0x3c8ea5){var _0x531654={};var _0x5c80cd={};var _0x234d45;var _0x552705;return db[_0xf1d5('0x40')][_0xf1d5('0x61')]({'where':{'id':_0x5b56e3[_0xf1d5('0x47')]['id']}})[_0xf1d5('0x25')](handleEntityNotFound(_0x36d02c,null))[_0xf1d5('0x25')](function(_0x1d7322){if(_0x1d7322){_0x234d45=_0x1d7322;_0x5c80cd[_0xf1d5('0x30')]=_[_0xf1d5('0x33')](db[_0xf1d5('0x59')][_0xf1d5('0x2d')]);_0x5c80cd[_0xf1d5('0x32')]=_[_0xf1d5('0x33')](_0x5b56e3['query']);_0x5c80cd[_0xf1d5('0x34')]=_[_0xf1d5('0x35')](_0x5c80cd[_0xf1d5('0x30')],_0x5c80cd[_0xf1d5('0x32')]);_0x531654[_0xf1d5('0x36')]=_[_0xf1d5('0x35')](_0x5c80cd[_0xf1d5('0x30')],qs[_0xf1d5('0x37')](_0x5b56e3[_0xf1d5('0x32')][_0xf1d5('0x37')]));_0x531654[_0xf1d5('0x36')]=_0x531654[_0xf1d5('0x36')][_0xf1d5('0x48')]?_0x531654[_0xf1d5('0x36')]:_0x5c80cd['model'];_0x531654['order']=qs['sort'](_0x5b56e3['query']['sort']);_0x531654['where']=qs['filters'](_['pick'](_0x5b56e3['query'],_0x5c80cd[_0xf1d5('0x34')]));if(_0x5b56e3[_0xf1d5('0x32')]['filter']){_0x531654[_0xf1d5('0x3b')]=_[_0xf1d5('0x3d')](_0x531654[_0xf1d5('0x3b')],{'$or':_[_0xf1d5('0x31')](_0x531654['attributes'],function(_0x4b111f){var _0x5b2a44={};_0x5b2a44[_0x4b111f]={'$like':'%'+_0x5b56e3[_0xf1d5('0x32')][_0xf1d5('0x3c')]+'%'};return _0x5b2a44;})});}_0x531654=_['merge']({},_0x531654,_0x5b56e3[_0xf1d5('0x3f')]);return _0x234d45[_0xf1d5('0x84')](_0x531654);}})[_0xf1d5('0x25')](function(_0x4bdfd8){if(_0x4bdfd8){_0x552705=_0x4bdfd8['length'];if(!_0x5b56e3['query']['hasOwnProperty'](_0xf1d5('0x38'))){_0x531654[_0xf1d5('0x20')]=qs[_0xf1d5('0x20')](_0x5b56e3['query'][_0xf1d5('0x20')]);_0x531654[_0xf1d5('0x21')]=qs[_0xf1d5('0x21')](_0x5b56e3[_0xf1d5('0x32')][_0xf1d5('0x21')]);}return _0x234d45[_0xf1d5('0x84')](_0x531654);}})['then'](function(_0xfb70eb){if(_0xfb70eb){return _0xfb70eb?{'count':_0x552705,'rows':_0xfb70eb}:null;}})[_0xf1d5('0x25')](respondWithResult(_0x36d02c,null))[_0xf1d5('0x45')](handleError(_0x36d02c,null));};
\ No newline at end of file
index 761ecd6..21dcabe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x127a=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','update'];(function(_0xba42a4,_0x2644a6){var _0x43ab16=function(_0x23aa88){while(--_0x23aa88){_0xba42a4['push'](_0xba42a4['shift']());}};_0x43ab16(++_0x2644a6);}(_0x127a,0x175));var _0xa127=function(_0x424a9a,_0x2dd9af){_0x424a9a=_0x424a9a-0x0;var _0xa7831c=_0x127a[_0x424a9a];return _0xa7831c;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0xa127('0x0'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xa127('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa127('0x2'),'afterDestroy':_0xa127('0x3')};function emitEvent(_0x5b2dfa){return function(_0x472aa4,_0x424c65,_0x156971){OpenchannelQueueEvents[_0xa127('0x4')](_0x5b2dfa+':'+_0x472aa4['id'],_0x472aa4);OpenchannelQueueEvents['emit'](_0x5b2dfa,_0x472aa4);_0x156971(null);};}for(var e in events){if(events[_0xa127('0x5')](e)){var event=events[e];OpenchannelQueue[_0xa127('0x6')](e,emitEvent(event));}}module[_0xa127('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x82cf=['hasOwnProperty','hook','events','OpenchannelQueue','save','update','remove','emit'];(function(_0x1de009,_0x20d6dd){var _0x5a9ab4=function(_0x1c438c){while(--_0x1c438c){_0x1de009['push'](_0x1de009['shift']());}};_0x5a9ab4(++_0x20d6dd);}(_0x82cf,0x132));var _0xf82c=function(_0x810e4d,_0x909ef4){_0x810e4d=_0x810e4d-0x0;var _0x13f01c=_0x82cf[_0x810e4d];return _0x13f01c;};'use strict';var EventEmitter=require(_0xf82c('0x0'));var OpenchannelQueue=require('../../mysqldb')['db'][_0xf82c('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf82c('0x2'),'afterUpdate':_0xf82c('0x3'),'afterDestroy':_0xf82c('0x4')};function emitEvent(_0x296619){return function(_0x16dd2c,_0x3be843,_0x3d54af){OpenchannelQueueEvents[_0xf82c('0x5')](_0x296619+':'+_0x16dd2c['id'],_0x16dd2c);OpenchannelQueueEvents[_0xf82c('0x5')](_0x296619,_0x16dd2c);_0x3d54af(null);};}for(var e in events){if(events[_0xf82c('0x6')](e)){var event=events[e];OpenchannelQueue[_0xf82c('0x7')](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
index 274f343..ce6c6aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe531=['openchannel_queues','../../config/logger','api','moment','bluebird','path','../../config/environment','exports','define','OpenchannelQueue'];(function(_0x3e20a9,_0x2dcc47){var _0xa7212f=function(_0x11e69a){while(--_0x11e69a){_0x3e20a9['push'](_0x3e20a9['shift']());}};_0xa7212f(++_0x2dcc47);}(_0xe531,0xd3));var _0x1e53=function(_0x2c9985,_0x2975c1){_0x2c9985=_0x2c9985-0x0;var _0x5e1bea=_0xe531[_0x2c9985];return _0x5e1bea;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1e53('0x0'))(_0x1e53('0x1'));var moment=require(_0x1e53('0x2'));var BPromise=require(_0x1e53('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1e53('0x4'));var rimraf=require('rimraf');var config=require(_0x1e53('0x5'));var attributes=require('./openchannelQueue.attributes');module[_0x1e53('0x6')]=function(_0x375e96,_0x15e361){return _0x375e96[_0x1e53('0x7')](_0x1e53('0x8'),attributes,{'tableName':_0x1e53('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x140c=['util','../../config/logger','api','request-promise','rimraf','../../config/environment','./openchannelQueue.attributes','exports','define','OpenchannelQueue','openchannel_queues','lodash'];(function(_0x343d38,_0x4a88f1){var _0x4f6add=function(_0x19aedc){while(--_0x19aedc){_0x343d38['push'](_0x343d38['shift']());}};_0x4f6add(++_0x4a88f1);}(_0x140c,0xbf));var _0xc140=function(_0x324ed9,_0x11993e){_0x324ed9=_0x324ed9-0x0;var _0x558ce1=_0x140c[_0x324ed9];return _0x558ce1;};'use strict';var _=require(_0xc140('0x0'));var util=require(_0xc140('0x1'));var logger=require(_0xc140('0x2'))(_0xc140('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc140('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc140('0x5'));var config=require(_0xc140('0x6'));var attributes=require(_0xc140('0x7'));module[_0xc140('0x8')]=function(_0x37f10c,_0x5a9f0d){return _0x37f10c[_0xc140('0x9')](_0xc140('0xa'),attributes,{'tableName':_0xc140('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 91fe4e4..a3c387c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bac=['request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','OpenchannelQueue,\x20%s,\x20%s','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','attributes','include','map','model','stringify','ShowOpenchannelQueue','find','where','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','request','then','info'];(function(_0x9f27e0,_0x457a5b){var _0x359e03=function(_0x51c460){while(--_0x51c460){_0x9f27e0['push'](_0x9f27e0['shift']());}};_0x359e03(++_0x457a5b);}(_0x0bac,0x97));var _0xc0ba=function(_0x4c8be9,_0x39e389){_0x4c8be9=_0x4c8be9-0x0;var _0x3f94f0=_0x0bac[_0x4c8be9];return _0x3f94f0;};'use strict';var _=require(_0xc0ba('0x0'));var util=require(_0xc0ba('0x1'));var moment=require(_0xc0ba('0x2'));var BPromise=require(_0xc0ba('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc0ba('0x4'));var db=require(_0xc0ba('0x5'))['db'];var utils=require(_0xc0ba('0x6'));var logger=require(_0xc0ba('0x7'))(_0xc0ba('0x8'));var config=require(_0xc0ba('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc0ba('0xa')][_0xc0ba('0xb')]({'port':0x232a});config[_0xc0ba('0xc')]=_[_0xc0ba('0xd')](config[_0xc0ba('0xc')],{'host':_0xc0ba('0xe'),'port':0x18eb});var socket=require(_0xc0ba('0xf'))(new Redis(config['redis']));require(_0xc0ba('0x10'))[_0xc0ba('0x11')](socket);function respondWithRpcPromise(_0x101094,_0x32133b,_0x1cd114){return new BPromise(function(_0x52bf97,_0x2fe095){return client[_0xc0ba('0x12')](_0x101094,_0x1cd114)[_0xc0ba('0x13')](function(_0x3ef369){logger[_0xc0ba('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x32133b,_0xc0ba('0x15'));logger[_0xc0ba('0x16')](_0xc0ba('0x17'),_0x32133b,_0xc0ba('0x15'),JSON['stringify'](_0x3ef369));if(_0x3ef369[_0xc0ba('0x18')]){if(_0x3ef369[_0xc0ba('0x18')][_0xc0ba('0x19')]===0x1f4){logger[_0xc0ba('0x18')](_0xc0ba('0x1a'),_0x32133b,_0x3ef369[_0xc0ba('0x18')][_0xc0ba('0x1b')]);return _0x2fe095(_0x3ef369[_0xc0ba('0x18')]['message']);}logger[_0xc0ba('0x18')](_0xc0ba('0x1a'),_0x32133b,_0x3ef369[_0xc0ba('0x18')][_0xc0ba('0x1b')]);return _0x52bf97(_0x3ef369['error'][_0xc0ba('0x1b')]);}else{logger[_0xc0ba('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x32133b,_0xc0ba('0x15'));_0x52bf97(_0x3ef369[_0xc0ba('0x1c')][_0xc0ba('0x1b')]);}})[_0xc0ba('0x1d')](function(_0x5730ed){logger['error'](_0xc0ba('0x1a'),_0x32133b,_0x5730ed);_0x2fe095(_0x5730ed);});});}exports[_0xc0ba('0x1e')]=function(_0x25244d){var _0x4ddc7e=this;return new Promise(function(_0x6e1d66,_0x53f44f){return db[_0xc0ba('0x1f')][_0xc0ba('0x20')]({'raw':_0x25244d[_0xc0ba('0x21')]?_0x25244d[_0xc0ba('0x21')][_0xc0ba('0x22')]===undefined?!![]:![]:!![],'where':_0x25244d[_0xc0ba('0x21')]?_0x25244d[_0xc0ba('0x21')]['where']||null:null,'attributes':_0x25244d[_0xc0ba('0x21')]?_0x25244d[_0xc0ba('0x21')][_0xc0ba('0x23')]||null:null,'limit':_0x25244d['options']?_0x25244d[_0xc0ba('0x21')]['limit']||null:null,'include':_0x25244d[_0xc0ba('0x21')]?_0x25244d[_0xc0ba('0x21')][_0xc0ba('0x24')]?_[_0xc0ba('0x25')](_0x25244d[_0xc0ba('0x21')]['include'],function(_0x1a957d){return{'model':db[_0x1a957d[_0xc0ba('0x26')]],'as':_0x1a957d['as'],'attributes':_0x1a957d[_0xc0ba('0x23')],'include':_0x1a957d['include']?_['map'](_0x1a957d[_0xc0ba('0x24')],function(_0x535c83){return{'model':db[_0x535c83['model']],'as':_0x535c83['as'],'attributes':_0x535c83['attributes'],'include':_0x535c83[_0xc0ba('0x24')]?_[_0xc0ba('0x25')](_0x535c83[_0xc0ba('0x24')],function(_0x2e1162){return{'model':db[_0x2e1162[_0xc0ba('0x26')]],'as':_0x2e1162['as'],'attributes':_0x2e1162[_0xc0ba('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x31638b){logger['info'](_0xc0ba('0x1e'),_0x25244d);logger[_0xc0ba('0x16')]('GetOpenchannelQueue',_0x25244d,JSON[_0xc0ba('0x27')](_0x31638b));_0x6e1d66(_0x31638b);})['catch'](function(_0x4fb3af){logger[_0xc0ba('0x18')](_0xc0ba('0x1e'),_0x4fb3af[_0xc0ba('0x1b')],_0x25244d);_0x53f44f(_0x4ddc7e[_0xc0ba('0x18')](0x1f4,_0x4fb3af[_0xc0ba('0x1b')]));});});};exports[_0xc0ba('0x28')]=function(_0x4fa2c4){var _0x864804=this;return new Promise(function(_0x3ec7b6,_0x20c43a){return db[_0xc0ba('0x1f')][_0xc0ba('0x29')]({'raw':_0x4fa2c4[_0xc0ba('0x21')]?_0x4fa2c4[_0xc0ba('0x21')][_0xc0ba('0x22')]===undefined?!![]:![]:!![],'where':_0x4fa2c4[_0xc0ba('0x21')]?_0x4fa2c4[_0xc0ba('0x21')][_0xc0ba('0x2a')]||null:null,'attributes':_0x4fa2c4[_0xc0ba('0x21')]?_0x4fa2c4[_0xc0ba('0x21')]['attributes']||null:null,'include':_0x4fa2c4[_0xc0ba('0x21')]?_0x4fa2c4[_0xc0ba('0x21')][_0xc0ba('0x24')]?_[_0xc0ba('0x25')](_0x4fa2c4[_0xc0ba('0x21')][_0xc0ba('0x24')],function(_0x10e8f8){return{'model':db[_0x10e8f8[_0xc0ba('0x26')]],'as':_0x10e8f8['as'],'attributes':_0x10e8f8[_0xc0ba('0x23')],'include':_0x10e8f8[_0xc0ba('0x24')]?_[_0xc0ba('0x25')](_0x10e8f8[_0xc0ba('0x24')],function(_0xc7f393){return{'model':db[_0xc7f393['model']],'as':_0xc7f393['as'],'attributes':_0xc7f393[_0xc0ba('0x23')],'include':_0xc7f393['include']?_[_0xc0ba('0x25')](_0xc7f393[_0xc0ba('0x24')],function(_0x2abd1a){return{'model':db[_0x2abd1a[_0xc0ba('0x26')]],'as':_0x2abd1a['as'],'attributes':_0x2abd1a[_0xc0ba('0x23')]};}):[]};}):[]};}):[]:[]})[_0xc0ba('0x13')](function(_0xb4265a){logger[_0xc0ba('0x14')]('ShowOpenchannelQueue',_0x4fa2c4);logger[_0xc0ba('0x16')]('ShowOpenchannelQueue',_0x4fa2c4,JSON['stringify'](_0xb4265a));_0x3ec7b6(_0xb4265a);})[_0xc0ba('0x1d')](function(_0x165cf2){logger['error'](_0xc0ba('0x28'),_0x165cf2['message'],_0x4fa2c4);_0x20c43a(_0x864804[_0xc0ba('0x18')](0x1f4,_0x165cf2[_0xc0ba('0x1b')]));});});};
\ No newline at end of file
+var _0x9c55=['OpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','include','map','model','attributes','catch','ShowOpenchannelQueue','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','debug'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x9c55,0x1b5));var _0x59c5=function(_0x5ff517,_0x3e4ee0){_0x5ff517=_0x5ff517-0x0;var _0x19a245=_0x9c55[_0x5ff517];return _0x19a245;};'use strict';var _=require(_0x59c5('0x0'));var util=require(_0x59c5('0x1'));var moment=require('moment');var BPromise=require(_0x59c5('0x2'));var rs=require(_0x59c5('0x3'));var fs=require('fs');var Redis=require(_0x59c5('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x59c5('0x5'))(_0x59c5('0x6'));var config=require(_0x59c5('0x7'));var jayson=require(_0x59c5('0x8'));var client=jayson[_0x59c5('0x9')]['http']({'port':0x232a});config[_0x59c5('0xa')]=_[_0x59c5('0xb')](config[_0x59c5('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x59c5('0xa')]));require('./openchannelQueue.socket')[_0x59c5('0xc')](socket);function respondWithRpcPromise(_0x28278f,_0x1f9a8b,_0x2707e6){return new BPromise(function(_0x13de4b,_0x2ae7ce){return client[_0x59c5('0xd')](_0x28278f,_0x2707e6)[_0x59c5('0xe')](function(_0xa7908b){logger[_0x59c5('0xf')](_0x59c5('0x10'),_0x1f9a8b,'request\x20sent');logger[_0x59c5('0x11')](_0x59c5('0x12'),_0x1f9a8b,_0x59c5('0x13'),JSON[_0x59c5('0x14')](_0xa7908b));if(_0xa7908b[_0x59c5('0x15')]){if(_0xa7908b['error']['code']===0x1f4){logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x1f9a8b,_0xa7908b[_0x59c5('0x15')]['message']);return _0x2ae7ce(_0xa7908b['error'][_0x59c5('0x16')]);}logger[_0x59c5('0x15')](_0x59c5('0x10'),_0x1f9a8b,_0xa7908b[_0x59c5('0x15')]['message']);return _0x13de4b(_0xa7908b[_0x59c5('0x15')]['message']);}else{logger[_0x59c5('0xf')](_0x59c5('0x10'),_0x1f9a8b,_0x59c5('0x13'));_0x13de4b(_0xa7908b['result'][_0x59c5('0x16')]);}})['catch'](function(_0x4e90cd){logger[_0x59c5('0x15')]('OpenchannelQueue,\x20%s,\x20%s',_0x1f9a8b,_0x4e90cd);_0x2ae7ce(_0x4e90cd);});});}exports[_0x59c5('0x17')]=function(_0x433317){var _0x152405=this;return new Promise(function(_0x1dbf3e,_0xc5bf06){return db[_0x59c5('0x18')][_0x59c5('0x19')]({'raw':_0x433317['options']?_0x433317[_0x59c5('0x1a')][_0x59c5('0x1b')]===undefined?!![]:![]:!![],'where':_0x433317[_0x59c5('0x1a')]?_0x433317[_0x59c5('0x1a')][_0x59c5('0x1c')]||null:null,'attributes':_0x433317[_0x59c5('0x1a')]?_0x433317[_0x59c5('0x1a')]['attributes']||null:null,'limit':_0x433317['options']?_0x433317[_0x59c5('0x1a')]['limit']||null:null,'include':_0x433317['options']?_0x433317[_0x59c5('0x1a')][_0x59c5('0x1d')]?_[_0x59c5('0x1e')](_0x433317['options'][_0x59c5('0x1d')],function(_0x5bf209){return{'model':db[_0x5bf209[_0x59c5('0x1f')]],'as':_0x5bf209['as'],'attributes':_0x5bf209[_0x59c5('0x20')],'include':_0x5bf209[_0x59c5('0x1d')]?_[_0x59c5('0x1e')](_0x5bf209[_0x59c5('0x1d')],function(_0x2010bb){return{'model':db[_0x2010bb[_0x59c5('0x1f')]],'as':_0x2010bb['as'],'attributes':_0x2010bb[_0x59c5('0x20')],'include':_0x2010bb[_0x59c5('0x1d')]?_['map'](_0x2010bb[_0x59c5('0x1d')],function(_0x16fda2){return{'model':db[_0x16fda2['model']],'as':_0x16fda2['as'],'attributes':_0x16fda2['attributes']};}):[]};}):[]};}):[]:[]})[_0x59c5('0xe')](function(_0x5a7623){logger['info'](_0x59c5('0x17'),_0x433317);logger[_0x59c5('0x11')](_0x59c5('0x17'),_0x433317,JSON[_0x59c5('0x14')](_0x5a7623));_0x1dbf3e(_0x5a7623);})[_0x59c5('0x21')](function(_0x5bd4b4){logger[_0x59c5('0x15')](_0x59c5('0x17'),_0x5bd4b4['message'],_0x433317);_0xc5bf06(_0x152405[_0x59c5('0x15')](0x1f4,_0x5bd4b4[_0x59c5('0x16')]));});});};exports[_0x59c5('0x22')]=function(_0x66dec0){var _0x4669c0=this;return new Promise(function(_0x82f7dc,_0x472e9d){return db[_0x59c5('0x18')]['find']({'raw':_0x66dec0[_0x59c5('0x1a')]?_0x66dec0[_0x59c5('0x1a')][_0x59c5('0x1b')]===undefined?!![]:![]:!![],'where':_0x66dec0['options']?_0x66dec0[_0x59c5('0x1a')]['where']||null:null,'attributes':_0x66dec0[_0x59c5('0x1a')]?_0x66dec0[_0x59c5('0x1a')][_0x59c5('0x20')]||null:null,'include':_0x66dec0['options']?_0x66dec0[_0x59c5('0x1a')]['include']?_[_0x59c5('0x1e')](_0x66dec0['options']['include'],function(_0x3bf464){return{'model':db[_0x3bf464[_0x59c5('0x1f')]],'as':_0x3bf464['as'],'attributes':_0x3bf464[_0x59c5('0x20')],'include':_0x3bf464[_0x59c5('0x1d')]?_[_0x59c5('0x1e')](_0x3bf464['include'],function(_0x431805){return{'model':db[_0x431805[_0x59c5('0x1f')]],'as':_0x431805['as'],'attributes':_0x431805[_0x59c5('0x20')],'include':_0x431805[_0x59c5('0x1d')]?_[_0x59c5('0x1e')](_0x431805[_0x59c5('0x1d')],function(_0x22b1c1){return{'model':db[_0x22b1c1['model']],'as':_0x22b1c1['as'],'attributes':_0x22b1c1[_0x59c5('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x93e4a9){logger['info'](_0x59c5('0x22'),_0x66dec0);logger[_0x59c5('0x11')]('ShowOpenchannelQueue',_0x66dec0,JSON['stringify'](_0x93e4a9));_0x82f7dc(_0x93e4a9);})[_0x59c5('0x21')](function(_0x529a68){logger['error'](_0x59c5('0x22'),_0x529a68['message'],_0x66dec0);_0x472e9d(_0x4669c0['error'](0x1f4,_0x529a68[_0x59c5('0x16')]));});});};
\ No newline at end of file
index 81a5ba5..6e024ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94db=['./openchannelQueue.events','save','remove','update','removeListener','register','length','openchannelQueue:'];(function(_0x5e6cea,_0x24b02a){var _0x55a315=function(_0x395b80){while(--_0x395b80){_0x5e6cea['push'](_0x5e6cea['shift']());}};_0x55a315(++_0x24b02a);}(_0x94db,0x1b8));var _0xb94d=function(_0x5a137e,_0x57dac1){_0x5a137e=_0x5a137e-0x0;var _0x202ff1=_0x94db[_0x5a137e];return _0x202ff1;};'use strict';var OpenchannelQueueEvents=require(_0xb94d('0x0'));var events=[_0xb94d('0x1'),_0xb94d('0x2'),_0xb94d('0x3')];function createListener(_0x15edc2,_0xdde8a9){return function(_0xe0c10d){_0xdde8a9['emit'](_0x15edc2,_0xe0c10d);};}function removeListener(_0x2c06da,_0x1d4f74){return function(){OpenchannelQueueEvents[_0xb94d('0x4')](_0x2c06da,_0x1d4f74);};}exports[_0xb94d('0x5')]=function(_0x207b8d){for(var _0x34dcfd=0x0,_0x5509d3=events[_0xb94d('0x6')];_0x34dcfd<_0x5509d3;_0x34dcfd++){var _0x2d354a=events[_0x34dcfd];var _0x365874=createListener(_0xb94d('0x7')+_0x2d354a,_0x207b8d);OpenchannelQueueEvents['on'](_0x2d354a,_0x365874);}};
\ No newline at end of file
+var _0x9d5c=['save','removeListener','length','./openchannelQueue.events'];(function(_0x72c62a,_0xfe7589){var _0x480e55=function(_0x27d1e7){while(--_0x27d1e7){_0x72c62a['push'](_0x72c62a['shift']());}};_0x480e55(++_0xfe7589);}(_0x9d5c,0x67));var _0xc9d5=function(_0x400ff9,_0x1f8596){_0x400ff9=_0x400ff9-0x0;var _0x5dd79e=_0x9d5c[_0x400ff9];return _0x5dd79e;};'use strict';var OpenchannelQueueEvents=require(_0xc9d5('0x0'));var events=[_0xc9d5('0x1'),'remove','update'];function createListener(_0x27fb2c,_0x17dcf2){return function(_0x56d733){_0x17dcf2['emit'](_0x27fb2c,_0x56d733);};}function removeListener(_0x19b892,_0x4bf4ff){return function(){OpenchannelQueueEvents[_0xc9d5('0x2')](_0x19b892,_0x4bf4ff);};}exports['register']=function(_0x17e5c6){for(var _0x210932=0x0,_0x112210=events[_0xc9d5('0x3')];_0x210932<_0x112210;_0x210932++){var _0x154ff4=events[_0x210932];var _0x1db574=createListener('openchannelQueue:'+_0x154ff4,_0x17e5c6);OpenchannelQueueEvents['on'](_0x154ff4,_0x1db574);}};
\ No newline at end of file
index fadad05..d5bd999 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35dc=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','delete','destroy','path','connect-timeout','express'];(function(_0x4e8d62,_0x124a4c){var _0x33f4b2=function(_0x2896e0){while(--_0x2896e0){_0x4e8d62['push'](_0x4e8d62['shift']());}};_0x33f4b2(++_0x124a4c);}(_0x35dc,0xce));var _0xc35d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x35dc[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc35d('0x0'));var timeout=require(_0xc35d('0x1'));var express=require(_0xc35d('0x2'));var router=express[_0xc35d('0x3')]();var fs_extra=require(_0xc35d('0x4'));var auth=require(_0xc35d('0x5'));var interaction=require(_0xc35d('0x6'));var config=require(_0xc35d('0x7'));var controller=require(_0xc35d('0x8'));router[_0xc35d('0x9')]('/',auth[_0xc35d('0xa')](),controller['index']);router[_0xc35d('0x9')](_0xc35d('0xb'),auth[_0xc35d('0xa')](),controller[_0xc35d('0xc')]);router[_0xc35d('0x9')](_0xc35d('0xd'),auth['isAuthenticated'](),controller[_0xc35d('0xe')]);router[_0xc35d('0xf')]('/',auth['isAuthenticated'](),controller[_0xc35d('0x10')]);router['put'](_0xc35d('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xc35d('0x11')](_0xc35d('0xd'),auth[_0xc35d('0xa')](),controller[_0xc35d('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x0565=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelQueueReport.controller','isAuthenticated','index','get','/describe','describe','show','post','create','put','/:id','update','delete','util','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0565,0x13e));var _0x5056=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x0565[_0x122096];return _0x3d1966;};'use strict';var multer=require('multer');var util=require(_0x5056('0x0'));var path=require(_0x5056('0x1'));var timeout=require(_0x5056('0x2'));var express=require(_0x5056('0x3'));var router=express['Router']();var fs_extra=require(_0x5056('0x4'));var auth=require(_0x5056('0x5'));var interaction=require(_0x5056('0x6'));var config=require('../../config/environment');var controller=require(_0x5056('0x7'));router['get']('/',auth[_0x5056('0x8')](),controller[_0x5056('0x9')]);router[_0x5056('0xa')](_0x5056('0xb'),auth[_0x5056('0x8')](),controller[_0x5056('0xc')]);router[_0x5056('0xa')]('/:id',auth[_0x5056('0x8')](),controller[_0x5056('0xd')]);router[_0x5056('0xe')]('/',auth[_0x5056('0x8')](),controller[_0x5056('0xf')]);router[_0x5056('0x10')](_0x5056('0x11'),auth['isAuthenticated'](),controller[_0x5056('0x12')]);router[_0x5056('0x13')](_0x5056('0x11'),auth[_0x5056('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 679dafd..58f592d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b68=['DATE','moment','exports','STRING'];(function(_0x45ec0b,_0x260c5d){var _0x99a3d8=function(_0x524391){while(--_0x524391){_0x45ec0b['push'](_0x45ec0b['shift']());}};_0x99a3d8(++_0x260c5d);}(_0x3b68,0x1a5));var _0x83b6=function(_0x2d010a,_0x5c2013){_0x2d010a=_0x2d010a-0x0;var _0x15d5d2=_0x3b68[_0x2d010a];return _0x15d5d2;};'use strict';var moment=require(_0x83b6('0x0'));var Sequelize=require('sequelize');module[_0x83b6('0x1')]={'uniqueid':{'type':Sequelize[_0x83b6('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x83b6('0x2')]},'joinAt':{'type':Sequelize[_0x83b6('0x3')]},'leaveAt':{'type':Sequelize[_0x83b6('0x3')]},'acceptAt':{'type':Sequelize[_0x83b6('0x3')]},'exitAt':{'type':Sequelize[_0x83b6('0x3')]},'reason':{'type':Sequelize[_0x83b6('0x2')]}};
\ No newline at end of file
+var _0x44e5=['DATE','moment','sequelize','exports','STRING'];(function(_0x5d2fc1,_0x4136c2){var _0x14dd1f=function(_0x39f062){while(--_0x39f062){_0x5d2fc1['push'](_0x5d2fc1['shift']());}};_0x14dd1f(++_0x4136c2);}(_0x44e5,0x187));var _0x544e=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x44e5[_0x3ff085];return _0x2b68c3;};'use strict';var moment=require(_0x544e('0x0'));var Sequelize=require(_0x544e('0x1'));module[_0x544e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x544e('0x3')]},'joinAt':{'type':Sequelize[_0x544e('0x4')]},'leaveAt':{'type':Sequelize[_0x544e('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x544e('0x4')]},'reason':{'type':Sequelize[_0x544e('0x3')]}};
\ No newline at end of file
index 06c29fd..87461be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a97=['to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','OpenchannelQueueReport','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','create','body','find','params','describe','eml-format','rimraf','zip-dir','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js'];(function(_0x15c591,_0x5a6f81){var _0x44a957=function(_0x4eb340){while(--_0x4eb340){_0x15c591['push'](_0x15c591['shift']());}};_0x44a957(++_0x5a6f81);}(_0x9a97,0xd1));var _0x79a9=function(_0x7d582c,_0x3c47e7){_0x7d582c=_0x7d582c-0x0;var _0xcf92be=_0x9a97[_0x7d582c];return _0xcf92be;};'use strict';var emlformat=require(_0x79a9('0x0'));var rimraf=require(_0x79a9('0x1'));var zipdir=require(_0x79a9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x79a9('0x3'));var util=require('util');var path=require(_0x79a9('0x4'));var sox=require(_0x79a9('0x5'));var csv=require('to-csv');var ejs=require(_0x79a9('0x6'));var fs=require('fs');var fs_extra=require(_0x79a9('0x7'));var _=require(_0x79a9('0x8'));var squel=require(_0x79a9('0x9'));var crypto=require(_0x79a9('0xa'));var jsforce=require(_0x79a9('0xb'));var deskjs=require(_0x79a9('0xc'));var toCsv=require(_0x79a9('0xd'));var querystring=require(_0x79a9('0xe'));var Papa=require(_0x79a9('0xf'));var Redis=require(_0x79a9('0x10'));var authService=require(_0x79a9('0x11'));var qs=require(_0x79a9('0x12'));var as=require(_0x79a9('0x13'));var hardwareService=require(_0x79a9('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x79a9('0x15'));var licenseUtil=require(_0x79a9('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x13c86e,_0x3585e2){_0x3585e2=_0x3585e2||0xcc;return function(_0x402db2){if(_0x402db2){return _0x13c86e[_0x79a9('0x17')](_0x3585e2);}return _0x13c86e[_0x79a9('0x18')](_0x3585e2)[_0x79a9('0x19')]();};}function respondWithResult(_0x2d54e0,_0x59a582){_0x59a582=_0x59a582||0xc8;return function(_0x5c8ea4){if(_0x5c8ea4){return _0x2d54e0['status'](_0x59a582)[_0x79a9('0x1a')](_0x5c8ea4);}};}function respondWithFilteredResult(_0x121d67,_0x570dc7){return function(_0x497bb5){if(_0x497bb5){var _0x1c9daf=typeof _0x570dc7[_0x79a9('0x1b')]===_0x79a9('0x1c')&&typeof _0x570dc7[_0x79a9('0x1d')]===_0x79a9('0x1c');var _0x22a2f8=_0x497bb5['count'];var _0xbf6909=_0x1c9daf?0x0:_0x570dc7[_0x79a9('0x1b')];var _0x4ed22a=_0x1c9daf?_0x497bb5[_0x79a9('0x1e')]:_0x570dc7[_0x79a9('0x1b')]+_0x570dc7[_0x79a9('0x1d')];var _0x338a3b;if(_0x4ed22a>=_0x22a2f8){_0x4ed22a=_0x22a2f8;_0x338a3b=0xc8;}else{_0x338a3b=0xce;}_0x121d67[_0x79a9('0x18')](_0x338a3b);return _0x121d67['set'](_0x79a9('0x1f'),_0xbf6909+'-'+_0x4ed22a+'/'+_0x22a2f8)[_0x79a9('0x1a')](_0x497bb5);}return null;};}function patchUpdates(_0x39cd22){return function(_0x3a24ea){try{jsonpatch[_0x79a9('0x20')](_0x3a24ea,_0x39cd22,!![]);}catch(_0x362f26){return BPromise[_0x79a9('0x21')](_0x362f26);}return _0x3a24ea[_0x79a9('0x22')]();};}function saveUpdates(_0x167c4f,_0x4ff322){return function(_0x4551e4){if(_0x4551e4){return _0x4551e4[_0x79a9('0x23')](_0x167c4f)[_0x79a9('0x24')](function(_0x4fce81){return _0x4fce81;});}return null;};}function removeEntity(_0x408ec5,_0x172451){return function(_0x589f36){if(_0x589f36){return _0x589f36[_0x79a9('0x25')]()[_0x79a9('0x24')](function(){_0x408ec5[_0x79a9('0x18')](0xcc)[_0x79a9('0x19')]();});}};}function handleEntityNotFound(_0x46d036,_0x50a5e2){return function(_0x31054e){if(!_0x31054e){_0x46d036[_0x79a9('0x17')](0x194);}return _0x31054e;};}function handleError(_0x27a429,_0x811b75){_0x811b75=_0x811b75||0x1f4;return function(_0x3c6847){logger[_0x79a9('0x26')](_0x3c6847[_0x79a9('0x27')]);if(_0x3c6847[_0x79a9('0x28')]){delete _0x3c6847[_0x79a9('0x28')];}_0x27a429[_0x79a9('0x18')](_0x811b75)[_0x79a9('0x29')](_0x3c6847);};}exports['index']=function(_0x4af2ca,_0x45a017){var _0x47b5e6={},_0x3872e1={},_0x21f474={'count':0x0,'rows':[]};var _0x52397f=_[_0x79a9('0x2a')](db[_0x79a9('0x2b')][_0x79a9('0x2c')],function(_0x1b66a1){return{'name':_0x1b66a1[_0x79a9('0x2d')],'type':_0x1b66a1[_0x79a9('0x2e')]['key']};});_0x3872e1[_0x79a9('0x2f')]=_[_0x79a9('0x2a')](_0x52397f,_0x79a9('0x28'));_0x3872e1['query']=_[_0x79a9('0x30')](_0x4af2ca[_0x79a9('0x31')]);_0x3872e1[_0x79a9('0x32')]=_['intersection'](_0x3872e1[_0x79a9('0x2f')],_0x3872e1[_0x79a9('0x31')]);_0x47b5e6['attributes']=_[_0x79a9('0x33')](_0x3872e1[_0x79a9('0x2f')],qs[_0x79a9('0x34')](_0x4af2ca[_0x79a9('0x31')][_0x79a9('0x34')]));_0x47b5e6[_0x79a9('0x35')]=_0x47b5e6[_0x79a9('0x35')]['length']?_0x47b5e6[_0x79a9('0x35')]:_0x3872e1['model'];if(!_0x4af2ca[_0x79a9('0x31')][_0x79a9('0x36')](_0x79a9('0x37'))){_0x47b5e6[_0x79a9('0x1d')]=qs[_0x79a9('0x1d')](_0x4af2ca[_0x79a9('0x31')][_0x79a9('0x1d')]);_0x47b5e6[_0x79a9('0x1b')]=qs['offset'](_0x4af2ca[_0x79a9('0x31')][_0x79a9('0x1b')]);}_0x47b5e6['order']=qs[_0x79a9('0x38')](_0x4af2ca[_0x79a9('0x31')][_0x79a9('0x38')]);_0x47b5e6[_0x79a9('0x39')]=qs[_0x79a9('0x32')](_[_0x79a9('0x3a')](_0x4af2ca[_0x79a9('0x31')],_0x3872e1['filters']),_0x52397f);if(_0x4af2ca[_0x79a9('0x31')][_0x79a9('0x3b')]){_0x47b5e6[_0x79a9('0x39')]=_[_0x79a9('0x3c')](_0x47b5e6[_0x79a9('0x39')],{'$or':_[_0x79a9('0x2a')](_0x52397f,function(_0x12c0e5){if(_0x12c0e5[_0x79a9('0x2e')]!==_0x79a9('0x3d')){var _0x5b7ee7={};_0x5b7ee7[_0x12c0e5['name']]={'$like':'%'+_0x4af2ca[_0x79a9('0x31')]['filter']+'%'};return _0x5b7ee7;}})});}_0x47b5e6=_[_0x79a9('0x3c')]({},_0x47b5e6,_0x4af2ca[_0x79a9('0x3e')]);var _0x26a4d5={'where':_0x47b5e6['where']};return db['OpenchannelQueueReport'][_0x79a9('0x1e')](_0x26a4d5)['then'](function(_0x246fae){_0x21f474[_0x79a9('0x1e')]=_0x246fae;if(_0x4af2ca[_0x79a9('0x31')]['includeAll']){_0x47b5e6[_0x79a9('0x3f')]=[{'all':!![]}];}return db[_0x79a9('0x2b')][_0x79a9('0x40')](_0x47b5e6);})[_0x79a9('0x24')](function(_0x25ac83){_0x21f474[_0x79a9('0x41')]=_0x25ac83;return _0x21f474;})[_0x79a9('0x24')](respondWithFilteredResult(_0x45a017,_0x47b5e6))[_0x79a9('0x42')](handleError(_0x45a017,null));};exports[_0x79a9('0x43')]=function(_0x2b1b17,_0x5975ed){var _0x2e6ba8={'raw':!![],'where':{'id':_0x2b1b17['params']['id']}},_0x45b2c6={};_0x45b2c6[_0x79a9('0x2f')]=_[_0x79a9('0x30')](db['OpenchannelQueueReport']['rawAttributes']);_0x45b2c6[_0x79a9('0x31')]=_[_0x79a9('0x30')](_0x2b1b17[_0x79a9('0x31')]);_0x45b2c6[_0x79a9('0x32')]=_[_0x79a9('0x33')](_0x45b2c6[_0x79a9('0x2f')],_0x45b2c6[_0x79a9('0x31')]);_0x2e6ba8[_0x79a9('0x35')]=_['intersection'](_0x45b2c6[_0x79a9('0x2f')],qs[_0x79a9('0x34')](_0x2b1b17[_0x79a9('0x31')][_0x79a9('0x34')]));_0x2e6ba8[_0x79a9('0x35')]=_0x2e6ba8[_0x79a9('0x35')]['length']?_0x2e6ba8['attributes']:_0x45b2c6[_0x79a9('0x2f')];if(_0x2b1b17['query'][_0x79a9('0x44')]){_0x2e6ba8[_0x79a9('0x3f')]=[{'all':!![]}];}_0x2e6ba8=_[_0x79a9('0x3c')]({},_0x2e6ba8,_0x2b1b17[_0x79a9('0x3e')]);return db['OpenchannelQueueReport']['find'](_0x2e6ba8)[_0x79a9('0x24')](handleEntityNotFound(_0x5975ed,null))[_0x79a9('0x24')](respondWithResult(_0x5975ed,null))[_0x79a9('0x42')](handleError(_0x5975ed,null));};exports[_0x79a9('0x45')]=function(_0x1b29bf,_0x150abe){return db['OpenchannelQueueReport'][_0x79a9('0x45')](_0x1b29bf[_0x79a9('0x46')],{})['then'](respondWithResult(_0x150abe,0xc9))['catch'](handleError(_0x150abe,null));};exports[_0x79a9('0x23')]=function(_0x57e48e,_0x30d94d){if(_0x57e48e[_0x79a9('0x46')]['id']){delete _0x57e48e['body']['id'];}return db[_0x79a9('0x2b')][_0x79a9('0x47')]({'where':{'id':_0x57e48e[_0x79a9('0x48')]['id']}})['then'](handleEntityNotFound(_0x30d94d,null))[_0x79a9('0x24')](saveUpdates(_0x57e48e[_0x79a9('0x46')],null))[_0x79a9('0x24')](respondWithResult(_0x30d94d,null))['catch'](handleError(_0x30d94d,null));};exports['destroy']=function(_0xc76439,_0x47d4f0){return db['OpenchannelQueueReport'][_0x79a9('0x47')]({'where':{'id':_0xc76439[_0x79a9('0x48')]['id']}})['then'](handleEntityNotFound(_0x47d4f0,null))[_0x79a9('0x24')](removeEntity(_0x47d4f0,null))[_0x79a9('0x42')](handleError(_0x47d4f0,null));};exports[_0x79a9('0x49')]=function(_0x2b4bee,_0x14716c){return db[_0x79a9('0x2b')][_0x79a9('0x49')]()[_0x79a9('0x24')](respondWithResult(_0x14716c,null))['catch'](handleError(_0x14716c,null));};
\ No newline at end of file
+var _0xbf6d=['fieldName','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','sort','where','pick','filter','merge','type','VIRTUAL','options','findAll','rows','catch','show','keys','includeAll','include','find','create','body','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','OpenchannelQueueReport','rawAttributes'];(function(_0x2f5267,_0x19e8a4){var _0x9f71ad=function(_0x56e263){while(--_0x56e263){_0x2f5267['push'](_0x2f5267['shift']());}};_0x9f71ad(++_0x19e8a4);}(_0xbf6d,0x1ef));var _0xdbf6=function(_0x35e768,_0xbe0d60){_0x35e768=_0x35e768-0x0;var _0x58cc5f=_0xbf6d[_0x35e768];return _0x58cc5f;};'use strict';var emlformat=require(_0xdbf6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdbf6('0x1'));var jsonpatch=require(_0xdbf6('0x2'));var rp=require(_0xdbf6('0x3'));var moment=require('moment');var BPromise=require(_0xdbf6('0x4'));var Mustache=require(_0xdbf6('0x5'));var util=require(_0xdbf6('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xdbf6('0x7'));var ejs=require(_0xdbf6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdbf6('0x9'));var squel=require(_0xdbf6('0xa'));var crypto=require(_0xdbf6('0xb'));var jsforce=require(_0xdbf6('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xdbf6('0x7'));var querystring=require(_0xdbf6('0xd'));var Papa=require(_0xdbf6('0xe'));var Redis=require('ioredis');var authService=require(_0xdbf6('0xf'));var qs=require(_0xdbf6('0x10'));var as=require(_0xdbf6('0x11'));var hardwareService=require(_0xdbf6('0x12'));var logger=require(_0xdbf6('0x13'))(_0xdbf6('0x14'));var utils=require(_0xdbf6('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xdbf6('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x53160e,_0xcc2800){_0xcc2800=_0xcc2800||0xcc;return function(_0x153100){if(_0x153100){return _0x53160e[_0xdbf6('0x17')](_0xcc2800);}return _0x53160e[_0xdbf6('0x18')](_0xcc2800)[_0xdbf6('0x19')]();};}function respondWithResult(_0x3c6cb1,_0x10bc45){_0x10bc45=_0x10bc45||0xc8;return function(_0x3d9dfa){if(_0x3d9dfa){return _0x3c6cb1[_0xdbf6('0x18')](_0x10bc45)[_0xdbf6('0x1a')](_0x3d9dfa);}};}function respondWithFilteredResult(_0x30fc47,_0x115e91){return function(_0x4aa9ce){if(_0x4aa9ce){var _0x333781=typeof _0x115e91['offset']===_0xdbf6('0x1b')&&typeof _0x115e91['limit']===_0xdbf6('0x1b');var _0x49dcfb=_0x4aa9ce[_0xdbf6('0x1c')];var _0x196ab4=_0x333781?0x0:_0x115e91['offset'];var _0x116035=_0x333781?_0x4aa9ce[_0xdbf6('0x1c')]:_0x115e91[_0xdbf6('0x1d')]+_0x115e91['limit'];var _0x387681;if(_0x116035>=_0x49dcfb){_0x116035=_0x49dcfb;_0x387681=0xc8;}else{_0x387681=0xce;}_0x30fc47[_0xdbf6('0x18')](_0x387681);return _0x30fc47[_0xdbf6('0x1e')](_0xdbf6('0x1f'),_0x196ab4+'-'+_0x116035+'/'+_0x49dcfb)[_0xdbf6('0x1a')](_0x4aa9ce);}return null;};}function patchUpdates(_0x2503d6){return function(_0x103345){try{jsonpatch[_0xdbf6('0x20')](_0x103345,_0x2503d6,!![]);}catch(_0x5a2cba){return BPromise[_0xdbf6('0x21')](_0x5a2cba);}return _0x103345['save']();};}function saveUpdates(_0x1b421c,_0x52e6b7){return function(_0x2798cb){if(_0x2798cb){return _0x2798cb[_0xdbf6('0x22')](_0x1b421c)[_0xdbf6('0x23')](function(_0x2bac1e){return _0x2bac1e;});}return null;};}function removeEntity(_0x244667,_0x1f3fbd){return function(_0x1f54be){if(_0x1f54be){return _0x1f54be[_0xdbf6('0x24')]()['then'](function(){_0x244667[_0xdbf6('0x18')](0xcc)[_0xdbf6('0x19')]();});}};}function handleEntityNotFound(_0xacc6f3,_0x431d35){return function(_0x2918a0){if(!_0x2918a0){_0xacc6f3['sendStatus'](0x194);}return _0x2918a0;};}function handleError(_0x230371,_0x25604f){_0x25604f=_0x25604f||0x1f4;return function(_0x31ee77){logger[_0xdbf6('0x25')](_0x31ee77[_0xdbf6('0x26')]);if(_0x31ee77[_0xdbf6('0x27')]){delete _0x31ee77[_0xdbf6('0x27')];}_0x230371['status'](_0x25604f)[_0xdbf6('0x28')](_0x31ee77);};}exports[_0xdbf6('0x29')]=function(_0x3677d0,_0x4495d6){var _0x4e24ea={},_0x54431f={},_0x475848={'count':0x0,'rows':[]};var _0x289738=_['map'](db[_0xdbf6('0x2a')][_0xdbf6('0x2b')],function(_0x382e78){return{'name':_0x382e78[_0xdbf6('0x2c')],'type':_0x382e78['type'][_0xdbf6('0x2d')]};});_0x54431f[_0xdbf6('0x2e')]=_[_0xdbf6('0x2f')](_0x289738,_0xdbf6('0x27'));_0x54431f[_0xdbf6('0x30')]=_['keys'](_0x3677d0[_0xdbf6('0x30')]);_0x54431f[_0xdbf6('0x31')]=_[_0xdbf6('0x32')](_0x54431f[_0xdbf6('0x2e')],_0x54431f[_0xdbf6('0x30')]);_0x4e24ea['attributes']=_['intersection'](_0x54431f[_0xdbf6('0x2e')],qs[_0xdbf6('0x33')](_0x3677d0[_0xdbf6('0x30')]['fields']));_0x4e24ea[_0xdbf6('0x34')]=_0x4e24ea[_0xdbf6('0x34')][_0xdbf6('0x35')]?_0x4e24ea['attributes']:_0x54431f[_0xdbf6('0x2e')];if(!_0x3677d0[_0xdbf6('0x30')][_0xdbf6('0x36')](_0xdbf6('0x37'))){_0x4e24ea[_0xdbf6('0x38')]=qs[_0xdbf6('0x38')](_0x3677d0[_0xdbf6('0x30')]['limit']);_0x4e24ea[_0xdbf6('0x1d')]=qs[_0xdbf6('0x1d')](_0x3677d0[_0xdbf6('0x30')][_0xdbf6('0x1d')]);}_0x4e24ea['order']=qs[_0xdbf6('0x39')](_0x3677d0[_0xdbf6('0x30')][_0xdbf6('0x39')]);_0x4e24ea[_0xdbf6('0x3a')]=qs[_0xdbf6('0x31')](_[_0xdbf6('0x3b')](_0x3677d0[_0xdbf6('0x30')],_0x54431f[_0xdbf6('0x31')]),_0x289738);if(_0x3677d0[_0xdbf6('0x30')][_0xdbf6('0x3c')]){_0x4e24ea[_0xdbf6('0x3a')]=_[_0xdbf6('0x3d')](_0x4e24ea[_0xdbf6('0x3a')],{'$or':_[_0xdbf6('0x2f')](_0x289738,function(_0x51d4ce){if(_0x51d4ce[_0xdbf6('0x3e')]!==_0xdbf6('0x3f')){var _0x26656f={};_0x26656f[_0x51d4ce[_0xdbf6('0x27')]]={'$like':'%'+_0x3677d0[_0xdbf6('0x30')][_0xdbf6('0x3c')]+'%'};return _0x26656f;}})});}_0x4e24ea=_['merge']({},_0x4e24ea,_0x3677d0[_0xdbf6('0x40')]);var _0x5e8ed4={'where':_0x4e24ea[_0xdbf6('0x3a')]};return db[_0xdbf6('0x2a')][_0xdbf6('0x1c')](_0x5e8ed4)[_0xdbf6('0x23')](function(_0x1fee9e){_0x475848[_0xdbf6('0x1c')]=_0x1fee9e;if(_0x3677d0[_0xdbf6('0x30')]['includeAll']){_0x4e24ea['include']=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0xdbf6('0x41')](_0x4e24ea);})[_0xdbf6('0x23')](function(_0x2b542d){_0x475848[_0xdbf6('0x42')]=_0x2b542d;return _0x475848;})[_0xdbf6('0x23')](respondWithFilteredResult(_0x4495d6,_0x4e24ea))[_0xdbf6('0x43')](handleError(_0x4495d6,null));};exports[_0xdbf6('0x44')]=function(_0xe8c037,_0x9e7a2d){var _0x32e07a={'raw':!![],'where':{'id':_0xe8c037['params']['id']}},_0x5ed4a3={};_0x5ed4a3[_0xdbf6('0x2e')]=_[_0xdbf6('0x45')](db['OpenchannelQueueReport'][_0xdbf6('0x2b')]);_0x5ed4a3[_0xdbf6('0x30')]=_['keys'](_0xe8c037[_0xdbf6('0x30')]);_0x5ed4a3['filters']=_[_0xdbf6('0x32')](_0x5ed4a3[_0xdbf6('0x2e')],_0x5ed4a3[_0xdbf6('0x30')]);_0x32e07a[_0xdbf6('0x34')]=_[_0xdbf6('0x32')](_0x5ed4a3[_0xdbf6('0x2e')],qs[_0xdbf6('0x33')](_0xe8c037[_0xdbf6('0x30')][_0xdbf6('0x33')]));_0x32e07a[_0xdbf6('0x34')]=_0x32e07a[_0xdbf6('0x34')][_0xdbf6('0x35')]?_0x32e07a[_0xdbf6('0x34')]:_0x5ed4a3[_0xdbf6('0x2e')];if(_0xe8c037[_0xdbf6('0x30')][_0xdbf6('0x46')]){_0x32e07a[_0xdbf6('0x47')]=[{'all':!![]}];}_0x32e07a=_[_0xdbf6('0x3d')]({},_0x32e07a,_0xe8c037[_0xdbf6('0x40')]);return db[_0xdbf6('0x2a')][_0xdbf6('0x48')](_0x32e07a)[_0xdbf6('0x23')](handleEntityNotFound(_0x9e7a2d,null))[_0xdbf6('0x23')](respondWithResult(_0x9e7a2d,null))['catch'](handleError(_0x9e7a2d,null));};exports[_0xdbf6('0x49')]=function(_0x2617d1,_0x1c9a1e){return db[_0xdbf6('0x2a')][_0xdbf6('0x49')](_0x2617d1[_0xdbf6('0x4a')],{})[_0xdbf6('0x23')](respondWithResult(_0x1c9a1e,0xc9))[_0xdbf6('0x43')](handleError(_0x1c9a1e,null));};exports['update']=function(_0x171990,_0x382608){if(_0x171990['body']['id']){delete _0x171990['body']['id'];}return db[_0xdbf6('0x2a')][_0xdbf6('0x48')]({'where':{'id':_0x171990[_0xdbf6('0x4b')]['id']}})[_0xdbf6('0x23')](handleEntityNotFound(_0x382608,null))['then'](saveUpdates(_0x171990[_0xdbf6('0x4a')],null))[_0xdbf6('0x23')](respondWithResult(_0x382608,null))[_0xdbf6('0x43')](handleError(_0x382608,null));};exports['destroy']=function(_0x1b54ae,_0x31da5e){return db['OpenchannelQueueReport'][_0xdbf6('0x48')]({'where':{'id':_0x1b54ae[_0xdbf6('0x4b')]['id']}})[_0xdbf6('0x23')](handleEntityNotFound(_0x31da5e,null))[_0xdbf6('0x23')](removeEntity(_0x31da5e,null))[_0xdbf6('0x43')](handleError(_0x31da5e,null));};exports[_0xdbf6('0x4c')]=function(_0x42ff12,_0x454b6f){return db[_0xdbf6('0x2a')][_0xdbf6('0x4c')]()[_0xdbf6('0x23')](respondWithResult(_0x454b6f,null))[_0xdbf6('0x43')](handleError(_0x454b6f,null));};
\ No newline at end of file
index f043b13..41767a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash'];(function(_0x41459d,_0xfb1706){var _0x28707f=function(_0x1ab097){while(--_0x1ab097){_0x41459d['push'](_0x41459d['shift']());}};_0x28707f(++_0xfb1706);}(_0x326f,0xd1));var _0xf326=function(_0x4a82ee,_0x1291ff){_0x4a82ee=_0x4a82ee-0x0;var _0x1f9e29=_0x326f[_0x4a82ee];return _0x1f9e29;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4aa=['bluebird','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','lodash','util','../../config/logger','api','moment'];(function(_0xed3125,_0x3e4ce1){var _0x43b340=function(_0x5c4cfe){while(--_0x5c4cfe){_0xed3125['push'](_0xed3125['shift']());}};_0x43b340(++_0x3e4ce1);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0xc4aa[_0x5c2e3e];return _0x53f64a;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 25fd1e5..cb97b52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea28=['request\x20sent','stringify','error','code','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','debug','UpdateOpenchannelQueueReport','update','raw','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s'];(function(_0x5f2fea,_0x9fde07){var _0x198a0c=function(_0x2bb11a){while(--_0x2bb11a){_0x5f2fea['push'](_0x5f2fea['shift']());}};_0x198a0c(++_0x9fde07);}(_0xea28,0x13a));var _0x8ea2=function(_0x260c94,_0x21cb5b){_0x260c94=_0x260c94-0x0;var _0x10e828=_0xea28[_0x260c94];return _0x10e828;};'use strict';var _=require(_0x8ea2('0x0'));var util=require(_0x8ea2('0x1'));var moment=require(_0x8ea2('0x2'));var BPromise=require(_0x8ea2('0x3'));var rs=require(_0x8ea2('0x4'));var fs=require('fs');var Redis=require(_0x8ea2('0x5'));var db=require(_0x8ea2('0x6'))['db'];var utils=require(_0x8ea2('0x7'));var logger=require('../../config/logger')(_0x8ea2('0x8'));var config=require(_0x8ea2('0x9'));var jayson=require(_0x8ea2('0xa'));var client=jayson['client'][_0x8ea2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x435d78,_0xb7f278,_0x39b1fa){return new BPromise(function(_0x28b5b8,_0x929304){return client[_0x8ea2('0xc')](_0x435d78,_0x39b1fa)[_0x8ea2('0xd')](function(_0x3de4a1){logger[_0x8ea2('0xe')](_0x8ea2('0xf'),_0xb7f278,_0x8ea2('0x10'));logger['debug']('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0xb7f278,_0x8ea2('0x10'),JSON[_0x8ea2('0x11')](_0x3de4a1));if(_0x3de4a1[_0x8ea2('0x12')]){if(_0x3de4a1['error'][_0x8ea2('0x13')]===0x1f4){logger[_0x8ea2('0x12')](_0x8ea2('0xf'),_0xb7f278,_0x3de4a1[_0x8ea2('0x12')][_0x8ea2('0x14')]);return _0x929304(_0x3de4a1['error'][_0x8ea2('0x14')]);}logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0xb7f278,_0x3de4a1[_0x8ea2('0x12')][_0x8ea2('0x14')]);return _0x28b5b8(_0x3de4a1[_0x8ea2('0x12')][_0x8ea2('0x14')]);}else{logger[_0x8ea2('0xe')](_0x8ea2('0xf'),_0xb7f278,_0x8ea2('0x10'));_0x28b5b8(_0x3de4a1[_0x8ea2('0x15')][_0x8ea2('0x14')]);}})[_0x8ea2('0x16')](function(_0x2dfa7c){logger[_0x8ea2('0x12')](_0x8ea2('0xf'),_0xb7f278,_0x2dfa7c);_0x929304(_0x2dfa7c);});});}exports[_0x8ea2('0x17')]=function(_0x1b64cf){var _0x174ef2=this;return new Promise(function(_0x467045,_0x2a0329){return db[_0x8ea2('0x18')][_0x8ea2('0x19')](_0x1b64cf[_0x8ea2('0x1a')],{'raw':_0x1b64cf[_0x8ea2('0x1b')]?_0x1b64cf['options']['raw']===undefined?!![]:![]:!![]})[_0x8ea2('0xd')](function(_0x248c18){logger[_0x8ea2('0xe')]('CreateOpenchannelQueueReport',_0x1b64cf);logger[_0x8ea2('0x1c')](_0x8ea2('0x17'),_0x1b64cf,JSON['stringify'](_0x248c18));_0x467045(_0x248c18);})[_0x8ea2('0x16')](function(_0x283f00){logger[_0x8ea2('0x12')](_0x8ea2('0x17'),_0x283f00[_0x8ea2('0x14')],_0x1b64cf);_0x2a0329(_0x174ef2[_0x8ea2('0x12')](0x1f4,_0x283f00[_0x8ea2('0x14')]));});});};exports[_0x8ea2('0x1d')]=function(_0x18ec34){var _0x4d5030=this;return new Promise(function(_0x433bc5,_0x4f48bd){return db[_0x8ea2('0x18')][_0x8ea2('0x1e')](_0x18ec34[_0x8ea2('0x1a')],{'raw':_0x18ec34['options']?_0x18ec34['options'][_0x8ea2('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x18ec34['options']?_0x18ec34[_0x8ea2('0x1b')]['where']||null:null,'attributes':_0x18ec34[_0x8ea2('0x1b')]?_0x18ec34[_0x8ea2('0x1b')][_0x8ea2('0x20')]||null:null,'limit':_0x18ec34[_0x8ea2('0x1b')]?_0x18ec34['options']['limit']||null:null})[_0x8ea2('0xd')](function(_0x4da5b3){logger[_0x8ea2('0xe')](_0x8ea2('0x1d'),_0x18ec34);logger[_0x8ea2('0x1c')](_0x8ea2('0x1d'),_0x18ec34,JSON[_0x8ea2('0x11')](_0x4da5b3));_0x433bc5(_0x4da5b3);})[_0x8ea2('0x16')](function(_0x32e225){logger[_0x8ea2('0x12')](_0x8ea2('0x1d'),_0x32e225[_0x8ea2('0x14')],_0x18ec34);_0x4f48bd(_0x4d5030['error'](0x1f4,_0x32e225['message']));});});};
\ No newline at end of file
+var _0xdc91=['stringify','error','code','message','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','UpdateOpenchannelQueueReport','update','attributes','limit','lodash','util','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0x3ad60f,_0x1326de){var _0x1e8172=function(_0x2369ca){while(--_0x2369ca){_0x3ad60f['push'](_0x3ad60f['shift']());}};_0x1e8172(++_0x1326de);}(_0xdc91,0x8b));var _0x1dc9=function(_0x46ecec,_0x6efc18){_0x46ecec=_0x46ecec-0x0;var _0x24e32d=_0xdc91[_0x46ecec];return _0x24e32d;};'use strict';var _=require(_0x1dc9('0x0'));var util=require(_0x1dc9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1dc9('0x2'))['db'];var utils=require(_0x1dc9('0x3'));var logger=require(_0x1dc9('0x4'))(_0x1dc9('0x5'));var config=require(_0x1dc9('0x6'));var jayson=require(_0x1dc9('0x7'));var client=jayson[_0x1dc9('0x8')][_0x1dc9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5ac058,_0x2c6e6c,_0x25a752){return new BPromise(function(_0x316995,_0x3d1772){return client[_0x1dc9('0xa')](_0x5ac058,_0x25a752)[_0x1dc9('0xb')](function(_0x43c405){logger[_0x1dc9('0xc')](_0x1dc9('0xd'),_0x2c6e6c,_0x1dc9('0xe'));logger['debug'](_0x1dc9('0xf'),_0x2c6e6c,'request\x20sent',JSON[_0x1dc9('0x10')](_0x43c405));if(_0x43c405['error']){if(_0x43c405[_0x1dc9('0x11')][_0x1dc9('0x12')]===0x1f4){logger[_0x1dc9('0x11')](_0x1dc9('0xd'),_0x2c6e6c,_0x43c405['error'][_0x1dc9('0x13')]);return _0x3d1772(_0x43c405[_0x1dc9('0x11')]['message']);}logger[_0x1dc9('0x11')](_0x1dc9('0xd'),_0x2c6e6c,_0x43c405['error']['message']);return _0x316995(_0x43c405[_0x1dc9('0x11')][_0x1dc9('0x13')]);}else{logger[_0x1dc9('0xc')](_0x1dc9('0xd'),_0x2c6e6c,'request\x20sent');_0x316995(_0x43c405['result'][_0x1dc9('0x13')]);}})[_0x1dc9('0x14')](function(_0x5cccb9){logger[_0x1dc9('0x11')](_0x1dc9('0xd'),_0x2c6e6c,_0x5cccb9);_0x3d1772(_0x5cccb9);});});}exports[_0x1dc9('0x15')]=function(_0x197bcd){var _0x335590=this;return new Promise(function(_0x1e845a,_0x2442d0){return db[_0x1dc9('0x16')][_0x1dc9('0x17')](_0x197bcd[_0x1dc9('0x18')],{'raw':_0x197bcd[_0x1dc9('0x19')]?_0x197bcd[_0x1dc9('0x19')][_0x1dc9('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x49bd5b){logger[_0x1dc9('0xc')]('CreateOpenchannelQueueReport',_0x197bcd);logger['debug']('CreateOpenchannelQueueReport',_0x197bcd,JSON[_0x1dc9('0x10')](_0x49bd5b));_0x1e845a(_0x49bd5b);})[_0x1dc9('0x14')](function(_0x277499){logger[_0x1dc9('0x11')](_0x1dc9('0x15'),_0x277499[_0x1dc9('0x13')],_0x197bcd);_0x2442d0(_0x335590[_0x1dc9('0x11')](0x1f4,_0x277499['message']));});});};exports[_0x1dc9('0x1b')]=function(_0x2a4740){var _0x14181d=this;return new Promise(function(_0x4c6e65,_0x39f3f7){return db[_0x1dc9('0x16')][_0x1dc9('0x1c')](_0x2a4740[_0x1dc9('0x18')],{'raw':_0x2a4740[_0x1dc9('0x19')]?_0x2a4740[_0x1dc9('0x19')][_0x1dc9('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2a4740[_0x1dc9('0x19')]?_0x2a4740[_0x1dc9('0x19')]['where']||null:null,'attributes':_0x2a4740['options']?_0x2a4740[_0x1dc9('0x19')][_0x1dc9('0x1d')]||null:null,'limit':_0x2a4740[_0x1dc9('0x19')]?_0x2a4740[_0x1dc9('0x19')][_0x1dc9('0x1e')]||null:null})[_0x1dc9('0xb')](function(_0x10123d){logger[_0x1dc9('0xc')](_0x1dc9('0x1b'),_0x2a4740);logger['debug'](_0x1dc9('0x1b'),_0x2a4740,JSON[_0x1dc9('0x10')](_0x10123d));_0x4c6e65(_0x10123d);})[_0x1dc9('0x14')](function(_0x2d75bc){logger[_0x1dc9('0x11')](_0x1dc9('0x1b'),_0x2d75bc['message'],_0x2a4740);_0x39f3f7(_0x14181d['error'](0x1f4,_0x2d75bc[_0x1dc9('0x13')]));});});};
\ No newline at end of file
index a940434..f2356b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1da4=['../../components/auth/service','../../components/interaction/service','./openchannelTransferReport.controller','get','isAuthenticated','/describe','describe','post','create','put','/:id','update','delete','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x58533e,_0x5924e6){var _0x68a89d=function(_0x457399){while(--_0x457399){_0x58533e['push'](_0x58533e['shift']());}};_0x68a89d(++_0x5924e6);}(_0x1da4,0x19c));var _0x41da=function(_0x36595e,_0x286301){_0x36595e=_0x36595e-0x0;var _0x3d0f8e=_0x1da4[_0x36595e];return _0x3d0f8e;};'use strict';var multer=require(_0x41da('0x0'));var util=require(_0x41da('0x1'));var path=require(_0x41da('0x2'));var timeout=require(_0x41da('0x3'));var express=require('express');var router=express[_0x41da('0x4')]();var fs_extra=require(_0x41da('0x5'));var auth=require(_0x41da('0x6'));var interaction=require(_0x41da('0x7'));var config=require('../../config/environment');var controller=require(_0x41da('0x8'));router[_0x41da('0x9')]('/',auth[_0x41da('0xa')](),controller['index']);router[_0x41da('0x9')](_0x41da('0xb'),auth[_0x41da('0xa')](),controller[_0x41da('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x41da('0xd')]('/',auth['isAuthenticated'](),controller[_0x41da('0xe')]);router[_0x41da('0xf')](_0x41da('0x10'),auth['isAuthenticated'](),controller[_0x41da('0x11')]);router[_0x41da('0x12')](_0x41da('0x10'),auth[_0x41da('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xef5d=['describe','/:id','post','create','put','delete','destroy','exports','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','isAuthenticated','index','get','/describe'];(function(_0x3f1710,_0x3877a2){var _0x528458=function(_0x4b5d0f){while(--_0x4b5d0f){_0x3f1710['push'](_0x3f1710['shift']());}};_0x528458(++_0x3877a2);}(_0xef5d,0x120));var _0xdef5=function(_0x4517a6,_0x592633){_0x4517a6=_0x4517a6-0x0;var _0x241d0a=_0xef5d[_0x4517a6];return _0x241d0a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xdef5('0x0'));var timeout=require('connect-timeout');var express=require(_0xdef5('0x1'));var router=express[_0xdef5('0x2')]();var fs_extra=require(_0xdef5('0x3'));var auth=require(_0xdef5('0x4'));var interaction=require(_0xdef5('0x5'));var config=require(_0xdef5('0x6'));var controller=require(_0xdef5('0x7'));router['get']('/',auth[_0xdef5('0x8')](),controller[_0xdef5('0x9')]);router[_0xdef5('0xa')](_0xdef5('0xb'),auth['isAuthenticated'](),controller[_0xdef5('0xc')]);router['get'](_0xdef5('0xd'),auth[_0xdef5('0x8')](),controller['show']);router[_0xdef5('0xe')]('/',auth[_0xdef5('0x8')](),controller[_0xdef5('0xf')]);router[_0xdef5('0x10')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xdef5('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xdef5('0x12')]);module[_0xdef5('0x13')]=router;
\ No newline at end of file
index 5c21875..e4eb38a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x5700c5,_0x3f8f18){var _0x771cca=function(_0x5543f8){while(--_0x5543f8){_0x5700c5['push'](_0x5700c5['shift']());}};_0x771cca(++_0x3f8f18);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'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
+var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x5072da,_0x1faf0d){var _0x2d8fb4=function(_0x40c36a){while(--_0x40c36a){_0x5072da['push'](_0x5072da['shift']());}};_0x2d8fb4(++_0x1faf0d);}(_0x00bb,0x1d8));var _0xb00b=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x00bb[_0x550d12];return _0x12103d;};'use strict';var moment=require(_0xb00b('0x0'));var Sequelize=require(_0xb00b('0x1'));module[_0xb00b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb00b('0x3')]('account',_0xb00b('0x4'),_0xb00b('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xb00b('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xb00b('0x7')]}};
\ No newline at end of file
index 2bc0080..c0c2c3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd35a=['../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','reject','save','update','then','error','stack','name','send','map','OpenchannelTransferReport','rawAttributes','fieldName','type','key','keys','query','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','filters','merge','VIRTUAL','filter','includeAll','findAll','rows','catch','show','params','include','options','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0xd35a,0x179));var _0xad35=function(_0x412c8f,_0x11ec94){_0x412c8f=_0x412c8f-0x0;var _0x27c005=_0xd35a[_0x412c8f];return _0x27c005;};'use strict';var emlformat=require(_0xad35('0x0'));var rimraf=require(_0xad35('0x1'));var zipdir=require(_0xad35('0x2'));var jsonpatch=require(_0xad35('0x3'));var rp=require('request-promise');var moment=require(_0xad35('0x4'));var BPromise=require(_0xad35('0x5'));var Mustache=require(_0xad35('0x6'));var util=require(_0xad35('0x7'));var path=require(_0xad35('0x8'));var sox=require(_0xad35('0x9'));var csv=require('to-csv');var ejs=require(_0xad35('0xa'));var fs=require('fs');var fs_extra=require(_0xad35('0xb'));var _=require(_0xad35('0xc'));var squel=require(_0xad35('0xd'));var crypto=require(_0xad35('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xad35('0xf'));var toCsv=require(_0xad35('0x10'));var querystring=require(_0xad35('0x11'));var Papa=require(_0xad35('0x12'));var Redis=require(_0xad35('0x13'));var authService=require(_0xad35('0x14'));var qs=require(_0xad35('0x15'));var as=require(_0xad35('0x16'));var hardwareService=require(_0xad35('0x17'));var logger=require(_0xad35('0x18'))('api');var utils=require(_0xad35('0x19'));var config=require(_0xad35('0x1a'));var licenseUtil=require(_0xad35('0x1b'));var db=require(_0xad35('0x1c'))['db'];function respondWithStatusCode(_0x314ff3,_0x3ad9c9){_0x3ad9c9=_0x3ad9c9||0xcc;return function(_0x3fa2ea){if(_0x3fa2ea){return _0x314ff3[_0xad35('0x1d')](_0x3ad9c9);}return _0x314ff3['status'](_0x3ad9c9)[_0xad35('0x1e')]();};}function respondWithResult(_0x4d74ac,_0x252d14){_0x252d14=_0x252d14||0xc8;return function(_0x43bfd2){if(_0x43bfd2){return _0x4d74ac['status'](_0x252d14)[_0xad35('0x1f')](_0x43bfd2);}};}function respondWithFilteredResult(_0x3b4117,_0x3ea529){return function(_0x51f5dc){if(_0x51f5dc){var _0x1fa570=typeof _0x3ea529[_0xad35('0x20')]===_0xad35('0x21')&&typeof _0x3ea529[_0xad35('0x22')]===_0xad35('0x21');var _0x150ef7=_0x51f5dc['count'];var _0x789ef9=_0x1fa570?0x0:_0x3ea529[_0xad35('0x20')];var _0x563479=_0x1fa570?_0x51f5dc[_0xad35('0x23')]:_0x3ea529[_0xad35('0x20')]+_0x3ea529['limit'];var _0x5c7e10;if(_0x563479>=_0x150ef7){_0x563479=_0x150ef7;_0x5c7e10=0xc8;}else{_0x5c7e10=0xce;}_0x3b4117[_0xad35('0x24')](_0x5c7e10);return _0x3b4117[_0xad35('0x25')](_0xad35('0x26'),_0x789ef9+'-'+_0x563479+'/'+_0x150ef7)[_0xad35('0x1f')](_0x51f5dc);}return null;};}function patchUpdates(_0x2666aa){return function(_0x545fc5){try{jsonpatch['apply'](_0x545fc5,_0x2666aa,!![]);}catch(_0x404449){return BPromise[_0xad35('0x27')](_0x404449);}return _0x545fc5[_0xad35('0x28')]();};}function saveUpdates(_0x5c2c4a,_0x2e785e){return function(_0x12e713){if(_0x12e713){return _0x12e713[_0xad35('0x29')](_0x5c2c4a)['then'](function(_0x30a78b){return _0x30a78b;});}return null;};}function removeEntity(_0x5312db,_0x218cb7){return function(_0x42e025){if(_0x42e025){return _0x42e025['destroy']()[_0xad35('0x2a')](function(){_0x5312db['status'](0xcc)[_0xad35('0x1e')]();});}};}function handleEntityNotFound(_0x11089a,_0x3bb03b){return function(_0x5030ca){if(!_0x5030ca){_0x11089a[_0xad35('0x1d')](0x194);}return _0x5030ca;};}function handleError(_0xd550c9,_0x53b1c9){_0x53b1c9=_0x53b1c9||0x1f4;return function(_0x14ce17){logger[_0xad35('0x2b')](_0x14ce17[_0xad35('0x2c')]);if(_0x14ce17[_0xad35('0x2d')]){delete _0x14ce17[_0xad35('0x2d')];}_0xd550c9['status'](_0x53b1c9)[_0xad35('0x2e')](_0x14ce17);};}exports['index']=function(_0x1fe638,_0x37ed9f){var _0x1c7776={},_0x543bda={},_0x28af4f={'count':0x0,'rows':[]};var _0x522406=_[_0xad35('0x2f')](db[_0xad35('0x30')][_0xad35('0x31')],function(_0x53bd24){return{'name':_0x53bd24[_0xad35('0x32')],'type':_0x53bd24[_0xad35('0x33')][_0xad35('0x34')]};});_0x543bda['model']=_[_0xad35('0x2f')](_0x522406,_0xad35('0x2d'));_0x543bda['query']=_[_0xad35('0x35')](_0x1fe638[_0xad35('0x36')]);_0x543bda['filters']=_[_0xad35('0x37')](_0x543bda['model'],_0x543bda['query']);_0x1c7776[_0xad35('0x38')]=_[_0xad35('0x37')](_0x543bda[_0xad35('0x39')],qs['fields'](_0x1fe638[_0xad35('0x36')][_0xad35('0x3a')]));_0x1c7776['attributes']=_0x1c7776[_0xad35('0x38')][_0xad35('0x3b')]?_0x1c7776[_0xad35('0x38')]:_0x543bda[_0xad35('0x39')];if(!_0x1fe638[_0xad35('0x36')][_0xad35('0x3c')]('nolimit')){_0x1c7776[_0xad35('0x22')]=qs[_0xad35('0x22')](_0x1fe638[_0xad35('0x36')][_0xad35('0x22')]);_0x1c7776[_0xad35('0x20')]=qs[_0xad35('0x20')](_0x1fe638[_0xad35('0x36')][_0xad35('0x20')]);}_0x1c7776[_0xad35('0x3d')]=qs[_0xad35('0x3e')](_0x1fe638[_0xad35('0x36')][_0xad35('0x3e')]);_0x1c7776[_0xad35('0x3f')]=qs[_0xad35('0x40')](_['pick'](_0x1fe638[_0xad35('0x36')],_0x543bda[_0xad35('0x40')]),_0x522406);if(_0x1fe638[_0xad35('0x36')]['filter']){_0x1c7776[_0xad35('0x3f')]=_[_0xad35('0x41')](_0x1c7776[_0xad35('0x3f')],{'$or':_[_0xad35('0x2f')](_0x522406,function(_0x95d89e){if(_0x95d89e[_0xad35('0x33')]!==_0xad35('0x42')){var _0x1a90f9={};_0x1a90f9[_0x95d89e[_0xad35('0x2d')]]={'$like':'%'+_0x1fe638[_0xad35('0x36')][_0xad35('0x43')]+'%'};return _0x1a90f9;}})});}_0x1c7776=_[_0xad35('0x41')]({},_0x1c7776,_0x1fe638['options']);var _0x4ebb79={'where':_0x1c7776['where']};return db['OpenchannelTransferReport']['count'](_0x4ebb79)['then'](function(_0x37a062){_0x28af4f['count']=_0x37a062;if(_0x1fe638[_0xad35('0x36')][_0xad35('0x44')]){_0x1c7776['include']=[{'all':!![]}];}return db[_0xad35('0x30')][_0xad35('0x45')](_0x1c7776);})[_0xad35('0x2a')](function(_0x1485c9){_0x28af4f[_0xad35('0x46')]=_0x1485c9;return _0x28af4f;})['then'](respondWithFilteredResult(_0x37ed9f,_0x1c7776))[_0xad35('0x47')](handleError(_0x37ed9f,null));};exports[_0xad35('0x48')]=function(_0x5ad37f,_0x25cff3){var _0x490967={'raw':!![],'where':{'id':_0x5ad37f[_0xad35('0x49')]['id']}},_0x5e3180={};_0x5e3180[_0xad35('0x39')]=_[_0xad35('0x35')](db['OpenchannelTransferReport'][_0xad35('0x31')]);_0x5e3180[_0xad35('0x36')]=_[_0xad35('0x35')](_0x5ad37f[_0xad35('0x36')]);_0x5e3180[_0xad35('0x40')]=_[_0xad35('0x37')](_0x5e3180['model'],_0x5e3180[_0xad35('0x36')]);_0x490967['attributes']=_['intersection'](_0x5e3180['model'],qs[_0xad35('0x3a')](_0x5ad37f[_0xad35('0x36')][_0xad35('0x3a')]));_0x490967[_0xad35('0x38')]=_0x490967[_0xad35('0x38')]['length']?_0x490967[_0xad35('0x38')]:_0x5e3180[_0xad35('0x39')];if(_0x5ad37f['query'][_0xad35('0x44')]){_0x490967[_0xad35('0x4a')]=[{'all':!![]}];}_0x490967=_[_0xad35('0x41')]({},_0x490967,_0x5ad37f[_0xad35('0x4b')]);return db[_0xad35('0x30')][_0xad35('0x4c')](_0x490967)[_0xad35('0x2a')](handleEntityNotFound(_0x25cff3,null))[_0xad35('0x2a')](respondWithResult(_0x25cff3,null))[_0xad35('0x47')](handleError(_0x25cff3,null));};exports[_0xad35('0x4d')]=function(_0x281b6a,_0x4b8413){return db[_0xad35('0x30')][_0xad35('0x4d')](_0x281b6a['body'],{})[_0xad35('0x2a')](respondWithResult(_0x4b8413,0xc9))[_0xad35('0x47')](handleError(_0x4b8413,null));};exports[_0xad35('0x29')]=function(_0x343640,_0x5702fb){if(_0x343640[_0xad35('0x4e')]['id']){delete _0x343640[_0xad35('0x4e')]['id'];}return db[_0xad35('0x30')][_0xad35('0x4c')]({'where':{'id':_0x343640['params']['id']}})[_0xad35('0x2a')](handleEntityNotFound(_0x5702fb,null))[_0xad35('0x2a')](saveUpdates(_0x343640[_0xad35('0x4e')],null))[_0xad35('0x2a')](respondWithResult(_0x5702fb,null))[_0xad35('0x47')](handleError(_0x5702fb,null));};exports[_0xad35('0x4f')]=function(_0x484cd4,_0x14af59){return db[_0xad35('0x30')][_0xad35('0x4c')]({'where':{'id':_0x484cd4['params']['id']}})[_0xad35('0x2a')](handleEntityNotFound(_0x14af59,null))[_0xad35('0x2a')](removeEntity(_0x14af59,null))[_0xad35('0x47')](handleError(_0x14af59,null));};exports[_0xad35('0x50')]=function(_0x336b50,_0x262a7d){return db[_0xad35('0x30')][_0xad35('0x50')]()[_0xad35('0x2a')](respondWithResult(_0x262a7d,null))['catch'](handleError(_0x262a7d,null));};
\ No newline at end of file
+var _0x4762=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','reject','save','then','destroy','error','stack','name','send','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','OpenchannelTransferReport','includeAll','include','findAll','rows','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service'];(function(_0x4cce65,_0x40021e){var _0x4d1b45=function(_0x54d290){while(--_0x54d290){_0x4cce65['push'](_0x4cce65['shift']());}};_0x4d1b45(++_0x40021e);}(_0x4762,0x1b5));var _0x2476=function(_0x5b20be,_0x35b39e){_0x5b20be=_0x5b20be-0x0;var _0x5e7234=_0x4762[_0x5b20be];return _0x5e7234;};'use strict';var emlformat=require(_0x2476('0x0'));var rimraf=require(_0x2476('0x1'));var zipdir=require(_0x2476('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x2476('0x3'));var BPromise=require(_0x2476('0x4'));var Mustache=require(_0x2476('0x5'));var util=require(_0x2476('0x6'));var path=require(_0x2476('0x7'));var sox=require(_0x2476('0x8'));var csv=require(_0x2476('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2476('0xa'));var _=require(_0x2476('0xb'));var squel=require(_0x2476('0xc'));var crypto=require(_0x2476('0xd'));var jsforce=require(_0x2476('0xe'));var deskjs=require(_0x2476('0xf'));var toCsv=require(_0x2476('0x9'));var querystring=require(_0x2476('0x10'));var Papa=require(_0x2476('0x11'));var Redis=require('ioredis');var authService=require(_0x2476('0x12'));var qs=require(_0x2476('0x13'));var as=require(_0x2476('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2476('0x15'))(_0x2476('0x16'));var utils=require(_0x2476('0x17'));var config=require(_0x2476('0x18'));var licenseUtil=require(_0x2476('0x19'));var db=require(_0x2476('0x1a'))['db'];function respondWithStatusCode(_0x5c1355,_0xa2a0ca){_0xa2a0ca=_0xa2a0ca||0xcc;return function(_0x5193a3){if(_0x5193a3){return _0x5c1355[_0x2476('0x1b')](_0xa2a0ca);}return _0x5c1355['status'](_0xa2a0ca)[_0x2476('0x1c')]();};}function respondWithResult(_0x9937d7,_0x302a68){_0x302a68=_0x302a68||0xc8;return function(_0x8ce94c){if(_0x8ce94c){return _0x9937d7['status'](_0x302a68)[_0x2476('0x1d')](_0x8ce94c);}};}function respondWithFilteredResult(_0x2d5348,_0x5248d0){return function(_0x2d53eb){if(_0x2d53eb){var _0x3edd60=typeof _0x5248d0[_0x2476('0x1e')]===_0x2476('0x1f')&&typeof _0x5248d0[_0x2476('0x20')]==='undefined';var _0x42fad8=_0x2d53eb[_0x2476('0x21')];var _0x11845e=_0x3edd60?0x0:_0x5248d0['offset'];var _0x26177c=_0x3edd60?_0x2d53eb[_0x2476('0x21')]:_0x5248d0['offset']+_0x5248d0['limit'];var _0x2794d6;if(_0x26177c>=_0x42fad8){_0x26177c=_0x42fad8;_0x2794d6=0xc8;}else{_0x2794d6=0xce;}_0x2d5348[_0x2476('0x22')](_0x2794d6);return _0x2d5348['set'](_0x2476('0x23'),_0x11845e+'-'+_0x26177c+'/'+_0x42fad8)[_0x2476('0x1d')](_0x2d53eb);}return null;};}function patchUpdates(_0x394cd3){return function(_0x38f68e){try{jsonpatch['apply'](_0x38f68e,_0x394cd3,!![]);}catch(_0x1968d4){return BPromise[_0x2476('0x24')](_0x1968d4);}return _0x38f68e[_0x2476('0x25')]();};}function saveUpdates(_0x10975d,_0x4a8b45){return function(_0x1f6f7d){if(_0x1f6f7d){return _0x1f6f7d['update'](_0x10975d)[_0x2476('0x26')](function(_0xf0e7a6){return _0xf0e7a6;});}return null;};}function removeEntity(_0x1d1f2c,_0x5a3ba8){return function(_0x269db6){if(_0x269db6){return _0x269db6[_0x2476('0x27')]()[_0x2476('0x26')](function(){_0x1d1f2c[_0x2476('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f839e,_0x3942a9){return function(_0x115558){if(!_0x115558){_0x2f839e['sendStatus'](0x194);}return _0x115558;};}function handleError(_0x27aea4,_0x2f88da){_0x2f88da=_0x2f88da||0x1f4;return function(_0x1ee334){logger[_0x2476('0x28')](_0x1ee334[_0x2476('0x29')]);if(_0x1ee334[_0x2476('0x2a')]){delete _0x1ee334[_0x2476('0x2a')];}_0x27aea4[_0x2476('0x22')](_0x2f88da)[_0x2476('0x2b')](_0x1ee334);};}exports['index']=function(_0x156891,_0x599c02){var _0x29ff45={},_0x37cfa4={},_0x2fc1df={'count':0x0,'rows':[]};var _0x1e99e9=_[_0x2476('0x2c')](db['OpenchannelTransferReport']['rawAttributes'],function(_0x41ba84){return{'name':_0x41ba84[_0x2476('0x2d')],'type':_0x41ba84[_0x2476('0x2e')][_0x2476('0x2f')]};});_0x37cfa4[_0x2476('0x30')]=_[_0x2476('0x2c')](_0x1e99e9,_0x2476('0x2a'));_0x37cfa4[_0x2476('0x31')]=_[_0x2476('0x32')](_0x156891[_0x2476('0x31')]);_0x37cfa4[_0x2476('0x33')]=_[_0x2476('0x34')](_0x37cfa4['model'],_0x37cfa4[_0x2476('0x31')]);_0x29ff45[_0x2476('0x35')]=_[_0x2476('0x34')](_0x37cfa4[_0x2476('0x30')],qs[_0x2476('0x36')](_0x156891[_0x2476('0x31')][_0x2476('0x36')]));_0x29ff45[_0x2476('0x35')]=_0x29ff45[_0x2476('0x35')][_0x2476('0x37')]?_0x29ff45[_0x2476('0x35')]:_0x37cfa4['model'];if(!_0x156891['query'][_0x2476('0x38')](_0x2476('0x39'))){_0x29ff45[_0x2476('0x20')]=qs['limit'](_0x156891[_0x2476('0x31')]['limit']);_0x29ff45[_0x2476('0x1e')]=qs[_0x2476('0x1e')](_0x156891[_0x2476('0x31')][_0x2476('0x1e')]);}_0x29ff45['order']=qs[_0x2476('0x3a')](_0x156891[_0x2476('0x31')]['sort']);_0x29ff45[_0x2476('0x3b')]=qs['filters'](_[_0x2476('0x3c')](_0x156891[_0x2476('0x31')],_0x37cfa4[_0x2476('0x33')]),_0x1e99e9);if(_0x156891['query'][_0x2476('0x3d')]){_0x29ff45[_0x2476('0x3b')]=_[_0x2476('0x3e')](_0x29ff45[_0x2476('0x3b')],{'$or':_[_0x2476('0x2c')](_0x1e99e9,function(_0x421405){if(_0x421405['type']!==_0x2476('0x3f')){var _0x5b96f6={};_0x5b96f6[_0x421405[_0x2476('0x2a')]]={'$like':'%'+_0x156891[_0x2476('0x31')][_0x2476('0x3d')]+'%'};return _0x5b96f6;}})});}_0x29ff45=_['merge']({},_0x29ff45,_0x156891[_0x2476('0x40')]);var _0x4b225f={'where':_0x29ff45[_0x2476('0x3b')]};return db[_0x2476('0x41')][_0x2476('0x21')](_0x4b225f)[_0x2476('0x26')](function(_0x2bd292){_0x2fc1df[_0x2476('0x21')]=_0x2bd292;if(_0x156891[_0x2476('0x31')][_0x2476('0x42')]){_0x29ff45[_0x2476('0x43')]=[{'all':!![]}];}return db[_0x2476('0x41')][_0x2476('0x44')](_0x29ff45);})[_0x2476('0x26')](function(_0x482b82){_0x2fc1df[_0x2476('0x45')]=_0x482b82;return _0x2fc1df;})['then'](respondWithFilteredResult(_0x599c02,_0x29ff45))[_0x2476('0x46')](handleError(_0x599c02,null));};exports['show']=function(_0x5e5424,_0x488c11){var _0x220d8c={'raw':!![],'where':{'id':_0x5e5424[_0x2476('0x47')]['id']}},_0x2aad78={};_0x2aad78[_0x2476('0x30')]=_[_0x2476('0x32')](db[_0x2476('0x41')]['rawAttributes']);_0x2aad78[_0x2476('0x31')]=_[_0x2476('0x32')](_0x5e5424[_0x2476('0x31')]);_0x2aad78[_0x2476('0x33')]=_[_0x2476('0x34')](_0x2aad78['model'],_0x2aad78[_0x2476('0x31')]);_0x220d8c[_0x2476('0x35')]=_['intersection'](_0x2aad78[_0x2476('0x30')],qs[_0x2476('0x36')](_0x5e5424[_0x2476('0x31')]['fields']));_0x220d8c[_0x2476('0x35')]=_0x220d8c['attributes']['length']?_0x220d8c[_0x2476('0x35')]:_0x2aad78['model'];if(_0x5e5424['query'][_0x2476('0x42')]){_0x220d8c[_0x2476('0x43')]=[{'all':!![]}];}_0x220d8c=_[_0x2476('0x3e')]({},_0x220d8c,_0x5e5424[_0x2476('0x40')]);return db[_0x2476('0x41')][_0x2476('0x48')](_0x220d8c)['then'](handleEntityNotFound(_0x488c11,null))['then'](respondWithResult(_0x488c11,null))[_0x2476('0x46')](handleError(_0x488c11,null));};exports[_0x2476('0x49')]=function(_0x342f15,_0x4334f1){return db[_0x2476('0x41')]['create'](_0x342f15[_0x2476('0x4a')],{})['then'](respondWithResult(_0x4334f1,0xc9))[_0x2476('0x46')](handleError(_0x4334f1,null));};exports['update']=function(_0x292f31,_0x3fb0cb){if(_0x292f31['body']['id']){delete _0x292f31[_0x2476('0x4a')]['id'];}return db[_0x2476('0x41')][_0x2476('0x48')]({'where':{'id':_0x292f31[_0x2476('0x47')]['id']}})[_0x2476('0x26')](handleEntityNotFound(_0x3fb0cb,null))[_0x2476('0x26')](saveUpdates(_0x292f31[_0x2476('0x4a')],null))['then'](respondWithResult(_0x3fb0cb,null))[_0x2476('0x46')](handleError(_0x3fb0cb,null));};exports[_0x2476('0x27')]=function(_0x234c03,_0x9e7f91){return db['OpenchannelTransferReport'][_0x2476('0x48')]({'where':{'id':_0x234c03['params']['id']}})[_0x2476('0x26')](handleEntityNotFound(_0x9e7f91,null))['then'](removeEntity(_0x9e7f91,null))[_0x2476('0x46')](handleError(_0x9e7f91,null));};exports[_0x2476('0x4b')]=function(_0x15dfea,_0x4de2eb){return db[_0x2476('0x41')]['describe']()['then'](respondWithResult(_0x4de2eb,null))[_0x2476('0x46')](handleError(_0x4de2eb,null));};
\ No newline at end of file
index d501807..55c575c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dcb=['../../config/environment','./openchannelTransferReport.attributes','define','report_openchannel_transfer','uniqueid','lodash','util','../../config/logger','moment','path','rimraf'];(function(_0x23483a,_0x551158){var _0x30691c=function(_0x18c1a2){while(--_0x18c1a2){_0x23483a['push'](_0x23483a['shift']());}};_0x30691c(++_0x551158);}(_0x9dcb,0x118));var _0xb9dc=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x9dcb[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0xb9dc('0x0'));var util=require(_0xb9dc('0x1'));var logger=require(_0xb9dc('0x2'))('api');var moment=require(_0xb9dc('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb9dc('0x4'));var rimraf=require(_0xb9dc('0x5'));var config=require(_0xb9dc('0x6'));var attributes=require(_0xb9dc('0x7'));module['exports']=function(_0x5dc58c,_0x33a087){return _0x5dc58c[_0xb9dc('0x8')]('OpenchannelTransferReport',attributes,{'tableName':_0xb9dc('0x9'),'paranoid':![],'indexes':[{'name':_0xb9dc('0xa'),'fields':[_0xb9dc('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x55e2=['exports','define','OpenchannelTransferReport','uniqueid','../../config/logger','api','bluebird','request-promise','rimraf','./openchannelTransferReport.attributes'];(function(_0x3720f6,_0x4ab838){var _0x5a2527=function(_0x2cd4ed){while(--_0x2cd4ed){_0x3720f6['push'](_0x3720f6['shift']());}};_0x5a2527(++_0x4ab838);}(_0x55e2,0x126));var _0x255e=function(_0x3f759b,_0x4e6270){_0x3f759b=_0x3f759b-0x0;var _0x500929=_0x55e2[_0x3f759b];return _0x500929;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x255e('0x0'))(_0x255e('0x1'));var moment=require('moment');var BPromise=require(_0x255e('0x2'));var rp=require(_0x255e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x255e('0x4'));var config=require('../../config/environment');var attributes=require(_0x255e('0x5'));module[_0x255e('0x6')]=function(_0x1f6356,_0xfc6094){return _0x1f6356[_0x255e('0x7')](_0x255e('0x8'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0x255e('0x9'),'fields':[_0x255e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 614028e..bca5898 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5785=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','OpenchannelTransferReport,\x20%s,\x20%s','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x3ed98d,_0x2f4af7){var _0x2b81e0=function(_0x4e24ad){while(--_0x4e24ad){_0x3ed98d['push'](_0x3ed98d['shift']());}};_0x2b81e0(++_0x2f4af7);}(_0x5785,0x119));var _0x5578=function(_0x1ae5ab,_0xc5d441){_0x1ae5ab=_0x1ae5ab-0x0;var _0x1ce001=_0x5785[_0x1ae5ab];return _0x1ce001;};'use strict';var _=require(_0x5578('0x0'));var util=require(_0x5578('0x1'));var moment=require(_0x5578('0x2'));var BPromise=require(_0x5578('0x3'));var rs=require(_0x5578('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5578('0x5'))['db'];var utils=require(_0x5578('0x6'));var logger=require(_0x5578('0x7'))(_0x5578('0x8'));var config=require(_0x5578('0x9'));var jayson=require(_0x5578('0xa'));var client=jayson[_0x5578('0xb')][_0x5578('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x464ab2,_0x287860,_0x545581){return new BPromise(function(_0x520bbf,_0x3d37dc){return client[_0x5578('0xd')](_0x464ab2,_0x545581)['then'](function(_0x433ed0){logger['info'](_0x5578('0xe'),_0x287860,'request\x20sent');logger[_0x5578('0xf')](_0x5578('0x10'),_0x287860,_0x5578('0x11'),JSON['stringify'](_0x433ed0));if(_0x433ed0['error']){if(_0x433ed0[_0x5578('0x12')][_0x5578('0x13')]===0x1f4){logger[_0x5578('0x12')](_0x5578('0xe'),_0x287860,_0x433ed0[_0x5578('0x12')][_0x5578('0x14')]);return _0x3d37dc(_0x433ed0[_0x5578('0x12')][_0x5578('0x14')]);}logger[_0x5578('0x12')](_0x5578('0xe'),_0x287860,_0x433ed0['error'][_0x5578('0x14')]);return _0x520bbf(_0x433ed0[_0x5578('0x12')][_0x5578('0x14')]);}else{logger[_0x5578('0x15')](_0x5578('0xe'),_0x287860,_0x5578('0x11'));_0x520bbf(_0x433ed0[_0x5578('0x16')][_0x5578('0x14')]);}})[_0x5578('0x17')](function(_0xc9c5a4){logger['error'](_0x5578('0xe'),_0x287860,_0xc9c5a4);_0x3d37dc(_0xc9c5a4);});});}
\ No newline at end of file
+var _0xaba6=['../../mysqldb','../../config/utils','rpc','../../config/environment','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xaba6,0xe2));var _0x6aba=function(_0x2fc464,_0x2936c1){_0x2fc464=_0x2fc464-0x0;var _0x1bd429=_0xaba6[_0x2fc464];return _0x1bd429;};'use strict';var _=require(_0x6aba('0x0'));var util=require(_0x6aba('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6aba('0x2'))['db'];var utils=require(_0x6aba('0x3'));var logger=require('../../config/logger')(_0x6aba('0x4'));var config=require(_0x6aba('0x5'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x39c32a,_0x54416a,_0x3766d4){return new BPromise(function(_0x1a4fbc,_0x508dff){return client[_0x6aba('0x6')](_0x39c32a,_0x3766d4)[_0x6aba('0x7')](function(_0x4ea8eb){logger[_0x6aba('0x8')](_0x6aba('0x9'),_0x54416a,_0x6aba('0xa'));logger[_0x6aba('0xb')](_0x6aba('0xc'),_0x54416a,_0x6aba('0xa'),JSON[_0x6aba('0xd')](_0x4ea8eb));if(_0x4ea8eb['error']){if(_0x4ea8eb[_0x6aba('0xe')][_0x6aba('0xf')]===0x1f4){logger[_0x6aba('0xe')](_0x6aba('0x9'),_0x54416a,_0x4ea8eb['error'][_0x6aba('0x10')]);return _0x508dff(_0x4ea8eb[_0x6aba('0xe')]['message']);}logger[_0x6aba('0xe')](_0x6aba('0x9'),_0x54416a,_0x4ea8eb[_0x6aba('0xe')]['message']);return _0x1a4fbc(_0x4ea8eb[_0x6aba('0xe')][_0x6aba('0x10')]);}else{logger[_0x6aba('0x8')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x54416a,_0x6aba('0xa'));_0x1a4fbc(_0x4ea8eb[_0x6aba('0x11')][_0x6aba('0x10')]);}})[_0x6aba('0x12')](function(_0x379b17){logger[_0x6aba('0xe')](_0x6aba('0x9'),_0x54416a,_0x379b17);_0x508dff(_0x379b17);});});}
\ No newline at end of file
index 32e611e..743e977 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9eb4=['exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./pause.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete'];(function(_0x100a0f,_0x35ca4a){var _0x4e0adf=function(_0x5e40c3){while(--_0x5e40c3){_0x100a0f['push'](_0x100a0f['shift']());}};_0x4e0adf(++_0x35ca4a);}(_0x9eb4,0x7f));var _0x49eb=function(_0x3c4062,_0x3767fc){_0x3c4062=_0x3c4062-0x0;var _0x3f5bf3=_0x9eb4[_0x3c4062];return _0x3f5bf3;};'use strict';var multer=require(_0x49eb('0x0'));var util=require(_0x49eb('0x1'));var path=require(_0x49eb('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x49eb('0x3')]();var fs_extra=require(_0x49eb('0x4'));var auth=require(_0x49eb('0x5'));var interaction=require(_0x49eb('0x6'));var config=require('../../config/environment');var controller=require(_0x49eb('0x7'));router[_0x49eb('0x8')]('/',auth[_0x49eb('0x9')](),controller[_0x49eb('0xa')]);router[_0x49eb('0x8')](_0x49eb('0xb'),auth[_0x49eb('0x9')](),controller[_0x49eb('0xc')]);router['post']('/',auth[_0x49eb('0x9')](),controller[_0x49eb('0xd')]);router[_0x49eb('0xe')](_0x49eb('0xb'),auth[_0x49eb('0x9')](),controller[_0x49eb('0xf')]);router[_0x49eb('0x10')](_0x49eb('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x49eb('0x11')]=router;
\ No newline at end of file
+var _0x105d=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','update','delete'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x105d,0xf2));var _0xd105=function(_0x21bd89,_0x5cb3e3){_0x21bd89=_0x21bd89-0x0;var _0x5a07ee=_0x105d[_0x21bd89];return _0x5a07ee;};'use strict';var multer=require(_0xd105('0x0'));var util=require(_0xd105('0x1'));var path=require(_0xd105('0x2'));var timeout=require(_0xd105('0x3'));var express=require(_0xd105('0x4'));var router=express[_0xd105('0x5')]();var fs_extra=require(_0xd105('0x6'));var auth=require(_0xd105('0x7'));var interaction=require(_0xd105('0x8'));var config=require(_0xd105('0x9'));var controller=require('./pause.controller');router[_0xd105('0xa')]('/',auth[_0xd105('0xb')](),controller[_0xd105('0xc')]);router['get'](_0xd105('0xd'),auth[_0xd105('0xb')](),controller[_0xd105('0xe')]);router[_0xd105('0xf')]('/',auth[_0xd105('0xb')](),controller['create']);router['put']('/:id',auth[_0xd105('0xb')](),controller[_0xd105('0x10')]);router[_0xd105('0x11')](_0xd105('0xd'),auth[_0xd105('0xb')](),controller[_0xd105('0x12')]);module[_0xd105('0x13')]=router;
\ No newline at end of file
index b9efd3d..f360f12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eb7=['sequelize','exports','name','STRING'];(function(_0x1681fa,_0x163ae1){var _0xcd8d94=function(_0x507121){while(--_0x507121){_0x1681fa['push'](_0x1681fa['shift']());}};_0xcd8d94(++_0x163ae1);}(_0x1eb7,0xc0));var _0x71eb=function(_0x10a4b6,_0xe3e8d0){_0x10a4b6=_0x10a4b6-0x0;var _0xf96d03=_0x1eb7[_0x10a4b6];return _0xf96d03;};'use strict';var Sequelize=require(_0x71eb('0x0'));module[_0x71eb('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x71eb('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x71eb('0x3')]}};
\ No newline at end of file
+var _0x66cf=['name','exports','STRING'];(function(_0x54cd5a,_0x371362){var _0x58f131=function(_0x396395){while(--_0x396395){_0x54cd5a['push'](_0x54cd5a['shift']());}};_0x58f131(++_0x371362);}(_0x66cf,0x79));var _0xf66c=function(_0x560e86,_0x57f2b3){_0x560e86=_0x560e86-0x0;var _0x60276b=_0x66cf[_0x560e86];return _0x60276b;};'use strict';var Sequelize=require('sequelize');module[_0xf66c('0x0')]={'name':{'type':Sequelize[_0xf66c('0x1')],'unique':_0xf66c('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xf66c('0x1')]}};
\ No newline at end of file
index f191f44..fd3350b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d58=['mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','Pauses','end','sendStatus','error','stack','name','send','index','Pause','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','map','type','filter','options','includeAll','include','findAll','rows','catch','show','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x55bbea,_0x4e6103){var _0x466446=function(_0x77371d){while(--_0x77371d){_0x55bbea['push'](_0x55bbea['shift']());}};_0x466446(++_0x4e6103);}(_0x0d58,0x194));var _0x80d5=function(_0x38987f,_0xc79720){_0x38987f=_0x38987f-0x0;var _0x4cb697=_0x0d58[_0x38987f];return _0x4cb697;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x80d5('0x0'));var zipdir=require(_0x80d5('0x1'));var jsonpatch=require(_0x80d5('0x2'));var rp=require(_0x80d5('0x3'));var moment=require(_0x80d5('0x4'));var BPromise=require(_0x80d5('0x5'));var Mustache=require(_0x80d5('0x6'));var util=require('util');var path=require(_0x80d5('0x7'));var sox=require(_0x80d5('0x8'));var csv=require(_0x80d5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x80d5('0xa'));var _=require(_0x80d5('0xb'));var squel=require(_0x80d5('0xc'));var crypto=require('crypto');var jsforce=require(_0x80d5('0xd'));var deskjs=require(_0x80d5('0xe'));var toCsv=require(_0x80d5('0x9'));var querystring=require(_0x80d5('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x80d5('0x10'));var logger=require('../../config/logger')(_0x80d5('0x11'));var utils=require(_0x80d5('0x12'));var config=require(_0x80d5('0x13'));var licenseUtil=require(_0x80d5('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x281372,_0x12f614){_0x12f614=_0x12f614||0xcc;return function(_0x42b2ef){if(_0x42b2ef){return _0x281372['sendStatus'](_0x12f614);}return _0x281372['status'](_0x12f614)['end']();};}function respondWithResult(_0x411296,_0x2df72f){_0x2df72f=_0x2df72f||0xc8;return function(_0x2e4fdd){if(_0x2e4fdd){return _0x411296[_0x80d5('0x15')](_0x2df72f)[_0x80d5('0x16')](_0x2e4fdd);}};}function respondWithFilteredResult(_0x329101,_0x5f095c){return function(_0x5615c4){if(_0x5615c4){var _0x15facd=typeof _0x5f095c[_0x80d5('0x17')]===_0x80d5('0x18')&&typeof _0x5f095c['limit']===_0x80d5('0x18');var _0x4ba180=_0x5615c4[_0x80d5('0x19')];var _0x35d900=_0x15facd?0x0:_0x5f095c[_0x80d5('0x17')];var _0x34e8f6=_0x15facd?_0x5615c4['count']:_0x5f095c['offset']+_0x5f095c[_0x80d5('0x1a')];var _0x1814ac;if(_0x34e8f6>=_0x4ba180){_0x34e8f6=_0x4ba180;_0x1814ac=0xc8;}else{_0x1814ac=0xce;}_0x329101['status'](_0x1814ac);return _0x329101['set'](_0x80d5('0x1b'),_0x35d900+'-'+_0x34e8f6+'/'+_0x4ba180)[_0x80d5('0x16')](_0x5615c4);}return null;};}function patchUpdates(_0x251e3b){return function(_0x166302){try{jsonpatch[_0x80d5('0x1c')](_0x166302,_0x251e3b,!![]);}catch(_0x427c15){return BPromise[_0x80d5('0x1d')](_0x427c15);}return _0x166302[_0x80d5('0x1e')]();};}function saveUpdates(_0x530899,_0x39794a){return function(_0x3b3686){if(_0x3b3686){return _0x3b3686[_0x80d5('0x1f')](_0x530899)[_0x80d5('0x20')](function(_0x56f769){return _0x56f769;});}return null;};}function removeEntity(_0x16bb40,_0x50d358){return function(_0x58c1e4){if(_0x58c1e4){return _0x58c1e4[_0x80d5('0x21')]()[_0x80d5('0x20')](function(){var _0x1242d0=_0x58c1e4['get']({'plain':!![]});var _0x51e7f6=_0x80d5('0x22');return db['UserProfileResource'][_0x80d5('0x21')]({'where':{'type':_0x51e7f6,'resourceId':_0x1242d0['id']}})['then'](function(){return _0x58c1e4;});})[_0x80d5('0x20')](function(){_0x16bb40[_0x80d5('0x15')](0xcc)[_0x80d5('0x23')]();});}};}function handleEntityNotFound(_0x491d8f,_0x314d98){return function(_0xcf9306){if(!_0xcf9306){_0x491d8f[_0x80d5('0x24')](0x194);}return _0xcf9306;};}function handleError(_0x31d4dd,_0x883df8){_0x883df8=_0x883df8||0x1f4;return function(_0xd4bfbf){logger[_0x80d5('0x25')](_0xd4bfbf[_0x80d5('0x26')]);if(_0xd4bfbf[_0x80d5('0x27')]){delete _0xd4bfbf[_0x80d5('0x27')];}_0x31d4dd[_0x80d5('0x15')](_0x883df8)[_0x80d5('0x28')](_0xd4bfbf);};}exports[_0x80d5('0x29')]=function(_0x1d8e17,_0x12b55f){var _0x586aa2={},_0x14723b={},_0x4af12e={'count':0x0,'rows':[]};var _0x22bb9b=_['map'](db[_0x80d5('0x2a')][_0x80d5('0x2b')],function(_0x4e6c87){return{'name':_0x4e6c87[_0x80d5('0x2c')],'type':_0x4e6c87['type'][_0x80d5('0x2d')]};});_0x14723b[_0x80d5('0x2e')]=_['map'](_0x22bb9b,_0x80d5('0x27'));_0x14723b[_0x80d5('0x2f')]=_[_0x80d5('0x30')](_0x1d8e17[_0x80d5('0x2f')]);_0x14723b[_0x80d5('0x31')]=_[_0x80d5('0x32')](_0x14723b['model'],_0x14723b['query']);_0x586aa2[_0x80d5('0x33')]=_[_0x80d5('0x32')](_0x14723b[_0x80d5('0x2e')],qs[_0x80d5('0x34')](_0x1d8e17[_0x80d5('0x2f')][_0x80d5('0x34')]));_0x586aa2[_0x80d5('0x33')]=_0x586aa2[_0x80d5('0x33')][_0x80d5('0x35')]?_0x586aa2[_0x80d5('0x33')]:_0x14723b[_0x80d5('0x2e')];if(!_0x1d8e17['query'][_0x80d5('0x36')](_0x80d5('0x37'))){_0x586aa2[_0x80d5('0x1a')]=qs[_0x80d5('0x1a')](_0x1d8e17[_0x80d5('0x2f')]['limit']);_0x586aa2[_0x80d5('0x17')]=qs[_0x80d5('0x17')](_0x1d8e17[_0x80d5('0x2f')][_0x80d5('0x17')]);}_0x586aa2[_0x80d5('0x38')]=qs[_0x80d5('0x39')](_0x1d8e17[_0x80d5('0x2f')][_0x80d5('0x39')]);_0x586aa2[_0x80d5('0x3a')]=qs[_0x80d5('0x31')](_['pick'](_0x1d8e17[_0x80d5('0x2f')],_0x14723b[_0x80d5('0x31')]),_0x22bb9b);if(_0x1d8e17[_0x80d5('0x2f')]['filter']){_0x586aa2[_0x80d5('0x3a')]=_[_0x80d5('0x3b')](_0x586aa2[_0x80d5('0x3a')],{'$or':_[_0x80d5('0x3c')](_0x22bb9b,function(_0x4eea7){if(_0x4eea7[_0x80d5('0x3d')]!=='VIRTUAL'){var _0x24aed0={};_0x24aed0[_0x4eea7[_0x80d5('0x27')]]={'$like':'%'+_0x1d8e17[_0x80d5('0x2f')][_0x80d5('0x3e')]+'%'};return _0x24aed0;}})});}_0x586aa2=_[_0x80d5('0x3b')]({},_0x586aa2,_0x1d8e17[_0x80d5('0x3f')]);var _0x459fef={'where':_0x586aa2['where']};return db['Pause']['count'](_0x459fef)[_0x80d5('0x20')](function(_0x406119){_0x4af12e[_0x80d5('0x19')]=_0x406119;if(_0x1d8e17[_0x80d5('0x2f')][_0x80d5('0x40')]){_0x586aa2[_0x80d5('0x41')]=[{'all':!![]}];}return db['Pause'][_0x80d5('0x42')](_0x586aa2);})[_0x80d5('0x20')](function(_0x2b14df){_0x4af12e[_0x80d5('0x43')]=_0x2b14df;return _0x4af12e;})['then'](respondWithFilteredResult(_0x12b55f,_0x586aa2))[_0x80d5('0x44')](handleError(_0x12b55f,null));};exports[_0x80d5('0x45')]=function(_0x348cc8,_0x28b27d){var _0x59cf05={'raw':!![],'where':{'id':_0x348cc8['params']['id']}},_0x2f5347={};_0x2f5347['model']=_[_0x80d5('0x30')](db['Pause'][_0x80d5('0x2b')]);_0x2f5347[_0x80d5('0x2f')]=_[_0x80d5('0x30')](_0x348cc8[_0x80d5('0x2f')]);_0x2f5347['filters']=_[_0x80d5('0x32')](_0x2f5347['model'],_0x2f5347['query']);_0x59cf05[_0x80d5('0x33')]=_[_0x80d5('0x32')](_0x2f5347[_0x80d5('0x2e')],qs[_0x80d5('0x34')](_0x348cc8[_0x80d5('0x2f')][_0x80d5('0x34')]));_0x59cf05[_0x80d5('0x33')]=_0x59cf05[_0x80d5('0x33')][_0x80d5('0x35')]?_0x59cf05[_0x80d5('0x33')]:_0x2f5347[_0x80d5('0x2e')];if(_0x348cc8[_0x80d5('0x2f')][_0x80d5('0x40')]){_0x59cf05[_0x80d5('0x41')]=[{'all':!![]}];}_0x59cf05=_['merge']({},_0x59cf05,_0x348cc8[_0x80d5('0x3f')]);return db[_0x80d5('0x2a')]['find'](_0x59cf05)[_0x80d5('0x20')](handleEntityNotFound(_0x28b27d,null))[_0x80d5('0x20')](respondWithResult(_0x28b27d,null))[_0x80d5('0x44')](handleError(_0x28b27d,null));};exports[_0x80d5('0x46')]=function(_0x124b47,_0x2a2036){return db['Pause'][_0x80d5('0x46')](_0x124b47[_0x80d5('0x47')],{})[_0x80d5('0x20')](function(_0x13e2ba){var _0x2eda81=_0x124b47[_0x80d5('0x48')]['get']({'plain':!![]});if(!_0x2eda81)throw new Error(_0x80d5('0x49'));if(_0x2eda81['role']===_0x80d5('0x48')){var _0x1135f4=_0x13e2ba[_0x80d5('0x4a')]({'plain':!![]});var _0x430fa9='Pauses';return db[_0x80d5('0x4b')][_0x80d5('0x4c')]({'where':{'name':_0x430fa9,'userProfileId':_0x2eda81[_0x80d5('0x4d')]},'raw':!![]})[_0x80d5('0x20')](function(_0x3a7e13){if(_0x3a7e13&&_0x3a7e13[_0x80d5('0x4e')]===0x0){return db[_0x80d5('0x4f')]['create']({'name':_0x1135f4['name'],'resourceId':_0x1135f4['id'],'type':_0x3a7e13['name'],'sectionId':_0x3a7e13['id']},{})[_0x80d5('0x20')](function(){return _0x13e2ba;});}else{return _0x13e2ba;}})['catch'](function(_0xcd7e51){logger[_0x80d5('0x25')](_0x80d5('0x50'),_0xcd7e51);throw _0xcd7e51;});}return _0x13e2ba;})[_0x80d5('0x20')](respondWithResult(_0x2a2036,0xc9))[_0x80d5('0x44')](handleError(_0x2a2036,null));};exports[_0x80d5('0x1f')]=function(_0x588392,_0x13e1a5){if(_0x588392[_0x80d5('0x47')]['id']){delete _0x588392['body']['id'];}return db['Pause']['find']({'where':{'id':_0x588392[_0x80d5('0x51')]['id']}})[_0x80d5('0x20')](handleEntityNotFound(_0x13e1a5,null))[_0x80d5('0x20')](saveUpdates(_0x588392[_0x80d5('0x47')],null))['then'](respondWithResult(_0x13e1a5,null))[_0x80d5('0x44')](handleError(_0x13e1a5,null));};exports[_0x80d5('0x21')]=function(_0x4852c2,_0x3ebc63){return db[_0x80d5('0x2a')][_0x80d5('0x4c')]({'where':{'id':_0x4852c2['params']['id']}})[_0x80d5('0x20')](handleEntityNotFound(_0x3ebc63,null))[_0x80d5('0x20')](removeEntity(_0x3ebc63,null))[_0x80d5('0x44')](handleError(_0x3ebc63,null));};
\ No newline at end of file
+var _0x2ae4=['params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','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','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','update','then','get','Pauses','UserProfileResource','destroy','error','stack','name','send','index','map','Pause','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show'];(function(_0x174a72,_0x46034c){var _0x32cecd=function(_0x188a47){while(--_0x188a47){_0x174a72['push'](_0x174a72['shift']());}};_0x32cecd(++_0x46034c);}(_0x2ae4,0xaf));var _0x42ae=function(_0x23aa8a,_0x2b14bc){_0x23aa8a=_0x23aa8a-0x0;var _0x15f585=_0x2ae4[_0x23aa8a];return _0x15f585;};'use strict';var emlformat=require(_0x42ae('0x0'));var rimraf=require(_0x42ae('0x1'));var zipdir=require(_0x42ae('0x2'));var jsonpatch=require(_0x42ae('0x3'));var rp=require(_0x42ae('0x4'));var moment=require('moment');var BPromise=require(_0x42ae('0x5'));var Mustache=require(_0x42ae('0x6'));var util=require(_0x42ae('0x7'));var path=require(_0x42ae('0x8'));var sox=require(_0x42ae('0x9'));var csv=require(_0x42ae('0xa'));var ejs=require(_0x42ae('0xb'));var fs=require('fs');var fs_extra=require(_0x42ae('0xc'));var _=require(_0x42ae('0xd'));var squel=require('squel');var crypto=require(_0x42ae('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x42ae('0xf'));var toCsv=require(_0x42ae('0xa'));var querystring=require(_0x42ae('0x10'));var Papa=require('papaparse');var Redis=require(_0x42ae('0x11'));var authService=require(_0x42ae('0x12'));var qs=require(_0x42ae('0x13'));var as=require(_0x42ae('0x14'));var hardwareService=require(_0x42ae('0x15'));var logger=require(_0x42ae('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x42ae('0x17'));var licenseUtil=require(_0x42ae('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x599916,_0x4c2edf){_0x4c2edf=_0x4c2edf||0xcc;return function(_0x4d87a4){if(_0x4d87a4){return _0x599916[_0x42ae('0x19')](_0x4c2edf);}return _0x599916[_0x42ae('0x1a')](_0x4c2edf)[_0x42ae('0x1b')]();};}function respondWithResult(_0x7d1c60,_0x113ae5){_0x113ae5=_0x113ae5||0xc8;return function(_0x1eb76d){if(_0x1eb76d){return _0x7d1c60[_0x42ae('0x1a')](_0x113ae5)[_0x42ae('0x1c')](_0x1eb76d);}};}function respondWithFilteredResult(_0x5d6fd4,_0x2cb08c){return function(_0x50d58c){if(_0x50d58c){var _0x695426=typeof _0x2cb08c[_0x42ae('0x1d')]===_0x42ae('0x1e')&&typeof _0x2cb08c[_0x42ae('0x1f')]===_0x42ae('0x1e');var _0x218f62=_0x50d58c[_0x42ae('0x20')];var _0x4682dd=_0x695426?0x0:_0x2cb08c[_0x42ae('0x1d')];var _0x423599=_0x695426?_0x50d58c[_0x42ae('0x20')]:_0x2cb08c['offset']+_0x2cb08c[_0x42ae('0x1f')];var _0x3e0f8f;if(_0x423599>=_0x218f62){_0x423599=_0x218f62;_0x3e0f8f=0xc8;}else{_0x3e0f8f=0xce;}_0x5d6fd4[_0x42ae('0x1a')](_0x3e0f8f);return _0x5d6fd4['set'](_0x42ae('0x21'),_0x4682dd+'-'+_0x423599+'/'+_0x218f62)[_0x42ae('0x1c')](_0x50d58c);}return null;};}function patchUpdates(_0x211418){return function(_0x4f4a3b){try{jsonpatch[_0x42ae('0x22')](_0x4f4a3b,_0x211418,!![]);}catch(_0x2b3592){return BPromise['reject'](_0x2b3592);}return _0x4f4a3b['save']();};}function saveUpdates(_0x56e73b,_0x4e71b1){return function(_0x5964e0){if(_0x5964e0){return _0x5964e0[_0x42ae('0x23')](_0x56e73b)[_0x42ae('0x24')](function(_0x4deed0){return _0x4deed0;});}return null;};}function removeEntity(_0x440f82,_0x3d4221){return function(_0x248eec){if(_0x248eec){return _0x248eec['destroy']()[_0x42ae('0x24')](function(){var _0x1f0016=_0x248eec[_0x42ae('0x25')]({'plain':!![]});var _0x485017=_0x42ae('0x26');return db[_0x42ae('0x27')][_0x42ae('0x28')]({'where':{'type':_0x485017,'resourceId':_0x1f0016['id']}})[_0x42ae('0x24')](function(){return _0x248eec;});})['then'](function(){_0x440f82[_0x42ae('0x1a')](0xcc)[_0x42ae('0x1b')]();});}};}function handleEntityNotFound(_0x29ea1f,_0x2b5460){return function(_0x421dc7){if(!_0x421dc7){_0x29ea1f[_0x42ae('0x19')](0x194);}return _0x421dc7;};}function handleError(_0x31f4ec,_0x35efec){_0x35efec=_0x35efec||0x1f4;return function(_0x17a256){logger[_0x42ae('0x29')](_0x17a256[_0x42ae('0x2a')]);if(_0x17a256['name']){delete _0x17a256[_0x42ae('0x2b')];}_0x31f4ec['status'](_0x35efec)[_0x42ae('0x2c')](_0x17a256);};}exports[_0x42ae('0x2d')]=function(_0x3a9f76,_0x481891){var _0xde250b={},_0x535fcc={},_0x2d376c={'count':0x0,'rows':[]};var _0x2dbb60=_[_0x42ae('0x2e')](db[_0x42ae('0x2f')][_0x42ae('0x30')],function(_0x305b50){return{'name':_0x305b50[_0x42ae('0x31')],'type':_0x305b50[_0x42ae('0x32')][_0x42ae('0x33')]};});_0x535fcc[_0x42ae('0x34')]=_['map'](_0x2dbb60,_0x42ae('0x2b'));_0x535fcc[_0x42ae('0x35')]=_[_0x42ae('0x36')](_0x3a9f76[_0x42ae('0x35')]);_0x535fcc[_0x42ae('0x37')]=_[_0x42ae('0x38')](_0x535fcc['model'],_0x535fcc['query']);_0xde250b[_0x42ae('0x39')]=_['intersection'](_0x535fcc[_0x42ae('0x34')],qs[_0x42ae('0x3a')](_0x3a9f76[_0x42ae('0x35')][_0x42ae('0x3a')]));_0xde250b[_0x42ae('0x39')]=_0xde250b[_0x42ae('0x39')][_0x42ae('0x3b')]?_0xde250b['attributes']:_0x535fcc[_0x42ae('0x34')];if(!_0x3a9f76['query'][_0x42ae('0x3c')]('nolimit')){_0xde250b[_0x42ae('0x1f')]=qs['limit'](_0x3a9f76[_0x42ae('0x35')][_0x42ae('0x1f')]);_0xde250b[_0x42ae('0x1d')]=qs[_0x42ae('0x1d')](_0x3a9f76[_0x42ae('0x35')][_0x42ae('0x1d')]);}_0xde250b['order']=qs['sort'](_0x3a9f76['query'][_0x42ae('0x3d')]);_0xde250b[_0x42ae('0x3e')]=qs[_0x42ae('0x37')](_[_0x42ae('0x3f')](_0x3a9f76['query'],_0x535fcc[_0x42ae('0x37')]),_0x2dbb60);if(_0x3a9f76['query'][_0x42ae('0x40')]){_0xde250b[_0x42ae('0x3e')]=_[_0x42ae('0x41')](_0xde250b[_0x42ae('0x3e')],{'$or':_[_0x42ae('0x2e')](_0x2dbb60,function(_0x310d08){if(_0x310d08[_0x42ae('0x32')]!==_0x42ae('0x42')){var _0x4730e2={};_0x4730e2[_0x310d08[_0x42ae('0x2b')]]={'$like':'%'+_0x3a9f76['query'][_0x42ae('0x40')]+'%'};return _0x4730e2;}})});}_0xde250b=_[_0x42ae('0x41')]({},_0xde250b,_0x3a9f76[_0x42ae('0x43')]);var _0xbedc25={'where':_0xde250b[_0x42ae('0x3e')]};return db['Pause'][_0x42ae('0x20')](_0xbedc25)['then'](function(_0x4c262a){_0x2d376c[_0x42ae('0x20')]=_0x4c262a;if(_0x3a9f76[_0x42ae('0x35')][_0x42ae('0x44')]){_0xde250b[_0x42ae('0x45')]=[{'all':!![]}];}return db[_0x42ae('0x2f')][_0x42ae('0x46')](_0xde250b);})[_0x42ae('0x24')](function(_0x1619a1){_0x2d376c[_0x42ae('0x47')]=_0x1619a1;return _0x2d376c;})[_0x42ae('0x24')](respondWithFilteredResult(_0x481891,_0xde250b))[_0x42ae('0x48')](handleError(_0x481891,null));};exports[_0x42ae('0x49')]=function(_0x59adbd,_0x2be726){var _0x33ebba={'raw':!![],'where':{'id':_0x59adbd[_0x42ae('0x4a')]['id']}},_0x2cb829={};_0x2cb829[_0x42ae('0x34')]=_['keys'](db[_0x42ae('0x2f')][_0x42ae('0x30')]);_0x2cb829[_0x42ae('0x35')]=_[_0x42ae('0x36')](_0x59adbd[_0x42ae('0x35')]);_0x2cb829[_0x42ae('0x37')]=_[_0x42ae('0x38')](_0x2cb829['model'],_0x2cb829['query']);_0x33ebba[_0x42ae('0x39')]=_[_0x42ae('0x38')](_0x2cb829['model'],qs[_0x42ae('0x3a')](_0x59adbd[_0x42ae('0x35')][_0x42ae('0x3a')]));_0x33ebba[_0x42ae('0x39')]=_0x33ebba['attributes'][_0x42ae('0x3b')]?_0x33ebba[_0x42ae('0x39')]:_0x2cb829[_0x42ae('0x34')];if(_0x59adbd[_0x42ae('0x35')][_0x42ae('0x44')]){_0x33ebba[_0x42ae('0x45')]=[{'all':!![]}];}_0x33ebba=_[_0x42ae('0x41')]({},_0x33ebba,_0x59adbd[_0x42ae('0x43')]);return db[_0x42ae('0x2f')][_0x42ae('0x4b')](_0x33ebba)[_0x42ae('0x24')](handleEntityNotFound(_0x2be726,null))[_0x42ae('0x24')](respondWithResult(_0x2be726,null))[_0x42ae('0x48')](handleError(_0x2be726,null));};exports[_0x42ae('0x4c')]=function(_0x43e9e4,_0x37be72){return db['Pause'][_0x42ae('0x4c')](_0x43e9e4[_0x42ae('0x4d')],{})[_0x42ae('0x24')](function(_0x5b7348){var _0x3d5b0b=_0x43e9e4[_0x42ae('0x4e')][_0x42ae('0x25')]({'plain':!![]});if(!_0x3d5b0b)throw new Error(_0x42ae('0x4f'));if(_0x3d5b0b[_0x42ae('0x50')]===_0x42ae('0x4e')){var _0x297095=_0x5b7348[_0x42ae('0x25')]({'plain':!![]});var _0x150a62='Pauses';return db['UserProfileSection'][_0x42ae('0x4b')]({'where':{'name':_0x150a62,'userProfileId':_0x3d5b0b['userProfileId']},'raw':!![]})[_0x42ae('0x24')](function(_0x3bb673){if(_0x3bb673&&_0x3bb673[_0x42ae('0x51')]===0x0){return db[_0x42ae('0x27')][_0x42ae('0x4c')]({'name':_0x297095[_0x42ae('0x2b')],'resourceId':_0x297095['id'],'type':_0x3bb673[_0x42ae('0x2b')],'sectionId':_0x3bb673['id']},{})[_0x42ae('0x24')](function(){return _0x5b7348;});}else{return _0x5b7348;}})[_0x42ae('0x48')](function(_0x1157b3){logger[_0x42ae('0x29')](_0x42ae('0x52'),_0x1157b3);throw _0x1157b3;});}return _0x5b7348;})['then'](respondWithResult(_0x37be72,0xc9))[_0x42ae('0x48')](handleError(_0x37be72,null));};exports[_0x42ae('0x23')]=function(_0x576247,_0x3b9bb9){if(_0x576247[_0x42ae('0x4d')]['id']){delete _0x576247['body']['id'];}return db[_0x42ae('0x2f')][_0x42ae('0x4b')]({'where':{'id':_0x576247['params']['id']}})['then'](handleEntityNotFound(_0x3b9bb9,null))[_0x42ae('0x24')](saveUpdates(_0x576247[_0x42ae('0x4d')],null))[_0x42ae('0x24')](respondWithResult(_0x3b9bb9,null))[_0x42ae('0x48')](handleError(_0x3b9bb9,null));};exports[_0x42ae('0x28')]=function(_0x8fa698,_0x608b6b){return db['Pause'][_0x42ae('0x4b')]({'where':{'id':_0x8fa698[_0x42ae('0x4a')]['id']}})[_0x42ae('0x24')](handleEntityNotFound(_0x608b6b,null))['then'](removeEntity(_0x608b6b,null))[_0x42ae('0x48')](handleError(_0x608b6b,null));};
\ No newline at end of file
index 1a1f9f9..50a615c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./pause.attributes','exports','define','tools_pauses'];(function(_0x5229ab,_0x5b4487){var _0x2b6a5e=function(_0x2c8675){while(--_0x2c8675){_0x5229ab['push'](_0x5229ab['shift']());}};_0x2b6a5e(++_0x5b4487);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3d00db,_0x3692b3){_0x3d00db=_0x3d00db-0x0;var _0x41f115=_0x5fc3[_0x3d00db];return _0x41f115;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('Pause',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6aa7=['Pause','tools_pauses','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','define'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x6aa7,0x178));var _0x76aa=function(_0x19dc46,_0x11f2a0){_0x19dc46=_0x19dc46-0x0;var _0x53ef8e=_0x6aa7[_0x19dc46];return _0x53ef8e;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var logger=require(_0x76aa('0x1'))(_0x76aa('0x2'));var moment=require(_0x76aa('0x3'));var BPromise=require(_0x76aa('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x76aa('0x5'));var rimraf=require(_0x76aa('0x6'));var config=require(_0x76aa('0x7'));var attributes=require('./pause.attributes');module['exports']=function(_0x1aceaa,_0x4d53f6){return _0x1aceaa[_0x76aa('0x8')](_0x76aa('0x9'),attributes,{'tableName':_0x76aa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1bb8d9c..4dd0668 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(_0x3068c2,_0x2eb73e){var _0x47de50=function(_0x68eb2a){while(--_0x68eb2a){_0x3068c2['push'](_0x3068c2['shift']());}};_0x47de50(++_0x2eb73e);}(_0x7a54,0x106));var _0x47a5=function(_0x327fcf,_0xc46430){_0x327fcf=_0x327fcf-0x0;var _0x3a0b07=_0x7a54[_0x327fcf];return _0x3a0b07;};'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(_0x5f60b8,_0xcc2d65){var _0x1273a5=function(_0x261b7c){while(--_0x261b7c){_0x5f60b8['push'](_0x5f60b8['shift']());}};_0x1273a5(++_0xcc2d65);}(_0x7a54,0x106));var _0x47a5=function(_0x22d58c,_0x2cb3ef){_0x22d58c=_0x22d58c-0x0;var _0x181c22=_0x7a54[_0x22d58c];return _0x181c22;};'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 324a63d..88ebeb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207c=['file','upload','post','webhookPost','put','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','index','get','/webhook','/:id','isAuthenticated','/:id/download','download','diskStorage','root','originalname','replace','format','%s-%s%s','extname','now','single'];(function(_0x4a8b3b,_0x1c77bd){var _0x128e8f=function(_0xb841bc){while(--_0xb841bc){_0x4a8b3b['push'](_0x4a8b3b['shift']());}};_0x128e8f(++_0x1c77bd);}(_0x207c,0x1e8));var _0xc207=function(_0x57fa0b,_0x5df1ce){_0x57fa0b=_0x57fa0b-0x0;var _0x18669f=_0x207c[_0x57fa0b];return _0x18669f;};'use strict';var multer=require('multer');var util=require(_0xc207('0x0'));var path=require(_0xc207('0x1'));var timeout=require(_0xc207('0x2'));var express=require(_0xc207('0x3'));var router=express[_0xc207('0x4')]();var fs_extra=require(_0xc207('0x5'));var auth=require(_0xc207('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc207('0x7'));var controller=require('./plugin.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xc207('0x8')]);router[_0xc207('0x9')](_0xc207('0xa'),controller['webhookGet']);router[_0xc207('0x9')](_0xc207('0xb'),auth[_0xc207('0xc')](),controller['show']);router[_0xc207('0x9')](_0xc207('0xd'),auth[_0xc207('0xc')](),controller[_0xc207('0xe')]);var upload=multer({'storage':multer[_0xc207('0xf')]({'destination':function(_0x347549,_0x487d95,_0x574425){_0x574425(null,path['join'](config[_0xc207('0x10')],'server/files/plugins'));},'filename':function(_0x2741f3,_0x2782ce,_0x59d401){_0x2782ce[_0xc207('0x11')]=_0x2782ce[_0xc207('0x11')][_0xc207('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59d401(null,util[_0xc207('0x13')](_0xc207('0x14'),path['basename'](_0x2782ce[_0xc207('0x11')],path[_0xc207('0x15')](_0x2782ce[_0xc207('0x11')])),Date[_0xc207('0x16')](),path['extname'](_0x2782ce['originalname'])));}})});router['post']('/',upload[_0xc207('0x17')](_0xc207('0x18')),controller[_0xc207('0x19')]);router[_0xc207('0x1a')]('/webhook',controller[_0xc207('0x1b')]);router[_0xc207('0x1c')](_0xc207('0xb'),auth['isAuthenticated'](),controller[_0xc207('0x1d')]);router['delete'](_0xc207('0xb'),auth[_0xc207('0xc')](),controller[_0xc207('0x1e')]);module[_0xc207('0x1f')]=router;
\ No newline at end of file
+var _0x9bde=['exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','index','/webhook','webhookGet','/:id','isAuthenticated','show','/:id/download','diskStorage','join','root','server/files/plugins','originalname','replace','format','extname','now','post','file','upload','webhookPost','put','delete'];(function(_0xfacbea,_0x559f9c){var _0x24abd0=function(_0x1b77e8){while(--_0x1b77e8){_0xfacbea['push'](_0xfacbea['shift']());}};_0x24abd0(++_0x559f9c);}(_0x9bde,0xe1));var _0xe9bd=function(_0x3103d3,_0x1427f6){_0x3103d3=_0x3103d3-0x0;var _0xbc7287=_0x9bde[_0x3103d3];return _0xbc7287;};'use strict';var multer=require('multer');var util=require(_0xe9bd('0x0'));var path=require('path');var timeout=require(_0xe9bd('0x1'));var express=require('express');var router=express[_0xe9bd('0x2')]();var fs_extra=require(_0xe9bd('0x3'));var auth=require(_0xe9bd('0x4'));var interaction=require(_0xe9bd('0x5'));var config=require(_0xe9bd('0x6'));var controller=require(_0xe9bd('0x7'));router[_0xe9bd('0x8')]('/',auth['isAuthenticated'](),controller[_0xe9bd('0x9')]);router[_0xe9bd('0x8')](_0xe9bd('0xa'),controller[_0xe9bd('0xb')]);router[_0xe9bd('0x8')](_0xe9bd('0xc'),auth[_0xe9bd('0xd')](),controller[_0xe9bd('0xe')]);router[_0xe9bd('0x8')](_0xe9bd('0xf'),auth['isAuthenticated'](),controller['download']);var upload=multer({'storage':multer[_0xe9bd('0x10')]({'destination':function(_0x145521,_0x2601ac,_0x581ab9){_0x581ab9(null,path[_0xe9bd('0x11')](config[_0xe9bd('0x12')],_0xe9bd('0x13')));},'filename':function(_0x141587,_0x5e022a,_0x2c1d98){_0x5e022a['originalname']=_0x5e022a[_0xe9bd('0x14')][_0xe9bd('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2c1d98(null,util[_0xe9bd('0x16')]('%s-%s%s',path['basename'](_0x5e022a[_0xe9bd('0x14')],path[_0xe9bd('0x17')](_0x5e022a[_0xe9bd('0x14')])),Date[_0xe9bd('0x18')](),path[_0xe9bd('0x17')](_0x5e022a[_0xe9bd('0x14')])));}})});router[_0xe9bd('0x19')]('/',upload['single'](_0xe9bd('0x1a')),controller[_0xe9bd('0x1b')]);router[_0xe9bd('0x19')]('/webhook',controller[_0xe9bd('0x1c')]);router[_0xe9bd('0x1d')](_0xe9bd('0xc'),auth[_0xe9bd('0xd')](),controller['update']);router[_0xe9bd('0x1e')]('/:id',auth[_0xe9bd('0xd')](),controller['delete']);module[_0xe9bd('0x1f')]=router;
\ No newline at end of file
index b390a3f..3518397 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c2c=['TEXT','STRING','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','ENUM','adminOnly','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','html','script'];(function(_0xb713b7,_0x196220){var _0x3b081a=function(_0x31000c){while(--_0x31000c){_0xb713b7['push'](_0xb713b7['shift']());}};_0x3b081a(++_0x196220);}(_0x2c2c,0x168));var _0xc2c2=function(_0x4bdf38,_0x2ae6c7){_0x4bdf38=_0x4bdf38-0x0;var _0x2dd325=_0x2c2c[_0x4bdf38];return _0x2dd325;};'use strict';var Sequelize=require(_0xc2c2('0x0'));module[_0xc2c2('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0xc2c2('0x2'),_0xc2c2('0x3'))},'description':{'type':Sequelize['TEXT']},'version':{'type':Sequelize[_0xc2c2('0x4')]},'path':{'type':Sequelize[_0xc2c2('0x5')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0xc2c2('0x6')],'defaultValue':0x0,'comment':_0xc2c2('0x7')},'sidebar':{'type':Sequelize[_0xc2c2('0x8')](_0xc2c2('0x9'),_0xc2c2('0xa'),_0xc2c2('0xb'),_0xc2c2('0xc')),'defaultValue':_0xc2c2('0xb'),'comment':_0xc2c2('0xd')},'icon':{'type':Sequelize[_0xc2c2('0x5')]},'adminUrl':{'type':Sequelize[_0xc2c2('0x5')]},'agentUrl':{'type':Sequelize[_0xc2c2('0x5')]},'scriptName':{'type':Sequelize[_0xc2c2('0x5')]},'scriptPath':{'type':Sequelize[_0xc2c2('0x5')]}};
\ No newline at end of file
+var _0x6d9c=['Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','STRING','html','script','TEXT','BOOLEAN','ENUM','adminOnly','agentOnly','always','never'];(function(_0x2225ac,_0x593db4){var _0x21753a=function(_0x3183af){while(--_0x3183af){_0x2225ac['push'](_0x2225ac['shift']());}};_0x21753a(++_0x593db4);}(_0x6d9c,0x1e1));var _0xc6d9=function(_0x2d3dbf,_0x420877){_0x2d3dbf=_0x2d3dbf-0x0;var _0xdd168=_0x6d9c[_0x2d3dbf];return _0xdd168;};'use strict';var Sequelize=require(_0xc6d9('0x0'));module['exports']={'name':{'type':Sequelize[_0xc6d9('0x1')]},'type':{'type':Sequelize['ENUM'](_0xc6d9('0x2'),_0xc6d9('0x3'))},'description':{'type':Sequelize[_0xc6d9('0x4')]},'version':{'type':Sequelize[_0xc6d9('0x4')]},'path':{'type':Sequelize[_0xc6d9('0x1')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0xc6d9('0x5')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize[_0xc6d9('0x6')](_0xc6d9('0x7'),_0xc6d9('0x8'),_0xc6d9('0x9'),_0xc6d9('0xa')),'defaultValue':_0xc6d9('0x9'),'comment':_0xc6d9('0xb')},'icon':{'type':Sequelize['STRING']},'adminUrl':{'type':Sequelize[_0xc6d9('0x1')]},'agentUrl':{'type':Sequelize[_0xc6d9('0x1')]},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6a4a08c..0253c23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb999=['defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','limit','count','set','apply','reject','save','update','then','get','Plugins','UserProfileResource','end','stack','name','send','map','Plugin','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','download','join','server/files/plugins','format','%s.zip','basename','zip','warning','code','ENOENT','error','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','Error','pipe','glob','**/*','root','dirname','node_modules/**/*','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','file','filename','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','undefined','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','parameters','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','script','scriptName','scriptPath','body','role','userProfileId','UserProfileSection','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','params','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','hostname','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','\x27PORT\x27\x20parameter\x20not\x20specified','http://localhost:','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','redis'];(function(_0x533deb,_0x13d177){var _0x2efe05=function(_0x390f7e){while(--_0x390f7e){_0x533deb['push'](_0x533deb['shift']());}};_0x2efe05(++_0x13d177);}(_0xb999,0x91));var _0x9b99=function(_0x44e01f,_0x4eaf52){_0x44e01f=_0x44e01f-0x0;var _0x5ed5f0=_0xb999[_0x44e01f];return _0x5ed5f0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9b99('0x0'));var zipdir=require(_0x9b99('0x1'));var jsonpatch=require(_0x9b99('0x2'));var rp=require(_0x9b99('0x3'));var moment=require(_0x9b99('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9b99('0x5'));var path=require(_0x9b99('0x6'));var sox=require(_0x9b99('0x7'));var csv=require(_0x9b99('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9b99('0x9'));var _=require(_0x9b99('0xa'));var squel=require(_0x9b99('0xb'));var crypto=require(_0x9b99('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9b99('0xd'));var toCsv=require(_0x9b99('0x8'));var querystring=require('querystring');var Papa=require(_0x9b99('0xe'));var extract=require(_0x9b99('0xf'));var rimraf=require(_0x9b99('0x0'));var archiver=require(_0x9b99('0x10'));var Redis=require(_0x9b99('0x11'));var authService=require(_0x9b99('0x12'));var qs=require(_0x9b99('0x13'));var as=require(_0x9b99('0x14'));var hardwareService=require(_0x9b99('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x9b99('0x16'));var config=require(_0x9b99('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x9b99('0x18'))['db'];config[_0x9b99('0x19')]=_[_0x9b99('0x1a')](config[_0x9b99('0x19')],{'host':_0x9b99('0x1b'),'port':0x18eb});var socket=require(_0x9b99('0x1c'))(new Redis(config[_0x9b99('0x19')]));require('./plugin.socket')[_0x9b99('0x1d')](socket);function respondWithStatusCode(_0x28713c,_0x3dd176){_0x3dd176=_0x3dd176||0xcc;return function(_0x40387f){if(_0x40387f){return _0x28713c[_0x9b99('0x1e')](_0x3dd176);}return _0x28713c[_0x9b99('0x1f')](_0x3dd176)['end']();};}function respondWithResult(_0x30c480,_0x5c953f){_0x5c953f=_0x5c953f||0xc8;return function(_0x43aedd){if(_0x43aedd){return _0x30c480['status'](_0x5c953f)[_0x9b99('0x20')](_0x43aedd);}};}function respondWithFilteredResult(_0x1990f4,_0xd1d151){return function(_0x43d37d){if(_0x43d37d){var _0x3e5383=typeof _0xd1d151[_0x9b99('0x21')]==='undefined'&&typeof _0xd1d151[_0x9b99('0x22')]==='undefined';var _0x293b85=_0x43d37d[_0x9b99('0x23')];var _0xf7dfde=_0x3e5383?0x0:_0xd1d151['offset'];var _0x11a470=_0x3e5383?_0x43d37d[_0x9b99('0x23')]:_0xd1d151[_0x9b99('0x21')]+_0xd1d151['limit'];var _0x397d26;if(_0x11a470>=_0x293b85){_0x11a470=_0x293b85;_0x397d26=0xc8;}else{_0x397d26=0xce;}_0x1990f4[_0x9b99('0x1f')](_0x397d26);return _0x1990f4[_0x9b99('0x24')]('Content-Range',_0xf7dfde+'-'+_0x11a470+'/'+_0x293b85)[_0x9b99('0x20')](_0x43d37d);}return null;};}function patchUpdates(_0x26d62c){return function(_0x1b400b){try{jsonpatch[_0x9b99('0x25')](_0x1b400b,_0x26d62c,!![]);}catch(_0x355fc6){return BPromise[_0x9b99('0x26')](_0x355fc6);}return _0x1b400b[_0x9b99('0x27')]();};}function saveUpdates(_0x4468ae,_0x1f1d54){return function(_0x28a001){if(_0x28a001){return _0x28a001[_0x9b99('0x28')](_0x4468ae)['then'](function(_0x3bb337){return _0x3bb337;});}return null;};}function removeEntity(_0x42f43f,_0x3b2157){return function(_0x555be5){if(_0x555be5){return _0x555be5['destroy']()[_0x9b99('0x29')](function(){var _0x4751b3=_0x555be5[_0x9b99('0x2a')]({'plain':!![]});var _0x52e387=_0x9b99('0x2b');return db[_0x9b99('0x2c')]['destroy']({'where':{'type':_0x52e387,'resourceId':_0x4751b3['id']}})[_0x9b99('0x29')](function(){return _0x555be5;});})['then'](function(){_0x42f43f[_0x9b99('0x1f')](0xcc)[_0x9b99('0x2d')]();});}};}function handleEntityNotFound(_0x2d2e91,_0xe0e6b5){return function(_0x23a12c){if(!_0x23a12c){_0x2d2e91[_0x9b99('0x1e')](0x194);}return _0x23a12c;};}function handleError(_0x469d0f,_0x5d3c1b){_0x5d3c1b=_0x5d3c1b||0x1f4;return function(_0x32d635){logger['error'](_0x32d635[_0x9b99('0x2e')]);if(_0x32d635[_0x9b99('0x2f')]){delete _0x32d635[_0x9b99('0x2f')];}_0x469d0f['status'](_0x5d3c1b)[_0x9b99('0x30')](_0x32d635);};}exports['index']=function(_0x470704,_0x13ec58){var _0x4b67e1={},_0x62673b={},_0x295d45={'count':0x0,'rows':[]};var _0x462b20=_[_0x9b99('0x31')](db[_0x9b99('0x32')][_0x9b99('0x33')],function(_0x521e04){return{'name':_0x521e04[_0x9b99('0x34')],'type':_0x521e04[_0x9b99('0x35')]['key']};});_0x62673b['model']=_[_0x9b99('0x31')](_0x462b20,'name');_0x62673b[_0x9b99('0x36')]=_[_0x9b99('0x37')](_0x470704[_0x9b99('0x36')]);_0x62673b[_0x9b99('0x38')]=_[_0x9b99('0x39')](_0x62673b[_0x9b99('0x3a')],_0x62673b['query']);_0x4b67e1['attributes']=_[_0x9b99('0x39')](_0x62673b[_0x9b99('0x3a')],qs[_0x9b99('0x3b')](_0x470704[_0x9b99('0x36')][_0x9b99('0x3b')]));_0x4b67e1[_0x9b99('0x3c')]=_0x4b67e1[_0x9b99('0x3c')][_0x9b99('0x3d')]?_0x4b67e1[_0x9b99('0x3c')]:_0x62673b[_0x9b99('0x3a')];if(!_0x470704[_0x9b99('0x36')][_0x9b99('0x3e')]('nolimit')){_0x4b67e1[_0x9b99('0x22')]=qs[_0x9b99('0x22')](_0x470704['query'][_0x9b99('0x22')]);_0x4b67e1[_0x9b99('0x21')]=qs['offset'](_0x470704[_0x9b99('0x36')][_0x9b99('0x21')]);}_0x4b67e1[_0x9b99('0x3f')]=qs[_0x9b99('0x40')](_0x470704[_0x9b99('0x36')]['sort']);_0x4b67e1['where']=qs[_0x9b99('0x38')](_[_0x9b99('0x41')](_0x470704['query'],_0x62673b[_0x9b99('0x38')]),_0x462b20);if(_0x470704['query'][_0x9b99('0x42')]){_0x4b67e1[_0x9b99('0x43')]=_[_0x9b99('0x44')](_0x4b67e1[_0x9b99('0x43')],{'$or':_[_0x9b99('0x31')](_0x462b20,function(_0x3bef9d){if(_0x3bef9d['type']!==_0x9b99('0x45')){var _0x37b9ba={};_0x37b9ba[_0x3bef9d[_0x9b99('0x2f')]]={'$like':'%'+_0x470704[_0x9b99('0x36')][_0x9b99('0x42')]+'%'};return _0x37b9ba;}})});}_0x4b67e1=_[_0x9b99('0x44')]({},_0x4b67e1,_0x470704[_0x9b99('0x46')]);var _0x355ee2={'where':_0x4b67e1[_0x9b99('0x43')]};return db['Plugin'][_0x9b99('0x23')](_0x355ee2)[_0x9b99('0x29')](function(_0x2562fa){_0x295d45['count']=_0x2562fa;if(_0x470704[_0x9b99('0x36')][_0x9b99('0x47')]){_0x4b67e1[_0x9b99('0x48')]=[{'all':!![]}];}return db[_0x9b99('0x32')][_0x9b99('0x49')](_0x4b67e1);})[_0x9b99('0x29')](function(_0x24ac3d){_0x295d45[_0x9b99('0x4a')]=_0x24ac3d;return _0x295d45;})[_0x9b99('0x29')](respondWithFilteredResult(_0x13ec58,_0x4b67e1))[_0x9b99('0x4b')](handleError(_0x13ec58,null));};exports[_0x9b99('0x4c')]=function(_0x13fee5,_0x2f8267){var _0x10f951={'raw':!![],'where':{'id':_0x13fee5['params']['id']}},_0xf7f5b3={};_0xf7f5b3[_0x9b99('0x3a')]=_[_0x9b99('0x37')](db[_0x9b99('0x32')][_0x9b99('0x33')]);_0xf7f5b3['query']=_['keys'](_0x13fee5[_0x9b99('0x36')]);_0xf7f5b3[_0x9b99('0x38')]=_['intersection'](_0xf7f5b3[_0x9b99('0x3a')],_0xf7f5b3['query']);_0x10f951['attributes']=_[_0x9b99('0x39')](_0xf7f5b3[_0x9b99('0x3a')],qs[_0x9b99('0x3b')](_0x13fee5['query'][_0x9b99('0x3b')]));_0x10f951[_0x9b99('0x3c')]=_0x10f951[_0x9b99('0x3c')]['length']?_0x10f951['attributes']:_0xf7f5b3['model'];if(_0x13fee5['query']['includeAll']){_0x10f951['include']=[{'all':!![]}];}_0x10f951=_[_0x9b99('0x44')]({},_0x10f951,_0x13fee5['options']);return db[_0x9b99('0x32')][_0x9b99('0x4d')](_0x10f951)['then'](handleEntityNotFound(_0x2f8267,null))[_0x9b99('0x29')](respondWithResult(_0x2f8267,null))[_0x9b99('0x4b')](handleError(_0x2f8267,null));};exports[_0x9b99('0x4e')]=function(_0x4b3528,_0x1e2f18,_0x26509c){return db[_0x9b99('0x32')][_0x9b99('0x4d')]({'where':{'id':_0x4b3528['params']['id']},'attributes':[_0x9b99('0x2f'),'path'],'raw':!![]})['then'](handleEntityNotFound(_0x1e2f18,null))['then'](function(_0x4a66aa){if(_0x4a66aa){var _0xdf8edb=path[_0x9b99('0x4f')](config['root'],_0x9b99('0x50'),util[_0x9b99('0x51')](_0x9b99('0x52'),path[_0x9b99('0x53')](_0x4a66aa['path'])));var _0x1388d2=fs['createWriteStream'](_0xdf8edb);var _0x47250a=archiver(_0x9b99('0x54'),{'zlib':{'level':0x9}});_0x47250a['on'](_0x9b99('0x55'),function(_0x5f3589){if(_0x5f3589[_0x9b99('0x56')]===_0x9b99('0x57')){logger[_0x9b99('0x58')](_0x5f3589);}else{throw new db[(_0x9b99('0x59'))]['Error'](_0x9b99('0x5a'));}});_0x47250a['on']('error',function(_0x432cd2){throw new db[(_0x9b99('0x59'))][(_0x9b99('0x5b'))](_0x9b99('0x5a'));});_0x47250a[_0x9b99('0x5c')](_0x1388d2);_0x47250a[_0x9b99('0x5d')](_0x9b99('0x5e'),{'cwd':path['join'](config[_0x9b99('0x5f')],_0x9b99('0x50'),path[_0x9b99('0x60')](_0x4a66aa['path'])),'ignore':[path[_0x9b99('0x4f')](path['basename'](_0x4a66aa[_0x9b99('0x6')]),_0x9b99('0x61')),path[_0x9b99('0x4f')](path[_0x9b99('0x53')](_0x4a66aa[_0x9b99('0x6')]),_0x9b99('0x62'))],'nodir':!![]})[_0x9b99('0x63')]();_0x1388d2['on'](_0x9b99('0x64'),function(){if(!fs[_0x9b99('0x65')](_0xdf8edb)){throw new db[(_0x9b99('0x59'))][(_0x9b99('0x5b'))](_0x9b99('0x66'));}return _0x1e2f18[_0x9b99('0x4e')](_0xdf8edb,util[_0x9b99('0x51')](_0x9b99('0x52'),path[_0x9b99('0x53')](_0x4a66aa[_0x9b99('0x6')])),function(_0x46bc97){if(_0x46bc97){throw new db[(_0x9b99('0x59'))][(_0x9b99('0x5b'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0x9b99('0x67')](_0xdf8edb);logger[_0x9b99('0x68')](_0x9b99('0x69'));logger[_0x9b99('0x68')](_0x9b99('0x6a'));});});}return null;})['catch'](handleError(_0x1e2f18,null));};exports['upload']=function(_0x162228,_0x37183e,_0x561ea3){var _0x5a6891=path[_0x9b99('0x53')](_0x162228[_0x9b99('0x6b')][_0x9b99('0x6c')],path['extname'](_0x162228[_0x9b99('0x6b')][_0x9b99('0x6c')]));var _0x56ef5c=path[_0x9b99('0x4f')](config[_0x9b99('0x5f')],_0x9b99('0x50'),_0x162228[_0x9b99('0x6b')][_0x9b99('0x6c')]);var _0x520f98=path[_0x9b99('0x4f')](config[_0x9b99('0x5f')],'server/files/plugins',_0x5a6891);logger[_0x9b99('0x68')](_0x9b99('0x6d'),_0x56ef5c);logger[_0x9b99('0x68')](_0x9b99('0x6e'),_0x520f98);try{fs[_0x9b99('0x6f')](_0x56ef5c,parseInt('0777',0x8));extract(_0x56ef5c,{'dir':_0x520f98},function(_0x38d8ee){if(_0x38d8ee){logger[_0x9b99('0x58')](_0x38d8ee);handleError(_0x38d8ee,!![]);};var _0x31a740=fs[_0x9b99('0x70')](_0x520f98);if(_0x31a740[_0x9b99('0x3d')]>0x1){removeReferences(_0x56ef5c,_0x520f98);logger[_0x9b99('0x58')](_0x9b99('0x71'));return _0x561ea3(new Error(_0x9b99('0x71')));}var _0x353892=fs[_0x9b99('0x72')](path[_0x9b99('0x4f')](_0x520f98,_0x31a740[0x0]));if(_0x353892[_0x9b99('0x73')]()){removeReferences(_0x56ef5c,_0x520f98);logger['error'](_0x9b99('0x71'));return _0x561ea3(new Error(_0x9b99('0x71')));}if(_0x353892[_0x9b99('0x74')]()){var _0x4710e6=fs[_0x9b99('0x70')](path['join'](_0x520f98,_0x31a740[0x0]));if(_0x4710e6['length']===0x0){removeReferences(_0x56ef5c,_0x520f98);logger['error'](_0x9b99('0x71'));return _0x561ea3(new Error('Invalid\x20plugin\x20structure'));}var _0x30b717=_0x4710e6[_0x9b99('0x75')](function(_0x5d9170){return _0x5d9170===_0x9b99('0x76');});if(!_0x30b717){return _0x561ea3(new Error(_0x9b99('0x77')));}var _0x2ed323=fs[_0x9b99('0x78')](path[_0x9b99('0x4f')](_0x520f98,_0x31a740[0x0],_0x9b99('0x76')));var _0x1a5afb=JSON['parse'](_0x2ed323);if(_0x9b99('0x79')==typeof _0x1a5afb['name']){return _0x561ea3(new Error(_0x9b99('0x7a')));}if(_0x9b99('0x79')==typeof _0x1a5afb[_0x9b99('0x35')]){return _0x561ea3(new Error(_0x9b99('0x7b')));}if(_0x9b99('0x79')==typeof _0x1a5afb[_0x9b99('0x7c')]){return _0x561ea3(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0x9b99('0x79')==typeof _0x1a5afb[_0x9b99('0x7d')]){return _0x561ea3(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x1a5afb[_0x9b99('0x35')]==='html'){if(_0x9b99('0x79')==typeof _0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')]){return _0x561ea3(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x9b99('0x79')==typeof _0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')][_0x9b99('0x7f')]&&_0x9b99('0x79')==typeof _0x1a5afb['parameters'][_0x9b99('0x7e')][_0x9b99('0x80')]){return _0x561ea3(new Error(_0x9b99('0x81')));}}else if(_0x1a5afb[_0x9b99('0x35')]==='script'){if(_0x9b99('0x79')==typeof _0x1a5afb[_0x9b99('0x7d')]['scriptName']){return _0x561ea3(new Error(_0x9b99('0x82')));}if(_0x9b99('0x79')==typeof _0x1a5afb['parameters']['scriptPath']){return _0x561ea3(new Error(_0x9b99('0x83')));}}else{return _0x561ea3(new Error(_0x9b99('0x84')));}var _0x35814c=_0x1a5afb['name'];var _0x36b55d=_0x1a5afb[_0x9b99('0x85')];var _0x56f232=_0x1a5afb[_0x9b99('0x35')];var _0x512eee=_0x1a5afb[_0x9b99('0x86')]?_0x1a5afb[_0x9b99('0x86')]:_0x9b99('0x87');var _0x3c9222=_0x1a5afb[_0x9b99('0x88')]?_0x1a5afb[_0x9b99('0x88')]:'icon-apps';var _0x513eea='';var _0x52e0a0='';var _0x2dde6d='';var _0x16e483='';var _0x3a6613=_0x1a5afb[_0x9b99('0x7c')];if(_0x56f232==='html'){if('undefined'!=typeof _0x1a5afb[_0x9b99('0x7d')]['views']['admin']){var _0x2895bb=_0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')][_0x9b99('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0x9b99('0x89')](_0x2895bb)){_0x513eea=path[_0x9b99('0x4f')](_0x9b99('0x8a'),_0x5a6891,_0x31a740[0x0],_0x2895bb);}else{_0x513eea=_0x2895bb;}}else{logger[_0x9b99('0x68')](_0x9b99('0x8b'));}if(_0x9b99('0x79')!=typeof _0x1a5afb['parameters']['views'][_0x9b99('0x80')]){var _0x12c9b8=_0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')][_0x9b99('0x80')];if(!/^(f|ht)tps?:\/\//i[_0x9b99('0x89')](_0x12c9b8)){_0x52e0a0=path[_0x9b99('0x4f')]('plugins',_0x5a6891,_0x31a740[0x0],_0x12c9b8);}else{_0x52e0a0=_0x12c9b8;}}else{logger['info'](_0x9b99('0x8c'));}}else if(_0x56f232===_0x9b99('0x8d')){_0x2dde6d=_0x1a5afb['parameters'][_0x9b99('0x8e')];_0x16e483=_0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x8f')];if(_0x9b99('0x79')!=typeof _0x1a5afb[_0x9b99('0x7d')]['views']){if('undefined'!=typeof _0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')][_0x9b99('0x7f')]){var _0x2895bb=_0x1a5afb[_0x9b99('0x7d')]['views'][_0x9b99('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0x9b99('0x89')](_0x2895bb)){_0x513eea=path[_0x9b99('0x4f')](_0x9b99('0x8a'),_0x5a6891,_0x31a740[0x0],_0x2895bb);}else{_0x513eea=_0x2895bb;}}if('undefined'!=typeof _0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')][_0x9b99('0x80')]){var _0x12c9b8=_0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')]['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x12c9b8)){_0x52e0a0=path[_0x9b99('0x4f')](_0x9b99('0x8a'),_0x5a6891,_0x31a740[0x0],_0x12c9b8);}else{_0x52e0a0=_0x12c9b8;}}}}var _0x5d31e5={'name':_0x35814c,'description':_0x36b55d,'path':path[_0x9b99('0x4f')](_0x5a6891,_0x31a740[0x0]),'type':_0x56f232,'sidebar':_0x512eee,'icon':_0x3c9222,'adminUrl':_0x513eea,'agentUrl':_0x52e0a0,'scriptName':_0x2dde6d,'scriptPath':_0x16e483,'version':_0x3a6613};removeReferences(_0x56ef5c,null);return db[_0x9b99('0x32')]['create'](_0x5d31e5)[_0x9b99('0x29')](function(_0x26b190){var _0x3173df={'role':_0x162228[_0x9b99('0x90')][_0x9b99('0x91')],'userProfileId':_0x162228[_0x9b99('0x90')][_0x9b99('0x92')]};if(!_0x3173df)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3173df[_0x9b99('0x91')]==='user'){var _0x231dd0=_0x26b190[_0x9b99('0x2a')]({'plain':!![]});return db[_0x9b99('0x93')][_0x9b99('0x4d')]({'where':{'name':_0x9b99('0x2b'),'userProfileId':_0x3173df[_0x9b99('0x92')]},'raw':!![]})['then'](function(_0x3425c9){if(_0x3425c9&&_0x3425c9[_0x9b99('0x94')]===0x0){return db[_0x9b99('0x2c')][_0x9b99('0x95')]({'name':_0x231dd0[_0x9b99('0x2f')],'resourceId':_0x231dd0['id'],'type':_0x3425c9[_0x9b99('0x2f')],'sectionId':_0x3425c9['id']},{})[_0x9b99('0x29')](function(){return _0x26b190;});}else{return _0x26b190;}})[_0x9b99('0x4b')](function(_0x58e5c8){logger['error'](_0x9b99('0x96'),_0x58e5c8);throw _0x58e5c8;});}return _0x26b190;})[_0x9b99('0x29')](respondWithResult(_0x37183e,null))[_0x9b99('0x4b')](handleError(_0x37183e,null));}});}catch(_0x34e554){_0x37183e['status'](0x1f4)['send'](_0x34e554);}};function removeReferences(_0x25989c,_0x459990){try{if(_0x25989c){fs[_0x9b99('0x67')](_0x25989c);logger[_0x9b99('0x68')](_0x9b99('0x97'));}if(_0x459990){rimraf(_0x459990,function(){});logger['info'](_0x9b99('0x98'));}}catch(_0x37eae2){logger['error'](_0x37eae2);}}exports[_0x9b99('0x28')]=function(_0xb6b517,_0x471f25,_0x47be8a){return db[_0x9b99('0x32')]['find']({'where':{'id':_0xb6b517[_0x9b99('0x99')]['id']}})[_0x9b99('0x29')](handleEntityNotFound(_0x471f25,null))[_0x9b99('0x29')](saveUpdates(_0xb6b517[_0x9b99('0x90')],null))[_0x9b99('0x29')](respondWithResult(_0x471f25,null))[_0x9b99('0x4b')](handleError(_0x471f25,null));};exports[_0x9b99('0x9a')]=function(_0x4a213e,_0xcb67bd,_0x18a998){return db['Plugin'][_0x9b99('0x4d')]({'where':{'id':_0x4a213e['params']['id']}})[_0x9b99('0x29')](function(_0x2175bd){if(_0x2175bd){return _0x2175bd['destroy']();}})['then'](function(_0x11f41c){rimraf(path[_0x9b99('0x4f')](config[_0x9b99('0x5f')],_0x9b99('0x50'),path[_0x9b99('0x60')](_0x11f41c[_0x9b99('0x6')])),function(){});return _0x11f41c;})[_0x9b99('0x29')](handleEntityNotFound(_0xcb67bd,null))[_0x9b99('0x29')](respondWithStatusCode(_0xcb67bd,null))[_0x9b99('0x4b')](handleError(_0xcb67bd,null));};exports[_0x9b99('0x9b')]=function(_0x192ec4,_0x4ce4d7,_0x486237){return BPromise[_0x9b99('0x9c')]()[_0x9b99('0x29')](function(){if(!_0x192ec4[_0x9b99('0x36')][_0x9b99('0x6')]){throw new Error(_0x9b99('0x9d'));}if(!_0x192ec4[_0x9b99('0x36')][_0x9b99('0x9e')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x52f4b9=_0x192ec4['query'][_0x9b99('0x9f')]?_0x192ec4['query'][_0x9b99('0x9f')]+':'+_0x192ec4['query'][_0x9b99('0x9e')]:'http://localhost:'+_0x192ec4[_0x9b99('0x36')][_0x9b99('0x9e')];var _0x24f15c=_0x192ec4[_0x9b99('0x36')][_0x9b99('0x20')]?_0x192ec4[_0x9b99('0x36')]['json']:!![];var _0x14269e=_0x192ec4[_0x9b99('0x36')][_0x9b99('0xa0')]?_0x192ec4[_0x9b99('0x36')]['encoding']:null;var _0x544996={'method':_0x192ec4[_0x9b99('0xa1')],'uri':util['format'](_0x9b99('0xa2'),_0x52f4b9,_0x192ec4[_0x9b99('0x36')]['path']),'json':_0x24f15c,'resolveWithFullResponse':!![],'encoding':_0x14269e,'qs':_0x192ec4[_0x9b99('0x36')]};if(_0x192ec4['headers']){_0x544996[_0x9b99('0xa3')]=_0x192ec4[_0x9b99('0xa3')];if(_0x544996[_0x9b99('0xa3')]['content-length']){delete _0x544996[_0x9b99('0xa3')][_0x9b99('0xa4')];}}if(_0x544996[_0x9b99('0xa3')]['content-type']){delete _0x544996['headers'][_0x9b99('0xa5')];}return rp(_0x544996);})[_0x9b99('0x29')](function(_0x13c6e8){if(_0x13c6e8){_0x4ce4d7['set'](_0x13c6e8[_0x9b99('0xa3')]);logger[_0x9b99('0x68')](_0x13c6e8['body']);if(_[_0x9b99('0xa6')](_0x192ec4[_0x9b99('0x36')][_0x9b99('0x6')],_0x9b99('0x4e'))&&_0x13c6e8[_0x9b99('0xa7')]==0x1f4){return _0x4ce4d7[_0x9b99('0x1e')](_0x13c6e8[_0x9b99('0xa7')]);}else{return _0x4ce4d7[_0x9b99('0x1f')](_0x13c6e8[_0x9b99('0xa7')])['send'](_0x13c6e8[_0x9b99('0x90')]);}}else{return _0x4ce4d7[_0x9b99('0x1e')](0xc8);}})[_0x9b99('0x4b')](handleError(_0x4ce4d7,null));};exports[_0x9b99('0xa8')]=function(_0x4abdd1,_0x5dc5a6,_0x29749e){return BPromise[_0x9b99('0x9c')]()[_0x9b99('0x29')](function(){if(!_0x4abdd1[_0x9b99('0x36')][_0x9b99('0x6')]){throw new Error(_0x9b99('0x9d'));}if(!_0x4abdd1['query']['port']){throw new Error(_0x9b99('0xa9'));}var _0x5c2ccb=_0x4abdd1['query'][_0x9b99('0x9f')]?_0x4abdd1[_0x9b99('0x36')][_0x9b99('0x9f')]+':'+_0x4abdd1[_0x9b99('0x36')][_0x9b99('0x9e')]:_0x9b99('0xaa')+_0x4abdd1[_0x9b99('0x36')]['port'];var _0xbf06fc=_0x4abdd1[_0x9b99('0x36')]['json']?_0x4abdd1[_0x9b99('0x36')][_0x9b99('0x20')]:!![];var _0x2cb5dc=_0x4abdd1[_0x9b99('0x36')][_0x9b99('0xa0')]?_0x4abdd1['query'][_0x9b99('0xa0')]:null;var _0x36fbcc={'method':_0x4abdd1[_0x9b99('0xa1')],'uri':util[_0x9b99('0x51')](_0x9b99('0xa2'),_0x5c2ccb,_0x4abdd1[_0x9b99('0x36')][_0x9b99('0x6')]),'json':_0xbf06fc,'resolveWithFullResponse':!![],'encoding':_0x2cb5dc,'body':_0x4abdd1[_0x9b99('0x90')]};if(_0x4abdd1[_0x9b99('0xa3')]){_0x36fbcc[_0x9b99('0xa3')]=_0x4abdd1[_0x9b99('0xa3')];if(_0x36fbcc['headers'][_0x9b99('0xa4')]){delete _0x36fbcc['headers'][_0x9b99('0xa4')];}}if(_0x36fbcc['headers'][_0x9b99('0xa5')]){delete _0x36fbcc['headers'][_0x9b99('0xa5')];}return rp(_0x36fbcc);})[_0x9b99('0x29')](function(_0x4d679d){if(_0x4d679d){_0x5dc5a6[_0x9b99('0x24')](_0x4d679d[_0x9b99('0xa3')]);logger[_0x9b99('0x68')](_0x4d679d['body']);return _0x5dc5a6[_0x9b99('0x1f')](_0x4d679d[_0x9b99('0xa7')])['send'](_0x4d679d[_0x9b99('0x90')]);}else{return _0x5dc5a6[_0x9b99('0x1e')](0xc8);}})['catch'](handleError(_0x5dc5a6,null));};
\ No newline at end of file
+var _0x3f6d=['reject','update','then','destroy','Plugins','UserProfileResource','error','stack','name','send','index','fieldName','type','key','map','keys','model','attributes','query','length','nolimit','limit','order','sort','filters','pick','filter','where','VIRTUAL','merge','Plugin','includeAll','findAll','rows','catch','params','intersection','fields','include','options','find','download','path','join','root','format','%s.zip','basename','createWriteStream','zip','code','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','server/files/plugins','dirname','node_modules/**/*','close','Plugin\x20not\x20found','unlinkSync','info','Temporary\x20file\x20removed','filename','file','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','Invalid\x20manifest:\x20type\x20missing','version','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','scriptName','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','icon','icon-apps','plugins','Warning:\x20admin\x20view\x20not\x20specified','script','scriptPath','test','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','delete','webhookGet','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','port','http://localhost:','encoding','method','%s%s','headers','content-length','content-type','set','endsWith','sendStatus','statusCode','webhookPost','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','archiver','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','register','status','end','offset','undefined','count','Content-Range','json','apply'];(function(_0x16e929,_0x52a0a4){var _0x3a6ace=function(_0x216782){while(--_0x216782){_0x16e929['push'](_0x16e929['shift']());}};_0x3a6ace(++_0x52a0a4);}(_0x3f6d,0x81));var _0xd3f6=function(_0x583ba8,_0x40bb0d){_0x583ba8=_0x583ba8-0x0;var _0x515683=_0x3f6d[_0x583ba8];return _0x515683;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd3f6('0x0'));var zipdir=require(_0xd3f6('0x1'));var jsonpatch=require(_0xd3f6('0x2'));var rp=require(_0xd3f6('0x3'));var moment=require(_0xd3f6('0x4'));var BPromise=require(_0xd3f6('0x5'));var Mustache=require(_0xd3f6('0x6'));var util=require(_0xd3f6('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xd3f6('0x8'));var ejs=require(_0xd3f6('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd3f6('0xa'));var squel=require(_0xd3f6('0xb'));var crypto=require(_0xd3f6('0xc'));var jsforce=require(_0xd3f6('0xd'));var deskjs=require(_0xd3f6('0xe'));var toCsv=require('to-csv');var querystring=require(_0xd3f6('0xf'));var Papa=require('papaparse');var extract=require('extract-zip');var rimraf=require(_0xd3f6('0x0'));var archiver=require(_0xd3f6('0x10'));var Redis=require(_0xd3f6('0x11'));var authService=require(_0xd3f6('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xd3f6('0x13'));var hardwareService=require(_0xd3f6('0x14'));var logger=require(_0xd3f6('0x15'))(_0xd3f6('0x16'));var utils=require('../../config/utils');var config=require(_0xd3f6('0x17'));var licenseUtil=require(_0xd3f6('0x18'));var db=require('../../mysqldb')['db'];config[_0xd3f6('0x19')]=_[_0xd3f6('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xd3f6('0x1b'))(new Redis(config[_0xd3f6('0x19')]));require('./plugin.socket')[_0xd3f6('0x1c')](socket);function respondWithStatusCode(_0x104506,_0x10bc07){_0x10bc07=_0x10bc07||0xcc;return function(_0x37a293){if(_0x37a293){return _0x104506['sendStatus'](_0x10bc07);}return _0x104506[_0xd3f6('0x1d')](_0x10bc07)[_0xd3f6('0x1e')]();};}function respondWithResult(_0x701d86,_0x40adb0){_0x40adb0=_0x40adb0||0xc8;return function(_0x5a8f21){if(_0x5a8f21){return _0x701d86[_0xd3f6('0x1d')](_0x40adb0)['json'](_0x5a8f21);}};}function respondWithFilteredResult(_0x1ce400,_0x399514){return function(_0xa7f9b0){if(_0xa7f9b0){var _0x166e8c=typeof _0x399514[_0xd3f6('0x1f')]===_0xd3f6('0x20')&&typeof _0x399514['limit']==='undefined';var _0x34ab3e=_0xa7f9b0[_0xd3f6('0x21')];var _0xb45311=_0x166e8c?0x0:_0x399514[_0xd3f6('0x1f')];var _0x3c5eb5=_0x166e8c?_0xa7f9b0[_0xd3f6('0x21')]:_0x399514['offset']+_0x399514['limit'];var _0x58aae0;if(_0x3c5eb5>=_0x34ab3e){_0x3c5eb5=_0x34ab3e;_0x58aae0=0xc8;}else{_0x58aae0=0xce;}_0x1ce400[_0xd3f6('0x1d')](_0x58aae0);return _0x1ce400['set'](_0xd3f6('0x22'),_0xb45311+'-'+_0x3c5eb5+'/'+_0x34ab3e)[_0xd3f6('0x23')](_0xa7f9b0);}return null;};}function patchUpdates(_0x5cab75){return function(_0x44f87d){try{jsonpatch[_0xd3f6('0x24')](_0x44f87d,_0x5cab75,!![]);}catch(_0x2140bb){return BPromise[_0xd3f6('0x25')](_0x2140bb);}return _0x44f87d['save']();};}function saveUpdates(_0x4c1fbd,_0x4ada2f){return function(_0x4f6110){if(_0x4f6110){return _0x4f6110[_0xd3f6('0x26')](_0x4c1fbd)[_0xd3f6('0x27')](function(_0x5d166b){return _0x5d166b;});}return null;};}function removeEntity(_0x51b637,_0x4637d7){return function(_0x23f9c4){if(_0x23f9c4){return _0x23f9c4[_0xd3f6('0x28')]()[_0xd3f6('0x27')](function(){var _0x44f8db=_0x23f9c4['get']({'plain':!![]});var _0x4bb7f0=_0xd3f6('0x29');return db[_0xd3f6('0x2a')][_0xd3f6('0x28')]({'where':{'type':_0x4bb7f0,'resourceId':_0x44f8db['id']}})[_0xd3f6('0x27')](function(){return _0x23f9c4;});})[_0xd3f6('0x27')](function(){_0x51b637['status'](0xcc)[_0xd3f6('0x1e')]();});}};}function handleEntityNotFound(_0xc1f96b,_0x3bb347){return function(_0x1cbd90){if(!_0x1cbd90){_0xc1f96b['sendStatus'](0x194);}return _0x1cbd90;};}function handleError(_0x3094bc,_0xd1d6ad){_0xd1d6ad=_0xd1d6ad||0x1f4;return function(_0x34f624){logger[_0xd3f6('0x2b')](_0x34f624[_0xd3f6('0x2c')]);if(_0x34f624['name']){delete _0x34f624[_0xd3f6('0x2d')];}_0x3094bc[_0xd3f6('0x1d')](_0xd1d6ad)[_0xd3f6('0x2e')](_0x34f624);};}exports[_0xd3f6('0x2f')]=function(_0x19b934,_0x39eb93){var _0x32572f={},_0x4d725f={},_0x3a5d40={'count':0x0,'rows':[]};var _0x3ad534=_['map'](db['Plugin']['rawAttributes'],function(_0x1b24ca){return{'name':_0x1b24ca[_0xd3f6('0x30')],'type':_0x1b24ca[_0xd3f6('0x31')][_0xd3f6('0x32')]};});_0x4d725f['model']=_[_0xd3f6('0x33')](_0x3ad534,_0xd3f6('0x2d'));_0x4d725f['query']=_[_0xd3f6('0x34')](_0x19b934['query']);_0x4d725f['filters']=_['intersection'](_0x4d725f[_0xd3f6('0x35')],_0x4d725f['query']);_0x32572f[_0xd3f6('0x36')]=_['intersection'](_0x4d725f[_0xd3f6('0x35')],qs['fields'](_0x19b934[_0xd3f6('0x37')]['fields']));_0x32572f[_0xd3f6('0x36')]=_0x32572f['attributes'][_0xd3f6('0x38')]?_0x32572f['attributes']:_0x4d725f[_0xd3f6('0x35')];if(!_0x19b934['query']['hasOwnProperty'](_0xd3f6('0x39'))){_0x32572f[_0xd3f6('0x3a')]=qs[_0xd3f6('0x3a')](_0x19b934[_0xd3f6('0x37')][_0xd3f6('0x3a')]);_0x32572f['offset']=qs[_0xd3f6('0x1f')](_0x19b934['query'][_0xd3f6('0x1f')]);}_0x32572f[_0xd3f6('0x3b')]=qs['sort'](_0x19b934[_0xd3f6('0x37')][_0xd3f6('0x3c')]);_0x32572f['where']=qs[_0xd3f6('0x3d')](_[_0xd3f6('0x3e')](_0x19b934['query'],_0x4d725f['filters']),_0x3ad534);if(_0x19b934['query'][_0xd3f6('0x3f')]){_0x32572f[_0xd3f6('0x40')]=_['merge'](_0x32572f[_0xd3f6('0x40')],{'$or':_[_0xd3f6('0x33')](_0x3ad534,function(_0xd6c55c){if(_0xd6c55c[_0xd3f6('0x31')]!==_0xd3f6('0x41')){var _0x17906b={};_0x17906b[_0xd6c55c[_0xd3f6('0x2d')]]={'$like':'%'+_0x19b934['query']['filter']+'%'};return _0x17906b;}})});}_0x32572f=_[_0xd3f6('0x42')]({},_0x32572f,_0x19b934['options']);var _0x1239ea={'where':_0x32572f['where']};return db[_0xd3f6('0x43')][_0xd3f6('0x21')](_0x1239ea)[_0xd3f6('0x27')](function(_0x29ab92){_0x3a5d40['count']=_0x29ab92;if(_0x19b934[_0xd3f6('0x37')][_0xd3f6('0x44')]){_0x32572f['include']=[{'all':!![]}];}return db[_0xd3f6('0x43')][_0xd3f6('0x45')](_0x32572f);})[_0xd3f6('0x27')](function(_0x185082){_0x3a5d40[_0xd3f6('0x46')]=_0x185082;return _0x3a5d40;})['then'](respondWithFilteredResult(_0x39eb93,_0x32572f))[_0xd3f6('0x47')](handleError(_0x39eb93,null));};exports['show']=function(_0x20a48f,_0x52fe79){var _0xfc56aa={'raw':!![],'where':{'id':_0x20a48f[_0xd3f6('0x48')]['id']}},_0x3ff73a={};_0x3ff73a[_0xd3f6('0x35')]=_['keys'](db[_0xd3f6('0x43')]['rawAttributes']);_0x3ff73a[_0xd3f6('0x37')]=_[_0xd3f6('0x34')](_0x20a48f[_0xd3f6('0x37')]);_0x3ff73a['filters']=_[_0xd3f6('0x49')](_0x3ff73a[_0xd3f6('0x35')],_0x3ff73a[_0xd3f6('0x37')]);_0xfc56aa[_0xd3f6('0x36')]=_['intersection'](_0x3ff73a[_0xd3f6('0x35')],qs[_0xd3f6('0x4a')](_0x20a48f[_0xd3f6('0x37')][_0xd3f6('0x4a')]));_0xfc56aa['attributes']=_0xfc56aa[_0xd3f6('0x36')][_0xd3f6('0x38')]?_0xfc56aa[_0xd3f6('0x36')]:_0x3ff73a[_0xd3f6('0x35')];if(_0x20a48f[_0xd3f6('0x37')]['includeAll']){_0xfc56aa[_0xd3f6('0x4b')]=[{'all':!![]}];}_0xfc56aa=_[_0xd3f6('0x42')]({},_0xfc56aa,_0x20a48f[_0xd3f6('0x4c')]);return db[_0xd3f6('0x43')][_0xd3f6('0x4d')](_0xfc56aa)[_0xd3f6('0x27')](handleEntityNotFound(_0x52fe79,null))['then'](respondWithResult(_0x52fe79,null))['catch'](handleError(_0x52fe79,null));};exports[_0xd3f6('0x4e')]=function(_0xb1db64,_0x1933e1,_0x4a2dd9){return db['Plugin'][_0xd3f6('0x4d')]({'where':{'id':_0xb1db64[_0xd3f6('0x48')]['id']},'attributes':[_0xd3f6('0x2d'),_0xd3f6('0x4f')],'raw':!![]})[_0xd3f6('0x27')](handleEntityNotFound(_0x1933e1,null))['then'](function(_0x1b410a){if(_0x1b410a){var _0x17e5c8=path[_0xd3f6('0x50')](config[_0xd3f6('0x51')],'server/files/plugins',util[_0xd3f6('0x52')](_0xd3f6('0x53'),path[_0xd3f6('0x54')](_0x1b410a[_0xd3f6('0x4f')])));var _0x50b0e3=fs[_0xd3f6('0x55')](_0x17e5c8);var _0x141a93=archiver(_0xd3f6('0x56'),{'zlib':{'level':0x9}});_0x141a93['on']('warning',function(_0xe9edd8){if(_0xe9edd8[_0xd3f6('0x57')]==='ENOENT'){logger[_0xd3f6('0x2b')](_0xe9edd8);}else{throw new db[(_0xd3f6('0x58'))][(_0xd3f6('0x59'))](_0xd3f6('0x5a'));}});_0x141a93['on'](_0xd3f6('0x2b'),function(_0x15fa4e){throw new db[(_0xd3f6('0x58'))]['Error'](_0xd3f6('0x5a'));});_0x141a93[_0xd3f6('0x5b')](_0x50b0e3);_0x141a93[_0xd3f6('0x5c')](_0xd3f6('0x5d'),{'cwd':path[_0xd3f6('0x50')](config[_0xd3f6('0x51')],_0xd3f6('0x5e'),path[_0xd3f6('0x5f')](_0x1b410a[_0xd3f6('0x4f')])),'ignore':[path[_0xd3f6('0x50')](path[_0xd3f6('0x54')](_0x1b410a[_0xd3f6('0x4f')]),_0xd3f6('0x60')),path[_0xd3f6('0x50')](path[_0xd3f6('0x54')](_0x1b410a['path']),'attachments/**/*')],'nodir':!![]})['finalize']();_0x50b0e3['on'](_0xd3f6('0x61'),function(){if(!fs['existsSync'](_0x17e5c8)){throw new db['Sequelize'][(_0xd3f6('0x59'))](_0xd3f6('0x62'));}return _0x1933e1[_0xd3f6('0x4e')](_0x17e5c8,util[_0xd3f6('0x52')](_0xd3f6('0x53'),path[_0xd3f6('0x54')](_0x1b410a[_0xd3f6('0x4f')])),function(_0xc01b61){if(_0xc01b61){throw new db[(_0xd3f6('0x58'))][(_0xd3f6('0x59'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0xd3f6('0x63')](_0x17e5c8);logger[_0xd3f6('0x64')]('Download\x20completed');logger[_0xd3f6('0x64')](_0xd3f6('0x65'));});});}return null;})[_0xd3f6('0x47')](handleError(_0x1933e1,null));};exports['upload']=function(_0x22e47b,_0x11efac,_0x267779){var _0x4ecd9e=path['basename'](_0x22e47b['file'][_0xd3f6('0x66')],path['extname'](_0x22e47b[_0xd3f6('0x67')][_0xd3f6('0x66')]));var _0x1f1e16=path['join'](config[_0xd3f6('0x51')],_0xd3f6('0x5e'),_0x22e47b[_0xd3f6('0x67')][_0xd3f6('0x66')]);var _0xd14f77=path['join'](config[_0xd3f6('0x51')],'server/files/plugins',_0x4ecd9e);logger[_0xd3f6('0x64')](_0xd3f6('0x68'),_0x1f1e16);logger['info'](_0xd3f6('0x69'),_0xd14f77);try{fs[_0xd3f6('0x6a')](_0x1f1e16,parseInt(_0xd3f6('0x6b'),0x8));extract(_0x1f1e16,{'dir':_0xd14f77},function(_0x38ff98){if(_0x38ff98){logger['error'](_0x38ff98);handleError(_0x38ff98,!![]);};var _0x17dfef=fs[_0xd3f6('0x6c')](_0xd14f77);if(_0x17dfef[_0xd3f6('0x38')]>0x1){removeReferences(_0x1f1e16,_0xd14f77);logger[_0xd3f6('0x2b')](_0xd3f6('0x6d'));return _0x267779(new Error(_0xd3f6('0x6d')));}var _0x760691=fs[_0xd3f6('0x6e')](path['join'](_0xd14f77,_0x17dfef[0x0]));if(_0x760691[_0xd3f6('0x6f')]()){removeReferences(_0x1f1e16,_0xd14f77);logger[_0xd3f6('0x2b')]('Invalid\x20plugin\x20structure');return _0x267779(new Error('Invalid\x20plugin\x20structure'));}if(_0x760691[_0xd3f6('0x70')]()){var _0x1f38ac=fs['readdirSync'](path['join'](_0xd14f77,_0x17dfef[0x0]));if(_0x1f38ac[_0xd3f6('0x38')]===0x0){removeReferences(_0x1f1e16,_0xd14f77);logger[_0xd3f6('0x2b')](_0xd3f6('0x6d'));return _0x267779(new Error('Invalid\x20plugin\x20structure'));}var _0x47f1ec=_0x1f38ac[_0xd3f6('0x71')](function(_0x2a9073){return _0x2a9073===_0xd3f6('0x72');});if(!_0x47f1ec){return _0x267779(new Error(_0xd3f6('0x73')));}var _0x130efe=fs[_0xd3f6('0x74')](path[_0xd3f6('0x50')](_0xd14f77,_0x17dfef[0x0],_0xd3f6('0x72')));var _0x51b36b=JSON['parse'](_0x130efe);if(_0xd3f6('0x20')==typeof _0x51b36b['name']){return _0x267779(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0xd3f6('0x20')==typeof _0x51b36b[_0xd3f6('0x31')]){return _0x267779(new Error(_0xd3f6('0x75')));}if(_0xd3f6('0x20')==typeof _0x51b36b[_0xd3f6('0x76')]){return _0x267779(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if('undefined'==typeof _0x51b36b[_0xd3f6('0x77')]){return _0x267779(new Error(_0xd3f6('0x78')));}if(_0x51b36b[_0xd3f6('0x31')]===_0xd3f6('0x79')){if(_0xd3f6('0x20')==typeof _0x51b36b['parameters'][_0xd3f6('0x7a')]){return _0x267779(new Error(_0xd3f6('0x7b')));}if('undefined'==typeof _0x51b36b['parameters'][_0xd3f6('0x7a')][_0xd3f6('0x7c')]&&_0xd3f6('0x20')==typeof _0x51b36b[_0xd3f6('0x77')][_0xd3f6('0x7a')][_0xd3f6('0x7d')]){return _0x267779(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x51b36b[_0xd3f6('0x31')]==='script'){if(_0xd3f6('0x20')==typeof _0x51b36b['parameters'][_0xd3f6('0x7e')]){return _0x267779(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if(_0xd3f6('0x20')==typeof _0x51b36b[_0xd3f6('0x77')]['scriptPath']){return _0x267779(new Error(_0xd3f6('0x7f')));}}else{return _0x267779(new Error(_0xd3f6('0x80')));}var _0x377890=_0x51b36b['name'];var _0x21f2c8=_0x51b36b[_0xd3f6('0x81')];var _0x46e066=_0x51b36b[_0xd3f6('0x31')];var _0x1ccb87=_0x51b36b[_0xd3f6('0x82')]?_0x51b36b['sidebar']:'always';var _0x345a93=_0x51b36b['icon']?_0x51b36b[_0xd3f6('0x83')]:_0xd3f6('0x84');var _0x19a195='';var _0x59d1fe='';var _0x50a3ca='';var _0x1ead41='';var _0x2ee286=_0x51b36b[_0xd3f6('0x76')];if(_0x46e066==='html'){if(_0xd3f6('0x20')!=typeof _0x51b36b[_0xd3f6('0x77')][_0xd3f6('0x7a')][_0xd3f6('0x7c')]){var _0x107fb8=_0x51b36b['parameters'][_0xd3f6('0x7a')][_0xd3f6('0x7c')];if(!/^(f|ht)tps?:\/\//i['test'](_0x107fb8)){_0x19a195=path[_0xd3f6('0x50')](_0xd3f6('0x85'),_0x4ecd9e,_0x17dfef[0x0],_0x107fb8);}else{_0x19a195=_0x107fb8;}}else{logger[_0xd3f6('0x64')](_0xd3f6('0x86'));}if(_0xd3f6('0x20')!=typeof _0x51b36b[_0xd3f6('0x77')][_0xd3f6('0x7a')][_0xd3f6('0x7d')]){var _0x21924d=_0x51b36b['parameters']['views'][_0xd3f6('0x7d')];if(!/^(f|ht)tps?:\/\//i['test'](_0x21924d)){_0x59d1fe=path['join'](_0xd3f6('0x85'),_0x4ecd9e,_0x17dfef[0x0],_0x21924d);}else{_0x59d1fe=_0x21924d;}}else{logger['info']('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x46e066===_0xd3f6('0x87')){_0x50a3ca=_0x51b36b['parameters'][_0xd3f6('0x7e')];_0x1ead41=_0x51b36b[_0xd3f6('0x77')][_0xd3f6('0x88')];if('undefined'!=typeof _0x51b36b[_0xd3f6('0x77')][_0xd3f6('0x7a')]){if(_0xd3f6('0x20')!=typeof _0x51b36b[_0xd3f6('0x77')][_0xd3f6('0x7a')][_0xd3f6('0x7c')]){var _0x107fb8=_0x51b36b['parameters'][_0xd3f6('0x7a')][_0xd3f6('0x7c')];if(!/^(f|ht)tps?:\/\//i[_0xd3f6('0x89')](_0x107fb8)){_0x19a195=path[_0xd3f6('0x50')](_0xd3f6('0x85'),_0x4ecd9e,_0x17dfef[0x0],_0x107fb8);}else{_0x19a195=_0x107fb8;}}if(_0xd3f6('0x20')!=typeof _0x51b36b[_0xd3f6('0x77')]['views']['agent']){var _0x21924d=_0x51b36b['parameters'][_0xd3f6('0x7a')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0xd3f6('0x89')](_0x21924d)){_0x59d1fe=path[_0xd3f6('0x50')](_0xd3f6('0x85'),_0x4ecd9e,_0x17dfef[0x0],_0x21924d);}else{_0x59d1fe=_0x21924d;}}}}var _0x1ce32d={'name':_0x377890,'description':_0x21f2c8,'path':path[_0xd3f6('0x50')](_0x4ecd9e,_0x17dfef[0x0]),'type':_0x46e066,'sidebar':_0x1ccb87,'icon':_0x345a93,'adminUrl':_0x19a195,'agentUrl':_0x59d1fe,'scriptName':_0x50a3ca,'scriptPath':_0x1ead41,'version':_0x2ee286};removeReferences(_0x1f1e16,null);return db[_0xd3f6('0x43')][_0xd3f6('0x8a')](_0x1ce32d)[_0xd3f6('0x27')](function(_0xfaed59){var _0x45cfe1={'role':_0x22e47b[_0xd3f6('0x8b')][_0xd3f6('0x8c')],'userProfileId':_0x22e47b[_0xd3f6('0x8b')][_0xd3f6('0x8d')]};if(!_0x45cfe1)throw new Error(_0xd3f6('0x8e'));if(_0x45cfe1[_0xd3f6('0x8c')]===_0xd3f6('0x8f')){var _0x6a54f2=_0xfaed59[_0xd3f6('0x90')]({'plain':!![]});return db[_0xd3f6('0x91')][_0xd3f6('0x4d')]({'where':{'name':_0xd3f6('0x29'),'userProfileId':_0x45cfe1[_0xd3f6('0x8d')]},'raw':!![]})[_0xd3f6('0x27')](function(_0x558362){if(_0x558362&&_0x558362[_0xd3f6('0x92')]===0x0){return db[_0xd3f6('0x2a')][_0xd3f6('0x8a')]({'name':_0x6a54f2['name'],'resourceId':_0x6a54f2['id'],'type':_0x558362[_0xd3f6('0x2d')],'sectionId':_0x558362['id']},{})[_0xd3f6('0x27')](function(){return _0xfaed59;});}else{return _0xfaed59;}})[_0xd3f6('0x47')](function(_0x196d5b){logger['error'](_0xd3f6('0x93'),_0x196d5b);throw _0x196d5b;});}return _0xfaed59;})['then'](respondWithResult(_0x11efac,null))['catch'](handleError(_0x11efac,null));}});}catch(_0x7fb082){_0x11efac[_0xd3f6('0x1d')](0x1f4)[_0xd3f6('0x2e')](_0x7fb082);}};function removeReferences(_0x152d9b,_0xaffb77){try{if(_0x152d9b){fs['unlinkSync'](_0x152d9b);logger[_0xd3f6('0x64')](_0xd3f6('0x94'));}if(_0xaffb77){rimraf(_0xaffb77,function(){});logger['info']('Extracted\x20folder\x20removed');}}catch(_0x3ae054){logger[_0xd3f6('0x2b')](_0x3ae054);}}exports[_0xd3f6('0x26')]=function(_0x53bac8,_0x4cdabf,_0x265e71){return db[_0xd3f6('0x43')][_0xd3f6('0x4d')]({'where':{'id':_0x53bac8[_0xd3f6('0x48')]['id']}})[_0xd3f6('0x27')](handleEntityNotFound(_0x4cdabf,null))['then'](saveUpdates(_0x53bac8[_0xd3f6('0x8b')],null))[_0xd3f6('0x27')](respondWithResult(_0x4cdabf,null))[_0xd3f6('0x47')](handleError(_0x4cdabf,null));};exports[_0xd3f6('0x95')]=function(_0x16e2b5,_0x4f18f2,_0xbbece5){return db[_0xd3f6('0x43')][_0xd3f6('0x4d')]({'where':{'id':_0x16e2b5[_0xd3f6('0x48')]['id']}})[_0xd3f6('0x27')](function(_0x1fbe10){if(_0x1fbe10){return _0x1fbe10['destroy']();}})[_0xd3f6('0x27')](function(_0x202c29){rimraf(path[_0xd3f6('0x50')](config['root'],'server/files/plugins',path[_0xd3f6('0x5f')](_0x202c29['path'])),function(){});return _0x202c29;})[_0xd3f6('0x27')](handleEntityNotFound(_0x4f18f2,null))[_0xd3f6('0x27')](respondWithStatusCode(_0x4f18f2,null))[_0xd3f6('0x47')](handleError(_0x4f18f2,null));};exports[_0xd3f6('0x96')]=function(_0x18ac94,_0x424b08,_0x131d2f){return BPromise['resolve']()[_0xd3f6('0x27')](function(){if(!_0x18ac94[_0xd3f6('0x37')][_0xd3f6('0x4f')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x18ac94[_0xd3f6('0x37')]['port']){throw new Error(_0xd3f6('0x97'));}var _0x3628a3=_0x18ac94[_0xd3f6('0x37')][_0xd3f6('0x98')]?_0x18ac94[_0xd3f6('0x37')][_0xd3f6('0x98')]+':'+_0x18ac94[_0xd3f6('0x37')][_0xd3f6('0x99')]:_0xd3f6('0x9a')+_0x18ac94[_0xd3f6('0x37')]['port'];var _0x86f390=_0x18ac94[_0xd3f6('0x37')][_0xd3f6('0x23')]?_0x18ac94[_0xd3f6('0x37')][_0xd3f6('0x23')]:!![];var _0x493662=_0x18ac94[_0xd3f6('0x37')][_0xd3f6('0x9b')]?_0x18ac94[_0xd3f6('0x37')][_0xd3f6('0x9b')]:null;var _0x4a9117={'method':_0x18ac94[_0xd3f6('0x9c')],'uri':util[_0xd3f6('0x52')](_0xd3f6('0x9d'),_0x3628a3,_0x18ac94[_0xd3f6('0x37')][_0xd3f6('0x4f')]),'json':_0x86f390,'resolveWithFullResponse':!![],'encoding':_0x493662,'qs':_0x18ac94['query']};if(_0x18ac94[_0xd3f6('0x9e')]){_0x4a9117[_0xd3f6('0x9e')]=_0x18ac94[_0xd3f6('0x9e')];if(_0x4a9117[_0xd3f6('0x9e')][_0xd3f6('0x9f')]){delete _0x4a9117['headers'][_0xd3f6('0x9f')];}}if(_0x4a9117[_0xd3f6('0x9e')][_0xd3f6('0xa0')]){delete _0x4a9117['headers']['content-type'];}return rp(_0x4a9117);})[_0xd3f6('0x27')](function(_0x4fb5c){if(_0x4fb5c){_0x424b08[_0xd3f6('0xa1')](_0x4fb5c[_0xd3f6('0x9e')]);logger[_0xd3f6('0x64')](_0x4fb5c[_0xd3f6('0x8b')]);if(_[_0xd3f6('0xa2')](_0x18ac94[_0xd3f6('0x37')]['path'],'download')&&_0x4fb5c['statusCode']==0x1f4){return _0x424b08[_0xd3f6('0xa3')](_0x4fb5c['statusCode']);}else{return _0x424b08['status'](_0x4fb5c[_0xd3f6('0xa4')])[_0xd3f6('0x2e')](_0x4fb5c['body']);}}else{return _0x424b08[_0xd3f6('0xa3')](0xc8);}})['catch'](handleError(_0x424b08,null));};exports[_0xd3f6('0xa5')]=function(_0x595c86,_0x4b9e92,_0x58f6bc){return BPromise['resolve']()[_0xd3f6('0x27')](function(){if(!_0x595c86[_0xd3f6('0x37')][_0xd3f6('0x4f')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x595c86[_0xd3f6('0x37')][_0xd3f6('0x99')]){throw new Error(_0xd3f6('0x97'));}var _0x41fcad=_0x595c86[_0xd3f6('0x37')][_0xd3f6('0x98')]?_0x595c86[_0xd3f6('0x37')][_0xd3f6('0x98')]+':'+_0x595c86[_0xd3f6('0x37')]['port']:'http://localhost:'+_0x595c86['query']['port'];var _0xd910ee=_0x595c86[_0xd3f6('0x37')][_0xd3f6('0x23')]?_0x595c86['query'][_0xd3f6('0x23')]:!![];var _0x55e6bc=_0x595c86[_0xd3f6('0x37')]['encoding']?_0x595c86[_0xd3f6('0x37')][_0xd3f6('0x9b')]:null;var _0x414be5={'method':_0x595c86[_0xd3f6('0x9c')],'uri':util['format'](_0xd3f6('0x9d'),_0x41fcad,_0x595c86[_0xd3f6('0x37')]['path']),'json':_0xd910ee,'resolveWithFullResponse':!![],'encoding':_0x55e6bc,'body':_0x595c86['body']};if(_0x595c86[_0xd3f6('0x9e')]){_0x414be5['headers']=_0x595c86[_0xd3f6('0x9e')];if(_0x414be5[_0xd3f6('0x9e')][_0xd3f6('0x9f')]){delete _0x414be5['headers'][_0xd3f6('0x9f')];}}if(_0x414be5['headers'][_0xd3f6('0xa0')]){delete _0x414be5[_0xd3f6('0x9e')][_0xd3f6('0xa0')];}return rp(_0x414be5);})[_0xd3f6('0x27')](function(_0x132b8e){if(_0x132b8e){_0x4b9e92[_0xd3f6('0xa1')](_0x132b8e[_0xd3f6('0x9e')]);logger[_0xd3f6('0x64')](_0x132b8e['body']);return _0x4b9e92[_0xd3f6('0x1d')](_0x132b8e['statusCode'])[_0xd3f6('0x2e')](_0x132b8e['body']);}else{return _0x4b9e92[_0xd3f6('0xa3')](0xc8);}})['catch'](handleError(_0x4b9e92,null));};
\ No newline at end of file
index 476d575..ecaea1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcddb=['update','emit','hook','exports','events','../../mysqldb','Plugin'];(function(_0x3f0101,_0x4b7241){var _0xe09fdc=function(_0x119dd4){while(--_0x119dd4){_0x3f0101['push'](_0x3f0101['shift']());}};_0xe09fdc(++_0x4b7241);}(_0xcddb,0x1c4));var _0xbcdd=function(_0xfd7abd,_0x31ca46){_0xfd7abd=_0xfd7abd-0x0;var _0x111fee=_0xcddb[_0xfd7abd];return _0x111fee;};'use strict';var EventEmitter=require(_0xbcdd('0x0'));var Plugin=require(_0xbcdd('0x1'))['db'][_0xbcdd('0x2')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xbcdd('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3239c1){return function(_0x38c955,_0x1119ba,_0x3fa08c){PluginEvents['emit'](_0x3239c1+':'+_0x38c955['id'],_0x38c955);PluginEvents[_0xbcdd('0x4')](_0x3239c1,_0x38c955);_0x3fa08c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Plugin[_0xbcdd('0x5')](e,emitEvent(event));}}module[_0xbcdd('0x6')]=PluginEvents;
\ No newline at end of file
+var _0x3dba=['save','remove','emit','setMaxListeners'];(function(_0x455284,_0x383648){var _0x3e70dc=function(_0x5297cf){while(--_0x5297cf){_0x455284['push'](_0x455284['shift']());}};_0x3e70dc(++_0x383648);}(_0x3dba,0x73));var _0xa3db=function(_0xaecc27,_0x3b15ab){_0xaecc27=_0xaecc27-0x0;var _0x2203ec=_0x3dba[_0xaecc27];return _0x2203ec;};'use strict';var EventEmitter=require('events');var Plugin=require('../../mysqldb')['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents[_0xa3db('0x0')](0x0);var events={'afterCreate':_0xa3db('0x1'),'afterUpdate':'update','afterDestroy':_0xa3db('0x2')};function emitEvent(_0x2ddae6){return function(_0x20b644,_0x189a24,_0x15fbf8){PluginEvents[_0xa3db('0x3')](_0x2ddae6+':'+_0x20b644['id'],_0x20b644);PluginEvents[_0xa3db('0x3')](_0x2ddae6,_0x20b644);_0x15fbf8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index 0b5d50c..9b98b15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x793b=['plugins','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./plugin.attributes','exports','define'];(function(_0x1da525,_0x1f5e04){var _0x3ca8c5=function(_0x21aba8){while(--_0x21aba8){_0x1da525['push'](_0x1da525['shift']());}};_0x3ca8c5(++_0x1f5e04);}(_0x793b,0x1ae));var _0xb793=function(_0x449d51,_0x3e8c8f){_0x449d51=_0x449d51-0x0;var _0x4ee845=_0x793b[_0x449d51];return _0x4ee845;};'use strict';var _=require(_0xb793('0x0'));var util=require(_0xb793('0x1'));var logger=require(_0xb793('0x2'))('api');var moment=require(_0xb793('0x3'));var BPromise=require(_0xb793('0x4'));var rp=require(_0xb793('0x5'));var fs=require('fs');var path=require(_0xb793('0x6'));var rimraf=require(_0xb793('0x7'));var config=require(_0xb793('0x8'));var attributes=require(_0xb793('0x9'));module[_0xb793('0xa')]=function(_0x3db996,_0x59fdbd){return _0x3db996[_0xb793('0xb')]('Plugin',attributes,{'tableName':_0xb793('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa12b=['util','api','bluebird','path','../../config/environment','./plugin.attributes','exports','define','Plugin','plugins','lodash'];(function(_0x3a647d,_0x255eef){var _0x46d4f3=function(_0xd05aed){while(--_0xd05aed){_0x3a647d['push'](_0x3a647d['shift']());}};_0x46d4f3(++_0x255eef);}(_0xa12b,0x175));var _0xba12=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa12b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xba12('0x0'));var util=require(_0xba12('0x1'));var logger=require('../../config/logger')(_0xba12('0x2'));var moment=require('moment');var BPromise=require(_0xba12('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xba12('0x4'));var rimraf=require('rimraf');var config=require(_0xba12('0x5'));var attributes=require(_0xba12('0x6'));module[_0xba12('0x7')]=function(_0x386df5,_0x15d26f){return _0x386df5[_0xba12('0x8')](_0xba12('0x9'),attributes,{'tableName':_0xba12('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dadc36b..900b22a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedb4=['rpc','../../config/environment','client','http','defaults','redis','socket.io-emitter','register','request','then','info','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Plugin,\x20%s,\x20%s','result','catch','Plugin','create','body','options','raw','CreatePlugin','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x105f0a,_0x5ed5ef){var _0x22b94a=function(_0xc34a2c){while(--_0xc34a2c){_0x105f0a['push'](_0x105f0a['shift']());}};_0x22b94a(++_0x5ed5ef);}(_0xedb4,0x156));var _0x4edb=function(_0x5ec454,_0xfcd77e){_0x5ec454=_0x5ec454-0x0;var _0x5ebf50=_0xedb4[_0x5ec454];return _0x5ebf50;};'use strict';var _=require('lodash');var util=require(_0x4edb('0x0'));var moment=require(_0x4edb('0x1'));var BPromise=require(_0x4edb('0x2'));var rs=require(_0x4edb('0x3'));var fs=require('fs');var Redis=require(_0x4edb('0x4'));var db=require(_0x4edb('0x5'))['db'];var utils=require(_0x4edb('0x6'));var logger=require(_0x4edb('0x7'))(_0x4edb('0x8'));var config=require(_0x4edb('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x4edb('0xa')][_0x4edb('0xb')]({'port':0x232a});config['redis']=_[_0x4edb('0xc')](config[_0x4edb('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x4edb('0xe'))(new Redis(config[_0x4edb('0xd')]));require('./plugin.socket')[_0x4edb('0xf')](socket);function respondWithRpcPromise(_0x7b717f,_0x86d377,_0x9938d6){return new BPromise(function(_0xf4fb7c,_0x265db3){return client[_0x4edb('0x10')](_0x7b717f,_0x9938d6)[_0x4edb('0x11')](function(_0x2186a5){logger[_0x4edb('0x12')]('Plugin,\x20%s,\x20%s',_0x86d377,_0x4edb('0x13'));logger[_0x4edb('0x14')](_0x4edb('0x15'),_0x86d377,'request\x20sent',JSON[_0x4edb('0x16')](_0x2186a5));if(_0x2186a5[_0x4edb('0x17')]){if(_0x2186a5['error'][_0x4edb('0x18')]===0x1f4){logger[_0x4edb('0x17')]('Plugin,\x20%s,\x20%s',_0x86d377,_0x2186a5[_0x4edb('0x17')][_0x4edb('0x19')]);return _0x265db3(_0x2186a5[_0x4edb('0x17')][_0x4edb('0x19')]);}logger[_0x4edb('0x17')]('Plugin,\x20%s,\x20%s',_0x86d377,_0x2186a5[_0x4edb('0x17')]['message']);return _0xf4fb7c(_0x2186a5[_0x4edb('0x17')]['message']);}else{logger[_0x4edb('0x12')](_0x4edb('0x1a'),_0x86d377,_0x4edb('0x13'));_0xf4fb7c(_0x2186a5[_0x4edb('0x1b')]['message']);}})[_0x4edb('0x1c')](function(_0xdf78af){logger['error'](_0x4edb('0x1a'),_0x86d377,_0xdf78af);_0x265db3(_0xdf78af);});});}exports['CreatePlugin']=function(_0x596edf){var _0x281bc6=this;return new Promise(function(_0x11d9a8,_0x2a0eec){return db[_0x4edb('0x1d')][_0x4edb('0x1e')](_0x596edf[_0x4edb('0x1f')],{'raw':_0x596edf[_0x4edb('0x20')]?_0x596edf[_0x4edb('0x20')][_0x4edb('0x21')]===undefined?!![]:![]:!![]})[_0x4edb('0x11')](function(_0x3deb23){logger[_0x4edb('0x12')]('CreatePlugin',_0x596edf);logger[_0x4edb('0x14')](_0x4edb('0x22'),_0x596edf,JSON[_0x4edb('0x16')](_0x3deb23));_0x11d9a8(_0x3deb23);})[_0x4edb('0x1c')](function(_0x4a9a84){logger[_0x4edb('0x17')](_0x4edb('0x22'),_0x4a9a84['message'],_0x596edf);_0x2a0eec(_0x281bc6[_0x4edb('0x17')](0x1f4,_0x4a9a84[_0x4edb('0x19')]));});});};
\ No newline at end of file
+var _0x6e2a=['options','raw','CreatePlugin','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','Plugin','create','body'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0x6e2a,0x18f));var _0xa6e2=function(_0x54c42d,_0x23975d){_0x54c42d=_0x54c42d-0x0;var _0x16d161=_0x6e2a[_0x54c42d];return _0x16d161;};'use strict';var _=require(_0xa6e2('0x0'));var util=require(_0xa6e2('0x1'));var moment=require(_0xa6e2('0x2'));var BPromise=require('bluebird');var rs=require(_0xa6e2('0x3'));var fs=require('fs');var Redis=require(_0xa6e2('0x4'));var db=require(_0xa6e2('0x5'))['db'];var utils=require(_0xa6e2('0x6'));var logger=require(_0xa6e2('0x7'))(_0xa6e2('0x8'));var config=require(_0xa6e2('0x9'));var jayson=require(_0xa6e2('0xa'));var client=jayson[_0xa6e2('0xb')][_0xa6e2('0xc')]({'port':0x232a});config[_0xa6e2('0xd')]=_[_0xa6e2('0xe')](config[_0xa6e2('0xd')],{'host':_0xa6e2('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xa6e2('0x10'))[_0xa6e2('0x11')](socket);function respondWithRpcPromise(_0x1b5a90,_0x58d8b0,_0x47d91a){return new BPromise(function(_0x5ae0b1,_0x60141){return client[_0xa6e2('0x12')](_0x1b5a90,_0x47d91a)[_0xa6e2('0x13')](function(_0x4def53){logger[_0xa6e2('0x14')](_0xa6e2('0x15'),_0x58d8b0,_0xa6e2('0x16'));logger[_0xa6e2('0x17')](_0xa6e2('0x18'),_0x58d8b0,'request\x20sent',JSON[_0xa6e2('0x19')](_0x4def53));if(_0x4def53[_0xa6e2('0x1a')]){if(_0x4def53[_0xa6e2('0x1a')][_0xa6e2('0x1b')]===0x1f4){logger['error'](_0xa6e2('0x15'),_0x58d8b0,_0x4def53[_0xa6e2('0x1a')][_0xa6e2('0x1c')]);return _0x60141(_0x4def53[_0xa6e2('0x1a')][_0xa6e2('0x1c')]);}logger[_0xa6e2('0x1a')](_0xa6e2('0x15'),_0x58d8b0,_0x4def53['error'][_0xa6e2('0x1c')]);return _0x5ae0b1(_0x4def53[_0xa6e2('0x1a')][_0xa6e2('0x1c')]);}else{logger[_0xa6e2('0x14')]('Plugin,\x20%s,\x20%s',_0x58d8b0,_0xa6e2('0x16'));_0x5ae0b1(_0x4def53['result'][_0xa6e2('0x1c')]);}})[_0xa6e2('0x1d')](function(_0x50843e){logger[_0xa6e2('0x1a')](_0xa6e2('0x15'),_0x58d8b0,_0x50843e);_0x60141(_0x50843e);});});}exports['CreatePlugin']=function(_0x43401c){var _0x4d7918=this;return new Promise(function(_0xcbfa36,_0x184afb){return db[_0xa6e2('0x1e')][_0xa6e2('0x1f')](_0x43401c[_0xa6e2('0x20')],{'raw':_0x43401c['options']?_0x43401c[_0xa6e2('0x21')][_0xa6e2('0x22')]===undefined?!![]:![]:!![]})['then'](function(_0x417369){logger[_0xa6e2('0x14')](_0xa6e2('0x23'),_0x43401c);logger[_0xa6e2('0x17')](_0xa6e2('0x23'),_0x43401c,JSON[_0xa6e2('0x19')](_0x417369));_0xcbfa36(_0x417369);})[_0xa6e2('0x1d')](function(_0x414a65){logger['error'](_0xa6e2('0x23'),_0x414a65[_0xa6e2('0x1c')],_0x43401c);_0x184afb(_0x4d7918[_0xa6e2('0x1a')](0x1f4,_0x414a65['message']));});});};
\ No newline at end of file
index 8488bb0..d4be42e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe76=['plugin:','save','remove','update','emit','register'];(function(_0x125098,_0x5da101){var _0x42d4de=function(_0xff5db5){while(--_0xff5db5){_0x125098['push'](_0x125098['shift']());}};_0x42d4de(++_0x5da101);}(_0xbe76,0x127));var _0x6be7=function(_0x6adec3,_0x3d264a){_0x6adec3=_0x6adec3-0x0;var _0xf68ec2=_0xbe76[_0x6adec3];return _0xf68ec2;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0x6be7('0x0'),_0x6be7('0x1'),_0x6be7('0x2')];function createListener(_0x21f452,_0x41a1a3){return function(_0x22ba80){_0x41a1a3[_0x6be7('0x3')](_0x21f452,_0x22ba80);};}function removeListener(_0xdbd213,_0x194ddb){return function(){PluginEvents['removeListener'](_0xdbd213,_0x194ddb);};}exports[_0x6be7('0x4')]=function(_0x1526b0){for(var _0x2b9351=0x0,_0x12a016=events['length'];_0x2b9351<_0x12a016;_0x2b9351++){var _0x2445ea=events[_0x2b9351];var _0xa5ef4b=createListener(_0x6be7('0x5')+_0x2445ea,_0x1526b0);PluginEvents['on'](_0x2445ea,_0xa5ef4b);}};
\ No newline at end of file
+var _0xd497=['./plugin.events','remove','update','removeListener','register','length','plugin:'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xd497,0x1b9));var _0x7d49=function(_0x308c00,_0x3cbd67){_0x308c00=_0x308c00-0x0;var _0x2b21b2=_0xd497[_0x308c00];return _0x2b21b2;};'use strict';var PluginEvents=require(_0x7d49('0x0'));var events=['save',_0x7d49('0x1'),_0x7d49('0x2')];function createListener(_0x2428b6,_0x2706ca){return function(_0x20f4a9){_0x2706ca['emit'](_0x2428b6,_0x20f4a9);};}function removeListener(_0x488a7c,_0x196150){return function(){PluginEvents[_0x7d49('0x3')](_0x488a7c,_0x196150);};}exports[_0x7d49('0x4')]=function(_0x1cc6a2){for(var _0x1702ba=0x0,_0x1bc1a4=events[_0x7d49('0x5')];_0x1702ba<_0x1bc1a4;_0x1702ba++){var _0x5c1576=events[_0x1702ba];var _0x3b656b=createListener(_0x7d49('0x6')+_0x5c1576,_0x1cc6a2);PluginEvents['on'](_0x5c1576,_0x3b656b);}};
\ No newline at end of file
index 79b9150..5619a9a 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(_0x5bed47,_0x23af28){var _0x3d7ce8=function(_0x1e8f16){while(--_0x1e8f16){_0x5bed47['push'](_0x5bed47['shift']());}};_0x3d7ce8(++_0x23af28);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'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(_0x28cbe6,_0x2300fd){var _0x52ab26=function(_0x4b540b){while(--_0x4b540b){_0x28cbe6['push'](_0x28cbe6['shift']());}};_0x52ab26(++_0x2300fd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'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 f722e43..2dd187b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc788=['body','script','join','../../files/plugins','chdir','dirname','start','dump','send','update','stop','hasOwnProperty','Unknown\x20status','params','delete','Unknown\x20id','lodash','../../config/pm2','../../config/logger','child_process','exec','bluebird','sendStatus','status','error','stack','name','info','index','list','then','reject','motion2','catch','show','describe'];(function(_0x4a09c6,_0x54ce5e){var _0x25d834=function(_0x272ccc){while(--_0x272ccc){_0x4a09c6['push'](_0x4a09c6['shift']());}};_0x25d834(++_0x54ce5e);}(_0xc788,0xc4));var _0x8c78=function(_0x21ccfc,_0x48834e){_0x21ccfc=_0x21ccfc-0x0;var _0x279454=_0xc788[_0x21ccfc];return _0x279454;};'use strict';var _=require(_0x8c78('0x0'));var pm2=require(_0x8c78('0x1'));var logger=require(_0x8c78('0x2'))('api');var path=require('path');var exec=require(_0x8c78('0x3'))[_0x8c78('0x4')];var BPromise=require(_0x8c78('0x5'));function handleEntityNotFound(_0x1d0670,_0x386f0a){return function(_0x5498f9){if(!_0x5498f9){_0x1d0670[_0x8c78('0x6')](0x194);;}return _0x5498f9;};}function respondWithResult(_0x4555da,_0x329152){_0x329152=_0x329152||0xc8;return function(_0x1ac27f){if(_0x1ac27f){return _0x4555da[_0x8c78('0x7')](_0x329152)['json'](_0x1ac27f);}return null;};}function handleError(_0x247188,_0x299d9d){_0x299d9d=_0x299d9d||0x1f4;return function(_0x9bc075){logger[_0x8c78('0x8')](_0x9bc075[_0x8c78('0x9')]);if(_0x9bc075[_0x8c78('0xa')]){delete _0x9bc075['name'];}_0x247188[_0x8c78('0x7')](_0x299d9d)['send'](_0x9bc075);};}function execChildProcess(){return new BPromise(function(_0x3d55f0,_0x45935a){exec('npm\x20install',function(_0x1a05a7,_0x95e78e,_0x5ee642){logger[_0x8c78('0xb')](_0x95e78e);logger['info'](_0x5ee642);if(_0x1a05a7){logger['error'](_0x1a05a7);return _0x45935a(_0x1a05a7);}return _0x3d55f0(_0x95e78e);});});}exports[_0x8c78('0xc')]=function(_0x1b1d0e,_0x26178c){return pm2[_0x8c78('0xd')]()[_0x8c78('0xe')](function(_0x3d1306){if(_0x3d1306){var _0xe5f8ae=_[_0x8c78('0xf')](_0x3d1306,function(_0x2f44af){return _0x2f44af[_0x8c78('0xa')]==='express'||_0x2f44af[_0x8c78('0xa')]===_0x8c78('0x10');});return{'rows':_0xe5f8ae,'count':_0xe5f8ae['length']};}return null;})[_0x8c78('0xe')](respondWithResult(_0x26178c,null))[_0x8c78('0x11')](handleError(_0x26178c,null));};exports[_0x8c78('0x12')]=function(_0x23824e,_0x2a982c){return pm2[_0x8c78('0x13')](_0x23824e['params']['id'])['then'](respondWithResult(_0x2a982c,null))[_0x8c78('0xe')](handleEntityNotFound(_0x2a982c,null))['catch'](handleError(_0x2a982c,null));};exports['create']=function(_0xece4f0,_0x56c191){if(_0xece4f0[_0x8c78('0x14')][_0x8c78('0xa')]&&_0xece4f0['body'][_0x8c78('0x15')]){var _0x5b111b=path[_0x8c78('0x16')](__dirname,_0x8c78('0x17'),_0xece4f0['body'][_0x8c78('0x15')]);var _0x188cc3=process['cwd']();process[_0x8c78('0x18')](path[_0x8c78('0x19')](_0x5b111b));return execChildProcess()[_0x8c78('0xe')](function(_0x9581c6){process[_0x8c78('0x18')](_0x188cc3);return pm2[_0x8c78('0x1a')]({'name':_0xece4f0[_0x8c78('0x14')][_0x8c78('0xa')],'script':_0x5b111b});})[_0x8c78('0xe')](function(_0x4a7d20){pm2[_0x8c78('0x1b')]();return _0x4a7d20[0x0];})[_0x8c78('0xe')](respondWithResult(_0x56c191,0xc9))[_0x8c78('0x11')](handleError(_0x56c191,null));}else{return _0x56c191['status'](0x1f4)[_0x8c78('0x1c')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x8c78('0x1d')]=function(_0x24f9a7,_0x8d9ff9){if(_0x24f9a7['body']['id']){delete _0x24f9a7[_0x8c78('0x14')]['id'];}var _0x2568d5={'online':'restart','stopped':_0x8c78('0x1e')};if(_0x2568d5[_0x8c78('0x1f')](_0x24f9a7[_0x8c78('0x14')][_0x8c78('0x7')])){return pm2[_0x2568d5[_0x24f9a7[_0x8c78('0x14')][_0x8c78('0x7')]]](_0x24f9a7['params']['id'])[_0x8c78('0xe')](respondWithResult(_0x8d9ff9,0xc8))['catch'](handleError(_0x8d9ff9,null));}else{return _0x8d9ff9[_0x8c78('0x7')](0x1f4)[_0x8c78('0x1c')]({'message':_0x8c78('0x20')});}};exports['destroy']=function(_0x1f1a0c,_0x3816d2){if(_0x1f1a0c['body']['id']){delete _0x1f1a0c[_0x8c78('0x14')]['id'];}if(_0x1f1a0c[_0x8c78('0x21')]['id']){return pm2[_0x8c78('0x22')](_0x1f1a0c['params']['id'])[_0x8c78('0xe')](function(_0x63307e){pm2[_0x8c78('0x1b')]();return _0x63307e[0x0];})['then'](respondWithResult(_0x3816d2,null))[_0x8c78('0x11')](handleError(_0x3816d2,null));}else{return _0x3816d2[_0x8c78('0x7')](0x1f4)['send']({'message':_0x8c78('0x23')});}};
\ No newline at end of file
+var _0x76dc=['catch','create','body','script','join','../../files/plugins','cwd','chdir','dirname','dump','send','Missing\x20name\x20and/or\x20path','update','restart','hasOwnProperty','Unknown\x20status','destroy','Unknown\x20id','lodash','../../config/pm2','../../config/logger','api','child_process','exec','sendStatus','json','stack','name','status','npm\x20install','info','error','index','list','then','reject','express','motion2','describe','params'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x76dc,0x1f2));var _0xc76d=function(_0x24229a,_0x17e1d7){_0x24229a=_0x24229a-0x0;var _0x1a269f=_0x76dc[_0x24229a];return _0x1a269f;};'use strict';var _=require(_0xc76d('0x0'));var pm2=require(_0xc76d('0x1'));var logger=require(_0xc76d('0x2'))(_0xc76d('0x3'));var path=require('path');var exec=require(_0xc76d('0x4'))[_0xc76d('0x5')];var BPromise=require('bluebird');function handleEntityNotFound(_0x300f11,_0x50ed3a){return function(_0x507ea7){if(!_0x507ea7){_0x300f11[_0xc76d('0x6')](0x194);;}return _0x507ea7;};}function respondWithResult(_0x29ab70,_0x1c86fc){_0x1c86fc=_0x1c86fc||0xc8;return function(_0x4832bd){if(_0x4832bd){return _0x29ab70['status'](_0x1c86fc)[_0xc76d('0x7')](_0x4832bd);}return null;};}function handleError(_0x114572,_0x18574f){_0x18574f=_0x18574f||0x1f4;return function(_0x532d6a){logger['error'](_0x532d6a[_0xc76d('0x8')]);if(_0x532d6a[_0xc76d('0x9')]){delete _0x532d6a['name'];}_0x114572[_0xc76d('0xa')](_0x18574f)['send'](_0x532d6a);};}function execChildProcess(){return new BPromise(function(_0xd5c042,_0x2e1807){exec(_0xc76d('0xb'),function(_0x95e06b,_0x3f59ea,_0x193c4a){logger[_0xc76d('0xc')](_0x3f59ea);logger[_0xc76d('0xc')](_0x193c4a);if(_0x95e06b){logger[_0xc76d('0xd')](_0x95e06b);return _0x2e1807(_0x95e06b);}return _0xd5c042(_0x3f59ea);});});}exports[_0xc76d('0xe')]=function(_0x1a7b47,_0x24e88e){return pm2[_0xc76d('0xf')]()[_0xc76d('0x10')](function(_0x5cda20){if(_0x5cda20){var _0x8696db=_[_0xc76d('0x11')](_0x5cda20,function(_0x5bbed9){return _0x5bbed9[_0xc76d('0x9')]===_0xc76d('0x12')||_0x5bbed9[_0xc76d('0x9')]===_0xc76d('0x13');});return{'rows':_0x8696db,'count':_0x8696db['length']};}return null;})[_0xc76d('0x10')](respondWithResult(_0x24e88e,null))['catch'](handleError(_0x24e88e,null));};exports['show']=function(_0x45a83e,_0x31b032){return pm2[_0xc76d('0x14')](_0x45a83e[_0xc76d('0x15')]['id'])[_0xc76d('0x10')](respondWithResult(_0x31b032,null))['then'](handleEntityNotFound(_0x31b032,null))[_0xc76d('0x16')](handleError(_0x31b032,null));};exports[_0xc76d('0x17')]=function(_0xa0c5b6,_0x1c6d5b){if(_0xa0c5b6[_0xc76d('0x18')]['name']&&_0xa0c5b6[_0xc76d('0x18')][_0xc76d('0x19')]){var _0x5dffde=path[_0xc76d('0x1a')](__dirname,_0xc76d('0x1b'),_0xa0c5b6[_0xc76d('0x18')][_0xc76d('0x19')]);var _0x18f546=process[_0xc76d('0x1c')]();process[_0xc76d('0x1d')](path[_0xc76d('0x1e')](_0x5dffde));return execChildProcess()[_0xc76d('0x10')](function(_0x20e09c){process[_0xc76d('0x1d')](_0x18f546);return pm2['start']({'name':_0xa0c5b6[_0xc76d('0x18')][_0xc76d('0x9')],'script':_0x5dffde});})['then'](function(_0x637d68){pm2[_0xc76d('0x1f')]();return _0x637d68[0x0];})['then'](respondWithResult(_0x1c6d5b,0xc9))[_0xc76d('0x16')](handleError(_0x1c6d5b,null));}else{return _0x1c6d5b[_0xc76d('0xa')](0x1f4)[_0xc76d('0x20')]({'message':_0xc76d('0x21')});}};exports[_0xc76d('0x22')]=function(_0x1949c4,_0x89ee5){if(_0x1949c4['body']['id']){delete _0x1949c4['body']['id'];}var _0x285430={'online':_0xc76d('0x23'),'stopped':'stop'};if(_0x285430[_0xc76d('0x24')](_0x1949c4[_0xc76d('0x18')][_0xc76d('0xa')])){return pm2[_0x285430[_0x1949c4['body'][_0xc76d('0xa')]]](_0x1949c4['params']['id'])[_0xc76d('0x10')](respondWithResult(_0x89ee5,0xc8))[_0xc76d('0x16')](handleError(_0x89ee5,null));}else{return _0x89ee5['status'](0x1f4)[_0xc76d('0x20')]({'message':_0xc76d('0x25')});}};exports[_0xc76d('0x26')]=function(_0x2cf501,_0x4feeda){if(_0x2cf501[_0xc76d('0x18')]['id']){delete _0x2cf501['body']['id'];}if(_0x2cf501[_0xc76d('0x15')]['id']){return pm2['delete'](_0x2cf501[_0xc76d('0x15')]['id'])[_0xc76d('0x10')](function(_0x5dc369){pm2['dump']();return _0x5dc369[0x0];})['then'](respondWithResult(_0x4feeda,null))['catch'](handleError(_0x4feeda,null));}else{return _0x4feeda[_0xc76d('0xa')](0x1f4)[_0xc76d('0x20')]({'message':_0xc76d('0x27')});}};
\ No newline at end of file
index c8aa9d8..59586aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2015=['/queues','isAuthenticated','getQueues','express','Router','../../components/auth/service','./realtime.controller','get'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x2015,0x193));var _0x5201=function(_0x5ad257,_0x51e4a1){_0x5ad257=_0x5ad257-0x0;var _0x22afeb=_0x2015[_0x5ad257];return _0x22afeb;};'use strict';var express=require(_0x5201('0x0'));var router=express[_0x5201('0x1')]();var auth=require(_0x5201('0x2'));var controller=require(_0x5201('0x3'));router[_0x5201('0x4')](_0x5201('0x5'),auth[_0x5201('0x6')](),controller[_0x5201('0x7')]);module['exports']=router;
\ No newline at end of file
+var _0x6db4=['Router','../../components/auth/service','./realtime.controller','get','/queues','isAuthenticated','exports'];(function(_0x4a69ae,_0xfe73e4){var _0x38daf6=function(_0x2b52f2){while(--_0x2b52f2){_0x4a69ae['push'](_0x4a69ae['shift']());}};_0x38daf6(++_0xfe73e4);}(_0x6db4,0x111));var _0x46db=function(_0x1fcd03,_0x1f96d8){_0x1fcd03=_0x1fcd03-0x0;var _0x274343=_0x6db4[_0x1fcd03];return _0x274343;};'use strict';var express=require('express');var router=express[_0x46db('0x0')]();var auth=require(_0x46db('0x1'));var controller=require(_0x46db('0x2'));router[_0x46db('0x3')](_0x46db('0x4'),auth[_0x46db('0x5')](),controller['getQueues']);module[_0x46db('0x6')]=router;
\ No newline at end of file
index 2437a5a..7e4d3ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f4=['findAll','QueueId','User','catch','util','lodash','jayson/promise','../../components/parsers/qs','api','../../mysqldb','http','client','offset','undefined','count','limit','status','Content-Range','json','stack','name','send','getQueues','chat','sms','openchannel','fax','voice','resolve','then','channel','query','toLowerCase','Invalid\x20channel','startCase','Queue','map','fieldName','key','user','role','userProfileId','type','QueueCampaigns','Queues','UserProfile','findAndCountAll','request','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','available','paused','outbound','push','pTalking','originated','message','dialActive','dialMethod','Trunk','erlangCalls','erlangCallToSecond','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','get','loggedInDb','waiting','talking','agents','find','merge','pick','online','getMembers','length','UserId','Pause'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x32f4,0x154));var _0x432f=function(_0x466fed,_0x5193fb){_0x466fed=_0x466fed-0x0;var _0x5c42d9=_0x32f4[_0x466fed];return _0x5c42d9;};'use strict';var util=require(_0x432f('0x0'));var _=require(_0x432f('0x1'));var jayson=require(_0x432f('0x2'));var qs=require(_0x432f('0x3'));var logger=require('../../config/logger')(_0x432f('0x4'));var db=require(_0x432f('0x5'))['db'];var client=jayson['client'][_0x432f('0x6')]({'port':0x232a});var routingClient=jayson[_0x432f('0x7')][_0x432f('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x355b02,_0x2f5f03){return function(_0x5d8cc0){if(_0x5d8cc0){var _0x5b5f08=typeof _0x2f5f03[_0x432f('0x8')]===_0x432f('0x9')&&typeof _0x2f5f03['limit']===_0x432f('0x9');var _0x5aaf1a=_0x5d8cc0[_0x432f('0xa')];var _0x340fe9=_0x5b5f08?0x0:_0x2f5f03[_0x432f('0x8')];var _0x13369a=_0x5b5f08?_0x5d8cc0[_0x432f('0xa')]:_0x2f5f03['offset']+_0x2f5f03[_0x432f('0xb')];var _0x5758d7;if(_0x13369a>=_0x5aaf1a){_0x13369a=_0x5aaf1a;_0x5758d7=0xc8;}else{_0x5758d7=0xce;}_0x355b02[_0x432f('0xc')](_0x5758d7);return _0x355b02['set'](_0x432f('0xd'),_0x340fe9+'-'+_0x13369a+'/'+_0x5aaf1a)[_0x432f('0xe')](_0x5d8cc0);}return null;};}function handleError(_0x53459c,_0x457389){_0x457389=_0x457389||0x1f4;return function(_0x29f7d2){logger['error'](_0x29f7d2[_0x432f('0xf')]);if(_0x29f7d2[_0x432f('0x10')]){delete _0x29f7d2['name'];}_0x53459c['status'](_0x457389)[_0x432f('0x11')](_0x29f7d2);};}exports[_0x432f('0x12')]=function(_0x34add6,_0x453725){var _0x419bfe=['mail',_0x432f('0x13'),_0x432f('0x14'),_0x432f('0x15'),_0x432f('0x16'),'whatsapp',_0x432f('0x17')];var _0x30f231={'count':0x0,'rows':[]},_0x42c2d2={},_0x243cf;Promise[_0x432f('0x18')]()[_0x432f('0x19')](function(){if(_0x34add6['query'][_0x432f('0x1a')]){if(!_['includes'](_0x419bfe,_0x34add6[_0x432f('0x1b')][_0x432f('0x1a')][_0x432f('0x1c')]()))throw new Error(_0x432f('0x1d'));_0x243cf=_0x34add6[_0x432f('0x1b')][_0x432f('0x1a')][_0x432f('0x1c')]();}var _0x1899e6=_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x1f');var _0x40176d=_[_0x432f('0x20')](db[_0x1899e6]['rawAttributes'],function(_0x5940bd){return{'name':_0x5940bd[_0x432f('0x21')],'type':_0x5940bd['type'][_0x432f('0x22')]};});_0x42c2d2=qs['getOptions'](_0x40176d,_0x34add6);if(_0x34add6[_0x432f('0x23')][_0x432f('0x24')]===_0x432f('0x23')){var _0x89ea50={'params':{'id':_0x34add6[_0x432f('0x23')][_0x432f('0x25')]},'query':{'section':_0x243cf==='voice'&&_0x34add6[_0x432f('0x1b')][_0x432f('0x26')]==='outbound'?_0x432f('0x27'):_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x28'),'type':_0x34add6[_0x432f('0x1b')][_0x432f('0x26')],'nolimit':!![],'sort':_0x432f('0x10'),'filter':_0x34add6[_0x432f('0x1b')]['filter']}};return db[_0x432f('0x29')]['getResources'](_0x89ea50);}return db[_0x1899e6][_0x432f('0x2a')](_0x42c2d2);})['then'](function(_0x20404d){_0x30f231['count']=_0x20404d[_0x432f('0xa')];var _0x489ba6=_0x243cf===_0x432f('0x17')?client:routingClient;return _0x489ba6[_0x432f('0x2b')](_[_0x432f('0x1e')](_0x243cf)+'Queues',_0x34add6)[_0x432f('0x19')](function(_0x24406a){if(_0x24406a['error'])throw new Error(util['format'](_0x432f('0x2c'),_0x243cf));var _0x39dbcb=_0x24406a[_0x432f('0x2d')];var _0x3581c2=[_0x432f('0x2e'),_0x432f('0x2f'),'waiting','talking',_0x432f('0x30')];if(_0x243cf===_0x432f('0x17')&&_0x34add6[_0x432f('0x1b')]['type']===_0x432f('0x31')){_0x3581c2[_0x432f('0x32')](_0x432f('0x33'),_0x432f('0x34'),_0x432f('0x35'),_0x432f('0x36'),_0x432f('0x37'),_0x432f('0x38'),'startPredictive','startProgressive',_0x432f('0x39'),_0x432f('0x3a'),'erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval',_0x432f('0x3b'),_0x432f('0x3c'),'predictiveIntervalAvailable',_0x432f('0x3d'),_0x432f('0x3e'),_0x432f('0x3f'),'predictiveIntervalDroppedCallsCallersExit',_0x432f('0x40'),_0x432f('0x41'));}var _0x499e58=_0x20404d[_0x432f('0x42')][_0x432f('0x20')](function(_0x59e111){var _0x28da2e=_0x59e111[_0x432f('0x43')]({'plain':!![]});_0x28da2e[_0x432f('0x30')]=0x0;_0x28da2e[_0x432f('0x44')]=0x0;_0x28da2e[_0x432f('0x2e')]=0x0;_0x28da2e[_0x432f('0x2f')]=0x0;_0x28da2e[_0x432f('0x30')]=0x0;_0x28da2e[_0x432f('0x45')]=0x0;if(_0x243cf===_0x432f('0x17')){_0x28da2e[_0x432f('0x46')]=0x0;if(_0x34add6[_0x432f('0x1b')]['type']===_0x432f('0x31')){_0x28da2e['pTalking']=0x0;_0x28da2e[_0x432f('0x34')]=0x0;}}_0x28da2e[_0x432f('0x47')]=[];var _0x4f38e5=_[_0x432f('0x48')](_0x39dbcb['rows'],['id',_0x28da2e['id']]);if(_0x4f38e5)_[_0x432f('0x49')](_0x28da2e,_[_0x432f('0x4a')](_0x4f38e5,_0x3581c2));if(_0x243cf==='voice'){return _0x59e111['getAgents']({'attributes':['id',_0x432f('0x10'),_0x432f('0x4b')],'joinTableAttributes':[],'raw':!![]})[_0x432f('0x19')](function(_0x121687){return _0x59e111[_0x432f('0x4c')]({'raw':!![]})['then'](function(_0x5dade1){for(var _0x53516d=0x0;_0x53516d<_0x121687[_0x432f('0x4d')];_0x53516d++){var _0x2c1bd1=_['find'](_0x5dade1,[_0x432f('0x4e'),_0x121687[_0x53516d]['id']]);var _0x841572={'id':_0x121687[_0x53516d]['id'],'name':_0x121687[_0x53516d][_0x432f('0x10')],'online':Boolean(_0x121687[_0x53516d][_0x432f('0x4b')]),'paused':_0x2c1bd1?Boolean(_0x2c1bd1[_0x432f('0x30')]):![]};if(_0x841572[_0x432f('0x4b')])_0x28da2e[_0x432f('0x44')]++;if(_0x841572[_0x432f('0x30')])_0x28da2e[_0x432f('0x30')]++;_0x28da2e['agents'][_0x432f('0x32')](_0x841572);}return _0x28da2e;});});}else{var _0xd8264f='User'+_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x1f');var _0x12b7a8=_0x243cf+_0x432f('0x4f');return db[_0xd8264f][_0x432f('0x50')]({'where':{[_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x51')]:_0x59e111['id']},'raw':!![]})[_0x432f('0x19')](function(_0x42022d){return db[_0x432f('0x52')][_0x432f('0x50')]({'attributes':['id',_0x432f('0x10'),_0x432f('0x4b'),_0x12b7a8],'where':{'id':_[_0x432f('0x20')](_0x42022d,'UserId'),'role':'agent'},'raw':!![]});})[_0x432f('0x19')](function(_0x34dca6){for(var _0xcbdcc0=0x0;_0xcbdcc0<_0x34dca6[_0x432f('0x4d')];_0xcbdcc0++){var _0x12fd92={'id':_0x34dca6[_0xcbdcc0]['id'],'name':_0x34dca6[_0xcbdcc0]['name'],'online':Boolean(_0x34dca6[_0xcbdcc0][_0x432f('0x4b')]),'paused':Boolean(_0x34dca6[_0xcbdcc0][_0x12b7a8])};if(_0x12fd92[_0x432f('0x4b')])_0x28da2e[_0x432f('0x44')]++;if(_0x12fd92[_0x432f('0x30')])_0x28da2e[_0x432f('0x30')]++;_0x28da2e[_0x432f('0x47')][_0x432f('0x32')](_0x12fd92);}return _0x28da2e;});}});return Promise['all'](_0x499e58);});})[_0x432f('0x19')](function(_0x2dd9c2){_0x30f231[_0x432f('0x42')]=_0x2dd9c2;return _0x30f231;})['then'](respondWithFilteredResult(_0x453725,_0x42c2d2))[_0x432f('0x53')](handleError(_0x453725,null));};
\ No newline at end of file
+var _0x2620=['getQueues','mail','sms','openchannel','fax','whatsapp','voice','query','channel','toLowerCase','Invalid\x20channel','startCase','Queue','map','fieldName','key','getOptions','user','role','userProfileId','type','outbound','filter','UserProfile','getResources','findAndCountAll','count','request','then','format','result','loggedIn','waiting','talking','paused','push','originated','message','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','predictiveIntervalAvailable','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','get','pTalking','agents','find','pick','getAgents','online','getMembers','length','loggedInDb','User','QueueId','findAll','agent','catch','util','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','api','client','http','offset','status','set','json','error','stack','name'];(function(_0x222ae0,_0x75d0c4){var _0x5c39ed=function(_0x2ea853){while(--_0x2ea853){_0x222ae0['push'](_0x222ae0['shift']());}};_0x5c39ed(++_0x75d0c4);}(_0x2620,0x95));var _0x0262=function(_0x5b5eb4,_0x117c87){_0x5b5eb4=_0x5b5eb4-0x0;var _0x42af53=_0x2620[_0x5b5eb4];return _0x42af53;};'use strict';var util=require(_0x0262('0x0'));var _=require(_0x0262('0x1'));var jayson=require(_0x0262('0x2'));var qs=require(_0x0262('0x3'));var logger=require(_0x0262('0x4'))(_0x0262('0x5'));var db=require('../../mysqldb')['db'];var client=jayson['client']['http']({'port':0x232a});var routingClient=jayson[_0x0262('0x6')][_0x0262('0x7')]({'port':0x232c});function respondWithFilteredResult(_0x41c47f,_0x5c5298){return function(_0x3e2269){if(_0x3e2269){var _0x58b3bd=typeof _0x5c5298['offset']==='undefined'&&typeof _0x5c5298['limit']==='undefined';var _0x1af79c=_0x3e2269['count'];var _0x2ce759=_0x58b3bd?0x0:_0x5c5298['offset'];var _0x499457=_0x58b3bd?_0x3e2269['count']:_0x5c5298[_0x0262('0x8')]+_0x5c5298['limit'];var _0x364924;if(_0x499457>=_0x1af79c){_0x499457=_0x1af79c;_0x364924=0xc8;}else{_0x364924=0xce;}_0x41c47f[_0x0262('0x9')](_0x364924);return _0x41c47f[_0x0262('0xa')]('Content-Range',_0x2ce759+'-'+_0x499457+'/'+_0x1af79c)[_0x0262('0xb')](_0x3e2269);}return null;};}function handleError(_0x1928ff,_0x276b7b){_0x276b7b=_0x276b7b||0x1f4;return function(_0x225bf5){logger[_0x0262('0xc')](_0x225bf5[_0x0262('0xd')]);if(_0x225bf5[_0x0262('0xe')]){delete _0x225bf5[_0x0262('0xe')];}_0x1928ff['status'](_0x276b7b)['send'](_0x225bf5);};}exports[_0x0262('0xf')]=function(_0x582ac5,_0x4d0bae){var _0x5ed4c0=[_0x0262('0x10'),'chat',_0x0262('0x11'),_0x0262('0x12'),_0x0262('0x13'),_0x0262('0x14'),_0x0262('0x15')];var _0x571c70={'count':0x0,'rows':[]},_0x462571={},_0x299ddc;Promise['resolve']()['then'](function(){if(_0x582ac5[_0x0262('0x16')][_0x0262('0x17')]){if(!_['includes'](_0x5ed4c0,_0x582ac5['query'][_0x0262('0x17')][_0x0262('0x18')]()))throw new Error(_0x0262('0x19'));_0x299ddc=_0x582ac5['query'][_0x0262('0x17')][_0x0262('0x18')]();}var _0x4218e3=_[_0x0262('0x1a')](_0x299ddc)+_0x0262('0x1b');var _0x7e0bdf=_[_0x0262('0x1c')](db[_0x4218e3]['rawAttributes'],function(_0x13377f){return{'name':_0x13377f[_0x0262('0x1d')],'type':_0x13377f['type'][_0x0262('0x1e')]};});_0x462571=qs[_0x0262('0x1f')](_0x7e0bdf,_0x582ac5);if(_0x582ac5[_0x0262('0x20')][_0x0262('0x21')]==='user'){var _0x1db61f={'params':{'id':_0x582ac5[_0x0262('0x20')][_0x0262('0x22')]},'query':{'section':_0x299ddc===_0x0262('0x15')&&_0x582ac5[_0x0262('0x16')][_0x0262('0x23')]===_0x0262('0x24')?'QueueCampaigns':_[_0x0262('0x1a')](_0x299ddc)+'Queues','type':_0x582ac5[_0x0262('0x16')]['type'],'nolimit':!![],'sort':_0x0262('0xe'),'filter':_0x582ac5['query'][_0x0262('0x25')]}};return db[_0x0262('0x26')][_0x0262('0x27')](_0x1db61f);}return db[_0x4218e3][_0x0262('0x28')](_0x462571);})['then'](function(_0x58fc4f){_0x571c70[_0x0262('0x29')]=_0x58fc4f[_0x0262('0x29')];var _0x59586b=_0x299ddc==='voice'?client:routingClient;return _0x59586b[_0x0262('0x2a')](_[_0x0262('0x1a')](_0x299ddc)+'Queues',_0x582ac5)[_0x0262('0x2b')](function(_0x4a3e3b){if(_0x4a3e3b[_0x0262('0xc')])throw new Error(util[_0x0262('0x2c')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x299ddc));var _0x4241cf=_0x4a3e3b[_0x0262('0x2d')];var _0x427f33=[_0x0262('0x2e'),'available',_0x0262('0x2f'),_0x0262('0x30'),_0x0262('0x31')];if(_0x299ddc===_0x0262('0x15')&&_0x582ac5['query'][_0x0262('0x23')]===_0x0262('0x24')){_0x427f33[_0x0262('0x32')]('pTalking',_0x0262('0x33'),_0x0262('0x34'),'dialActive',_0x0262('0x35'),_0x0262('0x36'),_0x0262('0x37'),_0x0262('0x38'),_0x0262('0x39'),'erlangCallToSecond',_0x0262('0x3a'),_0x0262('0x3b'),_0x0262('0x3c'),'dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold',_0x0262('0x3d'),'predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls',_0x0262('0x3e'),_0x0262('0x3f'),_0x0262('0x40'),_0x0262('0x41'));}var _0x205c3c=_0x58fc4f[_0x0262('0x42')][_0x0262('0x1c')](function(_0x2b1a3d){var _0x498c1d=_0x2b1a3d[_0x0262('0x43')]({'plain':!![]});_0x498c1d[_0x0262('0x31')]=0x0;_0x498c1d['loggedInDb']=0x0;_0x498c1d[_0x0262('0x2e')]=0x0;_0x498c1d['available']=0x0;_0x498c1d[_0x0262('0x31')]=0x0;_0x498c1d[_0x0262('0x2f')]=0x0;if(_0x299ddc===_0x0262('0x15')){_0x498c1d[_0x0262('0x30')]=0x0;if(_0x582ac5[_0x0262('0x16')][_0x0262('0x23')]===_0x0262('0x24')){_0x498c1d[_0x0262('0x44')]=0x0;_0x498c1d[_0x0262('0x33')]=0x0;}}_0x498c1d[_0x0262('0x45')]=[];var _0x485019=_[_0x0262('0x46')](_0x4241cf[_0x0262('0x42')],['id',_0x498c1d['id']]);if(_0x485019)_['merge'](_0x498c1d,_[_0x0262('0x47')](_0x485019,_0x427f33));if(_0x299ddc===_0x0262('0x15')){return _0x2b1a3d[_0x0262('0x48')]({'attributes':['id',_0x0262('0xe'),_0x0262('0x49')],'joinTableAttributes':[],'raw':!![]})[_0x0262('0x2b')](function(_0x3a0907){return _0x2b1a3d[_0x0262('0x4a')]({'raw':!![]})[_0x0262('0x2b')](function(_0x547faf){for(var _0x1265e8=0x0;_0x1265e8<_0x3a0907[_0x0262('0x4b')];_0x1265e8++){var _0x19de1a=_[_0x0262('0x46')](_0x547faf,['UserId',_0x3a0907[_0x1265e8]['id']]);var _0x218d23={'id':_0x3a0907[_0x1265e8]['id'],'name':_0x3a0907[_0x1265e8][_0x0262('0xe')],'online':Boolean(_0x3a0907[_0x1265e8][_0x0262('0x49')]),'paused':_0x19de1a?Boolean(_0x19de1a[_0x0262('0x31')]):![]};if(_0x218d23[_0x0262('0x49')])_0x498c1d[_0x0262('0x4c')]++;if(_0x218d23['paused'])_0x498c1d['paused']++;_0x498c1d[_0x0262('0x45')][_0x0262('0x32')](_0x218d23);}return _0x498c1d;});});}else{var _0x5bbe21=_0x0262('0x4d')+_[_0x0262('0x1a')](_0x299ddc)+'Queue';var _0x555d4b=_[_0x0262('0x1a')](_0x299ddc)+_0x0262('0x4e');var _0x12f027=_0x299ddc+'Pause';return db[_0x5bbe21]['findAll']({'where':{['userQueueKey']:_0x2b1a3d['id']},'raw':!![]})[_0x0262('0x2b')](function(_0x1aa84c){return db[_0x0262('0x4d')][_0x0262('0x4f')]({'attributes':['id','name',_0x0262('0x49'),_0x12f027],'where':{'id':_[_0x0262('0x1c')](_0x1aa84c,'UserId'),'role':_0x0262('0x50')},'raw':!![]});})[_0x0262('0x2b')](function(_0x2d56fa){for(var _0x1ad066=0x0;_0x1ad066<_0x2d56fa[_0x0262('0x4b')];_0x1ad066++){var _0x1230d1={'id':_0x2d56fa[_0x1ad066]['id'],'name':_0x2d56fa[_0x1ad066][_0x0262('0xe')],'online':Boolean(_0x2d56fa[_0x1ad066]['online']),'paused':Boolean(_0x2d56fa[_0x1ad066][_0x12f027])};if(_0x1230d1[_0x0262('0x49')])_0x498c1d['loggedInDb']++;if(_0x1230d1[_0x0262('0x31')])_0x498c1d[_0x0262('0x31')]++;_0x498c1d[_0x0262('0x45')][_0x0262('0x32')](_0x1230d1);}return _0x498c1d;});}});return Promise['all'](_0x205c3c);});})['then'](function(_0x3f0e48){_0x571c70[_0x0262('0x42')]=_0x3f0e48;return _0x571c70;})[_0x0262('0x2b')](respondWithFilteredResult(_0x4d0bae,_0x462571))[_0x0262('0x51')](handleError(_0x4d0bae,null));};
\ No newline at end of file
index 6f96c8d..8da2f4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x2a7382,_0x5980a4){var _0x538c01=function(_0x3fa86e){while(--_0x3fa86e){_0x2a7382['push'](_0x2a7382['shift']());}};_0x538c01(++_0x5980a4);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x67f95e,_0x3ca797){_0x67f95e=_0x67f95e-0x0;var _0x538f5a=_0xcb91[_0x67f95e];return _0x538f5a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x1ca091,_0x291aa2){var _0x21b261=function(_0x1d2c54){while(--_0x1d2c54){_0x1ca091['push'](_0x1ca091['shift']());}};_0x21b261(++_0x291aa2);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3b231a,_0x53a00d){_0x3b231a=_0x3b231a-0x0;var _0x18d67a=_0xcb91[_0x3b231a];return _0x18d67a;};'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 fc8fc77..ee7436f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a14=['INTEGER','STRING','DATE'];(function(_0x382c73,_0x199cab){var _0x1dd0bf=function(_0x358747){while(--_0x358747){_0x382c73['push'](_0x382c73['shift']());}};_0x1dd0bf(++_0x199cab);}(_0x9a14,0xa8));var _0x49a1=function(_0x1beab5,_0x35e3da){_0x1beab5=_0x1beab5-0x0;var _0x4c008c=_0x9a14[_0x1beab5];return _0x4c008c;};'use strict';var Sequelize=require('sequelize');module['exports']={'state':{'type':Sequelize[_0x49a1('0x0')](0x2)},'statedesc':{'type':Sequelize[_0x49a1('0x1')]},'scheduledat':{'type':Sequelize[_0x49a1('0x2')]},'uniqueid':{'type':Sequelize[_0x49a1('0x1')]},'starttime':{'type':Sequelize[_0x49a1('0x2')]},'responsetime':{'type':Sequelize[_0x49a1('0x2')]},'ringtime':{'type':Sequelize[_0x49a1('0x0')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x49a1('0x1')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb7b6=['INTEGER','sequelize','exports','DATE','STRING'];(function(_0x1c312e,_0x548eea){var _0x4b630c=function(_0x3b00f1){while(--_0x3b00f1){_0x1c312e['push'](_0x1c312e['shift']());}};_0x4b630c(++_0x548eea);}(_0xb7b6,0x15f));var _0x6b7b=function(_0x2d57a5,_0x23950c){_0x2d57a5=_0x2d57a5-0x0;var _0x12ce69=_0xb7b6[_0x2d57a5];return _0x12ce69;};'use strict';var Sequelize=require(_0x6b7b('0x0'));module[_0x6b7b('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x6b7b('0x2')]},'uniqueid':{'type':Sequelize[_0x6b7b('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x6b7b('0x2')]},'ringtime':{'type':Sequelize[_0x6b7b('0x4')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x6b7b('0x3')]}};
\ No newline at end of file
index 8f4d309..6656834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaa9=['bluebird','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','define','report_agent_preview','lodash','util','../../config/logger','moment'];(function(_0x2788e5,_0x562bf4){var _0x7b12fd=function(_0x462a59){while(--_0x462a59){_0x2788e5['push'](_0x2788e5['shift']());}};_0x7b12fd(++_0x562bf4);}(_0xcaa9,0xb0));var _0x9caa=function(_0x3238ca,_0x37cbb5){_0x3238ca=_0x3238ca-0x0;var _0x59aa5d=_0xcaa9[_0x3238ca];return _0x59aa5d;};'use strict';var _=require(_0x9caa('0x0'));var util=require(_0x9caa('0x1'));var logger=require(_0x9caa('0x2'))('api');var moment=require(_0x9caa('0x3'));var BPromise=require(_0x9caa('0x4'));var rp=require(_0x9caa('0x5'));var fs=require('fs');var path=require(_0x9caa('0x6'));var rimraf=require(_0x9caa('0x7'));var config=require(_0x9caa('0x8'));var attributes=require(_0x9caa('0x9'));module['exports']=function(_0x19dcc0,_0x1ecd4c){return _0x19dcc0[_0x9caa('0xa')]('ReportAgentPreview',attributes,{'tableName':_0x9caa('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x345b=['report_agent_preview','lodash','util','../../config/logger','bluebird','request-promise','path','define','ReportAgentPreview'];(function(_0x46abd8,_0x360ab8){var _0x24f526=function(_0x1ab758){while(--_0x1ab758){_0x46abd8['push'](_0x46abd8['shift']());}};_0x24f526(++_0x360ab8);}(_0x345b,0x1cc));var _0xb345=function(_0x3b9b15,_0x25c082){_0x3b9b15=_0x3b9b15-0x0;var _0x70ac5e=_0x345b[_0x3b9b15];return _0x70ac5e;};'use strict';var _=require(_0xb345('0x0'));var util=require(_0xb345('0x1'));var logger=require(_0xb345('0x2'))('api');var moment=require('moment');var BPromise=require(_0xb345('0x3'));var rp=require(_0xb345('0x4'));var fs=require('fs');var path=require(_0xb345('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./reportAgentPreview.attributes');module['exports']=function(_0x76ec2e,_0x3f5ffc){return _0x76ec2e[_0xb345('0x6')](_0xb345('0x7'),attributes,{'tableName':_0xb345('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9994306..04e6481 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd438=['code','message','result','catch','CreateReportAgentPreview','ReportAgentPreview','create','body','options','then','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x331c72,_0x5a6428){var _0x2fe82b=function(_0x297095){while(--_0x297095){_0x331c72['push'](_0x331c72['shift']());}};_0x2fe82b(++_0x5a6428);}(_0xd438,0xf3));var _0x8d43=function(_0x209fcd,_0x1ecccc){_0x209fcd=_0x209fcd-0x0;var _0x501d5e=_0xd438[_0x209fcd];return _0x501d5e;};'use strict';var _=require(_0x8d43('0x0'));var util=require(_0x8d43('0x1'));var moment=require(_0x8d43('0x2'));var BPromise=require('bluebird');var rs=require(_0x8d43('0x3'));var fs=require('fs');var Redis=require(_0x8d43('0x4'));var db=require(_0x8d43('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8d43('0x6'));var config=require(_0x8d43('0x7'));var jayson=require(_0x8d43('0x8'));var client=jayson[_0x8d43('0x9')][_0x8d43('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1c42d1,_0x315bb2,_0x3422ba){return new BPromise(function(_0x471b3b,_0x5966a9){return client[_0x8d43('0xb')](_0x1c42d1,_0x3422ba)['then'](function(_0x295f1b){logger[_0x8d43('0xc')](_0x8d43('0xd'),_0x315bb2,_0x8d43('0xe'));logger['debug'](_0x8d43('0xf'),_0x315bb2,_0x8d43('0xe'),JSON[_0x8d43('0x10')](_0x295f1b));if(_0x295f1b[_0x8d43('0x11')]){if(_0x295f1b[_0x8d43('0x11')][_0x8d43('0x12')]===0x1f4){logger[_0x8d43('0x11')](_0x8d43('0xd'),_0x315bb2,_0x295f1b[_0x8d43('0x11')][_0x8d43('0x13')]);return _0x5966a9(_0x295f1b['error'][_0x8d43('0x13')]);}logger['error'](_0x8d43('0xd'),_0x315bb2,_0x295f1b[_0x8d43('0x11')][_0x8d43('0x13')]);return _0x471b3b(_0x295f1b[_0x8d43('0x11')][_0x8d43('0x13')]);}else{logger[_0x8d43('0xc')](_0x8d43('0xd'),_0x315bb2,'request\x20sent');_0x471b3b(_0x295f1b[_0x8d43('0x14')]['message']);}})[_0x8d43('0x15')](function(_0x555cd7){logger[_0x8d43('0x11')](_0x8d43('0xd'),_0x315bb2,_0x555cd7);_0x5966a9(_0x555cd7);});});}exports[_0x8d43('0x16')]=function(_0x40116f){var _0x3081f8=this;return new Promise(function(_0x2725a6,_0x442a86){return db[_0x8d43('0x17')][_0x8d43('0x18')](_0x40116f[_0x8d43('0x19')],{'raw':_0x40116f['options']?_0x40116f[_0x8d43('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x8d43('0x1b')](function(_0x450421){logger[_0x8d43('0xc')](_0x8d43('0x16'),_0x40116f);logger[_0x8d43('0x1c')]('CreateReportAgentPreview',_0x40116f,JSON[_0x8d43('0x10')](_0x450421));_0x2725a6(_0x450421);})[_0x8d43('0x15')](function(_0x3c5b36){logger[_0x8d43('0x11')](_0x8d43('0x16'),_0x3c5b36[_0x8d43('0x13')],_0x40116f);_0x442a86(_0x3081f8[_0x8d43('0x11')](0x1f4,_0x3c5b36[_0x8d43('0x13')]));});});};
\ No newline at end of file
+var _0x525c=['../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','ReportAgentPreview,\x20%s,\x20%s,\x20%s','error','message','ReportAgentPreview,\x20%s,\x20%s','CreateReportAgentPreview','ReportAgentPreview','create','options','raw','stringify','lodash','util','moment','ioredis'];(function(_0xcfc35d,_0xc08150){var _0x4098dc=function(_0x251cf0){while(--_0x251cf0){_0xcfc35d['push'](_0xcfc35d['shift']());}};_0x4098dc(++_0xc08150);}(_0x525c,0x86));var _0xc525=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0x525c[_0x102e37];return _0x35a07c;};'use strict';var _=require(_0xc525('0x0'));var util=require(_0xc525('0x1'));var moment=require(_0xc525('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc525('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc525('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xc525('0x5'));var jayson=require(_0xc525('0x6'));var client=jayson[_0xc525('0x7')][_0xc525('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f3e50,_0x32e10c,_0x245004){return new BPromise(function(_0x30f102,_0x309753){return client[_0xc525('0x9')](_0x3f3e50,_0x245004)[_0xc525('0xa')](function(_0x33cd80){logger[_0xc525('0xb')]('ReportAgentPreview,\x20%s,\x20%s',_0x32e10c,_0xc525('0xc'));logger['debug'](_0xc525('0xd'),_0x32e10c,_0xc525('0xc'),JSON['stringify'](_0x33cd80));if(_0x33cd80[_0xc525('0xe')]){if(_0x33cd80['error']['code']===0x1f4){logger[_0xc525('0xe')]('ReportAgentPreview,\x20%s,\x20%s',_0x32e10c,_0x33cd80['error'][_0xc525('0xf')]);return _0x309753(_0x33cd80[_0xc525('0xe')][_0xc525('0xf')]);}logger[_0xc525('0xe')](_0xc525('0x10'),_0x32e10c,_0x33cd80[_0xc525('0xe')]['message']);return _0x30f102(_0x33cd80[_0xc525('0xe')][_0xc525('0xf')]);}else{logger[_0xc525('0xb')](_0xc525('0x10'),_0x32e10c,_0xc525('0xc'));_0x30f102(_0x33cd80['result'][_0xc525('0xf')]);}})['catch'](function(_0x1541ac){logger[_0xc525('0xe')](_0xc525('0x10'),_0x32e10c,_0x1541ac);_0x309753(_0x1541ac);});});}exports[_0xc525('0x11')]=function(_0x21723b){var _0x529c08=this;return new Promise(function(_0x2dcf10,_0x5e872a){return db[_0xc525('0x12')][_0xc525('0x13')](_0x21723b['body'],{'raw':_0x21723b[_0xc525('0x14')]?_0x21723b['options'][_0xc525('0x15')]===undefined?!![]:![]:!![]})[_0xc525('0xa')](function(_0x3e1bdf){logger[_0xc525('0xb')](_0xc525('0x11'),_0x21723b);logger['debug'](_0xc525('0x11'),_0x21723b,JSON[_0xc525('0x16')](_0x3e1bdf));_0x2dcf10(_0x3e1bdf);})['catch'](function(_0x5ab182){logger[_0xc525('0xe')](_0xc525('0x11'),_0x5ab182[_0xc525('0xf')],_0x21723b);_0x5e872a(_0x529c08['error'](0x1f4,_0x5ab182['message']));});});};
\ No newline at end of file
index 7e18966..a035324 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7589=['mail','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','openchannel','showOpenchannelQueues','/sms/queues/:id/notify','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','multer','path','Router','../../components/auth/service','./rpc.controller','get','voiceChannels','/voice/channels/:uniqueid/mixmonitor','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/mail/queues','mailQueues','/mail/accounts','/sms/queues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','voiceQueuesPreview','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','showVoiceQueues','put','/voice/queues/:id','updateVoiceQueue','/outbound','/outbound/channels','outboundChannels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','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'];(function(_0x5a6061,_0x3bd9ec){var _0x4aa6c9=function(_0x5d5e0f){while(--_0x5d5e0f){_0x5a6061['push'](_0x5a6061['shift']());}};_0x4aa6c9(++_0x3bd9ec);}(_0x7589,0x14c));var _0x9758=function(_0x75f2c4,_0x4c3e0a){_0x75f2c4=_0x75f2c4-0x0;var _0x31093a=_0x7589[_0x75f2c4];return _0x31093a;};'use strict';var multer=require(_0x9758('0x0'));var util=require('util');var path=require(_0x9758('0x1'));var express=require('express');var router=express[_0x9758('0x2')]();var auth=require(_0x9758('0x3'));var controller=require(_0x9758('0x4'));router[_0x9758('0x5')]('/voice/channels',auth['isAuthenticated'](),controller[_0x9758('0x6')]);router[_0x9758('0x5')](_0x9758('0x7'),auth[_0x9758('0x8')](),controller[_0x9758('0x9')]);router[_0x9758('0x5')](_0x9758('0xa'),auth['isAuthenticated'](),controller[_0x9758('0xb')]);router[_0x9758('0x5')](_0x9758('0xc'),auth['isAuthenticated'](),controller[_0x9758('0xd')]);router[_0x9758('0x5')]('/chat/queues',auth[_0x9758('0x8')](),controller['chatQueues']);router[_0x9758('0x5')](_0x9758('0xe'),auth[_0x9758('0x8')](),controller[_0x9758('0xf')]);router[_0x9758('0x5')](_0x9758('0x10'),auth[_0x9758('0x8')](),controller['mailAccounts']);router[_0x9758('0x5')]('/openchannel/queues',auth[_0x9758('0x8')](),controller['openchannelQueues']);router[_0x9758('0x5')](_0x9758('0x11'),auth['isAuthenticated'](),controller['smsQueues']);router['get'](_0x9758('0x12'),auth['isAuthenticated'](),controller[_0x9758('0x13')]);router[_0x9758('0x5')](_0x9758('0x14'),auth[_0x9758('0x8')](),controller[_0x9758('0x15')]);router[_0x9758('0x5')]('/voice/queues/preview/:id',auth[_0x9758('0x8')](),controller[_0x9758('0x16')]);router[_0x9758('0x5')]('/voice/queues/channels',auth['isAuthenticated'](),controller[_0x9758('0x17')]);router['get'](_0x9758('0x18'),auth['isAuthenticated'](),controller[_0x9758('0x19')]);router[_0x9758('0x5')](_0x9758('0x1a'),auth['isAuthenticated'](),controller['voiceQueuesChannelHangup']);router['get'](_0x9758('0x1b'),auth[_0x9758('0x8')](),controller[_0x9758('0x1c')]);router[_0x9758('0x5')]('/voice/queues/:id',auth[_0x9758('0x8')](),controller[_0x9758('0x1d')]);router[_0x9758('0x1e')](_0x9758('0x1f'),auth[_0x9758('0x8')](),controller[_0x9758('0x20')]);router[_0x9758('0x5')](_0x9758('0x21'),auth[_0x9758('0x8')](),controller['outbound']);router[_0x9758('0x5')](_0x9758('0x22'),auth[_0x9758('0x8')](),controller[_0x9758('0x23')]);router[_0x9758('0x5')](_0x9758('0x24'),auth[_0x9758('0x8')](),controller[_0x9758('0x25')]);router[_0x9758('0x1e')](_0x9758('0x26'),auth[_0x9758('0x8')](),controller[_0x9758('0x27')]);router[_0x9758('0x5')](_0x9758('0x28'),auth['isAuthenticated'](),controller['telephones']);router['get'](_0x9758('0x29'),auth['isAuthenticated'](),controller[_0x9758('0x2a')]);router[_0x9758('0x5')](_0x9758('0x2b'),auth[_0x9758('0x8')](),controller[_0x9758('0x2c')]);router[_0x9758('0x5')](_0x9758('0x2d'),auth[_0x9758('0x8')](),controller[_0x9758('0x2e')]);router['get'](_0x9758('0x2f'),auth[_0x9758('0x8')](),controller[_0x9758('0x30')]);router[_0x9758('0x5')](_0x9758('0x31'),auth[_0x9758('0x8')](),controller[_0x9758('0x32')]);router['get'](_0x9758('0x33'),auth[_0x9758('0x8')](),controller[_0x9758('0x34')]);router[_0x9758('0x5')](_0x9758('0x35'),auth['isAuthenticated'](),controller[_0x9758('0x36')]);router[_0x9758('0x5')](_0x9758('0x37'),auth[_0x9758('0x8')](),controller[_0x9758('0x38')]);router[_0x9758('0x5')](_0x9758('0x39'),auth['isAuthenticated'](),controller[_0x9758('0x3a')]);router[_0x9758('0x5')](_0x9758('0x3b'),auth[_0x9758('0x8')](),controller['faxQueuesWaitingInteractions']);router[_0x9758('0x3c')](_0x9758('0x3d'),auth[_0x9758('0x8')](),controller[_0x9758('0x3e')](_0x9758('0x3f')));router[_0x9758('0x5')]('/mail/queues/:id',auth[_0x9758('0x8')](),controller['showMailQueues']);router[_0x9758('0x3c')]('/chat/queues/:id/notify',auth[_0x9758('0x8')](),controller[_0x9758('0x3e')](_0x9758('0x40')));router[_0x9758('0x5')](_0x9758('0x41'),auth[_0x9758('0x8')](),controller[_0x9758('0x42')]);router['post'](_0x9758('0x43'),auth['isAuthenticated'](),controller[_0x9758('0x3e')]('fax'));router[_0x9758('0x5')]('/fax/queues/:id',auth[_0x9758('0x8')](),controller['showFaxQueues']);router['post']('/openchannel/queues/:id/notify',auth[_0x9758('0x8')](),controller[_0x9758('0x3e')](_0x9758('0x44')));router[_0x9758('0x5')]('/openchannel/queues/:id',auth[_0x9758('0x8')](),controller[_0x9758('0x45')]);router[_0x9758('0x3c')](_0x9758('0x46'),auth['isAuthenticated'](),controller[_0x9758('0x3e')]('sms'));router[_0x9758('0x3c')](_0x9758('0x47'),auth[_0x9758('0x8')](),controller[_0x9758('0x3e')](_0x9758('0x48')));router[_0x9758('0x5')](_0x9758('0x49'),auth['isAuthenticated'](),controller[_0x9758('0x4a')]);router[_0x9758('0x5')](_0x9758('0x4b'),auth[_0x9758('0x8')](),controller[_0x9758('0x4c')]);router['post'](_0x9758('0x4d'),auth[_0x9758('0x8')](),controller[_0x9758('0x4e')]);module['exports']=router;
\ No newline at end of file
+var _0xe032=['multer','util','path','express','../../components/auth/service','./rpc.controller','get','/voice/channels','isAuthenticated','voiceChannels','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','voiceQueuesPreview','/voice/queues/channels/:uniqueid/hangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','updateVoiceQueue','/outbound','outbound','/outbound/channels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','/trunks','/campaigns','campaigns','/fax/accounts','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','/mail/queues/:id/notify','mail','/chat/queues/:id/notify','queueNotify','chat','/chat/queues/:id','showChatQueues','post','/fax/queues/:id/notify','fax','/fax/queues/:id','/openchannel/queues/:id/notify','openchannel','showOpenchannelQueues','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports'];(function(_0x494b6c,_0x1727c5){var _0x494c4b=function(_0x140d69){while(--_0x140d69){_0x494b6c['push'](_0x494b6c['shift']());}};_0x494c4b(++_0x1727c5);}(_0xe032,0xed));var _0x2e03=function(_0x5ba549,_0x425afd){_0x5ba549=_0x5ba549-0x0;var _0x36e3a1=_0xe032[_0x5ba549];return _0x36e3a1;};'use strict';var multer=require(_0x2e03('0x0'));var util=require(_0x2e03('0x1'));var path=require(_0x2e03('0x2'));var express=require(_0x2e03('0x3'));var router=express['Router']();var auth=require(_0x2e03('0x4'));var controller=require(_0x2e03('0x5'));router[_0x2e03('0x6')](_0x2e03('0x7'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x9')]);router[_0x2e03('0x6')]('/voice/channels/:uniqueid/mixmonitor',auth[_0x2e03('0x8')](),controller[_0x2e03('0xa')]);router[_0x2e03('0x6')](_0x2e03('0xb'),auth[_0x2e03('0x8')](),controller['voiceChannelStopMixMonitor']);router[_0x2e03('0x6')]('/voice/queues',auth[_0x2e03('0x8')](),controller[_0x2e03('0xc')]);router[_0x2e03('0x6')](_0x2e03('0xd'),auth['isAuthenticated'](),controller[_0x2e03('0xe')]);router[_0x2e03('0x6')](_0x2e03('0xf'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x10')]);router[_0x2e03('0x6')](_0x2e03('0x11'),auth['isAuthenticated'](),controller[_0x2e03('0x12')]);router[_0x2e03('0x6')](_0x2e03('0x13'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x14')]);router[_0x2e03('0x6')](_0x2e03('0x15'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x16')]);router[_0x2e03('0x6')](_0x2e03('0x17'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x18')]);router['get'](_0x2e03('0x19'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x1a')]);router[_0x2e03('0x6')]('/voice/queues/preview/:id',auth[_0x2e03('0x8')](),controller[_0x2e03('0x1b')]);router['get']('/voice/queues/channels',auth[_0x2e03('0x8')](),controller['voiceQueuesChannels']);router[_0x2e03('0x6')]('/voice/queues/channels/:uniqueid',auth['isAuthenticated'](),controller['voiceQueuesChannel']);router[_0x2e03('0x6')](_0x2e03('0x1c'),auth['isAuthenticated'](),controller['voiceQueuesChannelHangup']);router['get'](_0x2e03('0x1d'),auth['isAuthenticated'](),controller[_0x2e03('0x1e')]);router[_0x2e03('0x6')](_0x2e03('0x1f'),auth['isAuthenticated'](),controller[_0x2e03('0x20')]);router['put'](_0x2e03('0x1f'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x21')]);router['get'](_0x2e03('0x22'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x23')]);router[_0x2e03('0x6')](_0x2e03('0x24'),auth[_0x2e03('0x8')](),controller['outboundChannels']);router['get'](_0x2e03('0x25'),auth['isAuthenticated'](),controller[_0x2e03('0x26')]);router['put'](_0x2e03('0x27'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x28')]);router['get'](_0x2e03('0x29'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x2a')]);router['get'](_0x2e03('0x2b'),auth[_0x2e03('0x8')](),controller['trunks']);router[_0x2e03('0x6')](_0x2e03('0x2c'),auth['isAuthenticated'](),controller[_0x2e03('0x2d')]);router['get'](_0x2e03('0x2e'),auth[_0x2e03('0x8')](),controller['faxAccounts']);router[_0x2e03('0x6')]('/chat/queues/waitinginteractions',auth[_0x2e03('0x8')](),controller[_0x2e03('0x2f')]);router[_0x2e03('0x6')](_0x2e03('0x30'),auth['isAuthenticated'](),controller[_0x2e03('0x31')]);router[_0x2e03('0x6')]('/openchannel/queues/waitinginteractions',auth[_0x2e03('0x8')](),controller[_0x2e03('0x32')]);router[_0x2e03('0x6')](_0x2e03('0x33'),auth[_0x2e03('0x8')](),controller['openchannelQueuesIdWaitingInteractions']);router['get'](_0x2e03('0x34'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x35')]);router[_0x2e03('0x6')](_0x2e03('0x36'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x37')]);router[_0x2e03('0x6')](_0x2e03('0x38'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x39')]);router['post'](_0x2e03('0x3a'),auth[_0x2e03('0x8')](),controller['queueNotify'](_0x2e03('0x3b')));router[_0x2e03('0x6')]('/mail/queues/:id',auth[_0x2e03('0x8')](),controller['showMailQueues']);router['post'](_0x2e03('0x3c'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x3d')](_0x2e03('0x3e')));router['get'](_0x2e03('0x3f'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x40')]);router[_0x2e03('0x41')](_0x2e03('0x42'),auth[_0x2e03('0x8')](),controller['queueNotify'](_0x2e03('0x43')));router['get'](_0x2e03('0x44'),auth[_0x2e03('0x8')](),controller['showFaxQueues']);router['post'](_0x2e03('0x45'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x3d')](_0x2e03('0x46')));router[_0x2e03('0x6')]('/openchannel/queues/:id',auth['isAuthenticated'](),controller[_0x2e03('0x47')]);router[_0x2e03('0x41')]('/sms/queues/:id/notify',auth['isAuthenticated'](),controller[_0x2e03('0x3d')]('sms'));router['post'](_0x2e03('0x48'),auth['isAuthenticated'](),controller[_0x2e03('0x3d')](_0x2e03('0x49')));router[_0x2e03('0x6')](_0x2e03('0x4a'),auth[_0x2e03('0x8')](),controller['showSmsQueues']);router[_0x2e03('0x6')]('/whatsapp/queues/:id',auth[_0x2e03('0x8')](),controller[_0x2e03('0x4b')]);router['post'](_0x2e03('0x4c'),auth[_0x2e03('0x8')](),controller[_0x2e03('0x4d')]);module[_0x2e03('0x4e')]=router;
\ No newline at end of file
index 2a095de..6262b14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb138=['telephones','Telephones','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','uniq','value','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','messageId','Interaction','update','queue','MessageId','InteractionId','From','QueueId','create','Start','queueTransferTimeout','*,*,*,*','Channel\x20field\x20is\x20mandatory','channel','capitalize','User','agent','Agent\x20not\x20found','Message','\x20Message\x20not\x20found','agentTransferTimeout','bluebird','moment','lodash','util','../../mysqldb','../../config/logger','api','client','http','request','error','code','message','result','catch','json','sendStatus','stack','name','status','isNil','rows','find','VoiceChannels','query','then','VoiceChannelMixMonitor','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','merge','voiceQueues','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','OutboundChannels','Agents','interaction','user','hasOwnProperty','MemberReport','findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','findOrCreate','INTERACTION','SIP/%s','interface','internal','AgentCapacity','capacity'];(function(_0x1e7944,_0x5a1ee7){var _0x4be825=function(_0x14932d){while(--_0x14932d){_0x1e7944['push'](_0x1e7944['shift']());}};_0x4be825(++_0x5a1ee7);}(_0xb138,0x1dd));var _0x8b13=function(_0x22c2ef,_0x59ecd0){_0x22c2ef=_0x22c2ef-0x0;var _0x34d1fb=_0xb138[_0x22c2ef];return _0x34d1fb;};'use strict';var BPromise=require(_0x8b13('0x0'));var moment=require(_0x8b13('0x1'));var _=require(_0x8b13('0x2'));var util=require(_0x8b13('0x3'));var db=require(_0x8b13('0x4'))['db'];var logger=require(_0x8b13('0x5'))(_0x8b13('0x6'));var jayson=require('jayson/promise');var amiClient=jayson[_0x8b13('0x7')][_0x8b13('0x8')]({'port':0x232a});var mailClient=jayson[_0x8b13('0x7')]['http']({'port':0x232b});var routingClient=jayson[_0x8b13('0x7')][_0x8b13('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x5d51b1,_0x3fdf4d,_0x33d1a7){return new BPromise(function(_0x22e157,_0x498832){var _0x8570b0=_0x33d1a7?_0x33d1a7:amiClient;return _0x8570b0[_0x8b13('0x9')](_0x5d51b1,_0x3fdf4d)['then'](function(_0x53ae50){if(_0x53ae50[_0x8b13('0xa')]){if(_0x53ae50[_0x8b13('0xa')][_0x8b13('0xb')]===0x1f4){return _0x498832(_0x53ae50[_0x8b13('0xa')][_0x8b13('0xc')]);}return _0x22e157(_0x53ae50['error'][_0x8b13('0xc')]);}else{_0x22e157(_0x53ae50[_0x8b13('0xd')]);}})[_0x8b13('0xe')](function(_0x3f79d5){_0x498832(_0x3f79d5);});});}function respondWithResult(_0xb227e0,_0x1893b1){_0x1893b1=_0x1893b1||0xc8;return function(_0x58f97e){if(_0x58f97e){return _0xb227e0['status'](_0x1893b1)[_0x8b13('0xf')](_0x58f97e);}return _0xb227e0[_0x8b13('0x10')](0x194);};}function handleError(_0x5f12b5,_0x51a935){_0x51a935=_0x51a935||0x1f4;return function(_0x479773){logger[_0x8b13('0xa')](_0x479773[_0x8b13('0x11')]);if(_0x479773[_0x8b13('0x12')]){delete _0x479773[_0x8b13('0x12')];}_0x5f12b5[_0x8b13('0x13')](_0x51a935)['send'](_0x479773);};}function findById(_0x1c6c99){return function(_0xea7881){if(!_[_0x8b13('0x14')](_0x1c6c99)&&!_[_0x8b13('0x14')](_0xea7881)&&!_[_0x8b13('0x14')](_0xea7881[_0x8b13('0x15')])){return _[_0x8b13('0x16')](_0xea7881[_0x8b13('0x15')],function(_0x4989d3){return _0x4989d3['id']==_0x1c6c99;});}return null;};}exports['voiceChannels']=function(_0xae4966,_0x335709){return respondWithRpcPromise(_0x8b13('0x17'),_0xae4966[_0x8b13('0x18')])[_0x8b13('0x19')](respondWithResult(_0x335709,null))[_0x8b13('0xe')](handleError(_0x335709,null));};exports['voiceChannelMixMonitor']=function(_0x1e8a48,_0x3c4d4f){return respondWithRpcPromise(_0x8b13('0x1a'),_['merge'](_0x1e8a48['query'],_0x1e8a48[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x3c4d4f,null))['catch'](handleError(_0x3c4d4f,null));};exports[_0x8b13('0x1c')]=function(_0x2c3afb,_0x37ca5f){return respondWithRpcPromise(_0x8b13('0x1d'),_[_0x8b13('0x1e')](_0x2c3afb['query'],_0x2c3afb[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x37ca5f,null))['catch'](handleError(_0x37ca5f,null));};exports[_0x8b13('0x1f')]=function(_0x4fdd1c,_0x420772){return respondWithRpcPromise(_0x8b13('0x20'),_0x4fdd1c['query'])[_0x8b13('0x19')](respondWithResult(_0x420772,null))[_0x8b13('0xe')](handleError(_0x420772,null));};exports['showVoiceQueues']=function(_0x134c5e,_0x14a739){return respondWithRpcPromise(_0x8b13('0x20'),_0x134c5e[_0x8b13('0x18')])[_0x8b13('0x19')](findById(_0x134c5e['params']['id']))[_0x8b13('0x19')](respondWithResult(_0x14a739,null))[_0x8b13('0xe')](handleError(_0x14a739,null));};exports[_0x8b13('0x21')]=function(_0x1511bf,_0x114b01){return respondWithRpcPromise(_0x8b13('0x22'),_['merge'](_0x1511bf[_0x8b13('0x23')],_0x1511bf[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x114b01,null))[_0x8b13('0xe')](handleError(_0x114b01,null));};exports[_0x8b13('0x24')]=function(_0x29946e,_0x3304bd){return respondWithRpcPromise(_0x8b13('0x25'),_[_0x8b13('0x1e')](_0x29946e['query'],_0x29946e[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x3304bd,null))[_0x8b13('0xe')](handleError(_0x3304bd,null));};exports[_0x8b13('0x26')]=function(_0x51a334,_0x4f7d91){return respondWithRpcPromise(_0x8b13('0x27'),_0x51a334['query'])['then'](respondWithResult(_0x4f7d91,null))[_0x8b13('0xe')](handleError(_0x4f7d91,null));};exports['voiceQueuesChannel']=function(_0x2ec1ab,_0x408626){return respondWithRpcPromise(_0x8b13('0x28'),_[_0x8b13('0x1e')](_0x2ec1ab[_0x8b13('0x18')],_0x2ec1ab[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x408626,null))[_0x8b13('0xe')](handleError(_0x408626,null));};exports[_0x8b13('0x29')]=function(_0x1b313d,_0x4d45bc){return respondWithRpcPromise(_0x8b13('0x2a'),_[_0x8b13('0x1e')](_0x1b313d[_0x8b13('0x18')],_0x1b313d[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x4d45bc,null))[_0x8b13('0xe')](handleError(_0x4d45bc,null));};exports[_0x8b13('0x2b')]=function(_0x241687,_0x5c67b1){return respondWithRpcPromise(_0x8b13('0x2c'),_['merge'](_0x241687[_0x8b13('0x18')],_0x241687[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x5c67b1,null))[_0x8b13('0xe')](handleError(_0x5c67b1,null));};exports[_0x8b13('0x2d')]=function(_0x327eb1,_0x4ec1a5){return respondWithRpcPromise('Outbound',_0x327eb1[_0x8b13('0x18')])['then'](respondWithResult(_0x4ec1a5,null))[_0x8b13('0xe')](handleError(_0x4ec1a5,null));};exports['outboundChannels']=function(_0x590a23,_0x3a8e06){return respondWithRpcPromise(_0x8b13('0x2e'),_0x590a23[_0x8b13('0x18')])[_0x8b13('0x19')](respondWithResult(_0x3a8e06,null))['catch'](handleError(_0x3a8e06,null));};exports['agents']=function(_0x230a8c,_0x595d8d){var _0x6ba2f3;return respondWithRpcPromise(_0x8b13('0x2f'),_0x230a8c['query'])[_0x8b13('0x19')](function(_0x41d710){_0x6ba2f3=_0x41d710;return respondWithRpcPromise(_0x8b13('0x2f'),_0x230a8c[_0x8b13('0x18')],routingClient);})[_0x8b13('0x19')](function(_0x38ec75){return _[_0x8b13('0x1e')]({},_0x38ec75,_0x6ba2f3);})['then'](respondWithResult(_0x595d8d,null))['catch'](handleError(_0x595d8d,null));};exports['agentCapacity']=function(_0x3eb3c5,_0x16ec3){if(_0x3eb3c5[_0x8b13('0x23')]&&_0x3eb3c5[_0x8b13('0x23')][_0x8b13('0x30')]&&_0x3eb3c5[_0x8b13('0x31')]&&_0x3eb3c5['user'][_0x8b13('0x12')]){for(var _0x50e535 in _0x3eb3c5[_0x8b13('0x23')]['interaction']){if(_0x3eb3c5[_0x8b13('0x23')][_0x8b13('0x30')][_0x8b13('0x32')](_0x50e535)){db[_0x8b13('0x33')][_0x8b13('0x34')]({'where':{'channel':_0x50e535,'membername':_0x3eb3c5[_0x8b13('0x31')][_0x8b13('0x12')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x3eb3c5['body']['interaction'][_0x50e535]&&_0x3eb3c5[_0x8b13('0x23')][_0x8b13('0x30')][_0x50e535][_0x8b13('0x35')]?{'$notIn':_0x3eb3c5[_0x8b13('0x23')]['interaction'][_0x50e535]}:{'$ne':null}}})['then'](function(_0x3f420d){var _0x54d19d=moment()[_0x8b13('0x36')](_0x8b13('0x37'));for(var _0x20c363=0x0,_0x28ae75=_0x3f420d[_0x8b13('0x35')];_0x20c363<_0x28ae75;_0x20c363+=0x1){_0x3f420d[_0x20c363]['updateAttributes']({'exitAt':_0x54d19d});}});for(var _0x2df766=0x0;_0x2df766<_0x3eb3c5[_0x8b13('0x23')][_0x8b13('0x30')][_0x50e535][_0x8b13('0x35')];_0x2df766+=0x1){db[_0x8b13('0x33')][_0x8b13('0x38')]({'where':{'channel':_0x50e535,'membername':_0x3eb3c5[_0x8b13('0x31')][_0x8b13('0x12')],'type':_0x8b13('0x39'),'uniqueid':_0x3eb3c5['body'][_0x8b13('0x30')][_0x50e535][_0x2df766],'exitAt':null},'defaults':{'channel':_0x50e535,'membername':_0x3eb3c5['user'][_0x8b13('0x12')],'interface':_[_0x8b13('0x14')](_0x3eb3c5[_0x8b13('0x31')]['interface'])?util[_0x8b13('0x36')](_0x8b13('0x3a'),_0x3eb3c5[_0x8b13('0x31')][_0x8b13('0x12')]):_0x3eb3c5[_0x8b13('0x31')][_0x8b13('0x3b')],'type':_0x8b13('0x39'),'enterAt':moment()['format'](_0x8b13('0x37')),'role':'agent','internal':_0x3eb3c5[_0x8b13('0x31')][_0x8b13('0x3c')],'uniqueid':_0x3eb3c5[_0x8b13('0x23')][_0x8b13('0x30')][_0x50e535][_0x2df766]}});}}}}return respondWithRpcPromise(_0x8b13('0x3d'),{'id':_0x3eb3c5[_0x8b13('0x1b')]['id'],'capacity':_0x3eb3c5[_0x8b13('0x23')][_0x8b13('0x3e')]},routingClient)[_0x8b13('0x19')](respondWithResult(_0x16ec3,null))[_0x8b13('0xe')](handleError(_0x16ec3,null));};exports[_0x8b13('0x3f')]=function(_0xddac8e,_0xd55f3b){return respondWithRpcPromise(_0x8b13('0x40'),_0xddac8e[_0x8b13('0x18')])[_0x8b13('0x19')](respondWithResult(_0xd55f3b,null))[_0x8b13('0xe')](handleError(_0xd55f3b,null));};exports['trunks']=function(_0x1699c6,_0x20e89c){return respondWithRpcPromise('Trunks',_0x1699c6[_0x8b13('0x18')])[_0x8b13('0x19')](respondWithResult(_0x20e89c,null))[_0x8b13('0xe')](handleError(_0x20e89c,null));};exports[_0x8b13('0x41')]=function(_0x25cb45,_0x12549b){return respondWithRpcPromise(_0x8b13('0x42'),_0x25cb45[_0x8b13('0x18')])[_0x8b13('0x19')](respondWithResult(_0x12549b,null))[_0x8b13('0xe')](handleError(_0x12549b,null));};exports[_0x8b13('0x43')]=function(_0x450b47,_0x137e8c){return respondWithRpcPromise(_0x8b13('0x44'),_0x450b47[_0x8b13('0x18')],routingClient)['then'](respondWithResult(_0x137e8c,null))[_0x8b13('0xe')](handleError(_0x137e8c,null));};exports[_0x8b13('0x45')]=function(_0x47a3fa,_0x11e8af){return respondWithRpcPromise(_0x8b13('0x44'),_0x47a3fa[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](findById(_0x47a3fa[_0x8b13('0x1b')]['id']))['then'](respondWithResult(_0x11e8af,null))[_0x8b13('0xe')](handleError(_0x11e8af,null));};exports[_0x8b13('0x46')]=function(_0x46850a,_0x52e2a6){return respondWithRpcPromise(_0x8b13('0x47'),_0x46850a[_0x8b13('0x18')],routingClient)['then'](respondWithResult(_0x52e2a6,null))[_0x8b13('0xe')](handleError(_0x52e2a6,null));};exports[_0x8b13('0x48')]=function(_0x475c8d,_0xd29067){return respondWithRpcPromise('MailQueues',_0x475c8d[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](findById(_0x475c8d['params']['id']))[_0x8b13('0x19')](respondWithResult(_0xd29067,null))[_0x8b13('0xe')](handleError(_0xd29067,null));};exports[_0x8b13('0x49')]=function(_0x23a63c,_0x5d05cb){return respondWithRpcPromise(_0x8b13('0x4a'),_0x23a63c[_0x8b13('0x18')],mailClient)[_0x8b13('0x19')](respondWithResult(_0x5d05cb,null))[_0x8b13('0xe')](handleError(_0x5d05cb,null));};exports[_0x8b13('0x4b')]=function(_0x2fff4e,_0x571e89){return respondWithRpcPromise(_0x8b13('0x4c'),_0x2fff4e[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x571e89,null))['catch'](handleError(_0x571e89,null));};exports[_0x8b13('0x4d')]=function(_0x576c91,_0x122ea2){return respondWithRpcPromise(_0x8b13('0x4c'),_0x576c91['query'],routingClient)['then'](findById(_0x576c91['params']['id']))['then'](respondWithResult(_0x122ea2,null))['catch'](handleError(_0x122ea2,null));};exports[_0x8b13('0x4e')]=function(_0x1bc936,_0x574f98){return respondWithRpcPromise(_0x8b13('0x4f'),_0x1bc936['query'],routingClient)[_0x8b13('0x19')](respondWithResult(_0x574f98,null))[_0x8b13('0xe')](handleError(_0x574f98,null));};exports[_0x8b13('0x50')]=function(_0x22c4d4,_0x43f12a){return respondWithRpcPromise(_0x8b13('0x4f'),_0x22c4d4[_0x8b13('0x18')],routingClient)['then'](findById(_0x22c4d4[_0x8b13('0x1b')]['id']))['then'](respondWithResult(_0x43f12a,null))[_0x8b13('0xe')](handleError(_0x43f12a,null));};exports[_0x8b13('0x51')]=function(_0x207a54,_0x11a4ba){return respondWithRpcPromise(_0x8b13('0x52'),_0x207a54[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x11a4ba,null))['catch'](handleError(_0x11a4ba,null));};exports[_0x8b13('0x53')]=function(_0x5d1174,_0x2b109c){return respondWithRpcPromise(_0x8b13('0x52'),_0x5d1174[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](findById(_0x5d1174[_0x8b13('0x1b')]['id']))['then'](respondWithResult(_0x2b109c,null))['catch'](handleError(_0x2b109c,null));};exports[_0x8b13('0x54')]=function(_0x37a243,_0x5ccf4e){return respondWithRpcPromise(_0x8b13('0x55'),_0x37a243[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x5ccf4e,null))['catch'](handleError(_0x5ccf4e,null));};exports[_0x8b13('0x56')]=function(_0x215a8a,_0x15ce51){return respondWithRpcPromise(_0x8b13('0x55'),_0x215a8a['query'],routingClient)[_0x8b13('0x19')](findById(_0x215a8a[_0x8b13('0x1b')]['id']))['then'](respondWithResult(_0x15ce51,null))[_0x8b13('0xe')](handleError(_0x15ce51,null));};exports[_0x8b13('0x57')]=function(_0x69e237,_0x3734e7){return respondWithRpcPromise(_0x8b13('0x58'),_0x69e237[_0x8b13('0x18')])[_0x8b13('0x19')](respondWithResult(_0x3734e7,null))[_0x8b13('0xe')](handleError(_0x3734e7,null));};exports[_0x8b13('0x59')]=function(_0x2cace0,_0x2f2bc5){return respondWithRpcPromise(_0x8b13('0x5a'),_0x2cace0[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x2f2bc5,null))['catch'](handleError(_0x2f2bc5,null));};exports[_0x8b13('0x5b')]=function(_0x578469,_0x14dee4){return respondWithRpcPromise(_0x8b13('0x5c'),_0x578469[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x14dee4,null))['catch'](handleError(_0x14dee4,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x27ad64,_0x2236b5){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x27ad64[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x2236b5,null))[_0x8b13('0xe')](handleError(_0x2236b5,null));};exports[_0x8b13('0x5d')]=function(_0x7499cb,_0x12aa48){return respondWithRpcPromise(_0x8b13('0x5e'),_0x7499cb[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](function(_0x24211c){if(_0x7499cb['query'][_0x8b13('0x5f')]!==undefined){var _0x2e7477=_(_0x24211c['rows'])[_0x8b13('0x60')]([_0x7499cb[_0x8b13('0x18')]['type'],_0x7499cb[_0x8b13('0x1b')]['id']])[_0x8b13('0x61')](_0x8b13('0x62'))[_0x8b13('0x63')]()[_0x8b13('0x64')]();return _0x24211c[_0x8b13('0x15')][_0x8b13('0x60')](function(_0x1fde8b){return _0x2e7477['indexOf'](_0x1fde8b[_0x8b13('0x62')])>-0x1;});}else{return _0x24211c[_0x8b13('0x15')][_0x8b13('0x60')](function(_0x5e2b4c){return _0x5e2b4c[_0x8b13('0x62')]===parseInt(_0x7499cb['params']['id']);});}})[_0x8b13('0x19')](respondWithResult(_0x12aa48,null))[_0x8b13('0xe')](handleError(_0x12aa48,null));};exports[_0x8b13('0x65')]=function(_0x40fefa,_0xc74525){return respondWithRpcPromise(_0x8b13('0x66'),_0x40fefa[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0xc74525,null))[_0x8b13('0xe')](handleError(_0xc74525,null));};exports[_0x8b13('0x67')]=function(_0x595f45,_0x3dc732){return respondWithRpcPromise(_0x8b13('0x68'),_0x595f45[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x3dc732,null))[_0x8b13('0xe')](handleError(_0x3dc732,null));};exports[_0x8b13('0x69')]=function(_0x2c69f5,_0x9173d){return respondWithRpcPromise(_0x8b13('0x6a'),_0x2c69f5[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x9173d,null))[_0x8b13('0xe')](handleError(_0x9173d,null));};exports[_0x8b13('0x6b')]=function(_0x4bb71a){return function(_0x491bf8,_0x3870a9){var _0x512f30,_0x22e10a;var _0x38a1de=_['capitalize'](_0x4bb71a);var _0x5319a1=_0x4bb71a===_0x8b13('0x6c')?_0x8b13('0x6d'):_0x8b13('0x6e');return db[_0x38a1de+_0x8b13('0x6f')][_0x8b13('0x70')]({'raw':!![],'where':{'id':_0x491bf8['params']['id']}})[_0x8b13('0x19')](function(_0x5152d0){if(_[_0x8b13('0x14')](_0x5152d0)){throw new Error(_0x38a1de+_0x8b13('0x71'));}_0x512f30=_0x5152d0;return db[_0x38a1de+'Message'][_0x8b13('0x70')]({'where':{'id':_0x491bf8[_0x8b13('0x23')][_0x8b13('0x72')]},'include':[{'model':db[_0x38a1de+_0x8b13('0x73')],'as':_0x8b13('0x73')},{'model':db[_0x38a1de+_0x5319a1],'as':'Account'}]});})[_0x8b13('0x19')](function(_0x202c12){if(_[_0x8b13('0x14')](_0x202c12)){throw new Error(_0x38a1de+'\x20Message\x20not\x20found');}_0x22e10a=_0x202c12;return _0x202c12[_0x8b13('0x74')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x3bfb06={'uniqueid':_0x4bb71a+'.'+_0x22e10a['id']+'.'+_0x22e10a[_0x8b13('0x73')]['id'],'FromUserId':_0x491bf8[_0x8b13('0x31')]['id'],'type':_0x8b13('0x75')};_0x3bfb06[_0x38a1de+_0x8b13('0x76')]=_0x22e10a['id'];_0x3bfb06[_0x38a1de+_0x8b13('0x77')]=_0x22e10a[_0x8b13('0x73')]['id'];_0x3bfb06[_0x8b13('0x78')+_0x38a1de+_0x5319a1+'Id']=_0x22e10a[_0x8b13('0x6e')]['id'];_0x3bfb06['To'+_0x38a1de+_0x8b13('0x79')]=_0x512f30['id'];return db[_0x38a1de+'TransferReport'][_0x8b13('0x7a')](_0x3bfb06);})[_0x8b13('0x19')](function(){return respondWithRpcPromise(_0x8b13('0x7b'),{'channel':_0x4bb71a,'interaction':_0x22e10a[_0x8b13('0x73')],'message':_0x22e10a,'account':_0x22e10a[_0x8b13('0x6e')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x512f30[_0x8b13('0x12')]+','+(_0x22e10a[_0x8b13('0x6e')][_0x8b13('0x7c')]||0x12c),'interval':_0x8b13('0x7d')}]},routingClient);})[_0x8b13('0x19')](respondWithResult(_0x3870a9,null))[_0x8b13('0xe')](handleError(_0x3870a9,null));};};exports['agentNotify']=function(_0x24005e,_0xd2b08b){var _0x556a92,_0x1b3a1b;if(_['isNil'](_0x24005e[_0x8b13('0x23')]['channel'])){throw new Error(_0x8b13('0x7e'));}var _0x291a30=_0x24005e[_0x8b13('0x23')][_0x8b13('0x7f')];var _0x13a7ea=_[_0x8b13('0x80')](_0x291a30);var _0x165813=_0x291a30===_0x8b13('0x6c')?'Website':_0x8b13('0x6e');return db[_0x8b13('0x81')]['findOne']({'raw':!![],'where':{'id':_0x24005e[_0x8b13('0x1b')]['id'],'role':_0x8b13('0x82')}})['then'](function(_0xa97f27){if(_[_0x8b13('0x14')](_0xa97f27)){throw new Error(_0x8b13('0x83'));}_0x556a92=_0xa97f27;return db[_0x13a7ea+_0x8b13('0x84')][_0x8b13('0x70')]({'where':{'id':_0x24005e['body']['messageId']},'include':[{'model':db[_0x13a7ea+_0x8b13('0x73')],'as':_0x8b13('0x73')},{'model':db[_0x13a7ea+_0x165813],'as':_0x8b13('0x6e')}]});})[_0x8b13('0x19')](function(_0xcafeff){if(_[_0x8b13('0x14')](_0xcafeff)){throw new Error(_0x13a7ea+_0x8b13('0x85'));}_0x1b3a1b=_0xcafeff;return _0xcafeff[_0x8b13('0x74')]({'read':0x0,'readAt':null,'UserId':null});})[_0x8b13('0x19')](function(){var _0xfac180={'uniqueid':_0x291a30+'.'+_0x1b3a1b['id']+'.'+_0x1b3a1b[_0x8b13('0x73')]['id'],'FromUserId':_0x24005e[_0x8b13('0x31')]['id'],'type':_0x8b13('0x75'),'ToUserId':_0x556a92['id']};_0xfac180[_0x13a7ea+_0x8b13('0x76')]=_0x1b3a1b['id'];_0xfac180[_0x13a7ea+_0x8b13('0x77')]=_0x1b3a1b[_0x8b13('0x73')]['id'];_0xfac180['From'+_0x13a7ea+_0x165813+'Id']=_0x1b3a1b[_0x8b13('0x6e')]['id'];return db[_0x13a7ea+'TransferReport'][_0x8b13('0x7a')](_0xfac180);})[_0x8b13('0x19')](function(){return respondWithRpcPromise(_0x8b13('0x7b'),{'channel':_0x291a30,'interaction':_0x1b3a1b[_0x8b13('0x73')],'message':_0x1b3a1b,'account':_0x1b3a1b[_0x8b13('0x6e')],'applications':[{'id':0x0,'priority':0x1,'app':_0x8b13('0x82'),'appdata':_0x556a92[_0x8b13('0x12')]+','+(_0x1b3a1b['Account'][_0x8b13('0x86')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x8b13('0x19')](respondWithResult(_0xd2b08b,null))[_0x8b13('0xe')](handleError(_0xd2b08b,null));};
\ No newline at end of file
+var _0x038b=['\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','MessageId','InteractionId','From','QueueId','TransferReport','create','queue','queueTransferTimeout','*,*,*,*','agentNotify','Channel\x20field\x20is\x20mandatory','channel','User','Agent\x20not\x20found','update','Start','agentTransferTimeout','moment','lodash','util','../../config/logger','jayson/promise','client','http','request','error','message','result','catch','status','json','sendStatus','name','send','isNil','rows','find','voiceChannels','VoiceChannels','then','voiceChannelMixMonitor','merge','query','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','OutboundChannels','agents','agentCapacity','interaction','user','MemberReport','findAll','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','interface','agent','internal','capacity','telephones','Telephones','trunks','Trunks','campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','showOpenchannelQueues','OpenchannelQueues','SmsQueues','showSmsQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','queue_id','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','findOne'];(function(_0x3f3729,_0xda0ef){var _0x144e2d=function(_0x497284){while(--_0x497284){_0x3f3729['push'](_0x3f3729['shift']());}};_0x144e2d(++_0xda0ef);}(_0x038b,0x114));var _0xb038=function(_0x4157f5,_0x1d11be){_0x4157f5=_0x4157f5-0x0;var _0xb789ae=_0x038b[_0x4157f5];return _0xb789ae;};'use strict';var BPromise=require('bluebird');var moment=require(_0xb038('0x0'));var _=require(_0xb038('0x1'));var util=require(_0xb038('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0xb038('0x3'))('api');var jayson=require(_0xb038('0x4'));var amiClient=jayson[_0xb038('0x5')]['http']({'port':0x232a});var mailClient=jayson[_0xb038('0x5')][_0xb038('0x6')]({'port':0x232b});var routingClient=jayson['client']['http']({'port':0x232c});function respondWithRpcPromise(_0x2e3e64,_0x1b077a,_0x1534a9){return new BPromise(function(_0x4b4085,_0x48a4d7){var _0x462e8f=_0x1534a9?_0x1534a9:amiClient;return _0x462e8f[_0xb038('0x7')](_0x2e3e64,_0x1b077a)['then'](function(_0x53bcc0){if(_0x53bcc0[_0xb038('0x8')]){if(_0x53bcc0[_0xb038('0x8')]['code']===0x1f4){return _0x48a4d7(_0x53bcc0[_0xb038('0x8')][_0xb038('0x9')]);}return _0x4b4085(_0x53bcc0[_0xb038('0x8')][_0xb038('0x9')]);}else{_0x4b4085(_0x53bcc0[_0xb038('0xa')]);}})[_0xb038('0xb')](function(_0x1e6474){_0x48a4d7(_0x1e6474);});});}function respondWithResult(_0x439751,_0x16e4a3){_0x16e4a3=_0x16e4a3||0xc8;return function(_0x57acd8){if(_0x57acd8){return _0x439751[_0xb038('0xc')](_0x16e4a3)[_0xb038('0xd')](_0x57acd8);}return _0x439751[_0xb038('0xe')](0x194);};}function handleError(_0x3cc717,_0x3a71a6){_0x3a71a6=_0x3a71a6||0x1f4;return function(_0x13acc7){logger[_0xb038('0x8')](_0x13acc7['stack']);if(_0x13acc7[_0xb038('0xf')]){delete _0x13acc7[_0xb038('0xf')];}_0x3cc717[_0xb038('0xc')](_0x3a71a6)[_0xb038('0x10')](_0x13acc7);};}function findById(_0xdef213){return function(_0x2b4173){if(!_['isNil'](_0xdef213)&&!_[_0xb038('0x11')](_0x2b4173)&&!_[_0xb038('0x11')](_0x2b4173[_0xb038('0x12')])){return _[_0xb038('0x13')](_0x2b4173['rows'],function(_0x49b237){return _0x49b237['id']==_0xdef213;});}return null;};}exports[_0xb038('0x14')]=function(_0x3f48e6,_0x3e06ef){return respondWithRpcPromise(_0xb038('0x15'),_0x3f48e6['query'])[_0xb038('0x16')](respondWithResult(_0x3e06ef,null))[_0xb038('0xb')](handleError(_0x3e06ef,null));};exports[_0xb038('0x17')]=function(_0x33a377,_0xc6cd61){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0xb038('0x18')](_0x33a377[_0xb038('0x19')],_0x33a377[_0xb038('0x1a')]))[_0xb038('0x16')](respondWithResult(_0xc6cd61,null))['catch'](handleError(_0xc6cd61,null));};exports[_0xb038('0x1b')]=function(_0x1b7505,_0x4bbf38){return respondWithRpcPromise(_0xb038('0x1c'),_[_0xb038('0x18')](_0x1b7505['query'],_0x1b7505[_0xb038('0x1a')]))['then'](respondWithResult(_0x4bbf38,null))[_0xb038('0xb')](handleError(_0x4bbf38,null));};exports[_0xb038('0x1d')]=function(_0x27ff21,_0x1df7c4){return respondWithRpcPromise(_0xb038('0x1e'),_0x27ff21[_0xb038('0x19')])[_0xb038('0x16')](respondWithResult(_0x1df7c4,null))['catch'](handleError(_0x1df7c4,null));};exports[_0xb038('0x1f')]=function(_0x33cf3c,_0x226631){return respondWithRpcPromise('VoiceQueues',_0x33cf3c[_0xb038('0x19')])[_0xb038('0x16')](findById(_0x33cf3c[_0xb038('0x1a')]['id']))['then'](respondWithResult(_0x226631,null))[_0xb038('0xb')](handleError(_0x226631,null));};exports[_0xb038('0x20')]=function(_0x28a6a9,_0x12b3b6){return respondWithRpcPromise(_0xb038('0x21'),_['merge'](_0x28a6a9[_0xb038('0x22')],_0x28a6a9[_0xb038('0x1a')]))[_0xb038('0x16')](respondWithResult(_0x12b3b6,null))[_0xb038('0xb')](handleError(_0x12b3b6,null));};exports[_0xb038('0x23')]=function(_0xbc8958,_0x29a0d7){return respondWithRpcPromise(_0xb038('0x24'),_[_0xb038('0x18')](_0xbc8958[_0xb038('0x19')],_0xbc8958[_0xb038('0x1a')]))[_0xb038('0x16')](respondWithResult(_0x29a0d7,null))[_0xb038('0xb')](handleError(_0x29a0d7,null));};exports['voiceQueuesChannels']=function(_0x1d807a,_0x598554){return respondWithRpcPromise(_0xb038('0x25'),_0x1d807a[_0xb038('0x19')])[_0xb038('0x16')](respondWithResult(_0x598554,null))[_0xb038('0xb')](handleError(_0x598554,null));};exports[_0xb038('0x26')]=function(_0x424b81,_0x3a393d){return respondWithRpcPromise(_0xb038('0x27'),_[_0xb038('0x18')](_0x424b81[_0xb038('0x19')],_0x424b81['params']))[_0xb038('0x16')](respondWithResult(_0x3a393d,null))[_0xb038('0xb')](handleError(_0x3a393d,null));};exports[_0xb038('0x28')]=function(_0x560342,_0x51e649){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0xb038('0x18')](_0x560342[_0xb038('0x19')],_0x560342[_0xb038('0x1a')]))[_0xb038('0x16')](respondWithResult(_0x51e649,null))[_0xb038('0xb')](handleError(_0x51e649,null));};exports[_0xb038('0x29')]=function(_0x48f777,_0x16abea){return respondWithRpcPromise(_0xb038('0x2a'),_[_0xb038('0x18')](_0x48f777[_0xb038('0x19')],_0x48f777['params']))[_0xb038('0x16')](respondWithResult(_0x16abea,null))[_0xb038('0xb')](handleError(_0x16abea,null));};exports['outbound']=function(_0x5cb40c,_0x26c769){return respondWithRpcPromise(_0xb038('0x2b'),_0x5cb40c[_0xb038('0x19')])[_0xb038('0x16')](respondWithResult(_0x26c769,null))[_0xb038('0xb')](handleError(_0x26c769,null));};exports['outboundChannels']=function(_0x404f82,_0x125d2a){return respondWithRpcPromise(_0xb038('0x2c'),_0x404f82[_0xb038('0x19')])['then'](respondWithResult(_0x125d2a,null))[_0xb038('0xb')](handleError(_0x125d2a,null));};exports[_0xb038('0x2d')]=function(_0x7d2f79,_0x573426){var _0x412d71;return respondWithRpcPromise('Agents',_0x7d2f79[_0xb038('0x19')])[_0xb038('0x16')](function(_0x3ac1db){_0x412d71=_0x3ac1db;return respondWithRpcPromise('Agents',_0x7d2f79[_0xb038('0x19')],routingClient);})[_0xb038('0x16')](function(_0x4e0533){return _['merge']({},_0x4e0533,_0x412d71);})[_0xb038('0x16')](respondWithResult(_0x573426,null))[_0xb038('0xb')](handleError(_0x573426,null));};exports[_0xb038('0x2e')]=function(_0x3c291e,_0x5ad462){if(_0x3c291e[_0xb038('0x22')]&&_0x3c291e[_0xb038('0x22')][_0xb038('0x2f')]&&_0x3c291e[_0xb038('0x30')]&&_0x3c291e['user'][_0xb038('0xf')]){for(var _0x269c7d in _0x3c291e['body'][_0xb038('0x2f')]){if(_0x3c291e[_0xb038('0x22')][_0xb038('0x2f')]['hasOwnProperty'](_0x269c7d)){db[_0xb038('0x31')][_0xb038('0x32')]({'where':{'channel':_0x269c7d,'membername':_0x3c291e['user']['name'],'type':_0xb038('0x33'),'exitAt':null,'uniqueid':_0x3c291e[_0xb038('0x22')][_0xb038('0x2f')][_0x269c7d]&&_0x3c291e[_0xb038('0x22')][_0xb038('0x2f')][_0x269c7d][_0xb038('0x34')]?{'$notIn':_0x3c291e[_0xb038('0x22')][_0xb038('0x2f')][_0x269c7d]}:{'$ne':null}}})['then'](function(_0x5f0d9d){var _0x5e8383=moment()[_0xb038('0x35')](_0xb038('0x36'));for(var _0x52f0b8=0x0,_0x46a724=_0x5f0d9d[_0xb038('0x34')];_0x52f0b8<_0x46a724;_0x52f0b8+=0x1){_0x5f0d9d[_0x52f0b8][_0xb038('0x37')]({'exitAt':_0x5e8383});}});for(var _0x5f24cd=0x0;_0x5f24cd<_0x3c291e[_0xb038('0x22')]['interaction'][_0x269c7d]['length'];_0x5f24cd+=0x1){db[_0xb038('0x31')][_0xb038('0x38')]({'where':{'channel':_0x269c7d,'membername':_0x3c291e[_0xb038('0x30')][_0xb038('0xf')],'type':_0xb038('0x33'),'uniqueid':_0x3c291e[_0xb038('0x22')][_0xb038('0x2f')][_0x269c7d][_0x5f24cd],'exitAt':null},'defaults':{'channel':_0x269c7d,'membername':_0x3c291e[_0xb038('0x30')][_0xb038('0xf')],'interface':_[_0xb038('0x11')](_0x3c291e['user'][_0xb038('0x39')])?util[_0xb038('0x35')]('SIP/%s',_0x3c291e[_0xb038('0x30')][_0xb038('0xf')]):_0x3c291e['user'][_0xb038('0x39')],'type':_0xb038('0x33'),'enterAt':moment()[_0xb038('0x35')](_0xb038('0x36')),'role':_0xb038('0x3a'),'internal':_0x3c291e[_0xb038('0x30')][_0xb038('0x3b')],'uniqueid':_0x3c291e[_0xb038('0x22')][_0xb038('0x2f')][_0x269c7d][_0x5f24cd]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x3c291e[_0xb038('0x1a')]['id'],'capacity':_0x3c291e[_0xb038('0x22')][_0xb038('0x3c')]},routingClient)[_0xb038('0x16')](respondWithResult(_0x5ad462,null))[_0xb038('0xb')](handleError(_0x5ad462,null));};exports[_0xb038('0x3d')]=function(_0x591077,_0x1f4997){return respondWithRpcPromise(_0xb038('0x3e'),_0x591077[_0xb038('0x19')])[_0xb038('0x16')](respondWithResult(_0x1f4997,null))[_0xb038('0xb')](handleError(_0x1f4997,null));};exports[_0xb038('0x3f')]=function(_0xd7a862,_0x5b82f4){return respondWithRpcPromise(_0xb038('0x40'),_0xd7a862['query'])[_0xb038('0x16')](respondWithResult(_0x5b82f4,null))[_0xb038('0xb')](handleError(_0x5b82f4,null));};exports[_0xb038('0x41')]=function(_0x998fe3,_0x1518c4){return respondWithRpcPromise('Campaigns',_0x998fe3['query'])['then'](respondWithResult(_0x1518c4,null))[_0xb038('0xb')](handleError(_0x1518c4,null));};exports[_0xb038('0x42')]=function(_0x276fac,_0x218368){return respondWithRpcPromise(_0xb038('0x43'),_0x276fac[_0xb038('0x19')],routingClient)['then'](respondWithResult(_0x218368,null))[_0xb038('0xb')](handleError(_0x218368,null));};exports[_0xb038('0x44')]=function(_0x5b2cbb,_0x5b27d3){return respondWithRpcPromise(_0xb038('0x43'),_0x5b2cbb['query'],routingClient)[_0xb038('0x16')](findById(_0x5b2cbb['params']['id']))[_0xb038('0x16')](respondWithResult(_0x5b27d3,null))[_0xb038('0xb')](handleError(_0x5b27d3,null));};exports[_0xb038('0x45')]=function(_0x4300e9,_0x4ee38b){return respondWithRpcPromise(_0xb038('0x46'),_0x4300e9[_0xb038('0x19')],routingClient)[_0xb038('0x16')](respondWithResult(_0x4ee38b,null))[_0xb038('0xb')](handleError(_0x4ee38b,null));};exports[_0xb038('0x47')]=function(_0x1246c8,_0x14a553){return respondWithRpcPromise(_0xb038('0x46'),_0x1246c8[_0xb038('0x19')],routingClient)[_0xb038('0x16')](findById(_0x1246c8[_0xb038('0x1a')]['id']))[_0xb038('0x16')](respondWithResult(_0x14a553,null))['catch'](handleError(_0x14a553,null));};exports[_0xb038('0x48')]=function(_0x2fc38d,_0x438e7e){return respondWithRpcPromise(_0xb038('0x49'),_0x2fc38d[_0xb038('0x19')],mailClient)['then'](respondWithResult(_0x438e7e,null))[_0xb038('0xb')](handleError(_0x438e7e,null));};exports['openchannelQueues']=function(_0xfb3ce6,_0x170a7e){return respondWithRpcPromise('OpenchannelQueues',_0xfb3ce6[_0xb038('0x19')],routingClient)[_0xb038('0x16')](respondWithResult(_0x170a7e,null))[_0xb038('0xb')](handleError(_0x170a7e,null));};exports[_0xb038('0x4a')]=function(_0x120cc7,_0x2f01c0){return respondWithRpcPromise(_0xb038('0x4b'),_0x120cc7[_0xb038('0x19')],routingClient)[_0xb038('0x16')](findById(_0x120cc7[_0xb038('0x1a')]['id']))['then'](respondWithResult(_0x2f01c0,null))[_0xb038('0xb')](handleError(_0x2f01c0,null));};exports['smsQueues']=function(_0x189894,_0x37e445){return respondWithRpcPromise(_0xb038('0x4c'),_0x189894[_0xb038('0x19')],routingClient)[_0xb038('0x16')](respondWithResult(_0x37e445,null))[_0xb038('0xb')](handleError(_0x37e445,null));};exports[_0xb038('0x4d')]=function(_0x4c23b2,_0x572ad4){return respondWithRpcPromise(_0xb038('0x4c'),_0x4c23b2[_0xb038('0x19')],routingClient)[_0xb038('0x16')](findById(_0x4c23b2['params']['id']))['then'](respondWithResult(_0x572ad4,null))[_0xb038('0xb')](handleError(_0x572ad4,null));};exports['whatsappQueues']=function(_0x35da9e,_0x50e078){return respondWithRpcPromise(_0xb038('0x4e'),_0x35da9e['query'],routingClient)[_0xb038('0x16')](respondWithResult(_0x50e078,null))[_0xb038('0xb')](handleError(_0x50e078,null));};exports[_0xb038('0x4f')]=function(_0x112d77,_0x2c57b9){return respondWithRpcPromise(_0xb038('0x4e'),_0x112d77['query'],routingClient)['then'](findById(_0x112d77[_0xb038('0x1a')]['id']))['then'](respondWithResult(_0x2c57b9,null))[_0xb038('0xb')](handleError(_0x2c57b9,null));};exports[_0xb038('0x50')]=function(_0x2f4650,_0x538690){return respondWithRpcPromise(_0xb038('0x51'),_0x2f4650['query'],routingClient)[_0xb038('0x16')](respondWithResult(_0x538690,null))[_0xb038('0xb')](handleError(_0x538690,null));};exports[_0xb038('0x52')]=function(_0x4a417a,_0x40abb7){return respondWithRpcPromise(_0xb038('0x51'),_0x4a417a[_0xb038('0x19')],routingClient)[_0xb038('0x16')](findById(_0x4a417a[_0xb038('0x1a')]['id']))['then'](respondWithResult(_0x40abb7,null))['catch'](handleError(_0x40abb7,null));};exports['faxAccounts']=function(_0x609caf,_0x4efa0f){return respondWithRpcPromise(_0xb038('0x53'),_0x609caf['query'])[_0xb038('0x16')](respondWithResult(_0x4efa0f,null))[_0xb038('0xb')](handleError(_0x4efa0f,null));};exports[_0xb038('0x54')]=function(_0x1294d7,_0x7c8d01){return respondWithRpcPromise(_0xb038('0x55'),_0x1294d7[_0xb038('0x19')],routingClient)[_0xb038('0x16')](respondWithResult(_0x7c8d01,null))[_0xb038('0xb')](handleError(_0x7c8d01,null));};exports[_0xb038('0x56')]=function(_0x1db407,_0x1a5cf6){return respondWithRpcPromise(_0xb038('0x57'),_0x1db407[_0xb038('0x19')],routingClient)[_0xb038('0x16')](respondWithResult(_0x1a5cf6,null))[_0xb038('0xb')](handleError(_0x1a5cf6,null));};exports[_0xb038('0x58')]=function(_0x123e31,_0x1f9a30){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x123e31[_0xb038('0x19')],routingClient)[_0xb038('0x16')](respondWithResult(_0x1f9a30,null))[_0xb038('0xb')](handleError(_0x1f9a30,null));};exports[_0xb038('0x59')]=function(_0xdaacfe,_0x5ead21){return respondWithRpcPromise(_0xb038('0x5a'),_0xdaacfe[_0xb038('0x19')],routingClient)[_0xb038('0x16')](function(_0x80d720){if(_0xdaacfe[_0xb038('0x19')][_0xb038('0x5b')]!==undefined){var _0x2acbf6=_(_0x80d720[_0xb038('0x12')])[_0xb038('0x5c')]([_0xdaacfe['query']['type'],_0xdaacfe[_0xb038('0x1a')]['id']])['map'](_0xb038('0x5d'))['uniq']()['value']();return _0x80d720['rows'][_0xb038('0x5c')](function(_0x463ae6){return _0x2acbf6['indexOf'](_0x463ae6[_0xb038('0x5d')])>-0x1;});}else{return _0x80d720[_0xb038('0x12')][_0xb038('0x5c')](function(_0x31ccf7){return _0x31ccf7[_0xb038('0x5d')]===parseInt(_0xdaacfe[_0xb038('0x1a')]['id']);});}})[_0xb038('0x16')](respondWithResult(_0x5ead21,null))[_0xb038('0xb')](handleError(_0x5ead21,null));};exports[_0xb038('0x5e')]=function(_0xde487d,_0x4b15b7){return respondWithRpcPromise(_0xb038('0x5f'),_0xde487d[_0xb038('0x19')],routingClient)[_0xb038('0x16')](respondWithResult(_0x4b15b7,null))[_0xb038('0xb')](handleError(_0x4b15b7,null));};exports[_0xb038('0x60')]=function(_0x222e90,_0x425854){return respondWithRpcPromise('WhatsappQueuesWaitingInteractions',_0x222e90[_0xb038('0x19')],routingClient)[_0xb038('0x16')](respondWithResult(_0x425854,null))[_0xb038('0xb')](handleError(_0x425854,null));};exports['faxQueuesWaitingInteractions']=function(_0x551fcc,_0x2adf3b){return respondWithRpcPromise(_0xb038('0x61'),_0x551fcc[_0xb038('0x19')],routingClient)['then'](respondWithResult(_0x2adf3b,null))[_0xb038('0xb')](handleError(_0x2adf3b,null));};exports[_0xb038('0x62')]=function(_0x5b003a){return function(_0x2e6db4,_0x1d5640){var _0x240d06,_0x2a41c8;var _0x24f810=_[_0xb038('0x63')](_0x5b003a);var _0x1ea747=_0x5b003a===_0xb038('0x64')?_0xb038('0x65'):_0xb038('0x66');return db[_0x24f810+_0xb038('0x67')][_0xb038('0x68')]({'raw':!![],'where':{'id':_0x2e6db4[_0xb038('0x1a')]['id']}})[_0xb038('0x16')](function(_0x5d1410){if(_[_0xb038('0x11')](_0x5d1410)){throw new Error(_0x24f810+_0xb038('0x69'));}_0x240d06=_0x5d1410;return db[_0x24f810+_0xb038('0x6a')][_0xb038('0x68')]({'where':{'id':_0x2e6db4[_0xb038('0x22')][_0xb038('0x6b')]},'include':[{'model':db[_0x24f810+_0xb038('0x6c')],'as':_0xb038('0x6c')},{'model':db[_0x24f810+_0x1ea747],'as':'Account'}]});})[_0xb038('0x16')](function(_0x3e01ce){if(_['isNil'](_0x3e01ce)){throw new Error(_0x24f810+_0xb038('0x6d'));}_0x2a41c8=_0x3e01ce;return _0x3e01ce['update']({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x38a4d3={'uniqueid':_0x5b003a+'.'+_0x2a41c8['id']+'.'+_0x2a41c8['Interaction']['id'],'FromUserId':_0x2e6db4[_0xb038('0x30')]['id'],'type':'queue'};_0x38a4d3[_0x24f810+_0xb038('0x6e')]=_0x2a41c8['id'];_0x38a4d3[_0x24f810+_0xb038('0x6f')]=_0x2a41c8[_0xb038('0x6c')]['id'];_0x38a4d3[_0xb038('0x70')+_0x24f810+_0x1ea747+'Id']=_0x2a41c8[_0xb038('0x66')]['id'];_0x38a4d3['To'+_0x24f810+_0xb038('0x71')]=_0x240d06['id'];return db[_0x24f810+_0xb038('0x72')][_0xb038('0x73')](_0x38a4d3);})['then'](function(){return respondWithRpcPromise('Start',{'channel':_0x5b003a,'interaction':_0x2a41c8[_0xb038('0x6c')],'message':_0x2a41c8,'account':_0x2a41c8[_0xb038('0x66')],'applications':[{'id':0x0,'priority':0x1,'app':_0xb038('0x74'),'appdata':_0x240d06[_0xb038('0xf')]+','+(_0x2a41c8['Account'][_0xb038('0x75')]||0x12c),'interval':_0xb038('0x76')}]},routingClient);})[_0xb038('0x16')](respondWithResult(_0x1d5640,null))[_0xb038('0xb')](handleError(_0x1d5640,null));};};exports[_0xb038('0x77')]=function(_0x139ffa,_0x208cdd){var _0x2ee9bd,_0x32ee35;if(_[_0xb038('0x11')](_0x139ffa['body']['channel'])){throw new Error(_0xb038('0x78'));}var _0xb7f025=_0x139ffa[_0xb038('0x22')][_0xb038('0x79')];var _0x3ee569=_[_0xb038('0x63')](_0xb7f025);var _0x3e129d=_0xb7f025==='chat'?_0xb038('0x65'):_0xb038('0x66');return db[_0xb038('0x7a')][_0xb038('0x68')]({'raw':!![],'where':{'id':_0x139ffa[_0xb038('0x1a')]['id'],'role':_0xb038('0x3a')}})['then'](function(_0x451fe5){if(_[_0xb038('0x11')](_0x451fe5)){throw new Error(_0xb038('0x7b'));}_0x2ee9bd=_0x451fe5;return db[_0x3ee569+_0xb038('0x6a')][_0xb038('0x68')]({'where':{'id':_0x139ffa[_0xb038('0x22')][_0xb038('0x6b')]},'include':[{'model':db[_0x3ee569+_0xb038('0x6c')],'as':_0xb038('0x6c')},{'model':db[_0x3ee569+_0x3e129d],'as':_0xb038('0x66')}]});})[_0xb038('0x16')](function(_0x22e0bd){if(_[_0xb038('0x11')](_0x22e0bd)){throw new Error(_0x3ee569+_0xb038('0x6d'));}_0x32ee35=_0x22e0bd;return _0x22e0bd[_0xb038('0x7c')]({'read':0x0,'readAt':null,'UserId':null});})[_0xb038('0x16')](function(){var _0x5448e3={'uniqueid':_0xb7f025+'.'+_0x32ee35['id']+'.'+_0x32ee35['Interaction']['id'],'FromUserId':_0x139ffa[_0xb038('0x30')]['id'],'type':_0xb038('0x74'),'ToUserId':_0x2ee9bd['id']};_0x5448e3[_0x3ee569+_0xb038('0x6e')]=_0x32ee35['id'];_0x5448e3[_0x3ee569+'InteractionId']=_0x32ee35[_0xb038('0x6c')]['id'];_0x5448e3[_0xb038('0x70')+_0x3ee569+_0x3e129d+'Id']=_0x32ee35[_0xb038('0x66')]['id'];return db[_0x3ee569+_0xb038('0x72')]['create'](_0x5448e3);})['then'](function(){return respondWithRpcPromise(_0xb038('0x7d'),{'channel':_0xb7f025,'interaction':_0x32ee35[_0xb038('0x6c')],'message':_0x32ee35,'account':_0x32ee35['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0xb038('0x3a'),'appdata':_0x2ee9bd[_0xb038('0xf')]+','+(_0x32ee35[_0xb038('0x66')][_0xb038('0x7e')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xb038('0x16')](respondWithResult(_0x208cdd,null))[_0xb038('0xb')](handleError(_0x208cdd,null));};
\ No newline at end of file
index 77a2535..bf99d1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x789f=['fs-extra','../../components/auth/service','get','isAuthenticated','index','/:id','show','/:id/run','run','post','create','delete','destroy','exports','util'];(function(_0x5b3a22,_0xb9eb3d){var _0xd6e75c=function(_0x168195){while(--_0x168195){_0x5b3a22['push'](_0x5b3a22['shift']());}};_0xd6e75c(++_0xb9eb3d);}(_0x789f,0x194));var _0xf789=function(_0x2f3794,_0x3c3bec){_0x2f3794=_0x2f3794-0x0;var _0x1c9fbe=_0x789f[_0x2f3794];return _0x1c9fbe;};'use strict';var multer=require('multer');var util=require(_0xf789('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xf789('0x1'));var auth=require(_0xf789('0x2'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./schedule.controller');router[_0xf789('0x3')]('/',auth[_0xf789('0x4')](),controller[_0xf789('0x5')]);router['get'](_0xf789('0x6'),auth[_0xf789('0x4')](),controller[_0xf789('0x7')]);router['get'](_0xf789('0x8'),auth[_0xf789('0x4')](),controller[_0xf789('0x9')]);router[_0xf789('0xa')]('/',auth[_0xf789('0x4')](),controller[_0xf789('0xb')]);router['put']('/:id',auth[_0xf789('0x4')](),controller['update']);router[_0xf789('0xc')]('/:id',auth['isAuthenticated'](),controller[_0xf789('0xd')]);module[_0xf789('0xe')]=router;
\ No newline at end of file
+var _0x355d=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./schedule.controller','get','index','show','/:id/run','post','isAuthenticated','create','put','/:id','exports','multer','util','path','connect-timeout'];(function(_0x30839e,_0x49a0ad){var _0x542091=function(_0x570f60){while(--_0x570f60){_0x30839e['push'](_0x30839e['shift']());}};_0x542091(++_0x49a0ad);}(_0x355d,0xec));var _0xd355=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x355d[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xd355('0x0'));var util=require(_0xd355('0x1'));var path=require(_0xd355('0x2'));var timeout=require(_0xd355('0x3'));var express=require(_0xd355('0x4'));var router=express[_0xd355('0x5')]();var fs_extra=require(_0xd355('0x6'));var auth=require(_0xd355('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xd355('0x8'));var controller=require(_0xd355('0x9'));router[_0xd355('0xa')]('/',auth['isAuthenticated'](),controller[_0xd355('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xd355('0xc')]);router[_0xd355('0xa')](_0xd355('0xd'),auth['isAuthenticated'](),controller['run']);router[_0xd355('0xe')]('/',auth[_0xd355('0xf')](),controller[_0xd355('0x10')]);router[_0xd355('0x11')](_0xd355('0x12'),auth[_0xd355('0xf')](),controller['update']);router['delete'](_0xd355('0x12'),auth[_0xd355('0xf')](),controller['destroy']);module[_0xd355('0x13')]=router;
\ No newline at end of file
index 2cb3323..bb7b812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68bb=['xlsx','custom','default','BOOLEAN','TEXT','sequelize','exports','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','quarters','months','weeks','days','hours','csv','pdf'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x68bb,0x1e5));var _0xb68b=function(_0x35c667,_0x432833){_0x35c667=_0x35c667-0x0;var _0x52398f=_0x68bb[_0x35c667];return _0x52398f;};'use strict';var Sequelize=require(_0xb68b('0x0'));module[_0xb68b('0x1')]={'name':{'type':Sequelize[_0xb68b('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xb68b('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xb68b('0x2')],'allowNull':![],'defaultValue':_0xb68b('0x3')},'startAt':{'type':Sequelize[_0xb68b('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0xb68b('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xb68b('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xb68b('0x6')](_0xb68b('0x7'),_0xb68b('0x8'),_0xb68b('0x9'),_0xb68b('0xa'),_0xb68b('0xb'),_0xb68b('0xc'),'minutes'),'allowNull':![],'defaultValue':_0xb68b('0xb')},'output':{'type':Sequelize['ENUM'](_0xb68b('0xd'),_0xb68b('0xe'),_0xb68b('0xf')),'allowNull':![],'defaultValue':_0xb68b('0xd')},'type':{'type':Sequelize[_0xb68b('0x6')](_0xb68b('0x10'),_0xb68b('0x11')),'allowNull':![],'defaultValue':_0xb68b('0x10')},'sendMail':{'type':Sequelize[_0xb68b('0x12')],'defaultValue':![]},'email':{'type':Sequelize[_0xb68b('0x2')]},'cc':{'type':Sequelize[_0xb68b('0x13')]},'bcc':{'type':Sequelize[_0xb68b('0x13')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x707d=['exports','BOOLEAN','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','years','months','days','hours','minutes','ENUM','csv','xlsx','custom','TEXT','sequelize'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0x707d,0x1b9));var _0xd707=function(_0x32d62f,_0x2efcef){_0x32d62f=_0x32d62f-0x0;var _0x582ff2=_0x707d[_0x32d62f];return _0x582ff2;};'use strict';var Sequelize=require(_0xd707('0x0'));module[_0xd707('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xd707('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xd707('0x3')],'allowNull':![],'defaultValue':_0xd707('0x4')},'startAt':{'type':Sequelize[_0xd707('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0xd707('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xd707('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0xd707('0x7'),'quarters',_0xd707('0x8'),'weeks',_0xd707('0x9'),_0xd707('0xa'),_0xd707('0xb')),'allowNull':![],'defaultValue':_0xd707('0x9')},'output':{'type':Sequelize[_0xd707('0xc')](_0xd707('0xd'),'pdf',_0xd707('0xe')),'allowNull':![],'defaultValue':_0xd707('0xd')},'type':{'type':Sequelize['ENUM'](_0xd707('0xf'),'default'),'allowNull':![],'defaultValue':_0xd707('0xf')},'sendMail':{'type':Sequelize[_0xd707('0x2')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xd707('0x10')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index b87b83f..496da59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x804b=['options','includeAll','include','Schedule','findAll','rows','params','find','catch','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Scheduler','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','status','end','offset','undefined','count','set','Content-Range','json','reject','save','update','destroy','get','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL'];(function(_0x4b32b9,_0x4ed982){var _0x436326=function(_0x52c482){while(--_0x52c482){_0x4b32b9['push'](_0x4b32b9['shift']());}};_0x436326(++_0x4ed982);}(_0x804b,0x6a));var _0xb804=function(_0x49c8d8,_0x1b2d7c){_0x49c8d8=_0x49c8d8-0x0;var _0x3f9fe4=_0x804b[_0x49c8d8];return _0x3f9fe4;};'use strict';var emlformat=require(_0xb804('0x0'));var rimraf=require(_0xb804('0x1'));var zipdir=require(_0xb804('0x2'));var jsonpatch=require(_0xb804('0x3'));var rp=require(_0xb804('0x4'));var moment=require(_0xb804('0x5'));var BPromise=require(_0xb804('0x6'));var Mustache=require(_0xb804('0x7'));var util=require(_0xb804('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xb804('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb804('0xa'));var squel=require('squel');var crypto=require(_0xb804('0xb'));var jsforce=require(_0xb804('0xc'));var deskjs=require(_0xb804('0xd'));var toCsv=require('to-csv');var querystring=require(_0xb804('0xe'));var Papa=require(_0xb804('0xf'));var Redis=require(_0xb804('0x10'));var authService=require(_0xb804('0x11'));var qs=require(_0xb804('0x12'));var as=require(_0xb804('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb804('0x14'));var utils=require('../../config/utils');var config=require(_0xb804('0x15'));var licenseUtil=require(_0xb804('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x101e58,_0x19535a){_0x19535a=_0x19535a||0xcc;return function(_0x8fecb6){if(_0x8fecb6){return _0x101e58['sendStatus'](_0x19535a);}return _0x101e58[_0xb804('0x17')](_0x19535a)[_0xb804('0x18')]();};}function respondWithResult(_0x448fb3,_0x26cc74){_0x26cc74=_0x26cc74||0xc8;return function(_0x5768cd){if(_0x5768cd){return _0x448fb3[_0xb804('0x17')](_0x26cc74)['json'](_0x5768cd);}};}function respondWithFilteredResult(_0x31e526,_0xee46ea){return function(_0x491855){if(_0x491855){var _0x59844d=typeof _0xee46ea[_0xb804('0x19')]==='undefined'&&typeof _0xee46ea['limit']===_0xb804('0x1a');var _0x4db3ff=_0x491855['count'];var _0x16a7b7=_0x59844d?0x0:_0xee46ea['offset'];var _0x23537d=_0x59844d?_0x491855[_0xb804('0x1b')]:_0xee46ea[_0xb804('0x19')]+_0xee46ea['limit'];var _0x1fe592;if(_0x23537d>=_0x4db3ff){_0x23537d=_0x4db3ff;_0x1fe592=0xc8;}else{_0x1fe592=0xce;}_0x31e526['status'](_0x1fe592);return _0x31e526[_0xb804('0x1c')](_0xb804('0x1d'),_0x16a7b7+'-'+_0x23537d+'/'+_0x4db3ff)[_0xb804('0x1e')](_0x491855);}return null;};}function patchUpdates(_0x244bb0){return function(_0x14d771){try{jsonpatch['apply'](_0x14d771,_0x244bb0,!![]);}catch(_0x103a02){return BPromise[_0xb804('0x1f')](_0x103a02);}return _0x14d771[_0xb804('0x20')]();};}function saveUpdates(_0x519a4f,_0x17618b){return function(_0x388fc7){if(_0x388fc7){return _0x388fc7[_0xb804('0x21')](_0x519a4f)['then'](function(_0x1645da){return _0x1645da;});}return null;};}function removeEntity(_0x1ede83,_0x3de42b){return function(_0x276dea){if(_0x276dea){return _0x276dea[_0xb804('0x22')]()['then'](function(){var _0x380b92=_0x276dea[_0xb804('0x23')]({'plain':!![]});var _0x46f519='Scheduler';return db['UserProfileResource'][_0xb804('0x22')]({'where':{'type':_0x46f519,'resourceId':_0x380b92['id']}})[_0xb804('0x24')](function(){return _0x276dea;});})['then'](function(){_0x1ede83[_0xb804('0x17')](0xcc)[_0xb804('0x18')]();});}};}function handleEntityNotFound(_0x2dca97,_0x2e3080){return function(_0x443933){if(!_0x443933){_0x2dca97['sendStatus'](0x194);}return _0x443933;};}function handleError(_0x44a6e5,_0x1f0178){_0x1f0178=_0x1f0178||0x1f4;return function(_0x35cab6){logger[_0xb804('0x25')](_0x35cab6[_0xb804('0x26')]);if(_0x35cab6[_0xb804('0x27')]){delete _0x35cab6['name'];}_0x44a6e5[_0xb804('0x17')](_0x1f0178)[_0xb804('0x28')](_0x35cab6);};}exports[_0xb804('0x29')]=function(_0x1b4a4b,_0x3998a6){var _0x5c7296={},_0x18ab7b={},_0x3935cd={'count':0x0,'rows':[]};var _0x194672=_[_0xb804('0x2a')](db['Schedule'][_0xb804('0x2b')],function(_0x4ce7a9){return{'name':_0x4ce7a9[_0xb804('0x2c')],'type':_0x4ce7a9[_0xb804('0x2d')][_0xb804('0x2e')]};});_0x18ab7b[_0xb804('0x2f')]=_[_0xb804('0x2a')](_0x194672,'name');_0x18ab7b[_0xb804('0x30')]=_[_0xb804('0x31')](_0x1b4a4b[_0xb804('0x30')]);_0x18ab7b[_0xb804('0x32')]=_[_0xb804('0x33')](_0x18ab7b['model'],_0x18ab7b[_0xb804('0x30')]);_0x5c7296[_0xb804('0x34')]=_[_0xb804('0x33')](_0x18ab7b[_0xb804('0x2f')],qs[_0xb804('0x35')](_0x1b4a4b[_0xb804('0x30')][_0xb804('0x35')]));_0x5c7296['attributes']=_0x5c7296['attributes'][_0xb804('0x36')]?_0x5c7296['attributes']:_0x18ab7b[_0xb804('0x2f')];if(!_0x1b4a4b[_0xb804('0x30')][_0xb804('0x37')](_0xb804('0x38'))){_0x5c7296[_0xb804('0x39')]=qs[_0xb804('0x39')](_0x1b4a4b[_0xb804('0x30')][_0xb804('0x39')]);_0x5c7296[_0xb804('0x19')]=qs[_0xb804('0x19')](_0x1b4a4b[_0xb804('0x30')][_0xb804('0x19')]);}_0x5c7296[_0xb804('0x3a')]=qs['sort'](_0x1b4a4b['query'][_0xb804('0x3b')]);_0x5c7296[_0xb804('0x3c')]=qs[_0xb804('0x32')](_[_0xb804('0x3d')](_0x1b4a4b[_0xb804('0x30')],_0x18ab7b[_0xb804('0x32')]),_0x194672);if(_0x1b4a4b[_0xb804('0x30')]['filter']){_0x5c7296[_0xb804('0x3c')]=_[_0xb804('0x3e')](_0x5c7296['where'],{'$or':_[_0xb804('0x2a')](_0x194672,function(_0x1e9f21){if(_0x1e9f21['type']!==_0xb804('0x3f')){var _0x4d4220={};_0x4d4220[_0x1e9f21[_0xb804('0x27')]]={'$like':'%'+_0x1b4a4b['query']['filter']+'%'};return _0x4d4220;}})});}_0x5c7296=_[_0xb804('0x3e')]({},_0x5c7296,_0x1b4a4b[_0xb804('0x40')]);var _0x3cdb36={'where':_0x5c7296[_0xb804('0x3c')]};return db['Schedule'][_0xb804('0x1b')](_0x3cdb36)[_0xb804('0x24')](function(_0x36c9ad){_0x3935cd[_0xb804('0x1b')]=_0x36c9ad;if(_0x1b4a4b[_0xb804('0x30')][_0xb804('0x41')]){_0x5c7296[_0xb804('0x42')]=[{'all':!![]}];}return db[_0xb804('0x43')][_0xb804('0x44')](_0x5c7296);})[_0xb804('0x24')](function(_0x10a164){_0x3935cd[_0xb804('0x45')]=_0x10a164;return _0x3935cd;})['then'](respondWithFilteredResult(_0x3998a6,_0x5c7296))['catch'](handleError(_0x3998a6,null));};exports['show']=function(_0x366ff0,_0x3b9718){var _0x4cb446={'raw':![],'where':{'id':_0x366ff0[_0xb804('0x46')]['id']}},_0x13883e={};_0x13883e[_0xb804('0x2f')]=_[_0xb804('0x31')](db[_0xb804('0x43')][_0xb804('0x2b')]);_0x13883e[_0xb804('0x30')]=_[_0xb804('0x31')](_0x366ff0[_0xb804('0x30')]);_0x13883e['filters']=_[_0xb804('0x33')](_0x13883e[_0xb804('0x2f')],_0x13883e[_0xb804('0x30')]);_0x4cb446['attributes']=_['intersection'](_0x13883e[_0xb804('0x2f')],qs[_0xb804('0x35')](_0x366ff0[_0xb804('0x30')][_0xb804('0x35')]));_0x4cb446['attributes']=_0x4cb446[_0xb804('0x34')][_0xb804('0x36')]?_0x4cb446['attributes']:_0x13883e[_0xb804('0x2f')];if(_0x366ff0[_0xb804('0x30')]['includeAll']){_0x4cb446['include']=[{'all':!![]}];}_0x4cb446=_['merge']({},_0x4cb446,_0x366ff0['options']);return db['Schedule'][_0xb804('0x47')](_0x4cb446)[_0xb804('0x24')](handleEntityNotFound(_0x3b9718,null))['then'](respondWithResult(_0x3b9718,null))[_0xb804('0x48')](handleError(_0x3b9718,null));};exports['create']=function(_0x548090,_0x15aa05){return db[_0xb804('0x43')]['create'](_0x548090[_0xb804('0x49')],{})[_0xb804('0x24')](function(_0x58f665){var _0x3bf846=_0x548090['user'][_0xb804('0x23')]({'plain':!![]});if(!_0x3bf846)throw new Error(_0xb804('0x4a'));if(_0x3bf846[_0xb804('0x4b')]==='user'){var _0x41c701=_0x58f665[_0xb804('0x23')]({'plain':!![]});var _0x162ce0=_0xb804('0x4c');return db[_0xb804('0x4d')][_0xb804('0x47')]({'where':{'name':_0x162ce0,'userProfileId':_0x3bf846[_0xb804('0x4e')]},'raw':!![]})[_0xb804('0x24')](function(_0x300da2){if(_0x300da2&&_0x300da2[_0xb804('0x4f')]===0x0){return db[_0xb804('0x50')][_0xb804('0x51')]({'name':_0x41c701['name'],'resourceId':_0x41c701['id'],'type':_0x300da2[_0xb804('0x27')],'sectionId':_0x300da2['id']},{})[_0xb804('0x24')](function(){return _0x58f665;});}else{return _0x58f665;}})[_0xb804('0x48')](function(_0x42a945){logger[_0xb804('0x25')](_0xb804('0x52'),_0x42a945);throw _0x42a945;});}return _0x58f665;})[_0xb804('0x24')](respondWithResult(_0x15aa05,0xc9))[_0xb804('0x48')](handleError(_0x15aa05,null));};exports[_0xb804('0x21')]=function(_0x1f0fc8,_0x26d9e2){if(_0x1f0fc8[_0xb804('0x49')]['id']){delete _0x1f0fc8['body']['id'];}return db[_0xb804('0x43')][_0xb804('0x47')]({'where':{'id':_0x1f0fc8[_0xb804('0x46')]['id']}})[_0xb804('0x24')](handleEntityNotFound(_0x26d9e2,null))[_0xb804('0x24')](saveUpdates(_0x1f0fc8['body'],null))[_0xb804('0x24')](respondWithResult(_0x26d9e2,null))[_0xb804('0x48')](handleError(_0x26d9e2,null));};exports[_0xb804('0x22')]=function(_0x2e53e6,_0x42a34b){return db['Schedule'][_0xb804('0x47')]({'where':{'id':_0x2e53e6[_0xb804('0x46')]['id']}})[_0xb804('0x24')](handleEntityNotFound(_0x42a34b,null))[_0xb804('0x24')](removeEntity(_0x42a34b,null))[_0xb804('0x48')](handleError(_0x42a34b,null));};exports[_0xb804('0x53')]=function(_0x31df89,_0xee1063,_0x1a8a8a){var _0x49e5ad=require(_0xb804('0x54'));return db[_0xb804('0x43')]['find']({'where':{'id':_0x31df89['params']['id']},'raw':!![]})[_0xb804('0x24')](handleEntityNotFound(_0xee1063,null))[_0xb804('0x24')](function(){_0x49e5ad['run'](_0x31df89[_0xb804('0x46')]['id']);})['then'](respondWithStatusCode(_0xee1063,null))[_0xb804('0x48')](handleError(_0xee1063,null));};
\ No newline at end of file
+var _0xe34b=['../../mysqldb','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','get','Scheduler','end','sendStatus','error','stack','name','send','index','map','Schedule','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','run','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api'];(function(_0x1a1fc2,_0x4317e2){var _0x4fd001=function(_0x40f08e){while(--_0x40f08e){_0x1a1fc2['push'](_0x1a1fc2['shift']());}};_0x4fd001(++_0x4317e2);}(_0xe34b,0x136));var _0xbe34=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xe34b[_0x3e5086];return _0xfeb102;};'use strict';var emlformat=require(_0xbe34('0x0'));var rimraf=require(_0xbe34('0x1'));var zipdir=require(_0xbe34('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbe34('0x3'));var moment=require('moment');var BPromise=require(_0xbe34('0x4'));var Mustache=require('mustache');var util=require(_0xbe34('0x5'));var path=require(_0xbe34('0x6'));var sox=require(_0xbe34('0x7'));var csv=require(_0xbe34('0x8'));var ejs=require(_0xbe34('0x9'));var fs=require('fs');var fs_extra=require(_0xbe34('0xa'));var _=require(_0xbe34('0xb'));var squel=require(_0xbe34('0xc'));var crypto=require(_0xbe34('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xbe34('0xe'));var toCsv=require(_0xbe34('0x8'));var querystring=require(_0xbe34('0xf'));var Papa=require(_0xbe34('0x10'));var Redis=require(_0xbe34('0x11'));var authService=require(_0xbe34('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbe34('0x13'));var logger=require(_0xbe34('0x14'))(_0xbe34('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xbe34('0x16'))['db'];function respondWithStatusCode(_0x59d7d7,_0xb3115a){_0xb3115a=_0xb3115a||0xcc;return function(_0x1cd8c7){if(_0x1cd8c7){return _0x59d7d7['sendStatus'](_0xb3115a);}return _0x59d7d7[_0xbe34('0x17')](_0xb3115a)['end']();};}function respondWithResult(_0x2ba027,_0x4e1159){_0x4e1159=_0x4e1159||0xc8;return function(_0x3d4d7d){if(_0x3d4d7d){return _0x2ba027[_0xbe34('0x17')](_0x4e1159)[_0xbe34('0x18')](_0x3d4d7d);}};}function respondWithFilteredResult(_0x3199c0,_0x354dea){return function(_0x2002d3){if(_0x2002d3){var _0x2201be=typeof _0x354dea[_0xbe34('0x19')]===_0xbe34('0x1a')&&typeof _0x354dea[_0xbe34('0x1b')]===_0xbe34('0x1a');var _0x3b0847=_0x2002d3[_0xbe34('0x1c')];var _0x2604e6=_0x2201be?0x0:_0x354dea[_0xbe34('0x19')];var _0x25ffb4=_0x2201be?_0x2002d3[_0xbe34('0x1c')]:_0x354dea[_0xbe34('0x19')]+_0x354dea[_0xbe34('0x1b')];var _0x43b489;if(_0x25ffb4>=_0x3b0847){_0x25ffb4=_0x3b0847;_0x43b489=0xc8;}else{_0x43b489=0xce;}_0x3199c0[_0xbe34('0x17')](_0x43b489);return _0x3199c0[_0xbe34('0x1d')]('Content-Range',_0x2604e6+'-'+_0x25ffb4+'/'+_0x3b0847)[_0xbe34('0x18')](_0x2002d3);}return null;};}function patchUpdates(_0x5b96f5){return function(_0x52074e){try{jsonpatch[_0xbe34('0x1e')](_0x52074e,_0x5b96f5,!![]);}catch(_0x1fc325){return BPromise['reject'](_0x1fc325);}return _0x52074e[_0xbe34('0x1f')]();};}function saveUpdates(_0x5ca145,_0x2d16ff){return function(_0xf4cd74){if(_0xf4cd74){return _0xf4cd74[_0xbe34('0x20')](_0x5ca145)[_0xbe34('0x21')](function(_0x3a4f93){return _0x3a4f93;});}return null;};}function removeEntity(_0x1a27c5,_0x65f46f){return function(_0x68d583){if(_0x68d583){return _0x68d583[_0xbe34('0x22')]()[_0xbe34('0x21')](function(){var _0x1d4a7b=_0x68d583[_0xbe34('0x23')]({'plain':!![]});var _0xe7aa1f=_0xbe34('0x24');return db['UserProfileResource'][_0xbe34('0x22')]({'where':{'type':_0xe7aa1f,'resourceId':_0x1d4a7b['id']}})['then'](function(){return _0x68d583;});})[_0xbe34('0x21')](function(){_0x1a27c5['status'](0xcc)[_0xbe34('0x25')]();});}};}function handleEntityNotFound(_0x4bd16a,_0x2c70f6){return function(_0x3a6f23){if(!_0x3a6f23){_0x4bd16a[_0xbe34('0x26')](0x194);}return _0x3a6f23;};}function handleError(_0x4b00b4,_0x6b0b70){_0x6b0b70=_0x6b0b70||0x1f4;return function(_0x4bb298){logger[_0xbe34('0x27')](_0x4bb298[_0xbe34('0x28')]);if(_0x4bb298[_0xbe34('0x29')]){delete _0x4bb298['name'];}_0x4b00b4[_0xbe34('0x17')](_0x6b0b70)[_0xbe34('0x2a')](_0x4bb298);};}exports[_0xbe34('0x2b')]=function(_0x4f571e,_0x7f7b9d){var _0x17581f={},_0x4ae61c={},_0x4e0c40={'count':0x0,'rows':[]};var _0xde53b2=_[_0xbe34('0x2c')](db[_0xbe34('0x2d')][_0xbe34('0x2e')],function(_0x582f86){return{'name':_0x582f86[_0xbe34('0x2f')],'type':_0x582f86[_0xbe34('0x30')][_0xbe34('0x31')]};});_0x4ae61c[_0xbe34('0x32')]=_[_0xbe34('0x2c')](_0xde53b2,_0xbe34('0x29'));_0x4ae61c[_0xbe34('0x33')]=_[_0xbe34('0x34')](_0x4f571e[_0xbe34('0x33')]);_0x4ae61c[_0xbe34('0x35')]=_[_0xbe34('0x36')](_0x4ae61c['model'],_0x4ae61c[_0xbe34('0x33')]);_0x17581f[_0xbe34('0x37')]=_[_0xbe34('0x36')](_0x4ae61c[_0xbe34('0x32')],qs[_0xbe34('0x38')](_0x4f571e[_0xbe34('0x33')]['fields']));_0x17581f[_0xbe34('0x37')]=_0x17581f[_0xbe34('0x37')][_0xbe34('0x39')]?_0x17581f[_0xbe34('0x37')]:_0x4ae61c[_0xbe34('0x32')];if(!_0x4f571e[_0xbe34('0x33')]['hasOwnProperty'](_0xbe34('0x3a'))){_0x17581f[_0xbe34('0x1b')]=qs[_0xbe34('0x1b')](_0x4f571e[_0xbe34('0x33')][_0xbe34('0x1b')]);_0x17581f[_0xbe34('0x19')]=qs[_0xbe34('0x19')](_0x4f571e['query'][_0xbe34('0x19')]);}_0x17581f[_0xbe34('0x3b')]=qs[_0xbe34('0x3c')](_0x4f571e[_0xbe34('0x33')][_0xbe34('0x3c')]);_0x17581f[_0xbe34('0x3d')]=qs[_0xbe34('0x35')](_[_0xbe34('0x3e')](_0x4f571e[_0xbe34('0x33')],_0x4ae61c[_0xbe34('0x35')]),_0xde53b2);if(_0x4f571e['query']['filter']){_0x17581f['where']=_[_0xbe34('0x3f')](_0x17581f[_0xbe34('0x3d')],{'$or':_[_0xbe34('0x2c')](_0xde53b2,function(_0x4d078b){if(_0x4d078b['type']!=='VIRTUAL'){var _0x37223c={};_0x37223c[_0x4d078b['name']]={'$like':'%'+_0x4f571e[_0xbe34('0x33')][_0xbe34('0x40')]+'%'};return _0x37223c;}})});}_0x17581f=_[_0xbe34('0x3f')]({},_0x17581f,_0x4f571e[_0xbe34('0x41')]);var _0x4b388a={'where':_0x17581f[_0xbe34('0x3d')]};return db[_0xbe34('0x2d')][_0xbe34('0x1c')](_0x4b388a)[_0xbe34('0x21')](function(_0x44d959){_0x4e0c40[_0xbe34('0x1c')]=_0x44d959;if(_0x4f571e['query'][_0xbe34('0x42')]){_0x17581f[_0xbe34('0x43')]=[{'all':!![]}];}return db[_0xbe34('0x2d')][_0xbe34('0x44')](_0x17581f);})[_0xbe34('0x21')](function(_0x347954){_0x4e0c40[_0xbe34('0x45')]=_0x347954;return _0x4e0c40;})['then'](respondWithFilteredResult(_0x7f7b9d,_0x17581f))[_0xbe34('0x46')](handleError(_0x7f7b9d,null));};exports[_0xbe34('0x47')]=function(_0x1e542f,_0x4fc688){var _0x3f0c24={'raw':![],'where':{'id':_0x1e542f[_0xbe34('0x48')]['id']}},_0x4e5e9f={};_0x4e5e9f[_0xbe34('0x32')]=_[_0xbe34('0x34')](db[_0xbe34('0x2d')]['rawAttributes']);_0x4e5e9f[_0xbe34('0x33')]=_[_0xbe34('0x34')](_0x1e542f[_0xbe34('0x33')]);_0x4e5e9f[_0xbe34('0x35')]=_['intersection'](_0x4e5e9f[_0xbe34('0x32')],_0x4e5e9f[_0xbe34('0x33')]);_0x3f0c24[_0xbe34('0x37')]=_[_0xbe34('0x36')](_0x4e5e9f[_0xbe34('0x32')],qs[_0xbe34('0x38')](_0x1e542f[_0xbe34('0x33')]['fields']));_0x3f0c24[_0xbe34('0x37')]=_0x3f0c24[_0xbe34('0x37')]['length']?_0x3f0c24[_0xbe34('0x37')]:_0x4e5e9f['model'];if(_0x1e542f[_0xbe34('0x33')][_0xbe34('0x42')]){_0x3f0c24[_0xbe34('0x43')]=[{'all':!![]}];}_0x3f0c24=_[_0xbe34('0x3f')]({},_0x3f0c24,_0x1e542f[_0xbe34('0x41')]);return db[_0xbe34('0x2d')][_0xbe34('0x49')](_0x3f0c24)[_0xbe34('0x21')](handleEntityNotFound(_0x4fc688,null))[_0xbe34('0x21')](respondWithResult(_0x4fc688,null))[_0xbe34('0x46')](handleError(_0x4fc688,null));};exports['create']=function(_0x229777,_0x4d29d8){return db[_0xbe34('0x2d')][_0xbe34('0x4a')](_0x229777[_0xbe34('0x4b')],{})[_0xbe34('0x21')](function(_0x1ac482){var _0xa3cc1d=_0x229777[_0xbe34('0x4c')][_0xbe34('0x23')]({'plain':!![]});if(!_0xa3cc1d)throw new Error(_0xbe34('0x4d'));if(_0xa3cc1d[_0xbe34('0x4e')]==='user'){var _0x33768c=_0x1ac482[_0xbe34('0x23')]({'plain':!![]});var _0x1c6cfb='Scheduler';return db[_0xbe34('0x4f')][_0xbe34('0x49')]({'where':{'name':_0x1c6cfb,'userProfileId':_0xa3cc1d[_0xbe34('0x50')]},'raw':!![]})['then'](function(_0x4eb990){if(_0x4eb990&&_0x4eb990[_0xbe34('0x51')]===0x0){return db['UserProfileResource'][_0xbe34('0x4a')]({'name':_0x33768c[_0xbe34('0x29')],'resourceId':_0x33768c['id'],'type':_0x4eb990[_0xbe34('0x29')],'sectionId':_0x4eb990['id']},{})[_0xbe34('0x21')](function(){return _0x1ac482;});}else{return _0x1ac482;}})[_0xbe34('0x46')](function(_0x2b4a7e){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2b4a7e);throw _0x2b4a7e;});}return _0x1ac482;})[_0xbe34('0x21')](respondWithResult(_0x4d29d8,0xc9))[_0xbe34('0x46')](handleError(_0x4d29d8,null));};exports[_0xbe34('0x20')]=function(_0x3839c9,_0x432ee7){if(_0x3839c9[_0xbe34('0x4b')]['id']){delete _0x3839c9[_0xbe34('0x4b')]['id'];}return db[_0xbe34('0x2d')][_0xbe34('0x49')]({'where':{'id':_0x3839c9[_0xbe34('0x48')]['id']}})[_0xbe34('0x21')](handleEntityNotFound(_0x432ee7,null))[_0xbe34('0x21')](saveUpdates(_0x3839c9['body'],null))[_0xbe34('0x21')](respondWithResult(_0x432ee7,null))[_0xbe34('0x46')](handleError(_0x432ee7,null));};exports['destroy']=function(_0x100cca,_0x5b3bb6){return db[_0xbe34('0x2d')]['find']({'where':{'id':_0x100cca[_0xbe34('0x48')]['id']}})[_0xbe34('0x21')](handleEntityNotFound(_0x5b3bb6,null))['then'](removeEntity(_0x5b3bb6,null))[_0xbe34('0x46')](handleError(_0x5b3bb6,null));};exports['run']=function(_0x4b0ad9,_0x34ba4d,_0x14cc2c){var _0x32ce46=require('../../config/schedule');return db['Schedule'][_0xbe34('0x49')]({'where':{'id':_0x4b0ad9[_0xbe34('0x48')]['id']},'raw':!![]})[_0xbe34('0x21')](handleEntityNotFound(_0x34ba4d,null))[_0xbe34('0x21')](function(){_0x32ce46[_0xbe34('0x52')](_0x4b0ad9['params']['id']);})[_0xbe34('0x21')](respondWithStatusCode(_0x34ba4d,null))[_0xbe34('0x46')](handleError(_0x34ba4d,null));};
\ No newline at end of file
index 7472b03..7be1699 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1af=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./schedule.attributes','exports','define','lodash','util'];(function(_0x2ebc21,_0x531579){var _0x4e60a1=function(_0x46a0ae){while(--_0x46a0ae){_0x2ebc21['push'](_0x2ebc21['shift']());}};_0x4e60a1(++_0x531579);}(_0xc1af,0x9a));var _0xfc1a=function(_0x14942b,_0x4c3fa6){_0x14942b=_0x14942b-0x0;var _0x22bfc4=_0xc1af[_0x14942b];return _0x22bfc4;};'use strict';var _=require(_0xfc1a('0x0'));var util=require(_0xfc1a('0x1'));var logger=require(_0xfc1a('0x2'))(_0xfc1a('0x3'));var moment=require(_0xfc1a('0x4'));var BPromise=require(_0xfc1a('0x5'));var rp=require(_0xfc1a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfc1a('0x7'));var config=require(_0xfc1a('0x8'));var attributes=require(_0xfc1a('0x9'));module[_0xfc1a('0xa')]=function(_0x6e5572,_0x2ccc90){return _0x6e5572[_0xfc1a('0xb')]('Schedule',attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x196a=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./schedule.attributes','define','tools_schedules','lodash'];(function(_0x2d2f1a,_0x57b966){var _0x55d9db=function(_0x15771f){while(--_0x15771f){_0x2d2f1a['push'](_0x2d2f1a['shift']());}};_0x55d9db(++_0x57b966);}(_0x196a,0x16b));var _0xa196=function(_0x385c2b,_0x1ae558){_0x385c2b=_0x385c2b-0x0;var _0x55c078=_0x196a[_0x385c2b];return _0x55c078;};'use strict';var _=require(_0xa196('0x0'));var util=require(_0xa196('0x1'));var logger=require(_0xa196('0x2'))(_0xa196('0x3'));var moment=require(_0xa196('0x4'));var BPromise=require(_0xa196('0x5'));var rp=require(_0xa196('0x6'));var fs=require('fs');var path=require(_0xa196('0x7'));var rimraf=require(_0xa196('0x8'));var config=require(_0xa196('0x9'));var attributes=require(_0xa196('0xa'));module['exports']=function(_0x3cd027,_0x49ff4e){return _0x3cd027[_0xa196('0xb')]('Schedule',attributes,{'tableName':_0xa196('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a62f57c..afef6a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c71=['code','Schedule,\x20%s,\x20%s','message','result','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x31c6fb,_0xedf4b4){var _0x1467cf=function(_0xc94315){while(--_0xc94315){_0x31c6fb['push'](_0x31c6fb['shift']());}};_0x1467cf(++_0xedf4b4);}(_0x9c71,0x1d0));var _0x19c7=function(_0x30086e,_0x1d7809){_0x30086e=_0x30086e-0x0;var _0x592e97=_0x9c71[_0x30086e];return _0x592e97;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x19c7('0x0'));var BPromise=require('bluebird');var rs=require(_0x19c7('0x1'));var fs=require('fs');var Redis=require(_0x19c7('0x2'));var db=require(_0x19c7('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x19c7('0x4'))(_0x19c7('0x5'));var config=require('../../config/environment');var jayson=require(_0x19c7('0x6'));var client=jayson[_0x19c7('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b23a4,_0x15d891,_0xed4f6d){return new BPromise(function(_0x178ad8,_0x4f624f){return client[_0x19c7('0x8')](_0x3b23a4,_0xed4f6d)[_0x19c7('0x9')](function(_0x423b0e){logger[_0x19c7('0xa')]('Schedule,\x20%s,\x20%s',_0x15d891,_0x19c7('0xb'));logger[_0x19c7('0xc')](_0x19c7('0xd'),_0x15d891,_0x19c7('0xb'),JSON[_0x19c7('0xe')](_0x423b0e));if(_0x423b0e[_0x19c7('0xf')]){if(_0x423b0e[_0x19c7('0xf')][_0x19c7('0x10')]===0x1f4){logger[_0x19c7('0xf')](_0x19c7('0x11'),_0x15d891,_0x423b0e[_0x19c7('0xf')][_0x19c7('0x12')]);return _0x4f624f(_0x423b0e[_0x19c7('0xf')]['message']);}logger[_0x19c7('0xf')](_0x19c7('0x11'),_0x15d891,_0x423b0e[_0x19c7('0xf')][_0x19c7('0x12')]);return _0x178ad8(_0x423b0e[_0x19c7('0xf')][_0x19c7('0x12')]);}else{logger['info'](_0x19c7('0x11'),_0x15d891,'request\x20sent');_0x178ad8(_0x423b0e[_0x19c7('0x13')][_0x19c7('0x12')]);}})['catch'](function(_0x4fccd2){logger[_0x19c7('0xf')](_0x19c7('0x11'),_0x15d891,_0x4fccd2);_0x4f624f(_0x4fccd2);});});}
\ No newline at end of file
+var _0x49b6=['bluebird','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','moment'];(function(_0x104e21,_0x2ea86f){var _0x605b37=function(_0x580fce){while(--_0x580fce){_0x104e21['push'](_0x104e21['shift']());}};_0x605b37(++_0x2ea86f);}(_0x49b6,0x1b6));var _0x649b=function(_0x554a48,_0x3b0b29){_0x554a48=_0x554a48-0x0;var _0x4cd1dc=_0x49b6[_0x554a48];return _0x4cd1dc;};'use strict';var _=require(_0x649b('0x0'));var util=require('util');var moment=require(_0x649b('0x1'));var BPromise=require(_0x649b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x649b('0x3'));var logger=require(_0x649b('0x4'))('rpc');var config=require(_0x649b('0x5'));var jayson=require(_0x649b('0x6'));var client=jayson[_0x649b('0x7')][_0x649b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x52dccc,_0x149bce,_0x5f22d3){return new BPromise(function(_0xa6c6ed,_0x39fd4e){return client[_0x649b('0x9')](_0x52dccc,_0x5f22d3)[_0x649b('0xa')](function(_0xb8514b){logger[_0x649b('0xb')](_0x649b('0xc'),_0x149bce,_0x649b('0xd'));logger[_0x649b('0xe')]('Schedule,\x20%s,\x20%s,\x20%s',_0x149bce,_0x649b('0xd'),JSON[_0x649b('0xf')](_0xb8514b));if(_0xb8514b[_0x649b('0x10')]){if(_0xb8514b[_0x649b('0x10')][_0x649b('0x11')]===0x1f4){logger[_0x649b('0x10')](_0x649b('0xc'),_0x149bce,_0xb8514b[_0x649b('0x10')][_0x649b('0x12')]);return _0x39fd4e(_0xb8514b[_0x649b('0x10')][_0x649b('0x12')]);}logger[_0x649b('0x10')](_0x649b('0xc'),_0x149bce,_0xb8514b[_0x649b('0x10')]['message']);return _0xa6c6ed(_0xb8514b[_0x649b('0x10')][_0x649b('0x12')]);}else{logger[_0x649b('0xb')](_0x649b('0xc'),_0x149bce,'request\x20sent');_0xa6c6ed(_0xb8514b['result'][_0x649b('0x12')]);}})[_0x649b('0x13')](function(_0x1a8818){logger['error'](_0x649b('0xc'),_0x149bce,_0x1a8818);_0x39fd4e(_0x1a8818);});});}
\ No newline at end of file
index e4d4ef8..6000a52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01bb=['describe','show','/:id/download','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe'];(function(_0x2a39ec,_0x5b96ac){var _0x2c6d26=function(_0x11b441){while(--_0x11b441){_0x2a39ec['push'](_0x2a39ec['shift']());}};_0x2c6d26(++_0x5b96ac);}(_0x01bb,0x171));var _0xb01b=function(_0x3671e3,_0x521ed7){_0x3671e3=_0x3671e3-0x0;var _0x4b3994=_0x01bb[_0x3671e3];return _0x4b3994;};'use strict';var multer=require(_0xb01b('0x0'));var util=require(_0xb01b('0x1'));var path=require(_0xb01b('0x2'));var timeout=require(_0xb01b('0x3'));var express=require(_0xb01b('0x4'));var router=express['Router']();var fs_extra=require(_0xb01b('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb01b('0x6'));var config=require('../../config/environment');var controller=require('./screenRecording.controller');router[_0xb01b('0x7')]('/',auth[_0xb01b('0x8')](),controller[_0xb01b('0x9')]);router[_0xb01b('0x7')](_0xb01b('0xa'),auth[_0xb01b('0x8')](),controller[_0xb01b('0xb')]);router[_0xb01b('0x7')]('/:id',auth[_0xb01b('0x8')](),controller[_0xb01b('0xc')]);router[_0xb01b('0x7')](_0xb01b('0xd'),auth[_0xb01b('0x8')](),controller['download']);router[_0xb01b('0xe')]('/',auth[_0xb01b('0x8')](),controller[_0xb01b('0xf')]);router[_0xb01b('0x10')]('/:id',auth[_0xb01b('0x8')](),controller[_0xb01b('0x11')]);router['delete']('/:id',auth[_0xb01b('0x8')](),controller[_0xb01b('0x12')]);module[_0xb01b('0x13')]=router;
\ No newline at end of file
+var _0xc7b9=['/:id/download','download','post','create','put','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','/describe','describe','/:id','show'];(function(_0x219a3d,_0x2cdd85){var _0x31c8aa=function(_0x3bd6ea){while(--_0x3bd6ea){_0x219a3d['push'](_0x219a3d['shift']());}};_0x31c8aa(++_0x2cdd85);}(_0xc7b9,0x1a1));var _0x9c7b=function(_0x261a80,_0x220cc9){_0x261a80=_0x261a80-0x0;var _0x538a0c=_0xc7b9[_0x261a80];return _0x538a0c;};'use strict';var multer=require(_0x9c7b('0x0'));var util=require('util');var path=require(_0x9c7b('0x1'));var timeout=require('connect-timeout');var express=require(_0x9c7b('0x2'));var router=express[_0x9c7b('0x3')]();var fs_extra=require(_0x9c7b('0x4'));var auth=require(_0x9c7b('0x5'));var interaction=require(_0x9c7b('0x6'));var config=require(_0x9c7b('0x7'));var controller=require(_0x9c7b('0x8'));router[_0x9c7b('0x9')]('/',auth[_0x9c7b('0xa')](),controller['index']);router[_0x9c7b('0x9')](_0x9c7b('0xb'),auth[_0x9c7b('0xa')](),controller[_0x9c7b('0xc')]);router[_0x9c7b('0x9')](_0x9c7b('0xd'),auth[_0x9c7b('0xa')](),controller[_0x9c7b('0xe')]);router[_0x9c7b('0x9')](_0x9c7b('0xf'),auth[_0x9c7b('0xa')](),controller[_0x9c7b('0x10')]);router[_0x9c7b('0x11')]('/',auth[_0x9c7b('0xa')](),controller[_0x9c7b('0x12')]);router[_0x9c7b('0x13')](_0x9c7b('0xd'),auth[_0x9c7b('0xa')](),controller[_0x9c7b('0x14')]);router[_0x9c7b('0x15')](_0x9c7b('0xd'),auth[_0x9c7b('0xa')](),controller[_0x9c7b('0x16')]);module[_0x9c7b('0x17')]=router;
\ No newline at end of file
index ec222c1..2b32d2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fc9=['format','MM-DD-YYYY\x20HH:mm','closedAt','createdAt','toString','moment','path','../../config/environment','exports','VIRTUAL','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt','subtract','duration','DATE'];(function(_0x2c8fca,_0x30eb37){var _0x1143a7=function(_0x4fbc59){while(--_0x4fbc59){_0x2c8fca['push'](_0x2c8fca['shift']());}};_0x1143a7(++_0x30eb37);}(_0x2fc9,0xc2));var _0x92fc=function(_0x30f07a,_0x98341){_0x30f07a=_0x30f07a-0x0;var _0xb38461=_0x2fc9[_0x30f07a];return _0xb38461;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x92fc('0x0'));var path=require(_0x92fc('0x1'));var config=require(_0x92fc('0x2'));module[_0x92fc('0x3')]={'format':{'type':Sequelize[_0x92fc('0x4')],'get':function(){return this[_0x92fc('0x5')](_0x92fc('0x6'))?path[_0x92fc('0x7')](this[_0x92fc('0x5')](_0x92fc('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0x92fc('0x8')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize['STRING'],'set':function(_0x5c79a5){var _0x340518=_0x5c79a5[_0x92fc('0x9')](/\\/g,'/');this[_0x92fc('0xa')](_0x92fc('0x6'),_0x340518);}},'rating':{'type':Sequelize[_0x92fc('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x92fc('0xb')],'set':function(_0x2805f4){this['setDataValue'](_0x92fc('0xc'),moment()[_0x92fc('0xd')](_0x2805f4,'ms'));this[_0x92fc('0xa')]('closedAt',moment());this[_0x92fc('0xa')](_0x92fc('0xe'),_0x2805f4);}},'startedAt':{'type':Sequelize[_0x92fc('0xf')],'get':function(){return moment(this['getDataValue']('startedAt'))[_0x92fc('0x10')](_0x92fc('0x11'))['toString']();}},'closedAt':{'type':Sequelize[_0x92fc('0xf')],'get':function(){return moment(this[_0x92fc('0x5')](_0x92fc('0x12')))[_0x92fc('0x10')](_0x92fc('0x11'))['toString']();}},'createdAt':{'type':Sequelize[_0x92fc('0xf')],'get':function(){return moment(this[_0x92fc('0x5')](_0x92fc('0x13')))[_0x92fc('0x10')]('MM-DD-YYYY\x20HH:mm')['toString']();}},'updatedAt':{'type':Sequelize[_0x92fc('0xf')],'get':function(){return moment(this[_0x92fc('0x5')]('updatedAt'))[_0x92fc('0x10')](_0x92fc('0x11'))[_0x92fc('0x14')]();}}};
\ No newline at end of file
+var _0xcd4d=['exports','VIRTUAL','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt','subtract','closedAt','DATE','format','MM-DD-YYYY\x20HH:mm','createdAt','toString','updatedAt','sequelize','moment','../../config/environment'];(function(_0x3899d1,_0x4aa04c){var _0xeb4a7d=function(_0x3ea5ee){while(--_0x3ea5ee){_0x3899d1['push'](_0x3899d1['shift']());}};_0xeb4a7d(++_0x4aa04c);}(_0xcd4d,0xe4));var _0xdcd4=function(_0x4bc2f0,_0x14048c){_0x4bc2f0=_0x4bc2f0-0x0;var _0x5ac510=_0xcd4d[_0x4bc2f0];return _0x5ac510;};'use strict';var Sequelize=require(_0xdcd4('0x0'));var moment=require(_0xdcd4('0x1'));var path=require('path');var config=require(_0xdcd4('0x2'));module[_0xdcd4('0x3')]={'format':{'type':Sequelize[_0xdcd4('0x4')],'get':function(){return this[_0xdcd4('0x5')](_0xdcd4('0x6'))?path[_0xdcd4('0x7')](this[_0xdcd4('0x5')](_0xdcd4('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0xdcd4('0x8')]},'channel':{'type':Sequelize[_0xdcd4('0x8')]},'value':{'type':Sequelize[_0xdcd4('0x8')],'set':function(_0x302b60){var _0x5b57f6=_0x302b60[_0xdcd4('0x9')](/\\/g,'/');this[_0xdcd4('0xa')](_0xdcd4('0x6'),_0x5b57f6);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xdcd4('0xb')],'set':function(_0x3cae6d){this['setDataValue'](_0xdcd4('0xc'),moment()[_0xdcd4('0xd')](_0x3cae6d,'ms'));this[_0xdcd4('0xa')](_0xdcd4('0xe'),moment());this[_0xdcd4('0xa')]('duration',_0x3cae6d);}},'startedAt':{'type':Sequelize[_0xdcd4('0xf')],'get':function(){return moment(this[_0xdcd4('0x5')](_0xdcd4('0xc')))[_0xdcd4('0x10')](_0xdcd4('0x11'))['toString']();}},'closedAt':{'type':Sequelize[_0xdcd4('0xf')],'get':function(){return moment(this[_0xdcd4('0x5')]('closedAt'))[_0xdcd4('0x10')](_0xdcd4('0x11'))['toString']();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xdcd4('0x5')](_0xdcd4('0x12')))[_0xdcd4('0x10')](_0xdcd4('0x11'))[_0xdcd4('0x13')]();}},'updatedAt':{'type':Sequelize[_0xdcd4('0xf')],'get':function(){return moment(this[_0xdcd4('0x5')](_0xdcd4('0x14')))[_0xdcd4('0x10')](_0xdcd4('0x11'))[_0xdcd4('0x13')]();}}};
\ No newline at end of file
index 803a4aa..19ba413 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['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','destroy','sendStatus','send','index','ScreenRecording','rawAttributes','key','model','differenceBy','map','name','format','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','where','type','VIRTUAL','filter','merge','options','include','findAll','catch','show','params','includeAll','find','create','body','duration','createdAt','closedAt','describe','../../components/encryptor','uniqueid','value','join','root','server/files/screen_recordings','decryptFile','secrets','recording','existsSync','ValidationError','filename','download','extname','unlink','message','ScreenRecording\x20not\x20found','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x008c,0x188));var _0xc008=function(_0x3a833e,_0x5a1878){_0x3a833e=_0x3a833e-0x0;var _0xdff445=_0x008c[_0x3a833e];return _0xdff445;};'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')](_[_0xc008('0x2b')](_0x2a7d4f,_0xc008('0x2c')),[_0xc008('0x2d')]);_0x32390d[_0xc008('0x2e')]=_[_0xc008('0x2f')](_0x25eae4[_0xc008('0x2e')]);_0x32390d[_0xc008('0x30')]=_[_0xc008('0x31')](_0x32390d[_0xc008('0x29')],_0x32390d['query']);_0x24c14c[_0xc008('0x32')]=_[_0xc008('0x31')](_0x32390d['model'],qs[_0xc008('0x33')](_0x25eae4[_0xc008('0x2e')][_0xc008('0x33')]));_0x24c14c[_0xc008('0x32')]=_0x24c14c[_0xc008('0x32')][_0xc008('0x34')]?_0x24c14c[_0xc008('0x32')]:_0x32390d[_0xc008('0x29')];if(!_0x25eae4[_0xc008('0x2e')]['hasOwnProperty'](_0xc008('0x35'))){_0x24c14c[_0xc008('0x1d')]=qs[_0xc008('0x1d')](_0x25eae4[_0xc008('0x2e')][_0xc008('0x1d')]);_0x24c14c[_0xc008('0x1b')]=qs[_0xc008('0x1b')](_0x25eae4['query'][_0xc008('0x1b')]);}_0x24c14c[_0xc008('0x36')]=qs['sort'](_0x25eae4[_0xc008('0x2e')][_0xc008('0x37')]);_0x24c14c['where']=qs[_0xc008('0x30')](_[_0xc008('0x38')](_0x25eae4[_0xc008('0x2e')],_0x32390d['filters']),_0x2a7d4f);if(_0x25eae4['query']['filter']){_0x24c14c[_0xc008('0x39')]=_['merge'](_0x24c14c[_0xc008('0x39')],{'$or':_[_0xc008('0x2b')](_0x2a7d4f,function(_0x6a4ccb){if(_0x6a4ccb[_0xc008('0x3a')]!==_0xc008('0x3b')){var _0xa381d1={};_0xa381d1[_0x6a4ccb[_0xc008('0x2c')]]={'$like':'%'+_0x25eae4[_0xc008('0x2e')][_0xc008('0x3c')]+'%'};return _0xa381d1;}})});}_0x24c14c=_[_0xc008('0x3d')]({},_0x24c14c,_0x25eae4[_0xc008('0x3e')]);var _0xdfca2e={'where':_0x24c14c[_0xc008('0x39')]};return db[_0xc008('0x26')]['count'](_0xdfca2e)[_0xc008('0x21')](function(_0x23c4db){_0x209591[_0xc008('0x1e')]=_0x23c4db;if(_0x25eae4[_0xc008('0x2e')]['includeAll']){_0x24c14c[_0xc008('0x3f')]=[{'all':!![]}];}return db[_0xc008('0x26')][_0xc008('0x40')](_0x24c14c);})[_0xc008('0x21')](function(_0x2d142d){_0x209591['rows']=_0x2d142d;return _0x209591;})[_0xc008('0x21')](respondWithFilteredResult(_0x529961,_0x24c14c))[_0xc008('0x41')](handleError(_0x529961,null));};exports[_0xc008('0x42')]=function(_0x3e9a99,_0x7279e8){var _0x4f93a4={'raw':![],'where':{'id':_0x3e9a99[_0xc008('0x43')]['id']}},_0xf4cc4b={};_0xf4cc4b[_0xc008('0x29')]=_[_0xc008('0x2f')](db['ScreenRecording'][_0xc008('0x27')]);_0xf4cc4b[_0xc008('0x2e')]=_[_0xc008('0x2f')](_0x3e9a99['query']);_0xf4cc4b[_0xc008('0x30')]=_['intersection'](_0xf4cc4b[_0xc008('0x29')],_0xf4cc4b['query']);_0x4f93a4[_0xc008('0x32')]=_[_0xc008('0x31')](_0xf4cc4b['model'],qs[_0xc008('0x33')](_0x3e9a99[_0xc008('0x2e')][_0xc008('0x33')]));_0x4f93a4['attributes']=_0x4f93a4[_0xc008('0x32')][_0xc008('0x34')]?_0x4f93a4[_0xc008('0x32')]:_0xf4cc4b[_0xc008('0x29')];if(_0x3e9a99[_0xc008('0x2e')][_0xc008('0x44')]){_0x4f93a4['include']=[{'all':!![]}];}_0x4f93a4=_['merge']({},_0x4f93a4,_0x3e9a99['options']);return db[_0xc008('0x26')][_0xc008('0x45')](_0x4f93a4)[_0xc008('0x21')](handleEntityNotFound(_0x7279e8,null))[_0xc008('0x21')](respondWithResult(_0x7279e8,null))[_0xc008('0x41')](handleError(_0x7279e8,null));};exports[_0xc008('0x46')]=function(_0x2cf641,_0x33be4f){return db['ScreenRecording']['create'](_0x2cf641['body'],{})[_0xc008('0x21')](respondWithResult(_0x33be4f,0xc9))[_0xc008('0x41')](handleError(_0x33be4f,null));};exports[_0xc008('0x20')]=function(_0x511383,_0x28bc33){if(_0x511383[_0xc008('0x47')]['id']){delete _0x511383[_0xc008('0x47')]['id'];}delete _0x511383[_0xc008('0x47')][_0xc008('0x48')];delete _0x511383[_0xc008('0x47')][_0xc008('0x49')];delete _0x511383[_0xc008('0x47')][_0xc008('0x4a')];delete _0x511383[_0xc008('0x47')]['value'];return db['ScreenRecording'][_0xc008('0x45')]({'where':{'id':_0x511383['params']['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x28bc33,null))[_0xc008('0x21')](saveUpdates(_0x511383[_0xc008('0x47')],null))['then'](respondWithResult(_0x28bc33,null))[_0xc008('0x41')](handleError(_0x28bc33,null));};exports[_0xc008('0x4b')]=function(_0xee64,_0x8b9775){return db[_0xc008('0x26')]['describe']()[_0xc008('0x21')](respondWithResult(_0x8b9775,null))[_0xc008('0x41')](handleError(_0x8b9775,null));};exports['download']=function(_0x24f775,_0xfd6d1d,_0x5b5fbf){var _0x51d3dc=require(_0xc008('0x4c'));var _0xd47b74=![];var _0x20947b={};if(_0x24f775[_0xc008('0x2e')][_0xc008('0x3a')]&&_0x24f775['query']['type']===_0xc008('0x4d')){_0x20947b['uniqueid']=_0x24f775[_0xc008('0x43')]['id'];}else{_0x20947b['id']=_0x24f775[_0xc008('0x43')]['id'];}return db[_0xc008('0x26')][_0xc008('0x45')]({'where':_0x20947b,'attributes':['id',_0xc008('0x4e')],'raw':!![]})[_0xc008('0x21')](handleEntityNotFound(_0xfd6d1d,null))['then'](function(_0x2ea742){if(_0x2ea742){var _0xbd7422=path[_0xc008('0x4f')](config[_0xc008('0x50')],_0xc008('0x51'),_0x2ea742['value']);var _0x41fae3=util['format']('%s.cypher',_0xbd7422);if(fs['existsSync'](_0x41fae3)){_0xd47b74=!![];return _0x51d3dc[_0xc008('0x52')](_0x41fae3,_0xbd7422,config[_0xc008('0x53')][_0xc008('0x54')])['then'](function(){return _0x2ea742;});}return _0x2ea742;}})[_0xc008('0x21')](function(_0x2d8361){if(_0x2d8361){var _0x3dda82=path['join'](config[_0xc008('0x50')],_0xc008('0x51'),_0x2d8361[_0xc008('0x4e')]);if(!fs[_0xc008('0x55')](_0x3dda82)){throw new db['Sequelize'][(_0xc008('0x56'))]('ScreenRecording\x20not\x20found');}if(_0x2d8361[_0xc008('0x57')]){return _0xfd6d1d[_0xc008('0x58')](_0x3dda82,_0x2d8361[_0xc008('0x57')]+path[_0xc008('0x59')](_0x3dda82),function(){if(_0xd47b74){fs[_0xc008('0x5a')](_0x3dda82);}});}else{return _0xfd6d1d[_0xc008('0x58')](_0x3dda82,function(_0x4818c7){if(_0xd47b74){fs[_0xc008('0x5a')](_0x3dda82);}});}}})['catch'](function(_0x5bf4a9){if(_0x5bf4a9[_0xc008('0x5b')]===_0xc008('0x5c')){_0xfd6d1d['status'](0x194)[_0xc008('0x24')](_0xc008('0x5d'));}else{return handleError(_0xfd6d1d,null);}});};exports[_0xc008('0x22')]=function(_0x4517c0,_0x21ee6d){return db[_0xc008('0x26')][_0xc008('0x45')]({'where':{'id':_0x4517c0['params']['id']}})[_0xc008('0x21')](function(_0x462e1e){if(_[_0xc008('0x5e')](_0x462e1e)){throw new ReferenceError(_0xc008('0x5f'));}return _0x462e1e;})[_0xc008('0x21')](function(_0x167425){var _0x249898=path[_0xc008('0x4f')](config[_0xc008('0x50')],_0xc008('0x51'),_0x167425[_0xc008('0x4e')]);logger[_0xc008('0x60')](_0xc008('0x61'),_0x249898);if(!_[_0xc008('0x5e')](_0x167425['value'])&&fs[_0xc008('0x55')](_0x249898)){logger[_0xc008('0x60')](_0xc008('0x62')+_0x249898+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xc008('0x63')](_0x249898);}_0x249898=_0x249898+_0xc008('0x64');if(!_['isNil'](_0x167425['value'])&&fs[_0xc008('0x55')](_0x249898)){logger[_0xc008('0x60')](_0xc008('0x62')+_0x249898+_0xc008('0x65'));fs[_0xc008('0x63')](_0x249898);}return _0x167425;})[_0xc008('0x21')](function(_0x238852){if(!_0x238852)throw new InternalError();return _0x238852[_0xc008('0x22')]();})[_0xc008('0x21')](function(){_0x21ee6d[_0xc008('0x19')](0xcc)[_0xc008('0x18')]();})['catch'](handleError(_0x21ee6d,null));};
\ No newline at end of file
+var _0xb458=['differenceBy','format','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','filter','options','ScreenRecording','includeAll','rows','catch','show','params','include','create','body','createdAt','closedAt','find','describe','download','uniqueid','value','join','root','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model'];(function(_0x46d589,_0x2eb577){var _0x618553=function(_0x4bd683){while(--_0x4bd683){_0x46d589['push'](_0x46d589['shift']());}};_0x618553(++_0x2eb577);}(_0xb458,0x103));var _0x8b45=function(_0x2bd88d,_0x2d5dc3){_0x2bd88d=_0x2bd88d-0x0;var _0x5516d4=_0xb458[_0x2bd88d];return _0x5516d4;};'use strict';var emlformat=require(_0x8b45('0x0'));var rimraf=require(_0x8b45('0x1'));var zipdir=require(_0x8b45('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8b45('0x3'));var BPromise=require(_0x8b45('0x4'));var Mustache=require(_0x8b45('0x5'));var util=require(_0x8b45('0x6'));var path=require('path');var sox=require(_0x8b45('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8b45('0x8'));var _=require(_0x8b45('0x9'));var squel=require(_0x8b45('0xa'));var crypto=require(_0x8b45('0xb'));var jsforce=require(_0x8b45('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8b45('0xd'));var querystring=require(_0x8b45('0xe'));var Papa=require(_0x8b45('0xf'));var Redis=require(_0x8b45('0x10'));var authService=require(_0x8b45('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8b45('0x12'));var hardwareService=require(_0x8b45('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8b45('0x14'));var db=require(_0x8b45('0x15'))['db'];function respondWithStatusCode(_0x37c220,_0x52c4db){_0x52c4db=_0x52c4db||0xcc;return function(_0x30d38c){if(_0x30d38c){return _0x37c220[_0x8b45('0x16')](_0x52c4db);}return _0x37c220[_0x8b45('0x17')](_0x52c4db)[_0x8b45('0x18')]();};}function respondWithResult(_0x32babc,_0x2ad2ae){_0x2ad2ae=_0x2ad2ae||0xc8;return function(_0x5f0b20){if(_0x5f0b20){return _0x32babc['status'](_0x2ad2ae)[_0x8b45('0x19')](_0x5f0b20);}};}function respondWithFilteredResult(_0x23f1dd,_0x445170){return function(_0x39c1d1){if(_0x39c1d1){var _0x4781d7=typeof _0x445170[_0x8b45('0x1a')]===_0x8b45('0x1b')&&typeof _0x445170[_0x8b45('0x1c')]===_0x8b45('0x1b');var _0x391d1e=_0x39c1d1[_0x8b45('0x1d')];var _0x21d5b2=_0x4781d7?0x0:_0x445170[_0x8b45('0x1a')];var _0x43ffb7=_0x4781d7?_0x39c1d1[_0x8b45('0x1d')]:_0x445170[_0x8b45('0x1a')]+_0x445170[_0x8b45('0x1c')];var _0x309e23;if(_0x43ffb7>=_0x391d1e){_0x43ffb7=_0x391d1e;_0x309e23=0xc8;}else{_0x309e23=0xce;}_0x23f1dd['status'](_0x309e23);return _0x23f1dd[_0x8b45('0x1e')](_0x8b45('0x1f'),_0x21d5b2+'-'+_0x43ffb7+'/'+_0x391d1e)[_0x8b45('0x19')](_0x39c1d1);}return null;};}function patchUpdates(_0x46e21a){return function(_0x3e1438){try{jsonpatch[_0x8b45('0x20')](_0x3e1438,_0x46e21a,!![]);}catch(_0x2f4f1c){return BPromise[_0x8b45('0x21')](_0x2f4f1c);}return _0x3e1438['save']();};}function saveUpdates(_0x52f93f,_0x41154a){return function(_0x580e17){if(_0x580e17){return _0x580e17[_0x8b45('0x22')](_0x52f93f)[_0x8b45('0x23')](function(_0x30f405){return _0x30f405;});}return null;};}function removeEntity(_0x45e2db,_0x165570){return function(_0x2b8526){if(_0x2b8526){return _0x2b8526[_0x8b45('0x24')]()['then'](function(){_0x45e2db['status'](0xcc)[_0x8b45('0x18')]();});}};}function handleEntityNotFound(_0x2c2c06,_0x500044){return function(_0x5723a2){if(!_0x5723a2){_0x2c2c06[_0x8b45('0x16')](0x194);}return _0x5723a2;};}function handleError(_0x32f6f0,_0x2ca2d9){_0x2ca2d9=_0x2ca2d9||0x1f4;return function(_0x2f37bc){logger['error'](_0x2f37bc[_0x8b45('0x25')]);if(_0x2f37bc[_0x8b45('0x26')]){delete _0x2f37bc[_0x8b45('0x26')];}_0x32f6f0[_0x8b45('0x17')](_0x2ca2d9)[_0x8b45('0x27')](_0x2f37bc);};}exports[_0x8b45('0x28')]=function(_0x461017,_0x234f62){var _0x1733a7={},_0xf21bd1={},_0x339c73={'count':0x0,'rows':[]};var _0x1ba2d4=_[_0x8b45('0x29')](db['ScreenRecording'][_0x8b45('0x2a')],function(_0x36db96){return{'name':_0x36db96[_0x8b45('0x2b')],'type':_0x36db96[_0x8b45('0x2c')][_0x8b45('0x2d')]};});_0xf21bd1[_0x8b45('0x2e')]=_[_0x8b45('0x2f')](_[_0x8b45('0x29')](_0x1ba2d4,'name'),[_0x8b45('0x30')]);_0xf21bd1[_0x8b45('0x31')]=_[_0x8b45('0x32')](_0x461017[_0x8b45('0x31')]);_0xf21bd1[_0x8b45('0x33')]=_['intersection'](_0xf21bd1[_0x8b45('0x2e')],_0xf21bd1['query']);_0x1733a7['attributes']=_[_0x8b45('0x34')](_0xf21bd1[_0x8b45('0x2e')],qs[_0x8b45('0x35')](_0x461017[_0x8b45('0x31')][_0x8b45('0x35')]));_0x1733a7[_0x8b45('0x36')]=_0x1733a7['attributes'][_0x8b45('0x37')]?_0x1733a7[_0x8b45('0x36')]:_0xf21bd1[_0x8b45('0x2e')];if(!_0x461017[_0x8b45('0x31')]['hasOwnProperty'](_0x8b45('0x38'))){_0x1733a7[_0x8b45('0x1c')]=qs[_0x8b45('0x1c')](_0x461017['query'][_0x8b45('0x1c')]);_0x1733a7[_0x8b45('0x1a')]=qs[_0x8b45('0x1a')](_0x461017['query'][_0x8b45('0x1a')]);}_0x1733a7[_0x8b45('0x39')]=qs[_0x8b45('0x3a')](_0x461017[_0x8b45('0x31')]['sort']);_0x1733a7[_0x8b45('0x3b')]=qs[_0x8b45('0x33')](_[_0x8b45('0x3c')](_0x461017[_0x8b45('0x31')],_0xf21bd1[_0x8b45('0x33')]),_0x1ba2d4);if(_0x461017[_0x8b45('0x31')]['filter']){_0x1733a7['where']=_[_0x8b45('0x3d')](_0x1733a7[_0x8b45('0x3b')],{'$or':_[_0x8b45('0x29')](_0x1ba2d4,function(_0x12d4b2){if(_0x12d4b2[_0x8b45('0x2c')]!=='VIRTUAL'){var _0x120068={};_0x120068[_0x12d4b2['name']]={'$like':'%'+_0x461017[_0x8b45('0x31')][_0x8b45('0x3e')]+'%'};return _0x120068;}})});}_0x1733a7=_[_0x8b45('0x3d')]({},_0x1733a7,_0x461017[_0x8b45('0x3f')]);var _0x254f17={'where':_0x1733a7[_0x8b45('0x3b')]};return db[_0x8b45('0x40')][_0x8b45('0x1d')](_0x254f17)[_0x8b45('0x23')](function(_0x2ca00e){_0x339c73[_0x8b45('0x1d')]=_0x2ca00e;if(_0x461017['query'][_0x8b45('0x41')]){_0x1733a7['include']=[{'all':!![]}];}return db[_0x8b45('0x40')]['findAll'](_0x1733a7);})[_0x8b45('0x23')](function(_0x224c45){_0x339c73[_0x8b45('0x42')]=_0x224c45;return _0x339c73;})[_0x8b45('0x23')](respondWithFilteredResult(_0x234f62,_0x1733a7))[_0x8b45('0x43')](handleError(_0x234f62,null));};exports[_0x8b45('0x44')]=function(_0x58e663,_0x6fbca4){var _0x5916c7={'raw':![],'where':{'id':_0x58e663[_0x8b45('0x45')]['id']}},_0x4c56c8={};_0x4c56c8[_0x8b45('0x2e')]=_[_0x8b45('0x32')](db['ScreenRecording'][_0x8b45('0x2a')]);_0x4c56c8['query']=_[_0x8b45('0x32')](_0x58e663[_0x8b45('0x31')]);_0x4c56c8[_0x8b45('0x33')]=_[_0x8b45('0x34')](_0x4c56c8[_0x8b45('0x2e')],_0x4c56c8[_0x8b45('0x31')]);_0x5916c7['attributes']=_[_0x8b45('0x34')](_0x4c56c8[_0x8b45('0x2e')],qs[_0x8b45('0x35')](_0x58e663[_0x8b45('0x31')][_0x8b45('0x35')]));_0x5916c7[_0x8b45('0x36')]=_0x5916c7[_0x8b45('0x36')][_0x8b45('0x37')]?_0x5916c7[_0x8b45('0x36')]:_0x4c56c8[_0x8b45('0x2e')];if(_0x58e663[_0x8b45('0x31')][_0x8b45('0x41')]){_0x5916c7[_0x8b45('0x46')]=[{'all':!![]}];}_0x5916c7=_[_0x8b45('0x3d')]({},_0x5916c7,_0x58e663[_0x8b45('0x3f')]);return db[_0x8b45('0x40')]['find'](_0x5916c7)['then'](handleEntityNotFound(_0x6fbca4,null))['then'](respondWithResult(_0x6fbca4,null))[_0x8b45('0x43')](handleError(_0x6fbca4,null));};exports[_0x8b45('0x47')]=function(_0x3a1621,_0x473530){return db[_0x8b45('0x40')][_0x8b45('0x47')](_0x3a1621[_0x8b45('0x48')],{})[_0x8b45('0x23')](respondWithResult(_0x473530,0xc9))['catch'](handleError(_0x473530,null));};exports[_0x8b45('0x22')]=function(_0x5d5be2,_0x23b5c6){if(_0x5d5be2[_0x8b45('0x48')]['id']){delete _0x5d5be2[_0x8b45('0x48')]['id'];}delete _0x5d5be2[_0x8b45('0x48')]['duration'];delete _0x5d5be2[_0x8b45('0x48')][_0x8b45('0x49')];delete _0x5d5be2['body'][_0x8b45('0x4a')];delete _0x5d5be2[_0x8b45('0x48')]['value'];return db[_0x8b45('0x40')][_0x8b45('0x4b')]({'where':{'id':_0x5d5be2[_0x8b45('0x45')]['id']}})[_0x8b45('0x23')](handleEntityNotFound(_0x23b5c6,null))[_0x8b45('0x23')](saveUpdates(_0x5d5be2[_0x8b45('0x48')],null))['then'](respondWithResult(_0x23b5c6,null))['catch'](handleError(_0x23b5c6,null));};exports[_0x8b45('0x4c')]=function(_0x2a2e59,_0x2d5b31){return db['ScreenRecording'][_0x8b45('0x4c')]()[_0x8b45('0x23')](respondWithResult(_0x2d5b31,null))[_0x8b45('0x43')](handleError(_0x2d5b31,null));};exports[_0x8b45('0x4d')]=function(_0x2d6b66,_0x597402,_0x34c05d){var _0xa92a05=require('../../components/encryptor');var _0x422da0=![];var _0x4c3f38={};if(_0x2d6b66[_0x8b45('0x31')][_0x8b45('0x2c')]&&_0x2d6b66[_0x8b45('0x31')][_0x8b45('0x2c')]==='uniqueid'){_0x4c3f38[_0x8b45('0x4e')]=_0x2d6b66[_0x8b45('0x45')]['id'];}else{_0x4c3f38['id']=_0x2d6b66[_0x8b45('0x45')]['id'];}return db[_0x8b45('0x40')][_0x8b45('0x4b')]({'where':_0x4c3f38,'attributes':['id',_0x8b45('0x4f')],'raw':!![]})[_0x8b45('0x23')](handleEntityNotFound(_0x597402,null))[_0x8b45('0x23')](function(_0x446fe5){if(_0x446fe5){var _0x5ba878=path[_0x8b45('0x50')](config[_0x8b45('0x51')],_0x8b45('0x52'),_0x446fe5[_0x8b45('0x4f')]);var _0x1851c2=util['format'](_0x8b45('0x53'),_0x5ba878);if(fs[_0x8b45('0x54')](_0x1851c2)){_0x422da0=!![];return _0xa92a05[_0x8b45('0x55')](_0x1851c2,_0x5ba878,config['secrets'][_0x8b45('0x56')])[_0x8b45('0x23')](function(){return _0x446fe5;});}return _0x446fe5;}})[_0x8b45('0x23')](function(_0x9eacc1){if(_0x9eacc1){var _0x5795ca=path[_0x8b45('0x50')](config[_0x8b45('0x51')],_0x8b45('0x52'),_0x9eacc1[_0x8b45('0x4f')]);if(!fs['existsSync'](_0x5795ca)){throw new db[(_0x8b45('0x57'))][(_0x8b45('0x58'))](_0x8b45('0x59'));}if(_0x9eacc1[_0x8b45('0x5a')]){return _0x597402[_0x8b45('0x4d')](_0x5795ca,_0x9eacc1['filename']+path[_0x8b45('0x5b')](_0x5795ca),function(){if(_0x422da0){fs['unlink'](_0x5795ca);}});}else{return _0x597402[_0x8b45('0x4d')](_0x5795ca,function(_0x2f7ab0){if(_0x422da0){fs[_0x8b45('0x5c')](_0x5795ca);}});}}})[_0x8b45('0x43')](function(_0x6a77bd){if(_0x6a77bd[_0x8b45('0x5d')]==='ScreenRecording\x20not\x20found'){_0x597402['status'](0x194)[_0x8b45('0x27')](_0x8b45('0x5e'));}else{return handleError(_0x597402,null);}});};exports['destroy']=function(_0x461c83,_0x239330){return db[_0x8b45('0x40')]['find']({'where':{'id':_0x461c83['params']['id']}})[_0x8b45('0x23')](function(_0x8e5a41){if(_['isNil'](_0x8e5a41)){throw new ReferenceError(_0x8b45('0x5f'));}return _0x8e5a41;})['then'](function(_0xf1ab37){var _0x560c51=path['join'](config[_0x8b45('0x51')],_0x8b45('0x52'),_0xf1ab37['value']);logger[_0x8b45('0x60')](_0x8b45('0x61'),_0x560c51);if(!_[_0x8b45('0x62')](_0xf1ab37[_0x8b45('0x4f')])&&fs[_0x8b45('0x54')](_0x560c51)){logger['info'](_0x8b45('0x63')+_0x560c51+_0x8b45('0x64'));fs[_0x8b45('0x65')](_0x560c51);}_0x560c51=_0x560c51+'.cypher';if(!_['isNil'](_0xf1ab37[_0x8b45('0x4f')])&&fs['existsSync'](_0x560c51)){logger[_0x8b45('0x60')]('File:\x20\x22'+_0x560c51+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x560c51);}return _0xf1ab37;})[_0x8b45('0x23')](function(_0x4df581){if(!_0x4df581)throw new InternalError();return _0x4df581[_0x8b45('0x24')]();})[_0x8b45('0x23')](function(){_0x239330['status'](0xcc)[_0x8b45('0x18')]();})[_0x8b45('0x43')](handleError(_0x239330,null));};
\ No newline at end of file
index 9a68ea0..6ad4a4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f94=['request-promise','path','rimraf','../../config/environment','./screenRecording.attributes','define','ScreenRecording','screen_recordings','interactionid','util','api','moment','bluebird'];(function(_0x48325d,_0x3c710a){var _0x767741=function(_0x525538){while(--_0x525538){_0x48325d['push'](_0x48325d['shift']());}};_0x767741(++_0x3c710a);}(_0x4f94,0x98));var _0x44f9=function(_0x463cbc,_0x250066){_0x463cbc=_0x463cbc-0x0;var _0x45dd31=_0x4f94[_0x463cbc];return _0x45dd31;};'use strict';var _=require('lodash');var util=require(_0x44f9('0x0'));var logger=require('../../config/logger')(_0x44f9('0x1'));var moment=require(_0x44f9('0x2'));var BPromise=require(_0x44f9('0x3'));var rp=require(_0x44f9('0x4'));var fs=require('fs');var path=require(_0x44f9('0x5'));var rimraf=require(_0x44f9('0x6'));var config=require(_0x44f9('0x7'));var attributes=require(_0x44f9('0x8'));module['exports']=function(_0x33f7d5,_0x1720e6){return _0x33f7d5[_0x44f9('0x9')](_0x44f9('0xa'),attributes,{'tableName':_0x44f9('0xb'),'paranoid':![],'indexes':[{'name':_0x44f9('0xc'),'fields':[_0x44f9('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x57d5=['../../config/environment','exports','define','ScreenRecording','screen_recordings','interactionid','lodash','util','../../config/logger','moment','bluebird','path'];(function(_0x3f6565,_0x12a8bb){var _0x4abd23=function(_0x56dce7){while(--_0x56dce7){_0x3f6565['push'](_0x3f6565['shift']());}};_0x4abd23(++_0x12a8bb);}(_0x57d5,0xae));var _0x557d=function(_0x57add2,_0x4f2b7d){_0x57add2=_0x57add2-0x0;var _0x4e3670=_0x57d5[_0x57add2];return _0x4e3670;};'use strict';var _=require(_0x557d('0x0'));var util=require(_0x557d('0x1'));var logger=require(_0x557d('0x2'))('api');var moment=require(_0x557d('0x3'));var BPromise=require(_0x557d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x557d('0x5'));var rimraf=require('rimraf');var config=require(_0x557d('0x6'));var attributes=require('./screenRecording.attributes');module[_0x557d('0x7')]=function(_0x10fa71,_0x3c8d0d){return _0x10fa71[_0x557d('0x8')](_0x557d('0x9'),attributes,{'tableName':_0x557d('0xa'),'paranoid':![],'indexes':[{'name':_0x557d('0xb'),'fields':[_0x557d('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 61b62c9..d924403 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf83a=['then','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request'];(function(_0x4c7d93,_0x346501){var _0x5298c7=function(_0x592460){while(--_0x592460){_0x4c7d93['push'](_0x4c7d93['shift']());}};_0x5298c7(++_0x346501);}(_0xf83a,0x174));var _0xaf83=function(_0x30c649,_0x2ebbac){_0x30c649=_0x30c649-0x0;var _0x3edfb9=_0xf83a[_0x30c649];return _0x3edfb9;};'use strict';var _=require(_0xaf83('0x0'));var util=require(_0xaf83('0x1'));var moment=require('moment');var BPromise=require(_0xaf83('0x2'));var rs=require(_0xaf83('0x3'));var fs=require('fs');var Redis=require(_0xaf83('0x4'));var db=require(_0xaf83('0x5'))['db'];var utils=require(_0xaf83('0x6'));var logger=require(_0xaf83('0x7'))('rpc');var config=require(_0xaf83('0x8'));var jayson=require(_0xaf83('0x9'));var client=jayson['client'][_0xaf83('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x23091d,_0x34d8e7,_0x181a32){return new BPromise(function(_0x541afa,_0x9eccc9){return client[_0xaf83('0xb')](_0x23091d,_0x181a32)[_0xaf83('0xc')](function(_0x22b368){logger['info'](_0xaf83('0xd'),_0x34d8e7,_0xaf83('0xe'));logger[_0xaf83('0xf')](_0xaf83('0x10'),_0x34d8e7,_0xaf83('0xe'),JSON[_0xaf83('0x11')](_0x22b368));if(_0x22b368[_0xaf83('0x12')]){if(_0x22b368[_0xaf83('0x12')][_0xaf83('0x13')]===0x1f4){logger[_0xaf83('0x12')](_0xaf83('0xd'),_0x34d8e7,_0x22b368['error'][_0xaf83('0x14')]);return _0x9eccc9(_0x22b368[_0xaf83('0x12')][_0xaf83('0x14')]);}logger[_0xaf83('0x12')](_0xaf83('0xd'),_0x34d8e7,_0x22b368[_0xaf83('0x12')][_0xaf83('0x14')]);return _0x541afa(_0x22b368['error']['message']);}else{logger[_0xaf83('0x15')](_0xaf83('0xd'),_0x34d8e7,_0xaf83('0xe'));_0x541afa(_0x22b368[_0xaf83('0x16')]['message']);}})[_0xaf83('0x17')](function(_0x1bcc43){logger[_0xaf83('0x12')](_0xaf83('0xd'),_0x34d8e7,_0x1bcc43);_0x9eccc9(_0x1bcc43);});});}
\ No newline at end of file
+var _0xbb6d=['../../config/environment','http','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x21a81,_0x2ad59c){var _0x41fcdc=function(_0x4725e9){while(--_0x4725e9){_0x21a81['push'](_0x21a81['shift']());}};_0x41fcdc(++_0x2ad59c);}(_0xbb6d,0x13d));var _0xdbb6=function(_0x4386d5,_0x42b5e4){_0x4386d5=_0x4386d5-0x0;var _0xfa40ec=_0xbb6d[_0x4386d5];return _0xfa40ec;};'use strict';var _=require('lodash');var util=require(_0xdbb6('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xdbb6('0x1'));var fs=require('fs');var Redis=require(_0xdbb6('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xdbb6('0x3'));var logger=require(_0xdbb6('0x4'))(_0xdbb6('0x5'));var config=require(_0xdbb6('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xdbb6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3aaa2f,_0x43fd13,_0x12038e){return new BPromise(function(_0x35d93d,_0x25fda7){return client[_0xdbb6('0x8')](_0x3aaa2f,_0x12038e)[_0xdbb6('0x9')](function(_0x17372a){logger[_0xdbb6('0xa')](_0xdbb6('0xb'),_0x43fd13,_0xdbb6('0xc'));logger[_0xdbb6('0xd')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x43fd13,_0xdbb6('0xc'),JSON[_0xdbb6('0xe')](_0x17372a));if(_0x17372a[_0xdbb6('0xf')]){if(_0x17372a[_0xdbb6('0xf')][_0xdbb6('0x10')]===0x1f4){logger['error'](_0xdbb6('0xb'),_0x43fd13,_0x17372a['error'][_0xdbb6('0x11')]);return _0x25fda7(_0x17372a[_0xdbb6('0xf')][_0xdbb6('0x11')]);}logger[_0xdbb6('0xf')](_0xdbb6('0xb'),_0x43fd13,_0x17372a[_0xdbb6('0xf')][_0xdbb6('0x11')]);return _0x35d93d(_0x17372a[_0xdbb6('0xf')][_0xdbb6('0x11')]);}else{logger['info'](_0xdbb6('0xb'),_0x43fd13,_0xdbb6('0xc'));_0x35d93d(_0x17372a['result'][_0xdbb6('0x11')]);}})[_0xdbb6('0x12')](function(_0x270747){logger[_0xdbb6('0xf')](_0xdbb6('0xb'),_0x43fd13,_0x270747);_0x25fda7(_0x270747);});});}
\ No newline at end of file
index 2edad8f..99d9be4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64f6=['/:id/preferred','getPreferred','/:id/favicon','getFavicon','root','server/files/images/logos/','format','%s%s','logo','extname','originalname','post','single','file','addLogo','diskStorage','join','logologin','preferred','addPreferred','favicon','addFavicon','put','update','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/now','getDate','/:id','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr'];(function(_0x5db2e5,_0x375bb0){var _0x4ff181=function(_0x19e97d){while(--_0x19e97d){_0x5db2e5['push'](_0x5db2e5['shift']());}};_0x4ff181(++_0x375bb0);}(_0x64f6,0x11b));var _0x664f=function(_0x4abe74,_0x5f0c0){_0x4abe74=_0x4abe74-0x0;var _0x1653f5=_0x64f6[_0x4abe74];return _0x1653f5;};'use strict';var multer=require(_0x664f('0x0'));var util=require(_0x664f('0x1'));var path=require('path');var timeout=require(_0x664f('0x2'));var express=require(_0x664f('0x3'));var router=express[_0x664f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x664f('0x5'));var interaction=require(_0x664f('0x6'));var config=require('../../config/environment');var controller=require('./setting.controller');router[_0x664f('0x7')]('/',auth[_0x664f('0x8')](),controller[_0x664f('0x9')]);router[_0x664f('0x7')](_0x664f('0xa'),controller[_0x664f('0xb')]);router[_0x664f('0x7')](_0x664f('0xc'),controller['show']);router['get']('/:id/logo',controller[_0x664f('0xd')]);router['get'](_0x664f('0xe'),controller[_0x664f('0xf')]);router[_0x664f('0x7')](_0x664f('0x10'),controller[_0x664f('0x11')]);router[_0x664f('0x7')](_0x664f('0x12'),controller[_0x664f('0x13')]);router['get'](_0x664f('0x14'),controller[_0x664f('0x15')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x5c8c3a,_0x51b24e,_0x12d7eb){_0x12d7eb(null,path['join'](config[_0x664f('0x16')],_0x664f('0x17')));},'filename':function(_0x39fcc5,_0x134673,_0x1e6045){_0x1e6045(null,util[_0x664f('0x18')](_0x664f('0x19'),_0x664f('0x1a'),path[_0x664f('0x1b')](_0x134673[_0x664f('0x1c')])));}})});router[_0x664f('0x1d')]('/:id/logo',upload[_0x664f('0x1e')](_0x664f('0x1f')),controller[_0x664f('0x20')]);var upload=multer({'storage':multer[_0x664f('0x21')]({'destination':function(_0x264bec,_0x2f8b75,_0xab2489){_0xab2489(null,path[_0x664f('0x22')](config['root'],'server/files/images/logos/'));},'filename':function(_0x328ec1,_0x538f89,_0x41805e){_0x41805e(null,util[_0x664f('0x18')](_0x664f('0x19'),_0x664f('0x23'),path[_0x664f('0x1b')](_0x538f89['originalname'])));}})});router['post'](_0x664f('0xe'),upload[_0x664f('0x1e')]('file'),controller['addLogoLogin']);var upload=multer({'storage':multer[_0x664f('0x21')]({'destination':function(_0x27fa10,_0x5923ec,_0x4d9ee9){_0x4d9ee9(null,path[_0x664f('0x22')](config['root'],_0x664f('0x17')));},'filename':function(_0x411335,_0x158db2,_0x1f5ca0){_0x1f5ca0(null,util[_0x664f('0x18')]('%s%s',_0x664f('0x24'),path[_0x664f('0x1b')](_0x158db2['originalname'])));}})});router[_0x664f('0x1d')](_0x664f('0x12'),upload[_0x664f('0x1e')](_0x664f('0x1f')),controller[_0x664f('0x25')]);var upload=multer({'storage':multer[_0x664f('0x21')]({'destination':function(_0x4726d8,_0x12db48,_0x257d2c){_0x257d2c(null,path[_0x664f('0x22')](config[_0x664f('0x16')],'server/files/images/logos/'));},'filename':function(_0xa26f2a,_0x5e8541,_0x22199a){_0x22199a(null,util[_0x664f('0x18')](_0x664f('0x19'),_0x664f('0x26'),path[_0x664f('0x1b')](_0x5e8541[_0x664f('0x1c')])));}})});router[_0x664f('0x1d')](_0x664f('0x14'),upload[_0x664f('0x1e')](_0x664f('0x1f')),controller[_0x664f('0x27')]);router[_0x664f('0x28')]('/:id',auth[_0x664f('0x8')](),controller[_0x664f('0x29')]);module[_0x664f('0x2a')]=router;
\ No newline at end of file
+var _0x85a1=['favicon','addFavicon','put','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','index','getDate','/:id','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','/:id/favicon','getFavicon','join','root','format','%s%s','logo','extname','originalname','post','/:id/logo','single','server/files/images/logos/','diskStorage','preferred','file','addPreferred'];(function(_0x27602e,_0x2b7a84){var _0x162de5=function(_0xe3b336){while(--_0xe3b336){_0x27602e['push'](_0x27602e['shift']());}};_0x162de5(++_0x2b7a84);}(_0x85a1,0x1f0));var _0x185a=function(_0x2d079a,_0x41c179){_0x2d079a=_0x2d079a-0x0;var _0x277d9a=_0x85a1[_0x2d079a];return _0x277d9a;};'use strict';var multer=require('multer');var util=require(_0x185a('0x0'));var path=require(_0x185a('0x1'));var timeout=require(_0x185a('0x2'));var express=require('express');var router=express[_0x185a('0x3')]();var fs_extra=require(_0x185a('0x4'));var auth=require(_0x185a('0x5'));var interaction=require(_0x185a('0x6'));var config=require(_0x185a('0x7'));var controller=require(_0x185a('0x8'));router[_0x185a('0x9')]('/',auth[_0x185a('0xa')](),controller[_0x185a('0xb')]);router[_0x185a('0x9')]('/now',controller[_0x185a('0xc')]);router[_0x185a('0x9')](_0x185a('0xd'),controller['show']);router[_0x185a('0x9')]('/:id/logo',controller[_0x185a('0xe')]);router[_0x185a('0x9')](_0x185a('0xf'),controller[_0x185a('0x10')]);router['get'](_0x185a('0x11'),controller[_0x185a('0x12')]);router[_0x185a('0x9')](_0x185a('0x13'),controller['getPreferred']);router[_0x185a('0x9')](_0x185a('0x14'),controller[_0x185a('0x15')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xd8dddc,_0x1536fc,_0x50d5ff){_0x50d5ff(null,path[_0x185a('0x16')](config[_0x185a('0x17')],'server/files/images/logos/'));},'filename':function(_0x59d3f1,_0x3b5a7b,_0x51874c){_0x51874c(null,util[_0x185a('0x18')](_0x185a('0x19'),_0x185a('0x1a'),path[_0x185a('0x1b')](_0x3b5a7b[_0x185a('0x1c')])));}})});router[_0x185a('0x1d')](_0x185a('0x1e'),upload[_0x185a('0x1f')]('file'),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1ee42f,_0x4106cd,_0xcee57c){_0xcee57c(null,path['join'](config['root'],_0x185a('0x20')));},'filename':function(_0x40fc98,_0x2e08df,_0x238725){_0x238725(null,util[_0x185a('0x18')](_0x185a('0x19'),'logologin',path[_0x185a('0x1b')](_0x2e08df[_0x185a('0x1c')])));}})});router['post'](_0x185a('0xf'),upload[_0x185a('0x1f')]('file'),controller['addLogoLogin']);var upload=multer({'storage':multer[_0x185a('0x21')]({'destination':function(_0xaca58d,_0x20dbba,_0x16d460){_0x16d460(null,path[_0x185a('0x16')](config[_0x185a('0x17')],'server/files/images/logos/'));},'filename':function(_0x53eb9b,_0x42053c,_0x10547c){_0x10547c(null,util[_0x185a('0x18')]('%s%s',_0x185a('0x22'),path['extname'](_0x42053c[_0x185a('0x1c')])));}})});router[_0x185a('0x1d')](_0x185a('0x13'),upload[_0x185a('0x1f')](_0x185a('0x23')),controller[_0x185a('0x24')]);var upload=multer({'storage':multer[_0x185a('0x21')]({'destination':function(_0x2f2db3,_0x3e89e7,_0x402ef3){_0x402ef3(null,path[_0x185a('0x16')](config[_0x185a('0x17')],_0x185a('0x20')));},'filename':function(_0x2f49f3,_0x588dd1,_0x24075e){_0x24075e(null,util[_0x185a('0x18')](_0x185a('0x19'),_0x185a('0x25'),path[_0x185a('0x1b')](_0x588dd1[_0x185a('0x1c')])));}})});router[_0x185a('0x1d')](_0x185a('0x14'),upload[_0x185a('0x1f')](_0x185a('0x23')),controller[_0x185a('0x26')]);router[_0x185a('0x27')](_0x185a('0xd'),auth[_0x185a('0xa')](),controller['update']);module[_0x185a('0x28')]=router;
\ No newline at end of file
index 02eea00..1f74912 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['exports','INTEGER','min_internal','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate','UNSIGNED'];(function(_0x400b6c,_0x4a6139){var _0x4c4e3e=function(_0x191233){while(--_0x191233){_0x400b6c['push'](_0x400b6c['shift']());}};_0x4c4e3e(++_0x4a6139);}(_0x1261,0x144));var _0x1126=function(_0xa970d1,_0x8e9f98){_0xa970d1=_0xa970d1-0x0;var _0x4c5a31=_0x1261[_0xa970d1];return _0x4c5a31;};'use strict';var Sequelize=require('sequelize');module[_0x1126('0x0')]={'min_internal':{'type':Sequelize[_0x1126('0x1')](0xb),'unique':_0x1126('0x2'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x1126('0x1')](0xb),'unique':_0x1126('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x1126('0x1')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x1126('0x4')],'defaultValue':_0x1126('0x5')},'logo':{'type':Sequelize[_0x1126('0x4')]},'defaultLogo':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize['STRING']},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x1126('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x1126('0x4')]},'turnaddr':{'type':Sequelize[_0x1126('0x4')]},'turnusername':{'type':Sequelize[_0x1126('0x4')]},'turnpassword':{'type':Sequelize[_0x1126('0x4')]},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x1126('0x1')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x1126('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x1126('0x4')],'defaultValue':_0x1126('0x7')},'chatTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x1126('0x4')]},'defaultPreferred':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize['STRING']},'allowedLoginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x1126('0x4')]},'defaultFavicon':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x1126('0x1')]},'transcribeRegion':{'type':Sequelize[_0x1126('0x4')]},'sentiment':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x1126('0x1')]},'sentimentRegion':{'type':Sequelize[_0x1126('0x4')]},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize['STRING']},'googleSsoEnabled':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x1126('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x1126('0x1')](0x2)[_0x1126('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x1126('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5f2f=['INTEGER','min_internal','min_mailbox','STRING','BOOLEAN','alternate','UNSIGNED','sequelize','exports'];(function(_0x35000f,_0x88d166){var _0x32e8ce=function(_0x31279b){while(--_0x31279b){_0x35000f['push'](_0x35000f['shift']());}};_0x32e8ce(++_0x88d166);}(_0x5f2f,0x73));var _0xf5f2=function(_0x145fa0,_0x36b0d8){_0x145fa0=_0x145fa0-0x0;var _0x51d2dd=_0x5f2f[_0x145fa0];return _0x51d2dd;};'use strict';var Sequelize=require(_0xf5f2('0x0'));module[_0xf5f2('0x1')]={'min_internal':{'type':Sequelize[_0xf5f2('0x2')](0xb),'unique':_0xf5f2('0x3'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0xf5f2('0x2')](0xb),'unique':_0xf5f2('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0xf5f2('0x2')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0xf5f2('0x5')],'defaultValue':'/var/opt/motion2/server/files/sounds/converted'},'logo':{'type':Sequelize['STRING']},'defaultLogo':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0xf5f2('0x5')]},'defaultLoginLogo':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0xf5f2('0x5')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0xf5f2('0x5')]},'turnaddr':{'type':Sequelize[_0xf5f2('0x5')]},'turnusername':{'type':Sequelize[_0xf5f2('0x5')]},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0xf5f2('0x5')]},'defaultPageTitle':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0xf5f2('0x5')],'defaultValue':_0xf5f2('0x7')},'chatTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0xf5f2('0x5')]},'allowedLoginAttempts':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize['STRING']},'defaultFavicon':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0xf5f2('0x2')]},'transcribeRegion':{'type':Sequelize[_0xf5f2('0x5')]},'sentiment':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0xf5f2('0x2')]},'sentimentRegion':{'type':Sequelize[_0xf5f2('0x5')]},'language':{'type':Sequelize[_0xf5f2('0x5')]},'bucket':{'type':Sequelize[_0xf5f2('0x5')]},'googleSsoEnabled':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0xf5f2('0x2')](0x2)[_0xf5f2('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0xf5f2('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0xf5f2('0x2')](0x2)[_0xf5f2('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]}};
\ No newline at end of file
index f147750..f42a9f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffaf=['http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','status','json','limit','undefined','offset','count','set','Content-Range','apply','reject','update','sendStatus','stack','name','send','index','map','Setting','type','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','includeAll','rows','catch','show','params','rawAttributes','intersection','include','body','find','addLogo','file','filename','addLogoLogin','getLogo','server/files/images/logos','getLicense','logo','loginLogo','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','toLower','root','default_logo.svg','default','upperFirst','custom','ValidationError','\x20not\x20found','download','default_loginLogo.svg','Sequelize','gdpr','addPreferred','getPreferred','default_preferred.png','getFavicon','default_favicon.ico','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client'];(function(_0x2742c0,_0x41a6d0){var _0x460090=function(_0x2fa674){while(--_0x2fa674){_0x2742c0['push'](_0x2742c0['shift']());}};_0x460090(++_0x41a6d0);}(_0xffaf,0x1c6));var _0xfffa=function(_0xa98302,_0x844f27){_0xa98302=_0xa98302-0x0;var _0x1ad8e3=_0xffaf[_0xa98302];return _0x1ad8e3;};'use strict';var emlformat=require(_0xfffa('0x0'));var rimraf=require(_0xfffa('0x1'));var zipdir=require(_0xfffa('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfffa('0x3'));var moment=require(_0xfffa('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xfffa('0x5'));var util=require(_0xfffa('0x6'));var path=require(_0xfffa('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfffa('0x8'));var fs=require('fs');var fs_extra=require(_0xfffa('0x9'));var _=require(_0xfffa('0xa'));var squel=require(_0xfffa('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xfffa('0xc'));var toCsv=require('to-csv');var querystring=require(_0xfffa('0xd'));var Papa=require(_0xfffa('0xe'));var Redis=require('ioredis');var authService=require(_0xfffa('0xf'));var qs=require(_0xfffa('0x10'));var as=require(_0xfffa('0x11'));var hardwareService=require(_0xfffa('0x12'));var logger=require(_0xfffa('0x13'))(_0xfffa('0x14'));var utils=require('../../config/utils');var config=require(_0xfffa('0x15'));var licenseUtil=require(_0xfffa('0x16'));var db=require(_0xfffa('0x17'))['db'];var jayson=require(_0xfffa('0x18'));var client=jayson[_0xfffa('0x19')][_0xfffa('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x16a3a4,_0x5db43e,_0x5e2e9d,_0x2349fe){return new BPromise(function(_0x2b85d8,_0x550fcf){var _0x217391=_0x2349fe||client;return _0x217391[_0xfffa('0x1b')](_0x16a3a4,_0x5e2e9d)[_0xfffa('0x1c')](function(_0x504630){logger[_0xfffa('0x1d')](_0xfffa('0x1e'),_0x5db43e,_0xfffa('0x1f'));logger[_0xfffa('0x20')](_0xfffa('0x21'),_0x5db43e,'request\x20sent',JSON[_0xfffa('0x22')](_0x504630));if(_0x504630[_0xfffa('0x23')]){if(_0x504630['error'][_0xfffa('0x24')]===0x1f4){logger[_0xfffa('0x23')](_0xfffa('0x1e'),_0x5db43e,_0x504630[_0xfffa('0x23')][_0xfffa('0x25')]);return _0x550fcf(_0x504630[_0xfffa('0x23')][_0xfffa('0x25')]);}logger[_0xfffa('0x23')](_0xfffa('0x1e'),_0x5db43e,_0x504630[_0xfffa('0x23')]['message']);return _0x2b85d8(_0x504630[_0xfffa('0x23')][_0xfffa('0x25')]);}else{logger['info'](_0xfffa('0x1e'),_0x5db43e,'request\x20sent');_0x2b85d8(_0x504630[_0xfffa('0x26')][_0xfffa('0x25')]);}})['catch'](function(_0x2db762){logger[_0xfffa('0x23')]('Setting,\x20%s,\x20%s',_0x5db43e,_0x2db762);_0x550fcf(_0x2db762);});});}function respondWithStatusCode(_0x2b8099,_0xbb3f36){_0xbb3f36=_0xbb3f36||0xcc;return function(_0x18536c){if(_0x18536c){return _0x2b8099['sendStatus'](_0xbb3f36);}return _0x2b8099[_0xfffa('0x27')](_0xbb3f36)['end']();};}function respondWithResult(_0x16c3a0,_0x5dfd17){_0x5dfd17=_0x5dfd17||0xc8;return function(_0x3ede7a){if(_0x3ede7a){return _0x16c3a0[_0xfffa('0x27')](_0x5dfd17)[_0xfffa('0x28')](_0x3ede7a);}};}function respondWithFilteredResult(_0x4e99f7,_0x1230c0){return function(_0x3821b3){if(_0x3821b3){var _0x57ffaa=typeof _0x1230c0['offset']==='undefined'&&typeof _0x1230c0[_0xfffa('0x29')]===_0xfffa('0x2a');var _0x1809d8=_0x3821b3['count'];var _0x3c443e=_0x57ffaa?0x0:_0x1230c0[_0xfffa('0x2b')];var _0x3321db=_0x57ffaa?_0x3821b3[_0xfffa('0x2c')]:_0x1230c0[_0xfffa('0x2b')]+_0x1230c0[_0xfffa('0x29')];var _0x40319d;if(_0x3321db>=_0x1809d8){_0x3321db=_0x1809d8;_0x40319d=0xc8;}else{_0x40319d=0xce;}_0x4e99f7[_0xfffa('0x27')](_0x40319d);return _0x4e99f7[_0xfffa('0x2d')](_0xfffa('0x2e'),_0x3c443e+'-'+_0x3321db+'/'+_0x1809d8)['json'](_0x3821b3);}return null;};}function patchUpdates(_0x1255c2){return function(_0xdaef3a){try{jsonpatch[_0xfffa('0x2f')](_0xdaef3a,_0x1255c2,!![]);}catch(_0x115f50){return BPromise[_0xfffa('0x30')](_0x115f50);}return _0xdaef3a['save']();};}function saveUpdates(_0x3a56b3,_0x226f52){return function(_0x31ac25){if(_0x31ac25){return _0x31ac25[_0xfffa('0x31')](_0x3a56b3)['then'](function(_0xc68a0a){return _0xc68a0a;});}return null;};}function removeEntity(_0x1e8080,_0x20c659){return function(_0x5abaed){if(_0x5abaed){return _0x5abaed['destroy']()[_0xfffa('0x1c')](function(){_0x1e8080[_0xfffa('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a1ff9,_0x1de838){return function(_0x2f33d2){if(!_0x2f33d2){_0x3a1ff9[_0xfffa('0x32')](0x194);}return _0x2f33d2;};}function handleError(_0x19ebbc,_0x1a55de){_0x1a55de=_0x1a55de||0x1f4;return function(_0x3b2272){logger['error'](_0x3b2272[_0xfffa('0x33')]);if(_0x3b2272[_0xfffa('0x34')]){delete _0x3b2272[_0xfffa('0x34')];}_0x19ebbc['status'](_0x1a55de)[_0xfffa('0x35')](_0x3b2272);};}exports[_0xfffa('0x36')]=function(_0x2d696a,_0x198442){var _0x402078={},_0x194171={},_0x229ced={'count':0x0,'rows':[]};var _0x3f2797=_[_0xfffa('0x37')](db[_0xfffa('0x38')]['rawAttributes'],function(_0x4ce2d0){return{'name':_0x4ce2d0['fieldName'],'type':_0x4ce2d0[_0xfffa('0x39')]['key']};});_0x194171[_0xfffa('0x3a')]=_[_0xfffa('0x37')](_0x3f2797,_0xfffa('0x34'));_0x194171[_0xfffa('0x3b')]=_[_0xfffa('0x3c')](_0x2d696a[_0xfffa('0x3b')]);_0x194171[_0xfffa('0x3d')]=_['intersection'](_0x194171[_0xfffa('0x3a')],_0x194171['query']);_0x402078[_0xfffa('0x3e')]=_['intersection'](_0x194171[_0xfffa('0x3a')],qs['fields'](_0x2d696a[_0xfffa('0x3b')][_0xfffa('0x3f')]));_0x402078[_0xfffa('0x3e')]=_0x402078['attributes'][_0xfffa('0x40')]?_0x402078[_0xfffa('0x3e')]:_0x194171[_0xfffa('0x3a')];if(!_0x2d696a[_0xfffa('0x3b')][_0xfffa('0x41')]('nolimit')){_0x402078[_0xfffa('0x29')]=qs['limit'](_0x2d696a[_0xfffa('0x3b')][_0xfffa('0x29')]);_0x402078['offset']=qs[_0xfffa('0x2b')](_0x2d696a[_0xfffa('0x3b')]['offset']);}_0x402078[_0xfffa('0x42')]=qs[_0xfffa('0x43')](_0x2d696a[_0xfffa('0x3b')]['sort']);_0x402078[_0xfffa('0x44')]=qs[_0xfffa('0x3d')](_[_0xfffa('0x45')](_0x2d696a['query'],_0x194171[_0xfffa('0x3d')]),_0x3f2797);if(_0x2d696a[_0xfffa('0x3b')][_0xfffa('0x46')]){_0x402078[_0xfffa('0x44')]=_[_0xfffa('0x47')](_0x402078[_0xfffa('0x44')],{'$or':_[_0xfffa('0x37')](_0x3f2797,function(_0x26ced3){if(_0x26ced3[_0xfffa('0x39')]!=='VIRTUAL'){var _0x169d1a={};_0x169d1a[_0x26ced3[_0xfffa('0x34')]]={'$like':'%'+_0x2d696a[_0xfffa('0x3b')][_0xfffa('0x46')]+'%'};return _0x169d1a;}})});}_0x402078=_[_0xfffa('0x47')]({},_0x402078,_0x2d696a['options']);var _0x36741b={'where':_0x402078[_0xfffa('0x44')]};return db['Setting'][_0xfffa('0x2c')](_0x36741b)[_0xfffa('0x1c')](function(_0x1e7bbc){_0x229ced[_0xfffa('0x2c')]=_0x1e7bbc;if(_0x2d696a['query'][_0xfffa('0x48')]){_0x402078['include']=[{'all':!![]}];}return db[_0xfffa('0x38')]['findAll'](_0x402078);})[_0xfffa('0x1c')](function(_0x5d5083){_0x229ced[_0xfffa('0x49')]=_0x5d5083;return _0x229ced;})['then'](respondWithFilteredResult(_0x198442,_0x402078))[_0xfffa('0x4a')](handleError(_0x198442,null));};exports[_0xfffa('0x4b')]=function(_0x1306fc,_0xb55960){var _0x337889={'raw':![],'where':{'id':_0x1306fc[_0xfffa('0x4c')]['id']}},_0x318a20={};_0x318a20[_0xfffa('0x3a')]=_[_0xfffa('0x3c')](db['Setting'][_0xfffa('0x4d')]);_0x318a20[_0xfffa('0x3b')]=_['keys'](_0x1306fc['query']);_0x318a20[_0xfffa('0x3d')]=_[_0xfffa('0x4e')](_0x318a20[_0xfffa('0x3a')],_0x318a20[_0xfffa('0x3b')]);_0x337889[_0xfffa('0x3e')]=_[_0xfffa('0x4e')](_0x318a20['model'],qs[_0xfffa('0x3f')](_0x1306fc[_0xfffa('0x3b')][_0xfffa('0x3f')]));_0x337889['attributes']=_0x337889[_0xfffa('0x3e')][_0xfffa('0x40')]?_0x337889['attributes']:_0x318a20[_0xfffa('0x3a')];if(_0x1306fc['query'][_0xfffa('0x48')]){_0x337889[_0xfffa('0x4f')]=[{'all':!![]}];}_0x337889=_[_0xfffa('0x47')]({},_0x337889,_0x1306fc['options']);return db[_0xfffa('0x38')]['find'](_0x337889)[_0xfffa('0x1c')](handleEntityNotFound(_0xb55960,null))[_0xfffa('0x1c')](respondWithResult(_0xb55960,null))[_0xfffa('0x4a')](handleError(_0xb55960,null));};exports[_0xfffa('0x31')]=function(_0x4b9998,_0x2a5ef6){if(_0x4b9998[_0xfffa('0x50')]['id']){delete _0x4b9998[_0xfffa('0x50')]['id'];}return db[_0xfffa('0x38')][_0xfffa('0x51')]({'where':{'id':_0x4b9998[_0xfffa('0x4c')]['id']}})[_0xfffa('0x1c')](handleEntityNotFound(_0x2a5ef6,null))['then'](saveUpdates(_0x4b9998['body'],null))[_0xfffa('0x1c')](respondWithResult(_0x2a5ef6,null))['catch'](handleError(_0x2a5ef6,null));};exports[_0xfffa('0x52')]=function(_0x311355,_0x456b8f,_0x51ba9c){if(_0x311355[_0xfffa('0x53')]&&_0x311355[_0xfffa('0x53')][_0xfffa('0x54')]){_0x311355['body']['logo']=_0x311355['file'][_0xfffa('0x54')];}return db[_0xfffa('0x38')][_0xfffa('0x51')]({'where':{'id':_0x311355[_0xfffa('0x4c')]['id']}})[_0xfffa('0x1c')](handleEntityNotFound(_0x456b8f,null))[_0xfffa('0x1c')](saveUpdates(_0x311355[_0xfffa('0x50')],null))[_0xfffa('0x1c')](respondWithResult(_0x456b8f,null))[_0xfffa('0x4a')](handleError(_0x456b8f,null));};exports[_0xfffa('0x55')]=function(_0xf01742,_0x2da434,_0x5cdf54){if(_0xf01742[_0xfffa('0x53')]&&_0xf01742[_0xfffa('0x53')][_0xfffa('0x54')]){_0xf01742[_0xfffa('0x50')]['loginLogo']=_0xf01742['file'][_0xfffa('0x54')];}return db[_0xfffa('0x38')]['find']({'where':{'id':_0xf01742[_0xfffa('0x4c')]['id']}})[_0xfffa('0x1c')](handleEntityNotFound(_0x2da434,null))['then'](saveUpdates(_0xf01742[_0xfffa('0x50')],null))['then'](respondWithResult(_0x2da434,null))[_0xfffa('0x4a')](handleError(_0x2da434,null));};var utilLicense=require(_0xfffa('0x16'));exports[_0xfffa('0x56')]=function(_0x46f0b9,_0x278fe9,_0x17b29d){var _0x17b876=_0xfffa('0x57');var _0x412f80={'custom':![]};return utilLicense[_0xfffa('0x58')]()['then'](function(_0x3b859f){if(_0x3b859f){_0x412f80=_0x3b859f;}return db['Setting'][_0xfffa('0x51')]({'where':{'id':_0x46f0b9[_0xfffa('0x4c')]['id']},'attributes':[_0xfffa('0x59'),_0xfffa('0x5a'),_0xfffa('0x5b'),_0xfffa('0x5c'),_0xfffa('0x5d'),_0xfffa('0x5e'),_0xfffa('0x5f'),_0xfffa('0x60')],'raw':!![]});})[_0xfffa('0x1c')](handleEntityNotFound(_0x278fe9,null))['then'](function(_0x4a59b5){if(_0x4a59b5){var _0x451993=_0x4a59b5[_0xfffa('0x59')]&&fs[_0xfffa('0x61')](path[_0xfffa('0x62')](config['root'],_0x17b876,_[_0xfffa('0x63')](_0x4a59b5['logo'])))?path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x17b876,_[_0xfffa('0x63')](_0x4a59b5[_0xfffa('0x59')])):path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x17b876,_['toLower'](_0xfffa('0x65')));var _0x5c33fa=_0xfffa('0x66')+_[_0xfffa('0x67')](_0xfffa('0x59'));if(_0x4a59b5[_0x5c33fa]||!_0x412f80[_0xfffa('0x68')]){_0x451993=path['join'](config[_0xfffa('0x64')],_0x17b876,_['toLower']('default_logo.svg'));}if(!fs['existsSync'](_0x451993)){throw new db['Sequelize'][(_0xfffa('0x69'))](_[_0xfffa('0x67')](_0xfffa('0x59'))+_0xfffa('0x6a'));}return _0x278fe9[_0xfffa('0x6b')](_0x451993);}})['catch'](handleError(_0x278fe9,null));};var utilLicense=require('../../config/license/util');exports['getLogoLogin']=function(_0xd5a318,_0x3c31b3,_0x344d0c){var _0x179ebc=_0xfffa('0x57');var _0x414b4a={'custom':![]};return utilLicense[_0xfffa('0x58')]()[_0xfffa('0x1c')](function(_0x4bec9a){if(_0x4bec9a){_0x414b4a=_0x4bec9a;}return db[_0xfffa('0x38')][_0xfffa('0x51')]({'where':{'id':_0xd5a318['params']['id']},'attributes':['logo',_0xfffa('0x5a'),'preferred',_0xfffa('0x5c'),_0xfffa('0x5d'),'defaultLoginLogo',_0xfffa('0x5f'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x3c31b3,null))[_0xfffa('0x1c')](function(_0x1eba42){if(_0x1eba42){var _0x33d63d=_0x1eba42[_0xfffa('0x5a')]&&fs['existsSync'](path['join'](config['root'],_0x179ebc,_[_0xfffa('0x63')](_0x1eba42[_0xfffa('0x5a')])))?path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x179ebc,_['toLower'](_0x1eba42[_0xfffa('0x5a')])):path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x179ebc,_[_0xfffa('0x63')](_0xfffa('0x6c')));var _0x425919=_0xfffa('0x66')+_[_0xfffa('0x67')](_0xfffa('0x5a'));if(_0x1eba42[_0x425919]||!_0x414b4a[_0xfffa('0x68')]){_0x33d63d=path['join'](config[_0xfffa('0x64')],_0x179ebc,_[_0xfffa('0x63')](_0xfffa('0x6c')));}if(!fs[_0xfffa('0x61')](_0x33d63d)){throw new db[(_0xfffa('0x6d'))]['ValidationError'](_[_0xfffa('0x67')](_0xfffa('0x5a'))+_0xfffa('0x6a'));}return _0x3c31b3[_0xfffa('0x6b')](_0x33d63d);}})['catch'](handleError(_0x3c31b3,null));};exports[_0xfffa('0x6e')]=function(_0x327049,_0x4c2e12){return db[_0xfffa('0x38')][_0xfffa('0x51')]({'where':{'id':_0x327049[_0xfffa('0x4c')]['id']},'attributes':['securePassword']})[_0xfffa('0x1c')](respondWithResult(_0x4c2e12,null))[_0xfffa('0x4a')](handleError(_0x4c2e12,null));};exports[_0xfffa('0x6f')]=function(_0x46ba5e,_0x3a360f,_0x2b122a){if(_0x46ba5e[_0xfffa('0x53')]&&_0x46ba5e[_0xfffa('0x53')]['filename']){_0x46ba5e['body']['preferred']=_0x46ba5e[_0xfffa('0x53')]['filename'];}return db['Setting'][_0xfffa('0x51')]({'where':{'id':_0x46ba5e['params']['id']}})[_0xfffa('0x1c')](handleEntityNotFound(_0x3a360f,null))[_0xfffa('0x1c')](saveUpdates(_0x46ba5e[_0xfffa('0x50')],null))[_0xfffa('0x1c')](respondWithResult(_0x3a360f,null))[_0xfffa('0x4a')](handleError(_0x3a360f,null));};var utilLicense=require('../../config/license/util');exports[_0xfffa('0x70')]=function(_0x180264,_0x1288e0,_0x5d16f2){var _0x3253c0=_0xfffa('0x57');var _0x3af1a4={'custom':![]};return utilLicense[_0xfffa('0x58')]()[_0xfffa('0x1c')](function(_0x569473){if(_0x569473){_0x3af1a4=_0x569473;}return db[_0xfffa('0x38')]['find']({'where':{'id':_0x180264['params']['id']},'attributes':['logo',_0xfffa('0x5a'),'preferred',_0xfffa('0x5c'),_0xfffa('0x5d'),_0xfffa('0x5e'),_0xfffa('0x5f'),_0xfffa('0x60')],'raw':!![]});})[_0xfffa('0x1c')](handleEntityNotFound(_0x1288e0,null))[_0xfffa('0x1c')](function(_0x53104d){if(_0x53104d){var _0x4bcf57=_0x53104d[_0xfffa('0x5b')]&&fs[_0xfffa('0x61')](path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x3253c0,_[_0xfffa('0x63')](_0x53104d[_0xfffa('0x5b')])))?path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x3253c0,_[_0xfffa('0x63')](_0x53104d['preferred'])):path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x3253c0,_[_0xfffa('0x63')](_0xfffa('0x71')));var _0x5b29d8=_0xfffa('0x66')+_[_0xfffa('0x67')](_0xfffa('0x5b'));if(_0x53104d[_0x5b29d8]||!_0x3af1a4[_0xfffa('0x68')]||!_0x3af1a4[_0xfffa('0x5b')]){_0x4bcf57=path[_0xfffa('0x62')](config['root'],_0x3253c0,_[_0xfffa('0x63')](_0xfffa('0x71')));}if(!fs[_0xfffa('0x61')](_0x4bcf57)){throw new db['Sequelize'][(_0xfffa('0x69'))](_['upperFirst'](_0xfffa('0x5b'))+'\x20not\x20found');}return _0x1288e0[_0xfffa('0x6b')](_0x4bcf57);}})[_0xfffa('0x4a')](handleError(_0x1288e0,null));};exports['addFavicon']=function(_0x35e46c,_0x1e3f3f,_0x57e23a){if(_0x35e46c[_0xfffa('0x53')]&&_0x35e46c['file'][_0xfffa('0x54')]){_0x35e46c[_0xfffa('0x50')][_0xfffa('0x5c')]=_0x35e46c[_0xfffa('0x53')][_0xfffa('0x54')];}return db[_0xfffa('0x38')][_0xfffa('0x51')]({'where':{'id':_0x35e46c[_0xfffa('0x4c')]['id']}})[_0xfffa('0x1c')](handleEntityNotFound(_0x1e3f3f,null))[_0xfffa('0x1c')](saveUpdates(_0x35e46c[_0xfffa('0x50')],null))[_0xfffa('0x1c')](respondWithResult(_0x1e3f3f,null))[_0xfffa('0x4a')](handleError(_0x1e3f3f,null));};var utilLicense=require(_0xfffa('0x16'));exports[_0xfffa('0x72')]=function(_0x2b99ed,_0x2b6e3e,_0x52a545){var _0x17fee8=_0xfffa('0x57');var _0x33e443={'custom':![]};return utilLicense[_0xfffa('0x58')]()[_0xfffa('0x1c')](function(_0x2437a6){if(_0x2437a6){_0x33e443=_0x2437a6;}return db['Setting'][_0xfffa('0x51')]({'where':{'id':_0x2b99ed[_0xfffa('0x4c')]['id']},'attributes':[_0xfffa('0x59'),_0xfffa('0x5a'),_0xfffa('0x5b'),_0xfffa('0x5c'),'defaultLogo',_0xfffa('0x5e'),_0xfffa('0x5f'),'defaultFavicon'],'raw':!![]});})[_0xfffa('0x1c')](handleEntityNotFound(_0x2b6e3e,null))[_0xfffa('0x1c')](function(_0x20043d){if(_0x20043d){var _0x43c1af=_0x20043d['favicon']&&fs[_0xfffa('0x61')](path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x17fee8,_[_0xfffa('0x63')](_0x20043d['favicon'])))?path['join'](config[_0xfffa('0x64')],_0x17fee8,_['toLower'](_0x20043d[_0xfffa('0x5c')])):path[_0xfffa('0x62')](config['root'],_0x17fee8,_['toLower']('default_favicon.ico'));var _0x3fc79c=_0xfffa('0x66')+_['upperFirst'](_0xfffa('0x5c'));if(_0x20043d[_0x3fc79c]||!_0x33e443[_0xfffa('0x68')]){_0x43c1af=path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x17fee8,_[_0xfffa('0x63')](_0xfffa('0x73')));}if(!fs[_0xfffa('0x61')](_0x43c1af)){throw new db[(_0xfffa('0x6d'))]['ValidationError'](_['upperFirst']('favicon')+'\x20not\x20found');}return _0x2b6e3e[_0xfffa('0x6b')](_0x43c1af);}})[_0xfffa('0x4a')](handleError(_0x2b6e3e,null));};exports['getDate']=function(_0x58b31e,_0x378c51){var _0x4591e0={'offset':moment()[_0xfffa('0x74')]()};_0x4591e0[_0xfffa('0x75')]=moment()[_0xfffa('0x74')](_0x4591e0[_0xfffa('0x2b')])[_0xfffa('0x76')](_0xfffa('0x77'));return _0x378c51[_0xfffa('0x27')](0xc8)[_0xfffa('0x35')](_0x4591e0);};
\ No newline at end of file
+var _0x255f=['loginLogo','getLogo','server/files/images/logos','getLicense','preferred','defaultLogo','defaultLoginLogo','defaultPreferred','existsSync','root','join','toLower','default_logo.svg','default','upperFirst','custom','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','favicon','defaultFavicon','default_loginLogo.svg','gdpr','addPreferred','default_preferred.png','default_favicon.ico','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','http','request','then','info','Setting,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','end','sendStatus','stack','name','send','Setting','rawAttributes','fieldName','type','model','map','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','VIRTUAL','merge','options','where','includeAll','show','intersection','find','body','params','addLogo','file','filename','logo','addLogoLogin'];(function(_0x124d56,_0x5c1c88){var _0xef9327=function(_0x2f434b){while(--_0x2f434b){_0x124d56['push'](_0x124d56['shift']());}};_0xef9327(++_0x5c1c88);}(_0x255f,0x185));var _0xf255=function(_0x29fd44,_0x502cf0){_0x29fd44=_0x29fd44-0x0;var _0x349b4f=_0x255f[_0x29fd44];return _0x349b4f;};'use strict';var emlformat=require(_0xf255('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf255('0x1'));var jsonpatch=require(_0xf255('0x2'));var rp=require(_0xf255('0x3'));var moment=require('moment');var BPromise=require(_0xf255('0x4'));var Mustache=require(_0xf255('0x5'));var util=require(_0xf255('0x6'));var path=require(_0xf255('0x7'));var sox=require(_0xf255('0x8'));var csv=require(_0xf255('0x9'));var ejs=require(_0xf255('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf255('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf255('0xc'));var deskjs=require(_0xf255('0xd'));var toCsv=require('to-csv');var querystring=require(_0xf255('0xe'));var Papa=require(_0xf255('0xf'));var Redis=require('ioredis');var authService=require(_0xf255('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xf255('0x11'));var hardwareService=require(_0xf255('0x12'));var logger=require(_0xf255('0x13'))(_0xf255('0x14'));var utils=require(_0xf255('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf255('0x16'));var db=require(_0xf255('0x17'))['db'];var jayson=require(_0xf255('0x18'));var client=jayson['client'][_0xf255('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x139e90,_0x52a804,_0x17b028,_0x266b73){return new BPromise(function(_0x233853,_0x49240a){var _0x393d1d=_0x266b73||client;return _0x393d1d[_0xf255('0x1a')](_0x139e90,_0x17b028)[_0xf255('0x1b')](function(_0x750c8a){logger[_0xf255('0x1c')](_0xf255('0x1d'),_0x52a804,'request\x20sent');logger[_0xf255('0x1e')]('Setting,\x20%s,\x20%s,\x20%s',_0x52a804,_0xf255('0x1f'),JSON['stringify'](_0x750c8a));if(_0x750c8a[_0xf255('0x20')]){if(_0x750c8a[_0xf255('0x20')][_0xf255('0x21')]===0x1f4){logger[_0xf255('0x20')](_0xf255('0x1d'),_0x52a804,_0x750c8a[_0xf255('0x20')][_0xf255('0x22')]);return _0x49240a(_0x750c8a[_0xf255('0x20')][_0xf255('0x22')]);}logger[_0xf255('0x20')](_0xf255('0x1d'),_0x52a804,_0x750c8a['error'][_0xf255('0x22')]);return _0x233853(_0x750c8a[_0xf255('0x20')][_0xf255('0x22')]);}else{logger[_0xf255('0x1c')](_0xf255('0x1d'),_0x52a804,_0xf255('0x1f'));_0x233853(_0x750c8a[_0xf255('0x23')]['message']);}})[_0xf255('0x24')](function(_0xe12574){logger[_0xf255('0x20')](_0xf255('0x1d'),_0x52a804,_0xe12574);_0x49240a(_0xe12574);});});}function respondWithStatusCode(_0x325ee8,_0x1b3b1a){_0x1b3b1a=_0x1b3b1a||0xcc;return function(_0x25eca0){if(_0x25eca0){return _0x325ee8['sendStatus'](_0x1b3b1a);}return _0x325ee8[_0xf255('0x25')](_0x1b3b1a)['end']();};}function respondWithResult(_0x4db833,_0x3d64c5){_0x3d64c5=_0x3d64c5||0xc8;return function(_0x3270d4){if(_0x3270d4){return _0x4db833[_0xf255('0x25')](_0x3d64c5)[_0xf255('0x26')](_0x3270d4);}};}function respondWithFilteredResult(_0x3c0c32,_0x54d391){return function(_0x1c3a8e){if(_0x1c3a8e){var _0x157397=typeof _0x54d391[_0xf255('0x27')]==='undefined'&&typeof _0x54d391[_0xf255('0x28')]===_0xf255('0x29');var _0x254951=_0x1c3a8e['count'];var _0xa1827e=_0x157397?0x0:_0x54d391[_0xf255('0x27')];var _0x3bc770=_0x157397?_0x1c3a8e[_0xf255('0x2a')]:_0x54d391[_0xf255('0x27')]+_0x54d391[_0xf255('0x28')];var _0x2a159c;if(_0x3bc770>=_0x254951){_0x3bc770=_0x254951;_0x2a159c=0xc8;}else{_0x2a159c=0xce;}_0x3c0c32[_0xf255('0x25')](_0x2a159c);return _0x3c0c32[_0xf255('0x2b')](_0xf255('0x2c'),_0xa1827e+'-'+_0x3bc770+'/'+_0x254951)['json'](_0x1c3a8e);}return null;};}function patchUpdates(_0x3dab12){return function(_0x415299){try{jsonpatch[_0xf255('0x2d')](_0x415299,_0x3dab12,!![]);}catch(_0x269d72){return BPromise[_0xf255('0x2e')](_0x269d72);}return _0x415299[_0xf255('0x2f')]();};}function saveUpdates(_0x2855a2,_0xf9e1d1){return function(_0x4b86cf){if(_0x4b86cf){return _0x4b86cf[_0xf255('0x30')](_0x2855a2)['then'](function(_0x57ce5c){return _0x57ce5c;});}return null;};}function removeEntity(_0x376ebf,_0x90d5e0){return function(_0x164312){if(_0x164312){return _0x164312[_0xf255('0x31')]()[_0xf255('0x1b')](function(){_0x376ebf[_0xf255('0x25')](0xcc)[_0xf255('0x32')]();});}};}function handleEntityNotFound(_0x4d60ef,_0x1de946){return function(_0x913367){if(!_0x913367){_0x4d60ef[_0xf255('0x33')](0x194);}return _0x913367;};}function handleError(_0x430345,_0x3d9252){_0x3d9252=_0x3d9252||0x1f4;return function(_0x2e7106){logger['error'](_0x2e7106[_0xf255('0x34')]);if(_0x2e7106[_0xf255('0x35')]){delete _0x2e7106[_0xf255('0x35')];}_0x430345[_0xf255('0x25')](_0x3d9252)[_0xf255('0x36')](_0x2e7106);};}exports['index']=function(_0x25128c,_0x2a2c76){var _0x6f9156={},_0x38c24c={},_0x12de34={'count':0x0,'rows':[]};var _0xe88ae1=_['map'](db[_0xf255('0x37')][_0xf255('0x38')],function(_0x472991){return{'name':_0x472991[_0xf255('0x39')],'type':_0x472991[_0xf255('0x3a')]['key']};});_0x38c24c[_0xf255('0x3b')]=_[_0xf255('0x3c')](_0xe88ae1,_0xf255('0x35'));_0x38c24c[_0xf255('0x3d')]=_[_0xf255('0x3e')](_0x25128c[_0xf255('0x3d')]);_0x38c24c[_0xf255('0x3f')]=_['intersection'](_0x38c24c[_0xf255('0x3b')],_0x38c24c[_0xf255('0x3d')]);_0x6f9156[_0xf255('0x40')]=_['intersection'](_0x38c24c[_0xf255('0x3b')],qs['fields'](_0x25128c[_0xf255('0x3d')][_0xf255('0x41')]));_0x6f9156[_0xf255('0x40')]=_0x6f9156[_0xf255('0x40')][_0xf255('0x42')]?_0x6f9156[_0xf255('0x40')]:_0x38c24c[_0xf255('0x3b')];if(!_0x25128c[_0xf255('0x3d')][_0xf255('0x43')](_0xf255('0x44'))){_0x6f9156[_0xf255('0x28')]=qs[_0xf255('0x28')](_0x25128c[_0xf255('0x3d')][_0xf255('0x28')]);_0x6f9156[_0xf255('0x27')]=qs[_0xf255('0x27')](_0x25128c[_0xf255('0x3d')]['offset']);}_0x6f9156[_0xf255('0x45')]=qs['sort'](_0x25128c[_0xf255('0x3d')][_0xf255('0x46')]);_0x6f9156['where']=qs[_0xf255('0x3f')](_['pick'](_0x25128c[_0xf255('0x3d')],_0x38c24c[_0xf255('0x3f')]),_0xe88ae1);if(_0x25128c['query'][_0xf255('0x47')]){_0x6f9156['where']=_['merge'](_0x6f9156['where'],{'$or':_[_0xf255('0x3c')](_0xe88ae1,function(_0x2dacdb){if(_0x2dacdb[_0xf255('0x3a')]!==_0xf255('0x48')){var _0x5a2bb9={};_0x5a2bb9[_0x2dacdb[_0xf255('0x35')]]={'$like':'%'+_0x25128c[_0xf255('0x3d')][_0xf255('0x47')]+'%'};return _0x5a2bb9;}})});}_0x6f9156=_[_0xf255('0x49')]({},_0x6f9156,_0x25128c[_0xf255('0x4a')]);var _0x5ef308={'where':_0x6f9156[_0xf255('0x4b')]};return db[_0xf255('0x37')][_0xf255('0x2a')](_0x5ef308)[_0xf255('0x1b')](function(_0x103849){_0x12de34[_0xf255('0x2a')]=_0x103849;if(_0x25128c[_0xf255('0x3d')][_0xf255('0x4c')]){_0x6f9156['include']=[{'all':!![]}];}return db['Setting']['findAll'](_0x6f9156);})[_0xf255('0x1b')](function(_0x4b27e7){_0x12de34['rows']=_0x4b27e7;return _0x12de34;})[_0xf255('0x1b')](respondWithFilteredResult(_0x2a2c76,_0x6f9156))[_0xf255('0x24')](handleError(_0x2a2c76,null));};exports[_0xf255('0x4d')]=function(_0x2843c0,_0x493e9a){var _0x5bf6e7={'raw':![],'where':{'id':_0x2843c0['params']['id']}},_0x1a893c={};_0x1a893c['model']=_[_0xf255('0x3e')](db['Setting'][_0xf255('0x38')]);_0x1a893c[_0xf255('0x3d')]=_[_0xf255('0x3e')](_0x2843c0[_0xf255('0x3d')]);_0x1a893c[_0xf255('0x3f')]=_[_0xf255('0x4e')](_0x1a893c[_0xf255('0x3b')],_0x1a893c[_0xf255('0x3d')]);_0x5bf6e7[_0xf255('0x40')]=_[_0xf255('0x4e')](_0x1a893c[_0xf255('0x3b')],qs[_0xf255('0x41')](_0x2843c0[_0xf255('0x3d')][_0xf255('0x41')]));_0x5bf6e7[_0xf255('0x40')]=_0x5bf6e7['attributes'][_0xf255('0x42')]?_0x5bf6e7[_0xf255('0x40')]:_0x1a893c[_0xf255('0x3b')];if(_0x2843c0[_0xf255('0x3d')][_0xf255('0x4c')]){_0x5bf6e7['include']=[{'all':!![]}];}_0x5bf6e7=_['merge']({},_0x5bf6e7,_0x2843c0[_0xf255('0x4a')]);return db[_0xf255('0x37')][_0xf255('0x4f')](_0x5bf6e7)[_0xf255('0x1b')](handleEntityNotFound(_0x493e9a,null))[_0xf255('0x1b')](respondWithResult(_0x493e9a,null))[_0xf255('0x24')](handleError(_0x493e9a,null));};exports[_0xf255('0x30')]=function(_0x48ee25,_0x49962e){if(_0x48ee25[_0xf255('0x50')]['id']){delete _0x48ee25[_0xf255('0x50')]['id'];}return db[_0xf255('0x37')][_0xf255('0x4f')]({'where':{'id':_0x48ee25[_0xf255('0x51')]['id']}})[_0xf255('0x1b')](handleEntityNotFound(_0x49962e,null))[_0xf255('0x1b')](saveUpdates(_0x48ee25[_0xf255('0x50')],null))[_0xf255('0x1b')](respondWithResult(_0x49962e,null))[_0xf255('0x24')](handleError(_0x49962e,null));};exports[_0xf255('0x52')]=function(_0xad9a81,_0x38db26,_0x57093d){if(_0xad9a81[_0xf255('0x53')]&&_0xad9a81[_0xf255('0x53')][_0xf255('0x54')]){_0xad9a81[_0xf255('0x50')][_0xf255('0x55')]=_0xad9a81['file'][_0xf255('0x54')];}return db[_0xf255('0x37')][_0xf255('0x4f')]({'where':{'id':_0xad9a81[_0xf255('0x51')]['id']}})['then'](handleEntityNotFound(_0x38db26,null))[_0xf255('0x1b')](saveUpdates(_0xad9a81[_0xf255('0x50')],null))[_0xf255('0x1b')](respondWithResult(_0x38db26,null))[_0xf255('0x24')](handleError(_0x38db26,null));};exports[_0xf255('0x56')]=function(_0x603ced,_0x10a468,_0x435afa){if(_0x603ced[_0xf255('0x53')]&&_0x603ced['file'][_0xf255('0x54')]){_0x603ced[_0xf255('0x50')][_0xf255('0x57')]=_0x603ced['file'][_0xf255('0x54')];}return db['Setting'][_0xf255('0x4f')]({'where':{'id':_0x603ced[_0xf255('0x51')]['id']}})[_0xf255('0x1b')](handleEntityNotFound(_0x10a468,null))[_0xf255('0x1b')](saveUpdates(_0x603ced[_0xf255('0x50')],null))[_0xf255('0x1b')](respondWithResult(_0x10a468,null))[_0xf255('0x24')](handleError(_0x10a468,null));};var utilLicense=require(_0xf255('0x16'));exports[_0xf255('0x58')]=function(_0x5b2e0b,_0x4e1821,_0x2c0f60){var _0x3fb81d=_0xf255('0x59');var _0xf2f59e={'custom':![]};return utilLicense[_0xf255('0x5a')]()[_0xf255('0x1b')](function(_0x51ffd4){if(_0x51ffd4){_0xf2f59e=_0x51ffd4;}return db[_0xf255('0x37')][_0xf255('0x4f')]({'where':{'id':_0x5b2e0b[_0xf255('0x51')]['id']},'attributes':[_0xf255('0x55'),_0xf255('0x57'),_0xf255('0x5b'),'favicon',_0xf255('0x5c'),_0xf255('0x5d'),_0xf255('0x5e'),'defaultFavicon'],'raw':!![]});})[_0xf255('0x1b')](handleEntityNotFound(_0x4e1821,null))['then'](function(_0x58bf65){if(_0x58bf65){var _0x527eab=_0x58bf65['logo']&&fs[_0xf255('0x5f')](path['join'](config[_0xf255('0x60')],_0x3fb81d,_['toLower'](_0x58bf65[_0xf255('0x55')])))?path[_0xf255('0x61')](config[_0xf255('0x60')],_0x3fb81d,_[_0xf255('0x62')](_0x58bf65['logo'])):path[_0xf255('0x61')](config[_0xf255('0x60')],_0x3fb81d,_[_0xf255('0x62')](_0xf255('0x63')));var _0x46f5a3=_0xf255('0x64')+_[_0xf255('0x65')]('logo');if(_0x58bf65[_0x46f5a3]||!_0xf2f59e[_0xf255('0x66')]){_0x527eab=path[_0xf255('0x61')](config['root'],_0x3fb81d,_[_0xf255('0x62')]('default_logo.svg'));}if(!fs[_0xf255('0x5f')](_0x527eab)){throw new db[(_0xf255('0x67'))][(_0xf255('0x68'))](_['upperFirst'](_0xf255('0x55'))+_0xf255('0x69'));}return _0x4e1821[_0xf255('0x6a')](_0x527eab);}})[_0xf255('0x24')](handleError(_0x4e1821,null));};var utilLicense=require(_0xf255('0x16'));exports[_0xf255('0x6b')]=function(_0x25f231,_0x51e8ae,_0x19441a){var _0x20803c=_0xf255('0x59');var _0x462b1a={'custom':![]};return utilLicense[_0xf255('0x5a')]()['then'](function(_0x2648ab){if(_0x2648ab){_0x462b1a=_0x2648ab;}return db['Setting'][_0xf255('0x4f')]({'where':{'id':_0x25f231[_0xf255('0x51')]['id']},'attributes':[_0xf255('0x55'),'loginLogo',_0xf255('0x5b'),_0xf255('0x6c'),_0xf255('0x5c'),_0xf255('0x5d'),_0xf255('0x5e'),_0xf255('0x6d')],'raw':!![]});})[_0xf255('0x1b')](handleEntityNotFound(_0x51e8ae,null))[_0xf255('0x1b')](function(_0x55d250){if(_0x55d250){var _0x2f1cdd=_0x55d250[_0xf255('0x57')]&&fs[_0xf255('0x5f')](path[_0xf255('0x61')](config['root'],_0x20803c,_['toLower'](_0x55d250['loginLogo'])))?path[_0xf255('0x61')](config['root'],_0x20803c,_['toLower'](_0x55d250[_0xf255('0x57')])):path['join'](config['root'],_0x20803c,_[_0xf255('0x62')]('default_loginLogo.svg'));var _0x2b013f=_0xf255('0x64')+_[_0xf255('0x65')](_0xf255('0x57'));if(_0x55d250[_0x2b013f]||!_0x462b1a['custom']){_0x2f1cdd=path['join'](config['root'],_0x20803c,_['toLower'](_0xf255('0x6e')));}if(!fs[_0xf255('0x5f')](_0x2f1cdd)){throw new db[(_0xf255('0x67'))][(_0xf255('0x68'))](_[_0xf255('0x65')]('loginLogo')+'\x20not\x20found');}return _0x51e8ae[_0xf255('0x6a')](_0x2f1cdd);}})['catch'](handleError(_0x51e8ae,null));};exports[_0xf255('0x6f')]=function(_0x54fe2d,_0x12881d){return db['Setting'][_0xf255('0x4f')]({'where':{'id':_0x54fe2d['params']['id']},'attributes':['securePassword']})[_0xf255('0x1b')](respondWithResult(_0x12881d,null))[_0xf255('0x24')](handleError(_0x12881d,null));};exports[_0xf255('0x70')]=function(_0x36c5d9,_0x18c63d,_0x2bd1f9){if(_0x36c5d9[_0xf255('0x53')]&&_0x36c5d9[_0xf255('0x53')][_0xf255('0x54')]){_0x36c5d9[_0xf255('0x50')][_0xf255('0x5b')]=_0x36c5d9[_0xf255('0x53')][_0xf255('0x54')];}return db[_0xf255('0x37')][_0xf255('0x4f')]({'where':{'id':_0x36c5d9['params']['id']}})[_0xf255('0x1b')](handleEntityNotFound(_0x18c63d,null))[_0xf255('0x1b')](saveUpdates(_0x36c5d9[_0xf255('0x50')],null))[_0xf255('0x1b')](respondWithResult(_0x18c63d,null))[_0xf255('0x24')](handleError(_0x18c63d,null));};var utilLicense=require(_0xf255('0x16'));exports['getPreferred']=function(_0x549c04,_0x351610,_0xfcb0a4){var _0x3b8ba4=_0xf255('0x59');var _0x5e3797={'custom':![]};return utilLicense[_0xf255('0x5a')]()[_0xf255('0x1b')](function(_0x5651ae){if(_0x5651ae){_0x5e3797=_0x5651ae;}return db['Setting'][_0xf255('0x4f')]({'where':{'id':_0x549c04[_0xf255('0x51')]['id']},'attributes':['logo',_0xf255('0x57'),_0xf255('0x5b'),_0xf255('0x6c'),_0xf255('0x5c'),_0xf255('0x5d'),_0xf255('0x5e'),_0xf255('0x6d')],'raw':!![]});})['then'](handleEntityNotFound(_0x351610,null))[_0xf255('0x1b')](function(_0xdf8742){if(_0xdf8742){var _0x19202b=_0xdf8742[_0xf255('0x5b')]&&fs[_0xf255('0x5f')](path[_0xf255('0x61')](config[_0xf255('0x60')],_0x3b8ba4,_['toLower'](_0xdf8742[_0xf255('0x5b')])))?path[_0xf255('0x61')](config['root'],_0x3b8ba4,_['toLower'](_0xdf8742[_0xf255('0x5b')])):path[_0xf255('0x61')](config['root'],_0x3b8ba4,_[_0xf255('0x62')](_0xf255('0x71')));var _0x11c7be=_0xf255('0x64')+_['upperFirst'](_0xf255('0x5b'));if(_0xdf8742[_0x11c7be]||!_0x5e3797[_0xf255('0x66')]||!_0x5e3797[_0xf255('0x5b')]){_0x19202b=path[_0xf255('0x61')](config[_0xf255('0x60')],_0x3b8ba4,_[_0xf255('0x62')]('default_preferred.png'));}if(!fs[_0xf255('0x5f')](_0x19202b)){throw new db[(_0xf255('0x67'))][(_0xf255('0x68'))](_[_0xf255('0x65')](_0xf255('0x5b'))+_0xf255('0x69'));}return _0x351610[_0xf255('0x6a')](_0x19202b);}})[_0xf255('0x24')](handleError(_0x351610,null));};exports['addFavicon']=function(_0x5bce16,_0x4950a0,_0x27a097){if(_0x5bce16[_0xf255('0x53')]&&_0x5bce16[_0xf255('0x53')][_0xf255('0x54')]){_0x5bce16['body'][_0xf255('0x6c')]=_0x5bce16[_0xf255('0x53')][_0xf255('0x54')];}return db['Setting'][_0xf255('0x4f')]({'where':{'id':_0x5bce16['params']['id']}})['then'](handleEntityNotFound(_0x4950a0,null))['then'](saveUpdates(_0x5bce16[_0xf255('0x50')],null))[_0xf255('0x1b')](respondWithResult(_0x4950a0,null))[_0xf255('0x24')](handleError(_0x4950a0,null));};var utilLicense=require(_0xf255('0x16'));exports['getFavicon']=function(_0x1d2223,_0x43ae8c,_0x3da867){var _0x1d0873='server/files/images/logos';var _0x598507={'custom':![]};return utilLicense[_0xf255('0x5a')]()['then'](function(_0x3661d8){if(_0x3661d8){_0x598507=_0x3661d8;}return db[_0xf255('0x37')][_0xf255('0x4f')]({'where':{'id':_0x1d2223['params']['id']},'attributes':[_0xf255('0x55'),_0xf255('0x57'),_0xf255('0x5b'),_0xf255('0x6c'),_0xf255('0x5c'),'defaultLoginLogo','defaultPreferred',_0xf255('0x6d')],'raw':!![]});})['then'](handleEntityNotFound(_0x43ae8c,null))[_0xf255('0x1b')](function(_0x2ece78){if(_0x2ece78){var _0x51af77=_0x2ece78['favicon']&&fs[_0xf255('0x5f')](path[_0xf255('0x61')](config['root'],_0x1d0873,_[_0xf255('0x62')](_0x2ece78[_0xf255('0x6c')])))?path[_0xf255('0x61')](config['root'],_0x1d0873,_[_0xf255('0x62')](_0x2ece78['favicon'])):path[_0xf255('0x61')](config[_0xf255('0x60')],_0x1d0873,_[_0xf255('0x62')]('default_favicon.ico'));var _0x17b78d=_0xf255('0x64')+_[_0xf255('0x65')]('favicon');if(_0x2ece78[_0x17b78d]||!_0x598507[_0xf255('0x66')]){_0x51af77=path[_0xf255('0x61')](config['root'],_0x1d0873,_[_0xf255('0x62')](_0xf255('0x72')));}if(!fs[_0xf255('0x5f')](_0x51af77)){throw new db[(_0xf255('0x67'))][(_0xf255('0x68'))](_[_0xf255('0x65')](_0xf255('0x6c'))+_0xf255('0x69'));}return _0x43ae8c[_0xf255('0x6a')](_0x51af77);}})[_0xf255('0x24')](handleError(_0x43ae8c,null));};exports['getDate']=function(_0x2e6bb3,_0x2a0b58){var _0x190ba6={'offset':moment()[_0xf255('0x73')]()};_0x190ba6[_0xf255('0x74')]=moment()[_0xf255('0x73')](_0x190ba6['offset'])[_0xf255('0x75')](_0xf255('0x76'));return _0x2a0b58['status'](0xc8)[_0xf255('0x36')](_0x190ba6);};
\ No newline at end of file
index 1cacdbf..a078ada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['settings','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports','Setting'];(function(_0xd5374c,_0x262a01){var _0x39f2a0=function(_0x366c36){while(--_0x366c36){_0xd5374c['push'](_0xd5374c['shift']());}};_0x39f2a0(++_0x262a01);}(_0x34e8,0x12c));var _0x834e=function(_0x27193c,_0x3fd98c){_0x27193c=_0x27193c-0x0;var _0x1737aa=_0x34e8[_0x27193c];return _0x1737aa;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e74=['exports','Setting','settings','lodash','../../config/logger','api','moment','path','../../config/environment','./setting.attributes'];(function(_0xbb0ce8,_0xb63549){var _0x1a1b17=function(_0x171af3){while(--_0x171af3){_0xbb0ce8['push'](_0xbb0ce8['shift']());}};_0x1a1b17(++_0xb63549);}(_0x3e74,0x175));var _0x43e7=function(_0x4cdaa6,_0x51b22a){_0x4cdaa6=_0x4cdaa6-0x0;var _0x411a72=_0x3e74[_0x4cdaa6];return _0x411a72;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a6fd5e8..2444d6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7186=['where','attributes','include','model','map','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','Setting,\x20%s,\x20%s','message','result','catch','ShowSetting','Setting','options','raw'];(function(_0x1ade38,_0x2e63f1){var _0x2afb6c=function(_0x2bd84f){while(--_0x2bd84f){_0x1ade38['push'](_0x1ade38['shift']());}};_0x2afb6c(++_0x2e63f1);}(_0x7186,0x170));var _0x6718=function(_0x381d90,_0x5871de){_0x381d90=_0x381d90-0x0;var _0x7385ec=_0x7186[_0x381d90];return _0x7385ec;};'use strict';var _=require(_0x6718('0x0'));var util=require(_0x6718('0x1'));var moment=require(_0x6718('0x2'));var BPromise=require(_0x6718('0x3'));var rs=require(_0x6718('0x4'));var fs=require('fs');var Redis=require(_0x6718('0x5'));var db=require(_0x6718('0x6'))['db'];var utils=require(_0x6718('0x7'));var logger=require(_0x6718('0x8'))('rpc');var config=require(_0x6718('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6718('0xa')][_0x6718('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2816ed,_0x34b6a4,_0x221a2d){return new BPromise(function(_0xe66ff8,_0x331169){return client[_0x6718('0xc')](_0x2816ed,_0x221a2d)[_0x6718('0xd')](function(_0x269074){logger[_0x6718('0xe')]('Setting,\x20%s,\x20%s',_0x34b6a4,_0x6718('0xf'));logger[_0x6718('0x10')](_0x6718('0x11'),_0x34b6a4,_0x6718('0xf'),JSON[_0x6718('0x12')](_0x269074));if(_0x269074[_0x6718('0x13')]){if(_0x269074[_0x6718('0x13')]['code']===0x1f4){logger[_0x6718('0x13')](_0x6718('0x14'),_0x34b6a4,_0x269074[_0x6718('0x13')]['message']);return _0x331169(_0x269074[_0x6718('0x13')]['message']);}logger['error'](_0x6718('0x14'),_0x34b6a4,_0x269074[_0x6718('0x13')][_0x6718('0x15')]);return _0xe66ff8(_0x269074['error'][_0x6718('0x15')]);}else{logger[_0x6718('0xe')](_0x6718('0x14'),_0x34b6a4,'request\x20sent');_0xe66ff8(_0x269074[_0x6718('0x16')][_0x6718('0x15')]);}})[_0x6718('0x17')](function(_0xe12b5b){logger['error'](_0x6718('0x14'),_0x34b6a4,_0xe12b5b);_0x331169(_0xe12b5b);});});}exports[_0x6718('0x18')]=function(_0x2b5159){var _0x4ebc6f=this;return new Promise(function(_0x497050,_0x211ad5){return db[_0x6718('0x19')]['find']({'raw':_0x2b5159['options']?_0x2b5159[_0x6718('0x1a')][_0x6718('0x1b')]===undefined?!![]:![]:!![],'where':_0x2b5159[_0x6718('0x1a')]?_0x2b5159[_0x6718('0x1a')][_0x6718('0x1c')]||null:null,'attributes':_0x2b5159[_0x6718('0x1a')]?_0x2b5159['options'][_0x6718('0x1d')]||null:null,'include':_0x2b5159['options']?_0x2b5159[_0x6718('0x1a')]['include']?_['map'](_0x2b5159[_0x6718('0x1a')][_0x6718('0x1e')],function(_0x371ad2){return{'model':db[_0x371ad2[_0x6718('0x1f')]],'as':_0x371ad2['as'],'attributes':_0x371ad2[_0x6718('0x1d')],'include':_0x371ad2[_0x6718('0x1e')]?_[_0x6718('0x20')](_0x371ad2[_0x6718('0x1e')],function(_0x175998){return{'model':db[_0x175998[_0x6718('0x1f')]],'as':_0x175998['as'],'attributes':_0x175998[_0x6718('0x1d')],'include':_0x175998[_0x6718('0x1e')]?_[_0x6718('0x20')](_0x175998[_0x6718('0x1e')],function(_0x41bf3e){return{'model':db[_0x41bf3e[_0x6718('0x1f')]],'as':_0x41bf3e['as'],'attributes':_0x41bf3e[_0x6718('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6718('0xd')](function(_0x1ba091){logger[_0x6718('0xe')]('ShowSetting',_0x2b5159);logger[_0x6718('0x10')]('ShowSetting',_0x2b5159,JSON[_0x6718('0x12')](_0x1ba091));_0x497050(_0x1ba091);})['catch'](function(_0x4467b3){logger['error'](_0x6718('0x18'),_0x4467b3[_0x6718('0x15')],_0x2b5159);_0x211ad5(_0x4ebc6f[_0x6718('0x13')](0x1f4,_0x4467b3[_0x6718('0x15')]));});});};
\ No newline at end of file
+var _0x441c=['catch','ShowSetting','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x3f3c46,_0x5a74c9){var _0x4aee2c=function(_0x4667ad){while(--_0x4667ad){_0x3f3c46['push'](_0x3f3c46['shift']());}};_0x4aee2c(++_0x5a74c9);}(_0x441c,0xe2));var _0xc441=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x441c[_0x5d2803];return _0xdcad2c;};'use strict';var _=require(_0xc441('0x0'));var util=require(_0xc441('0x1'));var moment=require(_0xc441('0x2'));var BPromise=require(_0xc441('0x3'));var rs=require(_0xc441('0x4'));var fs=require('fs');var Redis=require(_0xc441('0x5'));var db=require(_0xc441('0x6'))['db'];var utils=require(_0xc441('0x7'));var logger=require(_0xc441('0x8'))('rpc');var config=require(_0xc441('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xc441('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x263d50,_0x39da2f,_0x547fa7){return new BPromise(function(_0x17dc58,_0x3196ea){return client[_0xc441('0xb')](_0x263d50,_0x547fa7)[_0xc441('0xc')](function(_0x346756){logger[_0xc441('0xd')](_0xc441('0xe'),_0x39da2f,_0xc441('0xf'));logger[_0xc441('0x10')](_0xc441('0x11'),_0x39da2f,_0xc441('0xf'),JSON[_0xc441('0x12')](_0x346756));if(_0x346756[_0xc441('0x13')]){if(_0x346756[_0xc441('0x13')]['code']===0x1f4){logger[_0xc441('0x13')](_0xc441('0xe'),_0x39da2f,_0x346756[_0xc441('0x13')][_0xc441('0x14')]);return _0x3196ea(_0x346756[_0xc441('0x13')]['message']);}logger['error'](_0xc441('0xe'),_0x39da2f,_0x346756[_0xc441('0x13')][_0xc441('0x14')]);return _0x17dc58(_0x346756['error'][_0xc441('0x14')]);}else{logger[_0xc441('0xd')]('Setting,\x20%s,\x20%s',_0x39da2f,_0xc441('0xf'));_0x17dc58(_0x346756[_0xc441('0x15')][_0xc441('0x14')]);}})[_0xc441('0x16')](function(_0x3222e4){logger[_0xc441('0x13')](_0xc441('0xe'),_0x39da2f,_0x3222e4);_0x3196ea(_0x3222e4);});});}exports[_0xc441('0x17')]=function(_0x5d0e85){var _0x2fde48=this;return new Promise(function(_0x4d145b,_0x1bd7c3){return db['Setting']['find']({'raw':_0x5d0e85[_0xc441('0x18')]?_0x5d0e85['options'][_0xc441('0x19')]===undefined?!![]:![]:!![],'where':_0x5d0e85[_0xc441('0x18')]?_0x5d0e85[_0xc441('0x18')][_0xc441('0x1a')]||null:null,'attributes':_0x5d0e85[_0xc441('0x18')]?_0x5d0e85[_0xc441('0x18')][_0xc441('0x1b')]||null:null,'include':_0x5d0e85[_0xc441('0x18')]?_0x5d0e85[_0xc441('0x18')][_0xc441('0x1c')]?_[_0xc441('0x1d')](_0x5d0e85[_0xc441('0x18')][_0xc441('0x1c')],function(_0x1c696a){return{'model':db[_0x1c696a[_0xc441('0x1e')]],'as':_0x1c696a['as'],'attributes':_0x1c696a[_0xc441('0x1b')],'include':_0x1c696a[_0xc441('0x1c')]?_[_0xc441('0x1d')](_0x1c696a[_0xc441('0x1c')],function(_0xe0e9b){return{'model':db[_0xe0e9b[_0xc441('0x1e')]],'as':_0xe0e9b['as'],'attributes':_0xe0e9b['attributes'],'include':_0xe0e9b[_0xc441('0x1c')]?_[_0xc441('0x1d')](_0xe0e9b['include'],function(_0x9fe29){return{'model':db[_0x9fe29[_0xc441('0x1e')]],'as':_0x9fe29['as'],'attributes':_0x9fe29[_0xc441('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xc441('0xc')](function(_0x3b4769){logger[_0xc441('0xd')](_0xc441('0x17'),_0x5d0e85);logger[_0xc441('0x10')](_0xc441('0x17'),_0x5d0e85,JSON[_0xc441('0x12')](_0x3b4769));_0x4d145b(_0x3b4769);})[_0xc441('0x16')](function(_0x3027bc){logger[_0xc441('0x13')](_0xc441('0x17'),_0x3027bc[_0xc441('0x14')],_0x5d0e85);_0x1bd7c3(_0x2fde48[_0xc441('0x13')](0x1f4,_0x3027bc[_0xc441('0x14')]));});});};
\ No newline at end of file
index 38cf23e..52d4fe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['create','addDisposition','addAnswer','addApplications','/:id/send','send','status','addAgents','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','/:id/users','getAgents','post'];(function(_0xc447d8,_0x50476e){var _0x1b3168=function(_0x5cc8e0){while(--_0x5cc8e0){_0xc447d8['push'](_0xc447d8['shift']());}};_0x1b3168(++_0x50476e);}(_0x6aa7,0x178));var _0x76aa=function(_0x218ba6,_0x19ffc1){_0x218ba6=_0x218ba6-0x0;var _0x1cc057=_0x6aa7[_0x218ba6];return _0x1cc057;};'use strict';var multer=require(_0x76aa('0x0'));var util=require('util');var path=require(_0x76aa('0x1'));var timeout=require(_0x76aa('0x2'));var express=require(_0x76aa('0x3'));var router=express[_0x76aa('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x76aa('0x5'));var interaction=require(_0x76aa('0x6'));var config=require(_0x76aa('0x7'));var controller=require('./smsAccount.controller');router['get']('/',auth[_0x76aa('0x8')](),controller['index']);router[_0x76aa('0x9')](_0x76aa('0xa'),auth[_0x76aa('0x8')](),controller['describe']);router[_0x76aa('0x9')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller['show']);router[_0x76aa('0x9')](_0x76aa('0xc'),auth[_0x76aa('0x8')](),controller[_0x76aa('0xd')]);router[_0x76aa('0x9')](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0xf')]);router[_0x76aa('0x9')](_0x76aa('0x10'),auth['isAuthenticated'](),controller[_0x76aa('0x11')]);router['get'](_0x76aa('0x12'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x13')]);router[_0x76aa('0x9')](_0x76aa('0x14'),controller['statusGet']);router['get'](_0x76aa('0x15'),auth['isAuthenticated'](),controller[_0x76aa('0x16')]);router[_0x76aa('0x17')]('/',auth['isAuthenticated'](),controller[_0x76aa('0x18')]);router['post'](_0x76aa('0xc'),auth['isAuthenticated'](),controller[_0x76aa('0x19')]);router[_0x76aa('0x17')](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1a')]);router[_0x76aa('0x17')]('/:id/notify',controller['notify']);router[_0x76aa('0x17')](_0x76aa('0x10'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1b')]);router[_0x76aa('0x17')](_0x76aa('0x1c'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1d')]);router[_0x76aa('0x17')]('/:id/status',controller[_0x76aa('0x1e')]);router[_0x76aa('0x17')](_0x76aa('0x15'),auth['isAuthenticated'](),controller[_0x76aa('0x1f')]);router[_0x76aa('0x20')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x21')]);router[_0x76aa('0x22')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x23')]);router[_0x76aa('0x22')](_0x76aa('0xc'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x24')]);router['delete'](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x25')]);router[_0x76aa('0x22')](_0x76aa('0x15'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x26')]);module[_0x76aa('0x27')]=router;
\ No newline at end of file
+var _0x814b=['/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/send','status','addAgents','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated'];(function(_0x253946,_0x1c8d56){var _0x198cd6=function(_0x502fa3){while(--_0x502fa3){_0x253946['push'](_0x253946['shift']());}};_0x198cd6(++_0x1c8d56);}(_0x814b,0x1a2));var _0xb814=function(_0x81f000,_0x15df85){_0x81f000=_0x81f000-0x0;var _0x337aa2=_0x814b[_0x81f000];return _0x337aa2;};'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('0xa')](_0xb814('0x16'),auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0xa')](_0xb814('0x18'),controller[_0xb814('0x19')]);router[_0xb814('0xa')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router[_0xb814('0x1c')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x1e')]);router['post'](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x1f')]);router[_0xb814('0x1c')]('/:id/notify',controller['notify']);router['post'](_0xb814('0x14'),auth['isAuthenticated'](),controller['addApplications']);router[_0xb814('0x1c')](_0xb814('0x20'),auth[_0xb814('0xb')](),controller['send']);router[_0xb814('0x1c')]('/:id/status',controller[_0xb814('0x21')]);router[_0xb814('0x1c')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x22')]);router[_0xb814('0x23')](_0xb814('0xe'),auth['isAuthenticated'](),controller[_0xb814('0x24')]);router['delete'](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x25')]);router[_0xb814('0x26')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x27')]);router['delete'](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x28')]);router[_0xb814('0x26')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x29')]);module[_0xb814('0x2a')]=router;
\ No newline at end of file
index de3033c..f27618b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb795=['clickatell','bandwidth','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','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring','STRING','name','ENUM','skebby','plivo'];(function(_0x13fdb1,_0x1c6fba){var _0x55f710=function(_0x3b0f2b){while(--_0x3b0f2b){_0x13fdb1['push'](_0x13fdb1['shift']());}};_0x55f710(++_0x1c6fba);}(_0xb795,0x1b3));var _0x5b79=function(_0x581cad,_0x355b2e){_0x581cad=_0x581cad-0x0;var _0x1a9f4b=_0xb795[_0x581cad];return _0x1a9f4b;};'use strict';var Sequelize=require(_0x5b79('0x0'));var rs=require(_0x5b79('0x1'));module['exports']={'name':{'type':Sequelize[_0x5b79('0x2')],'unique':_0x5b79('0x3'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x5b79('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x5b79('0x2')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x5b79('0x2')]},'type':{'type':Sequelize[_0x5b79('0x4')]('twilio',_0x5b79('0x5'),'connectel','clicksend',_0x5b79('0x6'),_0x5b79('0x7'),_0x5b79('0x8'),'csc',_0x5b79('0x9'),'intelepeer')},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x5b79('0x2')]},'smsMethod':{'type':Sequelize[_0x5b79('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0x5b79('0x2')]},'password':{'type':Sequelize[_0x5b79('0x2')]},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0x5b79('0x2')]},'accountId':{'type':Sequelize[_0x5b79('0x2')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize[_0x5b79('0xa')],'defaultValue':![]},'description':{'type':Sequelize[_0x5b79('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x5b79('0xb');}},'notificationSound':{'type':Sequelize[_0x5b79('0xa')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x5b79('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x5b79('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x5b79('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5b79('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5b79('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5b79('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x5b79('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5b79('0xc')],'comment':_0x5b79('0xd')},'mandatoryDisposition':{'type':Sequelize[_0x5b79('0xa')],'defaultValue':![],'comment':_0x5b79('0xe'),'set':function(_0x3fbe40){if(!_0x3fbe40)this[_0x5b79('0xf')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0x5b79('0x10'),_0x3fbe40);}}};
\ No newline at end of file
+var _0xbcbd=['INTEGER','setDataValue','mandatoryDispositionPauseId','sequelize','exports','STRING','name','twilio','skebby','connectel','clicksend','clickatell','bandwidth','csc','intelepeer','BOOLEAN','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x2b6303,_0xcce0f2){var _0x1f8cf9=function(_0x475329){while(--_0x475329){_0x2b6303['push'](_0x2b6303['shift']());}};_0x1f8cf9(++_0xcce0f2);}(_0xbcbd,0x7a));var _0xdbcb=function(_0x5f2098,_0x47308b){_0x5f2098=_0x5f2098-0x0;var _0x18af32=_0xbcbd[_0x5f2098];return _0x18af32;};'use strict';var Sequelize=require(_0xdbcb('0x0'));var rs=require('randomstring');module[_0xdbcb('0x1')]={'name':{'type':Sequelize[_0xdbcb('0x2')],'unique':_0xdbcb('0x3'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0xdbcb('0x2')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0xdbcb('0x4'),_0xdbcb('0x5'),_0xdbcb('0x6'),_0xdbcb('0x7'),'plivo',_0xdbcb('0x8'),_0xdbcb('0x9'),_0xdbcb('0xa'),'infobip',_0xdbcb('0xb'))},'accountSid':{'type':Sequelize[_0xdbcb('0x2')]},'authId':{'type':Sequelize[_0xdbcb('0x2')]},'authToken':{'type':Sequelize[_0xdbcb('0x2')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize[_0xdbcb('0x2')]},'password':{'type':Sequelize[_0xdbcb('0x2')]},'apiKey':{'type':Sequelize[_0xdbcb('0x2')]},'applicationId':{'type':Sequelize[_0xdbcb('0x2')]},'accountId':{'type':Sequelize[_0xdbcb('0x2')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize[_0xdbcb('0xc')],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xdbcb('0xd');}},'notificationSound':{'type':Sequelize[_0xdbcb('0xc')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xdbcb('0xc')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xdbcb('0xc')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xdbcb('0xc')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xdbcb('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xdbcb('0xe')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xdbcb('0xc')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1b615e){if(!_0x1b615e)this[_0xdbcb('0xf')](_0xdbcb('0x10'),null);this[_0xdbcb('0xf')]('mandatoryDisposition',_0x1b615e);}}};
\ No newline at end of file
index 5e32ef6..33f4917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ecd=['get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','mandatoryDispositionPause','describe','SmsAccountId','Disposition','findOne','nolimit','filter','options','removeDispositions','CannedAnswer','sort','removeAnswers','sms','SmsApplication','Applications','account','applications','orderBy','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','type','twilio','Body','messageId','MessageSid','skebby','from','sender','text','connectel','clicksend','plivo','From','Text','results','csc','segmentedMessage','clickatell','fromNumber','replyMessageId','intelepeer','refid','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','Sequelize','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','DESC','list','omit','contact','SmsInteraction','spread','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','ContactId','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','debug','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','bulkCreate','findAndCountAll','priority','getApplications','Owner','fullname','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','defaults','out','SmsMessage','Messages','dataValues','inspect','skebby_dispatch_id','requestid','statusInt','message_id','status_code','infobip','groupName','DELIVERED','bandwidth','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','received\x20delivery\x20report\x20from','state','message-id','ids','emit','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','SmsAccounts','UserProfileResource','stack','name','send','Pause','map','SmsAccount','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','pick','where','merge','includeAll','include','findAll','rows','show','params','keys','find','create','user'];(function(_0x4ddc67,_0x2c7f2d){var _0x3f5764=function(_0x10ac1c){while(--_0x10ac1c){_0x4ddc67['push'](_0x4ddc67['shift']());}};_0x3f5764(++_0x2c7f2d);}(_0x2ecd,0x176));var _0xd2ec=function(_0x51f173,_0x40e188){_0x51f173=_0x51f173-0x0;var _0xf9cb3b=_0x2ecd[_0x51f173];return _0xf9cb3b;};'use strict';var emlformat=require(_0xd2ec('0x0'));var rimraf=require(_0xd2ec('0x1'));var zipdir=require(_0xd2ec('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd2ec('0x3'));var moment=require(_0xd2ec('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd2ec('0x5'));var util=require(_0xd2ec('0x6'));var path=require(_0xd2ec('0x7'));var sox=require(_0xd2ec('0x8'));var csv=require('to-csv');var ejs=require(_0xd2ec('0x9'));var fs=require('fs');var fs_extra=require(_0xd2ec('0xa'));var _=require(_0xd2ec('0xb'));var squel=require(_0xd2ec('0xc'));var crypto=require(_0xd2ec('0xd'));var jsforce=require(_0xd2ec('0xe'));var deskjs=require(_0xd2ec('0xf'));var toCsv=require(_0xd2ec('0x10'));var querystring=require(_0xd2ec('0x11'));var Papa=require(_0xd2ec('0x12'));var Redis=require('ioredis');var authService=require(_0xd2ec('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xd2ec('0x14'));var hardwareService=require(_0xd2ec('0x15'));var logger=require(_0xd2ec('0x16'))(_0xd2ec('0x17'));var utils=require(_0xd2ec('0x18'));var config=require(_0xd2ec('0x19'));var licenseUtil=require(_0xd2ec('0x1a'));var db=require(_0xd2ec('0x1b'))['db'];config['redis']=_['defaults'](config[_0xd2ec('0x1c')],{'host':_0xd2ec('0x1d'),'port':0x18eb});var socket=require(_0xd2ec('0x1e'))(new Redis(config[_0xd2ec('0x1c')]));require(_0xd2ec('0x1f'))[_0xd2ec('0x20')](socket);var jayson=require(_0xd2ec('0x21'));var client=jayson[_0xd2ec('0x22')][_0xd2ec('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x337d40,_0x53937a,_0x3d653c,_0x28dd92){return new BPromise(function(_0x21c9d8,_0x57a1e1){var _0x1ac21c=_0x28dd92||client;return _0x1ac21c[_0xd2ec('0x24')](_0x337d40,_0x3d653c)[_0xd2ec('0x25')](function(_0x23c009){logger[_0xd2ec('0x26')](_0xd2ec('0x27'),_0x53937a,_0xd2ec('0x28'));logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x53937a,'request\x20sent',JSON[_0xd2ec('0x29')](_0x23c009));if(_0x23c009[_0xd2ec('0x2a')]){if(_0x23c009[_0xd2ec('0x2a')][_0xd2ec('0x2b')]===0x1f4){logger[_0xd2ec('0x2a')](_0xd2ec('0x27'),_0x53937a,_0x23c009[_0xd2ec('0x2a')]['message']);return _0x57a1e1(_0x23c009['error'][_0xd2ec('0x2c')]);}logger['error'](_0xd2ec('0x27'),_0x53937a,_0x23c009['error'][_0xd2ec('0x2c')]);return _0x21c9d8(_0x23c009[_0xd2ec('0x2a')][_0xd2ec('0x2c')]);}else{logger[_0xd2ec('0x26')]('SmsAccount,\x20%s,\x20%s',_0x53937a,_0xd2ec('0x28'));_0x21c9d8(_0x23c009[_0xd2ec('0x2d')][_0xd2ec('0x2c')]);}})[_0xd2ec('0x2e')](function(_0x3a5c83){logger[_0xd2ec('0x2a')]('SmsAccount,\x20%s,\x20%s',_0x53937a,_0x3a5c83);_0x57a1e1(_0x3a5c83);});});}function respondWithStatusCode(_0x11a6b1,_0x25698e){_0x25698e=_0x25698e||0xcc;return function(_0x427586){if(_0x427586){return _0x11a6b1[_0xd2ec('0x2f')](_0x25698e);}return _0x11a6b1[_0xd2ec('0x30')](_0x25698e)[_0xd2ec('0x31')]();};}function respondWithResult(_0x331155,_0x2642f1){_0x2642f1=_0x2642f1||0xc8;return function(_0xa606a3){if(_0xa606a3){return _0x331155[_0xd2ec('0x30')](_0x2642f1)[_0xd2ec('0x32')](_0xa606a3);}};}function respondWithFilteredResult(_0x276064,_0x53c696){return function(_0x470d79){if(_0x470d79){var _0x46eb96=typeof _0x53c696[_0xd2ec('0x33')]===_0xd2ec('0x34')&&typeof _0x53c696[_0xd2ec('0x35')]===_0xd2ec('0x34');var _0x3da033=_0x470d79[_0xd2ec('0x36')];var _0x15754e=_0x46eb96?0x0:_0x53c696[_0xd2ec('0x33')];var _0x2ec9e0=_0x46eb96?_0x470d79['count']:_0x53c696[_0xd2ec('0x33')]+_0x53c696['limit'];var _0x165be6;if(_0x2ec9e0>=_0x3da033){_0x2ec9e0=_0x3da033;_0x165be6=0xc8;}else{_0x165be6=0xce;}_0x276064[_0xd2ec('0x30')](_0x165be6);return _0x276064[_0xd2ec('0x37')](_0xd2ec('0x38'),_0x15754e+'-'+_0x2ec9e0+'/'+_0x3da033)[_0xd2ec('0x32')](_0x470d79);}return null;};}function patchUpdates(_0x5634f4){return function(_0x487e42){try{jsonpatch[_0xd2ec('0x39')](_0x487e42,_0x5634f4,!![]);}catch(_0x7d1398){return BPromise[_0xd2ec('0x3a')](_0x7d1398);}return _0x487e42[_0xd2ec('0x3b')]();};}function saveUpdates(_0x127ef5,_0x3c05e4){return function(_0x2e53b1){if(_0x2e53b1){return _0x2e53b1[_0xd2ec('0x3c')](_0x127ef5)[_0xd2ec('0x25')](function(_0x7a95b){return _0x7a95b;});}return null;};}function removeEntity(_0x4aee3e,_0x1ade65){return function(_0x3157c1){if(_0x3157c1){return _0x3157c1[_0xd2ec('0x3d')]()[_0xd2ec('0x25')](function(){var _0x328154=_0x3157c1['get']({'plain':!![]});var _0x5d59d4=_0xd2ec('0x3e');return db[_0xd2ec('0x3f')][_0xd2ec('0x3d')]({'where':{'type':_0x5d59d4,'resourceId':_0x328154['id']}})[_0xd2ec('0x25')](function(){return _0x3157c1;});})[_0xd2ec('0x25')](function(){_0x4aee3e['status'](0xcc)[_0xd2ec('0x31')]();});}};}function handleEntityNotFound(_0x5f986,_0x5777b9){return function(_0x24acb4){if(!_0x24acb4){_0x5f986[_0xd2ec('0x2f')](0x194);}return _0x24acb4;};}function handleError(_0x3c45a1,_0x226da8){_0x226da8=_0x226da8||0x1f4;return function(_0x3ac227){logger['error'](_0x3ac227[_0xd2ec('0x40')]);if(_0x3ac227['name']){delete _0x3ac227[_0xd2ec('0x41')];}_0x3c45a1[_0xd2ec('0x30')](_0x226da8)[_0xd2ec('0x42')](_0x3ac227);};}exports['index']=function(_0x3b566e,_0x206c48){var _0x173d66={'include':[{'model':db[_0xd2ec('0x43')],'as':'mandatoryDispositionPause'}]},_0x2ef1b5={},_0xdcbcac={'count':0x0,'rows':[]};var _0x49baa6=_[_0xd2ec('0x44')](db[_0xd2ec('0x45')][_0xd2ec('0x46')],function(_0x5ce65a){return{'name':_0x5ce65a['fieldName'],'type':_0x5ce65a['type'][_0xd2ec('0x47')]};});_0x2ef1b5[_0xd2ec('0x48')]=_[_0xd2ec('0x44')](_0x49baa6,'name');_0x2ef1b5[_0xd2ec('0x49')]=_['keys'](_0x3b566e[_0xd2ec('0x49')]);_0x2ef1b5[_0xd2ec('0x4a')]=_[_0xd2ec('0x4b')](_0x2ef1b5['model'],_0x2ef1b5[_0xd2ec('0x49')]);_0x173d66[_0xd2ec('0x4c')]=_['intersection'](_0x2ef1b5[_0xd2ec('0x48')],qs['fields'](_0x3b566e[_0xd2ec('0x49')][_0xd2ec('0x4d')]));_0x173d66[_0xd2ec('0x4c')]=_0x173d66[_0xd2ec('0x4c')][_0xd2ec('0x4e')]?_0x173d66[_0xd2ec('0x4c')]:_0x2ef1b5[_0xd2ec('0x48')];if(!_0x3b566e[_0xd2ec('0x49')][_0xd2ec('0x4f')]('nolimit')){_0x173d66[_0xd2ec('0x35')]=qs[_0xd2ec('0x35')](_0x3b566e['query'][_0xd2ec('0x35')]);_0x173d66[_0xd2ec('0x33')]=qs[_0xd2ec('0x33')](_0x3b566e[_0xd2ec('0x49')][_0xd2ec('0x33')]);}_0x173d66[_0xd2ec('0x50')]=qs['sort'](_0x3b566e[_0xd2ec('0x49')]['sort']);_0x173d66['where']=qs['filters'](_[_0xd2ec('0x51')](_0x3b566e[_0xd2ec('0x49')],_0x2ef1b5[_0xd2ec('0x4a')]),_0x49baa6);if(_0x3b566e[_0xd2ec('0x49')]['filter']){_0x173d66[_0xd2ec('0x52')]=_[_0xd2ec('0x53')](_0x173d66[_0xd2ec('0x52')],{'$or':_[_0xd2ec('0x44')](_0x49baa6,function(_0xcf49e0){if(_0xcf49e0['type']!=='VIRTUAL'){var _0x4cbf25={};_0x4cbf25[_0xcf49e0[_0xd2ec('0x41')]]={'$like':'%'+_0x3b566e['query']['filter']+'%'};return _0x4cbf25;}})});}_0x173d66=_[_0xd2ec('0x53')]({},_0x173d66,_0x3b566e['options']);var _0x139506={'where':_0x173d66[_0xd2ec('0x52')]};return db[_0xd2ec('0x45')]['count'](_0x139506)[_0xd2ec('0x25')](function(_0x5f4a32){_0xdcbcac[_0xd2ec('0x36')]=_0x5f4a32;if(_0x3b566e['query'][_0xd2ec('0x54')]){_0x173d66[_0xd2ec('0x55')]=[{'all':!![]}];}return db[_0xd2ec('0x45')][_0xd2ec('0x56')](_0x173d66);})['then'](function(_0x16cadf){_0xdcbcac[_0xd2ec('0x57')]=_0x16cadf;return _0xdcbcac;})[_0xd2ec('0x25')](respondWithFilteredResult(_0x206c48,_0x173d66))[_0xd2ec('0x2e')](handleError(_0x206c48,null));};exports[_0xd2ec('0x58')]=function(_0x2eae37,_0x216b15){var _0xf0325f={'raw':![],'where':{'id':_0x2eae37[_0xd2ec('0x59')]['id']},'include':[{'model':db[_0xd2ec('0x43')],'as':'mandatoryDispositionPause'}]},_0x26415c={};_0x26415c[_0xd2ec('0x48')]=_[_0xd2ec('0x5a')](db['SmsAccount'][_0xd2ec('0x46')]);_0x26415c['query']=_[_0xd2ec('0x5a')](_0x2eae37[_0xd2ec('0x49')]);_0x26415c[_0xd2ec('0x4a')]=_[_0xd2ec('0x4b')](_0x26415c[_0xd2ec('0x48')],_0x26415c[_0xd2ec('0x49')]);_0xf0325f[_0xd2ec('0x4c')]=_['intersection'](_0x26415c[_0xd2ec('0x48')],qs['fields'](_0x2eae37[_0xd2ec('0x49')][_0xd2ec('0x4d')]));_0xf0325f[_0xd2ec('0x4c')]=_0xf0325f[_0xd2ec('0x4c')][_0xd2ec('0x4e')]?_0xf0325f[_0xd2ec('0x4c')]:_0x26415c[_0xd2ec('0x48')];if(_0x2eae37[_0xd2ec('0x49')][_0xd2ec('0x54')]){_0xf0325f[_0xd2ec('0x55')]=[{'all':!![]}];}_0xf0325f=_[_0xd2ec('0x53')]({},_0xf0325f,_0x2eae37['options']);return db[_0xd2ec('0x45')][_0xd2ec('0x5b')](_0xf0325f)[_0xd2ec('0x25')](handleEntityNotFound(_0x216b15,null))[_0xd2ec('0x25')](respondWithResult(_0x216b15,null))[_0xd2ec('0x2e')](handleError(_0x216b15,null));};exports[_0xd2ec('0x5c')]=function(_0x5df322,_0x4abf87){return db[_0xd2ec('0x45')][_0xd2ec('0x5c')](_0x5df322['body'],{})['then'](function(_0x1b1d85){var _0x4bf059=_0x5df322[_0xd2ec('0x5d')][_0xd2ec('0x5e')]({'plain':!![]});if(!_0x4bf059)throw new Error(_0xd2ec('0x5f'));if(_0x4bf059[_0xd2ec('0x60')]===_0xd2ec('0x5d')){var _0x100ea7=_0x1b1d85['get']({'plain':!![]});var _0x2bf001='SmsAccounts';return db['UserProfileSection'][_0xd2ec('0x5b')]({'where':{'name':_0x2bf001,'userProfileId':_0x4bf059[_0xd2ec('0x61')]},'raw':!![]})[_0xd2ec('0x25')](function(_0x111b05){if(_0x111b05&&_0x111b05[_0xd2ec('0x62')]===0x0){return db['UserProfileResource'][_0xd2ec('0x5c')]({'name':_0x100ea7[_0xd2ec('0x41')],'resourceId':_0x100ea7['id'],'type':_0x111b05[_0xd2ec('0x41')],'sectionId':_0x111b05['id']},{})['then'](function(){return _0x1b1d85;});}else{return _0x1b1d85;}})[_0xd2ec('0x2e')](function(_0x5c87b7){logger[_0xd2ec('0x2a')](_0xd2ec('0x63'),_0x5c87b7);throw _0x5c87b7;});}return _0x1b1d85;})['then'](respondWithResult(_0x4abf87,0xc9))[_0xd2ec('0x2e')](handleError(_0x4abf87,null));};exports[_0xd2ec('0x3c')]=function(_0x333507,_0x2140d1){if(_0x333507[_0xd2ec('0x64')]['id']){delete _0x333507[_0xd2ec('0x64')]['id'];}return db[_0xd2ec('0x45')]['find']({'where':{'id':_0x333507['params']['id']},'include':[{'model':db['Pause'],'as':_0xd2ec('0x65')}]})[_0xd2ec('0x25')](handleEntityNotFound(_0x2140d1,null))['then'](saveUpdates(_0x333507[_0xd2ec('0x64')],null))['then'](respondWithResult(_0x2140d1,null))[_0xd2ec('0x2e')](handleError(_0x2140d1,null));};exports[_0xd2ec('0x3d')]=function(_0x514300,_0x50f977){return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0x514300[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x50f977,null))[_0xd2ec('0x25')](removeEntity(_0x50f977,null))[_0xd2ec('0x2e')](handleError(_0x50f977,null));};exports[_0xd2ec('0x66')]=function(_0x3ac38e,_0x4ea762){return db[_0xd2ec('0x45')][_0xd2ec('0x66')]()[_0xd2ec('0x25')](respondWithResult(_0x4ea762,null))[_0xd2ec('0x2e')](handleError(_0x4ea762,null));};exports['addDisposition']=function(_0x3e4320,_0x283d4d,_0x1f708b){if(_0x3e4320['body']['id']){delete _0x3e4320[_0xd2ec('0x64')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x3e4320[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x283d4d,null))[_0xd2ec('0x25')](function(_0x185a8b){if(_0x185a8b){_0x3e4320[_0xd2ec('0x64')][_0xd2ec('0x67')]=_0x185a8b['id'];return db[_0xd2ec('0x68')][_0xd2ec('0x5c')](_0x3e4320['body']);}})[_0xd2ec('0x25')](respondWithResult(_0x283d4d,null))[_0xd2ec('0x2e')](handleError(_0x283d4d,null));};exports['getDispositions']=function(_0xecb61f,_0x3a7e87,_0x5d6900){var _0x224426={'raw':![],'where':{}};var _0x227a35={};var _0x103aed={'count':0x0,'rows':[]};return db['SmsAccount'][_0xd2ec('0x69')]({'where':{'id':_0xecb61f['params']['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x3a7e87,null))[_0xd2ec('0x25')](function(_0x198b8e){if(_0x198b8e){_0x227a35['model']=_['keys'](db['Disposition'][_0xd2ec('0x46')]);_0x227a35['query']=_[_0xd2ec('0x5a')](_0xecb61f[_0xd2ec('0x49')]);_0x227a35[_0xd2ec('0x4a')]=_[_0xd2ec('0x4b')](_0x227a35['model'],_0x227a35[_0xd2ec('0x49')]);_0x224426[_0xd2ec('0x4c')]=_[_0xd2ec('0x4b')](_0x227a35['model'],qs[_0xd2ec('0x4d')](_0xecb61f[_0xd2ec('0x49')]['fields']));_0x224426[_0xd2ec('0x4c')]=_0x224426[_0xd2ec('0x4c')]['length']?_0x224426[_0xd2ec('0x4c')]:_0x227a35[_0xd2ec('0x48')];if(!_0xecb61f[_0xd2ec('0x49')][_0xd2ec('0x4f')](_0xd2ec('0x6a'))){_0x224426[_0xd2ec('0x35')]=qs['limit'](_0xecb61f[_0xd2ec('0x49')]['limit']);_0x224426[_0xd2ec('0x33')]=qs[_0xd2ec('0x33')](_0xecb61f['query'][_0xd2ec('0x33')]);}_0x224426['order']=qs['sort'](_0xecb61f['query']['sort']);_0x224426['where']=qs['filters'](_[_0xd2ec('0x51')](_0xecb61f['query'],_0x227a35['filters']));_0x224426[_0xd2ec('0x52')][_0xd2ec('0x67')]=_0x198b8e['id'];if(_0xecb61f[_0xd2ec('0x49')][_0xd2ec('0x6b')]){_0x224426[_0xd2ec('0x52')]=_[_0xd2ec('0x53')](_0x224426[_0xd2ec('0x52')],{'$or':_[_0xd2ec('0x44')](_0x224426[_0xd2ec('0x4c')],function(_0x251798){var _0x4a2cb8={};_0x4a2cb8[_0x251798]={'$like':'%'+_0xecb61f[_0xd2ec('0x49')][_0xd2ec('0x6b')]+'%'};return _0x4a2cb8;})});}_0x224426=_[_0xd2ec('0x53')]({},_0x224426,_0xecb61f[_0xd2ec('0x6c')]);return db['Disposition'][_0xd2ec('0x36')]({'where':_0x224426['where']})['then'](function(_0x39554d){_0x103aed[_0xd2ec('0x36')]=_0x39554d;if(_0xecb61f[_0xd2ec('0x49')][_0xd2ec('0x54')]){_0x224426['include']=[{'all':!![]}];}return db[_0xd2ec('0x68')]['findAll'](_0x224426);})['then'](function(_0x464cb2){_0x103aed[_0xd2ec('0x57')]=_0x464cb2;return _0x103aed;});}})[_0xd2ec('0x25')](respondWithFilteredResult(_0x3a7e87,_0x224426))['catch'](handleError(_0x3a7e87,null));};exports['removeDispositions']=function(_0x11a44d,_0x2df039,_0x1e6812){return db['SmsAccount']['find']({'where':{'id':_0x11a44d[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x2df039,null))[_0xd2ec('0x25')](function(_0x345efa){if(_0x345efa){return _0x345efa[_0xd2ec('0x6d')](_0x11a44d['query']['ids']);}})[_0xd2ec('0x25')](respondWithStatusCode(_0x2df039,null))['catch'](handleError(_0x2df039,null));};exports['addAnswer']=function(_0x33edbe,_0x627566,_0x32274c){if(_0x33edbe[_0xd2ec('0x64')]['id']){delete _0x33edbe[_0xd2ec('0x64')]['id'];}return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0x33edbe['params']['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x627566,null))[_0xd2ec('0x25')](function(_0x5b12f1){if(_0x5b12f1){_0x33edbe[_0xd2ec('0x64')][_0xd2ec('0x67')]=_0x5b12f1['id'];return db[_0xd2ec('0x6e')]['create'](_0x33edbe[_0xd2ec('0x64')]);}})[_0xd2ec('0x25')](respondWithResult(_0x627566,null))[_0xd2ec('0x2e')](handleError(_0x627566,null));};exports['getAnswers']=function(_0x4fe7fc,_0x115bd0,_0x52b721){var _0x57c13c={'raw':![],'where':{}};var _0x457971={};var _0x57c3d6={'count':0x0,'rows':[]};return db[_0xd2ec('0x45')][_0xd2ec('0x69')]({'where':{'id':_0x4fe7fc[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x115bd0,null))[_0xd2ec('0x25')](function(_0x28cc10){if(_0x28cc10){_0x457971[_0xd2ec('0x48')]=_[_0xd2ec('0x5a')](db[_0xd2ec('0x6e')]['rawAttributes']);_0x457971[_0xd2ec('0x49')]=_['keys'](_0x4fe7fc[_0xd2ec('0x49')]);_0x457971[_0xd2ec('0x4a')]=_[_0xd2ec('0x4b')](_0x457971['model'],_0x457971[_0xd2ec('0x49')]);_0x57c13c['attributes']=_[_0xd2ec('0x4b')](_0x457971['model'],qs[_0xd2ec('0x4d')](_0x4fe7fc[_0xd2ec('0x49')][_0xd2ec('0x4d')]));_0x57c13c[_0xd2ec('0x4c')]=_0x57c13c[_0xd2ec('0x4c')][_0xd2ec('0x4e')]?_0x57c13c[_0xd2ec('0x4c')]:_0x457971['model'];if(!_0x4fe7fc[_0xd2ec('0x49')][_0xd2ec('0x4f')](_0xd2ec('0x6a'))){_0x57c13c['limit']=qs[_0xd2ec('0x35')](_0x4fe7fc[_0xd2ec('0x49')][_0xd2ec('0x35')]);_0x57c13c[_0xd2ec('0x33')]=qs[_0xd2ec('0x33')](_0x4fe7fc[_0xd2ec('0x49')][_0xd2ec('0x33')]);}_0x57c13c[_0xd2ec('0x50')]=qs[_0xd2ec('0x6f')](_0x4fe7fc['query'][_0xd2ec('0x6f')]);_0x57c13c[_0xd2ec('0x52')]=qs[_0xd2ec('0x4a')](_[_0xd2ec('0x51')](_0x4fe7fc[_0xd2ec('0x49')],_0x457971[_0xd2ec('0x4a')]));_0x57c13c['where'][_0xd2ec('0x67')]=_0x28cc10['id'];if(_0x4fe7fc[_0xd2ec('0x49')]['filter']){_0x57c13c[_0xd2ec('0x52')]=_[_0xd2ec('0x53')](_0x57c13c[_0xd2ec('0x52')],{'$or':_[_0xd2ec('0x44')](_0x57c13c[_0xd2ec('0x4c')],function(_0x2a34ab){var _0x174bfa={};_0x174bfa[_0x2a34ab]={'$like':'%'+_0x4fe7fc[_0xd2ec('0x49')][_0xd2ec('0x6b')]+'%'};return _0x174bfa;})});}_0x57c13c=_['merge']({},_0x57c13c,_0x4fe7fc['options']);return db['CannedAnswer'][_0xd2ec('0x36')]({'where':_0x57c13c[_0xd2ec('0x52')]})[_0xd2ec('0x25')](function(_0xb00235){_0x57c3d6[_0xd2ec('0x36')]=_0xb00235;if(_0x4fe7fc[_0xd2ec('0x49')][_0xd2ec('0x54')]){_0x57c13c[_0xd2ec('0x55')]=[{'all':!![]}];}return db['CannedAnswer'][_0xd2ec('0x56')](_0x57c13c);})[_0xd2ec('0x25')](function(_0x28052e){_0x57c3d6['rows']=_0x28052e;return _0x57c3d6;});}})[_0xd2ec('0x25')](respondWithFilteredResult(_0x115bd0,_0x57c13c))[_0xd2ec('0x2e')](handleError(_0x115bd0,null));};exports['removeAnswers']=function(_0xa26aee,_0x3f8090,_0x4f0dbf){return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0xa26aee[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x3f8090,null))[_0xd2ec('0x25')](function(_0x57c4c1){if(_0x57c4c1){return _0x57c4c1[_0xd2ec('0x70')](_0xa26aee[_0xd2ec('0x49')]['ids']);}})[_0xd2ec('0x25')](respondWithStatusCode(_0x3f8090,null))[_0xd2ec('0x2e')](handleError(_0x3f8090,null));};exports['notify']=function(_0x4f34aa,_0x4b5a95,_0x37c95d){var _0x38e927={'channel':_0xd2ec('0x71')};var _0x433101=[];var _0x7f09d9=[];var _0x4587e0={};return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0x4f34aa[_0xd2ec('0x59')]['id']},'include':[{'model':db[_0xd2ec('0x72')],'as':_0xd2ec('0x73')}]})[_0xd2ec('0x25')](handleEntityNotFound(_0x4b5a95,null))[_0xd2ec('0x25')](function(_0x300b25){_0x38e927[_0xd2ec('0x74')]=_0x300b25;_0x38e927[_0xd2ec('0x75')]=_[_0xd2ec('0x76')](_0x300b25[_0xd2ec('0x73')],['priority'],['asc']);if(_0x38e927[_0xd2ec('0x74')][_0xd2ec('0x73')]){delete _0x38e927[_0xd2ec('0x74')][_0xd2ec('0x73')];}return db[_0xd2ec('0x77')][_0xd2ec('0x66')]();})['then'](function(_0x277798){if(!_0x277798){throw new db['Sequelize'][(_0xd2ec('0x78'))](_0xd2ec('0x79'));}_0x433101=_[_0xd2ec('0x7a')](_[_0xd2ec('0x5a')](_0x277798),[_0xd2ec('0x7b'),_0xd2ec('0x7c')]);_0x7f09d9=_['difference'](_[_0xd2ec('0x5a')](_0x277798),[_0xd2ec('0x7b'),_0xd2ec('0x7c'),_0xd2ec('0x7d'),_0xd2ec('0x7e')]);_0x38e927[_0xd2ec('0x64')]={'mapKey':_0xd2ec('0x7f')};if(_0x38e927[_0xd2ec('0x74')][_0xd2ec('0x80')]){switch(_0x38e927[_0xd2ec('0x74')][_0xd2ec('0x80')]){case _0xd2ec('0x81'):_0x38e927[_0xd2ec('0x64')]['from']=_0x4f34aa[_0xd2ec('0x64')]['From'];_0x38e927['body'][_0xd2ec('0x64')]=_0x4f34aa['body'][_0xd2ec('0x82')];_0x38e927['body'][_0xd2ec('0x83')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x84')];break;case _0xd2ec('0x85'):_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')]='+'+_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x87')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x88')];break;case _0xd2ec('0x89'):_0x38e927['body'][_0xd2ec('0x86')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x86')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x2c')];break;case _0xd2ec('0x8a'):_0x38e927['body']['from']=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x86')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x64')];_0x38e927[_0xd2ec('0x64')]['messageId']=_0x4f34aa[_0xd2ec('0x64')]['message_id'];break;case _0xd2ec('0x8b'):_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')]=_0x4f34aa['body'][_0xd2ec('0x8c')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa['body'][_0xd2ec('0x8d')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x83')]=_0x4f34aa[_0xd2ec('0x64')]['MessageUUID'];break;case'infobip':_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')]='+'+_0x4f34aa[_0xd2ec('0x64')]['results'][0x0][_0xd2ec('0x86')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x8e')][0x0][_0xd2ec('0x88')];_0x38e927['body'][_0xd2ec('0x83')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x8e')][0x0]['messageId'];break;case _0xd2ec('0x8f'):_0x38e927[_0xd2ec('0x64')]['from']=_0x4f34aa['body']['originatingAddress'];_0x38e927['body']['body']=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x90')][_0xd2ec('0x2c')];break;case _0xd2ec('0x91'):_0x38e927[_0xd2ec('0x64')]['from']=_0x4f34aa['body'][_0xd2ec('0x92')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')]['text'];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x83')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x93')];break;case'bandwidth':_0x38e927['body'][_0xd2ec('0x83')]=_0x4f34aa['body'][0x0][_0xd2ec('0x2c')]['id'];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')]=_0x4f34aa[_0xd2ec('0x64')][0x0]['message']['from'];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')][0x0][_0xd2ec('0x2c')][_0xd2ec('0x88')];break;case _0xd2ec('0x94'):_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x86')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x2c')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x83')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x95')];break;}}if(_0x38e927[_0xd2ec('0x64')]['id']){delete _0x38e927['body']['id'];}if(_[_0xd2ec('0x96')](_0x38e927['body'][_0xd2ec('0x86')])){throw new db['Sequelize'][(_0xd2ec('0x78'))](_0xd2ec('0x97'));}if(_['isNil'](_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')])||_0x38e927['body'][_0xd2ec('0x64')]===''){throw new db['Sequelize'][(_0xd2ec('0x78'))](_0xd2ec('0x98'));}if(_[_0xd2ec('0x96')](_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x99')])){throw new db['Sequelize'][(_0xd2ec('0x78'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x7f09d9);}if(!_['includes'](_0x7f09d9,_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x99')])){throw new db[(_0xd2ec('0x9a'))]['ValidationError'](_0xd2ec('0x9b')+_0x7f09d9);}_0x4587e0[_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x99')]]=_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')];return db['CmList']['find']({'where':{'id':_0x38e927[_0xd2ec('0x74')][_0xd2ec('0x7e')]},'include':[{'model':db['CmContact'],'as':_0xd2ec('0x9c'),'where':_0x4587e0,'limit':0x1,'order':[['updatedAt',_0xd2ec('0x9d')]]}]});})[_0xd2ec('0x25')](handleEntityNotFound(_0x4b5a95,null))[_0xd2ec('0x25')](function(_0x5a2298){if(_0x5a2298){_0x38e927[_0xd2ec('0x9e')]=_[_0xd2ec('0x9f')](_0x5a2298,[_0xd2ec('0x9c')]);if(_0x5a2298[_0xd2ec('0x9c')][_0xd2ec('0x4e')]){return _0x5a2298[_0xd2ec('0x9c')][0x0];}var _0xb08b15=_['defaults'](_0x38e927[_0xd2ec('0x64')],{'firstName':_0x38e927[_0xd2ec('0x64')]['from'],'ListId':_0x5a2298['id']});_0xb08b15[_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x99')]]=_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')];return db[_0xd2ec('0x77')]['create'](_0xb08b15,{'fields':_0x433101,'raw':!![]});}})[_0xd2ec('0x25')](handleEntityNotFound(_0x4b5a95,null))[_0xd2ec('0x25')](function(_0x4ec6d6){if(_0x4ec6d6){_0x38e927[_0xd2ec('0xa0')]=_0x4ec6d6;var _0x1ee2f6={'ContactId':_0x4ec6d6['id'],'phone':_0x38e927['body'][_0xd2ec('0x86')],'SmsAccountId':_0x4f34aa[_0xd2ec('0x59')]['id']};var _0x428d08={'ContactId':_0x4ec6d6['id'],'SmsAccountId':_0x4f34aa[_0xd2ec('0x59')]['id'],'closed':![]};return db[_0xd2ec('0xa1')][_0xd2ec('0x5b')]({'where':_0x428d08})[_0xd2ec('0x25')](function(_0x35b2b1){if(_0x35b2b1){return[_0x35b2b1,![]];}return db[_0xd2ec('0xa1')][_0xd2ec('0x5c')](_0x1ee2f6)[_0xd2ec('0x25')](function(_0x2d088f){return[_0x2d088f,!![]];});});}})[_0xd2ec('0xa2')](function(_0x3584fb,_0x14441f){_0x38e927[_0xd2ec('0xa3')]=_0x3584fb['get']({'plain':!![]});_0x38e927[_0xd2ec('0xa3')][_0xd2ec('0xa4')]=![];if(_0x14441f){if(_0x38e927[_0xd2ec('0x74')][_0xd2ec('0xa5')]){_0x38e927[_0xd2ec('0x75')][_0xd2ec('0xa6')]({'id':0x0,'priority':_0x38e927[_0xd2ec('0x75')][_0xd2ec('0x4e')]+0x1,'app':_0xd2ec('0xa7'),'appdata':_0xd2ec('0xa8'),'interval':_0xd2ec('0xa9')});}_0x38e927['interaction'][_0xd2ec('0xa4')]=!![];}return db['SmsMessage'][_0xd2ec('0x5c')]({'phone':_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')],'messageId':_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x83')],'body':_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')],'SmsAccountId':_0x4f34aa[_0xd2ec('0x59')]['id'],'SmsInteractionId':_0x3584fb['id'],'direction':'in','ContactId':_0x3584fb[_0xd2ec('0xaa')],'AttachmentId':_0x38e927['body'][_0xd2ec('0xab')]});})[_0xd2ec('0x25')](function(_0x119111){_0x38e927[_0xd2ec('0x2c')]=_0x119111;if(_0x38e927[_0xd2ec('0xa3')][_0xd2ec('0xac')]){return db[_0xd2ec('0xad')][_0xd2ec('0x5b')]({'attributes':['id',_0xd2ec('0x41')],'where':{'id':_0x38e927[_0xd2ec('0xa3')]['UserId']}})['then'](function(_0x4eb418){if(_0x4eb418){_0x38e927[_0xd2ec('0x75')]['unshift']({'id':0x0,'priority':0x0,'app':_0xd2ec('0xae'),'appdata':_0x4eb418[_0xd2ec('0x41')]+','+(_0x38e927[_0xd2ec('0x74')][_0xd2ec('0xaf')]||0xa),'interval':_0xd2ec('0xa9')});}return respondWithRpcPromise(_0xd2ec('0xb0'),_0xd2ec('0xb1'),_0x38e927);});}return respondWithRpcPromise('Start',_0xd2ec('0xb1'),_0x38e927);})[_0xd2ec('0x25')](function(_0x39c0a2){if(_0x39c0a2){var _0x1ac082=0xc8;var _0x13ed94=_0xd2ec('0xb2');logger[_0xd2ec('0x26')](_0xd2ec('0xb3'),_0x13ed94,_0x1ac082,_0xd2ec('0xb4'));logger[_0xd2ec('0xb5')](_0xd2ec('0xb6'),_0x13ed94,_0x1ac082,_0xd2ec('0xb4'),JSON[_0xd2ec('0x29')](_0x39c0a2));if(_0x38e927[_0xd2ec('0x74')][_0xd2ec('0x80')]===_0xd2ec('0x81')){return _0x4b5a95[_0xd2ec('0x30')](_0x1ac082)['set'](_0xd2ec('0xb7'),_0xd2ec('0xb8'))[_0xd2ec('0x42')](_0xd2ec('0xb9'));}else{return _0x4b5a95[_0xd2ec('0x30')](_0x1ac082)[_0xd2ec('0x32')](_0x39c0a2);}}})[_0xd2ec('0x2e')](handleError(_0x4b5a95,null));};exports[_0xd2ec('0xba')]=function(_0x60b3aa,_0x5a23d1,_0x115787){return db[_0xd2ec('0x45')]['findOne']({'where':{'id':_0x60b3aa[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x5a23d1,null))[_0xd2ec('0x25')](function(_0x1fcfe9){if(_0x1fcfe9){return db[_0xd2ec('0xbb')][_0xd2ec('0xbc')](function(_0x188c3a){return db[_0xd2ec('0x72')][_0xd2ec('0x3d')]({'where':{'SmsAccountId':_0x60b3aa['params']['id']},'transaction':_0x188c3a})['then'](function(_0x41e72e){var _0x57eba0=_[_0xd2ec('0x44')](_0x60b3aa[_0xd2ec('0x64')],function(_0x4f0b80){_0x4f0b80[_0xd2ec('0x67')]=_0x60b3aa[_0xd2ec('0x59')]['id'];return _0x4f0b80;});return db[_0xd2ec('0x72')][_0xd2ec('0xbd')](_0x57eba0,{'transaction':_0x188c3a});});})[_0xd2ec('0x25')](function(){return db[_0xd2ec('0x72')][_0xd2ec('0xbe')]({'where':{'SmsAccountId':_0x60b3aa[_0xd2ec('0x59')]['id']},'order':_0xd2ec('0xbf')});});}})[_0xd2ec('0x25')](respondWithResult(_0x5a23d1,null))[_0xd2ec('0x2e')](handleError(_0x5a23d1,null));};exports[_0xd2ec('0xc0')]=function(_0x166dc2,_0x66813d,_0x411da9){var _0x338025={};var _0x5a0b86={};var _0x504fdc;var _0x4fa72f;return db[_0xd2ec('0x45')]['findOne']({'where':{'id':_0x166dc2[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x66813d,null))[_0xd2ec('0x25')](function(_0x55e3c6){if(_0x55e3c6){_0x504fdc=_0x55e3c6;_0x5a0b86[_0xd2ec('0x48')]=_[_0xd2ec('0x5a')](db[_0xd2ec('0x72')][_0xd2ec('0x46')]);_0x5a0b86['query']=_[_0xd2ec('0x5a')](_0x166dc2[_0xd2ec('0x49')]);_0x5a0b86[_0xd2ec('0x4a')]=_['intersection'](_0x5a0b86[_0xd2ec('0x48')],_0x5a0b86[_0xd2ec('0x49')]);_0x338025[_0xd2ec('0x4c')]=_[_0xd2ec('0x4b')](_0x5a0b86[_0xd2ec('0x48')],qs[_0xd2ec('0x4d')](_0x166dc2['query'][_0xd2ec('0x4d')]));_0x338025[_0xd2ec('0x4c')]=_0x338025[_0xd2ec('0x4c')][_0xd2ec('0x4e')]?_0x338025['attributes']:_0x5a0b86['model'];_0x338025[_0xd2ec('0x50')]=qs[_0xd2ec('0x6f')](_0x166dc2[_0xd2ec('0x49')][_0xd2ec('0x6f')]);_0x338025[_0xd2ec('0x52')]=qs[_0xd2ec('0x4a')](_[_0xd2ec('0x51')](_0x166dc2[_0xd2ec('0x49')],_0x5a0b86[_0xd2ec('0x4a')]));if(_0x166dc2[_0xd2ec('0x49')][_0xd2ec('0x6b')]){_0x338025[_0xd2ec('0x52')]=_[_0xd2ec('0x53')](_0x338025[_0xd2ec('0x52')],{'$or':_[_0xd2ec('0x44')](_0x338025['attributes'],function(_0x40198d){var _0x490d96={};_0x490d96[_0x40198d]={'$like':'%'+_0x166dc2[_0xd2ec('0x49')]['filter']+'%'};return _0x490d96;})});}_0x338025=_['merge']({},_0x338025,_0x166dc2[_0xd2ec('0x6c')]);return _0x504fdc[_0xd2ec('0xc0')](_0x338025);}})['then'](function(_0x151add){if(_0x151add){_0x4fa72f=_0x151add[_0xd2ec('0x4e')];if(!_0x166dc2['query'][_0xd2ec('0x4f')](_0xd2ec('0x6a'))){_0x338025[_0xd2ec('0x35')]=qs['limit'](_0x166dc2[_0xd2ec('0x49')][_0xd2ec('0x35')]);_0x338025['offset']=qs[_0xd2ec('0x33')](_0x166dc2['query'][_0xd2ec('0x33')]);}return _0x504fdc['getApplications'](_0x338025);}})['then'](function(_0x3a24e3){if(_0x3a24e3){return _0x3a24e3?{'count':_0x4fa72f,'rows':_0x3a24e3}:null;}})[_0xd2ec('0x25')](respondWithResult(_0x66813d,null))['catch'](handleError(_0x66813d,null));};exports['getInteractions']=function(_0x25010e,_0x362c38,_0x5c8021){var _0x13c545={'raw':![],'where':{}};var _0x589c21={};var _0x1afe09={'count':0x0,'rows':[]};return db[_0xd2ec('0x45')][_0xd2ec('0x69')]({'where':{'id':_0x25010e[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x362c38,null))[_0xd2ec('0x25')](function(_0x1a0e73){if(_0x1a0e73){_0x589c21['model']=_[_0xd2ec('0x5a')](db[_0xd2ec('0xa1')][_0xd2ec('0x46')]);_0x589c21['query']=_[_0xd2ec('0x5a')](_0x25010e[_0xd2ec('0x49')]);_0x589c21[_0xd2ec('0x4a')]=_[_0xd2ec('0x4b')](_0x589c21[_0xd2ec('0x48')],_0x589c21['query']);_0x13c545['attributes']=_[_0xd2ec('0x4b')](_0x589c21[_0xd2ec('0x48')],qs['fields'](_0x25010e[_0xd2ec('0x49')][_0xd2ec('0x4d')]));_0x13c545[_0xd2ec('0x4c')]=_0x13c545[_0xd2ec('0x4c')][_0xd2ec('0x4e')]?_0x13c545[_0xd2ec('0x4c')]:_0x589c21[_0xd2ec('0x48')];if(!_0x25010e[_0xd2ec('0x49')][_0xd2ec('0x4f')](_0xd2ec('0x6a'))){_0x13c545[_0xd2ec('0x35')]=qs[_0xd2ec('0x35')](_0x25010e[_0xd2ec('0x49')]['limit']);_0x13c545[_0xd2ec('0x33')]=qs[_0xd2ec('0x33')](_0x25010e[_0xd2ec('0x49')][_0xd2ec('0x33')]);}_0x13c545[_0xd2ec('0x50')]=qs[_0xd2ec('0x6f')](_0x25010e['query'][_0xd2ec('0x6f')]);_0x13c545['where']=qs[_0xd2ec('0x4a')](_[_0xd2ec('0x51')](_0x25010e['query'],_0x589c21['filters']));_0x13c545['where'][_0xd2ec('0x67')]=_0x1a0e73['id'];if(_0x25010e[_0xd2ec('0x49')][_0xd2ec('0x6b')]){_0x13c545['where']=_[_0xd2ec('0x53')](_0x13c545[_0xd2ec('0x52')],{'$or':_[_0xd2ec('0x44')](_0x13c545[_0xd2ec('0x4c')],function(_0x1493cc){var _0x352c29={};_0x352c29[_0x1493cc]={'$like':'%'+_0x25010e[_0xd2ec('0x49')][_0xd2ec('0x6b')]+'%'};return _0x352c29;})});}_0x13c545=_[_0xd2ec('0x53')]({},_0x13c545,_0x25010e[_0xd2ec('0x6c')]);return db[_0xd2ec('0xa1')][_0xd2ec('0x36')]({'where':_0x13c545[_0xd2ec('0x52')]})[_0xd2ec('0x25')](function(_0x5f0941){_0x1afe09[_0xd2ec('0x36')]=_0x5f0941;if(_0x25010e[_0xd2ec('0x49')][_0xd2ec('0x54')]){_0x13c545[_0xd2ec('0x55')]=[{'model':db[_0xd2ec('0x77')],'as':'Contact','required':![]},{'model':db[_0xd2ec('0xad')],'as':_0xd2ec('0xc1'),'attributes':[_0xd2ec('0x41'),_0xd2ec('0xc2'),_0xd2ec('0xc3')],'required':![]},{'model':db[_0xd2ec('0xc4')],'as':_0xd2ec('0xc5'),'attributes':['id',_0xd2ec('0x41'),_0xd2ec('0xc6')],'where':_0x25010e[_0xd2ec('0x49')][_0xd2ec('0xc7')]?{'id':_0x25010e[_0xd2ec('0x49')]['tag']}:undefined,'required':_0x25010e['query']['tag']?!![]:![]}];}return db[_0xd2ec('0xa1')][_0xd2ec('0x56')](_0x13c545);})[_0xd2ec('0x25')](function(_0x20f5db){_0x1afe09['rows']=_0x20f5db;return _0x1afe09;});}})[_0xd2ec('0x25')](respondWithFilteredResult(_0x362c38,_0x13c545))[_0xd2ec('0x2e')](handleError(_0x362c38,null));};exports['send']=function(_0x48edfb,_0xbbed16,_0x5f18eb){var _0x18d845,_0x170e74,_0xbe7286;if(_[_0xd2ec('0x96')](_0x48edfb[_0xd2ec('0x64')][_0xd2ec('0x64')])||_0x48edfb[_0xd2ec('0x64')]['body']===''){throw new db[(_0xd2ec('0x9a'))][(_0xd2ec('0x78'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x48edfb[_0xd2ec('0x64')]['to'])){throw new db[(_0xd2ec('0x9a'))][(_0xd2ec('0x78'))](_0xd2ec('0xc8'));}_0x18d845=_0x48edfb['body']['to'];return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0x48edfb[_0xd2ec('0x59')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xd2ec('0x77')],'as':_0xd2ec('0x9c'),'where':{'mobile':_0x18d845},'limit':0x1,'order':[[_0xd2ec('0x7c'),_0xd2ec('0x9d')]]}]}]})['then'](handleEntityNotFound(_0xbbed16,null))[_0xd2ec('0x25')](function(_0x4ccf30){if(_0x4ccf30&&_0x4ccf30[_0xd2ec('0xc9')]){_0x170e74=_0x4ccf30[_0xd2ec('0x5e')]({'plain':!![]});if(_0x170e74[_0xd2ec('0xc9')]&&_0x170e74[_0xd2ec('0xc9')][_0xd2ec('0x9c')]['length']){return _0x170e74['List'][_0xd2ec('0x9c')][0x0];}return db[_0xd2ec('0x77')][_0xd2ec('0x5c')](_[_0xd2ec('0xca')](_0x48edfb[_0xd2ec('0x64')],{'firstName':_0x18d845,'mobile':_0x18d845,'phone':_0x18d845,'ListId':_0x170e74['ListId']}));}})[_0xd2ec('0x25')](handleEntityNotFound(_0xbbed16,null))[_0xd2ec('0x25')](function(_0x281f58){if(_0x281f58){_0xbe7286=_0x281f58;return db[_0xd2ec('0xa1')][_0xd2ec('0x5b')]({'where':{'ContactId':_0xbe7286['id'],'closed':![],'SmsAccountId':_0x170e74['id']}})[_0xd2ec('0x25')](function(_0x525631){if(_0x525631){return[_0x525631,![]];}return db[_0xd2ec('0xa1')][_0xd2ec('0x5c')]({'UserId':_0x48edfb[_0xd2ec('0x5d')]['id'],'ContactId':_0xbe7286['id'],'SmsAccountId':_0x170e74['id'],'phone':_0x18d845,'firstMsgDirection':_0xd2ec('0xcb'),'Messages':[_['merge'](_0x48edfb[_0xd2ec('0x64')],{'read':![],'body':_0x48edfb[_0xd2ec('0x64')][_0xd2ec('0x64')],'phone':_0x18d845,'SmsAccountId':_0x170e74['id'],'UserId':_0x48edfb['user']['id'],'ContactId':_0xbe7286['id']})]},{'include':[{'model':db[_0xd2ec('0xcc')],'as':_0xd2ec('0xcd')}]})['then'](function(_0x2b014d){return[_0x2b014d,!![]];});});}})[_0xd2ec('0xa2')](function(_0x449aae,_0x5961db){if(_0x5961db){return _0x449aae;}return db[_0xd2ec('0xcc')][_0xd2ec('0x5c')](_['merge'](_0x48edfb['body'],{'read':![],'body':_0x48edfb[_0xd2ec('0x64')][_0xd2ec('0x64')],'phone':_0x18d845,'SmsAccountId':_0x170e74['id'],'SmsInteractionId':_0x449aae['id'],'UserId':_0x48edfb[_0xd2ec('0x5d')]['id'],'ContactId':_0xbe7286['id']}))[_0xd2ec('0x25')](function(_0x56bab8){_0x449aae[_0xd2ec('0xce')][_0xd2ec('0xcd')]=[];_0x449aae['dataValues'][_0xd2ec('0xcd')][_0xd2ec('0xa6')](_0x56bab8[_0xd2ec('0xce')]);return _0x449aae;});})['then'](respondWithResult(_0xbbed16,null))['catch'](handleError(_0xbbed16,null));};exports[_0xd2ec('0x30')]=function(_0x219eb0,_0x26a607,_0x13db68){if(_0x219eb0[_0xd2ec('0x64')]['id']){delete _0x219eb0[_0xd2ec('0x64')]['id'];}var _0x5f6a0d,_0x351add,_0x419afb;return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0x219eb0[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x26a607,null))[_0xd2ec('0x25')](function(_0x170ba5){if(_0x170ba5){_0x419afb=_0x170ba5;logger[_0xd2ec('0xb5')](_0xd2ec('0xb3'),_0xd2ec('0x30'),'received\x20delivery\x20report\x20from',_0x170ba5['type'],util[_0xd2ec('0xcf')](_0x219eb0[_0xd2ec('0x64')],{'showHidden':![],'depth':null}));switch(_0x170ba5[_0xd2ec('0x80')]){case _0xd2ec('0x85'):if(_0x219eb0['body'][_0xd2ec('0xd0')]&&_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0x30')]){_0x351add=_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0x30')];return db[_0xd2ec('0xcc')][_0xd2ec('0x5b')]({'where':{'messageId':_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd0')]}});}break;case'connectel':if(_0x219eb0['body'][_0xd2ec('0xd1')]&&_0x219eb0[_0xd2ec('0x64')]['statusInt']){_0x351add=_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd2')];return db[_0xd2ec('0xcc')][_0xd2ec('0x5b')]({'where':{'messageId':_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd1')]}});}break;case _0xd2ec('0x8a'):if(_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd3')]&&_0x219eb0['body']['status_code']){_0x351add=_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd4')];return db['SmsMessage']['find']({'where':{'messageId':_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd3')]}});}break;case _0xd2ec('0xd5'):var _0x36e369=_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0x8e')][0x0];if(_0x36e369[_0xd2ec('0x83')]&&_0x36e369[_0xd2ec('0x30')][_0xd2ec('0xd6')]===_0xd2ec('0xd7')){_0x351add=_0x36e369[_0xd2ec('0x30')]['groupName'];return db[_0xd2ec('0xcc')][_0xd2ec('0x5b')]({'where':{'messageId':_0x36e369[_0xd2ec('0x83')]}});}break;case _0xd2ec('0x91'):if(_0x219eb0['body']['messageId']&&_0x219eb0['body'][_0xd2ec('0x30')]){_0x351add=_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0x30')];return db['SmsMessage'][_0xd2ec('0x5b')]({'where':{'messageId':_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0x83')]}});}break;case _0xd2ec('0xd8'):if(_0x219eb0['body'][0x0][_0xd2ec('0x2c')]['id']){_0x351add=_0x219eb0[_0xd2ec('0x64')][0x0][_0xd2ec('0x80')];return db[_0xd2ec('0xcc')][_0xd2ec('0x5b')]({'where':{'messageId':_0x219eb0['body'][0x0][_0xd2ec('0x2c')]['id']}});}break;case _0xd2ec('0x94'):if(_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd9')]&&_0x219eb0[_0xd2ec('0x64')]['status']){_0x351add=_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0x30')];return db[_0xd2ec('0xcc')][_0xd2ec('0x5b')]({'where':{'messageId':_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd9')]}});}break;}}})[_0xd2ec('0x25')](handleEntityNotFound(_0x26a607,null))[_0xd2ec('0x25')](function(_0x3ee6d3){if(_0x3ee6d3){_0x5f6a0d=_0x3ee6d3;switch(_0x419afb[_0xd2ec('0x80')]){case _0xd2ec('0x85'):if(_0x351add==='DELIVERED'){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger['error'](_0xd2ec('0xb3'),_0xd2ec('0x30'),'skebby',util[_0xd2ec('0xcf')](_0x219eb0['body'],{'showHidden':![],'depth':null}));}break;case _0xd2ec('0x89'):if(_0x351add==='1'){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger[_0xd2ec('0x2a')](_0xd2ec('0xb3'),'status',_0xd2ec('0x85'),util[_0xd2ec('0xcf')](_0x219eb0['body'],{'showHidden':![],'depth':null}));}break;case _0xd2ec('0x8a'):if(!_0x219eb0['body'][_0xd2ec('0xda')]&&_0x351add>=0xc8&&_0x351add<=0xce){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger['error'](_0xd2ec('0xb3'),_0xd2ec('0x30'),'clicksend',util[_0xd2ec('0xcf')](_0x219eb0[_0xd2ec('0x64')],{'showHidden':![],'depth':null}));}break;case _0xd2ec('0xd5'):var _0x38f894=_0x219eb0['body'][_0xd2ec('0x8e')][0x0];if(_0x38f894[_0xd2ec('0x30')][_0xd2ec('0xd6')]===_0xd2ec('0xd7')){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger[_0xd2ec('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xd2ec('0xd5'),util['inspect'](_0x219eb0['body'],{'showHidden':![],'depth':null}));}break;case _0xd2ec('0x91'):if(_0x351add==_0xd2ec('0xdb')||_0x351add==_0xd2ec('0xdc')){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger[_0xd2ec('0x2a')](_0xd2ec('0xb3'),_0xd2ec('0x30'),'clickatell',util[_0xd2ec('0xcf')](_0x219eb0['body'],{'showHidden':![],'depth':null}));}break;case _0xd2ec('0xd8'):if(_0x351add==_0xd2ec('0xdd')){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger[_0xd2ec('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xd2ec('0xd8'),util['inspect'](_0x219eb0[_0xd2ec('0x64')],{'showHidden':![],'depth':null}));}break;case _0xd2ec('0x94'):if(_0x351add===_0xd2ec('0xde')||_0x351add===_0xd2ec('0xdf')){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger[_0xd2ec('0x2a')](_0xd2ec('0xb3'),_0xd2ec('0x30'),_0xd2ec('0x94'),util['inspect'](_0x219eb0[_0xd2ec('0x64')],{'showHidden':![],'depth':null}));}break;}return _0x5f6a0d;}})['then'](respondWithResult(_0x26a607,null))['catch'](handleError(_0x26a607,null));};exports[_0xd2ec('0xe0')]=function(_0x461370,_0x2adad7,_0x52d228){var _0xe26af8,_0x791d2a,_0x1bc8df;return db[_0xd2ec('0x45')]['find']({'where':{'id':_0x461370['params']['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x2adad7,null))[_0xd2ec('0x25')](function(_0x23c002){if(_0x23c002){_0x1bc8df=_0x23c002;logger['debug'](_0xd2ec('0xb3'),_0xd2ec('0x30'),_0xd2ec('0xe1'),_0x23c002[_0xd2ec('0x80')],util['inspect'](_0x461370['query'],{'showHidden':![],'depth':null}));switch(_0x23c002[_0xd2ec('0x80')]){case _0xd2ec('0x8f'):if(_0x461370[_0xd2ec('0x49')]['message-id']&&_0x461370[_0xd2ec('0x49')][_0xd2ec('0xe2')]){_0x791d2a=_0x461370[_0xd2ec('0x49')][_0xd2ec('0xe2')];return db[_0xd2ec('0xcc')][_0xd2ec('0x5b')]({'where':{'messageId':_0x461370[_0xd2ec('0x49')][_0xd2ec('0xe3')]}});}break;}}})[_0xd2ec('0x25')](handleEntityNotFound(_0x2adad7,null))['then'](function(_0x503e3a){if(_0x503e3a){_0xe26af8=_0x503e3a;switch(_0x1bc8df[_0xd2ec('0x80')]){case'csc':if(_0x791d2a==='2'||_0x791d2a==='6'){return _0xe26af8['update']({'read':!![]});}else{logger[_0xd2ec('0x2a')](_0xd2ec('0xb3'),_0xd2ec('0x30'),_0xd2ec('0x8f'),util['inspect'](_0x461370[_0xd2ec('0x49')],{'showHidden':![],'depth':null}));};break;}return _0xe26af8;}})[_0xd2ec('0x25')](respondWithResult(_0x2adad7,null))[_0xd2ec('0x2e')](handleError(_0x2adad7,null));};exports['addAgents']=function(_0x53ab5e,_0x39fd46,_0x5cd43d){return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0x53ab5e[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x39fd46,null))[_0xd2ec('0x25')](function(_0x46dea4){if(_0x46dea4){return _0x46dea4['addAgents'](_0x53ab5e['body']['ids'],_['omit'](_0x53ab5e['body'],[_0xd2ec('0xe4'),'id'])||{})[_0xd2ec('0xa2')](function(_0x59573e){for(var _0x44c1ad=0x0;_0x44c1ad<_0x53ab5e[_0xd2ec('0x64')][_0xd2ec('0xe4')][_0xd2ec('0x4e')];_0x44c1ad+=0x1){socket[_0xd2ec('0xe5')]('userSmsAccount:save',{'UserId':Number(_0x53ab5e['body'][_0xd2ec('0xe4')][_0x44c1ad]),'SmsAccountId':Number(_0x53ab5e[_0xd2ec('0x59')]['id'])});}return _0x59573e;});}})[_0xd2ec('0x25')](respondWithResult(_0x39fd46,null))[_0xd2ec('0x2e')](handleError(_0x39fd46,null));};exports[_0xd2ec('0xe6')]=function(_0xa7631a,_0x5be869,_0x46ace2){return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0xa7631a[_0xd2ec('0x59')]['id']}})['then'](handleEntityNotFound(_0x5be869,null))[_0xd2ec('0x25')](function(_0x4d079b){if(_0x4d079b){return _0x4d079b[_0xd2ec('0xe6')](_0xa7631a[_0xd2ec('0x49')][_0xd2ec('0xe4')])[_0xd2ec('0x25')](function(){if(_[_0xd2ec('0xe7')](_0xa7631a[_0xd2ec('0x49')][_0xd2ec('0xe4')])){for(var _0x5ac87c=0x0;_0x5ac87c<_0xa7631a[_0xd2ec('0x49')]['ids'][_0xd2ec('0x4e')];_0x5ac87c+=0x1){socket[_0xd2ec('0xe5')](_0xd2ec('0xe8'),{'UserId':Number(_0xa7631a[_0xd2ec('0x49')]['ids'][_0x5ac87c]),'SmsAccountId':Number(_0xa7631a[_0xd2ec('0x59')]['id'])});}}else{socket[_0xd2ec('0xe5')]('userSmsAccount:remove',{'UserId':Number(_0xa7631a[_0xd2ec('0x49')][_0xd2ec('0xe4')]),'SmsAccountId':Number(_0xa7631a[_0xd2ec('0x59')]['id'])});}});}})[_0xd2ec('0x25')](respondWithStatusCode(_0x5be869,null))[_0xd2ec('0x2e')](handleError(_0x5be869,null));};exports[_0xd2ec('0xe9')]=function(_0x450106,_0x41772e,_0x223d0d){var _0x4b7cb6={};var _0x4de7c8={};var _0x427635;var _0x377483;return db[_0xd2ec('0x45')][_0xd2ec('0x69')]({'where':{'id':_0x450106[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x41772e,null))['then'](function(_0x3f2c1a){if(_0x3f2c1a){_0x427635=_0x3f2c1a;_0x4de7c8[_0xd2ec('0x48')]=_['keys'](db[_0xd2ec('0xad')]['rawAttributes']);_0x4de7c8['query']=_[_0xd2ec('0x5a')](_0x450106[_0xd2ec('0x49')]);_0x4de7c8[_0xd2ec('0x4a')]=_['intersection'](_0x4de7c8[_0xd2ec('0x48')],_0x4de7c8[_0xd2ec('0x49')]);_0x4b7cb6[_0xd2ec('0x4c')]=_[_0xd2ec('0x4b')](_0x4de7c8[_0xd2ec('0x48')],qs[_0xd2ec('0x4d')](_0x450106[_0xd2ec('0x49')][_0xd2ec('0x4d')]));_0x4b7cb6['attributes']=_0x4b7cb6[_0xd2ec('0x4c')][_0xd2ec('0x4e')]?_0x4b7cb6['attributes']:_0x4de7c8[_0xd2ec('0x48')];_0x4b7cb6[_0xd2ec('0x50')]=qs[_0xd2ec('0x6f')](_0x450106[_0xd2ec('0x49')]['sort']);_0x4b7cb6[_0xd2ec('0x52')]=qs[_0xd2ec('0x4a')](_[_0xd2ec('0x51')](_0x450106[_0xd2ec('0x49')],_0x4de7c8[_0xd2ec('0x4a')]));if(_0x450106[_0xd2ec('0x49')]['filter']){_0x4b7cb6[_0xd2ec('0x52')]=_[_0xd2ec('0x53')](_0x4b7cb6[_0xd2ec('0x52')],{'$or':_[_0xd2ec('0x44')](_0x4b7cb6[_0xd2ec('0x4c')],function(_0x47d6d2){var _0x383b21={};_0x383b21[_0x47d6d2]={'$like':'%'+_0x450106['query'][_0xd2ec('0x6b')]+'%'};return _0x383b21;})});}_0x4b7cb6=_['merge']({},_0x4b7cb6,_0x450106[_0xd2ec('0x6c')]);return _0x427635[_0xd2ec('0xe9')](_0x4b7cb6);}})[_0xd2ec('0x25')](function(_0xfff56d){if(_0xfff56d){_0x377483=_0xfff56d[_0xd2ec('0x4e')];if(!_0x450106[_0xd2ec('0x49')]['hasOwnProperty'](_0xd2ec('0x6a'))){_0x4b7cb6[_0xd2ec('0x35')]=qs[_0xd2ec('0x35')](_0x450106[_0xd2ec('0x49')][_0xd2ec('0x35')]);_0x4b7cb6[_0xd2ec('0x33')]=qs['offset'](_0x450106['query']['offset']);}return _0x427635['getAgents'](_0x4b7cb6);}})[_0xd2ec('0x25')](function(_0x30ec04){if(_0x30ec04){return _0x30ec04?{'count':_0x377483,'rows':_0x30ec04}:null;}})[_0xd2ec('0x25')](respondWithResult(_0x41772e,null))[_0xd2ec('0x2e')](handleError(_0x41772e,null));};
\ No newline at end of file
+var _0xfafe=['reject','save','update','destroy','get','SmsAccounts','UserProfileResource','name','send','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','key','model','keys','intersection','query','fields','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','Pause','attributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','SmsAccountId','Disposition','removeDispositions','ids','CannedAnswer','getAnswers','findOne','nolimit','removeAnswers','notify','Applications','account','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','Body','messageId','MessageSid','skebby','sender','text','connectel','clicksend','message_id','plivo','Text','MessageUUID','infobip','results','segmentedMessage','fromNumber','replyMessageId','intelepeer','refid','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','list','omit','Contacts','contact','SmsInteraction','spread','interaction','created','autoclose','applications','close','unmanaged','*,*,*,*','SmsMessage','ContactId','UserId','User','unshift','agent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','SmsApplication','priority','getApplications','Contact','Owner','fullname','Tag','color','tag','to\x20is\x20mandatory','List','out','Messages','dataValues','push','received\x20delivery\x20report\x20from','inspect','requestid','statusInt','status_code','DELIVERED','clickatell','bandwidth','redif','error_code','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','message-id','state','csc','addAgents','emit','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','then','info','request\x20sent','debug','error','code','message','SmsAccount,\x20%s,\x20%s','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply'];(function(_0x1d0992,_0x19c94e){var _0x129b92=function(_0x3ccfed){while(--_0x3ccfed){_0x1d0992['push'](_0x1d0992['shift']());}};_0x129b92(++_0x19c94e);}(_0xfafe,0x18d));var _0xefaf=function(_0x16bd44,_0x3c91ba){_0x16bd44=_0x16bd44-0x0;var _0x368a61=_0xfafe[_0x16bd44];return _0x368a61;};'use strict';var emlformat=require(_0xefaf('0x0'));var rimraf=require(_0xefaf('0x1'));var zipdir=require(_0xefaf('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xefaf('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xefaf('0x4'));var util=require(_0xefaf('0x5'));var path=require(_0xefaf('0x6'));var sox=require(_0xefaf('0x7'));var csv=require(_0xefaf('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xefaf('0x9'));var squel=require(_0xefaf('0xa'));var crypto=require(_0xefaf('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xefaf('0xc'));var toCsv=require('to-csv');var querystring=require(_0xefaf('0xd'));var Papa=require(_0xefaf('0xe'));var Redis=require(_0xefaf('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xefaf('0x10'));var hardwareService=require(_0xefaf('0x11'));var logger=require(_0xefaf('0x12'))('api');var utils=require(_0xefaf('0x13'));var config=require(_0xefaf('0x14'));var licenseUtil=require(_0xefaf('0x15'));var db=require(_0xefaf('0x16'))['db'];config[_0xefaf('0x17')]=_[_0xefaf('0x18')](config[_0xefaf('0x17')],{'host':_0xefaf('0x19'),'port':0x18eb});var socket=require(_0xefaf('0x1a'))(new Redis(config[_0xefaf('0x17')]));require(_0xefaf('0x1b'))[_0xefaf('0x1c')](socket);var jayson=require(_0xefaf('0x1d'));var client=jayson['client']['http']({'port':0x232c});function respondWithRpcPromise(_0x245bf5,_0x30f4f1,_0x42ffa1,_0x33d7de){return new BPromise(function(_0x4d44ab,_0x1da380){var _0x4abff0=_0x33d7de||client;return _0x4abff0['request'](_0x245bf5,_0x42ffa1)[_0xefaf('0x1e')](function(_0x5e2b8a){logger[_0xefaf('0x1f')]('SmsAccount,\x20%s,\x20%s',_0x30f4f1,_0xefaf('0x20'));logger[_0xefaf('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x30f4f1,_0xefaf('0x20'),JSON['stringify'](_0x5e2b8a));if(_0x5e2b8a[_0xefaf('0x22')]){if(_0x5e2b8a[_0xefaf('0x22')][_0xefaf('0x23')]===0x1f4){logger[_0xefaf('0x22')]('SmsAccount,\x20%s,\x20%s',_0x30f4f1,_0x5e2b8a[_0xefaf('0x22')][_0xefaf('0x24')]);return _0x1da380(_0x5e2b8a[_0xefaf('0x22')]['message']);}logger[_0xefaf('0x22')]('SmsAccount,\x20%s,\x20%s',_0x30f4f1,_0x5e2b8a[_0xefaf('0x22')][_0xefaf('0x24')]);return _0x4d44ab(_0x5e2b8a[_0xefaf('0x22')][_0xefaf('0x24')]);}else{logger['info'](_0xefaf('0x25'),_0x30f4f1,'request\x20sent');_0x4d44ab(_0x5e2b8a[_0xefaf('0x26')]['message']);}})[_0xefaf('0x27')](function(_0x3fc944){logger[_0xefaf('0x22')]('SmsAccount,\x20%s,\x20%s',_0x30f4f1,_0x3fc944);_0x1da380(_0x3fc944);});});}function respondWithStatusCode(_0x24f472,_0x1f6d8f){_0x1f6d8f=_0x1f6d8f||0xcc;return function(_0x6add6b){if(_0x6add6b){return _0x24f472[_0xefaf('0x28')](_0x1f6d8f);}return _0x24f472[_0xefaf('0x29')](_0x1f6d8f)[_0xefaf('0x2a')]();};}function respondWithResult(_0x4e0d21,_0x3872bc){_0x3872bc=_0x3872bc||0xc8;return function(_0x4a5187){if(_0x4a5187){return _0x4e0d21[_0xefaf('0x29')](_0x3872bc)[_0xefaf('0x2b')](_0x4a5187);}};}function respondWithFilteredResult(_0x4f30a6,_0x12723b){return function(_0x2de14c){if(_0x2de14c){var _0x444bba=typeof _0x12723b[_0xefaf('0x2c')]===_0xefaf('0x2d')&&typeof _0x12723b['limit']==='undefined';var _0x1f8eed=_0x2de14c['count'];var _0x450e27=_0x444bba?0x0:_0x12723b[_0xefaf('0x2c')];var _0x39015e=_0x444bba?_0x2de14c[_0xefaf('0x2e')]:_0x12723b[_0xefaf('0x2c')]+_0x12723b[_0xefaf('0x2f')];var _0x5c4e05;if(_0x39015e>=_0x1f8eed){_0x39015e=_0x1f8eed;_0x5c4e05=0xc8;}else{_0x5c4e05=0xce;}_0x4f30a6['status'](_0x5c4e05);return _0x4f30a6[_0xefaf('0x30')](_0xefaf('0x31'),_0x450e27+'-'+_0x39015e+'/'+_0x1f8eed)[_0xefaf('0x2b')](_0x2de14c);}return null;};}function patchUpdates(_0x1c493c){return function(_0x39a1cf){try{jsonpatch[_0xefaf('0x32')](_0x39a1cf,_0x1c493c,!![]);}catch(_0x39d6eb){return BPromise[_0xefaf('0x33')](_0x39d6eb);}return _0x39a1cf[_0xefaf('0x34')]();};}function saveUpdates(_0x2f615a,_0x4db6a4){return function(_0x3b1c99){if(_0x3b1c99){return _0x3b1c99[_0xefaf('0x35')](_0x2f615a)[_0xefaf('0x1e')](function(_0x2dd5be){return _0x2dd5be;});}return null;};}function removeEntity(_0x442dd0,_0x5a2934){return function(_0x3720a8){if(_0x3720a8){return _0x3720a8[_0xefaf('0x36')]()[_0xefaf('0x1e')](function(){var _0x32738f=_0x3720a8[_0xefaf('0x37')]({'plain':!![]});var _0x3d6a9b=_0xefaf('0x38');return db[_0xefaf('0x39')]['destroy']({'where':{'type':_0x3d6a9b,'resourceId':_0x32738f['id']}})['then'](function(){return _0x3720a8;});})['then'](function(){_0x442dd0[_0xefaf('0x29')](0xcc)[_0xefaf('0x2a')]();});}};}function handleEntityNotFound(_0x49f885,_0x1e3f53){return function(_0x3cb083){if(!_0x3cb083){_0x49f885['sendStatus'](0x194);}return _0x3cb083;};}function handleError(_0x33af75,_0x219300){_0x219300=_0x219300||0x1f4;return function(_0x17227f){logger[_0xefaf('0x22')](_0x17227f['stack']);if(_0x17227f[_0xefaf('0x3a')]){delete _0x17227f['name'];}_0x33af75[_0xefaf('0x29')](_0x219300)[_0xefaf('0x3b')](_0x17227f);};}exports['index']=function(_0x5cd385,_0x1df47a){var _0x1bfa96={'include':[{'model':db['Pause'],'as':_0xefaf('0x3c')}]},_0x5efc95={},_0x470f4c={'count':0x0,'rows':[]};var _0x15882a=_[_0xefaf('0x3d')](db[_0xefaf('0x3e')][_0xefaf('0x3f')],function(_0x373a02){return{'name':_0x373a02[_0xefaf('0x40')],'type':_0x373a02[_0xefaf('0x41')][_0xefaf('0x42')]};});_0x5efc95[_0xefaf('0x43')]=_[_0xefaf('0x3d')](_0x15882a,'name');_0x5efc95['query']=_[_0xefaf('0x44')](_0x5cd385['query']);_0x5efc95['filters']=_[_0xefaf('0x45')](_0x5efc95[_0xefaf('0x43')],_0x5efc95[_0xefaf('0x46')]);_0x1bfa96['attributes']=_[_0xefaf('0x45')](_0x5efc95['model'],qs[_0xefaf('0x47')](_0x5cd385[_0xefaf('0x46')][_0xefaf('0x47')]));_0x1bfa96['attributes']=_0x1bfa96['attributes']['length']?_0x1bfa96['attributes']:_0x5efc95['model'];if(!_0x5cd385[_0xefaf('0x46')][_0xefaf('0x48')]('nolimit')){_0x1bfa96['limit']=qs[_0xefaf('0x2f')](_0x5cd385[_0xefaf('0x46')][_0xefaf('0x2f')]);_0x1bfa96[_0xefaf('0x2c')]=qs[_0xefaf('0x2c')](_0x5cd385[_0xefaf('0x46')][_0xefaf('0x2c')]);}_0x1bfa96[_0xefaf('0x49')]=qs[_0xefaf('0x4a')](_0x5cd385[_0xefaf('0x46')][_0xefaf('0x4a')]);_0x1bfa96[_0xefaf('0x4b')]=qs[_0xefaf('0x4c')](_[_0xefaf('0x4d')](_0x5cd385[_0xefaf('0x46')],_0x5efc95[_0xefaf('0x4c')]),_0x15882a);if(_0x5cd385['query'][_0xefaf('0x4e')]){_0x1bfa96[_0xefaf('0x4b')]=_['merge'](_0x1bfa96['where'],{'$or':_[_0xefaf('0x3d')](_0x15882a,function(_0x1aa94f){if(_0x1aa94f[_0xefaf('0x41')]!==_0xefaf('0x4f')){var _0x58e299={};_0x58e299[_0x1aa94f[_0xefaf('0x3a')]]={'$like':'%'+_0x5cd385[_0xefaf('0x46')][_0xefaf('0x4e')]+'%'};return _0x58e299;}})});}_0x1bfa96=_[_0xefaf('0x50')]({},_0x1bfa96,_0x5cd385[_0xefaf('0x51')]);var _0x154404={'where':_0x1bfa96[_0xefaf('0x4b')]};return db[_0xefaf('0x3e')][_0xefaf('0x2e')](_0x154404)['then'](function(_0x467576){_0x470f4c[_0xefaf('0x2e')]=_0x467576;if(_0x5cd385['query'][_0xefaf('0x52')]){_0x1bfa96[_0xefaf('0x53')]=[{'all':!![]}];}return db[_0xefaf('0x3e')][_0xefaf('0x54')](_0x1bfa96);})[_0xefaf('0x1e')](function(_0x1e620d){_0x470f4c[_0xefaf('0x55')]=_0x1e620d;return _0x470f4c;})[_0xefaf('0x1e')](respondWithFilteredResult(_0x1df47a,_0x1bfa96))[_0xefaf('0x27')](handleError(_0x1df47a,null));};exports[_0xefaf('0x56')]=function(_0x5166ab,_0x552dbf){var _0x72a85c={'raw':![],'where':{'id':_0x5166ab[_0xefaf('0x57')]['id']},'include':[{'model':db[_0xefaf('0x58')],'as':_0xefaf('0x3c')}]},_0x163192={};_0x163192[_0xefaf('0x43')]=_[_0xefaf('0x44')](db[_0xefaf('0x3e')]['rawAttributes']);_0x163192[_0xefaf('0x46')]=_['keys'](_0x5166ab[_0xefaf('0x46')]);_0x163192['filters']=_[_0xefaf('0x45')](_0x163192['model'],_0x163192['query']);_0x72a85c[_0xefaf('0x59')]=_[_0xefaf('0x45')](_0x163192[_0xefaf('0x43')],qs[_0xefaf('0x47')](_0x5166ab[_0xefaf('0x46')][_0xefaf('0x47')]));_0x72a85c[_0xefaf('0x59')]=_0x72a85c[_0xefaf('0x59')][_0xefaf('0x5a')]?_0x72a85c['attributes']:_0x163192[_0xefaf('0x43')];if(_0x5166ab[_0xefaf('0x46')][_0xefaf('0x52')]){_0x72a85c[_0xefaf('0x53')]=[{'all':!![]}];}_0x72a85c=_[_0xefaf('0x50')]({},_0x72a85c,_0x5166ab[_0xefaf('0x51')]);return db['SmsAccount'][_0xefaf('0x5b')](_0x72a85c)[_0xefaf('0x1e')](handleEntityNotFound(_0x552dbf,null))['then'](respondWithResult(_0x552dbf,null))['catch'](handleError(_0x552dbf,null));};exports['create']=function(_0x45c5bb,_0x4ea89d){return db[_0xefaf('0x3e')][_0xefaf('0x5c')](_0x45c5bb[_0xefaf('0x5d')],{})[_0xefaf('0x1e')](function(_0x5c40ed){var _0x9b397f=_0x45c5bb[_0xefaf('0x5e')]['get']({'plain':!![]});if(!_0x9b397f)throw new Error(_0xefaf('0x5f'));if(_0x9b397f[_0xefaf('0x60')]===_0xefaf('0x5e')){var _0x452e03=_0x5c40ed['get']({'plain':!![]});var _0x26ac40=_0xefaf('0x38');return db[_0xefaf('0x61')][_0xefaf('0x5b')]({'where':{'name':_0x26ac40,'userProfileId':_0x9b397f[_0xefaf('0x62')]},'raw':!![]})[_0xefaf('0x1e')](function(_0x3a5ef3){if(_0x3a5ef3&&_0x3a5ef3[_0xefaf('0x63')]===0x0){return db[_0xefaf('0x39')]['create']({'name':_0x452e03[_0xefaf('0x3a')],'resourceId':_0x452e03['id'],'type':_0x3a5ef3[_0xefaf('0x3a')],'sectionId':_0x3a5ef3['id']},{})['then'](function(){return _0x5c40ed;});}else{return _0x5c40ed;}})[_0xefaf('0x27')](function(_0x4b395c){logger['error'](_0xefaf('0x64'),_0x4b395c);throw _0x4b395c;});}return _0x5c40ed;})[_0xefaf('0x1e')](respondWithResult(_0x4ea89d,0xc9))[_0xefaf('0x27')](handleError(_0x4ea89d,null));};exports[_0xefaf('0x35')]=function(_0xca2951,_0xaf9c89){if(_0xca2951[_0xefaf('0x5d')]['id']){delete _0xca2951[_0xefaf('0x5d')]['id'];}return db['SmsAccount'][_0xefaf('0x5b')]({'where':{'id':_0xca2951['params']['id']},'include':[{'model':db['Pause'],'as':_0xefaf('0x3c')}]})[_0xefaf('0x1e')](handleEntityNotFound(_0xaf9c89,null))[_0xefaf('0x1e')](saveUpdates(_0xca2951[_0xefaf('0x5d')],null))[_0xefaf('0x1e')](respondWithResult(_0xaf9c89,null))[_0xefaf('0x27')](handleError(_0xaf9c89,null));};exports['destroy']=function(_0x1cb972,_0x4cb5a2){return db[_0xefaf('0x3e')][_0xefaf('0x5b')]({'where':{'id':_0x1cb972['params']['id']}})[_0xefaf('0x1e')](handleEntityNotFound(_0x4cb5a2,null))['then'](removeEntity(_0x4cb5a2,null))[_0xefaf('0x27')](handleError(_0x4cb5a2,null));};exports[_0xefaf('0x65')]=function(_0x5a6146,_0x420718){return db['SmsAccount']['describe']()[_0xefaf('0x1e')](respondWithResult(_0x420718,null))[_0xefaf('0x27')](handleError(_0x420718,null));};exports['addDisposition']=function(_0x326644,_0x5db666,_0x4f5053){if(_0x326644['body']['id']){delete _0x326644['body']['id'];}return db[_0xefaf('0x3e')][_0xefaf('0x5b')]({'where':{'id':_0x326644[_0xefaf('0x57')]['id']}})[_0xefaf('0x1e')](handleEntityNotFound(_0x5db666,null))[_0xefaf('0x1e')](function(_0x484178){if(_0x484178){_0x326644['body'][_0xefaf('0x66')]=_0x484178['id'];return db[_0xefaf('0x67')][_0xefaf('0x5c')](_0x326644[_0xefaf('0x5d')]);}})[_0xefaf('0x1e')](respondWithResult(_0x5db666,null))['catch'](handleError(_0x5db666,null));};exports['getDispositions']=function(_0x395e7e,_0x573e9c,_0x572433){var _0x2fc998={'raw':![],'where':{}};var _0x383d78={};var _0x33cec3={'count':0x0,'rows':[]};return db[_0xefaf('0x3e')]['findOne']({'where':{'id':_0x395e7e['params']['id']}})[_0xefaf('0x1e')](handleEntityNotFound(_0x573e9c,null))[_0xefaf('0x1e')](function(_0x5f044b){if(_0x5f044b){_0x383d78[_0xefaf('0x43')]=_[_0xefaf('0x44')](db['Disposition'][_0xefaf('0x3f')]);_0x383d78[_0xefaf('0x46')]=_[_0xefaf('0x44')](_0x395e7e[_0xefaf('0x46')]);_0x383d78['filters']=_['intersection'](_0x383d78['model'],_0x383d78[_0xefaf('0x46')]);_0x2fc998[_0xefaf('0x59')]=_['intersection'](_0x383d78[_0xefaf('0x43')],qs[_0xefaf('0x47')](_0x395e7e[_0xefaf('0x46')][_0xefaf('0x47')]));_0x2fc998[_0xefaf('0x59')]=_0x2fc998[_0xefaf('0x59')][_0xefaf('0x5a')]?_0x2fc998[_0xefaf('0x59')]:_0x383d78['model'];if(!_0x395e7e['query'][_0xefaf('0x48')]('nolimit')){_0x2fc998['limit']=qs[_0xefaf('0x2f')](_0x395e7e[_0xefaf('0x46')]['limit']);_0x2fc998['offset']=qs[_0xefaf('0x2c')](_0x395e7e['query'][_0xefaf('0x2c')]);}_0x2fc998['order']=qs['sort'](_0x395e7e[_0xefaf('0x46')]['sort']);_0x2fc998[_0xefaf('0x4b')]=qs[_0xefaf('0x4c')](_[_0xefaf('0x4d')](_0x395e7e[_0xefaf('0x46')],_0x383d78[_0xefaf('0x4c')]));_0x2fc998[_0xefaf('0x4b')]['SmsAccountId']=_0x5f044b['id'];if(_0x395e7e[_0xefaf('0x46')][_0xefaf('0x4e')]){_0x2fc998['where']=_[_0xefaf('0x50')](_0x2fc998[_0xefaf('0x4b')],{'$or':_[_0xefaf('0x3d')](_0x2fc998[_0xefaf('0x59')],function(_0x4ee9d8){var _0x576c79={};_0x576c79[_0x4ee9d8]={'$like':'%'+_0x395e7e[_0xefaf('0x46')]['filter']+'%'};return _0x576c79;})});}_0x2fc998=_['merge']({},_0x2fc998,_0x395e7e[_0xefaf('0x51')]);return db[_0xefaf('0x67')][_0xefaf('0x2e')]({'where':_0x2fc998[_0xefaf('0x4b')]})[_0xefaf('0x1e')](function(_0x4c8c80){_0x33cec3['count']=_0x4c8c80;if(_0x395e7e[_0xefaf('0x46')]['includeAll']){_0x2fc998[_0xefaf('0x53')]=[{'all':!![]}];}return db[_0xefaf('0x67')][_0xefaf('0x54')](_0x2fc998);})[_0xefaf('0x1e')](function(_0x24e77d){_0x33cec3[_0xefaf('0x55')]=_0x24e77d;return _0x33cec3;});}})['then'](respondWithFilteredResult(_0x573e9c,_0x2fc998))[_0xefaf('0x27')](handleError(_0x573e9c,null));};exports[_0xefaf('0x68')]=function(_0x258f99,_0x47c25d,_0x1189a8){return db[_0xefaf('0x3e')][_0xefaf('0x5b')]({'where':{'id':_0x258f99['params']['id']}})[_0xefaf('0x1e')](handleEntityNotFound(_0x47c25d,null))['then'](function(_0x2b9d82){if(_0x2b9d82){return _0x2b9d82[_0xefaf('0x68')](_0x258f99[_0xefaf('0x46')][_0xefaf('0x69')]);}})[_0xefaf('0x1e')](respondWithStatusCode(_0x47c25d,null))[_0xefaf('0x27')](handleError(_0x47c25d,null));};exports['addAnswer']=function(_0x47f307,_0x4bd7b6,_0x2f7ce7){if(_0x47f307[_0xefaf('0x5d')]['id']){delete _0x47f307[_0xefaf('0x5d')]['id'];}return db[_0xefaf('0x3e')]['find']({'where':{'id':_0x47f307['params']['id']}})[_0xefaf('0x1e')](handleEntityNotFound(_0x4bd7b6,null))['then'](function(_0x6d03b1){if(_0x6d03b1){_0x47f307[_0xefaf('0x5d')][_0xefaf('0x66')]=_0x6d03b1['id'];return db[_0xefaf('0x6a')][_0xefaf('0x5c')](_0x47f307['body']);}})['then'](respondWithResult(_0x4bd7b6,null))[_0xefaf('0x27')](handleError(_0x4bd7b6,null));};exports[_0xefaf('0x6b')]=function(_0x5492c5,_0x3e240f,_0x3f04b9){var _0xe07d11={'raw':![],'where':{}};var _0x35498f={};var _0x5b68e5={'count':0x0,'rows':[]};return db['SmsAccount'][_0xefaf('0x6c')]({'where':{'id':_0x5492c5[_0xefaf('0x57')]['id']}})[_0xefaf('0x1e')](handleEntityNotFound(_0x3e240f,null))['then'](function(_0x48017e){if(_0x48017e){_0x35498f['model']=_['keys'](db[_0xefaf('0x6a')][_0xefaf('0x3f')]);_0x35498f['query']=_['keys'](_0x5492c5['query']);_0x35498f[_0xefaf('0x4c')]=_[_0xefaf('0x45')](_0x35498f[_0xefaf('0x43')],_0x35498f[_0xefaf('0x46')]);_0xe07d11[_0xefaf('0x59')]=_['intersection'](_0x35498f[_0xefaf('0x43')],qs[_0xefaf('0x47')](_0x5492c5[_0xefaf('0x46')][_0xefaf('0x47')]));_0xe07d11[_0xefaf('0x59')]=_0xe07d11[_0xefaf('0x59')][_0xefaf('0x5a')]?_0xe07d11['attributes']:_0x35498f['model'];if(!_0x5492c5[_0xefaf('0x46')][_0xefaf('0x48')](_0xefaf('0x6d'))){_0xe07d11[_0xefaf('0x2f')]=qs['limit'](_0x5492c5[_0xefaf('0x46')][_0xefaf('0x2f')]);_0xe07d11[_0xefaf('0x2c')]=qs[_0xefaf('0x2c')](_0x5492c5[_0xefaf('0x46')][_0xefaf('0x2c')]);}_0xe07d11[_0xefaf('0x49')]=qs[_0xefaf('0x4a')](_0x5492c5['query'][_0xefaf('0x4a')]);_0xe07d11[_0xefaf('0x4b')]=qs[_0xefaf('0x4c')](_[_0xefaf('0x4d')](_0x5492c5[_0xefaf('0x46')],_0x35498f[_0xefaf('0x4c')]));_0xe07d11[_0xefaf('0x4b')][_0xefaf('0x66')]=_0x48017e['id'];if(_0x5492c5[_0xefaf('0x46')][_0xefaf('0x4e')]){_0xe07d11[_0xefaf('0x4b')]=_[_0xefaf('0x50')](_0xe07d11[_0xefaf('0x4b')],{'$or':_[_0xefaf('0x3d')](_0xe07d11[_0xefaf('0x59')],function(_0x3bff62){var _0x448415={};_0x448415[_0x3bff62]={'$like':'%'+_0x5492c5['query'][_0xefaf('0x4e')]+'%'};return _0x448415;})});}_0xe07d11=_[_0xefaf('0x50')]({},_0xe07d11,_0x5492c5[_0xefaf('0x51')]);return db[_0xefaf('0x6a')]['count']({'where':_0xe07d11[_0xefaf('0x4b')]})[_0xefaf('0x1e')](function(_0x1944f9){_0x5b68e5[_0xefaf('0x2e')]=_0x1944f9;if(_0x5492c5['query'][_0xefaf('0x52')]){_0xe07d11[_0xefaf('0x53')]=[{'all':!![]}];}return db['CannedAnswer'][_0xefaf('0x54')](_0xe07d11);})['then'](function(_0x2d3c28){_0x5b68e5['rows']=_0x2d3c28;return _0x5b68e5;});}})[_0xefaf('0x1e')](respondWithFilteredResult(_0x3e240f,_0xe07d11))[_0xefaf('0x27')](handleError(_0x3e240f,null));};exports[_0xefaf('0x6e')]=function(_0x568424,_0x4483ed,_0x2fa29b){return db[_0xefaf('0x3e')][_0xefaf('0x5b')]({'where':{'id':_0x568424[_0xefaf('0x57')]['id']}})[_0xefaf('0x1e')](handleEntityNotFound(_0x4483ed,null))[_0xefaf('0x1e')](function(_0x28bd43){if(_0x28bd43){return _0x28bd43[_0xefaf('0x6e')](_0x568424[_0xefaf('0x46')][_0xefaf('0x69')]);}})[_0xefaf('0x1e')](respondWithStatusCode(_0x4483ed,null))['catch'](handleError(_0x4483ed,null));};exports[_0xefaf('0x6f')]=function(_0x55910d,_0x24fa79,_0x2cb018){var _0x52b160={'channel':'sms'};var _0x157058=[];var _0x23bb95=[];var _0x5003b6={};return db[_0xefaf('0x3e')][_0xefaf('0x5b')]({'where':{'id':_0x55910d[_0xefaf('0x57')]['id']},'include':[{'model':db['SmsApplication'],'as':_0xefaf('0x70')}]})[_0xefaf('0x1e')](handleEntityNotFound(_0x24fa79,null))[_0xefaf('0x1e')](function(_0x570e52){_0x52b160[_0xefaf('0x71')]=_0x570e52;_0x52b160['applications']=_['orderBy'](_0x570e52['Applications'],['priority'],[_0xefaf('0x72')]);if(_0x52b160[_0xefaf('0x71')][_0xefaf('0x70')]){delete _0x52b160[_0xefaf('0x71')]['Applications'];}return db[_0xefaf('0x73')][_0xefaf('0x65')]();})[_0xefaf('0x1e')](function(_0x4c1da3){if(!_0x4c1da3){throw new db[(_0xefaf('0x74'))][(_0xefaf('0x75'))](_0xefaf('0x76'));}_0x157058=_[_0xefaf('0x77')](_[_0xefaf('0x44')](_0x4c1da3),[_0xefaf('0x78'),_0xefaf('0x79')]);_0x23bb95=_[_0xefaf('0x77')](_[_0xefaf('0x44')](_0x4c1da3),[_0xefaf('0x78'),_0xefaf('0x79'),_0xefaf('0x7a'),_0xefaf('0x7b')]);_0x52b160[_0xefaf('0x5d')]={'mapKey':_0xefaf('0x7c')};if(_0x52b160[_0xefaf('0x71')][_0xefaf('0x41')]){switch(_0x52b160['account'][_0xefaf('0x41')]){case _0xefaf('0x7d'):_0x52b160[_0xefaf('0x5d')][_0xefaf('0x7e')]=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x7f')];_0x52b160[_0xefaf('0x5d')]['body']=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x80')];_0x52b160['body'][_0xefaf('0x81')]=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x82')];break;case _0xefaf('0x83'):_0x52b160[_0xefaf('0x5d')][_0xefaf('0x7e')]='+'+_0x55910d['body'][_0xefaf('0x84')];_0x52b160[_0xefaf('0x5d')]['body']=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x85')];break;case _0xefaf('0x86'):_0x52b160[_0xefaf('0x5d')][_0xefaf('0x7e')]=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x7e')];_0x52b160['body'][_0xefaf('0x5d')]=_0x55910d[_0xefaf('0x5d')]['message'];break;case _0xefaf('0x87'):_0x52b160['body'][_0xefaf('0x7e')]=_0x55910d[_0xefaf('0x5d')]['from'];_0x52b160[_0xefaf('0x5d')][_0xefaf('0x5d')]=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x5d')];_0x52b160['body'][_0xefaf('0x81')]=_0x55910d['body'][_0xefaf('0x88')];break;case _0xefaf('0x89'):_0x52b160[_0xefaf('0x5d')][_0xefaf('0x7e')]=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x7f')];_0x52b160[_0xefaf('0x5d')][_0xefaf('0x5d')]=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x8a')];_0x52b160['body'][_0xefaf('0x81')]=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x8b')];break;case _0xefaf('0x8c'):_0x52b160[_0xefaf('0x5d')][_0xefaf('0x7e')]='+'+_0x55910d[_0xefaf('0x5d')][_0xefaf('0x8d')][0x0][_0xefaf('0x7e')];_0x52b160[_0xefaf('0x5d')][_0xefaf('0x5d')]=_0x55910d['body'][_0xefaf('0x8d')][0x0][_0xefaf('0x85')];_0x52b160[_0xefaf('0x5d')]['messageId']=_0x55910d[_0xefaf('0x5d')]['results'][0x0]['messageId'];break;case'csc':_0x52b160[_0xefaf('0x5d')][_0xefaf('0x7e')]=_0x55910d[_0xefaf('0x5d')]['originatingAddress'];_0x52b160[_0xefaf('0x5d')]['body']=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x8e')][_0xefaf('0x24')];break;case'clickatell':_0x52b160[_0xefaf('0x5d')][_0xefaf('0x7e')]=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x8f')];_0x52b160[_0xefaf('0x5d')][_0xefaf('0x5d')]=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x85')];_0x52b160[_0xefaf('0x5d')][_0xefaf('0x81')]=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x90')];break;case'bandwidth':_0x52b160['body']['messageId']=_0x55910d[_0xefaf('0x5d')][0x0][_0xefaf('0x24')]['id'];_0x52b160['body'][_0xefaf('0x7e')]=_0x55910d['body'][0x0]['message'][_0xefaf('0x7e')];_0x52b160[_0xefaf('0x5d')][_0xefaf('0x5d')]=_0x55910d[_0xefaf('0x5d')][0x0][_0xefaf('0x24')]['text'];break;case _0xefaf('0x91'):_0x52b160[_0xefaf('0x5d')][_0xefaf('0x7e')]=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x7e')];_0x52b160[_0xefaf('0x5d')]['body']=_0x55910d[_0xefaf('0x5d')]['message'];_0x52b160[_0xefaf('0x5d')]['messageId']=_0x55910d[_0xefaf('0x5d')][_0xefaf('0x92')];break;}}if(_0x52b160[_0xefaf('0x5d')]['id']){delete _0x52b160[_0xefaf('0x5d')]['id'];}if(_[_0xefaf('0x93')](_0x52b160['body']['from'])){throw new db[(_0xefaf('0x74'))][(_0xefaf('0x75'))](_0xefaf('0x94'));}if(_[_0xefaf('0x93')](_0x52b160[_0xefaf('0x5d')]['body'])||_0x52b160['body'][_0xefaf('0x5d')]===''){throw new db[(_0xefaf('0x74'))][(_0xefaf('0x75'))](_0xefaf('0x95'));}if(_[_0xefaf('0x93')](_0x52b160['body'][_0xefaf('0x96')])){throw new db[(_0xefaf('0x74'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x23bb95);}if(!_[_0xefaf('0x97')](_0x23bb95,_0x52b160[_0xefaf('0x5d')][_0xefaf('0x96')])){throw new db[(_0xefaf('0x74'))][(_0xefaf('0x75'))](_0xefaf('0x98')+_0x23bb95);}_0x5003b6[_0x52b160[_0xefaf('0x5d')][_0xefaf('0x96')]]=_0x52b160['body'][_0xefaf('0x7e')];return db[_0xefaf('0x99')][_0xefaf('0x5b')]({'where':{'id':_0x52b160[_0xefaf('0x71')]['ListId']},'include':[{'model':db[_0xefaf('0x73')],'as':'Contacts','where':_0x5003b6,'limit':0x1,'order':[[_0xefaf('0x79'),'DESC']]}]});})[_0xefaf('0x1e')](handleEntityNotFound(_0x24fa79,null))['then'](function(_0x2175bb){if(_0x2175bb){_0x52b160[_0xefaf('0x9a')]=_[_0xefaf('0x9b')](_0x2175bb,[_0xefaf('0x9c')]);if(_0x2175bb[_0xefaf('0x9c')]['length']){return _0x2175bb[_0xefaf('0x9c')][0x0];}var _0x46586e=_[_0xefaf('0x18')](_0x52b160[_0xefaf('0x5d')],{'firstName':_0x52b160['body'][_0xefaf('0x7e')],'ListId':_0x2175bb['id']});_0x46586e[_0x52b160[_0xefaf('0x5d')][_0xefaf('0x96')]]=_0x52b160[_0xefaf('0x5d')]['from'];return db[_0xefaf('0x73')][_0xefaf('0x5c')](_0x46586e,{'fields':_0x157058,'raw':!![]});}})['then'](handleEntityNotFound(_0x24fa79,null))['then'](function(_0x496fb5){if(_0x496fb5){_0x52b160[_0xefaf('0x9d')]=_0x496fb5;var _0x2c0a80={'ContactId':_0x496fb5['id'],'phone':_0x52b160[_0xefaf('0x5d')][_0xefaf('0x7e')],'SmsAccountId':_0x55910d[_0xefaf('0x57')]['id']};var _0x1eaf2c={'ContactId':_0x496fb5['id'],'SmsAccountId':_0x55910d[_0xefaf('0x57')]['id'],'closed':![]};return db[_0xefaf('0x9e')][_0xefaf('0x5b')]({'where':_0x1eaf2c})[_0xefaf('0x1e')](function(_0x459ef7){if(_0x459ef7){return[_0x459ef7,![]];}return db['SmsInteraction'][_0xefaf('0x5c')](_0x2c0a80)['then'](function(_0x52fc5d){return[_0x52fc5d,!![]];});});}})[_0xefaf('0x9f')](function(_0x10dddc,_0x1cf75a){_0x52b160[_0xefaf('0xa0')]=_0x10dddc[_0xefaf('0x37')]({'plain':!![]});_0x52b160[_0xefaf('0xa0')][_0xefaf('0xa1')]=![];if(_0x1cf75a){if(_0x52b160['account'][_0xefaf('0xa2')]){_0x52b160['applications']['push']({'id':0x0,'priority':_0x52b160[_0xefaf('0xa3')]['length']+0x1,'app':_0xefaf('0xa4'),'appdata':_0xefaf('0xa5'),'interval':_0xefaf('0xa6')});}_0x52b160[_0xefaf('0xa0')][_0xefaf('0xa1')]=!![];}return db[_0xefaf('0xa7')]['create']({'phone':_0x52b160[_0xefaf('0x5d')][_0xefaf('0x7e')],'messageId':_0x52b160[_0xefaf('0x5d')][_0xefaf('0x81')],'body':_0x52b160['body']['body'],'SmsAccountId':_0x55910d[_0xefaf('0x57')]['id'],'SmsInteractionId':_0x10dddc['id'],'direction':'in','ContactId':_0x10dddc[_0xefaf('0xa8')],'AttachmentId':_0x52b160[_0xefaf('0x5d')]['AttachmentId']});})[_0xefaf('0x1e')](function(_0x4a42b8){_0x52b160[_0xefaf('0x24')]=_0x4a42b8;if(_0x52b160['interaction'][_0xefaf('0xa9')]){return db[_0xefaf('0xaa')][_0xefaf('0x5b')]({'attributes':['id',_0xefaf('0x3a')],'where':{'id':_0x52b160['interaction'][_0xefaf('0xa9')]}})[_0xefaf('0x1e')](function(_0x4a194f){if(_0x4a194f){_0x52b160['applications'][_0xefaf('0xab')]({'id':0x0,'priority':0x0,'app':_0xefaf('0xac'),'appdata':_0x4a194f[_0xefaf('0x3a')]+','+(_0x52b160['account']['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xefaf('0xad'),_0xefaf('0xae'),_0x52b160);});}return respondWithRpcPromise(_0xefaf('0xad'),_0xefaf('0xae'),_0x52b160);})['then'](function(_0x3b2c2f){if(_0x3b2c2f){var _0x1848e2=0xc8;var _0x39c55e=_0xefaf('0xaf');logger['info'](_0xefaf('0xb0'),_0x39c55e,_0x1848e2,_0xefaf('0xb1'));logger[_0xefaf('0x21')](_0xefaf('0xb2'),_0x39c55e,_0x1848e2,_0xefaf('0xb1'),JSON[_0xefaf('0xb3')](_0x3b2c2f));if(_0x52b160[_0xefaf('0x71')][_0xefaf('0x41')]===_0xefaf('0x7d')){return _0x24fa79['status'](_0x1848e2)[_0xefaf('0x30')](_0xefaf('0xb4'),'text/xml')[_0xefaf('0x3b')](_0xefaf('0xb5'));}else{return _0x24fa79[_0xefaf('0x29')](_0x1848e2)[_0xefaf('0x2b')](_0x3b2c2f);}}})[_0xefaf('0x27')](handleError(_0x24fa79,null));};exports[_0xefaf('0xb6')]=function(_0x5c172e,_0x163a18,_0x1d8a84){return db['SmsAccount'][_0xefaf('0x6c')]({'where':{'id':_0x5c172e[_0xefaf('0x57')]['id']}})['then'](handleEntityNotFound(_0x163a18,null))[_0xefaf('0x1e')](function(_0x4b5f5f){if(_0x4b5f5f){return db[_0xefaf('0xb7')][_0xefaf('0xb8')](function(_0xeff9b4){return db[_0xefaf('0xb9')]['destroy']({'where':{'SmsAccountId':_0x5c172e[_0xefaf('0x57')]['id']},'transaction':_0xeff9b4})[_0xefaf('0x1e')](function(_0x5d8a68){var _0x82bf17=_[_0xefaf('0x3d')](_0x5c172e[_0xefaf('0x5d')],function(_0x25984c){_0x25984c[_0xefaf('0x66')]=_0x5c172e[_0xefaf('0x57')]['id'];return _0x25984c;});return db[_0xefaf('0xb9')]['bulkCreate'](_0x82bf17,{'transaction':_0xeff9b4});});})[_0xefaf('0x1e')](function(){return db[_0xefaf('0xb9')]['findAndCountAll']({'where':{'SmsAccountId':_0x5c172e[_0xefaf('0x57')]['id']},'order':_0xefaf('0xba')});});}})[_0xefaf('0x1e')](respondWithResult(_0x163a18,null))[_0xefaf('0x27')](handleError(_0x163a18,null));};exports['getApplications']=function(_0x2689c7,_0x11be4e,_0x37eefc){var _0x24ae82={};var _0x3bf235={};var _0xba3a3b;var _0x566e8d;return db[_0xefaf('0x3e')][_0xefaf('0x6c')]({'where':{'id':_0x2689c7[_0xefaf('0x57')]['id']}})[_0xefaf('0x1e')](handleEntityNotFound(_0x11be4e,null))['then'](function(_0x18e43a){if(_0x18e43a){_0xba3a3b=_0x18e43a;_0x3bf235[_0xefaf('0x43')]=_['keys'](db[_0xefaf('0xb9')][_0xefaf('0x3f')]);_0x3bf235['query']=_[_0xefaf('0x44')](_0x2689c7[_0xefaf('0x46')]);_0x3bf235['filters']=_['intersection'](_0x3bf235[_0xefaf('0x43')],_0x3bf235[_0xefaf('0x46')]);_0x24ae82[_0xefaf('0x59')]=_[_0xefaf('0x45')](_0x3bf235[_0xefaf('0x43')],qs['fields'](_0x2689c7[_0xefaf('0x46')][_0xefaf('0x47')]));_0x24ae82[_0xefaf('0x59')]=_0x24ae82[_0xefaf('0x59')][_0xefaf('0x5a')]?_0x24ae82['attributes']:_0x3bf235['model'];_0x24ae82[_0xefaf('0x49')]=qs['sort'](_0x2689c7['query'][_0xefaf('0x4a')]);_0x24ae82[_0xefaf('0x4b')]=qs[_0xefaf('0x4c')](_[_0xefaf('0x4d')](_0x2689c7[_0xefaf('0x46')],_0x3bf235[_0xefaf('0x4c')]));if(_0x2689c7[_0xefaf('0x46')]['filter']){_0x24ae82[_0xefaf('0x4b')]=_['merge'](_0x24ae82[_0xefaf('0x4b')],{'$or':_[_0xefaf('0x3d')](_0x24ae82['attributes'],function(_0x4eb7d3){var _0x3d779e={};_0x3d779e[_0x4eb7d3]={'$like':'%'+_0x2689c7[_0xefaf('0x46')]['filter']+'%'};return _0x3d779e;})});}_0x24ae82=_[_0xefaf('0x50')]({},_0x24ae82,_0x2689c7[_0xefaf('0x51')]);return _0xba3a3b[_0xefaf('0xbb')](_0x24ae82);}})[_0xefaf('0x1e')](function(_0x233013){if(_0x233013){_0x566e8d=_0x233013['length'];if(!_0x2689c7[_0xefaf('0x46')]['hasOwnProperty']('nolimit')){_0x24ae82[_0xefaf('0x2f')]=qs[_0xefaf('0x2f')](_0x2689c7[_0xefaf('0x46')][_0xefaf('0x2f')]);_0x24ae82[_0xefaf('0x2c')]=qs['offset'](_0x2689c7[_0xefaf('0x46')]['offset']);}return _0xba3a3b['getApplications'](_0x24ae82);}})[_0xefaf('0x1e')](function(_0x105610){if(_0x105610){return _0x105610?{'count':_0x566e8d,'rows':_0x105610}:null;}})['then'](respondWithResult(_0x11be4e,null))[_0xefaf('0x27')](handleError(_0x11be4e,null));};exports['getInteractions']=function(_0x3f1e7d,_0x5ece22,_0x254936){var _0xc12d51={'raw':![],'where':{}};var _0x2646d5={};var _0x8e484f={'count':0x0,'rows':[]};return db['SmsAccount'][_0xefaf('0x6c')]({'where':{'id':_0x3f1e7d['params']['id']}})[_0xefaf('0x1e')](handleEntityNotFound(_0x5ece22,null))[_0xefaf('0x1e')](function(_0x1d14d6){if(_0x1d14d6){_0x2646d5['model']=_[_0xefaf('0x44')](db[_0xefaf('0x9e')][_0xefaf('0x3f')]);_0x2646d5[_0xefaf('0x46')]=_[_0xefaf('0x44')](_0x3f1e7d['query']);_0x2646d5['filters']=_[_0xefaf('0x45')](_0x2646d5[_0xefaf('0x43')],_0x2646d5['query']);_0xc12d51[_0xefaf('0x59')]=_[_0xefaf('0x45')](_0x2646d5[_0xefaf('0x43')],qs[_0xefaf('0x47')](_0x3f1e7d[_0xefaf('0x46')]['fields']));_0xc12d51[_0xefaf('0x59')]=_0xc12d51[_0xefaf('0x59')][_0xefaf('0x5a')]?_0xc12d51['attributes']:_0x2646d5['model'];if(!_0x3f1e7d[_0xefaf('0x46')][_0xefaf('0x48')](_0xefaf('0x6d'))){_0xc12d51['limit']=qs[_0xefaf('0x2f')](_0x3f1e7d[_0xefaf('0x46')][_0xefaf('0x2f')]);_0xc12d51[_0xefaf('0x2c')]=qs[_0xefaf('0x2c')](_0x3f1e7d['query'][_0xefaf('0x2c')]);}_0xc12d51[_0xefaf('0x49')]=qs[_0xefaf('0x4a')](_0x3f1e7d[_0xefaf('0x46')][_0xefaf('0x4a')]);_0xc12d51[_0xefaf('0x4b')]=qs['filters'](_[_0xefaf('0x4d')](_0x3f1e7d[_0xefaf('0x46')],_0x2646d5['filters']));_0xc12d51[_0xefaf('0x4b')]['SmsAccountId']=_0x1d14d6['id'];if(_0x3f1e7d['query'][_0xefaf('0x4e')]){_0xc12d51[_0xefaf('0x4b')]=_[_0xefaf('0x50')](_0xc12d51[_0xefaf('0x4b')],{'$or':_[_0xefaf('0x3d')](_0xc12d51[_0xefaf('0x59')],function(_0x11df0b){var _0x20ad42={};_0x20ad42[_0x11df0b]={'$like':'%'+_0x3f1e7d['query'][_0xefaf('0x4e')]+'%'};return _0x20ad42;})});}_0xc12d51=_[_0xefaf('0x50')]({},_0xc12d51,_0x3f1e7d[_0xefaf('0x51')]);return db['SmsInteraction']['count']({'where':_0xc12d51[_0xefaf('0x4b')]})[_0xefaf('0x1e')](function(_0x16ef49){_0x8e484f[_0xefaf('0x2e')]=_0x16ef49;if(_0x3f1e7d[_0xefaf('0x46')][_0xefaf('0x52')]){_0xc12d51[_0xefaf('0x53')]=[{'model':db[_0xefaf('0x73')],'as':_0xefaf('0xbc'),'required':![]},{'model':db[_0xefaf('0xaa')],'as':_0xefaf('0xbd'),'attributes':[_0xefaf('0x3a'),_0xefaf('0xbe'),'internal'],'required':![]},{'model':db[_0xefaf('0xbf')],'as':'Tags','attributes':['id',_0xefaf('0x3a'),_0xefaf('0xc0')],'where':_0x3f1e7d[_0xefaf('0x46')][_0xefaf('0xc1')]?{'id':_0x3f1e7d[_0xefaf('0x46')]['tag']}:undefined,'required':_0x3f1e7d[_0xefaf('0x46')][_0xefaf('0xc1')]?!![]:![]}];}return db[_0xefaf('0x9e')]['findAll'](_0xc12d51);})[_0xefaf('0x1e')](function(_0x296899){_0x8e484f['rows']=_0x296899;return _0x8e484f;});}})['then'](respondWithFilteredResult(_0x5ece22,_0xc12d51))['catch'](handleError(_0x5ece22,null));};exports[_0xefaf('0x3b')]=function(_0x3f5f28,_0x40e801,_0x3b7fd5){var _0x5a1e58,_0x3bf56d,_0x40441b;if(_['isNil'](_0x3f5f28['body'][_0xefaf('0x5d')])||_0x3f5f28[_0xefaf('0x5d')][_0xefaf('0x5d')]===''){throw new db[(_0xefaf('0x74'))][(_0xefaf('0x75'))](_0xefaf('0x95'));}if(_['isNil'](_0x3f5f28['body']['to'])){throw new db[(_0xefaf('0x74'))][(_0xefaf('0x75'))](_0xefaf('0xc2'));}_0x5a1e58=_0x3f5f28[_0xefaf('0x5d')]['to'];return db[_0xefaf('0x3e')][_0xefaf('0x5b')]({'where':{'id':_0x3f5f28[_0xefaf('0x57')]['id']},'include':[{'model':db[_0xefaf('0x99')],'as':_0xefaf('0xc3'),'include':[{'model':db[_0xefaf('0x73')],'as':'Contacts','where':{'mobile':_0x5a1e58},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0xefaf('0x1e')](handleEntityNotFound(_0x40e801,null))[_0xefaf('0x1e')](function(_0x481c6c){if(_0x481c6c&&_0x481c6c[_0xefaf('0xc3')]){_0x3bf56d=_0x481c6c[_0xefaf('0x37')]({'plain':!![]});if(_0x3bf56d['List']&&_0x3bf56d[_0xefaf('0xc3')][_0xefaf('0x9c')][_0xefaf('0x5a')]){return _0x3bf56d['List']['Contacts'][0x0];}return db['CmContact'][_0xefaf('0x5c')](_[_0xefaf('0x18')](_0x3f5f28[_0xefaf('0x5d')],{'firstName':_0x5a1e58,'mobile':_0x5a1e58,'phone':_0x5a1e58,'ListId':_0x3bf56d[_0xefaf('0x7b')]}));}})[_0xefaf('0x1e')](handleEntityNotFound(_0x40e801,null))['then'](function(_0x45d196){if(_0x45d196){_0x40441b=_0x45d196;return db[_0xefaf('0x9e')][_0xefaf('0x5b')]({'where':{'ContactId':_0x40441b['id'],'closed':![],'SmsAccountId':_0x3bf56d['id']}})['then'](function(_0x5cd29b){if(_0x5cd29b){return[_0x5cd29b,![]];}return db[_0xefaf('0x9e')]['create']({'UserId':_0x3f5f28[_0xefaf('0x5e')]['id'],'ContactId':_0x40441b['id'],'SmsAccountId':_0x3bf56d['id'],'phone':_0x5a1e58,'firstMsgDirection':_0xefaf('0xc4'),'Messages':[_['merge'](_0x3f5f28['body'],{'read':![],'body':_0x3f5f28[_0xefaf('0x5d')]['body'],'phone':_0x5a1e58,'SmsAccountId':_0x3bf56d['id'],'UserId':_0x3f5f28[_0xefaf('0x5e')]['id'],'ContactId':_0x40441b['id']})]},{'include':[{'model':db[_0xefaf('0xa7')],'as':_0xefaf('0xc5')}]})[_0xefaf('0x1e')](function(_0x498f9c){return[_0x498f9c,!![]];});});}})[_0xefaf('0x9f')](function(_0x2569b2,_0x20d24c){if(_0x20d24c){return _0x2569b2;}return db[_0xefaf('0xa7')][_0xefaf('0x5c')](_[_0xefaf('0x50')](_0x3f5f28[_0xefaf('0x5d')],{'read':![],'body':_0x3f5f28[_0xefaf('0x5d')][_0xefaf('0x5d')],'phone':_0x5a1e58,'SmsAccountId':_0x3bf56d['id'],'SmsInteractionId':_0x2569b2['id'],'UserId':_0x3f5f28[_0xefaf('0x5e')]['id'],'ContactId':_0x40441b['id']}))[_0xefaf('0x1e')](function(_0x430eec){_0x2569b2[_0xefaf('0xc6')][_0xefaf('0xc5')]=[];_0x2569b2['dataValues']['Messages'][_0xefaf('0xc7')](_0x430eec[_0xefaf('0xc6')]);return _0x2569b2;});})[_0xefaf('0x1e')](respondWithResult(_0x40e801,null))[_0xefaf('0x27')](handleError(_0x40e801,null));};exports['status']=function(_0x6492f1,_0x2678e7,_0x2bc850){if(_0x6492f1[_0xefaf('0x5d')]['id']){delete _0x6492f1[_0xefaf('0x5d')]['id'];}var _0x2351d6,_0x53f02e,_0x4e81a7;return db['SmsAccount'][_0xefaf('0x5b')]({'where':{'id':_0x6492f1[_0xefaf('0x57')]['id']}})['then'](handleEntityNotFound(_0x2678e7,null))[_0xefaf('0x1e')](function(_0xe7d836){if(_0xe7d836){_0x4e81a7=_0xe7d836;logger[_0xefaf('0x21')](_0xefaf('0xb0'),'status',_0xefaf('0xc8'),_0xe7d836[_0xefaf('0x41')],util[_0xefaf('0xc9')](_0x6492f1['body'],{'showHidden':![],'depth':null}));switch(_0xe7d836[_0xefaf('0x41')]){case _0xefaf('0x83'):if(_0x6492f1[_0xefaf('0x5d')]['skebby_dispatch_id']&&_0x6492f1[_0xefaf('0x5d')][_0xefaf('0x29')]){_0x53f02e=_0x6492f1[_0xefaf('0x5d')][_0xefaf('0x29')];return db['SmsMessage'][_0xefaf('0x5b')]({'where':{'messageId':_0x6492f1[_0xefaf('0x5d')]['skebby_dispatch_id']}});}break;case _0xefaf('0x86'):if(_0x6492f1['body'][_0xefaf('0xca')]&&_0x6492f1[_0xefaf('0x5d')][_0xefaf('0xcb')]){_0x53f02e=_0x6492f1[_0xefaf('0x5d')][_0xefaf('0xcb')];return db[_0xefaf('0xa7')]['find']({'where':{'messageId':_0x6492f1['body'][_0xefaf('0xca')]}});}break;case'clicksend':if(_0x6492f1[_0xefaf('0x5d')][_0xefaf('0x88')]&&_0x6492f1['body'][_0xefaf('0xcc')]){_0x53f02e=_0x6492f1[_0xefaf('0x5d')][_0xefaf('0xcc')];return db[_0xefaf('0xa7')][_0xefaf('0x5b')]({'where':{'messageId':_0x6492f1['body']['message_id']}});}break;case _0xefaf('0x8c'):var _0xbd4b3b=_0x6492f1['body'][_0xefaf('0x8d')][0x0];if(_0xbd4b3b[_0xefaf('0x81')]&&_0xbd4b3b['status']['groupName']===_0xefaf('0xcd')){_0x53f02e=_0xbd4b3b['status']['groupName'];return db[_0xefaf('0xa7')][_0xefaf('0x5b')]({'where':{'messageId':_0xbd4b3b[_0xefaf('0x81')]}});}break;case _0xefaf('0xce'):if(_0x6492f1['body'][_0xefaf('0x81')]&&_0x6492f1[_0xefaf('0x5d')]['status']){_0x53f02e=_0x6492f1[_0xefaf('0x5d')][_0xefaf('0x29')];return db['SmsMessage'][_0xefaf('0x5b')]({'where':{'messageId':_0x6492f1[_0xefaf('0x5d')][_0xefaf('0x81')]}});}break;case _0xefaf('0xcf'):if(_0x6492f1[_0xefaf('0x5d')][0x0][_0xefaf('0x24')]['id']){_0x53f02e=_0x6492f1[_0xefaf('0x5d')][0x0][_0xefaf('0x41')];return db[_0xefaf('0xa7')][_0xefaf('0x5b')]({'where':{'messageId':_0x6492f1[_0xefaf('0x5d')][0x0][_0xefaf('0x24')]['id']}});}break;case _0xefaf('0x91'):if(_0x6492f1[_0xefaf('0x5d')][_0xefaf('0xd0')]&&_0x6492f1[_0xefaf('0x5d')][_0xefaf('0x29')]){_0x53f02e=_0x6492f1[_0xefaf('0x5d')][_0xefaf('0x29')];return db['SmsMessage'][_0xefaf('0x5b')]({'where':{'messageId':_0x6492f1[_0xefaf('0x5d')][_0xefaf('0xd0')]}});}break;}}})[_0xefaf('0x1e')](handleEntityNotFound(_0x2678e7,null))['then'](function(_0x445dc9){if(_0x445dc9){_0x2351d6=_0x445dc9;switch(_0x4e81a7[_0xefaf('0x41')]){case _0xefaf('0x83'):if(_0x53f02e==='DELIVERED'){return _0x2351d6[_0xefaf('0x35')]({'read':!![]});}else{logger[_0xefaf('0x22')](_0xefaf('0xb0'),_0xefaf('0x29'),_0xefaf('0x83'),util['inspect'](_0x6492f1[_0xefaf('0x5d')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x53f02e==='1'){return _0x2351d6[_0xefaf('0x35')]({'read':!![]});}else{logger[_0xefaf('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xefaf('0x83'),util['inspect'](_0x6492f1['body'],{'showHidden':![],'depth':null}));}break;case _0xefaf('0x87'):if(!_0x6492f1[_0xefaf('0x5d')][_0xefaf('0xd1')]&&_0x53f02e>=0xc8&&_0x53f02e<=0xce){return _0x2351d6[_0xefaf('0x35')]({'read':!![]});}else{logger['error'](_0xefaf('0xb0'),'status',_0xefaf('0x87'),util[_0xefaf('0xc9')](_0x6492f1[_0xefaf('0x5d')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0xe422d2=_0x6492f1[_0xefaf('0x5d')][_0xefaf('0x8d')][0x0];if(_0xe422d2[_0xefaf('0x29')]['groupName']===_0xefaf('0xcd')){return _0x2351d6[_0xefaf('0x35')]({'read':!![]});}else{logger[_0xefaf('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xefaf('0x29'),_0xefaf('0x8c'),util[_0xefaf('0xc9')](_0x6492f1['body'],{'showHidden':![],'depth':null}));}break;case _0xefaf('0xce'):if(_0x53f02e=='DELIVERED_TO_GATEWAY'||_0x53f02e==_0xefaf('0xd2')){return _0x2351d6[_0xefaf('0x35')]({'read':!![]});}else{logger[_0xefaf('0x22')](_0xefaf('0xb0'),_0xefaf('0x29'),'clickatell',util[_0xefaf('0xc9')](_0x6492f1['body'],{'showHidden':![],'depth':null}));}break;case _0xefaf('0xcf'):if(_0x53f02e==_0xefaf('0xd3')){return _0x2351d6[_0xefaf('0x35')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xefaf('0x29'),'bandwidth',util[_0xefaf('0xc9')](_0x6492f1[_0xefaf('0x5d')],{'showHidden':![],'depth':null}));}break;case _0xefaf('0x91'):if(_0x53f02e===_0xefaf('0xd4')||_0x53f02e===_0xefaf('0xd5')){return _0x2351d6[_0xefaf('0x35')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xefaf('0x91'),util[_0xefaf('0xc9')](_0x6492f1[_0xefaf('0x5d')],{'showHidden':![],'depth':null}));}break;}return _0x2351d6;}})[_0xefaf('0x1e')](respondWithResult(_0x2678e7,null))[_0xefaf('0x27')](handleError(_0x2678e7,null));};exports[_0xefaf('0xd6')]=function(_0xecb212,_0x1deb79,_0x22be74){var _0x2e8a8d,_0x2f7ebc,_0x5c523a;return db['SmsAccount'][_0xefaf('0x5b')]({'where':{'id':_0xecb212[_0xefaf('0x57')]['id']}})[_0xefaf('0x1e')](handleEntityNotFound(_0x1deb79,null))[_0xefaf('0x1e')](function(_0x8e06c6){if(_0x8e06c6){_0x5c523a=_0x8e06c6;logger['debug'](_0xefaf('0xb0'),'status',_0xefaf('0xc8'),_0x8e06c6[_0xefaf('0x41')],util[_0xefaf('0xc9')](_0xecb212['query'],{'showHidden':![],'depth':null}));switch(_0x8e06c6['type']){case'csc':if(_0xecb212[_0xefaf('0x46')][_0xefaf('0xd7')]&&_0xecb212[_0xefaf('0x46')][_0xefaf('0xd8')]){_0x2f7ebc=_0xecb212[_0xefaf('0x46')][_0xefaf('0xd8')];return db['SmsMessage']['find']({'where':{'messageId':_0xecb212['query'][_0xefaf('0xd7')]}});}break;}}})[_0xefaf('0x1e')](handleEntityNotFound(_0x1deb79,null))[_0xefaf('0x1e')](function(_0x246435){if(_0x246435){_0x2e8a8d=_0x246435;switch(_0x5c523a[_0xefaf('0x41')]){case _0xefaf('0xd9'):if(_0x2f7ebc==='2'||_0x2f7ebc==='6'){return _0x2e8a8d['update']({'read':!![]});}else{logger[_0xefaf('0x22')](_0xefaf('0xb0'),_0xefaf('0x29'),_0xefaf('0xd9'),util[_0xefaf('0xc9')](_0xecb212[_0xefaf('0x46')],{'showHidden':![],'depth':null}));};break;}return _0x2e8a8d;}})[_0xefaf('0x1e')](respondWithResult(_0x1deb79,null))[_0xefaf('0x27')](handleError(_0x1deb79,null));};exports[_0xefaf('0xda')]=function(_0x2f6ba7,_0x2fe129,_0x84dd35){return db[_0xefaf('0x3e')]['find']({'where':{'id':_0x2f6ba7[_0xefaf('0x57')]['id']}})[_0xefaf('0x1e')](handleEntityNotFound(_0x2fe129,null))['then'](function(_0x2070fa){if(_0x2070fa){return _0x2070fa[_0xefaf('0xda')](_0x2f6ba7[_0xefaf('0x5d')][_0xefaf('0x69')],_[_0xefaf('0x9b')](_0x2f6ba7[_0xefaf('0x5d')],[_0xefaf('0x69'),'id'])||{})[_0xefaf('0x9f')](function(_0x3a7e7f){for(var _0x2952a7=0x0;_0x2952a7<_0x2f6ba7[_0xefaf('0x5d')][_0xefaf('0x69')]['length'];_0x2952a7+=0x1){socket[_0xefaf('0xdb')]('userSmsAccount:save',{'UserId':Number(_0x2f6ba7[_0xefaf('0x5d')][_0xefaf('0x69')][_0x2952a7]),'SmsAccountId':Number(_0x2f6ba7['params']['id'])});}return _0x3a7e7f;});}})[_0xefaf('0x1e')](respondWithResult(_0x2fe129,null))[_0xefaf('0x27')](handleError(_0x2fe129,null));};exports['removeAgents']=function(_0x3cb875,_0x526aac,_0x39fe86){return db[_0xefaf('0x3e')][_0xefaf('0x5b')]({'where':{'id':_0x3cb875['params']['id']}})[_0xefaf('0x1e')](handleEntityNotFound(_0x526aac,null))[_0xefaf('0x1e')](function(_0x1f5bbc){if(_0x1f5bbc){return _0x1f5bbc[_0xefaf('0xdc')](_0x3cb875[_0xefaf('0x46')][_0xefaf('0x69')])['then'](function(){if(_[_0xefaf('0xdd')](_0x3cb875[_0xefaf('0x46')][_0xefaf('0x69')])){for(var _0x700d32=0x0;_0x700d32<_0x3cb875[_0xefaf('0x46')][_0xefaf('0x69')]['length'];_0x700d32+=0x1){socket[_0xefaf('0xdb')](_0xefaf('0xde'),{'UserId':Number(_0x3cb875[_0xefaf('0x46')][_0xefaf('0x69')][_0x700d32]),'SmsAccountId':Number(_0x3cb875[_0xefaf('0x57')]['id'])});}}else{socket[_0xefaf('0xdb')]('userSmsAccount:remove',{'UserId':Number(_0x3cb875['query']['ids']),'SmsAccountId':Number(_0x3cb875[_0xefaf('0x57')]['id'])});}});}})[_0xefaf('0x1e')](respondWithStatusCode(_0x526aac,null))['catch'](handleError(_0x526aac,null));};exports['getAgents']=function(_0x48d0fc,_0x21de4c,_0x47d465){var _0x34aafd={};var _0x2f1e46={};var _0x4d1629;var _0x4066ea;return db[_0xefaf('0x3e')][_0xefaf('0x6c')]({'where':{'id':_0x48d0fc[_0xefaf('0x57')]['id']}})['then'](handleEntityNotFound(_0x21de4c,null))[_0xefaf('0x1e')](function(_0x41ee83){if(_0x41ee83){_0x4d1629=_0x41ee83;_0x2f1e46[_0xefaf('0x43')]=_['keys'](db[_0xefaf('0xaa')][_0xefaf('0x3f')]);_0x2f1e46[_0xefaf('0x46')]=_[_0xefaf('0x44')](_0x48d0fc[_0xefaf('0x46')]);_0x2f1e46[_0xefaf('0x4c')]=_[_0xefaf('0x45')](_0x2f1e46[_0xefaf('0x43')],_0x2f1e46[_0xefaf('0x46')]);_0x34aafd[_0xefaf('0x59')]=_[_0xefaf('0x45')](_0x2f1e46[_0xefaf('0x43')],qs['fields'](_0x48d0fc[_0xefaf('0x46')][_0xefaf('0x47')]));_0x34aafd[_0xefaf('0x59')]=_0x34aafd[_0xefaf('0x59')]['length']?_0x34aafd[_0xefaf('0x59')]:_0x2f1e46[_0xefaf('0x43')];_0x34aafd[_0xefaf('0x49')]=qs[_0xefaf('0x4a')](_0x48d0fc[_0xefaf('0x46')]['sort']);_0x34aafd['where']=qs[_0xefaf('0x4c')](_['pick'](_0x48d0fc[_0xefaf('0x46')],_0x2f1e46[_0xefaf('0x4c')]));if(_0x48d0fc[_0xefaf('0x46')][_0xefaf('0x4e')]){_0x34aafd[_0xefaf('0x4b')]=_['merge'](_0x34aafd[_0xefaf('0x4b')],{'$or':_[_0xefaf('0x3d')](_0x34aafd[_0xefaf('0x59')],function(_0xf701fd){var _0x41fac1={};_0x41fac1[_0xf701fd]={'$like':'%'+_0x48d0fc['query'][_0xefaf('0x4e')]+'%'};return _0x41fac1;})});}_0x34aafd=_[_0xefaf('0x50')]({},_0x34aafd,_0x48d0fc[_0xefaf('0x51')]);return _0x4d1629[_0xefaf('0xdf')](_0x34aafd);}})[_0xefaf('0x1e')](function(_0x6b0d02){if(_0x6b0d02){_0x4066ea=_0x6b0d02[_0xefaf('0x5a')];if(!_0x48d0fc[_0xefaf('0x46')][_0xefaf('0x48')](_0xefaf('0x6d'))){_0x34aafd[_0xefaf('0x2f')]=qs[_0xefaf('0x2f')](_0x48d0fc[_0xefaf('0x46')][_0xefaf('0x2f')]);_0x34aafd[_0xefaf('0x2c')]=qs['offset'](_0x48d0fc['query'][_0xefaf('0x2c')]);}return _0x4d1629[_0xefaf('0xdf')](_0x34aafd);}})[_0xefaf('0x1e')](function(_0x1d1a97){if(_0x1d1a97){return _0x1d1a97?{'count':_0x4066ea,'rows':_0x1d1a97}:null;}})['then'](respondWithResult(_0x21de4c,null))[_0xefaf('0x27')](handleError(_0x21de4c,null));};
\ No newline at end of file
index d60c041..3039485 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x251b=['exports','events','../../mysqldb','SmsAccount','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x51a73b,_0x43a16f){var _0x3582b0=function(_0x26bd2f){while(--_0x26bd2f){_0x51a73b['push'](_0x51a73b['shift']());}};_0x3582b0(++_0x43a16f);}(_0x251b,0x1b1));var _0xb251=function(_0x650e11,_0x284f86){_0x650e11=_0x650e11-0x0;var _0x1a9b47=_0x251b[_0x650e11];return _0x1a9b47;};'use strict';var EventEmitter=require(_0xb251('0x0'));var SmsAccount=require(_0xb251('0x1'))['db'][_0xb251('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xb251('0x3')](0x0);var events={'afterCreate':_0xb251('0x4'),'afterUpdate':'update','afterDestroy':_0xb251('0x5')};function emitEvent(_0x4c1fbb){return function(_0x14dde6,_0x44ceab,_0x53f631){SmsAccountEvents['emit'](_0x4c1fbb+':'+_0x14dde6['id'],_0x14dde6);SmsAccountEvents[_0xb251('0x6')](_0x4c1fbb,_0x14dde6);_0x53f631(null);};}for(var e in events){if(events[_0xb251('0x7')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0xb251('0x8')]=SmsAccountEvents;
\ No newline at end of file
+var _0xa58e=['SmsAccount','setMaxListeners','save','update','emit','hook','exports','events','../../mysqldb'];(function(_0x1f4305,_0x58c571){var _0x222fed=function(_0xa45a04){while(--_0xa45a04){_0x1f4305['push'](_0x1f4305['shift']());}};_0x222fed(++_0x58c571);}(_0xa58e,0x18a));var _0xea58=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xa58e[_0x59ee6f];return _0x4c0979;};'use strict';var EventEmitter=require(_0xea58('0x0'));var SmsAccount=require(_0xea58('0x1'))['db'][_0xea58('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xea58('0x3')](0x0);var events={'afterCreate':_0xea58('0x4'),'afterUpdate':_0xea58('0x5'),'afterDestroy':'remove'};function emitEvent(_0x318ca7){return function(_0x4def7f,_0x209928,_0x3a3235){SmsAccountEvents[_0xea58('0x6')](_0x318ca7+':'+_0x4def7f['id'],_0x4def7f);SmsAccountEvents[_0xea58('0x6')](_0x318ca7,_0x4def7f);_0x3a3235(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount[_0xea58('0x7')](e,emitEvent(event));}}module[_0xea58('0x8')]=SmsAccountEvents;
\ No newline at end of file
index 40cace4..bd54c43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1171=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','SmsAccount','lodash'];(function(_0x4d26f9,_0x505d76){var _0x31eed7=function(_0x1c084d){while(--_0x1c084d){_0x4d26f9['push'](_0x4d26f9['shift']());}};_0x31eed7(++_0x505d76);}(_0x1171,0x83));var _0x1117=function(_0x340da7,_0x13d6fc){_0x340da7=_0x340da7-0x0;var _0x43b466=_0x1171[_0x340da7];return _0x43b466;};'use strict';var _=require(_0x1117('0x0'));var util=require(_0x1117('0x1'));var logger=require(_0x1117('0x2'))(_0x1117('0x3'));var moment=require(_0x1117('0x4'));var BPromise=require(_0x1117('0x5'));var rp=require(_0x1117('0x6'));var fs=require('fs');var path=require(_0x1117('0x7'));var rimraf=require('rimraf');var config=require(_0x1117('0x8'));var attributes=require('./smsAccount.attributes');module[_0x1117('0x9')]=function(_0x579ec0,_0x380204){return _0x579ec0['define'](_0x1117('0xa'),attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e99=['./smsAccount.attributes','exports','SmsAccount','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x15beea,_0x4fcc88){var _0x1e4067=function(_0x9a8e40){while(--_0x9a8e40){_0x15beea['push'](_0x15beea['shift']());}};_0x1e4067(++_0x4fcc88);}(_0x2e99,0x1c6));var _0x92e9=function(_0x54e11b,_0x3dec94){_0x54e11b=_0x54e11b-0x0;var _0x3b0750=_0x2e99[_0x54e11b];return _0x3b0750;};'use strict';var _=require(_0x92e9('0x0'));var util=require('util');var logger=require(_0x92e9('0x1'))('api');var moment=require(_0x92e9('0x2'));var BPromise=require(_0x92e9('0x3'));var rp=require(_0x92e9('0x4'));var fs=require('fs');var path=require(_0x92e9('0x5'));var rimraf=require(_0x92e9('0x6'));var config=require(_0x92e9('0x7'));var attributes=require(_0x92e9('0x8'));module[_0x92e9('0x9')]=function(_0x4ea51c,_0x2948ea){return _0x4ea51c['define'](_0x92e9('0xa'),attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a93cd08..ef8c8f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03ec=['code','message','info','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','include','map','model','attributes','then','stringify','util','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./smsAccount.socket','register','request','SmsAccount,\x20%s,\x20%s','debug','request\x20sent','error'];(function(_0x4f7a5a,_0x6a0ad0){var _0x15b752=function(_0x601342){while(--_0x601342){_0x4f7a5a['push'](_0x4f7a5a['shift']());}};_0x15b752(++_0x6a0ad0);}(_0x03ec,0x16f));var _0xc03e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x03ec[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xc03e('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc03e('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc03e('0x2'));var logger=require(_0xc03e('0x3'))(_0xc03e('0x4'));var config=require(_0xc03e('0x5'));var jayson=require(_0xc03e('0x6'));var client=jayson[_0xc03e('0x7')]['http']({'port':0x232a});config[_0xc03e('0x8')]=_[_0xc03e('0x9')](config[_0xc03e('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xc03e('0xa'))(new Redis(config[_0xc03e('0x8')]));require(_0xc03e('0xb'))[_0xc03e('0xc')](socket);function respondWithRpcPromise(_0x2b0c75,_0x7e06ae,_0x2adeb5){return new BPromise(function(_0x5b2cdc,_0x76c09b){return client[_0xc03e('0xd')](_0x2b0c75,_0x2adeb5)['then'](function(_0x4b6154){logger['info'](_0xc03e('0xe'),_0x7e06ae,'request\x20sent');logger[_0xc03e('0xf')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x7e06ae,_0xc03e('0x10'),JSON['stringify'](_0x4b6154));if(_0x4b6154['error']){if(_0x4b6154[_0xc03e('0x11')][_0xc03e('0x12')]===0x1f4){logger[_0xc03e('0x11')](_0xc03e('0xe'),_0x7e06ae,_0x4b6154[_0xc03e('0x11')]['message']);return _0x76c09b(_0x4b6154[_0xc03e('0x11')][_0xc03e('0x13')]);}logger[_0xc03e('0x11')](_0xc03e('0xe'),_0x7e06ae,_0x4b6154[_0xc03e('0x11')]['message']);return _0x5b2cdc(_0x4b6154[_0xc03e('0x11')][_0xc03e('0x13')]);}else{logger[_0xc03e('0x14')](_0xc03e('0xe'),_0x7e06ae,'request\x20sent');_0x5b2cdc(_0x4b6154[_0xc03e('0x15')][_0xc03e('0x13')]);}})[_0xc03e('0x16')](function(_0x4d5f86){logger[_0xc03e('0x11')]('SmsAccount,\x20%s,\x20%s',_0x7e06ae,_0x4d5f86);_0x76c09b(_0x4d5f86);});});}exports[_0xc03e('0x17')]=function(_0x2f80af){var _0x3bbaa5=this;return new Promise(function(_0x2d5df6,_0x10e842){return db[_0xc03e('0x18')][_0xc03e('0x19')]({'raw':_0x2f80af[_0xc03e('0x1a')]?_0x2f80af[_0xc03e('0x1a')][_0xc03e('0x1b')]===undefined?!![]:![]:!![],'where':_0x2f80af['options']?_0x2f80af[_0xc03e('0x1a')][_0xc03e('0x1c')]||null:null,'attributes':_0x2f80af[_0xc03e('0x1a')]?_0x2f80af[_0xc03e('0x1a')]['attributes']||null:null,'include':_0x2f80af['options']?_0x2f80af[_0xc03e('0x1a')][_0xc03e('0x1d')]?_[_0xc03e('0x1e')](_0x2f80af[_0xc03e('0x1a')][_0xc03e('0x1d')],function(_0x584203){return{'model':db[_0x584203[_0xc03e('0x1f')]],'as':_0x584203['as'],'attributes':_0x584203[_0xc03e('0x20')],'include':_0x584203[_0xc03e('0x1d')]?_[_0xc03e('0x1e')](_0x584203[_0xc03e('0x1d')],function(_0xe7735a){return{'model':db[_0xe7735a[_0xc03e('0x1f')]],'as':_0xe7735a['as'],'attributes':_0xe7735a[_0xc03e('0x20')],'include':_0xe7735a[_0xc03e('0x1d')]?_[_0xc03e('0x1e')](_0xe7735a[_0xc03e('0x1d')],function(_0x50b74a){return{'model':db[_0x50b74a[_0xc03e('0x1f')]],'as':_0x50b74a['as'],'attributes':_0x50b74a['attributes']};}):[]};}):[]};}):[]:[]})[_0xc03e('0x21')](function(_0x3f9a83){logger[_0xc03e('0x14')](_0xc03e('0x17'),_0x2f80af);logger[_0xc03e('0xf')]('ShowSmsAccount',_0x2f80af,JSON[_0xc03e('0x22')](_0x3f9a83));_0x2d5df6(_0x3f9a83);})['catch'](function(_0xe2eff5){logger[_0xc03e('0x11')](_0xc03e('0x17'),_0xe2eff5[_0xc03e('0x13')],_0x2f80af);_0x10e842(_0x3bbaa5[_0xc03e('0x11')](0x1f4,_0xe2eff5['message']));});});};
\ No newline at end of file
+var _0xc0be=['message','result','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','include','map','model','stringify','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','SmsAccount,\x20%s,\x20%s'];(function(_0x3dd2e4,_0x568209){var _0x4b534d=function(_0x43f33b){while(--_0x43f33b){_0x3dd2e4['push'](_0x3dd2e4['shift']());}};_0x4b534d(++_0x568209);}(_0xc0be,0x15b));var _0xec0b=function(_0x445a32,_0x1c0d3c){_0x445a32=_0x445a32-0x0;var _0x406da3=_0xc0be[_0x445a32];return _0x406da3;};'use strict';var _=require(_0xec0b('0x0'));var util=require(_0xec0b('0x1'));var moment=require(_0xec0b('0x2'));var BPromise=require('bluebird');var rs=require(_0xec0b('0x3'));var fs=require('fs');var Redis=require(_0xec0b('0x4'));var db=require(_0xec0b('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xec0b('0x6'));var jayson=require(_0xec0b('0x7'));var client=jayson[_0xec0b('0x8')]['http']({'port':0x232a});config['redis']=_[_0xec0b('0x9')](config[_0xec0b('0xa')],{'host':_0xec0b('0xb'),'port':0x18eb});var socket=require(_0xec0b('0xc'))(new Redis(config[_0xec0b('0xa')]));require(_0xec0b('0xd'))[_0xec0b('0xe')](socket);function respondWithRpcPromise(_0x2d0448,_0x199b21,_0x547664){return new BPromise(function(_0x3146c4,_0x50b9d4){return client[_0xec0b('0xf')](_0x2d0448,_0x547664)[_0xec0b('0x10')](function(_0x594ce8){logger[_0xec0b('0x11')]('SmsAccount,\x20%s,\x20%s',_0x199b21,_0xec0b('0x12'));logger[_0xec0b('0x13')](_0xec0b('0x14'),_0x199b21,_0xec0b('0x12'),JSON['stringify'](_0x594ce8));if(_0x594ce8[_0xec0b('0x15')]){if(_0x594ce8[_0xec0b('0x15')]['code']===0x1f4){logger[_0xec0b('0x15')](_0xec0b('0x16'),_0x199b21,_0x594ce8['error'][_0xec0b('0x17')]);return _0x50b9d4(_0x594ce8[_0xec0b('0x15')][_0xec0b('0x17')]);}logger['error'](_0xec0b('0x16'),_0x199b21,_0x594ce8[_0xec0b('0x15')][_0xec0b('0x17')]);return _0x3146c4(_0x594ce8[_0xec0b('0x15')][_0xec0b('0x17')]);}else{logger['info'](_0xec0b('0x16'),_0x199b21,_0xec0b('0x12'));_0x3146c4(_0x594ce8[_0xec0b('0x18')][_0xec0b('0x17')]);}})['catch'](function(_0x17eb1c){logger[_0xec0b('0x15')](_0xec0b('0x16'),_0x199b21,_0x17eb1c);_0x50b9d4(_0x17eb1c);});});}exports[_0xec0b('0x19')]=function(_0x4d0812){var _0x167dd2=this;return new Promise(function(_0x4a5dee,_0x58ea6e){return db[_0xec0b('0x1a')][_0xec0b('0x1b')]({'raw':_0x4d0812[_0xec0b('0x1c')]?_0x4d0812[_0xec0b('0x1c')][_0xec0b('0x1d')]===undefined?!![]:![]:!![],'where':_0x4d0812['options']?_0x4d0812[_0xec0b('0x1c')][_0xec0b('0x1e')]||null:null,'attributes':_0x4d0812['options']?_0x4d0812[_0xec0b('0x1c')][_0xec0b('0x1f')]||null:null,'include':_0x4d0812[_0xec0b('0x1c')]?_0x4d0812['options'][_0xec0b('0x20')]?_[_0xec0b('0x21')](_0x4d0812['options']['include'],function(_0xb33f48){return{'model':db[_0xb33f48['model']],'as':_0xb33f48['as'],'attributes':_0xb33f48[_0xec0b('0x1f')],'include':_0xb33f48[_0xec0b('0x20')]?_[_0xec0b('0x21')](_0xb33f48[_0xec0b('0x20')],function(_0x43b5c3){return{'model':db[_0x43b5c3[_0xec0b('0x22')]],'as':_0x43b5c3['as'],'attributes':_0x43b5c3[_0xec0b('0x1f')],'include':_0x43b5c3[_0xec0b('0x20')]?_[_0xec0b('0x21')](_0x43b5c3[_0xec0b('0x20')],function(_0x57961f){return{'model':db[_0x57961f['model']],'as':_0x57961f['as'],'attributes':_0x57961f[_0xec0b('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xec0b('0x10')](function(_0x37c14e){logger['info'](_0xec0b('0x19'),_0x4d0812);logger['debug']('ShowSmsAccount',_0x4d0812,JSON[_0xec0b('0x23')](_0x37c14e));_0x4a5dee(_0x37c14e);})[_0xec0b('0x24')](function(_0x154425){logger[_0xec0b('0x15')](_0xec0b('0x19'),_0x154425[_0xec0b('0x17')],_0x4d0812);_0x58ea6e(_0x167dd2[_0xec0b('0x15')](0x1f4,_0x154425[_0xec0b('0x17')]));});});};
\ No newline at end of file
index be93f35..9137240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xa9e0[_0x3635ce];return _0x97ecd0;};'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(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'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 8d73fda..298a699 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','post','put','/:id'];(function(_0x5b81d0,_0x1e6dcd){var _0x4e90fa=function(_0x121176){while(--_0x121176){_0x5b81d0['push'](_0x5b81d0['shift']());}};_0x4e90fa(++_0x1e6dcd);}(_0x008c,0x188));var _0xc008=function(_0x5bdf8e,_0x45d970){_0x5bdf8e=_0x5bdf8e-0x0;var _0x3e0750=_0x008c[_0x5bdf8e];return _0x3e0750;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/:id',auth[_0xc008('0xb')](),controller['show']);router[_0xc008('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc008('0xe')](_0xc008('0xf'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xc008('0xf'),auth[_0xc008('0xb')](),controller['destroy']);module[_0xc008('0x10')]=router;
\ No newline at end of file
+var _0x008c=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','post','put','/:id'];(function(_0x5dfafd,_0x36381e){var _0x113594=function(_0x219ad2){while(--_0x219ad2){_0x5dfafd['push'](_0x5dfafd['shift']());}};_0x113594(++_0x36381e);}(_0x008c,0x188));var _0xc008=function(_0x4d452c,_0x1e69be){_0x4d452c=_0x4d452c-0x0;var _0x4bed65=_0x008c[_0x4d452c];return _0x4bed65;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/:id',auth[_0xc008('0xb')](),controller['show']);router[_0xc008('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc008('0xe')](_0xc008('0xf'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xc008('0xf'),auth[_0xc008('0xb')](),controller['destroy']);module[_0xc008('0x10')]=router;
\ No newline at end of file
index b5a6ed1..dd683cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x693a=['INTEGER','STRING','TEXT','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x693a,0x9e));var _0xa693=function(_0x1d2bc8,_0x2860bc){_0x1d2bc8=_0x1d2bc8-0x0;var _0x1857e1=_0x693a[_0x1d2bc8];return _0x1857e1;};'use strict';var Sequelize=require(_0xa693('0x0'));module[_0xa693('0x1')]={'priority':{'type':Sequelize[_0xa693('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xa693('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xa693('0x4')]()},'description':{'type':Sequelize[_0xa693('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x06fd=['*,*,*,*','sequelize','INTEGER','STRING','noop','TEXT'];(function(_0x4d180c,_0x45c68e){var _0x49b57e=function(_0x264741){while(--_0x264741){_0x4d180c['push'](_0x4d180c['shift']());}};_0x49b57e(++_0x45c68e);}(_0x06fd,0x1d5));var _0xd06f=function(_0x525d35,_0xe67489){_0x525d35=_0x525d35-0x0;var _0x4813d2=_0x06fd[_0x525d35];return _0x4813d2;};'use strict';var Sequelize=require(_0xd06f('0x0'));module['exports']={'priority':{'type':Sequelize[_0xd06f('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xd06f('0x2')],'allowNull':![],'defaultValue':_0xd06f('0x3')},'appdata':{'type':Sequelize[_0xd06f('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xd06f('0x2')],'defaultValue':_0xd06f('0x5')}};
\ No newline at end of file
index 0980762..cf89351 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaa4=['send','index','map','SmsApplication','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','rows','show','fields','length','include','find','body','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','json','apply','reject','save','update','then','destroy','name'];(function(_0x6b0c5f,_0x556b4f){var _0x1335c6=function(_0x1de218){while(--_0x1de218){_0x6b0c5f['push'](_0x6b0c5f['shift']());}};_0x1335c6(++_0x556b4f);}(_0xcaa4,0x10b));var _0x4caa=function(_0x5ad0c8,_0xd4b88a){_0x5ad0c8=_0x5ad0c8-0x0;var _0xefff34=_0xcaa4[_0x5ad0c8];return _0xefff34;};'use strict';var emlformat=require(_0x4caa('0x0'));var rimraf=require(_0x4caa('0x1'));var zipdir=require(_0x4caa('0x2'));var jsonpatch=require(_0x4caa('0x3'));var rp=require('request-promise');var moment=require(_0x4caa('0x4'));var BPromise=require(_0x4caa('0x5'));var Mustache=require(_0x4caa('0x6'));var util=require(_0x4caa('0x7'));var path=require(_0x4caa('0x8'));var sox=require(_0x4caa('0x9'));var csv=require(_0x4caa('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4caa('0xb'));var _=require(_0x4caa('0xc'));var squel=require(_0x4caa('0xd'));var crypto=require(_0x4caa('0xe'));var jsforce=require(_0x4caa('0xf'));var deskjs=require(_0x4caa('0x10'));var toCsv=require(_0x4caa('0xa'));var querystring=require(_0x4caa('0x11'));var Papa=require('papaparse');var Redis=require(_0x4caa('0x12'));var authService=require(_0x4caa('0x13'));var qs=require(_0x4caa('0x14'));var as=require(_0x4caa('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4caa('0x16'))(_0x4caa('0x17'));var utils=require(_0x4caa('0x18'));var config=require(_0x4caa('0x19'));var licenseUtil=require(_0x4caa('0x1a'));var db=require(_0x4caa('0x1b'))['db'];function respondWithStatusCode(_0x3569c6,_0x1f96c0){_0x1f96c0=_0x1f96c0||0xcc;return function(_0x17f9c8){if(_0x17f9c8){return _0x3569c6[_0x4caa('0x1c')](_0x1f96c0);}return _0x3569c6['status'](_0x1f96c0)[_0x4caa('0x1d')]();};}function respondWithResult(_0x34d47d,_0x1204aa){_0x1204aa=_0x1204aa||0xc8;return function(_0x1db166){if(_0x1db166){return _0x34d47d['status'](_0x1204aa)['json'](_0x1db166);}};}function respondWithFilteredResult(_0x6e1755,_0x489a0d){return function(_0x4d0337){if(_0x4d0337){var _0x3ec571=typeof _0x489a0d[_0x4caa('0x1e')]===_0x4caa('0x1f')&&typeof _0x489a0d[_0x4caa('0x20')]===_0x4caa('0x1f');var _0x1cd2ef=_0x4d0337[_0x4caa('0x21')];var _0x3b6309=_0x3ec571?0x0:_0x489a0d[_0x4caa('0x1e')];var _0x24479f=_0x3ec571?_0x4d0337[_0x4caa('0x21')]:_0x489a0d['offset']+_0x489a0d[_0x4caa('0x20')];var _0x2c02e9;if(_0x24479f>=_0x1cd2ef){_0x24479f=_0x1cd2ef;_0x2c02e9=0xc8;}else{_0x2c02e9=0xce;}_0x6e1755[_0x4caa('0x22')](_0x2c02e9);return _0x6e1755[_0x4caa('0x23')](_0x4caa('0x24'),_0x3b6309+'-'+_0x24479f+'/'+_0x1cd2ef)[_0x4caa('0x25')](_0x4d0337);}return null;};}function patchUpdates(_0x37ad2d){return function(_0x2c9cc2){try{jsonpatch[_0x4caa('0x26')](_0x2c9cc2,_0x37ad2d,!![]);}catch(_0x1c2a10){return BPromise[_0x4caa('0x27')](_0x1c2a10);}return _0x2c9cc2[_0x4caa('0x28')]();};}function saveUpdates(_0x18cb7e,_0x3e3630){return function(_0x1217e3){if(_0x1217e3){return _0x1217e3[_0x4caa('0x29')](_0x18cb7e)[_0x4caa('0x2a')](function(_0x460471){return _0x460471;});}return null;};}function removeEntity(_0x5c0394,_0x4dc66d){return function(_0x14dfdd){if(_0x14dfdd){return _0x14dfdd[_0x4caa('0x2b')]()[_0x4caa('0x2a')](function(){_0x5c0394[_0x4caa('0x22')](0xcc)[_0x4caa('0x1d')]();});}};}function handleEntityNotFound(_0x1aff30,_0x6040d2){return function(_0x15de1e){if(!_0x15de1e){_0x1aff30[_0x4caa('0x1c')](0x194);}return _0x15de1e;};}function handleError(_0x4d9d70,_0x1dcde1){_0x1dcde1=_0x1dcde1||0x1f4;return function(_0x364286){logger['error'](_0x364286['stack']);if(_0x364286[_0x4caa('0x2c')]){delete _0x364286['name'];}_0x4d9d70[_0x4caa('0x22')](_0x1dcde1)[_0x4caa('0x2d')](_0x364286);};}exports[_0x4caa('0x2e')]=function(_0x5a6328,_0x48c066){var _0x306318={},_0x41e65a={},_0x4106ef={'count':0x0,'rows':[]};var _0x28303c=_[_0x4caa('0x2f')](db[_0x4caa('0x30')][_0x4caa('0x31')],function(_0x2a0139){return{'name':_0x2a0139[_0x4caa('0x32')],'type':_0x2a0139[_0x4caa('0x33')][_0x4caa('0x34')]};});_0x41e65a[_0x4caa('0x35')]=_[_0x4caa('0x2f')](_0x28303c,_0x4caa('0x2c'));_0x41e65a[_0x4caa('0x36')]=_[_0x4caa('0x37')](_0x5a6328[_0x4caa('0x36')]);_0x41e65a['filters']=_[_0x4caa('0x38')](_0x41e65a[_0x4caa('0x35')],_0x41e65a['query']);_0x306318[_0x4caa('0x39')]=_[_0x4caa('0x38')](_0x41e65a[_0x4caa('0x35')],qs['fields'](_0x5a6328[_0x4caa('0x36')]['fields']));_0x306318['attributes']=_0x306318[_0x4caa('0x39')]['length']?_0x306318[_0x4caa('0x39')]:_0x41e65a['model'];if(!_0x5a6328['query']['hasOwnProperty'](_0x4caa('0x3a'))){_0x306318[_0x4caa('0x20')]=qs[_0x4caa('0x20')](_0x5a6328['query'][_0x4caa('0x20')]);_0x306318['offset']=qs['offset'](_0x5a6328[_0x4caa('0x36')][_0x4caa('0x1e')]);}_0x306318[_0x4caa('0x3b')]=qs[_0x4caa('0x3c')](_0x5a6328[_0x4caa('0x36')]['sort']);_0x306318[_0x4caa('0x3d')]=qs[_0x4caa('0x3e')](_[_0x4caa('0x3f')](_0x5a6328[_0x4caa('0x36')],_0x41e65a[_0x4caa('0x3e')]),_0x28303c);if(_0x5a6328['query'][_0x4caa('0x40')]){_0x306318[_0x4caa('0x3d')]=_['merge'](_0x306318[_0x4caa('0x3d')],{'$or':_[_0x4caa('0x2f')](_0x28303c,function(_0x11c0dd){if(_0x11c0dd[_0x4caa('0x33')]!==_0x4caa('0x41')){var _0x43f975={};_0x43f975[_0x11c0dd[_0x4caa('0x2c')]]={'$like':'%'+_0x5a6328[_0x4caa('0x36')]['filter']+'%'};return _0x43f975;}})});}_0x306318=_[_0x4caa('0x42')]({},_0x306318,_0x5a6328[_0x4caa('0x43')]);var _0x2fb811={'where':_0x306318[_0x4caa('0x3d')]};return db[_0x4caa('0x30')]['count'](_0x2fb811)['then'](function(_0x5f0459){_0x4106ef[_0x4caa('0x21')]=_0x5f0459;if(_0x5a6328[_0x4caa('0x36')][_0x4caa('0x44')]){_0x306318['include']=[{'all':!![]}];}return db[_0x4caa('0x30')]['findAll'](_0x306318);})[_0x4caa('0x2a')](function(_0x29e920){_0x4106ef[_0x4caa('0x45')]=_0x29e920;return _0x4106ef;})[_0x4caa('0x2a')](respondWithFilteredResult(_0x48c066,_0x306318))['catch'](handleError(_0x48c066,null));};exports[_0x4caa('0x46')]=function(_0x7bfd05,_0x35e986){var _0x445c73={'raw':!![],'where':{'id':_0x7bfd05['params']['id']}},_0x2031be={};_0x2031be[_0x4caa('0x35')]=_['keys'](db[_0x4caa('0x30')][_0x4caa('0x31')]);_0x2031be[_0x4caa('0x36')]=_[_0x4caa('0x37')](_0x7bfd05['query']);_0x2031be[_0x4caa('0x3e')]=_[_0x4caa('0x38')](_0x2031be[_0x4caa('0x35')],_0x2031be['query']);_0x445c73[_0x4caa('0x39')]=_['intersection'](_0x2031be['model'],qs['fields'](_0x7bfd05[_0x4caa('0x36')][_0x4caa('0x47')]));_0x445c73[_0x4caa('0x39')]=_0x445c73[_0x4caa('0x39')][_0x4caa('0x48')]?_0x445c73[_0x4caa('0x39')]:_0x2031be[_0x4caa('0x35')];if(_0x7bfd05['query'][_0x4caa('0x44')]){_0x445c73[_0x4caa('0x49')]=[{'all':!![]}];}_0x445c73=_[_0x4caa('0x42')]({},_0x445c73,_0x7bfd05[_0x4caa('0x43')]);return db['SmsApplication'][_0x4caa('0x4a')](_0x445c73)[_0x4caa('0x2a')](handleEntityNotFound(_0x35e986,null))[_0x4caa('0x2a')](respondWithResult(_0x35e986,null))['catch'](handleError(_0x35e986,null));};exports['create']=function(_0x3ab737,_0xc2ef8c){return db[_0x4caa('0x30')]['create'](_0x3ab737[_0x4caa('0x4b')],{})[_0x4caa('0x2a')](respondWithResult(_0xc2ef8c,0xc9))['catch'](handleError(_0xc2ef8c,null));};exports['update']=function(_0x35c73e,_0x1f58a9){if(_0x35c73e['body']['id']){delete _0x35c73e[_0x4caa('0x4b')]['id'];}return db[_0x4caa('0x30')]['find']({'where':{'id':_0x35c73e[_0x4caa('0x4c')]['id']}})[_0x4caa('0x2a')](handleEntityNotFound(_0x1f58a9,null))['then'](saveUpdates(_0x35c73e['body'],null))[_0x4caa('0x2a')](respondWithResult(_0x1f58a9,null))[_0x4caa('0x4d')](handleError(_0x1f58a9,null));};exports[_0x4caa('0x2b')]=function(_0x49cb52,_0x5f2bee){return db['SmsApplication'][_0x4caa('0x4a')]({'where':{'id':_0x49cb52[_0x4caa('0x4c')]['id']}})[_0x4caa('0x2a')](handleEntityNotFound(_0x5f2bee,null))[_0x4caa('0x2a')](removeEntity(_0x5f2bee,null))[_0x4caa('0x4d')](handleError(_0x5f2bee,null));};
\ No newline at end of file
+var _0x17da=['../../config/utils','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','SmsApplication','catch','body','find','eml-format','rimraf','zip-dir','request-promise','mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api'];(function(_0x5a57a3,_0x2a7018){var _0x2ef960=function(_0x9de98f){while(--_0x9de98f){_0x5a57a3['push'](_0x5a57a3['shift']());}};_0x2ef960(++_0x2a7018);}(_0x17da,0x108));var _0xa17d=function(_0x47cafc,_0x2784cd){_0x47cafc=_0x47cafc-0x0;var _0x15d990=_0x17da[_0x47cafc];return _0x15d990;};'use strict';var emlformat=require(_0xa17d('0x0'));var rimraf=require(_0xa17d('0x1'));var zipdir=require(_0xa17d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa17d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa17d('0x4'));var util=require(_0xa17d('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xa17d('0x6'));var ejs=require(_0xa17d('0x7'));var fs=require('fs');var fs_extra=require(_0xa17d('0x8'));var _=require('lodash');var squel=require(_0xa17d('0x9'));var crypto=require(_0xa17d('0xa'));var jsforce=require(_0xa17d('0xb'));var deskjs=require(_0xa17d('0xc'));var toCsv=require(_0xa17d('0x6'));var querystring=require(_0xa17d('0xd'));var Papa=require(_0xa17d('0xe'));var Redis=require(_0xa17d('0xf'));var authService=require(_0xa17d('0x10'));var qs=require(_0xa17d('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa17d('0x12'))(_0xa17d('0x13'));var utils=require(_0xa17d('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa17d('0x15'))['db'];function respondWithStatusCode(_0x494c92,_0x2fd92c){_0x2fd92c=_0x2fd92c||0xcc;return function(_0x15134b){if(_0x15134b){return _0x494c92['sendStatus'](_0x2fd92c);}return _0x494c92[_0xa17d('0x16')](_0x2fd92c)[_0xa17d('0x17')]();};}function respondWithResult(_0x3cccd1,_0x170af1){_0x170af1=_0x170af1||0xc8;return function(_0x22d7a9){if(_0x22d7a9){return _0x3cccd1['status'](_0x170af1)[_0xa17d('0x18')](_0x22d7a9);}};}function respondWithFilteredResult(_0x202da8,_0x42879d){return function(_0x5aac0a){if(_0x5aac0a){var _0x5be461=typeof _0x42879d[_0xa17d('0x19')]===_0xa17d('0x1a')&&typeof _0x42879d['limit']===_0xa17d('0x1a');var _0x291afa=_0x5aac0a[_0xa17d('0x1b')];var _0x426f6e=_0x5be461?0x0:_0x42879d[_0xa17d('0x19')];var _0x3045d2=_0x5be461?_0x5aac0a[_0xa17d('0x1b')]:_0x42879d['offset']+_0x42879d[_0xa17d('0x1c')];var _0xfa552c;if(_0x3045d2>=_0x291afa){_0x3045d2=_0x291afa;_0xfa552c=0xc8;}else{_0xfa552c=0xce;}_0x202da8[_0xa17d('0x16')](_0xfa552c);return _0x202da8[_0xa17d('0x1d')]('Content-Range',_0x426f6e+'-'+_0x3045d2+'/'+_0x291afa)[_0xa17d('0x18')](_0x5aac0a);}return null;};}function patchUpdates(_0x539a3b){return function(_0x260b3a){try{jsonpatch[_0xa17d('0x1e')](_0x260b3a,_0x539a3b,!![]);}catch(_0x56b818){return BPromise[_0xa17d('0x1f')](_0x56b818);}return _0x260b3a[_0xa17d('0x20')]();};}function saveUpdates(_0x183f91,_0x2ed20e){return function(_0x6c50e4){if(_0x6c50e4){return _0x6c50e4[_0xa17d('0x21')](_0x183f91)[_0xa17d('0x22')](function(_0x2ee129){return _0x2ee129;});}return null;};}function removeEntity(_0x3b6a86,_0x2e77cb){return function(_0x4fb520){if(_0x4fb520){return _0x4fb520[_0xa17d('0x23')]()[_0xa17d('0x22')](function(){_0x3b6a86[_0xa17d('0x16')](0xcc)[_0xa17d('0x17')]();});}};}function handleEntityNotFound(_0x1d3a92,_0xccb89f){return function(_0x2b0c28){if(!_0x2b0c28){_0x1d3a92[_0xa17d('0x24')](0x194);}return _0x2b0c28;};}function handleError(_0x2be1c7,_0x3fa9d3){_0x3fa9d3=_0x3fa9d3||0x1f4;return function(_0x35b840){logger[_0xa17d('0x25')](_0x35b840['stack']);if(_0x35b840[_0xa17d('0x26')]){delete _0x35b840[_0xa17d('0x26')];}_0x2be1c7['status'](_0x3fa9d3)[_0xa17d('0x27')](_0x35b840);};}exports[_0xa17d('0x28')]=function(_0x5ceef4,_0x1e942a){var _0x1d2b6b={},_0x3dd21e={},_0x7b0dfa={'count':0x0,'rows':[]};var _0x395103=_[_0xa17d('0x29')](db['SmsApplication'][_0xa17d('0x2a')],function(_0x389ce8){return{'name':_0x389ce8[_0xa17d('0x2b')],'type':_0x389ce8[_0xa17d('0x2c')]['key']};});_0x3dd21e[_0xa17d('0x2d')]=_[_0xa17d('0x29')](_0x395103,'name');_0x3dd21e[_0xa17d('0x2e')]=_['keys'](_0x5ceef4[_0xa17d('0x2e')]);_0x3dd21e[_0xa17d('0x2f')]=_[_0xa17d('0x30')](_0x3dd21e[_0xa17d('0x2d')],_0x3dd21e[_0xa17d('0x2e')]);_0x1d2b6b[_0xa17d('0x31')]=_['intersection'](_0x3dd21e[_0xa17d('0x2d')],qs[_0xa17d('0x32')](_0x5ceef4[_0xa17d('0x2e')][_0xa17d('0x32')]));_0x1d2b6b[_0xa17d('0x31')]=_0x1d2b6b['attributes'][_0xa17d('0x33')]?_0x1d2b6b[_0xa17d('0x31')]:_0x3dd21e['model'];if(!_0x5ceef4[_0xa17d('0x2e')][_0xa17d('0x34')](_0xa17d('0x35'))){_0x1d2b6b[_0xa17d('0x1c')]=qs[_0xa17d('0x1c')](_0x5ceef4[_0xa17d('0x2e')][_0xa17d('0x1c')]);_0x1d2b6b[_0xa17d('0x19')]=qs[_0xa17d('0x19')](_0x5ceef4[_0xa17d('0x2e')]['offset']);}_0x1d2b6b[_0xa17d('0x36')]=qs['sort'](_0x5ceef4[_0xa17d('0x2e')][_0xa17d('0x37')]);_0x1d2b6b[_0xa17d('0x38')]=qs[_0xa17d('0x2f')](_[_0xa17d('0x39')](_0x5ceef4[_0xa17d('0x2e')],_0x3dd21e['filters']),_0x395103);if(_0x5ceef4[_0xa17d('0x2e')][_0xa17d('0x3a')]){_0x1d2b6b['where']=_[_0xa17d('0x3b')](_0x1d2b6b['where'],{'$or':_[_0xa17d('0x29')](_0x395103,function(_0x2fc210){if(_0x2fc210[_0xa17d('0x2c')]!==_0xa17d('0x3c')){var _0x158752={};_0x158752[_0x2fc210[_0xa17d('0x26')]]={'$like':'%'+_0x5ceef4['query']['filter']+'%'};return _0x158752;}})});}_0x1d2b6b=_[_0xa17d('0x3b')]({},_0x1d2b6b,_0x5ceef4[_0xa17d('0x3d')]);var _0x4e4433={'where':_0x1d2b6b[_0xa17d('0x38')]};return db['SmsApplication'][_0xa17d('0x1b')](_0x4e4433)[_0xa17d('0x22')](function(_0x49b741){_0x7b0dfa[_0xa17d('0x1b')]=_0x49b741;if(_0x5ceef4[_0xa17d('0x2e')][_0xa17d('0x3e')]){_0x1d2b6b['include']=[{'all':!![]}];}return db['SmsApplication'][_0xa17d('0x3f')](_0x1d2b6b);})[_0xa17d('0x22')](function(_0x375608){_0x7b0dfa[_0xa17d('0x40')]=_0x375608;return _0x7b0dfa;})[_0xa17d('0x22')](respondWithFilteredResult(_0x1e942a,_0x1d2b6b))['catch'](handleError(_0x1e942a,null));};exports[_0xa17d('0x41')]=function(_0x315d2b,_0x5b1e13){var _0xd4206a={'raw':!![],'where':{'id':_0x315d2b[_0xa17d('0x42')]['id']}},_0x3f2767={};_0x3f2767[_0xa17d('0x2d')]=_['keys'](db['SmsApplication'][_0xa17d('0x2a')]);_0x3f2767[_0xa17d('0x2e')]=_['keys'](_0x315d2b['query']);_0x3f2767[_0xa17d('0x2f')]=_[_0xa17d('0x30')](_0x3f2767[_0xa17d('0x2d')],_0x3f2767[_0xa17d('0x2e')]);_0xd4206a['attributes']=_[_0xa17d('0x30')](_0x3f2767[_0xa17d('0x2d')],qs[_0xa17d('0x32')](_0x315d2b[_0xa17d('0x2e')][_0xa17d('0x32')]));_0xd4206a[_0xa17d('0x31')]=_0xd4206a['attributes'][_0xa17d('0x33')]?_0xd4206a['attributes']:_0x3f2767[_0xa17d('0x2d')];if(_0x315d2b[_0xa17d('0x2e')][_0xa17d('0x3e')]){_0xd4206a['include']=[{'all':!![]}];}_0xd4206a=_[_0xa17d('0x3b')]({},_0xd4206a,_0x315d2b[_0xa17d('0x3d')]);return db[_0xa17d('0x43')]['find'](_0xd4206a)[_0xa17d('0x22')](handleEntityNotFound(_0x5b1e13,null))[_0xa17d('0x22')](respondWithResult(_0x5b1e13,null))[_0xa17d('0x44')](handleError(_0x5b1e13,null));};exports['create']=function(_0x11457a,_0x15ddc3){return db[_0xa17d('0x43')]['create'](_0x11457a['body'],{})[_0xa17d('0x22')](respondWithResult(_0x15ddc3,0xc9))[_0xa17d('0x44')](handleError(_0x15ddc3,null));};exports[_0xa17d('0x21')]=function(_0x33dc5a,_0x785ae9){if(_0x33dc5a[_0xa17d('0x45')]['id']){delete _0x33dc5a['body']['id'];}return db[_0xa17d('0x43')][_0xa17d('0x46')]({'where':{'id':_0x33dc5a['params']['id']}})[_0xa17d('0x22')](handleEntityNotFound(_0x785ae9,null))[_0xa17d('0x22')](saveUpdates(_0x33dc5a['body'],null))['then'](respondWithResult(_0x785ae9,null))[_0xa17d('0x44')](handleError(_0x785ae9,null));};exports[_0xa17d('0x23')]=function(_0x326daf,_0x3feefc){return db[_0xa17d('0x43')]['find']({'where':{'id':_0x326daf[_0xa17d('0x42')]['id']}})[_0xa17d('0x22')](handleEntityNotFound(_0x3feefc,null))['then'](removeEntity(_0x3feefc,null))[_0xa17d('0x44')](handleError(_0x3feefc,null));};
\ No newline at end of file
index c6cef4d..a20dacf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41ee=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./smsApplication.attributes','exports','SmsApplication','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x420c58,_0x2ef6c0){var _0x388792=function(_0x1f0150){while(--_0x1f0150){_0x420c58['push'](_0x420c58['shift']());}};_0x388792(++_0x2ef6c0);}(_0x41ee,0x117));var _0xe41e=function(_0x1a2bf9,_0x182105){_0x1a2bf9=_0x1a2bf9-0x0;var _0x3980b7=_0x41ee[_0x1a2bf9];return _0x3980b7;};'use strict';var _=require(_0xe41e('0x0'));var util=require(_0xe41e('0x1'));var logger=require(_0xe41e('0x2'))(_0xe41e('0x3'));var moment=require(_0xe41e('0x4'));var BPromise=require(_0xe41e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe41e('0x6'));var rimraf=require(_0xe41e('0x7'));var config=require(_0xe41e('0x8'));var attributes=require(_0xe41e('0x9'));module[_0xe41e('0xa')]=function(_0x4b7308,_0x1c215e){return _0x4b7308['define'](_0xe41e('0xb'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe41e('0xc'),'collate':_0xe41e('0xd')});};
\ No newline at end of file
+var _0xb904=['bluebird','request-promise','path','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment'];(function(_0x3c554d,_0x12855c){var _0x555aa9=function(_0xb4db21){while(--_0xb4db21){_0x3c554d['push'](_0x3c554d['shift']());}};_0x555aa9(++_0x12855c);}(_0xb904,0x1cd));var _0x4b90=function(_0x5099fb,_0x2ccd86){_0x5099fb=_0x5099fb-0x0;var _0x13821b=_0xb904[_0x5099fb];return _0x13821b;};'use strict';var _=require(_0x4b90('0x0'));var util=require(_0x4b90('0x1'));var logger=require(_0x4b90('0x2'))('api');var moment=require(_0x4b90('0x3'));var BPromise=require(_0x4b90('0x4'));var rp=require(_0x4b90('0x5'));var fs=require('fs');var path=require(_0x4b90('0x6'));var rimraf=require('rimraf');var config=require(_0x4b90('0x7'));var attributes=require(_0x4b90('0x8'));module[_0x4b90('0x9')]=function(_0x34d302,_0x19783d){return _0x34d302[_0x4b90('0xa')](_0x4b90('0xb'),attributes,{'tableName':_0x4b90('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4b90('0xd'),'collate':_0x4b90('0xe')});};
\ No newline at end of file
index f881dc2..a83237b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe458=['error','code','message','SmsApplication,\x20%s,\x20%s','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x36b8e1,_0x4f93bd){var _0x2101ed=function(_0x51e49c){while(--_0x51e49c){_0x36b8e1['push'](_0x36b8e1['shift']());}};_0x2101ed(++_0x4f93bd);}(_0xe458,0x160));var _0x8e45=function(_0x1eafed,_0x3d29ba){_0x1eafed=_0x1eafed-0x0;var _0xd36676=_0xe458[_0x1eafed];return _0xd36676;};'use strict';var _=require(_0x8e45('0x0'));var util=require(_0x8e45('0x1'));var moment=require('moment');var BPromise=require(_0x8e45('0x2'));var rs=require(_0x8e45('0x3'));var fs=require('fs');var Redis=require(_0x8e45('0x4'));var db=require(_0x8e45('0x5'))['db'];var utils=require(_0x8e45('0x6'));var logger=require(_0x8e45('0x7'))(_0x8e45('0x8'));var config=require(_0x8e45('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8e45('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3a92a1,_0x3a646f,_0x37cde4){return new BPromise(function(_0x27433a,_0x1f60da){return client[_0x8e45('0xb')](_0x3a92a1,_0x37cde4)['then'](function(_0x59886a){logger['info']('SmsApplication,\x20%s,\x20%s',_0x3a646f,_0x8e45('0xc'));logger[_0x8e45('0xd')](_0x8e45('0xe'),_0x3a646f,'request\x20sent',JSON[_0x8e45('0xf')](_0x59886a));if(_0x59886a[_0x8e45('0x10')]){if(_0x59886a['error'][_0x8e45('0x11')]===0x1f4){logger[_0x8e45('0x10')]('SmsApplication,\x20%s,\x20%s',_0x3a646f,_0x59886a[_0x8e45('0x10')][_0x8e45('0x12')]);return _0x1f60da(_0x59886a['error'][_0x8e45('0x12')]);}logger[_0x8e45('0x10')](_0x8e45('0x13'),_0x3a646f,_0x59886a['error'][_0x8e45('0x12')]);return _0x27433a(_0x59886a[_0x8e45('0x10')][_0x8e45('0x12')]);}else{logger[_0x8e45('0x14')](_0x8e45('0x13'),_0x3a646f,_0x8e45('0xc'));_0x27433a(_0x59886a[_0x8e45('0x15')][_0x8e45('0x12')]);}})[_0x8e45('0x16')](function(_0x23071d){logger[_0x8e45('0x10')](_0x8e45('0x13'),_0x3a646f,_0x23071d);_0x1f60da(_0x23071d);});});}
\ No newline at end of file
+var _0x80cd=['client','http','then','SmsApplication,\x20%s,\x20%s','debug','SmsApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x360240,_0x297cd1){var _0x5f300f=function(_0x40a137){while(--_0x40a137){_0x360240['push'](_0x360240['shift']());}};_0x5f300f(++_0x297cd1);}(_0x80cd,0x146));var _0xd80c=function(_0x2c7b86,_0x59ef3c){_0x2c7b86=_0x2c7b86-0x0;var _0x256735=_0x80cd[_0x2c7b86];return _0x256735;};'use strict';var _=require('lodash');var util=require(_0xd80c('0x0'));var moment=require(_0xd80c('0x1'));var BPromise=require(_0xd80c('0x2'));var rs=require(_0xd80c('0x3'));var fs=require('fs');var Redis=require(_0xd80c('0x4'));var db=require(_0xd80c('0x5'))['db'];var utils=require(_0xd80c('0x6'));var logger=require(_0xd80c('0x7'))('rpc');var config=require(_0xd80c('0x8'));var jayson=require(_0xd80c('0x9'));var client=jayson[_0xd80c('0xa')][_0xd80c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x508e19,_0x343595,_0x20cd74){return new BPromise(function(_0x2dc89b,_0x3aa004){return client['request'](_0x508e19,_0x20cd74)[_0xd80c('0xc')](function(_0x588160){logger['info'](_0xd80c('0xd'),_0x343595,'request\x20sent');logger[_0xd80c('0xe')](_0xd80c('0xf'),_0x343595,_0xd80c('0x10'),JSON[_0xd80c('0x11')](_0x588160));if(_0x588160[_0xd80c('0x12')]){if(_0x588160[_0xd80c('0x12')][_0xd80c('0x13')]===0x1f4){logger['error'](_0xd80c('0xd'),_0x343595,_0x588160[_0xd80c('0x12')][_0xd80c('0x14')]);return _0x3aa004(_0x588160[_0xd80c('0x12')][_0xd80c('0x14')]);}logger[_0xd80c('0x12')](_0xd80c('0xd'),_0x343595,_0x588160[_0xd80c('0x12')][_0xd80c('0x14')]);return _0x2dc89b(_0x588160['error'][_0xd80c('0x14')]);}else{logger[_0xd80c('0x15')](_0xd80c('0xd'),_0x343595,_0xd80c('0x10'));_0x2dc89b(_0x588160[_0xd80c('0x16')]['message']);}})[_0xd80c('0x17')](function(_0xec332d){logger[_0xd80c('0x12')](_0xd80c('0xd'),_0x343595,_0xec332d);_0x3aa004(_0xec332d);});});}
\ No newline at end of file
index 126a66d..6cbd14e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['removeTags','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./smsInteraction.controller','isAuthenticated','index','/describe','describe','get','/:id','/:id/messages','getMessages','/:id/download','download','create','addMessage','post','/:id/tags','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','update','delete','tracked','smsinteraction:destroy','destroy'];(function(_0x27e565,_0x335626){var _0x2a0f19=function(_0x347e20){while(--_0x347e20){_0x27e565['push'](_0x27e565['shift']());}};_0x2a0f19(++_0x335626);}(_0x4fc2,0x111));var _0x24fc=function(_0x23e4b4,_0x132419){_0x23e4b4=_0x23e4b4-0x0;var _0x3bc471=_0x4fc2[_0x23e4b4];return _0x3bc471;};'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')](_0x24fc('0xe'),auth[_0x24fc('0x9')](),controller['show']);router[_0x24fc('0xd')](_0x24fc('0xf'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x10')]);router[_0x24fc('0xd')](_0x24fc('0x11'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x12')]);router['post']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0x13')]);router['post'](_0x24fc('0xf'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x14')]);router[_0x24fc('0x15')](_0x24fc('0x16'),auth[_0x24fc('0x9')](),interaction['tracked'](_0x24fc('0x17'),_0x24fc('0x18')),controller[_0x24fc('0x19')]);router[_0x24fc('0x1a')]('/:id',auth[_0x24fc('0x9')](),interaction['tracked'](_0x24fc('0x17'),_0x24fc('0x1b')),controller[_0x24fc('0x1c')]);router[_0x24fc('0x1d')](_0x24fc('0xe'),auth['isAuthenticated'](),interaction[_0x24fc('0x1e')](_0x24fc('0x17'),_0x24fc('0x1f')),controller[_0x24fc('0x20')]);router['delete'](_0x24fc('0x16'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x21')]);module['exports']=router;
\ No newline at end of file
+var _0x8603=['sms','addTags','put','/:id','smsinteraction:update','update','delete','destroy','removeTags','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./smsInteraction.controller','isAuthenticated','index','get','/describe','show','/:id/messages','/:id/download','download','post','create','addMessage','/:id/tags','tracked'];(function(_0x88ffd4,_0x25f7e6){var _0x528f9c=function(_0x166382){while(--_0x166382){_0x88ffd4['push'](_0x88ffd4['shift']());}};_0x528f9c(++_0x25f7e6);}(_0x8603,0x190));var _0x3860=function(_0x8678bf,_0x4265a5){_0x8678bf=_0x8678bf-0x0;var _0x115686=_0x8603[_0x8678bf];return _0x115686;};'use strict';var multer=require('multer');var util=require(_0x3860('0x0'));var path=require(_0x3860('0x1'));var timeout=require(_0x3860('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3860('0x3'));var auth=require(_0x3860('0x4'));var interaction=require(_0x3860('0x5'));var config=require('../../config/environment');var controller=require(_0x3860('0x6'));router['get']('/',auth[_0x3860('0x7')](),controller[_0x3860('0x8')]);router[_0x3860('0x9')](_0x3860('0xa'),auth[_0x3860('0x7')](),controller['describe']);router['get']('/:id',auth[_0x3860('0x7')](),controller[_0x3860('0xb')]);router['get'](_0x3860('0xc'),auth[_0x3860('0x7')](),controller['getMessages']);router[_0x3860('0x9')](_0x3860('0xd'),auth['isAuthenticated'](),controller[_0x3860('0xe')]);router[_0x3860('0xf')]('/',auth['isAuthenticated'](),controller[_0x3860('0x10')]);router[_0x3860('0xf')](_0x3860('0xc'),auth[_0x3860('0x7')](),controller[_0x3860('0x11')]);router[_0x3860('0xf')](_0x3860('0x12'),auth[_0x3860('0x7')](),interaction[_0x3860('0x13')](_0x3860('0x14'),'smsinteraction:addtags'),controller[_0x3860('0x15')]);router[_0x3860('0x16')](_0x3860('0x17'),auth[_0x3860('0x7')](),interaction[_0x3860('0x13')](_0x3860('0x14'),_0x3860('0x18')),controller[_0x3860('0x19')]);router[_0x3860('0x1a')](_0x3860('0x17'),auth[_0x3860('0x7')](),interaction[_0x3860('0x13')]('sms','smsinteraction:destroy'),controller[_0x3860('0x1b')]);router[_0x3860('0x1a')](_0x3860('0x12'),auth['isAuthenticated'](),controller[_0x3860('0x1c')]);module[_0x3860('0x1d')]=router;
\ No newline at end of file
index 76ed7c5..00d7933 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4491=['out','BOOLEAN','sequelize','exports','DATE','STRING','ENUM'];(function(_0x547160,_0x537a78){var _0x3f7b71=function(_0x58be0c){while(--_0x58be0c){_0x547160['push'](_0x547160['shift']());}};_0x3f7b71(++_0x537a78);}(_0x4491,0x1bb));var _0x1449=function(_0x3295ae,_0x37e9d7){_0x3295ae=_0x3295ae-0x0;var _0x2e5547=_0x4491[_0x3295ae];return _0x2e5547;};'use strict';var Sequelize=require(_0x1449('0x0'));var moment=require('moment');module[_0x1449('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1449('0x2')]},'disposition':{'type':Sequelize[_0x1449('0x3')]},'secondDisposition':{'type':Sequelize[_0x1449('0x3')]},'thirdDisposition':{'type':Sequelize[_0x1449('0x3')]},'note':{'type':Sequelize[_0x1449('0x3')]},'phone':{'type':Sequelize[_0x1449('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x1449('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x1449('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x1449('0x4')]('in',_0x1449('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x1449('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7f27=['ENUM','BOOLEAN','sequelize','moment','DATE','STRING'];(function(_0x4bc80b,_0x29c1e9){var _0x55cf7e=function(_0x3bb419){while(--_0x3bb419){_0x4bc80b['push'](_0x4bc80b['shift']());}};_0x55cf7e(++_0x29c1e9);}(_0x7f27,0x12e));var _0x77f2=function(_0x4cf808,_0x552b5c){_0x4cf808=_0x4cf808-0x0;var _0x4f7620=_0x7f27[_0x4cf808];return _0x4f7620;};'use strict';var Sequelize=require(_0x77f2('0x0'));var moment=require(_0x77f2('0x1'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x77f2('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x77f2('0x3')]},'note':{'type':Sequelize[_0x77f2('0x3')]},'phone':{'type':Sequelize[_0x77f2('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x77f2('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x77f2('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x77f2('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x77f2('0x5')],'defaultValue':![]}};
\ No newline at end of file
index 45df3f6..3f5adbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadf3=['../../mysqldb','defaults','redis','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','Users','map','fullname','TagIds','Tags','split','forEach','index','SmsInteraction','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','field','color','from','select','u.id','u.fullname','ui.SmsInteractionId','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_accounts','sms_messages','me.SmsInteractionId\x20=\x20i.id','it.SmsInteractionId\x20=\x20i.id','tools_tags','expr','search','parseSearch','conditions','find','unreadMessages','value','having','`\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','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','some','SmsAccountId','where','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','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','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','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)','isEmpty','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','toString','sequelize','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','push','all','show','includeAll','include','catch','create','addMessage','SmsMessage','params','omit','getMessages','format','options','findAll','addTags','setTags','ids','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','User','firstName','lastName','Messages','secret','Account','Owner','get','mkdirSync','Sms','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','direction','out','System','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','err','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util'];(function(_0x4706a6,_0x5a1c63){var _0x1bb705=function(_0x484ebb){while(--_0x484ebb){_0x4706a6['push'](_0x4706a6['shift']());}};_0x1bb705(++_0x5a1c63);}(_0xadf3,0xd0));var _0x3adf=function(_0x23dba8,_0x6b472b){_0x23dba8=_0x23dba8-0x0;var _0x5bbaf7=_0xadf3[_0x23dba8];return _0x5bbaf7;};'use strict';var emlformat=require(_0x3adf('0x0'));var rimraf=require(_0x3adf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3adf('0x2'));var rp=require(_0x3adf('0x3'));var moment=require('moment');var BPromise=require(_0x3adf('0x4'));var Mustache=require(_0x3adf('0x5'));var util=require(_0x3adf('0x6'));var path=require(_0x3adf('0x7'));var sox=require(_0x3adf('0x8'));var csv=require(_0x3adf('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3adf('0xa'));var _=require(_0x3adf('0xb'));var squel=require(_0x3adf('0xc'));var crypto=require(_0x3adf('0xd'));var jsforce=require(_0x3adf('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x3adf('0x9'));var querystring=require(_0x3adf('0xf'));var Papa=require(_0x3adf('0x10'));var Redis=require(_0x3adf('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3adf('0x12'));var as=require(_0x3adf('0x13'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0x3adf('0x14'));var logger=require(_0x3adf('0x15'))(_0x3adf('0x16'));var utils=require(_0x3adf('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x3adf('0x18'));var db=require(_0x3adf('0x19'))['db'];config['redis']=_[_0x3adf('0x1a')](config[_0x3adf('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x3adf('0x1c'))(new Redis(config[_0x3adf('0x1b')]));require(_0x3adf('0x1d'))[_0x3adf('0x1e')](socket);function respondWithStatusCode(_0x3d2d34,_0x422080){_0x422080=_0x422080||0xcc;return function(_0x4e038a){if(_0x4e038a){return _0x3d2d34[_0x3adf('0x1f')](_0x422080);}return _0x3d2d34[_0x3adf('0x20')](_0x422080)['end']();};}function respondWithResult(_0x1aaef4,_0x127d28){_0x127d28=_0x127d28||0xc8;return function(_0x278b85){if(_0x278b85){return _0x1aaef4[_0x3adf('0x20')](_0x127d28)[_0x3adf('0x21')](_0x278b85);}};}function respondWithFilteredResult(_0x2e501c,_0x26d4a3){return function(_0x5bc0bf){if(_0x5bc0bf){var _0x23f95f=typeof _0x26d4a3[_0x3adf('0x22')]===_0x3adf('0x23')&&typeof _0x26d4a3[_0x3adf('0x24')]==='undefined';var _0x1be606=_0x5bc0bf[_0x3adf('0x25')];var _0x3e6d9b=_0x23f95f?0x0:_0x26d4a3['offset'];var _0x38c7de=_0x23f95f?_0x5bc0bf[_0x3adf('0x25')]:_0x26d4a3[_0x3adf('0x22')]+_0x26d4a3[_0x3adf('0x24')];var _0x4e2fd3;if(_0x38c7de>=_0x1be606){_0x38c7de=_0x1be606;_0x4e2fd3=0xc8;}else{_0x4e2fd3=0xce;}_0x2e501c[_0x3adf('0x20')](_0x4e2fd3);return _0x2e501c[_0x3adf('0x26')](_0x3adf('0x27'),_0x3e6d9b+'-'+_0x38c7de+'/'+_0x1be606)[_0x3adf('0x21')](_0x5bc0bf);}return null;};}function patchUpdates(_0x13c5f7){return function(_0x1090ce){try{jsonpatch['apply'](_0x1090ce,_0x13c5f7,!![]);}catch(_0x47dd37){return BPromise[_0x3adf('0x28')](_0x47dd37);}return _0x1090ce[_0x3adf('0x29')]();};}function saveUpdates(_0x504a56,_0x47a0ae){return function(_0xe3274a){if(_0xe3274a){return _0xe3274a[_0x3adf('0x2a')](_0x504a56)[_0x3adf('0x2b')](function(_0x4fedb6){return _0x4fedb6;});}return null;};}function removeEntity(_0x240e78,_0x4432a8){return function(_0x1e5bfe){if(_0x1e5bfe){return _0x1e5bfe[_0x3adf('0x2c')]()['then'](function(){_0x240e78['status'](0xcc)[_0x3adf('0x2d')]();});}};}function handleEntityNotFound(_0x5b9e4c,_0x3b3981){return function(_0x443b2f){if(!_0x443b2f){_0x5b9e4c['sendStatus'](0x194);}return _0x443b2f;};}function handleError(_0x34e43c,_0x4394fc){_0x4394fc=_0x4394fc||0x1f4;return function(_0x36c50e){logger[_0x3adf('0x2e')](_0x36c50e[_0x3adf('0x2f')]);if(_0x36c50e[_0x3adf('0x30')]){delete _0x36c50e[_0x3adf('0x30')];}_0x34e43c[_0x3adf('0x20')](_0x4394fc)['send'](_0x36c50e);};}function getInteractionUsers(_0x406f02,_0x57058f){return new BPromise(function(_0x550d05,_0xdf4457){try{if(_0x57058f[_0x406f02['id']]){_0x406f02[_0x3adf('0x31')]=_[_0x3adf('0x32')](_0x57058f[_0x406f02['id']],function(_0x22d7e9){return{'id':_0x22d7e9['id'],'fullname':_0x22d7e9[_0x3adf('0x33')]};});}}catch(_0xbd881e){_0xdf4457(_0xbd881e);}_0x550d05(_0x406f02);});}function getInteractionTags(_0x38fa51,_0xe66fb0){return new BPromise(function(_0x4d2d1a,_0xa48591){try{if(_0x38fa51[_0x3adf('0x34')]){_0x38fa51[_0x3adf('0x35')]=[];_0x38fa51[_0x3adf('0x34')][_0x3adf('0x36')](',')[_0x3adf('0x37')](function(_0x303623){_0x38fa51[_0x3adf('0x35')]['push'](_0xe66fb0[_0x303623]);});}delete _0x38fa51['TagIds'];}catch(_0xd9bdd8){_0xa48591(_0xd9bdd8);}_0x4d2d1a(_0x38fa51);});}function updateSmsInteraction(_0x3da383,_0x5fa049,_0x13d924){return new BPromise(function(_0x526e1d,_0x2b1d22){return getInteractionUsers(_0x3da383,_0x13d924)[_0x3adf('0x2b')](function(_0x29ab59){return getInteractionTags(_0x29ab59,_0x5fa049);})[_0x3adf('0x2b')](function(_0x148424){_0x526e1d(_0x148424);})['catch'](function(_0x1ed095){_0x2b1d22(_0x1ed095);});});}exports[_0x3adf('0x38')]=function(_0x15352f,_0x27e206){var _0x3795da={},_0x232372={},_0x47168a={'count':0x0,'rows':[]};var _0x369910=_[_0x3adf('0x32')](db[_0x3adf('0x39')]['rawAttributes'],function(_0x45f82b){return{'name':_0x45f82b[_0x3adf('0x3a')],'type':_0x45f82b[_0x3adf('0x3b')][_0x3adf('0x3c')]};});_0x232372['model']=_['map'](_0x369910,'name');_0x232372[_0x3adf('0x3d')]=_[_0x3adf('0x3e')](_0x15352f['query']);_0x232372[_0x3adf('0x3f')]=_[_0x3adf('0x40')](_0x232372[_0x3adf('0x41')],_0x232372['query']);_0x3795da[_0x3adf('0x42')]=_[_0x3adf('0x40')](_0x232372[_0x3adf('0x41')],qs[_0x3adf('0x43')](_0x15352f[_0x3adf('0x3d')][_0x3adf('0x43')]));_0x3795da['attributes']=_0x3795da[_0x3adf('0x42')][_0x3adf('0x44')]?_0x3795da[_0x3adf('0x42')]:_0x232372['model'];if(!_0x15352f[_0x3adf('0x3d')][_0x3adf('0x45')](_0x3adf('0x46'))){_0x3795da[_0x3adf('0x24')]=qs[_0x3adf('0x24')](_0x15352f['query']['limit']);_0x3795da[_0x3adf('0x22')]=qs[_0x3adf('0x22')](_0x15352f['query'][_0x3adf('0x22')]);}_0x3795da[_0x3adf('0x47')]=qs['sort'](_0x15352f[_0x3adf('0x3d')][_0x3adf('0x48')]);_0x3795da['where']=qs[_0x3adf('0x3f')](_[_0x3adf('0x49')](_0x15352f[_0x3adf('0x3d')],_0x232372['filters']),_0x369910);var _0xf3100a=[];var _0x3d13d7=squel['select']()['field']('id')[_0x3adf('0x4a')](_0x3adf('0x30'))['field'](_0x3adf('0x4b'))[_0x3adf('0x4c')]('tools_tags');var _0x415c46=squel[_0x3adf('0x4d')]()[_0x3adf('0x4a')](_0x3adf('0x4e'))[_0x3adf('0x4a')](_0x3adf('0x4f'))['field'](_0x3adf('0x50'))[_0x3adf('0x4c')](_0x3adf('0x51'),'ui')[_0x3adf('0x52')](_0x3adf('0x53'),'u',_0x3adf('0x54'));var _0x5067b7=squel['select']()[_0x3adf('0x4c')](_0x3adf('0x55'),'i')['left_join'](_0x3adf('0x56'),'c',_0x3adf('0x57'))[_0x3adf('0x52')](_0x3adf('0x53'),'o',_0x3adf('0x58'))[_0x3adf('0x52')](_0x3adf('0x59'),'a','a.id\x20=\x20i.SmsAccountId')['left_join'](_0x3adf('0x5a'),'me',_0x3adf('0x5b'))[_0x3adf('0x52')]('sms_interaction_has_tags','it',_0x3adf('0x5c'))[_0x3adf('0x52')](_0x3adf('0x5d'),'t','t.id\x20=\x20it.TagId');var _0x4a929f=squel[_0x3adf('0x5e')]();var _0x137f77=[];var _0x2573d5=squel[_0x3adf('0x5e')]();var _0x45d41d;if(_0x15352f[_0x3adf('0x3d')][_0x3adf('0x5f')]){_0x45d41d=as[_0x3adf('0x60')](_0x15352f[_0x3adf('0x3d')]['search']);var _0xe62150=_0x45d41d['sqlOperator'];for(var _0x35755f=0x0;_0x35755f<_0x45d41d[_0x3adf('0x61')]['length'];_0x35755f++){var _0x9d02b9=_0x45d41d['conditions'][_0x35755f];var _0xb5a31c='i';var _0x5bf2a4=_[_0x3adf('0x62')](_0x369910,[_0x3adf('0x30'),_0x9d02b9['field']]);if(!_0x5bf2a4){switch(_0x9d02b9[_0x3adf('0x4a')]){case _0x3adf('0x63'):if(_0x9d02b9[_0x3adf('0x64')]==0x1){_0x5067b7[_0x3adf('0x65')]('`'+_0x9d02b9[_0x3adf('0x4a')]+_0x3adf('0x66'));}else{_0x5067b7[_0x3adf('0x65')]('`'+_0x9d02b9[_0x3adf('0x4a')]+'`\x20>\x200');}break;case _0x3adf('0x67'):if(_0x9d02b9[_0x3adf('0x68')]==='$substring'){if(_0x9d02b9['value']['split']('\x20')[_0x3adf('0x44')]>0x1){_0x4a929f[_0xe62150](_0x3adf('0x69'),qs[_0x3adf('0x6a')](_0x9d02b9[_0x3adf('0x64')]),null);}else{var _0x13db6a='%'+_0x9d02b9['value']+'%';_0x4a929f[_0xe62150](_0x3adf('0x6b'),_0x13db6a,_0x13db6a,_0x13db6a);}}else{_0x5bf2a4=_[_0x3adf('0x62')](_0x369910,[_0x3adf('0x30'),_0x3adf('0x6c')]);_0x9d02b9[_0x3adf('0x4a')]='ContactId';_0x30b26e=as[_0x3adf('0x6d')](_0xb5a31c,_0x5bf2a4[_0x3adf('0x3b')],_0x9d02b9);_0x4a929f[_0xe62150](_0x30b26e[_0x3adf('0x6e')],_0x30b26e[_0x3adf('0x64')][_0x3adf('0x6f')],_0x30b26e[_0x3adf('0x64')][_0x3adf('0x2d')]);}break;case'Tag':var _0x1dca64=_0x9d02b9[_0x3adf('0x64')]['split'](',')['map'](function(_0x53d392){return Number(_0x53d392);});_0x1dca64[_0x3adf('0x37')](function(_0xaaf329){_0x2573d5['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0xaaf329+',%');});_0x137f77=_['union'](_0x137f77,_0x1dca64);break;case'User':if(_0x9d02b9[_0x3adf('0x68')]===_0x3adf('0x70')){_0x4a929f[_0xe62150](_0x3adf('0x71'),'%'+_0x9d02b9[_0x3adf('0x64')]+'%',null);}else{_0x5bf2a4=_[_0x3adf('0x62')](_0x369910,[_0x3adf('0x30'),_0x3adf('0x72')]);_0x9d02b9[_0x3adf('0x4a')]=_0x3adf('0x72');_0x30b26e=as[_0x3adf('0x6d')](_0xb5a31c,_0x5bf2a4['type'],_0x9d02b9);_0x4a929f[_0xe62150](_0x30b26e[_0x3adf('0x6e')],_0x30b26e[_0x3adf('0x64')]['start'],_0x30b26e['value'][_0x3adf('0x2d')]);}break;case _0x3adf('0x73'):_0x30b26e=as[_0x3adf('0x6d')]('me',null,_0x9d02b9);_0x4a929f[_0xe62150](_0x30b26e[_0x3adf('0x6e')],_0x30b26e[_0x3adf('0x64')][_0x3adf('0x6f')],_0x30b26e[_0x3adf('0x64')][_0x3adf('0x2d')]);break;}}else{var _0x30b26e=as[_0x3adf('0x6d')](_0xb5a31c,_0x5bf2a4[_0x3adf('0x3b')],_0x9d02b9);_0x4a929f[_0xe62150](_0x30b26e[_0x3adf('0x6e')],_0x30b26e[_0x3adf('0x64')][_0x3adf('0x6f')],_0x30b26e['value']['end']);}}}else{var _0x1bc086=_(_0x15352f['query'])[_0x3adf('0x3e')]()[_0x3adf('0x32')](function(_0x3bfc16){return _[_0x3adf('0x74')](_0x369910,[_0x3adf('0x30'),_0x3bfc16])?_0x3bfc16:undefined;})['compact']()[_0x3adf('0x64')]();if(!_['isEmpty'](_0x1bc086)){_0x1bc086[_0x3adf('0x37')](function(_0x4fef6e){if(_0x4fef6e===_0x3adf('0x75')){_0x5067b7[_0x3adf('0x76')](_0x3adf('0x77'),[][_0x3adf('0x78')](_0x15352f[_0x3adf('0x3d')][_0x4fef6e]));}else if(_0x4fef6e===_0x3adf('0x79')){var _0x2ffd1c=JSON[_0x3adf('0x7a')](_0x15352f['query'][_0x4fef6e])[_0x3adf('0x7b')];var _0x5b069e=JSON['parse'](_0x15352f[_0x3adf('0x3d')][_0x4fef6e])[_0x3adf('0x7c')];_0x5067b7[_0x3adf('0x76')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x2ffd1c,_0x5b069e);}else{if(_0x15352f[_0x3adf('0x3d')][_0x4fef6e]===_0x3adf('0x7d')){_0x5067b7[_0x3adf('0x76')]('i.'+_0x4fef6e+_0x3adf('0x7e'));}else{_0x5067b7[_0x3adf('0x76')]('i.'+_0x4fef6e+_0x3adf('0x7f'),_0x15352f[_0x3adf('0x3d')][_0x4fef6e]);}}});}if(_0x15352f['query']['read']){if(_0x15352f[_0x3adf('0x3d')][_0x3adf('0x80')]==0x1){_0x5067b7[_0x3adf('0x65')](_0x3adf('0x81'));}else{_0x5067b7[_0x3adf('0x65')](_0x3adf('0x82'));}}if(_0x15352f[_0x3adf('0x3d')][_0x3adf('0x83')]){_0x137f77=_[_0x3adf('0x84')](_0x15352f[_0x3adf('0x3d')]['tag'])?_0x15352f[_0x3adf('0x3d')][_0x3adf('0x83')]:new Array(_0x15352f['query']['tag']);_0x137f77[_0x3adf('0x37')](function(_0x378b26){_0x2573d5['or'](_0x3adf('0x85'),'%,'+_0x378b26+',%');});}if(_0x15352f['query'][_0x3adf('0x86')]){var _0x3bb793=_0x15352f[_0x3adf('0x3d')][_0x3adf('0x86')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x3bb793)){_0x4a929f['or'](_0x3adf('0x87'),_0x3bb793+'%')['or'](_0x3adf('0x88'),_0x3bb793+'%');}else{_0x4a929f['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x3adf('0x6a')](_0x3bb793))['or'](_0x3adf('0x89'),_0x3bb793+'%');}}}_0x5067b7['where'](_0x4a929f);_0x5067b7[_0x3adf('0x8a')](_0x3adf('0x8b'));var _0x2cae74={'type':db[_0x3adf('0x8c')][_0x3adf('0x8d')][_0x3adf('0x8e')],'raw':!![]};var _0x4d651a=_0x5067b7[_0x3adf('0x8f')]();_0x4d651a[_0x3adf('0x4a')](_0x3adf('0x8b'));_0x4d651a[_0x3adf('0x4a')](_0x3adf('0x90'),'unreadMessages');if(_0x3795da[_0x3adf('0x47')]){_0x3795da[_0x3adf('0x47')]['forEach'](function(_0x42aba0){var _0x478121=_0x42aba0[0x0]==='contactName'?_0x42aba0[0x0]:'i.'+_0x42aba0[0x0];_0x5067b7[_0x3adf('0x47')](_0x478121,_0x42aba0[0x1]==='DESC'?![]:!![]);});}if(!_[_0x3adf('0x91')](_0x137f77)){_0x5067b7[_0x3adf('0x65')](_0x2573d5);_0x4d651a[_0x3adf('0x76')](_0x3adf('0x92'),_0x137f77);}BPromise[_0x3adf('0x93')]()['then'](function(){if(!_0x45d41d){if(_0x15352f['query'][_0x3adf('0x75')])return;_0x4d651a[_0x3adf('0x76')](_0x3adf('0x94'));_0x5067b7['where'](_0x3adf('0x94'));return;}if(_0x15352f[_0x3adf('0x95')][_0x3adf('0x96')]!==_0x3adf('0x97'))return;return _0x15352f['user'][_0x3adf('0x98')]({'attributes':['id'],'raw':!![]})[_0x3adf('0x2b')](function(_0x2fa2e2){if(_[_0x3adf('0x91')](_0x2fa2e2)){_0x4d651a[_0x3adf('0x76')](_0x3adf('0x99'));_0x5067b7['where'](_0x3adf('0x99'));}else{_0x4d651a[_0x3adf('0x76')](_0x3adf('0x77'),_[_0x3adf('0x32')](_0x2fa2e2,'id'));_0x5067b7[_0x3adf('0x76')](_0x3adf('0x77'),_[_0x3adf('0x32')](_0x2fa2e2,'id'));}});})[_0x3adf('0x2b')](function(){if(_0x15352f[_0x3adf('0x95')][_0x3adf('0x96')]===_0x3adf('0x97')&&!_0x45d41d&&!_0x15352f['query']['SmsAccountId'])return[];return db['sequelize'][_0x3adf('0x3d')](_0x4d651a[_0x3adf('0x9a')](),_0x2cae74);})[_0x3adf('0x2b')](function(_0x1fa793){_0x47168a['count']=_0x1fa793[_0x3adf('0x44')];if(_0x47168a[_0x3adf('0x25')]===0x0)return[];return db[_0x3adf('0x9b')]['query'](_0x3d13d7[_0x3adf('0x9a')](),_0x2cae74)[_0x3adf('0x2b')](function(_0x19e50e){_0xf3100a=_[_0x3adf('0x9c')](_0x19e50e,'id');_0x2cae74=_[_0x3adf('0x9d')](_0x2cae74,{'model':db['SmsInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x15352f[_0x3adf('0x3d')][_0x3adf('0x43')]){_0x3795da[_0x3adf('0x42')][_0x3adf('0x37')](function(_0x124711){_0x5067b7['field']('i.'+_0x124711);});}else{_0x5067b7['field'](_0x3adf('0x90'),_0x3adf('0x63'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0x9e'),_0x3adf('0x9f'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xa0'),_0x3adf('0xa1'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xa2'),_0x3adf('0xa3'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xa4'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xa5'),_0x3adf('0xa6'));_0x5067b7['field'](_0x3adf('0xa7'),_0x3adf('0xa8'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xa9'),_0x3adf('0xaa'));_0x5067b7['field'](_0x3adf('0xab'),_0x3adf('0xac'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xad'),_0x3adf('0xae'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xaf'),_0x3adf('0xb0'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xb1'),_0x3adf('0xb2'));_0x5067b7['field'](_0x3adf('0xb3'),_0x3adf('0xb4'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xb5'),_0x3adf('0x34'));}if(_0x3795da[_0x3adf('0x24')])_0x5067b7[_0x3adf('0x24')](_0x3795da[_0x3adf('0x24')]);if(_0x3795da[_0x3adf('0x22')])_0x5067b7[_0x3adf('0x22')](_0x3795da[_0x3adf('0x22')]);return db[_0x3adf('0x9b')][_0x3adf('0x3d')](_0x5067b7[_0x3adf('0x9a')](),_0x2cae74);})['then'](function(_0x53fcbb){if(_0x53fcbb['length']>0x0)_0x415c46[_0x3adf('0x76')](_0x3adf('0xb6'),_[_0x3adf('0x32')](_0x53fcbb,'id'));return db[_0x3adf('0x9b')][_0x3adf('0x3d')](_0x415c46[_0x3adf('0x9a')](),_0x2cae74)[_0x3adf('0x2b')](function(_0xb757ea){var _0x5b7648=_['groupBy'](_0xb757ea,'SmsInteractionId');var _0x1fe965=[];_0x53fcbb['forEach'](function(_0x41d5e5){_0x1fe965[_0x3adf('0xb7')](updateSmsInteraction(_0x41d5e5,_0xf3100a,_0x5b7648));});return BPromise[_0x3adf('0xb8')](_0x1fe965);});});})[_0x3adf('0x2b')](function(_0x549768){_0x47168a['rows']=_0x549768;return _0x47168a;})[_0x3adf('0x2b')](respondWithFilteredResult(_0x27e206,_0x3795da))['catch'](handleError(_0x27e206,null));};exports[_0x3adf('0xb9')]=function(_0x1dfdd7,_0x29501f){var _0x40d3c3={'raw':![],'where':{'id':_0x1dfdd7['params']['id']}},_0x2cdfea={};_0x2cdfea[_0x3adf('0x41')]=_['keys'](db['SmsInteraction']['rawAttributes']);_0x2cdfea['query']=_['keys'](_0x1dfdd7[_0x3adf('0x3d')]);_0x2cdfea[_0x3adf('0x3f')]=_[_0x3adf('0x40')](_0x2cdfea[_0x3adf('0x41')],_0x2cdfea[_0x3adf('0x3d')]);_0x40d3c3[_0x3adf('0x42')]=_['intersection'](_0x2cdfea['model'],qs[_0x3adf('0x43')](_0x1dfdd7[_0x3adf('0x3d')][_0x3adf('0x43')]));_0x40d3c3['attributes']=_0x40d3c3[_0x3adf('0x42')]['length']?_0x40d3c3['attributes']:_0x2cdfea[_0x3adf('0x41')];if(_0x1dfdd7[_0x3adf('0x3d')][_0x3adf('0xba')]){_0x40d3c3[_0x3adf('0xbb')]=[{'all':!![]}];}_0x40d3c3=_[_0x3adf('0x9d')]({},_0x40d3c3,_0x1dfdd7['options']);return db[_0x3adf('0x39')]['find'](_0x40d3c3)['then'](handleEntityNotFound(_0x29501f,null))[_0x3adf('0x2b')](respondWithResult(_0x29501f,null))[_0x3adf('0xbc')](handleError(_0x29501f,null));};exports['create']=function(_0x55407f,_0x5594c8){return db[_0x3adf('0x39')][_0x3adf('0xbd')](_0x55407f['body'],{})[_0x3adf('0x2b')](respondWithResult(_0x5594c8,0xc9))['catch'](handleError(_0x5594c8,null));};exports['update']=function(_0x2dbd9e,_0x4de67c){if(_0x2dbd9e['body']['id']){delete _0x2dbd9e[_0x3adf('0x73')]['id'];}return db[_0x3adf('0x39')][_0x3adf('0x62')]({'where':{'id':_0x2dbd9e['params']['id']}})[_0x3adf('0x2b')](handleEntityNotFound(_0x4de67c,null))[_0x3adf('0x2b')](saveUpdates(_0x2dbd9e[_0x3adf('0x73')],null))['then'](respondWithResult(_0x4de67c,null))[_0x3adf('0xbc')](handleError(_0x4de67c,null));};exports[_0x3adf('0x2c')]=function(_0x167809,_0x5d85a2){return db[_0x3adf('0x39')][_0x3adf('0x62')]({'where':{'id':_0x167809['params']['id']}})[_0x3adf('0x2b')](handleEntityNotFound(_0x5d85a2,null))[_0x3adf('0x2b')](removeEntity(_0x5d85a2,null))['catch'](handleError(_0x5d85a2,null));};exports['describe']=function(_0x24fae4,_0x3fbb74){return db['SmsInteraction']['describe']()[_0x3adf('0x2b')](respondWithResult(_0x3fbb74,null))[_0x3adf('0xbc')](handleError(_0x3fbb74,null));};exports[_0x3adf('0xbe')]=function(_0x5168fb,_0x1e96a9,_0x221124){return db[_0x3adf('0xbf')][_0x3adf('0x62')]({'where':{'id':_0x5168fb[_0x3adf('0xc0')]['id']}})['then'](handleEntityNotFound(_0x1e96a9,null))[_0x3adf('0x2b')](function(_0xdcb8a){if(_0xdcb8a){return _0xdcb8a[_0x3adf('0xbe')](_0x5168fb[_0x3adf('0x73')]['ids'],_[_0x3adf('0xc1')](_0x5168fb[_0x3adf('0x73')],['ids','id'])||{});}})[_0x3adf('0x2b')](respondWithResult(_0x1e96a9,null))[_0x3adf('0xbc')](handleError(_0x1e96a9,null));};exports[_0x3adf('0xc2')]=function(_0x11fdf4,_0x4ade40,_0x50fa4b){var _0x761225={'raw':![],'where':{}};var _0x139d67={};var _0x5a39d3={'count':0x0,'rows':[]};return db[_0x3adf('0x39')]['findOne']({'where':{'id':_0x11fdf4[_0x3adf('0xc0')]['id']}})[_0x3adf('0x2b')](handleEntityNotFound(_0x4ade40,null))[_0x3adf('0x2b')](function(_0x515a51){if(_0x515a51){_0x139d67[_0x3adf('0x41')]=_['keys'](db['SmsMessage']['rawAttributes']);_0x139d67[_0x3adf('0x3d')]=_[_0x3adf('0x3e')](_0x11fdf4[_0x3adf('0x3d')]);_0x139d67[_0x3adf('0x3f')]=_[_0x3adf('0x40')](_0x139d67[_0x3adf('0x41')],_0x139d67[_0x3adf('0x3d')]);_0x761225['attributes']=_['intersection'](_0x139d67[_0x3adf('0x41')],qs[_0x3adf('0x43')](_0x11fdf4[_0x3adf('0x3d')][_0x3adf('0x43')]));_0x761225['attributes']=_0x761225[_0x3adf('0x42')][_0x3adf('0x44')]?_0x761225[_0x3adf('0x42')]:_0x139d67[_0x3adf('0x41')];if(!_0x11fdf4[_0x3adf('0x3d')][_0x3adf('0x45')](_0x3adf('0x46'))){_0x761225[_0x3adf('0x24')]=qs[_0x3adf('0x24')](_0x11fdf4[_0x3adf('0x3d')][_0x3adf('0x24')]);_0x761225['offset']=qs[_0x3adf('0x22')](_0x11fdf4[_0x3adf('0x3d')][_0x3adf('0x22')]);}_0x761225[_0x3adf('0x47')]=qs[_0x3adf('0x48')](_0x11fdf4['query'][_0x3adf('0x48')]);_0x761225[_0x3adf('0x76')]=qs[_0x3adf('0x3f')](_[_0x3adf('0x49')](_0x11fdf4[_0x3adf('0x3d')],_0x139d67[_0x3adf('0x3f')]));_0x761225['where']['SmsInteractionId']=_0x515a51['id'];if(_0x11fdf4['query'][_0x3adf('0x86')]){_0x761225[_0x3adf('0x76')]=_['merge'](_0x761225[_0x3adf('0x76')],{'$or':_[_0x3adf('0x32')](_0x761225[_0x3adf('0x42')],function(_0x3f7f47){var _0x502bbc={};_0x502bbc[_0x3f7f47]={'$like':'%'+_0x11fdf4['query']['filter']+'%'};return _0x502bbc;})});}if(_0x11fdf4[_0x3adf('0x3d')]['$gte']){var _0x5c29be=_0x11fdf4[_0x3adf('0x3d')]['$gte']['split'](',');var _0x1d38ba={};_0x1d38ba[_0x5c29be[0x0]]={'$gte':moment(_0x5c29be[0x1])[_0x3adf('0xc3')]('YYYY-MM-DD\x20HH:mm:ss')};_0x761225[_0x3adf('0x76')]=_[_0x3adf('0x9d')](_0x761225[_0x3adf('0x76')],_0x1d38ba);}_0x761225=_[_0x3adf('0x9d')]({},_0x761225,_0x11fdf4[_0x3adf('0xc4')]);return db[_0x3adf('0xbf')][_0x3adf('0x25')]({'where':_0x761225[_0x3adf('0x76')]})[_0x3adf('0x2b')](function(_0x5b02ea){_0x5a39d3[_0x3adf('0x25')]=_0x5b02ea;if(_0x11fdf4[_0x3adf('0x3d')][_0x3adf('0xba')]){_0x761225[_0x3adf('0xbb')]=[{'all':!![]}];}return db[_0x3adf('0xbf')][_0x3adf('0xc5')](_0x761225);})[_0x3adf('0x2b')](function(_0x3a5051){_0x5a39d3['rows']=_0x3a5051;return _0x5a39d3;});}})[_0x3adf('0x2b')](respondWithFilteredResult(_0x4ade40,_0x761225))[_0x3adf('0xbc')](handleError(_0x4ade40,null));};exports[_0x3adf('0xc6')]=function(_0x461876,_0xa3f2c7,_0x4fbc9f){return db[_0x3adf('0x39')][_0x3adf('0x62')]({'where':{'id':_0x461876[_0x3adf('0xc0')]['id']}})[_0x3adf('0x2b')](handleEntityNotFound(_0xa3f2c7,null))[_0x3adf('0x2b')](function(_0x2eafc4){if(_0x2eafc4){return _0x2eafc4[_0x3adf('0xc7')](_0x461876[_0x3adf('0x73')][_0x3adf('0xc8')],_['omit'](_0x461876['body'],['ids','id'])||{})['spread'](function(){return db['Tag'][_0x3adf('0xc5')]({'attributes':['id','name',_0x3adf('0x4b')],'where':{'id':_0x461876[_0x3adf('0x73')][_0x3adf('0xc8')]}});})['then'](function(_0x9fab83){socket['emit']('smsInteractionTags:save',{'id':Number(_0x461876[_0x3adf('0xc0')]['id']),'tags':_0x9fab83||[]});return{'id':Number(_0x461876[_0x3adf('0xc0')]['id']),'tags':_0x9fab83||[]};});}})['then'](respondWithResult(_0xa3f2c7,null))[_0x3adf('0xbc')](handleError(_0xa3f2c7,null));};exports[_0x3adf('0xc9')]=function(_0x8c3b9d,_0x5338e9,_0x316bc8){return db[_0x3adf('0x39')]['find']({'where':{'id':_0x8c3b9d[_0x3adf('0xc0')]['id']}})['then'](handleEntityNotFound(_0x5338e9,null))[_0x3adf('0x2b')](function(_0x1ed883){if(_0x1ed883){return _0x1ed883[_0x3adf('0xc9')](_0x8c3b9d[_0x3adf('0x3d')][_0x3adf('0xc8')]);}})[_0x3adf('0x2b')](respondWithStatusCode(_0x5338e9,null))[_0x3adf('0xbc')](handleError(_0x5338e9,null));};exports[_0x3adf('0xca')]=function(_0x468cb2,_0x339375){var _0x5c7302=moment()[_0x3adf('0xcb')]()['toString']();var _0x89a140=path[_0x3adf('0xcc')](config[_0x3adf('0xcd')],_0x3adf('0xce'),_0x3adf('0xcf'),_0x3adf('0xd0'));var _0x5de18a=path[_0x3adf('0xcc')](config[_0x3adf('0xcd')],'server',_0x3adf('0xcf'),_0x3adf('0xd1'));var _0x4169b7=path[_0x3adf('0xcc')](_0x89a140,_0x5c7302);var _0x53e7ad=util[_0x3adf('0xc3')](_0x3adf('0xd2'),_0x468cb2[_0x3adf('0xc0')]['id'],_0x5c7302);var _0x18ddbf=path[_0x3adf('0xcc')](_0x89a140,_0x53e7ad);var _0x5ded8f=[];_0x5ded8f[_0x3adf('0xb7')]({'model':db[_0x3adf('0xd3')],'as':_0x3adf('0xd3'),'attributes':['id','fullname'],'raw':!![]});_0x5ded8f[_0x3adf('0xb7')]({'model':db['CmContact'],'as':_0x3adf('0x67'),'attributes':['id',_0x3adf('0xd4'),_0x3adf('0xd5')],'raw':!![]});var _0x2b95c7=[{'model':db[_0x3adf('0xbf')],'as':_0x3adf('0xd6'),'attributes':['id',_0x3adf('0x73'),_0x3adf('0x79'),'direction',_0x3adf('0xd7'),'read'],'include':_0x5ded8f}];_0x2b95c7['push']({'model':db['SmsAccount'],'as':_0x3adf('0xd8'),'attributes':['id',_0x3adf('0x30')]});_0x2b95c7[_0x3adf('0xb7')]({'model':db[_0x3adf('0xd3')],'as':_0x3adf('0xd9'),'attributes':['id',_0x3adf('0x33')]});return db['SmsInteraction']['find']({'where':{'id':_0x468cb2[_0x3adf('0xc0')]['id']},'include':_0x2b95c7})[_0x3adf('0x2b')](handleEntityNotFound(_0x339375,null))[_0x3adf('0x2b')](function(_0x287dbc){if(_0x287dbc){var _0x438387=_0x287dbc[_0x3adf('0xda')]({'plain':!![]});fs[_0x3adf('0xdb')](_0x4169b7);var _0x228e7b={'channel':_0x3adf('0xdc'),'account':_0x438387[_0x3adf('0xd8')][_0x3adf('0x30')],'agent':_0x438387[_0x3adf('0xd9')]?_0x438387['Owner'][_0x3adf('0x33')]:_0x3adf('0xdd'),'createdAt':moment(_0x438387[_0x3adf('0x79')])[_0x3adf('0xc3')](_0x3adf('0xde'))[_0x3adf('0x9a')](),'closedAt':_0x438387[_0x3adf('0xdf')]?moment(_0x438387['closedAt'])[_0x3adf('0xc3')](_0x3adf('0xde'))[_0x3adf('0x9a')]():'','disposition':_0x438387['disposition'],'messages':_(_0x438387['Messages'])[_0x3adf('0x86')]({'secret':![]})[_0x3adf('0x32')](function(_0x1fafa3){return{'date':moment(_0x1fafa3[_0x3adf('0x79')])['format'](_0x3adf('0xde'))[_0x3adf('0x9a')](),'sender':_0x1fafa3[_0x3adf('0xe0')]===_0x3adf('0xe1')?_0x1fafa3['User']?_0x1fafa3['User'][_0x3adf('0x33')]:_0x3adf('0xe2'):_0x1fafa3['Contact'][_0x3adf('0xd4')]+(_0x1fafa3[_0x3adf('0x67')][_0x3adf('0xd5')]?'\x20'+_0x1fafa3[_0x3adf('0x67')][_0x3adf('0xd5')]:''),'body':_0x1fafa3['body'],'direction':_0x1fafa3['direction']===_0x3adf('0xe1')?'A':'C','secret':_0x1fafa3[_0x3adf('0xd7')],'read':_0x1fafa3['read']};})[_0x3adf('0x64')]()};return ejs[_0x3adf('0xe3')](path[_0x3adf('0xcc')](config[_0x3adf('0xcd')],_0x3adf('0xce'),_0x3adf('0xe4'),_0x3adf('0xe5')),{'interaction':_0x228e7b})[_0x3adf('0x2b')](function(_0x10699c){var _0x40f301=path[_0x3adf('0xcc')](_0x4169b7,'transcript-'+_0x438387['id']+'-'+_0x5c7302+_0x3adf('0xe6'));var _0x29f166={'path':_0x40f301,'channel':_0x3adf('0xdc'),'interactionId':_0x438387['id']};return pdf[_0x3adf('0xe7')](_0x10699c,_0x29f166);})['then'](function(){return new BPromise(function(_0x2a2163,_0xdeecb2){zipdir(_0x4169b7,{'saveTo':_0x18ddbf},function(_0x4995b8,_0x2e95d6){if(_0x4995b8)return _0xdeecb2(_0x4995b8);return _0x2a2163(_0x2e95d6);});})[_0x3adf('0x2b')](function(){return new BPromise(function(_0x266ece,_0x859d81){rimraf(_0x4169b7,function(_0x318ef8){if(_0x318ef8)_0x859d81(_0x318ef8);return _0x266ece();});});})[_0x3adf('0x2b')](function(){return _0x339375[_0x3adf('0xca')](_0x18ddbf,_0x53e7ad,function(_0x24942f){if(_0x24942f){console['log'](_0x3adf('0xe8'),_0x24942f);}else{fs['unlinkSync'](_0x18ddbf);}});});});}else{return _0x339375[_0x3adf('0x1f')](0xc8);}})[_0x3adf('0xbc')](handleError(_0x339375,null));};
\ No newline at end of file
+var _0xd6b0=['i.SmsAccountId\x20IN\x20?','agent','toString','sequelize','keyBy','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','push','all','rows','catch','params','includeAll','include','options','create','describe','addMessage','omit','ids','getMessages','findOne','SmsMessage','SmsInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','setTags','spread','emit','smsInteractionTags:save','download','join','server','files','tmp','root','transcript-%d-%s.zip','CmContact','firstName','lastName','Messages','createdAt','direction','secret','SmsAccount','Owner','get','mkdirSync','N.A.','closed','closedAt','out','System','views','downloadInteraction.ejs','Sms','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','limit','undefined','count','set','json','apply','reject','save','update','then','destroy','error','name','send','Users','map','fullname','TagIds','split','forEach','Tags','SmsInteraction','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','pick','select','field','color','tools_tags','u.id','u.fullname','ui.SmsInteractionId','from','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_accounts','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','unreadMessages','value','having','`\x20=\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','isEmpty','SmsAccountId','where','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','SELECT','clone','contactName','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL'];(function(_0xe324b2,_0x82a587){var _0x425276=function(_0x580a0d){while(--_0x580a0d){_0xe324b2['push'](_0xe324b2['shift']());}};_0x425276(++_0x82a587);}(_0xd6b0,0x13b));var _0x0d6b=function(_0x7c24f5,_0x45599f){_0x7c24f5=_0x7c24f5-0x0;var _0x2247d5=_0xd6b0[_0x7c24f5];return _0x2247d5;};'use strict';var emlformat=require(_0x0d6b('0x0'));var rimraf=require(_0x0d6b('0x1'));var zipdir=require(_0x0d6b('0x2'));var jsonpatch=require(_0x0d6b('0x3'));var rp=require(_0x0d6b('0x4'));var moment=require('moment');var BPromise=require(_0x0d6b('0x5'));var Mustache=require('mustache');var util=require(_0x0d6b('0x6'));var path=require(_0x0d6b('0x7'));var sox=require(_0x0d6b('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0d6b('0x9'));var _=require(_0x0d6b('0xa'));var squel=require(_0x0d6b('0xb'));var crypto=require(_0x0d6b('0xc'));var jsforce=require(_0x0d6b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x0d6b('0xe'));var querystring=require('querystring');var Papa=require(_0x0d6b('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0d6b('0x10'));var as=require(_0x0d6b('0x11'));var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x0d6b('0x12'));var config=require(_0x0d6b('0x13'));var licenseUtil=require(_0x0d6b('0x14'));var db=require('../../mysqldb')['db'];config[_0x0d6b('0x15')]=_[_0x0d6b('0x16')](config[_0x0d6b('0x15')],{'host':_0x0d6b('0x17'),'port':0x18eb});var socket=require(_0x0d6b('0x18'))(new Redis(config['redis']));require('./smsInteraction.socket')[_0x0d6b('0x19')](socket);function respondWithStatusCode(_0x5b6ce0,_0x4203ca){_0x4203ca=_0x4203ca||0xcc;return function(_0x521934){if(_0x521934){return _0x5b6ce0[_0x0d6b('0x1a')](_0x4203ca);}return _0x5b6ce0[_0x0d6b('0x1b')](_0x4203ca)[_0x0d6b('0x1c')]();};}function respondWithResult(_0x3be82e,_0x7e2194){_0x7e2194=_0x7e2194||0xc8;return function(_0x185761){if(_0x185761){return _0x3be82e[_0x0d6b('0x1b')](_0x7e2194)['json'](_0x185761);}};}function respondWithFilteredResult(_0x4e3a0e,_0x323035){return function(_0x14a65d){if(_0x14a65d){var _0x3ee9ff=typeof _0x323035['offset']==='undefined'&&typeof _0x323035[_0x0d6b('0x1d')]===_0x0d6b('0x1e');var _0x152e9d=_0x14a65d[_0x0d6b('0x1f')];var _0x17994a=_0x3ee9ff?0x0:_0x323035['offset'];var _0x2c06e7=_0x3ee9ff?_0x14a65d[_0x0d6b('0x1f')]:_0x323035['offset']+_0x323035['limit'];var _0x4cfcd7;if(_0x2c06e7>=_0x152e9d){_0x2c06e7=_0x152e9d;_0x4cfcd7=0xc8;}else{_0x4cfcd7=0xce;}_0x4e3a0e[_0x0d6b('0x1b')](_0x4cfcd7);return _0x4e3a0e[_0x0d6b('0x20')]('Content-Range',_0x17994a+'-'+_0x2c06e7+'/'+_0x152e9d)[_0x0d6b('0x21')](_0x14a65d);}return null;};}function patchUpdates(_0x5cbd71){return function(_0x5bf7b4){try{jsonpatch[_0x0d6b('0x22')](_0x5bf7b4,_0x5cbd71,!![]);}catch(_0xbbc045){return BPromise[_0x0d6b('0x23')](_0xbbc045);}return _0x5bf7b4[_0x0d6b('0x24')]();};}function saveUpdates(_0x3b45df,_0xe9eeab){return function(_0x4ce90d){if(_0x4ce90d){return _0x4ce90d[_0x0d6b('0x25')](_0x3b45df)[_0x0d6b('0x26')](function(_0x14084b){return _0x14084b;});}return null;};}function removeEntity(_0x3fd80c,_0x39886c){return function(_0x2cacc3){if(_0x2cacc3){return _0x2cacc3[_0x0d6b('0x27')]()[_0x0d6b('0x26')](function(){_0x3fd80c[_0x0d6b('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x14be19,_0x4efef8){return function(_0x32f6d8){if(!_0x32f6d8){_0x14be19['sendStatus'](0x194);}return _0x32f6d8;};}function handleError(_0x4a5164,_0x5f8b03){_0x5f8b03=_0x5f8b03||0x1f4;return function(_0x7315a3){logger[_0x0d6b('0x28')](_0x7315a3['stack']);if(_0x7315a3[_0x0d6b('0x29')]){delete _0x7315a3[_0x0d6b('0x29')];}_0x4a5164['status'](_0x5f8b03)[_0x0d6b('0x2a')](_0x7315a3);};}function getInteractionUsers(_0xa26951,_0x46600c){return new BPromise(function(_0xd34b3f,_0x4a379d){try{if(_0x46600c[_0xa26951['id']]){_0xa26951[_0x0d6b('0x2b')]=_[_0x0d6b('0x2c')](_0x46600c[_0xa26951['id']],function(_0x7a328f){return{'id':_0x7a328f['id'],'fullname':_0x7a328f[_0x0d6b('0x2d')]};});}}catch(_0x158291){_0x4a379d(_0x158291);}_0xd34b3f(_0xa26951);});}function getInteractionTags(_0x41ce67,_0x595654){return new BPromise(function(_0x389434,_0x52afc5){try{if(_0x41ce67[_0x0d6b('0x2e')]){_0x41ce67['Tags']=[];_0x41ce67[_0x0d6b('0x2e')][_0x0d6b('0x2f')](',')[_0x0d6b('0x30')](function(_0x2767c7){_0x41ce67[_0x0d6b('0x31')]['push'](_0x595654[_0x2767c7]);});}delete _0x41ce67[_0x0d6b('0x2e')];}catch(_0xb1b3f5){_0x52afc5(_0xb1b3f5);}_0x389434(_0x41ce67);});}function updateSmsInteraction(_0x46a290,_0xef74b6,_0x1680a0){return new BPromise(function(_0x4c3e97,_0x3d9684){return getInteractionUsers(_0x46a290,_0x1680a0)[_0x0d6b('0x26')](function(_0x2d48ef){return getInteractionTags(_0x2d48ef,_0xef74b6);})[_0x0d6b('0x26')](function(_0x18b69d){_0x4c3e97(_0x18b69d);})['catch'](function(_0x47897c){_0x3d9684(_0x47897c);});});}exports['index']=function(_0x2b31db,_0x176842){var _0x545733={},_0x488d2c={},_0x45592c={'count':0x0,'rows':[]};var _0x3ed412=_['map'](db[_0x0d6b('0x32')][_0x0d6b('0x33')],function(_0x13f886){return{'name':_0x13f886[_0x0d6b('0x34')],'type':_0x13f886[_0x0d6b('0x35')]['key']};});_0x488d2c[_0x0d6b('0x36')]=_[_0x0d6b('0x2c')](_0x3ed412,'name');_0x488d2c[_0x0d6b('0x37')]=_[_0x0d6b('0x38')](_0x2b31db['query']);_0x488d2c[_0x0d6b('0x39')]=_[_0x0d6b('0x3a')](_0x488d2c['model'],_0x488d2c['query']);_0x545733[_0x0d6b('0x3b')]=_[_0x0d6b('0x3a')](_0x488d2c['model'],qs[_0x0d6b('0x3c')](_0x2b31db[_0x0d6b('0x37')]['fields']));_0x545733[_0x0d6b('0x3b')]=_0x545733[_0x0d6b('0x3b')][_0x0d6b('0x3d')]?_0x545733['attributes']:_0x488d2c[_0x0d6b('0x36')];if(!_0x2b31db['query'][_0x0d6b('0x3e')](_0x0d6b('0x3f'))){_0x545733[_0x0d6b('0x1d')]=qs['limit'](_0x2b31db[_0x0d6b('0x37')]['limit']);_0x545733[_0x0d6b('0x40')]=qs[_0x0d6b('0x40')](_0x2b31db[_0x0d6b('0x37')][_0x0d6b('0x40')]);}_0x545733[_0x0d6b('0x41')]=qs[_0x0d6b('0x42')](_0x2b31db[_0x0d6b('0x37')][_0x0d6b('0x42')]);_0x545733['where']=qs[_0x0d6b('0x39')](_[_0x0d6b('0x43')](_0x2b31db[_0x0d6b('0x37')],_0x488d2c[_0x0d6b('0x39')]),_0x3ed412);var _0x550bba=[];var _0x4589fb=squel[_0x0d6b('0x44')]()['field']('id')['field'](_0x0d6b('0x29'))[_0x0d6b('0x45')](_0x0d6b('0x46'))['from'](_0x0d6b('0x47'));var _0x3a17d9=squel[_0x0d6b('0x44')]()[_0x0d6b('0x45')](_0x0d6b('0x48'))['field'](_0x0d6b('0x49'))[_0x0d6b('0x45')](_0x0d6b('0x4a'))[_0x0d6b('0x4b')](_0x0d6b('0x4c'),'ui')[_0x0d6b('0x4d')](_0x0d6b('0x4e'),'u',_0x0d6b('0x4f'));var _0x2483d3=squel['select']()['from'](_0x0d6b('0x50'),'i')[_0x0d6b('0x4d')](_0x0d6b('0x51'),'c',_0x0d6b('0x52'))[_0x0d6b('0x4d')]('users','o',_0x0d6b('0x53'))[_0x0d6b('0x4d')](_0x0d6b('0x54'),'a','a.id\x20=\x20i.SmsAccountId')[_0x0d6b('0x4d')](_0x0d6b('0x55'),'me',_0x0d6b('0x56'))['left_join'](_0x0d6b('0x57'),'it',_0x0d6b('0x58'))[_0x0d6b('0x4d')](_0x0d6b('0x47'),'t',_0x0d6b('0x59'));var _0x2da88e=squel[_0x0d6b('0x5a')]();var _0x2f8363=[];var _0x9389ae=squel[_0x0d6b('0x5a')]();var _0x19fd0a;if(_0x2b31db[_0x0d6b('0x37')][_0x0d6b('0x5b')]){_0x19fd0a=as[_0x0d6b('0x5c')](_0x2b31db[_0x0d6b('0x37')][_0x0d6b('0x5b')]);var _0x2aa645=_0x19fd0a[_0x0d6b('0x5d')];for(var _0x425848=0x0;_0x425848<_0x19fd0a[_0x0d6b('0x5e')][_0x0d6b('0x3d')];_0x425848++){var _0x567cc6=_0x19fd0a[_0x0d6b('0x5e')][_0x425848];var _0x2f7106='i';var _0x30a5aa=_['find'](_0x3ed412,['name',_0x567cc6[_0x0d6b('0x45')]]);if(!_0x30a5aa){switch(_0x567cc6[_0x0d6b('0x45')]){case _0x0d6b('0x5f'):if(_0x567cc6[_0x0d6b('0x60')]==0x1){_0x2483d3[_0x0d6b('0x61')]('`'+_0x567cc6[_0x0d6b('0x45')]+_0x0d6b('0x62'));}else{_0x2483d3[_0x0d6b('0x61')]('`'+_0x567cc6['field']+'`\x20>\x200');}break;case _0x0d6b('0x63'):if(_0x567cc6[_0x0d6b('0x64')]===_0x0d6b('0x65')){if(_0x567cc6[_0x0d6b('0x60')]['split']('\x20')[_0x0d6b('0x3d')]>0x1){_0x2da88e[_0x2aa645](_0x0d6b('0x66'),qs[_0x0d6b('0x67')](_0x567cc6['value']),null);}else{var _0x5e7610='%'+_0x567cc6[_0x0d6b('0x60')]+'%';_0x2da88e[_0x2aa645](_0x0d6b('0x68'),_0x5e7610,_0x5e7610,_0x5e7610);}}else{_0x30a5aa=_[_0x0d6b('0x69')](_0x3ed412,[_0x0d6b('0x29'),_0x0d6b('0x6a')]);_0x567cc6[_0x0d6b('0x45')]=_0x0d6b('0x6a');_0x4b9b59=as[_0x0d6b('0x6b')](_0x2f7106,_0x30a5aa['type'],_0x567cc6);_0x2da88e[_0x2aa645](_0x4b9b59[_0x0d6b('0x6c')],_0x4b9b59[_0x0d6b('0x60')][_0x0d6b('0x6d')],_0x4b9b59[_0x0d6b('0x60')][_0x0d6b('0x1c')]);}break;case _0x0d6b('0x6e'):var _0x243dab=_0x567cc6[_0x0d6b('0x60')][_0x0d6b('0x2f')](',')[_0x0d6b('0x2c')](function(_0x1f3d9d){return Number(_0x1f3d9d);});_0x243dab[_0x0d6b('0x30')](function(_0x1fa7e3){_0x9389ae['or'](_0x0d6b('0x6f'),'%,'+_0x1fa7e3+',%');});_0x2f8363=_[_0x0d6b('0x70')](_0x2f8363,_0x243dab);break;case _0x0d6b('0x71'):if(_0x567cc6[_0x0d6b('0x64')]===_0x0d6b('0x65')){_0x2da88e[_0x2aa645](_0x0d6b('0x72'),'%'+_0x567cc6[_0x0d6b('0x60')]+'%',null);}else{_0x30a5aa=_[_0x0d6b('0x69')](_0x3ed412,[_0x0d6b('0x29'),'UserId']);_0x567cc6['field']=_0x0d6b('0x73');_0x4b9b59=as[_0x0d6b('0x6b')](_0x2f7106,_0x30a5aa['type'],_0x567cc6);_0x2da88e[_0x2aa645](_0x4b9b59[_0x0d6b('0x6c')],_0x4b9b59[_0x0d6b('0x60')]['start'],_0x4b9b59[_0x0d6b('0x60')][_0x0d6b('0x1c')]);}break;case _0x0d6b('0x74'):_0x4b9b59=as[_0x0d6b('0x6b')]('me',null,_0x567cc6);_0x2da88e[_0x2aa645](_0x4b9b59[_0x0d6b('0x6c')],_0x4b9b59[_0x0d6b('0x60')][_0x0d6b('0x6d')],_0x4b9b59[_0x0d6b('0x60')][_0x0d6b('0x1c')]);break;}}else{var _0x4b9b59=as['buildExpression'](_0x2f7106,_0x30a5aa[_0x0d6b('0x35')],_0x567cc6);_0x2da88e[_0x2aa645](_0x4b9b59['text'],_0x4b9b59[_0x0d6b('0x60')][_0x0d6b('0x6d')],_0x4b9b59[_0x0d6b('0x60')][_0x0d6b('0x1c')]);}}}else{var _0x103c8e=_(_0x2b31db[_0x0d6b('0x37')])['keys']()['map'](function(_0x10f804){return _['some'](_0x3ed412,[_0x0d6b('0x29'),_0x10f804])?_0x10f804:undefined;})['compact']()['value']();if(!_[_0x0d6b('0x75')](_0x103c8e)){_0x103c8e[_0x0d6b('0x30')](function(_0x1c6090){if(_0x1c6090===_0x0d6b('0x76')){_0x2483d3[_0x0d6b('0x77')]('i.SmsAccountId\x20IN\x20?',[]['concat'](_0x2b31db[_0x0d6b('0x37')][_0x1c6090]));}else if(_0x1c6090==='createdAt'){var _0x5b6b0e=JSON[_0x0d6b('0x78')](_0x2b31db[_0x0d6b('0x37')][_0x1c6090])[_0x0d6b('0x79')];var _0x5470fa=JSON[_0x0d6b('0x78')](_0x2b31db['query'][_0x1c6090])[_0x0d6b('0x7a')];_0x2483d3[_0x0d6b('0x77')](_0x0d6b('0x7b'),_0x5b6b0e,_0x5470fa);}else{if(_0x2b31db[_0x0d6b('0x37')][_0x1c6090]===_0x0d6b('0x7c')){_0x2483d3[_0x0d6b('0x77')]('i.'+_0x1c6090+_0x0d6b('0x7d'));}else{_0x2483d3[_0x0d6b('0x77')]('i.'+_0x1c6090+_0x0d6b('0x7e'),_0x2b31db[_0x0d6b('0x37')][_0x1c6090]);}}});}if(_0x2b31db[_0x0d6b('0x37')][_0x0d6b('0x7f')]){if(_0x2b31db['query'][_0x0d6b('0x7f')]==0x1){_0x2483d3[_0x0d6b('0x61')](_0x0d6b('0x80'));}else{_0x2483d3[_0x0d6b('0x61')](_0x0d6b('0x81'));}}if(_0x2b31db[_0x0d6b('0x37')][_0x0d6b('0x82')]){_0x2f8363=_[_0x0d6b('0x83')](_0x2b31db['query'][_0x0d6b('0x82')])?_0x2b31db[_0x0d6b('0x37')]['tag']:new Array(_0x2b31db[_0x0d6b('0x37')][_0x0d6b('0x82')]);_0x2f8363['forEach'](function(_0x481371){_0x9389ae['or'](_0x0d6b('0x6f'),'%,'+_0x481371+',%');});}if(_0x2b31db[_0x0d6b('0x37')][_0x0d6b('0x84')]){var _0x40e3fd=_0x2b31db['query'][_0x0d6b('0x84')][_0x0d6b('0x85')]('\x5c','\x5c\x5c')[_0x0d6b('0x85')](/'/g,'\x27\x27');if(qs[_0x0d6b('0x86')](_0x40e3fd)){_0x2da88e['or'](_0x0d6b('0x87'),_0x40e3fd+'%')['or'](_0x0d6b('0x88'),_0x40e3fd+'%');}else{_0x2da88e['or'](_0x0d6b('0x89'),qs[_0x0d6b('0x67')](_0x40e3fd))['or'](_0x0d6b('0x8a'),_0x40e3fd+'%');}}}_0x2483d3[_0x0d6b('0x77')](_0x2da88e);_0x2483d3[_0x0d6b('0x8b')](_0x0d6b('0x8c'));var _0x2490ce={'type':db[_0x0d6b('0x8d')]['QueryTypes'][_0x0d6b('0x8e')],'raw':!![]};var _0x248f2b=_0x2483d3[_0x0d6b('0x8f')]();_0x248f2b[_0x0d6b('0x45')]('i.id');_0x248f2b['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0x545733['order']){_0x545733['order'][_0x0d6b('0x30')](function(_0x529efb){var _0x1ff1ff=_0x529efb[0x0]===_0x0d6b('0x90')?_0x529efb[0x0]:'i.'+_0x529efb[0x0];_0x2483d3[_0x0d6b('0x41')](_0x1ff1ff,_0x529efb[0x1]===_0x0d6b('0x91')?![]:!![]);});}if(!_[_0x0d6b('0x75')](_0x2f8363)){_0x2483d3[_0x0d6b('0x61')](_0x9389ae);_0x248f2b[_0x0d6b('0x77')](_0x0d6b('0x92'),_0x2f8363);}BPromise[_0x0d6b('0x93')]()[_0x0d6b('0x26')](function(){if(!_0x19fd0a){if(_0x2b31db[_0x0d6b('0x37')]['SmsAccountId'])return;_0x248f2b[_0x0d6b('0x77')](_0x0d6b('0x94'));_0x2483d3[_0x0d6b('0x77')](_0x0d6b('0x94'));return;}if(_0x2b31db[_0x0d6b('0x95')][_0x0d6b('0x96')]!=='agent')return;return _0x2b31db[_0x0d6b('0x95')][_0x0d6b('0x97')]({'attributes':['id'],'raw':!![]})[_0x0d6b('0x26')](function(_0x3e4795){if(_[_0x0d6b('0x75')](_0x3e4795)){_0x248f2b[_0x0d6b('0x77')](_0x0d6b('0x98'));_0x2483d3[_0x0d6b('0x77')]('i.SmsAccountId\x20IS\x20NULL');}else{_0x248f2b[_0x0d6b('0x77')](_0x0d6b('0x99'),_['map'](_0x3e4795,'id'));_0x2483d3[_0x0d6b('0x77')](_0x0d6b('0x99'),_['map'](_0x3e4795,'id'));}});})[_0x0d6b('0x26')](function(){if(_0x2b31db[_0x0d6b('0x95')][_0x0d6b('0x96')]===_0x0d6b('0x9a')&&!_0x19fd0a&&!_0x2b31db[_0x0d6b('0x37')]['SmsAccountId'])return[];return db['sequelize'][_0x0d6b('0x37')](_0x248f2b[_0x0d6b('0x9b')](),_0x2490ce);})[_0x0d6b('0x26')](function(_0x51d056){_0x45592c[_0x0d6b('0x1f')]=_0x51d056[_0x0d6b('0x3d')];if(_0x45592c[_0x0d6b('0x1f')]===0x0)return[];return db[_0x0d6b('0x9c')][_0x0d6b('0x37')](_0x4589fb[_0x0d6b('0x9b')](),_0x2490ce)[_0x0d6b('0x26')](function(_0xd18d27){_0x550bba=_[_0x0d6b('0x9d')](_0xd18d27,'id');_0x2490ce=_[_0x0d6b('0x9e')](_0x2490ce,{'model':db[_0x0d6b('0x32')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2b31db['query'][_0x0d6b('0x3c')]){_0x545733[_0x0d6b('0x3b')][_0x0d6b('0x30')](function(_0x15460a){_0x2483d3[_0x0d6b('0x45')]('i.'+_0x15460a);});}else{_0x2483d3[_0x0d6b('0x45')](_0x0d6b('0x9f'),_0x0d6b('0x5f'));_0x2483d3[_0x0d6b('0x45')](_0x0d6b('0xa0'),_0x0d6b('0xa1'));_0x2483d3[_0x0d6b('0x45')](_0x0d6b('0xa2'),_0x0d6b('0xa3'));_0x2483d3['field'](_0x0d6b('0xa4'),_0x0d6b('0x90'));_0x2483d3[_0x0d6b('0x45')](_0x0d6b('0xa5'));_0x2483d3[_0x0d6b('0x45')]('c.firstName',_0x0d6b('0xa6'));_0x2483d3['field'](_0x0d6b('0xa7'),_0x0d6b('0xa8'));_0x2483d3['field'](_0x0d6b('0xa9'),'Contact.email');_0x2483d3[_0x0d6b('0x45')]('c.phone',_0x0d6b('0xaa'));_0x2483d3[_0x0d6b('0x45')](_0x0d6b('0xab'),_0x0d6b('0xac'));_0x2483d3['field'](_0x0d6b('0xad'),_0x0d6b('0xae'));_0x2483d3[_0x0d6b('0x45')](_0x0d6b('0xaf'),_0x0d6b('0xb0'));_0x2483d3[_0x0d6b('0x45')](_0x0d6b('0xb1'),'Owner.internal');_0x2483d3[_0x0d6b('0x45')](_0x0d6b('0xb2'),_0x0d6b('0x2e'));}if(_0x545733[_0x0d6b('0x1d')])_0x2483d3[_0x0d6b('0x1d')](_0x545733[_0x0d6b('0x1d')]);if(_0x545733[_0x0d6b('0x40')])_0x2483d3[_0x0d6b('0x40')](_0x545733['offset']);return db[_0x0d6b('0x9c')][_0x0d6b('0x37')](_0x2483d3[_0x0d6b('0x9b')](),_0x2490ce);})[_0x0d6b('0x26')](function(_0x2e4408){if(_0x2e4408[_0x0d6b('0x3d')]>0x0)_0x3a17d9['where'](_0x0d6b('0xb3'),_[_0x0d6b('0x2c')](_0x2e4408,'id'));return db[_0x0d6b('0x9c')]['query'](_0x3a17d9[_0x0d6b('0x9b')](),_0x2490ce)[_0x0d6b('0x26')](function(_0x421a0a){var _0x506cab=_['groupBy'](_0x421a0a,'SmsInteractionId');var _0x2f15e4=[];_0x2e4408['forEach'](function(_0x49878c){_0x2f15e4[_0x0d6b('0xb4')](updateSmsInteraction(_0x49878c,_0x550bba,_0x506cab));});return BPromise[_0x0d6b('0xb5')](_0x2f15e4);});});})[_0x0d6b('0x26')](function(_0x16be6a){_0x45592c[_0x0d6b('0xb6')]=_0x16be6a;return _0x45592c;})[_0x0d6b('0x26')](respondWithFilteredResult(_0x176842,_0x545733))[_0x0d6b('0xb7')](handleError(_0x176842,null));};exports['show']=function(_0x4f0ec1,_0x3656ed){var _0x5821cb={'raw':![],'where':{'id':_0x4f0ec1[_0x0d6b('0xb8')]['id']}},_0xf3049c={};_0xf3049c[_0x0d6b('0x36')]=_[_0x0d6b('0x38')](db['SmsInteraction'][_0x0d6b('0x33')]);_0xf3049c[_0x0d6b('0x37')]=_['keys'](_0x4f0ec1[_0x0d6b('0x37')]);_0xf3049c['filters']=_[_0x0d6b('0x3a')](_0xf3049c['model'],_0xf3049c[_0x0d6b('0x37')]);_0x5821cb['attributes']=_['intersection'](_0xf3049c[_0x0d6b('0x36')],qs[_0x0d6b('0x3c')](_0x4f0ec1[_0x0d6b('0x37')][_0x0d6b('0x3c')]));_0x5821cb[_0x0d6b('0x3b')]=_0x5821cb[_0x0d6b('0x3b')][_0x0d6b('0x3d')]?_0x5821cb[_0x0d6b('0x3b')]:_0xf3049c[_0x0d6b('0x36')];if(_0x4f0ec1['query'][_0x0d6b('0xb9')]){_0x5821cb[_0x0d6b('0xba')]=[{'all':!![]}];}_0x5821cb=_[_0x0d6b('0x9e')]({},_0x5821cb,_0x4f0ec1[_0x0d6b('0xbb')]);return db[_0x0d6b('0x32')][_0x0d6b('0x69')](_0x5821cb)[_0x0d6b('0x26')](handleEntityNotFound(_0x3656ed,null))[_0x0d6b('0x26')](respondWithResult(_0x3656ed,null))['catch'](handleError(_0x3656ed,null));};exports[_0x0d6b('0xbc')]=function(_0x840fcb,_0x3175e6){return db[_0x0d6b('0x32')][_0x0d6b('0xbc')](_0x840fcb[_0x0d6b('0x74')],{})[_0x0d6b('0x26')](respondWithResult(_0x3175e6,0xc9))['catch'](handleError(_0x3175e6,null));};exports[_0x0d6b('0x25')]=function(_0x16277b,_0x14ef74){if(_0x16277b[_0x0d6b('0x74')]['id']){delete _0x16277b['body']['id'];}return db[_0x0d6b('0x32')][_0x0d6b('0x69')]({'where':{'id':_0x16277b[_0x0d6b('0xb8')]['id']}})[_0x0d6b('0x26')](handleEntityNotFound(_0x14ef74,null))[_0x0d6b('0x26')](saveUpdates(_0x16277b[_0x0d6b('0x74')],null))[_0x0d6b('0x26')](respondWithResult(_0x14ef74,null))[_0x0d6b('0xb7')](handleError(_0x14ef74,null));};exports[_0x0d6b('0x27')]=function(_0x515459,_0x4d4073){return db[_0x0d6b('0x32')]['find']({'where':{'id':_0x515459['params']['id']}})[_0x0d6b('0x26')](handleEntityNotFound(_0x4d4073,null))[_0x0d6b('0x26')](removeEntity(_0x4d4073,null))[_0x0d6b('0xb7')](handleError(_0x4d4073,null));};exports[_0x0d6b('0xbd')]=function(_0x481843,_0x422603){return db[_0x0d6b('0x32')][_0x0d6b('0xbd')]()[_0x0d6b('0x26')](respondWithResult(_0x422603,null))[_0x0d6b('0xb7')](handleError(_0x422603,null));};exports[_0x0d6b('0xbe')]=function(_0x40ce27,_0x1c0da4,_0x9345ab){return db['SmsMessage']['find']({'where':{'id':_0x40ce27[_0x0d6b('0xb8')]['id']}})[_0x0d6b('0x26')](handleEntityNotFound(_0x1c0da4,null))[_0x0d6b('0x26')](function(_0x5e8310){if(_0x5e8310){return _0x5e8310[_0x0d6b('0xbe')](_0x40ce27[_0x0d6b('0x74')]['ids'],_[_0x0d6b('0xbf')](_0x40ce27[_0x0d6b('0x74')],[_0x0d6b('0xc0'),'id'])||{});}})[_0x0d6b('0x26')](respondWithResult(_0x1c0da4,null))['catch'](handleError(_0x1c0da4,null));};exports[_0x0d6b('0xc1')]=function(_0x12dfe8,_0x1df28a,_0x2fb8ab){var _0x22faf6={'raw':![],'where':{}};var _0x119acb={};var _0x316a80={'count':0x0,'rows':[]};return db[_0x0d6b('0x32')][_0x0d6b('0xc2')]({'where':{'id':_0x12dfe8['params']['id']}})[_0x0d6b('0x26')](handleEntityNotFound(_0x1df28a,null))[_0x0d6b('0x26')](function(_0x47f581){if(_0x47f581){_0x119acb[_0x0d6b('0x36')]=_[_0x0d6b('0x38')](db[_0x0d6b('0xc3')][_0x0d6b('0x33')]);_0x119acb[_0x0d6b('0x37')]=_['keys'](_0x12dfe8[_0x0d6b('0x37')]);_0x119acb[_0x0d6b('0x39')]=_[_0x0d6b('0x3a')](_0x119acb[_0x0d6b('0x36')],_0x119acb['query']);_0x22faf6[_0x0d6b('0x3b')]=_[_0x0d6b('0x3a')](_0x119acb[_0x0d6b('0x36')],qs[_0x0d6b('0x3c')](_0x12dfe8[_0x0d6b('0x37')]['fields']));_0x22faf6[_0x0d6b('0x3b')]=_0x22faf6[_0x0d6b('0x3b')][_0x0d6b('0x3d')]?_0x22faf6[_0x0d6b('0x3b')]:_0x119acb[_0x0d6b('0x36')];if(!_0x12dfe8[_0x0d6b('0x37')][_0x0d6b('0x3e')](_0x0d6b('0x3f'))){_0x22faf6[_0x0d6b('0x1d')]=qs[_0x0d6b('0x1d')](_0x12dfe8[_0x0d6b('0x37')][_0x0d6b('0x1d')]);_0x22faf6[_0x0d6b('0x40')]=qs[_0x0d6b('0x40')](_0x12dfe8[_0x0d6b('0x37')][_0x0d6b('0x40')]);}_0x22faf6['order']=qs[_0x0d6b('0x42')](_0x12dfe8[_0x0d6b('0x37')][_0x0d6b('0x42')]);_0x22faf6['where']=qs[_0x0d6b('0x39')](_[_0x0d6b('0x43')](_0x12dfe8[_0x0d6b('0x37')],_0x119acb[_0x0d6b('0x39')]));_0x22faf6[_0x0d6b('0x77')][_0x0d6b('0xc4')]=_0x47f581['id'];if(_0x12dfe8['query'][_0x0d6b('0x84')]){_0x22faf6['where']=_[_0x0d6b('0x9e')](_0x22faf6[_0x0d6b('0x77')],{'$or':_[_0x0d6b('0x2c')](_0x22faf6[_0x0d6b('0x3b')],function(_0x1fe3a7){var _0x38227f={};_0x38227f[_0x1fe3a7]={'$like':'%'+_0x12dfe8['query'][_0x0d6b('0x84')]+'%'};return _0x38227f;})});}if(_0x12dfe8[_0x0d6b('0x37')][_0x0d6b('0x79')]){var _0x1c4ff3=_0x12dfe8['query']['$gte'][_0x0d6b('0x2f')](',');var _0x49d829={};_0x49d829[_0x1c4ff3[0x0]]={'$gte':moment(_0x1c4ff3[0x1])[_0x0d6b('0xc5')](_0x0d6b('0xc6'))};_0x22faf6['where']=_[_0x0d6b('0x9e')](_0x22faf6['where'],_0x49d829);}_0x22faf6=_[_0x0d6b('0x9e')]({},_0x22faf6,_0x12dfe8['options']);return db['SmsMessage'][_0x0d6b('0x1f')]({'where':_0x22faf6[_0x0d6b('0x77')]})[_0x0d6b('0x26')](function(_0x58406a){_0x316a80['count']=_0x58406a;if(_0x12dfe8[_0x0d6b('0x37')][_0x0d6b('0xb9')]){_0x22faf6['include']=[{'all':!![]}];}return db[_0x0d6b('0xc3')][_0x0d6b('0xc7')](_0x22faf6);})[_0x0d6b('0x26')](function(_0x4e56ff){_0x316a80[_0x0d6b('0xb6')]=_0x4e56ff;return _0x316a80;});}})[_0x0d6b('0x26')](respondWithFilteredResult(_0x1df28a,_0x22faf6))[_0x0d6b('0xb7')](handleError(_0x1df28a,null));};exports['addTags']=function(_0x594f4b,_0x16d9e4,_0x2390d9){return db[_0x0d6b('0x32')]['find']({'where':{'id':_0x594f4b[_0x0d6b('0xb8')]['id']}})[_0x0d6b('0x26')](handleEntityNotFound(_0x16d9e4,null))[_0x0d6b('0x26')](function(_0x1622a9){if(_0x1622a9){return _0x1622a9[_0x0d6b('0xc8')](_0x594f4b[_0x0d6b('0x74')][_0x0d6b('0xc0')],_[_0x0d6b('0xbf')](_0x594f4b[_0x0d6b('0x74')],['ids','id'])||{})[_0x0d6b('0xc9')](function(){return db['Tag'][_0x0d6b('0xc7')]({'attributes':['id',_0x0d6b('0x29'),_0x0d6b('0x46')],'where':{'id':_0x594f4b[_0x0d6b('0x74')][_0x0d6b('0xc0')]}});})[_0x0d6b('0x26')](function(_0x74fcf3){socket[_0x0d6b('0xca')](_0x0d6b('0xcb'),{'id':Number(_0x594f4b[_0x0d6b('0xb8')]['id']),'tags':_0x74fcf3||[]});return{'id':Number(_0x594f4b[_0x0d6b('0xb8')]['id']),'tags':_0x74fcf3||[]};});}})[_0x0d6b('0x26')](respondWithResult(_0x16d9e4,null))[_0x0d6b('0xb7')](handleError(_0x16d9e4,null));};exports['removeTags']=function(_0x33a136,_0x2304cb,_0xf5d9b4){return db[_0x0d6b('0x32')]['find']({'where':{'id':_0x33a136[_0x0d6b('0xb8')]['id']}})[_0x0d6b('0x26')](handleEntityNotFound(_0x2304cb,null))[_0x0d6b('0x26')](function(_0x482f8a){if(_0x482f8a){return _0x482f8a['removeTags'](_0x33a136[_0x0d6b('0x37')]['ids']);}})[_0x0d6b('0x26')](respondWithStatusCode(_0x2304cb,null))['catch'](handleError(_0x2304cb,null));};exports[_0x0d6b('0xcc')]=function(_0x3bf53c,_0x3e6f63){var _0x1c8c28=moment()['unix']()[_0x0d6b('0x9b')]();var _0x5c7235=path[_0x0d6b('0xcd')](config['root'],_0x0d6b('0xce'),_0x0d6b('0xcf'),_0x0d6b('0xd0'));var _0x54b6f9=path[_0x0d6b('0xcd')](config[_0x0d6b('0xd1')],_0x0d6b('0xce'),_0x0d6b('0xcf'),'attachments');var _0x5ec66d=path[_0x0d6b('0xcd')](_0x5c7235,_0x1c8c28);var _0x6752f5=util[_0x0d6b('0xc5')](_0x0d6b('0xd2'),_0x3bf53c[_0x0d6b('0xb8')]['id'],_0x1c8c28);var _0x44615c=path[_0x0d6b('0xcd')](_0x5c7235,_0x6752f5);var _0x20329e=[];_0x20329e[_0x0d6b('0xb4')]({'model':db[_0x0d6b('0x71')],'as':_0x0d6b('0x71'),'attributes':['id',_0x0d6b('0x2d')],'raw':!![]});_0x20329e['push']({'model':db[_0x0d6b('0xd3')],'as':_0x0d6b('0x63'),'attributes':['id',_0x0d6b('0xd4'),_0x0d6b('0xd5')],'raw':!![]});var _0x27484b=[{'model':db['SmsMessage'],'as':_0x0d6b('0xd6'),'attributes':['id',_0x0d6b('0x74'),_0x0d6b('0xd7'),_0x0d6b('0xd8'),_0x0d6b('0xd9'),_0x0d6b('0x7f')],'include':_0x20329e}];_0x27484b[_0x0d6b('0xb4')]({'model':db[_0x0d6b('0xda')],'as':'Account','attributes':['id',_0x0d6b('0x29')]});_0x27484b[_0x0d6b('0xb4')]({'model':db[_0x0d6b('0x71')],'as':_0x0d6b('0xdb'),'attributes':['id',_0x0d6b('0x2d')]});return db['SmsInteraction'][_0x0d6b('0x69')]({'where':{'id':_0x3bf53c[_0x0d6b('0xb8')]['id']},'include':_0x27484b})[_0x0d6b('0x26')](handleEntityNotFound(_0x3e6f63,null))['then'](function(_0xe2a91c){if(_0xe2a91c){var _0x54663f=_0xe2a91c[_0x0d6b('0xdc')]({'plain':!![]});fs[_0x0d6b('0xdd')](_0x5ec66d);var _0x1326eb={'channel':'Sms','account':_0x54663f['Account'][_0x0d6b('0x29')],'agent':_0x54663f['Owner']?_0x54663f['Owner'][_0x0d6b('0x2d')]:_0x0d6b('0xde'),'createdAt':moment(_0x54663f[_0x0d6b('0xd7')])[_0x0d6b('0xc5')](_0x0d6b('0xc6'))[_0x0d6b('0x9b')](),'closedAt':_0x54663f[_0x0d6b('0xdf')]?moment(_0x54663f[_0x0d6b('0xe0')])[_0x0d6b('0xc5')](_0x0d6b('0xc6'))[_0x0d6b('0x9b')]():'','disposition':_0x54663f['disposition'],'messages':_(_0x54663f[_0x0d6b('0xd6')])[_0x0d6b('0x84')]({'secret':![]})[_0x0d6b('0x2c')](function(_0x570426){return{'date':moment(_0x570426[_0x0d6b('0xd7')])[_0x0d6b('0xc5')](_0x0d6b('0xc6'))[_0x0d6b('0x9b')](),'sender':_0x570426[_0x0d6b('0xd8')]===_0x0d6b('0xe1')?_0x570426[_0x0d6b('0x71')]?_0x570426['User']['fullname']:_0x0d6b('0xe2'):_0x570426[_0x0d6b('0x63')][_0x0d6b('0xd4')]+(_0x570426[_0x0d6b('0x63')][_0x0d6b('0xd5')]?'\x20'+_0x570426['Contact'][_0x0d6b('0xd5')]:''),'body':_0x570426[_0x0d6b('0x74')],'direction':_0x570426[_0x0d6b('0xd8')]===_0x0d6b('0xe1')?'A':'C','secret':_0x570426[_0x0d6b('0xd9')],'read':_0x570426['read']};})[_0x0d6b('0x60')]()};return ejs['renderFile'](path['join'](config[_0x0d6b('0xd1')],'server',_0x0d6b('0xe3'),_0x0d6b('0xe4')),{'interaction':_0x1326eb})[_0x0d6b('0x26')](function(_0x487ac3){var _0x46ccd1=path[_0x0d6b('0xcd')](_0x5ec66d,'transcript-'+_0x54663f['id']+'-'+_0x1c8c28+'.pdf');var _0x4d66ec={'path':_0x46ccd1,'channel':_0x0d6b('0xe5'),'interactionId':_0x54663f['id']};return pdf[_0x0d6b('0xe6')](_0x487ac3,_0x4d66ec);})[_0x0d6b('0x26')](function(){return new BPromise(function(_0x114567,_0x115487){zipdir(_0x5ec66d,{'saveTo':_0x44615c},function(_0x1d6863,_0x5aab57){if(_0x1d6863)return _0x115487(_0x1d6863);return _0x114567(_0x5aab57);});})['then'](function(){return new BPromise(function(_0x4ac69e,_0x3c135a){rimraf(_0x5ec66d,function(_0x234732){if(_0x234732)_0x3c135a(_0x234732);return _0x4ac69e();});});})[_0x0d6b('0x26')](function(){return _0x3e6f63[_0x0d6b('0xcc')](_0x44615c,_0x6752f5,function(_0x3e9dbb){if(_0x3e9dbb){console[_0x0d6b('0xe7')](_0x0d6b('0xe8'),_0x3e9dbb);}else{fs[_0x0d6b('0xe9')](_0x44615c);}});});});}else{return _0x3e6f63[_0x0d6b('0x1a')](0xc8);}})[_0x0d6b('0xb7')](handleError(_0x3e6f63,null));};
\ No newline at end of file
index 65dc98c..5b55e44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbbc=['map','findAll','length','emit','hasOwnProperty','hook','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','remove','then','setDataValue','Users'];(function(_0x2e6dbf,_0x57dd06){var _0x2680e5=function(_0x4018f4){while(--_0x4018f4){_0x2e6dbf['push'](_0x2e6dbf['shift']());}};_0x2680e5(++_0x57dd06);}(_0xbbbc,0xf6));var _0xcbbb=function(_0x34b207,_0x445c91){_0x34b207=_0x34b207-0x0;var _0x572ba6=_0xbbbc[_0x34b207];return _0x572ba6;};'use strict';var EventEmitter=require(_0xcbbb('0x0'));var SmsInteraction=require(_0xcbbb('0x1'))['db'][_0xcbbb('0x2')];var SmsMessage=require(_0xcbbb('0x1'))['db'][_0xcbbb('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xcbbb('0x4')](0x0);var events={'afterCreate':_0xcbbb('0x5'),'afterUpdate':'update','afterDestroy':_0xcbbb('0x6')};function emitEvent(_0x938376){return function(_0x45da04,_0x3ccbf6,_0x43ff05){_0x45da04['getUsers']({'attributes':['id'],'raw':!![]})[_0xcbbb('0x7')](function(_0x1796b4){_0x45da04[_0xcbbb('0x8')](_0xcbbb('0x9'),_0x1796b4[_0xcbbb('0xa')](function(_0x150355){return{'id':_0x150355['id']};}));return SmsMessage[_0xcbbb('0xb')]({'where':{'SmsInteractionId':_0x45da04['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x225156){_0x45da04['setDataValue']('unreadMessages',_0x225156[_0xcbbb('0xc')]);SmsInteractionEvents['emit'](_0x938376+':'+_0x45da04['id'],_0x45da04);SmsInteractionEvents[_0xcbbb('0xd')](_0x938376,_0x45da04);_0x43ff05(null);})['catch'](_0x43ff05(null));};}for(var e in events){if(events[_0xcbbb('0xe')](e)){var event=events[e];SmsInteraction[_0xcbbb('0xf')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0x4cf8=['unreadMessages','length','emit','catch','exports','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','findAll'];(function(_0x23b7a6,_0x45a28e){var _0x285c87=function(_0x30ebeb){while(--_0x30ebeb){_0x23b7a6['push'](_0x23b7a6['shift']());}};_0x285c87(++_0x45a28e);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x53a1be,_0x42dff2){_0x53a1be=_0x53a1be-0x0;var _0x38ae84=_0x4cf8[_0x53a1be];return _0x38ae84;};'use strict';var EventEmitter=require(_0x84cf('0x0'));var SmsInteraction=require(_0x84cf('0x1'))['db'][_0x84cf('0x2')];var SmsMessage=require(_0x84cf('0x1'))['db'][_0x84cf('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x84cf('0x4')](0x0);var events={'afterCreate':_0x84cf('0x5'),'afterUpdate':_0x84cf('0x6'),'afterDestroy':_0x84cf('0x7')};function emitEvent(_0x2d38c0){return function(_0x5844d7,_0x2c613d,_0x50ade2){_0x5844d7['getUsers']({'attributes':['id'],'raw':!![]})[_0x84cf('0x8')](function(_0x56c5cc){_0x5844d7[_0x84cf('0x9')](_0x84cf('0xa'),_0x56c5cc['map'](function(_0x2e0b79){return{'id':_0x2e0b79['id']};}));return SmsMessage[_0x84cf('0xb')]({'where':{'SmsInteractionId':_0x5844d7['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0xfb5398){_0x5844d7[_0x84cf('0x9')](_0x84cf('0xc'),_0xfb5398[_0x84cf('0xd')]);SmsInteractionEvents['emit'](_0x2d38c0+':'+_0x5844d7['id'],_0x5844d7);SmsInteractionEvents[_0x84cf('0xe')](_0x2d38c0,_0x5844d7);_0x50ade2(null);})[_0x84cf('0xf')](_0x50ade2(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x84cf('0x10')]=SmsInteractionEvents;
\ No newline at end of file
index 721bfdf..8ca5d56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39e0=['lodash','../../config/logger','moment','bluebird','path','../../config/environment','./smsInteraction.attributes','exports','SmsInteraction','sms_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x549fc3,_0x2b1dfc){var _0x5d3ce2=function(_0x23c153){while(--_0x23c153){_0x549fc3['push'](_0x549fc3['shift']());}};_0x5d3ce2(++_0x2b1dfc);}(_0x39e0,0x1ef));var _0x039e=function(_0x5c7d6c,_0x52c75e){_0x5c7d6c=_0x5c7d6c-0x0;var _0x32e81f=_0x39e0[_0x5c7d6c];return _0x32e81f;};'use strict';var _=require(_0x039e('0x0'));var util=require('util');var logger=require(_0x039e('0x1'))('api');var moment=require(_0x039e('0x2'));var BPromise=require(_0x039e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x039e('0x4'));var rimraf=require('rimraf');var config=require(_0x039e('0x5'));var attributes=require(_0x039e('0x6'));module[_0x039e('0x7')]=function(_0x159c3d,_0x1564a5){return _0x159c3d['define'](_0x039e('0x8'),attributes,{'tableName':_0x039e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5e18e8,_0x315ce6,_0x195683){if(_0x5e18e8[_0x039e('0xa')](_0x039e('0xb'))){_0x5e18e8[_0x039e('0xc')]=moment()[_0x039e('0xd')](_0x039e('0xe'));}_0x195683(null,_0x5e18e8);}}});};
\ No newline at end of file
+var _0xe0b3=['../../config/environment','./smsInteraction.attributes','exports','SmsInteraction','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','bluebird','request-promise','path'];(function(_0x12aba8,_0x40a036){var _0x2aac66=function(_0x3e56b7){while(--_0x3e56b7){_0x12aba8['push'](_0x12aba8['shift']());}};_0x2aac66(++_0x40a036);}(_0xe0b3,0x1e9));var _0x3e0b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xe0b3[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0x3e0b('0x0'));var logger=require(_0x3e0b('0x1'))('api');var moment=require('moment');var BPromise=require(_0x3e0b('0x2'));var rp=require(_0x3e0b('0x3'));var fs=require('fs');var path=require(_0x3e0b('0x4'));var rimraf=require('rimraf');var config=require(_0x3e0b('0x5'));var attributes=require(_0x3e0b('0x6'));module[_0x3e0b('0x7')]=function(_0x4f466f,_0x3b686f){return _0x4f466f['define'](_0x3e0b('0x8'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x59c941,_0x4ff3c8,_0x2253bd){if(_0x59c941[_0x3e0b('0x9')](_0x3e0b('0xa'))){_0x59c941['closedAt']=moment()[_0x3e0b('0xb')](_0x3e0b('0xc'));}_0x2253bd(null,_0x59c941);}}});};
\ No newline at end of file
index 52b2b6d..7870e2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x723c=['SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','SmsInteraction,\x20%s,\x20%s','message','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','attributes','limit','AddTagsToSmsInteraction','find','ids','omit','spread','AddTags','debug','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','./smsInteraction.socket','register','request','then','info','request\x20sent'];(function(_0x2a0fc4,_0x2eaf74){var _0x531d00=function(_0xa4388f){while(--_0xa4388f){_0x2a0fc4['push'](_0x2a0fc4['shift']());}};_0x531d00(++_0x2eaf74);}(_0x723c,0x106));var _0xc723=function(_0x3ce5e8,_0x101384){_0x3ce5e8=_0x3ce5e8-0x0;var _0x486bb1=_0x723c[_0x3ce5e8];return _0x486bb1;};'use strict';var _=require('lodash');var util=require(_0xc723('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc723('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc723('0x2'))['db'];var utils=require(_0xc723('0x3'));var logger=require(_0xc723('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc723('0x5'));var client=jayson[_0xc723('0x6')][_0xc723('0x7')]({'port':0x232a});config['redis']=_[_0xc723('0x8')](config['redis'],{'host':_0xc723('0x9'),'port':0x18eb});var socket=require(_0xc723('0xa'))(new Redis(config[_0xc723('0xb')]));require(_0xc723('0xc'))[_0xc723('0xd')](socket);function respondWithRpcPromise(_0x15eb6e,_0x563adc,_0x55ab51){return new BPromise(function(_0x17a972,_0xe9d62f){return client[_0xc723('0xe')](_0x15eb6e,_0x55ab51)[_0xc723('0xf')](function(_0x39d996){logger[_0xc723('0x10')]('SmsInteraction,\x20%s,\x20%s',_0x563adc,_0xc723('0x11'));logger['debug'](_0xc723('0x12'),_0x563adc,_0xc723('0x11'),JSON[_0xc723('0x13')](_0x39d996));if(_0x39d996[_0xc723('0x14')]){if(_0x39d996[_0xc723('0x14')]['code']===0x1f4){logger[_0xc723('0x14')](_0xc723('0x15'),_0x563adc,_0x39d996[_0xc723('0x14')][_0xc723('0x16')]);return _0xe9d62f(_0x39d996[_0xc723('0x14')][_0xc723('0x16')]);}logger[_0xc723('0x14')](_0xc723('0x15'),_0x563adc,_0x39d996[_0xc723('0x14')][_0xc723('0x16')]);return _0x17a972(_0x39d996[_0xc723('0x14')][_0xc723('0x16')]);}else{logger[_0xc723('0x10')](_0xc723('0x15'),_0x563adc,_0xc723('0x11'));_0x17a972(_0x39d996['result'][_0xc723('0x16')]);}})[_0xc723('0x17')](function(_0x509e57){logger['error'](_0xc723('0x15'),_0x563adc,_0x509e57);_0xe9d62f(_0x509e57);});});}exports[_0xc723('0x18')]=function(_0x28f566){var _0x5eaf4b=this;return new Promise(function(_0x2dbd0c,_0x505a6a){return db[_0xc723('0x19')][_0xc723('0x1a')](_0x28f566[_0xc723('0x1b')],{'raw':_0x28f566[_0xc723('0x1c')]?_0x28f566[_0xc723('0x1c')][_0xc723('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x28f566[_0xc723('0x1c')]?_0x28f566['options'][_0xc723('0x1e')]||null:null,'attributes':_0x28f566[_0xc723('0x1c')]?_0x28f566['options'][_0xc723('0x1f')]||null:null,'limit':_0x28f566[_0xc723('0x1c')]?_0x28f566['options'][_0xc723('0x20')]||null:null})[_0xc723('0xf')](function(_0x3ec13c){logger[_0xc723('0x10')](_0xc723('0x18'),_0x28f566);logger['debug'](_0xc723('0x18'),_0x28f566,JSON['stringify'](_0x3ec13c));_0x2dbd0c(_0x3ec13c);})[_0xc723('0x17')](function(_0x3a5f9a){logger['error']('UpdateSmsInteraction',_0x3a5f9a[_0xc723('0x16')],_0x28f566);_0x505a6a(_0x5eaf4b[_0xc723('0x14')](0x1f4,_0x3a5f9a[_0xc723('0x16')]));});});};exports[_0xc723('0x21')]=function(_0x382ec2){return new Promise(function(_0x2aba2b,_0x44eefd){return db[_0xc723('0x19')][_0xc723('0x22')]({'where':_0x382ec2[_0xc723('0x1c')]?_0x382ec2[_0xc723('0x1c')][_0xc723('0x1e')]||null:null})['then'](function(_0x4476d4){if(_0x4476d4){return _0x4476d4['addTags'](_0x382ec2[_0xc723('0x1b')][_0xc723('0x23')],_[_0xc723('0x24')](_0x382ec2[_0xc723('0x1b')],[_0xc723('0x23'),'id'])||{});}})[_0xc723('0x25')](function(_0x26fcf3){logger[_0xc723('0x10')](_0xc723('0x26'),_0x382ec2);logger[_0xc723('0x27')](_0xc723('0x26'),_0x382ec2,JSON[_0xc723('0x13')](_0x26fcf3));_0x2aba2b(_0x26fcf3);})[_0xc723('0x17')](function(_0x52b2d3){logger[_0xc723('0x14')](_0xc723('0x26'),_0x52b2d3['message'],_0x382ec2);_0x44eefd(_this['error'](0x1f4,_0x52b2d3[_0xc723('0x16')]));});});};
\ No newline at end of file
+var _0x8c0f=['ids','omit','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SmsInteraction,\x20%s,\x20%s','request\x20sent','result','catch','UpdateSmsInteraction','SmsInteraction','body','options','raw','where','attributes','limit','addTags'];(function(_0x2fef62,_0x37e6bc){var _0x1883d8=function(_0x4a3fdd){while(--_0x4a3fdd){_0x2fef62['push'](_0x2fef62['shift']());}};_0x1883d8(++_0x37e6bc);}(_0x8c0f,0x1a8));var _0xf8c0=function(_0x2ae929,_0x4231c1){_0x2ae929=_0x2ae929-0x0;var _0x2d4ef2=_0x8c0f[_0x2ae929];return _0x2d4ef2;};'use strict';var _=require(_0xf8c0('0x0'));var util=require(_0xf8c0('0x1'));var moment=require('moment');var BPromise=require(_0xf8c0('0x2'));var rs=require(_0xf8c0('0x3'));var fs=require('fs');var Redis=require(_0xf8c0('0x4'));var db=require(_0xf8c0('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf8c0('0x6'))('rpc');var config=require(_0xf8c0('0x7'));var jayson=require(_0xf8c0('0x8'));var client=jayson[_0xf8c0('0x9')][_0xf8c0('0xa')]({'port':0x232a});config[_0xf8c0('0xb')]=_['defaults'](config['redis'],{'host':_0xf8c0('0xc'),'port':0x18eb});var socket=require(_0xf8c0('0xd'))(new Redis(config[_0xf8c0('0xb')]));require(_0xf8c0('0xe'))[_0xf8c0('0xf')](socket);function respondWithRpcPromise(_0x3a3638,_0x35e127,_0x2f88d9){return new BPromise(function(_0x3f7a62,_0x360144){return client[_0xf8c0('0x10')](_0x3a3638,_0x2f88d9)[_0xf8c0('0x11')](function(_0x2f885e){logger[_0xf8c0('0x12')]('SmsInteraction,\x20%s,\x20%s',_0x35e127,'request\x20sent');logger[_0xf8c0('0x13')](_0xf8c0('0x14'),_0x35e127,'request\x20sent',JSON[_0xf8c0('0x15')](_0x2f885e));if(_0x2f885e[_0xf8c0('0x16')]){if(_0x2f885e[_0xf8c0('0x16')][_0xf8c0('0x17')]===0x1f4){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x35e127,_0x2f885e[_0xf8c0('0x16')][_0xf8c0('0x18')]);return _0x360144(_0x2f885e[_0xf8c0('0x16')][_0xf8c0('0x18')]);}logger[_0xf8c0('0x16')]('SmsInteraction,\x20%s,\x20%s',_0x35e127,_0x2f885e[_0xf8c0('0x16')][_0xf8c0('0x18')]);return _0x3f7a62(_0x2f885e['error'][_0xf8c0('0x18')]);}else{logger['info'](_0xf8c0('0x19'),_0x35e127,_0xf8c0('0x1a'));_0x3f7a62(_0x2f885e[_0xf8c0('0x1b')]['message']);}})[_0xf8c0('0x1c')](function(_0x4f4eb7){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x35e127,_0x4f4eb7);_0x360144(_0x4f4eb7);});});}exports[_0xf8c0('0x1d')]=function(_0x2b81d8){var _0x2f068e=this;return new Promise(function(_0x412d29,_0x26d3c9){return db[_0xf8c0('0x1e')]['update'](_0x2b81d8[_0xf8c0('0x1f')],{'raw':_0x2b81d8[_0xf8c0('0x20')]?_0x2b81d8[_0xf8c0('0x20')][_0xf8c0('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b81d8['options']?_0x2b81d8['options'][_0xf8c0('0x22')]||null:null,'attributes':_0x2b81d8[_0xf8c0('0x20')]?_0x2b81d8[_0xf8c0('0x20')][_0xf8c0('0x23')]||null:null,'limit':_0x2b81d8[_0xf8c0('0x20')]?_0x2b81d8[_0xf8c0('0x20')][_0xf8c0('0x24')]||null:null})[_0xf8c0('0x11')](function(_0x18898f){logger[_0xf8c0('0x12')]('UpdateSmsInteraction',_0x2b81d8);logger['debug'](_0xf8c0('0x1d'),_0x2b81d8,JSON[_0xf8c0('0x15')](_0x18898f));_0x412d29(_0x18898f);})[_0xf8c0('0x1c')](function(_0x2f9e58){logger[_0xf8c0('0x16')]('UpdateSmsInteraction',_0x2f9e58['message'],_0x2b81d8);_0x26d3c9(_0x2f068e[_0xf8c0('0x16')](0x1f4,_0x2f9e58[_0xf8c0('0x18')]));});});};exports['AddTagsToSmsInteraction']=function(_0xd7fe4){return new Promise(function(_0x24c05d,_0x296e84){return db[_0xf8c0('0x1e')]['find']({'where':_0xd7fe4[_0xf8c0('0x20')]?_0xd7fe4['options']['where']||null:null})['then'](function(_0x215e43){if(_0x215e43){return _0x215e43[_0xf8c0('0x25')](_0xd7fe4[_0xf8c0('0x1f')][_0xf8c0('0x26')],_[_0xf8c0('0x27')](_0xd7fe4[_0xf8c0('0x1f')],[_0xf8c0('0x26'),'id'])||{});}})[_0xf8c0('0x28')](function(_0x9b1eb8){logger[_0xf8c0('0x12')]('AddTags',_0xd7fe4);logger[_0xf8c0('0x13')]('AddTags',_0xd7fe4,JSON[_0xf8c0('0x15')](_0x9b1eb8));_0x24c05d(_0x9b1eb8);})['catch'](function(_0x514658){logger['error'](_0xf8c0('0x29'),_0x514658[_0xf8c0('0x18')],_0xd7fe4);_0x296e84(_this[_0xf8c0('0x16')](0x1f4,_0x514658[_0xf8c0('0x18')]));});});};
\ No newline at end of file
index bc72e4d..286a88f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f5c=['removeListener','smsInteraction:','./smsInteraction.events','save','remove','update','emit'];(function(_0xa0af9e,_0x17b96b){var _0x213b90=function(_0x5e84f6){while(--_0x5e84f6){_0xa0af9e['push'](_0xa0af9e['shift']());}};_0x213b90(++_0x17b96b);}(_0x5f5c,0x144));var _0xc5f5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x5f5c[_0x14add3];return _0x4a174f;};'use strict';var SmsInteractionEvents=require(_0xc5f5('0x0'));var events=[_0xc5f5('0x1'),_0xc5f5('0x2'),_0xc5f5('0x3')];function createListener(_0x15c10f,_0x4833ae){return function(_0x1524ff){_0x4833ae[_0xc5f5('0x4')](_0x15c10f,_0x1524ff);};}function removeListener(_0x593133,_0x5514e2){return function(){SmsInteractionEvents[_0xc5f5('0x5')](_0x593133,_0x5514e2);};}exports['register']=function(_0x55ac0d){for(var _0x163c89=0x0,_0x2affdf=events['length'];_0x163c89<_0x2affdf;_0x163c89++){var _0x42f267=events[_0x163c89];var _0x37b610=createListener(_0xc5f5('0x6')+_0x42f267,_0x55ac0d);SmsInteractionEvents['on'](_0x42f267,_0x37b610);}};
\ No newline at end of file
+var _0xe39b=['length','smsInteraction:','save','remove','update','emit','removeListener'];(function(_0x45fa50,_0x2a64fb){var _0x12e28b=function(_0x634814){while(--_0x634814){_0x45fa50['push'](_0x45fa50['shift']());}};_0x12e28b(++_0x2a64fb);}(_0xe39b,0x19f));var _0xbe39=function(_0xc3413a,_0x3b9076){_0xc3413a=_0xc3413a-0x0;var _0x167c5f=_0xe39b[_0xc3413a];return _0x167c5f;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0xbe39('0x0'),_0xbe39('0x1'),_0xbe39('0x2')];function createListener(_0x5593da,_0x38608c){return function(_0x2025be){_0x38608c[_0xbe39('0x3')](_0x5593da,_0x2025be);};}function removeListener(_0x260c5c,_0x456d4f){return function(){SmsInteractionEvents[_0xbe39('0x4')](_0x260c5c,_0x456d4f);};}exports['register']=function(_0x416685){for(var _0x130973=0x0,_0x4eabf6=events[_0xbe39('0x5')];_0x130973<_0x4eabf6;_0x130973++){var _0x55464e=events[_0x130973];var _0x1b1787=createListener(_0xbe39('0x6')+_0x55464e,_0x416685);SmsInteractionEvents['on'](_0x55464e,_0x1b1787);}};
\ No newline at end of file
index 349b6a0..bb7ff36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdaf2=['describe','/:id','show','post','smsmessage:create','create','/:id/status','status','update','accept','/:id/reject','reject','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./smsMessage.controller','get','index','/describe','isAuthenticated'];(function(_0x30330a,_0x1b089d){var _0x5db62c=function(_0x3d8966){while(--_0x3d8966){_0x30330a['push'](_0x30330a['shift']());}};_0x5db62c(++_0x1b089d);}(_0xdaf2,0x1cf));var _0x2daf=function(_0x533e4e,_0x4eba54){_0x533e4e=_0x533e4e-0x0;var _0x1f14bb=_0xdaf2[_0x533e4e];return _0x1f14bb;};'use strict';var multer=require('multer');var util=require(_0x2daf('0x0'));var path=require(_0x2daf('0x1'));var timeout=require('connect-timeout');var express=require(_0x2daf('0x2'));var router=express[_0x2daf('0x3')]();var fs_extra=require(_0x2daf('0x4'));var auth=require(_0x2daf('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2daf('0x6'));var controller=require(_0x2daf('0x7'));router[_0x2daf('0x8')]('/',auth['isAuthenticated'](),controller[_0x2daf('0x9')]);router['get'](_0x2daf('0xa'),auth[_0x2daf('0xb')](),controller[_0x2daf('0xc')]);router[_0x2daf('0x8')](_0x2daf('0xd'),auth[_0x2daf('0xb')](),controller[_0x2daf('0xe')]);router[_0x2daf('0xf')]('/',auth[_0x2daf('0xb')](),interaction['tracked']('sms',_0x2daf('0x10')),controller[_0x2daf('0x11')]);router[_0x2daf('0xf')](_0x2daf('0x12'),controller[_0x2daf('0x13')]);router['put'](_0x2daf('0xd'),auth[_0x2daf('0xb')](),controller[_0x2daf('0x14')]);router['put']('/:id/accept',auth[_0x2daf('0xb')](),controller[_0x2daf('0x15')]);router['put'](_0x2daf('0x16'),auth['isAuthenticated'](),controller[_0x2daf('0x17')]);router['delete'](_0x2daf('0xd'),auth[_0x2daf('0xb')](),controller['destroy']);module[_0x2daf('0x18')]=router;
\ No newline at end of file
+var _0x142c=['put','update','/:id/accept','accept','/:id/reject','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','describe','/:id','show','tracked','sms','create','post','/:id/status','status'];(function(_0x32e9dc,_0x2001f7){var _0x268904=function(_0xba8bc4){while(--_0xba8bc4){_0x32e9dc['push'](_0x32e9dc['shift']());}};_0x268904(++_0x2001f7);}(_0x142c,0x163));var _0xc142=function(_0x20cc2a,_0x26da27){_0x20cc2a=_0x20cc2a-0x0;var _0x433e78=_0x142c[_0x20cc2a];return _0x433e78;};'use strict';var multer=require(_0xc142('0x0'));var util=require(_0xc142('0x1'));var path=require(_0xc142('0x2'));var timeout=require(_0xc142('0x3'));var express=require(_0xc142('0x4'));var router=express[_0xc142('0x5')]();var fs_extra=require(_0xc142('0x6'));var auth=require(_0xc142('0x7'));var interaction=require(_0xc142('0x8'));var config=require('../../config/environment');var controller=require('./smsMessage.controller');router[_0xc142('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xc142('0x9')]('/describe',auth[_0xc142('0xa')](),controller[_0xc142('0xb')]);router['get'](_0xc142('0xc'),auth[_0xc142('0xa')](),controller[_0xc142('0xd')]);router['post']('/',auth[_0xc142('0xa')](),interaction[_0xc142('0xe')](_0xc142('0xf'),'smsmessage:create'),controller[_0xc142('0x10')]);router[_0xc142('0x11')](_0xc142('0x12'),controller[_0xc142('0x13')]);router[_0xc142('0x14')](_0xc142('0xc'),auth[_0xc142('0xa')](),controller[_0xc142('0x15')]);router['put'](_0xc142('0x16'),auth[_0xc142('0xa')](),controller[_0xc142('0x17')]);router['put'](_0xc142('0x18'),auth[_0xc142('0xa')](),controller['reject']);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 9d232eb..4c042fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54bb=['sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','STRING'];(function(_0x1649fe,_0x5916da){var _0x473a67=function(_0x163cae){while(--_0x163cae){_0x1649fe['push'](_0x1649fe['shift']());}};_0x473a67(++_0x5916da);}(_0x54bb,0xa0));var _0xb54b=function(_0x4ad922,_0x1538f6){_0x4ad922=_0x4ad922-0x0;var _0x3c0eef=_0x54bb[_0x4ad922];return _0x3c0eef;};'use strict';var Sequelize=require(_0xb54b('0x0'));module[_0xb54b('0x1')]={'body':{'type':Sequelize[_0xb54b('0x2')](_0xb54b('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xb54b('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xb54b('0x5')]('in',_0xb54b('0x6')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xb54b('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xb54b('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xdcdc=['BOOLEAN','ENUM','out','STRING','DATE','sequelize','exports','TEXT','medium'];(function(_0x592a80,_0x537c3e){var _0x4f56fe=function(_0x4de628){while(--_0x4de628){_0x592a80['push'](_0x592a80['shift']());}};_0x4f56fe(++_0x537c3e);}(_0xdcdc,0x8c));var _0xcdcd=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xdcdc[_0x432682];return _0x463d05;};'use strict';var Sequelize=require(_0xcdcd('0x0'));module[_0xcdcd('0x1')]={'body':{'type':Sequelize[_0xcdcd('0x2')](_0xcdcd('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xcdcd('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xcdcd('0x5')]('in',_0xcdcd('0x6')),'defaultValue':_0xcdcd('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0xcdcd('0x7')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0xcdcd('0x8')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0xcdcd('0x7')]},'providerResponse':{'type':Sequelize[_0xcdcd('0x2')]}};
\ No newline at end of file
index 3fafeef..53f818d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9536=['fieldName','model','query','keys','filters','intersection','attributes','fields','length','order','where','pick','filter','merge','type','VIRTUAL','SmsMessage','findAll','rows','show','includeAll','include','find','create','update','body','describe','sms-interactions','accept','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','SmsInteractionId','isNil','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','email','internal','interface','SIP/%s','channel','event','EventManager','acceptmessage','params','SmsInteraction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','motionChannel','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','MessageUUID','indexOf','delivered','infobip','results','groupName','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','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','redis','localhost','socket.io-emitter','./smsMessage.socket','register','jayson/promise','client','http','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','reject','save','destroy','stack','name','send','index','map','rawAttributes'];(function(_0x58c24a,_0x159665){var _0x50d1bc=function(_0x4ad730){while(--_0x4ad730){_0x58c24a['push'](_0x58c24a['shift']());}};_0x50d1bc(++_0x159665);}(_0x9536,0x179));var _0x6953=function(_0x4b4277,_0x22676f){_0x4b4277=_0x4b4277-0x0;var _0x1ff405=_0x9536[_0x4b4277];return _0x1ff405;};'use strict';var emlformat=require(_0x6953('0x0'));var rimraf=require(_0x6953('0x1'));var zipdir=require(_0x6953('0x2'));var jsonpatch=require(_0x6953('0x3'));var rp=require('request-promise');var moment=require(_0x6953('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6953('0x5'));var util=require(_0x6953('0x6'));var path=require(_0x6953('0x7'));var sox=require(_0x6953('0x8'));var csv=require(_0x6953('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6953('0xa'));var _=require(_0x6953('0xb'));var squel=require(_0x6953('0xc'));var crypto=require(_0x6953('0xd'));var jsforce=require(_0x6953('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6953('0x9'));var querystring=require(_0x6953('0xf'));var Papa=require(_0x6953('0x10'));var Redis=require('ioredis');var authService=require(_0x6953('0x11'));var qs=require(_0x6953('0x12'));var as=require(_0x6953('0x13'));var hardwareService=require(_0x6953('0x14'));var logger=require(_0x6953('0x15'))(_0x6953('0x16'));var utils=require(_0x6953('0x17'));var config=require(_0x6953('0x18'));var licenseUtil=require(_0x6953('0x19'));var db=require('../../mysqldb')['db'];config[_0x6953('0x1a')]=_['defaults'](config[_0x6953('0x1a')],{'host':_0x6953('0x1b'),'port':0x18eb});var socket=require(_0x6953('0x1c'))(new Redis(config[_0x6953('0x1a')]));require(_0x6953('0x1d'))[_0x6953('0x1e')](socket);var jayson=require(_0x6953('0x1f'));var client=jayson[_0x6953('0x20')][_0x6953('0x21')]({'port':0x232c});var client9002=jayson[_0x6953('0x20')][_0x6953('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x548473,_0x5f49db,_0x399b9b,_0x44e8a2){return new BPromise(function(_0x16b79b,_0x16251d){var _0x510d46=_0x44e8a2||client;return _0x510d46[_0x6953('0x22')](_0x548473,_0x399b9b)[_0x6953('0x23')](function(_0x4b43ae){logger[_0x6953('0x24')](_0x6953('0x25'),_0x5f49db,_0x6953('0x26'));logger[_0x6953('0x27')](_0x6953('0x28'),_0x5f49db,'request\x20sent',JSON[_0x6953('0x29')](_0x4b43ae));if(_0x4b43ae[_0x6953('0x2a')]){if(_0x4b43ae[_0x6953('0x2a')][_0x6953('0x2b')]===0x1f4){logger[_0x6953('0x2a')]('SmsMessage,\x20%s,\x20%s',_0x5f49db,_0x4b43ae[_0x6953('0x2a')][_0x6953('0x2c')]);return _0x16251d(_0x4b43ae['error'][_0x6953('0x2c')]);}logger[_0x6953('0x2a')](_0x6953('0x25'),_0x5f49db,_0x4b43ae[_0x6953('0x2a')]['message']);return _0x16b79b(_0x4b43ae[_0x6953('0x2a')][_0x6953('0x2c')]);}else{logger[_0x6953('0x24')]('SmsMessage,\x20%s,\x20%s',_0x5f49db,'request\x20sent');_0x16b79b(_0x4b43ae['result'][_0x6953('0x2c')]);}})[_0x6953('0x2d')](function(_0x550be4){logger[_0x6953('0x2a')]('SmsMessage,\x20%s,\x20%s',_0x5f49db,_0x550be4);_0x16251d(_0x550be4);});});}function respondWithStatusCode(_0x328f67,_0x2bf39b){_0x2bf39b=_0x2bf39b||0xcc;return function(_0xcdbce8){if(_0xcdbce8){return _0x328f67[_0x6953('0x2e')](_0x2bf39b);}return _0x328f67[_0x6953('0x2f')](_0x2bf39b)[_0x6953('0x30')]();};}function respondWithResult(_0x53d3dc,_0x3dd890){_0x3dd890=_0x3dd890||0xc8;return function(_0x3c1075){if(_0x3c1075){return _0x53d3dc['status'](_0x3dd890)[_0x6953('0x31')](_0x3c1075);}};}function respondWithFilteredResult(_0x4af39d,_0x173b3c){return function(_0x3b1175){if(_0x3b1175){var _0x426c7c=typeof _0x173b3c['offset']===_0x6953('0x32')&&typeof _0x173b3c[_0x6953('0x33')]===_0x6953('0x32');var _0x47ed2f=_0x3b1175[_0x6953('0x34')];var _0x132a71=_0x426c7c?0x0:_0x173b3c['offset'];var _0x4d856d=_0x426c7c?_0x3b1175[_0x6953('0x34')]:_0x173b3c[_0x6953('0x35')]+_0x173b3c[_0x6953('0x33')];var _0x2312e7;if(_0x4d856d>=_0x47ed2f){_0x4d856d=_0x47ed2f;_0x2312e7=0xc8;}else{_0x2312e7=0xce;}_0x4af39d[_0x6953('0x2f')](_0x2312e7);return _0x4af39d['set'](_0x6953('0x36'),_0x132a71+'-'+_0x4d856d+'/'+_0x47ed2f)['json'](_0x3b1175);}return null;};}function patchUpdates(_0x2d5e76){return function(_0x2e85c7){try{jsonpatch['apply'](_0x2e85c7,_0x2d5e76,!![]);}catch(_0x4a4d41){return BPromise[_0x6953('0x37')](_0x4a4d41);}return _0x2e85c7[_0x6953('0x38')]();};}function saveUpdates(_0x34d10b,_0x4ffa69){return function(_0x28cb92){if(_0x28cb92){return _0x28cb92['update'](_0x34d10b)['then'](function(_0x5eda70){return _0x5eda70;});}return null;};}function removeEntity(_0x5c4a8a,_0x1ef067){return function(_0x6c7862){if(_0x6c7862){return _0x6c7862[_0x6953('0x39')]()[_0x6953('0x23')](function(){_0x5c4a8a[_0x6953('0x2f')](0xcc)[_0x6953('0x30')]();});}};}function handleEntityNotFound(_0x4f6e06,_0x2b76a5){return function(_0x5a8197){if(!_0x5a8197){_0x4f6e06[_0x6953('0x2e')](0x194);}return _0x5a8197;};}function handleError(_0x5c9a4e,_0xc63da7){_0xc63da7=_0xc63da7||0x1f4;return function(_0x383e31){logger[_0x6953('0x2a')](_0x383e31[_0x6953('0x3a')]);if(_0x383e31['name']){delete _0x383e31[_0x6953('0x3b')];}_0x5c9a4e[_0x6953('0x2f')](_0xc63da7)[_0x6953('0x3c')](_0x383e31);};}exports[_0x6953('0x3d')]=function(_0x40b6ea,_0x475ea8){var _0x37b2b3={},_0x81428b={},_0xdf1944={'count':0x0,'rows':[]};var _0x44f206=_[_0x6953('0x3e')](db['SmsMessage'][_0x6953('0x3f')],function(_0x3c03ab){return{'name':_0x3c03ab[_0x6953('0x40')],'type':_0x3c03ab['type']['key']};});_0x81428b[_0x6953('0x41')]=_['map'](_0x44f206,'name');_0x81428b[_0x6953('0x42')]=_[_0x6953('0x43')](_0x40b6ea['query']);_0x81428b[_0x6953('0x44')]=_[_0x6953('0x45')](_0x81428b[_0x6953('0x41')],_0x81428b[_0x6953('0x42')]);_0x37b2b3[_0x6953('0x46')]=_[_0x6953('0x45')](_0x81428b['model'],qs[_0x6953('0x47')](_0x40b6ea[_0x6953('0x42')][_0x6953('0x47')]));_0x37b2b3[_0x6953('0x46')]=_0x37b2b3[_0x6953('0x46')][_0x6953('0x48')]?_0x37b2b3['attributes']:_0x81428b['model'];if(!_0x40b6ea[_0x6953('0x42')]['hasOwnProperty']('nolimit')){_0x37b2b3[_0x6953('0x33')]=qs[_0x6953('0x33')](_0x40b6ea[_0x6953('0x42')][_0x6953('0x33')]);_0x37b2b3[_0x6953('0x35')]=qs['offset'](_0x40b6ea['query'][_0x6953('0x35')]);}_0x37b2b3[_0x6953('0x49')]=qs['sort'](_0x40b6ea[_0x6953('0x42')]['sort']);_0x37b2b3[_0x6953('0x4a')]=qs[_0x6953('0x44')](_[_0x6953('0x4b')](_0x40b6ea[_0x6953('0x42')],_0x81428b['filters']),_0x44f206);if(_0x40b6ea[_0x6953('0x42')][_0x6953('0x4c')]){_0x37b2b3['where']=_[_0x6953('0x4d')](_0x37b2b3[_0x6953('0x4a')],{'$or':_[_0x6953('0x3e')](_0x44f206,function(_0x228139){if(_0x228139[_0x6953('0x4e')]!==_0x6953('0x4f')){var _0x13d1a6={};_0x13d1a6[_0x228139[_0x6953('0x3b')]]={'$like':'%'+_0x40b6ea[_0x6953('0x42')][_0x6953('0x4c')]+'%'};return _0x13d1a6;}})});}_0x37b2b3=_[_0x6953('0x4d')]({},_0x37b2b3,_0x40b6ea['options']);var _0x332223={'where':_0x37b2b3['where']};return db[_0x6953('0x50')][_0x6953('0x34')](_0x332223)[_0x6953('0x23')](function(_0x4c4954){_0xdf1944[_0x6953('0x34')]=_0x4c4954;if(_0x40b6ea[_0x6953('0x42')]['includeAll']){_0x37b2b3['include']=[{'all':!![]}];}return db[_0x6953('0x50')][_0x6953('0x51')](_0x37b2b3);})[_0x6953('0x23')](function(_0x36d75a){_0xdf1944[_0x6953('0x52')]=_0x36d75a;return _0xdf1944;})[_0x6953('0x23')](respondWithFilteredResult(_0x475ea8,_0x37b2b3))[_0x6953('0x2d')](handleError(_0x475ea8,null));};exports[_0x6953('0x53')]=function(_0x2baf90,_0x18e8ef){var _0x1de9f8={'raw':!![],'where':{'id':_0x2baf90['params']['id']}},_0x493a91={};_0x493a91[_0x6953('0x41')]=_[_0x6953('0x43')](db[_0x6953('0x50')][_0x6953('0x3f')]);_0x493a91[_0x6953('0x42')]=_[_0x6953('0x43')](_0x2baf90[_0x6953('0x42')]);_0x493a91[_0x6953('0x44')]=_[_0x6953('0x45')](_0x493a91['model'],_0x493a91['query']);_0x1de9f8['attributes']=_['intersection'](_0x493a91[_0x6953('0x41')],qs[_0x6953('0x47')](_0x2baf90[_0x6953('0x42')]['fields']));_0x1de9f8['attributes']=_0x1de9f8[_0x6953('0x46')][_0x6953('0x48')]?_0x1de9f8[_0x6953('0x46')]:_0x493a91['model'];if(_0x2baf90['query'][_0x6953('0x54')]){_0x1de9f8[_0x6953('0x55')]=[{'all':!![]}];}_0x1de9f8=_['merge']({},_0x1de9f8,_0x2baf90['options']);return db[_0x6953('0x50')][_0x6953('0x56')](_0x1de9f8)[_0x6953('0x23')](handleEntityNotFound(_0x18e8ef,null))[_0x6953('0x23')](respondWithResult(_0x18e8ef,null))[_0x6953('0x2d')](handleError(_0x18e8ef,null));};exports['create']=function(_0x76c0f4,_0x15ff2d){return db['SmsMessage'][_0x6953('0x57')](_0x76c0f4['body'],{})[_0x6953('0x23')](respondWithResult(_0x15ff2d,0xc9))[_0x6953('0x2d')](handleError(_0x15ff2d,null));};exports[_0x6953('0x58')]=function(_0xceaa28,_0x4f24bf){if(_0xceaa28[_0x6953('0x59')]['id']){delete _0xceaa28[_0x6953('0x59')]['id'];}return db[_0x6953('0x50')]['find']({'where':{'id':_0xceaa28['params']['id']}})[_0x6953('0x23')](handleEntityNotFound(_0x4f24bf,null))[_0x6953('0x23')](saveUpdates(_0xceaa28[_0x6953('0x59')],null))['then'](respondWithResult(_0x4f24bf,null))['catch'](handleError(_0x4f24bf,null));};exports[_0x6953('0x39')]=function(_0x2b90f7,_0x4c0f1c){return db[_0x6953('0x50')][_0x6953('0x56')]({'where':{'id':_0x2b90f7['params']['id']}})[_0x6953('0x23')](handleEntityNotFound(_0x4c0f1c,null))[_0x6953('0x23')](removeEntity(_0x4c0f1c,null))[_0x6953('0x2d')](handleError(_0x4c0f1c,null));};exports[_0x6953('0x5a')]=function(_0x1e4e2c,_0x5e4b89){return db[_0x6953('0x50')][_0x6953('0x5a')]()[_0x6953('0x23')](respondWithResult(_0x5e4b89,null))['catch'](handleError(_0x5e4b89,null));};var interaction_log=require('../../config/logger')(_0x6953('0x5b'));exports[_0x6953('0x5c')]=function(_0x33dbe4,_0x2bd209,_0x2659c3){var _0x4cd3a8={'agent':{},'channel':_0x6953('0x5d')};if(_0x33dbe4[_0x6953('0x59')]['id']){delete _0x33dbe4[_0x6953('0x59')]['id'];}_0x33dbe4[_0x6953('0x59')][_0x6953('0x5e')]=!![];_0x33dbe4[_0x6953('0x59')][_0x6953('0x5f')]=moment()[_0x6953('0x60')](_0x6953('0x61'));_0x33dbe4[_0x6953('0x59')][_0x6953('0x62')]=_0x33dbe4[_0x6953('0x59')][_0x6953('0x62')]||_0x33dbe4['user']['id'];_0x4cd3a8[_0x6953('0x63')]['id']=_0x33dbe4[_0x6953('0x59')][_0x6953('0x62')];return db[_0x6953('0x50')][_0x6953('0x56')]({'where':{'id':_0x33dbe4['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2bd209,null))[_0x6953('0x23')](saveUpdates(_0x33dbe4['body'],null))[_0x6953('0x23')](function(_0x2b5de2){if(_0x2b5de2){_0x4cd3a8[_0x6953('0x2c')]=_0x2b5de2[_0x6953('0x64')]({'plain':!![]});return db['SmsInteraction'][_0x6953('0x56')]({'where':{'id':_0x2b5de2[_0x6953('0x65')]}});}return null;})[_0x6953('0x23')](handleEntityNotFound(_0x2bd209,null))[_0x6953('0x23')](function(_0x1c3190){if(_0x1c3190){return _0x1c3190[_0x6953('0x58')]({'UserId':_0x33dbe4[_0x6953('0x59')][_0x6953('0x62')],'read1stAt':_[_0x6953('0x66')](_0x1c3190[_0x6953('0x67')])?moment()[_0x6953('0x60')](_0x6953('0x61')):undefined});}return null;})[_0x6953('0x23')](function(_0x425833){if(_0x425833){_0x4cd3a8[_0x6953('0x68')]=_0x425833['get']({'plain':!![]});interaction_log[_0x6953('0x24')](_0x6953('0x69'),_0x33dbe4[_0x6953('0x6a')]['id'],_0x33dbe4[_0x6953('0x6a')][_0x6953('0x3b')],_0x33dbe4[_0x6953('0x6a')][_0x6953('0x6b')],_0x4cd3a8['interaction']['id'],_0x33dbe4[_0x6953('0x59')]?JSON[_0x6953('0x29')](_0x33dbe4['body']):_0x6953('0x6c'));return respondWithRpcPromise(_0x6953('0x6d'),_0x6953('0x6e'),_0x4cd3a8);}return null;})['then'](function(_0x4cb8a4){var _0x1ea573=_0x6953('0x6f')+_0x4cb8a4[_0x6953('0x2c')][_0x6953('0x70')];return db[_0x6953('0x71')][_0x6953('0x42')](_0x1ea573,{'type':db[_0x6953('0x72')][_0x6953('0x73')][_0x6953('0x74')],'raw':!![]})['then'](function(_0x78eb85){return _0x78eb85;});})[_0x6953('0x23')](function(_0x1b641e){if(_0x1b641e){_0x4cd3a8[_0x6953('0x2c')]['contact']=_0x1b641e[0x0];if(!_0x33dbe4[_0x6953('0x59')][_0x6953('0x62')])return;return db[_0x6953('0x75')]['find']({'where':{'id':_0x33dbe4[_0x6953('0x59')][_0x6953('0x62')],'role':_0x6953('0x63')},'attributes':['id',_0x6953('0x3b'),'fullname',_0x6953('0x76'),_0x6953('0x77')],'raw':!![]});}return null;})[_0x6953('0x23')](function(_0x2dcef9){if(!_0x2dcef9)return null;_0x4cd3a8['message']['agent']=_0x2dcef9;return _0x4cd3a8;})[_0x6953('0x23')](function(_0x2310b2){if(_0x2310b2){if(_0x33dbe4['body']['manual']){_0x4cd3a8[_0x6953('0x2c')][_0x6953('0x78')]=util[_0x6953('0x60')](_0x6953('0x79'),_0x33dbe4['user'][_0x6953('0x3b')]);_0x4cd3a8[_0x6953('0x2c')]['channel']=_0x4cd3a8[_0x6953('0x7a')];_0x4cd3a8[_0x6953('0x2c')]['motionChannel']=_0x4cd3a8['channel'];_0x4cd3a8['message'][_0x6953('0x7b')]=_0x6953('0x5c');return respondWithRpcPromise(_0x6953('0x7c'),_0x6953('0x7c'),{'event':_0x6953('0x7d'),'message':_0x4cd3a8[_0x6953('0x2c')]},client9002)[_0x6953('0x23')](function(){return _0x4cd3a8;});}return _0x4cd3a8;}return null;})[_0x6953('0x23')](respondWithResult(_0x2bd209,null))['catch'](handleError(_0x2bd209,null));};var interaction_log=require(_0x6953('0x15'))(_0x6953('0x5b'));exports[_0x6953('0x37')]=function(_0x35ad50,_0xee6759,_0x43ad3d){var _0x481102={'agent':{},'channel':_0x6953('0x5d')};if(_0x35ad50['body']['id']){delete _0x35ad50[_0x6953('0x59')]['id'];}_0x35ad50['body'][_0x6953('0x62')]=_0x35ad50[_0x6953('0x59')][_0x6953('0x62')]||_0x35ad50['user']['id'];_0x481102[_0x6953('0x63')]['id']=_0x35ad50[_0x6953('0x59')][_0x6953('0x62')];return db[_0x6953('0x50')][_0x6953('0x56')]({'where':{'id':_0x35ad50[_0x6953('0x7e')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0xee6759,null))[_0x6953('0x23')](function(_0x15794b){if(_0x15794b){_0x481102[_0x6953('0x2c')]=_0x15794b[_0x6953('0x64')]({'plain':!![]});return db[_0x6953('0x7f')][_0x6953('0x56')]({'where':{'id':_0x15794b[_0x6953('0x65')]}});}return null;})[_0x6953('0x23')](handleEntityNotFound(_0xee6759,null))[_0x6953('0x23')](function(_0x216b92){if(_0x216b92){_0x481102[_0x6953('0x68')]=_0x216b92['get']({'plain':!![]});interaction_log[_0x6953('0x24')](_0x6953('0x80'),_0x35ad50[_0x6953('0x6a')]['id'],_0x35ad50[_0x6953('0x6a')][_0x6953('0x3b')],_0x35ad50[_0x6953('0x6a')][_0x6953('0x6b')],_0x481102[_0x6953('0x68')]['id'],_0x35ad50[_0x6953('0x59')]?JSON[_0x6953('0x29')](_0x35ad50[_0x6953('0x59')]):'null');return respondWithRpcPromise(_0x6953('0x81'),_0x6953('0x82'),_0x481102);}return null;})[_0x6953('0x23')](function(_0x5a74ab){var _0x51f1f5='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5a74ab['message'][_0x6953('0x70')];return db[_0x6953('0x71')][_0x6953('0x42')](_0x51f1f5,{'type':db[_0x6953('0x72')][_0x6953('0x73')][_0x6953('0x74')],'raw':!![]})[_0x6953('0x23')](function(_0x5e34b6){return _0x5e34b6;});})[_0x6953('0x23')](function(_0x3113c0){if(_0x3113c0){_0x481102[_0x6953('0x2c')]['contact']=_0x3113c0[0x0];if(!_0x35ad50[_0x6953('0x59')][_0x6953('0x62')])return;return db['User'][_0x6953('0x56')]({'where':{'id':_0x35ad50['body']['UserId'],'role':_0x6953('0x63')},'attributes':['id','name','fullname',_0x6953('0x76'),_0x6953('0x77')],'raw':!![]});}return null;})[_0x6953('0x23')](function(_0x512384){if(!_0x512384)return null;_0x481102[_0x6953('0x2c')][_0x6953('0x63')]=_0x512384;return _0x481102;})['then'](function(_0x30de2c){if(_0x30de2c){_0x30de2c[_0x6953('0x2c')][_0x6953('0x78')]=util[_0x6953('0x60')](_0x6953('0x79'),_0x35ad50[_0x6953('0x6a')][_0x6953('0x3b')]);_0x30de2c[_0x6953('0x2c')][_0x6953('0x7a')]=_0x481102['channel'];_0x30de2c[_0x6953('0x2c')][_0x6953('0x83')]=_0x481102['channel'];_0x30de2c[_0x6953('0x2c')][_0x6953('0x7b')]=_0x6953('0x37');respondWithRpcPromise(_0x6953('0x7c'),_0x6953('0x7c'),{'event':_0x6953('0x84'),'message':_0x30de2c[_0x6953('0x2c')]},client9002);return _0x481102;}return null;})['then'](respondWithResult(_0xee6759,null))[_0x6953('0x2d')](handleError(_0xee6759,null));};exports[_0x6953('0x2f')]=function(_0x1481a1,_0x12e2ec,_0x29e68e){if(_0x1481a1[_0x6953('0x59')]['id']){delete _0x1481a1[_0x6953('0x59')]['id'];}var _0x3444cb;return db[_0x6953('0x50')]['find']({'where':{'id':_0x1481a1[_0x6953('0x7e')]['id']}})['then'](handleEntityNotFound(_0x12e2ec,null))[_0x6953('0x23')](function(_0x4ab5bb){if(_0x4ab5bb){_0x3444cb=_0x4ab5bb;return db[_0x6953('0x85')][_0x6953('0x56')]({'where':{'id':_0x4ab5bb[_0x6953('0x86')]}});}})[_0x6953('0x23')](handleEntityNotFound(_0x12e2ec,null))[_0x6953('0x23')](function(_0x5d56db){if(_0x5d56db){logger[_0x6953('0x27')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6953('0x2f'),_0x6953('0x87'),_0x5d56db[_0x6953('0x4e')],util[_0x6953('0x88')](_0x1481a1['body'],{'showHidden':![],'depth':null}));switch(_0x5d56db[_0x6953('0x4e')]){case _0x6953('0x89'):if(_0x1481a1[_0x6953('0x59')][_0x6953('0x8a')]&&_0x1481a1[_0x6953('0x59')][_0x6953('0x8a')]===_0x3444cb[_0x6953('0x8b')]){return _0x3444cb['update']({'read':!![]});}else{logger[_0x6953('0x2a')](_0x6953('0x8c'),_0x6953('0x2f'),_0x6953('0x89'),util[_0x6953('0x88')](_0x1481a1['body'],{'showHidden':![],'depth':null}));}break;case'plivo':if(_0x1481a1['body'][_0x6953('0x8d')]&&_0x1481a1[_0x6953('0x59')][_0x6953('0x8d')]===_0x3444cb['messageId']&&_[_0x6953('0x8e')](['sent',_0x6953('0x8f')],_0x1481a1[_0x6953('0x59')]['Status'])>=0x0){return _0x3444cb[_0x6953('0x58')]({'read':!![]});}else{logger['error'](_0x6953('0x8c'),'status','plivio',util[_0x6953('0x88')](_0x1481a1[_0x6953('0x59')],{'showHidden':![],'depth':null}));}break;case _0x6953('0x90'):var _0x14ad16=_0x1481a1[_0x6953('0x59')][_0x6953('0x91')][0x0];if(_0x14ad16[_0x6953('0x2f')][_0x6953('0x92')]==='DELIVERED'){return _0x3444cb['update']({'read':!![]});}else{logger['error'](_0x6953('0x8c'),_0x6953('0x2f'),_0x6953('0x90'),util[_0x6953('0x88')](_0x1481a1[_0x6953('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x3444cb;}})['then'](respondWithResult(_0x12e2ec,null))[_0x6953('0x2d')](handleError(_0x12e2ec,null));};
\ No newline at end of file
+var _0xff5e=['request-promise','moment','bluebird','mustache','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','jayson/promise','http','client','request','then','debug','request\x20sent','stringify','code','error','SmsMessage,\x20%s,\x20%s','message','info','result','catch','sendStatus','offset','undefined','limit','count','status','set','apply','reject','save','end','stack','name','send','index','SmsMessage','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','VIRTUAL','options','where','includeAll','include','findAll','rows','show','params','find','create','body','describe','sms-interactions','accept','read','readAt','UserId','user','agent','get','SmsInteraction','SmsInteractionId','update','isNil','read1stAt','format','YYYY-MM-DD\x20HH:mm:ss','interaction','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','channel','event','EventManager','acceptmessage','sms','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','SIP/%s','rejectmessage','SmsAccountId','SmsMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','SmsAccount,\x20%s,\x20%s,\x20%s','twilio','plivo','MessageUUID','messageId','indexOf','delivered','plivio','results','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x491394,_0x22af45){var _0x16f9a1=function(_0x3eb1ea){while(--_0x3eb1ea){_0x491394['push'](_0x491394['shift']());}};_0x16f9a1(++_0x22af45);}(_0xff5e,0x95));var _0xeff5=function(_0x202a4a,_0x445d47){_0x202a4a=_0x202a4a-0x0;var _0x37d59a=_0xff5e[_0x202a4a];return _0x37d59a;};'use strict';var emlformat=require(_0xeff5('0x0'));var rimraf=require(_0xeff5('0x1'));var zipdir=require(_0xeff5('0x2'));var jsonpatch=require(_0xeff5('0x3'));var rp=require(_0xeff5('0x4'));var moment=require(_0xeff5('0x5'));var BPromise=require(_0xeff5('0x6'));var Mustache=require(_0xeff5('0x7'));var util=require(_0xeff5('0x8'));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(_0xeff5('0x9'));var _=require(_0xeff5('0xa'));var squel=require(_0xeff5('0xb'));var crypto=require(_0xeff5('0xc'));var jsforce=require(_0xeff5('0xd'));var deskjs=require(_0xeff5('0xe'));var toCsv=require(_0xeff5('0xf'));var querystring=require(_0xeff5('0x10'));var Papa=require(_0xeff5('0x11'));var Redis=require(_0xeff5('0x12'));var authService=require(_0xeff5('0x13'));var qs=require(_0xeff5('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xeff5('0x15'));var logger=require(_0xeff5('0x16'))(_0xeff5('0x17'));var utils=require(_0xeff5('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xeff5('0x19'))['db'];config[_0xeff5('0x1a')]=_[_0xeff5('0x1b')](config[_0xeff5('0x1a')],{'host':_0xeff5('0x1c'),'port':0x18eb});var socket=require(_0xeff5('0x1d'))(new Redis(config[_0xeff5('0x1a')]));require(_0xeff5('0x1e'))['register'](socket);var jayson=require(_0xeff5('0x1f'));var client=jayson['client'][_0xeff5('0x20')]({'port':0x232c});var client9002=jayson[_0xeff5('0x21')][_0xeff5('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x41df0b,_0x22eb7a,_0x4181eb,_0x97eca9){return new BPromise(function(_0x16460f,_0x263cf1){var _0x23d636=_0x97eca9||client;return _0x23d636[_0xeff5('0x22')](_0x41df0b,_0x4181eb)[_0xeff5('0x23')](function(_0x5256b3){logger['info']('SmsMessage,\x20%s,\x20%s',_0x22eb7a,'request\x20sent');logger[_0xeff5('0x24')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x22eb7a,_0xeff5('0x25'),JSON[_0xeff5('0x26')](_0x5256b3));if(_0x5256b3['error']){if(_0x5256b3['error'][_0xeff5('0x27')]===0x1f4){logger[_0xeff5('0x28')](_0xeff5('0x29'),_0x22eb7a,_0x5256b3[_0xeff5('0x28')]['message']);return _0x263cf1(_0x5256b3[_0xeff5('0x28')][_0xeff5('0x2a')]);}logger[_0xeff5('0x28')]('SmsMessage,\x20%s,\x20%s',_0x22eb7a,_0x5256b3['error'][_0xeff5('0x2a')]);return _0x16460f(_0x5256b3[_0xeff5('0x28')][_0xeff5('0x2a')]);}else{logger[_0xeff5('0x2b')](_0xeff5('0x29'),_0x22eb7a,_0xeff5('0x25'));_0x16460f(_0x5256b3[_0xeff5('0x2c')][_0xeff5('0x2a')]);}})[_0xeff5('0x2d')](function(_0x439043){logger[_0xeff5('0x28')](_0xeff5('0x29'),_0x22eb7a,_0x439043);_0x263cf1(_0x439043);});});}function respondWithStatusCode(_0x2e3b86,_0x3d122b){_0x3d122b=_0x3d122b||0xcc;return function(_0x513907){if(_0x513907){return _0x2e3b86[_0xeff5('0x2e')](_0x3d122b);}return _0x2e3b86['status'](_0x3d122b)['end']();};}function respondWithResult(_0x547934,_0x919691){_0x919691=_0x919691||0xc8;return function(_0x4b5419){if(_0x4b5419){return _0x547934['status'](_0x919691)['json'](_0x4b5419);}};}function respondWithFilteredResult(_0x43a43,_0x383d4a){return function(_0xbf177d){if(_0xbf177d){var _0x303676=typeof _0x383d4a[_0xeff5('0x2f')]===_0xeff5('0x30')&&typeof _0x383d4a[_0xeff5('0x31')]==='undefined';var _0x5a41cd=_0xbf177d[_0xeff5('0x32')];var _0x2ce199=_0x303676?0x0:_0x383d4a[_0xeff5('0x2f')];var _0x5ee813=_0x303676?_0xbf177d[_0xeff5('0x32')]:_0x383d4a[_0xeff5('0x2f')]+_0x383d4a[_0xeff5('0x31')];var _0xc4038;if(_0x5ee813>=_0x5a41cd){_0x5ee813=_0x5a41cd;_0xc4038=0xc8;}else{_0xc4038=0xce;}_0x43a43[_0xeff5('0x33')](_0xc4038);return _0x43a43[_0xeff5('0x34')]('Content-Range',_0x2ce199+'-'+_0x5ee813+'/'+_0x5a41cd)['json'](_0xbf177d);}return null;};}function patchUpdates(_0x5ac036){return function(_0x803caa){try{jsonpatch[_0xeff5('0x35')](_0x803caa,_0x5ac036,!![]);}catch(_0x535c81){return BPromise[_0xeff5('0x36')](_0x535c81);}return _0x803caa[_0xeff5('0x37')]();};}function saveUpdates(_0x30ded8,_0x130f85){return function(_0x5f5cbd){if(_0x5f5cbd){return _0x5f5cbd['update'](_0x30ded8)['then'](function(_0x2e061b){return _0x2e061b;});}return null;};}function removeEntity(_0xf34eff,_0x2c80b5){return function(_0x573c71){if(_0x573c71){return _0x573c71['destroy']()[_0xeff5('0x23')](function(){_0xf34eff[_0xeff5('0x33')](0xcc)[_0xeff5('0x38')]();});}};}function handleEntityNotFound(_0x30a1d1,_0x39f6cd){return function(_0x2e5ee3){if(!_0x2e5ee3){_0x30a1d1[_0xeff5('0x2e')](0x194);}return _0x2e5ee3;};}function handleError(_0x574d26,_0x2b3a28){_0x2b3a28=_0x2b3a28||0x1f4;return function(_0x1cb52f){logger['error'](_0x1cb52f[_0xeff5('0x39')]);if(_0x1cb52f[_0xeff5('0x3a')]){delete _0x1cb52f['name'];}_0x574d26[_0xeff5('0x33')](_0x2b3a28)[_0xeff5('0x3b')](_0x1cb52f);};}exports[_0xeff5('0x3c')]=function(_0x2451a7,_0x3b7afe){var _0x1c0bc0={},_0x54439c={},_0x13dc93={'count':0x0,'rows':[]};var _0x2f48a8=_['map'](db[_0xeff5('0x3d')][_0xeff5('0x3e')],function(_0x1891d0){return{'name':_0x1891d0[_0xeff5('0x3f')],'type':_0x1891d0[_0xeff5('0x40')][_0xeff5('0x41')]};});_0x54439c[_0xeff5('0x42')]=_[_0xeff5('0x43')](_0x2f48a8,_0xeff5('0x3a'));_0x54439c[_0xeff5('0x44')]=_[_0xeff5('0x45')](_0x2451a7['query']);_0x54439c[_0xeff5('0x46')]=_[_0xeff5('0x47')](_0x54439c[_0xeff5('0x42')],_0x54439c['query']);_0x1c0bc0['attributes']=_[_0xeff5('0x47')](_0x54439c[_0xeff5('0x42')],qs[_0xeff5('0x48')](_0x2451a7[_0xeff5('0x44')][_0xeff5('0x48')]));_0x1c0bc0['attributes']=_0x1c0bc0[_0xeff5('0x49')][_0xeff5('0x4a')]?_0x1c0bc0['attributes']:_0x54439c[_0xeff5('0x42')];if(!_0x2451a7[_0xeff5('0x44')][_0xeff5('0x4b')](_0xeff5('0x4c'))){_0x1c0bc0[_0xeff5('0x31')]=qs[_0xeff5('0x31')](_0x2451a7[_0xeff5('0x44')][_0xeff5('0x31')]);_0x1c0bc0['offset']=qs['offset'](_0x2451a7[_0xeff5('0x44')][_0xeff5('0x2f')]);}_0x1c0bc0[_0xeff5('0x4d')]=qs[_0xeff5('0x4e')](_0x2451a7['query'][_0xeff5('0x4e')]);_0x1c0bc0['where']=qs[_0xeff5('0x46')](_[_0xeff5('0x4f')](_0x2451a7[_0xeff5('0x44')],_0x54439c[_0xeff5('0x46')]),_0x2f48a8);if(_0x2451a7['query'][_0xeff5('0x50')]){_0x1c0bc0['where']=_[_0xeff5('0x51')](_0x1c0bc0['where'],{'$or':_[_0xeff5('0x43')](_0x2f48a8,function(_0x2f3727){if(_0x2f3727[_0xeff5('0x40')]!==_0xeff5('0x52')){var _0x33fd05={};_0x33fd05[_0x2f3727[_0xeff5('0x3a')]]={'$like':'%'+_0x2451a7['query'][_0xeff5('0x50')]+'%'};return _0x33fd05;}})});}_0x1c0bc0=_['merge']({},_0x1c0bc0,_0x2451a7[_0xeff5('0x53')]);var _0x3eb761={'where':_0x1c0bc0[_0xeff5('0x54')]};return db['SmsMessage']['count'](_0x3eb761)['then'](function(_0x227e12){_0x13dc93[_0xeff5('0x32')]=_0x227e12;if(_0x2451a7['query'][_0xeff5('0x55')]){_0x1c0bc0[_0xeff5('0x56')]=[{'all':!![]}];}return db['SmsMessage'][_0xeff5('0x57')](_0x1c0bc0);})[_0xeff5('0x23')](function(_0x5b5386){_0x13dc93[_0xeff5('0x58')]=_0x5b5386;return _0x13dc93;})['then'](respondWithFilteredResult(_0x3b7afe,_0x1c0bc0))[_0xeff5('0x2d')](handleError(_0x3b7afe,null));};exports[_0xeff5('0x59')]=function(_0x4b2fdc,_0x388477){var _0x365925={'raw':!![],'where':{'id':_0x4b2fdc[_0xeff5('0x5a')]['id']}},_0x466729={};_0x466729['model']=_['keys'](db[_0xeff5('0x3d')]['rawAttributes']);_0x466729[_0xeff5('0x44')]=_['keys'](_0x4b2fdc[_0xeff5('0x44')]);_0x466729[_0xeff5('0x46')]=_[_0xeff5('0x47')](_0x466729[_0xeff5('0x42')],_0x466729[_0xeff5('0x44')]);_0x365925[_0xeff5('0x49')]=_[_0xeff5('0x47')](_0x466729[_0xeff5('0x42')],qs[_0xeff5('0x48')](_0x4b2fdc['query'][_0xeff5('0x48')]));_0x365925['attributes']=_0x365925[_0xeff5('0x49')][_0xeff5('0x4a')]?_0x365925[_0xeff5('0x49')]:_0x466729[_0xeff5('0x42')];if(_0x4b2fdc[_0xeff5('0x44')][_0xeff5('0x55')]){_0x365925[_0xeff5('0x56')]=[{'all':!![]}];}_0x365925=_[_0xeff5('0x51')]({},_0x365925,_0x4b2fdc[_0xeff5('0x53')]);return db[_0xeff5('0x3d')][_0xeff5('0x5b')](_0x365925)[_0xeff5('0x23')](handleEntityNotFound(_0x388477,null))[_0xeff5('0x23')](respondWithResult(_0x388477,null))[_0xeff5('0x2d')](handleError(_0x388477,null));};exports[_0xeff5('0x5c')]=function(_0x3f762b,_0x2af245){return db[_0xeff5('0x3d')][_0xeff5('0x5c')](_0x3f762b[_0xeff5('0x5d')],{})['then'](respondWithResult(_0x2af245,0xc9))[_0xeff5('0x2d')](handleError(_0x2af245,null));};exports['update']=function(_0x497cdf,_0x1aab9c){if(_0x497cdf[_0xeff5('0x5d')]['id']){delete _0x497cdf[_0xeff5('0x5d')]['id'];}return db[_0xeff5('0x3d')][_0xeff5('0x5b')]({'where':{'id':_0x497cdf[_0xeff5('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1aab9c,null))[_0xeff5('0x23')](saveUpdates(_0x497cdf[_0xeff5('0x5d')],null))[_0xeff5('0x23')](respondWithResult(_0x1aab9c,null))['catch'](handleError(_0x1aab9c,null));};exports['destroy']=function(_0x19b8f3,_0x1ca017){return db[_0xeff5('0x3d')][_0xeff5('0x5b')]({'where':{'id':_0x19b8f3['params']['id']}})[_0xeff5('0x23')](handleEntityNotFound(_0x1ca017,null))['then'](removeEntity(_0x1ca017,null))[_0xeff5('0x2d')](handleError(_0x1ca017,null));};exports[_0xeff5('0x5e')]=function(_0x211821,_0x48a801){return db[_0xeff5('0x3d')]['describe']()[_0xeff5('0x23')](respondWithResult(_0x48a801,null))[_0xeff5('0x2d')](handleError(_0x48a801,null));};var interaction_log=require(_0xeff5('0x16'))(_0xeff5('0x5f'));exports[_0xeff5('0x60')]=function(_0x32aadd,_0x5e0e16,_0x3244d9){var _0x11a774={'agent':{},'channel':'sms'};if(_0x32aadd[_0xeff5('0x5d')]['id']){delete _0x32aadd[_0xeff5('0x5d')]['id'];}_0x32aadd[_0xeff5('0x5d')][_0xeff5('0x61')]=!![];_0x32aadd[_0xeff5('0x5d')][_0xeff5('0x62')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x32aadd[_0xeff5('0x5d')][_0xeff5('0x63')]=_0x32aadd[_0xeff5('0x5d')][_0xeff5('0x63')]||_0x32aadd[_0xeff5('0x64')]['id'];_0x11a774[_0xeff5('0x65')]['id']=_0x32aadd[_0xeff5('0x5d')][_0xeff5('0x63')];return db[_0xeff5('0x3d')][_0xeff5('0x5b')]({'where':{'id':_0x32aadd[_0xeff5('0x5a')]['id'],'UserId':null}})[_0xeff5('0x23')](handleEntityNotFound(_0x5e0e16,null))[_0xeff5('0x23')](saveUpdates(_0x32aadd[_0xeff5('0x5d')],null))[_0xeff5('0x23')](function(_0x5b8107){if(_0x5b8107){_0x11a774[_0xeff5('0x2a')]=_0x5b8107[_0xeff5('0x66')]({'plain':!![]});return db[_0xeff5('0x67')][_0xeff5('0x5b')]({'where':{'id':_0x5b8107[_0xeff5('0x68')]}});}return null;})['then'](handleEntityNotFound(_0x5e0e16,null))[_0xeff5('0x23')](function(_0x47648f){if(_0x47648f){return _0x47648f[_0xeff5('0x69')]({'UserId':_0x32aadd[_0xeff5('0x5d')][_0xeff5('0x63')],'read1stAt':_[_0xeff5('0x6a')](_0x47648f[_0xeff5('0x6b')])?moment()[_0xeff5('0x6c')](_0xeff5('0x6d')):undefined});}return null;})[_0xeff5('0x23')](function(_0x5bbcf4){if(_0x5bbcf4){_0x11a774[_0xeff5('0x6e')]=_0x5bbcf4[_0xeff5('0x66')]({'plain':!![]});interaction_log[_0xeff5('0x2b')]('[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x32aadd[_0xeff5('0x64')]['id'],_0x32aadd[_0xeff5('0x64')][_0xeff5('0x3a')],_0x32aadd['user'][_0xeff5('0x6f')],_0x11a774[_0xeff5('0x6e')]['id'],_0x32aadd[_0xeff5('0x5d')]?JSON[_0xeff5('0x26')](_0x32aadd[_0xeff5('0x5d')]):_0xeff5('0x70'));return respondWithRpcPromise(_0xeff5('0x71'),_0xeff5('0x72'),_0x11a774);}return null;})['then'](function(_0x39b618){var _0x45db71=_0xeff5('0x73')+_0x39b618[_0xeff5('0x2a')][_0xeff5('0x74')];return db[_0xeff5('0x75')][_0xeff5('0x44')](_0x45db71,{'type':db['Sequelize'][_0xeff5('0x76')][_0xeff5('0x77')],'raw':!![]})[_0xeff5('0x23')](function(_0x5615a4){return _0x5615a4;});})[_0xeff5('0x23')](function(_0x251acc){if(_0x251acc){_0x11a774[_0xeff5('0x2a')][_0xeff5('0x78')]=_0x251acc[0x0];if(!_0x32aadd[_0xeff5('0x5d')]['UserId'])return;return db[_0xeff5('0x79')]['find']({'where':{'id':_0x32aadd[_0xeff5('0x5d')][_0xeff5('0x63')],'role':_0xeff5('0x65')},'attributes':['id',_0xeff5('0x3a'),_0xeff5('0x7a'),_0xeff5('0x7b'),_0xeff5('0x7c')],'raw':!![]});}return null;})[_0xeff5('0x23')](function(_0x15a1e9){if(!_0x15a1e9)return null;_0x11a774[_0xeff5('0x2a')][_0xeff5('0x65')]=_0x15a1e9;return _0x11a774;})[_0xeff5('0x23')](function(_0x2b2cf5){if(_0x2b2cf5){if(_0x32aadd[_0xeff5('0x5d')][_0xeff5('0x7d')]){_0x11a774[_0xeff5('0x2a')][_0xeff5('0x7e')]=util[_0xeff5('0x6c')]('SIP/%s',_0x32aadd[_0xeff5('0x64')][_0xeff5('0x3a')]);_0x11a774[_0xeff5('0x2a')][_0xeff5('0x7f')]=_0x11a774[_0xeff5('0x7f')];_0x11a774['message'][_0xeff5('0x80')]=_0xeff5('0x60');return respondWithRpcPromise(_0xeff5('0x81'),_0xeff5('0x81'),{'event':_0xeff5('0x82'),'message':_0x11a774[_0xeff5('0x2a')]},client9002)[_0xeff5('0x23')](function(){return _0x11a774;});}return _0x11a774;}return null;})['then'](respondWithResult(_0x5e0e16,null))['catch'](handleError(_0x5e0e16,null));};var interaction_log=require(_0xeff5('0x16'))(_0xeff5('0x5f'));exports['reject']=function(_0x123169,_0x4ad14a,_0x54392f){var _0xb044b6={'agent':{},'channel':_0xeff5('0x83')};if(_0x123169['body']['id']){delete _0x123169[_0xeff5('0x5d')]['id'];}_0x123169[_0xeff5('0x5d')][_0xeff5('0x63')]=_0x123169[_0xeff5('0x5d')][_0xeff5('0x63')]||_0x123169[_0xeff5('0x64')]['id'];_0xb044b6['agent']['id']=_0x123169['body'][_0xeff5('0x63')];return db[_0xeff5('0x3d')]['find']({'where':{'id':_0x123169[_0xeff5('0x5a')]['id'],'UserId':null}})[_0xeff5('0x23')](handleEntityNotFound(_0x4ad14a,null))[_0xeff5('0x23')](function(_0x3ae01d){if(_0x3ae01d){_0xb044b6[_0xeff5('0x2a')]=_0x3ae01d[_0xeff5('0x66')]({'plain':!![]});return db[_0xeff5('0x67')][_0xeff5('0x5b')]({'where':{'id':_0x3ae01d[_0xeff5('0x68')]}});}return null;})[_0xeff5('0x23')](handleEntityNotFound(_0x4ad14a,null))['then'](function(_0x4d14f6){if(_0x4d14f6){_0xb044b6[_0xeff5('0x6e')]=_0x4d14f6[_0xeff5('0x66')]({'plain':!![]});interaction_log[_0xeff5('0x2b')](_0xeff5('0x84'),_0x123169['user']['id'],_0x123169['user']['name'],_0x123169[_0xeff5('0x64')][_0xeff5('0x6f')],_0xb044b6[_0xeff5('0x6e')]['id'],_0x123169[_0xeff5('0x5d')]?JSON[_0xeff5('0x26')](_0x123169[_0xeff5('0x5d')]):_0xeff5('0x70'));return respondWithRpcPromise(_0xeff5('0x85'),_0xeff5('0x86'),_0xb044b6);}return null;})[_0xeff5('0x23')](function(_0x1d4ea4){var _0x29e4e5=_0xeff5('0x73')+_0x1d4ea4[_0xeff5('0x2a')][_0xeff5('0x74')];return db['sequelize'][_0xeff5('0x44')](_0x29e4e5,{'type':db[_0xeff5('0x87')]['QueryTypes']['SELECT'],'raw':!![]})[_0xeff5('0x23')](function(_0x567d71){return _0x567d71;});})['then'](function(_0x439a9c){if(_0x439a9c){_0xb044b6['message'][_0xeff5('0x78')]=_0x439a9c[0x0];if(!_0x123169[_0xeff5('0x5d')]['UserId'])return;return db['User']['find']({'where':{'id':_0x123169[_0xeff5('0x5d')][_0xeff5('0x63')],'role':_0xeff5('0x65')},'attributes':['id',_0xeff5('0x3a'),_0xeff5('0x7a'),_0xeff5('0x7b'),'internal'],'raw':!![]});}return null;})['then'](function(_0x58552d){if(!_0x58552d)return null;_0xb044b6[_0xeff5('0x2a')][_0xeff5('0x65')]=_0x58552d;return _0xb044b6;})[_0xeff5('0x23')](function(_0x26161f){if(_0x26161f){_0x26161f[_0xeff5('0x2a')][_0xeff5('0x7e')]=util[_0xeff5('0x6c')](_0xeff5('0x88'),_0x123169[_0xeff5('0x64')][_0xeff5('0x3a')]);_0x26161f[_0xeff5('0x2a')][_0xeff5('0x7f')]=_0xb044b6[_0xeff5('0x7f')];_0x26161f['message'][_0xeff5('0x80')]='reject';respondWithRpcPromise('EventManager',_0xeff5('0x81'),{'event':_0xeff5('0x89'),'message':_0x26161f[_0xeff5('0x2a')]},client9002);return _0xb044b6;}return null;})['then'](respondWithResult(_0x4ad14a,null))['catch'](handleError(_0x4ad14a,null));};exports['status']=function(_0x17aceb,_0x36d55d,_0x9175dc){if(_0x17aceb[_0xeff5('0x5d')]['id']){delete _0x17aceb[_0xeff5('0x5d')]['id'];}var _0x4befdf;return db[_0xeff5('0x3d')][_0xeff5('0x5b')]({'where':{'id':_0x17aceb[_0xeff5('0x5a')]['id']}})[_0xeff5('0x23')](handleEntityNotFound(_0x36d55d,null))[_0xeff5('0x23')](function(_0x4fcbf4){if(_0x4fcbf4){_0x4befdf=_0x4fcbf4;return db['SmsAccount'][_0xeff5('0x5b')]({'where':{'id':_0x4fcbf4[_0xeff5('0x8a')]}});}})['then'](handleEntityNotFound(_0x36d55d,null))['then'](function(_0x380e02){if(_0x380e02){logger[_0xeff5('0x24')](_0xeff5('0x8b'),_0xeff5('0x33'),_0xeff5('0x8c'),_0x380e02[_0xeff5('0x40')],util[_0xeff5('0x8d')](_0x17aceb[_0xeff5('0x5d')],{'showHidden':![],'depth':null}));switch(_0x380e02[_0xeff5('0x40')]){case'twilio':if(_0x17aceb[_0xeff5('0x5d')]['MessageSid']&&_0x17aceb['body']['MessageSid']===_0x4befdf['messageId']){return _0x4befdf[_0xeff5('0x69')]({'read':!![]});}else{logger[_0xeff5('0x28')](_0xeff5('0x8e'),'status',_0xeff5('0x8f'),util[_0xeff5('0x8d')](_0x17aceb[_0xeff5('0x5d')],{'showHidden':![],'depth':null}));}break;case _0xeff5('0x90'):if(_0x17aceb[_0xeff5('0x5d')][_0xeff5('0x91')]&&_0x17aceb['body'][_0xeff5('0x91')]===_0x4befdf[_0xeff5('0x92')]&&_[_0xeff5('0x93')](['sent',_0xeff5('0x94')],_0x17aceb[_0xeff5('0x5d')]['Status'])>=0x0){return _0x4befdf[_0xeff5('0x69')]({'read':!![]});}else{logger[_0xeff5('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xeff5('0x33'),_0xeff5('0x95'),util[_0xeff5('0x8d')](_0x17aceb[_0xeff5('0x5d')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x3b3d62=_0x17aceb[_0xeff5('0x5d')][_0xeff5('0x96')][0x0];if(_0x3b3d62['status'][_0xeff5('0x97')]===_0xeff5('0x98')){return _0x4befdf[_0xeff5('0x69')]({'read':!![]});}else{logger[_0xeff5('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xeff5('0x33'),'infobip',util['inspect'](_0x17aceb[_0xeff5('0x5d')],{'showHidden':![],'depth':null}));}break;}return _0x4befdf;}})['then'](respondWithResult(_0x36d55d,null))[_0xeff5('0x2d')](handleError(_0x36d55d,null));};
\ No newline at end of file
index 73a3d92..3c5ae7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a5d=['save','update','emit','hasOwnProperty','hook','events','../../mysqldb','SmsMessage','setMaxListeners'];(function(_0x3f303a,_0xd5ce35){var _0xda7e54=function(_0x1e8107){while(--_0x1e8107){_0x3f303a['push'](_0x3f303a['shift']());}};_0xda7e54(++_0xd5ce35);}(_0x8a5d,0x12e));var _0xd8a5=function(_0x146be0,_0x39a85e){_0x146be0=_0x146be0-0x0;var _0x1bcc25=_0x8a5d[_0x146be0];return _0x1bcc25;};'use strict';var EventEmitter=require(_0xd8a5('0x0'));var SmsMessage=require(_0xd8a5('0x1'))['db'][_0xd8a5('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xd8a5('0x3')](0x0);var events={'afterCreate':_0xd8a5('0x4'),'afterUpdate':_0xd8a5('0x5'),'afterDestroy':'remove'};function emitEvent(_0x372649){return function(_0x3a9a07,_0x452964,_0x475903){SmsMessageEvents['emit'](_0x372649+':'+_0x3a9a07['id'],_0x3a9a07);SmsMessageEvents[_0xd8a5('0x6')](_0x372649,_0x3a9a07);_0x475903(null);};}for(var e in events){if(events[_0xd8a5('0x7')](e)){var event=events[e];SmsMessage[_0xd8a5('0x8')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
+var _0x9bc7=['setMaxListeners','save','update','emit','exports','events','../../mysqldb','SmsMessage'];(function(_0xbb14db,_0x3ee8c6){var _0x36bed7=function(_0x16c478){while(--_0x16c478){_0xbb14db['push'](_0xbb14db['shift']());}};_0x36bed7(++_0x3ee8c6);}(_0x9bc7,0x145));var _0x79bc=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x9bc7[_0xfae23b];return _0x200640;};'use strict';var EventEmitter=require(_0x79bc('0x0'));var SmsMessage=require(_0x79bc('0x1'))['db'][_0x79bc('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x79bc('0x3')](0x0);var events={'afterCreate':_0x79bc('0x4'),'afterUpdate':_0x79bc('0x5'),'afterDestroy':'remove'};function emitEvent(_0x1cf697){return function(_0x124605,_0x1fe39c,_0x1ae895){SmsMessageEvents['emit'](_0x1cf697+':'+_0x124605['id'],_0x124605);SmsMessageEvents[_0x79bc('0x6')](_0x1cf697,_0x124605);_0x1ae895(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0x79bc('0x7')]=SmsMessageEvents;
\ No newline at end of file
index 72bd436..b6c44cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa101=['lodash','util','api','moment','request-promise','path','../../config/environment','./smsMessage.attributes','exports','define','messageId','fti_sms_messages','body','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','UserId','SmsInteraction','SmsInteractionId','createdAt','catch','error','SmsAccount','find','then','type','twilio','accountSid','authToken','phone','messages','create','remote','/status?token=','update','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','login?username=','&password=','GET','split','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','skebby','Missing\x20parameters:\x20username,\x20password','https://smsapi.connectel.se/api/v2/send/','requestid','connectel','xCALLY\x20Motion','senderString','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','queued_count','head','message_id','clickSend','plivo','authId','/api/sms/messages/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','IBSSO\x20','token','csc','crypto','timestamp','apiKey','md5','hex','signature=','/external/get/send.php?','keys','https://platform.clickatell.com/messages','uuid','UTF-8','clickatell','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','application/json','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci'];(function(_0x29ef2b,_0x1f416d){var _0xe4700c=function(_0x215f9b){while(--_0x215f9b){_0x29ef2b['push'](_0x29ef2b['shift']());}};_0xe4700c(++_0x1f416d);}(_0xa101,0x15f));var _0x1a10=function(_0xf73c09,_0x4e424e){_0xf73c09=_0xf73c09-0x0;var _0xa8923c=_0xa101[_0xf73c09];return _0xa8923c;};'use strict';var _=require(_0x1a10('0x0'));var util=require(_0x1a10('0x1'));var logger=require('../../config/logger')(_0x1a10('0x2'));var moment=require(_0x1a10('0x3'));var BPromise=require('bluebird');var rp=require(_0x1a10('0x4'));var fs=require('fs');var path=require(_0x1a10('0x5'));var rimraf=require('rimraf');var config=require(_0x1a10('0x6'));var attributes=require(_0x1a10('0x7'));module[_0x1a10('0x8')]=function(_0x1a9d22,_0x2eb3c8){return _0x1a9d22[_0x1a10('0x9')]('SmsMessage',attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':_0x1a10('0xa'),'fields':[_0x1a10('0xa')]},{'name':_0x1a10('0xb'),'fields':[_0x1a10('0xc')],'type':_0x1a10('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x36e16b,_0x6d687d,_0x501792){var _0xa8d743=_0x1a9d22[_0x1a10('0xe')];var _0x467d62=_0x36e16b['get']({'plain':!![]});if(_0x467d62[_0x1a10('0xf')][_0x1a10('0x10')]()==='in'||_0x467d62[_0x1a10('0xf')]['toLowerCase']()===_0x1a10('0x11')&&!_0x467d62[_0x1a10('0x12')]&&!_[_0x1a10('0x13')](_0x467d62[_0x1a10('0x14')])){_0xa8d743[_0x1a10('0x15')]['findOne']({'where':{'id':_0x467d62[_0x1a10('0x16')]}})['then'](function(_0x56d8d0){if(_0x56d8d0){_0x56d8d0['update']({'lastMsgAt':_0x467d62[_0x1a10('0x17')],'lastMsgDirection':_0x467d62[_0x1a10('0xf')][_0x1a10('0x10')]()});}})[_0x1a10('0x18')](function(_0x5c1b61){console[_0x1a10('0x19')](_0x5c1b61);});}if(_0x467d62[_0x1a10('0xf')]==='out'&&!_0x467d62[_0x1a10('0x12')]){var _0x3dd935;_0xa8d743[_0x1a10('0x1a')][_0x1a10('0x1b')]({'where':{'id':_0x467d62['SmsAccountId']},'raw':!![]})[_0x1a10('0x1c')](function(_0x1b394c){_0x3dd935=_0x1b394c;if(_0x3dd935&&_0x3dd935[_0x1a10('0x1d')]){switch(_0x3dd935[_0x1a10('0x1d')]){case _0x1a10('0x1e'):var _0xe0057f=require(_0x1a10('0x1e'));if(_0x3dd935[_0x1a10('0x1f')]&&_0x3dd935[_0x1a10('0x20')]&&_0x3dd935[_0x1a10('0x21')]){var _0x473ae3=new _0xe0057f(_0x3dd935[_0x1a10('0x1f')],_0x3dd935[_0x1a10('0x20')]);_0x473ae3[_0x1a10('0x22')][_0x1a10('0x23')]({'body':_0x467d62['body'],'to':_0x467d62[_0x1a10('0x21')],'from':_0x3dd935['phone'],'statusCallback':_0x3dd935[_0x1a10('0x24')]+'/api/sms/messages/'+_0x467d62['id']+_0x1a10('0x25')+_0x3dd935['token']})[_0x1a10('0x1c')](function(_0x74c06a){if(_0x74c06a['sid']){return _0x36e16b[_0x1a10('0x26')]({'messageId':_0x74c06a[_0x1a10('0x27')]});}})[_0x1a10('0x18')](function(_0x43cae0){logger['error'](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x1e'),util[_0x1a10('0x2a')](_0x43cae0,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x1e'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case'skebby':var _0x4c8fe6=_0x1a10('0x2b');if(_0x3dd935[_0x1a10('0x2c')]&&_0x3dd935[_0x1a10('0x2d')]){var _0x3a6c46={'recipient':[_0x467d62['phone']],'message':_0x467d62[_0x1a10('0xc')],'message_type':_0x3dd935[_0x1a10('0x2e')]};if(_0x3dd935['smsMethod']&&_0x3dd935[_0x1a10('0x2e')]!=='SI'){_0x3a6c46[_0x1a10('0x2f')]=_0x3dd935[_0x1a10('0x21')];}var _0x1d9fc8={'url':_0x4c8fe6+_0x1a10('0x30')+_0x3dd935[_0x1a10('0x2c')]+_0x1a10('0x31')+_0x3dd935[_0x1a10('0x2d')],'method':_0x1a10('0x32')};rp(_0x1d9fc8)['then'](function(_0x30eb67){var _0x50b2b1=_0x30eb67[_0x1a10('0x33')](';');var _0x3559c4={'user_key':_0x50b2b1[0x0],'session_key':_0x50b2b1[0x1]};_0x1d9fc8={'url':_0x4c8fe6+'sms','method':_0x1a10('0x34'),'headers':{'user_key':_0x3559c4[_0x1a10('0x35')],'Session_key':_0x3559c4[_0x1a10('0x36')]},'json':!![],'body':_0x3a6c46};return rp(_0x1d9fc8);})['then'](function(_0x4eeb1e){if(_0x4eeb1e[_0x1a10('0x37')]>=0x1){var _0x5f5f7={'messageId':_0x4eeb1e[_0x1a10('0x38')]};if(_0x3dd935[_0x1a10('0x2e')]!=='GP'||!_0x3dd935[_0x1a10('0x39')]){_0x5f5f7[_0x1a10('0x3a')]=!![];}return _0x36e16b[_0x1a10('0x26')](_0x5f5f7);}else{return logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x3b'),util[_0x1a10('0x2a')](_0x4eeb1e,{'showHidden':![],'depth':null}));}})[_0x1a10('0x18')](function(_0x3b1ff2){return logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x3b'),util[_0x1a10('0x2a')](_0x3b1ff2,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x3b'),_0x1a10('0x3c'));}break;case'connectel':if(_0x3dd935[_0x1a10('0x20')]){var _0x14e2c2={'recipient':_0x467d62[_0x1a10('0x21')],'message':_0x467d62[_0x1a10('0xc')],'sender':_0x3dd935['senderString']||_0x3dd935[_0x1a10('0x21')],'authorization':_0x3dd935['authToken']};var _0x6d687d={'method':_0x1a10('0x34'),'uri':_0x1a10('0x3d'),'body':_0x14e2c2,'json':!![]};rp(_0x6d687d)[_0x1a10('0x1c')](function(_0x255195){var _0x1c23ee={'messageId':_0x255195[_0x1a10('0x3e')]};if(!_0x3dd935[_0x1a10('0x39')]){_0x1c23ee['read']=!![];}return _0x36e16b[_0x1a10('0x26')](_0x1c23ee);})[_0x1a10('0x18')](function(_0x120318){logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x3f'),util[_0x1a10('0x2a')](_0x120318,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x1a10('0x3f'),'Missing\x20parameters:\x20authToken');}break;case'clicksend':if(_0x3dd935[_0x1a10('0x2c')]&&_0x3dd935[_0x1a10('0x2d')]){var _0x14e2c2={'messages':[{'source':_0x1a10('0x40'),'to':_0x467d62[_0x1a10('0x21')],'body':_0x467d62['body'],'from':_0x3dd935[_0x1a10('0x41')]||_0x3dd935[_0x1a10('0x21')]}]};var _0x138590=util[_0x1a10('0x42')](_0x1a10('0x43'),_0x3dd935[_0x1a10('0x2c')],_0x3dd935['password']);var _0x6d687d={'method':_0x1a10('0x34'),'uri':_0x1a10('0x44'),'body':_0x14e2c2,'headers':{'Authorization':util['format'](_0x1a10('0x45'),new Buffer(_0x138590)[_0x1a10('0x46')](_0x1a10('0x47')))},'json':!![]};rp(_0x6d687d)[_0x1a10('0x1c')](function(_0x55add6){if(_0x55add6[_0x1a10('0x48')]>=0xc8&&_0x55add6[_0x1a10('0x48')]<=0xce){if(_0x55add6['data']&&_0x55add6['data'][_0x1a10('0x49')]>0x0){var _0x1a03bf=_[_0x1a10('0x4a')](_0x55add6['data'][_0x1a10('0x22')]);var _0xb53055={'messageId':_0x1a03bf[_0x1a10('0x4b')]};if(!_0x3dd935[_0x1a10('0x39')]){_0xb53055[_0x1a10('0x3a')]=!![];}return _0x36e16b[_0x1a10('0x26')](_0xb53055);}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x4c'),util[_0x1a10('0x2a')](_0x55add6,{'showHidden':![],'depth':null}));}}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x4c'),util[_0x1a10('0x2a')](_0x55add6,{'showHidden':![],'depth':null}));}})[_0x1a10('0x18')](function(_0x499654){logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),'clickSend',util[_0x1a10('0x2a')](_0x499654,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x4c'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x1a10('0x4d'):if(_0x3dd935[_0x1a10('0x4e')]&&_0x3dd935['authToken']){var _0x14e2c2={'dst':_0x467d62[_0x1a10('0x21')],'text':_0x467d62[_0x1a10('0xc')],'src':_0x3dd935['senderString']||_0x3dd935[_0x1a10('0x21')],'url':_0x3dd935[_0x1a10('0x24')]+_0x1a10('0x4f')+_0x467d62['id']+'/status?token='+_0x3dd935['token']};var _0x138590=util[_0x1a10('0x42')](_0x1a10('0x43'),_0x3dd935[_0x1a10('0x4e')],_0x3dd935[_0x1a10('0x20')]);var _0x6d687d={'method':'POST','uri':util[_0x1a10('0x42')]('https://api.plivo.com/v1/Account/%s/Message/',_0x3dd935[_0x1a10('0x4e')]),'body':_0x14e2c2,'headers':{'Authorization':util[_0x1a10('0x42')](_0x1a10('0x45'),new Buffer(_0x138590)['toString'](_0x1a10('0x47')))},'json':!![]};rp(_0x6d687d)[_0x1a10('0x1c')](function(_0x22d399){var _0x471f25={'messageId':_0x22d399[_0x1a10('0x50')][0x0]};return _0x36e16b[_0x1a10('0x26')](_0x471f25);})[_0x1a10('0x18')](function(_0x95c8c){logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x4d'),util[_0x1a10('0x2a')](_0x95c8c,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x4d'),_0x1a10('0x51'));}break;case _0x1a10('0x52'):if(_0x3dd935[_0x1a10('0x2c')]&&_0x3dd935[_0x1a10('0x2d')]){if(_0x3dd935['baseUrl']){var _0x1bb9cf={'method':_0x1a10('0x34'),'uri':_0x3dd935[_0x1a10('0x53')]+_0x1a10('0x54'),'body':{'username':_0x3dd935[_0x1a10('0x2c')],'password':_0x3dd935[_0x1a10('0x2d')]},'json':!![]};return rp(_0x1bb9cf)[_0x1a10('0x1c')](function(_0x3ed75b){var _0x592654={'method':_0x1a10('0x34'),'uri':_0x3dd935[_0x1a10('0x53')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x3dd935['phone'],'destinations':[{'to':_0x467d62[_0x1a10('0x21')]}],'text':_0x467d62[_0x1a10('0xc')],'notifyUrl':_0x3dd935['remote']+'/api/sms/messages/'+_0x467d62['id']+_0x1a10('0x25')+_0x3dd935['token'],'notifyContentType':'application/json','callbackData':_0x3dd935[_0x1a10('0x21')]+';'+_0x467d62[_0x1a10('0xc')]}]},'headers':{'Authorization':_0x1a10('0x55')+_0x3ed75b[_0x1a10('0x56')]},'json':!![]};return rp(_0x592654)[_0x1a10('0x1c')](function(_0x454372){if(_0x454372['messages']){var _0x18dc56={'messageId':_0x454372['messages'][0x0][_0x1a10('0xa')]};if(!_0x3dd935[_0x1a10('0x39')]){_0x18dc56[_0x1a10('0x3a')]=!![];}return _0x36e16b['update'](_0x18dc56);}else{return logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x52'),util[_0x1a10('0x2a')](_0x454372,{'showHidden':![],'depth':null}));}});})[_0x1a10('0x18')](function(_0x16b243){return logger['error'](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x52'),util[_0x1a10('0x2a')](_0x16b243,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x1a10('0x52'),'Missing\x20parameters:\x20base_url');}}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),'afterCreate',_0x1a10('0x52'),_0x1a10('0x3c'));}break;case _0x1a10('0x57'):var _0x982903=require(_0x1a10('0x58'));if(_0x3dd935['apiKey']){var _0x2f4763={};_0x2f4763['login']=_0x3dd935[_0x1a10('0x2c')];_0x2f4763[_0x1a10('0x21')]=_0x467d62[_0x1a10('0x21')];_0x2f4763[_0x1a10('0x2f')]=_0x3dd935['phone'];_0x2f4763['text']=_0x467d62[_0x1a10('0xc')];_0x2f4763[_0x1a10('0x59')]=+new Date();var _0x40ede1='';var _0x2f130a='';var _0x9337dc=Object['keys'](_0x2f4763);_0x9337dc['sort']();for(var _0x5338e2=0x0;_0x5338e2<_0x9337dc['length'];_0x5338e2++){if(_0x40ede1!=''){_0x40ede1+='&';}_0x40ede1+=_0x9337dc[_0x5338e2]+'='+encodeURIComponent(_0x2f4763[_0x9337dc[_0x5338e2]]);_0x2f130a+=_0x2f4763[_0x9337dc[_0x5338e2]];}_0x2f130a+=_0x3dd935[_0x1a10('0x5a')];_0x2f130a=_0x982903['createHash'](_0x1a10('0x5b'))['update'](_0x2f130a)['digest'](_0x1a10('0x5c'));if(_0x40ede1!==''){_0x40ede1+='&';}_0x40ede1+=_0x1a10('0x5d')+_0x2f130a;var _0x1d9fc8={'method':_0x1a10('0x32'),'uri':_0x3dd935[_0x1a10('0x53')]+_0x1a10('0x5e')+_0x40ede1,'json':!![]};return rp(_0x1d9fc8)[_0x1a10('0x1c')](function(_0x2df7bf){var _0x5bc396=Object[_0x1a10('0x5f')](_0x2df7bf);if(_0x2df7bf[_0x5bc396[0x0]][_0x1a10('0x19')]&&parseInt(_0x2df7bf[_0x5bc396[0x0]][_0x1a10('0x19')])===0x0){var _0x48063f={'messageId':_0x2df7bf[_0x5bc396[0x0]]['id_sms']};if(!_0x3dd935['deliveryReport']){_0x48063f[_0x1a10('0x3a')]=!![];}return _0x36e16b[_0x1a10('0x26')](_0x48063f);}else{return logger['error'](_0x1a10('0x28'),_0x1a10('0x29'),'csc',util['inspect'](_0x2df7bf[_0x1a10('0x19')],{'showHidden':![],'depth':null}));}})[_0x1a10('0x18')](function(_0x26b450){return logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x57'),util['inspect'](_0x26b450,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x57'),'Missing\x20parameters:\x20apiKey');}break;case'clickatell':if(_0x3dd935[_0x1a10('0x5a')]){var _0x4fb2ce={'method':_0x1a10('0x34'),'uri':_0x1a10('0x60'),'headers':{'Authorization':_0x3dd935[_0x1a10('0x5a')]},'body':{'content':_0x467d62[_0x1a10('0xc')],'to':[_0x467d62['phone']],'from':_0x3dd935[_0x1a10('0x21')],'binary':![],'clientMessageId':_0x1a10('0x61'),'charset':_0x1a10('0x62')},'json':!![]};rp(_0x4fb2ce)['then'](function(_0x3f42b8){if(!_0x3f42b8[_0x1a10('0x19')]){var _0x3c3dcd={'messageId':_0x3f42b8[_0x1a10('0x22')][0x0]['apiMessageId']};if(!_0x3dd935['deliveryReport']){_0x3c3dcd[_0x1a10('0x3a')]=!![];}return _0x36e16b[_0x1a10('0x26')](_0x3c3dcd);}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x63'),util[_0x1a10('0x2a')](_0x3f42b8['error'],{'showHidden':![],'depth':null}));}})[_0x1a10('0x18')](function(_0x3fd727){return logger['error'](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x63'),util['inspect'](_0x3fd727,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x63'),'Missing\x20parameters:\x20apiKey');}break;case _0x1a10('0x64'):if(_0x3dd935[_0x1a10('0x2c')]&&_0x3dd935[_0x1a10('0x2d')]){var _0x138590=util[_0x1a10('0x42')](_0x1a10('0x43'),_0x3dd935['username'],_0x3dd935[_0x1a10('0x2d')]);var _0x6d687d={'method':_0x1a10('0x34'),'uri':_0x1a10('0x65')+_0x3dd935[_0x1a10('0x66')]+'/messages','body':{'to':[_0x467d62['phone']],'text':_0x467d62[_0x1a10('0xc')],'from':_0x3dd935[_0x1a10('0x21')],'applicationId':_0x3dd935[_0x1a10('0x67')]},'headers':{'Authorization':util['format'](_0x1a10('0x45'),new Buffer(_0x138590)['toString']('base64'))},'json':!![]};rp(_0x6d687d)[_0x1a10('0x1c')](function(_0x56e021){if(_0x56e021['id']){var _0x174fcd={'messageId':_0x56e021['id']};return _0x36e16b['update'](_0x174fcd);}else{logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),'bandwidth',util[_0x1a10('0x2a')](_0x56e021,{'showHidden':![],'depth':null}));}})[_0x1a10('0x18')](function(_0x34799c){logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x64'),util['inspect'](_0x34799c,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),'bandwidth',_0x1a10('0x3c'));}break;case _0x1a10('0x68'):if(_0x3dd935[_0x1a10('0x5a')]){var _0x5eef7c={};var _0x1d9fc8={'method':'POST','uri':_0x1a10('0x69'),'headers':{'Authorization':_0x1a10('0x6a')+_0x3dd935[_0x1a10('0x5a')],'Content-Type':_0x1a10('0x6b')},'body':{'from':_0x3dd935['phone'],'to':_0x467d62[_0x1a10('0x21')],'text':_0x467d62[_0x1a10('0xc')]},'json':!![]};return rp(_0x1d9fc8)['then'](function(_0x3921f4){if(_0x3921f4[_0x1a10('0x6c')]==0xca){_0x5eef7c[_0x1a10('0x6d')]=_0x3921f4;var _0x396f66={'method':_0x1a10('0x34'),'uri':_0x1a10('0x6e'),'headers':{'Authorization':_0x1a10('0x6a')+_0x3dd935[_0x1a10('0x5a')],'Content-Type':_0x1a10('0x6b')},'body':{'refid':_0x5eef7c['message'][_0x1a10('0x6f')]},'json':!![]};return rp(_0x396f66)[_0x1a10('0x1c')](function(_0x367bc0){_0x5eef7c[_0x1a10('0x70')]=_0x367bc0;var _0x5e8dc3={'messageId':_0x5eef7c['message'][_0x1a10('0x6f')],'read':!![]};return _0x36e16b[_0x1a10('0x26')](_0x5e8dc3);});}else{return logger['error'](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x68'),util[_0x1a10('0x2a')](_0x3921f4,{'showHidden':![],'depth':null}));}})[_0x1a10('0x18')](function(_0x54aa0a){return logger['error'](_0x1a10('0x28'),_0x1a10('0x29'),'intelepeer',util['inspect'](_0x54aa0a,{'showHidden':![],'depth':null}));});}else{return logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x68'),_0x1a10('0x71'));}break;}}})[_0x1a10('0x72')](function(){_0x501792();});}else{_0x501792();}}},'charset':_0x1a10('0x73'),'collate':_0x1a10('0x74')});};
\ No newline at end of file
+var _0x9532=['md5','digest','hex','signature=','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','UTF-8','apiMessageId','bandwidth','/messages','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','refid','intelepeer','Token\x20not\x20received','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./smsMessage.attributes','sms_messages','fti_sms_messages','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','SmsInteraction','update','createdAt','catch','error','out','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','create','body','remote','/status?token=','token','then','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','https://api.skebby.it/API/v1.0/REST/','username','password','sender','login?username=','&password=','GET','split','sms','POST','user_key','total_sent','internal_order_id','smsMethod','deliveryReport','read','inspect','skebby','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','head','clickSend','plivo','/api/sms/messages/','authId','https://api.plivo.com/v1/Account/%s/Message/','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','messageId','csc','crypto','login','text','timestamp','keys','sort','length','apiKey'];(function(_0x15b192,_0x38c235){var _0x396e73=function(_0x4ba480){while(--_0x4ba480){_0x15b192['push'](_0x15b192['shift']());}};_0x396e73(++_0x38c235);}(_0x9532,0x8c));var _0x2953=function(_0x5c0098,_0xe04782){_0x5c0098=_0x5c0098-0x0;var _0x39f39e=_0x9532[_0x5c0098];return _0x39f39e;};'use strict';var _=require(_0x2953('0x0'));var util=require(_0x2953('0x1'));var logger=require(_0x2953('0x2'))(_0x2953('0x3'));var moment=require(_0x2953('0x4'));var BPromise=require(_0x2953('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2953('0x6'));var rimraf=require(_0x2953('0x7'));var config=require('../../config/environment');var attributes=require(_0x2953('0x8'));module['exports']=function(_0x12de4a,_0x451c3c){return _0x12de4a['define']('SmsMessage',attributes,{'tableName':_0x2953('0x9'),'paranoid':![],'indexes':[{'name':'messageId','fields':['messageId']},{'name':_0x2953('0xa'),'fields':['body'],'type':_0x2953('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x14e355,_0x20d976,_0xcc4af4){var _0x4c9cd8=_0x12de4a[_0x2953('0xc')];var _0x433b1d=_0x14e355[_0x2953('0xd')]({'plain':!![]});if(_0x433b1d[_0x2953('0xe')][_0x2953('0xf')]()==='in'||_0x433b1d[_0x2953('0xe')]['toLowerCase']()==='out'&&!_0x433b1d[_0x2953('0x10')]&&!_[_0x2953('0x11')](_0x433b1d['UserId'])){_0x4c9cd8[_0x2953('0x12')]['findOne']({'where':{'id':_0x433b1d['SmsInteractionId']}})['then'](function(_0x4e1e86){if(_0x4e1e86){_0x4e1e86[_0x2953('0x13')]({'lastMsgAt':_0x433b1d[_0x2953('0x14')],'lastMsgDirection':_0x433b1d[_0x2953('0xe')][_0x2953('0xf')]()});}})[_0x2953('0x15')](function(_0x4b9da7){console[_0x2953('0x16')](_0x4b9da7);});}if(_0x433b1d[_0x2953('0xe')]===_0x2953('0x17')&&!_0x433b1d[_0x2953('0x10')]){var _0x25dad2;_0x4c9cd8[_0x2953('0x18')][_0x2953('0x19')]({'where':{'id':_0x433b1d[_0x2953('0x1a')]},'raw':!![]})['then'](function(_0x2b9c97){_0x25dad2=_0x2b9c97;if(_0x25dad2&&_0x25dad2[_0x2953('0x1b')]){switch(_0x25dad2[_0x2953('0x1b')]){case _0x2953('0x1c'):var _0x2f303f=require(_0x2953('0x1c'));if(_0x25dad2[_0x2953('0x1d')]&&_0x25dad2[_0x2953('0x1e')]&&_0x25dad2[_0x2953('0x1f')]){var _0x68d656=new _0x2f303f(_0x25dad2[_0x2953('0x1d')],_0x25dad2[_0x2953('0x1e')]);_0x68d656[_0x2953('0x20')][_0x2953('0x21')]({'body':_0x433b1d[_0x2953('0x22')],'to':_0x433b1d['phone'],'from':_0x25dad2[_0x2953('0x1f')],'statusCallback':_0x25dad2[_0x2953('0x23')]+'/api/sms/messages/'+_0x433b1d['id']+_0x2953('0x24')+_0x25dad2[_0x2953('0x25')]})[_0x2953('0x26')](function(_0x25857e){if(_0x25857e[_0x2953('0x27')]){return _0x14e355[_0x2953('0x13')]({'messageId':_0x25857e[_0x2953('0x27')]});}})[_0x2953('0x15')](function(_0x3a7ae5){logger[_0x2953('0x16')](_0x2953('0x28'),'afterCreate',_0x2953('0x1c'),util['inspect'](_0x3a7ae5,{'showHidden':![],'depth':null}));});}else{logger[_0x2953('0x16')](_0x2953('0x28'),_0x2953('0x29'),_0x2953('0x1c'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case'skebby':var _0x20e1c6=_0x2953('0x2a');if(_0x25dad2[_0x2953('0x2b')]&&_0x25dad2[_0x2953('0x2c')]){var _0x35040d={'recipient':[_0x433b1d[_0x2953('0x1f')]],'message':_0x433b1d[_0x2953('0x22')],'message_type':_0x25dad2['smsMethod']};if(_0x25dad2['smsMethod']&&_0x25dad2['smsMethod']!=='SI'){_0x35040d[_0x2953('0x2d')]=_0x25dad2[_0x2953('0x1f')];}var _0x4575db={'url':_0x20e1c6+_0x2953('0x2e')+_0x25dad2['username']+_0x2953('0x2f')+_0x25dad2[_0x2953('0x2c')],'method':_0x2953('0x30')};rp(_0x4575db)[_0x2953('0x26')](function(_0x4c808b){var _0x4525a2=_0x4c808b[_0x2953('0x31')](';');var _0x2245f8={'user_key':_0x4525a2[0x0],'session_key':_0x4525a2[0x1]};_0x4575db={'url':_0x20e1c6+_0x2953('0x32'),'method':_0x2953('0x33'),'headers':{'user_key':_0x2245f8[_0x2953('0x34')],'Session_key':_0x2245f8['session_key']},'json':!![],'body':_0x35040d};return rp(_0x4575db);})[_0x2953('0x26')](function(_0x2fb133){if(_0x2fb133[_0x2953('0x35')]>=0x1){var _0x216f01={'messageId':_0x2fb133[_0x2953('0x36')]};if(_0x25dad2[_0x2953('0x37')]!=='GP'||!_0x25dad2[_0x2953('0x38')]){_0x216f01[_0x2953('0x39')]=!![];}return _0x14e355[_0x2953('0x13')](_0x216f01);}else{return logger['error'](_0x2953('0x28'),_0x2953('0x29'),'skebby',util[_0x2953('0x3a')](_0x2fb133,{'showHidden':![],'depth':null}));}})[_0x2953('0x15')](function(_0x1b35e5){return logger['error'](_0x2953('0x28'),_0x2953('0x29'),_0x2953('0x3b'),util[_0x2953('0x3a')](_0x1b35e5,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x2953('0x28'),_0x2953('0x29'),_0x2953('0x3b'),_0x2953('0x3c'));}break;case _0x2953('0x3d'):if(_0x25dad2[_0x2953('0x1e')]){var _0x48b447={'recipient':_0x433b1d[_0x2953('0x1f')],'message':_0x433b1d[_0x2953('0x22')],'sender':_0x25dad2[_0x2953('0x3e')]||_0x25dad2[_0x2953('0x1f')],'authorization':_0x25dad2['authToken']};var _0x20d976={'method':_0x2953('0x33'),'uri':_0x2953('0x3f'),'body':_0x48b447,'json':!![]};rp(_0x20d976)[_0x2953('0x26')](function(_0x31c61f){var _0x40f2d3={'messageId':_0x31c61f['requestid']};if(!_0x25dad2[_0x2953('0x38')]){_0x40f2d3[_0x2953('0x39')]=!![];}return _0x14e355[_0x2953('0x13')](_0x40f2d3);})['catch'](function(_0x4f658c){logger['error'](_0x2953('0x28'),_0x2953('0x29'),_0x2953('0x3d'),util['inspect'](_0x4f658c,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x2953('0x28'),_0x2953('0x29'),_0x2953('0x3d'),_0x2953('0x40'));}break;case _0x2953('0x41'):if(_0x25dad2['username']&&_0x25dad2[_0x2953('0x2c')]){var _0x48b447={'messages':[{'source':_0x2953('0x42'),'to':_0x433b1d[_0x2953('0x1f')],'body':_0x433b1d[_0x2953('0x22')],'from':_0x25dad2[_0x2953('0x3e')]||_0x25dad2[_0x2953('0x1f')]}]};var _0x4d2a2e=util[_0x2953('0x43')](_0x2953('0x44'),_0x25dad2['username'],_0x25dad2[_0x2953('0x2c')]);var _0x20d976={'method':_0x2953('0x33'),'uri':_0x2953('0x45'),'body':_0x48b447,'headers':{'Authorization':util['format'](_0x2953('0x46'),new Buffer(_0x4d2a2e)[_0x2953('0x47')](_0x2953('0x48')))},'json':!![]};rp(_0x20d976)[_0x2953('0x26')](function(_0x430f37){if(_0x430f37[_0x2953('0x49')]>=0xc8&&_0x430f37[_0x2953('0x49')]<=0xce){if(_0x430f37[_0x2953('0x4a')]&&_0x430f37[_0x2953('0x4a')][_0x2953('0x4b')]>0x0){var _0x49f79c=_[_0x2953('0x4c')](_0x430f37['data']['messages']);var _0x365e32={'messageId':_0x49f79c['message_id']};if(!_0x25dad2[_0x2953('0x38')]){_0x365e32[_0x2953('0x39')]=!![];}return _0x14e355[_0x2953('0x13')](_0x365e32);}else{logger[_0x2953('0x16')](_0x2953('0x28'),_0x2953('0x29'),_0x2953('0x4d'),util['inspect'](_0x430f37,{'showHidden':![],'depth':null}));}}else{logger[_0x2953('0x16')](_0x2953('0x28'),_0x2953('0x29'),_0x2953('0x4d'),util[_0x2953('0x3a')](_0x430f37,{'showHidden':![],'depth':null}));}})[_0x2953('0x15')](function(_0x331961){logger[_0x2953('0x16')](_0x2953('0x28'),_0x2953('0x29'),_0x2953('0x4d'),util[_0x2953('0x3a')](_0x331961,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2953('0x29'),_0x2953('0x4d'),_0x2953('0x3c'));}break;case _0x2953('0x4e'):if(_0x25dad2['authId']&&_0x25dad2['authToken']){var _0x48b447={'dst':_0x433b1d['phone'],'text':_0x433b1d[_0x2953('0x22')],'src':_0x25dad2[_0x2953('0x3e')]||_0x25dad2['phone'],'url':_0x25dad2[_0x2953('0x23')]+_0x2953('0x4f')+_0x433b1d['id']+_0x2953('0x24')+_0x25dad2['token']};var _0x4d2a2e=util[_0x2953('0x43')](_0x2953('0x44'),_0x25dad2[_0x2953('0x50')],_0x25dad2[_0x2953('0x1e')]);var _0x20d976={'method':_0x2953('0x33'),'uri':util[_0x2953('0x43')](_0x2953('0x51'),_0x25dad2[_0x2953('0x50')]),'body':_0x48b447,'headers':{'Authorization':util[_0x2953('0x43')](_0x2953('0x46'),new Buffer(_0x4d2a2e)[_0x2953('0x47')]('base64'))},'json':!![]};rp(_0x20d976)['then'](function(_0x226567){var _0x5db7a8={'messageId':_0x226567['message_uuid'][0x0]};return _0x14e355['update'](_0x5db7a8);})['catch'](function(_0x2034b8){logger[_0x2953('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2953('0x29'),_0x2953('0x4e'),util[_0x2953('0x3a')](_0x2034b8,{'showHidden':![],'depth':null}));});}else{logger[_0x2953('0x16')](_0x2953('0x28'),_0x2953('0x29'),_0x2953('0x4e'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case _0x2953('0x52'):if(_0x25dad2['username']&&_0x25dad2[_0x2953('0x2c')]){if(_0x25dad2[_0x2953('0x53')]){var _0x5b8966={'method':_0x2953('0x33'),'uri':_0x25dad2[_0x2953('0x53')]+_0x2953('0x54'),'body':{'username':_0x25dad2[_0x2953('0x2b')],'password':_0x25dad2[_0x2953('0x2c')]},'json':!![]};return rp(_0x5b8966)[_0x2953('0x26')](function(_0xfe59df){var _0x219e37={'method':_0x2953('0x33'),'uri':_0x25dad2[_0x2953('0x53')]+_0x2953('0x55'),'body':{'messages':[{'from':_0x25dad2[_0x2953('0x1f')],'destinations':[{'to':_0x433b1d[_0x2953('0x1f')]}],'text':_0x433b1d[_0x2953('0x22')],'notifyUrl':_0x25dad2['remote']+_0x2953('0x4f')+_0x433b1d['id']+_0x2953('0x24')+_0x25dad2[_0x2953('0x25')],'notifyContentType':_0x2953('0x56'),'callbackData':_0x25dad2[_0x2953('0x1f')]+';'+_0x433b1d[_0x2953('0x22')]}]},'headers':{'Authorization':_0x2953('0x57')+_0xfe59df['token']},'json':!![]};return rp(_0x219e37)[_0x2953('0x26')](function(_0x22a248){if(_0x22a248[_0x2953('0x20')]){var _0x32a59d={'messageId':_0x22a248[_0x2953('0x20')][0x0][_0x2953('0x58')]};if(!_0x25dad2[_0x2953('0x38')]){_0x32a59d[_0x2953('0x39')]=!![];}return _0x14e355[_0x2953('0x13')](_0x32a59d);}else{return logger[_0x2953('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2953('0x29'),_0x2953('0x52'),util['inspect'](_0x22a248,{'showHidden':![],'depth':null}));}});})[_0x2953('0x15')](function(_0x5c80a8){return logger[_0x2953('0x16')](_0x2953('0x28'),_0x2953('0x29'),_0x2953('0x52'),util[_0x2953('0x3a')](_0x5c80a8,{'showHidden':![],'depth':null}));});}else{logger[_0x2953('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x2953('0x52'),'Missing\x20parameters:\x20base_url');}}else{logger[_0x2953('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2953('0x29'),_0x2953('0x52'),_0x2953('0x3c'));}break;case _0x2953('0x59'):var _0x5889c8=require(_0x2953('0x5a'));if(_0x25dad2['apiKey']){var _0x1fbcca={};_0x1fbcca[_0x2953('0x5b')]=_0x25dad2['username'];_0x1fbcca[_0x2953('0x1f')]=_0x433b1d[_0x2953('0x1f')];_0x1fbcca[_0x2953('0x2d')]=_0x25dad2['phone'];_0x1fbcca[_0x2953('0x5c')]=_0x433b1d['body'];_0x1fbcca[_0x2953('0x5d')]=+new Date();var _0x41be25='';var _0xd6399e='';var _0x313520=Object[_0x2953('0x5e')](_0x1fbcca);_0x313520[_0x2953('0x5f')]();for(var _0x5e8aab=0x0;_0x5e8aab<_0x313520[_0x2953('0x60')];_0x5e8aab++){if(_0x41be25!=''){_0x41be25+='&';}_0x41be25+=_0x313520[_0x5e8aab]+'='+encodeURIComponent(_0x1fbcca[_0x313520[_0x5e8aab]]);_0xd6399e+=_0x1fbcca[_0x313520[_0x5e8aab]];}_0xd6399e+=_0x25dad2[_0x2953('0x61')];_0xd6399e=_0x5889c8['createHash'](_0x2953('0x62'))[_0x2953('0x13')](_0xd6399e)[_0x2953('0x63')](_0x2953('0x64'));if(_0x41be25!==''){_0x41be25+='&';}_0x41be25+=_0x2953('0x65')+_0xd6399e;var _0x4575db={'method':_0x2953('0x30'),'uri':_0x25dad2[_0x2953('0x53')]+_0x2953('0x66')+_0x41be25,'json':!![]};return rp(_0x4575db)[_0x2953('0x26')](function(_0x317fc9){var _0x3eb4f5=Object[_0x2953('0x5e')](_0x317fc9);if(_0x317fc9[_0x3eb4f5[0x0]][_0x2953('0x16')]&&parseInt(_0x317fc9[_0x3eb4f5[0x0]][_0x2953('0x16')])===0x0){var _0x5793d4={'messageId':_0x317fc9[_0x3eb4f5[0x0]][_0x2953('0x67')]};if(!_0x25dad2[_0x2953('0x38')]){_0x5793d4[_0x2953('0x39')]=!![];}return _0x14e355[_0x2953('0x13')](_0x5793d4);}else{return logger[_0x2953('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x2953('0x59'),util[_0x2953('0x3a')](_0x317fc9[_0x2953('0x16')],{'showHidden':![],'depth':null}));}})[_0x2953('0x15')](function(_0x462c75){return logger[_0x2953('0x16')](_0x2953('0x28'),'afterCreate',_0x2953('0x59'),util['inspect'](_0x462c75,{'showHidden':![],'depth':null}));});}else{logger[_0x2953('0x16')](_0x2953('0x28'),_0x2953('0x29'),_0x2953('0x59'),_0x2953('0x68'));}break;case _0x2953('0x69'):if(_0x25dad2['apiKey']){var _0x8cfc1e={'method':_0x2953('0x33'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x25dad2[_0x2953('0x61')]},'body':{'content':_0x433b1d[_0x2953('0x22')],'to':[_0x433b1d[_0x2953('0x1f')]],'from':_0x25dad2[_0x2953('0x1f')],'binary':![],'clientMessageId':'uuid','charset':_0x2953('0x6a')},'json':!![]};rp(_0x8cfc1e)[_0x2953('0x26')](function(_0x527c13){if(!_0x527c13[_0x2953('0x16')]){var _0x3f82c2={'messageId':_0x527c13[_0x2953('0x20')][0x0][_0x2953('0x6b')]};if(!_0x25dad2['deliveryReport']){_0x3f82c2[_0x2953('0x39')]=!![];}return _0x14e355[_0x2953('0x13')](_0x3f82c2);}else{return logger[_0x2953('0x16')](_0x2953('0x28'),'afterCreate','clickatell',util[_0x2953('0x3a')](_0x527c13[_0x2953('0x16')],{'showHidden':![],'depth':null}));}})[_0x2953('0x15')](function(_0xaf9050){return logger['error'](_0x2953('0x28'),'afterCreate',_0x2953('0x69'),util[_0x2953('0x3a')](_0xaf9050,{'showHidden':![],'depth':null}));});}else{logger[_0x2953('0x16')](_0x2953('0x28'),_0x2953('0x29'),_0x2953('0x69'),_0x2953('0x68'));}break;case _0x2953('0x6c'):if(_0x25dad2[_0x2953('0x2b')]&&_0x25dad2[_0x2953('0x2c')]){var _0x4d2a2e=util[_0x2953('0x43')](_0x2953('0x44'),_0x25dad2['username'],_0x25dad2[_0x2953('0x2c')]);var _0x20d976={'method':'POST','uri':'https://messaging.bandwidth.com/api/v2/users/'+_0x25dad2['accountId']+_0x2953('0x6d'),'body':{'to':[_0x433b1d[_0x2953('0x1f')]],'text':_0x433b1d['body'],'from':_0x25dad2[_0x2953('0x1f')],'applicationId':_0x25dad2['applicationId']},'headers':{'Authorization':util[_0x2953('0x43')](_0x2953('0x46'),new Buffer(_0x4d2a2e)[_0x2953('0x47')](_0x2953('0x48')))},'json':!![]};rp(_0x20d976)[_0x2953('0x26')](function(_0x407c9e){if(_0x407c9e['id']){var _0x28bef4={'messageId':_0x407c9e['id']};return _0x14e355[_0x2953('0x13')](_0x28bef4);}else{logger[_0x2953('0x16')](_0x2953('0x28'),'afterCreate',_0x2953('0x6c'),util[_0x2953('0x3a')](_0x407c9e,{'showHidden':![],'depth':null}));}})[_0x2953('0x15')](function(_0x172c63){logger[_0x2953('0x16')](_0x2953('0x28'),_0x2953('0x29'),_0x2953('0x6c'),util[_0x2953('0x3a')](_0x172c63,{'showHidden':![],'depth':null}));});}else{logger[_0x2953('0x16')](_0x2953('0x28'),'afterCreate',_0x2953('0x6c'),'Missing\x20parameters:\x20username,\x20password');}break;case'intelepeer':if(_0x25dad2[_0x2953('0x61')]){var _0x5a0633={};var _0x4575db={'method':_0x2953('0x33'),'uri':_0x2953('0x6e'),'headers':{'Authorization':_0x2953('0x6f')+_0x25dad2[_0x2953('0x61')],'Content-Type':_0x2953('0x56')},'body':{'from':_0x25dad2[_0x2953('0x1f')],'to':_0x433b1d[_0x2953('0x1f')],'text':_0x433b1d[_0x2953('0x22')]},'json':!![]};return rp(_0x4575db)['then'](function(_0x484ee0){if(_0x484ee0[_0x2953('0x70')]==0xca){_0x5a0633[_0x2953('0x71')]=_0x484ee0;var _0x215d8b={'method':_0x2953('0x33'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0x2953('0x6f')+_0x25dad2['apiKey'],'Content-Type':_0x2953('0x56')},'body':{'refid':_0x5a0633[_0x2953('0x71')][_0x2953('0x72')]},'json':!![]};return rp(_0x215d8b)[_0x2953('0x26')](function(_0x4186c4){_0x5a0633['status']=_0x4186c4;var _0x5ea250={'messageId':_0x5a0633[_0x2953('0x71')]['refid'],'read':!![]};return _0x14e355[_0x2953('0x13')](_0x5ea250);});}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2953('0x29'),_0x2953('0x73'),util[_0x2953('0x3a')](_0x484ee0,{'showHidden':![],'depth':null}));}})[_0x2953('0x15')](function(_0x334150){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2953('0x29'),_0x2953('0x73'),util[_0x2953('0x3a')](_0x334150,{'showHidden':![],'depth':null}));});}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x2953('0x73'),_0x2953('0x74'));}break;}}})['finally'](function(){_0xcc4af4();});}else{_0xcc4af4();}}},'charset':_0x2953('0x75'),'collate':_0x2953('0x76')});};
\ No newline at end of file
index 6b325a6..c4e3fb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8118=['SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateSmsMessage','SmsMessage','create','body','options','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','defaults','socket.io-emitter','redis','./smsMessage.socket','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xb1496a,_0x190543){var _0x301916=function(_0x4e17ab){while(--_0x4e17ab){_0xb1496a['push'](_0xb1496a['shift']());}};_0x301916(++_0x190543);}(_0x8118,0x10b));var _0x8811=function(_0x222c9f,_0x515cd0){_0x222c9f=_0x222c9f-0x0;var _0x3e74b5=_0x8118[_0x222c9f];return _0x3e74b5;};'use strict';var _=require(_0x8811('0x0'));var util=require(_0x8811('0x1'));var moment=require(_0x8811('0x2'));var BPromise=require(_0x8811('0x3'));var rs=require(_0x8811('0x4'));var fs=require('fs');var Redis=require(_0x8811('0x5'));var db=require(_0x8811('0x6'))['db'];var utils=require(_0x8811('0x7'));var logger=require('../../config/logger')(_0x8811('0x8'));var config=require(_0x8811('0x9'));var jayson=require(_0x8811('0xa'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x8811('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x8811('0xc'))(new Redis(config[_0x8811('0xd')]));require(_0x8811('0xe'))['register'](socket);function respondWithRpcPromise(_0x5cd4f6,_0x58da41,_0x26f706){return new BPromise(function(_0x57c546,_0x238407){return client[_0x8811('0xf')](_0x5cd4f6,_0x26f706)[_0x8811('0x10')](function(_0xd98f8f){logger[_0x8811('0x11')](_0x8811('0x12'),_0x58da41,_0x8811('0x13'));logger[_0x8811('0x14')](_0x8811('0x15'),_0x58da41,_0x8811('0x13'),JSON['stringify'](_0xd98f8f));if(_0xd98f8f[_0x8811('0x16')]){if(_0xd98f8f[_0x8811('0x16')][_0x8811('0x17')]===0x1f4){logger['error'](_0x8811('0x12'),_0x58da41,_0xd98f8f['error']['message']);return _0x238407(_0xd98f8f[_0x8811('0x16')]['message']);}logger['error'](_0x8811('0x12'),_0x58da41,_0xd98f8f[_0x8811('0x16')][_0x8811('0x18')]);return _0x57c546(_0xd98f8f[_0x8811('0x16')]['message']);}else{logger[_0x8811('0x11')](_0x8811('0x12'),_0x58da41,'request\x20sent');_0x57c546(_0xd98f8f[_0x8811('0x19')][_0x8811('0x18')]);}})['catch'](function(_0x3fe45f){logger[_0x8811('0x16')](_0x8811('0x12'),_0x58da41,_0x3fe45f);_0x238407(_0x3fe45f);});});}exports[_0x8811('0x1a')]=function(_0x296620){var _0x5e8047=this;return new Promise(function(_0x593af5,_0x5c5769){return db[_0x8811('0x1b')][_0x8811('0x1c')](_0x296620[_0x8811('0x1d')],{'raw':_0x296620[_0x8811('0x1e')]?_0x296620[_0x8811('0x1e')]['raw']===undefined?!![]:![]:!![]})[_0x8811('0x10')](function(_0x4a0bbc){logger[_0x8811('0x11')](_0x8811('0x1a'),_0x296620);logger[_0x8811('0x14')](_0x8811('0x1a'),_0x296620,JSON['stringify'](_0x4a0bbc));_0x593af5(_0x4a0bbc);})[_0x8811('0x1f')](function(_0x15dc91){logger[_0x8811('0x16')](_0x8811('0x1a'),_0x15dc91[_0x8811('0x18')],_0x296620);_0x5c5769(_0x5e8047[_0x8811('0x16')](0x1f4,_0x15dc91[_0x8811('0x18')]));});});};
\ No newline at end of file
+var _0x78e0=['request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','message','error','SmsMessage,\x20%s,\x20%s','result','catch','CreateSmsMessage','body','options','raw','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','./smsMessage.socket','request','info'];(function(_0x26df9a,_0x5add36){var _0x371fa4=function(_0x1d0113){while(--_0x1d0113){_0x26df9a['push'](_0x26df9a['shift']());}};_0x371fa4(++_0x5add36);}(_0x78e0,0x1a3));var _0x078e=function(_0x48eb11,_0x2a697c){_0x48eb11=_0x48eb11-0x0;var _0x2b1a9c=_0x78e0[_0x48eb11];return _0x2b1a9c;};'use strict';var _=require(_0x078e('0x0'));var util=require('util');var moment=require(_0x078e('0x1'));var BPromise=require(_0x078e('0x2'));var rs=require(_0x078e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x078e('0x4'))['db'];var utils=require(_0x078e('0x5'));var logger=require(_0x078e('0x6'))(_0x078e('0x7'));var config=require('../../config/environment');var jayson=require(_0x078e('0x8'));var client=jayson[_0x078e('0x9')][_0x078e('0xa')]({'port':0x232a});config[_0x078e('0xb')]=_['defaults'](config[_0x078e('0xb')],{'host':_0x078e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x078e('0xd'))['register'](socket);function respondWithRpcPromise(_0xce7fc4,_0x16b452,_0x3c8c24){return new BPromise(function(_0x22cd66,_0x3516a0){return client[_0x078e('0xe')](_0xce7fc4,_0x3c8c24)['then'](function(_0x5ef571){logger[_0x078e('0xf')]('SmsMessage,\x20%s,\x20%s',_0x16b452,_0x078e('0x10'));logger[_0x078e('0x11')](_0x078e('0x12'),_0x16b452,_0x078e('0x10'),JSON[_0x078e('0x13')](_0x5ef571));if(_0x5ef571['error']){if(_0x5ef571['error']['code']===0x1f4){logger['error']('SmsMessage,\x20%s,\x20%s',_0x16b452,_0x5ef571['error'][_0x078e('0x14')]);return _0x3516a0(_0x5ef571[_0x078e('0x15')][_0x078e('0x14')]);}logger[_0x078e('0x15')](_0x078e('0x16'),_0x16b452,_0x5ef571['error'][_0x078e('0x14')]);return _0x22cd66(_0x5ef571[_0x078e('0x15')][_0x078e('0x14')]);}else{logger['info'](_0x078e('0x16'),_0x16b452,_0x078e('0x10'));_0x22cd66(_0x5ef571[_0x078e('0x17')][_0x078e('0x14')]);}})[_0x078e('0x18')](function(_0x4e65f6){logger['error'](_0x078e('0x16'),_0x16b452,_0x4e65f6);_0x3516a0(_0x4e65f6);});});}exports[_0x078e('0x19')]=function(_0x188601){var _0x270d8c=this;return new Promise(function(_0x20b934,_0x5f0219){return db['SmsMessage']['create'](_0x188601[_0x078e('0x1a')],{'raw':_0x188601[_0x078e('0x1b')]?_0x188601[_0x078e('0x1b')][_0x078e('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x4db471){logger[_0x078e('0xf')]('CreateSmsMessage',_0x188601);logger[_0x078e('0x11')]('CreateSmsMessage',_0x188601,JSON[_0x078e('0x13')](_0x4db471));_0x20b934(_0x4db471);})[_0x078e('0x18')](function(_0x4d746e){logger[_0x078e('0x15')](_0x078e('0x19'),_0x4d746e[_0x078e('0x14')],_0x188601);_0x5f0219(_0x270d8c[_0x078e('0x15')](0x1f4,_0x4d746e[_0x078e('0x14')]));});});};
\ No newline at end of file
index b5b6139..f462a93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0e3=['smsMessage:','./smsMessage.events','save','remove','update','emit','register','length'];(function(_0x1fb740,_0x3e5483){var _0x65aa08=function(_0xf8c988){while(--_0xf8c988){_0x1fb740['push'](_0x1fb740['shift']());}};_0x65aa08(++_0x3e5483);}(_0xf0e3,0xe9));var _0x3f0e=function(_0x59cc87,_0x3d15ef){_0x59cc87=_0x59cc87-0x0;var _0x1adede=_0xf0e3[_0x59cc87];return _0x1adede;};'use strict';var SmsMessageEvents=require(_0x3f0e('0x0'));var events=[_0x3f0e('0x1'),_0x3f0e('0x2'),_0x3f0e('0x3')];function createListener(_0x4c2011,_0x5459d0){return function(_0x267ad5){_0x5459d0[_0x3f0e('0x4')](_0x4c2011,_0x267ad5);};}function removeListener(_0x5c9d21,_0x165cd2){return function(){SmsMessageEvents['removeListener'](_0x5c9d21,_0x165cd2);};}exports[_0x3f0e('0x5')]=function(_0x264a53){for(var _0x558f9d=0x0,_0x4b3787=events[_0x3f0e('0x6')];_0x558f9d<_0x4b3787;_0x558f9d++){var _0x5738ad=events[_0x558f9d];var _0x5975c5=createListener(_0x3f0e('0x7')+_0x5738ad,_0x264a53);SmsMessageEvents['on'](_0x5738ad,_0x5975c5);}};
\ No newline at end of file
+var _0x43f3=['update','emit','removeListener','register','smsMessage:','./smsMessage.events'];(function(_0x3cf053,_0x7a9947){var _0x3b55a0=function(_0x2a99cc){while(--_0x2a99cc){_0x3cf053['push'](_0x3cf053['shift']());}};_0x3b55a0(++_0x7a9947);}(_0x43f3,0x119));var _0x343f=function(_0x3bab09,_0x217c29){_0x3bab09=_0x3bab09-0x0;var _0x164376=_0x43f3[_0x3bab09];return _0x164376;};'use strict';var SmsMessageEvents=require(_0x343f('0x0'));var events=['save','remove',_0x343f('0x1')];function createListener(_0x1c263c,_0xccf0ea){return function(_0x1e32d0){_0xccf0ea[_0x343f('0x2')](_0x1c263c,_0x1e32d0);};}function removeListener(_0x280141,_0x2d4e64){return function(){SmsMessageEvents[_0x343f('0x3')](_0x280141,_0x2d4e64);};}exports[_0x343f('0x4')]=function(_0x507e52){for(var _0x270879=0x0,_0xe47c28=events['length'];_0x270879<_0xe47c28;_0x270879++){var _0x2a7b8a=events[_0x270879];var _0x3064e3=createListener(_0x343f('0x5')+_0x2a7b8a,_0x507e52);SmsMessageEvents['on'](_0x2a7b8a,_0x3064e3);}};
\ No newline at end of file
index 0120a50..ed23d19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9d8=['update','delete','destroy','removeTeams','removeAgents','exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','describe','/:id','getTeams','/:id/users','getAgents','post','/:id/teams','addTeams','put'];(function(_0x4c99d0,_0x1febe1){var _0x5e541f=function(_0x6a83e5){while(--_0x6a83e5){_0x4c99d0['push'](_0x4c99d0['shift']());}};_0x5e541f(++_0x1febe1);}(_0xb9d8,0x119));var _0x8b9d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb9d8[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x8b9d('0x0'));var util=require('util');var path=require(_0x8b9d('0x1'));var timeout=require('connect-timeout');var express=require(_0x8b9d('0x2'));var router=express['Router']();var fs_extra=require(_0x8b9d('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x8b9d('0x4'));var config=require(_0x8b9d('0x5'));var controller=require(_0x8b9d('0x6'));router[_0x8b9d('0x7')]('/',auth[_0x8b9d('0x8')](),controller[_0x8b9d('0x9')]);router[_0x8b9d('0x7')]('/describe',auth[_0x8b9d('0x8')](),controller[_0x8b9d('0xa')]);router['get'](_0x8b9d('0xb'),auth[_0x8b9d('0x8')](),controller['show']);router[_0x8b9d('0x7')]('/:id/members',auth[_0x8b9d('0x8')](),controller['getMembers']);router[_0x8b9d('0x7')]('/:id/teams',auth['isAuthenticated'](),controller[_0x8b9d('0xc')]);router[_0x8b9d('0x7')](_0x8b9d('0xd'),auth[_0x8b9d('0x8')](),controller[_0x8b9d('0xe')]);router[_0x8b9d('0xf')]('/',auth[_0x8b9d('0x8')](),controller['create']);router[_0x8b9d('0xf')](_0x8b9d('0x10'),auth[_0x8b9d('0x8')](),controller[_0x8b9d('0x11')]);router[_0x8b9d('0xf')](_0x8b9d('0xd'),auth[_0x8b9d('0x8')](),controller['addAgents']);router[_0x8b9d('0x12')](_0x8b9d('0xb'),auth[_0x8b9d('0x8')](),controller[_0x8b9d('0x13')]);router[_0x8b9d('0x14')](_0x8b9d('0xb'),auth[_0x8b9d('0x8')](),controller[_0x8b9d('0x15')]);router['delete']('/:id/teams',auth[_0x8b9d('0x8')](),controller[_0x8b9d('0x16')]);router[_0x8b9d('0x14')](_0x8b9d('0xd'),auth[_0x8b9d('0x8')](),controller[_0x8b9d('0x17')]);module[_0x8b9d('0x18')]=router;
\ No newline at end of file
+var _0xdb9f=['put','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','create','addTeams','post','addAgents'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdb9f,0xf6));var _0xfdb9=function(_0x1d211b,_0x475f3b){_0x1d211b=_0x1d211b-0x0;var _0x47c88b=_0xdb9f[_0x1d211b];return _0x47c88b;};'use strict';var multer=require(_0xfdb9('0x0'));var util=require(_0xfdb9('0x1'));var path=require(_0xfdb9('0x2'));var timeout=require(_0xfdb9('0x3'));var express=require(_0xfdb9('0x4'));var router=express['Router']();var fs_extra=require(_0xfdb9('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xfdb9('0x6'));var config=require(_0xfdb9('0x7'));var controller=require('./smsQueue.controller');router[_0xfdb9('0x8')]('/',auth[_0xfdb9('0x9')](),controller[_0xfdb9('0xa')]);router[_0xfdb9('0x8')](_0xfdb9('0xb'),auth[_0xfdb9('0x9')](),controller[_0xfdb9('0xc')]);router['get'](_0xfdb9('0xd'),auth[_0xfdb9('0x9')](),controller[_0xfdb9('0xe')]);router['get'](_0xfdb9('0xf'),auth[_0xfdb9('0x9')](),controller[_0xfdb9('0x10')]);router[_0xfdb9('0x8')](_0xfdb9('0x11'),auth['isAuthenticated'](),controller['getTeams']);router[_0xfdb9('0x8')](_0xfdb9('0x12'),auth[_0xfdb9('0x9')](),controller[_0xfdb9('0x13')]);router['post']('/',auth[_0xfdb9('0x9')](),controller[_0xfdb9('0x14')]);router['post'](_0xfdb9('0x11'),auth['isAuthenticated'](),controller[_0xfdb9('0x15')]);router[_0xfdb9('0x16')]('/:id/users',auth[_0xfdb9('0x9')](),controller[_0xfdb9('0x17')]);router[_0xfdb9('0x18')](_0xfdb9('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xfdb9('0x19')](_0xfdb9('0xd'),auth[_0xfdb9('0x9')](),controller[_0xfdb9('0x1a')]);router['delete'](_0xfdb9('0x11'),auth['isAuthenticated'](),controller[_0xfdb9('0x1b')]);router[_0xfdb9('0x19')](_0xfdb9('0x12'),auth[_0xfdb9('0x9')](),controller[_0xfdb9('0x1c')]);module[_0xfdb9('0x1d')]=router;
\ No newline at end of file
index 9aee87f..a383844 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ffc=['sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2ffc,0x1cb));var _0xc2ff=function(_0x4420da,_0x4c65fc){_0x4420da=_0x4420da-0x0;var _0x51f9c3=_0x2ffc[_0x4420da];return _0x51f9c3;};'use strict';var Sequelize=require(_0xc2ff('0x0'));module[_0xc2ff('0x1')]={'name':{'type':Sequelize[_0xc2ff('0x2')],'unique':_0xc2ff('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xc2ff('0x2')]},'timeout':{'type':Sequelize[_0xc2ff('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc2ff('0x5')](_0xc2ff('0x6'),_0xc2ff('0x7'),_0xc2ff('0x8'))}};
\ No newline at end of file
+var _0xe107=['STRING','name','INTEGER','ENUM','rrmemory','beepall','sequelize','exports'];(function(_0x3c7928,_0x558eaf){var _0x61a680=function(_0x118b55){while(--_0x118b55){_0x3c7928['push'](_0x3c7928['shift']());}};_0x61a680(++_0x558eaf);}(_0xe107,0x1ae));var _0x7e10=function(_0xb9058,_0x4b214a){_0xb9058=_0xb9058-0x0;var _0x596c74=_0xe107[_0xb9058];return _0x596c74;};'use strict';var Sequelize=require(_0x7e10('0x0'));module[_0x7e10('0x1')]={'name':{'type':Sequelize[_0x7e10('0x2')],'unique':_0x7e10('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7e10('0x2')]},'timeout':{'type':Sequelize[_0x7e10('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7e10('0x5')](_0x7e10('0x6'),_0x7e10('0x7'),'roundrobin')}};
\ No newline at end of file
index 19ac5bc..04ca6b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf12f=['../../config/logger','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','SmsQueues','UserProfileResource','error','name','send','index','map','SmsQueue','rawAttributes','fieldName','type','model','query','attributes','intersection','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','findAll','rows','catch','show','params','keys','includeAll','include','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserSmsQueue','hasOwnProperty','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','SIP','getTeams','Team','Agents','online','transaction','addTeams','emit','ids','select','field','tq.TeamId','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','removeTeams','isEmpty','forEach','userSmsQueue:remove','addAgents','omit','spread','userSmsQueue:save','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0xf12f,0x104));var _0xff12=function(_0x23e90a,_0x4d1d4b){_0x23e90a=_0x23e90a-0x0;var _0x196d48=_0xf12f[_0x23e90a];return _0x196d48;};'use strict';var emlformat=require(_0xff12('0x0'));var rimraf=require(_0xff12('0x1'));var zipdir=require(_0xff12('0x2'));var jsonpatch=require(_0xff12('0x3'));var rp=require('request-promise');var moment=require(_0xff12('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xff12('0x5'));var util=require(_0xff12('0x6'));var path=require(_0xff12('0x7'));var sox=require(_0xff12('0x8'));var csv=require(_0xff12('0x9'));var ejs=require(_0xff12('0xa'));var fs=require('fs');var fs_extra=require(_0xff12('0xb'));var _=require('lodash');var squel=require(_0xff12('0xc'));var crypto=require('crypto');var jsforce=require(_0xff12('0xd'));var deskjs=require(_0xff12('0xe'));var toCsv=require(_0xff12('0x9'));var querystring=require(_0xff12('0xf'));var Papa=require(_0xff12('0x10'));var Redis=require('ioredis');var authService=require(_0xff12('0x11'));var qs=require(_0xff12('0x12'));var as=require(_0xff12('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xff12('0x14'))('api');var utils=require(_0xff12('0x15'));var config=require(_0xff12('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xff12('0x17')]=_[_0xff12('0x18')](config[_0xff12('0x17')],{'host':_0xff12('0x19'),'port':0x18eb});var socket=require(_0xff12('0x1a'))(new Redis(config[_0xff12('0x17')]));require(_0xff12('0x1b'))[_0xff12('0x1c')](socket);function respondWithStatusCode(_0x59c9a1,_0x9ea49d){_0x9ea49d=_0x9ea49d||0xcc;return function(_0x391cba){if(_0x391cba){return _0x59c9a1['sendStatus'](_0x9ea49d);}return _0x59c9a1['status'](_0x9ea49d)[_0xff12('0x1d')]();};}function respondWithResult(_0xa0e4d0,_0x47a6c3){_0x47a6c3=_0x47a6c3||0xc8;return function(_0x3733b0){if(_0x3733b0){return _0xa0e4d0[_0xff12('0x1e')](_0x47a6c3)[_0xff12('0x1f')](_0x3733b0);}};}function respondWithFilteredResult(_0x240836,_0x1368c1){return function(_0x3b346f){if(_0x3b346f){var _0x282aa0=typeof _0x1368c1[_0xff12('0x20')]===_0xff12('0x21')&&typeof _0x1368c1[_0xff12('0x22')]===_0xff12('0x21');var _0x543c55=_0x3b346f[_0xff12('0x23')];var _0x4a5806=_0x282aa0?0x0:_0x1368c1[_0xff12('0x20')];var _0x459c93=_0x282aa0?_0x3b346f[_0xff12('0x23')]:_0x1368c1['offset']+_0x1368c1[_0xff12('0x22')];var _0xa285a8;if(_0x459c93>=_0x543c55){_0x459c93=_0x543c55;_0xa285a8=0xc8;}else{_0xa285a8=0xce;}_0x240836[_0xff12('0x1e')](_0xa285a8);return _0x240836['set'](_0xff12('0x24'),_0x4a5806+'-'+_0x459c93+'/'+_0x543c55)['json'](_0x3b346f);}return null;};}function patchUpdates(_0x29cc04){return function(_0x18cb9b){try{jsonpatch[_0xff12('0x25')](_0x18cb9b,_0x29cc04,!![]);}catch(_0x517a85){return BPromise[_0xff12('0x26')](_0x517a85);}return _0x18cb9b[_0xff12('0x27')]();};}function saveUpdates(_0xcbdd41,_0xabcfa){return function(_0x1fa950){if(_0x1fa950){return _0x1fa950[_0xff12('0x28')](_0xcbdd41)[_0xff12('0x29')](function(_0x55bdc3){return _0x55bdc3;});}return null;};}function removeEntity(_0x294f73,_0x3989e7){return function(_0x1d1d59){if(_0x1d1d59){return _0x1d1d59[_0xff12('0x2a')]()[_0xff12('0x29')](function(){var _0x11ce4e=_0x1d1d59[_0xff12('0x2b')]({'plain':!![]});var _0x168a97=_0xff12('0x2c');return db[_0xff12('0x2d')][_0xff12('0x2a')]({'where':{'type':_0x168a97,'resourceId':_0x11ce4e['id']}})['then'](function(){return _0x1d1d59;});})[_0xff12('0x29')](function(){_0x294f73[_0xff12('0x1e')](0xcc)[_0xff12('0x1d')]();});}};}function handleEntityNotFound(_0x3b7409,_0x572c36){return function(_0x502994){if(!_0x502994){_0x3b7409['sendStatus'](0x194);}return _0x502994;};}function handleError(_0x136f13,_0x234ad4){_0x234ad4=_0x234ad4||0x1f4;return function(_0x342a35){logger[_0xff12('0x2e')](_0x342a35['stack']);if(_0x342a35[_0xff12('0x2f')]){delete _0x342a35['name'];}_0x136f13[_0xff12('0x1e')](_0x234ad4)[_0xff12('0x30')](_0x342a35);};}exports[_0xff12('0x31')]=function(_0x2b593e,_0x1a7777){var _0x51d077={},_0x8d2ff0={},_0x16ae30={'count':0x0,'rows':[]};var _0x3d2424=_[_0xff12('0x32')](db[_0xff12('0x33')][_0xff12('0x34')],function(_0x3ede07){return{'name':_0x3ede07[_0xff12('0x35')],'type':_0x3ede07[_0xff12('0x36')]['key']};});_0x8d2ff0[_0xff12('0x37')]=_[_0xff12('0x32')](_0x3d2424,_0xff12('0x2f'));_0x8d2ff0[_0xff12('0x38')]=_['keys'](_0x2b593e[_0xff12('0x38')]);_0x8d2ff0['filters']=_['intersection'](_0x8d2ff0['model'],_0x8d2ff0[_0xff12('0x38')]);_0x51d077[_0xff12('0x39')]=_[_0xff12('0x3a')](_0x8d2ff0[_0xff12('0x37')],qs[_0xff12('0x3b')](_0x2b593e[_0xff12('0x38')][_0xff12('0x3b')]));_0x51d077['attributes']=_0x51d077[_0xff12('0x39')][_0xff12('0x3c')]?_0x51d077['attributes']:_0x8d2ff0[_0xff12('0x37')];if(!_0x2b593e['query']['hasOwnProperty'](_0xff12('0x3d'))){_0x51d077[_0xff12('0x22')]=qs[_0xff12('0x22')](_0x2b593e[_0xff12('0x38')][_0xff12('0x22')]);_0x51d077[_0xff12('0x20')]=qs['offset'](_0x2b593e[_0xff12('0x38')][_0xff12('0x20')]);}_0x51d077[_0xff12('0x3e')]=qs[_0xff12('0x3f')](_0x2b593e[_0xff12('0x38')][_0xff12('0x3f')]);_0x51d077[_0xff12('0x40')]=qs[_0xff12('0x41')](_[_0xff12('0x42')](_0x2b593e[_0xff12('0x38')],_0x8d2ff0[_0xff12('0x41')]),_0x3d2424);if(_0x2b593e['query'][_0xff12('0x43')]){_0x51d077[_0xff12('0x40')]=_[_0xff12('0x44')](_0x51d077['where'],{'$or':_[_0xff12('0x32')](_0x3d2424,function(_0x3c7769){if(_0x3c7769[_0xff12('0x36')]!==_0xff12('0x45')){var _0x42353d={};_0x42353d[_0x3c7769['name']]={'$like':'%'+_0x2b593e['query'][_0xff12('0x43')]+'%'};return _0x42353d;}})});}_0x51d077=_['merge']({},_0x51d077,_0x2b593e['options']);var _0x685e69={'where':_0x51d077[_0xff12('0x40')]};return db[_0xff12('0x33')][_0xff12('0x23')](_0x685e69)['then'](function(_0x1cea17){_0x16ae30['count']=_0x1cea17;if(_0x2b593e[_0xff12('0x38')]['includeAll']){_0x51d077['include']=[{'all':!![]}];}return db[_0xff12('0x33')][_0xff12('0x46')](_0x51d077);})[_0xff12('0x29')](function(_0x42df87){_0x16ae30[_0xff12('0x47')]=_0x42df87;return _0x16ae30;})[_0xff12('0x29')](respondWithFilteredResult(_0x1a7777,_0x51d077))[_0xff12('0x48')](handleError(_0x1a7777,null));};exports[_0xff12('0x49')]=function(_0x137b7f,_0x4059a3){var _0x1d6137={'raw':!![],'where':{'id':_0x137b7f[_0xff12('0x4a')]['id']}},_0x3dd948={};_0x3dd948['model']=_[_0xff12('0x4b')](db[_0xff12('0x33')][_0xff12('0x34')]);_0x3dd948[_0xff12('0x38')]=_[_0xff12('0x4b')](_0x137b7f[_0xff12('0x38')]);_0x3dd948[_0xff12('0x41')]=_[_0xff12('0x3a')](_0x3dd948[_0xff12('0x37')],_0x3dd948[_0xff12('0x38')]);_0x1d6137[_0xff12('0x39')]=_[_0xff12('0x3a')](_0x3dd948['model'],qs[_0xff12('0x3b')](_0x137b7f[_0xff12('0x38')]['fields']));_0x1d6137[_0xff12('0x39')]=_0x1d6137[_0xff12('0x39')][_0xff12('0x3c')]?_0x1d6137[_0xff12('0x39')]:_0x3dd948['model'];if(_0x137b7f[_0xff12('0x38')][_0xff12('0x4c')]){_0x1d6137[_0xff12('0x4d')]=[{'all':!![]}];}_0x1d6137=_[_0xff12('0x44')]({},_0x1d6137,_0x137b7f[_0xff12('0x4e')]);return db[_0xff12('0x33')][_0xff12('0x4f')](_0x1d6137)[_0xff12('0x29')](handleEntityNotFound(_0x4059a3,null))['then'](respondWithResult(_0x4059a3,null))['catch'](handleError(_0x4059a3,null));};exports['create']=function(_0xe8f9f,_0x4245b6){return db['SmsQueue'][_0xff12('0x50')](_0xe8f9f['body'],{})[_0xff12('0x29')](function(_0x224a0a){var _0x2478b4=_0xe8f9f[_0xff12('0x51')][_0xff12('0x2b')]({'plain':!![]});if(!_0x2478b4)throw new Error(_0xff12('0x52'));if(_0x2478b4[_0xff12('0x53')]===_0xff12('0x51')){var _0x47b1c9=_0x224a0a['get']({'plain':!![]});var _0x333d43='SmsQueues';return db[_0xff12('0x54')][_0xff12('0x4f')]({'where':{'name':_0x333d43,'userProfileId':_0x2478b4['userProfileId']},'raw':!![]})[_0xff12('0x29')](function(_0x322156){if(_0x322156&&_0x322156[_0xff12('0x55')]===0x0){return db[_0xff12('0x2d')]['create']({'name':_0x47b1c9['name'],'resourceId':_0x47b1c9['id'],'type':_0x322156['name'],'sectionId':_0x322156['id']},{})[_0xff12('0x29')](function(){return _0x224a0a;});}else{return _0x224a0a;}})[_0xff12('0x48')](function(_0x120185){logger[_0xff12('0x2e')](_0xff12('0x56'),_0x120185);throw _0x120185;});}return _0x224a0a;})[_0xff12('0x29')](respondWithResult(_0x4245b6,0xc9))[_0xff12('0x48')](handleError(_0x4245b6,null));};exports[_0xff12('0x28')]=function(_0x23d38d,_0x95f4e0){if(_0x23d38d[_0xff12('0x57')]['id']){delete _0x23d38d[_0xff12('0x57')]['id'];}return db[_0xff12('0x33')][_0xff12('0x4f')]({'where':{'id':_0x23d38d[_0xff12('0x4a')]['id']}})[_0xff12('0x29')](handleEntityNotFound(_0x95f4e0,null))[_0xff12('0x29')](saveUpdates(_0x23d38d[_0xff12('0x57')],null))[_0xff12('0x29')](respondWithResult(_0x95f4e0,null))[_0xff12('0x48')](handleError(_0x95f4e0,null));};exports['destroy']=function(_0x4e41f5,_0x3a6777){return db[_0xff12('0x33')]['find']({'where':{'id':_0x4e41f5[_0xff12('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3a6777,null))[_0xff12('0x29')](removeEntity(_0x3a6777,null))[_0xff12('0x48')](handleError(_0x3a6777,null));};exports[_0xff12('0x58')]=function(_0x10b7c3,_0x39fb0e){return db[_0xff12('0x33')]['describe']()['then'](respondWithResult(_0x39fb0e,null))[_0xff12('0x48')](handleError(_0x39fb0e,null));};exports[_0xff12('0x59')]=function(_0x1b5f80,_0x495d54,_0x28e03d){var _0x576810={'raw':!![],'where':{}},_0x3d7c75={},_0x4074e0;return db[_0xff12('0x33')][_0xff12('0x5a')]({'where':{'id':_0x1b5f80[_0xff12('0x4a')]['id']}})[_0xff12('0x29')](handleEntityNotFound(_0x495d54,null))[_0xff12('0x29')](function(_0x1603d9){if(_0x1603d9){_0x4074e0=_0x1603d9['get']({'plain':!![]});_0x3d7c75['model']=_[_0xff12('0x4b')](db[_0xff12('0x5b')][_0xff12('0x34')]);_0x3d7c75['query']=_[_0xff12('0x4b')](_0x1b5f80[_0xff12('0x38')]);_0x3d7c75['filters']=_['intersection'](_0x3d7c75['model'],_0x3d7c75['query']);_0x576810[_0xff12('0x39')]=_['intersection'](_0x3d7c75[_0xff12('0x37')],qs['fields'](_0x1b5f80[_0xff12('0x38')]['fields']));_0x576810['attributes']=_0x576810['attributes'][_0xff12('0x3c')]?_0x576810['attributes']:_0x3d7c75[_0xff12('0x37')];if(!_0x1b5f80['query'][_0xff12('0x5c')]('nolimit')){_0x576810[_0xff12('0x22')]=qs['limit'](_0x1b5f80[_0xff12('0x38')][_0xff12('0x22')]);_0x576810[_0xff12('0x20')]=qs['offset'](_0x1b5f80[_0xff12('0x38')][_0xff12('0x20')]);}_0x576810[_0xff12('0x3e')]=qs[_0xff12('0x3f')](_0x1b5f80['query'][_0xff12('0x3f')]);_0x576810['where']=qs[_0xff12('0x41')](_[_0xff12('0x42')](_0x1b5f80[_0xff12('0x38')],_0x3d7c75[_0xff12('0x41')]));_0x576810[_0xff12('0x40')][_0xff12('0x5d')]=_0x1603d9['id'];if(_0x1b5f80[_0xff12('0x38')][_0xff12('0x43')]){_0x576810[_0xff12('0x40')]=_['merge'](_0x576810[_0xff12('0x40')],{'$or':_[_0xff12('0x32')](_0x576810[_0xff12('0x39')],function(_0x67b05b){var _0x195720={};_0x195720[_0x67b05b]={'$like':'%'+_0x1b5f80[_0xff12('0x38')]['filter']+'%'};return _0x195720;})});}_0x576810=_['merge']({},_0x576810,_0x1b5f80[_0xff12('0x4e')]);return db[_0xff12('0x5b')]['findAll'](_0x576810);}})['then'](function(_0x564da3){if(_0x564da3){return db[_0xff12('0x5e')][_0xff12('0x5f')]({'where':{'id':_['map'](_0x564da3,_0xff12('0x60')),'role':_0xff12('0x61')},'attributes':['id','name',_0xff12('0x62'),_0xff12('0x63'),_0xff12('0x64')]});}})[_0xff12('0x29')](function(_0x4b4cd3){if(_0x4b4cd3){return{'count':_0x4b4cd3[_0xff12('0x23')],'rows':_[_0xff12('0x32')](_0x4b4cd3[_0xff12('0x47')],function(_0x5cf238){return{'membername':_0x5cf238['name'],'UserId':_0x5cf238['id'],'queue_name':_0x4074e0[_0xff12('0x2f')],'SmsQueueId':_0x4074e0['id'],'interface':util['format']('%s/%s',_0xff12('0x65'),_0x5cf238['name']),'penalty':0x0,'paused':_0x5cf238['smsPause'],'createdAt':_0x5cf238[_0xff12('0x64')],'updatedAt':_0x5cf238['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xff12('0x29')](respondWithFilteredResult(_0x495d54,_0x576810))[_0xff12('0x48')](handleError(_0x495d54,null));};exports[_0xff12('0x66')]=function(_0x56b9da,_0x2d745b,_0x3dab43){var _0x50300f={};var _0x1b25f3={};var _0x459cf1;var _0xd707ac;return db['SmsQueue'][_0xff12('0x5a')]({'where':{'id':_0x56b9da[_0xff12('0x4a')]['id']}})[_0xff12('0x29')](handleEntityNotFound(_0x2d745b,null))[_0xff12('0x29')](function(_0x23c477){if(_0x23c477){_0x459cf1=_0x23c477;_0x1b25f3[_0xff12('0x37')]=_[_0xff12('0x4b')](db[_0xff12('0x67')][_0xff12('0x34')]);_0x1b25f3[_0xff12('0x38')]=_[_0xff12('0x4b')](_0x56b9da[_0xff12('0x38')]);_0x1b25f3[_0xff12('0x41')]=_['intersection'](_0x1b25f3[_0xff12('0x37')],_0x1b25f3[_0xff12('0x38')]);_0x50300f[_0xff12('0x39')]=_[_0xff12('0x3a')](_0x1b25f3['model'],qs['fields'](_0x56b9da[_0xff12('0x38')][_0xff12('0x3b')]));_0x50300f[_0xff12('0x39')]=_0x50300f[_0xff12('0x39')][_0xff12('0x3c')]?_0x50300f[_0xff12('0x39')]:_0x1b25f3[_0xff12('0x37')];_0x50300f[_0xff12('0x3e')]=qs[_0xff12('0x3f')](_0x56b9da[_0xff12('0x38')][_0xff12('0x3f')]);_0x50300f['where']=qs[_0xff12('0x41')](_[_0xff12('0x42')](_0x56b9da[_0xff12('0x38')],_0x1b25f3[_0xff12('0x41')]));if(_0x56b9da[_0xff12('0x38')]['filter']){_0x50300f['where']=_[_0xff12('0x44')](_0x50300f['where'],{'$or':_[_0xff12('0x32')](_0x50300f[_0xff12('0x39')],function(_0x52c01e){var _0x4e70c6={};_0x4e70c6[_0x52c01e]={'$like':'%'+_0x56b9da[_0xff12('0x38')][_0xff12('0x43')]+'%'};return _0x4e70c6;})});}_0x50300f=_['merge']({},_0x50300f,_0x56b9da[_0xff12('0x4e')]);return _0x459cf1['getTeams'](_0x50300f);}})[_0xff12('0x29')](function(_0xc7709a){if(_0xc7709a){_0xd707ac=_0xc7709a['length'];if(!_0x56b9da['query'][_0xff12('0x5c')](_0xff12('0x3d'))){_0x50300f[_0xff12('0x22')]=qs[_0xff12('0x22')](_0x56b9da[_0xff12('0x38')][_0xff12('0x22')]);_0x50300f[_0xff12('0x20')]=qs[_0xff12('0x20')](_0x56b9da[_0xff12('0x38')][_0xff12('0x20')]);}return _0x459cf1[_0xff12('0x66')](_0x50300f);}})[_0xff12('0x29')](function(_0x217232){if(_0x217232){return _0x217232?{'count':_0xd707ac,'rows':_0x217232}:null;}})[_0xff12('0x29')](respondWithResult(_0x2d745b,null))[_0xff12('0x48')](handleError(_0x2d745b,null));};exports['addTeams']=function(_0x58eb61,_0xa027da,_0x4268ef){var _0x503ed0=_0x58eb61[_0xff12('0x57')]['ids'];return db[_0xff12('0x67')][_0xff12('0x46')]({'where':{'id':_0x503ed0},'attributes':['id'],'include':[{'model':db[_0xff12('0x5e')],'as':_0xff12('0x68'),'attributes':['id',_0xff12('0x2f'),_0xff12('0x69'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0x1bae47){if(_0x1bae47){var _0x24f152=_['flatMap'](_0x1bae47,function(_0x526959){var _0x56401f=_0x526959['get']({'plain':!![]});return _0x56401f[_0xff12('0x68')];});return db[_0xff12('0x33')][_0xff12('0x4f')]({'where':{'id':_0x58eb61[_0xff12('0x4a')]['id']}})['then'](function(_0x573a1b){return db['sequelize'][_0xff12('0x6a')](function(_0x577bb6){return _0x573a1b[_0xff12('0x6b')](_0x503ed0,{'transaction':_0x577bb6})[_0xff12('0x29')](function(){return BPromise['each'](_0x24f152,function(_0x535ed8){return db[_0xff12('0x5b')]['findOrCreate']({'where':{'UserId':_0x535ed8['id'],'SmsQueueId':_0x58eb61[_0xff12('0x4a')]['id']},'transaction':_0x577bb6});});})[_0xff12('0x29')](function(){_0x24f152['forEach'](function(_0x2d4daa){socket[_0xff12('0x6c')]('userSmsQueue:save',{'UserId':_0x2d4daa['id'],'SmsQueueId':_0x573a1b['id']});});});});});}})[_0xff12('0x29')](respondWithStatusCode(_0xa027da,null))[_0xff12('0x48')](handleError(_0xa027da,null));};exports['removeTeams']=function(_0x515ef8,_0x282df8,_0x28bb51){return db[_0xff12('0x67')][_0xff12('0x46')]({'where':{'id':_0x515ef8['query'][_0xff12('0x6d')]},'attributes':['id'],'include':[{'model':db[_0xff12('0x5e')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xff12('0x29')](handleEntityNotFound(_0x282df8,null))['then'](function(_0x3109b9){var _0x5cecba=_['map'](_0x3109b9,'id');var _0xc0a69f=[];var _0x5b99db=[];var _0x295328=squel[_0xff12('0x6e')]();_0x295328[_0xff12('0x6f')](_0xff12('0x70'))[_0xff12('0x71')]('team_has_sms_queues','tq')['join'](_0xff12('0x72'),'ut',_0xff12('0x73'))[_0xff12('0x40')]('SmsQueueId\x20=\x20?',_0x515ef8['params']['id']);for(var _0x58e224=0x0;_0x58e224<_0x3109b9[_0xff12('0x3c')];_0x58e224+=0x1){let _0x4870d7=_0x3109b9[_0x58e224];for(var _0x24459f=0x0;_0x24459f<_0x4870d7['Agents'][_0xff12('0x3c')];_0x24459f+=0x1){let _0x34c100=_0x4870d7[_0xff12('0x68')][_0x24459f];var _0xa68acc=_0x295328[_0xff12('0x74')]();_0xa68acc[_0xff12('0x40')]('ut.UserId\x20=\x20?',_0x34c100['id']);_0x5b99db[_0xff12('0x75')](db[_0xff12('0x76')][_0xff12('0x38')](_0xa68acc[_0xff12('0x77')](),{'type':db[_0xff12('0x76')][_0xff12('0x78')][_0xff12('0x79')]})[_0xff12('0x29')](function(_0x30ea44){if(_0x30ea44[_0xff12('0x3c')]===0x1){return _0x34c100['id'];}else{var _0x35a31d=_[_0xff12('0x7a')](_['map'](_0x30ea44,_0xff12('0x7b')),function(_0x492c15){return _[_0xff12('0x7c')](_0x5cecba,_0x492c15);});if(_0x35a31d){return _0x34c100['id'];}}}));}}return BPromise[_0xff12('0x7d')](_0x5b99db)[_0xff12('0x29')](function(_0x1d49d1){_0xc0a69f=_(_0xc0a69f)[_0xff12('0x7e')](_0x1d49d1)[_0xff12('0x7f')]()[_0xff12('0x80')]();return db[_0xff12('0x33')][_0xff12('0x4f')]({'where':{'id':_0x515ef8['params']['id']}})[_0xff12('0x29')](function(_0x376bc5){return db[_0xff12('0x76')][_0xff12('0x6a')](function(_0x360b0c){return _0x376bc5[_0xff12('0x81')](_0x515ef8['query'][_0xff12('0x6d')],{'transaction':_0x360b0c})[_0xff12('0x29')](function(){if(!_[_0xff12('0x82')](_0xc0a69f)){return _0x376bc5['removeAgents'](_0xc0a69f,{'transaction':_0x360b0c});}})[_0xff12('0x29')](function(){_0xc0a69f[_0xff12('0x83')](function(_0x397dc3){socket[_0xff12('0x6c')](_0xff12('0x84'),{'UserId':_0x397dc3,'SmsQueueId':_0x376bc5['id']});});});});});});})[_0xff12('0x29')](respondWithStatusCode(_0x282df8,null))['catch'](handleError(_0x282df8,null));};exports['addAgents']=function(_0x10806b,_0x5ec239,_0xa2280a){return db[_0xff12('0x33')]['find']({'where':{'id':_0x10806b['params']['id']}})[_0xff12('0x29')](handleEntityNotFound(_0x5ec239,null))[_0xff12('0x29')](function(_0x13f2de){if(_0x13f2de){return _0x13f2de[_0xff12('0x85')](_0x10806b[_0xff12('0x57')]['ids'],_[_0xff12('0x86')](_0x10806b['body'],['ids','id'])||{})[_0xff12('0x87')](function(_0x5c5fe4){for(var _0x1f23e8=0x0;_0x1f23e8<_0x10806b[_0xff12('0x57')][_0xff12('0x6d')]['length'];_0x1f23e8+=0x1){socket['emit'](_0xff12('0x88'),{'UserId':Number(_0x10806b[_0xff12('0x57')][_0xff12('0x6d')][_0x1f23e8]),'SmsQueueId':Number(_0x10806b['params']['id'])});}return _0x5c5fe4;});}})['then'](respondWithResult(_0x5ec239,null))[_0xff12('0x48')](handleError(_0x5ec239,null));};exports[_0xff12('0x89')]=function(_0x55fae1,_0x343256,_0x15d40a){return db[_0xff12('0x33')][_0xff12('0x4f')]({'where':{'id':_0x55fae1[_0xff12('0x4a')]['id']}})[_0xff12('0x29')](handleEntityNotFound(_0x343256,null))[_0xff12('0x29')](function(_0x365b3c){if(_0x365b3c){return _0x365b3c[_0xff12('0x89')](_0x55fae1['query'][_0xff12('0x6d')])[_0xff12('0x29')](function(){if(_[_0xff12('0x8a')](_0x55fae1['query'][_0xff12('0x6d')])){for(var _0x51da6c=0x0;_0x51da6c<_0x55fae1[_0xff12('0x38')][_0xff12('0x6d')][_0xff12('0x3c')];_0x51da6c+=0x1){socket[_0xff12('0x6c')]('userSmsQueue:remove',{'UserId':Number(_0x55fae1[_0xff12('0x38')][_0xff12('0x6d')][_0x51da6c]),'SmsQueueId':Number(_0x55fae1[_0xff12('0x4a')]['id'])});}}else{socket[_0xff12('0x6c')](_0xff12('0x84'),{'UserId':Number(_0x55fae1[_0xff12('0x38')][_0xff12('0x6d')]),'SmsQueueId':Number(_0x55fae1[_0xff12('0x4a')]['id'])});}});}})['then'](respondWithStatusCode(_0x343256,null))[_0xff12('0x48')](handleError(_0x343256,null));};exports['getAgents']=function(_0x5198f2,_0x52da1a,_0x19cc1f){var _0x27e8f6={};var _0x4c50af={};var _0x4ae5e2;var _0x4c6f1d;return db[_0xff12('0x33')][_0xff12('0x5a')]({'where':{'id':_0x5198f2[_0xff12('0x4a')]['id']}})[_0xff12('0x29')](handleEntityNotFound(_0x52da1a,null))['then'](function(_0x41bc8e){if(_0x41bc8e){_0x4ae5e2=_0x41bc8e;_0x4c50af[_0xff12('0x37')]=_['keys'](db['User'][_0xff12('0x34')]);_0x4c50af[_0xff12('0x38')]=_['keys'](_0x5198f2[_0xff12('0x38')]);_0x4c50af['filters']=_[_0xff12('0x3a')](_0x4c50af[_0xff12('0x37')],_0x4c50af[_0xff12('0x38')]);_0x27e8f6[_0xff12('0x39')]=_[_0xff12('0x3a')](_0x4c50af[_0xff12('0x37')],qs[_0xff12('0x3b')](_0x5198f2[_0xff12('0x38')]['fields']));_0x27e8f6[_0xff12('0x39')]=_0x27e8f6[_0xff12('0x39')][_0xff12('0x3c')]?_0x27e8f6[_0xff12('0x39')]:_0x4c50af[_0xff12('0x37')];_0x27e8f6[_0xff12('0x3e')]=qs[_0xff12('0x3f')](_0x5198f2[_0xff12('0x38')][_0xff12('0x3f')]);_0x27e8f6[_0xff12('0x40')]=qs[_0xff12('0x41')](_['pick'](_0x5198f2[_0xff12('0x38')],_0x4c50af[_0xff12('0x41')]));if(_0x5198f2[_0xff12('0x38')][_0xff12('0x43')]){_0x27e8f6['where']=_['merge'](_0x27e8f6[_0xff12('0x40')],{'$or':_[_0xff12('0x32')](_0x27e8f6['attributes'],function(_0x563ec8){var _0xea0514={};_0xea0514[_0x563ec8]={'$like':'%'+_0x5198f2[_0xff12('0x38')][_0xff12('0x43')]+'%'};return _0xea0514;})});}_0x27e8f6=_[_0xff12('0x44')]({},_0x27e8f6,_0x5198f2[_0xff12('0x4e')]);return _0x4ae5e2['getAgents'](_0x27e8f6);}})[_0xff12('0x29')](function(_0x58a046){if(_0x58a046){_0x4c6f1d=_0x58a046[_0xff12('0x3c')];if(!_0x5198f2[_0xff12('0x38')]['hasOwnProperty'](_0xff12('0x3d'))){_0x27e8f6[_0xff12('0x22')]=qs[_0xff12('0x22')](_0x5198f2['query'][_0xff12('0x22')]);_0x27e8f6[_0xff12('0x20')]=qs[_0xff12('0x20')](_0x5198f2[_0xff12('0x38')][_0xff12('0x20')]);}return _0x4ae5e2[_0xff12('0x8b')](_0x27e8f6);}})[_0xff12('0x29')](function(_0x2709ae){if(_0x2709ae){return _0x2709ae?{'count':_0x4c6f1d,'rows':_0x2709ae}:null;}})[_0xff12('0x29')](respondWithResult(_0x52da1a,null))[_0xff12('0x48')](handleError(_0x52da1a,null));};
\ No newline at end of file
+var _0xff29=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserSmsQueue','order','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause','format','%s/%s','SIP','createdAt','updatedAt','Team','getTeams','ids','Agents','voicePause','flatMap','sequelize','findOrCreate','forEach','emit','removeTeams','select','field','tq.TeamId','from','team_has_sms_queues','user_has_teams','SmsQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','all','value','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread','userSmsQueue:save','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','end','status','json','undefined','limit','count','offset','reject','save','update','then','destroy','get','SmsQueues','UserProfileResource','sendStatus','error','name','index','map','SmsQueue','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','show','params','options','find','create'];(function(_0x3b4502,_0x3082e6){var _0x403b60=function(_0x2e3309){while(--_0x2e3309){_0x3b4502['push'](_0x3b4502['shift']());}};_0x403b60(++_0x3082e6);}(_0xff29,0x1d5));var _0x9ff2=function(_0x3a9c66,_0x5ce1a9){_0x3a9c66=_0x3a9c66-0x0;var _0x8d5b69=_0xff29[_0x3a9c66];return _0x8d5b69;};'use strict';var emlformat=require(_0x9ff2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9ff2('0x1'));var jsonpatch=require(_0x9ff2('0x2'));var rp=require(_0x9ff2('0x3'));var moment=require(_0x9ff2('0x4'));var BPromise=require(_0x9ff2('0x5'));var Mustache=require(_0x9ff2('0x6'));var util=require(_0x9ff2('0x7'));var path=require(_0x9ff2('0x8'));var sox=require(_0x9ff2('0x9'));var csv=require(_0x9ff2('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9ff2('0xb'));var squel=require(_0x9ff2('0xc'));var crypto=require('crypto');var jsforce=require(_0x9ff2('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9ff2('0xe'));var Redis=require(_0x9ff2('0xf'));var authService=require(_0x9ff2('0x10'));var qs=require(_0x9ff2('0x11'));var as=require(_0x9ff2('0x12'));var hardwareService=require(_0x9ff2('0x13'));var logger=require(_0x9ff2('0x14'))(_0x9ff2('0x15'));var utils=require(_0x9ff2('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x9ff2('0x17'));var db=require(_0x9ff2('0x18'))['db'];config[_0x9ff2('0x19')]=_[_0x9ff2('0x1a')](config[_0x9ff2('0x19')],{'host':_0x9ff2('0x1b'),'port':0x18eb});var socket=require(_0x9ff2('0x1c'))(new Redis(config[_0x9ff2('0x19')]));require('./smsQueue.socket')[_0x9ff2('0x1d')](socket);function respondWithStatusCode(_0x9034db,_0x4f7e13){_0x4f7e13=_0x4f7e13||0xcc;return function(_0x264639){if(_0x264639){return _0x9034db['sendStatus'](_0x4f7e13);}return _0x9034db['status'](_0x4f7e13)[_0x9ff2('0x1e')]();};}function respondWithResult(_0xffcfab,_0x186134){_0x186134=_0x186134||0xc8;return function(_0x36b75a){if(_0x36b75a){return _0xffcfab[_0x9ff2('0x1f')](_0x186134)[_0x9ff2('0x20')](_0x36b75a);}};}function respondWithFilteredResult(_0x4f1146,_0x4040c1){return function(_0x4c27a6){if(_0x4c27a6){var _0x2ef954=typeof _0x4040c1['offset']===_0x9ff2('0x21')&&typeof _0x4040c1[_0x9ff2('0x22')]===_0x9ff2('0x21');var _0x6d2d13=_0x4c27a6[_0x9ff2('0x23')];var _0x23f7c4=_0x2ef954?0x0:_0x4040c1['offset'];var _0x549893=_0x2ef954?_0x4c27a6['count']:_0x4040c1[_0x9ff2('0x24')]+_0x4040c1['limit'];var _0x531059;if(_0x549893>=_0x6d2d13){_0x549893=_0x6d2d13;_0x531059=0xc8;}else{_0x531059=0xce;}_0x4f1146['status'](_0x531059);return _0x4f1146['set']('Content-Range',_0x23f7c4+'-'+_0x549893+'/'+_0x6d2d13)[_0x9ff2('0x20')](_0x4c27a6);}return null;};}function patchUpdates(_0x395baa){return function(_0x355340){try{jsonpatch['apply'](_0x355340,_0x395baa,!![]);}catch(_0x26f6ac){return BPromise[_0x9ff2('0x25')](_0x26f6ac);}return _0x355340[_0x9ff2('0x26')]();};}function saveUpdates(_0x3b9b34,_0x398b80){return function(_0x159947){if(_0x159947){return _0x159947[_0x9ff2('0x27')](_0x3b9b34)[_0x9ff2('0x28')](function(_0x4898fa){return _0x4898fa;});}return null;};}function removeEntity(_0x49e0f2,_0x33b5e6){return function(_0x3838f6){if(_0x3838f6){return _0x3838f6[_0x9ff2('0x29')]()[_0x9ff2('0x28')](function(){var _0x36ca91=_0x3838f6[_0x9ff2('0x2a')]({'plain':!![]});var _0x1f6f47=_0x9ff2('0x2b');return db[_0x9ff2('0x2c')][_0x9ff2('0x29')]({'where':{'type':_0x1f6f47,'resourceId':_0x36ca91['id']}})[_0x9ff2('0x28')](function(){return _0x3838f6;});})[_0x9ff2('0x28')](function(){_0x49e0f2[_0x9ff2('0x1f')](0xcc)[_0x9ff2('0x1e')]();});}};}function handleEntityNotFound(_0x197e6b,_0x266192){return function(_0x5e18b4){if(!_0x5e18b4){_0x197e6b[_0x9ff2('0x2d')](0x194);}return _0x5e18b4;};}function handleError(_0x2d3006,_0x1750de){_0x1750de=_0x1750de||0x1f4;return function(_0x1bdf17){logger[_0x9ff2('0x2e')](_0x1bdf17['stack']);if(_0x1bdf17['name']){delete _0x1bdf17[_0x9ff2('0x2f')];}_0x2d3006[_0x9ff2('0x1f')](_0x1750de)['send'](_0x1bdf17);};}exports[_0x9ff2('0x30')]=function(_0x5794a4,_0x1c698e){var _0x175415={},_0xbbef50={},_0x4dc438={'count':0x0,'rows':[]};var _0x5aae15=_[_0x9ff2('0x31')](db[_0x9ff2('0x32')][_0x9ff2('0x33')],function(_0x106dad){return{'name':_0x106dad[_0x9ff2('0x34')],'type':_0x106dad[_0x9ff2('0x35')]['key']};});_0xbbef50[_0x9ff2('0x36')]=_[_0x9ff2('0x31')](_0x5aae15,_0x9ff2('0x2f'));_0xbbef50[_0x9ff2('0x37')]=_[_0x9ff2('0x38')](_0x5794a4[_0x9ff2('0x37')]);_0xbbef50[_0x9ff2('0x39')]=_[_0x9ff2('0x3a')](_0xbbef50[_0x9ff2('0x36')],_0xbbef50[_0x9ff2('0x37')]);_0x175415[_0x9ff2('0x3b')]=_[_0x9ff2('0x3a')](_0xbbef50[_0x9ff2('0x36')],qs[_0x9ff2('0x3c')](_0x5794a4[_0x9ff2('0x37')][_0x9ff2('0x3c')]));_0x175415['attributes']=_0x175415[_0x9ff2('0x3b')][_0x9ff2('0x3d')]?_0x175415[_0x9ff2('0x3b')]:_0xbbef50[_0x9ff2('0x36')];if(!_0x5794a4[_0x9ff2('0x37')][_0x9ff2('0x3e')](_0x9ff2('0x3f'))){_0x175415[_0x9ff2('0x22')]=qs[_0x9ff2('0x22')](_0x5794a4['query'][_0x9ff2('0x22')]);_0x175415[_0x9ff2('0x24')]=qs[_0x9ff2('0x24')](_0x5794a4[_0x9ff2('0x37')][_0x9ff2('0x24')]);}_0x175415['order']=qs[_0x9ff2('0x40')](_0x5794a4[_0x9ff2('0x37')][_0x9ff2('0x40')]);_0x175415[_0x9ff2('0x41')]=qs[_0x9ff2('0x39')](_[_0x9ff2('0x42')](_0x5794a4[_0x9ff2('0x37')],_0xbbef50[_0x9ff2('0x39')]),_0x5aae15);if(_0x5794a4[_0x9ff2('0x37')][_0x9ff2('0x43')]){_0x175415[_0x9ff2('0x41')]=_['merge'](_0x175415['where'],{'$or':_['map'](_0x5aae15,function(_0x2167de){if(_0x2167de['type']!==_0x9ff2('0x44')){var _0x5e7060={};_0x5e7060[_0x2167de[_0x9ff2('0x2f')]]={'$like':'%'+_0x5794a4['query'][_0x9ff2('0x43')]+'%'};return _0x5e7060;}})});}_0x175415=_[_0x9ff2('0x45')]({},_0x175415,_0x5794a4['options']);var _0xbe75c3={'where':_0x175415[_0x9ff2('0x41')]};return db[_0x9ff2('0x32')][_0x9ff2('0x23')](_0xbe75c3)[_0x9ff2('0x28')](function(_0x426b0a){_0x4dc438[_0x9ff2('0x23')]=_0x426b0a;if(_0x5794a4['query'][_0x9ff2('0x46')]){_0x175415['include']=[{'all':!![]}];}return db[_0x9ff2('0x32')][_0x9ff2('0x47')](_0x175415);})[_0x9ff2('0x28')](function(_0x3217b5){_0x4dc438[_0x9ff2('0x48')]=_0x3217b5;return _0x4dc438;})[_0x9ff2('0x28')](respondWithFilteredResult(_0x1c698e,_0x175415))[_0x9ff2('0x49')](handleError(_0x1c698e,null));};exports[_0x9ff2('0x4a')]=function(_0x4fe23e,_0x381c96){var _0x1acdf2={'raw':!![],'where':{'id':_0x4fe23e[_0x9ff2('0x4b')]['id']}},_0x1e7bf4={};_0x1e7bf4['model']=_[_0x9ff2('0x38')](db[_0x9ff2('0x32')]['rawAttributes']);_0x1e7bf4['query']=_[_0x9ff2('0x38')](_0x4fe23e['query']);_0x1e7bf4[_0x9ff2('0x39')]=_[_0x9ff2('0x3a')](_0x1e7bf4['model'],_0x1e7bf4['query']);_0x1acdf2[_0x9ff2('0x3b')]=_[_0x9ff2('0x3a')](_0x1e7bf4[_0x9ff2('0x36')],qs[_0x9ff2('0x3c')](_0x4fe23e[_0x9ff2('0x37')][_0x9ff2('0x3c')]));_0x1acdf2[_0x9ff2('0x3b')]=_0x1acdf2[_0x9ff2('0x3b')][_0x9ff2('0x3d')]?_0x1acdf2[_0x9ff2('0x3b')]:_0x1e7bf4[_0x9ff2('0x36')];if(_0x4fe23e[_0x9ff2('0x37')]['includeAll']){_0x1acdf2['include']=[{'all':!![]}];}_0x1acdf2=_[_0x9ff2('0x45')]({},_0x1acdf2,_0x4fe23e[_0x9ff2('0x4c')]);return db['SmsQueue'][_0x9ff2('0x4d')](_0x1acdf2)['then'](handleEntityNotFound(_0x381c96,null))[_0x9ff2('0x28')](respondWithResult(_0x381c96,null))[_0x9ff2('0x49')](handleError(_0x381c96,null));};exports[_0x9ff2('0x4e')]=function(_0x5446d9,_0x17917c){return db['SmsQueue']['create'](_0x5446d9['body'],{})[_0x9ff2('0x28')](function(_0x460bb5){var _0x52d614=_0x5446d9[_0x9ff2('0x4f')][_0x9ff2('0x2a')]({'plain':!![]});if(!_0x52d614)throw new Error(_0x9ff2('0x50'));if(_0x52d614[_0x9ff2('0x51')]==='user'){var _0x551a7d=_0x460bb5[_0x9ff2('0x2a')]({'plain':!![]});var _0x1babcb=_0x9ff2('0x2b');return db['UserProfileSection']['find']({'where':{'name':_0x1babcb,'userProfileId':_0x52d614[_0x9ff2('0x52')]},'raw':!![]})['then'](function(_0x36e355){if(_0x36e355&&_0x36e355[_0x9ff2('0x53')]===0x0){return db[_0x9ff2('0x2c')]['create']({'name':_0x551a7d[_0x9ff2('0x2f')],'resourceId':_0x551a7d['id'],'type':_0x36e355[_0x9ff2('0x2f')],'sectionId':_0x36e355['id']},{})[_0x9ff2('0x28')](function(){return _0x460bb5;});}else{return _0x460bb5;}})[_0x9ff2('0x49')](function(_0x4c6601){logger[_0x9ff2('0x2e')](_0x9ff2('0x54'),_0x4c6601);throw _0x4c6601;});}return _0x460bb5;})[_0x9ff2('0x28')](respondWithResult(_0x17917c,0xc9))[_0x9ff2('0x49')](handleError(_0x17917c,null));};exports[_0x9ff2('0x27')]=function(_0x28848e,_0xf4d1eb){if(_0x28848e['body']['id']){delete _0x28848e[_0x9ff2('0x55')]['id'];}return db['SmsQueue'][_0x9ff2('0x4d')]({'where':{'id':_0x28848e[_0x9ff2('0x4b')]['id']}})[_0x9ff2('0x28')](handleEntityNotFound(_0xf4d1eb,null))[_0x9ff2('0x28')](saveUpdates(_0x28848e['body'],null))[_0x9ff2('0x28')](respondWithResult(_0xf4d1eb,null))[_0x9ff2('0x49')](handleError(_0xf4d1eb,null));};exports[_0x9ff2('0x29')]=function(_0x14a32c,_0x16dde3){return db[_0x9ff2('0x32')][_0x9ff2('0x4d')]({'where':{'id':_0x14a32c[_0x9ff2('0x4b')]['id']}})[_0x9ff2('0x28')](handleEntityNotFound(_0x16dde3,null))[_0x9ff2('0x28')](removeEntity(_0x16dde3,null))[_0x9ff2('0x49')](handleError(_0x16dde3,null));};exports[_0x9ff2('0x56')]=function(_0x58f578,_0x19ea95){return db['SmsQueue'][_0x9ff2('0x56')]()[_0x9ff2('0x28')](respondWithResult(_0x19ea95,null))['catch'](handleError(_0x19ea95,null));};exports[_0x9ff2('0x57')]=function(_0x1bf4a0,_0x2f864a,_0x42814b){var _0x5b07c8={'raw':!![],'where':{}},_0xf9cee6={},_0x1c7c0c;return db[_0x9ff2('0x32')][_0x9ff2('0x58')]({'where':{'id':_0x1bf4a0[_0x9ff2('0x4b')]['id']}})[_0x9ff2('0x28')](handleEntityNotFound(_0x2f864a,null))[_0x9ff2('0x28')](function(_0x1e7237){if(_0x1e7237){_0x1c7c0c=_0x1e7237[_0x9ff2('0x2a')]({'plain':!![]});_0xf9cee6[_0x9ff2('0x36')]=_[_0x9ff2('0x38')](db[_0x9ff2('0x59')][_0x9ff2('0x33')]);_0xf9cee6['query']=_['keys'](_0x1bf4a0['query']);_0xf9cee6[_0x9ff2('0x39')]=_[_0x9ff2('0x3a')](_0xf9cee6['model'],_0xf9cee6[_0x9ff2('0x37')]);_0x5b07c8[_0x9ff2('0x3b')]=_[_0x9ff2('0x3a')](_0xf9cee6['model'],qs['fields'](_0x1bf4a0['query'][_0x9ff2('0x3c')]));_0x5b07c8['attributes']=_0x5b07c8[_0x9ff2('0x3b')][_0x9ff2('0x3d')]?_0x5b07c8[_0x9ff2('0x3b')]:_0xf9cee6[_0x9ff2('0x36')];if(!_0x1bf4a0[_0x9ff2('0x37')][_0x9ff2('0x3e')](_0x9ff2('0x3f'))){_0x5b07c8[_0x9ff2('0x22')]=qs['limit'](_0x1bf4a0[_0x9ff2('0x37')][_0x9ff2('0x22')]);_0x5b07c8[_0x9ff2('0x24')]=qs['offset'](_0x1bf4a0['query'][_0x9ff2('0x24')]);}_0x5b07c8[_0x9ff2('0x5a')]=qs[_0x9ff2('0x40')](_0x1bf4a0[_0x9ff2('0x37')][_0x9ff2('0x40')]);_0x5b07c8['where']=qs[_0x9ff2('0x39')](_['pick'](_0x1bf4a0[_0x9ff2('0x37')],_0xf9cee6[_0x9ff2('0x39')]));_0x5b07c8[_0x9ff2('0x41')][_0x9ff2('0x5b')]=_0x1e7237['id'];if(_0x1bf4a0[_0x9ff2('0x37')][_0x9ff2('0x43')]){_0x5b07c8[_0x9ff2('0x41')]=_[_0x9ff2('0x45')](_0x5b07c8['where'],{'$or':_[_0x9ff2('0x31')](_0x5b07c8[_0x9ff2('0x3b')],function(_0x11ae6d){var _0x42f67a={};_0x42f67a[_0x11ae6d]={'$like':'%'+_0x1bf4a0[_0x9ff2('0x37')][_0x9ff2('0x43')]+'%'};return _0x42f67a;})});}_0x5b07c8=_[_0x9ff2('0x45')]({},_0x5b07c8,_0x1bf4a0[_0x9ff2('0x4c')]);return db[_0x9ff2('0x59')][_0x9ff2('0x47')](_0x5b07c8);}})[_0x9ff2('0x28')](function(_0x48acc8){if(_0x48acc8){return db[_0x9ff2('0x5c')][_0x9ff2('0x5d')]({'where':{'id':_['map'](_0x48acc8,_0x9ff2('0x5e')),'role':_0x9ff2('0x5f')},'attributes':['id',_0x9ff2('0x2f'),_0x9ff2('0x60'),'updatedAt','createdAt']});}})[_0x9ff2('0x28')](function(_0x2cb5cf){if(_0x2cb5cf){return{'count':_0x2cb5cf[_0x9ff2('0x23')],'rows':_[_0x9ff2('0x31')](_0x2cb5cf[_0x9ff2('0x48')],function(_0x96e463){return{'membername':_0x96e463[_0x9ff2('0x2f')],'UserId':_0x96e463['id'],'queue_name':_0x1c7c0c[_0x9ff2('0x2f')],'SmsQueueId':_0x1c7c0c['id'],'interface':util[_0x9ff2('0x61')](_0x9ff2('0x62'),_0x9ff2('0x63'),_0x96e463[_0x9ff2('0x2f')]),'penalty':0x0,'paused':_0x96e463[_0x9ff2('0x60')],'createdAt':_0x96e463[_0x9ff2('0x64')],'updatedAt':_0x96e463[_0x9ff2('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9ff2('0x28')](respondWithFilteredResult(_0x2f864a,_0x5b07c8))['catch'](handleError(_0x2f864a,null));};exports['getTeams']=function(_0x3bab98,_0x5a518d,_0x902e01){var _0x40f5e8={};var _0x23ff1d={};var _0x1594ac;var _0x667d07;return db[_0x9ff2('0x32')][_0x9ff2('0x58')]({'where':{'id':_0x3bab98[_0x9ff2('0x4b')]['id']}})[_0x9ff2('0x28')](handleEntityNotFound(_0x5a518d,null))['then'](function(_0x224c7f){if(_0x224c7f){_0x1594ac=_0x224c7f;_0x23ff1d[_0x9ff2('0x36')]=_['keys'](db[_0x9ff2('0x66')][_0x9ff2('0x33')]);_0x23ff1d[_0x9ff2('0x37')]=_[_0x9ff2('0x38')](_0x3bab98[_0x9ff2('0x37')]);_0x23ff1d[_0x9ff2('0x39')]=_[_0x9ff2('0x3a')](_0x23ff1d['model'],_0x23ff1d['query']);_0x40f5e8[_0x9ff2('0x3b')]=_[_0x9ff2('0x3a')](_0x23ff1d[_0x9ff2('0x36')],qs[_0x9ff2('0x3c')](_0x3bab98[_0x9ff2('0x37')]['fields']));_0x40f5e8[_0x9ff2('0x3b')]=_0x40f5e8[_0x9ff2('0x3b')]['length']?_0x40f5e8[_0x9ff2('0x3b')]:_0x23ff1d[_0x9ff2('0x36')];_0x40f5e8['order']=qs[_0x9ff2('0x40')](_0x3bab98[_0x9ff2('0x37')][_0x9ff2('0x40')]);_0x40f5e8['where']=qs[_0x9ff2('0x39')](_[_0x9ff2('0x42')](_0x3bab98[_0x9ff2('0x37')],_0x23ff1d['filters']));if(_0x3bab98[_0x9ff2('0x37')][_0x9ff2('0x43')]){_0x40f5e8['where']=_[_0x9ff2('0x45')](_0x40f5e8[_0x9ff2('0x41')],{'$or':_[_0x9ff2('0x31')](_0x40f5e8[_0x9ff2('0x3b')],function(_0x4a6855){var _0x211e06={};_0x211e06[_0x4a6855]={'$like':'%'+_0x3bab98[_0x9ff2('0x37')][_0x9ff2('0x43')]+'%'};return _0x211e06;})});}_0x40f5e8=_[_0x9ff2('0x45')]({},_0x40f5e8,_0x3bab98['options']);return _0x1594ac[_0x9ff2('0x67')](_0x40f5e8);}})[_0x9ff2('0x28')](function(_0x11eae5){if(_0x11eae5){_0x667d07=_0x11eae5[_0x9ff2('0x3d')];if(!_0x3bab98[_0x9ff2('0x37')][_0x9ff2('0x3e')](_0x9ff2('0x3f'))){_0x40f5e8[_0x9ff2('0x22')]=qs['limit'](_0x3bab98[_0x9ff2('0x37')][_0x9ff2('0x22')]);_0x40f5e8['offset']=qs[_0x9ff2('0x24')](_0x3bab98[_0x9ff2('0x37')]['offset']);}return _0x1594ac[_0x9ff2('0x67')](_0x40f5e8);}})[_0x9ff2('0x28')](function(_0x315101){if(_0x315101){return _0x315101?{'count':_0x667d07,'rows':_0x315101}:null;}})['then'](respondWithResult(_0x5a518d,null))['catch'](handleError(_0x5a518d,null));};exports['addTeams']=function(_0x170c4b,_0x50fe9,_0x30af23){var _0x2478b6=_0x170c4b[_0x9ff2('0x55')][_0x9ff2('0x68')];return db[_0x9ff2('0x66')]['findAll']({'where':{'id':_0x2478b6},'attributes':['id'],'include':[{'model':db['User'],'as':_0x9ff2('0x69'),'attributes':['id',_0x9ff2('0x2f'),'online',_0x9ff2('0x6a'),'interface'],'raw':!![]}]})[_0x9ff2('0x28')](function(_0x493ffd){if(_0x493ffd){var _0x5356ce=_[_0x9ff2('0x6b')](_0x493ffd,function(_0x45748d){var _0x40d6cf=_0x45748d[_0x9ff2('0x2a')]({'plain':!![]});return _0x40d6cf['Agents'];});return db['SmsQueue'][_0x9ff2('0x4d')]({'where':{'id':_0x170c4b[_0x9ff2('0x4b')]['id']}})[_0x9ff2('0x28')](function(_0x8cec37){return db[_0x9ff2('0x6c')]['transaction'](function(_0x170074){return _0x8cec37['addTeams'](_0x2478b6,{'transaction':_0x170074})[_0x9ff2('0x28')](function(){return BPromise['each'](_0x5356ce,function(_0x3d6631){return db[_0x9ff2('0x59')][_0x9ff2('0x6d')]({'where':{'UserId':_0x3d6631['id'],'SmsQueueId':_0x170c4b[_0x9ff2('0x4b')]['id']},'transaction':_0x170074});});})[_0x9ff2('0x28')](function(){_0x5356ce[_0x9ff2('0x6e')](function(_0x5a4f6b){socket[_0x9ff2('0x6f')]('userSmsQueue:save',{'UserId':_0x5a4f6b['id'],'SmsQueueId':_0x8cec37['id']});});});});});}})[_0x9ff2('0x28')](respondWithStatusCode(_0x50fe9,null))['catch'](handleError(_0x50fe9,null));};exports[_0x9ff2('0x70')]=function(_0x3327ec,_0x12f487,_0x2365ca){return db['Team'][_0x9ff2('0x47')]({'where':{'id':_0x3327ec[_0x9ff2('0x37')][_0x9ff2('0x68')]},'attributes':['id'],'include':[{'model':db[_0x9ff2('0x5c')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x9ff2('0x28')](handleEntityNotFound(_0x12f487,null))[_0x9ff2('0x28')](function(_0x33763e){var _0x6af5e6=_[_0x9ff2('0x31')](_0x33763e,'id');var _0x42364e=[];var _0x427473=[];var _0x1f5e66=squel[_0x9ff2('0x71')]();_0x1f5e66[_0x9ff2('0x72')](_0x9ff2('0x73'))[_0x9ff2('0x74')](_0x9ff2('0x75'),'tq')['join'](_0x9ff2('0x76'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x9ff2('0x41')](_0x9ff2('0x77'),_0x3327ec['params']['id']);for(var _0x16e312=0x0;_0x16e312<_0x33763e[_0x9ff2('0x3d')];_0x16e312+=0x1){let _0x24e374=_0x33763e[_0x16e312];for(var _0x104860=0x0;_0x104860<_0x24e374[_0x9ff2('0x69')][_0x9ff2('0x3d')];_0x104860+=0x1){let _0x5598d1=_0x24e374[_0x9ff2('0x69')][_0x104860];var _0x45953e=_0x1f5e66['clone']();_0x45953e[_0x9ff2('0x41')](_0x9ff2('0x78'),_0x5598d1['id']);_0x427473['push'](db['sequelize'][_0x9ff2('0x37')](_0x45953e[_0x9ff2('0x79')](),{'type':db[_0x9ff2('0x6c')][_0x9ff2('0x7a')][_0x9ff2('0x7b')]})[_0x9ff2('0x28')](function(_0x616557){if(_0x616557['length']===0x1){return _0x5598d1['id'];}else{var _0x196a51=_[_0x9ff2('0x7c')](_[_0x9ff2('0x31')](_0x616557,_0x9ff2('0x7d')),function(_0x3e2c6f){return _['includes'](_0x6af5e6,_0x3e2c6f);});if(_0x196a51){return _0x5598d1['id'];}}}));}}return BPromise[_0x9ff2('0x7e')](_0x427473)['then'](function(_0x193203){_0x42364e=_(_0x42364e)['union'](_0x193203)['compact']()[_0x9ff2('0x7f')]();return db[_0x9ff2('0x32')][_0x9ff2('0x4d')]({'where':{'id':_0x3327ec[_0x9ff2('0x4b')]['id']}})['then'](function(_0x1ef8a2){return db['sequelize']['transaction'](function(_0x1b5249){return _0x1ef8a2['removeTeams'](_0x3327ec[_0x9ff2('0x37')]['ids'],{'transaction':_0x1b5249})[_0x9ff2('0x28')](function(){if(!_[_0x9ff2('0x80')](_0x42364e)){return _0x1ef8a2[_0x9ff2('0x81')](_0x42364e,{'transaction':_0x1b5249});}})[_0x9ff2('0x28')](function(){_0x42364e['forEach'](function(_0xba4c17){socket['emit'](_0x9ff2('0x82'),{'UserId':_0xba4c17,'SmsQueueId':_0x1ef8a2['id']});});});});});});})[_0x9ff2('0x28')](respondWithStatusCode(_0x12f487,null))[_0x9ff2('0x49')](handleError(_0x12f487,null));};exports[_0x9ff2('0x83')]=function(_0x8d6ba9,_0x1d4186,_0x598755){return db[_0x9ff2('0x32')][_0x9ff2('0x4d')]({'where':{'id':_0x8d6ba9['params']['id']}})['then'](handleEntityNotFound(_0x1d4186,null))[_0x9ff2('0x28')](function(_0x108767){if(_0x108767){return _0x108767[_0x9ff2('0x83')](_0x8d6ba9['body'][_0x9ff2('0x68')],_[_0x9ff2('0x84')](_0x8d6ba9[_0x9ff2('0x55')],[_0x9ff2('0x68'),'id'])||{})[_0x9ff2('0x85')](function(_0x98b0d5){for(var _0x58ea8e=0x0;_0x58ea8e<_0x8d6ba9['body'][_0x9ff2('0x68')][_0x9ff2('0x3d')];_0x58ea8e+=0x1){socket[_0x9ff2('0x6f')](_0x9ff2('0x86'),{'UserId':Number(_0x8d6ba9[_0x9ff2('0x55')][_0x9ff2('0x68')][_0x58ea8e]),'SmsQueueId':Number(_0x8d6ba9['params']['id'])});}return _0x98b0d5;});}})[_0x9ff2('0x28')](respondWithResult(_0x1d4186,null))[_0x9ff2('0x49')](handleError(_0x1d4186,null));};exports[_0x9ff2('0x81')]=function(_0x3d2858,_0x5a8143,_0x481fa5){return db[_0x9ff2('0x32')][_0x9ff2('0x4d')]({'where':{'id':_0x3d2858[_0x9ff2('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5a8143,null))['then'](function(_0x382dca){if(_0x382dca){return _0x382dca[_0x9ff2('0x81')](_0x3d2858[_0x9ff2('0x37')][_0x9ff2('0x68')])[_0x9ff2('0x28')](function(){if(_[_0x9ff2('0x87')](_0x3d2858['query'][_0x9ff2('0x68')])){for(var _0x500286=0x0;_0x500286<_0x3d2858[_0x9ff2('0x37')][_0x9ff2('0x68')]['length'];_0x500286+=0x1){socket[_0x9ff2('0x6f')](_0x9ff2('0x82'),{'UserId':Number(_0x3d2858[_0x9ff2('0x37')][_0x9ff2('0x68')][_0x500286]),'SmsQueueId':Number(_0x3d2858[_0x9ff2('0x4b')]['id'])});}}else{socket[_0x9ff2('0x6f')](_0x9ff2('0x82'),{'UserId':Number(_0x3d2858[_0x9ff2('0x37')][_0x9ff2('0x68')]),'SmsQueueId':Number(_0x3d2858[_0x9ff2('0x4b')]['id'])});}});}})[_0x9ff2('0x28')](respondWithStatusCode(_0x5a8143,null))[_0x9ff2('0x49')](handleError(_0x5a8143,null));};exports['getAgents']=function(_0x386578,_0x39da42,_0x3196e2){var _0x248a0e={};var _0x3d3b09={};var _0x61908d;var _0x124042;return db[_0x9ff2('0x32')][_0x9ff2('0x58')]({'where':{'id':_0x386578[_0x9ff2('0x4b')]['id']}})[_0x9ff2('0x28')](handleEntityNotFound(_0x39da42,null))[_0x9ff2('0x28')](function(_0x474073){if(_0x474073){_0x61908d=_0x474073;_0x3d3b09[_0x9ff2('0x36')]=_[_0x9ff2('0x38')](db['User']['rawAttributes']);_0x3d3b09['query']=_['keys'](_0x386578[_0x9ff2('0x37')]);_0x3d3b09['filters']=_['intersection'](_0x3d3b09['model'],_0x3d3b09[_0x9ff2('0x37')]);_0x248a0e[_0x9ff2('0x3b')]=_[_0x9ff2('0x3a')](_0x3d3b09[_0x9ff2('0x36')],qs[_0x9ff2('0x3c')](_0x386578[_0x9ff2('0x37')][_0x9ff2('0x3c')]));_0x248a0e['attributes']=_0x248a0e[_0x9ff2('0x3b')]['length']?_0x248a0e[_0x9ff2('0x3b')]:_0x3d3b09[_0x9ff2('0x36')];_0x248a0e[_0x9ff2('0x5a')]=qs[_0x9ff2('0x40')](_0x386578[_0x9ff2('0x37')][_0x9ff2('0x40')]);_0x248a0e['where']=qs[_0x9ff2('0x39')](_['pick'](_0x386578[_0x9ff2('0x37')],_0x3d3b09[_0x9ff2('0x39')]));if(_0x386578['query']['filter']){_0x248a0e[_0x9ff2('0x41')]=_[_0x9ff2('0x45')](_0x248a0e[_0x9ff2('0x41')],{'$or':_['map'](_0x248a0e['attributes'],function(_0x6947ca){var _0x45e4be={};_0x45e4be[_0x6947ca]={'$like':'%'+_0x386578[_0x9ff2('0x37')]['filter']+'%'};return _0x45e4be;})});}_0x248a0e=_[_0x9ff2('0x45')]({},_0x248a0e,_0x386578[_0x9ff2('0x4c')]);return _0x61908d[_0x9ff2('0x88')](_0x248a0e);}})['then'](function(_0x48427b){if(_0x48427b){_0x124042=_0x48427b[_0x9ff2('0x3d')];if(!_0x386578[_0x9ff2('0x37')][_0x9ff2('0x3e')](_0x9ff2('0x3f'))){_0x248a0e['limit']=qs[_0x9ff2('0x22')](_0x386578[_0x9ff2('0x37')][_0x9ff2('0x22')]);_0x248a0e[_0x9ff2('0x24')]=qs['offset'](_0x386578[_0x9ff2('0x37')][_0x9ff2('0x24')]);}return _0x61908d[_0x9ff2('0x88')](_0x248a0e);}})[_0x9ff2('0x28')](function(_0x33c2bb){if(_0x33c2bb){return _0x33c2bb?{'count':_0x124042,'rows':_0x33c2bb}:null;}})['then'](respondWithResult(_0x39da42,null))[_0x9ff2('0x49')](handleError(_0x39da42,null));};
\ No newline at end of file
index 409b694..1110b33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfac6=['exports','../../mysqldb','SmsQueue','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xfac6,0x18d));var _0x6fac=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfac6[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x6fac('0x0'))['db'][_0x6fac('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x6fac('0x2')](0x0);var events={'afterCreate':_0x6fac('0x3'),'afterUpdate':'update','afterDestroy':_0x6fac('0x4')};function emitEvent(_0x493606){return function(_0x53dbdc,_0x56b66c,_0x23bf9f){SmsQueueEvents['emit'](_0x493606+':'+_0x53dbdc['id'],_0x53dbdc);SmsQueueEvents[_0x6fac('0x5')](_0x493606,_0x53dbdc);_0x23bf9f(null);};}for(var e in events){if(events[_0x6fac('0x6')](e)){var event=events[e];SmsQueue[_0x6fac('0x7')](e,emitEvent(event));}}module[_0x6fac('0x8')]=SmsQueueEvents;
\ No newline at end of file
+var _0x5c84=['hook','exports','../../mysqldb','save','update','hasOwnProperty'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5c84,0xe0));var _0x45c8=function(_0x1ca345,_0x11ee67){_0x1ca345=_0x1ca345-0x0;var _0x3b8965=_0x5c84[_0x1ca345];return _0x3b8965;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x45c8('0x0'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x45c8('0x1'),'afterUpdate':_0x45c8('0x2'),'afterDestroy':'remove'};function emitEvent(_0x1c1fd5){return function(_0x517a6b,_0x2dab7e,_0x3e8491){SmsQueueEvents['emit'](_0x1c1fd5+':'+_0x517a6b['id'],_0x517a6b);SmsQueueEvents['emit'](_0x1c1fd5,_0x517a6b);_0x3e8491(null);};}for(var e in events){if(events[_0x45c8('0x3')](e)){var event=events[e];SmsQueue[_0x45c8('0x4')](e,emitEvent(event));}}module[_0x45c8('0x5')]=SmsQueueEvents;
\ No newline at end of file
index 425e49b..dba79bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a7e=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueue.attributes','exports','define','sms_queues'];(function(_0x501336,_0x3dd3ea){var _0x458774=function(_0x1664bf){while(--_0x1664bf){_0x501336['push'](_0x501336['shift']());}};_0x458774(++_0x3dd3ea);}(_0x7a7e,0x1ad));var _0xe7a7=function(_0x12aa46,_0x3692db){_0x12aa46=_0x12aa46-0x0;var _0x4dc44c=_0x7a7e[_0x12aa46];return _0x4dc44c;};'use strict';var _=require(_0xe7a7('0x0'));var util=require('util');var logger=require(_0xe7a7('0x1'))(_0xe7a7('0x2'));var moment=require(_0xe7a7('0x3'));var BPromise=require(_0xe7a7('0x4'));var rp=require(_0xe7a7('0x5'));var fs=require('fs');var path=require(_0xe7a7('0x6'));var rimraf=require(_0xe7a7('0x7'));var config=require(_0xe7a7('0x8'));var attributes=require(_0xe7a7('0x9'));module[_0xe7a7('0xa')]=function(_0x24e1cf,_0x3227d5){return _0x24e1cf[_0xe7a7('0xb')]('SmsQueue',attributes,{'tableName':_0xe7a7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x926e=['moment','bluebird','request-promise','./smsQueue.attributes','exports','define','SmsQueue','sms_queues','lodash','util','../../config/logger','api'];(function(_0x16ffe2,_0x2f73ed){var _0x4193e5=function(_0x5f0de3){while(--_0x5f0de3){_0x16ffe2['push'](_0x16ffe2['shift']());}};_0x4193e5(++_0x2f73ed);}(_0x926e,0xf8));var _0xe926=function(_0x344e50,_0x49123b){_0x344e50=_0x344e50-0x0;var _0x1ec3e6=_0x926e[_0x344e50];return _0x1ec3e6;};'use strict';var _=require(_0xe926('0x0'));var util=require(_0xe926('0x1'));var logger=require(_0xe926('0x2'))(_0xe926('0x3'));var moment=require(_0xe926('0x4'));var BPromise=require(_0xe926('0x5'));var rp=require(_0xe926('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe926('0x7'));module[_0xe926('0x8')]=function(_0x1120b4,_0x59cc36){return _0x1120b4[_0xe926('0x9')](_0xe926('0xa'),attributes,{'tableName':_0xe926('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 958c48d..ddbcac3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c73=['../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetSmsQueue','SmsQueue','findAll','options','attributes','limit','include','model','map','info','ShowSmsQueue','raw','where','util','moment','bluebird','randomstring','ioredis'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x6c73,0x10c));var _0x36c7=function(_0x282e7a,_0x36d4ed){_0x282e7a=_0x282e7a-0x0;var _0x1395cc=_0x6c73[_0x282e7a];return _0x1395cc;};'use strict';var _=require('lodash');var util=require(_0x36c7('0x0'));var moment=require(_0x36c7('0x1'));var BPromise=require(_0x36c7('0x2'));var rs=require(_0x36c7('0x3'));var fs=require('fs');var Redis=require(_0x36c7('0x4'));var db=require(_0x36c7('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x36c7('0x6'));var config=require(_0x36c7('0x7'));var jayson=require(_0x36c7('0x8'));var client=jayson[_0x36c7('0x9')][_0x36c7('0xa')]({'port':0x232a});config[_0x36c7('0xb')]=_['defaults'](config[_0x36c7('0xb')],{'host':_0x36c7('0xc'),'port':0x18eb});var socket=require(_0x36c7('0xd'))(new Redis(config[_0x36c7('0xb')]));require('./smsQueue.socket')[_0x36c7('0xe')](socket);function respondWithRpcPromise(_0x11452f,_0x38171d,_0x4a9182){return new BPromise(function(_0xf5bc4,_0xdf55b2){return client[_0x36c7('0xf')](_0x11452f,_0x4a9182)[_0x36c7('0x10')](function(_0x570e4e){logger['info'](_0x36c7('0x11'),_0x38171d,_0x36c7('0x12'));logger[_0x36c7('0x13')](_0x36c7('0x14'),_0x38171d,_0x36c7('0x12'),JSON[_0x36c7('0x15')](_0x570e4e));if(_0x570e4e[_0x36c7('0x16')]){if(_0x570e4e[_0x36c7('0x16')]['code']===0x1f4){logger[_0x36c7('0x16')](_0x36c7('0x11'),_0x38171d,_0x570e4e[_0x36c7('0x16')][_0x36c7('0x17')]);return _0xdf55b2(_0x570e4e['error'][_0x36c7('0x17')]);}logger[_0x36c7('0x16')]('SmsQueue,\x20%s,\x20%s',_0x38171d,_0x570e4e[_0x36c7('0x16')][_0x36c7('0x17')]);return _0xf5bc4(_0x570e4e[_0x36c7('0x16')][_0x36c7('0x17')]);}else{logger['info']('SmsQueue,\x20%s,\x20%s',_0x38171d,'request\x20sent');_0xf5bc4(_0x570e4e[_0x36c7('0x18')][_0x36c7('0x17')]);}})[_0x36c7('0x19')](function(_0x488da8){logger[_0x36c7('0x16')]('SmsQueue,\x20%s,\x20%s',_0x38171d,_0x488da8);_0xdf55b2(_0x488da8);});});}exports[_0x36c7('0x1a')]=function(_0x543833){var _0x4f564c=this;return new Promise(function(_0x55eb97,_0x2602a5){return db[_0x36c7('0x1b')][_0x36c7('0x1c')]({'raw':_0x543833[_0x36c7('0x1d')]?_0x543833[_0x36c7('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x543833['options']?_0x543833[_0x36c7('0x1d')]['where']||null:null,'attributes':_0x543833[_0x36c7('0x1d')]?_0x543833[_0x36c7('0x1d')][_0x36c7('0x1e')]||null:null,'limit':_0x543833['options']?_0x543833[_0x36c7('0x1d')][_0x36c7('0x1f')]||null:null,'include':_0x543833['options']?_0x543833[_0x36c7('0x1d')][_0x36c7('0x20')]?_['map'](_0x543833['options'][_0x36c7('0x20')],function(_0x292b24){return{'model':db[_0x292b24[_0x36c7('0x21')]],'as':_0x292b24['as'],'attributes':_0x292b24[_0x36c7('0x1e')],'include':_0x292b24[_0x36c7('0x20')]?_['map'](_0x292b24[_0x36c7('0x20')],function(_0x38cf2f){return{'model':db[_0x38cf2f[_0x36c7('0x21')]],'as':_0x38cf2f['as'],'attributes':_0x38cf2f[_0x36c7('0x1e')],'include':_0x38cf2f[_0x36c7('0x20')]?_[_0x36c7('0x22')](_0x38cf2f[_0x36c7('0x20')],function(_0x107f67){return{'model':db[_0x107f67['model']],'as':_0x107f67['as'],'attributes':_0x107f67[_0x36c7('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x36c7('0x10')](function(_0x2f3833){logger[_0x36c7('0x23')](_0x36c7('0x1a'),_0x543833);logger['debug'](_0x36c7('0x1a'),_0x543833,JSON[_0x36c7('0x15')](_0x2f3833));_0x55eb97(_0x2f3833);})['catch'](function(_0x1d9c4d){logger[_0x36c7('0x16')](_0x36c7('0x1a'),_0x1d9c4d[_0x36c7('0x17')],_0x543833);_0x2602a5(_0x4f564c[_0x36c7('0x16')](0x1f4,_0x1d9c4d[_0x36c7('0x17')]));});});};exports[_0x36c7('0x24')]=function(_0x280dee){var _0x406b41=this;return new Promise(function(_0x59f5d4,_0x5bc55e){return db[_0x36c7('0x1b')]['find']({'raw':_0x280dee[_0x36c7('0x1d')]?_0x280dee[_0x36c7('0x1d')][_0x36c7('0x25')]===undefined?!![]:![]:!![],'where':_0x280dee['options']?_0x280dee[_0x36c7('0x1d')][_0x36c7('0x26')]||null:null,'attributes':_0x280dee['options']?_0x280dee[_0x36c7('0x1d')][_0x36c7('0x1e')]||null:null,'include':_0x280dee[_0x36c7('0x1d')]?_0x280dee[_0x36c7('0x1d')][_0x36c7('0x20')]?_['map'](_0x280dee[_0x36c7('0x1d')]['include'],function(_0x414a30){return{'model':db[_0x414a30['model']],'as':_0x414a30['as'],'attributes':_0x414a30[_0x36c7('0x1e')],'include':_0x414a30[_0x36c7('0x20')]?_[_0x36c7('0x22')](_0x414a30[_0x36c7('0x20')],function(_0xc0a2a1){return{'model':db[_0xc0a2a1[_0x36c7('0x21')]],'as':_0xc0a2a1['as'],'attributes':_0xc0a2a1['attributes'],'include':_0xc0a2a1['include']?_['map'](_0xc0a2a1[_0x36c7('0x20')],function(_0x463dc7){return{'model':db[_0x463dc7[_0x36c7('0x21')]],'as':_0x463dc7['as'],'attributes':_0x463dc7[_0x36c7('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x525a0f){logger[_0x36c7('0x23')]('ShowSmsQueue',_0x280dee);logger[_0x36c7('0x13')](_0x36c7('0x24'),_0x280dee,JSON[_0x36c7('0x15')](_0x525a0f));_0x59f5d4(_0x525a0f);})['catch'](function(_0x4f2059){logger['error'](_0x36c7('0x24'),_0x4f2059['message'],_0x280dee);_0x5bc55e(_0x406b41[_0x36c7('0x16')](0x1f4,_0x4f2059[_0x36c7('0x17')]));});});};
\ No newline at end of file
+var _0xa7f5=['../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','request','then','info','SmsQueue,\x20%s,\x20%s','debug','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetSmsQueue','findAll','options','where','attributes','limit','include','map','model','ShowSmsQueue','SmsQueue','raw','lodash','util','moment','randomstring','../../mysqldb','../../config/utils'];(function(_0x1085db,_0x41e087){var _0x392a60=function(_0xc7f75d){while(--_0xc7f75d){_0x1085db['push'](_0x1085db['shift']());}};_0x392a60(++_0x41e087);}(_0xa7f5,0x119));var _0x5a7f=function(_0xdb1488,_0x2dfad6){_0xdb1488=_0xdb1488-0x0;var _0x45be2a=_0xa7f5[_0xdb1488];return _0x45be2a;};'use strict';var _=require(_0x5a7f('0x0'));var util=require(_0x5a7f('0x1'));var moment=require(_0x5a7f('0x2'));var BPromise=require('bluebird');var rs=require(_0x5a7f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5a7f('0x4'))['db'];var utils=require(_0x5a7f('0x5'));var logger=require(_0x5a7f('0x6'))(_0x5a7f('0x7'));var config=require(_0x5a7f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5a7f('0x9')]['http']({'port':0x232a});config[_0x5a7f('0xa')]=_[_0x5a7f('0xb')](config[_0x5a7f('0xa')],{'host':_0x5a7f('0xc'),'port':0x18eb});var socket=require(_0x5a7f('0xd'))(new Redis(config[_0x5a7f('0xa')]));require(_0x5a7f('0xe'))[_0x5a7f('0xf')](socket);function respondWithRpcPromise(_0x4141ba,_0xa25cbc,_0x5e3f8d){return new BPromise(function(_0xab1334,_0x12c267){return client[_0x5a7f('0x10')](_0x4141ba,_0x5e3f8d)[_0x5a7f('0x11')](function(_0x2943b7){logger[_0x5a7f('0x12')](_0x5a7f('0x13'),_0xa25cbc,'request\x20sent');logger[_0x5a7f('0x14')](_0x5a7f('0x15'),_0xa25cbc,_0x5a7f('0x16'),JSON[_0x5a7f('0x17')](_0x2943b7));if(_0x2943b7[_0x5a7f('0x18')]){if(_0x2943b7[_0x5a7f('0x18')][_0x5a7f('0x19')]===0x1f4){logger[_0x5a7f('0x18')](_0x5a7f('0x13'),_0xa25cbc,_0x2943b7[_0x5a7f('0x18')][_0x5a7f('0x1a')]);return _0x12c267(_0x2943b7[_0x5a7f('0x18')][_0x5a7f('0x1a')]);}logger[_0x5a7f('0x18')](_0x5a7f('0x13'),_0xa25cbc,_0x2943b7[_0x5a7f('0x18')][_0x5a7f('0x1a')]);return _0xab1334(_0x2943b7[_0x5a7f('0x18')][_0x5a7f('0x1a')]);}else{logger[_0x5a7f('0x12')](_0x5a7f('0x13'),_0xa25cbc,_0x5a7f('0x16'));_0xab1334(_0x2943b7[_0x5a7f('0x1b')]['message']);}})[_0x5a7f('0x1c')](function(_0x2082fb){logger[_0x5a7f('0x18')](_0x5a7f('0x13'),_0xa25cbc,_0x2082fb);_0x12c267(_0x2082fb);});});}exports[_0x5a7f('0x1d')]=function(_0x541729){var _0x2e56f5=this;return new Promise(function(_0x51b4cf,_0x1963ff){return db['SmsQueue'][_0x5a7f('0x1e')]({'raw':_0x541729[_0x5a7f('0x1f')]?_0x541729['options']['raw']===undefined?!![]:![]:!![],'where':_0x541729[_0x5a7f('0x1f')]?_0x541729[_0x5a7f('0x1f')][_0x5a7f('0x20')]||null:null,'attributes':_0x541729[_0x5a7f('0x1f')]?_0x541729[_0x5a7f('0x1f')][_0x5a7f('0x21')]||null:null,'limit':_0x541729[_0x5a7f('0x1f')]?_0x541729['options'][_0x5a7f('0x22')]||null:null,'include':_0x541729[_0x5a7f('0x1f')]?_0x541729[_0x5a7f('0x1f')][_0x5a7f('0x23')]?_['map'](_0x541729[_0x5a7f('0x1f')][_0x5a7f('0x23')],function(_0x59d8e8){return{'model':db[_0x59d8e8['model']],'as':_0x59d8e8['as'],'attributes':_0x59d8e8['attributes'],'include':_0x59d8e8[_0x5a7f('0x23')]?_[_0x5a7f('0x24')](_0x59d8e8[_0x5a7f('0x23')],function(_0x535420){return{'model':db[_0x535420[_0x5a7f('0x25')]],'as':_0x535420['as'],'attributes':_0x535420[_0x5a7f('0x21')],'include':_0x535420['include']?_[_0x5a7f('0x24')](_0x535420[_0x5a7f('0x23')],function(_0x4b1c4e){return{'model':db[_0x4b1c4e[_0x5a7f('0x25')]],'as':_0x4b1c4e['as'],'attributes':_0x4b1c4e[_0x5a7f('0x21')]};}):[]};}):[]};}):[]:[]})[_0x5a7f('0x11')](function(_0x26f31c){logger[_0x5a7f('0x12')](_0x5a7f('0x1d'),_0x541729);logger[_0x5a7f('0x14')](_0x5a7f('0x1d'),_0x541729,JSON[_0x5a7f('0x17')](_0x26f31c));_0x51b4cf(_0x26f31c);})[_0x5a7f('0x1c')](function(_0x1d6bc9){logger[_0x5a7f('0x18')]('GetSmsQueue',_0x1d6bc9[_0x5a7f('0x1a')],_0x541729);_0x1963ff(_0x2e56f5[_0x5a7f('0x18')](0x1f4,_0x1d6bc9[_0x5a7f('0x1a')]));});});};exports[_0x5a7f('0x26')]=function(_0x1715be){var _0x161b07=this;return new Promise(function(_0x228bab,_0x567d67){return db[_0x5a7f('0x27')]['find']({'raw':_0x1715be['options']?_0x1715be[_0x5a7f('0x1f')][_0x5a7f('0x28')]===undefined?!![]:![]:!![],'where':_0x1715be[_0x5a7f('0x1f')]?_0x1715be[_0x5a7f('0x1f')][_0x5a7f('0x20')]||null:null,'attributes':_0x1715be[_0x5a7f('0x1f')]?_0x1715be[_0x5a7f('0x1f')][_0x5a7f('0x21')]||null:null,'include':_0x1715be['options']?_0x1715be[_0x5a7f('0x1f')]['include']?_['map'](_0x1715be['options'][_0x5a7f('0x23')],function(_0x3bec18){return{'model':db[_0x3bec18[_0x5a7f('0x25')]],'as':_0x3bec18['as'],'attributes':_0x3bec18[_0x5a7f('0x21')],'include':_0x3bec18[_0x5a7f('0x23')]?_[_0x5a7f('0x24')](_0x3bec18[_0x5a7f('0x23')],function(_0x2e5719){return{'model':db[_0x2e5719['model']],'as':_0x2e5719['as'],'attributes':_0x2e5719['attributes'],'include':_0x2e5719['include']?_[_0x5a7f('0x24')](_0x2e5719[_0x5a7f('0x23')],function(_0x125b43){return{'model':db[_0x125b43['model']],'as':_0x125b43['as'],'attributes':_0x125b43[_0x5a7f('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x6893cc){logger[_0x5a7f('0x12')](_0x5a7f('0x26'),_0x1715be);logger[_0x5a7f('0x14')]('ShowSmsQueue',_0x1715be,JSON[_0x5a7f('0x17')](_0x6893cc));_0x228bab(_0x6893cc);})[_0x5a7f('0x1c')](function(_0x519007){logger[_0x5a7f('0x18')](_0x5a7f('0x26'),_0x519007['message'],_0x1715be);_0x567d67(_0x161b07['error'](0x1f4,_0x519007[_0x5a7f('0x1a')]));});});};
\ No newline at end of file
index 1359974..d9b15fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd075=['removeListener','register','save','remove','update'];(function(_0x163040,_0x38a58c){var _0x364667=function(_0x3b104f){while(--_0x3b104f){_0x163040['push'](_0x163040['shift']());}};_0x364667(++_0x38a58c);}(_0xd075,0xc0));var _0x5d07=function(_0x3d70f2,_0x9db2a1){_0x3d70f2=_0x3d70f2-0x0;var _0x2455fd=_0xd075[_0x3d70f2];return _0x2455fd;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=[_0x5d07('0x0'),_0x5d07('0x1'),_0x5d07('0x2')];function createListener(_0x25e991,_0x514a2d){return function(_0x360048){_0x514a2d['emit'](_0x25e991,_0x360048);};}function removeListener(_0x195b71,_0x56baa3){return function(){SmsQueueEvents[_0x5d07('0x3')](_0x195b71,_0x56baa3);};}exports[_0x5d07('0x4')]=function(_0x37a766){for(var _0x24e832=0x0,_0x107347=events['length'];_0x24e832<_0x107347;_0x24e832++){var _0xf43fc9=events[_0x24e832];var _0x1eb769=createListener('smsQueue:'+_0xf43fc9,_0x37a766);SmsQueueEvents['on'](_0xf43fc9,_0x1eb769);}};
\ No newline at end of file
+var _0x9e4f=['register','length','smsQueue:','./smsQueue.events','remove','emit','removeListener'];(function(_0x492d7e,_0x2b8ed4){var _0x44df77=function(_0x58f836){while(--_0x58f836){_0x492d7e['push'](_0x492d7e['shift']());}};_0x44df77(++_0x2b8ed4);}(_0x9e4f,0x16f));var _0xf9e4=function(_0x177a17,_0x3739fe){_0x177a17=_0x177a17-0x0;var _0x5a14a2=_0x9e4f[_0x177a17];return _0x5a14a2;};'use strict';var SmsQueueEvents=require(_0xf9e4('0x0'));var events=['save',_0xf9e4('0x1'),'update'];function createListener(_0x4dd14e,_0x347399){return function(_0x399a4a){_0x347399[_0xf9e4('0x2')](_0x4dd14e,_0x399a4a);};}function removeListener(_0xfeacb4,_0x241963){return function(){SmsQueueEvents[_0xf9e4('0x3')](_0xfeacb4,_0x241963);};}exports[_0xf9e4('0x4')]=function(_0x4689c9){for(var _0x3e740c=0x0,_0x42158d=events[_0xf9e4('0x5')];_0x3e740c<_0x42158d;_0x3e740c++){var _0x50e7b5=events[_0x3e740c];var _0x4496bc=createListener(_0xf9e4('0x6')+_0x50e7b5,_0x4689c9);SmsQueueEvents['on'](_0x50e7b5,_0x4496bc);}};
\ No newline at end of file
index ce1c813..cb08c73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d3d=['create','put','update','/:id','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index','/describe','show'];(function(_0x5d8f9e,_0x2211b6){var _0x5208e0=function(_0x1d06f6){while(--_0x1d06f6){_0x5d8f9e['push'](_0x5d8f9e['shift']());}};_0x5208e0(++_0x2211b6);}(_0x3d3d,0x12c));var _0xd3d3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3d3d[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xd3d3('0x0'));var path=require(_0xd3d3('0x1'));var timeout=require(_0xd3d3('0x2'));var express=require(_0xd3d3('0x3'));var router=express[_0xd3d3('0x4')]();var fs_extra=require(_0xd3d3('0x5'));var auth=require(_0xd3d3('0x6'));var interaction=require(_0xd3d3('0x7'));var config=require(_0xd3d3('0x8'));var controller=require(_0xd3d3('0x9'));router[_0xd3d3('0xa')]('/',auth[_0xd3d3('0xb')](),controller[_0xd3d3('0xc')]);router['get'](_0xd3d3('0xd'),auth[_0xd3d3('0xb')](),controller['describe']);router[_0xd3d3('0xa')]('/:id',auth[_0xd3d3('0xb')](),controller[_0xd3d3('0xe')]);router['post']('/',auth[_0xd3d3('0xb')](),controller[_0xd3d3('0xf')]);router[_0xd3d3('0x10')]('/:id',auth[_0xd3d3('0xb')](),controller[_0xd3d3('0x11')]);router['delete'](_0xd3d3('0x12'),auth['isAuthenticated'](),controller[_0xd3d3('0x13')]);module[_0xd3d3('0x14')]=router;
\ No newline at end of file
+var _0x2159=['put','update','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index','describe','/:id','post','create'];(function(_0x4539d9,_0x181f3a){var _0x556be5=function(_0x5edf7d){while(--_0x5edf7d){_0x4539d9['push'](_0x4539d9['shift']());}};_0x556be5(++_0x181f3a);}(_0x2159,0x17f));var _0x9215=function(_0x4feac3,_0x27a353){_0x4feac3=_0x4feac3-0x0;var _0x3d9673=_0x2159[_0x4feac3];return _0x3d9673;};'use strict';var multer=require(_0x9215('0x0'));var util=require(_0x9215('0x1'));var path=require(_0x9215('0x2'));var timeout=require(_0x9215('0x3'));var express=require('express');var router=express[_0x9215('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9215('0x5'));var interaction=require(_0x9215('0x6'));var config=require(_0x9215('0x7'));var controller=require(_0x9215('0x8'));router[_0x9215('0x9')]('/',auth[_0x9215('0xa')](),controller[_0x9215('0xb')]);router[_0x9215('0x9')]('/describe',auth[_0x9215('0xa')](),controller[_0x9215('0xc')]);router[_0x9215('0x9')](_0x9215('0xd'),auth[_0x9215('0xa')](),controller['show']);router[_0x9215('0xe')]('/',auth[_0x9215('0xa')](),controller[_0x9215('0xf')]);router[_0x9215('0x10')]('/:id',auth[_0x9215('0xa')](),controller[_0x9215('0x11')]);router['delete'](_0x9215('0xd'),auth[_0x9215('0xa')](),controller['destroy']);module[_0x9215('0x12')]=router;
\ No newline at end of file
index d201fa9..dd6cbed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf398=['DATE','moment','sequelize','exports','STRING'];(function(_0xbb0ce8,_0xb63549){var _0x1a1b17=function(_0x171af3){while(--_0x171af3){_0xbb0ce8['push'](_0xbb0ce8['shift']());}};_0x1a1b17(++_0xb63549);}(_0xf398,0x10a));var _0x8f39=function(_0x541613,_0x2cd0ab){_0x541613=_0x541613-0x0;var _0x3f8531=_0xf398[_0x541613];return _0x3f8531;};'use strict';var moment=require(_0x8f39('0x0'));var Sequelize=require(_0x8f39('0x1'));module[_0x8f39('0x2')]={'uniqueid':{'type':Sequelize[_0x8f39('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x8f39('0x3')]},'joinAt':{'type':Sequelize[_0x8f39('0x4')]},'leaveAt':{'type':Sequelize[_0x8f39('0x4')]},'acceptAt':{'type':Sequelize[_0x8f39('0x4')]},'exitAt':{'type':Sequelize[_0x8f39('0x4')]},'reason':{'type':Sequelize[_0x8f39('0x3')]}};
\ No newline at end of file
+var _0xafae=['DATE','STRING','moment','sequelize','exports'];(function(_0x23ab1e,_0x3ac359){var _0x3db16a=function(_0x2f9628){while(--_0x2f9628){_0x23ab1e['push'](_0x23ab1e['shift']());}};_0x3db16a(++_0x3ac359);}(_0xafae,0x98));var _0xeafa=function(_0x5f4e17,_0x21bebd){_0x5f4e17=_0x5f4e17-0x0;var _0x2820af=_0xafae[_0x5f4e17];return _0x2820af;};'use strict';var moment=require(_0xeafa('0x0'));var Sequelize=require(_0xeafa('0x1'));module[_0xeafa('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xeafa('0x3')]},'leaveAt':{'type':Sequelize[_0xeafa('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xeafa('0x4')]}};
\ No newline at end of file
index 88dc180..57aa4a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07d1=['ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','json','save','update','then','destroy','stack','name','send','index','map','SmsQueueReport','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','includeAll','findAll','rows','catch','params','keys','include','options','create','body','find','describe','eml-format','rimraf','request-promise','moment','mustache','path','to-csv'];(function(_0xae8833,_0x2e662d){var _0x5cc960=function(_0x52c967){while(--_0x52c967){_0xae8833['push'](_0xae8833['shift']());}};_0x5cc960(++_0x2e662d);}(_0x07d1,0x157));var _0x107d=function(_0x29bb0a,_0x4a49e6){_0x29bb0a=_0x29bb0a-0x0;var _0x1725e4=_0x07d1[_0x29bb0a];return _0x1725e4;};'use strict';var emlformat=require(_0x107d('0x0'));var rimraf=require(_0x107d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x107d('0x2'));var moment=require(_0x107d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x107d('0x4'));var util=require('util');var path=require(_0x107d('0x5'));var sox=require('sox');var csv=require(_0x107d('0x6'));var ejs=require(_0x107d('0x7'));var fs=require('fs');var fs_extra=require(_0x107d('0x8'));var _=require('lodash');var squel=require(_0x107d('0x9'));var crypto=require('crypto');var jsforce=require(_0x107d('0xa'));var deskjs=require(_0x107d('0xb'));var toCsv=require(_0x107d('0x6'));var querystring=require(_0x107d('0xc'));var Papa=require(_0x107d('0xd'));var Redis=require(_0x107d('0xe'));var authService=require(_0x107d('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x107d('0x10'));var hardwareService=require(_0x107d('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x107d('0x12'));var licenseUtil=require(_0x107d('0x13'));var db=require(_0x107d('0x14'))['db'];function respondWithStatusCode(_0x9e5921,_0x450c1b){_0x450c1b=_0x450c1b||0xcc;return function(_0x931751){if(_0x931751){return _0x9e5921[_0x107d('0x15')](_0x450c1b);}return _0x9e5921[_0x107d('0x16')](_0x450c1b)[_0x107d('0x17')]();};}function respondWithResult(_0x1f4d7b,_0x51dea0){_0x51dea0=_0x51dea0||0xc8;return function(_0x5e45f3){if(_0x5e45f3){return _0x1f4d7b[_0x107d('0x16')](_0x51dea0)['json'](_0x5e45f3);}};}function respondWithFilteredResult(_0x3feb8f,_0x3225e6){return function(_0x1d66b1){if(_0x1d66b1){var _0xd7feb0=typeof _0x3225e6[_0x107d('0x18')]===_0x107d('0x19')&&typeof _0x3225e6[_0x107d('0x1a')]===_0x107d('0x19');var _0x2ee1a6=_0x1d66b1[_0x107d('0x1b')];var _0xb89846=_0xd7feb0?0x0:_0x3225e6[_0x107d('0x18')];var _0x5b51ff=_0xd7feb0?_0x1d66b1[_0x107d('0x1b')]:_0x3225e6[_0x107d('0x18')]+_0x3225e6[_0x107d('0x1a')];var _0x1b40b7;if(_0x5b51ff>=_0x2ee1a6){_0x5b51ff=_0x2ee1a6;_0x1b40b7=0xc8;}else{_0x1b40b7=0xce;}_0x3feb8f[_0x107d('0x16')](_0x1b40b7);return _0x3feb8f['set']('Content-Range',_0xb89846+'-'+_0x5b51ff+'/'+_0x2ee1a6)[_0x107d('0x1c')](_0x1d66b1);}return null;};}function patchUpdates(_0x49302e){return function(_0x5bab60){try{jsonpatch['apply'](_0x5bab60,_0x49302e,!![]);}catch(_0x90c236){return BPromise['reject'](_0x90c236);}return _0x5bab60[_0x107d('0x1d')]();};}function saveUpdates(_0x22db22,_0x28ddcb){return function(_0x1f477b){if(_0x1f477b){return _0x1f477b[_0x107d('0x1e')](_0x22db22)[_0x107d('0x1f')](function(_0x39424f){return _0x39424f;});}return null;};}function removeEntity(_0x396b9d,_0x42e5f4){return function(_0x447020){if(_0x447020){return _0x447020[_0x107d('0x20')]()['then'](function(){_0x396b9d['status'](0xcc)[_0x107d('0x17')]();});}};}function handleEntityNotFound(_0x150efc,_0x2c9f08){return function(_0x49bd14){if(!_0x49bd14){_0x150efc['sendStatus'](0x194);}return _0x49bd14;};}function handleError(_0x2efc2b,_0x1e542f){_0x1e542f=_0x1e542f||0x1f4;return function(_0x10cb13){logger['error'](_0x10cb13[_0x107d('0x21')]);if(_0x10cb13['name']){delete _0x10cb13[_0x107d('0x22')];}_0x2efc2b[_0x107d('0x16')](_0x1e542f)[_0x107d('0x23')](_0x10cb13);};}exports[_0x107d('0x24')]=function(_0x2f6450,_0x537e35){var _0xd5eb9b={},_0x3af887={},_0x21e4ee={'count':0x0,'rows':[]};var _0x49dd46=_[_0x107d('0x25')](db[_0x107d('0x26')][_0x107d('0x27')],function(_0x4cafad){return{'name':_0x4cafad[_0x107d('0x28')],'type':_0x4cafad[_0x107d('0x29')][_0x107d('0x2a')]};});_0x3af887['model']=_[_0x107d('0x25')](_0x49dd46,'name');_0x3af887['query']=_['keys'](_0x2f6450[_0x107d('0x2b')]);_0x3af887['filters']=_[_0x107d('0x2c')](_0x3af887[_0x107d('0x2d')],_0x3af887[_0x107d('0x2b')]);_0xd5eb9b[_0x107d('0x2e')]=_[_0x107d('0x2c')](_0x3af887[_0x107d('0x2d')],qs[_0x107d('0x2f')](_0x2f6450[_0x107d('0x2b')][_0x107d('0x2f')]));_0xd5eb9b[_0x107d('0x2e')]=_0xd5eb9b[_0x107d('0x2e')][_0x107d('0x30')]?_0xd5eb9b[_0x107d('0x2e')]:_0x3af887[_0x107d('0x2d')];if(!_0x2f6450[_0x107d('0x2b')]['hasOwnProperty'](_0x107d('0x31'))){_0xd5eb9b[_0x107d('0x1a')]=qs['limit'](_0x2f6450['query'][_0x107d('0x1a')]);_0xd5eb9b[_0x107d('0x18')]=qs['offset'](_0x2f6450['query'][_0x107d('0x18')]);}_0xd5eb9b[_0x107d('0x32')]=qs[_0x107d('0x33')](_0x2f6450[_0x107d('0x2b')][_0x107d('0x33')]);_0xd5eb9b['where']=qs[_0x107d('0x34')](_[_0x107d('0x35')](_0x2f6450[_0x107d('0x2b')],_0x3af887[_0x107d('0x34')]),_0x49dd46);if(_0x2f6450['query'][_0x107d('0x36')]){_0xd5eb9b[_0x107d('0x37')]=_[_0x107d('0x38')](_0xd5eb9b[_0x107d('0x37')],{'$or':_['map'](_0x49dd46,function(_0x591286){if(_0x591286[_0x107d('0x29')]!==_0x107d('0x39')){var _0x11e78e={};_0x11e78e[_0x591286[_0x107d('0x22')]]={'$like':'%'+_0x2f6450['query'][_0x107d('0x36')]+'%'};return _0x11e78e;}})});}_0xd5eb9b=_[_0x107d('0x38')]({},_0xd5eb9b,_0x2f6450['options']);var _0x41877e={'where':_0xd5eb9b['where']};return db['SmsQueueReport'][_0x107d('0x1b')](_0x41877e)['then'](function(_0x228644){_0x21e4ee[_0x107d('0x1b')]=_0x228644;if(_0x2f6450[_0x107d('0x2b')][_0x107d('0x3a')]){_0xd5eb9b['include']=[{'all':!![]}];}return db[_0x107d('0x26')][_0x107d('0x3b')](_0xd5eb9b);})['then'](function(_0x459ead){_0x21e4ee[_0x107d('0x3c')]=_0x459ead;return _0x21e4ee;})['then'](respondWithFilteredResult(_0x537e35,_0xd5eb9b))[_0x107d('0x3d')](handleError(_0x537e35,null));};exports['show']=function(_0x36b5d4,_0x42c316){var _0x2323e8={'raw':!![],'where':{'id':_0x36b5d4[_0x107d('0x3e')]['id']}},_0x3103eb={};_0x3103eb['model']=_[_0x107d('0x3f')](db[_0x107d('0x26')][_0x107d('0x27')]);_0x3103eb[_0x107d('0x2b')]=_['keys'](_0x36b5d4['query']);_0x3103eb[_0x107d('0x34')]=_['intersection'](_0x3103eb[_0x107d('0x2d')],_0x3103eb[_0x107d('0x2b')]);_0x2323e8['attributes']=_[_0x107d('0x2c')](_0x3103eb['model'],qs[_0x107d('0x2f')](_0x36b5d4[_0x107d('0x2b')][_0x107d('0x2f')]));_0x2323e8[_0x107d('0x2e')]=_0x2323e8[_0x107d('0x2e')][_0x107d('0x30')]?_0x2323e8[_0x107d('0x2e')]:_0x3103eb[_0x107d('0x2d')];if(_0x36b5d4[_0x107d('0x2b')][_0x107d('0x3a')]){_0x2323e8[_0x107d('0x40')]=[{'all':!![]}];}_0x2323e8=_[_0x107d('0x38')]({},_0x2323e8,_0x36b5d4[_0x107d('0x41')]);return db[_0x107d('0x26')]['find'](_0x2323e8)[_0x107d('0x1f')](handleEntityNotFound(_0x42c316,null))[_0x107d('0x1f')](respondWithResult(_0x42c316,null))[_0x107d('0x3d')](handleError(_0x42c316,null));};exports[_0x107d('0x42')]=function(_0x124ae1,_0x482857){return db['SmsQueueReport']['create'](_0x124ae1[_0x107d('0x43')],{})[_0x107d('0x1f')](respondWithResult(_0x482857,0xc9))[_0x107d('0x3d')](handleError(_0x482857,null));};exports['update']=function(_0x578d19,_0x597532){if(_0x578d19['body']['id']){delete _0x578d19[_0x107d('0x43')]['id'];}return db[_0x107d('0x26')][_0x107d('0x44')]({'where':{'id':_0x578d19[_0x107d('0x3e')]['id']}})['then'](handleEntityNotFound(_0x597532,null))[_0x107d('0x1f')](saveUpdates(_0x578d19[_0x107d('0x43')],null))[_0x107d('0x1f')](respondWithResult(_0x597532,null))[_0x107d('0x3d')](handleError(_0x597532,null));};exports[_0x107d('0x20')]=function(_0x332e68,_0x256195){return db[_0x107d('0x26')][_0x107d('0x44')]({'where':{'id':_0x332e68[_0x107d('0x3e')]['id']}})[_0x107d('0x1f')](handleEntityNotFound(_0x256195,null))[_0x107d('0x1f')](removeEntity(_0x256195,null))[_0x107d('0x3d')](handleError(_0x256195,null));};exports[_0x107d('0x45')]=function(_0x1e8d9e,_0x1af510){return db['SmsQueueReport'][_0x107d('0x45')]()[_0x107d('0x1f')](respondWithResult(_0x1af510,null))[_0x107d('0x3d')](handleError(_0x1af510,null));};
\ No newline at end of file
+var _0x8012=['includeAll','include','findAll','catch','show','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','map','rawAttributes','fieldName','type','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','options','SmsQueueReport'];(function(_0x13feca,_0x291c2f){var _0x58cca1=function(_0x8a0ab7){while(--_0x8a0ab7){_0x13feca['push'](_0x13feca['shift']());}};_0x58cca1(++_0x291c2f);}(_0x8012,0x186));var _0x2801=function(_0x2f1762,_0xab43df){_0x2f1762=_0x2f1762-0x0;var _0x8ab21=_0x8012[_0x2f1762];return _0x8ab21;};'use strict';var emlformat=require(_0x2801('0x0'));var rimraf=require(_0x2801('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2801('0x2'));var rp=require(_0x2801('0x3'));var moment=require(_0x2801('0x4'));var BPromise=require(_0x2801('0x5'));var Mustache=require(_0x2801('0x6'));var util=require(_0x2801('0x7'));var path=require('path');var sox=require(_0x2801('0x8'));var csv=require('to-csv');var ejs=require(_0x2801('0x9'));var fs=require('fs');var fs_extra=require(_0x2801('0xa'));var _=require(_0x2801('0xb'));var squel=require(_0x2801('0xc'));var crypto=require(_0x2801('0xd'));var jsforce=require(_0x2801('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x2801('0xf'));var querystring=require(_0x2801('0x10'));var Papa=require(_0x2801('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2801('0x12'));var as=require(_0x2801('0x13'));var hardwareService=require(_0x2801('0x14'));var logger=require(_0x2801('0x15'))(_0x2801('0x16'));var utils=require(_0x2801('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x2801('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x53cc13,_0x10a48c){_0x10a48c=_0x10a48c||0xcc;return function(_0x3aab00){if(_0x3aab00){return _0x53cc13[_0x2801('0x19')](_0x10a48c);}return _0x53cc13[_0x2801('0x1a')](_0x10a48c)[_0x2801('0x1b')]();};}function respondWithResult(_0x53c7cd,_0x495644){_0x495644=_0x495644||0xc8;return function(_0x514093){if(_0x514093){return _0x53c7cd[_0x2801('0x1a')](_0x495644)[_0x2801('0x1c')](_0x514093);}};}function respondWithFilteredResult(_0x181ac9,_0x1e0283){return function(_0x31edec){if(_0x31edec){var _0x3863b2=typeof _0x1e0283['offset']===_0x2801('0x1d')&&typeof _0x1e0283[_0x2801('0x1e')]==='undefined';var _0x558e0b=_0x31edec[_0x2801('0x1f')];var _0x3642aa=_0x3863b2?0x0:_0x1e0283[_0x2801('0x20')];var _0x738895=_0x3863b2?_0x31edec['count']:_0x1e0283[_0x2801('0x20')]+_0x1e0283[_0x2801('0x1e')];var _0x210456;if(_0x738895>=_0x558e0b){_0x738895=_0x558e0b;_0x210456=0xc8;}else{_0x210456=0xce;}_0x181ac9['status'](_0x210456);return _0x181ac9[_0x2801('0x21')](_0x2801('0x22'),_0x3642aa+'-'+_0x738895+'/'+_0x558e0b)[_0x2801('0x1c')](_0x31edec);}return null;};}function patchUpdates(_0x5f5a4b){return function(_0x33a094){try{jsonpatch[_0x2801('0x23')](_0x33a094,_0x5f5a4b,!![]);}catch(_0x131e4f){return BPromise[_0x2801('0x24')](_0x131e4f);}return _0x33a094[_0x2801('0x25')]();};}function saveUpdates(_0x1a3174,_0x4af81a){return function(_0x27951e){if(_0x27951e){return _0x27951e[_0x2801('0x26')](_0x1a3174)[_0x2801('0x27')](function(_0x42a99a){return _0x42a99a;});}return null;};}function removeEntity(_0x227779,_0x398532){return function(_0x541a05){if(_0x541a05){return _0x541a05[_0x2801('0x28')]()[_0x2801('0x27')](function(){_0x227779[_0x2801('0x1a')](0xcc)[_0x2801('0x1b')]();});}};}function handleEntityNotFound(_0x2bab10,_0x687352){return function(_0x475e6e){if(!_0x475e6e){_0x2bab10[_0x2801('0x19')](0x194);}return _0x475e6e;};}function handleError(_0x56b6ba,_0x1bb51d){_0x1bb51d=_0x1bb51d||0x1f4;return function(_0x268184){logger[_0x2801('0x29')](_0x268184[_0x2801('0x2a')]);if(_0x268184[_0x2801('0x2b')]){delete _0x268184[_0x2801('0x2b')];}_0x56b6ba[_0x2801('0x1a')](_0x1bb51d)['send'](_0x268184);};}exports['index']=function(_0x5f4435,_0x1c42d2){var _0x4347f3={},_0x33b184={},_0x2a2b6f={'count':0x0,'rows':[]};var _0x2185b6=_[_0x2801('0x2c')](db['SmsQueueReport'][_0x2801('0x2d')],function(_0xe291c1){return{'name':_0xe291c1[_0x2801('0x2e')],'type':_0xe291c1[_0x2801('0x2f')]['key']};});_0x33b184[_0x2801('0x30')]=_['map'](_0x2185b6,_0x2801('0x2b'));_0x33b184['query']=_[_0x2801('0x31')](_0x5f4435[_0x2801('0x32')]);_0x33b184['filters']=_[_0x2801('0x33')](_0x33b184['model'],_0x33b184[_0x2801('0x32')]);_0x4347f3[_0x2801('0x34')]=_[_0x2801('0x33')](_0x33b184[_0x2801('0x30')],qs[_0x2801('0x35')](_0x5f4435[_0x2801('0x32')]['fields']));_0x4347f3[_0x2801('0x34')]=_0x4347f3[_0x2801('0x34')][_0x2801('0x36')]?_0x4347f3[_0x2801('0x34')]:_0x33b184[_0x2801('0x30')];if(!_0x5f4435[_0x2801('0x32')][_0x2801('0x37')](_0x2801('0x38'))){_0x4347f3[_0x2801('0x1e')]=qs[_0x2801('0x1e')](_0x5f4435['query']['limit']);_0x4347f3['offset']=qs[_0x2801('0x20')](_0x5f4435[_0x2801('0x32')][_0x2801('0x20')]);}_0x4347f3[_0x2801('0x39')]=qs['sort'](_0x5f4435[_0x2801('0x32')][_0x2801('0x3a')]);_0x4347f3['where']=qs[_0x2801('0x3b')](_[_0x2801('0x3c')](_0x5f4435[_0x2801('0x32')],_0x33b184[_0x2801('0x3b')]),_0x2185b6);if(_0x5f4435[_0x2801('0x32')][_0x2801('0x3d')]){_0x4347f3[_0x2801('0x3e')]=_[_0x2801('0x3f')](_0x4347f3[_0x2801('0x3e')],{'$or':_[_0x2801('0x2c')](_0x2185b6,function(_0x462d14){if(_0x462d14['type']!=='VIRTUAL'){var _0x2e3618={};_0x2e3618[_0x462d14[_0x2801('0x2b')]]={'$like':'%'+_0x5f4435[_0x2801('0x32')]['filter']+'%'};return _0x2e3618;}})});}_0x4347f3=_[_0x2801('0x3f')]({},_0x4347f3,_0x5f4435[_0x2801('0x40')]);var _0x591932={'where':_0x4347f3[_0x2801('0x3e')]};return db[_0x2801('0x41')][_0x2801('0x1f')](_0x591932)[_0x2801('0x27')](function(_0x9ae915){_0x2a2b6f[_0x2801('0x1f')]=_0x9ae915;if(_0x5f4435['query'][_0x2801('0x42')]){_0x4347f3[_0x2801('0x43')]=[{'all':!![]}];}return db[_0x2801('0x41')][_0x2801('0x44')](_0x4347f3);})[_0x2801('0x27')](function(_0x48c86e){_0x2a2b6f['rows']=_0x48c86e;return _0x2a2b6f;})[_0x2801('0x27')](respondWithFilteredResult(_0x1c42d2,_0x4347f3))[_0x2801('0x45')](handleError(_0x1c42d2,null));};exports[_0x2801('0x46')]=function(_0x2955d8,_0x45ac9d){var _0x424c3d={'raw':!![],'where':{'id':_0x2955d8['params']['id']}},_0x3666fc={};_0x3666fc[_0x2801('0x30')]=_['keys'](db['SmsQueueReport'][_0x2801('0x2d')]);_0x3666fc[_0x2801('0x32')]=_['keys'](_0x2955d8[_0x2801('0x32')]);_0x3666fc[_0x2801('0x3b')]=_[_0x2801('0x33')](_0x3666fc[_0x2801('0x30')],_0x3666fc[_0x2801('0x32')]);_0x424c3d[_0x2801('0x34')]=_['intersection'](_0x3666fc[_0x2801('0x30')],qs[_0x2801('0x35')](_0x2955d8[_0x2801('0x32')][_0x2801('0x35')]));_0x424c3d[_0x2801('0x34')]=_0x424c3d[_0x2801('0x34')][_0x2801('0x36')]?_0x424c3d[_0x2801('0x34')]:_0x3666fc[_0x2801('0x30')];if(_0x2955d8['query'][_0x2801('0x42')]){_0x424c3d[_0x2801('0x43')]=[{'all':!![]}];}_0x424c3d=_[_0x2801('0x3f')]({},_0x424c3d,_0x2955d8['options']);return db[_0x2801('0x41')][_0x2801('0x47')](_0x424c3d)[_0x2801('0x27')](handleEntityNotFound(_0x45ac9d,null))[_0x2801('0x27')](respondWithResult(_0x45ac9d,null))[_0x2801('0x45')](handleError(_0x45ac9d,null));};exports[_0x2801('0x48')]=function(_0xded7bb,_0x947653){return db[_0x2801('0x41')][_0x2801('0x48')](_0xded7bb[_0x2801('0x49')],{})['then'](respondWithResult(_0x947653,0xc9))[_0x2801('0x45')](handleError(_0x947653,null));};exports[_0x2801('0x26')]=function(_0x38bc96,_0x5a7f42){if(_0x38bc96['body']['id']){delete _0x38bc96[_0x2801('0x49')]['id'];}return db[_0x2801('0x41')]['find']({'where':{'id':_0x38bc96[_0x2801('0x4a')]['id']}})[_0x2801('0x27')](handleEntityNotFound(_0x5a7f42,null))[_0x2801('0x27')](saveUpdates(_0x38bc96[_0x2801('0x49')],null))['then'](respondWithResult(_0x5a7f42,null))['catch'](handleError(_0x5a7f42,null));};exports[_0x2801('0x28')]=function(_0x3fcd93,_0xeef5a5){return db[_0x2801('0x41')]['find']({'where':{'id':_0x3fcd93['params']['id']}})[_0x2801('0x27')](handleEntityNotFound(_0xeef5a5,null))['then'](removeEntity(_0xeef5a5,null))[_0x2801('0x45')](handleError(_0xeef5a5,null));};exports['describe']=function(_0x5a443c,_0x5e89b5){return db[_0x2801('0x41')][_0x2801('0x4b')]()['then'](respondWithResult(_0x5e89b5,null))[_0x2801('0x45')](handleError(_0x5e89b5,null));};
\ No newline at end of file
index 928d520..93a7846 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['path','rimraf','./smsQueueReport.attributes','exports','define','report_sms_queue','uniqueid','../../config/logger','api','moment','bluebird'];(function(_0x2ec291,_0x489c83){var _0x145fbc=function(_0x381d9a){while(--_0x381d9a){_0x2ec291['push'](_0x2ec291['shift']());}};_0x145fbc(++_0x489c83);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x257a28,_0x2cd00d){_0x257a28=_0x257a28-0x0;var _0x13bccc=_0xcb91[_0x257a28];return _0x13bccc;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));module[_0x1cb9('0x7')]=function(_0x53ffbd,_0x226b69){return _0x53ffbd[_0x1cb9('0x8')]('SmsQueueReport',attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[{'name':_0x1cb9('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid','lodash','util'];(function(_0x5c7ff5,_0x50506a){var _0x29824c=function(_0x28e05a){while(--_0x28e05a){_0x5c7ff5['push'](_0x5c7ff5['shift']());}};_0x29824c(++_0x50506a);}(_0xe706,0xa3));var _0x6e70=function(_0x2a0dc9,_0x3802f4){_0x2a0dc9=_0x2a0dc9-0x0;var _0x198be1=_0xe706[_0x2a0dc9];return _0x198be1;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));module[_0x6e70('0xa')]=function(_0x1b0389,_0x4381d1){return _0x1b0389[_0x6e70('0xb')](_0x6e70('0xc'),attributes,{'tableName':_0x6e70('0xd'),'paranoid':![],'indexes':[{'name':_0x6e70('0xe'),'fields':[_0x6e70('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 1832f63..e552025 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x637a=['UpdateSmsQueueReport','update','body','where','attributes','debug','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsQueueReport,\x20%s,\x20%s','message','catch','CreateSmsQueueReport','SmsQueueReport','create','options','raw'];(function(_0x59d024,_0x30e8ee){var _0x178f99=function(_0x35f7e9){while(--_0x35f7e9){_0x59d024['push'](_0x59d024['shift']());}};_0x178f99(++_0x30e8ee);}(_0x637a,0x192));var _0xa637=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x637a[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xa637('0x0'));var util=require(_0xa637('0x1'));var moment=require(_0xa637('0x2'));var BPromise=require(_0xa637('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa637('0x4'));var db=require(_0xa637('0x5'))['db'];var utils=require(_0xa637('0x6'));var logger=require('../../config/logger')(_0xa637('0x7'));var config=require(_0xa637('0x8'));var jayson=require(_0xa637('0x9'));var client=jayson[_0xa637('0xa')][_0xa637('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3f321b,_0x3557b6,_0x572d2f){return new BPromise(function(_0x2ba9b7,_0x526972){return client['request'](_0x3f321b,_0x572d2f)[_0xa637('0xc')](function(_0x38be1d){logger[_0xa637('0xd')]('SmsQueueReport,\x20%s,\x20%s',_0x3557b6,_0xa637('0xe'));logger['debug'](_0xa637('0xf'),_0x3557b6,'request\x20sent',JSON[_0xa637('0x10')](_0x38be1d));if(_0x38be1d[_0xa637('0x11')]){if(_0x38be1d[_0xa637('0x11')][_0xa637('0x12')]===0x1f4){logger[_0xa637('0x11')](_0xa637('0x13'),_0x3557b6,_0x38be1d[_0xa637('0x11')]['message']);return _0x526972(_0x38be1d['error'][_0xa637('0x14')]);}logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x3557b6,_0x38be1d[_0xa637('0x11')][_0xa637('0x14')]);return _0x2ba9b7(_0x38be1d['error']['message']);}else{logger['info'](_0xa637('0x13'),_0x3557b6,'request\x20sent');_0x2ba9b7(_0x38be1d['result'][_0xa637('0x14')]);}})[_0xa637('0x15')](function(_0x2240d4){logger[_0xa637('0x11')](_0xa637('0x13'),_0x3557b6,_0x2240d4);_0x526972(_0x2240d4);});});}exports[_0xa637('0x16')]=function(_0x19550a){var _0x2ab0dd=this;return new Promise(function(_0x3c738c,_0x2fb82b){return db[_0xa637('0x17')][_0xa637('0x18')](_0x19550a['body'],{'raw':_0x19550a[_0xa637('0x19')]?_0x19550a[_0xa637('0x19')][_0xa637('0x1a')]===undefined?!![]:![]:!![]})[_0xa637('0xc')](function(_0x5ecc00){logger[_0xa637('0xd')](_0xa637('0x16'),_0x19550a);logger['debug'](_0xa637('0x16'),_0x19550a,JSON[_0xa637('0x10')](_0x5ecc00));_0x3c738c(_0x5ecc00);})[_0xa637('0x15')](function(_0x28c988){logger[_0xa637('0x11')](_0xa637('0x16'),_0x28c988['message'],_0x19550a);_0x2fb82b(_0x2ab0dd['error'](0x1f4,_0x28c988['message']));});});};exports[_0xa637('0x1b')]=function(_0x19f819){var _0xa984b5=this;return new Promise(function(_0x17b054,_0x528006){return db['SmsQueueReport'][_0xa637('0x1c')](_0x19f819[_0xa637('0x1d')],{'raw':_0x19f819[_0xa637('0x19')]?_0x19f819[_0xa637('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x19f819['options']?_0x19f819[_0xa637('0x19')][_0xa637('0x1e')]||null:null,'attributes':_0x19f819[_0xa637('0x19')]?_0x19f819[_0xa637('0x19')][_0xa637('0x1f')]||null:null,'limit':_0x19f819[_0xa637('0x19')]?_0x19f819['options']['limit']||null:null})[_0xa637('0xc')](function(_0x44af2c){logger[_0xa637('0xd')](_0xa637('0x1b'),_0x19f819);logger[_0xa637('0x20')](_0xa637('0x1b'),_0x19f819,JSON[_0xa637('0x10')](_0x44af2c));_0x17b054(_0x44af2c);})[_0xa637('0x15')](function(_0x2f7833){logger[_0xa637('0x11')](_0xa637('0x1b'),_0x2f7833[_0xa637('0x14')],_0x19f819);_0x528006(_0xa984b5[_0xa637('0x11')](0x1f4,_0x2f7833[_0xa637('0x14')]));});});};
\ No newline at end of file
+var _0xa0b1=['request','then','info','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsQueueReport,\x20%s,\x20%s','message','result','catch','body','options','raw','CreateSmsQueueReport','SmsQueueReport','where','attributes','limit','UpdateSmsQueueReport','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0xa30766,_0x6f613e){var _0x24e780=function(_0x3d58fb){while(--_0x3d58fb){_0xa30766['push'](_0xa30766['shift']());}};_0x24e780(++_0x6f613e);}(_0xa0b1,0x1e4));var _0x1a0b=function(_0x1951de,_0x173387){_0x1951de=_0x1951de-0x0;var _0x418584=_0xa0b1[_0x1951de];return _0x418584;};'use strict';var _=require(_0x1a0b('0x0'));var util=require(_0x1a0b('0x1'));var moment=require(_0x1a0b('0x2'));var BPromise=require(_0x1a0b('0x3'));var rs=require(_0x1a0b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1a0b('0x5'))['db'];var utils=require(_0x1a0b('0x6'));var logger=require(_0x1a0b('0x7'))(_0x1a0b('0x8'));var config=require('../../config/environment');var jayson=require(_0x1a0b('0x9'));var client=jayson[_0x1a0b('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x9d65f3,_0x199a1e,_0x487901){return new BPromise(function(_0x2c22e2,_0x3ca868){return client[_0x1a0b('0xb')](_0x9d65f3,_0x487901)[_0x1a0b('0xc')](function(_0x1718e1){logger[_0x1a0b('0xd')]('SmsQueueReport,\x20%s,\x20%s',_0x199a1e,_0x1a0b('0xe'));logger[_0x1a0b('0xf')](_0x1a0b('0x10'),_0x199a1e,_0x1a0b('0xe'),JSON[_0x1a0b('0x11')](_0x1718e1));if(_0x1718e1['error']){if(_0x1718e1[_0x1a0b('0x12')][_0x1a0b('0x13')]===0x1f4){logger[_0x1a0b('0x12')](_0x1a0b('0x14'),_0x199a1e,_0x1718e1[_0x1a0b('0x12')][_0x1a0b('0x15')]);return _0x3ca868(_0x1718e1[_0x1a0b('0x12')]['message']);}logger[_0x1a0b('0x12')](_0x1a0b('0x14'),_0x199a1e,_0x1718e1[_0x1a0b('0x12')]['message']);return _0x2c22e2(_0x1718e1['error'][_0x1a0b('0x15')]);}else{logger[_0x1a0b('0xd')](_0x1a0b('0x14'),_0x199a1e,_0x1a0b('0xe'));_0x2c22e2(_0x1718e1[_0x1a0b('0x16')][_0x1a0b('0x15')]);}})[_0x1a0b('0x17')](function(_0x1fbe6c){logger[_0x1a0b('0x12')](_0x1a0b('0x14'),_0x199a1e,_0x1fbe6c);_0x3ca868(_0x1fbe6c);});});}exports['CreateSmsQueueReport']=function(_0x20ce7d){var _0xbc9b71=this;return new Promise(function(_0x3fa962,_0x422b6e){return db['SmsQueueReport']['create'](_0x20ce7d[_0x1a0b('0x18')],{'raw':_0x20ce7d['options']?_0x20ce7d[_0x1a0b('0x19')][_0x1a0b('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x3ed1eb){logger[_0x1a0b('0xd')](_0x1a0b('0x1b'),_0x20ce7d);logger[_0x1a0b('0xf')]('CreateSmsQueueReport',_0x20ce7d,JSON['stringify'](_0x3ed1eb));_0x3fa962(_0x3ed1eb);})[_0x1a0b('0x17')](function(_0x144a6e){logger[_0x1a0b('0x12')]('CreateSmsQueueReport',_0x144a6e['message'],_0x20ce7d);_0x422b6e(_0xbc9b71[_0x1a0b('0x12')](0x1f4,_0x144a6e[_0x1a0b('0x15')]));});});};exports['UpdateSmsQueueReport']=function(_0x4d184e){var _0x19e66d=this;return new Promise(function(_0x3d4bef,_0x55590c){return db[_0x1a0b('0x1c')]['update'](_0x4d184e['body'],{'raw':_0x4d184e[_0x1a0b('0x19')]?_0x4d184e['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4d184e[_0x1a0b('0x19')]?_0x4d184e['options'][_0x1a0b('0x1d')]||null:null,'attributes':_0x4d184e[_0x1a0b('0x19')]?_0x4d184e['options'][_0x1a0b('0x1e')]||null:null,'limit':_0x4d184e[_0x1a0b('0x19')]?_0x4d184e[_0x1a0b('0x19')][_0x1a0b('0x1f')]||null:null})['then'](function(_0x28da5b){logger[_0x1a0b('0xd')](_0x1a0b('0x20'),_0x4d184e);logger[_0x1a0b('0xf')](_0x1a0b('0x20'),_0x4d184e,JSON[_0x1a0b('0x11')](_0x28da5b));_0x3d4bef(_0x28da5b);})[_0x1a0b('0x17')](function(_0x38bae5){logger[_0x1a0b('0x12')]('UpdateSmsQueueReport',_0x38bae5[_0x1a0b('0x15')],_0x4d184e);_0x55590c(_0x19e66d[_0x1a0b('0x12')](0x1f4,_0x38bae5['message']));});});};
\ No newline at end of file
index c922dea..1da1bc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6075=['/:id','post','create','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x6075,0x191));var _0x5607=function(_0x109a4e,_0x30a43c){_0x109a4e=_0x109a4e-0x0;var _0x37a0b0=_0x6075[_0x109a4e];return _0x37a0b0;};'use strict';var multer=require('multer');var util=require(_0x5607('0x0'));var path=require(_0x5607('0x1'));var timeout=require(_0x5607('0x2'));var express=require(_0x5607('0x3'));var router=express[_0x5607('0x4')]();var fs_extra=require(_0x5607('0x5'));var auth=require(_0x5607('0x6'));var interaction=require(_0x5607('0x7'));var config=require(_0x5607('0x8'));var controller=require('./smsTransferReport.controller');router[_0x5607('0x9')]('/',auth[_0x5607('0xa')](),controller[_0x5607('0xb')]);router['get']('/describe',auth[_0x5607('0xa')](),controller[_0x5607('0xc')]);router[_0x5607('0x9')](_0x5607('0xd'),auth[_0x5607('0xa')](),controller['show']);router[_0x5607('0xe')]('/',auth[_0x5607('0xa')](),controller[_0x5607('0xf')]);router['put'](_0x5607('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x5607('0x10')](_0x5607('0xd'),auth[_0x5607('0xa')](),controller['destroy']);module[_0x5607('0x11')]=router;
\ No newline at end of file
+var _0x919e=['isAuthenticated','index','/describe','show','post','create','put','/:id','update','destroy','exports','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get'];(function(_0x2d8fc2,_0x1c461d){var _0x3a9e53=function(_0x18941c){while(--_0x18941c){_0x2d8fc2['push'](_0x2d8fc2['shift']());}};_0x3a9e53(++_0x1c461d);}(_0x919e,0x1d7));var _0xe919=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x919e[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xe919('0x0'));var util=require(_0xe919('0x1'));var path=require(_0xe919('0x2'));var timeout=require('connect-timeout');var express=require(_0xe919('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xe919('0x4'));var interaction=require(_0xe919('0x5'));var config=require(_0xe919('0x6'));var controller=require(_0xe919('0x7'));router[_0xe919('0x8')]('/',auth[_0xe919('0x9')](),controller[_0xe919('0xa')]);router['get'](_0xe919('0xb'),auth[_0xe919('0x9')](),controller['describe']);router[_0xe919('0x8')]('/:id',auth[_0xe919('0x9')](),controller[_0xe919('0xc')]);router[_0xe919('0xd')]('/',auth['isAuthenticated'](),controller[_0xe919('0xe')]);router[_0xe919('0xf')](_0xe919('0x10'),auth['isAuthenticated'](),controller[_0xe919('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xe919('0x12')]);module[_0xe919('0x13')]=router;
\ No newline at end of file
index 4f0e2f3..47c6bbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0xc8db6b,_0x320abd){var _0x12cb81=function(_0x417540){while(--_0x417540){_0xc8db6b['push'](_0xc8db6b['shift']());}};_0x12cb81(++_0x320abd);}(_0xb43b,0x1b2));var _0xbb43=function(_0x2e9eb1,_0x3828e4){_0x2e9eb1=_0x2e9eb1-0x0;var _0x499615=_0xb43b[_0x2e9eb1];return _0x499615;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
+var _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x444b04,_0x4b0fe0){var _0x555d69=function(_0x2dea7b){while(--_0x2dea7b){_0x444b04['push'](_0x444b04['shift']());}};_0x555d69(++_0x4b0fe0);}(_0x70e0,0x17b));var _0x070e=function(_0xf3fcab,_0x1f9dba){_0xf3fcab=_0xf3fcab-0x0;var _0x24e0df=_0x70e0[_0xf3fcab];return _0x24e0df;};'use strict';var moment=require(_0x070e('0x0'));var Sequelize=require(_0x070e('0x1'));module[_0x070e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5')),'allowNull':![],'defaultValue':_0x070e('0x5')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x070e('0x6')]}};
\ No newline at end of file
index 0f3d859..0e0da71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc36f=['sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','then','destroy','error','stack','name','index','SmsTransferReport','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','keys','find','catch','create','body','update','describe','eml-format','rimraf','zip-dir','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x23f95f,_0x58084b){var _0x4a5b23=function(_0xb280bc){while(--_0xb280bc){_0x23f95f['push'](_0x23f95f['shift']());}};_0x4a5b23(++_0x58084b);}(_0xc36f,0xba));var _0xfc36=function(_0x9f7aa8,_0xbdb165){_0x9f7aa8=_0x9f7aa8-0x0;var _0x3f590a=_0xc36f[_0x9f7aa8];return _0x3f590a;};'use strict';var emlformat=require(_0xfc36('0x0'));var rimraf=require(_0xfc36('0x1'));var zipdir=require(_0xfc36('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfc36('0x3'));var Mustache=require('mustache');var util=require(_0xfc36('0x4'));var path=require(_0xfc36('0x5'));var sox=require(_0xfc36('0x6'));var csv=require(_0xfc36('0x7'));var ejs=require(_0xfc36('0x8'));var fs=require('fs');var fs_extra=require(_0xfc36('0x9'));var _=require(_0xfc36('0xa'));var squel=require('squel');var crypto=require(_0xfc36('0xb'));var jsforce=require(_0xfc36('0xc'));var deskjs=require(_0xfc36('0xd'));var toCsv=require(_0xfc36('0x7'));var querystring=require(_0xfc36('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfc36('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfc36('0x10'));var logger=require('../../config/logger')(_0xfc36('0x11'));var utils=require('../../config/utils');var config=require(_0xfc36('0x12'));var licenseUtil=require(_0xfc36('0x13'));var db=require(_0xfc36('0x14'))['db'];function respondWithStatusCode(_0x43b891,_0x5ce660){_0x5ce660=_0x5ce660||0xcc;return function(_0x1dee6d){if(_0x1dee6d){return _0x43b891[_0xfc36('0x15')](_0x5ce660);}return _0x43b891[_0xfc36('0x16')](_0x5ce660)[_0xfc36('0x17')]();};}function respondWithResult(_0x54f761,_0x18d255){_0x18d255=_0x18d255||0xc8;return function(_0x170b35){if(_0x170b35){return _0x54f761[_0xfc36('0x16')](_0x18d255)[_0xfc36('0x18')](_0x170b35);}};}function respondWithFilteredResult(_0x347fd0,_0xd41981){return function(_0x4bd2d2){if(_0x4bd2d2){var _0x50a820=typeof _0xd41981['offset']===_0xfc36('0x19')&&typeof _0xd41981[_0xfc36('0x1a')]==='undefined';var _0x4d5ae0=_0x4bd2d2[_0xfc36('0x1b')];var _0x1e3ebc=_0x50a820?0x0:_0xd41981[_0xfc36('0x1c')];var _0x4d1d60=_0x50a820?_0x4bd2d2[_0xfc36('0x1b')]:_0xd41981[_0xfc36('0x1c')]+_0xd41981[_0xfc36('0x1a')];var _0x321444;if(_0x4d1d60>=_0x4d5ae0){_0x4d1d60=_0x4d5ae0;_0x321444=0xc8;}else{_0x321444=0xce;}_0x347fd0[_0xfc36('0x16')](_0x321444);return _0x347fd0[_0xfc36('0x1d')]('Content-Range',_0x1e3ebc+'-'+_0x4d1d60+'/'+_0x4d5ae0)['json'](_0x4bd2d2);}return null;};}function patchUpdates(_0x47d4a4){return function(_0x38e41c){try{jsonpatch['apply'](_0x38e41c,_0x47d4a4,!![]);}catch(_0x3518b6){return BPromise[_0xfc36('0x1e')](_0x3518b6);}return _0x38e41c[_0xfc36('0x1f')]();};}function saveUpdates(_0x45504b,_0x537083){return function(_0x29364b){if(_0x29364b){return _0x29364b['update'](_0x45504b)[_0xfc36('0x20')](function(_0x5ad9ef){return _0x5ad9ef;});}return null;};}function removeEntity(_0x2b612b,_0x591d74){return function(_0x1dad37){if(_0x1dad37){return _0x1dad37[_0xfc36('0x21')]()[_0xfc36('0x20')](function(){_0x2b612b[_0xfc36('0x16')](0xcc)[_0xfc36('0x17')]();});}};}function handleEntityNotFound(_0x3865d2,_0x1f382d){return function(_0x282898){if(!_0x282898){_0x3865d2[_0xfc36('0x15')](0x194);}return _0x282898;};}function handleError(_0x276f3c,_0x81cf7f){_0x81cf7f=_0x81cf7f||0x1f4;return function(_0x34ddcd){logger[_0xfc36('0x22')](_0x34ddcd[_0xfc36('0x23')]);if(_0x34ddcd[_0xfc36('0x24')]){delete _0x34ddcd[_0xfc36('0x24')];}_0x276f3c['status'](_0x81cf7f)['send'](_0x34ddcd);};}exports[_0xfc36('0x25')]=function(_0x3e8c0c,_0x30b70e){var _0x44891d={},_0x524b52={},_0x4c871c={'count':0x0,'rows':[]};var _0x224093=_['map'](db[_0xfc36('0x26')][_0xfc36('0x27')],function(_0x5b72ed){return{'name':_0x5b72ed['fieldName'],'type':_0x5b72ed[_0xfc36('0x28')][_0xfc36('0x29')]};});_0x524b52[_0xfc36('0x2a')]=_['map'](_0x224093,_0xfc36('0x24'));_0x524b52['query']=_['keys'](_0x3e8c0c[_0xfc36('0x2b')]);_0x524b52[_0xfc36('0x2c')]=_[_0xfc36('0x2d')](_0x524b52[_0xfc36('0x2a')],_0x524b52[_0xfc36('0x2b')]);_0x44891d['attributes']=_[_0xfc36('0x2d')](_0x524b52['model'],qs[_0xfc36('0x2e')](_0x3e8c0c[_0xfc36('0x2b')][_0xfc36('0x2e')]));_0x44891d['attributes']=_0x44891d[_0xfc36('0x2f')]['length']?_0x44891d['attributes']:_0x524b52[_0xfc36('0x2a')];if(!_0x3e8c0c[_0xfc36('0x2b')][_0xfc36('0x30')](_0xfc36('0x31'))){_0x44891d[_0xfc36('0x1a')]=qs[_0xfc36('0x1a')](_0x3e8c0c['query'][_0xfc36('0x1a')]);_0x44891d[_0xfc36('0x1c')]=qs['offset'](_0x3e8c0c['query'][_0xfc36('0x1c')]);}_0x44891d['order']=qs[_0xfc36('0x32')](_0x3e8c0c['query'][_0xfc36('0x32')]);_0x44891d['where']=qs[_0xfc36('0x2c')](_[_0xfc36('0x33')](_0x3e8c0c['query'],_0x524b52[_0xfc36('0x2c')]),_0x224093);if(_0x3e8c0c[_0xfc36('0x2b')][_0xfc36('0x34')]){_0x44891d[_0xfc36('0x35')]=_[_0xfc36('0x36')](_0x44891d[_0xfc36('0x35')],{'$or':_['map'](_0x224093,function(_0xa6aae2){if(_0xa6aae2['type']!==_0xfc36('0x37')){var _0x1e9a9b={};_0x1e9a9b[_0xa6aae2[_0xfc36('0x24')]]={'$like':'%'+_0x3e8c0c[_0xfc36('0x2b')]['filter']+'%'};return _0x1e9a9b;}})});}_0x44891d=_['merge']({},_0x44891d,_0x3e8c0c[_0xfc36('0x38')]);var _0x462081={'where':_0x44891d[_0xfc36('0x35')]};return db['SmsTransferReport'][_0xfc36('0x1b')](_0x462081)[_0xfc36('0x20')](function(_0x489586){_0x4c871c['count']=_0x489586;if(_0x3e8c0c['query'][_0xfc36('0x39')]){_0x44891d[_0xfc36('0x3a')]=[{'all':!![]}];}return db['SmsTransferReport'][_0xfc36('0x3b')](_0x44891d);})[_0xfc36('0x20')](function(_0x109271){_0x4c871c[_0xfc36('0x3c')]=_0x109271;return _0x4c871c;})['then'](respondWithFilteredResult(_0x30b70e,_0x44891d))['catch'](handleError(_0x30b70e,null));};exports['show']=function(_0x2822c7,_0x38095d){var _0x1a173d={'raw':!![],'where':{'id':_0x2822c7[_0xfc36('0x3d')]['id']}},_0x3191e3={};_0x3191e3[_0xfc36('0x2a')]=_['keys'](db[_0xfc36('0x26')][_0xfc36('0x27')]);_0x3191e3[_0xfc36('0x2b')]=_[_0xfc36('0x3e')](_0x2822c7[_0xfc36('0x2b')]);_0x3191e3[_0xfc36('0x2c')]=_['intersection'](_0x3191e3[_0xfc36('0x2a')],_0x3191e3[_0xfc36('0x2b')]);_0x1a173d[_0xfc36('0x2f')]=_[_0xfc36('0x2d')](_0x3191e3['model'],qs[_0xfc36('0x2e')](_0x2822c7[_0xfc36('0x2b')][_0xfc36('0x2e')]));_0x1a173d[_0xfc36('0x2f')]=_0x1a173d[_0xfc36('0x2f')]['length']?_0x1a173d[_0xfc36('0x2f')]:_0x3191e3[_0xfc36('0x2a')];if(_0x2822c7[_0xfc36('0x2b')][_0xfc36('0x39')]){_0x1a173d[_0xfc36('0x3a')]=[{'all':!![]}];}_0x1a173d=_[_0xfc36('0x36')]({},_0x1a173d,_0x2822c7[_0xfc36('0x38')]);return db['SmsTransferReport'][_0xfc36('0x3f')](_0x1a173d)[_0xfc36('0x20')](handleEntityNotFound(_0x38095d,null))[_0xfc36('0x20')](respondWithResult(_0x38095d,null))[_0xfc36('0x40')](handleError(_0x38095d,null));};exports[_0xfc36('0x41')]=function(_0x45546e,_0x38dcab){return db[_0xfc36('0x26')]['create'](_0x45546e[_0xfc36('0x42')],{})['then'](respondWithResult(_0x38dcab,0xc9))[_0xfc36('0x40')](handleError(_0x38dcab,null));};exports[_0xfc36('0x43')]=function(_0x34cb9f,_0x3e6cde){if(_0x34cb9f['body']['id']){delete _0x34cb9f[_0xfc36('0x42')]['id'];}return db[_0xfc36('0x26')]['find']({'where':{'id':_0x34cb9f[_0xfc36('0x3d')]['id']}})[_0xfc36('0x20')](handleEntityNotFound(_0x3e6cde,null))[_0xfc36('0x20')](saveUpdates(_0x34cb9f[_0xfc36('0x42')],null))[_0xfc36('0x20')](respondWithResult(_0x3e6cde,null))[_0xfc36('0x40')](handleError(_0x3e6cde,null));};exports[_0xfc36('0x21')]=function(_0x40938f,_0x244dcd){return db['SmsTransferReport']['find']({'where':{'id':_0x40938f[_0xfc36('0x3d')]['id']}})[_0xfc36('0x20')](handleEntityNotFound(_0x244dcd,null))[_0xfc36('0x20')](removeEntity(_0x244dcd,null))[_0xfc36('0x40')](handleError(_0x244dcd,null));};exports[_0xfc36('0x44')]=function(_0x56e489,_0x3f8d09){return db[_0xfc36('0x26')][_0xfc36('0x44')]()[_0xfc36('0x20')](respondWithResult(_0x3f8d09,null))['catch'](handleError(_0x3f8d09,null));};
\ No newline at end of file
+var _0x6f0f=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','limit','undefined','count','offset','apply','reject','save','then','error','stack','name','send','index','map','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SmsTransferReport','includeAll','findAll','rows','catch','show','params','include','find','create','body','update','describe','zip-dir','fast-json-patch','moment','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv'];(function(_0x269c42,_0xeed101){var _0x4dad76=function(_0x167b87){while(--_0x167b87){_0x269c42['push'](_0x269c42['shift']());}};_0x4dad76(++_0xeed101);}(_0x6f0f,0x88));var _0xf6f0=function(_0x503641,_0x33a3cf){_0x503641=_0x503641-0x0;var _0x17757d=_0x6f0f[_0x503641];return _0x17757d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xf6f0('0x0'));var jsonpatch=require(_0xf6f0('0x1'));var rp=require('request-promise');var moment=require(_0xf6f0('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf6f0('0x3'));var path=require(_0xf6f0('0x4'));var sox=require(_0xf6f0('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf6f0('0x6'));var _=require('lodash');var squel=require(_0xf6f0('0x7'));var crypto=require(_0xf6f0('0x8'));var jsforce=require(_0xf6f0('0x9'));var deskjs=require(_0xf6f0('0xa'));var toCsv=require(_0xf6f0('0xb'));var querystring=require(_0xf6f0('0xc'));var Papa=require(_0xf6f0('0xd'));var Redis=require(_0xf6f0('0xe'));var authService=require(_0xf6f0('0xf'));var qs=require(_0xf6f0('0x10'));var as=require(_0xf6f0('0x11'));var hardwareService=require(_0xf6f0('0x12'));var logger=require(_0xf6f0('0x13'))(_0xf6f0('0x14'));var utils=require(_0xf6f0('0x15'));var config=require(_0xf6f0('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x220ebd,_0x4497a3){_0x4497a3=_0x4497a3||0xcc;return function(_0x33a823){if(_0x33a823){return _0x220ebd[_0xf6f0('0x17')](_0x4497a3);}return _0x220ebd[_0xf6f0('0x18')](_0x4497a3)[_0xf6f0('0x19')]();};}function respondWithResult(_0x62c763,_0x55754e){_0x55754e=_0x55754e||0xc8;return function(_0xef3490){if(_0xef3490){return _0x62c763[_0xf6f0('0x18')](_0x55754e)[_0xf6f0('0x1a')](_0xef3490);}};}function respondWithFilteredResult(_0x21debb,_0x589ad1){return function(_0x3b26b1){if(_0x3b26b1){var _0x2b0b6c=typeof _0x589ad1['offset']==='undefined'&&typeof _0x589ad1[_0xf6f0('0x1b')]===_0xf6f0('0x1c');var _0x4d3eb7=_0x3b26b1[_0xf6f0('0x1d')];var _0x3f1032=_0x2b0b6c?0x0:_0x589ad1[_0xf6f0('0x1e')];var _0x578159=_0x2b0b6c?_0x3b26b1[_0xf6f0('0x1d')]:_0x589ad1[_0xf6f0('0x1e')]+_0x589ad1['limit'];var _0xf49e1c;if(_0x578159>=_0x4d3eb7){_0x578159=_0x4d3eb7;_0xf49e1c=0xc8;}else{_0xf49e1c=0xce;}_0x21debb[_0xf6f0('0x18')](_0xf49e1c);return _0x21debb['set']('Content-Range',_0x3f1032+'-'+_0x578159+'/'+_0x4d3eb7)[_0xf6f0('0x1a')](_0x3b26b1);}return null;};}function patchUpdates(_0x19dd8e){return function(_0x2ba345){try{jsonpatch[_0xf6f0('0x1f')](_0x2ba345,_0x19dd8e,!![]);}catch(_0xda4f4e){return BPromise[_0xf6f0('0x20')](_0xda4f4e);}return _0x2ba345[_0xf6f0('0x21')]();};}function saveUpdates(_0x4cfe0b,_0x5e43a2){return function(_0x3c41d6){if(_0x3c41d6){return _0x3c41d6['update'](_0x4cfe0b)[_0xf6f0('0x22')](function(_0x1ef461){return _0x1ef461;});}return null;};}function removeEntity(_0x134fda,_0xacc5f0){return function(_0x543e0d){if(_0x543e0d){return _0x543e0d['destroy']()[_0xf6f0('0x22')](function(){_0x134fda[_0xf6f0('0x18')](0xcc)[_0xf6f0('0x19')]();});}};}function handleEntityNotFound(_0x3f371d,_0x5a8f6e){return function(_0x3a89da){if(!_0x3a89da){_0x3f371d['sendStatus'](0x194);}return _0x3a89da;};}function handleError(_0x16b012,_0x70de8a){_0x70de8a=_0x70de8a||0x1f4;return function(_0x357c8e){logger[_0xf6f0('0x23')](_0x357c8e[_0xf6f0('0x24')]);if(_0x357c8e[_0xf6f0('0x25')]){delete _0x357c8e[_0xf6f0('0x25')];}_0x16b012['status'](_0x70de8a)[_0xf6f0('0x26')](_0x357c8e);};}exports[_0xf6f0('0x27')]=function(_0x5f0818,_0x181dbc){var _0x3162a7={},_0x31487c={},_0x20ae76={'count':0x0,'rows':[]};var _0x3f0d0b=_[_0xf6f0('0x28')](db['SmsTransferReport']['rawAttributes'],function(_0x40c4cb){return{'name':_0x40c4cb['fieldName'],'type':_0x40c4cb[_0xf6f0('0x29')][_0xf6f0('0x2a')]};});_0x31487c[_0xf6f0('0x2b')]=_[_0xf6f0('0x28')](_0x3f0d0b,_0xf6f0('0x25'));_0x31487c[_0xf6f0('0x2c')]=_[_0xf6f0('0x2d')](_0x5f0818['query']);_0x31487c[_0xf6f0('0x2e')]=_[_0xf6f0('0x2f')](_0x31487c[_0xf6f0('0x2b')],_0x31487c[_0xf6f0('0x2c')]);_0x3162a7[_0xf6f0('0x30')]=_['intersection'](_0x31487c['model'],qs[_0xf6f0('0x31')](_0x5f0818[_0xf6f0('0x2c')]['fields']));_0x3162a7['attributes']=_0x3162a7[_0xf6f0('0x30')][_0xf6f0('0x32')]?_0x3162a7[_0xf6f0('0x30')]:_0x31487c[_0xf6f0('0x2b')];if(!_0x5f0818[_0xf6f0('0x2c')][_0xf6f0('0x33')](_0xf6f0('0x34'))){_0x3162a7['limit']=qs['limit'](_0x5f0818[_0xf6f0('0x2c')][_0xf6f0('0x1b')]);_0x3162a7['offset']=qs[_0xf6f0('0x1e')](_0x5f0818[_0xf6f0('0x2c')][_0xf6f0('0x1e')]);}_0x3162a7[_0xf6f0('0x35')]=qs[_0xf6f0('0x36')](_0x5f0818[_0xf6f0('0x2c')][_0xf6f0('0x36')]);_0x3162a7[_0xf6f0('0x37')]=qs[_0xf6f0('0x2e')](_[_0xf6f0('0x38')](_0x5f0818['query'],_0x31487c[_0xf6f0('0x2e')]),_0x3f0d0b);if(_0x5f0818[_0xf6f0('0x2c')][_0xf6f0('0x39')]){_0x3162a7[_0xf6f0('0x37')]=_[_0xf6f0('0x3a')](_0x3162a7['where'],{'$or':_['map'](_0x3f0d0b,function(_0x414768){if(_0x414768[_0xf6f0('0x29')]!==_0xf6f0('0x3b')){var _0x2e062e={};_0x2e062e[_0x414768[_0xf6f0('0x25')]]={'$like':'%'+_0x5f0818[_0xf6f0('0x2c')][_0xf6f0('0x39')]+'%'};return _0x2e062e;}})});}_0x3162a7=_[_0xf6f0('0x3a')]({},_0x3162a7,_0x5f0818[_0xf6f0('0x3c')]);var _0x3d0f02={'where':_0x3162a7[_0xf6f0('0x37')]};return db[_0xf6f0('0x3d')][_0xf6f0('0x1d')](_0x3d0f02)[_0xf6f0('0x22')](function(_0x38f8da){_0x20ae76[_0xf6f0('0x1d')]=_0x38f8da;if(_0x5f0818[_0xf6f0('0x2c')][_0xf6f0('0x3e')]){_0x3162a7['include']=[{'all':!![]}];}return db[_0xf6f0('0x3d')][_0xf6f0('0x3f')](_0x3162a7);})[_0xf6f0('0x22')](function(_0x2c1fee){_0x20ae76[_0xf6f0('0x40')]=_0x2c1fee;return _0x20ae76;})[_0xf6f0('0x22')](respondWithFilteredResult(_0x181dbc,_0x3162a7))[_0xf6f0('0x41')](handleError(_0x181dbc,null));};exports[_0xf6f0('0x42')]=function(_0x3dc990,_0x1dd6b7){var _0x441351={'raw':!![],'where':{'id':_0x3dc990[_0xf6f0('0x43')]['id']}},_0x405cea={};_0x405cea[_0xf6f0('0x2b')]=_[_0xf6f0('0x2d')](db[_0xf6f0('0x3d')]['rawAttributes']);_0x405cea['query']=_[_0xf6f0('0x2d')](_0x3dc990[_0xf6f0('0x2c')]);_0x405cea[_0xf6f0('0x2e')]=_[_0xf6f0('0x2f')](_0x405cea[_0xf6f0('0x2b')],_0x405cea[_0xf6f0('0x2c')]);_0x441351[_0xf6f0('0x30')]=_['intersection'](_0x405cea[_0xf6f0('0x2b')],qs[_0xf6f0('0x31')](_0x3dc990[_0xf6f0('0x2c')][_0xf6f0('0x31')]));_0x441351[_0xf6f0('0x30')]=_0x441351[_0xf6f0('0x30')][_0xf6f0('0x32')]?_0x441351[_0xf6f0('0x30')]:_0x405cea[_0xf6f0('0x2b')];if(_0x3dc990['query'][_0xf6f0('0x3e')]){_0x441351[_0xf6f0('0x44')]=[{'all':!![]}];}_0x441351=_[_0xf6f0('0x3a')]({},_0x441351,_0x3dc990['options']);return db[_0xf6f0('0x3d')][_0xf6f0('0x45')](_0x441351)[_0xf6f0('0x22')](handleEntityNotFound(_0x1dd6b7,null))[_0xf6f0('0x22')](respondWithResult(_0x1dd6b7,null))[_0xf6f0('0x41')](handleError(_0x1dd6b7,null));};exports[_0xf6f0('0x46')]=function(_0x44ea64,_0x378518){return db[_0xf6f0('0x3d')][_0xf6f0('0x46')](_0x44ea64[_0xf6f0('0x47')],{})[_0xf6f0('0x22')](respondWithResult(_0x378518,0xc9))[_0xf6f0('0x41')](handleError(_0x378518,null));};exports[_0xf6f0('0x48')]=function(_0x4c672a,_0x20ee8c){if(_0x4c672a['body']['id']){delete _0x4c672a[_0xf6f0('0x47')]['id'];}return db[_0xf6f0('0x3d')][_0xf6f0('0x45')]({'where':{'id':_0x4c672a[_0xf6f0('0x43')]['id']}})[_0xf6f0('0x22')](handleEntityNotFound(_0x20ee8c,null))[_0xf6f0('0x22')](saveUpdates(_0x4c672a['body'],null))[_0xf6f0('0x22')](respondWithResult(_0x20ee8c,null))[_0xf6f0('0x41')](handleError(_0x20ee8c,null));};exports['destroy']=function(_0x593f8e,_0x8ee1af){return db[_0xf6f0('0x3d')][_0xf6f0('0x45')]({'where':{'id':_0x593f8e['params']['id']}})[_0xf6f0('0x22')](handleEntityNotFound(_0x8ee1af,null))[_0xf6f0('0x22')](removeEntity(_0x8ee1af,null))['catch'](handleError(_0x8ee1af,null));};exports['describe']=function(_0x31e975,_0x4b3d7a){return db[_0xf6f0('0x3d')][_0xf6f0('0x49')]()[_0xf6f0('0x22')](respondWithResult(_0x4b3d7a,null))['catch'](handleError(_0x4b3d7a,null));};
\ No newline at end of file
index 3faefc3..bc793bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebc5=['bluebird','request-promise','path','../../config/environment','./smsTransferReport.attributes','exports','SmsTransferReport','report_sms_transfer','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xebc5,0x11a));var _0x5ebc=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xebc5[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0x5ebc('0x0'));var util=require('util');var logger=require(_0x5ebc('0x1'))(_0x5ebc('0x2'));var moment=require(_0x5ebc('0x3'));var BPromise=require(_0x5ebc('0x4'));var rp=require(_0x5ebc('0x5'));var fs=require('fs');var path=require(_0x5ebc('0x6'));var rimraf=require('rimraf');var config=require(_0x5ebc('0x7'));var attributes=require(_0x5ebc('0x8'));module[_0x5ebc('0x9')]=function(_0x83d0cf,_0x307e19){return _0x83d0cf['define'](_0x5ebc('0xa'),attributes,{'tableName':_0x5ebc('0xb'),'paranoid':![],'indexes':[{'name':_0x5ebc('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc02d=['../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport','report_sms_transfer','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5302fb,_0x1a2db3){var _0x43e6a4=function(_0x324ae6){while(--_0x324ae6){_0x5302fb['push'](_0x5302fb['shift']());}};_0x43e6a4(++_0x1a2db3);}(_0xc02d,0x1aa));var _0xdc02=function(_0x1f02f5,_0x324b54){_0x1f02f5=_0x1f02f5-0x0;var _0x415e22=_0xc02d[_0x1f02f5];return _0x415e22;};'use strict';var _=require('lodash');var util=require(_0xdc02('0x0'));var logger=require(_0xdc02('0x1'))(_0xdc02('0x2'));var moment=require(_0xdc02('0x3'));var BPromise=require(_0xdc02('0x4'));var rp=require(_0xdc02('0x5'));var fs=require('fs');var path=require(_0xdc02('0x6'));var rimraf=require(_0xdc02('0x7'));var config=require(_0xdc02('0x8'));var attributes=require(_0xdc02('0x9'));module[_0xdc02('0xa')]=function(_0x592468,_0x27a980){return _0x592468[_0xdc02('0xb')](_0xdc02('0xc'),attributes,{'tableName':_0xdc02('0xd'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index ed785d5..a862925 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae1c=['message','info','result','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xae1c,0xff));var _0xcae1=function(_0x1a81f2,_0x1a3524){_0x1a81f2=_0x1a81f2-0x0;var _0x5a86a9=_0xae1c[_0x1a81f2];return _0x5a86a9;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcae1('0x0'));var fs=require('fs');var Redis=require(_0xcae1('0x1'));var db=require(_0xcae1('0x2'))['db'];var utils=require(_0xcae1('0x3'));var logger=require(_0xcae1('0x4'))(_0xcae1('0x5'));var config=require(_0xcae1('0x6'));var jayson=require(_0xcae1('0x7'));var client=jayson[_0xcae1('0x8')][_0xcae1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3c35c7,_0x38099e,_0x7a27b8){return new BPromise(function(_0x50d451,_0x4e419d){return client[_0xcae1('0xa')](_0x3c35c7,_0x7a27b8)[_0xcae1('0xb')](function(_0x3284aa){logger['info'](_0xcae1('0xc'),_0x38099e,_0xcae1('0xd'));logger[_0xcae1('0xe')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x38099e,_0xcae1('0xd'),JSON[_0xcae1('0xf')](_0x3284aa));if(_0x3284aa['error']){if(_0x3284aa['error'][_0xcae1('0x10')]===0x1f4){logger[_0xcae1('0x11')](_0xcae1('0xc'),_0x38099e,_0x3284aa[_0xcae1('0x11')][_0xcae1('0x12')]);return _0x4e419d(_0x3284aa[_0xcae1('0x11')][_0xcae1('0x12')]);}logger[_0xcae1('0x11')](_0xcae1('0xc'),_0x38099e,_0x3284aa[_0xcae1('0x11')][_0xcae1('0x12')]);return _0x50d451(_0x3284aa[_0xcae1('0x11')][_0xcae1('0x12')]);}else{logger[_0xcae1('0x13')](_0xcae1('0xc'),_0x38099e,'request\x20sent');_0x50d451(_0x3284aa[_0xcae1('0x14')][_0xcae1('0x12')]);}})['catch'](function(_0x4a7ef7){logger[_0xcae1('0x11')](_0xcae1('0xc'),_0x38099e,_0x4a7ef7);_0x4e419d(_0x4a7ef7);});});}
\ No newline at end of file
+var _0x5b5a=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','error','message','result','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x5104e6,_0x2c3e3a){var _0x1928c6=function(_0x3c70f4){while(--_0x3c70f4){_0x5104e6['push'](_0x5104e6['shift']());}};_0x1928c6(++_0x2c3e3a);}(_0x5b5a,0xc3));var _0xa5b5=function(_0x1e8d09,_0x290b78){_0x1e8d09=_0x1e8d09-0x0;var _0x145fcd=_0x5b5a[_0x1e8d09];return _0x145fcd;};'use strict';var _=require('lodash');var util=require(_0xa5b5('0x0'));var moment=require(_0xa5b5('0x1'));var BPromise=require('bluebird');var rs=require(_0xa5b5('0x2'));var fs=require('fs');var Redis=require(_0xa5b5('0x3'));var db=require(_0xa5b5('0x4'))['db'];var utils=require(_0xa5b5('0x5'));var logger=require(_0xa5b5('0x6'))(_0xa5b5('0x7'));var config=require(_0xa5b5('0x8'));var jayson=require(_0xa5b5('0x9'));var client=jayson['client'][_0xa5b5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x29c137,_0x513641,_0x32a09a){return new BPromise(function(_0x1936d6,_0x1157ee){return client[_0xa5b5('0xb')](_0x29c137,_0x32a09a)[_0xa5b5('0xc')](function(_0x307afa){logger[_0xa5b5('0xd')](_0xa5b5('0xe'),_0x513641,_0xa5b5('0xf'));logger[_0xa5b5('0x10')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x513641,'request\x20sent',JSON['stringify'](_0x307afa));if(_0x307afa['error']){if(_0x307afa[_0xa5b5('0x11')]['code']===0x1f4){logger[_0xa5b5('0x11')]('SmsTransferReport,\x20%s,\x20%s',_0x513641,_0x307afa[_0xa5b5('0x11')][_0xa5b5('0x12')]);return _0x1157ee(_0x307afa[_0xa5b5('0x11')][_0xa5b5('0x12')]);}logger[_0xa5b5('0x11')](_0xa5b5('0xe'),_0x513641,_0x307afa[_0xa5b5('0x11')]['message']);return _0x1936d6(_0x307afa['error'][_0xa5b5('0x12')]);}else{logger['info'](_0xa5b5('0xe'),_0x513641,_0xa5b5('0xf'));_0x1936d6(_0x307afa[_0xa5b5('0x13')]['message']);}})['catch'](function(_0x4d3274){logger['error'](_0xa5b5('0xe'),_0x513641,_0x4d3274);_0x1157ee(_0x4d3274);});});}
\ No newline at end of file
index 292b0bb..c71c5bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9a3=['file','create','put','update','delete','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','show','/:id/download','download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','extname','now','post','single'];(function(_0x2faf71,_0x5a332f){var _0x1661bd=function(_0xd2925){while(--_0xd2925){_0x2faf71['push'](_0x2faf71['shift']());}};_0x1661bd(++_0x5a332f);}(_0xf9a3,0x17a));var _0x3f9a=function(_0xa821a5,_0x100187){_0xa821a5=_0xa821a5-0x0;var _0x41c11b=_0xf9a3[_0xa821a5];return _0x41c11b;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x3f9a('0x0'));var express=require(_0x3f9a('0x1'));var router=express[_0x3f9a('0x2')]();var fs_extra=require(_0x3f9a('0x3'));var auth=require(_0x3f9a('0x4'));var interaction=require(_0x3f9a('0x5'));var config=require('../../config/environment');var controller=require('./sound.controller');router['get']('/',auth[_0x3f9a('0x6')](),controller[_0x3f9a('0x7')]);router[_0x3f9a('0x8')](_0x3f9a('0x9'),auth[_0x3f9a('0x6')](),controller[_0x3f9a('0xa')]);router[_0x3f9a('0x8')](_0x3f9a('0xb'),auth[_0x3f9a('0x6')](),controller[_0x3f9a('0xc')]);var upload=multer({'storage':multer[_0x3f9a('0xd')]({'destination':function(_0x22084b,_0x2b24b3,_0x3fa0df){_0x3fa0df(null,path[_0x3f9a('0xe')](config[_0x3f9a('0xf')],_0x3f9a('0x10')));},'filename':function(_0x2893b3,_0x59daaf,_0x357e21){_0x59daaf[_0x3f9a('0x11')]=_0x59daaf[_0x3f9a('0x11')][_0x3f9a('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x357e21(null,util[_0x3f9a('0x13')](_0x3f9a('0x14'),path['basename'](_0x59daaf[_0x3f9a('0x11')],path[_0x3f9a('0x15')](_0x59daaf[_0x3f9a('0x11')])),Date[_0x3f9a('0x16')](),path[_0x3f9a('0x15')](_0x59daaf[_0x3f9a('0x11')])));}})});router[_0x3f9a('0x17')]('/',upload[_0x3f9a('0x18')](_0x3f9a('0x19')),controller[_0x3f9a('0x1a')]);router[_0x3f9a('0x1b')](_0x3f9a('0x9'),auth[_0x3f9a('0x6')](),controller[_0x3f9a('0x1c')]);router['delete']('/:id',auth[_0x3f9a('0x6')](),controller[_0x3f9a('0x1d')]);module[_0x3f9a('0x1e')]=router;
\ No newline at end of file
+var _0x55cb=['create','put','/:id','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./sound.controller','get','index','isAuthenticated','show','download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','basename','extname','now','single'];(function(_0x1f5b9a,_0x3a1097){var _0x4fc107=function(_0x29f103){while(--_0x29f103){_0x1f5b9a['push'](_0x1f5b9a['shift']());}};_0x4fc107(++_0x3a1097);}(_0x55cb,0x86));var _0xb55c=function(_0x4c8232,_0x4e0dea){_0x4c8232=_0x4c8232-0x0;var _0x3cc8e5=_0x55cb[_0x4c8232];return _0x3cc8e5;};'use strict';var multer=require(_0xb55c('0x0'));var util=require(_0xb55c('0x1'));var path=require('path');var timeout=require(_0xb55c('0x2'));var express=require(_0xb55c('0x3'));var router=express[_0xb55c('0x4')]();var fs_extra=require(_0xb55c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb55c('0x6'));var config=require(_0xb55c('0x7'));var controller=require(_0xb55c('0x8'));router[_0xb55c('0x9')]('/',auth['isAuthenticated'](),controller[_0xb55c('0xa')]);router[_0xb55c('0x9')]('/:id',auth[_0xb55c('0xb')](),controller[_0xb55c('0xc')]);router[_0xb55c('0x9')]('/:id/download',auth[_0xb55c('0xb')](),controller[_0xb55c('0xd')]);var upload=multer({'storage':multer[_0xb55c('0xe')]({'destination':function(_0xcc84a6,_0x14ceae,_0x3065fe){_0x3065fe(null,path[_0xb55c('0xf')](config[_0xb55c('0x10')],_0xb55c('0x11')));},'filename':function(_0x3665b2,_0x412016,_0x46d342){_0x412016[_0xb55c('0x12')]=_0x412016[_0xb55c('0x12')][_0xb55c('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x46d342(null,util[_0xb55c('0x14')](_0xb55c('0x15'),path[_0xb55c('0x16')](_0x412016['originalname'],path[_0xb55c('0x17')](_0x412016[_0xb55c('0x12')])),Date[_0xb55c('0x18')](),path[_0xb55c('0x17')](_0x412016['originalname'])));}})});router['post']('/',upload[_0xb55c('0x19')]('file'),controller[_0xb55c('0x1a')]);router[_0xb55c('0x1b')](_0xb55c('0x1c'),auth[_0xb55c('0xb')](),controller[_0xb55c('0x1d')]);router[_0xb55c('0x1e')]('/:id',auth[_0xb55c('0xb')](),controller['delete']);module[_0xb55c('0x1f')]=router;
\ No newline at end of file
index ae7585a..76bf5bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2165=['exports','STRING','name','FLOAT','INTEGER','BIGINT'];(function(_0x5920cb,_0x1ef8ce){var _0x1648c8=function(_0x11cbd1){while(--_0x11cbd1){_0x5920cb['push'](_0x5920cb['shift']());}};_0x1648c8(++_0x1ef8ce);}(_0x2165,0x78));var _0x5216=function(_0xb6da2d,_0x9dbbba){_0xb6da2d=_0xb6da2d-0x0;var _0x155572=_0x2165[_0xb6da2d];return _0x155572;};'use strict';var Sequelize=require('sequelize');module[_0x5216('0x0')]={'name':{'type':Sequelize[_0x5216('0x1')],'unique':_0x5216('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0x5216('0x1')]},'display_name':{'type':Sequelize[_0x5216('0x1')],'defaultValue':''},'description':{'type':Sequelize[_0x5216('0x1')]},'original_format':{'type':Sequelize[_0x5216('0x1')]},'original_duration':{'type':Sequelize[_0x5216('0x3')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0x5216('0x4')]},'original_bitRate':{'type':Sequelize[_0x5216('0x5')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0x5216('0x1')]},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize[_0x5216('0x5')]},'converted_channelCount':{'type':Sequelize[_0x5216('0x4')]},'converted_bitRate':{'type':Sequelize[_0x5216('0x5')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x06d7=['exports','STRING','name','FLOAT','INTEGER','BIGINT','sequelize'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0x06d7,0x19c));var _0x706d=function(_0x4c137c,_0x41c5b4){_0x4c137c=_0x4c137c-0x0;var _0x5e1d03=_0x06d7[_0x4c137c];return _0x5e1d03;};'use strict';var Sequelize=require(_0x706d('0x0'));module[_0x706d('0x1')]={'name':{'type':Sequelize[_0x706d('0x2')],'unique':_0x706d('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0x706d('0x2')]},'display_name':{'type':Sequelize[_0x706d('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0x706d('0x2')]},'original_format':{'type':Sequelize[_0x706d('0x2')]},'original_duration':{'type':Sequelize[_0x706d('0x4')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0x706d('0x5')]},'original_bitRate':{'type':Sequelize[_0x706d('0x6')]},'original_sampleRate':{'type':Sequelize[_0x706d('0x5')]},'converted_format':{'type':Sequelize[_0x706d('0x2')]},'converted_duration':{'type':Sequelize[_0x706d('0x4')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize[_0x706d('0x5')]},'converted_bitRate':{'type':Sequelize[_0x706d('0x6')]},'converted_sampleRate':{'type':Sequelize[_0x706d('0x5')]}};
\ No newline at end of file
index c64d785..e165bbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf65f=['converted_bitRate','converted_sampleRate','role','body','userProfileId','get','autoAssociation','create','start','update','description','original_format','eml-format','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','Sounds','sendStatus','error','stack','name','index','map','Sound','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','where','filter','merge','options','findAll','rows','catch','show','params','includeAll','find','save_name','converted_format','join','server/files/sounds/converted','ValidationError','Sound\x20not\x20found','root','format','%s.%s','basename','file','originalname','extname','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','unlinkSync','send','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','converted_duration','converted_sampleCount','converted_channelCount'];(function(_0xc17d60,_0x4d3616){var _0x462396=function(_0x23d12e){while(--_0x23d12e){_0xc17d60['push'](_0xc17d60['shift']());}};_0x462396(++_0x4d3616);}(_0xf65f,0x1f0));var _0xff65=function(_0x1c384f,_0x5c4bbe){_0x1c384f=_0x1c384f-0x0;var _0x4976f1=_0xf65f[_0x1c384f];return _0x4976f1;};'use strict';var emlformat=require(_0xff65('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xff65('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xff65('0x2'));var moment=require(_0xff65('0x3'));var BPromise=require(_0xff65('0x4'));var Mustache=require(_0xff65('0x5'));var util=require('util');var path=require(_0xff65('0x6'));var sox=require(_0xff65('0x7'));var csv=require('to-csv');var ejs=require(_0xff65('0x8'));var fs=require('fs');var fs_extra=require(_0xff65('0x9'));var _=require('lodash');var squel=require(_0xff65('0xa'));var crypto=require(_0xff65('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xff65('0xc'));var querystring=require(_0xff65('0xd'));var Papa=require(_0xff65('0xe'));var Redis=require(_0xff65('0xf'));var authService=require(_0xff65('0x10'));var qs=require(_0xff65('0x11'));var as=require(_0xff65('0x12'));var hardwareService=require(_0xff65('0x13'));var logger=require(_0xff65('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xff65('0x15'));var licenseUtil=require(_0xff65('0x16'));var db=require(_0xff65('0x17'))['db'];function respondWithStatusCode(_0x57cac5,_0x2a181b){_0x2a181b=_0x2a181b||0xcc;return function(_0x4508f5){if(_0x4508f5){return _0x57cac5['sendStatus'](_0x2a181b);}return _0x57cac5['status'](_0x2a181b)[_0xff65('0x18')]();};}function respondWithResult(_0xea43cf,_0xf98c){_0xf98c=_0xf98c||0xc8;return function(_0x67f150){if(_0x67f150){return _0xea43cf[_0xff65('0x19')](_0xf98c)[_0xff65('0x1a')](_0x67f150);}};}function respondWithFilteredResult(_0x288a85,_0x19f2f4){return function(_0x28992b){if(_0x28992b){var _0x360d0a=typeof _0x19f2f4[_0xff65('0x1b')]===_0xff65('0x1c')&&typeof _0x19f2f4[_0xff65('0x1d')]===_0xff65('0x1c');var _0x1ece30=_0x28992b[_0xff65('0x1e')];var _0x139eba=_0x360d0a?0x0:_0x19f2f4[_0xff65('0x1b')];var _0x33a41e=_0x360d0a?_0x28992b[_0xff65('0x1e')]:_0x19f2f4[_0xff65('0x1b')]+_0x19f2f4[_0xff65('0x1d')];var _0x1debd5;if(_0x33a41e>=_0x1ece30){_0x33a41e=_0x1ece30;_0x1debd5=0xc8;}else{_0x1debd5=0xce;}_0x288a85[_0xff65('0x19')](_0x1debd5);return _0x288a85[_0xff65('0x1f')](_0xff65('0x20'),_0x139eba+'-'+_0x33a41e+'/'+_0x1ece30)[_0xff65('0x1a')](_0x28992b);}return null;};}function patchUpdates(_0x3c8e28){return function(_0x2d9972){try{jsonpatch[_0xff65('0x21')](_0x2d9972,_0x3c8e28,!![]);}catch(_0x188e0c){return BPromise[_0xff65('0x22')](_0x188e0c);}return _0x2d9972[_0xff65('0x23')]();};}function saveUpdates(_0x3156da,_0x67dcfb){return function(_0x11508b){if(_0x11508b){return _0x11508b['update'](_0x3156da)[_0xff65('0x24')](function(_0x7e779b){return _0x7e779b;});}return null;};}function removeEntity(_0x25f3b5,_0x5293d8){return function(_0x4308e4){if(_0x4308e4){return _0x4308e4[_0xff65('0x25')]()['then'](function(){var _0x439e08=_0x4308e4['get']({'plain':!![]});var _0xc826da=_0xff65('0x26');return db['UserProfileResource'][_0xff65('0x25')]({'where':{'type':_0xc826da,'resourceId':_0x439e08['id']}})['then'](function(){return _0x4308e4;});})[_0xff65('0x24')](function(){_0x25f3b5[_0xff65('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47bb8f,_0x55fb6a){return function(_0x7fd065){if(!_0x7fd065){_0x47bb8f[_0xff65('0x27')](0x194);}return _0x7fd065;};}function handleError(_0x3154d3,_0x5cd96d){_0x5cd96d=_0x5cd96d||0x1f4;return function(_0x39627a){logger[_0xff65('0x28')](_0x39627a[_0xff65('0x29')]);if(_0x39627a[_0xff65('0x2a')]){delete _0x39627a[_0xff65('0x2a')];}_0x3154d3['status'](_0x5cd96d)['send'](_0x39627a);};}exports[_0xff65('0x2b')]=function(_0x5a7eac,_0x41acd2){var _0x3778ef={},_0x51dd3d={},_0x4444b2={'count':0x0,'rows':[]};var _0x36cc76=_[_0xff65('0x2c')](db[_0xff65('0x2d')][_0xff65('0x2e')],function(_0x2fd576){return{'name':_0x2fd576['fieldName'],'type':_0x2fd576[_0xff65('0x2f')][_0xff65('0x30')]};});_0x51dd3d[_0xff65('0x31')]=_[_0xff65('0x2c')](_0x36cc76,'name');_0x51dd3d['query']=_[_0xff65('0x32')](_0x5a7eac[_0xff65('0x33')]);_0x51dd3d[_0xff65('0x34')]=_[_0xff65('0x35')](_0x51dd3d['model'],_0x51dd3d[_0xff65('0x33')]);_0x3778ef['attributes']=_[_0xff65('0x35')](_0x51dd3d[_0xff65('0x31')],qs[_0xff65('0x36')](_0x5a7eac[_0xff65('0x33')][_0xff65('0x36')]));_0x3778ef[_0xff65('0x37')]=_0x3778ef[_0xff65('0x37')][_0xff65('0x38')]?_0x3778ef[_0xff65('0x37')]:_0x51dd3d[_0xff65('0x31')];if(!_0x5a7eac[_0xff65('0x33')][_0xff65('0x39')]('nolimit')){_0x3778ef[_0xff65('0x1d')]=qs['limit'](_0x5a7eac['query']['limit']);_0x3778ef[_0xff65('0x1b')]=qs['offset'](_0x5a7eac[_0xff65('0x33')][_0xff65('0x1b')]);}_0x3778ef[_0xff65('0x3a')]=qs['sort'](_0x5a7eac['query']['sort']);_0x3778ef[_0xff65('0x3b')]=qs[_0xff65('0x34')](_['pick'](_0x5a7eac[_0xff65('0x33')],_0x51dd3d['filters']),_0x36cc76);if(_0x5a7eac[_0xff65('0x33')][_0xff65('0x3c')]){_0x3778ef['where']=_[_0xff65('0x3d')](_0x3778ef[_0xff65('0x3b')],{'$or':_['map'](_0x36cc76,function(_0x2c3493){if(_0x2c3493[_0xff65('0x2f')]!=='VIRTUAL'){var _0x8632c4={};_0x8632c4[_0x2c3493[_0xff65('0x2a')]]={'$like':'%'+_0x5a7eac[_0xff65('0x33')]['filter']+'%'};return _0x8632c4;}})});}_0x3778ef=_[_0xff65('0x3d')]({},_0x3778ef,_0x5a7eac[_0xff65('0x3e')]);var _0x43f7f2={'where':_0x3778ef[_0xff65('0x3b')]};return db[_0xff65('0x2d')][_0xff65('0x1e')](_0x43f7f2)['then'](function(_0x3517c3){_0x4444b2[_0xff65('0x1e')]=_0x3517c3;if(_0x5a7eac['query']['includeAll']){_0x3778ef['include']=[{'all':!![]}];}return db['Sound'][_0xff65('0x3f')](_0x3778ef);})[_0xff65('0x24')](function(_0x420aae){_0x4444b2[_0xff65('0x40')]=_0x420aae;return _0x4444b2;})[_0xff65('0x24')](respondWithFilteredResult(_0x41acd2,_0x3778ef))[_0xff65('0x41')](handleError(_0x41acd2,null));};exports[_0xff65('0x42')]=function(_0x36203e,_0x5c0c58){var _0x2c2270={'raw':!![],'where':{'id':_0x36203e[_0xff65('0x43')]['id']}},_0x4556b1={};_0x4556b1[_0xff65('0x31')]=_['keys'](db[_0xff65('0x2d')][_0xff65('0x2e')]);_0x4556b1[_0xff65('0x33')]=_[_0xff65('0x32')](_0x36203e[_0xff65('0x33')]);_0x4556b1[_0xff65('0x34')]=_['intersection'](_0x4556b1[_0xff65('0x31')],_0x4556b1['query']);_0x2c2270[_0xff65('0x37')]=_[_0xff65('0x35')](_0x4556b1[_0xff65('0x31')],qs['fields'](_0x36203e['query'][_0xff65('0x36')]));_0x2c2270[_0xff65('0x37')]=_0x2c2270['attributes']['length']?_0x2c2270[_0xff65('0x37')]:_0x4556b1[_0xff65('0x31')];if(_0x36203e[_0xff65('0x33')][_0xff65('0x44')]){_0x2c2270['include']=[{'all':!![]}];}_0x2c2270=_['merge']({},_0x2c2270,_0x36203e[_0xff65('0x3e')]);return db[_0xff65('0x2d')]['find'](_0x2c2270)[_0xff65('0x24')](handleEntityNotFound(_0x5c0c58,null))[_0xff65('0x24')](respondWithResult(_0x5c0c58,null))[_0xff65('0x41')](handleError(_0x5c0c58,null));};exports['download']=function(_0x4dba21,_0x5ac06c,_0x26202f){return db[_0xff65('0x2d')][_0xff65('0x45')]({'where':{'id':_0x4dba21[_0xff65('0x43')]['id']},'attributes':[_0xff65('0x2a'),_0xff65('0x46'),_0xff65('0x47')],'raw':!![]})[_0xff65('0x24')](handleEntityNotFound(_0x5ac06c,null))[_0xff65('0x24')](function(_0x7e32e){if(_0x7e32e){if(!fs['existsSync'](path[_0xff65('0x48')](config['root'],_0xff65('0x49'),_0x7e32e[_0xff65('0x46')]+'.'+_0x7e32e[_0xff65('0x47')]))){throw new db['Sequelize'][(_0xff65('0x4a'))](_0xff65('0x4b'));}return _0x5ac06c['download'](path[_0xff65('0x48')](config[_0xff65('0x4c')],_0xff65('0x49'),util[_0xff65('0x4d')](_0xff65('0x4e'),_0x7e32e[_0xff65('0x46')],_0x7e32e['converted_format'])),util[_0xff65('0x4d')](_0xff65('0x4e'),_0x7e32e[_0xff65('0x2a')],_0x7e32e[_0xff65('0x47')]));}return null;})[_0xff65('0x41')](handleError(_0x5ac06c,null));};exports['create']=function(_0x2058b3,_0x2f64f0,_0x4df7b8){var _0x5aee39={'name':path[_0xff65('0x4f')](_0x2058b3[_0xff65('0x50')][_0xff65('0x51')],path[_0xff65('0x52')](_0x2058b3[_0xff65('0x50')][_0xff65('0x51')])),'save_name':path['basename'](_0x2058b3['file'][_0xff65('0x53')],path[_0xff65('0x52')](_0x2058b3[_0xff65('0x50')]['filename'])),'original_format':path[_0xff65('0x52')](_0x2058b3[_0xff65('0x50')][_0xff65('0x51')])[_0xff65('0x54')](0x1),'converted_format':_0xff65('0x55')};var _0x331b2d=path[_0xff65('0x48')](config[_0xff65('0x4c')],_0xff65('0x56'),_0x2058b3['file'][_0xff65('0x53')]);var _0xebc745=path[_0xff65('0x48')](config['root'],'server/files/sounds/converted',util[_0xff65('0x4d')](_0xff65('0x4e'),path[_0xff65('0x4f')](_0x2058b3['file']['filename'],path['extname'](_0x2058b3[_0xff65('0x50')]['filename'])),_0x5aee39[_0xff65('0x47')]));logger[_0xff65('0x57')](_0xff65('0x58'),_0x331b2d);logger['info'](_0xff65('0x59'),_0xebc745);try{fs[_0xff65('0x5a')](_0x331b2d,parseInt(_0xff65('0x5b'),0x8));var _0x4307e1=sox[_0xff65('0x5c')](_0x331b2d,_0xebc745,{'sampleRate':0x1f40,'format':_0xff65('0x55'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4307e1['on'](_0xff65('0x28'),function(_0x339aed){fs[_0xff65('0x5d')](_0x331b2d);_0x2f64f0[_0xff65('0x19')](0x1f4)[_0xff65('0x5e')](_0x339aed);});_0x4307e1['on'](_0xff65('0x5f'),function(_0x48be2d){_0x5aee39[_0xff65('0x60')]=isNaN(_0x48be2d[_0xff65('0x61')])?null:_0x48be2d[_0xff65('0x61')]*0x3e8;_0x5aee39[_0xff65('0x62')]=isNaN(_0x48be2d[_0xff65('0x63')])?null:_0x48be2d[_0xff65('0x63')];_0x5aee39[_0xff65('0x64')]=isNaN(_0x48be2d[_0xff65('0x65')])?null:_0x48be2d['channelCount'];_0x5aee39[_0xff65('0x66')]=isNaN(_0x48be2d[_0xff65('0x67')])?null:_0x48be2d[_0xff65('0x67')];_0x5aee39[_0xff65('0x68')]=isNaN(_0x48be2d[_0xff65('0x69')])?null:_0x48be2d['sampleRate'];});_0x4307e1['on']('dest',function(_0x30228d){_0x5aee39[_0xff65('0x6a')]=isNaN(_0x30228d[_0xff65('0x61')])?null:_0x30228d[_0xff65('0x61')]*0x3e8;_0x5aee39[_0xff65('0x6b')]=isNaN(_0x30228d['sampleCount'])?null:_0x30228d[_0xff65('0x63')];_0x5aee39[_0xff65('0x6c')]=isNaN(_0x30228d[_0xff65('0x65')])?null:_0x30228d[_0xff65('0x65')];_0x5aee39[_0xff65('0x6d')]=isNaN(_0x30228d[_0xff65('0x67')])?null:_0x30228d[_0xff65('0x67')];_0x5aee39[_0xff65('0x6e')]=isNaN(_0x30228d[_0xff65('0x69')])?null:_0x30228d[_0xff65('0x69')];});_0x4307e1['on'](_0xff65('0x18'),function(){fs[_0xff65('0x5a')](_0xebc745,parseInt(_0xff65('0x5b'),0x8));return db['Sound']['create'](_0x5aee39)[_0xff65('0x24')](function(_0x8447fd){var _0x592d09={'role':_0x2058b3['body'][_0xff65('0x6f')],'userProfileId':_0x2058b3[_0xff65('0x70')][_0xff65('0x71')]};if(!_0x592d09)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x592d09['role']==='user'){var _0x41def5=_0x8447fd[_0xff65('0x72')]({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0xff65('0x26'),'userProfileId':_0x592d09[_0xff65('0x71')]},'raw':!![]})[_0xff65('0x24')](function(_0x49ef2){if(_0x49ef2&&_0x49ef2[_0xff65('0x73')]===0x0){return db['UserProfileResource'][_0xff65('0x74')]({'name':_0x41def5[_0xff65('0x2a')],'resourceId':_0x41def5['id'],'type':_0x49ef2[_0xff65('0x2a')],'sectionId':_0x49ef2['id']},{})[_0xff65('0x24')](function(){return _0x8447fd;});}else{return _0x8447fd;}})[_0xff65('0x41')](function(_0x4837bb){logger[_0xff65('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4837bb);throw _0x4837bb;});}return _0x8447fd;})['then'](respondWithResult(_0x2f64f0,null))[_0xff65('0x41')](handleError(_0x2f64f0,null));});_0x4307e1[_0xff65('0x75')]();}catch(_0x411c34){_0x2f64f0[_0xff65('0x19')](0x1f4)[_0xff65('0x5e')](_0x411c34);}};exports[_0xff65('0x76')]=function(_0x1477b7,_0x3f9fbb,_0x2ec0a6){return db[_0xff65('0x2d')]['find']({'where':{'id':_0x1477b7[_0xff65('0x43')]['id']}})['then'](handleEntityNotFound(_0x3f9fbb,null))[_0xff65('0x24')](saveUpdates(_['pick'](_0x1477b7['body'],[_0xff65('0x2a'),_0xff65('0x77')]),null))[_0xff65('0x24')](respondWithResult(_0x3f9fbb,null))[_0xff65('0x41')](handleError(_0x3f9fbb,null));};exports['delete']=function(_0x4c225a,_0x485631,_0x343faf){return db['Sound']['find']({'where':{'id':_0x4c225a[_0xff65('0x43')]['id']}})[_0xff65('0x24')](function(_0x2cd24f){if(_0x2cd24f){return _0x2cd24f[_0xff65('0x25')]();}})['then'](function(_0x21c275){var _0x49a9c8=path[_0xff65('0x48')](config[_0xff65('0x4c')],_0xff65('0x56'),util['format'](_0xff65('0x4e'),_0x21c275[_0xff65('0x46')],_0x21c275[_0xff65('0x78')]));var _0x2feeef=path[_0xff65('0x48')](config[_0xff65('0x4c')],_0xff65('0x49'),util[_0xff65('0x4d')]('%s.%s',_0x21c275['save_name'],_0x21c275[_0xff65('0x47')]));fs[_0xff65('0x5d')](_0x49a9c8);fs[_0xff65('0x5d')](_0x2feeef);return _0x21c275;})[_0xff65('0x24')](function(_0x3dde93){if(_0x3dde93){return _0x485631['status'](0xcc)[_0xff65('0x18')]();}})[_0xff65('0x24')](handleEntityNotFound(_0x485631,null))[_0xff65('0x41')](handleError(_0x485631,null));};
\ No newline at end of file
+var _0x208c=['Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','pick','delete','original_format','eml-format','zip-dir','fast-json-patch','path','to-csv','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','end','json','offset','undefined','limit','Content-Range','apply','reject','save','update','then','destroy','get','Sounds','UserProfileResource','status','sendStatus','error','stack','name','send','index','map','Sound','rawAttributes','fieldName','type','key','model','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','sort','where','VIRTUAL','merge','count','includeAll','findAll','rows','catch','show','params','keys','options','find','download','save_name','converted_format','root','ValidationError','Sound\x20not\x20found','join','server/files/sounds/converted','format','%s.%s','create','basename','originalname','extname','file','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','0777','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','channelCount','original_bitRate','bitRate','dest','converted_sampleCount','converted_channelCount','converted_bitRate','sampleRate','chmodSync','body','role'];(function(_0x200753,_0x45026a){var _0x3ef0d4=function(_0xef6822){while(--_0xef6822){_0x200753['push'](_0x200753['shift']());}};_0x3ef0d4(++_0x45026a);}(_0x208c,0x169));var _0xc208=function(_0x54ba33,_0x18b4df){_0x54ba33=_0x54ba33-0x0;var _0xbae945=_0x208c[_0x54ba33];return _0xbae945;};'use strict';var emlformat=require(_0xc208('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc208('0x1'));var jsonpatch=require(_0xc208('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xc208('0x3'));var sox=require('sox');var csv=require(_0xc208('0x4'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc208('0x5'));var _=require(_0xc208('0x6'));var squel=require(_0xc208('0x7'));var crypto=require(_0xc208('0x8'));var jsforce=require(_0xc208('0x9'));var deskjs=require(_0xc208('0xa'));var toCsv=require(_0xc208('0x4'));var querystring=require(_0xc208('0xb'));var Papa=require(_0xc208('0xc'));var Redis=require(_0xc208('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xc208('0xe'));var as=require(_0xc208('0xf'));var hardwareService=require(_0xc208('0x10'));var logger=require(_0xc208('0x11'))(_0xc208('0x12'));var utils=require(_0xc208('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xc208('0x14'));var db=require(_0xc208('0x15'))['db'];function respondWithStatusCode(_0x31b4f8,_0x25f5d4){_0x25f5d4=_0x25f5d4||0xcc;return function(_0x1cf22a){if(_0x1cf22a){return _0x31b4f8['sendStatus'](_0x25f5d4);}return _0x31b4f8['status'](_0x25f5d4)[_0xc208('0x16')]();};}function respondWithResult(_0xc26488,_0x368900){_0x368900=_0x368900||0xc8;return function(_0xde006c){if(_0xde006c){return _0xc26488['status'](_0x368900)[_0xc208('0x17')](_0xde006c);}};}function respondWithFilteredResult(_0x14f484,_0x2d3427){return function(_0x3452d0){if(_0x3452d0){var _0x2c3f8d=typeof _0x2d3427[_0xc208('0x18')]===_0xc208('0x19')&&typeof _0x2d3427['limit']===_0xc208('0x19');var _0x1a11c7=_0x3452d0['count'];var _0x389b3c=_0x2c3f8d?0x0:_0x2d3427[_0xc208('0x18')];var _0x304192=_0x2c3f8d?_0x3452d0['count']:_0x2d3427[_0xc208('0x18')]+_0x2d3427[_0xc208('0x1a')];var _0x357e20;if(_0x304192>=_0x1a11c7){_0x304192=_0x1a11c7;_0x357e20=0xc8;}else{_0x357e20=0xce;}_0x14f484['status'](_0x357e20);return _0x14f484['set'](_0xc208('0x1b'),_0x389b3c+'-'+_0x304192+'/'+_0x1a11c7)[_0xc208('0x17')](_0x3452d0);}return null;};}function patchUpdates(_0x589818){return function(_0x19970a){try{jsonpatch[_0xc208('0x1c')](_0x19970a,_0x589818,!![]);}catch(_0x23bb53){return BPromise[_0xc208('0x1d')](_0x23bb53);}return _0x19970a[_0xc208('0x1e')]();};}function saveUpdates(_0x5b1a75,_0x288e61){return function(_0x32edb0){if(_0x32edb0){return _0x32edb0[_0xc208('0x1f')](_0x5b1a75)[_0xc208('0x20')](function(_0x1de4c8){return _0x1de4c8;});}return null;};}function removeEntity(_0x29b1eb,_0x48c6f3){return function(_0x53115b){if(_0x53115b){return _0x53115b[_0xc208('0x21')]()[_0xc208('0x20')](function(){var _0x1ebcb5=_0x53115b[_0xc208('0x22')]({'plain':!![]});var _0x1abfcd=_0xc208('0x23');return db[_0xc208('0x24')][_0xc208('0x21')]({'where':{'type':_0x1abfcd,'resourceId':_0x1ebcb5['id']}})['then'](function(){return _0x53115b;});})[_0xc208('0x20')](function(){_0x29b1eb[_0xc208('0x25')](0xcc)[_0xc208('0x16')]();});}};}function handleEntityNotFound(_0x40858b,_0x3ce13d){return function(_0x3fe45e){if(!_0x3fe45e){_0x40858b[_0xc208('0x26')](0x194);}return _0x3fe45e;};}function handleError(_0x422e77,_0x5980ca){_0x5980ca=_0x5980ca||0x1f4;return function(_0x4ccb14){logger[_0xc208('0x27')](_0x4ccb14[_0xc208('0x28')]);if(_0x4ccb14[_0xc208('0x29')]){delete _0x4ccb14['name'];}_0x422e77['status'](_0x5980ca)[_0xc208('0x2a')](_0x4ccb14);};}exports[_0xc208('0x2b')]=function(_0xf09464,_0x784593){var _0x33e170={},_0xf43f22={},_0x298956={'count':0x0,'rows':[]};var _0x6268c4=_[_0xc208('0x2c')](db[_0xc208('0x2d')][_0xc208('0x2e')],function(_0x5c305a){return{'name':_0x5c305a[_0xc208('0x2f')],'type':_0x5c305a[_0xc208('0x30')][_0xc208('0x31')]};});_0xf43f22[_0xc208('0x32')]=_[_0xc208('0x2c')](_0x6268c4,_0xc208('0x29'));_0xf43f22['query']=_['keys'](_0xf09464['query']);_0xf43f22[_0xc208('0x33')]=_[_0xc208('0x34')](_0xf43f22[_0xc208('0x32')],_0xf43f22[_0xc208('0x35')]);_0x33e170[_0xc208('0x36')]=_[_0xc208('0x34')](_0xf43f22[_0xc208('0x32')],qs[_0xc208('0x37')](_0xf09464[_0xc208('0x35')][_0xc208('0x37')]));_0x33e170[_0xc208('0x36')]=_0x33e170['attributes']['length']?_0x33e170[_0xc208('0x36')]:_0xf43f22[_0xc208('0x32')];if(!_0xf09464[_0xc208('0x35')][_0xc208('0x38')](_0xc208('0x39'))){_0x33e170[_0xc208('0x1a')]=qs[_0xc208('0x1a')](_0xf09464[_0xc208('0x35')]['limit']);_0x33e170[_0xc208('0x18')]=qs[_0xc208('0x18')](_0xf09464[_0xc208('0x35')][_0xc208('0x18')]);}_0x33e170['order']=qs[_0xc208('0x3a')](_0xf09464[_0xc208('0x35')]['sort']);_0x33e170[_0xc208('0x3b')]=qs[_0xc208('0x33')](_['pick'](_0xf09464['query'],_0xf43f22[_0xc208('0x33')]),_0x6268c4);if(_0xf09464[_0xc208('0x35')]['filter']){_0x33e170[_0xc208('0x3b')]=_['merge'](_0x33e170[_0xc208('0x3b')],{'$or':_[_0xc208('0x2c')](_0x6268c4,function(_0x6a8e48){if(_0x6a8e48[_0xc208('0x30')]!==_0xc208('0x3c')){var _0x50071c={};_0x50071c[_0x6a8e48[_0xc208('0x29')]]={'$like':'%'+_0xf09464[_0xc208('0x35')]['filter']+'%'};return _0x50071c;}})});}_0x33e170=_[_0xc208('0x3d')]({},_0x33e170,_0xf09464['options']);var _0x4081bb={'where':_0x33e170[_0xc208('0x3b')]};return db[_0xc208('0x2d')][_0xc208('0x3e')](_0x4081bb)[_0xc208('0x20')](function(_0x1e196e){_0x298956[_0xc208('0x3e')]=_0x1e196e;if(_0xf09464['query'][_0xc208('0x3f')]){_0x33e170['include']=[{'all':!![]}];}return db[_0xc208('0x2d')][_0xc208('0x40')](_0x33e170);})[_0xc208('0x20')](function(_0x4d5c56){_0x298956[_0xc208('0x41')]=_0x4d5c56;return _0x298956;})[_0xc208('0x20')](respondWithFilteredResult(_0x784593,_0x33e170))[_0xc208('0x42')](handleError(_0x784593,null));};exports[_0xc208('0x43')]=function(_0x250536,_0xe1d2b9){var _0x37c46e={'raw':!![],'where':{'id':_0x250536[_0xc208('0x44')]['id']}},_0x4fd9d1={};_0x4fd9d1[_0xc208('0x32')]=_[_0xc208('0x45')](db[_0xc208('0x2d')][_0xc208('0x2e')]);_0x4fd9d1[_0xc208('0x35')]=_['keys'](_0x250536[_0xc208('0x35')]);_0x4fd9d1[_0xc208('0x33')]=_[_0xc208('0x34')](_0x4fd9d1[_0xc208('0x32')],_0x4fd9d1[_0xc208('0x35')]);_0x37c46e[_0xc208('0x36')]=_[_0xc208('0x34')](_0x4fd9d1[_0xc208('0x32')],qs[_0xc208('0x37')](_0x250536[_0xc208('0x35')][_0xc208('0x37')]));_0x37c46e[_0xc208('0x36')]=_0x37c46e[_0xc208('0x36')]['length']?_0x37c46e[_0xc208('0x36')]:_0x4fd9d1[_0xc208('0x32')];if(_0x250536[_0xc208('0x35')][_0xc208('0x3f')]){_0x37c46e['include']=[{'all':!![]}];}_0x37c46e=_['merge']({},_0x37c46e,_0x250536[_0xc208('0x46')]);return db[_0xc208('0x2d')][_0xc208('0x47')](_0x37c46e)[_0xc208('0x20')](handleEntityNotFound(_0xe1d2b9,null))['then'](respondWithResult(_0xe1d2b9,null))[_0xc208('0x42')](handleError(_0xe1d2b9,null));};exports[_0xc208('0x48')]=function(_0x267a7a,_0x314139,_0x23e954){return db[_0xc208('0x2d')]['find']({'where':{'id':_0x267a7a[_0xc208('0x44')]['id']},'attributes':[_0xc208('0x29'),_0xc208('0x49'),_0xc208('0x4a')],'raw':!![]})[_0xc208('0x20')](handleEntityNotFound(_0x314139,null))[_0xc208('0x20')](function(_0x55694f){if(_0x55694f){if(!fs['existsSync'](path['join'](config[_0xc208('0x4b')],'server/files/sounds/converted',_0x55694f['save_name']+'.'+_0x55694f['converted_format']))){throw new db['Sequelize'][(_0xc208('0x4c'))](_0xc208('0x4d'));}return _0x314139[_0xc208('0x48')](path[_0xc208('0x4e')](config['root'],_0xc208('0x4f'),util[_0xc208('0x50')](_0xc208('0x51'),_0x55694f[_0xc208('0x49')],_0x55694f[_0xc208('0x4a')])),util[_0xc208('0x50')](_0xc208('0x51'),_0x55694f['name'],_0x55694f[_0xc208('0x4a')]));}return null;})[_0xc208('0x42')](handleError(_0x314139,null));};exports[_0xc208('0x52')]=function(_0x3337a7,_0x23a0fb,_0x2fd1f6){var _0x29031c={'name':path[_0xc208('0x53')](_0x3337a7['file'][_0xc208('0x54')],path[_0xc208('0x55')](_0x3337a7[_0xc208('0x56')]['originalname'])),'save_name':path['basename'](_0x3337a7[_0xc208('0x56')][_0xc208('0x57')],path['extname'](_0x3337a7[_0xc208('0x56')]['filename'])),'original_format':path['extname'](_0x3337a7['file'][_0xc208('0x54')])[_0xc208('0x58')](0x1),'converted_format':_0xc208('0x59')};var _0x5924d7=path[_0xc208('0x4e')](config['root'],_0xc208('0x5a'),_0x3337a7[_0xc208('0x56')][_0xc208('0x57')]);var _0xe51ce9=path[_0xc208('0x4e')](config[_0xc208('0x4b')],'server/files/sounds/converted',util[_0xc208('0x50')](_0xc208('0x51'),path[_0xc208('0x53')](_0x3337a7[_0xc208('0x56')][_0xc208('0x57')],path[_0xc208('0x55')](_0x3337a7[_0xc208('0x56')][_0xc208('0x57')])),_0x29031c[_0xc208('0x4a')]));logger[_0xc208('0x5b')](_0xc208('0x5c'),_0x5924d7);logger[_0xc208('0x5b')]('Sound\x20upload\x20destination:\x20%s',_0xe51ce9);try{fs['chmodSync'](_0x5924d7,parseInt(_0xc208('0x5d'),0x8));var _0x177fac=sox['transcode'](_0x5924d7,_0xe51ce9,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x177fac['on'](_0xc208('0x27'),function(_0x18c4aa){fs[_0xc208('0x5e')](_0x5924d7);_0x23a0fb[_0xc208('0x25')](0x1f4)[_0xc208('0x2a')](_0x18c4aa);});_0x177fac['on'](_0xc208('0x5f'),function(_0x389d7c){_0x29031c[_0xc208('0x60')]=isNaN(_0x389d7c[_0xc208('0x61')])?null:_0x389d7c['duration']*0x3e8;_0x29031c[_0xc208('0x62')]=isNaN(_0x389d7c[_0xc208('0x63')])?null:_0x389d7c[_0xc208('0x63')];_0x29031c['original_channelCount']=isNaN(_0x389d7c[_0xc208('0x64')])?null:_0x389d7c['channelCount'];_0x29031c[_0xc208('0x65')]=isNaN(_0x389d7c[_0xc208('0x66')])?null:_0x389d7c[_0xc208('0x66')];_0x29031c['original_sampleRate']=isNaN(_0x389d7c['sampleRate'])?null:_0x389d7c['sampleRate'];});_0x177fac['on'](_0xc208('0x67'),function(_0x23dd73){_0x29031c['converted_duration']=isNaN(_0x23dd73[_0xc208('0x61')])?null:_0x23dd73['duration']*0x3e8;_0x29031c[_0xc208('0x68')]=isNaN(_0x23dd73[_0xc208('0x63')])?null:_0x23dd73[_0xc208('0x63')];_0x29031c[_0xc208('0x69')]=isNaN(_0x23dd73[_0xc208('0x64')])?null:_0x23dd73[_0xc208('0x64')];_0x29031c[_0xc208('0x6a')]=isNaN(_0x23dd73['bitRate'])?null:_0x23dd73[_0xc208('0x66')];_0x29031c['converted_sampleRate']=isNaN(_0x23dd73[_0xc208('0x6b')])?null:_0x23dd73['sampleRate'];});_0x177fac['on']('end',function(){fs[_0xc208('0x6c')](_0xe51ce9,parseInt(_0xc208('0x5d'),0x8));return db[_0xc208('0x2d')][_0xc208('0x52')](_0x29031c)[_0xc208('0x20')](function(_0x4acdb5){var _0x43630f={'role':_0x3337a7[_0xc208('0x6d')][_0xc208('0x6e')],'userProfileId':_0x3337a7[_0xc208('0x6d')]['userProfileId']};if(!_0x43630f)throw new Error(_0xc208('0x6f'));if(_0x43630f[_0xc208('0x6e')]===_0xc208('0x70')){var _0x569f1a=_0x4acdb5['get']({'plain':!![]});return db[_0xc208('0x71')][_0xc208('0x47')]({'where':{'name':_0xc208('0x23'),'userProfileId':_0x43630f['userProfileId']},'raw':!![]})['then'](function(_0x1f8995){if(_0x1f8995&&_0x1f8995[_0xc208('0x72')]===0x0){return db['UserProfileResource']['create']({'name':_0x569f1a[_0xc208('0x29')],'resourceId':_0x569f1a['id'],'type':_0x1f8995[_0xc208('0x29')],'sectionId':_0x1f8995['id']},{})[_0xc208('0x20')](function(){return _0x4acdb5;});}else{return _0x4acdb5;}})[_0xc208('0x42')](function(_0x3b0007){logger[_0xc208('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3b0007);throw _0x3b0007;});}return _0x4acdb5;})[_0xc208('0x20')](respondWithResult(_0x23a0fb,null))[_0xc208('0x42')](handleError(_0x23a0fb,null));});_0x177fac['start']();}catch(_0x14302e){_0x23a0fb[_0xc208('0x25')](0x1f4)['send'](_0x14302e);}};exports[_0xc208('0x1f')]=function(_0x2f3745,_0xf5616b,_0x36777f){return db[_0xc208('0x2d')][_0xc208('0x47')]({'where':{'id':_0x2f3745[_0xc208('0x44')]['id']}})[_0xc208('0x20')](handleEntityNotFound(_0xf5616b,null))[_0xc208('0x20')](saveUpdates(_[_0xc208('0x73')](_0x2f3745[_0xc208('0x6d')],['name','description']),null))[_0xc208('0x20')](respondWithResult(_0xf5616b,null))[_0xc208('0x42')](handleError(_0xf5616b,null));};exports[_0xc208('0x74')]=function(_0x35e966,_0x58a030,_0x52c697){return db[_0xc208('0x2d')]['find']({'where':{'id':_0x35e966[_0xc208('0x44')]['id']}})[_0xc208('0x20')](function(_0x3c469c){if(_0x3c469c){return _0x3c469c[_0xc208('0x21')]();}})[_0xc208('0x20')](function(_0x15c792){var _0x3ffdb5=path[_0xc208('0x4e')](config['root'],_0xc208('0x5a'),util[_0xc208('0x50')](_0xc208('0x51'),_0x15c792['save_name'],_0x15c792[_0xc208('0x75')]));var _0x46a472=path[_0xc208('0x4e')](config[_0xc208('0x4b')],'server/files/sounds/converted',util[_0xc208('0x50')](_0xc208('0x51'),_0x15c792[_0xc208('0x49')],_0x15c792[_0xc208('0x4a')]));fs['unlinkSync'](_0x3ffdb5);fs['unlinkSync'](_0x46a472);return _0x15c792;})[_0xc208('0x20')](function(_0x4e748e){if(_0x4e748e){return _0x58a030[_0xc208('0x25')](0xcc)[_0xc208('0x16')]();}})['then'](handleEntityNotFound(_0x58a030,null))[_0xc208('0x42')](handleError(_0x58a030,null));};
\ No newline at end of file
index b5fb71c..9ebef3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb78f=['../../config/environment','./sound.attributes','exports','define','tools_sounds','lodash','util','api','moment','bluebird','request-promise','rimraf'];(function(_0x512ca5,_0x1c1932){var _0x37e058=function(_0x5edf07){while(--_0x5edf07){_0x512ca5['push'](_0x512ca5['shift']());}};_0x37e058(++_0x1c1932);}(_0xb78f,0x1e5));var _0xfb78=function(_0xdc0185,_0x11ad88){_0xdc0185=_0xdc0185-0x0;var _0x4f2567=_0xb78f[_0xdc0185];return _0x4f2567;};'use strict';var _=require(_0xfb78('0x0'));var util=require(_0xfb78('0x1'));var logger=require('../../config/logger')(_0xfb78('0x2'));var moment=require(_0xfb78('0x3'));var BPromise=require(_0xfb78('0x4'));var rp=require(_0xfb78('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfb78('0x6'));var config=require(_0xfb78('0x7'));var attributes=require(_0xfb78('0x8'));module[_0xfb78('0x9')]=function(_0x2385d1,_0x5865d3){return _0x2385d1[_0xfb78('0xa')]('Sound',attributes,{'tableName':_0xfb78('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8d51=['request-promise','path','rimraf','../../config/environment','./sound.attributes','exports','define','tools_sounds','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x250a61,_0x1dadce){var _0x4c7018=function(_0x154fa8){while(--_0x154fa8){_0x250a61['push'](_0x250a61['shift']());}};_0x4c7018(++_0x1dadce);}(_0x8d51,0xa2));var _0x18d5=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0x8d51[_0x3c4737];return _0x2bb926;};'use strict';var _=require(_0x18d5('0x0'));var util=require(_0x18d5('0x1'));var logger=require(_0x18d5('0x2'))(_0x18d5('0x3'));var moment=require(_0x18d5('0x4'));var BPromise=require(_0x18d5('0x5'));var rp=require(_0x18d5('0x6'));var fs=require('fs');var path=require(_0x18d5('0x7'));var rimraf=require(_0x18d5('0x8'));var config=require(_0x18d5('0x9'));var attributes=require(_0x18d5('0xa'));module[_0x18d5('0xb')]=function(_0x32da13,_0x3cbc5b){return _0x32da13[_0x18d5('0xc')]('Sound',attributes,{'tableName':_0x18d5('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 51af57b..1ffd948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd78=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSound','find','options','where','attributes','include','model','map','lodash','util','moment','bluebird','randomstring'];(function(_0x5bfddb,_0x2ec99e){var _0x477d7f=function(_0x361a39){while(--_0x361a39){_0x5bfddb['push'](_0x5bfddb['shift']());}};_0x477d7f(++_0x2ec99e);}(_0xbd78,0x103));var _0x8bd7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xbd78[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x8bd7('0x0'));var util=require(_0x8bd7('0x1'));var moment=require(_0x8bd7('0x2'));var BPromise=require(_0x8bd7('0x3'));var rs=require(_0x8bd7('0x4'));var fs=require('fs');var Redis=require(_0x8bd7('0x5'));var db=require(_0x8bd7('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x8bd7('0x7'))(_0x8bd7('0x8'));var config=require(_0x8bd7('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8bd7('0xa')][_0x8bd7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x27b0a0,_0x5b40bb,_0x3e49d9){return new BPromise(function(_0xee4628,_0x762b5d){return client[_0x8bd7('0xc')](_0x27b0a0,_0x3e49d9)[_0x8bd7('0xd')](function(_0x2ff102){logger[_0x8bd7('0xe')](_0x8bd7('0xf'),_0x5b40bb,_0x8bd7('0x10'));logger[_0x8bd7('0x11')](_0x8bd7('0x12'),_0x5b40bb,_0x8bd7('0x10'),JSON[_0x8bd7('0x13')](_0x2ff102));if(_0x2ff102[_0x8bd7('0x14')]){if(_0x2ff102['error'][_0x8bd7('0x15')]===0x1f4){logger[_0x8bd7('0x14')]('Sound,\x20%s,\x20%s',_0x5b40bb,_0x2ff102[_0x8bd7('0x14')]['message']);return _0x762b5d(_0x2ff102['error'][_0x8bd7('0x16')]);}logger[_0x8bd7('0x14')](_0x8bd7('0xf'),_0x5b40bb,_0x2ff102[_0x8bd7('0x14')][_0x8bd7('0x16')]);return _0xee4628(_0x2ff102[_0x8bd7('0x14')][_0x8bd7('0x16')]);}else{logger[_0x8bd7('0xe')]('Sound,\x20%s,\x20%s',_0x5b40bb,'request\x20sent');_0xee4628(_0x2ff102[_0x8bd7('0x17')][_0x8bd7('0x16')]);}})[_0x8bd7('0x18')](function(_0x273bd5){logger[_0x8bd7('0x14')]('Sound,\x20%s,\x20%s',_0x5b40bb,_0x273bd5);_0x762b5d(_0x273bd5);});});}exports[_0x8bd7('0x19')]=function(_0x5a2237){var _0x1a842e=this;return new Promise(function(_0x249798,_0x361561){return db['Sound'][_0x8bd7('0x1a')]({'raw':_0x5a2237['options']?_0x5a2237[_0x8bd7('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x5a2237['options']?_0x5a2237[_0x8bd7('0x1b')][_0x8bd7('0x1c')]||null:null,'attributes':_0x5a2237['options']?_0x5a2237[_0x8bd7('0x1b')][_0x8bd7('0x1d')]||null:null,'include':_0x5a2237[_0x8bd7('0x1b')]?_0x5a2237['options'][_0x8bd7('0x1e')]?_['map'](_0x5a2237[_0x8bd7('0x1b')][_0x8bd7('0x1e')],function(_0xbbd287){return{'model':db[_0xbbd287[_0x8bd7('0x1f')]],'as':_0xbbd287['as'],'attributes':_0xbbd287[_0x8bd7('0x1d')],'include':_0xbbd287[_0x8bd7('0x1e')]?_[_0x8bd7('0x20')](_0xbbd287[_0x8bd7('0x1e')],function(_0x3b48f0){return{'model':db[_0x3b48f0['model']],'as':_0x3b48f0['as'],'attributes':_0x3b48f0[_0x8bd7('0x1d')],'include':_0x3b48f0[_0x8bd7('0x1e')]?_[_0x8bd7('0x20')](_0x3b48f0[_0x8bd7('0x1e')],function(_0x391a9f){return{'model':db[_0x391a9f[_0x8bd7('0x1f')]],'as':_0x391a9f['as'],'attributes':_0x391a9f[_0x8bd7('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x167803){logger[_0x8bd7('0xe')](_0x8bd7('0x19'),_0x5a2237);logger['debug'](_0x8bd7('0x19'),_0x5a2237,JSON[_0x8bd7('0x13')](_0x167803));_0x249798(_0x167803);})[_0x8bd7('0x18')](function(_0x44c543){logger['error'](_0x8bd7('0x19'),_0x44c543[_0x8bd7('0x16')],_0x5a2237);_0x361561(_0x1a842e[_0x8bd7('0x14')](0x1f4,_0x44c543['message']));});});};
\ No newline at end of file
+var _0x49bb=['find','options','raw','where','map','include','model','attributes','debug','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Sound,\x20%s,\x20%s','request\x20sent','Sound,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','ShowSound','Sound'];(function(_0x1cb18a,_0x33167a){var _0x22442e=function(_0x46c611){while(--_0x46c611){_0x1cb18a['push'](_0x1cb18a['shift']());}};_0x22442e(++_0x33167a);}(_0x49bb,0x69));var _0xb49b=function(_0x2719ae,_0x5bc261){_0x2719ae=_0x2719ae-0x0;var _0x27d332=_0x49bb[_0x2719ae];return _0x27d332;};'use strict';var _=require('lodash');var util=require(_0xb49b('0x0'));var moment=require(_0xb49b('0x1'));var BPromise=require(_0xb49b('0x2'));var rs=require(_0xb49b('0x3'));var fs=require('fs');var Redis=require(_0xb49b('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb49b('0x5'))(_0xb49b('0x6'));var config=require(_0xb49b('0x7'));var jayson=require(_0xb49b('0x8'));var client=jayson[_0xb49b('0x9')][_0xb49b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x40a65a,_0x16b974,_0x505947){return new BPromise(function(_0xab5834,_0x9ae3b8){return client[_0xb49b('0xb')](_0x40a65a,_0x505947)[_0xb49b('0xc')](function(_0x470452){logger['info'](_0xb49b('0xd'),_0x16b974,_0xb49b('0xe'));logger['debug'](_0xb49b('0xf'),_0x16b974,_0xb49b('0xe'),JSON[_0xb49b('0x10')](_0x470452));if(_0x470452[_0xb49b('0x11')]){if(_0x470452[_0xb49b('0x11')]['code']===0x1f4){logger[_0xb49b('0x11')](_0xb49b('0xd'),_0x16b974,_0x470452['error'][_0xb49b('0x12')]);return _0x9ae3b8(_0x470452[_0xb49b('0x11')][_0xb49b('0x12')]);}logger[_0xb49b('0x11')](_0xb49b('0xd'),_0x16b974,_0x470452[_0xb49b('0x11')]['message']);return _0xab5834(_0x470452[_0xb49b('0x11')][_0xb49b('0x12')]);}else{logger[_0xb49b('0x13')](_0xb49b('0xd'),_0x16b974,_0xb49b('0xe'));_0xab5834(_0x470452['result'][_0xb49b('0x12')]);}})[_0xb49b('0x14')](function(_0x47868a){logger[_0xb49b('0x11')](_0xb49b('0xd'),_0x16b974,_0x47868a);_0x9ae3b8(_0x47868a);});});}exports[_0xb49b('0x15')]=function(_0x3238d7){var _0x49f917=this;return new Promise(function(_0x2b4faa,_0x3952c1){return db[_0xb49b('0x16')][_0xb49b('0x17')]({'raw':_0x3238d7[_0xb49b('0x18')]?_0x3238d7['options'][_0xb49b('0x19')]===undefined?!![]:![]:!![],'where':_0x3238d7[_0xb49b('0x18')]?_0x3238d7[_0xb49b('0x18')][_0xb49b('0x1a')]||null:null,'attributes':_0x3238d7[_0xb49b('0x18')]?_0x3238d7[_0xb49b('0x18')]['attributes']||null:null,'include':_0x3238d7[_0xb49b('0x18')]?_0x3238d7['options']['include']?_[_0xb49b('0x1b')](_0x3238d7[_0xb49b('0x18')][_0xb49b('0x1c')],function(_0x178833){return{'model':db[_0x178833[_0xb49b('0x1d')]],'as':_0x178833['as'],'attributes':_0x178833[_0xb49b('0x1e')],'include':_0x178833['include']?_[_0xb49b('0x1b')](_0x178833[_0xb49b('0x1c')],function(_0x481c2e){return{'model':db[_0x481c2e[_0xb49b('0x1d')]],'as':_0x481c2e['as'],'attributes':_0x481c2e['attributes'],'include':_0x481c2e['include']?_['map'](_0x481c2e['include'],function(_0x25320b){return{'model':db[_0x25320b[_0xb49b('0x1d')]],'as':_0x25320b['as'],'attributes':_0x25320b[_0xb49b('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5b0945){logger[_0xb49b('0x13')](_0xb49b('0x15'),_0x3238d7);logger[_0xb49b('0x1f')](_0xb49b('0x15'),_0x3238d7,JSON[_0xb49b('0x10')](_0x5b0945));_0x2b4faa(_0x5b0945);})[_0xb49b('0x14')](function(_0x168ebb){logger[_0xb49b('0x11')](_0xb49b('0x15'),_0x168ebb[_0xb49b('0x12')],_0x3238d7);_0x3952c1(_0x49f917[_0xb49b('0x11')](0x1f4,_0x168ebb[_0xb49b('0x12')]));});});};
\ No newline at end of file
index dec3e92..8ccf4b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete'];(function(_0x37bef1,_0xecf330){var _0x342427=function(_0xa1884c){while(--_0xa1884c){_0x37bef1['push'](_0x37bef1['shift']());}};_0x342427(++_0xecf330);}(_0x2032,0xd9));var _0x2203=function(_0x1fad08,_0xb6678e){_0x1fad08=_0x1fad08-0x0;var _0x2d2a71=_0x2032[_0x1fad08];return _0x2d2a71;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2203('0xe')]('/:id',auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);router[_0x2203('0x10')]('/:id',auth[_0x2203('0x9')](),controller['destroy']);module[_0x2203('0x11')]=router;
\ No newline at end of file
+var _0x14a0=['get','isAuthenticated','/:id','show','create','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./squareMessage.controller'];(function(_0x18dca3,_0xa3c0cc){var _0x542383=function(_0x1d9367){while(--_0x1d9367){_0x18dca3['push'](_0x18dca3['shift']());}};_0x542383(++_0xa3c0cc);}(_0x14a0,0x8e));var _0x014a=function(_0x2ab522,_0xaee878){_0x2ab522=_0x2ab522-0x0;var _0x542941=_0x14a0[_0x2ab522];return _0x542941;};'use strict';var multer=require('multer');var util=require(_0x014a('0x0'));var path=require(_0x014a('0x1'));var timeout=require(_0x014a('0x2'));var express=require(_0x014a('0x3'));var router=express[_0x014a('0x4')]();var fs_extra=require(_0x014a('0x5'));var auth=require(_0x014a('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x014a('0x7'));router[_0x014a('0x8')]('/',auth[_0x014a('0x9')](),controller['index']);router['get'](_0x014a('0xa'),auth[_0x014a('0x9')](),controller[_0x014a('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x014a('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x014a('0xd')]('/:id',auth[_0x014a('0x9')](),controller[_0x014a('0xe')]);module['exports']=router;
\ No newline at end of file
index 2abf7d5..5ab4231 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb721=['exports','STRING','TEXT','medium','ENUM'];(function(_0x30ea11,_0x5df6d){var _0x3a390a=function(_0x23f385){while(--_0x23f385){_0x30ea11['push'](_0x30ea11['shift']());}};_0x3a390a(++_0x5df6d);}(_0xb721,0x82));var _0x1b72=function(_0x5f2098,_0x47308b){_0x5f2098=_0x5f2098-0x0;var _0x18af32=_0xb721[_0x5f2098];return _0x18af32;};'use strict';var Sequelize=require('sequelize');module[_0x1b72('0x0')]={'uniqueid':{'type':Sequelize[_0x1b72('0x1')]},'body':{'type':Sequelize[_0x1b72('0x2')](_0x1b72('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x1b72('0x4')]('in','out'),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0x1b72('0x1')]},'providerResponse':{'type':Sequelize[_0x1b72('0x2')]}};
\ No newline at end of file
+var _0xead1=['out','sequelize','exports','TEXT','medium','ENUM'];(function(_0x53e353,_0x393ee9){var _0x5868ab=function(_0x14b3e9){while(--_0x14b3e9){_0x53e353['push'](_0x53e353['shift']());}};_0x5868ab(++_0x393ee9);}(_0xead1,0x1c3));var _0x1ead=function(_0x18cd5b,_0x10240b){_0x18cd5b=_0x18cd5b-0x0;var _0x5eaa52=_0xead1[_0x18cd5b];return _0x5eaa52;};'use strict';var Sequelize=require(_0x1ead('0x0'));module[_0x1ead('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0x1ead('0x2')](_0x1ead('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x1ead('0x4')]('in',_0x1ead('0x5')),'defaultValue':_0x1ead('0x5'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x1ead('0x2')]}};
\ No newline at end of file
index 197596c..ae1b949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b05=['findAll','rows','catch','show','find','create','body','update','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','reject','save','then','destroy','end','error','stack','name','send','index','SquareMessage','rawAttributes','fieldName','type','key','keys','query','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','map','VIRTUAL','filter','merge','options','include'];(function(_0x402731,_0x43c115){var _0x111736=function(_0x5a7044){while(--_0x5a7044){_0x402731['push'](_0x402731['shift']());}};_0x111736(++_0x43c115);}(_0x9b05,0x1cb));var _0x59b0=function(_0x2ac512,_0x18d0fc){_0x2ac512=_0x2ac512-0x0;var _0x41a20e=_0x9b05[_0x2ac512];return _0x41a20e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x59b0('0x0'));var zipdir=require(_0x59b0('0x1'));var jsonpatch=require(_0x59b0('0x2'));var rp=require(_0x59b0('0x3'));var moment=require(_0x59b0('0x4'));var BPromise=require(_0x59b0('0x5'));var Mustache=require(_0x59b0('0x6'));var util=require('util');var path=require('path');var sox=require(_0x59b0('0x7'));var csv=require(_0x59b0('0x8'));var ejs=require(_0x59b0('0x9'));var fs=require('fs');var fs_extra=require(_0x59b0('0xa'));var _=require('lodash');var squel=require(_0x59b0('0xb'));var crypto=require(_0x59b0('0xc'));var jsforce=require(_0x59b0('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x59b0('0x8'));var querystring=require(_0x59b0('0xe'));var Papa=require(_0x59b0('0xf'));var Redis=require('ioredis');var authService=require(_0x59b0('0x10'));var qs=require(_0x59b0('0x11'));var as=require(_0x59b0('0x12'));var hardwareService=require(_0x59b0('0x13'));var logger=require('../../config/logger')(_0x59b0('0x14'));var utils=require(_0x59b0('0x15'));var config=require(_0x59b0('0x16'));var licenseUtil=require(_0x59b0('0x17'));var db=require(_0x59b0('0x18'))['db'];function respondWithStatusCode(_0x5bb966,_0x59c3cb){_0x59c3cb=_0x59c3cb||0xcc;return function(_0x1ddfba){if(_0x1ddfba){return _0x5bb966['sendStatus'](_0x59c3cb);}return _0x5bb966[_0x59b0('0x19')](_0x59c3cb)['end']();};}function respondWithResult(_0x43f01e,_0x15c599){_0x15c599=_0x15c599||0xc8;return function(_0x4e3b7c){if(_0x4e3b7c){return _0x43f01e[_0x59b0('0x19')](_0x15c599)[_0x59b0('0x1a')](_0x4e3b7c);}};}function respondWithFilteredResult(_0x4910ef,_0x32cc9c){return function(_0xb53e4e){if(_0xb53e4e){var _0x27cda3=typeof _0x32cc9c[_0x59b0('0x1b')]===_0x59b0('0x1c')&&typeof _0x32cc9c[_0x59b0('0x1d')]==='undefined';var _0x43ba72=_0xb53e4e[_0x59b0('0x1e')];var _0x59b60f=_0x27cda3?0x0:_0x32cc9c[_0x59b0('0x1b')];var _0x143908=_0x27cda3?_0xb53e4e[_0x59b0('0x1e')]:_0x32cc9c[_0x59b0('0x1b')]+_0x32cc9c['limit'];var _0x38829f;if(_0x143908>=_0x43ba72){_0x143908=_0x43ba72;_0x38829f=0xc8;}else{_0x38829f=0xce;}_0x4910ef['status'](_0x38829f);return _0x4910ef['set'](_0x59b0('0x1f'),_0x59b60f+'-'+_0x143908+'/'+_0x43ba72)[_0x59b0('0x1a')](_0xb53e4e);}return null;};}function patchUpdates(_0xeca5d4){return function(_0xd890ca){try{jsonpatch['apply'](_0xd890ca,_0xeca5d4,!![]);}catch(_0x4f12a7){return BPromise[_0x59b0('0x20')](_0x4f12a7);}return _0xd890ca[_0x59b0('0x21')]();};}function saveUpdates(_0x5d75ba,_0x5d5768){return function(_0x225383){if(_0x225383){return _0x225383['update'](_0x5d75ba)[_0x59b0('0x22')](function(_0x5a67c1){return _0x5a67c1;});}return null;};}function removeEntity(_0x451271,_0x356f89){return function(_0x1ec11d){if(_0x1ec11d){return _0x1ec11d[_0x59b0('0x23')]()[_0x59b0('0x22')](function(){_0x451271[_0x59b0('0x19')](0xcc)[_0x59b0('0x24')]();});}};}function handleEntityNotFound(_0xf1f068,_0x4a7159){return function(_0x1c7701){if(!_0x1c7701){_0xf1f068['sendStatus'](0x194);}return _0x1c7701;};}function handleError(_0x2c66c1,_0x3a315b){_0x3a315b=_0x3a315b||0x1f4;return function(_0x41da30){logger[_0x59b0('0x25')](_0x41da30[_0x59b0('0x26')]);if(_0x41da30[_0x59b0('0x27')]){delete _0x41da30[_0x59b0('0x27')];}_0x2c66c1[_0x59b0('0x19')](_0x3a315b)[_0x59b0('0x28')](_0x41da30);};}exports[_0x59b0('0x29')]=function(_0x242adf,_0x427bb7){var _0x19ad8f={},_0x355eb0={},_0x234743={'count':0x0,'rows':[]};var _0x4af3d5=_['map'](db[_0x59b0('0x2a')][_0x59b0('0x2b')],function(_0x3b30c3){return{'name':_0x3b30c3[_0x59b0('0x2c')],'type':_0x3b30c3[_0x59b0('0x2d')][_0x59b0('0x2e')]};});_0x355eb0['model']=_['map'](_0x4af3d5,'name');_0x355eb0['query']=_[_0x59b0('0x2f')](_0x242adf[_0x59b0('0x30')]);_0x355eb0['filters']=_[_0x59b0('0x31')](_0x355eb0['model'],_0x355eb0['query']);_0x19ad8f['attributes']=_[_0x59b0('0x31')](_0x355eb0[_0x59b0('0x32')],qs['fields'](_0x242adf[_0x59b0('0x30')][_0x59b0('0x33')]));_0x19ad8f[_0x59b0('0x34')]=_0x19ad8f[_0x59b0('0x34')][_0x59b0('0x35')]?_0x19ad8f[_0x59b0('0x34')]:_0x355eb0[_0x59b0('0x32')];if(!_0x242adf[_0x59b0('0x30')][_0x59b0('0x36')]('nolimit')){_0x19ad8f['limit']=qs[_0x59b0('0x1d')](_0x242adf['query'][_0x59b0('0x1d')]);_0x19ad8f['offset']=qs[_0x59b0('0x1b')](_0x242adf['query']['offset']);}_0x19ad8f[_0x59b0('0x37')]=qs['sort'](_0x242adf[_0x59b0('0x30')][_0x59b0('0x38')]);_0x19ad8f[_0x59b0('0x39')]=qs[_0x59b0('0x3a')](_[_0x59b0('0x3b')](_0x242adf['query'],_0x355eb0['filters']),_0x4af3d5);if(_0x242adf[_0x59b0('0x30')]['filter']){_0x19ad8f[_0x59b0('0x39')]=_['merge'](_0x19ad8f[_0x59b0('0x39')],{'$or':_[_0x59b0('0x3c')](_0x4af3d5,function(_0x556c25){if(_0x556c25[_0x59b0('0x2d')]!==_0x59b0('0x3d')){var _0x360eb6={};_0x360eb6[_0x556c25[_0x59b0('0x27')]]={'$like':'%'+_0x242adf[_0x59b0('0x30')][_0x59b0('0x3e')]+'%'};return _0x360eb6;}})});}_0x19ad8f=_[_0x59b0('0x3f')]({},_0x19ad8f,_0x242adf[_0x59b0('0x40')]);var _0x30274e={'where':_0x19ad8f['where']};return db[_0x59b0('0x2a')][_0x59b0('0x1e')](_0x30274e)['then'](function(_0x56ca8e){_0x234743[_0x59b0('0x1e')]=_0x56ca8e;if(_0x242adf[_0x59b0('0x30')]['includeAll']){_0x19ad8f[_0x59b0('0x41')]=[{'all':!![]}];}return db[_0x59b0('0x2a')][_0x59b0('0x42')](_0x19ad8f);})[_0x59b0('0x22')](function(_0x14e90c){_0x234743[_0x59b0('0x43')]=_0x14e90c;return _0x234743;})['then'](respondWithFilteredResult(_0x427bb7,_0x19ad8f))[_0x59b0('0x44')](handleError(_0x427bb7,null));};exports[_0x59b0('0x45')]=function(_0x4a37d3,_0x45b6a5){var _0x11cb18={'raw':!![],'where':{'id':_0x4a37d3['params']['id']}},_0x3a722f={};_0x3a722f['model']=_[_0x59b0('0x2f')](db[_0x59b0('0x2a')][_0x59b0('0x2b')]);_0x3a722f[_0x59b0('0x30')]=_[_0x59b0('0x2f')](_0x4a37d3['query']);_0x3a722f[_0x59b0('0x3a')]=_[_0x59b0('0x31')](_0x3a722f['model'],_0x3a722f[_0x59b0('0x30')]);_0x11cb18['attributes']=_[_0x59b0('0x31')](_0x3a722f[_0x59b0('0x32')],qs['fields'](_0x4a37d3[_0x59b0('0x30')]['fields']));_0x11cb18['attributes']=_0x11cb18['attributes']['length']?_0x11cb18['attributes']:_0x3a722f[_0x59b0('0x32')];if(_0x4a37d3['query']['includeAll']){_0x11cb18[_0x59b0('0x41')]=[{'all':!![]}];}_0x11cb18=_[_0x59b0('0x3f')]({},_0x11cb18,_0x4a37d3['options']);return db[_0x59b0('0x2a')][_0x59b0('0x46')](_0x11cb18)[_0x59b0('0x22')](handleEntityNotFound(_0x45b6a5,null))[_0x59b0('0x22')](respondWithResult(_0x45b6a5,null))[_0x59b0('0x44')](handleError(_0x45b6a5,null));};exports['create']=function(_0x5f2f4c,_0x3b674b){return db[_0x59b0('0x2a')][_0x59b0('0x47')](_0x5f2f4c[_0x59b0('0x48')],{})['then'](respondWithResult(_0x3b674b,0xc9))['catch'](handleError(_0x3b674b,null));};exports[_0x59b0('0x49')]=function(_0x247c1a,_0x2e2782){if(_0x247c1a[_0x59b0('0x48')]['id']){delete _0x247c1a[_0x59b0('0x48')]['id'];}return db[_0x59b0('0x2a')][_0x59b0('0x46')]({'where':{'id':_0x247c1a['params']['id']}})[_0x59b0('0x22')](handleEntityNotFound(_0x2e2782,null))[_0x59b0('0x22')](saveUpdates(_0x247c1a[_0x59b0('0x48')],null))[_0x59b0('0x22')](respondWithResult(_0x2e2782,null))['catch'](handleError(_0x2e2782,null));};exports[_0x59b0('0x23')]=function(_0x2817d8,_0x4ff840){return db[_0x59b0('0x2a')][_0x59b0('0x46')]({'where':{'id':_0x2817d8[_0x59b0('0x4a')]['id']}})[_0x59b0('0x22')](handleEntityNotFound(_0x4ff840,null))[_0x59b0('0x22')](removeEntity(_0x4ff840,null))['catch'](handleError(_0x4ff840,null));};
\ No newline at end of file
+var _0x0d7e=['fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SquareMessage','count','includeAll','include','catch','show','find','create','body','params','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs'];(function(_0x5a010e,_0x132762){var _0x11e14f=function(_0x31ec40){while(--_0x31ec40){_0x5a010e['push'](_0x5a010e['shift']());}};_0x11e14f(++_0x132762);}(_0x0d7e,0x167));var _0xe0d7=function(_0x2fdbcb,_0x58777d){_0x2fdbcb=_0x2fdbcb-0x0;var _0x5d40e0=_0x0d7e[_0x2fdbcb];return _0x5d40e0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe0d7('0x0'));var jsonpatch=require(_0xe0d7('0x1'));var rp=require(_0xe0d7('0x2'));var moment=require(_0xe0d7('0x3'));var BPromise=require(_0xe0d7('0x4'));var Mustache=require(_0xe0d7('0x5'));var util=require(_0xe0d7('0x6'));var path=require(_0xe0d7('0x7'));var sox=require(_0xe0d7('0x8'));var csv=require(_0xe0d7('0x9'));var ejs=require(_0xe0d7('0xa'));var fs=require('fs');var fs_extra=require(_0xe0d7('0xb'));var _=require(_0xe0d7('0xc'));var squel=require(_0xe0d7('0xd'));var crypto=require('crypto');var jsforce=require(_0xe0d7('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xe0d7('0x9'));var querystring=require(_0xe0d7('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0d7('0x10'));var authService=require(_0xe0d7('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0d7('0x12'));var hardwareService=require(_0xe0d7('0x13'));var logger=require('../../config/logger')(_0xe0d7('0x14'));var utils=require(_0xe0d7('0x15'));var config=require(_0xe0d7('0x16'));var licenseUtil=require(_0xe0d7('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5b3648,_0x2b5b56){_0x2b5b56=_0x2b5b56||0xcc;return function(_0x137117){if(_0x137117){return _0x5b3648[_0xe0d7('0x18')](_0x2b5b56);}return _0x5b3648[_0xe0d7('0x19')](_0x2b5b56)[_0xe0d7('0x1a')]();};}function respondWithResult(_0x31a7ba,_0x4677fe){_0x4677fe=_0x4677fe||0xc8;return function(_0x171da9){if(_0x171da9){return _0x31a7ba[_0xe0d7('0x19')](_0x4677fe)[_0xe0d7('0x1b')](_0x171da9);}};}function respondWithFilteredResult(_0x5d9909,_0x5737d1){return function(_0x49a7f3){if(_0x49a7f3){var _0x221279=typeof _0x5737d1[_0xe0d7('0x1c')]==='undefined'&&typeof _0x5737d1[_0xe0d7('0x1d')]==='undefined';var _0x3a7553=_0x49a7f3['count'];var _0x429ab6=_0x221279?0x0:_0x5737d1[_0xe0d7('0x1c')];var _0x3f3cbd=_0x221279?_0x49a7f3['count']:_0x5737d1[_0xe0d7('0x1c')]+_0x5737d1[_0xe0d7('0x1d')];var _0x2fbf79;if(_0x3f3cbd>=_0x3a7553){_0x3f3cbd=_0x3a7553;_0x2fbf79=0xc8;}else{_0x2fbf79=0xce;}_0x5d9909['status'](_0x2fbf79);return _0x5d9909['set'](_0xe0d7('0x1e'),_0x429ab6+'-'+_0x3f3cbd+'/'+_0x3a7553)[_0xe0d7('0x1b')](_0x49a7f3);}return null;};}function patchUpdates(_0x1cfbec){return function(_0x4030de){try{jsonpatch[_0xe0d7('0x1f')](_0x4030de,_0x1cfbec,!![]);}catch(_0x469255){return BPromise[_0xe0d7('0x20')](_0x469255);}return _0x4030de[_0xe0d7('0x21')]();};}function saveUpdates(_0x124a0d,_0x35b840){return function(_0x688114){if(_0x688114){return _0x688114[_0xe0d7('0x22')](_0x124a0d)[_0xe0d7('0x23')](function(_0x1f96fd){return _0x1f96fd;});}return null;};}function removeEntity(_0x31cad5,_0x563e1d){return function(_0x5acab0){if(_0x5acab0){return _0x5acab0[_0xe0d7('0x24')]()[_0xe0d7('0x23')](function(){_0x31cad5[_0xe0d7('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x30ef0c,_0x54980b){return function(_0x438cd8){if(!_0x438cd8){_0x30ef0c[_0xe0d7('0x18')](0x194);}return _0x438cd8;};}function handleError(_0x36f6e3,_0x271c9f){_0x271c9f=_0x271c9f||0x1f4;return function(_0xbf6dd0){logger[_0xe0d7('0x25')](_0xbf6dd0[_0xe0d7('0x26')]);if(_0xbf6dd0[_0xe0d7('0x27')]){delete _0xbf6dd0[_0xe0d7('0x27')];}_0x36f6e3[_0xe0d7('0x19')](_0x271c9f)[_0xe0d7('0x28')](_0xbf6dd0);};}exports[_0xe0d7('0x29')]=function(_0x8a99ab,_0x391059){var _0x478871={},_0x4be800={},_0x4efe78={'count':0x0,'rows':[]};var _0x7de220=_[_0xe0d7('0x2a')](db['SquareMessage'][_0xe0d7('0x2b')],function(_0x48325f){return{'name':_0x48325f['fieldName'],'type':_0x48325f[_0xe0d7('0x2c')][_0xe0d7('0x2d')]};});_0x4be800['model']=_[_0xe0d7('0x2a')](_0x7de220,_0xe0d7('0x27'));_0x4be800[_0xe0d7('0x2e')]=_[_0xe0d7('0x2f')](_0x8a99ab['query']);_0x4be800[_0xe0d7('0x30')]=_[_0xe0d7('0x31')](_0x4be800[_0xe0d7('0x32')],_0x4be800[_0xe0d7('0x2e')]);_0x478871[_0xe0d7('0x33')]=_[_0xe0d7('0x31')](_0x4be800[_0xe0d7('0x32')],qs[_0xe0d7('0x34')](_0x8a99ab[_0xe0d7('0x2e')]['fields']));_0x478871['attributes']=_0x478871[_0xe0d7('0x33')][_0xe0d7('0x35')]?_0x478871[_0xe0d7('0x33')]:_0x4be800[_0xe0d7('0x32')];if(!_0x8a99ab['query'][_0xe0d7('0x36')](_0xe0d7('0x37'))){_0x478871[_0xe0d7('0x1d')]=qs['limit'](_0x8a99ab[_0xe0d7('0x2e')][_0xe0d7('0x1d')]);_0x478871['offset']=qs['offset'](_0x8a99ab[_0xe0d7('0x2e')][_0xe0d7('0x1c')]);}_0x478871[_0xe0d7('0x38')]=qs[_0xe0d7('0x39')](_0x8a99ab[_0xe0d7('0x2e')][_0xe0d7('0x39')]);_0x478871[_0xe0d7('0x3a')]=qs['filters'](_[_0xe0d7('0x3b')](_0x8a99ab[_0xe0d7('0x2e')],_0x4be800[_0xe0d7('0x30')]),_0x7de220);if(_0x8a99ab[_0xe0d7('0x2e')][_0xe0d7('0x3c')]){_0x478871['where']=_[_0xe0d7('0x3d')](_0x478871[_0xe0d7('0x3a')],{'$or':_['map'](_0x7de220,function(_0x30d52b){if(_0x30d52b[_0xe0d7('0x2c')]!==_0xe0d7('0x3e')){var _0x5c46df={};_0x5c46df[_0x30d52b[_0xe0d7('0x27')]]={'$like':'%'+_0x8a99ab[_0xe0d7('0x2e')][_0xe0d7('0x3c')]+'%'};return _0x5c46df;}})});}_0x478871=_[_0xe0d7('0x3d')]({},_0x478871,_0x8a99ab[_0xe0d7('0x3f')]);var _0xec2cf0={'where':_0x478871[_0xe0d7('0x3a')]};return db[_0xe0d7('0x40')][_0xe0d7('0x41')](_0xec2cf0)['then'](function(_0xf21503){_0x4efe78[_0xe0d7('0x41')]=_0xf21503;if(_0x8a99ab[_0xe0d7('0x2e')][_0xe0d7('0x42')]){_0x478871[_0xe0d7('0x43')]=[{'all':!![]}];}return db[_0xe0d7('0x40')]['findAll'](_0x478871);})[_0xe0d7('0x23')](function(_0x1b9f2a){_0x4efe78['rows']=_0x1b9f2a;return _0x4efe78;})[_0xe0d7('0x23')](respondWithFilteredResult(_0x391059,_0x478871))[_0xe0d7('0x44')](handleError(_0x391059,null));};exports[_0xe0d7('0x45')]=function(_0x2a4a02,_0x474823){var _0x87cd89={'raw':!![],'where':{'id':_0x2a4a02['params']['id']}},_0x506bf5={};_0x506bf5[_0xe0d7('0x32')]=_[_0xe0d7('0x2f')](db['SquareMessage'][_0xe0d7('0x2b')]);_0x506bf5[_0xe0d7('0x2e')]=_[_0xe0d7('0x2f')](_0x2a4a02['query']);_0x506bf5[_0xe0d7('0x30')]=_[_0xe0d7('0x31')](_0x506bf5[_0xe0d7('0x32')],_0x506bf5[_0xe0d7('0x2e')]);_0x87cd89['attributes']=_[_0xe0d7('0x31')](_0x506bf5['model'],qs[_0xe0d7('0x34')](_0x2a4a02[_0xe0d7('0x2e')][_0xe0d7('0x34')]));_0x87cd89[_0xe0d7('0x33')]=_0x87cd89[_0xe0d7('0x33')][_0xe0d7('0x35')]?_0x87cd89[_0xe0d7('0x33')]:_0x506bf5[_0xe0d7('0x32')];if(_0x2a4a02[_0xe0d7('0x2e')][_0xe0d7('0x42')]){_0x87cd89[_0xe0d7('0x43')]=[{'all':!![]}];}_0x87cd89=_[_0xe0d7('0x3d')]({},_0x87cd89,_0x2a4a02[_0xe0d7('0x3f')]);return db[_0xe0d7('0x40')][_0xe0d7('0x46')](_0x87cd89)['then'](handleEntityNotFound(_0x474823,null))[_0xe0d7('0x23')](respondWithResult(_0x474823,null))[_0xe0d7('0x44')](handleError(_0x474823,null));};exports[_0xe0d7('0x47')]=function(_0x266947,_0x38ddb0){return db[_0xe0d7('0x40')][_0xe0d7('0x47')](_0x266947[_0xe0d7('0x48')],{})[_0xe0d7('0x23')](respondWithResult(_0x38ddb0,0xc9))['catch'](handleError(_0x38ddb0,null));};exports['update']=function(_0x1283df,_0x55c9ca){if(_0x1283df[_0xe0d7('0x48')]['id']){delete _0x1283df[_0xe0d7('0x48')]['id'];}return db[_0xe0d7('0x40')]['find']({'where':{'id':_0x1283df[_0xe0d7('0x49')]['id']}})[_0xe0d7('0x23')](handleEntityNotFound(_0x55c9ca,null))[_0xe0d7('0x23')](saveUpdates(_0x1283df[_0xe0d7('0x48')],null))[_0xe0d7('0x23')](respondWithResult(_0x55c9ca,null))[_0xe0d7('0x44')](handleError(_0x55c9ca,null));};exports[_0xe0d7('0x24')]=function(_0x12ce7f,_0x531267){return db['SquareMessage']['find']({'where':{'id':_0x12ce7f['params']['id']}})[_0xe0d7('0x23')](handleEntityNotFound(_0x531267,null))[_0xe0d7('0x23')](removeEntity(_0x531267,null))[_0xe0d7('0x44')](handleError(_0x531267,null));};
\ No newline at end of file
index 0d2b59d..d9b7a42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bef=['api','moment','bluebird','path','rimraf','../../config/environment','exports','square_messages','lodash','util'];(function(_0x5eed0c,_0x362c21){var _0x39c1fc=function(_0x41540d){while(--_0x41540d){_0x5eed0c['push'](_0x5eed0c['shift']());}};_0x39c1fc(++_0x362c21);}(_0x7bef,0xe4));var _0xf7be=function(_0x2fb866,_0x59bc0c){_0x2fb866=_0x2fb866-0x0;var _0x5d310f=_0x7bef[_0x2fb866];return _0x5d310f;};'use strict';var _=require(_0xf7be('0x0'));var util=require(_0xf7be('0x1'));var logger=require('../../config/logger')(_0xf7be('0x2'));var moment=require(_0xf7be('0x3'));var BPromise=require(_0xf7be('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf7be('0x5'));var rimraf=require(_0xf7be('0x6'));var config=require(_0xf7be('0x7'));var attributes=require('./squareMessage.attributes');module[_0xf7be('0x8')]=function(_0x5d95d2,_0x33fbc6){return _0x5d95d2['define']('SquareMessage',attributes,{'tableName':_0xf7be('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3069=['moment','bluebird','request-promise','path','../../config/environment','./squareMessage.attributes','define','square_messages','lodash','../../config/logger'];(function(_0x48cb1f,_0x5ca68d){var _0x172c4d=function(_0x85040){while(--_0x85040){_0x48cb1f['push'](_0x48cb1f['shift']());}};_0x172c4d(++_0x5ca68d);}(_0x3069,0x10c));var _0x9306=function(_0x55f7ae,_0x313551){_0x55f7ae=_0x55f7ae-0x0;var _0x38065f=_0x3069[_0x55f7ae];return _0x38065f;};'use strict';var _=require(_0x9306('0x0'));var util=require('util');var logger=require(_0x9306('0x1'))('api');var moment=require(_0x9306('0x2'));var BPromise=require(_0x9306('0x3'));var rp=require(_0x9306('0x4'));var fs=require('fs');var path=require(_0x9306('0x5'));var rimraf=require('rimraf');var config=require(_0x9306('0x6'));var attributes=require(_0x9306('0x7'));module['exports']=function(_0xb9389d,_0x569d39){return _0xb9389d[_0x9306('0x8')]('SquareMessage',attributes,{'tableName':_0x9306('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7a10ea7..3cf5842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf000=['code','message','result','catch','CreateSquareMessage','SquareMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x534a93,_0x547c6d){var _0x5d803d=function(_0x4e7c03){while(--_0x4e7c03){_0x534a93['push'](_0x534a93['shift']());}};_0x5d803d(++_0x547c6d);}(_0xf000,0xf2));var _0x0f00=function(_0x3e8270,_0x293590){_0x3e8270=_0x3e8270-0x0;var _0x1ccde9=_0xf000[_0x3e8270];return _0x1ccde9;};'use strict';var _=require(_0x0f00('0x0'));var util=require(_0x0f00('0x1'));var moment=require(_0x0f00('0x2'));var BPromise=require(_0x0f00('0x3'));var rs=require(_0x0f00('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0f00('0x5'))['db'];var utils=require(_0x0f00('0x6'));var logger=require(_0x0f00('0x7'))(_0x0f00('0x8'));var config=require(_0x0f00('0x9'));var jayson=require(_0x0f00('0xa'));var client=jayson[_0x0f00('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56d8f2,_0x101f71,_0x43ed9d){return new BPromise(function(_0x42c52a,_0x15b8bb){return client['request'](_0x56d8f2,_0x43ed9d)['then'](function(_0x41e102){logger[_0x0f00('0xc')](_0x0f00('0xd'),_0x101f71,_0x0f00('0xe'));logger[_0x0f00('0xf')](_0x0f00('0x10'),_0x101f71,_0x0f00('0xe'),JSON[_0x0f00('0x11')](_0x41e102));if(_0x41e102[_0x0f00('0x12')]){if(_0x41e102[_0x0f00('0x12')][_0x0f00('0x13')]===0x1f4){logger[_0x0f00('0x12')](_0x0f00('0xd'),_0x101f71,_0x41e102[_0x0f00('0x12')][_0x0f00('0x14')]);return _0x15b8bb(_0x41e102[_0x0f00('0x12')][_0x0f00('0x14')]);}logger[_0x0f00('0x12')](_0x0f00('0xd'),_0x101f71,_0x41e102[_0x0f00('0x12')][_0x0f00('0x14')]);return _0x42c52a(_0x41e102[_0x0f00('0x12')][_0x0f00('0x14')]);}else{logger[_0x0f00('0xc')]('SquareMessage,\x20%s,\x20%s',_0x101f71,_0x0f00('0xe'));_0x42c52a(_0x41e102[_0x0f00('0x15')][_0x0f00('0x14')]);}})[_0x0f00('0x16')](function(_0x214e16){logger['error'](_0x0f00('0xd'),_0x101f71,_0x214e16);_0x15b8bb(_0x214e16);});});}exports[_0x0f00('0x17')]=function(_0x39566e){var _0x1ef53b=this;return new Promise(function(_0x7a8cfc,_0x4c4e5a){return db[_0x0f00('0x18')][_0x0f00('0x19')](_0x39566e[_0x0f00('0x1a')],{'raw':_0x39566e[_0x0f00('0x1b')]?_0x39566e[_0x0f00('0x1b')][_0x0f00('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x464404){logger[_0x0f00('0xc')](_0x0f00('0x17'),_0x39566e);logger['debug'](_0x0f00('0x17'),_0x39566e,JSON['stringify'](_0x464404));_0x7a8cfc(_0x464404);})[_0x0f00('0x16')](function(_0x36f599){logger['error'](_0x0f00('0x17'),_0x36f599[_0x0f00('0x14')],_0x39566e);_0x4c4e5a(_0x1ef53b[_0x0f00('0x12')](0x1f4,_0x36f599[_0x0f00('0x14')]));});});};
\ No newline at end of file
+var _0x42df=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareMessage','body','options','raw'];(function(_0x231110,_0xce98a6){var _0x3d850c=function(_0x1658b3){while(--_0x1658b3){_0x231110['push'](_0x231110['shift']());}};_0x3d850c(++_0xce98a6);}(_0x42df,0x1d4));var _0xf42d=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x42df[_0x40a045];return _0x1a687c;};'use strict';var _=require('lodash');var util=require(_0xf42d('0x0'));var moment=require(_0xf42d('0x1'));var BPromise=require(_0xf42d('0x2'));var rs=require(_0xf42d('0x3'));var fs=require('fs');var Redis=require(_0xf42d('0x4'));var db=require(_0xf42d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf42d('0x6'))(_0xf42d('0x7'));var config=require(_0xf42d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf42d('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1d5b17,_0x2bbf74,_0x586814){return new BPromise(function(_0x471dd,_0xb67686){return client[_0xf42d('0xa')](_0x1d5b17,_0x586814)['then'](function(_0x314394){logger[_0xf42d('0xb')](_0xf42d('0xc'),_0x2bbf74,_0xf42d('0xd'));logger[_0xf42d('0xe')](_0xf42d('0xf'),_0x2bbf74,_0xf42d('0xd'),JSON[_0xf42d('0x10')](_0x314394));if(_0x314394[_0xf42d('0x11')]){if(_0x314394['error'][_0xf42d('0x12')]===0x1f4){logger[_0xf42d('0x11')]('SquareMessage,\x20%s,\x20%s',_0x2bbf74,_0x314394[_0xf42d('0x11')][_0xf42d('0x13')]);return _0xb67686(_0x314394['error'][_0xf42d('0x13')]);}logger[_0xf42d('0x11')]('SquareMessage,\x20%s,\x20%s',_0x2bbf74,_0x314394['error'][_0xf42d('0x13')]);return _0x471dd(_0x314394[_0xf42d('0x11')][_0xf42d('0x13')]);}else{logger[_0xf42d('0xb')](_0xf42d('0xc'),_0x2bbf74,'request\x20sent');_0x471dd(_0x314394[_0xf42d('0x14')][_0xf42d('0x13')]);}})[_0xf42d('0x15')](function(_0x4d6005){logger[_0xf42d('0x11')]('SquareMessage,\x20%s,\x20%s',_0x2bbf74,_0x4d6005);_0xb67686(_0x4d6005);});});}exports[_0xf42d('0x16')]=function(_0x23de56){var _0x1b64f5=this;return new Promise(function(_0x1f08f9,_0x38b124){return db['SquareMessage']['create'](_0x23de56[_0xf42d('0x17')],{'raw':_0x23de56[_0xf42d('0x18')]?_0x23de56['options'][_0xf42d('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x402b9b){logger[_0xf42d('0xb')]('CreateSquareMessage',_0x23de56);logger[_0xf42d('0xe')](_0xf42d('0x16'),_0x23de56,JSON[_0xf42d('0x10')](_0x402b9b));_0x1f08f9(_0x402b9b);})[_0xf42d('0x15')](function(_0x3c03ed){logger[_0xf42d('0x11')]('CreateSquareMessage',_0x3c03ed['message'],_0x23de56);_0x38b124(_0x1b64f5[_0xf42d('0x11')](0x1f4,_0x3c03ed['message']));});});};
\ No newline at end of file
index 574ff5e..1addb1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c5f=['../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3c5f,0x10a));var _0xf3c5=function(_0x33e8a4,_0xa8f172){_0x33e8a4=_0x33e8a4-0x0;var _0x4bb9c9=_0x3c5f[_0x33e8a4];return _0x4bb9c9;};'use strict';var multer=require(_0xf3c5('0x0'));var util=require(_0xf3c5('0x1'));var path=require(_0xf3c5('0x2'));var timeout=require('connect-timeout');var express=require(_0xf3c5('0x3'));var router=express[_0xf3c5('0x4')]();var fs_extra=require(_0xf3c5('0x5'));var auth=require(_0xf3c5('0x6'));var interaction=require(_0xf3c5('0x7'));var config=require(_0xf3c5('0x8'));var controller=require(_0xf3c5('0x9'));router[_0xf3c5('0xa')]('/',auth['isAuthenticated'](),controller[_0xf3c5('0xb')]);router['get'](_0xf3c5('0xc'),auth[_0xf3c5('0xd')](),controller[_0xf3c5('0xe')]);router[_0xf3c5('0xa')]('/:id/test',auth[_0xf3c5('0xd')](),timeout('15s'),controller['test']);router[_0xf3c5('0xf')]('/',auth[_0xf3c5('0xd')](),controller[_0xf3c5('0x10')]);router[_0xf3c5('0x11')]('/:id',auth[_0xf3c5('0xd')](),controller[_0xf3c5('0x12')]);router[_0xf3c5('0x13')]('/:id',auth[_0xf3c5('0xd')](),controller['destroy']);module[_0xf3c5('0x14')]=router;
\ No newline at end of file
+var _0x9ee7=['../../config/environment','./squareOdbc.controller','get','/:id','/:id/test','isAuthenticated','post','create','put','update','delete','destroy','exports','multer','connect-timeout','../../components/auth/service','../../components/interaction/service'];(function(_0x35f030,_0x58e6ba){var _0x3e46af=function(_0x807f07){while(--_0x807f07){_0x35f030['push'](_0x35f030['shift']());}};_0x3e46af(++_0x58e6ba);}(_0x9ee7,0x1c7));var _0x79ee=function(_0x2e44cf,_0x16f684){_0x2e44cf=_0x2e44cf-0x0;var _0x361268=_0x9ee7[_0x2e44cf];return _0x361268;};'use strict';var multer=require(_0x79ee('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x79ee('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x79ee('0x2'));var interaction=require(_0x79ee('0x3'));var config=require(_0x79ee('0x4'));var controller=require(_0x79ee('0x5'));router[_0x79ee('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x79ee('0x6')](_0x79ee('0x7'),auth['isAuthenticated'](),controller['show']);router[_0x79ee('0x6')](_0x79ee('0x8'),auth[_0x79ee('0x9')](),timeout('15s'),controller['test']);router[_0x79ee('0xa')]('/',auth[_0x79ee('0x9')](),controller[_0x79ee('0xb')]);router[_0x79ee('0xc')](_0x79ee('0x7'),auth['isAuthenticated'](),controller[_0x79ee('0xd')]);router[_0x79ee('0xe')]('/:id',auth[_0x79ee('0x9')](),controller[_0x79ee('0xf')]);module[_0x79ee('0x10')]=router;
\ No newline at end of file
index 954fec4..f92befd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x539d=['STRING','name','sequelize','exports'];(function(_0xb60bf9,_0x2854a2){var _0x126a91=function(_0x53cd5a){while(--_0x53cd5a){_0xb60bf9['push'](_0xb60bf9['shift']());}};_0x126a91(++_0x2854a2);}(_0x539d,0x136));var _0xd539=function(_0x3f670b,_0x10f414){_0x3f670b=_0x3f670b-0x0;var _0x1c0978=_0x539d[_0x3f670b];return _0x1c0978;};'use strict';var Sequelize=require(_0xd539('0x0'));module[_0xd539('0x1')]={'name':{'type':Sequelize[_0xd539('0x2')],'unique':_0xd539('0x3'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd539('0x2')]}};
\ No newline at end of file
+var _0x82b4=['STRING','name','sequelize'];(function(_0x1c8c28,_0x3ee093){var _0x1f59b4=function(_0x29bcc0){while(--_0x29bcc0){_0x1c8c28['push'](_0x1c8c28['shift']());}};_0x1f59b4(++_0x3ee093);}(_0x82b4,0x14c));var _0x482b=function(_0xbf3ed7,_0x401865){_0xbf3ed7=_0xbf3ed7-0x0;var _0x211e99=_0x82b4[_0xbf3ed7];return _0x211e99;};'use strict';var Sequelize=require(_0x482b('0x0'));module['exports']={'name':{'type':Sequelize[_0x482b('0x1')],'unique':_0x482b('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x482b('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 45a2dbe..b14701d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2bd=['filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ODBC','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','test','dsn','odbc','closeSync','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','stack','name','map','SquareOdbc','rawAttributes','fieldName','type','key','model','keys','query'];(function(_0x417545,_0x18d990){var _0x43a9ed=function(_0x702c0b){while(--_0x702c0b){_0x417545['push'](_0x417545['shift']());}};_0x43a9ed(++_0x18d990);}(_0xf2bd,0x1d0));var _0xdf2b=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xf2bd[_0x17d9e3];return _0x14192d;};'use strict';var emlformat=require(_0xdf2b('0x0'));var rimraf=require(_0xdf2b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdf2b('0x2'));var rp=require('request-promise');var moment=require(_0xdf2b('0x3'));var BPromise=require(_0xdf2b('0x4'));var Mustache=require(_0xdf2b('0x5'));var util=require(_0xdf2b('0x6'));var path=require(_0xdf2b('0x7'));var sox=require(_0xdf2b('0x8'));var csv=require(_0xdf2b('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdf2b('0xa'));var _=require('lodash');var squel=require(_0xdf2b('0xb'));var crypto=require(_0xdf2b('0xc'));var jsforce=require(_0xdf2b('0xd'));var deskjs=require(_0xdf2b('0xe'));var toCsv=require(_0xdf2b('0x9'));var querystring=require(_0xdf2b('0xf'));var Papa=require(_0xdf2b('0x10'));var Redis=require(_0xdf2b('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xdf2b('0x12'));var as=require(_0xdf2b('0x13'));var hardwareService=require(_0xdf2b('0x14'));var logger=require('../../config/logger')(_0xdf2b('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xdf2b('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x488f88,_0x155dcd){_0x155dcd=_0x155dcd||0xcc;return function(_0x57cfb6){if(_0x57cfb6){return _0x488f88[_0xdf2b('0x17')](_0x155dcd);}return _0x488f88[_0xdf2b('0x18')](_0x155dcd)[_0xdf2b('0x19')]();};}function respondWithResult(_0x2d50f0,_0x1af80e){_0x1af80e=_0x1af80e||0xc8;return function(_0x13c280){if(_0x13c280){return _0x2d50f0[_0xdf2b('0x18')](_0x1af80e)[_0xdf2b('0x1a')](_0x13c280);}};}function respondWithFilteredResult(_0x46cd4e,_0x4617d5){return function(_0x88ea4){if(_0x88ea4){var _0x2a23ca=typeof _0x4617d5[_0xdf2b('0x1b')]==='undefined'&&typeof _0x4617d5[_0xdf2b('0x1c')]===_0xdf2b('0x1d');var _0x14b800=_0x88ea4[_0xdf2b('0x1e')];var _0x31b8b7=_0x2a23ca?0x0:_0x4617d5[_0xdf2b('0x1b')];var _0x294ed5=_0x2a23ca?_0x88ea4[_0xdf2b('0x1e')]:_0x4617d5[_0xdf2b('0x1b')]+_0x4617d5['limit'];var _0x37fce1;if(_0x294ed5>=_0x14b800){_0x294ed5=_0x14b800;_0x37fce1=0xc8;}else{_0x37fce1=0xce;}_0x46cd4e[_0xdf2b('0x18')](_0x37fce1);return _0x46cd4e[_0xdf2b('0x1f')](_0xdf2b('0x20'),_0x31b8b7+'-'+_0x294ed5+'/'+_0x14b800)[_0xdf2b('0x1a')](_0x88ea4);}return null;};}function patchUpdates(_0x589f3f){return function(_0x135e10){try{jsonpatch[_0xdf2b('0x21')](_0x135e10,_0x589f3f,!![]);}catch(_0x384042){return BPromise[_0xdf2b('0x22')](_0x384042);}return _0x135e10[_0xdf2b('0x23')]();};}function saveUpdates(_0x3b5c3f,_0xe56ecf){return function(_0x5dc2d0){if(_0x5dc2d0){return _0x5dc2d0[_0xdf2b('0x24')](_0x3b5c3f)[_0xdf2b('0x25')](function(_0x40a383){return _0x40a383;});}return null;};}function removeEntity(_0x1db2da,_0xd1e7b8){return function(_0x134c2f){if(_0x134c2f){return _0x134c2f[_0xdf2b('0x26')]()[_0xdf2b('0x25')](function(){var _0x3ece4c=_0x134c2f[_0xdf2b('0x27')]({'plain':!![]});var _0x2db47a='ODBC';return db[_0xdf2b('0x28')][_0xdf2b('0x26')]({'where':{'type':_0x2db47a,'resourceId':_0x3ece4c['id']}})['then'](function(){return _0x134c2f;});})[_0xdf2b('0x25')](function(){_0x1db2da['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ee67e,_0x1dc075){return function(_0x37ba65){if(!_0x37ba65){_0x5ee67e[_0xdf2b('0x17')](0x194);}return _0x37ba65;};}function handleError(_0x404643,_0x3ed5ff){_0x3ed5ff=_0x3ed5ff||0x1f4;return function(_0x606848){logger['error'](_0x606848[_0xdf2b('0x29')]);if(_0x606848[_0xdf2b('0x2a')]){delete _0x606848['name'];}_0x404643[_0xdf2b('0x18')](_0x3ed5ff)['send'](_0x606848);};}exports['index']=function(_0x525558,_0xd78f33){var _0x58c778={},_0x1b1184={},_0x2e6690={'count':0x0,'rows':[]};var _0x2c4138=_[_0xdf2b('0x2b')](db[_0xdf2b('0x2c')][_0xdf2b('0x2d')],function(_0x76958c){return{'name':_0x76958c[_0xdf2b('0x2e')],'type':_0x76958c[_0xdf2b('0x2f')][_0xdf2b('0x30')]};});_0x1b1184[_0xdf2b('0x31')]=_[_0xdf2b('0x2b')](_0x2c4138,_0xdf2b('0x2a'));_0x1b1184['query']=_[_0xdf2b('0x32')](_0x525558[_0xdf2b('0x33')]);_0x1b1184[_0xdf2b('0x34')]=_['intersection'](_0x1b1184[_0xdf2b('0x31')],_0x1b1184['query']);_0x58c778[_0xdf2b('0x35')]=_[_0xdf2b('0x36')](_0x1b1184['model'],qs[_0xdf2b('0x37')](_0x525558[_0xdf2b('0x33')][_0xdf2b('0x37')]));_0x58c778['attributes']=_0x58c778[_0xdf2b('0x35')]['length']?_0x58c778[_0xdf2b('0x35')]:_0x1b1184[_0xdf2b('0x31')];if(!_0x525558[_0xdf2b('0x33')][_0xdf2b('0x38')](_0xdf2b('0x39'))){_0x58c778[_0xdf2b('0x1c')]=qs[_0xdf2b('0x1c')](_0x525558[_0xdf2b('0x33')][_0xdf2b('0x1c')]);_0x58c778[_0xdf2b('0x1b')]=qs[_0xdf2b('0x1b')](_0x525558[_0xdf2b('0x33')]['offset']);}_0x58c778['order']=qs[_0xdf2b('0x3a')](_0x525558['query']['sort']);_0x58c778[_0xdf2b('0x3b')]=qs[_0xdf2b('0x34')](_[_0xdf2b('0x3c')](_0x525558['query'],_0x1b1184[_0xdf2b('0x34')]),_0x2c4138);if(_0x525558[_0xdf2b('0x33')][_0xdf2b('0x3d')]){_0x58c778[_0xdf2b('0x3b')]=_['merge'](_0x58c778[_0xdf2b('0x3b')],{'$or':_[_0xdf2b('0x2b')](_0x2c4138,function(_0x4d0100){if(_0x4d0100[_0xdf2b('0x2f')]!==_0xdf2b('0x3e')){var _0x4078c7={};_0x4078c7[_0x4d0100[_0xdf2b('0x2a')]]={'$like':'%'+_0x525558['query'][_0xdf2b('0x3d')]+'%'};return _0x4078c7;}})});}_0x58c778=_[_0xdf2b('0x3f')]({},_0x58c778,_0x525558[_0xdf2b('0x40')]);var _0x5988cc={'where':_0x58c778[_0xdf2b('0x3b')]};return db[_0xdf2b('0x2c')][_0xdf2b('0x1e')](_0x5988cc)[_0xdf2b('0x25')](function(_0x358ea4){_0x2e6690[_0xdf2b('0x1e')]=_0x358ea4;if(_0x525558[_0xdf2b('0x33')][_0xdf2b('0x41')]){_0x58c778[_0xdf2b('0x42')]=[{'all':!![]}];}return db['SquareOdbc'][_0xdf2b('0x43')](_0x58c778);})[_0xdf2b('0x25')](function(_0x1f7766){_0x2e6690[_0xdf2b('0x44')]=_0x1f7766;return _0x2e6690;})['then'](respondWithFilteredResult(_0xd78f33,_0x58c778))[_0xdf2b('0x45')](handleError(_0xd78f33,null));};exports['show']=function(_0x2ce1e6,_0x5eb912){var _0x3b6d91={'raw':!![],'where':{'id':_0x2ce1e6[_0xdf2b('0x46')]['id']}},_0x146ea1={};_0x146ea1['model']=_[_0xdf2b('0x32')](db[_0xdf2b('0x2c')][_0xdf2b('0x2d')]);_0x146ea1['query']=_['keys'](_0x2ce1e6[_0xdf2b('0x33')]);_0x146ea1[_0xdf2b('0x34')]=_['intersection'](_0x146ea1['model'],_0x146ea1[_0xdf2b('0x33')]);_0x3b6d91[_0xdf2b('0x35')]=_[_0xdf2b('0x36')](_0x146ea1[_0xdf2b('0x31')],qs[_0xdf2b('0x37')](_0x2ce1e6[_0xdf2b('0x33')]['fields']));_0x3b6d91[_0xdf2b('0x35')]=_0x3b6d91['attributes']['length']?_0x3b6d91['attributes']:_0x146ea1[_0xdf2b('0x31')];if(_0x2ce1e6[_0xdf2b('0x33')]['includeAll']){_0x3b6d91[_0xdf2b('0x42')]=[{'all':!![]}];}_0x3b6d91=_[_0xdf2b('0x3f')]({},_0x3b6d91,_0x2ce1e6['options']);return db[_0xdf2b('0x2c')]['find'](_0x3b6d91)['then'](handleEntityNotFound(_0x5eb912,null))[_0xdf2b('0x25')](respondWithResult(_0x5eb912,null))[_0xdf2b('0x45')](handleError(_0x5eb912,null));};exports[_0xdf2b('0x47')]=function(_0x42cf7f,_0x153c75){return db[_0xdf2b('0x2c')][_0xdf2b('0x47')](_0x42cf7f[_0xdf2b('0x48')],{})['then'](function(_0x14795f){var _0xe2aad6=_0x42cf7f[_0xdf2b('0x49')][_0xdf2b('0x27')]({'plain':!![]});if(!_0xe2aad6)throw new Error(_0xdf2b('0x4a'));if(_0xe2aad6[_0xdf2b('0x4b')]===_0xdf2b('0x49')){var _0x321b09=_0x14795f[_0xdf2b('0x27')]({'plain':!![]});var _0x693276=_0xdf2b('0x4c');return db['UserProfileSection'][_0xdf2b('0x4d')]({'where':{'name':_0x693276,'userProfileId':_0xe2aad6[_0xdf2b('0x4e')]},'raw':!![]})[_0xdf2b('0x25')](function(_0x2952fe){if(_0x2952fe&&_0x2952fe[_0xdf2b('0x4f')]===0x0){return db[_0xdf2b('0x28')][_0xdf2b('0x47')]({'name':_0x321b09['name'],'resourceId':_0x321b09['id'],'type':_0x2952fe[_0xdf2b('0x2a')],'sectionId':_0x2952fe['id']},{})[_0xdf2b('0x25')](function(){return _0x14795f;});}else{return _0x14795f;}})[_0xdf2b('0x45')](function(_0x36c201){logger[_0xdf2b('0x50')](_0xdf2b('0x51'),_0x36c201);throw _0x36c201;});}return _0x14795f;})[_0xdf2b('0x25')](respondWithResult(_0x153c75,0xc9))[_0xdf2b('0x45')](handleError(_0x153c75,null));};exports[_0xdf2b('0x24')]=function(_0x22654f,_0x3ba019){if(_0x22654f[_0xdf2b('0x48')]['id']){delete _0x22654f[_0xdf2b('0x48')]['id'];}return db[_0xdf2b('0x2c')][_0xdf2b('0x4d')]({'where':{'id':_0x22654f[_0xdf2b('0x46')]['id']}})['then'](handleEntityNotFound(_0x3ba019,null))[_0xdf2b('0x25')](saveUpdates(_0x22654f[_0xdf2b('0x48')],null))[_0xdf2b('0x25')](respondWithResult(_0x3ba019,null))[_0xdf2b('0x45')](handleError(_0x3ba019,null));};exports[_0xdf2b('0x26')]=function(_0x4944b5,_0x379da6){return db['SquareOdbc'][_0xdf2b('0x4d')]({'where':{'id':_0x4944b5['params']['id']}})['then'](handleEntityNotFound(_0x379da6,null))[_0xdf2b('0x25')](removeEntity(_0x379da6,null))['catch'](handleError(_0x379da6,null));};exports[_0xdf2b('0x52')]=function(_0x4c8217,_0x52ae6b,_0x8b4708){var _0x10df41;return db['SquareOdbc'][_0xdf2b('0x4d')]({'where':{'id':_0x4c8217[_0xdf2b('0x46')]['id']},'attributes':['id',_0xdf2b('0x53')]})[_0xdf2b('0x25')](handleEntityNotFound(_0x52ae6b,null))['then'](function(_0x1a3e45){if(_0x1a3e45){var _0xd056ae=require(_0xdf2b('0x54'))();_0xd056ae['openSync'](_0x1a3e45['dsn']);_0xd056ae[_0xdf2b('0x55')]();return _0x1a3e45;}})[_0xdf2b('0x25')](respondWithResult(_0x52ae6b,null))[_0xdf2b('0x45')](handleError(_0x52ae6b,null));};
\ No newline at end of file
+var _0x6e3f=['sendStatus','error','name','send','map','SquareOdbc','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','show','params','length','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ODBC','UserProfileSection','userProfileId','body','test','odbc','openSync','dsn','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource'];(function(_0x2b45b5,_0x474458){var _0x1d9c06=function(_0x9a3264){while(--_0x9a3264){_0x2b45b5['push'](_0x2b45b5['shift']());}};_0x1d9c06(++_0x474458);}(_0x6e3f,0xd7));var _0xf6e3=function(_0x316446,_0x4dbc10){_0x316446=_0x316446-0x0;var _0x3f0cd0=_0x6e3f[_0x316446];return _0x3f0cd0;};'use strict';var emlformat=require(_0xf6e3('0x0'));var rimraf=require(_0xf6e3('0x1'));var zipdir=require(_0xf6e3('0x2'));var jsonpatch=require(_0xf6e3('0x3'));var rp=require(_0xf6e3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf6e3('0x5'));var util=require(_0xf6e3('0x6'));var path=require(_0xf6e3('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf6e3('0x8'));var fs=require('fs');var fs_extra=require(_0xf6e3('0x9'));var _=require(_0xf6e3('0xa'));var squel=require(_0xf6e3('0xb'));var crypto=require(_0xf6e3('0xc'));var jsforce=require(_0xf6e3('0xd'));var deskjs=require(_0xf6e3('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf6e3('0xf'));var Papa=require('papaparse');var Redis=require(_0xf6e3('0x10'));var authService=require(_0xf6e3('0x11'));var qs=require(_0xf6e3('0x12'));var as=require(_0xf6e3('0x13'));var hardwareService=require(_0xf6e3('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xf6e3('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf6e3('0x16'))['db'];function respondWithStatusCode(_0x1a2443,_0x91ecb4){_0x91ecb4=_0x91ecb4||0xcc;return function(_0x6c950e){if(_0x6c950e){return _0x1a2443['sendStatus'](_0x91ecb4);}return _0x1a2443[_0xf6e3('0x17')](_0x91ecb4)[_0xf6e3('0x18')]();};}function respondWithResult(_0x915d3e,_0x41b8a9){_0x41b8a9=_0x41b8a9||0xc8;return function(_0xc0b891){if(_0xc0b891){return _0x915d3e['status'](_0x41b8a9)[_0xf6e3('0x19')](_0xc0b891);}};}function respondWithFilteredResult(_0x578c44,_0x5e2535){return function(_0x3b8d1e){if(_0x3b8d1e){var _0x173e52=typeof _0x5e2535[_0xf6e3('0x1a')]===_0xf6e3('0x1b')&&typeof _0x5e2535[_0xf6e3('0x1c')]===_0xf6e3('0x1b');var _0x47f4f0=_0x3b8d1e[_0xf6e3('0x1d')];var _0x3646c5=_0x173e52?0x0:_0x5e2535[_0xf6e3('0x1a')];var _0x5916e4=_0x173e52?_0x3b8d1e[_0xf6e3('0x1d')]:_0x5e2535['offset']+_0x5e2535[_0xf6e3('0x1c')];var _0x538bc9;if(_0x5916e4>=_0x47f4f0){_0x5916e4=_0x47f4f0;_0x538bc9=0xc8;}else{_0x538bc9=0xce;}_0x578c44[_0xf6e3('0x17')](_0x538bc9);return _0x578c44[_0xf6e3('0x1e')](_0xf6e3('0x1f'),_0x3646c5+'-'+_0x5916e4+'/'+_0x47f4f0)[_0xf6e3('0x19')](_0x3b8d1e);}return null;};}function patchUpdates(_0x3cdde1){return function(_0x681e41){try{jsonpatch[_0xf6e3('0x20')](_0x681e41,_0x3cdde1,!![]);}catch(_0x4cfb51){return BPromise[_0xf6e3('0x21')](_0x4cfb51);}return _0x681e41[_0xf6e3('0x22')]();};}function saveUpdates(_0x435273,_0x214415){return function(_0x4ec790){if(_0x4ec790){return _0x4ec790[_0xf6e3('0x23')](_0x435273)[_0xf6e3('0x24')](function(_0x23429b){return _0x23429b;});}return null;};}function removeEntity(_0x55cb85,_0x50c2f0){return function(_0x59a905){if(_0x59a905){return _0x59a905[_0xf6e3('0x25')]()[_0xf6e3('0x24')](function(){var _0xe8c366=_0x59a905[_0xf6e3('0x26')]({'plain':!![]});var _0x12ecc5='ODBC';return db[_0xf6e3('0x27')][_0xf6e3('0x25')]({'where':{'type':_0x12ecc5,'resourceId':_0xe8c366['id']}})[_0xf6e3('0x24')](function(){return _0x59a905;});})['then'](function(){_0x55cb85[_0xf6e3('0x17')](0xcc)[_0xf6e3('0x18')]();});}};}function handleEntityNotFound(_0x381a3a,_0x1764ed){return function(_0x12b0be){if(!_0x12b0be){_0x381a3a[_0xf6e3('0x28')](0x194);}return _0x12b0be;};}function handleError(_0x554204,_0x31d57a){_0x31d57a=_0x31d57a||0x1f4;return function(_0x487f30){logger[_0xf6e3('0x29')](_0x487f30['stack']);if(_0x487f30['name']){delete _0x487f30[_0xf6e3('0x2a')];}_0x554204[_0xf6e3('0x17')](_0x31d57a)[_0xf6e3('0x2b')](_0x487f30);};}exports['index']=function(_0x5541bb,_0x109b27){var _0x3d1206={},_0x5cab3a={},_0x513e89={'count':0x0,'rows':[]};var _0x19360c=_[_0xf6e3('0x2c')](db[_0xf6e3('0x2d')][_0xf6e3('0x2e')],function(_0x3c8920){return{'name':_0x3c8920['fieldName'],'type':_0x3c8920[_0xf6e3('0x2f')][_0xf6e3('0x30')]};});_0x5cab3a[_0xf6e3('0x31')]=_[_0xf6e3('0x2c')](_0x19360c,_0xf6e3('0x2a'));_0x5cab3a[_0xf6e3('0x32')]=_[_0xf6e3('0x33')](_0x5541bb[_0xf6e3('0x32')]);_0x5cab3a[_0xf6e3('0x34')]=_[_0xf6e3('0x35')](_0x5cab3a[_0xf6e3('0x31')],_0x5cab3a[_0xf6e3('0x32')]);_0x3d1206[_0xf6e3('0x36')]=_['intersection'](_0x5cab3a[_0xf6e3('0x31')],qs[_0xf6e3('0x37')](_0x5541bb[_0xf6e3('0x32')][_0xf6e3('0x37')]));_0x3d1206[_0xf6e3('0x36')]=_0x3d1206['attributes']['length']?_0x3d1206[_0xf6e3('0x36')]:_0x5cab3a[_0xf6e3('0x31')];if(!_0x5541bb['query'][_0xf6e3('0x38')]('nolimit')){_0x3d1206[_0xf6e3('0x1c')]=qs[_0xf6e3('0x1c')](_0x5541bb['query']['limit']);_0x3d1206[_0xf6e3('0x1a')]=qs[_0xf6e3('0x1a')](_0x5541bb[_0xf6e3('0x32')][_0xf6e3('0x1a')]);}_0x3d1206[_0xf6e3('0x39')]=qs[_0xf6e3('0x3a')](_0x5541bb[_0xf6e3('0x32')][_0xf6e3('0x3a')]);_0x3d1206[_0xf6e3('0x3b')]=qs[_0xf6e3('0x34')](_[_0xf6e3('0x3c')](_0x5541bb[_0xf6e3('0x32')],_0x5cab3a[_0xf6e3('0x34')]),_0x19360c);if(_0x5541bb[_0xf6e3('0x32')][_0xf6e3('0x3d')]){_0x3d1206[_0xf6e3('0x3b')]=_[_0xf6e3('0x3e')](_0x3d1206['where'],{'$or':_[_0xf6e3('0x2c')](_0x19360c,function(_0x248722){if(_0x248722[_0xf6e3('0x2f')]!==_0xf6e3('0x3f')){var _0x594e89={};_0x594e89[_0x248722[_0xf6e3('0x2a')]]={'$like':'%'+_0x5541bb['query'][_0xf6e3('0x3d')]+'%'};return _0x594e89;}})});}_0x3d1206=_[_0xf6e3('0x3e')]({},_0x3d1206,_0x5541bb['options']);var _0x25bdc2={'where':_0x3d1206['where']};return db[_0xf6e3('0x2d')][_0xf6e3('0x1d')](_0x25bdc2)[_0xf6e3('0x24')](function(_0x41cd45){_0x513e89[_0xf6e3('0x1d')]=_0x41cd45;if(_0x5541bb[_0xf6e3('0x32')][_0xf6e3('0x40')]){_0x3d1206['include']=[{'all':!![]}];}return db[_0xf6e3('0x2d')][_0xf6e3('0x41')](_0x3d1206);})[_0xf6e3('0x24')](function(_0x4142b6){_0x513e89[_0xf6e3('0x42')]=_0x4142b6;return _0x513e89;})[_0xf6e3('0x24')](respondWithFilteredResult(_0x109b27,_0x3d1206))[_0xf6e3('0x43')](handleError(_0x109b27,null));};exports[_0xf6e3('0x44')]=function(_0x45073d,_0x1c5827){var _0x265bec={'raw':!![],'where':{'id':_0x45073d[_0xf6e3('0x45')]['id']}},_0x3644fd={};_0x3644fd[_0xf6e3('0x31')]=_[_0xf6e3('0x33')](db['SquareOdbc'][_0xf6e3('0x2e')]);_0x3644fd[_0xf6e3('0x32')]=_[_0xf6e3('0x33')](_0x45073d[_0xf6e3('0x32')]);_0x3644fd[_0xf6e3('0x34')]=_[_0xf6e3('0x35')](_0x3644fd[_0xf6e3('0x31')],_0x3644fd['query']);_0x265bec[_0xf6e3('0x36')]=_[_0xf6e3('0x35')](_0x3644fd['model'],qs['fields'](_0x45073d[_0xf6e3('0x32')][_0xf6e3('0x37')]));_0x265bec[_0xf6e3('0x36')]=_0x265bec[_0xf6e3('0x36')][_0xf6e3('0x46')]?_0x265bec[_0xf6e3('0x36')]:_0x3644fd[_0xf6e3('0x31')];if(_0x45073d[_0xf6e3('0x32')][_0xf6e3('0x40')]){_0x265bec[_0xf6e3('0x47')]=[{'all':!![]}];}_0x265bec=_[_0xf6e3('0x3e')]({},_0x265bec,_0x45073d['options']);return db[_0xf6e3('0x2d')][_0xf6e3('0x48')](_0x265bec)['then'](handleEntityNotFound(_0x1c5827,null))[_0xf6e3('0x24')](respondWithResult(_0x1c5827,null))[_0xf6e3('0x43')](handleError(_0x1c5827,null));};exports['create']=function(_0x2d16bc,_0x541c82){return db['SquareOdbc'][_0xf6e3('0x49')](_0x2d16bc['body'],{})['then'](function(_0x537ea2){var _0x4fb485=_0x2d16bc[_0xf6e3('0x4a')][_0xf6e3('0x26')]({'plain':!![]});if(!_0x4fb485)throw new Error(_0xf6e3('0x4b'));if(_0x4fb485[_0xf6e3('0x4c')]==='user'){var _0x25fd51=_0x537ea2[_0xf6e3('0x26')]({'plain':!![]});var _0x3f3580=_0xf6e3('0x4d');return db[_0xf6e3('0x4e')]['find']({'where':{'name':_0x3f3580,'userProfileId':_0x4fb485[_0xf6e3('0x4f')]},'raw':!![]})[_0xf6e3('0x24')](function(_0x3c0f2){if(_0x3c0f2&&_0x3c0f2['autoAssociation']===0x0){return db[_0xf6e3('0x27')][_0xf6e3('0x49')]({'name':_0x25fd51[_0xf6e3('0x2a')],'resourceId':_0x25fd51['id'],'type':_0x3c0f2[_0xf6e3('0x2a')],'sectionId':_0x3c0f2['id']},{})[_0xf6e3('0x24')](function(){return _0x537ea2;});}else{return _0x537ea2;}})[_0xf6e3('0x43')](function(_0x32a3f1){logger[_0xf6e3('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32a3f1);throw _0x32a3f1;});}return _0x537ea2;})[_0xf6e3('0x24')](respondWithResult(_0x541c82,0xc9))[_0xf6e3('0x43')](handleError(_0x541c82,null));};exports[_0xf6e3('0x23')]=function(_0x332cc5,_0x35c311){if(_0x332cc5[_0xf6e3('0x50')]['id']){delete _0x332cc5[_0xf6e3('0x50')]['id'];}return db[_0xf6e3('0x2d')][_0xf6e3('0x48')]({'where':{'id':_0x332cc5['params']['id']}})[_0xf6e3('0x24')](handleEntityNotFound(_0x35c311,null))[_0xf6e3('0x24')](saveUpdates(_0x332cc5[_0xf6e3('0x50')],null))[_0xf6e3('0x24')](respondWithResult(_0x35c311,null))['catch'](handleError(_0x35c311,null));};exports[_0xf6e3('0x25')]=function(_0x15b946,_0x1244ec){return db['SquareOdbc'][_0xf6e3('0x48')]({'where':{'id':_0x15b946['params']['id']}})[_0xf6e3('0x24')](handleEntityNotFound(_0x1244ec,null))[_0xf6e3('0x24')](removeEntity(_0x1244ec,null))[_0xf6e3('0x43')](handleError(_0x1244ec,null));};exports[_0xf6e3('0x51')]=function(_0x244363,_0x4daa7e,_0xd11f1d){var _0xd07f3c;return db['SquareOdbc'][_0xf6e3('0x48')]({'where':{'id':_0x244363[_0xf6e3('0x45')]['id']},'attributes':['id','dsn']})['then'](handleEntityNotFound(_0x4daa7e,null))['then'](function(_0x45bcab){if(_0x45bcab){var _0x3c12b1=require(_0xf6e3('0x52'))();_0x3c12b1[_0xf6e3('0x53')](_0x45bcab[_0xf6e3('0x54')]);_0x3c12b1['closeSync']();return _0x45bcab;}})['then'](respondWithResult(_0x4daa7e,null))[_0xf6e3('0x43')](handleError(_0x4daa7e,null));};
\ No newline at end of file
index f49a703..5894097 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaefb=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc','lodash','util'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0xaefb,0xa7));var _0xbaef=function(_0x1da8f5,_0xc052c4){_0x1da8f5=_0x1da8f5-0x0;var _0x2973a4=_0xaefb[_0x1da8f5];return _0x2973a4;};'use strict';var _=require(_0xbaef('0x0'));var util=require(_0xbaef('0x1'));var logger=require(_0xbaef('0x2'))(_0xbaef('0x3'));var moment=require(_0xbaef('0x4'));var BPromise=require(_0xbaef('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbaef('0x6'));var rimraf=require(_0xbaef('0x7'));var config=require(_0xbaef('0x8'));var attributes=require(_0xbaef('0x9'));module[_0xbaef('0xa')]=function(_0x3bd52f,_0xabebe3){return _0x3bd52f[_0xbaef('0xb')](_0xbaef('0xc'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x010a=['square_odbc','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define'];(function(_0x2a3fed,_0x10ad9b){var _0x473765=function(_0x5a5df9){while(--_0x5a5df9){_0x2a3fed['push'](_0x2a3fed['shift']());}};_0x473765(++_0x10ad9b);}(_0x010a,0x1bd));var _0xa010=function(_0x7da542,_0x166b97){_0x7da542=_0x7da542-0x0;var _0x2c9114=_0x010a[_0x7da542];return _0x2c9114;};'use strict';var _=require(_0xa010('0x0'));var util=require(_0xa010('0x1'));var logger=require(_0xa010('0x2'))(_0xa010('0x3'));var moment=require(_0xa010('0x4'));var BPromise=require(_0xa010('0x5'));var rp=require(_0xa010('0x6'));var fs=require('fs');var path=require(_0xa010('0x7'));var rimraf=require(_0xa010('0x8'));var config=require(_0xa010('0x9'));var attributes=require('./squareOdbc.attributes');module['exports']=function(_0x10f728,_0x2312c8){return _0x10f728[_0xa010('0xa')]('SquareOdbc',attributes,{'tableName':_0xa010('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3eb1df6..6fa32cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2795=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareOdbc,\x20%s,\x20%s','message','catch','ShowSquareOdbc','options','raw','attributes','include','map','model','then','lodash'];(function(_0x4e44e1,_0x27ee41){var _0x566322=function(_0x543340){while(--_0x543340){_0x4e44e1['push'](_0x4e44e1['shift']());}};_0x566322(++_0x27ee41);}(_0x2795,0x9a));var _0x5279=function(_0x12a2c3,_0x396e65){_0x12a2c3=_0x12a2c3-0x0;var _0x1fd27d=_0x2795[_0x12a2c3];return _0x1fd27d;};'use strict';var _=require(_0x5279('0x0'));var util=require(_0x5279('0x1'));var moment=require('moment');var BPromise=require(_0x5279('0x2'));var rs=require(_0x5279('0x3'));var fs=require('fs');var Redis=require(_0x5279('0x4'));var db=require(_0x5279('0x5'))['db'];var utils=require(_0x5279('0x6'));var logger=require('../../config/logger')(_0x5279('0x7'));var config=require(_0x5279('0x8'));var jayson=require(_0x5279('0x9'));var client=jayson[_0x5279('0xa')][_0x5279('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x109a8d,_0x33baab,_0x1bca1f){return new BPromise(function(_0x5a4a09,_0x39868f){return client[_0x5279('0xc')](_0x109a8d,_0x1bca1f)['then'](function(_0xc44522){logger[_0x5279('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x33baab,_0x5279('0xe'));logger[_0x5279('0xf')](_0x5279('0x10'),_0x33baab,_0x5279('0xe'),JSON[_0x5279('0x11')](_0xc44522));if(_0xc44522[_0x5279('0x12')]){if(_0xc44522['error'][_0x5279('0x13')]===0x1f4){logger[_0x5279('0x12')](_0x5279('0x14'),_0x33baab,_0xc44522['error'][_0x5279('0x15')]);return _0x39868f(_0xc44522[_0x5279('0x12')][_0x5279('0x15')]);}logger['error'](_0x5279('0x14'),_0x33baab,_0xc44522[_0x5279('0x12')][_0x5279('0x15')]);return _0x5a4a09(_0xc44522[_0x5279('0x12')][_0x5279('0x15')]);}else{logger['info'](_0x5279('0x14'),_0x33baab,'request\x20sent');_0x5a4a09(_0xc44522['result'][_0x5279('0x15')]);}})[_0x5279('0x16')](function(_0x2f6ab8){logger['error'](_0x5279('0x14'),_0x33baab,_0x2f6ab8);_0x39868f(_0x2f6ab8);});});}exports[_0x5279('0x17')]=function(_0x50d5dc){var _0x145134=this;return new Promise(function(_0x23320e,_0x4f7cbc){return db['SquareOdbc']['find']({'raw':_0x50d5dc['options']?_0x50d5dc[_0x5279('0x18')][_0x5279('0x19')]===undefined?!![]:![]:!![],'where':_0x50d5dc[_0x5279('0x18')]?_0x50d5dc[_0x5279('0x18')]['where']||null:null,'attributes':_0x50d5dc['options']?_0x50d5dc['options'][_0x5279('0x1a')]||null:null,'include':_0x50d5dc[_0x5279('0x18')]?_0x50d5dc[_0x5279('0x18')][_0x5279('0x1b')]?_[_0x5279('0x1c')](_0x50d5dc[_0x5279('0x18')][_0x5279('0x1b')],function(_0x5f445d){return{'model':db[_0x5f445d[_0x5279('0x1d')]],'as':_0x5f445d['as'],'attributes':_0x5f445d[_0x5279('0x1a')],'include':_0x5f445d[_0x5279('0x1b')]?_[_0x5279('0x1c')](_0x5f445d[_0x5279('0x1b')],function(_0x31d901){return{'model':db[_0x31d901[_0x5279('0x1d')]],'as':_0x31d901['as'],'attributes':_0x31d901[_0x5279('0x1a')],'include':_0x31d901['include']?_[_0x5279('0x1c')](_0x31d901[_0x5279('0x1b')],function(_0x245415){return{'model':db[_0x245415[_0x5279('0x1d')]],'as':_0x245415['as'],'attributes':_0x245415[_0x5279('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x5279('0x1e')](function(_0x597776){logger['info'](_0x5279('0x17'),_0x50d5dc);logger[_0x5279('0xf')]('ShowSquareOdbc',_0x50d5dc,JSON[_0x5279('0x11')](_0x597776));_0x23320e(_0x597776);})[_0x5279('0x16')](function(_0x282218){logger[_0x5279('0x12')](_0x5279('0x17'),_0x282218['message'],_0x50d5dc);_0x4f7cbc(_0x145134[_0x5279('0x12')](0x1f4,_0x282218['message']));});});};
\ No newline at end of file
+var _0xf023=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','SquareOdbc','options','where','attributes','include','map','model','ShowSquareOdbc','stringify','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x317fbc,_0x51154c){var _0x59cae4=function(_0xd33c23){while(--_0xd33c23){_0x317fbc['push'](_0x317fbc['shift']());}};_0x59cae4(++_0x51154c);}(_0xf023,0x1db));var _0x3f02=function(_0xa2d409,_0x468512){_0xa2d409=_0xa2d409-0x0;var _0x1cad59=_0xf023[_0xa2d409];return _0x1cad59;};'use strict';var _=require('lodash');var util=require(_0x3f02('0x0'));var moment=require(_0x3f02('0x1'));var BPromise=require('bluebird');var rs=require(_0x3f02('0x2'));var fs=require('fs');var Redis=require(_0x3f02('0x3'));var db=require(_0x3f02('0x4'))['db'];var utils=require(_0x3f02('0x5'));var logger=require(_0x3f02('0x6'))('rpc');var config=require(_0x3f02('0x7'));var jayson=require(_0x3f02('0x8'));var client=jayson[_0x3f02('0x9')][_0x3f02('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x244e3e,_0x2f743a,_0x2d0d60){return new BPromise(function(_0x36df1a,_0x15d5be){return client[_0x3f02('0xb')](_0x244e3e,_0x2d0d60)['then'](function(_0x37ded0){logger['info'](_0x3f02('0xc'),_0x2f743a,_0x3f02('0xd'));logger[_0x3f02('0xe')](_0x3f02('0xf'),_0x2f743a,_0x3f02('0xd'),JSON['stringify'](_0x37ded0));if(_0x37ded0[_0x3f02('0x10')]){if(_0x37ded0[_0x3f02('0x10')][_0x3f02('0x11')]===0x1f4){logger['error'](_0x3f02('0xc'),_0x2f743a,_0x37ded0[_0x3f02('0x10')][_0x3f02('0x12')]);return _0x15d5be(_0x37ded0[_0x3f02('0x10')]['message']);}logger[_0x3f02('0x10')](_0x3f02('0xc'),_0x2f743a,_0x37ded0['error'][_0x3f02('0x12')]);return _0x36df1a(_0x37ded0[_0x3f02('0x10')][_0x3f02('0x12')]);}else{logger[_0x3f02('0x13')](_0x3f02('0xc'),_0x2f743a,_0x3f02('0xd'));_0x36df1a(_0x37ded0['result']['message']);}})[_0x3f02('0x14')](function(_0x8550f1){logger[_0x3f02('0x10')](_0x3f02('0xc'),_0x2f743a,_0x8550f1);_0x15d5be(_0x8550f1);});});}exports['ShowSquareOdbc']=function(_0x51a8e8){var _0x311b99=this;return new Promise(function(_0x18539b,_0x4f6a39){return db[_0x3f02('0x15')]['find']({'raw':_0x51a8e8[_0x3f02('0x16')]?_0x51a8e8[_0x3f02('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x51a8e8[_0x3f02('0x16')]?_0x51a8e8[_0x3f02('0x16')][_0x3f02('0x17')]||null:null,'attributes':_0x51a8e8[_0x3f02('0x16')]?_0x51a8e8[_0x3f02('0x16')][_0x3f02('0x18')]||null:null,'include':_0x51a8e8[_0x3f02('0x16')]?_0x51a8e8[_0x3f02('0x16')][_0x3f02('0x19')]?_[_0x3f02('0x1a')](_0x51a8e8[_0x3f02('0x16')][_0x3f02('0x19')],function(_0x1a4a6b){return{'model':db[_0x1a4a6b[_0x3f02('0x1b')]],'as':_0x1a4a6b['as'],'attributes':_0x1a4a6b[_0x3f02('0x18')],'include':_0x1a4a6b[_0x3f02('0x19')]?_[_0x3f02('0x1a')](_0x1a4a6b[_0x3f02('0x19')],function(_0xecc595){return{'model':db[_0xecc595[_0x3f02('0x1b')]],'as':_0xecc595['as'],'attributes':_0xecc595[_0x3f02('0x18')],'include':_0xecc595[_0x3f02('0x19')]?_[_0x3f02('0x1a')](_0xecc595[_0x3f02('0x19')],function(_0x4d2cc4){return{'model':db[_0x4d2cc4[_0x3f02('0x1b')]],'as':_0x4d2cc4['as'],'attributes':_0x4d2cc4[_0x3f02('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x341fae){logger['info'](_0x3f02('0x1c'),_0x51a8e8);logger[_0x3f02('0xe')](_0x3f02('0x1c'),_0x51a8e8,JSON[_0x3f02('0x1d')](_0x341fae));_0x18539b(_0x341fae);})[_0x3f02('0x14')](function(_0x32e86c){logger['error'](_0x3f02('0x1c'),_0x32e86c[_0x3f02('0x12')],_0x51a8e8);_0x4f6a39(_0x311b99[_0x3f02('0x10')](0x1f4,_0x32e86c[_0x3f02('0x12')]));});});};
\ No newline at end of file
index c71b4bd..ec72e24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91c5=['create','addUsers','put','update','delete','removeUsers','exports','util','express','../../config/environment','./squareProject.controller','isAuthenticated','index','/:id','show','get','/:id/users','getUsers','post'];(function(_0x226f94,_0x111cb2){var _0xb4249f=function(_0x3754f9){while(--_0x3754f9){_0x226f94['push'](_0x226f94['shift']());}};_0xb4249f(++_0x111cb2);}(_0x91c5,0x124));var _0x591c=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x91c5[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require('multer');var util=require(_0x591c('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x591c('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x591c('0x2'));var controller=require(_0x591c('0x3'));router['get']('/',auth[_0x591c('0x4')](),controller[_0x591c('0x5')]);router['get'](_0x591c('0x6'),auth['isAuthenticated'](),controller[_0x591c('0x7')]);router[_0x591c('0x8')](_0x591c('0x9'),auth[_0x591c('0x4')](),controller[_0x591c('0xa')]);router[_0x591c('0xb')]('/',auth[_0x591c('0x4')](),controller[_0x591c('0xc')]);router[_0x591c('0xb')](_0x591c('0x9'),auth[_0x591c('0x4')](),controller[_0x591c('0xd')]);router[_0x591c('0xe')](_0x591c('0x6'),auth[_0x591c('0x4')](),controller[_0x591c('0xf')]);router['delete'](_0x591c('0x6'),auth[_0x591c('0x4')](),controller['destroy']);router[_0x591c('0x10')](_0x591c('0x9'),auth[_0x591c('0x4')](),controller[_0x591c('0x11')]);module[_0x591c('0x12')]=router;
\ No newline at end of file
+var _0xb6fa=['show','/:id/users','getUsers','post','create','addUsers','update','delete','destroy','removeUsers','multer','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','/:id'];(function(_0xebc3dc,_0x365707){var _0x31fbfc=function(_0x27b0d4){while(--_0x27b0d4){_0xebc3dc['push'](_0xebc3dc['shift']());}};_0x31fbfc(++_0x365707);}(_0xb6fa,0x1c2));var _0xab6f=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xb6fa[_0xa148b7];return _0x51efd3;};'use strict';var multer=require(_0xab6f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xab6f('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xab6f('0x2'));var auth=require(_0xab6f('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xab6f('0x4'));var controller=require(_0xab6f('0x5'));router[_0xab6f('0x6')]('/',auth[_0xab6f('0x7')](),controller[_0xab6f('0x8')]);router[_0xab6f('0x6')](_0xab6f('0x9'),auth[_0xab6f('0x7')](),controller[_0xab6f('0xa')]);router[_0xab6f('0x6')](_0xab6f('0xb'),auth[_0xab6f('0x7')](),controller[_0xab6f('0xc')]);router[_0xab6f('0xd')]('/',auth[_0xab6f('0x7')](),controller[_0xab6f('0xe')]);router['post']('/:id/users',auth[_0xab6f('0x7')](),controller[_0xab6f('0xf')]);router['put'](_0xab6f('0x9'),auth[_0xab6f('0x7')](),controller[_0xab6f('0x10')]);router[_0xab6f('0x11')](_0xab6f('0x9'),auth[_0xab6f('0x7')](),controller[_0xab6f('0x12')]);router['delete'](_0xab6f('0xb'),auth[_0xab6f('0x7')](),controller[_0xab6f('0x13')]);module['exports']=router;
\ No newline at end of file
index 4c4dd5b..d957de8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc738=['name','TEXT','BLOB','getDataValue','preproduction','toString','utf8','long','production','DATE','sequelize','exports','STRING'];(function(_0x3e469e,_0x334923){var _0x33d855=function(_0x123ba9){while(--_0x123ba9){_0x3e469e['push'](_0x3e469e['shift']());}};_0x33d855(++_0x334923);}(_0xc738,0x135));var _0x8c73=function(_0x3f4cd0,_0x303070){_0x3f4cd0=_0x3f4cd0-0x0;var _0x3f9f01=_0xc738[_0x3f4cd0];return _0x3f9f01;};'use strict';var Sequelize=require(_0x8c73('0x0'));module[_0x8c73('0x1')]={'name':{'type':Sequelize[_0x8c73('0x2')],'unique':_0x8c73('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x8c73('0x2')]},'notes':{'type':Sequelize[_0x8c73('0x4')]},'preproduction':{'type':Sequelize[_0x8c73('0x5')]('long'),'get':function(){if(this[_0x8c73('0x6')]('preproduction')){return this[_0x8c73('0x6')](_0x8c73('0x7'))[_0x8c73('0x8')](_0x8c73('0x9'));}}},'production':{'type':Sequelize['BLOB'](_0x8c73('0xa')),'get':function(){if(this[_0x8c73('0x6')](_0x8c73('0xb'))){return this[_0x8c73('0x6')](_0x8c73('0xb'))[_0x8c73('0x8')]('utf8');}}},'savedAt':{'type':Sequelize[_0x8c73('0xc')]},'publishedAt':{'type':Sequelize[_0x8c73('0xc')]}};
\ No newline at end of file
+var _0x6aba=['BLOB','long','getDataValue','preproduction','production','toString','DATE','sequelize','STRING','name','TEXT'];(function(_0x357946,_0x465d8a){var _0x5e53f6=function(_0x34b0f2){while(--_0x34b0f2){_0x357946['push'](_0x357946['shift']());}};_0x5e53f6(++_0x465d8a);}(_0x6aba,0x188));var _0xa6ab=function(_0x285544,_0x1ced6b){_0x285544=_0x285544-0x0;var _0x4881bd=_0x6aba[_0x285544];return _0x4881bd;};'use strict';var Sequelize=require(_0xa6ab('0x0'));module['exports']={'name':{'type':Sequelize[_0xa6ab('0x1')],'unique':_0xa6ab('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xa6ab('0x1')]},'notes':{'type':Sequelize[_0xa6ab('0x3')]},'preproduction':{'type':Sequelize[_0xa6ab('0x4')](_0xa6ab('0x5')),'get':function(){if(this[_0xa6ab('0x6')](_0xa6ab('0x7'))){return this['getDataValue'](_0xa6ab('0x7'))['toString']('utf8');}}},'production':{'type':Sequelize[_0xa6ab('0x4')](_0xa6ab('0x5')),'get':function(){if(this[_0xa6ab('0x6')](_0xa6ab('0x8'))){return this[_0xa6ab('0x6')](_0xa6ab('0x8'))[_0xa6ab('0x9')]('utf8');}}},'savedAt':{'type':Sequelize[_0xa6ab('0xa')]},'publishedAt':{'type':Sequelize[_0xa6ab('0xa')]}};
\ No newline at end of file
index cb79727..1bb3209 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4fb=['find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','findOne','User','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','localhost','register','sendStatus','status','offset','limit','count','Content-Range','json','apply','reject','save','update','then','get','SquareProjects','UserProfileResource','error','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','catch','show','keys','include'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xc4fb,0xd8));var _0xbc4f=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xc4fb[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0xbc4f('0x0'));var rimraf=require(_0xbc4f('0x1'));var zipdir=require(_0xbc4f('0x2'));var jsonpatch=require(_0xbc4f('0x3'));var rp=require(_0xbc4f('0x4'));var moment=require('moment');var BPromise=require(_0xbc4f('0x5'));var Mustache=require(_0xbc4f('0x6'));var util=require('util');var path=require(_0xbc4f('0x7'));var sox=require(_0xbc4f('0x8'));var csv=require(_0xbc4f('0x9'));var ejs=require(_0xbc4f('0xa'));var fs=require('fs');var fs_extra=require(_0xbc4f('0xb'));var _=require(_0xbc4f('0xc'));var squel=require(_0xbc4f('0xd'));var crypto=require(_0xbc4f('0xe'));var jsforce=require(_0xbc4f('0xf'));var deskjs=require(_0xbc4f('0x10'));var toCsv=require('to-csv');var querystring=require(_0xbc4f('0x11'));var Papa=require(_0xbc4f('0x12'));var Redis=require(_0xbc4f('0x13'));var authService=require(_0xbc4f('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbc4f('0x15'));var logger=require(_0xbc4f('0x16'))(_0xbc4f('0x17'));var utils=require(_0xbc4f('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xbc4f('0x19'));var db=require(_0xbc4f('0x1a'))['db'];config['redis']=_[_0xbc4f('0x1b')](config[_0xbc4f('0x1c')],{'host':_0xbc4f('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbc4f('0x1c')]));require('./squareProject.socket')[_0xbc4f('0x1e')](socket);function respondWithStatusCode(_0x498491,_0x3868c7){_0x3868c7=_0x3868c7||0xcc;return function(_0x534c73){if(_0x534c73){return _0x498491[_0xbc4f('0x1f')](_0x3868c7);}return _0x498491[_0xbc4f('0x20')](_0x3868c7)['end']();};}function respondWithResult(_0x1429ed,_0x7e04a1){_0x7e04a1=_0x7e04a1||0xc8;return function(_0x1d7521){if(_0x1d7521){return _0x1429ed[_0xbc4f('0x20')](_0x7e04a1)['json'](_0x1d7521);}};}function respondWithFilteredResult(_0x2b42e6,_0x56cd75){return function(_0x300016){if(_0x300016){var _0xec28ed=typeof _0x56cd75[_0xbc4f('0x21')]==='undefined'&&typeof _0x56cd75[_0xbc4f('0x22')]==='undefined';var _0x5af1fc=_0x300016[_0xbc4f('0x23')];var _0x510b28=_0xec28ed?0x0:_0x56cd75[_0xbc4f('0x21')];var _0x8753fd=_0xec28ed?_0x300016[_0xbc4f('0x23')]:_0x56cd75[_0xbc4f('0x21')]+_0x56cd75[_0xbc4f('0x22')];var _0x531545;if(_0x8753fd>=_0x5af1fc){_0x8753fd=_0x5af1fc;_0x531545=0xc8;}else{_0x531545=0xce;}_0x2b42e6['status'](_0x531545);return _0x2b42e6['set'](_0xbc4f('0x24'),_0x510b28+'-'+_0x8753fd+'/'+_0x5af1fc)[_0xbc4f('0x25')](_0x300016);}return null;};}function patchUpdates(_0x528608){return function(_0x5e8db5){try{jsonpatch[_0xbc4f('0x26')](_0x5e8db5,_0x528608,!![]);}catch(_0x4bc987){return BPromise[_0xbc4f('0x27')](_0x4bc987);}return _0x5e8db5[_0xbc4f('0x28')]();};}function saveUpdates(_0xc8ba2,_0x4e53c7){return function(_0x28b2bc){if(_0x28b2bc){return _0x28b2bc[_0xbc4f('0x29')](_0xc8ba2)[_0xbc4f('0x2a')](function(_0x4be1cb){return _0x4be1cb;});}return null;};}function removeEntity(_0x42a25e,_0x5c6487){return function(_0x2c4787){if(_0x2c4787){return _0x2c4787['destroy']()['then'](function(){var _0x95a679=_0x2c4787[_0xbc4f('0x2b')]({'plain':!![]});var _0x49053c=_0xbc4f('0x2c');return db[_0xbc4f('0x2d')]['destroy']({'where':{'type':_0x49053c,'resourceId':_0x95a679['id']}})[_0xbc4f('0x2a')](function(){return _0x2c4787;});})[_0xbc4f('0x2a')](function(){_0x42a25e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e584e,_0x3ecbee){return function(_0x5eda4c){if(!_0x5eda4c){_0x2e584e[_0xbc4f('0x1f')](0x194);}return _0x5eda4c;};}function handleError(_0x2f6cc8,_0x2a421e){_0x2a421e=_0x2a421e||0x1f4;return function(_0x22ed01){logger[_0xbc4f('0x2e')](_0x22ed01[_0xbc4f('0x2f')]);if(_0x22ed01[_0xbc4f('0x30')]){delete _0x22ed01['name'];}_0x2f6cc8[_0xbc4f('0x20')](_0x2a421e)[_0xbc4f('0x31')](_0x22ed01);};}exports[_0xbc4f('0x32')]=function(_0x7ec6f,_0x2fbf31){var _0xe9f333={},_0x3c9ccf={},_0x5b1f6b={'count':0x0,'rows':[]};var _0x453ca9=_[_0xbc4f('0x33')](db[_0xbc4f('0x34')][_0xbc4f('0x35')],function(_0x2d8216){return{'name':_0x2d8216[_0xbc4f('0x36')],'type':_0x2d8216[_0xbc4f('0x37')]['key']};});_0x3c9ccf[_0xbc4f('0x38')]=_[_0xbc4f('0x33')](_0x453ca9,_0xbc4f('0x30'));_0x3c9ccf[_0xbc4f('0x39')]=_['keys'](_0x7ec6f['query']);_0x3c9ccf[_0xbc4f('0x3a')]=_['intersection'](_0x3c9ccf[_0xbc4f('0x38')],_0x3c9ccf[_0xbc4f('0x39')]);_0xe9f333['attributes']=_[_0xbc4f('0x3b')](_0x3c9ccf[_0xbc4f('0x38')],qs[_0xbc4f('0x3c')](_0x7ec6f['query'][_0xbc4f('0x3c')]));_0xe9f333[_0xbc4f('0x3d')]=_0xe9f333[_0xbc4f('0x3d')][_0xbc4f('0x3e')]?_0xe9f333['attributes']:_0x3c9ccf['model'];if(!_0x7ec6f[_0xbc4f('0x39')][_0xbc4f('0x3f')](_0xbc4f('0x40'))){_0xe9f333[_0xbc4f('0x22')]=qs[_0xbc4f('0x22')](_0x7ec6f[_0xbc4f('0x39')][_0xbc4f('0x22')]);_0xe9f333[_0xbc4f('0x21')]=qs[_0xbc4f('0x21')](_0x7ec6f[_0xbc4f('0x39')][_0xbc4f('0x21')]);}_0xe9f333['order']=qs[_0xbc4f('0x41')](_0x7ec6f[_0xbc4f('0x39')][_0xbc4f('0x41')]);_0xe9f333['where']=qs[_0xbc4f('0x3a')](_[_0xbc4f('0x42')](_0x7ec6f[_0xbc4f('0x39')],_0x3c9ccf[_0xbc4f('0x3a')]),_0x453ca9);if(_0x7ec6f['query'][_0xbc4f('0x43')]){_0xe9f333[_0xbc4f('0x44')]=_[_0xbc4f('0x45')](_0xe9f333['where'],{'$or':_[_0xbc4f('0x33')](_0x453ca9,function(_0x1b05e2){if(_0x1b05e2[_0xbc4f('0x37')]!==_0xbc4f('0x46')){var _0x1442de={};_0x1442de[_0x1b05e2['name']]={'$like':'%'+_0x7ec6f[_0xbc4f('0x39')][_0xbc4f('0x43')]+'%'};return _0x1442de;}})});}_0xe9f333=_['merge']({},_0xe9f333,_0x7ec6f[_0xbc4f('0x47')]);var _0x4901ac={'where':_0xe9f333['where']};return db[_0xbc4f('0x34')]['count'](_0x4901ac)[_0xbc4f('0x2a')](function(_0x1e3a4e){_0x5b1f6b[_0xbc4f('0x23')]=_0x1e3a4e;if(_0x7ec6f['query'][_0xbc4f('0x48')]){_0xe9f333['include']=[{'all':!![]}];}return db[_0xbc4f('0x34')][_0xbc4f('0x49')](_0xe9f333);})['then'](function(_0x5b3003){_0x5b1f6b['rows']=_0x5b3003;return _0x5b1f6b;})['then'](respondWithFilteredResult(_0x2fbf31,_0xe9f333))[_0xbc4f('0x4a')](handleError(_0x2fbf31,null));};exports[_0xbc4f('0x4b')]=function(_0x56d30e,_0x123ea1){var _0x3fcc72={'raw':![],'where':{'id':_0x56d30e['params']['id']}},_0x35fa6d={};_0x35fa6d['model']=_[_0xbc4f('0x4c')](db[_0xbc4f('0x34')][_0xbc4f('0x35')]);_0x35fa6d[_0xbc4f('0x39')]=_[_0xbc4f('0x4c')](_0x56d30e['query']);_0x35fa6d[_0xbc4f('0x3a')]=_[_0xbc4f('0x3b')](_0x35fa6d[_0xbc4f('0x38')],_0x35fa6d[_0xbc4f('0x39')]);_0x3fcc72['attributes']=_[_0xbc4f('0x3b')](_0x35fa6d[_0xbc4f('0x38')],qs['fields'](_0x56d30e[_0xbc4f('0x39')][_0xbc4f('0x3c')]));_0x3fcc72[_0xbc4f('0x3d')]=_0x3fcc72['attributes'][_0xbc4f('0x3e')]?_0x3fcc72['attributes']:_0x35fa6d[_0xbc4f('0x38')];if(_0x56d30e['query'][_0xbc4f('0x48')]){_0x3fcc72[_0xbc4f('0x4d')]=[{'all':!![]}];}_0x3fcc72=_[_0xbc4f('0x45')]({},_0x3fcc72,_0x56d30e[_0xbc4f('0x47')]);return db[_0xbc4f('0x34')][_0xbc4f('0x4e')](_0x3fcc72)['then'](handleEntityNotFound(_0x123ea1,null))[_0xbc4f('0x2a')](respondWithResult(_0x123ea1,null))[_0xbc4f('0x4a')](handleError(_0x123ea1,null));};exports['create']=function(_0x4039e5,_0x4627d0){return db[_0xbc4f('0x34')]['create'](_0x4039e5[_0xbc4f('0x4f')],{})['then'](function(_0x575a11){var _0x423217=_0x4039e5[_0xbc4f('0x50')][_0xbc4f('0x2b')]({'plain':!![]});if(!_0x423217)throw new Error(_0xbc4f('0x51'));if(_0x423217['role']===_0xbc4f('0x50')){var _0x4a619c=_0x575a11[_0xbc4f('0x2b')]({'plain':!![]});var _0xf91be2=_0xbc4f('0x2c');return db['UserProfileSection']['find']({'where':{'name':_0xf91be2,'userProfileId':_0x423217[_0xbc4f('0x52')]},'raw':!![]})[_0xbc4f('0x2a')](function(_0x54f984){if(_0x54f984&&_0x54f984[_0xbc4f('0x53')]===0x0){return db[_0xbc4f('0x2d')][_0xbc4f('0x54')]({'name':_0x4a619c[_0xbc4f('0x30')],'resourceId':_0x4a619c['id'],'type':_0x54f984['name'],'sectionId':_0x54f984['id']},{})['then'](function(){return _0x575a11;});}else{return _0x575a11;}})['catch'](function(_0x46c57c){logger['error'](_0xbc4f('0x55'),_0x46c57c);throw _0x46c57c;});}return _0x575a11;})['then'](respondWithResult(_0x4627d0,0xc9))[_0xbc4f('0x4a')](handleError(_0x4627d0,null));};exports['update']=function(_0x99948,_0x5a4c7e){if(_0x99948[_0xbc4f('0x4f')]['id']){delete _0x99948[_0xbc4f('0x4f')]['id'];}return db[_0xbc4f('0x34')]['find']({'where':{'id':_0x99948[_0xbc4f('0x56')]['id']}})['then'](handleEntityNotFound(_0x5a4c7e,null))['then'](saveUpdates(_0x99948[_0xbc4f('0x4f')],null))['then'](respondWithResult(_0x5a4c7e,null))[_0xbc4f('0x4a')](handleError(_0x5a4c7e,null));};exports[_0xbc4f('0x57')]=function(_0x41d401,_0x10cdbe){return db[_0xbc4f('0x34')][_0xbc4f('0x4e')]({'where':{'id':_0x41d401[_0xbc4f('0x56')]['id']}})[_0xbc4f('0x2a')](handleEntityNotFound(_0x10cdbe,null))[_0xbc4f('0x2a')](removeEntity(_0x10cdbe,null))[_0xbc4f('0x4a')](handleError(_0x10cdbe,null));};exports[_0xbc4f('0x58')]=function(_0x196bfa,_0x31c651,_0x5934b9){return db['SquareProject'][_0xbc4f('0x4e')]({'where':{'id':_0x196bfa[_0xbc4f('0x56')]['id']}})[_0xbc4f('0x2a')](handleEntityNotFound(_0x31c651,null))[_0xbc4f('0x2a')](function(_0x5a0c84){if(_0x5a0c84){return _0x5a0c84['addUsers'](_0x196bfa[_0xbc4f('0x4f')][_0xbc4f('0x59')],_[_0xbc4f('0x5a')](_0x196bfa[_0xbc4f('0x4f')],[_0xbc4f('0x59'),'id'])||{});}})[_0xbc4f('0x2a')](respondWithResult(_0x31c651,null))[_0xbc4f('0x4a')](handleError(_0x31c651,null));};exports[_0xbc4f('0x5b')]=function(_0x5302c7,_0x50de47,_0x2efd9b){return db[_0xbc4f('0x34')][_0xbc4f('0x4e')]({'where':{'id':_0x5302c7[_0xbc4f('0x56')]['id']}})['then'](handleEntityNotFound(_0x50de47,null))[_0xbc4f('0x2a')](function(_0x180fc5){if(_0x180fc5){return _0x180fc5[_0xbc4f('0x5b')](_0x5302c7[_0xbc4f('0x39')][_0xbc4f('0x59')])['then'](function(){if(_[_0xbc4f('0x5c')](_0x5302c7[_0xbc4f('0x39')][_0xbc4f('0x59')])){for(var _0x2e3909=0x0;_0x2e3909<_0x5302c7[_0xbc4f('0x39')]['ids'][_0xbc4f('0x3e')];_0x2e3909+=0x1){socket[_0xbc4f('0x5d')](_0xbc4f('0x5e'),{'UserId':Number(_0x5302c7[_0xbc4f('0x39')][_0xbc4f('0x59')][_0x2e3909]),'SquareProjectId':Number(_0x5302c7[_0xbc4f('0x56')]['id'])});}}else{socket[_0xbc4f('0x5d')]('userSquareProject:remove',{'UserId':Number(_0x5302c7[_0xbc4f('0x39')][_0xbc4f('0x59')]),'SquareProjectId':Number(_0x5302c7[_0xbc4f('0x56')]['id'])});}});}})[_0xbc4f('0x2a')](respondWithStatusCode(_0x50de47,null))[_0xbc4f('0x4a')](handleError(_0x50de47,null));};exports[_0xbc4f('0x5f')]=function(_0x2355dd,_0x2d152f,_0x150dc2){var _0x2141d2={};var _0x41747d={};var _0x5eba70;var _0x516e9d;return db[_0xbc4f('0x34')][_0xbc4f('0x60')]({'where':{'id':_0x2355dd[_0xbc4f('0x56')]['id']}})[_0xbc4f('0x2a')](handleEntityNotFound(_0x2d152f,null))[_0xbc4f('0x2a')](function(_0x160602){if(_0x160602){_0x5eba70=_0x160602;_0x41747d[_0xbc4f('0x38')]=_['keys'](db[_0xbc4f('0x61')]['rawAttributes']);_0x41747d[_0xbc4f('0x39')]=_[_0xbc4f('0x4c')](_0x2355dd[_0xbc4f('0x39')]);_0x41747d['filters']=_[_0xbc4f('0x3b')](_0x41747d[_0xbc4f('0x38')],_0x41747d[_0xbc4f('0x39')]);_0x2141d2[_0xbc4f('0x3d')]=_[_0xbc4f('0x3b')](_0x41747d[_0xbc4f('0x38')],qs[_0xbc4f('0x3c')](_0x2355dd[_0xbc4f('0x39')][_0xbc4f('0x3c')]));_0x2141d2[_0xbc4f('0x3d')]=_0x2141d2[_0xbc4f('0x3d')]['length']?_0x2141d2[_0xbc4f('0x3d')]:_0x41747d[_0xbc4f('0x38')];_0x2141d2['order']=qs[_0xbc4f('0x41')](_0x2355dd[_0xbc4f('0x39')][_0xbc4f('0x41')]);_0x2141d2[_0xbc4f('0x44')]=qs[_0xbc4f('0x3a')](_[_0xbc4f('0x42')](_0x2355dd[_0xbc4f('0x39')],_0x41747d[_0xbc4f('0x3a')]));if(_0x2355dd['query'][_0xbc4f('0x43')]){_0x2141d2[_0xbc4f('0x44')]=_[_0xbc4f('0x45')](_0x2141d2[_0xbc4f('0x44')],{'$or':_[_0xbc4f('0x33')](_0x2141d2['attributes'],function(_0x272ad7){var _0x4984db={};_0x4984db[_0x272ad7]={'$like':'%'+_0x2355dd[_0xbc4f('0x39')]['filter']+'%'};return _0x4984db;})});}_0x2141d2=_[_0xbc4f('0x45')]({},_0x2141d2,_0x2355dd[_0xbc4f('0x47')]);return _0x5eba70[_0xbc4f('0x5f')](_0x2141d2);}})[_0xbc4f('0x2a')](function(_0x59f852){if(_0x59f852){_0x516e9d=_0x59f852[_0xbc4f('0x3e')];if(!_0x2355dd[_0xbc4f('0x39')][_0xbc4f('0x3f')](_0xbc4f('0x40'))){_0x2141d2[_0xbc4f('0x22')]=qs['limit'](_0x2355dd[_0xbc4f('0x39')][_0xbc4f('0x22')]);_0x2141d2[_0xbc4f('0x21')]=qs[_0xbc4f('0x21')](_0x2355dd[_0xbc4f('0x39')][_0xbc4f('0x21')]);}return _0x5eba70['getUsers'](_0x2141d2);}})[_0xbc4f('0x2a')](function(_0x153d24){if(_0x153d24){return _0x153d24?{'count':_0x516e9d,'rows':_0x153d24}:null;}})[_0xbc4f('0x2a')](respondWithResult(_0x2d152f,null))[_0xbc4f('0x4a')](handleError(_0x2d152f,null));};
\ No newline at end of file
+var _0x20f6=['desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./squareProject.socket','register','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','reject','save','update','then','destroy','SquareProjects','UserProfileResource','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','fields','includeAll','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addUsers','ids','removeUsers','isArray','userSquareProject:remove','emit','getUsers','options','nolimit','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x20f6,0x185));var _0x620f=function(_0x441e89,_0x542743){_0x441e89=_0x441e89-0x0;var _0x326d66=_0x20f6[_0x441e89];return _0x326d66;};'use strict';var emlformat=require(_0x620f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x620f('0x1'));var jsonpatch=require(_0x620f('0x2'));var rp=require(_0x620f('0x3'));var moment=require(_0x620f('0x4'));var BPromise=require(_0x620f('0x5'));var Mustache=require(_0x620f('0x6'));var util=require(_0x620f('0x7'));var path=require(_0x620f('0x8'));var sox=require(_0x620f('0x9'));var csv=require('to-csv');var ejs=require(_0x620f('0xa'));var fs=require('fs');var fs_extra=require(_0x620f('0xb'));var _=require('lodash');var squel=require(_0x620f('0xc'));var crypto=require(_0x620f('0xd'));var jsforce=require(_0x620f('0xe'));var deskjs=require(_0x620f('0xf'));var toCsv=require(_0x620f('0x10'));var querystring=require(_0x620f('0x11'));var Papa=require(_0x620f('0x12'));var Redis=require(_0x620f('0x13'));var authService=require(_0x620f('0x14'));var qs=require(_0x620f('0x15'));var as=require(_0x620f('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x620f('0x17'))(_0x620f('0x18'));var utils=require(_0x620f('0x19'));var config=require(_0x620f('0x1a'));var licenseUtil=require(_0x620f('0x1b'));var db=require('../../mysqldb')['db'];config[_0x620f('0x1c')]=_['defaults'](config[_0x620f('0x1c')],{'host':_0x620f('0x1d'),'port':0x18eb});var socket=require(_0x620f('0x1e'))(new Redis(config[_0x620f('0x1c')]));require(_0x620f('0x1f'))[_0x620f('0x20')](socket);function respondWithStatusCode(_0x515b4b,_0x4f044f){_0x4f044f=_0x4f044f||0xcc;return function(_0xa2f9f1){if(_0xa2f9f1){return _0x515b4b[_0x620f('0x21')](_0x4f044f);}return _0x515b4b[_0x620f('0x22')](_0x4f044f)[_0x620f('0x23')]();};}function respondWithResult(_0x132645,_0x4ef3d7){_0x4ef3d7=_0x4ef3d7||0xc8;return function(_0x347e60){if(_0x347e60){return _0x132645[_0x620f('0x22')](_0x4ef3d7)['json'](_0x347e60);}};}function respondWithFilteredResult(_0x502b91,_0x24be96){return function(_0x22a22d){if(_0x22a22d){var _0x38901e=typeof _0x24be96[_0x620f('0x24')]==='undefined'&&typeof _0x24be96[_0x620f('0x25')]===_0x620f('0x26');var _0x4e53b4=_0x22a22d[_0x620f('0x27')];var _0x3f6859=_0x38901e?0x0:_0x24be96[_0x620f('0x24')];var _0x269d06=_0x38901e?_0x22a22d[_0x620f('0x27')]:_0x24be96[_0x620f('0x24')]+_0x24be96[_0x620f('0x25')];var _0x6acef;if(_0x269d06>=_0x4e53b4){_0x269d06=_0x4e53b4;_0x6acef=0xc8;}else{_0x6acef=0xce;}_0x502b91['status'](_0x6acef);return _0x502b91['set'](_0x620f('0x28'),_0x3f6859+'-'+_0x269d06+'/'+_0x4e53b4)[_0x620f('0x29')](_0x22a22d);}return null;};}function patchUpdates(_0x412401){return function(_0x529796){try{jsonpatch['apply'](_0x529796,_0x412401,!![]);}catch(_0x10a27d){return BPromise[_0x620f('0x2a')](_0x10a27d);}return _0x529796[_0x620f('0x2b')]();};}function saveUpdates(_0x23d6f4,_0x29b8c1){return function(_0xed51cb){if(_0xed51cb){return _0xed51cb[_0x620f('0x2c')](_0x23d6f4)[_0x620f('0x2d')](function(_0x5334d9){return _0x5334d9;});}return null;};}function removeEntity(_0x4c7b44,_0x1d9225){return function(_0x22a99c){if(_0x22a99c){return _0x22a99c[_0x620f('0x2e')]()[_0x620f('0x2d')](function(){var _0x228f45=_0x22a99c['get']({'plain':!![]});var _0x35647d=_0x620f('0x2f');return db[_0x620f('0x30')][_0x620f('0x2e')]({'where':{'type':_0x35647d,'resourceId':_0x228f45['id']}})[_0x620f('0x2d')](function(){return _0x22a99c;});})['then'](function(){_0x4c7b44[_0x620f('0x22')](0xcc)[_0x620f('0x23')]();});}};}function handleEntityNotFound(_0x3d34da,_0x35a5b4){return function(_0x44e8f6){if(!_0x44e8f6){_0x3d34da[_0x620f('0x21')](0x194);}return _0x44e8f6;};}function handleError(_0x53d383,_0x5ccf54){_0x5ccf54=_0x5ccf54||0x1f4;return function(_0x3049a4){logger['error'](_0x3049a4[_0x620f('0x31')]);if(_0x3049a4[_0x620f('0x32')]){delete _0x3049a4['name'];}_0x53d383[_0x620f('0x22')](_0x5ccf54)[_0x620f('0x33')](_0x3049a4);};}exports[_0x620f('0x34')]=function(_0x4163fe,_0x555ba3){var _0x1fc57c={},_0x158206={},_0x59aafd={'count':0x0,'rows':[]};var _0x5255e5=_[_0x620f('0x35')](db[_0x620f('0x36')][_0x620f('0x37')],function(_0xe2e2b4){return{'name':_0xe2e2b4[_0x620f('0x38')],'type':_0xe2e2b4[_0x620f('0x39')][_0x620f('0x3a')]};});_0x158206[_0x620f('0x3b')]=_[_0x620f('0x35')](_0x5255e5,_0x620f('0x32'));_0x158206[_0x620f('0x3c')]=_[_0x620f('0x3d')](_0x4163fe[_0x620f('0x3c')]);_0x158206[_0x620f('0x3e')]=_[_0x620f('0x3f')](_0x158206[_0x620f('0x3b')],_0x158206[_0x620f('0x3c')]);_0x1fc57c[_0x620f('0x40')]=_[_0x620f('0x3f')](_0x158206['model'],qs['fields'](_0x4163fe[_0x620f('0x3c')]['fields']));_0x1fc57c[_0x620f('0x40')]=_0x1fc57c[_0x620f('0x40')][_0x620f('0x41')]?_0x1fc57c['attributes']:_0x158206[_0x620f('0x3b')];if(!_0x4163fe['query'][_0x620f('0x42')]('nolimit')){_0x1fc57c[_0x620f('0x25')]=qs[_0x620f('0x25')](_0x4163fe[_0x620f('0x3c')][_0x620f('0x25')]);_0x1fc57c['offset']=qs[_0x620f('0x24')](_0x4163fe[_0x620f('0x3c')][_0x620f('0x24')]);}_0x1fc57c[_0x620f('0x43')]=qs[_0x620f('0x44')](_0x4163fe['query'][_0x620f('0x44')]);_0x1fc57c[_0x620f('0x45')]=qs[_0x620f('0x3e')](_[_0x620f('0x46')](_0x4163fe[_0x620f('0x3c')],_0x158206[_0x620f('0x3e')]),_0x5255e5);if(_0x4163fe[_0x620f('0x3c')][_0x620f('0x47')]){_0x1fc57c[_0x620f('0x45')]=_[_0x620f('0x48')](_0x1fc57c[_0x620f('0x45')],{'$or':_['map'](_0x5255e5,function(_0x2496b5){if(_0x2496b5[_0x620f('0x39')]!==_0x620f('0x49')){var _0x20c9c3={};_0x20c9c3[_0x2496b5[_0x620f('0x32')]]={'$like':'%'+_0x4163fe[_0x620f('0x3c')][_0x620f('0x47')]+'%'};return _0x20c9c3;}})});}_0x1fc57c=_[_0x620f('0x48')]({},_0x1fc57c,_0x4163fe['options']);var _0x1f9350={'where':_0x1fc57c[_0x620f('0x45')]};return db['SquareProject'][_0x620f('0x27')](_0x1f9350)[_0x620f('0x2d')](function(_0x225684){_0x59aafd[_0x620f('0x27')]=_0x225684;if(_0x4163fe[_0x620f('0x3c')]['includeAll']){_0x1fc57c[_0x620f('0x4a')]=[{'all':!![]}];}return db[_0x620f('0x36')][_0x620f('0x4b')](_0x1fc57c);})['then'](function(_0x2f4917){_0x59aafd[_0x620f('0x4c')]=_0x2f4917;return _0x59aafd;})[_0x620f('0x2d')](respondWithFilteredResult(_0x555ba3,_0x1fc57c))[_0x620f('0x4d')](handleError(_0x555ba3,null));};exports[_0x620f('0x4e')]=function(_0xffec34,_0x39204b){var _0x2d0b4c={'raw':![],'where':{'id':_0xffec34[_0x620f('0x4f')]['id']}},_0x35f745={};_0x35f745['model']=_[_0x620f('0x3d')](db[_0x620f('0x36')][_0x620f('0x37')]);_0x35f745[_0x620f('0x3c')]=_[_0x620f('0x3d')](_0xffec34[_0x620f('0x3c')]);_0x35f745[_0x620f('0x3e')]=_[_0x620f('0x3f')](_0x35f745[_0x620f('0x3b')],_0x35f745['query']);_0x2d0b4c[_0x620f('0x40')]=_[_0x620f('0x3f')](_0x35f745['model'],qs['fields'](_0xffec34['query'][_0x620f('0x50')]));_0x2d0b4c[_0x620f('0x40')]=_0x2d0b4c['attributes'][_0x620f('0x41')]?_0x2d0b4c[_0x620f('0x40')]:_0x35f745[_0x620f('0x3b')];if(_0xffec34['query'][_0x620f('0x51')]){_0x2d0b4c[_0x620f('0x4a')]=[{'all':!![]}];}_0x2d0b4c=_[_0x620f('0x48')]({},_0x2d0b4c,_0xffec34['options']);return db[_0x620f('0x36')][_0x620f('0x52')](_0x2d0b4c)[_0x620f('0x2d')](handleEntityNotFound(_0x39204b,null))[_0x620f('0x2d')](respondWithResult(_0x39204b,null))['catch'](handleError(_0x39204b,null));};exports['create']=function(_0x11430b,_0x3fbf92){return db[_0x620f('0x36')][_0x620f('0x53')](_0x11430b[_0x620f('0x54')],{})[_0x620f('0x2d')](function(_0xf74ce0){var _0x182aa3=_0x11430b[_0x620f('0x55')]['get']({'plain':!![]});if(!_0x182aa3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x182aa3[_0x620f('0x56')]===_0x620f('0x55')){var _0x379a1f=_0xf74ce0['get']({'plain':!![]});var _0x21a63f=_0x620f('0x2f');return db[_0x620f('0x57')]['find']({'where':{'name':_0x21a63f,'userProfileId':_0x182aa3[_0x620f('0x58')]},'raw':!![]})[_0x620f('0x2d')](function(_0x1209d8){if(_0x1209d8&&_0x1209d8[_0x620f('0x59')]===0x0){return db[_0x620f('0x30')][_0x620f('0x53')]({'name':_0x379a1f[_0x620f('0x32')],'resourceId':_0x379a1f['id'],'type':_0x1209d8[_0x620f('0x32')],'sectionId':_0x1209d8['id']},{})['then'](function(){return _0xf74ce0;});}else{return _0xf74ce0;}})[_0x620f('0x4d')](function(_0x18ff57){logger[_0x620f('0x5a')](_0x620f('0x5b'),_0x18ff57);throw _0x18ff57;});}return _0xf74ce0;})[_0x620f('0x2d')](respondWithResult(_0x3fbf92,0xc9))[_0x620f('0x4d')](handleError(_0x3fbf92,null));};exports[_0x620f('0x2c')]=function(_0x5d1827,_0x11c88b){if(_0x5d1827[_0x620f('0x54')]['id']){delete _0x5d1827[_0x620f('0x54')]['id'];}return db[_0x620f('0x36')][_0x620f('0x52')]({'where':{'id':_0x5d1827[_0x620f('0x4f')]['id']}})[_0x620f('0x2d')](handleEntityNotFound(_0x11c88b,null))[_0x620f('0x2d')](saveUpdates(_0x5d1827['body'],null))[_0x620f('0x2d')](respondWithResult(_0x11c88b,null))[_0x620f('0x4d')](handleError(_0x11c88b,null));};exports[_0x620f('0x2e')]=function(_0x5d7a22,_0x505a03){return db['SquareProject']['find']({'where':{'id':_0x5d7a22[_0x620f('0x4f')]['id']}})[_0x620f('0x2d')](handleEntityNotFound(_0x505a03,null))['then'](removeEntity(_0x505a03,null))[_0x620f('0x4d')](handleError(_0x505a03,null));};exports[_0x620f('0x5c')]=function(_0x53f7ed,_0x4bcd1d,_0x52e053){return db[_0x620f('0x36')][_0x620f('0x52')]({'where':{'id':_0x53f7ed[_0x620f('0x4f')]['id']}})[_0x620f('0x2d')](handleEntityNotFound(_0x4bcd1d,null))[_0x620f('0x2d')](function(_0x324b2f){if(_0x324b2f){return _0x324b2f[_0x620f('0x5c')](_0x53f7ed[_0x620f('0x54')]['ids'],_['omit'](_0x53f7ed['body'],[_0x620f('0x5d'),'id'])||{});}})['then'](respondWithResult(_0x4bcd1d,null))[_0x620f('0x4d')](handleError(_0x4bcd1d,null));};exports[_0x620f('0x5e')]=function(_0x2b7a33,_0x490609,_0x5638c7){return db[_0x620f('0x36')][_0x620f('0x52')]({'where':{'id':_0x2b7a33[_0x620f('0x4f')]['id']}})[_0x620f('0x2d')](handleEntityNotFound(_0x490609,null))[_0x620f('0x2d')](function(_0x5b34bf){if(_0x5b34bf){return _0x5b34bf['removeUsers'](_0x2b7a33[_0x620f('0x3c')][_0x620f('0x5d')])['then'](function(){if(_[_0x620f('0x5f')](_0x2b7a33[_0x620f('0x3c')][_0x620f('0x5d')])){for(var _0xc78da=0x0;_0xc78da<_0x2b7a33['query'][_0x620f('0x5d')]['length'];_0xc78da+=0x1){socket['emit'](_0x620f('0x60'),{'UserId':Number(_0x2b7a33[_0x620f('0x3c')][_0x620f('0x5d')][_0xc78da]),'SquareProjectId':Number(_0x2b7a33[_0x620f('0x4f')]['id'])});}}else{socket[_0x620f('0x61')](_0x620f('0x60'),{'UserId':Number(_0x2b7a33[_0x620f('0x3c')][_0x620f('0x5d')]),'SquareProjectId':Number(_0x2b7a33[_0x620f('0x4f')]['id'])});}});}})[_0x620f('0x2d')](respondWithStatusCode(_0x490609,null))[_0x620f('0x4d')](handleError(_0x490609,null));};exports[_0x620f('0x62')]=function(_0x159b78,_0xfda5be,_0x4fece9){var _0x158ac5={};var _0x19973e={};var _0x29170c;var _0x2ba235;return db['SquareProject']['findOne']({'where':{'id':_0x159b78['params']['id']}})['then'](handleEntityNotFound(_0xfda5be,null))['then'](function(_0x367ed0){if(_0x367ed0){_0x29170c=_0x367ed0;_0x19973e[_0x620f('0x3b')]=_[_0x620f('0x3d')](db['User']['rawAttributes']);_0x19973e[_0x620f('0x3c')]=_['keys'](_0x159b78[_0x620f('0x3c')]);_0x19973e[_0x620f('0x3e')]=_[_0x620f('0x3f')](_0x19973e['model'],_0x19973e[_0x620f('0x3c')]);_0x158ac5['attributes']=_[_0x620f('0x3f')](_0x19973e['model'],qs['fields'](_0x159b78[_0x620f('0x3c')]['fields']));_0x158ac5[_0x620f('0x40')]=_0x158ac5[_0x620f('0x40')][_0x620f('0x41')]?_0x158ac5[_0x620f('0x40')]:_0x19973e[_0x620f('0x3b')];_0x158ac5['order']=qs[_0x620f('0x44')](_0x159b78[_0x620f('0x3c')]['sort']);_0x158ac5[_0x620f('0x45')]=qs['filters'](_[_0x620f('0x46')](_0x159b78[_0x620f('0x3c')],_0x19973e['filters']));if(_0x159b78['query'][_0x620f('0x47')]){_0x158ac5[_0x620f('0x45')]=_[_0x620f('0x48')](_0x158ac5[_0x620f('0x45')],{'$or':_[_0x620f('0x35')](_0x158ac5[_0x620f('0x40')],function(_0x578e5d){var _0x2e69f9={};_0x2e69f9[_0x578e5d]={'$like':'%'+_0x159b78[_0x620f('0x3c')][_0x620f('0x47')]+'%'};return _0x2e69f9;})});}_0x158ac5=_[_0x620f('0x48')]({},_0x158ac5,_0x159b78[_0x620f('0x63')]);return _0x29170c['getUsers'](_0x158ac5);}})[_0x620f('0x2d')](function(_0x5ae6a9){if(_0x5ae6a9){_0x2ba235=_0x5ae6a9[_0x620f('0x41')];if(!_0x159b78[_0x620f('0x3c')][_0x620f('0x42')](_0x620f('0x64'))){_0x158ac5['limit']=qs[_0x620f('0x25')](_0x159b78['query'][_0x620f('0x25')]);_0x158ac5[_0x620f('0x24')]=qs[_0x620f('0x24')](_0x159b78[_0x620f('0x3c')]['offset']);}return _0x29170c['getUsers'](_0x158ac5);}})[_0x620f('0x2d')](function(_0x19c08b){if(_0x19c08b){return _0x19c08b?{'count':_0x2ba235,'rows':_0x19c08b}:null;}})['then'](respondWithResult(_0xfda5be,null))[_0x620f('0x4d')](handleError(_0xfda5be,null));};
\ No newline at end of file
index 3ea37fa..13e72aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42a4=['hasOwnProperty','hook','exports','events','../../mysqldb','SquareProject','save','remove','emit'];(function(_0x368ede,_0x1a4045){var _0x5031ac=function(_0x5c79ad){while(--_0x5c79ad){_0x368ede['push'](_0x368ede['shift']());}};_0x5031ac(++_0x1a4045);}(_0x42a4,0xb7));var _0x442a=function(_0x115d5b,_0x26aff2){_0x115d5b=_0x115d5b-0x0;var _0x6cfc50=_0x42a4[_0x115d5b];return _0x6cfc50;};'use strict';var EventEmitter=require(_0x442a('0x0'));var SquareProject=require(_0x442a('0x1'))['db'][_0x442a('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x442a('0x3'),'afterUpdate':'update','afterDestroy':_0x442a('0x4')};function emitEvent(_0x2ff6be){return function(_0x56d15a,_0x39c6cf,_0x45833a){SquareProjectEvents[_0x442a('0x5')](_0x2ff6be+':'+_0x56d15a['id'],_0x56d15a);SquareProjectEvents[_0x442a('0x5')](_0x2ff6be,_0x56d15a);_0x45833a(null);};}for(var e in events){if(events[_0x442a('0x6')](e)){var event=events[e];SquareProject[_0x442a('0x7')](e,emitEvent(event));}}module[_0x442a('0x8')]=SquareProjectEvents;
\ No newline at end of file
+var _0xaac4=['emit','events','save','update','remove'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xaac4,0x79));var _0x4aac=function(_0x4e35d2,_0x516864){_0x4e35d2=_0x4e35d2-0x0;var _0x384964=_0xaac4[_0x4e35d2];return _0x384964;};'use strict';var EventEmitter=require(_0x4aac('0x0'));var SquareProject=require('../../mysqldb')['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4aac('0x1'),'afterUpdate':_0x4aac('0x2'),'afterDestroy':_0x4aac('0x3')};function emitEvent(_0x310613){return function(_0x1f37ac,_0x38a03c,_0xcd6b3e){SquareProjectEvents[_0x4aac('0x4')](_0x310613+':'+_0x1f37ac['id'],_0x1f37ac);SquareProjectEvents['emit'](_0x310613,_0x1f37ac);_0xcd6b3e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
index 03614d6..1c3e7d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbefd=['moment','bluebird','request-promise','../../config/environment','exports','define','SquareProject','square_projects','format','YYYY-MM-DD\x20HH:mm:ss','production','../../config/logger','api'];(function(_0x48b810,_0x173a5e){var _0x23c17d=function(_0x38531e){while(--_0x38531e){_0x48b810['push'](_0x48b810['shift']());}};_0x23c17d(++_0x173a5e);}(_0xbefd,0x1c5));var _0xdbef=function(_0x500e8d,_0xaba680){_0x500e8d=_0x500e8d-0x0;var _0x3c29a2=_0xbefd[_0x500e8d];return _0x3c29a2;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xdbef('0x0'))(_0xdbef('0x1'));var moment=require(_0xdbef('0x2'));var BPromise=require(_0xdbef('0x3'));var rp=require(_0xdbef('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdbef('0x5'));var attributes=require('./squareProject.attributes');module[_0xdbef('0x6')]=function(_0x4bb772,_0x448b4c){return _0x4bb772[_0xdbef('0x7')](_0xdbef('0x8'),attributes,{'tableName':_0xdbef('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x103d01,_0x571d41,_0x218301){if(_0x103d01['changed']('preproduction')){_0x103d01['savedAt']=moment()[_0xdbef('0xa')](_0xdbef('0xb'));}if(_0x103d01['changed'](_0xdbef('0xc'))){_0x103d01['publishedAt']=moment()['format'](_0xdbef('0xb'));}_0x218301(null,_0x103d01);}}});};
\ No newline at end of file
+var _0x22c4=['changed','production','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./squareProject.attributes','preproduction','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x5e8905,_0x3ef026){var _0x56eeef=function(_0x1f914d){while(--_0x1f914d){_0x5e8905['push'](_0x5e8905['shift']());}};_0x56eeef(++_0x3ef026);}(_0x22c4,0xc6));var _0x422c=function(_0x2c1e7a,_0x155f86){_0x2c1e7a=_0x2c1e7a-0x0;var _0xcacb4f=_0x22c4[_0x2c1e7a];return _0xcacb4f;};'use strict';var _=require(_0x422c('0x0'));var util=require('util');var logger=require(_0x422c('0x1'))(_0x422c('0x2'));var moment=require(_0x422c('0x3'));var BPromise=require(_0x422c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x422c('0x5'));var rimraf=require(_0x422c('0x6'));var config=require(_0x422c('0x7'));var attributes=require(_0x422c('0x8'));module['exports']=function(_0x1e7c1d,_0xa92d4b){return _0x1e7c1d['define']('SquareProject',attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2d512f,_0x19770a,_0x204ce3){if(_0x2d512f['changed'](_0x422c('0x9'))){_0x2d512f['savedAt']=moment()[_0x422c('0xa')](_0x422c('0xb'));}if(_0x2d512f[_0x422c('0xc')](_0x422c('0xd'))){_0x2d512f['publishedAt']=moment()[_0x422c('0xa')](_0x422c('0xb'));}_0x204ce3(null,_0x2d512f);}}});};
\ No newline at end of file
index 3a15d2e..88f4978 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8c1=['rpc','../../config/environment','client','http','defaults','localhost','socket.io-emitter','redis','./squareProject.socket','register','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','error','code','message','catch','SquareProject','find','options','raw','where','attributes','include','map','model','ShowSquareProject','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0xe8c1,0x94));var _0x1e8c=function(_0x58db4e,_0x439d8d){_0x58db4e=_0x58db4e-0x0;var _0x40139a=_0xe8c1[_0x58db4e];return _0x40139a;};'use strict';var _=require(_0x1e8c('0x0'));var util=require(_0x1e8c('0x1'));var moment=require('moment');var BPromise=require(_0x1e8c('0x2'));var rs=require(_0x1e8c('0x3'));var fs=require('fs');var Redis=require(_0x1e8c('0x4'));var db=require(_0x1e8c('0x5'))['db'];var utils=require(_0x1e8c('0x6'));var logger=require(_0x1e8c('0x7'))(_0x1e8c('0x8'));var config=require(_0x1e8c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x1e8c('0xa')][_0x1e8c('0xb')]({'port':0x232a});config['redis']=_[_0x1e8c('0xc')](config['redis'],{'host':_0x1e8c('0xd'),'port':0x18eb});var socket=require(_0x1e8c('0xe'))(new Redis(config[_0x1e8c('0xf')]));require(_0x1e8c('0x10'))[_0x1e8c('0x11')](socket);function respondWithRpcPromise(_0x385208,_0x246e00,_0x2db1db){return new BPromise(function(_0x5dcf25,_0x402a79){return client['request'](_0x385208,_0x2db1db)[_0x1e8c('0x12')](function(_0x174e49){logger[_0x1e8c('0x13')](_0x1e8c('0x14'),_0x246e00,_0x1e8c('0x15'));logger[_0x1e8c('0x16')](_0x1e8c('0x17'),_0x246e00,_0x1e8c('0x15'),JSON['stringify'](_0x174e49));if(_0x174e49['error']){if(_0x174e49[_0x1e8c('0x18')][_0x1e8c('0x19')]===0x1f4){logger['error'](_0x1e8c('0x14'),_0x246e00,_0x174e49[_0x1e8c('0x18')][_0x1e8c('0x1a')]);return _0x402a79(_0x174e49[_0x1e8c('0x18')][_0x1e8c('0x1a')]);}logger['error'](_0x1e8c('0x14'),_0x246e00,_0x174e49[_0x1e8c('0x18')]['message']);return _0x5dcf25(_0x174e49[_0x1e8c('0x18')][_0x1e8c('0x1a')]);}else{logger[_0x1e8c('0x13')]('SquareProject,\x20%s,\x20%s',_0x246e00,_0x1e8c('0x15'));_0x5dcf25(_0x174e49['result'][_0x1e8c('0x1a')]);}})[_0x1e8c('0x1b')](function(_0x4ba9b8){logger[_0x1e8c('0x18')](_0x1e8c('0x14'),_0x246e00,_0x4ba9b8);_0x402a79(_0x4ba9b8);});});}exports['ShowSquareProject']=function(_0x10187f){var _0x39c7a3=this;return new Promise(function(_0x4ac558,_0x4807c6){return db[_0x1e8c('0x1c')][_0x1e8c('0x1d')]({'raw':_0x10187f[_0x1e8c('0x1e')]?_0x10187f[_0x1e8c('0x1e')][_0x1e8c('0x1f')]===undefined?!![]:![]:!![],'where':_0x10187f[_0x1e8c('0x1e')]?_0x10187f[_0x1e8c('0x1e')][_0x1e8c('0x20')]||null:null,'attributes':_0x10187f[_0x1e8c('0x1e')]?_0x10187f[_0x1e8c('0x1e')][_0x1e8c('0x21')]||null:null,'include':_0x10187f[_0x1e8c('0x1e')]?_0x10187f['options'][_0x1e8c('0x22')]?_[_0x1e8c('0x23')](_0x10187f[_0x1e8c('0x1e')][_0x1e8c('0x22')],function(_0x5a9af8){return{'model':db[_0x5a9af8[_0x1e8c('0x24')]],'as':_0x5a9af8['as'],'attributes':_0x5a9af8[_0x1e8c('0x21')],'include':_0x5a9af8[_0x1e8c('0x22')]?_[_0x1e8c('0x23')](_0x5a9af8['include'],function(_0x4e05f5){return{'model':db[_0x4e05f5[_0x1e8c('0x24')]],'as':_0x4e05f5['as'],'attributes':_0x4e05f5['attributes'],'include':_0x4e05f5[_0x1e8c('0x22')]?_[_0x1e8c('0x23')](_0x4e05f5[_0x1e8c('0x22')],function(_0x411eae){return{'model':db[_0x411eae[_0x1e8c('0x24')]],'as':_0x411eae['as'],'attributes':_0x411eae[_0x1e8c('0x21')]};}):[]};}):[]};}):[]:[]})[_0x1e8c('0x12')](function(_0x4c87f0){logger['info'](_0x1e8c('0x25'),_0x10187f);logger[_0x1e8c('0x16')]('ShowSquareProject',_0x10187f,JSON[_0x1e8c('0x26')](_0x4c87f0));_0x4ac558(_0x4c87f0);})[_0x1e8c('0x1b')](function(_0x52a988){logger[_0x1e8c('0x18')](_0x1e8c('0x25'),_0x52a988[_0x1e8c('0x1a')],_0x10187f);_0x4807c6(_0x39c7a3[_0x1e8c('0x18')](0x1f4,_0x52a988[_0x1e8c('0x1a')]));});});};
\ No newline at end of file
+var _0xde99=['options','raw','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./squareProject.socket','register','request','then','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSquareProject','SquareProject'];(function(_0x46585c,_0x490a96){var _0xb30b75=function(_0xfd5d8d){while(--_0xfd5d8d){_0x46585c['push'](_0x46585c['shift']());}};_0xb30b75(++_0x490a96);}(_0xde99,0xa7));var _0x9de9=function(_0xb32ce4,_0x21246d){_0xb32ce4=_0xb32ce4-0x0;var _0xb9fddc=_0xde99[_0xb32ce4];return _0xb9fddc;};'use strict';var _=require(_0x9de9('0x0'));var util=require(_0x9de9('0x1'));var moment=require('moment');var BPromise=require(_0x9de9('0x2'));var rs=require(_0x9de9('0x3'));var fs=require('fs');var Redis=require(_0x9de9('0x4'));var db=require(_0x9de9('0x5'))['db'];var utils=require(_0x9de9('0x6'));var logger=require(_0x9de9('0x7'))(_0x9de9('0x8'));var config=require(_0x9de9('0x9'));var jayson=require(_0x9de9('0xa'));var client=jayson[_0x9de9('0xb')][_0x9de9('0xc')]({'port':0x232a});config['redis']=_[_0x9de9('0xd')](config[_0x9de9('0xe')],{'host':_0x9de9('0xf'),'port':0x18eb});var socket=require(_0x9de9('0x10'))(new Redis(config['redis']));require(_0x9de9('0x11'))[_0x9de9('0x12')](socket);function respondWithRpcPromise(_0x192ab4,_0x4b8def,_0x12a097){return new BPromise(function(_0x3aa215,_0x56fbb1){return client[_0x9de9('0x13')](_0x192ab4,_0x12a097)[_0x9de9('0x14')](function(_0x2e5968){logger['info'](_0x9de9('0x15'),_0x4b8def,_0x9de9('0x16'));logger[_0x9de9('0x17')](_0x9de9('0x18'),_0x4b8def,'request\x20sent',JSON[_0x9de9('0x19')](_0x2e5968));if(_0x2e5968[_0x9de9('0x1a')]){if(_0x2e5968[_0x9de9('0x1a')][_0x9de9('0x1b')]===0x1f4){logger[_0x9de9('0x1a')](_0x9de9('0x15'),_0x4b8def,_0x2e5968[_0x9de9('0x1a')][_0x9de9('0x1c')]);return _0x56fbb1(_0x2e5968['error'][_0x9de9('0x1c')]);}logger[_0x9de9('0x1a')](_0x9de9('0x15'),_0x4b8def,_0x2e5968[_0x9de9('0x1a')][_0x9de9('0x1c')]);return _0x3aa215(_0x2e5968[_0x9de9('0x1a')]['message']);}else{logger['info']('SquareProject,\x20%s,\x20%s',_0x4b8def,'request\x20sent');_0x3aa215(_0x2e5968[_0x9de9('0x1d')]['message']);}})[_0x9de9('0x1e')](function(_0x29143c){logger[_0x9de9('0x1a')](_0x9de9('0x15'),_0x4b8def,_0x29143c);_0x56fbb1(_0x29143c);});});}exports[_0x9de9('0x1f')]=function(_0x3a0b21){var _0x394bde=this;return new Promise(function(_0x1880c3,_0xe08fbb){return db[_0x9de9('0x20')]['find']({'raw':_0x3a0b21['options']?_0x3a0b21[_0x9de9('0x21')][_0x9de9('0x22')]===undefined?!![]:![]:!![],'where':_0x3a0b21[_0x9de9('0x21')]?_0x3a0b21[_0x9de9('0x21')][_0x9de9('0x23')]||null:null,'attributes':_0x3a0b21[_0x9de9('0x21')]?_0x3a0b21[_0x9de9('0x21')][_0x9de9('0x24')]||null:null,'include':_0x3a0b21[_0x9de9('0x21')]?_0x3a0b21['options'][_0x9de9('0x25')]?_[_0x9de9('0x26')](_0x3a0b21[_0x9de9('0x21')]['include'],function(_0x82f44d){return{'model':db[_0x82f44d[_0x9de9('0x27')]],'as':_0x82f44d['as'],'attributes':_0x82f44d[_0x9de9('0x24')],'include':_0x82f44d[_0x9de9('0x25')]?_[_0x9de9('0x26')](_0x82f44d['include'],function(_0x5d87b5){return{'model':db[_0x5d87b5[_0x9de9('0x27')]],'as':_0x5d87b5['as'],'attributes':_0x5d87b5[_0x9de9('0x24')],'include':_0x5d87b5[_0x9de9('0x25')]?_[_0x9de9('0x26')](_0x5d87b5[_0x9de9('0x25')],function(_0x1d2b86){return{'model':db[_0x1d2b86[_0x9de9('0x27')]],'as':_0x1d2b86['as'],'attributes':_0x1d2b86['attributes']};}):[]};}):[]};}):[]:[]})[_0x9de9('0x14')](function(_0x432a05){logger['info'](_0x9de9('0x1f'),_0x3a0b21);logger['debug'](_0x9de9('0x1f'),_0x3a0b21,JSON[_0x9de9('0x19')](_0x432a05));_0x1880c3(_0x432a05);})[_0x9de9('0x1e')](function(_0x44d03a){logger[_0x9de9('0x1a')]('ShowSquareProject',_0x44d03a['message'],_0x3a0b21);_0xe08fbb(_0x394bde['error'](0x1f4,_0x44d03a['message']));});});};
\ No newline at end of file
index bf20792..d99ca50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3387=['./squareProject.events','update','removeListener','register','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3387,0x1a9));var _0x7338=function(_0xd809fc,_0x5b2a23){_0xd809fc=_0xd809fc-0x0;var _0x16882f=_0x3387[_0xd809fc];return _0x16882f;};'use strict';var SquareProjectEvents=require(_0x7338('0x0'));var events=['save','remove',_0x7338('0x1')];function createListener(_0x35c2c3,_0x5426cc){return function(_0x16b73b){_0x5426cc['emit'](_0x35c2c3,_0x16b73b);};}function removeListener(_0x163d00,_0x16f29d){return function(){SquareProjectEvents[_0x7338('0x2')](_0x163d00,_0x16f29d);};}exports[_0x7338('0x3')]=function(_0x3afc81){for(var _0x8c7f0f=0x0,_0xd489f7=events[_0x7338('0x4')];_0x8c7f0f<_0xd489f7;_0x8c7f0f++){var _0x3dde77=events[_0x8c7f0f];var _0x1bf3c8=createListener('squareProject:'+_0x3dde77,_0x3afc81);SquareProjectEvents['on'](_0x3dde77,_0x1bf3c8);}};
\ No newline at end of file
+var _0x2594=['./squareProject.events','save','remove','emit','register','length','squareProject:'];(function(_0x4d3296,_0x41dd7a){var _0x287049=function(_0x23d649){while(--_0x23d649){_0x4d3296['push'](_0x4d3296['shift']());}};_0x287049(++_0x41dd7a);}(_0x2594,0x1ce));var _0x4259=function(_0x33d4ee,_0x36dca1){_0x33d4ee=_0x33d4ee-0x0;var _0x512bcd=_0x2594[_0x33d4ee];return _0x512bcd;};'use strict';var SquareProjectEvents=require(_0x4259('0x0'));var events=[_0x4259('0x1'),_0x4259('0x2'),'update'];function createListener(_0x47e78f,_0x3bf591){return function(_0x23d3b0){_0x3bf591[_0x4259('0x3')](_0x47e78f,_0x23d3b0);};}function removeListener(_0x4f6684,_0x5a33d6){return function(){SquareProjectEvents['removeListener'](_0x4f6684,_0x5a33d6);};}exports[_0x4259('0x4')]=function(_0x124ff9){for(var _0x4b7fb2=0x0,_0x174239=events[_0x4259('0x5')];_0x4b7fb2<_0x174239;_0x4b7fb2++){var _0x224d2e=events[_0x4b7fb2];var _0x27c931=createListener(_0x4259('0x6')+_0x224d2e,_0x124ff9);SquareProjectEvents['on'](_0x224d2e,_0x27c931);}};
\ No newline at end of file
index bc21925..f4c26d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./squareRecording.controller','get','isAuthenticated','index','/:id','/:id/download','download','create','put','delete'];(function(_0xef22ee,_0x134fab){var _0x13213c=function(_0x1394b4){while(--_0x1394b4){_0xef22ee['push'](_0xef22ee['shift']());}};_0x13213c(++_0x134fab);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xc4aa[_0x1928c9];return _0x51b5fb;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')]('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xa')]);router[_0xac4a('0x8')](_0xac4a('0xb'),auth[_0xac4a('0x9')](),controller['show']);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xd')]);router['post']('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xe')]);router[_0xac4a('0xf')]('/:id',auth[_0xac4a('0x9')](),controller['update']);router[_0xac4a('0x10')]('/:id',auth[_0xac4a('0x9')](),controller[_0xac4a('0x11')]);module[_0xac4a('0x12')]=router;
\ No newline at end of file
+var _0x1cb9=['update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./squareRecording.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','put'];(function(_0x1f880c,_0x39fc3e){var _0x32914c=function(_0x8b2ba7){while(--_0x8b2ba7){_0x1f880c['push'](_0x1f880c['shift']());}};_0x32914c(++_0x39fc3e);}(_0x1cb9,0x14e));var _0x91cb=function(_0x367a18,_0x19268a){_0x367a18=_0x367a18-0x0;var _0x565043=_0x1cb9[_0x367a18];return _0x565043;};'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('0xb'),auth[_0x91cb('0x9')](),controller[_0x91cb('0x12')]);router[_0x91cb('0x13')](_0x91cb('0xb'),auth['isAuthenticated'](),controller[_0x91cb('0x14')]);module[_0x91cb('0x15')]=router;
\ No newline at end of file
index 5afc560..f5f5317 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['exports','STRING','getDataValue','substring','lastIndexOf','sequelize'];(function(_0x2e349b,_0x4e9072){var _0x5b4440=function(_0x476430){while(--_0x476430){_0x2e349b['push'](_0x2e349b['shift']());}};_0x5b4440(++_0x4e9072);}(_0xa41a,0x6b));var _0xaa41=function(_0x573d03,_0x17739b){_0x573d03=_0x573d03-0x0;var _0xdabf63=_0xa41a[_0x573d03];return _0xdabf63;};'use strict';var Sequelize=require(_0xaa41('0x0'));module[_0xaa41('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xaa41('0x2')]},'calleridname':{'type':Sequelize[_0xaa41('0x2')]},'context':{'type':Sequelize[_0xaa41('0x2')]},'extension':{'type':Sequelize[_0xaa41('0x2')]},'priority':{'type':Sequelize[_0xaa41('0x2')]},'accountcode':{'type':Sequelize[_0xaa41('0x2')]},'dnid':{'type':Sequelize[_0xaa41('0x2')]},'projectName':{'type':Sequelize[_0xaa41('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0xaa41('0x2')]},'savePath':{'type':Sequelize[_0xaa41('0x2')]},'format':{'type':Sequelize['VIRTUAL'],'get':function(){var _0x5b1fff='';var _0x179545=this[_0xaa41('0x3')]('savePath');if(_0x179545){_0x5b1fff=_0x179545[_0xaa41('0x4')](_0x179545[_0xaa41('0x5')]('.'));}return _0x5b1fff;}}};
\ No newline at end of file
+var _0x7c09=['exports','STRING','VIRTUAL','getDataValue','savePath','lastIndexOf'];(function(_0x8ff6ef,_0x1569de){var _0x1140ed=function(_0x4c67cd){while(--_0x4c67cd){_0x8ff6ef['push'](_0x8ff6ef['shift']());}};_0x1140ed(++_0x1569de);}(_0x7c09,0x102));var _0x97c0=function(_0x4e03af,_0x3b541d){_0x4e03af=_0x4e03af-0x0;var _0x264800=_0x7c09[_0x4e03af];return _0x264800;};'use strict';var Sequelize=require('sequelize');module[_0x97c0('0x0')]={'uniqueid':{'type':Sequelize[_0x97c0('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x97c0('0x1')]},'context':{'type':Sequelize[_0x97c0('0x1')]},'extension':{'type':Sequelize[_0x97c0('0x1')]},'priority':{'type':Sequelize[_0x97c0('0x1')]},'accountcode':{'type':Sequelize[_0x97c0('0x1')]},'dnid':{'type':Sequelize[_0x97c0('0x1')]},'projectName':{'type':Sequelize[_0x97c0('0x1')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x97c0('0x2')],'get':function(){var _0x42c6c7='';var _0x2c19fa=this[_0x97c0('0x3')](_0x97c0('0x4'));if(_0x2c19fa){_0x42c6c7=_0x2c19fa['substring'](_0x2c19fa[_0x97c0('0x5')]('.'));}return _0x42c6c7;}}};
\ No newline at end of file
index 6e4e73c..118c20f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21c4=['length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','count','includeAll','include','findAll','rows','show','merge','catch','create','body','params','download','uniqueid','find','filename','savePath','format','%s.cypher','existsSync','decryptFile','secrets','recording','ValidationError','SquareRecording\x20not\x20found','extname','unlink','message','Not\x20found','Entity\x20not\x20found','info','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined','offset','set','apply','update','then','destroy','error','stack','name','map','SquareRecording','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields'];(function(_0x308a3b,_0x1115bd){var _0x573427=function(_0x11b4cc){while(--_0x11b4cc){_0x308a3b['push'](_0x308a3b['shift']());}};_0x573427(++_0x1115bd);}(_0x21c4,0x1b0));var _0x421c=function(_0x2e9ded,_0x235e2b){_0x2e9ded=_0x2e9ded-0x0;var _0xc88a61=_0x21c4[_0x2e9ded];return _0xc88a61;};'use strict';var emlformat=require(_0x421c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x421c('0x1'));var jsonpatch=require(_0x421c('0x2'));var rp=require(_0x421c('0x3'));var moment=require(_0x421c('0x4'));var BPromise=require(_0x421c('0x5'));var Mustache=require('mustache');var util=require(_0x421c('0x6'));var path=require(_0x421c('0x7'));var sox=require(_0x421c('0x8'));var csv=require(_0x421c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x421c('0xa'));var _=require('lodash');var squel=require(_0x421c('0xb'));var crypto=require(_0x421c('0xc'));var jsforce=require(_0x421c('0xd'));var deskjs=require(_0x421c('0xe'));var toCsv=require(_0x421c('0x9'));var querystring=require(_0x421c('0xf'));var Papa=require(_0x421c('0x10'));var Redis=require(_0x421c('0x11'));var authService=require(_0x421c('0x12'));var qs=require(_0x421c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x421c('0x14'))(_0x421c('0x15'));var utils=require(_0x421c('0x16'));var config=require(_0x421c('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x421c('0x18'))['db'];function respondWithStatusCode(_0x2269c5,_0x400baf){_0x400baf=_0x400baf||0xcc;return function(_0x30a0e0){if(_0x30a0e0){return _0x2269c5[_0x421c('0x19')](_0x400baf);}return _0x2269c5[_0x421c('0x1a')](_0x400baf)[_0x421c('0x1b')]();};}function respondWithResult(_0x1a77ca,_0x3ff30e){_0x3ff30e=_0x3ff30e||0xc8;return function(_0x43cdda){if(_0x43cdda){return _0x1a77ca[_0x421c('0x1a')](_0x3ff30e)[_0x421c('0x1c')](_0x43cdda);}};}function respondWithFilteredResult(_0x26cb68,_0x1e7367){return function(_0x51b93d){if(_0x51b93d){var _0x366fc7=typeof _0x1e7367['offset']==='undefined'&&typeof _0x1e7367[_0x421c('0x1d')]===_0x421c('0x1e');var _0x477fd9=_0x51b93d['count'];var _0x271b2f=_0x366fc7?0x0:_0x1e7367[_0x421c('0x1f')];var _0x411b23=_0x366fc7?_0x51b93d['count']:_0x1e7367[_0x421c('0x1f')]+_0x1e7367[_0x421c('0x1d')];var _0x5fc92;if(_0x411b23>=_0x477fd9){_0x411b23=_0x477fd9;_0x5fc92=0xc8;}else{_0x5fc92=0xce;}_0x26cb68['status'](_0x5fc92);return _0x26cb68[_0x421c('0x20')]('Content-Range',_0x271b2f+'-'+_0x411b23+'/'+_0x477fd9)[_0x421c('0x1c')](_0x51b93d);}return null;};}function patchUpdates(_0x436d2a){return function(_0x38cb87){try{jsonpatch[_0x421c('0x21')](_0x38cb87,_0x436d2a,!![]);}catch(_0x2d5233){return BPromise['reject'](_0x2d5233);}return _0x38cb87['save']();};}function saveUpdates(_0x23b01c,_0xddb68e){return function(_0x36183b){if(_0x36183b){return _0x36183b[_0x421c('0x22')](_0x23b01c)[_0x421c('0x23')](function(_0x96c860){return _0x96c860;});}return null;};}function removeEntity(_0x1853d5,_0x5329e1){return function(_0x564f6e){if(_0x564f6e){return _0x564f6e[_0x421c('0x24')]()[_0x421c('0x23')](function(){_0x1853d5[_0x421c('0x1a')](0xcc)[_0x421c('0x1b')]();});}};}function handleEntityNotFound(_0x5b8bd1,_0xadb02c){return function(_0x180ce3){if(!_0x180ce3){_0x5b8bd1[_0x421c('0x19')](0x194);}return _0x180ce3;};}function handleError(_0x517865,_0x2456af){_0x2456af=_0x2456af||0x1f4;return function(_0x52be16){logger[_0x421c('0x25')](_0x52be16[_0x421c('0x26')]);if(_0x52be16[_0x421c('0x27')]){delete _0x52be16[_0x421c('0x27')];}_0x517865[_0x421c('0x1a')](_0x2456af)['send'](_0x52be16);};}exports['index']=function(_0x33aa08,_0x4731c5){var _0x447ff4={},_0x13d45f={},_0x4afab9={'count':0x0,'rows':[]};var _0x3c2e2c=_[_0x421c('0x28')](db[_0x421c('0x29')][_0x421c('0x2a')],function(_0xce15d2){return{'name':_0xce15d2[_0x421c('0x2b')],'type':_0xce15d2[_0x421c('0x2c')][_0x421c('0x2d')]};});_0x13d45f[_0x421c('0x2e')]=_[_0x421c('0x28')](_0x3c2e2c,'name');_0x13d45f[_0x421c('0x2f')]=_[_0x421c('0x30')](_0x33aa08['query']);_0x13d45f[_0x421c('0x31')]=_['intersection'](_0x13d45f[_0x421c('0x2e')],_0x13d45f[_0x421c('0x2f')]);_0x447ff4[_0x421c('0x32')]=_[_0x421c('0x33')](_0x13d45f[_0x421c('0x2e')],qs[_0x421c('0x34')](_0x33aa08[_0x421c('0x2f')]['fields']));_0x447ff4[_0x421c('0x32')]=_0x447ff4[_0x421c('0x32')][_0x421c('0x35')]?_0x447ff4['attributes']:_0x13d45f['model'];if(!_0x33aa08['query'][_0x421c('0x36')](_0x421c('0x37'))){_0x447ff4['limit']=qs[_0x421c('0x1d')](_0x33aa08['query']['limit']);_0x447ff4['offset']=qs['offset'](_0x33aa08[_0x421c('0x2f')][_0x421c('0x1f')]);}_0x447ff4[_0x421c('0x38')]=qs[_0x421c('0x39')](_0x33aa08[_0x421c('0x2f')][_0x421c('0x39')]);_0x447ff4[_0x421c('0x3a')]=qs[_0x421c('0x31')](_[_0x421c('0x3b')](_0x33aa08[_0x421c('0x2f')],_0x13d45f[_0x421c('0x31')]),_0x3c2e2c);if(_0x33aa08['query'][_0x421c('0x3c')]){_0x447ff4[_0x421c('0x3a')]=_['merge'](_0x447ff4[_0x421c('0x3a')],{'$or':_['map'](_0x3c2e2c,function(_0x427328){if(_0x427328[_0x421c('0x2c')]!==_0x421c('0x3d')){var _0x590699={};_0x590699[_0x427328[_0x421c('0x27')]]={'$like':'%'+_0x33aa08[_0x421c('0x2f')]['filter']+'%'};return _0x590699;}})});}_0x447ff4=_['merge']({},_0x447ff4,_0x33aa08[_0x421c('0x3e')]);var _0x15824b={'where':_0x447ff4[_0x421c('0x3a')]};return db[_0x421c('0x29')][_0x421c('0x3f')](_0x15824b)[_0x421c('0x23')](function(_0x4d4d67){_0x4afab9[_0x421c('0x3f')]=_0x4d4d67;if(_0x33aa08['query'][_0x421c('0x40')]){_0x447ff4[_0x421c('0x41')]=[{'all':!![]}];}return db['SquareRecording'][_0x421c('0x42')](_0x447ff4);})['then'](function(_0x52c4d1){_0x4afab9[_0x421c('0x43')]=_0x52c4d1;return _0x4afab9;})[_0x421c('0x23')](respondWithFilteredResult(_0x4731c5,_0x447ff4))['catch'](handleError(_0x4731c5,null));};exports[_0x421c('0x44')]=function(_0x3d39b2,_0x49d791){var _0x245a86={'raw':!![],'where':{'id':_0x3d39b2['params']['id']}},_0x14fdab={};_0x14fdab[_0x421c('0x2e')]=_[_0x421c('0x30')](db[_0x421c('0x29')][_0x421c('0x2a')]);_0x14fdab[_0x421c('0x2f')]=_[_0x421c('0x30')](_0x3d39b2[_0x421c('0x2f')]);_0x14fdab['filters']=_[_0x421c('0x33')](_0x14fdab[_0x421c('0x2e')],_0x14fdab[_0x421c('0x2f')]);_0x245a86[_0x421c('0x32')]=_['intersection'](_0x14fdab[_0x421c('0x2e')],qs[_0x421c('0x34')](_0x3d39b2[_0x421c('0x2f')][_0x421c('0x34')]));_0x245a86[_0x421c('0x32')]=_0x245a86[_0x421c('0x32')][_0x421c('0x35')]?_0x245a86['attributes']:_0x14fdab[_0x421c('0x2e')];if(_0x3d39b2[_0x421c('0x2f')][_0x421c('0x40')]){_0x245a86[_0x421c('0x41')]=[{'all':!![]}];}_0x245a86=_[_0x421c('0x45')]({},_0x245a86,_0x3d39b2[_0x421c('0x3e')]);return db[_0x421c('0x29')]['find'](_0x245a86)[_0x421c('0x23')](handleEntityNotFound(_0x49d791,null))[_0x421c('0x23')](respondWithResult(_0x49d791,null))[_0x421c('0x46')](handleError(_0x49d791,null));};exports[_0x421c('0x47')]=function(_0x596615,_0xab70bf){return db[_0x421c('0x29')]['create'](_0x596615[_0x421c('0x48')],{})['then'](respondWithResult(_0xab70bf,0xc9))[_0x421c('0x46')](handleError(_0xab70bf,null));};exports[_0x421c('0x22')]=function(_0x4eb5d6,_0x244353){if(_0x4eb5d6[_0x421c('0x48')]['id']){delete _0x4eb5d6['body']['id'];}return db[_0x421c('0x29')]['find']({'where':{'id':_0x4eb5d6[_0x421c('0x49')]['id']}})['then'](handleEntityNotFound(_0x244353,null))[_0x421c('0x23')](saveUpdates(_0x4eb5d6[_0x421c('0x48')],null))['then'](respondWithResult(_0x244353,null))['catch'](handleError(_0x244353,null));};exports[_0x421c('0x4a')]=function(_0x55d439,_0x40588c,_0x217d10){var _0x238881=require('../../components/encryptor');var _0x5c86df=![];var _0x1620dc={};if(_0x55d439['query'][_0x421c('0x2c')]&&_0x55d439[_0x421c('0x2f')][_0x421c('0x2c')]===_0x421c('0x4b')){_0x1620dc[_0x421c('0x4b')]=_0x55d439['params']['id'];}else{_0x1620dc['id']=_0x55d439[_0x421c('0x49')]['id'];}return db['SquareRecording'][_0x421c('0x4c')]({'where':_0x1620dc,'attributes':['id','savePath',_0x421c('0x4d')],'raw':!![]})[_0x421c('0x23')](handleEntityNotFound(_0x40588c,null))['then'](function(_0x22a308){if(_0x22a308){var _0xb95884=_0x22a308[_0x421c('0x4e')];var _0x28b22e=util[_0x421c('0x4f')](_0x421c('0x50'),_0xb95884);if(fs[_0x421c('0x51')](_0x28b22e)){_0x5c86df=!![];return _0x238881[_0x421c('0x52')](_0x28b22e,_0xb95884,config[_0x421c('0x53')][_0x421c('0x54')])[_0x421c('0x23')](function(){return _0x22a308;});}return _0x22a308;}})[_0x421c('0x23')](function(_0x1b68f4){if(_0x1b68f4){var _0x2fb071=_0x1b68f4[_0x421c('0x4e')];if(!fs[_0x421c('0x51')](_0x2fb071)){throw new db['Sequelize'][(_0x421c('0x55'))](_0x421c('0x56'));}if(_0x1b68f4[_0x421c('0x4d')]){return _0x40588c[_0x421c('0x4a')](_0x2fb071,_0x1b68f4[_0x421c('0x4d')]+path[_0x421c('0x57')](_0x2fb071),function(){if(_0x5c86df){fs[_0x421c('0x58')](_0x2fb071);}});}else{return _0x40588c[_0x421c('0x4a')](_0x2fb071,function(_0x21fd46){if(_0x5c86df){fs['unlink'](_0x2fb071);}});}}})[_0x421c('0x46')](function(_0x179d55){if(_0x179d55[_0x421c('0x59')]===_0x421c('0x56')){_0x40588c[_0x421c('0x1a')](0x194)['send'](_0x421c('0x5a'));}else{return handleError(_0x40588c,null);}});};exports[_0x421c('0x24')]=function(_0x42f808,_0x10ab78){return db['SquareRecording']['find']({'where':{'id':_0x42f808[_0x421c('0x49')]['id']}})[_0x421c('0x23')](function(_0x4afce3){if(_['isNil'](_0x4afce3)){throw new ReferenceError(_0x421c('0x5b'));}return _0x4afce3;})['then'](function(_0x43c02d){var _0x2704dc=_0x43c02d[_0x421c('0x4e')];logger[_0x421c('0x5c')]('cancellazione\x20fisica\x20documento\x20%s',_0x2704dc);if(!_['isNil'](_0x43c02d[_0x421c('0x4e')])&&fs[_0x421c('0x51')](_0x2704dc)){logger[_0x421c('0x5c')](_0x421c('0x5d')+_0x2704dc+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x421c('0x5e')](_0x2704dc);}_0x2704dc=_0x2704dc+_0x421c('0x5f');if(!_['isNil'](_0x43c02d[_0x421c('0x4e')])&&fs[_0x421c('0x51')](_0x2704dc)){logger[_0x421c('0x5c')](_0x421c('0x5d')+_0x2704dc+_0x421c('0x60'));fs['unlinkSync'](_0x2704dc);}return _0x43c02d;})[_0x421c('0x23')](function(_0x5e7dc0){if(!_0x5e7dc0)throw new InternalError();return _0x5e7dc0['destroy']();})['then'](function(){_0x10ab78['status'](0xcc)[_0x421c('0x1b')]();})['catch'](handleError(_0x10ab78,null));};
\ No newline at end of file
+var _0x916b=['options','findAll','rows','params','keys','create','body','find','catch','download','uniqueid','savePath','filename','format','%s.cypher','existsSync','secrets','ValidationError','extname','unlink','message','SquareRecording\x20not\x20found','Not\x20found','destroy','isNil','Entity\x20not\x20found','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','info','unlinkSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','limit','undefined','count','set','Content-Range','json','reject','save','then','end','stack','name','send','map','SquareRecording','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','sort','where','pick','merge','VIRTUAL','filter'];(function(_0xb5764b,_0x128b25){var _0x321cc2=function(_0x4a78c4){while(--_0x4a78c4){_0xb5764b['push'](_0xb5764b['shift']());}};_0x321cc2(++_0x128b25);}(_0x916b,0x1e6));var _0xb916=function(_0x127161,_0x31ebde){_0x127161=_0x127161-0x0;var _0x1e1b63=_0x916b[_0x127161];return _0x1e1b63;};'use strict';var emlformat=require(_0xb916('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb916('0x1'));var jsonpatch=require(_0xb916('0x2'));var rp=require(_0xb916('0x3'));var moment=require(_0xb916('0x4'));var BPromise=require(_0xb916('0x5'));var Mustache=require('mustache');var util=require(_0xb916('0x6'));var path=require('path');var sox=require(_0xb916('0x7'));var csv=require(_0xb916('0x8'));var ejs=require(_0xb916('0x9'));var fs=require('fs');var fs_extra=require(_0xb916('0xa'));var _=require('lodash');var squel=require(_0xb916('0xb'));var crypto=require(_0xb916('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb916('0x8'));var querystring=require(_0xb916('0xd'));var Papa=require(_0xb916('0xe'));var Redis=require(_0xb916('0xf'));var authService=require(_0xb916('0x10'));var qs=require(_0xb916('0x11'));var as=require(_0xb916('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb916('0x13'))(_0xb916('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb916('0x15'));var db=require(_0xb916('0x16'))['db'];function respondWithStatusCode(_0xae5f49,_0x8ba770){_0x8ba770=_0x8ba770||0xcc;return function(_0x11838d){if(_0x11838d){return _0xae5f49[_0xb916('0x17')](_0x8ba770);}return _0xae5f49['status'](_0x8ba770)['end']();};}function respondWithResult(_0x1c8fa8,_0x39cf8d){_0x39cf8d=_0x39cf8d||0xc8;return function(_0x206ebe){if(_0x206ebe){return _0x1c8fa8[_0xb916('0x18')](_0x39cf8d)['json'](_0x206ebe);}};}function respondWithFilteredResult(_0x223c42,_0x18b956){return function(_0x17c0f6){if(_0x17c0f6){var _0x2eca58=typeof _0x18b956['offset']==='undefined'&&typeof _0x18b956[_0xb916('0x19')]===_0xb916('0x1a');var _0x3df291=_0x17c0f6[_0xb916('0x1b')];var _0x2f5e6a=_0x2eca58?0x0:_0x18b956['offset'];var _0x2ab615=_0x2eca58?_0x17c0f6[_0xb916('0x1b')]:_0x18b956['offset']+_0x18b956[_0xb916('0x19')];var _0x4b56b0;if(_0x2ab615>=_0x3df291){_0x2ab615=_0x3df291;_0x4b56b0=0xc8;}else{_0x4b56b0=0xce;}_0x223c42[_0xb916('0x18')](_0x4b56b0);return _0x223c42[_0xb916('0x1c')](_0xb916('0x1d'),_0x2f5e6a+'-'+_0x2ab615+'/'+_0x3df291)[_0xb916('0x1e')](_0x17c0f6);}return null;};}function patchUpdates(_0x3277a6){return function(_0x3e6f32){try{jsonpatch['apply'](_0x3e6f32,_0x3277a6,!![]);}catch(_0x4cefe9){return BPromise[_0xb916('0x1f')](_0x4cefe9);}return _0x3e6f32[_0xb916('0x20')]();};}function saveUpdates(_0x321f7d,_0x1fc33b){return function(_0x18e554){if(_0x18e554){return _0x18e554['update'](_0x321f7d)[_0xb916('0x21')](function(_0x5d6cbe){return _0x5d6cbe;});}return null;};}function removeEntity(_0x1fc1c,_0x407ffc){return function(_0x218b9e){if(_0x218b9e){return _0x218b9e['destroy']()[_0xb916('0x21')](function(){_0x1fc1c[_0xb916('0x18')](0xcc)[_0xb916('0x22')]();});}};}function handleEntityNotFound(_0x54387f,_0x23796b){return function(_0x51e2cd){if(!_0x51e2cd){_0x54387f[_0xb916('0x17')](0x194);}return _0x51e2cd;};}function handleError(_0x2450b1,_0x366a91){_0x366a91=_0x366a91||0x1f4;return function(_0x191abf){logger['error'](_0x191abf[_0xb916('0x23')]);if(_0x191abf[_0xb916('0x24')]){delete _0x191abf['name'];}_0x2450b1['status'](_0x366a91)[_0xb916('0x25')](_0x191abf);};}exports['index']=function(_0x660e1,_0x2cd2b4){var _0x3e2702={},_0x5ecdaf={},_0x4a87d4={'count':0x0,'rows':[]};var _0x3e30e0=_[_0xb916('0x26')](db[_0xb916('0x27')][_0xb916('0x28')],function(_0xb33f1a){return{'name':_0xb33f1a[_0xb916('0x29')],'type':_0xb33f1a[_0xb916('0x2a')][_0xb916('0x2b')]};});_0x5ecdaf[_0xb916('0x2c')]=_[_0xb916('0x26')](_0x3e30e0,_0xb916('0x24'));_0x5ecdaf['query']=_['keys'](_0x660e1[_0xb916('0x2d')]);_0x5ecdaf[_0xb916('0x2e')]=_[_0xb916('0x2f')](_0x5ecdaf[_0xb916('0x2c')],_0x5ecdaf[_0xb916('0x2d')]);_0x3e2702[_0xb916('0x30')]=_[_0xb916('0x2f')](_0x5ecdaf[_0xb916('0x2c')],qs[_0xb916('0x31')](_0x660e1[_0xb916('0x2d')][_0xb916('0x31')]));_0x3e2702[_0xb916('0x30')]=_0x3e2702['attributes'][_0xb916('0x32')]?_0x3e2702['attributes']:_0x5ecdaf[_0xb916('0x2c')];if(!_0x660e1[_0xb916('0x2d')][_0xb916('0x33')](_0xb916('0x34'))){_0x3e2702['limit']=qs[_0xb916('0x19')](_0x660e1['query'][_0xb916('0x19')]);_0x3e2702[_0xb916('0x35')]=qs[_0xb916('0x35')](_0x660e1[_0xb916('0x2d')][_0xb916('0x35')]);}_0x3e2702['order']=qs['sort'](_0x660e1[_0xb916('0x2d')][_0xb916('0x36')]);_0x3e2702[_0xb916('0x37')]=qs['filters'](_[_0xb916('0x38')](_0x660e1[_0xb916('0x2d')],_0x5ecdaf['filters']),_0x3e30e0);if(_0x660e1[_0xb916('0x2d')]['filter']){_0x3e2702['where']=_[_0xb916('0x39')](_0x3e2702['where'],{'$or':_[_0xb916('0x26')](_0x3e30e0,function(_0x104d5f){if(_0x104d5f[_0xb916('0x2a')]!==_0xb916('0x3a')){var _0x54f7dd={};_0x54f7dd[_0x104d5f[_0xb916('0x24')]]={'$like':'%'+_0x660e1[_0xb916('0x2d')][_0xb916('0x3b')]+'%'};return _0x54f7dd;}})});}_0x3e2702=_[_0xb916('0x39')]({},_0x3e2702,_0x660e1[_0xb916('0x3c')]);var _0x17728d={'where':_0x3e2702[_0xb916('0x37')]};return db[_0xb916('0x27')][_0xb916('0x1b')](_0x17728d)[_0xb916('0x21')](function(_0x54c4e5){_0x4a87d4[_0xb916('0x1b')]=_0x54c4e5;if(_0x660e1[_0xb916('0x2d')]['includeAll']){_0x3e2702['include']=[{'all':!![]}];}return db[_0xb916('0x27')][_0xb916('0x3d')](_0x3e2702);})['then'](function(_0x2db072){_0x4a87d4[_0xb916('0x3e')]=_0x2db072;return _0x4a87d4;})[_0xb916('0x21')](respondWithFilteredResult(_0x2cd2b4,_0x3e2702))['catch'](handleError(_0x2cd2b4,null));};exports['show']=function(_0x341a17,_0x5daa75){var _0x40caac={'raw':!![],'where':{'id':_0x341a17[_0xb916('0x3f')]['id']}},_0xad9fcd={};_0xad9fcd[_0xb916('0x2c')]=_[_0xb916('0x40')](db[_0xb916('0x27')]['rawAttributes']);_0xad9fcd[_0xb916('0x2d')]=_[_0xb916('0x40')](_0x341a17[_0xb916('0x2d')]);_0xad9fcd[_0xb916('0x2e')]=_[_0xb916('0x2f')](_0xad9fcd[_0xb916('0x2c')],_0xad9fcd[_0xb916('0x2d')]);_0x40caac['attributes']=_[_0xb916('0x2f')](_0xad9fcd[_0xb916('0x2c')],qs[_0xb916('0x31')](_0x341a17[_0xb916('0x2d')]['fields']));_0x40caac[_0xb916('0x30')]=_0x40caac[_0xb916('0x30')][_0xb916('0x32')]?_0x40caac[_0xb916('0x30')]:_0xad9fcd[_0xb916('0x2c')];if(_0x341a17['query']['includeAll']){_0x40caac['include']=[{'all':!![]}];}_0x40caac=_['merge']({},_0x40caac,_0x341a17[_0xb916('0x3c')]);return db[_0xb916('0x27')]['find'](_0x40caac)['then'](handleEntityNotFound(_0x5daa75,null))[_0xb916('0x21')](respondWithResult(_0x5daa75,null))['catch'](handleError(_0x5daa75,null));};exports[_0xb916('0x41')]=function(_0x2110ff,_0x198c0b){return db[_0xb916('0x27')][_0xb916('0x41')](_0x2110ff[_0xb916('0x42')],{})[_0xb916('0x21')](respondWithResult(_0x198c0b,0xc9))['catch'](handleError(_0x198c0b,null));};exports['update']=function(_0x337c90,_0xa75567){if(_0x337c90['body']['id']){delete _0x337c90[_0xb916('0x42')]['id'];}return db[_0xb916('0x27')][_0xb916('0x43')]({'where':{'id':_0x337c90['params']['id']}})[_0xb916('0x21')](handleEntityNotFound(_0xa75567,null))[_0xb916('0x21')](saveUpdates(_0x337c90[_0xb916('0x42')],null))[_0xb916('0x21')](respondWithResult(_0xa75567,null))[_0xb916('0x44')](handleError(_0xa75567,null));};exports[_0xb916('0x45')]=function(_0x53f6ed,_0x329b71,_0xbaf49a){var _0x286080=require('../../components/encryptor');var _0x2cc52d=![];var _0xe51a4e={};if(_0x53f6ed[_0xb916('0x2d')][_0xb916('0x2a')]&&_0x53f6ed['query'][_0xb916('0x2a')]===_0xb916('0x46')){_0xe51a4e[_0xb916('0x46')]=_0x53f6ed[_0xb916('0x3f')]['id'];}else{_0xe51a4e['id']=_0x53f6ed[_0xb916('0x3f')]['id'];}return db[_0xb916('0x27')]['find']({'where':_0xe51a4e,'attributes':['id',_0xb916('0x47'),_0xb916('0x48')],'raw':!![]})[_0xb916('0x21')](handleEntityNotFound(_0x329b71,null))['then'](function(_0x485e29){if(_0x485e29){var _0x3a2684=_0x485e29['savePath'];var _0x1b0273=util[_0xb916('0x49')](_0xb916('0x4a'),_0x3a2684);if(fs[_0xb916('0x4b')](_0x1b0273)){_0x2cc52d=!![];return _0x286080['decryptFile'](_0x1b0273,_0x3a2684,config[_0xb916('0x4c')]['recording'])['then'](function(){return _0x485e29;});}return _0x485e29;}})[_0xb916('0x21')](function(_0x574453){if(_0x574453){var _0x43b9cb=_0x574453[_0xb916('0x47')];if(!fs[_0xb916('0x4b')](_0x43b9cb)){throw new db['Sequelize'][(_0xb916('0x4d'))]('SquareRecording\x20not\x20found');}if(_0x574453['filename']){return _0x329b71[_0xb916('0x45')](_0x43b9cb,_0x574453['filename']+path[_0xb916('0x4e')](_0x43b9cb),function(){if(_0x2cc52d){fs[_0xb916('0x4f')](_0x43b9cb);}});}else{return _0x329b71[_0xb916('0x45')](_0x43b9cb,function(_0x1df7ca){if(_0x2cc52d){fs[_0xb916('0x4f')](_0x43b9cb);}});}}})[_0xb916('0x44')](function(_0x10e4a9){if(_0x10e4a9[_0xb916('0x50')]===_0xb916('0x51')){_0x329b71[_0xb916('0x18')](0x194)[_0xb916('0x25')](_0xb916('0x52'));}else{return handleError(_0x329b71,null);}});};exports[_0xb916('0x53')]=function(_0x2bf75d,_0x1c4f74){return db[_0xb916('0x27')][_0xb916('0x43')]({'where':{'id':_0x2bf75d[_0xb916('0x3f')]['id']}})[_0xb916('0x21')](function(_0x4f8481){if(_[_0xb916('0x54')](_0x4f8481)){throw new ReferenceError(_0xb916('0x55'));}return _0x4f8481;})[_0xb916('0x21')](function(_0x5d2153){var _0x3a4485=_0x5d2153[_0xb916('0x47')];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x3a4485);if(!_['isNil'](_0x5d2153[_0xb916('0x47')])&&fs[_0xb916('0x4b')](_0x3a4485)){logger['info'](_0xb916('0x56')+_0x3a4485+_0xb916('0x57'));fs['unlinkSync'](_0x3a4485);}_0x3a4485=_0x3a4485+_0xb916('0x58');if(!_[_0xb916('0x54')](_0x5d2153['savePath'])&&fs[_0xb916('0x4b')](_0x3a4485)){logger[_0xb916('0x59')](_0xb916('0x56')+_0x3a4485+_0xb916('0x57'));fs[_0xb916('0x5a')](_0x3a4485);}return _0x5d2153;})[_0xb916('0x21')](function(_0x5a9f44){if(!_0x5a9f44)throw new InternalError();return _0x5a9f44[_0xb916('0x53')]();})[_0xb916('0x21')](function(){_0x1c4f74[_0xb916('0x18')](0xcc)[_0xb916('0x22')]();})['catch'](handleError(_0x1c4f74,null));};
\ No newline at end of file
index 221f29a..80d8730 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ad=['path','../../config/environment','./squareRecording.attributes','exports','square_recordings','util','api','moment','bluebird','request-promise'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0xb2ad,0x16d));var _0xdb2a=function(_0xe554e4,_0x4e535b){_0xe554e4=_0xe554e4-0x0;var _0x216808=_0xb2ad[_0xe554e4];return _0x216808;};'use strict';var _=require('lodash');var util=require(_0xdb2a('0x0'));var logger=require('../../config/logger')(_0xdb2a('0x1'));var moment=require(_0xdb2a('0x2'));var BPromise=require(_0xdb2a('0x3'));var rp=require(_0xdb2a('0x4'));var fs=require('fs');var path=require(_0xdb2a('0x5'));var rimraf=require('rimraf');var config=require(_0xdb2a('0x6'));var attributes=require(_0xdb2a('0x7'));module[_0xdb2a('0x8')]=function(_0x1f9551,_0x5c69b1){return _0x1f9551['define']('SquareRecording',attributes,{'tableName':_0xdb2a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0954=['bluebird','request-promise','path','rimraf','../../config/environment','./squareRecording.attributes','define','SquareRecording','square_recordings','lodash','../../config/logger','api'];(function(_0x52ea08,_0x15d935){var _0x28d546=function(_0x4a3aa7){while(--_0x4a3aa7){_0x52ea08['push'](_0x52ea08['shift']());}};_0x28d546(++_0x15d935);}(_0x0954,0x135));var _0x4095=function(_0x1eda20,_0x1149f4){_0x1eda20=_0x1eda20-0x0;var _0x31b953=_0x0954[_0x1eda20];return _0x31b953;};'use strict';var _=require(_0x4095('0x0'));var util=require('util');var logger=require(_0x4095('0x1'))(_0x4095('0x2'));var moment=require('moment');var BPromise=require(_0x4095('0x3'));var rp=require(_0x4095('0x4'));var fs=require('fs');var path=require(_0x4095('0x5'));var rimraf=require(_0x4095('0x6'));var config=require(_0x4095('0x7'));var attributes=require(_0x4095('0x8'));module['exports']=function(_0x543154,_0x57ad9c){return _0x543154[_0x4095('0x9')](_0x4095('0xa'),attributes,{'tableName':_0x4095('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d8c17f6..2837d14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x356c=['../../config/logger','rpc','jayson/promise','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CreateSquareRecording','SquareRecording','create','options','raw','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4eef4d,_0x4d8f8d){var _0x6baaa3=function(_0x4ea168){while(--_0x4ea168){_0x4eef4d['push'](_0x4eef4d['shift']());}};_0x6baaa3(++_0x4d8f8d);}(_0x356c,0x173));var _0xc356=function(_0x568ec5,_0xc729e6){_0x568ec5=_0x568ec5-0x0;var _0x49111a=_0x356c[_0x568ec5];return _0x49111a;};'use strict';var _=require(_0xc356('0x0'));var util=require('util');var moment=require(_0xc356('0x1'));var BPromise=require(_0xc356('0x2'));var rs=require(_0xc356('0x3'));var fs=require('fs');var Redis=require(_0xc356('0x4'));var db=require(_0xc356('0x5'))['db'];var utils=require(_0xc356('0x6'));var logger=require(_0xc356('0x7'))(_0xc356('0x8'));var config=require('../../config/environment');var jayson=require(_0xc356('0x9'));var client=jayson['client'][_0xc356('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x218c3f,_0x4abc22,_0x392863){return new BPromise(function(_0x91e7fd,_0x9cdc9d){return client[_0xc356('0xb')](_0x218c3f,_0x392863)[_0xc356('0xc')](function(_0x4b11d2){logger[_0xc356('0xd')](_0xc356('0xe'),_0x4abc22,_0xc356('0xf'));logger['debug'](_0xc356('0x10'),_0x4abc22,'request\x20sent',JSON[_0xc356('0x11')](_0x4b11d2));if(_0x4b11d2['error']){if(_0x4b11d2[_0xc356('0x12')][_0xc356('0x13')]===0x1f4){logger['error'](_0xc356('0xe'),_0x4abc22,_0x4b11d2['error'][_0xc356('0x14')]);return _0x9cdc9d(_0x4b11d2[_0xc356('0x12')][_0xc356('0x14')]);}logger[_0xc356('0x12')](_0xc356('0xe'),_0x4abc22,_0x4b11d2[_0xc356('0x12')][_0xc356('0x14')]);return _0x91e7fd(_0x4b11d2[_0xc356('0x12')][_0xc356('0x14')]);}else{logger['info'](_0xc356('0xe'),_0x4abc22,_0xc356('0xf'));_0x91e7fd(_0x4b11d2['result'][_0xc356('0x14')]);}})['catch'](function(_0xff3eb0){logger[_0xc356('0x12')](_0xc356('0xe'),_0x4abc22,_0xff3eb0);_0x9cdc9d(_0xff3eb0);});});}exports[_0xc356('0x15')]=function(_0x41046a){var _0x10dff4=this;return new Promise(function(_0xa0132d,_0x494d0d){return db[_0xc356('0x16')][_0xc356('0x17')](_0x41046a['body'],{'raw':_0x41046a[_0xc356('0x18')]?_0x41046a[_0xc356('0x18')][_0xc356('0x19')]===undefined?!![]:![]:!![]})[_0xc356('0xc')](function(_0x175e75){logger['info'](_0xc356('0x15'),_0x41046a);logger['debug'](_0xc356('0x15'),_0x41046a,JSON[_0xc356('0x11')](_0x175e75));_0xa0132d(_0x175e75);})[_0xc356('0x1a')](function(_0x31ee7e){logger[_0xc356('0x12')](_0xc356('0x15'),_0x31ee7e[_0xc356('0x14')],_0x41046a);_0x494d0d(_0x10dff4['error'](0x1f4,_0x31ee7e[_0xc356('0x14')]));});});};
\ No newline at end of file
+var _0xdf47=['SquareRecording','create','body','options','raw','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','CreateSquareRecording'];(function(_0xd0b415,_0x149675){var _0x2bdf2c=function(_0x59fbfa){while(--_0x59fbfa){_0xd0b415['push'](_0xd0b415['shift']());}};_0x2bdf2c(++_0x149675);}(_0xdf47,0x1a9));var _0x7df4=function(_0x4fa127,_0x41daba){_0x4fa127=_0x4fa127-0x0;var _0x105b54=_0xdf47[_0x4fa127];return _0x105b54;};'use strict';var _=require('lodash');var util=require(_0x7df4('0x0'));var moment=require(_0x7df4('0x1'));var BPromise=require(_0x7df4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7df4('0x3'));var db=require(_0x7df4('0x4'))['db'];var utils=require(_0x7df4('0x5'));var logger=require(_0x7df4('0x6'))(_0x7df4('0x7'));var config=require(_0x7df4('0x8'));var jayson=require(_0x7df4('0x9'));var client=jayson[_0x7df4('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x26cd56,_0x145b76,_0x13a48d){return new BPromise(function(_0x308ea9,_0x45fdfd){return client[_0x7df4('0xb')](_0x26cd56,_0x13a48d)[_0x7df4('0xc')](function(_0xac96e9){logger['info'](_0x7df4('0xd'),_0x145b76,_0x7df4('0xe'));logger[_0x7df4('0xf')](_0x7df4('0x10'),_0x145b76,_0x7df4('0xe'),JSON[_0x7df4('0x11')](_0xac96e9));if(_0xac96e9['error']){if(_0xac96e9['error'][_0x7df4('0x12')]===0x1f4){logger[_0x7df4('0x13')](_0x7df4('0xd'),_0x145b76,_0xac96e9['error'][_0x7df4('0x14')]);return _0x45fdfd(_0xac96e9[_0x7df4('0x13')][_0x7df4('0x14')]);}logger[_0x7df4('0x13')](_0x7df4('0xd'),_0x145b76,_0xac96e9[_0x7df4('0x13')]['message']);return _0x308ea9(_0xac96e9[_0x7df4('0x13')][_0x7df4('0x14')]);}else{logger[_0x7df4('0x15')](_0x7df4('0xd'),_0x145b76,'request\x20sent');_0x308ea9(_0xac96e9[_0x7df4('0x16')][_0x7df4('0x14')]);}})[_0x7df4('0x17')](function(_0x1f7165){logger[_0x7df4('0x13')]('SquareRecording,\x20%s,\x20%s',_0x145b76,_0x1f7165);_0x45fdfd(_0x1f7165);});});}exports[_0x7df4('0x18')]=function(_0x4b6234){var _0x5d2610=this;return new Promise(function(_0x36d79c,_0x59460e){return db[_0x7df4('0x19')][_0x7df4('0x1a')](_0x4b6234[_0x7df4('0x1b')],{'raw':_0x4b6234[_0x7df4('0x1c')]?_0x4b6234['options'][_0x7df4('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x267eb3){logger['info']('CreateSquareRecording',_0x4b6234);logger[_0x7df4('0xf')](_0x7df4('0x18'),_0x4b6234,JSON['stringify'](_0x267eb3));_0x36d79c(_0x267eb3);})[_0x7df4('0x17')](function(_0x11eb14){logger[_0x7df4('0x13')](_0x7df4('0x18'),_0x11eb14[_0x7df4('0x14')],_0x4b6234);_0x59460e(_0x5d2610[_0x7df4('0x13')](0x1f4,_0x11eb14['message']));});});};
\ No newline at end of file
index 02d6983..6e99792 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index','/describe','show','post','create','put'];(function(_0x17954a,_0x3b43cd){var _0x43e3f2=function(_0x4693ba){while(--_0x4693ba){_0x17954a['push'](_0x17954a['shift']());}};_0x43e3f2(++_0x3b43cd);}(_0xbaf0,0x12a));var _0x0baf=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbaf0[_0x3947c9];return _0x2e7871;};'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['describe']);router[_0x0baf('0x9')]('/:id',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0xe')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x10')](_0x0baf('0x11'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')](_0x0baf('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x0baf('0x14')]=router;
\ No newline at end of file
+var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','index','/describe','show','post'];(function(_0x1daaa9,_0x220393){var _0x1dd221=function(_0x492c61){while(--_0x492c61){_0x1daaa9['push'](_0x1daaa9['shift']());}};_0x1dd221(++_0x220393);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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 36075b1..17d0723 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e92=['exports','STRING','DATE','BOOLEAN','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0e92,0xae));var _0x20e9=function(_0x818327,_0x44498f){_0x818327=_0x818327-0x0;var _0x4f937e=_0x0e92[_0x818327];return _0x4f937e;};'use strict';var Sequelize=require(_0x20e9('0x0'));module[_0x20e9('0x1')]={'network':{'type':Sequelize[_0x20e9('0x2')]},'network_script':{'type':Sequelize[_0x20e9('0x2')]},'request':{'type':Sequelize[_0x20e9('0x2')]},'channel':{'type':Sequelize[_0x20e9('0x2')]},'language':{'type':Sequelize[_0x20e9('0x2')]},'type':{'type':Sequelize[_0x20e9('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x20e9('0x2')]},'calleridname':{'type':Sequelize[_0x20e9('0x2')]},'callingpres':{'type':Sequelize[_0x20e9('0x2')]},'callingani2':{'type':Sequelize[_0x20e9('0x2')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x20e9('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0x20e9('0x2')]},'accountcode':{'type':Sequelize[_0x20e9('0x2')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x20e9('0x3')]},'leaveAt':{'type':Sequelize[_0x20e9('0x3')]},'bot':{'type':Sequelize[_0x20e9('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5e2e=['BOOLEAN','sequelize','exports','STRING','DATE'];(function(_0x478551,_0x2871d9){var _0x1265ee=function(_0x5d594e){while(--_0x5d594e){_0x478551['push'](_0x478551['shift']());}};_0x1265ee(++_0x2871d9);}(_0x5e2e,0xce));var _0xe5e2=function(_0x235713,_0x54e098){_0x235713=_0x235713-0x0;var _0x561762=_0x5e2e[_0x235713];return _0x561762;};'use strict';var Sequelize=require(_0xe5e2('0x0'));module[_0xe5e2('0x1')]={'network':{'type':Sequelize[_0xe5e2('0x2')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xe5e2('0x2')]},'language':{'type':Sequelize[_0xe5e2('0x2')]},'type':{'type':Sequelize[_0xe5e2('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xe5e2('0x2')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize[_0xe5e2('0x2')]},'callingani2':{'type':Sequelize[_0xe5e2('0x2')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0xe5e2('0x2')]},'dnid':{'type':Sequelize[_0xe5e2('0x2')]},'rdnis':{'type':Sequelize[_0xe5e2('0x2')]},'context':{'type':Sequelize[_0xe5e2('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0xe5e2('0x2')]},'accountcode':{'type':Sequelize[_0xe5e2('0x2')]},'threadid':{'type':Sequelize[_0xe5e2('0x2')]},'project_name':{'type':Sequelize[_0xe5e2('0x2')]},'joinAt':{'type':Sequelize[_0xe5e2('0x3')]},'leaveAt':{'type':Sequelize[_0xe5e2('0x3')]},'bot':{'type':Sequelize[_0xe5e2('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 734ec46..5848da4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b94=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','apply','reject','save','update','then','destroy','error','name','send','index','SquareReport','rawAttributes','fieldName','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','merge','type','VIRTUAL','filter','options','includeAll','findAll','rows','show','params','include','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x4fc80b,_0xfe1b3d){var _0x119dba=function(_0x16ed12){while(--_0x16ed12){_0x4fc80b['push'](_0x4fc80b['shift']());}};_0x119dba(++_0xfe1b3d);}(_0x9b94,0x15b));var _0x49b9=function(_0x524cd7,_0x26d3af){_0x524cd7=_0x524cd7-0x0;var _0x53b024=_0x9b94[_0x524cd7];return _0x53b024;};'use strict';var emlformat=require(_0x49b9('0x0'));var rimraf=require(_0x49b9('0x1'));var zipdir=require(_0x49b9('0x2'));var jsonpatch=require(_0x49b9('0x3'));var rp=require('request-promise');var moment=require(_0x49b9('0x4'));var BPromise=require(_0x49b9('0x5'));var Mustache=require(_0x49b9('0x6'));var util=require(_0x49b9('0x7'));var path=require(_0x49b9('0x8'));var sox=require(_0x49b9('0x9'));var csv=require(_0x49b9('0xa'));var ejs=require(_0x49b9('0xb'));var fs=require('fs');var fs_extra=require(_0x49b9('0xc'));var _=require('lodash');var squel=require(_0x49b9('0xd'));var crypto=require('crypto');var jsforce=require(_0x49b9('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x49b9('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x49b9('0xf'));var authService=require(_0x49b9('0x10'));var qs=require(_0x49b9('0x11'));var as=require(_0x49b9('0x12'));var hardwareService=require(_0x49b9('0x13'));var logger=require(_0x49b9('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x49b9('0x15'));var licenseUtil=require(_0x49b9('0x16'));var db=require(_0x49b9('0x17'))['db'];function respondWithStatusCode(_0x375450,_0x5c28bf){_0x5c28bf=_0x5c28bf||0xcc;return function(_0xaf081b){if(_0xaf081b){return _0x375450[_0x49b9('0x18')](_0x5c28bf);}return _0x375450[_0x49b9('0x19')](_0x5c28bf)[_0x49b9('0x1a')]();};}function respondWithResult(_0x466caf,_0x464226){_0x464226=_0x464226||0xc8;return function(_0x5cee98){if(_0x5cee98){return _0x466caf[_0x49b9('0x19')](_0x464226)['json'](_0x5cee98);}};}function respondWithFilteredResult(_0x141d37,_0x34ae89){return function(_0x435dab){if(_0x435dab){var _0x3c0458=typeof _0x34ae89[_0x49b9('0x1b')]===_0x49b9('0x1c')&&typeof _0x34ae89[_0x49b9('0x1d')]===_0x49b9('0x1c');var _0x4e1c22=_0x435dab[_0x49b9('0x1e')];var _0x4fc22c=_0x3c0458?0x0:_0x34ae89[_0x49b9('0x1b')];var _0xe7dafc=_0x3c0458?_0x435dab[_0x49b9('0x1e')]:_0x34ae89[_0x49b9('0x1b')]+_0x34ae89[_0x49b9('0x1d')];var _0x44f4d3;if(_0xe7dafc>=_0x4e1c22){_0xe7dafc=_0x4e1c22;_0x44f4d3=0xc8;}else{_0x44f4d3=0xce;}_0x141d37[_0x49b9('0x19')](_0x44f4d3);return _0x141d37['set']('Content-Range',_0x4fc22c+'-'+_0xe7dafc+'/'+_0x4e1c22)['json'](_0x435dab);}return null;};}function patchUpdates(_0x59c6b6){return function(_0x41175b){try{jsonpatch[_0x49b9('0x1f')](_0x41175b,_0x59c6b6,!![]);}catch(_0xc2810a){return BPromise[_0x49b9('0x20')](_0xc2810a);}return _0x41175b[_0x49b9('0x21')]();};}function saveUpdates(_0x16bbcd,_0x354f73){return function(_0x225a2f){if(_0x225a2f){return _0x225a2f[_0x49b9('0x22')](_0x16bbcd)[_0x49b9('0x23')](function(_0x5c13e2){return _0x5c13e2;});}return null;};}function removeEntity(_0x36c3a2,_0x54549d){return function(_0x47b986){if(_0x47b986){return _0x47b986[_0x49b9('0x24')]()[_0x49b9('0x23')](function(){_0x36c3a2['status'](0xcc)[_0x49b9('0x1a')]();});}};}function handleEntityNotFound(_0x433ce7,_0x554b05){return function(_0x2ec6bf){if(!_0x2ec6bf){_0x433ce7['sendStatus'](0x194);}return _0x2ec6bf;};}function handleError(_0x541809,_0x2e5c88){_0x2e5c88=_0x2e5c88||0x1f4;return function(_0x1dc5be){logger[_0x49b9('0x25')](_0x1dc5be['stack']);if(_0x1dc5be[_0x49b9('0x26')]){delete _0x1dc5be[_0x49b9('0x26')];}_0x541809[_0x49b9('0x19')](_0x2e5c88)[_0x49b9('0x27')](_0x1dc5be);};}exports[_0x49b9('0x28')]=function(_0x411eb0,_0x14eb46){var _0x3dda8e={},_0x110ab0={},_0x7e4a1={'count':0x0,'rows':[]};var _0x5a206b=_['map'](db[_0x49b9('0x29')][_0x49b9('0x2a')],function(_0x5930e0){return{'name':_0x5930e0[_0x49b9('0x2b')],'type':_0x5930e0['type']['key']};});_0x110ab0[_0x49b9('0x2c')]=_[_0x49b9('0x2d')](_0x5a206b,'name');_0x110ab0['query']=_[_0x49b9('0x2e')](_0x411eb0[_0x49b9('0x2f')]);_0x110ab0[_0x49b9('0x30')]=_[_0x49b9('0x31')](_0x110ab0[_0x49b9('0x2c')],_0x110ab0['query']);_0x3dda8e['attributes']=_[_0x49b9('0x31')](_0x110ab0['model'],qs[_0x49b9('0x32')](_0x411eb0[_0x49b9('0x2f')][_0x49b9('0x32')]));_0x3dda8e[_0x49b9('0x33')]=_0x3dda8e[_0x49b9('0x33')][_0x49b9('0x34')]?_0x3dda8e[_0x49b9('0x33')]:_0x110ab0[_0x49b9('0x2c')];if(!_0x411eb0[_0x49b9('0x2f')][_0x49b9('0x35')](_0x49b9('0x36'))){_0x3dda8e[_0x49b9('0x1d')]=qs[_0x49b9('0x1d')](_0x411eb0['query'][_0x49b9('0x1d')]);_0x3dda8e[_0x49b9('0x1b')]=qs[_0x49b9('0x1b')](_0x411eb0[_0x49b9('0x2f')][_0x49b9('0x1b')]);}_0x3dda8e['order']=qs['sort'](_0x411eb0[_0x49b9('0x2f')][_0x49b9('0x37')]);_0x3dda8e['where']=qs['filters'](_['pick'](_0x411eb0['query'],_0x110ab0['filters']),_0x5a206b);if(_0x411eb0[_0x49b9('0x2f')]['filter']){_0x3dda8e[_0x49b9('0x38')]=_[_0x49b9('0x39')](_0x3dda8e['where'],{'$or':_[_0x49b9('0x2d')](_0x5a206b,function(_0x824a2f){if(_0x824a2f[_0x49b9('0x3a')]!==_0x49b9('0x3b')){var _0x760bfb={};_0x760bfb[_0x824a2f[_0x49b9('0x26')]]={'$like':'%'+_0x411eb0[_0x49b9('0x2f')][_0x49b9('0x3c')]+'%'};return _0x760bfb;}})});}_0x3dda8e=_[_0x49b9('0x39')]({},_0x3dda8e,_0x411eb0[_0x49b9('0x3d')]);var _0x53682b={'where':_0x3dda8e[_0x49b9('0x38')]};return db['SquareReport']['count'](_0x53682b)[_0x49b9('0x23')](function(_0x5ab508){_0x7e4a1[_0x49b9('0x1e')]=_0x5ab508;if(_0x411eb0[_0x49b9('0x2f')][_0x49b9('0x3e')]){_0x3dda8e['include']=[{'all':!![]}];}return db[_0x49b9('0x29')][_0x49b9('0x3f')](_0x3dda8e);})[_0x49b9('0x23')](function(_0x1b569c){_0x7e4a1[_0x49b9('0x40')]=_0x1b569c;return _0x7e4a1;})['then'](respondWithFilteredResult(_0x14eb46,_0x3dda8e))['catch'](handleError(_0x14eb46,null));};exports[_0x49b9('0x41')]=function(_0xde8897,_0x2e00ad){var _0x2a319d={'raw':!![],'where':{'id':_0xde8897[_0x49b9('0x42')]['id']}},_0x22b3b5={};_0x22b3b5[_0x49b9('0x2c')]=_[_0x49b9('0x2e')](db[_0x49b9('0x29')][_0x49b9('0x2a')]);_0x22b3b5[_0x49b9('0x2f')]=_[_0x49b9('0x2e')](_0xde8897['query']);_0x22b3b5[_0x49b9('0x30')]=_[_0x49b9('0x31')](_0x22b3b5[_0x49b9('0x2c')],_0x22b3b5[_0x49b9('0x2f')]);_0x2a319d['attributes']=_['intersection'](_0x22b3b5[_0x49b9('0x2c')],qs[_0x49b9('0x32')](_0xde8897[_0x49b9('0x2f')]['fields']));_0x2a319d[_0x49b9('0x33')]=_0x2a319d[_0x49b9('0x33')][_0x49b9('0x34')]?_0x2a319d[_0x49b9('0x33')]:_0x22b3b5['model'];if(_0xde8897[_0x49b9('0x2f')][_0x49b9('0x3e')]){_0x2a319d[_0x49b9('0x43')]=[{'all':!![]}];}_0x2a319d=_[_0x49b9('0x39')]({},_0x2a319d,_0xde8897['options']);return db[_0x49b9('0x29')][_0x49b9('0x44')](_0x2a319d)['then'](handleEntityNotFound(_0x2e00ad,null))[_0x49b9('0x23')](respondWithResult(_0x2e00ad,null))[_0x49b9('0x45')](handleError(_0x2e00ad,null));};exports['create']=function(_0x396f4f,_0x2cde6c){return db[_0x49b9('0x29')][_0x49b9('0x46')](_0x396f4f[_0x49b9('0x47')],{})[_0x49b9('0x23')](respondWithResult(_0x2cde6c,0xc9))['catch'](handleError(_0x2cde6c,null));};exports['update']=function(_0x4281eb,_0xcebdf6){if(_0x4281eb[_0x49b9('0x47')]['id']){delete _0x4281eb['body']['id'];}return db[_0x49b9('0x29')]['find']({'where':{'id':_0x4281eb['params']['id']}})[_0x49b9('0x23')](handleEntityNotFound(_0xcebdf6,null))[_0x49b9('0x23')](saveUpdates(_0x4281eb[_0x49b9('0x47')],null))[_0x49b9('0x23')](respondWithResult(_0xcebdf6,null))[_0x49b9('0x45')](handleError(_0xcebdf6,null));};exports[_0x49b9('0x24')]=function(_0x12b2a7,_0x1b89d7){return db[_0x49b9('0x29')][_0x49b9('0x44')]({'where':{'id':_0x12b2a7[_0x49b9('0x42')]['id']}})[_0x49b9('0x23')](handleEntityNotFound(_0x1b89d7,null))[_0x49b9('0x23')](removeEntity(_0x1b89d7,null))[_0x49b9('0x45')](handleError(_0x1b89d7,null));};exports[_0x49b9('0x48')]=function(_0x40e720,_0x2834ea){return db[_0x49b9('0x29')][_0x49b9('0x48')]()[_0x49b9('0x23')](respondWithResult(_0x2834ea,null))[_0x49b9('0x45')](handleError(_0x2834ea,null));};
\ No newline at end of file
+var _0xc95a=['../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','map','SquareReport','rawAttributes','fieldName','type','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','filters','filter','merge','where','VIRTUAL','include','findAll','rows','catch','show','params','options','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../config/logger'];(function(_0x1fcde8,_0x44c01d){var _0x5b3541=function(_0x577ef6){while(--_0x577ef6){_0x1fcde8['push'](_0x1fcde8['shift']());}};_0x5b3541(++_0x44c01d);}(_0xc95a,0x7c));var _0xac95=function(_0x26a321,_0x70520f){_0x26a321=_0x26a321-0x0;var _0x13f00b=_0xc95a[_0x26a321];return _0x13f00b;};'use strict';var emlformat=require(_0xac95('0x0'));var rimraf=require(_0xac95('0x1'));var zipdir=require(_0xac95('0x2'));var jsonpatch=require(_0xac95('0x3'));var rp=require(_0xac95('0x4'));var moment=require(_0xac95('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xac95('0x6'));var util=require(_0xac95('0x7'));var path=require(_0xac95('0x8'));var sox=require(_0xac95('0x9'));var csv=require(_0xac95('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xac95('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xac95('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xac95('0xd'));var toCsv=require(_0xac95('0xa'));var querystring=require(_0xac95('0xe'));var Papa=require(_0xac95('0xf'));var Redis=require('ioredis');var authService=require(_0xac95('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xac95('0x11'))('api');var utils=require(_0xac95('0x12'));var config=require(_0xac95('0x13'));var licenseUtil=require(_0xac95('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4144c6,_0x5f260e){_0x5f260e=_0x5f260e||0xcc;return function(_0x541343){if(_0x541343){return _0x4144c6[_0xac95('0x15')](_0x5f260e);}return _0x4144c6[_0xac95('0x16')](_0x5f260e)[_0xac95('0x17')]();};}function respondWithResult(_0x2d3727,_0x4c0bba){_0x4c0bba=_0x4c0bba||0xc8;return function(_0x357129){if(_0x357129){return _0x2d3727[_0xac95('0x16')](_0x4c0bba)[_0xac95('0x18')](_0x357129);}};}function respondWithFilteredResult(_0x27da54,_0x275dd4){return function(_0x48b5fb){if(_0x48b5fb){var _0x343b87=typeof _0x275dd4[_0xac95('0x19')]===_0xac95('0x1a')&&typeof _0x275dd4['limit']===_0xac95('0x1a');var _0x5c4eec=_0x48b5fb[_0xac95('0x1b')];var _0xf5372c=_0x343b87?0x0:_0x275dd4[_0xac95('0x19')];var _0x253346=_0x343b87?_0x48b5fb[_0xac95('0x1b')]:_0x275dd4[_0xac95('0x19')]+_0x275dd4[_0xac95('0x1c')];var _0x325312;if(_0x253346>=_0x5c4eec){_0x253346=_0x5c4eec;_0x325312=0xc8;}else{_0x325312=0xce;}_0x27da54[_0xac95('0x16')](_0x325312);return _0x27da54[_0xac95('0x1d')](_0xac95('0x1e'),_0xf5372c+'-'+_0x253346+'/'+_0x5c4eec)['json'](_0x48b5fb);}return null;};}function patchUpdates(_0x4e45dc){return function(_0x55a244){try{jsonpatch[_0xac95('0x1f')](_0x55a244,_0x4e45dc,!![]);}catch(_0x3a1efa){return BPromise[_0xac95('0x20')](_0x3a1efa);}return _0x55a244[_0xac95('0x21')]();};}function saveUpdates(_0x116dcf,_0xd3b041){return function(_0x2e597f){if(_0x2e597f){return _0x2e597f[_0xac95('0x22')](_0x116dcf)[_0xac95('0x23')](function(_0x54b93d){return _0x54b93d;});}return null;};}function removeEntity(_0x481d60,_0x4bcf5f){return function(_0x131049){if(_0x131049){return _0x131049['destroy']()[_0xac95('0x23')](function(){_0x481d60[_0xac95('0x16')](0xcc)[_0xac95('0x17')]();});}};}function handleEntityNotFound(_0x42765f,_0x220fb8){return function(_0x43a767){if(!_0x43a767){_0x42765f['sendStatus'](0x194);}return _0x43a767;};}function handleError(_0x2b4dc5,_0x40cf7d){_0x40cf7d=_0x40cf7d||0x1f4;return function(_0x3650cc){logger[_0xac95('0x24')](_0x3650cc[_0xac95('0x25')]);if(_0x3650cc[_0xac95('0x26')]){delete _0x3650cc['name'];}_0x2b4dc5[_0xac95('0x16')](_0x40cf7d)['send'](_0x3650cc);};}exports['index']=function(_0x2d75f1,_0xe05684){var _0x85c94e={},_0x2798b9={},_0x11e744={'count':0x0,'rows':[]};var _0x464077=_[_0xac95('0x27')](db[_0xac95('0x28')][_0xac95('0x29')],function(_0x5f5766){return{'name':_0x5f5766[_0xac95('0x2a')],'type':_0x5f5766[_0xac95('0x2b')]['key']};});_0x2798b9[_0xac95('0x2c')]=_[_0xac95('0x27')](_0x464077,_0xac95('0x26'));_0x2798b9[_0xac95('0x2d')]=_[_0xac95('0x2e')](_0x2d75f1[_0xac95('0x2d')]);_0x2798b9['filters']=_['intersection'](_0x2798b9[_0xac95('0x2c')],_0x2798b9[_0xac95('0x2d')]);_0x85c94e[_0xac95('0x2f')]=_[_0xac95('0x30')](_0x2798b9[_0xac95('0x2c')],qs[_0xac95('0x31')](_0x2d75f1[_0xac95('0x2d')][_0xac95('0x31')]));_0x85c94e[_0xac95('0x2f')]=_0x85c94e[_0xac95('0x2f')][_0xac95('0x32')]?_0x85c94e[_0xac95('0x2f')]:_0x2798b9[_0xac95('0x2c')];if(!_0x2d75f1[_0xac95('0x2d')][_0xac95('0x33')](_0xac95('0x34'))){_0x85c94e[_0xac95('0x1c')]=qs[_0xac95('0x1c')](_0x2d75f1['query'][_0xac95('0x1c')]);_0x85c94e[_0xac95('0x19')]=qs[_0xac95('0x19')](_0x2d75f1['query'][_0xac95('0x19')]);}_0x85c94e['order']=qs[_0xac95('0x35')](_0x2d75f1[_0xac95('0x2d')][_0xac95('0x35')]);_0x85c94e['where']=qs[_0xac95('0x36')](_['pick'](_0x2d75f1[_0xac95('0x2d')],_0x2798b9['filters']),_0x464077);if(_0x2d75f1[_0xac95('0x2d')][_0xac95('0x37')]){_0x85c94e['where']=_[_0xac95('0x38')](_0x85c94e[_0xac95('0x39')],{'$or':_[_0xac95('0x27')](_0x464077,function(_0x108ba8){if(_0x108ba8[_0xac95('0x2b')]!==_0xac95('0x3a')){var _0x1799a5={};_0x1799a5[_0x108ba8[_0xac95('0x26')]]={'$like':'%'+_0x2d75f1[_0xac95('0x2d')][_0xac95('0x37')]+'%'};return _0x1799a5;}})});}_0x85c94e=_['merge']({},_0x85c94e,_0x2d75f1['options']);var _0xb10670={'where':_0x85c94e['where']};return db[_0xac95('0x28')][_0xac95('0x1b')](_0xb10670)['then'](function(_0x45e4fc){_0x11e744[_0xac95('0x1b')]=_0x45e4fc;if(_0x2d75f1[_0xac95('0x2d')]['includeAll']){_0x85c94e[_0xac95('0x3b')]=[{'all':!![]}];}return db['SquareReport'][_0xac95('0x3c')](_0x85c94e);})[_0xac95('0x23')](function(_0xb71297){_0x11e744[_0xac95('0x3d')]=_0xb71297;return _0x11e744;})['then'](respondWithFilteredResult(_0xe05684,_0x85c94e))[_0xac95('0x3e')](handleError(_0xe05684,null));};exports[_0xac95('0x3f')]=function(_0x25385c,_0x20fb7a){var _0x1baa08={'raw':!![],'where':{'id':_0x25385c[_0xac95('0x40')]['id']}},_0x337e86={};_0x337e86[_0xac95('0x2c')]=_[_0xac95('0x2e')](db[_0xac95('0x28')]['rawAttributes']);_0x337e86[_0xac95('0x2d')]=_[_0xac95('0x2e')](_0x25385c[_0xac95('0x2d')]);_0x337e86[_0xac95('0x36')]=_['intersection'](_0x337e86['model'],_0x337e86[_0xac95('0x2d')]);_0x1baa08[_0xac95('0x2f')]=_['intersection'](_0x337e86[_0xac95('0x2c')],qs['fields'](_0x25385c[_0xac95('0x2d')][_0xac95('0x31')]));_0x1baa08[_0xac95('0x2f')]=_0x1baa08['attributes']['length']?_0x1baa08[_0xac95('0x2f')]:_0x337e86[_0xac95('0x2c')];if(_0x25385c[_0xac95('0x2d')]['includeAll']){_0x1baa08[_0xac95('0x3b')]=[{'all':!![]}];}_0x1baa08=_[_0xac95('0x38')]({},_0x1baa08,_0x25385c[_0xac95('0x41')]);return db[_0xac95('0x28')][_0xac95('0x42')](_0x1baa08)[_0xac95('0x23')](handleEntityNotFound(_0x20fb7a,null))[_0xac95('0x23')](respondWithResult(_0x20fb7a,null))[_0xac95('0x3e')](handleError(_0x20fb7a,null));};exports[_0xac95('0x43')]=function(_0x583beb,_0x21cb6d){return db[_0xac95('0x28')][_0xac95('0x43')](_0x583beb[_0xac95('0x44')],{})['then'](respondWithResult(_0x21cb6d,0xc9))[_0xac95('0x3e')](handleError(_0x21cb6d,null));};exports[_0xac95('0x22')]=function(_0x4a197f,_0x54806c){if(_0x4a197f['body']['id']){delete _0x4a197f[_0xac95('0x44')]['id'];}return db[_0xac95('0x28')][_0xac95('0x42')]({'where':{'id':_0x4a197f[_0xac95('0x40')]['id']}})['then'](handleEntityNotFound(_0x54806c,null))['then'](saveUpdates(_0x4a197f[_0xac95('0x44')],null))[_0xac95('0x23')](respondWithResult(_0x54806c,null))[_0xac95('0x3e')](handleError(_0x54806c,null));};exports[_0xac95('0x45')]=function(_0x2338e4,_0x4b8510){return db[_0xac95('0x28')][_0xac95('0x42')]({'where':{'id':_0x2338e4[_0xac95('0x40')]['id']}})[_0xac95('0x23')](handleEntityNotFound(_0x4b8510,null))[_0xac95('0x23')](removeEntity(_0x4b8510,null))[_0xac95('0x3e')](handleError(_0x4b8510,null));};exports[_0xac95('0x46')]=function(_0x45ce9d,_0x254e39){return db[_0xac95('0x28')][_0xac95('0x46')]()['then'](respondWithResult(_0x254e39,null))[_0xac95('0x3e')](handleError(_0x254e39,null));};
\ No newline at end of file
index 1d89d41..29dc69b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d85=['api','moment','bluebird','request-promise','path','rimraf','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','leaveAt','lodash','util','../../config/logger'];(function(_0x3711e2,_0x1468e1){var _0x18a556=function(_0x5e0923){while(--_0x5e0923){_0x3711e2['push'](_0x3711e2['shift']());}};_0x18a556(++_0x1468e1);}(_0x5d85,0x7d));var _0x55d8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5d85[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x55d8('0x0'));var util=require(_0x55d8('0x1'));var logger=require(_0x55d8('0x2'))(_0x55d8('0x3'));var moment=require(_0x55d8('0x4'));var BPromise=require(_0x55d8('0x5'));var rp=require(_0x55d8('0x6'));var fs=require('fs');var path=require(_0x55d8('0x7'));var rimraf=require(_0x55d8('0x8'));var config=require('../../config/environment');var attributes=require(_0x55d8('0x9'));module[_0x55d8('0xa')]=function(_0x527ae5,_0x3e6ee7){return _0x527ae5[_0x55d8('0xb')](_0x55d8('0xc'),attributes,{'tableName':_0x55d8('0xd'),'paranoid':![],'indexes':[{'name':_0x55d8('0xe'),'fields':['uniqueid','project_name']},{'name':_0x55d8('0xf'),'fields':[_0x55d8('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6e44=['api','moment','request-promise','path','rimraf','../../config/environment','define','report_square','uid_pname','project_name','leaveAt','lodash','util','../../config/logger'];(function(_0x8288f3,_0x56934b){var _0x265f7b=function(_0x47418f){while(--_0x47418f){_0x8288f3['push'](_0x8288f3['shift']());}};_0x265f7b(++_0x56934b);}(_0x6e44,0x1a1));var _0x46e4=function(_0x1198a7,_0x58ca47){_0x1198a7=_0x1198a7-0x0;var _0x34e937=_0x6e44[_0x1198a7];return _0x34e937;};'use strict';var _=require(_0x46e4('0x0'));var util=require(_0x46e4('0x1'));var logger=require(_0x46e4('0x2'))(_0x46e4('0x3'));var moment=require(_0x46e4('0x4'));var BPromise=require('bluebird');var rp=require(_0x46e4('0x5'));var fs=require('fs');var path=require(_0x46e4('0x6'));var rimraf=require(_0x46e4('0x7'));var config=require(_0x46e4('0x8'));var attributes=require('./squareReport.attributes');module['exports']=function(_0x576b8c,_0x1eb122){return _0x576b8c[_0x46e4('0x9')]('SquareReport',attributes,{'tableName':_0x46e4('0xa'),'paranoid':![],'indexes':[{'name':_0x46e4('0xb'),'fields':['uniqueid',_0x46e4('0xc')]},{'name':_0x46e4('0xd'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
index 8045da3..87cbc7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57f6=['SquareReport,\x20%s,\x20%s','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateSquareReport','body','options','raw','then','debug','catch','UpdateSquareReport','SquareReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','request','info'];(function(_0x1c6b30,_0x34e35a){var _0x214eeb=function(_0x2c3b8f){while(--_0x2c3b8f){_0x1c6b30['push'](_0x1c6b30['shift']());}};_0x214eeb(++_0x34e35a);}(_0x57f6,0x94));var _0x657f=function(_0x4404ff,_0x13d7a9){_0x4404ff=_0x4404ff-0x0;var _0x5e7b19=_0x57f6[_0x4404ff];return _0x5e7b19;};'use strict';var _=require(_0x657f('0x0'));var util=require(_0x657f('0x1'));var moment=require(_0x657f('0x2'));var BPromise=require(_0x657f('0x3'));var rs=require(_0x657f('0x4'));var fs=require('fs');var Redis=require(_0x657f('0x5'));var db=require(_0x657f('0x6'))['db'];var utils=require(_0x657f('0x7'));var logger=require(_0x657f('0x8'))('rpc');var config=require(_0x657f('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x17f578,_0x3c8b68,_0x53e100){return new BPromise(function(_0x260ac4,_0x15fd8f){return client[_0x657f('0xa')](_0x17f578,_0x53e100)['then'](function(_0x5f2b3f){logger[_0x657f('0xb')](_0x657f('0xc'),_0x3c8b68,'request\x20sent');logger['debug'](_0x657f('0xd'),_0x3c8b68,_0x657f('0xe'),JSON[_0x657f('0xf')](_0x5f2b3f));if(_0x5f2b3f[_0x657f('0x10')]){if(_0x5f2b3f['error']['code']===0x1f4){logger['error']('SquareReport,\x20%s,\x20%s',_0x3c8b68,_0x5f2b3f[_0x657f('0x10')]['message']);return _0x15fd8f(_0x5f2b3f[_0x657f('0x10')]['message']);}logger[_0x657f('0x10')](_0x657f('0xc'),_0x3c8b68,_0x5f2b3f[_0x657f('0x10')][_0x657f('0x11')]);return _0x260ac4(_0x5f2b3f[_0x657f('0x10')]['message']);}else{logger['info'](_0x657f('0xc'),_0x3c8b68,'request\x20sent');_0x260ac4(_0x5f2b3f[_0x657f('0x12')]['message']);}})['catch'](function(_0x430e9a){logger[_0x657f('0x10')](_0x657f('0xc'),_0x3c8b68,_0x430e9a);_0x15fd8f(_0x430e9a);});});}exports[_0x657f('0x13')]=function(_0x41a2c1){var _0xf6a657=this;return new Promise(function(_0x27b5a6,_0x139ed9){return db['SquareReport']['create'](_0x41a2c1[_0x657f('0x14')],{'raw':_0x41a2c1[_0x657f('0x15')]?_0x41a2c1[_0x657f('0x15')][_0x657f('0x16')]===undefined?!![]:![]:!![]})[_0x657f('0x17')](function(_0x132867){logger['info']('CreateSquareReport',_0x41a2c1);logger[_0x657f('0x18')](_0x657f('0x13'),_0x41a2c1,JSON[_0x657f('0xf')](_0x132867));_0x27b5a6(_0x132867);})[_0x657f('0x19')](function(_0x3bbca6){logger[_0x657f('0x10')](_0x657f('0x13'),_0x3bbca6[_0x657f('0x11')],_0x41a2c1);_0x139ed9(_0xf6a657[_0x657f('0x10')](0x1f4,_0x3bbca6['message']));});});};exports[_0x657f('0x1a')]=function(_0x5c902e){var _0x30a2b0=this;return new Promise(function(_0x3620ea,_0x307395){return db[_0x657f('0x1b')][_0x657f('0x1c')](_0x5c902e[_0x657f('0x14')],{'raw':_0x5c902e[_0x657f('0x15')]?_0x5c902e[_0x657f('0x15')][_0x657f('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c902e[_0x657f('0x15')]?_0x5c902e[_0x657f('0x15')][_0x657f('0x1d')]||null:null,'attributes':_0x5c902e[_0x657f('0x15')]?_0x5c902e[_0x657f('0x15')][_0x657f('0x1e')]||null:null,'limit':_0x5c902e[_0x657f('0x15')]?_0x5c902e[_0x657f('0x15')][_0x657f('0x1f')]||null:null})[_0x657f('0x17')](function(_0x40009e){logger['info'](_0x657f('0x1a'),_0x5c902e);logger[_0x657f('0x18')]('UpdateSquareReport',_0x5c902e,JSON['stringify'](_0x40009e));_0x3620ea(_0x40009e);})[_0x657f('0x19')](function(_0x1ca743){logger[_0x657f('0x10')]('UpdateSquareReport',_0x1ca743[_0x657f('0x11')],_0x5c902e);_0x307395(_0x30a2b0[_0x657f('0x10')](0x1f4,_0x1ca743['message']));});});};
\ No newline at end of file
+var _0x066e=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','SquareReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSquareReport','create','body','options','raw','stringify','UpdateSquareReport','SquareReport','update','where','attributes','limit','debug','lodash'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x066e,0x1d3));var _0xe066=function(_0x494d1f,_0x3f72ff){_0x494d1f=_0x494d1f-0x0;var _0x457b6e=_0x066e[_0x494d1f];return _0x457b6e;};'use strict';var _=require(_0xe066('0x0'));var util=require(_0xe066('0x1'));var moment=require(_0xe066('0x2'));var BPromise=require(_0xe066('0x3'));var rs=require(_0xe066('0x4'));var fs=require('fs');var Redis=require(_0xe066('0x5'));var db=require(_0xe066('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xe066('0x7'))(_0xe066('0x8'));var config=require(_0xe066('0x9'));var jayson=require(_0xe066('0xa'));var client=jayson['client'][_0xe066('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x26956e,_0x490633,_0x252161){return new BPromise(function(_0x26a9b4,_0x17d59f){return client[_0xe066('0xc')](_0x26956e,_0x252161)[_0xe066('0xd')](function(_0x2dba3e){logger[_0xe066('0xe')](_0xe066('0xf'),_0x490633,_0xe066('0x10'));logger['debug'](_0xe066('0x11'),_0x490633,'request\x20sent',JSON['stringify'](_0x2dba3e));if(_0x2dba3e[_0xe066('0x12')]){if(_0x2dba3e[_0xe066('0x12')][_0xe066('0x13')]===0x1f4){logger[_0xe066('0x12')](_0xe066('0xf'),_0x490633,_0x2dba3e[_0xe066('0x12')][_0xe066('0x14')]);return _0x17d59f(_0x2dba3e[_0xe066('0x12')][_0xe066('0x14')]);}logger[_0xe066('0x12')](_0xe066('0xf'),_0x490633,_0x2dba3e[_0xe066('0x12')]['message']);return _0x26a9b4(_0x2dba3e[_0xe066('0x12')][_0xe066('0x14')]);}else{logger['info'](_0xe066('0xf'),_0x490633,_0xe066('0x10'));_0x26a9b4(_0x2dba3e[_0xe066('0x15')][_0xe066('0x14')]);}})[_0xe066('0x16')](function(_0x48dd25){logger[_0xe066('0x12')](_0xe066('0xf'),_0x490633,_0x48dd25);_0x17d59f(_0x48dd25);});});}exports[_0xe066('0x17')]=function(_0x326ffb){var _0x505036=this;return new Promise(function(_0x27f128,_0x59cc7e){return db['SquareReport'][_0xe066('0x18')](_0x326ffb[_0xe066('0x19')],{'raw':_0x326ffb[_0xe066('0x1a')]?_0x326ffb[_0xe066('0x1a')][_0xe066('0x1b')]===undefined?!![]:![]:!![]})[_0xe066('0xd')](function(_0x430605){logger[_0xe066('0xe')](_0xe066('0x17'),_0x326ffb);logger['debug'](_0xe066('0x17'),_0x326ffb,JSON[_0xe066('0x1c')](_0x430605));_0x27f128(_0x430605);})[_0xe066('0x16')](function(_0x125f6d){logger[_0xe066('0x12')]('CreateSquareReport',_0x125f6d[_0xe066('0x14')],_0x326ffb);_0x59cc7e(_0x505036[_0xe066('0x12')](0x1f4,_0x125f6d['message']));});});};exports[_0xe066('0x1d')]=function(_0x82828f){var _0x121ba8=this;return new Promise(function(_0x4790b9,_0x7980ae){return db[_0xe066('0x1e')][_0xe066('0x1f')](_0x82828f[_0xe066('0x19')],{'raw':_0x82828f[_0xe066('0x1a')]?_0x82828f[_0xe066('0x1a')][_0xe066('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x82828f[_0xe066('0x1a')]?_0x82828f[_0xe066('0x1a')][_0xe066('0x20')]||null:null,'attributes':_0x82828f[_0xe066('0x1a')]?_0x82828f[_0xe066('0x1a')][_0xe066('0x21')]||null:null,'limit':_0x82828f[_0xe066('0x1a')]?_0x82828f['options'][_0xe066('0x22')]||null:null})[_0xe066('0xd')](function(_0x57a3c5){logger[_0xe066('0xe')](_0xe066('0x1d'),_0x82828f);logger[_0xe066('0x23')](_0xe066('0x1d'),_0x82828f,JSON['stringify'](_0x57a3c5));_0x4790b9(_0x57a3c5);})[_0xe066('0x16')](function(_0x42da02){logger[_0xe066('0x12')](_0xe066('0x1d'),_0x42da02[_0xe066('0x14')],_0x82828f);_0x7980ae(_0x121ba8[_0xe066('0x12')](0x1f4,_0x42da02[_0xe066('0x14')]));});});};
\ No newline at end of file
index e45b5b5..4f66fc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49f5=['path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','index','/describe','isAuthenticated','show','post','create','/:id','update','delete','destroy','util'];(function(_0x58cfae,_0x582d5e){var _0x288fd7=function(_0x4ee201){while(--_0x4ee201){_0x58cfae['push'](_0x58cfae['shift']());}};_0x288fd7(++_0x582d5e);}(_0x49f5,0x8f));var _0x549f=function(_0x1bc30e,_0x2e2ec6){_0x1bc30e=_0x1bc30e-0x0;var _0x4ad3cc=_0x49f5[_0x1bc30e];return _0x4ad3cc;};'use strict';var multer=require('multer');var util=require(_0x549f('0x0'));var path=require(_0x549f('0x1'));var timeout=require('connect-timeout');var express=require(_0x549f('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x549f('0x3'));var interaction=require(_0x549f('0x4'));var config=require(_0x549f('0x5'));var controller=require(_0x549f('0x6'));router[_0x549f('0x7')]('/',auth['isAuthenticated'](),controller[_0x549f('0x8')]);router[_0x549f('0x7')](_0x549f('0x9'),auth[_0x549f('0xa')](),controller['describe']);router[_0x549f('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x549f('0xb')]);router[_0x549f('0xc')]('/',auth['isAuthenticated'](),controller[_0x549f('0xd')]);router['put'](_0x549f('0xe'),auth['isAuthenticated'](),controller[_0x549f('0xf')]);router[_0x549f('0x10')]('/:id',auth[_0x549f('0xa')](),controller[_0x549f('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x610c=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','index','/describe','describe','/:id','isAuthenticated','show','post','update','delete','destroy','exports'];(function(_0x26d386,_0x1660c0){var _0x4ef9a8=function(_0x55e2d3){while(--_0x55e2d3){_0x26d386['push'](_0x26d386['shift']());}};_0x4ef9a8(++_0x1660c0);}(_0x610c,0xe7));var _0xc610=function(_0x240322,_0x59912b){_0x240322=_0x240322-0x0;var _0x41997b=_0x610c[_0x240322];return _0x41997b;};'use strict';var multer=require('multer');var util=require(_0xc610('0x0'));var path=require('path');var timeout=require(_0xc610('0x1'));var express=require(_0xc610('0x2'));var router=express[_0xc610('0x3')]();var fs_extra=require(_0xc610('0x4'));var auth=require(_0xc610('0x5'));var interaction=require(_0xc610('0x6'));var config=require(_0xc610('0x7'));var controller=require(_0xc610('0x8'));router[_0xc610('0x9')]('/',auth['isAuthenticated'](),controller[_0xc610('0xa')]);router['get'](_0xc610('0xb'),auth['isAuthenticated'](),controller[_0xc610('0xc')]);router['get'](_0xc610('0xd'),auth[_0xc610('0xe')](),controller[_0xc610('0xf')]);router[_0xc610('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0xc610('0xe')](),controller[_0xc610('0x11')]);router[_0xc610('0x12')](_0xc610('0xd'),auth['isAuthenticated'](),controller[_0xc610('0x13')]);module[_0xc610('0x14')]=router;
\ No newline at end of file
index 13ead50..219298b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcda=['STRING','TEXT','sequelize','exports'];(function(_0x2894f1,_0x2ac412){var _0x21687e=function(_0x2c7309){while(--_0x2c7309){_0x2894f1['push'](_0x2894f1['shift']());}};_0x21687e(++_0x2ac412);}(_0xfcda,0xce));var _0xafcd=function(_0x31d3b4,_0x138abc){_0x31d3b4=_0x31d3b4-0x0;var _0x43b94b=_0xfcda[_0x31d3b4];return _0x43b94b;};'use strict';var Sequelize=require(_0xafcd('0x0'));module[_0xafcd('0x1')]={'uniqueid':{'type':Sequelize[_0xafcd('0x2')]},'node':{'type':Sequelize[_0xafcd('0x2')]},'application':{'type':Sequelize[_0xafcd('0x2')]},'data':{'type':Sequelize[_0xafcd('0x3')]},'project_name':{'type':Sequelize[_0xafcd('0x2')]},'callerid':{'type':Sequelize[_0xafcd('0x2')]}};
\ No newline at end of file
+var _0x394b=['STRING','TEXT','sequelize','exports'];(function(_0x342bfd,_0x4c6fb3){var _0x13b76c=function(_0xbf535d){while(--_0xbf535d){_0x342bfd['push'](_0x342bfd['shift']());}};_0x13b76c(++_0x4c6fb3);}(_0x394b,0x126));var _0xb394=function(_0x39c656,_0x29300b){_0x39c656=_0x39c656-0x0;var _0x167f4b=_0x394b[_0x39c656];return _0x167f4b;};'use strict';var Sequelize=require(_0xb394('0x0'));module[_0xb394('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0xb394('0x2')]},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0xb394('0x3')]},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xb394('0x2')]}};
\ No newline at end of file
index c284b74..59fa26b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x243b=['options','include','findAll','rows','catch','params','includeAll','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','save','update','then','error','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','merge','filter'];(function(_0x154983,_0xc29edf){var _0x3d1243=function(_0x5cb7a4){while(--_0x5cb7a4){_0x154983['push'](_0x154983['shift']());}};_0x3d1243(++_0xc29edf);}(_0x243b,0x9c));var _0xb243=function(_0x2daa01,_0x30ac4b){_0x2daa01=_0x2daa01-0x0;var _0xf1780b=_0x243b[_0x2daa01];return _0xf1780b;};'use strict';var emlformat=require(_0xb243('0x0'));var rimraf=require(_0xb243('0x1'));var zipdir=require(_0xb243('0x2'));var jsonpatch=require(_0xb243('0x3'));var rp=require(_0xb243('0x4'));var moment=require(_0xb243('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb243('0x6'));var util=require('util');var path=require(_0xb243('0x7'));var sox=require(_0xb243('0x8'));var csv=require(_0xb243('0x9'));var ejs=require(_0xb243('0xa'));var fs=require('fs');var fs_extra=require(_0xb243('0xb'));var _=require(_0xb243('0xc'));var squel=require('squel');var crypto=require(_0xb243('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb243('0xe'));var toCsv=require('to-csv');var querystring=require(_0xb243('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb243('0x10'));var qs=require(_0xb243('0x11'));var as=require(_0xb243('0x12'));var hardwareService=require(_0xb243('0x13'));var logger=require(_0xb243('0x14'))(_0xb243('0x15'));var utils=require(_0xb243('0x16'));var config=require(_0xb243('0x17'));var licenseUtil=require(_0xb243('0x18'));var db=require(_0xb243('0x19'))['db'];function respondWithStatusCode(_0x55432f,_0xd31d31){_0xd31d31=_0xd31d31||0xcc;return function(_0xb1259a){if(_0xb1259a){return _0x55432f[_0xb243('0x1a')](_0xd31d31);}return _0x55432f[_0xb243('0x1b')](_0xd31d31)[_0xb243('0x1c')]();};}function respondWithResult(_0x1e48ed,_0x28d0fb){_0x28d0fb=_0x28d0fb||0xc8;return function(_0x45baf2){if(_0x45baf2){return _0x1e48ed['status'](_0x28d0fb)['json'](_0x45baf2);}};}function respondWithFilteredResult(_0x3813fe,_0x2d378a){return function(_0x3232e8){if(_0x3232e8){var _0x36c98e=typeof _0x2d378a[_0xb243('0x1d')]==='undefined'&&typeof _0x2d378a[_0xb243('0x1e')]===_0xb243('0x1f');var _0x293f96=_0x3232e8[_0xb243('0x20')];var _0x410aca=_0x36c98e?0x0:_0x2d378a[_0xb243('0x1d')];var _0x2e3efa=_0x36c98e?_0x3232e8[_0xb243('0x20')]:_0x2d378a[_0xb243('0x1d')]+_0x2d378a[_0xb243('0x1e')];var _0x391714;if(_0x2e3efa>=_0x293f96){_0x2e3efa=_0x293f96;_0x391714=0xc8;}else{_0x391714=0xce;}_0x3813fe[_0xb243('0x1b')](_0x391714);return _0x3813fe[_0xb243('0x21')](_0xb243('0x22'),_0x410aca+'-'+_0x2e3efa+'/'+_0x293f96)['json'](_0x3232e8);}return null;};}function patchUpdates(_0x480fee){return function(_0x263eeb){try{jsonpatch['apply'](_0x263eeb,_0x480fee,!![]);}catch(_0x6dc2e){return BPromise['reject'](_0x6dc2e);}return _0x263eeb[_0xb243('0x23')]();};}function saveUpdates(_0x58a617,_0x2a3787){return function(_0x25218a){if(_0x25218a){return _0x25218a[_0xb243('0x24')](_0x58a617)[_0xb243('0x25')](function(_0x2e4eda){return _0x2e4eda;});}return null;};}function removeEntity(_0x27294e,_0x380cd1){return function(_0x38fec6){if(_0x38fec6){return _0x38fec6['destroy']()[_0xb243('0x25')](function(){_0x27294e[_0xb243('0x1b')](0xcc)[_0xb243('0x1c')]();});}};}function handleEntityNotFound(_0x402de0,_0xcdf140){return function(_0x50a398){if(!_0x50a398){_0x402de0[_0xb243('0x1a')](0x194);}return _0x50a398;};}function handleError(_0x49bd2d,_0x5aad70){_0x5aad70=_0x5aad70||0x1f4;return function(_0x13caee){logger[_0xb243('0x26')](_0x13caee['stack']);if(_0x13caee[_0xb243('0x27')]){delete _0x13caee[_0xb243('0x27')];}_0x49bd2d['status'](_0x5aad70)[_0xb243('0x28')](_0x13caee);};}exports[_0xb243('0x29')]=function(_0x1f6ba1,_0x237bc6){var _0xa5e830={},_0x14ca7b={},_0x1bc9f6={'count':0x0,'rows':[]};var _0x7a32e6=_[_0xb243('0x2a')](db[_0xb243('0x2b')][_0xb243('0x2c')],function(_0x3efaa3){return{'name':_0x3efaa3[_0xb243('0x2d')],'type':_0x3efaa3[_0xb243('0x2e')][_0xb243('0x2f')]};});_0x14ca7b[_0xb243('0x30')]=_[_0xb243('0x2a')](_0x7a32e6,_0xb243('0x27'));_0x14ca7b[_0xb243('0x31')]=_[_0xb243('0x32')](_0x1f6ba1['query']);_0x14ca7b[_0xb243('0x33')]=_[_0xb243('0x34')](_0x14ca7b[_0xb243('0x30')],_0x14ca7b[_0xb243('0x31')]);_0xa5e830[_0xb243('0x35')]=_['intersection'](_0x14ca7b[_0xb243('0x30')],qs[_0xb243('0x36')](_0x1f6ba1['query']['fields']));_0xa5e830[_0xb243('0x35')]=_0xa5e830[_0xb243('0x35')][_0xb243('0x37')]?_0xa5e830['attributes']:_0x14ca7b[_0xb243('0x30')];if(!_0x1f6ba1[_0xb243('0x31')][_0xb243('0x38')](_0xb243('0x39'))){_0xa5e830[_0xb243('0x1e')]=qs[_0xb243('0x1e')](_0x1f6ba1[_0xb243('0x31')][_0xb243('0x1e')]);_0xa5e830['offset']=qs[_0xb243('0x1d')](_0x1f6ba1['query']['offset']);}_0xa5e830[_0xb243('0x3a')]=qs['sort'](_0x1f6ba1[_0xb243('0x31')]['sort']);_0xa5e830[_0xb243('0x3b')]=qs['filters'](_[_0xb243('0x3c')](_0x1f6ba1[_0xb243('0x31')],_0x14ca7b[_0xb243('0x33')]),_0x7a32e6);if(_0x1f6ba1[_0xb243('0x31')]['filter']){_0xa5e830[_0xb243('0x3b')]=_[_0xb243('0x3d')](_0xa5e830[_0xb243('0x3b')],{'$or':_['map'](_0x7a32e6,function(_0x5e9786){if(_0x5e9786[_0xb243('0x2e')]!=='VIRTUAL'){var _0x3f6e89={};_0x3f6e89[_0x5e9786[_0xb243('0x27')]]={'$like':'%'+_0x1f6ba1[_0xb243('0x31')][_0xb243('0x3e')]+'%'};return _0x3f6e89;}})});}_0xa5e830=_[_0xb243('0x3d')]({},_0xa5e830,_0x1f6ba1[_0xb243('0x3f')]);var _0x343080={'where':_0xa5e830[_0xb243('0x3b')]};return db['SquareDetailsReport'][_0xb243('0x20')](_0x343080)[_0xb243('0x25')](function(_0xc8ddda){_0x1bc9f6[_0xb243('0x20')]=_0xc8ddda;if(_0x1f6ba1[_0xb243('0x31')]['includeAll']){_0xa5e830[_0xb243('0x40')]=[{'all':!![]}];}return db['SquareDetailsReport'][_0xb243('0x41')](_0xa5e830);})[_0xb243('0x25')](function(_0x277021){_0x1bc9f6[_0xb243('0x42')]=_0x277021;return _0x1bc9f6;})[_0xb243('0x25')](respondWithFilteredResult(_0x237bc6,_0xa5e830))[_0xb243('0x43')](handleError(_0x237bc6,null));};exports['show']=function(_0x4ab100,_0x51597a){var _0x46a225={'raw':!![],'where':{'id':_0x4ab100[_0xb243('0x44')]['id']}},_0x768de4={};_0x768de4[_0xb243('0x30')]=_[_0xb243('0x32')](db[_0xb243('0x2b')][_0xb243('0x2c')]);_0x768de4[_0xb243('0x31')]=_[_0xb243('0x32')](_0x4ab100['query']);_0x768de4[_0xb243('0x33')]=_['intersection'](_0x768de4[_0xb243('0x30')],_0x768de4[_0xb243('0x31')]);_0x46a225[_0xb243('0x35')]=_[_0xb243('0x34')](_0x768de4[_0xb243('0x30')],qs['fields'](_0x4ab100['query']['fields']));_0x46a225['attributes']=_0x46a225[_0xb243('0x35')][_0xb243('0x37')]?_0x46a225[_0xb243('0x35')]:_0x768de4[_0xb243('0x30')];if(_0x4ab100[_0xb243('0x31')][_0xb243('0x45')]){_0x46a225[_0xb243('0x40')]=[{'all':!![]}];}_0x46a225=_[_0xb243('0x3d')]({},_0x46a225,_0x4ab100[_0xb243('0x3f')]);return db[_0xb243('0x2b')][_0xb243('0x46')](_0x46a225)['then'](handleEntityNotFound(_0x51597a,null))[_0xb243('0x25')](respondWithResult(_0x51597a,null))[_0xb243('0x43')](handleError(_0x51597a,null));};exports['create']=function(_0x4a49ec,_0x224a44){return db[_0xb243('0x2b')]['create'](_0x4a49ec['body'],{})[_0xb243('0x25')](respondWithResult(_0x224a44,0xc9))['catch'](handleError(_0x224a44,null));};exports[_0xb243('0x24')]=function(_0x348b7b,_0x1ebe74){if(_0x348b7b[_0xb243('0x47')]['id']){delete _0x348b7b['body']['id'];}return db[_0xb243('0x2b')]['find']({'where':{'id':_0x348b7b['params']['id']}})[_0xb243('0x25')](handleEntityNotFound(_0x1ebe74,null))[_0xb243('0x25')](saveUpdates(_0x348b7b[_0xb243('0x47')],null))['then'](respondWithResult(_0x1ebe74,null))[_0xb243('0x43')](handleError(_0x1ebe74,null));};exports['destroy']=function(_0x58fd97,_0x459e45){return db['SquareDetailsReport'][_0xb243('0x46')]({'where':{'id':_0x58fd97[_0xb243('0x44')]['id']}})['then'](handleEntityNotFound(_0x459e45,null))[_0xb243('0x25')](removeEntity(_0x459e45,null))[_0xb243('0x43')](handleError(_0x459e45,null));};exports[_0xb243('0x48')]=function(_0x4b2b38,_0x1d80ad){return db[_0xb243('0x2b')][_0xb243('0x48')]()[_0xb243('0x25')](respondWithResult(_0x1d80ad,null))[_0xb243('0x43')](handleError(_0x1d80ad,null));};
\ No newline at end of file
+var _0xd44b=['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','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','map','SquareDetailsReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','VIRTUAL','options','findAll','rows','catch','params','rawAttributes','includeAll','include','create','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0xd44b,0x98));var _0xbd44=function(_0x4770fa,_0x392170){_0x4770fa=_0x4770fa-0x0;var _0x3e9632=_0xd44b[_0x4770fa];return _0x3e9632;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbd44('0x0'));var zipdir=require(_0xbd44('0x1'));var jsonpatch=require(_0xbd44('0x2'));var rp=require(_0xbd44('0x3'));var moment=require(_0xbd44('0x4'));var BPromise=require(_0xbd44('0x5'));var Mustache=require(_0xbd44('0x6'));var util=require(_0xbd44('0x7'));var path=require(_0xbd44('0x8'));var sox=require(_0xbd44('0x9'));var csv=require(_0xbd44('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbd44('0xb'));var _=require('lodash');var squel=require(_0xbd44('0xc'));var crypto=require(_0xbd44('0xd'));var jsforce=require(_0xbd44('0xe'));var deskjs=require(_0xbd44('0xf'));var toCsv=require(_0xbd44('0xa'));var querystring=require(_0xbd44('0x10'));var Papa=require(_0xbd44('0x11'));var Redis=require(_0xbd44('0x12'));var authService=require(_0xbd44('0x13'));var qs=require(_0xbd44('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbd44('0x15'));var logger=require(_0xbd44('0x16'))(_0xbd44('0x17'));var utils=require(_0xbd44('0x18'));var config=require(_0xbd44('0x19'));var licenseUtil=require(_0xbd44('0x1a'));var db=require(_0xbd44('0x1b'))['db'];function respondWithStatusCode(_0xf129a2,_0x42a755){_0x42a755=_0x42a755||0xcc;return function(_0x2af235){if(_0x2af235){return _0xf129a2[_0xbd44('0x1c')](_0x42a755);}return _0xf129a2['status'](_0x42a755)[_0xbd44('0x1d')]();};}function respondWithResult(_0x5f0cd0,_0x4e7df8){_0x4e7df8=_0x4e7df8||0xc8;return function(_0x15b137){if(_0x15b137){return _0x5f0cd0[_0xbd44('0x1e')](_0x4e7df8)[_0xbd44('0x1f')](_0x15b137);}};}function respondWithFilteredResult(_0x2ef873,_0x467763){return function(_0x22fb8d){if(_0x22fb8d){var _0x44d808=typeof _0x467763['offset']===_0xbd44('0x20')&&typeof _0x467763[_0xbd44('0x21')]===_0xbd44('0x20');var _0x2fd5a9=_0x22fb8d['count'];var _0x26e00c=_0x44d808?0x0:_0x467763[_0xbd44('0x22')];var _0x434287=_0x44d808?_0x22fb8d[_0xbd44('0x23')]:_0x467763['offset']+_0x467763[_0xbd44('0x21')];var _0x335d1a;if(_0x434287>=_0x2fd5a9){_0x434287=_0x2fd5a9;_0x335d1a=0xc8;}else{_0x335d1a=0xce;}_0x2ef873[_0xbd44('0x1e')](_0x335d1a);return _0x2ef873[_0xbd44('0x24')](_0xbd44('0x25'),_0x26e00c+'-'+_0x434287+'/'+_0x2fd5a9)[_0xbd44('0x1f')](_0x22fb8d);}return null;};}function patchUpdates(_0xd9c464){return function(_0x5e4ccf){try{jsonpatch[_0xbd44('0x26')](_0x5e4ccf,_0xd9c464,!![]);}catch(_0x3650e6){return BPromise[_0xbd44('0x27')](_0x3650e6);}return _0x5e4ccf[_0xbd44('0x28')]();};}function saveUpdates(_0x35e3c7,_0x188fbd){return function(_0x19ee43){if(_0x19ee43){return _0x19ee43[_0xbd44('0x29')](_0x35e3c7)['then'](function(_0xe1e895){return _0xe1e895;});}return null;};}function removeEntity(_0x3c76e7,_0x3693fa){return function(_0x43fb3f){if(_0x43fb3f){return _0x43fb3f[_0xbd44('0x2a')]()[_0xbd44('0x2b')](function(){_0x3c76e7[_0xbd44('0x1e')](0xcc)[_0xbd44('0x1d')]();});}};}function handleEntityNotFound(_0x3c8552,_0x269e6b){return function(_0x274959){if(!_0x274959){_0x3c8552['sendStatus'](0x194);}return _0x274959;};}function handleError(_0x3d7e6a,_0x2cfd0d){_0x2cfd0d=_0x2cfd0d||0x1f4;return function(_0x4cc488){logger[_0xbd44('0x2c')](_0x4cc488[_0xbd44('0x2d')]);if(_0x4cc488['name']){delete _0x4cc488[_0xbd44('0x2e')];}_0x3d7e6a[_0xbd44('0x1e')](_0x2cfd0d)[_0xbd44('0x2f')](_0x4cc488);};}exports['index']=function(_0x337b3f,_0x4c3342){var _0x20545c={},_0x2ad268={},_0x16ceec={'count':0x0,'rows':[]};var _0x1a2a36=_[_0xbd44('0x30')](db[_0xbd44('0x31')]['rawAttributes'],function(_0x3184a3){return{'name':_0x3184a3[_0xbd44('0x32')],'type':_0x3184a3[_0xbd44('0x33')][_0xbd44('0x34')]};});_0x2ad268[_0xbd44('0x35')]=_['map'](_0x1a2a36,_0xbd44('0x2e'));_0x2ad268[_0xbd44('0x36')]=_[_0xbd44('0x37')](_0x337b3f[_0xbd44('0x36')]);_0x2ad268['filters']=_[_0xbd44('0x38')](_0x2ad268[_0xbd44('0x35')],_0x2ad268[_0xbd44('0x36')]);_0x20545c[_0xbd44('0x39')]=_['intersection'](_0x2ad268[_0xbd44('0x35')],qs[_0xbd44('0x3a')](_0x337b3f[_0xbd44('0x36')]['fields']));_0x20545c[_0xbd44('0x39')]=_0x20545c['attributes'][_0xbd44('0x3b')]?_0x20545c[_0xbd44('0x39')]:_0x2ad268['model'];if(!_0x337b3f[_0xbd44('0x36')][_0xbd44('0x3c')](_0xbd44('0x3d'))){_0x20545c[_0xbd44('0x21')]=qs[_0xbd44('0x21')](_0x337b3f['query'][_0xbd44('0x21')]);_0x20545c[_0xbd44('0x22')]=qs[_0xbd44('0x22')](_0x337b3f[_0xbd44('0x36')][_0xbd44('0x22')]);}_0x20545c[_0xbd44('0x3e')]=qs[_0xbd44('0x3f')](_0x337b3f[_0xbd44('0x36')]['sort']);_0x20545c['where']=qs['filters'](_[_0xbd44('0x40')](_0x337b3f[_0xbd44('0x36')],_0x2ad268[_0xbd44('0x41')]),_0x1a2a36);if(_0x337b3f['query'][_0xbd44('0x42')]){_0x20545c[_0xbd44('0x43')]=_[_0xbd44('0x44')](_0x20545c[_0xbd44('0x43')],{'$or':_[_0xbd44('0x30')](_0x1a2a36,function(_0x1fc12e){if(_0x1fc12e[_0xbd44('0x33')]!==_0xbd44('0x45')){var _0x32ef06={};_0x32ef06[_0x1fc12e[_0xbd44('0x2e')]]={'$like':'%'+_0x337b3f[_0xbd44('0x36')][_0xbd44('0x42')]+'%'};return _0x32ef06;}})});}_0x20545c=_[_0xbd44('0x44')]({},_0x20545c,_0x337b3f[_0xbd44('0x46')]);var _0x5c6ae6={'where':_0x20545c[_0xbd44('0x43')]};return db[_0xbd44('0x31')][_0xbd44('0x23')](_0x5c6ae6)[_0xbd44('0x2b')](function(_0x480b3f){_0x16ceec[_0xbd44('0x23')]=_0x480b3f;if(_0x337b3f[_0xbd44('0x36')]['includeAll']){_0x20545c['include']=[{'all':!![]}];}return db[_0xbd44('0x31')][_0xbd44('0x47')](_0x20545c);})[_0xbd44('0x2b')](function(_0x2e4307){_0x16ceec[_0xbd44('0x48')]=_0x2e4307;return _0x16ceec;})[_0xbd44('0x2b')](respondWithFilteredResult(_0x4c3342,_0x20545c))[_0xbd44('0x49')](handleError(_0x4c3342,null));};exports['show']=function(_0x57f8f4,_0x2f4024){var _0x3d1e5d={'raw':!![],'where':{'id':_0x57f8f4[_0xbd44('0x4a')]['id']}},_0x26501f={};_0x26501f[_0xbd44('0x35')]=_[_0xbd44('0x37')](db[_0xbd44('0x31')][_0xbd44('0x4b')]);_0x26501f[_0xbd44('0x36')]=_['keys'](_0x57f8f4[_0xbd44('0x36')]);_0x26501f[_0xbd44('0x41')]=_[_0xbd44('0x38')](_0x26501f[_0xbd44('0x35')],_0x26501f[_0xbd44('0x36')]);_0x3d1e5d[_0xbd44('0x39')]=_[_0xbd44('0x38')](_0x26501f['model'],qs['fields'](_0x57f8f4[_0xbd44('0x36')][_0xbd44('0x3a')]));_0x3d1e5d[_0xbd44('0x39')]=_0x3d1e5d[_0xbd44('0x39')][_0xbd44('0x3b')]?_0x3d1e5d[_0xbd44('0x39')]:_0x26501f[_0xbd44('0x35')];if(_0x57f8f4[_0xbd44('0x36')][_0xbd44('0x4c')]){_0x3d1e5d[_0xbd44('0x4d')]=[{'all':!![]}];}_0x3d1e5d=_['merge']({},_0x3d1e5d,_0x57f8f4[_0xbd44('0x46')]);return db[_0xbd44('0x31')]['find'](_0x3d1e5d)[_0xbd44('0x2b')](handleEntityNotFound(_0x2f4024,null))[_0xbd44('0x2b')](respondWithResult(_0x2f4024,null))[_0xbd44('0x49')](handleError(_0x2f4024,null));};exports[_0xbd44('0x4e')]=function(_0x1aed31,_0x1d9d9d){return db[_0xbd44('0x31')][_0xbd44('0x4e')](_0x1aed31[_0xbd44('0x4f')],{})[_0xbd44('0x2b')](respondWithResult(_0x1d9d9d,0xc9))[_0xbd44('0x49')](handleError(_0x1d9d9d,null));};exports[_0xbd44('0x29')]=function(_0x417f27,_0x1d7c07){if(_0x417f27[_0xbd44('0x4f')]['id']){delete _0x417f27[_0xbd44('0x4f')]['id'];}return db[_0xbd44('0x31')][_0xbd44('0x50')]({'where':{'id':_0x417f27[_0xbd44('0x4a')]['id']}})[_0xbd44('0x2b')](handleEntityNotFound(_0x1d7c07,null))['then'](saveUpdates(_0x417f27[_0xbd44('0x4f')],null))[_0xbd44('0x2b')](respondWithResult(_0x1d7c07,null))[_0xbd44('0x49')](handleError(_0x1d7c07,null));};exports[_0xbd44('0x2a')]=function(_0x24e426,_0x1db9fc){return db[_0xbd44('0x31')][_0xbd44('0x50')]({'where':{'id':_0x24e426['params']['id']}})[_0xbd44('0x2b')](handleEntityNotFound(_0x1db9fc,null))['then'](removeEntity(_0x1db9fc,null))[_0xbd44('0x49')](handleError(_0x1db9fc,null));};exports[_0xbd44('0x51')]=function(_0x2e06f3,_0x426681){return db[_0xbd44('0x31')][_0xbd44('0x51')]()[_0xbd44('0x2b')](respondWithResult(_0x426681,null))[_0xbd44('0x49')](handleError(_0x426681,null));};
\ No newline at end of file
index afb9ae9..4148f91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0889=['../../config/environment','exports','define','SquareDetailsReport','report_square_details','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x16ee05,_0x2a6691){var _0x11a306=function(_0x3eb660){while(--_0x3eb660){_0x16ee05['push'](_0x16ee05['shift']());}};_0x11a306(++_0x2a6691);}(_0x0889,0xb9));var _0x9088=function(_0x387e15,_0xddb1ff){_0x387e15=_0x387e15-0x0;var _0x413e13=_0x0889[_0x387e15];return _0x413e13;};'use strict';var _=require(_0x9088('0x0'));var util=require('util');var logger=require(_0x9088('0x1'))(_0x9088('0x2'));var moment=require(_0x9088('0x3'));var BPromise=require(_0x9088('0x4'));var rp=require(_0x9088('0x5'));var fs=require('fs');var path=require(_0x9088('0x6'));var rimraf=require('rimraf');var config=require(_0x9088('0x7'));var attributes=require('./squareReportDetail.attributes');module[_0x9088('0x8')]=function(_0x518647,_0x322e86){return _0x518647[_0x9088('0x9')](_0x9088('0xa'),attributes,{'tableName':_0x9088('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbde8=['SquareDetailsReport','report_square_details','util','../../config/logger','api','moment','bluebird','request-promise','path','./squareReportDetail.attributes','define'];(function(_0x37ea24,_0x4845e5){var _0x23589b=function(_0x2b6447){while(--_0x2b6447){_0x37ea24['push'](_0x37ea24['shift']());}};_0x23589b(++_0x4845e5);}(_0xbde8,0x1c5));var _0x8bde=function(_0x122cc1,_0x5c956e){_0x122cc1=_0x122cc1-0x0;var _0x1e33af=_0xbde8[_0x122cc1];return _0x1e33af;};'use strict';var _=require('lodash');var util=require(_0x8bde('0x0'));var logger=require(_0x8bde('0x1'))(_0x8bde('0x2'));var moment=require(_0x8bde('0x3'));var BPromise=require(_0x8bde('0x4'));var rp=require(_0x8bde('0x5'));var fs=require('fs');var path=require(_0x8bde('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8bde('0x7'));module['exports']=function(_0x2e1d18,_0x3430b8){return _0x2e1d18[_0x8bde('0x8')](_0x8bde('0x9'),attributes,{'tableName':_0x8bde('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4862ca3..2d29e53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3266=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareDetailsReport,\x20%s,\x20%s','message','body','options','raw','catch','CreateSquareDetailsReport','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x1e44e2,_0x1b58b2){var _0x2d1878=function(_0xf8aae3){while(--_0xf8aae3){_0x1e44e2['push'](_0x1e44e2['shift']());}};_0x2d1878(++_0x1b58b2);}(_0x3266,0x6a));var _0x6326=function(_0x273dc5,_0x268a81){_0x273dc5=_0x273dc5-0x0;var _0x46dae7=_0x3266[_0x273dc5];return _0x46dae7;};'use strict';var _=require(_0x6326('0x0'));var util=require(_0x6326('0x1'));var moment=require(_0x6326('0x2'));var BPromise=require(_0x6326('0x3'));var rs=require(_0x6326('0x4'));var fs=require('fs');var Redis=require(_0x6326('0x5'));var db=require(_0x6326('0x6'))['db'];var utils=require(_0x6326('0x7'));var logger=require(_0x6326('0x8'))('rpc');var config=require(_0x6326('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6326('0xa')][_0x6326('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x14208e,_0x5402e5,_0x161f4e){return new BPromise(function(_0x5730e7,_0x2af571){return client[_0x6326('0xc')](_0x14208e,_0x161f4e)[_0x6326('0xd')](function(_0x1aee60){logger[_0x6326('0xe')]('SquareDetailsReport,\x20%s,\x20%s',_0x5402e5,_0x6326('0xf'));logger[_0x6326('0x10')](_0x6326('0x11'),_0x5402e5,_0x6326('0xf'),JSON[_0x6326('0x12')](_0x1aee60));if(_0x1aee60[_0x6326('0x13')]){if(_0x1aee60[_0x6326('0x13')][_0x6326('0x14')]===0x1f4){logger[_0x6326('0x13')](_0x6326('0x15'),_0x5402e5,_0x1aee60['error']['message']);return _0x2af571(_0x1aee60[_0x6326('0x13')][_0x6326('0x16')]);}logger['error'](_0x6326('0x15'),_0x5402e5,_0x1aee60['error'][_0x6326('0x16')]);return _0x5730e7(_0x1aee60[_0x6326('0x13')][_0x6326('0x16')]);}else{logger[_0x6326('0xe')](_0x6326('0x15'),_0x5402e5,_0x6326('0xf'));_0x5730e7(_0x1aee60['result'][_0x6326('0x16')]);}})['catch'](function(_0x5945ee){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x5402e5,_0x5945ee);_0x2af571(_0x5945ee);});});}exports['CreateSquareDetailsReport']=function(_0x58e960){var _0xdf5ced=this;return new Promise(function(_0x1f4c11,_0x2be78e){return db['SquareDetailsReport']['create'](_0x58e960[_0x6326('0x17')],{'raw':_0x58e960[_0x6326('0x18')]?_0x58e960[_0x6326('0x18')][_0x6326('0x19')]===undefined?!![]:![]:!![]})[_0x6326('0xd')](function(_0x25957a){logger[_0x6326('0xe')]('CreateSquareDetailsReport',_0x58e960);logger[_0x6326('0x10')]('CreateSquareDetailsReport',_0x58e960,JSON[_0x6326('0x12')](_0x25957a));_0x1f4c11(_0x25957a);})[_0x6326('0x1a')](function(_0x2482ef){logger[_0x6326('0x13')](_0x6326('0x1b'),_0x2482ef[_0x6326('0x16')],_0x58e960);_0x2be78e(_0xdf5ced[_0x6326('0x13')](0x1f4,_0x2482ef[_0x6326('0x16')]));});});};
\ No newline at end of file
+var _0x0abf=['catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','then','lodash','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SquareDetailsReport,\x20%s,\x20%s','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result'];(function(_0x554422,_0x32cb1a){var _0xe84b1e=function(_0x4f48e9){while(--_0x4f48e9){_0x554422['push'](_0x554422['shift']());}};_0xe84b1e(++_0x32cb1a);}(_0x0abf,0xe8));var _0xf0ab=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0abf[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xf0ab('0x0'));var util=require('util');var moment=require(_0xf0ab('0x1'));var BPromise=require(_0xf0ab('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf0ab('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xf0ab('0x4'))(_0xf0ab('0x5'));var config=require(_0xf0ab('0x6'));var jayson=require(_0xf0ab('0x7'));var client=jayson[_0xf0ab('0x8')][_0xf0ab('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x233afe,_0x57ff3b,_0x2c4628){return new BPromise(function(_0x3f7e2b,_0x3ca099){return client[_0xf0ab('0xa')](_0x233afe,_0x2c4628)['then'](function(_0x472508){logger[_0xf0ab('0xb')](_0xf0ab('0xc'),_0x57ff3b,'request\x20sent');logger['debug'](_0xf0ab('0xd'),_0x57ff3b,'request\x20sent',JSON[_0xf0ab('0xe')](_0x472508));if(_0x472508[_0xf0ab('0xf')]){if(_0x472508[_0xf0ab('0xf')][_0xf0ab('0x10')]===0x1f4){logger[_0xf0ab('0xf')](_0xf0ab('0xc'),_0x57ff3b,_0x472508[_0xf0ab('0xf')]['message']);return _0x3ca099(_0x472508[_0xf0ab('0xf')][_0xf0ab('0x11')]);}logger[_0xf0ab('0xf')](_0xf0ab('0xc'),_0x57ff3b,_0x472508[_0xf0ab('0xf')][_0xf0ab('0x11')]);return _0x3f7e2b(_0x472508[_0xf0ab('0xf')][_0xf0ab('0x11')]);}else{logger[_0xf0ab('0xb')](_0xf0ab('0xc'),_0x57ff3b,_0xf0ab('0x12'));_0x3f7e2b(_0x472508[_0xf0ab('0x13')][_0xf0ab('0x11')]);}})[_0xf0ab('0x14')](function(_0x230f40){logger['error'](_0xf0ab('0xc'),_0x57ff3b,_0x230f40);_0x3ca099(_0x230f40);});});}exports[_0xf0ab('0x15')]=function(_0x1803f0){var _0x1ffeb5=this;return new Promise(function(_0x776619,_0xb9a33){return db[_0xf0ab('0x16')][_0xf0ab('0x17')](_0x1803f0[_0xf0ab('0x18')],{'raw':_0x1803f0[_0xf0ab('0x19')]?_0x1803f0[_0xf0ab('0x19')][_0xf0ab('0x1a')]===undefined?!![]:![]:!![]})[_0xf0ab('0x1b')](function(_0x22a205){logger[_0xf0ab('0xb')](_0xf0ab('0x15'),_0x1803f0);logger['debug'](_0xf0ab('0x15'),_0x1803f0,JSON[_0xf0ab('0xe')](_0x22a205));_0x776619(_0x22a205);})[_0xf0ab('0x14')](function(_0x11ab3a){logger[_0xf0ab('0xf')](_0xf0ab('0x15'),_0x11ab3a[_0xf0ab('0x11')],_0x1803f0);_0xb9a33(_0x1ffeb5[_0xf0ab('0xf')](0x1f4,_0x11ab3a[_0xf0ab('0x11')]));});});};
\ No newline at end of file
index 2f7746c..dd7c104 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7f8=['Router','../../components/auth/service','get','isAuthenticated','index','/process/:pid/kill','killProcess'];(function(_0xbceb8d,_0x482279){var _0x121a58=function(_0x1e6c98){while(--_0x1e6c98){_0xbceb8d['push'](_0xbceb8d['shift']());}};_0x121a58(++_0x482279);}(_0xc7f8,0xfc));var _0x8c7f=function(_0x265910,_0x1815ee){_0x265910=_0x265910-0x0;var _0x2e2c72=_0xc7f8[_0x265910];return _0x2e2c72;};'use strict';var express=require('express');var router=express[_0x8c7f('0x0')]();var auth=require(_0x8c7f('0x1'));var controller=require('./system.controller');router[_0x8c7f('0x2')]('/',auth[_0x8c7f('0x3')](),controller[_0x8c7f('0x4')]);router[_0x8c7f('0x2')](_0x8c7f('0x5'),auth['isAuthenticated'](),controller[_0x8c7f('0x6')]);module['exports']=router;
\ No newline at end of file
+var _0xdf37=['/process/:pid/kill','isAuthenticated','killProcess','express','Router','../../components/auth/service','./system.controller','get','index'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xdf37,0xc0));var _0x7df3=function(_0x1b6af4,_0x37f6eb){_0x1b6af4=_0x1b6af4-0x0;var _0x24654c=_0xdf37[_0x1b6af4];return _0x24654c;};'use strict';var express=require(_0x7df3('0x0'));var router=express[_0x7df3('0x1')]();var auth=require(_0x7df3('0x2'));var controller=require(_0x7df3('0x3'));router[_0x7df3('0x4')]('/',auth['isAuthenticated'](),controller[_0x7df3('0x5')]);router[_0x7df3('0x4')](_0x7df3('0x6'),auth[_0x7df3('0x7')](),controller[_0x7df3('0x8')]);module['exports']=router;
\ No newline at end of file
index 3e549c4..3ae9965 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15f4=['inspect','name','status','send','index','getAllData','then','json','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','Process\x20with\x20pid\x20%s\x20killed\x20correctly','catch','systeminformation','child_process','../../config/logger','api','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s'];(function(_0x57e21d,_0x71a800){var _0x3a057e=function(_0x35b9d8){while(--_0x35b9d8){_0x57e21d['push'](_0x57e21d['shift']());}};_0x3a057e(++_0x71a800);}(_0x15f4,0x1aa));var _0x415f=function(_0x2de245,_0x4ddd2e){_0x2de245=_0x2de245-0x0;var _0x845d5d=_0x15f4[_0x2de245];return _0x845d5d;};'use strict';var info=require(_0x415f('0x0'));var exec=require(_0x415f('0x1'))['exec'];var logger=require(_0x415f('0x2'))(_0x415f('0x3'));var util=require(_0x415f('0x4'));var BPromise=require(_0x415f('0x5'));var _=require(_0x415f('0x6'));function handleError(_0x43bbd5,_0x4c3df5,_0x4065cc){_0x4c3df5=_0x4c3df5||0x1f4;return function(_0x4bb39d){logger[_0x415f('0x7')](_0x415f('0x8'),_0x4065cc,_0x4c3df5,util[_0x415f('0x9')](_0x4bb39d,{'showHidden':![],'depth':null}));delete _0x4bb39d[_0x415f('0xa')];_0x43bbd5[_0x415f('0xb')](_0x4c3df5)[_0x415f('0xc')](_0x4bb39d);};}exports[_0x415f('0xd')]=function(_0x1a1687,_0x2b0104){return info[_0x415f('0xe')]()[_0x415f('0xf')](function(_0x3e36c2){return _0x2b0104['status'](0xc8)[_0x415f('0x10')](_0x3e36c2);})['catch'](function(_0x3265c5){return _0x2b0104[_0x415f('0xb')](0x1f4)['json'](_0x3265c5);});};exports[_0x415f('0x11')]=function(_0x5b71a3,_0x2b473e){var _0x2e708c=[_0x415f('0x12')];return new BPromise(function(_0x1aad8a,_0x26a0bb){return exec(util[_0x415f('0x13')](_0x415f('0x14'),_0x5b71a3['params'][_0x415f('0x15')]),function(_0x348c94,_0x4dd5a3,_0x419839){if(_0x348c94){return _0x26a0bb(_0x348c94);}return _0x1aad8a(_0x4dd5a3);});})['then'](function(_0x504254){var _0x5c2b1a=![];var _0x3aa2c0=_0x504254['split'](/\n/);for(var _0x30699e=0x0,_0x54f1f8=_0x2e708c[_0x415f('0x16')];_0x30699e<_0x54f1f8,_0x5c2b1a===![];_0x30699e+=0x1){if(_0x504254[_0x415f('0x17')](_0x2e708c[_0x30699e])>=0x0){_0x5c2b1a=!![];}}if(!_0x5c2b1a){throw new Error(util['format'](_0x415f('0x18'),_0x5b71a3[_0x415f('0x19')]['pid']));}process[_0x415f('0x1a')](_0x5b71a3[_0x415f('0x19')]['pid'],'SIGINT');return _0x2b473e['status'](0xc8)[_0x415f('0x10')]({'message':util[_0x415f('0x13')](_0x415f('0x1b'),_0x5b71a3[_0x415f('0x19')]['pid'])});})[_0x415f('0x1c')](handleError(_0x2b473e,null,_0x415f('0x11')));};
\ No newline at end of file
+var _0x52cb=['indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','Process\x20with\x20pid\x20%s\x20killed\x20correctly','child_process','api','util','bluebird','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','status','send','index','then','json','killProcess','components/import/cm','format','params','pid','split','length'];(function(_0x39b0c3,_0x160adf){var _0x1b6697=function(_0x2b9bcd){while(--_0x2b9bcd){_0x39b0c3['push'](_0x39b0c3['shift']());}};_0x1b6697(++_0x160adf);}(_0x52cb,0x115));var _0xb52c=function(_0x4974c3,_0x5107ed){_0x4974c3=_0x4974c3-0x0;var _0x453577=_0x52cb[_0x4974c3];return _0x453577;};'use strict';var info=require('systeminformation');var exec=require(_0xb52c('0x0'))['exec'];var logger=require('../../config/logger')(_0xb52c('0x1'));var util=require(_0xb52c('0x2'));var BPromise=require(_0xb52c('0x3'));var _=require('lodash');function handleError(_0x4db808,_0x129be8,_0x310ba2){_0x129be8=_0x129be8||0x1f4;return function(_0x26d6b4){logger['error'](_0xb52c('0x4'),_0x310ba2,_0x129be8,util['inspect'](_0x26d6b4,{'showHidden':![],'depth':null}));delete _0x26d6b4['name'];_0x4db808[_0xb52c('0x5')](_0x129be8)[_0xb52c('0x6')](_0x26d6b4);};}exports[_0xb52c('0x7')]=function(_0x4c5546,_0x1a3613){return info['getAllData']()[_0xb52c('0x8')](function(_0x154742){return _0x1a3613['status'](0xc8)[_0xb52c('0x9')](_0x154742);})['catch'](function(_0x5bbe70){return _0x1a3613[_0xb52c('0x5')](0x1f4)[_0xb52c('0x9')](_0x5bbe70);});};exports[_0xb52c('0xa')]=function(_0x5f49aa,_0x5b82cb){var _0x13149a=[_0xb52c('0xb')];return new BPromise(function(_0x46061e,_0xbaee61){return exec(util[_0xb52c('0xc')]('ps\x20-p\x20%s\x20-ww\x20-o\x20args',_0x5f49aa[_0xb52c('0xd')][_0xb52c('0xe')]),function(_0x34692e,_0x41c9d0,_0x333c46){if(_0x34692e){return _0xbaee61(_0x34692e);}return _0x46061e(_0x41c9d0);});})[_0xb52c('0x8')](function(_0x4b4535){var _0x3a8f70=![];var _0xb4ca94=_0x4b4535[_0xb52c('0xf')](/\n/);for(var _0x5ddefe=0x0,_0x54731e=_0x13149a[_0xb52c('0x10')];_0x5ddefe<_0x54731e,_0x3a8f70===![];_0x5ddefe+=0x1){if(_0x4b4535[_0xb52c('0x11')](_0x13149a[_0x5ddefe])>=0x0){_0x3a8f70=!![];}}if(!_0x3a8f70){throw new Error(util['format'](_0xb52c('0x12'),_0x5f49aa[_0xb52c('0xd')]['pid']));}process[_0xb52c('0x13')](_0x5f49aa[_0xb52c('0xd')][_0xb52c('0xe')],'SIGINT');return _0x5b82cb['status'](0xc8)[_0xb52c('0x9')]({'message':util[_0xb52c('0xc')](_0xb52c('0x14'),_0x5f49aa[_0xb52c('0xd')][_0xb52c('0xe')])});})['catch'](handleError(_0x5b82cb,null,_0xb52c('0xa')));};
\ No newline at end of file
index b7959b2..d521b81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9025=['../../components/interaction/service','../../config/environment','./tag.controller','get','isAuthenticated','show','create','put','/:id','delete','destroy','exports','connect-timeout','express','Router','../../components/auth/service'];(function(_0x52cc18,_0x4a66b9){var _0x3244e9=function(_0x43590e){while(--_0x43590e){_0x52cc18['push'](_0x52cc18['shift']());}};_0x3244e9(++_0x4a66b9);}(_0x9025,0x17c));var _0x5902=function(_0x22802a,_0x36e544){_0x22802a=_0x22802a-0x0;var _0x25f90d=_0x9025[_0x22802a];return _0x25f90d;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x5902('0x0'));var express=require(_0x5902('0x1'));var router=express[_0x5902('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x5902('0x3'));var interaction=require(_0x5902('0x4'));var config=require(_0x5902('0x5'));var controller=require(_0x5902('0x6'));router[_0x5902('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0x5902('0x8')](),controller[_0x5902('0x9')]);router['post']('/',auth[_0x5902('0x8')](),controller[_0x5902('0xa')]);router[_0x5902('0xb')](_0x5902('0xc'),auth[_0x5902('0x8')](),controller['update']);router[_0x5902('0xd')](_0x5902('0xc'),auth[_0x5902('0x8')](),controller[_0x5902('0xe')]);module[_0x5902('0xf')]=router;
\ No newline at end of file
+var _0x9ab8=['get','isAuthenticated','index','/:id','show','post','create','put','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','./tag.controller'];(function(_0x3da2ec,_0x275558){var _0x2de712=function(_0x2f3de8){while(--_0x2f3de8){_0x3da2ec['push'](_0x3da2ec['shift']());}};_0x2de712(++_0x275558);}(_0x9ab8,0x81));var _0x89ab=function(_0x4acee1,_0x578b6f){_0x4acee1=_0x4acee1-0x0;var _0x187d07=_0x9ab8[_0x4acee1];return _0x187d07;};'use strict';var multer=require(_0x89ab('0x0'));var util=require(_0x89ab('0x1'));var path=require(_0x89ab('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x89ab('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x89ab('0x4'));var interaction=require(_0x89ab('0x5'));var config=require('../../config/environment');var controller=require(_0x89ab('0x6'));router[_0x89ab('0x7')]('/',auth[_0x89ab('0x8')](),controller[_0x89ab('0x9')]);router[_0x89ab('0x7')](_0x89ab('0xa'),auth[_0x89ab('0x8')](),controller[_0x89ab('0xb')]);router[_0x89ab('0xc')]('/',auth[_0x89ab('0x8')](),controller[_0x89ab('0xd')]);router[_0x89ab('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x89ab('0x8')](),controller[_0x89ab('0xf')]);module[_0x89ab('0x10')]=router;
\ No newline at end of file
index 2cf423a..0ffda8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab75=['exports','STRING','#0091EA','sequelize'];(function(_0x2af3ae,_0x405156){var _0x2e3c56=function(_0x4df9b5){while(--_0x4df9b5){_0x2af3ae['push'](_0x2af3ae['shift']());}};_0x2e3c56(++_0x405156);}(_0xab75,0x11f));var _0x5ab7=function(_0x231685,_0x1db8a1){_0x231685=_0x231685-0x0;var _0x14f842=_0xab75[_0x231685];return _0x14f842;};'use strict';var Sequelize=require(_0x5ab7('0x0'));module[_0x5ab7('0x1')]={'name':{'type':Sequelize[_0x5ab7('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':_0x5ab7('0x3')},'description':{'type':Sequelize[_0x5ab7('0x2')]}};
\ No newline at end of file
+var _0x0ac0=['sequelize','exports','STRING','#0091EA'];(function(_0x392d17,_0x1abe0b){var _0x3a8745=function(_0x13093f){while(--_0x13093f){_0x392d17['push'](_0x392d17['shift']());}};_0x3a8745(++_0x1abe0b);}(_0x0ac0,0x130));var _0x00ac=function(_0x233cb1,_0x8ca9a2){_0x233cb1=_0x233cb1-0x0;var _0x29ee7e=_0x0ac0[_0x233cb1];return _0x29ee7e;};'use strict';var Sequelize=require(_0x00ac('0x0'));module[_0x00ac('0x1')]={'name':{'type':Sequelize[_0x00ac('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x00ac('0x2')],'defaultValue':_0x00ac('0x3')},'description':{'type':Sequelize[_0x00ac('0x2')]}};
\ No newline at end of file
index 319ecc5..fbb2277 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f9f=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','get','Tags','UserProfileResource','error','stack','name','send','index','map','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','Tag','include','rows','catch','show','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','update','params','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x398edb,_0x376876){var _0x521ef9=function(_0x1f138d){while(--_0x1f138d){_0x398edb['push'](_0x398edb['shift']());}};_0x521ef9(++_0x376876);}(_0x0f9f,0x1cc));var _0xf0f9=function(_0xf8f75,_0x21f39c){_0xf8f75=_0xf8f75-0x0;var _0x3ee326=_0x0f9f[_0xf8f75];return _0x3ee326;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf0f9('0x0'));var zipdir=require(_0xf0f9('0x1'));var jsonpatch=require(_0xf0f9('0x2'));var rp=require('request-promise');var moment=require(_0xf0f9('0x3'));var BPromise=require(_0xf0f9('0x4'));var Mustache=require(_0xf0f9('0x5'));var util=require(_0xf0f9('0x6'));var path=require(_0xf0f9('0x7'));var sox=require(_0xf0f9('0x8'));var csv=require(_0xf0f9('0x9'));var ejs=require(_0xf0f9('0xa'));var fs=require('fs');var fs_extra=require(_0xf0f9('0xb'));var _=require(_0xf0f9('0xc'));var squel=require('squel');var crypto=require(_0xf0f9('0xd'));var jsforce=require(_0xf0f9('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf0f9('0x9'));var querystring=require(_0xf0f9('0xf'));var Papa=require(_0xf0f9('0x10'));var Redis=require('ioredis');var authService=require(_0xf0f9('0x11'));var qs=require(_0xf0f9('0x12'));var as=require(_0xf0f9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf0f9('0x14'));var utils=require(_0xf0f9('0x15'));var config=require(_0xf0f9('0x16'));var licenseUtil=require(_0xf0f9('0x17'));var db=require(_0xf0f9('0x18'))['db'];function respondWithStatusCode(_0x32d17f,_0x2360eb){_0x2360eb=_0x2360eb||0xcc;return function(_0x4f27c2){if(_0x4f27c2){return _0x32d17f[_0xf0f9('0x19')](_0x2360eb);}return _0x32d17f[_0xf0f9('0x1a')](_0x2360eb)[_0xf0f9('0x1b')]();};}function respondWithResult(_0x200514,_0x524169){_0x524169=_0x524169||0xc8;return function(_0x51d78a){if(_0x51d78a){return _0x200514[_0xf0f9('0x1a')](_0x524169)[_0xf0f9('0x1c')](_0x51d78a);}};}function respondWithFilteredResult(_0xa7d48c,_0x2e2955){return function(_0x2b05e3){if(_0x2b05e3){var _0x2f5bec=typeof _0x2e2955[_0xf0f9('0x1d')]===_0xf0f9('0x1e')&&typeof _0x2e2955[_0xf0f9('0x1f')]===_0xf0f9('0x1e');var _0x4d3534=_0x2b05e3['count'];var _0x350a48=_0x2f5bec?0x0:_0x2e2955[_0xf0f9('0x1d')];var _0x4c4e17=_0x2f5bec?_0x2b05e3[_0xf0f9('0x20')]:_0x2e2955['offset']+_0x2e2955['limit'];var _0x42c157;if(_0x4c4e17>=_0x4d3534){_0x4c4e17=_0x4d3534;_0x42c157=0xc8;}else{_0x42c157=0xce;}_0xa7d48c[_0xf0f9('0x1a')](_0x42c157);return _0xa7d48c[_0xf0f9('0x21')](_0xf0f9('0x22'),_0x350a48+'-'+_0x4c4e17+'/'+_0x4d3534)[_0xf0f9('0x1c')](_0x2b05e3);}return null;};}function patchUpdates(_0x4ed9ff){return function(_0x5ccbc9){try{jsonpatch['apply'](_0x5ccbc9,_0x4ed9ff,!![]);}catch(_0x102336){return BPromise[_0xf0f9('0x23')](_0x102336);}return _0x5ccbc9[_0xf0f9('0x24')]();};}function saveUpdates(_0x5d87a9,_0x4a8726){return function(_0x209cd4){if(_0x209cd4){return _0x209cd4['update'](_0x5d87a9)[_0xf0f9('0x25')](function(_0x414f87){return _0x414f87;});}return null;};}function removeEntity(_0x173c79,_0x570c68){return function(_0x33dfca){if(_0x33dfca){return _0x33dfca[_0xf0f9('0x26')]()[_0xf0f9('0x25')](function(){var _0x49a2dd=_0x33dfca[_0xf0f9('0x27')]({'plain':!![]});var _0x33f070=_0xf0f9('0x28');return db[_0xf0f9('0x29')][_0xf0f9('0x26')]({'where':{'type':_0x33f070,'resourceId':_0x49a2dd['id']}})[_0xf0f9('0x25')](function(){return _0x33dfca;});})['then'](function(){_0x173c79[_0xf0f9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1288e0,_0x30e85c){return function(_0x519a46){if(!_0x519a46){_0x1288e0['sendStatus'](0x194);}return _0x519a46;};}function handleError(_0x119793,_0x50e7f6){_0x50e7f6=_0x50e7f6||0x1f4;return function(_0x2121b8){logger[_0xf0f9('0x2a')](_0x2121b8[_0xf0f9('0x2b')]);if(_0x2121b8[_0xf0f9('0x2c')]){delete _0x2121b8[_0xf0f9('0x2c')];}_0x119793[_0xf0f9('0x1a')](_0x50e7f6)[_0xf0f9('0x2d')](_0x2121b8);};}exports[_0xf0f9('0x2e')]=function(_0x37c093,_0x4e4e08){var _0x2e79f9={},_0x28da31={},_0x534083={'count':0x0,'rows':[]};var _0x48ef2a=_[_0xf0f9('0x2f')](db['Tag']['rawAttributes'],function(_0x14f3cb){return{'name':_0x14f3cb['fieldName'],'type':_0x14f3cb[_0xf0f9('0x30')][_0xf0f9('0x31')]};});_0x28da31['model']=_['map'](_0x48ef2a,_0xf0f9('0x2c'));_0x28da31[_0xf0f9('0x32')]=_[_0xf0f9('0x33')](_0x37c093[_0xf0f9('0x32')]);_0x28da31[_0xf0f9('0x34')]=_[_0xf0f9('0x35')](_0x28da31[_0xf0f9('0x36')],_0x28da31[_0xf0f9('0x32')]);_0x2e79f9[_0xf0f9('0x37')]=_[_0xf0f9('0x35')](_0x28da31[_0xf0f9('0x36')],qs[_0xf0f9('0x38')](_0x37c093[_0xf0f9('0x32')]['fields']));_0x2e79f9[_0xf0f9('0x37')]=_0x2e79f9['attributes'][_0xf0f9('0x39')]?_0x2e79f9[_0xf0f9('0x37')]:_0x28da31[_0xf0f9('0x36')];if(!_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x3a')](_0xf0f9('0x3b'))){_0x2e79f9[_0xf0f9('0x1f')]=qs['limit'](_0x37c093['query'][_0xf0f9('0x1f')]);_0x2e79f9[_0xf0f9('0x1d')]=qs[_0xf0f9('0x1d')](_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x1d')]);}_0x2e79f9['order']=qs[_0xf0f9('0x3c')](_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x3c')]);_0x2e79f9[_0xf0f9('0x3d')]=qs[_0xf0f9('0x34')](_['pick'](_0x37c093[_0xf0f9('0x32')],_0x28da31[_0xf0f9('0x34')]),_0x48ef2a);if(_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x3e')]){_0x2e79f9[_0xf0f9('0x3d')]=_[_0xf0f9('0x3f')](_0x2e79f9['where'],{'$or':_[_0xf0f9('0x2f')](_0x48ef2a,function(_0x1b84ef){if(_0x1b84ef[_0xf0f9('0x30')]!=='VIRTUAL'){var _0x3b52e3={};_0x3b52e3[_0x1b84ef[_0xf0f9('0x2c')]]={'$like':'%'+_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x3e')]+'%'};return _0x3b52e3;}})});}_0x2e79f9=_[_0xf0f9('0x3f')]({},_0x2e79f9,_0x37c093[_0xf0f9('0x40')]);var _0x1e1805={'where':_0x2e79f9[_0xf0f9('0x3d')]};return db[_0xf0f9('0x41')][_0xf0f9('0x20')](_0x1e1805)[_0xf0f9('0x25')](function(_0x149870){_0x534083[_0xf0f9('0x20')]=_0x149870;if(_0x37c093['query']['includeAll']){_0x2e79f9[_0xf0f9('0x42')]=[{'all':!![]}];}return db['Tag']['findAll'](_0x2e79f9);})['then'](function(_0x2cb95d){_0x534083[_0xf0f9('0x43')]=_0x2cb95d;return _0x534083;})[_0xf0f9('0x25')](respondWithFilteredResult(_0x4e4e08,_0x2e79f9))[_0xf0f9('0x44')](handleError(_0x4e4e08,null));};exports[_0xf0f9('0x45')]=function(_0xfef8ad,_0xc0c34c){var _0x2e1556={'raw':!![],'where':{'id':_0xfef8ad['params']['id']}},_0x1a3a6b={};_0x1a3a6b[_0xf0f9('0x36')]=_[_0xf0f9('0x33')](db[_0xf0f9('0x41')]['rawAttributes']);_0x1a3a6b[_0xf0f9('0x32')]=_[_0xf0f9('0x33')](_0xfef8ad[_0xf0f9('0x32')]);_0x1a3a6b['filters']=_[_0xf0f9('0x35')](_0x1a3a6b[_0xf0f9('0x36')],_0x1a3a6b['query']);_0x2e1556[_0xf0f9('0x37')]=_[_0xf0f9('0x35')](_0x1a3a6b[_0xf0f9('0x36')],qs[_0xf0f9('0x38')](_0xfef8ad['query'][_0xf0f9('0x38')]));_0x2e1556[_0xf0f9('0x37')]=_0x2e1556[_0xf0f9('0x37')][_0xf0f9('0x39')]?_0x2e1556[_0xf0f9('0x37')]:_0x1a3a6b[_0xf0f9('0x36')];if(_0xfef8ad['query'][_0xf0f9('0x46')]){_0x2e1556['include']=[{'all':!![]}];}_0x2e1556=_[_0xf0f9('0x3f')]({},_0x2e1556,_0xfef8ad[_0xf0f9('0x40')]);return db[_0xf0f9('0x41')][_0xf0f9('0x47')](_0x2e1556)[_0xf0f9('0x25')](handleEntityNotFound(_0xc0c34c,null))[_0xf0f9('0x25')](respondWithResult(_0xc0c34c,null))[_0xf0f9('0x44')](handleError(_0xc0c34c,null));};exports[_0xf0f9('0x48')]=function(_0x1f47fa,_0x13bb13){return db[_0xf0f9('0x41')][_0xf0f9('0x48')](_0x1f47fa[_0xf0f9('0x49')],{})[_0xf0f9('0x25')](function(_0x45a165){var _0x3cb91a=_0x1f47fa[_0xf0f9('0x4a')][_0xf0f9('0x27')]({'plain':!![]});if(!_0x3cb91a)throw new Error(_0xf0f9('0x4b'));if(_0x3cb91a[_0xf0f9('0x4c')]===_0xf0f9('0x4a')){var _0x40711c=_0x45a165[_0xf0f9('0x27')]({'plain':!![]});var _0x37a928='Tags';return db['UserProfileSection'][_0xf0f9('0x47')]({'where':{'name':_0x37a928,'userProfileId':_0x3cb91a['userProfileId']},'raw':!![]})[_0xf0f9('0x25')](function(_0x2c364c){if(_0x2c364c&&_0x2c364c[_0xf0f9('0x4d')]===0x0){return db['UserProfileResource'][_0xf0f9('0x48')]({'name':_0x40711c['name'],'resourceId':_0x40711c['id'],'type':_0x2c364c[_0xf0f9('0x2c')],'sectionId':_0x2c364c['id']},{})[_0xf0f9('0x25')](function(){return _0x45a165;});}else{return _0x45a165;}})[_0xf0f9('0x44')](function(_0xfe9072){logger[_0xf0f9('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xfe9072);throw _0xfe9072;});}return _0x45a165;})[_0xf0f9('0x25')](respondWithResult(_0x13bb13,0xc9))['catch'](handleError(_0x13bb13,null));};exports[_0xf0f9('0x4e')]=function(_0x1b0186,_0xb3467e){if(_0x1b0186[_0xf0f9('0x49')]['id']){delete _0x1b0186[_0xf0f9('0x49')]['id'];}return db['Tag'][_0xf0f9('0x47')]({'where':{'id':_0x1b0186[_0xf0f9('0x4f')]['id']}})[_0xf0f9('0x25')](handleEntityNotFound(_0xb3467e,null))[_0xf0f9('0x25')](saveUpdates(_0x1b0186[_0xf0f9('0x49')],null))[_0xf0f9('0x25')](respondWithResult(_0xb3467e,null))[_0xf0f9('0x44')](handleError(_0xb3467e,null));};exports[_0xf0f9('0x26')]=function(_0x15f3b3,_0x406b45){return db[_0xf0f9('0x41')][_0xf0f9('0x47')]({'where':{'id':_0x15f3b3[_0xf0f9('0x4f')]['id']}})[_0xf0f9('0x25')](handleEntityNotFound(_0x406b45,null))['then'](removeEntity(_0x406b45,null))[_0xf0f9('0x44')](handleError(_0x406b45,null));};
\ No newline at end of file
+var _0x5c12=['reject','update','then','destroy','get','UserProfileResource','end','sendStatus','stack','name','send','index','map','fieldName','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','offset','order','sort','pick','filter','merge','where','type','options','includeAll','include','Tag','rows','show','fields','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Tags','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','json','limit','undefined','count','set','Content-Range','apply'];(function(_0x5b5f98,_0x430e9f){var _0x292f83=function(_0x4b6060){while(--_0x4b6060){_0x5b5f98['push'](_0x5b5f98['shift']());}};_0x292f83(++_0x430e9f);}(_0x5c12,0x188));var _0x25c1=function(_0x5a5395,_0x5361f6){_0x5a5395=_0x5a5395-0x0;var _0x4da43d=_0x5c12[_0x5a5395];return _0x4da43d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x25c1('0x0'));var zipdir=require(_0x25c1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x25c1('0x2'));var moment=require(_0x25c1('0x3'));var BPromise=require(_0x25c1('0x4'));var Mustache=require(_0x25c1('0x5'));var util=require(_0x25c1('0x6'));var path=require(_0x25c1('0x7'));var sox=require(_0x25c1('0x8'));var csv=require('to-csv');var ejs=require(_0x25c1('0x9'));var fs=require('fs');var fs_extra=require(_0x25c1('0xa'));var _=require(_0x25c1('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x25c1('0xc'));var deskjs=require(_0x25c1('0xd'));var toCsv=require(_0x25c1('0xe'));var querystring=require(_0x25c1('0xf'));var Papa=require(_0x25c1('0x10'));var Redis=require('ioredis');var authService=require(_0x25c1('0x11'));var qs=require(_0x25c1('0x12'));var as=require(_0x25c1('0x13'));var hardwareService=require(_0x25c1('0x14'));var logger=require(_0x25c1('0x15'))('api');var utils=require(_0x25c1('0x16'));var config=require(_0x25c1('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x25c1('0x18'))['db'];function respondWithStatusCode(_0x209af5,_0x323d3c){_0x323d3c=_0x323d3c||0xcc;return function(_0x329ba9){if(_0x329ba9){return _0x209af5['sendStatus'](_0x323d3c);}return _0x209af5['status'](_0x323d3c)['end']();};}function respondWithResult(_0x54f6f4,_0x3ef429){_0x3ef429=_0x3ef429||0xc8;return function(_0x1412ed){if(_0x1412ed){return _0x54f6f4[_0x25c1('0x19')](_0x3ef429)[_0x25c1('0x1a')](_0x1412ed);}};}function respondWithFilteredResult(_0x17a032,_0x4ea926){return function(_0x4638f0){if(_0x4638f0){var _0x55b62d=typeof _0x4ea926['offset']==='undefined'&&typeof _0x4ea926[_0x25c1('0x1b')]===_0x25c1('0x1c');var _0x4dc64b=_0x4638f0['count'];var _0x61a29f=_0x55b62d?0x0:_0x4ea926['offset'];var _0x7175d4=_0x55b62d?_0x4638f0[_0x25c1('0x1d')]:_0x4ea926['offset']+_0x4ea926['limit'];var _0x542768;if(_0x7175d4>=_0x4dc64b){_0x7175d4=_0x4dc64b;_0x542768=0xc8;}else{_0x542768=0xce;}_0x17a032[_0x25c1('0x19')](_0x542768);return _0x17a032[_0x25c1('0x1e')](_0x25c1('0x1f'),_0x61a29f+'-'+_0x7175d4+'/'+_0x4dc64b)[_0x25c1('0x1a')](_0x4638f0);}return null;};}function patchUpdates(_0x481c12){return function(_0x119639){try{jsonpatch[_0x25c1('0x20')](_0x119639,_0x481c12,!![]);}catch(_0x34454a){return BPromise[_0x25c1('0x21')](_0x34454a);}return _0x119639['save']();};}function saveUpdates(_0x4c3259,_0x2a8a84){return function(_0xac3335){if(_0xac3335){return _0xac3335[_0x25c1('0x22')](_0x4c3259)[_0x25c1('0x23')](function(_0x15cf2f){return _0x15cf2f;});}return null;};}function removeEntity(_0x1a4b89,_0x2ba595){return function(_0x324ea9){if(_0x324ea9){return _0x324ea9[_0x25c1('0x24')]()[_0x25c1('0x23')](function(){var _0x2f78dd=_0x324ea9[_0x25c1('0x25')]({'plain':!![]});var _0x399d72='Tags';return db[_0x25c1('0x26')][_0x25c1('0x24')]({'where':{'type':_0x399d72,'resourceId':_0x2f78dd['id']}})[_0x25c1('0x23')](function(){return _0x324ea9;});})[_0x25c1('0x23')](function(){_0x1a4b89[_0x25c1('0x19')](0xcc)[_0x25c1('0x27')]();});}};}function handleEntityNotFound(_0x5ad776,_0x17c924){return function(_0x428ce8){if(!_0x428ce8){_0x5ad776[_0x25c1('0x28')](0x194);}return _0x428ce8;};}function handleError(_0x38c1d5,_0x11c0ae){_0x11c0ae=_0x11c0ae||0x1f4;return function(_0x193a68){logger['error'](_0x193a68[_0x25c1('0x29')]);if(_0x193a68['name']){delete _0x193a68[_0x25c1('0x2a')];}_0x38c1d5[_0x25c1('0x19')](_0x11c0ae)[_0x25c1('0x2b')](_0x193a68);};}exports[_0x25c1('0x2c')]=function(_0x2e80b5,_0x21069c){var _0x1fd4e3={},_0x23f2f6={},_0x402f32={'count':0x0,'rows':[]};var _0x4d9882=_[_0x25c1('0x2d')](db['Tag']['rawAttributes'],function(_0x3db0ee){return{'name':_0x3db0ee[_0x25c1('0x2e')],'type':_0x3db0ee['type'][_0x25c1('0x2f')]};});_0x23f2f6['model']=_[_0x25c1('0x2d')](_0x4d9882,'name');_0x23f2f6[_0x25c1('0x30')]=_[_0x25c1('0x31')](_0x2e80b5[_0x25c1('0x30')]);_0x23f2f6[_0x25c1('0x32')]=_[_0x25c1('0x33')](_0x23f2f6[_0x25c1('0x34')],_0x23f2f6[_0x25c1('0x30')]);_0x1fd4e3[_0x25c1('0x35')]=_['intersection'](_0x23f2f6[_0x25c1('0x34')],qs['fields'](_0x2e80b5[_0x25c1('0x30')]['fields']));_0x1fd4e3[_0x25c1('0x35')]=_0x1fd4e3[_0x25c1('0x35')][_0x25c1('0x36')]?_0x1fd4e3[_0x25c1('0x35')]:_0x23f2f6[_0x25c1('0x34')];if(!_0x2e80b5[_0x25c1('0x30')][_0x25c1('0x37')](_0x25c1('0x38'))){_0x1fd4e3[_0x25c1('0x1b')]=qs[_0x25c1('0x1b')](_0x2e80b5[_0x25c1('0x30')][_0x25c1('0x1b')]);_0x1fd4e3[_0x25c1('0x39')]=qs[_0x25c1('0x39')](_0x2e80b5[_0x25c1('0x30')][_0x25c1('0x39')]);}_0x1fd4e3[_0x25c1('0x3a')]=qs[_0x25c1('0x3b')](_0x2e80b5[_0x25c1('0x30')][_0x25c1('0x3b')]);_0x1fd4e3['where']=qs[_0x25c1('0x32')](_[_0x25c1('0x3c')](_0x2e80b5['query'],_0x23f2f6[_0x25c1('0x32')]),_0x4d9882);if(_0x2e80b5['query'][_0x25c1('0x3d')]){_0x1fd4e3['where']=_[_0x25c1('0x3e')](_0x1fd4e3[_0x25c1('0x3f')],{'$or':_[_0x25c1('0x2d')](_0x4d9882,function(_0x3d6135){if(_0x3d6135[_0x25c1('0x40')]!=='VIRTUAL'){var _0x1fe6d7={};_0x1fe6d7[_0x3d6135['name']]={'$like':'%'+_0x2e80b5[_0x25c1('0x30')][_0x25c1('0x3d')]+'%'};return _0x1fe6d7;}})});}_0x1fd4e3=_[_0x25c1('0x3e')]({},_0x1fd4e3,_0x2e80b5[_0x25c1('0x41')]);var _0x57c65a={'where':_0x1fd4e3['where']};return db['Tag'][_0x25c1('0x1d')](_0x57c65a)[_0x25c1('0x23')](function(_0x530967){_0x402f32[_0x25c1('0x1d')]=_0x530967;if(_0x2e80b5['query'][_0x25c1('0x42')]){_0x1fd4e3[_0x25c1('0x43')]=[{'all':!![]}];}return db[_0x25c1('0x44')]['findAll'](_0x1fd4e3);})['then'](function(_0x53f87b){_0x402f32[_0x25c1('0x45')]=_0x53f87b;return _0x402f32;})[_0x25c1('0x23')](respondWithFilteredResult(_0x21069c,_0x1fd4e3))['catch'](handleError(_0x21069c,null));};exports[_0x25c1('0x46')]=function(_0x4c90f6,_0x46cbb9){var _0x5d8562={'raw':!![],'where':{'id':_0x4c90f6['params']['id']}},_0x5e43dc={};_0x5e43dc['model']=_[_0x25c1('0x31')](db[_0x25c1('0x44')]['rawAttributes']);_0x5e43dc[_0x25c1('0x30')]=_[_0x25c1('0x31')](_0x4c90f6[_0x25c1('0x30')]);_0x5e43dc[_0x25c1('0x32')]=_[_0x25c1('0x33')](_0x5e43dc[_0x25c1('0x34')],_0x5e43dc[_0x25c1('0x30')]);_0x5d8562['attributes']=_['intersection'](_0x5e43dc[_0x25c1('0x34')],qs[_0x25c1('0x47')](_0x4c90f6[_0x25c1('0x30')]['fields']));_0x5d8562[_0x25c1('0x35')]=_0x5d8562[_0x25c1('0x35')][_0x25c1('0x36')]?_0x5d8562[_0x25c1('0x35')]:_0x5e43dc['model'];if(_0x4c90f6[_0x25c1('0x30')][_0x25c1('0x42')]){_0x5d8562[_0x25c1('0x43')]=[{'all':!![]}];}_0x5d8562=_[_0x25c1('0x3e')]({},_0x5d8562,_0x4c90f6['options']);return db['Tag'][_0x25c1('0x48')](_0x5d8562)[_0x25c1('0x23')](handleEntityNotFound(_0x46cbb9,null))[_0x25c1('0x23')](respondWithResult(_0x46cbb9,null))[_0x25c1('0x49')](handleError(_0x46cbb9,null));};exports['create']=function(_0x6eff9e,_0x32943c){return db['Tag'][_0x25c1('0x4a')](_0x6eff9e[_0x25c1('0x4b')],{})[_0x25c1('0x23')](function(_0x31c504){var _0x502018=_0x6eff9e['user'][_0x25c1('0x25')]({'plain':!![]});if(!_0x502018)throw new Error(_0x25c1('0x4c'));if(_0x502018[_0x25c1('0x4d')]==='user'){var _0x19028a=_0x31c504[_0x25c1('0x25')]({'plain':!![]});var _0x483721=_0x25c1('0x4e');return db[_0x25c1('0x4f')][_0x25c1('0x48')]({'where':{'name':_0x483721,'userProfileId':_0x502018[_0x25c1('0x50')]},'raw':!![]})[_0x25c1('0x23')](function(_0x355ecc){if(_0x355ecc&&_0x355ecc[_0x25c1('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x19028a['name'],'resourceId':_0x19028a['id'],'type':_0x355ecc[_0x25c1('0x2a')],'sectionId':_0x355ecc['id']},{})['then'](function(){return _0x31c504;});}else{return _0x31c504;}})[_0x25c1('0x49')](function(_0x2c67a8){logger[_0x25c1('0x52')](_0x25c1('0x53'),_0x2c67a8);throw _0x2c67a8;});}return _0x31c504;})[_0x25c1('0x23')](respondWithResult(_0x32943c,0xc9))[_0x25c1('0x49')](handleError(_0x32943c,null));};exports['update']=function(_0x4a876b,_0x68e295){if(_0x4a876b[_0x25c1('0x4b')]['id']){delete _0x4a876b[_0x25c1('0x4b')]['id'];}return db[_0x25c1('0x44')][_0x25c1('0x48')]({'where':{'id':_0x4a876b['params']['id']}})[_0x25c1('0x23')](handleEntityNotFound(_0x68e295,null))[_0x25c1('0x23')](saveUpdates(_0x4a876b[_0x25c1('0x4b')],null))[_0x25c1('0x23')](respondWithResult(_0x68e295,null))[_0x25c1('0x49')](handleError(_0x68e295,null));};exports['destroy']=function(_0xc1ac24,_0x3df219){return db['Tag'][_0x25c1('0x48')]({'where':{'id':_0xc1ac24[_0x25c1('0x54')]['id']}})[_0x25c1('0x23')](handleEntityNotFound(_0x3df219,null))[_0x25c1('0x23')](removeEntity(_0x3df219,null))[_0x25c1('0x49')](handleError(_0x3df219,null));};
\ No newline at end of file
index ba11ced..86b9aee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa88d=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./tag.attributes','exports','define','Tag','tools_tags'];(function(_0x37e7a4,_0xb7a496){var _0x269b2a=function(_0x19ee3f){while(--_0x19ee3f){_0x37e7a4['push'](_0x37e7a4['shift']());}};_0x269b2a(++_0xb7a496);}(_0xa88d,0x12c));var _0xda88=function(_0x1b2d57,_0x2bfccd){_0x1b2d57=_0x1b2d57-0x0;var _0x492dab=_0xa88d[_0x1b2d57];return _0x492dab;};'use strict';var _=require(_0xda88('0x0'));var util=require(_0xda88('0x1'));var logger=require(_0xda88('0x2'))(_0xda88('0x3'));var moment=require(_0xda88('0x4'));var BPromise=require(_0xda88('0x5'));var rp=require(_0xda88('0x6'));var fs=require('fs');var path=require(_0xda88('0x7'));var rimraf=require(_0xda88('0x8'));var config=require(_0xda88('0x9'));var attributes=require(_0xda88('0xa'));module[_0xda88('0xb')]=function(_0x3afb3a,_0x370509){return _0x3afb3a[_0xda88('0xc')](_0xda88('0xd'),attributes,{'tableName':_0xda88('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7333=['define','Tag','lodash','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./tag.attributes'];(function(_0x223400,_0x29a1e0){var _0xcec92e=function(_0x20231f){while(--_0x20231f){_0x223400['push'](_0x223400['shift']());}};_0xcec92e(++_0x29a1e0);}(_0x7333,0xfc));var _0x3733=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x7333[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x3733('0x0'));var util=require('util');var logger=require(_0x3733('0x1'))('api');var moment=require(_0x3733('0x2'));var BPromise=require(_0x3733('0x3'));var rp=require(_0x3733('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3733('0x5'));var config=require(_0x3733('0x6'));var attributes=require(_0x3733('0x7'));module['exports']=function(_0xa51fdb,_0x27c9b7){return _0xa51fdb[_0x3733('0x8')](_0x3733('0x9'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d030b02..78f6eff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207c=['message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','http','request','info','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','error'];(function(_0x150bbe,_0x412085){var _0x3418d5=function(_0x1b1a65){while(--_0x1b1a65){_0x150bbe['push'](_0x150bbe['shift']());}};_0x3418d5(++_0x412085);}(_0x207c,0x1e8));var _0xc207=function(_0x1114dc,_0x50aed4){_0x1114dc=_0x1114dc-0x0;var _0x164894=_0x207c[_0x1114dc];return _0x164894;};'use strict';var _=require('lodash');var util=require(_0xc207('0x0'));var moment=require(_0xc207('0x1'));var BPromise=require(_0xc207('0x2'));var rs=require(_0xc207('0x3'));var fs=require('fs');var Redis=require(_0xc207('0x4'));var db=require(_0xc207('0x5'))['db'];var utils=require(_0xc207('0x6'));var logger=require('../../config/logger')(_0xc207('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xc207('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x314561,_0x3395e4,_0x59ff6f){return new BPromise(function(_0x25cb97,_0xad159b){return client[_0xc207('0x9')](_0x314561,_0x59ff6f)['then'](function(_0xffae6c){logger[_0xc207('0xa')](_0xc207('0xb'),_0x3395e4,_0xc207('0xc'));logger[_0xc207('0xd')](_0xc207('0xe'),_0x3395e4,'request\x20sent',JSON['stringify'](_0xffae6c));if(_0xffae6c['error']){if(_0xffae6c[_0xc207('0xf')]['code']===0x1f4){logger[_0xc207('0xf')](_0xc207('0xb'),_0x3395e4,_0xffae6c['error'][_0xc207('0x10')]);return _0xad159b(_0xffae6c[_0xc207('0xf')][_0xc207('0x10')]);}logger[_0xc207('0xf')](_0xc207('0xb'),_0x3395e4,_0xffae6c['error'][_0xc207('0x10')]);return _0x25cb97(_0xffae6c[_0xc207('0xf')][_0xc207('0x10')]);}else{logger[_0xc207('0xa')]('Tag,\x20%s,\x20%s',_0x3395e4,'request\x20sent');_0x25cb97(_0xffae6c['result'][_0xc207('0x10')]);}})[_0xc207('0x11')](function(_0x3d9c7b){logger[_0xc207('0xf')]('Tag,\x20%s,\x20%s',_0x3395e4,_0x3d9c7b);_0xad159b(_0x3d9c7b);});});}
\ No newline at end of file
+var _0x54ef=['result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','Tag,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x428be5,_0x1ae0be){var _0x5e4e91=function(_0x270fe1){while(--_0x270fe1){_0x428be5['push'](_0x428be5['shift']());}};_0x5e4e91(++_0x1ae0be);}(_0x54ef,0x112));var _0xf54e=function(_0x5d26d7,_0x5e46d4){_0x5d26d7=_0x5d26d7-0x0;var _0x12b9bb=_0x54ef[_0x5d26d7];return _0x12b9bb;};'use strict';var _=require(_0xf54e('0x0'));var util=require(_0xf54e('0x1'));var moment=require(_0xf54e('0x2'));var BPromise=require('bluebird');var rs=require(_0xf54e('0x3'));var fs=require('fs');var Redis=require(_0xf54e('0x4'));var db=require(_0xf54e('0x5'))['db'];var utils=require(_0xf54e('0x6'));var logger=require(_0xf54e('0x7'))(_0xf54e('0x8'));var config=require(_0xf54e('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf54e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x99cf9,_0x2464ae,_0x561870){return new BPromise(function(_0x27e69b,_0x57a1ce){return client[_0xf54e('0xb')](_0x99cf9,_0x561870)[_0xf54e('0xc')](function(_0x47c5e1){logger[_0xf54e('0xd')](_0xf54e('0xe'),_0x2464ae,_0xf54e('0xf'));logger[_0xf54e('0x10')]('Tag,\x20%s,\x20%s,\x20%s',_0x2464ae,_0xf54e('0xf'),JSON[_0xf54e('0x11')](_0x47c5e1));if(_0x47c5e1[_0xf54e('0x12')]){if(_0x47c5e1[_0xf54e('0x12')]['code']===0x1f4){logger[_0xf54e('0x12')]('Tag,\x20%s,\x20%s',_0x2464ae,_0x47c5e1['error'][_0xf54e('0x13')]);return _0x57a1ce(_0x47c5e1[_0xf54e('0x12')][_0xf54e('0x13')]);}logger[_0xf54e('0x12')]('Tag,\x20%s,\x20%s',_0x2464ae,_0x47c5e1[_0xf54e('0x12')][_0xf54e('0x13')]);return _0x27e69b(_0x47c5e1[_0xf54e('0x12')][_0xf54e('0x13')]);}else{logger['info'](_0xf54e('0xe'),_0x2464ae,_0xf54e('0xf'));_0x27e69b(_0x47c5e1[_0xf54e('0x14')]['message']);}})['catch'](function(_0xd87020){logger[_0xf54e('0x12')](_0xf54e('0xe'),_0x2464ae,_0xd87020);_0x57a1ce(_0xd87020);});});}
\ No newline at end of file
index 13091b0..f0ec766 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(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xa9e0[_0x376b45];return _0x2341b3;};'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(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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 b05bdb4..6114136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['name','exports','STRING'];(function(_0x81f477,_0x2828c5){var _0x1d6fbf=function(_0x34eec3){while(--_0x34eec3){_0x81f477['push'](_0x81f477['shift']());}};_0x1d6fbf(++_0x2828c5);}(_0x2032,0xd9));var _0x2203=function(_0x56f52c,_0x154cbf){_0x56f52c=_0x56f52c-0x0;var _0x5aed80=_0x2032[_0x56f52c];return _0x5aed80;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')],'allowNull':![],'unique':_0x2203('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb10b=['name','sequelize','STRING'];(function(_0x2a3392,_0x5ada5b){var _0x4dfdf7=function(_0x3baf38){while(--_0x3baf38){_0x2a3392['push'](_0x2a3392['shift']());}};_0x4dfdf7(++_0x5ada5b);}(_0xb10b,0x12a));var _0xbb10=function(_0x2c78df,_0x20abba){_0x2c78df=_0x2c78df-0x0;var _0x50912=_0xb10b[_0x2c78df];return _0x50912;};'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 43aa794..cb19d2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f19=['util','sox','to-csv','ejs','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./team.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','get','Teams','error','name','send','map','Team','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','include','findAll','rows','catch','show','params','includeAll','options','find','create','body','user','role','UserProfileResource','update','findOne','channel','Sequelize','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','Queues','addQueues','isValidChannel','ids','remove','addAgents','Voice','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','sequelize','transaction','through','QueueId','TeamVoiceQueue','penalty','User','findOrCreate','emit','online','interface','UserVoiceQueueRt','upsert','format','SIP/%s','voicePause','all','spread','removeAgents','parse','Queue:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment'];(function(_0xeb489e,_0x530a46){var _0x574b46=function(_0x160a57){while(--_0x160a57){_0xeb489e['push'](_0xeb489e['shift']());}};_0x574b46(++_0x530a46);}(_0x0f19,0xf3));var _0x90f1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0f19[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x90f1('0x0'));var rimraf=require(_0x90f1('0x1'));var zipdir=require(_0x90f1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x90f1('0x3'));var moment=require(_0x90f1('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x90f1('0x5'));var path=require('path');var sox=require(_0x90f1('0x6'));var csv=require(_0x90f1('0x7'));var ejs=require(_0x90f1('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x90f1('0x9'));var crypto=require('crypto');var jsforce=require(_0x90f1('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x90f1('0x7'));var querystring=require(_0x90f1('0xb'));var Papa=require('papaparse');var Redis=require(_0x90f1('0xc'));var authService=require(_0x90f1('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x90f1('0xe'));var hardwareService=require(_0x90f1('0xf'));var logger=require(_0x90f1('0x10'))(_0x90f1('0x11'));var utils=require(_0x90f1('0x12'));var config=require(_0x90f1('0x13'));var licenseUtil=require(_0x90f1('0x14'));var db=require(_0x90f1('0x15'))['db'];config[_0x90f1('0x16')]=_['defaults'](config[_0x90f1('0x16')],{'host':_0x90f1('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x90f1('0x18'))[_0x90f1('0x19')](socket);function respondWithStatusCode(_0x353881,_0x4ab1b9){_0x4ab1b9=_0x4ab1b9||0xcc;return function(_0x452fe5){if(_0x452fe5){return _0x353881[_0x90f1('0x1a')](_0x4ab1b9);}return _0x353881[_0x90f1('0x1b')](_0x4ab1b9)[_0x90f1('0x1c')]();};}function respondWithResult(_0x51e663,_0x24026a){_0x24026a=_0x24026a||0xc8;return function(_0x40e574){if(_0x40e574){return _0x51e663[_0x90f1('0x1b')](_0x24026a)[_0x90f1('0x1d')](_0x40e574);}};}function respondWithFilteredResult(_0x56686d,_0x25d0f4){return function(_0x2aad34){if(_0x2aad34){var _0xe7aa22=typeof _0x25d0f4[_0x90f1('0x1e')]===_0x90f1('0x1f')&&typeof _0x25d0f4[_0x90f1('0x20')]==='undefined';var _0x38630f=_0x2aad34[_0x90f1('0x21')];var _0x35731a=_0xe7aa22?0x0:_0x25d0f4['offset'];var _0x57ca62=_0xe7aa22?_0x2aad34[_0x90f1('0x21')]:_0x25d0f4[_0x90f1('0x1e')]+_0x25d0f4[_0x90f1('0x20')];var _0x3202d4;if(_0x57ca62>=_0x38630f){_0x57ca62=_0x38630f;_0x3202d4=0xc8;}else{_0x3202d4=0xce;}_0x56686d['status'](_0x3202d4);return _0x56686d['set'](_0x90f1('0x22'),_0x35731a+'-'+_0x57ca62+'/'+_0x38630f)['json'](_0x2aad34);}return null;};}function patchUpdates(_0x44a761){return function(_0x45e2a3){try{jsonpatch[_0x90f1('0x23')](_0x45e2a3,_0x44a761,!![]);}catch(_0x1486f3){return BPromise['reject'](_0x1486f3);}return _0x45e2a3[_0x90f1('0x24')]();};}function saveUpdates(_0x3bbb03,_0x41979b){return function(_0x378b38){if(_0x378b38){return _0x378b38['update'](_0x3bbb03)[_0x90f1('0x25')](function(_0x60cdf0){return _0x60cdf0;});}return null;};}function removeEntity(_0x50437e,_0x4af19a){return function(_0x3d9c85){if(_0x3d9c85){return _0x3d9c85[_0x90f1('0x26')]()[_0x90f1('0x25')](function(){var _0x575354=_0x3d9c85[_0x90f1('0x27')]({'plain':!![]});var _0x2d1ebb=_0x90f1('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x2d1ebb,'resourceId':_0x575354['id']}})['then'](function(){return _0x3d9c85;});})[_0x90f1('0x25')](function(){_0x50437e[_0x90f1('0x1b')](0xcc)[_0x90f1('0x1c')]();});}};}function handleEntityNotFound(_0x32d687,_0x45b3a7){return function(_0x22084a){if(!_0x22084a){_0x32d687[_0x90f1('0x1a')](0x194);}return _0x22084a;};}function handleError(_0x1af312,_0x4b3702){_0x4b3702=_0x4b3702||0x1f4;return function(_0x32658e){logger[_0x90f1('0x29')](_0x32658e['stack']);if(_0x32658e[_0x90f1('0x2a')]){delete _0x32658e[_0x90f1('0x2a')];}_0x1af312[_0x90f1('0x1b')](_0x4b3702)[_0x90f1('0x2b')](_0x32658e);};}exports['index']=function(_0x2087c3,_0x13a9c8){var _0xab4252={},_0x43b980={},_0x322732={'count':0x0,'rows':[]};var _0x1d1ff3=_[_0x90f1('0x2c')](db[_0x90f1('0x2d')][_0x90f1('0x2e')],function(_0x3bc49f){return{'name':_0x3bc49f['fieldName'],'type':_0x3bc49f[_0x90f1('0x2f')][_0x90f1('0x30')]};});_0x43b980['model']=_[_0x90f1('0x2c')](_0x1d1ff3,_0x90f1('0x2a'));_0x43b980[_0x90f1('0x31')]=_[_0x90f1('0x32')](_0x2087c3[_0x90f1('0x31')]);_0x43b980[_0x90f1('0x33')]=_[_0x90f1('0x34')](_0x43b980[_0x90f1('0x35')],_0x43b980[_0x90f1('0x31')]);_0xab4252[_0x90f1('0x36')]=_[_0x90f1('0x34')](_0x43b980[_0x90f1('0x35')],qs[_0x90f1('0x37')](_0x2087c3[_0x90f1('0x31')][_0x90f1('0x37')]));_0xab4252[_0x90f1('0x36')]=_0xab4252[_0x90f1('0x36')][_0x90f1('0x38')]?_0xab4252[_0x90f1('0x36')]:_0x43b980['model'];if(!_0x2087c3[_0x90f1('0x31')][_0x90f1('0x39')](_0x90f1('0x3a'))){_0xab4252[_0x90f1('0x20')]=qs['limit'](_0x2087c3[_0x90f1('0x31')][_0x90f1('0x20')]);_0xab4252[_0x90f1('0x1e')]=qs['offset'](_0x2087c3[_0x90f1('0x31')][_0x90f1('0x1e')]);}_0xab4252[_0x90f1('0x3b')]=qs[_0x90f1('0x3c')](_0x2087c3['query']['sort']);_0xab4252['where']=qs[_0x90f1('0x33')](_[_0x90f1('0x3d')](_0x2087c3[_0x90f1('0x31')],_0x43b980[_0x90f1('0x33')]),_0x1d1ff3);if(_0x2087c3[_0x90f1('0x31')]['filter']){_0xab4252[_0x90f1('0x3e')]=_[_0x90f1('0x3f')](_0xab4252['where'],{'$or':_[_0x90f1('0x2c')](_0x1d1ff3,function(_0x1b6cfa){if(_0x1b6cfa[_0x90f1('0x2f')]!==_0x90f1('0x40')){var _0x526ca5={};_0x526ca5[_0x1b6cfa['name']]={'$like':'%'+_0x2087c3[_0x90f1('0x31')][_0x90f1('0x41')]+'%'};return _0x526ca5;}})});}_0xab4252=_[_0x90f1('0x3f')]({},_0xab4252,_0x2087c3['options']);var _0x54b1d4={'where':_0xab4252['where']};return db[_0x90f1('0x2d')][_0x90f1('0x21')](_0x54b1d4)['then'](function(_0x2b9d46){_0x322732[_0x90f1('0x21')]=_0x2b9d46;if(_0x2087c3[_0x90f1('0x31')]['includeAll']){_0xab4252[_0x90f1('0x42')]=[{'all':!![]}];}return db[_0x90f1('0x2d')][_0x90f1('0x43')](_0xab4252);})[_0x90f1('0x25')](function(_0x2fc2e0){_0x322732[_0x90f1('0x44')]=_0x2fc2e0;return _0x322732;})['then'](respondWithFilteredResult(_0x13a9c8,_0xab4252))[_0x90f1('0x45')](handleError(_0x13a9c8,null));};exports[_0x90f1('0x46')]=function(_0x31dbed,_0x44ea72){var _0x4b37c1={'raw':![],'where':{'id':_0x31dbed[_0x90f1('0x47')]['id']}},_0x5835a7={};_0x5835a7[_0x90f1('0x35')]=_['keys'](db[_0x90f1('0x2d')][_0x90f1('0x2e')]);_0x5835a7[_0x90f1('0x31')]=_[_0x90f1('0x32')](_0x31dbed[_0x90f1('0x31')]);_0x5835a7[_0x90f1('0x33')]=_[_0x90f1('0x34')](_0x5835a7[_0x90f1('0x35')],_0x5835a7['query']);_0x4b37c1[_0x90f1('0x36')]=_[_0x90f1('0x34')](_0x5835a7['model'],qs[_0x90f1('0x37')](_0x31dbed[_0x90f1('0x31')][_0x90f1('0x37')]));_0x4b37c1['attributes']=_0x4b37c1[_0x90f1('0x36')][_0x90f1('0x38')]?_0x4b37c1[_0x90f1('0x36')]:_0x5835a7[_0x90f1('0x35')];if(_0x31dbed['query'][_0x90f1('0x48')]){_0x4b37c1[_0x90f1('0x42')]=[{'all':!![]}];}_0x4b37c1=_[_0x90f1('0x3f')]({},_0x4b37c1,_0x31dbed[_0x90f1('0x49')]);return db[_0x90f1('0x2d')][_0x90f1('0x4a')](_0x4b37c1)[_0x90f1('0x25')](handleEntityNotFound(_0x44ea72,null))['then'](respondWithResult(_0x44ea72,null))[_0x90f1('0x45')](handleError(_0x44ea72,null));};exports[_0x90f1('0x4b')]=function(_0x2af956,_0x5137aa){return db[_0x90f1('0x2d')]['create'](_0x2af956[_0x90f1('0x4c')],{})[_0x90f1('0x25')](function(_0x399bde){var _0x313beb=_0x2af956[_0x90f1('0x4d')]['get']({'plain':!![]});if(!_0x313beb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x313beb[_0x90f1('0x4e')]==='user'){var _0x332093=_0x399bde[_0x90f1('0x27')]({'plain':!![]});var _0x4d7769=_0x90f1('0x28');return db['UserProfileSection'][_0x90f1('0x4a')]({'where':{'name':_0x4d7769,'userProfileId':_0x313beb['userProfileId']},'raw':!![]})[_0x90f1('0x25')](function(_0x338940){if(_0x338940&&_0x338940['autoAssociation']===0x0){return db[_0x90f1('0x4f')][_0x90f1('0x4b')]({'name':_0x332093[_0x90f1('0x2a')],'resourceId':_0x332093['id'],'type':_0x338940[_0x90f1('0x2a')],'sectionId':_0x338940['id']},{})[_0x90f1('0x25')](function(){return _0x399bde;});}else{return _0x399bde;}})[_0x90f1('0x45')](function(_0x1fe7fd){logger[_0x90f1('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1fe7fd);throw _0x1fe7fd;});}return _0x399bde;})[_0x90f1('0x25')](respondWithResult(_0x5137aa,0xc9))['catch'](handleError(_0x5137aa,null));};exports[_0x90f1('0x50')]=function(_0x16dc8e,_0x210340){if(_0x16dc8e[_0x90f1('0x4c')]['id']){delete _0x16dc8e[_0x90f1('0x4c')]['id'];}return db[_0x90f1('0x2d')][_0x90f1('0x4a')]({'where':{'id':_0x16dc8e['params']['id']}})[_0x90f1('0x25')](handleEntityNotFound(_0x210340,null))[_0x90f1('0x25')](saveUpdates(_0x16dc8e[_0x90f1('0x4c')],null))[_0x90f1('0x25')](respondWithResult(_0x210340,null))[_0x90f1('0x45')](handleError(_0x210340,null));};exports[_0x90f1('0x26')]=function(_0x1873d4,_0x206305){return db[_0x90f1('0x2d')]['find']({'where':{'id':_0x1873d4[_0x90f1('0x47')]['id']}})[_0x90f1('0x25')](handleEntityNotFound(_0x206305,null))[_0x90f1('0x25')](removeEntity(_0x206305,null))[_0x90f1('0x45')](handleError(_0x206305,null));};exports['getQueues']=function(_0xbb20ef,_0x424397,_0x5c86a9){return db[_0x90f1('0x2d')][_0x90f1('0x51')]({'where':{'id':_0xbb20ef[_0x90f1('0x47')]['id']}})[_0x90f1('0x25')](handleEntityNotFound(_0x424397,null))[_0x90f1('0x25')](function(_0x164d96){if(!_0xbb20ef['query'][_0x90f1('0x52')]||!utils['isValidChannel'](_0xbb20ef[_0x90f1('0x31')][_0x90f1('0x52')])){throw new db[(_0x90f1('0x53'))][(_0x90f1('0x54'))](_0x90f1('0x55'));}var _0x4f951a={};var _0x41b029={};_0x41b029[_0x90f1('0x35')]=_[_0x90f1('0x32')](db[_[_0x90f1('0x56')](_0xbb20ef['query'][_0x90f1('0x52')][_0x90f1('0x57')]())+_0x90f1('0x58')][_0x90f1('0x2e')]);_0x41b029[_0x90f1('0x31')]=_[_0x90f1('0x32')](_0xbb20ef[_0x90f1('0x31')]);_0x41b029['filters']=_[_0x90f1('0x34')](_0x41b029[_0x90f1('0x35')],_0x41b029[_0x90f1('0x31')]);_0x4f951a[_0x90f1('0x36')]=_[_0x90f1('0x34')](_0x41b029['model'],qs[_0x90f1('0x37')](_0xbb20ef[_0x90f1('0x31')][_0x90f1('0x37')]));_0x4f951a[_0x90f1('0x36')]=_0x4f951a[_0x90f1('0x36')][_0x90f1('0x38')]?_0x4f951a[_0x90f1('0x36')]:_0x41b029[_0x90f1('0x35')];_0x4f951a['limit']=qs[_0x90f1('0x20')](_0xbb20ef[_0x90f1('0x31')][_0x90f1('0x20')]);_0x4f951a[_0x90f1('0x1e')]=qs['offset'](_0xbb20ef[_0x90f1('0x31')][_0x90f1('0x1e')]);_0x4f951a['order']=qs[_0x90f1('0x3c')](_0xbb20ef['query'][_0x90f1('0x3c')]);_0x4f951a[_0x90f1('0x3e')]=qs[_0x90f1('0x33')](_[_0x90f1('0x3d')](_0xbb20ef[_0x90f1('0x31')],_0x41b029['filters']));_0x4f951a=_[_0x90f1('0x3f')]({},_0x4f951a,_0xbb20ef[_0x90f1('0x49')]);return _0x164d96['get'+_[_0x90f1('0x56')](_0xbb20ef[_0x90f1('0x31')][_0x90f1('0x52')][_0x90f1('0x57')]())+_0x90f1('0x59')](_0x4f951a);})[_0x90f1('0x25')](respondWithResult(_0x424397,null))[_0x90f1('0x45')](handleError(_0x424397,null));};exports[_0x90f1('0x5a')]=function(_0x569e43,_0x2e7675,_0x242b32){return db['Team'][_0x90f1('0x51')]({'where':{'id':_0x569e43[_0x90f1('0x47')]['id']}})[_0x90f1('0x25')](function(_0x3b2e48){if(_0x3b2e48){if(!_0x569e43['body'][_0x90f1('0x52')]||!utils[_0x90f1('0x5b')](_0x569e43['body'][_0x90f1('0x52')])){throw new db[(_0x90f1('0x53'))]['ValidationError'](_0x90f1('0x55'));}return _0x3b2e48['add'+_[_0x90f1('0x56')](_0x569e43[_0x90f1('0x4c')][_0x90f1('0x52')][_0x90f1('0x57')]())+_0x90f1('0x59')](_0x569e43[_0x90f1('0x4c')][_0x90f1('0x5c')]);}return null;})[_0x90f1('0x25')](handleEntityNotFound(_0x2e7675,null))[_0x90f1('0x25')](respondWithStatusCode(_0x2e7675,null))[_0x90f1('0x45')](handleError(_0x2e7675,null));};exports['removeQueues']=function(_0x389532,_0x273f4b,_0xb27f71){return db['Team'][_0x90f1('0x51')]({'where':{'id':_0x389532[_0x90f1('0x47')]['id']}})[_0x90f1('0x25')](function(_0x261e2b){if(_0x261e2b){if(!_0x389532[_0x90f1('0x31')][_0x90f1('0x52')]||!utils[_0x90f1('0x5b')](_0x389532['query'][_0x90f1('0x52')])){throw new db[(_0x90f1('0x53'))]['ValidationError'](_0x90f1('0x55'));}return _0x261e2b[_0x90f1('0x5d')+_[_0x90f1('0x56')](_0x389532[_0x90f1('0x31')][_0x90f1('0x52')]['toLowerCase']())+_0x90f1('0x59')](_0x389532[_0x90f1('0x31')]['ids']);}return null;})[_0x90f1('0x25')](handleEntityNotFound(_0x273f4b,null))[_0x90f1('0x25')](respondWithStatusCode(_0x273f4b,null))[_0x90f1('0x45')](handleError(_0x273f4b,null));};exports[_0x90f1('0x5e')]=function(_0x171686,_0x34a413){return db['Team'][_0x90f1('0x4a')]({'where':{'id':_0x171686[_0x90f1('0x47')]['id']}})[_0x90f1('0x25')](handleEntityNotFound(_0x34a413,null))[_0x90f1('0x25')](function(_0xd09172){if(_0xd09172){var _0x1c71c9=[_0x90f1('0x5f'),_0x90f1('0x60'),_0x90f1('0x61'),_0x90f1('0x62'),_0x90f1('0x63'),_0x90f1('0x64'),_0x90f1('0x65')];return db[_0x90f1('0x66')][_0x90f1('0x67')](function(_0x1b1368){var _0x2e8953=_['map'](_0x1c71c9,function(_0x12c2d4){var _0x4e06a6={'attributes':['id',_0x90f1('0x2a')]};if(_0x12c2d4==='Voice'){_0x4e06a6[_0x90f1('0x68')]={'attributes':['penalty']};}return _0xd09172[_0x90f1('0x27')+_0x12c2d4+_0x90f1('0x59')](_0x4e06a6)[_0x90f1('0x25')](function(_0x16081c){var _0x400377=_[_0x90f1('0x2c')](_0x16081c,function(_0x136eae){var _0x2d61c0=_['map'](_0x171686[_0x90f1('0x4c')]['ids'],function(_0x3b9319){var _0x413ae8={'where':{'UserId':_0x3b9319,[_0x12c2d4+_0x90f1('0x69')]:_0x136eae['id']},'transaction':_0x1b1368};if(_0x12c2d4===_0x90f1('0x5f')){_0x413ae8['defaults']={'penalty':_0x136eae[_0x90f1('0x6a')][_0x90f1('0x6b')]};}return db[_0x90f1('0x6c')+_0x12c2d4+_0x90f1('0x58')][_0x90f1('0x6d')](_0x413ae8)[_0x90f1('0x25')](function(){socket[_0x90f1('0x6e')]('user'+_0x12c2d4+'Queue:save',{'UserId':_0x3b9319,[_0x12c2d4+'QueueId']:_0x136eae['id']});if(_0x12c2d4!=='Voice')return;return db[_0x90f1('0x6c')][_0x90f1('0x43')]({'where':{'id':_0x171686[_0x90f1('0x4c')][_0x90f1('0x5c')],'online':0x1},'attributes':['id',_0x90f1('0x2a'),_0x90f1('0x6f'),'voicePause',_0x90f1('0x70')],'raw':!![]})[_0x90f1('0x25')](function(_0x1a7952){var _0x55fe28=_[_0x90f1('0x2c')](_0x1a7952,function(_0x244954){return db[_0x90f1('0x71')][_0x90f1('0x72')]({'membername':_0x244954[_0x90f1('0x2a')],'UserId':_0x244954['id'],'queue_name':_0x136eae['name'],'VoiceQueueId':_0x136eae['id'],'interface':_['isNil'](_0x244954[_0x90f1('0x70')])?util[_0x90f1('0x73')](_0x90f1('0x74'),_0x244954['name']):_0x244954[_0x90f1('0x70')],'paused':_0x244954[_0x90f1('0x75')]||![],'penalty':_0x136eae[_0x90f1('0x6a')]['penalty']},{'transaction':_0x1b1368});});return Promise[_0x90f1('0x76')](_0x55fe28);});});});return Promise['all'](_0x2d61c0);});return Promise[_0x90f1('0x76')](_0x400377);});});return Promise[_0x90f1('0x76')](_0x2e8953)[_0x90f1('0x25')](function(){return _0xd09172[_0x90f1('0x5e')](_0x171686[_0x90f1('0x4c')][_0x90f1('0x5c')],{'transaction':_0x1b1368})[_0x90f1('0x77')](function(_0x43351e){return _0x43351e;});});});}})[_0x90f1('0x25')](respondWithResult(_0x34a413,null))[_0x90f1('0x45')](handleError(_0x34a413,null));};exports[_0x90f1('0x78')]=function(_0x555d16,_0x278c36){return db[_0x90f1('0x2d')][_0x90f1('0x4a')]({'where':{'id':_0x555d16['params']['id']}})[_0x90f1('0x25')](handleEntityNotFound(_0x278c36,null))['then'](function(_0x2fa10d){if(_0x2fa10d){var _0x379354=[_0x90f1('0x5f'),_0x90f1('0x60'),_0x90f1('0x61'),_0x90f1('0x62'),_0x90f1('0x63'),_0x90f1('0x64'),_0x90f1('0x65')];return db[_0x90f1('0x66')][_0x90f1('0x67')](function(_0x2072fb){var _0x4a9ff5=_[_0x90f1('0x2c')](_0x379354,function(_0xa49585){var _0x31a50d={'attributes':['id',_0x90f1('0x2a')]};return _0x2fa10d[_0x90f1('0x27')+_0xa49585+'Queues'](_0x31a50d)['then'](function(_0x267488){var _0x3c43b4=_[_0x90f1('0x2c')](_0x267488,function(_0x52bfd0){return _0x52bfd0['removeAgents'](_0x555d16[_0x90f1('0x31')]['ids'],{'transaction':_0x2072fb})['then'](function(){var _0x4bb927=JSON[_0x90f1('0x79')]('['+_0x555d16[_0x90f1('0x31')][_0x90f1('0x5c')]+']');var _0x2014dd=_[_0x90f1('0x2c')](_0x4bb927,function(_0x2a98df){socket['emit']('user'+_0xa49585+_0x90f1('0x7a'),{'UserId':Number(_0x2a98df),[_0xa49585+_0x90f1('0x69')]:_0x52bfd0['id']});if(_0xa49585!==_0x90f1('0x5f'))return;return db[_0x90f1('0x71')][_0x90f1('0x26')]({'where':{'VoiceQueueId':_0x52bfd0['id'],'UserId':_0x2a98df},'transaction':_0x2072fb});});return Promise[_0x90f1('0x76')](_0x2014dd);});});return Promise[_0x90f1('0x76')](_0x3c43b4);});});return Promise[_0x90f1('0x76')](_0x4a9ff5)['then'](function(){return _0x2fa10d[_0x90f1('0x78')](_0x555d16[_0x90f1('0x31')][_0x90f1('0x5c')],{'transaction':_0x2072fb});});});}})[_0x90f1('0x25')](respondWithStatusCode(_0x278c36,null))[_0x90f1('0x45')](handleError(_0x278c36,null));};exports['getAgents']=function(_0x3a4652,_0xcbbb68,_0x5eb8f4){var _0x259a27={};var _0x18521f={};var _0x5301da;var _0x2202ca;return db[_0x90f1('0x2d')]['findOne']({'where':{'id':_0x3a4652[_0x90f1('0x47')]['id']}})[_0x90f1('0x25')](handleEntityNotFound(_0xcbbb68,null))[_0x90f1('0x25')](function(_0x331fb4){if(_0x331fb4){_0x5301da=_0x331fb4;_0x18521f[_0x90f1('0x35')]=_[_0x90f1('0x32')](db[_0x90f1('0x6c')][_0x90f1('0x2e')]);_0x18521f['query']=_[_0x90f1('0x32')](_0x3a4652[_0x90f1('0x31')]);_0x18521f[_0x90f1('0x33')]=_[_0x90f1('0x34')](_0x18521f['model'],_0x18521f[_0x90f1('0x31')]);_0x259a27['attributes']=_[_0x90f1('0x34')](_0x18521f[_0x90f1('0x35')],qs[_0x90f1('0x37')](_0x3a4652[_0x90f1('0x31')][_0x90f1('0x37')]));_0x259a27[_0x90f1('0x36')]=_0x259a27['attributes'][_0x90f1('0x38')]?_0x259a27['attributes']:_0x18521f['model'];_0x259a27[_0x90f1('0x3b')]=qs['sort'](_0x3a4652[_0x90f1('0x31')][_0x90f1('0x3c')]);_0x259a27[_0x90f1('0x3e')]=qs[_0x90f1('0x33')](_[_0x90f1('0x3d')](_0x3a4652[_0x90f1('0x31')],_0x18521f[_0x90f1('0x33')]));if(_0x3a4652[_0x90f1('0x31')][_0x90f1('0x41')]){_0x259a27[_0x90f1('0x3e')]=_[_0x90f1('0x3f')](_0x259a27['where'],{'$or':_['map'](_0x259a27['attributes'],function(_0x51e479){var _0x4936ca={};_0x4936ca[_0x51e479]={'$like':'%'+_0x3a4652['query'][_0x90f1('0x41')]+'%'};return _0x4936ca;})});}_0x259a27=_[_0x90f1('0x3f')]({},_0x259a27,_0x3a4652[_0x90f1('0x49')]);return _0x5301da[_0x90f1('0x7b')](_0x259a27);}})[_0x90f1('0x25')](function(_0x575230){if(_0x575230){_0x2202ca=_0x575230[_0x90f1('0x38')];if(!_0x3a4652['query'][_0x90f1('0x39')](_0x90f1('0x3a'))){_0x259a27[_0x90f1('0x20')]=qs[_0x90f1('0x20')](_0x3a4652[_0x90f1('0x31')][_0x90f1('0x20')]);_0x259a27[_0x90f1('0x1e')]=qs[_0x90f1('0x1e')](_0x3a4652[_0x90f1('0x31')]['offset']);}return _0x5301da[_0x90f1('0x7b')](_0x259a27);}})['then'](function(_0x11f526){if(_0x11f526){return _0x11f526?{'count':_0x2202ca,'rows':_0x11f526}:null;}})[_0x90f1('0x25')](respondWithResult(_0xcbbb68,null))['catch'](handleError(_0xcbbb68,null));};
\ No newline at end of file
+var _0x3d65=['format','SIP/%s','interface','all','removeAgents','getAgents','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./team.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','get','error','stack','name','send','index','map','Team','rawAttributes','fieldName','type','model','filters','intersection','query','attributes','fields','length','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','find','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','getQueues','findOne','channel','Sequelize','ValidationError','capitalize','toLowerCase','Queue','order','Queues','addQueues','isValidChannel','add','ids','Unknown\x20channel','addAgents','Voice','Chat','Mail','Sms','Fax','Openchannel','sequelize','transaction','through','penalty','QueueId','findOrCreate','emit','Queue:save','User','online','voicePause','UserVoiceQueueRt','upsert','isNil'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3d65,0x8c));var _0x53d6=function(_0x52c023,_0x2e0cf6){_0x52c023=_0x52c023-0x0;var _0x24cbc7=_0x3d65[_0x52c023];return _0x24cbc7;};'use strict';var emlformat=require(_0x53d6('0x0'));var rimraf=require(_0x53d6('0x1'));var zipdir=require(_0x53d6('0x2'));var jsonpatch=require(_0x53d6('0x3'));var rp=require(_0x53d6('0x4'));var moment=require(_0x53d6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x53d6('0x6'));var util=require(_0x53d6('0x7'));var path=require(_0x53d6('0x8'));var sox=require(_0x53d6('0x9'));var csv=require(_0x53d6('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x53d6('0xb'));var _=require(_0x53d6('0xc'));var squel=require(_0x53d6('0xd'));var crypto=require(_0x53d6('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x53d6('0xf'));var toCsv=require(_0x53d6('0xa'));var querystring=require('querystring');var Papa=require(_0x53d6('0x10'));var Redis=require(_0x53d6('0x11'));var authService=require(_0x53d6('0x12'));var qs=require(_0x53d6('0x13'));var as=require(_0x53d6('0x14'));var hardwareService=require(_0x53d6('0x15'));var logger=require(_0x53d6('0x16'))(_0x53d6('0x17'));var utils=require('../../config/utils');var config=require(_0x53d6('0x18'));var licenseUtil=require(_0x53d6('0x19'));var db=require(_0x53d6('0x1a'))['db'];config[_0x53d6('0x1b')]=_[_0x53d6('0x1c')](config[_0x53d6('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x53d6('0x1d'))(new Redis(config[_0x53d6('0x1b')]));require(_0x53d6('0x1e'))[_0x53d6('0x1f')](socket);function respondWithStatusCode(_0x2afede,_0x37675b){_0x37675b=_0x37675b||0xcc;return function(_0x55569d){if(_0x55569d){return _0x2afede[_0x53d6('0x20')](_0x37675b);}return _0x2afede[_0x53d6('0x21')](_0x37675b)['end']();};}function respondWithResult(_0x28da2d,_0x5228ef){_0x5228ef=_0x5228ef||0xc8;return function(_0x18f0b0){if(_0x18f0b0){return _0x28da2d[_0x53d6('0x21')](_0x5228ef)[_0x53d6('0x22')](_0x18f0b0);}};}function respondWithFilteredResult(_0x5c5f01,_0x172c14){return function(_0x396939){if(_0x396939){var _0x5b2b72=typeof _0x172c14[_0x53d6('0x23')]===_0x53d6('0x24')&&typeof _0x172c14[_0x53d6('0x25')]===_0x53d6('0x24');var _0x475059=_0x396939['count'];var _0x5661da=_0x5b2b72?0x0:_0x172c14[_0x53d6('0x23')];var _0x26d4ac=_0x5b2b72?_0x396939[_0x53d6('0x26')]:_0x172c14[_0x53d6('0x23')]+_0x172c14[_0x53d6('0x25')];var _0x39fc12;if(_0x26d4ac>=_0x475059){_0x26d4ac=_0x475059;_0x39fc12=0xc8;}else{_0x39fc12=0xce;}_0x5c5f01[_0x53d6('0x21')](_0x39fc12);return _0x5c5f01[_0x53d6('0x27')](_0x53d6('0x28'),_0x5661da+'-'+_0x26d4ac+'/'+_0x475059)[_0x53d6('0x22')](_0x396939);}return null;};}function patchUpdates(_0x3059eb){return function(_0x47343e){try{jsonpatch['apply'](_0x47343e,_0x3059eb,!![]);}catch(_0x54c0f3){return BPromise[_0x53d6('0x29')](_0x54c0f3);}return _0x47343e[_0x53d6('0x2a')]();};}function saveUpdates(_0x2ebeda,_0x38d361){return function(_0x18932d){if(_0x18932d){return _0x18932d[_0x53d6('0x2b')](_0x2ebeda)[_0x53d6('0x2c')](function(_0x281b6a){return _0x281b6a;});}return null;};}function removeEntity(_0x1900b8,_0x5cc58e){return function(_0x5e80bd){if(_0x5e80bd){return _0x5e80bd[_0x53d6('0x2d')]()[_0x53d6('0x2c')](function(){var _0x5ce474=_0x5e80bd[_0x53d6('0x2e')]({'plain':!![]});var _0x4d3579='Teams';return db['UserProfileResource']['destroy']({'where':{'type':_0x4d3579,'resourceId':_0x5ce474['id']}})[_0x53d6('0x2c')](function(){return _0x5e80bd;});})[_0x53d6('0x2c')](function(){_0x1900b8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5cd35a,_0x207c74){return function(_0x167b07){if(!_0x167b07){_0x5cd35a[_0x53d6('0x20')](0x194);}return _0x167b07;};}function handleError(_0x16160f,_0x50a652){_0x50a652=_0x50a652||0x1f4;return function(_0x23ef0b){logger[_0x53d6('0x2f')](_0x23ef0b[_0x53d6('0x30')]);if(_0x23ef0b[_0x53d6('0x31')]){delete _0x23ef0b[_0x53d6('0x31')];}_0x16160f[_0x53d6('0x21')](_0x50a652)[_0x53d6('0x32')](_0x23ef0b);};}exports[_0x53d6('0x33')]=function(_0x62e5e1,_0xcbf568){var _0x2e6b88={},_0x43e90d={},_0x31c838={'count':0x0,'rows':[]};var _0x2a8986=_[_0x53d6('0x34')](db[_0x53d6('0x35')][_0x53d6('0x36')],function(_0x3b2146){return{'name':_0x3b2146[_0x53d6('0x37')],'type':_0x3b2146[_0x53d6('0x38')]['key']};});_0x43e90d[_0x53d6('0x39')]=_['map'](_0x2a8986,'name');_0x43e90d['query']=_['keys'](_0x62e5e1['query']);_0x43e90d[_0x53d6('0x3a')]=_[_0x53d6('0x3b')](_0x43e90d[_0x53d6('0x39')],_0x43e90d[_0x53d6('0x3c')]);_0x2e6b88[_0x53d6('0x3d')]=_[_0x53d6('0x3b')](_0x43e90d[_0x53d6('0x39')],qs[_0x53d6('0x3e')](_0x62e5e1['query'][_0x53d6('0x3e')]));_0x2e6b88[_0x53d6('0x3d')]=_0x2e6b88[_0x53d6('0x3d')][_0x53d6('0x3f')]?_0x2e6b88[_0x53d6('0x3d')]:_0x43e90d[_0x53d6('0x39')];if(!_0x62e5e1[_0x53d6('0x3c')]['hasOwnProperty']('nolimit')){_0x2e6b88[_0x53d6('0x25')]=qs[_0x53d6('0x25')](_0x62e5e1['query'][_0x53d6('0x25')]);_0x2e6b88[_0x53d6('0x23')]=qs[_0x53d6('0x23')](_0x62e5e1[_0x53d6('0x3c')][_0x53d6('0x23')]);}_0x2e6b88['order']=qs[_0x53d6('0x40')](_0x62e5e1[_0x53d6('0x3c')][_0x53d6('0x40')]);_0x2e6b88['where']=qs[_0x53d6('0x3a')](_[_0x53d6('0x41')](_0x62e5e1['query'],_0x43e90d[_0x53d6('0x3a')]),_0x2a8986);if(_0x62e5e1['query'][_0x53d6('0x42')]){_0x2e6b88[_0x53d6('0x43')]=_[_0x53d6('0x44')](_0x2e6b88[_0x53d6('0x43')],{'$or':_[_0x53d6('0x34')](_0x2a8986,function(_0x514e93){if(_0x514e93[_0x53d6('0x38')]!==_0x53d6('0x45')){var _0x33c460={};_0x33c460[_0x514e93['name']]={'$like':'%'+_0x62e5e1[_0x53d6('0x3c')]['filter']+'%'};return _0x33c460;}})});}_0x2e6b88=_[_0x53d6('0x44')]({},_0x2e6b88,_0x62e5e1[_0x53d6('0x46')]);var _0x24f6a2={'where':_0x2e6b88[_0x53d6('0x43')]};return db[_0x53d6('0x35')][_0x53d6('0x26')](_0x24f6a2)[_0x53d6('0x2c')](function(_0x5d5822){_0x31c838[_0x53d6('0x26')]=_0x5d5822;if(_0x62e5e1['query'][_0x53d6('0x47')]){_0x2e6b88[_0x53d6('0x48')]=[{'all':!![]}];}return db[_0x53d6('0x35')][_0x53d6('0x49')](_0x2e6b88);})[_0x53d6('0x2c')](function(_0x41a01e){_0x31c838[_0x53d6('0x4a')]=_0x41a01e;return _0x31c838;})['then'](respondWithFilteredResult(_0xcbf568,_0x2e6b88))['catch'](handleError(_0xcbf568,null));};exports[_0x53d6('0x4b')]=function(_0x42c633,_0x489a70){var _0x5aa111={'raw':![],'where':{'id':_0x42c633['params']['id']}},_0x321df6={};_0x321df6[_0x53d6('0x39')]=_['keys'](db['Team'][_0x53d6('0x36')]);_0x321df6[_0x53d6('0x3c')]=_[_0x53d6('0x4c')](_0x42c633[_0x53d6('0x3c')]);_0x321df6['filters']=_['intersection'](_0x321df6[_0x53d6('0x39')],_0x321df6[_0x53d6('0x3c')]);_0x5aa111[_0x53d6('0x3d')]=_[_0x53d6('0x3b')](_0x321df6[_0x53d6('0x39')],qs[_0x53d6('0x3e')](_0x42c633[_0x53d6('0x3c')][_0x53d6('0x3e')]));_0x5aa111[_0x53d6('0x3d')]=_0x5aa111['attributes'][_0x53d6('0x3f')]?_0x5aa111[_0x53d6('0x3d')]:_0x321df6[_0x53d6('0x39')];if(_0x42c633[_0x53d6('0x3c')][_0x53d6('0x47')]){_0x5aa111[_0x53d6('0x48')]=[{'all':!![]}];}_0x5aa111=_[_0x53d6('0x44')]({},_0x5aa111,_0x42c633['options']);return db['Team']['find'](_0x5aa111)['then'](handleEntityNotFound(_0x489a70,null))['then'](respondWithResult(_0x489a70,null))[_0x53d6('0x4d')](handleError(_0x489a70,null));};exports[_0x53d6('0x4e')]=function(_0xf853b0,_0x39391f){return db[_0x53d6('0x35')][_0x53d6('0x4e')](_0xf853b0[_0x53d6('0x4f')],{})['then'](function(_0x4e2d4a){var _0x2fa7f4=_0xf853b0[_0x53d6('0x50')]['get']({'plain':!![]});if(!_0x2fa7f4)throw new Error(_0x53d6('0x51'));if(_0x2fa7f4[_0x53d6('0x52')]===_0x53d6('0x50')){var _0x2a7bb1=_0x4e2d4a[_0x53d6('0x2e')]({'plain':!![]});var _0x162c0c=_0x53d6('0x53');return db[_0x53d6('0x54')][_0x53d6('0x55')]({'where':{'name':_0x162c0c,'userProfileId':_0x2fa7f4[_0x53d6('0x56')]},'raw':!![]})[_0x53d6('0x2c')](function(_0x3f6ba1){if(_0x3f6ba1&&_0x3f6ba1['autoAssociation']===0x0){return db[_0x53d6('0x57')][_0x53d6('0x4e')]({'name':_0x2a7bb1[_0x53d6('0x31')],'resourceId':_0x2a7bb1['id'],'type':_0x3f6ba1[_0x53d6('0x31')],'sectionId':_0x3f6ba1['id']},{})[_0x53d6('0x2c')](function(){return _0x4e2d4a;});}else{return _0x4e2d4a;}})[_0x53d6('0x4d')](function(_0x245def){logger[_0x53d6('0x2f')](_0x53d6('0x58'),_0x245def);throw _0x245def;});}return _0x4e2d4a;})['then'](respondWithResult(_0x39391f,0xc9))[_0x53d6('0x4d')](handleError(_0x39391f,null));};exports[_0x53d6('0x2b')]=function(_0x5097f5,_0x57c708){if(_0x5097f5['body']['id']){delete _0x5097f5['body']['id'];}return db[_0x53d6('0x35')][_0x53d6('0x55')]({'where':{'id':_0x5097f5[_0x53d6('0x59')]['id']}})[_0x53d6('0x2c')](handleEntityNotFound(_0x57c708,null))[_0x53d6('0x2c')](saveUpdates(_0x5097f5[_0x53d6('0x4f')],null))[_0x53d6('0x2c')](respondWithResult(_0x57c708,null))[_0x53d6('0x4d')](handleError(_0x57c708,null));};exports[_0x53d6('0x2d')]=function(_0x5dcf80,_0x293cf5){return db[_0x53d6('0x35')][_0x53d6('0x55')]({'where':{'id':_0x5dcf80[_0x53d6('0x59')]['id']}})['then'](handleEntityNotFound(_0x293cf5,null))[_0x53d6('0x2c')](removeEntity(_0x293cf5,null))[_0x53d6('0x4d')](handleError(_0x293cf5,null));};exports[_0x53d6('0x5a')]=function(_0x733326,_0x52e0eb,_0x4e92be){return db[_0x53d6('0x35')][_0x53d6('0x5b')]({'where':{'id':_0x733326[_0x53d6('0x59')]['id']}})[_0x53d6('0x2c')](handleEntityNotFound(_0x52e0eb,null))[_0x53d6('0x2c')](function(_0x2dcfe7){if(!_0x733326[_0x53d6('0x3c')]['channel']||!utils['isValidChannel'](_0x733326[_0x53d6('0x3c')][_0x53d6('0x5c')])){throw new db[(_0x53d6('0x5d'))][(_0x53d6('0x5e'))]('Unknown\x20channel');}var _0x21f2ac={};var _0x43b1e2={};_0x43b1e2[_0x53d6('0x39')]=_[_0x53d6('0x4c')](db[_[_0x53d6('0x5f')](_0x733326[_0x53d6('0x3c')][_0x53d6('0x5c')][_0x53d6('0x60')]())+_0x53d6('0x61')][_0x53d6('0x36')]);_0x43b1e2['query']=_[_0x53d6('0x4c')](_0x733326[_0x53d6('0x3c')]);_0x43b1e2[_0x53d6('0x3a')]=_[_0x53d6('0x3b')](_0x43b1e2[_0x53d6('0x39')],_0x43b1e2[_0x53d6('0x3c')]);_0x21f2ac['attributes']=_['intersection'](_0x43b1e2['model'],qs[_0x53d6('0x3e')](_0x733326[_0x53d6('0x3c')][_0x53d6('0x3e')]));_0x21f2ac['attributes']=_0x21f2ac[_0x53d6('0x3d')]['length']?_0x21f2ac[_0x53d6('0x3d')]:_0x43b1e2[_0x53d6('0x39')];_0x21f2ac[_0x53d6('0x25')]=qs[_0x53d6('0x25')](_0x733326[_0x53d6('0x3c')][_0x53d6('0x25')]);_0x21f2ac[_0x53d6('0x23')]=qs[_0x53d6('0x23')](_0x733326['query'][_0x53d6('0x23')]);_0x21f2ac[_0x53d6('0x62')]=qs[_0x53d6('0x40')](_0x733326[_0x53d6('0x3c')][_0x53d6('0x40')]);_0x21f2ac[_0x53d6('0x43')]=qs[_0x53d6('0x3a')](_[_0x53d6('0x41')](_0x733326[_0x53d6('0x3c')],_0x43b1e2[_0x53d6('0x3a')]));_0x21f2ac=_[_0x53d6('0x44')]({},_0x21f2ac,_0x733326['options']);return _0x2dcfe7['get'+_[_0x53d6('0x5f')](_0x733326[_0x53d6('0x3c')][_0x53d6('0x5c')][_0x53d6('0x60')]())+_0x53d6('0x63')](_0x21f2ac);})[_0x53d6('0x2c')](respondWithResult(_0x52e0eb,null))[_0x53d6('0x4d')](handleError(_0x52e0eb,null));};exports[_0x53d6('0x64')]=function(_0x2ce175,_0x3e07b9,_0x5815b0){return db['Team'][_0x53d6('0x5b')]({'where':{'id':_0x2ce175[_0x53d6('0x59')]['id']}})[_0x53d6('0x2c')](function(_0x5850b1){if(_0x5850b1){if(!_0x2ce175[_0x53d6('0x4f')][_0x53d6('0x5c')]||!utils[_0x53d6('0x65')](_0x2ce175[_0x53d6('0x4f')]['channel'])){throw new db[(_0x53d6('0x5d'))][(_0x53d6('0x5e'))]('Unknown\x20channel');}return _0x5850b1[_0x53d6('0x66')+_[_0x53d6('0x5f')](_0x2ce175['body']['channel'][_0x53d6('0x60')]())+'Queues'](_0x2ce175[_0x53d6('0x4f')][_0x53d6('0x67')]);}return null;})['then'](handleEntityNotFound(_0x3e07b9,null))[_0x53d6('0x2c')](respondWithStatusCode(_0x3e07b9,null))[_0x53d6('0x4d')](handleError(_0x3e07b9,null));};exports['removeQueues']=function(_0x2492ca,_0x23e60e,_0x36d1f0){return db['Team'][_0x53d6('0x5b')]({'where':{'id':_0x2492ca[_0x53d6('0x59')]['id']}})[_0x53d6('0x2c')](function(_0x492c81){if(_0x492c81){if(!_0x2492ca[_0x53d6('0x3c')][_0x53d6('0x5c')]||!utils['isValidChannel'](_0x2492ca[_0x53d6('0x3c')][_0x53d6('0x5c')])){throw new db[(_0x53d6('0x5d'))][(_0x53d6('0x5e'))](_0x53d6('0x68'));}return _0x492c81['remove'+_[_0x53d6('0x5f')](_0x2492ca[_0x53d6('0x3c')][_0x53d6('0x5c')][_0x53d6('0x60')]())+'Queues'](_0x2492ca['query'][_0x53d6('0x67')]);}return null;})[_0x53d6('0x2c')](handleEntityNotFound(_0x23e60e,null))[_0x53d6('0x2c')](respondWithStatusCode(_0x23e60e,null))[_0x53d6('0x4d')](handleError(_0x23e60e,null));};exports[_0x53d6('0x69')]=function(_0x4a27a1,_0x3a087f){return db[_0x53d6('0x35')]['find']({'where':{'id':_0x4a27a1[_0x53d6('0x59')]['id']}})[_0x53d6('0x2c')](handleEntityNotFound(_0x3a087f,null))[_0x53d6('0x2c')](function(_0x1808d9){if(_0x1808d9){var _0x327809=[_0x53d6('0x6a'),_0x53d6('0x6b'),_0x53d6('0x6c'),_0x53d6('0x6d'),_0x53d6('0x6e'),_0x53d6('0x6f'),'Whatsapp'];return db[_0x53d6('0x70')][_0x53d6('0x71')](function(_0x471ada){var _0x2c3807=_[_0x53d6('0x34')](_0x327809,function(_0x323932){var _0x39d934={'attributes':['id',_0x53d6('0x31')]};if(_0x323932===_0x53d6('0x6a')){_0x39d934[_0x53d6('0x72')]={'attributes':[_0x53d6('0x73')]};}return _0x1808d9[_0x53d6('0x2e')+_0x323932+_0x53d6('0x63')](_0x39d934)[_0x53d6('0x2c')](function(_0x2e8aab){var _0x1b3cee=_[_0x53d6('0x34')](_0x2e8aab,function(_0x49eaf1){var _0x5803be=_[_0x53d6('0x34')](_0x4a27a1[_0x53d6('0x4f')][_0x53d6('0x67')],function(_0x21895c){var _0xd9c482={'where':{'UserId':_0x21895c,[_0x323932+_0x53d6('0x74')]:_0x49eaf1['id']},'transaction':_0x471ada};if(_0x323932===_0x53d6('0x6a')){_0xd9c482['defaults']={'penalty':_0x49eaf1['TeamVoiceQueue']['penalty']};}return db['User'+_0x323932+_0x53d6('0x61')][_0x53d6('0x75')](_0xd9c482)['then'](function(){socket[_0x53d6('0x76')]('user'+_0x323932+_0x53d6('0x77'),{'UserId':_0x21895c,[_0x323932+_0x53d6('0x74')]:_0x49eaf1['id']});if(_0x323932!==_0x53d6('0x6a'))return;return db[_0x53d6('0x78')]['findAll']({'where':{'id':_0x4a27a1[_0x53d6('0x4f')][_0x53d6('0x67')],'online':0x1},'attributes':['id',_0x53d6('0x31'),_0x53d6('0x79'),_0x53d6('0x7a'),'interface'],'raw':!![]})[_0x53d6('0x2c')](function(_0x5bd1c8){var _0x5617b1=_[_0x53d6('0x34')](_0x5bd1c8,function(_0x4996a9){return db[_0x53d6('0x7b')][_0x53d6('0x7c')]({'membername':_0x4996a9[_0x53d6('0x31')],'UserId':_0x4996a9['id'],'queue_name':_0x49eaf1[_0x53d6('0x31')],'VoiceQueueId':_0x49eaf1['id'],'interface':_[_0x53d6('0x7d')](_0x4996a9['interface'])?util[_0x53d6('0x7e')](_0x53d6('0x7f'),_0x4996a9[_0x53d6('0x31')]):_0x4996a9[_0x53d6('0x80')],'paused':_0x4996a9[_0x53d6('0x7a')]||![],'penalty':_0x49eaf1['TeamVoiceQueue']['penalty']},{'transaction':_0x471ada});});return Promise[_0x53d6('0x81')](_0x5617b1);});});});return Promise[_0x53d6('0x81')](_0x5803be);});return Promise[_0x53d6('0x81')](_0x1b3cee);});});return Promise[_0x53d6('0x81')](_0x2c3807)[_0x53d6('0x2c')](function(){return _0x1808d9[_0x53d6('0x69')](_0x4a27a1['body']['ids'],{'transaction':_0x471ada})['spread'](function(_0xbbf4e3){return _0xbbf4e3;});});});}})[_0x53d6('0x2c')](respondWithResult(_0x3a087f,null))[_0x53d6('0x4d')](handleError(_0x3a087f,null));};exports['removeAgents']=function(_0x41e407,_0x5a596e){return db[_0x53d6('0x35')][_0x53d6('0x55')]({'where':{'id':_0x41e407[_0x53d6('0x59')]['id']}})[_0x53d6('0x2c')](handleEntityNotFound(_0x5a596e,null))['then'](function(_0x22bf6e){if(_0x22bf6e){var _0x5d6c92=[_0x53d6('0x6a'),'Chat',_0x53d6('0x6c'),'Sms',_0x53d6('0x6e'),'Openchannel','Whatsapp'];return db[_0x53d6('0x70')][_0x53d6('0x71')](function(_0x4bd329){var _0x5103c8=_[_0x53d6('0x34')](_0x5d6c92,function(_0x549cdd){var _0x47fdf1={'attributes':['id',_0x53d6('0x31')]};return _0x22bf6e['get'+_0x549cdd+_0x53d6('0x63')](_0x47fdf1)['then'](function(_0x5dc4f1){var _0x4d880c=_['map'](_0x5dc4f1,function(_0xcd27d){return _0xcd27d['removeAgents'](_0x41e407[_0x53d6('0x3c')][_0x53d6('0x67')],{'transaction':_0x4bd329})[_0x53d6('0x2c')](function(){var _0x1282c2=JSON['parse']('['+_0x41e407[_0x53d6('0x3c')][_0x53d6('0x67')]+']');var _0x25ed61=_[_0x53d6('0x34')](_0x1282c2,function(_0x4d7d2f){socket['emit'](_0x53d6('0x50')+_0x549cdd+'Queue:remove',{'UserId':Number(_0x4d7d2f),[_0x549cdd+_0x53d6('0x74')]:_0xcd27d['id']});if(_0x549cdd!==_0x53d6('0x6a'))return;return db[_0x53d6('0x7b')][_0x53d6('0x2d')]({'where':{'VoiceQueueId':_0xcd27d['id'],'UserId':_0x4d7d2f},'transaction':_0x4bd329});});return Promise['all'](_0x25ed61);});});return Promise['all'](_0x4d880c);});});return Promise[_0x53d6('0x81')](_0x5103c8)[_0x53d6('0x2c')](function(){return _0x22bf6e[_0x53d6('0x82')](_0x41e407[_0x53d6('0x3c')][_0x53d6('0x67')],{'transaction':_0x4bd329});});});}})[_0x53d6('0x2c')](respondWithStatusCode(_0x5a596e,null))[_0x53d6('0x4d')](handleError(_0x5a596e,null));};exports[_0x53d6('0x83')]=function(_0x5af9d9,_0x1ecd39,_0x2f5689){var _0x49a4ca={};var _0xcaa8a7={};var _0x40b452;var _0x33dadd;return db[_0x53d6('0x35')][_0x53d6('0x5b')]({'where':{'id':_0x5af9d9[_0x53d6('0x59')]['id']}})[_0x53d6('0x2c')](handleEntityNotFound(_0x1ecd39,null))[_0x53d6('0x2c')](function(_0x4d22f0){if(_0x4d22f0){_0x40b452=_0x4d22f0;_0xcaa8a7[_0x53d6('0x39')]=_['keys'](db[_0x53d6('0x78')][_0x53d6('0x36')]);_0xcaa8a7[_0x53d6('0x3c')]=_['keys'](_0x5af9d9[_0x53d6('0x3c')]);_0xcaa8a7[_0x53d6('0x3a')]=_['intersection'](_0xcaa8a7[_0x53d6('0x39')],_0xcaa8a7['query']);_0x49a4ca[_0x53d6('0x3d')]=_[_0x53d6('0x3b')](_0xcaa8a7['model'],qs[_0x53d6('0x3e')](_0x5af9d9[_0x53d6('0x3c')][_0x53d6('0x3e')]));_0x49a4ca[_0x53d6('0x3d')]=_0x49a4ca['attributes'][_0x53d6('0x3f')]?_0x49a4ca[_0x53d6('0x3d')]:_0xcaa8a7[_0x53d6('0x39')];_0x49a4ca[_0x53d6('0x62')]=qs['sort'](_0x5af9d9[_0x53d6('0x3c')][_0x53d6('0x40')]);_0x49a4ca[_0x53d6('0x43')]=qs[_0x53d6('0x3a')](_[_0x53d6('0x41')](_0x5af9d9[_0x53d6('0x3c')],_0xcaa8a7[_0x53d6('0x3a')]));if(_0x5af9d9[_0x53d6('0x3c')][_0x53d6('0x42')]){_0x49a4ca[_0x53d6('0x43')]=_[_0x53d6('0x44')](_0x49a4ca['where'],{'$or':_[_0x53d6('0x34')](_0x49a4ca[_0x53d6('0x3d')],function(_0x1a8994){var _0x51f85d={};_0x51f85d[_0x1a8994]={'$like':'%'+_0x5af9d9[_0x53d6('0x3c')][_0x53d6('0x42')]+'%'};return _0x51f85d;})});}_0x49a4ca=_[_0x53d6('0x44')]({},_0x49a4ca,_0x5af9d9['options']);return _0x40b452[_0x53d6('0x83')](_0x49a4ca);}})[_0x53d6('0x2c')](function(_0x2df3b0){if(_0x2df3b0){_0x33dadd=_0x2df3b0[_0x53d6('0x3f')];if(!_0x5af9d9[_0x53d6('0x3c')]['hasOwnProperty'](_0x53d6('0x84'))){_0x49a4ca[_0x53d6('0x25')]=qs['limit'](_0x5af9d9[_0x53d6('0x3c')][_0x53d6('0x25')]);_0x49a4ca[_0x53d6('0x23')]=qs[_0x53d6('0x23')](_0x5af9d9['query'][_0x53d6('0x23')]);}return _0x40b452[_0x53d6('0x83')](_0x49a4ca);}})['then'](function(_0x261be1){if(_0x261be1){return _0x261be1?{'count':_0x33dadd,'rows':_0x261be1}:null;}})[_0x53d6('0x2c')](respondWithResult(_0x1ecd39,null))['catch'](handleError(_0x1ecd39,null));};
\ No newline at end of file
index 3224205..7745f27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5da9=['hook','exports','update','emit','hasOwnProperty'];(function(_0x252530,_0x53ecb3){var _0x3ab304=function(_0x42ab56){while(--_0x42ab56){_0x252530['push'](_0x252530['shift']());}};_0x3ab304(++_0x53ecb3);}(_0x5da9,0x179));var _0x95da=function(_0x44039a,_0x2ac8a8){_0x44039a=_0x44039a-0x0;var _0x525de5=_0x5da9[_0x44039a];return _0x525de5;};'use strict';var EventEmitter=require('events');var Team=require('../../mysqldb')['db']['Team'];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x95da('0x0'),'afterDestroy':'remove'};function emitEvent(_0x1d15dc){return function(_0x5d289c,_0x1cbc83,_0x39656c){TeamEvents[_0x95da('0x1')](_0x1d15dc+':'+_0x5d289c['id'],_0x5d289c);TeamEvents[_0x95da('0x1')](_0x1d15dc,_0x5d289c);_0x39656c(null);};}for(var e in events){if(events[_0x95da('0x2')](e)){var event=events[e];Team[_0x95da('0x3')](e,emitEvent(event));}}module[_0x95da('0x4')]=TeamEvents;
\ No newline at end of file
+var _0x77f6=['hasOwnProperty','hook','exports','events','../../mysqldb','Team','setMaxListeners','save','update'];(function(_0x2dbb75,_0x410be9){var _0x59ed4f=function(_0x5990e9){while(--_0x5990e9){_0x2dbb75['push'](_0x2dbb75['shift']());}};_0x59ed4f(++_0x410be9);}(_0x77f6,0x198));var _0x677f=function(_0x22fdc4,_0x2f2ad3){_0x22fdc4=_0x22fdc4-0x0;var _0x491feb=_0x77f6[_0x22fdc4];return _0x491feb;};'use strict';var EventEmitter=require(_0x677f('0x0'));var Team=require(_0x677f('0x1'))['db'][_0x677f('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x677f('0x3')](0x0);var events={'afterCreate':_0x677f('0x4'),'afterUpdate':_0x677f('0x5'),'afterDestroy':'remove'};function emitEvent(_0x163c8a){return function(_0x3d2f75,_0x8add9f,_0x1c4b3e){TeamEvents['emit'](_0x163c8a+':'+_0x3d2f75['id'],_0x3d2f75);TeamEvents['emit'](_0x163c8a,_0x3d2f75);_0x1c4b3e(null);};}for(var e in events){if(events[_0x677f('0x6')](e)){var event=events[e];Team[_0x677f('0x7')](e,emitEvent(event));}}module[_0x677f('0x8')]=TeamEvents;
\ No newline at end of file
index 691df1f..27f28f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0988=['moment','bluebird','request-promise','path','rimraf','./team.attributes','exports','define','teams','lodash','util','../../config/logger'];(function(_0x3f92c1,_0x55b382){var _0x395857=function(_0x314e51){while(--_0x314e51){_0x3f92c1['push'](_0x3f92c1['shift']());}};_0x395857(++_0x55b382);}(_0x0988,0x105));var _0x8098=function(_0x1075a2,_0xb2f371){_0x1075a2=_0x1075a2-0x0;var _0x43f5f9=_0x0988[_0x1075a2];return _0x43f5f9;};'use strict';var _=require(_0x8098('0x0'));var util=require(_0x8098('0x1'));var logger=require(_0x8098('0x2'))('api');var moment=require(_0x8098('0x3'));var BPromise=require(_0x8098('0x4'));var rp=require(_0x8098('0x5'));var fs=require('fs');var path=require(_0x8098('0x6'));var rimraf=require(_0x8098('0x7'));var config=require('../../config/environment');var attributes=require(_0x8098('0x8'));module[_0x8098('0x9')]=function(_0x10cf6b,_0x4c9980){return _0x10cf6b[_0x8098('0xa')]('Team',attributes,{'tableName':_0x8098('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x080b=['api','moment','request-promise','rimraf','../../config/environment','./team.attributes','exports','define','Team','teams','lodash','util','../../config/logger'];(function(_0x2df5b0,_0x14178f){var _0x3b46b3=function(_0x2d2428){while(--_0x2d2428){_0x2df5b0['push'](_0x2df5b0['shift']());}};_0x3b46b3(++_0x14178f);}(_0x080b,0x15c));var _0xb080=function(_0x114072,_0x178924){_0x114072=_0x114072-0x0;var _0x52ab69=_0x080b[_0x114072];return _0x52ab69;};'use strict';var _=require(_0xb080('0x0'));var util=require(_0xb080('0x1'));var logger=require(_0xb080('0x2'))(_0xb080('0x3'));var moment=require(_0xb080('0x4'));var BPromise=require('bluebird');var rp=require(_0xb080('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb080('0x6'));var config=require(_0xb080('0x7'));var attributes=require(_0xb080('0x8'));module[_0xb080('0x9')]=function(_0x26e1d3,_0x53d688){return _0x26e1d3[_0xb080('0xa')](_0xb080('0xb'),attributes,{'tableName':_0xb080('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 941a15d..ec7bb6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeac6=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./team.socket','register','request','info','Team,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Team,\x20%s,\x20%s','message','catch','lodash','util','moment'];(function(_0x53e02c,_0x42de14){var _0x3d2e7a=function(_0x195c90){while(--_0x195c90){_0x53e02c['push'](_0x53e02c['shift']());}};_0x3d2e7a(++_0x42de14);}(_0xeac6,0x1eb));var _0x6eac=function(_0x41d2c6,_0x4c1a0c){_0x41d2c6=_0x41d2c6-0x0;var _0x1ec2ca=_0xeac6[_0x41d2c6];return _0x1ec2ca;};'use strict';var _=require(_0x6eac('0x0'));var util=require(_0x6eac('0x1'));var moment=require(_0x6eac('0x2'));var BPromise=require(_0x6eac('0x3'));var rs=require(_0x6eac('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6eac('0x5'))['db'];var utils=require(_0x6eac('0x6'));var logger=require(_0x6eac('0x7'))(_0x6eac('0x8'));var config=require(_0x6eac('0x9'));var jayson=require(_0x6eac('0xa'));var client=jayson['client'][_0x6eac('0xb')]({'port':0x232a});config[_0x6eac('0xc')]=_['defaults'](config[_0x6eac('0xc')],{'host':_0x6eac('0xd'),'port':0x18eb});var socket=require(_0x6eac('0xe'))(new Redis(config['redis']));require(_0x6eac('0xf'))[_0x6eac('0x10')](socket);function respondWithRpcPromise(_0x390cde,_0x1d9253,_0x2ac2b7){return new BPromise(function(_0x25063b,_0x2d4130){return client[_0x6eac('0x11')](_0x390cde,_0x2ac2b7)['then'](function(_0x507897){logger[_0x6eac('0x12')]('Team,\x20%s,\x20%s',_0x1d9253,'request\x20sent');logger['debug'](_0x6eac('0x13'),_0x1d9253,_0x6eac('0x14'),JSON['stringify'](_0x507897));if(_0x507897[_0x6eac('0x15')]){if(_0x507897[_0x6eac('0x15')][_0x6eac('0x16')]===0x1f4){logger['error'](_0x6eac('0x17'),_0x1d9253,_0x507897[_0x6eac('0x15')][_0x6eac('0x18')]);return _0x2d4130(_0x507897[_0x6eac('0x15')][_0x6eac('0x18')]);}logger[_0x6eac('0x15')](_0x6eac('0x17'),_0x1d9253,_0x507897[_0x6eac('0x15')][_0x6eac('0x18')]);return _0x25063b(_0x507897[_0x6eac('0x15')][_0x6eac('0x18')]);}else{logger['info'](_0x6eac('0x17'),_0x1d9253,_0x6eac('0x14'));_0x25063b(_0x507897['result'][_0x6eac('0x18')]);}})[_0x6eac('0x19')](function(_0x4e83c6){logger[_0x6eac('0x15')](_0x6eac('0x17'),_0x1d9253,_0x4e83c6);_0x2d4130(_0x4e83c6);});});}
\ No newline at end of file
+var _0x4764=['stringify','error','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','request','then','Team,\x20%s,\x20%s','debug','Team,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x7642c,_0x2ec4b0){var _0x5412fd=function(_0xffc8e3){while(--_0xffc8e3){_0x7642c['push'](_0x7642c['shift']());}};_0x5412fd(++_0x2ec4b0);}(_0x4764,0x65));var _0x4476=function(_0x51fad2,_0x5f41b3){_0x51fad2=_0x51fad2-0x0;var _0x2e4bb4=_0x4764[_0x51fad2];return _0x2e4bb4;};'use strict';var _=require(_0x4476('0x0'));var util=require(_0x4476('0x1'));var moment=require(_0x4476('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4476('0x3'));var db=require(_0x4476('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4476('0x5'))('rpc');var config=require(_0x4476('0x6'));var jayson=require(_0x4476('0x7'));var client=jayson[_0x4476('0x8')][_0x4476('0x9')]({'port':0x232a});config[_0x4476('0xa')]=_['defaults'](config[_0x4476('0xa')],{'host':_0x4476('0xb'),'port':0x18eb});var socket=require(_0x4476('0xc'))(new Redis(config[_0x4476('0xa')]));require('./team.socket')['register'](socket);function respondWithRpcPromise(_0x4ed288,_0x337982,_0x497eb3){return new BPromise(function(_0x1fa829,_0x1b56f6){return client[_0x4476('0xd')](_0x4ed288,_0x497eb3)[_0x4476('0xe')](function(_0x3bb20f){logger['info'](_0x4476('0xf'),_0x337982,'request\x20sent');logger[_0x4476('0x10')](_0x4476('0x11'),_0x337982,_0x4476('0x12'),JSON[_0x4476('0x13')](_0x3bb20f));if(_0x3bb20f['error']){if(_0x3bb20f[_0x4476('0x14')]['code']===0x1f4){logger[_0x4476('0x14')](_0x4476('0xf'),_0x337982,_0x3bb20f[_0x4476('0x14')]['message']);return _0x1b56f6(_0x3bb20f[_0x4476('0x14')][_0x4476('0x15')]);}logger[_0x4476('0x14')](_0x4476('0xf'),_0x337982,_0x3bb20f['error']['message']);return _0x1fa829(_0x3bb20f['error'][_0x4476('0x15')]);}else{logger['info']('Team,\x20%s,\x20%s',_0x337982,_0x4476('0x12'));_0x1fa829(_0x3bb20f[_0x4476('0x16')][_0x4476('0x15')]);}})[_0x4476('0x17')](function(_0x36bb01){logger[_0x4476('0x14')]('Team,\x20%s,\x20%s',_0x337982,_0x36bb01);_0x1b56f6(_0x36bb01);});});}
\ No newline at end of file
index a529f8e..07c889a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x336a=['length','team:','./team.events','save','remove','removeListener','register'];(function(_0xafc22b,_0x57607e){var _0x3f9288=function(_0x277571){while(--_0x277571){_0xafc22b['push'](_0xafc22b['shift']());}};_0x3f9288(++_0x57607e);}(_0x336a,0xa3));var _0xa336=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x336a[_0xc4001c];return _0x49f7bc;};'use strict';var TeamEvents=require(_0xa336('0x0'));var events=[_0xa336('0x1'),_0xa336('0x2'),'update'];function createListener(_0xa78c58,_0x1233c4){return function(_0x1925bf){_0x1233c4['emit'](_0xa78c58,_0x1925bf);};}function removeListener(_0x1df5c2,_0x1c8b7d){return function(){TeamEvents[_0xa336('0x3')](_0x1df5c2,_0x1c8b7d);};}exports[_0xa336('0x4')]=function(_0x1cbfe3){for(var _0x4b9322=0x0,_0xbec93d=events[_0xa336('0x5')];_0x4b9322<_0xbec93d;_0x4b9322++){var _0x1b25de=events[_0x4b9322];var _0x527ad8=createListener(_0xa336('0x6')+_0x1b25de,_0x1cbfe3);TeamEvents['on'](_0x1b25de,_0x527ad8);}};
\ No newline at end of file
+var _0xa095=['update','emit','removeListener','register','team:','./team.events','save'];(function(_0x23a477,_0x36bd86){var _0x1a6fb2=function(_0x4e9f26){while(--_0x4e9f26){_0x23a477['push'](_0x23a477['shift']());}};_0x1a6fb2(++_0x36bd86);}(_0xa095,0x7c));var _0x5a09=function(_0x49052b,_0x3ba709){_0x49052b=_0x49052b-0x0;var _0x48c045=_0xa095[_0x49052b];return _0x48c045;};'use strict';var TeamEvents=require(_0x5a09('0x0'));var events=[_0x5a09('0x1'),'remove',_0x5a09('0x2')];function createListener(_0x49e570,_0x34dd5b){return function(_0x329bdd){_0x34dd5b[_0x5a09('0x3')](_0x49e570,_0x329bdd);};}function removeListener(_0x200afa,_0x59818b){return function(){TeamEvents[_0x5a09('0x4')](_0x200afa,_0x59818b);};}exports[_0x5a09('0x5')]=function(_0x25edc3){for(var _0x327fe6=0x0,_0x1fb5d8=events['length'];_0x327fe6<_0x1fb5d8;_0x327fe6++){var _0x55017e=events[_0x327fe6];var _0x570f6e=createListener(_0x5a09('0x6')+_0x55017e,_0x25edc3);TeamEvents['on'](_0x55017e,_0x570f6e);}};
\ No newline at end of file
index e4d81fd..9db0564 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(_0x5b93b2,_0x577b90){var _0x26d9a5=function(_0x111569){while(--_0x111569){_0x5b93b2['push'](_0x5b93b2['shift']());}};_0x26d9a5(++_0x577b90);}(_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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x34120c,_0x5c5f42){var _0x37888f=function(_0x28ae25){while(--_0x28ae25){_0x34120c['push'](_0x34120c['shift']());}};_0x37888f(++_0x5c5f42);}(_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 e61207c..9006424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c57=['INTEGER','exports'];(function(_0xd7f240,_0x39585f){var _0x6d6606=function(_0x9f4552){while(--_0x9f4552){_0xd7f240['push'](_0xd7f240['shift']());}};_0x6d6606(++_0x39585f);}(_0x4c57,0x1ad));var _0x74c5=function(_0x426714,_0x198a8a){_0x426714=_0x426714-0x0;var _0x4d116c=_0x4c57[_0x426714];return _0x4d116c;};'use strict';var Sequelize=require('sequelize');module[_0x74c5('0x0')]={'penalty':{'type':Sequelize[_0x74c5('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 e42957d..b8d496c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca8d=['bluebird','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue','team_has_voice_queues','lodash','util','../../config/logger','api','moment'];(function(_0x433078,_0x4a204f){var _0x10bfe7=function(_0x8b222d){while(--_0x8b222d){_0x433078['push'](_0x433078['shift']());}};_0x10bfe7(++_0x4a204f);}(_0xca8d,0x172));var _0xdca8=function(_0x49a975,_0x1d28d6){_0x49a975=_0x49a975-0x0;var _0x410d19=_0xca8d[_0x49a975];return _0x410d19;};'use strict';var _=require(_0xdca8('0x0'));var util=require(_0xdca8('0x1'));var logger=require(_0xdca8('0x2'))(_0xdca8('0x3'));var moment=require(_0xdca8('0x4'));var BPromise=require(_0xdca8('0x5'));var rp=require(_0xdca8('0x6'));var fs=require('fs');var path=require(_0xdca8('0x7'));var rimraf=require(_0xdca8('0x8'));var config=require(_0xdca8('0x9'));var attributes=require(_0xdca8('0xa'));module[_0xdca8('0xb')]=function(_0x4d6383,_0x3366d5){return _0x4d6383[_0xdca8('0xc')](_0xdca8('0xd'),attributes,{'tableName':_0xdca8('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x65f4=['exports','TeamVoiceQueue','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0xebb12,_0x4f3869){var _0x4f3c04=function(_0x3ac428){while(--_0x3ac428){_0xebb12['push'](_0xebb12['shift']());}};_0x4f3c04(++_0x4f3869);}(_0x65f4,0x19a));var _0x465f=function(_0x3bc4ad,_0x17d81c){_0x3bc4ad=_0x3bc4ad-0x0;var _0x55b5e5=_0x65f4[_0x3bc4ad];return _0x55b5e5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x465f('0x0'))(_0x465f('0x1'));var moment=require(_0x465f('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x465f('0x3'));var rimraf=require(_0x465f('0x4'));var config=require(_0x465f('0x5'));var attributes=require('./teamVoiceQueue.attributes');module[_0x465f('0x6')]=function(_0xe5a9bd,_0x44d697){return _0xe5a9bd['define'](_0x465f('0x7'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d648322..311fe60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98fc=['http','request','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x1573ea,_0x434f02){var _0x51c0e2=function(_0x5c9b28){while(--_0x5c9b28){_0x1573ea['push'](_0x1573ea['shift']());}};_0x51c0e2(++_0x434f02);}(_0x98fc,0x156));var _0xc98f=function(_0x5e9876,_0x16052d){_0x5e9876=_0x5e9876-0x0;var _0x576c48=_0x98fc[_0x5e9876];return _0x576c48;};'use strict';var _=require(_0xc98f('0x0'));var util=require(_0xc98f('0x1'));var moment=require(_0xc98f('0x2'));var BPromise=require(_0xc98f('0x3'));var rs=require(_0xc98f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc98f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc98f('0x6'))('rpc');var config=require(_0xc98f('0x7'));var jayson=require(_0xc98f('0x8'));var client=jayson[_0xc98f('0x9')][_0xc98f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3237e1,_0x1a8812,_0x28f276){return new BPromise(function(_0x191b3f,_0x12bdba){return client[_0xc98f('0xb')](_0x3237e1,_0x28f276)['then'](function(_0xb21d1a){logger['info'](_0xc98f('0xc'),_0x1a8812,_0xc98f('0xd'));logger[_0xc98f('0xe')](_0xc98f('0xf'),_0x1a8812,_0xc98f('0xd'),JSON['stringify'](_0xb21d1a));if(_0xb21d1a['error']){if(_0xb21d1a[_0xc98f('0x10')][_0xc98f('0x11')]===0x1f4){logger[_0xc98f('0x10')](_0xc98f('0xc'),_0x1a8812,_0xb21d1a[_0xc98f('0x10')]['message']);return _0x12bdba(_0xb21d1a[_0xc98f('0x10')][_0xc98f('0x12')]);}logger['error'](_0xc98f('0xc'),_0x1a8812,_0xb21d1a[_0xc98f('0x10')][_0xc98f('0x12')]);return _0x191b3f(_0xb21d1a[_0xc98f('0x10')][_0xc98f('0x12')]);}else{logger[_0xc98f('0x13')]('TeamVoiceQueue,\x20%s,\x20%s',_0x1a8812,_0xc98f('0xd'));_0x191b3f(_0xb21d1a[_0xc98f('0x14')]['message']);}})[_0xc98f('0x15')](function(_0x5ef39c){logger[_0xc98f('0x10')](_0xc98f('0xc'),_0x1a8812,_0x5ef39c);_0x12bdba(_0x5ef39c);});});}
\ No newline at end of file
+var _0x245e=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment'];(function(_0x1a455c,_0x3e182c){var _0x5d5a35=function(_0x552acd){while(--_0x552acd){_0x1a455c['push'](_0x1a455c['shift']());}};_0x5d5a35(++_0x3e182c);}(_0x245e,0x11d));var _0xe245=function(_0x10354c,_0xe4661e){_0x10354c=_0x10354c-0x0;var _0x28d75b=_0x245e[_0x10354c];return _0x28d75b;};'use strict';var _=require(_0xe245('0x0'));var util=require(_0xe245('0x1'));var moment=require(_0xe245('0x2'));var BPromise=require('bluebird');var rs=require(_0xe245('0x3'));var fs=require('fs');var Redis=require(_0xe245('0x4'));var db=require(_0xe245('0x5'))['db'];var utils=require(_0xe245('0x6'));var logger=require('../../config/logger')(_0xe245('0x7'));var config=require(_0xe245('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe245('0x9')][_0xe245('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b2436,_0x3ca3f1,_0x122375){return new BPromise(function(_0x4e4201,_0xe4bace){return client[_0xe245('0xb')](_0x1b2436,_0x122375)[_0xe245('0xc')](function(_0x483e76){logger[_0xe245('0xd')](_0xe245('0xe'),_0x3ca3f1,_0xe245('0xf'));logger[_0xe245('0x10')](_0xe245('0x11'),_0x3ca3f1,_0xe245('0xf'),JSON[_0xe245('0x12')](_0x483e76));if(_0x483e76['error']){if(_0x483e76[_0xe245('0x13')][_0xe245('0x14')]===0x1f4){logger[_0xe245('0x13')](_0xe245('0xe'),_0x3ca3f1,_0x483e76[_0xe245('0x13')]['message']);return _0xe4bace(_0x483e76[_0xe245('0x13')][_0xe245('0x15')]);}logger[_0xe245('0x13')](_0xe245('0xe'),_0x3ca3f1,_0x483e76['error'][_0xe245('0x15')]);return _0x4e4201(_0x483e76['error']['message']);}else{logger[_0xe245('0xd')](_0xe245('0xe'),_0x3ca3f1,_0xe245('0xf'));_0x4e4201(_0x483e76[_0xe245('0x16')]['message']);}})[_0xe245('0x17')](function(_0x398bda){logger['error'](_0xe245('0xe'),_0x3ca3f1,_0x398bda);_0xe4bace(_0x398bda);});});}
\ No newline at end of file
index 0a4f567..0041a83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd58=['util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','multer'];(function(_0x413092,_0x585793){var _0x47a8f1=function(_0x1f0598){while(--_0x1f0598){_0x413092['push'](_0x413092['shift']());}};_0x47a8f1(++_0x585793);}(_0xfd58,0xb3));var _0x8fd5=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xfd58[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0x8fd5('0x0'));var util=require(_0x8fd5('0x1'));var path=require('path');var timeout=require(_0x8fd5('0x2'));var express=require(_0x8fd5('0x3'));var router=express['Router']();var fs_extra=require(_0x8fd5('0x4'));var auth=require(_0x8fd5('0x5'));var interaction=require(_0x8fd5('0x6'));var config=require(_0x8fd5('0x7'));var controller=require('./template.controller');router[_0x8fd5('0x8')]('/',auth[_0x8fd5('0x9')](),controller[_0x8fd5('0xa')]);router['get'](_0x8fd5('0xb'),auth[_0x8fd5('0x9')](),controller[_0x8fd5('0xc')]);router[_0x8fd5('0xd')]('/',auth[_0x8fd5('0x9')](),controller['create']);router[_0x8fd5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x8fd5('0xf')]);router[_0x8fd5('0x10')]('/:id',auth[_0x8fd5('0x9')](),controller[_0x8fd5('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x27fb=['path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./template.controller','isAuthenticated','index','get','/:id','post','put','update','exports','multer','util'];(function(_0x1f2fcc,_0x5bb2f6){var _0x2b335d=function(_0xd2b08e){while(--_0xd2b08e){_0x1f2fcc['push'](_0x1f2fcc['shift']());}};_0x2b335d(++_0x5bb2f6);}(_0x27fb,0x1de));var _0xb27f=function(_0x2691b1,_0x1c50c6){_0x2691b1=_0x2691b1-0x0;var _0xa6a878=_0x27fb[_0x2691b1];return _0xa6a878;};'use strict';var multer=require(_0xb27f('0x0'));var util=require(_0xb27f('0x1'));var path=require(_0xb27f('0x2'));var timeout=require('connect-timeout');var express=require(_0xb27f('0x3'));var router=express['Router']();var fs_extra=require(_0xb27f('0x4'));var auth=require(_0xb27f('0x5'));var interaction=require(_0xb27f('0x6'));var config=require('../../config/environment');var controller=require(_0xb27f('0x7'));router['get']('/',auth[_0xb27f('0x8')](),controller[_0xb27f('0x9')]);router[_0xb27f('0xa')](_0xb27f('0xb'),auth[_0xb27f('0x8')](),controller['show']);router[_0xb27f('0xc')]('/',auth[_0xb27f('0x8')](),controller['create']);router[_0xb27f('0xd')](_0xb27f('0xb'),auth[_0xb27f('0x8')](),controller[_0xb27f('0xe')]);router['delete'](_0xb27f('0xb'),auth[_0xb27f('0x8')](),controller['destroy']);module[_0xb27f('0xf')]=router;
\ No newline at end of file
index 70548f9..3319e8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc824=['exports','STRING','TEXT'];(function(_0x3e5cf9,_0x439ffd){var _0x5e85c8=function(_0x411d5a){while(--_0x411d5a){_0x3e5cf9['push'](_0x3e5cf9['shift']());}};_0x5e85c8(++_0x439ffd);}(_0xc824,0x72));var _0x4c82=function(_0x3e0427,_0x18589c){_0x3e0427=_0x3e0427-0x0;var _0x595d4e=_0xc824[_0x3e0427];return _0x595d4e;};'use strict';var Sequelize=require('sequelize');module[_0x4c82('0x0')]={'name':{'type':Sequelize[_0x4c82('0x1')]},'description':{'type':Sequelize[_0x4c82('0x1')]},'html':{'type':Sequelize[_0x4c82('0x2')]}};
\ No newline at end of file
+var _0x0ecf=['STRING','TEXT','sequelize','exports'];(function(_0x14763b,_0x4701f4){var _0x37b3ee=function(_0x24d1a8){while(--_0x24d1a8){_0x14763b['push'](_0x14763b['shift']());}};_0x37b3ee(++_0x4701f4);}(_0x0ecf,0xae));var _0xf0ec=function(_0x59e042,_0x2da2ae){_0x59e042=_0x59e042-0x0;var _0x3817bc=_0x0ecf[_0x59e042];return _0x3817bc;};'use strict';var Sequelize=require(_0xf0ec('0x0'));module[_0xf0ec('0x1')]={'name':{'type':Sequelize[_0xf0ec('0x2')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize[_0xf0ec('0x3')]}};
\ No newline at end of file
index 363bb54..15f1b71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc121=['../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','Templates','sendStatus','error','stack','name','send','index','map','Template','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','filters','include','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','update','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils'];(function(_0x4a5e27,_0xca22a3){var _0x16bc34=function(_0x29f47f){while(--_0x29f47f){_0x4a5e27['push'](_0x4a5e27['shift']());}};_0x16bc34(++_0xca22a3);}(_0xc121,0x1dd));var _0x1c12=function(_0x2b9b7f,_0x4d47df){_0x2b9b7f=_0x2b9b7f-0x0;var _0x4ed19a=_0xc121[_0x2b9b7f];return _0x4ed19a;};'use strict';var emlformat=require(_0x1c12('0x0'));var rimraf=require(_0x1c12('0x1'));var zipdir=require(_0x1c12('0x2'));var jsonpatch=require(_0x1c12('0x3'));var rp=require(_0x1c12('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1c12('0x5'));var util=require(_0x1c12('0x6'));var path=require('path');var sox=require(_0x1c12('0x7'));var csv=require(_0x1c12('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1c12('0x9'));var squel=require(_0x1c12('0xa'));var crypto=require(_0x1c12('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x1c12('0xc'));var toCsv=require(_0x1c12('0x8'));var querystring=require(_0x1c12('0xd'));var Papa=require(_0x1c12('0xe'));var Redis=require('ioredis');var authService=require(_0x1c12('0xf'));var qs=require(_0x1c12('0x10'));var as=require(_0x1c12('0x11'));var hardwareService=require(_0x1c12('0x12'));var logger=require('../../config/logger')(_0x1c12('0x13'));var utils=require(_0x1c12('0x14'));var config=require(_0x1c12('0x15'));var licenseUtil=require(_0x1c12('0x16'));var db=require(_0x1c12('0x17'))['db'];function respondWithStatusCode(_0x210ebf,_0x5b882c){_0x5b882c=_0x5b882c||0xcc;return function(_0x22b178){if(_0x22b178){return _0x210ebf['sendStatus'](_0x5b882c);}return _0x210ebf[_0x1c12('0x18')](_0x5b882c)[_0x1c12('0x19')]();};}function respondWithResult(_0x2cff7e,_0x4dbf83){_0x4dbf83=_0x4dbf83||0xc8;return function(_0x3539bc){if(_0x3539bc){return _0x2cff7e[_0x1c12('0x18')](_0x4dbf83)[_0x1c12('0x1a')](_0x3539bc);}};}function respondWithFilteredResult(_0x183d5e,_0x86120a){return function(_0x19bc66){if(_0x19bc66){var _0x21e7ce=typeof _0x86120a[_0x1c12('0x1b')]===_0x1c12('0x1c')&&typeof _0x86120a[_0x1c12('0x1d')]===_0x1c12('0x1c');var _0x22d46a=_0x19bc66[_0x1c12('0x1e')];var _0x350372=_0x21e7ce?0x0:_0x86120a[_0x1c12('0x1b')];var _0x4d7634=_0x21e7ce?_0x19bc66['count']:_0x86120a[_0x1c12('0x1b')]+_0x86120a[_0x1c12('0x1d')];var _0x27afca;if(_0x4d7634>=_0x22d46a){_0x4d7634=_0x22d46a;_0x27afca=0xc8;}else{_0x27afca=0xce;}_0x183d5e['status'](_0x27afca);return _0x183d5e[_0x1c12('0x1f')](_0x1c12('0x20'),_0x350372+'-'+_0x4d7634+'/'+_0x22d46a)[_0x1c12('0x1a')](_0x19bc66);}return null;};}function patchUpdates(_0x28597f){return function(_0x423a90){try{jsonpatch[_0x1c12('0x21')](_0x423a90,_0x28597f,!![]);}catch(_0x2ab634){return BPromise[_0x1c12('0x22')](_0x2ab634);}return _0x423a90[_0x1c12('0x23')]();};}function saveUpdates(_0x2f7e6b,_0x286540){return function(_0x7f0f1b){if(_0x7f0f1b){return _0x7f0f1b['update'](_0x2f7e6b)[_0x1c12('0x24')](function(_0x2c0852){return _0x2c0852;});}return null;};}function removeEntity(_0x4b836b,_0x6e182d){return function(_0x32a2b7){if(_0x32a2b7){return _0x32a2b7[_0x1c12('0x25')]()[_0x1c12('0x24')](function(){var _0x257ff6=_0x32a2b7['get']({'plain':!![]});var _0x4ae876=_0x1c12('0x26');return db['UserProfileResource'][_0x1c12('0x25')]({'where':{'type':_0x4ae876,'resourceId':_0x257ff6['id']}})['then'](function(){return _0x32a2b7;});})[_0x1c12('0x24')](function(){_0x4b836b[_0x1c12('0x18')](0xcc)[_0x1c12('0x19')]();});}};}function handleEntityNotFound(_0x37ed28,_0xffbfc9){return function(_0x339975){if(!_0x339975){_0x37ed28[_0x1c12('0x27')](0x194);}return _0x339975;};}function handleError(_0x4d3431,_0x2a59ed){_0x2a59ed=_0x2a59ed||0x1f4;return function(_0x2a3f60){logger[_0x1c12('0x28')](_0x2a3f60[_0x1c12('0x29')]);if(_0x2a3f60['name']){delete _0x2a3f60[_0x1c12('0x2a')];}_0x4d3431[_0x1c12('0x18')](_0x2a59ed)[_0x1c12('0x2b')](_0x2a3f60);};}exports[_0x1c12('0x2c')]=function(_0x1651b1,_0x4e438c){var _0x5c5d72={},_0x1a0d6e={},_0x3fac32={'count':0x0,'rows':[]};var _0x45713a=_[_0x1c12('0x2d')](db[_0x1c12('0x2e')][_0x1c12('0x2f')],function(_0x6d4e49){return{'name':_0x6d4e49[_0x1c12('0x30')],'type':_0x6d4e49[_0x1c12('0x31')][_0x1c12('0x32')]};});_0x1a0d6e[_0x1c12('0x33')]=_[_0x1c12('0x2d')](_0x45713a,'name');_0x1a0d6e[_0x1c12('0x34')]=_[_0x1c12('0x35')](_0x1651b1[_0x1c12('0x34')]);_0x1a0d6e['filters']=_[_0x1c12('0x36')](_0x1a0d6e['model'],_0x1a0d6e[_0x1c12('0x34')]);_0x5c5d72[_0x1c12('0x37')]=_[_0x1c12('0x36')](_0x1a0d6e[_0x1c12('0x33')],qs[_0x1c12('0x38')](_0x1651b1[_0x1c12('0x34')][_0x1c12('0x38')]));_0x5c5d72[_0x1c12('0x37')]=_0x5c5d72['attributes'][_0x1c12('0x39')]?_0x5c5d72[_0x1c12('0x37')]:_0x1a0d6e['model'];if(!_0x1651b1[_0x1c12('0x34')][_0x1c12('0x3a')]('nolimit')){_0x5c5d72['limit']=qs[_0x1c12('0x1d')](_0x1651b1[_0x1c12('0x34')]['limit']);_0x5c5d72[_0x1c12('0x1b')]=qs[_0x1c12('0x1b')](_0x1651b1[_0x1c12('0x34')][_0x1c12('0x1b')]);}_0x5c5d72['order']=qs['sort'](_0x1651b1['query'][_0x1c12('0x3b')]);_0x5c5d72[_0x1c12('0x3c')]=qs['filters'](_['pick'](_0x1651b1[_0x1c12('0x34')],_0x1a0d6e['filters']),_0x45713a);if(_0x1651b1[_0x1c12('0x34')][_0x1c12('0x3d')]){_0x5c5d72[_0x1c12('0x3c')]=_[_0x1c12('0x3e')](_0x5c5d72[_0x1c12('0x3c')],{'$or':_[_0x1c12('0x2d')](_0x45713a,function(_0x369f41){if(_0x369f41[_0x1c12('0x31')]!==_0x1c12('0x3f')){var _0x90e9de={};_0x90e9de[_0x369f41['name']]={'$like':'%'+_0x1651b1[_0x1c12('0x34')][_0x1c12('0x3d')]+'%'};return _0x90e9de;}})});}_0x5c5d72=_['merge']({},_0x5c5d72,_0x1651b1[_0x1c12('0x40')]);var _0x4d8237={'where':_0x5c5d72['where']};return db[_0x1c12('0x2e')][_0x1c12('0x1e')](_0x4d8237)[_0x1c12('0x24')](function(_0x59ae3a){_0x3fac32[_0x1c12('0x1e')]=_0x59ae3a;if(_0x1651b1[_0x1c12('0x34')][_0x1c12('0x41')]){_0x5c5d72['include']=[{'all':!![]}];}return db['Template']['findAll'](_0x5c5d72);})[_0x1c12('0x24')](function(_0x3a1356){_0x3fac32[_0x1c12('0x42')]=_0x3a1356;return _0x3fac32;})[_0x1c12('0x24')](respondWithFilteredResult(_0x4e438c,_0x5c5d72))[_0x1c12('0x43')](handleError(_0x4e438c,null));};exports[_0x1c12('0x44')]=function(_0x30eb79,_0x1274bf){var _0x2c7ef9={'raw':!![],'where':{'id':_0x30eb79['params']['id']}},_0x2ce055={};_0x2ce055[_0x1c12('0x33')]=_[_0x1c12('0x35')](db['Template'][_0x1c12('0x2f')]);_0x2ce055['query']=_[_0x1c12('0x35')](_0x30eb79['query']);_0x2ce055[_0x1c12('0x45')]=_[_0x1c12('0x36')](_0x2ce055[_0x1c12('0x33')],_0x2ce055['query']);_0x2c7ef9[_0x1c12('0x37')]=_[_0x1c12('0x36')](_0x2ce055[_0x1c12('0x33')],qs[_0x1c12('0x38')](_0x30eb79[_0x1c12('0x34')][_0x1c12('0x38')]));_0x2c7ef9['attributes']=_0x2c7ef9['attributes'][_0x1c12('0x39')]?_0x2c7ef9[_0x1c12('0x37')]:_0x2ce055[_0x1c12('0x33')];if(_0x30eb79[_0x1c12('0x34')]['includeAll']){_0x2c7ef9[_0x1c12('0x46')]=[{'all':!![]}];}_0x2c7ef9=_['merge']({},_0x2c7ef9,_0x30eb79[_0x1c12('0x40')]);return db['Template'][_0x1c12('0x47')](_0x2c7ef9)['then'](handleEntityNotFound(_0x1274bf,null))[_0x1c12('0x24')](respondWithResult(_0x1274bf,null))[_0x1c12('0x43')](handleError(_0x1274bf,null));};exports[_0x1c12('0x48')]=function(_0x14e27f,_0x50d60a){return db[_0x1c12('0x2e')][_0x1c12('0x48')](_0x14e27f[_0x1c12('0x49')],{})[_0x1c12('0x24')](function(_0x2a7d48){var _0x4ef587=_0x14e27f[_0x1c12('0x4a')][_0x1c12('0x4b')]({'plain':!![]});if(!_0x4ef587)throw new Error(_0x1c12('0x4c'));if(_0x4ef587[_0x1c12('0x4d')]===_0x1c12('0x4a')){var _0x412b68=_0x2a7d48[_0x1c12('0x4b')]({'plain':!![]});var _0x4191d7=_0x1c12('0x26');return db['UserProfileSection'][_0x1c12('0x47')]({'where':{'name':_0x4191d7,'userProfileId':_0x4ef587[_0x1c12('0x4e')]},'raw':!![]})[_0x1c12('0x24')](function(_0xd2836){if(_0xd2836&&_0xd2836[_0x1c12('0x4f')]===0x0){return db[_0x1c12('0x50')][_0x1c12('0x48')]({'name':_0x412b68['name'],'resourceId':_0x412b68['id'],'type':_0xd2836[_0x1c12('0x2a')],'sectionId':_0xd2836['id']},{})[_0x1c12('0x24')](function(){return _0x2a7d48;});}else{return _0x2a7d48;}})[_0x1c12('0x43')](function(_0x494c43){logger[_0x1c12('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x494c43);throw _0x494c43;});}return _0x2a7d48;})[_0x1c12('0x24')](respondWithResult(_0x50d60a,0xc9))['catch'](handleError(_0x50d60a,null));};exports[_0x1c12('0x51')]=function(_0xe77df1,_0x3b0b68){if(_0xe77df1[_0x1c12('0x49')]['id']){delete _0xe77df1[_0x1c12('0x49')]['id'];}return db[_0x1c12('0x2e')]['find']({'where':{'id':_0xe77df1[_0x1c12('0x52')]['id']}})[_0x1c12('0x24')](handleEntityNotFound(_0x3b0b68,null))['then'](saveUpdates(_0xe77df1[_0x1c12('0x49')],null))[_0x1c12('0x24')](respondWithResult(_0x3b0b68,null))[_0x1c12('0x43')](handleError(_0x3b0b68,null));};exports[_0x1c12('0x25')]=function(_0x22a063,_0x2d3b77){return db['Template'][_0x1c12('0x47')]({'where':{'id':_0x22a063[_0x1c12('0x52')]['id']}})[_0x1c12('0x24')](handleEntityNotFound(_0x2d3b77,null))[_0x1c12('0x24')](removeEntity(_0x2d3b77,null))['catch'](handleError(_0x2d3b77,null));};
\ No newline at end of file
+var _0x4226=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','json','apply','reject','save','update','then','get','Templates','UserProfileResource','end','error','stack','name','send','index','map','Template','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','keys','find','catch','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','create','eml-format','rimraf','zip-dir','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse'];(function(_0x22da96,_0xfc5108){var _0x5a35dd=function(_0x19f9bc){while(--_0x19f9bc){_0x22da96['push'](_0x22da96['shift']());}};_0x5a35dd(++_0xfc5108);}(_0x4226,0x9c));var _0x6422=function(_0x544b83,_0x3ae519){_0x544b83=_0x544b83-0x0;var _0x43d949=_0x4226[_0x544b83];return _0x43d949;};'use strict';var emlformat=require(_0x6422('0x0'));var rimraf=require(_0x6422('0x1'));var zipdir=require(_0x6422('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6422('0x3'));var moment=require(_0x6422('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6422('0x5'));var util=require('util');var path=require('path');var sox=require(_0x6422('0x6'));var csv=require(_0x6422('0x7'));var ejs=require(_0x6422('0x8'));var fs=require('fs');var fs_extra=require(_0x6422('0x9'));var _=require(_0x6422('0xa'));var squel=require(_0x6422('0xb'));var crypto=require('crypto');var jsforce=require(_0x6422('0xc'));var deskjs=require(_0x6422('0xd'));var toCsv=require(_0x6422('0x7'));var querystring=require(_0x6422('0xe'));var Papa=require(_0x6422('0xf'));var Redis=require(_0x6422('0x10'));var authService=require(_0x6422('0x11'));var qs=require(_0x6422('0x12'));var as=require(_0x6422('0x13'));var hardwareService=require(_0x6422('0x14'));var logger=require(_0x6422('0x15'))(_0x6422('0x16'));var utils=require(_0x6422('0x17'));var config=require(_0x6422('0x18'));var licenseUtil=require(_0x6422('0x19'));var db=require(_0x6422('0x1a'))['db'];function respondWithStatusCode(_0x26a065,_0x5011fc){_0x5011fc=_0x5011fc||0xcc;return function(_0x895c9c){if(_0x895c9c){return _0x26a065['sendStatus'](_0x5011fc);}return _0x26a065['status'](_0x5011fc)['end']();};}function respondWithResult(_0x433743,_0x5d594e){_0x5d594e=_0x5d594e||0xc8;return function(_0x178a5e){if(_0x178a5e){return _0x433743[_0x6422('0x1b')](_0x5d594e)['json'](_0x178a5e);}};}function respondWithFilteredResult(_0x1fbfcd,_0x11ebd9){return function(_0x123b50){if(_0x123b50){var _0x48fdc8=typeof _0x11ebd9[_0x6422('0x1c')]===_0x6422('0x1d')&&typeof _0x11ebd9[_0x6422('0x1e')]===_0x6422('0x1d');var _0x2f9d3f=_0x123b50[_0x6422('0x1f')];var _0x38f8b6=_0x48fdc8?0x0:_0x11ebd9[_0x6422('0x1c')];var _0x35e4f8=_0x48fdc8?_0x123b50[_0x6422('0x1f')]:_0x11ebd9[_0x6422('0x1c')]+_0x11ebd9[_0x6422('0x1e')];var _0x3387c0;if(_0x35e4f8>=_0x2f9d3f){_0x35e4f8=_0x2f9d3f;_0x3387c0=0xc8;}else{_0x3387c0=0xce;}_0x1fbfcd[_0x6422('0x1b')](_0x3387c0);return _0x1fbfcd[_0x6422('0x20')]('Content-Range',_0x38f8b6+'-'+_0x35e4f8+'/'+_0x2f9d3f)[_0x6422('0x21')](_0x123b50);}return null;};}function patchUpdates(_0x27706a){return function(_0x5761cd){try{jsonpatch[_0x6422('0x22')](_0x5761cd,_0x27706a,!![]);}catch(_0x220b9a){return BPromise[_0x6422('0x23')](_0x220b9a);}return _0x5761cd[_0x6422('0x24')]();};}function saveUpdates(_0x3d86f1,_0x17955a){return function(_0x2f35a7){if(_0x2f35a7){return _0x2f35a7[_0x6422('0x25')](_0x3d86f1)[_0x6422('0x26')](function(_0x2b93d2){return _0x2b93d2;});}return null;};}function removeEntity(_0x58c2a3,_0x36fce9){return function(_0x562d1d){if(_0x562d1d){return _0x562d1d['destroy']()[_0x6422('0x26')](function(){var _0x598183=_0x562d1d[_0x6422('0x27')]({'plain':!![]});var _0x59dcb1=_0x6422('0x28');return db[_0x6422('0x29')]['destroy']({'where':{'type':_0x59dcb1,'resourceId':_0x598183['id']}})[_0x6422('0x26')](function(){return _0x562d1d;});})[_0x6422('0x26')](function(){_0x58c2a3[_0x6422('0x1b')](0xcc)[_0x6422('0x2a')]();});}};}function handleEntityNotFound(_0x5a7c17,_0x8a7b54){return function(_0x35e211){if(!_0x35e211){_0x5a7c17['sendStatus'](0x194);}return _0x35e211;};}function handleError(_0x2888f3,_0x46fd43){_0x46fd43=_0x46fd43||0x1f4;return function(_0x49fae1){logger[_0x6422('0x2b')](_0x49fae1[_0x6422('0x2c')]);if(_0x49fae1['name']){delete _0x49fae1[_0x6422('0x2d')];}_0x2888f3[_0x6422('0x1b')](_0x46fd43)[_0x6422('0x2e')](_0x49fae1);};}exports[_0x6422('0x2f')]=function(_0x20e556,_0x2c157b){var _0x159eed={},_0x3cd763={},_0x49ed6b={'count':0x0,'rows':[]};var _0x2b84b5=_[_0x6422('0x30')](db[_0x6422('0x31')][_0x6422('0x32')],function(_0x37e6e8){return{'name':_0x37e6e8[_0x6422('0x33')],'type':_0x37e6e8[_0x6422('0x34')][_0x6422('0x35')]};});_0x3cd763[_0x6422('0x36')]=_[_0x6422('0x30')](_0x2b84b5,_0x6422('0x2d'));_0x3cd763[_0x6422('0x37')]=_['keys'](_0x20e556[_0x6422('0x37')]);_0x3cd763[_0x6422('0x38')]=_[_0x6422('0x39')](_0x3cd763[_0x6422('0x36')],_0x3cd763[_0x6422('0x37')]);_0x159eed[_0x6422('0x3a')]=_['intersection'](_0x3cd763['model'],qs['fields'](_0x20e556[_0x6422('0x37')][_0x6422('0x3b')]));_0x159eed[_0x6422('0x3a')]=_0x159eed['attributes'][_0x6422('0x3c')]?_0x159eed['attributes']:_0x3cd763[_0x6422('0x36')];if(!_0x20e556[_0x6422('0x37')][_0x6422('0x3d')](_0x6422('0x3e'))){_0x159eed[_0x6422('0x1e')]=qs[_0x6422('0x1e')](_0x20e556[_0x6422('0x37')][_0x6422('0x1e')]);_0x159eed[_0x6422('0x1c')]=qs[_0x6422('0x1c')](_0x20e556['query'][_0x6422('0x1c')]);}_0x159eed[_0x6422('0x3f')]=qs[_0x6422('0x40')](_0x20e556[_0x6422('0x37')][_0x6422('0x40')]);_0x159eed[_0x6422('0x41')]=qs['filters'](_[_0x6422('0x42')](_0x20e556['query'],_0x3cd763['filters']),_0x2b84b5);if(_0x20e556[_0x6422('0x37')][_0x6422('0x43')]){_0x159eed[_0x6422('0x41')]=_['merge'](_0x159eed[_0x6422('0x41')],{'$or':_['map'](_0x2b84b5,function(_0x2bd261){if(_0x2bd261[_0x6422('0x34')]!=='VIRTUAL'){var _0x29c324={};_0x29c324[_0x2bd261[_0x6422('0x2d')]]={'$like':'%'+_0x20e556['query'][_0x6422('0x43')]+'%'};return _0x29c324;}})});}_0x159eed=_[_0x6422('0x44')]({},_0x159eed,_0x20e556[_0x6422('0x45')]);var _0x35dfd3={'where':_0x159eed[_0x6422('0x41')]};return db[_0x6422('0x31')][_0x6422('0x1f')](_0x35dfd3)['then'](function(_0x1a3075){_0x49ed6b[_0x6422('0x1f')]=_0x1a3075;if(_0x20e556[_0x6422('0x37')][_0x6422('0x46')]){_0x159eed[_0x6422('0x47')]=[{'all':!![]}];}return db['Template'][_0x6422('0x48')](_0x159eed);})[_0x6422('0x26')](function(_0x5c5249){_0x49ed6b[_0x6422('0x49')]=_0x5c5249;return _0x49ed6b;})[_0x6422('0x26')](respondWithFilteredResult(_0x2c157b,_0x159eed))['catch'](handleError(_0x2c157b,null));};exports[_0x6422('0x4a')]=function(_0x56ae97,_0x4c5a14){var _0x44ffec={'raw':!![],'where':{'id':_0x56ae97[_0x6422('0x4b')]['id']}},_0x3ce60b={};_0x3ce60b[_0x6422('0x36')]=_[_0x6422('0x4c')](db[_0x6422('0x31')][_0x6422('0x32')]);_0x3ce60b[_0x6422('0x37')]=_['keys'](_0x56ae97[_0x6422('0x37')]);_0x3ce60b[_0x6422('0x38')]=_[_0x6422('0x39')](_0x3ce60b[_0x6422('0x36')],_0x3ce60b[_0x6422('0x37')]);_0x44ffec[_0x6422('0x3a')]=_['intersection'](_0x3ce60b['model'],qs[_0x6422('0x3b')](_0x56ae97[_0x6422('0x37')]['fields']));_0x44ffec[_0x6422('0x3a')]=_0x44ffec[_0x6422('0x3a')]['length']?_0x44ffec[_0x6422('0x3a')]:_0x3ce60b[_0x6422('0x36')];if(_0x56ae97[_0x6422('0x37')][_0x6422('0x46')]){_0x44ffec['include']=[{'all':!![]}];}_0x44ffec=_['merge']({},_0x44ffec,_0x56ae97[_0x6422('0x45')]);return db[_0x6422('0x31')][_0x6422('0x4d')](_0x44ffec)[_0x6422('0x26')](handleEntityNotFound(_0x4c5a14,null))['then'](respondWithResult(_0x4c5a14,null))[_0x6422('0x4e')](handleError(_0x4c5a14,null));};exports['create']=function(_0x12a1a8,_0x4da5e3){return db['Template']['create'](_0x12a1a8[_0x6422('0x4f')],{})[_0x6422('0x26')](function(_0x4bd4e2){var _0x4fadeb=_0x12a1a8[_0x6422('0x50')][_0x6422('0x27')]({'plain':!![]});if(!_0x4fadeb)throw new Error(_0x6422('0x51'));if(_0x4fadeb['role']===_0x6422('0x50')){var _0x78a07b=_0x4bd4e2['get']({'plain':!![]});var _0x27bd16=_0x6422('0x28');return db[_0x6422('0x52')]['find']({'where':{'name':_0x27bd16,'userProfileId':_0x4fadeb[_0x6422('0x53')]},'raw':!![]})[_0x6422('0x26')](function(_0x57a11d){if(_0x57a11d&&_0x57a11d[_0x6422('0x54')]===0x0){return db[_0x6422('0x29')][_0x6422('0x55')]({'name':_0x78a07b[_0x6422('0x2d')],'resourceId':_0x78a07b['id'],'type':_0x57a11d['name'],'sectionId':_0x57a11d['id']},{})[_0x6422('0x26')](function(){return _0x4bd4e2;});}else{return _0x4bd4e2;}})[_0x6422('0x4e')](function(_0xb6844a){logger[_0x6422('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xb6844a);throw _0xb6844a;});}return _0x4bd4e2;})[_0x6422('0x26')](respondWithResult(_0x4da5e3,0xc9))[_0x6422('0x4e')](handleError(_0x4da5e3,null));};exports['update']=function(_0x231399,_0xee5494){if(_0x231399['body']['id']){delete _0x231399[_0x6422('0x4f')]['id'];}return db[_0x6422('0x31')]['find']({'where':{'id':_0x231399['params']['id']}})['then'](handleEntityNotFound(_0xee5494,null))[_0x6422('0x26')](saveUpdates(_0x231399[_0x6422('0x4f')],null))['then'](respondWithResult(_0xee5494,null))[_0x6422('0x4e')](handleError(_0xee5494,null));};exports['destroy']=function(_0x4575b9,_0x57d6dd){return db['Template'][_0x6422('0x4d')]({'where':{'id':_0x4575b9[_0x6422('0x4b')]['id']}})[_0x6422('0x26')](handleEntityNotFound(_0x57d6dd,null))[_0x6422('0x26')](removeEntity(_0x57d6dd,null))[_0x6422('0x4e')](handleError(_0x57d6dd,null));};
\ No newline at end of file
index ea00b75..ebf8891 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dd3=['api','moment','bluebird','request-promise','path','rimraf','./template.attributes','exports','define','tools_templates','lodash','util','../../config/logger'];(function(_0xfd5f37,_0x24a79c){var _0x11bd01=function(_0x4ae9bd){while(--_0x4ae9bd){_0xfd5f37['push'](_0xfd5f37['shift']());}};_0x11bd01(++_0x24a79c);}(_0x2dd3,0x101));var _0x32dd=function(_0x11f414,_0x4a1448){_0x11f414=_0x11f414-0x0;var _0x47c71a=_0x2dd3[_0x11f414];return _0x47c71a;};'use strict';var _=require(_0x32dd('0x0'));var util=require(_0x32dd('0x1'));var logger=require(_0x32dd('0x2'))(_0x32dd('0x3'));var moment=require(_0x32dd('0x4'));var BPromise=require(_0x32dd('0x5'));var rp=require(_0x32dd('0x6'));var fs=require('fs');var path=require(_0x32dd('0x7'));var rimraf=require(_0x32dd('0x8'));var config=require('../../config/environment');var attributes=require(_0x32dd('0x9'));module[_0x32dd('0xa')]=function(_0x557976,_0x1c3a3e){return _0x557976[_0x32dd('0xb')]('Template',attributes,{'tableName':_0x32dd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x707b=['util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./template.attributes','define','tools_templates'];(function(_0x5e4796,_0x236ea5){var _0x5a43cd=function(_0x16e931){while(--_0x16e931){_0x5e4796['push'](_0x5e4796['shift']());}};_0x5a43cd(++_0x236ea5);}(_0x707b,0x1b8));var _0xb707=function(_0x4bed2d,_0x4ebe20){_0x4bed2d=_0x4bed2d-0x0;var _0xe82d9f=_0x707b[_0x4bed2d];return _0xe82d9f;};'use strict';var _=require('lodash');var util=require(_0xb707('0x0'));var logger=require(_0xb707('0x1'))(_0xb707('0x2'));var moment=require('moment');var BPromise=require(_0xb707('0x3'));var rp=require(_0xb707('0x4'));var fs=require('fs');var path=require(_0xb707('0x5'));var rimraf=require('rimraf');var config=require(_0xb707('0x6'));var attributes=require(_0xb707('0x7'));module['exports']=function(_0x61ea79,_0x3a29c6){return _0x61ea79[_0xb707('0x8')]('Template',attributes,{'tableName':_0xb707('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 15c71d9..13f2911 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cdb=['stringify','error','Template,\x20%s,\x20%s','message','info','catch','Template','findAll','raw','options','where','attributes','limit','include','map','model','GetTemplate','lodash','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s'];(function(_0x3857ab,_0x406ec2){var _0x4d3309=function(_0x168ea4){while(--_0x168ea4){_0x3857ab['push'](_0x3857ab['shift']());}};_0x4d3309(++_0x406ec2);}(_0x6cdb,0x71));var _0xb6cd=function(_0x3460c5,_0x303dc7){_0x3460c5=_0x3460c5-0x0;var _0x1652ff=_0x6cdb[_0x3460c5];return _0x1652ff;};'use strict';var _=require(_0xb6cd('0x0'));var util=require('util');var moment=require(_0xb6cd('0x1'));var BPromise=require(_0xb6cd('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb6cd('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb6cd('0x4'));var logger=require('../../config/logger')(_0xb6cd('0x5'));var config=require(_0xb6cd('0x6'));var jayson=require(_0xb6cd('0x7'));var client=jayson[_0xb6cd('0x8')][_0xb6cd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4b1624,_0x3e936c,_0x3cd4ea){return new BPromise(function(_0x13d4f2,_0xe1eb3b){return client[_0xb6cd('0xa')](_0x4b1624,_0x3cd4ea)[_0xb6cd('0xb')](function(_0x151e8b){logger['info']('Template,\x20%s,\x20%s',_0x3e936c,_0xb6cd('0xc'));logger[_0xb6cd('0xd')](_0xb6cd('0xe'),_0x3e936c,_0xb6cd('0xc'),JSON[_0xb6cd('0xf')](_0x151e8b));if(_0x151e8b[_0xb6cd('0x10')]){if(_0x151e8b[_0xb6cd('0x10')]['code']===0x1f4){logger['error'](_0xb6cd('0x11'),_0x3e936c,_0x151e8b[_0xb6cd('0x10')]['message']);return _0xe1eb3b(_0x151e8b[_0xb6cd('0x10')]['message']);}logger[_0xb6cd('0x10')](_0xb6cd('0x11'),_0x3e936c,_0x151e8b[_0xb6cd('0x10')][_0xb6cd('0x12')]);return _0x13d4f2(_0x151e8b[_0xb6cd('0x10')]['message']);}else{logger[_0xb6cd('0x13')](_0xb6cd('0x11'),_0x3e936c,_0xb6cd('0xc'));_0x13d4f2(_0x151e8b['result'][_0xb6cd('0x12')]);}})[_0xb6cd('0x14')](function(_0x12fa47){logger[_0xb6cd('0x10')]('Template,\x20%s,\x20%s',_0x3e936c,_0x12fa47);_0xe1eb3b(_0x12fa47);});});}exports['GetTemplate']=function(_0x489181){var _0x36ef01=this;return new Promise(function(_0x641306,_0x135063){return db[_0xb6cd('0x15')][_0xb6cd('0x16')]({'raw':_0x489181['options']?_0x489181['options'][_0xb6cd('0x17')]===undefined?!![]:![]:!![],'where':_0x489181[_0xb6cd('0x18')]?_0x489181[_0xb6cd('0x18')][_0xb6cd('0x19')]||null:null,'attributes':_0x489181[_0xb6cd('0x18')]?_0x489181[_0xb6cd('0x18')][_0xb6cd('0x1a')]||null:null,'limit':_0x489181[_0xb6cd('0x18')]?_0x489181[_0xb6cd('0x18')][_0xb6cd('0x1b')]||null:null,'include':_0x489181['options']?_0x489181['options'][_0xb6cd('0x1c')]?_[_0xb6cd('0x1d')](_0x489181[_0xb6cd('0x18')][_0xb6cd('0x1c')],function(_0x5b0485){return{'model':db[_0x5b0485[_0xb6cd('0x1e')]],'as':_0x5b0485['as'],'attributes':_0x5b0485['attributes'],'include':_0x5b0485[_0xb6cd('0x1c')]?_[_0xb6cd('0x1d')](_0x5b0485['include'],function(_0x584a30){return{'model':db[_0x584a30[_0xb6cd('0x1e')]],'as':_0x584a30['as'],'attributes':_0x584a30[_0xb6cd('0x1a')],'include':_0x584a30[_0xb6cd('0x1c')]?_[_0xb6cd('0x1d')](_0x584a30[_0xb6cd('0x1c')],function(_0x703e6e){return{'model':db[_0x703e6e[_0xb6cd('0x1e')]],'as':_0x703e6e['as'],'attributes':_0x703e6e[_0xb6cd('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x352e64){logger[_0xb6cd('0x13')](_0xb6cd('0x1f'),_0x489181);logger[_0xb6cd('0xd')](_0xb6cd('0x1f'),_0x489181,JSON['stringify'](_0x352e64));_0x641306(_0x352e64);})[_0xb6cd('0x14')](function(_0x2eede8){logger['error']('GetTemplate',_0x2eede8[_0xb6cd('0x12')],_0x489181);_0x135063(_0x36ef01[_0xb6cd('0x10')](0x1f4,_0x2eede8[_0xb6cd('0x12')]));});});};
\ No newline at end of file
+var _0x87d6=['request','then','info','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','error','code','Template,\x20%s,\x20%s','message','GetTemplate','Template','findAll','options','raw','include','map','model','attributes','stringify','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x1ce0ef,_0x4e44bb){var _0x548f0f=function(_0x3606dc){while(--_0x3606dc){_0x1ce0ef['push'](_0x1ce0ef['shift']());}};_0x548f0f(++_0x4e44bb);}(_0x87d6,0xce));var _0x687d=function(_0x57fa33,_0x2b8222){_0x57fa33=_0x57fa33-0x0;var _0x12e724=_0x87d6[_0x57fa33];return _0x12e724;};'use strict';var _=require('lodash');var util=require(_0x687d('0x0'));var moment=require(_0x687d('0x1'));var BPromise=require(_0x687d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x687d('0x3'));var db=require(_0x687d('0x4'))['db'];var utils=require(_0x687d('0x5'));var logger=require(_0x687d('0x6'))(_0x687d('0x7'));var config=require(_0x687d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x687d('0x9')][_0x687d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2293ed,_0x25e179,_0x473c4c){return new BPromise(function(_0x4702c0,_0x46cb02){return client[_0x687d('0xb')](_0x2293ed,_0x473c4c)[_0x687d('0xc')](function(_0x5e0fb5){logger[_0x687d('0xd')]('Template,\x20%s,\x20%s',_0x25e179,_0x687d('0xe'));logger[_0x687d('0xf')](_0x687d('0x10'),_0x25e179,_0x687d('0xe'),JSON['stringify'](_0x5e0fb5));if(_0x5e0fb5[_0x687d('0x11')]){if(_0x5e0fb5[_0x687d('0x11')][_0x687d('0x12')]===0x1f4){logger[_0x687d('0x11')](_0x687d('0x13'),_0x25e179,_0x5e0fb5[_0x687d('0x11')][_0x687d('0x14')]);return _0x46cb02(_0x5e0fb5[_0x687d('0x11')]['message']);}logger[_0x687d('0x11')](_0x687d('0x13'),_0x25e179,_0x5e0fb5[_0x687d('0x11')][_0x687d('0x14')]);return _0x4702c0(_0x5e0fb5[_0x687d('0x11')][_0x687d('0x14')]);}else{logger[_0x687d('0xd')](_0x687d('0x13'),_0x25e179,_0x687d('0xe'));_0x4702c0(_0x5e0fb5['result'][_0x687d('0x14')]);}})['catch'](function(_0x384795){logger[_0x687d('0x11')]('Template,\x20%s,\x20%s',_0x25e179,_0x384795);_0x46cb02(_0x384795);});});}exports[_0x687d('0x15')]=function(_0x44838f){var _0x4a85ea=this;return new Promise(function(_0x129cca,_0x46c846){return db[_0x687d('0x16')][_0x687d('0x17')]({'raw':_0x44838f[_0x687d('0x18')]?_0x44838f[_0x687d('0x18')][_0x687d('0x19')]===undefined?!![]:![]:!![],'where':_0x44838f[_0x687d('0x18')]?_0x44838f[_0x687d('0x18')]['where']||null:null,'attributes':_0x44838f[_0x687d('0x18')]?_0x44838f[_0x687d('0x18')]['attributes']||null:null,'limit':_0x44838f[_0x687d('0x18')]?_0x44838f[_0x687d('0x18')]['limit']||null:null,'include':_0x44838f[_0x687d('0x18')]?_0x44838f[_0x687d('0x18')][_0x687d('0x1a')]?_[_0x687d('0x1b')](_0x44838f[_0x687d('0x18')][_0x687d('0x1a')],function(_0x16984f){return{'model':db[_0x16984f[_0x687d('0x1c')]],'as':_0x16984f['as'],'attributes':_0x16984f[_0x687d('0x1d')],'include':_0x16984f[_0x687d('0x1a')]?_[_0x687d('0x1b')](_0x16984f[_0x687d('0x1a')],function(_0x1be7cd){return{'model':db[_0x1be7cd['model']],'as':_0x1be7cd['as'],'attributes':_0x1be7cd[_0x687d('0x1d')],'include':_0x1be7cd[_0x687d('0x1a')]?_[_0x687d('0x1b')](_0x1be7cd[_0x687d('0x1a')],function(_0x2b34c0){return{'model':db[_0x2b34c0[_0x687d('0x1c')]],'as':_0x2b34c0['as'],'attributes':_0x2b34c0[_0x687d('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1950ac){logger[_0x687d('0xd')](_0x687d('0x15'),_0x44838f);logger[_0x687d('0xf')](_0x687d('0x15'),_0x44838f,JSON[_0x687d('0x1e')](_0x1950ac));_0x129cca(_0x1950ac);})['catch'](function(_0x11139f){logger[_0x687d('0x11')]('GetTemplate',_0x11139f[_0x687d('0x14')],_0x44838f);_0x46c846(_0x4a85ea[_0x687d('0x11')](0x1f4,_0x11139f[_0x687d('0x14')]));});});};
\ No newline at end of file
index 45d6173..ea2ac38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9b9=['get','isAuthenticated','index','/:id/all_conditions','getAllConditions','/:id/any_conditions','/:id/actions','getActions','post','addAction','put','/:id','delete','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./trigger.controller'];(function(_0xa5ab0e,_0x533e33){var _0x194023=function(_0x5af5fc){while(--_0x5af5fc){_0xa5ab0e['push'](_0xa5ab0e['shift']());}};_0x194023(++_0x533e33);}(_0xd9b9,0x111));var _0x9d9b=function(_0x32eaf5,_0x26277a){_0x32eaf5=_0x32eaf5-0x0;var _0x558ec2=_0xd9b9[_0x32eaf5];return _0x558ec2;};'use strict';var multer=require('multer');var util=require(_0x9d9b('0x0'));var path=require(_0x9d9b('0x1'));var timeout=require(_0x9d9b('0x2'));var express=require('express');var router=express[_0x9d9b('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9d9b('0x4'));var config=require(_0x9d9b('0x5'));var controller=require(_0x9d9b('0x6'));router[_0x9d9b('0x7')]('/',auth[_0x9d9b('0x8')](),controller[_0x9d9b('0x9')]);router[_0x9d9b('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x9d9b('0x7')](_0x9d9b('0xa'),auth[_0x9d9b('0x8')](),controller[_0x9d9b('0xb')]);router[_0x9d9b('0x7')](_0x9d9b('0xc'),auth[_0x9d9b('0x8')](),controller['getAnyConditions']);router[_0x9d9b('0x7')](_0x9d9b('0xd'),auth[_0x9d9b('0x8')](),controller[_0x9d9b('0xe')]);router['post']('/',auth[_0x9d9b('0x8')](),controller['create']);router['post']('/:id/all_conditions',auth[_0x9d9b('0x8')](),controller['addAllCondition']);router[_0x9d9b('0xf')](_0x9d9b('0xc'),auth[_0x9d9b('0x8')](),controller['addAnyCondition']);router[_0x9d9b('0xf')](_0x9d9b('0xd'),auth[_0x9d9b('0x8')](),controller[_0x9d9b('0x10')]);router[_0x9d9b('0x11')](_0x9d9b('0x12'),auth[_0x9d9b('0x8')](),controller['update']);router[_0x9d9b('0x13')](_0x9d9b('0x12'),auth[_0x9d9b('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x3276=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','/:id/all_conditions','getAllConditions','getAnyConditions','/:id/actions','getActions','create','post','addAllCondition','/:id/any_conditions','addAnyCondition','addAction','put','/:id','update','delete','destroy','exports','multer','connect-timeout','express','Router'];(function(_0x15f8ad,_0x5275c3){var _0xc0238a=function(_0x5550c8){while(--_0x5550c8){_0x15f8ad['push'](_0x15f8ad['shift']());}};_0xc0238a(++_0x5275c3);}(_0x3276,0xc7));var _0x6327=function(_0x232cb8,_0x2c7a53){_0x232cb8=_0x232cb8-0x0;var _0x2fac11=_0x3276[_0x232cb8];return _0x2fac11;};'use strict';var multer=require(_0x6327('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6327('0x1'));var express=require(_0x6327('0x2'));var router=express[_0x6327('0x3')]();var fs_extra=require(_0x6327('0x4'));var auth=require(_0x6327('0x5'));var interaction=require(_0x6327('0x6'));var config=require(_0x6327('0x7'));var controller=require('./trigger.controller');router['get']('/',auth[_0x6327('0x8')](),controller[_0x6327('0x9')]);router[_0x6327('0xa')]('/:id',auth[_0x6327('0x8')](),controller[_0x6327('0xb')]);router[_0x6327('0xa')](_0x6327('0xc'),auth['isAuthenticated'](),controller[_0x6327('0xd')]);router[_0x6327('0xa')]('/:id/any_conditions',auth[_0x6327('0x8')](),controller[_0x6327('0xe')]);router['get'](_0x6327('0xf'),auth[_0x6327('0x8')](),controller[_0x6327('0x10')]);router['post']('/',auth[_0x6327('0x8')](),controller[_0x6327('0x11')]);router[_0x6327('0x12')](_0x6327('0xc'),auth[_0x6327('0x8')](),controller[_0x6327('0x13')]);router[_0x6327('0x12')](_0x6327('0x14'),auth[_0x6327('0x8')](),controller[_0x6327('0x15')]);router['post'](_0x6327('0xf'),auth['isAuthenticated'](),controller[_0x6327('0x16')]);router[_0x6327('0x17')](_0x6327('0x18'),auth['isAuthenticated'](),controller[_0x6327('0x19')]);router[_0x6327('0x1a')](_0x6327('0x18'),auth[_0x6327('0x8')](),controller[_0x6327('0x1b')]);module[_0x6327('0x1c')]=router;
\ No newline at end of file
index 5fa99e2..8300e7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6216=['exports','STRING','BOOLEAN'];(function(_0x47291e,_0x4e7b50){var _0x1b7a85=function(_0x1c2565){while(--_0x1c2565){_0x47291e['push'](_0x47291e['shift']());}};_0x1b7a85(++_0x4e7b50);}(_0x6216,0x11d));var _0x6621=function(_0x14d08c,_0x5b7091){_0x14d08c=_0x14d08c-0x0;var _0x5f5bd9=_0x6216[_0x14d08c];return _0x5f5bd9;};'use strict';var Sequelize=require('sequelize');module[_0x6621('0x0')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x6621('0x1')]},'description':{'type':Sequelize[_0x6621('0x1')]},'status':{'type':Sequelize[_0x6621('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xf168=['STRING','BOOLEAN'];(function(_0x425268,_0x27402c){var _0x58a4ad=function(_0x5c8870){while(--_0x5c8870){_0x425268['push'](_0x425268['shift']());}};_0x58a4ad(++_0x27402c);}(_0xf168,0x1ce));var _0x8f16=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xf168[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x8f16('0x0')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0x8f16('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 16ee345..a9882c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ce3=['UserProfileSection','find','userProfileId','addAllCondition','TriggerAllId','Condition','getAllConditions','findOne','getAnyConditions','addAction','TriggerId','getActions','Action','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','set','json','apply','save','update','then','get','Triggers','UserProfileResource','destroy','error','stack','name','send','map','Trigger','rawAttributes','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','count','includeAll','include','catch','params','keys','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user'];(function(_0x59db1d,_0x416dca){var _0x56d8fb=function(_0x1d88f9){while(--_0x1d88f9){_0x59db1d['push'](_0x59db1d['shift']());}};_0x56d8fb(++_0x416dca);}(_0x3ce3,0x121));var _0x33ce=function(_0x33b09c,_0x1cc2a6){_0x33b09c=_0x33b09c-0x0;var _0x508ac6=_0x3ce3[_0x33b09c];return _0x508ac6;};'use strict';var emlformat=require(_0x33ce('0x0'));var rimraf=require(_0x33ce('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x33ce('0x2'));var moment=require(_0x33ce('0x3'));var BPromise=require(_0x33ce('0x4'));var Mustache=require(_0x33ce('0x5'));var util=require(_0x33ce('0x6'));var path=require(_0x33ce('0x7'));var sox=require(_0x33ce('0x8'));var csv=require(_0x33ce('0x9'));var ejs=require(_0x33ce('0xa'));var fs=require('fs');var fs_extra=require(_0x33ce('0xb'));var _=require(_0x33ce('0xc'));var squel=require(_0x33ce('0xd'));var crypto=require(_0x33ce('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x33ce('0xf'));var toCsv=require(_0x33ce('0x9'));var querystring=require(_0x33ce('0x10'));var Papa=require(_0x33ce('0x11'));var Redis=require(_0x33ce('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x33ce('0x13'));var as=require(_0x33ce('0x14'));var hardwareService=require(_0x33ce('0x15'));var logger=require(_0x33ce('0x16'))('api');var utils=require(_0x33ce('0x17'));var config=require(_0x33ce('0x18'));var licenseUtil=require(_0x33ce('0x19'));var db=require(_0x33ce('0x1a'))['db'];function respondWithStatusCode(_0x3b2e5a,_0xbdbd32){_0xbdbd32=_0xbdbd32||0xcc;return function(_0x5956a1){if(_0x5956a1){return _0x3b2e5a[_0x33ce('0x1b')](_0xbdbd32);}return _0x3b2e5a['status'](_0xbdbd32)[_0x33ce('0x1c')]();};}function respondWithResult(_0xd285d0,_0x25af71){_0x25af71=_0x25af71||0xc8;return function(_0x3f43af){if(_0x3f43af){return _0xd285d0[_0x33ce('0x1d')](_0x25af71)['json'](_0x3f43af);}};}function respondWithFilteredResult(_0x138506,_0x45ee70){return function(_0x15cb60){if(_0x15cb60){var _0x61cba1=typeof _0x45ee70[_0x33ce('0x1e')]===_0x33ce('0x1f')&&typeof _0x45ee70[_0x33ce('0x20')]===_0x33ce('0x1f');var _0x32a1ae=_0x15cb60['count'];var _0x930bf3=_0x61cba1?0x0:_0x45ee70[_0x33ce('0x1e')];var _0x3b5f5b=_0x61cba1?_0x15cb60['count']:_0x45ee70['offset']+_0x45ee70[_0x33ce('0x20')];var _0x23b5f5;if(_0x3b5f5b>=_0x32a1ae){_0x3b5f5b=_0x32a1ae;_0x23b5f5=0xc8;}else{_0x23b5f5=0xce;}_0x138506['status'](_0x23b5f5);return _0x138506[_0x33ce('0x21')]('Content-Range',_0x930bf3+'-'+_0x3b5f5b+'/'+_0x32a1ae)[_0x33ce('0x22')](_0x15cb60);}return null;};}function patchUpdates(_0x612edf){return function(_0x43781a){try{jsonpatch[_0x33ce('0x23')](_0x43781a,_0x612edf,!![]);}catch(_0x2e3260){return BPromise['reject'](_0x2e3260);}return _0x43781a[_0x33ce('0x24')]();};}function saveUpdates(_0x58d9c6,_0x5a8f9e){return function(_0x2c6890){if(_0x2c6890){return _0x2c6890[_0x33ce('0x25')](_0x58d9c6)[_0x33ce('0x26')](function(_0x2e2867){return _0x2e2867;});}return null;};}function removeEntity(_0x39f728,_0x35a249){return function(_0x24d819){if(_0x24d819){return _0x24d819['destroy']()[_0x33ce('0x26')](function(){var _0x2084e3=_0x24d819[_0x33ce('0x27')]({'plain':!![]});var _0x11821f=_0x33ce('0x28');return db[_0x33ce('0x29')][_0x33ce('0x2a')]({'where':{'type':_0x11821f,'resourceId':_0x2084e3['id']}})[_0x33ce('0x26')](function(){return _0x24d819;});})['then'](function(){_0x39f728[_0x33ce('0x1d')](0xcc)[_0x33ce('0x1c')]();});}};}function handleEntityNotFound(_0x390abe,_0x1505c1){return function(_0x56a50b){if(!_0x56a50b){_0x390abe[_0x33ce('0x1b')](0x194);}return _0x56a50b;};}function handleError(_0x136af5,_0x17e8e1){_0x17e8e1=_0x17e8e1||0x1f4;return function(_0x8abb64){logger[_0x33ce('0x2b')](_0x8abb64[_0x33ce('0x2c')]);if(_0x8abb64[_0x33ce('0x2d')]){delete _0x8abb64[_0x33ce('0x2d')];}_0x136af5[_0x33ce('0x1d')](_0x17e8e1)[_0x33ce('0x2e')](_0x8abb64);};}exports['index']=function(_0x42fd27,_0x5781d7){var _0x5148ad={},_0x2f3f64={},_0x47daaa={'count':0x0,'rows':[]};var _0x2cfd78=_[_0x33ce('0x2f')](db[_0x33ce('0x30')][_0x33ce('0x31')],function(_0x599e8d){return{'name':_0x599e8d['fieldName'],'type':_0x599e8d[_0x33ce('0x32')][_0x33ce('0x33')]};});_0x2f3f64[_0x33ce('0x34')]=_[_0x33ce('0x2f')](_0x2cfd78,_0x33ce('0x2d'));_0x2f3f64['query']=_['keys'](_0x42fd27[_0x33ce('0x35')]);_0x2f3f64['filters']=_[_0x33ce('0x36')](_0x2f3f64[_0x33ce('0x34')],_0x2f3f64[_0x33ce('0x35')]);_0x5148ad['attributes']=_[_0x33ce('0x36')](_0x2f3f64['model'],qs[_0x33ce('0x37')](_0x42fd27[_0x33ce('0x35')]['fields']));_0x5148ad[_0x33ce('0x38')]=_0x5148ad['attributes'][_0x33ce('0x39')]?_0x5148ad['attributes']:_0x2f3f64[_0x33ce('0x34')];if(!_0x42fd27[_0x33ce('0x35')][_0x33ce('0x3a')](_0x33ce('0x3b'))){_0x5148ad[_0x33ce('0x20')]=qs[_0x33ce('0x20')](_0x42fd27['query']['limit']);_0x5148ad[_0x33ce('0x1e')]=qs['offset'](_0x42fd27['query'][_0x33ce('0x1e')]);}_0x5148ad[_0x33ce('0x3c')]=qs[_0x33ce('0x3d')](_0x42fd27[_0x33ce('0x35')][_0x33ce('0x3d')]);_0x5148ad[_0x33ce('0x3e')]=qs['filters'](_[_0x33ce('0x3f')](_0x42fd27[_0x33ce('0x35')],_0x2f3f64[_0x33ce('0x40')]),_0x2cfd78);if(_0x42fd27[_0x33ce('0x35')][_0x33ce('0x41')]){_0x5148ad[_0x33ce('0x3e')]=_[_0x33ce('0x42')](_0x5148ad[_0x33ce('0x3e')],{'$or':_[_0x33ce('0x2f')](_0x2cfd78,function(_0x1af1dc){if(_0x1af1dc[_0x33ce('0x32')]!==_0x33ce('0x43')){var _0x27891b={};_0x27891b[_0x1af1dc[_0x33ce('0x2d')]]={'$like':'%'+_0x42fd27[_0x33ce('0x35')][_0x33ce('0x41')]+'%'};return _0x27891b;}})});}_0x5148ad=_[_0x33ce('0x42')]({},_0x5148ad,_0x42fd27[_0x33ce('0x44')]);var _0x4cbcd4={'where':_0x5148ad[_0x33ce('0x3e')]};return db[_0x33ce('0x30')]['count'](_0x4cbcd4)[_0x33ce('0x26')](function(_0x4493b3){_0x47daaa[_0x33ce('0x45')]=_0x4493b3;if(_0x42fd27[_0x33ce('0x35')][_0x33ce('0x46')]){_0x5148ad[_0x33ce('0x47')]=[{'all':!![]}];}return db['Trigger']['findAll'](_0x5148ad);})[_0x33ce('0x26')](function(_0x269d35){_0x47daaa['rows']=_0x269d35;return _0x47daaa;})[_0x33ce('0x26')](respondWithFilteredResult(_0x5781d7,_0x5148ad))[_0x33ce('0x48')](handleError(_0x5781d7,null));};exports['show']=function(_0x41dc84,_0x2a2b6d){var _0x56fbbf={'raw':![],'where':{'id':_0x41dc84[_0x33ce('0x49')]['id']}},_0x5b50a8={};_0x5b50a8[_0x33ce('0x34')]=_[_0x33ce('0x4a')](db['Trigger'][_0x33ce('0x31')]);_0x5b50a8['query']=_[_0x33ce('0x4a')](_0x41dc84[_0x33ce('0x35')]);_0x5b50a8['filters']=_[_0x33ce('0x36')](_0x5b50a8['model'],_0x5b50a8[_0x33ce('0x35')]);_0x56fbbf[_0x33ce('0x38')]=_[_0x33ce('0x36')](_0x5b50a8['model'],qs['fields'](_0x41dc84[_0x33ce('0x35')][_0x33ce('0x37')]));_0x56fbbf['attributes']=_0x56fbbf[_0x33ce('0x38')][_0x33ce('0x39')]?_0x56fbbf[_0x33ce('0x38')]:_0x5b50a8[_0x33ce('0x34')];if(_0x41dc84[_0x33ce('0x35')][_0x33ce('0x46')]){_0x56fbbf[_0x33ce('0x47')]=[{'all':!![]}];}_0x56fbbf=_[_0x33ce('0x42')]({},_0x56fbbf,_0x41dc84[_0x33ce('0x44')]);return db[_0x33ce('0x30')]['find'](_0x56fbbf)[_0x33ce('0x26')](handleEntityNotFound(_0x2a2b6d,null))[_0x33ce('0x26')](respondWithResult(_0x2a2b6d,null))[_0x33ce('0x48')](handleError(_0x2a2b6d,null));};exports[_0x33ce('0x4b')]=function(_0xc5eca6,_0xb4321){return db[_0x33ce('0x30')]['create'](_0xc5eca6[_0x33ce('0x4c')],{})[_0x33ce('0x26')](function(_0x30b541){var _0x1ce5ba=_0xc5eca6['user'][_0x33ce('0x27')]({'plain':!![]});if(!_0x1ce5ba)throw new Error(_0x33ce('0x4d'));if(_0x1ce5ba['role']===_0x33ce('0x4e')){var _0x5be98b=_0x30b541[_0x33ce('0x27')]({'plain':!![]});var _0x5c74bb='Triggers';return db[_0x33ce('0x4f')][_0x33ce('0x50')]({'where':{'name':_0x5c74bb,'userProfileId':_0x1ce5ba[_0x33ce('0x51')]},'raw':!![]})[_0x33ce('0x26')](function(_0x2892f7){if(_0x2892f7&&_0x2892f7['autoAssociation']===0x0){return db[_0x33ce('0x29')][_0x33ce('0x4b')]({'name':_0x5be98b[_0x33ce('0x2d')],'resourceId':_0x5be98b['id'],'type':_0x2892f7[_0x33ce('0x2d')],'sectionId':_0x2892f7['id']},{})[_0x33ce('0x26')](function(){return _0x30b541;});}else{return _0x30b541;}})['catch'](function(_0xfd3fdd){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xfd3fdd);throw _0xfd3fdd;});}return _0x30b541;})[_0x33ce('0x26')](respondWithResult(_0xb4321,0xc9))['catch'](handleError(_0xb4321,null));};exports[_0x33ce('0x25')]=function(_0x1b6560,_0x207b2f){if(_0x1b6560['body']['id']){delete _0x1b6560[_0x33ce('0x4c')]['id'];}return db['Trigger'][_0x33ce('0x50')]({'where':{'id':_0x1b6560['params']['id']}})[_0x33ce('0x26')](handleEntityNotFound(_0x207b2f,null))[_0x33ce('0x26')](saveUpdates(_0x1b6560['body'],null))[_0x33ce('0x26')](respondWithResult(_0x207b2f,null))[_0x33ce('0x48')](handleError(_0x207b2f,null));};exports[_0x33ce('0x2a')]=function(_0x43f737,_0x43a05b){return db[_0x33ce('0x30')][_0x33ce('0x50')]({'where':{'id':_0x43f737['params']['id']}})[_0x33ce('0x26')](handleEntityNotFound(_0x43a05b,null))[_0x33ce('0x26')](removeEntity(_0x43a05b,null))[_0x33ce('0x48')](handleError(_0x43a05b,null));};exports[_0x33ce('0x52')]=function(_0x50955a,_0x5e4207,_0x54568c){if(_0x50955a[_0x33ce('0x4c')]['id']){delete _0x50955a['body']['id'];}return db[_0x33ce('0x30')][_0x33ce('0x50')]({'where':{'id':_0x50955a[_0x33ce('0x49')]['id']}})[_0x33ce('0x26')](handleEntityNotFound(_0x5e4207,null))[_0x33ce('0x26')](function(_0x22747f){if(_0x22747f){_0x50955a[_0x33ce('0x4c')][_0x33ce('0x53')]=_0x22747f['id'];return db[_0x33ce('0x54')][_0x33ce('0x4b')](_0x50955a[_0x33ce('0x4c')]);}})[_0x33ce('0x26')](respondWithResult(_0x5e4207,null))[_0x33ce('0x48')](handleError(_0x5e4207,null));};exports['addAnyCondition']=function(_0x2420cb,_0x5c9959,_0x4b0275){if(_0x2420cb['body']['id']){delete _0x2420cb['body']['id'];}return db['Trigger'][_0x33ce('0x50')]({'where':{'id':_0x2420cb[_0x33ce('0x49')]['id']}})['then'](handleEntityNotFound(_0x5c9959,null))[_0x33ce('0x26')](function(_0x21e455){if(_0x21e455){_0x2420cb[_0x33ce('0x4c')]['TriggerAnyId']=_0x21e455['id'];return db[_0x33ce('0x54')]['create'](_0x2420cb[_0x33ce('0x4c')]);}})['then'](respondWithResult(_0x5c9959,null))[_0x33ce('0x48')](handleError(_0x5c9959,null));};exports[_0x33ce('0x55')]=function(_0x343fa7,_0x4d8a2a,_0x2c2013){var _0x55b5bd={};var _0x46b0c7={};var _0x1b2c6f;var _0x2010c3;return db[_0x33ce('0x30')][_0x33ce('0x56')]({'where':{'id':_0x343fa7[_0x33ce('0x49')]['id']}})[_0x33ce('0x26')](handleEntityNotFound(_0x4d8a2a,null))[_0x33ce('0x26')](function(_0x236e7b){if(_0x236e7b){_0x1b2c6f=_0x236e7b;_0x46b0c7[_0x33ce('0x34')]=_[_0x33ce('0x4a')](db[_0x33ce('0x54')][_0x33ce('0x31')]);_0x46b0c7[_0x33ce('0x35')]=_[_0x33ce('0x4a')](_0x343fa7[_0x33ce('0x35')]);_0x46b0c7[_0x33ce('0x40')]=_['intersection'](_0x46b0c7['model'],_0x46b0c7[_0x33ce('0x35')]);_0x55b5bd[_0x33ce('0x38')]=_[_0x33ce('0x36')](_0x46b0c7['model'],qs[_0x33ce('0x37')](_0x343fa7[_0x33ce('0x35')][_0x33ce('0x37')]));_0x55b5bd[_0x33ce('0x38')]=_0x55b5bd['attributes'][_0x33ce('0x39')]?_0x55b5bd[_0x33ce('0x38')]:_0x46b0c7[_0x33ce('0x34')];_0x55b5bd[_0x33ce('0x3c')]=qs[_0x33ce('0x3d')](_0x343fa7[_0x33ce('0x35')][_0x33ce('0x3d')]);_0x55b5bd[_0x33ce('0x3e')]=qs[_0x33ce('0x40')](_['pick'](_0x343fa7[_0x33ce('0x35')],_0x46b0c7[_0x33ce('0x40')]));if(_0x343fa7[_0x33ce('0x35')][_0x33ce('0x41')]){_0x55b5bd['where']=_[_0x33ce('0x42')](_0x55b5bd[_0x33ce('0x3e')],{'$or':_[_0x33ce('0x2f')](_0x55b5bd['attributes'],function(_0x26ed29){var _0x27f224={};_0x27f224[_0x26ed29]={'$like':'%'+_0x343fa7['query'][_0x33ce('0x41')]+'%'};return _0x27f224;})});}_0x55b5bd=_[_0x33ce('0x42')]({},_0x55b5bd,_0x343fa7['options']);return _0x1b2c6f[_0x33ce('0x55')](_0x55b5bd);}})['then'](function(_0x69039a){if(_0x69039a){_0x2010c3=_0x69039a['length'];if(!_0x343fa7[_0x33ce('0x35')][_0x33ce('0x3a')](_0x33ce('0x3b'))){_0x55b5bd[_0x33ce('0x20')]=qs[_0x33ce('0x20')](_0x343fa7[_0x33ce('0x35')][_0x33ce('0x20')]);_0x55b5bd[_0x33ce('0x1e')]=qs[_0x33ce('0x1e')](_0x343fa7[_0x33ce('0x35')][_0x33ce('0x1e')]);}return _0x1b2c6f[_0x33ce('0x55')](_0x55b5bd);}})[_0x33ce('0x26')](function(_0x354575){if(_0x354575){return _0x354575?{'count':_0x2010c3,'rows':_0x354575}:null;}})[_0x33ce('0x26')](respondWithResult(_0x4d8a2a,null))[_0x33ce('0x48')](handleError(_0x4d8a2a,null));};exports[_0x33ce('0x57')]=function(_0x15a033,_0x4ae2d7,_0x335121){var _0x57af75={};var _0x156114={};var _0xf313ed;var _0x123aad;return db['Trigger'][_0x33ce('0x56')]({'where':{'id':_0x15a033[_0x33ce('0x49')]['id']}})['then'](handleEntityNotFound(_0x4ae2d7,null))[_0x33ce('0x26')](function(_0x4ee5d3){if(_0x4ee5d3){_0xf313ed=_0x4ee5d3;_0x156114['model']=_['keys'](db['Condition'][_0x33ce('0x31')]);_0x156114[_0x33ce('0x35')]=_[_0x33ce('0x4a')](_0x15a033['query']);_0x156114[_0x33ce('0x40')]=_[_0x33ce('0x36')](_0x156114['model'],_0x156114[_0x33ce('0x35')]);_0x57af75['attributes']=_[_0x33ce('0x36')](_0x156114[_0x33ce('0x34')],qs[_0x33ce('0x37')](_0x15a033[_0x33ce('0x35')][_0x33ce('0x37')]));_0x57af75['attributes']=_0x57af75[_0x33ce('0x38')][_0x33ce('0x39')]?_0x57af75[_0x33ce('0x38')]:_0x156114[_0x33ce('0x34')];_0x57af75[_0x33ce('0x3c')]=qs[_0x33ce('0x3d')](_0x15a033['query']['sort']);_0x57af75['where']=qs[_0x33ce('0x40')](_['pick'](_0x15a033['query'],_0x156114[_0x33ce('0x40')]));if(_0x15a033['query'][_0x33ce('0x41')]){_0x57af75[_0x33ce('0x3e')]=_['merge'](_0x57af75[_0x33ce('0x3e')],{'$or':_[_0x33ce('0x2f')](_0x57af75[_0x33ce('0x38')],function(_0x1200c9){var _0x287958={};_0x287958[_0x1200c9]={'$like':'%'+_0x15a033[_0x33ce('0x35')]['filter']+'%'};return _0x287958;})});}_0x57af75=_[_0x33ce('0x42')]({},_0x57af75,_0x15a033[_0x33ce('0x44')]);return _0xf313ed['getAnyConditions'](_0x57af75);}})[_0x33ce('0x26')](function(_0x54068e){if(_0x54068e){_0x123aad=_0x54068e[_0x33ce('0x39')];if(!_0x15a033[_0x33ce('0x35')][_0x33ce('0x3a')]('nolimit')){_0x57af75[_0x33ce('0x20')]=qs[_0x33ce('0x20')](_0x15a033[_0x33ce('0x35')][_0x33ce('0x20')]);_0x57af75[_0x33ce('0x1e')]=qs['offset'](_0x15a033[_0x33ce('0x35')][_0x33ce('0x1e')]);}return _0xf313ed['getAnyConditions'](_0x57af75);}})['then'](function(_0x1c5159){if(_0x1c5159){return _0x1c5159?{'count':_0x123aad,'rows':_0x1c5159}:null;}})[_0x33ce('0x26')](respondWithResult(_0x4ae2d7,null))[_0x33ce('0x48')](handleError(_0x4ae2d7,null));};exports[_0x33ce('0x58')]=function(_0x1c8d9b,_0x55bbda,_0x61906f){if(_0x1c8d9b['body']['id']){delete _0x1c8d9b[_0x33ce('0x4c')]['id'];}return db[_0x33ce('0x30')][_0x33ce('0x50')]({'where':{'id':_0x1c8d9b[_0x33ce('0x49')]['id']}})['then'](handleEntityNotFound(_0x55bbda,null))[_0x33ce('0x26')](function(_0x29bef0){if(_0x29bef0){_0x1c8d9b[_0x33ce('0x4c')][_0x33ce('0x59')]=_0x29bef0['id'];return db['Action'][_0x33ce('0x4b')](_0x1c8d9b['body']);}})[_0x33ce('0x26')](respondWithResult(_0x55bbda,null))[_0x33ce('0x48')](handleError(_0x55bbda,null));};exports[_0x33ce('0x5a')]=function(_0x579af4,_0x13b037,_0x36ea16){var _0x5225fe={};var _0x3e6fd8={};var _0x11a586;var _0x5146df;return db[_0x33ce('0x30')][_0x33ce('0x56')]({'where':{'id':_0x579af4[_0x33ce('0x49')]['id']}})[_0x33ce('0x26')](handleEntityNotFound(_0x13b037,null))[_0x33ce('0x26')](function(_0x42eb88){if(_0x42eb88){_0x11a586=_0x42eb88;_0x3e6fd8[_0x33ce('0x34')]=_[_0x33ce('0x4a')](db[_0x33ce('0x5b')][_0x33ce('0x31')]);_0x3e6fd8[_0x33ce('0x35')]=_[_0x33ce('0x4a')](_0x579af4[_0x33ce('0x35')]);_0x3e6fd8[_0x33ce('0x40')]=_[_0x33ce('0x36')](_0x3e6fd8[_0x33ce('0x34')],_0x3e6fd8[_0x33ce('0x35')]);_0x5225fe[_0x33ce('0x38')]=_[_0x33ce('0x36')](_0x3e6fd8[_0x33ce('0x34')],qs[_0x33ce('0x37')](_0x579af4['query'][_0x33ce('0x37')]));_0x5225fe[_0x33ce('0x38')]=_0x5225fe[_0x33ce('0x38')]['length']?_0x5225fe[_0x33ce('0x38')]:_0x3e6fd8[_0x33ce('0x34')];_0x5225fe[_0x33ce('0x3c')]=qs['sort'](_0x579af4[_0x33ce('0x35')][_0x33ce('0x3d')]);_0x5225fe[_0x33ce('0x3e')]=qs['filters'](_[_0x33ce('0x3f')](_0x579af4[_0x33ce('0x35')],_0x3e6fd8['filters']));if(_0x579af4['query'][_0x33ce('0x41')]){_0x5225fe['where']=_[_0x33ce('0x42')](_0x5225fe[_0x33ce('0x3e')],{'$or':_[_0x33ce('0x2f')](_0x5225fe['attributes'],function(_0x5bfe24){var _0x5e24f7={};_0x5e24f7[_0x5bfe24]={'$like':'%'+_0x579af4[_0x33ce('0x35')][_0x33ce('0x41')]+'%'};return _0x5e24f7;})});}_0x5225fe=_['merge']({},_0x5225fe,_0x579af4[_0x33ce('0x44')]);return _0x11a586[_0x33ce('0x5a')](_0x5225fe);}})[_0x33ce('0x26')](function(_0x1a42e0){if(_0x1a42e0){_0x5146df=_0x1a42e0[_0x33ce('0x39')];if(!_0x579af4[_0x33ce('0x35')][_0x33ce('0x3a')](_0x33ce('0x3b'))){_0x5225fe['limit']=qs['limit'](_0x579af4[_0x33ce('0x35')][_0x33ce('0x20')]);_0x5225fe[_0x33ce('0x1e')]=qs[_0x33ce('0x1e')](_0x579af4[_0x33ce('0x35')]['offset']);}return _0x11a586[_0x33ce('0x5a')](_0x5225fe);}})[_0x33ce('0x26')](function(_0x45f5a4){if(_0x45f5a4){return _0x45f5a4?{'count':_0x5146df,'rows':_0x45f5a4}:null;}})[_0x33ce('0x26')](respondWithResult(_0x13b037,null))[_0x33ce('0x48')](handleError(_0x13b037,null));};
\ No newline at end of file
+var _0x33a0=['hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','length','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','params','addAllCondition','TriggerAllId','addAnyCondition','TriggerAnyId','findOne','Condition','options','getAllConditions','nolimit','getAnyConditions','addAction','TriggerId','getActions','Action','map','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','update','then','destroy','Triggers','UserProfileResource','error','stack','name','send','Trigger','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields'];(function(_0x40359a,_0xcb63b){var _0x5efc0c=function(_0x3517df){while(--_0x3517df){_0x40359a['push'](_0x40359a['shift']());}};_0x5efc0c(++_0xcb63b);}(_0x33a0,0x1f3));var _0x033a=function(_0x53e2a2,_0x38f753){_0x53e2a2=_0x53e2a2-0x0;var _0x4dcf45=_0x33a0[_0x53e2a2];return _0x4dcf45;};'use strict';var emlformat=require(_0x033a('0x0'));var rimraf=require(_0x033a('0x1'));var zipdir=require(_0x033a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x033a('0x3'));var moment=require('moment');var BPromise=require(_0x033a('0x4'));var Mustache=require(_0x033a('0x5'));var util=require(_0x033a('0x6'));var path=require(_0x033a('0x7'));var sox=require(_0x033a('0x8'));var csv=require(_0x033a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x033a('0xa'));var squel=require(_0x033a('0xb'));var crypto=require(_0x033a('0xc'));var jsforce=require(_0x033a('0xd'));var deskjs=require(_0x033a('0xe'));var toCsv=require(_0x033a('0x9'));var querystring=require(_0x033a('0xf'));var Papa=require('papaparse');var Redis=require(_0x033a('0x10'));var authService=require(_0x033a('0x11'));var qs=require(_0x033a('0x12'));var as=require(_0x033a('0x13'));var hardwareService=require(_0x033a('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x033a('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5b3e10,_0x431efc){_0x431efc=_0x431efc||0xcc;return function(_0x440d19){if(_0x440d19){return _0x5b3e10['sendStatus'](_0x431efc);}return _0x5b3e10['status'](_0x431efc)['end']();};}function respondWithResult(_0x12cf05,_0x2ee072){_0x2ee072=_0x2ee072||0xc8;return function(_0x40aec7){if(_0x40aec7){return _0x12cf05['status'](_0x2ee072)[_0x033a('0x16')](_0x40aec7);}};}function respondWithFilteredResult(_0x2b5807,_0x5885cb){return function(_0x2284da){if(_0x2284da){var _0x8d4f54=typeof _0x5885cb['offset']===_0x033a('0x17')&&typeof _0x5885cb[_0x033a('0x18')]==='undefined';var _0x41c039=_0x2284da[_0x033a('0x19')];var _0xf0c22c=_0x8d4f54?0x0:_0x5885cb['offset'];var _0x2ca7f3=_0x8d4f54?_0x2284da[_0x033a('0x19')]:_0x5885cb[_0x033a('0x1a')]+_0x5885cb['limit'];var _0x1de71e;if(_0x2ca7f3>=_0x41c039){_0x2ca7f3=_0x41c039;_0x1de71e=0xc8;}else{_0x1de71e=0xce;}_0x2b5807[_0x033a('0x1b')](_0x1de71e);return _0x2b5807[_0x033a('0x1c')](_0x033a('0x1d'),_0xf0c22c+'-'+_0x2ca7f3+'/'+_0x41c039)['json'](_0x2284da);}return null;};}function patchUpdates(_0x23c66e){return function(_0x18e575){try{jsonpatch[_0x033a('0x1e')](_0x18e575,_0x23c66e,!![]);}catch(_0x2f4302){return BPromise[_0x033a('0x1f')](_0x2f4302);}return _0x18e575['save']();};}function saveUpdates(_0x3469e9,_0x2c1f5b){return function(_0x1f464c){if(_0x1f464c){return _0x1f464c[_0x033a('0x20')](_0x3469e9)[_0x033a('0x21')](function(_0x11030e){return _0x11030e;});}return null;};}function removeEntity(_0x48ea9d,_0x47e975){return function(_0x151519){if(_0x151519){return _0x151519[_0x033a('0x22')]()[_0x033a('0x21')](function(){var _0x51f846=_0x151519['get']({'plain':!![]});var _0x41ea55=_0x033a('0x23');return db[_0x033a('0x24')]['destroy']({'where':{'type':_0x41ea55,'resourceId':_0x51f846['id']}})[_0x033a('0x21')](function(){return _0x151519;});})['then'](function(){_0x48ea9d[_0x033a('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4dec0c,_0x2f0f9a){return function(_0x5aed15){if(!_0x5aed15){_0x4dec0c['sendStatus'](0x194);}return _0x5aed15;};}function handleError(_0x50cce1,_0x3f1c8a){_0x3f1c8a=_0x3f1c8a||0x1f4;return function(_0x3a080c){logger[_0x033a('0x25')](_0x3a080c[_0x033a('0x26')]);if(_0x3a080c[_0x033a('0x27')]){delete _0x3a080c[_0x033a('0x27')];}_0x50cce1[_0x033a('0x1b')](_0x3f1c8a)[_0x033a('0x28')](_0x3a080c);};}exports['index']=function(_0x5ae793,_0x4cbd6b){var _0x2febf3={},_0x5f3b45={},_0x45a0e9={'count':0x0,'rows':[]};var _0x3fd21a=_['map'](db[_0x033a('0x29')][_0x033a('0x2a')],function(_0x2770d9){return{'name':_0x2770d9[_0x033a('0x2b')],'type':_0x2770d9[_0x033a('0x2c')][_0x033a('0x2d')]};});_0x5f3b45[_0x033a('0x2e')]=_['map'](_0x3fd21a,'name');_0x5f3b45[_0x033a('0x2f')]=_[_0x033a('0x30')](_0x5ae793[_0x033a('0x2f')]);_0x5f3b45[_0x033a('0x31')]=_[_0x033a('0x32')](_0x5f3b45[_0x033a('0x2e')],_0x5f3b45[_0x033a('0x2f')]);_0x2febf3[_0x033a('0x33')]=_[_0x033a('0x32')](_0x5f3b45[_0x033a('0x2e')],qs[_0x033a('0x34')](_0x5ae793[_0x033a('0x2f')][_0x033a('0x34')]));_0x2febf3[_0x033a('0x33')]=_0x2febf3[_0x033a('0x33')]['length']?_0x2febf3[_0x033a('0x33')]:_0x5f3b45[_0x033a('0x2e')];if(!_0x5ae793['query'][_0x033a('0x35')]('nolimit')){_0x2febf3[_0x033a('0x18')]=qs[_0x033a('0x18')](_0x5ae793[_0x033a('0x2f')]['limit']);_0x2febf3[_0x033a('0x1a')]=qs['offset'](_0x5ae793[_0x033a('0x2f')][_0x033a('0x1a')]);}_0x2febf3[_0x033a('0x36')]=qs[_0x033a('0x37')](_0x5ae793[_0x033a('0x2f')][_0x033a('0x37')]);_0x2febf3[_0x033a('0x38')]=qs[_0x033a('0x31')](_[_0x033a('0x39')](_0x5ae793[_0x033a('0x2f')],_0x5f3b45[_0x033a('0x31')]),_0x3fd21a);if(_0x5ae793[_0x033a('0x2f')][_0x033a('0x3a')]){_0x2febf3[_0x033a('0x38')]=_[_0x033a('0x3b')](_0x2febf3[_0x033a('0x38')],{'$or':_['map'](_0x3fd21a,function(_0x2527b7){if(_0x2527b7[_0x033a('0x2c')]!==_0x033a('0x3c')){var _0x221578={};_0x221578[_0x2527b7[_0x033a('0x27')]]={'$like':'%'+_0x5ae793[_0x033a('0x2f')][_0x033a('0x3a')]+'%'};return _0x221578;}})});}_0x2febf3=_[_0x033a('0x3b')]({},_0x2febf3,_0x5ae793['options']);var _0x371447={'where':_0x2febf3[_0x033a('0x38')]};return db['Trigger'][_0x033a('0x19')](_0x371447)['then'](function(_0x1999e5){_0x45a0e9[_0x033a('0x19')]=_0x1999e5;if(_0x5ae793[_0x033a('0x2f')][_0x033a('0x3d')]){_0x2febf3[_0x033a('0x3e')]=[{'all':!![]}];}return db[_0x033a('0x29')][_0x033a('0x3f')](_0x2febf3);})[_0x033a('0x21')](function(_0x576b4e){_0x45a0e9[_0x033a('0x40')]=_0x576b4e;return _0x45a0e9;})[_0x033a('0x21')](respondWithFilteredResult(_0x4cbd6b,_0x2febf3))['catch'](handleError(_0x4cbd6b,null));};exports[_0x033a('0x41')]=function(_0x5bd656,_0xd4f2c5){var _0x26b8d0={'raw':![],'where':{'id':_0x5bd656['params']['id']}},_0x5595c5={};_0x5595c5[_0x033a('0x2e')]=_[_0x033a('0x30')](db[_0x033a('0x29')][_0x033a('0x2a')]);_0x5595c5[_0x033a('0x2f')]=_[_0x033a('0x30')](_0x5bd656['query']);_0x5595c5[_0x033a('0x31')]=_['intersection'](_0x5595c5[_0x033a('0x2e')],_0x5595c5[_0x033a('0x2f')]);_0x26b8d0[_0x033a('0x33')]=_[_0x033a('0x32')](_0x5595c5[_0x033a('0x2e')],qs[_0x033a('0x34')](_0x5bd656['query'][_0x033a('0x34')]));_0x26b8d0[_0x033a('0x33')]=_0x26b8d0[_0x033a('0x33')][_0x033a('0x42')]?_0x26b8d0[_0x033a('0x33')]:_0x5595c5[_0x033a('0x2e')];if(_0x5bd656[_0x033a('0x2f')][_0x033a('0x3d')]){_0x26b8d0[_0x033a('0x3e')]=[{'all':!![]}];}_0x26b8d0=_[_0x033a('0x3b')]({},_0x26b8d0,_0x5bd656['options']);return db[_0x033a('0x29')][_0x033a('0x43')](_0x26b8d0)[_0x033a('0x21')](handleEntityNotFound(_0xd4f2c5,null))['then'](respondWithResult(_0xd4f2c5,null))[_0x033a('0x44')](handleError(_0xd4f2c5,null));};exports[_0x033a('0x45')]=function(_0x30fd9,_0xeba54d){return db[_0x033a('0x29')][_0x033a('0x45')](_0x30fd9[_0x033a('0x46')],{})['then'](function(_0x5521dc){var _0x241c8f=_0x30fd9[_0x033a('0x47')][_0x033a('0x48')]({'plain':!![]});if(!_0x241c8f)throw new Error(_0x033a('0x49'));if(_0x241c8f['role']===_0x033a('0x47')){var _0x3b0c59=_0x5521dc[_0x033a('0x48')]({'plain':!![]});var _0x5951bc=_0x033a('0x23');return db[_0x033a('0x4a')][_0x033a('0x43')]({'where':{'name':_0x5951bc,'userProfileId':_0x241c8f[_0x033a('0x4b')]},'raw':!![]})[_0x033a('0x21')](function(_0x117e75){if(_0x117e75&&_0x117e75['autoAssociation']===0x0){return db[_0x033a('0x24')][_0x033a('0x45')]({'name':_0x3b0c59['name'],'resourceId':_0x3b0c59['id'],'type':_0x117e75[_0x033a('0x27')],'sectionId':_0x117e75['id']},{})[_0x033a('0x21')](function(){return _0x5521dc;});}else{return _0x5521dc;}})[_0x033a('0x44')](function(_0x15f140){logger[_0x033a('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x15f140);throw _0x15f140;});}return _0x5521dc;})['then'](respondWithResult(_0xeba54d,0xc9))['catch'](handleError(_0xeba54d,null));};exports[_0x033a('0x20')]=function(_0x54f4ff,_0x3d9fb2){if(_0x54f4ff['body']['id']){delete _0x54f4ff[_0x033a('0x46')]['id'];}return db[_0x033a('0x29')][_0x033a('0x43')]({'where':{'id':_0x54f4ff[_0x033a('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3d9fb2,null))['then'](saveUpdates(_0x54f4ff[_0x033a('0x46')],null))[_0x033a('0x21')](respondWithResult(_0x3d9fb2,null))[_0x033a('0x44')](handleError(_0x3d9fb2,null));};exports[_0x033a('0x22')]=function(_0x795cd0,_0x3ae601){return db[_0x033a('0x29')][_0x033a('0x43')]({'where':{'id':_0x795cd0[_0x033a('0x4c')]['id']}})[_0x033a('0x21')](handleEntityNotFound(_0x3ae601,null))[_0x033a('0x21')](removeEntity(_0x3ae601,null))[_0x033a('0x44')](handleError(_0x3ae601,null));};exports[_0x033a('0x4d')]=function(_0x1c82db,_0x189efa,_0x57058a){if(_0x1c82db[_0x033a('0x46')]['id']){delete _0x1c82db[_0x033a('0x46')]['id'];}return db[_0x033a('0x29')][_0x033a('0x43')]({'where':{'id':_0x1c82db['params']['id']}})[_0x033a('0x21')](handleEntityNotFound(_0x189efa,null))[_0x033a('0x21')](function(_0x36710c){if(_0x36710c){_0x1c82db['body'][_0x033a('0x4e')]=_0x36710c['id'];return db['Condition'][_0x033a('0x45')](_0x1c82db[_0x033a('0x46')]);}})['then'](respondWithResult(_0x189efa,null))['catch'](handleError(_0x189efa,null));};exports[_0x033a('0x4f')]=function(_0x3eb1f0,_0x19ff97,_0x323212){if(_0x3eb1f0[_0x033a('0x46')]['id']){delete _0x3eb1f0['body']['id'];}return db[_0x033a('0x29')]['find']({'where':{'id':_0x3eb1f0[_0x033a('0x4c')]['id']}})[_0x033a('0x21')](handleEntityNotFound(_0x19ff97,null))[_0x033a('0x21')](function(_0x470b67){if(_0x470b67){_0x3eb1f0[_0x033a('0x46')][_0x033a('0x50')]=_0x470b67['id'];return db['Condition'][_0x033a('0x45')](_0x3eb1f0['body']);}})[_0x033a('0x21')](respondWithResult(_0x19ff97,null))[_0x033a('0x44')](handleError(_0x19ff97,null));};exports['getAllConditions']=function(_0x3fae9e,_0x9e5f03,_0x57318e){var _0x18ae22={};var _0x37608a={};var _0x52ba2e;var _0x2be47b;return db[_0x033a('0x29')][_0x033a('0x51')]({'where':{'id':_0x3fae9e[_0x033a('0x4c')]['id']}})[_0x033a('0x21')](handleEntityNotFound(_0x9e5f03,null))[_0x033a('0x21')](function(_0xbfb3f0){if(_0xbfb3f0){_0x52ba2e=_0xbfb3f0;_0x37608a['model']=_[_0x033a('0x30')](db[_0x033a('0x52')]['rawAttributes']);_0x37608a[_0x033a('0x2f')]=_['keys'](_0x3fae9e[_0x033a('0x2f')]);_0x37608a[_0x033a('0x31')]=_[_0x033a('0x32')](_0x37608a[_0x033a('0x2e')],_0x37608a[_0x033a('0x2f')]);_0x18ae22[_0x033a('0x33')]=_[_0x033a('0x32')](_0x37608a[_0x033a('0x2e')],qs[_0x033a('0x34')](_0x3fae9e[_0x033a('0x2f')][_0x033a('0x34')]));_0x18ae22[_0x033a('0x33')]=_0x18ae22[_0x033a('0x33')][_0x033a('0x42')]?_0x18ae22[_0x033a('0x33')]:_0x37608a[_0x033a('0x2e')];_0x18ae22['order']=qs[_0x033a('0x37')](_0x3fae9e['query']['sort']);_0x18ae22[_0x033a('0x38')]=qs['filters'](_['pick'](_0x3fae9e[_0x033a('0x2f')],_0x37608a['filters']));if(_0x3fae9e[_0x033a('0x2f')]['filter']){_0x18ae22[_0x033a('0x38')]=_['merge'](_0x18ae22[_0x033a('0x38')],{'$or':_['map'](_0x18ae22[_0x033a('0x33')],function(_0x4a067b){var _0x4af9dd={};_0x4af9dd[_0x4a067b]={'$like':'%'+_0x3fae9e[_0x033a('0x2f')]['filter']+'%'};return _0x4af9dd;})});}_0x18ae22=_['merge']({},_0x18ae22,_0x3fae9e[_0x033a('0x53')]);return _0x52ba2e[_0x033a('0x54')](_0x18ae22);}})[_0x033a('0x21')](function(_0x4cadb0){if(_0x4cadb0){_0x2be47b=_0x4cadb0['length'];if(!_0x3fae9e[_0x033a('0x2f')][_0x033a('0x35')](_0x033a('0x55'))){_0x18ae22[_0x033a('0x18')]=qs['limit'](_0x3fae9e[_0x033a('0x2f')]['limit']);_0x18ae22[_0x033a('0x1a')]=qs[_0x033a('0x1a')](_0x3fae9e['query']['offset']);}return _0x52ba2e[_0x033a('0x54')](_0x18ae22);}})[_0x033a('0x21')](function(_0x46aa17){if(_0x46aa17){return _0x46aa17?{'count':_0x2be47b,'rows':_0x46aa17}:null;}})[_0x033a('0x21')](respondWithResult(_0x9e5f03,null))[_0x033a('0x44')](handleError(_0x9e5f03,null));};exports[_0x033a('0x56')]=function(_0x49da3a,_0x381d04,_0x1903b8){var _0x4a4a08={};var _0x280c53={};var _0x53a2a6;var _0x3a6858;return db[_0x033a('0x29')][_0x033a('0x51')]({'where':{'id':_0x49da3a[_0x033a('0x4c')]['id']}})[_0x033a('0x21')](handleEntityNotFound(_0x381d04,null))[_0x033a('0x21')](function(_0x4d9f72){if(_0x4d9f72){_0x53a2a6=_0x4d9f72;_0x280c53['model']=_[_0x033a('0x30')](db['Condition'][_0x033a('0x2a')]);_0x280c53['query']=_[_0x033a('0x30')](_0x49da3a[_0x033a('0x2f')]);_0x280c53['filters']=_[_0x033a('0x32')](_0x280c53[_0x033a('0x2e')],_0x280c53[_0x033a('0x2f')]);_0x4a4a08['attributes']=_[_0x033a('0x32')](_0x280c53[_0x033a('0x2e')],qs[_0x033a('0x34')](_0x49da3a[_0x033a('0x2f')][_0x033a('0x34')]));_0x4a4a08['attributes']=_0x4a4a08[_0x033a('0x33')][_0x033a('0x42')]?_0x4a4a08[_0x033a('0x33')]:_0x280c53[_0x033a('0x2e')];_0x4a4a08[_0x033a('0x36')]=qs[_0x033a('0x37')](_0x49da3a[_0x033a('0x2f')][_0x033a('0x37')]);_0x4a4a08[_0x033a('0x38')]=qs[_0x033a('0x31')](_['pick'](_0x49da3a[_0x033a('0x2f')],_0x280c53[_0x033a('0x31')]));if(_0x49da3a[_0x033a('0x2f')][_0x033a('0x3a')]){_0x4a4a08['where']=_[_0x033a('0x3b')](_0x4a4a08[_0x033a('0x38')],{'$or':_['map'](_0x4a4a08['attributes'],function(_0x55c7ee){var _0x2c10ca={};_0x2c10ca[_0x55c7ee]={'$like':'%'+_0x49da3a[_0x033a('0x2f')]['filter']+'%'};return _0x2c10ca;})});}_0x4a4a08=_['merge']({},_0x4a4a08,_0x49da3a['options']);return _0x53a2a6[_0x033a('0x56')](_0x4a4a08);}})[_0x033a('0x21')](function(_0x8df6f5){if(_0x8df6f5){_0x3a6858=_0x8df6f5[_0x033a('0x42')];if(!_0x49da3a[_0x033a('0x2f')][_0x033a('0x35')](_0x033a('0x55'))){_0x4a4a08[_0x033a('0x18')]=qs['limit'](_0x49da3a[_0x033a('0x2f')]['limit']);_0x4a4a08['offset']=qs[_0x033a('0x1a')](_0x49da3a['query'][_0x033a('0x1a')]);}return _0x53a2a6['getAnyConditions'](_0x4a4a08);}})[_0x033a('0x21')](function(_0x9bd0c6){if(_0x9bd0c6){return _0x9bd0c6?{'count':_0x3a6858,'rows':_0x9bd0c6}:null;}})['then'](respondWithResult(_0x381d04,null))[_0x033a('0x44')](handleError(_0x381d04,null));};exports[_0x033a('0x57')]=function(_0x7df8a2,_0x18b9d5,_0x24f567){if(_0x7df8a2['body']['id']){delete _0x7df8a2[_0x033a('0x46')]['id'];}return db[_0x033a('0x29')][_0x033a('0x43')]({'where':{'id':_0x7df8a2[_0x033a('0x4c')]['id']}})[_0x033a('0x21')](handleEntityNotFound(_0x18b9d5,null))[_0x033a('0x21')](function(_0x2c3555){if(_0x2c3555){_0x7df8a2['body'][_0x033a('0x58')]=_0x2c3555['id'];return db['Action'][_0x033a('0x45')](_0x7df8a2[_0x033a('0x46')]);}})[_0x033a('0x21')](respondWithResult(_0x18b9d5,null))[_0x033a('0x44')](handleError(_0x18b9d5,null));};exports[_0x033a('0x59')]=function(_0x4ea263,_0x4d99ea,_0x1f89fd){var _0x3b5bd3={};var _0x49d65c={};var _0xf9f90f;var _0x50403f;return db[_0x033a('0x29')][_0x033a('0x51')]({'where':{'id':_0x4ea263[_0x033a('0x4c')]['id']}})[_0x033a('0x21')](handleEntityNotFound(_0x4d99ea,null))['then'](function(_0x18d29b){if(_0x18d29b){_0xf9f90f=_0x18d29b;_0x49d65c[_0x033a('0x2e')]=_[_0x033a('0x30')](db[_0x033a('0x5a')][_0x033a('0x2a')]);_0x49d65c[_0x033a('0x2f')]=_[_0x033a('0x30')](_0x4ea263['query']);_0x49d65c[_0x033a('0x31')]=_[_0x033a('0x32')](_0x49d65c[_0x033a('0x2e')],_0x49d65c[_0x033a('0x2f')]);_0x3b5bd3[_0x033a('0x33')]=_[_0x033a('0x32')](_0x49d65c['model'],qs[_0x033a('0x34')](_0x4ea263[_0x033a('0x2f')]['fields']));_0x3b5bd3[_0x033a('0x33')]=_0x3b5bd3[_0x033a('0x33')][_0x033a('0x42')]?_0x3b5bd3[_0x033a('0x33')]:_0x49d65c[_0x033a('0x2e')];_0x3b5bd3[_0x033a('0x36')]=qs[_0x033a('0x37')](_0x4ea263[_0x033a('0x2f')][_0x033a('0x37')]);_0x3b5bd3['where']=qs[_0x033a('0x31')](_[_0x033a('0x39')](_0x4ea263[_0x033a('0x2f')],_0x49d65c[_0x033a('0x31')]));if(_0x4ea263[_0x033a('0x2f')][_0x033a('0x3a')]){_0x3b5bd3[_0x033a('0x38')]=_[_0x033a('0x3b')](_0x3b5bd3[_0x033a('0x38')],{'$or':_[_0x033a('0x5b')](_0x3b5bd3[_0x033a('0x33')],function(_0x20dd7a){var _0x596c9d={};_0x596c9d[_0x20dd7a]={'$like':'%'+_0x4ea263[_0x033a('0x2f')]['filter']+'%'};return _0x596c9d;})});}_0x3b5bd3=_['merge']({},_0x3b5bd3,_0x4ea263['options']);return _0xf9f90f[_0x033a('0x59')](_0x3b5bd3);}})[_0x033a('0x21')](function(_0x1c9249){if(_0x1c9249){_0x50403f=_0x1c9249[_0x033a('0x42')];if(!_0x4ea263[_0x033a('0x2f')][_0x033a('0x35')](_0x033a('0x55'))){_0x3b5bd3[_0x033a('0x18')]=qs['limit'](_0x4ea263['query'][_0x033a('0x18')]);_0x3b5bd3['offset']=qs[_0x033a('0x1a')](_0x4ea263[_0x033a('0x2f')][_0x033a('0x1a')]);}return _0xf9f90f[_0x033a('0x59')](_0x3b5bd3);}})['then'](function(_0x156dab){if(_0x156dab){return _0x156dab?{'count':_0x50403f,'rows':_0x156dab}:null;}})['then'](respondWithResult(_0x4d99ea,null))['catch'](handleError(_0x4d99ea,null));};
\ No newline at end of file
index d2de003..6569de4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c4=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./trigger.attributes','exports','tools_triggers','lodash'];(function(_0x127823,_0x10a7f9){var _0x46af88=function(_0xcc3283){while(--_0xcc3283){_0x127823['push'](_0x127823['shift']());}};_0x46af88(++_0x10a7f9);}(_0xc1c4,0x1c7));var _0x4c1c=function(_0x3a5ac9,_0xd6b08b){_0x3a5ac9=_0x3a5ac9-0x0;var _0x428e4a=_0xc1c4[_0x3a5ac9];return _0x428e4a;};'use strict';var _=require(_0x4c1c('0x0'));var util=require(_0x4c1c('0x1'));var logger=require(_0x4c1c('0x2'))(_0x4c1c('0x3'));var moment=require(_0x4c1c('0x4'));var BPromise=require(_0x4c1c('0x5'));var rp=require(_0x4c1c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4c1c('0x7'));var config=require(_0x4c1c('0x8'));var attributes=require(_0x4c1c('0x9'));module[_0x4c1c('0xa')]=function(_0x5ad905,_0xaa5184){return _0x5ad905['define']('Trigger',attributes,{'tableName':_0x4c1c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa25a=['rimraf','exports','define','Trigger','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x5ddf2c,_0x4d76e4){var _0x29cfa3=function(_0x4fecbc){while(--_0x4fecbc){_0x5ddf2c['push'](_0x5ddf2c['shift']());}};_0x29cfa3(++_0x4d76e4);}(_0xa25a,0x160));var _0xaa25=function(_0x53c84b,_0x2bc741){_0x53c84b=_0x53c84b-0x0;var _0x5cbf89=_0xa25a[_0x53c84b];return _0x5cbf89;};'use strict';var _=require(_0xaa25('0x0'));var util=require(_0xaa25('0x1'));var logger=require(_0xaa25('0x2'))(_0xaa25('0x3'));var moment=require(_0xaa25('0x4'));var BPromise=require(_0xaa25('0x5'));var rp=require(_0xaa25('0x6'));var fs=require('fs');var path=require(_0xaa25('0x7'));var rimraf=require(_0xaa25('0x8'));var config=require('../../config/environment');var attributes=require('./trigger.attributes');module[_0xaa25('0x9')]=function(_0x866fa1,_0x51ce9a){return _0x866fa1[_0xaa25('0xa')](_0xaa25('0xb'),attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e8aef8c..20fe257 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08bc=['result','catch','GetTrigger','Trigger','findAll','options','raw','where','attributes','limit','include','model','map','then','ShowTrigger','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Trigger,\x20%s,\x20%s'];(function(_0x38a7ac,_0x45514b){var _0x53061a=function(_0x1d2469){while(--_0x1d2469){_0x38a7ac['push'](_0x38a7ac['shift']());}};_0x53061a(++_0x45514b);}(_0x08bc,0x112));var _0xc08b=function(_0xbc2974,_0xec3342){_0xbc2974=_0xbc2974-0x0;var _0x3a5b4f=_0x08bc[_0xbc2974];return _0x3a5b4f;};'use strict';var _=require(_0xc08b('0x0'));var util=require(_0xc08b('0x1'));var moment=require(_0xc08b('0x2'));var BPromise=require(_0xc08b('0x3'));var rs=require(_0xc08b('0x4'));var fs=require('fs');var Redis=require(_0xc08b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc08b('0x6'));var logger=require(_0xc08b('0x7'))(_0xc08b('0x8'));var config=require(_0xc08b('0x9'));var jayson=require(_0xc08b('0xa'));var client=jayson[_0xc08b('0xb')][_0xc08b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3ab2b4,_0x29912c,_0x520fc0){return new BPromise(function(_0x5d1dc7,_0x444629){return client['request'](_0x3ab2b4,_0x520fc0)['then'](function(_0x400015){logger[_0xc08b('0xd')]('Trigger,\x20%s,\x20%s',_0x29912c,_0xc08b('0xe'));logger[_0xc08b('0xf')](_0xc08b('0x10'),_0x29912c,_0xc08b('0xe'),JSON[_0xc08b('0x11')](_0x400015));if(_0x400015['error']){if(_0x400015[_0xc08b('0x12')][_0xc08b('0x13')]===0x1f4){logger['error']('Trigger,\x20%s,\x20%s',_0x29912c,_0x400015['error'][_0xc08b('0x14')]);return _0x444629(_0x400015[_0xc08b('0x12')][_0xc08b('0x14')]);}logger[_0xc08b('0x12')](_0xc08b('0x15'),_0x29912c,_0x400015[_0xc08b('0x12')][_0xc08b('0x14')]);return _0x5d1dc7(_0x400015[_0xc08b('0x12')][_0xc08b('0x14')]);}else{logger['info']('Trigger,\x20%s,\x20%s',_0x29912c,_0xc08b('0xe'));_0x5d1dc7(_0x400015[_0xc08b('0x16')][_0xc08b('0x14')]);}})[_0xc08b('0x17')](function(_0x339641){logger[_0xc08b('0x12')](_0xc08b('0x15'),_0x29912c,_0x339641);_0x444629(_0x339641);});});}exports[_0xc08b('0x18')]=function(_0x5f4bee){var _0x124b3f=this;return new Promise(function(_0x454292,_0x3152e2){return db[_0xc08b('0x19')][_0xc08b('0x1a')]({'raw':_0x5f4bee['options']?_0x5f4bee[_0xc08b('0x1b')][_0xc08b('0x1c')]===undefined?!![]:![]:!![],'where':_0x5f4bee[_0xc08b('0x1b')]?_0x5f4bee[_0xc08b('0x1b')][_0xc08b('0x1d')]||null:null,'attributes':_0x5f4bee[_0xc08b('0x1b')]?_0x5f4bee[_0xc08b('0x1b')][_0xc08b('0x1e')]||null:null,'limit':_0x5f4bee['options']?_0x5f4bee[_0xc08b('0x1b')][_0xc08b('0x1f')]||null:null,'include':_0x5f4bee[_0xc08b('0x1b')]?_0x5f4bee[_0xc08b('0x1b')][_0xc08b('0x20')]?_['map'](_0x5f4bee[_0xc08b('0x1b')][_0xc08b('0x20')],function(_0x38c222){return{'model':db[_0x38c222[_0xc08b('0x21')]],'as':_0x38c222['as'],'attributes':_0x38c222[_0xc08b('0x1e')],'include':_0x38c222['include']?_[_0xc08b('0x22')](_0x38c222['include'],function(_0x642a1b){return{'model':db[_0x642a1b['model']],'as':_0x642a1b['as'],'attributes':_0x642a1b[_0xc08b('0x1e')],'include':_0x642a1b['include']?_[_0xc08b('0x22')](_0x642a1b[_0xc08b('0x20')],function(_0x1293a0){return{'model':db[_0x1293a0['model']],'as':_0x1293a0['as'],'attributes':_0x1293a0[_0xc08b('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xc08b('0x23')](function(_0x5986d1){logger['info']('GetTrigger',_0x5f4bee);logger['debug']('GetTrigger',_0x5f4bee,JSON['stringify'](_0x5986d1));_0x454292(_0x5986d1);})[_0xc08b('0x17')](function(_0x45d621){logger[_0xc08b('0x12')]('GetTrigger',_0x45d621[_0xc08b('0x14')],_0x5f4bee);_0x3152e2(_0x124b3f[_0xc08b('0x12')](0x1f4,_0x45d621['message']));});});};exports['ShowTrigger']=function(_0x4f7b67){var _0x436971=this;return new Promise(function(_0x542601,_0x199ee1){return db['Trigger']['find']({'raw':_0x4f7b67[_0xc08b('0x1b')]?_0x4f7b67[_0xc08b('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x4f7b67[_0xc08b('0x1b')]?_0x4f7b67[_0xc08b('0x1b')]['where']||null:null,'attributes':_0x4f7b67[_0xc08b('0x1b')]?_0x4f7b67[_0xc08b('0x1b')][_0xc08b('0x1e')]||null:null,'include':_0x4f7b67['options']?_0x4f7b67[_0xc08b('0x1b')][_0xc08b('0x20')]?_[_0xc08b('0x22')](_0x4f7b67[_0xc08b('0x1b')]['include'],function(_0x12c11f){return{'model':db[_0x12c11f[_0xc08b('0x21')]],'as':_0x12c11f['as'],'attributes':_0x12c11f[_0xc08b('0x1e')],'include':_0x12c11f[_0xc08b('0x20')]?_[_0xc08b('0x22')](_0x12c11f[_0xc08b('0x20')],function(_0x2769ac){return{'model':db[_0x2769ac['model']],'as':_0x2769ac['as'],'attributes':_0x2769ac[_0xc08b('0x1e')],'include':_0x2769ac[_0xc08b('0x20')]?_['map'](_0x2769ac['include'],function(_0x4d1387){return{'model':db[_0x4d1387['model']],'as':_0x4d1387['as'],'attributes':_0x4d1387['attributes']};}):[]};}):[]};}):[]:[]})[_0xc08b('0x23')](function(_0x2e3895){logger[_0xc08b('0xd')]('ShowTrigger',_0x4f7b67);logger[_0xc08b('0xf')](_0xc08b('0x24'),_0x4f7b67,JSON[_0xc08b('0x11')](_0x2e3895));_0x542601(_0x2e3895);})[_0xc08b('0x17')](function(_0x5acde4){logger[_0xc08b('0x12')](_0xc08b('0x24'),_0x5acde4[_0xc08b('0x14')],_0x4f7b67);_0x199ee1(_0x436971[_0xc08b('0x12')](0x1f4,_0x5acde4['message']));});});};
\ No newline at end of file
+var _0xdfe5=['moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','Trigger','findAll','options','raw','where','limit','map','include','model','attributes','GetTrigger','find','ShowTrigger','lodash'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0xdfe5,0xd1));var _0x5dfe=function(_0xa7a998,_0x26f55a){_0xa7a998=_0xa7a998-0x0;var _0x2346e8=_0xdfe5[_0xa7a998];return _0x2346e8;};'use strict';var _=require(_0x5dfe('0x0'));var util=require('util');var moment=require(_0x5dfe('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5dfe('0x2'));var db=require(_0x5dfe('0x3'))['db'];var utils=require(_0x5dfe('0x4'));var logger=require(_0x5dfe('0x5'))('rpc');var config=require(_0x5dfe('0x6'));var jayson=require(_0x5dfe('0x7'));var client=jayson['client'][_0x5dfe('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3425f4,_0x218e48,_0x2c38b9){return new BPromise(function(_0x212438,_0x502d43){return client[_0x5dfe('0x9')](_0x3425f4,_0x2c38b9)[_0x5dfe('0xa')](function(_0x471bd0){logger[_0x5dfe('0xb')](_0x5dfe('0xc'),_0x218e48,_0x5dfe('0xd'));logger[_0x5dfe('0xe')](_0x5dfe('0xf'),_0x218e48,_0x5dfe('0xd'),JSON[_0x5dfe('0x10')](_0x471bd0));if(_0x471bd0[_0x5dfe('0x11')]){if(_0x471bd0[_0x5dfe('0x11')][_0x5dfe('0x12')]===0x1f4){logger[_0x5dfe('0x11')](_0x5dfe('0xc'),_0x218e48,_0x471bd0[_0x5dfe('0x11')][_0x5dfe('0x13')]);return _0x502d43(_0x471bd0[_0x5dfe('0x11')]['message']);}logger[_0x5dfe('0x11')](_0x5dfe('0xc'),_0x218e48,_0x471bd0[_0x5dfe('0x11')][_0x5dfe('0x13')]);return _0x212438(_0x471bd0[_0x5dfe('0x11')][_0x5dfe('0x13')]);}else{logger[_0x5dfe('0xb')](_0x5dfe('0xc'),_0x218e48,_0x5dfe('0xd'));_0x212438(_0x471bd0[_0x5dfe('0x14')][_0x5dfe('0x13')]);}})[_0x5dfe('0x15')](function(_0x28d21b){logger[_0x5dfe('0x11')]('Trigger,\x20%s,\x20%s',_0x218e48,_0x28d21b);_0x502d43(_0x28d21b);});});}exports['GetTrigger']=function(_0xd57565){var _0x3a2aac=this;return new Promise(function(_0x227b8f,_0x4e2950){return db[_0x5dfe('0x16')][_0x5dfe('0x17')]({'raw':_0xd57565[_0x5dfe('0x18')]?_0xd57565['options'][_0x5dfe('0x19')]===undefined?!![]:![]:!![],'where':_0xd57565[_0x5dfe('0x18')]?_0xd57565['options'][_0x5dfe('0x1a')]||null:null,'attributes':_0xd57565['options']?_0xd57565[_0x5dfe('0x18')]['attributes']||null:null,'limit':_0xd57565[_0x5dfe('0x18')]?_0xd57565[_0x5dfe('0x18')][_0x5dfe('0x1b')]||null:null,'include':_0xd57565['options']?_0xd57565['options']['include']?_[_0x5dfe('0x1c')](_0xd57565['options']['include'],function(_0x664432){return{'model':db[_0x664432['model']],'as':_0x664432['as'],'attributes':_0x664432['attributes'],'include':_0x664432[_0x5dfe('0x1d')]?_['map'](_0x664432[_0x5dfe('0x1d')],function(_0x112abd){return{'model':db[_0x112abd[_0x5dfe('0x1e')]],'as':_0x112abd['as'],'attributes':_0x112abd['attributes'],'include':_0x112abd[_0x5dfe('0x1d')]?_[_0x5dfe('0x1c')](_0x112abd[_0x5dfe('0x1d')],function(_0x12d708){return{'model':db[_0x12d708[_0x5dfe('0x1e')]],'as':_0x12d708['as'],'attributes':_0x12d708[_0x5dfe('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2412f4){logger[_0x5dfe('0xb')](_0x5dfe('0x20'),_0xd57565);logger[_0x5dfe('0xe')](_0x5dfe('0x20'),_0xd57565,JSON[_0x5dfe('0x10')](_0x2412f4));_0x227b8f(_0x2412f4);})['catch'](function(_0x442402){logger[_0x5dfe('0x11')]('GetTrigger',_0x442402[_0x5dfe('0x13')],_0xd57565);_0x4e2950(_0x3a2aac['error'](0x1f4,_0x442402[_0x5dfe('0x13')]));});});};exports['ShowTrigger']=function(_0x31c59b){var _0x1b734d=this;return new Promise(function(_0x1ca364,_0x41a5fe){return db[_0x5dfe('0x16')][_0x5dfe('0x21')]({'raw':_0x31c59b[_0x5dfe('0x18')]?_0x31c59b['options'][_0x5dfe('0x19')]===undefined?!![]:![]:!![],'where':_0x31c59b['options']?_0x31c59b[_0x5dfe('0x18')][_0x5dfe('0x1a')]||null:null,'attributes':_0x31c59b[_0x5dfe('0x18')]?_0x31c59b['options'][_0x5dfe('0x1f')]||null:null,'include':_0x31c59b[_0x5dfe('0x18')]?_0x31c59b[_0x5dfe('0x18')]['include']?_[_0x5dfe('0x1c')](_0x31c59b[_0x5dfe('0x18')]['include'],function(_0x5b0f42){return{'model':db[_0x5b0f42[_0x5dfe('0x1e')]],'as':_0x5b0f42['as'],'attributes':_0x5b0f42[_0x5dfe('0x1f')],'include':_0x5b0f42[_0x5dfe('0x1d')]?_[_0x5dfe('0x1c')](_0x5b0f42[_0x5dfe('0x1d')],function(_0x18af9a){return{'model':db[_0x18af9a['model']],'as':_0x18af9a['as'],'attributes':_0x18af9a[_0x5dfe('0x1f')],'include':_0x18af9a[_0x5dfe('0x1d')]?_[_0x5dfe('0x1c')](_0x18af9a[_0x5dfe('0x1d')],function(_0x38ef94){return{'model':db[_0x38ef94[_0x5dfe('0x1e')]],'as':_0x38ef94['as'],'attributes':_0x38ef94[_0x5dfe('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x5dfe('0xa')](function(_0x4cb16c){logger['info'](_0x5dfe('0x22'),_0x31c59b);logger['debug']('ShowTrigger',_0x31c59b,JSON[_0x5dfe('0x10')](_0x4cb16c));_0x1ca364(_0x4cb16c);})[_0x5dfe('0x15')](function(_0x5787a5){logger['error'](_0x5dfe('0x22'),_0x5787a5[_0x5dfe('0x13')],_0x31c59b);_0x41a5fe(_0x1b734d['error'](0x1f4,_0x5787a5[_0x5dfe('0x13')]));});});};
\ No newline at end of file
index 60305c9..e71f055 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14ea=['show','post','clone','put','/:id','update','delete','multer','util','path','Router','fs-extra','../../components/auth/service','./trunk.controller','get','isAuthenticated','index'];(function(_0x14aa8f,_0x564334){var _0x22d6a0=function(_0x4ef6f6){while(--_0x4ef6f6){_0x14aa8f['push'](_0x14aa8f['shift']());}};_0x22d6a0(++_0x564334);}(_0x14ea,0x16c));var _0xa14e=function(_0x2a51e9,_0x418cf2){_0x2a51e9=_0x2a51e9-0x0;var _0x19601d=_0x14ea[_0x2a51e9];return _0x19601d;};'use strict';var multer=require(_0xa14e('0x0'));var util=require(_0xa14e('0x1'));var path=require(_0xa14e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa14e('0x3')]();var fs_extra=require(_0xa14e('0x4'));var auth=require(_0xa14e('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa14e('0x6'));router[_0xa14e('0x7')]('/',auth[_0xa14e('0x8')](),controller[_0xa14e('0x9')]);router[_0xa14e('0x7')]('/:id',auth[_0xa14e('0x8')](),controller[_0xa14e('0xa')]);router[_0xa14e('0xb')]('/:id/clone',auth[_0xa14e('0x8')](),controller[_0xa14e('0xc')]);router[_0xa14e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0xa14e('0xd')](_0xa14e('0xe'),auth['isAuthenticated'](),controller[_0xa14e('0xf')]);router[_0xa14e('0x10')]('/:id',auth[_0xa14e('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xf9f9=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./trunk.controller','get','isAuthenticated','show','post','/:id/clone','clone','create','put','update','delete','/:id','destroy','exports'];(function(_0x9f4efd,_0x51d9ac){var _0x1946c0=function(_0x1e77fe){while(--_0x1e77fe){_0x9f4efd['push'](_0x9f4efd['shift']());}};_0x1946c0(++_0x51d9ac);}(_0xf9f9,0x1ce));var _0x9f9f=function(_0x5040bb,_0xf9527){_0x5040bb=_0x5040bb-0x0;var _0x28811d=_0xf9f9[_0x5040bb];return _0x28811d;};'use strict';var multer=require(_0x9f9f('0x0'));var util=require(_0x9f9f('0x1'));var path=require(_0x9f9f('0x2'));var timeout=require(_0x9f9f('0x3'));var express=require(_0x9f9f('0x4'));var router=express[_0x9f9f('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x9f9f('0x6'));var interaction=require(_0x9f9f('0x7'));var config=require('../../config/environment');var controller=require(_0x9f9f('0x8'));router[_0x9f9f('0x9')]('/',auth[_0x9f9f('0xa')](),controller['index']);router[_0x9f9f('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x9f9f('0xb')]);router[_0x9f9f('0xc')](_0x9f9f('0xd'),auth[_0x9f9f('0xa')](),controller[_0x9f9f('0xe')]);router[_0x9f9f('0xc')]('/',auth[_0x9f9f('0xa')](),controller[_0x9f9f('0xf')]);router[_0x9f9f('0x10')]('/:id',auth[_0x9f9f('0xa')](),controller[_0x9f9f('0x11')]);router[_0x9f9f('0x12')](_0x9f9f('0x13'),auth[_0x9f9f('0xa')](),controller[_0x9f9f('0x14')]);module[_0x9f9f('0x15')]=router;
\ No newline at end of file
index 6cb31c9..10b5a83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb233=['never','\x22\x22\x20<>','INTEGER','accept','originate','uac','uas','certificate','active','dynamic','update,nonat','BOOLEAN','exports','STRING','name','ENUM','user','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','setDataValue','nat','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','insecure'];(function(_0x365c78,_0x23ab28){var _0x40d398=function(_0x4998ac){while(--_0x4998ac){_0x365c78['push'](_0x365c78['shift']());}};_0x40d398(++_0x23ab28);}(_0xb233,0x1f0));var _0x3b23=function(_0x576ab9,_0x2e6eef){_0x576ab9=_0x576ab9-0x0;var _0x4fcf15=_0xb233[_0x576ab9];return _0x4fcf15;};'use strict';var Sequelize=require('sequelize');module[_0x3b23('0x0')]={'name':{'type':Sequelize[_0x3b23('0x1')],'allowNull':![],'unique':_0x3b23('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x3b23('0x3')]('friend',_0x3b23('0x4'),'peer'),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x3b23('0x5')},'callingpres':{'type':Sequelize['ENUM'](_0x3b23('0x6'),_0x3b23('0x7'),_0x3b23('0x8'),'ALLOWED',_0x3b23('0x9'),_0x3b23('0xa'),_0x3b23('0xb'),'PROHIB')},'deny':{'type':Sequelize[_0x3b23('0x1')]},'permit':{'type':Sequelize[_0x3b23('0x1')]},'secret':{'type':Sequelize[_0x3b23('0x1')]},'md5secret':{'type':Sequelize[_0x3b23('0x1')]},'remotesecret':{'type':Sequelize[_0x3b23('0x1')]},'transport':{'type':Sequelize[_0x3b23('0x1')],'defaultValue':'udp','set':function(_0x5f5298){this['setDataValue'](_0x3b23('0xc'),_0x5f5298?_0x5f5298[_0x3b23('0xd')](','):null);},'get':function(){return this[_0x3b23('0xe')](_0x3b23('0xc'))?this[_0x3b23('0xe')]('transport')[_0x3b23('0xf')](','):null;},'comment':_0x3b23('0x10')},'dtmfmode':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x11'),'info',_0x3b23('0x12'),_0x3b23('0x13'),_0x3b23('0x14')),'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no',_0x3b23('0x16'),_0x3b23('0x17'),_0x3b23('0x18')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize[_0x3b23('0x1')]},'nat':{'type':Sequelize[_0x3b23('0x1')],'defaultValue':_0x3b23('0x19'),'set':function(_0x513813){this[_0x3b23('0x1a')](_0x3b23('0x1b'),_0x513813?_0x513813[_0x3b23('0xd')](','):null);},'get':function(){return this[_0x3b23('0xe')](_0x3b23('0x1b'))?this[_0x3b23('0xe')](_0x3b23('0x1b'))[_0x3b23('0xf')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x3b23('0x1')]},'namedcallgroup':{'type':Sequelize[_0x3b23('0x1')]},'pickupgroup':{'type':Sequelize[_0x3b23('0x1')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x3b23('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x3b23('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x3b23('0x1')],'defaultValue':'all'},'allow':{'type':Sequelize[_0x3b23('0x1')],'allowNull':![],'defaultValue':_0x3b23('0x1c'),'set':function(_0x4fd0d3){this[_0x3b23('0x1a')](_0x3b23('0x1d'),_0x4fd0d3?_0x4fd0d3[_0x3b23('0xd')](';'):_0x3b23('0x1c'));},'get':function(){return this[_0x3b23('0xe')](_0x3b23('0x1d'))?this[_0x3b23('0xe')]('allow')['split'](';'):null;},'comment':_0x3b23('0x1e')},'autoframing':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'insecure':{'type':Sequelize[_0x3b23('0x1')],'defaultValue':'port,invite','set':function(_0x56b258){this[_0x3b23('0x1a')](_0x3b23('0x1f'),_0x56b258?_0x56b258['join'](','):null);},'get':function(){return this[_0x3b23('0xe')]('insecure')?this[_0x3b23('0xe')](_0x3b23('0x1f'))[_0x3b23('0xf')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no',_0x3b23('0x20'))},'promiscredir':{'type':Sequelize['ENUM']('yes','no')},'useclientcode':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0x3b23('0x1')]},'callerid':{'type':Sequelize[_0x3b23('0x1')],'defaultValue':_0x3b23('0x21')},'amaflags':{'type':Sequelize[_0x3b23('0x1')]},'callcounter':{'type':Sequelize[_0x3b23('0x3')]('yes','no'),'defaultValue':_0x3b23('0x15')},'busylevel':{'type':Sequelize[_0x3b23('0x22')](0xb)},'allowoverlap':{'type':Sequelize['ENUM'](_0x3b23('0x15'),'no')},'allowsubscribe':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'allowtransfer':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0x3b23('0x15'),'no')},'subscribecontext':{'type':Sequelize[_0x3b23('0x1')]},'template':{'type':Sequelize[_0x3b23('0x1')]},'videosupport':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x3b23('0x22')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'mailbox':{'type':Sequelize[_0x3b23('0x1')]},'session_timers':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x23'),'refuse',_0x3b23('0x24'))},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0x3b23('0x22')](0xb)},'session_refresher':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x25'),_0x3b23('0x26')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x3b23('0x1')]},'regexten':{'type':Sequelize[_0x3b23('0x1')]},'fromdomain':{'type':Sequelize[_0x3b23('0x1')]},'fromuser':{'type':Sequelize[_0x3b23('0x1')]},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x3b23('0x22')](0xb)},'defaultip':{'type':Sequelize[_0x3b23('0x1')]},'defaultuser':{'type':Sequelize[_0x3b23('0x1')]},'rtptimeout':{'type':Sequelize[_0x3b23('0x22')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x3b23('0x22')](0xb)},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb)},'sendrpid':{'type':Sequelize['ENUM']('yes','no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x3b23('0x1')]},'callbackextension':{'type':Sequelize[_0x3b23('0x1')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x3b23('0x22')](0xb)},'qualifyfreq':{'type':Sequelize[_0x3b23('0x22')](0xb)},'contactpermit':{'type':Sequelize[_0x3b23('0x1')]},'contactdeny':{'type':Sequelize[_0x3b23('0x1')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0x3b23('0x1')]},'maxforwards':{'type':Sequelize[_0x3b23('0x22')](0xb)},'encryption':{'type':Sequelize[_0x3b23('0x3')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'force_avp':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'icesupport':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'dtlsenable':{'type':Sequelize[_0x3b23('0x3')]('yes','no')},'dtlsverify':{'type':Sequelize[_0x3b23('0x3')]('yes','no','fingerprint',_0x3b23('0x27'))},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0x3b23('0x1')]},'dtlsprivatekey':{'type':Sequelize[_0x3b23('0x1')]},'dtlscipher':{'type':Sequelize[_0x3b23('0x1')]},'dtlscafile':{'type':Sequelize[_0x3b23('0x1')]},'dtlscapath':{'type':Sequelize[_0x3b23('0x1')]},'dtlssetup':{'type':Sequelize['ENUM'](_0x3b23('0x28'),'passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x3b23('0x1')]},'usereqphone':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0x3b23('0x1')]},'call_limit':{'type':Sequelize[_0x3b23('0x22')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'subscribemwi':{'type':Sequelize[_0x3b23('0x3')]('yes','no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize[_0x3b23('0x1')]},'mohsuggest':{'type':Sequelize[_0x3b23('0x1')]},'parkinglot':{'type':Sequelize[_0x3b23('0x1')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING'],'defaultValue':_0x3b23('0x29')},'canreinvite':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no',_0x3b23('0x16'),'update',_0x3b23('0x2a')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x3b23('0x1')]},'active':{'type':Sequelize[_0x3b23('0x2b')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
+var _0xe6be=['nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','\x22\x22\x20<>','always','refuse','originate','uas','certificate','active','passive','actpass','update,nonat','BOOLEAN','sequelize','exports','STRING','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','yes','nonat','update','setDataValue','join','getDataValue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe6be,0x174));var _0xee6b=function(_0x2c8787,_0xb5f247){_0x2c8787=_0x2c8787-0x0;var _0x35e3a8=_0xe6be[_0x2c8787];return _0x35e3a8;};'use strict';var Sequelize=require(_0xee6b('0x0'));module[_0xee6b('0x1')]={'name':{'type':Sequelize[_0xee6b('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x4'),_0xee6b('0x5'),_0xee6b('0x6')),'allowNull':![],'defaultValue':_0xee6b('0x4')},'context':{'type':Sequelize[_0xee6b('0x2')],'allowNull':![],'defaultValue':_0xee6b('0x7')},'callingpres':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x8'),_0xee6b('0x9'),_0xee6b('0xa'),_0xee6b('0xb'),_0xee6b('0xc'),_0xee6b('0xd'),_0xee6b('0xe'),_0xee6b('0xf'))},'deny':{'type':Sequelize[_0xee6b('0x2')]},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0xee6b('0x2')]},'md5secret':{'type':Sequelize[_0xee6b('0x2')]},'remotesecret':{'type':Sequelize[_0xee6b('0x2')]},'transport':{'type':Sequelize['STRING'],'defaultValue':_0xee6b('0x10'),'set':function(_0xa5573f){this['setDataValue']('transport',_0xa5573f?_0xa5573f['join'](','):null);},'get':function(){return this['getDataValue']('transport')?this['getDataValue'](_0xee6b('0x11'))[_0xee6b('0x12')](','):null;},'comment':_0xee6b('0x13')},'dtmfmode':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x14'),_0xee6b('0x15'),'shortinfo','inband','auto'),'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM'](_0xee6b('0x16'),'no',_0xee6b('0x17'),_0xee6b('0x18'),'outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xee6b('0x2')]},'directmediadeny':{'type':Sequelize[_0xee6b('0x2')]},'nat':{'type':Sequelize[_0xee6b('0x2')],'defaultValue':'force_rport,comedia','set':function(_0x35ef2f){this[_0xee6b('0x19')]('nat',_0x35ef2f?_0x35ef2f[_0xee6b('0x1a')](','):null);},'get':function(){return this[_0xee6b('0x1b')](_0xee6b('0x1c'))?this['getDataValue']('nat')['split'](','):null;},'comment':_0xee6b('0x1d')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0xee6b('0x2')]},'pickupgroup':{'type':Sequelize[_0xee6b('0x2')]},'namedpickupgroup':{'type':Sequelize[_0xee6b('0x2')]},'language':{'type':Sequelize[_0xee6b('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xee6b('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xee6b('0x2')],'defaultValue':_0xee6b('0x1e')},'allow':{'type':Sequelize[_0xee6b('0x2')],'allowNull':![],'defaultValue':_0xee6b('0x1f'),'set':function(_0x8cd21){this[_0xee6b('0x19')]('allow',_0x8cd21?_0x8cd21[_0xee6b('0x1a')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0xee6b('0x1b')]('allow')?this['getDataValue'](_0xee6b('0x20'))[_0xee6b('0x12')](';'):null;},'comment':_0xee6b('0x21')},'autoframing':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no')},'insecure':{'type':Sequelize[_0xee6b('0x2')],'defaultValue':_0xee6b('0x22'),'set':function(_0x4be881){this[_0xee6b('0x19')]('insecure',_0x4be881?_0x4be881[_0xee6b('0x1a')](','):null);},'get':function(){return this[_0xee6b('0x1b')](_0xee6b('0x23'))?this[_0xee6b('0x1b')]('insecure')['split'](','):null;},'comment':_0xee6b('0x24')},'trustrpid':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xee6b('0x16'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0xee6b('0x16'),'no',_0xee6b('0x25'))},'promiscredir':{'type':Sequelize['ENUM'](_0xee6b('0x16'),'no')},'useclientcode':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no')},'accountcode':{'type':Sequelize[_0xee6b('0x26')](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xee6b('0x2')],'defaultValue':_0xee6b('0x27')},'amaflags':{'type':Sequelize[_0xee6b('0x2')]},'callcounter':{'type':Sequelize[_0xee6b('0x3')]('yes','no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0xee6b('0x26')](0xb)},'allowoverlap':{'type':Sequelize[_0xee6b('0x3')]('yes','no')},'allowsubscribe':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no')},'allowtransfer':{'type':Sequelize[_0xee6b('0x3')]('yes','no')},'ignoresdpversion':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no')},'subscribecontext':{'type':Sequelize[_0xee6b('0x2')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize['ENUM'](_0xee6b('0x16'),'no',_0xee6b('0x28')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xee6b('0x26')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xee6b('0x3')]('yes','no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize[_0xee6b('0x3')]('accept',_0xee6b('0x29'),_0xee6b('0x2a'))},'session_expires':{'type':Sequelize[_0xee6b('0x26')](0xb)},'session_minse':{'type':Sequelize[_0xee6b('0x26')](0xb)},'session_refresher':{'type':Sequelize[_0xee6b('0x3')]('uac',_0xee6b('0x2b')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xee6b('0x2')]},'regexten':{'type':Sequelize[_0xee6b('0x2')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0xee6b('0x2')]},'port':{'type':Sequelize[_0xee6b('0x26')](0x5)},'qualify':{'type':Sequelize[_0xee6b('0x3')]('yes','no'),'defaultValue':_0xee6b('0x16')},'keepalive':{'type':Sequelize[_0xee6b('0x26')](0xb)},'defaultip':{'type':Sequelize[_0xee6b('0x2')]},'defaultuser':{'type':Sequelize[_0xee6b('0x2')]},'rtptimeout':{'type':Sequelize[_0xee6b('0x26')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xee6b('0x26')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xee6b('0x26')](0xb)},'sendrpid':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xee6b('0x2')]},'callbackextension':{'type':Sequelize[_0xee6b('0x2')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0xee6b('0x26')](0xb)},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb)},'contactpermit':{'type':Sequelize[_0xee6b('0x2')]},'contactdeny':{'type':Sequelize[_0xee6b('0x2')]},'contactacl':{'type':Sequelize[_0xee6b('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0xee6b('0x2')]},'use_q850_reason':{'type':Sequelize[_0xee6b('0x2')]},'maxforwards':{'type':Sequelize[_0xee6b('0x26')](0xb)},'encryption':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no')},'force_avp':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no')},'icesupport':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no')},'dtlsenable':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no')},'dtlsverify':{'type':Sequelize['ENUM']('yes','no','fingerprint',_0xee6b('0x2c'))},'dtlsrekey':{'type':Sequelize[_0xee6b('0x26')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize[_0xee6b('0x2')]},'dtlscipher':{'type':Sequelize[_0xee6b('0x2')]},'dtlscafile':{'type':Sequelize[_0xee6b('0x2')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x2d'),_0xee6b('0x2e'),_0xee6b('0x2f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xee6b('0x2')]},'usereqphone':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0xee6b('0x2')]},'call_limit':{'type':Sequelize[_0xee6b('0x26')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no')},'subscribemwi':{'type':Sequelize[_0xee6b('0x3')](_0xee6b('0x16'),'no')},'vmexten':{'type':Sequelize[_0xee6b('0x2')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize[_0xee6b('0x2')]},'parkinglot':{'type':Sequelize[_0xee6b('0x2')]},'description':{'type':Sequelize[_0xee6b('0x2')]},'host':{'type':Sequelize['STRING'],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0xee6b('0x3')]('yes','no','nonat',_0xee6b('0x18'),_0xee6b('0x30')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xee6b('0x2')]},'otherFields':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xee6b('0x31')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xee6b('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 0110e47..a70794e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','create','readFileSync','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','mustache','util','path','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Trunk,\x20%s,\x20%s','request\x20sent','result','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','destroy','Trunks','UserProfileResource','stack','name','send','index','Trunk','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','include','findAll','rows','catch','show','params','length','find','includeAll','get'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x4b84,0x1cc));var _0x44b8=function(_0xbbfe59,_0x46067f){_0xbbfe59=_0xbbfe59-0x0;var _0x28a2a4=_0x4b84[_0xbbfe59];return _0x28a2a4;};'use strict';var emlformat=require(_0x44b8('0x0'));var rimraf=require(_0x44b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x44b8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x44b8('0x3'));var util=require(_0x44b8('0x4'));var path=require(_0x44b8('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x44b8('0x6'));var _=require('lodash');var squel=require(_0x44b8('0x7'));var crypto=require('crypto');var jsforce=require(_0x44b8('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x44b8('0x9'));var Papa=require(_0x44b8('0xa'));var Redis=require(_0x44b8('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x44b8('0xc'));var as=require(_0x44b8('0xd'));var hardwareService=require(_0x44b8('0xe'));var logger=require(_0x44b8('0xf'))(_0x44b8('0x10'));var utils=require(_0x44b8('0x11'));var config=require(_0x44b8('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x44b8('0x13'))['db'];var jayson=require(_0x44b8('0x14'));var client=jayson['client'][_0x44b8('0x15')]({'port':0x232a});function respondWithRpcPromise(_0x490bc6,_0x833ea3,_0x18d642,_0x4df670){return new BPromise(function(_0x63e8f6,_0x4be54c){var _0x54fa95=_0x4df670||client;return _0x54fa95[_0x44b8('0x16')](_0x490bc6,_0x18d642)[_0x44b8('0x17')](function(_0x1722da){logger[_0x44b8('0x18')]('Trunk,\x20%s,\x20%s',_0x833ea3,'request\x20sent');logger['debug'](_0x44b8('0x19'),_0x833ea3,'request\x20sent',JSON[_0x44b8('0x1a')](_0x1722da));if(_0x1722da[_0x44b8('0x1b')]){if(_0x1722da['error'][_0x44b8('0x1c')]===0x1f4){logger[_0x44b8('0x1b')]('Trunk,\x20%s,\x20%s',_0x833ea3,_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);return _0x4be54c(_0x1722da['error'][_0x44b8('0x1d')]);}logger[_0x44b8('0x1b')](_0x44b8('0x1e'),_0x833ea3,_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);return _0x63e8f6(_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);}else{logger[_0x44b8('0x18')](_0x44b8('0x1e'),_0x833ea3,_0x44b8('0x1f'));_0x63e8f6(_0x1722da[_0x44b8('0x20')][_0x44b8('0x1d')]);}})['catch'](function(_0x56549a){logger[_0x44b8('0x1b')](_0x44b8('0x1e'),_0x833ea3,_0x56549a);_0x4be54c(_0x56549a);});});}function respondWithStatusCode(_0x1418db,_0x305a5c){_0x305a5c=_0x305a5c||0xcc;return function(_0x51a34a){if(_0x51a34a){return _0x1418db[_0x44b8('0x21')](_0x305a5c);}return _0x1418db['status'](_0x305a5c)[_0x44b8('0x22')]();};}function respondWithResult(_0x228c81,_0x25a0c1){_0x25a0c1=_0x25a0c1||0xc8;return function(_0x47689e){if(_0x47689e){return _0x228c81[_0x44b8('0x23')](_0x25a0c1)['json'](_0x47689e);}};}function respondWithFilteredResult(_0x474f01,_0x502acf){return function(_0x41d673){if(_0x41d673){var _0x350482=typeof _0x502acf['offset']===_0x44b8('0x24')&&typeof _0x502acf[_0x44b8('0x25')]===_0x44b8('0x24');var _0x59c1bf=_0x41d673[_0x44b8('0x26')];var _0x242342=_0x350482?0x0:_0x502acf['offset'];var _0x2e0174=_0x350482?_0x41d673['count']:_0x502acf[_0x44b8('0x27')]+_0x502acf['limit'];var _0x559f0b;if(_0x2e0174>=_0x59c1bf){_0x2e0174=_0x59c1bf;_0x559f0b=0xc8;}else{_0x559f0b=0xce;}_0x474f01['status'](_0x559f0b);return _0x474f01[_0x44b8('0x28')](_0x44b8('0x29'),_0x242342+'-'+_0x2e0174+'/'+_0x59c1bf)[_0x44b8('0x2a')](_0x41d673);}return null;};}function patchUpdates(_0x1bd1be){return function(_0x38cd17){try{jsonpatch[_0x44b8('0x2b')](_0x38cd17,_0x1bd1be,!![]);}catch(_0x2cf205){return BPromise[_0x44b8('0x2c')](_0x2cf205);}return _0x38cd17[_0x44b8('0x2d')]();};}function saveUpdates(_0x28f918,_0x5e1129){return function(_0x417d81){if(_0x417d81){return _0x417d81[_0x44b8('0x2e')](_0x28f918)['then'](function(_0x261ff2){return _0x261ff2;});}return null;};}function removeEntity(_0x538db7,_0x212983){return function(_0x1652cb){if(_0x1652cb){return _0x1652cb[_0x44b8('0x2f')]()[_0x44b8('0x17')](function(){var _0x1b63a7=_0x1652cb['get']({'plain':!![]});var _0x16b706=_0x44b8('0x30');return db[_0x44b8('0x31')][_0x44b8('0x2f')]({'where':{'type':_0x16b706,'resourceId':_0x1b63a7['id']}})[_0x44b8('0x17')](function(){return _0x1652cb;});})['then'](function(){_0x538db7[_0x44b8('0x23')](0xcc)[_0x44b8('0x22')]();});}};}function handleEntityNotFound(_0x1a30fc,_0x3e93af){return function(_0x140a79){if(!_0x140a79){_0x1a30fc[_0x44b8('0x21')](0x194);}return _0x140a79;};}function handleError(_0x2e8b88,_0x14a9d7){_0x14a9d7=_0x14a9d7||0x1f4;return function(_0x28c10d){logger[_0x44b8('0x1b')](_0x28c10d[_0x44b8('0x32')]);if(_0x28c10d[_0x44b8('0x33')]){delete _0x28c10d[_0x44b8('0x33')];}_0x2e8b88[_0x44b8('0x23')](_0x14a9d7)[_0x44b8('0x34')](_0x28c10d);};}exports[_0x44b8('0x35')]=function(_0x323c50,_0xeff999){var _0x28faa9={},_0x3984f8={},_0x2c02d6={'count':0x0,'rows':[]};var _0x282345=_['map'](db[_0x44b8('0x36')][_0x44b8('0x37')],function(_0x4fcfa0){return{'name':_0x4fcfa0[_0x44b8('0x38')],'type':_0x4fcfa0[_0x44b8('0x39')][_0x44b8('0x3a')]};});_0x3984f8[_0x44b8('0x3b')]=_['map'](_0x282345,_0x44b8('0x33'));_0x3984f8[_0x44b8('0x3c')]=_[_0x44b8('0x3d')](_0x323c50[_0x44b8('0x3c')]);_0x3984f8[_0x44b8('0x3e')]=_[_0x44b8('0x3f')](_0x3984f8[_0x44b8('0x3b')],_0x3984f8[_0x44b8('0x3c')]);_0x28faa9[_0x44b8('0x40')]=_[_0x44b8('0x3f')](_0x3984f8[_0x44b8('0x3b')],qs[_0x44b8('0x41')](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x41')]));_0x28faa9[_0x44b8('0x40')]=_0x28faa9[_0x44b8('0x40')]['length']?_0x28faa9[_0x44b8('0x40')]:_0x3984f8[_0x44b8('0x3b')];if(!_0x323c50[_0x44b8('0x3c')]['hasOwnProperty'](_0x44b8('0x42'))){_0x28faa9[_0x44b8('0x25')]=qs[_0x44b8('0x25')](_0x323c50['query'][_0x44b8('0x25')]);_0x28faa9[_0x44b8('0x27')]=qs[_0x44b8('0x27')](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x27')]);}_0x28faa9['order']=qs['sort'](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x43')]);_0x28faa9[_0x44b8('0x44')]=qs[_0x44b8('0x3e')](_[_0x44b8('0x45')](_0x323c50[_0x44b8('0x3c')],_0x3984f8[_0x44b8('0x3e')]),_0x282345);if(_0x323c50[_0x44b8('0x3c')][_0x44b8('0x46')]){_0x28faa9[_0x44b8('0x44')]=_[_0x44b8('0x47')](_0x28faa9[_0x44b8('0x44')],{'$or':_[_0x44b8('0x48')](_0x282345,function(_0x1236c7){if(_0x1236c7[_0x44b8('0x39')]!==_0x44b8('0x49')){var _0xce06dc={};_0xce06dc[_0x1236c7[_0x44b8('0x33')]]={'$like':'%'+_0x323c50[_0x44b8('0x3c')]['filter']+'%'};return _0xce06dc;}})});}_0x28faa9=_['merge']({},_0x28faa9,_0x323c50[_0x44b8('0x4a')]);var _0x1df74b={'where':_0x28faa9[_0x44b8('0x44')]};return db[_0x44b8('0x36')][_0x44b8('0x26')](_0x1df74b)[_0x44b8('0x17')](function(_0x411ed6){_0x2c02d6['count']=_0x411ed6;if(_0x323c50[_0x44b8('0x3c')]['includeAll']){_0x28faa9[_0x44b8('0x4b')]=[{'all':!![]}];}return db[_0x44b8('0x36')][_0x44b8('0x4c')](_0x28faa9);})[_0x44b8('0x17')](function(_0x103d57){_0x2c02d6[_0x44b8('0x4d')]=_0x103d57;return _0x2c02d6;})['then'](respondWithFilteredResult(_0xeff999,_0x28faa9))[_0x44b8('0x4e')](handleError(_0xeff999,null));};exports[_0x44b8('0x4f')]=function(_0x10602c,_0x25d266){var _0x4ccc77={'raw':![],'where':{'id':_0x10602c[_0x44b8('0x50')]['id']}},_0x4e4ed1={};_0x4e4ed1[_0x44b8('0x3b')]=_[_0x44b8('0x3d')](db[_0x44b8('0x36')][_0x44b8('0x37')]);_0x4e4ed1['query']=_[_0x44b8('0x3d')](_0x10602c[_0x44b8('0x3c')]);_0x4e4ed1[_0x44b8('0x3e')]=_[_0x44b8('0x3f')](_0x4e4ed1[_0x44b8('0x3b')],_0x4e4ed1['query']);_0x4ccc77['attributes']=_[_0x44b8('0x3f')](_0x4e4ed1['model'],qs[_0x44b8('0x41')](_0x10602c['query'][_0x44b8('0x41')]));_0x4ccc77[_0x44b8('0x40')]=_0x4ccc77[_0x44b8('0x40')][_0x44b8('0x51')]?_0x4ccc77[_0x44b8('0x40')]:_0x4e4ed1[_0x44b8('0x3b')];if(_0x10602c[_0x44b8('0x3c')]['includeAll']){_0x4ccc77[_0x44b8('0x4b')]=[{'all':!![]}];}_0x4ccc77=_[_0x44b8('0x47')]({},_0x4ccc77,_0x10602c[_0x44b8('0x4a')]);return db['Trunk'][_0x44b8('0x52')](_0x4ccc77)[_0x44b8('0x17')](handleEntityNotFound(_0x25d266,null))[_0x44b8('0x17')](respondWithResult(_0x25d266,null))[_0x44b8('0x4e')](handleError(_0x25d266,null));};exports['clone']=function(_0x399d6b,_0x308f7b){var _0x4a6e55={'where':{'id':_0x399d6b[_0x44b8('0x50')]['id']}},_0x3de425={};_0x3de425[_0x44b8('0x3b')]=_[_0x44b8('0x3d')](db[_0x44b8('0x36')]['rawAttributes']);_0x4a6e55['attributes']=_[_0x44b8('0x3f')](_0x3de425[_0x44b8('0x3b')],qs[_0x44b8('0x41')](_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x41')]));_0x4a6e55[_0x44b8('0x40')]=_0x4a6e55[_0x44b8('0x40')][_0x44b8('0x51')]?_0x4a6e55[_0x44b8('0x40')]:_0x3de425[_0x44b8('0x3b')];if(_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x53')]){_0x4a6e55['include']=[{'all':!![]}];}_0x4a6e55=_[_0x44b8('0x47')]({},_0x4a6e55,_0x399d6b[_0x44b8('0x4a')]);return db[_0x44b8('0x36')][_0x44b8('0x52')](_0x4a6e55)[_0x44b8('0x17')](handleEntityNotFound(_0x308f7b,null))[_0x44b8('0x17')](function(_0x426a6a){if(_0x426a6a){var _0x172ff3=_0x426a6a[_0x44b8('0x54')]({'plain':!![]});_0x172ff3=qs[_0x44b8('0x55')](_0x172ff3,['id',_0x44b8('0x56'),_0x44b8('0x57')]);_0x399d6b[_0x44b8('0x58')]=_[_0x44b8('0x55')](_0x399d6b[_0x44b8('0x58')],['id',_0x44b8('0x56'),_0x44b8('0x57')]);return db[_0x44b8('0x36')]['create'](_[_0x44b8('0x47')](_0x172ff3,_0x399d6b[_0x44b8('0x58')]),{'include':_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x53')]?[{'all':!![]}]:undefined})[_0x44b8('0x17')](function(_0x29ed5d){var _0x2ecf65=_0x399d6b['user'][_0x44b8('0x54')]({'plain':!![]});if(!_0x2ecf65)throw new Error(_0x44b8('0x59'));if(_0x2ecf65['role']===_0x44b8('0x5a')){var _0x3354bd=_0x29ed5d['get']({'plain':!![]});var _0x37e42e=_0x44b8('0x30');return db[_0x44b8('0x5b')]['find']({'where':{'name':_0x37e42e,'userProfileId':_0x2ecf65[_0x44b8('0x5c')]},'raw':!![]})['then'](function(_0x36cdd8){if(_0x36cdd8&&_0x36cdd8['autoAssociation']===0x0){return db[_0x44b8('0x31')][_0x44b8('0x5d')]({'name':_0x3354bd[_0x44b8('0x33')],'resourceId':_0x3354bd['id'],'type':_0x36cdd8[_0x44b8('0x33')],'sectionId':_0x36cdd8['id']},{})[_0x44b8('0x17')](function(){return _0x29ed5d;});}else{return _0x29ed5d;}})[_0x44b8('0x4e')](function(_0x4c7edd){logger[_0x44b8('0x1b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4c7edd);throw _0x4c7edd;});}return _0x29ed5d;});}})[_0x44b8('0x17')](respondWithResult(_0x308f7b,0xc9))[_0x44b8('0x4e')](handleError(_0x308f7b,null));};exports['create']=function(_0x3f9438,_0x1ee26b,_0x1cf31f){var _0x30d60f;return db[_0x44b8('0x36')][_0x44b8('0x5d')](_0x3f9438[_0x44b8('0x58')],{'raw':!![]})[_0x44b8('0x17')](function(_0x3f9102){_0x30d60f=_0x3f9102;return db[_0x44b8('0x36')][_0x44b8('0x4c')]({'raw':!![]});})[_0x44b8('0x17')](function(_0x52381a){var _0xd20d0=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],_0x44b8('0x60')),_0x44b8('0x61'));var _0x5bff09=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config[_0x44b8('0x62')],_0x44b8('0x63')),_0x44b8('0x61'));var _0x59060b=ejs[_0x44b8('0x64')](_0xd20d0,{'trunks':_0x52381a||[]});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x59060b);if(_0x30d60f[_0x44b8('0x67')]){var _0x2e02d7=ejs[_0x44b8('0x64')](_0x5bff09,{'trunks':_0x52381a||[]});fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x2e02d7);}})['then'](function(){return respondWithRpcPromise(_0x44b8('0x69'),_0x44b8('0x5d'),{'module':_0x44b8('0x6a')});})[_0x44b8('0x17')](function(){var _0x5b26e8=_0x3f9438['user']['get']({'plain':!![]});if(!_0x5b26e8)throw new Error(_0x44b8('0x59'));if(_0x5b26e8[_0x44b8('0x6b')]===_0x44b8('0x5a')){var _0x46e20f=_0x30d60f[_0x44b8('0x54')]({'plain':!![]});return db['UserProfileSection'][_0x44b8('0x52')]({'where':{'name':'Trunks','userProfileId':_0x5b26e8[_0x44b8('0x5c')]},'raw':!![]})[_0x44b8('0x17')](function(_0xea2c3e){if(_0xea2c3e&&_0xea2c3e['autoAssociation']===0x0){return db['UserProfileResource'][_0x44b8('0x5d')]({'name':_0x46e20f[_0x44b8('0x33')],'resourceId':_0x46e20f['id'],'type':_0xea2c3e[_0x44b8('0x33')],'sectionId':_0xea2c3e['id']},{})['then'](function(){return _0x30d60f;});}else{return _0x30d60f;}})[_0x44b8('0x4e')](function(_0x36f217){logger[_0x44b8('0x1b')](_0x44b8('0x6c'),_0x36f217);throw _0x36f217;});}return _0x30d60f;})[_0x44b8('0x17')](respondWithResult(_0x1ee26b,0xc9))['catch'](handleError(_0x1ee26b,null));};exports[_0x44b8('0x2e')]=function(_0x1888f8,_0xbbdab9,_0x2a8ccc){var _0x220f1b;return db['Trunk'][_0x44b8('0x52')]({'where':{'id':_0x1888f8[_0x44b8('0x50')]['id']}})[_0x44b8('0x17')](handleEntityNotFound(_0xbbdab9,null))[_0x44b8('0x17')](saveUpdates(_0x1888f8[_0x44b8('0x58')],null))[_0x44b8('0x17')](function(_0x1c7ef2){if(_0x1c7ef2){_0x220f1b=_0x1c7ef2;return db['Trunk'][_0x44b8('0x4c')]({'raw':!![]});}})[_0x44b8('0x17')](function(_0x4c3fea){if(_0x4c3fea){var _0x3bb7d8=fs[_0x44b8('0x5e')](path['join'](config[_0x44b8('0x62')],'server/files/templates/trunk.ejs'),'utf8');var _0x31d3b6=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],'server/files/templates/registry.ejs'),'utf8');var _0x36334a=ejs[_0x44b8('0x64')](_0x3bb7d8,{'trunks':_0x4c3fea||[]});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x36334a);var _0x1a5621=ejs[_0x44b8('0x64')](_0x31d3b6,{'trunks':_0x4c3fea||[]});fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x1a5621);return respondWithRpcPromise('Reload',_0x44b8('0x2e'),{'module':'chan_sip.so'});}return null;})['then'](function(_0x55f4e4){if(_0x55f4e4){return _0x220f1b;}})[_0x44b8('0x17')](respondWithResult(_0xbbdab9,null))['catch'](handleError(_0xbbdab9,null));};exports[_0x44b8('0x2f')]=function(_0x1e37fd,_0x268e1e,_0x306793){var _0x3a9780;return db[_0x44b8('0x36')][_0x44b8('0x52')]({'where':{'id':_0x1e37fd[_0x44b8('0x50')]['id']}})['then'](handleEntityNotFound(_0x268e1e,null))[_0x44b8('0x17')](removeEntity(_0x268e1e,null))[_0x44b8('0x17')](function(){return db[_0x44b8('0x36')][_0x44b8('0x4c')]({'raw':!![]});})[_0x44b8('0x17')](function(_0xee44b3){var _0x10034d=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],'server/files/templates/trunk.ejs'),_0x44b8('0x61'));var _0x553aa9=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config[_0x44b8('0x62')],'server/files/templates/registry.ejs'),'utf8');var _0x4b22e7=ejs[_0x44b8('0x64')](_0x10034d,{'trunks':_0xee44b3});var _0x4860af=ejs[_0x44b8('0x64')](_0x553aa9,{'trunks':_0xee44b3});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x4b22e7);fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x4860af);return respondWithRpcPromise(_0x44b8('0x69'),_0x44b8('0x2f'),{'module':_0x44b8('0x6a')});})[_0x44b8('0x4e')](handleError(_0x268e1e,null));};
\ No newline at end of file
+var _0x55ca=['catch','status','json','offset','undefined','count','limit','Content-Range','apply','save','update','destroy','get','UserProfileResource','end','stack','name','send','Trunk','rawAttributes','type','model','map','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows','show','params','keys','length','options','find','clone','omit','updatedAt','body','createdAt','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Trunks','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','render','Reload','chan_sip.so','readFileSync','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x19612c,_0x527b10){var _0x3c35f0=function(_0x3e1f7){while(--_0x3e1f7){_0x19612c['push'](_0x19612c['shift']());}};_0x3c35f0(++_0x527b10);}(_0x55ca,0x126));var _0xa55c=function(_0x20b29c,_0xe22528){_0x20b29c=_0x20b29c-0x0;var _0x20d81b=_0x55ca[_0x20b29c];return _0x20d81b;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xa55c('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x576044,_0x5a3672,_0x59ea8d,_0x18ee85){return new BPromise(function(_0x3930e4,_0x462cd6){var _0x938bd6=_0x18ee85||client;return _0x938bd6[_0xa55c('0x19')](_0x576044,_0x59ea8d)[_0xa55c('0x1a')](function(_0x4e0b2f){logger[_0xa55c('0x1b')](_0xa55c('0x1c'),_0x5a3672,_0xa55c('0x1d'));logger[_0xa55c('0x1e')](_0xa55c('0x1f'),_0x5a3672,_0xa55c('0x1d'),JSON[_0xa55c('0x20')](_0x4e0b2f));if(_0x4e0b2f[_0xa55c('0x21')]){if(_0x4e0b2f[_0xa55c('0x21')]['code']===0x1f4){logger[_0xa55c('0x21')](_0xa55c('0x1c'),_0x5a3672,_0x4e0b2f[_0xa55c('0x21')][_0xa55c('0x22')]);return _0x462cd6(_0x4e0b2f[_0xa55c('0x21')][_0xa55c('0x22')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x5a3672,_0x4e0b2f[_0xa55c('0x21')][_0xa55c('0x22')]);return _0x3930e4(_0x4e0b2f[_0xa55c('0x21')]['message']);}else{logger[_0xa55c('0x1b')](_0xa55c('0x1c'),_0x5a3672,'request\x20sent');_0x3930e4(_0x4e0b2f[_0xa55c('0x23')][_0xa55c('0x22')]);}})[_0xa55c('0x24')](function(_0x1965f1){logger[_0xa55c('0x21')]('Trunk,\x20%s,\x20%s',_0x5a3672,_0x1965f1);_0x462cd6(_0x1965f1);});});}function respondWithStatusCode(_0x1fc828,_0x504c24){_0x504c24=_0x504c24||0xcc;return function(_0x5ba836){if(_0x5ba836){return _0x1fc828['sendStatus'](_0x504c24);}return _0x1fc828[_0xa55c('0x25')](_0x504c24)['end']();};}function respondWithResult(_0x3ecbe7,_0x190757){_0x190757=_0x190757||0xc8;return function(_0x3f64de){if(_0x3f64de){return _0x3ecbe7[_0xa55c('0x25')](_0x190757)[_0xa55c('0x26')](_0x3f64de);}};}function respondWithFilteredResult(_0x170ba4,_0x1da633){return function(_0x11e7f7){if(_0x11e7f7){var _0x192df2=typeof _0x1da633[_0xa55c('0x27')]===_0xa55c('0x28')&&typeof _0x1da633['limit']===_0xa55c('0x28');var _0x28814f=_0x11e7f7[_0xa55c('0x29')];var _0x906caa=_0x192df2?0x0:_0x1da633['offset'];var _0x1377b0=_0x192df2?_0x11e7f7[_0xa55c('0x29')]:_0x1da633[_0xa55c('0x27')]+_0x1da633[_0xa55c('0x2a')];var _0x45ee8d;if(_0x1377b0>=_0x28814f){_0x1377b0=_0x28814f;_0x45ee8d=0xc8;}else{_0x45ee8d=0xce;}_0x170ba4[_0xa55c('0x25')](_0x45ee8d);return _0x170ba4['set'](_0xa55c('0x2b'),_0x906caa+'-'+_0x1377b0+'/'+_0x28814f)['json'](_0x11e7f7);}return null;};}function patchUpdates(_0x35c9c2){return function(_0x1d730b){try{jsonpatch[_0xa55c('0x2c')](_0x1d730b,_0x35c9c2,!![]);}catch(_0x223813){return BPromise['reject'](_0x223813);}return _0x1d730b[_0xa55c('0x2d')]();};}function saveUpdates(_0x2096ae,_0x331e58){return function(_0x20da31){if(_0x20da31){return _0x20da31[_0xa55c('0x2e')](_0x2096ae)[_0xa55c('0x1a')](function(_0x29748a){return _0x29748a;});}return null;};}function removeEntity(_0x24d44d,_0x2808e9){return function(_0xcbaf2e){if(_0xcbaf2e){return _0xcbaf2e[_0xa55c('0x2f')]()['then'](function(){var _0x54ca97=_0xcbaf2e[_0xa55c('0x30')]({'plain':!![]});var _0x19733e='Trunks';return db[_0xa55c('0x31')][_0xa55c('0x2f')]({'where':{'type':_0x19733e,'resourceId':_0x54ca97['id']}})[_0xa55c('0x1a')](function(){return _0xcbaf2e;});})[_0xa55c('0x1a')](function(){_0x24d44d[_0xa55c('0x25')](0xcc)[_0xa55c('0x32')]();});}};}function handleEntityNotFound(_0x3ce1b3,_0x222d4b){return function(_0x3959e3){if(!_0x3959e3){_0x3ce1b3['sendStatus'](0x194);}return _0x3959e3;};}function handleError(_0x5f3e99,_0x4b23d3){_0x4b23d3=_0x4b23d3||0x1f4;return function(_0x3fd75f){logger[_0xa55c('0x21')](_0x3fd75f[_0xa55c('0x33')]);if(_0x3fd75f['name']){delete _0x3fd75f[_0xa55c('0x34')];}_0x5f3e99['status'](_0x4b23d3)[_0xa55c('0x35')](_0x3fd75f);};}exports['index']=function(_0x18c6f1,_0x39267c){var _0x3c0ec1={},_0x4d3eb5={},_0x7c4a47={'count':0x0,'rows':[]};var _0x30f23b=_['map'](db[_0xa55c('0x36')][_0xa55c('0x37')],function(_0x4d9083){return{'name':_0x4d9083['fieldName'],'type':_0x4d9083[_0xa55c('0x38')]['key']};});_0x4d3eb5[_0xa55c('0x39')]=_[_0xa55c('0x3a')](_0x30f23b,'name');_0x4d3eb5['query']=_['keys'](_0x18c6f1['query']);_0x4d3eb5[_0xa55c('0x3b')]=_[_0xa55c('0x3c')](_0x4d3eb5[_0xa55c('0x39')],_0x4d3eb5[_0xa55c('0x3d')]);_0x3c0ec1[_0xa55c('0x3e')]=_['intersection'](_0x4d3eb5[_0xa55c('0x39')],qs[_0xa55c('0x3f')](_0x18c6f1[_0xa55c('0x3d')][_0xa55c('0x3f')]));_0x3c0ec1[_0xa55c('0x3e')]=_0x3c0ec1[_0xa55c('0x3e')]['length']?_0x3c0ec1[_0xa55c('0x3e')]:_0x4d3eb5['model'];if(!_0x18c6f1['query'][_0xa55c('0x40')](_0xa55c('0x41'))){_0x3c0ec1['limit']=qs[_0xa55c('0x2a')](_0x18c6f1['query']['limit']);_0x3c0ec1[_0xa55c('0x27')]=qs[_0xa55c('0x27')](_0x18c6f1[_0xa55c('0x3d')]['offset']);}_0x3c0ec1[_0xa55c('0x42')]=qs[_0xa55c('0x43')](_0x18c6f1['query'][_0xa55c('0x43')]);_0x3c0ec1['where']=qs[_0xa55c('0x3b')](_[_0xa55c('0x44')](_0x18c6f1['query'],_0x4d3eb5[_0xa55c('0x3b')]),_0x30f23b);if(_0x18c6f1[_0xa55c('0x3d')]['filter']){_0x3c0ec1[_0xa55c('0x45')]=_[_0xa55c('0x46')](_0x3c0ec1[_0xa55c('0x45')],{'$or':_['map'](_0x30f23b,function(_0x334f52){if(_0x334f52['type']!==_0xa55c('0x47')){var _0x3a8af4={};_0x3a8af4[_0x334f52[_0xa55c('0x34')]]={'$like':'%'+_0x18c6f1['query'][_0xa55c('0x48')]+'%'};return _0x3a8af4;}})});}_0x3c0ec1=_[_0xa55c('0x46')]({},_0x3c0ec1,_0x18c6f1['options']);var _0x3d19f5={'where':_0x3c0ec1[_0xa55c('0x45')]};return db['Trunk'][_0xa55c('0x29')](_0x3d19f5)[_0xa55c('0x1a')](function(_0x52f9a7){_0x7c4a47[_0xa55c('0x29')]=_0x52f9a7;if(_0x18c6f1[_0xa55c('0x3d')][_0xa55c('0x49')]){_0x3c0ec1[_0xa55c('0x4a')]=[{'all':!![]}];}return db['Trunk'][_0xa55c('0x4b')](_0x3c0ec1);})['then'](function(_0x2157d6){_0x7c4a47[_0xa55c('0x4c')]=_0x2157d6;return _0x7c4a47;})[_0xa55c('0x1a')](respondWithFilteredResult(_0x39267c,_0x3c0ec1))['catch'](handleError(_0x39267c,null));};exports[_0xa55c('0x4d')]=function(_0x250b00,_0x574fe9){var _0x5be06={'raw':![],'where':{'id':_0x250b00[_0xa55c('0x4e')]['id']}},_0x34de95={};_0x34de95[_0xa55c('0x39')]=_[_0xa55c('0x4f')](db[_0xa55c('0x36')][_0xa55c('0x37')]);_0x34de95[_0xa55c('0x3d')]=_[_0xa55c('0x4f')](_0x250b00[_0xa55c('0x3d')]);_0x34de95['filters']=_[_0xa55c('0x3c')](_0x34de95[_0xa55c('0x39')],_0x34de95[_0xa55c('0x3d')]);_0x5be06['attributes']=_[_0xa55c('0x3c')](_0x34de95[_0xa55c('0x39')],qs['fields'](_0x250b00[_0xa55c('0x3d')]['fields']));_0x5be06[_0xa55c('0x3e')]=_0x5be06[_0xa55c('0x3e')][_0xa55c('0x50')]?_0x5be06[_0xa55c('0x3e')]:_0x34de95[_0xa55c('0x39')];if(_0x250b00['query'][_0xa55c('0x49')]){_0x5be06[_0xa55c('0x4a')]=[{'all':!![]}];}_0x5be06=_['merge']({},_0x5be06,_0x250b00[_0xa55c('0x51')]);return db[_0xa55c('0x36')][_0xa55c('0x52')](_0x5be06)[_0xa55c('0x1a')](handleEntityNotFound(_0x574fe9,null))['then'](respondWithResult(_0x574fe9,null))['catch'](handleError(_0x574fe9,null));};exports[_0xa55c('0x53')]=function(_0x250dea,_0x3ca5b8){var _0x44ac57={'where':{'id':_0x250dea[_0xa55c('0x4e')]['id']}},_0x54cbde={};_0x54cbde['model']=_[_0xa55c('0x4f')](db[_0xa55c('0x36')][_0xa55c('0x37')]);_0x44ac57[_0xa55c('0x3e')]=_[_0xa55c('0x3c')](_0x54cbde['model'],qs[_0xa55c('0x3f')](_0x250dea['query'][_0xa55c('0x3f')]));_0x44ac57[_0xa55c('0x3e')]=_0x44ac57[_0xa55c('0x3e')][_0xa55c('0x50')]?_0x44ac57[_0xa55c('0x3e')]:_0x54cbde[_0xa55c('0x39')];if(_0x250dea[_0xa55c('0x3d')]['includeAll']){_0x44ac57[_0xa55c('0x4a')]=[{'all':!![]}];}_0x44ac57=_[_0xa55c('0x46')]({},_0x44ac57,_0x250dea[_0xa55c('0x51')]);return db[_0xa55c('0x36')][_0xa55c('0x52')](_0x44ac57)['then'](handleEntityNotFound(_0x3ca5b8,null))[_0xa55c('0x1a')](function(_0x3cd40d){if(_0x3cd40d){var _0x28bac4=_0x3cd40d[_0xa55c('0x30')]({'plain':!![]});_0x28bac4=qs[_0xa55c('0x54')](_0x28bac4,['id','createdAt',_0xa55c('0x55')]);_0x250dea[_0xa55c('0x56')]=_[_0xa55c('0x54')](_0x250dea[_0xa55c('0x56')],['id',_0xa55c('0x57'),'updatedAt']);return db[_0xa55c('0x36')]['create'](_[_0xa55c('0x46')](_0x28bac4,_0x250dea['body']),{'include':_0x250dea[_0xa55c('0x3d')]['includeAll']?[{'all':!![]}]:undefined})[_0xa55c('0x1a')](function(_0x1333da){var _0x21d6b4=_0x250dea[_0xa55c('0x58')][_0xa55c('0x30')]({'plain':!![]});if(!_0x21d6b4)throw new Error(_0xa55c('0x59'));if(_0x21d6b4[_0xa55c('0x5a')]===_0xa55c('0x58')){var _0x14b515=_0x1333da[_0xa55c('0x30')]({'plain':!![]});var _0x51c736=_0xa55c('0x5b');return db[_0xa55c('0x5c')]['find']({'where':{'name':_0x51c736,'userProfileId':_0x21d6b4[_0xa55c('0x5d')]},'raw':!![]})[_0xa55c('0x1a')](function(_0x3e3b4b){if(_0x3e3b4b&&_0x3e3b4b[_0xa55c('0x5e')]===0x0){return db[_0xa55c('0x31')][_0xa55c('0x5f')]({'name':_0x14b515[_0xa55c('0x34')],'resourceId':_0x14b515['id'],'type':_0x3e3b4b[_0xa55c('0x34')],'sectionId':_0x3e3b4b['id']},{})['then'](function(){return _0x1333da;});}else{return _0x1333da;}})[_0xa55c('0x24')](function(_0x475131){logger[_0xa55c('0x21')](_0xa55c('0x60'),_0x475131);throw _0x475131;});}return _0x1333da;});}})[_0xa55c('0x1a')](respondWithResult(_0x3ca5b8,0xc9))[_0xa55c('0x24')](handleError(_0x3ca5b8,null));};exports[_0xa55c('0x5f')]=function(_0x4249c1,_0x25d5a1,_0x4a08ca){var _0x347562;return db[_0xa55c('0x36')][_0xa55c('0x5f')](_0x4249c1[_0xa55c('0x56')],{'raw':!![]})[_0xa55c('0x1a')](function(_0x10e711){_0x347562=_0x10e711;return db[_0xa55c('0x36')][_0xa55c('0x4b')]({'raw':!![]});})[_0xa55c('0x1a')](function(_0x3178a6){var _0x3bbc4b=fs['readFileSync'](path[_0xa55c('0x61')](config['root'],_0xa55c('0x62')),_0xa55c('0x63'));var _0x129bb4=fs['readFileSync'](path['join'](config[_0xa55c('0x64')],_0xa55c('0x65')),_0xa55c('0x63'));var _0x42529f=ejs['render'](_0x3bbc4b,{'trunks':_0x3178a6||[]});fs[_0xa55c('0x66')](_0xa55c('0x67'),_0x42529f);if(_0x347562[_0xa55c('0x68')]){var _0x3a9910=ejs[_0xa55c('0x69')](_0x129bb4,{'trunks':_0x3178a6||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x3a9910);}})[_0xa55c('0x1a')](function(){return respondWithRpcPromise(_0xa55c('0x6a'),_0xa55c('0x5f'),{'module':_0xa55c('0x6b')});})[_0xa55c('0x1a')](function(){var _0x4b2032=_0x4249c1[_0xa55c('0x58')][_0xa55c('0x30')]({'plain':!![]});if(!_0x4b2032)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4b2032[_0xa55c('0x5a')]===_0xa55c('0x58')){var _0xa340fb=_0x347562['get']({'plain':!![]});return db[_0xa55c('0x5c')][_0xa55c('0x52')]({'where':{'name':_0xa55c('0x5b'),'userProfileId':_0x4b2032[_0xa55c('0x5d')]},'raw':!![]})[_0xa55c('0x1a')](function(_0x506f74){if(_0x506f74&&_0x506f74[_0xa55c('0x5e')]===0x0){return db[_0xa55c('0x31')]['create']({'name':_0xa340fb['name'],'resourceId':_0xa340fb['id'],'type':_0x506f74[_0xa55c('0x34')],'sectionId':_0x506f74['id']},{})['then'](function(){return _0x347562;});}else{return _0x347562;}})[_0xa55c('0x24')](function(_0x5ca0bc){logger[_0xa55c('0x21')](_0xa55c('0x60'),_0x5ca0bc);throw _0x5ca0bc;});}return _0x347562;})[_0xa55c('0x1a')](respondWithResult(_0x25d5a1,0xc9))[_0xa55c('0x24')](handleError(_0x25d5a1,null));};exports[_0xa55c('0x2e')]=function(_0xff7b1c,_0x16dfc6,_0x5d8551){var _0x463195;return db[_0xa55c('0x36')][_0xa55c('0x52')]({'where':{'id':_0xff7b1c[_0xa55c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x16dfc6,null))[_0xa55c('0x1a')](saveUpdates(_0xff7b1c[_0xa55c('0x56')],null))[_0xa55c('0x1a')](function(_0x2298ac){if(_0x2298ac){_0x463195=_0x2298ac;return db['Trunk']['findAll']({'raw':!![]});}})[_0xa55c('0x1a')](function(_0x428872){if(_0x428872){var _0x12e3a8=fs[_0xa55c('0x6c')](path['join'](config['root'],_0xa55c('0x62')),_0xa55c('0x63'));var _0xd33c9c=fs[_0xa55c('0x6c')](path[_0xa55c('0x61')](config[_0xa55c('0x64')],_0xa55c('0x65')),'utf8');var _0x19497b=ejs['render'](_0x12e3a8,{'trunks':_0x428872||[]});fs[_0xa55c('0x66')]('/etc/asterisk/sip_xcally_trunks.conf',_0x19497b);var _0x36ded7=ejs[_0xa55c('0x69')](_0xd33c9c,{'trunks':_0x428872||[]});fs[_0xa55c('0x66')](_0xa55c('0x6d'),_0x36ded7);return respondWithRpcPromise(_0xa55c('0x6a'),_0xa55c('0x2e'),{'module':_0xa55c('0x6b')});}return null;})[_0xa55c('0x1a')](function(_0x576a1b){if(_0x576a1b){return _0x463195;}})['then'](respondWithResult(_0x16dfc6,null))[_0xa55c('0x24')](handleError(_0x16dfc6,null));};exports[_0xa55c('0x2f')]=function(_0xc2ad5c,_0x256db0,_0x1622cb){var _0x137728;return db['Trunk'][_0xa55c('0x52')]({'where':{'id':_0xc2ad5c[_0xa55c('0x4e')]['id']}})[_0xa55c('0x1a')](handleEntityNotFound(_0x256db0,null))[_0xa55c('0x1a')](removeEntity(_0x256db0,null))[_0xa55c('0x1a')](function(){return db[_0xa55c('0x36')][_0xa55c('0x4b')]({'raw':!![]});})[_0xa55c('0x1a')](function(_0x58b670){var _0x25d09d=fs[_0xa55c('0x6c')](path[_0xa55c('0x61')](config[_0xa55c('0x64')],_0xa55c('0x62')),'utf8');var _0x2685d8=fs[_0xa55c('0x6c')](path['join'](config['root'],_0xa55c('0x65')),_0xa55c('0x63'));var _0x5c2229=ejs['render'](_0x25d09d,{'trunks':_0x58b670});var _0x579726=ejs['render'](_0x2685d8,{'trunks':_0x58b670});fs[_0xa55c('0x66')](_0xa55c('0x67'),_0x5c2229);fs[_0xa55c('0x66')](_0xa55c('0x6d'),_0x579726);return respondWithRpcPromise(_0xa55c('0x6a'),_0xa55c('0x2f'),{'module':'chan_sip.so'});})[_0xa55c('0x24')](handleError(_0x256db0,null));};
\ No newline at end of file
index b43680c..dbe55fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabb0=['request-promise','rimraf','../../config/environment','./trunk.attributes','exports','define','Trunk','util','api','bluebird'];(function(_0x1c52f0,_0x15582a){var _0x2f70b3=function(_0x2da9c9){while(--_0x2da9c9){_0x1c52f0['push'](_0x1c52f0['shift']());}};_0x2f70b3(++_0x15582a);}(_0xabb0,0x147));var _0x0abb=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xabb0[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var util=require(_0x0abb('0x0'));var logger=require('../../config/logger')(_0x0abb('0x1'));var moment=require('moment');var BPromise=require(_0x0abb('0x2'));var rp=require(_0x0abb('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0abb('0x4'));var config=require(_0x0abb('0x5'));var attributes=require(_0x0abb('0x6'));module[_0x0abb('0x7')]=function(_0x1e0eee,_0x8c002c){return _0x1e0eee[_0x0abb('0x8')](_0x0abb('0x9'),attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0baa=['lodash','util','../../config/logger','moment','bluebird','request-promise','./trunk.attributes','exports','define','tools_trunks'];(function(_0x577e0f,_0xe6f4fe){var _0x3c8636=function(_0x19e858){while(--_0x19e858){_0x577e0f['push'](_0x577e0f['shift']());}};_0x3c8636(++_0xe6f4fe);}(_0x0baa,0x118));var _0xa0ba=function(_0x3f9ee5,_0x32be0a){_0x3f9ee5=_0x3f9ee5-0x0;var _0x3756e6=_0x0baa[_0x3f9ee5];return _0x3756e6;};'use strict';var _=require(_0xa0ba('0x0'));var util=require(_0xa0ba('0x1'));var logger=require(_0xa0ba('0x2'))('api');var moment=require(_0xa0ba('0x3'));var BPromise=require(_0xa0ba('0x4'));var rp=require(_0xa0ba('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa0ba('0x6'));module[_0xa0ba('0x7')]=function(_0xa340b4,_0x1cc29e){return _0xa340b4[_0xa0ba('0x8')]('Trunk',attributes,{'tableName':_0xa0ba('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cd4d74b..6784da7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c49=['client','http','then','info','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','Trunk,\x20%s,\x20%s','message','request\x20sent','GetTrunk','Trunk','findAll','options','attributes','include','model','map','debug','find','raw','where','ShowTrunk','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xa01eea,_0x12e531){var _0x47c05e=function(_0x22a818){while(--_0x22a818){_0xa01eea['push'](_0xa01eea['shift']());}};_0x47c05e(++_0x12e531);}(_0x5c49,0xa4));var _0x95c4=function(_0x511bd1,_0x223e5b){_0x511bd1=_0x511bd1-0x0;var _0x4c48ec=_0x5c49[_0x511bd1];return _0x4c48ec;};'use strict';var _=require(_0x95c4('0x0'));var util=require('util');var moment=require(_0x95c4('0x1'));var BPromise=require(_0x95c4('0x2'));var rs=require(_0x95c4('0x3'));var fs=require('fs');var Redis=require(_0x95c4('0x4'));var db=require(_0x95c4('0x5'))['db'];var utils=require(_0x95c4('0x6'));var logger=require(_0x95c4('0x7'))(_0x95c4('0x8'));var config=require(_0x95c4('0x9'));var jayson=require(_0x95c4('0xa'));var client=jayson[_0x95c4('0xb')][_0x95c4('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xd2b644,_0x392a3d,_0x13fd2b){return new BPromise(function(_0x49ad02,_0xe56413){return client['request'](_0xd2b644,_0x13fd2b)[_0x95c4('0xd')](function(_0x340af6){logger[_0x95c4('0xe')]('Trunk,\x20%s,\x20%s',_0x392a3d,'request\x20sent');logger['debug'](_0x95c4('0xf'),_0x392a3d,'request\x20sent',JSON[_0x95c4('0x10')](_0x340af6));if(_0x340af6[_0x95c4('0x11')]){if(_0x340af6[_0x95c4('0x11')]['code']===0x1f4){logger[_0x95c4('0x11')](_0x95c4('0x12'),_0x392a3d,_0x340af6[_0x95c4('0x11')][_0x95c4('0x13')]);return _0xe56413(_0x340af6[_0x95c4('0x11')][_0x95c4('0x13')]);}logger[_0x95c4('0x11')](_0x95c4('0x12'),_0x392a3d,_0x340af6[_0x95c4('0x11')][_0x95c4('0x13')]);return _0x49ad02(_0x340af6[_0x95c4('0x11')][_0x95c4('0x13')]);}else{logger[_0x95c4('0xe')](_0x95c4('0x12'),_0x392a3d,_0x95c4('0x14'));_0x49ad02(_0x340af6['result'][_0x95c4('0x13')]);}})['catch'](function(_0xe9e736){logger[_0x95c4('0x11')](_0x95c4('0x12'),_0x392a3d,_0xe9e736);_0xe56413(_0xe9e736);});});}exports[_0x95c4('0x15')]=function(_0x52aae1){var _0x39db31=this;return new Promise(function(_0x206ffd,_0x328685){return db[_0x95c4('0x16')][_0x95c4('0x17')]({'raw':_0x52aae1['options']?_0x52aae1[_0x95c4('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x52aae1[_0x95c4('0x18')]?_0x52aae1[_0x95c4('0x18')]['where']||null:null,'attributes':_0x52aae1[_0x95c4('0x18')]?_0x52aae1['options'][_0x95c4('0x19')]||null:null,'limit':_0x52aae1[_0x95c4('0x18')]?_0x52aae1['options']['limit']||null:null,'include':_0x52aae1[_0x95c4('0x18')]?_0x52aae1[_0x95c4('0x18')]['include']?_['map'](_0x52aae1['options'][_0x95c4('0x1a')],function(_0x45edcb){return{'model':db[_0x45edcb[_0x95c4('0x1b')]],'as':_0x45edcb['as'],'attributes':_0x45edcb[_0x95c4('0x19')],'include':_0x45edcb[_0x95c4('0x1a')]?_[_0x95c4('0x1c')](_0x45edcb[_0x95c4('0x1a')],function(_0xf4138c){return{'model':db[_0xf4138c[_0x95c4('0x1b')]],'as':_0xf4138c['as'],'attributes':_0xf4138c['attributes'],'include':_0xf4138c[_0x95c4('0x1a')]?_[_0x95c4('0x1c')](_0xf4138c[_0x95c4('0x1a')],function(_0xd4fba5){return{'model':db[_0xd4fba5[_0x95c4('0x1b')]],'as':_0xd4fba5['as'],'attributes':_0xd4fba5[_0x95c4('0x19')]};}):[]};}):[]};}):[]:[]})[_0x95c4('0xd')](function(_0x4fd126){logger['info']('GetTrunk',_0x52aae1);logger[_0x95c4('0x1d')]('GetTrunk',_0x52aae1,JSON[_0x95c4('0x10')](_0x4fd126));_0x206ffd(_0x4fd126);})['catch'](function(_0x333647){logger[_0x95c4('0x11')]('GetTrunk',_0x333647[_0x95c4('0x13')],_0x52aae1);_0x328685(_0x39db31['error'](0x1f4,_0x333647[_0x95c4('0x13')]));});});};exports['ShowTrunk']=function(_0x15e294){var _0x5117b9=this;return new Promise(function(_0x3b221b,_0x587d56){return db[_0x95c4('0x16')][_0x95c4('0x1e')]({'raw':_0x15e294[_0x95c4('0x18')]?_0x15e294[_0x95c4('0x18')][_0x95c4('0x1f')]===undefined?!![]:![]:!![],'where':_0x15e294['options']?_0x15e294[_0x95c4('0x18')][_0x95c4('0x20')]||null:null,'attributes':_0x15e294['options']?_0x15e294[_0x95c4('0x18')]['attributes']||null:null,'include':_0x15e294[_0x95c4('0x18')]?_0x15e294[_0x95c4('0x18')][_0x95c4('0x1a')]?_[_0x95c4('0x1c')](_0x15e294['options'][_0x95c4('0x1a')],function(_0x182788){return{'model':db[_0x182788[_0x95c4('0x1b')]],'as':_0x182788['as'],'attributes':_0x182788['attributes'],'include':_0x182788[_0x95c4('0x1a')]?_['map'](_0x182788[_0x95c4('0x1a')],function(_0x181b61){return{'model':db[_0x181b61[_0x95c4('0x1b')]],'as':_0x181b61['as'],'attributes':_0x181b61[_0x95c4('0x19')],'include':_0x181b61[_0x95c4('0x1a')]?_[_0x95c4('0x1c')](_0x181b61[_0x95c4('0x1a')],function(_0x42abf8){return{'model':db[_0x42abf8['model']],'as':_0x42abf8['as'],'attributes':_0x42abf8[_0x95c4('0x19')]};}):[]};}):[]};}):[]:[]})[_0x95c4('0xd')](function(_0x161f20){logger['info']('ShowTrunk',_0x15e294);logger[_0x95c4('0x1d')](_0x95c4('0x21'),_0x15e294,JSON[_0x95c4('0x10')](_0x161f20));_0x3b221b(_0x161f20);})[_0x95c4('0x22')](function(_0x279848){logger[_0x95c4('0x11')](_0x95c4('0x21'),_0x279848[_0x95c4('0x13')],_0x15e294);_0x587d56(_0x5117b9['error'](0x1f4,_0x279848[_0x95c4('0x13')]));});});};
\ No newline at end of file
+var _0x0f6c=['request\x20sent','stringify','error','code','message','result','GetTrunk','Trunk','findAll','options','where','attributes','limit','include','map','model','catch','ShowTrunk','find','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s'];(function(_0x571a17,_0x63fb3d){var _0x3ef337=function(_0x12096b){while(--_0x12096b){_0x571a17['push'](_0x571a17['shift']());}};_0x3ef337(++_0x63fb3d);}(_0x0f6c,0x108));var _0xc0f6=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x0f6c[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc0f6('0x0'));var BPromise=require(_0xc0f6('0x1'));var rs=require(_0xc0f6('0x2'));var fs=require('fs');var Redis=require(_0xc0f6('0x3'));var db=require(_0xc0f6('0x4'))['db'];var utils=require(_0xc0f6('0x5'));var logger=require(_0xc0f6('0x6'))(_0xc0f6('0x7'));var config=require(_0xc0f6('0x8'));var jayson=require(_0xc0f6('0x9'));var client=jayson['client'][_0xc0f6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b3202,_0x497ed6,_0x37a728){return new BPromise(function(_0x47758a,_0x2f4624){return client['request'](_0x1b3202,_0x37a728)[_0xc0f6('0xb')](function(_0x2ef539){logger[_0xc0f6('0xc')](_0xc0f6('0xd'),_0x497ed6,'request\x20sent');logger[_0xc0f6('0xe')](_0xc0f6('0xf'),_0x497ed6,_0xc0f6('0x10'),JSON[_0xc0f6('0x11')](_0x2ef539));if(_0x2ef539['error']){if(_0x2ef539[_0xc0f6('0x12')][_0xc0f6('0x13')]===0x1f4){logger[_0xc0f6('0x12')]('Trunk,\x20%s,\x20%s',_0x497ed6,_0x2ef539[_0xc0f6('0x12')][_0xc0f6('0x14')]);return _0x2f4624(_0x2ef539[_0xc0f6('0x12')][_0xc0f6('0x14')]);}logger['error'](_0xc0f6('0xd'),_0x497ed6,_0x2ef539[_0xc0f6('0x12')]['message']);return _0x47758a(_0x2ef539['error'][_0xc0f6('0x14')]);}else{logger[_0xc0f6('0xc')](_0xc0f6('0xd'),_0x497ed6,_0xc0f6('0x10'));_0x47758a(_0x2ef539[_0xc0f6('0x15')]['message']);}})['catch'](function(_0x2dd6a1){logger[_0xc0f6('0x12')](_0xc0f6('0xd'),_0x497ed6,_0x2dd6a1);_0x2f4624(_0x2dd6a1);});});}exports[_0xc0f6('0x16')]=function(_0x150110){var _0x26d053=this;return new Promise(function(_0x3c1fbf,_0x1140a8){return db[_0xc0f6('0x17')][_0xc0f6('0x18')]({'raw':_0x150110[_0xc0f6('0x19')]?_0x150110['options']['raw']===undefined?!![]:![]:!![],'where':_0x150110[_0xc0f6('0x19')]?_0x150110[_0xc0f6('0x19')][_0xc0f6('0x1a')]||null:null,'attributes':_0x150110[_0xc0f6('0x19')]?_0x150110[_0xc0f6('0x19')][_0xc0f6('0x1b')]||null:null,'limit':_0x150110[_0xc0f6('0x19')]?_0x150110[_0xc0f6('0x19')][_0xc0f6('0x1c')]||null:null,'include':_0x150110['options']?_0x150110['options'][_0xc0f6('0x1d')]?_[_0xc0f6('0x1e')](_0x150110[_0xc0f6('0x19')]['include'],function(_0x1a10c5){return{'model':db[_0x1a10c5[_0xc0f6('0x1f')]],'as':_0x1a10c5['as'],'attributes':_0x1a10c5['attributes'],'include':_0x1a10c5['include']?_[_0xc0f6('0x1e')](_0x1a10c5[_0xc0f6('0x1d')],function(_0x220ab5){return{'model':db[_0x220ab5[_0xc0f6('0x1f')]],'as':_0x220ab5['as'],'attributes':_0x220ab5[_0xc0f6('0x1b')],'include':_0x220ab5[_0xc0f6('0x1d')]?_[_0xc0f6('0x1e')](_0x220ab5[_0xc0f6('0x1d')],function(_0x236f4a){return{'model':db[_0x236f4a[_0xc0f6('0x1f')]],'as':_0x236f4a['as'],'attributes':_0x236f4a['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4008ac){logger['info'](_0xc0f6('0x16'),_0x150110);logger[_0xc0f6('0xe')]('GetTrunk',_0x150110,JSON[_0xc0f6('0x11')](_0x4008ac));_0x3c1fbf(_0x4008ac);})[_0xc0f6('0x20')](function(_0x1f8034){logger['error']('GetTrunk',_0x1f8034[_0xc0f6('0x14')],_0x150110);_0x1140a8(_0x26d053[_0xc0f6('0x12')](0x1f4,_0x1f8034[_0xc0f6('0x14')]));});});};exports[_0xc0f6('0x21')]=function(_0x3317db){var _0x43b94d=this;return new Promise(function(_0x2479d9,_0xdce5e3){return db[_0xc0f6('0x17')][_0xc0f6('0x22')]({'raw':_0x3317db[_0xc0f6('0x19')]?_0x3317db[_0xc0f6('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x3317db[_0xc0f6('0x19')]?_0x3317db['options'][_0xc0f6('0x1a')]||null:null,'attributes':_0x3317db['options']?_0x3317db[_0xc0f6('0x19')][_0xc0f6('0x1b')]||null:null,'include':_0x3317db[_0xc0f6('0x19')]?_0x3317db[_0xc0f6('0x19')][_0xc0f6('0x1d')]?_['map'](_0x3317db['options'][_0xc0f6('0x1d')],function(_0x269bae){return{'model':db[_0x269bae['model']],'as':_0x269bae['as'],'attributes':_0x269bae[_0xc0f6('0x1b')],'include':_0x269bae['include']?_['map'](_0x269bae[_0xc0f6('0x1d')],function(_0x56d4f6){return{'model':db[_0x56d4f6[_0xc0f6('0x1f')]],'as':_0x56d4f6['as'],'attributes':_0x56d4f6['attributes'],'include':_0x56d4f6[_0xc0f6('0x1d')]?_[_0xc0f6('0x1e')](_0x56d4f6[_0xc0f6('0x1d')],function(_0x44d75e){return{'model':db[_0x44d75e[_0xc0f6('0x1f')]],'as':_0x44d75e['as'],'attributes':_0x44d75e[_0xc0f6('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x127edc){logger[_0xc0f6('0xc')](_0xc0f6('0x21'),_0x3317db);logger['debug']('ShowTrunk',_0x3317db,JSON[_0xc0f6('0x11')](_0x127edc));_0x2479d9(_0x127edc);})[_0xc0f6('0x20')](function(_0x155a49){logger['error'](_0xc0f6('0x21'),_0x155a49[_0xc0f6('0x14')],_0x3317db);_0xdce5e3(_0x43b94d[_0xc0f6('0x12')](0x1f4,_0x155a49['message']));});});};
\ No newline at end of file
index 7cbafc0..f3bb3ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a3f=['server/files/images/','format','now','single','file','addAvatar','login','logout','/:id/pause','unpause','/:id/chat_interactions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','/:id/sms_accounts','addSmsAccounts','/:id/chat_websites','/:id/whatsapp_accounts','addWhatsappAccounts','/:id/square_projects','addSquareProjects','/:id/api_key','update','put','/:id/password','delete','removeQueues','destroy','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','exports','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','/whoami','whoami','getPresence','/:id','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues_rt','getVoiceQueuesRt','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','getSmsAccounts','getChatWebsites','getWhatsappAccounts','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','getApiKey','post','addContacts','/create_many','bulkCreate','/:id/queues','addQueues','join'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x9a3f,0x183));var _0xf9a3=function(_0x427640,_0xf715d3){_0x427640=_0x427640-0x0;var _0x4f11ac=_0x9a3f[_0x427640];return _0x4f11ac;};'use strict';var multer=require(_0xf9a3('0x0'));var util=require(_0xf9a3('0x1'));var path=require(_0xf9a3('0x2'));var timeout=require(_0xf9a3('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf9a3('0x4'));var interaction=require(_0xf9a3('0x5'));var config=require(_0xf9a3('0x6'));var controller=require(_0xf9a3('0x7'));router[_0xf9a3('0x8')]('/',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0xa')]);router[_0xf9a3('0x8')](_0xf9a3('0xb'),auth[_0xf9a3('0x9')](),controller['describe']);router[_0xf9a3('0x8')](_0xf9a3('0xc'),auth['isAuthenticated'](),controller[_0xf9a3('0xd')]);router[_0xf9a3('0x8')]('/presence',auth['isAuthenticated'](),controller[_0xf9a3('0xe')]);router['get'](_0xf9a3('0xf'),auth['isAuthenticated'](),controller['show']);router['get'](_0xf9a3('0x10'),controller[_0xf9a3('0x11')]);router['get'](_0xf9a3('0x12'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x13')]);router[_0xf9a3('0x8')](_0xf9a3('0x14'),auth['isAuthenticated'](),controller[_0xf9a3('0x15')]);router['get']('/:id/queues',auth[_0xf9a3('0x9')](),controller['getQueues']);router[_0xf9a3('0x8')](_0xf9a3('0x16'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x17')]);router[_0xf9a3('0x8')]('/:id/groups',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x18')]);router['get'](_0xf9a3('0x19'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x1a')]);router[_0xf9a3('0x8')](_0xf9a3('0x1b'),auth['isAuthenticated'](),controller[_0xf9a3('0x1c')]);router['get'](_0xf9a3('0x1d'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x1e')]);router[_0xf9a3('0x8')](_0xf9a3('0x1f'),auth['isAuthenticated'](),controller[_0xf9a3('0x20')]);router[_0xf9a3('0x8')](_0xf9a3('0x21'),auth[_0xf9a3('0x9')](),controller['getMailInteractions']);router[_0xf9a3('0x8')](_0xf9a3('0x22'),auth['isAuthenticated'](),controller[_0xf9a3('0x23')]);router[_0xf9a3('0x8')](_0xf9a3('0x24'),auth[_0xf9a3('0x9')](),controller['getFaxInteractions']);router[_0xf9a3('0x8')](_0xf9a3('0x25'),auth['isAuthenticated'](),controller[_0xf9a3('0x26')]);router[_0xf9a3('0x8')](_0xf9a3('0x27'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x28')]);router[_0xf9a3('0x8')](_0xf9a3('0x29'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x2a')]);router['get']('/:id/agents',auth['isAuthenticated'](),controller[_0xf9a3('0x2b')]);router[_0xf9a3('0x8')](_0xf9a3('0x2c'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x2d')]);router[_0xf9a3('0x8')](_0xf9a3('0x2e'),auth['isAuthenticated'](),controller[_0xf9a3('0x2f')]);router['get'](_0xf9a3('0x30'),auth['isAuthenticated'](),controller['getMailAccounts']);router[_0xf9a3('0x8')](_0xf9a3('0x31'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x32')]);router['get']('/:id/sms_accounts',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x33')]);router[_0xf9a3('0x8')]('/:id/chat_websites',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x34')]);router[_0xf9a3('0x8')]('/:id/whatsapp_accounts',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x35')]);router[_0xf9a3('0x8')]('/:id/square_projects',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x36')]);router[_0xf9a3('0x8')](_0xf9a3('0x37'),auth['isAuthenticated'](),controller[_0xf9a3('0x38')]);router[_0xf9a3('0x8')]('/:id/api_key',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x39')]);router[_0xf9a3('0x3a')](_0xf9a3('0x14'),auth['isAuthenticated'](),controller[_0xf9a3('0x3b')]);router[_0xf9a3('0x3a')]('/',auth[_0xf9a3('0x9')](),controller['create']);router[_0xf9a3('0x3a')](_0xf9a3('0x3c'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x3d')]);router[_0xf9a3('0x3a')](_0xf9a3('0x3e'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x3f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xf80807,_0x5c3131,_0x3d433b){_0x3d433b(null,path[_0xf9a3('0x40')](config['root'],_0xf9a3('0x41')));},'filename':function(_0x3df411,_0x33955c,_0x25670a){_0x25670a(null,util[_0xf9a3('0x42')]('%s-%s',Date[_0xf9a3('0x43')](),_0x33955c['originalname']));}})});router[_0xf9a3('0x3a')]('/:id/avatar',upload[_0xf9a3('0x44')](_0xf9a3('0x45')),controller[_0xf9a3('0x46')]);router['post']('/:id/login',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x47')]);router[_0xf9a3('0x3a')]('/:id/logout',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x48')]);router[_0xf9a3('0x3a')](_0xf9a3('0x49'),auth[_0xf9a3('0x9')](),controller['pause']);router[_0xf9a3('0x3a')]('/:id/unpause',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x4a')]);router[_0xf9a3('0x3a')](_0xf9a3('0x27'),auth[_0xf9a3('0x9')](),controller['addTeams']);router[_0xf9a3('0x3a')](_0xf9a3('0x4b'),auth['isAuthenticated'](),controller['addChatInteractions']);router['post'](_0xf9a3('0x4c'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x4d')]);router[_0xf9a3('0x3a')](_0xf9a3('0x4e'),auth[_0xf9a3('0x9')](),controller['addFaxInteractions']);router[_0xf9a3('0x3a')](_0xf9a3('0x4f'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x50')]);router[_0xf9a3('0x3a')](_0xf9a3('0x51'),auth[_0xf9a3('0x9')](),controller['addOpenchannelInteractions']);router[_0xf9a3('0x3a')](_0xf9a3('0x52'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x53')]);router[_0xf9a3('0x3a')](_0xf9a3('0x2e'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x54')]);router[_0xf9a3('0x3a')]('/:id/mail_accounts',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x55')]);router['post'](_0xf9a3('0x31'),auth['isAuthenticated'](),controller[_0xf9a3('0x56')]);router['post'](_0xf9a3('0x57'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x58')]);router[_0xf9a3('0x3a')](_0xf9a3('0x59'),auth[_0xf9a3('0x9')](),controller['addChatWebsites']);router[_0xf9a3('0x3a')](_0xf9a3('0x5a'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x5b')]);router[_0xf9a3('0x3a')](_0xf9a3('0x5c'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x5d')]);router[_0xf9a3('0x3a')](_0xf9a3('0x5e'),auth['isAuthenticated'](),controller['createApiKey']);router['put']('/:id',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x5f')]);router[_0xf9a3('0x60')](_0xf9a3('0x61'),auth[_0xf9a3('0x9')](),controller['changePassword']);router[_0xf9a3('0x62')](_0xf9a3('0x3e'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x63')]);router[_0xf9a3('0x62')](_0xf9a3('0x27'),auth[_0xf9a3('0x9')](),controller['removeTeams']);router[_0xf9a3('0x62')](_0xf9a3('0xf'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x64')]);router[_0xf9a3('0x62')](_0xf9a3('0x4b'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x65')]);router[_0xf9a3('0x62')](_0xf9a3('0x4c'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x66')]);router[_0xf9a3('0x62')](_0xf9a3('0x4e'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x67')]);router[_0xf9a3('0x62')](_0xf9a3('0x4f'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x68')]);router['delete'](_0xf9a3('0x51'),auth['isAuthenticated'](),controller[_0xf9a3('0x69')]);router[_0xf9a3('0x62')](_0xf9a3('0x52'),auth['isAuthenticated'](),controller['removeWhatsappInteractions']);router['delete']('/:id/fax_accounts',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x6a')]);router['delete']('/:id/mail_accounts',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x6b')]);router[_0xf9a3('0x62')](_0xf9a3('0x31'),auth['isAuthenticated'](),controller[_0xf9a3('0x6c')]);router[_0xf9a3('0x62')](_0xf9a3('0x57'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x6d')]);router[_0xf9a3('0x62')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0xf9a3('0x6e')]);router['delete'](_0xf9a3('0x5a'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x6f')]);router[_0xf9a3('0x62')](_0xf9a3('0x5c'),auth['isAuthenticated'](),controller['removeSquareProjects']);router['delete']('/:id/api_key',auth[_0xf9a3('0x9')](),controller['removeApiKey']);module[_0xf9a3('0x70')]=router;
\ No newline at end of file
+var _0xc766=['/:id/queues_rt','getVoiceQueuesRt','getGroups','/:id/recordings','getRecordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','/:id/openchannel_accounts','getSmsAccounts','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/api_key','post','addContacts','create','/create_many','/:id/queues','addQueues','diskStorage','join','server/files/images/','format','%s-%s','now','originalname','single','file','addAvatar','/:id/login','login','/:id/logout','logout','pause','unpause','addTeams','addChatInteractions','/:id/mail_interactions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','/:id/chat_websites','addChatWebsites','addWhatsappAccounts','createApiKey','update','put','/:id/password','removeQueues','removeTeams','delete','destroy','/:id/chat_interactions','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','util','path','express','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/whoami','whoami','/:id','/:id/avatar','getAvatar','/:id/contacts','getContacts'];(function(_0x4d9b22,_0x142ab4){var _0x2ee620=function(_0x2f1b41){while(--_0x2f1b41){_0x4d9b22['push'](_0x4d9b22['shift']());}};_0x2ee620(++_0x142ab4);}(_0xc766,0x1ab));var _0x6c76=function(_0x5eba12,_0x395842){_0x5eba12=_0x5eba12-0x0;var _0x319239=_0xc766[_0x5eba12];return _0x319239;};'use strict';var multer=require('multer');var util=require(_0x6c76('0x0'));var path=require(_0x6c76('0x1'));var timeout=require('connect-timeout');var express=require(_0x6c76('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6c76('0x3'));var interaction=require(_0x6c76('0x4'));var config=require('../../config/environment');var controller=require('./user.controller');router[_0x6c76('0x5')]('/',auth[_0x6c76('0x6')](),controller[_0x6c76('0x7')]);router[_0x6c76('0x5')](_0x6c76('0x8'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x9')]);router[_0x6c76('0x5')](_0x6c76('0xa'),auth[_0x6c76('0x6')](),controller[_0x6c76('0xb')]);router[_0x6c76('0x5')]('/presence',auth[_0x6c76('0x6')](),controller['getPresence']);router[_0x6c76('0x5')](_0x6c76('0xc'),auth[_0x6c76('0x6')](),controller['show']);router[_0x6c76('0x5')](_0x6c76('0xd'),controller[_0x6c76('0xe')]);router['get']('/:id/open_tabs',auth[_0x6c76('0x6')](),controller['getOpenTabs']);router[_0x6c76('0x5')](_0x6c76('0xf'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x10')]);router[_0x6c76('0x5')]('/:id/queues',auth[_0x6c76('0x6')](),controller['getQueues']);router['get'](_0x6c76('0x11'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x12')]);router[_0x6c76('0x5')]('/:id/groups',auth[_0x6c76('0x6')](),controller[_0x6c76('0x13')]);router[_0x6c76('0x5')](_0x6c76('0x14'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x15')]);router[_0x6c76('0x5')]('/:id/screen_recordings',auth[_0x6c76('0x6')](),controller[_0x6c76('0x16')]);router[_0x6c76('0x5')](_0x6c76('0x17'),auth['isAuthenticated'](),controller[_0x6c76('0x18')]);router[_0x6c76('0x5')](_0x6c76('0x19'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x1a')]);router['get'](_0x6c76('0x1b'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x1c')]);router[_0x6c76('0x5')](_0x6c76('0x1d'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x1e')]);router[_0x6c76('0x5')](_0x6c76('0x1f'),auth['isAuthenticated'](),controller[_0x6c76('0x20')]);router['get'](_0x6c76('0x21'),auth['isAuthenticated'](),controller[_0x6c76('0x22')]);router[_0x6c76('0x5')](_0x6c76('0x23'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x24')]);router[_0x6c76('0x5')](_0x6c76('0x25'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x26')]);router[_0x6c76('0x5')](_0x6c76('0x27'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x28')]);router[_0x6c76('0x5')](_0x6c76('0x29'),auth['isAuthenticated'](),controller[_0x6c76('0x2a')]);router[_0x6c76('0x5')](_0x6c76('0x2b'),auth['isAuthenticated'](),controller['getFaxAccounts']);router[_0x6c76('0x5')](_0x6c76('0x2c'),auth[_0x6c76('0x6')](),controller['getMailAccounts']);router[_0x6c76('0x5')](_0x6c76('0x2d'),auth[_0x6c76('0x6')](),controller['getOpenchannelAccounts']);router[_0x6c76('0x5')]('/:id/sms_accounts',auth[_0x6c76('0x6')](),controller[_0x6c76('0x2e')]);router[_0x6c76('0x5')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0x6c76('0x2f')]);router['get'](_0x6c76('0x30'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x31')]);router[_0x6c76('0x5')](_0x6c76('0x32'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x33')]);router[_0x6c76('0x5')]('/:id/scheduled_calls',auth[_0x6c76('0x6')](),controller['getScheduledCalls']);router[_0x6c76('0x5')](_0x6c76('0x34'),auth['isAuthenticated'](),controller['getApiKey']);router[_0x6c76('0x35')]('/:id/contacts',auth[_0x6c76('0x6')](),controller[_0x6c76('0x36')]);router[_0x6c76('0x35')]('/',auth[_0x6c76('0x6')](),controller[_0x6c76('0x37')]);router['post'](_0x6c76('0x38'),auth[_0x6c76('0x6')](),controller['bulkCreate']);router[_0x6c76('0x35')](_0x6c76('0x39'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x3a')]);var upload=multer({'storage':multer[_0x6c76('0x3b')]({'destination':function(_0x4a949f,_0x36ee30,_0x5cd316){_0x5cd316(null,path[_0x6c76('0x3c')](config['root'],_0x6c76('0x3d')));},'filename':function(_0x4bd3a7,_0x299e64,_0xc46097){_0xc46097(null,util[_0x6c76('0x3e')](_0x6c76('0x3f'),Date[_0x6c76('0x40')](),_0x299e64[_0x6c76('0x41')]));}})});router[_0x6c76('0x35')](_0x6c76('0xd'),upload[_0x6c76('0x42')](_0x6c76('0x43')),controller[_0x6c76('0x44')]);router[_0x6c76('0x35')](_0x6c76('0x45'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x46')]);router[_0x6c76('0x35')](_0x6c76('0x47'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x48')]);router['post']('/:id/pause',auth[_0x6c76('0x6')](),controller[_0x6c76('0x49')]);router[_0x6c76('0x35')]('/:id/unpause',auth['isAuthenticated'](),controller[_0x6c76('0x4a')]);router[_0x6c76('0x35')](_0x6c76('0x23'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x4b')]);router[_0x6c76('0x35')]('/:id/chat_interactions',auth[_0x6c76('0x6')](),controller[_0x6c76('0x4c')]);router[_0x6c76('0x35')](_0x6c76('0x4d'),auth['isAuthenticated'](),controller['addMailInteractions']);router[_0x6c76('0x35')](_0x6c76('0x4e'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x4f')]);router['post'](_0x6c76('0x50'),auth['isAuthenticated'](),controller[_0x6c76('0x51')]);router['post'](_0x6c76('0x52'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x53')]);router[_0x6c76('0x35')](_0x6c76('0x54'),auth['isAuthenticated'](),controller['addWhatsappInteractions']);router[_0x6c76('0x35')](_0x6c76('0x2b'),auth[_0x6c76('0x6')](),controller['addFaxAccounts']);router[_0x6c76('0x35')]('/:id/mail_accounts',auth[_0x6c76('0x6')](),controller['addMailAccounts']);router[_0x6c76('0x35')](_0x6c76('0x2d'),auth[_0x6c76('0x6')](),controller['addOpenchannelAccounts']);router[_0x6c76('0x35')]('/:id/sms_accounts',auth[_0x6c76('0x6')](),controller['addSmsAccounts']);router[_0x6c76('0x35')](_0x6c76('0x55'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x56')]);router['post'](_0x6c76('0x30'),auth['isAuthenticated'](),controller[_0x6c76('0x57')]);router[_0x6c76('0x35')](_0x6c76('0x32'),auth[_0x6c76('0x6')](),controller['addSquareProjects']);router[_0x6c76('0x35')](_0x6c76('0x34'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x58')]);router['put']('/:id',auth[_0x6c76('0x6')](),controller[_0x6c76('0x59')]);router[_0x6c76('0x5a')](_0x6c76('0x5b'),auth[_0x6c76('0x6')](),controller['changePassword']);router['delete']('/:id/queues',auth[_0x6c76('0x6')](),controller[_0x6c76('0x5c')]);router['delete'](_0x6c76('0x23'),auth['isAuthenticated'](),controller[_0x6c76('0x5d')]);router[_0x6c76('0x5e')]('/:id',auth[_0x6c76('0x6')](),controller[_0x6c76('0x5f')]);router['delete'](_0x6c76('0x60'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x61')]);router[_0x6c76('0x5e')](_0x6c76('0x4d'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x62')]);router[_0x6c76('0x5e')]('/:id/fax_interactions',auth[_0x6c76('0x6')](),controller[_0x6c76('0x63')]);router[_0x6c76('0x5e')](_0x6c76('0x50'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x64')]);router['delete'](_0x6c76('0x52'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x65')]);router[_0x6c76('0x5e')](_0x6c76('0x54'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x66')]);router[_0x6c76('0x5e')](_0x6c76('0x2b'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x67')]);router[_0x6c76('0x5e')]('/:id/mail_accounts',auth[_0x6c76('0x6')](),controller[_0x6c76('0x68')]);router[_0x6c76('0x5e')](_0x6c76('0x2d'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x69')]);router[_0x6c76('0x5e')]('/:id/sms_accounts',auth[_0x6c76('0x6')](),controller[_0x6c76('0x6a')]);router[_0x6c76('0x5e')]('/:id/chat_websites',auth[_0x6c76('0x6')](),controller[_0x6c76('0x6b')]);router['delete'](_0x6c76('0x30'),auth[_0x6c76('0x6')](),controller[_0x6c76('0x6c')]);router[_0x6c76('0x5e')]('/:id/square_projects',auth[_0x6c76('0x6')](),controller[_0x6c76('0x6d')]);router[_0x6c76('0x5e')]('/:id/api_key',auth[_0x6c76('0x6')](),controller[_0x6c76('0x6e')]);module['exports']=router;
\ No newline at end of file
index 94c9e60..906954b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f74=['originate','uac','uas','fingerprint','certificate','passive','actpass','update,nonat','TEXT','showWebBar','wss','encryption','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','rtcp_mux','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','loginAttempts','blockedAt','sequelize','util','lodash','exports','STRING','name','setDataValue','fullname','callerid','format','\x22%s\x22\x20<%s>','internal','email','toLowerCase','ENUM','admin','user','agent','telephone','getDataValue','BOOLEAN','DATE','INTEGER','dynamic','peer','friend','from-sip','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','join','transport','split','rfc2833','info','shortinfo','inband','auto','nonat','update','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','yes','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','always','accept','refuse'];(function(_0x30cd7e,_0x4db10a){var _0x462a02=function(_0x157d81){while(--_0x157d81){_0x30cd7e['push'](_0x30cd7e['shift']());}};_0x462a02(++_0x4db10a);}(_0x2f74,0x7b));var _0x42f7=function(_0x4941c6,_0x3ca9f8){_0x4941c6=_0x4941c6-0x0;var _0x4d3654=_0x2f74[_0x4941c6];return _0x4d3654;};'use strict';var Sequelize=require(_0x42f7('0x0'));var moment=require('moment');var util=require(_0x42f7('0x1'));var _=require(_0x42f7('0x2'));module[_0x42f7('0x3')]={'name':{'type':Sequelize[_0x42f7('0x4')],'allowNull':![],'unique':_0x42f7('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x3fcf64){this[_0x42f7('0x6')](_0x42f7('0x5'),_0x3fcf64);this['setDataValue']('defaultuser',_0x3fcf64);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x42f7('0x4')],'allowNull':![],'set':function(_0x1cb6e0){this[_0x42f7('0x6')](_0x42f7('0x7'),_0x1cb6e0);this[_0x42f7('0x6')](_0x42f7('0x8'),util[_0x42f7('0x9')](_0x42f7('0xa'),_0x1cb6e0,this['getDataValue'](_0x42f7('0xb'))));}},'alias':{'type':Sequelize[_0x42f7('0x4')]},'email':{'type':Sequelize[_0x42f7('0x4')],'allowNull':![],'unique':_0x42f7('0xc'),'validate':{'isEmail':!![]},'set':function(_0x1f56d2){if(_0x1f56d2){this[_0x42f7('0x6')]('email',_0x1f56d2[_0x42f7('0xd')]());}}},'role':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0xf'),_0x42f7('0x10'),_0x42f7('0x11'),_0x42f7('0x12')),'allowNull':![]},'password':{'type':Sequelize[_0x42f7('0x4')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x42f7('0x4')],'defaultValue':'local'},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':_0x42f7('0xb'),'set':function(_0xc274ff){this[_0x42f7('0x6')](_0x42f7('0xb'),_0xc274ff);this[_0x42f7('0x6')]('accountcode',_0xc274ff);this[_0x42f7('0x6')]('callerid',util[_0x42f7('0x9')](_0x42f7('0xa'),this[_0x42f7('0x13')](_0x42f7('0x7')),_0xc274ff));}},'salt':{'type':Sequelize[_0x42f7('0x4')]},'phone':{'type':Sequelize[_0x42f7('0x4')]},'mobile':{'type':Sequelize[_0x42f7('0x4')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize[_0x42f7('0x4')]},'userpic':{'type':Sequelize[_0x42f7('0x4')]},'city':{'type':Sequelize[_0x42f7('0x4')]},'country':{'type':Sequelize[_0x42f7('0x4')]},'online':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x42f7('0x15')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x42f7('0x15')]},'chatCapacity':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x42f7('0x16')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x42f7('0x16')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'host':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![],'defaultValue':_0x42f7('0x17')},'ipaddr':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'port':{'type':Sequelize[_0x42f7('0x16')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM']('friend',_0x42f7('0x10'),_0x42f7('0x18')),'allowNull':!![],'defaultValue':_0x42f7('0x19')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x42f7('0x1a')},'callingpres':{'type':Sequelize[_0x42f7('0xe')]('ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN',_0x42f7('0x1b'),_0x42f7('0x1c'),_0x42f7('0x1d'),_0x42f7('0x1e'),_0x42f7('0x1f'),_0x42f7('0x20')),'allowNull':!![]},'deny':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'permit':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'secret':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![],'defaultValue':_0x42f7('0x21'),'set':function(_0xd26ccf){this[_0x42f7('0x6')]('transport',_0xd26ccf?_0xd26ccf[_0x42f7('0x22')](','):null);},'get':function(){return this[_0x42f7('0x13')](_0x42f7('0x23'))?this[_0x42f7('0x13')]('transport')[_0x42f7('0x24')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x25'),_0x42f7('0x26'),_0x42f7('0x27'),_0x42f7('0x28'),_0x42f7('0x29')),'allowNull':!![],'defaultValue':_0x42f7('0x25')},'directmedia':{'type':Sequelize['ENUM']('yes','no',_0x42f7('0x2a'),_0x42f7('0x2b'),'outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x42f7('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'force_rport,comedia','set':function(_0x48b79e){this[_0x42f7('0x6')]('nat',_0x48b79e?_0x48b79e[_0x42f7('0x22')](','):null);},'get':function(){return this[_0x42f7('0x13')](_0x42f7('0x2c'))?this[_0x42f7('0x13')](_0x42f7('0x2c'))['split'](','):null;},'comment':_0x42f7('0x2d')},'callgroup':{'type':Sequelize[_0x42f7('0x4')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0x42f7('0x4')]},'language':{'type':Sequelize[_0x42f7('0x4')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x42f7('0x4')]},'disallow':{'type':Sequelize[_0x42f7('0x4')],'allowNull':![],'defaultValue':_0x42f7('0x2e')},'allow':{'type':Sequelize[_0x42f7('0x4')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x3037f8){this['setDataValue'](_0x42f7('0x2f'),_0x3037f8?_0x3037f8[_0x42f7('0x22')](';'):_0x42f7('0x30'));},'get':function(){return this['getDataValue'](_0x42f7('0x2f'))?this['getDataValue'](_0x42f7('0x2f'))[_0x42f7('0x24')](';'):null;},'comment':_0x42f7('0x31')},'autoframing':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![],'set':function(_0x5f2365){this[_0x42f7('0x6')]('insecure',_0x5f2365?_0x5f2365[_0x42f7('0x22')](','):null);},'get':function(){return this['getDataValue'](_0x42f7('0x33'))?this[_0x42f7('0x13')]('insecure')[_0x42f7('0x24')](','):null;},'comment':_0x42f7('0x34')},'trustrpid':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x42f7('0xe')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x42f7('0x35')},'amaflags':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':_0x42f7('0x32')},'busylevel':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'template':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no',_0x42f7('0x36')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x37'),_0x42f7('0x38'),_0x42f7('0x39')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize['ENUM'](_0x42f7('0x3a'),_0x42f7('0x3b')),'allowNull':!![],'defaultValue':_0x42f7('0x3b')},'t38pt_usertpsource':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING'],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x42f7('0xe')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x42f7('0xe')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no',_0x42f7('0x3c'),_0x42f7('0x3d')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM']('active',_0x42f7('0x3e'),_0x42f7('0x3f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x42f7('0xe')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no',_0x42f7('0x2a'),_0x42f7('0x2b'),_0x42f7('0x40')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x42f7('0x4')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x42f7('0x15')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x42f7('0x41')]},'showWebBar':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0,'set':function(_0x98a670){this[_0x42f7('0x6')](_0x42f7('0x42'),_0x98a670);var _0x3affa4=this['get']({'plain':!![]});switch(_0x98a670){case 0x0:case 0x1:var _0x419be3=_0x3affa4[_0x42f7('0x23')]?_['isArray'](_0x3affa4[_0x42f7('0x23')])?_0x3affa4[_0x42f7('0x23')][_0x42f7('0x22')]():_0x3affa4[_0x42f7('0x23')]:'udp';if(_0x419be3===_0x42f7('0x43')){_0x419be3='udp';}this[_0x42f7('0x6')](_0x42f7('0x23'),_0x419be3);this['setDataValue'](_0x42f7('0x44'),'no');this[_0x42f7('0x6')](_0x42f7('0x45'),null);this[_0x42f7('0x6')](_0x42f7('0x46'),null);this[_0x42f7('0x6')](_0x42f7('0x47'),null);this['setDataValue'](_0x42f7('0x48'),null);this[_0x42f7('0x6')](_0x42f7('0x49'),null);this['setDataValue'](_0x42f7('0x4a'),null);this['setDataValue'](_0x42f7('0x4b'),null);this['setDataValue']('dtlsprivatekey',null);this['setDataValue'](_0x42f7('0x4c'),'no');break;case 0x2:this['setDataValue'](_0x42f7('0x23'),_0x42f7('0x43'));this['setDataValue']('encryption',_0x42f7('0x32'));this['setDataValue'](_0x42f7('0x45'),'yes');this[_0x42f7('0x6')]('force_avp',_0x42f7('0x32'));this[_0x42f7('0x6')](_0x42f7('0x47'),_0x42f7('0x32'));this[_0x42f7('0x6')](_0x42f7('0x48'),_0x42f7('0x32'));this['setDataValue'](_0x42f7('0x49'),'no');this[_0x42f7('0x6')](_0x42f7('0x4a'),_0x42f7('0x3f'));this['setDataValue'](_0x42f7('0x4b'),_0x3affa4[_0x42f7('0x4b')]||_0x42f7('0x4d'));this['setDataValue'](_0x42f7('0x4e'),_0x3affa4[_0x42f7('0x4e')]||_0x42f7('0x4f'));this['setDataValue'](_0x42f7('0x4c'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0x42f7('0x41')],'set':function(_0x390f27){this[_0x42f7('0x6')](_0x42f7('0x50'),_0x390f27?_0x390f27[_0x42f7('0x22')](','):[]);},'get':function(){return this[_0x42f7('0x13')](_0x42f7('0x50'))?_[_0x42f7('0x51')](this[_0x42f7('0x13')]('permissions')['split'](','),function(_0x42259e){return parseInt(_0x42259e,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x42f7('0x4')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0x42f7('0x4')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize['STRING'],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x42f7('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x42f7('0x52')],'get':function(){return this[_0x42f7('0x13')](_0x42f7('0x53'))?this['getDataValue'](_0x42f7('0x53')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![],'set':function(_0x28643d){if(typeof _0x28643d===_0x42f7('0x54')){var _0x53d029=_0x28643d==='1'?!![]:_0x28643d==='0'?![]:_0x28643d===_0x42f7('0x55')?!![]:_0x28643d===_0x42f7('0x56')?![]:![];this[_0x42f7('0x6')](_0x42f7('0x57'),_0x53d029);}else{this[_0x42f7('0x6')](_0x42f7('0x57'),_0x28643d);}}},'blocked':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![],'set':function(_0x3e3b1e){this[_0x42f7('0x6')]('blocked',_0x3e3b1e);if(_0x3e3b1e===!![]){this[_0x42f7('0x6')]('blockedAt',moment());this[_0x42f7('0x6')](_0x42f7('0x58'),0x0);}else{this[_0x42f7('0x6')](_0x42f7('0x59'),null);}}},'blockedAt':{'type':Sequelize[_0x42f7('0x15')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x42f7('0x16')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xe08b=['INTEGER','accountcode','callerid','getDataValue','BOOLEAN','DATE','dynamic','user','peer','friend','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','auto','rfc2833','yes','update','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','accept','refuse','uas','fingerprint','certificate','active','passive','nonat','update,nonat','showWebBar','isArray','wss','encryption','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlscertfile','dtlsprivatekey','dtlssetup','actpass','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','rtcp_mux','TEXT','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','sequelize','util','lodash','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','format','\x22%s\x22\x20<%s>','internal','email','toLowerCase','ENUM','admin','agent','local'];(function(_0x15f85f,_0x46e7e7){var _0x2ac5aa=function(_0x29bac6){while(--_0x29bac6){_0x15f85f['push'](_0x15f85f['shift']());}};_0x2ac5aa(++_0x46e7e7);}(_0xe08b,0x10e));var _0xbe08=function(_0x8c1005,_0x1f3f16){_0x8c1005=_0x8c1005-0x0;var _0x175354=_0xe08b[_0x8c1005];return _0x175354;};'use strict';var Sequelize=require(_0xbe08('0x0'));var moment=require('moment');var util=require(_0xbe08('0x1'));var _=require(_0xbe08('0x2'));module['exports']={'name':{'type':Sequelize[_0xbe08('0x3')],'allowNull':![],'unique':_0xbe08('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x27b8f8){this[_0xbe08('0x5')](_0xbe08('0x4'),_0x27b8f8);this[_0xbe08('0x5')](_0xbe08('0x6'),_0x27b8f8);},'comment':_0xbe08('0x7')},'fullname':{'type':Sequelize[_0xbe08('0x3')],'allowNull':![],'set':function(_0x2f78b1){this[_0xbe08('0x5')](_0xbe08('0x8'),_0x2f78b1);this[_0xbe08('0x5')]('callerid',util[_0xbe08('0x9')](_0xbe08('0xa'),_0x2f78b1,this['getDataValue'](_0xbe08('0xb'))));}},'alias':{'type':Sequelize[_0xbe08('0x3')]},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xbe08('0xc'),'validate':{'isEmail':!![]},'set':function(_0x202fec){if(_0x202fec){this['setDataValue'](_0xbe08('0xc'),_0x202fec[_0xbe08('0xd')]());}}},'role':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0xf'),'user',_0xbe08('0x10'),'telephone'),'allowNull':![]},'password':{'type':Sequelize[_0xbe08('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0xbe08('0x3')],'defaultValue':_0xbe08('0x11')},'internal':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':![],'unique':_0xbe08('0xb'),'set':function(_0x3050f1){this[_0xbe08('0x5')](_0xbe08('0xb'),_0x3050f1);this[_0xbe08('0x5')](_0xbe08('0x13'),_0x3050f1);this[_0xbe08('0x5')](_0xbe08('0x14'),util[_0xbe08('0x9')](_0xbe08('0xa'),this[_0xbe08('0x15')](_0xbe08('0x8')),_0x3050f1));}},'salt':{'type':Sequelize[_0xbe08('0x3')]},'phone':{'type':Sequelize[_0xbe08('0x3')]},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0xbe08('0x3')]},'zipcode':{'type':Sequelize[_0xbe08('0x3')]},'userpic':{'type':Sequelize[_0xbe08('0x3')]},'city':{'type':Sequelize[_0xbe08('0x3')]},'country':{'type':Sequelize[_0xbe08('0x3')]},'online':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0xbe08('0x17')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0xbe08('0x3')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0xbe08('0x17')]},'chatCapacity':{'type':Sequelize[_0xbe08('0x12')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xbe08('0x12')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xbe08('0x12')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xbe08('0x12')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xbe08('0x12')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0xbe08('0x12')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xbe08('0x12')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xbe08('0x12')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xbe08('0x12')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'description':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![],'defaultValue':_0xbe08('0x18')},'ipaddr':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'useragent':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xbe08('0xe')]('friend',_0xbe08('0x19'),_0xbe08('0x1a')),'allowNull':!![],'defaultValue':_0xbe08('0x1b')},'context':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![],'defaultValue':_0xbe08('0x1c')},'callingpres':{'type':Sequelize['ENUM'](_0xbe08('0x1d'),_0xbe08('0x1e'),_0xbe08('0x1f'),'ALLOWED',_0xbe08('0x20'),_0xbe08('0x21'),'PROHIB_FAILED_SCREEN',_0xbe08('0x22')),'allowNull':!![]},'deny':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'permit':{'type':Sequelize['STRING'],'allowNull':!![]},'secret':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![],'defaultValue':_0xbe08('0x23'),'set':function(_0x233472){this[_0xbe08('0x5')](_0xbe08('0x24'),_0x233472?_0x233472[_0xbe08('0x25')](','):null);},'get':function(){return this[_0xbe08('0x15')](_0xbe08('0x24'))?this[_0xbe08('0x15')](_0xbe08('0x24'))[_0xbe08('0x26')](','):null;},'comment':_0xbe08('0x27')},'dtmfmode':{'type':Sequelize['ENUM']('rfc2833',_0xbe08('0x28'),_0xbe08('0x29'),'inband',_0xbe08('0x2a')),'allowNull':!![],'defaultValue':_0xbe08('0x2b')},'directmedia':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no','nonat',_0xbe08('0x2d'),_0xbe08('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![],'defaultValue':_0xbe08('0x2f'),'set':function(_0x563eff){this[_0xbe08('0x5')]('nat',_0x563eff?_0x563eff[_0xbe08('0x25')](','):null);},'get':function(){return this[_0xbe08('0x15')]('nat')?this[_0xbe08('0x15')](_0xbe08('0x30'))[_0xbe08('0x26')](','):null;},'comment':_0xbe08('0x31')},'callgroup':{'type':Sequelize[_0xbe08('0x3')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0xbe08('0x3')]},'namedpickupgroup':{'type':Sequelize[_0xbe08('0x3')]},'language':{'type':Sequelize[_0xbe08('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xbe08('0x3')]},'disallow':{'type':Sequelize[_0xbe08('0x3')],'allowNull':![],'defaultValue':_0xbe08('0x32')},'allow':{'type':Sequelize[_0xbe08('0x3')],'allowNull':![],'defaultValue':_0xbe08('0x33'),'set':function(_0x357158){this['setDataValue'](_0xbe08('0x34'),_0x357158?_0x357158[_0xbe08('0x25')](';'):'ulaw;alaw;gsm');},'get':function(){return this['getDataValue'](_0xbe08('0x34'))?this['getDataValue'](_0xbe08('0x34'))['split'](';'):null;},'comment':_0xbe08('0x35')},'autoframing':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![],'set':function(_0xea5c3){this[_0xbe08('0x5')](_0xbe08('0x36'),_0xea5c3?_0xea5c3['join'](','):null);},'get':function(){return this[_0xbe08('0x15')](_0xbe08('0x36'))?this['getDataValue']('insecure')['split'](','):null;},'comment':_0xbe08('0x37')},'trustrpid':{'type':Sequelize[_0xbe08('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xbe08('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no',_0xbe08('0x38')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![],'defaultValue':_0xbe08('0x39')},'amaflags':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![],'defaultValue':_0xbe08('0x2c')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0xbe08('0x2c'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize['STRING'],'allowNull':!![]},'template':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM']('yes','no',_0xbe08('0x3a')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x3b'),_0xbe08('0x3c'),'originate'),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xbe08('0xe')]('uac',_0xbe08('0x3d')),'allowNull':!![],'defaultValue':_0xbe08('0x3d')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0xbe08('0x2c'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM'](_0xbe08('0x2c'),'no',_0xbe08('0x3e'),_0xbe08('0x3f')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x40'),_0xbe08('0x41'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xbe08('0x12')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xbe08('0xe')](_0xbe08('0x2c'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize['STRING'],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0xbe08('0xe')]('yes','no',_0xbe08('0x42'),_0xbe08('0x2d'),_0xbe08('0x43')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xbe08('0x3')]},'resetPasswordExpires':{'type':Sequelize[_0xbe08('0x17')]},'passwordResetAt':{'type':Sequelize[_0xbe08('0x17')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0xbe08('0x12')],'defaultValue':0x0,'set':function(_0x364111){this[_0xbe08('0x5')](_0xbe08('0x44'),_0x364111);var _0x5a71b4=this['get']({'plain':!![]});switch(_0x364111){case 0x0:case 0x1:var _0x21e6c1=_0x5a71b4[_0xbe08('0x24')]?_[_0xbe08('0x45')](_0x5a71b4[_0xbe08('0x24')])?_0x5a71b4[_0xbe08('0x24')]['join']():_0x5a71b4[_0xbe08('0x24')]:_0xbe08('0x23');if(_0x21e6c1===_0xbe08('0x46')){_0x21e6c1=_0xbe08('0x23');}this[_0xbe08('0x5')](_0xbe08('0x24'),_0x21e6c1);this['setDataValue'](_0xbe08('0x47'),'no');this['setDataValue'](_0xbe08('0x48'),null);this[_0xbe08('0x5')](_0xbe08('0x49'),null);this[_0xbe08('0x5')](_0xbe08('0x4a'),null);this[_0xbe08('0x5')](_0xbe08('0x4b'),null);this[_0xbe08('0x5')](_0xbe08('0x4c'),null);this[_0xbe08('0x5')]('dtlssetup',null);this[_0xbe08('0x5')](_0xbe08('0x4d'),null);this[_0xbe08('0x5')](_0xbe08('0x4e'),null);this['setDataValue']('rtcp_mux','no');break;case 0x2:this[_0xbe08('0x5')](_0xbe08('0x24'),_0xbe08('0x46'));this[_0xbe08('0x5')](_0xbe08('0x47'),_0xbe08('0x2c'));this[_0xbe08('0x5')](_0xbe08('0x48'),_0xbe08('0x2c'));this[_0xbe08('0x5')](_0xbe08('0x49'),'yes');this['setDataValue']('icesupport','yes');this[_0xbe08('0x5')](_0xbe08('0x4b'),_0xbe08('0x2c'));this[_0xbe08('0x5')](_0xbe08('0x4c'),'no');this[_0xbe08('0x5')](_0xbe08('0x4f'),_0xbe08('0x50'));this[_0xbe08('0x5')](_0xbe08('0x4d'),_0x5a71b4[_0xbe08('0x4d')]||_0xbe08('0x51'));this[_0xbe08('0x5')]('dtlsprivatekey',_0x5a71b4['dtlsprivatekey']||_0xbe08('0x52'));this[_0xbe08('0x5')](_0xbe08('0x53'),_0xbe08('0x2c'));break;default:}}},'permissions':{'type':Sequelize[_0xbe08('0x54')],'set':function(_0x2ea2b4){this[_0xbe08('0x5')](_0xbe08('0x55'),_0x2ea2b4?_0x2ea2b4[_0xbe08('0x25')](','):[]);},'get':function(){return this[_0xbe08('0x15')](_0xbe08('0x55'))?_[_0xbe08('0x56')](this[_0xbe08('0x15')](_0xbe08('0x55'))[_0xbe08('0x26')](','),function(_0x3de1a9){return parseInt(_0x3de1a9,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0xbe08('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0xbe08('0x3')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xbe08('0x12')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xbe08('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xbe08('0x12')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0xbe08('0x2c'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xbe08('0x3')]},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0xbe08('0x57')],'get':function(){return this[_0xbe08('0x15')](_0xbe08('0x58'))?this[_0xbe08('0x15')](_0xbe08('0x58')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'interface':{'type':Sequelize[_0xbe08('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xbe08('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![],'set':function(_0x2cde38){if(typeof _0x2cde38===_0xbe08('0x59')){var _0x582ab7=_0x2cde38==='1'?!![]:_0x2cde38==='0'?![]:_0x2cde38===_0xbe08('0x5a')?!![]:_0x2cde38===_0xbe08('0x5b')?![]:![];this['setDataValue']('screenrecording',_0x582ab7);}else{this[_0xbe08('0x5')](_0xbe08('0x5c'),_0x2cde38);}}},'blocked':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![],'set':function(_0x58b960){this['setDataValue'](_0xbe08('0x5d'),_0x58b960);if(_0x58b960===!![]){this['setDataValue'](_0xbe08('0x5e'),moment());this['setDataValue'](_0xbe08('0x5f'),0x0);}else{this[_0xbe08('0x5')]('blockedAt',null);}}},'blockedAt':{'type':Sequelize[_0xbe08('0x17')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xbe08('0x12')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xbe08('0x16')],'defaultValue':!![]}};
\ No newline at end of file
index 7b45899..6d39321 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x43cb7b,_0x1745d8){var _0x166525=function(_0xc33c15){while(--_0xc33c15){_0x43cb7b['push'](_0x43cb7b['shift']());}};_0x166525(++_0x1745d8);}(_0xb7e7,0x121));var _0x7b7e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xb7e7[_0x9df060];return _0x338dfe;};'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
+var _0x1280=['phone','mobile','LOCAL/%s@from-sip/n','intrf','user:%s','headers','x-forwarded-for','remoteAddress','socket','connection','getVoiceQueues','each','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','LOGININPAUSE','concat','resolve','logout','QueuePause','pause','updateAttributes','DEFAULT\x20PAUSE','mailPause','chatPause','faxPause','openchannelPause','whatsapppause','lastPauseAt','unpause','manual','%s%s','Pause','getTeams','Team','addTeams','omit','setDataValue','getChatQueues','getMailQueues','Mail','Sms','getWhatsappQueues','Whatsapp','getFaxQueues','Fax','getOpenchannelQueues','Openchannel','flatten','getDataValue','removeTeams','Voice','Chat','getSmsQueues','transaction','removeAgent','getLists','getAgents','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','spread','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','FaxAccount','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','removeSquareProjects','getScheduledCalls','CmHopper','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$like','$notLike','$notILike','$overlap','$contains','firstName','lastName','CmContact','Contact','retrieveApiKey','createApiKey','iat','nonce','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','whoami','send','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','lower','col','toString','desc','asc','uniqBy','orderBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','unknown','ringing','voiceStatus','busy','slice','charAt','toUpperCase','select','field','ui.','InteractionId','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','util','path','lodash','squel','jayson/promise','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','socket.io-emitter','redis','./user.socket','defaults','localhost','client','http','then','info','request\x20sent','User,\x20%s,\x20%s,\x20%s','stringify','error','code','User,\x20%s,\x20%s','message','result','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','destroy','get','admin','Users','user','agent','Telephones','telephone','filter','ignore','map','role','find','UserProfileResource','stack','name','index','User','rawAttributes','type','key','includes','salt','value','getOptions','where','include','attributes','push','findAll','rows','query','openTabs','true','length','dataValues','sms','fax','mail','whatsapp','all','params','differenceBy','keys','intersection','model','fields','includeAll','options','chat','openchannel','catch','update','body','describe','addContacts','ids','internal','Setting','securePassword','validatePasswordPattern','max','isNil','min_internal','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','sequelize','QueryTypes','SELECT','from','mailbox','VoiceMail','password','fullname','email','permissions','101','102','113','110','105','108','109','100','114','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','Agents','autoAssociation','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','isEmpty','compact','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','addQueues','channel','online','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','add','capitalize','toLowerCase','Queues','penalty','emit','Queue:save','voice','VoiceQueue','format','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','remove','isArray','QueueId','Queue:remove','addAvatar','userpic','filename','join','root','download','existsSync','server/files/images/','getOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SMS','WhatsappOpenTabs','WHATSAPP','filters','order','sort','pick','merge','getContacts','hasOwnProperty','CmList','Tag','Tags','tag','nolimit','getQueues','Queue','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x1280,0xac));var _0x0128=function(_0x1e4a8e,_0x18022b){_0x1e4a8e=_0x1e4a8e-0x0;var _0x5408f9=_0x1280[_0x1e4a8e];return _0x5408f9;};'use strict';var moment=require(_0x0128('0x0'));var BPromise=require('bluebird');var util=require(_0x0128('0x1'));var path=require(_0x0128('0x2'));var fs=require('fs');var _=require(_0x0128('0x3'));var squel=require(_0x0128('0x4'));var jayson=require(_0x0128('0x5'));var Redis=require(_0x0128('0x6'));var authService=require('../../components/auth/service');var qs=require(_0x0128('0x7'));var logger=require(_0x0128('0x8'))(_0x0128('0x9'));var utils=require(_0x0128('0xa'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0128('0xb'))['db'];var socket=require(_0x0128('0xc'))(new Redis(config[_0x0128('0xd')]));require(_0x0128('0xe'))['register'](socket);config[_0x0128('0xd')]=_[_0x0128('0xf')](config['redis'],{'host':_0x0128('0x10'),'port':0x18eb});var client=jayson[_0x0128('0x11')][_0x0128('0x12')]({'port':0x232a});var values;function respondWithRpcPromise(_0x55da9d,_0x515c8e,_0x3d0a93,_0x404cb2){return new BPromise(function(_0xcdf475,_0x5b148b){var _0xb44c5c=_0x404cb2||client;return _0xb44c5c['request'](_0x55da9d,_0x3d0a93)[_0x0128('0x13')](function(_0x56aadd){logger[_0x0128('0x14')]('User,\x20%s,\x20%s',_0x515c8e,_0x0128('0x15'));logger['debug'](_0x0128('0x16'),_0x515c8e,_0x0128('0x15'),JSON[_0x0128('0x17')](_0x56aadd));if(_0x56aadd[_0x0128('0x18')]){if(_0x56aadd[_0x0128('0x18')][_0x0128('0x19')]===0x1f4){logger['error'](_0x0128('0x1a'),_0x515c8e,_0x56aadd[_0x0128('0x18')][_0x0128('0x1b')]);return _0x5b148b(_0x56aadd[_0x0128('0x18')][_0x0128('0x1b')]);}logger[_0x0128('0x18')]('User,\x20%s,\x20%s',_0x515c8e,_0x56aadd[_0x0128('0x18')][_0x0128('0x1b')]);return _0xcdf475(_0x56aadd[_0x0128('0x18')][_0x0128('0x1b')]);}else{logger[_0x0128('0x14')](_0x0128('0x1a'),_0x515c8e,'request\x20sent');_0xcdf475(_0x56aadd[_0x0128('0x1c')][_0x0128('0x1b')]);}})['catch'](function(_0x4ad121){logger[_0x0128('0x18')](_0x0128('0x1a'),_0x515c8e,_0x4ad121);_0x5b148b(_0x4ad121);});});}function respondWithStatusCode(_0x1bf821,_0x17949a){_0x17949a=_0x17949a||0xcc;return function(_0x34f6c4){if(_0x34f6c4){return _0x1bf821[_0x0128('0x1d')](_0x17949a);}return _0x1bf821[_0x0128('0x1e')](_0x17949a)[_0x0128('0x1f')]();};}function respondWithResult(_0x544f5c,_0x50f0d5){_0x50f0d5=_0x50f0d5||0xc8;return function(_0x1ce8fc){if(_0x1ce8fc){return _0x544f5c['status'](_0x50f0d5)[_0x0128('0x20')](_0x1ce8fc);}};}function respondWithFilteredResult(_0x33354b,_0x22f70c){return function(_0x47d79d){if(_0x47d79d){var _0x135b8b=typeof _0x22f70c['offset']===_0x0128('0x21')&&typeof _0x22f70c[_0x0128('0x22')]===_0x0128('0x21');var _0x415073=_0x47d79d[_0x0128('0x23')];var _0x545a05=_0x135b8b?0x0:_0x22f70c[_0x0128('0x24')];var _0x3a9e26=_0x135b8b?_0x47d79d['count']:_0x22f70c[_0x0128('0x24')]+_0x22f70c[_0x0128('0x22')];var _0x4ee634;if(_0x3a9e26>=_0x415073){_0x3a9e26=_0x415073;_0x4ee634=0xc8;}else{_0x4ee634=0xce;}_0x33354b[_0x0128('0x1e')](_0x4ee634);return _0x33354b[_0x0128('0x25')](_0x0128('0x26'),_0x545a05+'-'+_0x3a9e26+'/'+_0x415073)['json'](_0x47d79d);}return null;};}function saveUpdates(_0x5b7ab2){return function(_0x3340ac){if(_0x3340ac){return _0x3340ac['update'](_0x5b7ab2)['then'](function(_0x5f07c7){return _0x5f07c7;});}return null;};}function removeEntity(_0x28b27c){return function(_0x4d32e3){if(_0x4d32e3){return _0x4d32e3[_0x0128('0x27')]()[_0x0128('0x13')](function(){var _0x345023=_0x4d32e3[_0x0128('0x28')]({'plain':!![]});if(_0x345023['role']===_0x0128('0x29'))return;var _0x1cc531=[{'name':_0x0128('0x2a'),'value':_0x0128('0x2b'),'ignore':!![]},{'name':'Agents','value':_0x0128('0x2c'),'ignore':![]},{'name':_0x0128('0x2d'),'value':_0x0128('0x2e'),'ignore':![]}];var _0x20f35f=_(_0x1cc531)[_0x0128('0x2f')](_0x0128('0x30'))[_0x0128('0x31')]('value')['value']();if(_['includes'](_0x20f35f,_0x345023[_0x0128('0x32')])){return;}var _0x17bb19=_[_0x0128('0x33')](_0x1cc531,['value',_0x345023[_0x0128('0x32')]])['name'];return db[_0x0128('0x34')][_0x0128('0x27')]({'where':{'type':_0x17bb19,'resourceId':_0x345023['id']}})[_0x0128('0x13')](function(){return _0x4d32e3;});})[_0x0128('0x13')](function(){_0x28b27c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x28f4dc){return function(_0x15742b){if(!_0x15742b){_0x28f4dc[_0x0128('0x1d')](0x194);}return _0x15742b;};}function handleError(_0xe9d2b4,_0x4a0e0e){_0x4a0e0e=_0x4a0e0e||0x1f4;return function(_0x4de8dc){logger[_0x0128('0x18')](_0x4de8dc[_0x0128('0x35')]);if(_0x4de8dc[_0x0128('0x36')]){delete _0x4de8dc[_0x0128('0x36')];}_0xe9d2b4[_0x0128('0x1e')](_0x4a0e0e)['send'](_0x4de8dc);};}exports[_0x0128('0x37')]=function(_0x39f32d,_0x5002e3){var _0x5bf049={},_0x595852={'count':0x0,'rows':[]};var _0x5d5eba=_(db[_0x0128('0x38')][_0x0128('0x39')])[_0x0128('0x31')](function(_0x29da11){return{'name':_0x29da11['fieldName'],'type':_0x29da11[_0x0128('0x3a')][_0x0128('0x3b')]};})['filter'](function(_0x1ca0ca){return!_[_0x0128('0x3c')](['password',_0x0128('0x3d')],_0x1ca0ca['name']);})[_0x0128('0x3e')]();_0x5bf049=qs[_0x0128('0x3f')](_0x5d5eba,_0x39f32d);var _0x327946={'where':_0x5bf049[_0x0128('0x40')]};return db[_0x0128('0x38')][_0x0128('0x23')](_0x327946)['then'](function(_0x57fa59){_0x595852[_0x0128('0x23')]=_0x57fa59;if(_0x39f32d['query']['includeAll']){_0x5bf049[_0x0128('0x41')]=[{'all':!![]}];}if(!_['includes'](_0x5bf049[_0x0128('0x42')],'id')){_0x5bf049[_0x0128('0x42')][_0x0128('0x43')]('id');}return db[_0x0128('0x38')][_0x0128('0x44')](_0x5bf049);})[_0x0128('0x13')](function(_0x22dd50){_0x595852[_0x0128('0x45')]=_0x22dd50;if(_0x39f32d[_0x0128('0x46')][_0x0128('0x47')]===_0x0128('0x48')){var _0x5a7270=[];for(var _0x3a01dd=0x0;_0x3a01dd<_0x595852['rows'][_0x0128('0x49')];_0x3a01dd++){_0x5a7270[_0x0128('0x43')](get_open_tabs('chat',_0x595852[_0x0128('0x45')][_0x3a01dd][_0x0128('0x4a')]));_0x5a7270[_0x0128('0x43')](get_open_tabs(_0x0128('0x4b'),_0x595852[_0x0128('0x45')][_0x3a01dd]['dataValues']));_0x5a7270[_0x0128('0x43')](get_open_tabs(_0x0128('0x4c'),_0x595852[_0x0128('0x45')][_0x3a01dd][_0x0128('0x4a')]));_0x5a7270[_0x0128('0x43')](get_open_tabs(_0x0128('0x4d'),_0x595852[_0x0128('0x45')][_0x3a01dd][_0x0128('0x4a')]));_0x5a7270[_0x0128('0x43')](get_open_tabs('openchannel',_0x595852[_0x0128('0x45')][_0x3a01dd]['dataValues']));_0x5a7270[_0x0128('0x43')](get_open_tabs(_0x0128('0x4e'),_0x595852[_0x0128('0x45')][_0x3a01dd][_0x0128('0x4a')]));}return BPromise[_0x0128('0x4f')](_0x5a7270)[_0x0128('0x13')](function(_0x178f22){return _0x595852;});}else{return _0x595852;}})[_0x0128('0x13')](respondWithFilteredResult(_0x5002e3,_0x5bf049))['catch'](handleError(_0x5002e3,null));};exports['show']=function(_0x44da7f,_0x25ac3c){var _0x5f4b09={'raw':![],'where':{'id':_0x44da7f[_0x0128('0x50')]['id']}},_0x1b4cf3={};_0x1b4cf3['model']=_[_0x0128('0x51')](_[_0x0128('0x52')](db[_0x0128('0x38')][_0x0128('0x39')]),['password','salt']);_0x1b4cf3[_0x0128('0x46')]=_['keys'](_0x44da7f[_0x0128('0x46')]);_0x1b4cf3['filters']=_[_0x0128('0x53')](_0x1b4cf3[_0x0128('0x54')],_0x1b4cf3[_0x0128('0x46')]);_0x5f4b09[_0x0128('0x42')]=_['intersection'](_0x1b4cf3[_0x0128('0x54')],qs[_0x0128('0x55')](_0x44da7f[_0x0128('0x46')][_0x0128('0x55')]));_0x5f4b09[_0x0128('0x42')]=_0x5f4b09['attributes'][_0x0128('0x49')]?_0x5f4b09[_0x0128('0x42')]:_0x1b4cf3[_0x0128('0x54')];if(_0x44da7f[_0x0128('0x46')][_0x0128('0x56')]){_0x5f4b09['include']=[{'all':!![]}];}_0x5f4b09=_['merge']({},_0x5f4b09,_0x44da7f[_0x0128('0x57')]);if(!_['includes'](_0x5f4b09[_0x0128('0x42')],'id')){_0x5f4b09['attributes'][_0x0128('0x43')]('id');}return db[_0x0128('0x38')]['find'](_0x5f4b09)['then'](handleEntityNotFound(_0x25ac3c,null))[_0x0128('0x13')](function(_0x13aaa3){var _0x428dbc=[];values=_0x13aaa3;if(_0x44da7f[_0x0128('0x46')]['openTabs']===_0x0128('0x48')){_0x428dbc[_0x0128('0x43')](get_open_tabs(_0x0128('0x58'),_0x13aaa3[_0x0128('0x4a')]));_0x428dbc[_0x0128('0x43')](get_open_tabs('sms',_0x13aaa3['dataValues']));_0x428dbc[_0x0128('0x43')](get_open_tabs(_0x0128('0x59'),_0x13aaa3['dataValues']));_0x428dbc[_0x0128('0x43')](get_open_tabs(_0x0128('0x4e'),_0x13aaa3['dataValues']));_0x428dbc[_0x0128('0x43')](get_open_tabs(_0x0128('0x4c'),_0x13aaa3[_0x0128('0x4a')]));_0x428dbc[_0x0128('0x43')](get_open_tabs(_0x0128('0x4d'),_0x13aaa3[_0x0128('0x4a')]));return BPromise[_0x0128('0x4f')](_0x428dbc);}else{return values;}})['then'](function(_0x5531ec){return values;})[_0x0128('0x13')](respondWithResult(_0x25ac3c,null))[_0x0128('0x5a')](handleError(_0x25ac3c,null));};exports[_0x0128('0x5b')]=function(_0x3ec069,_0x260ee3){if(_0x3ec069[_0x0128('0x5c')]['id']){delete _0x3ec069[_0x0128('0x5c')]['id'];}delete _0x3ec069[_0x0128('0x5c')][_0x0128('0x32')];return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x3ec069['params']['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x260ee3,null))[_0x0128('0x13')](saveUpdates(_0x3ec069[_0x0128('0x5c')],null))[_0x0128('0x13')](respondWithResult(_0x260ee3,null))[_0x0128('0x5a')](handleError(_0x260ee3,null));};exports['describe']=function(_0x5e7106,_0x4f0614){return db[_0x0128('0x38')][_0x0128('0x5d')]()[_0x0128('0x13')](respondWithResult(_0x4f0614,null))[_0x0128('0x5a')](handleError(_0x4f0614,null));};exports[_0x0128('0x5e')]=function(_0xd27b98,_0x5e1c53){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0xd27b98[_0x0128('0x50')]['id']}})['then'](handleEntityNotFound(_0x5e1c53,null))['then'](function(_0x4b5ff4){if(_0x4b5ff4){return _0x4b5ff4['addContacts'](_0xd27b98['body'][_0x0128('0x5f')],_['omit'](_0xd27b98['body'],[_0x0128('0x5f'),'id'])||{});}})[_0x0128('0x13')](respondWithResult(_0x5e1c53,null))[_0x0128('0x5a')](handleError(_0x5e1c53,null));};function validateUser(_0x36e9b5){return new BPromise(function(_0x2752d6,_0x22b48d){if(_0x36e9b5[_0x0128('0x60')])return _0x2752d6(_0x36e9b5);return db[_0x0128('0x61')]['findById'](0x1)[_0x0128('0x13')](function(_0x23d15b){if(_0x23d15b[_0x0128('0x62')])authService[_0x0128('0x63')](_0x36e9b5['password']);db[_0x0128('0x38')][_0x0128('0x64')](_0x0128('0x60'))[_0x0128('0x13')](function(_0x494374){if(_[_0x0128('0x65')](_0x494374)){_0x36e9b5[_0x0128('0x60')]=_0x23d15b[_0x0128('0x66')]||0x1;return;}if(_[_0x0128('0x65')](_0x23d15b[_0x0128('0x66')])||_0x23d15b[_0x0128('0x66')]===_0x494374){_0x36e9b5[_0x0128('0x60')]=_0x494374+0x1;return;}if(_0x23d15b[_0x0128('0x66')]>_0x494374){_0x36e9b5['internal']=_0x23d15b[_0x0128('0x66')];return;}return db['sequelize']['query'](_0x0128('0x67'),{'type':db[_0x0128('0x68')][_0x0128('0x69')][_0x0128('0x6a')]})[_0x0128('0x13')](function(_0x5d77a9){if(_0x5d77a9&&_0x5d77a9['length']){for(var _0x4aedf0=0x0,_0x4bc2b6=_0x5d77a9[_0x0128('0x49')];_0x4aedf0<_0x4bc2b6&&_['isNil'](_0x36e9b5['internal']);_0x4aedf0++){if(_0x23d15b[_0x0128('0x66')]<=_0x5d77a9[_0x4aedf0][_0x0128('0x6b')]){_0x36e9b5['internal']=_0x5d77a9[_0x4aedf0][_0x0128('0x6b')];}else if(_0x23d15b['min_internal']>_0x5d77a9[_0x4aedf0]['from']&&_0x23d15b[_0x0128('0x66')]<=_0x5d77a9[_0x4aedf0]['to']){_0x36e9b5[_0x0128('0x60')]=_0x23d15b['min_internal'];}}}if(_[_0x0128('0x65')](_0x36e9b5['internal'])){_0x36e9b5[_0x0128('0x60')]=_0x494374+0x1;}return _0x2752d6(_0x36e9b5);});});})[_0x0128('0x5a')](function(_0x5a1b55){_0x22b48d(_0x5a1b55);});});}function updateUser(_0x565fde){return new BPromise(function(_0x18e97b,_0x34a669){try{if(_0x565fde['voicemail']){_0x565fde[_0x0128('0x6c')]=_0x565fde[_0x0128('0x60')];_0x565fde[_0x0128('0x6d')]={'mailbox':_0x565fde[_0x0128('0x60')],'password':_0x565fde[_0x0128('0x6e')],'fullname':_0x565fde[_0x0128('0x6f')],'email':_0x565fde[_0x0128('0x70')]};}if(_0x565fde['role']===_0x0128('0x2c')){if(!_0x565fde[_0x0128('0x71')])_0x565fde[_0x0128('0x71')]=[_0x0128('0x72'),_0x0128('0x73'),'103',_0x0128('0x74'),_0x0128('0x75'),'104',_0x0128('0x76'),'106','107',_0x0128('0x77'),_0x0128('0x78'),_0x0128('0x79'),'111',_0x0128('0x7a'),'115'];}_0x18e97b(_0x565fde);}catch(_0x1b9b54){_0x34a669(_0x1b9b54);}});}exports[_0x0128('0x7b')]=function(_0x36c567,_0x142963){if(_0x36c567[_0x0128('0x2b')][_0x0128('0x32')]==='agent')throw new Error(_0x0128('0x7c'));if(_0x36c567[_0x0128('0x5c')][_0x0128('0x32')]===_0x0128('0x2b')&&_0x36c567['user']['role']!==_0x0128('0x29')){throw new Error(_0x0128('0x7d'));}if(_0x36c567[_0x0128('0x5c')][_0x0128('0x32')]===_0x0128('0x29')&&_0x36c567[_0x0128('0x2b')]['role']!==_0x0128('0x29')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil[_0x0128('0x7e')]([_0x36c567[_0x0128('0x5c')]])[_0x0128('0x13')](function(){return validateUser(_0x36c567['body']);})['then'](function(_0x4ec7f1){return updateUser(_0x4ec7f1)['then'](function(_0x38ed8e){if(_0x38ed8e[_0x0128('0x32')]===_0x0128('0x29')){_0x38ed8e[_0x0128('0x7f')]=_0x36c567['user'][_0x0128('0x7f')];delete _0x38ed8e[_0x0128('0x80')];}return _0x38ed8e;});})['then'](function(_0x310484){return db[_0x0128('0x38')][_0x0128('0x7b')](_0x310484,{'include':[{'model':db[_0x0128('0x6d')],'as':_0x0128('0x6d')}]});})[_0x0128('0x13')](function(_0x3b762d){if(_0x36c567[_0x0128('0x5c')][_0x0128('0x32')]===_0x0128('0x2b'))return _0x3b762d;if(_0x36c567['user'][_0x0128('0x32')]!==_0x0128('0x2b'))return _0x3b762d;return db[_0x0128('0x81')]['find']({'where':{'name':_0x3b762d[_0x0128('0x32')]===_0x0128('0x2c')?_0x0128('0x82'):'Telephones','userProfileId':_0x36c567[_0x0128('0x2b')]['userProfileId']},'raw':!![]})[_0x0128('0x13')](function(_0x3da8f2){if(!_0x3da8f2||_0x3da8f2[_0x0128('0x83')]!=0x0)return _0x3b762d;return db['UserProfileResource'][_0x0128('0x7b')]({'name':_0x3b762d[_0x0128('0x36')],'resourceId':_0x3b762d['id'],'type':_0x3da8f2[_0x0128('0x36')],'sectionId':_0x3da8f2['id']},{})['then'](function(){return _0x3b762d;});})['catch'](function(_0x43f1c7){logger[_0x0128('0x18')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x43f1c7);throw _0x43f1c7;});})[_0x0128('0x13')](respondWithResult(_0x142963,0xc9))[_0x0128('0x5a')](handleError(_0x142963,null));};exports[_0x0128('0x84')]=function(_0x108d6f,_0x1ed5e5){var _0x5eb042=_0x108d6f[_0x0128('0x5c')];var _0x54662d=[];if(_0x108d6f[_0x0128('0x2b')][_0x0128('0x32')]===_0x0128('0x2c'))throw new Error('Unauthorized');if(_[_0x0128('0x85')](_0x5eb042,[_0x0128('0x32'),_0x0128('0x2b')])&&_0x108d6f[_0x0128('0x2b')]['role']!=='admin'){throw new Error(_0x0128('0x7d'));}if(_['some'](_0x5eb042,[_0x0128('0x32'),_0x0128('0x29')])&&_0x108d6f[_0x0128('0x2b')]['role']!==_0x0128('0x29')){throw new Error(_0x0128('0x86'));}return licenseUtil[_0x0128('0x7e')](_0x5eb042)[_0x0128('0x13')](function(){return validateUser(_0x5eb042[0x0]);})[_0x0128('0x13')](function(){for(var _0x21c955=0x1;_0x21c955<_0x5eb042[_0x0128('0x49')];_0x21c955++){var _0x18d712=_0x5eb042[_0x21c955-0x1][_0x0128('0x60')];if(!_0x5eb042[_0x21c955][_0x0128('0x60')])_0x5eb042[_0x21c955][_0x0128('0x60')]=_0x18d712+0x1;_0x54662d[_0x0128('0x43')](validateUser(_0x5eb042[_0x21c955]));}return BPromise[_0x0128('0x4f')](_0x54662d);})[_0x0128('0x13')](function(){_0x54662d=[];for(var _0x36e695=0x0;_0x36e695<_0x5eb042[_0x0128('0x49')];_0x36e695++){_0x54662d[_0x0128('0x43')](updateUser(_0x5eb042[_0x36e695]));}return BPromise[_0x0128('0x4f')](_0x54662d);})[_0x0128('0x13')](function(){return BPromise['each'](_0x5eb042,function(_0x468679){return db[_0x0128('0x38')]['create'](_0x468679,{'include':[{'model':db[_0x0128('0x6d')],'as':'VoiceMail'}]})[_0x0128('0x13')](function(_0x561663){_0x468679['id']=_0x561663['id'];return _0x468679;});});})[_0x0128('0x13')](function(_0x26f422){if(_0x108d6f[_0x0128('0x5c')][_0x0128('0x32')]===_0x0128('0x2b'))return _0x26f422;if(_0x108d6f['user']['role']!==_0x0128('0x2b'))return _0x26f422;var _0x1c6961=_[_0x0128('0x85')](_0x26f422,function(_0x2b014b){return _0x2b014b[_0x0128('0x32')]===_0x0128('0x2c')||_0x2b014b['role']===_0x0128('0x2e');});if(!_0x1c6961)return _0x26f422;return db['UserProfileSection'][_0x0128('0x44')]({'where':{'name':{'$or':[_0x0128('0x82'),_0x0128('0x2d')]},'userProfileId':_0x108d6f[_0x0128('0x2b')][_0x0128('0x80')]},'raw':!![]})[_0x0128('0x13')](function(_0x26df4c){if(_[_0x0128('0x87')](_0x26df4c)||!_['some'](_0x26df4c,[_0x0128('0x83'),0x0]))return _0x26f422;_0x54662d=[];var _0x2b8e84=_(_0x26df4c)[_0x0128('0x31')](function(_0x17f262){if(_0x17f262[_0x0128('0x83')]===0x1)return;return _0x17f262[_0x0128('0x36')]===_0x0128('0x82')?_0x0128('0x2c'):_0x0128('0x2e');})[_0x0128('0x88')]()[_0x0128('0x3e')]();for(var _0x3b9448=0x0;_0x3b9448<_0x26f422[_0x0128('0x49')];_0x3b9448++){if(!_[_0x0128('0x3c')](_0x2b8e84,_0x26f422[_0x3b9448][_0x0128('0x32')]))return;var _0x55f109=_0x26f422[_0x3b9448][_0x0128('0x32')]==='agent'?'Agents':_0x0128('0x2d');_0x54662d[_0x0128('0x43')](db[_0x0128('0x34')]['create']({'name':_0x26f422[_0x3b9448][_0x0128('0x36')],'resourceId':_0x26f422[_0x3b9448]['id'],'type':_0x55f109,'sectionId':_[_0x0128('0x33')](_0x26df4c,[_0x0128('0x36'),_0x55f109])['id']},{}));}return BPromise[_0x0128('0x4f')](_0x54662d);});})[_0x0128('0x13')](respondWithResult(_0x1ed5e5,0xc9))[_0x0128('0x5a')](handleError(_0x1ed5e5,null));};exports[_0x0128('0x89')]=function(_0x44cab3,_0x5677fb){if(_0x44cab3[_0x0128('0x5c')]['id']){delete _0x44cab3[_0x0128('0x5c')]['id'];}return db['User']['find']({'where':{'id':_0x44cab3[_0x0128('0x50')]['id']}})[_0x0128('0x13')](function(_0x57b6c8){if(!_0x57b6c8)return null;if(_0x57b6c8['id']===_0x44cab3[_0x0128('0x2b')]['id']){if(!_0x44cab3[_0x0128('0x5c')][_0x0128('0x8a')]||!_0x44cab3['body'][_0x0128('0x8b')]){throw new db[(_0x0128('0x8c'))][(_0x0128('0x8d'))](_0x0128('0x8e'));}if(!_0x57b6c8[_0x0128('0x8f')](_0x44cab3['body'][_0x0128('0x8a')])){throw new db[(_0x0128('0x8c'))][(_0x0128('0x8d'))](_0x0128('0x90'));}if(_0x44cab3[_0x0128('0x5c')]['oldPassword']===_0x44cab3[_0x0128('0x5c')][_0x0128('0x8b')]){throw new db[(_0x0128('0x8c'))][(_0x0128('0x8d'))](_0x0128('0x91'));}}else if(_0x44cab3[_0x0128('0x2b')][_0x0128('0x32')]===_0x0128('0x29')){if(!_0x44cab3[_0x0128('0x5c')][_0x0128('0x8b')]){throw new db[(_0x0128('0x8c'))][(_0x0128('0x8d'))](_0x0128('0x92'));}}else if(_0x44cab3[_0x0128('0x2b')][_0x0128('0x32')]===_0x0128('0x2b')){if(!_0x44cab3[_0x0128('0x5c')][_0x0128('0x8b')]){throw new db[(_0x0128('0x8c'))]['ValidationError']('Invalid\x20body\x20format.\x20Use\x20newPassword');}if(_0x57b6c8[_0x0128('0x32')]!==_0x0128('0x2c')){throw new db[(_0x0128('0x8c'))][(_0x0128('0x8d'))](_0x0128('0x7c'));}}else{throw new db[(_0x0128('0x8c'))][(_0x0128('0x8d'))](_0x0128('0x7c'));}return _0x57b6c8;})[_0x0128('0x13')](handleEntityNotFound(_0x5677fb,null))['then'](function(_0xfd9d37){return db[_0x0128('0x61')][_0x0128('0x93')]({'attributes':['id',_0x0128('0x62'),_0x0128('0x94'),_0x0128('0x95')]})[_0x0128('0x13')](function(_0x18a4cd){if(_0x18a4cd[_0x0128('0x62')])authService[_0x0128('0x63')](_0x44cab3['body'][_0x0128('0x8b')]);if(!_0x18a4cd['enforcePasswordHistory']||!_0xfd9d37[_0x0128('0x96')])return _0xfd9d37;authService[_0x0128('0x97')](_0x44cab3[_0x0128('0x5c')]['newPassword'],_0xfd9d37[_0x0128('0x96')],_0x18a4cd[_0x0128('0x95')]);return _0xfd9d37;})[_0x0128('0x13')](saveUpdates({'password':_0x44cab3[_0x0128('0x5c')]['newPassword'],'passwordResetAt':_0x44cab3[_0x0128('0x2b')]['id']==_0x44cab3[_0x0128('0x50')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x44cab3[_0x0128('0x5c')][_0x0128('0x8b')],_0xfd9d37['previousPasswords'])},null));})[_0x0128('0x13')](respondWithResult(_0x5677fb,null))['catch'](handleError(_0x5677fb,null));};exports[_0x0128('0x98')]=function(_0x1aad2f,_0x261021){var _0x15a36b=_0x1aad2f[_0x0128('0x5c')][_0x0128('0x99')];return db[_0x0128('0x38')]['find']({'where':{'id':_0x1aad2f[_0x0128('0x50')]['id']},'attributes':['id','name',_0x0128('0x32'),_0x0128('0x9a'),_0x0128('0x9b'),_0x0128('0x9c'),_0x0128('0x9d')]})[_0x0128('0x13')](handleEntityNotFound(_0x261021,null))['then'](function(_0x4c4ba1){if(_0x4c4ba1){if(!utils[_0x0128('0x9e')](_0x15a36b)){throw new db[(_0x0128('0x8c'))][(_0x0128('0x8d'))](_0x0128('0x9f'));}return _0x4c4ba1[_0x0128('0xa0')+_[_0x0128('0xa1')](_0x15a36b[_0x0128('0xa2')]())+_0x0128('0xa3')](_0x1aad2f[_0x0128('0x5c')][_0x0128('0x5f')],{'penalty':_0x1aad2f[_0x0128('0x5c')][_0x0128('0xa4')]||0x0})['spread'](function(_0x4e2bca){for(var _0x2478a0=0x0;_0x2478a0<_0x1aad2f[_0x0128('0x5c')][_0x0128('0x5f')][_0x0128('0x49')];_0x2478a0+=0x1){var _0x36f074={'UserId':Number(_0x1aad2f[_0x0128('0x50')]['id'])};_0x36f074[_[_0x0128('0xa1')](_0x15a36b[_0x0128('0xa2')]())+'QueueId']=Number(_0x1aad2f['body'][_0x0128('0x5f')][_0x2478a0]);socket[_0x0128('0xa5')](_0x0128('0x2b')+_[_0x0128('0xa1')](_0x15a36b[_0x0128('0xa2')]())+_0x0128('0xa6'),_0x36f074);}return _0x4e2bca;})[_0x0128('0x13')](function(){if(_0x15a36b===_0x0128('0xa7')){return db[_0x0128('0xa8')]['findAll']({'where':{'id':_0x1aad2f[_0x0128('0x5c')][_0x0128('0x5f')]||[]},'raw':!![],'attributes':['id',_0x0128('0x36')]});}})[_0x0128('0x13')](function(_0x3482ea){var _0x7b4b4d=_0x4c4ba1[_0x0128('0x28')]({'plain':!![]});var _0x3d7e05=[];if(_0x15a36b==='voice'&&_0x7b4b4d['role']===_0x0128('0x2c')&&_0x7b4b4d[_0x0128('0x9a')]){for(var _0x4fad57=0x0;_0x4fad57<_0x3482ea[_0x0128('0x49')];_0x4fad57+=0x1){_0x3d7e05['push']({'membername':_0x7b4b4d[_0x0128('0x36')],'UserId':_0x7b4b4d['id'],'queue_name':_0x3482ea[_0x4fad57]['name'],'VoiceQueueId':_0x3482ea[_0x4fad57]['id'],'interface':_[_0x0128('0x65')](_0x7b4b4d[_0x0128('0x9d')])?util[_0x0128('0xa9')](_0x0128('0xaa'),_0x7b4b4d['name']):_0x7b4b4d['interface'],'paused':_0x7b4b4d['voicePause']||![],'penalty':_0x1aad2f['body']['penalty']||0x0});}return BPromise['each'](_0x3d7e05,function(_0x8fac96){return db[_0x0128('0xab')][_0x0128('0xac')](_0x8fac96);});}return _0x4c4ba1;});}})[_0x0128('0x13')](respondWithStatusCode(_0x261021,null))[_0x0128('0x5a')](handleError(_0x261021,null));};exports[_0x0128('0xad')]=function(_0x14b672,_0x3f50e4){var _0x4058a1;return db[_0x0128('0x38')]['find']({'where':{'id':_0x14b672[_0x0128('0x50')]['id']},'attributes':['id','name',_0x0128('0x32')]})[_0x0128('0x13')](handleEntityNotFound(_0x3f50e4,null))[_0x0128('0x13')](function(_0x52e67f){if(_0x52e67f){_0x4058a1=_0x52e67f;if(!_0x14b672[_0x0128('0x46')][_0x0128('0x99')]||!utils[_0x0128('0x9e')](_0x14b672[_0x0128('0x46')][_0x0128('0x99')])){throw new db[(_0x0128('0x8c'))][(_0x0128('0x8d'))](_0x0128('0x9f'));}return _0x52e67f[_0x0128('0xae')+_[_0x0128('0xa1')](_0x14b672['query']['channel'][_0x0128('0xa2')]())+_0x0128('0xa3')](_0x14b672['query'][_0x0128('0x5f')]);}})[_0x0128('0x13')](function(_0x1105b3){if(_[_0x0128('0xaf')](_0x14b672[_0x0128('0x46')][_0x0128('0x5f')])){for(var _0xd0d879=0x0;_0xd0d879<_0x14b672[_0x0128('0x46')][_0x0128('0x5f')][_0x0128('0x49')];_0xd0d879+=0x1){var _0x50e5e8={'UserId':Number(_0x14b672[_0x0128('0x50')]['id'])};_0x50e5e8[_[_0x0128('0xa1')](_0x14b672[_0x0128('0x46')][_0x0128('0x99')][_0x0128('0xa2')]())+_0x0128('0xb0')]=Number(_0x14b672[_0x0128('0x46')][_0x0128('0x5f')][_0xd0d879]);socket[_0x0128('0xa5')](_0x0128('0x2b')+_[_0x0128('0xa1')](_0x14b672[_0x0128('0x46')]['channel']['toLowerCase']())+'Queue:remove',_0x50e5e8);}}else{var _0x50e5e8={'UserId':Number(_0x14b672['params']['id'])};_0x50e5e8[_[_0x0128('0xa1')](_0x14b672[_0x0128('0x46')][_0x0128('0x99')][_0x0128('0xa2')]())+_0x0128('0xb0')]=Number(_0x14b672[_0x0128('0x46')][_0x0128('0x5f')]);socket[_0x0128('0xa5')](_0x0128('0x2b')+_[_0x0128('0xa1')](_0x14b672[_0x0128('0x46')][_0x0128('0x99')][_0x0128('0xa2')]())+_0x0128('0xb1'),_0x50e5e8);}return _0x1105b3;})[_0x0128('0x13')](function(){if(_0x14b672[_0x0128('0x46')][_0x0128('0x99')]==='voice'){return db[_0x0128('0xab')][_0x0128('0x27')]({'where':{'UserId':_0x14b672['params']['id'],'VoiceQueueId':_0x14b672[_0x0128('0x46')][_0x0128('0x5f')]},'individualHooks':!![]})['then'](function(){return _0x4058a1;});}return _0x4058a1;})[_0x0128('0x13')](respondWithStatusCode(_0x3f50e4,null))[_0x0128('0x5a')](handleError(_0x3f50e4,null));};exports[_0x0128('0xb2')]=function(_0x552142,_0x4d2567){_0x552142['body'][_0x0128('0xb3')]=_0x552142['file'][_0x0128('0xb4')];return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x552142[_0x0128('0x50')]['id']}})['then'](handleEntityNotFound(_0x4d2567,null))[_0x0128('0x13')](saveUpdates(_0x552142['body'],null))[_0x0128('0x13')](respondWithResult(_0x4d2567,null))[_0x0128('0x5a')](handleError(_0x4d2567,null));};exports['getAvatar']=function(_0x4d89b8,_0x31135a){var _0x65fdb0=path[_0x0128('0xb5')](config[_0x0128('0xb6')],'server/files/images/logos/default_profile.png');return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x4d89b8[_0x0128('0x50')]['id']},'attributes':['id',_0x0128('0xb3')],'raw':!![]})[_0x0128('0x13')](handleEntityNotFound(_0x31135a,null))['then'](function(_0x3e686b){if(_0x3e686b){if(_[_0x0128('0x65')](_0x3e686b[_0x0128('0xb3')])){return _0x31135a[_0x0128('0xb7')](_0x65fdb0);}else{if(!fs[_0x0128('0xb8')](path[_0x0128('0xb5')](config['root'],_0x0128('0xb9'),_0x3e686b[_0x0128('0xb3')]))){return _0x31135a[_0x0128('0xb7')](_0x65fdb0);}return _0x31135a[_0x0128('0xb7')](path['join'](config[_0x0128('0xb6')],_0x0128('0xb9'),_0x3e686b[_0x0128('0xb3')]));}}})[_0x0128('0x5a')](handleError(_0x31135a,null));};exports[_0x0128('0xba')]=function(_0x560afb,_0x358246){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x560afb[_0x0128('0x50')]['id']},'attributes':['id']})['then'](handleEntityNotFound(_0x358246,null))[_0x0128('0x13')](function(_0x582adb){var _0x416ac4=[];values=_0x582adb[_0x0128('0x4a')];_0x416ac4[_0x0128('0x43')](get_open_tabs(_0x0128('0x58'),_0x582adb[_0x0128('0x4a')]));_0x416ac4[_0x0128('0x43')](get_open_tabs(_0x0128('0x4b'),_0x582adb[_0x0128('0x4a')]));_0x416ac4[_0x0128('0x43')](get_open_tabs(_0x0128('0x59'),_0x582adb[_0x0128('0x4a')]));_0x416ac4[_0x0128('0x43')](get_open_tabs(_0x0128('0x4e'),_0x582adb[_0x0128('0x4a')]));_0x416ac4[_0x0128('0x43')](get_open_tabs(_0x0128('0x4c'),_0x582adb[_0x0128('0x4a')]));_0x416ac4[_0x0128('0x43')](get_open_tabs(_0x0128('0x4d'),_0x582adb[_0x0128('0x4a')]));return BPromise[_0x0128('0x4f')](_0x416ac4);})[_0x0128('0x13')](function(_0x33c7b8){var _0x2169f9=[];if(_0x33c7b8){for(var _0x3f635e=0x0;_0x3f635e<values['ChatOpenTabs'][_0x0128('0x49')];_0x3f635e++){var _0x5a3e1c=values['ChatOpenTabs'][_0x3f635e];_0x2169f9[_0x0128('0x43')]({'channel':_0x0128('0xbb'),'id':_0x5a3e1c['id'],'createdAt':_0x5a3e1c[_0x0128('0xbc')]});}for(var _0x3f635e=0x0;_0x3f635e<values[_0x0128('0xbd')]['length'];_0x3f635e++){var _0x5a3e1c=values[_0x0128('0xbd')][_0x3f635e];_0x2169f9[_0x0128('0x43')]({'channel':_0x0128('0xbe'),'id':_0x5a3e1c['id'],'createdAt':_0x5a3e1c[_0x0128('0xbc')]});}for(var _0x3f635e=0x0;_0x3f635e<values[_0x0128('0xbf')][_0x0128('0x49')];_0x3f635e++){var _0x5a3e1c=values[_0x0128('0xbf')][_0x3f635e];_0x2169f9[_0x0128('0x43')]({'channel':_0x0128('0xc0'),'id':_0x5a3e1c['id'],'createdAt':_0x5a3e1c[_0x0128('0xbc')]});}for(var _0x3f635e=0x0;_0x3f635e<values[_0x0128('0xc1')][_0x0128('0x49')];_0x3f635e++){var _0x5a3e1c=values[_0x0128('0xc1')][_0x3f635e];_0x2169f9[_0x0128('0x43')]({'channel':_0x0128('0xc2'),'id':_0x5a3e1c['id'],'createdAt':_0x5a3e1c[_0x0128('0xbc')]});}for(var _0x3f635e=0x0;_0x3f635e<values['SmsOpenTabs'][_0x0128('0x49')];_0x3f635e++){var _0x5a3e1c=values['SmsOpenTabs'][_0x3f635e];_0x2169f9[_0x0128('0x43')]({'channel':_0x0128('0xc3'),'id':_0x5a3e1c['id'],'createdAt':_0x5a3e1c[_0x0128('0xbc')]});}for(var _0x3f635e=0x0;_0x3f635e<values[_0x0128('0xc4')][_0x0128('0x49')];_0x3f635e++){var _0x5a3e1c=values[_0x0128('0xc4')][_0x3f635e];_0x2169f9[_0x0128('0x43')]({'channel':_0x0128('0xc5'),'id':_0x5a3e1c['id'],'createdAt':_0x5a3e1c['createdAt']});}var _0x545a70={'count':_0x2169f9[_0x0128('0x49')],'rows':_0x2169f9};return _0x545a70;}else return null;})['then'](respondWithResult(_0x358246,null))[_0x0128('0x5a')](handleError(_0x358246,null));};exports['getContacts']=function(_0x548f80,_0x52a33d){var _0x21ec70={};var _0x376738={};var _0x3d0027;var _0x349d9b;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x548f80[_0x0128('0x50')]['id']}})['then'](handleEntityNotFound(_0x52a33d,null))['then'](function(_0x2378ee){if(_0x2378ee){_0x3d0027=_0x2378ee;_0x376738['model']=_[_0x0128('0x52')](db['CmContact']['rawAttributes']);_0x376738[_0x0128('0x46')]=_[_0x0128('0x52')](_0x548f80[_0x0128('0x46')]);_0x376738[_0x0128('0xc6')]=_[_0x0128('0x53')](_0x376738['model'],_0x376738[_0x0128('0x46')]);_0x21ec70['attributes']=_[_0x0128('0x53')](_0x376738[_0x0128('0x54')],qs[_0x0128('0x55')](_0x548f80['query'][_0x0128('0x55')]));_0x21ec70[_0x0128('0x42')]=_0x21ec70[_0x0128('0x42')]['length']?_0x21ec70['attributes']:_0x376738[_0x0128('0x54')];_0x21ec70[_0x0128('0xc7')]=qs['sort'](_0x548f80[_0x0128('0x46')][_0x0128('0xc8')]);_0x21ec70[_0x0128('0x40')]=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x548f80[_0x0128('0x46')],_0x376738[_0x0128('0xc6')]));if(_0x548f80[_0x0128('0x46')][_0x0128('0x2f')]){_0x21ec70['where']=_['merge'](_0x21ec70['where'],{'$or':_[_0x0128('0x31')](_0x21ec70[_0x0128('0x42')],function(_0x17c895){var _0x1d5818={};_0x1d5818[_0x17c895]={'$like':'%'+_0x548f80['query']['filter']+'%'};return _0x1d5818;})});}_0x21ec70=_[_0x0128('0xca')]({},_0x21ec70,_0x548f80[_0x0128('0x57')]);return _0x3d0027[_0x0128('0xcb')](_0x21ec70);}})['then'](function(_0x5371e7){if(_0x5371e7){_0x349d9b=_0x5371e7['length'];if(_0x548f80['query'][_0x0128('0xcc')]('includeAll')){_0x21ec70['include']=[{'model':db[_0x0128('0xcd')],'as':'List','required':![]},{'model':db[_0x0128('0xce')],'as':_0x0128('0xcf'),'attributes':['id',_0x0128('0x36'),'color'],'where':_0x548f80[_0x0128('0x46')]['tag']?{'id':_0x548f80[_0x0128('0x46')][_0x0128('0xd0')]}:undefined,'required':_0x548f80['query'][_0x0128('0xd0')]?!![]:![]}];}if(!_0x548f80[_0x0128('0x46')][_0x0128('0xcc')](_0x0128('0xd1'))){_0x21ec70[_0x0128('0x22')]=qs['limit'](_0x548f80[_0x0128('0x46')][_0x0128('0x22')]);_0x21ec70[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x548f80['query'][_0x0128('0x24')]);}return _0x3d0027[_0x0128('0xcb')](_0x21ec70);}})[_0x0128('0x13')](function(_0x46328d){if(_0x46328d){return _0x46328d?{'count':_0x349d9b,'rows':_0x46328d}:null;}})[_0x0128('0x13')](respondWithResult(_0x52a33d,null))['catch'](handleError(_0x52a33d,null));};exports[_0x0128('0xd2')]=function(_0x131d17,_0x2d96fa){var _0x442d0f;var _0x307281;var _0x115b55={};var _0x455e59;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x131d17['params']['id']},'attributes':['id',_0x0128('0x36'),_0x0128('0x32')]})[_0x0128('0x13')](handleEntityNotFound(_0x2d96fa,null))[_0x0128('0x13')](function(_0x1c5eba){if(!utils['isValidChannel'](_0x131d17[_0x0128('0x46')][_0x0128('0x99')])){throw new db[(_0x0128('0x8c'))]['ValidationError'](_0x0128('0x9f'));}_0x442d0f=_0x1c5eba;var _0x2f9880={};_0x2f9880[_0x0128('0x54')]=_[_0x0128('0x52')](db[_[_0x0128('0xa1')](_0x131d17[_0x0128('0x46')][_0x0128('0x99')])+_0x0128('0xd3')][_0x0128('0x39')]);_0x2f9880[_0x0128('0x46')]=_[_0x0128('0x52')](_0x131d17['query']);_0x2f9880[_0x0128('0xc6')]=_['intersection'](_0x2f9880[_0x0128('0x54')],_0x2f9880[_0x0128('0x46')]);_0x115b55['attributes']=_[_0x0128('0x53')](_0x2f9880[_0x0128('0x54')],qs[_0x0128('0x55')](_0x131d17[_0x0128('0x46')]['fields']));_0x115b55[_0x0128('0x42')]=_0x115b55[_0x0128('0x42')][_0x0128('0x49')]?_0x115b55[_0x0128('0x42')]:_0x2f9880[_0x0128('0x54')];_0x115b55[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x131d17[_0x0128('0x46')][_0x0128('0xc8')]);_0x115b55[_0x0128('0x40')]=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x131d17[_0x0128('0x46')],_0x2f9880['filters']));if(_0x131d17[_0x0128('0x46')][_0x0128('0x2f')]){_0x115b55[_0x0128('0x40')]=_['merge'](_0x115b55[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x115b55[_0x0128('0x42')],function(_0x4f2822){var _0xc4e8fb={};_0xc4e8fb[_0x4f2822]={'$like':'%'+_0x131d17[_0x0128('0x46')]['filter']+'%'};return _0xc4e8fb;})});}_0x115b55=_['merge']({},_0x115b55,_0x131d17[_0x0128('0x57')]);switch(_0x442d0f[_0x0128('0x32')]){case'admin':return db[_[_0x0128('0xa1')](_0x131d17[_0x0128('0x46')]['channel'])+_0x0128('0xd3')]['findAll'](_0x115b55);case _0x0128('0x2b'):case _0x0128('0x2c'):return _0x442d0f[_0x0128('0x28')+_[_0x0128('0xa1')](_0x131d17[_0x0128('0x46')]['channel'])+_0x0128('0xa3')](_0x115b55);default:throw new db['Sequelize'][(_0x0128('0x8d'))](_0x0128('0xd4'));}})[_0x0128('0x13')](function(_0x19b9f4){_0x455e59=_0x19b9f4[_0x0128('0x49')];if(!_0x131d17[_0x0128('0x46')]['hasOwnProperty'](_0x0128('0xd1'))){_0x115b55[_0x0128('0x22')]=qs[_0x0128('0x22')](_0x131d17[_0x0128('0x46')][_0x0128('0x22')]);_0x115b55[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x131d17['query']['offset']);}switch(_0x442d0f[_0x0128('0x32')]){case'admin':return db[_[_0x0128('0xa1')](_0x131d17[_0x0128('0x46')][_0x0128('0x99')])+_0x0128('0xd3')][_0x0128('0x44')](_0x115b55);case _0x0128('0x2b'):case _0x0128('0x2c'):return _0x442d0f['get'+_['capitalize'](_0x131d17[_0x0128('0x46')][_0x0128('0x99')])+_0x0128('0xa3')](_0x115b55);}})[_0x0128('0x13')](function(_0x5ac05f){return{'count':_0x455e59,'rows':_0x5ac05f};})[_0x0128('0x13')](respondWithResult(_0x2d96fa,null))[_0x0128('0x5a')](handleError(_0x2d96fa,null));};exports[_0x0128('0xd5')]=function(_0x5964ed,_0x2c1c58){var _0x2bd370={};var _0x2c663c={};var _0x556233;var _0x3c963c;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x5964ed[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x2c1c58,null))[_0x0128('0x13')](function(_0x5c038b){if(_0x5c038b){_0x556233=_0x5c038b;_0x2c663c[_0x0128('0x54')]=_[_0x0128('0x52')](db[_0x0128('0xab')]['rawAttributes']);_0x2c663c[_0x0128('0x46')]=_[_0x0128('0x52')](_0x5964ed[_0x0128('0x46')]);_0x2c663c[_0x0128('0xc6')]=_[_0x0128('0x53')](_0x2c663c[_0x0128('0x54')],_0x2c663c['query']);_0x2bd370['attributes']=_[_0x0128('0x53')](_0x2c663c[_0x0128('0x54')],qs[_0x0128('0x55')](_0x5964ed[_0x0128('0x46')][_0x0128('0x55')]));_0x2bd370[_0x0128('0x42')]=_0x2bd370[_0x0128('0x42')][_0x0128('0x49')]?_0x2bd370[_0x0128('0x42')]:_0x2c663c['model'];_0x2bd370['order']=qs[_0x0128('0xc8')](_0x5964ed['query'][_0x0128('0xc8')]);_0x2bd370[_0x0128('0x40')]=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x5964ed['query'],_0x2c663c['filters']));if(_0x5964ed[_0x0128('0x46')][_0x0128('0x2f')]){_0x2bd370[_0x0128('0x40')]=_['merge'](_0x2bd370[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x2bd370[_0x0128('0x42')],function(_0x2c4c95){var _0x28ab10={};_0x28ab10[_0x2c4c95]={'$like':'%'+_0x5964ed[_0x0128('0x46')][_0x0128('0x2f')]+'%'};return _0x28ab10;})});}_0x2bd370=_['merge']({},_0x2bd370,_0x5964ed[_0x0128('0x57')]);return _0x556233[_0x0128('0xd5')](_0x2bd370);}})[_0x0128('0x13')](function(_0x28dd3d){if(_0x28dd3d){_0x3c963c=_0x28dd3d[_0x0128('0x49')];if(!_0x5964ed[_0x0128('0x46')][_0x0128('0xcc')]('nolimit')){_0x2bd370[_0x0128('0x22')]=qs['limit'](_0x5964ed['query'][_0x0128('0x22')]);_0x2bd370[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x5964ed['query'][_0x0128('0x24')]);}return _0x556233[_0x0128('0xd5')](_0x2bd370);}})[_0x0128('0x13')](function(_0x3f4ae4){if(_0x3f4ae4){return _0x3f4ae4?{'count':_0x3c963c,'rows':_0x3f4ae4}:null;}})[_0x0128('0x13')](respondWithResult(_0x2c1c58,null))['catch'](handleError(_0x2c1c58,null));};exports[_0x0128('0xd6')]=function(_0x110fb7,_0x54b11a){var _0x41bfe4={};var _0x1a225d={};var _0x481a1a;var _0x186ece;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x110fb7[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x54b11a,null))[_0x0128('0x13')](function(_0x51290b){if(_0x51290b){_0x481a1a=_0x51290b;_0x1a225d[_0x0128('0x54')]=_['keys'](db[_0x0128('0xd7')][_0x0128('0x39')]);_0x1a225d[_0x0128('0x46')]=_[_0x0128('0x52')](_0x110fb7['query']);_0x1a225d[_0x0128('0xc6')]=_[_0x0128('0x53')](_0x1a225d[_0x0128('0x54')],_0x1a225d[_0x0128('0x46')]);_0x41bfe4[_0x0128('0x42')]=_[_0x0128('0x53')](_0x1a225d[_0x0128('0x54')],qs[_0x0128('0x55')](_0x110fb7[_0x0128('0x46')][_0x0128('0x55')]));_0x41bfe4[_0x0128('0x42')]=_0x41bfe4[_0x0128('0x42')][_0x0128('0x49')]?_0x41bfe4[_0x0128('0x42')]:_0x1a225d['model'];_0x41bfe4[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x110fb7[_0x0128('0x46')][_0x0128('0xc8')]);_0x41bfe4[_0x0128('0x40')]=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x110fb7[_0x0128('0x46')],_0x1a225d[_0x0128('0xc6')]));if(_0x110fb7[_0x0128('0x46')][_0x0128('0x2f')]){_0x41bfe4[_0x0128('0x40')]=_[_0x0128('0xca')](_0x41bfe4[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x41bfe4['attributes'],function(_0x123ff9){var _0x41983b={};_0x41983b[_0x123ff9]={'$like':'%'+_0x110fb7[_0x0128('0x46')][_0x0128('0x2f')]+'%'};return _0x41983b;})});}_0x41bfe4=_[_0x0128('0xca')]({},_0x41bfe4,_0x110fb7[_0x0128('0x57')]);return _0x481a1a['getGroups'](_0x41bfe4);}})['then'](function(_0x382d83){if(_0x382d83){_0x186ece=_0x382d83[_0x0128('0x49')];if(!_0x110fb7['query'][_0x0128('0xcc')](_0x0128('0xd1'))){_0x41bfe4[_0x0128('0x22')]=qs[_0x0128('0x22')](_0x110fb7[_0x0128('0x46')][_0x0128('0x22')]);_0x41bfe4[_0x0128('0x24')]=qs['offset'](_0x110fb7[_0x0128('0x46')][_0x0128('0x24')]);}return _0x481a1a['getGroups'](_0x41bfe4);}})[_0x0128('0x13')](function(_0x5c5a0e){if(_0x5c5a0e){return _0x5c5a0e?{'count':_0x186ece,'rows':_0x5c5a0e}:null;}})['then'](respondWithResult(_0x54b11a,null))[_0x0128('0x5a')](handleError(_0x54b11a,null));};exports[_0x0128('0xd8')]=function(_0x368bdb,_0x32e946){var _0x16e776={'raw':!![],'where':{}};var _0x15a338={};var _0x2957a7={'count':0x0,'rows':[]};return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x368bdb['params']['id']}})['then'](handleEntityNotFound(_0x32e946,null))[_0x0128('0x13')](function(_0x5ea69f){if(_0x5ea69f){_0x15a338[_0x0128('0x54')]=_[_0x0128('0x52')](db[_0x0128('0xd9')][_0x0128('0x39')]);_0x15a338[_0x0128('0x46')]=_['keys'](_0x368bdb['query']);_0x15a338[_0x0128('0xc6')]=_[_0x0128('0x53')](_0x15a338[_0x0128('0x54')],_0x15a338[_0x0128('0x46')]);_0x16e776[_0x0128('0x42')]=_[_0x0128('0x53')](_0x15a338[_0x0128('0x54')],qs[_0x0128('0x55')](_0x368bdb['query'][_0x0128('0x55')]));_0x16e776[_0x0128('0x42')]=_0x16e776['attributes'][_0x0128('0x49')]?_0x16e776['attributes']:_0x15a338[_0x0128('0x54')];if(!_0x368bdb[_0x0128('0x46')][_0x0128('0xcc')](_0x0128('0xd1'))){_0x16e776[_0x0128('0x22')]=qs[_0x0128('0x22')](_0x368bdb[_0x0128('0x46')]['limit']);_0x16e776[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x368bdb['query'][_0x0128('0x24')]);}_0x16e776[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x368bdb[_0x0128('0x46')][_0x0128('0xc8')]);_0x16e776[_0x0128('0x40')]=qs['filters'](_[_0x0128('0xc9')](_0x368bdb[_0x0128('0x46')],_0x15a338['filters']));_0x16e776[_0x0128('0x40')][_0x0128('0xda')]=_0x5ea69f['id'];if(_0x368bdb['query'][_0x0128('0x2f')]){_0x16e776['where']=_[_0x0128('0xca')](_0x16e776['where'],{'$or':_[_0x0128('0x31')](_0x16e776['attributes'],function(_0x212c85){var _0x2acf80={};_0x2acf80[_0x212c85]={'$like':'%'+_0x368bdb[_0x0128('0x46')][_0x0128('0x2f')]+'%'};return _0x2acf80;})});}_0x16e776=_[_0x0128('0xca')]({},_0x16e776,_0x368bdb[_0x0128('0x57')]);return db[_0x0128('0xd9')][_0x0128('0x23')]({'where':_0x16e776[_0x0128('0x40')]})[_0x0128('0x13')](function(_0x395291){_0x2957a7[_0x0128('0x23')]=_0x395291;if(_0x368bdb[_0x0128('0x46')]['includeAll']){_0x16e776['include']=[{'all':!![]}];}return db[_0x0128('0xd9')][_0x0128('0x44')](_0x16e776);})[_0x0128('0x13')](function(_0x30d2ff){_0x2957a7[_0x0128('0x45')]=_0x30d2ff;return _0x2957a7;});}})[_0x0128('0x13')](respondWithFilteredResult(_0x32e946,_0x16e776))['catch'](handleError(_0x32e946,null));};exports[_0x0128('0xdb')]=function(_0x14a249,_0x544259){var _0x53e696={'raw':!![],'where':{}};var _0x3e85c8={};var _0x2d5691={'count':0x0,'rows':[]};return db[_0x0128('0x38')]['findOne']({'where':{'id':_0x14a249[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x544259,null))[_0x0128('0x13')](function(_0x11adf5){if(_0x11adf5){_0x3e85c8[_0x0128('0x54')]=_[_0x0128('0x52')](db['ScreenRecording'][_0x0128('0x39')]);_0x3e85c8[_0x0128('0x46')]=_['keys'](_0x14a249['query']);_0x3e85c8['filters']=_['intersection'](_0x3e85c8['model'],_0x3e85c8['query']);_0x53e696[_0x0128('0x42')]=_[_0x0128('0x53')](_0x3e85c8[_0x0128('0x54')],qs['fields'](_0x14a249[_0x0128('0x46')]['fields']));_0x53e696[_0x0128('0x42')]=_0x53e696[_0x0128('0x42')]['length']?_0x53e696['attributes']:_0x3e85c8[_0x0128('0x54')];if(!_0x14a249[_0x0128('0x46')]['hasOwnProperty'](_0x0128('0xd1'))){_0x53e696[_0x0128('0x22')]=qs['limit'](_0x14a249[_0x0128('0x46')][_0x0128('0x22')]);_0x53e696[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x14a249['query'][_0x0128('0x24')]);}_0x53e696[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x14a249[_0x0128('0x46')]['sort']);_0x53e696['where']=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x14a249[_0x0128('0x46')],_0x3e85c8[_0x0128('0xc6')]));_0x53e696[_0x0128('0x40')]['UserId']=_0x11adf5['id'];if(_0x14a249[_0x0128('0x46')][_0x0128('0x2f')]){_0x53e696['where']=_[_0x0128('0xca')](_0x53e696['where'],{'$or':_[_0x0128('0x31')](_0x53e696[_0x0128('0x42')],function(_0x51c685){var _0x211c1b={};_0x211c1b[_0x51c685]={'$like':'%'+_0x14a249[_0x0128('0x46')][_0x0128('0x2f')]+'%'};return _0x211c1b;})});}_0x53e696=_[_0x0128('0xca')]({},_0x53e696,_0x14a249['options']);return db[_0x0128('0xdc')]['count']({'where':_0x53e696[_0x0128('0x40')]})[_0x0128('0x13')](function(_0x3eb4c8){_0x2d5691[_0x0128('0x23')]=_0x3eb4c8;if(_0x14a249[_0x0128('0x46')][_0x0128('0x56')]){_0x53e696[_0x0128('0x41')]=[{'all':!![]}];}return db[_0x0128('0xdc')][_0x0128('0x44')](_0x53e696);})[_0x0128('0x13')](function(_0x61ab5d){_0x2d5691['rows']=_0x61ab5d;return _0x2d5691;});}})[_0x0128('0x13')](respondWithFilteredResult(_0x544259,_0x53e696))['catch'](handleError(_0x544259,null));};exports[_0x0128('0xdd')]=function(_0x4518e3,_0xc71100){var _0x5910a2={};var _0x200d54={};var _0x20a7d2;var _0x1e3592;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x4518e3['params']['id']}})[_0x0128('0x13')](handleEntityNotFound(_0xc71100,null))[_0x0128('0x13')](function(_0x326a7e){if(_0x326a7e){_0x20a7d2=_0x326a7e;_0x200d54['model']=_[_0x0128('0x52')](db[_0x0128('0xde')]['rawAttributes']);_0x200d54[_0x0128('0x46')]=_[_0x0128('0x52')](_0x4518e3[_0x0128('0x46')]);_0x200d54['filters']=_[_0x0128('0x53')](_0x200d54[_0x0128('0x54')],_0x200d54[_0x0128('0x46')]);_0x5910a2['attributes']=_[_0x0128('0x53')](_0x200d54[_0x0128('0x54')],qs['fields'](_0x4518e3['query'][_0x0128('0x55')]));_0x5910a2[_0x0128('0x42')]=_0x5910a2[_0x0128('0x42')][_0x0128('0x49')]?_0x5910a2[_0x0128('0x42')]:_0x200d54['model'];_0x5910a2['order']=qs[_0x0128('0xc8')](_0x4518e3[_0x0128('0x46')][_0x0128('0xc8')]);_0x5910a2['where']=qs[_0x0128('0xc6')](_['pick'](_0x4518e3['query'],_0x200d54['filters']));if(_0x4518e3['query'][_0x0128('0x2f')]){_0x5910a2[_0x0128('0x40')]=_['merge'](_0x5910a2[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x5910a2[_0x0128('0x42')],function(_0x582341){var _0x53f70c={};_0x53f70c[_0x582341]={'$like':'%'+_0x4518e3[_0x0128('0x46')]['filter']+'%'};return _0x53f70c;})});}_0x5910a2=_[_0x0128('0xca')]({},_0x5910a2,_0x4518e3[_0x0128('0x57')]);return _0x20a7d2[_0x0128('0xdd')](_0x5910a2);}})[_0x0128('0x13')](function(_0x256015){if(_0x256015){_0x1e3592=_0x256015[_0x0128('0x49')];if(!_0x4518e3[_0x0128('0x46')][_0x0128('0xcc')](_0x0128('0xd1'))){_0x5910a2[_0x0128('0x22')]=qs['limit'](_0x4518e3[_0x0128('0x46')][_0x0128('0x22')]);_0x5910a2[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x4518e3[_0x0128('0x46')][_0x0128('0x24')]);}return _0x20a7d2[_0x0128('0xdd')](_0x5910a2);}})['then'](function(_0x48e978){if(_0x48e978){return _0x48e978?{'count':_0x1e3592,'rows':_0x48e978}:null;}})[_0x0128('0x13')](respondWithResult(_0xc71100,null))['catch'](handleError(_0xc71100,null));};exports[_0x0128('0xdf')]=function(_0x4d204e,_0xc2ee68){var _0x1acd8e={};var _0x43526b={};var _0x62246f;var _0x1b7e7e;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x4d204e['params']['id']}})[_0x0128('0x13')](handleEntityNotFound(_0xc2ee68,null))['then'](function(_0x8a68b3){if(_0x8a68b3){_0x62246f=_0x8a68b3;_0x43526b[_0x0128('0x54')]=_[_0x0128('0x52')](db[_0x0128('0xe0')][_0x0128('0x39')]);_0x43526b['query']=_[_0x0128('0x52')](_0x4d204e['query']);_0x43526b[_0x0128('0xc6')]=_['intersection'](_0x43526b[_0x0128('0x54')],_0x43526b['query']);_0x1acd8e[_0x0128('0x42')]=_['intersection'](_0x43526b[_0x0128('0x54')],qs[_0x0128('0x55')](_0x4d204e[_0x0128('0x46')]['fields']));_0x1acd8e[_0x0128('0x42')]=_0x1acd8e[_0x0128('0x42')]['length']?_0x1acd8e[_0x0128('0x42')]:_0x43526b[_0x0128('0x54')];_0x1acd8e[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x4d204e[_0x0128('0x46')]['sort']);_0x1acd8e[_0x0128('0x40')]=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x4d204e['query'],_0x43526b[_0x0128('0xc6')]));if(_0x4d204e[_0x0128('0x46')][_0x0128('0x2f')]){_0x1acd8e[_0x0128('0x40')]=_[_0x0128('0xca')](_0x1acd8e[_0x0128('0x40')],{'$or':_['map'](_0x1acd8e[_0x0128('0x42')],function(_0x172e4f){var _0x3f6622={};_0x3f6622[_0x172e4f]={'$like':'%'+_0x4d204e['query'][_0x0128('0x2f')]+'%'};return _0x3f6622;})});}_0x1acd8e=_['merge']({},_0x1acd8e,_0x4d204e[_0x0128('0x57')]);return _0x62246f[_0x0128('0xdf')](_0x1acd8e);}})[_0x0128('0x13')](function(_0x36efef){if(_0x36efef){_0x1b7e7e=_0x36efef['length'];if(!_0x4d204e[_0x0128('0x46')][_0x0128('0xcc')](_0x0128('0xd1'))){_0x1acd8e['limit']=qs[_0x0128('0x22')](_0x4d204e[_0x0128('0x46')]['limit']);_0x1acd8e[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x4d204e['query']['offset']);}return _0x62246f[_0x0128('0xdf')](_0x1acd8e);}})[_0x0128('0x13')](function(_0x1f5d0b){if(_0x1f5d0b){return _0x1f5d0b?{'count':_0x1b7e7e,'rows':_0x1f5d0b}:null;}})[_0x0128('0x13')](respondWithResult(_0xc2ee68,null))[_0x0128('0x5a')](handleError(_0xc2ee68,null));};exports['getMailInteractions']=function(_0x1bbd8d,_0x19d436){var _0x4f577e={'raw':!![],'where':{}};var _0x3c60be={};var _0x3cc659={'count':0x0,'rows':[]};return db['User'][_0x0128('0x93')]({'where':{'id':_0x1bbd8d[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x19d436,null))['then'](function(_0x142b59){if(_0x142b59){_0x3c60be[_0x0128('0x54')]=_[_0x0128('0x52')](db[_0x0128('0xe1')][_0x0128('0x39')]);_0x3c60be[_0x0128('0x46')]=_[_0x0128('0x52')](_0x1bbd8d[_0x0128('0x46')]);_0x3c60be[_0x0128('0xc6')]=_[_0x0128('0x53')](_0x3c60be[_0x0128('0x54')],_0x3c60be[_0x0128('0x46')]);_0x4f577e[_0x0128('0x42')]=_[_0x0128('0x53')](_0x3c60be['model'],qs[_0x0128('0x55')](_0x1bbd8d[_0x0128('0x46')][_0x0128('0x55')]));_0x4f577e['attributes']=_0x4f577e[_0x0128('0x42')][_0x0128('0x49')]?_0x4f577e[_0x0128('0x42')]:_0x3c60be[_0x0128('0x54')];if(!_0x1bbd8d[_0x0128('0x46')]['hasOwnProperty']('nolimit')){_0x4f577e['limit']=qs[_0x0128('0x22')](_0x1bbd8d[_0x0128('0x46')][_0x0128('0x22')]);_0x4f577e[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x1bbd8d['query']['offset']);}_0x4f577e[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x1bbd8d[_0x0128('0x46')]['sort']);_0x4f577e[_0x0128('0x40')]=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x1bbd8d['query'],_0x3c60be[_0x0128('0xc6')]));_0x4f577e[_0x0128('0x40')][_0x0128('0xda')]=_0x142b59['id'];if(_0x1bbd8d['query'][_0x0128('0x2f')]){_0x4f577e['where']=_[_0x0128('0xca')](_0x4f577e['where'],{'$or':_['map'](_0x4f577e[_0x0128('0x42')],function(_0xec6c2a){var _0x3c2a82={};_0x3c2a82[_0xec6c2a]={'$like':'%'+_0x1bbd8d['query'][_0x0128('0x2f')]+'%'};return _0x3c2a82;})});}_0x4f577e=_[_0x0128('0xca')]({},_0x4f577e,_0x1bbd8d[_0x0128('0x57')]);return db[_0x0128('0xe1')][_0x0128('0x23')]({'where':_0x4f577e[_0x0128('0x40')]})[_0x0128('0x13')](function(_0x100fbf){_0x3cc659[_0x0128('0x23')]=_0x100fbf;if(_0x1bbd8d[_0x0128('0x46')]['includeAll']){_0x4f577e['include']=[{'all':!![]}];}return db[_0x0128('0xe1')][_0x0128('0x44')](_0x4f577e);})[_0x0128('0x13')](function(_0x132ce4){_0x3cc659[_0x0128('0x45')]=_0x132ce4;return _0x3cc659;});}})[_0x0128('0x13')](respondWithFilteredResult(_0x19d436,_0x4f577e))['catch'](handleError(_0x19d436,null));};exports[_0x0128('0xe2')]=function(_0x5bae2d,_0x4324fe){var _0x3535d5={};var _0x5b9998={};var _0x2a1738;var _0x2b47f1;return db[_0x0128('0x38')]['findOne']({'where':{'id':_0x5bae2d[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x4324fe,null))[_0x0128('0x13')](function(_0x314f99){if(_0x314f99){_0x2a1738=_0x314f99;_0x5b9998[_0x0128('0x54')]=_[_0x0128('0x52')](db[_0x0128('0xe3')]['rawAttributes']);_0x5b9998['query']=_[_0x0128('0x52')](_0x5bae2d['query']);_0x5b9998[_0x0128('0xc6')]=_[_0x0128('0x53')](_0x5b9998['model'],_0x5b9998[_0x0128('0x46')]);_0x3535d5[_0x0128('0x42')]=_[_0x0128('0x53')](_0x5b9998[_0x0128('0x54')],qs[_0x0128('0x55')](_0x5bae2d[_0x0128('0x46')]['fields']));_0x3535d5[_0x0128('0x42')]=_0x3535d5[_0x0128('0x42')]['length']?_0x3535d5[_0x0128('0x42')]:_0x5b9998[_0x0128('0x54')];_0x3535d5[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x5bae2d[_0x0128('0x46')][_0x0128('0xc8')]);_0x3535d5[_0x0128('0x40')]=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x5bae2d[_0x0128('0x46')],_0x5b9998[_0x0128('0xc6')]));if(_0x5bae2d[_0x0128('0x46')][_0x0128('0x2f')]){_0x3535d5['where']=_[_0x0128('0xca')](_0x3535d5[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x3535d5[_0x0128('0x42')],function(_0x53d62b){var _0x327ea6={};_0x327ea6[_0x53d62b]={'$like':'%'+_0x5bae2d[_0x0128('0x46')][_0x0128('0x2f')]+'%'};return _0x327ea6;})});}_0x3535d5=_[_0x0128('0xca')]({},_0x3535d5,_0x5bae2d[_0x0128('0x57')]);return _0x2a1738[_0x0128('0xe2')](_0x3535d5);}})[_0x0128('0x13')](function(_0x5a275f){if(_0x5a275f){_0x2b47f1=_0x5a275f[_0x0128('0x49')];if(!_0x5bae2d['query'][_0x0128('0xcc')](_0x0128('0xd1'))){_0x3535d5[_0x0128('0x22')]=qs[_0x0128('0x22')](_0x5bae2d[_0x0128('0x46')][_0x0128('0x22')]);_0x3535d5['offset']=qs[_0x0128('0x24')](_0x5bae2d[_0x0128('0x46')][_0x0128('0x24')]);}return _0x2a1738['getSmsInteractions'](_0x3535d5);}})['then'](function(_0xc12c55){if(_0xc12c55){return _0xc12c55?{'count':_0x2b47f1,'rows':_0xc12c55}:null;}})['then'](respondWithResult(_0x4324fe,null))[_0x0128('0x5a')](handleError(_0x4324fe,null));};exports[_0x0128('0xe4')]=function(_0x2c73b5,_0x5253c6){var _0x57b9f8={};var _0x3765f1={};var _0x2eadf1;var _0x25b645;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x2c73b5[_0x0128('0x50')]['id']}})['then'](handleEntityNotFound(_0x5253c6,null))[_0x0128('0x13')](function(_0x171450){if(_0x171450){_0x2eadf1=_0x171450;_0x3765f1[_0x0128('0x54')]=_['keys'](db['FaxInteraction'][_0x0128('0x39')]);_0x3765f1['query']=_[_0x0128('0x52')](_0x2c73b5['query']);_0x3765f1[_0x0128('0xc6')]=_[_0x0128('0x53')](_0x3765f1['model'],_0x3765f1[_0x0128('0x46')]);_0x57b9f8[_0x0128('0x42')]=_['intersection'](_0x3765f1['model'],qs[_0x0128('0x55')](_0x2c73b5['query']['fields']));_0x57b9f8['attributes']=_0x57b9f8[_0x0128('0x42')][_0x0128('0x49')]?_0x57b9f8[_0x0128('0x42')]:_0x3765f1[_0x0128('0x54')];_0x57b9f8[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x2c73b5[_0x0128('0x46')]['sort']);_0x57b9f8['where']=qs['filters'](_[_0x0128('0xc9')](_0x2c73b5[_0x0128('0x46')],_0x3765f1[_0x0128('0xc6')]));if(_0x2c73b5[_0x0128('0x46')][_0x0128('0x2f')]){_0x57b9f8[_0x0128('0x40')]=_[_0x0128('0xca')](_0x57b9f8[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x57b9f8['attributes'],function(_0x21d0f4){var _0x57be23={};_0x57be23[_0x21d0f4]={'$like':'%'+_0x2c73b5[_0x0128('0x46')][_0x0128('0x2f')]+'%'};return _0x57be23;})});}_0x57b9f8=_['merge']({},_0x57b9f8,_0x2c73b5[_0x0128('0x57')]);return _0x2eadf1[_0x0128('0xe4')](_0x57b9f8);}})[_0x0128('0x13')](function(_0x446edc){if(_0x446edc){_0x25b645=_0x446edc[_0x0128('0x49')];if(!_0x2c73b5[_0x0128('0x46')][_0x0128('0xcc')]('nolimit')){_0x57b9f8[_0x0128('0x22')]=qs[_0x0128('0x22')](_0x2c73b5[_0x0128('0x46')][_0x0128('0x22')]);_0x57b9f8['offset']=qs[_0x0128('0x24')](_0x2c73b5[_0x0128('0x46')][_0x0128('0x24')]);}return _0x2eadf1[_0x0128('0xe4')](_0x57b9f8);}})['then'](function(_0x4cf93d){if(_0x4cf93d){return _0x4cf93d?{'count':_0x25b645,'rows':_0x4cf93d}:null;}})['then'](respondWithResult(_0x5253c6,null))[_0x0128('0x5a')](handleError(_0x5253c6,null));};exports[_0x0128('0xe5')]=function(_0x3b8ff2,_0x4bcc79){var _0x188859={};var _0x2bc616={};var _0x5d8f1e;var _0x25becc;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x3b8ff2[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x4bcc79,null))[_0x0128('0x13')](function(_0x6cd67){if(_0x6cd67){_0x5d8f1e=_0x6cd67;_0x2bc616[_0x0128('0x54')]=_['keys'](db[_0x0128('0xe6')][_0x0128('0x39')]);_0x2bc616['query']=_['keys'](_0x3b8ff2[_0x0128('0x46')]);_0x2bc616['filters']=_[_0x0128('0x53')](_0x2bc616['model'],_0x2bc616[_0x0128('0x46')]);_0x188859[_0x0128('0x42')]=_[_0x0128('0x53')](_0x2bc616[_0x0128('0x54')],qs['fields'](_0x3b8ff2['query']['fields']));_0x188859[_0x0128('0x42')]=_0x188859['attributes'][_0x0128('0x49')]?_0x188859['attributes']:_0x2bc616[_0x0128('0x54')];_0x188859[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x3b8ff2['query']['sort']);_0x188859[_0x0128('0x40')]=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x3b8ff2['query'],_0x2bc616[_0x0128('0xc6')]));if(_0x3b8ff2[_0x0128('0x46')]['filter']){_0x188859[_0x0128('0x40')]=_[_0x0128('0xca')](_0x188859['where'],{'$or':_[_0x0128('0x31')](_0x188859[_0x0128('0x42')],function(_0x3b3e9d){var _0x2958f7={};_0x2958f7[_0x3b3e9d]={'$like':'%'+_0x3b8ff2[_0x0128('0x46')][_0x0128('0x2f')]+'%'};return _0x2958f7;})});}_0x188859=_[_0x0128('0xca')]({},_0x188859,_0x3b8ff2[_0x0128('0x57')]);return _0x5d8f1e[_0x0128('0xe5')](_0x188859);}})[_0x0128('0x13')](function(_0x46d559){if(_0x46d559){_0x25becc=_0x46d559[_0x0128('0x49')];if(!_0x3b8ff2[_0x0128('0x46')]['hasOwnProperty']('nolimit')){_0x188859[_0x0128('0x22')]=qs[_0x0128('0x22')](_0x3b8ff2[_0x0128('0x46')][_0x0128('0x22')]);_0x188859[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x3b8ff2[_0x0128('0x46')][_0x0128('0x24')]);}return _0x5d8f1e['getWhatsappInteractions'](_0x188859);}})[_0x0128('0x13')](function(_0x1c4280){if(_0x1c4280){return _0x1c4280?{'count':_0x25becc,'rows':_0x1c4280}:null;}})['then'](respondWithResult(_0x4bcc79,null))[_0x0128('0x5a')](handleError(_0x4bcc79,null));};exports[_0x0128('0xe7')]=function(_0x134e2f,_0x5efb09,_0xf7179f){var _0x59154c;var _0x8af6b8;var _0x500c58;var _0x3bff7b=!_[_0x0128('0x65')](_0x134e2f[_0x0128('0x50')]['id'])?_0x134e2f['params']['id']:!_[_0x0128('0x65')](_0x134e2f[_0x0128('0x2b')]['id'])?_0x134e2f[_0x0128('0x2b')]['id']:null;return db['User'][_0x0128('0x33')]({'where':{'id':_0x3bff7b,'role':{'$or':[_0x0128('0x29'),_0x0128('0x2b'),_0x0128('0x2c')]}},'attributes':['id',_0x0128('0x36'),_0x0128('0xe8'),_0x0128('0xe9'),'role',_0x0128('0x60'),_0x0128('0x9b')]})[_0x0128('0x13')](function(_0x11321d){if(_0x11321d){if(_0x11321d[_0x0128('0x32')]===_0x0128('0x2c')){_0x59154c=_0x11321d;if(_0x134e2f[_0x0128('0x5c')]['interface']){_0x500c58=util['format'](_0x0128('0xea'),_0x59154c[_0x134e2f[_0x0128('0x5c')][_0x0128('0x9d')]]);}else if(_0x134e2f[_0x0128('0x5c')][_0x0128('0xeb')]){_0x500c58=util[_0x0128('0xa9')]('SIP/%s',_0x134e2f[_0x0128('0x5c')][_0x0128('0xeb')]);}else{_0x500c58=util[_0x0128('0xa9')]('SIP/%s',_0x59154c[_0x0128('0x36')]);}socket['to'](util[_0x0128('0xa9')](_0x0128('0xec'),_0x59154c[_0x0128('0x36')]))[_0x0128('0xa5')]('user:forcelogout',{'user':{'id':_0x59154c['id'],'name':_0x59154c[_0x0128('0x36')]},'ip':_0x134e2f[_0x0128('0xed')][_0x0128('0xee')]||_0x134e2f['connection'][_0x0128('0xef')]||_0x134e2f[_0x0128('0xf0')][_0x0128('0xef')]||_0x134e2f[_0x0128('0xf1')][_0x0128('0xf0')][_0x0128('0xef')]});return db[_0x0128('0xab')]['destroy']({'where':{'membername':_0x59154c[_0x0128('0x36')]},'individualHooks':!![]});}}else{throw new db['Sequelize'][(_0x0128('0x8d'))]('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})['then'](function(){if(_0x59154c){return _0x59154c[_0x0128('0xf2')]({'raw':!![]});}})['then'](function(_0x1a8701){if(_0x59154c){var _0x1e4831=[];if(_0x1a8701){_0x8af6b8=_0x1a8701;if(_0x8af6b8[_0x0128('0x49')]){for(var _0x5285c2=0x0;_0x5285c2<_0x8af6b8[_0x0128('0x49')];_0x5285c2++){_0x1e4831['push']({'membername':_0x59154c['name'],'UserId':_0x59154c['id'],'queue_name':_0x8af6b8[_0x5285c2][_0x0128('0x36')],'VoiceQueueId':_0x8af6b8[_0x5285c2]['id'],'interface':_0x500c58,'paused':_0x59154c[_0x0128('0x9b')]||![],'penalty':_0x8af6b8[_0x5285c2]['UserVoiceQueue.penalty']||0x0});}return BPromise[_0x0128('0xf3')](_0x1e4831,function(_0x532ac2){return db[_0x0128('0xab')]['upsert'](_0x532ac2);});}}}})['then'](function(){if(_0x59154c){return db[_0x0128('0xf4')][_0x0128('0x44')]({'where':{'membername':_0x59154c[_0x0128('0x36')],'exitAt':null}});}})[_0x0128('0x13')](function(_0x178fba){if(_0x59154c){var _0x1cce28=[];_0x178fba[_0x0128('0xf5')](function(_0x4eacbb){_0x1cce28['push'](_0x4eacbb[_0x0128('0x5b')]({'exitAt':moment()[_0x0128('0xa9')](_0x0128('0xf6'))}));});return BPromise[_0x0128('0x4f')](_0x1cce28);}})[_0x0128('0x13')](function(){if(_0x59154c){var _0x448f38=[];var _0x70addf=[];var _0x594da8=utils[_0x0128('0xf7')]();var _0x5e1d3c={'membername':_0x59154c[_0x0128('0x36')],'interface':_0x500c58,'enterAt':moment()[_0x0128('0xa9')](_0x0128('0xf6')),'role':_0x59154c[_0x0128('0x32')],'internal':_0x59154c[_0x0128('0x60')]};_0x594da8['forEach'](function(_0x40f4c3){_0x448f38[_0x0128('0x43')](_[_0x0128('0xca')]({'channel':_0x40f4c3,'type':_0x0128('0xf8'),'data1':_0x134e2f[_0x0128('0x5c')][_0x0128('0xf9')],'data2':_0x500c58},_0x5e1d3c));if(_0x59154c[_0x0128('0x9b')]){_0x70addf[_0x0128('0x43')](_[_0x0128('0xca')]({'channel':_0x40f4c3,'type':_0x0128('0xfa'),'data1':_0x0128('0xfb')},_0x5e1d3c));}});return db[_0x0128('0xf4')]['bulkCreate'](_0x448f38[_0x0128('0xfc')](_0x70addf),{'individualHooks':!![]});}})[_0x0128('0x13')](function(){if(_0x59154c){return _0x59154c[_0x0128('0x5b')]({'online':!![],'lastLoginAt':moment()[_0x0128('0xa9')](_0x0128('0xf6')),'voicePause':_0x59154c[_0x0128('0x9b')]||![],'mailPause':_0x59154c[_0x0128('0x9b')]||![],'chatPause':_0x59154c[_0x0128('0x9b')]||![],'faxPause':_0x59154c['loginInPause']||![],'smsPause':_0x59154c[_0x0128('0x9b')]||![],'openchannelPause':_0x59154c['loginInPause']||![],'whatsappPause':_0x59154c[_0x0128('0x9b')]||![],'pauseType':_0x59154c[_0x0128('0x9b')]?_0x0128('0xfb'):null,'interface':_0x500c58,'lastPauseAt':moment()[_0x0128('0xa9')](_0x0128('0xf6'))});}})[_0x0128('0x13')](function(_0x461c4f){if(_0x134e2f['isMiddleware']){return _0xf7179f();}else{return BPromise[_0x0128('0xfd')](_0x461c4f)[_0x0128('0x13')](respondWithResult(_0x5efb09,null));}})[_0x0128('0x5a')](handleError(_0x5efb09,null));};exports[_0x0128('0xfe')]=function(_0x33737b,_0x4ab32a){var _0x3afaf6;return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x33737b[_0x0128('0x50')]['id'],'role':_0x0128('0x2c')},'attributes':['id',_0x0128('0x36'),_0x0128('0x32')]})[_0x0128('0x13')](handleEntityNotFound(_0x4ab32a,null))[_0x0128('0x13')](function(_0x204337){if(_0x204337){_0x3afaf6=_0x204337;return db['UserVoiceQueueRt'][_0x0128('0x27')]({'where':{'membername':_0x3afaf6['name']},'individualHooks':!![]});}})[_0x0128('0x13')](function(){return db['MemberReport']['findAll']({'where':{'membername':_0x3afaf6['name'],'exitAt':null}});})[_0x0128('0x13')](function(_0x23ccbf){var _0x4ec913=[];_0x23ccbf[_0x0128('0xf5')](function(_0x4e1955){_0x4ec913['push'](_0x4e1955[_0x0128('0x5b')]({'exitAt':moment()[_0x0128('0xa9')](_0x0128('0xf6'))}));});return BPromise[_0x0128('0x4f')](_0x4ec913);})['then'](function(){return _0x3afaf6[_0x0128('0x5b')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x0128('0x13')](respondWithResult(_0x4ab32a,null))[_0x0128('0x5a')](handleError(_0x4ab32a,null));};exports['pause']=function(_0x386eb8,_0x1cbe01){var _0x24c978;return db['UserVoiceQueueRt'][_0x0128('0x5b')]({'paused':0x1},{'where':{'UserId':_0x386eb8[_0x0128('0x50')]['id']},'individualHooks':!![]})[_0x0128('0x13')](function(){return db['User']['find']({'where':{'id':_0x386eb8[_0x0128('0x50')]['id'],'role':_0x0128('0x2c')},'attributes':['id',_0x0128('0x36'),_0x0128('0x32'),_0x0128('0x60'),_0x0128('0x9d')]});})[_0x0128('0x13')](handleEntityNotFound(_0x1cbe01,null))[_0x0128('0x13')](function(_0x16d3e5){if(_0x16d3e5){_0x24c978=_0x16d3e5;return respondWithRpcPromise(_0x0128('0xff'),_0x0128('0x100'),{'id':_0x24c978['id'],'name':_0x24c978['name'],'pause':!![]});}})[_0x0128('0x13')](function(){if(_0x24c978){return db['MemberReport'][_0x0128('0x44')]({'where':{'membername':_0x24c978[_0x0128('0x36')],'type':_0x0128('0xfa'),'exitAt':null}});}})['then'](function(_0x31090c){if(_0x31090c[_0x0128('0x49')]){var _0x1dec7f=moment()[_0x0128('0xa9')](_0x0128('0xf6'));for(var _0x1e7209=0x0,_0x4be195=_0x31090c[_0x0128('0x49')];_0x1e7209<_0x4be195;_0x1e7209++){_0x31090c[_0x1e7209][_0x0128('0x101')]({'exitAt':_0x1dec7f});}}})['then'](function(){var _0x3872ff=[];var _0x5070a4=utils[_0x0128('0xf7')]();_0x5070a4[_0x0128('0xf5')](function(_0xc2a6b5){_0x3872ff[_0x0128('0x43')]({'channel':_0xc2a6b5,'membername':_0x24c978[_0x0128('0x36')],'interface':_[_0x0128('0x65')](_0x24c978[_0x0128('0x9d')])?util[_0x0128('0xa9')](_0x0128('0xaa'),_0x24c978[_0x0128('0x36')]):_0x24c978['interface'],'type':_0x0128('0xfa'),'enterAt':moment()['format'](_0x0128('0xf6')),'data1':_0x386eb8[_0x0128('0x5c')][_0x0128('0x3a')]||_0x0128('0x102'),'role':_0x24c978[_0x0128('0x32')],'internal':_0x24c978['internal']});});return db['MemberReport']['bulkCreate'](_0x3872ff,{'individualHooks':!![]});})['then'](function(){return _0x24c978[_0x0128('0x5b')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x386eb8[_0x0128('0x5c')]['type']||_0x0128('0x102'),'lastPauseAt':moment()[_0x0128('0xa9')](_0x0128('0xf6'))});})[_0x0128('0x13')](respondWithResult(_0x1cbe01,null))['catch'](handleError(_0x1cbe01,null));};exports['unpause']=function(_0x3e63ac,_0x290dc4){var _0x435daa;return db['User'][_0x0128('0x33')]({'where':{'id':_0x3e63ac[_0x0128('0x50')]['id']},'attributes':['id',_0x0128('0x36'),_0x0128('0x32'),_0x0128('0x9c'),_0x0128('0x103'),_0x0128('0x104'),_0x0128('0x105'),_0x0128('0x106'),'smsPause',_0x0128('0x107'),'pauseType',_0x0128('0x108')]})[_0x0128('0x13')](handleEntityNotFound(_0x290dc4,null))[_0x0128('0x13')](function(_0x83f380){if(_0x83f380){_0x435daa=_0x83f380;if(_0x3e63ac[_0x0128('0x5c')][_0x0128('0x99')]&&!utils[_0x0128('0x9e')](_0x3e63ac[_0x0128('0x5c')][_0x0128('0x99')])){throw new db[(_0x0128('0x8c'))][(_0x0128('0x8d'))](_0x0128('0x9f'));}switch(_0x3e63ac[_0x0128('0x5c')][_0x0128('0x99')]){case _0x0128('0xa7'):return respondWithRpcPromise(_0x0128('0xff'),_0x0128('0x109'),{'id':_0x435daa['id'],'name':_0x435daa[_0x0128('0x36')],'pause':![]})['then'](function(){return db['UserVoiceQueueRt'][_0x0128('0x5b')]({'paused':0x0},{'where':{'UserId':_0x435daa['id']},'individualHooks':!![]});})['then'](function(){return db[_0x0128('0xf4')]['find']({'where':{'channel':_0x3e63ac[_0x0128('0x5c')][_0x0128('0x99')],'membername':_0x435daa[_0x0128('0x36')],'type':_0x0128('0xfa'),'exitAt':null}});})[_0x0128('0x13')](function(_0x5838a2){if(_0x5838a2){return _0x5838a2[_0x0128('0x5b')]({'exitAt':moment()[_0x0128('0xa9')](_0x0128('0xf6')),'data2':_0x0128('0x10a')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x435daa['update']({'voicePause':![]});});case'mail':case'chat':case _0x0128('0x4c'):case _0x0128('0x4b'):case _0x0128('0x4e'):case'openchannel':return db[_0x0128('0xf4')]['find']({'where':{'channel':_0x3e63ac['body'][_0x0128('0x99')],'membername':_0x435daa[_0x0128('0x36')],'type':_0x0128('0xfa'),'exitAt':null}})['then'](function(_0x49a416){if(_0x49a416){return _0x49a416['update']({'exitAt':moment()[_0x0128('0xa9')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x0128('0x10a')},{'individualHooks':!![]});}return null;})['then'](function(){var _0x505365={};_[_0x0128('0x25')](_0x505365,util[_0x0128('0xa9')](_0x0128('0x10b'),_0x3e63ac['body']['channel'],_0x0128('0x10c')),![]);return _0x435daa[_0x0128('0x5b')](_0x505365);});default:return respondWithRpcPromise(_0x0128('0xff'),_0x0128('0x109'),{'id':_0x435daa['id'],'name':_0x435daa[_0x0128('0x36')],'pause':![]})[_0x0128('0x13')](function(){return db[_0x0128('0xab')][_0x0128('0x5b')]({'paused':0x0},{'where':{'UserId':_0x435daa['id']}});})[_0x0128('0x13')](function(){return db['MemberReport'][_0x0128('0x44')]({'where':{'membername':_0x435daa[_0x0128('0x36')],'type':_0x0128('0xfa'),'exitAt':null}});})[_0x0128('0x13')](function(_0x243c88){var _0x588860=[];_0x243c88[_0x0128('0xf5')](function(_0x306d29){_0x588860[_0x0128('0x43')](_0x306d29['update']({'exitAt':moment()[_0x0128('0xa9')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x0128('0x10a')}));});return BPromise[_0x0128('0x4f')](_0x588860);})['then'](function(){return _0x435daa[_0x0128('0x5b')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})['then'](respondWithResult(_0x290dc4,null))[_0x0128('0x5a')](handleError(_0x290dc4,null));};exports[_0x0128('0x10d')]=function(_0x6a2430,_0x37b0f0){var _0x22c0cc={};var _0x110045={};var _0x16f151;var _0x45cb0a;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x6a2430[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x37b0f0,null))[_0x0128('0x13')](function(_0x3551af){if(_0x3551af){_0x16f151=_0x3551af;_0x110045[_0x0128('0x54')]=_[_0x0128('0x52')](db[_0x0128('0x10e')][_0x0128('0x39')]);_0x110045['query']=_['keys'](_0x6a2430[_0x0128('0x46')]);_0x110045[_0x0128('0xc6')]=_[_0x0128('0x53')](_0x110045['model'],_0x110045[_0x0128('0x46')]);_0x22c0cc[_0x0128('0x42')]=_[_0x0128('0x53')](_0x110045[_0x0128('0x54')],qs['fields'](_0x6a2430[_0x0128('0x46')][_0x0128('0x55')]));_0x22c0cc['attributes']=_0x22c0cc['attributes'][_0x0128('0x49')]?_0x22c0cc[_0x0128('0x42')]:_0x110045[_0x0128('0x54')];_0x22c0cc[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x6a2430['query'][_0x0128('0xc8')]);_0x22c0cc[_0x0128('0x40')]=qs[_0x0128('0xc6')](_['pick'](_0x6a2430['query'],_0x110045['filters']));if(_0x6a2430['query'][_0x0128('0x2f')]){_0x22c0cc[_0x0128('0x40')]=_[_0x0128('0xca')](_0x22c0cc['where'],{'$or':_['map'](_0x22c0cc[_0x0128('0x42')],function(_0x55bc0d){var _0x1c7861={};_0x1c7861[_0x55bc0d]={'$like':'%'+_0x6a2430['query'][_0x0128('0x2f')]+'%'};return _0x1c7861;})});}_0x22c0cc=_[_0x0128('0xca')]({},_0x22c0cc,_0x6a2430[_0x0128('0x57')]);return _0x16f151[_0x0128('0x10d')](_0x22c0cc);}})[_0x0128('0x13')](function(_0x271ca7){if(_0x271ca7){_0x45cb0a=_0x271ca7[_0x0128('0x49')];if(!_0x6a2430['query'][_0x0128('0xcc')]('nolimit')){_0x22c0cc[_0x0128('0x22')]=qs[_0x0128('0x22')](_0x6a2430[_0x0128('0x46')][_0x0128('0x22')]);_0x22c0cc[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x6a2430[_0x0128('0x46')][_0x0128('0x24')]);}return _0x16f151[_0x0128('0x10d')](_0x22c0cc);}})[_0x0128('0x13')](function(_0x11f6d){if(_0x11f6d){return _0x11f6d?{'count':_0x45cb0a,'rows':_0x11f6d}:null;}})[_0x0128('0x13')](respondWithResult(_0x37b0f0,null))['catch'](handleError(_0x37b0f0,null));};exports[_0x0128('0x10f')]=function(_0x5cbe32,_0x2ae689){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x5cbe32[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x2ae689,null))[_0x0128('0x13')](function(_0x58a8d8){if(_0x58a8d8){var _0x4a1f6e=_0x58a8d8[_0x0128('0x28')]({'plain':!![]});return _0x58a8d8['addTeams'](_0x5cbe32['body'][_0x0128('0x5f')],_[_0x0128('0x110')](_0x5cbe32[_0x0128('0x5c')],[_0x0128('0x5f'),'id'])||{})[_0x0128('0x13')](function(){for(var _0x5bc9f3=0x0;_0x5bc9f3<_0x5cbe32[_0x0128('0x5c')]['ids'][_0x0128('0x49')];_0x5bc9f3++){var _0x498bbc=[];db[_0x0128('0x10e')][_0x0128('0x93')]({'where':{'id':_0x5cbe32[_0x0128('0x5c')][_0x0128('0x5f')][_0x5bc9f3]}})[_0x0128('0x13')](function(_0x4bb7b7){_0x498bbc[_0x0128('0x43')](_0x4bb7b7[_0x0128('0xf2')]()[_0x0128('0x13')](function(_0x534205){for(var _0x567c20=0x0;_0x567c20<_0x534205['length'];_0x567c20++){_0x534205[_0x567c20][_0x0128('0x111')](_0x0128('0x99'),'Voice');}return _0x534205;}));_0x498bbc[_0x0128('0x43')](_0x4bb7b7[_0x0128('0x112')]()['then'](function(_0x161160){for(var _0xfa1c11=0x0;_0xfa1c11<_0x161160[_0x0128('0x49')];_0xfa1c11++){_0x161160[_0xfa1c11][_0x0128('0x111')](_0x0128('0x99'),'Chat');}return _0x161160;}));_0x498bbc['push'](_0x4bb7b7[_0x0128('0x113')]()[_0x0128('0x13')](function(_0x2b87a4){for(var _0x4c76c2=0x0;_0x4c76c2<_0x2b87a4[_0x0128('0x49')];_0x4c76c2++){_0x2b87a4[_0x4c76c2][_0x0128('0x111')](_0x0128('0x99'),_0x0128('0x114'));}return _0x2b87a4;}));_0x498bbc[_0x0128('0x43')](_0x4bb7b7['getSmsQueues']()['then'](function(_0x4b26c5){for(var _0x290a08=0x0;_0x290a08<_0x4b26c5['length'];_0x290a08++){_0x4b26c5[_0x290a08][_0x0128('0x111')](_0x0128('0x99'),_0x0128('0x115'));}return _0x4b26c5;}));_0x498bbc[_0x0128('0x43')](_0x4bb7b7[_0x0128('0x116')]()[_0x0128('0x13')](function(_0x50db8a){for(var _0x2e465d=0x0;_0x2e465d<_0x50db8a[_0x0128('0x49')];_0x2e465d++){_0x50db8a[_0x2e465d]['setDataValue'](_0x0128('0x99'),_0x0128('0x117'));}return _0x50db8a;}));_0x498bbc[_0x0128('0x43')](_0x4bb7b7[_0x0128('0x118')]()[_0x0128('0x13')](function(_0x16f83b){for(var _0x479f16=0x0;_0x479f16<_0x16f83b[_0x0128('0x49')];_0x479f16++){_0x16f83b[_0x479f16][_0x0128('0x111')](_0x0128('0x99'),_0x0128('0x119'));}return _0x16f83b;}));_0x498bbc[_0x0128('0x43')](_0x4bb7b7[_0x0128('0x11a')]()[_0x0128('0x13')](function(_0x46e686){for(var _0x32b35c=0x0;_0x32b35c<_0x46e686[_0x0128('0x49')];_0x32b35c++){_0x46e686[_0x32b35c]['setDataValue']('channel',_0x0128('0x11b'));}return _0x46e686;}));return BPromise['all'](_0x498bbc);})['then'](function(_0x3f2a24){var _0x3d8d24=_[_0x0128('0x11c')](_0x3f2a24);_0x498bbc=[];return db[_0x0128('0x68')]['transaction'](function(_0x47136b){for(var _0x3421f9=0x0;_0x3421f9<_0x3d8d24[_0x0128('0x49')];_0x3421f9++){_0x498bbc[_0x0128('0x43')](_0x3d8d24[_0x3421f9]['addAgent'](_0x4a1f6e['id']),{'transaction':_0x47136b});}return BPromise[_0x0128('0x4f')](_0x498bbc)[_0x0128('0x13')](function(){if(_0x4a1f6e[_0x0128('0x9a')]){return BPromise[_0x0128('0xf3')](_['filter'](_0x3d8d24,function(_0x159a66){return _0x159a66[_0x0128('0x11d')](_0x0128('0x99'))==='Voice';}),function(_0x273d84){return db['UserVoiceQueueRt'][_0x0128('0xac')]({'membername':_0x4a1f6e['name'],'UserId':_0x4a1f6e['id'],'queue_name':_0x273d84[_0x0128('0x36')],'VoiceQueueId':_0x273d84['id'],'interface':_['isNil'](_0x4a1f6e[_0x0128('0x9d')])?util[_0x0128('0xa9')](_0x0128('0xaa'),_0x4a1f6e['name']):_0x4a1f6e['interface'],'paused':_0x4a1f6e['voicePause']||![],'penalty':_0x4a1f6e[_0x0128('0xa4')]},{'transaction':_0x47136b});});}else{return;}})[_0x0128('0x13')](function(){for(var _0x1a9504=0x0;_0x1a9504<_0x3d8d24[_0x0128('0x49')];_0x1a9504++){var _0x6422bc=_0x3d8d24[_0x1a9504][_0x0128('0x11d')](_0x0128('0x99'));var _0x558207=_0x6422bc+_0x0128('0xb0');socket[_0x0128('0xa5')]('user'+_0x6422bc+_0x0128('0xa6'),{'UserId':_0x4a1f6e['id'],['queueField']:_0x3d8d24[_0x1a9504]['id']});}});});});}});}})[_0x0128('0x13')](respondWithStatusCode(_0x2ae689,null))['catch'](handleError(_0x2ae689,null));};exports[_0x0128('0x11e')]=function(_0x6fbe26,_0x29e4e7){return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x6fbe26[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x29e4e7,null))[_0x0128('0x13')](function(_0x50b995){if(_0x50b995){var _0x2eb49f=_0x50b995[_0x0128('0x28')]({'plain':!![]});var _0x300be8=_0x6fbe26['query'][_0x0128('0x5f')];return _0x50b995[_0x0128('0x11e')](_0x300be8)['then'](function(){for(var _0x198b62=0x0;_0x198b62<_0x300be8[_0x0128('0x49')];_0x198b62++){var _0x1e159b=[];db['Team']['findOne']({'where':{'id':_0x300be8[_0x198b62]}})[_0x0128('0x13')](function(_0x20d0e5){_0x1e159b[_0x0128('0x43')](_0x20d0e5[_0x0128('0xf2')]()[_0x0128('0x13')](function(_0x51d27c){for(var _0x542b19=0x0;_0x542b19<_0x51d27c[_0x0128('0x49')];_0x542b19++){_0x51d27c[_0x542b19]['setDataValue'](_0x0128('0x99'),_0x0128('0x11f'));}return _0x51d27c;}));_0x1e159b[_0x0128('0x43')](_0x20d0e5[_0x0128('0x112')]()[_0x0128('0x13')](function(_0x28e432){for(var _0xc50530=0x0;_0xc50530<_0x28e432[_0x0128('0x49')];_0xc50530++){_0x28e432[_0xc50530]['setDataValue']('channel',_0x0128('0x120'));}return _0x28e432;}));_0x1e159b[_0x0128('0x43')](_0x20d0e5[_0x0128('0x113')]()[_0x0128('0x13')](function(_0x1a6026){for(var _0x4ce1fa=0x0;_0x4ce1fa<_0x1a6026[_0x0128('0x49')];_0x4ce1fa++){_0x1a6026[_0x4ce1fa][_0x0128('0x111')](_0x0128('0x99'),_0x0128('0x114'));}return _0x1a6026;}));_0x1e159b[_0x0128('0x43')](_0x20d0e5[_0x0128('0x121')]()[_0x0128('0x13')](function(_0x3ff94e){for(var _0x485943=0x0;_0x485943<_0x3ff94e[_0x0128('0x49')];_0x485943++){_0x3ff94e[_0x485943][_0x0128('0x111')]('channel',_0x0128('0x115'));}return _0x3ff94e;}));_0x1e159b[_0x0128('0x43')](_0x20d0e5[_0x0128('0x116')]()[_0x0128('0x13')](function(_0x162878){for(var _0x3bf788=0x0;_0x3bf788<_0x162878[_0x0128('0x49')];_0x3bf788++){_0x162878[_0x3bf788][_0x0128('0x111')](_0x0128('0x99'),_0x0128('0x117'));}return _0x162878;}));_0x1e159b['push'](_0x20d0e5[_0x0128('0x118')]()[_0x0128('0x13')](function(_0x223691){for(var _0x1b796b=0x0;_0x1b796b<_0x223691[_0x0128('0x49')];_0x1b796b++){_0x223691[_0x1b796b][_0x0128('0x111')]('channel','Fax');}return _0x223691;}));_0x1e159b[_0x0128('0x43')](_0x20d0e5['getOpenchannelQueues']()[_0x0128('0x13')](function(_0x53d157){for(var _0x3e5d7c=0x0;_0x3e5d7c<_0x53d157[_0x0128('0x49')];_0x3e5d7c++){_0x53d157[_0x3e5d7c][_0x0128('0x111')](_0x0128('0x99'),_0x0128('0x11b'));}return _0x53d157;}));return BPromise[_0x0128('0x4f')](_0x1e159b);})['then'](function(_0x55e8c9){var _0x8f4941=_[_0x0128('0x11c')](_0x55e8c9);_0x1e159b=[];return db[_0x0128('0x68')][_0x0128('0x122')](function(_0x9759df){for(var _0x54a802=0x0;_0x54a802<_0x8f4941[_0x0128('0x49')];_0x54a802++){_0x1e159b['push'](_0x8f4941[_0x54a802][_0x0128('0x123')](_0x2eb49f['id']),{'transaction':_0x9759df});}return BPromise['all'](_0x1e159b)[_0x0128('0x13')](function(){if(_0x2eb49f[_0x0128('0x9a')]){return BPromise['each'](_['filter'](_0x8f4941,function(_0x538090){return _0x538090['getDataValue'](_0x0128('0x99'))==='Voice';}),function(_0x4c42de){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x4c42de['id'],'UserId':_0x2eb49f['id']},'transaction':_0x9759df});});}else{return;}})[_0x0128('0x13')](function(){for(var _0x2eac3b=0x0;_0x2eac3b<_0x8f4941[_0x0128('0x49')];_0x2eac3b++){var _0x30e1af=_0x8f4941[_0x2eac3b][_0x0128('0x11d')](_0x0128('0x99'));var _0x4a87d4=_0x30e1af+_0x0128('0xb0');socket[_0x0128('0xa5')](_0x0128('0x2b')+_0x30e1af+_0x0128('0xb1'),{'UserId':_0x2eb49f['id'],['queueField']:_0x8f4941[_0x2eac3b]['id']});}});});});}});}})[_0x0128('0x13')](respondWithStatusCode(_0x29e4e7,null))[_0x0128('0x5a')](handleError(_0x29e4e7,null));};exports['getLists']=function(_0x427951,_0x39d724){var _0x50c069={};var _0x4ad788={};var _0x201e0c;var _0x1fdf50;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x427951[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x39d724,null))[_0x0128('0x13')](function(_0x841b31){if(_0x841b31){_0x201e0c=_0x841b31;_0x4ad788[_0x0128('0x54')]=_[_0x0128('0x52')](db['CmList'][_0x0128('0x39')]);_0x4ad788[_0x0128('0x46')]=_['keys'](_0x427951[_0x0128('0x46')]);_0x4ad788[_0x0128('0xc6')]=_[_0x0128('0x53')](_0x4ad788['model'],_0x4ad788[_0x0128('0x46')]);_0x50c069[_0x0128('0x42')]=_['intersection'](_0x4ad788[_0x0128('0x54')],qs[_0x0128('0x55')](_0x427951[_0x0128('0x46')]['fields']));_0x50c069['attributes']=_0x50c069[_0x0128('0x42')][_0x0128('0x49')]?_0x50c069['attributes']:_0x4ad788[_0x0128('0x54')];_0x50c069[_0x0128('0xc7')]=qs['sort'](_0x427951['query'][_0x0128('0xc8')]);_0x50c069[_0x0128('0x40')]=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x427951[_0x0128('0x46')],_0x4ad788['filters']));if(_0x427951['query']['filter']){_0x50c069['where']=_['merge'](_0x50c069[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x50c069[_0x0128('0x42')],function(_0x18a6cb){var _0x6834d9={};_0x6834d9[_0x18a6cb]={'$like':'%'+_0x427951[_0x0128('0x46')][_0x0128('0x2f')]+'%'};return _0x6834d9;})});}_0x50c069=_[_0x0128('0xca')]({},_0x50c069,_0x427951[_0x0128('0x57')]);return _0x201e0c[_0x0128('0x124')](_0x50c069);}})['then'](function(_0x27d658){if(_0x27d658){_0x1fdf50=_0x27d658['length'];if(!_0x427951[_0x0128('0x46')][_0x0128('0xcc')](_0x0128('0xd1'))){_0x50c069[_0x0128('0x22')]=qs[_0x0128('0x22')](_0x427951[_0x0128('0x46')][_0x0128('0x22')]);_0x50c069['offset']=qs[_0x0128('0x24')](_0x427951[_0x0128('0x46')][_0x0128('0x24')]);}return _0x201e0c['getLists'](_0x50c069);}})[_0x0128('0x13')](function(_0x214fc5){if(_0x214fc5){return _0x214fc5?{'count':_0x1fdf50,'rows':_0x214fc5}:null;}})[_0x0128('0x13')](respondWithResult(_0x39d724,null))['catch'](handleError(_0x39d724,null));};exports[_0x0128('0x125')]=function(_0x2b880f,_0x411d07){var _0x2d2869={};var _0x12470b={};var _0xfe483a;var _0x3ffdbe;return db[_0x0128('0x38')]['findOne']({'where':{'id':_0x2b880f[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x411d07,null))[_0x0128('0x13')](function(_0x3d1c31){if(_0x3d1c31){_0xfe483a=_0x3d1c31;_0x12470b[_0x0128('0x54')]=_[_0x0128('0x52')](db[_0x0128('0x38')][_0x0128('0x39')]);_0x12470b[_0x0128('0x46')]=_[_0x0128('0x52')](_0x2b880f[_0x0128('0x46')]);_0x12470b[_0x0128('0xc6')]=_[_0x0128('0x53')](_0x12470b['model'],_0x12470b[_0x0128('0x46')]);_0x2d2869['attributes']=_[_0x0128('0x53')](_0x12470b['model'],qs[_0x0128('0x55')](_0x2b880f[_0x0128('0x46')][_0x0128('0x55')]));_0x2d2869[_0x0128('0x42')]=_0x2d2869[_0x0128('0x42')][_0x0128('0x49')]?_0x2d2869[_0x0128('0x42')]:_0x12470b[_0x0128('0x54')];_0x2d2869['order']=qs['sort'](_0x2b880f[_0x0128('0x46')]['sort']);_0x2d2869['where']=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x2b880f[_0x0128('0x46')],_0x12470b[_0x0128('0xc6')]));if(_0x2b880f[_0x0128('0x46')][_0x0128('0x2f')]){_0x2d2869[_0x0128('0x40')]=_[_0x0128('0xca')](_0x2d2869[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x2d2869['attributes'],function(_0x417f88){var _0x2b733e={};_0x2b733e[_0x417f88]={'$like':'%'+_0x2b880f[_0x0128('0x46')]['filter']+'%'};return _0x2b733e;})});}_0x2d2869['model']=db[_0x0128('0x38')];_0x2d2869['as']='Agents';_0x2d2869=_['merge']({},_0x2d2869,_0x2b880f[_0x0128('0x57')]);return _0xfe483a[_0x0128('0xf2')]({'include':[_0x2d2869]});}})['then'](function(_0x20a4c4){if(_0x20a4c4){var _0x2262d4={},_0x9ba880=[],_0x56dd10=0x0;for(var _0x1ba8bc=0x0;_0x1ba8bc<_0x20a4c4['length'];_0x1ba8bc+=0x1){for(var _0x27aada=0x0,_0x5bf8ac;_0x27aada<_0x20a4c4[_0x1ba8bc]['Agents']['length'];_0x27aada+=0x1){_0x5bf8ac=_0x20a4c4[_0x1ba8bc][_0x0128('0x82')][_0x27aada]['get']({'plain':!![]});_0x2262d4[_0x5bf8ac['id']]=_0x5bf8ac;}}_0x2262d4=_['values'](_0x2262d4);for(var _0x120b3b=qs[_0x0128('0x24')](_0x2b880f[_0x0128('0x46')][_0x0128('0x24')]);_0x120b3b<_0x2262d4[_0x0128('0x49')]&&_0x9ba880['length']<qs['limit'](_0x2b880f[_0x0128('0x46')][_0x0128('0x22')]);_0x120b3b+=0x1){if(_0x2262d4[_0x120b3b]){_0x9ba880['push'](_0x2262d4[_0x120b3b]);}}return{'count':_0x2262d4[_0x0128('0x49')],'rows':_0x9ba880};}})[_0x0128('0x13')](respondWithResult(_0x411d07,null))[_0x0128('0x5a')](handleError(_0x411d07,null));};exports[_0x0128('0x27')]=function(_0x4af679,_0x597a92){if(_0x4af679[_0x0128('0x2b')]['id']==_0x4af679[_0x0128('0x50')]['id']){return _0x597a92['status'](0x1f4)['send']({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db['User'][_0x0128('0x33')]({'where':{'id':_0x4af679[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x597a92,null))[_0x0128('0x13')](removeEntity(_0x597a92,null))[_0x0128('0x5a')](handleError(_0x597a92,null));};exports[_0x0128('0x126')]=function(_0x316635,_0x3f4117){return db['User'][_0x0128('0x33')]({'where':{'id':_0x316635['params']['id']}})['then'](handleEntityNotFound(_0x3f4117,null))['then'](function(_0x3f560e){if(_0x3f560e){return _0x3f560e[_0x0128('0x126')](_0x316635['body'][_0x0128('0x5f')],_[_0x0128('0x110')](_0x316635['body'],['ids','id'])||{})['spread'](function(){for(var _0x354f78=0x0;_0x354f78<_0x316635[_0x0128('0x5c')][_0x0128('0x5f')]['length'];_0x354f78+=0x1){socket[_0x0128('0xa5')](_0x0128('0x127'),{'ChatInteractionId':Number(_0x316635[_0x0128('0x5c')][_0x0128('0x5f')][_0x354f78]),'UserId':Number(_0x316635['params']['id'])});}return _0x316635[_0x0128('0x5c')][_0x0128('0x5f')];});}})['then'](respondWithResult(_0x3f4117,null))[_0x0128('0x5a')](handleError(_0x3f4117,null));};exports[_0x0128('0x128')]=function(_0x3b60f3,_0x298355){return db['User'][_0x0128('0x33')]({'where':{'id':_0x3b60f3['params']['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x298355,null))[_0x0128('0x13')](function(_0x2f4ea4){if(_0x2f4ea4){return _0x2f4ea4[_0x0128('0x128')](_0x3b60f3[_0x0128('0x46')][_0x0128('0x5f')])[_0x0128('0x13')](function(){if(_[_0x0128('0xaf')](_0x3b60f3[_0x0128('0x46')][_0x0128('0x5f')])){for(var _0x62754b=0x0;_0x62754b<_0x3b60f3[_0x0128('0x46')][_0x0128('0x5f')][_0x0128('0x49')];_0x62754b+=0x1){socket[_0x0128('0xa5')](_0x0128('0x129'),{'ChatInteractionId':Number(_0x3b60f3[_0x0128('0x46')]['ids'][_0x62754b]),'UserId':Number(_0x3b60f3[_0x0128('0x50')]['id'])});}}else{socket[_0x0128('0xa5')](_0x0128('0x129'),{'ChatInteractionId':Number(_0x3b60f3[_0x0128('0x46')][_0x0128('0x5f')]),'UserId':Number(_0x3b60f3[_0x0128('0x50')]['id'])});}});}})[_0x0128('0x13')](respondWithStatusCode(_0x298355,null))[_0x0128('0x5a')](handleError(_0x298355,null));};exports['addMailInteractions']=function(_0x35261c,_0x3a27da){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x35261c[_0x0128('0x50')]['id']}})['then'](handleEntityNotFound(_0x3a27da,null))[_0x0128('0x13')](function(_0x4a53d2){if(_0x4a53d2){return _0x4a53d2['addMailInteractions'](_0x35261c['body'][_0x0128('0x5f')],_[_0x0128('0x110')](_0x35261c['body'],[_0x0128('0x5f'),'id'])||{})[_0x0128('0x12a')](function(){for(var _0x2c2598=0x0;_0x2c2598<_0x35261c[_0x0128('0x5c')][_0x0128('0x5f')][_0x0128('0x49')];_0x2c2598+=0x1){socket[_0x0128('0xa5')](_0x0128('0x12b'),{'MailInteractionId':Number(_0x35261c['body'][_0x0128('0x5f')][_0x2c2598]),'UserId':Number(_0x35261c[_0x0128('0x50')]['id'])});}return _0x35261c[_0x0128('0x5c')][_0x0128('0x5f')];});}})[_0x0128('0x13')](respondWithResult(_0x3a27da,null))['catch'](handleError(_0x3a27da,null));};exports['removeMailInteractions']=function(_0x369246,_0x1184a5){return db[_0x0128('0x38')]['find']({'where':{'id':_0x369246[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x1184a5,null))[_0x0128('0x13')](function(_0x3a6374){if(_0x3a6374){return _0x3a6374[_0x0128('0x12c')](_0x369246[_0x0128('0x46')][_0x0128('0x5f')])[_0x0128('0x13')](function(){if(_[_0x0128('0xaf')](_0x369246['query'][_0x0128('0x5f')])){for(var _0x598e99=0x0;_0x598e99<_0x369246[_0x0128('0x46')][_0x0128('0x5f')][_0x0128('0x49')];_0x598e99+=0x1){socket['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x369246[_0x0128('0x46')][_0x0128('0x5f')][_0x598e99]),'UserId':Number(_0x369246[_0x0128('0x50')]['id'])});}}else{socket['emit'](_0x0128('0x12d'),{'MailInteractionId':Number(_0x369246['query']['ids']),'UserId':Number(_0x369246[_0x0128('0x50')]['id'])});}});}})[_0x0128('0x13')](respondWithStatusCode(_0x1184a5,null))['catch'](handleError(_0x1184a5,null));};exports[_0x0128('0x12e')]=function(_0x26485b,_0x31f036){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x26485b[_0x0128('0x50')]['id']}})['then'](handleEntityNotFound(_0x31f036,null))[_0x0128('0x13')](function(_0x380537){if(_0x380537){return _0x380537[_0x0128('0x12e')](_0x26485b['body']['ids'],_[_0x0128('0x110')](_0x26485b['body'],[_0x0128('0x5f'),'id'])||{})[_0x0128('0x12a')](function(){for(var _0x5244f1=0x0;_0x5244f1<_0x26485b['body'][_0x0128('0x5f')][_0x0128('0x49')];_0x5244f1+=0x1){socket[_0x0128('0xa5')](_0x0128('0x12f'),{'FaxInteractionId':Number(_0x26485b[_0x0128('0x5c')][_0x0128('0x5f')][_0x5244f1]),'UserId':Number(_0x26485b[_0x0128('0x50')]['id'])});}return _0x26485b['body'][_0x0128('0x5f')];});}})[_0x0128('0x13')](respondWithResult(_0x31f036,null))['catch'](handleError(_0x31f036,null));};exports[_0x0128('0x130')]=function(_0x2e406b,_0x2e7c0b){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x2e406b[_0x0128('0x50')]['id']}})['then'](handleEntityNotFound(_0x2e7c0b,null))['then'](function(_0x38cb27){if(_0x38cb27){return _0x38cb27[_0x0128('0x130')](_0x2e406b[_0x0128('0x46')]['ids'])[_0x0128('0x13')](function(){if(_['isArray'](_0x2e406b[_0x0128('0x46')][_0x0128('0x5f')])){for(var _0x5cf3c8=0x0;_0x5cf3c8<_0x2e406b[_0x0128('0x46')]['ids'][_0x0128('0x49')];_0x5cf3c8+=0x1){socket['emit'](_0x0128('0x131'),{'FaxInteractionId':Number(_0x2e406b[_0x0128('0x46')][_0x0128('0x5f')][_0x5cf3c8]),'UserId':Number(_0x2e406b['params']['id'])});}}else{socket['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x2e406b[_0x0128('0x46')][_0x0128('0x5f')]),'UserId':Number(_0x2e406b[_0x0128('0x50')]['id'])});}});}})[_0x0128('0x13')](respondWithStatusCode(_0x2e7c0b,null))[_0x0128('0x5a')](handleError(_0x2e7c0b,null));};exports['addSmsInteractions']=function(_0x141dcf,_0x4136ea){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x141dcf['params']['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x4136ea,null))[_0x0128('0x13')](function(_0x958557){if(_0x958557){return _0x958557[_0x0128('0x132')](_0x141dcf[_0x0128('0x5c')][_0x0128('0x5f')],_[_0x0128('0x110')](_0x141dcf[_0x0128('0x5c')],['ids','id'])||{})[_0x0128('0x12a')](function(){for(var _0x596aa2=0x0;_0x596aa2<_0x141dcf[_0x0128('0x5c')]['ids'][_0x0128('0x49')];_0x596aa2+=0x1){socket[_0x0128('0xa5')](_0x0128('0x133'),{'SmsInteractionId':Number(_0x141dcf['body']['ids'][_0x596aa2]),'UserId':Number(_0x141dcf[_0x0128('0x50')]['id'])});}return _0x141dcf['body']['ids'];});}})[_0x0128('0x13')](respondWithResult(_0x4136ea,null))[_0x0128('0x5a')](handleError(_0x4136ea,null));};exports[_0x0128('0x134')]=function(_0x53433c,_0x47975f){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x53433c[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x47975f,null))[_0x0128('0x13')](function(_0x1fde09){if(_0x1fde09){return _0x1fde09['removeSmsInteractions'](_0x53433c[_0x0128('0x46')]['ids'])[_0x0128('0x13')](function(){if(_[_0x0128('0xaf')](_0x53433c[_0x0128('0x46')][_0x0128('0x5f')])){for(var _0xe89fb5=0x0;_0xe89fb5<_0x53433c[_0x0128('0x46')]['ids']['length'];_0xe89fb5+=0x1){socket[_0x0128('0xa5')](_0x0128('0x135'),{'SmsInteractionId':Number(_0x53433c[_0x0128('0x46')]['ids'][_0xe89fb5]),'UserId':Number(_0x53433c[_0x0128('0x50')]['id'])});}}else{socket[_0x0128('0xa5')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x53433c[_0x0128('0x46')][_0x0128('0x5f')]),'UserId':Number(_0x53433c[_0x0128('0x50')]['id'])});}});}})[_0x0128('0x13')](respondWithStatusCode(_0x47975f,null))[_0x0128('0x5a')](handleError(_0x47975f,null));};exports[_0x0128('0x136')]=function(_0x9b24f7,_0x1c2639){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x9b24f7['params']['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x1c2639,null))[_0x0128('0x13')](function(_0x18f1bf){if(_0x18f1bf){return _0x18f1bf[_0x0128('0x136')](_0x9b24f7[_0x0128('0x5c')][_0x0128('0x5f')],_[_0x0128('0x110')](_0x9b24f7[_0x0128('0x5c')],[_0x0128('0x5f'),'id'])||{})[_0x0128('0x12a')](function(){for(var _0xe311b3=0x0;_0xe311b3<_0x9b24f7[_0x0128('0x5c')][_0x0128('0x5f')]['length'];_0xe311b3+=0x1){socket['emit'](_0x0128('0x137'),{'OpenchannelInteractionId':Number(_0x9b24f7[_0x0128('0x5c')][_0x0128('0x5f')][_0xe311b3]),'UserId':Number(_0x9b24f7['params']['id'])});}return _0x9b24f7[_0x0128('0x5c')][_0x0128('0x5f')];});}})['then'](respondWithResult(_0x1c2639,null))[_0x0128('0x5a')](handleError(_0x1c2639,null));};exports['removeOpenchannelInteractions']=function(_0x4dacb8,_0x1cb45a){return db['User'][_0x0128('0x33')]({'where':{'id':_0x4dacb8[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x1cb45a,null))['then'](function(_0xb64d32){if(_0xb64d32){return _0xb64d32[_0x0128('0x138')](_0x4dacb8['query'][_0x0128('0x5f')])[_0x0128('0x13')](function(){if(_['isArray'](_0x4dacb8[_0x0128('0x46')][_0x0128('0x5f')])){for(var _0x186a92=0x0;_0x186a92<_0x4dacb8['query'][_0x0128('0x5f')][_0x0128('0x49')];_0x186a92+=0x1){socket['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x4dacb8[_0x0128('0x46')]['ids'][_0x186a92]),'UserId':Number(_0x4dacb8[_0x0128('0x50')]['id'])});}}else{socket[_0x0128('0xa5')](_0x0128('0x139'),{'OpenchannelInteractionId':Number(_0x4dacb8[_0x0128('0x46')][_0x0128('0x5f')]),'UserId':Number(_0x4dacb8[_0x0128('0x50')]['id'])});}});}})[_0x0128('0x13')](respondWithStatusCode(_0x1cb45a,null))['catch'](handleError(_0x1cb45a,null));};exports[_0x0128('0x13a')]=function(_0x4728f5,_0xf24fe){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x4728f5[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0xf24fe,null))[_0x0128('0x13')](function(_0xd48768){if(_0xd48768){return _0xd48768['addWhatsappInteractions'](_0x4728f5[_0x0128('0x5c')][_0x0128('0x5f')],_[_0x0128('0x110')](_0x4728f5[_0x0128('0x5c')],[_0x0128('0x5f'),'id'])||{})[_0x0128('0x12a')](function(){for(var _0x5d1045=0x0;_0x5d1045<_0x4728f5[_0x0128('0x5c')][_0x0128('0x5f')][_0x0128('0x49')];_0x5d1045+=0x1){socket['emit'](_0x0128('0x13b'),{'WhatsappInteractionId':Number(_0x4728f5[_0x0128('0x5c')][_0x0128('0x5f')][_0x5d1045]),'UserId':Number(_0x4728f5['params']['id'])});}return _0x4728f5[_0x0128('0x5c')][_0x0128('0x5f')];});}})[_0x0128('0x13')](respondWithResult(_0xf24fe,null))['catch'](handleError(_0xf24fe,null));};exports[_0x0128('0x13c')]=function(_0xa2c31b,_0x4530be){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0xa2c31b[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x4530be,null))[_0x0128('0x13')](function(_0x1029b6){if(_0x1029b6){return _0x1029b6['removeWhatsappInteractions'](_0xa2c31b[_0x0128('0x46')][_0x0128('0x5f')]);}})['then'](respondWithStatusCode(_0x4530be,null))['catch'](handleError(_0x4530be,null));};exports[_0x0128('0x13d')]=function(_0x648a0f,_0x2f745c){var _0x4f4393={};var _0x394be7={};var _0x360144;var _0x374600;return db['User']['findOne']({'where':{'id':_0x648a0f[_0x0128('0x50')]['id']}})['then'](handleEntityNotFound(_0x2f745c,null))[_0x0128('0x13')](function(_0x55c388){if(_0x55c388){_0x360144=_0x55c388;_0x394be7['model']=_['keys'](db[_0x0128('0x13e')][_0x0128('0x39')]);_0x394be7[_0x0128('0x46')]=_[_0x0128('0x52')](_0x648a0f[_0x0128('0x46')]);_0x394be7['filters']=_['intersection'](_0x394be7['model'],_0x394be7[_0x0128('0x46')]);_0x4f4393['attributes']=_[_0x0128('0x53')](_0x394be7[_0x0128('0x54')],qs[_0x0128('0x55')](_0x648a0f[_0x0128('0x46')][_0x0128('0x55')]));_0x4f4393['attributes']=_0x4f4393['attributes']['length']?_0x4f4393[_0x0128('0x42')]:_0x394be7['model'];_0x4f4393[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x648a0f[_0x0128('0x46')]['sort']);_0x4f4393[_0x0128('0x40')]=qs[_0x0128('0xc6')](_['pick'](_0x648a0f[_0x0128('0x46')],_0x394be7[_0x0128('0xc6')]));if(_0x648a0f[_0x0128('0x46')][_0x0128('0x2f')]){_0x4f4393[_0x0128('0x40')]=_['merge'](_0x4f4393[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x4f4393[_0x0128('0x42')],function(_0x4c9ad0){var _0x3a3834={};_0x3a3834[_0x4c9ad0]={'$like':'%'+_0x648a0f['query']['filter']+'%'};return _0x3a3834;})});}_0x4f4393=_[_0x0128('0xca')]({},_0x4f4393,_0x648a0f[_0x0128('0x57')]);return _0x360144[_0x0128('0x13d')](_0x4f4393);}})[_0x0128('0x13')](function(_0x1953c6){if(_0x1953c6){_0x374600=_0x1953c6[_0x0128('0x49')];if(!_0x648a0f[_0x0128('0x46')][_0x0128('0xcc')](_0x0128('0xd1'))){_0x4f4393[_0x0128('0x22')]=qs['limit'](_0x648a0f[_0x0128('0x46')]['limit']);_0x4f4393['offset']=qs['offset'](_0x648a0f[_0x0128('0x46')][_0x0128('0x24')]);}return _0x360144['getVoicePrefixes'](_0x4f4393);}})[_0x0128('0x13')](function(_0x26ebc8){if(_0x26ebc8){return _0x26ebc8?{'count':_0x374600,'rows':_0x26ebc8}:null;}})[_0x0128('0x13')](respondWithResult(_0x2f745c,null))['catch'](handleError(_0x2f745c,null));};exports['getFaxAccounts']=function(_0x574e0a,_0x2143f9){var _0x12d34f={};var _0x5bf360={};var _0x2cf0e7;var _0x218d88;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x574e0a[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x2143f9,null))[_0x0128('0x13')](function(_0x2d5f7e){if(_0x2d5f7e){_0x2cf0e7=_0x2d5f7e;_0x5bf360['model']=_[_0x0128('0x52')](db[_0x0128('0x13f')][_0x0128('0x39')]);_0x5bf360[_0x0128('0x46')]=_[_0x0128('0x52')](_0x574e0a[_0x0128('0x46')]);_0x5bf360['filters']=_['intersection'](_0x5bf360[_0x0128('0x54')],_0x5bf360[_0x0128('0x46')]);_0x12d34f['attributes']=_[_0x0128('0x53')](_0x5bf360['model'],qs[_0x0128('0x55')](_0x574e0a[_0x0128('0x46')][_0x0128('0x55')]));_0x12d34f['attributes']=_0x12d34f['attributes'][_0x0128('0x49')]?_0x12d34f[_0x0128('0x42')]:_0x5bf360['model'];_0x12d34f[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x574e0a[_0x0128('0x46')][_0x0128('0xc8')]);_0x12d34f['where']=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x574e0a[_0x0128('0x46')],_0x5bf360[_0x0128('0xc6')]));if(_0x574e0a[_0x0128('0x46')][_0x0128('0x2f')]){_0x12d34f[_0x0128('0x40')]=_['merge'](_0x12d34f['where'],{'$or':_['map'](_0x12d34f[_0x0128('0x42')],function(_0x1082a9){var _0x3220a6={};_0x3220a6[_0x1082a9]={'$like':'%'+_0x574e0a[_0x0128('0x46')][_0x0128('0x2f')]+'%'};return _0x3220a6;})});}_0x12d34f=_[_0x0128('0xca')]({},_0x12d34f,_0x574e0a['options']);return _0x2cf0e7[_0x0128('0x140')](_0x12d34f);}})[_0x0128('0x13')](function(_0x281e82){if(_0x281e82){_0x218d88=_0x281e82['length'];if(!_0x574e0a[_0x0128('0x46')][_0x0128('0xcc')]('nolimit')){_0x12d34f[_0x0128('0x22')]=qs['limit'](_0x574e0a[_0x0128('0x46')][_0x0128('0x22')]);_0x12d34f['offset']=qs[_0x0128('0x24')](_0x574e0a[_0x0128('0x46')][_0x0128('0x24')]);}return _0x2cf0e7['getFaxAccounts'](_0x12d34f);}})[_0x0128('0x13')](function(_0x5cfc4d){if(_0x5cfc4d){return _0x5cfc4d?{'count':_0x218d88,'rows':_0x5cfc4d}:null;}})[_0x0128('0x13')](respondWithResult(_0x2143f9,null))[_0x0128('0x5a')](handleError(_0x2143f9,null));};exports['addFaxAccounts']=function(_0x2116b7,_0x4339a6){return db['User']['find']({'where':{'id':_0x2116b7[_0x0128('0x50')]['id']}})['then'](handleEntityNotFound(_0x4339a6,null))[_0x0128('0x13')](function(_0x319fb3){if(_0x319fb3){return _0x319fb3[_0x0128('0x141')](_0x2116b7[_0x0128('0x5c')][_0x0128('0x5f')],_['omit'](_0x2116b7[_0x0128('0x5c')],[_0x0128('0x5f'),'id'])||{});}})[_0x0128('0x13')](respondWithResult(_0x4339a6,null))[_0x0128('0x5a')](handleError(_0x4339a6,null));};exports[_0x0128('0x142')]=function(_0x3ff0d3,_0x362ceb){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x3ff0d3[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x362ceb,null))['then'](function(_0x3778fa){if(_0x3778fa){return _0x3778fa[_0x0128('0x142')](_0x3ff0d3[_0x0128('0x46')]['ids']);}})[_0x0128('0x13')](respondWithStatusCode(_0x362ceb,null))[_0x0128('0x5a')](handleError(_0x362ceb,null));};exports[_0x0128('0x143')]=function(_0x5b56ac,_0x4bd06c){var _0x3d90ea={};var _0x17d5a6={};var _0x47f381;var _0x52c324;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x5b56ac['params']['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x4bd06c,null))[_0x0128('0x13')](function(_0xb1585e){if(_0xb1585e){_0x47f381=_0xb1585e;_0x17d5a6[_0x0128('0x54')]=_[_0x0128('0x52')](db[_0x0128('0x144')][_0x0128('0x39')]);_0x17d5a6[_0x0128('0x46')]=_[_0x0128('0x52')](_0x5b56ac['query']);_0x17d5a6[_0x0128('0xc6')]=_['intersection'](_0x17d5a6[_0x0128('0x54')],_0x17d5a6['query']);_0x3d90ea[_0x0128('0x42')]=_['intersection'](_0x17d5a6[_0x0128('0x54')],qs['fields'](_0x5b56ac[_0x0128('0x46')][_0x0128('0x55')]));_0x3d90ea[_0x0128('0x42')]=_0x3d90ea[_0x0128('0x42')][_0x0128('0x49')]?_0x3d90ea['attributes']:_0x17d5a6[_0x0128('0x54')];_0x3d90ea[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x5b56ac[_0x0128('0x46')][_0x0128('0xc8')]);_0x3d90ea[_0x0128('0x40')]=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x5b56ac[_0x0128('0x46')],_0x17d5a6[_0x0128('0xc6')]));if(_0x5b56ac[_0x0128('0x46')][_0x0128('0x2f')]){_0x3d90ea[_0x0128('0x40')]=_['merge'](_0x3d90ea[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x3d90ea['attributes'],function(_0x3ddfd8){var _0x21059b={};_0x21059b[_0x3ddfd8]={'$like':'%'+_0x5b56ac[_0x0128('0x46')]['filter']+'%'};return _0x21059b;})});}_0x3d90ea=_[_0x0128('0xca')]({},_0x3d90ea,_0x5b56ac['options']);return _0x47f381[_0x0128('0x143')](_0x3d90ea);}})['then'](function(_0x4f8aac){if(_0x4f8aac){_0x52c324=_0x4f8aac[_0x0128('0x49')];if(!_0x5b56ac[_0x0128('0x46')][_0x0128('0xcc')](_0x0128('0xd1'))){_0x3d90ea[_0x0128('0x22')]=qs[_0x0128('0x22')](_0x5b56ac[_0x0128('0x46')]['limit']);_0x3d90ea[_0x0128('0x24')]=qs['offset'](_0x5b56ac[_0x0128('0x46')][_0x0128('0x24')]);}return _0x47f381[_0x0128('0x143')](_0x3d90ea);}})['then'](function(_0x28b42a){if(_0x28b42a){return _0x28b42a?{'count':_0x52c324,'rows':_0x28b42a}:null;}})[_0x0128('0x13')](respondWithResult(_0x4bd06c,null))['catch'](handleError(_0x4bd06c,null));};exports[_0x0128('0x145')]=function(_0x24457a,_0x443f2c){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x24457a[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x443f2c,null))['then'](function(_0x2761f8){if(_0x2761f8){return _0x2761f8['addMailAccounts'](_0x24457a['body'][_0x0128('0x5f')],_['omit'](_0x24457a[_0x0128('0x5c')],['ids','id'])||{});}})['then'](respondWithResult(_0x443f2c,null))[_0x0128('0x5a')](handleError(_0x443f2c,null));};exports[_0x0128('0x146')]=function(_0x1bb88d,_0x2d62f9){return db[_0x0128('0x38')]['find']({'where':{'id':_0x1bb88d['params']['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x2d62f9,null))[_0x0128('0x13')](function(_0x4e5a35){if(_0x4e5a35){return _0x4e5a35[_0x0128('0x146')](_0x1bb88d[_0x0128('0x46')]['ids']);}})[_0x0128('0x13')](respondWithStatusCode(_0x2d62f9,null))['catch'](handleError(_0x2d62f9,null));};exports[_0x0128('0x147')]=function(_0x41c2c1,_0x37fcf8){var _0x38b65b={};var _0x426336={};var _0x55d536;var _0x49888f;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x41c2c1[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x37fcf8,null))[_0x0128('0x13')](function(_0x1674c9){if(_0x1674c9){_0x55d536=_0x1674c9;_0x426336[_0x0128('0x54')]=_[_0x0128('0x52')](db[_0x0128('0x148')]['rawAttributes']);_0x426336['query']=_['keys'](_0x41c2c1[_0x0128('0x46')]);_0x426336['filters']=_[_0x0128('0x53')](_0x426336[_0x0128('0x54')],_0x426336[_0x0128('0x46')]);_0x38b65b[_0x0128('0x42')]=_[_0x0128('0x53')](_0x426336[_0x0128('0x54')],qs['fields'](_0x41c2c1[_0x0128('0x46')]['fields']));_0x38b65b[_0x0128('0x42')]=_0x38b65b[_0x0128('0x42')]['length']?_0x38b65b['attributes']:_0x426336['model'];_0x38b65b[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x41c2c1['query'][_0x0128('0xc8')]);_0x38b65b[_0x0128('0x40')]=qs['filters'](_['pick'](_0x41c2c1[_0x0128('0x46')],_0x426336[_0x0128('0xc6')]));if(_0x41c2c1['query'][_0x0128('0x2f')]){_0x38b65b['where']=_['merge'](_0x38b65b[_0x0128('0x40')],{'$or':_['map'](_0x38b65b[_0x0128('0x42')],function(_0x223cce){var _0x337e81={};_0x337e81[_0x223cce]={'$like':'%'+_0x41c2c1[_0x0128('0x46')][_0x0128('0x2f')]+'%'};return _0x337e81;})});}_0x38b65b=_['merge']({},_0x38b65b,_0x41c2c1[_0x0128('0x57')]);return _0x55d536[_0x0128('0x147')](_0x38b65b);}})[_0x0128('0x13')](function(_0x1fca56){if(_0x1fca56){_0x49888f=_0x1fca56[_0x0128('0x49')];if(!_0x41c2c1[_0x0128('0x46')]['hasOwnProperty'](_0x0128('0xd1'))){_0x38b65b['limit']=qs['limit'](_0x41c2c1[_0x0128('0x46')]['limit']);_0x38b65b[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x41c2c1[_0x0128('0x46')]['offset']);}return _0x55d536[_0x0128('0x147')](_0x38b65b);}})['then'](function(_0x191f8f){if(_0x191f8f){return _0x191f8f?{'count':_0x49888f,'rows':_0x191f8f}:null;}})[_0x0128('0x13')](respondWithResult(_0x37fcf8,null))[_0x0128('0x5a')](handleError(_0x37fcf8,null));};exports['addOpenchannelAccounts']=function(_0x536120,_0x1eb435){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x536120['params']['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x1eb435,null))['then'](function(_0x40efda){if(_0x40efda){return _0x40efda['addOpenchannelAccounts'](_0x536120[_0x0128('0x5c')]['ids'],_[_0x0128('0x110')](_0x536120[_0x0128('0x5c')],[_0x0128('0x5f'),'id'])||{});}})[_0x0128('0x13')](respondWithResult(_0x1eb435,null))[_0x0128('0x5a')](handleError(_0x1eb435,null));};exports['removeOpenchannelAccounts']=function(_0x5b2818,_0x27ddc1){return db['User'][_0x0128('0x33')]({'where':{'id':_0x5b2818[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x27ddc1,null))['then'](function(_0xd1cf2c){if(_0xd1cf2c){return _0xd1cf2c['removeOpenchannelAccounts'](_0x5b2818[_0x0128('0x46')][_0x0128('0x5f')]);}})[_0x0128('0x13')](respondWithStatusCode(_0x27ddc1,null))[_0x0128('0x5a')](handleError(_0x27ddc1,null));};exports[_0x0128('0x149')]=function(_0x220f82,_0x3b4796){var _0x18313f={};var _0x25308a={};var _0x152fba;var _0x44bdd0;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x220f82[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x3b4796,null))[_0x0128('0x13')](function(_0x58d464){if(_0x58d464){_0x152fba=_0x58d464;_0x25308a['model']=_[_0x0128('0x52')](db['SmsAccount'][_0x0128('0x39')]);_0x25308a[_0x0128('0x46')]=_[_0x0128('0x52')](_0x220f82[_0x0128('0x46')]);_0x25308a['filters']=_[_0x0128('0x53')](_0x25308a['model'],_0x25308a['query']);_0x18313f[_0x0128('0x42')]=_[_0x0128('0x53')](_0x25308a[_0x0128('0x54')],qs['fields'](_0x220f82[_0x0128('0x46')][_0x0128('0x55')]));_0x18313f[_0x0128('0x42')]=_0x18313f[_0x0128('0x42')][_0x0128('0x49')]?_0x18313f[_0x0128('0x42')]:_0x25308a[_0x0128('0x54')];_0x18313f[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x220f82[_0x0128('0x46')][_0x0128('0xc8')]);_0x18313f[_0x0128('0x40')]=qs['filters'](_['pick'](_0x220f82[_0x0128('0x46')],_0x25308a[_0x0128('0xc6')]));if(_0x220f82[_0x0128('0x46')][_0x0128('0x2f')]){_0x18313f[_0x0128('0x40')]=_[_0x0128('0xca')](_0x18313f[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x18313f[_0x0128('0x42')],function(_0x2cd165){var _0x35b9d4={};_0x35b9d4[_0x2cd165]={'$like':'%'+_0x220f82[_0x0128('0x46')]['filter']+'%'};return _0x35b9d4;})});}_0x18313f=_[_0x0128('0xca')]({},_0x18313f,_0x220f82[_0x0128('0x57')]);return _0x152fba[_0x0128('0x149')](_0x18313f);}})[_0x0128('0x13')](function(_0x5d0688){if(_0x5d0688){_0x44bdd0=_0x5d0688[_0x0128('0x49')];if(!_0x220f82[_0x0128('0x46')][_0x0128('0xcc')](_0x0128('0xd1'))){_0x18313f[_0x0128('0x22')]=qs[_0x0128('0x22')](_0x220f82[_0x0128('0x46')]['limit']);_0x18313f[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x220f82[_0x0128('0x46')][_0x0128('0x24')]);}return _0x152fba[_0x0128('0x149')](_0x18313f);}})[_0x0128('0x13')](function(_0x5040d7){if(_0x5040d7){return _0x5040d7?{'count':_0x44bdd0,'rows':_0x5040d7}:null;}})[_0x0128('0x13')](respondWithResult(_0x3b4796,null))[_0x0128('0x5a')](handleError(_0x3b4796,null));};exports[_0x0128('0x14a')]=function(_0x1bfdcf,_0x333ba8){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x1bfdcf[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x333ba8,null))[_0x0128('0x13')](function(_0x59160f){if(_0x59160f){return _0x59160f[_0x0128('0x14a')](_0x1bfdcf[_0x0128('0x5c')][_0x0128('0x5f')],_[_0x0128('0x110')](_0x1bfdcf[_0x0128('0x5c')],[_0x0128('0x5f'),'id'])||{});}})[_0x0128('0x13')](respondWithResult(_0x333ba8,null))[_0x0128('0x5a')](handleError(_0x333ba8,null));};exports[_0x0128('0x14b')]=function(_0x4d01b6,_0x3e72f2){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x4d01b6[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x3e72f2,null))[_0x0128('0x13')](function(_0x2eb4b5){if(_0x2eb4b5){return _0x2eb4b5[_0x0128('0x14b')](_0x4d01b6[_0x0128('0x46')][_0x0128('0x5f')]);}})['then'](respondWithStatusCode(_0x3e72f2,null))[_0x0128('0x5a')](handleError(_0x3e72f2,null));};exports[_0x0128('0x14c')]=function(_0x3a2952,_0x5c817d){var _0x2f6aa8={};var _0x275cfb={};var _0x107059;var _0x10fdf0;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x3a2952['params']['id']}})['then'](handleEntityNotFound(_0x5c817d,null))[_0x0128('0x13')](function(_0x4bb637){if(_0x4bb637){_0x107059=_0x4bb637;_0x275cfb[_0x0128('0x54')]=_[_0x0128('0x52')](db[_0x0128('0x14d')]['rawAttributes']);_0x275cfb[_0x0128('0x46')]=_['keys'](_0x3a2952[_0x0128('0x46')]);_0x275cfb['filters']=_['intersection'](_0x275cfb[_0x0128('0x54')],_0x275cfb[_0x0128('0x46')]);_0x2f6aa8['attributes']=_['intersection'](_0x275cfb['model'],qs[_0x0128('0x55')](_0x3a2952[_0x0128('0x46')][_0x0128('0x55')]));_0x2f6aa8[_0x0128('0x42')]=_0x2f6aa8[_0x0128('0x42')][_0x0128('0x49')]?_0x2f6aa8[_0x0128('0x42')]:_0x275cfb['model'];_0x2f6aa8[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x3a2952[_0x0128('0x46')][_0x0128('0xc8')]);_0x2f6aa8['where']=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x3a2952[_0x0128('0x46')],_0x275cfb['filters']));if(_0x3a2952[_0x0128('0x46')][_0x0128('0x2f')]){_0x2f6aa8[_0x0128('0x40')]=_[_0x0128('0xca')](_0x2f6aa8[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x2f6aa8[_0x0128('0x42')],function(_0x35c776){var _0x4dfa07={};_0x4dfa07[_0x35c776]={'$like':'%'+_0x3a2952[_0x0128('0x46')]['filter']+'%'};return _0x4dfa07;})});}_0x2f6aa8=_[_0x0128('0xca')]({},_0x2f6aa8,_0x3a2952[_0x0128('0x57')]);return _0x107059[_0x0128('0x14c')](_0x2f6aa8);}})[_0x0128('0x13')](function(_0x53e1d5){if(_0x53e1d5){_0x10fdf0=_0x53e1d5[_0x0128('0x49')];if(!_0x3a2952[_0x0128('0x46')][_0x0128('0xcc')](_0x0128('0xd1'))){_0x2f6aa8[_0x0128('0x22')]=qs[_0x0128('0x22')](_0x3a2952[_0x0128('0x46')][_0x0128('0x22')]);_0x2f6aa8[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x3a2952[_0x0128('0x46')]['offset']);}return _0x107059['getChatWebsites'](_0x2f6aa8);}})[_0x0128('0x13')](function(_0x59c4f0){if(_0x59c4f0){return _0x59c4f0?{'count':_0x10fdf0,'rows':_0x59c4f0}:null;}})[_0x0128('0x13')](respondWithResult(_0x5c817d,null))[_0x0128('0x5a')](handleError(_0x5c817d,null));};exports[_0x0128('0x14e')]=function(_0x16f8be,_0xbafe0a){return db['User'][_0x0128('0x33')]({'where':{'id':_0x16f8be[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0xbafe0a,null))['then'](function(_0x1c3c26){if(_0x1c3c26){return _0x1c3c26[_0x0128('0x14e')](_0x16f8be[_0x0128('0x5c')]['ids'],_[_0x0128('0x110')](_0x16f8be[_0x0128('0x5c')],[_0x0128('0x5f'),'id'])||{});}})[_0x0128('0x13')](respondWithResult(_0xbafe0a,null))[_0x0128('0x5a')](handleError(_0xbafe0a,null));};exports[_0x0128('0x14f')]=function(_0x2eea91,_0x1a5aec){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x2eea91[_0x0128('0x50')]['id']}})['then'](handleEntityNotFound(_0x1a5aec,null))['then'](function(_0x404317){if(_0x404317){return _0x404317[_0x0128('0x14f')](_0x2eea91[_0x0128('0x46')]['ids']);}})[_0x0128('0x13')](respondWithStatusCode(_0x1a5aec,null))[_0x0128('0x5a')](handleError(_0x1a5aec,null));};exports[_0x0128('0x150')]=function(_0x17217f,_0x3c6cf2){var _0xe50c20={};var _0x2081c7={};var _0x52ae82;var _0x139832;return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x17217f[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x3c6cf2,null))[_0x0128('0x13')](function(_0x167019){if(_0x167019){_0x52ae82=_0x167019;_0x2081c7['model']=_['keys'](db[_0x0128('0x151')][_0x0128('0x39')]);_0x2081c7[_0x0128('0x46')]=_[_0x0128('0x52')](_0x17217f[_0x0128('0x46')]);_0x2081c7[_0x0128('0xc6')]=_['intersection'](_0x2081c7['model'],_0x2081c7[_0x0128('0x46')]);_0xe50c20['attributes']=_[_0x0128('0x53')](_0x2081c7['model'],qs['fields'](_0x17217f[_0x0128('0x46')][_0x0128('0x55')]));_0xe50c20['attributes']=_0xe50c20[_0x0128('0x42')][_0x0128('0x49')]?_0xe50c20[_0x0128('0x42')]:_0x2081c7['model'];_0xe50c20[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x17217f[_0x0128('0x46')][_0x0128('0xc8')]);_0xe50c20[_0x0128('0x40')]=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x17217f[_0x0128('0x46')],_0x2081c7['filters']));if(_0x17217f[_0x0128('0x46')]['filter']){_0xe50c20[_0x0128('0x40')]=_[_0x0128('0xca')](_0xe50c20[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0xe50c20[_0x0128('0x42')],function(_0x91c383){var _0x16343d={};_0x16343d[_0x91c383]={'$like':'%'+_0x17217f[_0x0128('0x46')][_0x0128('0x2f')]+'%'};return _0x16343d;})});}_0xe50c20=_[_0x0128('0xca')]({},_0xe50c20,_0x17217f['options']);return _0x52ae82[_0x0128('0x150')](_0xe50c20);}})[_0x0128('0x13')](function(_0x1b24be){if(_0x1b24be){_0x139832=_0x1b24be[_0x0128('0x49')];if(!_0x17217f[_0x0128('0x46')][_0x0128('0xcc')]('nolimit')){_0xe50c20[_0x0128('0x22')]=qs['limit'](_0x17217f['query']['limit']);_0xe50c20[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x17217f[_0x0128('0x46')][_0x0128('0x24')]);}return _0x52ae82[_0x0128('0x150')](_0xe50c20);}})[_0x0128('0x13')](function(_0x26faf0){if(_0x26faf0){return _0x26faf0?{'count':_0x139832,'rows':_0x26faf0}:null;}})[_0x0128('0x13')](respondWithResult(_0x3c6cf2,null))['catch'](handleError(_0x3c6cf2,null));};exports['addWhatsappAccounts']=function(_0x18dc5d,_0x3817fa){return db['User']['find']({'where':{'id':_0x18dc5d[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x3817fa,null))['then'](function(_0x58d79d){if(_0x58d79d){return _0x58d79d[_0x0128('0x152')](_0x18dc5d['body'][_0x0128('0x5f')],_[_0x0128('0x110')](_0x18dc5d[_0x0128('0x5c')],[_0x0128('0x5f'),'id'])||{});}})[_0x0128('0x13')](respondWithResult(_0x3817fa,null))[_0x0128('0x5a')](handleError(_0x3817fa,null));};exports[_0x0128('0x153')]=function(_0x542137,_0x120c4f){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x542137[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x120c4f,null))[_0x0128('0x13')](function(_0x4d6f72){if(_0x4d6f72){return _0x4d6f72['removeWhatsappAccounts'](_0x542137[_0x0128('0x46')][_0x0128('0x5f')]);}})[_0x0128('0x13')](respondWithStatusCode(_0x120c4f,null))['catch'](handleError(_0x120c4f,null));};exports[_0x0128('0x154')]=function(_0x4a5874,_0x5859c7){var _0x37b266={};var _0x31a4ea={};var _0x3846b4;var _0x456137;return db['User'][_0x0128('0x93')]({'where':{'id':_0x4a5874['params']['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x5859c7,null))[_0x0128('0x13')](function(_0x282632){if(_0x282632){_0x3846b4=_0x282632;_0x31a4ea[_0x0128('0x54')]=_[_0x0128('0x52')](db[_0x0128('0x155')][_0x0128('0x39')]);_0x31a4ea['query']=_[_0x0128('0x52')](_0x4a5874[_0x0128('0x46')]);_0x31a4ea[_0x0128('0xc6')]=_[_0x0128('0x53')](_0x31a4ea[_0x0128('0x54')],_0x31a4ea[_0x0128('0x46')]);_0x37b266[_0x0128('0x42')]=_[_0x0128('0x53')](_0x31a4ea[_0x0128('0x54')],qs[_0x0128('0x55')](_0x4a5874[_0x0128('0x46')]['fields']));_0x37b266[_0x0128('0x42')]=_0x37b266['attributes'][_0x0128('0x49')]?_0x37b266[_0x0128('0x42')]:_0x31a4ea['model'];_0x37b266[_0x0128('0xc7')]=qs[_0x0128('0xc8')](_0x4a5874[_0x0128('0x46')][_0x0128('0xc8')]);_0x37b266[_0x0128('0x40')]=qs[_0x0128('0xc6')](_['pick'](_0x4a5874['query'],_0x31a4ea[_0x0128('0xc6')]));if(_0x4a5874[_0x0128('0x46')][_0x0128('0x2f')]){_0x37b266[_0x0128('0x40')]=_[_0x0128('0xca')](_0x37b266[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x37b266['attributes'],function(_0x5b7207){var _0x408686={};_0x408686[_0x5b7207]={'$like':'%'+_0x4a5874[_0x0128('0x46')]['filter']+'%'};return _0x408686;})});}_0x37b266=_[_0x0128('0xca')]({},_0x37b266,_0x4a5874[_0x0128('0x57')]);return _0x3846b4[_0x0128('0x154')](_0x37b266);}})[_0x0128('0x13')](function(_0x1782e7){if(_0x1782e7){_0x456137=_0x1782e7[_0x0128('0x49')];if(!_0x4a5874[_0x0128('0x46')][_0x0128('0xcc')](_0x0128('0xd1'))){_0x37b266[_0x0128('0x22')]=qs[_0x0128('0x22')](_0x4a5874[_0x0128('0x46')][_0x0128('0x22')]);_0x37b266['offset']=qs[_0x0128('0x24')](_0x4a5874[_0x0128('0x46')][_0x0128('0x24')]);}return _0x3846b4[_0x0128('0x154')](_0x37b266);}})[_0x0128('0x13')](function(_0x333e7b){if(_0x333e7b){return _0x333e7b?{'count':_0x456137,'rows':_0x333e7b}:null;}})[_0x0128('0x13')](respondWithResult(_0x5859c7,null))['catch'](handleError(_0x5859c7,null));};exports['addSquareProjects']=function(_0x3a7ec6,_0x1adcde){return db['User']['find']({'where':{'id':_0x3a7ec6['params']['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x1adcde,null))['then'](function(_0xa2d2dc){if(_0xa2d2dc){return _0xa2d2dc['addSquareProjects'](_0x3a7ec6[_0x0128('0x5c')]['ids'],_[_0x0128('0x110')](_0x3a7ec6[_0x0128('0x5c')],[_0x0128('0x5f'),'id'])||{});}})[_0x0128('0x13')](respondWithResult(_0x1adcde,null))[_0x0128('0x5a')](handleError(_0x1adcde,null));};exports[_0x0128('0x156')]=function(_0x2fbd20,_0x5a35d8){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x2fbd20[_0x0128('0x50')]['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x5a35d8,null))[_0x0128('0x13')](function(_0x46ac03){if(_0x46ac03){return _0x46ac03[_0x0128('0x156')](_0x2fbd20[_0x0128('0x46')]['ids']);}})[_0x0128('0x13')](respondWithStatusCode(_0x5a35d8,null))[_0x0128('0x5a')](handleError(_0x5a35d8,null));};exports[_0x0128('0x157')]=function(_0x2acb77,_0x5a9e9d){var _0x249af7={},_0x30ec12={},_0x286cf4={'count':0x0,'rows':[]};var _0x2fc6a3=db[_0x0128('0x158')]['rawAttributes'];_0x30ec12['model']=_[_0x0128('0x52')](_0x2fc6a3);_0x30ec12[_0x0128('0x46')]=_['keys'](_0x2acb77[_0x0128('0x46')]);_0x30ec12[_0x0128('0xc6')]=_['intersection'](_0x30ec12[_0x0128('0x54')],_0x30ec12[_0x0128('0x46')]);_0x30ec12[_0x0128('0xc6')]=_[_0x0128('0xfc')](_0x30ec12[_0x0128('0xc6')],[_0x0128('0x159'),_0x0128('0x15a'),_0x0128('0x15b'),_0x0128('0x15c'),_0x0128('0x15d'),_0x0128('0x15e'),_0x0128('0x15f'),_0x0128('0x160'),_0x0128('0x161'),'$between','$notBetween','$in','$notIn',_0x0128('0x162'),_0x0128('0x163'),'$iLike',_0x0128('0x164'),_0x0128('0x162'),_0x0128('0x165'),_0x0128('0x166'),'$contained','$any']);_0x249af7[_0x0128('0x42')]=_[_0x0128('0x53')](_0x30ec12[_0x0128('0x54')],qs[_0x0128('0x55')](_0x2acb77[_0x0128('0x46')][_0x0128('0x55')]));_0x249af7[_0x0128('0x42')]=_0x249af7['attributes'][_0x0128('0x49')]?_0x249af7[_0x0128('0x42')]:_0x30ec12[_0x0128('0x54')];if(!_0x2acb77[_0x0128('0x46')][_0x0128('0xcc')](_0x0128('0xd1'))){_0x249af7[_0x0128('0x22')]=qs['limit'](_0x2acb77[_0x0128('0x46')][_0x0128('0x22')]);_0x249af7[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x2acb77[_0x0128('0x46')][_0x0128('0x24')]);}_0x249af7[_0x0128('0xc7')]=qs['sort'](_0x2acb77['query'][_0x0128('0xc8')]);_0x249af7[_0x0128('0x40')]=qs[_0x0128('0xc6')](_[_0x0128('0xc9')](_0x2acb77[_0x0128('0x46')],_0x30ec12[_0x0128('0xc6')]));if(_0x2acb77[_0x0128('0x46')][_0x0128('0x2f')]){_0x249af7[_0x0128('0x40')]=_['merge'](_0x249af7[_0x0128('0x40')],{'$or':_[_0x0128('0x31')](_0x249af7[_0x0128('0x42')],function(_0x48825a){var _0x2b8bb8={};_0x2b8bb8[_0x48825a]={'$like':'%'+_0x2acb77[_0x0128('0x46')]['filter']+'%'};return _0x2b8bb8;})});}_0x249af7[_0x0128('0x40')]={'$and':[_0x249af7['where'],{'$or':[{'UserId':_0x2acb77['params']['id']},{'OwnerId':_0x2acb77[_0x0128('0x50')]['id']}]}]};_0x249af7=_[_0x0128('0xca')]({},_0x249af7,_0x2acb77[_0x0128('0x57')]);var _0x2e1ac8={'where':_0x249af7[_0x0128('0x40')]};return db[_0x0128('0x158')][_0x0128('0x23')](_0x2e1ac8)[_0x0128('0x13')](function(_0x25da10){_0x286cf4['count']=_0x25da10;if(_0x2acb77[_0x0128('0x46')][_0x0128('0x56')]){_0x249af7[_0x0128('0x41')]=[{'attributes':['id',_0x0128('0x167'),_0x0128('0x168'),_0x0128('0xe8')],'model':db[_0x0128('0x169')],'as':_0x0128('0x16a')},{'attributes':['id',_0x0128('0x36'),'dialActive'],'model':db[_0x0128('0xa8')],'as':_0x0128('0xd3')}];}return db[_0x0128('0x158')][_0x0128('0x44')](_0x249af7);})[_0x0128('0x13')](function(_0x3ccf83){_0x286cf4['rows']=_0x3ccf83;return _0x286cf4;})['then'](respondWithFilteredResult(_0x5a9e9d,_0x249af7))[_0x0128('0x5a')](handleError(_0x5a9e9d,null));};exports['getApiKey']=function(_0x39facf,_0xb96878){if(!_['isNil'](_0x39facf['user']['id'])&&(_0x39facf['user'][_0x0128('0x32')]==_0x0128('0x29')||_0x39facf[_0x0128('0x2b')][_0x0128('0x32')]==_0x0128('0x2b'))){return db[_0x0128('0x38')][_0x0128('0x93')]({'where':{'id':_0x39facf[_0x0128('0x50')]['id']},'raw':!![]})[_0x0128('0x13')](function(_0x587cb3){return authService[_0x0128('0x16b')](_0x587cb3);})['then'](function(_0x561a03){if(_0x561a03){return _0xb96878[_0x0128('0x1e')](0xc8)[_0x0128('0x20')]({'api_key':_0x561a03['token']});}else{return _0xb96878['status'](0xcc)[_0x0128('0x20')]({'message':'No\x20API\x20access\x20key\x20found!'});}})['catch'](handleError(_0xb96878,0x193));}else{return _0xb96878[_0x0128('0x1e')](0x191)[_0x0128('0x20')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0x0128('0x16c')]=function(_0x266d8a,_0x41bfbf){if(!_[_0x0128('0x65')](_0x266d8a[_0x0128('0x2b')]['id'])&&(_0x266d8a[_0x0128('0x2b')][_0x0128('0x32')]==_0x0128('0x29')||_0x266d8a[_0x0128('0x2b')][_0x0128('0x32')]==_0x0128('0x2b'))){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x266d8a[_0x0128('0x50')]['id']}})[_0x0128('0x13')](function(_0x4fbf31){return authService['generateApiKey'](_0x4fbf31);})['then'](function(_0x103e94){return db[_0x0128('0x38')][_0x0128('0x5b')]({'apiKeyIat':_0x103e94[_0x0128('0x16d')],'apiKeyNonce':_0x103e94[_0x0128('0x16e')]},{'where':{'id':_0x266d8a['params']['id']}})['then'](function(){return _0x41bfbf['status'](0xc8)[_0x0128('0x20')]({'api_key':_0x103e94[_0x0128('0x16f')]});});})[_0x0128('0x5a')](handleError(_0x41bfbf,0x193));}else{return _0x41bfbf[_0x0128('0x1e')](0x191)[_0x0128('0x20')]({'message':_0x0128('0x170')});}};exports['removeApiKey']=function(_0x4524fd,_0x340d68){if(!_[_0x0128('0x65')](_0x4524fd[_0x0128('0x2b')]['id'])&&(_0x4524fd[_0x0128('0x2b')][_0x0128('0x32')]==_0x0128('0x29')||_0x4524fd[_0x0128('0x2b')][_0x0128('0x32')]==_0x0128('0x2b'))){return db[_0x0128('0x38')][_0x0128('0x33')]({'where':{'id':_0x4524fd['params']['id']}})[_0x0128('0x13')](handleEntityNotFound(_0x340d68,null))[_0x0128('0x13')](function(_0x164452){if(_0x164452&&_0x164452[_0x0128('0x171')]&&_0x164452[_0x0128('0x172')])return _0x164452;else throw{'message':_0x0128('0x173')};})[_0x0128('0x13')](function(_0x2d7be7){return db[_0x0128('0x38')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x4524fd[_0x0128('0x50')]['id']}});})[_0x0128('0x13')](respondWithStatusCode(_0x340d68,0xc8))[_0x0128('0x5a')](handleError(_0x340d68,0x193));}else{return _0x340d68[_0x0128('0x1e')](0x191)[_0x0128('0x20')]({'message':_0x0128('0x170')});}};exports[_0x0128('0x174')]=function(_0x3897b5,_0x3bbe97){var _0x39885b=_0x3897b5[_0x0128('0x2b')][_0x0128('0x28')]({'plain':!![]});if(!_0x39885b){return _0x3bbe97[_0x0128('0x1e')](0x191)[_0x0128('0x175')](_0x0128('0x176'));}else{return _0x3bbe97[_0x0128('0x1e')](0xc8)[_0x0128('0x20')](_0x39885b);}};exports[_0x0128('0x177')]=function(_0x5f3b62,_0x1b8ce3){var _0x407f67={'offset':0x0},_0x458531={'count':0x0,'rows':[]};Promise['resolve']()[_0x0128('0x13')](function(){if(!_0x5f3b62['query'][_0x0128('0x2f')]&&!_0x5f3b62[_0x0128('0x46')][_0x0128('0x178')]&&!_0x5f3b62[_0x0128('0x46')]['queues'])return[];return Promise['resolve']()['then'](function(){var _0x10e15d=[];if(!_[_0x0128('0x87')](_0x5f3b62[_0x0128('0x46')][_0x0128('0x178')])){_0x10e15d[_0x0128('0x43')](db[_0x0128('0x10e')][_0x0128('0x44')]({'attributes':['id',_0x0128('0x36')],'where':{'id':_0x5f3b62[_0x0128('0x46')]['teams']}}));}if(!_[_0x0128('0x87')](_0x5f3b62[_0x0128('0x46')][_0x0128('0x179')])){_0x10e15d[_0x0128('0x43')](db['VoiceQueue'][_0x0128('0x44')]({'attributes':['id',_0x0128('0x36')],'type':'inbound','where':{'id':_0x5f3b62['query'][_0x0128('0x179')]}}));}return Promise[_0x0128('0x4f')](_0x10e15d);})['then'](function(_0x561626){var _0x1a3f30=_[_0x0128('0x11c')](_0x561626)[_0x0128('0x31')](function(_0x1e4d9d){return _0x1e4d9d[_0x0128('0x125')]({'attributes':['id','name','internal',_0x0128('0x9a')],'raw':!![]});});return Promise[_0x0128('0x4f')](_0x1a3f30);})[_0x0128('0x13')](function(_0x5730a3){var _0xe27a5c=_[_0x0128('0x11c')](_0x5730a3);if(!_0x5f3b62[_0x0128('0x46')]['filter'])return _0xe27a5c;if(_[_0x0128('0x87')](_0xe27a5c)){return db[_0x0128('0x38')][_0x0128('0x44')]({'attributes':['id',_0x0128('0x36'),_0x0128('0x60'),'online'],'where':{'role':'agent','$or':[db['sequelize'][_0x0128('0x40')](db[_0x0128('0x68')]['fn'](_0x0128('0x17a'),db[_0x0128('0x68')][_0x0128('0x17b')]('name')),{'$like':'%'+_0x5f3b62[_0x0128('0x46')][_0x0128('0x2f')]['toLowerCase']()+'%'}),{'internal':{'$like':'%'+_0x5f3b62[_0x0128('0x46')][_0x0128('0x2f')]+'%'}}]},'raw':!![]});}else{return _(_0xe27a5c)[_0x0128('0x11c')]()['filter'](function(_0x1ed848){return _0x1ed848[_0x0128('0x36')]['toLowerCase']()[_0x0128('0x3c')](_0x5f3b62['query'][_0x0128('0x2f')][_0x0128('0xa2')]())||_0x1ed848['internal'][_0x0128('0x17c')]()[_0x0128('0x3c')](_0x5f3b62[_0x0128('0x46')][_0x0128('0x2f')]);})[_0x0128('0x3e')]();}})['then'](function(_0x1b7867){var _0xd32bb1=_0x0128('0x36');var _0xf35829='asc';if(_0x5f3b62[_0x0128('0x46')][_0x0128('0xc8')]){var _0xf35829=_0x5f3b62[_0x0128('0x46')][_0x0128('0xc8')][0x0]==='-'?_0x0128('0x17d'):_0x0128('0x17e');var _0xd32bb1=_0xf35829==='asc'?_0x5f3b62['query'][_0x0128('0xc8')]:_0x5f3b62['query']['sort']['substring'](0x1);}return _(_0x1b7867)[_0x0128('0x17f')]('id')[_0x0128('0x180')]([function(_0x11c9ee){return _0xd32bb1===_0x0128('0x36')?_0x11c9ee[_0xd32bb1]['toLowerCase']():_0x11c9ee[_0xd32bb1];}],[_0xf35829])[_0x0128('0x31')](function(_0x1054da){return _['pick'](_0x1054da,['id','name',_0x0128('0x60'),'online']);})[_0x0128('0x3e')]();})[_0x0128('0x13')](function(_0x347dd0){return client[_0x0128('0x181')]('Agents',_0x5f3b62)['then'](function(_0xbd7a47){if(_0xbd7a47['error'])throw new Error(_0x0128('0x182'));var _0x61c647=_0xbd7a47[_0x0128('0x1c')];var _0x26ffdb=jayson[_0x0128('0x11')][_0x0128('0x12')]({'port':0x232c});return _0x26ffdb[_0x0128('0x181')]('Agents',_0x5f3b62)[_0x0128('0x13')](function(_0x4d9e26){if(_0x4d9e26[_0x0128('0x18')])throw new Error(_0x0128('0x183'));var _0x4b563b=_0x4d9e26['result'];return _[_0x0128('0xca')]({},_0x4b563b,_0x61c647);});})[_0x0128('0x13')](function(_0x2d6773){return _[_0x0128('0x31')](_0x347dd0,function(_0x15c2d8){var _0x207a4f=_[_0x0128('0x33')](_0x2d6773[_0x0128('0x45')],['id',_0x15c2d8['id']]);if(!_0x207a4f||!_0x15c2d8['online']){_0x15c2d8[_0x0128('0x1e')]=_0x0128('0x184');}else if(_0x207a4f[_0x0128('0x9c')]){_0x15c2d8['status']='pause';}else{_0x15c2d8['status']=_[_0x0128('0x3c')](['idle',_0x0128('0x185'),'unavailable',_0x0128('0x186'),null,undefined],_0x207a4f[_0x0128('0x187')])?'online':_0x0128('0x188');}return _0x15c2d8;});});});})[_0x0128('0x13')](function(_0x40b9b5){if(!_0x5f3b62['query'][_0x0128('0xcc')]('nolimit')){_0x407f67[_0x0128('0x22')]=qs[_0x0128('0x22')](_0x5f3b62[_0x0128('0x46')]['limit']||0xa);_0x407f67[_0x0128('0x24')]=qs[_0x0128('0x24')](_0x5f3b62['query']['offset']);}_0x458531[_0x0128('0x23')]=_0x40b9b5[_0x0128('0x49')];_0x458531['rows']=_0x407f67[_0x0128('0x22')]?_0x40b9b5[_0x0128('0x189')](_0x407f67[_0x0128('0x24')],_0x407f67['offset']+_0x407f67[_0x0128('0x22')]):_0x40b9b5;return _0x458531;})['then'](respondWithFilteredResult(_0x1b8ce3,_0x407f67))['catch'](handleError(_0x1b8ce3,null));};function get_open_tabs(_0x3b8231,_0x196f7d){var _0x33ea3b=_0x3b8231[_0x0128('0x18a')](0x0)[_0x0128('0x18b')]()+_0x3b8231[_0x0128('0x189')](0x1);var _0x14704c={'type':db[_0x0128('0x8c')][_0x0128('0x69')]['SELECT'],'raw':!![]};return new BPromise(function(_0x1c16b8,_0x2aebb0){var _0x3383e0=squel[_0x0128('0x18c')]()[_0x0128('0x18d')](_0x0128('0x18e')+_0x33ea3b+_0x0128('0x18f'),'id')[_0x0128('0x18d')]('ui.createdAt')[_0x0128('0x6b')](_0x0128('0x190')+_0x3b8231+_0x0128('0x191'),'ui')[_0x0128('0x40')](_0x0128('0x192'),_0x196f7d['id']);return db[_0x0128('0x68')][_0x0128('0x46')](_0x3383e0['toString'](),_0x14704c)[_0x0128('0x13')](function(_0x5d4528){_0x196f7d[_0x33ea3b+_0x0128('0x193')]=_0x5d4528;_0x1c16b8(_0x5d4528);})[_0x0128('0x5a')](function(_0x2d8d48){_0x2aebb0(_0x2d8d48);});});};
\ No newline at end of file
index e93be3f..b2752d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51a6=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','User','setMaxListeners','save','update','remove'];(function(_0x5b72ff,_0x58164d){var _0x58ad81=function(_0x5cad75){while(--_0x5cad75){_0x5b72ff['push'](_0x5b72ff['shift']());}};_0x58ad81(++_0x58164d);}(_0x51a6,0x9e));var _0x651a=function(_0xbc2d9e,_0x40ef4f){_0xbc2d9e=_0xbc2d9e-0x0;var _0x2e315c=_0x51a6[_0xbc2d9e];return _0x2e315c;};'use strict';var EventEmitter=require(_0x651a('0x0'));var User=require(_0x651a('0x1'))['db'][_0x651a('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x651a('0x3')](0x0);var events={'afterCreate':_0x651a('0x4'),'afterUpdate':_0x651a('0x5'),'afterDestroy':_0x651a('0x6')};function emitEvent(_0x20761f){return function(_0x3e318f,_0xd799de,_0x534396){UserEvents[_0x651a('0x7')](_0x20761f+':'+_0x3e318f['id'],_0x3e318f);UserEvents[_0x651a('0x7')](_0x20761f,_0x3e318f);_0x534396(null);};}for(var e in events){if(events[_0x651a('0x8')](e)){var event=events[e];User[_0x651a('0x9')](e,emitEvent(event));}}module[_0x651a('0xa')]=UserEvents;
\ No newline at end of file
+var _0x4f4f=['setMaxListeners','save','remove','emit','hasOwnProperty','exports','events','../../mysqldb','User'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4f4f,0xe7));var _0xf4f4=function(_0x1d06cf,_0x430c44){_0x1d06cf=_0x1d06cf-0x0;var _0x5c97cc=_0x4f4f[_0x1d06cf];return _0x5c97cc;};'use strict';var EventEmitter=require(_0xf4f4('0x0'));var User=require(_0xf4f4('0x1'))['db'][_0xf4f4('0x2')];var UserEvents=new EventEmitter();UserEvents[_0xf4f4('0x3')](0x0);var events={'afterCreate':_0xf4f4('0x4'),'afterUpdate':'update','afterDestroy':_0xf4f4('0x5')};function emitEvent(_0x7e07a3){return function(_0x4ea836,_0x29e3f8,_0x4165ba){UserEvents[_0xf4f4('0x6')](_0x7e07a3+':'+_0x4ea836['id'],_0x4ea836);UserEvents[_0xf4f4('0x6')](_0x7e07a3,_0x4ea836);_0x4165ba(null);};}for(var e in events){if(events[_0xf4f4('0x7')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0xf4f4('0x8')]=UserEvents;
\ No newline at end of file
index 9544fc3..d283e83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x231a=['SIP/%s,%s','name','options','join','wav','WAV','gsm','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','exports','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','find','privacyEnabled','updateMd5Password','updatePassword','changed','UserProfile','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','makeSalt','md5secret',':asterisk:','crypto','md5','lodash','./user.attributes','google','length','context','from-sip','system','%s%s','prefix','push','merge','Set','format','CDR(type)=%s','chanspy','record','auth','Authenticate','password'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x231a,0xc6));var _0xa231=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x231a[_0x321bb2];return _0x9c12ed;};'use strict';var BPromise=require('bluebird');var crypto=require(_0xa231('0x0'));var util=require('util');var md5=require(_0xa231('0x1'));var _=require(_0xa231('0x2'));var attributes=require(_0xa231('0x3'));var authTypes=[_0xa231('0x4')];var validatePresenceOf=function(_0x3e4866){return _0x3e4866&&_0x3e4866[_0xa231('0x5')];};var getChanSpyApplications=function(_0x4e66a7,_0x5a920b,_0x15b3fd){var _0x1fe3b7={'context':_0x4e66a7[_0xa231('0x6')]||_0xa231('0x7'),'type':_0xa231('0x8'),'isApp':![],'UserId':_0x4e66a7['id']};var _0x24eb7a=[];for(var _0x4ba7f2=0x0,_0x111040=0x1;_0x4ba7f2<_0x15b3fd['length'];_0x4ba7f2++,_0x111040=0x1){var _0xf5767b={'exten':util['format'](_0xa231('0x9'),_0x15b3fd[_0x4ba7f2][_0xa231('0xa')],_0x5a920b),'ChanSpyId':_0x15b3fd[_0x4ba7f2]['id']};_0x24eb7a[_0xa231('0xb')](_[_0xa231('0xc')]({'app':_0xa231('0xd'),'appdata':util[_0xa231('0xe')](_0xa231('0xf'),_0xa231('0x10')),'priority':_0x111040++},_0x1fe3b7,_0xf5767b));if(_0x15b3fd[_0x4ba7f2][_0xa231('0x11')]){_0x24eb7a[_0xa231('0xb')](_[_0xa231('0xc')]({'app':'MixMonitor','appdata':util[_0xa231('0xe')]('${UNIQUEID}.%s,a',_0x15b3fd[_0x4ba7f2]['recordingFormat']),'priority':_0x111040++},_0x1fe3b7,_0xf5767b));}if(_0x15b3fd[_0x4ba7f2][_0xa231('0x12')]){_0x24eb7a['push'](_['merge']({'app':_0xa231('0x13'),'appdata':_0x15b3fd[_0x4ba7f2][_0xa231('0x14')],'priority':_0x111040++},_0x1fe3b7,_0xf5767b));}_0x24eb7a[_0xa231('0xb')](_[_0xa231('0xc')]({'app':'ChanSpy','appdata':util[_0xa231('0xe')](_0xa231('0x15'),_0x4e66a7[_0xa231('0x16')],_0x15b3fd[_0x4ba7f2][_0xa231('0x17')]?_0x15b3fd[_0x4ba7f2][_0xa231('0x17')][_0xa231('0x18')](''):''),'priority':_0x111040++},_0x1fe3b7,_0xf5767b));if(_0x15b3fd[_0x4ba7f2][_0xa231('0x11')]){_0x24eb7a[_0xa231('0xb')](_['merge']({'app':'StopMixMonitor','priority':_0x111040++},_0x1fe3b7,_0xf5767b));}}return _0x24eb7a;};var getUserApplications=function(_0x3f9e1f,_0x26bb45){var _0x288196=[_0xa231('0x19'),_0xa231('0x1a'),_0xa231('0x1b')];var _0x395431={'context':_0x3f9e1f['context']||'from-sip','exten':_0x26bb45,'type':_0xa231('0x8'),'isApp':![],'UserId':_0x3f9e1f['id']};var _0x4d9128=[{'app':_0xa231('0xd'),'appdata':'CDR(type)=internal'}];if(_0x3f9e1f[_0xa231('0x1c')]&&_['includes'](_0x288196,_0x3f9e1f[_0xa231('0x1c')])){_0x4d9128[_0xa231('0xb')]({'app':_0xa231('0xd'),'appdata':_0xa231('0x1d')});_0x4d9128[_0xa231('0xb')]({'app':_0xa231('0xd'),'appdata':util['format'](_0xa231('0x1e'),_0x3f9e1f['extensionMonitor'])});_0x4d9128[_0xa231('0xb')]({'app':'Dial','appdata':util[_0xa231('0xe')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x3f9e1f['name'])});}else{_0x4d9128[_0xa231('0xb')]({'app':'Dial','appdata':util[_0xa231('0xe')](_0xa231('0x1f'),_0x3f9e1f['name'])});}_0x4d9128[_0xa231('0xb')]({'app':'Hangup'});for(var _0x5f05f4=0x0;_0x5f05f4<_0x4d9128[_0xa231('0x5')];_0x5f05f4++){_0x4d9128[_0x5f05f4][_0xa231('0x20')]=_0x5f05f4+0x1;_0x4d9128[_0x5f05f4]=_[_0xa231('0x21')](_0x4d9128[_0x5f05f4],_0x395431);}return _0x4d9128;};var getChanSpyPromise=function(_0x365886,_0x538c70){return new BPromise(function(_0x172030,_0x3658f6){return _0x365886[_0xa231('0x22')][_0xa231('0x23')]()[_0xa231('0x24')](function(_0x15e12a){if(_0x15e12a){var _0x32368c=getChanSpyApplications(_0x538c70,_0x538c70[_0xa231('0x25')],_0x15e12a);if(_0x538c70[_0xa231('0x25')]!=_0x538c70[_0xa231('0x16')]){_0x32368c=_0x32368c[_0xa231('0x26')](getChanSpyApplications(_0x538c70,_0x538c70[_0xa231('0x16')],_0x15e12a));}return _0x172030(_0x32368c);}return _0x172030([]);})[_0xa231('0x27')](function(_0x57c3ce){_0x3658f6(_0x57c3ce);});});};module[_0xa231('0x28')]=function(_0x5d65ec,_0x131b03){var _0x37912c=_0x5d65ec[_0xa231('0x29')];return _0x5d65ec[_0xa231('0x2a')](_0xa231('0x2b'),attributes,{'tableName':_0xa231('0x2c'),'charset':_0xa231('0x2d'),'collate':_0xa231('0x2e'),'hooks':{'beforeCreate':function(_0x391659,_0x2c1bd6,_0x4f88d8){var _0x2d33ed=typeof _0x391659[_0xa231('0x2f')]===_0xa231('0x30')?BPromise[_0xa231('0x31')](null):_0x37912c['UserProfile'][_0xa231('0x32')]({'where':{'id':_0x391659['userProfileId']}});_0x2d33ed['then'](function(_0xd944ab){if(_0xd944ab){_0x391659[_0xa231('0x33')]=_0xd944ab[_0xa231('0x33')];}})['then'](function(){_0x391659[_0xa231('0x34')]();_0x391659[_0xa231('0x35')](_0x4f88d8);})[_0xa231('0x27')](function(_0x402d1d){_0x4f88d8(_0x402d1d);});},'beforeUpdate':function(_0x1c3283,_0x1b0b83,_0x28f6c7){Promise[_0xa231('0x31')]()[_0xa231('0x24')](function(){if(_0x1c3283[_0xa231('0x36')]('userProfileId')===![])return;return _0x37912c[_0xa231('0x37')][_0xa231('0x32')]({'where':{'id':_0x1c3283[_0xa231('0x2f')]}})[_0xa231('0x24')](function(_0x2a0702){if(_0x2a0702)_0x1c3283['privacyEnabled']=_0x2a0702['privacyEnabled'];return;});})[_0xa231('0x24')](function(){if(_0x1c3283['changed']('password')){_0x1c3283[_0xa231('0x34')]();return _0x1c3283['updatePassword'](_0x28f6c7);}_0x28f6c7();})[_0xa231('0x27')](function(_0x4c621a){_0x28f6c7(_0x4c621a);});},'afterCreate':function(_0x20e80a,_0x1615c8,_0x206c99){var _0x418ab9=getUserApplications(_0x20e80a,_0x20e80a['internal']);if(_0x20e80a[_0xa231('0x25')]!=_0x20e80a[_0xa231('0x16')]){_0x418ab9=_0x418ab9[_0xa231('0x26')](getUserApplications(_0x20e80a,_0x20e80a[_0xa231('0x16')]));}return _0x37912c[_0xa231('0x38')][_0xa231('0x39')](_0x418ab9)[_0xa231('0x24')](function(){if(_0x20e80a[_0xa231('0x10')]){return getChanSpyPromise(_0x37912c,_0x20e80a);}})[_0xa231('0x24')](function(_0xee72be){if(_0xee72be&&_0xee72be[_0xa231('0x5')]){return _0x37912c[_0xa231('0x38')]['bulkCreate'](_0xee72be);}})['then'](function(){_0x206c99();})['catch'](function(_0xb2f485){_0x206c99(_0xb2f485);});},'afterUpdate':function(_0x13de70,_0x3ec13c,_0x5424cb){return BPromise[_0xa231('0x31')]()[_0xa231('0x24')](function(){if(_0x13de70[_0xa231('0x36')](_0xa231('0x10'))||_0x13de70[_0xa231('0x36')](_0xa231('0x6'))){return _0x37912c[_0xa231('0x38')][_0xa231('0x3a')]({'where':{'UserId':_0x13de70['id'],'type':_0xa231('0x8'),'ChanSpyId':{'$ne':null}}})[_0xa231('0x24')](function(){if(_0x13de70[_0xa231('0x10')]){return getChanSpyPromise(_0x37912c,_0x13de70)[_0xa231('0x24')](function(_0x1d9353){if(_0x1d9353&&_0x1d9353[_0xa231('0x5')]){return _0x37912c[_0xa231('0x38')][_0xa231('0x39')](_0x1d9353);}});}});}})[_0xa231('0x24')](function(){if(_0x13de70[_0xa231('0x36')]('extensionMonitor')||_0x13de70['changed'](_0xa231('0x6'))){return _0x37912c['VoiceExtension'][_0xa231('0x3a')]({'where':{'UserId':_0x13de70['id'],'type':_0xa231('0x8'),'ChanSpyId':null}})[_0xa231('0x24')](function(){var _0x5c48c1=getUserApplications(_0x13de70,_0x13de70[_0xa231('0x25')]);if(_0x13de70['internal']!=_0x13de70[_0xa231('0x16')]){_0x5c48c1=_0x5c48c1[_0xa231('0x26')](getUserApplications(_0x13de70,_0x13de70[_0xa231('0x16')]));}return _0x37912c[_0xa231('0x38')][_0xa231('0x39')](_0x5c48c1);});}})[_0xa231('0x24')](function(){_0x5424cb();})['catch'](function(_0x3affeb){_0x5424cb(_0x3affeb);});},'afterDestroy':function(_0x15f7cc,_0x57f7b5){return _0x37912c['VoiceExtension'][_0xa231('0x3a')]({'where':{'UserId':_0x15f7cc['id'],'type':_0xa231('0x8')}});}},'instanceMethods':{'authenticate':function(_0x1d7966,_0x12a9af){if(!_0x12a9af){return this[_0xa231('0x14')]===this[_0xa231('0x3b')](_0x1d7966);}var _0x6f505d=this;this[_0xa231('0x3b')](_0x1d7966,function(_0x2631e9,_0x16ef37){if(_0x2631e9){_0x12a9af(_0x2631e9);}if(_0x6f505d[_0xa231('0x14')]===_0x16ef37){_0x12a9af(null,!![]);}else{_0x12a9af(null,![]);}});},'makeSalt':function(_0x220beb,_0x4cf973){var _0x1800e1=0x10;if(typeof arguments[0x0]===_0xa231('0x3c')){_0x4cf973=arguments[0x0];_0x220beb=_0x1800e1;}else if(typeof arguments[0x1]==='function'){_0x4cf973=arguments[0x1];}else{throw new Error(_0xa231('0x3d'));}if(!_0x220beb){_0x220beb=_0x1800e1;}return crypto[_0xa231('0x3e')](_0x220beb,function(_0x11cfdd,_0x2b4ad9){if(_0x11cfdd){_0x4cf973(_0x11cfdd);}return _0x4cf973(null,_0x2b4ad9[_0xa231('0x3f')](_0xa231('0x40')));});},'encryptPassword':function(_0x31fe0d,_0x3a50b7){if(!_0x31fe0d||!this[_0xa231('0x41')]){return _0x3a50b7?_0x3a50b7(null):null;}var _0x10afa3=0x2710;var _0x1bbaa3=0x40;var _0x14a5ef=new Buffer(this[_0xa231('0x41')],'base64');if(!_0x3a50b7){return crypto[_0xa231('0x42')](_0x31fe0d,_0x14a5ef,_0x10afa3,_0x1bbaa3,_0xa231('0x43'))[_0xa231('0x3f')](_0xa231('0x40'));}return crypto[_0xa231('0x44')](_0x31fe0d,_0x14a5ef,_0x10afa3,_0x1bbaa3,'sha1',function(_0x216723,_0x3223da){if(_0x216723){_0x3a50b7(_0x216723);}return _0x3a50b7(null,_0x3223da['toString'](_0xa231('0x40')));});},'updatePassword':function(_0x46882d){if(!this[_0xa231('0x14')]){return _0x46882d(null);}if(!validatePresenceOf(this[_0xa231('0x14')])&&authTypes[_0xa231('0x45')](this['provider'])===-0x1){_0x46882d(new Error('Invalid\x20password'));}var _0x27eceb=this;this[_0xa231('0x46')](function(_0x38e0bb,_0x2d09f6){if(_0x38e0bb){return _0x46882d(_0x38e0bb);}_0x27eceb[_0xa231('0x41')]=_0x2d09f6;_0x27eceb[_0xa231('0x3b')](_0x27eceb[_0xa231('0x14')],function(_0x2b74e4,_0x28b650){if(_0x2b74e4){_0x46882d(_0x2b74e4);}_0x27eceb[_0xa231('0x14')]=_0x28b650;_0x46882d(null);});});},'updateMd5Password':function(){this[_0xa231('0x47')]=md5(this['name']+_0xa231('0x48')+this[_0xa231('0x14')]);return this[_0xa231('0x47')];}}});};
\ No newline at end of file
+var _0xea52=['users','utf8_bin','undefined','resolve','UserProfile','privacyEnabled','updateMd5Password','updatePassword','catch','changed','find','userProfileId','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','pbkdf2','sha1','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','crypto','util','md5','lodash','./user.attributes','google','from-sip','system','length','format','%s%s','prefix','push','Set','CDR(type)=%s','chanspy','merge','MixMonitor','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','StopMixMonitor','WAV','context','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','then','internal','concat','exports','User'];(function(_0x2cf692,_0x5991e7){var _0x36b9f7=function(_0x1a62ac){while(--_0x1a62ac){_0x2cf692['push'](_0x2cf692['shift']());}};_0x36b9f7(++_0x5991e7);}(_0xea52,0x103));var _0x2ea5=function(_0x4c16cf,_0x311772){_0x4c16cf=_0x4c16cf-0x0;var _0x1ac4ae=_0xea52[_0x4c16cf];return _0x1ac4ae;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x2ea5('0x0'));var util=require(_0x2ea5('0x1'));var md5=require(_0x2ea5('0x2'));var _=require(_0x2ea5('0x3'));var attributes=require(_0x2ea5('0x4'));var authTypes=[_0x2ea5('0x5')];var validatePresenceOf=function(_0x16854d){return _0x16854d&&_0x16854d['length'];};var getChanSpyApplications=function(_0x343ee9,_0x1ea11f,_0x1fdd6c){var _0x3a6ad9={'context':_0x343ee9['context']||_0x2ea5('0x6'),'type':_0x2ea5('0x7'),'isApp':![],'UserId':_0x343ee9['id']};var _0x35d9ba=[];for(var _0x375fd7=0x0,_0x4f7b45=0x1;_0x375fd7<_0x1fdd6c[_0x2ea5('0x8')];_0x375fd7++,_0x4f7b45=0x1){var _0x1446b5={'exten':util[_0x2ea5('0x9')](_0x2ea5('0xa'),_0x1fdd6c[_0x375fd7][_0x2ea5('0xb')],_0x1ea11f),'ChanSpyId':_0x1fdd6c[_0x375fd7]['id']};_0x35d9ba[_0x2ea5('0xc')](_['merge']({'app':_0x2ea5('0xd'),'appdata':util[_0x2ea5('0x9')](_0x2ea5('0xe'),_0x2ea5('0xf')),'priority':_0x4f7b45++},_0x3a6ad9,_0x1446b5));if(_0x1fdd6c[_0x375fd7]['record']){_0x35d9ba[_0x2ea5('0xc')](_[_0x2ea5('0x10')]({'app':_0x2ea5('0x11'),'appdata':util['format']('${UNIQUEID}.%s,a',_0x1fdd6c[_0x375fd7][_0x2ea5('0x12')]),'priority':_0x4f7b45++},_0x3a6ad9,_0x1446b5));}if(_0x1fdd6c[_0x375fd7][_0x2ea5('0x13')]){_0x35d9ba[_0x2ea5('0xc')](_[_0x2ea5('0x10')]({'app':_0x2ea5('0x14'),'appdata':_0x1fdd6c[_0x375fd7][_0x2ea5('0x15')],'priority':_0x4f7b45++},_0x3a6ad9,_0x1446b5));}_0x35d9ba[_0x2ea5('0xc')](_[_0x2ea5('0x10')]({'app':_0x2ea5('0x16'),'appdata':util[_0x2ea5('0x9')](_0x2ea5('0x17'),_0x343ee9[_0x2ea5('0x18')],_0x1fdd6c[_0x375fd7][_0x2ea5('0x19')]?_0x1fdd6c[_0x375fd7][_0x2ea5('0x19')]['join'](''):''),'priority':_0x4f7b45++},_0x3a6ad9,_0x1446b5));if(_0x1fdd6c[_0x375fd7]['record']){_0x35d9ba[_0x2ea5('0xc')](_['merge']({'app':_0x2ea5('0x1a'),'priority':_0x4f7b45++},_0x3a6ad9,_0x1446b5));}}return _0x35d9ba;};var getUserApplications=function(_0x5cc5a5,_0x1913c8){var _0x228632=['wav',_0x2ea5('0x1b'),'gsm'];var _0x4197b5={'context':_0x5cc5a5[_0x2ea5('0x1c')]||_0x2ea5('0x6'),'exten':_0x1913c8,'type':_0x2ea5('0x7'),'isApp':![],'UserId':_0x5cc5a5['id']};var _0x2d94d8=[{'app':_0x2ea5('0xd'),'appdata':_0x2ea5('0x1d')}];if(_0x5cc5a5[_0x2ea5('0x1e')]&&_[_0x2ea5('0x1f')](_0x228632,_0x5cc5a5[_0x2ea5('0x1e')])){_0x2d94d8[_0x2ea5('0xc')]({'app':_0x2ea5('0xd'),'appdata':_0x2ea5('0x20')});_0x2d94d8[_0x2ea5('0xc')]({'app':'Set','appdata':util['format'](_0x2ea5('0x21'),_0x5cc5a5['extensionMonitor'])});_0x2d94d8[_0x2ea5('0xc')]({'app':_0x2ea5('0x22'),'appdata':util[_0x2ea5('0x9')](_0x2ea5('0x23'),_0x5cc5a5[_0x2ea5('0x18')])});}else{_0x2d94d8[_0x2ea5('0xc')]({'app':_0x2ea5('0x22'),'appdata':util[_0x2ea5('0x9')](_0x2ea5('0x24'),_0x5cc5a5[_0x2ea5('0x18')])});}_0x2d94d8[_0x2ea5('0xc')]({'app':_0x2ea5('0x25')});for(var _0x2e9c5b=0x0;_0x2e9c5b<_0x2d94d8['length'];_0x2e9c5b++){_0x2d94d8[_0x2e9c5b][_0x2ea5('0x26')]=_0x2e9c5b+0x1;_0x2d94d8[_0x2e9c5b]=_[_0x2ea5('0x27')](_0x2d94d8[_0x2e9c5b],_0x4197b5);}return _0x2d94d8;};var getChanSpyPromise=function(_0x30887b,_0x1f8ab5){return new BPromise(function(_0x593781,_0x29bce8){return _0x30887b['VoiceChanSpy']['findAll']()[_0x2ea5('0x28')](function(_0x6a06ab){if(_0x6a06ab){var _0x524e5f=getChanSpyApplications(_0x1f8ab5,_0x1f8ab5[_0x2ea5('0x29')],_0x6a06ab);if(_0x1f8ab5['internal']!=_0x1f8ab5[_0x2ea5('0x18')]){_0x524e5f=_0x524e5f[_0x2ea5('0x2a')](getChanSpyApplications(_0x1f8ab5,_0x1f8ab5[_0x2ea5('0x18')],_0x6a06ab));}return _0x593781(_0x524e5f);}return _0x593781([]);})['catch'](function(_0x19b3a6){_0x29bce8(_0x19b3a6);});});};module[_0x2ea5('0x2b')]=function(_0x5d3d8b,_0x5e2dd7){var _0x15e351=_0x5d3d8b['models'];return _0x5d3d8b['define'](_0x2ea5('0x2c'),attributes,{'tableName':_0x2ea5('0x2d'),'charset':'utf8','collate':_0x2ea5('0x2e'),'hooks':{'beforeCreate':function(_0x4c17cd,_0x161164,_0x483b51){var _0x307530=typeof _0x4c17cd['userProfileId']===_0x2ea5('0x2f')?BPromise[_0x2ea5('0x30')](null):_0x15e351[_0x2ea5('0x31')]['find']({'where':{'id':_0x4c17cd['userProfileId']}});_0x307530['then'](function(_0x3531ff){if(_0x3531ff){_0x4c17cd[_0x2ea5('0x32')]=_0x3531ff[_0x2ea5('0x32')];}})[_0x2ea5('0x28')](function(){_0x4c17cd[_0x2ea5('0x33')]();_0x4c17cd[_0x2ea5('0x34')](_0x483b51);})[_0x2ea5('0x35')](function(_0x1b2703){_0x483b51(_0x1b2703);});},'beforeUpdate':function(_0x1a02c,_0x36c37a,_0x46e97b){Promise[_0x2ea5('0x30')]()[_0x2ea5('0x28')](function(){if(_0x1a02c[_0x2ea5('0x36')]('userProfileId')===![])return;return _0x15e351[_0x2ea5('0x31')][_0x2ea5('0x37')]({'where':{'id':_0x1a02c[_0x2ea5('0x38')]}})[_0x2ea5('0x28')](function(_0x33685a){if(_0x33685a)_0x1a02c[_0x2ea5('0x32')]=_0x33685a[_0x2ea5('0x32')];return;});})[_0x2ea5('0x28')](function(){if(_0x1a02c[_0x2ea5('0x36')](_0x2ea5('0x15'))){_0x1a02c['updateMd5Password']();return _0x1a02c[_0x2ea5('0x34')](_0x46e97b);}_0x46e97b();})[_0x2ea5('0x35')](function(_0xcbd488){_0x46e97b(_0xcbd488);});},'afterCreate':function(_0x1b38b2,_0x183dfa,_0x110105){var _0x342e1c=getUserApplications(_0x1b38b2,_0x1b38b2[_0x2ea5('0x29')]);if(_0x1b38b2['internal']!=_0x1b38b2[_0x2ea5('0x18')]){_0x342e1c=_0x342e1c[_0x2ea5('0x2a')](getUserApplications(_0x1b38b2,_0x1b38b2[_0x2ea5('0x18')]));}return _0x15e351[_0x2ea5('0x39')]['bulkCreate'](_0x342e1c)['then'](function(){if(_0x1b38b2[_0x2ea5('0xf')]){return getChanSpyPromise(_0x15e351,_0x1b38b2);}})[_0x2ea5('0x28')](function(_0x3e7f71){if(_0x3e7f71&&_0x3e7f71['length']){return _0x15e351['VoiceExtension'][_0x2ea5('0x3a')](_0x3e7f71);}})['then'](function(){_0x110105();})[_0x2ea5('0x35')](function(_0x7f0164){_0x110105(_0x7f0164);});},'afterUpdate':function(_0x1646c5,_0x45e5b8,_0x35bcdf){return BPromise[_0x2ea5('0x30')]()[_0x2ea5('0x28')](function(){if(_0x1646c5[_0x2ea5('0x36')](_0x2ea5('0xf'))||_0x1646c5['changed'](_0x2ea5('0x1c'))){return _0x15e351[_0x2ea5('0x39')][_0x2ea5('0x3b')]({'where':{'UserId':_0x1646c5['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x2ea5('0x28')](function(){if(_0x1646c5[_0x2ea5('0xf')]){return getChanSpyPromise(_0x15e351,_0x1646c5)['then'](function(_0x551c47){if(_0x551c47&&_0x551c47[_0x2ea5('0x8')]){return _0x15e351['VoiceExtension'][_0x2ea5('0x3a')](_0x551c47);}});}});}})['then'](function(){if(_0x1646c5[_0x2ea5('0x36')](_0x2ea5('0x1e'))||_0x1646c5['changed'](_0x2ea5('0x1c'))){return _0x15e351[_0x2ea5('0x39')]['destroy']({'where':{'UserId':_0x1646c5['id'],'type':_0x2ea5('0x7'),'ChanSpyId':null}})['then'](function(){var _0xe15bd2=getUserApplications(_0x1646c5,_0x1646c5[_0x2ea5('0x29')]);if(_0x1646c5['internal']!=_0x1646c5[_0x2ea5('0x18')]){_0xe15bd2=_0xe15bd2['concat'](getUserApplications(_0x1646c5,_0x1646c5['name']));}return _0x15e351['VoiceExtension']['bulkCreate'](_0xe15bd2);});}})['then'](function(){_0x35bcdf();})[_0x2ea5('0x35')](function(_0x594203){_0x35bcdf(_0x594203);});},'afterDestroy':function(_0x51b662,_0x96f6cb){return _0x15e351['VoiceExtension']['destroy']({'where':{'UserId':_0x51b662['id'],'type':_0x2ea5('0x7')}});}},'instanceMethods':{'authenticate':function(_0x4a21f9,_0x154958){if(!_0x154958){return this[_0x2ea5('0x15')]===this[_0x2ea5('0x3c')](_0x4a21f9);}var _0x41ef1e=this;this[_0x2ea5('0x3c')](_0x4a21f9,function(_0x3dea69,_0x3b0dd8){if(_0x3dea69){_0x154958(_0x3dea69);}if(_0x41ef1e['password']===_0x3b0dd8){_0x154958(null,!![]);}else{_0x154958(null,![]);}});},'makeSalt':function(_0x3c9394,_0x450df1){var _0x383b62=0x10;if(typeof arguments[0x0]===_0x2ea5('0x3d')){_0x450df1=arguments[0x0];_0x3c9394=_0x383b62;}else if(typeof arguments[0x1]==='function'){_0x450df1=arguments[0x1];}else{throw new Error(_0x2ea5('0x3e'));}if(!_0x3c9394){_0x3c9394=_0x383b62;}return crypto[_0x2ea5('0x3f')](_0x3c9394,function(_0x2002b4,_0x39081b){if(_0x2002b4){_0x450df1(_0x2002b4);}return _0x450df1(null,_0x39081b[_0x2ea5('0x40')](_0x2ea5('0x41')));});},'encryptPassword':function(_0x57924c,_0x97afdf){if(!_0x57924c||!this[_0x2ea5('0x42')]){return _0x97afdf?_0x97afdf(null):null;}var _0x5e1f38=0x2710;var _0x5cc00a=0x40;var _0x3ad2ea=new Buffer(this[_0x2ea5('0x42')],_0x2ea5('0x41'));if(!_0x97afdf){return crypto[_0x2ea5('0x43')](_0x57924c,_0x3ad2ea,_0x5e1f38,_0x5cc00a,'sha1')['toString'](_0x2ea5('0x41'));}return crypto[_0x2ea5('0x44')](_0x57924c,_0x3ad2ea,_0x5e1f38,_0x5cc00a,_0x2ea5('0x45'),function(_0x165251,_0x5858b4){if(_0x165251){_0x97afdf(_0x165251);}return _0x97afdf(null,_0x5858b4[_0x2ea5('0x40')](_0x2ea5('0x41')));});},'updatePassword':function(_0x4cab95){if(!this[_0x2ea5('0x15')]){return _0x4cab95(null);}if(!validatePresenceOf(this[_0x2ea5('0x15')])&&authTypes[_0x2ea5('0x46')](this[_0x2ea5('0x47')])===-0x1){_0x4cab95(new Error(_0x2ea5('0x48')));}var _0x497c12=this;this[_0x2ea5('0x49')](function(_0x5451f2,_0x3635e7){if(_0x5451f2){return _0x4cab95(_0x5451f2);}_0x497c12['salt']=_0x3635e7;_0x497c12[_0x2ea5('0x3c')](_0x497c12['password'],function(_0x27b84f,_0x4b25ad){if(_0x27b84f){_0x4cab95(_0x27b84f);}_0x497c12[_0x2ea5('0x15')]=_0x4b25ad;_0x4cab95(null);});});},'updateMd5Password':function(){this[_0x2ea5('0x4a')]=md5(this[_0x2ea5('0x18')]+_0x2ea5('0x4b')+this[_0x2ea5('0x15')]);return this['md5secret'];}}});};
\ No newline at end of file
index 4c4cbd4..1e1199d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc99=['Unknown\x20channel','voice','UserVoiceQueueRt','system','chat','sms','openchannel','%s%s','Pause','push','all','LogoutUser','destroy','LoginUser','mobile','phone','loginInPause','count','agent','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','LOGIN','merge','LOGININPAUSE','bulkCreate','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./user.socket','request','then','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','GetUser','User','findAll','options','raw','where','limit','include','map','model','attributes','catch','ShowUser','find','PauseUser','name','internal','interface','update','MemberReport','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','SIP/%s','body','type','role','DEFAULT\x20PAUSE','findOne','channel'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0xbc99,0x188));var _0x9bc9=function(_0x32d1b6,_0x2a26fc){_0x32d1b6=_0x32d1b6-0x0;var _0x397ac6=_0xbc99[_0x32d1b6];return _0x397ac6;};'use strict';var _=require(_0x9bc9('0x0'));var util=require(_0x9bc9('0x1'));var moment=require(_0x9bc9('0x2'));var BPromise=require(_0x9bc9('0x3'));var rs=require(_0x9bc9('0x4'));var fs=require('fs');var Redis=require(_0x9bc9('0x5'));var db=require(_0x9bc9('0x6'))['db'];var utils=require(_0x9bc9('0x7'));var logger=require(_0x9bc9('0x8'))(_0x9bc9('0x9'));var config=require(_0x9bc9('0xa'));var jayson=require(_0x9bc9('0xb'));var client=jayson[_0x9bc9('0xc')][_0x9bc9('0xd')]({'port':0x232a});config[_0x9bc9('0xe')]=_[_0x9bc9('0xf')](config[_0x9bc9('0xe')],{'host':'localhost','port':0x18eb});var socket=require(_0x9bc9('0x10'))(new Redis(config['redis']));require(_0x9bc9('0x11'))['register'](socket);function respondWithRpcPromise(_0x5a1b20,_0x3afc9e,_0x337a82){return new BPromise(function(_0x4bf30e,_0x2de3ff){return client[_0x9bc9('0x12')](_0x5a1b20,_0x337a82)[_0x9bc9('0x13')](function(_0x1f6135){logger['info'](_0x9bc9('0x14'),_0x3afc9e,_0x9bc9('0x15'));logger[_0x9bc9('0x16')](_0x9bc9('0x17'),_0x3afc9e,_0x9bc9('0x15'),JSON[_0x9bc9('0x18')](_0x1f6135));if(_0x1f6135['error']){if(_0x1f6135['error'][_0x9bc9('0x19')]===0x1f4){logger[_0x9bc9('0x1a')](_0x9bc9('0x14'),_0x3afc9e,_0x1f6135[_0x9bc9('0x1a')]['message']);return _0x2de3ff(_0x1f6135['error'][_0x9bc9('0x1b')]);}logger[_0x9bc9('0x1a')](_0x9bc9('0x14'),_0x3afc9e,_0x1f6135[_0x9bc9('0x1a')]['message']);return _0x4bf30e(_0x1f6135['error']['message']);}else{logger[_0x9bc9('0x1c')](_0x9bc9('0x14'),_0x3afc9e,_0x9bc9('0x15'));_0x4bf30e(_0x1f6135['result'][_0x9bc9('0x1b')]);}})['catch'](function(_0xc07482){logger[_0x9bc9('0x1a')](_0x9bc9('0x14'),_0x3afc9e,_0xc07482);_0x2de3ff(_0xc07482);});});}exports[_0x9bc9('0x1d')]=function(_0x565fd7){var _0x42ea27=this;return new Promise(function(_0x3ac712,_0x21799f){return db[_0x9bc9('0x1e')][_0x9bc9('0x1f')]({'raw':_0x565fd7[_0x9bc9('0x20')]?_0x565fd7['options'][_0x9bc9('0x21')]===undefined?!![]:![]:!![],'where':_0x565fd7[_0x9bc9('0x20')]?_0x565fd7[_0x9bc9('0x20')][_0x9bc9('0x22')]||null:null,'attributes':_0x565fd7[_0x9bc9('0x20')]?_0x565fd7['options']['attributes']||null:null,'limit':_0x565fd7['options']?_0x565fd7[_0x9bc9('0x20')][_0x9bc9('0x23')]||null:null,'include':_0x565fd7[_0x9bc9('0x20')]?_0x565fd7[_0x9bc9('0x20')][_0x9bc9('0x24')]?_[_0x9bc9('0x25')](_0x565fd7[_0x9bc9('0x20')][_0x9bc9('0x24')],function(_0x46b920){return{'model':db[_0x46b920[_0x9bc9('0x26')]],'as':_0x46b920['as'],'attributes':_0x46b920[_0x9bc9('0x27')],'include':_0x46b920['include']?_[_0x9bc9('0x25')](_0x46b920[_0x9bc9('0x24')],function(_0x55d317){return{'model':db[_0x55d317[_0x9bc9('0x26')]],'as':_0x55d317['as'],'attributes':_0x55d317[_0x9bc9('0x27')],'include':_0x55d317[_0x9bc9('0x24')]?_['map'](_0x55d317[_0x9bc9('0x24')],function(_0x2aaac8){return{'model':db[_0x2aaac8[_0x9bc9('0x26')]],'as':_0x2aaac8['as'],'attributes':_0x2aaac8[_0x9bc9('0x27')]};}):[]};}):[]};}):[]:[]})[_0x9bc9('0x13')](function(_0x9f0a77){logger[_0x9bc9('0x1c')](_0x9bc9('0x1d'),_0x565fd7);logger['debug'](_0x9bc9('0x1d'),_0x565fd7,JSON['stringify'](_0x9f0a77));_0x3ac712(_0x9f0a77);})[_0x9bc9('0x28')](function(_0x1beddd){logger[_0x9bc9('0x1a')](_0x9bc9('0x1d'),_0x1beddd[_0x9bc9('0x1b')],_0x565fd7);_0x21799f(_0x42ea27['error'](0x1f4,_0x1beddd['message']));});});};exports[_0x9bc9('0x29')]=function(_0x239147){var _0x2e8114=this;return new Promise(function(_0x353646,_0x20289f){return db[_0x9bc9('0x1e')][_0x9bc9('0x2a')]({'raw':_0x239147[_0x9bc9('0x20')]?_0x239147[_0x9bc9('0x20')][_0x9bc9('0x21')]===undefined?!![]:![]:!![],'where':_0x239147[_0x9bc9('0x20')]?_0x239147[_0x9bc9('0x20')][_0x9bc9('0x22')]||null:null,'attributes':_0x239147[_0x9bc9('0x20')]?_0x239147[_0x9bc9('0x20')][_0x9bc9('0x27')]||null:null,'include':_0x239147[_0x9bc9('0x20')]?_0x239147[_0x9bc9('0x20')]['include']?_[_0x9bc9('0x25')](_0x239147['options'][_0x9bc9('0x24')],function(_0x2cd4dc){return{'model':db[_0x2cd4dc['model']],'as':_0x2cd4dc['as'],'attributes':_0x2cd4dc[_0x9bc9('0x27')],'include':_0x2cd4dc[_0x9bc9('0x24')]?_[_0x9bc9('0x25')](_0x2cd4dc[_0x9bc9('0x24')],function(_0xfcd2f){return{'model':db[_0xfcd2f[_0x9bc9('0x26')]],'as':_0xfcd2f['as'],'attributes':_0xfcd2f[_0x9bc9('0x27')],'include':_0xfcd2f[_0x9bc9('0x24')]?_['map'](_0xfcd2f[_0x9bc9('0x24')],function(_0x4b86a3){return{'model':db[_0x4b86a3[_0x9bc9('0x26')]],'as':_0x4b86a3['as'],'attributes':_0x4b86a3[_0x9bc9('0x27')]};}):[]};}):[]};}):[]:[]})[_0x9bc9('0x13')](function(_0x9b70c9){logger[_0x9bc9('0x1c')]('ShowUser',_0x239147);logger[_0x9bc9('0x16')](_0x9bc9('0x29'),_0x239147,JSON[_0x9bc9('0x18')](_0x9b70c9));_0x353646(_0x9b70c9);})['catch'](function(_0x24ffcf){logger[_0x9bc9('0x1a')]('ShowUser',_0x24ffcf[_0x9bc9('0x1b')],_0x239147);_0x20289f(_0x2e8114[_0x9bc9('0x1a')](0x1f4,_0x24ffcf[_0x9bc9('0x1b')]));});});};exports[_0x9bc9('0x2b')]=function(_0x2d8bea){var _0x4de139=this;return new Promise(function(_0x2b74ae,_0x29b232){var _0x36d48c;return db[_0x9bc9('0x1e')][_0x9bc9('0x2a')]({'where':_0x2d8bea[_0x9bc9('0x20')][_0x9bc9('0x22')]||{},'attributes':['id',_0x9bc9('0x2c'),'role',_0x9bc9('0x2d'),_0x9bc9('0x2e')]})['then'](function(_0x2fc795){if(_0x2fc795){_0x36d48c=_0x2fc795;return db['UserVoiceQueueRt'][_0x9bc9('0x2f')]({'paused':0x1},{'where':{'UserId':_0x36d48c['id']},'individualHooks':!![]});}})['then'](function(){if(_0x36d48c){return db[_0x9bc9('0x30')][_0x9bc9('0x1f')]({'where':{'membername':_0x36d48c['name'],'type':_0x9bc9('0x31'),'exitAt':null}});}})[_0x9bc9('0x13')](function(_0x3656bf){if(_0x36d48c){if(_0x3656bf&&_0x3656bf[_0x9bc9('0x32')]){var _0x24137f=moment()[_0x9bc9('0x33')](_0x9bc9('0x34'));for(var _0x505ecc=0x0,_0x146e8b=_0x3656bf[_0x9bc9('0x32')];_0x505ecc<_0x146e8b;_0x505ecc++){_0x3656bf[_0x505ecc][_0x9bc9('0x35')]({'exitAt':_0x24137f});}}}})['then'](function(){if(_0x36d48c){var _0x36b5b1=[];var _0x52d91f=utils[_0x9bc9('0x36')]();_0x52d91f[_0x9bc9('0x37')](function(_0x169513){_0x36b5b1['push']({'channel':_0x169513,'membername':_0x36d48c[_0x9bc9('0x2c')],'interface':_['isNil'](_0x36d48c[_0x9bc9('0x2e')])?util['format'](_0x9bc9('0x38'),_0x36d48c[_0x9bc9('0x2c')]):_0x36d48c[_0x9bc9('0x2e')],'type':_0x9bc9('0x31'),'enterAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34')),'data1':_0x2d8bea[_0x9bc9('0x39')][_0x9bc9('0x3a')]||'DEFAULT\x20PAUSE','role':_0x36d48c[_0x9bc9('0x3b')],'internal':_0x36d48c[_0x9bc9('0x2d')],'uniqueid':_0x2d8bea[_0x9bc9('0x39')]['uniqueid']||null});});return db[_0x9bc9('0x30')]['bulkCreate'](_0x36b5b1,{'individualHooks':!![]});}})[_0x9bc9('0x13')](function(){if(_0x36d48c){return _0x36d48c[_0x9bc9('0x2f')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x2d8bea['body']['type']||_0x9bc9('0x3c'),'lastPauseAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34'))});}})[_0x9bc9('0x13')](function(_0x2f0a98){_0x2b74ae(_0x2f0a98);})[_0x9bc9('0x28')](function(_0x45deff){_0x29b232(_0x4de139['error'](0x1f4,_0x45deff[_0x9bc9('0x1b')]));});});};exports['UnpauseUser']=function(_0x4c217f){var _0x24ba3a=this;return new Promise(function(_0x3c9a5c,_0x527f8d){var _0x3d5f78;return db[_0x9bc9('0x1e')][_0x9bc9('0x3d')]({'where':_0x4c217f[_0x9bc9('0x20')][_0x9bc9('0x22')]||{},'attributes':['id','name']})['then'](function(_0x40e0a1){if(_0x40e0a1){_0x3d5f78=_0x40e0a1;if(_0x4c217f[_0x9bc9('0x39')][_0x9bc9('0x3e')]&&!utils['isValidChannel'](_0x4c217f[_0x9bc9('0x39')][_0x9bc9('0x3e')])){throw new Error(_0x9bc9('0x3f'));}switch(_0x4c217f[_0x9bc9('0x39')][_0x9bc9('0x3e')]){case _0x9bc9('0x40'):return db[_0x9bc9('0x41')][_0x9bc9('0x2f')]({'paused':0x0},{'where':{'UserId':_0x3d5f78['id']}})[_0x9bc9('0x13')](function(){return db['MemberReport'][_0x9bc9('0x2a')]({'where':{'channel':_0x4c217f[_0x9bc9('0x39')]['channel'],'membername':_0x3d5f78['name'],'type':_0x9bc9('0x31'),'exitAt':null}});})['then'](function(_0x4e0383){if(_0x4e0383){return _0x4e0383[_0x9bc9('0x2f')]({'exitAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34')),'data2':_0x9bc9('0x42')},{'individualHooks':!![]});}return null;})[_0x9bc9('0x13')](function(){return _0x3d5f78[_0x9bc9('0x2f')]({'voicePause':![]});});case'mail':case _0x9bc9('0x43'):case'fax':case _0x9bc9('0x44'):case _0x9bc9('0x45'):case'whatsapp':return db[_0x9bc9('0x30')][_0x9bc9('0x2a')]({'where':{'channel':_0x4c217f[_0x9bc9('0x39')][_0x9bc9('0x3e')],'membername':_0x3d5f78['name'],'type':_0x9bc9('0x31'),'exitAt':null}})['then'](function(_0x5f125d){return _0x5f125d[_0x9bc9('0x2f')]({'exitAt':moment()['format'](_0x9bc9('0x34')),'data2':_0x9bc9('0x42')},{'individualHooks':!![]});})[_0x9bc9('0x13')](function(){var _0x1570b0={};_['set'](_0x1570b0,util[_0x9bc9('0x33')](_0x9bc9('0x46'),_0x4c217f[_0x9bc9('0x39')][_0x9bc9('0x3e')],_0x9bc9('0x47')),![]);return _0x3d5f78['update'](_0x1570b0);});default:return db[_0x9bc9('0x41')]['update']({'paused':0x0},{'where':{'UserId':_0x3d5f78['id']}})[_0x9bc9('0x13')](function(){return db[_0x9bc9('0x30')][_0x9bc9('0x1f')]({'where':{'membername':_0x3d5f78[_0x9bc9('0x2c')],'type':_0x9bc9('0x31'),'exitAt':null}});})['then'](function(_0x28b092){var _0x31fd2a=[];_0x28b092['forEach'](function(_0xa4bc2a){_0x31fd2a[_0x9bc9('0x48')](_0xa4bc2a[_0x9bc9('0x2f')]({'exitAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34')),'data2':_0x9bc9('0x42')}));});return BPromise[_0x9bc9('0x49')](_0x31fd2a);})['then'](function(){return _0x3d5f78[_0x9bc9('0x2f')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x9bc9('0x13')](function(_0x1fb0b7){_0x3c9a5c(_0x1fb0b7);})[_0x9bc9('0x28')](function(_0x5af6de){_0x527f8d(_0x24ba3a[_0x9bc9('0x1a')](0x1f4,_0x5af6de['message']));});});};exports[_0x9bc9('0x4a')]=function(_0x37e9f2){var _0x24287c=this;return new Promise(function(_0x35152c,_0x5ea89d){var _0x1a862a;return db['User']['findOne']({'where':_0x37e9f2[_0x9bc9('0x20')][_0x9bc9('0x22')]||{},'attributes':['id',_0x9bc9('0x2c')]})[_0x9bc9('0x13')](function(_0x526a0b){if(_0x526a0b){_0x1a862a=_0x526a0b;return db['UserVoiceQueueRt'][_0x9bc9('0x4b')]({'where':{'membername':_0x1a862a[_0x9bc9('0x2c')]},'individualHooks':!![]});}})[_0x9bc9('0x13')](function(){if(_0x1a862a){return db[_0x9bc9('0x30')][_0x9bc9('0x1f')]({'where':{'membername':_0x1a862a['name'],'exitAt':null}});}})[_0x9bc9('0x13')](function(_0x20a115){if(_0x1a862a){if(_0x20a115&&_0x20a115[_0x9bc9('0x32')]){var _0x5eea52=[];_0x20a115[_0x9bc9('0x37')](function(_0x21af7a){_0x5eea52[_0x9bc9('0x48')](_0x21af7a[_0x9bc9('0x2f')]({'exitAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34'))}));});return BPromise['all'](_0x5eea52);}}})[_0x9bc9('0x13')](function(){if(_0x1a862a){return _0x1a862a['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x9bc9('0x13')](function(_0x3ccf73){_0x35152c(_0x3ccf73);})['catch'](function(_0x2c48db){_0x5ea89d(_0x24287c['error'](0x1f4,_0x2c48db['message']));});});};exports[_0x9bc9('0x4c')]=function(_0x2ecd68){var _0x134ee9=this;return new Promise(function(_0x31626c,_0x2f37fc){var _0x3db8b3;var _0x264e6e;var _0x35e7f3;var _0x17bab9;return db[_0x9bc9('0x1e')][_0x9bc9('0x3d')]({'where':_0x2ecd68[_0x9bc9('0x20')][_0x9bc9('0x22')]||{},'attributes':['id',_0x9bc9('0x2c'),_0x9bc9('0x3b'),_0x9bc9('0x4d'),_0x9bc9('0x4e'),_0x9bc9('0x2d'),_0x9bc9('0x4f'),_0x9bc9('0x2e')]})[_0x9bc9('0x13')](function(_0xdc7944){if(_0xdc7944){_0x3db8b3=_0xdc7944;_0x17bab9=_0x2ecd68[_0x9bc9('0x39')][_0x9bc9('0x2e')]?_0x2ecd68[_0x9bc9('0x39')][_0x9bc9('0x2e')]:util[_0x9bc9('0x33')](_0x9bc9('0x38'),_0x3db8b3[_0x9bc9('0x2c')]);return db[_0x9bc9('0x1e')][_0x9bc9('0x50')]({'where':{'role':_0x9bc9('0x51'),'online':!![],'id':{'$ne':_0x3db8b3['id']}}});}})[_0x9bc9('0x13')](function(_0x254029){if(_0x254029){_0x35e7f3=_0x254029;return require('../../config/license/util')['getLicense']();}})[_0x9bc9('0x13')](function(_0x648241){if(_0x648241&&_0x648241[_0x9bc9('0x52')]&&_0x35e7f3>=_0x648241[_0x9bc9('0x52')]){throw new Error(_0x9bc9('0x53'));}})[_0x9bc9('0x13')](function(){if(_0x3db8b3){return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x3db8b3[_0x9bc9('0x2c')]},'individualHooks':!![]});}})[_0x9bc9('0x13')](function(){if(_0x3db8b3){return _0x3db8b3[_0x9bc9('0x54')]({'raw':!![]});}})[_0x9bc9('0x13')](function(_0x1e105a){if(_0x3db8b3){if(_0x1e105a){var _0x51a32e=[];_0x264e6e=_0x1e105a;if(_0x264e6e['length']){for(var _0x30039b=0x0;_0x30039b<_0x264e6e[_0x9bc9('0x32')];_0x30039b++){_0x51a32e[_0x9bc9('0x48')](db[_0x9bc9('0x41')][_0x9bc9('0x55')]({'membername':_0x3db8b3['name'],'UserId':_0x3db8b3['id'],'queue_name':_0x264e6e[_0x30039b][_0x9bc9('0x2c')],'VoiceQueueId':_0x264e6e[_0x30039b]['id'],'interface':_0x17bab9,'paused':_0x3db8b3[_0x9bc9('0x4f')]||![],'penalty':_0x264e6e[_0x30039b][_0x9bc9('0x56')]||0x0}));}return BPromise['all'](_0x51a32e);}}}})[_0x9bc9('0x13')](function(){if(_0x3db8b3){return db[_0x9bc9('0x30')]['findAll']({'where':{'membername':_0x3db8b3[_0x9bc9('0x2c')],'exitAt':null}});}})[_0x9bc9('0x13')](function(_0x131764){if(_0x3db8b3){if(_0x131764&&_0x131764[_0x9bc9('0x32')]){var _0x119c72=[];_0x131764['forEach'](function(_0xa0d404){_0x119c72['push'](_0xa0d404['update']({'exitAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34'))}));});return BPromise[_0x9bc9('0x49')](_0x119c72);}}})['then'](function(_0x38489d){if(_0x3db8b3){var _0x339490=[];var _0xb52a99=[];var _0xcae228=utils[_0x9bc9('0x36')]();var _0x2075dd={'membername':_0x3db8b3[_0x9bc9('0x2c')],'interface':_0x17bab9,'enterAt':moment()[_0x9bc9('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x3db8b3[_0x9bc9('0x3b')],'internal':_0x3db8b3['internal']};_0xcae228['forEach'](function(_0x51f34b){_0x339490[_0x9bc9('0x48')](_['merge']({'channel':_0x51f34b,'type':_0x9bc9('0x57'),'data1':'callysquare','data2':_0x17bab9},_0x2075dd));if(_0x3db8b3[_0x9bc9('0x4f')]){_0xb52a99[_0x9bc9('0x48')](_[_0x9bc9('0x58')]({'channel':_0x51f34b,'type':_0x9bc9('0x31'),'data1':_0x9bc9('0x59')},_0x2075dd));}});return db[_0x9bc9('0x30')][_0x9bc9('0x5a')](_0x339490['concat'](_0xb52a99),{'individualHooks':!![]});}})[_0x9bc9('0x13')](function(){if(_0x3db8b3){return _0x3db8b3['update']({'online':!![],'lastLoginAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34')),'voicePause':_0x3db8b3[_0x9bc9('0x4f')]||![],'mailPause':_0x3db8b3[_0x9bc9('0x4f')]||![],'chatPause':_0x3db8b3[_0x9bc9('0x4f')]||![],'faxPause':_0x3db8b3[_0x9bc9('0x4f')]||![],'smsPause':_0x3db8b3['loginInPause']||![],'openchannelPause':_0x3db8b3[_0x9bc9('0x4f')]||![],'pauseType':_0x3db8b3[_0x9bc9('0x4f')]?_0x9bc9('0x59'):null,'lastPauseAt':moment()['format'](_0x9bc9('0x34')),'interface':_0x17bab9});}})[_0x9bc9('0x13')](function(_0x31666f){_0x31626c(_0x31666f);})['catch'](function(_0x24fe40){_0x2f37fc(_0x134ee9[_0x9bc9('0x1a')](0x1f4,_0x24fe40['message']));});});};
\ No newline at end of file
+var _0x4abb=['User,\x20%s,\x20%s','message','result','catch','GetUser','User','findAll','options','where','include','map','model','attributes','ShowUser','find','PauseUser','name','internal','interface','UserVoiceQueueRt','update','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','isNil','SIP/%s','body','type','role','uniqueid','bulkCreate','DEFAULT\x20PAUSE','UnpauseUser','findOne','channel','isValidChannel','voice','MemberReport','chat','fax','sms','system','set','%s%s','Pause','push','LogoutUser','destroy','LoginUser','mobile','phone','loginInPause','count','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','all','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./user.socket','register','then','info','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x13915f,_0x3d90c6){var _0x373181=function(_0x66a7b4){while(--_0x66a7b4){_0x13915f['push'](_0x13915f['shift']());}};_0x373181(++_0x3d90c6);}(_0x4abb,0xa3));var _0xb4ab=function(_0x3ddac4,_0x5d47d0){_0x3ddac4=_0x3ddac4-0x0;var _0x236bc0=_0x4abb[_0x3ddac4];return _0x236bc0;};'use strict';var _=require(_0xb4ab('0x0'));var util=require(_0xb4ab('0x1'));var moment=require(_0xb4ab('0x2'));var BPromise=require('bluebird');var rs=require(_0xb4ab('0x3'));var fs=require('fs');var Redis=require(_0xb4ab('0x4'));var db=require(_0xb4ab('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb4ab('0x6'));var config=require(_0xb4ab('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb4ab('0x8')][_0xb4ab('0x9')]({'port':0x232a});config[_0xb4ab('0xa')]=_[_0xb4ab('0xb')](config[_0xb4ab('0xa')],{'host':_0xb4ab('0xc'),'port':0x18eb});var socket=require(_0xb4ab('0xd'))(new Redis(config[_0xb4ab('0xa')]));require(_0xb4ab('0xe'))[_0xb4ab('0xf')](socket);function respondWithRpcPromise(_0x36dd56,_0x6647b,_0x3a91ee){return new BPromise(function(_0x25190a,_0x2a4804){return client['request'](_0x36dd56,_0x3a91ee)[_0xb4ab('0x10')](function(_0x103cfb){logger[_0xb4ab('0x11')]('User,\x20%s,\x20%s',_0x6647b,_0xb4ab('0x12'));logger[_0xb4ab('0x13')](_0xb4ab('0x14'),_0x6647b,_0xb4ab('0x12'),JSON[_0xb4ab('0x15')](_0x103cfb));if(_0x103cfb[_0xb4ab('0x16')]){if(_0x103cfb[_0xb4ab('0x16')]['code']===0x1f4){logger[_0xb4ab('0x16')](_0xb4ab('0x17'),_0x6647b,_0x103cfb[_0xb4ab('0x16')][_0xb4ab('0x18')]);return _0x2a4804(_0x103cfb[_0xb4ab('0x16')][_0xb4ab('0x18')]);}logger[_0xb4ab('0x16')](_0xb4ab('0x17'),_0x6647b,_0x103cfb[_0xb4ab('0x16')][_0xb4ab('0x18')]);return _0x25190a(_0x103cfb[_0xb4ab('0x16')][_0xb4ab('0x18')]);}else{logger['info'](_0xb4ab('0x17'),_0x6647b,_0xb4ab('0x12'));_0x25190a(_0x103cfb[_0xb4ab('0x19')][_0xb4ab('0x18')]);}})[_0xb4ab('0x1a')](function(_0x274e77){logger[_0xb4ab('0x16')](_0xb4ab('0x17'),_0x6647b,_0x274e77);_0x2a4804(_0x274e77);});});}exports[_0xb4ab('0x1b')]=function(_0x59f223){var _0x34d0c7=this;return new Promise(function(_0x2f25c0,_0x52af41){return db[_0xb4ab('0x1c')][_0xb4ab('0x1d')]({'raw':_0x59f223[_0xb4ab('0x1e')]?_0x59f223['options']['raw']===undefined?!![]:![]:!![],'where':_0x59f223['options']?_0x59f223['options'][_0xb4ab('0x1f')]||null:null,'attributes':_0x59f223[_0xb4ab('0x1e')]?_0x59f223[_0xb4ab('0x1e')]['attributes']||null:null,'limit':_0x59f223[_0xb4ab('0x1e')]?_0x59f223[_0xb4ab('0x1e')]['limit']||null:null,'include':_0x59f223[_0xb4ab('0x1e')]?_0x59f223[_0xb4ab('0x1e')][_0xb4ab('0x20')]?_[_0xb4ab('0x21')](_0x59f223[_0xb4ab('0x1e')]['include'],function(_0x98d9d2){return{'model':db[_0x98d9d2[_0xb4ab('0x22')]],'as':_0x98d9d2['as'],'attributes':_0x98d9d2['attributes'],'include':_0x98d9d2[_0xb4ab('0x20')]?_[_0xb4ab('0x21')](_0x98d9d2['include'],function(_0x4c15ad){return{'model':db[_0x4c15ad[_0xb4ab('0x22')]],'as':_0x4c15ad['as'],'attributes':_0x4c15ad[_0xb4ab('0x23')],'include':_0x4c15ad['include']?_[_0xb4ab('0x21')](_0x4c15ad[_0xb4ab('0x20')],function(_0x415a78){return{'model':db[_0x415a78[_0xb4ab('0x22')]],'as':_0x415a78['as'],'attributes':_0x415a78[_0xb4ab('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x52aa7b){logger['info'](_0xb4ab('0x1b'),_0x59f223);logger[_0xb4ab('0x13')](_0xb4ab('0x1b'),_0x59f223,JSON[_0xb4ab('0x15')](_0x52aa7b));_0x2f25c0(_0x52aa7b);})[_0xb4ab('0x1a')](function(_0x48e8f6){logger['error']('GetUser',_0x48e8f6[_0xb4ab('0x18')],_0x59f223);_0x52af41(_0x34d0c7[_0xb4ab('0x16')](0x1f4,_0x48e8f6[_0xb4ab('0x18')]));});});};exports[_0xb4ab('0x24')]=function(_0x178c3b){var _0x5a36e5=this;return new Promise(function(_0x12724d,_0x425b00){return db['User'][_0xb4ab('0x25')]({'raw':_0x178c3b[_0xb4ab('0x1e')]?_0x178c3b[_0xb4ab('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x178c3b[_0xb4ab('0x1e')]?_0x178c3b[_0xb4ab('0x1e')][_0xb4ab('0x1f')]||null:null,'attributes':_0x178c3b[_0xb4ab('0x1e')]?_0x178c3b['options'][_0xb4ab('0x23')]||null:null,'include':_0x178c3b['options']?_0x178c3b[_0xb4ab('0x1e')][_0xb4ab('0x20')]?_[_0xb4ab('0x21')](_0x178c3b[_0xb4ab('0x1e')][_0xb4ab('0x20')],function(_0xc6063d){return{'model':db[_0xc6063d[_0xb4ab('0x22')]],'as':_0xc6063d['as'],'attributes':_0xc6063d[_0xb4ab('0x23')],'include':_0xc6063d[_0xb4ab('0x20')]?_[_0xb4ab('0x21')](_0xc6063d['include'],function(_0x453c38){return{'model':db[_0x453c38[_0xb4ab('0x22')]],'as':_0x453c38['as'],'attributes':_0x453c38[_0xb4ab('0x23')],'include':_0x453c38[_0xb4ab('0x20')]?_[_0xb4ab('0x21')](_0x453c38[_0xb4ab('0x20')],function(_0x3e37bb){return{'model':db[_0x3e37bb[_0xb4ab('0x22')]],'as':_0x3e37bb['as'],'attributes':_0x3e37bb[_0xb4ab('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xec2694){logger[_0xb4ab('0x11')](_0xb4ab('0x24'),_0x178c3b);logger[_0xb4ab('0x13')](_0xb4ab('0x24'),_0x178c3b,JSON[_0xb4ab('0x15')](_0xec2694));_0x12724d(_0xec2694);})[_0xb4ab('0x1a')](function(_0x25be87){logger[_0xb4ab('0x16')](_0xb4ab('0x24'),_0x25be87[_0xb4ab('0x18')],_0x178c3b);_0x425b00(_0x5a36e5[_0xb4ab('0x16')](0x1f4,_0x25be87['message']));});});};exports[_0xb4ab('0x26')]=function(_0x42724){var _0x3ffd56=this;return new Promise(function(_0x4f2d7b,_0x27cba6){var _0x4e95c4;return db[_0xb4ab('0x1c')][_0xb4ab('0x25')]({'where':_0x42724[_0xb4ab('0x1e')][_0xb4ab('0x1f')]||{},'attributes':['id',_0xb4ab('0x27'),'role',_0xb4ab('0x28'),_0xb4ab('0x29')]})[_0xb4ab('0x10')](function(_0x5d9e11){if(_0x5d9e11){_0x4e95c4=_0x5d9e11;return db[_0xb4ab('0x2a')][_0xb4ab('0x2b')]({'paused':0x1},{'where':{'UserId':_0x4e95c4['id']},'individualHooks':!![]});}})[_0xb4ab('0x10')](function(){if(_0x4e95c4){return db['MemberReport']['findAll']({'where':{'membername':_0x4e95c4[_0xb4ab('0x27')],'type':_0xb4ab('0x2c'),'exitAt':null}});}})[_0xb4ab('0x10')](function(_0x14bc52){if(_0x4e95c4){if(_0x14bc52&&_0x14bc52[_0xb4ab('0x2d')]){var _0x50366d=moment()[_0xb4ab('0x2e')](_0xb4ab('0x2f'));for(var _0x5192ab=0x0,_0x4c66ed=_0x14bc52[_0xb4ab('0x2d')];_0x5192ab<_0x4c66ed;_0x5192ab++){_0x14bc52[_0x5192ab][_0xb4ab('0x30')]({'exitAt':_0x50366d});}}}})[_0xb4ab('0x10')](function(){if(_0x4e95c4){var _0x2cb264=[];var _0x21e5c8=utils[_0xb4ab('0x31')]();_0x21e5c8[_0xb4ab('0x32')](function(_0x14858b){_0x2cb264['push']({'channel':_0x14858b,'membername':_0x4e95c4[_0xb4ab('0x27')],'interface':_[_0xb4ab('0x33')](_0x4e95c4[_0xb4ab('0x29')])?util[_0xb4ab('0x2e')](_0xb4ab('0x34'),_0x4e95c4[_0xb4ab('0x27')]):_0x4e95c4['interface'],'type':'PAUSE','enterAt':moment()['format'](_0xb4ab('0x2f')),'data1':_0x42724[_0xb4ab('0x35')][_0xb4ab('0x36')]||'DEFAULT\x20PAUSE','role':_0x4e95c4[_0xb4ab('0x37')],'internal':_0x4e95c4['internal'],'uniqueid':_0x42724['body'][_0xb4ab('0x38')]||null});});return db['MemberReport'][_0xb4ab('0x39')](_0x2cb264,{'individualHooks':!![]});}})[_0xb4ab('0x10')](function(){if(_0x4e95c4){return _0x4e95c4[_0xb4ab('0x2b')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x42724['body'][_0xb4ab('0x36')]||_0xb4ab('0x3a'),'lastPauseAt':moment()[_0xb4ab('0x2e')](_0xb4ab('0x2f'))});}})[_0xb4ab('0x10')](function(_0x57b71b){_0x4f2d7b(_0x57b71b);})[_0xb4ab('0x1a')](function(_0x267896){_0x27cba6(_0x3ffd56[_0xb4ab('0x16')](0x1f4,_0x267896['message']));});});};exports[_0xb4ab('0x3b')]=function(_0x528b4d){var _0x2b8a4d=this;return new Promise(function(_0xea3e19,_0x497d15){var _0x5d6e7c;return db['User'][_0xb4ab('0x3c')]({'where':_0x528b4d[_0xb4ab('0x1e')]['where']||{},'attributes':['id',_0xb4ab('0x27')]})[_0xb4ab('0x10')](function(_0x34021e){if(_0x34021e){_0x5d6e7c=_0x34021e;if(_0x528b4d[_0xb4ab('0x35')][_0xb4ab('0x3d')]&&!utils[_0xb4ab('0x3e')](_0x528b4d[_0xb4ab('0x35')][_0xb4ab('0x3d')])){throw new Error('Unknown\x20channel');}switch(_0x528b4d[_0xb4ab('0x35')][_0xb4ab('0x3d')]){case _0xb4ab('0x3f'):return db[_0xb4ab('0x2a')]['update']({'paused':0x0},{'where':{'UserId':_0x5d6e7c['id']}})[_0xb4ab('0x10')](function(){return db[_0xb4ab('0x40')][_0xb4ab('0x25')]({'where':{'channel':_0x528b4d['body'][_0xb4ab('0x3d')],'membername':_0x5d6e7c[_0xb4ab('0x27')],'type':'PAUSE','exitAt':null}});})[_0xb4ab('0x10')](function(_0x4e0f21){if(_0x4e0f21){return _0x4e0f21[_0xb4ab('0x2b')]({'exitAt':moment()[_0xb4ab('0x2e')](_0xb4ab('0x2f')),'data2':'system'},{'individualHooks':!![]});}return null;})[_0xb4ab('0x10')](function(){return _0x5d6e7c[_0xb4ab('0x2b')]({'voicePause':![]});});case'mail':case _0xb4ab('0x41'):case _0xb4ab('0x42'):case _0xb4ab('0x43'):case'openchannel':case'whatsapp':return db[_0xb4ab('0x40')]['find']({'where':{'channel':_0x528b4d[_0xb4ab('0x35')][_0xb4ab('0x3d')],'membername':_0x5d6e7c['name'],'type':_0xb4ab('0x2c'),'exitAt':null}})[_0xb4ab('0x10')](function(_0x57a4cd){return _0x57a4cd['update']({'exitAt':moment()[_0xb4ab('0x2e')](_0xb4ab('0x2f')),'data2':_0xb4ab('0x44')},{'individualHooks':!![]});})[_0xb4ab('0x10')](function(){var _0x901788={};_[_0xb4ab('0x45')](_0x901788,util[_0xb4ab('0x2e')](_0xb4ab('0x46'),_0x528b4d['body'][_0xb4ab('0x3d')],_0xb4ab('0x47')),![]);return _0x5d6e7c['update'](_0x901788);});default:return db[_0xb4ab('0x2a')]['update']({'paused':0x0},{'where':{'UserId':_0x5d6e7c['id']}})[_0xb4ab('0x10')](function(){return db[_0xb4ab('0x40')]['findAll']({'where':{'membername':_0x5d6e7c[_0xb4ab('0x27')],'type':_0xb4ab('0x2c'),'exitAt':null}});})['then'](function(_0x1fad50){var _0xe02ed3=[];_0x1fad50[_0xb4ab('0x32')](function(_0xb97bf5){_0xe02ed3[_0xb4ab('0x48')](_0xb97bf5[_0xb4ab('0x2b')]({'exitAt':moment()[_0xb4ab('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xb4ab('0x44')}));});return BPromise['all'](_0xe02ed3);})[_0xb4ab('0x10')](function(){return _0x5d6e7c[_0xb4ab('0x2b')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xb4ab('0x10')](function(_0x19abd5){_0xea3e19(_0x19abd5);})['catch'](function(_0x2264fe){_0x497d15(_0x2b8a4d['error'](0x1f4,_0x2264fe[_0xb4ab('0x18')]));});});};exports[_0xb4ab('0x49')]=function(_0x49843e){var _0x45ddd2=this;return new Promise(function(_0x4285f4,_0x120792){var _0x4a3782;return db[_0xb4ab('0x1c')][_0xb4ab('0x3c')]({'where':_0x49843e[_0xb4ab('0x1e')][_0xb4ab('0x1f')]||{},'attributes':['id',_0xb4ab('0x27')]})[_0xb4ab('0x10')](function(_0x3ebb27){if(_0x3ebb27){_0x4a3782=_0x3ebb27;return db['UserVoiceQueueRt'][_0xb4ab('0x4a')]({'where':{'membername':_0x4a3782['name']},'individualHooks':!![]});}})[_0xb4ab('0x10')](function(){if(_0x4a3782){return db[_0xb4ab('0x40')][_0xb4ab('0x1d')]({'where':{'membername':_0x4a3782[_0xb4ab('0x27')],'exitAt':null}});}})[_0xb4ab('0x10')](function(_0x1fe7a1){if(_0x4a3782){if(_0x1fe7a1&&_0x1fe7a1[_0xb4ab('0x2d')]){var _0x20a34c=[];_0x1fe7a1[_0xb4ab('0x32')](function(_0x18bcac){_0x20a34c[_0xb4ab('0x48')](_0x18bcac[_0xb4ab('0x2b')]({'exitAt':moment()[_0xb4ab('0x2e')](_0xb4ab('0x2f'))}));});return BPromise['all'](_0x20a34c);}}})['then'](function(){if(_0x4a3782){return _0x4a3782['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xb4ab('0x10')](function(_0x10965c){_0x4285f4(_0x10965c);})[_0xb4ab('0x1a')](function(_0x334b6c){_0x120792(_0x45ddd2[_0xb4ab('0x16')](0x1f4,_0x334b6c[_0xb4ab('0x18')]));});});};exports[_0xb4ab('0x4b')]=function(_0x39b900){var _0x4ff103=this;return new Promise(function(_0x501fc2,_0x5bf638){var _0x2bf6e5;var _0x3592a2;var _0x26874a;var _0x382be0;return db[_0xb4ab('0x1c')]['findOne']({'where':_0x39b900[_0xb4ab('0x1e')][_0xb4ab('0x1f')]||{},'attributes':['id','name',_0xb4ab('0x37'),_0xb4ab('0x4c'),_0xb4ab('0x4d'),'internal',_0xb4ab('0x4e'),_0xb4ab('0x29')]})[_0xb4ab('0x10')](function(_0xd064d6){if(_0xd064d6){_0x2bf6e5=_0xd064d6;_0x382be0=_0x39b900[_0xb4ab('0x35')][_0xb4ab('0x29')]?_0x39b900[_0xb4ab('0x35')]['interface']:util[_0xb4ab('0x2e')]('SIP/%s',_0x2bf6e5[_0xb4ab('0x27')]);return db[_0xb4ab('0x1c')][_0xb4ab('0x4f')]({'where':{'role':_0xb4ab('0x50'),'online':!![],'id':{'$ne':_0x2bf6e5['id']}}});}})[_0xb4ab('0x10')](function(_0x49f3c5){if(_0x49f3c5){_0x26874a=_0x49f3c5;return require(_0xb4ab('0x51'))['getLicense']();}})['then'](function(_0x3fc435){if(_0x3fc435&&_0x3fc435[_0xb4ab('0x52')]&&_0x26874a>=_0x3fc435['agents']){throw new Error(_0xb4ab('0x53'));}})[_0xb4ab('0x10')](function(){if(_0x2bf6e5){return db[_0xb4ab('0x2a')][_0xb4ab('0x4a')]({'where':{'membername':_0x2bf6e5[_0xb4ab('0x27')]},'individualHooks':!![]});}})[_0xb4ab('0x10')](function(){if(_0x2bf6e5){return _0x2bf6e5[_0xb4ab('0x54')]({'raw':!![]});}})[_0xb4ab('0x10')](function(_0x4fd458){if(_0x2bf6e5){if(_0x4fd458){var _0x5d8fd3=[];_0x3592a2=_0x4fd458;if(_0x3592a2['length']){for(var _0x2c74ce=0x0;_0x2c74ce<_0x3592a2['length'];_0x2c74ce++){_0x5d8fd3[_0xb4ab('0x48')](db[_0xb4ab('0x2a')][_0xb4ab('0x55')]({'membername':_0x2bf6e5[_0xb4ab('0x27')],'UserId':_0x2bf6e5['id'],'queue_name':_0x3592a2[_0x2c74ce][_0xb4ab('0x27')],'VoiceQueueId':_0x3592a2[_0x2c74ce]['id'],'interface':_0x382be0,'paused':_0x2bf6e5[_0xb4ab('0x4e')]||![],'penalty':_0x3592a2[_0x2c74ce][_0xb4ab('0x56')]||0x0}));}return BPromise['all'](_0x5d8fd3);}}}})[_0xb4ab('0x10')](function(){if(_0x2bf6e5){return db['MemberReport'][_0xb4ab('0x1d')]({'where':{'membername':_0x2bf6e5[_0xb4ab('0x27')],'exitAt':null}});}})['then'](function(_0x508ae7){if(_0x2bf6e5){if(_0x508ae7&&_0x508ae7[_0xb4ab('0x2d')]){var _0x246dfe=[];_0x508ae7[_0xb4ab('0x32')](function(_0x36bdc6){_0x246dfe['push'](_0x36bdc6[_0xb4ab('0x2b')]({'exitAt':moment()[_0xb4ab('0x2e')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xb4ab('0x57')](_0x246dfe);}}})[_0xb4ab('0x10')](function(_0x50ddc5){if(_0x2bf6e5){var _0x2b8ca0=[];var _0x49230c=[];var _0x3ff52c=utils[_0xb4ab('0x31')]();var _0x237b44={'membername':_0x2bf6e5[_0xb4ab('0x27')],'interface':_0x382be0,'enterAt':moment()[_0xb4ab('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x2bf6e5[_0xb4ab('0x37')],'internal':_0x2bf6e5[_0xb4ab('0x28')]};_0x3ff52c[_0xb4ab('0x32')](function(_0x22173a){_0x2b8ca0[_0xb4ab('0x48')](_[_0xb4ab('0x58')]({'channel':_0x22173a,'type':_0xb4ab('0x59'),'data1':_0xb4ab('0x5a'),'data2':_0x382be0},_0x237b44));if(_0x2bf6e5[_0xb4ab('0x4e')]){_0x49230c[_0xb4ab('0x48')](_[_0xb4ab('0x58')]({'channel':_0x22173a,'type':'PAUSE','data1':_0xb4ab('0x5b')},_0x237b44));}});return db['MemberReport'][_0xb4ab('0x39')](_0x2b8ca0[_0xb4ab('0x5c')](_0x49230c),{'individualHooks':!![]});}})[_0xb4ab('0x10')](function(){if(_0x2bf6e5){return _0x2bf6e5[_0xb4ab('0x2b')]({'online':!![],'lastLoginAt':moment()['format'](_0xb4ab('0x2f')),'voicePause':_0x2bf6e5[_0xb4ab('0x4e')]||![],'mailPause':_0x2bf6e5[_0xb4ab('0x4e')]||![],'chatPause':_0x2bf6e5[_0xb4ab('0x4e')]||![],'faxPause':_0x2bf6e5[_0xb4ab('0x4e')]||![],'smsPause':_0x2bf6e5[_0xb4ab('0x4e')]||![],'openchannelPause':_0x2bf6e5[_0xb4ab('0x4e')]||![],'pauseType':_0x2bf6e5[_0xb4ab('0x4e')]?'LOGININPAUSE':null,'lastPauseAt':moment()[_0xb4ab('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x382be0});}})['then'](function(_0x361108){_0x501fc2(_0x361108);})['catch'](function(_0xaa2dc2){_0x5bf638(_0x4ff103['error'](0x1f4,_0xaa2dc2[_0xb4ab('0x18')]));});});};
\ No newline at end of file
index 9f5e820..1455e9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdf9=['./user.events','save','remove','update','emit','removeListener','register','length'];(function(_0x5c77d4,_0x721743){var _0x2f14ae=function(_0x1e66d8){while(--_0x1e66d8){_0x5c77d4['push'](_0x5c77d4['shift']());}};_0x2f14ae(++_0x721743);}(_0xfdf9,0xb8));var _0x9fdf=function(_0x3f7dfc,_0x8f0dad){_0x3f7dfc=_0x3f7dfc-0x0;var _0x499d09=_0xfdf9[_0x3f7dfc];return _0x499d09;};'use strict';var UserEvents=require(_0x9fdf('0x0'));var events=[_0x9fdf('0x1'),_0x9fdf('0x2'),_0x9fdf('0x3')];function createListener(_0x3783db,_0x41b5ad){return function(_0x57cb75){_0x41b5ad[_0x9fdf('0x4')](_0x3783db,_0x57cb75);};}function removeListener(_0x968e7e,_0x22b4a9){return function(){UserEvents[_0x9fdf('0x5')](_0x968e7e,_0x22b4a9);};}exports[_0x9fdf('0x6')]=function(_0x3e6fce){for(var _0x127b58=0x0,_0x1715aa=events[_0x9fdf('0x7')];_0x127b58<_0x1715aa;_0x127b58++){var _0x9826e=events[_0x127b58];var _0x373acc=createListener('user:'+_0x9826e,_0x3e6fce);UserEvents['on'](_0x9826e,_0x373acc);}};
\ No newline at end of file
+var _0x9170=['save','register','length','user:','./user.events'];(function(_0x102b50,_0x536173){var _0x4a6749=function(_0x3983f){while(--_0x3983f){_0x102b50['push'](_0x102b50['shift']());}};_0x4a6749(++_0x536173);}(_0x9170,0x1d0));var _0x0917=function(_0x1b58b8,_0x3e1c2a){_0x1b58b8=_0x1b58b8-0x0;var _0x479502=_0x9170[_0x1b58b8];return _0x479502;};'use strict';var UserEvents=require(_0x0917('0x0'));var events=[_0x0917('0x1'),'remove','update'];function createListener(_0x5abdfe,_0x84cfee){return function(_0x487cfa){_0x84cfee['emit'](_0x5abdfe,_0x487cfa);};}function removeListener(_0x7b29ae,_0x2c4d24){return function(){UserEvents['removeListener'](_0x7b29ae,_0x2c4d24);};}exports[_0x0917('0x2')]=function(_0x310c82){for(var _0x5a9e92=0x0,_0x57c973=events[_0x0917('0x3')];_0x5a9e92<_0x57c973;_0x5a9e92++){var _0x1eed28=events[_0x5a9e92];var _0x4d04cd=createListener(_0x0917('0x4')+_0x1eed28,_0x310c82);UserEvents['on'](_0x1eed28,_0x4d04cd);}};
\ No newline at end of file
index a7e60fc..27e5919 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(_0x29b3fa,_0x2b011b){var _0x110bef=function(_0x10f6da){while(--_0x10f6da){_0x29b3fa['push'](_0x29b3fa['shift']());}};_0x110bef(++_0x2b011b);}(_0xedd9,0xfc));var _0x9edd=function(_0x21dc5d,_0x19dbb2){_0x21dc5d=_0x21dc5d-0x0;var _0xfd6648=_0xedd9[_0x21dc5d];return _0xfd6648;};'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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x52ec5e,_0xfd6f5a){var _0x4e798a=function(_0xafd49c){while(--_0xafd49c){_0x52ec5e['push'](_0x52ec5e['shift']());}};_0x4e798a(++_0xfd6f5a);}(_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 0269570..60f303b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb984=['exports','INTEGER'];(function(_0x4cf7a9,_0x5a9282){var _0x4e5a78=function(_0x69d45e){while(--_0x69d45e){_0x4cf7a9['push'](_0x4cf7a9['shift']());}};_0x4e5a78(++_0x5a9282);}(_0xb984,0x196));var _0x4b98=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0xb984[_0xefd519];return _0x4bb882;};'use strict';var Sequelize=require('sequelize');module[_0x4b98('0x0')]={'penalty':{'type':Sequelize[_0x4b98('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5e5c=['sequelize','INTEGER'];(function(_0x213302,_0x170bb3){var _0x53ca8c=function(_0x3688d1){while(--_0x3688d1){_0x213302['push'](_0x213302['shift']());}};_0x53ca8c(++_0x170bb3);}(_0x5e5c,0x140));var _0xc5e5=function(_0x42def9,_0xf68c43){_0x42def9=_0x42def9-0x0;var _0x122739=_0x5e5c[_0x42def9];return _0x122739;};'use strict';var Sequelize=require(_0xc5e5('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xc5e5('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index d861078..9386c10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bd6=['path','../../config/environment','./userChatQueue.attributes','exports','UserChatQueue','user_has_chat_queues','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2ecaf8,_0x5711b7){var _0x237841=function(_0x3d1326){while(--_0x3d1326){_0x2ecaf8['push'](_0x2ecaf8['shift']());}};_0x237841(++_0x5711b7);}(_0x6bd6,0xf6));var _0x66bd=function(_0x39acf8,_0x158e5a){_0x39acf8=_0x39acf8-0x0;var _0x378ac3=_0x6bd6[_0x39acf8];return _0x378ac3;};'use strict';var _=require(_0x66bd('0x0'));var util=require('util');var logger=require(_0x66bd('0x1'))(_0x66bd('0x2'));var moment=require(_0x66bd('0x3'));var BPromise=require(_0x66bd('0x4'));var rp=require(_0x66bd('0x5'));var fs=require('fs');var path=require(_0x66bd('0x6'));var rimraf=require('rimraf');var config=require(_0x66bd('0x7'));var attributes=require(_0x66bd('0x8'));module[_0x66bd('0x9')]=function(_0x133e41,_0x2e4e6e){return _0x133e41['define'](_0x66bd('0xa'),attributes,{'tableName':_0x66bd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1297=['lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues'];(function(_0x1ebba2,_0x313b45){var _0x37c459=function(_0x5c2a76){while(--_0x5c2a76){_0x1ebba2['push'](_0x1ebba2['shift']());}};_0x37c459(++_0x313b45);}(_0x1297,0x16c));var _0x7129=function(_0x4387ed,_0x18a529){_0x4387ed=_0x4387ed-0x0;var _0x2b62a7=_0x1297[_0x4387ed];return _0x2b62a7;};'use strict';var _=require(_0x7129('0x0'));var util=require(_0x7129('0x1'));var logger=require('../../config/logger')(_0x7129('0x2'));var moment=require(_0x7129('0x3'));var BPromise=require(_0x7129('0x4'));var rp=require(_0x7129('0x5'));var fs=require('fs');var path=require(_0x7129('0x6'));var rimraf=require('rimraf');var config=require(_0x7129('0x7'));var attributes=require(_0x7129('0x8'));module[_0x7129('0x9')]=function(_0x24f31c,_0x10f79a){return _0x24f31c[_0x7129('0xa')](_0x7129('0xb'),attributes,{'tableName':_0x7129('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f8a83bb..a1f90fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18e9=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserChatQueue,\x20%s,\x20%s','result','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0x18e9,0x9b));var _0x918e=function(_0x580971,_0x10984d){_0x580971=_0x580971-0x0;var _0x16d873=_0x18e9[_0x580971];return _0x16d873;};'use strict';var _=require(_0x918e('0x0'));var util=require(_0x918e('0x1'));var moment=require(_0x918e('0x2'));var BPromise=require(_0x918e('0x3'));var rs=require(_0x918e('0x4'));var fs=require('fs');var Redis=require(_0x918e('0x5'));var db=require(_0x918e('0x6'))['db'];var utils=require(_0x918e('0x7'));var logger=require(_0x918e('0x8'))('rpc');var config=require(_0x918e('0x9'));var jayson=require(_0x918e('0xa'));var client=jayson[_0x918e('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c1ac7,_0x41b98e,_0x36b9fa){return new BPromise(function(_0x53d5a6,_0x3b031b){return client['request'](_0x5c1ac7,_0x36b9fa)[_0x918e('0xc')](function(_0xf9eee5){logger[_0x918e('0xd')]('UserChatQueue,\x20%s,\x20%s',_0x41b98e,_0x918e('0xe'));logger[_0x918e('0xf')](_0x918e('0x10'),_0x41b98e,_0x918e('0xe'),JSON[_0x918e('0x11')](_0xf9eee5));if(_0xf9eee5[_0x918e('0x12')]){if(_0xf9eee5[_0x918e('0x12')][_0x918e('0x13')]===0x1f4){logger['error']('UserChatQueue,\x20%s,\x20%s',_0x41b98e,_0xf9eee5['error']['message']);return _0x3b031b(_0xf9eee5[_0x918e('0x12')][_0x918e('0x14')]);}logger[_0x918e('0x12')](_0x918e('0x15'),_0x41b98e,_0xf9eee5['error'][_0x918e('0x14')]);return _0x53d5a6(_0xf9eee5[_0x918e('0x12')]['message']);}else{logger[_0x918e('0xd')](_0x918e('0x15'),_0x41b98e,'request\x20sent');_0x53d5a6(_0xf9eee5[_0x918e('0x16')][_0x918e('0x14')]);}})['catch'](function(_0x3522b6){logger[_0x918e('0x12')](_0x918e('0x15'),_0x41b98e,_0x3522b6);_0x3b031b(_0x3522b6);});});}
\ No newline at end of file
+var _0x3405=['info','request\x20sent','debug','stringify','error','UserChatQueue,\x20%s,\x20%s','message','result','catch','util','moment','ioredis','../../config/logger','jayson/promise','http','request','then'];(function(_0x4d2169,_0x353eb9){var _0x52e417=function(_0x6df76e){while(--_0x6df76e){_0x4d2169['push'](_0x4d2169['shift']());}};_0x52e417(++_0x353eb9);}(_0x3405,0x14c));var _0x5340=function(_0xfa634c,_0x414e0e){_0xfa634c=_0xfa634c-0x0;var _0x73e478=_0x3405[_0xfa634c];return _0x73e478;};'use strict';var _=require('lodash');var util=require(_0x5340('0x0'));var moment=require(_0x5340('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5340('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5340('0x3'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5340('0x4'));var client=jayson['client'][_0x5340('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x123eb8,_0x4f5868,_0x5f0f7d){return new BPromise(function(_0x5df176,_0x572363){return client[_0x5340('0x6')](_0x123eb8,_0x5f0f7d)[_0x5340('0x7')](function(_0x1dd7cf){logger[_0x5340('0x8')]('UserChatQueue,\x20%s,\x20%s',_0x4f5868,_0x5340('0x9'));logger[_0x5340('0xa')]('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x4f5868,'request\x20sent',JSON[_0x5340('0xb')](_0x1dd7cf));if(_0x1dd7cf['error']){if(_0x1dd7cf[_0x5340('0xc')]['code']===0x1f4){logger['error'](_0x5340('0xd'),_0x4f5868,_0x1dd7cf['error'][_0x5340('0xe')]);return _0x572363(_0x1dd7cf[_0x5340('0xc')][_0x5340('0xe')]);}logger['error']('UserChatQueue,\x20%s,\x20%s',_0x4f5868,_0x1dd7cf[_0x5340('0xc')][_0x5340('0xe')]);return _0x5df176(_0x1dd7cf['error']['message']);}else{logger['info'](_0x5340('0xd'),_0x4f5868,_0x5340('0x9'));_0x5df176(_0x1dd7cf[_0x5340('0xf')]['message']);}})[_0x5340('0x10')](function(_0x36f46c){logger[_0x5340('0xc')](_0x5340('0xd'),_0x4f5868,_0x36f46c);_0x572363(_0x36f46c);});});}
\ No newline at end of file
index 3643e6b..c60ebec 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(_0x5e4e11,_0x4efd08){var _0x1630df=function(_0x11e398){while(--_0x11e398){_0x5e4e11['push'](_0x5e4e11['shift']());}};_0x1630df(++_0x4efd08);}(_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 _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x5e8906,_0x18f1e7){var _0x3b6622=function(_0x47ca57){while(--_0x47ca57){_0x5e8906['push'](_0x5e8906['shift']());}};_0x3b6622(++_0x18f1e7);}(_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 0e16e6f..d849e2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc043=['STRING','sequelize','exports','INTEGER'];(function(_0x55983c,_0x27489b){var _0x13287a=function(_0x53f614){while(--_0x53f614){_0x55983c['push'](_0x55983c['shift']());}};_0x13287a(++_0x27489b);}(_0xc043,0x149));var _0x3c04=function(_0x2e1cea,_0x487894){_0x2e1cea=_0x2e1cea-0x0;var _0x32861f=_0xc043[_0x2e1cea];return _0x32861f;};'use strict';var Sequelize=require(_0x3c04('0x0'));module[_0x3c04('0x1')]={'penalty':{'type':Sequelize[_0x3c04('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x3c04('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x3c04('0x3')]}};
\ No newline at end of file
+var _0xd665=['INTEGER','STRING','sequelize'];(function(_0x5a4b42,_0x2b9c18){var _0x5e81d6=function(_0x595077){while(--_0x595077){_0x5a4b42['push'](_0x5a4b42['shift']());}};_0x5e81d6(++_0x2b9c18);}(_0xd665,0x1bb));var _0x5d66=function(_0xafbc62,_0x33f801){_0xafbc62=_0xafbc62-0x0;var _0x197997=_0xd665[_0xafbc62];return _0x197997;};'use strict';var Sequelize=require(_0x5d66('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x5d66('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x5d66('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x5d66('0x2')]}};
\ No newline at end of file
index da3fd9c..6441564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea7c=['request-promise','rimraf','../../config/environment','./userFaxQueue.attributes','exports','define','UserFaxQueue','user_has_fax_queues','lodash','util','api','bluebird'];(function(_0x20def8,_0x44c7be){var _0x2a67b2=function(_0x1676e9){while(--_0x1676e9){_0x20def8['push'](_0x20def8['shift']());}};_0x2a67b2(++_0x44c7be);}(_0xea7c,0xbc));var _0xcea7=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xea7c[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0xcea7('0x0'));var util=require(_0xcea7('0x1'));var logger=require('../../config/logger')(_0xcea7('0x2'));var moment=require('moment');var BPromise=require(_0xcea7('0x3'));var rp=require(_0xcea7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcea7('0x5'));var config=require(_0xcea7('0x6'));var attributes=require(_0xcea7('0x7'));module[_0xcea7('0x8')]=function(_0x23e826,_0x529529){return _0x23e826[_0xcea7('0x9')](_0xcea7('0xa'),attributes,{'tableName':_0xcea7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0793=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./userFaxQueue.attributes','exports','user_has_fax_queues','util'];(function(_0x4571ef,_0x6ae13b){var _0xc28f8=function(_0x4d4e2c){while(--_0x4d4e2c){_0x4571ef['push'](_0x4571ef['shift']());}};_0xc28f8(++_0x6ae13b);}(_0x0793,0xba));var _0x3079=function(_0x4c3f26,_0x1d19e1){_0x4c3f26=_0x4c3f26-0x0;var _0x3d7ab0=_0x0793[_0x4c3f26];return _0x3d7ab0;};'use strict';var _=require('lodash');var util=require(_0x3079('0x0'));var logger=require(_0x3079('0x1'))(_0x3079('0x2'));var moment=require(_0x3079('0x3'));var BPromise=require(_0x3079('0x4'));var rp=require(_0x3079('0x5'));var fs=require('fs');var path=require(_0x3079('0x6'));var rimraf=require('rimraf');var config=require(_0x3079('0x7'));var attributes=require(_0x3079('0x8'));module[_0x3079('0x9')]=function(_0x1b8867,_0x202e1b){return _0x1b8867['define']('UserFaxQueue',attributes,{'tableName':_0x3079('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b071513..4d4c853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x768e=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x52b016,_0x33ec6e){var _0x13e797=function(_0x40f31b){while(--_0x40f31b){_0x52b016['push'](_0x52b016['shift']());}};_0x13e797(++_0x33ec6e);}(_0x768e,0xb1));var _0xe768=function(_0x28fd72,_0x3da8f3){_0x28fd72=_0x28fd72-0x0;var _0x4a0a70=_0x768e[_0x28fd72];return _0x4a0a70;};'use strict';var _=require(_0xe768('0x0'));var util=require(_0xe768('0x1'));var moment=require(_0xe768('0x2'));var BPromise=require(_0xe768('0x3'));var rs=require(_0xe768('0x4'));var fs=require('fs');var Redis=require(_0xe768('0x5'));var db=require(_0xe768('0x6'))['db'];var utils=require(_0xe768('0x7'));var logger=require(_0xe768('0x8'))(_0xe768('0x9'));var config=require(_0xe768('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xe768('0xb')][_0xe768('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xb03f64,_0x15f19d,_0x21265f){return new BPromise(function(_0x377779,_0x25b988){return client[_0xe768('0xd')](_0xb03f64,_0x21265f)[_0xe768('0xe')](function(_0x8ce5a2){logger[_0xe768('0xf')](_0xe768('0x10'),_0x15f19d,_0xe768('0x11'));logger['debug'](_0xe768('0x12'),_0x15f19d,_0xe768('0x11'),JSON[_0xe768('0x13')](_0x8ce5a2));if(_0x8ce5a2[_0xe768('0x14')]){if(_0x8ce5a2['error'][_0xe768('0x15')]===0x1f4){logger[_0xe768('0x14')](_0xe768('0x10'),_0x15f19d,_0x8ce5a2[_0xe768('0x14')][_0xe768('0x16')]);return _0x25b988(_0x8ce5a2['error']['message']);}logger[_0xe768('0x14')](_0xe768('0x10'),_0x15f19d,_0x8ce5a2[_0xe768('0x14')][_0xe768('0x16')]);return _0x377779(_0x8ce5a2[_0xe768('0x14')][_0xe768('0x16')]);}else{logger[_0xe768('0xf')]('UserFaxQueue,\x20%s,\x20%s',_0x15f19d,_0xe768('0x11'));_0x377779(_0x8ce5a2[_0xe768('0x17')]['message']);}})[_0xe768('0x18')](function(_0x5348ed){logger[_0xe768('0x14')]('UserFaxQueue,\x20%s,\x20%s',_0x15f19d,_0x5348ed);_0x25b988(_0x5348ed);});});}
\ No newline at end of file
+var _0x437f=['stringify','error','message','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s'];(function(_0x363b67,_0x50efcd){var _0x4b014a=function(_0x5de3f1){while(--_0x5de3f1){_0x363b67['push'](_0x363b67['shift']());}};_0x4b014a(++_0x50efcd);}(_0x437f,0xc1));var _0xf437=function(_0x3759fa,_0x4a1baa){_0x3759fa=_0x3759fa-0x0;var _0x4e512e=_0x437f[_0x3759fa];return _0x4e512e;};'use strict';var _=require(_0xf437('0x0'));var util=require(_0xf437('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xf437('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf437('0x3'))['db'];var utils=require(_0xf437('0x4'));var logger=require(_0xf437('0x5'))(_0xf437('0x6'));var config=require(_0xf437('0x7'));var jayson=require(_0xf437('0x8'));var client=jayson[_0xf437('0x9')][_0xf437('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x373cf5,_0x55b442,_0x4d2d29){return new BPromise(function(_0x2b5999,_0x5c3c96){return client[_0xf437('0xb')](_0x373cf5,_0x4d2d29)['then'](function(_0x5bea59){logger[_0xf437('0xc')](_0xf437('0xd'),_0x55b442,_0xf437('0xe'));logger[_0xf437('0xf')](_0xf437('0x10'),_0x55b442,_0xf437('0xe'),JSON[_0xf437('0x11')](_0x5bea59));if(_0x5bea59['error']){if(_0x5bea59[_0xf437('0x12')]['code']===0x1f4){logger[_0xf437('0x12')](_0xf437('0xd'),_0x55b442,_0x5bea59[_0xf437('0x12')][_0xf437('0x13')]);return _0x5c3c96(_0x5bea59[_0xf437('0x12')][_0xf437('0x13')]);}logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x55b442,_0x5bea59[_0xf437('0x12')][_0xf437('0x13')]);return _0x2b5999(_0x5bea59[_0xf437('0x12')][_0xf437('0x13')]);}else{logger[_0xf437('0xc')](_0xf437('0xd'),_0x55b442,_0xf437('0xe'));_0x2b5999(_0x5bea59['result'][_0xf437('0x13')]);}})[_0xf437('0x14')](function(_0x5b8c0a){logger[_0xf437('0x12')](_0xf437('0xd'),_0x55b442,_0x5b8c0a);_0x5c3c96(_0x5b8c0a);});});}
\ No newline at end of file
index a02ec9d..dbb5ead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0xe052be,_0x393642){var _0x11ba22=function(_0x151a94){while(--_0x151a94){_0xe052be['push'](_0xe052be['shift']());}};_0x11ba22(++_0x393642);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x156696,_0x3a9a2e){var _0x5ab7c4=function(_0x26179a){while(--_0x26179a){_0x156696['push'](_0x156696['shift']());}};_0x5ab7c4(++_0x3a9a2e);}(_0x9c44,0x178));var _0x49c4=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0x9c44[_0x1d9aa0];return _0x226868;};'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 48bcbda..7615013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd148=['INTEGER','exports'];(function(_0x52bdb8,_0x5d511f){var _0x2b8a04=function(_0x730be5){while(--_0x730be5){_0x52bdb8['push'](_0x52bdb8['shift']());}};_0x2b8a04(++_0x5d511f);}(_0xd148,0x8d));var _0x8d14=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd148[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x8d14('0x0')]={'penalty':{'type':Sequelize[_0x8d14('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x307b=['sequelize','INTEGER'];(function(_0x64bfc4,_0x46d7fe){var _0x4f6d04=function(_0x4db4bd){while(--_0x4db4bd){_0x64bfc4['push'](_0x64bfc4['shift']());}};_0x4f6d04(++_0x46d7fe);}(_0x307b,0x108));var _0xb307=function(_0x2feafc,_0x4b2432){_0x2feafc=_0x2feafc-0x0;var _0x52ed2e=_0x307b[_0x2feafc];return _0x52ed2e;};'use strict';var Sequelize=require(_0xb307('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xb307('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 494d75f..5f83b65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57bb=['api','moment','bluebird','request-promise','path','../../config/environment','./userMailQueue.attributes','exports','user_has_mail_queues','util','../../config/logger'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x57bb,0x169));var _0xb57b=function(_0x166579,_0x30fea6){_0x166579=_0x166579-0x0;var _0x248858=_0x57bb[_0x166579];return _0x248858;};'use strict';var _=require('lodash');var util=require(_0xb57b('0x0'));var logger=require(_0xb57b('0x1'))(_0xb57b('0x2'));var moment=require(_0xb57b('0x3'));var BPromise=require(_0xb57b('0x4'));var rp=require(_0xb57b('0x5'));var fs=require('fs');var path=require(_0xb57b('0x6'));var rimraf=require('rimraf');var config=require(_0xb57b('0x7'));var attributes=require(_0xb57b('0x8'));module[_0xb57b('0x9')]=function(_0x20b1cf,_0x3d7a1b){return _0x20b1cf['define']('UserMailQueue',attributes,{'tableName':_0xb57b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb49c=['exports','define','UserMailQueue','user_has_mail_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes'];(function(_0x39c995,_0x2e068d){var _0x5c27d7=function(_0x154a2b){while(--_0x154a2b){_0x39c995['push'](_0x39c995['shift']());}};_0x5c27d7(++_0x2e068d);}(_0xb49c,0x197));var _0xcb49=function(_0x279229,_0x1d69d9){_0x279229=_0x279229-0x0;var _0x195ca7=_0xb49c[_0x279229];return _0x195ca7;};'use strict';var _=require(_0xcb49('0x0'));var util=require(_0xcb49('0x1'));var logger=require(_0xcb49('0x2'))('api');var moment=require('moment');var BPromise=require(_0xcb49('0x3'));var rp=require(_0xcb49('0x4'));var fs=require('fs');var path=require(_0xcb49('0x5'));var rimraf=require(_0xcb49('0x6'));var config=require(_0xcb49('0x7'));var attributes=require(_0xcb49('0x8'));module[_0xcb49('0x9')]=function(_0x20cd3f,_0x1d633a){return _0x20cd3f[_0xcb49('0xa')](_0xcb49('0xb'),attributes,{'tableName':_0xcb49('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d12daba..9573bb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','stringify','error','code','message','UserMailQueue,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x3dca0b,_0x39a4e6){var _0x3171e8=function(_0x1357b6){while(--_0x1357b6){_0x3dca0b['push'](_0x3dca0b['shift']());}};_0x3171e8(++_0x39a4e6);}(_0x5fc3,0xa8));var _0x35fc=function(_0x119b3e,_0x588d50){_0x119b3e=_0x119b3e-0x0;var _0x1169ae=_0x5fc3[_0x119b3e];return _0x1169ae;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('UserMailQueue,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('UserMailQueue,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('UserMailQueue,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});}
\ No newline at end of file
+var _0x1cb9=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x1cb9,0x14e));var _0x91cb=function(_0x427e24,_0x50889d){_0x427e24=_0x427e24-0x0;var _0x4f4063=_0x1cb9[_0x427e24];return _0x4f4063;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var moment=require(_0x91cb('0x1'));var BPromise=require(_0x91cb('0x2'));var rs=require(_0x91cb('0x3'));var fs=require('fs');var Redis=require(_0x91cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x91cb('0x5'));var logger=require(_0x91cb('0x6'))('rpc');var config=require(_0x91cb('0x7'));var jayson=require(_0x91cb('0x8'));var client=jayson[_0x91cb('0x9')][_0x91cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b9d98,_0x8f8a3b,_0x4c1f56){return new BPromise(function(_0x15c517,_0x5bda2f){return client[_0x91cb('0xb')](_0x3b9d98,_0x4c1f56)['then'](function(_0xa43e7a){logger[_0x91cb('0xc')](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));logger[_0x91cb('0xf')](_0x91cb('0x10'),_0x8f8a3b,_0x91cb('0xe'),JSON[_0x91cb('0x11')](_0xa43e7a));if(_0xa43e7a[_0x91cb('0x12')]){if(_0xa43e7a[_0x91cb('0x12')]['code']===0x1f4){logger[_0x91cb('0x12')](_0x91cb('0xd'),_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x5bda2f(_0xa43e7a[_0x91cb('0x12')][_0x91cb('0x13')]);}logger[_0x91cb('0x12')]('UserMailQueue,\x20%s,\x20%s',_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x15c517(_0xa43e7a[_0x91cb('0x12')]['message']);}else{logger['info'](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));_0x15c517(_0xa43e7a[_0x91cb('0x14')]['message']);}})[_0x91cb('0x15')](function(_0x135890){logger['error'](_0x91cb('0xd'),_0x8f8a3b,_0x135890);_0x5bda2f(_0x135890);});});}
\ No newline at end of file
index 1682b22..d172afa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47aa=['../../components/interaction/service','../../config/environment','./userNotification.controller','isAuthenticated','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x6ad637,_0xda3a21){var _0x1d08f1=function(_0x3f390c){while(--_0x3f390c){_0x6ad637['push'](_0x6ad637['shift']());}};_0x1d08f1(++_0xda3a21);}(_0x47aa,0x19e));var _0xa47a=function(_0x210e0e,_0x1df475){_0x210e0e=_0x210e0e-0x0;var _0x3351d7=_0x47aa[_0x210e0e];return _0x3351d7;};'use strict';var multer=require(_0xa47a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa47a('0x1'));var express=require(_0xa47a('0x2'));var router=express[_0xa47a('0x3')]();var fs_extra=require(_0xa47a('0x4'));var auth=require(_0xa47a('0x5'));var interaction=require(_0xa47a('0x6'));var config=require(_0xa47a('0x7'));var controller=require(_0xa47a('0x8'));router['post']('/',auth[_0xa47a('0x9')](),controller['sendUserNotification']);module['exports']=router;
\ No newline at end of file
+var _0xca68=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','sendUserNotification','exports','multer','util','connect-timeout'];(function(_0x2ecd75,_0x335d0e){var _0x1d57f1=function(_0x27ce39){while(--_0x27ce39){_0x2ecd75['push'](_0x2ecd75['shift']());}};_0x1d57f1(++_0x335d0e);}(_0xca68,0x189));var _0x8ca6=function(_0x4262d9,_0xcc6b58){_0x4262d9=_0x4262d9-0x0;var _0x4d4719=_0xca68[_0x4262d9];return _0x4d4719;};'use strict';var multer=require(_0x8ca6('0x0'));var util=require(_0x8ca6('0x1'));var path=require('path');var timeout=require(_0x8ca6('0x2'));var express=require(_0x8ca6('0x3'));var router=express[_0x8ca6('0x4')]();var fs_extra=require(_0x8ca6('0x5'));var auth=require(_0x8ca6('0x6'));var interaction=require(_0x8ca6('0x7'));var config=require(_0x8ca6('0x8'));var controller=require('./userNotification.controller');router['post']('/',auth[_0x8ca6('0x9')](),controller[_0x8ca6('0xa')]);module[_0x8ca6('0xb')]=router;
\ No newline at end of file
index df08672..9fe2338 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc164=['BOOLEAN','exports','TEXT','STRING'];(function(_0x48c100,_0x566f57){var _0x34dc16=function(_0x3133a7){while(--_0x3133a7){_0x48c100['push'](_0x48c100['shift']());}};_0x34dc16(++_0x566f57);}(_0xc164,0x79));var _0x4c16=function(_0x4f726e,_0x5a4952){_0x4f726e=_0x4f726e-0x0;var _0x4f0ea8=_0xc164[_0x4f726e];return _0x4f0ea8;};'use strict';var Sequelize=require('sequelize');module[_0x4c16('0x0')]={'body':{'type':Sequelize[_0x4c16('0x1')]},'senderName':{'type':Sequelize[_0x4c16('0x2')]},'recipientsId':{'type':Sequelize[_0x4c16('0x1')]},'recipientsDescription':{'type':Sequelize[_0x4c16('0x2')]},'beep':{'type':Sequelize[_0x4c16('0x3')]}};
\ No newline at end of file
+var _0xce6c=['BOOLEAN','sequelize','exports','STRING'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xce6c,0x151));var _0xcce6=function(_0x1d7183,_0x6e01b5){_0x1d7183=_0x1d7183-0x0;var _0x61671=_0xce6c[_0x1d7183];return _0x61671;};'use strict';var Sequelize=require(_0xcce6('0x0'));module[_0xcce6('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0xcce6('0x2')]},'beep':{'type':Sequelize[_0xcce6('0x3')]}};
\ No newline at end of file
index 1978947..6fd8496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67c8=['team','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','transaction','create','forEach','recipient','emit','userNotification:send','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','catch','startCase','User','union','ids','queue','replace','Queue','push','all','getAgents','map','eml-format','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userNotification.socket','sendStatus','status','end','json','offset','limit','count','Content-Range','reject','save','then','destroy','error','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','Sequelize','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue'];(function(_0x2f58e9,_0x564036){var _0x1cb03b=function(_0x43b54a){while(--_0x43b54a){_0x2f58e9['push'](_0x2f58e9['shift']());}};_0x1cb03b(++_0x564036);}(_0x67c8,0x159));var _0x867c=function(_0x3ecf9c,_0x112cc8){_0x3ecf9c=_0x3ecf9c-0x0;var _0x4d65c9=_0x67c8[_0x3ecf9c];return _0x4d65c9;};'use strict';var emlformat=require(_0x867c('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x867c('0x1'));var rp=require(_0x867c('0x2'));var moment=require(_0x867c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x867c('0x4'));var util=require('util');var path=require(_0x867c('0x5'));var sox=require(_0x867c('0x6'));var csv=require(_0x867c('0x7'));var ejs=require(_0x867c('0x8'));var fs=require('fs');var fs_extra=require(_0x867c('0x9'));var _=require(_0x867c('0xa'));var squel=require(_0x867c('0xb'));var crypto=require(_0x867c('0xc'));var jsforce=require(_0x867c('0xd'));var deskjs=require(_0x867c('0xe'));var toCsv=require('to-csv');var querystring=require(_0x867c('0xf'));var Papa=require('papaparse');var Redis=require(_0x867c('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x867c('0x11'));var hardwareService=require(_0x867c('0x12'));var logger=require('../../config/logger')(_0x867c('0x13'));var utils=require(_0x867c('0x14'));var config=require(_0x867c('0x15'));var licenseUtil=require(_0x867c('0x16'));var db=require(_0x867c('0x17'))['db'];config['redis']=_['defaults'](config[_0x867c('0x18')],{'host':_0x867c('0x19'),'port':0x18eb});var socket=require(_0x867c('0x1a'))(new Redis(config[_0x867c('0x18')]));require(_0x867c('0x1b'))['register'](socket);function respondWithStatusCode(_0x2ebeb8,_0x4ebb78){_0x4ebb78=_0x4ebb78||0xcc;return function(_0x53b29e){if(_0x53b29e){return _0x2ebeb8[_0x867c('0x1c')](_0x4ebb78);}return _0x2ebeb8[_0x867c('0x1d')](_0x4ebb78)[_0x867c('0x1e')]();};}function respondWithResult(_0x3e7389,_0x4abceb){_0x4abceb=_0x4abceb||0xc8;return function(_0x4b31e8){if(_0x4b31e8){return _0x3e7389[_0x867c('0x1d')](_0x4abceb)[_0x867c('0x1f')](_0x4b31e8);}};}function respondWithFilteredResult(_0x539dc4,_0x41a5ac){return function(_0x1b65e9){if(_0x1b65e9){var _0x1aa08f=typeof _0x41a5ac[_0x867c('0x20')]==='undefined'&&typeof _0x41a5ac[_0x867c('0x21')]==='undefined';var _0x28e2b3=_0x1b65e9['count'];var _0x264257=_0x1aa08f?0x0:_0x41a5ac[_0x867c('0x20')];var _0x1e93d2=_0x1aa08f?_0x1b65e9[_0x867c('0x22')]:_0x41a5ac['offset']+_0x41a5ac[_0x867c('0x21')];var _0x283bff;if(_0x1e93d2>=_0x28e2b3){_0x1e93d2=_0x28e2b3;_0x283bff=0xc8;}else{_0x283bff=0xce;}_0x539dc4[_0x867c('0x1d')](_0x283bff);return _0x539dc4['set'](_0x867c('0x23'),_0x264257+'-'+_0x1e93d2+'/'+_0x28e2b3)[_0x867c('0x1f')](_0x1b65e9);}return null;};}function patchUpdates(_0x120553){return function(_0x59852d){try{jsonpatch['apply'](_0x59852d,_0x120553,!![]);}catch(_0x39a5e0){return BPromise[_0x867c('0x24')](_0x39a5e0);}return _0x59852d[_0x867c('0x25')]();};}function saveUpdates(_0x75d6ee,_0x2445ff){return function(_0x4771cf){if(_0x4771cf){return _0x4771cf['update'](_0x75d6ee)[_0x867c('0x26')](function(_0x3a6ae3){return _0x3a6ae3;});}return null;};}function removeEntity(_0x3d8890,_0x593589){return function(_0x472fac){if(_0x472fac){return _0x472fac[_0x867c('0x27')]()[_0x867c('0x26')](function(){_0x3d8890['status'](0xcc)[_0x867c('0x1e')]();});}};}function handleEntityNotFound(_0xa87a83,_0x5d6270){return function(_0xeecdd0){if(!_0xeecdd0){_0xa87a83['sendStatus'](0x194);}return _0xeecdd0;};}function handleError(_0x442885,_0x3e24a9){_0x3e24a9=_0x3e24a9||0x1f4;return function(_0x59e781){logger[_0x867c('0x28')](_0x59e781['stack']);if(_0x59e781[_0x867c('0x29')]){delete _0x59e781[_0x867c('0x29')];}_0x442885[_0x867c('0x1d')](_0x3e24a9)[_0x867c('0x2a')](_0x59e781);};}exports[_0x867c('0x2b')]=function(_0x3a82a4,_0x5bb12e,_0x1408b6){if(!_0x3a82a4[_0x867c('0x2c')][_0x867c('0x2d')](_0x867c('0x2e'))&&!_0x3a82a4['body'][_0x867c('0x2d')](_0x867c('0x2f'))){throw new db['Sequelize'][(_0x867c('0x30'))](_0x867c('0x31'));}else{if(_0x3a82a4[_0x867c('0x2c')]['hasOwnProperty'](_0x867c('0x2f'))&&!_0x3a82a4[_0x867c('0x2c')][_0x867c('0x2d')](_0x867c('0x32'))){throw new db['Sequelize'][(_0x867c('0x30'))](_0x867c('0x33'));}if(!_0x3a82a4[_0x867c('0x2c')][_0x867c('0x2d')](_0x867c('0x34'))){throw new db[(_0x867c('0x35'))]['ValidationError'](_0x867c('0x36'));}else{try{var _0x22a7a0=JSON[_0x867c('0x37')](_0x3a82a4[_0x867c('0x2c')][_0x867c('0x34')]);}catch(_0x582f83){logger['error'](_0x582f83);throw new db[(_0x867c('0x35'))][(_0x867c('0x30'))](_0x867c('0x38'));}var _0x44e7ba=[_0x867c('0x39'),_0x867c('0x3a'),_0x867c('0x3b'),_0x867c('0x3c'),_0x867c('0x3d'),_0x867c('0x3e'),'whatsappqueue',_0x867c('0x3f'),_0x867c('0x40')];if(_[_0x867c('0x41')](_0x22a7a0,function(_0x5886ec){return!_[_0x867c('0x42')](_0x44e7ba,_0x5886ec[_0x867c('0x43')][_0x867c('0x44')]());})){throw new db[(_0x867c('0x35'))][(_0x867c('0x30'))](_0x867c('0x45'));}}}var _0x5346f0={};_0x5346f0[_0x867c('0x46')]=_0x3a82a4[_0x867c('0x2c')][_0x867c('0x2d')]('senderName')?_0x3a82a4[_0x867c('0x2c')][_0x867c('0x46')]:_0x3a82a4[_0x867c('0x40')][_0x867c('0x47')];_0x5346f0[_0x867c('0x48')]=_[_0x867c('0x49')](_0x3a82a4[_0x867c('0x2c')][_0x867c('0x48')])?null:_0x3a82a4['body']['recipientsDescription'];_0x5346f0[_0x867c('0x4a')]=_0x3a82a4[_0x867c('0x2c')][_0x867c('0x4a')]||![];_0x5346f0[_0x867c('0x4b')]=_0x3a82a4[_0x867c('0x40')]['id'];return getContent(_0x3a82a4[_0x867c('0x2c')])[_0x867c('0x26')](function(_0x3abd3e){_0x5346f0[_0x867c('0x2c')]=_0x3abd3e;return getRecipients(_0x22a7a0);})[_0x867c('0x26')](function(_0xfa20f6){_0x5346f0[_0x867c('0x4c')]=_[_0x867c('0x4d')](_0xfa20f6)[_0x867c('0x4e')](',');return db['sequelize'][_0x867c('0x4f')](function(_0x38139f){return db['UserNotification'][_0x867c('0x50')](_0x5346f0,{'raw':!![],'transaction':_0x38139f})['then'](function(_0x4ad1a0){var _0x236a2b={'sender':_0x5346f0['senderName'],'description':_0x5346f0[_0x867c('0x48')],'content':_0x5346f0[_0x867c('0x2c')],'beep':_0x5346f0[_0x867c('0x4a')]};_0xfa20f6[_0x867c('0x51')](function(_0x7a976){_0x236a2b[_0x867c('0x52')]=_0x7a976;socket[_0x867c('0x53')](_0x867c('0x54'),_0x236a2b);});return _0x4ad1a0;});});})['then'](respondWithResult(_0x5bb12e,0xc9))['catch'](handleError(_0x5bb12e,null));};function getContent(_0x5eebe7){return new BPromise(function(_0x36a5e1,_0x9fad21){if(_0x5eebe7[_0x867c('0x2e')]){_0x36a5e1(_0x5eebe7[_0x867c('0x2e')]);return;}return db[_0x867c('0x55')][_0x867c('0x56')]({'attributes':[_0x867c('0x57')],'where':{'id':_0x5eebe7[_0x867c('0x2f')]},'raw':!![]})['then'](function(_0x1e7349){if(!_0x1e7349)throw new db[(_0x867c('0x35'))][(_0x867c('0x30'))](_0x867c('0x58'));var _0x3308f4=Mustache[_0x867c('0x59')](_0x1e7349[_0x867c('0x57')],_0x5eebe7[_0x867c('0x32')]);_0x36a5e1(_0x3308f4);})[_0x867c('0x5a')](function(_0xea1ef8){_0x9fad21(_0xea1ef8);});});}function getRecipients(_0x1c152a){return new BPromise(function(_0x42bfe7,_0x4c17ab){var _0xad2712=[];var _0x2cc753=[];_0x1c152a['forEach'](function(_0x38c56f){var _0x552e52=_[_0x867c('0x5b')](_0x38c56f[_0x867c('0x43')][_0x867c('0x44')]());if(_0x552e52===_0x867c('0x5c')){_0xad2712=_[_0x867c('0x5d')](_0xad2712,_0x38c56f[_0x867c('0x5e')]);}else{if(_[_0x867c('0x42')](_0x552e52,_0x867c('0x5f')))_0x552e52=_0x552e52[_0x867c('0x60')]('queue',_0x867c('0x61'));_0x38c56f[_0x867c('0x5e')][_0x867c('0x51')](function(_0x102e31){_0x2cc753[_0x867c('0x62')](getAgents(_0x552e52,_0x102e31));});}});return BPromise[_0x867c('0x63')](_0x2cc753)['then'](function(_0x16f29f){_0xad2712=_[_0x867c('0x5d')](_0xad2712,_['flatten'](_0x16f29f));_0x42bfe7(_0xad2712);})[_0x867c('0x5a')](function(_0x123dc0){_0x4c17ab(_0x123dc0);});});}function getAgents(_0x3f3726,_0x3dc33d){return new BPromise(function(_0x2646db,_0x362ac3){return db[_0x3f3726][_0x867c('0x56')]({'where':{'id':_0x3dc33d}})['then'](function(_0x292d94){return _0x292d94[_0x867c('0x64')]({'attributes':['id'],'raw':!![]})['then'](function(_0xb5d2c4){var _0x1cefb5=_[_0x867c('0x65')](_0xb5d2c4,'id');_0x2646db(_0x1cefb5);});})['catch'](function(_0x1b4933){_0x362ac3(_0x1b4933);});});}
\ No newline at end of file
+var _0x9644=['../../config/environment','../../mysqldb','localhost','socket.io-emitter','redis','./userNotification.socket','register','sendStatus','status','end','undefined','count','offset','set','Content-Range','json','apply','save','destroy','error','stack','name','hasOwnProperty','text','TemplateId','Sequelize','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','body','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','ValidationError','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','whatsappqueue','team','user','some','includes','model','toLowerCase','senderName','recipientsDescription','isEmpty','beep','SenderId','then','recipientsId','sortBy','join','sequelize','transaction','UserNotification','forEach','recipient','emit','userNotification:send','catch','html','startCase','union','replace','queue','Queue','ids','push','all','flatten','findOne','getAgents','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils'];(function(_0x46d0c9,_0x526bfa){var _0x174506=function(_0x654bc6){while(--_0x654bc6){_0x46d0c9['push'](_0x46d0c9['shift']());}};_0x174506(++_0x526bfa);}(_0x9644,0x10a));var _0x4964=function(_0x244288,_0x4f8e3b){_0x244288=_0x244288-0x0;var _0x4e0d79=_0x9644[_0x244288];return _0x4e0d79;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4964('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4964('0x1'));var moment=require(_0x4964('0x2'));var BPromise=require(_0x4964('0x3'));var Mustache=require(_0x4964('0x4'));var util=require(_0x4964('0x5'));var path=require(_0x4964('0x6'));var sox=require(_0x4964('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4964('0x8'));var squel=require('squel');var crypto=require(_0x4964('0x9'));var jsforce=require(_0x4964('0xa'));var deskjs=require(_0x4964('0xb'));var toCsv=require(_0x4964('0xc'));var querystring=require(_0x4964('0xd'));var Papa=require('papaparse');var Redis=require(_0x4964('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4964('0xf'));var hardwareService=require(_0x4964('0x10'));var logger=require(_0x4964('0x11'))('api');var utils=require(_0x4964('0x12'));var config=require(_0x4964('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x4964('0x14'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x4964('0x15'),'port':0x18eb});var socket=require(_0x4964('0x16'))(new Redis(config[_0x4964('0x17')]));require(_0x4964('0x18'))[_0x4964('0x19')](socket);function respondWithStatusCode(_0x29f412,_0x1ba4dd){_0x1ba4dd=_0x1ba4dd||0xcc;return function(_0x46451b){if(_0x46451b){return _0x29f412[_0x4964('0x1a')](_0x1ba4dd);}return _0x29f412[_0x4964('0x1b')](_0x1ba4dd)[_0x4964('0x1c')]();};}function respondWithResult(_0x4c010c,_0x223423){_0x223423=_0x223423||0xc8;return function(_0x39d8cb){if(_0x39d8cb){return _0x4c010c[_0x4964('0x1b')](_0x223423)['json'](_0x39d8cb);}};}function respondWithFilteredResult(_0x4dc6da,_0x4cf289){return function(_0x42308a){if(_0x42308a){var _0x583320=typeof _0x4cf289['offset']===_0x4964('0x1d')&&typeof _0x4cf289['limit']==='undefined';var _0x38d6a4=_0x42308a[_0x4964('0x1e')];var _0x52aa6f=_0x583320?0x0:_0x4cf289[_0x4964('0x1f')];var _0xf2ea43=_0x583320?_0x42308a['count']:_0x4cf289[_0x4964('0x1f')]+_0x4cf289['limit'];var _0x1e234e;if(_0xf2ea43>=_0x38d6a4){_0xf2ea43=_0x38d6a4;_0x1e234e=0xc8;}else{_0x1e234e=0xce;}_0x4dc6da['status'](_0x1e234e);return _0x4dc6da[_0x4964('0x20')](_0x4964('0x21'),_0x52aa6f+'-'+_0xf2ea43+'/'+_0x38d6a4)[_0x4964('0x22')](_0x42308a);}return null;};}function patchUpdates(_0x2f00a8){return function(_0x1509ee){try{jsonpatch[_0x4964('0x23')](_0x1509ee,_0x2f00a8,!![]);}catch(_0x1512c1){return BPromise['reject'](_0x1512c1);}return _0x1509ee[_0x4964('0x24')]();};}function saveUpdates(_0x45f49b,_0x4506f0){return function(_0x4cfa89){if(_0x4cfa89){return _0x4cfa89['update'](_0x45f49b)['then'](function(_0x249b4e){return _0x249b4e;});}return null;};}function removeEntity(_0x127102,_0x247043){return function(_0xe6d745){if(_0xe6d745){return _0xe6d745[_0x4964('0x25')]()['then'](function(){_0x127102[_0x4964('0x1b')](0xcc)[_0x4964('0x1c')]();});}};}function handleEntityNotFound(_0x55f681,_0xa89567){return function(_0x3e007c){if(!_0x3e007c){_0x55f681[_0x4964('0x1a')](0x194);}return _0x3e007c;};}function handleError(_0x4bc33c,_0x2c8b37){_0x2c8b37=_0x2c8b37||0x1f4;return function(_0x163d15){logger[_0x4964('0x26')](_0x163d15[_0x4964('0x27')]);if(_0x163d15[_0x4964('0x28')]){delete _0x163d15[_0x4964('0x28')];}_0x4bc33c[_0x4964('0x1b')](_0x2c8b37)['send'](_0x163d15);};}exports['sendUserNotification']=function(_0x38a329,_0x526b76,_0x11f5eb){if(!_0x38a329['body'][_0x4964('0x29')](_0x4964('0x2a'))&&!_0x38a329['body'][_0x4964('0x29')](_0x4964('0x2b'))){throw new db[(_0x4964('0x2c'))]['ValidationError'](_0x4964('0x2d'));}else{if(_0x38a329[_0x4964('0x2e')][_0x4964('0x29')](_0x4964('0x2b'))&&!_0x38a329[_0x4964('0x2e')]['hasOwnProperty'](_0x4964('0x2f'))){throw new db['Sequelize']['ValidationError'](_0x4964('0x30'));}if(!_0x38a329[_0x4964('0x2e')][_0x4964('0x29')](_0x4964('0x31'))){throw new db[(_0x4964('0x2c'))]['ValidationError'](_0x4964('0x32'));}else{try{var _0x9bbaf=JSON[_0x4964('0x33')](_0x38a329[_0x4964('0x2e')]['recipients']);}catch(_0x38ef6c){logger[_0x4964('0x26')](_0x38ef6c);throw new db[(_0x4964('0x2c'))][(_0x4964('0x34'))](_0x4964('0x35'));}var _0x5c9115=[_0x4964('0x36'),_0x4964('0x37'),_0x4964('0x38'),_0x4964('0x39'),_0x4964('0x3a'),'voicequeue',_0x4964('0x3b'),_0x4964('0x3c'),_0x4964('0x3d')];if(_[_0x4964('0x3e')](_0x9bbaf,function(_0x3f70e3){return!_[_0x4964('0x3f')](_0x5c9115,_0x3f70e3[_0x4964('0x40')][_0x4964('0x41')]());})){throw new db[(_0x4964('0x2c'))][(_0x4964('0x34'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x52fbe3={};_0x52fbe3['senderName']=_0x38a329[_0x4964('0x2e')][_0x4964('0x29')]('senderName')?_0x38a329[_0x4964('0x2e')][_0x4964('0x42')]:_0x38a329[_0x4964('0x3d')]['fullname'];_0x52fbe3[_0x4964('0x43')]=_[_0x4964('0x44')](_0x38a329[_0x4964('0x2e')]['recipientsDescription'])?null:_0x38a329[_0x4964('0x2e')]['recipientsDescription'];_0x52fbe3[_0x4964('0x45')]=_0x38a329[_0x4964('0x2e')][_0x4964('0x45')]||![];_0x52fbe3[_0x4964('0x46')]=_0x38a329['user']['id'];return getContent(_0x38a329[_0x4964('0x2e')])[_0x4964('0x47')](function(_0x5e454a){_0x52fbe3['body']=_0x5e454a;return getRecipients(_0x9bbaf);})['then'](function(_0x3d1fa4){_0x52fbe3[_0x4964('0x48')]=_[_0x4964('0x49')](_0x3d1fa4)[_0x4964('0x4a')](',');return db[_0x4964('0x4b')][_0x4964('0x4c')](function(_0xac8978){return db[_0x4964('0x4d')]['create'](_0x52fbe3,{'raw':!![],'transaction':_0xac8978})[_0x4964('0x47')](function(_0x54b42d){var _0x1d21f7={'sender':_0x52fbe3['senderName'],'description':_0x52fbe3[_0x4964('0x43')],'content':_0x52fbe3[_0x4964('0x2e')],'beep':_0x52fbe3[_0x4964('0x45')]};_0x3d1fa4[_0x4964('0x4e')](function(_0x1031c1){_0x1d21f7[_0x4964('0x4f')]=_0x1031c1;socket[_0x4964('0x50')](_0x4964('0x51'),_0x1d21f7);});return _0x54b42d;});});})['then'](respondWithResult(_0x526b76,0xc9))[_0x4964('0x52')](handleError(_0x526b76,null));};function getContent(_0x608115){return new BPromise(function(_0x12d7c3,_0x33dba6){if(_0x608115[_0x4964('0x2a')]){_0x12d7c3(_0x608115['text']);return;}return db['Template']['findOne']({'attributes':[_0x4964('0x53')],'where':{'id':_0x608115[_0x4964('0x2b')]},'raw':!![]})['then'](function(_0x2bac77){if(!_0x2bac77)throw new db[(_0x4964('0x2c'))][(_0x4964('0x34'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x440edd=Mustache['render'](_0x2bac77[_0x4964('0x53')],_0x608115[_0x4964('0x2f')]);_0x12d7c3(_0x440edd);})[_0x4964('0x52')](function(_0x230bf5){_0x33dba6(_0x230bf5);});});}function getRecipients(_0x1bbe80){return new BPromise(function(_0x231636,_0x574d04){var _0x56c47e=[];var _0x464c3a=[];_0x1bbe80[_0x4964('0x4e')](function(_0x5bfe66){var _0x2245cf=_[_0x4964('0x54')](_0x5bfe66[_0x4964('0x40')][_0x4964('0x41')]());if(_0x2245cf==='User'){_0x56c47e=_[_0x4964('0x55')](_0x56c47e,_0x5bfe66['ids']);}else{if(_[_0x4964('0x3f')](_0x2245cf,'queue'))_0x2245cf=_0x2245cf[_0x4964('0x56')](_0x4964('0x57'),_0x4964('0x58'));_0x5bfe66[_0x4964('0x59')][_0x4964('0x4e')](function(_0x26d597){_0x464c3a[_0x4964('0x5a')](getAgents(_0x2245cf,_0x26d597));});}});return BPromise[_0x4964('0x5b')](_0x464c3a)['then'](function(_0x139ded){_0x56c47e=_[_0x4964('0x55')](_0x56c47e,_[_0x4964('0x5c')](_0x139ded));_0x231636(_0x56c47e);})[_0x4964('0x52')](function(_0x133b04){_0x574d04(_0x133b04);});});}function getAgents(_0x33fdb7,_0x3a0ff2){return new BPromise(function(_0x26363c,_0x5a3078){return db[_0x33fdb7][_0x4964('0x5d')]({'where':{'id':_0x3a0ff2}})['then'](function(_0x5c0788){return _0x5c0788[_0x4964('0x5e')]({'attributes':['id'],'raw':!![]})[_0x4964('0x47')](function(_0x489dd6){var _0x227dc8=_['map'](_0x489dd6,'id');_0x26363c(_0x227dc8);});})['catch'](function(_0x1ff836){_0x5a3078(_0x1ff836);});});}
\ No newline at end of file
index 826467b..1ea8bc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaee8=['exports','events','../../mysqldb','UserNotification','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0xaee8,0x184));var _0x8aee=function(_0x295157,_0x4c5a00){_0x295157=_0x295157-0x0;var _0xf7a089=_0xaee8[_0x295157];return _0xf7a089;};'use strict';var EventEmitter=require(_0x8aee('0x0'));var UserNotification=require(_0x8aee('0x1'))['db'][_0x8aee('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x8aee('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8aee('0x4'),'afterDestroy':_0x8aee('0x5')};function emitEvent(_0x432af2){return function(_0xef956d,_0x111a22,_0x256283){UserNotificationEvents['emit'](_0x432af2+':'+_0xef956d['id'],_0xef956d);UserNotificationEvents[_0x8aee('0x6')](_0x432af2,_0xef956d);_0x256283(null);};}for(var e in events){if(events[_0x8aee('0x7')](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0x8aee('0x8')]=UserNotificationEvents;
\ No newline at end of file
+var _0x0bd7=['hook','exports','../../mysqldb','UserNotification','save','update','remove','emit','hasOwnProperty'];(function(_0x1d44ec,_0x1ea83c){var _0x5a5046=function(_0x30fc17){while(--_0x30fc17){_0x1d44ec['push'](_0x1d44ec['shift']());}};_0x5a5046(++_0x1ea83c);}(_0x0bd7,0x134));var _0x70bd=function(_0x5a2285,_0x3212d1){_0x5a2285=_0x5a2285-0x0;var _0x48f6ed=_0x0bd7[_0x5a2285];return _0x48f6ed;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0x70bd('0x0'))['db'][_0x70bd('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x70bd('0x2'),'afterUpdate':_0x70bd('0x3'),'afterDestroy':_0x70bd('0x4')};function emitEvent(_0x2acaa6){return function(_0x399e92,_0x32fff9,_0x3b917e){UserNotificationEvents[_0x70bd('0x5')](_0x2acaa6+':'+_0x399e92['id'],_0x399e92);UserNotificationEvents[_0x70bd('0x5')](_0x2acaa6,_0x399e92);_0x3b917e(null);};}for(var e in events){if(events[_0x70bd('0x6')](e)){var event=events[e];UserNotification[_0x70bd('0x7')](e,emitEvent(event));}}module[_0x70bd('0x8')]=UserNotificationEvents;
\ No newline at end of file
index ff565c1..a4dfbcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff31=['define','UserNotification','userNotifications','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./userNotification.attributes','exports'];(function(_0x52cc9b,_0x3f238d){var _0x117700=function(_0x10af5a){while(--_0x10af5a){_0x52cc9b['push'](_0x52cc9b['shift']());}};_0x117700(++_0x3f238d);}(_0xff31,0x1b1));var _0x1ff3=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xff31[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x1ff3('0x0'));var util=require('util');var logger=require(_0x1ff3('0x1'))(_0x1ff3('0x2'));var moment=require(_0x1ff3('0x3'));var BPromise=require(_0x1ff3('0x4'));var rp=require(_0x1ff3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1ff3('0x6'));var attributes=require(_0x1ff3('0x7'));module[_0x1ff3('0x8')]=function(_0x224510,_0x11149e){return _0x224510[_0x1ff3('0x9')](_0x1ff3('0xa'),attributes,{'tableName':_0x1ff3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x1ff3('0xc')});};
\ No newline at end of file
+var _0x4c99=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userNotification.attributes','exports','UserNotification','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x463e18,_0x3cb762){var _0x2de30a=function(_0xe8ad40){while(--_0xe8ad40){_0x463e18['push'](_0x463e18['shift']());}};_0x2de30a(++_0x3cb762);}(_0x4c99,0xfd));var _0x94c9=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x4c99[_0x5d2803];return _0xdcad2c;};'use strict';var _=require(_0x94c9('0x0'));var util=require(_0x94c9('0x1'));var logger=require(_0x94c9('0x2'))(_0x94c9('0x3'));var moment=require(_0x94c9('0x4'));var BPromise=require(_0x94c9('0x5'));var rp=require(_0x94c9('0x6'));var fs=require('fs');var path=require(_0x94c9('0x7'));var rimraf=require(_0x94c9('0x8'));var config=require(_0x94c9('0x9'));var attributes=require(_0x94c9('0xa'));module[_0x94c9('0xb')]=function(_0xbe2267,_0x432dcd){return _0xbe2267['define'](_0x94c9('0xc'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x94c9('0xd'),'collate':_0x94c9('0xe')});};
\ No newline at end of file
index 87c27ac..7340e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee45=['request\x20sent','stringify','error','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','info','UserNotification,\x20%s,\x20%s','debug','UserNotification,\x20%s,\x20%s,\x20%s'];(function(_0x5802a9,_0x2a1320){var _0xa6132c=function(_0xe09e0){while(--_0xe09e0){_0x5802a9['push'](_0x5802a9['shift']());}};_0xa6132c(++_0x2a1320);}(_0xee45,0xe6));var _0x5ee4=function(_0x3ac1e2,_0x3d3057){_0x3ac1e2=_0x3ac1e2-0x0;var _0x4bbbc2=_0xee45[_0x3ac1e2];return _0x4bbbc2;};'use strict';var _=require('lodash');var util=require(_0x5ee4('0x0'));var moment=require(_0x5ee4('0x1'));var BPromise=require(_0x5ee4('0x2'));var rs=require(_0x5ee4('0x3'));var fs=require('fs');var Redis=require(_0x5ee4('0x4'));var db=require(_0x5ee4('0x5'))['db'];var utils=require(_0x5ee4('0x6'));var logger=require(_0x5ee4('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5ee4('0x8')][_0x5ee4('0x9')]({'port':0x232a});config[_0x5ee4('0xa')]=_[_0x5ee4('0xb')](config['redis'],{'host':_0x5ee4('0xc'),'port':0x18eb});var socket=require(_0x5ee4('0xd'))(new Redis(config['redis']));require(_0x5ee4('0xe'))[_0x5ee4('0xf')](socket);function respondWithRpcPromise(_0x8e8bf9,_0x3ecc37,_0x4a0733){return new BPromise(function(_0x436cd4,_0xd47e4c){return client['request'](_0x8e8bf9,_0x4a0733)['then'](function(_0x4bbfb6){logger[_0x5ee4('0x10')](_0x5ee4('0x11'),_0x3ecc37,'request\x20sent');logger[_0x5ee4('0x12')](_0x5ee4('0x13'),_0x3ecc37,_0x5ee4('0x14'),JSON[_0x5ee4('0x15')](_0x4bbfb6));if(_0x4bbfb6['error']){if(_0x4bbfb6['error']['code']===0x1f4){logger[_0x5ee4('0x16')]('UserNotification,\x20%s,\x20%s',_0x3ecc37,_0x4bbfb6[_0x5ee4('0x16')][_0x5ee4('0x17')]);return _0xd47e4c(_0x4bbfb6[_0x5ee4('0x16')][_0x5ee4('0x17')]);}logger[_0x5ee4('0x16')](_0x5ee4('0x11'),_0x3ecc37,_0x4bbfb6['error']['message']);return _0x436cd4(_0x4bbfb6[_0x5ee4('0x16')]['message']);}else{logger[_0x5ee4('0x10')](_0x5ee4('0x11'),_0x3ecc37,_0x5ee4('0x14'));_0x436cd4(_0x4bbfb6[_0x5ee4('0x18')][_0x5ee4('0x17')]);}})['catch'](function(_0x148ffd){logger[_0x5ee4('0x16')](_0x5ee4('0x11'),_0x3ecc37,_0x148ffd);_0xd47e4c(_0x148ffd);});});}
\ No newline at end of file
+var _0x8b37=['UserNotification,\x20%s,\x20%s','message','result','catch','lodash','util','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','request','then','info','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','error'];(function(_0x6e38fe,_0x17f394){var _0x14c409=function(_0xc6b835){while(--_0xc6b835){_0x6e38fe['push'](_0x6e38fe['shift']());}};_0x14c409(++_0x17f394);}(_0x8b37,0x154));var _0x78b3=function(_0x3b2634,_0x56e81f){_0x3b2634=_0x3b2634-0x0;var _0x388dc8=_0x8b37[_0x3b2634];return _0x388dc8;};'use strict';var _=require(_0x78b3('0x0'));var util=require(_0x78b3('0x1'));var moment=require(_0x78b3('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x78b3('0x3'))['db'];var utils=require(_0x78b3('0x4'));var logger=require('../../config/logger')(_0x78b3('0x5'));var config=require(_0x78b3('0x6'));var jayson=require(_0x78b3('0x7'));var client=jayson[_0x78b3('0x8')][_0x78b3('0x9')]({'port':0x232a});config['redis']=_[_0x78b3('0xa')](config[_0x78b3('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x78b3('0xc'))(new Redis(config[_0x78b3('0xb')]));require('./userNotification.socket')['register'](socket);function respondWithRpcPromise(_0x276087,_0x15568c,_0xcff7d7){return new BPromise(function(_0x2fd907,_0x35e6ac){return client[_0x78b3('0xd')](_0x276087,_0xcff7d7)[_0x78b3('0xe')](function(_0x18851f){logger[_0x78b3('0xf')]('UserNotification,\x20%s,\x20%s',_0x15568c,_0x78b3('0x10'));logger[_0x78b3('0x11')](_0x78b3('0x12'),_0x15568c,_0x78b3('0x10'),JSON['stringify'](_0x18851f));if(_0x18851f[_0x78b3('0x13')]){if(_0x18851f[_0x78b3('0x13')]['code']===0x1f4){logger[_0x78b3('0x13')](_0x78b3('0x14'),_0x15568c,_0x18851f['error'][_0x78b3('0x15')]);return _0x35e6ac(_0x18851f[_0x78b3('0x13')][_0x78b3('0x15')]);}logger[_0x78b3('0x13')](_0x78b3('0x14'),_0x15568c,_0x18851f[_0x78b3('0x13')][_0x78b3('0x15')]);return _0x2fd907(_0x18851f[_0x78b3('0x13')][_0x78b3('0x15')]);}else{logger[_0x78b3('0xf')](_0x78b3('0x14'),_0x15568c,_0x78b3('0x10'));_0x2fd907(_0x18851f[_0x78b3('0x16')][_0x78b3('0x15')]);}})[_0x78b3('0x17')](function(_0x213203){logger[_0x78b3('0x13')]('UserNotification,\x20%s,\x20%s',_0x15568c,_0x213203);_0x35e6ac(_0x213203);});});}
\ No newline at end of file
index 9341fcd..ca4f196 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x739f=['removeListener','length','save','remove','update'];(function(_0x3401cc,_0x1eb419){var _0x535d6b=function(_0x36792e){while(--_0x36792e){_0x3401cc['push'](_0x3401cc['shift']());}};_0x535d6b(++_0x1eb419);}(_0x739f,0x1ba));var _0xf739=function(_0x551749,_0x595bab){_0x551749=_0x551749-0x0;var _0x5ba2a0=_0x739f[_0x551749];return _0x5ba2a0;};'use strict';var UserNotificationEvents=require('./userNotification.events');var events=[_0xf739('0x0'),_0xf739('0x1'),_0xf739('0x2')];function createListener(_0x3f8535,_0x494dff){return function(_0x1088bc){_0x494dff['emit'](_0x3f8535,_0x1088bc);};}function removeListener(_0x120ce1,_0x59ccb5){return function(){UserNotificationEvents[_0xf739('0x3')](_0x120ce1,_0x59ccb5);};}exports['register']=function(_0x1f783b){for(var _0x4d8130=0x0,_0x366639=events[_0xf739('0x4')];_0x4d8130<_0x366639;_0x4d8130++){var _0x5c6049=events[_0x4d8130];var _0x1342e8=createListener('userNotification:'+_0x5c6049,_0x1f783b);UserNotificationEvents['on'](_0x5c6049,_0x1342e8);}};
\ No newline at end of file
+var _0x3ea9=['./userNotification.events','save','update','emit','removeListener','register','length'];(function(_0xd33086,_0x19ce4a){var _0x585ba1=function(_0x27cd8d){while(--_0x27cd8d){_0xd33086['push'](_0xd33086['shift']());}};_0x585ba1(++_0x19ce4a);}(_0x3ea9,0xa1));var _0x93ea=function(_0x1ca934,_0x3a99fd){_0x1ca934=_0x1ca934-0x0;var _0x45eef4=_0x3ea9[_0x1ca934];return _0x45eef4;};'use strict';var UserNotificationEvents=require(_0x93ea('0x0'));var events=[_0x93ea('0x1'),'remove',_0x93ea('0x2')];function createListener(_0x1e8b48,_0x32b91b){return function(_0x3c6088){_0x32b91b[_0x93ea('0x3')](_0x1e8b48,_0x3c6088);};}function removeListener(_0x4e5961,_0x5b5250){return function(){UserNotificationEvents[_0x93ea('0x4')](_0x4e5961,_0x5b5250);};}exports[_0x93ea('0x5')]=function(_0x53c2be){for(var _0x2c76ab=0x0,_0x56eb35=events[_0x93ea('0x6')];_0x2c76ab<_0x56eb35;_0x2c76ab++){var _0xfa8ba9=events[_0x2c76ab];var _0x13136a=createListener('userNotification:'+_0xfa8ba9,_0x53c2be);UserNotificationEvents['on'](_0xfa8ba9,_0x13136a);}};
\ No newline at end of file
index aa7bf77..fcaac2d 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(_0x400dcd,_0x451135){var _0x1e6e98=function(_0x5b3f64){while(--_0x5b3f64){_0x400dcd['push'](_0x400dcd['shift']());}};_0x1e6e98(++_0x451135);}(_0x70e0,0x17b));var _0x070e=function(_0x5ea95d,_0x159813){_0x5ea95d=_0x5ea95d-0x0;var _0x104e32=_0x70e0[_0x5ea95d];return _0x104e32;};'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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x170f9b,_0x131e6a){var _0x112ead=function(_0xe31732){while(--_0xe31732){_0x170f9b['push'](_0x170f9b['shift']());}};_0x112ead(++_0x131e6a);}(_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 4d3795b..7ab5db5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eff=['INTEGER'];(function(_0x1630e0,_0x5d7ca4){var _0x236652=function(_0x5c4bbd){while(--_0x5c4bbd){_0x1630e0['push'](_0x1630e0['shift']());}};_0x236652(++_0x5d7ca4);}(_0x5eff,0x156));var _0xf5ef=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x5eff[_0x1e4360];return _0x31e6b4;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xf5ef('0x0')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb99d=['sequelize','INTEGER'];(function(_0x5a0693,_0x5e80b8){var _0x5daa64=function(_0x36f24f){while(--_0x36f24f){_0x5a0693['push'](_0x5a0693['shift']());}};_0x5daa64(++_0x5e80b8);}(_0xb99d,0xb8));var _0xdb99=function(_0x5b4f10,_0x57674f){_0x5b4f10=_0x5b4f10-0x0;var _0x47d7ba=_0xb99d[_0x5b4f10];return _0x47d7ba;};'use strict';var Sequelize=require(_0xdb99('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xdb99('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 7a17e51..4e215f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66dc=['define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./userOpenchannelQueue.attributes','exports'];(function(_0x422980,_0x248c1a){var _0x29487a=function(_0x1b9bae){while(--_0x1b9bae){_0x422980['push'](_0x422980['shift']());}};_0x29487a(++_0x248c1a);}(_0x66dc,0xc7));var _0xc66d=function(_0xe55101,_0x4585be){_0xe55101=_0xe55101-0x0;var _0x488e1d=_0x66dc[_0xe55101];return _0x488e1d;};'use strict';var _=require(_0xc66d('0x0'));var util=require(_0xc66d('0x1'));var logger=require(_0xc66d('0x2'))(_0xc66d('0x3'));var moment=require(_0xc66d('0x4'));var BPromise=require(_0xc66d('0x5'));var rp=require(_0xc66d('0x6'));var fs=require('fs');var path=require(_0xc66d('0x7'));var rimraf=require('rimraf');var config=require(_0xc66d('0x8'));var attributes=require(_0xc66d('0x9'));module[_0xc66d('0xa')]=function(_0x13e341,_0x4c2d78){return _0x13e341[_0xc66d('0xb')](_0xc66d('0xc'),attributes,{'tableName':_0xc66d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6196=['bluebird','request-promise','../../config/environment','./userOpenchannelQueue.attributes','exports','UserOpenchannelQueue','user_has_openchannel_queues','util','../../config/logger','api'];(function(_0x2891d1,_0x2ddd3e){var _0x486948=function(_0x13fa0f){while(--_0x13fa0f){_0x2891d1['push'](_0x2891d1['shift']());}};_0x486948(++_0x2ddd3e);}(_0x6196,0x147));var _0x6619=function(_0xc548a7,_0x485357){_0xc548a7=_0xc548a7-0x0;var _0x58a9dd=_0x6196[_0xc548a7];return _0x58a9dd;};'use strict';var _=require('lodash');var util=require(_0x6619('0x0'));var logger=require(_0x6619('0x1'))(_0x6619('0x2'));var moment=require('moment');var BPromise=require(_0x6619('0x3'));var rp=require(_0x6619('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6619('0x5'));var attributes=require(_0x6619('0x6'));module[_0x6619('0x7')]=function(_0x5990cd,_0x4b6b0c){return _0x5990cd['define'](_0x6619('0x8'),attributes,{'tableName':_0x6619('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b96394d..fd7e177 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f06=['jayson/promise','client','then','info','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x1903aa,_0x343458){var _0x51fe28=function(_0x52dea8){while(--_0x52dea8){_0x1903aa['push'](_0x1903aa['shift']());}};_0x51fe28(++_0x343458);}(_0x9f06,0x1f0));var _0x69f0=function(_0x8737a5,_0x19ad2a){_0x8737a5=_0x8737a5-0x0;var _0x5463ed=_0x9f06[_0x8737a5];return _0x5463ed;};'use strict';var _=require(_0x69f0('0x0'));var util=require('util');var moment=require(_0x69f0('0x1'));var BPromise=require(_0x69f0('0x2'));var rs=require(_0x69f0('0x3'));var fs=require('fs');var Redis=require(_0x69f0('0x4'));var db=require(_0x69f0('0x5'))['db'];var utils=require(_0x69f0('0x6'));var logger=require(_0x69f0('0x7'))(_0x69f0('0x8'));var config=require(_0x69f0('0x9'));var jayson=require(_0x69f0('0xa'));var client=jayson[_0x69f0('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ed54d,_0x2d2a11,_0x382615){return new BPromise(function(_0x44dad2,_0x1281a2){return client['request'](_0x2ed54d,_0x382615)[_0x69f0('0xc')](function(_0x20fd66){logger[_0x69f0('0xd')](_0x69f0('0xe'),_0x2d2a11,'request\x20sent');logger[_0x69f0('0xf')](_0x69f0('0x10'),_0x2d2a11,'request\x20sent',JSON[_0x69f0('0x11')](_0x20fd66));if(_0x20fd66['error']){if(_0x20fd66[_0x69f0('0x12')][_0x69f0('0x13')]===0x1f4){logger[_0x69f0('0x12')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x2d2a11,_0x20fd66[_0x69f0('0x12')][_0x69f0('0x14')]);return _0x1281a2(_0x20fd66['error'][_0x69f0('0x14')]);}logger[_0x69f0('0x12')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x2d2a11,_0x20fd66[_0x69f0('0x12')][_0x69f0('0x14')]);return _0x44dad2(_0x20fd66[_0x69f0('0x12')]['message']);}else{logger[_0x69f0('0xd')](_0x69f0('0xe'),_0x2d2a11,'request\x20sent');_0x44dad2(_0x20fd66[_0x69f0('0x15')][_0x69f0('0x14')]);}})[_0x69f0('0x16')](function(_0x129ae6){logger[_0x69f0('0x12')](_0x69f0('0xe'),_0x2d2a11,_0x129ae6);_0x1281a2(_0x129ae6);});});}
\ No newline at end of file
+var _0x53f7=['request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s'];(function(_0x2d7999,_0x330cd3){var _0x241b45=function(_0x4d08a2){while(--_0x4d08a2){_0x2d7999['push'](_0x2d7999['shift']());}};_0x241b45(++_0x330cd3);}(_0x53f7,0x126));var _0x753f=function(_0x1d98da,_0x532964){_0x1d98da=_0x1d98da-0x0;var _0x2a56f2=_0x53f7[_0x1d98da];return _0x2a56f2;};'use strict';var _=require(_0x753f('0x0'));var util=require('util');var moment=require(_0x753f('0x1'));var BPromise=require(_0x753f('0x2'));var rs=require(_0x753f('0x3'));var fs=require('fs');var Redis=require(_0x753f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x753f('0x5'));var logger=require(_0x753f('0x6'))(_0x753f('0x7'));var config=require('../../config/environment');var jayson=require(_0x753f('0x8'));var client=jayson[_0x753f('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x17463d,_0x245193,_0x144a65){return new BPromise(function(_0x21b2b3,_0x4b0625){return client[_0x753f('0xa')](_0x17463d,_0x144a65)[_0x753f('0xb')](function(_0x1e6c6c){logger[_0x753f('0xc')](_0x753f('0xd'),_0x245193,_0x753f('0xe'));logger[_0x753f('0xf')](_0x753f('0x10'),_0x245193,_0x753f('0xe'),JSON['stringify'](_0x1e6c6c));if(_0x1e6c6c[_0x753f('0x11')]){if(_0x1e6c6c[_0x753f('0x11')][_0x753f('0x12')]===0x1f4){logger[_0x753f('0x11')](_0x753f('0xd'),_0x245193,_0x1e6c6c['error'][_0x753f('0x13')]);return _0x4b0625(_0x1e6c6c['error'][_0x753f('0x13')]);}logger[_0x753f('0x11')](_0x753f('0xd'),_0x245193,_0x1e6c6c[_0x753f('0x11')][_0x753f('0x13')]);return _0x21b2b3(_0x1e6c6c['error'][_0x753f('0x13')]);}else{logger[_0x753f('0xc')](_0x753f('0xd'),_0x245193,_0x753f('0xe'));_0x21b2b3(_0x1e6c6c[_0x753f('0x14')]['message']);}})[_0x753f('0x15')](function(_0x340f22){logger[_0x753f('0x11')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x245193,_0x340f22);_0x4b0625(_0x340f22);});});}
\ No newline at end of file
index 227fa79..a93af5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21bb=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','/describe','isAuthenticated','describe','/:id','show','post','create','clone','/:id/sections','addSections','/:id/resources','addResources','put','update','delete','removeSections','removeResources','exports','util','path','express'];(function(_0xf7635a,_0x271f6a){var _0x28cb82=function(_0x1dafce){while(--_0x1dafce){_0xf7635a['push'](_0xf7635a['shift']());}};_0x28cb82(++_0x271f6a);}(_0x21bb,0x131));var _0xb21b=function(_0x25d1af,_0x178fd2){_0x25d1af=_0x25d1af-0x0;var _0x4d6a47=_0x21bb[_0x25d1af];return _0x4d6a47;};'use strict';var multer=require('multer');var util=require(_0xb21b('0x0'));var path=require(_0xb21b('0x1'));var timeout=require('connect-timeout');var express=require(_0xb21b('0x2'));var router=express[_0xb21b('0x3')]();var fs_extra=require(_0xb21b('0x4'));var auth=require(_0xb21b('0x5'));var interaction=require(_0xb21b('0x6'));var config=require(_0xb21b('0x7'));var controller=require(_0xb21b('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xb21b('0x9')](_0xb21b('0xa'),auth[_0xb21b('0xb')](),controller[_0xb21b('0xc')]);router[_0xb21b('0x9')](_0xb21b('0xd'),auth[_0xb21b('0xb')](),controller[_0xb21b('0xe')]);router[_0xb21b('0x9')]('/:id/sections',auth['isAuthenticated'](),controller['getSections']);router[_0xb21b('0x9')]('/:id/resources',auth[_0xb21b('0xb')](),controller['getResources']);router[_0xb21b('0xf')]('/',auth[_0xb21b('0xb')](),controller[_0xb21b('0x10')]);router[_0xb21b('0xf')]('/:id/clone',auth[_0xb21b('0xb')](),controller[_0xb21b('0x11')]);router[_0xb21b('0xf')](_0xb21b('0x12'),auth['isAuthenticated'](),controller[_0xb21b('0x13')]);router[_0xb21b('0xf')](_0xb21b('0x14'),auth[_0xb21b('0xb')](),controller[_0xb21b('0x15')]);router[_0xb21b('0x16')](_0xb21b('0xd'),auth[_0xb21b('0xb')](),controller[_0xb21b('0x17')]);router[_0xb21b('0x18')](_0xb21b('0xd'),auth[_0xb21b('0xb')](),controller['destroy']);router[_0xb21b('0x18')](_0xb21b('0x12'),auth[_0xb21b('0xb')](),controller[_0xb21b('0x19')]);router['delete']('/:id/resources',auth[_0xb21b('0xb')](),controller[_0xb21b('0x1a')]);module[_0xb21b('0x1b')]=router;
\ No newline at end of file
+var _0xda1a=['getResources','post','create','clone','addSections','addResources','put','update','delete','destroy','removeSections','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./userProfile.controller','get','index','/describe','isAuthenticated','describe','show','/:id/resources'];(function(_0x209e32,_0x535fcf){var _0x18beff=function(_0x3ac9c9){while(--_0x3ac9c9){_0x209e32['push'](_0x209e32['shift']());}};_0x18beff(++_0x535fcf);}(_0xda1a,0xff));var _0xada1=function(_0x3763c9,_0xe3883d){_0x3763c9=_0x3763c9-0x0;var _0xd09a5=_0xda1a[_0x3763c9];return _0xd09a5;};'use strict';var multer=require(_0xada1('0x0'));var util=require('util');var path=require(_0xada1('0x1'));var timeout=require(_0xada1('0x2'));var express=require(_0xada1('0x3'));var router=express[_0xada1('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xada1('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xada1('0x6'));var controller=require(_0xada1('0x7'));router[_0xada1('0x8')]('/',auth['isAuthenticated'](),controller[_0xada1('0x9')]);router[_0xada1('0x8')](_0xada1('0xa'),auth[_0xada1('0xb')](),controller[_0xada1('0xc')]);router[_0xada1('0x8')]('/:id',auth[_0xada1('0xb')](),controller[_0xada1('0xd')]);router[_0xada1('0x8')]('/:id/sections',auth[_0xada1('0xb')](),controller['getSections']);router[_0xada1('0x8')](_0xada1('0xe'),auth[_0xada1('0xb')](),controller[_0xada1('0xf')]);router[_0xada1('0x10')]('/',auth[_0xada1('0xb')](),controller[_0xada1('0x11')]);router['post']('/:id/clone',auth[_0xada1('0xb')](),controller[_0xada1('0x12')]);router[_0xada1('0x10')]('/:id/sections',auth[_0xada1('0xb')](),controller[_0xada1('0x13')]);router[_0xada1('0x10')](_0xada1('0xe'),auth[_0xada1('0xb')](),controller[_0xada1('0x14')]);router[_0xada1('0x15')]('/:id',auth[_0xada1('0xb')](),controller[_0xada1('0x16')]);router[_0xada1('0x17')]('/:id',auth[_0xada1('0xb')](),controller[_0xada1('0x18')]);router[_0xada1('0x17')]('/:id/sections',auth['isAuthenticated'](),controller[_0xada1('0x19')]);router[_0xada1('0x17')](_0xada1('0xe'),auth[_0xada1('0xb')](),controller['removeResources']);module[_0xada1('0x1a')]=router;
\ No newline at end of file
index 99fbf92..938f410 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2854=['STRING','BOOLEAN','exports','name','setDataValue','crudPermissions','join','getDataValue','split'];(function(_0x49eb34,_0x1ae5f8){var _0x2220af=function(_0xd5fab6){while(--_0xd5fab6){_0x49eb34['push'](_0x49eb34['shift']());}};_0x2220af(++_0x1ae5f8);}(_0x2854,0xec));var _0x4285=function(_0x319927,_0x11d8a0){_0x319927=_0x319927-0x0;var _0xb431a5=_0x2854[_0x319927];return _0xb431a5;};'use strict';var Sequelize=require('sequelize');module[_0x4285('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x4285('0x1')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x251be2){this[_0x4285('0x2')](_0x4285('0x3'),_0x251be2?_0x251be2[_0x4285('0x4')](''):[]);},'get':function(){return this[_0x4285('0x5')](_0x4285('0x3'))?this['getDataValue'](_0x4285('0x3'))[_0x4285('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x4285('0x7')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x4285('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x4285('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x4285('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x4285('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x4285('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x4285('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xc9cf=['split','BOOLEAN','sequelize','STRING','name','setDataValue','join','getDataValue','crudPermissions'];(function(_0x5491e5,_0x37a869){var _0x214eb5=function(_0x13a469){while(--_0x13a469){_0x5491e5['push'](_0x5491e5['shift']());}};_0x214eb5(++_0x37a869);}(_0xc9cf,0x1bb));var _0xfc9c=function(_0x3bceea,_0x58af75){_0x3bceea=_0x3bceea-0x0;var _0x30a8d3=_0xc9cf[_0x3bceea];return _0x30a8d3;};'use strict';var Sequelize=require(_0xfc9c('0x0'));module['exports']={'name':{'type':Sequelize[_0xfc9c('0x1')],'allowNull':![],'unique':_0xfc9c('0x2')},'crudPermissions':{'type':Sequelize[_0xfc9c('0x1')],'set':function(_0x4ccf8e){this[_0xfc9c('0x3')]('crudPermissions',_0x4ccf8e?_0x4ccf8e[_0xfc9c('0x4')](''):[]);},'get':function(){return this[_0xfc9c('0x5')](_0xfc9c('0x6'))?this['getDataValue'](_0xfc9c('0x6'))[_0xfc9c('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xfc9c('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xfc9c('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xfc9c('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xfc9c('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xfc9c('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index bacde91..4f61689 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6db4=['findAll','rows','catch','show','params','find','create','body','clone','omit','updatedAt','createdAt','sequelize','transaction','get','each','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','describe','addSections','UserProfileSection','push','removeSections','enabled','includes','isEmpty','subsections','findOne','Dashboard','resourceId','Plugin','forEach','addResources','bulkCreate','removeResources','ids','getResources','section','Missing\x20section\x20parameter','hasOwnProperty','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','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','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','end','json','offset','undefined','limit','count','status','apply','reject','save','then','destroy','error','stack','name','index','map','UserProfile','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','merge','filter','options','includeAll','include'];(function(_0x3a3792,_0x135916){var _0x4124c8=function(_0x1ee781){while(--_0x1ee781){_0x3a3792['push'](_0x3a3792['shift']());}};_0x4124c8(++_0x135916);}(_0x6db4,0x111));var _0x46db=function(_0xff4dd1,_0x54d6e6){_0xff4dd1=_0xff4dd1-0x0;var _0x4afdac=_0x6db4[_0xff4dd1];return _0x4afdac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x46db('0x0'));var zipdir=require(_0x46db('0x1'));var jsonpatch=require(_0x46db('0x2'));var rp=require(_0x46db('0x3'));var moment=require(_0x46db('0x4'));var BPromise=require(_0x46db('0x5'));var Mustache=require('mustache');var util=require(_0x46db('0x6'));var path=require(_0x46db('0x7'));var sox=require(_0x46db('0x8'));var csv=require(_0x46db('0x9'));var ejs=require(_0x46db('0xa'));var fs=require('fs');var fs_extra=require(_0x46db('0xb'));var _=require(_0x46db('0xc'));var squel=require('squel');var crypto=require(_0x46db('0xd'));var jsforce=require(_0x46db('0xe'));var deskjs=require(_0x46db('0xf'));var toCsv=require(_0x46db('0x9'));var querystring=require(_0x46db('0x10'));var Papa=require(_0x46db('0x11'));var Redis=require(_0x46db('0x12'));var authService=require(_0x46db('0x13'));var qs=require(_0x46db('0x14'));var as=require(_0x46db('0x15'));var hardwareService=require(_0x46db('0x16'));var logger=require(_0x46db('0x17'))('api');var utils=require(_0x46db('0x18'));var config=require(_0x46db('0x19'));var licenseUtil=require(_0x46db('0x1a'));var db=require(_0x46db('0x1b'))['db'];config[_0x46db('0x1c')]=_[_0x46db('0x1d')](config[_0x46db('0x1c')],{'host':_0x46db('0x1e'),'port':0x18eb});var socket=require(_0x46db('0x1f'))(new Redis(config['redis']));require('./userProfile.socket')['register'](socket);function respondWithStatusCode(_0x417caf,_0xed8db9){_0xed8db9=_0xed8db9||0xcc;return function(_0x5c982c){if(_0x5c982c){return _0x417caf[_0x46db('0x20')](_0xed8db9);}return _0x417caf['status'](_0xed8db9)[_0x46db('0x21')]();};}function respondWithResult(_0x5dccf9,_0x12976b){_0x12976b=_0x12976b||0xc8;return function(_0x41a0bc){if(_0x41a0bc){return _0x5dccf9['status'](_0x12976b)[_0x46db('0x22')](_0x41a0bc);}};}function respondWithFilteredResult(_0x1e6b13,_0x422c86){return function(_0x32c5ef){if(_0x32c5ef){var _0x1e24e6=typeof _0x422c86[_0x46db('0x23')]===_0x46db('0x24')&&typeof _0x422c86[_0x46db('0x25')]==='undefined';var _0x27cfcf=_0x32c5ef[_0x46db('0x26')];var _0x1e0beb=_0x1e24e6?0x0:_0x422c86['offset'];var _0x521b93=_0x1e24e6?_0x32c5ef['count']:_0x422c86['offset']+_0x422c86[_0x46db('0x25')];var _0x270f8d;if(_0x521b93>=_0x27cfcf){_0x521b93=_0x27cfcf;_0x270f8d=0xc8;}else{_0x270f8d=0xce;}_0x1e6b13[_0x46db('0x27')](_0x270f8d);return _0x1e6b13['set']('Content-Range',_0x1e0beb+'-'+_0x521b93+'/'+_0x27cfcf)[_0x46db('0x22')](_0x32c5ef);}return null;};}function patchUpdates(_0x3601e4){return function(_0x1156c4){try{jsonpatch[_0x46db('0x28')](_0x1156c4,_0x3601e4,!![]);}catch(_0x443651){return BPromise[_0x46db('0x29')](_0x443651);}return _0x1156c4[_0x46db('0x2a')]();};}function saveUpdates(_0x3a50dd,_0x4708df){return function(_0x7bcdf5){if(_0x7bcdf5){return _0x7bcdf5['update'](_0x3a50dd)[_0x46db('0x2b')](function(_0x149e66){return _0x149e66;});}return null;};}function removeEntity(_0x1e7acc,_0x408b9f){return function(_0x448aff){if(_0x448aff){return _0x448aff[_0x46db('0x2c')]()['then'](function(){_0x1e7acc[_0x46db('0x27')](0xcc)[_0x46db('0x21')]();});}};}function handleEntityNotFound(_0x1a3855,_0x4e9bf5){return function(_0x131d75){if(!_0x131d75){_0x1a3855[_0x46db('0x20')](0x194);}return _0x131d75;};}function handleError(_0x346b0c,_0xb9f5e3){_0xb9f5e3=_0xb9f5e3||0x1f4;return function(_0x367195){logger[_0x46db('0x2d')](_0x367195[_0x46db('0x2e')]);if(_0x367195[_0x46db('0x2f')]){delete _0x367195[_0x46db('0x2f')];}_0x346b0c[_0x46db('0x27')](_0xb9f5e3)['send'](_0x367195);};}exports[_0x46db('0x30')]=function(_0x1d5f86,_0x531ef2){var _0xd92990={},_0xd836d4={},_0x2fd094={'count':0x0,'rows':[]};var _0x401cea=_[_0x46db('0x31')](db[_0x46db('0x32')][_0x46db('0x33')],function(_0x45604c){return{'name':_0x45604c[_0x46db('0x34')],'type':_0x45604c[_0x46db('0x35')][_0x46db('0x36')]};});_0xd836d4[_0x46db('0x37')]=_['map'](_0x401cea,'name');_0xd836d4[_0x46db('0x38')]=_[_0x46db('0x39')](_0x1d5f86[_0x46db('0x38')]);_0xd836d4['filters']=_[_0x46db('0x3a')](_0xd836d4[_0x46db('0x37')],_0xd836d4['query']);_0xd92990[_0x46db('0x3b')]=_[_0x46db('0x3a')](_0xd836d4[_0x46db('0x37')],qs[_0x46db('0x3c')](_0x1d5f86[_0x46db('0x38')]['fields']));_0xd92990['attributes']=_0xd92990[_0x46db('0x3b')][_0x46db('0x3d')]?_0xd92990[_0x46db('0x3b')]:_0xd836d4[_0x46db('0x37')];if(!_0x1d5f86[_0x46db('0x38')]['hasOwnProperty'](_0x46db('0x3e'))){_0xd92990[_0x46db('0x25')]=qs[_0x46db('0x25')](_0x1d5f86['query']['limit']);_0xd92990[_0x46db('0x23')]=qs[_0x46db('0x23')](_0x1d5f86[_0x46db('0x38')][_0x46db('0x23')]);}_0xd92990[_0x46db('0x3f')]=qs[_0x46db('0x40')](_0x1d5f86['query']['sort']);_0xd92990[_0x46db('0x41')]=qs[_0x46db('0x42')](_['pick'](_0x1d5f86[_0x46db('0x38')],_0xd836d4['filters']),_0x401cea);if(_0x1d5f86[_0x46db('0x38')]['filter']){_0xd92990[_0x46db('0x41')]=_[_0x46db('0x43')](_0xd92990[_0x46db('0x41')],{'$or':_[_0x46db('0x31')](_0x401cea,function(_0x4a6894){if(_0x4a6894['type']!=='VIRTUAL'){var _0x208ff5={};_0x208ff5[_0x4a6894[_0x46db('0x2f')]]={'$like':'%'+_0x1d5f86[_0x46db('0x38')][_0x46db('0x44')]+'%'};return _0x208ff5;}})});}_0xd92990=_['merge']({},_0xd92990,_0x1d5f86[_0x46db('0x45')]);var _0x265050={'where':_0xd92990[_0x46db('0x41')]};return db[_0x46db('0x32')][_0x46db('0x26')](_0x265050)[_0x46db('0x2b')](function(_0x3f31e1){_0x2fd094[_0x46db('0x26')]=_0x3f31e1;if(_0x1d5f86[_0x46db('0x38')][_0x46db('0x46')]){_0xd92990[_0x46db('0x47')]=[{'all':!![]}];}return db[_0x46db('0x32')][_0x46db('0x48')](_0xd92990);})[_0x46db('0x2b')](function(_0x1e9cde){_0x2fd094[_0x46db('0x49')]=_0x1e9cde;return _0x2fd094;})['then'](respondWithFilteredResult(_0x531ef2,_0xd92990))[_0x46db('0x4a')](handleError(_0x531ef2,null));};exports[_0x46db('0x4b')]=function(_0x1042b0,_0x3d479f){var _0x28141d={'raw':![],'where':{'id':_0x1042b0[_0x46db('0x4c')]['id']}},_0x53d253={};_0x53d253[_0x46db('0x37')]=_[_0x46db('0x39')](db[_0x46db('0x32')][_0x46db('0x33')]);_0x53d253[_0x46db('0x38')]=_[_0x46db('0x39')](_0x1042b0[_0x46db('0x38')]);_0x53d253['filters']=_['intersection'](_0x53d253[_0x46db('0x37')],_0x53d253[_0x46db('0x38')]);_0x28141d[_0x46db('0x3b')]=_[_0x46db('0x3a')](_0x53d253['model'],qs[_0x46db('0x3c')](_0x1042b0[_0x46db('0x38')][_0x46db('0x3c')]));_0x28141d[_0x46db('0x3b')]=_0x28141d[_0x46db('0x3b')][_0x46db('0x3d')]?_0x28141d[_0x46db('0x3b')]:_0x53d253[_0x46db('0x37')];if(_0x1042b0[_0x46db('0x38')][_0x46db('0x46')]){_0x28141d['include']=[{'all':!![]}];}_0x28141d=_[_0x46db('0x43')]({},_0x28141d,_0x1042b0['options']);return db[_0x46db('0x32')][_0x46db('0x4d')](_0x28141d)[_0x46db('0x2b')](handleEntityNotFound(_0x3d479f,null))[_0x46db('0x2b')](respondWithResult(_0x3d479f,null))[_0x46db('0x4a')](handleError(_0x3d479f,null));};exports['create']=function(_0xa4dd63,_0xd469f){return db['UserProfile'][_0x46db('0x4e')](_0xa4dd63[_0x46db('0x4f')],{})['then'](respondWithResult(_0xd469f,0xc9))[_0x46db('0x4a')](handleError(_0xd469f,null));};exports[_0x46db('0x50')]=function(_0x4c4892,_0x55ba77){var _0x573e48={'where':{'id':_0x4c4892[_0x46db('0x4c')]['id']}},_0x5a1469={};_0x5a1469['model']=_[_0x46db('0x39')](db[_0x46db('0x32')][_0x46db('0x33')]);_0x573e48['attributes']=_[_0x46db('0x3a')](_0x5a1469[_0x46db('0x37')],qs[_0x46db('0x3c')](_0x4c4892[_0x46db('0x38')]['fields']));_0x573e48[_0x46db('0x3b')]=_0x573e48[_0x46db('0x3b')]['length']?_0x573e48['attributes']:_0x5a1469['model'];if(_0x4c4892[_0x46db('0x38')]['includeAll']){_0x573e48[_0x46db('0x47')]=[{'all':!![]}];}_0x573e48=_[_0x46db('0x43')]({},_0x573e48,_0x4c4892[_0x46db('0x45')]);return db['UserProfile'][_0x46db('0x4d')](_0x573e48)[_0x46db('0x2b')](handleEntityNotFound(_0x55ba77,null))[_0x46db('0x2b')](function(_0x2d75bf){if(_0x2d75bf){var _0x178de5=_0x2d75bf['get']({'plain':!![]});_0x178de5=qs[_0x46db('0x51')](_0x178de5,['id','createdAt',_0x46db('0x52'),'crudPermissions']);_0x4c4892[_0x46db('0x4f')]=_[_0x46db('0x51')](_0x4c4892[_0x46db('0x4f')],['id',_0x46db('0x53'),'updatedAt']);return db[_0x46db('0x54')][_0x46db('0x55')](function(_0x31df60){return db['UserProfile']['create'](_[_0x46db('0x43')](_0x178de5,_0x4c4892[_0x46db('0x4f')]),{'include':_0x4c4892['query']['includeAll']?[{'all':!![]}]:undefined,'transaction':_0x31df60})[_0x46db('0x2b')](function(_0x982ccf){var _0x2614a0=_0x982ccf[_0x46db('0x56')]({'plain':!![]});return db['UserProfileSection'][_0x46db('0x48')]({'where':{'userProfileId':_0x4c4892[_0x46db('0x4c')]['id']},'raw':!![]})[_0x46db('0x2b')](function(_0x55fc21){if(_0x55fc21){return BPromise[_0x46db('0x57')](_0x55fc21,function(_0x4d1e1a){return new BPromise(function(_0x5082c0,_0x25289a){if(_0x4d1e1a[_0x46db('0x58')]===null||_0x4d1e1a[_0x46db('0x58')]===0x1)_0x5082c0(null);return db[_0x46db('0x59')][_0x46db('0x48')]({'where':{'sectionId':_0x4d1e1a['id']},'raw':!![]})[_0x46db('0x2b')](function(_0x3ceaed){var _0x92438c=_[_0x46db('0x31')](_0x3ceaed,function(_0x5c5826){return qs['omit'](_0x5c5826,['id','createdAt','updatedAt',_0x46db('0x5a')]);});_0x5082c0(_0x92438c);})[_0x46db('0x4a')](function(_0x37fd3e){_0x25289a(_0x37fd3e);});})[_0x46db('0x2b')](function(_0x4acc5a){var _0xa8d88a=qs[_0x46db('0x51')](_0x4d1e1a,['id','createdAt',_0x46db('0x52')]);_0xa8d88a[_0x46db('0x5b')]=_0x2614a0['id'];if(_0x4acc5a)_0xa8d88a[_0x46db('0x5c')]=_0x4acc5a;return _0xa8d88a;})[_0x46db('0x2b')](function(_0x9bc317){return db['UserProfileSection']['create'](_0x9bc317,{'include':[{'model':db[_0x46db('0x59')],'as':_0x46db('0x5c')}],'raw':!![],'transaction':_0x31df60});});})[_0x46db('0x2b')](function(){return _0x2614a0;});}});});});}})[_0x46db('0x2b')](respondWithResult(_0x55ba77,0xc9))[_0x46db('0x4a')](handleError(_0x55ba77,null));};exports['update']=function(_0x36b38e,_0x162e50){if(_0x36b38e[_0x46db('0x4f')]['id']){delete _0x36b38e[_0x46db('0x4f')]['id'];}return db['UserProfile'][_0x46db('0x4d')]({'where':{'id':_0x36b38e[_0x46db('0x4c')]['id']}})[_0x46db('0x2b')](handleEntityNotFound(_0x162e50,null))[_0x46db('0x2b')](saveUpdates(_0x36b38e[_0x46db('0x4f')],null))['then'](respondWithResult(_0x162e50,null))[_0x46db('0x4a')](handleError(_0x162e50,null));};exports[_0x46db('0x2c')]=function(_0x447b85,_0x20f914){return db[_0x46db('0x32')][_0x46db('0x4d')]({'where':{'id':_0x447b85[_0x46db('0x4c')]['id']}})['then'](handleEntityNotFound(_0x20f914,null))[_0x46db('0x2b')](removeEntity(_0x20f914,null))[_0x46db('0x4a')](handleError(_0x20f914,null));};exports[_0x46db('0x5d')]=function(_0x3ffa8d,_0x5afd09){return db['UserProfile']['describe']()['then'](respondWithResult(_0x5afd09,null))[_0x46db('0x4a')](handleError(_0x5afd09,null));};exports[_0x46db('0x5e')]=function(_0x2bba34,_0x25a69c){var _0x3d7fad=_0x2bba34[_0x46db('0x4f')];return db['UserProfile'][_0x46db('0x4d')]({'where':{'id':_0x2bba34[_0x46db('0x4c')]['id']}})['then'](handleEntityNotFound(_0x25a69c,null))[_0x46db('0x2b')](function(_0x4b1089){if(_0x4b1089){return db[_0x46db('0x54')]['transaction'](function(_0x337d9a){return db[_0x46db('0x5f')][_0x46db('0x2c')]({'where':{'userProfileId':_0x2bba34[_0x46db('0x4c')]['id'],'sectionId':_['map'](_0x3d7fad,function(_0x2ae3a4){return _0x2ae3a4[_0x46db('0x5a')];})},'transaction':_0x337d9a})['then'](function(){var _0x2758b9=_['map'](_0x3d7fad,function(_0xe35119){_0xe35119['userProfileId']=_0x2bba34[_0x46db('0x4c')]['id'];return _0xe35119;});var _0xaed8a5=[];return BPromise[_0x46db('0x57')](_0x2758b9,function(_0x3b9a16){return db[_0x46db('0x5f')][_0x46db('0x4e')](_0x3b9a16,{'include':[{'model':db[_0x46db('0x59')],'as':_0x46db('0x5c')}],'raw':!![],'transaction':_0x337d9a})[_0x46db('0x2b')](function(_0x1d539a){_0xaed8a5[_0x46db('0x60')](_0x1d539a[_0x46db('0x56')]({'plain':!![]}));});})['then'](function(){return _0xaed8a5;});});});}})[_0x46db('0x2b')](function(_0x480f62){return _0x480f62;})[_0x46db('0x2b')](respondWithResult(_0x25a69c,null))['catch'](handleError(_0x25a69c,null));};exports[_0x46db('0x61')]=function(_0x40b6f0,_0x94c211){var _0xef9f7b;return db[_0x46db('0x32')][_0x46db('0x4d')]({'where':{'id':_0x40b6f0[_0x46db('0x4c')]['id']},'attributes':['id',_0x46db('0x2f')]})[_0x46db('0x2b')](handleEntityNotFound(_0x94c211,null))[_0x46db('0x2b')](function(_0x270bdb){if(_0x270bdb){_0xef9f7b=_0x270bdb;return db[_0x46db('0x5f')][_0x46db('0x2c')]({'where':{'userProfileId':_0x40b6f0[_0x46db('0x4c')]['id'],'sectionId':_0x40b6f0[_0x46db('0x38')]['ids']}});}})['then'](function(){return _0xef9f7b;})[_0x46db('0x2b')](respondWithStatusCode(_0x94c211,null))[_0x46db('0x4a')](handleError(_0x94c211,null));};exports['getSections']=function(_0x415f7e,_0x4b3cfa){var _0x30c54a=[];var _0x31572c=[];return db[_0x46db('0x5f')]['findAll']({'where':{'userProfileId':_0x415f7e['params']['id']},'raw':!![]})[_0x46db('0x2b')](function(_0xb9a7df){_0x30c54a=_[_0x46db('0x44')](_0xb9a7df,function(_0x1903be){return _0x1903be[_0x46db('0x62')]===0x1||_[_0x46db('0x63')]([0x3eb,0x709],_0x1903be[_0x46db('0x5a')]);});if(!_[_0x46db('0x64')](_0x30c54a)){return _[_0x46db('0x31')](_0x30c54a,function(_0x249744){return _0x249744[_0x46db('0x5a')];});}else{return;}})['then'](function(_0xbe99ac){if(_0xbe99ac)_0x31572c=_0xbe99ac;if(_['includes'](_0x31572c,0x64)){var _0x34ac25=_[_0x46db('0x4d')](_0x30c54a,{'sectionId':0x64});return hasDefaultDashboard(_0x34ac25)[_0x46db('0x2b')](function(_0x46a4fa){return _[_0x46db('0x31')](_0x30c54a,function(_0x4c976a){if(_0x4c976a[_0x46db('0x5a')]===0x64){_0x4c976a[_0x46db('0x65')]=_0x46a4fa;}return _0x4c976a;});});}else{return;}})[_0x46db('0x2b')](function(_0x223539){if(_0x223539)_0x30c54a=_0x223539;if(_[_0x46db('0x63')](_0x31572c,0x3eb)){var _0x97f613=_[_0x46db('0x4d')](_0x30c54a,{'sectionId':0x3eb});return getCustomDashboards(_0x97f613)[_0x46db('0x2b')](function(_0x5ef702){return _[_0x46db('0x31')](_0x30c54a,function(_0x1c3bfd){if(_0x97f613[_0x46db('0x62')]){if(_0x1c3bfd[_0x46db('0x5a')]===0x3eb){_0x1c3bfd[_0x46db('0x65')]=_0x5ef702;}}else{if(_0x1c3bfd['sectionId']===0x64){_0x1c3bfd[_0x46db('0x65')]=_0x5ef702;}}return _0x1c3bfd;});});}else{return;}})[_0x46db('0x2b')](function(_0x3835b8){if(_0x3835b8)_0x30c54a=_0x3835b8;if(_[_0x46db('0x63')](_0x31572c,0x709)){var _0x407ddf=_['find'](_0x30c54a,{'sectionId':0x709});return getPlugins(_0x407ddf)['then'](function(_0x3e8ad6){if(_0x407ddf[_0x46db('0x62')]){return _[_0x46db('0x31')](_0x30c54a,function(_0x5ca70e){if(_0x5ca70e[_0x46db('0x5a')]===0x709){_0x5ca70e[_0x46db('0x65')]=_0x3e8ad6;}return _0x5ca70e;});}else{var _0x4b3e85={'sectionId':0x76c,'enabled':0x1,'subsections':_0x3e8ad6};var _0xdeb43f=_['map'](_0x30c54a);_0xdeb43f[_0x46db('0x60')](_0x4b3e85);return _0xdeb43f;}});}else{return;}})[_0x46db('0x2b')](function(_0x39d6d7){if(_0x39d6d7)_0x30c54a=_0x39d6d7;return _[_0x46db('0x44')](_0x30c54a,['enabled',0x1]);})[_0x46db('0x2b')](respondWithResult(_0x4b3cfa,null))[_0x46db('0x4a')](handleError(_0x4b3cfa,null));};function hasDefaultDashboard(_0x4ab88a){var _0x19e94b=[0x65];return new BPromise(function(_0x1c3b2e,_0x273bf4){try{if(_0x4ab88a['autoAssociation']){_0x1c3b2e(_0x19e94b);}else{return db[_0x46db('0x59')][_0x46db('0x66')]({'where':{'sectionId':_0x4ab88a['id']},'raw':!![]})[_0x46db('0x2b')](function(_0x25ca0a){_0x25ca0a?_0x1c3b2e(_0x19e94b):_0x1c3b2e();});}}catch(_0x1eb672){_0x273bf4(_0x1eb672);}});}function getCustomDashboards(_0x222e99){var _0x560968=[];return new BPromise(function(_0x1a1ad9,_0x2f734d){try{if(_0x222e99[_0x46db('0x58')]){return db[_0x46db('0x67')][_0x46db('0x48')]({'raw':!![]})[_0x46db('0x2b')](function(_0x33ad58){_0x33ad58['forEach'](function(_0x3a242a){_0x560968[_0x46db('0x60')](_0x3a242a['id']+0x1869f);});_0x1a1ad9(_0x560968);});}else{return db[_0x46db('0x59')][_0x46db('0x48')]({'where':{'sectionId':_0x222e99['id']},'raw':!![]})['then'](function(_0x226d31){_0x226d31['forEach'](function(_0x544b6a){_0x560968[_0x46db('0x60')](_0x544b6a[_0x46db('0x68')]+0x1869f);});_0x1a1ad9(_0x560968);});}}catch(_0x46ae11){_0x2f734d(_0x46ae11);}});}function getPlugins(_0x54012f){var _0x5dcce9=[];return new BPromise(function(_0x53a51b,_0x1be762){try{if(_0x54012f[_0x46db('0x58')]){return db[_0x46db('0x69')][_0x46db('0x48')]({'raw':!![]})[_0x46db('0x2b')](function(_0xedae84){_0xedae84[_0x46db('0x6a')](function(_0x30a9ac){_0x5dcce9[_0x46db('0x60')](_0x30a9ac['id']+0x15b38);});_0x53a51b(_0x5dcce9);});}else{return db[_0x46db('0x59')]['findAll']({'where':{'sectionId':_0x54012f['id']},'raw':!![]})[_0x46db('0x2b')](function(_0x28c171){_0x28c171[_0x46db('0x6a')](function(_0x5ea0e7){_0x5dcce9[_0x46db('0x60')](_0x5ea0e7[_0x46db('0x68')]+0x15b38);});_0x53a51b(_0x5dcce9);});}}catch(_0x39bcb6){_0x1be762(_0x39bcb6);}});}exports[_0x46db('0x6b')]=function(_0x48c577,_0x2b3675){return db[_0x46db('0x32')][_0x46db('0x4d')]({'where':{'id':_0x48c577['params']['id']}})['then'](handleEntityNotFound(_0x2b3675,null))[_0x46db('0x2b')](function(_0x193e4a){if(_0x193e4a){return db[_0x46db('0x54')][_0x46db('0x55')](function(_0x302272){return db[_0x46db('0x5f')][_0x46db('0x48')]({'where':{'userProfileId':_0x48c577[_0x46db('0x4c')]['id']},'attributes':['id'],'raw':!![]})[_0x46db('0x2b')](function(_0x3dc85c){if(_0x3dc85c){return db[_0x46db('0x5f')][_0x46db('0x2c')]({'where':{'userProfileId':_0x48c577[_0x46db('0x4c')]['id'],'id':_['map'](_0x3dc85c,function(_0x239350){return _0x239350['id'];})},'transaction':_0x302272});}})[_0x46db('0x2b')](function(_0x1cb5ae){var _0x3819f0=_['map'](_0x48c577[_0x46db('0x4f')],function(_0x1bf5ee){_0x1bf5ee[_0x46db('0x5b')]=_0x48c577[_0x46db('0x4c')]['id'];return _0x1bf5ee;});return db[_0x46db('0x5f')][_0x46db('0x6c')](_0x3819f0,{'raw':!![],'transaction':_0x302272});})['then'](function(_0x101a37){var _0x4ff40d=_[_0x46db('0x44')](_['map'](_0x101a37,function(_0x4650b6){return _0x4650b6['get']({'plain':!![]});}),{'includeAll':![]});if(_0x4ff40d){return db[_0x46db('0x5f')][_0x46db('0x48')]({'where':{'userProfileId':_0x48c577[_0x46db('0x4c')]['id'],'sectionId':_[_0x46db('0x31')](_0x4ff40d,function(_0x2a8a6f){return _0x2a8a6f[_0x46db('0x5a')];})},'attributes':['id',_0x46db('0x5a')],'raw':!![]})[_0x46db('0x2b')](function(_0x456cb3){var _0x24da5c=_[_0x46db('0x31')](_0x48c577[_0x46db('0x4f')],function(_0x1933b9){_0x1933b9[_0x46db('0x5b')]=_0x48c577[_0x46db('0x4c')]['id'];return _0x1933b9;});return db[_0x46db('0x59')][_0x46db('0x6c')](_0x24da5c,{'raw':!![],'transaction':_0x302272});});}})[_0x46db('0x4a')](handleError(_0x2b3675,null));});}})[_0x46db('0x2b')](function(_0x2626b8){var _0x3c39b0=_[_0x46db('0x31')](_0x2626b8,function(_0x12c196){return _0x12c196[_0x46db('0x56')]({'plain':!![]});});})[_0x46db('0x2b')](respondWithResult(_0x2b3675,null))['catch'](handleError(_0x2b3675,null));};exports[_0x46db('0x6d')]=function(_0x15a414,_0x256a1a,_0x4368b4){return db['UserProfile'][_0x46db('0x4d')]({'where':{'id':_0x15a414[_0x46db('0x4c')]['id']}})['then'](handleEntityNotFound(_0x256a1a,null))['then'](function(_0x504f71){if(_0x504f71){return _0x504f71[_0x46db('0x6d')](_0x15a414[_0x46db('0x38')][_0x46db('0x6e')]);}})['then'](respondWithStatusCode(_0x256a1a,null))[_0x46db('0x4a')](handleError(_0x256a1a,null));};exports[_0x46db('0x6f')]=function(_0x1c22b9,_0x85a066){var _0x6d428b={};if(!_0x1c22b9[_0x46db('0x38')][_0x46db('0x70')])throw new Error(_0x46db('0x71'));if(!_0x1c22b9[_0x46db('0x38')][_0x46db('0x72')](_0x46db('0x3e'))){_0x6d428b['limit']=qs[_0x46db('0x25')](_0x1c22b9['query']['limit']);_0x6d428b[_0x46db('0x23')]=qs[_0x46db('0x23')](_0x1c22b9['query'][_0x46db('0x23')]);}return db[_0x46db('0x32')][_0x46db('0x4d')]({'where':{'id':_0x1c22b9[_0x46db('0x4c')]['id']}})[_0x46db('0x2b')](function(_0x446128){if(!_0x446128)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x1c22b9[_0x46db('0x4c')]['id']);return db[_0x46db('0x32')][_0x46db('0x6f')](_0x1c22b9);})[_0x46db('0x2b')](respondWithFilteredResult(_0x85a066,_0x6d428b))[_0x46db('0x4a')](handleError(_0x85a066,null));};
\ No newline at end of file
+var _0x8286=['to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./userProfile.socket','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','map','UserProfile','rawAttributes','type','key','query','keys','intersection','attributes','model','fields','hasOwnProperty','order','where','filters','filter','VIRTUAL','merge','options','includeAll','include','catch','show','params','length','find','create','body','get','omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','findAll','each','autoAssociation','userProfileId','Resources','UserProfileResource','describe','addSections','sectionId','push','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','findOne','Dashboard','forEach','Plugin','resourceId','addResources','bulkCreate','removeResources','section','Missing\x20section\x20parameter','nolimit','No\x20User\x20Profile\x20found\x20for\x20id\x20','getResources','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce'];(function(_0x298f90,_0x218331){var _0x3485b9=function(_0x50559c){while(--_0x50559c){_0x298f90['push'](_0x298f90['shift']());}};_0x3485b9(++_0x218331);}(_0x8286,0x66));var _0x6828=function(_0x50e7c3,_0x33f2cd){_0x50e7c3=_0x50e7c3-0x0;var _0x5ab568=_0x8286[_0x50e7c3];return _0x5ab568;};'use strict';var emlformat=require(_0x6828('0x0'));var rimraf=require(_0x6828('0x1'));var zipdir=require(_0x6828('0x2'));var jsonpatch=require(_0x6828('0x3'));var rp=require(_0x6828('0x4'));var moment=require(_0x6828('0x5'));var BPromise=require(_0x6828('0x6'));var Mustache=require(_0x6828('0x7'));var util=require(_0x6828('0x8'));var path=require(_0x6828('0x9'));var sox=require(_0x6828('0xa'));var csv=require('to-csv');var ejs=require(_0x6828('0xb'));var fs=require('fs');var fs_extra=require(_0x6828('0xc'));var _=require('lodash');var squel=require(_0x6828('0xd'));var crypto=require(_0x6828('0xe'));var jsforce=require(_0x6828('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x6828('0x10'));var querystring=require(_0x6828('0x11'));var Papa=require(_0x6828('0x12'));var Redis=require(_0x6828('0x13'));var authService=require(_0x6828('0x14'));var qs=require(_0x6828('0x15'));var as=require(_0x6828('0x16'));var hardwareService=require(_0x6828('0x17'));var logger=require(_0x6828('0x18'))('api');var utils=require('../../config/utils');var config=require(_0x6828('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x6828('0x1a'))['db'];config['redis']=_[_0x6828('0x1b')](config[_0x6828('0x1c')],{'host':_0x6828('0x1d'),'port':0x18eb});var socket=require(_0x6828('0x1e'))(new Redis(config[_0x6828('0x1c')]));require(_0x6828('0x1f'))['register'](socket);function respondWithStatusCode(_0x917a5f,_0x229b71){_0x229b71=_0x229b71||0xcc;return function(_0x24cb24){if(_0x24cb24){return _0x917a5f['sendStatus'](_0x229b71);}return _0x917a5f[_0x6828('0x20')](_0x229b71)[_0x6828('0x21')]();};}function respondWithResult(_0x3b88ed,_0x590c8e){_0x590c8e=_0x590c8e||0xc8;return function(_0x29ebc4){if(_0x29ebc4){return _0x3b88ed[_0x6828('0x20')](_0x590c8e)['json'](_0x29ebc4);}};}function respondWithFilteredResult(_0x118c28,_0x5c89cc){return function(_0x23543c){if(_0x23543c){var _0x4b59c4=typeof _0x5c89cc[_0x6828('0x22')]===_0x6828('0x23')&&typeof _0x5c89cc[_0x6828('0x24')]==='undefined';var _0x5087e8=_0x23543c[_0x6828('0x25')];var _0x23c634=_0x4b59c4?0x0:_0x5c89cc[_0x6828('0x22')];var _0x5a43e4=_0x4b59c4?_0x23543c[_0x6828('0x25')]:_0x5c89cc[_0x6828('0x22')]+_0x5c89cc[_0x6828('0x24')];var _0x2b347e;if(_0x5a43e4>=_0x5087e8){_0x5a43e4=_0x5087e8;_0x2b347e=0xc8;}else{_0x2b347e=0xce;}_0x118c28[_0x6828('0x20')](_0x2b347e);return _0x118c28[_0x6828('0x26')](_0x6828('0x27'),_0x23c634+'-'+_0x5a43e4+'/'+_0x5087e8)[_0x6828('0x28')](_0x23543c);}return null;};}function patchUpdates(_0x3141d0){return function(_0x239332){try{jsonpatch[_0x6828('0x29')](_0x239332,_0x3141d0,!![]);}catch(_0x2c6c55){return BPromise[_0x6828('0x2a')](_0x2c6c55);}return _0x239332[_0x6828('0x2b')]();};}function saveUpdates(_0x364b9b,_0x3001ff){return function(_0x212505){if(_0x212505){return _0x212505[_0x6828('0x2c')](_0x364b9b)['then'](function(_0x331e0c){return _0x331e0c;});}return null;};}function removeEntity(_0x8bfd91,_0x13f4bb){return function(_0x224ded){if(_0x224ded){return _0x224ded[_0x6828('0x2d')]()[_0x6828('0x2e')](function(){_0x8bfd91['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x25cd0f,_0x5545b0){return function(_0x2f6a07){if(!_0x2f6a07){_0x25cd0f[_0x6828('0x2f')](0x194);}return _0x2f6a07;};}function handleError(_0x34afac,_0x336c61){_0x336c61=_0x336c61||0x1f4;return function(_0xe49985){logger[_0x6828('0x30')](_0xe49985[_0x6828('0x31')]);if(_0xe49985[_0x6828('0x32')]){delete _0xe49985[_0x6828('0x32')];}_0x34afac[_0x6828('0x20')](_0x336c61)[_0x6828('0x33')](_0xe49985);};}exports['index']=function(_0x5039aa,_0x793399){var _0x11ddaf={},_0x18f747={},_0x249ad2={'count':0x0,'rows':[]};var _0x3dad0d=_[_0x6828('0x34')](db[_0x6828('0x35')][_0x6828('0x36')],function(_0x29959a){return{'name':_0x29959a['fieldName'],'type':_0x29959a[_0x6828('0x37')][_0x6828('0x38')]};});_0x18f747['model']=_[_0x6828('0x34')](_0x3dad0d,_0x6828('0x32'));_0x18f747[_0x6828('0x39')]=_[_0x6828('0x3a')](_0x5039aa[_0x6828('0x39')]);_0x18f747['filters']=_[_0x6828('0x3b')](_0x18f747['model'],_0x18f747['query']);_0x11ddaf[_0x6828('0x3c')]=_[_0x6828('0x3b')](_0x18f747[_0x6828('0x3d')],qs['fields'](_0x5039aa[_0x6828('0x39')][_0x6828('0x3e')]));_0x11ddaf[_0x6828('0x3c')]=_0x11ddaf[_0x6828('0x3c')]['length']?_0x11ddaf[_0x6828('0x3c')]:_0x18f747[_0x6828('0x3d')];if(!_0x5039aa[_0x6828('0x39')][_0x6828('0x3f')]('nolimit')){_0x11ddaf[_0x6828('0x24')]=qs[_0x6828('0x24')](_0x5039aa[_0x6828('0x39')][_0x6828('0x24')]);_0x11ddaf[_0x6828('0x22')]=qs[_0x6828('0x22')](_0x5039aa['query'][_0x6828('0x22')]);}_0x11ddaf[_0x6828('0x40')]=qs['sort'](_0x5039aa[_0x6828('0x39')]['sort']);_0x11ddaf[_0x6828('0x41')]=qs['filters'](_['pick'](_0x5039aa[_0x6828('0x39')],_0x18f747[_0x6828('0x42')]),_0x3dad0d);if(_0x5039aa[_0x6828('0x39')][_0x6828('0x43')]){_0x11ddaf[_0x6828('0x41')]=_['merge'](_0x11ddaf[_0x6828('0x41')],{'$or':_[_0x6828('0x34')](_0x3dad0d,function(_0x48ad89){if(_0x48ad89[_0x6828('0x37')]!==_0x6828('0x44')){var _0x3edc6a={};_0x3edc6a[_0x48ad89[_0x6828('0x32')]]={'$like':'%'+_0x5039aa[_0x6828('0x39')][_0x6828('0x43')]+'%'};return _0x3edc6a;}})});}_0x11ddaf=_[_0x6828('0x45')]({},_0x11ddaf,_0x5039aa[_0x6828('0x46')]);var _0x3d94f7={'where':_0x11ddaf[_0x6828('0x41')]};return db['UserProfile'][_0x6828('0x25')](_0x3d94f7)['then'](function(_0x5826e2){_0x249ad2['count']=_0x5826e2;if(_0x5039aa['query'][_0x6828('0x47')]){_0x11ddaf[_0x6828('0x48')]=[{'all':!![]}];}return db[_0x6828('0x35')]['findAll'](_0x11ddaf);})[_0x6828('0x2e')](function(_0x29fb82){_0x249ad2['rows']=_0x29fb82;return _0x249ad2;})[_0x6828('0x2e')](respondWithFilteredResult(_0x793399,_0x11ddaf))[_0x6828('0x49')](handleError(_0x793399,null));};exports[_0x6828('0x4a')]=function(_0x1a758a,_0x128ad4){var _0x4da7f7={'raw':![],'where':{'id':_0x1a758a[_0x6828('0x4b')]['id']}},_0x58a331={};_0x58a331[_0x6828('0x3d')]=_[_0x6828('0x3a')](db['UserProfile'][_0x6828('0x36')]);_0x58a331['query']=_[_0x6828('0x3a')](_0x1a758a[_0x6828('0x39')]);_0x58a331['filters']=_[_0x6828('0x3b')](_0x58a331['model'],_0x58a331[_0x6828('0x39')]);_0x4da7f7[_0x6828('0x3c')]=_[_0x6828('0x3b')](_0x58a331['model'],qs[_0x6828('0x3e')](_0x1a758a[_0x6828('0x39')][_0x6828('0x3e')]));_0x4da7f7[_0x6828('0x3c')]=_0x4da7f7[_0x6828('0x3c')][_0x6828('0x4c')]?_0x4da7f7[_0x6828('0x3c')]:_0x58a331[_0x6828('0x3d')];if(_0x1a758a[_0x6828('0x39')]['includeAll']){_0x4da7f7[_0x6828('0x48')]=[{'all':!![]}];}_0x4da7f7=_['merge']({},_0x4da7f7,_0x1a758a['options']);return db[_0x6828('0x35')][_0x6828('0x4d')](_0x4da7f7)[_0x6828('0x2e')](handleEntityNotFound(_0x128ad4,null))[_0x6828('0x2e')](respondWithResult(_0x128ad4,null))['catch'](handleError(_0x128ad4,null));};exports[_0x6828('0x4e')]=function(_0x3604a2,_0x257b7b){return db[_0x6828('0x35')][_0x6828('0x4e')](_0x3604a2[_0x6828('0x4f')],{})[_0x6828('0x2e')](respondWithResult(_0x257b7b,0xc9))[_0x6828('0x49')](handleError(_0x257b7b,null));};exports['clone']=function(_0x4c3509,_0x3ffb45){var _0x5ec1c7={'where':{'id':_0x4c3509[_0x6828('0x4b')]['id']}},_0x5844d8={};_0x5844d8[_0x6828('0x3d')]=_[_0x6828('0x3a')](db[_0x6828('0x35')][_0x6828('0x36')]);_0x5ec1c7[_0x6828('0x3c')]=_[_0x6828('0x3b')](_0x5844d8['model'],qs[_0x6828('0x3e')](_0x4c3509[_0x6828('0x39')][_0x6828('0x3e')]));_0x5ec1c7[_0x6828('0x3c')]=_0x5ec1c7[_0x6828('0x3c')][_0x6828('0x4c')]?_0x5ec1c7[_0x6828('0x3c')]:_0x5844d8[_0x6828('0x3d')];if(_0x4c3509[_0x6828('0x39')]['includeAll']){_0x5ec1c7[_0x6828('0x48')]=[{'all':!![]}];}_0x5ec1c7=_['merge']({},_0x5ec1c7,_0x4c3509[_0x6828('0x46')]);return db[_0x6828('0x35')]['find'](_0x5ec1c7)['then'](handleEntityNotFound(_0x3ffb45,null))['then'](function(_0x3864cd){if(_0x3864cd){var _0x5005ba=_0x3864cd[_0x6828('0x50')]({'plain':!![]});_0x5005ba=qs[_0x6828('0x51')](_0x5005ba,['id',_0x6828('0x52'),_0x6828('0x53'),_0x6828('0x54')]);_0x4c3509[_0x6828('0x4f')]=_['omit'](_0x4c3509[_0x6828('0x4f')],['id',_0x6828('0x52'),_0x6828('0x53')]);return db[_0x6828('0x55')][_0x6828('0x56')](function(_0x3be604){return db[_0x6828('0x35')][_0x6828('0x4e')](_[_0x6828('0x45')](_0x5005ba,_0x4c3509[_0x6828('0x4f')]),{'include':_0x4c3509[_0x6828('0x39')][_0x6828('0x47')]?[{'all':!![]}]:undefined,'transaction':_0x3be604})[_0x6828('0x2e')](function(_0x137d0d){var _0xb8f2cb=_0x137d0d['get']({'plain':!![]});return db[_0x6828('0x57')][_0x6828('0x58')]({'where':{'userProfileId':_0x4c3509[_0x6828('0x4b')]['id']},'raw':!![]})[_0x6828('0x2e')](function(_0x3b2472){if(_0x3b2472){return BPromise[_0x6828('0x59')](_0x3b2472,function(_0x200549){return new BPromise(function(_0x16a324,_0x36d1b5){if(_0x200549[_0x6828('0x5a')]===null||_0x200549['autoAssociation']===0x1)_0x16a324(null);return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x200549['id']},'raw':!![]})[_0x6828('0x2e')](function(_0x14060f){var _0x2d8b6c=_[_0x6828('0x34')](_0x14060f,function(_0x41860c){return qs[_0x6828('0x51')](_0x41860c,['id',_0x6828('0x52'),'updatedAt','sectionId']);});_0x16a324(_0x2d8b6c);})['catch'](function(_0x5b04a5){_0x36d1b5(_0x5b04a5);});})[_0x6828('0x2e')](function(_0x5a0452){var _0x5a3a30=qs[_0x6828('0x51')](_0x200549,['id','createdAt',_0x6828('0x53')]);_0x5a3a30[_0x6828('0x5b')]=_0xb8f2cb['id'];if(_0x5a0452)_0x5a3a30[_0x6828('0x5c')]=_0x5a0452;return _0x5a3a30;})[_0x6828('0x2e')](function(_0x34223c){return db[_0x6828('0x57')]['create'](_0x34223c,{'include':[{'model':db[_0x6828('0x5d')],'as':_0x6828('0x5c')}],'raw':!![],'transaction':_0x3be604});});})[_0x6828('0x2e')](function(){return _0xb8f2cb;});}});});});}})[_0x6828('0x2e')](respondWithResult(_0x3ffb45,0xc9))[_0x6828('0x49')](handleError(_0x3ffb45,null));};exports[_0x6828('0x2c')]=function(_0x4ae7dd,_0x44e117){if(_0x4ae7dd['body']['id']){delete _0x4ae7dd['body']['id'];}return db[_0x6828('0x35')][_0x6828('0x4d')]({'where':{'id':_0x4ae7dd['params']['id']}})['then'](handleEntityNotFound(_0x44e117,null))[_0x6828('0x2e')](saveUpdates(_0x4ae7dd[_0x6828('0x4f')],null))[_0x6828('0x2e')](respondWithResult(_0x44e117,null))[_0x6828('0x49')](handleError(_0x44e117,null));};exports[_0x6828('0x2d')]=function(_0x334b2e,_0x59f6b){return db['UserProfile'][_0x6828('0x4d')]({'where':{'id':_0x334b2e['params']['id']}})[_0x6828('0x2e')](handleEntityNotFound(_0x59f6b,null))[_0x6828('0x2e')](removeEntity(_0x59f6b,null))[_0x6828('0x49')](handleError(_0x59f6b,null));};exports[_0x6828('0x5e')]=function(_0x3f05f7,_0x4bab52){return db[_0x6828('0x35')][_0x6828('0x5e')]()['then'](respondWithResult(_0x4bab52,null))[_0x6828('0x49')](handleError(_0x4bab52,null));};exports[_0x6828('0x5f')]=function(_0x118cd5,_0x1d9b73){var _0x73c6b7=_0x118cd5[_0x6828('0x4f')];return db[_0x6828('0x35')][_0x6828('0x4d')]({'where':{'id':_0x118cd5[_0x6828('0x4b')]['id']}})[_0x6828('0x2e')](handleEntityNotFound(_0x1d9b73,null))[_0x6828('0x2e')](function(_0xd00ac0){if(_0xd00ac0){return db[_0x6828('0x55')][_0x6828('0x56')](function(_0x42e21c){return db[_0x6828('0x57')][_0x6828('0x2d')]({'where':{'userProfileId':_0x118cd5[_0x6828('0x4b')]['id'],'sectionId':_['map'](_0x73c6b7,function(_0x17e949){return _0x17e949[_0x6828('0x60')];})},'transaction':_0x42e21c})[_0x6828('0x2e')](function(){var _0x317187=_[_0x6828('0x34')](_0x73c6b7,function(_0x4f1172){_0x4f1172['userProfileId']=_0x118cd5[_0x6828('0x4b')]['id'];return _0x4f1172;});var _0xe50a89=[];return BPromise[_0x6828('0x59')](_0x317187,function(_0x47a8b8){return db[_0x6828('0x57')][_0x6828('0x4e')](_0x47a8b8,{'include':[{'model':db[_0x6828('0x5d')],'as':'Resources'}],'raw':!![],'transaction':_0x42e21c})[_0x6828('0x2e')](function(_0x440749){_0xe50a89[_0x6828('0x61')](_0x440749[_0x6828('0x50')]({'plain':!![]}));});})[_0x6828('0x2e')](function(){return _0xe50a89;});});});}})[_0x6828('0x2e')](function(_0x464537){return _0x464537;})[_0x6828('0x2e')](respondWithResult(_0x1d9b73,null))[_0x6828('0x49')](handleError(_0x1d9b73,null));};exports[_0x6828('0x62')]=function(_0x22408d,_0xa43bfc){var _0x11dc99;return db['UserProfile'][_0x6828('0x4d')]({'where':{'id':_0x22408d[_0x6828('0x4b')]['id']},'attributes':['id',_0x6828('0x32')]})[_0x6828('0x2e')](handleEntityNotFound(_0xa43bfc,null))[_0x6828('0x2e')](function(_0x3dfbe7){if(_0x3dfbe7){_0x11dc99=_0x3dfbe7;return db[_0x6828('0x57')][_0x6828('0x2d')]({'where':{'userProfileId':_0x22408d[_0x6828('0x4b')]['id'],'sectionId':_0x22408d['query'][_0x6828('0x63')]}});}})['then'](function(){return _0x11dc99;})[_0x6828('0x2e')](respondWithStatusCode(_0xa43bfc,null))[_0x6828('0x49')](handleError(_0xa43bfc,null));};exports[_0x6828('0x64')]=function(_0x5b4907,_0x19e536){var _0x5e37e1=[];var _0x54d4fc=[];return db[_0x6828('0x57')][_0x6828('0x58')]({'where':{'userProfileId':_0x5b4907['params']['id']},'raw':!![]})[_0x6828('0x2e')](function(_0x3d65b8){_0x5e37e1=_['filter'](_0x3d65b8,function(_0x3ff4f9){return _0x3ff4f9[_0x6828('0x65')]===0x1||_[_0x6828('0x66')]([0x3eb,0x709],_0x3ff4f9[_0x6828('0x60')]);});if(!_[_0x6828('0x67')](_0x5e37e1)){return _[_0x6828('0x34')](_0x5e37e1,function(_0x4afd5b){return _0x4afd5b['sectionId'];});}else{return;}})[_0x6828('0x2e')](function(_0x559511){if(_0x559511)_0x54d4fc=_0x559511;if(_[_0x6828('0x66')](_0x54d4fc,0x64)){var _0x1934a8=_[_0x6828('0x4d')](_0x5e37e1,{'sectionId':0x64});return hasDefaultDashboard(_0x1934a8)[_0x6828('0x2e')](function(_0x95d6e5){return _[_0x6828('0x34')](_0x5e37e1,function(_0x715a9b){if(_0x715a9b['sectionId']===0x64){_0x715a9b[_0x6828('0x68')]=_0x95d6e5;}return _0x715a9b;});});}else{return;}})[_0x6828('0x2e')](function(_0x3b8594){if(_0x3b8594)_0x5e37e1=_0x3b8594;if(_[_0x6828('0x66')](_0x54d4fc,0x3eb)){var _0x2f1293=_['find'](_0x5e37e1,{'sectionId':0x3eb});return getCustomDashboards(_0x2f1293)[_0x6828('0x2e')](function(_0x15e7eb){return _[_0x6828('0x34')](_0x5e37e1,function(_0x4c05ff){if(_0x2f1293[_0x6828('0x65')]){if(_0x4c05ff[_0x6828('0x60')]===0x3eb){_0x4c05ff[_0x6828('0x68')]=_0x15e7eb;}}else{if(_0x4c05ff[_0x6828('0x60')]===0x64){_0x4c05ff['subsections']=_0x15e7eb;}}return _0x4c05ff;});});}else{return;}})[_0x6828('0x2e')](function(_0x3d7563){if(_0x3d7563)_0x5e37e1=_0x3d7563;if(_[_0x6828('0x66')](_0x54d4fc,0x709)){var _0x435562=_['find'](_0x5e37e1,{'sectionId':0x709});return getPlugins(_0x435562)[_0x6828('0x2e')](function(_0x3487ab){if(_0x435562[_0x6828('0x65')]){return _[_0x6828('0x34')](_0x5e37e1,function(_0x3aa7e4){if(_0x3aa7e4[_0x6828('0x60')]===0x709){_0x3aa7e4[_0x6828('0x68')]=_0x3487ab;}return _0x3aa7e4;});}else{var _0x453995={'sectionId':0x76c,'enabled':0x1,'subsections':_0x3487ab};var _0x24dd6c=_[_0x6828('0x34')](_0x5e37e1);_0x24dd6c[_0x6828('0x61')](_0x453995);return _0x24dd6c;}});}else{return;}})[_0x6828('0x2e')](function(_0x7ff0a0){if(_0x7ff0a0)_0x5e37e1=_0x7ff0a0;return _[_0x6828('0x43')](_0x5e37e1,['enabled',0x1]);})[_0x6828('0x2e')](respondWithResult(_0x19e536,null))['catch'](handleError(_0x19e536,null));};function hasDefaultDashboard(_0x591a15){var _0x2288a1=[0x65];return new BPromise(function(_0x563fdc,_0x4f6ae4){try{if(_0x591a15['autoAssociation']){_0x563fdc(_0x2288a1);}else{return db['UserProfileResource'][_0x6828('0x69')]({'where':{'sectionId':_0x591a15['id']},'raw':!![]})[_0x6828('0x2e')](function(_0x4766ed){_0x4766ed?_0x563fdc(_0x2288a1):_0x563fdc();});}}catch(_0x2838f0){_0x4f6ae4(_0x2838f0);}});}function getCustomDashboards(_0x373df3){var _0x10695=[];return new BPromise(function(_0xdf7153,_0x12c469){try{if(_0x373df3['autoAssociation']){return db[_0x6828('0x6a')]['findAll']({'raw':!![]})[_0x6828('0x2e')](function(_0x457aa5){_0x457aa5[_0x6828('0x6b')](function(_0x5f246a){_0x10695[_0x6828('0x61')](_0x5f246a['id']+0x1869f);});_0xdf7153(_0x10695);});}else{return db['UserProfileResource'][_0x6828('0x58')]({'where':{'sectionId':_0x373df3['id']},'raw':!![]})['then'](function(_0x4f5121){_0x4f5121['forEach'](function(_0x23dac2){_0x10695[_0x6828('0x61')](_0x23dac2['resourceId']+0x1869f);});_0xdf7153(_0x10695);});}}catch(_0x3bae51){_0x12c469(_0x3bae51);}});}function getPlugins(_0x3949d3){var _0xfa87ce=[];return new BPromise(function(_0x582d2f,_0x188e70){try{if(_0x3949d3[_0x6828('0x5a')]){return db[_0x6828('0x6c')]['findAll']({'raw':!![]})[_0x6828('0x2e')](function(_0x29019c){_0x29019c[_0x6828('0x6b')](function(_0x2b4c6c){_0xfa87ce[_0x6828('0x61')](_0x2b4c6c['id']+0x15b38);});_0x582d2f(_0xfa87ce);});}else{return db['UserProfileResource'][_0x6828('0x58')]({'where':{'sectionId':_0x3949d3['id']},'raw':!![]})['then'](function(_0x5ed416){_0x5ed416['forEach'](function(_0x1ac5fd){_0xfa87ce[_0x6828('0x61')](_0x1ac5fd[_0x6828('0x6d')]+0x15b38);});_0x582d2f(_0xfa87ce);});}}catch(_0x3e9124){_0x188e70(_0x3e9124);}});}exports[_0x6828('0x6e')]=function(_0x1e4c90,_0x22e943){return db[_0x6828('0x35')][_0x6828('0x4d')]({'where':{'id':_0x1e4c90['params']['id']}})['then'](handleEntityNotFound(_0x22e943,null))[_0x6828('0x2e')](function(_0x52bda2){if(_0x52bda2){return db[_0x6828('0x55')][_0x6828('0x56')](function(_0x476058){return db['UserProfileSection'][_0x6828('0x58')]({'where':{'userProfileId':_0x1e4c90[_0x6828('0x4b')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x32f30f){if(_0x32f30f){return db[_0x6828('0x57')][_0x6828('0x2d')]({'where':{'userProfileId':_0x1e4c90['params']['id'],'id':_[_0x6828('0x34')](_0x32f30f,function(_0x2b5801){return _0x2b5801['id'];})},'transaction':_0x476058});}})[_0x6828('0x2e')](function(_0x5b1188){var _0x11ea15=_[_0x6828('0x34')](_0x1e4c90[_0x6828('0x4f')],function(_0x46d063){_0x46d063[_0x6828('0x5b')]=_0x1e4c90[_0x6828('0x4b')]['id'];return _0x46d063;});return db[_0x6828('0x57')]['bulkCreate'](_0x11ea15,{'raw':!![],'transaction':_0x476058});})[_0x6828('0x2e')](function(_0x3ed187){var _0x15d830=_[_0x6828('0x43')](_[_0x6828('0x34')](_0x3ed187,function(_0x45ee58){return _0x45ee58[_0x6828('0x50')]({'plain':!![]});}),{'includeAll':![]});if(_0x15d830){return db[_0x6828('0x57')][_0x6828('0x58')]({'where':{'userProfileId':_0x1e4c90[_0x6828('0x4b')]['id'],'sectionId':_[_0x6828('0x34')](_0x15d830,function(_0x1b1865){return _0x1b1865[_0x6828('0x60')];})},'attributes':['id',_0x6828('0x60')],'raw':!![]})['then'](function(_0x5b33f9){var _0x41fb68=_[_0x6828('0x34')](_0x1e4c90[_0x6828('0x4f')],function(_0x425073){_0x425073[_0x6828('0x5b')]=_0x1e4c90[_0x6828('0x4b')]['id'];return _0x425073;});return db[_0x6828('0x5d')][_0x6828('0x6f')](_0x41fb68,{'raw':!![],'transaction':_0x476058});});}})['catch'](handleError(_0x22e943,null));});}})[_0x6828('0x2e')](function(_0x2693bd){var _0x40c7b3=_[_0x6828('0x34')](_0x2693bd,function(_0x3615d4){return _0x3615d4[_0x6828('0x50')]({'plain':!![]});});})[_0x6828('0x2e')](respondWithResult(_0x22e943,null))[_0x6828('0x49')](handleError(_0x22e943,null));};exports[_0x6828('0x70')]=function(_0x515487,_0x2fc118,_0x295e70){return db[_0x6828('0x35')]['find']({'where':{'id':_0x515487[_0x6828('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2fc118,null))[_0x6828('0x2e')](function(_0x4d55fc){if(_0x4d55fc){return _0x4d55fc[_0x6828('0x70')](_0x515487['query'][_0x6828('0x63')]);}})[_0x6828('0x2e')](respondWithStatusCode(_0x2fc118,null))[_0x6828('0x49')](handleError(_0x2fc118,null));};exports['getResources']=function(_0x4c024d,_0x19b145){var _0x1ac218={};if(!_0x4c024d[_0x6828('0x39')][_0x6828('0x71')])throw new Error(_0x6828('0x72'));if(!_0x4c024d[_0x6828('0x39')][_0x6828('0x3f')](_0x6828('0x73'))){_0x1ac218[_0x6828('0x24')]=qs[_0x6828('0x24')](_0x4c024d['query']['limit']);_0x1ac218[_0x6828('0x22')]=qs['offset'](_0x4c024d[_0x6828('0x39')]['offset']);}return db[_0x6828('0x35')]['find']({'where':{'id':_0x4c024d[_0x6828('0x4b')]['id']}})[_0x6828('0x2e')](function(_0x10e8b3){if(!_0x10e8b3)throw new Error(_0x6828('0x74')+_0x4c024d[_0x6828('0x4b')]['id']);return db[_0x6828('0x35')][_0x6828('0x75')](_0x4c024d);})[_0x6828('0x2e')](respondWithFilteredResult(_0x19b145,_0x1ac218))[_0x6828('0x49')](handleError(_0x19b145,null));};
\ No newline at end of file
index 2c0a32b..b83fc5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf963=['emit','hook','exports','events','setMaxListeners','save'];(function(_0x4c3b62,_0x49ba96){var _0x48a666=function(_0x3661db){while(--_0x3661db){_0x4c3b62['push'](_0x4c3b62['shift']());}};_0x48a666(++_0x49ba96);}(_0xf963,0x11d));var _0x3f96=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xf963[_0x1d1779];return _0x2377e9;};'use strict';var EventEmitter=require(_0x3f96('0x0'));var UserProfile=require('../../mysqldb')['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x3f96('0x1')](0x0);var events={'afterCreate':_0x3f96('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x1f30a1){return function(_0x1e7cb9,_0x3a6815,_0x1a91ab){UserProfileEvents['emit'](_0x1f30a1+':'+_0x1e7cb9['id'],_0x1e7cb9);UserProfileEvents[_0x3f96('0x3')](_0x1f30a1,_0x1e7cb9);_0x1a91ab(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0x3f96('0x4')](e,emitEvent(event));}}module[_0x3f96('0x5')]=UserProfileEvents;
\ No newline at end of file
+var _0x7eff=['hasOwnProperty','hook','exports','../../mysqldb','UserProfile','setMaxListeners','update','remove','emit'];(function(_0x2f97ec,_0x20480d){var _0x15df31=function(_0x5bb666){while(--_0x5bb666){_0x2f97ec['push'](_0x2f97ec['shift']());}};_0x15df31(++_0x20480d);}(_0x7eff,0x162));var _0xf7ef=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7eff[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0xf7ef('0x0'))['db'][_0xf7ef('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xf7ef('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xf7ef('0x3'),'afterDestroy':_0xf7ef('0x4')};function emitEvent(_0xc0c7ba){return function(_0x4db614,_0x58a651,_0x4a4573){UserProfileEvents[_0xf7ef('0x5')](_0xc0c7ba+':'+_0x4db614['id'],_0x4db614);UserProfileEvents[_0xf7ef('0x5')](_0xc0c7ba,_0x4db614);_0x4a4573(null);};}for(var e in events){if(events[_0xf7ef('0x6')](e)){var event=events[e];UserProfile[_0xf7ef('0x7')](e,emitEvent(event));}}module[_0xf7ef('0x8')]=UserProfileEvents;
\ No newline at end of file
index fe0436e..5f97d00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a6b=['fields','hasOwnProperty','limit','offset','sort','where','key','VIRTUAL','foreignKey','forEach','merge','options','AnalyticExtractedReport','includeAll','reportType','reportId','DefaultReports','CustomReports','count','Tag','Tags','color','ThroughTags','tag','include','rows','openTabs','true','chat','sms','dataValues','fax','mail','openchannel','lodash','exports','models','filter','field','associatedResources','map','catch','value','model','findAll','name','resolve','UserProfileResource','then','resourceId','type','toLowerCase','squareprojects','SquareProject','odbc','childModel','SquareOdbc','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','contacts','CmContact','Lists','lists','CmList','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','VoiceContext','VoiceMail','VoiceRecording','Agents','membername','User','agent','VoiceQueues','queue','VoiceQueue','QueueCampaigns','outbound','musiconholds','VoiceMusicOnHold','chanspies','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','mailaccounts','MailAccount','mailsubstatuses','openchannelqueues','OpenchannelQueue','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','Team','queuecampaigns','users','agents','telephones','Users','role','user','Telephones','zendeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','Disposition','customdashboards','Dashboard','intervals','Interval','pauses','scheduler','Schedule','tags','templates','triggers','Trigger','Trunk','Variable','plugins','Plugin','metrics','charAt','toUpperCase','Sequelize','QueryTypes','SELECT','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','UserProfile','user_profiles','section','Invalid\x20section\x20\x27','isEmpty','length','push','UserProfileSection','find','params','all','ignore','union','autoAssociation','keys','filters'];(function(_0x343a87,_0x287af9){var _0x432c43=function(_0x45cb62){while(--_0x45cb62){_0x343a87['push'](_0x343a87['shift']());}};_0x432c43(++_0x287af9);}(_0x0a6b,0x18e));var _0xb0a6=function(_0x27787d,_0x3c832a){_0x27787d=_0x27787d-0x0;var _0x2ec19c=_0x0a6b[_0x27787d];return _0x2ec19c;};'use strict';var _=require(_0xb0a6('0x0'));var attributes=require('./userProfile.attributes');var qs=require('../../components/parsers/qs');var squel=require('squel');module[_0xb0a6('0x1')]=function(_0x50d3d5){var _0x2245d7=_0x50d3d5[_0xb0a6('0x2')];function _0x1d3b78(_0x544a64,_0x102ecd){return new Promise(function(_0x4cc3ae,_0xbbdf89){if(!_0x102ecd)return _0x4cc3ae(null);var _0x415e9e=_0x102ecd['filter']?{[_0x102ecd[_0xb0a6('0x3')][_0xb0a6('0x4')]]:_0x102ecd[_0xb0a6('0x3')]['value']}:undefined;return _0x2245d7[_0x544a64]['findAll']({'where':_0x415e9e,'raw':!![]})['then'](function(_0x2ded05){_0x102ecd[_0xb0a6('0x5')]=_[_0xb0a6('0x6')](_0x2ded05,'id');_0x4cc3ae(_0x102ecd);})[_0xb0a6('0x7')](function(_0x5252ed){_0xbbdf89(_0x5252ed);});});}function _0x35c956(_0x19b144,_0x5d1bf0){return new Promise(function(_0x23eade,_0x24e4fd){var _0x304167=_0x19b144[_0xb0a6('0x3')]?{[_0x19b144[_0xb0a6('0x3')][_0xb0a6('0x4')]]:_0x19b144[_0xb0a6('0x3')][_0xb0a6('0x8')]}:undefined;return _0x2245d7[_0x19b144[_0xb0a6('0x9')]][_0xb0a6('0xa')]({'where':_0x304167,'raw':!![]})['then'](function(_0x2b801a){_0x5d1bf0['associatedResources']=_[_0xb0a6('0x6')](_0x2b801a,function(_0x5351ed){return _0x5351ed[_0xb0a6('0xb')];});_0x23eade(_0x5d1bf0);})['catch'](function(_0x1d837f){_0x24e4fd(_0x1d837f);});});}function _0x382c2f(_0x93243e,_0x5673ad,_0x56b594){if(!_0x5673ad)return Promise[_0xb0a6('0xc')](null);return new Promise(function(_0x295b53,_0x59bc9c){return _0x2245d7[_0xb0a6('0xd')][_0xb0a6('0xa')]({'where':{'sectionId':_0x5673ad['id']},'raw':!![]})[_0xb0a6('0xe')](function(_0x567dd5){if(_0x93243e[_0xb0a6('0x4')]&&_0x93243e[_0xb0a6('0x4')]!=='id'){_0x5673ad[_0xb0a6('0x5')]=_[_0xb0a6('0x6')](_0x567dd5,function(_0x4406d0){return _0x4406d0[_0x93243e[_0xb0a6('0x4')]];});}else{if(_0x56b594==='AnalyticExtractedReport'){_0x5673ad[_0xb0a6('0x5')]=_[_0xb0a6('0x6')](_0x567dd5,function(_0x2d0fca){return{'id':_0x2d0fca[_0xb0a6('0xf')],'type':_0x2d0fca[_0xb0a6('0x10')]};});}else{_0x5673ad[_0xb0a6('0x5')]=_[_0xb0a6('0x6')](_0x567dd5,function(_0x16e053){return _0x16e053['resourceId'];});}}_0x295b53(_0x5673ad);})[_0xb0a6('0x7')](function(_0x5c6e66){_0x59bc9c(_0x5c6e66);});});}function _0x1322ec(_0x2f1e97,_0x4997df){var _0x4aa68d={'parentSections':[]};switch(_0x2f1e97[_0xb0a6('0x11')]()){case _0xb0a6('0x12'):_0x4aa68d['childModel']=_0xb0a6('0x13');break;case _0xb0a6('0x14'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x16');break;case'squarerecordings':_0x4aa68d['childModel']=_0xb0a6('0x17');_0x4aa68d[_0xb0a6('0x18')]=[{'name':_0xb0a6('0x19'),'field':'name','foreignKey':_0xb0a6('0x1a')}];break;case _0xb0a6('0x1b'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x1c');break;case _0xb0a6('0x1d'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x1e');_0x4aa68d[_0xb0a6('0x18')]=[{'name':_0xb0a6('0x1f'),'field':'id','foreignKey':'ListId'}];break;case _0xb0a6('0x20'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x21');break;case'companies':_0x4aa68d[_0xb0a6('0x15')]='CmCompany';break;case _0xb0a6('0x22'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x23');break;case _0xb0a6('0x24'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x25');break;case _0xb0a6('0x26'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x27');break;case _0xb0a6('0x28'):_0x4aa68d['childModel']='FaxQueue';break;case _0xb0a6('0x29'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x2a');break;case _0xb0a6('0x2b'):case _0xb0a6('0x2c'):case _0xb0a6('0x2d'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x2e');break;case'contexts':_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x2f');break;case'voicemails':_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x30');break;case'voicerecordings':_0x4aa68d['childModel']=_0xb0a6('0x31');_0x4aa68d[_0xb0a6('0x18')]=[{'name':_0xb0a6('0x32'),'field':_0xb0a6('0xb'),'foreignKey':_0xb0a6('0x33'),'model':_0xb0a6('0x34'),'filter':{'field':'role','value':[_0xb0a6('0x35')]}},{'name':'Telephones','field':_0xb0a6('0xb'),'foreignKey':_0xb0a6('0x33'),'model':'User','filter':{'field':'role','value':['telephone']}},{'name':_0xb0a6('0x36'),'field':_0xb0a6('0xb'),'foreignKey':_0xb0a6('0x37'),'model':_0xb0a6('0x38'),'filter':{'field':_0xb0a6('0x10'),'value':['inbound']}},{'name':_0xb0a6('0x39'),'field':_0xb0a6('0xb'),'foreignKey':_0xb0a6('0x37'),'model':_0xb0a6('0x38'),'filter':{'field':'type','value':[_0xb0a6('0x3a')]}}];break;case _0xb0a6('0x3b'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x3c');break;case _0xb0a6('0x3d'):_0x4aa68d['childModel']='VoiceChanSpy';break;case _0xb0a6('0x3e'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x3f');break;case _0xb0a6('0x40'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x41');break;case _0xb0a6('0x42'):_0x4aa68d[_0xb0a6('0x15')]='MailQueue';break;case _0xb0a6('0x43'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x44');break;case _0xb0a6('0x45'):_0x4aa68d[_0xb0a6('0x15')]='MailSubstatus';break;case _0xb0a6('0x46'):_0x4aa68d['childModel']=_0xb0a6('0x47');break;case'openchannelaccounts':_0x4aa68d[_0xb0a6('0x15')]='OpenchannelAccount';break;case _0xb0a6('0x48'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x49');break;case _0xb0a6('0x4a'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x4b');break;case _0xb0a6('0x4c'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x4d');break;case _0xb0a6('0x4e'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x4f');break;case'teams':_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x50');break;case'voicequeues':case _0xb0a6('0x51'):_0x4aa68d['childModel']=_0xb0a6('0x38');if(_0x4997df){_0x4aa68d[_0xb0a6('0x18')]=[{'name':_0xb0a6('0x36')},{'name':'QueueCampaigns'}];}break;case _0xb0a6('0x52'):case _0xb0a6('0x53'):case _0xb0a6('0x54'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x34');if(_0x4997df){_0x4aa68d[_0xb0a6('0x18')]=[{'name':_0xb0a6('0x55'),'filter':{'field':_0xb0a6('0x56'),'value':['admin',_0xb0a6('0x57')]},'ignore':!![]},{'name':_0xb0a6('0x32')},{'name':_0xb0a6('0x58')}];}break;case _0xb0a6('0x59'):_0x4aa68d['childModel']='ZendeskAccount';break;case'salesforceaccounts':_0x4aa68d['childModel']='SalesforceAccount';break;case'freshdeskaccounts':_0x4aa68d['childModel']=_0xb0a6('0x5a');break;case _0xb0a6('0x5b'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x5c');break;case _0xb0a6('0x5d'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x5e');break;case _0xb0a6('0x5f'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x60');break;case _0xb0a6('0x61'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x34');break;case _0xb0a6('0x62'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x63');break;case'dispositions':_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x64');break;case _0xb0a6('0x65'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x66');break;case _0xb0a6('0x67'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x68');break;case _0xb0a6('0x69'):_0x4aa68d['childModel']='Pause';break;case _0xb0a6('0x6a'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x6b');break;case'sounds':_0x4aa68d[_0xb0a6('0x15')]='Sound';break;case _0xb0a6('0x6c'):_0x4aa68d[_0xb0a6('0x15')]='Tag';break;case _0xb0a6('0x6d'):_0x4aa68d[_0xb0a6('0x15')]='Template';break;case _0xb0a6('0x6e'):_0x4aa68d['childModel']=_0xb0a6('0x6f');break;case'trunks':_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x70');break;case'variables':_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x71');break;case _0xb0a6('0x72'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x73');break;case'extractedreports':_0x4aa68d[_0xb0a6('0x15')]='AnalyticExtractedReport';_0x4aa68d[_0xb0a6('0x18')]=[{'name':'Reports','field':'id','foreignKey':'reportId'}];break;case _0xb0a6('0x74'):_0x4aa68d[_0xb0a6('0x15')]='AnalyticMetric';break;}return _0x4aa68d;}function _0x1deac4(_0x59c08a,_0x2fe48f){var _0x3a8d71=_0x59c08a[_0xb0a6('0x75')](0x0)[_0xb0a6('0x76')]()+_0x59c08a['slice'](0x1);var _0x384d9f={'type':_0x2245d7[_0xb0a6('0x77')][_0xb0a6('0x78')][_0xb0a6('0x79')],'raw':!![]};return new Promise(function(_0x21da0d,_0x4123e8){var _0x51b614=squel['select']()[_0xb0a6('0x4')]('ui.'+_0x3a8d71+_0xb0a6('0x7a'),'id')[_0xb0a6('0x4')](_0xb0a6('0x7b'))['from'](_0xb0a6('0x7c')+_0x59c08a+_0xb0a6('0x7d'),'ui')['where'](_0xb0a6('0x7e'),_0x2fe48f['id']);return _0x2245d7[_0xb0a6('0x7f')][_0xb0a6('0x80')](_0x51b614[_0xb0a6('0x81')](),_0x384d9f)[_0xb0a6('0xe')](function(_0x578c7a){_0x2fe48f[_0x3a8d71+_0xb0a6('0x82')]=_0x578c7a;_0x21da0d(_0x578c7a);})[_0xb0a6('0x7')](function(_0x4dbb6e){_0x4123e8(_0x4dbb6e);});});}return _0x50d3d5[_0xb0a6('0x83')](_0xb0a6('0x84'),attributes,{'tableName':_0xb0a6('0x85'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x1e8c10){var _0x173a44={'raw':![],'where':{}};var _0x3739b1={};var _0x1415e5={'count':0x0,'rows':[]};var _0x2b9800=_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0x86')];var _0x32abed=_0x1e8c10[_0xb0a6('0x80')]['mergeResources']||![];var _0x281f99=_0x1322ec(_0x2b9800,_0x32abed);if(!_0x281f99['childModel'])throw new Error(_0xb0a6('0x87')+_0x2b9800+'\x27');var _0x1178d9=[{'name':_0x2b9800}];if(!_[_0xb0a6('0x88')](_0x281f99[_0xb0a6('0x18')]))_0x1178d9=_0x281f99['parentSections'];var _0x22521a=[];for(var _0x1363e9=0x0;_0x1363e9<_0x1178d9[_0xb0a6('0x89')];_0x1363e9++){_0x22521a[_0xb0a6('0x8a')](_0x2245d7[_0xb0a6('0x8b')][_0xb0a6('0x8c')]({'where':{'userProfileId':_0x1e8c10[_0xb0a6('0x8d')]['id'],'name':_0x1178d9[_0x1363e9][_0xb0a6('0xb')]},'raw':!![]}));}return Promise[_0xb0a6('0x8e')](_0x22521a)[_0xb0a6('0xe')](function(_0x100b4f){var _0x2f0139=_[_0xb0a6('0x3')](_0x100b4f,function(_0x2f1b5a){return _0x2f1b5a?_0x2f1b5a:undefined;});var _0x3e3060=_[_0xb0a6('0x3')](_0x1178d9,[_0xb0a6('0x8f'),!![]]);var _0x3ce4c1=_['isEmpty'](_0x2f0139)&&_[_0xb0a6('0x88')](_0x3e3060)?null:_[_0xb0a6('0x90')](_0x3e3060,_0x2f0139);if(!_0x3ce4c1)return null;var _0x2b5ec8=[];for(var _0x35e3fb=0x0;_0x35e3fb<_0x3ce4c1[_0xb0a6('0x89')];_0x35e3fb++){var _0x37a77d=_['find'](_0x1178d9,function(_0x49a7fa){return _0x3ce4c1[_0x35e3fb]?_0x49a7fa[_0xb0a6('0xb')]===_0x3ce4c1[_0x35e3fb][_0xb0a6('0xb')]:null;});if(_0x37a77d){if(_0x3ce4c1[_0x35e3fb][_0xb0a6('0x8f')]){_0x2b5ec8[_0xb0a6('0x8a')](_0x1d3b78(_0x281f99['childModel'],_0x3ce4c1[_0x35e3fb]));}else{if(!_0x3ce4c1[_0x35e3fb][_0xb0a6('0x91')]){_0x2b5ec8[_0xb0a6('0x8a')](_0x382c2f(_0x37a77d,_0x3ce4c1[_0x35e3fb],_0x281f99[_0xb0a6('0x15')]));}else{if(_0x37a77d[_0xb0a6('0x9')]){_0x2b5ec8[_0xb0a6('0x8a')](_0x35c956(_0x37a77d,_0x3ce4c1[_0x35e3fb]));}}}}}return Promise[_0xb0a6('0x8e')](_0x2b5ec8);})[_0xb0a6('0xe')](function(_0x5a1887){var _0xea7f55=_0x5a1887;var _0xb21bfb=null;if(_0xea7f55){_0xb21bfb=_0xea7f55['length']===0x1?_0xea7f55[0x0]:null;}if(!_0xb21bfb&&!_0xea7f55)return _0x1415e5;var _0x48a60f=_0x2245d7[_0x281f99[_0xb0a6('0x15')]]['rawAttributes'];_0x3739b1[_0xb0a6('0x9')]=_[_0xb0a6('0x92')](_0x48a60f);_0x3739b1[_0xb0a6('0x80')]=_[_0xb0a6('0x92')](_0x1e8c10['query']);_0x3739b1[_0xb0a6('0x93')]=_['intersection'](_0x3739b1[_0xb0a6('0x9')],_0x3739b1[_0xb0a6('0x80')]);_0x173a44['attributes']=_['intersection'](_0x3739b1[_0xb0a6('0x9')],qs[_0xb0a6('0x94')](_0x1e8c10[_0xb0a6('0x80')]['fields']));_0x173a44['attributes']=_0x173a44['attributes'][_0xb0a6('0x89')]?_0x173a44['attributes']:_0x3739b1[_0xb0a6('0x9')];if(!_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0x95')]('nolimit')){_0x173a44[_0xb0a6('0x96')]=qs[_0xb0a6('0x96')](_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0x96')]);_0x173a44[_0xb0a6('0x97')]=qs[_0xb0a6('0x97')](_0x1e8c10[_0xb0a6('0x80')]['offset']);}_0x173a44['order']=qs[_0xb0a6('0x98')](_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0x98')]);_0x173a44[_0xb0a6('0x99')]=qs['filters'](_['pick'](_0x1e8c10[_0xb0a6('0x80')],_0x3739b1[_0xb0a6('0x93')]));if(_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0x3')]){_0x173a44[_0xb0a6('0x99')]=_['merge'](_0x173a44[_0xb0a6('0x99')],{'$or':_[_0xb0a6('0x6')](_0x48a60f,function(_0x53f05d){if(_0x53f05d[_0xb0a6('0x10')][_0xb0a6('0x9a')]!==_0xb0a6('0x9b')){var _0x42634d={};_0x42634d[_0x53f05d[_0xb0a6('0x4')]]={'$like':'%'+_0x1e8c10[_0xb0a6('0x80')]['filter']+'%'};return _0x42634d;}})});}var _0x34a4de=[];var _0x10ad85=null;var _0x285767={};if(_0xb21bfb){_0x10ad85=_[_0xb0a6('0x8c')](_0x1178d9,[_0xb0a6('0xb'),_0xb21bfb['name']]);if(_0x10ad85['field']){_0x285767={};if(_0x281f99[_0xb0a6('0x15')]==='AnalyticExtractedReport'){_0x285767[_0x10ad85[_0xb0a6('0x9c')]]=_['map'](_0xb21bfb[_0xb0a6('0x5')],'id');}else{_0x285767[_0x10ad85['foreignKey']]=_0xb21bfb[_0xb0a6('0x5')];}_0x34a4de[_0xb0a6('0x8a')](_0x285767);}else{_0x173a44[_0xb0a6('0x99')]['id']=_0xb21bfb[_0xb0a6('0x5')];}}else{for(var _0x3e1c43=0x0;_0x3e1c43<_0xea7f55[_0xb0a6('0x89')];_0x3e1c43++){_0x10ad85=_[_0xb0a6('0x8c')](_0x1178d9,[_0xb0a6('0xb'),_0xea7f55[_0x3e1c43][_0xb0a6('0xb')]]);if(_0x10ad85[_0xb0a6('0x4')]){_0x285767={};_0x285767[_0x10ad85['foreignKey']]=_0xea7f55[_0x3e1c43]['associatedResources'];_0x34a4de['push'](_0x285767);}else{if(!_0x173a44[_0xb0a6('0x99')]['id'])_0x173a44[_0xb0a6('0x99')]['id']=[];_0xea7f55[_0x3e1c43][_0xb0a6('0x5')][_0xb0a6('0x9d')](function(_0x51b473){_0x173a44[_0xb0a6('0x99')]['id'][_0xb0a6('0x8a')](_0x51b473);});}}}if(!_[_0xb0a6('0x88')](_0x34a4de)){_0x173a44[_0xb0a6('0x99')]=_[_0xb0a6('0x9e')](_0x173a44['where'],{'$and':{'$or':_0x34a4de}});}_0x173a44=_['merge']({},_0x173a44,_0x1e8c10[_0xb0a6('0x9f')]);if(_0xb21bfb&&!_0xb21bfb[_0xb0a6('0x91')]&&_0x281f99[_0xb0a6('0x15')]===_0xb0a6('0xa0')){if(_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0xa1')]){_0x173a44['include']=[{'all':!![]}];}return _0x2245d7[_0x281f99['childModel']]['findAll'](_0x173a44)[_0xb0a6('0xe')](function(_0x40cd4d){var _0x39149a=[];_0x40cd4d[_0xb0a6('0x9d')](function(_0xd3d3df){var _0x167303;switch(_0xd3d3df[_0xb0a6('0xa2')]){case'default':_0x167303=_[_0xb0a6('0x8c')](_0xb21bfb[_0xb0a6('0x5')],function(_0x1c3a58){return _0x1c3a58['id']===_0xd3d3df[_0xb0a6('0xa3')]&&_0x1c3a58[_0xb0a6('0x10')]===_0xb0a6('0xa4');});break;case'custom':_0x167303=_[_0xb0a6('0x8c')](_0xb21bfb[_0xb0a6('0x5')],function(_0x20ec12){return _0x20ec12['id']===_0xd3d3df[_0xb0a6('0xa3')]&&_0x20ec12[_0xb0a6('0x10')]===_0xb0a6('0xa5');});break;}if(_0x167303)_0x39149a[_0xb0a6('0x8a')](_0xd3d3df);});_0x1415e5['count']=_0x39149a[_0xb0a6('0x89')];_0x1415e5['rows']=_0x39149a;return _0x1415e5;});}else{return _0x2245d7[_0x281f99[_0xb0a6('0x15')]]['count']({'where':_0x173a44[_0xb0a6('0x99')]})[_0xb0a6('0xe')](function(_0x24f82a){_0x1415e5[_0xb0a6('0xa6')]=_0x24f82a;if(_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0xa1')]){if(_0x281f99[_0xb0a6('0x15')]===_0xb0a6('0x1e')){_0x173a44['include']=[{'model':_0x2245d7[_0xb0a6('0xa7')],'as':_0xb0a6('0xa8'),'attributes':['id','name',_0xb0a6('0xa9')],'required':_0x1e8c10[_0xb0a6('0x80')]['tag']?!![]:![]},{'model':_0x2245d7['Tag'],'as':_0xb0a6('0xaa'),'attributes':['id','name',_0xb0a6('0xa9')],'through':_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0xab')]?{'attributes':[],'where':{'TagId':_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0xab')]||undefined}}:{},'required':_0x1e8c10[_0xb0a6('0x80')]['tag']?!![]:![]}];}else{_0x173a44[_0xb0a6('0xac')]=[{'all':!![]}];}}return _0x2245d7[_0x281f99[_0xb0a6('0x15')]]['findAll'](_0x173a44);})['then'](function(_0xc729cd){_0x1415e5[_0xb0a6('0xad')]=_0xc729cd;if(_0x2b9800===_0xb0a6('0x32')&&_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0xae')]===_0xb0a6('0xaf')){var _0x47d4f7=[];for(var _0x1ae3d8=0x0;_0x1ae3d8<_0x1415e5['rows'][_0xb0a6('0x89')];_0x1ae3d8++){_0x47d4f7[_0xb0a6('0x8a')](_0x1deac4(_0xb0a6('0xb0'),_0x1415e5['rows'][_0x1ae3d8]['dataValues']));_0x47d4f7['push'](_0x1deac4(_0xb0a6('0xb1'),_0x1415e5[_0xb0a6('0xad')][_0x1ae3d8][_0xb0a6('0xb2')]));_0x47d4f7[_0xb0a6('0x8a')](_0x1deac4(_0xb0a6('0xb3'),_0x1415e5[_0xb0a6('0xad')][_0x1ae3d8][_0xb0a6('0xb2')]));_0x47d4f7[_0xb0a6('0x8a')](_0x1deac4(_0xb0a6('0xb4'),_0x1415e5[_0xb0a6('0xad')][_0x1ae3d8][_0xb0a6('0xb2')]));_0x47d4f7[_0xb0a6('0x8a')](_0x1deac4(_0xb0a6('0xb5'),_0x1415e5[_0xb0a6('0xad')][_0x1ae3d8]['dataValues']));_0x47d4f7[_0xb0a6('0x8a')](_0x1deac4('whatsapp',_0x1415e5[_0xb0a6('0xad')][_0x1ae3d8][_0xb0a6('0xb2')]));}return Promise['all'](_0x47d4f7)[_0xb0a6('0xe')](function(){return _0x1415e5;});}return _0x1415e5;});}});}}});};
\ No newline at end of file
+var _0xa456=['Agents','membername','role','agent','Telephones','User','telephone','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','outbound','musiconholds','VoiceMusicOnHold','voiceprefixes','VoicePrefix','ivrcampaigns','mailqueues','mailaccounts','MailAccount','mailsubstatuses','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','WhatsappQueue','whatsappaccounts','WhatsappAccount','Team','voicequeues','queuecampaigns','users','telephones','admin','user','zendeskaccounts','ZendeskAccount','SalesforceAccount','freshdeskaccounts','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','Disposition','customdashboards','Interval','pauses','scheduler','Schedule','sounds','Sound','tags','Template','Trigger','trunks','Trunk','Variable','extractedreports','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','InteractionId','ui.createdAt','from','_interactions','where','sequelize','query','OpenTabs','define','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','push','UserProfileSection','find','params','all','ignore','union','autoAssociation','keys','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','sort','pick','filters','merge','VIRTUAL','foreignKey','forEach','options','includeAll','include','reportType','default','custom','CustomReports','count','rows','Tag','Tags','color','ThroughTags','tag','chat','dataValues','sms','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','models','filter','field','value','then','associatedResources','map','catch','model','findAll','name','resolve','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','childModel','SquareProject','odbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','JscriptyProject','contacts','CmContact','Lists','ListId','CmList','companies','CmCompany','CmCustomField','chatqueues','faxqueues','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','VoiceRecording'];(function(_0x2876a7,_0x581331){var _0x3d12ec=function(_0x3120d5){while(--_0x3120d5){_0x2876a7['push'](_0x2876a7['shift']());}};_0x3d12ec(++_0x581331);}(_0xa456,0x142));var _0x6a45=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0xa456[_0x42bdad];return _0x122626;};'use strict';var _=require(_0x6a45('0x0'));var attributes=require(_0x6a45('0x1'));var qs=require(_0x6a45('0x2'));var squel=require(_0x6a45('0x3'));module['exports']=function(_0x3bfbe6){var _0x206f6b=_0x3bfbe6[_0x6a45('0x4')];function _0x500c72(_0x1f0701,_0x40acad){return new Promise(function(_0x1e5882,_0x14da6b){if(!_0x40acad)return _0x1e5882(null);var _0x4dfbfa=_0x40acad[_0x6a45('0x5')]?{[_0x40acad[_0x6a45('0x5')][_0x6a45('0x6')]]:_0x40acad[_0x6a45('0x5')][_0x6a45('0x7')]}:undefined;return _0x206f6b[_0x1f0701]['findAll']({'where':_0x4dfbfa,'raw':!![]})[_0x6a45('0x8')](function(_0x517040){_0x40acad[_0x6a45('0x9')]=_[_0x6a45('0xa')](_0x517040,'id');_0x1e5882(_0x40acad);})[_0x6a45('0xb')](function(_0x147679){_0x14da6b(_0x147679);});});}function _0x1249e4(_0x4ff9ae,_0x553a67){return new Promise(function(_0xe62823,_0x465b59){var _0x4b7f6d=_0x4ff9ae['filter']?{[_0x4ff9ae['filter'][_0x6a45('0x6')]]:_0x4ff9ae[_0x6a45('0x5')][_0x6a45('0x7')]}:undefined;return _0x206f6b[_0x4ff9ae[_0x6a45('0xc')]][_0x6a45('0xd')]({'where':_0x4b7f6d,'raw':!![]})['then'](function(_0x563c3b){_0x553a67[_0x6a45('0x9')]=_[_0x6a45('0xa')](_0x563c3b,function(_0x48fe0c){return _0x48fe0c[_0x6a45('0xe')];});_0xe62823(_0x553a67);})[_0x6a45('0xb')](function(_0x3fab82){_0x465b59(_0x3fab82);});});}function _0x13adc0(_0x548634,_0x54507b,_0x49023f){if(!_0x54507b)return Promise[_0x6a45('0xf')](null);return new Promise(function(_0x391f81,_0x360b7f){return _0x206f6b['UserProfileResource'][_0x6a45('0xd')]({'where':{'sectionId':_0x54507b['id']},'raw':!![]})[_0x6a45('0x8')](function(_0x3439c8){if(_0x548634['field']&&_0x548634['field']!=='id'){_0x54507b['associatedResources']=_[_0x6a45('0xa')](_0x3439c8,function(_0x2ed1e5){return _0x2ed1e5[_0x548634['field']];});}else{if(_0x49023f===_0x6a45('0x10')){_0x54507b[_0x6a45('0x9')]=_['map'](_0x3439c8,function(_0x4f7110){return{'id':_0x4f7110[_0x6a45('0x11')],'type':_0x4f7110[_0x6a45('0x12')]};});}else{_0x54507b[_0x6a45('0x9')]=_[_0x6a45('0xa')](_0x3439c8,function(_0x487666){return _0x487666['resourceId'];});}}_0x391f81(_0x54507b);})[_0x6a45('0xb')](function(_0x59af4b){_0x360b7f(_0x59af4b);});});}function _0x11290c(_0x22373c,_0x25a380){var _0x3ad898={'parentSections':[]};switch(_0x22373c[_0x6a45('0x13')]()){case _0x6a45('0x14'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x16');break;case _0x6a45('0x17'):_0x3ad898[_0x6a45('0x15')]='SquareOdbc';break;case _0x6a45('0x18'):_0x3ad898['childModel']=_0x6a45('0x19');_0x3ad898[_0x6a45('0x1a')]=[{'name':_0x6a45('0x1b'),'field':_0x6a45('0xe'),'foreignKey':_0x6a45('0x1c')}];break;case'projects':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x1d');break;case _0x6a45('0x1e'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x1f');_0x3ad898[_0x6a45('0x1a')]=[{'name':_0x6a45('0x20'),'field':'id','foreignKey':_0x6a45('0x21')}];break;case'lists':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x22');break;case _0x6a45('0x23'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x24');break;case'globalcustomfields':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x25');break;case _0x6a45('0x26'):_0x3ad898[_0x6a45('0x15')]='ChatQueue';break;case'chatwebsites':_0x3ad898[_0x6a45('0x15')]='ChatWebsite';break;case _0x6a45('0x27'):_0x3ad898['childModel']=_0x6a45('0x28');break;case _0x6a45('0x29'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x2a');break;case _0x6a45('0x2b'):case _0x6a45('0x2c'):case _0x6a45('0x2d'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x2e');break;case _0x6a45('0x2f'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x30');break;case _0x6a45('0x31'):_0x3ad898['childModel']=_0x6a45('0x32');break;case'voicerecordings':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x33');_0x3ad898[_0x6a45('0x1a')]=[{'name':_0x6a45('0x34'),'field':_0x6a45('0xe'),'foreignKey':_0x6a45('0x35'),'model':'User','filter':{'field':_0x6a45('0x36'),'value':[_0x6a45('0x37')]}},{'name':_0x6a45('0x38'),'field':_0x6a45('0xe'),'foreignKey':_0x6a45('0x35'),'model':_0x6a45('0x39'),'filter':{'field':'role','value':[_0x6a45('0x3a')]}},{'name':_0x6a45('0x3b'),'field':'name','foreignKey':_0x6a45('0x3c'),'model':_0x6a45('0x3d'),'filter':{'field':_0x6a45('0x12'),'value':[_0x6a45('0x3e')]}},{'name':_0x6a45('0x3f'),'field':'name','foreignKey':_0x6a45('0x3c'),'model':_0x6a45('0x3d'),'filter':{'field':_0x6a45('0x12'),'value':[_0x6a45('0x40')]}}];break;case _0x6a45('0x41'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x42');break;case'chanspies':_0x3ad898[_0x6a45('0x15')]='VoiceChanSpy';break;case _0x6a45('0x43'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x44');break;case _0x6a45('0x45'):_0x3ad898['childModel']='Campaign';break;case _0x6a45('0x46'):_0x3ad898[_0x6a45('0x15')]='MailQueue';break;case _0x6a45('0x47'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x48');break;case _0x6a45('0x49'):_0x3ad898['childModel']='MailSubstatus';break;case'openchannelqueues':_0x3ad898['childModel']=_0x6a45('0x4a');break;case _0x6a45('0x4b'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x4c');break;case _0x6a45('0x4d'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x4e');break;case _0x6a45('0x4f'):_0x3ad898['childModel']=_0x6a45('0x50');break;case'whatsappqueues':_0x3ad898['childModel']=_0x6a45('0x51');break;case _0x6a45('0x52'):_0x3ad898['childModel']=_0x6a45('0x53');break;case'teams':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x54');break;case _0x6a45('0x55'):case _0x6a45('0x56'):_0x3ad898['childModel']=_0x6a45('0x3d');if(_0x25a380){_0x3ad898[_0x6a45('0x1a')]=[{'name':_0x6a45('0x3b')},{'name':_0x6a45('0x3f')}];}break;case _0x6a45('0x57'):case'agents':case _0x6a45('0x58'):_0x3ad898['childModel']=_0x6a45('0x39');if(_0x25a380){_0x3ad898[_0x6a45('0x1a')]=[{'name':'Users','filter':{'field':_0x6a45('0x36'),'value':[_0x6a45('0x59'),_0x6a45('0x5a')]},'ignore':!![]},{'name':_0x6a45('0x34')},{'name':'Telephones'}];}break;case _0x6a45('0x5b'):_0x3ad898['childModel']=_0x6a45('0x5c');break;case'salesforceaccounts':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x5d');break;case _0x6a45('0x5e'):_0x3ad898[_0x6a45('0x15')]='FreshdeskAccount';break;case _0x6a45('0x5f'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x60');break;case _0x6a45('0x61'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x62');break;case _0x6a45('0x63'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x64');break;case _0x6a45('0x65'):_0x3ad898['childModel']=_0x6a45('0x39');break;case _0x6a45('0x66'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x67');break;case'dispositions':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x68');break;case _0x6a45('0x69'):_0x3ad898['childModel']='Dashboard';break;case'intervals':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x6a');break;case _0x6a45('0x6b'):_0x3ad898[_0x6a45('0x15')]='Pause';break;case _0x6a45('0x6c'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x6d');break;case _0x6a45('0x6e'):_0x3ad898['childModel']=_0x6a45('0x6f');break;case _0x6a45('0x70'):_0x3ad898[_0x6a45('0x15')]='Tag';break;case'templates':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x71');break;case'triggers':_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x72');break;case _0x6a45('0x73'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x74');break;case'variables':_0x3ad898['childModel']=_0x6a45('0x75');break;case'plugins':_0x3ad898['childModel']='Plugin';break;case _0x6a45('0x76'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x10');_0x3ad898[_0x6a45('0x1a')]=[{'name':'Reports','field':'id','foreignKey':_0x6a45('0x77')}];break;case _0x6a45('0x78'):_0x3ad898[_0x6a45('0x15')]=_0x6a45('0x79');break;}return _0x3ad898;}function _0x4c9a93(_0x239c37,_0x504ccf){var _0x1461d3=_0x239c37[_0x6a45('0x7a')](0x0)[_0x6a45('0x7b')]()+_0x239c37[_0x6a45('0x7c')](0x1);var _0x25bbc4={'type':_0x206f6b[_0x6a45('0x7d')][_0x6a45('0x7e')][_0x6a45('0x7f')],'raw':!![]};return new Promise(function(_0x141546,_0x4a6f4c){var _0x13c9d9=squel[_0x6a45('0x80')]()[_0x6a45('0x6')]('ui.'+_0x1461d3+_0x6a45('0x81'),'id')['field'](_0x6a45('0x82'))[_0x6a45('0x83')]('user_has_'+_0x239c37+_0x6a45('0x84'),'ui')[_0x6a45('0x85')]('ui.UserId\x20=\x20?',_0x504ccf['id']);return _0x206f6b[_0x6a45('0x86')][_0x6a45('0x87')](_0x13c9d9['toString'](),_0x25bbc4)['then'](function(_0x26c53c){_0x504ccf[_0x1461d3+_0x6a45('0x88')]=_0x26c53c;_0x141546(_0x26c53c);})[_0x6a45('0xb')](function(_0x30128d){_0x4a6f4c(_0x30128d);});});}return _0x3bfbe6[_0x6a45('0x89')]('UserProfile',attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x7fc1b2){var _0x5faae8={'raw':![],'where':{}};var _0x50248a={};var _0x475479={'count':0x0,'rows':[]};var _0x29cd12=_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0x8a')];var _0x4f20e2=_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0x8b')]||![];var _0x3388f1=_0x11290c(_0x29cd12,_0x4f20e2);if(!_0x3388f1[_0x6a45('0x15')])throw new Error(_0x6a45('0x8c')+_0x29cd12+'\x27');var _0x353eae=[{'name':_0x29cd12}];if(!_[_0x6a45('0x8d')](_0x3388f1[_0x6a45('0x1a')]))_0x353eae=_0x3388f1[_0x6a45('0x1a')];var _0x6f0ed7=[];for(var _0x403711=0x0;_0x403711<_0x353eae[_0x6a45('0x8e')];_0x403711++){_0x6f0ed7[_0x6a45('0x8f')](_0x206f6b[_0x6a45('0x90')][_0x6a45('0x91')]({'where':{'userProfileId':_0x7fc1b2[_0x6a45('0x92')]['id'],'name':_0x353eae[_0x403711][_0x6a45('0xe')]},'raw':!![]}));}return Promise[_0x6a45('0x93')](_0x6f0ed7)['then'](function(_0x323ac2){var _0x4e24b0=_[_0x6a45('0x5')](_0x323ac2,function(_0x57316d){return _0x57316d?_0x57316d:undefined;});var _0x332666=_[_0x6a45('0x5')](_0x353eae,[_0x6a45('0x94'),!![]]);var _0x9d8810=_[_0x6a45('0x8d')](_0x4e24b0)&&_[_0x6a45('0x8d')](_0x332666)?null:_[_0x6a45('0x95')](_0x332666,_0x4e24b0);if(!_0x9d8810)return null;var _0x42c67a=[];for(var _0x113784=0x0;_0x113784<_0x9d8810['length'];_0x113784++){var _0x13baf6=_['find'](_0x353eae,function(_0x763420){return _0x9d8810[_0x113784]?_0x763420[_0x6a45('0xe')]===_0x9d8810[_0x113784][_0x6a45('0xe')]:null;});if(_0x13baf6){if(_0x9d8810[_0x113784]['ignore']){_0x42c67a[_0x6a45('0x8f')](_0x500c72(_0x3388f1[_0x6a45('0x15')],_0x9d8810[_0x113784]));}else{if(!_0x9d8810[_0x113784][_0x6a45('0x96')]){_0x42c67a[_0x6a45('0x8f')](_0x13adc0(_0x13baf6,_0x9d8810[_0x113784],_0x3388f1[_0x6a45('0x15')]));}else{if(_0x13baf6[_0x6a45('0xc')]){_0x42c67a[_0x6a45('0x8f')](_0x1249e4(_0x13baf6,_0x9d8810[_0x113784]));}}}}}return Promise['all'](_0x42c67a);})['then'](function(_0x8327cd){var _0x30a802=_0x8327cd;var _0x67e87f=null;if(_0x30a802){_0x67e87f=_0x30a802[_0x6a45('0x8e')]===0x1?_0x30a802[0x0]:null;}if(!_0x67e87f&&!_0x30a802)return _0x475479;var _0x77d0aa=_0x206f6b[_0x3388f1[_0x6a45('0x15')]]['rawAttributes'];_0x50248a[_0x6a45('0xc')]=_[_0x6a45('0x97')](_0x77d0aa);_0x50248a['query']=_[_0x6a45('0x97')](_0x7fc1b2['query']);_0x50248a['filters']=_['intersection'](_0x50248a[_0x6a45('0xc')],_0x50248a[_0x6a45('0x87')]);_0x5faae8[_0x6a45('0x98')]=_['intersection'](_0x50248a[_0x6a45('0xc')],qs[_0x6a45('0x99')](_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0x99')]));_0x5faae8[_0x6a45('0x98')]=_0x5faae8[_0x6a45('0x98')][_0x6a45('0x8e')]?_0x5faae8['attributes']:_0x50248a['model'];if(!_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0x9a')](_0x6a45('0x9b'))){_0x5faae8[_0x6a45('0x9c')]=qs[_0x6a45('0x9c')](_0x7fc1b2['query'][_0x6a45('0x9c')]);_0x5faae8[_0x6a45('0x9d')]=qs[_0x6a45('0x9d')](_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0x9d')]);}_0x5faae8[_0x6a45('0x9e')]=qs[_0x6a45('0x9f')](_0x7fc1b2['query'][_0x6a45('0x9f')]);_0x5faae8[_0x6a45('0x85')]=qs['filters'](_[_0x6a45('0xa0')](_0x7fc1b2[_0x6a45('0x87')],_0x50248a[_0x6a45('0xa1')]));if(_0x7fc1b2[_0x6a45('0x87')]['filter']){_0x5faae8[_0x6a45('0x85')]=_[_0x6a45('0xa2')](_0x5faae8['where'],{'$or':_[_0x6a45('0xa')](_0x77d0aa,function(_0x5b99ec){if(_0x5b99ec[_0x6a45('0x12')]['key']!==_0x6a45('0xa3')){var _0x38e379={};_0x38e379[_0x5b99ec[_0x6a45('0x6')]]={'$like':'%'+_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0x5')]+'%'};return _0x38e379;}})});}var _0x59349e=[];var _0x8b1a91=null;var _0x3189b7={};if(_0x67e87f){_0x8b1a91=_[_0x6a45('0x91')](_0x353eae,[_0x6a45('0xe'),_0x67e87f['name']]);if(_0x8b1a91[_0x6a45('0x6')]){_0x3189b7={};if(_0x3388f1[_0x6a45('0x15')]===_0x6a45('0x10')){_0x3189b7[_0x8b1a91['foreignKey']]=_['map'](_0x67e87f[_0x6a45('0x9')],'id');}else{_0x3189b7[_0x8b1a91['foreignKey']]=_0x67e87f[_0x6a45('0x9')];}_0x59349e[_0x6a45('0x8f')](_0x3189b7);}else{_0x5faae8[_0x6a45('0x85')]['id']=_0x67e87f['associatedResources'];}}else{for(var _0x5470c7=0x0;_0x5470c7<_0x30a802['length'];_0x5470c7++){_0x8b1a91=_[_0x6a45('0x91')](_0x353eae,[_0x6a45('0xe'),_0x30a802[_0x5470c7][_0x6a45('0xe')]]);if(_0x8b1a91[_0x6a45('0x6')]){_0x3189b7={};_0x3189b7[_0x8b1a91[_0x6a45('0xa4')]]=_0x30a802[_0x5470c7]['associatedResources'];_0x59349e[_0x6a45('0x8f')](_0x3189b7);}else{if(!_0x5faae8['where']['id'])_0x5faae8['where']['id']=[];_0x30a802[_0x5470c7][_0x6a45('0x9')][_0x6a45('0xa5')](function(_0x272cc2){_0x5faae8[_0x6a45('0x85')]['id']['push'](_0x272cc2);});}}}if(!_[_0x6a45('0x8d')](_0x59349e)){_0x5faae8['where']=_[_0x6a45('0xa2')](_0x5faae8[_0x6a45('0x85')],{'$and':{'$or':_0x59349e}});}_0x5faae8=_[_0x6a45('0xa2')]({},_0x5faae8,_0x7fc1b2[_0x6a45('0xa6')]);if(_0x67e87f&&!_0x67e87f[_0x6a45('0x96')]&&_0x3388f1[_0x6a45('0x15')]===_0x6a45('0x10')){if(_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0xa7')]){_0x5faae8[_0x6a45('0xa8')]=[{'all':!![]}];}return _0x206f6b[_0x3388f1[_0x6a45('0x15')]][_0x6a45('0xd')](_0x5faae8)[_0x6a45('0x8')](function(_0x520063){var _0x57b43b=[];_0x520063[_0x6a45('0xa5')](function(_0x5204ec){var _0x1acb5a;switch(_0x5204ec[_0x6a45('0xa9')]){case _0x6a45('0xaa'):_0x1acb5a=_[_0x6a45('0x91')](_0x67e87f[_0x6a45('0x9')],function(_0x186e57){return _0x186e57['id']===_0x5204ec[_0x6a45('0x77')]&&_0x186e57[_0x6a45('0x12')]==='DefaultReports';});break;case _0x6a45('0xab'):_0x1acb5a=_['find'](_0x67e87f['associatedResources'],function(_0x4cf559){return _0x4cf559['id']===_0x5204ec[_0x6a45('0x77')]&&_0x4cf559[_0x6a45('0x12')]===_0x6a45('0xac');});break;}if(_0x1acb5a)_0x57b43b[_0x6a45('0x8f')](_0x5204ec);});_0x475479[_0x6a45('0xad')]=_0x57b43b['length'];_0x475479[_0x6a45('0xae')]=_0x57b43b;return _0x475479;});}else{return _0x206f6b[_0x3388f1[_0x6a45('0x15')]][_0x6a45('0xad')]({'where':_0x5faae8[_0x6a45('0x85')]})[_0x6a45('0x8')](function(_0x637030){_0x475479[_0x6a45('0xad')]=_0x637030;if(_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0xa7')]){if(_0x3388f1['childModel']==='CmContact'){_0x5faae8['include']=[{'model':_0x206f6b[_0x6a45('0xaf')],'as':_0x6a45('0xb0'),'attributes':['id',_0x6a45('0xe'),_0x6a45('0xb1')],'required':_0x7fc1b2['query']['tag']?!![]:![]},{'model':_0x206f6b['Tag'],'as':_0x6a45('0xb2'),'attributes':['id','name','color'],'through':_0x7fc1b2['query'][_0x6a45('0xb3')]?{'attributes':[],'where':{'TagId':_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0xb3')]||undefined}}:{},'required':_0x7fc1b2[_0x6a45('0x87')][_0x6a45('0xb3')]?!![]:![]}];}else{_0x5faae8['include']=[{'all':!![]}];}}return _0x206f6b[_0x3388f1[_0x6a45('0x15')]]['findAll'](_0x5faae8);})[_0x6a45('0x8')](function(_0x1a5207){_0x475479[_0x6a45('0xae')]=_0x1a5207;if(_0x29cd12===_0x6a45('0x34')&&_0x7fc1b2[_0x6a45('0x87')]['openTabs']==='true'){var _0x5adfdb=[];for(var _0x46d79d=0x0;_0x46d79d<_0x475479[_0x6a45('0xae')][_0x6a45('0x8e')];_0x46d79d++){_0x5adfdb[_0x6a45('0x8f')](_0x4c9a93(_0x6a45('0xb4'),_0x475479[_0x6a45('0xae')][_0x46d79d][_0x6a45('0xb5')]));_0x5adfdb[_0x6a45('0x8f')](_0x4c9a93(_0x6a45('0xb6'),_0x475479['rows'][_0x46d79d][_0x6a45('0xb5')]));_0x5adfdb[_0x6a45('0x8f')](_0x4c9a93(_0x6a45('0xb7'),_0x475479['rows'][_0x46d79d][_0x6a45('0xb5')]));_0x5adfdb['push'](_0x4c9a93(_0x6a45('0xb8'),_0x475479[_0x6a45('0xae')][_0x46d79d][_0x6a45('0xb5')]));_0x5adfdb[_0x6a45('0x8f')](_0x4c9a93(_0x6a45('0xb9'),_0x475479['rows'][_0x46d79d][_0x6a45('0xb5')]));_0x5adfdb['push'](_0x4c9a93(_0x6a45('0xba'),_0x475479[_0x6a45('0xae')][_0x46d79d][_0x6a45('0xb5')]));}return Promise[_0x6a45('0x93')](_0x5adfdb)[_0x6a45('0x8')](function(){return _0x475479;});}return _0x475479;});}});}}});};
\ No newline at end of file
index b09aaec..5b94b94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5581=['request\x20sent','debug','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','register','request','then','info','UserProfile,\x20%s,\x20%s'];(function(_0x39db87,_0x4d3e84){var _0x2940b7=function(_0x3ba52a){while(--_0x3ba52a){_0x39db87['push'](_0x39db87['shift']());}};_0x2940b7(++_0x4d3e84);}(_0x5581,0x115));var _0x1558=function(_0x44bcb0,_0x235aa9){_0x44bcb0=_0x44bcb0-0x0;var _0xfaf881=_0x5581[_0x44bcb0];return _0xfaf881;};'use strict';var _=require(_0x1558('0x0'));var util=require('util');var moment=require(_0x1558('0x1'));var BPromise=require(_0x1558('0x2'));var rs=require(_0x1558('0x3'));var fs=require('fs');var Redis=require(_0x1558('0x4'));var db=require(_0x1558('0x5'))['db'];var utils=require(_0x1558('0x6'));var logger=require('../../config/logger')(_0x1558('0x7'));var config=require(_0x1558('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1558('0x9')][_0x1558('0xa')]({'port':0x232a});config['redis']=_[_0x1558('0xb')](config[_0x1558('0xc')],{'host':_0x1558('0xd'),'port':0x18eb});var socket=require(_0x1558('0xe'))(new Redis(config[_0x1558('0xc')]));require('./userProfile.socket')[_0x1558('0xf')](socket);function respondWithRpcPromise(_0xe26278,_0x5f43a1,_0x296193){return new BPromise(function(_0x30f42b,_0x4e97c8){return client[_0x1558('0x10')](_0xe26278,_0x296193)[_0x1558('0x11')](function(_0x2bb578){logger[_0x1558('0x12')](_0x1558('0x13'),_0x5f43a1,_0x1558('0x14'));logger[_0x1558('0x15')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x5f43a1,_0x1558('0x14'),JSON[_0x1558('0x16')](_0x2bb578));if(_0x2bb578[_0x1558('0x17')]){if(_0x2bb578[_0x1558('0x17')][_0x1558('0x18')]===0x1f4){logger[_0x1558('0x17')](_0x1558('0x13'),_0x5f43a1,_0x2bb578[_0x1558('0x17')][_0x1558('0x19')]);return _0x4e97c8(_0x2bb578['error'][_0x1558('0x19')]);}logger[_0x1558('0x17')](_0x1558('0x13'),_0x5f43a1,_0x2bb578['error'][_0x1558('0x19')]);return _0x30f42b(_0x2bb578[_0x1558('0x17')][_0x1558('0x19')]);}else{logger[_0x1558('0x12')](_0x1558('0x13'),_0x5f43a1,'request\x20sent');_0x30f42b(_0x2bb578['result'][_0x1558('0x19')]);}})[_0x1558('0x1a')](function(_0xaa0a82){logger[_0x1558('0x17')](_0x1558('0x13'),_0x5f43a1,_0xaa0a82);_0x4e97c8(_0xaa0a82);});});}
\ No newline at end of file
+var _0xcb04=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash'];(function(_0x12dd6b,_0x6d995f){var _0x3860f2=function(_0x3836f8){while(--_0x3836f8){_0x12dd6b['push'](_0x12dd6b['shift']());}};_0x3860f2(++_0x6d995f);}(_0xcb04,0x9a));var _0x4cb0=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xcb04[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x4cb0('0x0'));var util=require(_0x4cb0('0x1'));var moment=require(_0x4cb0('0x2'));var BPromise=require(_0x4cb0('0x3'));var rs=require(_0x4cb0('0x4'));var fs=require('fs');var Redis=require(_0x4cb0('0x5'));var db=require(_0x4cb0('0x6'))['db'];var utils=require(_0x4cb0('0x7'));var logger=require(_0x4cb0('0x8'))(_0x4cb0('0x9'));var config=require('../../config/environment');var jayson=require(_0x4cb0('0xa'));var client=jayson[_0x4cb0('0xb')][_0x4cb0('0xc')]({'port':0x232a});config[_0x4cb0('0xd')]=_[_0x4cb0('0xe')](config[_0x4cb0('0xd')],{'host':_0x4cb0('0xf'),'port':0x18eb});var socket=require(_0x4cb0('0x10'))(new Redis(config[_0x4cb0('0xd')]));require(_0x4cb0('0x11'))[_0x4cb0('0x12')](socket);function respondWithRpcPromise(_0x10d679,_0x442a53,_0x24170c){return new BPromise(function(_0xc313bc,_0x57738){return client[_0x4cb0('0x13')](_0x10d679,_0x24170c)[_0x4cb0('0x14')](function(_0x5d5c99){logger[_0x4cb0('0x15')](_0x4cb0('0x16'),_0x442a53,_0x4cb0('0x17'));logger[_0x4cb0('0x18')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x442a53,_0x4cb0('0x17'),JSON[_0x4cb0('0x19')](_0x5d5c99));if(_0x5d5c99[_0x4cb0('0x1a')]){if(_0x5d5c99[_0x4cb0('0x1a')][_0x4cb0('0x1b')]===0x1f4){logger[_0x4cb0('0x1a')](_0x4cb0('0x16'),_0x442a53,_0x5d5c99[_0x4cb0('0x1a')][_0x4cb0('0x1c')]);return _0x57738(_0x5d5c99['error'][_0x4cb0('0x1c')]);}logger[_0x4cb0('0x1a')](_0x4cb0('0x16'),_0x442a53,_0x5d5c99[_0x4cb0('0x1a')]['message']);return _0xc313bc(_0x5d5c99['error'][_0x4cb0('0x1c')]);}else{logger[_0x4cb0('0x15')](_0x4cb0('0x16'),_0x442a53,_0x4cb0('0x17'));_0xc313bc(_0x5d5c99[_0x4cb0('0x1d')][_0x4cb0('0x1c')]);}})[_0x4cb0('0x1e')](function(_0x4cd6b5){logger['error'](_0x4cb0('0x16'),_0x442a53,_0x4cd6b5);_0x57738(_0x4cd6b5);});});}
\ No newline at end of file
index aa39471..38ec39a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x458e=['length','save','remove','update','removeListener'];(function(_0x6cbe6d,_0x37bba3){var _0x25e1c9=function(_0x2f8868){while(--_0x2f8868){_0x6cbe6d['push'](_0x6cbe6d['shift']());}};_0x25e1c9(++_0x37bba3);}(_0x458e,0xfb));var _0xe458=function(_0x814e66,_0x4142c8){_0x814e66=_0x814e66-0x0;var _0x474eb8=_0x458e[_0x814e66];return _0x474eb8;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=[_0xe458('0x0'),_0xe458('0x1'),_0xe458('0x2')];function createListener(_0x5405ad,_0x11bd62){return function(_0xfb150f){_0x11bd62['emit'](_0x5405ad,_0xfb150f);};}function removeListener(_0x4a271e,_0x6951f4){return function(){UserProfileEvents[_0xe458('0x3')](_0x4a271e,_0x6951f4);};}exports['register']=function(_0x221035){for(var _0x58578c=0x0,_0x161902=events[_0xe458('0x4')];_0x58578c<_0x161902;_0x58578c++){var _0x38d6fa=events[_0x58578c];var _0x168a46=createListener('userProfile:'+_0x38d6fa,_0x221035);UserProfileEvents['on'](_0x38d6fa,_0x168a46);}};
\ No newline at end of file
+var _0xeac2=['removeListener','length','userProfile:','./userProfile.events','save','remove','update','emit'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xeac2,0xcb));var _0x2eac=function(_0xbf12f,_0x2a2aed){_0xbf12f=_0xbf12f-0x0;var _0x7175dd=_0xeac2[_0xbf12f];return _0x7175dd;};'use strict';var UserProfileEvents=require(_0x2eac('0x0'));var events=[_0x2eac('0x1'),_0x2eac('0x2'),_0x2eac('0x3')];function createListener(_0x27a58f,_0x41aff9){return function(_0x1cd4f1){_0x41aff9[_0x2eac('0x4')](_0x27a58f,_0x1cd4f1);};}function removeListener(_0x47846f,_0x3ff3c3){return function(){UserProfileEvents[_0x2eac('0x5')](_0x47846f,_0x3ff3c3);};}exports['register']=function(_0x1f98b6){for(var _0x5200ae=0x0,_0x59b744=events[_0x2eac('0x6')];_0x5200ae<_0x59b744;_0x5200ae++){var _0x44099d=events[_0x5200ae];var _0x556702=createListener(_0x2eac('0x7')+_0x44099d,_0x1f98b6);UserProfileEvents['on'](_0x44099d,_0x556702);}};
\ No newline at end of file
index f12e793..adf5fb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd70=['update','delete','destroy','multer','util','express','Router','../../components/auth/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x2a5099,_0x329e92){var _0x2802f1=function(_0x53f99b){while(--_0x53f99b){_0x2a5099['push'](_0x2a5099['shift']());}};_0x2802f1(++_0x329e92);}(_0xcd70,0xdf));var _0x0cd7=function(_0x4fd60f,_0x4475ec){_0x4fd60f=_0x4fd60f-0x0;var _0x310d18=_0xcd70[_0x4fd60f];return _0x310d18;};'use strict';var multer=require(_0x0cd7('0x0'));var util=require(_0x0cd7('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0cd7('0x2'));var router=express[_0x0cd7('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0cd7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x0cd7('0x5'));var controller=require(_0x0cd7('0x6'));router[_0x0cd7('0x7')]('/',auth[_0x0cd7('0x8')](),controller[_0x0cd7('0x9')]);router['get'](_0x0cd7('0xa'),auth[_0x0cd7('0x8')](),controller[_0x0cd7('0xb')]);router['get'](_0x0cd7('0xc'),auth[_0x0cd7('0x8')](),controller[_0x0cd7('0xd')]);router[_0x0cd7('0xe')]('/',auth[_0x0cd7('0x8')](),controller[_0x0cd7('0xf')]);router[_0x0cd7('0x10')](_0x0cd7('0xc'),auth['isAuthenticated'](),controller[_0x0cd7('0x11')]);router[_0x0cd7('0x12')]('/:id',auth[_0x0cd7('0x8')](),controller[_0x0cd7('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x8a21=['destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfileResource.controller','get','isAuthenticated','/describe','describe','/:id','post','create','put','update'];(function(_0x1af05b,_0x5134b5){var _0x5be7cc=function(_0x2d4ac0){while(--_0x2d4ac0){_0x1af05b['push'](_0x1af05b['shift']());}};_0x5be7cc(++_0x5134b5);}(_0x8a21,0x1a3));var _0x18a2=function(_0x493985,_0xabbee5){_0x493985=_0x493985-0x0;var _0x532b94=_0x8a21[_0x493985];return _0x532b94;};'use strict';var multer=require('multer');var util=require(_0x18a2('0x0'));var path=require(_0x18a2('0x1'));var timeout=require(_0x18a2('0x2'));var express=require(_0x18a2('0x3'));var router=express[_0x18a2('0x4')]();var fs_extra=require(_0x18a2('0x5'));var auth=require(_0x18a2('0x6'));var interaction=require(_0x18a2('0x7'));var config=require('../../config/environment');var controller=require(_0x18a2('0x8'));router[_0x18a2('0x9')]('/',auth[_0x18a2('0xa')](),controller['index']);router['get'](_0x18a2('0xb'),auth[_0x18a2('0xa')](),controller[_0x18a2('0xc')]);router['get'](_0x18a2('0xd'),auth[_0x18a2('0xa')](),controller['show']);router[_0x18a2('0xe')]('/',auth['isAuthenticated'](),controller[_0x18a2('0xf')]);router[_0x18a2('0x10')](_0x18a2('0xd'),auth[_0x18a2('0xa')](),controller[_0x18a2('0x11')]);router['delete'](_0x18a2('0xd'),auth[_0x18a2('0xa')](),controller[_0x18a2('0x12')]);module['exports']=router;
\ No newline at end of file
index c428ef2..34fe71b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89e7=['exports','STRING','INTEGER','sequelize'];(function(_0xc277c7,_0x2b03a9){var _0x13863f=function(_0x16c83f){while(--_0x16c83f){_0xc277c7['push'](_0xc277c7['shift']());}};_0x13863f(++_0x2b03a9);}(_0x89e7,0x13b));var _0x789e=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x89e7[_0x29d94e];return _0x106237;};'use strict';var Sequelize=require(_0x789e('0x0'));module[_0x789e('0x1')]={'name':{'type':Sequelize[_0x789e('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x789e('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x789e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xb16b=['INTEGER','sequelize','exports','STRING'];(function(_0x39f5c0,_0x9fda67){var _0x20a95e=function(_0x17e091){while(--_0x17e091){_0x39f5c0['push'](_0x39f5c0['shift']());}};_0x20a95e(++_0x9fda67);}(_0xb16b,0x1f1));var _0xbb16=function(_0x4327fe,_0x4f8040){_0x4327fe=_0x4327fe-0x0;var _0x138651=_0xb16b[_0x4327fe];return _0x138651;};'use strict';var Sequelize=require(_0xbb16('0x0'));module[_0xbb16('0x1')]={'name':{'type':Sequelize[_0xbb16('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xbb16('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xbb16('0x2')],'allowNull':![]}};
\ No newline at end of file
index 84106a2..c48520c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','show','params','includeAll','include','find','catch','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','then','destroy','end','error','name','send','UserProfileResource','rawAttributes','fieldName','type','key','map','query','keys'];(function(_0x229128,_0x273558){var _0x1875b9=function(_0x275e35){while(--_0x275e35){_0x229128['push'](_0x229128['shift']());}};_0x1875b9(++_0x273558);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x588a58,_0x3dd4e0){_0x588a58=_0x588a58-0x0;var _0x4b7ab2=_0xc6ac[_0x588a58];return _0x4b7ab2;};'use strict';var emlformat=require(_0xcc6a('0x0'));var rimraf=require(_0xcc6a('0x1'));var zipdir=require(_0xcc6a('0x2'));var jsonpatch=require(_0xcc6a('0x3'));var rp=require(_0xcc6a('0x4'));var moment=require(_0xcc6a('0x5'));var BPromise=require(_0xcc6a('0x6'));var Mustache=require(_0xcc6a('0x7'));var util=require(_0xcc6a('0x8'));var path=require(_0xcc6a('0x9'));var sox=require(_0xcc6a('0xa'));var csv=require(_0xcc6a('0xb'));var ejs=require(_0xcc6a('0xc'));var fs=require('fs');var fs_extra=require(_0xcc6a('0xd'));var _=require('lodash');var squel=require(_0xcc6a('0xe'));var crypto=require(_0xcc6a('0xf'));var jsforce=require(_0xcc6a('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xcc6a('0xb'));var querystring=require(_0xcc6a('0x11'));var Papa=require(_0xcc6a('0x12'));var Redis=require(_0xcc6a('0x13'));var authService=require(_0xcc6a('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xcc6a('0x15'));var hardwareService=require(_0xcc6a('0x16'));var logger=require(_0xcc6a('0x17'))('api');var utils=require(_0xcc6a('0x18'));var config=require(_0xcc6a('0x19'));var licenseUtil=require(_0xcc6a('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x59ce6d,_0xf0f6d5){_0xf0f6d5=_0xf0f6d5||0xcc;return function(_0x211444){if(_0x211444){return _0x59ce6d[_0xcc6a('0x1b')](_0xf0f6d5);}return _0x59ce6d['status'](_0xf0f6d5)['end']();};}function respondWithResult(_0x369dc1,_0xcb9e2e){_0xcb9e2e=_0xcb9e2e||0xc8;return function(_0x43710d){if(_0x43710d){return _0x369dc1[_0xcc6a('0x1c')](_0xcb9e2e)[_0xcc6a('0x1d')](_0x43710d);}};}function respondWithFilteredResult(_0x337ec5,_0x4133fa){return function(_0x403b18){if(_0x403b18){var _0x56ffb0=typeof _0x4133fa['offset']==='undefined'&&typeof _0x4133fa[_0xcc6a('0x1e')]===_0xcc6a('0x1f');var _0x307f2a=_0x403b18[_0xcc6a('0x20')];var _0x33079c=_0x56ffb0?0x0:_0x4133fa[_0xcc6a('0x21')];var _0x2d9585=_0x56ffb0?_0x403b18[_0xcc6a('0x20')]:_0x4133fa[_0xcc6a('0x21')]+_0x4133fa[_0xcc6a('0x1e')];var _0x1d20a3;if(_0x2d9585>=_0x307f2a){_0x2d9585=_0x307f2a;_0x1d20a3=0xc8;}else{_0x1d20a3=0xce;}_0x337ec5['status'](_0x1d20a3);return _0x337ec5[_0xcc6a('0x22')](_0xcc6a('0x23'),_0x33079c+'-'+_0x2d9585+'/'+_0x307f2a)[_0xcc6a('0x1d')](_0x403b18);}return null;};}function patchUpdates(_0x368a6e){return function(_0x1495d8){try{jsonpatch[_0xcc6a('0x24')](_0x1495d8,_0x368a6e,!![]);}catch(_0x36c80f){return BPromise[_0xcc6a('0x25')](_0x36c80f);}return _0x1495d8[_0xcc6a('0x26')]();};}function saveUpdates(_0x19d32c,_0x329d17){return function(_0x845088){if(_0x845088){return _0x845088['update'](_0x19d32c)[_0xcc6a('0x27')](function(_0x3a081e){return _0x3a081e;});}return null;};}function removeEntity(_0x38f812,_0x581aae){return function(_0x10016a){if(_0x10016a){return _0x10016a[_0xcc6a('0x28')]()[_0xcc6a('0x27')](function(){_0x38f812[_0xcc6a('0x1c')](0xcc)[_0xcc6a('0x29')]();});}};}function handleEntityNotFound(_0x5fc697,_0x50abc1){return function(_0x26def8){if(!_0x26def8){_0x5fc697[_0xcc6a('0x1b')](0x194);}return _0x26def8;};}function handleError(_0x3514f3,_0x5f27e5){_0x5f27e5=_0x5f27e5||0x1f4;return function(_0x3afb3a){logger[_0xcc6a('0x2a')](_0x3afb3a['stack']);if(_0x3afb3a[_0xcc6a('0x2b')]){delete _0x3afb3a[_0xcc6a('0x2b')];}_0x3514f3[_0xcc6a('0x1c')](_0x5f27e5)[_0xcc6a('0x2c')](_0x3afb3a);};}exports['index']=function(_0x194aab,_0x3cf14c){var _0x2c6d88={},_0x4f176b={},_0x2590a2={'count':0x0,'rows':[]};var _0x5308d4=_['map'](db[_0xcc6a('0x2d')][_0xcc6a('0x2e')],function(_0x3aa315){return{'name':_0x3aa315[_0xcc6a('0x2f')],'type':_0x3aa315[_0xcc6a('0x30')][_0xcc6a('0x31')]};});_0x4f176b['model']=_[_0xcc6a('0x32')](_0x5308d4,_0xcc6a('0x2b'));_0x4f176b[_0xcc6a('0x33')]=_[_0xcc6a('0x34')](_0x194aab[_0xcc6a('0x33')]);_0x4f176b[_0xcc6a('0x35')]=_[_0xcc6a('0x36')](_0x4f176b[_0xcc6a('0x37')],_0x4f176b['query']);_0x2c6d88[_0xcc6a('0x38')]=_[_0xcc6a('0x36')](_0x4f176b[_0xcc6a('0x37')],qs[_0xcc6a('0x39')](_0x194aab[_0xcc6a('0x33')][_0xcc6a('0x39')]));_0x2c6d88[_0xcc6a('0x38')]=_0x2c6d88['attributes'][_0xcc6a('0x3a')]?_0x2c6d88['attributes']:_0x4f176b['model'];if(!_0x194aab['query'][_0xcc6a('0x3b')](_0xcc6a('0x3c'))){_0x2c6d88[_0xcc6a('0x1e')]=qs[_0xcc6a('0x1e')](_0x194aab[_0xcc6a('0x33')]['limit']);_0x2c6d88['offset']=qs[_0xcc6a('0x21')](_0x194aab[_0xcc6a('0x33')][_0xcc6a('0x21')]);}_0x2c6d88['order']=qs[_0xcc6a('0x3d')](_0x194aab[_0xcc6a('0x33')][_0xcc6a('0x3d')]);_0x2c6d88[_0xcc6a('0x3e')]=qs[_0xcc6a('0x35')](_[_0xcc6a('0x3f')](_0x194aab[_0xcc6a('0x33')],_0x4f176b[_0xcc6a('0x35')]),_0x5308d4);if(_0x194aab[_0xcc6a('0x33')][_0xcc6a('0x40')]){_0x2c6d88[_0xcc6a('0x3e')]=_[_0xcc6a('0x41')](_0x2c6d88[_0xcc6a('0x3e')],{'$or':_[_0xcc6a('0x32')](_0x5308d4,function(_0x262a1e){if(_0x262a1e[_0xcc6a('0x30')]!==_0xcc6a('0x42')){var _0x386cbc={};_0x386cbc[_0x262a1e['name']]={'$like':'%'+_0x194aab['query'][_0xcc6a('0x40')]+'%'};return _0x386cbc;}})});}_0x2c6d88=_[_0xcc6a('0x41')]({},_0x2c6d88,_0x194aab[_0xcc6a('0x43')]);var _0x1fd8e1={'where':_0x2c6d88[_0xcc6a('0x3e')]};return db[_0xcc6a('0x2d')][_0xcc6a('0x20')](_0x1fd8e1)[_0xcc6a('0x27')](function(_0x49b65c){_0x2590a2['count']=_0x49b65c;if(_0x194aab[_0xcc6a('0x33')]['includeAll']){_0x2c6d88['include']=[{'all':!![]}];}return db['UserProfileResource'][_0xcc6a('0x44')](_0x2c6d88);})[_0xcc6a('0x27')](function(_0xb42897){_0x2590a2[_0xcc6a('0x45')]=_0xb42897;return _0x2590a2;})[_0xcc6a('0x27')](respondWithFilteredResult(_0x3cf14c,_0x2c6d88))['catch'](handleError(_0x3cf14c,null));};exports[_0xcc6a('0x46')]=function(_0xfbb079,_0x17e5a0){var _0x2f966f={'raw':![],'where':{'id':_0xfbb079[_0xcc6a('0x47')]['id']}},_0x14ca90={};_0x14ca90['model']=_[_0xcc6a('0x34')](db[_0xcc6a('0x2d')][_0xcc6a('0x2e')]);_0x14ca90[_0xcc6a('0x33')]=_['keys'](_0xfbb079[_0xcc6a('0x33')]);_0x14ca90['filters']=_[_0xcc6a('0x36')](_0x14ca90[_0xcc6a('0x37')],_0x14ca90[_0xcc6a('0x33')]);_0x2f966f['attributes']=_[_0xcc6a('0x36')](_0x14ca90[_0xcc6a('0x37')],qs[_0xcc6a('0x39')](_0xfbb079['query']['fields']));_0x2f966f[_0xcc6a('0x38')]=_0x2f966f[_0xcc6a('0x38')][_0xcc6a('0x3a')]?_0x2f966f[_0xcc6a('0x38')]:_0x14ca90[_0xcc6a('0x37')];if(_0xfbb079['query'][_0xcc6a('0x48')]){_0x2f966f[_0xcc6a('0x49')]=[{'all':!![]}];}_0x2f966f=_['merge']({},_0x2f966f,_0xfbb079[_0xcc6a('0x43')]);return db[_0xcc6a('0x2d')][_0xcc6a('0x4a')](_0x2f966f)[_0xcc6a('0x27')](handleEntityNotFound(_0x17e5a0,null))[_0xcc6a('0x27')](respondWithResult(_0x17e5a0,null))[_0xcc6a('0x4b')](handleError(_0x17e5a0,null));};exports['create']=function(_0x4e1a0b,_0x47c999){return db[_0xcc6a('0x2d')][_0xcc6a('0x4c')](_0x4e1a0b[_0xcc6a('0x4d')],{})[_0xcc6a('0x27')](respondWithResult(_0x47c999,0xc9))['catch'](handleError(_0x47c999,null));};exports[_0xcc6a('0x4e')]=function(_0x5e7bab,_0x3aa7dd){if(_0x5e7bab[_0xcc6a('0x4d')]['id']){delete _0x5e7bab[_0xcc6a('0x4d')]['id'];}return db[_0xcc6a('0x2d')][_0xcc6a('0x4a')]({'where':{'id':_0x5e7bab[_0xcc6a('0x47')]['id']}})['then'](handleEntityNotFound(_0x3aa7dd,null))[_0xcc6a('0x27')](saveUpdates(_0x5e7bab[_0xcc6a('0x4d')],null))[_0xcc6a('0x27')](respondWithResult(_0x3aa7dd,null))[_0xcc6a('0x4b')](handleError(_0x3aa7dd,null));};exports[_0xcc6a('0x28')]=function(_0x362bf6,_0x431684){return db[_0xcc6a('0x2d')][_0xcc6a('0x4a')]({'where':{'id':_0x362bf6[_0xcc6a('0x47')]['id']}})['then'](handleEntityNotFound(_0x431684,null))[_0xcc6a('0x27')](removeEntity(_0x431684,null))[_0xcc6a('0x4b')](handleError(_0x431684,null));};exports[_0xcc6a('0x4f')]=function(_0x34531d,_0x14f5e5){return db[_0xcc6a('0x2d')]['describe']()['then'](respondWithResult(_0x14f5e5,null))[_0xcc6a('0x4b')](handleError(_0x14f5e5,null));};
\ No newline at end of file
+var _0xafc4=['update','destroy','then','stack','name','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','map','VIRTUAL','options','UserProfileResource','includeAll','catch','show','params','create','body','find','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x5af97c,_0x24a49f){var _0x3472ae=function(_0x54cdc3){while(--_0x54cdc3){_0x5af97c['push'](_0x5af97c['shift']());}};_0x3472ae(++_0x24a49f);}(_0xafc4,0x69));var _0x4afc=function(_0x49e229,_0x3ec908){_0x49e229=_0x49e229-0x0;var _0x2135a6=_0xafc4[_0x49e229];return _0x2135a6;};'use strict';var emlformat=require(_0x4afc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4afc('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4afc('0x2'));var moment=require(_0x4afc('0x3'));var BPromise=require(_0x4afc('0x4'));var Mustache=require(_0x4afc('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x4afc('0x6'));var ejs=require(_0x4afc('0x7'));var fs=require('fs');var fs_extra=require(_0x4afc('0x8'));var _=require(_0x4afc('0x9'));var squel=require(_0x4afc('0xa'));var crypto=require(_0x4afc('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x4afc('0xc'));var toCsv=require(_0x4afc('0x6'));var querystring=require(_0x4afc('0xd'));var Papa=require(_0x4afc('0xe'));var Redis=require(_0x4afc('0xf'));var authService=require(_0x4afc('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4afc('0x11'));var logger=require('../../config/logger')(_0x4afc('0x12'));var utils=require(_0x4afc('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x4afc('0x14'));var db=require(_0x4afc('0x15'))['db'];function respondWithStatusCode(_0x2b191c,_0x2768bf){_0x2768bf=_0x2768bf||0xcc;return function(_0x1d8f98){if(_0x1d8f98){return _0x2b191c[_0x4afc('0x16')](_0x2768bf);}return _0x2b191c[_0x4afc('0x17')](_0x2768bf)[_0x4afc('0x18')]();};}function respondWithResult(_0x5effb4,_0x26f3f1){_0x26f3f1=_0x26f3f1||0xc8;return function(_0x429fd8){if(_0x429fd8){return _0x5effb4[_0x4afc('0x17')](_0x26f3f1)[_0x4afc('0x19')](_0x429fd8);}};}function respondWithFilteredResult(_0x5f2dc9,_0x4e32e8){return function(_0x2452ae){if(_0x2452ae){var _0x4f3127=typeof _0x4e32e8[_0x4afc('0x1a')]===_0x4afc('0x1b')&&typeof _0x4e32e8[_0x4afc('0x1c')]===_0x4afc('0x1b');var _0x3a306f=_0x2452ae[_0x4afc('0x1d')];var _0x22f809=_0x4f3127?0x0:_0x4e32e8[_0x4afc('0x1a')];var _0x16365f=_0x4f3127?_0x2452ae[_0x4afc('0x1d')]:_0x4e32e8[_0x4afc('0x1a')]+_0x4e32e8['limit'];var _0x1a8f49;if(_0x16365f>=_0x3a306f){_0x16365f=_0x3a306f;_0x1a8f49=0xc8;}else{_0x1a8f49=0xce;}_0x5f2dc9[_0x4afc('0x17')](_0x1a8f49);return _0x5f2dc9[_0x4afc('0x1e')](_0x4afc('0x1f'),_0x22f809+'-'+_0x16365f+'/'+_0x3a306f)['json'](_0x2452ae);}return null;};}function patchUpdates(_0x3bddc0){return function(_0x30eda3){try{jsonpatch[_0x4afc('0x20')](_0x30eda3,_0x3bddc0,!![]);}catch(_0x280587){return BPromise[_0x4afc('0x21')](_0x280587);}return _0x30eda3[_0x4afc('0x22')]();};}function saveUpdates(_0x3ad7a5,_0x573a75){return function(_0x5403e4){if(_0x5403e4){return _0x5403e4[_0x4afc('0x23')](_0x3ad7a5)['then'](function(_0x37debf){return _0x37debf;});}return null;};}function removeEntity(_0x4e9a48,_0x1aa676){return function(_0x2a0314){if(_0x2a0314){return _0x2a0314[_0x4afc('0x24')]()[_0x4afc('0x25')](function(){_0x4e9a48[_0x4afc('0x17')](0xcc)[_0x4afc('0x18')]();});}};}function handleEntityNotFound(_0x40a0db,_0x383a71){return function(_0x2bb837){if(!_0x2bb837){_0x40a0db[_0x4afc('0x16')](0x194);}return _0x2bb837;};}function handleError(_0x4e8273,_0x359c07){_0x359c07=_0x359c07||0x1f4;return function(_0x35f5b3){logger['error'](_0x35f5b3[_0x4afc('0x26')]);if(_0x35f5b3[_0x4afc('0x27')]){delete _0x35f5b3[_0x4afc('0x27')];}_0x4e8273['status'](_0x359c07)['send'](_0x35f5b3);};}exports['index']=function(_0x426e9d,_0x5db47e){var _0x5e4747={},_0xd26d2f={},_0x628e42={'count':0x0,'rows':[]};var _0x494fe7=_['map'](db['UserProfileResource'][_0x4afc('0x28')],function(_0x34434a){return{'name':_0x34434a[_0x4afc('0x29')],'type':_0x34434a[_0x4afc('0x2a')][_0x4afc('0x2b')]};});_0xd26d2f[_0x4afc('0x2c')]=_['map'](_0x494fe7,_0x4afc('0x27'));_0xd26d2f[_0x4afc('0x2d')]=_[_0x4afc('0x2e')](_0x426e9d[_0x4afc('0x2d')]);_0xd26d2f[_0x4afc('0x2f')]=_[_0x4afc('0x30')](_0xd26d2f[_0x4afc('0x2c')],_0xd26d2f[_0x4afc('0x2d')]);_0x5e4747['attributes']=_[_0x4afc('0x30')](_0xd26d2f['model'],qs['fields'](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x31')]));_0x5e4747[_0x4afc('0x32')]=_0x5e4747[_0x4afc('0x32')][_0x4afc('0x33')]?_0x5e4747[_0x4afc('0x32')]:_0xd26d2f['model'];if(!_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x34')](_0x4afc('0x35'))){_0x5e4747[_0x4afc('0x1c')]=qs[_0x4afc('0x1c')](_0x426e9d[_0x4afc('0x2d')]['limit']);_0x5e4747[_0x4afc('0x1a')]=qs[_0x4afc('0x1a')](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x1a')]);}_0x5e4747['order']=qs['sort'](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x36')]);_0x5e4747[_0x4afc('0x37')]=qs['filters'](_['pick'](_0x426e9d[_0x4afc('0x2d')],_0xd26d2f['filters']),_0x494fe7);if(_0x426e9d['query'][_0x4afc('0x38')]){_0x5e4747[_0x4afc('0x37')]=_[_0x4afc('0x39')](_0x5e4747[_0x4afc('0x37')],{'$or':_[_0x4afc('0x3a')](_0x494fe7,function(_0x4420fb){if(_0x4420fb[_0x4afc('0x2a')]!==_0x4afc('0x3b')){var _0x3ccc5a={};_0x3ccc5a[_0x4420fb[_0x4afc('0x27')]]={'$like':'%'+_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x38')]+'%'};return _0x3ccc5a;}})});}_0x5e4747=_[_0x4afc('0x39')]({},_0x5e4747,_0x426e9d[_0x4afc('0x3c')]);var _0x46dd2a={'where':_0x5e4747['where']};return db[_0x4afc('0x3d')][_0x4afc('0x1d')](_0x46dd2a)[_0x4afc('0x25')](function(_0xe6db12){_0x628e42[_0x4afc('0x1d')]=_0xe6db12;if(_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x3e')]){_0x5e4747['include']=[{'all':!![]}];}return db['UserProfileResource']['findAll'](_0x5e4747);})[_0x4afc('0x25')](function(_0x105c03){_0x628e42['rows']=_0x105c03;return _0x628e42;})[_0x4afc('0x25')](respondWithFilteredResult(_0x5db47e,_0x5e4747))[_0x4afc('0x3f')](handleError(_0x5db47e,null));};exports[_0x4afc('0x40')]=function(_0x397996,_0x545109){var _0x12b5db={'raw':![],'where':{'id':_0x397996[_0x4afc('0x41')]['id']}},_0x45c9c3={};_0x45c9c3[_0x4afc('0x2c')]=_[_0x4afc('0x2e')](db[_0x4afc('0x3d')]['rawAttributes']);_0x45c9c3[_0x4afc('0x2d')]=_['keys'](_0x397996[_0x4afc('0x2d')]);_0x45c9c3[_0x4afc('0x2f')]=_[_0x4afc('0x30')](_0x45c9c3['model'],_0x45c9c3['query']);_0x12b5db[_0x4afc('0x32')]=_[_0x4afc('0x30')](_0x45c9c3[_0x4afc('0x2c')],qs[_0x4afc('0x31')](_0x397996[_0x4afc('0x2d')][_0x4afc('0x31')]));_0x12b5db[_0x4afc('0x32')]=_0x12b5db[_0x4afc('0x32')]['length']?_0x12b5db[_0x4afc('0x32')]:_0x45c9c3[_0x4afc('0x2c')];if(_0x397996['query'][_0x4afc('0x3e')]){_0x12b5db['include']=[{'all':!![]}];}_0x12b5db=_[_0x4afc('0x39')]({},_0x12b5db,_0x397996[_0x4afc('0x3c')]);return db[_0x4afc('0x3d')]['find'](_0x12b5db)[_0x4afc('0x25')](handleEntityNotFound(_0x545109,null))[_0x4afc('0x25')](respondWithResult(_0x545109,null))[_0x4afc('0x3f')](handleError(_0x545109,null));};exports[_0x4afc('0x42')]=function(_0x4772db,_0x19a0ac){return db['UserProfileResource']['create'](_0x4772db['body'],{})[_0x4afc('0x25')](respondWithResult(_0x19a0ac,0xc9))[_0x4afc('0x3f')](handleError(_0x19a0ac,null));};exports[_0x4afc('0x23')]=function(_0x269c24,_0xb5cca9){if(_0x269c24[_0x4afc('0x43')]['id']){delete _0x269c24[_0x4afc('0x43')]['id'];}return db[_0x4afc('0x3d')][_0x4afc('0x44')]({'where':{'id':_0x269c24[_0x4afc('0x41')]['id']}})['then'](handleEntityNotFound(_0xb5cca9,null))[_0x4afc('0x25')](saveUpdates(_0x269c24['body'],null))['then'](respondWithResult(_0xb5cca9,null))[_0x4afc('0x3f')](handleError(_0xb5cca9,null));};exports['destroy']=function(_0x428d78,_0x355198){return db[_0x4afc('0x3d')][_0x4afc('0x44')]({'where':{'id':_0x428d78['params']['id']}})[_0x4afc('0x25')](handleEntityNotFound(_0x355198,null))['then'](removeEntity(_0x355198,null))[_0x4afc('0x3f')](handleError(_0x355198,null));};exports[_0x4afc('0x45')]=function(_0x3625c9,_0x387834){return db[_0x4afc('0x3d')][_0x4afc('0x45')]()[_0x4afc('0x25')](respondWithResult(_0x387834,null))[_0x4afc('0x3f')](handleError(_0x387834,null));};
\ No newline at end of file
index b523000..9551469 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x382e=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','resourceId','sectionId','lodash','util','../../config/logger','api'];(function(_0x47118d,_0x4708d9){var _0x283665=function(_0x4981ec){while(--_0x4981ec){_0x47118d['push'](_0x47118d['shift']());}};_0x283665(++_0x4708d9);}(_0x382e,0x1b6));var _0xe382=function(_0x4d6d42,_0x3256e6){_0x4d6d42=_0x4d6d42-0x0;var _0x2d70d0=_0x382e[_0x4d6d42];return _0x2d70d0;};'use strict';var _=require(_0xe382('0x0'));var util=require(_0xe382('0x1'));var logger=require(_0xe382('0x2'))(_0xe382('0x3'));var moment=require(_0xe382('0x4'));var BPromise=require(_0xe382('0x5'));var rp=require(_0xe382('0x6'));var fs=require('fs');var path=require(_0xe382('0x7'));var rimraf=require(_0xe382('0x8'));var config=require(_0xe382('0x9'));var attributes=require(_0xe382('0xa'));module[_0xe382('0xb')]=function(_0x1a0d55,_0xc808dd){return _0x1a0d55[_0xe382('0xc')](_0xe382('0xd'),attributes,{'tableName':_0xe382('0xe'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0xe382('0xf'),_0xe382('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a07=['../../config/environment','./userProfileResource.attributes','exports','define','user_profile_has_resources','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x2c440f,_0x1a5f28){var _0x47246f=function(_0x14c1ca){while(--_0x14c1ca){_0x2c440f['push'](_0x2c440f['shift']());}};_0x47246f(++_0x1a5f28);}(_0x0a07,0x161));var _0x70a0=function(_0x48dbc6,_0x2ce786){_0x48dbc6=_0x48dbc6-0x0;var _0x331239=_0x0a07[_0x48dbc6];return _0x331239;};'use strict';var _=require(_0x70a0('0x0'));var util=require('util');var logger=require(_0x70a0('0x1'))('api');var moment=require(_0x70a0('0x2'));var BPromise=require(_0x70a0('0x3'));var rp=require(_0x70a0('0x4'));var fs=require('fs');var path=require(_0x70a0('0x5'));var rimraf=require(_0x70a0('0x6'));var config=require(_0x70a0('0x7'));var attributes=require(_0x70a0('0x8'));module[_0x70a0('0x9')]=function(_0x2ce45f,_0x1eb37b){return _0x2ce45f[_0x70a0('0xa')]('UserProfileResource',attributes,{'tableName':_0x70a0('0xb'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':['resourceId','sectionId']}],'timestamps':!![]});};
\ No newline at end of file
index bc645ac..41696e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0cd=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x531e36,_0x5964fa){var _0x463750=function(_0x2bcf57){while(--_0x2bcf57){_0x531e36['push'](_0x531e36['shift']());}};_0x463750(++_0x5964fa);}(_0xa0cd,0x123));var _0xda0c=function(_0x2081aa,_0x31d653){_0x2081aa=_0x2081aa-0x0;var _0x36485d=_0xa0cd[_0x2081aa];return _0x36485d;};'use strict';var _=require(_0xda0c('0x0'));var util=require(_0xda0c('0x1'));var moment=require(_0xda0c('0x2'));var BPromise=require(_0xda0c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xda0c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xda0c('0x5'));var logger=require(_0xda0c('0x6'))(_0xda0c('0x7'));var config=require(_0xda0c('0x8'));var jayson=require(_0xda0c('0x9'));var client=jayson[_0xda0c('0xa')][_0xda0c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3ce2f1,_0x1b1fb9,_0x1b84f6){return new BPromise(function(_0x40b7fa,_0x58802b){return client[_0xda0c('0xc')](_0x3ce2f1,_0x1b84f6)[_0xda0c('0xd')](function(_0x6cdc05){logger[_0xda0c('0xe')](_0xda0c('0xf'),_0x1b1fb9,_0xda0c('0x10'));logger[_0xda0c('0x11')](_0xda0c('0x12'),_0x1b1fb9,_0xda0c('0x10'),JSON['stringify'](_0x6cdc05));if(_0x6cdc05[_0xda0c('0x13')]){if(_0x6cdc05[_0xda0c('0x13')][_0xda0c('0x14')]===0x1f4){logger['error'](_0xda0c('0xf'),_0x1b1fb9,_0x6cdc05[_0xda0c('0x13')][_0xda0c('0x15')]);return _0x58802b(_0x6cdc05['error'][_0xda0c('0x15')]);}logger[_0xda0c('0x13')](_0xda0c('0xf'),_0x1b1fb9,_0x6cdc05[_0xda0c('0x13')]['message']);return _0x40b7fa(_0x6cdc05[_0xda0c('0x13')]['message']);}else{logger[_0xda0c('0xe')](_0xda0c('0xf'),_0x1b1fb9,_0xda0c('0x10'));_0x40b7fa(_0x6cdc05[_0xda0c('0x16')][_0xda0c('0x15')]);}})[_0xda0c('0x17')](function(_0x4afced){logger['error'](_0xda0c('0xf'),_0x1b1fb9,_0x4afced);_0x58802b(_0x4afced);});});}
\ No newline at end of file
+var _0x0b30=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','request','then','UserProfileResource,\x20%s,\x20%s','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','error','message','info','request\x20sent','result','catch'];(function(_0x54c10d,_0x2f2251){var _0x1fa703=function(_0x508eb4){while(--_0x508eb4){_0x54c10d['push'](_0x54c10d['shift']());}};_0x1fa703(++_0x2f2251);}(_0x0b30,0xd1));var _0x00b3=function(_0x57f447,_0x2c367c){_0x57f447=_0x57f447-0x0;var _0x20a69e=_0x0b30[_0x57f447];return _0x20a69e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x00b3('0x0'));var BPromise=require(_0x00b3('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x00b3('0x2'));var db=require(_0x00b3('0x3'))['db'];var utils=require(_0x00b3('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x00b3('0x5'));var jayson=require(_0x00b3('0x6'));var client=jayson[_0x00b3('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x567c21,_0x8036ae,_0x2ed7a5){return new BPromise(function(_0x1740ef,_0x2776e4){return client[_0x00b3('0x8')](_0x567c21,_0x2ed7a5)[_0x00b3('0x9')](function(_0x28bc15){logger['info'](_0x00b3('0xa'),_0x8036ae,'request\x20sent');logger[_0x00b3('0xb')](_0x00b3('0xc'),_0x8036ae,'request\x20sent',JSON['stringify'](_0x28bc15));if(_0x28bc15[_0x00b3('0xd')]){if(_0x28bc15[_0x00b3('0xd')]['code']===0x1f4){logger[_0x00b3('0xd')]('UserProfileResource,\x20%s,\x20%s',_0x8036ae,_0x28bc15[_0x00b3('0xd')][_0x00b3('0xe')]);return _0x2776e4(_0x28bc15[_0x00b3('0xd')]['message']);}logger[_0x00b3('0xd')]('UserProfileResource,\x20%s,\x20%s',_0x8036ae,_0x28bc15['error'][_0x00b3('0xe')]);return _0x1740ef(_0x28bc15[_0x00b3('0xd')][_0x00b3('0xe')]);}else{logger[_0x00b3('0xf')](_0x00b3('0xa'),_0x8036ae,_0x00b3('0x10'));_0x1740ef(_0x28bc15[_0x00b3('0x11')][_0x00b3('0xe')]);}})[_0x00b3('0x12')](function(_0x25cfcf){logger[_0x00b3('0xd')](_0x00b3('0xa'),_0x8036ae,_0x25cfcf);_0x2776e4(_0x25cfcf);});});}
\ No newline at end of file
index c197ccb..235745a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8777=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','index','isAuthenticated','describe','/:id','show','post','create','put','update','destroy','multer','util','connect-timeout'];(function(_0x2cab49,_0x5502e2){var _0x3e50ac=function(_0x486860){while(--_0x486860){_0x2cab49['push'](_0x2cab49['shift']());}};_0x3e50ac(++_0x5502e2);}(_0x8777,0xb1));var _0x7877=function(_0x507fec,_0x5f3b11){_0x507fec=_0x507fec-0x0;var _0x593392=_0x8777[_0x507fec];return _0x593392;};'use strict';var multer=require(_0x7877('0x0'));var util=require(_0x7877('0x1'));var path=require('path');var timeout=require(_0x7877('0x2'));var express=require(_0x7877('0x3'));var router=express[_0x7877('0x4')]();var fs_extra=require(_0x7877('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x7877('0x6'));var config=require(_0x7877('0x7'));var controller=require(_0x7877('0x8'));router[_0x7877('0x9')]('/',auth['isAuthenticated'](),controller[_0x7877('0xa')]);router[_0x7877('0x9')]('/describe',auth[_0x7877('0xb')](),controller[_0x7877('0xc')]);router[_0x7877('0x9')](_0x7877('0xd'),auth[_0x7877('0xb')](),controller[_0x7877('0xe')]);router[_0x7877('0xf')]('/',auth[_0x7877('0xb')](),controller[_0x7877('0x10')]);router[_0x7877('0x11')](_0x7877('0xd'),auth[_0x7877('0xb')](),controller[_0x7877('0x12')]);router['delete']('/:id',auth[_0x7877('0xb')](),controller[_0x7877('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xb62d=['../../config/environment','./userProfileSection.controller','get','isAuthenticated','index','describe','show','post','create','update','delete','/:id','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x3e367e,_0x56c3ff){var _0x59f8a6=function(_0x3161d3){while(--_0x3161d3){_0x3e367e['push'](_0x3e367e['shift']());}};_0x59f8a6(++_0x56c3ff);}(_0xb62d,0x19d));var _0xdb62=function(_0x371688,_0x47f2cf){_0x371688=_0x371688-0x0;var _0x3142b6=_0xb62d[_0x371688];return _0x3142b6;};'use strict';var multer=require(_0xdb62('0x0'));var util=require(_0xdb62('0x1'));var path=require(_0xdb62('0x2'));var timeout=require('connect-timeout');var express=require(_0xdb62('0x3'));var router=express[_0xdb62('0x4')]();var fs_extra=require(_0xdb62('0x5'));var auth=require(_0xdb62('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xdb62('0x7'));var controller=require(_0xdb62('0x8'));router[_0xdb62('0x9')]('/',auth[_0xdb62('0xa')](),controller[_0xdb62('0xb')]);router[_0xdb62('0x9')]('/describe',auth['isAuthenticated'](),controller[_0xdb62('0xc')]);router[_0xdb62('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xdb62('0xd')]);router[_0xdb62('0xe')]('/',auth[_0xdb62('0xa')](),controller[_0xdb62('0xf')]);router['put']('/:id',auth[_0xdb62('0xa')](),controller[_0xdb62('0x10')]);router[_0xdb62('0x11')](_0xdb62('0x12'),auth[_0xdb62('0xa')](),controller[_0xdb62('0x13')]);module['exports']=router;
\ No newline at end of file
index c7c0f11..a39575b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe605=['BOOLEAN','setDataValue','crudPermissions','join','getDataValue','split','sequelize','exports','STRING','INTEGER'];(function(_0x5b8437,_0x38eb58){var _0x4a0cf3=function(_0x3e74e2){while(--_0x3e74e2){_0x5b8437['push'](_0x5b8437['shift']());}};_0x4a0cf3(++_0x38eb58);}(_0xe605,0x92));var _0x5e60=function(_0x524c50,_0x2f987a){_0x524c50=_0x524c50-0x0;var _0x48fa8e=_0xe605[_0x524c50];return _0x48fa8e;};'use strict';var Sequelize=require(_0x5e60('0x0'));module[_0x5e60('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x5e60('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x5e60('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x5e60('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x5e60('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x5e60('0x2')],'set':function(_0xfe1f64){this[_0x5e60('0x5')](_0x5e60('0x6'),_0xfe1f64?_0xfe1f64[_0x5e60('0x7')](''):[]);},'get':function(){return this[_0x5e60('0x8')](_0x5e60('0x6'))?this[_0x5e60('0x8')]('crudPermissions')[_0x5e60('0x9')](''):[];}}};
\ No newline at end of file
+var _0xae60=['setDataValue','join','getDataValue','crudPermissions','split','sequelize','exports','STRING','INTEGER','BOOLEAN'];(function(_0x20738d,_0x2996c1){var _0x9bd611=function(_0x2b0d0a){while(--_0x2b0d0a){_0x20738d['push'](_0x20738d['shift']());}};_0x9bd611(++_0x2996c1);}(_0xae60,0x1c7));var _0x0ae6=function(_0x1b6c6d,_0x2983b0){_0x1b6c6d=_0x1b6c6d-0x0;var _0x290d9d=_0xae60[_0x1b6c6d];return _0x290d9d;};'use strict';var Sequelize=require(_0x0ae6('0x0'));module[_0x0ae6('0x1')]={'name':{'type':Sequelize[_0x0ae6('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x0ae6('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x0ae6('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x0ae6('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x4c014f){this[_0x0ae6('0x5')]('crudPermissions',_0x4c014f?_0x4c014f[_0x0ae6('0x6')](''):[]);},'get':function(){return this[_0x0ae6('0x7')](_0x0ae6('0x8'))?this[_0x0ae6('0x7')](_0x0ae6('0x8'))[_0x0ae6('0x9')](''):[];}}};
\ No newline at end of file
index 7b79ab6..cf236e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3af=['undefined','limit','count','set','apply','reject','save','update','then','destroy','error','name','send','index','map','UserProfileSection','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','where','filter','VIRTUAL','merge','includeAll','include','findAll','catch','params','keys','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0xa3af,0x100));var _0xfa3a=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xa3af[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0xfa3a('0x0'));var rimraf=require(_0xfa3a('0x1'));var zipdir=require(_0xfa3a('0x2'));var jsonpatch=require(_0xfa3a('0x3'));var rp=require(_0xfa3a('0x4'));var moment=require(_0xfa3a('0x5'));var BPromise=require(_0xfa3a('0x6'));var Mustache=require('mustache');var util=require(_0xfa3a('0x7'));var path=require('path');var sox=require(_0xfa3a('0x8'));var csv=require(_0xfa3a('0x9'));var ejs=require(_0xfa3a('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfa3a('0xb'));var crypto=require('crypto');var jsforce=require(_0xfa3a('0xc'));var deskjs=require(_0xfa3a('0xd'));var toCsv=require(_0xfa3a('0x9'));var querystring=require(_0xfa3a('0xe'));var Papa=require(_0xfa3a('0xf'));var Redis=require(_0xfa3a('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xfa3a('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfa3a('0x12'));var logger=require('../../config/logger')(_0xfa3a('0x13'));var utils=require('../../config/utils');var config=require(_0xfa3a('0x14'));var licenseUtil=require(_0xfa3a('0x15'));var db=require(_0xfa3a('0x16'))['db'];function respondWithStatusCode(_0x3aea3a,_0x4d2ca9){_0x4d2ca9=_0x4d2ca9||0xcc;return function(_0x43eb7b){if(_0x43eb7b){return _0x3aea3a[_0xfa3a('0x17')](_0x4d2ca9);}return _0x3aea3a[_0xfa3a('0x18')](_0x4d2ca9)[_0xfa3a('0x19')]();};}function respondWithResult(_0x347709,_0x223727){_0x223727=_0x223727||0xc8;return function(_0x1b0edb){if(_0x1b0edb){return _0x347709[_0xfa3a('0x18')](_0x223727)[_0xfa3a('0x1a')](_0x1b0edb);}};}function respondWithFilteredResult(_0x305d11,_0x5d69e0){return function(_0x463eef){if(_0x463eef){var _0x53874b=typeof _0x5d69e0[_0xfa3a('0x1b')]===_0xfa3a('0x1c')&&typeof _0x5d69e0[_0xfa3a('0x1d')]==='undefined';var _0x5b2370=_0x463eef[_0xfa3a('0x1e')];var _0x204d32=_0x53874b?0x0:_0x5d69e0[_0xfa3a('0x1b')];var _0x1e1599=_0x53874b?_0x463eef[_0xfa3a('0x1e')]:_0x5d69e0['offset']+_0x5d69e0[_0xfa3a('0x1d')];var _0x177dc2;if(_0x1e1599>=_0x5b2370){_0x1e1599=_0x5b2370;_0x177dc2=0xc8;}else{_0x177dc2=0xce;}_0x305d11[_0xfa3a('0x18')](_0x177dc2);return _0x305d11[_0xfa3a('0x1f')]('Content-Range',_0x204d32+'-'+_0x1e1599+'/'+_0x5b2370)[_0xfa3a('0x1a')](_0x463eef);}return null;};}function patchUpdates(_0x581d61){return function(_0x12d94e){try{jsonpatch[_0xfa3a('0x20')](_0x12d94e,_0x581d61,!![]);}catch(_0x153345){return BPromise[_0xfa3a('0x21')](_0x153345);}return _0x12d94e[_0xfa3a('0x22')]();};}function saveUpdates(_0x5b0ba1,_0x560db6){return function(_0x44a702){if(_0x44a702){return _0x44a702[_0xfa3a('0x23')](_0x5b0ba1)[_0xfa3a('0x24')](function(_0x475d95){return _0x475d95;});}return null;};}function removeEntity(_0x52a4d3,_0xe249ed){return function(_0x5cca09){if(_0x5cca09){return _0x5cca09[_0xfa3a('0x25')]()['then'](function(){_0x52a4d3[_0xfa3a('0x18')](0xcc)[_0xfa3a('0x19')]();});}};}function handleEntityNotFound(_0x7ddd52,_0x12eb6c){return function(_0x2f0ad4){if(!_0x2f0ad4){_0x7ddd52[_0xfa3a('0x17')](0x194);}return _0x2f0ad4;};}function handleError(_0x2207bd,_0x4957ae){_0x4957ae=_0x4957ae||0x1f4;return function(_0x372409){logger[_0xfa3a('0x26')](_0x372409['stack']);if(_0x372409[_0xfa3a('0x27')]){delete _0x372409[_0xfa3a('0x27')];}_0x2207bd[_0xfa3a('0x18')](_0x4957ae)[_0xfa3a('0x28')](_0x372409);};}exports[_0xfa3a('0x29')]=function(_0x4bebab,_0x30d973){var _0x43f3b6={},_0x392dad={},_0x1026b1={'count':0x0,'rows':[]};var _0x49da6c=_[_0xfa3a('0x2a')](db[_0xfa3a('0x2b')][_0xfa3a('0x2c')],function(_0x3ef0ad){return{'name':_0x3ef0ad['fieldName'],'type':_0x3ef0ad[_0xfa3a('0x2d')][_0xfa3a('0x2e')]};});_0x392dad[_0xfa3a('0x2f')]=_[_0xfa3a('0x2a')](_0x49da6c,'name');_0x392dad['query']=_['keys'](_0x4bebab[_0xfa3a('0x30')]);_0x392dad[_0xfa3a('0x31')]=_[_0xfa3a('0x32')](_0x392dad[_0xfa3a('0x2f')],_0x392dad[_0xfa3a('0x30')]);_0x43f3b6[_0xfa3a('0x33')]=_[_0xfa3a('0x32')](_0x392dad[_0xfa3a('0x2f')],qs[_0xfa3a('0x34')](_0x4bebab[_0xfa3a('0x30')][_0xfa3a('0x34')]));_0x43f3b6[_0xfa3a('0x33')]=_0x43f3b6[_0xfa3a('0x33')][_0xfa3a('0x35')]?_0x43f3b6[_0xfa3a('0x33')]:_0x392dad[_0xfa3a('0x2f')];if(!_0x4bebab['query'][_0xfa3a('0x36')]('nolimit')){_0x43f3b6[_0xfa3a('0x1d')]=qs[_0xfa3a('0x1d')](_0x4bebab[_0xfa3a('0x30')]['limit']);_0x43f3b6[_0xfa3a('0x1b')]=qs[_0xfa3a('0x1b')](_0x4bebab[_0xfa3a('0x30')][_0xfa3a('0x1b')]);}_0x43f3b6[_0xfa3a('0x37')]=qs['sort'](_0x4bebab['query']['sort']);_0x43f3b6[_0xfa3a('0x38')]=qs[_0xfa3a('0x31')](_['pick'](_0x4bebab['query'],_0x392dad[_0xfa3a('0x31')]),_0x49da6c);if(_0x4bebab[_0xfa3a('0x30')][_0xfa3a('0x39')]){_0x43f3b6['where']=_['merge'](_0x43f3b6[_0xfa3a('0x38')],{'$or':_[_0xfa3a('0x2a')](_0x49da6c,function(_0x78a9b0){if(_0x78a9b0[_0xfa3a('0x2d')]!==_0xfa3a('0x3a')){var _0x1b4332={};_0x1b4332[_0x78a9b0[_0xfa3a('0x27')]]={'$like':'%'+_0x4bebab[_0xfa3a('0x30')][_0xfa3a('0x39')]+'%'};return _0x1b4332;}})});}_0x43f3b6=_[_0xfa3a('0x3b')]({},_0x43f3b6,_0x4bebab['options']);var _0x5d0f31={'where':_0x43f3b6[_0xfa3a('0x38')]};return db[_0xfa3a('0x2b')][_0xfa3a('0x1e')](_0x5d0f31)[_0xfa3a('0x24')](function(_0xa92387){_0x1026b1['count']=_0xa92387;if(_0x4bebab['query'][_0xfa3a('0x3c')]){_0x43f3b6[_0xfa3a('0x3d')]=[{'all':!![]}];}return db[_0xfa3a('0x2b')][_0xfa3a('0x3e')](_0x43f3b6);})[_0xfa3a('0x24')](function(_0xc17ab5){_0x1026b1['rows']=_0xc17ab5;return _0x1026b1;})[_0xfa3a('0x24')](respondWithFilteredResult(_0x30d973,_0x43f3b6))[_0xfa3a('0x3f')](handleError(_0x30d973,null));};exports['show']=function(_0x307e5c,_0x1b1d25){var _0xe8ea41={'raw':![],'where':{'id':_0x307e5c[_0xfa3a('0x40')]['id']}},_0x357690={};_0x357690[_0xfa3a('0x2f')]=_[_0xfa3a('0x41')](db[_0xfa3a('0x2b')][_0xfa3a('0x2c')]);_0x357690[_0xfa3a('0x30')]=_[_0xfa3a('0x41')](_0x307e5c[_0xfa3a('0x30')]);_0x357690[_0xfa3a('0x31')]=_[_0xfa3a('0x32')](_0x357690[_0xfa3a('0x2f')],_0x357690[_0xfa3a('0x30')]);_0xe8ea41[_0xfa3a('0x33')]=_[_0xfa3a('0x32')](_0x357690[_0xfa3a('0x2f')],qs[_0xfa3a('0x34')](_0x307e5c[_0xfa3a('0x30')][_0xfa3a('0x34')]));_0xe8ea41[_0xfa3a('0x33')]=_0xe8ea41[_0xfa3a('0x33')][_0xfa3a('0x35')]?_0xe8ea41[_0xfa3a('0x33')]:_0x357690[_0xfa3a('0x2f')];if(_0x307e5c[_0xfa3a('0x30')][_0xfa3a('0x3c')]){_0xe8ea41['include']=[{'all':!![]}];}_0xe8ea41=_[_0xfa3a('0x3b')]({},_0xe8ea41,_0x307e5c[_0xfa3a('0x42')]);return db[_0xfa3a('0x2b')][_0xfa3a('0x43')](_0xe8ea41)[_0xfa3a('0x24')](handleEntityNotFound(_0x1b1d25,null))[_0xfa3a('0x24')](respondWithResult(_0x1b1d25,null))[_0xfa3a('0x3f')](handleError(_0x1b1d25,null));};exports[_0xfa3a('0x44')]=function(_0x3729ec,_0x52ce27){return db['UserProfileSection'][_0xfa3a('0x44')](_0x3729ec[_0xfa3a('0x45')],{})['then'](respondWithResult(_0x52ce27,0xc9))[_0xfa3a('0x3f')](handleError(_0x52ce27,null));};exports[_0xfa3a('0x23')]=function(_0x4bf1ee,_0x3dbeca){if(_0x4bf1ee[_0xfa3a('0x45')]['id']){delete _0x4bf1ee['body']['id'];}return db['UserProfileSection'][_0xfa3a('0x43')]({'where':{'id':_0x4bf1ee['params']['id']}})[_0xfa3a('0x24')](handleEntityNotFound(_0x3dbeca,null))[_0xfa3a('0x24')](saveUpdates(_0x4bf1ee[_0xfa3a('0x45')],null))[_0xfa3a('0x24')](respondWithResult(_0x3dbeca,null))['catch'](handleError(_0x3dbeca,null));};exports[_0xfa3a('0x25')]=function(_0x1609e0,_0x52fd3f){return db['UserProfileSection'][_0xfa3a('0x43')]({'where':{'id':_0x1609e0[_0xfa3a('0x40')]['id']}})['then'](handleEntityNotFound(_0x52fd3f,null))[_0xfa3a('0x24')](removeEntity(_0x52fd3f,null))['catch'](handleError(_0x52fd3f,null));};exports[_0xfa3a('0x46')]=function(_0xf7202c,_0x47ba11){return db[_0xfa3a('0x2b')]['describe']()[_0xfa3a('0x24')](respondWithResult(_0x47ba11,null))[_0xfa3a('0x3f')](handleError(_0x47ba11,null));};
\ No newline at end of file
+var _0xae43=['status','end','offset','limit','undefined','count','set','Content-Range','json','reject','save','then','destroy','stack','name','send','index','map','UserProfileSection','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','include','findAll','rows','show','params','rawAttributes','keys','includeAll','merge','options','find','catch','create','body','update','describe','eml-format','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x2e9c73,_0x123602){var _0x4cb631=function(_0xf340ce){while(--_0xf340ce){_0x2e9c73['push'](_0x2e9c73['shift']());}};_0x4cb631(++_0x123602);}(_0xae43,0x1f4));var _0x3ae4=function(_0x2984d0,_0x1a7211){_0x2984d0=_0x2984d0-0x0;var _0x2885f2=_0xae43[_0x2984d0];return _0x2885f2;};'use strict';var emlformat=require(_0x3ae4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3ae4('0x1'));var jsonpatch=require(_0x3ae4('0x2'));var rp=require('request-promise');var moment=require(_0x3ae4('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3ae4('0x4'));var util=require('util');var path=require(_0x3ae4('0x5'));var sox=require(_0x3ae4('0x6'));var csv=require(_0x3ae4('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3ae4('0x8'));var _=require(_0x3ae4('0x9'));var squel=require(_0x3ae4('0xa'));var crypto=require(_0x3ae4('0xb'));var jsforce=require(_0x3ae4('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x3ae4('0x7'));var querystring=require('querystring');var Papa=require(_0x3ae4('0xd'));var Redis=require(_0x3ae4('0xe'));var authService=require(_0x3ae4('0xf'));var qs=require(_0x3ae4('0x10'));var as=require(_0x3ae4('0x11'));var hardwareService=require(_0x3ae4('0x12'));var logger=require(_0x3ae4('0x13'))('api');var utils=require(_0x3ae4('0x14'));var config=require(_0x3ae4('0x15'));var licenseUtil=require(_0x3ae4('0x16'));var db=require(_0x3ae4('0x17'))['db'];function respondWithStatusCode(_0x574f12,_0x5c2802){_0x5c2802=_0x5c2802||0xcc;return function(_0xdb301){if(_0xdb301){return _0x574f12[_0x3ae4('0x18')](_0x5c2802);}return _0x574f12[_0x3ae4('0x19')](_0x5c2802)[_0x3ae4('0x1a')]();};}function respondWithResult(_0x1e6d52,_0xed7206){_0xed7206=_0xed7206||0xc8;return function(_0x6ef62e){if(_0x6ef62e){return _0x1e6d52['status'](_0xed7206)['json'](_0x6ef62e);}};}function respondWithFilteredResult(_0x11d471,_0x361872){return function(_0x34253f){if(_0x34253f){var _0x4a9479=typeof _0x361872[_0x3ae4('0x1b')]==='undefined'&&typeof _0x361872[_0x3ae4('0x1c')]===_0x3ae4('0x1d');var _0x5eb802=_0x34253f[_0x3ae4('0x1e')];var _0x466641=_0x4a9479?0x0:_0x361872[_0x3ae4('0x1b')];var _0x1e7f3a=_0x4a9479?_0x34253f[_0x3ae4('0x1e')]:_0x361872[_0x3ae4('0x1b')]+_0x361872[_0x3ae4('0x1c')];var _0xb58eb5;if(_0x1e7f3a>=_0x5eb802){_0x1e7f3a=_0x5eb802;_0xb58eb5=0xc8;}else{_0xb58eb5=0xce;}_0x11d471['status'](_0xb58eb5);return _0x11d471[_0x3ae4('0x1f')](_0x3ae4('0x20'),_0x466641+'-'+_0x1e7f3a+'/'+_0x5eb802)[_0x3ae4('0x21')](_0x34253f);}return null;};}function patchUpdates(_0x36df65){return function(_0x41d39e){try{jsonpatch['apply'](_0x41d39e,_0x36df65,!![]);}catch(_0x37764e){return BPromise[_0x3ae4('0x22')](_0x37764e);}return _0x41d39e[_0x3ae4('0x23')]();};}function saveUpdates(_0x205ca3,_0x37db15){return function(_0x46666c){if(_0x46666c){return _0x46666c['update'](_0x205ca3)[_0x3ae4('0x24')](function(_0x5e7355){return _0x5e7355;});}return null;};}function removeEntity(_0xe3a4f2,_0x2466be){return function(_0x3ac299){if(_0x3ac299){return _0x3ac299[_0x3ae4('0x25')]()[_0x3ae4('0x24')](function(){_0xe3a4f2[_0x3ae4('0x19')](0xcc)[_0x3ae4('0x1a')]();});}};}function handleEntityNotFound(_0x51e20a,_0x53d0c6){return function(_0x41ffb6){if(!_0x41ffb6){_0x51e20a[_0x3ae4('0x18')](0x194);}return _0x41ffb6;};}function handleError(_0x4c0a75,_0x414c87){_0x414c87=_0x414c87||0x1f4;return function(_0x1f4692){logger['error'](_0x1f4692[_0x3ae4('0x26')]);if(_0x1f4692[_0x3ae4('0x27')]){delete _0x1f4692[_0x3ae4('0x27')];}_0x4c0a75[_0x3ae4('0x19')](_0x414c87)[_0x3ae4('0x28')](_0x1f4692);};}exports[_0x3ae4('0x29')]=function(_0x35e97a,_0x18d8d7){var _0x187dee={},_0x51ae98={},_0xb8ef0={'count':0x0,'rows':[]};var _0x14e5f8=_[_0x3ae4('0x2a')](db[_0x3ae4('0x2b')]['rawAttributes'],function(_0x2cb45e){return{'name':_0x2cb45e[_0x3ae4('0x2c')],'type':_0x2cb45e[_0x3ae4('0x2d')][_0x3ae4('0x2e')]};});_0x51ae98[_0x3ae4('0x2f')]=_[_0x3ae4('0x2a')](_0x14e5f8,_0x3ae4('0x27'));_0x51ae98[_0x3ae4('0x30')]=_['keys'](_0x35e97a[_0x3ae4('0x30')]);_0x51ae98[_0x3ae4('0x31')]=_[_0x3ae4('0x32')](_0x51ae98[_0x3ae4('0x2f')],_0x51ae98[_0x3ae4('0x30')]);_0x187dee[_0x3ae4('0x33')]=_[_0x3ae4('0x32')](_0x51ae98[_0x3ae4('0x2f')],qs[_0x3ae4('0x34')](_0x35e97a[_0x3ae4('0x30')][_0x3ae4('0x34')]));_0x187dee[_0x3ae4('0x33')]=_0x187dee['attributes'][_0x3ae4('0x35')]?_0x187dee['attributes']:_0x51ae98[_0x3ae4('0x2f')];if(!_0x35e97a['query']['hasOwnProperty'](_0x3ae4('0x36'))){_0x187dee[_0x3ae4('0x1c')]=qs[_0x3ae4('0x1c')](_0x35e97a[_0x3ae4('0x30')][_0x3ae4('0x1c')]);_0x187dee[_0x3ae4('0x1b')]=qs[_0x3ae4('0x1b')](_0x35e97a[_0x3ae4('0x30')][_0x3ae4('0x1b')]);}_0x187dee['order']=qs[_0x3ae4('0x37')](_0x35e97a[_0x3ae4('0x30')]['sort']);_0x187dee[_0x3ae4('0x38')]=qs[_0x3ae4('0x31')](_[_0x3ae4('0x39')](_0x35e97a[_0x3ae4('0x30')],_0x51ae98['filters']),_0x14e5f8);if(_0x35e97a[_0x3ae4('0x30')][_0x3ae4('0x3a')]){_0x187dee[_0x3ae4('0x38')]=_['merge'](_0x187dee['where'],{'$or':_['map'](_0x14e5f8,function(_0x705af8){if(_0x705af8['type']!=='VIRTUAL'){var _0x2d5b3f={};_0x2d5b3f[_0x705af8[_0x3ae4('0x27')]]={'$like':'%'+_0x35e97a['query'][_0x3ae4('0x3a')]+'%'};return _0x2d5b3f;}})});}_0x187dee=_['merge']({},_0x187dee,_0x35e97a['options']);var _0x2bc3db={'where':_0x187dee[_0x3ae4('0x38')]};return db['UserProfileSection'][_0x3ae4('0x1e')](_0x2bc3db)['then'](function(_0x14b436){_0xb8ef0['count']=_0x14b436;if(_0x35e97a[_0x3ae4('0x30')]['includeAll']){_0x187dee[_0x3ae4('0x3b')]=[{'all':!![]}];}return db['UserProfileSection'][_0x3ae4('0x3c')](_0x187dee);})[_0x3ae4('0x24')](function(_0x4e4a01){_0xb8ef0[_0x3ae4('0x3d')]=_0x4e4a01;return _0xb8ef0;})[_0x3ae4('0x24')](respondWithFilteredResult(_0x18d8d7,_0x187dee))['catch'](handleError(_0x18d8d7,null));};exports[_0x3ae4('0x3e')]=function(_0x39b98c,_0x1bc210){var _0x5aa86a={'raw':![],'where':{'id':_0x39b98c[_0x3ae4('0x3f')]['id']}},_0x4d3fbf={};_0x4d3fbf[_0x3ae4('0x2f')]=_['keys'](db[_0x3ae4('0x2b')][_0x3ae4('0x40')]);_0x4d3fbf[_0x3ae4('0x30')]=_[_0x3ae4('0x41')](_0x39b98c[_0x3ae4('0x30')]);_0x4d3fbf['filters']=_[_0x3ae4('0x32')](_0x4d3fbf[_0x3ae4('0x2f')],_0x4d3fbf[_0x3ae4('0x30')]);_0x5aa86a[_0x3ae4('0x33')]=_[_0x3ae4('0x32')](_0x4d3fbf[_0x3ae4('0x2f')],qs[_0x3ae4('0x34')](_0x39b98c['query'][_0x3ae4('0x34')]));_0x5aa86a[_0x3ae4('0x33')]=_0x5aa86a[_0x3ae4('0x33')][_0x3ae4('0x35')]?_0x5aa86a[_0x3ae4('0x33')]:_0x4d3fbf['model'];if(_0x39b98c[_0x3ae4('0x30')][_0x3ae4('0x42')]){_0x5aa86a[_0x3ae4('0x3b')]=[{'all':!![]}];}_0x5aa86a=_[_0x3ae4('0x43')]({},_0x5aa86a,_0x39b98c[_0x3ae4('0x44')]);return db[_0x3ae4('0x2b')][_0x3ae4('0x45')](_0x5aa86a)['then'](handleEntityNotFound(_0x1bc210,null))[_0x3ae4('0x24')](respondWithResult(_0x1bc210,null))[_0x3ae4('0x46')](handleError(_0x1bc210,null));};exports[_0x3ae4('0x47')]=function(_0x27eae6,_0x4d07c5){return db[_0x3ae4('0x2b')]['create'](_0x27eae6[_0x3ae4('0x48')],{})[_0x3ae4('0x24')](respondWithResult(_0x4d07c5,0xc9))['catch'](handleError(_0x4d07c5,null));};exports[_0x3ae4('0x49')]=function(_0xa841b4,_0x209c64){if(_0xa841b4[_0x3ae4('0x48')]['id']){delete _0xa841b4[_0x3ae4('0x48')]['id'];}return db[_0x3ae4('0x2b')]['find']({'where':{'id':_0xa841b4[_0x3ae4('0x3f')]['id']}})[_0x3ae4('0x24')](handleEntityNotFound(_0x209c64,null))[_0x3ae4('0x24')](saveUpdates(_0xa841b4[_0x3ae4('0x48')],null))[_0x3ae4('0x24')](respondWithResult(_0x209c64,null))['catch'](handleError(_0x209c64,null));};exports[_0x3ae4('0x25')]=function(_0x5f42fd,_0x25e8ab){return db[_0x3ae4('0x2b')][_0x3ae4('0x45')]({'where':{'id':_0x5f42fd[_0x3ae4('0x3f')]['id']}})[_0x3ae4('0x24')](handleEntityNotFound(_0x25e8ab,null))[_0x3ae4('0x24')](removeEntity(_0x25e8ab,null))[_0x3ae4('0x46')](handleError(_0x25e8ab,null));};exports['describe']=function(_0x59413f,_0x4165f4){return db['UserProfileSection'][_0x3ae4('0x4a')]()[_0x3ae4('0x24')](respondWithResult(_0x4165f4,null))['catch'](handleError(_0x4165f4,null));};
\ No newline at end of file
index 041ee01..5ee5554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf57e=['api','moment','request-promise','path','exports','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','util','../../config/logger'];(function(_0x41df0f,_0x40b19c){var _0x533667=function(_0x213395){while(--_0x213395){_0x41df0f['push'](_0x41df0f['shift']());}};_0x533667(++_0x40b19c);}(_0xf57e,0x1e9));var _0xef57=function(_0xce5c89,_0x2dc142){_0xce5c89=_0xce5c89-0x0;var _0x508b89=_0xf57e[_0xce5c89];return _0x508b89;};'use strict';var _=require(_0xef57('0x0'));var util=require(_0xef57('0x1'));var logger=require(_0xef57('0x2'))(_0xef57('0x3'));var moment=require(_0xef57('0x4'));var BPromise=require('bluebird');var rp=require(_0xef57('0x5'));var fs=require('fs');var path=require(_0xef57('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userProfileSection.attributes');module[_0xef57('0x7')]=function(_0x3da419,_0x5ee7e5){return _0x3da419['define']('UserProfileSection',attributes,{'tableName':_0xef57('0x8'),'paranoid':![],'indexes':[{'name':_0xef57('0x9'),'fields':[_0xef57('0xa'),_0xef57('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x376c=['UserProfileSection','compositeIndex','sectionId','userProfileId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./userProfileSection.attributes','exports','define'];(function(_0xe75f39,_0x5570ea){var _0x52d7bf=function(_0xc38b8a){while(--_0xc38b8a){_0xe75f39['push'](_0xe75f39['shift']());}};_0x52d7bf(++_0x5570ea);}(_0x376c,0x1e4));var _0xc376=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0x376c[_0x2d2c16];return _0x53f2fb;};'use strict';var _=require(_0xc376('0x0'));var util=require(_0xc376('0x1'));var logger=require(_0xc376('0x2'))(_0xc376('0x3'));var moment=require(_0xc376('0x4'));var BPromise=require(_0xc376('0x5'));var rp=require(_0xc376('0x6'));var fs=require('fs');var path=require(_0xc376('0x7'));var rimraf=require(_0xc376('0x8'));var config=require('../../config/environment');var attributes=require(_0xc376('0x9'));module[_0xc376('0xa')]=function(_0x5e9a19,_0x8e4e08){return _0x5e9a19[_0xc376('0xb')](_0xc376('0xc'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0xc376('0xd'),'fields':[_0xc376('0xe'),_0xc376('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index d71a2cb..a3da52a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35ad=['debug','UserProfileSection,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','UserProfileSection,\x20%s,\x20%s','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','http','request','then','info'];(function(_0x1c0991,_0x4f22d2){var _0x5034de=function(_0x520f49){while(--_0x520f49){_0x1c0991['push'](_0x1c0991['shift']());}};_0x5034de(++_0x4f22d2);}(_0x35ad,0xc7));var _0xd35a=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x35ad[_0x243b59];return _0x3e1676;};'use strict';var _=require(_0xd35a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd35a('0x1'));var rs=require(_0xd35a('0x2'));var fs=require('fs');var Redis=require(_0xd35a('0x3'));var db=require(_0xd35a('0x4'))['db'];var utils=require(_0xd35a('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xd35a('0x6'));var client=jayson['client'][_0xd35a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2e32d8,_0x5cc2c8,_0x527e78){return new BPromise(function(_0x1b3d3a,_0x17ae1c){return client[_0xd35a('0x8')](_0x2e32d8,_0x527e78)[_0xd35a('0x9')](function(_0x52789d){logger[_0xd35a('0xa')]('UserProfileSection,\x20%s,\x20%s',_0x5cc2c8,'request\x20sent');logger[_0xd35a('0xb')](_0xd35a('0xc'),_0x5cc2c8,_0xd35a('0xd'),JSON[_0xd35a('0xe')](_0x52789d));if(_0x52789d[_0xd35a('0xf')]){if(_0x52789d[_0xd35a('0xf')][_0xd35a('0x10')]===0x1f4){logger[_0xd35a('0xf')](_0xd35a('0x11'),_0x5cc2c8,_0x52789d[_0xd35a('0xf')][_0xd35a('0x12')]);return _0x17ae1c(_0x52789d['error'][_0xd35a('0x12')]);}logger['error'](_0xd35a('0x11'),_0x5cc2c8,_0x52789d[_0xd35a('0xf')][_0xd35a('0x12')]);return _0x1b3d3a(_0x52789d[_0xd35a('0xf')][_0xd35a('0x12')]);}else{logger['info']('UserProfileSection,\x20%s,\x20%s',_0x5cc2c8,'request\x20sent');_0x1b3d3a(_0x52789d[_0xd35a('0x13')]['message']);}})[_0xd35a('0x14')](function(_0x190023){logger[_0xd35a('0xf')]('UserProfileSection,\x20%s,\x20%s',_0x5cc2c8,_0x190023);_0x17ae1c(_0x190023);});});}
\ No newline at end of file
+var _0x3b5c=['then','info','request\x20sent','stringify','code','error','UserProfileSection,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x334e4d,_0x3b4c68){var _0x314957=function(_0x35258a){while(--_0x35258a){_0x334e4d['push'](_0x334e4d['shift']());}};_0x314957(++_0x3b4c68);}(_0x3b5c,0xa4));var _0xc3b5=function(_0x3cf1e7,_0x170447){_0x3cf1e7=_0x3cf1e7-0x0;var _0x4a21c4=_0x3b5c[_0x3cf1e7];return _0x4a21c4;};'use strict';var _=require(_0xc3b5('0x0'));var util=require(_0xc3b5('0x1'));var moment=require('moment');var BPromise=require(_0xc3b5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc3b5('0x3'));var db=require(_0xc3b5('0x4'))['db'];var utils=require(_0xc3b5('0x5'));var logger=require(_0xc3b5('0x6'))(_0xc3b5('0x7'));var config=require(_0xc3b5('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc3b5('0x9')][_0xc3b5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3c2c,_0x511507,_0x415a62){return new BPromise(function(_0xc08f98,_0x27741e){return client[_0xc3b5('0xb')](_0x1d3c2c,_0x415a62)[_0xc3b5('0xc')](function(_0x23ae17){logger[_0xc3b5('0xd')]('UserProfileSection,\x20%s,\x20%s',_0x511507,_0xc3b5('0xe'));logger['debug']('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x511507,_0xc3b5('0xe'),JSON[_0xc3b5('0xf')](_0x23ae17));if(_0x23ae17['error']){if(_0x23ae17['error'][_0xc3b5('0x10')]===0x1f4){logger[_0xc3b5('0x11')](_0xc3b5('0x12'),_0x511507,_0x23ae17[_0xc3b5('0x11')][_0xc3b5('0x13')]);return _0x27741e(_0x23ae17['error'][_0xc3b5('0x13')]);}logger[_0xc3b5('0x11')]('UserProfileSection,\x20%s,\x20%s',_0x511507,_0x23ae17[_0xc3b5('0x11')][_0xc3b5('0x13')]);return _0xc08f98(_0x23ae17[_0xc3b5('0x11')][_0xc3b5('0x13')]);}else{logger[_0xc3b5('0xd')](_0xc3b5('0x12'),_0x511507,_0xc3b5('0xe'));_0xc08f98(_0x23ae17[_0xc3b5('0x14')][_0xc3b5('0x13')]);}})[_0xc3b5('0x15')](function(_0x4ba0b8){logger[_0xc3b5('0x11')](_0xc3b5('0x12'),_0x511507,_0x4ba0b8);_0x27741e(_0x4ba0b8);});});}
\ No newline at end of file
index 71d52ad..48ce94e 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(_0x447a9f,_0x48619b){var _0x1286fc=function(_0x3ae69c){while(--_0x3ae69c){_0x447a9f['push'](_0x447a9f['shift']());}};_0x1286fc(++_0x48619b);}(_0x9c44,0x178));var _0x49c4=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x9c44[_0x334841];return _0x5beb4b;};'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(_0xcec2e3,_0x2b6ac9){var _0xc0dbd9=function(_0x2e3fb0){while(--_0x2e3fb0){_0xcec2e3['push'](_0xcec2e3['shift']());}};_0xc0dbd9(++_0x2b6ac9);}(_0xe706,0xa3));var _0x6e70=function(_0x246426,_0x505c21){_0x246426=_0x246426-0x0;var _0x320fcf=_0xe706[_0x246426];return _0x320fcf;};'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 4c4d2c1..e174381 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdccf=['exports','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdccf,0x118));var _0xfdcc=function(_0x30c0c8,_0x3d7c2){_0x30c0c8=_0x30c0c8-0x0;var _0x334b49=_0xdccf[_0x30c0c8];return _0x334b49;};'use strict';var Sequelize=require('sequelize');module[_0xfdcc('0x0')]={'penalty':{'type':Sequelize[_0xfdcc('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd999=['exports','INTEGER','sequelize'];(function(_0x54f4f1,_0x2e603b){var _0x14b71f=function(_0x410ca5){while(--_0x410ca5){_0x54f4f1['push'](_0x54f4f1['shift']());}};_0x14b71f(++_0x2e603b);}(_0xd999,0x122));var _0x9d99=function(_0x2bf031,_0x2e84d8){_0x2bf031=_0x2bf031-0x0;var _0x215504=_0xd999[_0x2bf031];return _0x215504;};'use strict';var Sequelize=require(_0x9d99('0x0'));module[_0x9d99('0x1')]={'penalty':{'type':Sequelize[_0x9d99('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 9ea4b60..554e110 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fdc=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','define','lodash','util','../../config/logger','api'];(function(_0x5a5221,_0x581f4a){var _0x3560cb=function(_0x1041db){while(--_0x1041db){_0x5a5221['push'](_0x5a5221['shift']());}};_0x3560cb(++_0x581f4a);}(_0x5fdc,0x127));var _0xc5fd=function(_0x4d57c9,_0x9ed9d9){_0x4d57c9=_0x4d57c9-0x0;var _0x3d13c5=_0x5fdc[_0x4d57c9];return _0x3d13c5;};'use strict';var _=require(_0xc5fd('0x0'));var util=require(_0xc5fd('0x1'));var logger=require(_0xc5fd('0x2'))(_0xc5fd('0x3'));var moment=require(_0xc5fd('0x4'));var BPromise=require(_0xc5fd('0x5'));var rp=require(_0xc5fd('0x6'));var fs=require('fs');var path=require(_0xc5fd('0x7'));var rimraf=require(_0xc5fd('0x8'));var config=require(_0xc5fd('0x9'));var attributes=require(_0xc5fd('0xa'));module[_0xc5fd('0xb')]=function(_0x44722b,_0x216902){return _0x44722b[_0xc5fd('0xc')]('UserSmsQueue',attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d17=['lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./userSmsQueue.attributes','exports','define','UserSmsQueue','user_has_sms_queues'];(function(_0x5ade21,_0x16ab18){var _0x274341=function(_0x240501){while(--_0x240501){_0x5ade21['push'](_0x5ade21['shift']());}};_0x274341(++_0x16ab18);}(_0x5d17,0x114));var _0x75d1=function(_0x5c08cb,_0x456960){_0x5c08cb=_0x5c08cb-0x0;var _0x147907=_0x5d17[_0x5c08cb];return _0x147907;};'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':[],'timestamps':!![]});};
\ No newline at end of file
index 41a742f..adeac92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecee=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0xecee,0x6e));var _0xeece=function(_0x1fad6c,_0xa51b69){_0x1fad6c=_0x1fad6c-0x0;var _0x5d3a6b=_0xecee[_0x1fad6c];return _0x5d3a6b;};'use strict';var _=require(_0xeece('0x0'));var util=require(_0xeece('0x1'));var moment=require(_0xeece('0x2'));var BPromise=require(_0xeece('0x3'));var rs=require(_0xeece('0x4'));var fs=require('fs');var Redis=require(_0xeece('0x5'));var db=require(_0xeece('0x6'))['db'];var utils=require(_0xeece('0x7'));var logger=require(_0xeece('0x8'))(_0xeece('0x9'));var config=require(_0xeece('0xa'));var jayson=require(_0xeece('0xb'));var client=jayson[_0xeece('0xc')][_0xeece('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x8feeca,_0xe62840,_0x330571){return new BPromise(function(_0x63351,_0x391057){return client[_0xeece('0xe')](_0x8feeca,_0x330571)[_0xeece('0xf')](function(_0x1d785d){logger['info'](_0xeece('0x10'),_0xe62840,_0xeece('0x11'));logger[_0xeece('0x12')](_0xeece('0x13'),_0xe62840,_0xeece('0x11'),JSON[_0xeece('0x14')](_0x1d785d));if(_0x1d785d[_0xeece('0x15')]){if(_0x1d785d[_0xeece('0x15')][_0xeece('0x16')]===0x1f4){logger['error'](_0xeece('0x10'),_0xe62840,_0x1d785d[_0xeece('0x15')][_0xeece('0x17')]);return _0x391057(_0x1d785d[_0xeece('0x15')][_0xeece('0x17')]);}logger['error'](_0xeece('0x10'),_0xe62840,_0x1d785d[_0xeece('0x15')][_0xeece('0x17')]);return _0x63351(_0x1d785d['error'][_0xeece('0x17')]);}else{logger[_0xeece('0x18')](_0xeece('0x10'),_0xe62840,_0xeece('0x11'));_0x63351(_0x1d785d[_0xeece('0x19')]['message']);}})[_0xeece('0x1a')](function(_0x4a1ec0){logger[_0xeece('0x15')](_0xeece('0x10'),_0xe62840,_0x4a1ec0);_0x391057(_0x4a1ec0);});});}
\ No newline at end of file
+var _0x423d=['error','message','result','catch','util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x30a825,_0x74d4e9){var _0x26554f=function(_0x32fed4){while(--_0x32fed4){_0x30a825['push'](_0x30a825['shift']());}};_0x26554f(++_0x74d4e9);}(_0x423d,0xca));var _0xd423=function(_0x44bf3f,_0x18242a){_0x44bf3f=_0x44bf3f-0x0;var _0x58a82c=_0x423d[_0x44bf3f];return _0x58a82c;};'use strict';var _=require('lodash');var util=require(_0xd423('0x0'));var moment=require(_0xd423('0x1'));var BPromise=require(_0xd423('0x2'));var rs=require(_0xd423('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd423('0x4'));var logger=require('../../config/logger')(_0xd423('0x5'));var config=require(_0xd423('0x6'));var jayson=require(_0xd423('0x7'));var client=jayson[_0xd423('0x8')][_0xd423('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3f3db7,_0x2f6bf4,_0xf52b4){return new BPromise(function(_0xa51649,_0x42a821){return client[_0xd423('0xa')](_0x3f3db7,_0xf52b4)[_0xd423('0xb')](function(_0x2242e8){logger[_0xd423('0xc')](_0xd423('0xd'),_0x2f6bf4,_0xd423('0xe'));logger[_0xd423('0xf')](_0xd423('0x10'),_0x2f6bf4,_0xd423('0xe'),JSON[_0xd423('0x11')](_0x2242e8));if(_0x2242e8[_0xd423('0x12')]){if(_0x2242e8[_0xd423('0x12')]['code']===0x1f4){logger[_0xd423('0x12')](_0xd423('0xd'),_0x2f6bf4,_0x2242e8[_0xd423('0x12')]['message']);return _0x42a821(_0x2242e8['error'][_0xd423('0x13')]);}logger[_0xd423('0x12')](_0xd423('0xd'),_0x2f6bf4,_0x2242e8[_0xd423('0x12')]['message']);return _0xa51649(_0x2242e8[_0xd423('0x12')][_0xd423('0x13')]);}else{logger['info'](_0xd423('0xd'),_0x2f6bf4,_0xd423('0xe'));_0xa51649(_0x2242e8[_0xd423('0x14')][_0xd423('0x13')]);}})[_0xd423('0x15')](function(_0x18014f){logger[_0xd423('0x12')]('UserSmsQueue,\x20%s,\x20%s',_0x2f6bf4,_0x18014f);_0x42a821(_0x18014f);});});}
\ No newline at end of file
index c5a5bae..e113980 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x31624d,_0x5d502b){var _0x5cb843=function(_0x5bb9d4){while(--_0x5bb9d4){_0x31624d['push'](_0x31624d['shift']());}};_0x5cb843(++_0x5d502b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x41b816,_0x49a78e){var _0x14e6f0=function(_0xd5c943){while(--_0xd5c943){_0x41b816['push'](_0x41b816['shift']());}};_0x14e6f0(++_0x49a78e);}(_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 b2bc30e..56edf2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x795e=['sequelize','exports','INTEGER'];(function(_0x5e8917,_0x3a1df5){var _0x20374a=function(_0x5931a6){while(--_0x5931a6){_0x5e8917['push'](_0x5e8917['shift']());}};_0x20374a(++_0x3a1df5);}(_0x795e,0x9c));var _0xe795=function(_0x1dc2ea,_0x1feb45){_0x1dc2ea=_0x1dc2ea-0x0;var _0x2130e9=_0x795e[_0x1dc2ea];return _0x2130e9;};'use strict';var Sequelize=require(_0xe795('0x0'));module[_0xe795('0x1')]={'penalty':{'type':Sequelize[_0xe795('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5ee2=['INTEGER','exports'];(function(_0x22cf99,_0x5cd249){var _0x1c09c4=function(_0x337d4d){while(--_0x337d4d){_0x22cf99['push'](_0x22cf99['shift']());}};_0x1c09c4(++_0x5cd249);}(_0x5ee2,0x1b3));var _0x25ee=function(_0x2c2e19,_0x501c06){_0x2c2e19=_0x2c2e19-0x0;var _0x3ec422=_0x5ee2[_0x2c2e19];return _0x3ec422;};'use strict';var Sequelize=require('sequelize');module[_0x25ee('0x0')]={'penalty':{'type':Sequelize[_0x25ee('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 443bbe3..4208c9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0af4=['UserVoiceQueue','user_has_voice_queues','lodash','../../config/logger','api','moment','bluebird','path','rimraf','./userVoiceQueue.attributes','exports'];(function(_0xd58ee8,_0x2ecdc0){var _0x13c09f=function(_0x160507){while(--_0x160507){_0xd58ee8['push'](_0xd58ee8['shift']());}};_0x13c09f(++_0x2ecdc0);}(_0x0af4,0x1a4));var _0x40af=function(_0xd6c8b9,_0x16db15){_0xd6c8b9=_0xd6c8b9-0x0;var _0x4da67f=_0x0af4[_0xd6c8b9];return _0x4da67f;};'use strict';var _=require(_0x40af('0x0'));var util=require('util');var logger=require(_0x40af('0x1'))(_0x40af('0x2'));var moment=require(_0x40af('0x3'));var BPromise=require(_0x40af('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x40af('0x5'));var rimraf=require(_0x40af('0x6'));var config=require('../../config/environment');var attributes=require(_0x40af('0x7'));module[_0x40af('0x8')]=function(_0x5d98a1,_0x23686a){return _0x5d98a1['define'](_0x40af('0x9'),attributes,{'tableName':_0x40af('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6d3e=['define','UserVoiceQueue','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./userVoiceQueue.attributes','exports'];(function(_0x826e7b,_0x543a38){var _0x4f2153=function(_0x66a6dd){while(--_0x66a6dd){_0x826e7b['push'](_0x826e7b['shift']());}};_0x4f2153(++_0x543a38);}(_0x6d3e,0x77));var _0xe6d3=function(_0x2483f6,_0x70bc75){_0x2483f6=_0x2483f6-0x0;var _0x44f7b9=_0x6d3e[_0x2483f6];return _0x44f7b9;};'use strict';var _=require(_0xe6d3('0x0'));var util=require(_0xe6d3('0x1'));var logger=require(_0xe6d3('0x2'))(_0xe6d3('0x3'));var moment=require(_0xe6d3('0x4'));var BPromise=require(_0xe6d3('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe6d3('0x6'));var rimraf=require(_0xe6d3('0x7'));var config=require(_0xe6d3('0x8'));var attributes=require(_0xe6d3('0x9'));module[_0xe6d3('0xa')]=function(_0x446e78,_0x2c2cbf){return _0x446e78[_0xe6d3('0xb')](_0xe6d3('0xc'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b063eec..26f9a8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec8d=['error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','UserVoiceQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x3fb0bd,_0x3ac0e7){var _0x1f34f4=function(_0x47a7d5){while(--_0x47a7d5){_0x3fb0bd['push'](_0x3fb0bd['shift']());}};_0x1f34f4(++_0x3ac0e7);}(_0xec8d,0x12c));var _0xdec8=function(_0x145b3c,_0x31ea4a){_0x145b3c=_0x145b3c-0x0;var _0x1b6e36=_0xec8d[_0x145b3c];return _0x1b6e36;};'use strict';var _=require(_0xdec8('0x0'));var util=require('util');var moment=require(_0xdec8('0x1'));var BPromise=require(_0xdec8('0x2'));var rs=require(_0xdec8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdec8('0x4'))['db'];var utils=require(_0xdec8('0x5'));var logger=require(_0xdec8('0x6'))('rpc');var config=require(_0xdec8('0x7'));var jayson=require(_0xdec8('0x8'));var client=jayson[_0xdec8('0x9')][_0xdec8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b9fde,_0x5adbb1,_0x2942ea){return new BPromise(function(_0x2ca4c2,_0x40f44d){return client[_0xdec8('0xb')](_0x1b9fde,_0x2942ea)[_0xdec8('0xc')](function(_0x56e1bc){logger['info'](_0xdec8('0xd'),_0x5adbb1,'request\x20sent');logger['debug']('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x5adbb1,_0xdec8('0xe'),JSON['stringify'](_0x56e1bc));if(_0x56e1bc[_0xdec8('0xf')]){if(_0x56e1bc['error'][_0xdec8('0x10')]===0x1f4){logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0x5adbb1,_0x56e1bc[_0xdec8('0xf')][_0xdec8('0x11')]);return _0x40f44d(_0x56e1bc['error'][_0xdec8('0x11')]);}logger['error'](_0xdec8('0xd'),_0x5adbb1,_0x56e1bc['error']['message']);return _0x2ca4c2(_0x56e1bc[_0xdec8('0xf')]['message']);}else{logger[_0xdec8('0x12')](_0xdec8('0xd'),_0x5adbb1,_0xdec8('0xe'));_0x2ca4c2(_0x56e1bc[_0xdec8('0x13')][_0xdec8('0x11')]);}})[_0xdec8('0x14')](function(_0x2cb426){logger[_0xdec8('0xf')](_0xdec8('0xd'),_0x5adbb1,_0x2cb426);_0x40f44d(_0x2cb426);});});}
\ No newline at end of file
+var _0x490a=['info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','error','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','http','request','then'];(function(_0x593891,_0x262eb1){var _0x83a6e9=function(_0x94b58c){while(--_0x94b58c){_0x593891['push'](_0x593891['shift']());}};_0x83a6e9(++_0x262eb1);}(_0x490a,0xa1));var _0xa490=function(_0x189934,_0x1eb226){_0x189934=_0x189934-0x0;var _0x241579=_0x490a[_0x189934];return _0x241579;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xa490('0x0'));var BPromise=require(_0xa490('0x1'));var rs=require(_0xa490('0x2'));var fs=require('fs');var Redis=require(_0xa490('0x3'));var db=require(_0xa490('0x4'))['db'];var utils=require(_0xa490('0x5'));var logger=require('../../config/logger')(_0xa490('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xa490('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4d3fb7,_0x372919,_0x2b27df){return new BPromise(function(_0x3351ae,_0xd8ff4e){return client[_0xa490('0x8')](_0x4d3fb7,_0x2b27df)[_0xa490('0x9')](function(_0x3d8b3c){logger[_0xa490('0xa')](_0xa490('0xb'),_0x372919,_0xa490('0xc'));logger[_0xa490('0xd')](_0xa490('0xe'),_0x372919,_0xa490('0xc'),JSON['stringify'](_0x3d8b3c));if(_0x3d8b3c[_0xa490('0xf')]){if(_0x3d8b3c['error']['code']===0x1f4){logger[_0xa490('0xf')](_0xa490('0xb'),_0x372919,_0x3d8b3c['error']['message']);return _0xd8ff4e(_0x3d8b3c[_0xa490('0xf')][_0xa490('0x10')]);}logger[_0xa490('0xf')](_0xa490('0xb'),_0x372919,_0x3d8b3c[_0xa490('0xf')]['message']);return _0x3351ae(_0x3d8b3c[_0xa490('0xf')][_0xa490('0x10')]);}else{logger[_0xa490('0xa')]('UserVoiceQueue,\x20%s,\x20%s',_0x372919,'request\x20sent');_0x3351ae(_0x3d8b3c[_0xa490('0x11')][_0xa490('0x10')]);}})[_0xa490('0x12')](function(_0x117080){logger[_0xa490('0xf')](_0xa490('0xb'),_0x372919,_0x117080);_0xd8ff4e(_0x117080);});});}
\ No newline at end of file
index 0f18038..4a268c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x534380,_0x4c3a1d){var _0x18f1c0=function(_0x1cdc97){while(--_0x1cdc97){_0x534380['push'](_0x534380['shift']());}};_0x18f1c0(++_0x4c3a1d);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x65bb45,_0x31c36b){var _0x347e1a=function(_0x7b7841){while(--_0x7b7841){_0x65bb45['push'](_0x65bb45['shift']());}};_0x347e1a(++_0x31c36b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2c2980,_0x34282a){_0x2c2980=_0x2c2980-0x0;var _0x2a20a9=_0xcb91[_0x2c2980];return _0x2a20a9;};'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 cafddd1..a574ce3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x325c=['exports','INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface','sequelize'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x325c,0x1b5));var _0xc325=function(_0x1361ce,_0x5a20b5){_0x1361ce=_0x1361ce-0x0;var _0x3f26b1=_0x325c[_0x1361ce];return _0x3f26b1;};'use strict';var Sequelize=require(_0xc325('0x0'));module[_0xc325('0x1')]={'uniqueid':{'type':Sequelize[_0xc325('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xc325('0x3')},'membername':{'type':Sequelize[_0xc325('0x4')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0xc325('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xc325('0x4')],'allowNull':![],'unique':_0xc325('0x5'),'comment':_0xc325('0x3')},'VoiceQueueId':{'type':Sequelize[_0xc325('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xc325('0x4')],'allowNull':![],'unique':_0xc325('0x5'),'comment':_0xc325('0x3')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xc325('0x3')},'paused':{'type':Sequelize[_0xc325('0x2')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
+var _0x22df=['INTEGER','queue_interface','sequelize','exports','STRING','Required\x20by\x20Asterisk'];(function(_0xd7bc1f,_0x440429){var _0x1a5504=function(_0x38bd10){while(--_0x38bd10){_0xd7bc1f['push'](_0xd7bc1f['shift']());}};_0x1a5504(++_0x440429);}(_0x22df,0xda));var _0xf22d=function(_0x48a8a9,_0x359f31){_0x48a8a9=_0x48a8a9-0x0;var _0xb492f=_0x22df[_0x48a8a9];return _0xb492f;};'use strict';var Sequelize=require(_0xf22d('0x0'));module[_0xf22d('0x1')]={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0xf22d('0x2')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize[_0xf22d('0x2')],'allowNull':![],'unique':'queue_interface','comment':_0xf22d('0x3')},'VoiceQueueId':{'type':Sequelize[_0xf22d('0x4')],'allowNull':![]},'interface':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xf22d('0x5'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0xf22d('0x4')](0xb),'defaultValue':0x0,'comment':_0xf22d('0x3')},'paused':{'type':Sequelize[_0xf22d('0x4')](0xb),'defaultValue':0x0,'comment':_0xf22d('0x3')}};
\ No newline at end of file
index 3f68fce..dbcb9bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaf6=['emit','exports','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save','update','remove'];(function(_0x516d17,_0x33afaf){var _0x841c1d=function(_0xdcac6c){while(--_0xdcac6c){_0x516d17['push'](_0x516d17['shift']());}};_0x841c1d(++_0x33afaf);}(_0xaaf6,0x161));var _0x6aaf=function(_0x41a6e6,_0x12eda5){_0x41a6e6=_0x41a6e6-0x0;var _0x48057b=_0xaaf6[_0x41a6e6];return _0x48057b;};'use strict';var EventEmitter=require(_0x6aaf('0x0'));var UserVoiceQueueRt=require(_0x6aaf('0x1'))['db'][_0x6aaf('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x6aaf('0x3')](0x0);var events={'afterCreate':_0x6aaf('0x4'),'afterUpdate':_0x6aaf('0x5'),'afterDestroy':_0x6aaf('0x6')};function emitEvent(_0x2c9a3a){return function(_0x2540a0,_0x551f04,_0x5916e9){UserVoiceQueueRtEvents[_0x6aaf('0x7')](_0x2c9a3a+':'+_0x2540a0['id'],_0x2540a0);UserVoiceQueueRtEvents[_0x6aaf('0x7')](_0x2c9a3a,_0x2540a0);_0x5916e9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0x6aaf('0x8')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x660d=['hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','emit'];(function(_0x48faf8,_0x53a86e){var _0x5971b5=function(_0xe55806){while(--_0xe55806){_0x48faf8['push'](_0x48faf8['shift']());}};_0x5971b5(++_0x53a86e);}(_0x660d,0x11c));var _0xd660=function(_0x47af7a,_0x1dda36){_0x47af7a=_0x47af7a-0x0;var _0x48df7b=_0x660d[_0x47af7a];return _0x48df7b;};'use strict';var EventEmitter=require(_0xd660('0x0'));var UserVoiceQueueRt=require(_0xd660('0x1'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xd660('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x134438){return function(_0x2e601f,_0x7a81f4,_0x3cdc4e){UserVoiceQueueRtEvents[_0xd660('0x3')](_0x134438+':'+_0x2e601f['id'],_0x2e601f);UserVoiceQueueRtEvents[_0xd660('0x3')](_0x134438,_0x2e601f);_0x3cdc4e(null);};}for(var e in events){if(events[_0xd660('0x4')](e)){var event=events[e];UserVoiceQueueRt[_0xd660('0x5')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
index 5e825b3..181b4b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d4a=['bluebird','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment'];(function(_0x1eaf9a,_0x4a10c3){var _0x1fbedb=function(_0x261b11){while(--_0x261b11){_0x1eaf9a['push'](_0x1eaf9a['shift']());}};_0x1fbedb(++_0x4a10c3);}(_0x3d4a,0xb1));var _0xa3d4=function(_0x12df39,_0x2542b5){_0x12df39=_0x12df39-0x0;var _0x2fbe3a=_0x3d4a[_0x12df39];return _0x2fbe3a;};'use strict';var _=require(_0xa3d4('0x0'));var util=require(_0xa3d4('0x1'));var logger=require(_0xa3d4('0x2'))(_0xa3d4('0x3'));var moment=require(_0xa3d4('0x4'));var BPromise=require(_0xa3d4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa3d4('0x6'));var rimraf=require(_0xa3d4('0x7'));var config=require(_0xa3d4('0x8'));var attributes=require(_0xa3d4('0x9'));module[_0xa3d4('0xa')]=function(_0x37080b,_0x5f035f){return _0x37080b[_0xa3d4('0xb')](_0xa3d4('0xc'),attributes,{'tableName':_0xa3d4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa61c=['rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','api','request-promise'];(function(_0x272cc7,_0x21b931){var _0x3033dc=function(_0x5d4185){while(--_0x5d4185){_0x272cc7['push'](_0x272cc7['shift']());}};_0x3033dc(++_0x21b931);}(_0xa61c,0x19e));var _0xca61=function(_0x4eee5e,_0x4899e4){_0x4eee5e=_0x4eee5e-0x0;var _0x483a21=_0xa61c[_0x4eee5e];return _0x483a21;};'use strict';var _=require(_0xca61('0x0'));var util=require(_0xca61('0x1'));var logger=require('../../config/logger')(_0xca61('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xca61('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xca61('0x4'));var config=require(_0xca61('0x5'));var attributes=require(_0xca61('0x6'));module[_0xca61('0x7')]=function(_0x5d1d21,_0x3f1022){return _0x5d1d21[_0xca61('0x8')](_0xca61('0x9'),attributes,{'tableName':_0xca61('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1c932ec..7f28bc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcd5=['stringify','error','code','message','UserVoiceQueueRt,\x20%s,\x20%s','catch','UserVoiceQueueRt','options','raw','where','COUNT','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','GetVoiceQueueRtPauses','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','redis','localhost','./userVoiceQueueRt.socket','register','request','then','info','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s'];(function(_0x448f8,_0x2aa1d7){var _0xa73126=function(_0x1fcafa){while(--_0x1fcafa){_0x448f8['push'](_0x448f8['shift']());}};_0xa73126(++_0x2aa1d7);}(_0xbcd5,0xbf));var _0x5bcd=function(_0x3e32a8,_0x255953){_0x3e32a8=_0x3e32a8-0x0;var _0x2997b0=_0xbcd5[_0x3e32a8];return _0x2997b0;};'use strict';var _=require('lodash');var util=require(_0x5bcd('0x0'));var moment=require('moment');var BPromise=require(_0x5bcd('0x1'));var rs=require(_0x5bcd('0x2'));var fs=require('fs');var Redis=require(_0x5bcd('0x3'));var db=require(_0x5bcd('0x4'))['db'];var utils=require(_0x5bcd('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x5bcd('0x6'));var client=jayson[_0x5bcd('0x7')][_0x5bcd('0x8')]({'port':0x232a});config[_0x5bcd('0x9')]=_['defaults'](config[_0x5bcd('0x9')],{'host':_0x5bcd('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5bcd('0x9')]));require(_0x5bcd('0xb'))[_0x5bcd('0xc')](socket);function respondWithRpcPromise(_0x21f9c1,_0x3407b3,_0x2c8cfa){return new BPromise(function(_0x6d7e72,_0xf7aea3){return client[_0x5bcd('0xd')](_0x21f9c1,_0x2c8cfa)[_0x5bcd('0xe')](function(_0x9704aa){logger[_0x5bcd('0xf')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3407b3,_0x5bcd('0x10'));logger[_0x5bcd('0x11')](_0x5bcd('0x12'),_0x3407b3,_0x5bcd('0x10'),JSON[_0x5bcd('0x13')](_0x9704aa));if(_0x9704aa[_0x5bcd('0x14')]){if(_0x9704aa[_0x5bcd('0x14')][_0x5bcd('0x15')]===0x1f4){logger[_0x5bcd('0x14')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3407b3,_0x9704aa[_0x5bcd('0x14')][_0x5bcd('0x16')]);return _0xf7aea3(_0x9704aa[_0x5bcd('0x14')][_0x5bcd('0x16')]);}logger[_0x5bcd('0x14')](_0x5bcd('0x17'),_0x3407b3,_0x9704aa[_0x5bcd('0x14')][_0x5bcd('0x16')]);return _0x6d7e72(_0x9704aa[_0x5bcd('0x14')][_0x5bcd('0x16')]);}else{logger['info'](_0x5bcd('0x17'),_0x3407b3,'request\x20sent');_0x6d7e72(_0x9704aa['result'][_0x5bcd('0x16')]);}})[_0x5bcd('0x18')](function(_0x239cfc){logger[_0x5bcd('0x14')](_0x5bcd('0x17'),_0x3407b3,_0x239cfc);_0xf7aea3(_0x239cfc);});});}exports['GetVoiceQueueRtPauses']=function(_0x1eaa25){var _0x45583b=this;return new Promise(function(_0x2fcedf,_0xb7bec2){return db[_0x5bcd('0x19')]['findAll']({'raw':_0x1eaa25[_0x5bcd('0x1a')]?_0x1eaa25[_0x5bcd('0x1a')][_0x5bcd('0x1b')]===undefined?!![]:![]:!![],'where':_0x1eaa25[_0x5bcd('0x1a')]?_0x1eaa25[_0x5bcd('0x1a')][_0x5bcd('0x1c')]||null:null,'attributes':[[db['sequelize']['fn'](_0x5bcd('0x1d'),db[_0x5bcd('0x1e')]['fn']('IF',db[_0x5bcd('0x1e')][_0x5bcd('0x1f')](_0x5bcd('0x20')))),_0x5bcd('0x21')]]})[_0x5bcd('0xe')](function(_0x2af04e){logger[_0x5bcd('0xf')](_0x5bcd('0x22'),_0x1eaa25);logger[_0x5bcd('0x11')](_0x5bcd('0x22'),_0x1eaa25,JSON[_0x5bcd('0x13')](_0x2af04e));_0x2fcedf(_0x2af04e);})[_0x5bcd('0x18')](function(_0x447272){logger['error'](_0x5bcd('0x22'),_0x447272[_0x5bcd('0x16')],_0x1eaa25);_0xb7bec2(_0x45583b[_0x5bcd('0x14')](0x1f4,_0x447272['message']));});});};
\ No newline at end of file
+var _0x455e=['then','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','GetVoiceQueueRtPauses','findAll','options','raw','sequelize','outboundQueuePauses','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','socket.io-emitter','redis','./userVoiceQueueRt.socket','register','request'];(function(_0x1cd926,_0xf4b2a2){var _0x3b29ba=function(_0x863480){while(--_0x863480){_0x1cd926['push'](_0x1cd926['shift']());}};_0x3b29ba(++_0xf4b2a2);}(_0x455e,0x1f0));var _0xe455=function(_0x38b2e7,_0x2f605b){_0x38b2e7=_0x38b2e7-0x0;var _0x308d09=_0x455e[_0x38b2e7];return _0x308d09;};'use strict';var _=require(_0xe455('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe455('0x1'));var rs=require(_0xe455('0x2'));var fs=require('fs');var Redis=require(_0xe455('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe455('0x4'));var logger=require(_0xe455('0x5'))(_0xe455('0x6'));var config=require(_0xe455('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe455('0x8')][_0xe455('0x9')]({'port':0x232a});config['redis']=_[_0xe455('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xe455('0xb'))(new Redis(config[_0xe455('0xc')]));require(_0xe455('0xd'))[_0xe455('0xe')](socket);function respondWithRpcPromise(_0x4e830f,_0x54cad4,_0x4ffd0f){return new BPromise(function(_0x43f1f5,_0x335274){return client[_0xe455('0xf')](_0x4e830f,_0x4ffd0f)[_0xe455('0x10')](function(_0x38cb68){logger['info'](_0xe455('0x11'),_0x54cad4,_0xe455('0x12'));logger[_0xe455('0x13')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x54cad4,_0xe455('0x12'),JSON[_0xe455('0x14')](_0x38cb68));if(_0x38cb68[_0xe455('0x15')]){if(_0x38cb68[_0xe455('0x15')][_0xe455('0x16')]===0x1f4){logger[_0xe455('0x15')](_0xe455('0x11'),_0x54cad4,_0x38cb68[_0xe455('0x15')][_0xe455('0x17')]);return _0x335274(_0x38cb68[_0xe455('0x15')][_0xe455('0x17')]);}logger[_0xe455('0x15')](_0xe455('0x11'),_0x54cad4,_0x38cb68['error']['message']);return _0x43f1f5(_0x38cb68[_0xe455('0x15')][_0xe455('0x17')]);}else{logger[_0xe455('0x18')](_0xe455('0x11'),_0x54cad4,'request\x20sent');_0x43f1f5(_0x38cb68[_0xe455('0x19')][_0xe455('0x17')]);}})['catch'](function(_0x335d48){logger[_0xe455('0x15')](_0xe455('0x11'),_0x54cad4,_0x335d48);_0x335274(_0x335d48);});});}exports[_0xe455('0x1a')]=function(_0x5e2318){var _0x944a6c=this;return new Promise(function(_0x285dcc,_0x4915ba){return db['UserVoiceQueueRt'][_0xe455('0x1b')]({'raw':_0x5e2318[_0xe455('0x1c')]?_0x5e2318['options'][_0xe455('0x1d')]===undefined?!![]:![]:!![],'where':_0x5e2318[_0xe455('0x1c')]?_0x5e2318[_0xe455('0x1c')]['where']||null:null,'attributes':[[db[_0xe455('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal']('`paused`\x20=\x201,\x201,\x20null'))),_0xe455('0x1f')]]})[_0xe455('0x10')](function(_0x36f9ae){logger[_0xe455('0x18')](_0xe455('0x1a'),_0x5e2318);logger[_0xe455('0x13')](_0xe455('0x1a'),_0x5e2318,JSON['stringify'](_0x36f9ae));_0x285dcc(_0x36f9ae);})['catch'](function(_0x489793){logger[_0xe455('0x15')](_0xe455('0x1a'),_0x489793[_0xe455('0x17')],_0x5e2318);_0x4915ba(_0x944a6c[_0xe455('0x15')](0x1f4,_0x489793[_0xe455('0x17')]));});});};
\ No newline at end of file
index 45d01fa..96d7914 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86f4=['length','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove','update','register'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x86f4,0x18a));var _0x486f=function(_0x3f4732,_0x136984){_0x3f4732=_0x3f4732-0x0;var _0x137ff7=_0x86f4[_0x3f4732];return _0x137ff7;};'use strict';var UserVoiceQueueRtEvents=require(_0x486f('0x0'));var events=[_0x486f('0x1'),_0x486f('0x2'),_0x486f('0x3')];function createListener(_0x3e0b4f,_0x10339c){return function(_0x45067a){_0x10339c['emit'](_0x3e0b4f,_0x45067a);};}function removeListener(_0xf8d50f,_0x1539b1){return function(){UserVoiceQueueRtEvents['removeListener'](_0xf8d50f,_0x1539b1);};}exports[_0x486f('0x4')]=function(_0x1adb27){for(var _0x39f767=0x0,_0x207201=events[_0x486f('0x5')];_0x39f767<_0x207201;_0x39f767++){var _0x3a0791=events[_0x39f767];var _0x5bfabc=createListener(_0x486f('0x6')+_0x3a0791,_0x1adb27);UserVoiceQueueRtEvents['on'](_0x3a0791,_0x5bfabc);}};
\ No newline at end of file
+var _0xd2bb=['save','update','emit','removeListener','register','length','userVoiceQueueRt:'];(function(_0x1fb12c,_0x5a9596){var _0x2e7dfc=function(_0x3a8850){while(--_0x3a8850){_0x1fb12c['push'](_0x1fb12c['shift']());}};_0x2e7dfc(++_0x5a9596);}(_0xd2bb,0x9a));var _0xbd2b=function(_0xbae403,_0x14a38e){_0xbae403=_0xbae403-0x0;var _0x5a1a45=_0xd2bb[_0xbae403];return _0x5a1a45;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0xbd2b('0x0'),'remove',_0xbd2b('0x1')];function createListener(_0x1b0c46,_0x29f98f){return function(_0x334128){_0x29f98f[_0xbd2b('0x2')](_0x1b0c46,_0x334128);};}function removeListener(_0x3c67c1,_0x5c41c7){return function(){UserVoiceQueueRtEvents[_0xbd2b('0x3')](_0x3c67c1,_0x5c41c7);};}exports[_0xbd2b('0x4')]=function(_0xdcd8bd){for(var _0x2f64a8=0x0,_0x296d68=events[_0xbd2b('0x5')];_0x2f64a8<_0x296d68;_0x2f64a8++){var _0x42fee1=events[_0x2f64a8];var _0x30cd3f=createListener(_0xbd2b('0x6')+_0x42fee1,_0xdcd8bd);UserVoiceQueueRtEvents['on'](_0x42fee1,_0x30cd3f);}};
\ No newline at end of file
index 2a61c3f..b5e3d12 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(_0x5c1504,_0x5b3e76){var _0x3b6ed7=function(_0x9f2fe8){while(--_0x9f2fe8){_0x5c1504['push'](_0x5c1504['shift']());}};_0x3b6ed7(++_0x5b3e76);}(_0xe706,0xa3));var _0x6e70=function(_0x5c8811,_0x4f77d5){_0x5c8811=_0x5c8811-0x0;var _0x2c0941=_0xe706[_0x5c8811];return _0x2c0941;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0xf62f27,_0x249f1d){var _0x4f7985=function(_0x54875b){while(--_0x54875b){_0xf62f27['push'](_0xf62f27['shift']());}};_0x4f7985(++_0x249f1d);}(_0x9c44,0x178));var _0x49c4=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x9c44[_0x53ccf2];return _0x5a2964;};'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 2f27452..2c1375a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c02=['exports','INTEGER','sequelize'];(function(_0x33fe59,_0x448a3e){var _0x5d5fe4=function(_0x189c02){while(--_0x189c02){_0x33fe59['push'](_0x33fe59['shift']());}};_0x5d5fe4(++_0x448a3e);}(_0x8c02,0x10d));var _0x28c0=function(_0x118cf8,_0xcb1b62){_0x118cf8=_0x118cf8-0x0;var _0x33c591=_0x8c02[_0x118cf8];return _0x33c591;};'use strict';var Sequelize=require(_0x28c0('0x0'));module[_0x28c0('0x1')]={'penalty':{'type':Sequelize[_0x28c0('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8565=['sequelize','exports','INTEGER'];(function(_0x1d6f03,_0x5a015c){var _0x5e7152=function(_0x109211){while(--_0x109211){_0x1d6f03['push'](_0x1d6f03['shift']());}};_0x5e7152(++_0x5a015c);}(_0x8565,0x192));var _0x5856=function(_0x351f18,_0x12868d){_0x351f18=_0x351f18-0x0;var _0x292685=_0x8565[_0x351f18];return _0x292685;};'use strict';var Sequelize=require(_0x5856('0x0'));module[_0x5856('0x1')]={'penalty':{'type':Sequelize[_0x5856('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index e086320..b228bfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d35=['bluebird','request-promise','path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','util','../../config/logger','api','moment'];(function(_0x13d718,_0x5ccfa4){var _0x39f08a=function(_0x35a53a){while(--_0x35a53a){_0x13d718['push'](_0x13d718['shift']());}};_0x39f08a(++_0x5ccfa4);}(_0x4d35,0x130));var _0x54d3=function(_0x53f810,_0x55c41d){_0x53f810=_0x53f810-0x0;var _0x5d9db9=_0x4d35[_0x53f810];return _0x5d9db9;};'use strict';var _=require('lodash');var util=require(_0x54d3('0x0'));var logger=require(_0x54d3('0x1'))(_0x54d3('0x2'));var moment=require(_0x54d3('0x3'));var BPromise=require(_0x54d3('0x4'));var rp=require(_0x54d3('0x5'));var fs=require('fs');var path=require(_0x54d3('0x6'));var rimraf=require(_0x54d3('0x7'));var config=require(_0x54d3('0x8'));var attributes=require(_0x54d3('0x9'));module[_0x54d3('0xa')]=function(_0x516c2e,_0x93893b){return _0x516c2e[_0x54d3('0xb')](_0x54d3('0xc'),attributes,{'tableName':_0x54d3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7417=['request-promise','path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','moment','bluebird'];(function(_0x5e89e2,_0x2dd5ac){var _0x1a96f2=function(_0x1c1a5b){while(--_0x1c1a5b){_0x5e89e2['push'](_0x5e89e2['shift']());}};_0x1a96f2(++_0x2dd5ac);}(_0x7417,0xd5));var _0x7741=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x7417[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x7741('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x7741('0x1'));var BPromise=require(_0x7741('0x2'));var rp=require(_0x7741('0x3'));var fs=require('fs');var path=require(_0x7741('0x4'));var rimraf=require(_0x7741('0x5'));var config=require(_0x7741('0x6'));var attributes=require(_0x7741('0x7'));module[_0x7741('0x8')]=function(_0x134c97,_0x178898){return _0x134c97[_0x7741('0x9')](_0x7741('0xa'),attributes,{'tableName':_0x7741('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f501ffc..b94ef41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47e7=['../../config/environment','jayson/promise','client','http','request','then','info','UserWhatsappQueue,\x20%s,\x20%s','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0x1625f0,_0x1eae0c){var _0x3b2490=function(_0x36e46a){while(--_0x36e46a){_0x1625f0['push'](_0x1625f0['shift']());}};_0x3b2490(++_0x1eae0c);}(_0x47e7,0x1c6));var _0x747e=function(_0x11803c,_0x1dac4f){_0x11803c=_0x11803c-0x0;var _0x5bffda=_0x47e7[_0x11803c];return _0x5bffda;};'use strict';var _=require(_0x747e('0x0'));var util=require(_0x747e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x747e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x747e('0x3'))['db'];var utils=require(_0x747e('0x4'));var logger=require('../../config/logger')(_0x747e('0x5'));var config=require(_0x747e('0x6'));var jayson=require(_0x747e('0x7'));var client=jayson[_0x747e('0x8')][_0x747e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3eee5d,_0x1a580d,_0x1f4d0a){return new BPromise(function(_0x1120aa,_0x17e1ae){return client[_0x747e('0xa')](_0x3eee5d,_0x1f4d0a)[_0x747e('0xb')](function(_0x19174b){logger[_0x747e('0xc')](_0x747e('0xd'),_0x1a580d,'request\x20sent');logger[_0x747e('0xe')](_0x747e('0xf'),_0x1a580d,_0x747e('0x10'),JSON[_0x747e('0x11')](_0x19174b));if(_0x19174b[_0x747e('0x12')]){if(_0x19174b['error'][_0x747e('0x13')]===0x1f4){logger[_0x747e('0x12')](_0x747e('0xd'),_0x1a580d,_0x19174b[_0x747e('0x12')][_0x747e('0x14')]);return _0x17e1ae(_0x19174b[_0x747e('0x12')]['message']);}logger[_0x747e('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x1a580d,_0x19174b[_0x747e('0x12')]['message']);return _0x1120aa(_0x19174b['error'][_0x747e('0x14')]);}else{logger['info'](_0x747e('0xd'),_0x1a580d,'request\x20sent');_0x1120aa(_0x19174b[_0x747e('0x15')][_0x747e('0x14')]);}})[_0x747e('0x16')](function(_0x14bfb7){logger[_0x747e('0x12')](_0x747e('0xd'),_0x1a580d,_0x14bfb7);_0x17e1ae(_0x14bfb7);});});}
\ No newline at end of file
+var _0x7284=['jayson/promise','http','request','then','UserWhatsappQueue,\x20%s,\x20%s','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x6364f4,_0x28a052){var _0x8d6548=function(_0x2dfbec){while(--_0x2dfbec){_0x6364f4['push'](_0x6364f4['shift']());}};_0x8d6548(++_0x28a052);}(_0x7284,0x175));var _0x4728=function(_0x25c6aa,_0x30c1bc){_0x25c6aa=_0x25c6aa-0x0;var _0x432ee2=_0x7284[_0x25c6aa];return _0x432ee2;};'use strict';var _=require('lodash');var util=require(_0x4728('0x0'));var moment=require(_0x4728('0x1'));var BPromise=require(_0x4728('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4728('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x4728('0x4'))(_0x4728('0x5'));var config=require(_0x4728('0x6'));var jayson=require(_0x4728('0x7'));var client=jayson['client'][_0x4728('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x536218,_0x4417a6,_0x8b3940){return new BPromise(function(_0x58603c,_0xd4a71e){return client[_0x4728('0x9')](_0x536218,_0x8b3940)[_0x4728('0xa')](function(_0x5a239d){logger['info'](_0x4728('0xb'),_0x4417a6,'request\x20sent');logger[_0x4728('0xc')](_0x4728('0xd'),_0x4417a6,_0x4728('0xe'),JSON['stringify'](_0x5a239d));if(_0x5a239d[_0x4728('0xf')]){if(_0x5a239d['error'][_0x4728('0x10')]===0x1f4){logger[_0x4728('0xf')](_0x4728('0xb'),_0x4417a6,_0x5a239d['error']['message']);return _0xd4a71e(_0x5a239d[_0x4728('0xf')]['message']);}logger[_0x4728('0xf')](_0x4728('0xb'),_0x4417a6,_0x5a239d[_0x4728('0xf')][_0x4728('0x11')]);return _0x58603c(_0x5a239d[_0x4728('0xf')][_0x4728('0x11')]);}else{logger['info'](_0x4728('0xb'),_0x4417a6,_0x4728('0xe'));_0x58603c(_0x5a239d[_0x4728('0x12')][_0x4728('0x11')]);}})[_0x4728('0x13')](function(_0x15a2cb){logger[_0x4728('0xf')](_0x4728('0xb'),_0x4417a6,_0x15a2cb);_0xd4a71e(_0x15a2cb);});});}
\ No newline at end of file
index 17a5e45..20e439b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d25=['post','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./variable.controller','get','isAuthenticated','index'];(function(_0x51e17c,_0x63b8ab){var _0x558828=function(_0x93f9a1){while(--_0x93f9a1){_0x51e17c['push'](_0x51e17c['shift']());}};_0x558828(++_0x63b8ab);}(_0x1d25,0xba));var _0x51d2=function(_0x4382bc,_0x231a2d){_0x4382bc=_0x4382bc-0x0;var _0x13c82a=_0x1d25[_0x4382bc];return _0x13c82a;};'use strict';var multer=require(_0x51d2('0x0'));var util=require(_0x51d2('0x1'));var path=require(_0x51d2('0x2'));var timeout=require(_0x51d2('0x3'));var express=require(_0x51d2('0x4'));var router=express['Router']();var fs_extra=require(_0x51d2('0x5'));var auth=require(_0x51d2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x51d2('0x7'));var controller=require(_0x51d2('0x8'));router[_0x51d2('0x9')]('/',auth[_0x51d2('0xa')](),controller[_0x51d2('0xb')]);router[_0x51d2('0x9')]('/:id',auth[_0x51d2('0xa')](),controller['show']);router[_0x51d2('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x51d2('0xd')](_0x51d2('0xe'),auth[_0x51d2('0xa')](),controller[_0x51d2('0xf')]);router['delete'](_0x51d2('0xe'),auth[_0x51d2('0xa')](),controller[_0x51d2('0x10')]);module[_0x51d2('0x11')]=router;
\ No newline at end of file
+var _0xab5b=['get','isAuthenticated','index','/:id','show','post','put','delete','destroy','exports','multer','util','connect-timeout','express','../../components/auth/service','../../config/environment','./variable.controller'];(function(_0x5679e3,_0x5b035c){var _0x1769e1=function(_0x5d010b){while(--_0x5d010b){_0x5679e3['push'](_0x5679e3['shift']());}};_0x1769e1(++_0x5b035c);}(_0xab5b,0x11a));var _0xbab5=function(_0x1b21be,_0x2ccf31){_0x1b21be=_0x1b21be-0x0;var _0x29002a=_0xab5b[_0x1b21be];return _0x29002a;};'use strict';var multer=require(_0xbab5('0x0'));var util=require(_0xbab5('0x1'));var path=require('path');var timeout=require(_0xbab5('0x2'));var express=require(_0xbab5('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xbab5('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xbab5('0x5'));var controller=require(_0xbab5('0x6'));router[_0xbab5('0x7')]('/',auth[_0xbab5('0x8')](),controller[_0xbab5('0x9')]);router['get'](_0xbab5('0xa'),auth[_0xbab5('0x8')](),controller[_0xbab5('0xb')]);router[_0xbab5('0xc')]('/',auth[_0xbab5('0x8')](),controller['create']);router[_0xbab5('0xd')](_0xbab5('0xa'),auth[_0xbab5('0x8')](),controller['update']);router[_0xbab5('0xe')](_0xbab5('0xa'),auth['isAuthenticated'](),controller[_0xbab5('0xf')]);module[_0xbab5('0x10')]=router;
\ No newline at end of file
index 46de43b..b2d44e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a05=['name','exports','STRING'];(function(_0x54b8f3,_0x19b8c5){var _0x3fc5da=function(_0x9d48f6){while(--_0x9d48f6){_0x54b8f3['push'](_0x54b8f3['shift']());}};_0x3fc5da(++_0x19b8c5);}(_0x5a05,0x17b));var _0x55a0=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5a05[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module[_0x55a0('0x0')]={'name':{'type':Sequelize[_0x55a0('0x1')],'unique':_0x55a0('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x119a=['sequelize','exports','STRING'];(function(_0x5b2ae4,_0x5b92cd){var _0x222073=function(_0x5f9f7f){while(--_0x5f9f7f){_0x5b2ae4['push'](_0x5b2ae4['shift']());}};_0x222073(++_0x5b92cd);}(_0x119a,0x69));var _0xa119=function(_0x39f397,_0x1dcf38){_0x39f397=_0x39f397-0x0;var _0x2225bd=_0x119a[_0x39f397];return _0x2225bd;};'use strict';var Sequelize=require(_0xa119('0x0'));module[_0xa119('0x1')]={'name':{'type':Sequelize[_0xa119('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xa119('0x2')]}};
\ No newline at end of file
index 893f515..1fb18f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x707e=['squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','name','send','index','fieldName','type','key','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','Variable','includeAll','findAll','rows','params','rawAttributes','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x707e,0x9d));var _0xe707=function(_0xef8146,_0x459c34){_0xef8146=_0xef8146-0x0;var _0x5a6cb0=_0x707e[_0xef8146];return _0x5a6cb0;};'use strict';var emlformat=require(_0xe707('0x0'));var rimraf=require(_0xe707('0x1'));var zipdir=require(_0xe707('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe707('0x3'));var moment=require('moment');var BPromise=require(_0xe707('0x4'));var Mustache=require(_0xe707('0x5'));var util=require(_0xe707('0x6'));var path=require(_0xe707('0x7'));var sox=require(_0xe707('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe707('0x9'));var crypto=require(_0xe707('0xa'));var jsforce=require(_0xe707('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xe707('0xc'));var querystring=require('querystring');var Papa=require(_0xe707('0xd'));var Redis=require(_0xe707('0xe'));var authService=require(_0xe707('0xf'));var qs=require(_0xe707('0x10'));var as=require(_0xe707('0x11'));var hardwareService=require(_0xe707('0x12'));var logger=require(_0xe707('0x13'))(_0xe707('0x14'));var utils=require(_0xe707('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xe707('0x16'));var db=require(_0xe707('0x17'))['db'];function respondWithStatusCode(_0x1baed8,_0x2a9837){_0x2a9837=_0x2a9837||0xcc;return function(_0x2c5c04){if(_0x2c5c04){return _0x1baed8[_0xe707('0x18')](_0x2a9837);}return _0x1baed8[_0xe707('0x19')](_0x2a9837)[_0xe707('0x1a')]();};}function respondWithResult(_0xbb50f0,_0x532487){_0x532487=_0x532487||0xc8;return function(_0x1bec08){if(_0x1bec08){return _0xbb50f0['status'](_0x532487)[_0xe707('0x1b')](_0x1bec08);}};}function respondWithFilteredResult(_0x5ae104,_0x34a6e1){return function(_0x4d9896){if(_0x4d9896){var _0x35d0ed=typeof _0x34a6e1[_0xe707('0x1c')]==='undefined'&&typeof _0x34a6e1[_0xe707('0x1d')]==='undefined';var _0x251f13=_0x4d9896[_0xe707('0x1e')];var _0x16b3aa=_0x35d0ed?0x0:_0x34a6e1['offset'];var _0x15e104=_0x35d0ed?_0x4d9896[_0xe707('0x1e')]:_0x34a6e1['offset']+_0x34a6e1[_0xe707('0x1d')];var _0x4a2bcd;if(_0x15e104>=_0x251f13){_0x15e104=_0x251f13;_0x4a2bcd=0xc8;}else{_0x4a2bcd=0xce;}_0x5ae104['status'](_0x4a2bcd);return _0x5ae104[_0xe707('0x1f')](_0xe707('0x20'),_0x16b3aa+'-'+_0x15e104+'/'+_0x251f13)[_0xe707('0x1b')](_0x4d9896);}return null;};}function patchUpdates(_0xe4cd07){return function(_0x3aacd3){try{jsonpatch[_0xe707('0x21')](_0x3aacd3,_0xe4cd07,!![]);}catch(_0x124071){return BPromise[_0xe707('0x22')](_0x124071);}return _0x3aacd3[_0xe707('0x23')]();};}function saveUpdates(_0x53a95e,_0x4ce20f){return function(_0x72188){if(_0x72188){return _0x72188[_0xe707('0x24')](_0x53a95e)[_0xe707('0x25')](function(_0x92f7af){return _0x92f7af;});}return null;};}function removeEntity(_0x1d8523,_0xc17c53){return function(_0x50f985){if(_0x50f985){return _0x50f985[_0xe707('0x26')]()[_0xe707('0x25')](function(){var _0x251520=_0x50f985[_0xe707('0x27')]({'plain':!![]});var _0x1cb59c='Variables';return db[_0xe707('0x28')][_0xe707('0x26')]({'where':{'type':_0x1cb59c,'resourceId':_0x251520['id']}})[_0xe707('0x25')](function(){return _0x50f985;});})[_0xe707('0x25')](function(){_0x1d8523[_0xe707('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e62c2,_0x19691b){return function(_0x84e5f8){if(!_0x84e5f8){_0x1e62c2[_0xe707('0x18')](0x194);}return _0x84e5f8;};}function handleError(_0x44bc7c,_0x29e98e){_0x29e98e=_0x29e98e||0x1f4;return function(_0x3e72e7){logger['error'](_0x3e72e7['stack']);if(_0x3e72e7[_0xe707('0x29')]){delete _0x3e72e7[_0xe707('0x29')];}_0x44bc7c[_0xe707('0x19')](_0x29e98e)[_0xe707('0x2a')](_0x3e72e7);};}exports[_0xe707('0x2b')]=function(_0x53bece,_0x56f515){var _0x348413={},_0x2290ec={},_0xc0eea3={'count':0x0,'rows':[]};var _0x5f2d50=_['map'](db['Variable']['rawAttributes'],function(_0x1e715b){return{'name':_0x1e715b[_0xe707('0x2c')],'type':_0x1e715b[_0xe707('0x2d')][_0xe707('0x2e')]};});_0x2290ec['model']=_[_0xe707('0x2f')](_0x5f2d50,_0xe707('0x29'));_0x2290ec[_0xe707('0x30')]=_[_0xe707('0x31')](_0x53bece[_0xe707('0x30')]);_0x2290ec['filters']=_[_0xe707('0x32')](_0x2290ec[_0xe707('0x33')],_0x2290ec[_0xe707('0x30')]);_0x348413[_0xe707('0x34')]=_[_0xe707('0x32')](_0x2290ec[_0xe707('0x33')],qs['fields'](_0x53bece[_0xe707('0x30')][_0xe707('0x35')]));_0x348413[_0xe707('0x34')]=_0x348413[_0xe707('0x34')][_0xe707('0x36')]?_0x348413[_0xe707('0x34')]:_0x2290ec['model'];if(!_0x53bece[_0xe707('0x30')][_0xe707('0x37')]('nolimit')){_0x348413[_0xe707('0x1d')]=qs[_0xe707('0x1d')](_0x53bece[_0xe707('0x30')][_0xe707('0x1d')]);_0x348413['offset']=qs[_0xe707('0x1c')](_0x53bece['query'][_0xe707('0x1c')]);}_0x348413[_0xe707('0x38')]=qs[_0xe707('0x39')](_0x53bece[_0xe707('0x30')][_0xe707('0x39')]);_0x348413[_0xe707('0x3a')]=qs[_0xe707('0x3b')](_[_0xe707('0x3c')](_0x53bece[_0xe707('0x30')],_0x2290ec['filters']),_0x5f2d50);if(_0x53bece[_0xe707('0x30')][_0xe707('0x3d')]){_0x348413[_0xe707('0x3a')]=_[_0xe707('0x3e')](_0x348413[_0xe707('0x3a')],{'$or':_[_0xe707('0x2f')](_0x5f2d50,function(_0x14ef7b){if(_0x14ef7b[_0xe707('0x2d')]!==_0xe707('0x3f')){var _0x140dde={};_0x140dde[_0x14ef7b[_0xe707('0x29')]]={'$like':'%'+_0x53bece[_0xe707('0x30')]['filter']+'%'};return _0x140dde;}})});}_0x348413=_[_0xe707('0x3e')]({},_0x348413,_0x53bece[_0xe707('0x40')]);var _0x2f3197={'where':_0x348413[_0xe707('0x3a')]};return db[_0xe707('0x41')][_0xe707('0x1e')](_0x2f3197)[_0xe707('0x25')](function(_0x3b732f){_0xc0eea3['count']=_0x3b732f;if(_0x53bece[_0xe707('0x30')][_0xe707('0x42')]){_0x348413['include']=[{'all':!![]}];}return db['Variable'][_0xe707('0x43')](_0x348413);})[_0xe707('0x25')](function(_0x330127){_0xc0eea3[_0xe707('0x44')]=_0x330127;return _0xc0eea3;})[_0xe707('0x25')](respondWithFilteredResult(_0x56f515,_0x348413))['catch'](handleError(_0x56f515,null));};exports['show']=function(_0x18a301,_0x8eeca4){var _0x4fd4a3={'raw':!![],'where':{'id':_0x18a301[_0xe707('0x45')]['id']}},_0x2ee5b0={};_0x2ee5b0[_0xe707('0x33')]=_[_0xe707('0x31')](db['Variable'][_0xe707('0x46')]);_0x2ee5b0[_0xe707('0x30')]=_[_0xe707('0x31')](_0x18a301[_0xe707('0x30')]);_0x2ee5b0[_0xe707('0x3b')]=_['intersection'](_0x2ee5b0[_0xe707('0x33')],_0x2ee5b0[_0xe707('0x30')]);_0x4fd4a3['attributes']=_[_0xe707('0x32')](_0x2ee5b0[_0xe707('0x33')],qs[_0xe707('0x35')](_0x18a301[_0xe707('0x30')][_0xe707('0x35')]));_0x4fd4a3['attributes']=_0x4fd4a3[_0xe707('0x34')][_0xe707('0x36')]?_0x4fd4a3[_0xe707('0x34')]:_0x2ee5b0[_0xe707('0x33')];if(_0x18a301[_0xe707('0x30')][_0xe707('0x42')]){_0x4fd4a3['include']=[{'all':!![]}];}_0x4fd4a3=_['merge']({},_0x4fd4a3,_0x18a301['options']);return db[_0xe707('0x41')][_0xe707('0x47')](_0x4fd4a3)[_0xe707('0x25')](handleEntityNotFound(_0x8eeca4,null))[_0xe707('0x25')](respondWithResult(_0x8eeca4,null))[_0xe707('0x48')](handleError(_0x8eeca4,null));};exports['create']=function(_0xa0a39c,_0xd3b340){return db['Variable'][_0xe707('0x49')](_0xa0a39c['body'],{})[_0xe707('0x25')](function(_0x399313){var _0x306122=_0xa0a39c['user']['get']({'plain':!![]});if(!_0x306122)throw new Error(_0xe707('0x4a'));if(_0x306122[_0xe707('0x4b')]===_0xe707('0x4c')){var _0x1d3395=_0x399313[_0xe707('0x27')]({'plain':!![]});var _0x14efa7='Variables';return db[_0xe707('0x4d')][_0xe707('0x47')]({'where':{'name':_0x14efa7,'userProfileId':_0x306122[_0xe707('0x4e')]},'raw':!![]})[_0xe707('0x25')](function(_0x5a5dd8){if(_0x5a5dd8&&_0x5a5dd8[_0xe707('0x4f')]===0x0){return db[_0xe707('0x28')][_0xe707('0x49')]({'name':_0x1d3395[_0xe707('0x29')],'resourceId':_0x1d3395['id'],'type':_0x5a5dd8[_0xe707('0x29')],'sectionId':_0x5a5dd8['id']},{})[_0xe707('0x25')](function(){return _0x399313;});}else{return _0x399313;}})[_0xe707('0x48')](function(_0x41a091){logger[_0xe707('0x50')](_0xe707('0x51'),_0x41a091);throw _0x41a091;});}return _0x399313;})[_0xe707('0x25')](respondWithResult(_0xd3b340,0xc9))['catch'](handleError(_0xd3b340,null));};exports[_0xe707('0x24')]=function(_0x190132,_0x49335b){if(_0x190132['body']['id']){delete _0x190132[_0xe707('0x52')]['id'];}return db[_0xe707('0x41')]['find']({'where':{'id':_0x190132[_0xe707('0x45')]['id']}})['then'](handleEntityNotFound(_0x49335b,null))[_0xe707('0x25')](saveUpdates(_0x190132['body'],null))['then'](respondWithResult(_0x49335b,null))[_0xe707('0x48')](handleError(_0x49335b,null));};exports[_0xe707('0x26')]=function(_0x4f87ad,_0x44f48a){return db['Variable']['find']({'where':{'id':_0x4f87ad[_0xe707('0x45')]['id']}})[_0xe707('0x25')](handleEntityNotFound(_0x44f48a,null))['then'](removeEntity(_0x44f48a,null))[_0xe707('0x48')](handleError(_0x44f48a,null));};
\ No newline at end of file
+var _0x677c=['index','map','Variable','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','autoAssociation','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','update','then','destroy','Variables','UserProfileResource','error','name','send'];(function(_0x1504ce,_0x2ae965){var _0x2cdda9=function(_0x317fc8){while(--_0x317fc8){_0x1504ce['push'](_0x1504ce['shift']());}};_0x2cdda9(++_0x2ae965);}(_0x677c,0x1b1));var _0xc677=function(_0x3d47be,_0x2e9b8c){_0x3d47be=_0x3d47be-0x0;var _0x3a1cf7=_0x677c[_0x3d47be];return _0x3a1cf7;};'use strict';var emlformat=require(_0xc677('0x0'));var rimraf=require(_0xc677('0x1'));var zipdir=require(_0xc677('0x2'));var jsonpatch=require(_0xc677('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc677('0x4'));var util=require(_0xc677('0x5'));var path=require('path');var sox=require(_0xc677('0x6'));var csv=require('to-csv');var ejs=require(_0xc677('0x7'));var fs=require('fs');var fs_extra=require(_0xc677('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc677('0x9'));var jsforce=require(_0xc677('0xa'));var deskjs=require(_0xc677('0xb'));var toCsv=require(_0xc677('0xc'));var querystring=require('querystring');var Papa=require(_0xc677('0xd'));var Redis=require(_0xc677('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc677('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc677('0x10'))(_0xc677('0x11'));var utils=require(_0xc677('0x12'));var config=require(_0xc677('0x13'));var licenseUtil=require(_0xc677('0x14'));var db=require(_0xc677('0x15'))['db'];function respondWithStatusCode(_0x4faffa,_0x571aaf){_0x571aaf=_0x571aaf||0xcc;return function(_0x15dcd6){if(_0x15dcd6){return _0x4faffa[_0xc677('0x16')](_0x571aaf);}return _0x4faffa[_0xc677('0x17')](_0x571aaf)[_0xc677('0x18')]();};}function respondWithResult(_0x1de864,_0x2d6907){_0x2d6907=_0x2d6907||0xc8;return function(_0x5f13c7){if(_0x5f13c7){return _0x1de864['status'](_0x2d6907)[_0xc677('0x19')](_0x5f13c7);}};}function respondWithFilteredResult(_0x2cdc9c,_0x9d83fd){return function(_0x50ee9a){if(_0x50ee9a){var _0x23035e=typeof _0x9d83fd['offset']===_0xc677('0x1a')&&typeof _0x9d83fd[_0xc677('0x1b')]===_0xc677('0x1a');var _0x1075b8=_0x50ee9a[_0xc677('0x1c')];var _0x220029=_0x23035e?0x0:_0x9d83fd[_0xc677('0x1d')];var _0x3048c9=_0x23035e?_0x50ee9a[_0xc677('0x1c')]:_0x9d83fd[_0xc677('0x1d')]+_0x9d83fd['limit'];var _0x5d0280;if(_0x3048c9>=_0x1075b8){_0x3048c9=_0x1075b8;_0x5d0280=0xc8;}else{_0x5d0280=0xce;}_0x2cdc9c[_0xc677('0x17')](_0x5d0280);return _0x2cdc9c[_0xc677('0x1e')]('Content-Range',_0x220029+'-'+_0x3048c9+'/'+_0x1075b8)['json'](_0x50ee9a);}return null;};}function patchUpdates(_0x48f1e4){return function(_0x156bbb){try{jsonpatch['apply'](_0x156bbb,_0x48f1e4,!![]);}catch(_0x39eb76){return BPromise[_0xc677('0x1f')](_0x39eb76);}return _0x156bbb[_0xc677('0x20')]();};}function saveUpdates(_0x7f8c78,_0x1adcaf){return function(_0x4aa548){if(_0x4aa548){return _0x4aa548[_0xc677('0x21')](_0x7f8c78)[_0xc677('0x22')](function(_0x410d1e){return _0x410d1e;});}return null;};}function removeEntity(_0x1d7395,_0x1cd095){return function(_0x431afb){if(_0x431afb){return _0x431afb[_0xc677('0x23')]()['then'](function(){var _0x1d53ac=_0x431afb['get']({'plain':!![]});var _0x20c99d=_0xc677('0x24');return db[_0xc677('0x25')]['destroy']({'where':{'type':_0x20c99d,'resourceId':_0x1d53ac['id']}})['then'](function(){return _0x431afb;});})[_0xc677('0x22')](function(){_0x1d7395[_0xc677('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x744213,_0x25c75d){return function(_0x42ea0a){if(!_0x42ea0a){_0x744213['sendStatus'](0x194);}return _0x42ea0a;};}function handleError(_0x28d5fd,_0x555d74){_0x555d74=_0x555d74||0x1f4;return function(_0x1218da){logger[_0xc677('0x26')](_0x1218da['stack']);if(_0x1218da[_0xc677('0x27')]){delete _0x1218da[_0xc677('0x27')];}_0x28d5fd['status'](_0x555d74)[_0xc677('0x28')](_0x1218da);};}exports[_0xc677('0x29')]=function(_0x420370,_0x45554a){var _0x20befc={},_0x2a667b={},_0x138076={'count':0x0,'rows':[]};var _0x4a1145=_[_0xc677('0x2a')](db[_0xc677('0x2b')][_0xc677('0x2c')],function(_0x398552){return{'name':_0x398552[_0xc677('0x2d')],'type':_0x398552[_0xc677('0x2e')]['key']};});_0x2a667b[_0xc677('0x2f')]=_[_0xc677('0x2a')](_0x4a1145,_0xc677('0x27'));_0x2a667b[_0xc677('0x30')]=_[_0xc677('0x31')](_0x420370[_0xc677('0x30')]);_0x2a667b[_0xc677('0x32')]=_['intersection'](_0x2a667b[_0xc677('0x2f')],_0x2a667b['query']);_0x20befc[_0xc677('0x33')]=_[_0xc677('0x34')](_0x2a667b[_0xc677('0x2f')],qs['fields'](_0x420370[_0xc677('0x30')][_0xc677('0x35')]));_0x20befc[_0xc677('0x33')]=_0x20befc['attributes'][_0xc677('0x36')]?_0x20befc[_0xc677('0x33')]:_0x2a667b[_0xc677('0x2f')];if(!_0x420370['query'][_0xc677('0x37')](_0xc677('0x38'))){_0x20befc['limit']=qs[_0xc677('0x1b')](_0x420370[_0xc677('0x30')][_0xc677('0x1b')]);_0x20befc[_0xc677('0x1d')]=qs[_0xc677('0x1d')](_0x420370['query'][_0xc677('0x1d')]);}_0x20befc[_0xc677('0x39')]=qs[_0xc677('0x3a')](_0x420370[_0xc677('0x30')][_0xc677('0x3a')]);_0x20befc[_0xc677('0x3b')]=qs[_0xc677('0x32')](_[_0xc677('0x3c')](_0x420370[_0xc677('0x30')],_0x2a667b[_0xc677('0x32')]),_0x4a1145);if(_0x420370[_0xc677('0x30')][_0xc677('0x3d')]){_0x20befc['where']=_['merge'](_0x20befc[_0xc677('0x3b')],{'$or':_['map'](_0x4a1145,function(_0x2ce97b){if(_0x2ce97b['type']!==_0xc677('0x3e')){var _0x496aa1={};_0x496aa1[_0x2ce97b['name']]={'$like':'%'+_0x420370['query'][_0xc677('0x3d')]+'%'};return _0x496aa1;}})});}_0x20befc=_['merge']({},_0x20befc,_0x420370['options']);var _0x39546f={'where':_0x20befc[_0xc677('0x3b')]};return db[_0xc677('0x2b')][_0xc677('0x1c')](_0x39546f)[_0xc677('0x22')](function(_0x1d5038){_0x138076[_0xc677('0x1c')]=_0x1d5038;if(_0x420370[_0xc677('0x30')][_0xc677('0x3f')]){_0x20befc[_0xc677('0x40')]=[{'all':!![]}];}return db['Variable'][_0xc677('0x41')](_0x20befc);})['then'](function(_0x315b44){_0x138076[_0xc677('0x42')]=_0x315b44;return _0x138076;})[_0xc677('0x22')](respondWithFilteredResult(_0x45554a,_0x20befc))[_0xc677('0x43')](handleError(_0x45554a,null));};exports[_0xc677('0x44')]=function(_0x3e5b4d,_0x5ea7a3){var _0x16b6e5={'raw':!![],'where':{'id':_0x3e5b4d[_0xc677('0x45')]['id']}},_0x23298d={};_0x23298d[_0xc677('0x2f')]=_[_0xc677('0x31')](db[_0xc677('0x2b')][_0xc677('0x2c')]);_0x23298d['query']=_[_0xc677('0x31')](_0x3e5b4d[_0xc677('0x30')]);_0x23298d['filters']=_[_0xc677('0x34')](_0x23298d[_0xc677('0x2f')],_0x23298d[_0xc677('0x30')]);_0x16b6e5['attributes']=_[_0xc677('0x34')](_0x23298d[_0xc677('0x2f')],qs['fields'](_0x3e5b4d[_0xc677('0x30')][_0xc677('0x35')]));_0x16b6e5[_0xc677('0x33')]=_0x16b6e5[_0xc677('0x33')]['length']?_0x16b6e5[_0xc677('0x33')]:_0x23298d[_0xc677('0x2f')];if(_0x3e5b4d[_0xc677('0x30')][_0xc677('0x3f')]){_0x16b6e5[_0xc677('0x40')]=[{'all':!![]}];}_0x16b6e5=_[_0xc677('0x46')]({},_0x16b6e5,_0x3e5b4d['options']);return db[_0xc677('0x2b')][_0xc677('0x47')](_0x16b6e5)['then'](handleEntityNotFound(_0x5ea7a3,null))[_0xc677('0x22')](respondWithResult(_0x5ea7a3,null))[_0xc677('0x43')](handleError(_0x5ea7a3,null));};exports[_0xc677('0x48')]=function(_0x5132fc,_0x1566be){return db[_0xc677('0x2b')][_0xc677('0x48')](_0x5132fc[_0xc677('0x49')],{})[_0xc677('0x22')](function(_0x4a9c03){var _0x49c821=_0x5132fc[_0xc677('0x4a')]['get']({'plain':!![]});if(!_0x49c821)throw new Error(_0xc677('0x4b'));if(_0x49c821[_0xc677('0x4c')]===_0xc677('0x4a')){var _0xe1fcc5=_0x4a9c03[_0xc677('0x4d')]({'plain':!![]});var _0x3276cf=_0xc677('0x24');return db['UserProfileSection']['find']({'where':{'name':_0x3276cf,'userProfileId':_0x49c821['userProfileId']},'raw':!![]})['then'](function(_0x46c2f3){if(_0x46c2f3&&_0x46c2f3[_0xc677('0x4e')]===0x0){return db[_0xc677('0x25')][_0xc677('0x48')]({'name':_0xe1fcc5[_0xc677('0x27')],'resourceId':_0xe1fcc5['id'],'type':_0x46c2f3['name'],'sectionId':_0x46c2f3['id']},{})['then'](function(){return _0x4a9c03;});}else{return _0x4a9c03;}})[_0xc677('0x43')](function(_0x3a9857){logger[_0xc677('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3a9857);throw _0x3a9857;});}return _0x4a9c03;})[_0xc677('0x22')](respondWithResult(_0x1566be,0xc9))[_0xc677('0x43')](handleError(_0x1566be,null));};exports[_0xc677('0x21')]=function(_0x34ff82,_0x100080){if(_0x34ff82[_0xc677('0x49')]['id']){delete _0x34ff82[_0xc677('0x49')]['id'];}return db['Variable']['find']({'where':{'id':_0x34ff82[_0xc677('0x45')]['id']}})[_0xc677('0x22')](handleEntityNotFound(_0x100080,null))[_0xc677('0x22')](saveUpdates(_0x34ff82['body'],null))[_0xc677('0x22')](respondWithResult(_0x100080,null))[_0xc677('0x43')](handleError(_0x100080,null));};exports['destroy']=function(_0x4e3440,_0x270d04){return db['Variable']['find']({'where':{'id':_0x4e3440[_0xc677('0x45')]['id']}})['then'](handleEntityNotFound(_0x270d04,null))['then'](removeEntity(_0x270d04,null))['catch'](handleError(_0x270d04,null));};
\ No newline at end of file
index f963d79..f3d5248 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x871f=['rimraf','../../config/environment','Variable','tools_variables','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x59d89e,_0x55edf5){var _0x554e93=function(_0x3d40bc){while(--_0x3d40bc){_0x59d89e['push'](_0x59d89e['shift']());}};_0x554e93(++_0x55edf5);}(_0x871f,0x14e));var _0xf871=function(_0x33027a,_0x3a97be){_0x33027a=_0x33027a-0x0;var _0x2f05a8=_0x871f[_0x33027a];return _0x2f05a8;};'use strict';var _=require(_0xf871('0x0'));var util=require(_0xf871('0x1'));var logger=require(_0xf871('0x2'))(_0xf871('0x3'));var moment=require('moment');var BPromise=require(_0xf871('0x4'));var rp=require(_0xf871('0x5'));var fs=require('fs');var path=require(_0xf871('0x6'));var rimraf=require(_0xf871('0x7'));var config=require(_0xf871('0x8'));var attributes=require('./variable.attributes');module['exports']=function(_0x46a9ae,_0x595914){return _0x46a9ae['define'](_0xf871('0x9'),attributes,{'tableName':_0xf871('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa416=['api','bluebird','request-promise','path','exports','define','Variable','tools_variables','lodash','../../config/logger'];(function(_0x326e76,_0x5f3054){var _0x52fc3a=function(_0x5939bd){while(--_0x5939bd){_0x326e76['push'](_0x326e76['shift']());}};_0x52fc3a(++_0x5f3054);}(_0xa416,0x198));var _0x6a41=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xa416[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x6a41('0x0'));var util=require('util');var logger=require(_0x6a41('0x1'))(_0x6a41('0x2'));var moment=require('moment');var BPromise=require(_0x6a41('0x3'));var rp=require(_0x6a41('0x4'));var fs=require('fs');var path=require(_0x6a41('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./variable.attributes');module[_0x6a41('0x6')]=function(_0x25b345,_0x5c660){return _0x25b345[_0x6a41('0x7')](_0x6a41('0x8'),attributes,{'tableName':_0x6a41('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d414988..3a978f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ShowVariable','Variable','find','options','attributes','map','include','model','catch','lodash','util'];(function(_0x113c73,_0x2752b1){var _0x34bc0a=function(_0x3535cc){while(--_0x3535cc){_0x113c73['push'](_0x113c73['shift']());}};_0x34bc0a(++_0x2752b1);}(_0xabce,0x103));var _0xeabc=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xabce[_0xea8947];return _0x2455e9;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Variable,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}exports[_0xeabc('0x14')]=function(_0x58a3c0){var _0x16f08b=this;return new Promise(function(_0x31dd53,_0x31f52a){return db[_0xeabc('0x15')][_0xeabc('0x16')]({'raw':_0x58a3c0['options']?_0x58a3c0[_0xeabc('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')]['where']||null:null,'attributes':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')][_0xeabc('0x18')]||null:null,'include':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')]['include']?_[_0xeabc('0x19')](_0x58a3c0[_0xeabc('0x17')][_0xeabc('0x1a')],function(_0x5bdd57){return{'model':db[_0x5bdd57[_0xeabc('0x1b')]],'as':_0x5bdd57['as'],'attributes':_0x5bdd57[_0xeabc('0x18')],'include':_0x5bdd57[_0xeabc('0x1a')]?_[_0xeabc('0x19')](_0x5bdd57['include'],function(_0x109e1d){return{'model':db[_0x109e1d['model']],'as':_0x109e1d['as'],'attributes':_0x109e1d[_0xeabc('0x18')],'include':_0x109e1d['include']?_[_0xeabc('0x19')](_0x109e1d[_0xeabc('0x1a')],function(_0x269621){return{'model':db[_0x269621[_0xeabc('0x1b')]],'as':_0x269621['as'],'attributes':_0x269621[_0xeabc('0x18')]};}):[]};}):[]};}):[]:[]})[_0xeabc('0x9')](function(_0x131722){logger['info']('ShowVariable',_0x58a3c0);logger[_0xeabc('0xd')]('ShowVariable',_0x58a3c0,JSON[_0xeabc('0xf')](_0x131722));_0x31dd53(_0x131722);})[_0xeabc('0x1c')](function(_0x48fb52){logger[_0xeabc('0x10')](_0xeabc('0x14'),_0x48fb52[_0xeabc('0x12')],_0x58a3c0);_0x31f52a(_0x16f08b[_0xeabc('0x10')](0x1f4,_0x48fb52[_0xeabc('0x12')]));});});};
\ No newline at end of file
+var _0xabce=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ShowVariable','Variable','find','options','attributes','map','include','model','catch','lodash','util'];(function(_0x46e0c2,_0x553599){var _0x5a2208=function(_0x7e917f){while(--_0x7e917f){_0x46e0c2['push'](_0x46e0c2['shift']());}};_0x5a2208(++_0x553599);}(_0xabce,0x103));var _0xeabc=function(_0x31cb5f,_0x2df766){_0x31cb5f=_0x31cb5f-0x0;var _0x586042=_0xabce[_0x31cb5f];return _0x586042;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Variable,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}exports[_0xeabc('0x14')]=function(_0x58a3c0){var _0x16f08b=this;return new Promise(function(_0x31dd53,_0x31f52a){return db[_0xeabc('0x15')][_0xeabc('0x16')]({'raw':_0x58a3c0['options']?_0x58a3c0[_0xeabc('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')]['where']||null:null,'attributes':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')][_0xeabc('0x18')]||null:null,'include':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')]['include']?_[_0xeabc('0x19')](_0x58a3c0[_0xeabc('0x17')][_0xeabc('0x1a')],function(_0x5bdd57){return{'model':db[_0x5bdd57[_0xeabc('0x1b')]],'as':_0x5bdd57['as'],'attributes':_0x5bdd57[_0xeabc('0x18')],'include':_0x5bdd57[_0xeabc('0x1a')]?_[_0xeabc('0x19')](_0x5bdd57['include'],function(_0x109e1d){return{'model':db[_0x109e1d['model']],'as':_0x109e1d['as'],'attributes':_0x109e1d[_0xeabc('0x18')],'include':_0x109e1d['include']?_[_0xeabc('0x19')](_0x109e1d[_0xeabc('0x1a')],function(_0x269621){return{'model':db[_0x269621[_0xeabc('0x1b')]],'as':_0x269621['as'],'attributes':_0x269621[_0xeabc('0x18')]};}):[]};}):[]};}):[]:[]})[_0xeabc('0x9')](function(_0x131722){logger['info']('ShowVariable',_0x58a3c0);logger[_0xeabc('0xd')]('ShowVariable',_0x58a3c0,JSON[_0xeabc('0xf')](_0x131722));_0x31dd53(_0x131722);})[_0xeabc('0x1c')](function(_0x48fb52){logger[_0xeabc('0x10')](_0xeabc('0x14'),_0x48fb52[_0xeabc('0x12')],_0x58a3c0);_0x31f52a(_0x16f08b[_0xeabc('0x10')](0x1f4,_0x48fb52[_0xeabc('0x12')]));});});};
\ No newline at end of file
index 50e59ea..ad1c7ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f9c=['get','isAuthenticated','canUpdate','fetch','/reset','reset','pull','/restart','/migrations','migrations','exports','express','Router','../../components/auth/service','./version.controller','index'];(function(_0x87f17c,_0x581f4a){var _0x418ddd=function(_0x415720){while(--_0x415720){_0x87f17c['push'](_0x87f17c['shift']());}};_0x418ddd(++_0x581f4a);}(_0x6f9c,0x16b));var _0xc6f9=function(_0x142b39,_0x53cdcf){_0x142b39=_0x142b39-0x0;var _0x172ee7=_0x6f9c[_0x142b39];return _0x172ee7;};'use strict';var express=require(_0xc6f9('0x0'));var router=express[_0xc6f9('0x1')]();var auth=require(_0xc6f9('0x2'));var controller=require(_0xc6f9('0x3'));router['get']('/',controller[_0xc6f9('0x4')]);router[_0xc6f9('0x5')]('/fetch',auth[_0xc6f9('0x6')](),auth[_0xc6f9('0x7')](),controller[_0xc6f9('0x8')]);router[_0xc6f9('0x5')](_0xc6f9('0x9'),auth[_0xc6f9('0x6')](),auth[_0xc6f9('0x7')](),controller[_0xc6f9('0xa')]);router[_0xc6f9('0x5')]('/pull',auth[_0xc6f9('0x6')](),auth[_0xc6f9('0x7')](),controller[_0xc6f9('0xb')]);router['get'](_0xc6f9('0xc'),auth[_0xc6f9('0x6')](),controller['restart']);router[_0xc6f9('0x5')](_0xc6f9('0xd'),controller[_0xc6f9('0xe')]);module[_0xc6f9('0xf')]=router;
\ No newline at end of file
+var _0x0276=['reset','/pull','/restart','restart','/migrations','exports','express','Router','../../components/auth/service','get','index','isAuthenticated','canUpdate','fetch','/reset'];(function(_0x43c611,_0x5116e1){var _0x1aff8c=function(_0x430687){while(--_0x430687){_0x43c611['push'](_0x43c611['shift']());}};_0x1aff8c(++_0x5116e1);}(_0x0276,0x16e));var _0x6027=function(_0x3cf053,_0x7a9947){_0x3cf053=_0x3cf053-0x0;var _0x3b55a0=_0x0276[_0x3cf053];return _0x3b55a0;};'use strict';var express=require(_0x6027('0x0'));var router=express[_0x6027('0x1')]();var auth=require(_0x6027('0x2'));var controller=require('./version.controller');router[_0x6027('0x3')]('/',controller[_0x6027('0x4')]);router['get']('/fetch',auth[_0x6027('0x5')](),auth[_0x6027('0x6')](),controller[_0x6027('0x7')]);router[_0x6027('0x3')](_0x6027('0x8'),auth['isAuthenticated'](),auth[_0x6027('0x6')](),controller[_0x6027('0x9')]);router[_0x6027('0x3')](_0x6027('0xa'),auth[_0x6027('0x5')](),auth[_0x6027('0x6')](),controller['pull']);router[_0x6027('0x3')](_0x6027('0xb'),auth['isAuthenticated'](),controller[_0x6027('0xc')]);router['get'](_0x6027('0xd'),controller['migrations']);module[_0x6027('0xe')]=router;
\ No newline at end of file
index 018cf2f..e8ab3ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf167=['../../config/logger','update','simple-git','root','index','exports','query','latest','tags','2.0.0','status','json','fetch','master','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','FETCH_HEAD','error','git\x20reset\x20--hard\x20FETCH_HEAD','motion2','then','catch','migrations','readdirSync','join','server','length','replace','.js','push','sort','Migration','sequelize','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','../../mysqldb','../../config/environment','../../config/pm2'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf167,0x1b9));var _0x7f16=function(_0x1399d6,_0x2c1661){_0x1399d6=_0x1399d6-0x0;var _0x4a9db4=_0xf167[_0x1399d6];return _0x4a9db4;};'use strict';var Umzug=require(_0x7f16('0x0'));var path=require(_0x7f16('0x1'));var fs=require('fs');var _=require(_0x7f16('0x2'));var pkginfo=require(_0x7f16('0x3'))(module,_0x7f16('0x4'));var compareVersions=require(_0x7f16('0x5'));var exec=require('child_process')['exec'];var db=require(_0x7f16('0x6'))['db'];var config=require(_0x7f16('0x7'));var pm2=require(_0x7f16('0x8'));var logger=require(_0x7f16('0x9'))(_0x7f16('0xa'));var git=require(_0x7f16('0xb'))(config[_0x7f16('0xc')]);exports[_0x7f16('0xd')]=function(_0x2a0435,_0x4f9138){var _0x1bd65c={'current':module[_0x7f16('0xe')][_0x7f16('0x4')],'phonebar':0x2};if(_0x2a0435[_0x7f16('0xf')]&&_0x2a0435[_0x7f16('0xf')][_0x7f16('0x10')]){return git['fetch']()[_0x7f16('0x11')](function(_0x3f2fce,_0x26684f){_0x1bd65c['latest']=(_0x3f2fce?module['exports'][_0x7f16('0x4')]:_0x26684f[_0x7f16('0x10')])||_0x7f16('0x12');return _0x4f9138['status'](0xc8)['json'](_0x1bd65c);});}else{return _0x4f9138[_0x7f16('0x13')](0xc8)[_0x7f16('0x14')](_0x1bd65c);}};exports[_0x7f16('0x15')]=function(_0x4e7e81,_0x11b06d){return git[_0x7f16('0x15')](['origin',_0x7f16('0x16')],function(_0x110f05){if(_0x110f05){logger['error'](_0x110f05);return _0x11b06d[_0x7f16('0x13')](0x1f4)['json'](_0x110f05);}logger[_0x7f16('0x17')](_0x7f16('0x18'));return _0x11b06d[_0x7f16('0x13')](0xc8)[_0x7f16('0x14')]({'output':_0x7f16('0x19')});});};exports['reset']=function(_0x244500,_0x4ff90e){return git[_0x7f16('0x1a')](['--hard',_0x7f16('0x1b')],function(_0x1e1414){if(_0x1e1414){logger[_0x7f16('0x1c')](_0x1e1414);return _0x4ff90e[_0x7f16('0x13')](0x1f4)[_0x7f16('0x14')](_0x1e1414);}logger['info'](_0x7f16('0x1d'));return _0x4ff90e[_0x7f16('0x13')](0xc8)[_0x7f16('0x14')]({'output':'git\x20reset\x20--hard'});});};exports['pull']=function(_0x1d8209,_0x21a74c){exec('npm\x20install\x20--production',function(_0x182f0e,_0x478590,_0x10c840){logger[_0x7f16('0x17')](_0x478590);logger[_0x7f16('0x17')](_0x10c840);if(_0x182f0e){logger[_0x7f16('0x1c')](_0x182f0e);return _0x21a74c['status'](0x1f4)[_0x7f16('0x14')](_0x182f0e);}return _0x21a74c[_0x7f16('0x13')](0xc8)[_0x7f16('0x14')]({'output':_0x478590});});};exports['restart']=function(_0x2bfa3d,_0x4ac733){return pm2['restart'](_0x7f16('0x1e'))[_0x7f16('0x1f')](function(_0x311f90){logger[_0x7f16('0x17')]('pm2\x20restart\x20motion\x20%s',_0x311f90);return _0x4ac733['status'](0xc8)['json']({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0x7f16('0x20')](function(_0x208e06){logger[_0x7f16('0x1c')](_0x208e06);return _0x4ac733[_0x7f16('0x13')](0x1f4)['json'](_0x208e06);});};exports[_0x7f16('0x21')]=function(_0x2d8534,_0x5d32a8){var _0x1638ec=fs[_0x7f16('0x22')](path[_0x7f16('0x23')](config[_0x7f16('0xc')],_0x7f16('0x24'),_0x7f16('0x21')));var _0x522190=[];for(var _0x3fd15f=0x0;_0x3fd15f<_0x1638ec[_0x7f16('0x25')];_0x3fd15f++){var _0x53e632=_0x1638ec[_0x3fd15f][_0x7f16('0x26')](_0x7f16('0x27'),'');if(compareVersions(module[_0x7f16('0xe')]['version'],_0x53e632)===-0x1){_0x522190[_0x7f16('0x28')](_0x53e632);}}if(_0x522190[_0x7f16('0x25')]){var _0x1f732e=_0x522190[_0x7f16('0x29')](compareVersions);var _0x331e5c=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0x7f16('0x2a')],'modelName':_0x7f16('0x2a'),'columnName':_0x7f16('0x4')},'migrations':{'params':[db['sequelize']['getQueryInterface'](),db[_0x7f16('0x2b')][_0x7f16('0x2c')],function(){throw new Error(_0x7f16('0x2d'));}],'path':path[_0x7f16('0x23')](config[_0x7f16('0xc')],_0x7f16('0x24'),_0x7f16('0x21')),'pattern':/\.js$/}});_0x331e5c['up']({'migrations':_['map'](_0x1f732e,function(_0x57d7fc){return _0x57d7fc+_0x7f16('0x27');})})[_0x7f16('0x1f')](function(){return _0x5d32a8['status'](0xc8)[_0x7f16('0x14')]({'output':_0x7f16('0x2e')+module['exports'][_0x7f16('0x4')]+_0x7f16('0x2f')+_['last'](_0x1f732e),'migrations':_[_0x7f16('0x23')](_0x1f732e)});})[_0x7f16('0x20')](function(_0x2e2b53){if(_0x2e2b53 instanceof db[_0x7f16('0x2b')][_0x7f16('0x30')]){return _0x5d32a8[_0x7f16('0x13')](0xc8)['json']({'output':_0x7f16('0x31')});}else{return _0x5d32a8[_0x7f16('0x13')](0x1f4)['json'](_0x2e2b53);}});}else{return _0x5d32a8['status'](0xc8)[_0x7f16('0x14')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
+var _0x7a3a=['root','index','exports','version','query','tags','latest','2.0.0','json','status','fetch','origin','error','info','git\x20fetch\x20origin\x20master','reset','--hard','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','readdirSync','join','server','length','replace','.js','push','sort','Migration','sequelize','getQueryInterface','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','migrations','map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','path','lodash','pkginfo','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update'];(function(_0xbd4258,_0x4ab552){var _0x23996a=function(_0x4b2109){while(--_0x4b2109){_0xbd4258['push'](_0xbd4258['shift']());}};_0x23996a(++_0x4ab552);}(_0x7a3a,0xd1));var _0xa7a3=function(_0x1beee7,_0x139a11){_0x1beee7=_0x1beee7-0x0;var _0x58fd88=_0x7a3a[_0x1beee7];return _0x58fd88;};'use strict';var Umzug=require('umzug');var path=require(_0xa7a3('0x0'));var fs=require('fs');var _=require(_0xa7a3('0x1'));var pkginfo=require(_0xa7a3('0x2'))(module,'version');var compareVersions=require(_0xa7a3('0x3'));var exec=require(_0xa7a3('0x4'))[_0xa7a3('0x5')];var db=require(_0xa7a3('0x6'))['db'];var config=require(_0xa7a3('0x7'));var pm2=require(_0xa7a3('0x8'));var logger=require(_0xa7a3('0x9'))(_0xa7a3('0xa'));var git=require('simple-git')(config[_0xa7a3('0xb')]);exports[_0xa7a3('0xc')]=function(_0x104508,_0xa9c65c){var _0x612b40={'current':module[_0xa7a3('0xd')][_0xa7a3('0xe')],'phonebar':0x2};if(_0x104508[_0xa7a3('0xf')]&&_0x104508[_0xa7a3('0xf')]['latest']){return git['fetch']()[_0xa7a3('0x10')](function(_0x153d05,_0x10613e){_0x612b40[_0xa7a3('0x11')]=(_0x153d05?module[_0xa7a3('0xd')][_0xa7a3('0xe')]:_0x10613e[_0xa7a3('0x11')])||_0xa7a3('0x12');return _0xa9c65c['status'](0xc8)[_0xa7a3('0x13')](_0x612b40);});}else{return _0xa9c65c[_0xa7a3('0x14')](0xc8)[_0xa7a3('0x13')](_0x612b40);}};exports[_0xa7a3('0x15')]=function(_0x2de848,_0x4db7a2){return git[_0xa7a3('0x15')]([_0xa7a3('0x16'),'master'],function(_0x22158b){if(_0x22158b){logger[_0xa7a3('0x17')](_0x22158b);return _0x4db7a2[_0xa7a3('0x14')](0x1f4)['json'](_0x22158b);}logger[_0xa7a3('0x18')]('git\x20fetch');return _0x4db7a2['status'](0xc8)[_0xa7a3('0x13')]({'output':_0xa7a3('0x19')});});};exports['reset']=function(_0x5dd884,_0x4df64a){return git[_0xa7a3('0x1a')]([_0xa7a3('0x1b'),'FETCH_HEAD'],function(_0x24b374){if(_0x24b374){logger[_0xa7a3('0x17')](_0x24b374);return _0x4df64a['status'](0x1f4)[_0xa7a3('0x13')](_0x24b374);}logger['info']('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x4df64a[_0xa7a3('0x14')](0xc8)[_0xa7a3('0x13')]({'output':_0xa7a3('0x1c')});});};exports[_0xa7a3('0x1d')]=function(_0x404769,_0x4224d4){exec(_0xa7a3('0x1e'),function(_0x5af0e4,_0x113f54,_0xf90cfa){logger['info'](_0x113f54);logger[_0xa7a3('0x18')](_0xf90cfa);if(_0x5af0e4){logger['error'](_0x5af0e4);return _0x4224d4[_0xa7a3('0x14')](0x1f4)[_0xa7a3('0x13')](_0x5af0e4);}return _0x4224d4[_0xa7a3('0x14')](0xc8)[_0xa7a3('0x13')]({'output':_0x113f54});});};exports[_0xa7a3('0x1f')]=function(_0x521106,_0x492499){return pm2[_0xa7a3('0x1f')]('motion2')[_0xa7a3('0x20')](function(_0x1838c0){logger[_0xa7a3('0x18')](_0xa7a3('0x21'),_0x1838c0);return _0x492499[_0xa7a3('0x14')](0xc8)[_0xa7a3('0x13')]({'output':_0xa7a3('0x22')});})[_0xa7a3('0x23')](function(_0x35fcd2){logger[_0xa7a3('0x17')](_0x35fcd2);return _0x492499['status'](0x1f4)[_0xa7a3('0x13')](_0x35fcd2);});};exports['migrations']=function(_0x1f0418,_0x23a3b1){var _0x40fe11=fs[_0xa7a3('0x24')](path[_0xa7a3('0x25')](config['root'],_0xa7a3('0x26'),'migrations'));var _0x15e117=[];for(var _0x1696cb=0x0;_0x1696cb<_0x40fe11[_0xa7a3('0x27')];_0x1696cb++){var _0x307c08=_0x40fe11[_0x1696cb][_0xa7a3('0x28')](_0xa7a3('0x29'),'');if(compareVersions(module[_0xa7a3('0xd')][_0xa7a3('0xe')],_0x307c08)===-0x1){_0x15e117[_0xa7a3('0x2a')](_0x307c08);}}if(_0x15e117[_0xa7a3('0x27')]){var _0x5a91ed=_0x15e117[_0xa7a3('0x2b')](compareVersions);var _0x4dafe5=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0xa7a3('0x2c')],'modelName':_0xa7a3('0x2c'),'columnName':_0xa7a3('0xe')},'migrations':{'params':[db[_0xa7a3('0x2d')][_0xa7a3('0x2e')](),db[_0xa7a3('0x2d')]['constructor'],function(){throw new Error(_0xa7a3('0x2f'));}],'path':path['join'](config[_0xa7a3('0xb')],_0xa7a3('0x26'),_0xa7a3('0x30')),'pattern':/\.js$/}});_0x4dafe5['up']({'migrations':_[_0xa7a3('0x31')](_0x5a91ed,function(_0x44a0c8){return _0x44a0c8+_0xa7a3('0x29');})})[_0xa7a3('0x20')](function(){return _0x23a3b1[_0xa7a3('0x14')](0xc8)[_0xa7a3('0x13')]({'output':_0xa7a3('0x32')+module['exports'][_0xa7a3('0xe')]+_0xa7a3('0x33')+_[_0xa7a3('0x34')](_0x5a91ed),'migrations':_['join'](_0x5a91ed)});})[_0xa7a3('0x23')](function(_0x1a3874){if(_0x1a3874 instanceof db[_0xa7a3('0x2d')][_0xa7a3('0x35')]){return _0x23a3b1['status'](0xc8)[_0xa7a3('0x13')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x23a3b1[_0xa7a3('0x14')](0x1f4)[_0xa7a3('0x13')](_0x1a3874);}});}else{return _0x23a3b1[_0xa7a3('0x14')](0xc8)['json']({'output':_0xa7a3('0x36')});}};
\ No newline at end of file
index 985dc42..5dcfb6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c80=['path','connect-timeout','express','Router','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete','destroy'];(function(_0x1be365,_0x4e7c0e){var _0x56b61a=function(_0x1feab2){while(--_0x1feab2){_0x1be365['push'](_0x1be365['shift']());}};_0x56b61a(++_0x4e7c0e);}(_0x9c80,0xff));var _0x09c8=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x9c80[_0x4d8ed9];return _0x1e2140;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x09c8('0x0'));var timeout=require(_0x09c8('0x1'));var express=require(_0x09c8('0x2'));var router=express[_0x09c8('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x09c8('0x4'));var config=require('../../config/environment');var controller=require('./voiceAgentReport.controller');router[_0x09c8('0x5')]('/',auth[_0x09c8('0x6')](),controller[_0x09c8('0x7')]);router['get'](_0x09c8('0x8'),auth['isAuthenticated'](),controller[_0x09c8('0x9')]);router['get'](_0x09c8('0xa'),auth[_0x09c8('0x6')](),controller[_0x09c8('0xb')]);router[_0x09c8('0xc')]('/',auth['isAuthenticated'](),controller[_0x09c8('0xd')]);router[_0x09c8('0xe')](_0x09c8('0xa'),auth[_0x09c8('0x6')](),controller['update']);router[_0x09c8('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x09c8('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x7d6e=['post','put','update','delete','destroy','exports','path','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','/describe','/:id','show'];(function(_0x3c1008,_0x1d8a59){var _0x37e5e8=function(_0x1808a7){while(--_0x1808a7){_0x3c1008['push'](_0x3c1008['shift']());}};_0x37e5e8(++_0x1d8a59);}(_0x7d6e,0x76));var _0xe7d6=function(_0x1c34e7,_0x33f9a8){_0x1c34e7=_0x1c34e7-0x0;var _0x378cb1=_0x7d6e[_0x1c34e7];return _0x378cb1;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7d6('0x0'));var timeout=require('connect-timeout');var express=require(_0xe7d6('0x1'));var router=express[_0xe7d6('0x2')]();var fs_extra=require(_0xe7d6('0x3'));var auth=require(_0xe7d6('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceAgentReport.controller');router[_0xe7d6('0x5')]('/',auth[_0xe7d6('0x6')](),controller['index']);router[_0xe7d6('0x5')](_0xe7d6('0x7'),auth['isAuthenticated'](),controller['describe']);router[_0xe7d6('0x5')](_0xe7d6('0x8'),auth[_0xe7d6('0x6')](),controller[_0xe7d6('0x9')]);router[_0xe7d6('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0xe7d6('0xb')](_0xe7d6('0x8'),auth['isAuthenticated'](),controller[_0xe7d6('0xc')]);router[_0xe7d6('0xd')](_0xe7d6('0x8'),auth[_0xe7d6('0x6')](),controller[_0xe7d6('0xe')]);module[_0xe7d6('0xf')]=router;
\ No newline at end of file
index 3aff475..b7d3fe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c52=['STRING','DATE','BOOLEAN','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports'];(function(_0x3a78a0,_0x44985f){var _0x48e917=function(_0x1e428c){while(--_0x1e428c){_0x3a78a0['push'](_0x3a78a0['shift']());}};_0x48e917(++_0x44985f);}(_0x1c52,0x7c));var _0x21c5=function(_0x27925c,_0x3c9876){_0x27925c=_0x27925c-0x0;var _0x2c0434=_0x1c52[_0x27925c];return _0x2c0434;};'use strict';var Sequelize=require(_0x21c5('0x0'));module[_0x21c5('0x1')]={'type':{'type':Sequelize[_0x21c5('0x2')]},'uniqueid':{'type':Sequelize[_0x21c5('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x21c5('0x2')]},'membername':{'type':Sequelize[_0x21c5('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x21c5('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x21c5('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x21c5('0x3')]},'agentdumpAt':{'type':Sequelize[_0x21c5('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x21c5('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x21c5('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0x21c5('0x5')]},'agentacw':{'type':Sequelize[_0x21c5('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x21c5('0x5')]},'reason':{'type':Sequelize[_0x21c5('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x21c5('0x2')]},'channelstate':{'type':Sequelize[_0x21c5('0x5')]},'channelstatedesc':{'type':Sequelize[_0x21c5('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x21c5('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x21c5('0x2')]},'context':{'type':Sequelize[_0x21c5('0x2')]},'exten':{'type':Sequelize[_0x21c5('0x2')]},'priority':{'type':Sequelize[_0x21c5('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x21c5('0x5')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x21c5('0x2')]},'destcalleridname':{'type':Sequelize[_0x21c5('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x21c5('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x21c5('0x2')]},'destexten':{'type':Sequelize[_0x21c5('0x2')]},'destpriority':{'type':Sequelize[_0x21c5('0x2')]},'destuniqueid':{'type':Sequelize[_0x21c5('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x21c5('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x21c5('0x2')]},'transfer':{'type':Sequelize[_0x21c5('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x21c5('0x6')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0x21c5('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4849=['BOOLEAN','INTEGER','sequelize','exports','STRING','DATE'];(function(_0xd4a75c,_0x4f1575){var _0x2286de=function(_0x56bb95){while(--_0x56bb95){_0xd4a75c['push'](_0xd4a75c['shift']());}};_0x2286de(++_0x4f1575);}(_0x4849,0xf8));var _0x9484=function(_0x7b960a,_0x14e76b){_0x7b960a=_0x7b960a-0x0;var _0x180439=_0x4849[_0x7b960a];return _0x180439;};'use strict';var Sequelize=require(_0x9484('0x0'));module[_0x9484('0x1')]={'type':{'type':Sequelize[_0x9484('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x9484('0x2')]},'queue':{'type':Sequelize[_0x9484('0x2')]},'interface':{'type':Sequelize[_0x9484('0x2')]},'membername':{'type':Sequelize[_0x9484('0x2')]},'agentcalledAt':{'type':Sequelize[_0x9484('0x3')]},'agentconnectAt':{'type':Sequelize[_0x9484('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x9484('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x9484('0x3')]},'agentdumpAt':{'type':Sequelize[_0x9484('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x9484('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0x9484('0x5')]},'agentacw':{'type':Sequelize[_0x9484('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x9484('0x5')]},'reason':{'type':Sequelize[_0x9484('0x2')]},'lastevent':{'type':Sequelize[_0x9484('0x2')]},'channel':{'type':Sequelize[_0x9484('0x2')]},'channelstate':{'type':Sequelize[_0x9484('0x5')]},'channelstatedesc':{'type':Sequelize[_0x9484('0x2')]},'connectedlinenum':{'type':Sequelize[_0x9484('0x2')]},'connectedlinename':{'type':Sequelize[_0x9484('0x2')]},'language':{'type':Sequelize[_0x9484('0x2')]},'accountcode':{'type':Sequelize[_0x9484('0x2')]},'context':{'type':Sequelize[_0x9484('0x2')]},'exten':{'type':Sequelize[_0x9484('0x2')]},'priority':{'type':Sequelize[_0x9484('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x9484('0x5')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x9484('0x2')]},'destcalleridname':{'type':Sequelize[_0x9484('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x9484('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x9484('0x2')]},'destlanguage':{'type':Sequelize[_0x9484('0x2')]},'destaccountcode':{'type':Sequelize[_0x9484('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x9484('0x2')]},'destpriority':{'type':Sequelize[_0x9484('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize['STRING']},'answeredelsewheremembername':{'type':Sequelize[_0x9484('0x2')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x9484('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x9484('0x2')]},'transferuniqueid':{'type':Sequelize[_0x9484('0x2')]},'agententerreason':{'type':Sequelize[_0x9484('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index 0fe0a16..88d2734 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(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'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(_0x5627e1,_0x1b2dbf){var _0x2f013f=function(_0x142015){while(--_0x142015){_0x5627e1['push'](_0x5627e1['shift']());}};_0x2f013f(++_0x1b2dbf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'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 bd8d8fd..36ffdfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd13e=['lodash','util','../../config/logger','api','bluebird','path','../../config/environment','./voiceAgentReport.attributes','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid'];(function(_0xd22d95,_0xc59f8f){var _0x15d7a3=function(_0x3db95c){while(--_0x3db95c){_0xd22d95['push'](_0xd22d95['shift']());}};_0x15d7a3(++_0xc59f8f);}(_0xd13e,0x193));var _0xed13=function(_0x49038d,_0x581222){_0x49038d=_0x49038d-0x0;var _0x590c6c=_0xd13e[_0x49038d];return _0x590c6c;};'use strict';var _=require(_0xed13('0x0'));var util=require(_0xed13('0x1'));var logger=require(_0xed13('0x2'))(_0xed13('0x3'));var moment=require('moment');var BPromise=require(_0xed13('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xed13('0x5'));var rimraf=require('rimraf');var config=require(_0xed13('0x6'));var attributes=require(_0xed13('0x7'));module['exports']=function(_0x50de44,_0x5142bd){return _0x50de44[_0xed13('0x8')](_0xed13('0x9'),attributes,{'tableName':_0xed13('0xa'),'paranoid':![],'indexes':[{'fields':[_0xed13('0xb'),_0xed13('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3edc=['request-promise','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3edc,0x1ae));var _0xc3ed=function(_0x357979,_0x56feef){_0x357979=_0x357979-0x0;var _0xabb42f=_0x3edc[_0x357979];return _0xabb42f;};'use strict';var _=require(_0xc3ed('0x0'));var util=require(_0xc3ed('0x1'));var logger=require(_0xc3ed('0x2'))(_0xc3ed('0x3'));var moment=require(_0xc3ed('0x4'));var BPromise=require('bluebird');var rp=require(_0xc3ed('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc3ed('0x6'));var config=require(_0xc3ed('0x7'));var attributes=require(_0xc3ed('0x8'));module[_0xc3ed('0x9')]=function(_0x3f8468,_0x50b95c){return _0x3f8468[_0xc3ed('0xa')](_0xc3ed('0xb'),attributes,{'tableName':_0xc3ed('0xc'),'paranoid':![],'indexes':[{'fields':[_0xc3ed('0xd'),_0xc3ed('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 419d346..17354cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2571=['stringify','error','message','info','catch','CreateVoiceAgentReport','VoiceAgentReport','create','options','raw','update','body','where','attributes','limit','UpdateVoiceAgentReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s'];(function(_0xda501a,_0x159d6a){var _0x44be3a=function(_0x5c1c5f){while(--_0x5c1c5f){_0xda501a['push'](_0xda501a['shift']());}};_0x44be3a(++_0x159d6a);}(_0x2571,0x1a8));var _0x1257=function(_0x3a2118,_0x31fc3c){_0x3a2118=_0x3a2118-0x0;var _0x1d181d=_0x2571[_0x3a2118];return _0x1d181d;};'use strict';var _=require('lodash');var util=require(_0x1257('0x0'));var moment=require(_0x1257('0x1'));var BPromise=require(_0x1257('0x2'));var rs=require(_0x1257('0x3'));var fs=require('fs');var Redis=require(_0x1257('0x4'));var db=require(_0x1257('0x5'))['db'];var utils=require(_0x1257('0x6'));var logger=require(_0x1257('0x7'))('rpc');var config=require(_0x1257('0x8'));var jayson=require(_0x1257('0x9'));var client=jayson[_0x1257('0xa')][_0x1257('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5345db,_0x5b4717,_0x4cf5ac){return new BPromise(function(_0x1b73a7,_0x1e58d7){return client[_0x1257('0xc')](_0x5345db,_0x4cf5ac)[_0x1257('0xd')](function(_0x898de5){logger['info'](_0x1257('0xe'),_0x5b4717,_0x1257('0xf'));logger[_0x1257('0x10')](_0x1257('0x11'),_0x5b4717,_0x1257('0xf'),JSON[_0x1257('0x12')](_0x898de5));if(_0x898de5[_0x1257('0x13')]){if(_0x898de5[_0x1257('0x13')]['code']===0x1f4){logger[_0x1257('0x13')]('VoiceAgentReport,\x20%s,\x20%s',_0x5b4717,_0x898de5[_0x1257('0x13')][_0x1257('0x14')]);return _0x1e58d7(_0x898de5['error'][_0x1257('0x14')]);}logger[_0x1257('0x13')](_0x1257('0xe'),_0x5b4717,_0x898de5[_0x1257('0x13')][_0x1257('0x14')]);return _0x1b73a7(_0x898de5['error']['message']);}else{logger[_0x1257('0x15')](_0x1257('0xe'),_0x5b4717,_0x1257('0xf'));_0x1b73a7(_0x898de5['result']['message']);}})[_0x1257('0x16')](function(_0x17360a){logger[_0x1257('0x13')](_0x1257('0xe'),_0x5b4717,_0x17360a);_0x1e58d7(_0x17360a);});});}exports[_0x1257('0x17')]=function(_0x1a9be6){var _0x52e9d4=this;return new Promise(function(_0x14e2d3,_0x1826f4){return db[_0x1257('0x18')][_0x1257('0x19')](_0x1a9be6['body'],{'raw':_0x1a9be6['options']?_0x1a9be6[_0x1257('0x1a')][_0x1257('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x485848){logger['info'](_0x1257('0x17'),_0x1a9be6);logger[_0x1257('0x10')]('CreateVoiceAgentReport',_0x1a9be6,JSON[_0x1257('0x12')](_0x485848));_0x14e2d3(_0x485848);})[_0x1257('0x16')](function(_0x21bc43){logger[_0x1257('0x13')](_0x1257('0x17'),_0x21bc43[_0x1257('0x14')],_0x1a9be6);_0x1826f4(_0x52e9d4[_0x1257('0x13')](0x1f4,_0x21bc43[_0x1257('0x14')]));});});};exports['UpdateVoiceAgentReport']=function(_0x43475f){var _0x5a4d92=this;return new Promise(function(_0x226185,_0x40b295){return db[_0x1257('0x18')][_0x1257('0x1c')](_0x43475f[_0x1257('0x1d')],{'raw':_0x43475f[_0x1257('0x1a')]?_0x43475f['options'][_0x1257('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x43475f[_0x1257('0x1a')]?_0x43475f[_0x1257('0x1a')][_0x1257('0x1e')]||null:null,'attributes':_0x43475f[_0x1257('0x1a')]?_0x43475f['options'][_0x1257('0x1f')]||null:null,'limit':_0x43475f['options']?_0x43475f['options'][_0x1257('0x20')]||null:null})['then'](function(_0x30ae8e){logger['info']('UpdateVoiceAgentReport',_0x43475f);logger[_0x1257('0x10')](_0x1257('0x21'),_0x43475f,JSON[_0x1257('0x12')](_0x30ae8e));_0x226185(_0x30ae8e);})[_0x1257('0x16')](function(_0x12932f){logger[_0x1257('0x13')]('UpdateVoiceAgentReport',_0x12932f[_0x1257('0x14')],_0x43475f);_0x40b295(_0x5a4d92['error'](0x1f4,_0x12932f[_0x1257('0x14')]));});});};
\ No newline at end of file
+var _0x43a9=['message','result','CreateVoiceAgentReport','body','options','info','debug','stringify','catch','VoiceAgentReport','update','raw','attributes','limit','UpdateVoiceAgentReport','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x5e19ff,_0x23bea2){var _0x5e85c4=function(_0x317257){while(--_0x317257){_0x5e19ff['push'](_0x5e19ff['shift']());}};_0x5e85c4(++_0x23bea2);}(_0x43a9,0xa5));var _0x943a=function(_0x4c4a8c,_0x42af24){_0x4c4a8c=_0x4c4a8c-0x0;var _0x51267d=_0x43a9[_0x4c4a8c];return _0x51267d;};'use strict';var _=require(_0x943a('0x0'));var util=require(_0x943a('0x1'));var moment=require(_0x943a('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x943a('0x3'));var db=require(_0x943a('0x4'))['db'];var utils=require(_0x943a('0x5'));var logger=require(_0x943a('0x6'))('rpc');var config=require(_0x943a('0x7'));var jayson=require(_0x943a('0x8'));var client=jayson[_0x943a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bde85,_0x2cdb05,_0x9cf02c){return new BPromise(function(_0x2996b2,_0x19a22e){return client['request'](_0x5bde85,_0x9cf02c)[_0x943a('0xa')](function(_0x131188){logger['info'](_0x943a('0xb'),_0x2cdb05,_0x943a('0xc'));logger['debug']('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x2cdb05,_0x943a('0xc'),JSON['stringify'](_0x131188));if(_0x131188[_0x943a('0xd')]){if(_0x131188[_0x943a('0xd')][_0x943a('0xe')]===0x1f4){logger[_0x943a('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x2cdb05,_0x131188[_0x943a('0xd')][_0x943a('0xf')]);return _0x19a22e(_0x131188[_0x943a('0xd')]['message']);}logger[_0x943a('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x2cdb05,_0x131188[_0x943a('0xd')][_0x943a('0xf')]);return _0x2996b2(_0x131188['error'][_0x943a('0xf')]);}else{logger['info'](_0x943a('0xb'),_0x2cdb05,'request\x20sent');_0x2996b2(_0x131188[_0x943a('0x10')][_0x943a('0xf')]);}})['catch'](function(_0x2161e6){logger[_0x943a('0xd')](_0x943a('0xb'),_0x2cdb05,_0x2161e6);_0x19a22e(_0x2161e6);});});}exports[_0x943a('0x11')]=function(_0x3e9675){var _0x345925=this;return new Promise(function(_0x3a902a,_0x27d314){return db['VoiceAgentReport']['create'](_0x3e9675[_0x943a('0x12')],{'raw':_0x3e9675[_0x943a('0x13')]?_0x3e9675[_0x943a('0x13')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x11e8f6){logger[_0x943a('0x14')](_0x943a('0x11'),_0x3e9675);logger[_0x943a('0x15')](_0x943a('0x11'),_0x3e9675,JSON[_0x943a('0x16')](_0x11e8f6));_0x3a902a(_0x11e8f6);})[_0x943a('0x17')](function(_0x2547c7){logger[_0x943a('0xd')](_0x943a('0x11'),_0x2547c7[_0x943a('0xf')],_0x3e9675);_0x27d314(_0x345925[_0x943a('0xd')](0x1f4,_0x2547c7[_0x943a('0xf')]));});});};exports['UpdateVoiceAgentReport']=function(_0x341be8){var _0x3c53da=this;return new Promise(function(_0x46fcb8,_0x2f92fb){return db[_0x943a('0x18')][_0x943a('0x19')](_0x341be8['body'],{'raw':_0x341be8['options']?_0x341be8[_0x943a('0x13')][_0x943a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x341be8[_0x943a('0x13')]?_0x341be8[_0x943a('0x13')]['where']||null:null,'attributes':_0x341be8[_0x943a('0x13')]?_0x341be8[_0x943a('0x13')][_0x943a('0x1b')]||null:null,'limit':_0x341be8[_0x943a('0x13')]?_0x341be8['options'][_0x943a('0x1c')]||null:null})[_0x943a('0xa')](function(_0x236db0){logger[_0x943a('0x14')]('UpdateVoiceAgentReport',_0x341be8);logger[_0x943a('0x15')](_0x943a('0x1d'),_0x341be8,JSON[_0x943a('0x16')](_0x236db0));_0x46fcb8(_0x236db0);})[_0x943a('0x17')](function(_0x5d105f){logger['error']('UpdateVoiceAgentReport',_0x5d105f[_0x943a('0xf')],_0x341be8);_0x2f92fb(_0x3c53da[_0x943a('0xd')](0x1f4,_0x5d105f[_0x943a('0xf')]));});});};
\ No newline at end of file
index 23f68e2..33f4e9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0faf=['./voiceCallReport.controller','isAuthenticated','index','get','/describe','/:id','post','create','put','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4a3c1a,_0x3c5a20){var _0x579f73=function(_0x431f9c){while(--_0x431f9c){_0x4a3c1a['push'](_0x4a3c1a['shift']());}};_0x579f73(++_0x3c5a20);}(_0x0faf,0x132));var _0xf0fa=function(_0x59c683,_0x209444){_0x59c683=_0x59c683-0x0;var _0x47251b=_0x0faf[_0x59c683];return _0x47251b;};'use strict';var multer=require(_0xf0fa('0x0'));var util=require('util');var path=require(_0xf0fa('0x1'));var timeout=require(_0xf0fa('0x2'));var express=require(_0xf0fa('0x3'));var router=express[_0xf0fa('0x4')]();var fs_extra=require(_0xf0fa('0x5'));var auth=require(_0xf0fa('0x6'));var interaction=require(_0xf0fa('0x7'));var config=require(_0xf0fa('0x8'));var controller=require(_0xf0fa('0x9'));router['get']('/',auth[_0xf0fa('0xa')](),controller[_0xf0fa('0xb')]);router[_0xf0fa('0xc')](_0xf0fa('0xd'),auth[_0xf0fa('0xa')](),controller['describe']);router[_0xf0fa('0xc')](_0xf0fa('0xe'),auth['isAuthenticated'](),controller['show']);router[_0xf0fa('0xf')]('/',auth[_0xf0fa('0xa')](),controller[_0xf0fa('0x10')]);router[_0xf0fa('0x11')](_0xf0fa('0xe'),auth[_0xf0fa('0xa')](),controller[_0xf0fa('0x12')]);router[_0xf0fa('0x13')]('/:id',auth[_0xf0fa('0xa')](),controller['destroy']);module[_0xf0fa('0x14')]=router;
\ No newline at end of file
+var _0xb138=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','isAuthenticated','index','/describe','describe','/:id','create','put','delete','destroy','exports','multer','util','path'];(function(_0x29a132,_0x49c0cc){var _0x1443cf=function(_0x25914b){while(--_0x25914b){_0x29a132['push'](_0x29a132['shift']());}};_0x1443cf(++_0x49c0cc);}(_0xb138,0x1dd));var _0x8b13=function(_0x14cd6e,_0x583fcf){_0x14cd6e=_0x14cd6e-0x0;var _0x4efbfb=_0xb138[_0x14cd6e];return _0x4efbfb;};'use strict';var multer=require(_0x8b13('0x0'));var util=require(_0x8b13('0x1'));var path=require(_0x8b13('0x2'));var timeout=require(_0x8b13('0x3'));var express=require(_0x8b13('0x4'));var router=express[_0x8b13('0x5')]();var fs_extra=require(_0x8b13('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x8b13('0x7'));var config=require(_0x8b13('0x8'));var controller=require(_0x8b13('0x9'));router['get']('/',auth[_0x8b13('0xa')](),controller[_0x8b13('0xb')]);router['get'](_0x8b13('0xc'),auth[_0x8b13('0xa')](),controller[_0x8b13('0xd')]);router['get'](_0x8b13('0xe'),auth[_0x8b13('0xa')](),controller['show']);router['post']('/',auth[_0x8b13('0xa')](),controller[_0x8b13('0xf')]);router[_0x8b13('0x10')](_0x8b13('0xe'),auth[_0x8b13('0xa')](),controller['update']);router[_0x8b13('0x11')](_0x8b13('0xe'),auth[_0x8b13('0xa')](),controller[_0x8b13('0x12')]);module[_0x8b13('0x13')]=router;
\ No newline at end of file
index afb084f..a463343 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0135=['inbound-fax','dialer','TEXT','DATE','INTEGER','sequelize','exports','STRING','ENUM'];(function(_0xca5e9e,_0x3841aa){var _0x3769de=function(_0x52b726){while(--_0x52b726){_0xca5e9e['push'](_0xca5e9e['shift']());}};_0x3769de(++_0x3841aa);}(_0x0135,0x188));var _0x5013=function(_0x3092de,_0x3e5a5a){_0x3092de=_0x3092de-0x0;var _0x47e79f=_0x0135[_0x3092de];return _0x47e79f;};'use strict';var Sequelize=require(_0x5013('0x0'));module[_0x5013('0x1')]={'uniqueid':{'type':Sequelize[_0x5013('0x2')]},'type':{'type':Sequelize[_0x5013('0x3')]('inbound','internal','outbound',_0x5013('0x4'),'outbound-fax',_0x5013('0x5'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x5013('0x2')]},'source':{'type':Sequelize[_0x5013('0x2')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x5013('0x2')]},'destinationchannel':{'type':Sequelize[_0x5013('0x2')]},'lastapplication':{'type':Sequelize[_0x5013('0x2')]},'lastdata':{'type':Sequelize[_0x5013('0x6')]},'starttime':{'type':Sequelize[_0x5013('0x7')]},'systemanswertime':{'type':Sequelize[_0x5013('0x7')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0x5013('0x8')]},'mohtime':{'type':Sequelize[_0x5013('0x8')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x5013('0x2')]},'amaflags':{'type':Sequelize[_0x5013('0x2')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0x5013('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x5013('0x2')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x5013('0x2')]},'prefix':{'type':Sequelize['STRING']},'routeid':{'type':Sequelize[_0x5013('0x8')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4046=['ENUM','inbound','internal','TEXT','DATE','INTEGER','exports','STRING'];(function(_0x1e71b8,_0x2ba29c){var _0x32f86e=function(_0x112457){while(--_0x112457){_0x1e71b8['push'](_0x1e71b8['shift']());}};_0x32f86e(++_0x2ba29c);}(_0x4046,0x126));var _0x6404=function(_0x44c268,_0x5d3ec3){_0x44c268=_0x44c268-0x0;var _0x230bab=_0x4046[_0x44c268];return _0x230bab;};'use strict';var Sequelize=require('sequelize');module[_0x6404('0x0')]={'uniqueid':{'type':Sequelize[_0x6404('0x1')]},'type':{'type':Sequelize[_0x6404('0x2')](_0x6404('0x3'),_0x6404('0x4'),'outbound','inbound-fax','outbound-fax','dialer')},'tag':{'type':Sequelize[_0x6404('0x1')]},'accountcode':{'type':Sequelize[_0x6404('0x1')]},'source':{'type':Sequelize[_0x6404('0x1')]},'destination':{'type':Sequelize[_0x6404('0x1')]},'destinationcontext':{'type':Sequelize[_0x6404('0x1')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize[_0x6404('0x1')]},'lastapplication':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0x6404('0x5')]},'starttime':{'type':Sequelize[_0x6404('0x6')]},'systemanswertime':{'type':Sequelize[_0x6404('0x6')]},'answertime':{'type':Sequelize[_0x6404('0x6')]},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0x6404('0x7')]},'mohtime':{'type':Sequelize[_0x6404('0x7')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x6404('0x1')]},'amaflags':{'type':Sequelize[_0x6404('0x1')]},'userfield':{'type':Sequelize[_0x6404('0x1')]},'userDisposition':{'type':Sequelize[_0x6404('0x1')]},'userSecondDisposition':{'type':Sequelize[_0x6404('0x1')]},'userThirdDisposition':{'type':Sequelize[_0x6404('0x1')]},'note':{'type':Sequelize[_0x6404('0x1')]},'prefix':{'type':Sequelize[_0x6404('0x1')]},'routeid':{'type':Sequelize[_0x6404('0x7')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e4f47bf..9c5b168 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(_0x51b661,_0x566ef8){var _0x5d1971=function(_0x5cc6b8){while(--_0x5cc6b8){_0x51b661['push'](_0x51b661['shift']());}};_0x5d1971(++_0x566ef8);}(_0xadb5,0xad));var _0x5adb=function(_0x2dfd28,_0x33396f){_0x2dfd28=_0x2dfd28-0x0;var _0x43dfce=_0xadb5[_0x2dfd28];return _0x43dfce;};'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 _0xb10b=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','VIRTUAL','filter','merge','options','VoiceCallReport','includeAll','include','alias','User','rows','show','find','create','body','catch','params','describe','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce'];(function(_0x5a7fc5,_0x4cc786){var _0x7ec135=function(_0x2f1294){while(--_0x2f1294){_0x5a7fc5['push'](_0x5a7fc5['shift']());}};_0x7ec135(++_0x4cc786);}(_0xb10b,0x12a));var _0xbb10=function(_0x1e203a,_0x397111){_0x1e203a=_0x1e203a-0x0;var _0x2a5006=_0xb10b[_0x1e203a];return _0x2a5006;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var jsonpatch=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var moment=require('moment');var BPromise=require(_0xbb10('0x4'));var Mustache=require(_0xbb10('0x5'));var util=require(_0xbb10('0x6'));var path=require(_0xbb10('0x7'));var sox=require(_0xbb10('0x8'));var csv=require(_0xbb10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb10('0xa'));var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0x9'));var querystring=require(_0xbb10('0xf'));var Papa=require(_0xbb10('0x10'));var Redis=require(_0xbb10('0x11'));var authService=require(_0xbb10('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb10('0x13'));var logger=require(_0xbb10('0x14'))(_0xbb10('0x15'));var utils=require('../../config/utils');var config=require(_0xbb10('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb10('0x17'))['db'];function respondWithStatusCode(_0x916a32,_0x285009){_0x285009=_0x285009||0xcc;return function(_0x193a27){if(_0x193a27){return _0x916a32[_0xbb10('0x18')](_0x285009);}return _0x916a32[_0xbb10('0x19')](_0x285009)['end']();};}function respondWithResult(_0x26e021,_0x42d7e4){_0x42d7e4=_0x42d7e4||0xc8;return function(_0x45b9d6){if(_0x45b9d6){return _0x26e021[_0xbb10('0x19')](_0x42d7e4)[_0xbb10('0x1a')](_0x45b9d6);}};}function respondWithFilteredResult(_0x2f2ebf,_0x24a57b){return function(_0x36b5e8){if(_0x36b5e8){var _0x3e26f4=typeof _0x24a57b[_0xbb10('0x1b')]==='undefined'&&typeof _0x24a57b[_0xbb10('0x1c')]===_0xbb10('0x1d');var _0x133ac2=_0x36b5e8[_0xbb10('0x1e')];var _0x378da8=_0x3e26f4?0x0:_0x24a57b[_0xbb10('0x1b')];var _0x575cca=_0x3e26f4?_0x36b5e8[_0xbb10('0x1e')]:_0x24a57b[_0xbb10('0x1b')]+_0x24a57b[_0xbb10('0x1c')];var _0x48b6e9;if(_0x575cca>=_0x133ac2){_0x575cca=_0x133ac2;_0x48b6e9=0xc8;}else{_0x48b6e9=0xce;}_0x2f2ebf[_0xbb10('0x19')](_0x48b6e9);return _0x2f2ebf[_0xbb10('0x1f')](_0xbb10('0x20'),_0x378da8+'-'+_0x575cca+'/'+_0x133ac2)[_0xbb10('0x1a')](_0x36b5e8);}return null;};}function patchUpdates(_0xdf237d){return function(_0x44e563){try{jsonpatch['apply'](_0x44e563,_0xdf237d,!![]);}catch(_0x12f888){return BPromise[_0xbb10('0x21')](_0x12f888);}return _0x44e563['save']();};}function saveUpdates(_0x4c4b0d,_0x8e2b97){return function(_0x311abe){if(_0x311abe){return _0x311abe[_0xbb10('0x22')](_0x4c4b0d)[_0xbb10('0x23')](function(_0x445761){return _0x445761;});}return null;};}function removeEntity(_0x1824b7,_0x407cb4){return function(_0x436104){if(_0x436104){return _0x436104[_0xbb10('0x24')]()[_0xbb10('0x23')](function(){_0x1824b7[_0xbb10('0x19')](0xcc)[_0xbb10('0x25')]();});}};}function handleEntityNotFound(_0x537898,_0x4fedac){return function(_0x4fb5e0){if(!_0x4fb5e0){_0x537898[_0xbb10('0x18')](0x194);}return _0x4fb5e0;};}function handleError(_0x3c5ae7,_0x2c89b9){_0x2c89b9=_0x2c89b9||0x1f4;return function(_0x4e25ff){logger[_0xbb10('0x26')](_0x4e25ff[_0xbb10('0x27')]);if(_0x4e25ff[_0xbb10('0x28')]){delete _0x4e25ff[_0xbb10('0x28')];}_0x3c5ae7[_0xbb10('0x19')](_0x2c89b9)[_0xbb10('0x29')](_0x4e25ff);};}exports[_0xbb10('0x2a')]=function(_0x4aabb9,_0x3796c7){var _0x21ac54={},_0xfc3595={},_0x2e0249={'count':0x0,'rows':[]};var _0x1d30aa=_[_0xbb10('0x2b')](db['VoiceCallReport'][_0xbb10('0x2c')],function(_0x4ee02e){return{'name':_0x4ee02e[_0xbb10('0x2d')],'type':_0x4ee02e['type'][_0xbb10('0x2e')]};});_0xfc3595[_0xbb10('0x2f')]=_[_0xbb10('0x2b')](_0x1d30aa,'name');_0xfc3595['query']=_[_0xbb10('0x30')](_0x4aabb9[_0xbb10('0x31')]);_0xfc3595['filters']=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],_0xfc3595[_0xbb10('0x31')]);_0x21ac54[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x4aabb9['query'][_0xbb10('0x34')]));_0x21ac54[_0xbb10('0x33')]=_0x21ac54[_0xbb10('0x33')][_0xbb10('0x35')]?_0x21ac54[_0xbb10('0x33')]:_0xfc3595[_0xbb10('0x2f')];if(!_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x36')](_0xbb10('0x37'))){_0x21ac54['limit']=qs[_0xbb10('0x1c')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x1c')]);_0x21ac54[_0xbb10('0x1b')]=qs['offset'](_0x4aabb9[_0xbb10('0x31')]['offset']);}_0x21ac54['order']=qs[_0xbb10('0x38')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x38')]);_0x21ac54[_0xbb10('0x39')]=qs[_0xbb10('0x3a')](_[_0xbb10('0x3b')](_0x4aabb9['query'],_0xfc3595[_0xbb10('0x3a')]),_0x1d30aa);if(_0x4aabb9[_0xbb10('0x31')]['filter']){_0x21ac54['where']=_['merge'](_0x21ac54[_0xbb10('0x39')],{'$or':_[_0xbb10('0x2b')](_0x1d30aa,function(_0x2b658a){if(_0x2b658a['type']!==_0xbb10('0x3c')){var _0x3e8538={};_0x3e8538[_0x2b658a[_0xbb10('0x28')]]={'$like':'%'+_0x4aabb9['query'][_0xbb10('0x3d')]+'%'};return _0x3e8538;}})});}_0x21ac54=_[_0xbb10('0x3e')]({},_0x21ac54,_0x4aabb9[_0xbb10('0x3f')]);var _0x446f49={'where':_0x21ac54['where']};return db[_0xbb10('0x40')][_0xbb10('0x1e')](_0x446f49)['then'](function(_0xe2040f){_0x2e0249[_0xbb10('0x1e')]=_0xe2040f;if(_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x41')]){_0x21ac54[_0xbb10('0x42')]=[{'attributes':['id',_0xbb10('0x28'),'fullname',_0xbb10('0x43')],'model':db[_0xbb10('0x44')],'as':_0xbb10('0x44')}];}return db[_0xbb10('0x40')]['findAll'](_0x21ac54);})[_0xbb10('0x23')](function(_0x331751){_0x2e0249[_0xbb10('0x45')]=_0x331751;return _0x2e0249;})[_0xbb10('0x23')](respondWithFilteredResult(_0x3796c7,_0x21ac54))['catch'](handleError(_0x3796c7,null));};exports[_0xbb10('0x46')]=function(_0x202c60,_0x54ac18){var _0x5d9a4f={'raw':!![],'where':{'id':_0x202c60['params']['id']}},_0x38d78f={};_0x38d78f[_0xbb10('0x2f')]=_[_0xbb10('0x30')](db['VoiceCallReport'][_0xbb10('0x2c')]);_0x38d78f[_0xbb10('0x31')]=_[_0xbb10('0x30')](_0x202c60['query']);_0x38d78f[_0xbb10('0x3a')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],_0x38d78f[_0xbb10('0x31')]);_0x5d9a4f[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x202c60[_0xbb10('0x31')][_0xbb10('0x34')]));_0x5d9a4f[_0xbb10('0x33')]=_0x5d9a4f[_0xbb10('0x33')]['length']?_0x5d9a4f[_0xbb10('0x33')]:_0x38d78f[_0xbb10('0x2f')];if(_0x202c60['query'][_0xbb10('0x41')]){_0x5d9a4f[_0xbb10('0x42')]=[{'all':!![]}];}_0x5d9a4f=_[_0xbb10('0x3e')]({},_0x5d9a4f,_0x202c60[_0xbb10('0x3f')]);return db[_0xbb10('0x40')][_0xbb10('0x47')](_0x5d9a4f)[_0xbb10('0x23')](handleEntityNotFound(_0x54ac18,null))['then'](respondWithResult(_0x54ac18,null))['catch'](handleError(_0x54ac18,null));};exports[_0xbb10('0x48')]=function(_0x76a208,_0x2b12bd){return db['VoiceCallReport']['create'](_0x76a208[_0xbb10('0x49')],{})[_0xbb10('0x23')](respondWithResult(_0x2b12bd,0xc9))[_0xbb10('0x4a')](handleError(_0x2b12bd,null));};exports[_0xbb10('0x24')]=function(_0x10159b,_0x22b315){return db[_0xbb10('0x40')][_0xbb10('0x47')]({'where':{'id':_0x10159b[_0xbb10('0x4b')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x22b315,null))['then'](removeEntity(_0x22b315,null))['catch'](handleError(_0x22b315,null));};exports[_0xbb10('0x4c')]=function(_0x467dba,_0x36ab7d){return db[_0xbb10('0x40')][_0xbb10('0x4c')]()[_0xbb10('0x23')](respondWithResult(_0x36ab7d,null))[_0xbb10('0x4a')](handleError(_0x36ab7d,null));};exports[_0xbb10('0x22')]=function(_0x1c0d8f,_0x1214f7){if(_0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')]){delete _0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')];}return db[_0xbb10('0x40')]['find']({'where':{'uniqueid':_0x1c0d8f[_0xbb10('0x4b')]['id'],'UserId':{'$or':[null,_0x1c0d8f['user']['id']]}}})[_0xbb10('0x23')](handleEntityNotFound(_0x1214f7,null))[_0xbb10('0x23')](saveUpdates(_0x1c0d8f[_0xbb10('0x49')],null))[_0xbb10('0x23')](respondWithResult(_0x1214f7,null))[_0xbb10('0x4a')](handleError(_0x1214f7,null));};
\ No newline at end of file
index 468b25a..279a33e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78cd=['report_call','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes','define'];(function(_0x98d7f2,_0x110b43){var _0x542cfe=function(_0x17e172){while(--_0x17e172){_0x98d7f2['push'](_0x98d7f2['shift']());}};_0x542cfe(++_0x110b43);}(_0x78cd,0x114));var _0xd78c=function(_0x23c5a8,_0x231dcd){_0x23c5a8=_0x23c5a8-0x0;var _0x3ba1b0=_0x78cd[_0x23c5a8];return _0x3ba1b0;};'use strict';var _=require('lodash');var util=require(_0xd78c('0x0'));var logger=require('../../config/logger')(_0xd78c('0x1'));var moment=require(_0xd78c('0x2'));var BPromise=require(_0xd78c('0x3'));var rp=require(_0xd78c('0x4'));var fs=require('fs');var path=require(_0xd78c('0x5'));var rimraf=require(_0xd78c('0x6'));var config=require(_0xd78c('0x7'));var attributes=require(_0xd78c('0x8'));module['exports']=function(_0x2866d3,_0x1d1ee2){return _0x2866d3[_0xd78c('0x9')]('VoiceCallReport',attributes,{'tableName':_0xd78c('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcd04=['bluebird','path','rimraf','../../config/environment','./voiceCallReport.attributes','exports','VoiceCallReport','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x1023c5,_0x3d1eb){var _0x359d10=function(_0x2676a2){while(--_0x2676a2){_0x1023c5['push'](_0x1023c5['shift']());}};_0x359d10(++_0x3d1eb);}(_0xcd04,0x110));var _0x4cd0=function(_0x24743d,_0x523200){_0x24743d=_0x24743d-0x0;var _0x28fc0d=_0xcd04[_0x24743d];return _0x28fc0d;};'use strict';var _=require(_0x4cd0('0x0'));var util=require('util');var logger=require(_0x4cd0('0x1'))(_0x4cd0('0x2'));var moment=require(_0x4cd0('0x3'));var BPromise=require(_0x4cd0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4cd0('0x5'));var rimraf=require(_0x4cd0('0x6'));var config=require(_0x4cd0('0x7'));var attributes=require(_0x4cd0('0x8'));module[_0x4cd0('0x9')]=function(_0x50d7cb,_0x506788){return _0x50d7cb['define'](_0x4cd0('0xa'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x4cd0('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 2053dd5..b7332c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd8f=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVoiceCallReport','options','raw','where','attributes','include','map','model','CreateVoiceCallReport','VoiceCallReport','create','body','update','limit','UpdateVoiceCallReport','stringify','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x1a0cda,_0x508c72){var _0x3a4efa=function(_0x1c3a54){while(--_0x1c3a54){_0x1a0cda['push'](_0x1a0cda['shift']());}};_0x3a4efa(++_0x508c72);}(_0xdd8f,0x1a8));var _0xfdd8=function(_0xd02d51,_0x17305f){_0xd02d51=_0xd02d51-0x0;var _0x3946d2=_0xdd8f[_0xd02d51];return _0x3946d2;};'use strict';var _=require(_0xfdd8('0x0'));var util=require('util');var moment=require(_0xfdd8('0x1'));var BPromise=require(_0xfdd8('0x2'));var rs=require(_0xfdd8('0x3'));var fs=require('fs');var Redis=require(_0xfdd8('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfdd8('0x5'));var logger=require(_0xfdd8('0x6'))(_0xfdd8('0x7'));var config=require(_0xfdd8('0x8'));var jayson=require(_0xfdd8('0x9'));var client=jayson[_0xfdd8('0xa')][_0xfdd8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x12d1c9,_0x237283,_0x24b84f){return new BPromise(function(_0x2af910,_0x547f44){return client['request'](_0x12d1c9,_0x24b84f)[_0xfdd8('0xc')](function(_0x3d0f9e){logger[_0xfdd8('0xd')](_0xfdd8('0xe'),_0x237283,_0xfdd8('0xf'));logger[_0xfdd8('0x10')](_0xfdd8('0x11'),_0x237283,_0xfdd8('0xf'),JSON['stringify'](_0x3d0f9e));if(_0x3d0f9e[_0xfdd8('0x12')]){if(_0x3d0f9e[_0xfdd8('0x12')][_0xfdd8('0x13')]===0x1f4){logger[_0xfdd8('0x12')](_0xfdd8('0xe'),_0x237283,_0x3d0f9e[_0xfdd8('0x12')][_0xfdd8('0x14')]);return _0x547f44(_0x3d0f9e[_0xfdd8('0x12')][_0xfdd8('0x14')]);}logger[_0xfdd8('0x12')](_0xfdd8('0xe'),_0x237283,_0x3d0f9e['error']['message']);return _0x2af910(_0x3d0f9e[_0xfdd8('0x12')][_0xfdd8('0x14')]);}else{logger[_0xfdd8('0xd')]('VoiceCallReport,\x20%s,\x20%s',_0x237283,_0xfdd8('0xf'));_0x2af910(_0x3d0f9e[_0xfdd8('0x15')][_0xfdd8('0x14')]);}})[_0xfdd8('0x16')](function(_0x125538){logger[_0xfdd8('0x12')](_0xfdd8('0xe'),_0x237283,_0x125538);_0x547f44(_0x125538);});});}exports[_0xfdd8('0x17')]=function(_0x3fc361){var _0x123145=this;return new Promise(function(_0x3a1d79,_0xa5e86b){return db['VoiceCallReport']['findAll']({'raw':_0x3fc361[_0xfdd8('0x18')]?_0x3fc361[_0xfdd8('0x18')][_0xfdd8('0x19')]===undefined?!![]:![]:!![],'where':_0x3fc361[_0xfdd8('0x18')]?_0x3fc361['options'][_0xfdd8('0x1a')]||null:null,'attributes':_0x3fc361[_0xfdd8('0x18')]?_0x3fc361[_0xfdd8('0x18')][_0xfdd8('0x1b')]||null:null,'limit':_0x3fc361['options']?_0x3fc361[_0xfdd8('0x18')]['limit']||null:null,'include':_0x3fc361[_0xfdd8('0x18')]?_0x3fc361[_0xfdd8('0x18')][_0xfdd8('0x1c')]?_[_0xfdd8('0x1d')](_0x3fc361[_0xfdd8('0x18')][_0xfdd8('0x1c')],function(_0x47d00c){return{'model':db[_0x47d00c[_0xfdd8('0x1e')]],'as':_0x47d00c['as'],'attributes':_0x47d00c['attributes'],'include':_0x47d00c[_0xfdd8('0x1c')]?_[_0xfdd8('0x1d')](_0x47d00c['include'],function(_0x391199){return{'model':db[_0x391199['model']],'as':_0x391199['as'],'attributes':_0x391199[_0xfdd8('0x1b')],'include':_0x391199[_0xfdd8('0x1c')]?_[_0xfdd8('0x1d')](_0x391199[_0xfdd8('0x1c')],function(_0x325425){return{'model':db[_0x325425['model']],'as':_0x325425['as'],'attributes':_0x325425[_0xfdd8('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xfdd8('0xc')](function(_0xed21c6){logger[_0xfdd8('0xd')](_0xfdd8('0x17'),_0x3fc361);logger['debug'](_0xfdd8('0x17'),_0x3fc361,JSON['stringify'](_0xed21c6));_0x3a1d79(_0xed21c6);})[_0xfdd8('0x16')](function(_0xe68544){logger['error']('GetVoiceCallReport',_0xe68544[_0xfdd8('0x14')],_0x3fc361);_0xa5e86b(_0x123145[_0xfdd8('0x12')](0x1f4,_0xe68544[_0xfdd8('0x14')]));});});};exports[_0xfdd8('0x1f')]=function(_0x171af7){var _0x5684a6=this;return new Promise(function(_0x37fc8e,_0x5a72e2){return db[_0xfdd8('0x20')][_0xfdd8('0x21')](_0x171af7[_0xfdd8('0x22')],{'raw':_0x171af7[_0xfdd8('0x18')]?_0x171af7[_0xfdd8('0x18')][_0xfdd8('0x19')]===undefined?!![]:![]:!![]})[_0xfdd8('0xc')](function(_0x5045c2){logger[_0xfdd8('0xd')](_0xfdd8('0x1f'),_0x171af7);logger[_0xfdd8('0x10')](_0xfdd8('0x1f'),_0x171af7,JSON['stringify'](_0x5045c2));_0x37fc8e(_0x5045c2);})[_0xfdd8('0x16')](function(_0x2104a0){logger['error'](_0xfdd8('0x1f'),_0x2104a0['message'],_0x171af7);_0x5a72e2(_0x5684a6[_0xfdd8('0x12')](0x1f4,_0x2104a0[_0xfdd8('0x14')]));});});};exports['UpdateVoiceCallReport']=function(_0x11baee){var _0xbacbe7=this;return new Promise(function(_0x1ba253,_0x28cfc4){return db['VoiceCallReport'][_0xfdd8('0x23')](_0x11baee['body'],{'raw':_0x11baee['options']?_0x11baee[_0xfdd8('0x18')][_0xfdd8('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11baee[_0xfdd8('0x18')]?_0x11baee[_0xfdd8('0x18')]['where']||null:null,'attributes':_0x11baee['options']?_0x11baee[_0xfdd8('0x18')][_0xfdd8('0x1b')]||null:null,'limit':_0x11baee['options']?_0x11baee[_0xfdd8('0x18')][_0xfdd8('0x24')]||null:null})[_0xfdd8('0xc')](function(_0x486e83){logger['info'](_0xfdd8('0x25'),_0x11baee);logger['debug']('UpdateVoiceCallReport',_0x11baee,JSON[_0xfdd8('0x26')](_0x486e83));_0x1ba253(_0x486e83);})[_0xfdd8('0x16')](function(_0x3a60cb){logger[_0xfdd8('0x12')](_0xfdd8('0x25'),_0x3a60cb[_0xfdd8('0x14')],_0x11baee);_0x28cfc4(_0xbacbe7[_0xfdd8('0x12')](0x1f4,_0x3a60cb[_0xfdd8('0x14')]));});});};
\ No newline at end of file
+var _0x28ef=['message','result','catch','GetVoiceCallReport','VoiceCallReport','options','where','attributes','limit','include','model','map','create','body','CreateVoiceCallReport','UpdateVoiceCallReport','update','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceCallReport,\x20%s,\x20%s'];(function(_0x5db99b,_0xdee23a){var _0x4b2d0e=function(_0x4deee1){while(--_0x4deee1){_0x5db99b['push'](_0x5db99b['shift']());}};_0x4b2d0e(++_0xdee23a);}(_0x28ef,0x11b));var _0xf28e=function(_0x395e15,_0x5dd484){_0x395e15=_0x395e15-0x0;var _0x49c4da=_0x28ef[_0x395e15];return _0x49c4da;};'use strict';var _=require('lodash');var util=require(_0xf28e('0x0'));var moment=require(_0xf28e('0x1'));var BPromise=require('bluebird');var rs=require(_0xf28e('0x2'));var fs=require('fs');var Redis=require(_0xf28e('0x3'));var db=require(_0xf28e('0x4'))['db'];var utils=require(_0xf28e('0x5'));var logger=require(_0xf28e('0x6'))(_0xf28e('0x7'));var config=require('../../config/environment');var jayson=require(_0xf28e('0x8'));var client=jayson[_0xf28e('0x9')][_0xf28e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xfd8ad,_0x411e9d,_0x44f463){return new BPromise(function(_0x4dab20,_0x48600a){return client[_0xf28e('0xb')](_0xfd8ad,_0x44f463)[_0xf28e('0xc')](function(_0x387bc8){logger[_0xf28e('0xd')]('VoiceCallReport,\x20%s,\x20%s',_0x411e9d,_0xf28e('0xe'));logger[_0xf28e('0xf')](_0xf28e('0x10'),_0x411e9d,'request\x20sent',JSON[_0xf28e('0x11')](_0x387bc8));if(_0x387bc8[_0xf28e('0x12')]){if(_0x387bc8['error'][_0xf28e('0x13')]===0x1f4){logger[_0xf28e('0x12')](_0xf28e('0x14'),_0x411e9d,_0x387bc8[_0xf28e('0x12')][_0xf28e('0x15')]);return _0x48600a(_0x387bc8['error'][_0xf28e('0x15')]);}logger[_0xf28e('0x12')]('VoiceCallReport,\x20%s,\x20%s',_0x411e9d,_0x387bc8[_0xf28e('0x12')]['message']);return _0x4dab20(_0x387bc8[_0xf28e('0x12')][_0xf28e('0x15')]);}else{logger[_0xf28e('0xd')]('VoiceCallReport,\x20%s,\x20%s',_0x411e9d,_0xf28e('0xe'));_0x4dab20(_0x387bc8[_0xf28e('0x16')][_0xf28e('0x15')]);}})[_0xf28e('0x17')](function(_0x3b8ed6){logger[_0xf28e('0x12')](_0xf28e('0x14'),_0x411e9d,_0x3b8ed6);_0x48600a(_0x3b8ed6);});});}exports[_0xf28e('0x18')]=function(_0x313e70){var _0x2c2f46=this;return new Promise(function(_0x20f4a6,_0x58a4d6){return db[_0xf28e('0x19')]['findAll']({'raw':_0x313e70[_0xf28e('0x1a')]?_0x313e70[_0xf28e('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x313e70[_0xf28e('0x1a')]?_0x313e70[_0xf28e('0x1a')][_0xf28e('0x1b')]||null:null,'attributes':_0x313e70[_0xf28e('0x1a')]?_0x313e70['options'][_0xf28e('0x1c')]||null:null,'limit':_0x313e70[_0xf28e('0x1a')]?_0x313e70[_0xf28e('0x1a')][_0xf28e('0x1d')]||null:null,'include':_0x313e70['options']?_0x313e70[_0xf28e('0x1a')][_0xf28e('0x1e')]?_['map'](_0x313e70[_0xf28e('0x1a')][_0xf28e('0x1e')],function(_0x1848f2){return{'model':db[_0x1848f2[_0xf28e('0x1f')]],'as':_0x1848f2['as'],'attributes':_0x1848f2[_0xf28e('0x1c')],'include':_0x1848f2[_0xf28e('0x1e')]?_[_0xf28e('0x20')](_0x1848f2[_0xf28e('0x1e')],function(_0xfa3da5){return{'model':db[_0xfa3da5[_0xf28e('0x1f')]],'as':_0xfa3da5['as'],'attributes':_0xfa3da5[_0xf28e('0x1c')],'include':_0xfa3da5[_0xf28e('0x1e')]?_[_0xf28e('0x20')](_0xfa3da5[_0xf28e('0x1e')],function(_0x3e4838){return{'model':db[_0x3e4838[_0xf28e('0x1f')]],'as':_0x3e4838['as'],'attributes':_0x3e4838[_0xf28e('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x6aea13){logger[_0xf28e('0xd')](_0xf28e('0x18'),_0x313e70);logger[_0xf28e('0xf')](_0xf28e('0x18'),_0x313e70,JSON[_0xf28e('0x11')](_0x6aea13));_0x20f4a6(_0x6aea13);})[_0xf28e('0x17')](function(_0x23c47){logger[_0xf28e('0x12')](_0xf28e('0x18'),_0x23c47[_0xf28e('0x15')],_0x313e70);_0x58a4d6(_0x2c2f46[_0xf28e('0x12')](0x1f4,_0x23c47['message']));});});};exports['CreateVoiceCallReport']=function(_0x137628){var _0x3d9aab=this;return new Promise(function(_0x357e2d,_0x25bae8){return db[_0xf28e('0x19')][_0xf28e('0x21')](_0x137628[_0xf28e('0x22')],{'raw':_0x137628[_0xf28e('0x1a')]?_0x137628[_0xf28e('0x1a')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x26cd04){logger[_0xf28e('0xd')](_0xf28e('0x23'),_0x137628);logger[_0xf28e('0xf')]('CreateVoiceCallReport',_0x137628,JSON[_0xf28e('0x11')](_0x26cd04));_0x357e2d(_0x26cd04);})[_0xf28e('0x17')](function(_0x45d40a){logger[_0xf28e('0x12')](_0xf28e('0x23'),_0x45d40a['message'],_0x137628);_0x25bae8(_0x3d9aab[_0xf28e('0x12')](0x1f4,_0x45d40a[_0xf28e('0x15')]));});});};exports[_0xf28e('0x24')]=function(_0x282fd0){var _0x19e60f=this;return new Promise(function(_0x40f06c,_0x24aa17){return db[_0xf28e('0x19')][_0xf28e('0x25')](_0x282fd0['body'],{'raw':_0x282fd0['options']?_0x282fd0[_0xf28e('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x282fd0[_0xf28e('0x1a')]?_0x282fd0[_0xf28e('0x1a')][_0xf28e('0x1b')]||null:null,'attributes':_0x282fd0['options']?_0x282fd0['options'][_0xf28e('0x1c')]||null:null,'limit':_0x282fd0['options']?_0x282fd0['options']['limit']||null:null})[_0xf28e('0xc')](function(_0x22f00e){logger['info'](_0xf28e('0x24'),_0x282fd0);logger[_0xf28e('0xf')](_0xf28e('0x24'),_0x282fd0,JSON[_0xf28e('0x11')](_0x22f00e));_0x40f06c(_0x22f00e);})[_0xf28e('0x17')](function(_0x492e06){logger[_0xf28e('0x12')](_0xf28e('0x24'),_0x492e06[_0xf28e('0x15')],_0x282fd0);_0x24aa17(_0x19e60f[_0xf28e('0x12')](0x1f4,_0x492e06[_0xf28e('0x15')]));});});};
\ No newline at end of file
index 3d046ef..4c4cd1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf791=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','delete'];(function(_0x46fffa,_0x33761a){var _0x4f035e=function(_0x2a6159){while(--_0x2a6159){_0x46fffa['push'](_0x46fffa['shift']());}};_0x4f035e(++_0x33761a);}(_0xf791,0xf0));var _0x1f79=function(_0x22889a,_0x4b75f7){_0x22889a=_0x22889a-0x0;var _0x763d34=_0xf791[_0x22889a];return _0x763d34;};'use strict';var multer=require('multer');var util=require(_0x1f79('0x0'));var path=require(_0x1f79('0x1'));var timeout=require(_0x1f79('0x2'));var express=require('express');var router=express[_0x1f79('0x3')]();var fs_extra=require(_0x1f79('0x4'));var auth=require(_0x1f79('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1f79('0x6'));var controller=require('./voiceChanSpy.controller');router[_0x1f79('0x7')]('/',auth[_0x1f79('0x8')](),controller[_0x1f79('0x9')]);router[_0x1f79('0x7')](_0x1f79('0xa'),auth[_0x1f79('0x8')](),controller[_0x1f79('0xb')]);router[_0x1f79('0xc')]('/',auth['isAuthenticated'](),controller[_0x1f79('0xd')]);router[_0x1f79('0xe')](_0x1f79('0xa'),auth[_0x1f79('0x8')](),controller['update']);router[_0x1f79('0xf')](_0x1f79('0xa'),auth[_0x1f79('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x4b7f=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','create','put','update','delete','destroy','multer','util'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x4b7f,0x1ae));var _0xf4b7=function(_0x10f579,_0x4e05e5){_0x10f579=_0x10f579-0x0;var _0x45720f=_0x4b7f[_0x10f579];return _0x45720f;};'use strict';var multer=require(_0xf4b7('0x0'));var util=require(_0xf4b7('0x1'));var path=require(_0xf4b7('0x2'));var timeout=require(_0xf4b7('0x3'));var express=require(_0xf4b7('0x4'));var router=express['Router']();var fs_extra=require(_0xf4b7('0x5'));var auth=require(_0xf4b7('0x6'));var interaction=require(_0xf4b7('0x7'));var config=require(_0xf4b7('0x8'));var controller=require('./voiceChanSpy.controller');router[_0xf4b7('0x9')]('/',auth[_0xf4b7('0xa')](),controller[_0xf4b7('0xb')]);router[_0xf4b7('0x9')](_0xf4b7('0xc'),auth[_0xf4b7('0xa')](),controller['show']);router['post']('/',auth[_0xf4b7('0xa')](),controller[_0xf4b7('0xd')]);router[_0xf4b7('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xf4b7('0xf')]);router[_0xf4b7('0x10')](_0xf4b7('0xc'),auth[_0xf4b7('0xa')](),controller[_0xf4b7('0x11')]);module['exports']=router;
\ No newline at end of file
index 2e487ba..cd43e1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa89e=['options','getDataValue','split','BOOLEAN','sequelize','exports','STRING','join'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0xa89e,0x8c));var _0xea89=function(_0x188395,_0x8b7305){_0x188395=_0x188395-0x0;var _0x4cd1b4=_0xa89e[_0x188395];return _0x4cd1b4;};'use strict';var Sequelize=require(_0xea89('0x0'));module[_0xea89('0x1')]={'name':{'type':Sequelize[_0xea89('0x2')]},'prefix':{'type':Sequelize[_0xea89('0x2')],'unique':'name','allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x31c220){this['setDataValue']('options',_0x31c220?_0x31c220[_0xea89('0x3')](''):[]);},'get':function(){return this['getDataValue'](_0xea89('0x4'))?this[_0xea89('0x5')](_0xea89('0x4'))[_0xea89('0x6')](''):[];}},'auth':{'type':Sequelize[_0xea89('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0xea89('0x2')]},'record':{'type':Sequelize[_0xea89('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xea89('0x2')]}};
\ No newline at end of file
+var _0xa507=['BOOLEAN','STRING','setDataValue','options','join','split'];(function(_0x4557a4,_0x36f89c){var _0x4ceb15=function(_0x48277e){while(--_0x48277e){_0x4557a4['push'](_0x4557a4['shift']());}};_0x4ceb15(++_0x36f89c);}(_0xa507,0xa9));var _0x7a50=function(_0x5df61d,_0x158640){_0x5df61d=_0x5df61d-0x0;var _0x24cc4c=_0xa507[_0x5df61d];return _0x24cc4c;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0x7a50('0x0')],'set':function(_0xc53f00){this[_0x7a50('0x1')](_0x7a50('0x2'),_0xc53f00?_0xc53f00[_0x7a50('0x3')](''):[]);},'get':function(){return this['getDataValue']('options')?this['getDataValue'](_0x7a50('0x2'))[_0x7a50('0x4')](''):[];}},'auth':{'type':Sequelize[_0x7a50('0x5')],'defaultValue':![]},'password':{'type':Sequelize[_0x7a50('0x0')]},'record':{'type':Sequelize[_0x7a50('0x5')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 60ded87..75a73b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1948=['merge','options','includeAll','include','findAll','catch','show','fields','find','create','body','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','apply','save','update','then','destroy','get','ChanSpies','UserProfileResource','end','error','VoiceChanSpy','rawAttributes','fieldName','type','model','name','keys','query','filters','attributes','intersection','length','nolimit','order','sort','where','map','filter'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1948,0x145));var _0x8194=function(_0x1f603a,_0x3a1b0f){_0x1f603a=_0x1f603a-0x0;var _0x5e44a7=_0x1948[_0x1f603a];return _0x5e44a7;};'use strict';var emlformat=require(_0x8194('0x0'));var rimraf=require(_0x8194('0x1'));var zipdir=require(_0x8194('0x2'));var jsonpatch=require(_0x8194('0x3'));var rp=require(_0x8194('0x4'));var moment=require('moment');var BPromise=require(_0x8194('0x5'));var Mustache=require(_0x8194('0x6'));var util=require(_0x8194('0x7'));var path=require(_0x8194('0x8'));var sox=require(_0x8194('0x9'));var csv=require(_0x8194('0xa'));var ejs=require(_0x8194('0xb'));var fs=require('fs');var fs_extra=require(_0x8194('0xc'));var _=require('lodash');var squel=require(_0x8194('0xd'));var crypto=require(_0x8194('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x8194('0xf'));var toCsv=require(_0x8194('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8194('0x10'));var authService=require(_0x8194('0x11'));var qs=require(_0x8194('0x12'));var as=require(_0x8194('0x13'));var hardwareService=require(_0x8194('0x14'));var logger=require('../../config/logger')(_0x8194('0x15'));var utils=require(_0x8194('0x16'));var config=require(_0x8194('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8194('0x18'))['db'];function respondWithStatusCode(_0x3d7aea,_0x1aa698){_0x1aa698=_0x1aa698||0xcc;return function(_0xeba106){if(_0xeba106){return _0x3d7aea[_0x8194('0x19')](_0x1aa698);}return _0x3d7aea[_0x8194('0x1a')](_0x1aa698)['end']();};}function respondWithResult(_0x1ae7ec,_0x215b95){_0x215b95=_0x215b95||0xc8;return function(_0xfd031c){if(_0xfd031c){return _0x1ae7ec[_0x8194('0x1a')](_0x215b95)[_0x8194('0x1b')](_0xfd031c);}};}function respondWithFilteredResult(_0x27adfc,_0x112d44){return function(_0x13e166){if(_0x13e166){var _0x19c23e=typeof _0x112d44['offset']===_0x8194('0x1c')&&typeof _0x112d44[_0x8194('0x1d')]==='undefined';var _0x41a11e=_0x13e166['count'];var _0x55e4c2=_0x19c23e?0x0:_0x112d44['offset'];var _0x37b048=_0x19c23e?_0x13e166[_0x8194('0x1e')]:_0x112d44[_0x8194('0x1f')]+_0x112d44[_0x8194('0x1d')];var _0x956c6a;if(_0x37b048>=_0x41a11e){_0x37b048=_0x41a11e;_0x956c6a=0xc8;}else{_0x956c6a=0xce;}_0x27adfc[_0x8194('0x1a')](_0x956c6a);return _0x27adfc['set']('Content-Range',_0x55e4c2+'-'+_0x37b048+'/'+_0x41a11e)[_0x8194('0x1b')](_0x13e166);}return null;};}function patchUpdates(_0x588cac){return function(_0x43d763){try{jsonpatch[_0x8194('0x20')](_0x43d763,_0x588cac,!![]);}catch(_0x9421f5){return BPromise['reject'](_0x9421f5);}return _0x43d763[_0x8194('0x21')]();};}function saveUpdates(_0x11ce0c,_0x41641d){return function(_0x28df4f){if(_0x28df4f){return _0x28df4f[_0x8194('0x22')](_0x11ce0c)[_0x8194('0x23')](function(_0x2c5061){return _0x2c5061;});}return null;};}function removeEntity(_0xe593e9,_0x269a22){return function(_0x263093){if(_0x263093){return _0x263093[_0x8194('0x24')]()[_0x8194('0x23')](function(){var _0x5040e6=_0x263093[_0x8194('0x25')]({'plain':!![]});var _0x1216b1=_0x8194('0x26');return db[_0x8194('0x27')]['destroy']({'where':{'type':_0x1216b1,'resourceId':_0x5040e6['id']}})[_0x8194('0x23')](function(){return _0x263093;});})[_0x8194('0x23')](function(){_0xe593e9[_0x8194('0x1a')](0xcc)[_0x8194('0x28')]();});}};}function handleEntityNotFound(_0x3e8cb3,_0x513efd){return function(_0x487ce9){if(!_0x487ce9){_0x3e8cb3[_0x8194('0x19')](0x194);}return _0x487ce9;};}function handleError(_0xfaa613,_0x43c02e){_0x43c02e=_0x43c02e||0x1f4;return function(_0x996c97){logger[_0x8194('0x29')](_0x996c97['stack']);if(_0x996c97['name']){delete _0x996c97['name'];}_0xfaa613[_0x8194('0x1a')](_0x43c02e)['send'](_0x996c97);};}exports['index']=function(_0xb8910b,_0x4178f4){var _0x4ee84e={},_0x1ef19a={},_0x58f209={'count':0x0,'rows':[]};var _0x424b83=_['map'](db[_0x8194('0x2a')][_0x8194('0x2b')],function(_0x126795){return{'name':_0x126795[_0x8194('0x2c')],'type':_0x126795[_0x8194('0x2d')]['key']};});_0x1ef19a[_0x8194('0x2e')]=_['map'](_0x424b83,_0x8194('0x2f'));_0x1ef19a['query']=_[_0x8194('0x30')](_0xb8910b[_0x8194('0x31')]);_0x1ef19a[_0x8194('0x32')]=_['intersection'](_0x1ef19a['model'],_0x1ef19a[_0x8194('0x31')]);_0x4ee84e[_0x8194('0x33')]=_[_0x8194('0x34')](_0x1ef19a[_0x8194('0x2e')],qs['fields'](_0xb8910b['query']['fields']));_0x4ee84e[_0x8194('0x33')]=_0x4ee84e[_0x8194('0x33')][_0x8194('0x35')]?_0x4ee84e[_0x8194('0x33')]:_0x1ef19a[_0x8194('0x2e')];if(!_0xb8910b[_0x8194('0x31')]['hasOwnProperty'](_0x8194('0x36'))){_0x4ee84e[_0x8194('0x1d')]=qs[_0x8194('0x1d')](_0xb8910b[_0x8194('0x31')][_0x8194('0x1d')]);_0x4ee84e[_0x8194('0x1f')]=qs[_0x8194('0x1f')](_0xb8910b[_0x8194('0x31')][_0x8194('0x1f')]);}_0x4ee84e[_0x8194('0x37')]=qs[_0x8194('0x38')](_0xb8910b[_0x8194('0x31')]['sort']);_0x4ee84e[_0x8194('0x39')]=qs['filters'](_['pick'](_0xb8910b[_0x8194('0x31')],_0x1ef19a[_0x8194('0x32')]),_0x424b83);if(_0xb8910b['query']['filter']){_0x4ee84e['where']=_['merge'](_0x4ee84e['where'],{'$or':_[_0x8194('0x3a')](_0x424b83,function(_0x34001b){if(_0x34001b[_0x8194('0x2d')]!=='VIRTUAL'){var _0x4961e6={};_0x4961e6[_0x34001b['name']]={'$like':'%'+_0xb8910b[_0x8194('0x31')][_0x8194('0x3b')]+'%'};return _0x4961e6;}})});}_0x4ee84e=_[_0x8194('0x3c')]({},_0x4ee84e,_0xb8910b[_0x8194('0x3d')]);var _0x4aa53a={'where':_0x4ee84e[_0x8194('0x39')]};return db[_0x8194('0x2a')][_0x8194('0x1e')](_0x4aa53a)[_0x8194('0x23')](function(_0x371327){_0x58f209['count']=_0x371327;if(_0xb8910b[_0x8194('0x31')][_0x8194('0x3e')]){_0x4ee84e[_0x8194('0x3f')]=[{'all':!![]}];}return db[_0x8194('0x2a')][_0x8194('0x40')](_0x4ee84e);})[_0x8194('0x23')](function(_0x36789b){_0x58f209['rows']=_0x36789b;return _0x58f209;})[_0x8194('0x23')](respondWithFilteredResult(_0x4178f4,_0x4ee84e))[_0x8194('0x41')](handleError(_0x4178f4,null));};exports[_0x8194('0x42')]=function(_0x13ec07,_0x56ade6){var _0x58c83c={'raw':![],'where':{'id':_0x13ec07['params']['id']}},_0x1fac16={};_0x1fac16[_0x8194('0x2e')]=_['keys'](db[_0x8194('0x2a')]['rawAttributes']);_0x1fac16[_0x8194('0x31')]=_[_0x8194('0x30')](_0x13ec07[_0x8194('0x31')]);_0x1fac16[_0x8194('0x32')]=_['intersection'](_0x1fac16[_0x8194('0x2e')],_0x1fac16[_0x8194('0x31')]);_0x58c83c[_0x8194('0x33')]=_['intersection'](_0x1fac16[_0x8194('0x2e')],qs[_0x8194('0x43')](_0x13ec07[_0x8194('0x31')][_0x8194('0x43')]));_0x58c83c[_0x8194('0x33')]=_0x58c83c['attributes'][_0x8194('0x35')]?_0x58c83c['attributes']:_0x1fac16[_0x8194('0x2e')];if(_0x13ec07[_0x8194('0x31')][_0x8194('0x3e')]){_0x58c83c[_0x8194('0x3f')]=[{'all':!![]}];}_0x58c83c=_[_0x8194('0x3c')]({},_0x58c83c,_0x13ec07[_0x8194('0x3d')]);return db[_0x8194('0x2a')][_0x8194('0x44')](_0x58c83c)[_0x8194('0x23')](handleEntityNotFound(_0x56ade6,null))[_0x8194('0x23')](respondWithResult(_0x56ade6,null))[_0x8194('0x41')](handleError(_0x56ade6,null));};exports[_0x8194('0x45')]=function(_0x398579,_0x349e27){return db[_0x8194('0x2a')][_0x8194('0x45')](_0x398579[_0x8194('0x46')],{})[_0x8194('0x23')](function(_0x5190d1){var _0x38195c=_0x398579[_0x8194('0x47')]['get']({'plain':!![]});if(!_0x38195c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38195c[_0x8194('0x48')]===_0x8194('0x47')){var _0x2ac683=_0x5190d1[_0x8194('0x25')]({'plain':!![]});var _0x3f85af=_0x8194('0x26');return db[_0x8194('0x49')][_0x8194('0x44')]({'where':{'name':_0x3f85af,'userProfileId':_0x38195c[_0x8194('0x4a')]},'raw':!![]})[_0x8194('0x23')](function(_0x5aa280){if(_0x5aa280&&_0x5aa280['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x2ac683[_0x8194('0x2f')],'resourceId':_0x2ac683['id'],'type':_0x5aa280[_0x8194('0x2f')],'sectionId':_0x5aa280['id']},{})[_0x8194('0x23')](function(){return _0x5190d1;});}else{return _0x5190d1;}})[_0x8194('0x41')](function(_0x381091){logger[_0x8194('0x29')](_0x8194('0x4b'),_0x381091);throw _0x381091;});}return _0x5190d1;})[_0x8194('0x23')](respondWithResult(_0x349e27,0xc9))[_0x8194('0x41')](handleError(_0x349e27,null));};exports['update']=function(_0x5ec3dd,_0x259536){if(_0x5ec3dd[_0x8194('0x46')]['id']){delete _0x5ec3dd[_0x8194('0x46')]['id'];}return db[_0x8194('0x2a')][_0x8194('0x44')]({'where':{'id':_0x5ec3dd[_0x8194('0x4c')]['id']}})['then'](handleEntityNotFound(_0x259536,null))[_0x8194('0x23')](saveUpdates(_0x5ec3dd[_0x8194('0x46')],null))[_0x8194('0x23')](respondWithResult(_0x259536,null))[_0x8194('0x41')](handleError(_0x259536,null));};exports[_0x8194('0x24')]=function(_0x46f1e1,_0x196fb2){return db[_0x8194('0x2a')]['find']({'where':{'id':_0x46f1e1[_0x8194('0x4c')]['id']}})[_0x8194('0x23')](handleEntityNotFound(_0x196fb2,null))[_0x8194('0x23')](removeEntity(_0x196fb2,null))[_0x8194('0x41')](handleError(_0x196fb2,null));};
\ No newline at end of file
+var _0x447b=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','set','apply','save','update','then','destroy','get','ChanSpies','UserProfileResource','error','stack','send','VoiceChanSpy','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x5280af,_0x3a4b14){var _0xd88e3a=function(_0x1f4500){while(--_0x1f4500){_0x5280af['push'](_0x5280af['shift']());}};_0xd88e3a(++_0x3a4b14);}(_0x447b,0xe4));var _0xb447=function(_0x4a05e7,_0x22f0df){_0x4a05e7=_0x4a05e7-0x0;var _0x126423=_0x447b[_0x4a05e7];return _0x126423;};'use strict';var emlformat=require(_0xb447('0x0'));var rimraf=require(_0xb447('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb447('0x2'));var rp=require(_0xb447('0x3'));var moment=require(_0xb447('0x4'));var BPromise=require(_0xb447('0x5'));var Mustache=require(_0xb447('0x6'));var util=require(_0xb447('0x7'));var path=require(_0xb447('0x8'));var sox=require(_0xb447('0x9'));var csv=require(_0xb447('0xa'));var ejs=require(_0xb447('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb447('0xc'));var crypto=require('crypto');var jsforce=require(_0xb447('0xd'));var deskjs=require(_0xb447('0xe'));var toCsv=require(_0xb447('0xa'));var querystring=require(_0xb447('0xf'));var Papa=require(_0xb447('0x10'));var Redis=require('ioredis');var authService=require(_0xb447('0x11'));var qs=require(_0xb447('0x12'));var as=require(_0xb447('0x13'));var hardwareService=require(_0xb447('0x14'));var logger=require('../../config/logger')(_0xb447('0x15'));var utils=require(_0xb447('0x16'));var config=require(_0xb447('0x17'));var licenseUtil=require(_0xb447('0x18'));var db=require(_0xb447('0x19'))['db'];function respondWithStatusCode(_0x3743e7,_0x255ce0){_0x255ce0=_0x255ce0||0xcc;return function(_0x128a85){if(_0x128a85){return _0x3743e7[_0xb447('0x1a')](_0x255ce0);}return _0x3743e7['status'](_0x255ce0)['end']();};}function respondWithResult(_0x25ec33,_0x56b103){_0x56b103=_0x56b103||0xc8;return function(_0x5e63fb){if(_0x5e63fb){return _0x25ec33[_0xb447('0x1b')](_0x56b103)[_0xb447('0x1c')](_0x5e63fb);}};}function respondWithFilteredResult(_0x43f53f,_0x557701){return function(_0x4b9b6b){if(_0x4b9b6b){var _0x86993a=typeof _0x557701['offset']===_0xb447('0x1d')&&typeof _0x557701['limit']===_0xb447('0x1d');var _0x1bb3af=_0x4b9b6b[_0xb447('0x1e')];var _0x23825c=_0x86993a?0x0:_0x557701[_0xb447('0x1f')];var _0x3015ab=_0x86993a?_0x4b9b6b[_0xb447('0x1e')]:_0x557701['offset']+_0x557701['limit'];var _0x78d2e3;if(_0x3015ab>=_0x1bb3af){_0x3015ab=_0x1bb3af;_0x78d2e3=0xc8;}else{_0x78d2e3=0xce;}_0x43f53f[_0xb447('0x1b')](_0x78d2e3);return _0x43f53f[_0xb447('0x20')]('Content-Range',_0x23825c+'-'+_0x3015ab+'/'+_0x1bb3af)[_0xb447('0x1c')](_0x4b9b6b);}return null;};}function patchUpdates(_0x176366){return function(_0x309324){try{jsonpatch[_0xb447('0x21')](_0x309324,_0x176366,!![]);}catch(_0x232757){return BPromise['reject'](_0x232757);}return _0x309324[_0xb447('0x22')]();};}function saveUpdates(_0xb824d9,_0xcba626){return function(_0x457ebc){if(_0x457ebc){return _0x457ebc[_0xb447('0x23')](_0xb824d9)[_0xb447('0x24')](function(_0x569546){return _0x569546;});}return null;};}function removeEntity(_0x36c1ba,_0x1b080a){return function(_0x24081c){if(_0x24081c){return _0x24081c[_0xb447('0x25')]()[_0xb447('0x24')](function(){var _0x4fd5cb=_0x24081c[_0xb447('0x26')]({'plain':!![]});var _0x265f11=_0xb447('0x27');return db[_0xb447('0x28')][_0xb447('0x25')]({'where':{'type':_0x265f11,'resourceId':_0x4fd5cb['id']}})[_0xb447('0x24')](function(){return _0x24081c;});})[_0xb447('0x24')](function(){_0x36c1ba[_0xb447('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x43153a,_0x6eaf85){return function(_0x35f4ba){if(!_0x35f4ba){_0x43153a[_0xb447('0x1a')](0x194);}return _0x35f4ba;};}function handleError(_0x1c5eec,_0x2a4e84){_0x2a4e84=_0x2a4e84||0x1f4;return function(_0xa112c6){logger[_0xb447('0x29')](_0xa112c6[_0xb447('0x2a')]);if(_0xa112c6['name']){delete _0xa112c6['name'];}_0x1c5eec['status'](_0x2a4e84)[_0xb447('0x2b')](_0xa112c6);};}exports['index']=function(_0x49d6fc,_0x4e24f5){var _0x26d6b4={},_0x230a11={},_0x1963a7={'count':0x0,'rows':[]};var _0x331158=_['map'](db[_0xb447('0x2c')][_0xb447('0x2d')],function(_0x357992){return{'name':_0x357992[_0xb447('0x2e')],'type':_0x357992[_0xb447('0x2f')][_0xb447('0x30')]};});_0x230a11[_0xb447('0x31')]=_[_0xb447('0x32')](_0x331158,_0xb447('0x33'));_0x230a11[_0xb447('0x34')]=_[_0xb447('0x35')](_0x49d6fc[_0xb447('0x34')]);_0x230a11[_0xb447('0x36')]=_[_0xb447('0x37')](_0x230a11['model'],_0x230a11[_0xb447('0x34')]);_0x26d6b4[_0xb447('0x38')]=_[_0xb447('0x37')](_0x230a11[_0xb447('0x31')],qs[_0xb447('0x39')](_0x49d6fc[_0xb447('0x34')]['fields']));_0x26d6b4[_0xb447('0x38')]=_0x26d6b4[_0xb447('0x38')][_0xb447('0x3a')]?_0x26d6b4['attributes']:_0x230a11['model'];if(!_0x49d6fc[_0xb447('0x34')]['hasOwnProperty']('nolimit')){_0x26d6b4[_0xb447('0x3b')]=qs[_0xb447('0x3b')](_0x49d6fc[_0xb447('0x34')]['limit']);_0x26d6b4['offset']=qs['offset'](_0x49d6fc[_0xb447('0x34')]['offset']);}_0x26d6b4[_0xb447('0x3c')]=qs[_0xb447('0x3d')](_0x49d6fc[_0xb447('0x34')][_0xb447('0x3d')]);_0x26d6b4[_0xb447('0x3e')]=qs[_0xb447('0x36')](_[_0xb447('0x3f')](_0x49d6fc[_0xb447('0x34')],_0x230a11[_0xb447('0x36')]),_0x331158);if(_0x49d6fc['query'][_0xb447('0x40')]){_0x26d6b4['where']=_[_0xb447('0x41')](_0x26d6b4[_0xb447('0x3e')],{'$or':_[_0xb447('0x32')](_0x331158,function(_0x5b370f){if(_0x5b370f[_0xb447('0x2f')]!==_0xb447('0x42')){var _0x3b7b64={};_0x3b7b64[_0x5b370f[_0xb447('0x33')]]={'$like':'%'+_0x49d6fc[_0xb447('0x34')][_0xb447('0x40')]+'%'};return _0x3b7b64;}})});}_0x26d6b4=_['merge']({},_0x26d6b4,_0x49d6fc[_0xb447('0x43')]);var _0x3fee12={'where':_0x26d6b4['where']};return db[_0xb447('0x2c')][_0xb447('0x1e')](_0x3fee12)['then'](function(_0x8b31a9){_0x1963a7['count']=_0x8b31a9;if(_0x49d6fc[_0xb447('0x34')]['includeAll']){_0x26d6b4[_0xb447('0x44')]=[{'all':!![]}];}return db[_0xb447('0x2c')][_0xb447('0x45')](_0x26d6b4);})[_0xb447('0x24')](function(_0x2ff39d){_0x1963a7[_0xb447('0x46')]=_0x2ff39d;return _0x1963a7;})[_0xb447('0x24')](respondWithFilteredResult(_0x4e24f5,_0x26d6b4))[_0xb447('0x47')](handleError(_0x4e24f5,null));};exports[_0xb447('0x48')]=function(_0x22dba0,_0x4d9533){var _0x1ab42f={'raw':![],'where':{'id':_0x22dba0[_0xb447('0x49')]['id']}},_0x2ffc92={};_0x2ffc92[_0xb447('0x31')]=_['keys'](db[_0xb447('0x2c')][_0xb447('0x2d')]);_0x2ffc92[_0xb447('0x34')]=_[_0xb447('0x35')](_0x22dba0[_0xb447('0x34')]);_0x2ffc92[_0xb447('0x36')]=_[_0xb447('0x37')](_0x2ffc92['model'],_0x2ffc92[_0xb447('0x34')]);_0x1ab42f[_0xb447('0x38')]=_['intersection'](_0x2ffc92[_0xb447('0x31')],qs[_0xb447('0x39')](_0x22dba0[_0xb447('0x34')]['fields']));_0x1ab42f[_0xb447('0x38')]=_0x1ab42f[_0xb447('0x38')][_0xb447('0x3a')]?_0x1ab42f[_0xb447('0x38')]:_0x2ffc92['model'];if(_0x22dba0[_0xb447('0x34')]['includeAll']){_0x1ab42f['include']=[{'all':!![]}];}_0x1ab42f=_[_0xb447('0x41')]({},_0x1ab42f,_0x22dba0[_0xb447('0x43')]);return db[_0xb447('0x2c')][_0xb447('0x4a')](_0x1ab42f)[_0xb447('0x24')](handleEntityNotFound(_0x4d9533,null))[_0xb447('0x24')](respondWithResult(_0x4d9533,null))[_0xb447('0x47')](handleError(_0x4d9533,null));};exports[_0xb447('0x4b')]=function(_0x1475ef,_0x146ae3){return db['VoiceChanSpy'][_0xb447('0x4b')](_0x1475ef[_0xb447('0x4c')],{})[_0xb447('0x24')](function(_0x6cdb09){var _0x5e5df2=_0x1475ef['user'][_0xb447('0x26')]({'plain':!![]});if(!_0x5e5df2)throw new Error(_0xb447('0x4d'));if(_0x5e5df2[_0xb447('0x4e')]==='user'){var _0x29c123=_0x6cdb09[_0xb447('0x26')]({'plain':!![]});var _0xc31bbc=_0xb447('0x27');return db[_0xb447('0x4f')]['find']({'where':{'name':_0xc31bbc,'userProfileId':_0x5e5df2[_0xb447('0x50')]},'raw':!![]})[_0xb447('0x24')](function(_0x33a3ed){if(_0x33a3ed&&_0x33a3ed[_0xb447('0x51')]===0x0){return db['UserProfileResource'][_0xb447('0x4b')]({'name':_0x29c123[_0xb447('0x33')],'resourceId':_0x29c123['id'],'type':_0x33a3ed[_0xb447('0x33')],'sectionId':_0x33a3ed['id']},{})[_0xb447('0x24')](function(){return _0x6cdb09;});}else{return _0x6cdb09;}})[_0xb447('0x47')](function(_0x594c53){logger[_0xb447('0x29')](_0xb447('0x52'),_0x594c53);throw _0x594c53;});}return _0x6cdb09;})[_0xb447('0x24')](respondWithResult(_0x146ae3,0xc9))[_0xb447('0x47')](handleError(_0x146ae3,null));};exports[_0xb447('0x23')]=function(_0xefa360,_0x548036){if(_0xefa360[_0xb447('0x4c')]['id']){delete _0xefa360[_0xb447('0x4c')]['id'];}return db[_0xb447('0x2c')][_0xb447('0x4a')]({'where':{'id':_0xefa360[_0xb447('0x49')]['id']}})['then'](handleEntityNotFound(_0x548036,null))['then'](saveUpdates(_0xefa360[_0xb447('0x4c')],null))[_0xb447('0x24')](respondWithResult(_0x548036,null))[_0xb447('0x47')](handleError(_0x548036,null));};exports['destroy']=function(_0x3a1dd0,_0x1be0d2){return db[_0xb447('0x2c')]['find']({'where':{'id':_0x3a1dd0[_0xb447('0x49')]['id']}})[_0xb447('0x24')](handleEntityNotFound(_0x1be0d2,null))[_0xb447('0x24')](removeEntity(_0x1be0d2,null))[_0xb447('0x47')](handleError(_0x1be0d2,null));};
\ No newline at end of file
index fd603f5..19eaf5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd5a=['length','concat','findAll','agent','then','models','define','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','catch','destroy','lodash','bluebird','./voiceChanSpy.attributes','context','from-sip','%s%s','prefix','push','merge','format','CDR(type)=%s','chanspy','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','record','StopMixMonitor'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0xdd5a,0x17f));var _0xadd5=function(_0x148075,_0xcacfb8){_0x148075=_0x148075-0x0;var _0x3a2ded=_0xdd5a[_0x148075];return _0x3a2ded;};'use strict';var _=require(_0xadd5('0x0'));var util=require('util');var BPromise=require(_0xadd5('0x1'));var attributes=require(_0xadd5('0x2'));var getUserApplications=function(_0x29f8fa,_0xe8cd55,_0x1bb1d2){var _0x4ede9e=0x1;var _0x20b897=[];var _0x5a2741={'context':_0xe8cd55[_0xadd5('0x3')]||_0xadd5('0x4'),'exten':util['format'](_0xadd5('0x5'),_0x29f8fa[_0xadd5('0x6')],_0x1bb1d2),'type':'system','isApp':![],'ChanSpyId':_0x29f8fa['id'],'UserId':_0xe8cd55['id']};_0x20b897[_0xadd5('0x7')](_[_0xadd5('0x8')]({'app':'Set','appdata':util[_0xadd5('0x9')](_0xadd5('0xa'),_0xadd5('0xb')),'priority':_0x4ede9e++},_0x5a2741));if(_0x29f8fa['record']){_0x20b897['push'](_[_0xadd5('0x8')]({'app':'MixMonitor','appdata':util[_0xadd5('0x9')](_0xadd5('0xc'),_0x29f8fa[_0xadd5('0xd')]),'priority':_0x4ede9e++},_0x5a2741));}if(_0x29f8fa[_0xadd5('0xe')]){_0x20b897['push'](_[_0xadd5('0x8')]({'app':_0xadd5('0xf'),'appdata':_0x29f8fa[_0xadd5('0x10')],'priority':_0x4ede9e++},_0x5a2741));}_0x20b897[_0xadd5('0x7')](_[_0xadd5('0x8')]({'app':_0xadd5('0x11'),'appdata':util[_0xadd5('0x9')](_0xadd5('0x12'),_0xe8cd55[_0xadd5('0x13')],_0x29f8fa[_0xadd5('0x14')]?_0x29f8fa[_0xadd5('0x14')][_0xadd5('0x15')](''):''),'priority':_0x4ede9e++},_0x5a2741));if(_0x29f8fa[_0xadd5('0x16')]){_0x20b897['push'](_[_0xadd5('0x8')]({'app':_0xadd5('0x17'),'priority':_0x4ede9e++},_0x5a2741));}return _0x20b897;};var getChanSpyApplications=function(_0x3a2f5c,_0x519bbd){var _0x225f05=[];for(var _0x7101e5=0x0,_0x4806c8=0x1;_0x7101e5<_0x519bbd[_0xadd5('0x18')];_0x7101e5++,_0x4806c8=0x1){_0x225f05=_0x225f05[_0xadd5('0x19')](getUserApplications(_0x3a2f5c,_0x519bbd[_0x7101e5],_0x519bbd[_0x7101e5]['internal']));if(_0x519bbd[_0x7101e5]['internal']!=_0x519bbd[_0x7101e5][_0xadd5('0x13')]){_0x225f05=_0x225f05[_0xadd5('0x19')](getUserApplications(_0x3a2f5c,_0x519bbd[_0x7101e5],_0x519bbd[_0x7101e5][_0xadd5('0x13')]));}}return _0x225f05;};var getChanSpyPromise=function(_0x2ab87b,_0x57deb3){return new BPromise(function(_0x2fdacd,_0x30d1a5){return _0x2ab87b['User'][_0xadd5('0x1a')]({'attributes':['id',_0xadd5('0x13'),'internal'],'where':{'role':_0xadd5('0x1b'),'chanspy':!![]},'raw':!![]})[_0xadd5('0x1c')](function(_0x53ec64){if(_0x53ec64){return _0x2fdacd(getChanSpyApplications(_0x57deb3,_0x53ec64));}return _0x2fdacd([]);})['catch'](function(_0x5752fb){_0x30d1a5(_0x5752fb);});});};module['exports']=function(_0x2fb77f,_0x286fc4){var _0x320626=_0x2fb77f[_0xadd5('0x1d')];return _0x2fb77f[_0xadd5('0x1e')](_0xadd5('0x1f'),attributes,{'tableName':_0xadd5('0x20'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0xc13207,_0x1e6a05,_0xd448f7){return getChanSpyPromise(_0x320626,_0xc13207)[_0xadd5('0x1c')](function(_0x5f38cc){if(_0x5f38cc&&_0x5f38cc[_0xadd5('0x18')]){return _0x320626[_0xadd5('0x21')][_0xadd5('0x22')](_0x5f38cc);}})[_0xadd5('0x1c')](function(){_0xd448f7();})[_0xadd5('0x23')](function(_0x20fc23){_0xd448f7(_0x20fc23);});},'afterUpdate':function(_0x19e214,_0x199278,_0x1ac68f){return _0x320626[_0xadd5('0x21')][_0xadd5('0x24')]({'where':{'ChanSpyId':_0x19e214['id']}})[_0xadd5('0x1c')](function(){return getChanSpyPromise(_0x320626,_0x19e214);})[_0xadd5('0x1c')](function(_0x574e39){if(_0x574e39&&_0x574e39[_0xadd5('0x18')]){return _0x320626[_0xadd5('0x21')][_0xadd5('0x22')](_0x574e39);}})[_0xadd5('0x1c')](function(){_0x1ac68f();})[_0xadd5('0x23')](function(_0x3f9fc3){_0x1ac68f(_0x3f9fc3);});},'afterDestroy':function(_0x59004d,_0x2fbcb3,_0x3f0a28){return _0x320626['VoiceExtension']['destroy']({'where':{'ChanSpyId':_0x59004d['id']}})[_0xadd5('0x1c')](function(){_0x3f0a28();})[_0xadd5('0x23')](function(_0x2bf418){_0x3f0a28(_0x2bf418);});}}});};
\ No newline at end of file
+var _0x7db6=['voice_chanspy','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','format','prefix','system','push','merge','Set','chanspy','record','${UNIQUEID}.%s,a','recordingFormat','auth','password','SIP/%s,%s','options','join','length','internal','name','concat','User','findAll','then','catch','exports','models','define','VoiceChanSpy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7db6,0x11c));var _0x67db=function(_0x301bb2,_0xc4169c){_0x301bb2=_0x301bb2-0x0;var _0x51b5ec=_0x7db6[_0x301bb2];return _0x51b5ec;};'use strict';var _=require(_0x67db('0x0'));var util=require(_0x67db('0x1'));var BPromise=require(_0x67db('0x2'));var attributes=require(_0x67db('0x3'));var getUserApplications=function(_0x802940,_0x572690,_0x3cb4aa){var _0xda3bb9=0x1;var _0x357cb8=[];var _0x29d5ea={'context':_0x572690['context']||'from-sip','exten':util[_0x67db('0x4')]('%s%s',_0x802940[_0x67db('0x5')],_0x3cb4aa),'type':_0x67db('0x6'),'isApp':![],'ChanSpyId':_0x802940['id'],'UserId':_0x572690['id']};_0x357cb8[_0x67db('0x7')](_[_0x67db('0x8')]({'app':_0x67db('0x9'),'appdata':util[_0x67db('0x4')]('CDR(type)=%s',_0x67db('0xa')),'priority':_0xda3bb9++},_0x29d5ea));if(_0x802940[_0x67db('0xb')]){_0x357cb8[_0x67db('0x7')](_[_0x67db('0x8')]({'app':'MixMonitor','appdata':util[_0x67db('0x4')](_0x67db('0xc'),_0x802940[_0x67db('0xd')]),'priority':_0xda3bb9++},_0x29d5ea));}if(_0x802940[_0x67db('0xe')]){_0x357cb8['push'](_[_0x67db('0x8')]({'app':'Authenticate','appdata':_0x802940[_0x67db('0xf')],'priority':_0xda3bb9++},_0x29d5ea));}_0x357cb8['push'](_[_0x67db('0x8')]({'app':'ChanSpy','appdata':util[_0x67db('0x4')](_0x67db('0x10'),_0x572690['name'],_0x802940[_0x67db('0x11')]?_0x802940[_0x67db('0x11')][_0x67db('0x12')](''):''),'priority':_0xda3bb9++},_0x29d5ea));if(_0x802940[_0x67db('0xb')]){_0x357cb8[_0x67db('0x7')](_[_0x67db('0x8')]({'app':'StopMixMonitor','priority':_0xda3bb9++},_0x29d5ea));}return _0x357cb8;};var getChanSpyApplications=function(_0x41b1ee,_0x1c8654){var _0x471244=[];for(var _0x1dc545=0x0,_0x578353=0x1;_0x1dc545<_0x1c8654[_0x67db('0x13')];_0x1dc545++,_0x578353=0x1){_0x471244=_0x471244['concat'](getUserApplications(_0x41b1ee,_0x1c8654[_0x1dc545],_0x1c8654[_0x1dc545]['internal']));if(_0x1c8654[_0x1dc545][_0x67db('0x14')]!=_0x1c8654[_0x1dc545][_0x67db('0x15')]){_0x471244=_0x471244[_0x67db('0x16')](getUserApplications(_0x41b1ee,_0x1c8654[_0x1dc545],_0x1c8654[_0x1dc545]['name']));}}return _0x471244;};var getChanSpyPromise=function(_0x45c7bd,_0x42cead){return new BPromise(function(_0x2252cd,_0x5f3f02){return _0x45c7bd[_0x67db('0x17')][_0x67db('0x18')]({'attributes':['id',_0x67db('0x15'),_0x67db('0x14')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})[_0x67db('0x19')](function(_0x57e46c){if(_0x57e46c){return _0x2252cd(getChanSpyApplications(_0x42cead,_0x57e46c));}return _0x2252cd([]);})[_0x67db('0x1a')](function(_0x10bfe5){_0x5f3f02(_0x10bfe5);});});};module[_0x67db('0x1b')]=function(_0xc6b54a,_0x4f58c5){var _0x4a31a4=_0xc6b54a[_0x67db('0x1c')];return _0xc6b54a[_0x67db('0x1d')](_0x67db('0x1e'),attributes,{'tableName':_0x67db('0x1f'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x5023e6,_0x384441,_0x502b09){return getChanSpyPromise(_0x4a31a4,_0x5023e6)[_0x67db('0x19')](function(_0x53c2e7){if(_0x53c2e7&&_0x53c2e7['length']){return _0x4a31a4[_0x67db('0x20')][_0x67db('0x21')](_0x53c2e7);}})[_0x67db('0x19')](function(){_0x502b09();})[_0x67db('0x1a')](function(_0x40e1f4){_0x502b09(_0x40e1f4);});},'afterUpdate':function(_0x12f1d4,_0x4848e2,_0x523ebe){return _0x4a31a4['VoiceExtension']['destroy']({'where':{'ChanSpyId':_0x12f1d4['id']}})[_0x67db('0x19')](function(){return getChanSpyPromise(_0x4a31a4,_0x12f1d4);})[_0x67db('0x19')](function(_0x42652a){if(_0x42652a&&_0x42652a[_0x67db('0x13')]){return _0x4a31a4['VoiceExtension'][_0x67db('0x21')](_0x42652a);}})[_0x67db('0x19')](function(){_0x523ebe();})['catch'](function(_0x41e143){_0x523ebe(_0x41e143);});},'afterDestroy':function(_0x515f80,_0x1413bb,_0x32da03){return _0x4a31a4[_0x67db('0x20')][_0x67db('0x22')]({'where':{'ChanSpyId':_0x515f80['id']}})[_0x67db('0x19')](function(){_0x32da03();})[_0x67db('0x1a')](function(_0x58b489){_0x32da03(_0x58b489);});}}});};
\ No newline at end of file
index 6ff80de..f20ddf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['request\x20sent','debug','stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','info','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x57add2,_0x4f2b7d){var _0x4e3670=function(_0x3311b){while(--_0x3311b){_0x57add2['push'](_0x57add2['shift']());}};_0x4e3670(++_0x4f2b7d);}(_0xdace,0xc5));var _0xedac=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0xdace[_0x1e3c16];return _0x47a0c9;};'use strict';var _=require(_0xedac('0x0'));var util=require('util');var moment=require(_0xedac('0x1'));var BPromise=require(_0xedac('0x2'));var rs=require(_0xedac('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xedac('0x4'))['db'];var utils=require(_0xedac('0x5'));var logger=require(_0xedac('0x6'))(_0xedac('0x7'));var config=require('../../config/environment');var jayson=require(_0xedac('0x8'));var client=jayson[_0xedac('0x9')][_0xedac('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ecbd3,_0x4081c6,_0x21440e){return new BPromise(function(_0x162eea,_0x53fa43){return client[_0xedac('0xb')](_0x5ecbd3,_0x21440e)[_0xedac('0xc')](function(_0xc98887){logger['info']('VoiceChanSpy,\x20%s,\x20%s',_0x4081c6,_0xedac('0xd'));logger[_0xedac('0xe')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x4081c6,'request\x20sent',JSON[_0xedac('0xf')](_0xc98887));if(_0xc98887[_0xedac('0x10')]){if(_0xc98887['error'][_0xedac('0x11')]===0x1f4){logger['error'](_0xedac('0x12'),_0x4081c6,_0xc98887[_0xedac('0x10')][_0xedac('0x13')]);return _0x53fa43(_0xc98887[_0xedac('0x10')][_0xedac('0x13')]);}logger[_0xedac('0x10')](_0xedac('0x12'),_0x4081c6,_0xc98887[_0xedac('0x10')]['message']);return _0x162eea(_0xc98887[_0xedac('0x10')][_0xedac('0x13')]);}else{logger[_0xedac('0x14')](_0xedac('0x12'),_0x4081c6,_0xedac('0xd'));_0x162eea(_0xc98887['result'][_0xedac('0x13')]);}})['catch'](function(_0xddc7b8){logger[_0xedac('0x10')](_0xedac('0x12'),_0x4081c6,_0xddc7b8);_0x53fa43(_0xddc7b8);});});}
\ No newline at end of file
+var _0x85b5=['catch','lodash','util','bluebird','ioredis','../../config/logger','../../config/environment','jayson/promise','client','request','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x33d302,_0x5f04b7){var _0x3675f8=function(_0x36e276){while(--_0x36e276){_0x33d302['push'](_0x33d302['shift']());}};_0x3675f8(++_0x5f04b7);}(_0x85b5,0x7f));var _0x585b=function(_0x1bb4be,_0x151a18){_0x1bb4be=_0x1bb4be-0x0;var _0x53a318=_0x85b5[_0x1bb4be];return _0x53a318;};'use strict';var _=require(_0x585b('0x0'));var util=require(_0x585b('0x1'));var moment=require('moment');var BPromise=require(_0x585b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x585b('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x585b('0x4'))('rpc');var config=require(_0x585b('0x5'));var jayson=require(_0x585b('0x6'));var client=jayson[_0x585b('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1605b5,_0x55ffb3,_0x432e2d){return new BPromise(function(_0x2f8895,_0x3c3c0b){return client[_0x585b('0x8')](_0x1605b5,_0x432e2d)['then'](function(_0x8b5f63){logger[_0x585b('0x9')](_0x585b('0xa'),_0x55ffb3,_0x585b('0xb'));logger[_0x585b('0xc')](_0x585b('0xd'),_0x55ffb3,_0x585b('0xb'),JSON['stringify'](_0x8b5f63));if(_0x8b5f63[_0x585b('0xe')]){if(_0x8b5f63['error'][_0x585b('0xf')]===0x1f4){logger['error'](_0x585b('0xa'),_0x55ffb3,_0x8b5f63[_0x585b('0xe')][_0x585b('0x10')]);return _0x3c3c0b(_0x8b5f63['error'][_0x585b('0x10')]);}logger[_0x585b('0xe')](_0x585b('0xa'),_0x55ffb3,_0x8b5f63[_0x585b('0xe')][_0x585b('0x10')]);return _0x2f8895(_0x8b5f63[_0x585b('0xe')][_0x585b('0x10')]);}else{logger['info'](_0x585b('0xa'),_0x55ffb3,_0x585b('0xb'));_0x2f8895(_0x8b5f63['result']['message']);}})[_0x585b('0x11')](function(_0x4f2224){logger['error'](_0x585b('0xa'),_0x55ffb3,_0x4f2224);_0x3c3c0b(_0x4f2224);});});}
\ No newline at end of file
index cb96eed..b15332f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbe1=['delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceContext.controller','isAuthenticated','index','get','/:id','show','post','create','put','update'];(function(_0x84e8ef,_0x3efe12){var _0x3a93b3=function(_0x165aa4){while(--_0x165aa4){_0x84e8ef['push'](_0x84e8ef['shift']());}};_0x3a93b3(++_0x3efe12);}(_0xcbe1,0x16b));var _0x1cbe=function(_0x31ec29,_0x58915c){_0x31ec29=_0x31ec29-0x0;var _0x3275fc=_0xcbe1[_0x31ec29];return _0x3275fc;};'use strict';var multer=require(_0x1cbe('0x0'));var util=require(_0x1cbe('0x1'));var path=require(_0x1cbe('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1cbe('0x3')]();var fs_extra=require(_0x1cbe('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1cbe('0x5'));var config=require(_0x1cbe('0x6'));var controller=require(_0x1cbe('0x7'));router['get']('/',auth[_0x1cbe('0x8')](),controller[_0x1cbe('0x9')]);router[_0x1cbe('0xa')](_0x1cbe('0xb'),auth[_0x1cbe('0x8')](),controller[_0x1cbe('0xc')]);router[_0x1cbe('0xd')]('/',auth[_0x1cbe('0x8')](),controller[_0x1cbe('0xe')]);router[_0x1cbe('0xf')](_0x1cbe('0xb'),auth[_0x1cbe('0x8')](),controller[_0x1cbe('0x10')]);router[_0x1cbe('0x11')](_0x1cbe('0xb'),auth[_0x1cbe('0x8')](),controller[_0x1cbe('0x12')]);module[_0x1cbe('0x13')]=router;
\ No newline at end of file
+var _0x0fb4=['show','put','update','delete','multer','connect-timeout','express','../../config/environment','isAuthenticated','index','get','/:id'];(function(_0x1915a8,_0x581c9a){var _0x5e3c96=function(_0x4b8be5){while(--_0x4b8be5){_0x1915a8['push'](_0x1915a8['shift']());}};_0x5e3c96(++_0x581c9a);}(_0x0fb4,0x7c));var _0x40fb=function(_0x3cb30b,_0x504b3e){_0x3cb30b=_0x3cb30b-0x0;var _0x2ca717=_0x0fb4[_0x3cb30b];return _0x2ca717;};'use strict';var multer=require(_0x40fb('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x40fb('0x1'));var express=require(_0x40fb('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x40fb('0x3'));var controller=require('./voiceContext.controller');router['get']('/',auth[_0x40fb('0x4')](),controller[_0x40fb('0x5')]);router[_0x40fb('0x6')](_0x40fb('0x7'),auth[_0x40fb('0x4')](),controller[_0x40fb('0x8')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x40fb('0x9')]('/:id',auth[_0x40fb('0x4')](),controller[_0x40fb('0xa')]);router[_0x40fb('0xb')]('/:id',auth[_0x40fb('0x4')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index c7e5c70..c894425 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5e1=['name','BOOLEAN','sequelize','STRING'];(function(_0xbe200f,_0x4b50eb){var _0x192597=function(_0x106cfd){while(--_0x106cfd){_0xbe200f['push'](_0xbe200f['shift']());}};_0x192597(++_0x4b50eb);}(_0xd5e1,0x7e));var _0x1d5e=function(_0x35ca9d,_0x9047fc){_0x35ca9d=_0x35ca9d-0x0;var _0x5741bd=_0xd5e1[_0x35ca9d];return _0x5741bd;};'use strict';var Sequelize=require(_0x1d5e('0x0'));module['exports']={'name':{'type':Sequelize[_0x1d5e('0x1')],'unique':_0x1d5e('0x2')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x1d5e('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x03f1=['name','BOOLEAN','sequelize','exports','STRING'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0x03f1,0x17e));var _0x103f=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x03f1[_0x2b10c6];return _0x3789d2;};'use strict';var Sequelize=require(_0x103f('0x0'));module[_0x103f('0x1')]={'name':{'type':Sequelize[_0x103f('0x2')],'unique':_0x103f('0x3')},'description':{'type':Sequelize[_0x103f('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x103f('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index da6a6c1..6110b34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3704=['sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','get','Contexts','UserProfileResource','status','stack','name','send','VoiceContext','type','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','filter','options','includeAll','include','findAll','rows','show','params','create','body','readFileSync','root','utf8','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','render','chan_sip.so','join','server/files/templates/context.ejs','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3704,0x18a));var _0x4370=function(_0x438a32,_0x393e3b){_0x438a32=_0x438a32-0x0;var _0x4fa356=_0x3704[_0x438a32];return _0x4fa356;};'use strict';var emlformat=require(_0x4370('0x0'));var rimraf=require(_0x4370('0x1'));var zipdir=require(_0x4370('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4370('0x3'));var moment=require('moment');var BPromise=require(_0x4370('0x4'));var Mustache=require(_0x4370('0x5'));var util=require('util');var path=require('path');var sox=require(_0x4370('0x6'));var csv=require(_0x4370('0x7'));var ejs=require(_0x4370('0x8'));var fs=require('fs');var fs_extra=require(_0x4370('0x9'));var _=require(_0x4370('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4370('0xb'));var deskjs=require(_0x4370('0xc'));var toCsv=require(_0x4370('0x7'));var querystring=require('querystring');var Papa=require(_0x4370('0xd'));var Redis=require(_0x4370('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x4370('0xf'));var as=require(_0x4370('0x10'));var hardwareService=require(_0x4370('0x11'));var logger=require(_0x4370('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x4370('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x4370('0x14'))['db'];var jayson=require(_0x4370('0x15'));var client=jayson[_0x4370('0x16')][_0x4370('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x1b0af7,_0x6561e1,_0x38fa2c,_0x3f3bab){return new BPromise(function(_0x4f66a4,_0x7cf10){var _0x3f9eae=_0x3f3bab||client;return _0x3f9eae[_0x4370('0x18')](_0x1b0af7,_0x38fa2c)[_0x4370('0x19')](function(_0x24422b){logger[_0x4370('0x1a')](_0x4370('0x1b'),_0x6561e1,_0x4370('0x1c'));logger[_0x4370('0x1d')](_0x4370('0x1e'),_0x6561e1,_0x4370('0x1c'),JSON[_0x4370('0x1f')](_0x24422b));if(_0x24422b[_0x4370('0x20')]){if(_0x24422b[_0x4370('0x20')]['code']===0x1f4){logger['error'](_0x4370('0x1b'),_0x6561e1,_0x24422b[_0x4370('0x20')][_0x4370('0x21')]);return _0x7cf10(_0x24422b[_0x4370('0x20')][_0x4370('0x21')]);}logger[_0x4370('0x20')]('VoiceContext,\x20%s,\x20%s',_0x6561e1,_0x24422b[_0x4370('0x20')][_0x4370('0x21')]);return _0x4f66a4(_0x24422b[_0x4370('0x20')][_0x4370('0x21')]);}else{logger[_0x4370('0x1a')]('VoiceContext,\x20%s,\x20%s',_0x6561e1,'request\x20sent');_0x4f66a4(_0x24422b[_0x4370('0x22')][_0x4370('0x21')]);}})[_0x4370('0x23')](function(_0xbd4107){logger[_0x4370('0x20')](_0x4370('0x1b'),_0x6561e1,_0xbd4107);_0x7cf10(_0xbd4107);});});}function respondWithStatusCode(_0x3fd3d5,_0x5a5e28){_0x5a5e28=_0x5a5e28||0xcc;return function(_0x59653d){if(_0x59653d){return _0x3fd3d5[_0x4370('0x24')](_0x5a5e28);}return _0x3fd3d5['status'](_0x5a5e28)[_0x4370('0x25')]();};}function respondWithResult(_0x2bd7e8,_0x1ecaeb){_0x1ecaeb=_0x1ecaeb||0xc8;return function(_0x31ab86){if(_0x31ab86){return _0x2bd7e8['status'](_0x1ecaeb)[_0x4370('0x26')](_0x31ab86);}};}function respondWithFilteredResult(_0xdc7a9a,_0x384d0f){return function(_0x18b872){if(_0x18b872){var _0x3179f3=typeof _0x384d0f[_0x4370('0x27')]===_0x4370('0x28')&&typeof _0x384d0f[_0x4370('0x29')]==='undefined';var _0x3cf859=_0x18b872[_0x4370('0x2a')];var _0x44bb2e=_0x3179f3?0x0:_0x384d0f[_0x4370('0x27')];var _0x3425fb=_0x3179f3?_0x18b872[_0x4370('0x2a')]:_0x384d0f[_0x4370('0x27')]+_0x384d0f[_0x4370('0x29')];var _0x346247;if(_0x3425fb>=_0x3cf859){_0x3425fb=_0x3cf859;_0x346247=0xc8;}else{_0x346247=0xce;}_0xdc7a9a['status'](_0x346247);return _0xdc7a9a['set'](_0x4370('0x2b'),_0x44bb2e+'-'+_0x3425fb+'/'+_0x3cf859)[_0x4370('0x26')](_0x18b872);}return null;};}function patchUpdates(_0xb7ec7e){return function(_0xee92b3){try{jsonpatch[_0x4370('0x2c')](_0xee92b3,_0xb7ec7e,!![]);}catch(_0xf6fdbb){return BPromise[_0x4370('0x2d')](_0xf6fdbb);}return _0xee92b3[_0x4370('0x2e')]();};}function saveUpdates(_0x40ece3,_0x3f1529){return function(_0x5c19ce){if(_0x5c19ce){return _0x5c19ce[_0x4370('0x2f')](_0x40ece3)['then'](function(_0x522c02){return _0x522c02;});}return null;};}function removeEntity(_0x4be63b,_0x142305){return function(_0x38cdfd){if(_0x38cdfd){return _0x38cdfd[_0x4370('0x30')]()[_0x4370('0x19')](function(){var _0x462c8d=_0x38cdfd[_0x4370('0x31')]({'plain':!![]});var _0x5bdf73=_0x4370('0x32');return db[_0x4370('0x33')]['destroy']({'where':{'type':_0x5bdf73,'resourceId':_0x462c8d['id']}})['then'](function(){return _0x38cdfd;});})[_0x4370('0x19')](function(){_0x4be63b[_0x4370('0x34')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e58a6,_0x70bbe0){return function(_0xcafc){if(!_0xcafc){_0x2e58a6[_0x4370('0x24')](0x194);}return _0xcafc;};}function handleError(_0x2c33fc,_0x504e33){_0x504e33=_0x504e33||0x1f4;return function(_0x104886){logger[_0x4370('0x20')](_0x104886[_0x4370('0x35')]);if(_0x104886[_0x4370('0x36')]){delete _0x104886[_0x4370('0x36')];}_0x2c33fc[_0x4370('0x34')](_0x504e33)[_0x4370('0x37')](_0x104886);};}exports['index']=function(_0x2e7f7a,_0x42c556){var _0x5c8d92={},_0xdf791e={},_0x5becd4={'count':0x0,'rows':[]};var _0x1e320d=_['map'](db[_0x4370('0x38')]['rawAttributes'],function(_0x37c8c7){return{'name':_0x37c8c7['fieldName'],'type':_0x37c8c7[_0x4370('0x39')]['key']};});_0xdf791e['model']=_['map'](_0x1e320d,_0x4370('0x36'));_0xdf791e['query']=_[_0x4370('0x3a')](_0x2e7f7a[_0x4370('0x3b')]);_0xdf791e[_0x4370('0x3c')]=_[_0x4370('0x3d')](_0xdf791e[_0x4370('0x3e')],_0xdf791e[_0x4370('0x3b')]);_0x5c8d92['attributes']=_[_0x4370('0x3d')](_0xdf791e['model'],qs[_0x4370('0x3f')](_0x2e7f7a[_0x4370('0x3b')][_0x4370('0x3f')]));_0x5c8d92[_0x4370('0x40')]=_0x5c8d92[_0x4370('0x40')][_0x4370('0x41')]?_0x5c8d92[_0x4370('0x40')]:_0xdf791e[_0x4370('0x3e')];if(!_0x2e7f7a[_0x4370('0x3b')][_0x4370('0x42')](_0x4370('0x43'))){_0x5c8d92[_0x4370('0x29')]=qs[_0x4370('0x29')](_0x2e7f7a['query'][_0x4370('0x29')]);_0x5c8d92[_0x4370('0x27')]=qs[_0x4370('0x27')](_0x2e7f7a[_0x4370('0x3b')][_0x4370('0x27')]);}_0x5c8d92[_0x4370('0x44')]=qs[_0x4370('0x45')](_0x2e7f7a[_0x4370('0x3b')][_0x4370('0x45')]);_0x5c8d92[_0x4370('0x46')]=qs['filters'](_[_0x4370('0x47')](_0x2e7f7a[_0x4370('0x3b')],_0xdf791e[_0x4370('0x3c')]),_0x1e320d);if(_0x2e7f7a[_0x4370('0x3b')]['filter']){_0x5c8d92['where']=_[_0x4370('0x48')](_0x5c8d92[_0x4370('0x46')],{'$or':_[_0x4370('0x49')](_0x1e320d,function(_0x5a7407){if(_0x5a7407[_0x4370('0x39')]!=='VIRTUAL'){var _0x47474a={};_0x47474a[_0x5a7407[_0x4370('0x36')]]={'$like':'%'+_0x2e7f7a['query'][_0x4370('0x4a')]+'%'};return _0x47474a;}})});}_0x5c8d92=_['merge']({},_0x5c8d92,_0x2e7f7a[_0x4370('0x4b')]);var _0x3e814b={'where':_0x5c8d92[_0x4370('0x46')]};return db['VoiceContext']['count'](_0x3e814b)[_0x4370('0x19')](function(_0x847c1e){_0x5becd4['count']=_0x847c1e;if(_0x2e7f7a[_0x4370('0x3b')][_0x4370('0x4c')]){_0x5c8d92[_0x4370('0x4d')]=[{'all':!![]}];}return db[_0x4370('0x38')][_0x4370('0x4e')](_0x5c8d92);})[_0x4370('0x19')](function(_0x1c6c42){_0x5becd4[_0x4370('0x4f')]=_0x1c6c42;return _0x5becd4;})[_0x4370('0x19')](respondWithFilteredResult(_0x42c556,_0x5c8d92))[_0x4370('0x23')](handleError(_0x42c556,null));};exports[_0x4370('0x50')]=function(_0x5ca3ce,_0x1adc52){var _0x77b664={'raw':![],'where':{'id':_0x5ca3ce[_0x4370('0x51')]['id']}},_0x14fcde={};_0x14fcde[_0x4370('0x3e')]=_[_0x4370('0x3a')](db['VoiceContext']['rawAttributes']);_0x14fcde[_0x4370('0x3b')]=_[_0x4370('0x3a')](_0x5ca3ce[_0x4370('0x3b')]);_0x14fcde[_0x4370('0x3c')]=_[_0x4370('0x3d')](_0x14fcde[_0x4370('0x3e')],_0x14fcde[_0x4370('0x3b')]);_0x77b664[_0x4370('0x40')]=_[_0x4370('0x3d')](_0x14fcde[_0x4370('0x3e')],qs['fields'](_0x5ca3ce[_0x4370('0x3b')][_0x4370('0x3f')]));_0x77b664[_0x4370('0x40')]=_0x77b664[_0x4370('0x40')][_0x4370('0x41')]?_0x77b664[_0x4370('0x40')]:_0x14fcde[_0x4370('0x3e')];if(_0x5ca3ce[_0x4370('0x3b')][_0x4370('0x4c')]){_0x77b664[_0x4370('0x4d')]=[{'all':!![]}];}_0x77b664=_[_0x4370('0x48')]({},_0x77b664,_0x5ca3ce[_0x4370('0x4b')]);return db['VoiceContext']['find'](_0x77b664)[_0x4370('0x19')](handleEntityNotFound(_0x1adc52,null))['then'](respondWithResult(_0x1adc52,null))[_0x4370('0x23')](handleError(_0x1adc52,null));};exports[_0x4370('0x52')]=function(_0x590f1d,_0x5e47ca,_0xbb229){var _0x193e0b;return db['VoiceContext'][_0x4370('0x52')](_0x590f1d[_0x4370('0x53')],{'raw':!![]})[_0x4370('0x19')](function(_0x51ed56){_0x193e0b=_0x51ed56;return db['VoiceContext'][_0x4370('0x4e')]({'raw':!![]});})[_0x4370('0x19')](function(_0x52791a){var _0x3d6231=fs[_0x4370('0x54')](path['join'](config[_0x4370('0x55')],'server/files/templates/context.ejs'),_0x4370('0x56'));var _0x579b23=ejs['render'](_0x3d6231,{'contexts':_0x52791a||[]});fs[_0x4370('0x57')](_0x4370('0x58'),_0x579b23);})[_0x4370('0x19')](function(){return respondWithRpcPromise(_0x4370('0x59'),'create',{'module':'chan_sip.so'});})['then'](function(){var _0x2af3a6=_0x590f1d['user'][_0x4370('0x31')]({'plain':!![]});if(!_0x2af3a6)throw new Error(_0x4370('0x5a'));if(_0x2af3a6['role']===_0x4370('0x5b')){var _0x18b335=_0x193e0b['get']({'plain':!![]});return db['UserProfileSection'][_0x4370('0x5c')]({'where':{'name':_0x4370('0x32'),'userProfileId':_0x2af3a6[_0x4370('0x5d')]},'raw':!![]})[_0x4370('0x19')](function(_0xa1d422){if(_0xa1d422&&_0xa1d422[_0x4370('0x5e')]===0x0){return db['UserProfileResource'][_0x4370('0x52')]({'name':_0x18b335[_0x4370('0x36')],'resourceId':_0x18b335['id'],'type':_0xa1d422[_0x4370('0x36')],'sectionId':_0xa1d422['id']},{})[_0x4370('0x19')](function(){return _0x193e0b;});}else{return _0x193e0b;}})[_0x4370('0x23')](function(_0x1414d2){logger[_0x4370('0x20')](_0x4370('0x5f'),_0x1414d2);throw _0x1414d2;});}return _0x193e0b;})[_0x4370('0x19')](respondWithResult(_0x5e47ca,0xc9))['catch'](handleError(_0x5e47ca,null));};exports[_0x4370('0x2f')]=function(_0x224180,_0x491790,_0x19201b){var _0x3782d6;return db[_0x4370('0x38')]['find']({'where':{'id':_0x224180['params']['id']}})[_0x4370('0x19')](handleEntityNotFound(_0x491790,null))['then'](saveUpdates(_0x224180[_0x4370('0x53')],null))[_0x4370('0x19')](function(_0x229e3f){if(_0x229e3f){_0x3782d6=_0x229e3f;return db[_0x4370('0x38')][_0x4370('0x4e')]({'raw':!![]});}})['then'](function(_0xfed58b){var _0x561d48=fs[_0x4370('0x54')](path['join'](config[_0x4370('0x55')],'server/files/templates/context.ejs'),_0x4370('0x56'));var _0x33bda6=ejs[_0x4370('0x60')](_0x561d48,{'contexts':_0xfed58b||[]});fs['writeFileSync'](_0x4370('0x58'),_0x33bda6);})['then'](function(){return respondWithRpcPromise(_0x4370('0x59'),_0x4370('0x2f'),{'module':_0x4370('0x61')});})[_0x4370('0x19')](function(){return _0x3782d6;})[_0x4370('0x19')](respondWithResult(_0x491790,null))[_0x4370('0x23')](handleError(_0x491790,null));};exports[_0x4370('0x30')]=function(_0x2a8ded,_0x5a9b3c,_0x26ba27){var _0x550c17;return db[_0x4370('0x38')][_0x4370('0x5c')]({'where':{'id':_0x2a8ded[_0x4370('0x51')]['id']}})['then'](handleEntityNotFound(_0x5a9b3c,null))[_0x4370('0x19')](removeEntity(_0x5a9b3c,null))[_0x4370('0x19')](function(){return db[_0x4370('0x38')][_0x4370('0x4e')]({'raw':!![]});})['then'](function(_0x170691){var _0x4054b4=fs[_0x4370('0x54')](path[_0x4370('0x62')](config[_0x4370('0x55')],_0x4370('0x63')),_0x4370('0x56'));var _0x51703=ejs[_0x4370('0x60')](_0x4054b4,{'contexts':_0x170691});fs['writeFileSync'](_0x4370('0x58'),_0x51703);return respondWithRpcPromise(_0x4370('0x59'),_0x4370('0x30'),{'module':'chan_sip.so'});})['catch'](handleError(_0x5a9b3c,null));};
\ No newline at end of file
+var _0x5b5d=['../../config/license/util','../../mysqldb','jayson/promise','client','then','info','request\x20sent','stringify','error','message','VoiceContext,\x20%s,\x20%s','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','stack','send','index','VoiceContext','key','map','name','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','include','findAll','rows','show','length','includeAll','create','body','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','Contexts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','readFileSync','chan_sip.so','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x4aa4e6,_0x278c45){var _0x322588=function(_0x19279d){while(--_0x19279d){_0x4aa4e6['push'](_0x4aa4e6['shift']());}};_0x322588(++_0x278c45);}(_0x5b5d,0x127));var _0xd5b5=function(_0x4d2314,_0x2a5b87){_0x4d2314=_0x4d2314-0x0;var _0x5db807=_0x5b5d[_0x4d2314];return _0x5db807;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd5b5('0x0'));var zipdir=require(_0xd5b5('0x1'));var jsonpatch=require(_0xd5b5('0x2'));var rp=require(_0xd5b5('0x3'));var moment=require(_0xd5b5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd5b5('0x5'));var util=require('util');var path=require(_0xd5b5('0x6'));var sox=require(_0xd5b5('0x7'));var csv=require(_0xd5b5('0x8'));var ejs=require(_0xd5b5('0x9'));var fs=require('fs');var fs_extra=require(_0xd5b5('0xa'));var _=require('lodash');var squel=require(_0xd5b5('0xb'));var crypto=require(_0xd5b5('0xc'));var jsforce=require(_0xd5b5('0xd'));var deskjs=require(_0xd5b5('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd5b5('0xf'));var Redis=require(_0xd5b5('0x10'));var authService=require(_0xd5b5('0x11'));var qs=require(_0xd5b5('0x12'));var as=require(_0xd5b5('0x13'));var hardwareService=require(_0xd5b5('0x14'));var logger=require(_0xd5b5('0x15'))(_0xd5b5('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd5b5('0x17'));var db=require(_0xd5b5('0x18'))['db'];var jayson=require(_0xd5b5('0x19'));var client=jayson[_0xd5b5('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2d72b9,_0x290dd8,_0x3af1d5,_0x112dfe){return new BPromise(function(_0x5bf897,_0x188fa6){var _0x2e83af=_0x112dfe||client;return _0x2e83af['request'](_0x2d72b9,_0x3af1d5)[_0xd5b5('0x1b')](function(_0x47938b){logger[_0xd5b5('0x1c')]('VoiceContext,\x20%s,\x20%s',_0x290dd8,_0xd5b5('0x1d'));logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x290dd8,_0xd5b5('0x1d'),JSON[_0xd5b5('0x1e')](_0x47938b));if(_0x47938b['error']){if(_0x47938b[_0xd5b5('0x1f')]['code']===0x1f4){logger[_0xd5b5('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x290dd8,_0x47938b[_0xd5b5('0x1f')][_0xd5b5('0x20')]);return _0x188fa6(_0x47938b['error'][_0xd5b5('0x20')]);}logger[_0xd5b5('0x1f')](_0xd5b5('0x21'),_0x290dd8,_0x47938b[_0xd5b5('0x1f')]['message']);return _0x5bf897(_0x47938b[_0xd5b5('0x1f')][_0xd5b5('0x20')]);}else{logger['info'](_0xd5b5('0x21'),_0x290dd8,_0xd5b5('0x1d'));_0x5bf897(_0x47938b[_0xd5b5('0x22')]['message']);}})[_0xd5b5('0x23')](function(_0x5deb80){logger['error'](_0xd5b5('0x21'),_0x290dd8,_0x5deb80);_0x188fa6(_0x5deb80);});});}function respondWithStatusCode(_0x2c5a0a,_0x12fa2a){_0x12fa2a=_0x12fa2a||0xcc;return function(_0x4a22fa){if(_0x4a22fa){return _0x2c5a0a[_0xd5b5('0x24')](_0x12fa2a);}return _0x2c5a0a['status'](_0x12fa2a)[_0xd5b5('0x25')]();};}function respondWithResult(_0x210853,_0x61b933){_0x61b933=_0x61b933||0xc8;return function(_0x346627){if(_0x346627){return _0x210853[_0xd5b5('0x26')](_0x61b933)[_0xd5b5('0x27')](_0x346627);}};}function respondWithFilteredResult(_0x463f87,_0x4df8f2){return function(_0x52f212){if(_0x52f212){var _0x4bd060=typeof _0x4df8f2[_0xd5b5('0x28')]===_0xd5b5('0x29')&&typeof _0x4df8f2['limit']===_0xd5b5('0x29');var _0x36ff17=_0x52f212[_0xd5b5('0x2a')];var _0x5ab5df=_0x4bd060?0x0:_0x4df8f2['offset'];var _0x46d22d=_0x4bd060?_0x52f212[_0xd5b5('0x2a')]:_0x4df8f2['offset']+_0x4df8f2[_0xd5b5('0x2b')];var _0x42e476;if(_0x46d22d>=_0x36ff17){_0x46d22d=_0x36ff17;_0x42e476=0xc8;}else{_0x42e476=0xce;}_0x463f87[_0xd5b5('0x26')](_0x42e476);return _0x463f87[_0xd5b5('0x2c')](_0xd5b5('0x2d'),_0x5ab5df+'-'+_0x46d22d+'/'+_0x36ff17)[_0xd5b5('0x27')](_0x52f212);}return null;};}function patchUpdates(_0x437d6f){return function(_0x344f6b){try{jsonpatch[_0xd5b5('0x2e')](_0x344f6b,_0x437d6f,!![]);}catch(_0x11a140){return BPromise[_0xd5b5('0x2f')](_0x11a140);}return _0x344f6b[_0xd5b5('0x30')]();};}function saveUpdates(_0x2482a0,_0x143cda){return function(_0x1b4c4f){if(_0x1b4c4f){return _0x1b4c4f[_0xd5b5('0x31')](_0x2482a0)['then'](function(_0x428e91){return _0x428e91;});}return null;};}function removeEntity(_0x5d1255,_0x53d5e6){return function(_0x5bd30f){if(_0x5bd30f){return _0x5bd30f[_0xd5b5('0x32')]()[_0xd5b5('0x1b')](function(){var _0x3829bd=_0x5bd30f[_0xd5b5('0x33')]({'plain':!![]});var _0xc7cd3d='Contexts';return db[_0xd5b5('0x34')][_0xd5b5('0x32')]({'where':{'type':_0xc7cd3d,'resourceId':_0x3829bd['id']}})[_0xd5b5('0x1b')](function(){return _0x5bd30f;});})['then'](function(){_0x5d1255[_0xd5b5('0x26')](0xcc)[_0xd5b5('0x25')]();});}};}function handleEntityNotFound(_0x34e609,_0x254697){return function(_0x4aafe4){if(!_0x4aafe4){_0x34e609['sendStatus'](0x194);}return _0x4aafe4;};}function handleError(_0x4a66ed,_0xa669c4){_0xa669c4=_0xa669c4||0x1f4;return function(_0x1b6736){logger[_0xd5b5('0x1f')](_0x1b6736[_0xd5b5('0x35')]);if(_0x1b6736['name']){delete _0x1b6736['name'];}_0x4a66ed['status'](_0xa669c4)[_0xd5b5('0x36')](_0x1b6736);};}exports[_0xd5b5('0x37')]=function(_0x4d88b4,_0x44b994){var _0x3d2c19={},_0x275ff4={},_0x495264={'count':0x0,'rows':[]};var _0xd5baf4=_['map'](db[_0xd5b5('0x38')]['rawAttributes'],function(_0x1d21f2){return{'name':_0x1d21f2['fieldName'],'type':_0x1d21f2['type'][_0xd5b5('0x39')]};});_0x275ff4['model']=_[_0xd5b5('0x3a')](_0xd5baf4,_0xd5b5('0x3b'));_0x275ff4[_0xd5b5('0x3c')]=_[_0xd5b5('0x3d')](_0x4d88b4[_0xd5b5('0x3c')]);_0x275ff4[_0xd5b5('0x3e')]=_[_0xd5b5('0x3f')](_0x275ff4[_0xd5b5('0x40')],_0x275ff4[_0xd5b5('0x3c')]);_0x3d2c19[_0xd5b5('0x41')]=_[_0xd5b5('0x3f')](_0x275ff4['model'],qs[_0xd5b5('0x42')](_0x4d88b4[_0xd5b5('0x3c')]['fields']));_0x3d2c19[_0xd5b5('0x41')]=_0x3d2c19['attributes']['length']?_0x3d2c19[_0xd5b5('0x41')]:_0x275ff4[_0xd5b5('0x40')];if(!_0x4d88b4[_0xd5b5('0x3c')][_0xd5b5('0x43')](_0xd5b5('0x44'))){_0x3d2c19['limit']=qs['limit'](_0x4d88b4[_0xd5b5('0x3c')][_0xd5b5('0x2b')]);_0x3d2c19['offset']=qs['offset'](_0x4d88b4[_0xd5b5('0x3c')][_0xd5b5('0x28')]);}_0x3d2c19[_0xd5b5('0x45')]=qs['sort'](_0x4d88b4[_0xd5b5('0x3c')][_0xd5b5('0x46')]);_0x3d2c19[_0xd5b5('0x47')]=qs[_0xd5b5('0x3e')](_[_0xd5b5('0x48')](_0x4d88b4['query'],_0x275ff4[_0xd5b5('0x3e')]),_0xd5baf4);if(_0x4d88b4[_0xd5b5('0x3c')]['filter']){_0x3d2c19['where']=_[_0xd5b5('0x49')](_0x3d2c19['where'],{'$or':_[_0xd5b5('0x3a')](_0xd5baf4,function(_0x384348){if(_0x384348[_0xd5b5('0x4a')]!==_0xd5b5('0x4b')){var _0x2eff48={};_0x2eff48[_0x384348[_0xd5b5('0x3b')]]={'$like':'%'+_0x4d88b4[_0xd5b5('0x3c')][_0xd5b5('0x4c')]+'%'};return _0x2eff48;}})});}_0x3d2c19=_[_0xd5b5('0x49')]({},_0x3d2c19,_0x4d88b4[_0xd5b5('0x4d')]);var _0x3e857f={'where':_0x3d2c19[_0xd5b5('0x47')]};return db[_0xd5b5('0x38')]['count'](_0x3e857f)['then'](function(_0x107449){_0x495264[_0xd5b5('0x2a')]=_0x107449;if(_0x4d88b4[_0xd5b5('0x3c')]['includeAll']){_0x3d2c19[_0xd5b5('0x4e')]=[{'all':!![]}];}return db[_0xd5b5('0x38')][_0xd5b5('0x4f')](_0x3d2c19);})[_0xd5b5('0x1b')](function(_0x2d18f8){_0x495264[_0xd5b5('0x50')]=_0x2d18f8;return _0x495264;})[_0xd5b5('0x1b')](respondWithFilteredResult(_0x44b994,_0x3d2c19))[_0xd5b5('0x23')](handleError(_0x44b994,null));};exports[_0xd5b5('0x51')]=function(_0x5c5c58,_0x10abfc){var _0x4e9877={'raw':![],'where':{'id':_0x5c5c58['params']['id']}},_0x14913d={};_0x14913d['model']=_[_0xd5b5('0x3d')](db['VoiceContext']['rawAttributes']);_0x14913d[_0xd5b5('0x3c')]=_['keys'](_0x5c5c58['query']);_0x14913d['filters']=_[_0xd5b5('0x3f')](_0x14913d['model'],_0x14913d[_0xd5b5('0x3c')]);_0x4e9877[_0xd5b5('0x41')]=_['intersection'](_0x14913d['model'],qs[_0xd5b5('0x42')](_0x5c5c58[_0xd5b5('0x3c')][_0xd5b5('0x42')]));_0x4e9877[_0xd5b5('0x41')]=_0x4e9877[_0xd5b5('0x41')][_0xd5b5('0x52')]?_0x4e9877[_0xd5b5('0x41')]:_0x14913d['model'];if(_0x5c5c58[_0xd5b5('0x3c')][_0xd5b5('0x53')]){_0x4e9877[_0xd5b5('0x4e')]=[{'all':!![]}];}_0x4e9877=_[_0xd5b5('0x49')]({},_0x4e9877,_0x5c5c58[_0xd5b5('0x4d')]);return db[_0xd5b5('0x38')]['find'](_0x4e9877)['then'](handleEntityNotFound(_0x10abfc,null))[_0xd5b5('0x1b')](respondWithResult(_0x10abfc,null))['catch'](handleError(_0x10abfc,null));};exports[_0xd5b5('0x54')]=function(_0xff0db9,_0x5034db,_0x2c581a){var _0x23b45a;return db['VoiceContext'][_0xd5b5('0x54')](_0xff0db9[_0xd5b5('0x55')],{'raw':!![]})['then'](function(_0x5a30bb){_0x23b45a=_0x5a30bb;return db[_0xd5b5('0x38')][_0xd5b5('0x4f')]({'raw':!![]});})['then'](function(_0x3544db){var _0x3f3b29=fs['readFileSync'](path[_0xd5b5('0x56')](config[_0xd5b5('0x57')],_0xd5b5('0x58')),_0xd5b5('0x59'));var _0x39254e=ejs[_0xd5b5('0x5a')](_0x3f3b29,{'contexts':_0x3544db||[]});fs[_0xd5b5('0x5b')](_0xd5b5('0x5c'),_0x39254e);})[_0xd5b5('0x1b')](function(){return respondWithRpcPromise(_0xd5b5('0x5d'),_0xd5b5('0x54'),{'module':'chan_sip.so'});})[_0xd5b5('0x1b')](function(){var _0x29a7bc=_0xff0db9[_0xd5b5('0x5e')]['get']({'plain':!![]});if(!_0x29a7bc)throw new Error(_0xd5b5('0x5f'));if(_0x29a7bc[_0xd5b5('0x60')]===_0xd5b5('0x5e')){var _0x48f1eb=_0x23b45a[_0xd5b5('0x33')]({'plain':!![]});return db[_0xd5b5('0x61')][_0xd5b5('0x62')]({'where':{'name':_0xd5b5('0x63'),'userProfileId':_0x29a7bc[_0xd5b5('0x64')]},'raw':!![]})['then'](function(_0x407f30){if(_0x407f30&&_0x407f30[_0xd5b5('0x65')]===0x0){return db[_0xd5b5('0x34')]['create']({'name':_0x48f1eb['name'],'resourceId':_0x48f1eb['id'],'type':_0x407f30[_0xd5b5('0x3b')],'sectionId':_0x407f30['id']},{})[_0xd5b5('0x1b')](function(){return _0x23b45a;});}else{return _0x23b45a;}})['catch'](function(_0x31daa5){logger['error'](_0xd5b5('0x66'),_0x31daa5);throw _0x31daa5;});}return _0x23b45a;})[_0xd5b5('0x1b')](respondWithResult(_0x5034db,0xc9))[_0xd5b5('0x23')](handleError(_0x5034db,null));};exports[_0xd5b5('0x31')]=function(_0x54c319,_0x5a50dc,_0x11e2c5){var _0x2b5b78;return db[_0xd5b5('0x38')][_0xd5b5('0x62')]({'where':{'id':_0x54c319[_0xd5b5('0x67')]['id']}})[_0xd5b5('0x1b')](handleEntityNotFound(_0x5a50dc,null))['then'](saveUpdates(_0x54c319[_0xd5b5('0x55')],null))[_0xd5b5('0x1b')](function(_0x1365cb){if(_0x1365cb){_0x2b5b78=_0x1365cb;return db[_0xd5b5('0x38')][_0xd5b5('0x4f')]({'raw':!![]});}})[_0xd5b5('0x1b')](function(_0x15ced7){var _0x1783bd=fs[_0xd5b5('0x68')](path[_0xd5b5('0x56')](config[_0xd5b5('0x57')],'server/files/templates/context.ejs'),_0xd5b5('0x59'));var _0xc97f00=ejs[_0xd5b5('0x5a')](_0x1783bd,{'contexts':_0x15ced7||[]});fs['writeFileSync']('/etc/asterisk/extensions_xcally_contexts.conf',_0xc97f00);})[_0xd5b5('0x1b')](function(){return respondWithRpcPromise(_0xd5b5('0x5d'),_0xd5b5('0x31'),{'module':'chan_sip.so'});})[_0xd5b5('0x1b')](function(){return _0x2b5b78;})[_0xd5b5('0x1b')](respondWithResult(_0x5a50dc,null))['catch'](handleError(_0x5a50dc,null));};exports[_0xd5b5('0x32')]=function(_0x4364bf,_0x1a7cb9,_0x1fad90){var _0x686a84;return db[_0xd5b5('0x38')][_0xd5b5('0x62')]({'where':{'id':_0x4364bf[_0xd5b5('0x67')]['id']}})[_0xd5b5('0x1b')](handleEntityNotFound(_0x1a7cb9,null))[_0xd5b5('0x1b')](removeEntity(_0x1a7cb9,null))[_0xd5b5('0x1b')](function(){return db[_0xd5b5('0x38')][_0xd5b5('0x4f')]({'raw':!![]});})[_0xd5b5('0x1b')](function(_0x2b5193){var _0xb77a86=fs[_0xd5b5('0x68')](path[_0xd5b5('0x56')](config[_0xd5b5('0x57')],_0xd5b5('0x58')),'utf8');var _0x2ecc2a=ejs[_0xd5b5('0x5a')](_0xb77a86,{'contexts':_0x2b5193});fs[_0xd5b5('0x5b')](_0xd5b5('0x5c'),_0x2ecc2a);return respondWithRpcPromise('Reload',_0xd5b5('0x32'),{'module':_0xd5b5('0x69')});})[_0xd5b5('0x23')](handleError(_0x1a7cb9,null));};
\ No newline at end of file
index 0200ed0..cf8db09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4028=['api','moment','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','exports','VoiceContext','voice_contexts','util','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4028,0x15a));var _0x8402=function(_0x368719,_0x5a8f7e){_0x368719=_0x368719-0x0;var _0x524864=_0x4028[_0x368719];return _0x524864;};'use strict';var _=require('lodash');var util=require(_0x8402('0x0'));var logger=require(_0x8402('0x1'))(_0x8402('0x2'));var moment=require(_0x8402('0x3'));var BPromise=require('bluebird');var rp=require(_0x8402('0x4'));var fs=require('fs');var path=require(_0x8402('0x5'));var rimraf=require(_0x8402('0x6'));var config=require(_0x8402('0x7'));var attributes=require(_0x8402('0x8'));module[_0x8402('0x9')]=function(_0x2bc6ad,_0x47ca61){return _0x2bc6ad['define'](_0x8402('0xa'),attributes,{'tableName':_0x8402('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x720f=['VoiceContext','voice_contexts','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x3575fb,_0x37ba86){var _0x17d100=function(_0x373ac7){while(--_0x373ac7){_0x3575fb['push'](_0x3575fb['shift']());}};_0x17d100(++_0x37ba86);}(_0x720f,0x80));var _0xf720=function(_0x4bc65f,_0x39ec43){_0x4bc65f=_0x4bc65f-0x0;var _0x44f85f=_0x720f[_0x4bc65f];return _0x44f85f;};'use strict';var _=require('lodash');var util=require(_0xf720('0x0'));var logger=require(_0xf720('0x1'))(_0xf720('0x2'));var moment=require(_0xf720('0x3'));var BPromise=require(_0xf720('0x4'));var rp=require(_0xf720('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf720('0x6'));var config=require('../../config/environment');var attributes=require('./voiceContext.attributes');module['exports']=function(_0x5256d6,_0x113de6){return _0x5256d6['define'](_0xf720('0x7'),attributes,{'tableName':_0xf720('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b39be1e..569cf2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29a6=['VoiceContext,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2a04b4,_0x39ccf7){var _0xc1ad77=function(_0xbdc202){while(--_0xbdc202){_0x2a04b4['push'](_0x2a04b4['shift']());}};_0xc1ad77(++_0x39ccf7);}(_0x29a6,0xd9));var _0x629a=function(_0x467d33,_0x5997f9){_0x467d33=_0x467d33-0x0;var _0x153273=_0x29a6[_0x467d33];return _0x153273;};'use strict';var _=require(_0x629a('0x0'));var util=require('util');var moment=require(_0x629a('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x629a('0x2'));var db=require(_0x629a('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x629a('0x4'));var jayson=require(_0x629a('0x5'));var client=jayson[_0x629a('0x6')][_0x629a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xa5a8b1,_0x5ad892,_0x36ef14){return new BPromise(function(_0x19fbb7,_0x5aa0bb){return client[_0x629a('0x8')](_0xa5a8b1,_0x36ef14)[_0x629a('0x9')](function(_0x2e52fc){logger[_0x629a('0xa')](_0x629a('0xb'),_0x5ad892,_0x629a('0xc'));logger[_0x629a('0xd')](_0x629a('0xe'),_0x5ad892,_0x629a('0xc'),JSON[_0x629a('0xf')](_0x2e52fc));if(_0x2e52fc['error']){if(_0x2e52fc['error'][_0x629a('0x10')]===0x1f4){logger[_0x629a('0x11')](_0x629a('0xb'),_0x5ad892,_0x2e52fc[_0x629a('0x11')]['message']);return _0x5aa0bb(_0x2e52fc[_0x629a('0x11')][_0x629a('0x12')]);}logger[_0x629a('0x11')](_0x629a('0xb'),_0x5ad892,_0x2e52fc[_0x629a('0x11')][_0x629a('0x12')]);return _0x19fbb7(_0x2e52fc[_0x629a('0x11')][_0x629a('0x12')]);}else{logger['info'](_0x629a('0xb'),_0x5ad892,_0x629a('0xc'));_0x19fbb7(_0x2e52fc[_0x629a('0x13')][_0x629a('0x12')]);}})[_0x629a('0x14')](function(_0x2d905f){logger[_0x629a('0x11')](_0x629a('0xb'),_0x5ad892,_0x2d905f);_0x5aa0bb(_0x2d905f);});});}
\ No newline at end of file
+var _0x53eb=['message','info','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','then','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x71e493,_0x4308b7){var _0x3d40ab=function(_0x29715){while(--_0x29715){_0x71e493['push'](_0x71e493['shift']());}};_0x3d40ab(++_0x4308b7);}(_0x53eb,0x115));var _0xb53e=function(_0x1d6075,_0x2a1df7){_0x1d6075=_0x1d6075-0x0;var _0x88735d=_0x53eb[_0x1d6075];return _0x88735d;};'use strict';var _=require(_0xb53e('0x0'));var util=require(_0xb53e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb53e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb53e('0x3'))['db'];var utils=require(_0xb53e('0x4'));var logger=require('../../config/logger')(_0xb53e('0x5'));var config=require(_0xb53e('0x6'));var jayson=require(_0xb53e('0x7'));var client=jayson['client'][_0xb53e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3a116b,_0x23f47c,_0x26633f){return new BPromise(function(_0x3aa191,_0x409bcc){return client['request'](_0x3a116b,_0x26633f)[_0xb53e('0x9')](function(_0x4858b6){logger['info'](_0xb53e('0xa'),_0x23f47c,_0xb53e('0xb'));logger[_0xb53e('0xc')](_0xb53e('0xd'),_0x23f47c,_0xb53e('0xb'),JSON[_0xb53e('0xe')](_0x4858b6));if(_0x4858b6[_0xb53e('0xf')]){if(_0x4858b6[_0xb53e('0xf')][_0xb53e('0x10')]===0x1f4){logger[_0xb53e('0xf')](_0xb53e('0xa'),_0x23f47c,_0x4858b6['error'][_0xb53e('0x11')]);return _0x409bcc(_0x4858b6[_0xb53e('0xf')][_0xb53e('0x11')]);}logger['error'](_0xb53e('0xa'),_0x23f47c,_0x4858b6['error'][_0xb53e('0x11')]);return _0x3aa191(_0x4858b6[_0xb53e('0xf')]['message']);}else{logger[_0xb53e('0x12')](_0xb53e('0xa'),_0x23f47c,_0xb53e('0xb'));_0x3aa191(_0x4858b6[_0xb53e('0x13')][_0xb53e('0x11')]);}})[_0xb53e('0x14')](function(_0x34441d){logger[_0xb53e('0xf')](_0xb53e('0xa'),_0x23f47c,_0x34441d);_0x409bcc(_0x34441d);});});}
\ No newline at end of file
index c98977e..666fe42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62cc=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','/describe','describe','show','post','put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x62cc,0xb1));var _0xc62c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x62cc[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xc62c('0x0'));var util=require(_0xc62c('0x1'));var path=require(_0xc62c('0x2'));var timeout=require(_0xc62c('0x3'));var express=require(_0xc62c('0x4'));var router=express[_0xc62c('0x5')]();var fs_extra=require(_0xc62c('0x6'));var auth=require(_0xc62c('0x7'));var interaction=require(_0xc62c('0x8'));var config=require(_0xc62c('0x9'));var controller=require(_0xc62c('0xa'));router[_0xc62c('0xb')]('/',auth[_0xc62c('0xc')](),controller['index']);router['get'](_0xc62c('0xd'),auth[_0xc62c('0xc')](),controller[_0xc62c('0xe')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xc62c('0xf')]);router[_0xc62c('0x10')]('/',auth[_0xc62c('0xc')](),controller['create']);router[_0xc62c('0x11')]('/:id',auth[_0xc62c('0xc')](),controller[_0xc62c('0x12')]);router[_0xc62c('0x13')](_0xc62c('0x14'),auth[_0xc62c('0xc')](),controller[_0xc62c('0x15')]);module[_0xc62c('0x16')]=router;
\ No newline at end of file
+var _0x9aa8=['destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','isAuthenticated','get','/describe','describe','post','create','/:id','update','delete'];(function(_0x131a70,_0x5f53b2){var _0x212967=function(_0x2a43ac){while(--_0x2a43ac){_0x131a70['push'](_0x131a70['shift']());}};_0x212967(++_0x5f53b2);}(_0x9aa8,0xb6));var _0x89aa=function(_0x4c5a62,_0x33098a){_0x4c5a62=_0x4c5a62-0x0;var _0x205676=_0x9aa8[_0x4c5a62];return _0x205676;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x89aa('0x0'));var timeout=require(_0x89aa('0x1'));var express=require(_0x89aa('0x2'));var router=express[_0x89aa('0x3')]();var fs_extra=require(_0x89aa('0x4'));var auth=require(_0x89aa('0x5'));var interaction=require(_0x89aa('0x6'));var config=require(_0x89aa('0x7'));var controller=require(_0x89aa('0x8'));router['get']('/',auth[_0x89aa('0x9')](),controller['index']);router[_0x89aa('0xa')](_0x89aa('0xb'),auth[_0x89aa('0x9')](),controller[_0x89aa('0xc')]);router[_0x89aa('0xa')]('/:id',auth[_0x89aa('0x9')](),controller['show']);router[_0x89aa('0xd')]('/',auth[_0x89aa('0x9')](),controller[_0x89aa('0xe')]);router['put'](_0x89aa('0xf'),auth[_0x89aa('0x9')](),controller[_0x89aa('0x10')]);router[_0x89aa('0x11')]('/:id',auth[_0x89aa('0x9')](),controller[_0x89aa('0x12')]);module[_0x89aa('0x13')]=router;
\ No newline at end of file
index 48fc28b..7ea1790 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['exports','STRING','INTEGER','DATE','called,connect,complete'];(function(_0x208952,_0x3fb45c){var _0x419479=function(_0xa1f3a7){while(--_0xa1f3a7){_0x208952['push'](_0x208952['shift']());}};_0x419479(++_0x3fb45c);}(_0x9bde,0xe1));var _0xe9bd=function(_0x4cadd6,_0x32b3d2){_0x4cadd6=_0x4cadd6-0x0;var _0x18239c=_0x9bde[_0x4cadd6];return _0x18239c;};'use strict';var Sequelize=require('sequelize');module[_0xe9bd('0x0')]={'privilege':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xe9bd('0x1')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xe9bd('0x1')]},'calleridnum':{'type':Sequelize[_0xe9bd('0x1')]},'calleridname':{'type':Sequelize[_0xe9bd('0x1')]},'connectedlinenum':{'type':Sequelize[_0xe9bd('0x1')]},'connectedlinename':{'type':Sequelize[_0xe9bd('0x1')]},'language':{'type':Sequelize[_0xe9bd('0x1')]},'accountcode':{'type':Sequelize[_0xe9bd('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xe9bd('0x1')]},'priority':{'type':Sequelize[_0xe9bd('0x2')]},'uniqueid':{'type':Sequelize[_0xe9bd('0x1')]},'linkedid':{'type':Sequelize[_0xe9bd('0x1')]},'destchannel':{'type':Sequelize[_0xe9bd('0x1')]},'destchannelstate':{'type':Sequelize[_0xe9bd('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0xe9bd('0x1')]},'destcalleridnum':{'type':Sequelize[_0xe9bd('0x1')]},'destcalleridname':{'type':Sequelize[_0xe9bd('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xe9bd('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xe9bd('0x1')]},'destcontext':{'type':Sequelize[_0xe9bd('0x1')]},'destexten':{'type':Sequelize[_0xe9bd('0x1')]},'destpriority':{'type':Sequelize['INTEGER']},'destuniqueid':{'type':Sequelize[_0xe9bd('0x1')]},'destlinkedid':{'type':Sequelize[_0xe9bd('0x1')]},'dialstring':{'type':Sequelize[_0xe9bd('0x1')]},'dialstatus':{'type':Sequelize[_0xe9bd('0x1')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xe9bd('0x3')]},'endtime':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xe9bd('0x1')],'comment':_0xe9bd('0x4')},'routeId':{'type':Sequelize[_0xe9bd('0x2')]},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0xe9bd('0x2')]}};
\ No newline at end of file
+var _0x54ef=['STRING','INTEGER','DATE','called,connect,complete','sequelize','exports'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x54ef,0x112));var _0xf54e=function(_0x5d9a95,_0x49bce0){_0x5d9a95=_0x5d9a95-0x0;var _0x415bf0=_0x54ef[_0x5d9a95];return _0x415bf0;};'use strict';var Sequelize=require(_0xf54e('0x0'));module[_0xf54e('0x1')]={'privilege':{'type':Sequelize[_0xf54e('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xf54e('0x3')]},'channelstatedesc':{'type':Sequelize[_0xf54e('0x2')]},'calleridnum':{'type':Sequelize[_0xf54e('0x2')]},'calleridname':{'type':Sequelize[_0xf54e('0x2')]},'connectedlinenum':{'type':Sequelize[_0xf54e('0x2')]},'connectedlinename':{'type':Sequelize[_0xf54e('0x2')]},'language':{'type':Sequelize[_0xf54e('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xf54e('0x2')]},'priority':{'type':Sequelize[_0xf54e('0x3')]},'uniqueid':{'type':Sequelize[_0xf54e('0x2')]},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xf54e('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xf54e('0x2')]},'destcalleridnum':{'type':Sequelize[_0xf54e('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xf54e('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xf54e('0x2')]},'destlanguage':{'type':Sequelize[_0xf54e('0x2')]},'destaccountcode':{'type':Sequelize[_0xf54e('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xf54e('0x2')]},'destpriority':{'type':Sequelize[_0xf54e('0x3')]},'destuniqueid':{'type':Sequelize[_0xf54e('0x2')]},'destlinkedid':{'type':Sequelize[_0xf54e('0x2')]},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0xf54e('0x2')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xf54e('0x4')]},'lastevent':{'type':Sequelize[_0xf54e('0x2')],'comment':_0xf54e('0x5')},'routeId':{'type':Sequelize[_0xf54e('0x3')]},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize[_0xf54e('0x3')]},'billableseconds':{'type':Sequelize[_0xf54e('0x3')]}};
\ No newline at end of file
index 1ce656f..91a7996 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaefe=['rows','catch','show','params','rawAttributes','fields','length','find','body','describe','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','../../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','apply','reject','update','destroy','then','error','stack','name','send','index','fieldName','key','model','map','query','keys','filters','intersection','attributes','nolimit','sort','where','merge','type','filter','options','VoiceDialReport','includeAll','include','findAll'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xaefe,0x13a));var _0xeaef=function(_0x11a220,_0x4e470a){_0x11a220=_0x11a220-0x0;var _0x20d8fe=_0xaefe[_0x11a220];return _0x20d8fe;};'use strict';var emlformat=require(_0xeaef('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xeaef('0x1'));var jsonpatch=require(_0xeaef('0x2'));var rp=require(_0xeaef('0x3'));var moment=require(_0xeaef('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xeaef('0x5'));var util=require(_0xeaef('0x6'));var path=require(_0xeaef('0x7'));var sox=require(_0xeaef('0x8'));var csv=require('to-csv');var ejs=require(_0xeaef('0x9'));var fs=require('fs');var fs_extra=require(_0xeaef('0xa'));var _=require(_0xeaef('0xb'));var squel=require(_0xeaef('0xc'));var crypto=require(_0xeaef('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xeaef('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xeaef('0xf'));var Redis=require(_0xeaef('0x10'));var authService=require(_0xeaef('0x11'));var qs=require(_0xeaef('0x12'));var as=require(_0xeaef('0x13'));var hardwareService=require(_0xeaef('0x14'));var logger=require('../../config/logger')(_0xeaef('0x15'));var utils=require(_0xeaef('0x16'));var config=require(_0xeaef('0x17'));var licenseUtil=require(_0xeaef('0x18'));var db=require(_0xeaef('0x19'))['db'];function respondWithStatusCode(_0x328773,_0x4ec8c0){_0x4ec8c0=_0x4ec8c0||0xcc;return function(_0x40b85c){if(_0x40b85c){return _0x328773[_0xeaef('0x1a')](_0x4ec8c0);}return _0x328773[_0xeaef('0x1b')](_0x4ec8c0)[_0xeaef('0x1c')]();};}function respondWithResult(_0x41f8a8,_0xd6b88e){_0xd6b88e=_0xd6b88e||0xc8;return function(_0x3f6744){if(_0x3f6744){return _0x41f8a8[_0xeaef('0x1b')](_0xd6b88e)[_0xeaef('0x1d')](_0x3f6744);}};}function respondWithFilteredResult(_0x3bdf69,_0x1adf86){return function(_0x10d760){if(_0x10d760){var _0x53682d=typeof _0x1adf86['offset']===_0xeaef('0x1e')&&typeof _0x1adf86[_0xeaef('0x1f')]==='undefined';var _0x1ceb49=_0x10d760[_0xeaef('0x20')];var _0x25ab13=_0x53682d?0x0:_0x1adf86[_0xeaef('0x21')];var _0x5c1d95=_0x53682d?_0x10d760[_0xeaef('0x20')]:_0x1adf86[_0xeaef('0x21')]+_0x1adf86['limit'];var _0x3c08fc;if(_0x5c1d95>=_0x1ceb49){_0x5c1d95=_0x1ceb49;_0x3c08fc=0xc8;}else{_0x3c08fc=0xce;}_0x3bdf69[_0xeaef('0x1b')](_0x3c08fc);return _0x3bdf69[_0xeaef('0x22')](_0xeaef('0x23'),_0x25ab13+'-'+_0x5c1d95+'/'+_0x1ceb49)[_0xeaef('0x1d')](_0x10d760);}return null;};}function patchUpdates(_0x42bd62){return function(_0x48875b){try{jsonpatch[_0xeaef('0x24')](_0x48875b,_0x42bd62,!![]);}catch(_0x16c2ae){return BPromise[_0xeaef('0x25')](_0x16c2ae);}return _0x48875b['save']();};}function saveUpdates(_0x4cee1f,_0x1ddcc4){return function(_0xc84afb){if(_0xc84afb){return _0xc84afb[_0xeaef('0x26')](_0x4cee1f)['then'](function(_0x243399){return _0x243399;});}return null;};}function removeEntity(_0x3500d4,_0x48d424){return function(_0x529dfc){if(_0x529dfc){return _0x529dfc[_0xeaef('0x27')]()[_0xeaef('0x28')](function(){_0x3500d4[_0xeaef('0x1b')](0xcc)[_0xeaef('0x1c')]();});}};}function handleEntityNotFound(_0x36973b,_0x49dd29){return function(_0x3ce5b1){if(!_0x3ce5b1){_0x36973b['sendStatus'](0x194);}return _0x3ce5b1;};}function handleError(_0x248ad6,_0x5f4dc0){_0x5f4dc0=_0x5f4dc0||0x1f4;return function(_0x4e6b61){logger[_0xeaef('0x29')](_0x4e6b61[_0xeaef('0x2a')]);if(_0x4e6b61[_0xeaef('0x2b')]){delete _0x4e6b61[_0xeaef('0x2b')];}_0x248ad6[_0xeaef('0x1b')](_0x5f4dc0)[_0xeaef('0x2c')](_0x4e6b61);};}exports[_0xeaef('0x2d')]=function(_0x1c594e,_0x330433){var _0x238a94={},_0x318ba5={},_0x2f8df5={'count':0x0,'rows':[]};var _0x2be691=_['map'](db['VoiceDialReport']['rawAttributes'],function(_0x5617d9){return{'name':_0x5617d9[_0xeaef('0x2e')],'type':_0x5617d9['type'][_0xeaef('0x2f')]};});_0x318ba5[_0xeaef('0x30')]=_[_0xeaef('0x31')](_0x2be691,'name');_0x318ba5[_0xeaef('0x32')]=_[_0xeaef('0x33')](_0x1c594e[_0xeaef('0x32')]);_0x318ba5[_0xeaef('0x34')]=_[_0xeaef('0x35')](_0x318ba5[_0xeaef('0x30')],_0x318ba5['query']);_0x238a94[_0xeaef('0x36')]=_[_0xeaef('0x35')](_0x318ba5['model'],qs['fields'](_0x1c594e[_0xeaef('0x32')]['fields']));_0x238a94[_0xeaef('0x36')]=_0x238a94[_0xeaef('0x36')]['length']?_0x238a94[_0xeaef('0x36')]:_0x318ba5[_0xeaef('0x30')];if(!_0x1c594e[_0xeaef('0x32')]['hasOwnProperty'](_0xeaef('0x37'))){_0x238a94[_0xeaef('0x1f')]=qs[_0xeaef('0x1f')](_0x1c594e[_0xeaef('0x32')]['limit']);_0x238a94['offset']=qs['offset'](_0x1c594e[_0xeaef('0x32')][_0xeaef('0x21')]);}_0x238a94['order']=qs['sort'](_0x1c594e[_0xeaef('0x32')][_0xeaef('0x38')]);_0x238a94['where']=qs[_0xeaef('0x34')](_['pick'](_0x1c594e[_0xeaef('0x32')],_0x318ba5['filters']),_0x2be691);if(_0x1c594e[_0xeaef('0x32')]['filter']){_0x238a94[_0xeaef('0x39')]=_[_0xeaef('0x3a')](_0x238a94[_0xeaef('0x39')],{'$or':_[_0xeaef('0x31')](_0x2be691,function(_0x50259a){if(_0x50259a[_0xeaef('0x3b')]!=='VIRTUAL'){var _0x4b90a5={};_0x4b90a5[_0x50259a[_0xeaef('0x2b')]]={'$like':'%'+_0x1c594e[_0xeaef('0x32')][_0xeaef('0x3c')]+'%'};return _0x4b90a5;}})});}_0x238a94=_['merge']({},_0x238a94,_0x1c594e[_0xeaef('0x3d')]);var _0x4ee389={'where':_0x238a94[_0xeaef('0x39')]};return db[_0xeaef('0x3e')]['count'](_0x4ee389)[_0xeaef('0x28')](function(_0x206b78){_0x2f8df5[_0xeaef('0x20')]=_0x206b78;if(_0x1c594e['query'][_0xeaef('0x3f')]){_0x238a94[_0xeaef('0x40')]=[{'all':!![]}];}return db[_0xeaef('0x3e')][_0xeaef('0x41')](_0x238a94);})[_0xeaef('0x28')](function(_0x595308){_0x2f8df5[_0xeaef('0x42')]=_0x595308;return _0x2f8df5;})[_0xeaef('0x28')](respondWithFilteredResult(_0x330433,_0x238a94))[_0xeaef('0x43')](handleError(_0x330433,null));};exports[_0xeaef('0x44')]=function(_0x45de15,_0x22dbec){var _0x12e274={'raw':!![],'where':{'id':_0x45de15[_0xeaef('0x45')]['id']}},_0x4c8798={};_0x4c8798[_0xeaef('0x30')]=_['keys'](db[_0xeaef('0x3e')][_0xeaef('0x46')]);_0x4c8798[_0xeaef('0x32')]=_[_0xeaef('0x33')](_0x45de15[_0xeaef('0x32')]);_0x4c8798[_0xeaef('0x34')]=_['intersection'](_0x4c8798[_0xeaef('0x30')],_0x4c8798[_0xeaef('0x32')]);_0x12e274[_0xeaef('0x36')]=_[_0xeaef('0x35')](_0x4c8798['model'],qs[_0xeaef('0x47')](_0x45de15[_0xeaef('0x32')][_0xeaef('0x47')]));_0x12e274[_0xeaef('0x36')]=_0x12e274[_0xeaef('0x36')][_0xeaef('0x48')]?_0x12e274['attributes']:_0x4c8798['model'];if(_0x45de15[_0xeaef('0x32')][_0xeaef('0x3f')]){_0x12e274[_0xeaef('0x40')]=[{'all':!![]}];}_0x12e274=_[_0xeaef('0x3a')]({},_0x12e274,_0x45de15['options']);return db[_0xeaef('0x3e')][_0xeaef('0x49')](_0x12e274)[_0xeaef('0x28')](handleEntityNotFound(_0x22dbec,null))['then'](respondWithResult(_0x22dbec,null))['catch'](handleError(_0x22dbec,null));};exports['create']=function(_0x825f65,_0x4a4a90){return db[_0xeaef('0x3e')]['create'](_0x825f65['body'],{})[_0xeaef('0x28')](respondWithResult(_0x4a4a90,0xc9))['catch'](handleError(_0x4a4a90,null));};exports[_0xeaef('0x26')]=function(_0x49c93e,_0x564934){if(_0x49c93e[_0xeaef('0x4a')]['id']){delete _0x49c93e['body']['id'];}return db['VoiceDialReport'][_0xeaef('0x49')]({'where':{'id':_0x49c93e[_0xeaef('0x45')]['id']}})['then'](handleEntityNotFound(_0x564934,null))[_0xeaef('0x28')](saveUpdates(_0x49c93e[_0xeaef('0x4a')],null))[_0xeaef('0x28')](respondWithResult(_0x564934,null))[_0xeaef('0x43')](handleError(_0x564934,null));};exports['destroy']=function(_0x4d66f4,_0xcf70d0){return db[_0xeaef('0x3e')][_0xeaef('0x49')]({'where':{'id':_0x4d66f4['params']['id']}})[_0xeaef('0x28')](handleEntityNotFound(_0xcf70d0,null))[_0xeaef('0x28')](removeEntity(_0xcf70d0,null))[_0xeaef('0x43')](handleError(_0xcf70d0,null));};exports['describe']=function(_0x188c97,_0x1510f9){return db[_0xeaef('0x3e')][_0xeaef('0x4b')]()[_0xeaef('0x28')](respondWithResult(_0x1510f9,null))[_0xeaef('0x43')](handleError(_0x1510f9,null));};
\ No newline at end of file
+var _0xb766=['jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','apply','reject','save','update','then','destroy','name','send','map','VoiceDialReport','type','query','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','keys','rawAttributes','find','create','body','catch','describe','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel'];(function(_0x302661,_0x2de44e){var _0x452f1c=function(_0x13a576){while(--_0x13a576){_0x302661['push'](_0x302661['shift']());}};_0x452f1c(++_0x2de44e);}(_0xb766,0x108));var _0x6b76=function(_0x4e11d5,_0x1ce514){_0x4e11d5=_0x4e11d5-0x0;var _0x5e4e4c=_0xb766[_0x4e11d5];return _0x5e4e4c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6b76('0x0'));var zipdir=require(_0x6b76('0x1'));var jsonpatch=require(_0x6b76('0x2'));var rp=require('request-promise');var moment=require(_0x6b76('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6b76('0x4'));var util=require(_0x6b76('0x5'));var path=require(_0x6b76('0x6'));var sox=require(_0x6b76('0x7'));var csv=require(_0x6b76('0x8'));var ejs=require(_0x6b76('0x9'));var fs=require('fs');var fs_extra=require(_0x6b76('0xa'));var _=require('lodash');var squel=require(_0x6b76('0xb'));var crypto=require('crypto');var jsforce=require(_0x6b76('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6b76('0x8'));var querystring=require(_0x6b76('0xd'));var Papa=require(_0x6b76('0xe'));var Redis=require(_0x6b76('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6b76('0x10'));var as=require(_0x6b76('0x11'));var hardwareService=require(_0x6b76('0x12'));var logger=require(_0x6b76('0x13'))(_0x6b76('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6b76('0x15'))['db'];function respondWithStatusCode(_0x2d3063,_0x18bf98){_0x18bf98=_0x18bf98||0xcc;return function(_0x22870b){if(_0x22870b){return _0x2d3063[_0x6b76('0x16')](_0x18bf98);}return _0x2d3063['status'](_0x18bf98)[_0x6b76('0x17')]();};}function respondWithResult(_0x28a866,_0x48d09e){_0x48d09e=_0x48d09e||0xc8;return function(_0x18152f){if(_0x18152f){return _0x28a866['status'](_0x48d09e)[_0x6b76('0x18')](_0x18152f);}};}function respondWithFilteredResult(_0x411457,_0x5af5b8){return function(_0x3eefd1){if(_0x3eefd1){var _0x141f58=typeof _0x5af5b8[_0x6b76('0x19')]===_0x6b76('0x1a')&&typeof _0x5af5b8[_0x6b76('0x1b')]===_0x6b76('0x1a');var _0xf11ab9=_0x3eefd1[_0x6b76('0x1c')];var _0x311267=_0x141f58?0x0:_0x5af5b8[_0x6b76('0x19')];var _0x329732=_0x141f58?_0x3eefd1[_0x6b76('0x1c')]:_0x5af5b8[_0x6b76('0x19')]+_0x5af5b8[_0x6b76('0x1b')];var _0x1673b3;if(_0x329732>=_0xf11ab9){_0x329732=_0xf11ab9;_0x1673b3=0xc8;}else{_0x1673b3=0xce;}_0x411457[_0x6b76('0x1d')](_0x1673b3);return _0x411457['set']('Content-Range',_0x311267+'-'+_0x329732+'/'+_0xf11ab9)[_0x6b76('0x18')](_0x3eefd1);}return null;};}function patchUpdates(_0xff23b8){return function(_0x296958){try{jsonpatch[_0x6b76('0x1e')](_0x296958,_0xff23b8,!![]);}catch(_0x567a40){return BPromise[_0x6b76('0x1f')](_0x567a40);}return _0x296958[_0x6b76('0x20')]();};}function saveUpdates(_0x377c16,_0x69400e){return function(_0x194d8f){if(_0x194d8f){return _0x194d8f[_0x6b76('0x21')](_0x377c16)[_0x6b76('0x22')](function(_0x552c98){return _0x552c98;});}return null;};}function removeEntity(_0x3f3e19,_0x4ddbf5){return function(_0x61b4f0){if(_0x61b4f0){return _0x61b4f0[_0x6b76('0x23')]()[_0x6b76('0x22')](function(){_0x3f3e19[_0x6b76('0x1d')](0xcc)[_0x6b76('0x17')]();});}};}function handleEntityNotFound(_0xaa15cd,_0x29da3d){return function(_0x18ea97){if(!_0x18ea97){_0xaa15cd['sendStatus'](0x194);}return _0x18ea97;};}function handleError(_0x1f95ae,_0x30b62f){_0x30b62f=_0x30b62f||0x1f4;return function(_0x53c857){logger['error'](_0x53c857['stack']);if(_0x53c857[_0x6b76('0x24')]){delete _0x53c857['name'];}_0x1f95ae[_0x6b76('0x1d')](_0x30b62f)[_0x6b76('0x25')](_0x53c857);};}exports['index']=function(_0x46f8ab,_0x1ab878){var _0x25699c={},_0x130e2c={},_0x3c73ca={'count':0x0,'rows':[]};var _0x59978f=_[_0x6b76('0x26')](db[_0x6b76('0x27')]['rawAttributes'],function(_0x36e724){return{'name':_0x36e724['fieldName'],'type':_0x36e724[_0x6b76('0x28')]['key']};});_0x130e2c['model']=_[_0x6b76('0x26')](_0x59978f,_0x6b76('0x24'));_0x130e2c[_0x6b76('0x29')]=_['keys'](_0x46f8ab[_0x6b76('0x29')]);_0x130e2c[_0x6b76('0x2a')]=_[_0x6b76('0x2b')](_0x130e2c['model'],_0x130e2c['query']);_0x25699c[_0x6b76('0x2c')]=_[_0x6b76('0x2b')](_0x130e2c[_0x6b76('0x2d')],qs['fields'](_0x46f8ab[_0x6b76('0x29')][_0x6b76('0x2e')]));_0x25699c['attributes']=_0x25699c[_0x6b76('0x2c')][_0x6b76('0x2f')]?_0x25699c['attributes']:_0x130e2c[_0x6b76('0x2d')];if(!_0x46f8ab[_0x6b76('0x29')]['hasOwnProperty'](_0x6b76('0x30'))){_0x25699c['limit']=qs[_0x6b76('0x1b')](_0x46f8ab['query'][_0x6b76('0x1b')]);_0x25699c['offset']=qs[_0x6b76('0x19')](_0x46f8ab[_0x6b76('0x29')][_0x6b76('0x19')]);}_0x25699c[_0x6b76('0x31')]=qs[_0x6b76('0x32')](_0x46f8ab['query'][_0x6b76('0x32')]);_0x25699c[_0x6b76('0x33')]=qs[_0x6b76('0x2a')](_[_0x6b76('0x34')](_0x46f8ab[_0x6b76('0x29')],_0x130e2c[_0x6b76('0x2a')]),_0x59978f);if(_0x46f8ab[_0x6b76('0x29')][_0x6b76('0x35')]){_0x25699c['where']=_[_0x6b76('0x36')](_0x25699c[_0x6b76('0x33')],{'$or':_[_0x6b76('0x26')](_0x59978f,function(_0xdb3de6){if(_0xdb3de6[_0x6b76('0x28')]!==_0x6b76('0x37')){var _0x48710c={};_0x48710c[_0xdb3de6[_0x6b76('0x24')]]={'$like':'%'+_0x46f8ab[_0x6b76('0x29')][_0x6b76('0x35')]+'%'};return _0x48710c;}})});}_0x25699c=_[_0x6b76('0x36')]({},_0x25699c,_0x46f8ab[_0x6b76('0x38')]);var _0x848cc6={'where':_0x25699c[_0x6b76('0x33')]};return db[_0x6b76('0x27')][_0x6b76('0x1c')](_0x848cc6)[_0x6b76('0x22')](function(_0x40a50a){_0x3c73ca['count']=_0x40a50a;if(_0x46f8ab[_0x6b76('0x29')][_0x6b76('0x39')]){_0x25699c[_0x6b76('0x3a')]=[{'all':!![]}];}return db[_0x6b76('0x27')][_0x6b76('0x3b')](_0x25699c);})[_0x6b76('0x22')](function(_0x1295c7){_0x3c73ca[_0x6b76('0x3c')]=_0x1295c7;return _0x3c73ca;})['then'](respondWithFilteredResult(_0x1ab878,_0x25699c))['catch'](handleError(_0x1ab878,null));};exports['show']=function(_0x4c59c2,_0x5f1592){var _0xa401ca={'raw':!![],'where':{'id':_0x4c59c2[_0x6b76('0x3d')]['id']}},_0x578bff={};_0x578bff['model']=_[_0x6b76('0x3e')](db['VoiceDialReport'][_0x6b76('0x3f')]);_0x578bff[_0x6b76('0x29')]=_[_0x6b76('0x3e')](_0x4c59c2['query']);_0x578bff['filters']=_[_0x6b76('0x2b')](_0x578bff[_0x6b76('0x2d')],_0x578bff['query']);_0xa401ca[_0x6b76('0x2c')]=_[_0x6b76('0x2b')](_0x578bff[_0x6b76('0x2d')],qs[_0x6b76('0x2e')](_0x4c59c2[_0x6b76('0x29')][_0x6b76('0x2e')]));_0xa401ca['attributes']=_0xa401ca['attributes']['length']?_0xa401ca['attributes']:_0x578bff[_0x6b76('0x2d')];if(_0x4c59c2[_0x6b76('0x29')][_0x6b76('0x39')]){_0xa401ca[_0x6b76('0x3a')]=[{'all':!![]}];}_0xa401ca=_['merge']({},_0xa401ca,_0x4c59c2['options']);return db[_0x6b76('0x27')][_0x6b76('0x40')](_0xa401ca)['then'](handleEntityNotFound(_0x5f1592,null))[_0x6b76('0x22')](respondWithResult(_0x5f1592,null))['catch'](handleError(_0x5f1592,null));};exports[_0x6b76('0x41')]=function(_0x44d2b9,_0x5969e6){return db[_0x6b76('0x27')][_0x6b76('0x41')](_0x44d2b9[_0x6b76('0x42')],{})[_0x6b76('0x22')](respondWithResult(_0x5969e6,0xc9))[_0x6b76('0x43')](handleError(_0x5969e6,null));};exports[_0x6b76('0x21')]=function(_0x389140,_0x5c803b){if(_0x389140[_0x6b76('0x42')]['id']){delete _0x389140['body']['id'];}return db[_0x6b76('0x27')][_0x6b76('0x40')]({'where':{'id':_0x389140[_0x6b76('0x3d')]['id']}})[_0x6b76('0x22')](handleEntityNotFound(_0x5c803b,null))[_0x6b76('0x22')](saveUpdates(_0x389140['body'],null))[_0x6b76('0x22')](respondWithResult(_0x5c803b,null))['catch'](handleError(_0x5c803b,null));};exports[_0x6b76('0x23')]=function(_0x379015,_0x1d072a){return db[_0x6b76('0x27')][_0x6b76('0x40')]({'where':{'id':_0x379015['params']['id']}})[_0x6b76('0x22')](handleEntityNotFound(_0x1d072a,null))[_0x6b76('0x22')](removeEntity(_0x1d072a,null))[_0x6b76('0x43')](handleError(_0x1d072a,null));};exports[_0x6b76('0x44')]=function(_0x2ade00,_0x134a64){return db[_0x6b76('0x27')][_0x6b76('0x44')]()['then'](respondWithResult(_0x134a64,null))[_0x6b76('0x43')](handleError(_0x134a64,null));};
\ No newline at end of file
index cd9291c..c9b0d99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8cf=['report_dial','uniqueid','lodash','util','bluebird','request-promise','./voiceDialReport.attributes','exports','VoiceDialReport'];(function(_0x37bcb2,_0x519f43){var _0x37ad42=function(_0x43a729){while(--_0x43a729){_0x37bcb2['push'](_0x37bcb2['shift']());}};_0x37ad42(++_0x519f43);}(_0xe8cf,0xb6));var _0xfe8c=function(_0x543719,_0xea44b8){_0x543719=_0x543719-0x0;var _0x38bb38=_0xe8cf[_0x543719];return _0x38bb38;};'use strict';var _=require(_0xfe8c('0x0'));var util=require(_0xfe8c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xfe8c('0x2'));var rp=require(_0xfe8c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xfe8c('0x4'));module[_0xfe8c('0x5')]=function(_0x11ce91,_0x399f8){return _0x11ce91['define'](_0xfe8c('0x6'),attributes,{'tableName':_0xfe8c('0x7'),'paranoid':![],'indexes':[{'fields':[_0xfe8c('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7234=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','VoiceDialReport','report_dial','lodash','util'];(function(_0x3af979,_0x3f23df){var _0x2f170e=function(_0x29274e){while(--_0x29274e){_0x3af979['push'](_0x3af979['shift']());}};_0x2f170e(++_0x3f23df);}(_0x7234,0x172));var _0x4723=function(_0x4a2c65,_0x5c203b){_0x4a2c65=_0x4a2c65-0x0;var _0x546a1b=_0x7234[_0x4a2c65];return _0x546a1b;};'use strict';var _=require(_0x4723('0x0'));var util=require(_0x4723('0x1'));var logger=require(_0x4723('0x2'))(_0x4723('0x3'));var moment=require(_0x4723('0x4'));var BPromise=require('bluebird');var rp=require(_0x4723('0x5'));var fs=require('fs');var path=require(_0x4723('0x6'));var rimraf=require(_0x4723('0x7'));var config=require(_0x4723('0x8'));var attributes=require('./voiceDialReport.attributes');module[_0x4723('0x9')]=function(_0x2ae064,_0x84e6e3){return _0x2ae064['define'](_0x4723('0xa'),attributes,{'tableName':_0x4723('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index bb79004..00df637 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc0f=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','body','options','raw','CreateVoiceDialReport','catch','UpdateVoiceDialReport','where','attributes','limit','lodash','util','moment'];(function(_0x528b6a,_0x25994c){var _0x3968bd=function(_0x21d08f){while(--_0x21d08f){_0x528b6a['push'](_0x528b6a['shift']());}};_0x3968bd(++_0x25994c);}(_0xfc0f,0x17d));var _0xffc0=function(_0x4a3d5b,_0x2d4c74){_0x4a3d5b=_0x4a3d5b-0x0;var _0x5ed5a5=_0xfc0f[_0x4a3d5b];return _0x5ed5a5;};'use strict';var _=require(_0xffc0('0x0'));var util=require(_0xffc0('0x1'));var moment=require(_0xffc0('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xffc0('0x3'));var db=require(_0xffc0('0x4'))['db'];var utils=require(_0xffc0('0x5'));var logger=require(_0xffc0('0x6'))(_0xffc0('0x7'));var config=require('../../config/environment');var jayson=require(_0xffc0('0x8'));var client=jayson[_0xffc0('0x9')][_0xffc0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25e589,_0x1d0f4f,_0x2daa34){return new BPromise(function(_0x2fa8f9,_0x49e4df){return client[_0xffc0('0xb')](_0x25e589,_0x2daa34)[_0xffc0('0xc')](function(_0x885b2f){logger[_0xffc0('0xd')](_0xffc0('0xe'),_0x1d0f4f,_0xffc0('0xf'));logger[_0xffc0('0x10')](_0xffc0('0x11'),_0x1d0f4f,_0xffc0('0xf'),JSON[_0xffc0('0x12')](_0x885b2f));if(_0x885b2f[_0xffc0('0x13')]){if(_0x885b2f[_0xffc0('0x13')][_0xffc0('0x14')]===0x1f4){logger[_0xffc0('0x13')]('VoiceDialReport,\x20%s,\x20%s',_0x1d0f4f,_0x885b2f[_0xffc0('0x13')][_0xffc0('0x15')]);return _0x49e4df(_0x885b2f[_0xffc0('0x13')][_0xffc0('0x15')]);}logger[_0xffc0('0x13')](_0xffc0('0xe'),_0x1d0f4f,_0x885b2f['error'][_0xffc0('0x15')]);return _0x2fa8f9(_0x885b2f[_0xffc0('0x13')][_0xffc0('0x15')]);}else{logger['info'](_0xffc0('0xe'),_0x1d0f4f,_0xffc0('0xf'));_0x2fa8f9(_0x885b2f[_0xffc0('0x16')][_0xffc0('0x15')]);}})['catch'](function(_0x412f7e){logger[_0xffc0('0x13')]('VoiceDialReport,\x20%s,\x20%s',_0x1d0f4f,_0x412f7e);_0x49e4df(_0x412f7e);});});}exports['CreateVoiceDialReport']=function(_0x7cd2e6){var _0x1a750f=this;return new Promise(function(_0x260a7d,_0x181d7f){return db['VoiceDialReport']['create'](_0x7cd2e6[_0xffc0('0x17')],{'raw':_0x7cd2e6[_0xffc0('0x18')]?_0x7cd2e6['options'][_0xffc0('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x389dd6){logger[_0xffc0('0xd')](_0xffc0('0x1a'),_0x7cd2e6);logger['debug'](_0xffc0('0x1a'),_0x7cd2e6,JSON['stringify'](_0x389dd6));_0x260a7d(_0x389dd6);})[_0xffc0('0x1b')](function(_0xee5da4){logger[_0xffc0('0x13')](_0xffc0('0x1a'),_0xee5da4['message'],_0x7cd2e6);_0x181d7f(_0x1a750f[_0xffc0('0x13')](0x1f4,_0xee5da4[_0xffc0('0x15')]));});});};exports[_0xffc0('0x1c')]=function(_0x556dfc){var _0x4877c6=this;return new Promise(function(_0x599c82,_0x332785){return db['VoiceDialReport']['update'](_0x556dfc[_0xffc0('0x17')],{'raw':_0x556dfc[_0xffc0('0x18')]?_0x556dfc[_0xffc0('0x18')][_0xffc0('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x556dfc[_0xffc0('0x18')]?_0x556dfc[_0xffc0('0x18')][_0xffc0('0x1d')]||null:null,'attributes':_0x556dfc[_0xffc0('0x18')]?_0x556dfc[_0xffc0('0x18')][_0xffc0('0x1e')]||null:null,'limit':_0x556dfc[_0xffc0('0x18')]?_0x556dfc[_0xffc0('0x18')][_0xffc0('0x1f')]||null:null})[_0xffc0('0xc')](function(_0x186ec4){logger[_0xffc0('0xd')](_0xffc0('0x1c'),_0x556dfc);logger['debug']('UpdateVoiceDialReport',_0x556dfc,JSON[_0xffc0('0x12')](_0x186ec4));_0x599c82(_0x186ec4);})['catch'](function(_0x46eaec){logger[_0xffc0('0x13')](_0xffc0('0x1c'),_0x46eaec['message'],_0x556dfc);_0x332785(_0x4877c6[_0xffc0('0x13')](0x1f4,_0x46eaec[_0xffc0('0x15')]));});});};
\ No newline at end of file
+var _0xbb13=['limit','UpdateVoiceDialReport','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateVoiceDialReport','body','options','raw','update','where','attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbb13,0xc2));var _0x3bb1=function(_0x374164,_0x15df1d){_0x374164=_0x374164-0x0;var _0x27873b=_0xbb13[_0x374164];return _0x27873b;};'use strict';var _=require(_0x3bb1('0x0'));var util=require(_0x3bb1('0x1'));var moment=require(_0x3bb1('0x2'));var BPromise=require(_0x3bb1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3bb1('0x4'));var db=require(_0x3bb1('0x5'))['db'];var utils=require(_0x3bb1('0x6'));var logger=require(_0x3bb1('0x7'))('rpc');var config=require(_0x3bb1('0x8'));var jayson=require(_0x3bb1('0x9'));var client=jayson['client'][_0x3bb1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3407e,_0xa9945b,_0x4b1f73){return new BPromise(function(_0x3a4a2b,_0x41d4bc){return client['request'](_0x3407e,_0x4b1f73)[_0x3bb1('0xb')](function(_0x168c48){logger[_0x3bb1('0xc')](_0x3bb1('0xd'),_0xa9945b,_0x3bb1('0xe'));logger[_0x3bb1('0xf')](_0x3bb1('0x10'),_0xa9945b,_0x3bb1('0xe'),JSON[_0x3bb1('0x11')](_0x168c48));if(_0x168c48[_0x3bb1('0x12')]){if(_0x168c48[_0x3bb1('0x12')][_0x3bb1('0x13')]===0x1f4){logger['error']('VoiceDialReport,\x20%s,\x20%s',_0xa9945b,_0x168c48[_0x3bb1('0x12')]['message']);return _0x41d4bc(_0x168c48[_0x3bb1('0x12')][_0x3bb1('0x14')]);}logger['error'](_0x3bb1('0xd'),_0xa9945b,_0x168c48[_0x3bb1('0x12')][_0x3bb1('0x14')]);return _0x3a4a2b(_0x168c48['error'][_0x3bb1('0x14')]);}else{logger[_0x3bb1('0xc')](_0x3bb1('0xd'),_0xa9945b,_0x3bb1('0xe'));_0x3a4a2b(_0x168c48[_0x3bb1('0x15')][_0x3bb1('0x14')]);}})[_0x3bb1('0x16')](function(_0x7113aa){logger['error'](_0x3bb1('0xd'),_0xa9945b,_0x7113aa);_0x41d4bc(_0x7113aa);});});}exports[_0x3bb1('0x17')]=function(_0x4b4dec){var _0x36984f=this;return new Promise(function(_0x272fbe,_0x313ebd){return db['VoiceDialReport']['create'](_0x4b4dec[_0x3bb1('0x18')],{'raw':_0x4b4dec['options']?_0x4b4dec[_0x3bb1('0x19')][_0x3bb1('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x1dab45){logger[_0x3bb1('0xc')]('CreateVoiceDialReport',_0x4b4dec);logger['debug'](_0x3bb1('0x17'),_0x4b4dec,JSON[_0x3bb1('0x11')](_0x1dab45));_0x272fbe(_0x1dab45);})[_0x3bb1('0x16')](function(_0x2114d0){logger[_0x3bb1('0x12')](_0x3bb1('0x17'),_0x2114d0[_0x3bb1('0x14')],_0x4b4dec);_0x313ebd(_0x36984f[_0x3bb1('0x12')](0x1f4,_0x2114d0['message']));});});};exports['UpdateVoiceDialReport']=function(_0x6fa908){var _0x4c2c4a=this;return new Promise(function(_0x1ebb94,_0x2c456d){return db['VoiceDialReport'][_0x3bb1('0x1b')](_0x6fa908['body'],{'raw':_0x6fa908[_0x3bb1('0x19')]?_0x6fa908[_0x3bb1('0x19')][_0x3bb1('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6fa908[_0x3bb1('0x19')]?_0x6fa908['options'][_0x3bb1('0x1c')]||null:null,'attributes':_0x6fa908[_0x3bb1('0x19')]?_0x6fa908[_0x3bb1('0x19')][_0x3bb1('0x1d')]||null:null,'limit':_0x6fa908[_0x3bb1('0x19')]?_0x6fa908[_0x3bb1('0x19')][_0x3bb1('0x1e')]||null:null})[_0x3bb1('0xb')](function(_0x49a907){logger[_0x3bb1('0xc')](_0x3bb1('0x1f'),_0x6fa908);logger[_0x3bb1('0xf')](_0x3bb1('0x1f'),_0x6fa908,JSON[_0x3bb1('0x11')](_0x49a907));_0x1ebb94(_0x49a907);})[_0x3bb1('0x16')](function(_0x35fa70){logger[_0x3bb1('0x12')]('UpdateVoiceDialReport',_0x35fa70['message'],_0x6fa908);_0x2c456d(_0x4c2c4a['error'](0x1f4,_0x35fa70[_0x3bb1('0x14')]));});});};
\ No newline at end of file
index 34d231d..2b0d576 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f6b=['/:id/applications','addApplications','put','/:id','update','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','isAuthenticated','index','show','post','create'];(function(_0x162a78,_0x1c0fa9){var _0x4e22ae=function(_0x4e7b11){while(--_0x4e7b11){_0x162a78['push'](_0x162a78['shift']());}};_0x4e22ae(++_0x1c0fa9);}(_0x3f6b,0x1ab));var _0xb3f6=function(_0x3bc3fd,_0x4dd9b4){_0x3bc3fd=_0x3bc3fd-0x0;var _0x2bc389=_0x3f6b[_0x3bc3fd];return _0x2bc389;};'use strict';var multer=require('multer');var util=require(_0xb3f6('0x0'));var path=require(_0xb3f6('0x1'));var timeout=require(_0xb3f6('0x2'));var express=require('express');var router=express[_0xb3f6('0x3')]();var fs_extra=require(_0xb3f6('0x4'));var auth=require(_0xb3f6('0x5'));var interaction=require(_0xb3f6('0x6'));var config=require(_0xb3f6('0x7'));var controller=require(_0xb3f6('0x8'));router['get']('/',auth[_0xb3f6('0x9')](),controller[_0xb3f6('0xa')]);router['get']('/:id',auth[_0xb3f6('0x9')](),controller[_0xb3f6('0xb')]);router[_0xb3f6('0xc')]('/',auth[_0xb3f6('0x9')](),controller[_0xb3f6('0xd')]);router[_0xb3f6('0xc')](_0xb3f6('0xe'),auth[_0xb3f6('0x9')](),controller[_0xb3f6('0xf')]);router[_0xb3f6('0x10')](_0xb3f6('0x11'),auth[_0xb3f6('0x9')](),controller[_0xb3f6('0x12')]);router['delete'](_0xb3f6('0x11'),auth['isAuthenticated'](),controller[_0xb3f6('0x13')]);module[_0xb3f6('0x14')]=router;
\ No newline at end of file
+var _0xc504=['express','fs-extra','./voiceExtension.controller','get','isAuthenticated','index','/:id','show','post','create','/:id/applications','addApplications','put','update','destroy','exports','multer','util','connect-timeout'];(function(_0x259e77,_0x52f430){var _0x1f93bd=function(_0x3c9ffe){while(--_0x3c9ffe){_0x259e77['push'](_0x259e77['shift']());}};_0x1f93bd(++_0x52f430);}(_0xc504,0x140));var _0x4c50=function(_0x206e95,_0x3beb63){_0x206e95=_0x206e95-0x0;var _0x26c7e1=_0xc504[_0x206e95];return _0x26c7e1;};'use strict';var multer=require(_0x4c50('0x0'));var util=require(_0x4c50('0x1'));var path=require('path');var timeout=require(_0x4c50('0x2'));var express=require(_0x4c50('0x3'));var router=express['Router']();var fs_extra=require(_0x4c50('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4c50('0x5'));router[_0x4c50('0x6')]('/',auth[_0x4c50('0x7')](),controller[_0x4c50('0x8')]);router[_0x4c50('0x6')](_0x4c50('0x9'),auth[_0x4c50('0x7')](),controller[_0x4c50('0xa')]);router[_0x4c50('0xb')]('/',auth['isAuthenticated'](),controller[_0x4c50('0xc')]);router[_0x4c50('0xb')](_0x4c50('0xd'),auth[_0x4c50('0x7')](),controller[_0x4c50('0xe')]);router[_0x4c50('0xf')](_0x4c50('0x9'),auth[_0x4c50('0x7')](),controller[_0x4c50('0x10')]);router['delete'](_0x4c50('0x9'),auth[_0x4c50('0x7')](),controller[_0x4c50('0x11')]);module[_0x4c50('0x12')]=router;
\ No newline at end of file
index 98c00a6..3f55ec2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08d0=['outbound-fax','any','INTEGER','BOOLEAN','VIRTUAL','getDataValue','exten','sequelize','exports','compositeIndex','STRING','NoOp','ENUM','outbound'];(function(_0x410fa4,_0x594c00){var _0x4bd045=function(_0x201560){while(--_0x201560){_0x410fa4['push'](_0x410fa4['shift']());}};_0x4bd045(++_0x594c00);}(_0x08d0,0x13b));var _0x008d=function(_0x127824,_0x3b9518){_0x127824=_0x127824-0x0;var _0x6619ff=_0x08d0[_0x127824];return _0x6619ff;};'use strict';var Sequelize=require(_0x008d('0x0'));module[_0x008d('0x1')]={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x008d('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x008d('0x3')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0x008d('0x3')],'allowNull':![],'defaultValue':'1','unique':_0x008d('0x2')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x008d('0x3')],'allowNull':![],'defaultValue':_0x008d('0x4')},'appdata':{'type':Sequelize[_0x008d('0x3')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x008d('0x5')]('inbound',_0x008d('0x6'),'internal','inbound-fax',_0x008d('0x7'),'system',_0x008d('0x8')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize[_0x008d('0x9')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x008d('0x3')],'defaultValue':null},'callerID':{'type':Sequelize[_0x008d('0x3')],'allowNull':!![]},'record':{'type':Sequelize[_0x008d('0xa')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x008d('0x9')]},'recordingFormat':{'type':Sequelize[_0x008d('0x3')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x008d('0xa')],'defaultValue':!![]},'name':{'type':Sequelize[_0x008d('0xb')],'get':function(_0x57c675){return this[_0x008d('0xc')](_0x008d('0xd'));}},'alias':{'type':Sequelize[_0x008d('0x3')],'allowNull':!![]}};
\ No newline at end of file
+var _0x37f3=['system','any','*,*,*,*','INTEGER','wav','VIRTUAL','exten','sequelize','exports','STRING','compositeIndex','inbound','outbound','internal','inbound-fax'];(function(_0x4093c7,_0x5718fc){var _0x32ffbb=function(_0x52b26c){while(--_0x52b26c){_0x4093c7['push'](_0x4093c7['shift']());}};_0x32ffbb(++_0x5718fc);}(_0x37f3,0x151));var _0x337f=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0x37f3[_0x432fca];return _0x3adba4;};'use strict';var Sequelize=require(_0x337f('0x0'));module[_0x337f('0x1')]={'context':{'type':Sequelize[_0x337f('0x2')],'allowNull':![],'unique':_0x337f('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x337f('0x2')],'allowNull':![],'unique':_0x337f('0x3')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x337f('0x3')},'tag':{'type':Sequelize[_0x337f('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x337f('0x2')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0x337f('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM'](_0x337f('0x4'),_0x337f('0x5'),_0x337f('0x6'),_0x337f('0x7'),'outbound-fax',_0x337f('0x8'),_0x337f('0x9')),'allowNull':![]},'description':{'type':Sequelize[_0x337f('0x2')]},'interval':{'type':Sequelize[_0x337f('0x2')],'allowNull':![],'defaultValue':_0x337f('0xa')},'IntervalId':{'type':Sequelize[_0x337f('0xb')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x337f('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize[_0x337f('0x2')],'defaultValue':_0x337f('0xc')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0x337f('0xd')],'get':function(_0x226e62){return this['getDataValue'](_0x337f('0xe'));}},'alias':{'type':Sequelize[_0x337f('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 7069c0c..b5a042c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x003d=['pick','where','VIRTUAL','merge','options','includeAll','findAll','rows','show','params','VoiceExtension','find','catch','destroy','create','body','outbound','startsWith','exten','concat','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','internal','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','description','recordingFormat','mandatoryDisposition','addApplications','findOne','sequelize','VoiceExtensionId','isApp','rewriteDial','toLowerCase','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./voiceExtension.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','reject','save','update','then','get','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','filter','ignore','map','value','name','error','send','index','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters'];(function(_0x14ce11,_0x371307){var _0x593902=function(_0x2649cb){while(--_0x2649cb){_0x14ce11['push'](_0x14ce11['shift']());}};_0x593902(++_0x371307);}(_0x003d,0x1e6));var _0xd003=function(_0x45f379,_0x316872){_0x45f379=_0x45f379-0x0;var _0x397483=_0x003d[_0x45f379];return _0x397483;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd003('0x0'));var jsonpatch=require(_0xd003('0x1'));var rp=require(_0xd003('0x2'));var moment=require(_0xd003('0x3'));var BPromise=require(_0xd003('0x4'));var Mustache=require(_0xd003('0x5'));var util=require(_0xd003('0x6'));var path=require(_0xd003('0x7'));var sox=require(_0xd003('0x8'));var csv=require(_0xd003('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xd003('0xa'));var crypto=require(_0xd003('0xb'));var jsforce=require(_0xd003('0xc'));var deskjs=require(_0xd003('0xd'));var toCsv=require(_0xd003('0x9'));var querystring=require(_0xd003('0xe'));var Papa=require(_0xd003('0xf'));var Redis=require(_0xd003('0x10'));var authService=require(_0xd003('0x11'));var qs=require(_0xd003('0x12'));var as=require(_0xd003('0x13'));var hardwareService=require(_0xd003('0x14'));var logger=require('../../config/logger')(_0xd003('0x15'));var utils=require('../../config/utils');var config=require(_0xd003('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xd003('0x17'))['db'];config[_0xd003('0x18')]=_[_0xd003('0x19')](config[_0xd003('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0xd003('0x1a'))(new Redis(config[_0xd003('0x18')]));require(_0xd003('0x1b'))['register'](socket);function respondWithStatusCode(_0x395332,_0xb65abc){_0xb65abc=_0xb65abc||0xcc;return function(_0x1f8989){if(_0x1f8989){return _0x395332[_0xd003('0x1c')](_0xb65abc);}return _0x395332['status'](_0xb65abc)[_0xd003('0x1d')]();};}function respondWithResult(_0x3edec1,_0x4bdf41){_0x4bdf41=_0x4bdf41||0xc8;return function(_0xf5a746){if(_0xf5a746){return _0x3edec1[_0xd003('0x1e')](_0x4bdf41)[_0xd003('0x1f')](_0xf5a746);}};}function respondWithFilteredResult(_0x270c26,_0x1be39f){return function(_0x402845){if(_0x402845){var _0x1302d5=typeof _0x1be39f[_0xd003('0x20')]===_0xd003('0x21')&&typeof _0x1be39f[_0xd003('0x22')]===_0xd003('0x21');var _0x45acb8=_0x402845[_0xd003('0x23')];var _0x2101a1=_0x1302d5?0x0:_0x1be39f['offset'];var _0x5df8f1=_0x1302d5?_0x402845[_0xd003('0x23')]:_0x1be39f['offset']+_0x1be39f[_0xd003('0x22')];var _0x179081;if(_0x5df8f1>=_0x45acb8){_0x5df8f1=_0x45acb8;_0x179081=0xc8;}else{_0x179081=0xce;}_0x270c26[_0xd003('0x1e')](_0x179081);return _0x270c26[_0xd003('0x24')]('Content-Range',_0x2101a1+'-'+_0x5df8f1+'/'+_0x45acb8)['json'](_0x402845);}return null;};}function patchUpdates(_0x3e9589){return function(_0x1e20aa){try{jsonpatch['apply'](_0x1e20aa,_0x3e9589,!![]);}catch(_0x1ba93f){return BPromise[_0xd003('0x25')](_0x1ba93f);}return _0x1e20aa[_0xd003('0x26')]();};}function saveUpdates(_0x265e17,_0x102cfc){return function(_0x55787e){if(_0x55787e){return _0x55787e[_0xd003('0x27')](_0x265e17)[_0xd003('0x28')](function(_0x184cdb){return _0x184cdb;});}return null;};}function removeEntity(_0x5022bf,_0x46bc11){return function(_0x450ba3){if(_0x450ba3){return _0x450ba3['destroy']()[_0xd003('0x28')](function(){var _0x4d2f90=_0x450ba3[_0xd003('0x29')]({'plain':!![]});var _0x5d53fd=[{'name':_0xd003('0x2a'),'value':_0xd003('0x2b'),'ignore':![]},{'name':_0xd003('0x2c'),'value':'outbound','ignore':![]},{'name':_0xd003('0x2d'),'value':'internal','ignore':![]}];var _0x483a71=_(_0x5d53fd)[_0xd003('0x2e')](_0xd003('0x2f'))[_0xd003('0x30')](_0xd003('0x31'))['value']();if(_['includes'](_0x483a71,_0x4d2f90['type'])){return;}var _0x1a11a1=_['find'](_0x5d53fd,[_0xd003('0x31'),_0x4d2f90['type']])[_0xd003('0x32')];return db['UserProfileResource']['destroy']({'where':{'type':_0x1a11a1,'resourceId':_0x4d2f90['id']}})[_0xd003('0x28')](function(){return _0x450ba3;});})[_0xd003('0x28')](function(){_0x5022bf[_0xd003('0x1e')](0xcc)[_0xd003('0x1d')]();});}};}function handleEntityNotFound(_0x332e9d,_0x101eea){return function(_0x2690dd){if(!_0x2690dd){_0x332e9d['sendStatus'](0x194);}return _0x2690dd;};}function handleError(_0x3c557f,_0x35599a){_0x35599a=_0x35599a||0x1f4;return function(_0x376b0c){logger[_0xd003('0x33')](_0x376b0c['stack']);if(_0x376b0c['name']){delete _0x376b0c['name'];}_0x3c557f['status'](_0x35599a)[_0xd003('0x34')](_0x376b0c);};}exports[_0xd003('0x35')]=function(_0x4a541d,_0x20368c){var _0x192126={},_0x3bae6a={},_0x59e1a7={'count':0x0,'rows':[]};var _0x51070b=_['map'](db['VoiceExtension'][_0xd003('0x36')],function(_0x2d7be7){return{'name':_0x2d7be7[_0xd003('0x37')],'type':_0x2d7be7[_0xd003('0x38')]['key']};});_0x3bae6a['model']=_[_0xd003('0x30')](_0x51070b,_0xd003('0x32'));_0x3bae6a[_0xd003('0x39')]=_[_0xd003('0x3a')](_0x4a541d[_0xd003('0x39')]);_0x3bae6a['filters']=_[_0xd003('0x3b')](_0x3bae6a[_0xd003('0x3c')],_0x3bae6a[_0xd003('0x39')]);_0x192126[_0xd003('0x3d')]=_['intersection'](_0x3bae6a[_0xd003('0x3c')],qs[_0xd003('0x3e')](_0x4a541d['query'][_0xd003('0x3e')]));_0x192126[_0xd003('0x3d')]=_0x192126[_0xd003('0x3d')][_0xd003('0x3f')]?_0x192126['attributes']:_0x3bae6a[_0xd003('0x3c')];if(!_0x4a541d[_0xd003('0x39')][_0xd003('0x40')](_0xd003('0x41'))){_0x192126[_0xd003('0x22')]=qs[_0xd003('0x22')](_0x4a541d[_0xd003('0x39')]['limit']);_0x192126[_0xd003('0x20')]=qs['offset'](_0x4a541d[_0xd003('0x39')]['offset']);}_0x192126[_0xd003('0x42')]=qs[_0xd003('0x43')](_0x4a541d[_0xd003('0x39')][_0xd003('0x43')]);_0x192126['where']=qs[_0xd003('0x44')](_[_0xd003('0x45')](_0x4a541d[_0xd003('0x39')],_0x3bae6a[_0xd003('0x44')]),_0x51070b);if(_0x4a541d['query'][_0xd003('0x2e')]){_0x192126[_0xd003('0x46')]=_['merge'](_0x192126[_0xd003('0x46')],{'$or':_[_0xd003('0x30')](_0x51070b,function(_0x32c143){if(_0x32c143[_0xd003('0x38')]!==_0xd003('0x47')){var _0x385965={};_0x385965[_0x32c143['name']]={'$like':'%'+_0x4a541d[_0xd003('0x39')]['filter']+'%'};return _0x385965;}})});}_0x192126=_[_0xd003('0x48')]({},_0x192126,_0x4a541d[_0xd003('0x49')]);var _0x184dc8={'where':_0x192126['where']};return db['VoiceExtension']['count'](_0x184dc8)[_0xd003('0x28')](function(_0x65d3b0){_0x59e1a7[_0xd003('0x23')]=_0x65d3b0;if(_0x4a541d[_0xd003('0x39')][_0xd003('0x4a')]){_0x192126['include']=[{'all':!![]}];}return db['VoiceExtension'][_0xd003('0x4b')](_0x192126);})[_0xd003('0x28')](function(_0x3b3175){_0x59e1a7[_0xd003('0x4c')]=_0x3b3175;return _0x59e1a7;})[_0xd003('0x28')](respondWithFilteredResult(_0x20368c,_0x192126))['catch'](handleError(_0x20368c,null));};exports[_0xd003('0x4d')]=function(_0x1fed4a,_0x178f31){var _0x3ca980={'raw':![],'where':{'id':_0x1fed4a[_0xd003('0x4e')]['id']}},_0x334065={};_0x334065['model']=_[_0xd003('0x3a')](db[_0xd003('0x4f')][_0xd003('0x36')]);_0x334065['query']=_['keys'](_0x1fed4a[_0xd003('0x39')]);_0x334065[_0xd003('0x44')]=_[_0xd003('0x3b')](_0x334065[_0xd003('0x3c')],_0x334065[_0xd003('0x39')]);_0x3ca980[_0xd003('0x3d')]=_[_0xd003('0x3b')](_0x334065[_0xd003('0x3c')],qs[_0xd003('0x3e')](_0x1fed4a['query'][_0xd003('0x3e')]));_0x3ca980[_0xd003('0x3d')]=_0x3ca980[_0xd003('0x3d')][_0xd003('0x3f')]?_0x3ca980[_0xd003('0x3d')]:_0x334065['model'];if(_0x1fed4a[_0xd003('0x39')]['includeAll']){_0x3ca980['include']=[{'all':!![]}];}_0x3ca980=_['merge']({},_0x3ca980,_0x1fed4a[_0xd003('0x49')]);return db['VoiceExtension'][_0xd003('0x50')](_0x3ca980)[_0xd003('0x28')](handleEntityNotFound(_0x178f31,null))[_0xd003('0x28')](respondWithResult(_0x178f31,null))[_0xd003('0x51')](handleError(_0x178f31,null));};exports[_0xd003('0x52')]=function(_0xfa0475,_0xa953d2){return db['VoiceExtension'][_0xd003('0x50')]({'where':{'id':_0xfa0475[_0xd003('0x4e')]['id']}})[_0xd003('0x28')](handleEntityNotFound(_0xa953d2,null))[_0xd003('0x28')](removeEntity(_0xa953d2,null))[_0xd003('0x51')](handleError(_0xa953d2,null));};exports[_0xd003('0x53')]=function(_0x32ab66,_0x48e142){if(_0x32ab66[_0xd003('0x54')][_0xd003('0x38')]===_0xd003('0x55')&&!_[_0xd003('0x56')](_0x32ab66[_0xd003('0x54')][_0xd003('0x57')],'_')){_0x32ab66['body'][_0xd003('0x57')]='_'[_0xd003('0x58')](_0x32ab66['body'][_0xd003('0x57')]);}return db[_0xd003('0x4f')][_0xd003('0x53')](_0x32ab66[_0xd003('0x54')],{'raw':![]})[_0xd003('0x28')](function(_0xee69f7){var _0xb79924=_0x32ab66['user'][_0xd003('0x29')]({'plain':!![]});if(!_0xb79924)throw new Error(_0xd003('0x59'));if(_0xb79924['role']===_0xd003('0x5a')){var _0x1ca0b0=_0xee69f7['get']({'plain':!![]});var _0xc7a665=[{'name':'InboundRoutes','value':_0xd003('0x2b')},{'name':_0xd003('0x2c'),'value':_0xd003('0x55')},{'name':_0xd003('0x2d'),'value':_0xd003('0x5b')}];var _0x18f264=_[_0xd003('0x50')](_0xc7a665,[_0xd003('0x31'),_0x1ca0b0['type']])[_0xd003('0x32')];return db[_0xd003('0x5c')][_0xd003('0x50')]({'where':{'name':_0x18f264,'userProfileId':_0xb79924['userProfileId']},'raw':!![]})[_0xd003('0x28')](function(_0x313ffb){if(_0x313ffb&&_0x313ffb[_0xd003('0x5d')]===0x0){return db[_0xd003('0x5e')]['create']({'name':_0x1ca0b0[_0xd003('0x32')],'resourceId':_0x1ca0b0['id'],'type':_0x313ffb[_0xd003('0x32')],'sectionId':_0x313ffb['id']},{})['then'](function(){return _0xee69f7;});}else{return _0xee69f7;}})[_0xd003('0x51')](function(_0xdb8a0d){logger[_0xd003('0x33')](_0xd003('0x5f'),_0xdb8a0d);throw _0xdb8a0d;});}return _0xee69f7;})['then'](respondWithResult(_0x48e142,0xc9))[_0xd003('0x51')](handleError(_0x48e142,null));};exports[_0xd003('0x27')]=function(_0x32d8b0,_0x57ca99){if(_0x32d8b0[_0xd003('0x54')]['id']){delete _0x32d8b0[_0xd003('0x54')]['id'];}return db[_0xd003('0x4f')][_0xd003('0x50')]({'where':{'id':_0x32d8b0[_0xd003('0x4e')]['id']}})[_0xd003('0x28')](handleEntityNotFound(_0x57ca99,null))[_0xd003('0x28')](function(_0x144d58){if(_0x144d58){return db[_0xd003('0x4f')][_0xd003('0x27')](_[_0xd003('0x45')](_0x32d8b0[_0xd003('0x54')],[_0xd003('0x57'),_0xd003('0x60'),_0xd003('0x61'),_0xd003('0x62'),'cutdigits',_0xd003('0x63'),'alias']),{'where':{'context':_0x144d58[_0xd003('0x60')],'exten':_0x144d58[_0xd003('0x57')]},'individualHooks':!![]})[_0xd003('0x28')](function(_0x165c89){return _0x165c89;});}return null;})[_0xd003('0x28')](respondWithStatusCode(_0x57ca99,null))[_0xd003('0x51')](handleError(_0x57ca99,null));};exports[_0xd003('0x64')]=function(_0x22b909,_0x121950){return db['VoiceExtension'][_0xd003('0x65')]({'where':{'id':_0x22b909[_0xd003('0x4e')]['id']}})['then'](function(_0x32e987){if(_0x32e987){return db[_0xd003('0x66')]['transaction'](function(_0x441668){return db['VoiceExtension'][_0xd003('0x52')]({'where':{'VoiceExtensionId':_0x22b909['params']['id']},'transaction':_0x441668})[_0xd003('0x28')](function(){var _0x437b33=_[_0xd003('0x30')](_0x22b909['body'],function(_0x1a17b2){_0x1a17b2[_0xd003('0x67')]=_0x22b909[_0xd003('0x4e')]['id'];_0x1a17b2[_0xd003('0x68')]=!![];return _0x1a17b2;});var _0x140ffa=_0x22b909[_0xd003('0x39')][_0xd003('0x69')]&&_0x22b909[_0xd003('0x39')][_0xd003('0x69')][_0xd003('0x6a')]()==='true'?!![]:![];return _0x32e987[_0xd003('0x6b')](_0x437b33,_0x140ffa);})['then'](function(_0x510b19){return db[_0xd003('0x4f')][_0xd003('0x6c')](_0x510b19,{'transaction':_0x441668});});})[_0xd003('0x28')](function(){return db[_0xd003('0x4f')][_0xd003('0x6d')]({'where':{'isApp':!![],'VoiceExtensionId':_0x22b909['params']['id']},'order':_0xd003('0x6e')});});}})[_0xd003('0x28')](respondWithResult(_0x121950,null))[_0xd003('0x51')](handleError(_0x121950,null));};
\ No newline at end of file
+var _0x8ee9=['./voiceExtension.socket','register','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','destroy','then','get','inbound','OutboundRoutes','outbound','InternalRoutes','internal','ignore','map','value','includes','type','find','name','UserProfileResource','end','stack','send','index','VoiceExtension','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','rawAttributes','params','create','body','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','InboundRoutes','pick','context','recordingFormat','cutdigits','alias','addApplications','findOne','sequelize','VoiceExtensionId','isApp','rewriteDial','true','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults'];(function(_0x383158,_0x415e43){var _0x507985=function(_0x1e498e){while(--_0x1e498e){_0x383158['push'](_0x383158['shift']());}};_0x507985(++_0x415e43);}(_0x8ee9,0xc3));var _0x98ee=function(_0x490faa,_0x3c3f4d){_0x490faa=_0x490faa-0x0;var _0x190cce=_0x8ee9[_0x490faa];return _0x190cce;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x98ee('0x0'));var jsonpatch=require(_0x98ee('0x1'));var rp=require(_0x98ee('0x2'));var moment=require(_0x98ee('0x3'));var BPromise=require(_0x98ee('0x4'));var Mustache=require(_0x98ee('0x5'));var util=require(_0x98ee('0x6'));var path=require(_0x98ee('0x7'));var sox=require(_0x98ee('0x8'));var csv=require(_0x98ee('0x9'));var ejs=require(_0x98ee('0xa'));var fs=require('fs');var fs_extra=require(_0x98ee('0xb'));var _=require(_0x98ee('0xc'));var squel=require('squel');var crypto=require(_0x98ee('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x98ee('0x9'));var querystring=require(_0x98ee('0xe'));var Papa=require(_0x98ee('0xf'));var Redis=require(_0x98ee('0x10'));var authService=require(_0x98ee('0x11'));var qs=require(_0x98ee('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x98ee('0x13'))('api');var utils=require(_0x98ee('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x98ee('0x15'));var db=require(_0x98ee('0x16'))['db'];config[_0x98ee('0x17')]=_[_0x98ee('0x18')](config[_0x98ee('0x17')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x98ee('0x19'))[_0x98ee('0x1a')](socket);function respondWithStatusCode(_0x5928c4,_0x317425){_0x317425=_0x317425||0xcc;return function(_0x133ed0){if(_0x133ed0){return _0x5928c4[_0x98ee('0x1b')](_0x317425);}return _0x5928c4[_0x98ee('0x1c')](_0x317425)['end']();};}function respondWithResult(_0x278f75,_0x524917){_0x524917=_0x524917||0xc8;return function(_0xa705f0){if(_0xa705f0){return _0x278f75['status'](_0x524917)[_0x98ee('0x1d')](_0xa705f0);}};}function respondWithFilteredResult(_0x14de4d,_0x286fb1){return function(_0x4faafb){if(_0x4faafb){var _0x172bd4=typeof _0x286fb1['offset']===_0x98ee('0x1e')&&typeof _0x286fb1[_0x98ee('0x1f')]==='undefined';var _0x396e13=_0x4faafb[_0x98ee('0x20')];var _0x3cb695=_0x172bd4?0x0:_0x286fb1[_0x98ee('0x21')];var _0x261049=_0x172bd4?_0x4faafb[_0x98ee('0x20')]:_0x286fb1[_0x98ee('0x21')]+_0x286fb1[_0x98ee('0x1f')];var _0xe7c278;if(_0x261049>=_0x396e13){_0x261049=_0x396e13;_0xe7c278=0xc8;}else{_0xe7c278=0xce;}_0x14de4d[_0x98ee('0x1c')](_0xe7c278);return _0x14de4d['set'](_0x98ee('0x22'),_0x3cb695+'-'+_0x261049+'/'+_0x396e13)['json'](_0x4faafb);}return null;};}function patchUpdates(_0x2c518e){return function(_0x49907c){try{jsonpatch[_0x98ee('0x23')](_0x49907c,_0x2c518e,!![]);}catch(_0x7466d0){return BPromise[_0x98ee('0x24')](_0x7466d0);}return _0x49907c[_0x98ee('0x25')]();};}function saveUpdates(_0xa05c13,_0x38b894){return function(_0xb5e73e){if(_0xb5e73e){return _0xb5e73e[_0x98ee('0x26')](_0xa05c13)['then'](function(_0x29c93e){return _0x29c93e;});}return null;};}function removeEntity(_0x2b2551,_0x30f2dc){return function(_0x49d714){if(_0x49d714){return _0x49d714[_0x98ee('0x27')]()[_0x98ee('0x28')](function(){var _0x26ebe8=_0x49d714[_0x98ee('0x29')]({'plain':!![]});var _0x22c605=[{'name':'InboundRoutes','value':_0x98ee('0x2a'),'ignore':![]},{'name':_0x98ee('0x2b'),'value':_0x98ee('0x2c'),'ignore':![]},{'name':_0x98ee('0x2d'),'value':_0x98ee('0x2e'),'ignore':![]}];var _0x2607e5=_(_0x22c605)['filter'](_0x98ee('0x2f'))[_0x98ee('0x30')](_0x98ee('0x31'))['value']();if(_[_0x98ee('0x32')](_0x2607e5,_0x26ebe8[_0x98ee('0x33')])){return;}var _0xc313d5=_[_0x98ee('0x34')](_0x22c605,[_0x98ee('0x31'),_0x26ebe8['type']])[_0x98ee('0x35')];return db[_0x98ee('0x36')]['destroy']({'where':{'type':_0xc313d5,'resourceId':_0x26ebe8['id']}})[_0x98ee('0x28')](function(){return _0x49d714;});})[_0x98ee('0x28')](function(){_0x2b2551[_0x98ee('0x1c')](0xcc)[_0x98ee('0x37')]();});}};}function handleEntityNotFound(_0x528a7b,_0x5c0118){return function(_0x386fa2){if(!_0x386fa2){_0x528a7b[_0x98ee('0x1b')](0x194);}return _0x386fa2;};}function handleError(_0x5eae48,_0x137d2d){_0x137d2d=_0x137d2d||0x1f4;return function(_0x3f280d){logger['error'](_0x3f280d[_0x98ee('0x38')]);if(_0x3f280d['name']){delete _0x3f280d[_0x98ee('0x35')];}_0x5eae48[_0x98ee('0x1c')](_0x137d2d)[_0x98ee('0x39')](_0x3f280d);};}exports[_0x98ee('0x3a')]=function(_0x527fe4,_0x3ffedb){var _0x4c9b31={},_0x120c4b={},_0x603867={'count':0x0,'rows':[]};var _0x36bd10=_[_0x98ee('0x30')](db[_0x98ee('0x3b')]['rawAttributes'],function(_0x3c99f9){return{'name':_0x3c99f9['fieldName'],'type':_0x3c99f9['type'][_0x98ee('0x3c')]};});_0x120c4b['model']=_['map'](_0x36bd10,'name');_0x120c4b[_0x98ee('0x3d')]=_[_0x98ee('0x3e')](_0x527fe4[_0x98ee('0x3d')]);_0x120c4b[_0x98ee('0x3f')]=_[_0x98ee('0x40')](_0x120c4b[_0x98ee('0x41')],_0x120c4b[_0x98ee('0x3d')]);_0x4c9b31[_0x98ee('0x42')]=_['intersection'](_0x120c4b['model'],qs['fields'](_0x527fe4[_0x98ee('0x3d')][_0x98ee('0x43')]));_0x4c9b31[_0x98ee('0x42')]=_0x4c9b31['attributes'][_0x98ee('0x44')]?_0x4c9b31[_0x98ee('0x42')]:_0x120c4b[_0x98ee('0x41')];if(!_0x527fe4['query'][_0x98ee('0x45')](_0x98ee('0x46'))){_0x4c9b31['limit']=qs[_0x98ee('0x1f')](_0x527fe4[_0x98ee('0x3d')]['limit']);_0x4c9b31[_0x98ee('0x21')]=qs[_0x98ee('0x21')](_0x527fe4['query'][_0x98ee('0x21')]);}_0x4c9b31[_0x98ee('0x47')]=qs[_0x98ee('0x48')](_0x527fe4[_0x98ee('0x3d')][_0x98ee('0x48')]);_0x4c9b31[_0x98ee('0x49')]=qs[_0x98ee('0x3f')](_['pick'](_0x527fe4[_0x98ee('0x3d')],_0x120c4b[_0x98ee('0x3f')]),_0x36bd10);if(_0x527fe4[_0x98ee('0x3d')][_0x98ee('0x4a')]){_0x4c9b31[_0x98ee('0x49')]=_[_0x98ee('0x4b')](_0x4c9b31[_0x98ee('0x49')],{'$or':_[_0x98ee('0x30')](_0x36bd10,function(_0x1482e7){if(_0x1482e7[_0x98ee('0x33')]!==_0x98ee('0x4c')){var _0x4f0581={};_0x4f0581[_0x1482e7['name']]={'$like':'%'+_0x527fe4[_0x98ee('0x3d')][_0x98ee('0x4a')]+'%'};return _0x4f0581;}})});}_0x4c9b31=_[_0x98ee('0x4b')]({},_0x4c9b31,_0x527fe4[_0x98ee('0x4d')]);var _0x4aca1c={'where':_0x4c9b31[_0x98ee('0x49')]};return db[_0x98ee('0x3b')][_0x98ee('0x20')](_0x4aca1c)['then'](function(_0x590828){_0x603867[_0x98ee('0x20')]=_0x590828;if(_0x527fe4[_0x98ee('0x3d')][_0x98ee('0x4e')]){_0x4c9b31[_0x98ee('0x4f')]=[{'all':!![]}];}return db[_0x98ee('0x3b')][_0x98ee('0x50')](_0x4c9b31);})[_0x98ee('0x28')](function(_0x57911e){_0x603867[_0x98ee('0x51')]=_0x57911e;return _0x603867;})[_0x98ee('0x28')](respondWithFilteredResult(_0x3ffedb,_0x4c9b31))[_0x98ee('0x52')](handleError(_0x3ffedb,null));};exports['show']=function(_0x365a7f,_0x472c83){var _0x277b31={'raw':![],'where':{'id':_0x365a7f['params']['id']}},_0x567e02={};_0x567e02['model']=_[_0x98ee('0x3e')](db[_0x98ee('0x3b')][_0x98ee('0x53')]);_0x567e02['query']=_['keys'](_0x365a7f['query']);_0x567e02['filters']=_[_0x98ee('0x40')](_0x567e02[_0x98ee('0x41')],_0x567e02['query']);_0x277b31['attributes']=_[_0x98ee('0x40')](_0x567e02[_0x98ee('0x41')],qs[_0x98ee('0x43')](_0x365a7f[_0x98ee('0x3d')][_0x98ee('0x43')]));_0x277b31[_0x98ee('0x42')]=_0x277b31['attributes'][_0x98ee('0x44')]?_0x277b31['attributes']:_0x567e02[_0x98ee('0x41')];if(_0x365a7f[_0x98ee('0x3d')][_0x98ee('0x4e')]){_0x277b31[_0x98ee('0x4f')]=[{'all':!![]}];}_0x277b31=_[_0x98ee('0x4b')]({},_0x277b31,_0x365a7f['options']);return db[_0x98ee('0x3b')]['find'](_0x277b31)[_0x98ee('0x28')](handleEntityNotFound(_0x472c83,null))['then'](respondWithResult(_0x472c83,null))[_0x98ee('0x52')](handleError(_0x472c83,null));};exports[_0x98ee('0x27')]=function(_0x3b7696,_0x4612a2){return db[_0x98ee('0x3b')]['find']({'where':{'id':_0x3b7696[_0x98ee('0x54')]['id']}})[_0x98ee('0x28')](handleEntityNotFound(_0x4612a2,null))['then'](removeEntity(_0x4612a2,null))[_0x98ee('0x52')](handleError(_0x4612a2,null));};exports[_0x98ee('0x55')]=function(_0x3dc24b,_0xedd670){if(_0x3dc24b[_0x98ee('0x56')][_0x98ee('0x33')]===_0x98ee('0x2c')&&!_[_0x98ee('0x57')](_0x3dc24b[_0x98ee('0x56')][_0x98ee('0x58')],'_')){_0x3dc24b[_0x98ee('0x56')][_0x98ee('0x58')]='_'[_0x98ee('0x59')](_0x3dc24b[_0x98ee('0x56')]['exten']);}return db['VoiceExtension'][_0x98ee('0x55')](_0x3dc24b['body'],{'raw':![]})[_0x98ee('0x28')](function(_0x1d0a03){var _0x579d38=_0x3dc24b[_0x98ee('0x5a')][_0x98ee('0x29')]({'plain':!![]});if(!_0x579d38)throw new Error(_0x98ee('0x5b'));if(_0x579d38[_0x98ee('0x5c')]===_0x98ee('0x5a')){var _0x597f91=_0x1d0a03['get']({'plain':!![]});var _0x456d98=[{'name':_0x98ee('0x5d'),'value':_0x98ee('0x2a')},{'name':'OutboundRoutes','value':_0x98ee('0x2c')},{'name':_0x98ee('0x2d'),'value':_0x98ee('0x2e')}];var _0x29292c=_[_0x98ee('0x34')](_0x456d98,[_0x98ee('0x31'),_0x597f91[_0x98ee('0x33')]])[_0x98ee('0x35')];return db['UserProfileSection'][_0x98ee('0x34')]({'where':{'name':_0x29292c,'userProfileId':_0x579d38['userProfileId']},'raw':!![]})['then'](function(_0x3b6939){if(_0x3b6939&&_0x3b6939['autoAssociation']===0x0){return db['UserProfileResource'][_0x98ee('0x55')]({'name':_0x597f91[_0x98ee('0x35')],'resourceId':_0x597f91['id'],'type':_0x3b6939[_0x98ee('0x35')],'sectionId':_0x3b6939['id']},{})['then'](function(){return _0x1d0a03;});}else{return _0x1d0a03;}})['catch'](function(_0x509fb5){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x509fb5);throw _0x509fb5;});}return _0x1d0a03;})[_0x98ee('0x28')](respondWithResult(_0xedd670,0xc9))[_0x98ee('0x52')](handleError(_0xedd670,null));};exports['update']=function(_0x17754f,_0x3e1722){if(_0x17754f[_0x98ee('0x56')]['id']){delete _0x17754f[_0x98ee('0x56')]['id'];}return db[_0x98ee('0x3b')][_0x98ee('0x34')]({'where':{'id':_0x17754f[_0x98ee('0x54')]['id']}})['then'](handleEntityNotFound(_0x3e1722,null))[_0x98ee('0x28')](function(_0x11715e){if(_0x11715e){return db[_0x98ee('0x3b')]['update'](_[_0x98ee('0x5e')](_0x17754f['body'],[_0x98ee('0x58'),_0x98ee('0x5f'),'description',_0x98ee('0x60'),_0x98ee('0x61'),'mandatoryDisposition',_0x98ee('0x62')]),{'where':{'context':_0x11715e['context'],'exten':_0x11715e[_0x98ee('0x58')]},'individualHooks':!![]})['then'](function(_0x4a2474){return _0x4a2474;});}return null;})[_0x98ee('0x28')](respondWithStatusCode(_0x3e1722,null))[_0x98ee('0x52')](handleError(_0x3e1722,null));};exports[_0x98ee('0x63')]=function(_0x921a8,_0x6661e5){return db[_0x98ee('0x3b')][_0x98ee('0x64')]({'where':{'id':_0x921a8[_0x98ee('0x54')]['id']}})[_0x98ee('0x28')](function(_0x8bccbe){if(_0x8bccbe){return db[_0x98ee('0x65')]['transaction'](function(_0x11bba4){return db[_0x98ee('0x3b')]['destroy']({'where':{'VoiceExtensionId':_0x921a8['params']['id']},'transaction':_0x11bba4})[_0x98ee('0x28')](function(){var _0x360a33=_[_0x98ee('0x30')](_0x921a8[_0x98ee('0x56')],function(_0x44bd3d){_0x44bd3d[_0x98ee('0x66')]=_0x921a8['params']['id'];_0x44bd3d[_0x98ee('0x67')]=!![];return _0x44bd3d;});var _0x211023=_0x921a8['query'][_0x98ee('0x68')]&&_0x921a8[_0x98ee('0x3d')][_0x98ee('0x68')]['toLowerCase']()===_0x98ee('0x69')?!![]:![];return _0x8bccbe[_0x98ee('0x6a')](_0x360a33,_0x211023);})[_0x98ee('0x28')](function(_0x5a8c31){return db[_0x98ee('0x3b')][_0x98ee('0x6b')](_0x5a8c31,{'transaction':_0x11bba4});});})[_0x98ee('0x28')](function(){return db[_0x98ee('0x3b')][_0x98ee('0x6c')]({'where':{'isApp':!![],'VoiceExtensionId':_0x921a8[_0x98ee('0x54')]['id']},'order':_0x98ee('0x6d')});});}})[_0x98ee('0x28')](respondWithResult(_0x6661e5,null))[_0x98ee('0x52')](handleError(_0x6661e5,null));};
\ No newline at end of file
index 9424df3..66acc40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e2f=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','VoiceExtension','save'];(function(_0x2bcd6f,_0x5ee0db){var _0x53b8bf=function(_0x364fcb){while(--_0x364fcb){_0x2bcd6f['push'](_0x2bcd6f['shift']());}};_0x53b8bf(++_0x5ee0db);}(_0x3e2f,0x1ac));var _0xf3e2=function(_0x2f37e0,_0x393ef9){_0x2f37e0=_0x2f37e0-0x0;var _0x43ccce=_0x3e2f[_0x2f37e0];return _0x43ccce;};'use strict';var EventEmitter=require(_0xf3e2('0x0'));var VoiceExtension=require(_0xf3e2('0x1'))['db'][_0xf3e2('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf3e2('0x3'),'afterUpdate':_0xf3e2('0x4'),'afterDestroy':'remove'};function emitEvent(_0x290d47){return function(_0x34e500,_0x19b8d1,_0x731576){VoiceExtensionEvents[_0xf3e2('0x5')](_0x290d47+':'+_0x34e500['id'],_0x34e500);VoiceExtensionEvents['emit'](_0x290d47,_0x34e500);_0x731576(null);};}for(var e in events){if(events[_0xf3e2('0x6')](e)){var event=events[e];VoiceExtension[_0xf3e2('0x7')](e,emitEvent(event));}}module[_0xf3e2('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x21f2=['save','update','emit','hasOwnProperty','events','../../mysqldb','VoiceExtension'];(function(_0x36402b,_0x17be28){var _0x35002c=function(_0x23f5b6){while(--_0x23f5b6){_0x36402b['push'](_0x36402b['shift']());}};_0x35002c(++_0x17be28);}(_0x21f2,0x66));var _0x221f=function(_0x449653,_0x596ddf){_0x449653=_0x449653-0x0;var _0x11b7cd=_0x21f2[_0x449653];return _0x11b7cd;};'use strict';var EventEmitter=require(_0x221f('0x0'));var VoiceExtension=require(_0x221f('0x1'))['db'][_0x221f('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x221f('0x3'),'afterUpdate':_0x221f('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4c231f){return function(_0x367ef8,_0x378c1e,_0x2bac56){VoiceExtensionEvents[_0x221f('0x5')](_0x4c231f+':'+_0x367ef8['id'],_0x367ef8);VoiceExtensionEvents[_0x221f('0x5')](_0x4c231f,_0x367ef8);_0x2bac56(null);};}for(var e in events){if(events[_0x221f('0x6')](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
index 497f63c..a595450 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cb6=['voice_extensions','Hangup','util','lodash','exports','models','type','Set','CDR(type)=','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','context','exten','inbound','push','CDR(routeid)=','XCALLY-MOTION-PROGRESS=0','outbound','CDR(destination)=','cutdigits','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','trunk','options','split','name','param','phone','prefix','SIP','join','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','findAll','interval','IntervalId','then','length','*,*,*,*','intervals','map','filter','toLowerCase','CDR(tag)=','tag','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','queue','playback','app','appType','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','outboundDial','appdata','priority','last','concat','catch','VoiceExtension'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x9cb6,0xf2));var _0x69cb=function(_0x443ed1,_0x1bf953){_0x443ed1=_0x443ed1-0x0;var _0x586a50=_0x9cb6[_0x443ed1];return _0x586a50;};'use strict';var util=require(_0x69cb('0x0'));var _=require(_0x69cb('0x1'));var attributes=require('./voiceExtension.attributes');module[_0x69cb('0x2')]=function(_0x50ab03){var _0x39472f=_0x50ab03[_0x69cb('0x3')];function _0x336c91(_0x266ed3){var _0x2ce0e9=0x2;var _0x5f722c=[{'type':_0x266ed3[_0x69cb('0x4')],'app':_0x69cb('0x5'),'appdata':_0x69cb('0x6')+_0x266ed3[_0x69cb('0x4')],'context':_0x266ed3['context'],'exten':_0x266ed3['exten'],'priority':_0x2ce0e9++,'VoiceExtensionId':_0x266ed3['id']},{'type':_0x266ed3[_0x69cb('0x4')],'app':_0x266ed3[_0x69cb('0x7')]?_0x69cb('0x5'):_0x69cb('0x8'),'appdata':_0x266ed3['alias']?_0x69cb('0x9')+_0x266ed3[_0x69cb('0x7')]:_0x69cb('0xa'),'context':_0x266ed3[_0x69cb('0xb')],'exten':_0x266ed3[_0x69cb('0xc')],'priority':_0x2ce0e9++,'VoiceExtensionId':_0x266ed3['id']}];if(_0x266ed3[_0x69cb('0x4')]===_0x69cb('0xd')){_0x5f722c[_0x69cb('0xe')]({'type':_0x69cb('0xd'),'app':'Set','appdata':_0x69cb('0xf')+_0x266ed3['id'],'context':_0x266ed3[_0x69cb('0xb')],'exten':_0x266ed3[_0x69cb('0xc')],'priority':_0x2ce0e9++,'VoiceExtensionId':_0x266ed3['id']});}_0x5f722c[_0x69cb('0xe')]({'type':_0x266ed3[_0x69cb('0x4')],'app':_0x69cb('0x5'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x266ed3[_0x69cb('0xb')],'exten':_0x266ed3[_0x69cb('0xc')],'priority':_0x2ce0e9++,'VoiceExtensionId':_0x266ed3['id']},{'type':_0x266ed3[_0x69cb('0x4')],'app':_0x69cb('0x5'),'appdata':_0x69cb('0x10'),'context':_0x266ed3[_0x69cb('0xb')],'exten':_0x266ed3[_0x69cb('0xc')],'priority':_0x2ce0e9++,'VoiceExtensionId':_0x266ed3['id']},{'type':_0x266ed3['type'],'app':_0x69cb('0x5'),'appdata':'MONITOR_OPTIONS=ab','context':_0x266ed3[_0x69cb('0xb')],'exten':_0x266ed3[_0x69cb('0xc')],'priority':_0x2ce0e9++,'VoiceExtensionId':_0x266ed3['id']});return _0x5f722c;}function _0x184db9(_0x3d396a){var _0x1dff22=0x2;var _0x27d4e5=[{'type':'outbound','app':_0x69cb('0x5'),'appdata':'CDR(type)=outbound','context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x3d396a[_0x69cb('0x7')]?'Set':_0x69cb('0x8'),'appdata':_0x3d396a[_0x69cb('0x7')]?_0x69cb('0x9')+_0x3d396a[_0x69cb('0x7')]:_0x69cb('0xa'),'context':_0x3d396a['context'],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':_0x69cb('0x12')+(_0x3d396a[_0x69cb('0x13')]?'${EXTEN:'+_0x3d396a[_0x69cb('0x13')]+'}':_0x69cb('0x14')),'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a['exten'],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':_0x69cb('0xf')+_0x3d396a['id'],'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':'ExecIf','appdata':_0x69cb('0x15')+(_0x1dff22+0x2)+_0x69cb('0x16')+(_0x1dff22+0x1)+')','context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':_0x3d396a[_0x69cb('0x13')]?_0x69cb('0x17')+_0x3d396a['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x3d396a['context'],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':_0x69cb('0x18'),'context':_0x3d396a['context'],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':_0x69cb('0x10'),'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':'Set','appdata':_0x69cb('0x19'),'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':'outbound','app':'Set','appdata':_0x69cb('0x1a')+_0x3d396a['id'],'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a['exten'],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']}];if(_0x3d396a[_0x69cb('0x1b')](_0x69cb('0x1c'))&&_0x3d396a['recordingFormat']!==_0x69cb('0x1d')){_0x27d4e5['push']({'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':_0x69cb('0x1e'),'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a['exten'],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x3d396a[_0x69cb('0x1c')]||_0x69cb('0x1f'),'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']});}return _0x27d4e5;}function _0x21f181(_0x33e37a){var _0x542deb=[{'name':_0x69cb('0x20'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0x69cb('0x21'),'param':0x2},{'name':'url','param':0x3}];var _0x1006fb={};var _0xb237ae=_0x33e37a[_0x69cb('0x22')](',');var _0x4cea50=[];for(var _0x454e6b=0x0;_0x454e6b<_0x542deb['length'];_0x454e6b++){switch(_0x542deb[_0x454e6b][_0x69cb('0x23')]){case'trunk':_0x1006fb[_0x69cb('0x20')]=_0xb237ae[_0x542deb[_0x454e6b][_0x69cb('0x24')]][_0x69cb('0x22')]('/')[0x1];_0x1006fb[_0x69cb('0x25')]=_0xb237ae[_0x542deb[_0x454e6b][_0x69cb('0x24')]][_0x69cb('0x22')]('/')[0x2];_0x1006fb[_0x69cb('0x26')]=_0x1006fb[_0x69cb('0x25')]?_0x1006fb[_0x69cb('0x25')][_0x69cb('0x22')]('$')[0x0]:undefined;_0x1006fb[_0x69cb('0x25')]=route['cutdigits']?(_0x1006fb['prefix']||'')+'${EXTEN:'+route[_0x69cb('0x13')]+'}':(_0x1006fb[_0x69cb('0x26')]||'')+_0x69cb('0x14');_0x4cea50[_0x542deb[_0x454e6b][_0x69cb('0x24')]]=[_0x69cb('0x27'),_0x1006fb[_0x69cb('0x20')],_0x1006fb[_0x69cb('0x25')]][_0x69cb('0x28')]('/');break;case _0x69cb('0x21'):_0x1006fb[_0x69cb('0x21')]=_0xb237ae[_0x542deb[_0x454e6b][_0x69cb('0x24')]];if(route[_0x69cb('0x1c')]!=='none'){if(_0x1006fb[_0x69cb('0x21')][_0x69cb('0x29')](_0x69cb('0x2a'))<0x0){_0x1006fb['options']+=_0x69cb('0x2a');}}else{_0x1006fb[_0x69cb('0x21')]=_0x1006fb[_0x69cb('0x21')][_0x69cb('0x2b')](_0x69cb('0x2a'),'');}_0x4cea50[_0x542deb[_0x454e6b][_0x69cb('0x24')]]=_0x1006fb[_0x69cb('0x21')];break;default:_0x4cea50[_0x542deb[_0x454e6b][_0x69cb('0x24')]]=_0xb237ae[_0x542deb[_0x454e6b][_0x69cb('0x24')]];}}return _0x4cea50[_0x69cb('0x28')](',');}function _0x177ddf(_0x216e0f,_0x424045,_0xc4aa5b,_0x5884f3){return new Promise(function(_0xbb7608,_0x4f62bd){var _0x38b868=[];if(_[_0x69cb('0x2c')](_0x424045))return _0xbb7608(_0x38b868);_0x39472f['Interval'][_0x69cb('0x2d')]({'attributes':['id',_0x69cb('0x2e'),_0x69cb('0x2f')],'raw':!![]})[_0x69cb('0x30')](function(_0x28e43a){for(var _0x154b1a=0x0,_0x3bac30=0x0;_0x154b1a<_0x424045[_0x69cb('0x31')];_0x154b1a++,_0x3bac30=0x0){var _0x50718e=_0x424045[_0x154b1a];var _0xdc1bfa=[];var _0x4330ec=[];if(_0x50718e[_0x69cb('0x2e')]!==_0x69cb('0x32')){_0x50718e['intervals']=[_0x50718e[_0x69cb('0x2e')]];}else{_0x50718e[_0x69cb('0x33')]=_0x50718e['IntervalId']?_[_0x69cb('0x34')](_[_0x69cb('0x35')](_0x28e43a,{'IntervalId':_0x50718e[_0x69cb('0x2f')]}),_0x69cb('0x2e')):[];}_0x50718e['context']=_0x216e0f[_0x69cb('0xb')];_0x50718e['exten']=_0x216e0f[_0x69cb('0xc')];if(_0x50718e[_0x69cb('0x4')])_0x50718e[_0x69cb('0x4')]=_0x50718e['type'][_0x69cb('0x36')]();if(_0x216e0f[_0x69cb('0x4')]===_0x69cb('0x11')){if(_0x50718e[_0x69cb('0x1b')]('tag')&&_0x50718e['tag']&&_0x50718e['tag']!=='--'){_0xdc1bfa['push']({'type':_0x50718e[_0x69cb('0x4')][_0x69cb('0x36')](),'app':_0x69cb('0x5'),'appdata':_0x69cb('0x37')+_0x50718e[_0x69cb('0x38')],'context':_0x216e0f[_0x69cb('0xb')],'exten':_0x216e0f['exten'],'priority':_0x50718e[_0x69cb('0x33')]['length']+_0xc4aa5b+_0x3bac30++,'VoiceExtensionId':_0x216e0f['id']});}_0xdc1bfa[_0x69cb('0xe')]({'type':_0x50718e[_0x69cb('0x4')]['toLowerCase'](),'app':_0x69cb('0x39'),'appdata':_0x69cb('0x3a')+(_0x50718e[_0x69cb('0x3b')]?_0x69cb('0x3c')+_0x50718e[_0x69cb('0x3b')]+')':_0x69cb('0x3d')),'context':_0x216e0f[_0x69cb('0xb')],'exten':_0x216e0f[_0x69cb('0xc')],'priority':_0x50718e[_0x69cb('0x33')]['length']+_0xc4aa5b+_0x3bac30++,'VoiceExtensionId':_0x216e0f['id']});}else{if(_0x50718e[_0x69cb('0x1b')]('answer')){if([_0x69cb('0x3e'),_0x69cb('0x3f')]['includes'](_0x50718e[_0x69cb('0x40')][_0x69cb('0x36')]())&&_0x50718e[_0x69cb('0x41')]!=='custom'){if(_0x50718e[_0x69cb('0x42')]){_0xdc1bfa[_0x69cb('0xe')]({'type':_0x50718e[_0x69cb('0x4')][_0x69cb('0x36')](),'app':_0x69cb('0x39'),'appdata':_0x69cb('0x43'),'context':_0x216e0f[_0x69cb('0xb')],'exten':_0x216e0f[_0x69cb('0xc')],'priority':_0x50718e[_0x69cb('0x33')][_0x69cb('0x31')]+_0xc4aa5b+_0x3bac30++,'VoiceExtensionId':_0x216e0f['id']});_0xdc1bfa[_0x69cb('0xe')]({'type':_0x50718e[_0x69cb('0x4')][_0x69cb('0x36')](),'app':_0x69cb('0x5'),'appdata':_0x69cb('0x44'),'context':_0x216e0f['context'],'exten':_0x216e0f['exten'],'priority':_0x50718e[_0x69cb('0x33')][_0x69cb('0x31')]+_0xc4aa5b+_0x3bac30++,'VoiceExtensionId':_0x216e0f['id']});}else{_0xdc1bfa['push']({'type':_0x50718e[_0x69cb('0x4')][_0x69cb('0x36')](),'app':'ExecIf','appdata':_0x69cb('0x45'),'context':_0x216e0f[_0x69cb('0xb')],'exten':_0x216e0f[_0x69cb('0xc')],'priority':_0x50718e[_0x69cb('0x33')][_0x69cb('0x31')]+_0xc4aa5b+_0x3bac30++,'VoiceExtensionId':_0x216e0f['id']});_0xdc1bfa[_0x69cb('0xe')]({'type':_0x50718e[_0x69cb('0x4')]['toLowerCase'](),'app':_0x69cb('0x5'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x216e0f[_0x69cb('0xb')],'exten':_0x216e0f[_0x69cb('0xc')],'priority':_0x50718e[_0x69cb('0x33')]['length']+_0xc4aa5b+_0x3bac30++,'VoiceExtensionId':_0x216e0f['id']});}}}}for(var _0x1e3c89=0x0;_0x1e3c89<_0x50718e[_0x69cb('0x33')]['length'];_0x1e3c89++){var _0xe25d1e=_0xc4aa5b+_0x50718e[_0x69cb('0x33')][_0x69cb('0x31')];var _0x154beb=_0x1e3c89===_0x50718e[_0x69cb('0x33')][_0x69cb('0x31')]-0x1?_0xc4aa5b+_0xdc1bfa[_0x69cb('0x31')]+_0x4330ec[_0x69cb('0x31')]+0x2:_0xc4aa5b+_0x1e3c89+0x1;_0xdc1bfa[_0x69cb('0x46')](_0x1e3c89,0x0,{'type':_0x216e0f['type'],'app':'GotoIfTime','appdata':_0x50718e['intervals'][_0x1e3c89]+'?'+_0x216e0f[_0x69cb('0xb')]+',${EXTEN},'+_0xe25d1e+':'+_0x216e0f[_0x69cb('0xb')]+',${EXTEN},'+_0x154beb,'exten':_0x216e0f[_0x69cb('0xc')],'context':_0x216e0f[_0x69cb('0xb')],'priority':_0xc4aa5b+_0x1e3c89,'VoiceExtensionId':_0x216e0f['id']});}if(_0x5884f3&&_0x50718e[_0x69cb('0x41')]===_0x69cb('0x47'))_0x50718e['appdata']=_0x21f181(_0x50718e[_0x69cb('0x48')]);_0x50718e[_0x69cb('0x49')]=_0xdc1bfa[_0x69cb('0x31')]?_[_0x69cb('0x4a')](_0xdc1bfa)[_0x69cb('0x49')]+0x1:_0xc4aa5b;_0x38b868=_[_0x69cb('0x4b')](_0x38b868,_0xdc1bfa,[_0x50718e],_0x4330ec);_0xc4aa5b=_['last'](_0x38b868)[_0x69cb('0x49')]+0x1;}return _0xbb7608(_0x38b868);})[_0x69cb('0x4c')](function(_0x372d80){_0x4f62bd(_0x372d80);});});}return _0x50ab03['define'](_0x69cb('0x4d'),attributes,{'tableName':_0x69cb('0x4e'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x2f7bbe,_0x5ada30){var _0x4ddca9=this;var _0x3ebd2d=_0x4ddca9[_0x69cb('0x4')]===_0x69cb('0x11')?_0x184db9(_0x4ddca9):_0x336c91(_0x4ddca9);return _0x177ddf(_0x4ddca9,_0x2f7bbe,_[_0x69cb('0x4a')](_0x3ebd2d)[_0x69cb('0x49')]+0x1,_0x5ada30)[_0x69cb('0x30')](function(_0x5bbfab){var _0x5a349e=_[_0x69cb('0x4b')](_0x3ebd2d,_0x5bbfab);_0x5a349e[_0x69cb('0xe')]({'type':_0x4ddca9['type'],'app':_0x69cb('0x4f'),'exten':_0x4ddca9[_0x69cb('0xc')],'context':_0x4ddca9[_0x69cb('0xb')],'priority':_[_0x69cb('0x4a')](_0x5a349e)[_0x69cb('0x49')]+0x1,'VoiceExtensionId':_0x4ddca9['id']});return _0x5a349e;});}}});};
\ No newline at end of file
+var _0x2d81=['):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','MONITOR_OPTIONS=ab','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','split','name','param','phone','prefix','SIP','join','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','IntervalId','length','*,*,*,*','intervals','filter','toLowerCase','tag','CDR(tag)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','NoOp(No\x20number\x20available)','answer','queue','playback','includes','appType','custom','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','outboundDial','appdata','priority','concat','last','catch','define','VoiceExtension','voice_extensions','then','Hangup','lodash','./voiceExtension.attributes','exports','models','type','CDR(type)=','context','exten','alias','No\x20alias\x20set','inbound','push','Set','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(type)=outbound','NoOp','cutdigits','${EXTEN:','${EXTEN}'];(function(_0x475ba1,_0x18f987){var _0x4ec8d5=function(_0x48fb90){while(--_0x48fb90){_0x475ba1['push'](_0x475ba1['shift']());}};_0x4ec8d5(++_0x18f987);}(_0x2d81,0xe1));var _0x12d8=function(_0x4644ee,_0x16224f){_0x4644ee=_0x4644ee-0x0;var _0x3b6f13=_0x2d81[_0x4644ee];return _0x3b6f13;};'use strict';var util=require('util');var _=require(_0x12d8('0x0'));var attributes=require(_0x12d8('0x1'));module[_0x12d8('0x2')]=function(_0x31c912){var _0x47e691=_0x31c912[_0x12d8('0x3')];function _0xed74cb(_0x38660c){var _0x17d6b0=0x2;var _0x181022=[{'type':_0x38660c[_0x12d8('0x4')],'app':'Set','appdata':_0x12d8('0x5')+_0x38660c['type'],'context':_0x38660c[_0x12d8('0x6')],'exten':_0x38660c[_0x12d8('0x7')],'priority':_0x17d6b0++,'VoiceExtensionId':_0x38660c['id']},{'type':_0x38660c[_0x12d8('0x4')],'app':_0x38660c[_0x12d8('0x8')]?'Set':'NoOp','appdata':_0x38660c[_0x12d8('0x8')]?'CDR(routeAlias)='+_0x38660c['alias']:_0x12d8('0x9'),'context':_0x38660c[_0x12d8('0x6')],'exten':_0x38660c[_0x12d8('0x7')],'priority':_0x17d6b0++,'VoiceExtensionId':_0x38660c['id']}];if(_0x38660c[_0x12d8('0x4')]===_0x12d8('0xa')){_0x181022[_0x12d8('0xb')]({'type':_0x12d8('0xa'),'app':_0x12d8('0xc'),'appdata':'CDR(routeid)='+_0x38660c['id'],'context':_0x38660c[_0x12d8('0x6')],'exten':_0x38660c['exten'],'priority':_0x17d6b0++,'VoiceExtensionId':_0x38660c['id']});}_0x181022[_0x12d8('0xb')]({'type':_0x38660c[_0x12d8('0x4')],'app':_0x12d8('0xc'),'appdata':_0x12d8('0xd'),'context':_0x38660c[_0x12d8('0x6')],'exten':_0x38660c[_0x12d8('0x7')],'priority':_0x17d6b0++,'VoiceExtensionId':_0x38660c['id']},{'type':_0x38660c[_0x12d8('0x4')],'app':'Set','appdata':_0x12d8('0xe'),'context':_0x38660c[_0x12d8('0x6')],'exten':_0x38660c[_0x12d8('0x7')],'priority':_0x17d6b0++,'VoiceExtensionId':_0x38660c['id']},{'type':_0x38660c['type'],'app':'Set','appdata':'MONITOR_OPTIONS=ab','context':_0x38660c[_0x12d8('0x6')],'exten':_0x38660c[_0x12d8('0x7')],'priority':_0x17d6b0++,'VoiceExtensionId':_0x38660c['id']});return _0x181022;}function _0x22b23d(_0x40a216){var _0x5748e8=0x2;var _0x4a9280=[{'type':_0x12d8('0xf'),'app':'Set','appdata':_0x12d8('0x10'),'context':_0x40a216[_0x12d8('0x6')],'exten':_0x40a216[_0x12d8('0x7')],'priority':_0x5748e8++,'VoiceExtensionId':_0x40a216['id']},{'type':_0x12d8('0xf'),'app':_0x40a216[_0x12d8('0x8')]?_0x12d8('0xc'):_0x12d8('0x11'),'appdata':_0x40a216['alias']?'CDR(routeAlias)='+_0x40a216[_0x12d8('0x8')]:_0x12d8('0x9'),'context':_0x40a216[_0x12d8('0x6')],'exten':_0x40a216['exten'],'priority':_0x5748e8++,'VoiceExtensionId':_0x40a216['id']},{'type':_0x12d8('0xf'),'app':_0x12d8('0xc'),'appdata':'CDR(destination)='+(_0x40a216[_0x12d8('0x12')]?_0x12d8('0x13')+_0x40a216[_0x12d8('0x12')]+'}':_0x12d8('0x14')),'context':_0x40a216['context'],'exten':_0x40a216[_0x12d8('0x7')],'priority':_0x5748e8++,'VoiceExtensionId':_0x40a216['id']},{'type':_0x12d8('0xf'),'app':'Set','appdata':'CDR(routeid)='+_0x40a216['id'],'context':_0x40a216[_0x12d8('0x6')],'exten':_0x40a216['exten'],'priority':_0x5748e8++,'VoiceExtensionId':_0x40a216['id']},{'type':_0x12d8('0xf'),'app':'ExecIf','appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x5748e8+0x2)+_0x12d8('0x15')+(_0x5748e8+0x1)+')','context':_0x40a216[_0x12d8('0x6')],'exten':_0x40a216['exten'],'priority':_0x5748e8++,'VoiceExtensionId':_0x40a216['id']},{'type':'outbound','app':_0x12d8('0xc'),'appdata':_0x40a216[_0x12d8('0x12')]?_0x12d8('0x16')+_0x40a216[_0x12d8('0x12')]+'}':_0x12d8('0x17'),'context':_0x40a216[_0x12d8('0x6')],'exten':_0x40a216[_0x12d8('0x7')],'priority':_0x5748e8++,'VoiceExtensionId':_0x40a216['id']},{'type':_0x12d8('0xf'),'app':_0x12d8('0xc'),'appdata':_0x12d8('0xd'),'context':_0x40a216[_0x12d8('0x6')],'exten':_0x40a216[_0x12d8('0x7')],'priority':_0x5748e8++,'VoiceExtensionId':_0x40a216['id']},{'type':_0x12d8('0xf'),'app':'Set','appdata':_0x12d8('0xe'),'context':_0x40a216[_0x12d8('0x6')],'exten':_0x40a216[_0x12d8('0x7')],'priority':_0x5748e8++,'VoiceExtensionId':_0x40a216['id']},{'type':_0x12d8('0xf'),'app':_0x12d8('0xc'),'appdata':_0x12d8('0x18'),'context':_0x40a216[_0x12d8('0x6')],'exten':_0x40a216[_0x12d8('0x7')],'priority':_0x5748e8++,'VoiceExtensionId':_0x40a216['id']},{'type':_0x12d8('0xf'),'app':_0x12d8('0xc'),'appdata':_0x12d8('0x19')+_0x40a216['id'],'context':_0x40a216[_0x12d8('0x6')],'exten':_0x40a216[_0x12d8('0x7')],'priority':_0x5748e8++,'VoiceExtensionId':_0x40a216['id']}];if(_0x40a216[_0x12d8('0x1a')]('recordingFormat')&&_0x40a216[_0x12d8('0x1b')]!==_0x12d8('0x1c')){_0x4a9280[_0x12d8('0xb')]({'type':_0x12d8('0xf'),'app':_0x12d8('0xc'),'appdata':_0x12d8('0x1d'),'context':_0x40a216[_0x12d8('0x6')],'exten':_0x40a216['exten'],'priority':_0x5748e8++,'VoiceExtensionId':_0x40a216['id']},{'type':_0x12d8('0xf'),'app':_0x12d8('0xc'),'appdata':_0x12d8('0x1e')+_0x40a216[_0x12d8('0x1b')]||_0x12d8('0x1f'),'context':_0x40a216[_0x12d8('0x6')],'exten':_0x40a216[_0x12d8('0x7')],'priority':_0x5748e8++,'VoiceExtensionId':_0x40a216['id']});}return _0x4a9280;}function _0x19181b(_0x261077){var _0x171813=[{'name':_0x12d8('0x20'),'param':0x0},{'name':_0x12d8('0x21'),'param':0x1},{'name':_0x12d8('0x22'),'param':0x2},{'name':'url','param':0x3}];var _0x1f1303={};var _0x1e043a=_0x261077[_0x12d8('0x23')](',');var _0x4c67c2=[];for(var _0x19770c=0x0;_0x19770c<_0x171813['length'];_0x19770c++){switch(_0x171813[_0x19770c][_0x12d8('0x24')]){case _0x12d8('0x20'):_0x1f1303['trunk']=_0x1e043a[_0x171813[_0x19770c][_0x12d8('0x25')]][_0x12d8('0x23')]('/')[0x1];_0x1f1303[_0x12d8('0x26')]=_0x1e043a[_0x171813[_0x19770c]['param']][_0x12d8('0x23')]('/')[0x2];_0x1f1303[_0x12d8('0x27')]=_0x1f1303[_0x12d8('0x26')]?_0x1f1303[_0x12d8('0x26')][_0x12d8('0x23')]('$')[0x0]:undefined;_0x1f1303[_0x12d8('0x26')]=route['cutdigits']?(_0x1f1303[_0x12d8('0x27')]||'')+_0x12d8('0x13')+route[_0x12d8('0x12')]+'}':(_0x1f1303[_0x12d8('0x27')]||'')+_0x12d8('0x14');_0x4c67c2[_0x171813[_0x19770c]['param']]=[_0x12d8('0x28'),_0x1f1303[_0x12d8('0x20')],_0x1f1303[_0x12d8('0x26')]][_0x12d8('0x29')]('/');break;case _0x12d8('0x22'):_0x1f1303[_0x12d8('0x22')]=_0x1e043a[_0x171813[_0x19770c][_0x12d8('0x25')]];if(route['recordingFormat']!==_0x12d8('0x1c')){if(_0x1f1303[_0x12d8('0x22')]['indexOf']('U(xcally-mixmonitor-context)')<0x0){_0x1f1303[_0x12d8('0x22')]+=_0x12d8('0x2a');}}else{_0x1f1303[_0x12d8('0x22')]=_0x1f1303[_0x12d8('0x22')][_0x12d8('0x2b')](_0x12d8('0x2a'),'');}_0x4c67c2[_0x171813[_0x19770c][_0x12d8('0x25')]]=_0x1f1303[_0x12d8('0x22')];break;default:_0x4c67c2[_0x171813[_0x19770c]['param']]=_0x1e043a[_0x171813[_0x19770c][_0x12d8('0x25')]];}}return _0x4c67c2[_0x12d8('0x29')](',');}function _0x3f6d9e(_0x5661a6,_0x3669eb,_0xc2cf83,_0x2f8bb0){return new Promise(function(_0x3c1a4a,_0x236a5f){var _0x3ecdf2=[];if(_[_0x12d8('0x2c')](_0x3669eb))return _0x3c1a4a(_0x3ecdf2);_0x47e691[_0x12d8('0x2d')][_0x12d8('0x2e')]({'attributes':['id',_0x12d8('0x2f'),_0x12d8('0x30')],'raw':!![]})['then'](function(_0x51e0a4){for(var _0x10b585=0x0,_0x7c79e0=0x0;_0x10b585<_0x3669eb[_0x12d8('0x31')];_0x10b585++,_0x7c79e0=0x0){var _0x1c3174=_0x3669eb[_0x10b585];var _0x322f9e=[];var _0x17cfd0=[];if(_0x1c3174[_0x12d8('0x2f')]!==_0x12d8('0x32')){_0x1c3174[_0x12d8('0x33')]=[_0x1c3174[_0x12d8('0x2f')]];}else{_0x1c3174[_0x12d8('0x33')]=_0x1c3174[_0x12d8('0x30')]?_['map'](_[_0x12d8('0x34')](_0x51e0a4,{'IntervalId':_0x1c3174[_0x12d8('0x30')]}),_0x12d8('0x2f')):[];}_0x1c3174[_0x12d8('0x6')]=_0x5661a6[_0x12d8('0x6')];_0x1c3174[_0x12d8('0x7')]=_0x5661a6[_0x12d8('0x7')];if(_0x1c3174[_0x12d8('0x4')])_0x1c3174[_0x12d8('0x4')]=_0x1c3174[_0x12d8('0x4')][_0x12d8('0x35')]();if(_0x5661a6[_0x12d8('0x4')]===_0x12d8('0xf')){if(_0x1c3174[_0x12d8('0x1a')]('tag')&&_0x1c3174[_0x12d8('0x36')]&&_0x1c3174['tag']!=='--'){_0x322f9e[_0x12d8('0xb')]({'type':_0x1c3174['type'][_0x12d8('0x35')](),'app':_0x12d8('0xc'),'appdata':_0x12d8('0x37')+_0x1c3174['tag'],'context':_0x5661a6[_0x12d8('0x6')],'exten':_0x5661a6[_0x12d8('0x7')],'priority':_0x1c3174['intervals'][_0x12d8('0x31')]+_0xc2cf83+_0x7c79e0++,'VoiceExtensionId':_0x5661a6['id']});}_0x322f9e[_0x12d8('0xb')]({'type':_0x1c3174[_0x12d8('0x4')][_0x12d8('0x35')](),'app':_0x12d8('0x38'),'appdata':_0x12d8('0x39')+(_0x1c3174['callerID']?'Set(CALLERID(all)='+_0x1c3174[_0x12d8('0x3a')]+')':_0x12d8('0x3b')),'context':_0x5661a6[_0x12d8('0x6')],'exten':_0x5661a6['exten'],'priority':_0x1c3174[_0x12d8('0x33')][_0x12d8('0x31')]+_0xc2cf83+_0x7c79e0++,'VoiceExtensionId':_0x5661a6['id']});}else{if(_0x1c3174[_0x12d8('0x1a')](_0x12d8('0x3c'))){if([_0x12d8('0x3d'),_0x12d8('0x3e')][_0x12d8('0x3f')](_0x1c3174['app'][_0x12d8('0x35')]())&&_0x1c3174[_0x12d8('0x40')]!==_0x12d8('0x41')){if(_0x1c3174[_0x12d8('0x3c')]){_0x322f9e[_0x12d8('0xb')]({'type':_0x1c3174[_0x12d8('0x4')][_0x12d8('0x35')](),'app':_0x12d8('0x38'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x5661a6['context'],'exten':_0x5661a6[_0x12d8('0x7')],'priority':_0x1c3174[_0x12d8('0x33')][_0x12d8('0x31')]+_0xc2cf83+_0x7c79e0++,'VoiceExtensionId':_0x5661a6['id']});_0x322f9e[_0x12d8('0xb')]({'type':_0x1c3174['type'][_0x12d8('0x35')](),'app':_0x12d8('0xc'),'appdata':_0x12d8('0x42'),'context':_0x5661a6[_0x12d8('0x6')],'exten':_0x5661a6[_0x12d8('0x7')],'priority':_0x1c3174[_0x12d8('0x33')][_0x12d8('0x31')]+_0xc2cf83+_0x7c79e0++,'VoiceExtensionId':_0x5661a6['id']});}else{_0x322f9e[_0x12d8('0xb')]({'type':_0x1c3174[_0x12d8('0x4')][_0x12d8('0x35')](),'app':_0x12d8('0x38'),'appdata':_0x12d8('0x43'),'context':_0x5661a6[_0x12d8('0x6')],'exten':_0x5661a6['exten'],'priority':_0x1c3174['intervals']['length']+_0xc2cf83+_0x7c79e0++,'VoiceExtensionId':_0x5661a6['id']});_0x322f9e[_0x12d8('0xb')]({'type':_0x1c3174[_0x12d8('0x4')][_0x12d8('0x35')](),'app':_0x12d8('0xc'),'appdata':_0x12d8('0x44'),'context':_0x5661a6[_0x12d8('0x6')],'exten':_0x5661a6[_0x12d8('0x7')],'priority':_0x1c3174['intervals']['length']+_0xc2cf83+_0x7c79e0++,'VoiceExtensionId':_0x5661a6['id']});}}}}for(var _0x322145=0x0;_0x322145<_0x1c3174['intervals'][_0x12d8('0x31')];_0x322145++){var _0x4b5f8f=_0xc2cf83+_0x1c3174['intervals'][_0x12d8('0x31')];var _0x107890=_0x322145===_0x1c3174[_0x12d8('0x33')][_0x12d8('0x31')]-0x1?_0xc2cf83+_0x322f9e[_0x12d8('0x31')]+_0x17cfd0[_0x12d8('0x31')]+0x2:_0xc2cf83+_0x322145+0x1;_0x322f9e[_0x12d8('0x45')](_0x322145,0x0,{'type':_0x5661a6[_0x12d8('0x4')],'app':'GotoIfTime','appdata':_0x1c3174[_0x12d8('0x33')][_0x322145]+'?'+_0x5661a6[_0x12d8('0x6')]+_0x12d8('0x46')+_0x4b5f8f+':'+_0x5661a6['context']+_0x12d8('0x46')+_0x107890,'exten':_0x5661a6[_0x12d8('0x7')],'context':_0x5661a6['context'],'priority':_0xc2cf83+_0x322145,'VoiceExtensionId':_0x5661a6['id']});}if(_0x2f8bb0&&_0x1c3174[_0x12d8('0x40')]===_0x12d8('0x47'))_0x1c3174[_0x12d8('0x48')]=_0x19181b(_0x1c3174[_0x12d8('0x48')]);_0x1c3174[_0x12d8('0x49')]=_0x322f9e[_0x12d8('0x31')]?_['last'](_0x322f9e)['priority']+0x1:_0xc2cf83;_0x3ecdf2=_[_0x12d8('0x4a')](_0x3ecdf2,_0x322f9e,[_0x1c3174],_0x17cfd0);_0xc2cf83=_[_0x12d8('0x4b')](_0x3ecdf2)['priority']+0x1;}return _0x3c1a4a(_0x3ecdf2);})[_0x12d8('0x4c')](function(_0x3f62db){_0x236a5f(_0x3f62db);});});}return _0x31c912[_0x12d8('0x4d')](_0x12d8('0x4e'),attributes,{'tableName':_0x12d8('0x4f'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x23dc1a,_0x1e01e7){var _0x514ed0=this;var _0x38b122=_0x514ed0['type']==='outbound'?_0x22b23d(_0x514ed0):_0xed74cb(_0x514ed0);return _0x3f6d9e(_0x514ed0,_0x23dc1a,_[_0x12d8('0x4b')](_0x38b122)[_0x12d8('0x49')]+0x1,_0x1e01e7)[_0x12d8('0x50')](function(_0xb2bd25){var _0x1e7a9b=_[_0x12d8('0x4a')](_0x38b122,_0xb2bd25);_0x1e7a9b[_0x12d8('0xb')]({'type':_0x514ed0[_0x12d8('0x4')],'app':_0x12d8('0x51'),'exten':_0x514ed0[_0x12d8('0x7')],'context':_0x514ed0[_0x12d8('0x6')],'priority':_[_0x12d8('0x4b')](_0x1e7a9b)[_0x12d8('0x49')]+0x1,'VoiceExtensionId':_0x514ed0['id']});return _0x1e7a9b;});}}});};
\ No newline at end of file
index 5c96b7b..dcaf9a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cfd=['limit','include','map','model','debug','stringify','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','defaults','localhost','socket.io-emitter','redis','./voiceExtension.socket','register','request','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','VoiceExtension,\x20%s,\x20%s,\x20%s','code','error','message','GetVoiceExtension','VoiceExtension','options','where','attributes'];(function(_0x5d1a63,_0x58f786){var _0x468218=function(_0x25a9eb){while(--_0x25a9eb){_0x5d1a63['push'](_0x5d1a63['shift']());}};_0x468218(++_0x58f786);}(_0x6cfd,0x1b7));var _0xd6cf=function(_0x117f4c,_0x36a9b1){_0x117f4c=_0x117f4c-0x0;var _0x2b24e9=_0x6cfd[_0x117f4c];return _0x2b24e9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd6cf('0x0'));var BPromise=require(_0xd6cf('0x1'));var rs=require(_0xd6cf('0x2'));var fs=require('fs');var Redis=require(_0xd6cf('0x3'));var db=require(_0xd6cf('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd6cf('0x5'))(_0xd6cf('0x6'));var config=require(_0xd6cf('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd6cf('0x8')][_0xd6cf('0x9')]({'port':0x232a});config['redis']=_[_0xd6cf('0xa')](config['redis'],{'host':_0xd6cf('0xb'),'port':0x18eb});var socket=require(_0xd6cf('0xc'))(new Redis(config[_0xd6cf('0xd')]));require(_0xd6cf('0xe'))[_0xd6cf('0xf')](socket);function respondWithRpcPromise(_0xd5929f,_0xa0ee7d,_0x2f638a){return new BPromise(function(_0x2c99e8,_0x53528f){return client[_0xd6cf('0x10')](_0xd5929f,_0x2f638a)['then'](function(_0x3456b6){logger[_0xd6cf('0x11')](_0xd6cf('0x12'),_0xa0ee7d,_0xd6cf('0x13'));logger['debug'](_0xd6cf('0x14'),_0xa0ee7d,_0xd6cf('0x13'),JSON['stringify'](_0x3456b6));if(_0x3456b6['error']){if(_0x3456b6['error'][_0xd6cf('0x15')]===0x1f4){logger['error']('VoiceExtension,\x20%s,\x20%s',_0xa0ee7d,_0x3456b6[_0xd6cf('0x16')][_0xd6cf('0x17')]);return _0x53528f(_0x3456b6[_0xd6cf('0x16')][_0xd6cf('0x17')]);}logger[_0xd6cf('0x16')](_0xd6cf('0x12'),_0xa0ee7d,_0x3456b6[_0xd6cf('0x16')][_0xd6cf('0x17')]);return _0x2c99e8(_0x3456b6[_0xd6cf('0x16')]['message']);}else{logger['info'](_0xd6cf('0x12'),_0xa0ee7d,_0xd6cf('0x13'));_0x2c99e8(_0x3456b6['result'][_0xd6cf('0x17')]);}})['catch'](function(_0x9066ab){logger[_0xd6cf('0x16')](_0xd6cf('0x12'),_0xa0ee7d,_0x9066ab);_0x53528f(_0x9066ab);});});}exports[_0xd6cf('0x18')]=function(_0x4be8fc){var _0xf5675b=this;return new Promise(function(_0x4f6612,_0x309d36){return db[_0xd6cf('0x19')]['findAll']({'raw':_0x4be8fc[_0xd6cf('0x1a')]?_0x4be8fc[_0xd6cf('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x4be8fc['options']?_0x4be8fc[_0xd6cf('0x1a')][_0xd6cf('0x1b')]||null:null,'attributes':_0x4be8fc[_0xd6cf('0x1a')]?_0x4be8fc[_0xd6cf('0x1a')][_0xd6cf('0x1c')]||null:null,'limit':_0x4be8fc['options']?_0x4be8fc[_0xd6cf('0x1a')][_0xd6cf('0x1d')]||null:null,'include':_0x4be8fc[_0xd6cf('0x1a')]?_0x4be8fc[_0xd6cf('0x1a')][_0xd6cf('0x1e')]?_[_0xd6cf('0x1f')](_0x4be8fc[_0xd6cf('0x1a')][_0xd6cf('0x1e')],function(_0x5088c8){return{'model':db[_0x5088c8[_0xd6cf('0x20')]],'as':_0x5088c8['as'],'attributes':_0x5088c8[_0xd6cf('0x1c')],'include':_0x5088c8['include']?_['map'](_0x5088c8['include'],function(_0x784f92){return{'model':db[_0x784f92[_0xd6cf('0x20')]],'as':_0x784f92['as'],'attributes':_0x784f92[_0xd6cf('0x1c')],'include':_0x784f92['include']?_['map'](_0x784f92[_0xd6cf('0x1e')],function(_0x3483b7){return{'model':db[_0x3483b7['model']],'as':_0x3483b7['as'],'attributes':_0x3483b7[_0xd6cf('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x33b8a8){logger[_0xd6cf('0x11')]('GetVoiceExtension',_0x4be8fc);logger[_0xd6cf('0x21')](_0xd6cf('0x18'),_0x4be8fc,JSON[_0xd6cf('0x22')](_0x33b8a8));_0x4f6612(_0x33b8a8);})[_0xd6cf('0x23')](function(_0x3d0ad8){logger['error'](_0xd6cf('0x18'),_0x3d0ad8[_0xd6cf('0x17')],_0x4be8fc);_0x309d36(_0xf5675b['error'](0x1f4,_0x3d0ad8['message']));});});};
\ No newline at end of file
+var _0xc812=['error','message','request\x20sent','result','catch','GetVoiceExtension','VoiceExtension','options','attributes','include','map','model','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','./voiceExtension.socket','register','request','then','info','VoiceExtension,\x20%s,\x20%s','debug','VoiceExtension,\x20%s,\x20%s,\x20%s'];(function(_0x42276c,_0x141d47){var _0x1b5009=function(_0x23713f){while(--_0x23713f){_0x42276c['push'](_0x42276c['shift']());}};_0x1b5009(++_0x141d47);}(_0xc812,0xbc));var _0x2c81=function(_0x25d047,_0xe5103f){_0x25d047=_0x25d047-0x0;var _0x1ff5f4=_0xc812[_0x25d047];return _0x1ff5f4;};'use strict';var _=require(_0x2c81('0x0'));var util=require(_0x2c81('0x1'));var moment=require(_0x2c81('0x2'));var BPromise=require('bluebird');var rs=require(_0x2c81('0x3'));var fs=require('fs');var Redis=require(_0x2c81('0x4'));var db=require(_0x2c81('0x5'))['db'];var utils=require(_0x2c81('0x6'));var logger=require('../../config/logger')(_0x2c81('0x7'));var config=require(_0x2c81('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2c81('0x9')][_0x2c81('0xa')]({'port':0x232a});config[_0x2c81('0xb')]=_[_0x2c81('0xc')](config[_0x2c81('0xb')],{'host':_0x2c81('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2c81('0xb')]));require(_0x2c81('0xe'))[_0x2c81('0xf')](socket);function respondWithRpcPromise(_0xd73451,_0xf92211,_0x574eba){return new BPromise(function(_0x20af05,_0x3eaeea){return client[_0x2c81('0x10')](_0xd73451,_0x574eba)[_0x2c81('0x11')](function(_0x1ccedc){logger[_0x2c81('0x12')](_0x2c81('0x13'),_0xf92211,'request\x20sent');logger[_0x2c81('0x14')](_0x2c81('0x15'),_0xf92211,'request\x20sent',JSON['stringify'](_0x1ccedc));if(_0x1ccedc[_0x2c81('0x16')]){if(_0x1ccedc[_0x2c81('0x16')]['code']===0x1f4){logger[_0x2c81('0x16')](_0x2c81('0x13'),_0xf92211,_0x1ccedc[_0x2c81('0x16')][_0x2c81('0x17')]);return _0x3eaeea(_0x1ccedc[_0x2c81('0x16')][_0x2c81('0x17')]);}logger[_0x2c81('0x16')](_0x2c81('0x13'),_0xf92211,_0x1ccedc['error'][_0x2c81('0x17')]);return _0x20af05(_0x1ccedc[_0x2c81('0x16')]['message']);}else{logger[_0x2c81('0x12')](_0x2c81('0x13'),_0xf92211,_0x2c81('0x18'));_0x20af05(_0x1ccedc[_0x2c81('0x19')][_0x2c81('0x17')]);}})[_0x2c81('0x1a')](function(_0x4e004a){logger[_0x2c81('0x16')](_0x2c81('0x13'),_0xf92211,_0x4e004a);_0x3eaeea(_0x4e004a);});});}exports[_0x2c81('0x1b')]=function(_0x7ddde6){var _0x39fa53=this;return new Promise(function(_0x12018b,_0x27bc2e){return db[_0x2c81('0x1c')]['findAll']({'raw':_0x7ddde6[_0x2c81('0x1d')]?_0x7ddde6[_0x2c81('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x7ddde6[_0x2c81('0x1d')]?_0x7ddde6['options']['where']||null:null,'attributes':_0x7ddde6['options']?_0x7ddde6[_0x2c81('0x1d')][_0x2c81('0x1e')]||null:null,'limit':_0x7ddde6[_0x2c81('0x1d')]?_0x7ddde6[_0x2c81('0x1d')]['limit']||null:null,'include':_0x7ddde6[_0x2c81('0x1d')]?_0x7ddde6[_0x2c81('0x1d')][_0x2c81('0x1f')]?_[_0x2c81('0x20')](_0x7ddde6[_0x2c81('0x1d')][_0x2c81('0x1f')],function(_0x436e5a){return{'model':db[_0x436e5a['model']],'as':_0x436e5a['as'],'attributes':_0x436e5a[_0x2c81('0x1e')],'include':_0x436e5a[_0x2c81('0x1f')]?_[_0x2c81('0x20')](_0x436e5a[_0x2c81('0x1f')],function(_0xbc7426){return{'model':db[_0xbc7426['model']],'as':_0xbc7426['as'],'attributes':_0xbc7426[_0x2c81('0x1e')],'include':_0xbc7426[_0x2c81('0x1f')]?_[_0x2c81('0x20')](_0xbc7426[_0x2c81('0x1f')],function(_0x4122bc){return{'model':db[_0x4122bc[_0x2c81('0x21')]],'as':_0x4122bc['as'],'attributes':_0x4122bc[_0x2c81('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x2c81('0x11')](function(_0x40d231){logger[_0x2c81('0x12')](_0x2c81('0x1b'),_0x7ddde6);logger[_0x2c81('0x14')](_0x2c81('0x1b'),_0x7ddde6,JSON[_0x2c81('0x22')](_0x40d231));_0x12018b(_0x40d231);})['catch'](function(_0x2b7111){logger[_0x2c81('0x16')](_0x2c81('0x1b'),_0x2b7111[_0x2c81('0x17')],_0x7ddde6);_0x27bc2e(_0x39fa53['error'](0x1f4,_0x2b7111[_0x2c81('0x17')]));});});};
\ No newline at end of file
index e33f337..af363e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['remove','update','removeListener','register','length','./voiceExtension.events','save'];(function(_0x35eb3b,_0x52ddbd){var _0x4da7a3=function(_0x3a8db3){while(--_0x3a8db3){_0x35eb3b['push'](_0x35eb3b['shift']());}};_0x4da7a3(++_0x52ddbd);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xc4aa[_0x1caf6a];return _0x1bf493;};'use strict';var VoiceExtensionEvents=require(_0xac4a('0x0'));var events=[_0xac4a('0x1'),_0xac4a('0x2'),_0xac4a('0x3')];function createListener(_0x275161,_0x22469d){return function(_0x58634e){_0x22469d['emit'](_0x275161,_0x58634e);};}function removeListener(_0x47d4f6,_0x2f48ed){return function(){VoiceExtensionEvents[_0xac4a('0x4')](_0x47d4f6,_0x2f48ed);};}exports[_0xac4a('0x5')]=function(_0x215f39){for(var _0x96be2b=0x0,_0x15cd34=events[_0xac4a('0x6')];_0x96be2b<_0x15cd34;_0x96be2b++){var _0x10525b=events[_0x96be2b];var _0x5c6179=createListener('voiceExtension:'+_0x10525b,_0x215f39);VoiceExtensionEvents['on'](_0x10525b,_0x5c6179);}};
\ No newline at end of file
+var _0xf494=['save','remove','emit','removeListener','register','voiceExtension:','./voiceExtension.events'];(function(_0x2fd74e,_0x1c6dc2){var _0xddc31e=function(_0x445d69){while(--_0x445d69){_0x2fd74e['push'](_0x2fd74e['shift']());}};_0xddc31e(++_0x1c6dc2);}(_0xf494,0x1c6));var _0x4f49=function(_0x410d70,_0x42c693){_0x410d70=_0x410d70-0x0;var _0x4f97e8=_0xf494[_0x410d70];return _0x4f97e8;};'use strict';var VoiceExtensionEvents=require(_0x4f49('0x0'));var events=[_0x4f49('0x1'),_0x4f49('0x2'),'update'];function createListener(_0x3aeeb8,_0x1d54cc){return function(_0x423b25){_0x1d54cc[_0x4f49('0x3')](_0x3aeeb8,_0x423b25);};}function removeListener(_0x20c0d7,_0x2a15fb){return function(){VoiceExtensionEvents[_0x4f49('0x4')](_0x20c0d7,_0x2a15fb);};}exports[_0x4f49('0x5')]=function(_0xc5e778){for(var _0x413530=0x0,_0x42b0e8=events['length'];_0x413530<_0x42b0e8;_0x413530++){var _0x58e9a0=events[_0x413530];var _0x169c95=createListener(_0x4f49('0x6')+_0x58e9a0,_0xc5e778);VoiceExtensionEvents['on'](_0x58e9a0,_0x169c95);}};
\ No newline at end of file
index f630807..5f2d185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['getMessages','post','update','delete','/:id','destroy','exports','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/messages'];(function(_0x5d50d7,_0x339501){var _0x4acb68=function(_0x6bd7a8){while(--_0x6bd7a8){_0x5d50d7['push'](_0x5d50d7['shift']());}};_0x4acb68(++_0x339501);}(_0x5d58,0x187));var _0x85d5=function(_0x5325d5,_0x17ceb0){_0x5325d5=_0x5325d5-0x0;var _0x363572=_0x5d58[_0x5325d5];return _0x363572;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x85d5('0x0')]();var fs_extra=require(_0x85d5('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0x85d5('0x2'));var config=require(_0x85d5('0x3'));var controller=require('./voiceMail.controller');router[_0x85d5('0x4')]('/',auth[_0x85d5('0x5')](),controller[_0x85d5('0x6')]);router[_0x85d5('0x4')]('/:id',auth[_0x85d5('0x5')](),controller[_0x85d5('0x7')]);router['get'](_0x85d5('0x8'),auth['isAuthenticated'](),controller[_0x85d5('0x9')]);router[_0x85d5('0xa')]('/',auth[_0x85d5('0x5')](),controller['create']);router['put']('/:id',auth[_0x85d5('0x5')](),controller[_0x85d5('0xb')]);router[_0x85d5('0xc')](_0x85d5('0xd'),auth[_0x85d5('0x5')](),controller[_0x85d5('0xe')]);module[_0x85d5('0xf')]=router;
\ No newline at end of file
+var _0xacf4=['index','/:id','isAuthenticated','show','post','create','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceMail.controller','get'];(function(_0x2d45de,_0x4fc646){var _0x1a7b89=function(_0x2175c7){while(--_0x2175c7){_0x2d45de['push'](_0x2d45de['shift']());}};_0x1a7b89(++_0x4fc646);}(_0xacf4,0xe7));var _0x4acf=function(_0x3dc1c6,_0x8529a1){_0x3dc1c6=_0x3dc1c6-0x0;var _0x3c82ce=_0xacf4[_0x3dc1c6];return _0x3c82ce;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4acf('0x0'));var timeout=require(_0x4acf('0x1'));var express=require(_0x4acf('0x2'));var router=express[_0x4acf('0x3')]();var fs_extra=require(_0x4acf('0x4'));var auth=require(_0x4acf('0x5'));var interaction=require(_0x4acf('0x6'));var config=require('../../config/environment');var controller=require(_0x4acf('0x7'));router[_0x4acf('0x8')]('/',auth['isAuthenticated'](),controller[_0x4acf('0x9')]);router[_0x4acf('0x8')](_0x4acf('0xa'),auth[_0x4acf('0xb')](),controller[_0x4acf('0xc')]);router['get']('/:id/messages',auth[_0x4acf('0xb')](),controller['getMessages']);router[_0x4acf('0xd')]('/',auth[_0x4acf('0xb')](),controller[_0x4acf('0xe')]);router['put'](_0x4acf('0xa'),auth[_0x4acf('0xb')](),controller['update']);router['delete'](_0x4acf('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x4acf('0xf')]=router;
\ No newline at end of file
index 4312368..12aae23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb94b=['ENUM','TINYINT(4)','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports','STRING','from-voicemail','setDataValue','string','trim','central','yes'];(function(_0x8c6c55,_0x1584d3){var _0x5480e8=function(_0x55792a){while(--_0x55792a){_0x8c6c55['push'](_0x8c6c55['shift']());}};_0x5480e8(++_0x1584d3);}(_0xb94b,0x118));var _0xbb94=function(_0x399aef,_0x5406eb){_0x399aef=_0x399aef-0x0;var _0x48c639=_0xb94b[_0x399aef];return _0x48c639;};'use strict';var Sequelize=require(_0xbb94('0x0'));module[_0xbb94('0x1')]={'customer_id':{'type':Sequelize[_0xbb94('0x2')]},'context':{'type':Sequelize[_0xbb94('0x2')],'defaultValue':_0xbb94('0x3'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0xbb94('0x2')]},'email':{'type':Sequelize[_0xbb94('0x2')],'validate':{'isEmail':!![]},'set':function(_0x4a8a62){this[_0xbb94('0x4')]('email',typeof _0x4a8a62===_0xbb94('0x5')&&_0x4a8a62['trim']()?_0x4a8a62[_0xbb94('0x6')]():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize['STRING'],'defaultValue':_0xbb94('0x7')},'attach':{'type':Sequelize['ENUM'](_0xbb94('0x8'),'no'),'defaultValue':_0xbb94('0x8'),'allowNull':![]},'saycid':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':_0xbb94('0x8'),'allowNull':![]},'dialout':{'type':Sequelize[_0xbb94('0x2')]},'callback':{'type':Sequelize[_0xbb94('0x2')]},'review':{'type':Sequelize[_0xbb94('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM'](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0xbb94('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0xbb94('0x8'),'no'),'defaultValue':_0xbb94('0x8'),'allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0xbb94('0x2')]},'emailbody':{'type':Sequelize[_0xbb94('0x2')]},'maxsecs':{'type':Sequelize[_0xbb94('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xbb94('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xbb94('0xc')],'get':function(){return this[_0xbb94('0xd')](_0xbb94('0xe'))+_0xbb94('0xf')+this['getDataValue'](_0xbb94('0x10'));}}};
\ No newline at end of file
+var _0x250f=['STRING','from-voicemail','contest_mailbox','setDataValue','email','string','trim','central','ENUM','yes','TIMESTAMP','INTEGER','fullname','\x20-\x20','getDataValue','mailbox','sequelize'];(function(_0x53b4d6,_0x28a74c){var _0x51c48e=function(_0x13bd2e){while(--_0x13bd2e){_0x53b4d6['push'](_0x53b4d6['shift']());}};_0x51c48e(++_0x28a74c);}(_0x250f,0x1ca));var _0xf250=function(_0x15d63c,_0x259824){_0x15d63c=_0x15d63c-0x0;var _0x15ead3=_0x250f[_0x15d63c];return _0x15ead3;};'use strict';var Sequelize=require(_0xf250('0x0'));module['exports']={'customer_id':{'type':Sequelize[_0xf250('0x1')]},'context':{'type':Sequelize[_0xf250('0x1')],'defaultValue':_0xf250('0x2'),'unique':_0xf250('0x3')},'mailbox':{'type':Sequelize[_0xf250('0x1')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0xf250('0x1')]},'fullname':{'type':Sequelize[_0xf250('0x1')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x3b65c4){this[_0xf250('0x4')](_0xf250('0x5'),typeof _0x3b65c4===_0xf250('0x6')&&_0x3b65c4[_0xf250('0x7')]()?_0x3b65c4[_0xf250('0x7')]():null);}},'pager':{'type':Sequelize[_0xf250('0x1')]},'tz':{'type':Sequelize['STRING'],'defaultValue':_0xf250('0x8')},'attach':{'type':Sequelize[_0xf250('0x9')](_0xf250('0xa'),'no'),'defaultValue':_0xf250('0xa'),'allowNull':![]},'saycid':{'type':Sequelize[_0xf250('0x9')](_0xf250('0xa'),'no'),'defaultValue':_0xf250('0xa'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0xf250('0x1')]},'review':{'type':Sequelize[_0xf250('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xf250('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xf250('0x9')](_0xf250('0xa'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xf250('0x9')](_0xf250('0xa'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xf250('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM'](_0xf250('0xa'),'no'),'defaultValue':_0xf250('0xa'),'allowNull':![]},'forcename':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0xf250('0xa'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0xf250('0xa'),'no'),'defaultValue':_0xf250('0xa'),'allowNull':![]},'stamp':{'type':_0xf250('0xb')},'emailsubject':{'type':Sequelize[_0xf250('0x1')]},'emailbody':{'type':Sequelize[_0xf250('0x1')]},'maxsecs':{'type':Sequelize[_0xf250('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue'](_0xf250('0xd'))+_0xf250('0xe')+this[_0xf250('0xf')](_0xf250('0x10'));}}};
\ No newline at end of file
index 4e7c84f..1ec4627 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','destroy','Voicemails','UserProfileResource','error','stack','name','send','index','map','VoiceMail','fieldName','key','model','keys','filters','intersection','attributes','fields','query','length','order','sort','pick','where','merge','type','VIRTUAL','filter','options','include','rows','catch','show','rawAttributes','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','update','getMessages','VoiceMailMessage','hasOwnProperty','nolimit','mailbox','eml-format','moment','util','path','sox','to-csv','ejs'];(function(_0x54b749,_0x45913f){var _0x5a1b77=function(_0x462b04){while(--_0x462b04){_0x54b749['push'](_0x54b749['shift']());}};_0x5a1b77(++_0x45913f);}(_0xf4eb,0xec));var _0xbf4e=function(_0x2258d2,_0x416dff){_0x2258d2=_0x2258d2-0x0;var _0x3b409f=_0xf4eb[_0x2258d2];return _0x3b409f;};'use strict';var emlformat=require(_0xbf4e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xbf4e('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbf4e('0x2'));var path=require(_0xbf4e('0x3'));var sox=require(_0xbf4e('0x4'));var csv=require(_0xbf4e('0x5'));var ejs=require(_0xbf4e('0x6'));var fs=require('fs');var fs_extra=require(_0xbf4e('0x7'));var _=require(_0xbf4e('0x8'));var squel=require('squel');var crypto=require(_0xbf4e('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbf4e('0x5'));var querystring=require(_0xbf4e('0xa'));var Papa=require(_0xbf4e('0xb'));var Redis=require(_0xbf4e('0xc'));var authService=require(_0xbf4e('0xd'));var qs=require(_0xbf4e('0xe'));var as=require(_0xbf4e('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xbf4e('0x10'));var utils=require('../../config/utils');var config=require(_0xbf4e('0x11'));var licenseUtil=require(_0xbf4e('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x17fd01,_0x5a3035){_0x5a3035=_0x5a3035||0xcc;return function(_0x56d185){if(_0x56d185){return _0x17fd01[_0xbf4e('0x13')](_0x5a3035);}return _0x17fd01[_0xbf4e('0x14')](_0x5a3035)[_0xbf4e('0x15')]();};}function respondWithResult(_0x302841,_0x3b74bd){_0x3b74bd=_0x3b74bd||0xc8;return function(_0x61bd54){if(_0x61bd54){return _0x302841['status'](_0x3b74bd)['json'](_0x61bd54);}};}function respondWithFilteredResult(_0x180432,_0x1735ae){return function(_0x28fc6b){if(_0x28fc6b){var _0x542909=typeof _0x1735ae[_0xbf4e('0x16')]===_0xbf4e('0x17')&&typeof _0x1735ae[_0xbf4e('0x18')]===_0xbf4e('0x17');var _0x5a631e=_0x28fc6b[_0xbf4e('0x19')];var _0x577c27=_0x542909?0x0:_0x1735ae['offset'];var _0x566ec3=_0x542909?_0x28fc6b['count']:_0x1735ae[_0xbf4e('0x16')]+_0x1735ae[_0xbf4e('0x18')];var _0x1fc800;if(_0x566ec3>=_0x5a631e){_0x566ec3=_0x5a631e;_0x1fc800=0xc8;}else{_0x1fc800=0xce;}_0x180432['status'](_0x1fc800);return _0x180432['set'](_0xbf4e('0x1a'),_0x577c27+'-'+_0x566ec3+'/'+_0x5a631e)[_0xbf4e('0x1b')](_0x28fc6b);}return null;};}function patchUpdates(_0x3be138){return function(_0x3a875b){try{jsonpatch[_0xbf4e('0x1c')](_0x3a875b,_0x3be138,!![]);}catch(_0x1e2a68){return BPromise[_0xbf4e('0x1d')](_0x1e2a68);}return _0x3a875b[_0xbf4e('0x1e')]();};}function saveUpdates(_0xd09e12,_0x376832){return function(_0x30539b){if(_0x30539b){return _0x30539b['update'](_0xd09e12)[_0xbf4e('0x1f')](function(_0x2e7673){return _0x2e7673;});}return null;};}function removeEntity(_0x51648c,_0x31e3f5){return function(_0x30994d){if(_0x30994d){return _0x30994d[_0xbf4e('0x20')]()[_0xbf4e('0x1f')](function(){var _0x3a5d72=_0x30994d['get']({'plain':!![]});var _0x90635e=_0xbf4e('0x21');return db[_0xbf4e('0x22')]['destroy']({'where':{'type':_0x90635e,'resourceId':_0x3a5d72['id']}})[_0xbf4e('0x1f')](function(){return _0x30994d;});})['then'](function(){_0x51648c['status'](0xcc)[_0xbf4e('0x15')]();});}};}function handleEntityNotFound(_0x5a0a9b,_0x38c923){return function(_0x315df3){if(!_0x315df3){_0x5a0a9b[_0xbf4e('0x13')](0x194);}return _0x315df3;};}function handleError(_0x41f918,_0x5c912f){_0x5c912f=_0x5c912f||0x1f4;return function(_0x2d4686){logger[_0xbf4e('0x23')](_0x2d4686[_0xbf4e('0x24')]);if(_0x2d4686['name']){delete _0x2d4686[_0xbf4e('0x25')];}_0x41f918['status'](_0x5c912f)[_0xbf4e('0x26')](_0x2d4686);};}exports[_0xbf4e('0x27')]=function(_0xb8b58e,_0x498dbd){var _0x1d12e2={},_0x362716={},_0x2f3cf8={'count':0x0,'rows':[]};var _0xc7ca87=_[_0xbf4e('0x28')](db[_0xbf4e('0x29')]['rawAttributes'],function(_0x35c82d){return{'name':_0x35c82d[_0xbf4e('0x2a')],'type':_0x35c82d['type'][_0xbf4e('0x2b')]};});_0x362716[_0xbf4e('0x2c')]=_['map'](_0xc7ca87,_0xbf4e('0x25'));_0x362716['query']=_[_0xbf4e('0x2d')](_0xb8b58e['query']);_0x362716[_0xbf4e('0x2e')]=_[_0xbf4e('0x2f')](_0x362716[_0xbf4e('0x2c')],_0x362716['query']);_0x1d12e2[_0xbf4e('0x30')]=_[_0xbf4e('0x2f')](_0x362716[_0xbf4e('0x2c')],qs[_0xbf4e('0x31')](_0xb8b58e[_0xbf4e('0x32')][_0xbf4e('0x31')]));_0x1d12e2['attributes']=_0x1d12e2[_0xbf4e('0x30')][_0xbf4e('0x33')]?_0x1d12e2[_0xbf4e('0x30')]:_0x362716[_0xbf4e('0x2c')];if(!_0xb8b58e[_0xbf4e('0x32')]['hasOwnProperty']('nolimit')){_0x1d12e2['limit']=qs['limit'](_0xb8b58e[_0xbf4e('0x32')][_0xbf4e('0x18')]);_0x1d12e2[_0xbf4e('0x16')]=qs[_0xbf4e('0x16')](_0xb8b58e[_0xbf4e('0x32')][_0xbf4e('0x16')]);}_0x1d12e2[_0xbf4e('0x34')]=qs[_0xbf4e('0x35')](_0xb8b58e[_0xbf4e('0x32')]['sort']);_0x1d12e2['where']=qs[_0xbf4e('0x2e')](_[_0xbf4e('0x36')](_0xb8b58e[_0xbf4e('0x32')],_0x362716['filters']),_0xc7ca87);if(_0xb8b58e[_0xbf4e('0x32')]['filter']){_0x1d12e2[_0xbf4e('0x37')]=_[_0xbf4e('0x38')](_0x1d12e2[_0xbf4e('0x37')],{'$or':_[_0xbf4e('0x28')](_0xc7ca87,function(_0x5ce339){if(_0x5ce339[_0xbf4e('0x39')]!==_0xbf4e('0x3a')){var _0x3aa308={};_0x3aa308[_0x5ce339[_0xbf4e('0x25')]]={'$like':'%'+_0xb8b58e['query'][_0xbf4e('0x3b')]+'%'};return _0x3aa308;}})});}_0x1d12e2=_[_0xbf4e('0x38')]({},_0x1d12e2,_0xb8b58e[_0xbf4e('0x3c')]);var _0x29fe9d={'where':_0x1d12e2[_0xbf4e('0x37')]};return db[_0xbf4e('0x29')][_0xbf4e('0x19')](_0x29fe9d)['then'](function(_0x176166){_0x2f3cf8[_0xbf4e('0x19')]=_0x176166;if(_0xb8b58e['query']['includeAll']){_0x1d12e2[_0xbf4e('0x3d')]=[{'all':!![]}];}return db[_0xbf4e('0x29')]['findAll'](_0x1d12e2);})['then'](function(_0x2b1bf4){_0x2f3cf8[_0xbf4e('0x3e')]=_0x2b1bf4;return _0x2f3cf8;})[_0xbf4e('0x1f')](respondWithFilteredResult(_0x498dbd,_0x1d12e2))[_0xbf4e('0x3f')](handleError(_0x498dbd,null));};exports[_0xbf4e('0x40')]=function(_0x3ad0a4,_0x5a03c6){var _0x3ecc15={'raw':!![],'where':{'id':_0x3ad0a4['params']['id']}},_0x7bd91={};_0x7bd91['model']=_['keys'](db['VoiceMail'][_0xbf4e('0x41')]);_0x7bd91['query']=_[_0xbf4e('0x2d')](_0x3ad0a4[_0xbf4e('0x32')]);_0x7bd91['filters']=_['intersection'](_0x7bd91[_0xbf4e('0x2c')],_0x7bd91[_0xbf4e('0x32')]);_0x3ecc15[_0xbf4e('0x30')]=_[_0xbf4e('0x2f')](_0x7bd91[_0xbf4e('0x2c')],qs['fields'](_0x3ad0a4[_0xbf4e('0x32')][_0xbf4e('0x31')]));_0x3ecc15[_0xbf4e('0x30')]=_0x3ecc15[_0xbf4e('0x30')][_0xbf4e('0x33')]?_0x3ecc15[_0xbf4e('0x30')]:_0x7bd91[_0xbf4e('0x2c')];if(_0x3ad0a4[_0xbf4e('0x32')]['includeAll']){_0x3ecc15[_0xbf4e('0x3d')]=[{'all':!![]}];}_0x3ecc15=_[_0xbf4e('0x38')]({},_0x3ecc15,_0x3ad0a4[_0xbf4e('0x3c')]);return db[_0xbf4e('0x29')][_0xbf4e('0x42')](_0x3ecc15)[_0xbf4e('0x1f')](handleEntityNotFound(_0x5a03c6,null))[_0xbf4e('0x1f')](respondWithResult(_0x5a03c6,null))[_0xbf4e('0x3f')](handleError(_0x5a03c6,null));};exports[_0xbf4e('0x43')]=function(_0x3447ab,_0x2fdba9){return db[_0xbf4e('0x29')][_0xbf4e('0x43')](_0x3447ab[_0xbf4e('0x44')],{})[_0xbf4e('0x1f')](function(_0x2892ce){var _0x10bc23=_0x3447ab['user'][_0xbf4e('0x45')]({'plain':!![]});if(!_0x10bc23)throw new Error(_0xbf4e('0x46'));if(_0x10bc23[_0xbf4e('0x47')]==='user'){var _0x33ab9a=_0x2892ce['get']({'plain':!![]});var _0x4a050e=_0xbf4e('0x21');return db[_0xbf4e('0x48')]['find']({'where':{'name':_0x4a050e,'userProfileId':_0x10bc23[_0xbf4e('0x49')]},'raw':!![]})[_0xbf4e('0x1f')](function(_0x31d779){if(_0x31d779&&_0x31d779[_0xbf4e('0x4a')]===0x0){return db[_0xbf4e('0x22')][_0xbf4e('0x43')]({'name':_0x33ab9a[_0xbf4e('0x25')],'resourceId':_0x33ab9a['id'],'type':_0x31d779[_0xbf4e('0x25')],'sectionId':_0x31d779['id']},{})[_0xbf4e('0x1f')](function(){return _0x2892ce;});}else{return _0x2892ce;}})[_0xbf4e('0x3f')](function(_0x271ad2){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x271ad2);throw _0x271ad2;});}return _0x2892ce;})[_0xbf4e('0x1f')](respondWithResult(_0x2fdba9,0xc9))[_0xbf4e('0x3f')](handleError(_0x2fdba9,null));};exports[_0xbf4e('0x4b')]=function(_0x586f5d,_0x339ce6){if(_0x586f5d[_0xbf4e('0x44')]['id']){delete _0x586f5d['body']['id'];}return db['VoiceMail'][_0xbf4e('0x42')]({'where':{'id':_0x586f5d['params']['id']}})['then'](handleEntityNotFound(_0x339ce6,null))[_0xbf4e('0x1f')](saveUpdates(_0x586f5d[_0xbf4e('0x44')],null))[_0xbf4e('0x1f')](respondWithResult(_0x339ce6,null))[_0xbf4e('0x3f')](handleError(_0x339ce6,null));};exports[_0xbf4e('0x20')]=function(_0x5ec2d9,_0x242a75){return db['VoiceMail'][_0xbf4e('0x42')]({'where':{'id':_0x5ec2d9['params']['id']}})[_0xbf4e('0x1f')](handleEntityNotFound(_0x242a75,null))['then'](removeEntity(_0x242a75,null))[_0xbf4e('0x3f')](handleError(_0x242a75,null));};exports[_0xbf4e('0x4c')]=function(_0x3e60e7,_0x16592f,_0xfd54c){return db['VoiceMail']['findOne']({'where':{'id':_0x3e60e7['params']['id']}})['then'](handleEntityNotFound(_0x16592f,null))[_0xbf4e('0x1f')](function(_0x453411){var _0x5cfc26;var _0x200096={},_0x23c335={};_0x23c335[_0xbf4e('0x2c')]=_[_0xbf4e('0x2d')](db[_0xbf4e('0x4d')][_0xbf4e('0x41')]);_0x23c335[_0xbf4e('0x32')]=_['keys'](_0x3e60e7[_0xbf4e('0x32')]);_0x23c335[_0xbf4e('0x2e')]=_[_0xbf4e('0x2f')](_0x23c335['model'],_0x23c335['query']);_0x200096[_0xbf4e('0x30')]=_[_0xbf4e('0x2f')](_0x23c335[_0xbf4e('0x2c')],qs['fields'](_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x31')]));_0x200096[_0xbf4e('0x30')]=_0x200096[_0xbf4e('0x30')][_0xbf4e('0x33')]?_0x200096[_0xbf4e('0x30')]:_0x23c335[_0xbf4e('0x2c')];if(!_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x4e')](_0xbf4e('0x4f'))){_0x200096[_0xbf4e('0x18')]=qs[_0xbf4e('0x18')](_0x3e60e7['query'][_0xbf4e('0x18')]);_0x200096['offset']=qs[_0xbf4e('0x16')](_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x16')]);}_0x200096[_0xbf4e('0x34')]=qs[_0xbf4e('0x35')](_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x35')]);_0x200096[_0xbf4e('0x37')]=qs['filters'](_[_0xbf4e('0x36')](_0x3e60e7[_0xbf4e('0x32')],_0x23c335[_0xbf4e('0x2e')]));if(_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x3b')]){_0x200096['where']=_[_0xbf4e('0x38')](_0x200096[_0xbf4e('0x37')],{'$or':_[_0xbf4e('0x28')](_0x200096[_0xbf4e('0x30')],function(_0x12f19f){var _0x2c606b={};_0x2c606b[_0x12f19f]={'$like':'%'+_0x3e60e7['query'][_0xbf4e('0x3b')]+'%'};return _0x2c606b;})});}_0x200096['where']=_[_0xbf4e('0x38')](_0x200096[_0xbf4e('0x37')],{'mailboxuser':_0x453411[_0xbf4e('0x50')]});_0x200096=_[_0xbf4e('0x38')]({},_0x200096,_0x3e60e7['options']);return db[_0xbf4e('0x4d')]['findAndCountAll'](_0x200096)['then'](respondWithFilteredResult(_0x16592f,_0x200096));})[_0xbf4e('0x3f')](handleError(_0x16592f,null));};
\ No newline at end of file
+var _0x5eb8=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','get','Voicemails','UserProfileResource','sendStatus','error','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','includeAll','include','VoiceMail','findAll','rows','catch','show','params','options','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','VoiceMailMessage','pick','filter','mailbox'];(function(_0xef7221,_0x67f209){var _0x523bc6=function(_0x5d8cba){while(--_0x5d8cba){_0xef7221['push'](_0xef7221['shift']());}};_0x523bc6(++_0x67f209);}(_0x5eb8,0xb0));var _0x85eb=function(_0x2bf5bd,_0x120787){_0x2bf5bd=_0x2bf5bd-0x0;var _0xc810c0=_0x5eb8[_0x2bf5bd];return _0xc810c0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x85eb('0x0'));var jsonpatch=require(_0x85eb('0x1'));var rp=require(_0x85eb('0x2'));var moment=require(_0x85eb('0x3'));var BPromise=require(_0x85eb('0x4'));var Mustache=require(_0x85eb('0x5'));var util=require(_0x85eb('0x6'));var path=require(_0x85eb('0x7'));var sox=require(_0x85eb('0x8'));var csv=require(_0x85eb('0x9'));var ejs=require(_0x85eb('0xa'));var fs=require('fs');var fs_extra=require(_0x85eb('0xb'));var _=require('lodash');var squel=require(_0x85eb('0xc'));var crypto=require(_0x85eb('0xd'));var jsforce=require(_0x85eb('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x85eb('0x9'));var querystring=require('querystring');var Papa=require(_0x85eb('0xf'));var Redis=require(_0x85eb('0x10'));var authService=require(_0x85eb('0x11'));var qs=require(_0x85eb('0x12'));var as=require(_0x85eb('0x13'));var hardwareService=require(_0x85eb('0x14'));var logger=require(_0x85eb('0x15'))('api');var utils=require(_0x85eb('0x16'));var config=require(_0x85eb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x85eb('0x18'))['db'];function respondWithStatusCode(_0x784583,_0x2f42ba){_0x2f42ba=_0x2f42ba||0xcc;return function(_0x259f72){if(_0x259f72){return _0x784583['sendStatus'](_0x2f42ba);}return _0x784583['status'](_0x2f42ba)[_0x85eb('0x19')]();};}function respondWithResult(_0x5c760a,_0x18ca53){_0x18ca53=_0x18ca53||0xc8;return function(_0x23a82a){if(_0x23a82a){return _0x5c760a[_0x85eb('0x1a')](_0x18ca53)[_0x85eb('0x1b')](_0x23a82a);}};}function respondWithFilteredResult(_0x183b0c,_0x49efdf){return function(_0x2e5c0a){if(_0x2e5c0a){var _0x59237b=typeof _0x49efdf[_0x85eb('0x1c')]===_0x85eb('0x1d')&&typeof _0x49efdf[_0x85eb('0x1e')]===_0x85eb('0x1d');var _0x5dbeda=_0x2e5c0a['count'];var _0x50d2a8=_0x59237b?0x0:_0x49efdf[_0x85eb('0x1c')];var _0x39ca96=_0x59237b?_0x2e5c0a[_0x85eb('0x1f')]:_0x49efdf[_0x85eb('0x1c')]+_0x49efdf[_0x85eb('0x1e')];var _0x34f875;if(_0x39ca96>=_0x5dbeda){_0x39ca96=_0x5dbeda;_0x34f875=0xc8;}else{_0x34f875=0xce;}_0x183b0c['status'](_0x34f875);return _0x183b0c[_0x85eb('0x20')](_0x85eb('0x21'),_0x50d2a8+'-'+_0x39ca96+'/'+_0x5dbeda)[_0x85eb('0x1b')](_0x2e5c0a);}return null;};}function patchUpdates(_0x4e8041){return function(_0x4b4b38){try{jsonpatch['apply'](_0x4b4b38,_0x4e8041,!![]);}catch(_0x55b9e4){return BPromise[_0x85eb('0x22')](_0x55b9e4);}return _0x4b4b38[_0x85eb('0x23')]();};}function saveUpdates(_0x329fc5,_0x255ca7){return function(_0x465c74){if(_0x465c74){return _0x465c74[_0x85eb('0x24')](_0x329fc5)['then'](function(_0x5491d5){return _0x5491d5;});}return null;};}function removeEntity(_0x5b48d9,_0x298e84){return function(_0x1426c8){if(_0x1426c8){return _0x1426c8[_0x85eb('0x25')]()[_0x85eb('0x26')](function(){var _0x312b3e=_0x1426c8[_0x85eb('0x27')]({'plain':!![]});var _0x5dfc96=_0x85eb('0x28');return db[_0x85eb('0x29')][_0x85eb('0x25')]({'where':{'type':_0x5dfc96,'resourceId':_0x312b3e['id']}})[_0x85eb('0x26')](function(){return _0x1426c8;});})[_0x85eb('0x26')](function(){_0x5b48d9['status'](0xcc)[_0x85eb('0x19')]();});}};}function handleEntityNotFound(_0x792d3a,_0x291557){return function(_0x3e7eb9){if(!_0x3e7eb9){_0x792d3a[_0x85eb('0x2a')](0x194);}return _0x3e7eb9;};}function handleError(_0x29d262,_0x50541a){_0x50541a=_0x50541a||0x1f4;return function(_0x562792){logger[_0x85eb('0x2b')](_0x562792['stack']);if(_0x562792[_0x85eb('0x2c')]){delete _0x562792['name'];}_0x29d262[_0x85eb('0x1a')](_0x50541a)[_0x85eb('0x2d')](_0x562792);};}exports[_0x85eb('0x2e')]=function(_0x1d9278,_0xa67e1c){var _0xf4ac13={},_0x41ed76={},_0x5decd5={'count':0x0,'rows':[]};var _0x237f19=_[_0x85eb('0x2f')](db['VoiceMail'][_0x85eb('0x30')],function(_0x5af2de){return{'name':_0x5af2de['fieldName'],'type':_0x5af2de[_0x85eb('0x31')][_0x85eb('0x32')]};});_0x41ed76[_0x85eb('0x33')]=_[_0x85eb('0x2f')](_0x237f19,_0x85eb('0x2c'));_0x41ed76[_0x85eb('0x34')]=_[_0x85eb('0x35')](_0x1d9278[_0x85eb('0x34')]);_0x41ed76[_0x85eb('0x36')]=_[_0x85eb('0x37')](_0x41ed76['model'],_0x41ed76[_0x85eb('0x34')]);_0xf4ac13[_0x85eb('0x38')]=_['intersection'](_0x41ed76['model'],qs[_0x85eb('0x39')](_0x1d9278[_0x85eb('0x34')][_0x85eb('0x39')]));_0xf4ac13[_0x85eb('0x38')]=_0xf4ac13[_0x85eb('0x38')][_0x85eb('0x3a')]?_0xf4ac13[_0x85eb('0x38')]:_0x41ed76[_0x85eb('0x33')];if(!_0x1d9278[_0x85eb('0x34')][_0x85eb('0x3b')](_0x85eb('0x3c'))){_0xf4ac13[_0x85eb('0x1e')]=qs[_0x85eb('0x1e')](_0x1d9278[_0x85eb('0x34')]['limit']);_0xf4ac13[_0x85eb('0x1c')]=qs[_0x85eb('0x1c')](_0x1d9278['query']['offset']);}_0xf4ac13[_0x85eb('0x3d')]=qs[_0x85eb('0x3e')](_0x1d9278['query'][_0x85eb('0x3e')]);_0xf4ac13['where']=qs[_0x85eb('0x36')](_['pick'](_0x1d9278[_0x85eb('0x34')],_0x41ed76['filters']),_0x237f19);if(_0x1d9278[_0x85eb('0x34')]['filter']){_0xf4ac13[_0x85eb('0x3f')]=_[_0x85eb('0x40')](_0xf4ac13['where'],{'$or':_[_0x85eb('0x2f')](_0x237f19,function(_0x5a1c15){if(_0x5a1c15[_0x85eb('0x31')]!==_0x85eb('0x41')){var _0x5c0156={};_0x5c0156[_0x5a1c15[_0x85eb('0x2c')]]={'$like':'%'+_0x1d9278['query']['filter']+'%'};return _0x5c0156;}})});}_0xf4ac13=_[_0x85eb('0x40')]({},_0xf4ac13,_0x1d9278['options']);var _0x17cc20={'where':_0xf4ac13[_0x85eb('0x3f')]};return db['VoiceMail']['count'](_0x17cc20)[_0x85eb('0x26')](function(_0x422ec3){_0x5decd5['count']=_0x422ec3;if(_0x1d9278['query'][_0x85eb('0x42')]){_0xf4ac13[_0x85eb('0x43')]=[{'all':!![]}];}return db[_0x85eb('0x44')][_0x85eb('0x45')](_0xf4ac13);})[_0x85eb('0x26')](function(_0x5b7411){_0x5decd5[_0x85eb('0x46')]=_0x5b7411;return _0x5decd5;})[_0x85eb('0x26')](respondWithFilteredResult(_0xa67e1c,_0xf4ac13))[_0x85eb('0x47')](handleError(_0xa67e1c,null));};exports[_0x85eb('0x48')]=function(_0x2ed39d,_0xbc43a7){var _0x40e2a2={'raw':!![],'where':{'id':_0x2ed39d[_0x85eb('0x49')]['id']}},_0x3e11a8={};_0x3e11a8['model']=_[_0x85eb('0x35')](db[_0x85eb('0x44')]['rawAttributes']);_0x3e11a8[_0x85eb('0x34')]=_[_0x85eb('0x35')](_0x2ed39d[_0x85eb('0x34')]);_0x3e11a8[_0x85eb('0x36')]=_[_0x85eb('0x37')](_0x3e11a8[_0x85eb('0x33')],_0x3e11a8['query']);_0x40e2a2[_0x85eb('0x38')]=_[_0x85eb('0x37')](_0x3e11a8[_0x85eb('0x33')],qs[_0x85eb('0x39')](_0x2ed39d[_0x85eb('0x34')][_0x85eb('0x39')]));_0x40e2a2[_0x85eb('0x38')]=_0x40e2a2[_0x85eb('0x38')]['length']?_0x40e2a2[_0x85eb('0x38')]:_0x3e11a8[_0x85eb('0x33')];if(_0x2ed39d[_0x85eb('0x34')][_0x85eb('0x42')]){_0x40e2a2[_0x85eb('0x43')]=[{'all':!![]}];}_0x40e2a2=_[_0x85eb('0x40')]({},_0x40e2a2,_0x2ed39d[_0x85eb('0x4a')]);return db[_0x85eb('0x44')][_0x85eb('0x4b')](_0x40e2a2)[_0x85eb('0x26')](handleEntityNotFound(_0xbc43a7,null))[_0x85eb('0x26')](respondWithResult(_0xbc43a7,null))[_0x85eb('0x47')](handleError(_0xbc43a7,null));};exports['create']=function(_0x11da79,_0x2c951b){return db[_0x85eb('0x44')]['create'](_0x11da79[_0x85eb('0x4c')],{})[_0x85eb('0x26')](function(_0x2cf928){var _0xd2f302=_0x11da79[_0x85eb('0x4d')]['get']({'plain':!![]});if(!_0xd2f302)throw new Error(_0x85eb('0x4e'));if(_0xd2f302[_0x85eb('0x4f')]===_0x85eb('0x4d')){var _0x50e264=_0x2cf928[_0x85eb('0x27')]({'plain':!![]});var _0x4550fd=_0x85eb('0x28');return db['UserProfileSection']['find']({'where':{'name':_0x4550fd,'userProfileId':_0xd2f302[_0x85eb('0x50')]},'raw':!![]})['then'](function(_0x5ed98a){if(_0x5ed98a&&_0x5ed98a[_0x85eb('0x51')]===0x0){return db['UserProfileResource'][_0x85eb('0x52')]({'name':_0x50e264[_0x85eb('0x2c')],'resourceId':_0x50e264['id'],'type':_0x5ed98a['name'],'sectionId':_0x5ed98a['id']},{})['then'](function(){return _0x2cf928;});}else{return _0x2cf928;}})[_0x85eb('0x47')](function(_0x249511){logger[_0x85eb('0x2b')](_0x85eb('0x53'),_0x249511);throw _0x249511;});}return _0x2cf928;})[_0x85eb('0x26')](respondWithResult(_0x2c951b,0xc9))['catch'](handleError(_0x2c951b,null));};exports[_0x85eb('0x24')]=function(_0x30062e,_0x270bb2){if(_0x30062e[_0x85eb('0x4c')]['id']){delete _0x30062e[_0x85eb('0x4c')]['id'];}return db['VoiceMail'][_0x85eb('0x4b')]({'where':{'id':_0x30062e['params']['id']}})[_0x85eb('0x26')](handleEntityNotFound(_0x270bb2,null))[_0x85eb('0x26')](saveUpdates(_0x30062e['body'],null))[_0x85eb('0x26')](respondWithResult(_0x270bb2,null))[_0x85eb('0x47')](handleError(_0x270bb2,null));};exports[_0x85eb('0x25')]=function(_0x26e04a,_0x214ef7){return db[_0x85eb('0x44')]['find']({'where':{'id':_0x26e04a[_0x85eb('0x49')]['id']}})['then'](handleEntityNotFound(_0x214ef7,null))[_0x85eb('0x26')](removeEntity(_0x214ef7,null))[_0x85eb('0x47')](handleError(_0x214ef7,null));};exports['getMessages']=function(_0x152452,_0x2a0f8b,_0x4a3af9){return db[_0x85eb('0x44')]['findOne']({'where':{'id':_0x152452[_0x85eb('0x49')]['id']}})[_0x85eb('0x26')](handleEntityNotFound(_0x2a0f8b,null))[_0x85eb('0x26')](function(_0x13c0b3){var _0x45a201;var _0x15d4a7={},_0x5a729e={};_0x5a729e[_0x85eb('0x33')]=_[_0x85eb('0x35')](db[_0x85eb('0x54')][_0x85eb('0x30')]);_0x5a729e[_0x85eb('0x34')]=_[_0x85eb('0x35')](_0x152452[_0x85eb('0x34')]);_0x5a729e[_0x85eb('0x36')]=_[_0x85eb('0x37')](_0x5a729e[_0x85eb('0x33')],_0x5a729e[_0x85eb('0x34')]);_0x15d4a7['attributes']=_[_0x85eb('0x37')](_0x5a729e[_0x85eb('0x33')],qs[_0x85eb('0x39')](_0x152452[_0x85eb('0x34')][_0x85eb('0x39')]));_0x15d4a7[_0x85eb('0x38')]=_0x15d4a7['attributes'][_0x85eb('0x3a')]?_0x15d4a7['attributes']:_0x5a729e[_0x85eb('0x33')];if(!_0x152452[_0x85eb('0x34')][_0x85eb('0x3b')](_0x85eb('0x3c'))){_0x15d4a7[_0x85eb('0x1e')]=qs['limit'](_0x152452[_0x85eb('0x34')][_0x85eb('0x1e')]);_0x15d4a7[_0x85eb('0x1c')]=qs[_0x85eb('0x1c')](_0x152452[_0x85eb('0x34')][_0x85eb('0x1c')]);}_0x15d4a7[_0x85eb('0x3d')]=qs[_0x85eb('0x3e')](_0x152452['query'][_0x85eb('0x3e')]);_0x15d4a7['where']=qs[_0x85eb('0x36')](_[_0x85eb('0x55')](_0x152452[_0x85eb('0x34')],_0x5a729e[_0x85eb('0x36')]));if(_0x152452[_0x85eb('0x34')]['filter']){_0x15d4a7[_0x85eb('0x3f')]=_[_0x85eb('0x40')](_0x15d4a7[_0x85eb('0x3f')],{'$or':_[_0x85eb('0x2f')](_0x15d4a7[_0x85eb('0x38')],function(_0x419b24){var _0x562ffa={};_0x562ffa[_0x419b24]={'$like':'%'+_0x152452['query'][_0x85eb('0x56')]+'%'};return _0x562ffa;})});}_0x15d4a7['where']=_[_0x85eb('0x40')](_0x15d4a7[_0x85eb('0x3f')],{'mailboxuser':_0x13c0b3[_0x85eb('0x57')]});_0x15d4a7=_[_0x85eb('0x40')]({},_0x15d4a7,_0x152452[_0x85eb('0x4a')]);return db[_0x85eb('0x54')]['findAndCountAll'](_0x15d4a7)[_0x85eb('0x26')](respondWithFilteredResult(_0x2a0f8b,_0x15d4a7));})[_0x85eb('0x47')](handleError(_0x2a0f8b,null));};
\ No newline at end of file
index 667adb2..7df4845 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27eb=['./voiceMail.attributes','exports','define','VoiceMail','voice_voicemail','mailbox','context','util','../../config/logger','api','moment','request-promise','path','../../config/environment'];(function(_0x47878f,_0x48d3bf){var _0x4b05b8=function(_0x3d6597){while(--_0x3d6597){_0x47878f['push'](_0x47878f['shift']());}};_0x4b05b8(++_0x48d3bf);}(_0x27eb,0x11f));var _0xb27e=function(_0x3b0581,_0x1ce734){_0x3b0581=_0x3b0581-0x0;var _0x208440=_0x27eb[_0x3b0581];return _0x208440;};'use strict';var _=require('lodash');var util=require(_0xb27e('0x0'));var logger=require(_0xb27e('0x1'))(_0xb27e('0x2'));var moment=require(_0xb27e('0x3'));var BPromise=require('bluebird');var rp=require(_0xb27e('0x4'));var fs=require('fs');var path=require(_0xb27e('0x5'));var rimraf=require('rimraf');var config=require(_0xb27e('0x6'));var attributes=require(_0xb27e('0x7'));module[_0xb27e('0x8')]=function(_0x456552,_0x384bda){return _0x456552[_0xb27e('0x9')](_0xb27e('0xa'),attributes,{'tableName':_0xb27e('0xb'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0xb27e('0xc'),_0xb27e('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xec3a=['voice_voicemail','mailbox','context','lodash','util','moment','bluebird','path','rimraf','../../config/environment','./voiceMail.attributes','exports','define','VoiceMail'];(function(_0x382486,_0x7bca0c){var _0xe9f117=function(_0x36d6bb){while(--_0x36d6bb){_0x382486['push'](_0x382486['shift']());}};_0xe9f117(++_0x7bca0c);}(_0xec3a,0x153));var _0xaec3=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0xec3a[_0x2064e5];return _0x21a233;};'use strict';var _=require(_0xaec3('0x0'));var util=require(_0xaec3('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xaec3('0x2'));var BPromise=require(_0xaec3('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xaec3('0x4'));var rimraf=require(_0xaec3('0x5'));var config=require(_0xaec3('0x6'));var attributes=require(_0xaec3('0x7'));module[_0xaec3('0x8')]=function(_0x5a0b73,_0x5477fa){return _0x5a0b73[_0xaec3('0x9')](_0xaec3('0xa'),attributes,{'tableName':_0xaec3('0xb'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0xaec3('0xc'),_0xaec3('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index c067e70..fedafba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e2a=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x5e2a,0x1aa));var _0xa5e2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5e2a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa5e2('0x0'));var util=require(_0xa5e2('0x1'));var moment=require(_0xa5e2('0x2'));var BPromise=require(_0xa5e2('0x3'));var rs=require(_0xa5e2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa5e2('0x5'))['db'];var utils=require(_0xa5e2('0x6'));var logger=require(_0xa5e2('0x7'))(_0xa5e2('0x8'));var config=require('../../config/environment');var jayson=require(_0xa5e2('0x9'));var client=jayson[_0xa5e2('0xa')][_0xa5e2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5b001a,_0x2ab534,_0x32f717){return new BPromise(function(_0x17be71,_0x299281){return client[_0xa5e2('0xc')](_0x5b001a,_0x32f717)[_0xa5e2('0xd')](function(_0x408259){logger['info'](_0xa5e2('0xe'),_0x2ab534,_0xa5e2('0xf'));logger[_0xa5e2('0x10')](_0xa5e2('0x11'),_0x2ab534,_0xa5e2('0xf'),JSON['stringify'](_0x408259));if(_0x408259['error']){if(_0x408259[_0xa5e2('0x12')][_0xa5e2('0x13')]===0x1f4){logger['error'](_0xa5e2('0xe'),_0x2ab534,_0x408259[_0xa5e2('0x12')][_0xa5e2('0x14')]);return _0x299281(_0x408259[_0xa5e2('0x12')][_0xa5e2('0x14')]);}logger[_0xa5e2('0x12')]('VoiceMail,\x20%s,\x20%s',_0x2ab534,_0x408259['error'][_0xa5e2('0x14')]);return _0x17be71(_0x408259['error']['message']);}else{logger[_0xa5e2('0x15')](_0xa5e2('0xe'),_0x2ab534,_0xa5e2('0xf'));_0x17be71(_0x408259[_0xa5e2('0x16')][_0xa5e2('0x14')]);}})[_0xa5e2('0x17')](function(_0x58b3a9){logger[_0xa5e2('0x12')](_0xa5e2('0xe'),_0x2ab534,_0x58b3a9);_0x299281(_0x58b3a9);});});}
\ No newline at end of file
+var _0x132c=['moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','request\x20sent','stringify','error','VoiceMail,\x20%s,\x20%s','message','result','lodash','util'];(function(_0x3d8b3c,_0x44ec2c){var _0x47a7f7=function(_0x1b116d){while(--_0x1b116d){_0x3d8b3c['push'](_0x3d8b3c['shift']());}};_0x47a7f7(++_0x44ec2c);}(_0x132c,0x11c));var _0xc132=function(_0x5dea2d,_0x520bc3){_0x5dea2d=_0x5dea2d-0x0;var _0x232737=_0x132c[_0x5dea2d];return _0x232737;};'use strict';var _=require(_0xc132('0x0'));var util=require(_0xc132('0x1'));var moment=require(_0xc132('0x2'));var BPromise=require(_0xc132('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc132('0x4'));var db=require(_0xc132('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc132('0x6'))(_0xc132('0x7'));var config=require(_0xc132('0x8'));var jayson=require(_0xc132('0x9'));var client=jayson[_0xc132('0xa')][_0xc132('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x111912,_0x15e388,_0xfda2e2){return new BPromise(function(_0x3910f1,_0x420539){return client[_0xc132('0xc')](_0x111912,_0xfda2e2)[_0xc132('0xd')](function(_0x47dd4a){logger[_0xc132('0xe')]('VoiceMail,\x20%s,\x20%s',_0x15e388,'request\x20sent');logger[_0xc132('0xf')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x15e388,_0xc132('0x10'),JSON[_0xc132('0x11')](_0x47dd4a));if(_0x47dd4a[_0xc132('0x12')]){if(_0x47dd4a[_0xc132('0x12')]['code']===0x1f4){logger[_0xc132('0x12')](_0xc132('0x13'),_0x15e388,_0x47dd4a['error'][_0xc132('0x14')]);return _0x420539(_0x47dd4a[_0xc132('0x12')][_0xc132('0x14')]);}logger[_0xc132('0x12')](_0xc132('0x13'),_0x15e388,_0x47dd4a[_0xc132('0x12')][_0xc132('0x14')]);return _0x3910f1(_0x47dd4a[_0xc132('0x12')]['message']);}else{logger['info'](_0xc132('0x13'),_0x15e388,'request\x20sent');_0x3910f1(_0x47dd4a[_0xc132('0x15')][_0xc132('0x14')]);}})['catch'](function(_0x3ffeff){logger[_0xc132('0x12')]('VoiceMail,\x20%s,\x20%s',_0x15e388,_0x3ffeff);_0x420539(_0x3ffeff);});});}
\ No newline at end of file
index f45a45c..da85db4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb102=['download','post','create','update','delete','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','/:id','/:id/download'];(function(_0x743ad2,_0x4f7bbc){var _0xbbea03=function(_0x140047){while(--_0x140047){_0x743ad2['push'](_0x743ad2['shift']());}};_0xbbea03(++_0x4f7bbc);}(_0xb102,0x1d0));var _0x2b10=function(_0x182e54,_0x239de3){_0x182e54=_0x182e54-0x0;var _0x314e33=_0xb102[_0x182e54];return _0x314e33;};'use strict';var multer=require('multer');var util=require(_0x2b10('0x0'));var path=require('path');var timeout=require(_0x2b10('0x1'));var express=require(_0x2b10('0x2'));var router=express[_0x2b10('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2b10('0x4'));var interaction=require(_0x2b10('0x5'));var config=require(_0x2b10('0x6'));var controller=require(_0x2b10('0x7'));router[_0x2b10('0x8')]('/',auth[_0x2b10('0x9')](),controller['index']);router[_0x2b10('0x8')](_0x2b10('0xa'),auth[_0x2b10('0x9')](),controller['show']);router[_0x2b10('0x8')](_0x2b10('0xb'),auth[_0x2b10('0x9')](),controller[_0x2b10('0xc')]);router[_0x2b10('0xd')]('/',auth[_0x2b10('0x9')](),controller[_0x2b10('0xe')]);router['put']('/:id',auth[_0x2b10('0x9')](),controller[_0x2b10('0xf')]);router[_0x2b10('0x10')](_0x2b10('0xa'),auth[_0x2b10('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x3847=['/:id/download','download','post','put','update','delete','exports','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','isAuthenticated','get','/:id','show'];(function(_0x3c4cae,_0x4f2faf){var _0x2011e7=function(_0x40ffa8){while(--_0x40ffa8){_0x3c4cae['push'](_0x3c4cae['shift']());}};_0x2011e7(++_0x4f2faf);}(_0x3847,0x196));var _0x7384=function(_0x4c7dc5,_0x4d9ecf){_0x4c7dc5=_0x4c7dc5-0x0;var _0x5ace36=_0x3847[_0x4c7dc5];return _0x5ace36;};'use strict';var multer=require('multer');var util=require(_0x7384('0x0'));var path=require(_0x7384('0x1'));var timeout=require('connect-timeout');var express=require(_0x7384('0x2'));var router=express[_0x7384('0x3')]();var fs_extra=require(_0x7384('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7384('0x5'));var config=require(_0x7384('0x6'));var controller=require(_0x7384('0x7'));router['get']('/',auth[_0x7384('0x8')](),controller['index']);router[_0x7384('0x9')](_0x7384('0xa'),auth['isAuthenticated'](),controller[_0x7384('0xb')]);router[_0x7384('0x9')](_0x7384('0xc'),auth[_0x7384('0x8')](),controller[_0x7384('0xd')]);router[_0x7384('0xe')]('/',auth[_0x7384('0x8')](),controller['create']);router[_0x7384('0xf')](_0x7384('0xa'),auth[_0x7384('0x8')](),controller[_0x7384('0x10')]);router[_0x7384('0x11')]('/:id',auth[_0x7384('0x8')](),controller['destroy']);module[_0x7384('0x12')]=router;
\ No newline at end of file
index b9a639e..8ffbaa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b79=['STRING','BLOB','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','getDataValue','INTEGER'];(function(_0x353abb,_0x194c80){var _0x43c9c5=function(_0x456b74){while(--_0x456b74){_0x353abb['push'](_0x353abb['shift']());}};_0x43c9c5(++_0x194c80);}(_0x4b79,0xc3));var _0x94b7=function(_0x2afd05,_0x588166){_0x2afd05=_0x2afd05-0x0;var _0x33d66a=_0x4b79[_0x2afd05];return _0x33d66a;};'use strict';var Sequelize=require(_0x94b7('0x0'));module[_0x94b7('0x1')]={'name':{'type':Sequelize[_0x94b7('0x2')],'get':function(_0x2ab173){return this[_0x94b7('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x94b7('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'context':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'recording':{'type':Sequelize[_0x94b7('0x6')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0x94b7('0x7'),'defaultValue':Sequelize[_0x94b7('0x8')](_0x94b7('0x9'))}};
\ No newline at end of file
+var _0xf4c0=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','getDataValue','STRING','BLOB','long','TIMESTAMP','literal'];(function(_0x52d544,_0x5381cc){var _0x2e1465=function(_0x131139){while(--_0x131139){_0x52d544['push'](_0x52d544['shift']());}};_0x2e1465(++_0x5381cc);}(_0xf4c0,0x13c));var _0x0f4c=function(_0x360b3d,_0xbe7942){_0x360b3d=_0x360b3d-0x0;var _0x779997=_0xf4c0[_0x360b3d];return _0x779997;};'use strict';var Sequelize=require(_0x0f4c('0x0'));module[_0x0f4c('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x2b3a2b){return this[_0x0f4c('0x2')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0x0f4c('0x3')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x0f4c('0x3')],'defaultValue':''},'callerid':{'type':Sequelize[_0x0f4c('0x3')],'defaultValue':''},'origtime':{'type':Sequelize[_0x0f4c('0x3')],'defaultValue':''},'duration':{'type':Sequelize[_0x0f4c('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x0f4c('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0x0f4c('0x4')](_0x0f4c('0x5')),'defaultValue':null},'flag':{'type':Sequelize[_0x0f4c('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x0f4c('0x3')],'defaultValue':''},'stamp':{'type':_0x0f4c('0x6'),'defaultValue':Sequelize[_0x0f4c('0x7')](_0x0f4c('0x8'))}};
\ No newline at end of file
index 89fddd2..7f783cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f17=['type','VIRTUAL','count','includeAll','include','findAll','rows','catch','show','params','keys','options','create','body','find','download','recording','msg_id','Sequelize','VoiceMailMessage\x20not\x20found','audio/wav','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','set','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','status','json','offset','undefined','limit','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','VoiceMailMessage','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x52c581,_0x504d3b){var _0x16ca58=function(_0x58631e){while(--_0x58631e){_0x52c581['push'](_0x52c581['shift']());}};_0x16ca58(++_0x504d3b);}(_0x4f17,0x6d));var _0x74f1=function(_0x545a3a,_0x3123aa){_0x545a3a=_0x545a3a-0x0;var _0x5a5493=_0x4f17[_0x545a3a];return _0x5a5493;};'use strict';var emlformat=require(_0x74f1('0x0'));var rimraf=require(_0x74f1('0x1'));var zipdir=require(_0x74f1('0x2'));var jsonpatch=require(_0x74f1('0x3'));var rp=require(_0x74f1('0x4'));var moment=require('moment');var BPromise=require(_0x74f1('0x5'));var Mustache=require(_0x74f1('0x6'));var util=require(_0x74f1('0x7'));var path=require('path');var sox=require(_0x74f1('0x8'));var csv=require(_0x74f1('0x9'));var ejs=require(_0x74f1('0xa'));var fs=require('fs');var fs_extra=require(_0x74f1('0xb'));var _=require('lodash');var squel=require(_0x74f1('0xc'));var crypto=require(_0x74f1('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x74f1('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x74f1('0xf'));var Redis=require(_0x74f1('0x10'));var authService=require(_0x74f1('0x11'));var qs=require(_0x74f1('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x74f1('0x13'));var logger=require(_0x74f1('0x14'))(_0x74f1('0x15'));var utils=require(_0x74f1('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x141d97,_0x9ec7eb){_0x9ec7eb=_0x9ec7eb||0xcc;return function(_0x268209){if(_0x268209){return _0x141d97['sendStatus'](_0x9ec7eb);}return _0x141d97[_0x74f1('0x17')](_0x9ec7eb)['end']();};}function respondWithResult(_0x427f94,_0x1980ae){_0x1980ae=_0x1980ae||0xc8;return function(_0x40ad40){if(_0x40ad40){return _0x427f94[_0x74f1('0x17')](_0x1980ae)[_0x74f1('0x18')](_0x40ad40);}};}function respondWithFilteredResult(_0x2cd541,_0x2629f9){return function(_0xdb255c){if(_0xdb255c){var _0x268b36=typeof _0x2629f9[_0x74f1('0x19')]===_0x74f1('0x1a')&&typeof _0x2629f9[_0x74f1('0x1b')]===_0x74f1('0x1a');var _0x222949=_0xdb255c['count'];var _0x36079c=_0x268b36?0x0:_0x2629f9[_0x74f1('0x19')];var _0x4f0169=_0x268b36?_0xdb255c['count']:_0x2629f9[_0x74f1('0x19')]+_0x2629f9[_0x74f1('0x1b')];var _0x5111d0;if(_0x4f0169>=_0x222949){_0x4f0169=_0x222949;_0x5111d0=0xc8;}else{_0x5111d0=0xce;}_0x2cd541[_0x74f1('0x17')](_0x5111d0);return _0x2cd541['set']('Content-Range',_0x36079c+'-'+_0x4f0169+'/'+_0x222949)['json'](_0xdb255c);}return null;};}function patchUpdates(_0x41afae){return function(_0x1ebf58){try{jsonpatch[_0x74f1('0x1c')](_0x1ebf58,_0x41afae,!![]);}catch(_0x530fc4){return BPromise[_0x74f1('0x1d')](_0x530fc4);}return _0x1ebf58[_0x74f1('0x1e')]();};}function saveUpdates(_0x3a1532,_0x57aa1f){return function(_0x184221){if(_0x184221){return _0x184221[_0x74f1('0x1f')](_0x3a1532)['then'](function(_0x2490cb){return _0x2490cb;});}return null;};}function removeEntity(_0x2e2310,_0x4ce2ee){return function(_0x1d476a){if(_0x1d476a){return _0x1d476a[_0x74f1('0x20')]()[_0x74f1('0x21')](function(){_0x2e2310[_0x74f1('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x49203f,_0x42cbc7){return function(_0x5dee2b){if(!_0x5dee2b){_0x49203f[_0x74f1('0x22')](0x194);}return _0x5dee2b;};}function handleError(_0x259c61,_0x588380){_0x588380=_0x588380||0x1f4;return function(_0x2f686d){logger[_0x74f1('0x23')](_0x2f686d[_0x74f1('0x24')]);if(_0x2f686d[_0x74f1('0x25')]){delete _0x2f686d[_0x74f1('0x25')];}_0x259c61[_0x74f1('0x17')](_0x588380)[_0x74f1('0x26')](_0x2f686d);};}exports[_0x74f1('0x27')]=function(_0x18ab23,_0x792546){var _0x431c15={},_0x3b0065={},_0xf0a8ce={'count':0x0,'rows':[]};var _0x2574fd=_[_0x74f1('0x28')](db[_0x74f1('0x29')]['rawAttributes'],function(_0x18ca4e){return{'name':_0x18ca4e[_0x74f1('0x2a')],'type':_0x18ca4e['type'][_0x74f1('0x2b')]};});_0x3b0065[_0x74f1('0x2c')]=_['differenceBy'](_['map'](_0x2574fd,_0x74f1('0x25')),[_0x74f1('0x25')]);_0x3b0065[_0x74f1('0x2d')]=_['keys'](_0x18ab23[_0x74f1('0x2d')]);_0x3b0065[_0x74f1('0x2e')]=_[_0x74f1('0x2f')](_0x3b0065['model'],_0x3b0065['query']);_0x431c15['attributes']=_[_0x74f1('0x2f')](_0x3b0065[_0x74f1('0x2c')],qs[_0x74f1('0x30')](_0x18ab23[_0x74f1('0x2d')][_0x74f1('0x30')]));_0x431c15['attributes']=_0x431c15[_0x74f1('0x31')][_0x74f1('0x32')]?_0x431c15[_0x74f1('0x31')]:_0x3b0065[_0x74f1('0x2c')];if(!_0x18ab23['query'][_0x74f1('0x33')](_0x74f1('0x34'))){_0x431c15[_0x74f1('0x1b')]=qs[_0x74f1('0x1b')](_0x18ab23[_0x74f1('0x2d')][_0x74f1('0x1b')]);_0x431c15[_0x74f1('0x19')]=qs['offset'](_0x18ab23['query'][_0x74f1('0x19')]);}_0x431c15[_0x74f1('0x35')]=qs[_0x74f1('0x36')](_0x18ab23[_0x74f1('0x2d')]['sort']);_0x431c15[_0x74f1('0x37')]=qs[_0x74f1('0x2e')](_[_0x74f1('0x38')](_0x18ab23[_0x74f1('0x2d')],_0x3b0065['filters']),_0x2574fd);if(_0x18ab23[_0x74f1('0x2d')][_0x74f1('0x39')]){_0x431c15[_0x74f1('0x37')]=_[_0x74f1('0x3a')](_0x431c15['where'],{'$or':_['map'](_0x2574fd,function(_0x539dff){if(_0x539dff[_0x74f1('0x3b')]!==_0x74f1('0x3c')){var _0x1d5035={};_0x1d5035[_0x539dff[_0x74f1('0x25')]]={'$like':'%'+_0x18ab23[_0x74f1('0x2d')]['filter']+'%'};return _0x1d5035;}})});}_0x431c15=_['merge']({},_0x431c15,_0x18ab23['options']);var _0x46dcab={'where':_0x431c15[_0x74f1('0x37')]};return db['VoiceMailMessage'][_0x74f1('0x3d')](_0x46dcab)['then'](function(_0xd65bd6){_0xf0a8ce[_0x74f1('0x3d')]=_0xd65bd6;if(_0x18ab23['query'][_0x74f1('0x3e')]){_0x431c15[_0x74f1('0x3f')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0x74f1('0x40')](_0x431c15);})[_0x74f1('0x21')](function(_0x47086e){_0xf0a8ce[_0x74f1('0x41')]=_0x47086e;return _0xf0a8ce;})[_0x74f1('0x21')](respondWithFilteredResult(_0x792546,_0x431c15))[_0x74f1('0x42')](handleError(_0x792546,null));};exports[_0x74f1('0x43')]=function(_0x148658,_0x38896f){var _0x5598f8={'raw':!![],'where':{'id':_0x148658[_0x74f1('0x44')]['id']}},_0xac5f7f={};_0xac5f7f[_0x74f1('0x2c')]=_[_0x74f1('0x45')](db[_0x74f1('0x29')]['rawAttributes']);_0xac5f7f[_0x74f1('0x2d')]=_[_0x74f1('0x45')](_0x148658[_0x74f1('0x2d')]);_0xac5f7f['filters']=_[_0x74f1('0x2f')](_0xac5f7f[_0x74f1('0x2c')],_0xac5f7f['query']);_0x5598f8[_0x74f1('0x31')]=_[_0x74f1('0x2f')](_0xac5f7f['model'],qs[_0x74f1('0x30')](_0x148658['query'][_0x74f1('0x30')]));_0x5598f8[_0x74f1('0x31')]=_0x5598f8[_0x74f1('0x31')][_0x74f1('0x32')]?_0x5598f8['attributes']:_0xac5f7f['model'];if(_0x148658[_0x74f1('0x2d')][_0x74f1('0x3e')]){_0x5598f8[_0x74f1('0x3f')]=[{'all':!![]}];}_0x5598f8=_[_0x74f1('0x3a')]({},_0x5598f8,_0x148658[_0x74f1('0x46')]);return db[_0x74f1('0x29')]['find'](_0x5598f8)[_0x74f1('0x21')](handleEntityNotFound(_0x38896f,null))[_0x74f1('0x21')](respondWithResult(_0x38896f,null))[_0x74f1('0x42')](handleError(_0x38896f,null));};exports['create']=function(_0x4c4c7d,_0x2548c8){return db[_0x74f1('0x29')][_0x74f1('0x47')](_0x4c4c7d[_0x74f1('0x48')],{})['then'](respondWithResult(_0x2548c8,0xc9))[_0x74f1('0x42')](handleError(_0x2548c8,null));};exports[_0x74f1('0x1f')]=function(_0xf43d17,_0x38117f){if(_0xf43d17[_0x74f1('0x48')]['id']){delete _0xf43d17[_0x74f1('0x48')]['id'];}return db[_0x74f1('0x29')][_0x74f1('0x49')]({'where':{'id':_0xf43d17['params']['id']}})[_0x74f1('0x21')](handleEntityNotFound(_0x38117f,null))[_0x74f1('0x21')](saveUpdates(_0xf43d17[_0x74f1('0x48')],null))['then'](respondWithResult(_0x38117f,null))[_0x74f1('0x42')](handleError(_0x38117f,null));};exports[_0x74f1('0x20')]=function(_0x68c020,_0x212956){return db[_0x74f1('0x29')][_0x74f1('0x49')]({'where':{'id':_0x68c020[_0x74f1('0x44')]['id']}})['then'](handleEntityNotFound(_0x212956,null))[_0x74f1('0x21')](removeEntity(_0x212956,null))[_0x74f1('0x42')](handleError(_0x212956,null));};exports[_0x74f1('0x4a')]=function(_0x5b7b90,_0x2234cc,_0x255ce5){return db['VoiceMailMessage'][_0x74f1('0x49')]({'where':{'id':_0x5b7b90[_0x74f1('0x44')]['id']},'attributes':['id',_0x74f1('0x4b'),_0x74f1('0x4c')]})['then'](handleEntityNotFound(_0x2234cc,null))[_0x74f1('0x21')](function(_0x4000f0){if(_0x4000f0){if(!_0x4000f0['recording']){throw new db[(_0x74f1('0x4d'))]['ValidationError'](_0x74f1('0x4e'));}var _0x158cef={'Content-Type':_0x74f1('0x4f'),'Content-Disposition':'attachment'};if(_0x4000f0[_0x74f1('0x4c')]){_0x158cef[_0x74f1('0x50')]=_0x74f1('0x51')+_0x4000f0['msg_id']+_0x74f1('0x52');}_0x2234cc[_0x74f1('0x53')](_0x158cef);return _0x2234cc[_0x74f1('0x26')](new Buffer(_0x4000f0['recording']));}})[_0x74f1('0x42')](handleError(_0x2234cc,null));};
\ No newline at end of file
+var _0x27b5=['key','model','differenceBy','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','destroy','download','recording','msg_id','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','send','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','name','index','VoiceMailMessage','rawAttributes','fieldName'];(function(_0x34aa1b,_0x4ea19c){var _0x245340=function(_0x406243){while(--_0x406243){_0x34aa1b['push'](_0x34aa1b['shift']());}};_0x245340(++_0x4ea19c);}(_0x27b5,0x197));var _0x527b=function(_0x4b6507,_0x5518b5){_0x4b6507=_0x4b6507-0x0;var _0x2001ec=_0x27b5[_0x4b6507];return _0x2001ec;};'use strict';var emlformat=require(_0x527b('0x0'));var rimraf=require(_0x527b('0x1'));var zipdir=require(_0x527b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x527b('0x3'));var moment=require(_0x527b('0x4'));var BPromise=require(_0x527b('0x5'));var Mustache=require(_0x527b('0x6'));var util=require('util');var path=require(_0x527b('0x7'));var sox=require(_0x527b('0x8'));var csv=require(_0x527b('0x9'));var ejs=require(_0x527b('0xa'));var fs=require('fs');var fs_extra=require(_0x527b('0xb'));var _=require(_0x527b('0xc'));var squel=require(_0x527b('0xd'));var crypto=require(_0x527b('0xe'));var jsforce=require(_0x527b('0xf'));var deskjs=require(_0x527b('0x10'));var toCsv=require(_0x527b('0x9'));var querystring=require(_0x527b('0x11'));var Papa=require(_0x527b('0x12'));var Redis=require(_0x527b('0x13'));var authService=require(_0x527b('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x527b('0x15'));var hardwareService=require(_0x527b('0x16'));var logger=require(_0x527b('0x17'))(_0x527b('0x18'));var utils=require(_0x527b('0x19'));var config=require(_0x527b('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x527b('0x1b'))['db'];function respondWithStatusCode(_0x7f3c7b,_0x24386d){_0x24386d=_0x24386d||0xcc;return function(_0x428318){if(_0x428318){return _0x7f3c7b[_0x527b('0x1c')](_0x24386d);}return _0x7f3c7b[_0x527b('0x1d')](_0x24386d)[_0x527b('0x1e')]();};}function respondWithResult(_0x5474fc,_0x3a6572){_0x3a6572=_0x3a6572||0xc8;return function(_0x1b80c4){if(_0x1b80c4){return _0x5474fc[_0x527b('0x1d')](_0x3a6572)[_0x527b('0x1f')](_0x1b80c4);}};}function respondWithFilteredResult(_0xc98ffb,_0x249545){return function(_0x819517){if(_0x819517){var _0x56053e=typeof _0x249545[_0x527b('0x20')]===_0x527b('0x21')&&typeof _0x249545['limit']===_0x527b('0x21');var _0xe6a034=_0x819517[_0x527b('0x22')];var _0x203727=_0x56053e?0x0:_0x249545[_0x527b('0x20')];var _0x5d9b84=_0x56053e?_0x819517[_0x527b('0x22')]:_0x249545[_0x527b('0x20')]+_0x249545[_0x527b('0x23')];var _0xe7d96d;if(_0x5d9b84>=_0xe6a034){_0x5d9b84=_0xe6a034;_0xe7d96d=0xc8;}else{_0xe7d96d=0xce;}_0xc98ffb['status'](_0xe7d96d);return _0xc98ffb[_0x527b('0x24')](_0x527b('0x25'),_0x203727+'-'+_0x5d9b84+'/'+_0xe6a034)[_0x527b('0x1f')](_0x819517);}return null;};}function patchUpdates(_0x4b0135){return function(_0x3c8a4c){try{jsonpatch[_0x527b('0x26')](_0x3c8a4c,_0x4b0135,!![]);}catch(_0x53371b){return BPromise[_0x527b('0x27')](_0x53371b);}return _0x3c8a4c[_0x527b('0x28')]();};}function saveUpdates(_0x550c80,_0x303c3f){return function(_0x3f35c8){if(_0x3f35c8){return _0x3f35c8[_0x527b('0x29')](_0x550c80)[_0x527b('0x2a')](function(_0x46a24e){return _0x46a24e;});}return null;};}function removeEntity(_0x4a18eb,_0x3d4fd0){return function(_0x4f25bf){if(_0x4f25bf){return _0x4f25bf['destroy']()[_0x527b('0x2a')](function(){_0x4a18eb[_0x527b('0x1d')](0xcc)[_0x527b('0x1e')]();});}};}function handleEntityNotFound(_0x288594,_0x3e47b3){return function(_0x94cb33){if(!_0x94cb33){_0x288594['sendStatus'](0x194);}return _0x94cb33;};}function handleError(_0x31690a,_0x3d230e){_0x3d230e=_0x3d230e||0x1f4;return function(_0x1e6c9c){logger['error'](_0x1e6c9c['stack']);if(_0x1e6c9c[_0x527b('0x2b')]){delete _0x1e6c9c[_0x527b('0x2b')];}_0x31690a['status'](_0x3d230e)['send'](_0x1e6c9c);};}exports[_0x527b('0x2c')]=function(_0x21cd6e,_0x2b19cb){var _0x585f1f={},_0xcd547c={},_0x153787={'count':0x0,'rows':[]};var _0x518873=_['map'](db[_0x527b('0x2d')][_0x527b('0x2e')],function(_0x2a11fa){return{'name':_0x2a11fa[_0x527b('0x2f')],'type':_0x2a11fa['type'][_0x527b('0x30')]};});_0xcd547c[_0x527b('0x31')]=_[_0x527b('0x32')](_[_0x527b('0x33')](_0x518873,_0x527b('0x2b')),[_0x527b('0x2b')]);_0xcd547c[_0x527b('0x34')]=_['keys'](_0x21cd6e[_0x527b('0x34')]);_0xcd547c[_0x527b('0x35')]=_['intersection'](_0xcd547c['model'],_0xcd547c[_0x527b('0x34')]);_0x585f1f[_0x527b('0x36')]=_[_0x527b('0x37')](_0xcd547c['model'],qs[_0x527b('0x38')](_0x21cd6e[_0x527b('0x34')][_0x527b('0x38')]));_0x585f1f[_0x527b('0x36')]=_0x585f1f['attributes'][_0x527b('0x39')]?_0x585f1f['attributes']:_0xcd547c[_0x527b('0x31')];if(!_0x21cd6e['query'][_0x527b('0x3a')](_0x527b('0x3b'))){_0x585f1f[_0x527b('0x23')]=qs[_0x527b('0x23')](_0x21cd6e['query'][_0x527b('0x23')]);_0x585f1f[_0x527b('0x20')]=qs[_0x527b('0x20')](_0x21cd6e[_0x527b('0x34')][_0x527b('0x20')]);}_0x585f1f[_0x527b('0x3c')]=qs['sort'](_0x21cd6e[_0x527b('0x34')][_0x527b('0x3d')]);_0x585f1f[_0x527b('0x3e')]=qs[_0x527b('0x35')](_['pick'](_0x21cd6e[_0x527b('0x34')],_0xcd547c['filters']),_0x518873);if(_0x21cd6e[_0x527b('0x34')][_0x527b('0x3f')]){_0x585f1f['where']=_[_0x527b('0x40')](_0x585f1f[_0x527b('0x3e')],{'$or':_[_0x527b('0x33')](_0x518873,function(_0x18edba){if(_0x18edba[_0x527b('0x41')]!==_0x527b('0x42')){var _0x4f1459={};_0x4f1459[_0x18edba['name']]={'$like':'%'+_0x21cd6e[_0x527b('0x34')]['filter']+'%'};return _0x4f1459;}})});}_0x585f1f=_['merge']({},_0x585f1f,_0x21cd6e[_0x527b('0x43')]);var _0x32a554={'where':_0x585f1f[_0x527b('0x3e')]};return db['VoiceMailMessage'][_0x527b('0x22')](_0x32a554)[_0x527b('0x2a')](function(_0x4dbbe9){_0x153787[_0x527b('0x22')]=_0x4dbbe9;if(_0x21cd6e[_0x527b('0x34')][_0x527b('0x44')]){_0x585f1f[_0x527b('0x45')]=[{'all':!![]}];}return db[_0x527b('0x2d')][_0x527b('0x46')](_0x585f1f);})[_0x527b('0x2a')](function(_0xd02e82){_0x153787[_0x527b('0x47')]=_0xd02e82;return _0x153787;})[_0x527b('0x2a')](respondWithFilteredResult(_0x2b19cb,_0x585f1f))[_0x527b('0x48')](handleError(_0x2b19cb,null));};exports[_0x527b('0x49')]=function(_0xb15fcf,_0x58f8ef){var _0x446f72={'raw':!![],'where':{'id':_0xb15fcf[_0x527b('0x4a')]['id']}},_0x192a9e={};_0x192a9e[_0x527b('0x31')]=_[_0x527b('0x4b')](db[_0x527b('0x2d')][_0x527b('0x2e')]);_0x192a9e[_0x527b('0x34')]=_[_0x527b('0x4b')](_0xb15fcf[_0x527b('0x34')]);_0x192a9e[_0x527b('0x35')]=_[_0x527b('0x37')](_0x192a9e[_0x527b('0x31')],_0x192a9e[_0x527b('0x34')]);_0x446f72[_0x527b('0x36')]=_[_0x527b('0x37')](_0x192a9e['model'],qs['fields'](_0xb15fcf[_0x527b('0x34')][_0x527b('0x38')]));_0x446f72['attributes']=_0x446f72[_0x527b('0x36')][_0x527b('0x39')]?_0x446f72[_0x527b('0x36')]:_0x192a9e[_0x527b('0x31')];if(_0xb15fcf[_0x527b('0x34')][_0x527b('0x44')]){_0x446f72[_0x527b('0x45')]=[{'all':!![]}];}_0x446f72=_['merge']({},_0x446f72,_0xb15fcf[_0x527b('0x43')]);return db['VoiceMailMessage'][_0x527b('0x4c')](_0x446f72)['then'](handleEntityNotFound(_0x58f8ef,null))['then'](respondWithResult(_0x58f8ef,null))[_0x527b('0x48')](handleError(_0x58f8ef,null));};exports[_0x527b('0x4d')]=function(_0x183c81,_0x1cf3a9){return db[_0x527b('0x2d')][_0x527b('0x4d')](_0x183c81[_0x527b('0x4e')],{})[_0x527b('0x2a')](respondWithResult(_0x1cf3a9,0xc9))['catch'](handleError(_0x1cf3a9,null));};exports[_0x527b('0x29')]=function(_0x357f4f,_0x55dde8){if(_0x357f4f['body']['id']){delete _0x357f4f[_0x527b('0x4e')]['id'];}return db[_0x527b('0x2d')][_0x527b('0x4c')]({'where':{'id':_0x357f4f[_0x527b('0x4a')]['id']}})['then'](handleEntityNotFound(_0x55dde8,null))['then'](saveUpdates(_0x357f4f[_0x527b('0x4e')],null))[_0x527b('0x2a')](respondWithResult(_0x55dde8,null))[_0x527b('0x48')](handleError(_0x55dde8,null));};exports[_0x527b('0x4f')]=function(_0x447b07,_0x56ebdf){return db[_0x527b('0x2d')][_0x527b('0x4c')]({'where':{'id':_0x447b07[_0x527b('0x4a')]['id']}})[_0x527b('0x2a')](handleEntityNotFound(_0x56ebdf,null))['then'](removeEntity(_0x56ebdf,null))[_0x527b('0x48')](handleError(_0x56ebdf,null));};exports[_0x527b('0x50')]=function(_0x3f3e9e,_0x10ceba,_0x492d11){return db['VoiceMailMessage']['find']({'where':{'id':_0x3f3e9e[_0x527b('0x4a')]['id']},'attributes':['id',_0x527b('0x51'),_0x527b('0x52')]})[_0x527b('0x2a')](handleEntityNotFound(_0x10ceba,null))[_0x527b('0x2a')](function(_0x32f578){if(_0x32f578){if(!_0x32f578[_0x527b('0x51')]){throw new db['Sequelize'][(_0x527b('0x53'))](_0x527b('0x54'));}var _0x348112={'Content-Type':_0x527b('0x55'),'Content-Disposition':_0x527b('0x56')};if(_0x32f578[_0x527b('0x52')]){_0x348112[_0x527b('0x57')]=_0x527b('0x58')+_0x32f578[_0x527b('0x52')]+_0x527b('0x59');}_0x10ceba[_0x527b('0x24')](_0x348112);return _0x10ceba[_0x527b('0x5a')](new Buffer(_0x32f578[_0x527b('0x51')]));}})[_0x527b('0x48')](handleError(_0x10ceba,null));};
\ No newline at end of file
index 7b0d549..61ee821 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d58=['dir','lodash','../../config/logger','api','moment','request-promise','path','../../config/environment','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages'];(function(_0x1d5576,_0x4b39b0){var _0x4f7fa9=function(_0x28716e){while(--_0x28716e){_0x1d5576['push'](_0x1d5576['shift']());}};_0x4f7fa9(++_0x4b39b0);}(_0x6d58,0xeb));var _0x86d5=function(_0x225803,_0xa3d7b8){_0x225803=_0x225803-0x0;var _0x36619c=_0x6d58[_0x225803];return _0x36619c;};'use strict';var _=require(_0x86d5('0x0'));var util=require('util');var logger=require(_0x86d5('0x1'))(_0x86d5('0x2'));var moment=require(_0x86d5('0x3'));var BPromise=require('bluebird');var rp=require(_0x86d5('0x4'));var fs=require('fs');var path=require(_0x86d5('0x5'));var rimraf=require('rimraf');var config=require(_0x86d5('0x6'));var attributes=require(_0x86d5('0x7'));module[_0x86d5('0x8')]=function(_0x13996d,_0x1b32b7){return _0x13996d[_0x86d5('0x9')](_0x86d5('0xa'),attributes,{'tableName':_0x86d5('0xb'),'paranoid':![],'indexes':[{'name':_0x86d5('0xc'),'fields':[_0x86d5('0xc')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xa04d=['../../config/environment','./voiceMailMessage.attributes','exports','define','dir','lodash','util','moment','path','rimraf'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa04d,0x145));var _0xda04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa04d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xda04('0x0'));var util=require(_0xda04('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xda04('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xda04('0x3'));var rimraf=require(_0xda04('0x4'));var config=require(_0xda04('0x5'));var attributes=require(_0xda04('0x6'));module[_0xda04('0x7')]=function(_0x36d0b5,_0x9e6f94){return _0x36d0b5[_0xda04('0x8')]('VoiceMailMessage',attributes,{'tableName':'voice_voicemail_messages','paranoid':![],'indexes':[{'name':_0xda04('0x9'),'fields':[_0xda04('0x9')]}],'timestamps':![]});};
\ No newline at end of file
index 4c8cb79..a34abfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0ed=['code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x110274,_0x330176){var _0x565276=function(_0x11a6b8){while(--_0x11a6b8){_0x110274['push'](_0x110274['shift']());}};_0x565276(++_0x330176);}(_0xd0ed,0x1e7));var _0xdd0e=function(_0x5123b8,_0x29dfdc){_0x5123b8=_0x5123b8-0x0;var _0x3da0d5=_0xd0ed[_0x5123b8];return _0x3da0d5;};'use strict';var _=require(_0xdd0e('0x0'));var util=require(_0xdd0e('0x1'));var moment=require(_0xdd0e('0x2'));var BPromise=require(_0xdd0e('0x3'));var rs=require(_0xdd0e('0x4'));var fs=require('fs');var Redis=require(_0xdd0e('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xdd0e('0x6'))(_0xdd0e('0x7'));var config=require(_0xdd0e('0x8'));var jayson=require(_0xdd0e('0x9'));var client=jayson[_0xdd0e('0xa')][_0xdd0e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x6f4a30,_0x1bcf03,_0x229ea4){return new BPromise(function(_0x503b61,_0x40f4c5){return client[_0xdd0e('0xc')](_0x6f4a30,_0x229ea4)['then'](function(_0x359858){logger[_0xdd0e('0xd')](_0xdd0e('0xe'),_0x1bcf03,_0xdd0e('0xf'));logger[_0xdd0e('0x10')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x1bcf03,_0xdd0e('0xf'),JSON[_0xdd0e('0x11')](_0x359858));if(_0x359858[_0xdd0e('0x12')]){if(_0x359858[_0xdd0e('0x12')][_0xdd0e('0x13')]===0x1f4){logger[_0xdd0e('0x12')](_0xdd0e('0xe'),_0x1bcf03,_0x359858[_0xdd0e('0x12')]['message']);return _0x40f4c5(_0x359858[_0xdd0e('0x12')][_0xdd0e('0x14')]);}logger[_0xdd0e('0x12')](_0xdd0e('0xe'),_0x1bcf03,_0x359858[_0xdd0e('0x12')][_0xdd0e('0x14')]);return _0x503b61(_0x359858[_0xdd0e('0x12')][_0xdd0e('0x14')]);}else{logger[_0xdd0e('0xd')](_0xdd0e('0xe'),_0x1bcf03,'request\x20sent');_0x503b61(_0x359858[_0xdd0e('0x15')]['message']);}})['catch'](function(_0x1a6477){logger[_0xdd0e('0x12')](_0xdd0e('0xe'),_0x1bcf03,_0x1a6477);_0x40f4c5(_0x1a6477);});});}
\ No newline at end of file
+var _0x0235=['request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceMailMessage,\x20%s,\x20%s'];(function(_0x170741,_0x42ff39){var _0x1d68af=function(_0x3d4fd9){while(--_0x3d4fd9){_0x170741['push'](_0x170741['shift']());}};_0x1d68af(++_0x42ff39);}(_0x0235,0x1e9));var _0x5023=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x0235[_0x4d8ed9];return _0x1e2140;};'use strict';var _=require(_0x5023('0x0'));var util=require(_0x5023('0x1'));var moment=require(_0x5023('0x2'));var BPromise=require(_0x5023('0x3'));var rs=require(_0x5023('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5023('0x5'));var logger=require(_0x5023('0x6'))(_0x5023('0x7'));var config=require(_0x5023('0x8'));var jayson=require(_0x5023('0x9'));var client=jayson[_0x5023('0xa')][_0x5023('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5432c3,_0x1a0b21,_0x2d095f){return new BPromise(function(_0x982178,_0x60affd){return client['request'](_0x5432c3,_0x2d095f)[_0x5023('0xc')](function(_0x1d051f){logger[_0x5023('0xd')](_0x5023('0xe'),_0x1a0b21,_0x5023('0xf'));logger[_0x5023('0x10')](_0x5023('0x11'),_0x1a0b21,_0x5023('0xf'),JSON[_0x5023('0x12')](_0x1d051f));if(_0x1d051f[_0x5023('0x13')]){if(_0x1d051f[_0x5023('0x13')][_0x5023('0x14')]===0x1f4){logger[_0x5023('0x13')](_0x5023('0xe'),_0x1a0b21,_0x1d051f[_0x5023('0x13')][_0x5023('0x15')]);return _0x60affd(_0x1d051f[_0x5023('0x13')]['message']);}logger[_0x5023('0x13')]('VoiceMailMessage,\x20%s,\x20%s',_0x1a0b21,_0x1d051f['error'][_0x5023('0x15')]);return _0x982178(_0x1d051f[_0x5023('0x13')][_0x5023('0x15')]);}else{logger['info'](_0x5023('0xe'),_0x1a0b21,_0x5023('0xf'));_0x982178(_0x1d051f[_0x5023('0x16')][_0x5023('0x15')]);}})[_0x5023('0x17')](function(_0x2f63c3){logger[_0x5023('0x13')](_0x5023('0xe'),_0x1a0b21,_0x2f63c3);_0x60affd(_0x2f63c3);});});}
\ No newline at end of file
index d98c8bc..c932e1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5618=['post','create','addSound','put','update','delete','destroy','/:id/sounds/:id2','removeSound','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','/:id/sounds','getSounds'];(function(_0x195c21,_0x332612){var _0x3576a8=function(_0xa4bde2){while(--_0xa4bde2){_0x195c21['push'](_0x195c21['shift']());}};_0x3576a8(++_0x332612);}(_0x5618,0x6a));var _0x8561=function(_0x4267ab,_0x4e32e3){_0x4267ab=_0x4267ab-0x0;var _0x5f45c7=_0x5618[_0x4267ab];return _0x5f45c7;};'use strict';var multer=require('multer');var util=require(_0x8561('0x0'));var path=require(_0x8561('0x1'));var timeout=require(_0x8561('0x2'));var express=require(_0x8561('0x3'));var router=express['Router']();var fs_extra=require(_0x8561('0x4'));var auth=require(_0x8561('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8561('0x6'));var controller=require(_0x8561('0x7'));router[_0x8561('0x8')]('/',auth[_0x8561('0x9')](),controller[_0x8561('0xa')]);router[_0x8561('0x8')](_0x8561('0xb'),auth[_0x8561('0x9')](),controller['show']);router[_0x8561('0x8')](_0x8561('0xc'),auth[_0x8561('0x9')](),controller[_0x8561('0xd')]);router[_0x8561('0xe')]('/',auth[_0x8561('0x9')](),controller[_0x8561('0xf')]);router['post']('/:id/sounds',auth[_0x8561('0x9')](),controller[_0x8561('0x10')]);router[_0x8561('0x11')](_0x8561('0xb'),auth[_0x8561('0x9')](),controller[_0x8561('0x12')]);router[_0x8561('0x13')]('/:id',auth[_0x8561('0x9')](),controller[_0x8561('0x14')]);router['delete'](_0x8561('0x15'),auth[_0x8561('0x9')](),controller[_0x8561('0x16')]);module[_0x8561('0x17')]=router;
\ No newline at end of file
+var _0xd6f2=['util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','show','post','/:id/sounds','isAuthenticated','addSound','put','update','delete','/:id','destroy','removeSound','multer'];(function(_0xb3621e,_0xa34e43){var _0x5a3c28=function(_0x37dc62){while(--_0x37dc62){_0xb3621e['push'](_0xb3621e['shift']());}};_0x5a3c28(++_0xa34e43);}(_0xd6f2,0x9f));var _0x2d6f=function(_0x29747f,_0x4b08e6){_0x29747f=_0x29747f-0x0;var _0x306eba=_0xd6f2[_0x29747f];return _0x306eba;};'use strict';var multer=require(_0x2d6f('0x0'));var util=require(_0x2d6f('0x1'));var path=require(_0x2d6f('0x2'));var timeout=require(_0x2d6f('0x3'));var express=require('express');var router=express[_0x2d6f('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x2d6f('0x5'));var config=require(_0x2d6f('0x6'));var controller=require(_0x2d6f('0x7'));router[_0x2d6f('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x2d6f('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x2d6f('0x9')]);router[_0x2d6f('0x8')]('/:id/sounds',auth['isAuthenticated'](),controller['getSounds']);router[_0x2d6f('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2d6f('0xa')](_0x2d6f('0xb'),auth[_0x2d6f('0xc')](),controller[_0x2d6f('0xd')]);router[_0x2d6f('0xe')]('/:id',auth[_0x2d6f('0xc')](),controller[_0x2d6f('0xf')]);router[_0x2d6f('0x10')](_0x2d6f('0x11'),auth[_0x2d6f('0xc')](),controller[_0x2d6f('0x12')]);router[_0x2d6f('0x10')]('/:id/sounds/:id2',auth[_0x2d6f('0xc')](),controller[_0x2d6f('0x13')]);module['exports']=router;
\ No newline at end of file
index 4055d2e..3a09d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc10f=['exports','STRING','name','ENUM','files','mp3nb','quietmp3nb','mp3','alpha','TIMESTAMP','BOOLEAN','sequelize'];(function(_0x3763d2,_0x248a0e){var _0x1bdc07=function(_0x2717f5){while(--_0x2717f5){_0x3763d2['push'](_0x3763d2['shift']());}};_0x1bdc07(++_0x248a0e);}(_0xc10f,0xd7));var _0xfc10=function(_0x4eb6b4,_0x27de4f){_0x4eb6b4=_0x4eb6b4-0x0;var _0xe71e6f=_0xc10f[_0x4eb6b4];return _0xe71e6f;};'use strict';var Sequelize=require(_0xfc10('0x0'));module[_0xfc10('0x1')]={'name':{'type':Sequelize[_0xfc10('0x2')],'allowNull':![],'unique':_0xfc10('0x3')},'mode':{'type':Sequelize[_0xfc10('0x4')]('custom',_0xfc10('0x5'),_0xfc10('0x6'),_0xfc10('0x7'),'quietmp3',_0xfc10('0x8')),'allowNull':!![],'defaultValue':'files'},'directory':{'type':Sequelize[_0xfc10('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0xfc10('0x2')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize[_0xfc10('0x2')],'allowNull':!![],'defaultValue':_0xfc10('0x9')},'format':{'type':Sequelize[_0xfc10('0x2')],'allowNull':!![]},'stamp':{'type':_0xfc10('0xa')},'defaultEntry':{'type':Sequelize[_0xfc10('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7dcc=['mp3nb','quietmp3nb','quietmp3','mp3','STRING','BOOLEAN','exports','name','ENUM','custom','files'];(function(_0x8de54f,_0x271987){var _0x14cba4=function(_0x58ed41){while(--_0x58ed41){_0x8de54f['push'](_0x8de54f['shift']());}};_0x14cba4(++_0x271987);}(_0x7dcc,0x1a8));var _0xc7dc=function(_0x1d246a,_0x49be62){_0x1d246a=_0x1d246a-0x0;var _0x4f233b=_0x7dcc[_0x1d246a];return _0x4f233b;};'use strict';var Sequelize=require('sequelize');module[_0xc7dc('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc7dc('0x1')},'mode':{'type':Sequelize[_0xc7dc('0x2')](_0xc7dc('0x3'),_0xc7dc('0x4'),_0xc7dc('0x5'),_0xc7dc('0x6'),_0xc7dc('0x7'),_0xc7dc('0x8')),'allowNull':!![],'defaultValue':_0xc7dc('0x4')},'directory':{'type':Sequelize[_0xc7dc('0x9')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0xc7dc('0x9')],'allowNull':!![]},'sort':{'type':Sequelize[_0xc7dc('0x9')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0xc7dc('0x9')],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize[_0xc7dc('0xa')],'defaultValue':0x0}};
\ No newline at end of file
index ba9eb87..ef8a284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5260=['converted_format','createdAt','server/files/sounds/converted','format','%s.%s','extname','removeSound','id2','Sound','getSounds','pick','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','UserProfileResource','sendStatus','error','stack','name','send','index','map','VoiceMusicOnHold','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','options','includeAll','include','rows','catch','params','keys','rawAttributes','body','create','sequelize','transaction','mode','files','root','server/files/moh','mkdirSync','directory','0777','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','readdirSync','forEach','unlinkSync','join','rmdirSync','Sequelize','ValidationError','message','addSound','findOne','save_name'];(function(_0x39bdd5,_0x480d12){var _0x4b8503=function(_0x44db1c){while(--_0x44db1c){_0x39bdd5['push'](_0x39bdd5['shift']());}};_0x4b8503(++_0x480d12);}(_0x5260,0xe3));var _0x0526=function(_0x5f07a9,_0x177843){_0x5f07a9=_0x5f07a9-0x0;var _0x3e8337=_0x5260[_0x5f07a9];return _0x3e8337;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0526('0x0'));var zipdir=require(_0x0526('0x1'));var jsonpatch=require(_0x0526('0x2'));var rp=require(_0x0526('0x3'));var moment=require('moment');var BPromise=require(_0x0526('0x4'));var Mustache=require(_0x0526('0x5'));var util=require('util');var path=require('path');var sox=require(_0x0526('0x6'));var csv=require(_0x0526('0x7'));var ejs=require(_0x0526('0x8'));var fs=require('fs');var fs_extra=require(_0x0526('0x9'));var _=require(_0x0526('0xa'));var squel=require(_0x0526('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0526('0xc'));var toCsv=require(_0x0526('0x7'));var querystring=require(_0x0526('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x0526('0xe'));var qs=require(_0x0526('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0526('0x10'));var logger=require(_0x0526('0x11'))(_0x0526('0x12'));var utils=require(_0x0526('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0526('0x14'))['db'];function respondWithStatusCode(_0x1726dd,_0x4602b6){_0x4602b6=_0x4602b6||0xcc;return function(_0x172d14){if(_0x172d14){return _0x1726dd['sendStatus'](_0x4602b6);}return _0x1726dd[_0x0526('0x15')](_0x4602b6)['end']();};}function respondWithResult(_0x41b222,_0x1e2254){_0x1e2254=_0x1e2254||0xc8;return function(_0x308f08){if(_0x308f08){return _0x41b222[_0x0526('0x15')](_0x1e2254)[_0x0526('0x16')](_0x308f08);}};}function respondWithFilteredResult(_0xdaecbb,_0x410a43){return function(_0x100be3){if(_0x100be3){var _0x124315=typeof _0x410a43[_0x0526('0x17')]===_0x0526('0x18')&&typeof _0x410a43[_0x0526('0x19')]===_0x0526('0x18');var _0x1e8152=_0x100be3[_0x0526('0x1a')];var _0x44ac97=_0x124315?0x0:_0x410a43[_0x0526('0x17')];var _0x2ab63d=_0x124315?_0x100be3['count']:_0x410a43[_0x0526('0x17')]+_0x410a43[_0x0526('0x19')];var _0x58f25f;if(_0x2ab63d>=_0x1e8152){_0x2ab63d=_0x1e8152;_0x58f25f=0xc8;}else{_0x58f25f=0xce;}_0xdaecbb[_0x0526('0x15')](_0x58f25f);return _0xdaecbb['set'](_0x0526('0x1b'),_0x44ac97+'-'+_0x2ab63d+'/'+_0x1e8152)[_0x0526('0x16')](_0x100be3);}return null;};}function patchUpdates(_0x372417){return function(_0xbc48aa){try{jsonpatch[_0x0526('0x1c')](_0xbc48aa,_0x372417,!![]);}catch(_0x1c4179){return BPromise['reject'](_0x1c4179);}return _0xbc48aa[_0x0526('0x1d')]();};}function saveUpdates(_0x1e4709,_0x32f594){return function(_0xde07da){if(_0xde07da){return _0xde07da[_0x0526('0x1e')](_0x1e4709)[_0x0526('0x1f')](function(_0x1ffc79){return _0x1ffc79;});}return null;};}function removeEntity(_0x4192fd,_0x5dc2c0){return function(_0x1452b7){if(_0x1452b7){return _0x1452b7[_0x0526('0x20')]()[_0x0526('0x1f')](function(){var _0x3fd875=_0x1452b7['get']({'plain':!![]});var _0x4e0c71='MusicOnHolds';return db[_0x0526('0x21')]['destroy']({'where':{'type':_0x4e0c71,'resourceId':_0x3fd875['id']}})[_0x0526('0x1f')](function(){return _0x1452b7;});})[_0x0526('0x1f')](function(){_0x4192fd[_0x0526('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5562e9,_0x145724){return function(_0x34c142){if(!_0x34c142){_0x5562e9[_0x0526('0x22')](0x194);}return _0x34c142;};}function handleError(_0x342a64,_0x458673){_0x458673=_0x458673||0x1f4;return function(_0x1a5c2f){logger[_0x0526('0x23')](_0x1a5c2f[_0x0526('0x24')]);if(_0x1a5c2f['name']){delete _0x1a5c2f[_0x0526('0x25')];}_0x342a64[_0x0526('0x15')](_0x458673)[_0x0526('0x26')](_0x1a5c2f);};}exports[_0x0526('0x27')]=function(_0xe9315,_0x29c175){var _0x5a6031={},_0xa1fa49={},_0x48ff4e={'count':0x0,'rows':[]};var _0x404f64=_[_0x0526('0x28')](db[_0x0526('0x29')]['rawAttributes'],function(_0x53a7d7){return{'name':_0x53a7d7[_0x0526('0x2a')],'type':_0x53a7d7[_0x0526('0x2b')][_0x0526('0x2c')]};});_0xa1fa49[_0x0526('0x2d')]=_['map'](_0x404f64,_0x0526('0x25'));_0xa1fa49[_0x0526('0x2e')]=_['keys'](_0xe9315['query']);_0xa1fa49[_0x0526('0x2f')]=_[_0x0526('0x30')](_0xa1fa49[_0x0526('0x2d')],_0xa1fa49[_0x0526('0x2e')]);_0x5a6031[_0x0526('0x31')]=_[_0x0526('0x30')](_0xa1fa49[_0x0526('0x2d')],qs[_0x0526('0x32')](_0xe9315[_0x0526('0x2e')][_0x0526('0x32')]));_0x5a6031[_0x0526('0x31')]=_0x5a6031[_0x0526('0x31')][_0x0526('0x33')]?_0x5a6031[_0x0526('0x31')]:_0xa1fa49[_0x0526('0x2d')];if(!_0xe9315[_0x0526('0x2e')][_0x0526('0x34')](_0x0526('0x35'))){_0x5a6031[_0x0526('0x19')]=qs['limit'](_0xe9315[_0x0526('0x2e')][_0x0526('0x19')]);_0x5a6031[_0x0526('0x17')]=qs['offset'](_0xe9315[_0x0526('0x2e')][_0x0526('0x17')]);}_0x5a6031[_0x0526('0x36')]=qs[_0x0526('0x37')](_0xe9315['query'][_0x0526('0x37')]);delete _0xe9315[_0x0526('0x2e')][_0x0526('0x37')];_0x5a6031['where']=qs[_0x0526('0x2f')](_['pick'](_0xe9315[_0x0526('0x2e')],_0xa1fa49[_0x0526('0x2f')]),_0x404f64);if(_0xe9315[_0x0526('0x2e')][_0x0526('0x38')]){_0x5a6031['where']=_[_0x0526('0x39')](_0x5a6031[_0x0526('0x3a')],{'$or':_['map'](_0x404f64,function(_0x2261b4){if(_0x2261b4[_0x0526('0x2b')]!==_0x0526('0x3b')){var _0x57b0e2={};_0x57b0e2[_0x2261b4[_0x0526('0x25')]]={'$like':'%'+_0xe9315[_0x0526('0x2e')][_0x0526('0x38')]+'%'};return _0x57b0e2;}})});}_0x5a6031=_[_0x0526('0x39')]({},_0x5a6031,_0xe9315[_0x0526('0x3c')]);var _0x33478a={'where':_0x5a6031[_0x0526('0x3a')]};return db[_0x0526('0x29')][_0x0526('0x1a')](_0x33478a)['then'](function(_0x10aad6){_0x48ff4e['count']=_0x10aad6;if(_0xe9315[_0x0526('0x2e')][_0x0526('0x3d')]){_0x5a6031[_0x0526('0x3e')]=[{'all':!![]}];}return db[_0x0526('0x29')]['findAll'](_0x5a6031);})[_0x0526('0x1f')](function(_0x8ba764){_0x48ff4e[_0x0526('0x3f')]=_0x8ba764;return _0x48ff4e;})['then'](respondWithFilteredResult(_0x29c175,_0x5a6031))[_0x0526('0x40')](handleError(_0x29c175,null));};exports['show']=function(_0x3e79ae,_0xb6d759){var _0x2d7812={'raw':![],'where':{'id':_0x3e79ae[_0x0526('0x41')]['id']}},_0x23f518={};_0x23f518[_0x0526('0x2d')]=_[_0x0526('0x42')](db[_0x0526('0x29')][_0x0526('0x43')]);_0x23f518[_0x0526('0x2e')]=_[_0x0526('0x42')](_0x3e79ae[_0x0526('0x2e')]);_0x23f518[_0x0526('0x2f')]=_[_0x0526('0x30')](_0x23f518[_0x0526('0x2d')],_0x23f518['query']);_0x2d7812[_0x0526('0x31')]=_[_0x0526('0x30')](_0x23f518['model'],qs[_0x0526('0x32')](_0x3e79ae[_0x0526('0x2e')][_0x0526('0x32')]));_0x2d7812[_0x0526('0x31')]=_0x2d7812[_0x0526('0x31')]['length']?_0x2d7812[_0x0526('0x31')]:_0x23f518[_0x0526('0x2d')];if(_0x3e79ae[_0x0526('0x2e')][_0x0526('0x3d')]){_0x2d7812['include']=[{'all':!![]}];}_0x2d7812=_['merge']({},_0x2d7812,_0x3e79ae[_0x0526('0x3c')]);return db[_0x0526('0x29')]['find'](_0x2d7812)['then'](handleEntityNotFound(_0xb6d759,null))[_0x0526('0x1f')](respondWithResult(_0xb6d759,null))[_0x0526('0x40')](handleError(_0xb6d759,null));};exports['update']=function(_0x4da54f,_0x15141e){if(_0x4da54f[_0x0526('0x44')]['id']){delete _0x4da54f[_0x0526('0x44')]['id'];}return db[_0x0526('0x29')]['find']({'where':{'id':_0x4da54f['params']['id']}})['then'](handleEntityNotFound(_0x15141e,null))[_0x0526('0x1f')](saveUpdates(_0x4da54f[_0x0526('0x44')],null))[_0x0526('0x1f')](respondWithResult(_0x15141e,null))[_0x0526('0x40')](handleError(_0x15141e,null));};exports[_0x0526('0x45')]=function(_0x258714,_0x2c4ff6,_0x26a72d){return db[_0x0526('0x46')][_0x0526('0x47')](function(_0x460789){if(_0x258714[_0x0526('0x44')][_0x0526('0x48')]===_0x0526('0x49')){_0x258714[_0x0526('0x44')]['directory']=path['join'](config[_0x0526('0x4a')],_0x0526('0x4b'),_0x258714[_0x0526('0x44')]['name']);}return db[_0x0526('0x29')]['create'](_0x258714[_0x0526('0x44')],{'transaction':_0x460789})[_0x0526('0x1f')](function(_0x3ad1c8){if(_0x258714[_0x0526('0x44')][_0x0526('0x48')]===_0x0526('0x49')){fs[_0x0526('0x4c')](_0x3ad1c8[_0x0526('0x4d')],parseInt(_0x0526('0x4e'),0x8));}var _0x49ca8f=_0x258714[_0x0526('0x4f')][_0x0526('0x50')]({'plain':!![]});if(!_0x49ca8f)throw new Error(_0x0526('0x51'));if(_0x49ca8f['role']===_0x0526('0x4f')){var _0x25bc02=_0x3ad1c8[_0x0526('0x50')]({'plain':!![]});return db[_0x0526('0x52')]['find']({'where':{'name':'MusicOnHolds','userProfileId':_0x49ca8f[_0x0526('0x53')]},'raw':!![]})[_0x0526('0x1f')](function(_0x9f8f97){if(_0x9f8f97&&_0x9f8f97['autoAssociation']===0x0){return db[_0x0526('0x21')]['create']({'name':_0x25bc02[_0x0526('0x25')],'resourceId':_0x25bc02['id'],'type':_0x9f8f97['name'],'sectionId':_0x9f8f97['id']},{})['then'](function(){return _0x3ad1c8;});}else{return _0x3ad1c8;}})['catch'](function(_0x2263d3){logger[_0x0526('0x23')](_0x0526('0x54'),_0x2263d3);});}return _0x3ad1c8;});})[_0x0526('0x1f')](respondWithResult(_0x2c4ff6,0xc9))[_0x0526('0x40')](handleError(_0x2c4ff6,null));};exports[_0x0526('0x20')]=function(_0x7e8f5f,_0x42f849,_0x31f01f){var _0x2f414b;return db[_0x0526('0x29')][_0x0526('0x55')]({'where':{'id':_0x7e8f5f['params']['id']}})[_0x0526('0x1f')](function(_0x4bc535){if(_0x4bc535){return db[_0x0526('0x46')][_0x0526('0x47')](function(_0x2f34c6){return _0x4bc535['destroy']({'transaction':_0x2f34c6,'raw':!![]})[_0x0526('0x1f')](function(_0x57ceb0){if(_0x57ceb0[_0x0526('0x4d')]){fs[_0x0526('0x56')](_0x57ceb0[_0x0526('0x4d')])[_0x0526('0x57')](function(_0x228443){fs[_0x0526('0x58')](path[_0x0526('0x59')](_0x57ceb0['directory'],_0x228443));});fs[_0x0526('0x5a')](_0x57ceb0[_0x0526('0x4d')]);}return _0x57ceb0;});})[_0x0526('0x40')](function(_0x302565){throw new db[(_0x0526('0x5b'))][(_0x0526('0x5c'))](_0x302565[_0x0526('0x5d')]);});}})['then'](handleEntityNotFound(_0x42f849,null))[_0x0526('0x1f')](removeEntity(_0x42f849,null))[_0x0526('0x40')](handleError(_0x42f849,null));};exports[_0x0526('0x5e')]=function(_0x3bdcfc,_0x302ae2,_0x345b48){return db[_0x0526('0x46')][_0x0526('0x47')](function(_0x1cbdbd){var _0x4fd0d1;return db[_0x0526('0x29')][_0x0526('0x55')]({'where':{'id':_0x3bdcfc[_0x0526('0x41')]['id']}})['then'](function(_0x471ddc){if(_0x471ddc){_0x4fd0d1=_0x471ddc;return _0x471ddc[_0x0526('0x5e')](_0x3bdcfc['body']['id'],{'transaction':_0x1cbdbd});}})[_0x0526('0x1f')](function(_0x2a105a){if(_0x2a105a){return db['Sound'][_0x0526('0x5f')]({'where':{'id':_0x3bdcfc[_0x0526('0x44')]['id']},'attributes':['id','name',_0x0526('0x60'),_0x0526('0x61'),_0x0526('0x62')],'raw':!![]});}})[_0x0526('0x1f')](function(_0x6eeb0){if(_0x6eeb0){var _0x15c7b1=path[_0x0526('0x59')](config[_0x0526('0x4a')],_0x0526('0x63'),util[_0x0526('0x64')](_0x0526('0x65'),path['basename'](_0x6eeb0['save_name'],path[_0x0526('0x66')](_0x6eeb0[_0x0526('0x60')])),_0x6eeb0[_0x0526('0x61')]));var _0x1fb15f=path['join'](config[_0x0526('0x4a')],'server/files/moh',_0x4fd0d1['name'],util[_0x0526('0x64')](_0x0526('0x65'),_0x6eeb0[_0x0526('0x25')],_0x6eeb0['converted_format']));fs['symlinkSync'](_0x15c7b1,_0x1fb15f);return _0x6eeb0;}})[_0x0526('0x40')](function(_0x523b51){throw new db[(_0x0526('0x5b'))][(_0x0526('0x5c'))](_0x523b51[_0x0526('0x5d')]);});})[_0x0526('0x1f')](handleEntityNotFound(_0x302ae2,null))[_0x0526('0x1f')](respondWithResult(_0x302ae2,0xc9))[_0x0526('0x40')](handleError(_0x302ae2,null));};exports[_0x0526('0x67')]=function(_0x319cc1,_0xc91b4f,_0x5384d5){return db[_0x0526('0x46')][_0x0526('0x47')](function(_0x3b95bb){var _0xa7c048;return db[_0x0526('0x29')][_0x0526('0x5f')]({'where':{'id':_0x319cc1['params']['id']}})[_0x0526('0x1f')](handleEntityNotFound(_0xc91b4f,null))['then'](function(_0x58c277){if(_0x58c277){_0xa7c048=_0x58c277;return _0x58c277[_0x0526('0x67')](_0x319cc1[_0x0526('0x41')][_0x0526('0x68')]);}})[_0x0526('0x1f')](function(_0x41755f){if(_0x41755f){return db[_0x0526('0x69')][_0x0526('0x5f')]({'where':{'id':_0x319cc1['params']['id2']},'attributes':['id','name',_0x0526('0x60'),'converted_format',_0x0526('0x62')],'raw':!![]});}})[_0x0526('0x1f')](function(_0x23536e){if(_0x23536e){fs[_0x0526('0x58')](path[_0x0526('0x59')](_0xa7c048[_0x0526('0x4d')],util[_0x0526('0x64')](_0x0526('0x65'),_0x23536e[_0x0526('0x25')],_0x23536e[_0x0526('0x61')])));return _0x23536e;}})[_0x0526('0x40')](function(_0x5b2893){throw new db[(_0x0526('0x5b'))]['ValidationError'](_0x5b2893[_0x0526('0x5d')]);});})[_0x0526('0x1f')](handleEntityNotFound(_0xc91b4f,null))['then'](respondWithStatusCode(_0xc91b4f,0xcc))[_0x0526('0x40')](handleError(_0xc91b4f,null));};exports[_0x0526('0x6a')]=function(_0x299b01,_0x4244cf,_0x3d557c){var _0x18ab7d={};var _0x163d7a={};var _0x2528d3;var _0x1c9334;return db['VoiceMusicOnHold'][_0x0526('0x5f')]({'where':{'id':_0x299b01[_0x0526('0x41')]['id']}})[_0x0526('0x1f')](handleEntityNotFound(_0x4244cf,null))['then'](function(_0x223efc){if(_0x223efc){_0x2528d3=_0x223efc;_0x163d7a['model']=_[_0x0526('0x42')](db[_0x0526('0x69')][_0x0526('0x43')]);_0x163d7a[_0x0526('0x2e')]=_[_0x0526('0x42')](_0x299b01[_0x0526('0x2e')]);_0x163d7a[_0x0526('0x2f')]=_['intersection'](_0x163d7a[_0x0526('0x2d')],_0x163d7a[_0x0526('0x2e')]);_0x18ab7d['attributes']=_[_0x0526('0x30')](_0x163d7a[_0x0526('0x2d')],qs[_0x0526('0x32')](_0x299b01[_0x0526('0x2e')][_0x0526('0x32')]));_0x18ab7d[_0x0526('0x31')]=_0x18ab7d['attributes'][_0x0526('0x33')]?_0x18ab7d['attributes']:_0x163d7a[_0x0526('0x2d')];_0x18ab7d[_0x0526('0x36')]=qs[_0x0526('0x37')](_0x299b01['query'][_0x0526('0x37')]);_0x18ab7d[_0x0526('0x3a')]=qs[_0x0526('0x2f')](_[_0x0526('0x6b')](_0x299b01[_0x0526('0x2e')],_0x163d7a[_0x0526('0x2f')]));if(_0x299b01[_0x0526('0x2e')]['filter']){_0x18ab7d['where']=_['merge'](_0x18ab7d[_0x0526('0x3a')],{'$or':_[_0x0526('0x28')](_0x18ab7d[_0x0526('0x31')],function(_0x36fe53){var _0x5ca646={};_0x5ca646[_0x36fe53]={'$like':'%'+_0x299b01['query'][_0x0526('0x38')]+'%'};return _0x5ca646;})});}_0x18ab7d=_[_0x0526('0x39')]({},_0x18ab7d,_0x299b01[_0x0526('0x3c')]);return _0x2528d3[_0x0526('0x6a')](_0x18ab7d);}})['then'](function(_0x5106aa){if(_0x5106aa){_0x1c9334=_0x5106aa[_0x0526('0x33')];if(!_0x299b01[_0x0526('0x2e')][_0x0526('0x34')]('nolimit')){_0x18ab7d[_0x0526('0x19')]=qs[_0x0526('0x19')](_0x299b01['query'][_0x0526('0x19')]);_0x18ab7d[_0x0526('0x17')]=qs[_0x0526('0x17')](_0x299b01[_0x0526('0x2e')]['offset']);}return _0x2528d3[_0x0526('0x6a')](_0x18ab7d);}})['then'](function(_0xac59d9){if(_0xac59d9){return _0xac59d9?{'count':_0x1c9334,'rows':_0xac59d9}:null;}})[_0x0526('0x1f')](respondWithResult(_0x4244cf,null))[_0x0526('0x40')](handleError(_0x4244cf,null));};
\ No newline at end of file
+var _0x939a=['where','type','options','include','findAll','catch','show','params','length','merge','update','body','find','create','sequelize','transaction','mode','directory','join','root','server/files/moh','files','mkdirSync','0777','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','message','addSound','Sound','findOne','save_name','createdAt','server/files/sounds/converted','format','%s.%s','basename','converted_format','removeSound','getSounds','eml-format','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','then','get','MusicOnHolds','destroy','error','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x939a,0x107));var _0xa939=function(_0x3bd88e,_0x241ab4){_0x3bd88e=_0x3bd88e-0x0;var _0x4a55a6=_0x939a[_0x3bd88e];return _0x4a55a6;};'use strict';var emlformat=require(_0xa939('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa939('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa939('0x2'));var moment=require('moment');var BPromise=require(_0xa939('0x3'));var Mustache=require(_0xa939('0x4'));var util=require('util');var path=require(_0xa939('0x5'));var sox=require(_0xa939('0x6'));var csv=require(_0xa939('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa939('0x8'));var _=require(_0xa939('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa939('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa939('0xb'));var Redis=require(_0xa939('0xc'));var authService=require(_0xa939('0xd'));var qs=require(_0xa939('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa939('0xf'));var logger=require('../../config/logger')(_0xa939('0x10'));var utils=require(_0xa939('0x11'));var config=require(_0xa939('0x12'));var licenseUtil=require(_0xa939('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3cfb07,_0x393451){_0x393451=_0x393451||0xcc;return function(_0x5538d6){if(_0x5538d6){return _0x3cfb07[_0xa939('0x14')](_0x393451);}return _0x3cfb07[_0xa939('0x15')](_0x393451)[_0xa939('0x16')]();};}function respondWithResult(_0x221b44,_0xb0d99a){_0xb0d99a=_0xb0d99a||0xc8;return function(_0x2d412d){if(_0x2d412d){return _0x221b44['status'](_0xb0d99a)[_0xa939('0x17')](_0x2d412d);}};}function respondWithFilteredResult(_0x4bd278,_0x5dd05d){return function(_0x596945){if(_0x596945){var _0xff8f6b=typeof _0x5dd05d[_0xa939('0x18')]===_0xa939('0x19')&&typeof _0x5dd05d['limit']===_0xa939('0x19');var _0x284ab2=_0x596945[_0xa939('0x1a')];var _0x4a189c=_0xff8f6b?0x0:_0x5dd05d[_0xa939('0x18')];var _0x264312=_0xff8f6b?_0x596945['count']:_0x5dd05d[_0xa939('0x18')]+_0x5dd05d[_0xa939('0x1b')];var _0x5e7fe3;if(_0x264312>=_0x284ab2){_0x264312=_0x284ab2;_0x5e7fe3=0xc8;}else{_0x5e7fe3=0xce;}_0x4bd278[_0xa939('0x15')](_0x5e7fe3);return _0x4bd278[_0xa939('0x1c')](_0xa939('0x1d'),_0x4a189c+'-'+_0x264312+'/'+_0x284ab2)['json'](_0x596945);}return null;};}function patchUpdates(_0x1defca){return function(_0x370b0e){try{jsonpatch['apply'](_0x370b0e,_0x1defca,!![]);}catch(_0x39e8a4){return BPromise[_0xa939('0x1e')](_0x39e8a4);}return _0x370b0e[_0xa939('0x1f')]();};}function saveUpdates(_0x51b4dd,_0x3d3e41){return function(_0x360e9d){if(_0x360e9d){return _0x360e9d['update'](_0x51b4dd)[_0xa939('0x20')](function(_0x518a79){return _0x518a79;});}return null;};}function removeEntity(_0x2087d6,_0x47d827){return function(_0x45262f){if(_0x45262f){return _0x45262f['destroy']()[_0xa939('0x20')](function(){var _0x336e2f=_0x45262f[_0xa939('0x21')]({'plain':!![]});var _0x263415=_0xa939('0x22');return db['UserProfileResource'][_0xa939('0x23')]({'where':{'type':_0x263415,'resourceId':_0x336e2f['id']}})[_0xa939('0x20')](function(){return _0x45262f;});})['then'](function(){_0x2087d6[_0xa939('0x15')](0xcc)[_0xa939('0x16')]();});}};}function handleEntityNotFound(_0x42b608,_0x34b717){return function(_0x5a6110){if(!_0x5a6110){_0x42b608[_0xa939('0x14')](0x194);}return _0x5a6110;};}function handleError(_0x83438c,_0xb67372){_0xb67372=_0xb67372||0x1f4;return function(_0x2f90e7){logger[_0xa939('0x24')](_0x2f90e7['stack']);if(_0x2f90e7[_0xa939('0x25')]){delete _0x2f90e7['name'];}_0x83438c[_0xa939('0x15')](_0xb67372)[_0xa939('0x26')](_0x2f90e7);};}exports[_0xa939('0x27')]=function(_0x2557cc,_0xb96043){var _0x39e680={},_0x219cc4={},_0x72b14e={'count':0x0,'rows':[]};var _0x9c3fb=_[_0xa939('0x28')](db[_0xa939('0x29')][_0xa939('0x2a')],function(_0x2b327a){return{'name':_0x2b327a[_0xa939('0x2b')],'type':_0x2b327a['type'][_0xa939('0x2c')]};});_0x219cc4[_0xa939('0x2d')]=_[_0xa939('0x28')](_0x9c3fb,'name');_0x219cc4[_0xa939('0x2e')]=_[_0xa939('0x2f')](_0x2557cc[_0xa939('0x2e')]);_0x219cc4[_0xa939('0x30')]=_[_0xa939('0x31')](_0x219cc4[_0xa939('0x2d')],_0x219cc4['query']);_0x39e680[_0xa939('0x32')]=_[_0xa939('0x31')](_0x219cc4[_0xa939('0x2d')],qs[_0xa939('0x33')](_0x2557cc[_0xa939('0x2e')]['fields']));_0x39e680[_0xa939('0x32')]=_0x39e680[_0xa939('0x32')]['length']?_0x39e680[_0xa939('0x32')]:_0x219cc4['model'];if(!_0x2557cc[_0xa939('0x2e')][_0xa939('0x34')](_0xa939('0x35'))){_0x39e680[_0xa939('0x1b')]=qs['limit'](_0x2557cc['query'][_0xa939('0x1b')]);_0x39e680[_0xa939('0x18')]=qs[_0xa939('0x18')](_0x2557cc['query'][_0xa939('0x18')]);}_0x39e680[_0xa939('0x36')]=qs[_0xa939('0x37')](_0x2557cc[_0xa939('0x2e')][_0xa939('0x37')]);delete _0x2557cc['query'][_0xa939('0x37')];_0x39e680['where']=qs[_0xa939('0x30')](_[_0xa939('0x38')](_0x2557cc[_0xa939('0x2e')],_0x219cc4['filters']),_0x9c3fb);if(_0x2557cc[_0xa939('0x2e')][_0xa939('0x39')]){_0x39e680[_0xa939('0x3a')]=_['merge'](_0x39e680[_0xa939('0x3a')],{'$or':_['map'](_0x9c3fb,function(_0x516bfa){if(_0x516bfa[_0xa939('0x3b')]!=='VIRTUAL'){var _0x380b95={};_0x380b95[_0x516bfa['name']]={'$like':'%'+_0x2557cc[_0xa939('0x2e')][_0xa939('0x39')]+'%'};return _0x380b95;}})});}_0x39e680=_['merge']({},_0x39e680,_0x2557cc[_0xa939('0x3c')]);var _0xc03ee5={'where':_0x39e680[_0xa939('0x3a')]};return db[_0xa939('0x29')][_0xa939('0x1a')](_0xc03ee5)[_0xa939('0x20')](function(_0x133524){_0x72b14e[_0xa939('0x1a')]=_0x133524;if(_0x2557cc[_0xa939('0x2e')]['includeAll']){_0x39e680[_0xa939('0x3d')]=[{'all':!![]}];}return db[_0xa939('0x29')][_0xa939('0x3e')](_0x39e680);})[_0xa939('0x20')](function(_0x1a0543){_0x72b14e['rows']=_0x1a0543;return _0x72b14e;})['then'](respondWithFilteredResult(_0xb96043,_0x39e680))[_0xa939('0x3f')](handleError(_0xb96043,null));};exports[_0xa939('0x40')]=function(_0x5031de,_0x4df28f){var _0x24c348={'raw':![],'where':{'id':_0x5031de[_0xa939('0x41')]['id']}},_0x5d1d09={};_0x5d1d09[_0xa939('0x2d')]=_[_0xa939('0x2f')](db[_0xa939('0x29')][_0xa939('0x2a')]);_0x5d1d09[_0xa939('0x2e')]=_[_0xa939('0x2f')](_0x5031de[_0xa939('0x2e')]);_0x5d1d09[_0xa939('0x30')]=_[_0xa939('0x31')](_0x5d1d09[_0xa939('0x2d')],_0x5d1d09[_0xa939('0x2e')]);_0x24c348[_0xa939('0x32')]=_[_0xa939('0x31')](_0x5d1d09[_0xa939('0x2d')],qs[_0xa939('0x33')](_0x5031de[_0xa939('0x2e')][_0xa939('0x33')]));_0x24c348[_0xa939('0x32')]=_0x24c348[_0xa939('0x32')][_0xa939('0x42')]?_0x24c348['attributes']:_0x5d1d09['model'];if(_0x5031de[_0xa939('0x2e')]['includeAll']){_0x24c348[_0xa939('0x3d')]=[{'all':!![]}];}_0x24c348=_[_0xa939('0x43')]({},_0x24c348,_0x5031de['options']);return db[_0xa939('0x29')]['find'](_0x24c348)[_0xa939('0x20')](handleEntityNotFound(_0x4df28f,null))[_0xa939('0x20')](respondWithResult(_0x4df28f,null))[_0xa939('0x3f')](handleError(_0x4df28f,null));};exports[_0xa939('0x44')]=function(_0x17d6f2,_0x4d2766){if(_0x17d6f2[_0xa939('0x45')]['id']){delete _0x17d6f2[_0xa939('0x45')]['id'];}return db[_0xa939('0x29')][_0xa939('0x46')]({'where':{'id':_0x17d6f2[_0xa939('0x41')]['id']}})[_0xa939('0x20')](handleEntityNotFound(_0x4d2766,null))[_0xa939('0x20')](saveUpdates(_0x17d6f2['body'],null))[_0xa939('0x20')](respondWithResult(_0x4d2766,null))['catch'](handleError(_0x4d2766,null));};exports[_0xa939('0x47')]=function(_0x467724,_0x42ac72,_0x14b9cf){return db[_0xa939('0x48')][_0xa939('0x49')](function(_0x3caaf6){if(_0x467724[_0xa939('0x45')][_0xa939('0x4a')]==='files'){_0x467724[_0xa939('0x45')][_0xa939('0x4b')]=path[_0xa939('0x4c')](config[_0xa939('0x4d')],_0xa939('0x4e'),_0x467724['body'][_0xa939('0x25')]);}return db[_0xa939('0x29')][_0xa939('0x47')](_0x467724[_0xa939('0x45')],{'transaction':_0x3caaf6})['then'](function(_0x1d163c){if(_0x467724[_0xa939('0x45')][_0xa939('0x4a')]===_0xa939('0x4f')){fs[_0xa939('0x50')](_0x1d163c[_0xa939('0x4b')],parseInt(_0xa939('0x51'),0x8));}var _0x2c2f85=_0x467724['user'][_0xa939('0x21')]({'plain':!![]});if(!_0x2c2f85)throw new Error(_0xa939('0x52'));if(_0x2c2f85[_0xa939('0x53')]==='user'){var _0x5e571e=_0x1d163c[_0xa939('0x21')]({'plain':!![]});return db[_0xa939('0x54')][_0xa939('0x46')]({'where':{'name':_0xa939('0x22'),'userProfileId':_0x2c2f85[_0xa939('0x55')]},'raw':!![]})[_0xa939('0x20')](function(_0x368292){if(_0x368292&&_0x368292['autoAssociation']===0x0){return db[_0xa939('0x56')][_0xa939('0x47')]({'name':_0x5e571e[_0xa939('0x25')],'resourceId':_0x5e571e['id'],'type':_0x368292['name'],'sectionId':_0x368292['id']},{})[_0xa939('0x20')](function(){return _0x1d163c;});}else{return _0x1d163c;}})['catch'](function(_0x4d449b){logger['error'](_0xa939('0x57'),_0x4d449b);});}return _0x1d163c;});})[_0xa939('0x20')](respondWithResult(_0x42ac72,0xc9))['catch'](handleError(_0x42ac72,null));};exports[_0xa939('0x23')]=function(_0x53509a,_0x1a011d,_0x404a3a){var _0x28a98b;return db[_0xa939('0x29')][_0xa939('0x46')]({'where':{'id':_0x53509a[_0xa939('0x41')]['id']}})['then'](function(_0x1ec0c1){if(_0x1ec0c1){return db[_0xa939('0x48')][_0xa939('0x49')](function(_0x2bf0c4){return _0x1ec0c1[_0xa939('0x23')]({'transaction':_0x2bf0c4,'raw':!![]})[_0xa939('0x20')](function(_0x5e76a7){if(_0x5e76a7[_0xa939('0x4b')]){fs[_0xa939('0x58')](_0x5e76a7[_0xa939('0x4b')])[_0xa939('0x59')](function(_0x2e7bbf){fs[_0xa939('0x5a')](path['join'](_0x5e76a7[_0xa939('0x4b')],_0x2e7bbf));});fs[_0xa939('0x5b')](_0x5e76a7[_0xa939('0x4b')]);}return _0x5e76a7;});})[_0xa939('0x3f')](function(_0x513811){throw new db[(_0xa939('0x5c'))][(_0xa939('0x5d'))](_0x513811[_0xa939('0x5e')]);});}})['then'](handleEntityNotFound(_0x1a011d,null))['then'](removeEntity(_0x1a011d,null))[_0xa939('0x3f')](handleError(_0x1a011d,null));};exports[_0xa939('0x5f')]=function(_0x137c5d,_0x45ab4a,_0x58044d){return db[_0xa939('0x48')][_0xa939('0x49')](function(_0x17c0c5){var _0x20c8a0;return db[_0xa939('0x29')]['find']({'where':{'id':_0x137c5d[_0xa939('0x41')]['id']}})[_0xa939('0x20')](function(_0x3616e6){if(_0x3616e6){_0x20c8a0=_0x3616e6;return _0x3616e6['addSound'](_0x137c5d[_0xa939('0x45')]['id'],{'transaction':_0x17c0c5});}})['then'](function(_0x49bb2b){if(_0x49bb2b){return db[_0xa939('0x60')][_0xa939('0x61')]({'where':{'id':_0x137c5d[_0xa939('0x45')]['id']},'attributes':['id',_0xa939('0x25'),_0xa939('0x62'),'converted_format',_0xa939('0x63')],'raw':!![]});}})[_0xa939('0x20')](function(_0x25a95c){if(_0x25a95c){var _0x5af1c7=path[_0xa939('0x4c')](config[_0xa939('0x4d')],_0xa939('0x64'),util[_0xa939('0x65')](_0xa939('0x66'),path[_0xa939('0x67')](_0x25a95c[_0xa939('0x62')],path['extname'](_0x25a95c[_0xa939('0x62')])),_0x25a95c[_0xa939('0x68')]));var _0x5f2907=path[_0xa939('0x4c')](config[_0xa939('0x4d')],'server/files/moh',_0x20c8a0[_0xa939('0x25')],util[_0xa939('0x65')](_0xa939('0x66'),_0x25a95c[_0xa939('0x25')],_0x25a95c[_0xa939('0x68')]));fs['symlinkSync'](_0x5af1c7,_0x5f2907);return _0x25a95c;}})[_0xa939('0x3f')](function(_0x3548b2){throw new db[(_0xa939('0x5c'))][(_0xa939('0x5d'))](_0x3548b2[_0xa939('0x5e')]);});})[_0xa939('0x20')](handleEntityNotFound(_0x45ab4a,null))[_0xa939('0x20')](respondWithResult(_0x45ab4a,0xc9))[_0xa939('0x3f')](handleError(_0x45ab4a,null));};exports[_0xa939('0x69')]=function(_0x44555d,_0x1a2207,_0x5b71e1){return db['sequelize'][_0xa939('0x49')](function(_0x5c7869){var _0x127ec3;return db[_0xa939('0x29')]['findOne']({'where':{'id':_0x44555d[_0xa939('0x41')]['id']}})[_0xa939('0x20')](handleEntityNotFound(_0x1a2207,null))[_0xa939('0x20')](function(_0x3a38bd){if(_0x3a38bd){_0x127ec3=_0x3a38bd;return _0x3a38bd[_0xa939('0x69')](_0x44555d[_0xa939('0x41')]['id2']);}})[_0xa939('0x20')](function(_0x2a5617){if(_0x2a5617){return db[_0xa939('0x60')][_0xa939('0x61')]({'where':{'id':_0x44555d[_0xa939('0x41')]['id2']},'attributes':['id',_0xa939('0x25'),_0xa939('0x62'),'converted_format',_0xa939('0x63')],'raw':!![]});}})['then'](function(_0x5cac70){if(_0x5cac70){fs[_0xa939('0x5a')](path[_0xa939('0x4c')](_0x127ec3[_0xa939('0x4b')],util[_0xa939('0x65')]('%s.%s',_0x5cac70['name'],_0x5cac70[_0xa939('0x68')])));return _0x5cac70;}})[_0xa939('0x3f')](function(_0x40d0f4){throw new db[(_0xa939('0x5c'))][(_0xa939('0x5d'))](_0x40d0f4['message']);});})[_0xa939('0x20')](handleEntityNotFound(_0x1a2207,null))['then'](respondWithStatusCode(_0x1a2207,0xcc))[_0xa939('0x3f')](handleError(_0x1a2207,null));};exports[_0xa939('0x6a')]=function(_0x3668d4,_0x1d2c58,_0x8624a2){var _0x27f8a1={};var _0x5103a0={};var _0x3eff0b;var _0x44bf88;return db['VoiceMusicOnHold'][_0xa939('0x61')]({'where':{'id':_0x3668d4['params']['id']}})[_0xa939('0x20')](handleEntityNotFound(_0x1d2c58,null))[_0xa939('0x20')](function(_0x2e9ad2){if(_0x2e9ad2){_0x3eff0b=_0x2e9ad2;_0x5103a0[_0xa939('0x2d')]=_['keys'](db['Sound'][_0xa939('0x2a')]);_0x5103a0[_0xa939('0x2e')]=_[_0xa939('0x2f')](_0x3668d4['query']);_0x5103a0[_0xa939('0x30')]=_[_0xa939('0x31')](_0x5103a0[_0xa939('0x2d')],_0x5103a0['query']);_0x27f8a1[_0xa939('0x32')]=_[_0xa939('0x31')](_0x5103a0[_0xa939('0x2d')],qs[_0xa939('0x33')](_0x3668d4['query'][_0xa939('0x33')]));_0x27f8a1['attributes']=_0x27f8a1['attributes'][_0xa939('0x42')]?_0x27f8a1[_0xa939('0x32')]:_0x5103a0['model'];_0x27f8a1[_0xa939('0x36')]=qs[_0xa939('0x37')](_0x3668d4[_0xa939('0x2e')][_0xa939('0x37')]);_0x27f8a1[_0xa939('0x3a')]=qs[_0xa939('0x30')](_['pick'](_0x3668d4[_0xa939('0x2e')],_0x5103a0[_0xa939('0x30')]));if(_0x3668d4[_0xa939('0x2e')]['filter']){_0x27f8a1[_0xa939('0x3a')]=_[_0xa939('0x43')](_0x27f8a1[_0xa939('0x3a')],{'$or':_[_0xa939('0x28')](_0x27f8a1['attributes'],function(_0x5c90cd){var _0x250e52={};_0x250e52[_0x5c90cd]={'$like':'%'+_0x3668d4[_0xa939('0x2e')][_0xa939('0x39')]+'%'};return _0x250e52;})});}_0x27f8a1=_['merge']({},_0x27f8a1,_0x3668d4[_0xa939('0x3c')]);return _0x3eff0b[_0xa939('0x6a')](_0x27f8a1);}})[_0xa939('0x20')](function(_0x275a08){if(_0x275a08){_0x44bf88=_0x275a08[_0xa939('0x42')];if(!_0x3668d4[_0xa939('0x2e')][_0xa939('0x34')](_0xa939('0x35'))){_0x27f8a1[_0xa939('0x1b')]=qs[_0xa939('0x1b')](_0x3668d4[_0xa939('0x2e')][_0xa939('0x1b')]);_0x27f8a1['offset']=qs['offset'](_0x3668d4[_0xa939('0x2e')][_0xa939('0x18')]);}return _0x3eff0b[_0xa939('0x6a')](_0x27f8a1);}})[_0xa939('0x20')](function(_0x42248a){if(_0x42248a){return _0x42248a?{'count':_0x44bf88,'rows':_0x42248a}:null;}})[_0xa939('0x20')](respondWithResult(_0x1d2c58,null))[_0xa939('0x3f')](handleError(_0x1d2c58,null));};
\ No newline at end of file
index 3e130d6..5188783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9aa=['define','VoiceMusicOnHold','voice_musiconhold','lodash','../../config/logger','api','moment','bluebird','request-promise','./voiceMusicOnHold.attributes','exports'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0xc9aa,0x12c));var _0xac9a=function(_0xaa6a4,_0x64b067){_0xaa6a4=_0xaa6a4-0x0;var _0xdc31a4=_0xc9aa[_0xaa6a4];return _0xdc31a4;};'use strict';var _=require(_0xac9a('0x0'));var util=require('util');var logger=require(_0xac9a('0x1'))(_0xac9a('0x2'));var moment=require(_0xac9a('0x3'));var BPromise=require(_0xac9a('0x4'));var rp=require(_0xac9a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xac9a('0x6'));module[_0xac9a('0x7')]=function(_0x496da8,_0x45ca76){return _0x496da8[_0xac9a('0x8')](_0xac9a('0x9'),attributes,{'tableName':_0xac9a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1550=['./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','../../config/logger','api','moment','request-promise','rimraf'];(function(_0x3ab508,_0x32cd87){var _0x4f5ffb=function(_0x264f15){while(--_0x264f15){_0x3ab508['push'](_0x3ab508['shift']());}};_0x4f5ffb(++_0x32cd87);}(_0x1550,0xd6));var _0x0155=function(_0x50f7e4,_0x2f1fd8){_0x50f7e4=_0x50f7e4-0x0;var _0x444e1b=_0x1550[_0x50f7e4];return _0x444e1b;};'use strict';var _=require(_0x0155('0x0'));var util=require('util');var logger=require(_0x0155('0x1'))(_0x0155('0x2'));var moment=require(_0x0155('0x3'));var BPromise=require('bluebird');var rp=require(_0x0155('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0155('0x5'));var config=require('../../config/environment');var attributes=require(_0x0155('0x6'));module[_0x0155('0x7')]=function(_0x5b506d,_0x2de2d0){return _0x5b506d[_0x0155('0x8')](_0x0155('0x9'),attributes,{'tableName':_0x0155('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4fab1e9..442aa18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s'];(function(_0x525bbc,_0x5f1c23){var _0x32b881=function(_0x4170ae){while(--_0x4170ae){_0x525bbc['push'](_0x525bbc['shift']());}};_0x32b881(++_0x5f1c23);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x402c8f,_0x30cc1d){_0x402c8f=_0x402c8f-0x0;var _0x11e809=_0xcb91[_0x402c8f];return _0x11e809;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
+var _0xedd9=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','VoiceMusicOnHold,\x20%s,\x20%s','message','catch','util'];(function(_0x2ca26c,_0x2d701b){var _0x498098=function(_0xe184c6){while(--_0xe184c6){_0x2ca26c['push'](_0x2ca26c['shift']());}};_0x498098(++_0x2d701b);}(_0xedd9,0xfc));var _0x9edd=function(_0x3996e2,_0x5a4ed5){_0x3996e2=_0x3996e2-0x0;var _0x586f0c=_0xedd9[_0x3996e2];return _0x586f0c;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var BPromise=require(_0x9edd('0x2'));var rs=require(_0x9edd('0x3'));var fs=require('fs');var Redis=require(_0x9edd('0x4'));var db=require(_0x9edd('0x5'))['db'];var utils=require(_0x9edd('0x6'));var logger=require(_0x9edd('0x7'))('rpc');var config=require(_0x9edd('0x8'));var jayson=require(_0x9edd('0x9'));var client=jayson[_0x9edd('0xa')][_0x9edd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5319f7,_0xf0b2d8,_0x571af9){return new BPromise(function(_0x172522,_0x190185){return client[_0x9edd('0xc')](_0x5319f7,_0x571af9)[_0x9edd('0xd')](function(_0x49d5e3){logger[_0x9edd('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'));logger[_0x9edd('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'),JSON[_0x9edd('0x11')](_0x49d5e3));if(_0x49d5e3['error']){if(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x13')]===0x1f4){logger[_0x9edd('0x12')](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x190185(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x172522(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}else{logger[_0x9edd('0xe')](_0x9edd('0x14'),_0xf0b2d8,_0x9edd('0xf'));_0x172522(_0x49d5e3['result'][_0x9edd('0x15')]);}})[_0x9edd('0x16')](function(_0x449cee){logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x449cee);_0x190185(_0x449cee);});});}
\ No newline at end of file
index 5a3396a..5502d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23ee=['/describe','describe','get','/:id','getAgents','post','create','/:id/users','addAgents','put','update','delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voicePrefix.controller','isAuthenticated','index'];(function(_0x158260,_0x3bf28f){var _0x57a96b=function(_0x399022){while(--_0x399022){_0x158260['push'](_0x158260['shift']());}};_0x57a96b(++_0x3bf28f);}(_0x23ee,0x195));var _0xe23e=function(_0x4a7631,_0x2c85b9){_0x4a7631=_0x4a7631-0x0;var _0x1a5a6f=_0x23ee[_0x4a7631];return _0x1a5a6f;};'use strict';var multer=require(_0xe23e('0x0'));var util=require(_0xe23e('0x1'));var path=require(_0xe23e('0x2'));var timeout=require(_0xe23e('0x3'));var express=require('express');var router=express[_0xe23e('0x4')]();var fs_extra=require(_0xe23e('0x5'));var auth=require(_0xe23e('0x6'));var interaction=require(_0xe23e('0x7'));var config=require('../../config/environment');var controller=require(_0xe23e('0x8'));router['get']('/',auth[_0xe23e('0x9')](),controller[_0xe23e('0xa')]);router['get'](_0xe23e('0xb'),auth[_0xe23e('0x9')](),controller[_0xe23e('0xc')]);router[_0xe23e('0xd')](_0xe23e('0xe'),auth[_0xe23e('0x9')](),controller['show']);router['get']('/:id/users',auth[_0xe23e('0x9')](),controller[_0xe23e('0xf')]);router[_0xe23e('0x10')]('/',auth['isAuthenticated'](),controller[_0xe23e('0x11')]);router[_0xe23e('0x10')](_0xe23e('0x12'),auth[_0xe23e('0x9')](),controller[_0xe23e('0x13')]);router[_0xe23e('0x14')](_0xe23e('0xe'),auth['isAuthenticated'](),controller[_0xe23e('0x15')]);router[_0xe23e('0x16')](_0xe23e('0xe'),auth[_0xe23e('0x9')](),controller[_0xe23e('0x17')]);router[_0xe23e('0x16')](_0xe23e('0x12'),auth[_0xe23e('0x9')](),controller[_0xe23e('0x18')]);module[_0xe23e('0x19')]=router;
\ No newline at end of file
+var _0xfc6d=['put','update','delete','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/users','post','addAgents'];(function(_0x3f37fd,_0x374110){var _0x286c7c=function(_0x39b2f4){while(--_0x39b2f4){_0x3f37fd['push'](_0x3f37fd['shift']());}};_0x286c7c(++_0x374110);}(_0xfc6d,0x1cb));var _0xdfc6=function(_0x5e9064,_0x7340d7){_0x5e9064=_0x5e9064-0x0;var _0x26f531=_0xfc6d[_0x5e9064];return _0x26f531;};'use strict';var multer=require('multer');var util=require(_0xdfc6('0x0'));var path=require('path');var timeout=require(_0xdfc6('0x1'));var express=require(_0xdfc6('0x2'));var router=express[_0xdfc6('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xdfc6('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xdfc6('0x5'));var controller=require(_0xdfc6('0x6'));router[_0xdfc6('0x7')]('/',auth[_0xdfc6('0x8')](),controller[_0xdfc6('0x9')]);router['get'](_0xdfc6('0xa'),auth['isAuthenticated'](),controller[_0xdfc6('0xb')]);router[_0xdfc6('0x7')](_0xdfc6('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xdfc6('0x7')](_0xdfc6('0xd'),auth[_0xdfc6('0x8')](),controller['getAgents']);router['post']('/',auth[_0xdfc6('0x8')](),controller['create']);router[_0xdfc6('0xe')](_0xdfc6('0xd'),auth[_0xdfc6('0x8')](),controller[_0xdfc6('0xf')]);router[_0xdfc6('0x10')](_0xdfc6('0xc'),auth[_0xdfc6('0x8')](),controller[_0xdfc6('0x11')]);router[_0xdfc6('0x12')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0xdfc6('0x12')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 177b98c..ef24fa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89e8=['sequelize','exports','STRING','name','VIRTUAL','getDataValue','INTEGER'];(function(_0x42b789,_0x46d8d4){var _0x3dee14=function(_0x2fe865){while(--_0x2fe865){_0x42b789['push'](_0x42b789['shift']());}};_0x3dee14(++_0x46d8d4);}(_0x89e8,0x1ce));var _0x889e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x89e8[_0x6131cd];return _0x47e916;};'use strict';var Sequelize=require(_0x889e('0x0'));module[_0x889e('0x1')]={'name':{'type':Sequelize[_0x889e('0x2')],'allowNull':![],'unique':_0x889e('0x3')},'prefix':{'type':Sequelize[_0x889e('0x4')],'get':function(_0x8e55a6){return'system-'+this[_0x889e('0x5')]('name')+'-';}},'description':{'type':Sequelize[_0x889e('0x2')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0x889e('0x6')]}};
\ No newline at end of file
+var _0x841d=['name','sequelize','STRING','VIRTUAL','system-'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x841d,0x1a5));var _0xd841=function(_0x38ffb7,_0x25ddac){_0x38ffb7=_0x38ffb7-0x0;var _0x435f00=_0x841d[_0x38ffb7];return _0x435f00;};'use strict';var Sequelize=require(_0xd841('0x0'));module['exports']={'name':{'type':Sequelize[_0xd841('0x1')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize[_0xd841('0x2')],'get':function(_0xb8da99){return _0xd841('0x3')+this['getDataValue'](_0xd841('0x4'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0xd841('0x1')]},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 50d2878..cd59a2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5074=['mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','defaults','localhost','./voicePrefix.socket','register','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','end','sendStatus','error','stack','name','send','index','map','VoicePrefix','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','intersection','options','find','params','describe','create','body','VoiceExtension','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','from-sip','exten','app','system','description','priority','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtensionId','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','goto','charAt','system-','sequelize','transaction','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','userVoicePrefix:remove','findOne','User','getAgents','rimraf','zip-dir','request-promise','moment','bluebird'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x5074,0x1e7));var _0x4507=function(_0x4d21ff,_0x19d202){_0x4d21ff=_0x4d21ff-0x0;var _0x22b554=_0x5074[_0x4d21ff];return _0x22b554;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4507('0x0'));var zipdir=require(_0x4507('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4507('0x2'));var moment=require(_0x4507('0x3'));var BPromise=require(_0x4507('0x4'));var Mustache=require(_0x4507('0x5'));var util=require(_0x4507('0x6'));var path=require(_0x4507('0x7'));var sox=require(_0x4507('0x8'));var csv=require(_0x4507('0x9'));var ejs=require(_0x4507('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4507('0xb'));var squel=require('squel');var crypto=require(_0x4507('0xc'));var jsforce=require(_0x4507('0xd'));var deskjs=require(_0x4507('0xe'));var toCsv=require(_0x4507('0x9'));var querystring=require('querystring');var Papa=require(_0x4507('0xf'));var Redis=require(_0x4507('0x10'));var authService=require(_0x4507('0x11'));var qs=require(_0x4507('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4507('0x13'));var logger=require(_0x4507('0x14'))(_0x4507('0x15'));var utils=require('../../config/utils');var config=require(_0x4507('0x16'));var licenseUtil=require(_0x4507('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x4507('0x18')](config['redis'],{'host':_0x4507('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4507('0x1a'))[_0x4507('0x1b')](socket);function respondWithStatusCode(_0x278fe5,_0x321e22){_0x321e22=_0x321e22||0xcc;return function(_0x5dc597){if(_0x5dc597){return _0x278fe5['sendStatus'](_0x321e22);}return _0x278fe5[_0x4507('0x1c')](_0x321e22)['end']();};}function respondWithResult(_0x3d95b1,_0x1fae22){_0x1fae22=_0x1fae22||0xc8;return function(_0x54dcbc){if(_0x54dcbc){return _0x3d95b1[_0x4507('0x1c')](_0x1fae22)['json'](_0x54dcbc);}};}function respondWithFilteredResult(_0x2f189c,_0x39cc32){return function(_0x2535a0){if(_0x2535a0){var _0x562eb5=typeof _0x39cc32[_0x4507('0x1d')]===_0x4507('0x1e')&&typeof _0x39cc32[_0x4507('0x1f')]===_0x4507('0x1e');var _0x16261c=_0x2535a0[_0x4507('0x20')];var _0x14de57=_0x562eb5?0x0:_0x39cc32[_0x4507('0x1d')];var _0x5b6d97=_0x562eb5?_0x2535a0['count']:_0x39cc32[_0x4507('0x1d')]+_0x39cc32[_0x4507('0x1f')];var _0x185e00;if(_0x5b6d97>=_0x16261c){_0x5b6d97=_0x16261c;_0x185e00=0xc8;}else{_0x185e00=0xce;}_0x2f189c[_0x4507('0x1c')](_0x185e00);return _0x2f189c[_0x4507('0x21')](_0x4507('0x22'),_0x14de57+'-'+_0x5b6d97+'/'+_0x16261c)[_0x4507('0x23')](_0x2535a0);}return null;};}function patchUpdates(_0x178765){return function(_0x38441f){try{jsonpatch[_0x4507('0x24')](_0x38441f,_0x178765,!![]);}catch(_0x17a74b){return BPromise[_0x4507('0x25')](_0x17a74b);}return _0x38441f[_0x4507('0x26')]();};}function saveUpdates(_0x5f3d8b,_0x37df0b){return function(_0x12b177){if(_0x12b177){return _0x12b177[_0x4507('0x27')](_0x5f3d8b)[_0x4507('0x28')](function(_0x208dc8){return _0x208dc8;});}return null;};}function removeEntity(_0x27bf2f,_0x5ee73d){return function(_0x2439ba){if(_0x2439ba){return _0x2439ba[_0x4507('0x29')]()['then'](function(){var _0x54fd64=_0x2439ba[_0x4507('0x2a')]({'plain':!![]});var _0x252ce8=_0x4507('0x2b');return db[_0x4507('0x2c')]['destroy']({'where':{'type':_0x252ce8,'resourceId':_0x54fd64['id']}})[_0x4507('0x28')](function(){return _0x2439ba;});})['then'](function(){_0x27bf2f[_0x4507('0x1c')](0xcc)[_0x4507('0x2d')]();});}};}function handleEntityNotFound(_0x44651b,_0x335fd0){return function(_0x5df3f1){if(!_0x5df3f1){_0x44651b[_0x4507('0x2e')](0x194);}return _0x5df3f1;};}function handleError(_0x49d908,_0x229bc0){_0x229bc0=_0x229bc0||0x1f4;return function(_0x8f91f3){logger[_0x4507('0x2f')](_0x8f91f3[_0x4507('0x30')]);if(_0x8f91f3[_0x4507('0x31')]){delete _0x8f91f3[_0x4507('0x31')];}_0x49d908['status'](_0x229bc0)[_0x4507('0x32')](_0x8f91f3);};}exports[_0x4507('0x33')]=function(_0x52b331,_0x5d4b58){var _0x15a679={},_0x4b1414={},_0x6e346c={'count':0x0,'rows':[]};var _0xd50764=_[_0x4507('0x34')](db[_0x4507('0x35')][_0x4507('0x36')],function(_0x4b4e60){return{'name':_0x4b4e60[_0x4507('0x37')],'type':_0x4b4e60[_0x4507('0x38')][_0x4507('0x39')]};});_0x4b1414['model']=_[_0x4507('0x34')](_0xd50764,'name');_0x4b1414[_0x4507('0x3a')]=_[_0x4507('0x3b')](_0x52b331[_0x4507('0x3a')]);_0x4b1414[_0x4507('0x3c')]=_['intersection'](_0x4b1414[_0x4507('0x3d')],_0x4b1414[_0x4507('0x3a')]);_0x15a679[_0x4507('0x3e')]=_['intersection'](_0x4b1414[_0x4507('0x3d')],qs[_0x4507('0x3f')](_0x52b331[_0x4507('0x3a')][_0x4507('0x3f')]));_0x15a679[_0x4507('0x3e')]=_0x15a679[_0x4507('0x3e')][_0x4507('0x40')]?_0x15a679[_0x4507('0x3e')]:_0x4b1414[_0x4507('0x3d')];if(!_0x52b331[_0x4507('0x3a')][_0x4507('0x41')](_0x4507('0x42'))){_0x15a679[_0x4507('0x1f')]=qs[_0x4507('0x1f')](_0x52b331[_0x4507('0x3a')][_0x4507('0x1f')]);_0x15a679['offset']=qs[_0x4507('0x1d')](_0x52b331[_0x4507('0x3a')][_0x4507('0x1d')]);}_0x15a679[_0x4507('0x43')]=qs[_0x4507('0x44')](_0x52b331[_0x4507('0x3a')]['sort']);_0x15a679[_0x4507('0x45')]=qs[_0x4507('0x3c')](_[_0x4507('0x46')](_0x52b331[_0x4507('0x3a')],_0x4b1414[_0x4507('0x3c')]),_0xd50764);if(_0x52b331[_0x4507('0x3a')][_0x4507('0x47')]){_0x15a679[_0x4507('0x45')]=_[_0x4507('0x48')](_0x15a679[_0x4507('0x45')],{'$or':_[_0x4507('0x34')](_0xd50764,function(_0x38c513){if(_0x38c513[_0x4507('0x38')]!==_0x4507('0x49')){var _0x34c830={};_0x34c830[_0x38c513[_0x4507('0x31')]]={'$like':'%'+_0x52b331[_0x4507('0x3a')][_0x4507('0x47')]+'%'};return _0x34c830;}})});}_0x15a679=_[_0x4507('0x48')]({},_0x15a679,_0x52b331['options']);var _0x42e477={'where':_0x15a679['where']};return db[_0x4507('0x35')]['count'](_0x42e477)[_0x4507('0x28')](function(_0x1a0c1f){_0x6e346c['count']=_0x1a0c1f;if(_0x52b331[_0x4507('0x3a')][_0x4507('0x4a')]){_0x15a679[_0x4507('0x4b')]=[{'all':!![]}];}return db[_0x4507('0x35')][_0x4507('0x4c')](_0x15a679);})[_0x4507('0x28')](function(_0x45041b){_0x6e346c['rows']=_0x45041b;return _0x6e346c;})[_0x4507('0x28')](respondWithFilteredResult(_0x5d4b58,_0x15a679))[_0x4507('0x4d')](handleError(_0x5d4b58,null));};exports['show']=function(_0x5d3512,_0x13e9f5){var _0xde9cd8={'raw':![],'where':{'id':_0x5d3512['params']['id']}},_0x2f6738={};_0x2f6738[_0x4507('0x3d')]=_['keys'](db[_0x4507('0x35')]['rawAttributes']);_0x2f6738['query']=_[_0x4507('0x3b')](_0x5d3512[_0x4507('0x3a')]);_0x2f6738[_0x4507('0x3c')]=_[_0x4507('0x4e')](_0x2f6738[_0x4507('0x3d')],_0x2f6738[_0x4507('0x3a')]);_0xde9cd8['attributes']=_[_0x4507('0x4e')](_0x2f6738['model'],qs[_0x4507('0x3f')](_0x5d3512['query'][_0x4507('0x3f')]));_0xde9cd8[_0x4507('0x3e')]=_0xde9cd8[_0x4507('0x3e')][_0x4507('0x40')]?_0xde9cd8[_0x4507('0x3e')]:_0x2f6738[_0x4507('0x3d')];if(_0x5d3512[_0x4507('0x3a')][_0x4507('0x4a')]){_0xde9cd8[_0x4507('0x4b')]=[{'all':!![]}];}_0xde9cd8=_[_0x4507('0x48')]({},_0xde9cd8,_0x5d3512[_0x4507('0x4f')]);return db[_0x4507('0x35')][_0x4507('0x50')](_0xde9cd8)[_0x4507('0x28')](handleEntityNotFound(_0x13e9f5,null))[_0x4507('0x28')](respondWithResult(_0x13e9f5,null))[_0x4507('0x4d')](handleError(_0x13e9f5,null));};exports[_0x4507('0x29')]=function(_0x5c2131,_0x26ec02){return db[_0x4507('0x35')][_0x4507('0x50')]({'where':{'id':_0x5c2131[_0x4507('0x51')]['id']}})[_0x4507('0x28')](handleEntityNotFound(_0x26ec02,null))[_0x4507('0x28')](removeEntity(_0x26ec02,null))['catch'](handleError(_0x26ec02,null));};exports['describe']=function(_0x21211e,_0x3e11a4){return db['VoicePrefix'][_0x4507('0x52')]()[_0x4507('0x28')](respondWithResult(_0x3e11a4,null))[_0x4507('0x4d')](handleError(_0x3e11a4,null));};exports[_0x4507('0x53')]=function(_0x5136a9,_0xd82d8d){var _0x5d4354;return db['sequelize']['transaction'](function(_0x495ed5){return db[_0x4507('0x35')][_0x4507('0x53')](_0x5136a9[_0x4507('0x54')],{'transaction':_0x495ed5})[_0x4507('0x28')](function(_0x165683){_0x5d4354=_0x165683[_0x4507('0x2a')]({'plain':!![]});return db[_0x4507('0x55')][_0x4507('0x50')]({'where':{'id':_0x5d4354['VoiceExtensionId']},'raw':!![]})[_0x4507('0x28')](function(_0x5c219a){return createVoicePrefixExtensions(_0x5d4354,_0x5c219a,_0x495ed5);});});})[_0x4507('0x28')](function(){var _0x36081a=_0x5136a9['user']['get']({'plain':!![]});if(!_0x36081a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x36081a[_0x4507('0x56')]===_0x4507('0x57')){var _0x2dc9e7=_0x5d4354;return db[_0x4507('0x58')][_0x4507('0x50')]({'where':{'name':'VoicePrefixes','userProfileId':_0x36081a[_0x4507('0x59')]},'raw':!![]})[_0x4507('0x28')](function(_0x2af2d8){if(_0x2af2d8&&_0x2af2d8['autoAssociation']===0x0){return db['UserProfileResource'][_0x4507('0x53')]({'name':_0x2dc9e7['name'],'resourceId':_0x2dc9e7['id'],'type':_0x2af2d8[_0x4507('0x31')],'sectionId':_0x2af2d8['id']},{})[_0x4507('0x28')](function(){return _0x5d4354;});}else{return _0x5d4354;}})[_0x4507('0x4d')](function(_0x4f96b7){logger[_0x4507('0x2f')](_0x4507('0x5a'),_0x4f96b7);throw _0x4f96b7;});}return _0x5d4354;})['then'](respondWithResult(_0xd82d8d,null))['catch'](handleError(_0xd82d8d,null));};function Extension(_0x22f818,_0x10dc47,_0x6e3e23,_0x4dfedd){this['context']=_0x4507('0x5b');this[_0x4507('0x5c')]=_0x22f818;this[_0x4507('0x5d')]=_0x6e3e23;this[_0x4507('0x38')]=_0x4507('0x5e');this[_0x4507('0x5f')]='Voice\x20Prefix\x20Extension';this[_0x4507('0x60')]=_0x10dc47;this['appdata']=_0x4dfedd;}function createVoicePrefixExtensions(_0xac0e54,_0x1dd12f,_0x12c104){return new BPromise(function(_0xec17f1,_0x4b512e){var _0x575f7c=new Extension(formatPrefixName(_0xac0e54[_0x4507('0x61')]),0x1,_0x4507('0x62'),_0x4507('0x63'));_0x575f7c[_0x4507('0x64')]=_0xac0e54['id'];return db['VoiceExtension'][_0x4507('0x53')](_0x575f7c,{'transaction':_0x12c104})[_0x4507('0x28')](function(_0x4b562d){var _0x1338ce=_0x4b562d[_0x4507('0x2a')]({'plain':!![]});var _0xd83447=_[_0x4507('0x34')](addVoicePrefixExtensions(_0xac0e54,_0x1dd12f),function(_0x4f84a7){_0x4f84a7[_0x4507('0x65')]=_0x1338ce['id'];_0x4f84a7[_0x4507('0x64')]=_0xac0e54['id'];return _0x4f84a7;});return db[_0x4507('0x55')]['bulkCreate'](_0xd83447,{'transaction':_0x12c104})['then'](function(_0x2889aa){if(!_0x2889aa){return _0x4b512e('Extensions\x20creation\x20failed');}else{return _0xec17f1(_0x2889aa);}})[_0x4507('0x4d')](function(_0xbc273a){return _0x4b512e(_0xbc273a);});});;});};function addVoicePrefixExtensions(_0x69dbeb,_0x2d1dfd){var _0x30229d=[];var _0x334dce=formatPrefixName(_0x69dbeb['prefix']);_0x30229d[_0x4507('0x66')](new Extension(_0x334dce,0x2,_0x4507('0x67'),_0x4507('0x68')+_0x69dbeb[_0x4507('0x31')]));if(_0x69dbeb[_0x4507('0x69')]){_0x30229d[_0x4507('0x66')](new Extension(_0x334dce,0x3,_0x4507('0x67'),_0x4507('0x6a')+_0x69dbeb[_0x4507('0x69')]));}else{_0x30229d['push'](new Extension(_0x334dce,0x3,'NoOp','No\x20callerid\x20available'));}_0x30229d[_0x4507('0x66')](new Extension(_0x334dce,0x4,_0x4507('0x6b'),_0x2d1dfd['context']+','+'${EXTEN:'+(0x8+_0x69dbeb[_0x4507('0x31')]['length'])+'}'+','+0x1));return _0x30229d;}function formatPrefixName(_0x5eb699){var _0x151924='_';for(var _0x37e235=0x0;_0x37e235<_0x5eb699[_0x4507('0x40')];_0x37e235++){if(_0x5eb699[_0x4507('0x6c')](_0x37e235)=='-'){_0x151924+=_0x5eb699['charAt'](_0x37e235);}else{_0x151924+='['+_0x5eb699[_0x4507('0x6c')](_0x37e235)+']';}}_0x151924+='.';return _0x151924;}exports[_0x4507('0x27')]=function(_0x43a355,_0x5a42a3,_0x528208){var _0x47b51a=_0x43a355[_0x4507('0x54')];_0x47b51a[_0x4507('0x61')]=_0x4507('0x6d')+_0x47b51a[_0x4507('0x31')]+'-';return db[_0x4507('0x6e')][_0x4507('0x6f')](function(_0x505c60){return db[_0x4507('0x35')][_0x4507('0x27')](_0x47b51a,{'where':{'id':_0x47b51a['id']},'transaction':_0x505c60})[_0x4507('0x28')](function(){return db[_0x4507('0x55')][_0x4507('0x29')]({'where':{'VoicePrefixId':_0x47b51a['id']},'transaction':_0x505c60})[_0x4507('0x28')](function(){return db[_0x4507('0x55')][_0x4507('0x50')]({'where':{'id':_0x47b51a[_0x4507('0x65')]},'raw':!![]})[_0x4507('0x28')](function(_0x1b5511){return createVoicePrefixExtensions(_0x47b51a,_0x1b5511,_0x505c60);});});});})[_0x4507('0x28')](function(){return db[_0x4507('0x35')]['findById'](_0x47b51a['id']);})[_0x4507('0x28')](respondWithResult(_0x5a42a3,null))[_0x4507('0x4d')](handleError(_0x5a42a3,null));};exports[_0x4507('0x70')]=function(_0x32c640,_0x1962a1,_0x4606ba){return db[_0x4507('0x35')][_0x4507('0x50')]({'where':{'id':_0x32c640[_0x4507('0x51')]['id']}})[_0x4507('0x28')](handleEntityNotFound(_0x1962a1,null))[_0x4507('0x28')](function(_0x36d0dc){if(_0x36d0dc){return _0x36d0dc[_0x4507('0x70')](_0x32c640['body'][_0x4507('0x71')],_[_0x4507('0x72')](_0x32c640['body'],[_0x4507('0x71'),'id'])||{})[_0x4507('0x73')](function(_0x153cef){for(var _0x756424=0x0;_0x756424<_0x32c640[_0x4507('0x54')]['ids'][_0x4507('0x40')];_0x756424+=0x1){socket[_0x4507('0x74')](_0x4507('0x75'),{'UserId':Number(_0x32c640[_0x4507('0x54')][_0x4507('0x71')][_0x756424]),'VoicePrefixId':Number(_0x32c640[_0x4507('0x51')]['id'])});}return _0x153cef;});}})[_0x4507('0x28')](respondWithResult(_0x1962a1,null))['catch'](handleError(_0x1962a1,null));};exports['removeAgents']=function(_0x25385a,_0xe3e800,_0x345a7b){return db[_0x4507('0x35')][_0x4507('0x50')]({'where':{'id':_0x25385a[_0x4507('0x51')]['id']}})[_0x4507('0x28')](handleEntityNotFound(_0xe3e800,null))['then'](function(_0x3dd2cb){if(_0x3dd2cb){return _0x3dd2cb[_0x4507('0x76')](_0x25385a[_0x4507('0x3a')][_0x4507('0x71')])[_0x4507('0x28')](function(){if(_['isArray'](_0x25385a['query'][_0x4507('0x71')])){for(var _0xadaac9=0x0;_0xadaac9<_0x25385a[_0x4507('0x3a')][_0x4507('0x71')][_0x4507('0x40')];_0xadaac9+=0x1){socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x25385a['query'][_0x4507('0x71')][_0xadaac9]),'VoicePrefixId':Number(_0x25385a[_0x4507('0x51')]['id'])});}}else{socket[_0x4507('0x74')](_0x4507('0x77'),{'UserId':Number(_0x25385a['query'][_0x4507('0x71')]),'VoicePrefixId':Number(_0x25385a[_0x4507('0x51')]['id'])});}});}})[_0x4507('0x28')](respondWithStatusCode(_0xe3e800,null))[_0x4507('0x4d')](handleError(_0xe3e800,null));};exports['getAgents']=function(_0x492444,_0x3331b1,_0x1eb80f){var _0x2a0287={};var _0x188ef7={};var _0x2a3155;var _0x5eaa09;return db['VoicePrefix'][_0x4507('0x78')]({'where':{'id':_0x492444[_0x4507('0x51')]['id']}})[_0x4507('0x28')](handleEntityNotFound(_0x3331b1,null))[_0x4507('0x28')](function(_0x2e7658){if(_0x2e7658){_0x2a3155=_0x2e7658;_0x188ef7[_0x4507('0x3d')]=_['keys'](db[_0x4507('0x79')]['rawAttributes']);_0x188ef7['query']=_[_0x4507('0x3b')](_0x492444[_0x4507('0x3a')]);_0x188ef7['filters']=_[_0x4507('0x4e')](_0x188ef7[_0x4507('0x3d')],_0x188ef7[_0x4507('0x3a')]);_0x2a0287['attributes']=_[_0x4507('0x4e')](_0x188ef7['model'],qs[_0x4507('0x3f')](_0x492444[_0x4507('0x3a')][_0x4507('0x3f')]));_0x2a0287[_0x4507('0x3e')]=_0x2a0287['attributes'][_0x4507('0x40')]?_0x2a0287[_0x4507('0x3e')]:_0x188ef7[_0x4507('0x3d')];_0x2a0287[_0x4507('0x43')]=qs['sort'](_0x492444['query'][_0x4507('0x44')]);_0x2a0287[_0x4507('0x45')]=qs['filters'](_[_0x4507('0x46')](_0x492444['query'],_0x188ef7[_0x4507('0x3c')]));if(_0x492444[_0x4507('0x3a')][_0x4507('0x47')]){_0x2a0287['where']=_[_0x4507('0x48')](_0x2a0287[_0x4507('0x45')],{'$or':_[_0x4507('0x34')](_0x2a0287[_0x4507('0x3e')],function(_0x7f96b){var _0x211b4d={};_0x211b4d[_0x7f96b]={'$like':'%'+_0x492444[_0x4507('0x3a')][_0x4507('0x47')]+'%'};return _0x211b4d;})});}_0x2a0287=_[_0x4507('0x48')]({},_0x2a0287,_0x492444['options']);return _0x2a3155['getAgents'](_0x2a0287);}})[_0x4507('0x28')](function(_0x580a41){if(_0x580a41){_0x5eaa09=_0x580a41[_0x4507('0x40')];if(!_0x492444[_0x4507('0x3a')]['hasOwnProperty']('nolimit')){_0x2a0287[_0x4507('0x1f')]=qs[_0x4507('0x1f')](_0x492444[_0x4507('0x3a')][_0x4507('0x1f')]);_0x2a0287[_0x4507('0x1d')]=qs[_0x4507('0x1d')](_0x492444[_0x4507('0x3a')]['offset']);}return _0x2a3155[_0x4507('0x7a')](_0x2a0287);}})['then'](function(_0x55eaf2){if(_0x55eaf2){return _0x55eaf2?{'count':_0x5eaa09,'rows':_0x55eaf2}:null;}})[_0x4507('0x28')](respondWithResult(_0x3331b1,null))['catch'](handleError(_0x3331b1,null));};
\ No newline at end of file
+var _0x49f8=['userVoicePrefix:remove','User','getAgents','eml-format','fast-json-patch','request-promise','bluebird','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','get','VoicePrefixes','sendStatus','stack','name','index','map','VoicePrefix','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','include','find','describe','create','body','VoiceExtension','VoiceExtensionId','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','type','system','description','priority','appdata','prefix','Voice\x20Prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','push','callerIdAll','Set','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','sequelize','transaction','findById','addAgents','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x49f8,0xff));var _0x849f=function(_0x582598,_0x311dc5){_0x582598=_0x582598-0x0;var _0x1de137=_0x49f8[_0x582598];return _0x1de137;};'use strict';var emlformat=require(_0x849f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x849f('0x1'));var rp=require(_0x849f('0x2'));var moment=require('moment');var BPromise=require(_0x849f('0x3'));var Mustache=require('mustache');var util=require(_0x849f('0x4'));var path=require('path');var sox=require(_0x849f('0x5'));var csv=require('to-csv');var ejs=require(_0x849f('0x6'));var fs=require('fs');var fs_extra=require(_0x849f('0x7'));var _=require(_0x849f('0x8'));var squel=require(_0x849f('0x9'));var crypto=require(_0x849f('0xa'));var jsforce=require(_0x849f('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x849f('0xc'));var Redis=require(_0x849f('0xd'));var authService=require(_0x849f('0xe'));var qs=require(_0x849f('0xf'));var as=require(_0x849f('0x10'));var hardwareService=require(_0x849f('0x11'));var logger=require(_0x849f('0x12'))('api');var utils=require(_0x849f('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x849f('0x14'));var db=require(_0x849f('0x15'))['db'];config[_0x849f('0x16')]=_[_0x849f('0x17')](config['redis'],{'host':_0x849f('0x18'),'port':0x18eb});var socket=require(_0x849f('0x19'))(new Redis(config[_0x849f('0x16')]));require(_0x849f('0x1a'))[_0x849f('0x1b')](socket);function respondWithStatusCode(_0x49901e,_0x529161){_0x529161=_0x529161||0xcc;return function(_0x448867){if(_0x448867){return _0x49901e['sendStatus'](_0x529161);}return _0x49901e[_0x849f('0x1c')](_0x529161)[_0x849f('0x1d')]();};}function respondWithResult(_0x45b940,_0x252de4){_0x252de4=_0x252de4||0xc8;return function(_0x3e721f){if(_0x3e721f){return _0x45b940[_0x849f('0x1c')](_0x252de4)[_0x849f('0x1e')](_0x3e721f);}};}function respondWithFilteredResult(_0x5ed88d,_0x41395a){return function(_0x20bea7){if(_0x20bea7){var _0x189529=typeof _0x41395a['offset']===_0x849f('0x1f')&&typeof _0x41395a[_0x849f('0x20')]==='undefined';var _0x1ca1d6=_0x20bea7[_0x849f('0x21')];var _0x48622f=_0x189529?0x0:_0x41395a['offset'];var _0x240ea4=_0x189529?_0x20bea7[_0x849f('0x21')]:_0x41395a[_0x849f('0x22')]+_0x41395a[_0x849f('0x20')];var _0x24414f;if(_0x240ea4>=_0x1ca1d6){_0x240ea4=_0x1ca1d6;_0x24414f=0xc8;}else{_0x24414f=0xce;}_0x5ed88d[_0x849f('0x1c')](_0x24414f);return _0x5ed88d[_0x849f('0x23')](_0x849f('0x24'),_0x48622f+'-'+_0x240ea4+'/'+_0x1ca1d6)['json'](_0x20bea7);}return null;};}function patchUpdates(_0x1d0da5){return function(_0x1aab28){try{jsonpatch[_0x849f('0x25')](_0x1aab28,_0x1d0da5,!![]);}catch(_0x2229c0){return BPromise[_0x849f('0x26')](_0x2229c0);}return _0x1aab28['save']();};}function saveUpdates(_0x3a5724,_0x32be69){return function(_0x15a41c){if(_0x15a41c){return _0x15a41c[_0x849f('0x27')](_0x3a5724)[_0x849f('0x28')](function(_0x264e89){return _0x264e89;});}return null;};}function removeEntity(_0x185678,_0x2e5371){return function(_0x28f180){if(_0x28f180){return _0x28f180[_0x849f('0x29')]()[_0x849f('0x28')](function(){var _0x347f4a=_0x28f180[_0x849f('0x2a')]({'plain':!![]});var _0x529c3b=_0x849f('0x2b');return db['UserProfileResource'][_0x849f('0x29')]({'where':{'type':_0x529c3b,'resourceId':_0x347f4a['id']}})[_0x849f('0x28')](function(){return _0x28f180;});})[_0x849f('0x28')](function(){_0x185678[_0x849f('0x1c')](0xcc)[_0x849f('0x1d')]();});}};}function handleEntityNotFound(_0x3f1497,_0x5c4234){return function(_0x20fa7f){if(!_0x20fa7f){_0x3f1497[_0x849f('0x2c')](0x194);}return _0x20fa7f;};}function handleError(_0x12b756,_0x5b4a25){_0x5b4a25=_0x5b4a25||0x1f4;return function(_0x347c93){logger['error'](_0x347c93[_0x849f('0x2d')]);if(_0x347c93[_0x849f('0x2e')]){delete _0x347c93[_0x849f('0x2e')];}_0x12b756[_0x849f('0x1c')](_0x5b4a25)['send'](_0x347c93);};}exports[_0x849f('0x2f')]=function(_0x47eb70,_0x492407){var _0x4511d2={},_0x5f4b15={},_0x5c4f8a={'count':0x0,'rows':[]};var _0x4b93ca=_[_0x849f('0x30')](db[_0x849f('0x31')][_0x849f('0x32')],function(_0x39c2b7){return{'name':_0x39c2b7[_0x849f('0x33')],'type':_0x39c2b7['type'][_0x849f('0x34')]};});_0x5f4b15[_0x849f('0x35')]=_[_0x849f('0x30')](_0x4b93ca,_0x849f('0x2e'));_0x5f4b15[_0x849f('0x36')]=_[_0x849f('0x37')](_0x47eb70[_0x849f('0x36')]);_0x5f4b15[_0x849f('0x38')]=_[_0x849f('0x39')](_0x5f4b15[_0x849f('0x35')],_0x5f4b15['query']);_0x4511d2['attributes']=_[_0x849f('0x39')](_0x5f4b15[_0x849f('0x35')],qs[_0x849f('0x3a')](_0x47eb70['query'][_0x849f('0x3a')]));_0x4511d2[_0x849f('0x3b')]=_0x4511d2[_0x849f('0x3b')][_0x849f('0x3c')]?_0x4511d2['attributes']:_0x5f4b15[_0x849f('0x35')];if(!_0x47eb70[_0x849f('0x36')][_0x849f('0x3d')](_0x849f('0x3e'))){_0x4511d2[_0x849f('0x20')]=qs[_0x849f('0x20')](_0x47eb70[_0x849f('0x36')]['limit']);_0x4511d2[_0x849f('0x22')]=qs[_0x849f('0x22')](_0x47eb70[_0x849f('0x36')]['offset']);}_0x4511d2['order']=qs[_0x849f('0x3f')](_0x47eb70['query'][_0x849f('0x3f')]);_0x4511d2['where']=qs[_0x849f('0x38')](_[_0x849f('0x40')](_0x47eb70['query'],_0x5f4b15[_0x849f('0x38')]),_0x4b93ca);if(_0x47eb70[_0x849f('0x36')][_0x849f('0x41')]){_0x4511d2[_0x849f('0x42')]=_['merge'](_0x4511d2['where'],{'$or':_[_0x849f('0x30')](_0x4b93ca,function(_0x2600ec){if(_0x2600ec['type']!==_0x849f('0x43')){var _0x31eab5={};_0x31eab5[_0x2600ec[_0x849f('0x2e')]]={'$like':'%'+_0x47eb70['query'][_0x849f('0x41')]+'%'};return _0x31eab5;}})});}_0x4511d2=_[_0x849f('0x44')]({},_0x4511d2,_0x47eb70[_0x849f('0x45')]);var _0x258696={'where':_0x4511d2[_0x849f('0x42')]};return db['VoicePrefix']['count'](_0x258696)[_0x849f('0x28')](function(_0x2a7ed9){_0x5c4f8a['count']=_0x2a7ed9;if(_0x47eb70[_0x849f('0x36')][_0x849f('0x46')]){_0x4511d2['include']=[{'all':!![]}];}return db[_0x849f('0x31')][_0x849f('0x47')](_0x4511d2);})[_0x849f('0x28')](function(_0x2276db){_0x5c4f8a[_0x849f('0x48')]=_0x2276db;return _0x5c4f8a;})[_0x849f('0x28')](respondWithFilteredResult(_0x492407,_0x4511d2))[_0x849f('0x49')](handleError(_0x492407,null));};exports[_0x849f('0x4a')]=function(_0x2431ac,_0x2f9e7f){var _0x42a66a={'raw':![],'where':{'id':_0x2431ac[_0x849f('0x4b')]['id']}},_0x423ff1={};_0x423ff1[_0x849f('0x35')]=_['keys'](db[_0x849f('0x31')][_0x849f('0x32')]);_0x423ff1[_0x849f('0x36')]=_[_0x849f('0x37')](_0x2431ac[_0x849f('0x36')]);_0x423ff1[_0x849f('0x38')]=_['intersection'](_0x423ff1[_0x849f('0x35')],_0x423ff1[_0x849f('0x36')]);_0x42a66a[_0x849f('0x3b')]=_[_0x849f('0x39')](_0x423ff1[_0x849f('0x35')],qs['fields'](_0x2431ac[_0x849f('0x36')]['fields']));_0x42a66a[_0x849f('0x3b')]=_0x42a66a[_0x849f('0x3b')][_0x849f('0x3c')]?_0x42a66a[_0x849f('0x3b')]:_0x423ff1[_0x849f('0x35')];if(_0x2431ac[_0x849f('0x36')]['includeAll']){_0x42a66a[_0x849f('0x4c')]=[{'all':!![]}];}_0x42a66a=_[_0x849f('0x44')]({},_0x42a66a,_0x2431ac[_0x849f('0x45')]);return db[_0x849f('0x31')][_0x849f('0x4d')](_0x42a66a)[_0x849f('0x28')](handleEntityNotFound(_0x2f9e7f,null))[_0x849f('0x28')](respondWithResult(_0x2f9e7f,null))[_0x849f('0x49')](handleError(_0x2f9e7f,null));};exports[_0x849f('0x29')]=function(_0x3fc401,_0xa6e642){return db[_0x849f('0x31')][_0x849f('0x4d')]({'where':{'id':_0x3fc401[_0x849f('0x4b')]['id']}})[_0x849f('0x28')](handleEntityNotFound(_0xa6e642,null))[_0x849f('0x28')](removeEntity(_0xa6e642,null))[_0x849f('0x49')](handleError(_0xa6e642,null));};exports['describe']=function(_0x164377,_0x59e8a3){return db[_0x849f('0x31')][_0x849f('0x4e')]()[_0x849f('0x28')](respondWithResult(_0x59e8a3,null))[_0x849f('0x49')](handleError(_0x59e8a3,null));};exports['create']=function(_0x4b16a0,_0x5bc6ba){var _0x48b66e;return db['sequelize']['transaction'](function(_0x1f6117){return db[_0x849f('0x31')][_0x849f('0x4f')](_0x4b16a0[_0x849f('0x50')],{'transaction':_0x1f6117})[_0x849f('0x28')](function(_0x60c2b4){_0x48b66e=_0x60c2b4[_0x849f('0x2a')]({'plain':!![]});return db[_0x849f('0x51')][_0x849f('0x4d')]({'where':{'id':_0x48b66e[_0x849f('0x52')]},'raw':!![]})[_0x849f('0x28')](function(_0x27719a){return createVoicePrefixExtensions(_0x48b66e,_0x27719a,_0x1f6117);});});})[_0x849f('0x28')](function(){var _0x2021b1=_0x4b16a0[_0x849f('0x53')][_0x849f('0x2a')]({'plain':!![]});if(!_0x2021b1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2021b1['role']===_0x849f('0x53')){var _0x27bc04=_0x48b66e;return db[_0x849f('0x54')][_0x849f('0x4d')]({'where':{'name':_0x849f('0x2b'),'userProfileId':_0x2021b1[_0x849f('0x55')]},'raw':!![]})[_0x849f('0x28')](function(_0x2022c7){if(_0x2022c7&&_0x2022c7[_0x849f('0x56')]===0x0){return db[_0x849f('0x57')]['create']({'name':_0x27bc04['name'],'resourceId':_0x27bc04['id'],'type':_0x2022c7[_0x849f('0x2e')],'sectionId':_0x2022c7['id']},{})[_0x849f('0x28')](function(){return _0x48b66e;});}else{return _0x48b66e;}})[_0x849f('0x49')](function(_0x5d789e){logger[_0x849f('0x58')](_0x849f('0x59'),_0x5d789e);throw _0x5d789e;});}return _0x48b66e;})[_0x849f('0x28')](respondWithResult(_0x5bc6ba,null))['catch'](handleError(_0x5bc6ba,null));};function Extension(_0xdc81d4,_0x49e1b6,_0x2379f2,_0x5f252a){this[_0x849f('0x5a')]=_0x849f('0x5b');this[_0x849f('0x5c')]=_0xdc81d4;this[_0x849f('0x5d')]=_0x2379f2;this[_0x849f('0x5e')]=_0x849f('0x5f');this[_0x849f('0x60')]='Voice\x20Prefix\x20Extension';this[_0x849f('0x61')]=_0x49e1b6;this[_0x849f('0x62')]=_0x5f252a;}function createVoicePrefixExtensions(_0x34c57a,_0x36e35d,_0x3a03d9){return new BPromise(function(_0x416f28,_0x40e8bb){var _0x3f5031=new Extension(formatPrefixName(_0x34c57a[_0x849f('0x63')]),0x1,'NoOp',_0x849f('0x64'));_0x3f5031[_0x849f('0x65')]=_0x34c57a['id'];return db[_0x849f('0x51')]['create'](_0x3f5031,{'transaction':_0x3a03d9})[_0x849f('0x28')](function(_0x4ea8fc){var _0xef8511=_0x4ea8fc[_0x849f('0x2a')]({'plain':!![]});var _0x236dda=_['map'](addVoicePrefixExtensions(_0x34c57a,_0x36e35d),function(_0x5e0a8a){_0x5e0a8a[_0x849f('0x52')]=_0xef8511['id'];_0x5e0a8a[_0x849f('0x65')]=_0x34c57a['id'];return _0x5e0a8a;});return db[_0x849f('0x51')][_0x849f('0x66')](_0x236dda,{'transaction':_0x3a03d9})['then'](function(_0x1ed924){if(!_0x1ed924){return _0x40e8bb(_0x849f('0x67'));}else{return _0x416f28(_0x1ed924);}})[_0x849f('0x49')](function(_0x33b21e){return _0x40e8bb(_0x33b21e);});});;});};function addVoicePrefixExtensions(_0x4bee3a,_0x200534){var _0x5e69fa=[];var _0x11f379=formatPrefixName(_0x4bee3a[_0x849f('0x63')]);_0x5e69fa[_0x849f('0x68')](new Extension(_0x11f379,0x2,'Set','CDR(prefix)='+_0x4bee3a[_0x849f('0x2e')]));if(_0x4bee3a[_0x849f('0x69')]){_0x5e69fa[_0x849f('0x68')](new Extension(_0x11f379,0x3,_0x849f('0x6a'),_0x849f('0x6b')+_0x4bee3a[_0x849f('0x69')]));}else{_0x5e69fa[_0x849f('0x68')](new Extension(_0x11f379,0x3,'NoOp',_0x849f('0x6c')));}_0x5e69fa[_0x849f('0x68')](new Extension(_0x11f379,0x4,_0x849f('0x6d'),_0x200534[_0x849f('0x5a')]+','+_0x849f('0x6e')+(0x8+_0x4bee3a['name']['length'])+'}'+','+0x1));return _0x5e69fa;}function formatPrefixName(_0x2e40de){var _0xd2b076='_';for(var _0x2f8178=0x0;_0x2f8178<_0x2e40de[_0x849f('0x3c')];_0x2f8178++){if(_0x2e40de[_0x849f('0x6f')](_0x2f8178)=='-'){_0xd2b076+=_0x2e40de[_0x849f('0x6f')](_0x2f8178);}else{_0xd2b076+='['+_0x2e40de[_0x849f('0x6f')](_0x2f8178)+']';}}_0xd2b076+='.';return _0xd2b076;}exports[_0x849f('0x27')]=function(_0xfba46c,_0x368b6f,_0xa19d8a){var _0x3ab653=_0xfba46c['body'];_0x3ab653['prefix']=_0x849f('0x70')+_0x3ab653['name']+'-';return db[_0x849f('0x71')][_0x849f('0x72')](function(_0x1cd78e){return db[_0x849f('0x31')][_0x849f('0x27')](_0x3ab653,{'where':{'id':_0x3ab653['id']},'transaction':_0x1cd78e})[_0x849f('0x28')](function(){return db[_0x849f('0x51')][_0x849f('0x29')]({'where':{'VoicePrefixId':_0x3ab653['id']},'transaction':_0x1cd78e})[_0x849f('0x28')](function(){return db[_0x849f('0x51')][_0x849f('0x4d')]({'where':{'id':_0x3ab653[_0x849f('0x52')]},'raw':!![]})['then'](function(_0x1365dc){return createVoicePrefixExtensions(_0x3ab653,_0x1365dc,_0x1cd78e);});});});})['then'](function(){return db[_0x849f('0x31')][_0x849f('0x73')](_0x3ab653['id']);})[_0x849f('0x28')](respondWithResult(_0x368b6f,null))[_0x849f('0x49')](handleError(_0x368b6f,null));};exports[_0x849f('0x74')]=function(_0xdafc3b,_0x1ab5e1,_0x2219ef){return db[_0x849f('0x31')][_0x849f('0x4d')]({'where':{'id':_0xdafc3b[_0x849f('0x4b')]['id']}})[_0x849f('0x28')](handleEntityNotFound(_0x1ab5e1,null))[_0x849f('0x28')](function(_0x41f9a0){if(_0x41f9a0){return _0x41f9a0[_0x849f('0x74')](_0xdafc3b[_0x849f('0x50')][_0x849f('0x75')],_['omit'](_0xdafc3b[_0x849f('0x50')],['ids','id'])||{})[_0x849f('0x76')](function(_0x3753b4){for(var _0x5a5128=0x0;_0x5a5128<_0xdafc3b[_0x849f('0x50')]['ids'][_0x849f('0x3c')];_0x5a5128+=0x1){socket[_0x849f('0x77')](_0x849f('0x78'),{'UserId':Number(_0xdafc3b[_0x849f('0x50')][_0x849f('0x75')][_0x5a5128]),'VoicePrefixId':Number(_0xdafc3b[_0x849f('0x4b')]['id'])});}return _0x3753b4;});}})['then'](respondWithResult(_0x1ab5e1,null))[_0x849f('0x49')](handleError(_0x1ab5e1,null));};exports[_0x849f('0x79')]=function(_0xd29499,_0x5fba5f,_0x122c8a){return db[_0x849f('0x31')][_0x849f('0x4d')]({'where':{'id':_0xd29499[_0x849f('0x4b')]['id']}})[_0x849f('0x28')](handleEntityNotFound(_0x5fba5f,null))[_0x849f('0x28')](function(_0x3989e4){if(_0x3989e4){return _0x3989e4[_0x849f('0x79')](_0xd29499[_0x849f('0x36')][_0x849f('0x75')])[_0x849f('0x28')](function(){if(_[_0x849f('0x7a')](_0xd29499[_0x849f('0x36')][_0x849f('0x75')])){for(var _0x17a643=0x0;_0x17a643<_0xd29499[_0x849f('0x36')][_0x849f('0x75')]['length'];_0x17a643+=0x1){socket[_0x849f('0x77')](_0x849f('0x7b'),{'UserId':Number(_0xd29499[_0x849f('0x36')][_0x849f('0x75')][_0x17a643]),'VoicePrefixId':Number(_0xd29499[_0x849f('0x4b')]['id'])});}}else{socket['emit'](_0x849f('0x7b'),{'UserId':Number(_0xd29499[_0x849f('0x36')][_0x849f('0x75')]),'VoicePrefixId':Number(_0xd29499[_0x849f('0x4b')]['id'])});}});}})[_0x849f('0x28')](respondWithStatusCode(_0x5fba5f,null))[_0x849f('0x49')](handleError(_0x5fba5f,null));};exports['getAgents']=function(_0x3cf132,_0x12af77,_0x3b9c15){var _0x410147={};var _0xc865e8={};var _0xd2994;var _0x4966c0;return db['VoicePrefix']['findOne']({'where':{'id':_0x3cf132['params']['id']}})[_0x849f('0x28')](handleEntityNotFound(_0x12af77,null))[_0x849f('0x28')](function(_0x5294cf){if(_0x5294cf){_0xd2994=_0x5294cf;_0xc865e8['model']=_[_0x849f('0x37')](db[_0x849f('0x7c')][_0x849f('0x32')]);_0xc865e8['query']=_[_0x849f('0x37')](_0x3cf132[_0x849f('0x36')]);_0xc865e8[_0x849f('0x38')]=_['intersection'](_0xc865e8[_0x849f('0x35')],_0xc865e8[_0x849f('0x36')]);_0x410147[_0x849f('0x3b')]=_[_0x849f('0x39')](_0xc865e8['model'],qs['fields'](_0x3cf132['query'][_0x849f('0x3a')]));_0x410147[_0x849f('0x3b')]=_0x410147[_0x849f('0x3b')][_0x849f('0x3c')]?_0x410147['attributes']:_0xc865e8[_0x849f('0x35')];_0x410147['order']=qs[_0x849f('0x3f')](_0x3cf132['query']['sort']);_0x410147[_0x849f('0x42')]=qs[_0x849f('0x38')](_[_0x849f('0x40')](_0x3cf132[_0x849f('0x36')],_0xc865e8[_0x849f('0x38')]));if(_0x3cf132[_0x849f('0x36')]['filter']){_0x410147[_0x849f('0x42')]=_['merge'](_0x410147[_0x849f('0x42')],{'$or':_[_0x849f('0x30')](_0x410147[_0x849f('0x3b')],function(_0x11db92){var _0x508eb4={};_0x508eb4[_0x11db92]={'$like':'%'+_0x3cf132[_0x849f('0x36')][_0x849f('0x41')]+'%'};return _0x508eb4;})});}_0x410147=_[_0x849f('0x44')]({},_0x410147,_0x3cf132[_0x849f('0x45')]);return _0xd2994[_0x849f('0x7d')](_0x410147);}})[_0x849f('0x28')](function(_0x32b836){if(_0x32b836){_0x4966c0=_0x32b836[_0x849f('0x3c')];if(!_0x3cf132[_0x849f('0x36')]['hasOwnProperty'](_0x849f('0x3e'))){_0x410147[_0x849f('0x20')]=qs['limit'](_0x3cf132[_0x849f('0x36')][_0x849f('0x20')]);_0x410147[_0x849f('0x22')]=qs[_0x849f('0x22')](_0x3cf132[_0x849f('0x36')][_0x849f('0x22')]);}return _0xd2994['getAgents'](_0x410147);}})[_0x849f('0x28')](function(_0x177cff){if(_0x177cff){return _0x177cff?{'count':_0x4966c0,'rows':_0x177cff}:null;}})[_0x849f('0x28')](respondWithResult(_0x12af77,null))[_0x849f('0x49')](handleError(_0x12af77,null));};
\ No newline at end of file
index b9f05d3..1c95528 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb13c=['emit','hasOwnProperty','hook','exports','events','VoicePrefix','remove'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xb13c,0x177));var _0xcb13=function(_0x381379,_0x3f3b86){_0x381379=_0x381379-0x0;var _0x3e1063=_0xb13c[_0x381379];return _0x3e1063;};'use strict';var EventEmitter=require(_0xcb13('0x0'));var VoicePrefix=require('../../mysqldb')['db'][_0xcb13('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xcb13('0x2')};function emitEvent(_0x388738){return function(_0x22de13,_0x9cec9e,_0x399ffd){VoicePrefixEvents[_0xcb13('0x3')](_0x388738+':'+_0x22de13['id'],_0x22de13);VoicePrefixEvents[_0xcb13('0x3')](_0x388738,_0x22de13);_0x399ffd(null);};}for(var e in events){if(events[_0xcb13('0x4')](e)){var event=events[e];VoicePrefix[_0xcb13('0x5')](e,emitEvent(event));}}module[_0xcb13('0x6')]=VoicePrefixEvents;
\ No newline at end of file
+var _0xfb76=['update','emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save'];(function(_0x3502f5,_0x237e36){var _0xc6c409=function(_0x48e5fe){while(--_0x48e5fe){_0x3502f5['push'](_0x3502f5['shift']());}};_0xc6c409(++_0x237e36);}(_0xfb76,0x1e4));var _0x6fb7=function(_0x3f4114,_0x36d9d4){_0x3f4114=_0x3f4114-0x0;var _0x2129d4=_0xfb76[_0x3f4114];return _0x2129d4;};'use strict';var EventEmitter=require(_0x6fb7('0x0'));var VoicePrefix=require(_0x6fb7('0x1'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x6fb7('0x2')](0x0);var events={'afterCreate':_0x6fb7('0x3'),'afterUpdate':_0x6fb7('0x4'),'afterDestroy':'remove'};function emitEvent(_0x20e5e7){return function(_0x556c58,_0x39bdd2,_0x385c83){VoicePrefixEvents[_0x6fb7('0x5')](_0x20e5e7+':'+_0x556c58['id'],_0x556c58);VoicePrefixEvents[_0x6fb7('0x5')](_0x20e5e7,_0x556c58);_0x385c83(null);};}for(var e in events){if(events[_0x6fb7('0x6')](e)){var event=events[e];VoicePrefix[_0x6fb7('0x7')](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
index 7cd3fd6..8348bc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7207=['exports','VoicePrefix','voice_prefixes','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./voicePrefix.attributes'];(function(_0x464e74,_0x583c17){var _0x439c03=function(_0x5069b7){while(--_0x5069b7){_0x464e74['push'](_0x464e74['shift']());}};_0x439c03(++_0x583c17);}(_0x7207,0x1cb));var _0x7720=function(_0x385ad0,_0x6a5e24){_0x385ad0=_0x385ad0-0x0;var _0x2285d4=_0x7207[_0x385ad0];return _0x2285d4;};'use strict';var _=require(_0x7720('0x0'));var util=require(_0x7720('0x1'));var logger=require(_0x7720('0x2'))('api');var moment=require(_0x7720('0x3'));var BPromise=require('bluebird');var rp=require(_0x7720('0x4'));var fs=require('fs');var path=require(_0x7720('0x5'));var rimraf=require(_0x7720('0x6'));var config=require(_0x7720('0x7'));var attributes=require(_0x7720('0x8'));module[_0x7720('0x9')]=function(_0x918cac,_0x19e113){return _0x918cac['define'](_0x7720('0xa'),attributes,{'tableName':_0x7720('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa91a=['request-promise','../../config/environment','./voicePrefix.attributes','define','VoicePrefix','lodash','../../config/logger','api','moment','bluebird'];(function(_0x21c04d,_0x38f206){var _0x513295=function(_0x3067c1){while(--_0x3067c1){_0x21c04d['push'](_0x21c04d['shift']());}};_0x513295(++_0x38f206);}(_0xa91a,0x181));var _0xaa91=function(_0x48dd59,_0x8bfd3c){_0x48dd59=_0x48dd59-0x0;var _0x158628=_0xa91a[_0x48dd59];return _0x158628;};'use strict';var _=require(_0xaa91('0x0'));var util=require('util');var logger=require(_0xaa91('0x1'))(_0xaa91('0x2'));var moment=require(_0xaa91('0x3'));var BPromise=require(_0xaa91('0x4'));var rp=require(_0xaa91('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xaa91('0x6'));var attributes=require(_0xaa91('0x7'));module['exports']=function(_0x946d09,_0x22d023){return _0x946d09[_0xaa91('0x8')](_0xaa91('0x9'),attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 823984e..e0a25a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x110e=['info','VoicePrefix,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','VoicePrefix,\x20%s,\x20%s','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','client','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','request','then'];(function(_0x13e3f7,_0x58f341){var _0x267c4d=function(_0x19d612){while(--_0x19d612){_0x13e3f7['push'](_0x13e3f7['shift']());}};_0x267c4d(++_0x58f341);}(_0x110e,0x68));var _0xe110=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x110e[_0x1203f];return _0x365f0a;};'use strict';var _=require(_0xe110('0x0'));var util=require(_0xe110('0x1'));var moment=require('moment');var BPromise=require(_0xe110('0x2'));var rs=require(_0xe110('0x3'));var fs=require('fs');var Redis=require(_0xe110('0x4'));var db=require(_0xe110('0x5'))['db'];var utils=require(_0xe110('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe110('0x7')]['http']({'port':0x232a});config[_0xe110('0x8')]=_[_0xe110('0x9')](config[_0xe110('0x8')],{'host':_0xe110('0xa'),'port':0x18eb});var socket=require(_0xe110('0xb'))(new Redis(config[_0xe110('0x8')]));require(_0xe110('0xc'))[_0xe110('0xd')](socket);function respondWithRpcPromise(_0x3985c9,_0x47a535,_0x2df21e){return new BPromise(function(_0x435722,_0x5ebe72){return client[_0xe110('0xe')](_0x3985c9,_0x2df21e)[_0xe110('0xf')](function(_0x326a5a){logger[_0xe110('0x10')]('VoicePrefix,\x20%s,\x20%s',_0x47a535,'request\x20sent');logger['debug'](_0xe110('0x11'),_0x47a535,_0xe110('0x12'),JSON['stringify'](_0x326a5a));if(_0x326a5a['error']){if(_0x326a5a['error'][_0xe110('0x13')]===0x1f4){logger[_0xe110('0x14')]('VoicePrefix,\x20%s,\x20%s',_0x47a535,_0x326a5a['error'][_0xe110('0x15')]);return _0x5ebe72(_0x326a5a['error'][_0xe110('0x15')]);}logger[_0xe110('0x14')](_0xe110('0x16'),_0x47a535,_0x326a5a[_0xe110('0x14')]['message']);return _0x435722(_0x326a5a[_0xe110('0x14')][_0xe110('0x15')]);}else{logger['info']('VoicePrefix,\x20%s,\x20%s',_0x47a535,_0xe110('0x12'));_0x435722(_0x326a5a['result'][_0xe110('0x15')]);}})[_0xe110('0x17')](function(_0x47fff8){logger[_0xe110('0x14')](_0xe110('0x16'),_0x47a535,_0x47fff8);_0x5ebe72(_0x47fff8);});});}
\ No newline at end of file
+var _0x7bd0=['register','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./voicePrefix.socket'];(function(_0x54158e,_0x2c4c6d){var _0xffc277=function(_0x46ced9){while(--_0x46ced9){_0x54158e['push'](_0x54158e['shift']());}};_0xffc277(++_0x2c4c6d);}(_0x7bd0,0x111));var _0x07bd=function(_0x4001ad,_0x1e22dd){_0x4001ad=_0x4001ad-0x0;var _0x4c7ec2=_0x7bd0[_0x4001ad];return _0x4c7ec2;};'use strict';var _=require(_0x07bd('0x0'));var util=require(_0x07bd('0x1'));var moment=require(_0x07bd('0x2'));var BPromise=require(_0x07bd('0x3'));var rs=require(_0x07bd('0x4'));var fs=require('fs');var Redis=require(_0x07bd('0x5'));var db=require(_0x07bd('0x6'))['db'];var utils=require(_0x07bd('0x7'));var logger=require('../../config/logger')(_0x07bd('0x8'));var config=require(_0x07bd('0x9'));var jayson=require(_0x07bd('0xa'));var client=jayson[_0x07bd('0xb')][_0x07bd('0xc')]({'port':0x232a});config[_0x07bd('0xd')]=_[_0x07bd('0xe')](config['redis'],{'host':_0x07bd('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x07bd('0xd')]));require(_0x07bd('0x10'))[_0x07bd('0x11')](socket);function respondWithRpcPromise(_0x5984fa,_0x2bace8,_0x141e8b){return new BPromise(function(_0x324a46,_0x169b07){return client['request'](_0x5984fa,_0x141e8b)[_0x07bd('0x12')](function(_0x313ca5){logger[_0x07bd('0x13')](_0x07bd('0x14'),_0x2bace8,_0x07bd('0x15'));logger[_0x07bd('0x16')](_0x07bd('0x17'),_0x2bace8,_0x07bd('0x15'),JSON['stringify'](_0x313ca5));if(_0x313ca5['error']){if(_0x313ca5[_0x07bd('0x18')][_0x07bd('0x19')]===0x1f4){logger[_0x07bd('0x18')](_0x07bd('0x14'),_0x2bace8,_0x313ca5[_0x07bd('0x18')][_0x07bd('0x1a')]);return _0x169b07(_0x313ca5[_0x07bd('0x18')]['message']);}logger[_0x07bd('0x18')]('VoicePrefix,\x20%s,\x20%s',_0x2bace8,_0x313ca5[_0x07bd('0x18')][_0x07bd('0x1a')]);return _0x324a46(_0x313ca5[_0x07bd('0x18')][_0x07bd('0x1a')]);}else{logger[_0x07bd('0x13')]('VoicePrefix,\x20%s,\x20%s',_0x2bace8,_0x07bd('0x15'));_0x324a46(_0x313ca5[_0x07bd('0x1b')]['message']);}})[_0x07bd('0x1c')](function(_0x72f775){logger[_0x07bd('0x18')](_0x07bd('0x14'),_0x2bace8,_0x72f775);_0x169b07(_0x72f775);});});}
\ No newline at end of file
index f579803..75f5f6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ef0=['length','voicePrefix:','./voicePrefix.events','remove','emit','register'];(function(_0x3250f7,_0x1c2afc){var _0xdb6ac4=function(_0x5a23f8){while(--_0x5a23f8){_0x3250f7['push'](_0x3250f7['shift']());}};_0xdb6ac4(++_0x1c2afc);}(_0x3ef0,0x19a));var _0x03ef=function(_0x553af0,_0x38a9ce){_0x553af0=_0x553af0-0x0;var _0x4f4098=_0x3ef0[_0x553af0];return _0x4f4098;};'use strict';var VoicePrefixEvents=require(_0x03ef('0x0'));var events=['save',_0x03ef('0x1'),'update'];function createListener(_0x3ee9a3,_0x5367d2){return function(_0x2aa000){_0x5367d2[_0x03ef('0x2')](_0x3ee9a3,_0x2aa000);};}function removeListener(_0x321d93,_0x5298e7){return function(){VoicePrefixEvents['removeListener'](_0x321d93,_0x5298e7);};}exports[_0x03ef('0x3')]=function(_0xadf812){for(var _0x1ea0f9=0x0,_0x47e561=events[_0x03ef('0x4')];_0x1ea0f9<_0x47e561;_0x1ea0f9++){var _0x3c06ee=events[_0x1ea0f9];var _0x2d54e7=createListener(_0x03ef('0x5')+_0x3c06ee,_0xadf812);VoicePrefixEvents['on'](_0x3c06ee,_0x2d54e7);}};
\ No newline at end of file
+var _0xa74d=['length','save','remove','update','removeListener','register'];(function(_0xac7c0,_0x53f477){var _0xe7107f=function(_0x41b85f){while(--_0x41b85f){_0xac7c0['push'](_0xac7c0['shift']());}};_0xe7107f(++_0x53f477);}(_0xa74d,0x1cf));var _0xda74=function(_0x4c9ef2,_0x33f5bc){_0x4c9ef2=_0x4c9ef2-0x0;var _0x12c759=_0xa74d[_0x4c9ef2];return _0x12c759;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=[_0xda74('0x0'),_0xda74('0x1'),_0xda74('0x2')];function createListener(_0xefdb71,_0x34754d){return function(_0xe99b70){_0x34754d['emit'](_0xefdb71,_0xe99b70);};}function removeListener(_0x121da4,_0xc80d71){return function(){VoicePrefixEvents[_0xda74('0x3')](_0x121da4,_0xc80d71);};}exports[_0xda74('0x4')]=function(_0x12cd04){for(var _0x718eb6=0x0,_0x2113f2=events[_0xda74('0x5')];_0x718eb6<_0x2113f2;_0x718eb6++){var _0x5da443=events[_0x718eb6];var _0x23d5f5=createListener('voicePrefix:'+_0x5da443,_0x12cd04);VoicePrefixEvents['on'](_0x5da443,_0x23d5f5);}};
\ No newline at end of file
index 75e6427..b3dc05a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x319b=['getHoppers','/:id/hopper_finals','getHopperFinals','/:id/teams','getTeams','/:id/users','/:id/members','getMembers','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addTeams','addLists','put','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueue.controller','isAuthenticated','index','get','/:id','show','/:id/hoppers'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x319b,0x116));var _0xb319=function(_0x396f01,_0x2bf2ed){_0x396f01=_0x396f01-0x0;var _0x1f48ce=_0x319b[_0x396f01];return _0x1f48ce;};'use strict';var multer=require(_0xb319('0x0'));var util=require(_0xb319('0x1'));var path=require(_0xb319('0x2'));var timeout=require(_0xb319('0x3'));var express=require(_0xb319('0x4'));var router=express[_0xb319('0x5')]();var fs_extra=require(_0xb319('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xb319('0x7'));var config=require(_0xb319('0x8'));var controller=require(_0xb319('0x9'));router['get']('/',auth[_0xb319('0xa')](),controller[_0xb319('0xb')]);router[_0xb319('0xc')](_0xb319('0xd'),auth[_0xb319('0xa')](),controller[_0xb319('0xe')]);router[_0xb319('0xc')](_0xb319('0xf'),auth[_0xb319('0xa')](),controller[_0xb319('0x10')]);router[_0xb319('0xc')]('/:id/hopper_histories',auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xb319('0xc')](_0xb319('0x11'),auth[_0xb319('0xa')](),controller[_0xb319('0x12')]);router[_0xb319('0xc')]('/:id/hopper_black',auth[_0xb319('0xa')](),controller['getHopperBlacks']);router[_0xb319('0xc')](_0xb319('0x13'),auth[_0xb319('0xa')](),controller[_0xb319('0x14')]);router[_0xb319('0xc')](_0xb319('0x15'),auth['isAuthenticated'](),controller['getAgents']);router[_0xb319('0xc')](_0xb319('0x16'),auth[_0xb319('0xa')](),controller[_0xb319('0x17')]);router[_0xb319('0xc')](_0xb319('0x18'),auth[_0xb319('0xa')](),controller[_0xb319('0x19')]);router[_0xb319('0xc')](_0xb319('0x1a'),auth[_0xb319('0xa')](),controller[_0xb319('0x1b')]);router[_0xb319('0x1c')]('/',auth['isAuthenticated'](),controller[_0xb319('0x1d')]);router[_0xb319('0x1c')](_0xb319('0x1e'),auth['isAuthenticated'](),controller[_0xb319('0x1f')]);router['post'](_0xb319('0x13'),auth[_0xb319('0xa')](),controller[_0xb319('0x20')]);router['post'](_0xb319('0x15'),auth[_0xb319('0xa')](),controller['addAgents']);router['post'](_0xb319('0x18'),auth['isAuthenticated'](),controller[_0xb319('0x21')]);router[_0xb319('0x1c')](_0xb319('0x1a'),auth[_0xb319('0xa')](),controller['addBlackLists']);router[_0xb319('0x22')](_0xb319('0xd'),auth[_0xb319('0xa')](),controller[_0xb319('0x23')]);router['delete'](_0xb319('0xd'),auth[_0xb319('0xa')](),controller['destroy']);router[_0xb319('0x24')]('/:id/teams',auth[_0xb319('0xa')](),controller[_0xb319('0x25')]);router[_0xb319('0x24')]('/:id/users',auth[_0xb319('0xa')](),controller[_0xb319('0x26')]);router[_0xb319('0x24')](_0xb319('0x18'),auth[_0xb319('0xa')](),controller[_0xb319('0x27')]);router['delete'](_0xb319('0x1a'),auth['isAuthenticated'](),controller[_0xb319('0x28')]);module[_0xb319('0x29')]=router;
\ No newline at end of file
+var _0x8265=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueue.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getTeams','/:id/users','getAgents','/:id/members','getMembers','getLists','/:id/blacklists','getBlackLists','post','/:id/clone','clone','addTeams','addAgents','/:id/lists','addLists','addBlackLists','destroy','delete','/:id/teams','removeTeams','removeLists','removeBlackLists','exports'];(function(_0x3d1b3a,_0x4338f3){var _0x5d7f60=function(_0x25292a){while(--_0x25292a){_0x3d1b3a['push'](_0x3d1b3a['shift']());}};_0x5d7f60(++_0x4338f3);}(_0x8265,0x84));var _0x5826=function(_0x50f7ec,_0x309d42){_0x50f7ec=_0x50f7ec-0x0;var _0x3ac7d1=_0x8265[_0x50f7ec];return _0x3ac7d1;};'use strict';var multer=require('multer');var util=require(_0x5826('0x0'));var path=require(_0x5826('0x1'));var timeout=require(_0x5826('0x2'));var express=require(_0x5826('0x3'));var router=express[_0x5826('0x4')]();var fs_extra=require(_0x5826('0x5'));var auth=require(_0x5826('0x6'));var interaction=require(_0x5826('0x7'));var config=require('../../config/environment');var controller=require(_0x5826('0x8'));router[_0x5826('0x9')]('/',auth[_0x5826('0xa')](),controller[_0x5826('0xb')]);router[_0x5826('0x9')](_0x5826('0xc'),auth['isAuthenticated'](),controller[_0x5826('0xd')]);router[_0x5826('0x9')](_0x5826('0xe'),auth['isAuthenticated'](),controller[_0x5826('0xf')]);router[_0x5826('0x9')](_0x5826('0x10'),auth[_0x5826('0xa')](),controller[_0x5826('0x11')]);router[_0x5826('0x9')](_0x5826('0x12'),auth[_0x5826('0xa')](),controller[_0x5826('0x13')]);router[_0x5826('0x9')](_0x5826('0x14'),auth[_0x5826('0xa')](),controller['getHopperBlacks']);router[_0x5826('0x9')]('/:id/teams',auth['isAuthenticated'](),controller[_0x5826('0x15')]);router['get'](_0x5826('0x16'),auth[_0x5826('0xa')](),controller[_0x5826('0x17')]);router['get'](_0x5826('0x18'),auth[_0x5826('0xa')](),controller[_0x5826('0x19')]);router[_0x5826('0x9')]('/:id/lists',auth['isAuthenticated'](),controller[_0x5826('0x1a')]);router['get'](_0x5826('0x1b'),auth[_0x5826('0xa')](),controller[_0x5826('0x1c')]);router[_0x5826('0x1d')]('/',auth[_0x5826('0xa')](),controller['create']);router[_0x5826('0x1d')](_0x5826('0x1e'),auth[_0x5826('0xa')](),controller[_0x5826('0x1f')]);router[_0x5826('0x1d')]('/:id/teams',auth[_0x5826('0xa')](),controller[_0x5826('0x20')]);router['post'](_0x5826('0x16'),auth['isAuthenticated'](),controller[_0x5826('0x21')]);router[_0x5826('0x1d')](_0x5826('0x22'),auth[_0x5826('0xa')](),controller[_0x5826('0x23')]);router[_0x5826('0x1d')](_0x5826('0x1b'),auth['isAuthenticated'](),controller[_0x5826('0x24')]);router['put'](_0x5826('0xc'),auth[_0x5826('0xa')](),controller['update']);router['delete']('/:id',auth[_0x5826('0xa')](),controller[_0x5826('0x25')]);router[_0x5826('0x26')](_0x5826('0x27'),auth[_0x5826('0xa')](),controller[_0x5826('0x28')]);router[_0x5826('0x26')](_0x5826('0x16'),auth[_0x5826('0xa')](),controller['removeAgents']);router['delete'](_0x5826('0x22'),auth['isAuthenticated'](),controller[_0x5826('0x29')]);router[_0x5826('0x26')](_0x5826('0x1b'),auth[_0x5826('0xa')](),controller[_0x5826('0x2a')]);module[_0x5826('0x2b')]=router;
\ No newline at end of file
index 0c329a8..e67516a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5577=['Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','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)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','name','inbound','outbound','default','ringall','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','rrordered','setDataValue','strategy','getDataValue','dialMethod','booked','roundrobin','predictive','power','INTEGER','ENUM','yes','all','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','progressive','Dial\x20Method.','UNSIGNED'];(function(_0x34750b,_0x34aae5){var _0x244258=function(_0x503bf2){while(--_0x503bf2){_0x34750b['push'](_0x34750b['shift']());}};_0x244258(++_0x34aae5);}(_0x5577,0x1b4));var _0x7557=function(_0x2910f9,_0x5a565d){_0x2910f9=_0x2910f9-0x0;var _0x5a0d46=_0x5577[_0x2910f9];return _0x5a0d46;};'use strict';var Sequelize=require(_0x7557('0x0'));module['exports']={'name':{'type':Sequelize[_0x7557('0x1')],'allowNull':![],'unique':_0x7557('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x7557('0x3'),_0x7557('0x4')),'allowNull':![],'defaultValue':_0x7557('0x3')},'musiconhold':{'type':Sequelize[_0x7557('0x1')],'defaultValue':_0x7557('0x5')},'announce':{'type':Sequelize[_0x7557('0x1')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0x7557('0x6'),_0x7557('0x7'),_0x7557('0x8'),_0x7557('0x9'),_0x7557('0xa'),_0x7557('0xb'),_0x7557('0xc'),_0x7557('0xd')),'allowNull':![],'defaultValue':_0x7557('0x6'),'set':function(_0x24b592){this[_0x7557('0xe')](_0x7557('0xf'),_0x24b592?_0x24b592:_0x7557('0xa'));},'get':function(){var _0x2906c0=this[_0x7557('0x10')]('type');var _0x4d92d9=this[_0x7557('0x10')](_0x7557('0x11'));var _0x40efbd=this[_0x7557('0x10')](_0x7557('0xf'));if(_0x2906c0===_0x7557('0x3')){return _0x40efbd;}if(_0x4d92d9===_0x7557('0x12')&&_0x40efbd===_0x7557('0xa')||_0x4d92d9===_0x7557('0x12')&&_0x40efbd===_0x7557('0x13')){return _0x40efbd;}if(_0x4d92d9==='progressive'||_0x4d92d9===_0x7557('0x14')||_0x4d92d9===_0x7557('0x15')){return _0x40efbd;}return null;}},'servicelevel':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x7557('0x16')](0xb)},'timeout':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x7557('0x1')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x7557('0x17')]('yes','no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no',_0x7557('0x19')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x7557('0x16')](0xb)},'autopausebusy':{'type':Sequelize['ENUM'](_0x7557('0x18'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM'](_0x7557('0x18'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0x7557('0x18'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no'),'defaultValue':_0x7557('0x18')},'announce_holdtime':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x7557('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM'](_0x7557('0x18'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0x7557('0x17')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x7557('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x7557('0x1')]},'queue_youarenext':{'type':Sequelize[_0x7557('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x7557('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x7557('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x7557('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x7557('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x7557('0x1')]},'queue_quantity1':{'type':Sequelize[_0x7557('0x1')]},'queue_quantity2':{'type':Sequelize[_0x7557('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0x7557('0x1')]},'queue_less_than':{'type':Sequelize[_0x7557('0x1')]},'periodic_announce':{'type':Sequelize[_0x7557('0x1a')],'set':function(_0x52fffa){this[_0x7557('0xe')](_0x7557('0x1b'),_0x52fffa?_0x52fffa[_0x7557('0x1c')](','):[]);},'get':function(){return this[_0x7557('0x10')]('periodic_announce')?this[_0x7557('0x10')](_0x7557('0x1b'))[_0x7557('0x1d')](','):[];}},'joinempty':{'type':Sequelize[_0x7557('0x1')],'defaultValue':_0x7557('0x18'),'set':function(_0x2f3fd3){this[_0x7557('0xe')](_0x7557('0x1e'),_0x2f3fd3?_0x2f3fd3[_0x7557('0x1c')](','):undefined);},'get':function(){return this[_0x7557('0x10')](_0x7557('0x1e'))?this[_0x7557('0x10')](_0x7557('0x1e'))[_0x7557('0x1d')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x7557('0x1')],'defaultValue':'no','set':function(_0x2f903e){this[_0x7557('0xe')](_0x7557('0x1f'),_0x2f903e?_0x2f903e[_0x7557('0x1c')](','):undefined);},'get':function(){return this[_0x7557('0x10')](_0x7557('0x1f'))?this[_0x7557('0x10')]('leavewhenempty')[_0x7557('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x7557('0x17')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x7557('0x1')]},'description':{'type':Sequelize[_0x7557('0x1')]},'acw':{'type':Sequelize[_0x7557('0x20')],'defaultValue':0x0,'set':function(_0x52b29f){this[_0x7557('0xe')](_0x7557('0x21'),_0x52b29f);if(_0x52b29f){if(this[_0x7557('0x10')](_0x7557('0x22'))<0x2){this[_0x7557('0xe')](_0x7557('0x22'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x7557('0x20')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize['ENUM']('preview','progressive','power','predictive',_0x7557('0x12')),'defaultValue':_0x7557('0x23'),'comment':_0x7557('0x24')},'dialLimitChannel':{'type':Sequelize[_0x7557('0x16')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0x7557('0x16')](0x4)[_0x7557('0x25')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x7557('0x26')},'dialPowerLevel':{'type':Sequelize[_0x7557('0x27')](0x2)[_0x7557('0x25')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x28'),_0x7557('0x29')),'defaultValue':_0x7557('0x29'),'comment':_0x7557('0x2a')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x7557('0x27')](0x2)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x7557('0x2b')},'dialOriginateCallerIdName':{'type':Sequelize[_0x7557('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x2c')},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0x7557('0x2d'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0x7557('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x2e')},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0x7557('0x2f')},'dialCongestionMaxRetry':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x30')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x7557('0x16')](0x5)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x31')},'dialBusyRetryFrequency':{'type':Sequelize[_0x7557('0x16')](0x5)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7557('0x32')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x7557('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x7557('0x33')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7557('0x34')},'dialGlobalMaxRetry':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x7557('0x35')},'dialTimezone':{'type':Sequelize[_0x7557('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x7557('0x1')],'defaultValue':_0x7557('0x36')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x37'),_0x7557('0x38'),'onlyIfOpen'),'defaultValue':_0x7557('0x37')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x7557('0x16')](0x9)[_0x7557('0x25')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x7557('0x39')},'dialAMDGreeting':{'type':Sequelize[_0x7557('0x16')](0x9)[_0x7557('0x25')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x7557('0x16')](0x9)[_0x7557('0x25')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x7557('0x3a')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x7557('0x16')](0x9)[_0x7557('0x25')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x7557('0x3b')},'dialAMDMinWordLength':{'type':Sequelize[_0x7557('0x16')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x7557('0x3c')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x7557('0x16')](0x9)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x7557('0x3d')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x7557('0x16')](0x5)[_0x7557('0x25')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x7557('0x3e')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x7557('0x16')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x7557('0x3f')},'dialRecallMeTimeout':{'type':Sequelize[_0x7557('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x7557('0x40')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x7557('0x41')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x7557('0x42'),_0x7557('0x43')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0x7557('0x1')],'comment':_0x7557('0x2f')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x7557('0x20')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x7557('0x20')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x7557('0x16')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x7557('0x44')},'dialCutDigit':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x7557('0x45')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x46')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7557('0x47')},'dialDropMaxRetry':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x7557('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7557('0x48')},'dialMachineMaxRetry':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x49')},'dialMachineRetryFrequency':{'type':Sequelize[_0x7557('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x4a')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x7557('0x16')](0x5)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7557('0x4b')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7557('0x16')],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x7557('0x20')],'defaultValue':![],'comment':_0x7557('0x4c'),'set':function(_0x1c1a44){if(!_0x1c1a44)this[_0x7557('0xe')](_0x7557('0x4d'),null);this[_0x7557('0xe')](_0x7557('0x4e'),_0x1c1a44);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x7557('0x16')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x7557('0x25')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0x6e6f=['Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','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)','07:00-22:00,*,*,*','never','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#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)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','exports','STRING','ENUM','inbound','outbound','default','ringall','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','rrordered','setDataValue','getDataValue','type','strategy','booked','roundrobin','progressive','predictive','INTEGER','yes','all','once','TEXT','periodic_announce','split','joinempty','join','leavewhenempty','acw','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','power','Dial\x20Method.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate'];(function(_0x2d88da,_0x434ff6){var _0x47a85d=function(_0x5cf7ce){while(--_0x5cf7ce){_0x2d88da['push'](_0x2d88da['shift']());}};_0x47a85d(++_0x434ff6);}(_0x6e6f,0x76));var _0xf6e6=function(_0x35289d,_0x230ce7){_0x35289d=_0x35289d-0x0;var _0x2dec71=_0x6e6f[_0x35289d];return _0x2dec71;};'use strict';var Sequelize=require('sequelize');module[_0xf6e6('0x0')]={'name':{'type':Sequelize[_0xf6e6('0x1')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xf6e6('0x2')](_0xf6e6('0x3'),_0xf6e6('0x4')),'allowNull':![],'defaultValue':_0xf6e6('0x3')},'musiconhold':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':_0xf6e6('0x5')},'announce':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0xf6e6('0x6'),_0xf6e6('0x7'),_0xf6e6('0x8'),_0xf6e6('0x9'),_0xf6e6('0xa'),_0xf6e6('0xb'),_0xf6e6('0xc'),_0xf6e6('0xd')),'allowNull':![],'defaultValue':'ringall','set':function(_0x276c3e){this[_0xf6e6('0xe')]('strategy',_0x276c3e?_0x276c3e:_0xf6e6('0xa'));},'get':function(){var _0xe77faa=this[_0xf6e6('0xf')](_0xf6e6('0x10'));var _0x164993=this[_0xf6e6('0xf')]('dialMethod');var _0xfffcfc=this['getDataValue'](_0xf6e6('0x11'));if(_0xe77faa==='inbound'){return _0xfffcfc;}if(_0x164993===_0xf6e6('0x12')&&_0xfffcfc===_0xf6e6('0xa')||_0x164993===_0xf6e6('0x12')&&_0xfffcfc===_0xf6e6('0x13')){return _0xfffcfc;}if(_0x164993===_0xf6e6('0x14')||_0x164993===_0xf6e6('0x15')||_0x164993==='power'){return _0xfffcfc;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xf6e6('0x16')](0xb)},'timeout':{'type':Sequelize[_0xf6e6('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xf6e6('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xf6e6('0x1')]},'weight':{'type':Sequelize[_0xf6e6('0x16')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xf6e6('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xf6e6('0x2')](_0xf6e6('0x17'),'no'),'defaultValue':_0xf6e6('0x17')},'autopause':{'type':Sequelize[_0xf6e6('0x2')](_0xf6e6('0x17'),'no',_0xf6e6('0x18')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0xf6e6('0x2')](_0xf6e6('0x17'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xf6e6('0x2')](_0xf6e6('0x17'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xf6e6('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0xf6e6('0x17'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xf6e6('0x2')](_0xf6e6('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xf6e6('0x2')](_0xf6e6('0x17'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xf6e6('0x2')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xf6e6('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xf6e6('0x16')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xf6e6('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0xf6e6('0x17'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xf6e6('0x2')]('yes','no'),'defaultValue':_0xf6e6('0x17')},'announce_holdtime':{'type':Sequelize[_0xf6e6('0x2')](_0xf6e6('0x17'),'no',_0xf6e6('0x19')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM']('yes','no')},'announce_position_limit':{'type':Sequelize[_0xf6e6('0x16')](0xb)},'announce_round_seconds':{'type':Sequelize[_0xf6e6('0x2')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xf6e6('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xf6e6('0x1')]},'queue_quantity1':{'type':Sequelize[_0xf6e6('0x1')]},'queue_quantity2':{'type':Sequelize[_0xf6e6('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0xf6e6('0x1')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0xf6e6('0x1a')],'set':function(_0x298c22){this[_0xf6e6('0xe')](_0xf6e6('0x1b'),_0x298c22?_0x298c22['join'](','):[]);},'get':function(){return this[_0xf6e6('0xf')](_0xf6e6('0x1b'))?this[_0xf6e6('0xf')]('periodic_announce')[_0xf6e6('0x1c')](','):[];}},'joinempty':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':_0xf6e6('0x17'),'set':function(_0x4a8aae){this[_0xf6e6('0xe')](_0xf6e6('0x1d'),_0x4a8aae?_0x4a8aae[_0xf6e6('0x1e')](','):undefined);},'get':function(){return this['getDataValue'](_0xf6e6('0x1d'))?this['getDataValue'](_0xf6e6('0x1d'))[_0xf6e6('0x1c')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':'no','set':function(_0x524f9e){this[_0xf6e6('0xe')](_0xf6e6('0x1f'),_0x524f9e?_0x524f9e[_0xf6e6('0x1e')](','):undefined);},'get':function(){return this['getDataValue'](_0xf6e6('0x1f'))?this[_0xf6e6('0xf')](_0xf6e6('0x1f'))[_0xf6e6('0x1c')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xf6e6('0x2')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0xf6e6('0x17'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xf6e6('0x1')]},'description':{'type':Sequelize[_0xf6e6('0x1')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x1190d9){this[_0xf6e6('0xe')](_0xf6e6('0x20'),_0x1190d9);if(_0x1190d9){if(this[_0xf6e6('0xf')](_0xf6e6('0x21'))<0x2){this[_0xf6e6('0xe')](_0xf6e6('0x21'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xf6e6('0x22')],'defaultValue':0x0,'comment':_0xf6e6('0x23')},'dialMethod':{'type':Sequelize[_0xf6e6('0x2')]('preview',_0xf6e6('0x14'),_0xf6e6('0x24'),_0xf6e6('0x15'),'booked'),'defaultValue':_0xf6e6('0x14'),'comment':_0xf6e6('0x25')},'dialLimitChannel':{'type':Sequelize[_0xf6e6('0x16')](0x4)[_0xf6e6('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0xf6e6('0x16')](0x4)[_0xf6e6('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xf6e6('0x27')},'dialPowerLevel':{'type':Sequelize[_0xf6e6('0x28')](0x2)[_0xf6e6('0x26')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xf6e6('0x29')},'dialPredictiveOptimization':{'type':Sequelize[_0xf6e6('0x2')](_0xf6e6('0x2a'),_0xf6e6('0x2b')),'defaultValue':_0xf6e6('0x2b'),'comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xf6e6('0x28')](0x2)[_0xf6e6('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xf6e6('0x2c')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xf6e6('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0xf6e6('0x16')](0x3)[_0xf6e6('0x26')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf6e6('0x2d')},'dialQueueOptions':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':_0xf6e6('0x2e'),'comment':_0xf6e6('0x2f')},'dialQueueTimeout':{'type':Sequelize[_0xf6e6('0x16')](0x3)[_0xf6e6('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0xf6e6('0x1')],'comment':_0xf6e6('0x30')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf6e6('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf6e6('0x31')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xf6e6('0x16')](0x5)[_0xf6e6('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf6e6('0x32')},'dialBusyMaxRetry':{'type':Sequelize[_0xf6e6('0x16')](0x3)[_0xf6e6('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf6e6('0x33')},'dialBusyRetryFrequency':{'type':Sequelize[_0xf6e6('0x16')](0x5)[_0xf6e6('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf6e6('0x34')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf6e6('0x26')],'defaultValue':0x3,'comment':_0xf6e6('0x35')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xf6e6('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0xf6e6('0x16')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':_0xf6e6('0x36')},'dialPrefix':{'type':Sequelize[_0xf6e6('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xf6e6('0x2')]('always',_0xf6e6('0x37'),'onlyIfOpen'),'defaultValue':_0xf6e6('0x38')},'dialAMDActive':{'type':Sequelize[_0xf6e6('0x22')],'defaultValue':0x0,'comment':_0xf6e6('0x39')},'dialAMDInitialSilence':{'type':Sequelize[_0xf6e6('0x16')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xf6e6('0x3a')},'dialAMDGreeting':{'type':Sequelize[_0xf6e6('0x16')](0x9)[_0xf6e6('0x26')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xf6e6('0x3b')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xf6e6('0x16')](0x9)[_0xf6e6('0x26')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xf6e6('0x3c')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0xf6e6('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xf6e6('0x16')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xf6e6('0x3d')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xf6e6('0x16')](0x9)[_0xf6e6('0x26')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xf6e6('0x3e')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xf6e6('0x16')](0x9)[_0xf6e6('0x26')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xf6e6('0x3f')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xf6e6('0x16')](0x5)[_0xf6e6('0x26')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xf6e6('0x40')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xf6e6('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf6e6('0x41')},'dialRecallMeTimeout':{'type':Sequelize[_0xf6e6('0x16')](0x5)[_0xf6e6('0x26')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize[_0xf6e6('0x22')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0xf6e6('0x2')](_0xf6e6('0x42'),_0xf6e6('0x43')),'defaultValue':_0xf6e6('0x42')},'dialQueueProject2':{'type':Sequelize[_0xf6e6('0x1')],'comment':_0xf6e6('0x30')},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xf6e6('0x22')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xf6e6('0x16')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf6e6('0x44')},'dialCutDigit':{'type':Sequelize[_0xf6e6('0x16')](0x3)[_0xf6e6('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf6e6('0x45')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf6e6('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf6e6('0x46')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xf6e6('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf6e6('0x47')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf6e6('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf6e6('0x48')},'dialDropRetryFrequency':{'type':Sequelize[_0xf6e6('0x16')](0x5)[_0xf6e6('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0xf6e6('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf6e6('0x49')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xf6e6('0x16')](0x5)[_0xf6e6('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf6e6('0x4a')},'dialMachineMaxRetry':{'type':Sequelize[_0xf6e6('0x16')](0x3)[_0xf6e6('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf6e6('0x4b')},'dialMachineRetryFrequency':{'type':Sequelize[_0xf6e6('0x16')](0x5)[_0xf6e6('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf6e6('0x4c')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xf6e6('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf6e6('0x4d')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xf6e6('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf6e6('0x4e')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0xf6e6('0x4f')},'mandatoryDisposition':{'type':Sequelize[_0xf6e6('0x22')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x458a9f){if(!_0x458a9f)this[_0xf6e6('0xe')](_0xf6e6('0x50'),null);this[_0xf6e6('0xe')]('mandatoryDisposition',_0x458a9f);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xf6e6('0x26')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xf6e6('0x26')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index 4630444..1a49f61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99cb=['teams','Agents','online','interface','flatMap','penalty','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','isNil','format','SIP/%s','forEach','emit','removeTeams','ids','User','select','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','push','sequelize','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','removeAgents','UserVoiceQueueRt','userVoiceQueue:remove','addAgents','userVoiceQueue:save','isEmpty','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','insert','into','fromQuery','scheduledAt','ListId','phone','ContactId','CmListId','toString','NOW()','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','deletedAt\x20IS\x20NULL','removeLists','getBlackLists','addBlackLists','removeBlackLists','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/license/util','defaults','localhost','socket.io-emitter','./voiceQueue.socket','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','VoiceQueues','QueueCampaigns','outbound','filter','ignore','value','type','find','name','UserProfileResource','destroy','end','error','stack','send','index','map','VoiceQueue','rawAttributes','key','keys','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','includeAll','findAll','rows','show','params','include','options','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','inbound','getHoppers','findOne','order','VoiceQueueId','CmHopper','getHopperHistories','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x99cb,0x101));var _0xb99c=function(_0x42dcd8,_0x3ff789){_0x42dcd8=_0x42dcd8-0x0;var _0x1b7285=_0x99cb[_0x42dcd8];return _0x1b7285;};'use strict';var emlformat=require(_0xb99c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb99c('0x1'));var jsonpatch=require(_0xb99c('0x2'));var rp=require(_0xb99c('0x3'));var moment=require('moment');var BPromise=require(_0xb99c('0x4'));var Mustache=require(_0xb99c('0x5'));var util=require(_0xb99c('0x6'));var path=require(_0xb99c('0x7'));var sox=require('sox');var csv=require(_0xb99c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb99c('0x9'));var _=require(_0xb99c('0xa'));var squel=require(_0xb99c('0xb'));var crypto=require(_0xb99c('0xc'));var jsforce=require(_0xb99c('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb99c('0xe'));var Papa=require(_0xb99c('0xf'));var Redis=require(_0xb99c('0x10'));var authService=require(_0xb99c('0x11'));var qs=require(_0xb99c('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb99c('0x13'))(_0xb99c('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb99c('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xb99c('0x16')](config['redis'],{'host':_0xb99c('0x17'),'port':0x18eb});var socket=require(_0xb99c('0x18'))(new Redis(config['redis']));require(_0xb99c('0x19'))['register'](socket);function respondWithStatusCode(_0x1f52f6,_0x4d75c6){_0x4d75c6=_0x4d75c6||0xcc;return function(_0x5ae908){if(_0x5ae908){return _0x1f52f6[_0xb99c('0x1a')](_0x4d75c6);}return _0x1f52f6[_0xb99c('0x1b')](_0x4d75c6)['end']();};}function respondWithResult(_0xd81234,_0x5e0d76){_0x5e0d76=_0x5e0d76||0xc8;return function(_0x434198){if(_0x434198){return _0xd81234[_0xb99c('0x1b')](_0x5e0d76)[_0xb99c('0x1c')](_0x434198);}};}function respondWithFilteredResult(_0x17f616,_0x5f3555){return function(_0x5715e5){if(_0x5715e5){var _0x30cbf9=typeof _0x5f3555[_0xb99c('0x1d')]==='undefined'&&typeof _0x5f3555[_0xb99c('0x1e')]===_0xb99c('0x1f');var _0x548ab2=_0x5715e5[_0xb99c('0x20')];var _0x5c99a2=_0x30cbf9?0x0:_0x5f3555['offset'];var _0x3077b2=_0x30cbf9?_0x5715e5['count']:_0x5f3555[_0xb99c('0x1d')]+_0x5f3555['limit'];var _0x4a999f;if(_0x3077b2>=_0x548ab2){_0x3077b2=_0x548ab2;_0x4a999f=0xc8;}else{_0x4a999f=0xce;}_0x17f616[_0xb99c('0x1b')](_0x4a999f);return _0x17f616[_0xb99c('0x21')](_0xb99c('0x22'),_0x5c99a2+'-'+_0x3077b2+'/'+_0x548ab2)[_0xb99c('0x1c')](_0x5715e5);}return null;};}function patchUpdates(_0x2a6c11){return function(_0x3116e7){try{jsonpatch[_0xb99c('0x23')](_0x3116e7,_0x2a6c11,!![]);}catch(_0x103922){return BPromise[_0xb99c('0x24')](_0x103922);}return _0x3116e7[_0xb99c('0x25')]();};}function saveUpdates(_0x44faf3,_0x58235b){return function(_0x2b1048){if(_0x2b1048){return _0x2b1048[_0xb99c('0x26')](_0x44faf3)[_0xb99c('0x27')](function(_0x4cb644){return _0x4cb644;});}return null;};}function removeEntity(_0x2d1721,_0x445c49){return function(_0x2942a6){if(_0x2942a6){return _0x2942a6['destroy']()['then'](function(){var _0x17e70b=_0x2942a6['get']({'plain':!![]});var _0x3bf18a=[{'name':_0xb99c('0x28'),'value':'inbound','ignore':![]},{'name':_0xb99c('0x29'),'value':_0xb99c('0x2a'),'ignore':![]}];var _0x4439bf=_(_0x3bf18a)[_0xb99c('0x2b')](_0xb99c('0x2c'))['map']('value')[_0xb99c('0x2d')]();if(_['includes'](_0x4439bf,_0x17e70b[_0xb99c('0x2e')])){return;}var _0x1a24ea=_[_0xb99c('0x2f')](_0x3bf18a,['value',_0x17e70b['type']])[_0xb99c('0x30')];return db[_0xb99c('0x31')][_0xb99c('0x32')]({'where':{'type':_0x1a24ea,'resourceId':_0x17e70b['id']}})[_0xb99c('0x27')](function(){return _0x2942a6;});})[_0xb99c('0x27')](function(){_0x2d1721[_0xb99c('0x1b')](0xcc)[_0xb99c('0x33')]();});}};}function handleEntityNotFound(_0x576f4a,_0xddbbd4){return function(_0x54581b){if(!_0x54581b){_0x576f4a[_0xb99c('0x1a')](0x194);}return _0x54581b;};}function handleError(_0x4e0d18,_0x1d9e6d){_0x1d9e6d=_0x1d9e6d||0x1f4;return function(_0x1fd61d){logger[_0xb99c('0x34')](_0x1fd61d[_0xb99c('0x35')]);if(_0x1fd61d[_0xb99c('0x30')]){delete _0x1fd61d[_0xb99c('0x30')];}_0x4e0d18['status'](_0x1d9e6d)[_0xb99c('0x36')](_0x1fd61d);};}exports[_0xb99c('0x37')]=function(_0x2bf31d,_0x587c59){var _0x3ac4f1={},_0x3c3468={},_0x430937={'count':0x0,'rows':[]};var _0xfec574=_[_0xb99c('0x38')](db[_0xb99c('0x39')][_0xb99c('0x3a')],function(_0xc931e1){return{'name':_0xc931e1['fieldName'],'type':_0xc931e1['type'][_0xb99c('0x3b')]};});_0x3c3468['model']=_[_0xb99c('0x38')](_0xfec574,_0xb99c('0x30'));_0x3c3468['query']=_[_0xb99c('0x3c')](_0x2bf31d[_0xb99c('0x3d')]);_0x3c3468['filters']=_[_0xb99c('0x3e')](_0x3c3468[_0xb99c('0x3f')],_0x3c3468['query']);_0x3ac4f1[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x3c3468[_0xb99c('0x3f')],qs['fields'](_0x2bf31d['query'][_0xb99c('0x41')]));_0x3ac4f1['attributes']=_0x3ac4f1[_0xb99c('0x40')][_0xb99c('0x42')]?_0x3ac4f1[_0xb99c('0x40')]:_0x3c3468['model'];if(!_0x2bf31d[_0xb99c('0x3d')][_0xb99c('0x43')](_0xb99c('0x44'))){_0x3ac4f1['limit']=qs[_0xb99c('0x1e')](_0x2bf31d[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x3ac4f1[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x2bf31d['query'][_0xb99c('0x1d')]);}_0x3ac4f1['order']=qs[_0xb99c('0x45')](_0x2bf31d[_0xb99c('0x3d')]['sort']);_0x3ac4f1[_0xb99c('0x46')]=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x2bf31d[_0xb99c('0x3d')],_0x3c3468[_0xb99c('0x47')]),_0xfec574);if(_0x2bf31d[_0xb99c('0x3d')][_0xb99c('0x2b')]){_0x3ac4f1['where']=_[_0xb99c('0x49')](_0x3ac4f1[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0xfec574,function(_0x57bc1c){if(_0x57bc1c[_0xb99c('0x2e')]!=='VIRTUAL'){var _0x508d94={};_0x508d94[_0x57bc1c[_0xb99c('0x30')]]={'$like':'%'+_0x2bf31d[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x508d94;}})});}_0x3ac4f1=_[_0xb99c('0x49')]({},_0x3ac4f1,_0x2bf31d['options']);var _0x37696a={'where':_0x3ac4f1[_0xb99c('0x46')]};return db[_0xb99c('0x39')][_0xb99c('0x20')](_0x37696a)[_0xb99c('0x27')](function(_0x450098){_0x430937['count']=_0x450098;if(_0x2bf31d['query'][_0xb99c('0x4a')]){_0x3ac4f1['include']=[{'all':!![]}];}return db['VoiceQueue'][_0xb99c('0x4b')](_0x3ac4f1);})['then'](function(_0x5820b7){_0x430937[_0xb99c('0x4c')]=_0x5820b7;return _0x430937;})[_0xb99c('0x27')](respondWithFilteredResult(_0x587c59,_0x3ac4f1))['catch'](handleError(_0x587c59,null));};exports[_0xb99c('0x4d')]=function(_0x259979,_0x40ffeb){var _0x104f69={'raw':![],'where':{'id':_0x259979[_0xb99c('0x4e')]['id']}},_0x25652d={};_0x25652d['model']=_[_0xb99c('0x3c')](db[_0xb99c('0x39')][_0xb99c('0x3a')]);_0x25652d[_0xb99c('0x3d')]=_[_0xb99c('0x3c')](_0x259979[_0xb99c('0x3d')]);_0x25652d[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x25652d['model'],_0x25652d[_0xb99c('0x3d')]);_0x104f69[_0xb99c('0x40')]=_['intersection'](_0x25652d[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0x259979[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x104f69[_0xb99c('0x40')]=_0x104f69['attributes'][_0xb99c('0x42')]?_0x104f69['attributes']:_0x25652d[_0xb99c('0x3f')];if(_0x259979['query'][_0xb99c('0x4a')]){_0x104f69[_0xb99c('0x4f')]=[{'all':!![]}];}_0x104f69=_[_0xb99c('0x49')]({},_0x104f69,_0x259979[_0xb99c('0x50')]);return db[_0xb99c('0x39')][_0xb99c('0x2f')](_0x104f69)[_0xb99c('0x27')](handleEntityNotFound(_0x40ffeb,null))['then'](respondWithResult(_0x40ffeb,null))[_0xb99c('0x51')](handleError(_0x40ffeb,null));};exports[_0xb99c('0x52')]=function(_0x29777d,_0x1ff7b7){return db['VoiceQueue'][_0xb99c('0x52')](_0x29777d[_0xb99c('0x53')],{})['then'](function(_0x30a26a){var _0x1d9a97=_0x29777d[_0xb99c('0x54')][_0xb99c('0x55')]({'plain':!![]});if(!_0x1d9a97)throw new Error(_0xb99c('0x56'));if(_0x1d9a97[_0xb99c('0x57')]===_0xb99c('0x54')){var _0x1d124b=_0x30a26a[_0xb99c('0x55')]({'plain':!![]});var _0x7ac940=[{'name':'VoiceQueues','value':'inbound'},{'name':_0xb99c('0x29'),'value':_0xb99c('0x2a')}];var _0xe8b099=_['find'](_0x7ac940,['value',_0x1d124b['type']])['name'];return db[_0xb99c('0x58')][_0xb99c('0x2f')]({'where':{'name':_0xe8b099,'userProfileId':_0x1d9a97[_0xb99c('0x59')]},'raw':!![]})[_0xb99c('0x27')](function(_0x2f4183){if(_0x2f4183&&_0x2f4183[_0xb99c('0x5a')]===0x0){return db[_0xb99c('0x31')]['create']({'name':_0x1d124b[_0xb99c('0x30')],'resourceId':_0x1d124b['id'],'type':_0x2f4183[_0xb99c('0x30')],'sectionId':_0x2f4183['id']},{})[_0xb99c('0x27')](function(){return _0x30a26a;});}else{return _0x30a26a;}})[_0xb99c('0x51')](function(_0x46e7e5){logger[_0xb99c('0x34')](_0xb99c('0x5b'),_0x46e7e5);throw _0x46e7e5;});}return _0x30a26a;})[_0xb99c('0x27')](respondWithResult(_0x1ff7b7,0xc9))[_0xb99c('0x51')](handleError(_0x1ff7b7,null));};exports[_0xb99c('0x5c')]=function(_0x1bd25c,_0x24426d){var _0x25c88d={'where':{'id':_0x1bd25c[_0xb99c('0x4e')]['id']}},_0x4ace63={};_0x4ace63[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x39')][_0xb99c('0x3a')]);_0x25c88d[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x4ace63[_0xb99c('0x3f')],qs['fields'](_0x1bd25c[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x25c88d[_0xb99c('0x40')]=_0x25c88d[_0xb99c('0x40')][_0xb99c('0x42')]?_0x25c88d[_0xb99c('0x40')]:_0x4ace63[_0xb99c('0x3f')];if(_0x1bd25c[_0xb99c('0x3d')][_0xb99c('0x4a')]){_0x25c88d[_0xb99c('0x4f')]=[{'all':!![]}];}_0x25c88d=_[_0xb99c('0x49')]({},_0x25c88d,_0x1bd25c[_0xb99c('0x50')]);return db[_0xb99c('0x39')]['find'](_0x25c88d)[_0xb99c('0x27')](handleEntityNotFound(_0x24426d,null))[_0xb99c('0x27')](function(_0x4f8ba1){if(_0x4f8ba1){var _0x1cedc0=_0x4f8ba1[_0xb99c('0x55')]({'plain':!![]});_0x1cedc0=qs[_0xb99c('0x5d')](_0x1cedc0,['id',_0xb99c('0x5e'),_0xb99c('0x5f')]);_0x1bd25c['body']=_[_0xb99c('0x5d')](_0x1bd25c[_0xb99c('0x53')],['id','createdAt','updatedAt']);return db[_0xb99c('0x39')][_0xb99c('0x52')](_['merge'](_0x1cedc0,_0x1bd25c[_0xb99c('0x53')]),{'include':_0x1bd25c[_0xb99c('0x3d')]['includeAll']?[{'all':!![]}]:undefined})[_0xb99c('0x27')](function(_0x3edcdb){var _0x5be650=_0x1bd25c[_0xb99c('0x54')][_0xb99c('0x55')]({'plain':!![]});if(!_0x5be650)throw new Error(_0xb99c('0x56'));if(_0x5be650[_0xb99c('0x57')]===_0xb99c('0x54')){var _0x43cd11=_0x3edcdb[_0xb99c('0x55')]({'plain':!![]});var _0x4db725=[{'name':_0xb99c('0x28'),'value':_0xb99c('0x60')},{'name':'QueueCampaigns','value':_0xb99c('0x2a')}];var _0xa1849e=_[_0xb99c('0x2f')](_0x4db725,[_0xb99c('0x2d'),_0x43cd11[_0xb99c('0x2e')]])['name'];return db['UserProfileSection'][_0xb99c('0x2f')]({'where':{'name':_0xa1849e,'userProfileId':_0x5be650[_0xb99c('0x59')]},'raw':!![]})['then'](function(_0xa7cda6){if(_0xa7cda6&&_0xa7cda6['autoAssociation']===0x0){return db[_0xb99c('0x31')][_0xb99c('0x52')]({'name':_0x43cd11['name'],'resourceId':_0x43cd11['id'],'type':_0xa7cda6[_0xb99c('0x30')],'sectionId':_0xa7cda6['id']},{})['then'](function(){return _0x3edcdb;});}else{return _0x3edcdb;}})['catch'](function(_0x1eacd7){logger['error'](_0xb99c('0x5b'),_0x1eacd7);throw _0x1eacd7;});}return _0x3edcdb;});}})[_0xb99c('0x27')](respondWithResult(_0x24426d,0xc9))[_0xb99c('0x51')](handleError(_0x24426d,null));};exports[_0xb99c('0x26')]=function(_0x29f586,_0x3e20d6){if(_0x29f586[_0xb99c('0x53')]['id']){delete _0x29f586[_0xb99c('0x53')]['id'];}return db[_0xb99c('0x39')]['find']({'where':{'id':_0x29f586[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x3e20d6,null))[_0xb99c('0x27')](saveUpdates(_0x29f586['body'],null))['then'](respondWithResult(_0x3e20d6,null))['catch'](handleError(_0x3e20d6,null));};exports[_0xb99c('0x32')]=function(_0x4a1888,_0x17c3ac){return db[_0xb99c('0x39')][_0xb99c('0x2f')]({'where':{'id':_0x4a1888[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x17c3ac,null))['then'](removeEntity(_0x17c3ac,null))[_0xb99c('0x51')](handleError(_0x17c3ac,null));};exports[_0xb99c('0x61')]=function(_0x5e721d,_0x2a520e,_0x267dc4){var _0x59cedd={'raw':![],'where':{}};var _0x37b643={};var _0x3d32ba={'count':0x0,'rows':[]};return db[_0xb99c('0x39')][_0xb99c('0x62')]({'where':{'id':_0x5e721d[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x2a520e,null))[_0xb99c('0x27')](function(_0x2f871e){if(_0x2f871e){_0x37b643[_0xb99c('0x3f')]=_['keys'](db['CmHopper'][_0xb99c('0x3a')]);_0x37b643['query']=_['keys'](_0x5e721d['query']);_0x37b643[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x37b643[_0xb99c('0x3f')],_0x37b643[_0xb99c('0x3d')]);_0x59cedd[_0xb99c('0x40')]=_['intersection'](_0x37b643[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0x5e721d['query'][_0xb99c('0x41')]));_0x59cedd[_0xb99c('0x40')]=_0x59cedd[_0xb99c('0x40')][_0xb99c('0x42')]?_0x59cedd[_0xb99c('0x40')]:_0x37b643[_0xb99c('0x3f')];if(!_0x5e721d[_0xb99c('0x3d')]['hasOwnProperty']('nolimit')){_0x59cedd[_0xb99c('0x1e')]=qs[_0xb99c('0x1e')](_0x5e721d[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x59cedd[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x5e721d[_0xb99c('0x3d')][_0xb99c('0x1d')]);}_0x59cedd[_0xb99c('0x63')]=qs['sort'](_0x5e721d['query'][_0xb99c('0x45')]);_0x59cedd['where']=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x5e721d[_0xb99c('0x3d')],_0x37b643[_0xb99c('0x47')]));_0x59cedd[_0xb99c('0x46')][_0xb99c('0x64')]=_0x2f871e['id'];if(_0x5e721d[_0xb99c('0x3d')][_0xb99c('0x2b')]){_0x59cedd['where']=_['merge'](_0x59cedd[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x59cedd[_0xb99c('0x40')],function(_0x17d595){var _0x32a006={};_0x32a006[_0x17d595]={'$like':'%'+_0x5e721d[_0xb99c('0x3d')]['filter']+'%'};return _0x32a006;})});}_0x59cedd=_[_0xb99c('0x49')]({},_0x59cedd,_0x5e721d[_0xb99c('0x50')]);return db[_0xb99c('0x65')]['count']({'where':_0x59cedd[_0xb99c('0x46')]})[_0xb99c('0x27')](function(_0x586485){_0x3d32ba[_0xb99c('0x20')]=_0x586485;if(_0x5e721d[_0xb99c('0x3d')][_0xb99c('0x4a')]){_0x59cedd['include']=[{'all':!![]}];}return db[_0xb99c('0x65')][_0xb99c('0x4b')](_0x59cedd);})[_0xb99c('0x27')](function(_0x1ec15a){_0x3d32ba['rows']=_0x1ec15a;return _0x3d32ba;});}})[_0xb99c('0x27')](respondWithFilteredResult(_0x2a520e,_0x59cedd))[_0xb99c('0x51')](handleError(_0x2a520e,null));};exports[_0xb99c('0x66')]=function(_0x4a70ba,_0x59916d,_0x4f1be9){var _0x2aa99e={'raw':!![],'where':{}};var _0x48a351={};var _0x5df589={'count':0x0,'rows':[]};return db[_0xb99c('0x39')]['findOne']({'where':{'id':_0x4a70ba[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x59916d,null))[_0xb99c('0x27')](function(_0x2eea6f){if(_0x2eea6f){_0x48a351[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db['CmHopperHistory'][_0xb99c('0x3a')]);_0x48a351['query']=_[_0xb99c('0x3c')](_0x4a70ba[_0xb99c('0x3d')]);_0x48a351[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x48a351[_0xb99c('0x3f')],_0x48a351[_0xb99c('0x3d')]);_0x2aa99e[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x48a351[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0x4a70ba['query'][_0xb99c('0x41')]));_0x2aa99e[_0xb99c('0x40')]=_0x2aa99e['attributes'][_0xb99c('0x42')]?_0x2aa99e[_0xb99c('0x40')]:_0x48a351[_0xb99c('0x3f')];if(!_0x4a70ba[_0xb99c('0x3d')][_0xb99c('0x43')](_0xb99c('0x44'))){_0x2aa99e[_0xb99c('0x1e')]=qs[_0xb99c('0x1e')](_0x4a70ba[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x2aa99e[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x4a70ba['query'][_0xb99c('0x1d')]);}_0x2aa99e['order']=qs[_0xb99c('0x45')](_0x4a70ba[_0xb99c('0x3d')][_0xb99c('0x45')]);_0x2aa99e[_0xb99c('0x46')]=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x4a70ba['query'],_0x48a351[_0xb99c('0x47')]));_0x2aa99e[_0xb99c('0x46')][_0xb99c('0x64')]=_0x2eea6f['id'];if(_0x4a70ba[_0xb99c('0x3d')]['filter']){_0x2aa99e[_0xb99c('0x46')]=_[_0xb99c('0x49')](_0x2aa99e[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x2aa99e[_0xb99c('0x40')],function(_0x3a9344){var _0x2f8673={};_0x2f8673[_0x3a9344]={'$like':'%'+_0x4a70ba[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x2f8673;})});}_0x2aa99e=_[_0xb99c('0x49')]({},_0x2aa99e,_0x4a70ba[_0xb99c('0x50')]);return db['CmHopperHistory'][_0xb99c('0x20')]({'where':_0x2aa99e['where']})[_0xb99c('0x27')](function(_0x4b9495){_0x5df589[_0xb99c('0x20')]=_0x4b9495;if(_0x4a70ba[_0xb99c('0x3d')][_0xb99c('0x4a')]){_0x2aa99e[_0xb99c('0x4f')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xb99c('0x4b')](_0x2aa99e);})[_0xb99c('0x27')](function(_0x599920){_0x5df589[_0xb99c('0x4c')]=_0x599920;return _0x5df589;});}})[_0xb99c('0x27')](respondWithFilteredResult(_0x59916d,_0x2aa99e))[_0xb99c('0x51')](handleError(_0x59916d,null));};exports['getHopperFinals']=function(_0x467944,_0x4c9ca2,_0x13f86e){var _0x2f76b6={'raw':!![],'where':{}};var _0x29acf5={};var _0x55db78={'count':0x0,'rows':[]};return db[_0xb99c('0x39')][_0xb99c('0x62')]({'where':{'id':_0x467944[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x4c9ca2,null))[_0xb99c('0x27')](function(_0x3d5576){if(_0x3d5576){_0x29acf5[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x67')][_0xb99c('0x3a')]);_0x29acf5['query']=_[_0xb99c('0x3c')](_0x467944[_0xb99c('0x3d')]);_0x29acf5[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x29acf5[_0xb99c('0x3f')],_0x29acf5[_0xb99c('0x3d')]);_0x2f76b6[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x29acf5[_0xb99c('0x3f')],qs['fields'](_0x467944[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x2f76b6['attributes']=_0x2f76b6[_0xb99c('0x40')][_0xb99c('0x42')]?_0x2f76b6[_0xb99c('0x40')]:_0x29acf5[_0xb99c('0x3f')];if(!_0x467944[_0xb99c('0x3d')]['hasOwnProperty']('nolimit')){_0x2f76b6['limit']=qs[_0xb99c('0x1e')](_0x467944[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x2f76b6[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x467944[_0xb99c('0x3d')][_0xb99c('0x1d')]);}_0x2f76b6[_0xb99c('0x63')]=qs[_0xb99c('0x45')](_0x467944[_0xb99c('0x3d')][_0xb99c('0x45')]);_0x2f76b6[_0xb99c('0x46')]=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x467944['query'],_0x29acf5[_0xb99c('0x47')]));_0x2f76b6[_0xb99c('0x46')]['VoiceQueueId']=_0x3d5576['id'];if(_0x467944[_0xb99c('0x3d')][_0xb99c('0x2b')]){_0x2f76b6['where']=_[_0xb99c('0x49')](_0x2f76b6[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x2f76b6['attributes'],function(_0x22da99){var _0x3660aa={};_0x3660aa[_0x22da99]={'$like':'%'+_0x467944[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x3660aa;})});}_0x2f76b6=_[_0xb99c('0x49')]({},_0x2f76b6,_0x467944[_0xb99c('0x50')]);return db[_0xb99c('0x67')][_0xb99c('0x20')]({'where':_0x2f76b6[_0xb99c('0x46')]})[_0xb99c('0x27')](function(_0x1a9ab2){_0x55db78[_0xb99c('0x20')]=_0x1a9ab2;if(_0x467944[_0xb99c('0x3d')][_0xb99c('0x4a')]){_0x2f76b6['include']=[{'all':!![]}];}return db[_0xb99c('0x67')][_0xb99c('0x4b')](_0x2f76b6);})['then'](function(_0x3d7f63){_0x55db78['rows']=_0x3d7f63;return _0x55db78;});}})[_0xb99c('0x27')](respondWithFilteredResult(_0x4c9ca2,_0x2f76b6))[_0xb99c('0x51')](handleError(_0x4c9ca2,null));};exports[_0xb99c('0x68')]=function(_0xe2c801,_0x230f69,_0x5ac887){var _0x2b333f={'raw':!![],'where':{}};var _0x4c3c97={};var _0x70ee39={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xb99c('0x62')]({'where':{'id':_0xe2c801[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x230f69,null))[_0xb99c('0x27')](function(_0x239a27){if(_0x239a27){_0x4c3c97[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x69')][_0xb99c('0x3a')]);_0x4c3c97[_0xb99c('0x3d')]=_['keys'](_0xe2c801[_0xb99c('0x3d')]);_0x4c3c97[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x4c3c97['model'],_0x4c3c97['query']);_0x2b333f['attributes']=_[_0xb99c('0x3e')](_0x4c3c97[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0xe2c801[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x2b333f[_0xb99c('0x40')]=_0x2b333f['attributes'][_0xb99c('0x42')]?_0x2b333f[_0xb99c('0x40')]:_0x4c3c97[_0xb99c('0x3f')];if(!_0xe2c801[_0xb99c('0x3d')][_0xb99c('0x43')](_0xb99c('0x44'))){_0x2b333f['limit']=qs[_0xb99c('0x1e')](_0xe2c801[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x2b333f[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0xe2c801[_0xb99c('0x3d')][_0xb99c('0x1d')]);}_0x2b333f['order']=qs[_0xb99c('0x45')](_0xe2c801['query']['sort']);_0x2b333f['where']=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0xe2c801[_0xb99c('0x3d')],_0x4c3c97[_0xb99c('0x47')]));_0x2b333f[_0xb99c('0x46')][_0xb99c('0x64')]=_0x239a27['id'];if(_0xe2c801[_0xb99c('0x3d')][_0xb99c('0x2b')]){_0x2b333f['where']=_[_0xb99c('0x49')](_0x2b333f[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x2b333f['attributes'],function(_0x5c9dab){var _0x2feadb={};_0x2feadb[_0x5c9dab]={'$like':'%'+_0xe2c801['query'][_0xb99c('0x2b')]+'%'};return _0x2feadb;})});}_0x2b333f=_[_0xb99c('0x49')]({},_0x2b333f,_0xe2c801[_0xb99c('0x50')]);return db[_0xb99c('0x69')]['count']({'where':_0x2b333f[_0xb99c('0x46')]})[_0xb99c('0x27')](function(_0x2bb545){_0x70ee39[_0xb99c('0x20')]=_0x2bb545;if(_0xe2c801[_0xb99c('0x3d')][_0xb99c('0x4a')]){_0x2b333f['include']=[{'all':!![]}];}return db[_0xb99c('0x69')][_0xb99c('0x4b')](_0x2b333f);})[_0xb99c('0x27')](function(_0x58d0bc){_0x70ee39[_0xb99c('0x4c')]=_0x58d0bc;return _0x70ee39;});}})[_0xb99c('0x27')](respondWithFilteredResult(_0x230f69,_0x2b333f))[_0xb99c('0x51')](handleError(_0x230f69,null));};exports[_0xb99c('0x6a')]=function(_0x3ac844,_0x32ca0a,_0x19bfcd){var _0x248dbc={};var _0x143e4c={};var _0x250cff;var _0x56e295;return db[_0xb99c('0x39')][_0xb99c('0x62')]({'where':{'id':_0x3ac844[_0xb99c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x32ca0a,null))['then'](function(_0x358e7b){if(_0x358e7b){_0x250cff=_0x358e7b;_0x143e4c[_0xb99c('0x3f')]=_['keys'](db[_0xb99c('0x6b')][_0xb99c('0x3a')]);_0x143e4c[_0xb99c('0x3d')]=_['keys'](_0x3ac844[_0xb99c('0x3d')]);_0x143e4c[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x143e4c[_0xb99c('0x3f')],_0x143e4c[_0xb99c('0x3d')]);_0x248dbc[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x143e4c[_0xb99c('0x3f')],qs['fields'](_0x3ac844['query'][_0xb99c('0x41')]));_0x248dbc[_0xb99c('0x40')]=_0x248dbc[_0xb99c('0x40')][_0xb99c('0x42')]?_0x248dbc['attributes']:_0x143e4c['model'];_0x248dbc[_0xb99c('0x63')]=qs[_0xb99c('0x45')](_0x3ac844['query'][_0xb99c('0x45')]);_0x248dbc['where']=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x3ac844[_0xb99c('0x3d')],_0x143e4c[_0xb99c('0x47')]));if(_0x3ac844[_0xb99c('0x3d')]['filter']){_0x248dbc[_0xb99c('0x46')]=_['merge'](_0x248dbc[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x248dbc[_0xb99c('0x40')],function(_0x1c8c0a){var _0x8f3732={};_0x8f3732[_0x1c8c0a]={'$like':'%'+_0x3ac844[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x8f3732;})});}_0x248dbc=_[_0xb99c('0x49')]({},_0x248dbc,_0x3ac844[_0xb99c('0x50')]);return _0x250cff[_0xb99c('0x6a')](_0x248dbc);}})['then'](function(_0x3f49d2){if(_0x3f49d2){_0x56e295=_0x3f49d2['length'];if(!_0x3ac844['query'][_0xb99c('0x43')](_0xb99c('0x44'))){_0x248dbc[_0xb99c('0x1e')]=qs[_0xb99c('0x1e')](_0x3ac844[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x248dbc[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x3ac844[_0xb99c('0x3d')][_0xb99c('0x1d')]);}return _0x250cff['getTeams'](_0x248dbc);}})[_0xb99c('0x27')](function(_0x2370c2){if(_0x2370c2){return _0x2370c2?{'count':_0x56e295,'rows':_0x2370c2}:null;}})['then'](respondWithResult(_0x32ca0a,null))['catch'](handleError(_0x32ca0a,null));};exports[_0xb99c('0x6c')]=function(_0x2d3300,_0x485578,_0x303478){var _0x31a2a4=_0x2d3300['body'][_0xb99c('0x6d')];var _0xef4143=_['map'](_0x31a2a4,'id');return db[_0xb99c('0x6b')][_0xb99c('0x4b')]({'where':{'id':_0xef4143},'attributes':['id'],'include':[{'model':db['User'],'as':_0xb99c('0x6e'),'attributes':['id',_0xb99c('0x30'),_0xb99c('0x6f'),'voicePause',_0xb99c('0x70')],'raw':!![]}]})[_0xb99c('0x27')](function(_0x2108ab){if(_0x2108ab){var _0x3088e9=_[_0xb99c('0x71')](_0x2108ab,function(_0x56472d){var _0x441b72=_0x56472d[_0xb99c('0x55')]({'plain':!![]});_0x441b72[_0xb99c('0x6e')]['forEach'](function(_0x2aabc6){_0x2aabc6['penalty']=_['find'](_0x31a2a4,{'id':_0x441b72['id']})[_0xb99c('0x72')];});return _0x441b72['Agents'];});return db[_0xb99c('0x39')][_0xb99c('0x2f')]({'where':{'id':_0x2d3300[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](function(_0x33edaa){return db['sequelize'][_0xb99c('0x73')](function(_0x583128){return _0x33edaa[_0xb99c('0x6c')](_0xef4143,{'transaction':_0x583128})[_0xb99c('0x27')](function(){return BPromise[_0xb99c('0x74')](_0x31a2a4,function(_0x135bd1){return db[_0xb99c('0x75')][_0xb99c('0x76')]({'TeamId':_0x135bd1['id'],'VoiceQueueId':_0x2d3300[_0xb99c('0x4e')]['id'],'penalty':_0x135bd1[_0xb99c('0x72')]},{'transaction':_0x583128});});})['then'](function(){return BPromise['each'](_0x3088e9,function(_0x25f5ef){return db[_0xb99c('0x77')]['findOrCreate']({'where':{'UserId':_0x25f5ef['id'],'VoiceQueueId':_0x2d3300[_0xb99c('0x4e')]['id']},'defaults':{'penalty':_0x25f5ef[_0xb99c('0x72')]},'transaction':_0x583128});});})[_0xb99c('0x27')](function(){return BPromise[_0xb99c('0x74')](_['filter'](_0x3088e9,{'online':!![]}),function(_0x20e5aa){return db['UserVoiceQueueRt'][_0xb99c('0x76')]({'membername':_0x20e5aa[_0xb99c('0x30')],'UserId':_0x20e5aa['id'],'queue_name':_0x33edaa[_0xb99c('0x30')],'VoiceQueueId':_0x33edaa['id'],'interface':_[_0xb99c('0x78')](_0x20e5aa[_0xb99c('0x70')])?util[_0xb99c('0x79')](_0xb99c('0x7a'),_0x20e5aa[_0xb99c('0x30')]):_0x20e5aa[_0xb99c('0x70')],'paused':_0x20e5aa['voicePause']||![],'penalty':_0x20e5aa[_0xb99c('0x72')]},{'transaction':_0x583128});});})['then'](function(){_0x3088e9[_0xb99c('0x7b')](function(_0x2ee168){socket[_0xb99c('0x7c')]('userVoiceQueue:save',{'UserId':_0x2ee168['id'],'VoiceQueueId':_0x33edaa['id']});});});});});}})[_0xb99c('0x27')](respondWithStatusCode(_0x485578,null))[_0xb99c('0x51')](handleError(_0x485578,null));};exports[_0xb99c('0x7d')]=function(_0x2ead2b,_0x1c1d4f,_0x3e353d){return db[_0xb99c('0x6b')][_0xb99c('0x4b')]({'where':{'id':_0x2ead2b[_0xb99c('0x3d')][_0xb99c('0x7e')]},'attributes':['id'],'include':[{'model':db[_0xb99c('0x7f')],'as':_0xb99c('0x6e'),'attributes':['id'],'raw':!![]}]})[_0xb99c('0x27')](handleEntityNotFound(_0x1c1d4f,null))[_0xb99c('0x27')](function(_0x2940ee){var _0x3362ba=_[_0xb99c('0x38')](_0x2940ee,'id');var _0x541fd4=[];var _0x10b0bd=[];var _0x3d8495=squel[_0xb99c('0x80')]();_0x3d8495[_0xb99c('0x81')](_0xb99c('0x82'))[_0xb99c('0x83')](_0xb99c('0x84'),'tq')[_0xb99c('0x85')](_0xb99c('0x86'),'ut',_0xb99c('0x87'))[_0xb99c('0x46')](_0xb99c('0x88'),_0x2ead2b[_0xb99c('0x4e')]['id']);for(var _0x398462=0x0;_0x398462<_0x2940ee[_0xb99c('0x42')];_0x398462+=0x1){let _0xdfeae=_0x2940ee[_0x398462];for(var _0x3b7fbf=0x0;_0x3b7fbf<_0xdfeae[_0xb99c('0x6e')]['length'];_0x3b7fbf+=0x1){let _0x55c88a=_0xdfeae[_0xb99c('0x6e')][_0x3b7fbf];var _0xe6d584=_0x3d8495[_0xb99c('0x5c')]();_0xe6d584['where']('ut.UserId\x20=\x20?',_0x55c88a['id']);_0x10b0bd[_0xb99c('0x89')](db[_0xb99c('0x8a')][_0xb99c('0x3d')](_0xe6d584['toString'](),{'type':db[_0xb99c('0x8a')][_0xb99c('0x8b')][_0xb99c('0x8c')]})['then'](function(_0x1ba273){if(_0x1ba273[_0xb99c('0x42')]===0x1){return _0x55c88a['id'];}else{var _0x320106=_[_0xb99c('0x8d')](_[_0xb99c('0x38')](_0x1ba273,_0xb99c('0x8e')),function(_0x393680){return _[_0xb99c('0x8f')](_0x3362ba,_0x393680);});if(_0x320106){return _0x55c88a['id'];}}}));}}return BPromise[_0xb99c('0x90')](_0x10b0bd)['then'](function(_0x49d413){_0x541fd4=_(_0x541fd4)[_0xb99c('0x91')](_0x49d413)[_0xb99c('0x92')]()[_0xb99c('0x2d')]();return db[_0xb99c('0x39')][_0xb99c('0x2f')]({'where':{'id':_0x2ead2b[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](function(_0x521456){return db[_0xb99c('0x8a')][_0xb99c('0x73')](function(_0x3a786c){return _0x521456[_0xb99c('0x7d')](_0x2ead2b[_0xb99c('0x3d')]['ids'],{'transaction':_0x3a786c})[_0xb99c('0x27')](function(){if(!_['isEmpty'](_0x541fd4)){return _0x521456[_0xb99c('0x93')](_0x541fd4,{'transaction':_0x3a786c})[_0xb99c('0x27')](function(){return db[_0xb99c('0x94')][_0xb99c('0x32')]({'where':{'VoiceQueueId':_0x2ead2b['params']['id'],'UserId':_0x541fd4},'transaction':_0x3a786c});});}})['then'](function(){_0x541fd4[_0xb99c('0x7b')](function(_0x2ad6cb){socket[_0xb99c('0x7c')](_0xb99c('0x95'),{'UserId':_0x2ad6cb,'VoiceQueueId':_0x521456['id']});});});});});});})[_0xb99c('0x27')](respondWithStatusCode(_0x1c1d4f,null))[_0xb99c('0x51')](handleError(_0x1c1d4f,null));};exports[_0xb99c('0x96')]=function(_0x1b4026,_0x2117ac,_0x3645d1){var _0x35295e,_0x14227b;return db[_0xb99c('0x39')][_0xb99c('0x2f')]({'where':{'id':_0x1b4026[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x2117ac,null))[_0xb99c('0x27')](function(_0xfa19c8){if(_0xfa19c8){_0x14227b=_0xfa19c8;return _0xfa19c8[_0xb99c('0x96')](_0x1b4026['body'][_0xb99c('0x7e')],_['omit'](_0x1b4026[_0xb99c('0x53')],[_0xb99c('0x7e'),'id'])||{})['spread'](function(_0x14d6fd){for(var _0xe0c66e=0x0;_0xe0c66e<_0x1b4026[_0xb99c('0x53')]['ids'][_0xb99c('0x42')];_0xe0c66e+=0x1){socket[_0xb99c('0x7c')](_0xb99c('0x97'),{'UserId':Number(_0x1b4026['body'][_0xb99c('0x7e')][_0xe0c66e]),'VoiceQueueId':Number(_0x1b4026['params']['id'])});}return _0x14d6fd;});}})[_0xb99c('0x27')](function(_0x3c986c){_0x35295e=_0x3c986c||[];if(_0x14227b){return db[_0xb99c('0x7f')]['findAll']({'where':{'id':_0x1b4026[_0xb99c('0x53')][_0xb99c('0x7e')]},'attributes':['id',_0xb99c('0x30'),_0xb99c('0x6f'),'voicePause',_0xb99c('0x70')],'raw':!![]});}})[_0xb99c('0x27')](function(_0x2d3be6){if(!_[_0xb99c('0x98')](_0x2d3be6)){var _0x58f585=[];for(var _0x2c2738=0x0;_0x2c2738<_0x2d3be6[_0xb99c('0x42')];_0x2c2738++){if(_0x2d3be6[_0x2c2738]['online']){_0x58f585['push'](db[_0xb99c('0x94')]['upsert']({'membername':_0x2d3be6[_0x2c2738][_0xb99c('0x30')],'UserId':_0x2d3be6[_0x2c2738]['id'],'queue_name':_0x14227b['name'],'VoiceQueueId':_0x14227b['id'],'interface':_[_0xb99c('0x78')](_0x2d3be6[_0x2c2738]['interface'])?util[_0xb99c('0x79')](_0xb99c('0x7a'),_0x2d3be6[_0x2c2738][_0xb99c('0x30')]):_0x2d3be6[_0x2c2738][_0xb99c('0x70')],'paused':_0x2d3be6[_0x2c2738]['voicePause']||![],'penalty':_0x1b4026[_0xb99c('0x53')]['penalty']||0x0}));}}return BPromise['all'](_0x58f585);}})['then'](function(){return _0x35295e;})[_0xb99c('0x27')](respondWithResult(_0x2117ac,null))['catch'](handleError(_0x2117ac,null));};exports[_0xb99c('0x93')]=function(_0x5e2110,_0x335223,_0x1d104a){return db[_0xb99c('0x39')][_0xb99c('0x2f')]({'where':{'id':_0x5e2110[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x335223,null))[_0xb99c('0x27')](function(_0x237aa0){if(_0x237aa0){return _0x237aa0[_0xb99c('0x93')](_0x5e2110[_0xb99c('0x3d')]['ids'])[_0xb99c('0x27')](function(){if(_['isArray'](_0x5e2110[_0xb99c('0x3d')][_0xb99c('0x7e')])){for(var _0x472cc4=0x0;_0x472cc4<_0x5e2110[_0xb99c('0x3d')]['ids'][_0xb99c('0x42')];_0x472cc4+=0x1){socket[_0xb99c('0x7c')](_0xb99c('0x95'),{'UserId':Number(_0x5e2110[_0xb99c('0x3d')][_0xb99c('0x7e')][_0x472cc4]),'VoiceQueueId':Number(_0x5e2110[_0xb99c('0x4e')]['id'])});}}else{socket[_0xb99c('0x7c')](_0xb99c('0x95'),{'UserId':Number(_0x5e2110[_0xb99c('0x3d')][_0xb99c('0x7e')]),'VoiceQueueId':Number(_0x5e2110[_0xb99c('0x4e')]['id'])});}});}})[_0xb99c('0x27')](function(_0x4cc0f3){return db[_0xb99c('0x94')][_0xb99c('0x32')]({'where':{'VoiceQueueId':_0x5e2110['params']['id'],'UserId':_0x5e2110[_0xb99c('0x3d')][_0xb99c('0x7e')]}})['then'](function(){return _0x4cc0f3;});})[_0xb99c('0x27')](respondWithStatusCode(_0x335223,null))[_0xb99c('0x51')](handleError(_0x335223,null));};exports['getAgents']=function(_0x202582,_0x253bcf,_0x1d34ce){var _0x168a80={};var _0x23b14d={};var _0x179d07;var _0x309602;return db[_0xb99c('0x39')][_0xb99c('0x62')]({'where':{'id':_0x202582['params']['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x253bcf,null))['then'](function(_0xfc90d2){if(_0xfc90d2){_0x179d07=_0xfc90d2;_0x23b14d[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x7f')]['rawAttributes']);_0x23b14d[_0xb99c('0x3d')]=_['keys'](_0x202582['query']);_0x23b14d['filters']=_[_0xb99c('0x3e')](_0x23b14d[_0xb99c('0x3f')],_0x23b14d[_0xb99c('0x3d')]);_0x168a80[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x23b14d[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0x202582[_0xb99c('0x3d')]['fields']));_0x168a80['attributes']=_0x168a80['attributes']['length']?_0x168a80[_0xb99c('0x40')]:_0x23b14d['model'];_0x168a80[_0xb99c('0x63')]=qs['sort'](_0x202582[_0xb99c('0x3d')][_0xb99c('0x45')]);_0x168a80[_0xb99c('0x46')]=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x202582[_0xb99c('0x3d')],_0x23b14d[_0xb99c('0x47')]));if(_0x202582[_0xb99c('0x3d')][_0xb99c('0x2b')]){_0x168a80[_0xb99c('0x46')]=_[_0xb99c('0x49')](_0x168a80[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x168a80[_0xb99c('0x40')],function(_0x2fecfd){var _0x13f50a={};_0x13f50a[_0x2fecfd]={'$like':'%'+_0x202582[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x13f50a;})});}_0x168a80=_['merge']({},_0x168a80,_0x202582['options']);return _0x179d07[_0xb99c('0x99')](_0x168a80);}})[_0xb99c('0x27')](function(_0xd60dd4){if(_0xd60dd4){_0x309602=_0xd60dd4[_0xb99c('0x42')];if(!_0x202582[_0xb99c('0x3d')][_0xb99c('0x43')](_0xb99c('0x44'))){_0x168a80['limit']=qs[_0xb99c('0x1e')](_0x202582[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x168a80[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x202582[_0xb99c('0x3d')]['offset']);}return _0x179d07[_0xb99c('0x99')](_0x168a80);}})[_0xb99c('0x27')](function(_0x28fbce){if(_0x28fbce){return _0x28fbce?{'count':_0x309602,'rows':_0x28fbce}:null;}})[_0xb99c('0x27')](respondWithResult(_0x253bcf,null))[_0xb99c('0x51')](handleError(_0x253bcf,null));};exports[_0xb99c('0x9a')]=function(_0x1d129a,_0x1aa820,_0x27c2f2){var _0x120913={};var _0x13af1b={};var _0x508cfa;var _0x5cce6c;return db[_0xb99c('0x39')]['findOne']({'where':{'id':_0x1d129a[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x1aa820,null))[_0xb99c('0x27')](function(_0x55b114){if(_0x55b114){_0x508cfa=_0x55b114;_0x13af1b[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x94')][_0xb99c('0x3a')]);_0x13af1b[_0xb99c('0x3d')]=_[_0xb99c('0x3c')](_0x1d129a[_0xb99c('0x3d')]);_0x13af1b[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x13af1b['model'],_0x13af1b[_0xb99c('0x3d')]);_0x120913['attributes']=_[_0xb99c('0x3e')](_0x13af1b[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0x1d129a[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x120913[_0xb99c('0x40')]=_0x120913[_0xb99c('0x40')]['length']?_0x120913['attributes']:_0x13af1b['model'];_0x120913['order']=qs[_0xb99c('0x45')](_0x1d129a[_0xb99c('0x3d')][_0xb99c('0x45')]);_0x120913[_0xb99c('0x46')]=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x1d129a[_0xb99c('0x3d')],_0x13af1b[_0xb99c('0x47')]));if(_0x1d129a['query'][_0xb99c('0x2b')]){_0x120913[_0xb99c('0x46')]=_[_0xb99c('0x49')](_0x120913[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x120913[_0xb99c('0x40')],function(_0x4b6da7){var _0x4932fd={};_0x4932fd[_0x4b6da7]={'$like':'%'+_0x1d129a[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x4932fd;})});}_0x120913=_['merge']({},_0x120913,_0x1d129a[_0xb99c('0x50')]);return _0x508cfa[_0xb99c('0x9a')](_0x120913);}})['then'](function(_0x595331){if(_0x595331){_0x5cce6c=_0x595331[_0xb99c('0x42')];if(!_0x1d129a[_0xb99c('0x3d')][_0xb99c('0x43')]('nolimit')){_0x120913['limit']=qs[_0xb99c('0x1e')](_0x1d129a[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x120913[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x1d129a[_0xb99c('0x3d')]['offset']);}return _0x508cfa[_0xb99c('0x9a')](_0x120913);}})[_0xb99c('0x27')](function(_0x48c74f){return _0x48c74f?{'count':_0x5cce6c,'rows':_0x48c74f}:null;})[_0xb99c('0x27')](respondWithResult(_0x1aa820,null))[_0xb99c('0x51')](handleError(_0x1aa820,null));};exports[_0xb99c('0x9b')]=function(_0x328c63,_0x27280d,_0x10ec78){var _0x433046={};var _0x40dfc7={};var _0x2a0362;var _0x37430c;return db['VoiceQueue']['findOne']({'where':{'id':_0x328c63[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x27280d,null))['then'](function(_0x496743){if(_0x496743){_0x2a0362=_0x496743;_0x40dfc7[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x9c')][_0xb99c('0x3a')]);_0x40dfc7[_0xb99c('0x3d')]=_['keys'](_0x328c63[_0xb99c('0x3d')]);_0x40dfc7[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x40dfc7[_0xb99c('0x3f')],_0x40dfc7[_0xb99c('0x3d')]);_0x433046[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x40dfc7[_0xb99c('0x3f')],qs['fields'](_0x328c63[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x433046['attributes']=_0x433046[_0xb99c('0x40')][_0xb99c('0x42')]?_0x433046[_0xb99c('0x40')]:_0x40dfc7[_0xb99c('0x3f')];_0x433046[_0xb99c('0x63')]=qs[_0xb99c('0x45')](_0x328c63[_0xb99c('0x3d')][_0xb99c('0x45')]);_0x433046[_0xb99c('0x46')]=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x328c63[_0xb99c('0x3d')],_0x40dfc7['filters']));if(_0x328c63[_0xb99c('0x3d')]['filter']){_0x433046[_0xb99c('0x46')]=_[_0xb99c('0x49')](_0x433046['where'],{'$or':_[_0xb99c('0x38')](_0x433046[_0xb99c('0x40')],function(_0x130a92){var _0x4c11cb={};_0x4c11cb[_0x130a92]={'$like':'%'+_0x328c63[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x4c11cb;})});}_0x433046=_['merge']({},_0x433046,_0x328c63[_0xb99c('0x50')]);return _0x2a0362['getLists'](_0x433046);}})[_0xb99c('0x27')](function(_0x1a5381){if(_0x1a5381){_0x37430c=_0x1a5381[_0xb99c('0x42')];if(!_0x328c63[_0xb99c('0x3d')][_0xb99c('0x43')](_0xb99c('0x44'))){_0x433046[_0xb99c('0x1e')]=qs[_0xb99c('0x1e')](_0x328c63[_0xb99c('0x3d')]['limit']);_0x433046['offset']=qs[_0xb99c('0x1d')](_0x328c63[_0xb99c('0x3d')][_0xb99c('0x1d')]);}return _0x2a0362[_0xb99c('0x9b')](_0x433046);}})[_0xb99c('0x27')](function(_0x28810a){if(_0x28810a){return _0x28810a?{'count':_0x37430c,'rows':_0x28810a}:null;}})['then'](respondWithResult(_0x27280d,null))[_0xb99c('0x51')](handleError(_0x27280d,null));};exports[_0xb99c('0x9d')]=function(_0xa9b905,_0xf22189,_0x4ae7a6){var _0x161571,_0x4f6ef7;return db['VoiceQueue'][_0xb99c('0x2f')]({'where':{'id':_0xa9b905[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0xf22189,null))[_0xb99c('0x27')](function(_0x5be86d){if(_0x5be86d){_0x4f6ef7=_0x5be86d;return _0x5be86d[_0xb99c('0x9d')](_0xa9b905[_0xb99c('0x53')][_0xb99c('0x7e')],_[_0xb99c('0x5d')](_0xa9b905['body'],[_0xb99c('0x7e'),'id'])||{});}return null;})['spread'](function(_0x4918ea){var _0x27a538;_0x161571=_0x4918ea||[];var _0x11b799=[];if(_0x4918ea){for(var _0x1fea27=0x0;_0x1fea27<_0x4918ea[_0xb99c('0x42')];_0x1fea27+=0x1){var _0x5982d1=_0x4918ea[_0x1fea27][_0xb99c('0x55')]({'plain':!![]});_0x4f6ef7[_0xb99c('0x9e')]=_0xa9b905['body']['dialCheckDuplicateType']?_0xa9b905[_0xb99c('0x53')]['dialCheckDuplicateType']:_0x4f6ef7['dialCheckDuplicateType'];switch(_0x4f6ef7[_0xb99c('0x9e')]){case'always':_0x27a538=squel[_0xb99c('0x9f')]()[_0xb99c('0xa0')]('cm_hopper')[_0xb99c('0xa1')](['phone',_0xb99c('0xa2'),'ContactId',_0xb99c('0xa3'),_0xb99c('0x64'),_0xb99c('0x5e'),_0xb99c('0x5f')],squel[_0xb99c('0x80')]()[_0xb99c('0x81')]('phone',_0xb99c('0xa4'))[_0xb99c('0x81')]('NOW()',_0xb99c('0xa2'))[_0xb99c('0x81')]('id',_0xb99c('0xa5'))[_0xb99c('0x81')](_0x5982d1[_0xb99c('0xa6')][_0xb99c('0xa7')](),_0xb99c('0xa3'))['field'](_0xa9b905[_0xb99c('0x4e')]['id']['toString'](),_0xb99c('0x64'))[_0xb99c('0x81')]('NOW()',_0xb99c('0x5e'))['field'](_0xb99c('0xa8'),'updatedAt')[_0xb99c('0x83')](_0xb99c('0xa9'))[_0xb99c('0x46')]('deletedAt\x20IS\x20NULL')[_0xb99c('0x46')](_0xb99c('0xaa'),_0x5982d1[_0xb99c('0xa6')][_0xb99c('0xa7')]())[_0xb99c('0x46')](_0xb99c('0xab'))[_0xb99c('0x46')](_0xb99c('0xac'),squel[_0xb99c('0x80')]()[_0xb99c('0x81')](_0xb99c('0xad'))[_0xb99c('0x83')](_0xb99c('0xae'))['where']('VoiceQueueId\x20=\x20?',_0xa9b905[_0xb99c('0x4e')]['id']['toString']()))[_0xb99c('0x46')](_0xb99c('0xac'),squel[_0xb99c('0x80')]()[_0xb99c('0x81')](_0xb99c('0xaf'))[_0xb99c('0x83')](_0xb99c('0xb0'))[_0xb99c('0x46')](_0xb99c('0x88'),_0xa9b905[_0xb99c('0x4e')]['id'][_0xb99c('0xa7')]())))[_0xb99c('0xa7')]();break;case _0xb99c('0xb1'):_0x27a538=squel[_0xb99c('0x9f')]()[_0xb99c('0xa0')](_0xb99c('0xb0'))[_0xb99c('0xa1')]([_0xb99c('0xa4'),_0xb99c('0xa2'),_0xb99c('0xa5'),_0xb99c('0xa3'),'VoiceQueueId',_0xb99c('0x5e'),_0xb99c('0x5f')],squel[_0xb99c('0x80')]()[_0xb99c('0x81')](_0xb99c('0xa4'),_0xb99c('0xa4'))[_0xb99c('0x81')](_0xb99c('0xa8'),'scheduledAt')[_0xb99c('0x81')]('id',_0xb99c('0xa5'))[_0xb99c('0x81')](_0x5982d1['CmListId']['toString'](),'ListId')[_0xb99c('0x81')](_0xa9b905['params']['id'][_0xb99c('0xa7')](),_0xb99c('0x64'))[_0xb99c('0x81')](_0xb99c('0xa8'),_0xb99c('0x5e'))[_0xb99c('0x81')](_0xb99c('0xa8'),'updatedAt')['from'](_0xb99c('0xa9'))['where'](_0xb99c('0xb2'))[_0xb99c('0x46')](_0xb99c('0xaa'),_0x5982d1['CmListId'][_0xb99c('0xa7')]())['where'](_0xb99c('0xab'))['where'](_0xb99c('0xac'),squel[_0xb99c('0x80')]()[_0xb99c('0x81')](_0xb99c('0xaf'))[_0xb99c('0x83')](_0xb99c('0xb0'))[_0xb99c('0x46')](_0xb99c('0x88'),_0xa9b905['params']['id'][_0xb99c('0xa7')]())))[_0xb99c('0xa7')]();break;default:_0x27a538=squel[_0xb99c('0x9f')]()[_0xb99c('0xa0')](_0xb99c('0xb0'))[_0xb99c('0xa1')]([_0xb99c('0xa4'),_0xb99c('0xa2'),_0xb99c('0xa5'),_0xb99c('0xa3'),_0xb99c('0x64'),'createdAt',_0xb99c('0x5f')],squel['select']()[_0xb99c('0x81')](_0xb99c('0xa4'),_0xb99c('0xa4'))[_0xb99c('0x81')](_0xb99c('0xa8'),_0xb99c('0xa2'))[_0xb99c('0x81')]('id',_0xb99c('0xa5'))['field'](_0x5982d1[_0xb99c('0xa6')][_0xb99c('0xa7')](),_0xb99c('0xa3'))[_0xb99c('0x81')](_0xa9b905[_0xb99c('0x4e')]['id'][_0xb99c('0xa7')](),_0xb99c('0x64'))[_0xb99c('0x81')]('NOW()',_0xb99c('0x5e'))[_0xb99c('0x81')](_0xb99c('0xa8'),'updatedAt')[_0xb99c('0x83')](_0xb99c('0xa9'))[_0xb99c('0x46')]('deletedAt\x20IS\x20NULL')[_0xb99c('0x46')](_0xb99c('0xaa'),_0x5982d1[_0xb99c('0xa6')][_0xb99c('0xa7')]())[_0xb99c('0x46')](_0xb99c('0xab')))[_0xb99c('0xa7')]();}_0x11b799[_0xb99c('0x89')](db[_0xb99c('0x8a')]['query'](_0x27a538));}return BPromise[_0xb99c('0x90')](_0x11b799);}})['then'](function(){return _0x161571;})[_0xb99c('0x27')](respondWithResult(_0xf22189,null))[_0xb99c('0x51')](handleError(_0xf22189,null));};exports[_0xb99c('0xb3')]=function(_0x1a339b,_0x53e4d9,_0x13ade4){return db[_0xb99c('0x39')]['find']({'where':{'id':_0x1a339b['params']['id']}})['then'](handleEntityNotFound(_0x53e4d9,null))[_0xb99c('0x27')](function(_0xe4a443){if(_0xe4a443){return _0xe4a443[_0xb99c('0xb3')](_0x1a339b[_0xb99c('0x3d')][_0xb99c('0x7e')]);}})['then'](function(_0x57f5a4){if(_0x57f5a4){return db[_0xb99c('0x65')]['destroy']({'where':{'ListId':_0x1a339b[_0xb99c('0x3d')]['ids'],'VoiceQueueId':_0x1a339b[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](function(){return _0x57f5a4;});}})[_0xb99c('0x27')](respondWithStatusCode(_0x53e4d9,null))[_0xb99c('0x51')](handleError(_0x53e4d9,null));};exports[_0xb99c('0xb4')]=function(_0x2c7266,_0xa194a2,_0x5da446){var _0x4e95c3={};var _0x3a0849={};var _0x4e1cc5;var _0x3adfa5;return db['VoiceQueue']['findOne']({'where':{'id':_0x2c7266[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0xa194a2,null))['then'](function(_0x582c24){if(_0x582c24){_0x4e1cc5=_0x582c24;_0x3a0849[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x9c')]['rawAttributes']);_0x3a0849[_0xb99c('0x3d')]=_[_0xb99c('0x3c')](_0x2c7266[_0xb99c('0x3d')]);_0x3a0849['filters']=_['intersection'](_0x3a0849[_0xb99c('0x3f')],_0x3a0849[_0xb99c('0x3d')]);_0x4e95c3[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x3a0849[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0x2c7266[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x4e95c3[_0xb99c('0x40')]=_0x4e95c3[_0xb99c('0x40')]['length']?_0x4e95c3[_0xb99c('0x40')]:_0x3a0849[_0xb99c('0x3f')];_0x4e95c3[_0xb99c('0x63')]=qs[_0xb99c('0x45')](_0x2c7266[_0xb99c('0x3d')][_0xb99c('0x45')]);_0x4e95c3['where']=qs[_0xb99c('0x47')](_['pick'](_0x2c7266[_0xb99c('0x3d')],_0x3a0849[_0xb99c('0x47')]));if(_0x2c7266[_0xb99c('0x3d')][_0xb99c('0x2b')]){_0x4e95c3['where']=_[_0xb99c('0x49')](_0x4e95c3[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x4e95c3[_0xb99c('0x40')],function(_0x24a3a2){var _0x1c48b7={};_0x1c48b7[_0x24a3a2]={'$like':'%'+_0x2c7266[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x1c48b7;})});}_0x4e95c3=_[_0xb99c('0x49')]({},_0x4e95c3,_0x2c7266['options']);return _0x4e1cc5[_0xb99c('0xb4')](_0x4e95c3);}})[_0xb99c('0x27')](function(_0x1ce336){if(_0x1ce336){_0x3adfa5=_0x1ce336[_0xb99c('0x42')];if(!_0x2c7266[_0xb99c('0x3d')][_0xb99c('0x43')]('nolimit')){_0x4e95c3[_0xb99c('0x1e')]=qs[_0xb99c('0x1e')](_0x2c7266[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x4e95c3[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x2c7266[_0xb99c('0x3d')]['offset']);}return _0x4e1cc5[_0xb99c('0xb4')](_0x4e95c3);}})['then'](function(_0x2e6434){if(_0x2e6434){return _0x2e6434?{'count':_0x3adfa5,'rows':_0x2e6434}:null;}})['then'](respondWithResult(_0xa194a2,null))[_0xb99c('0x51')](handleError(_0xa194a2,null));};exports[_0xb99c('0xb5')]=function(_0x5b9842,_0x3d6d51,_0x44f5f4){var _0x50dc6e,_0xf352fe;return db['VoiceQueue'][_0xb99c('0x2f')]({'where':{'id':_0x5b9842[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x3d6d51,null))[_0xb99c('0x27')](function(_0x123623){if(_0x123623){_0xf352fe=_0x123623;return _0x123623[_0xb99c('0xb5')](_0x5b9842[_0xb99c('0x53')][_0xb99c('0x7e')],_[_0xb99c('0x5d')](_0x5b9842[_0xb99c('0x53')],['ids','id'])||{});}return null;})['spread'](function(_0x32fedd){var _0x1d901e;_0x50dc6e=_0x32fedd||[];var _0x2bbe21=[];if(_0x32fedd){for(var _0x2ea5b6=0x0;_0x2ea5b6<_0x32fedd['length'];_0x2ea5b6+=0x1){var _0xcca24c=_0x32fedd[_0x2ea5b6][_0xb99c('0x55')]({'plain':!![]});_0x1d901e=squel[_0xb99c('0x9f')]()['into']('cm_hopper_black')[_0xb99c('0xa1')]([_0xb99c('0xa4'),_0xb99c('0xa5'),_0xb99c('0xa3'),'VoiceQueueId',_0xb99c('0x5e'),_0xb99c('0x5f')],squel[_0xb99c('0x80')]()[_0xb99c('0x81')](_0xb99c('0xa4'),_0xb99c('0xa4'))[_0xb99c('0x81')]('id',_0xb99c('0xa5'))[_0xb99c('0x81')](_0xcca24c[_0xb99c('0xa6')]['toString'](),_0xb99c('0xa3'))[_0xb99c('0x81')](_0x5b9842[_0xb99c('0x4e')]['id']['toString'](),_0xb99c('0x64'))[_0xb99c('0x81')](_0xb99c('0xa8'),_0xb99c('0x5e'))[_0xb99c('0x81')](_0xb99c('0xa8'),'updatedAt')[_0xb99c('0x83')]('cm_contacts')[_0xb99c('0x46')](_0xb99c('0xb2'))['where'](_0xb99c('0xaa'),_0xcca24c[_0xb99c('0xa6')][_0xb99c('0xa7')]())[_0xb99c('0x46')](_0xb99c('0xab')))['toString']();_0x2bbe21[_0xb99c('0x89')](db[_0xb99c('0x8a')][_0xb99c('0x3d')](_0x1d901e));}return BPromise[_0xb99c('0x90')](_0x2bbe21);}})[_0xb99c('0x27')](function(){return _0x50dc6e;})[_0xb99c('0x27')](respondWithResult(_0x3d6d51,null))[_0xb99c('0x51')](handleError(_0x3d6d51,null));};exports[_0xb99c('0xb6')]=function(_0x98c525,_0x5ca0b7,_0x3c46cb){return db[_0xb99c('0x39')][_0xb99c('0x2f')]({'where':{'id':_0x98c525['params']['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x5ca0b7,null))[_0xb99c('0x27')](function(_0x1df32c){if(_0x1df32c){return _0x1df32c[_0xb99c('0xb6')](_0x98c525[_0xb99c('0x3d')]['ids']);}})[_0xb99c('0x27')](function(_0x2867e3){if(_0x2867e3){return db[_0xb99c('0x69')][_0xb99c('0x32')]({'where':{'ListId':_0x98c525[_0xb99c('0x3d')][_0xb99c('0x7e')],'VoiceQueueId':_0x98c525[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](function(){return _0x2867e3;});}})[_0xb99c('0x27')](respondWithStatusCode(_0x5ca0b7,null))['catch'](handleError(_0x5ca0b7,null));};
\ No newline at end of file
+var _0x7333=['CmHopperHistory','CmHopperFinal','CmHopperBlack','getTeams','Team','teams','Agents','online','voicePause','interface','flatMap','forEach','penalty','sequelize','each','upsert','UserVoiceQueue','UserVoiceQueueRt','isNil','SIP/%s','emit','userVoiceQueue:save','removeTeams','ids','User','select','field','from','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','TeamId','includes','all','union','compact','transaction','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','omit','spread','format','isArray','getAgents','getMembers','CmList','getLists','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','ContactId','ListId','NOW()','scheduledAt','CmListId','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','onlyIfOpen','push','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','sendStatus','status','json','offset','count','limit','set','Content-Range','apply','reject','update','then','destroy','get','inbound','QueueCampaigns','outbound','ignore','value','find','type','name','UserProfileResource','error','stack','send','index','map','VoiceQueue','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','fields','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','VoiceQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','getHoppers','CmHopper','order','VoiceQueueId','findAll','getHopperHistories','findOne'];(function(_0x5b8da7,_0x48a3b8){var _0x49145e=function(_0x5e910f){while(--_0x5e910f){_0x5b8da7['push'](_0x5b8da7['shift']());}};_0x49145e(++_0x48a3b8);}(_0x7333,0x109));var _0x3733=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x7333[_0x2c91e9];return _0x13f0ff;};'use strict';var emlformat=require(_0x3733('0x0'));var rimraf=require(_0x3733('0x1'));var zipdir=require(_0x3733('0x2'));var jsonpatch=require(_0x3733('0x3'));var rp=require(_0x3733('0x4'));var moment=require(_0x3733('0x5'));var BPromise=require(_0x3733('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x3733('0x7'));var sox=require(_0x3733('0x8'));var csv=require(_0x3733('0x9'));var ejs=require(_0x3733('0xa'));var fs=require('fs');var fs_extra=require(_0x3733('0xb'));var _=require(_0x3733('0xc'));var squel=require(_0x3733('0xd'));var crypto=require(_0x3733('0xe'));var jsforce=require(_0x3733('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3733('0x10'));var Papa=require(_0x3733('0x11'));var Redis=require('ioredis');var authService=require(_0x3733('0x12'));var qs=require(_0x3733('0x13'));var as=require(_0x3733('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3733('0x15'))(_0x3733('0x16'));var utils=require(_0x3733('0x17'));var config=require(_0x3733('0x18'));var licenseUtil=require(_0x3733('0x19'));var db=require('../../mysqldb')['db'];config[_0x3733('0x1a')]=_[_0x3733('0x1b')](config['redis'],{'host':_0x3733('0x1c'),'port':0x18eb});var socket=require(_0x3733('0x1d'))(new Redis(config[_0x3733('0x1a')]));require(_0x3733('0x1e'))[_0x3733('0x1f')](socket);function respondWithStatusCode(_0x5c8629,_0x43970c){_0x43970c=_0x43970c||0xcc;return function(_0xb5141a){if(_0xb5141a){return _0x5c8629[_0x3733('0x20')](_0x43970c);}return _0x5c8629[_0x3733('0x21')](_0x43970c)['end']();};}function respondWithResult(_0x5776fc,_0x1eb788){_0x1eb788=_0x1eb788||0xc8;return function(_0x2d9cc7){if(_0x2d9cc7){return _0x5776fc[_0x3733('0x21')](_0x1eb788)[_0x3733('0x22')](_0x2d9cc7);}};}function respondWithFilteredResult(_0x14571c,_0x2cd61d){return function(_0x5d5bd7){if(_0x5d5bd7){var _0xd67429=typeof _0x2cd61d[_0x3733('0x23')]==='undefined'&&typeof _0x2cd61d['limit']==='undefined';var _0x5e2d3b=_0x5d5bd7[_0x3733('0x24')];var _0x18fe94=_0xd67429?0x0:_0x2cd61d[_0x3733('0x23')];var _0x120e70=_0xd67429?_0x5d5bd7[_0x3733('0x24')]:_0x2cd61d[_0x3733('0x23')]+_0x2cd61d[_0x3733('0x25')];var _0x38f3b7;if(_0x120e70>=_0x5e2d3b){_0x120e70=_0x5e2d3b;_0x38f3b7=0xc8;}else{_0x38f3b7=0xce;}_0x14571c[_0x3733('0x21')](_0x38f3b7);return _0x14571c[_0x3733('0x26')](_0x3733('0x27'),_0x18fe94+'-'+_0x120e70+'/'+_0x5e2d3b)[_0x3733('0x22')](_0x5d5bd7);}return null;};}function patchUpdates(_0x591b62){return function(_0x4c72b7){try{jsonpatch[_0x3733('0x28')](_0x4c72b7,_0x591b62,!![]);}catch(_0x24e344){return BPromise[_0x3733('0x29')](_0x24e344);}return _0x4c72b7['save']();};}function saveUpdates(_0x39e0ba,_0x3b2e35){return function(_0x49905d){if(_0x49905d){return _0x49905d[_0x3733('0x2a')](_0x39e0ba)[_0x3733('0x2b')](function(_0x132bf5){return _0x132bf5;});}return null;};}function removeEntity(_0x4e3316,_0x288ba9){return function(_0x2a7d25){if(_0x2a7d25){return _0x2a7d25[_0x3733('0x2c')]()['then'](function(){var _0x822b57=_0x2a7d25[_0x3733('0x2d')]({'plain':!![]});var _0x43eaa8=[{'name':'VoiceQueues','value':_0x3733('0x2e'),'ignore':![]},{'name':_0x3733('0x2f'),'value':_0x3733('0x30'),'ignore':![]}];var _0x42616b=_(_0x43eaa8)['filter'](_0x3733('0x31'))['map'](_0x3733('0x32'))[_0x3733('0x32')]();if(_['includes'](_0x42616b,_0x822b57['type'])){return;}var _0x5a602f=_[_0x3733('0x33')](_0x43eaa8,['value',_0x822b57[_0x3733('0x34')]])[_0x3733('0x35')];return db[_0x3733('0x36')][_0x3733('0x2c')]({'where':{'type':_0x5a602f,'resourceId':_0x822b57['id']}})[_0x3733('0x2b')](function(){return _0x2a7d25;});})['then'](function(){_0x4e3316['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e6b99,_0x190ad9){return function(_0x470148){if(!_0x470148){_0x4e6b99[_0x3733('0x20')](0x194);}return _0x470148;};}function handleError(_0x28959b,_0x181c29){_0x181c29=_0x181c29||0x1f4;return function(_0x3d4892){logger[_0x3733('0x37')](_0x3d4892[_0x3733('0x38')]);if(_0x3d4892[_0x3733('0x35')]){delete _0x3d4892[_0x3733('0x35')];}_0x28959b['status'](_0x181c29)[_0x3733('0x39')](_0x3d4892);};}exports[_0x3733('0x3a')]=function(_0x26fc66,_0x5f199f){var _0x177354={},_0x4233ff={},_0x3e045f={'count':0x0,'rows':[]};var _0x4a28f7=_[_0x3733('0x3b')](db[_0x3733('0x3c')][_0x3733('0x3d')],function(_0x395a78){return{'name':_0x395a78[_0x3733('0x3e')],'type':_0x395a78[_0x3733('0x34')][_0x3733('0x3f')]};});_0x4233ff[_0x3733('0x40')]=_[_0x3733('0x3b')](_0x4a28f7,_0x3733('0x35'));_0x4233ff[_0x3733('0x41')]=_[_0x3733('0x42')](_0x26fc66[_0x3733('0x41')]);_0x4233ff['filters']=_[_0x3733('0x43')](_0x4233ff['model'],_0x4233ff[_0x3733('0x41')]);_0x177354[_0x3733('0x44')]=_[_0x3733('0x43')](_0x4233ff[_0x3733('0x40')],qs['fields'](_0x26fc66['query']['fields']));_0x177354[_0x3733('0x44')]=_0x177354[_0x3733('0x44')][_0x3733('0x45')]?_0x177354[_0x3733('0x44')]:_0x4233ff[_0x3733('0x40')];if(!_0x26fc66['query'][_0x3733('0x46')](_0x3733('0x47'))){_0x177354[_0x3733('0x25')]=qs[_0x3733('0x25')](_0x26fc66[_0x3733('0x41')][_0x3733('0x25')]);_0x177354[_0x3733('0x23')]=qs[_0x3733('0x23')](_0x26fc66[_0x3733('0x41')][_0x3733('0x23')]);}_0x177354['order']=qs[_0x3733('0x48')](_0x26fc66['query']['sort']);_0x177354[_0x3733('0x49')]=qs['filters'](_[_0x3733('0x4a')](_0x26fc66[_0x3733('0x41')],_0x4233ff[_0x3733('0x4b')]),_0x4a28f7);if(_0x26fc66[_0x3733('0x41')][_0x3733('0x4c')]){_0x177354[_0x3733('0x49')]=_[_0x3733('0x4d')](_0x177354[_0x3733('0x49')],{'$or':_[_0x3733('0x3b')](_0x4a28f7,function(_0x5367b5){if(_0x5367b5[_0x3733('0x34')]!==_0x3733('0x4e')){var _0xd9e1a0={};_0xd9e1a0[_0x5367b5['name']]={'$like':'%'+_0x26fc66['query'][_0x3733('0x4c')]+'%'};return _0xd9e1a0;}})});}_0x177354=_['merge']({},_0x177354,_0x26fc66[_0x3733('0x4f')]);var _0x5d460e={'where':_0x177354[_0x3733('0x49')]};return db[_0x3733('0x3c')][_0x3733('0x24')](_0x5d460e)[_0x3733('0x2b')](function(_0x13496d){_0x3e045f[_0x3733('0x24')]=_0x13496d;if(_0x26fc66[_0x3733('0x41')][_0x3733('0x50')]){_0x177354[_0x3733('0x51')]=[{'all':!![]}];}return db['VoiceQueue']['findAll'](_0x177354);})[_0x3733('0x2b')](function(_0x5eecee){_0x3e045f[_0x3733('0x52')]=_0x5eecee;return _0x3e045f;})[_0x3733('0x2b')](respondWithFilteredResult(_0x5f199f,_0x177354))[_0x3733('0x53')](handleError(_0x5f199f,null));};exports[_0x3733('0x54')]=function(_0x1a7ef3,_0x1784ee){var _0x2703cf={'raw':![],'where':{'id':_0x1a7ef3[_0x3733('0x55')]['id']}},_0x50c190={};_0x50c190['model']=_[_0x3733('0x42')](db[_0x3733('0x3c')][_0x3733('0x3d')]);_0x50c190['query']=_['keys'](_0x1a7ef3[_0x3733('0x41')]);_0x50c190['filters']=_['intersection'](_0x50c190[_0x3733('0x40')],_0x50c190[_0x3733('0x41')]);_0x2703cf[_0x3733('0x44')]=_[_0x3733('0x43')](_0x50c190['model'],qs[_0x3733('0x56')](_0x1a7ef3[_0x3733('0x41')][_0x3733('0x56')]));_0x2703cf[_0x3733('0x44')]=_0x2703cf[_0x3733('0x44')]['length']?_0x2703cf[_0x3733('0x44')]:_0x50c190[_0x3733('0x40')];if(_0x1a7ef3[_0x3733('0x41')][_0x3733('0x50')]){_0x2703cf[_0x3733('0x51')]=[{'all':!![]}];}_0x2703cf=_[_0x3733('0x4d')]({},_0x2703cf,_0x1a7ef3[_0x3733('0x4f')]);return db['VoiceQueue'][_0x3733('0x33')](_0x2703cf)[_0x3733('0x2b')](handleEntityNotFound(_0x1784ee,null))['then'](respondWithResult(_0x1784ee,null))[_0x3733('0x53')](handleError(_0x1784ee,null));};exports['create']=function(_0x3e6334,_0x458c13){return db[_0x3733('0x3c')][_0x3733('0x57')](_0x3e6334[_0x3733('0x58')],{})[_0x3733('0x2b')](function(_0x4f171f){var _0x25ea71=_0x3e6334[_0x3733('0x59')][_0x3733('0x2d')]({'plain':!![]});if(!_0x25ea71)throw new Error(_0x3733('0x5a'));if(_0x25ea71[_0x3733('0x5b')]===_0x3733('0x59')){var _0x15b8a9=_0x4f171f[_0x3733('0x2d')]({'plain':!![]});var _0x501670=[{'name':_0x3733('0x5c'),'value':_0x3733('0x2e')},{'name':_0x3733('0x2f'),'value':_0x3733('0x30')}];var _0x417fc1=_[_0x3733('0x33')](_0x501670,[_0x3733('0x32'),_0x15b8a9['type']])[_0x3733('0x35')];return db[_0x3733('0x5d')][_0x3733('0x33')]({'where':{'name':_0x417fc1,'userProfileId':_0x25ea71[_0x3733('0x5e')]},'raw':!![]})['then'](function(_0x3b3959){if(_0x3b3959&&_0x3b3959[_0x3733('0x5f')]===0x0){return db[_0x3733('0x36')][_0x3733('0x57')]({'name':_0x15b8a9[_0x3733('0x35')],'resourceId':_0x15b8a9['id'],'type':_0x3b3959[_0x3733('0x35')],'sectionId':_0x3b3959['id']},{})[_0x3733('0x2b')](function(){return _0x4f171f;});}else{return _0x4f171f;}})[_0x3733('0x53')](function(_0x1a31ef){logger[_0x3733('0x37')](_0x3733('0x60'),_0x1a31ef);throw _0x1a31ef;});}return _0x4f171f;})[_0x3733('0x2b')](respondWithResult(_0x458c13,0xc9))[_0x3733('0x53')](handleError(_0x458c13,null));};exports[_0x3733('0x61')]=function(_0x26f303,_0x41f2bf){var _0xab61e4={'where':{'id':_0x26f303[_0x3733('0x55')]['id']}},_0x4a35f8={};_0x4a35f8[_0x3733('0x40')]=_[_0x3733('0x42')](db[_0x3733('0x3c')]['rawAttributes']);_0xab61e4[_0x3733('0x44')]=_[_0x3733('0x43')](_0x4a35f8[_0x3733('0x40')],qs[_0x3733('0x56')](_0x26f303['query'][_0x3733('0x56')]));_0xab61e4[_0x3733('0x44')]=_0xab61e4[_0x3733('0x44')][_0x3733('0x45')]?_0xab61e4[_0x3733('0x44')]:_0x4a35f8[_0x3733('0x40')];if(_0x26f303['query']['includeAll']){_0xab61e4[_0x3733('0x51')]=[{'all':!![]}];}_0xab61e4=_['merge']({},_0xab61e4,_0x26f303[_0x3733('0x4f')]);return db[_0x3733('0x3c')]['find'](_0xab61e4)[_0x3733('0x2b')](handleEntityNotFound(_0x41f2bf,null))['then'](function(_0x376343){if(_0x376343){var _0x371bbd=_0x376343['get']({'plain':!![]});_0x371bbd=qs['omit'](_0x371bbd,['id',_0x3733('0x62'),'updatedAt']);_0x26f303[_0x3733('0x58')]=_['omit'](_0x26f303[_0x3733('0x58')],['id',_0x3733('0x62'),_0x3733('0x63')]);return db['VoiceQueue'][_0x3733('0x57')](_[_0x3733('0x4d')](_0x371bbd,_0x26f303[_0x3733('0x58')]),{'include':_0x26f303[_0x3733('0x41')][_0x3733('0x50')]?[{'all':!![]}]:undefined})['then'](function(_0x589c4a){var _0x9a1e0a=_0x26f303[_0x3733('0x59')]['get']({'plain':!![]});if(!_0x9a1e0a)throw new Error(_0x3733('0x5a'));if(_0x9a1e0a[_0x3733('0x5b')]===_0x3733('0x59')){var _0x257ac2=_0x589c4a[_0x3733('0x2d')]({'plain':!![]});var _0x230b5b=[{'name':_0x3733('0x5c'),'value':_0x3733('0x2e')},{'name':_0x3733('0x2f'),'value':'outbound'}];var _0x2e9758=_['find'](_0x230b5b,[_0x3733('0x32'),_0x257ac2[_0x3733('0x34')]])[_0x3733('0x35')];return db[_0x3733('0x5d')]['find']({'where':{'name':_0x2e9758,'userProfileId':_0x9a1e0a[_0x3733('0x5e')]},'raw':!![]})[_0x3733('0x2b')](function(_0x476e14){if(_0x476e14&&_0x476e14[_0x3733('0x5f')]===0x0){return db[_0x3733('0x36')][_0x3733('0x57')]({'name':_0x257ac2[_0x3733('0x35')],'resourceId':_0x257ac2['id'],'type':_0x476e14[_0x3733('0x35')],'sectionId':_0x476e14['id']},{})[_0x3733('0x2b')](function(){return _0x589c4a;});}else{return _0x589c4a;}})[_0x3733('0x53')](function(_0x3ce49c){logger[_0x3733('0x37')](_0x3733('0x60'),_0x3ce49c);throw _0x3ce49c;});}return _0x589c4a;});}})[_0x3733('0x2b')](respondWithResult(_0x41f2bf,0xc9))[_0x3733('0x53')](handleError(_0x41f2bf,null));};exports[_0x3733('0x2a')]=function(_0x4cd303,_0x2c7765){if(_0x4cd303[_0x3733('0x58')]['id']){delete _0x4cd303[_0x3733('0x58')]['id'];}return db[_0x3733('0x3c')][_0x3733('0x33')]({'where':{'id':_0x4cd303['params']['id']}})['then'](handleEntityNotFound(_0x2c7765,null))['then'](saveUpdates(_0x4cd303['body'],null))['then'](respondWithResult(_0x2c7765,null))[_0x3733('0x53')](handleError(_0x2c7765,null));};exports[_0x3733('0x2c')]=function(_0x3ab134,_0x920ed){return db[_0x3733('0x3c')][_0x3733('0x33')]({'where':{'id':_0x3ab134[_0x3733('0x55')]['id']}})[_0x3733('0x2b')](handleEntityNotFound(_0x920ed,null))['then'](removeEntity(_0x920ed,null))[_0x3733('0x53')](handleError(_0x920ed,null));};exports[_0x3733('0x64')]=function(_0x5af6a0,_0x556651,_0x3a31ef){var _0x18a127={'raw':![],'where':{}};var _0x40c98a={};var _0x11609d={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x5af6a0[_0x3733('0x55')]['id']}})[_0x3733('0x2b')](handleEntityNotFound(_0x556651,null))[_0x3733('0x2b')](function(_0x21eb7a){if(_0x21eb7a){_0x40c98a[_0x3733('0x40')]=_[_0x3733('0x42')](db[_0x3733('0x65')]['rawAttributes']);_0x40c98a[_0x3733('0x41')]=_[_0x3733('0x42')](_0x5af6a0['query']);_0x40c98a[_0x3733('0x4b')]=_['intersection'](_0x40c98a['model'],_0x40c98a[_0x3733('0x41')]);_0x18a127[_0x3733('0x44')]=_[_0x3733('0x43')](_0x40c98a[_0x3733('0x40')],qs[_0x3733('0x56')](_0x5af6a0['query'][_0x3733('0x56')]));_0x18a127['attributes']=_0x18a127[_0x3733('0x44')][_0x3733('0x45')]?_0x18a127[_0x3733('0x44')]:_0x40c98a[_0x3733('0x40')];if(!_0x5af6a0[_0x3733('0x41')][_0x3733('0x46')](_0x3733('0x47'))){_0x18a127[_0x3733('0x25')]=qs['limit'](_0x5af6a0[_0x3733('0x41')]['limit']);_0x18a127['offset']=qs[_0x3733('0x23')](_0x5af6a0['query'][_0x3733('0x23')]);}_0x18a127[_0x3733('0x66')]=qs[_0x3733('0x48')](_0x5af6a0[_0x3733('0x41')][_0x3733('0x48')]);_0x18a127['where']=qs[_0x3733('0x4b')](_[_0x3733('0x4a')](_0x5af6a0[_0x3733('0x41')],_0x40c98a[_0x3733('0x4b')]));_0x18a127[_0x3733('0x49')][_0x3733('0x67')]=_0x21eb7a['id'];if(_0x5af6a0[_0x3733('0x41')][_0x3733('0x4c')]){_0x18a127[_0x3733('0x49')]=_['merge'](_0x18a127['where'],{'$or':_['map'](_0x18a127[_0x3733('0x44')],function(_0x452f03){var _0x5e6945={};_0x5e6945[_0x452f03]={'$like':'%'+_0x5af6a0[_0x3733('0x41')][_0x3733('0x4c')]+'%'};return _0x5e6945;})});}_0x18a127=_[_0x3733('0x4d')]({},_0x18a127,_0x5af6a0['options']);return db[_0x3733('0x65')][_0x3733('0x24')]({'where':_0x18a127[_0x3733('0x49')]})[_0x3733('0x2b')](function(_0x1d6741){_0x11609d[_0x3733('0x24')]=_0x1d6741;if(_0x5af6a0[_0x3733('0x41')][_0x3733('0x50')]){_0x18a127[_0x3733('0x51')]=[{'all':!![]}];}return db[_0x3733('0x65')][_0x3733('0x68')](_0x18a127);})[_0x3733('0x2b')](function(_0x5e8efd){_0x11609d[_0x3733('0x52')]=_0x5e8efd;return _0x11609d;});}})[_0x3733('0x2b')](respondWithFilteredResult(_0x556651,_0x18a127))[_0x3733('0x53')](handleError(_0x556651,null));};exports[_0x3733('0x69')]=function(_0x27bce2,_0x469e10,_0x496d69){var _0x59ed25={'raw':!![],'where':{}};var _0x26a776={};var _0x206b90={'count':0x0,'rows':[]};return db[_0x3733('0x3c')][_0x3733('0x6a')]({'where':{'id':_0x27bce2[_0x3733('0x55')]['id']}})['then'](handleEntityNotFound(_0x469e10,null))['then'](function(_0x39bd00){if(_0x39bd00){_0x26a776[_0x3733('0x40')]=_[_0x3733('0x42')](db[_0x3733('0x6b')][_0x3733('0x3d')]);_0x26a776[_0x3733('0x41')]=_[_0x3733('0x42')](_0x27bce2[_0x3733('0x41')]);_0x26a776[_0x3733('0x4b')]=_[_0x3733('0x43')](_0x26a776[_0x3733('0x40')],_0x26a776[_0x3733('0x41')]);_0x59ed25['attributes']=_[_0x3733('0x43')](_0x26a776[_0x3733('0x40')],qs[_0x3733('0x56')](_0x27bce2[_0x3733('0x41')]['fields']));_0x59ed25['attributes']=_0x59ed25[_0x3733('0x44')][_0x3733('0x45')]?_0x59ed25[_0x3733('0x44')]:_0x26a776[_0x3733('0x40')];if(!_0x27bce2[_0x3733('0x41')][_0x3733('0x46')](_0x3733('0x47'))){_0x59ed25[_0x3733('0x25')]=qs[_0x3733('0x25')](_0x27bce2[_0x3733('0x41')][_0x3733('0x25')]);_0x59ed25[_0x3733('0x23')]=qs['offset'](_0x27bce2[_0x3733('0x41')][_0x3733('0x23')]);}_0x59ed25[_0x3733('0x66')]=qs[_0x3733('0x48')](_0x27bce2[_0x3733('0x41')][_0x3733('0x48')]);_0x59ed25[_0x3733('0x49')]=qs[_0x3733('0x4b')](_[_0x3733('0x4a')](_0x27bce2['query'],_0x26a776['filters']));_0x59ed25[_0x3733('0x49')]['VoiceQueueId']=_0x39bd00['id'];if(_0x27bce2[_0x3733('0x41')][_0x3733('0x4c')]){_0x59ed25[_0x3733('0x49')]=_[_0x3733('0x4d')](_0x59ed25['where'],{'$or':_['map'](_0x59ed25['attributes'],function(_0x466424){var _0x4b6aaf={};_0x4b6aaf[_0x466424]={'$like':'%'+_0x27bce2[_0x3733('0x41')][_0x3733('0x4c')]+'%'};return _0x4b6aaf;})});}_0x59ed25=_[_0x3733('0x4d')]({},_0x59ed25,_0x27bce2[_0x3733('0x4f')]);return db['CmHopperHistory']['count']({'where':_0x59ed25[_0x3733('0x49')]})[_0x3733('0x2b')](function(_0x3e4606){_0x206b90['count']=_0x3e4606;if(_0x27bce2[_0x3733('0x41')]['includeAll']){_0x59ed25[_0x3733('0x51')]=[{'all':!![]}];}return db[_0x3733('0x6b')][_0x3733('0x68')](_0x59ed25);})[_0x3733('0x2b')](function(_0x4d63f8){_0x206b90[_0x3733('0x52')]=_0x4d63f8;return _0x206b90;});}})[_0x3733('0x2b')](respondWithFilteredResult(_0x469e10,_0x59ed25))[_0x3733('0x53')](handleError(_0x469e10,null));};exports['getHopperFinals']=function(_0x4b1599,_0x434281,_0x44c196){var _0x2e40a7={'raw':!![],'where':{}};var _0x2a8d01={};var _0x42eee6={'count':0x0,'rows':[]};return db[_0x3733('0x3c')][_0x3733('0x6a')]({'where':{'id':_0x4b1599['params']['id']}})[_0x3733('0x2b')](handleEntityNotFound(_0x434281,null))[_0x3733('0x2b')](function(_0x3b86b2){if(_0x3b86b2){_0x2a8d01[_0x3733('0x40')]=_[_0x3733('0x42')](db[_0x3733('0x6c')][_0x3733('0x3d')]);_0x2a8d01['query']=_['keys'](_0x4b1599['query']);_0x2a8d01[_0x3733('0x4b')]=_[_0x3733('0x43')](_0x2a8d01[_0x3733('0x40')],_0x2a8d01['query']);_0x2e40a7['attributes']=_['intersection'](_0x2a8d01['model'],qs[_0x3733('0x56')](_0x4b1599[_0x3733('0x41')][_0x3733('0x56')]));_0x2e40a7[_0x3733('0x44')]=_0x2e40a7[_0x3733('0x44')][_0x3733('0x45')]?_0x2e40a7[_0x3733('0x44')]:_0x2a8d01['model'];if(!_0x4b1599['query']['hasOwnProperty'](_0x3733('0x47'))){_0x2e40a7[_0x3733('0x25')]=qs[_0x3733('0x25')](_0x4b1599[_0x3733('0x41')][_0x3733('0x25')]);_0x2e40a7['offset']=qs[_0x3733('0x23')](_0x4b1599[_0x3733('0x41')][_0x3733('0x23')]);}_0x2e40a7['order']=qs[_0x3733('0x48')](_0x4b1599['query']['sort']);_0x2e40a7[_0x3733('0x49')]=qs[_0x3733('0x4b')](_['pick'](_0x4b1599[_0x3733('0x41')],_0x2a8d01['filters']));_0x2e40a7[_0x3733('0x49')]['VoiceQueueId']=_0x3b86b2['id'];if(_0x4b1599[_0x3733('0x41')][_0x3733('0x4c')]){_0x2e40a7[_0x3733('0x49')]=_[_0x3733('0x4d')](_0x2e40a7[_0x3733('0x49')],{'$or':_[_0x3733('0x3b')](_0x2e40a7['attributes'],function(_0x36147c){var _0x52b40c={};_0x52b40c[_0x36147c]={'$like':'%'+_0x4b1599[_0x3733('0x41')][_0x3733('0x4c')]+'%'};return _0x52b40c;})});}_0x2e40a7=_[_0x3733('0x4d')]({},_0x2e40a7,_0x4b1599[_0x3733('0x4f')]);return db[_0x3733('0x6c')][_0x3733('0x24')]({'where':_0x2e40a7[_0x3733('0x49')]})[_0x3733('0x2b')](function(_0x13eff2){_0x42eee6[_0x3733('0x24')]=_0x13eff2;if(_0x4b1599[_0x3733('0x41')][_0x3733('0x50')]){_0x2e40a7[_0x3733('0x51')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x3733('0x68')](_0x2e40a7);})[_0x3733('0x2b')](function(_0x44e3cb){_0x42eee6[_0x3733('0x52')]=_0x44e3cb;return _0x42eee6;});}})[_0x3733('0x2b')](respondWithFilteredResult(_0x434281,_0x2e40a7))[_0x3733('0x53')](handleError(_0x434281,null));};exports['getHopperBlacks']=function(_0x28c392,_0x3d521d,_0x59f755){var _0x7c7280={'raw':!![],'where':{}};var _0x43cbc5={};var _0x1e1c91={'count':0x0,'rows':[]};return db[_0x3733('0x3c')]['findOne']({'where':{'id':_0x28c392[_0x3733('0x55')]['id']}})[_0x3733('0x2b')](handleEntityNotFound(_0x3d521d,null))[_0x3733('0x2b')](function(_0x38d132){if(_0x38d132){_0x43cbc5[_0x3733('0x40')]=_['keys'](db[_0x3733('0x6d')]['rawAttributes']);_0x43cbc5[_0x3733('0x41')]=_[_0x3733('0x42')](_0x28c392[_0x3733('0x41')]);_0x43cbc5[_0x3733('0x4b')]=_[_0x3733('0x43')](_0x43cbc5[_0x3733('0x40')],_0x43cbc5[_0x3733('0x41')]);_0x7c7280['attributes']=_[_0x3733('0x43')](_0x43cbc5['model'],qs[_0x3733('0x56')](_0x28c392['query'][_0x3733('0x56')]));_0x7c7280[_0x3733('0x44')]=_0x7c7280[_0x3733('0x44')][_0x3733('0x45')]?_0x7c7280[_0x3733('0x44')]:_0x43cbc5[_0x3733('0x40')];if(!_0x28c392[_0x3733('0x41')][_0x3733('0x46')](_0x3733('0x47'))){_0x7c7280[_0x3733('0x25')]=qs[_0x3733('0x25')](_0x28c392[_0x3733('0x41')][_0x3733('0x25')]);_0x7c7280[_0x3733('0x23')]=qs[_0x3733('0x23')](_0x28c392[_0x3733('0x41')][_0x3733('0x23')]);}_0x7c7280['order']=qs[_0x3733('0x48')](_0x28c392[_0x3733('0x41')][_0x3733('0x48')]);_0x7c7280[_0x3733('0x49')]=qs[_0x3733('0x4b')](_[_0x3733('0x4a')](_0x28c392[_0x3733('0x41')],_0x43cbc5[_0x3733('0x4b')]));_0x7c7280['where'][_0x3733('0x67')]=_0x38d132['id'];if(_0x28c392['query']['filter']){_0x7c7280[_0x3733('0x49')]=_[_0x3733('0x4d')](_0x7c7280[_0x3733('0x49')],{'$or':_[_0x3733('0x3b')](_0x7c7280[_0x3733('0x44')],function(_0x5b6f63){var _0x54a0c4={};_0x54a0c4[_0x5b6f63]={'$like':'%'+_0x28c392[_0x3733('0x41')]['filter']+'%'};return _0x54a0c4;})});}_0x7c7280=_[_0x3733('0x4d')]({},_0x7c7280,_0x28c392[_0x3733('0x4f')]);return db[_0x3733('0x6d')][_0x3733('0x24')]({'where':_0x7c7280[_0x3733('0x49')]})['then'](function(_0x1db2ab){_0x1e1c91[_0x3733('0x24')]=_0x1db2ab;if(_0x28c392['query'][_0x3733('0x50')]){_0x7c7280[_0x3733('0x51')]=[{'all':!![]}];}return db[_0x3733('0x6d')]['findAll'](_0x7c7280);})['then'](function(_0x1207a6){_0x1e1c91[_0x3733('0x52')]=_0x1207a6;return _0x1e1c91;});}})[_0x3733('0x2b')](respondWithFilteredResult(_0x3d521d,_0x7c7280))[_0x3733('0x53')](handleError(_0x3d521d,null));};exports[_0x3733('0x6e')]=function(_0x6aa288,_0x2e5804,_0x3c9fdc){var _0x1a2056={};var _0x59f13d={};var _0x5149f5;var _0xde4a01;return db[_0x3733('0x3c')][_0x3733('0x6a')]({'where':{'id':_0x6aa288['params']['id']}})[_0x3733('0x2b')](handleEntityNotFound(_0x2e5804,null))[_0x3733('0x2b')](function(_0xd3355a){if(_0xd3355a){_0x5149f5=_0xd3355a;_0x59f13d['model']=_[_0x3733('0x42')](db[_0x3733('0x6f')][_0x3733('0x3d')]);_0x59f13d[_0x3733('0x41')]=_[_0x3733('0x42')](_0x6aa288['query']);_0x59f13d[_0x3733('0x4b')]=_[_0x3733('0x43')](_0x59f13d[_0x3733('0x40')],_0x59f13d[_0x3733('0x41')]);_0x1a2056['attributes']=_['intersection'](_0x59f13d[_0x3733('0x40')],qs[_0x3733('0x56')](_0x6aa288['query']['fields']));_0x1a2056[_0x3733('0x44')]=_0x1a2056[_0x3733('0x44')][_0x3733('0x45')]?_0x1a2056[_0x3733('0x44')]:_0x59f13d[_0x3733('0x40')];_0x1a2056[_0x3733('0x66')]=qs[_0x3733('0x48')](_0x6aa288['query']['sort']);_0x1a2056[_0x3733('0x49')]=qs['filters'](_[_0x3733('0x4a')](_0x6aa288[_0x3733('0x41')],_0x59f13d['filters']));if(_0x6aa288[_0x3733('0x41')][_0x3733('0x4c')]){_0x1a2056[_0x3733('0x49')]=_[_0x3733('0x4d')](_0x1a2056[_0x3733('0x49')],{'$or':_[_0x3733('0x3b')](_0x1a2056[_0x3733('0x44')],function(_0x51a8ea){var _0x159461={};_0x159461[_0x51a8ea]={'$like':'%'+_0x6aa288[_0x3733('0x41')]['filter']+'%'};return _0x159461;})});}_0x1a2056=_[_0x3733('0x4d')]({},_0x1a2056,_0x6aa288[_0x3733('0x4f')]);return _0x5149f5[_0x3733('0x6e')](_0x1a2056);}})['then'](function(_0x5295f0){if(_0x5295f0){_0xde4a01=_0x5295f0['length'];if(!_0x6aa288[_0x3733('0x41')][_0x3733('0x46')]('nolimit')){_0x1a2056[_0x3733('0x25')]=qs[_0x3733('0x25')](_0x6aa288[_0x3733('0x41')][_0x3733('0x25')]);_0x1a2056[_0x3733('0x23')]=qs[_0x3733('0x23')](_0x6aa288['query'][_0x3733('0x23')]);}return _0x5149f5[_0x3733('0x6e')](_0x1a2056);}})[_0x3733('0x2b')](function(_0x150839){if(_0x150839){return _0x150839?{'count':_0xde4a01,'rows':_0x150839}:null;}})['then'](respondWithResult(_0x2e5804,null))[_0x3733('0x53')](handleError(_0x2e5804,null));};exports['addTeams']=function(_0x964a0d,_0x3f44ea,_0xe2da4a){var _0x34b5f3=_0x964a0d[_0x3733('0x58')][_0x3733('0x70')];var _0x4b6b96=_[_0x3733('0x3b')](_0x34b5f3,'id');return db[_0x3733('0x6f')][_0x3733('0x68')]({'where':{'id':_0x4b6b96},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3733('0x71'),'attributes':['id',_0x3733('0x35'),_0x3733('0x72'),_0x3733('0x73'),_0x3733('0x74')],'raw':!![]}]})[_0x3733('0x2b')](function(_0x2c28ef){if(_0x2c28ef){var _0x44e7de=_[_0x3733('0x75')](_0x2c28ef,function(_0x222065){var _0x4ab1f1=_0x222065[_0x3733('0x2d')]({'plain':!![]});_0x4ab1f1[_0x3733('0x71')][_0x3733('0x76')](function(_0x17bf6a){_0x17bf6a[_0x3733('0x77')]=_[_0x3733('0x33')](_0x34b5f3,{'id':_0x4ab1f1['id']})[_0x3733('0x77')];});return _0x4ab1f1[_0x3733('0x71')];});return db[_0x3733('0x3c')][_0x3733('0x33')]({'where':{'id':_0x964a0d['params']['id']}})[_0x3733('0x2b')](function(_0x1d9013){return db[_0x3733('0x78')]['transaction'](function(_0x22a042){return _0x1d9013['addTeams'](_0x4b6b96,{'transaction':_0x22a042})['then'](function(){return BPromise[_0x3733('0x79')](_0x34b5f3,function(_0x307396){return db['TeamVoiceQueue'][_0x3733('0x7a')]({'TeamId':_0x307396['id'],'VoiceQueueId':_0x964a0d[_0x3733('0x55')]['id'],'penalty':_0x307396['penalty']},{'transaction':_0x22a042});});})[_0x3733('0x2b')](function(){return BPromise[_0x3733('0x79')](_0x44e7de,function(_0x457e02){return db[_0x3733('0x7b')]['findOrCreate']({'where':{'UserId':_0x457e02['id'],'VoiceQueueId':_0x964a0d[_0x3733('0x55')]['id']},'defaults':{'penalty':_0x457e02[_0x3733('0x77')]},'transaction':_0x22a042});});})[_0x3733('0x2b')](function(){return BPromise['each'](_['filter'](_0x44e7de,{'online':!![]}),function(_0x3ccd2f){return db[_0x3733('0x7c')][_0x3733('0x7a')]({'membername':_0x3ccd2f[_0x3733('0x35')],'UserId':_0x3ccd2f['id'],'queue_name':_0x1d9013[_0x3733('0x35')],'VoiceQueueId':_0x1d9013['id'],'interface':_[_0x3733('0x7d')](_0x3ccd2f[_0x3733('0x74')])?util['format'](_0x3733('0x7e'),_0x3ccd2f[_0x3733('0x35')]):_0x3ccd2f[_0x3733('0x74')],'paused':_0x3ccd2f[_0x3733('0x73')]||![],'penalty':_0x3ccd2f[_0x3733('0x77')]},{'transaction':_0x22a042});});})[_0x3733('0x2b')](function(){_0x44e7de[_0x3733('0x76')](function(_0x20bc29){socket[_0x3733('0x7f')](_0x3733('0x80'),{'UserId':_0x20bc29['id'],'VoiceQueueId':_0x1d9013['id']});});});});});}})[_0x3733('0x2b')](respondWithStatusCode(_0x3f44ea,null))[_0x3733('0x53')](handleError(_0x3f44ea,null));};exports[_0x3733('0x81')]=function(_0x5946e4,_0x15940d,_0x36311a){return db[_0x3733('0x6f')][_0x3733('0x68')]({'where':{'id':_0x5946e4['query'][_0x3733('0x82')]},'attributes':['id'],'include':[{'model':db[_0x3733('0x83')],'as':_0x3733('0x71'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x15940d,null))[_0x3733('0x2b')](function(_0x4a98fd){var _0x3ecd63=_['map'](_0x4a98fd,'id');var _0x136f37=[];var _0x28a6de=[];var _0x4724bd=squel[_0x3733('0x84')]();_0x4724bd[_0x3733('0x85')]('tq.TeamId')[_0x3733('0x86')](_0x3733('0x87'),'tq')['join'](_0x3733('0x88'),'ut',_0x3733('0x89'))['where'](_0x3733('0x8a'),_0x5946e4['params']['id']);for(var _0x2b7e15=0x0;_0x2b7e15<_0x4a98fd[_0x3733('0x45')];_0x2b7e15+=0x1){let _0x1cdb52=_0x4a98fd[_0x2b7e15];for(var _0x239408=0x0;_0x239408<_0x1cdb52['Agents'][_0x3733('0x45')];_0x239408+=0x1){let _0x1c598=_0x1cdb52[_0x3733('0x71')][_0x239408];var _0x21e79a=_0x4724bd[_0x3733('0x61')]();_0x21e79a['where'](_0x3733('0x8b'),_0x1c598['id']);_0x28a6de['push'](db[_0x3733('0x78')]['query'](_0x21e79a[_0x3733('0x8c')](),{'type':db['sequelize'][_0x3733('0x8d')][_0x3733('0x8e')]})[_0x3733('0x2b')](function(_0x240dc2){if(_0x240dc2[_0x3733('0x45')]===0x1){return _0x1c598['id'];}else{var _0x345b16=_['every'](_[_0x3733('0x3b')](_0x240dc2,_0x3733('0x8f')),function(_0x598ec7){return _[_0x3733('0x90')](_0x3ecd63,_0x598ec7);});if(_0x345b16){return _0x1c598['id'];}}}));}}return BPromise[_0x3733('0x91')](_0x28a6de)['then'](function(_0x4f087c){_0x136f37=_(_0x136f37)[_0x3733('0x92')](_0x4f087c)[_0x3733('0x93')]()[_0x3733('0x32')]();return db[_0x3733('0x3c')][_0x3733('0x33')]({'where':{'id':_0x5946e4[_0x3733('0x55')]['id']}})[_0x3733('0x2b')](function(_0x3213d9){return db[_0x3733('0x78')][_0x3733('0x94')](function(_0x3b1093){return _0x3213d9[_0x3733('0x81')](_0x5946e4[_0x3733('0x41')]['ids'],{'transaction':_0x3b1093})[_0x3733('0x2b')](function(){if(!_[_0x3733('0x95')](_0x136f37)){return _0x3213d9[_0x3733('0x96')](_0x136f37,{'transaction':_0x3b1093})[_0x3733('0x2b')](function(){return db[_0x3733('0x7c')][_0x3733('0x2c')]({'where':{'VoiceQueueId':_0x5946e4[_0x3733('0x55')]['id'],'UserId':_0x136f37},'transaction':_0x3b1093});});}})[_0x3733('0x2b')](function(){_0x136f37[_0x3733('0x76')](function(_0x37b4c0){socket[_0x3733('0x7f')](_0x3733('0x97'),{'UserId':_0x37b4c0,'VoiceQueueId':_0x3213d9['id']});});});});});});})[_0x3733('0x2b')](respondWithStatusCode(_0x15940d,null))[_0x3733('0x53')](handleError(_0x15940d,null));};exports[_0x3733('0x98')]=function(_0x572fa1,_0x108ce3,_0x34b40a){var _0x306a07,_0x357669;return db['VoiceQueue'][_0x3733('0x33')]({'where':{'id':_0x572fa1[_0x3733('0x55')]['id']}})[_0x3733('0x2b')](handleEntityNotFound(_0x108ce3,null))[_0x3733('0x2b')](function(_0x2bd0b0){if(_0x2bd0b0){_0x357669=_0x2bd0b0;return _0x2bd0b0[_0x3733('0x98')](_0x572fa1[_0x3733('0x58')][_0x3733('0x82')],_[_0x3733('0x99')](_0x572fa1[_0x3733('0x58')],[_0x3733('0x82'),'id'])||{})[_0x3733('0x9a')](function(_0x55987e){for(var _0x22565d=0x0;_0x22565d<_0x572fa1[_0x3733('0x58')][_0x3733('0x82')][_0x3733('0x45')];_0x22565d+=0x1){socket[_0x3733('0x7f')](_0x3733('0x80'),{'UserId':Number(_0x572fa1['body'][_0x3733('0x82')][_0x22565d]),'VoiceQueueId':Number(_0x572fa1[_0x3733('0x55')]['id'])});}return _0x55987e;});}})[_0x3733('0x2b')](function(_0x344ddb){_0x306a07=_0x344ddb||[];if(_0x357669){return db['User'][_0x3733('0x68')]({'where':{'id':_0x572fa1['body'][_0x3733('0x82')]},'attributes':['id','name',_0x3733('0x72'),_0x3733('0x73'),_0x3733('0x74')],'raw':!![]});}})[_0x3733('0x2b')](function(_0x3960af){if(!_[_0x3733('0x95')](_0x3960af)){var _0x5e09ba=[];for(var _0x4d8757=0x0;_0x4d8757<_0x3960af[_0x3733('0x45')];_0x4d8757++){if(_0x3960af[_0x4d8757][_0x3733('0x72')]){_0x5e09ba['push'](db[_0x3733('0x7c')][_0x3733('0x7a')]({'membername':_0x3960af[_0x4d8757]['name'],'UserId':_0x3960af[_0x4d8757]['id'],'queue_name':_0x357669[_0x3733('0x35')],'VoiceQueueId':_0x357669['id'],'interface':_[_0x3733('0x7d')](_0x3960af[_0x4d8757][_0x3733('0x74')])?util[_0x3733('0x9b')](_0x3733('0x7e'),_0x3960af[_0x4d8757][_0x3733('0x35')]):_0x3960af[_0x4d8757][_0x3733('0x74')],'paused':_0x3960af[_0x4d8757]['voicePause']||![],'penalty':_0x572fa1[_0x3733('0x58')][_0x3733('0x77')]||0x0}));}}return BPromise[_0x3733('0x91')](_0x5e09ba);}})[_0x3733('0x2b')](function(){return _0x306a07;})['then'](respondWithResult(_0x108ce3,null))['catch'](handleError(_0x108ce3,null));};exports[_0x3733('0x96')]=function(_0x2d3a9c,_0x37c369,_0x1830c4){return db[_0x3733('0x3c')][_0x3733('0x33')]({'where':{'id':_0x2d3a9c[_0x3733('0x55')]['id']}})[_0x3733('0x2b')](handleEntityNotFound(_0x37c369,null))[_0x3733('0x2b')](function(_0x42bfb9){if(_0x42bfb9){return _0x42bfb9[_0x3733('0x96')](_0x2d3a9c[_0x3733('0x41')][_0x3733('0x82')])[_0x3733('0x2b')](function(){if(_[_0x3733('0x9c')](_0x2d3a9c[_0x3733('0x41')][_0x3733('0x82')])){for(var _0x3f63f4=0x0;_0x3f63f4<_0x2d3a9c[_0x3733('0x41')][_0x3733('0x82')]['length'];_0x3f63f4+=0x1){socket[_0x3733('0x7f')](_0x3733('0x97'),{'UserId':Number(_0x2d3a9c[_0x3733('0x41')]['ids'][_0x3f63f4]),'VoiceQueueId':Number(_0x2d3a9c[_0x3733('0x55')]['id'])});}}else{socket[_0x3733('0x7f')]('userVoiceQueue:remove',{'UserId':Number(_0x2d3a9c['query'][_0x3733('0x82')]),'VoiceQueueId':Number(_0x2d3a9c[_0x3733('0x55')]['id'])});}});}})['then'](function(_0x3d5119){return db[_0x3733('0x7c')][_0x3733('0x2c')]({'where':{'VoiceQueueId':_0x2d3a9c[_0x3733('0x55')]['id'],'UserId':_0x2d3a9c['query']['ids']}})[_0x3733('0x2b')](function(){return _0x3d5119;});})['then'](respondWithStatusCode(_0x37c369,null))[_0x3733('0x53')](handleError(_0x37c369,null));};exports[_0x3733('0x9d')]=function(_0x37f7af,_0x2e86e9,_0x5c0030){var _0x3829d8={};var _0x894729={};var _0x4e0706;var _0x546de2;return db[_0x3733('0x3c')]['findOne']({'where':{'id':_0x37f7af['params']['id']}})['then'](handleEntityNotFound(_0x2e86e9,null))['then'](function(_0x1698c8){if(_0x1698c8){_0x4e0706=_0x1698c8;_0x894729[_0x3733('0x40')]=_[_0x3733('0x42')](db[_0x3733('0x83')][_0x3733('0x3d')]);_0x894729['query']=_['keys'](_0x37f7af[_0x3733('0x41')]);_0x894729[_0x3733('0x4b')]=_[_0x3733('0x43')](_0x894729[_0x3733('0x40')],_0x894729[_0x3733('0x41')]);_0x3829d8[_0x3733('0x44')]=_['intersection'](_0x894729[_0x3733('0x40')],qs[_0x3733('0x56')](_0x37f7af[_0x3733('0x41')][_0x3733('0x56')]));_0x3829d8[_0x3733('0x44')]=_0x3829d8[_0x3733('0x44')]['length']?_0x3829d8['attributes']:_0x894729[_0x3733('0x40')];_0x3829d8[_0x3733('0x66')]=qs[_0x3733('0x48')](_0x37f7af['query'][_0x3733('0x48')]);_0x3829d8['where']=qs[_0x3733('0x4b')](_[_0x3733('0x4a')](_0x37f7af[_0x3733('0x41')],_0x894729[_0x3733('0x4b')]));if(_0x37f7af[_0x3733('0x41')][_0x3733('0x4c')]){_0x3829d8[_0x3733('0x49')]=_[_0x3733('0x4d')](_0x3829d8[_0x3733('0x49')],{'$or':_['map'](_0x3829d8['attributes'],function(_0x2fdb04){var _0x242f9d={};_0x242f9d[_0x2fdb04]={'$like':'%'+_0x37f7af[_0x3733('0x41')]['filter']+'%'};return _0x242f9d;})});}_0x3829d8=_['merge']({},_0x3829d8,_0x37f7af[_0x3733('0x4f')]);return _0x4e0706[_0x3733('0x9d')](_0x3829d8);}})[_0x3733('0x2b')](function(_0x2bff58){if(_0x2bff58){_0x546de2=_0x2bff58['length'];if(!_0x37f7af[_0x3733('0x41')][_0x3733('0x46')](_0x3733('0x47'))){_0x3829d8['limit']=qs['limit'](_0x37f7af[_0x3733('0x41')][_0x3733('0x25')]);_0x3829d8[_0x3733('0x23')]=qs['offset'](_0x37f7af[_0x3733('0x41')][_0x3733('0x23')]);}return _0x4e0706['getAgents'](_0x3829d8);}})[_0x3733('0x2b')](function(_0x4b01e1){if(_0x4b01e1){return _0x4b01e1?{'count':_0x546de2,'rows':_0x4b01e1}:null;}})[_0x3733('0x2b')](respondWithResult(_0x2e86e9,null))[_0x3733('0x53')](handleError(_0x2e86e9,null));};exports[_0x3733('0x9e')]=function(_0x3cc3eb,_0x33bac5,_0x43fa98){var _0x4c32aa={};var _0x4a0def={};var _0x898e7d;var _0x1737d4;return db[_0x3733('0x3c')][_0x3733('0x6a')]({'where':{'id':_0x3cc3eb[_0x3733('0x55')]['id']}})[_0x3733('0x2b')](handleEntityNotFound(_0x33bac5,null))[_0x3733('0x2b')](function(_0x420b72){if(_0x420b72){_0x898e7d=_0x420b72;_0x4a0def['model']=_[_0x3733('0x42')](db['UserVoiceQueueRt'][_0x3733('0x3d')]);_0x4a0def['query']=_['keys'](_0x3cc3eb[_0x3733('0x41')]);_0x4a0def['filters']=_[_0x3733('0x43')](_0x4a0def[_0x3733('0x40')],_0x4a0def[_0x3733('0x41')]);_0x4c32aa[_0x3733('0x44')]=_[_0x3733('0x43')](_0x4a0def[_0x3733('0x40')],qs['fields'](_0x3cc3eb[_0x3733('0x41')][_0x3733('0x56')]));_0x4c32aa[_0x3733('0x44')]=_0x4c32aa[_0x3733('0x44')][_0x3733('0x45')]?_0x4c32aa[_0x3733('0x44')]:_0x4a0def['model'];_0x4c32aa[_0x3733('0x66')]=qs[_0x3733('0x48')](_0x3cc3eb['query']['sort']);_0x4c32aa[_0x3733('0x49')]=qs[_0x3733('0x4b')](_['pick'](_0x3cc3eb[_0x3733('0x41')],_0x4a0def[_0x3733('0x4b')]));if(_0x3cc3eb[_0x3733('0x41')]['filter']){_0x4c32aa[_0x3733('0x49')]=_['merge'](_0x4c32aa[_0x3733('0x49')],{'$or':_['map'](_0x4c32aa[_0x3733('0x44')],function(_0x2b2608){var _0x247c4e={};_0x247c4e[_0x2b2608]={'$like':'%'+_0x3cc3eb[_0x3733('0x41')][_0x3733('0x4c')]+'%'};return _0x247c4e;})});}_0x4c32aa=_[_0x3733('0x4d')]({},_0x4c32aa,_0x3cc3eb[_0x3733('0x4f')]);return _0x898e7d[_0x3733('0x9e')](_0x4c32aa);}})[_0x3733('0x2b')](function(_0x27909c){if(_0x27909c){_0x1737d4=_0x27909c['length'];if(!_0x3cc3eb[_0x3733('0x41')][_0x3733('0x46')](_0x3733('0x47'))){_0x4c32aa[_0x3733('0x25')]=qs[_0x3733('0x25')](_0x3cc3eb[_0x3733('0x41')][_0x3733('0x25')]);_0x4c32aa[_0x3733('0x23')]=qs[_0x3733('0x23')](_0x3cc3eb[_0x3733('0x41')][_0x3733('0x23')]);}return _0x898e7d['getMembers'](_0x4c32aa);}})[_0x3733('0x2b')](function(_0x10c376){return _0x10c376?{'count':_0x1737d4,'rows':_0x10c376}:null;})[_0x3733('0x2b')](respondWithResult(_0x33bac5,null))[_0x3733('0x53')](handleError(_0x33bac5,null));};exports['getLists']=function(_0x2f3757,_0x37348c,_0x275476){var _0x18f01a={};var _0xe871d5={};var _0x400f94;var _0x192352;return db['VoiceQueue'][_0x3733('0x6a')]({'where':{'id':_0x2f3757[_0x3733('0x55')]['id']}})[_0x3733('0x2b')](handleEntityNotFound(_0x37348c,null))[_0x3733('0x2b')](function(_0x443911){if(_0x443911){_0x400f94=_0x443911;_0xe871d5['model']=_[_0x3733('0x42')](db[_0x3733('0x9f')][_0x3733('0x3d')]);_0xe871d5[_0x3733('0x41')]=_[_0x3733('0x42')](_0x2f3757[_0x3733('0x41')]);_0xe871d5[_0x3733('0x4b')]=_[_0x3733('0x43')](_0xe871d5[_0x3733('0x40')],_0xe871d5[_0x3733('0x41')]);_0x18f01a[_0x3733('0x44')]=_[_0x3733('0x43')](_0xe871d5[_0x3733('0x40')],qs[_0x3733('0x56')](_0x2f3757[_0x3733('0x41')][_0x3733('0x56')]));_0x18f01a[_0x3733('0x44')]=_0x18f01a[_0x3733('0x44')][_0x3733('0x45')]?_0x18f01a[_0x3733('0x44')]:_0xe871d5[_0x3733('0x40')];_0x18f01a['order']=qs[_0x3733('0x48')](_0x2f3757['query'][_0x3733('0x48')]);_0x18f01a[_0x3733('0x49')]=qs['filters'](_['pick'](_0x2f3757['query'],_0xe871d5[_0x3733('0x4b')]));if(_0x2f3757[_0x3733('0x41')]['filter']){_0x18f01a[_0x3733('0x49')]=_[_0x3733('0x4d')](_0x18f01a['where'],{'$or':_[_0x3733('0x3b')](_0x18f01a[_0x3733('0x44')],function(_0x490112){var _0x11422f={};_0x11422f[_0x490112]={'$like':'%'+_0x2f3757[_0x3733('0x41')][_0x3733('0x4c')]+'%'};return _0x11422f;})});}_0x18f01a=_[_0x3733('0x4d')]({},_0x18f01a,_0x2f3757[_0x3733('0x4f')]);return _0x400f94[_0x3733('0xa0')](_0x18f01a);}})[_0x3733('0x2b')](function(_0x2b946e){if(_0x2b946e){_0x192352=_0x2b946e[_0x3733('0x45')];if(!_0x2f3757[_0x3733('0x41')]['hasOwnProperty'](_0x3733('0x47'))){_0x18f01a[_0x3733('0x25')]=qs[_0x3733('0x25')](_0x2f3757[_0x3733('0x41')][_0x3733('0x25')]);_0x18f01a[_0x3733('0x23')]=qs[_0x3733('0x23')](_0x2f3757[_0x3733('0x41')][_0x3733('0x23')]);}return _0x400f94[_0x3733('0xa0')](_0x18f01a);}})[_0x3733('0x2b')](function(_0x2e47a0){if(_0x2e47a0){return _0x2e47a0?{'count':_0x192352,'rows':_0x2e47a0}:null;}})[_0x3733('0x2b')](respondWithResult(_0x37348c,null))[_0x3733('0x53')](handleError(_0x37348c,null));};exports['addLists']=function(_0x4befc1,_0x1ce3cf,_0x41abe4){var _0x573d3f,_0x23667a;return db[_0x3733('0x3c')]['find']({'where':{'id':_0x4befc1[_0x3733('0x55')]['id']}})['then'](handleEntityNotFound(_0x1ce3cf,null))[_0x3733('0x2b')](function(_0x4c8c1a){if(_0x4c8c1a){_0x23667a=_0x4c8c1a;return _0x4c8c1a[_0x3733('0xa1')](_0x4befc1[_0x3733('0x58')][_0x3733('0x82')],_[_0x3733('0x99')](_0x4befc1[_0x3733('0x58')],['ids','id'])||{});}return null;})[_0x3733('0x9a')](function(_0x24314b){var _0x4f1ab4;_0x573d3f=_0x24314b||[];var _0x1a54fa=[];if(_0x24314b){for(var _0x50d4a7=0x0;_0x50d4a7<_0x24314b[_0x3733('0x45')];_0x50d4a7+=0x1){var _0x49af58=_0x24314b[_0x50d4a7][_0x3733('0x2d')]({'plain':!![]});_0x23667a['dialCheckDuplicateType']=_0x4befc1['body']['dialCheckDuplicateType']?_0x4befc1['body'][_0x3733('0xa2')]:_0x23667a[_0x3733('0xa2')];switch(_0x23667a[_0x3733('0xa2')]){case _0x3733('0xa3'):_0x4f1ab4=squel[_0x3733('0xa4')]()[_0x3733('0xa5')](_0x3733('0xa6'))[_0x3733('0xa7')]([_0x3733('0xa8'),'scheduledAt',_0x3733('0xa9'),_0x3733('0xaa'),_0x3733('0x67'),_0x3733('0x62'),_0x3733('0x63')],squel[_0x3733('0x84')]()[_0x3733('0x85')]('phone',_0x3733('0xa8'))[_0x3733('0x85')](_0x3733('0xab'),_0x3733('0xac'))[_0x3733('0x85')]('id','ContactId')[_0x3733('0x85')](_0x49af58[_0x3733('0xad')][_0x3733('0x8c')](),'ListId')[_0x3733('0x85')](_0x4befc1[_0x3733('0x55')]['id'][_0x3733('0x8c')](),'VoiceQueueId')[_0x3733('0x85')]('NOW()',_0x3733('0x62'))[_0x3733('0x85')](_0x3733('0xab'),_0x3733('0x63'))[_0x3733('0x86')]('cm_contacts')[_0x3733('0x49')](_0x3733('0xae'))[_0x3733('0x49')](_0x3733('0xaf'),_0x49af58['CmListId'][_0x3733('0x8c')]())['where'](_0x3733('0xb0'))[_0x3733('0x49')](_0x3733('0xb1'),squel[_0x3733('0x84')]()[_0x3733('0x85')]('COALESCE(calleridnum,\x27\x27)')[_0x3733('0x86')]('cm_hopper_final')[_0x3733('0x49')]('VoiceQueueId\x20=\x20?',_0x4befc1[_0x3733('0x55')]['id'][_0x3733('0x8c')]()))[_0x3733('0x49')](_0x3733('0xb1'),squel['select']()[_0x3733('0x85')](_0x3733('0xb2'))[_0x3733('0x86')](_0x3733('0xa6'))[_0x3733('0x49')](_0x3733('0x8a'),_0x4befc1[_0x3733('0x55')]['id'][_0x3733('0x8c')]())))[_0x3733('0x8c')]();break;case _0x3733('0xb3'):_0x4f1ab4=squel[_0x3733('0xa4')]()[_0x3733('0xa5')](_0x3733('0xa6'))[_0x3733('0xa7')](['phone',_0x3733('0xac'),'ContactId',_0x3733('0xaa'),_0x3733('0x67'),_0x3733('0x62'),_0x3733('0x63')],squel['select']()[_0x3733('0x85')](_0x3733('0xa8'),'phone')[_0x3733('0x85')](_0x3733('0xab'),_0x3733('0xac'))[_0x3733('0x85')]('id',_0x3733('0xa9'))[_0x3733('0x85')](_0x49af58[_0x3733('0xad')][_0x3733('0x8c')](),'ListId')['field'](_0x4befc1[_0x3733('0x55')]['id']['toString'](),_0x3733('0x67'))[_0x3733('0x85')]('NOW()',_0x3733('0x62'))[_0x3733('0x85')]('NOW()',_0x3733('0x63'))[_0x3733('0x86')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0x3733('0x49')]('ListId\x20=\x20?',_0x49af58['CmListId'][_0x3733('0x8c')]())['where'](_0x3733('0xb0'))[_0x3733('0x49')](_0x3733('0xb1'),squel[_0x3733('0x84')]()['field'](_0x3733('0xb2'))[_0x3733('0x86')]('cm_hopper')['where'](_0x3733('0x8a'),_0x4befc1[_0x3733('0x55')]['id'][_0x3733('0x8c')]())))[_0x3733('0x8c')]();break;default:_0x4f1ab4=squel['insert']()[_0x3733('0xa5')]('cm_hopper')[_0x3733('0xa7')]([_0x3733('0xa8'),_0x3733('0xac'),'ContactId',_0x3733('0xaa'),_0x3733('0x67'),_0x3733('0x62'),_0x3733('0x63')],squel[_0x3733('0x84')]()[_0x3733('0x85')](_0x3733('0xa8'),_0x3733('0xa8'))[_0x3733('0x85')](_0x3733('0xab'),_0x3733('0xac'))[_0x3733('0x85')]('id',_0x3733('0xa9'))['field'](_0x49af58[_0x3733('0xad')][_0x3733('0x8c')](),'ListId')[_0x3733('0x85')](_0x4befc1['params']['id'][_0x3733('0x8c')](),'VoiceQueueId')[_0x3733('0x85')](_0x3733('0xab'),_0x3733('0x62'))[_0x3733('0x85')]('NOW()',_0x3733('0x63'))[_0x3733('0x86')]('cm_contacts')[_0x3733('0x49')](_0x3733('0xae'))['where'](_0x3733('0xaf'),_0x49af58[_0x3733('0xad')][_0x3733('0x8c')]())[_0x3733('0x49')]('phone\x20IS\x20NOT\x20NULL'))[_0x3733('0x8c')]();}_0x1a54fa[_0x3733('0xb4')](db[_0x3733('0x78')][_0x3733('0x41')](_0x4f1ab4));}return BPromise[_0x3733('0x91')](_0x1a54fa);}})[_0x3733('0x2b')](function(){return _0x573d3f;})[_0x3733('0x2b')](respondWithResult(_0x1ce3cf,null))['catch'](handleError(_0x1ce3cf,null));};exports[_0x3733('0xb5')]=function(_0x407bbb,_0x5e2415,_0x518399){return db['VoiceQueue']['find']({'where':{'id':_0x407bbb[_0x3733('0x55')]['id']}})['then'](handleEntityNotFound(_0x5e2415,null))[_0x3733('0x2b')](function(_0x4191d2){if(_0x4191d2){return _0x4191d2[_0x3733('0xb5')](_0x407bbb[_0x3733('0x41')][_0x3733('0x82')]);}})[_0x3733('0x2b')](function(_0x570cc6){if(_0x570cc6){return db[_0x3733('0x65')]['destroy']({'where':{'ListId':_0x407bbb[_0x3733('0x41')][_0x3733('0x82')],'VoiceQueueId':_0x407bbb[_0x3733('0x55')]['id']}})[_0x3733('0x2b')](function(){return _0x570cc6;});}})[_0x3733('0x2b')](respondWithStatusCode(_0x5e2415,null))[_0x3733('0x53')](handleError(_0x5e2415,null));};exports[_0x3733('0xb6')]=function(_0x32212b,_0x21b80f,_0x52b214){var _0x27865c={};var _0x4e4ca8={};var _0x33276e;var _0x39da3a;return db[_0x3733('0x3c')][_0x3733('0x6a')]({'where':{'id':_0x32212b[_0x3733('0x55')]['id']}})[_0x3733('0x2b')](handleEntityNotFound(_0x21b80f,null))['then'](function(_0x4da78c){if(_0x4da78c){_0x33276e=_0x4da78c;_0x4e4ca8[_0x3733('0x40')]=_['keys'](db['CmList'][_0x3733('0x3d')]);_0x4e4ca8[_0x3733('0x41')]=_['keys'](_0x32212b['query']);_0x4e4ca8[_0x3733('0x4b')]=_[_0x3733('0x43')](_0x4e4ca8[_0x3733('0x40')],_0x4e4ca8['query']);_0x27865c[_0x3733('0x44')]=_[_0x3733('0x43')](_0x4e4ca8['model'],qs[_0x3733('0x56')](_0x32212b['query']['fields']));_0x27865c[_0x3733('0x44')]=_0x27865c[_0x3733('0x44')][_0x3733('0x45')]?_0x27865c['attributes']:_0x4e4ca8[_0x3733('0x40')];_0x27865c[_0x3733('0x66')]=qs[_0x3733('0x48')](_0x32212b[_0x3733('0x41')][_0x3733('0x48')]);_0x27865c[_0x3733('0x49')]=qs[_0x3733('0x4b')](_[_0x3733('0x4a')](_0x32212b['query'],_0x4e4ca8[_0x3733('0x4b')]));if(_0x32212b['query'][_0x3733('0x4c')]){_0x27865c[_0x3733('0x49')]=_[_0x3733('0x4d')](_0x27865c[_0x3733('0x49')],{'$or':_[_0x3733('0x3b')](_0x27865c['attributes'],function(_0x5699d0){var _0x32db64={};_0x32db64[_0x5699d0]={'$like':'%'+_0x32212b[_0x3733('0x41')][_0x3733('0x4c')]+'%'};return _0x32db64;})});}_0x27865c=_[_0x3733('0x4d')]({},_0x27865c,_0x32212b[_0x3733('0x4f')]);return _0x33276e[_0x3733('0xb6')](_0x27865c);}})[_0x3733('0x2b')](function(_0x718fe5){if(_0x718fe5){_0x39da3a=_0x718fe5['length'];if(!_0x32212b['query'][_0x3733('0x46')](_0x3733('0x47'))){_0x27865c[_0x3733('0x25')]=qs[_0x3733('0x25')](_0x32212b[_0x3733('0x41')][_0x3733('0x25')]);_0x27865c[_0x3733('0x23')]=qs[_0x3733('0x23')](_0x32212b['query'][_0x3733('0x23')]);}return _0x33276e[_0x3733('0xb6')](_0x27865c);}})[_0x3733('0x2b')](function(_0x10c20e){if(_0x10c20e){return _0x10c20e?{'count':_0x39da3a,'rows':_0x10c20e}:null;}})[_0x3733('0x2b')](respondWithResult(_0x21b80f,null))[_0x3733('0x53')](handleError(_0x21b80f,null));};exports[_0x3733('0xb7')]=function(_0x7d3ad8,_0x23ad4d,_0x55d8e9){var _0x1d5473,_0x6b577d;return db[_0x3733('0x3c')][_0x3733('0x33')]({'where':{'id':_0x7d3ad8[_0x3733('0x55')]['id']}})[_0x3733('0x2b')](handleEntityNotFound(_0x23ad4d,null))[_0x3733('0x2b')](function(_0xb0fdc3){if(_0xb0fdc3){_0x6b577d=_0xb0fdc3;return _0xb0fdc3[_0x3733('0xb7')](_0x7d3ad8[_0x3733('0x58')]['ids'],_[_0x3733('0x99')](_0x7d3ad8[_0x3733('0x58')],[_0x3733('0x82'),'id'])||{});}return null;})['spread'](function(_0x2ba292){var _0x494cea;_0x1d5473=_0x2ba292||[];var _0x541601=[];if(_0x2ba292){for(var _0x840e35=0x0;_0x840e35<_0x2ba292[_0x3733('0x45')];_0x840e35+=0x1){var _0x343293=_0x2ba292[_0x840e35]['get']({'plain':!![]});_0x494cea=squel[_0x3733('0xa4')]()['into'](_0x3733('0xb8'))[_0x3733('0xa7')]([_0x3733('0xa8'),_0x3733('0xa9'),_0x3733('0xaa'),'VoiceQueueId',_0x3733('0x62'),'updatedAt'],squel[_0x3733('0x84')]()[_0x3733('0x85')](_0x3733('0xa8'),_0x3733('0xa8'))[_0x3733('0x85')]('id','ContactId')['field'](_0x343293['CmListId'][_0x3733('0x8c')](),'ListId')[_0x3733('0x85')](_0x7d3ad8[_0x3733('0x55')]['id'][_0x3733('0x8c')](),'VoiceQueueId')[_0x3733('0x85')](_0x3733('0xab'),_0x3733('0x62'))['field'](_0x3733('0xab'),_0x3733('0x63'))[_0x3733('0x86')]('cm_contacts')['where'](_0x3733('0xae'))[_0x3733('0x49')]('ListId\x20=\x20?',_0x343293[_0x3733('0xad')][_0x3733('0x8c')]())['where'](_0x3733('0xb0')))[_0x3733('0x8c')]();_0x541601['push'](db[_0x3733('0x78')][_0x3733('0x41')](_0x494cea));}return BPromise['all'](_0x541601);}})[_0x3733('0x2b')](function(){return _0x1d5473;})[_0x3733('0x2b')](respondWithResult(_0x23ad4d,null))[_0x3733('0x53')](handleError(_0x23ad4d,null));};exports[_0x3733('0xb9')]=function(_0x1cf151,_0x1095b6,_0x24d541){return db[_0x3733('0x3c')][_0x3733('0x33')]({'where':{'id':_0x1cf151[_0x3733('0x55')]['id']}})['then'](handleEntityNotFound(_0x1095b6,null))[_0x3733('0x2b')](function(_0x3f2705){if(_0x3f2705){return _0x3f2705[_0x3733('0xb9')](_0x1cf151[_0x3733('0x41')][_0x3733('0x82')]);}})[_0x3733('0x2b')](function(_0x67bae9){if(_0x67bae9){return db[_0x3733('0x6d')]['destroy']({'where':{'ListId':_0x1cf151[_0x3733('0x41')][_0x3733('0x82')],'VoiceQueueId':_0x1cf151['params']['id']}})[_0x3733('0x2b')](function(){return _0x67bae9;});}})[_0x3733('0x2b')](respondWithStatusCode(_0x1095b6,null))[_0x3733('0x53')](handleError(_0x1095b6,null));};
\ No newline at end of file
index 330ac3b..ff9013f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c63=['hasOwnProperty','hook','exports','events','../../mysqldb','VoiceQueue','save','update','remove','emit'];(function(_0x974c0,_0x5440b9){var _0xd78750=function(_0x4c5222){while(--_0x4c5222){_0x974c0['push'](_0x974c0['shift']());}};_0xd78750(++_0x5440b9);}(_0x0c63,0x14d));var _0x30c6=function(_0x2792a6,_0xa68904){_0x2792a6=_0x2792a6-0x0;var _0x2797a4=_0x0c63[_0x2792a6];return _0x2797a4;};'use strict';var EventEmitter=require(_0x30c6('0x0'));var VoiceQueue=require(_0x30c6('0x1'))['db'][_0x30c6('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x30c6('0x3'),'afterUpdate':_0x30c6('0x4'),'afterDestroy':_0x30c6('0x5')};function emitEvent(_0x193f7f){return function(_0x80d238,_0x53185f,_0x192ce5){VoiceQueueEvents[_0x30c6('0x6')](_0x193f7f+':'+_0x80d238['id'],_0x80d238);VoiceQueueEvents[_0x30c6('0x6')](_0x193f7f,_0x80d238);_0x192ce5(null);};}for(var e in events){if(events[_0x30c6('0x7')](e)){var event=events[e];VoiceQueue[_0x30c6('0x8')](e,emitEvent(event));}}module[_0x30c6('0x9')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x7fb3=['setMaxListeners','remove','emit','hasOwnProperty','hook','events','../../mysqldb','VoiceQueue'];(function(_0xcce13c,_0x26b4e6){var _0x26968c=function(_0x5bff46){while(--_0x5bff46){_0xcce13c['push'](_0xcce13c['shift']());}};_0x26968c(++_0x26b4e6);}(_0x7fb3,0x185));var _0x37fb=function(_0x3677fc,_0x187168){_0x3677fc=_0x3677fc-0x0;var _0x183fc3=_0x7fb3[_0x3677fc];return _0x183fc3;};'use strict';var EventEmitter=require(_0x37fb('0x0'));var VoiceQueue=require(_0x37fb('0x1'))['db'][_0x37fb('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x37fb('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x37fb('0x4')};function emitEvent(_0x1b9b59){return function(_0x2c9e80,_0x24b04a,_0x56ba60){VoiceQueueEvents['emit'](_0x1b9b59+':'+_0x2c9e80['id'],_0x2c9e80);VoiceQueueEvents[_0x37fb('0x5')](_0x1b9b59,_0x2c9e80);_0x56ba60(null);};}for(var e in events){if(events[_0x37fb('0x6')](e)){var event=events[e];VoiceQueue[_0x37fb('0x7')](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
index afe7c64..a47b922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['voice_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports','VoiceQueue'];(function(_0x5b441a,_0x787827){var _0xa119cc=function(_0x520ebb){while(--_0x520ebb){_0x5b441a['push'](_0x5b441a['shift']());}};_0xa119cc(++_0x787827);}(_0x34e8,0x12c));var _0x834e=function(_0x25f411,_0x516c77){_0x25f411=_0x25f411-0x0;var _0x2aeb36=_0x34e8[_0x25f411];return _0x2aeb36;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./voiceQueue.attributes','exports','define','VoiceQueue','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x4ed656,_0x14501d){var _0x4ebf31=function(_0x42213c){while(--_0x42213c){_0x4ed656['push'](_0x4ed656['shift']());}};_0x4ebf31(++_0x14501d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xa9e0[_0x4bfac3];return _0x15f0f2;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bca68c5..a83f0e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde4f=['error','code','VoiceQueue,\x20%s,\x20%s','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','limit','include','map','model','attributes','ShowVoiceQueue','find','where','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','request','then','info','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x56fe98,_0x43dc16){var _0x212f4f=function(_0xc3427d){while(--_0xc3427d){_0x56fe98['push'](_0x56fe98['shift']());}};_0x212f4f(++_0x43dc16);}(_0xde4f,0x1a3));var _0xfde4=function(_0x115342,_0x40f412){_0x115342=_0x115342-0x0;var _0x3194c8=_0xde4f[_0x115342];return _0x3194c8;};'use strict';var _=require(_0xfde4('0x0'));var util=require(_0xfde4('0x1'));var moment=require(_0xfde4('0x2'));var BPromise=require(_0xfde4('0x3'));var rs=require(_0xfde4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xfde4('0x5'));var logger=require(_0xfde4('0x6'))(_0xfde4('0x7'));var config=require(_0xfde4('0x8'));var jayson=require(_0xfde4('0x9'));var client=jayson[_0xfde4('0xa')][_0xfde4('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xfde4('0xc')],{'host':_0xfde4('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfde4('0xc')]));require('./voiceQueue.socket')['register'](socket);function respondWithRpcPromise(_0x3df2aa,_0x527052,_0x926be7){return new BPromise(function(_0x7ab82b,_0x3444ee){return client[_0xfde4('0xe')](_0x3df2aa,_0x926be7)[_0xfde4('0xf')](function(_0x3c6db1){logger[_0xfde4('0x10')]('VoiceQueue,\x20%s,\x20%s',_0x527052,_0xfde4('0x11'));logger[_0xfde4('0x12')](_0xfde4('0x13'),_0x527052,_0xfde4('0x11'),JSON[_0xfde4('0x14')](_0x3c6db1));if(_0x3c6db1[_0xfde4('0x15')]){if(_0x3c6db1[_0xfde4('0x15')][_0xfde4('0x16')]===0x1f4){logger[_0xfde4('0x15')](_0xfde4('0x17'),_0x527052,_0x3c6db1['error'][_0xfde4('0x18')]);return _0x3444ee(_0x3c6db1['error'][_0xfde4('0x18')]);}logger['error'](_0xfde4('0x17'),_0x527052,_0x3c6db1[_0xfde4('0x15')][_0xfde4('0x18')]);return _0x7ab82b(_0x3c6db1[_0xfde4('0x15')][_0xfde4('0x18')]);}else{logger[_0xfde4('0x10')](_0xfde4('0x17'),_0x527052,_0xfde4('0x11'));_0x7ab82b(_0x3c6db1[_0xfde4('0x19')][_0xfde4('0x18')]);}})[_0xfde4('0x1a')](function(_0x338e31){logger[_0xfde4('0x15')](_0xfde4('0x17'),_0x527052,_0x338e31);_0x3444ee(_0x338e31);});});}exports[_0xfde4('0x1b')]=function(_0x2c5d96){var _0x557915=this;return new Promise(function(_0x42f3e0,_0x10e054){return db[_0xfde4('0x1c')][_0xfde4('0x1d')]({'raw':_0x2c5d96['options']?_0x2c5d96[_0xfde4('0x1e')][_0xfde4('0x1f')]===undefined?!![]:![]:!![],'where':_0x2c5d96['options']?_0x2c5d96[_0xfde4('0x1e')]['where']||null:null,'attributes':_0x2c5d96[_0xfde4('0x1e')]?_0x2c5d96[_0xfde4('0x1e')]['attributes']||null:null,'limit':_0x2c5d96[_0xfde4('0x1e')]?_0x2c5d96[_0xfde4('0x1e')][_0xfde4('0x20')]||null:null,'include':_0x2c5d96[_0xfde4('0x1e')]?_0x2c5d96['options'][_0xfde4('0x21')]?_[_0xfde4('0x22')](_0x2c5d96['options'][_0xfde4('0x21')],function(_0x43ea8c){return{'model':db[_0x43ea8c[_0xfde4('0x23')]],'as':_0x43ea8c['as'],'attributes':_0x43ea8c[_0xfde4('0x24')],'include':_0x43ea8c[_0xfde4('0x21')]?_[_0xfde4('0x22')](_0x43ea8c['include'],function(_0x2fdfc7){return{'model':db[_0x2fdfc7[_0xfde4('0x23')]],'as':_0x2fdfc7['as'],'attributes':_0x2fdfc7[_0xfde4('0x24')],'include':_0x2fdfc7[_0xfde4('0x21')]?_[_0xfde4('0x22')](_0x2fdfc7['include'],function(_0x103ae1){return{'model':db[_0x103ae1[_0xfde4('0x23')]],'as':_0x103ae1['as'],'attributes':_0x103ae1[_0xfde4('0x24')]};}):[]};}):[]};}):[]:[]})[_0xfde4('0xf')](function(_0x3bb9e6){logger[_0xfde4('0x10')](_0xfde4('0x1b'),_0x2c5d96);logger[_0xfde4('0x12')](_0xfde4('0x1b'),_0x2c5d96,JSON[_0xfde4('0x14')](_0x3bb9e6));_0x42f3e0(_0x3bb9e6);})['catch'](function(_0x1e3843){logger['error'](_0xfde4('0x1b'),_0x1e3843['message'],_0x2c5d96);_0x10e054(_0x557915['error'](0x1f4,_0x1e3843[_0xfde4('0x18')]));});});};exports[_0xfde4('0x25')]=function(_0x1f0706){var _0x317f9d=this;return new Promise(function(_0x16fcab,_0x16c939){return db[_0xfde4('0x1c')][_0xfde4('0x26')]({'raw':_0x1f0706[_0xfde4('0x1e')]?_0x1f0706[_0xfde4('0x1e')][_0xfde4('0x1f')]===undefined?!![]:![]:!![],'where':_0x1f0706['options']?_0x1f0706[_0xfde4('0x1e')][_0xfde4('0x27')]||null:null,'attributes':_0x1f0706['options']?_0x1f0706[_0xfde4('0x1e')][_0xfde4('0x24')]||null:null,'include':_0x1f0706[_0xfde4('0x1e')]?_0x1f0706['options'][_0xfde4('0x21')]?_[_0xfde4('0x22')](_0x1f0706[_0xfde4('0x1e')][_0xfde4('0x21')],function(_0x39085b){return{'model':db[_0x39085b['model']],'as':_0x39085b['as'],'attributes':_0x39085b[_0xfde4('0x24')],'include':_0x39085b[_0xfde4('0x21')]?_['map'](_0x39085b[_0xfde4('0x21')],function(_0x38c354){return{'model':db[_0x38c354[_0xfde4('0x23')]],'as':_0x38c354['as'],'attributes':_0x38c354[_0xfde4('0x24')],'include':_0x38c354[_0xfde4('0x21')]?_[_0xfde4('0x22')](_0x38c354['include'],function(_0x16777c){return{'model':db[_0x16777c[_0xfde4('0x23')]],'as':_0x16777c['as'],'attributes':_0x16777c['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b88c5){logger[_0xfde4('0x10')]('ShowVoiceQueue',_0x1f0706);logger[_0xfde4('0x12')](_0xfde4('0x25'),_0x1f0706,JSON[_0xfde4('0x14')](_0x4b88c5));_0x16fcab(_0x4b88c5);})[_0xfde4('0x1a')](function(_0x22a465){logger[_0xfde4('0x15')](_0xfde4('0x25'),_0x22a465['message'],_0x1f0706);_0x16c939(_0x317f9d[_0xfde4('0x15')](0x1f4,_0x22a465[_0xfde4('0x18')]));});});};
\ No newline at end of file
+var _0x29f8=['model','ShowVoiceQueue','stringify','lodash','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','socket.io-emitter','redis','./voiceQueue.socket','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','limit','map','include'];(function(_0x113db2,_0x4b2085){var _0x3af3d8=function(_0x45f311){while(--_0x45f311){_0x113db2['push'](_0x113db2['shift']());}};_0x3af3d8(++_0x4b2085);}(_0x29f8,0xe7));var _0x829f=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0x29f8[_0x220dbb];return _0x2b77de;};'use strict';var _=require(_0x829f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x829f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x829f('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x829f('0x3'));var logger=require(_0x829f('0x4'))(_0x829f('0x5'));var config=require(_0x829f('0x6'));var jayson=require(_0x829f('0x7'));var client=jayson[_0x829f('0x8')][_0x829f('0x9')]({'port':0x232a});config['redis']=_[_0x829f('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x829f('0xb'))(new Redis(config[_0x829f('0xc')]));require(_0x829f('0xd'))['register'](socket);function respondWithRpcPromise(_0x3a7b14,_0x573f72,_0x371ae2){return new BPromise(function(_0x5d9a24,_0x563c12){return client['request'](_0x3a7b14,_0x371ae2)[_0x829f('0xe')](function(_0x4bbebf){logger[_0x829f('0xf')](_0x829f('0x10'),_0x573f72,_0x829f('0x11'));logger[_0x829f('0x12')](_0x829f('0x13'),_0x573f72,'request\x20sent',JSON['stringify'](_0x4bbebf));if(_0x4bbebf['error']){if(_0x4bbebf[_0x829f('0x14')][_0x829f('0x15')]===0x1f4){logger[_0x829f('0x14')]('VoiceQueue,\x20%s,\x20%s',_0x573f72,_0x4bbebf[_0x829f('0x14')][_0x829f('0x16')]);return _0x563c12(_0x4bbebf[_0x829f('0x14')][_0x829f('0x16')]);}logger[_0x829f('0x14')](_0x829f('0x10'),_0x573f72,_0x4bbebf[_0x829f('0x14')]['message']);return _0x5d9a24(_0x4bbebf[_0x829f('0x14')]['message']);}else{logger[_0x829f('0xf')]('VoiceQueue,\x20%s,\x20%s',_0x573f72,_0x829f('0x11'));_0x5d9a24(_0x4bbebf[_0x829f('0x17')]['message']);}})[_0x829f('0x18')](function(_0x405a34){logger['error'](_0x829f('0x10'),_0x573f72,_0x405a34);_0x563c12(_0x405a34);});});}exports[_0x829f('0x19')]=function(_0x46f336){var _0x472477=this;return new Promise(function(_0x40e22d,_0x100924){return db[_0x829f('0x1a')][_0x829f('0x1b')]({'raw':_0x46f336[_0x829f('0x1c')]?_0x46f336['options'][_0x829f('0x1d')]===undefined?!![]:![]:!![],'where':_0x46f336['options']?_0x46f336[_0x829f('0x1c')][_0x829f('0x1e')]||null:null,'attributes':_0x46f336[_0x829f('0x1c')]?_0x46f336[_0x829f('0x1c')][_0x829f('0x1f')]||null:null,'limit':_0x46f336[_0x829f('0x1c')]?_0x46f336['options'][_0x829f('0x20')]||null:null,'include':_0x46f336[_0x829f('0x1c')]?_0x46f336[_0x829f('0x1c')]['include']?_[_0x829f('0x21')](_0x46f336[_0x829f('0x1c')][_0x829f('0x22')],function(_0x740140){return{'model':db[_0x740140[_0x829f('0x23')]],'as':_0x740140['as'],'attributes':_0x740140[_0x829f('0x1f')],'include':_0x740140['include']?_[_0x829f('0x21')](_0x740140[_0x829f('0x22')],function(_0x355d5a){return{'model':db[_0x355d5a[_0x829f('0x23')]],'as':_0x355d5a['as'],'attributes':_0x355d5a[_0x829f('0x1f')],'include':_0x355d5a[_0x829f('0x22')]?_['map'](_0x355d5a[_0x829f('0x22')],function(_0x151911){return{'model':db[_0x151911['model']],'as':_0x151911['as'],'attributes':_0x151911[_0x829f('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x829f('0xe')](function(_0x2f52dc){logger[_0x829f('0xf')]('GetVoiceQueue',_0x46f336);logger[_0x829f('0x12')](_0x829f('0x19'),_0x46f336,JSON['stringify'](_0x2f52dc));_0x40e22d(_0x2f52dc);})[_0x829f('0x18')](function(_0x4f26be){logger[_0x829f('0x14')]('GetVoiceQueue',_0x4f26be[_0x829f('0x16')],_0x46f336);_0x100924(_0x472477['error'](0x1f4,_0x4f26be[_0x829f('0x16')]));});});};exports[_0x829f('0x24')]=function(_0x523ecc){var _0x4851f4=this;return new Promise(function(_0x543187,_0x2df55d){return db[_0x829f('0x1a')]['find']({'raw':_0x523ecc[_0x829f('0x1c')]?_0x523ecc[_0x829f('0x1c')][_0x829f('0x1d')]===undefined?!![]:![]:!![],'where':_0x523ecc[_0x829f('0x1c')]?_0x523ecc['options'][_0x829f('0x1e')]||null:null,'attributes':_0x523ecc[_0x829f('0x1c')]?_0x523ecc[_0x829f('0x1c')][_0x829f('0x1f')]||null:null,'include':_0x523ecc[_0x829f('0x1c')]?_0x523ecc[_0x829f('0x1c')][_0x829f('0x22')]?_[_0x829f('0x21')](_0x523ecc[_0x829f('0x1c')]['include'],function(_0x52a44e){return{'model':db[_0x52a44e[_0x829f('0x23')]],'as':_0x52a44e['as'],'attributes':_0x52a44e[_0x829f('0x1f')],'include':_0x52a44e[_0x829f('0x22')]?_[_0x829f('0x21')](_0x52a44e[_0x829f('0x22')],function(_0x10e84c){return{'model':db[_0x10e84c[_0x829f('0x23')]],'as':_0x10e84c['as'],'attributes':_0x10e84c[_0x829f('0x1f')],'include':_0x10e84c[_0x829f('0x22')]?_[_0x829f('0x21')](_0x10e84c[_0x829f('0x22')],function(_0x4d72a0){return{'model':db[_0x4d72a0['model']],'as':_0x4d72a0['as'],'attributes':_0x4d72a0[_0x829f('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x829f('0xe')](function(_0x11be93){logger[_0x829f('0xf')](_0x829f('0x24'),_0x523ecc);logger['debug'](_0x829f('0x24'),_0x523ecc,JSON[_0x829f('0x25')](_0x11be93));_0x543187(_0x11be93);})[_0x829f('0x18')](function(_0xaa8adc){logger[_0x829f('0x14')](_0x829f('0x24'),_0xaa8adc[_0x829f('0x16')],_0x523ecc);_0x2df55d(_0x4851f4[_0x829f('0x14')](0x1f4,_0xaa8adc[_0x829f('0x16')]));});});};
\ No newline at end of file
index 425e167..3eb7d88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23ee=['remove','update','removeListener','voiceQueue:','./voiceQueue.events','save'];(function(_0x5173e7,_0xa9baa2){var _0x99370f=function(_0x452492){while(--_0x452492){_0x5173e7['push'](_0x5173e7['shift']());}};_0x99370f(++_0xa9baa2);}(_0x23ee,0x76));var _0xe23e=function(_0x3db122,_0x5e6bee){_0x3db122=_0x3db122-0x0;var _0x325b67=_0x23ee[_0x3db122];return _0x325b67;};'use strict';var VoiceQueueEvents=require(_0xe23e('0x0'));var events=[_0xe23e('0x1'),_0xe23e('0x2'),_0xe23e('0x3')];function createListener(_0x29af9d,_0x3ab471){return function(_0x565d13){_0x3ab471['emit'](_0x29af9d,_0x565d13);};}function removeListener(_0x28280a,_0x19c4f9){return function(){VoiceQueueEvents[_0xe23e('0x4')](_0x28280a,_0x19c4f9);};}exports['register']=function(_0x8a58e6){for(var _0x1779f7=0x0,_0x4435f7=events['length'];_0x1779f7<_0x4435f7;_0x1779f7++){var _0x1a878f=events[_0x1779f7];var _0x5a4ab8=createListener(_0xe23e('0x5')+_0x1a878f,_0x8a58e6);VoiceQueueEvents['on'](_0x1a878f,_0x5a4ab8);}};
\ No newline at end of file
+var _0xbe85=['save','removeListener','length','./voiceQueue.events'];(function(_0x4d674b,_0x176474){var _0x535a1f=function(_0xac7726){while(--_0xac7726){_0x4d674b['push'](_0x4d674b['shift']());}};_0x535a1f(++_0x176474);}(_0xbe85,0xf3));var _0x5be8=function(_0x172f96,_0x27d08f){_0x172f96=_0x172f96-0x0;var _0x46b07e=_0xbe85[_0x172f96];return _0x46b07e;};'use strict';var VoiceQueueEvents=require(_0x5be8('0x0'));var events=[_0x5be8('0x1'),'remove','update'];function createListener(_0x6c8b21,_0x2b42f7){return function(_0x155eff){_0x2b42f7['emit'](_0x6c8b21,_0x155eff);};}function removeListener(_0x14be27,_0x55f1eb){return function(){VoiceQueueEvents[_0x5be8('0x2')](_0x14be27,_0x55f1eb);};}exports['register']=function(_0x2e7116){for(var _0x12dc3a=0x0,_0x59b64f=events[_0x5be8('0x3')];_0x12dc3a<_0x59b64f;_0x12dc3a++){var _0x4de0e2=events[_0x12dc3a];var _0x38bca8=createListener('voiceQueue:'+_0x4de0e2,_0x2e7116);VoiceQueueEvents['on'](_0x4de0e2,_0x38bca8);}};
\ No newline at end of file
index 4d544cd..17d2802 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83a5=['./voiceQueueReport.controller','get','/describe','isAuthenticated','describe','/index','getVoiceQueuesReport','/:id','show','post','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x224b1f,_0x54b99d){var _0x2c176a=function(_0x53b81e){while(--_0x53b81e){_0x224b1f['push'](_0x224b1f['shift']());}};_0x2c176a(++_0x54b99d);}(_0x83a5,0xcb));var _0x583a=function(_0x3ce6ba,_0x477f34){_0x3ce6ba=_0x3ce6ba-0x0;var _0x5331bf=_0x83a5[_0x3ce6ba];return _0x5331bf;};'use strict';var multer=require(_0x583a('0x0'));var util=require(_0x583a('0x1'));var path=require(_0x583a('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x583a('0x3')]();var fs_extra=require(_0x583a('0x4'));var auth=require(_0x583a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x583a('0x6'));var controller=require(_0x583a('0x7'));router[_0x583a('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x583a('0x9'),auth[_0x583a('0xa')](),controller[_0x583a('0xb')]);router[_0x583a('0x8')](_0x583a('0xc'),auth[_0x583a('0xa')](),controller[_0x583a('0xd')]);router[_0x583a('0x8')](_0x583a('0xe'),auth['isAuthenticated'](),controller[_0x583a('0xf')]);router[_0x583a('0x10')]('/',auth[_0x583a('0xa')](),controller['create']);router['put'](_0x583a('0xe'),auth[_0x583a('0xa')](),controller[_0x583a('0x11')]);router[_0x583a('0x12')](_0x583a('0xe'),auth[_0x583a('0xa')](),controller[_0x583a('0x13')]);module[_0x583a('0x14')]=router;
\ No newline at end of file
+var _0x82f0=['get','isAuthenticated','/describe','/index','getVoiceQueuesReport','/:id','show','update','delete','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueueReport.controller'];(function(_0x5d4b1a,_0x30243f){var _0x3444c1=function(_0x24dbcd){while(--_0x24dbcd){_0x5d4b1a['push'](_0x5d4b1a['shift']());}};_0x3444c1(++_0x30243f);}(_0x82f0,0xf8));var _0x082f=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0x82f0[_0x5b561d];return _0x431060;};'use strict';var multer=require(_0x082f('0x0'));var util=require(_0x082f('0x1'));var path=require('path');var timeout=require(_0x082f('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x082f('0x3'));var auth=require(_0x082f('0x4'));var interaction=require(_0x082f('0x5'));var config=require('../../config/environment');var controller=require(_0x082f('0x6'));router[_0x082f('0x7')]('/',auth[_0x082f('0x8')](),controller['index']);router['get'](_0x082f('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x082f('0x7')](_0x082f('0xa'),auth[_0x082f('0x8')](),controller[_0x082f('0xb')]);router[_0x082f('0x7')](_0x082f('0xc'),auth[_0x082f('0x8')](),controller[_0x082f('0xd')]);router['post']('/',auth[_0x082f('0x8')](),controller['create']);router['put'](_0x082f('0xc'),auth['isAuthenticated'](),controller[_0x082f('0xe')]);router[_0x082f('0xf')](_0x082f('0xc'),auth[_0x082f('0x8')](),controller['destroy']);module[_0x082f('0x10')]=router;
\ No newline at end of file
index 4c4d623..13cc60f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x997d=['sequelize','moment','exports','STRING','DATE','getDataValue','diff','seconds','setDataValue','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x525175,_0x427502){var _0x3a8e1c=function(_0x1392ca){while(--_0x1392ca){_0x525175['push'](_0x525175['shift']());}};_0x3a8e1c(++_0x427502);}(_0x997d,0x10a));var _0xd997=function(_0x57dc85,_0x3a6d51){_0x57dc85=_0x57dc85-0x0;var _0x563a2e=_0x997d[_0x57dc85];return _0x563a2e;};'use strict';var Sequelize=require(_0xd997('0x0'));var moment=require(_0xd997('0x1'));module[_0xd997('0x2')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xd997('0x3')]},'calleridnum':{'type':Sequelize[_0xd997('0x3')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xd997('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0xd997('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0xd997('0x4')],'set':function(_0x104b3b){var _0x2d4196=moment(_0x104b3b);var _0x3403c0=moment(this[_0xd997('0x5')]('queuecallerjoinAt'))['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x7a7681=_0x2d4196[_0xd997('0x6')](_0x3403c0,_0xd997('0x7'));this[_0xd997('0x8')]('queuecallerleaveAt',_0x104b3b);this['setDataValue'](_0xd997('0x9'),_0x7a7681||null);}},'position':{'type':Sequelize[_0xd997('0xa')]},'count':{'type':Sequelize[_0xd997('0xa')]},'queuecallerabandon':{'type':Sequelize[_0xd997('0xb')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xd997('0x4')]},'queuecallercomplete':{'type':Sequelize[_0xd997('0xb')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xd997('0x4')]},'queuecallerexit':{'type':Sequelize[_0xd997('0xb')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xd997('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0xd997('0x3')],'comment':_0xd997('0xc')},'originalposition':{'type':Sequelize[_0xd997('0xa')]},'channel':{'type':Sequelize[_0xd997('0x3')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xd997('0x3')]},'context':{'type':Sequelize[_0xd997('0x3')]},'exten':{'type':Sequelize[_0xd997('0x3')]},'priority':{'type':Sequelize[_0xd997('0x3')]},'holdtime':{'type':Sequelize[_0xd997('0xa')]},'mohtime':{'type':Sequelize[_0xd997('0xa')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xd997('0xb')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xd997('0x3')]},'transfer':{'type':Sequelize[_0xd997('0xb')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xd997('0x3')],'comment':_0xd997('0xd')},'transferexten':{'type':Sequelize[_0xd997('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0xd997('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xd997('0x3')]},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd4cc=['DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xd4cc,0xb7));var _0xcd4c=function(_0x5313e2,_0xbaebb1){_0x5313e2=_0x5313e2-0x0;var _0x3a41ff=_0xd4cc[_0x5313e2];return _0x3a41ff;};'use strict';var Sequelize=require(_0xcd4c('0x0'));var moment=require(_0xcd4c('0x1'));module[_0xcd4c('0x2')]={'type':{'type':Sequelize[_0xcd4c('0x3')]},'uniqueid':{'type':Sequelize[_0xcd4c('0x3')]},'calleridnum':{'type':Sequelize[_0xcd4c('0x3')]},'calleridname':{'type':Sequelize[_0xcd4c('0x3')]},'queue':{'type':Sequelize[_0xcd4c('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0xcd4c('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0xcd4c('0x4')],'set':function(_0x55892a){var _0xddcca3=moment(_0x55892a);var _0x46a7c4=moment(this[_0xcd4c('0x5')]('queuecallerjoinAt'))[_0xcd4c('0x6')](_0xcd4c('0x7'));var _0x83d506=_0xddcca3[_0xcd4c('0x8')](_0x46a7c4,_0xcd4c('0x9'));this[_0xcd4c('0xa')](_0xcd4c('0xb'),_0x55892a);this[_0xcd4c('0xa')](_0xcd4c('0xc'),_0x83d506||null);}},'position':{'type':Sequelize[_0xcd4c('0xd')]},'count':{'type':Sequelize[_0xcd4c('0xd')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0xcd4c('0xe')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xcd4c('0x4')]},'queuecallerexit':{'type':Sequelize[_0xcd4c('0xe')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xcd4c('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0xcd4c('0x3')],'comment':_0xcd4c('0xf')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize[_0xcd4c('0x3')]},'connectedlinenum':{'type':Sequelize[_0xcd4c('0x3')]},'connectedlinename':{'type':Sequelize[_0xcd4c('0x3')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xcd4c('0x3')]},'exten':{'type':Sequelize[_0xcd4c('0x3')]},'priority':{'type':Sequelize[_0xcd4c('0x3')]},'holdtime':{'type':Sequelize[_0xcd4c('0xd')]},'mohtime':{'type':Sequelize[_0xcd4c('0xd')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xcd4c('0xe')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xcd4c('0x3')]},'transfer':{'type':Sequelize[_0xcd4c('0xe')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xcd4c('0x3')],'comment':_0xcd4c('0x10')},'transferexten':{'type':Sequelize[_0xcd4c('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0xcd4c('0x3')]},'secondDisposition':{'type':Sequelize[_0xcd4c('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize[_0xcd4c('0xd')],'defaultValue':0x0}};
\ No newline at end of file
index f8faed2..294718e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x448b=['getVoiceQueuesReport','options','findAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','socket.io-emitter','register','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','destroy','then','sendStatus','error','name','index','map','VoiceQueueReport','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','rows','show','params','keys','find','catch','body','describe'];(function(_0x1b5a20,_0x1295c0){var _0x3394e2=function(_0x2e41c5){while(--_0x2e41c5){_0x1b5a20['push'](_0x1b5a20['shift']());}};_0x3394e2(++_0x1295c0);}(_0x448b,0x198));var _0xb448=function(_0x4e7303,_0x32ae4b){_0x4e7303=_0x4e7303-0x0;var _0x499890=_0x448b[_0x4e7303];return _0x499890;};'use strict';var emlformat=require(_0xb448('0x0'));var rimraf=require(_0xb448('0x1'));var zipdir=require(_0xb448('0x2'));var jsonpatch=require(_0xb448('0x3'));var rp=require('request-promise');var moment=require(_0xb448('0x4'));var BPromise=require(_0xb448('0x5'));var Mustache=require(_0xb448('0x6'));var util=require('util');var path=require(_0xb448('0x7'));var sox=require(_0xb448('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb448('0x9'));var _=require(_0xb448('0xa'));var squel=require(_0xb448('0xb'));var crypto=require(_0xb448('0xc'));var jsforce=require(_0xb448('0xd'));var deskjs=require(_0xb448('0xe'));var toCsv=require(_0xb448('0xf'));var querystring=require(_0xb448('0x10'));var Papa=require(_0xb448('0x11'));var Redis=require(_0xb448('0x12'));var authService=require(_0xb448('0x13'));var qs=require(_0xb448('0x14'));var as=require(_0xb448('0x15'));var hardwareService=require(_0xb448('0x16'));var logger=require(_0xb448('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xb448('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xb448('0x19'))['db'];config[_0xb448('0x1a')]=_['defaults'](config[_0xb448('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xb448('0x1b'))(new Redis(config[_0xb448('0x1a')]));require('./voiceQueueReport.socket')[_0xb448('0x1c')](socket);function respondWithStatusCode(_0xdf81ad,_0x3b0034){_0x3b0034=_0x3b0034||0xcc;return function(_0x1403ed){if(_0x1403ed){return _0xdf81ad['sendStatus'](_0x3b0034);}return _0xdf81ad[_0xb448('0x1d')](_0x3b0034)[_0xb448('0x1e')]();};}function respondWithResult(_0x5b94ce,_0x7b81dc){_0x7b81dc=_0x7b81dc||0xc8;return function(_0x32453e){if(_0x32453e){return _0x5b94ce[_0xb448('0x1d')](_0x7b81dc)['json'](_0x32453e);}};}function respondWithFilteredResult(_0x59de1a,_0x4fe26c){return function(_0x40d89a){if(_0x40d89a){var _0x3acccd=typeof _0x4fe26c[_0xb448('0x1f')]==='undefined'&&typeof _0x4fe26c[_0xb448('0x20')]===_0xb448('0x21');var _0x36045b=_0x40d89a[_0xb448('0x22')];var _0x2cd4f7=_0x3acccd?0x0:_0x4fe26c[_0xb448('0x1f')];var _0x1bfd6d=_0x3acccd?_0x40d89a[_0xb448('0x22')]:_0x4fe26c[_0xb448('0x1f')]+_0x4fe26c[_0xb448('0x20')];var _0x1b3491;if(_0x1bfd6d>=_0x36045b){_0x1bfd6d=_0x36045b;_0x1b3491=0xc8;}else{_0x1b3491=0xce;}_0x59de1a[_0xb448('0x1d')](_0x1b3491);return _0x59de1a[_0xb448('0x23')](_0xb448('0x24'),_0x2cd4f7+'-'+_0x1bfd6d+'/'+_0x36045b)[_0xb448('0x25')](_0x40d89a);}return null;};}function patchUpdates(_0x3f8058){return function(_0x473b40){try{jsonpatch[_0xb448('0x26')](_0x473b40,_0x3f8058,!![]);}catch(_0xe5dbcf){return BPromise[_0xb448('0x27')](_0xe5dbcf);}return _0x473b40[_0xb448('0x28')]();};}function saveUpdates(_0x23ff90,_0xc995e3){return function(_0x1f7111){if(_0x1f7111){return _0x1f7111[_0xb448('0x29')](_0x23ff90)['then'](function(_0x2bcbcb){return _0x2bcbcb;});}return null;};}function removeEntity(_0x7eae09,_0x15f013){return function(_0x117ca3){if(_0x117ca3){return _0x117ca3[_0xb448('0x2a')]()[_0xb448('0x2b')](function(){_0x7eae09['status'](0xcc)[_0xb448('0x1e')]();});}};}function handleEntityNotFound(_0x3b56cf,_0x141f5f){return function(_0x1444e3){if(!_0x1444e3){_0x3b56cf[_0xb448('0x2c')](0x194);}return _0x1444e3;};}function handleError(_0x53fe7d,_0x3858cb){_0x3858cb=_0x3858cb||0x1f4;return function(_0x3563b8){logger[_0xb448('0x2d')](_0x3563b8['stack']);if(_0x3563b8[_0xb448('0x2e')]){delete _0x3563b8[_0xb448('0x2e')];}_0x53fe7d['status'](_0x3858cb)['send'](_0x3563b8);};}exports[_0xb448('0x2f')]=function(_0x1a972e,_0x2ca833){var _0x2616ba={},_0x156e48={},_0x2dcd73={'count':0x0,'rows':[]};var _0x3a2ae3=_[_0xb448('0x30')](db[_0xb448('0x31')][_0xb448('0x32')],function(_0x4f7b26){return{'name':_0x4f7b26['fieldName'],'type':_0x4f7b26[_0xb448('0x33')][_0xb448('0x34')]};});_0x156e48[_0xb448('0x35')]=_[_0xb448('0x30')](_0x3a2ae3,_0xb448('0x2e'));_0x156e48[_0xb448('0x36')]=_['keys'](_0x1a972e['query']);_0x156e48[_0xb448('0x37')]=_[_0xb448('0x38')](_0x156e48['model'],_0x156e48[_0xb448('0x36')]);_0x2616ba['attributes']=_['intersection'](_0x156e48[_0xb448('0x35')],qs['fields'](_0x1a972e[_0xb448('0x36')][_0xb448('0x39')]));_0x2616ba[_0xb448('0x3a')]=_0x2616ba[_0xb448('0x3a')][_0xb448('0x3b')]?_0x2616ba[_0xb448('0x3a')]:_0x156e48[_0xb448('0x35')];if(!_0x1a972e[_0xb448('0x36')][_0xb448('0x3c')](_0xb448('0x3d'))){_0x2616ba[_0xb448('0x20')]=qs[_0xb448('0x20')](_0x1a972e[_0xb448('0x36')]['limit']);_0x2616ba[_0xb448('0x1f')]=qs[_0xb448('0x1f')](_0x1a972e[_0xb448('0x36')]['offset']);}_0x2616ba[_0xb448('0x3e')]=qs[_0xb448('0x3f')](_0x1a972e['query'][_0xb448('0x3f')]);_0x2616ba[_0xb448('0x40')]=qs['filters'](_[_0xb448('0x41')](_0x1a972e[_0xb448('0x36')],_0x156e48['filters']),_0x3a2ae3);if(_0x1a972e[_0xb448('0x36')][_0xb448('0x42')]){_0x2616ba['where']=_['merge'](_0x2616ba['where'],{'$or':_['map'](_0x3a2ae3,function(_0x475668){if(_0x475668[_0xb448('0x33')]!=='VIRTUAL'){var _0x15df50={};_0x15df50[_0x475668[_0xb448('0x2e')]]={'$like':'%'+_0x1a972e['query'][_0xb448('0x42')]+'%'};return _0x15df50;}})});}_0x2616ba=_[_0xb448('0x43')]({},_0x2616ba,_0x1a972e['options']);var _0xd901ee={'where':_0x2616ba[_0xb448('0x40')]};return db[_0xb448('0x31')][_0xb448('0x22')](_0xd901ee)[_0xb448('0x2b')](function(_0x14bd2f){_0x2dcd73[_0xb448('0x22')]=_0x14bd2f;if(_0x1a972e['query'][_0xb448('0x44')]){_0x2616ba[_0xb448('0x45')]=[{'all':!![]}];}return db[_0xb448('0x31')]['findAll'](_0x2616ba);})['then'](function(_0x3e0719){_0x2dcd73[_0xb448('0x46')]=_0x3e0719;return _0x2dcd73;})[_0xb448('0x2b')](respondWithFilteredResult(_0x2ca833,_0x2616ba))['catch'](handleError(_0x2ca833,null));};exports[_0xb448('0x47')]=function(_0x67d3ab,_0x20b6b7){var _0x3778cc={'raw':![],'where':{'id':_0x67d3ab[_0xb448('0x48')]['id']}},_0x12e841={};_0x12e841[_0xb448('0x35')]=_[_0xb448('0x49')](db[_0xb448('0x31')][_0xb448('0x32')]);_0x12e841[_0xb448('0x36')]=_['keys'](_0x67d3ab[_0xb448('0x36')]);_0x12e841[_0xb448('0x37')]=_[_0xb448('0x38')](_0x12e841[_0xb448('0x35')],_0x12e841[_0xb448('0x36')]);_0x3778cc[_0xb448('0x3a')]=_[_0xb448('0x38')](_0x12e841[_0xb448('0x35')],qs['fields'](_0x67d3ab[_0xb448('0x36')]['fields']));_0x3778cc[_0xb448('0x3a')]=_0x3778cc[_0xb448('0x3a')]['length']?_0x3778cc[_0xb448('0x3a')]:_0x12e841[_0xb448('0x35')];if(_0x67d3ab[_0xb448('0x36')][_0xb448('0x44')]){_0x3778cc['include']=[{'all':!![]}];}_0x3778cc=_[_0xb448('0x43')]({},_0x3778cc,_0x67d3ab['options']);return db[_0xb448('0x31')][_0xb448('0x4a')](_0x3778cc)[_0xb448('0x2b')](handleEntityNotFound(_0x20b6b7,null))[_0xb448('0x2b')](respondWithResult(_0x20b6b7,null))[_0xb448('0x4b')](handleError(_0x20b6b7,null));};exports['create']=function(_0x3af178,_0x4b96b2){return db['VoiceQueueReport']['create'](_0x3af178['body'],{})['then'](respondWithResult(_0x4b96b2,0xc9))[_0xb448('0x4b')](handleError(_0x4b96b2,null));};exports[_0xb448('0x29')]=function(_0x41c7d6,_0x5c621e){if(_0x41c7d6[_0xb448('0x4c')]['id']){delete _0x41c7d6['body']['id'];}return db[_0xb448('0x31')][_0xb448('0x4a')]({'where':{'id':_0x41c7d6[_0xb448('0x48')]['id']}})[_0xb448('0x2b')](handleEntityNotFound(_0x5c621e,null))[_0xb448('0x2b')](saveUpdates(_0x41c7d6[_0xb448('0x4c')],null))[_0xb448('0x2b')](respondWithResult(_0x5c621e,null))['catch'](handleError(_0x5c621e,null));};exports[_0xb448('0x2a')]=function(_0x266979,_0x524221){return db['VoiceQueueReport'][_0xb448('0x4a')]({'where':{'id':_0x266979['params']['id']}})[_0xb448('0x2b')](handleEntityNotFound(_0x524221,null))[_0xb448('0x2b')](removeEntity(_0x524221,null))[_0xb448('0x4b')](handleError(_0x524221,null));};exports[_0xb448('0x4d')]=function(_0x33a29c,_0x297011){return db[_0xb448('0x31')][_0xb448('0x4d')]()[_0xb448('0x2b')](respondWithResult(_0x297011,null))[_0xb448('0x4b')](handleError(_0x297011,null));};exports[_0xb448('0x4e')]=function(_0x8fd6bd,_0x1efba3){var _0x294251={},_0x565754={},_0x2d0d9f={'count':0x0,'rows':[]};_0x565754[_0xb448('0x35')]=_[_0xb448('0x49')](db[_0xb448('0x31')][_0xb448('0x32')]);_0x565754[_0xb448('0x36')]=_[_0xb448('0x49')](_0x8fd6bd[_0xb448('0x36')]);_0x565754[_0xb448('0x37')]=_[_0xb448('0x38')](_0x565754[_0xb448('0x35')],_0x565754[_0xb448('0x36')]);_0x294251[_0xb448('0x3a')]=_[_0xb448('0x38')](_0x565754[_0xb448('0x35')],qs[_0xb448('0x39')](_0x8fd6bd[_0xb448('0x36')][_0xb448('0x39')]));_0x294251[_0xb448('0x3a')]=_0x294251[_0xb448('0x3a')][_0xb448('0x3b')]?_0x294251[_0xb448('0x3a')]:_0x565754[_0xb448('0x35')];if(!_0x8fd6bd[_0xb448('0x36')][_0xb448('0x3c')](_0xb448('0x3d'))){_0x294251['limit']=qs[_0xb448('0x20')](_0x8fd6bd['query']['limit']);_0x294251[_0xb448('0x1f')]=qs[_0xb448('0x1f')](_0x8fd6bd['query']['offset']);}_0x294251['order']=qs['sort'](_0x8fd6bd[_0xb448('0x36')]['sort']);_0x294251['where']=qs[_0xb448('0x37')](_[_0xb448('0x41')](_0x8fd6bd[_0xb448('0x36')],_0x565754[_0xb448('0x37')]));if(_0x8fd6bd[_0xb448('0x36')][_0xb448('0x42')]){_0x294251[_0xb448('0x40')]=_[_0xb448('0x43')](_0x294251[_0xb448('0x40')],{'$or':_['map'](_0x294251[_0xb448('0x3a')],function(_0x42cb09){var _0x5d1e18={};_0x5d1e18[_0x42cb09]={'$like':'%'+_0x8fd6bd['query'][_0xb448('0x42')]+'%'};return _0x5d1e18;})});}_0x294251=_[_0xb448('0x43')]({},_0x294251,_0x8fd6bd[_0xb448('0x4f')]);var _0x3952fb={'where':_0x294251['where']};return db[_0xb448('0x31')][_0xb448('0x22')](_0x3952fb)['then'](function(_0x35ec95){_0x2d0d9f[_0xb448('0x22')]=_0x35ec95;if(_0x8fd6bd[_0xb448('0x36')]['includeAll']){_0x294251['include']=[{'all':!![]}];}return db['VoiceQueueReport'][_0xb448('0x50')](_0x294251);})['then'](function(_0x33089c){_0x2d0d9f['rows']=_0x33089c;return _0x2d0d9f;})[_0xb448('0x2b')](respondWithFilteredResult(_0x1efba3,_0x294251,'getVoiceQueuesReport'))[_0xb448('0x4b')](handleError(_0x1efba3,null,_0xb448('0x4e')));};
\ No newline at end of file
+var _0xfd85=['../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','VoiceQueueReport','fieldName','type','model','query','keys','intersection','fields','attributes','length','nolimit','limit','order','sort','pick','filter','where','merge','include','rows','catch','params','filters','options','create','body','find','describe','getVoiceQueuesReport','rawAttributes','hasOwnProperty','findAll','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware'];(function(_0x5c4c7e,_0x177a02){var _0x360cab=function(_0x54c0b6){while(--_0x54c0b6){_0x5c4c7e['push'](_0x5c4c7e['shift']());}};_0x360cab(++_0x177a02);}(_0xfd85,0x184));var _0x5fd8=function(_0x4e3ffa,_0x82c4ba){_0x4e3ffa=_0x4e3ffa-0x0;var _0x556d3c=_0xfd85[_0x4e3ffa];return _0x556d3c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5fd8('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5fd8('0x1'));var rp=require(_0x5fd8('0x2'));var moment=require(_0x5fd8('0x3'));var BPromise=require(_0x5fd8('0x4'));var Mustache=require(_0x5fd8('0x5'));var util=require('util');var path=require('path');var sox=require(_0x5fd8('0x6'));var csv=require(_0x5fd8('0x7'));var ejs=require(_0x5fd8('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5fd8('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5fd8('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x5fd8('0x7'));var querystring=require(_0x5fd8('0xb'));var Papa=require(_0x5fd8('0xc'));var Redis=require(_0x5fd8('0xd'));var authService=require(_0x5fd8('0xe'));var qs=require(_0x5fd8('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5fd8('0x10'));var logger=require(_0x5fd8('0x11'))(_0x5fd8('0x12'));var utils=require(_0x5fd8('0x13'));var config=require(_0x5fd8('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x5fd8('0x15'))['db'];config['redis']=_[_0x5fd8('0x16')](config[_0x5fd8('0x17')],{'host':_0x5fd8('0x18'),'port':0x18eb});var socket=require(_0x5fd8('0x19'))(new Redis(config[_0x5fd8('0x17')]));require(_0x5fd8('0x1a'))[_0x5fd8('0x1b')](socket);function respondWithStatusCode(_0x736303,_0x2f891d){_0x2f891d=_0x2f891d||0xcc;return function(_0x163f1d){if(_0x163f1d){return _0x736303['sendStatus'](_0x2f891d);}return _0x736303[_0x5fd8('0x1c')](_0x2f891d)[_0x5fd8('0x1d')]();};}function respondWithResult(_0x2c5fc4,_0xf65de1){_0xf65de1=_0xf65de1||0xc8;return function(_0x1dd7b1){if(_0x1dd7b1){return _0x2c5fc4['status'](_0xf65de1)[_0x5fd8('0x1e')](_0x1dd7b1);}};}function respondWithFilteredResult(_0x411702,_0xc0b922){return function(_0x2b9350){if(_0x2b9350){var _0x3cf4ec=typeof _0xc0b922[_0x5fd8('0x1f')]==='undefined'&&typeof _0xc0b922['limit']===_0x5fd8('0x20');var _0x264554=_0x2b9350[_0x5fd8('0x21')];var _0x42d46c=_0x3cf4ec?0x0:_0xc0b922['offset'];var _0x61b345=_0x3cf4ec?_0x2b9350[_0x5fd8('0x21')]:_0xc0b922[_0x5fd8('0x1f')]+_0xc0b922['limit'];var _0x42abc5;if(_0x61b345>=_0x264554){_0x61b345=_0x264554;_0x42abc5=0xc8;}else{_0x42abc5=0xce;}_0x411702['status'](_0x42abc5);return _0x411702[_0x5fd8('0x22')](_0x5fd8('0x23'),_0x42d46c+'-'+_0x61b345+'/'+_0x264554)['json'](_0x2b9350);}return null;};}function patchUpdates(_0x2b16c9){return function(_0x3eaac0){try{jsonpatch[_0x5fd8('0x24')](_0x3eaac0,_0x2b16c9,!![]);}catch(_0x29170b){return BPromise[_0x5fd8('0x25')](_0x29170b);}return _0x3eaac0[_0x5fd8('0x26')]();};}function saveUpdates(_0x4910f4,_0x2113b4){return function(_0x51ce28){if(_0x51ce28){return _0x51ce28[_0x5fd8('0x27')](_0x4910f4)['then'](function(_0x30b26e){return _0x30b26e;});}return null;};}function removeEntity(_0x14a55b,_0x11c241){return function(_0x143789){if(_0x143789){return _0x143789[_0x5fd8('0x28')]()[_0x5fd8('0x29')](function(){_0x14a55b[_0x5fd8('0x1c')](0xcc)[_0x5fd8('0x1d')]();});}};}function handleEntityNotFound(_0x28306f,_0xe866b2){return function(_0x30dea5){if(!_0x30dea5){_0x28306f[_0x5fd8('0x2a')](0x194);}return _0x30dea5;};}function handleError(_0x360acd,_0x316c88){_0x316c88=_0x316c88||0x1f4;return function(_0x2b028f){logger[_0x5fd8('0x2b')](_0x2b028f[_0x5fd8('0x2c')]);if(_0x2b028f[_0x5fd8('0x2d')]){delete _0x2b028f[_0x5fd8('0x2d')];}_0x360acd[_0x5fd8('0x1c')](_0x316c88)[_0x5fd8('0x2e')](_0x2b028f);};}exports[_0x5fd8('0x2f')]=function(_0x5239b0,_0x21e337){var _0x53d4c9={},_0x2c204d={},_0x1711b0={'count':0x0,'rows':[]};var _0x111aa3=_[_0x5fd8('0x30')](db[_0x5fd8('0x31')]['rawAttributes'],function(_0x1b6dfb){return{'name':_0x1b6dfb[_0x5fd8('0x32')],'type':_0x1b6dfb[_0x5fd8('0x33')]['key']};});_0x2c204d[_0x5fd8('0x34')]=_['map'](_0x111aa3,'name');_0x2c204d[_0x5fd8('0x35')]=_[_0x5fd8('0x36')](_0x5239b0[_0x5fd8('0x35')]);_0x2c204d['filters']=_[_0x5fd8('0x37')](_0x2c204d['model'],_0x2c204d[_0x5fd8('0x35')]);_0x53d4c9['attributes']=_[_0x5fd8('0x37')](_0x2c204d['model'],qs['fields'](_0x5239b0[_0x5fd8('0x35')][_0x5fd8('0x38')]));_0x53d4c9[_0x5fd8('0x39')]=_0x53d4c9[_0x5fd8('0x39')][_0x5fd8('0x3a')]?_0x53d4c9[_0x5fd8('0x39')]:_0x2c204d[_0x5fd8('0x34')];if(!_0x5239b0['query']['hasOwnProperty'](_0x5fd8('0x3b'))){_0x53d4c9[_0x5fd8('0x3c')]=qs[_0x5fd8('0x3c')](_0x5239b0['query'][_0x5fd8('0x3c')]);_0x53d4c9['offset']=qs[_0x5fd8('0x1f')](_0x5239b0[_0x5fd8('0x35')][_0x5fd8('0x1f')]);}_0x53d4c9[_0x5fd8('0x3d')]=qs[_0x5fd8('0x3e')](_0x5239b0['query'][_0x5fd8('0x3e')]);_0x53d4c9['where']=qs['filters'](_[_0x5fd8('0x3f')](_0x5239b0[_0x5fd8('0x35')],_0x2c204d['filters']),_0x111aa3);if(_0x5239b0[_0x5fd8('0x35')][_0x5fd8('0x40')]){_0x53d4c9[_0x5fd8('0x41')]=_['merge'](_0x53d4c9['where'],{'$or':_['map'](_0x111aa3,function(_0x40321b){if(_0x40321b[_0x5fd8('0x33')]!=='VIRTUAL'){var _0x2c6d03={};_0x2c6d03[_0x40321b[_0x5fd8('0x2d')]]={'$like':'%'+_0x5239b0['query'][_0x5fd8('0x40')]+'%'};return _0x2c6d03;}})});}_0x53d4c9=_[_0x5fd8('0x42')]({},_0x53d4c9,_0x5239b0['options']);var _0x3ed336={'where':_0x53d4c9[_0x5fd8('0x41')]};return db[_0x5fd8('0x31')][_0x5fd8('0x21')](_0x3ed336)[_0x5fd8('0x29')](function(_0x4ace82){_0x1711b0[_0x5fd8('0x21')]=_0x4ace82;if(_0x5239b0[_0x5fd8('0x35')]['includeAll']){_0x53d4c9[_0x5fd8('0x43')]=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x53d4c9);})[_0x5fd8('0x29')](function(_0x2689c4){_0x1711b0[_0x5fd8('0x44')]=_0x2689c4;return _0x1711b0;})[_0x5fd8('0x29')](respondWithFilteredResult(_0x21e337,_0x53d4c9))[_0x5fd8('0x45')](handleError(_0x21e337,null));};exports['show']=function(_0x3c44bc,_0x696993){var _0x85e524={'raw':![],'where':{'id':_0x3c44bc[_0x5fd8('0x46')]['id']}},_0x72cb7a={};_0x72cb7a[_0x5fd8('0x34')]=_['keys'](db[_0x5fd8('0x31')]['rawAttributes']);_0x72cb7a['query']=_['keys'](_0x3c44bc['query']);_0x72cb7a[_0x5fd8('0x47')]=_[_0x5fd8('0x37')](_0x72cb7a[_0x5fd8('0x34')],_0x72cb7a[_0x5fd8('0x35')]);_0x85e524[_0x5fd8('0x39')]=_['intersection'](_0x72cb7a['model'],qs[_0x5fd8('0x38')](_0x3c44bc[_0x5fd8('0x35')][_0x5fd8('0x38')]));_0x85e524['attributes']=_0x85e524[_0x5fd8('0x39')]['length']?_0x85e524[_0x5fd8('0x39')]:_0x72cb7a[_0x5fd8('0x34')];if(_0x3c44bc[_0x5fd8('0x35')]['includeAll']){_0x85e524[_0x5fd8('0x43')]=[{'all':!![]}];}_0x85e524=_[_0x5fd8('0x42')]({},_0x85e524,_0x3c44bc[_0x5fd8('0x48')]);return db[_0x5fd8('0x31')]['find'](_0x85e524)[_0x5fd8('0x29')](handleEntityNotFound(_0x696993,null))['then'](respondWithResult(_0x696993,null))['catch'](handleError(_0x696993,null));};exports[_0x5fd8('0x49')]=function(_0x4ce223,_0xa16ae0){return db[_0x5fd8('0x31')][_0x5fd8('0x49')](_0x4ce223['body'],{})['then'](respondWithResult(_0xa16ae0,0xc9))[_0x5fd8('0x45')](handleError(_0xa16ae0,null));};exports[_0x5fd8('0x27')]=function(_0x25933b,_0x13c1f7){if(_0x25933b[_0x5fd8('0x4a')]['id']){delete _0x25933b[_0x5fd8('0x4a')]['id'];}return db[_0x5fd8('0x31')]['find']({'where':{'id':_0x25933b[_0x5fd8('0x46')]['id']}})[_0x5fd8('0x29')](handleEntityNotFound(_0x13c1f7,null))[_0x5fd8('0x29')](saveUpdates(_0x25933b['body'],null))[_0x5fd8('0x29')](respondWithResult(_0x13c1f7,null))['catch'](handleError(_0x13c1f7,null));};exports[_0x5fd8('0x28')]=function(_0x3618f0,_0x46ff3b){return db[_0x5fd8('0x31')][_0x5fd8('0x4b')]({'where':{'id':_0x3618f0[_0x5fd8('0x46')]['id']}})[_0x5fd8('0x29')](handleEntityNotFound(_0x46ff3b,null))[_0x5fd8('0x29')](removeEntity(_0x46ff3b,null))[_0x5fd8('0x45')](handleError(_0x46ff3b,null));};exports[_0x5fd8('0x4c')]=function(_0x5ecd78,_0x2c4a02){return db[_0x5fd8('0x31')][_0x5fd8('0x4c')]()[_0x5fd8('0x29')](respondWithResult(_0x2c4a02,null))[_0x5fd8('0x45')](handleError(_0x2c4a02,null));};exports[_0x5fd8('0x4d')]=function(_0x4f11eb,_0x14c4d4){var _0x5da85a={},_0x1d6aaa={},_0x30d3c0={'count':0x0,'rows':[]};_0x1d6aaa[_0x5fd8('0x34')]=_[_0x5fd8('0x36')](db[_0x5fd8('0x31')][_0x5fd8('0x4e')]);_0x1d6aaa['query']=_['keys'](_0x4f11eb[_0x5fd8('0x35')]);_0x1d6aaa[_0x5fd8('0x47')]=_[_0x5fd8('0x37')](_0x1d6aaa['model'],_0x1d6aaa[_0x5fd8('0x35')]);_0x5da85a['attributes']=_['intersection'](_0x1d6aaa[_0x5fd8('0x34')],qs['fields'](_0x4f11eb[_0x5fd8('0x35')][_0x5fd8('0x38')]));_0x5da85a[_0x5fd8('0x39')]=_0x5da85a[_0x5fd8('0x39')]['length']?_0x5da85a['attributes']:_0x1d6aaa[_0x5fd8('0x34')];if(!_0x4f11eb[_0x5fd8('0x35')][_0x5fd8('0x4f')](_0x5fd8('0x3b'))){_0x5da85a['limit']=qs['limit'](_0x4f11eb[_0x5fd8('0x35')][_0x5fd8('0x3c')]);_0x5da85a['offset']=qs[_0x5fd8('0x1f')](_0x4f11eb['query']['offset']);}_0x5da85a[_0x5fd8('0x3d')]=qs[_0x5fd8('0x3e')](_0x4f11eb[_0x5fd8('0x35')][_0x5fd8('0x3e')]);_0x5da85a[_0x5fd8('0x41')]=qs[_0x5fd8('0x47')](_[_0x5fd8('0x3f')](_0x4f11eb['query'],_0x1d6aaa[_0x5fd8('0x47')]));if(_0x4f11eb[_0x5fd8('0x35')][_0x5fd8('0x40')]){_0x5da85a[_0x5fd8('0x41')]=_[_0x5fd8('0x42')](_0x5da85a['where'],{'$or':_['map'](_0x5da85a[_0x5fd8('0x39')],function(_0x29f7ed){var _0xce63de={};_0xce63de[_0x29f7ed]={'$like':'%'+_0x4f11eb[_0x5fd8('0x35')][_0x5fd8('0x40')]+'%'};return _0xce63de;})});}_0x5da85a=_[_0x5fd8('0x42')]({},_0x5da85a,_0x4f11eb['options']);var _0x2cbab3={'where':_0x5da85a[_0x5fd8('0x41')]};return db[_0x5fd8('0x31')][_0x5fd8('0x21')](_0x2cbab3)[_0x5fd8('0x29')](function(_0x40c0b9){_0x30d3c0[_0x5fd8('0x21')]=_0x40c0b9;if(_0x4f11eb[_0x5fd8('0x35')]['includeAll']){_0x5da85a[_0x5fd8('0x43')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0x5fd8('0x50')](_0x5da85a);})[_0x5fd8('0x29')](function(_0x3a6625){_0x30d3c0[_0x5fd8('0x44')]=_0x3a6625;return _0x30d3c0;})[_0x5fd8('0x29')](respondWithFilteredResult(_0x14c4d4,_0x5da85a,'getVoiceQueuesReport'))[_0x5fd8('0x45')](handleError(_0x14c4d4,null,'getVoiceQueuesReport'));};
\ No newline at end of file
index 2b7ccb4..59b7629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x785b=['exports','../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x2715cf,_0x517bb2){var _0x1bdcb8=function(_0x5dec7b){while(--_0x5dec7b){_0x2715cf['push'](_0x2715cf['shift']());}};_0x1bdcb8(++_0x517bb2);}(_0x785b,0xef));var _0xb785=function(_0x1b777f,_0x5d8b0e){_0x1b777f=_0x1b777f-0x0;var _0x480877=_0x785b[_0x1b777f];return _0x480877;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0xb785('0x0'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xb785('0x1')](0x0);var events={'afterCreate':_0xb785('0x2'),'afterUpdate':_0xb785('0x3'),'afterDestroy':'remove'};function emitEvent(_0x2f533e){return function(_0x147c54,_0x3216d7,_0xa5e457){VoiceQueueReportEvents[_0xb785('0x4')](_0x2f533e+':'+_0x147c54['id'],_0x147c54);VoiceQueueReportEvents[_0xb785('0x4')](_0x2f533e,_0x147c54);_0xa5e457(null);};}for(var e in events){if(events[_0xb785('0x5')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0xb785('0x6')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xc7ab=['save','remove','emit','hook','exports','events','../../mysqldb','VoiceQueueReport','setMaxListeners'];(function(_0x33bc64,_0x4d1e92){var _0x3fdd34=function(_0x4b40a4){while(--_0x4b40a4){_0x33bc64['push'](_0x33bc64['shift']());}};_0x3fdd34(++_0x4d1e92);}(_0xc7ab,0xb0));var _0xbc7a=function(_0x54274d,_0x4749dc){_0x54274d=_0x54274d-0x0;var _0x26b3bd=_0xc7ab[_0x54274d];return _0x26b3bd;};'use strict';var EventEmitter=require(_0xbc7a('0x0'));var VoiceQueueReport=require(_0xbc7a('0x1'))['db'][_0xbc7a('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xbc7a('0x3')](0x0);var events={'afterCreate':_0xbc7a('0x4'),'afterUpdate':'update','afterDestroy':_0xbc7a('0x5')};function emitEvent(_0x4528b3){return function(_0x5a592b,_0x7f8661,_0x5086b5){VoiceQueueReportEvents[_0xbc7a('0x6')](_0x4528b3+':'+_0x5a592b['id'],_0x5a592b);VoiceQueueReportEvents[_0xbc7a('0x6')](_0x4528b3,_0x5a592b);_0x5086b5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0xbc7a('0x7')](e,emitEvent(event));}}module[_0xbc7a('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
index 0e4329f..5019f87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x567b=['rimraf','../../config/environment','exports','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x567b,0x133));var _0xb567=function(_0x129edc,_0x23cb02){_0x129edc=_0x129edc-0x0;var _0x4ee104=_0x567b[_0x129edc];return _0x4ee104;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb567('0x0'))(_0xb567('0x1'));var moment=require(_0xb567('0x2'));var BPromise=require(_0xb567('0x3'));var rp=require(_0xb567('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb567('0x5'));var config=require(_0xb567('0x6'));var attributes=require('./voiceQueueReport.attributes');module[_0xb567('0x7')]=function(_0x2c6220,_0x196883){return _0x2c6220[_0xb567('0x8')](_0xb567('0x9'),attributes,{'tableName':_0xb567('0xa'),'paranoid':![],'indexes':[{'fields':[_0xb567('0xb')]},{'fields':[_0xb567('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb68e=['rimraf','../../config/environment','exports','define','report_queue','uniqueid','util','api','bluebird','path'];(function(_0x2283dc,_0x2fcfc5){var _0x16db90=function(_0x376c35){while(--_0x376c35){_0x2283dc['push'](_0x2283dc['shift']());}};_0x16db90(++_0x2fcfc5);}(_0xb68e,0x132));var _0xeb68=function(_0x58e3dd,_0x31512c){_0x58e3dd=_0x58e3dd-0x0;var _0xd0aef1=_0xb68e[_0x58e3dd];return _0xd0aef1;};'use strict';var _=require('lodash');var util=require(_0xeb68('0x0'));var logger=require('../../config/logger')(_0xeb68('0x1'));var moment=require('moment');var BPromise=require(_0xeb68('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xeb68('0x3'));var rimraf=require(_0xeb68('0x4'));var config=require(_0xeb68('0x5'));var attributes=require('./voiceQueueReport.attributes');module[_0xeb68('0x6')]=function(_0x30e8e2,_0x580cd5){return _0x30e8e2[_0xeb68('0x7')]('VoiceQueueReport',attributes,{'tableName':_0xeb68('0x8'),'paranoid':![],'indexes':[{'fields':[_0xeb68('0x9')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
index fc5ac8a..dece6c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59d6=['GetVoiceQueueReport','create','body','CreateVoiceQueueReport','UpdateVoiceQueueReport','update','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','request','then','info','VoiceQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','VoiceQueueReport','findAll','options','raw','where','attributes','limit','include','model','map'];(function(_0x18afca,_0x4219d9){var _0x11603f=function(_0x21d5d1){while(--_0x21d5d1){_0x18afca['push'](_0x18afca['shift']());}};_0x11603f(++_0x4219d9);}(_0x59d6,0xae));var _0x659d=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x59d6[_0x2b4411];return _0x8e41ef;};'use strict';var _=require('lodash');var util=require(_0x659d('0x0'));var moment=require(_0x659d('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x659d('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x659d('0x3'));var logger=require(_0x659d('0x4'))(_0x659d('0x5'));var config=require(_0x659d('0x6'));var jayson=require(_0x659d('0x7'));var client=jayson['client'][_0x659d('0x8')]({'port':0x232a});config[_0x659d('0x9')]=_[_0x659d('0xa')](config[_0x659d('0x9')],{'host':_0x659d('0xb'),'port':0x18eb});var socket=require(_0x659d('0xc'))(new Redis(config[_0x659d('0x9')]));require(_0x659d('0xd'))['register'](socket);function respondWithRpcPromise(_0x123564,_0x4b790f,_0x1beb63){return new BPromise(function(_0x3210a3,_0x1ca639){return client[_0x659d('0xe')](_0x123564,_0x1beb63)[_0x659d('0xf')](function(_0x7af60e){logger[_0x659d('0x10')](_0x659d('0x11'),_0x4b790f,'request\x20sent');logger[_0x659d('0x12')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x4b790f,'request\x20sent',JSON[_0x659d('0x13')](_0x7af60e));if(_0x7af60e[_0x659d('0x14')]){if(_0x7af60e[_0x659d('0x14')][_0x659d('0x15')]===0x1f4){logger[_0x659d('0x14')](_0x659d('0x11'),_0x4b790f,_0x7af60e[_0x659d('0x14')][_0x659d('0x16')]);return _0x1ca639(_0x7af60e['error'][_0x659d('0x16')]);}logger[_0x659d('0x14')](_0x659d('0x11'),_0x4b790f,_0x7af60e[_0x659d('0x14')][_0x659d('0x16')]);return _0x3210a3(_0x7af60e[_0x659d('0x14')][_0x659d('0x16')]);}else{logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x4b790f,_0x659d('0x17'));_0x3210a3(_0x7af60e[_0x659d('0x18')][_0x659d('0x16')]);}})[_0x659d('0x19')](function(_0x9ed17a){logger['error'](_0x659d('0x11'),_0x4b790f,_0x9ed17a);_0x1ca639(_0x9ed17a);});});}exports['GetVoiceQueueReport']=function(_0x289959){var _0x445fc1=this;return new Promise(function(_0x3ed1f9,_0x257b35){return db[_0x659d('0x1a')][_0x659d('0x1b')]({'raw':_0x289959['options']?_0x289959[_0x659d('0x1c')][_0x659d('0x1d')]===undefined?!![]:![]:!![],'where':_0x289959[_0x659d('0x1c')]?_0x289959[_0x659d('0x1c')][_0x659d('0x1e')]||null:null,'attributes':_0x289959[_0x659d('0x1c')]?_0x289959[_0x659d('0x1c')][_0x659d('0x1f')]||null:null,'limit':_0x289959[_0x659d('0x1c')]?_0x289959[_0x659d('0x1c')][_0x659d('0x20')]||null:null,'include':_0x289959[_0x659d('0x1c')]?_0x289959['options'][_0x659d('0x21')]?_['map'](_0x289959['options'][_0x659d('0x21')],function(_0x501d7f){return{'model':db[_0x501d7f[_0x659d('0x22')]],'as':_0x501d7f['as'],'attributes':_0x501d7f[_0x659d('0x1f')],'include':_0x501d7f[_0x659d('0x21')]?_[_0x659d('0x23')](_0x501d7f[_0x659d('0x21')],function(_0x281564){return{'model':db[_0x281564[_0x659d('0x22')]],'as':_0x281564['as'],'attributes':_0x281564[_0x659d('0x1f')],'include':_0x281564[_0x659d('0x21')]?_[_0x659d('0x23')](_0x281564[_0x659d('0x21')],function(_0x4fc993){return{'model':db[_0x4fc993[_0x659d('0x22')]],'as':_0x4fc993['as'],'attributes':_0x4fc993[_0x659d('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x659d('0xf')](function(_0x1dfee7){logger['info'](_0x659d('0x24'),_0x289959);logger[_0x659d('0x12')]('GetVoiceQueueReport',_0x289959,JSON['stringify'](_0x1dfee7));_0x3ed1f9(_0x1dfee7);})['catch'](function(_0x54b46d){logger[_0x659d('0x14')]('GetVoiceQueueReport',_0x54b46d[_0x659d('0x16')],_0x289959);_0x257b35(_0x445fc1['error'](0x1f4,_0x54b46d[_0x659d('0x16')]));});});};exports['CreateVoiceQueueReport']=function(_0x513d34){var _0x4ff6fb=this;return new Promise(function(_0x2529fb,_0x2aa8bc){return db[_0x659d('0x1a')][_0x659d('0x25')](_0x513d34[_0x659d('0x26')],{'raw':_0x513d34[_0x659d('0x1c')]?_0x513d34[_0x659d('0x1c')][_0x659d('0x1d')]===undefined?!![]:![]:!![]})[_0x659d('0xf')](function(_0xaab9fa){logger['info'](_0x659d('0x27'),_0x513d34);logger['debug'](_0x659d('0x27'),_0x513d34,JSON[_0x659d('0x13')](_0xaab9fa));_0x2529fb(_0xaab9fa);})[_0x659d('0x19')](function(_0x5f0b16){logger[_0x659d('0x14')](_0x659d('0x27'),_0x5f0b16['message'],_0x513d34);_0x2aa8bc(_0x4ff6fb[_0x659d('0x14')](0x1f4,_0x5f0b16[_0x659d('0x16')]));});});};exports[_0x659d('0x28')]=function(_0x2339d5){var _0x77bbdc=this;return new Promise(function(_0x5e4eb2,_0x59f331){return db[_0x659d('0x1a')][_0x659d('0x29')](_0x2339d5[_0x659d('0x26')],{'raw':_0x2339d5['options']?_0x2339d5[_0x659d('0x1c')][_0x659d('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2339d5['options']?_0x2339d5[_0x659d('0x1c')][_0x659d('0x1e')]||null:null,'attributes':_0x2339d5[_0x659d('0x1c')]?_0x2339d5['options']['attributes']||null:null,'limit':_0x2339d5['options']?_0x2339d5[_0x659d('0x1c')][_0x659d('0x20')]||null:null})[_0x659d('0xf')](function(_0x17de11){logger[_0x659d('0x10')]('UpdateVoiceQueueReport',_0x2339d5);logger['debug']('UpdateVoiceQueueReport',_0x2339d5,JSON[_0x659d('0x13')](_0x17de11));_0x5e4eb2(_0x17de11);})[_0x659d('0x19')](function(_0x5d4964){logger[_0x659d('0x14')](_0x659d('0x28'),_0x5d4964['message'],_0x2339d5);_0x59f331(_0x77bbdc[_0x659d('0x14')](0x1f4,_0x5d4964[_0x659d('0x16')]));});});};
\ No newline at end of file
+var _0xc826=['then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','limit','include','model','attributes','map','CreateVoiceQueueReport','create','body','update','UpdateVoiceQueueReport','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request'];(function(_0x2eac4f,_0x5173f9){var _0x58f73b=function(_0x529f28){while(--_0x529f28){_0x2eac4f['push'](_0x2eac4f['shift']());}};_0x58f73b(++_0x5173f9);}(_0xc826,0x156));var _0x6c82=function(_0x606d30,_0x118932){_0x606d30=_0x606d30-0x0;var _0x4e5d02=_0xc826[_0x606d30];return _0x4e5d02;};'use strict';var _=require(_0x6c82('0x0'));var util=require(_0x6c82('0x1'));var moment=require(_0x6c82('0x2'));var BPromise=require(_0x6c82('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6c82('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6c82('0x5'))(_0x6c82('0x6'));var config=require(_0x6c82('0x7'));var jayson=require(_0x6c82('0x8'));var client=jayson[_0x6c82('0x9')][_0x6c82('0xa')]({'port':0x232a});config[_0x6c82('0xb')]=_[_0x6c82('0xc')](config[_0x6c82('0xb')],{'host':_0x6c82('0xd'),'port':0x18eb});var socket=require(_0x6c82('0xe'))(new Redis(config[_0x6c82('0xb')]));require(_0x6c82('0xf'))[_0x6c82('0x10')](socket);function respondWithRpcPromise(_0x35db45,_0x456499,_0x15a73e){return new BPromise(function(_0x4f992a,_0x5c8568){return client[_0x6c82('0x11')](_0x35db45,_0x15a73e)[_0x6c82('0x12')](function(_0x13ef3c){logger[_0x6c82('0x13')](_0x6c82('0x14'),_0x456499,_0x6c82('0x15'));logger[_0x6c82('0x16')](_0x6c82('0x17'),_0x456499,_0x6c82('0x15'),JSON[_0x6c82('0x18')](_0x13ef3c));if(_0x13ef3c[_0x6c82('0x19')]){if(_0x13ef3c[_0x6c82('0x19')][_0x6c82('0x1a')]===0x1f4){logger[_0x6c82('0x19')]('VoiceQueueReport,\x20%s,\x20%s',_0x456499,_0x13ef3c['error']['message']);return _0x5c8568(_0x13ef3c[_0x6c82('0x19')][_0x6c82('0x1b')]);}logger[_0x6c82('0x19')]('VoiceQueueReport,\x20%s,\x20%s',_0x456499,_0x13ef3c['error']['message']);return _0x4f992a(_0x13ef3c['error'][_0x6c82('0x1b')]);}else{logger['info'](_0x6c82('0x14'),_0x456499,_0x6c82('0x15'));_0x4f992a(_0x13ef3c[_0x6c82('0x1c')][_0x6c82('0x1b')]);}})[_0x6c82('0x1d')](function(_0x234b11){logger['error']('VoiceQueueReport,\x20%s,\x20%s',_0x456499,_0x234b11);_0x5c8568(_0x234b11);});});}exports[_0x6c82('0x1e')]=function(_0x5a0e4d){var _0x16f24f=this;return new Promise(function(_0x3b56a0,_0x396d68){return db[_0x6c82('0x1f')][_0x6c82('0x20')]({'raw':_0x5a0e4d['options']?_0x5a0e4d[_0x6c82('0x21')][_0x6c82('0x22')]===undefined?!![]:![]:!![],'where':_0x5a0e4d['options']?_0x5a0e4d[_0x6c82('0x21')]['where']||null:null,'attributes':_0x5a0e4d[_0x6c82('0x21')]?_0x5a0e4d[_0x6c82('0x21')]['attributes']||null:null,'limit':_0x5a0e4d['options']?_0x5a0e4d[_0x6c82('0x21')][_0x6c82('0x23')]||null:null,'include':_0x5a0e4d[_0x6c82('0x21')]?_0x5a0e4d['options'][_0x6c82('0x24')]?_['map'](_0x5a0e4d[_0x6c82('0x21')]['include'],function(_0x5712a1){return{'model':db[_0x5712a1[_0x6c82('0x25')]],'as':_0x5712a1['as'],'attributes':_0x5712a1[_0x6c82('0x26')],'include':_0x5712a1['include']?_[_0x6c82('0x27')](_0x5712a1[_0x6c82('0x24')],function(_0x451f9b){return{'model':db[_0x451f9b[_0x6c82('0x25')]],'as':_0x451f9b['as'],'attributes':_0x451f9b[_0x6c82('0x26')],'include':_0x451f9b['include']?_[_0x6c82('0x27')](_0x451f9b['include'],function(_0x36d352){return{'model':db[_0x36d352[_0x6c82('0x25')]],'as':_0x36d352['as'],'attributes':_0x36d352[_0x6c82('0x26')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x10eb0f){logger[_0x6c82('0x13')](_0x6c82('0x1e'),_0x5a0e4d);logger[_0x6c82('0x16')]('GetVoiceQueueReport',_0x5a0e4d,JSON['stringify'](_0x10eb0f));_0x3b56a0(_0x10eb0f);})[_0x6c82('0x1d')](function(_0x5efb89){logger[_0x6c82('0x19')](_0x6c82('0x1e'),_0x5efb89[_0x6c82('0x1b')],_0x5a0e4d);_0x396d68(_0x16f24f[_0x6c82('0x19')](0x1f4,_0x5efb89[_0x6c82('0x1b')]));});});};exports[_0x6c82('0x28')]=function(_0x323388){var _0x413c22=this;return new Promise(function(_0x4f995d,_0x35c25d){return db[_0x6c82('0x1f')][_0x6c82('0x29')](_0x323388[_0x6c82('0x2a')],{'raw':_0x323388[_0x6c82('0x21')]?_0x323388[_0x6c82('0x21')][_0x6c82('0x22')]===undefined?!![]:![]:!![]})[_0x6c82('0x12')](function(_0x40d17e){logger['info'](_0x6c82('0x28'),_0x323388);logger['debug']('CreateVoiceQueueReport',_0x323388,JSON[_0x6c82('0x18')](_0x40d17e));_0x4f995d(_0x40d17e);})[_0x6c82('0x1d')](function(_0x3358c4){logger[_0x6c82('0x19')](_0x6c82('0x28'),_0x3358c4[_0x6c82('0x1b')],_0x323388);_0x35c25d(_0x413c22[_0x6c82('0x19')](0x1f4,_0x3358c4[_0x6c82('0x1b')]));});});};exports['UpdateVoiceQueueReport']=function(_0x5d76a7){var _0x2dcf54=this;return new Promise(function(_0x4373da,_0x2bba9f){return db[_0x6c82('0x1f')][_0x6c82('0x2b')](_0x5d76a7[_0x6c82('0x2a')],{'raw':_0x5d76a7[_0x6c82('0x21')]?_0x5d76a7[_0x6c82('0x21')][_0x6c82('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d76a7[_0x6c82('0x21')]?_0x5d76a7[_0x6c82('0x21')]['where']||null:null,'attributes':_0x5d76a7['options']?_0x5d76a7['options'][_0x6c82('0x26')]||null:null,'limit':_0x5d76a7['options']?_0x5d76a7[_0x6c82('0x21')][_0x6c82('0x23')]||null:null})['then'](function(_0x58c27d){logger[_0x6c82('0x13')](_0x6c82('0x2c'),_0x5d76a7);logger['debug'](_0x6c82('0x2c'),_0x5d76a7,JSON[_0x6c82('0x18')](_0x58c27d));_0x4373da(_0x58c27d);})['catch'](function(_0x5c3e76){logger['error'](_0x6c82('0x2c'),_0x5c3e76[_0x6c82('0x1b')],_0x5d76a7);_0x2bba9f(_0x2dcf54[_0x6c82('0x19')](0x1f4,_0x5c3e76[_0x6c82('0x1b')]));});});};
\ No newline at end of file
index 1671f6b..b01e3c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfe8=['save','update','emit','removeListener','register','length','voiceQueueReport:'];(function(_0x2199f1,_0x10c734){var _0x43436b=function(_0x524bf8){while(--_0x524bf8){_0x2199f1['push'](_0x2199f1['shift']());}};_0x43436b(++_0x10c734);}(_0xbfe8,0x1b9));var _0x8bfe=function(_0x28e95a,_0x1eb044){_0x28e95a=_0x28e95a-0x0;var _0x533803=_0xbfe8[_0x28e95a];return _0x533803;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0x8bfe('0x0'),'remove',_0x8bfe('0x1')];function createListener(_0x39d664,_0x56fddf){return function(_0x4e3c63){_0x56fddf[_0x8bfe('0x2')](_0x39d664,_0x4e3c63);};}function removeListener(_0x31df14,_0x57eb53){return function(){VoiceQueueReportEvents[_0x8bfe('0x3')](_0x31df14,_0x57eb53);};}exports[_0x8bfe('0x4')]=function(_0x314a9a){for(var _0x4933c9=0x0,_0x29bb94=events[_0x8bfe('0x5')];_0x4933c9<_0x29bb94;_0x4933c9++){var _0x3e3075=events[_0x4933c9];var _0x4602fc=createListener(_0x8bfe('0x6')+_0x3e3075,_0x314a9a);VoiceQueueReportEvents['on'](_0x3e3075,_0x4602fc);}};
\ No newline at end of file
+var _0x093a=['length','voiceQueueReport:','save','remove','update','emit','removeListener','register'];(function(_0x3fe5d9,_0x539949){var _0x2520f2=function(_0x7e82ae){while(--_0x7e82ae){_0x3fe5d9['push'](_0x3fe5d9['shift']());}};_0x2520f2(++_0x539949);}(_0x093a,0x16a));var _0xa093=function(_0x5eca50,_0xc1e3f8){_0x5eca50=_0x5eca50-0x0;var _0x41fb84=_0x093a[_0x5eca50];return _0x41fb84;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0xa093('0x0'),_0xa093('0x1'),_0xa093('0x2')];function createListener(_0x5bc87c,_0x48385e){return function(_0x232f44){_0x48385e[_0xa093('0x3')](_0x5bc87c,_0x232f44);};}function removeListener(_0x28d105,_0x11e7a6){return function(){VoiceQueueReportEvents[_0xa093('0x4')](_0x28d105,_0x11e7a6);};}exports[_0xa093('0x5')]=function(_0x2346f1){for(var _0x145f58=0x0,_0xf7b14a=events[_0xa093('0x6')];_0x145f58<_0xf7b14a;_0x145f58++){var _0x21ee11=events[_0x145f58];var _0x25bad2=createListener(_0xa093('0x7')+_0x21ee11,_0x2346f1);VoiceQueueReportEvents['on'](_0x21ee11,_0x25bad2);}};
\ No newline at end of file
index 0ed8702..1c45a35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aec=['destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','./voiceQueuesLog.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x2aec,0x1dd));var _0xc2ae=function(_0x473df0,_0x2efc8d){_0x473df0=_0x473df0-0x0;var _0x9e3a4f=_0x2aec[_0x473df0];return _0x9e3a4f;};'use strict';var multer=require(_0xc2ae('0x0'));var util=require('util');var path=require(_0xc2ae('0x1'));var timeout=require('connect-timeout');var express=require(_0xc2ae('0x2'));var router=express[_0xc2ae('0x3')]();var fs_extra=require(_0xc2ae('0x4'));var auth=require(_0xc2ae('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc2ae('0x6'));router[_0xc2ae('0x7')]('/',auth[_0xc2ae('0x8')](),controller[_0xc2ae('0x9')]);router[_0xc2ae('0x7')]('/:id',auth[_0xc2ae('0x8')](),controller[_0xc2ae('0xa')]);router[_0xc2ae('0xb')]('/',auth[_0xc2ae('0x8')](),controller[_0xc2ae('0xc')]);router[_0xc2ae('0xd')](_0xc2ae('0xe'),auth[_0xc2ae('0x8')](),controller[_0xc2ae('0xf')]);router[_0xc2ae('0x10')]('/:id',auth[_0xc2ae('0x8')](),controller[_0xc2ae('0x11')]);module[_0xc2ae('0x12')]=router;
\ No newline at end of file
+var _0x2f76=['put','update','delete','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x2f76,0x1a5));var _0x62f7=function(_0x5c4fcd,_0x396275){_0x5c4fcd=_0x5c4fcd-0x0;var _0x359242=_0x2f76[_0x5c4fcd];return _0x359242;};'use strict';var multer=require(_0x62f7('0x0'));var util=require(_0x62f7('0x1'));var path=require(_0x62f7('0x2'));var timeout=require(_0x62f7('0x3'));var express=require(_0x62f7('0x4'));var router=express[_0x62f7('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x62f7('0x6'));var interaction=require(_0x62f7('0x7'));var config=require('../../config/environment');var controller=require(_0x62f7('0x8'));router[_0x62f7('0x9')]('/',auth[_0x62f7('0xa')](),controller[_0x62f7('0xb')]);router['get'](_0x62f7('0xc'),auth['isAuthenticated'](),controller[_0x62f7('0xd')]);router[_0x62f7('0xe')]('/',auth[_0x62f7('0xa')](),controller[_0x62f7('0xf')]);router[_0x62f7('0x10')]('/:id',auth[_0x62f7('0xa')](),controller[_0x62f7('0x11')]);router[_0x62f7('0x12')](_0x62f7('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 7f604a9..92358a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2e7=['moment','exports','STRING','format','YYYY-MM-DD\x20HH:mm:ss','sequelize'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xa2e7,0x95));var _0x7a2e=function(_0x540eb8,_0x4c9bb4){_0x540eb8=_0x540eb8-0x0;var _0x587e07=_0xa2e7[_0x540eb8];return _0x587e07;};'use strict';var Sequelize=require(_0x7a2e('0x0'));var moment=require(_0x7a2e('0x1'));module[_0x7a2e('0x2')]={'time':{'type':Sequelize[_0x7a2e('0x3')]},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':moment()[_0x7a2e('0x4')](_0x7a2e('0x5'))}};
\ No newline at end of file
+var _0x7380=['STRING','DATE','moment','exports'];(function(_0x323c9b,_0x42691f){var _0x12751a=function(_0x15f896){while(--_0x15f896){_0x323c9b['push'](_0x323c9b['shift']());}};_0x12751a(++_0x42691f);}(_0x7380,0x172));var _0x0738=function(_0x2eb5bc,_0x4634c6){_0x2eb5bc=_0x2eb5bc-0x0;var _0x51c7b1=_0x7380[_0x2eb5bc];return _0x51c7b1;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x0738('0x0'));module[_0x0738('0x1')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x0738('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x0738('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x0738('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x0738('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x0738('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x0738('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x0738('0x3')],'allowNull':![],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}};
\ No newline at end of file
index 46f1fe9..a1e1104 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b69=['VoiceQueuesLog','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','stack','name','send','index'];(function(_0x22ac0e,_0x20aa35){var _0x4b9b0c=function(_0x350037){while(--_0x350037){_0x22ac0e['push'](_0x22ac0e['shift']());}};_0x4b9b0c(++_0x20aa35);}(_0x5b69,0x6a));var _0x95b6=function(_0xaecc27,_0x3b15ab){_0xaecc27=_0xaecc27-0x0;var _0x2203ec=_0x5b69[_0xaecc27];return _0x2203ec;};'use strict';var emlformat=require(_0x95b6('0x0'));var rimraf=require(_0x95b6('0x1'));var zipdir=require(_0x95b6('0x2'));var jsonpatch=require(_0x95b6('0x3'));var rp=require(_0x95b6('0x4'));var moment=require(_0x95b6('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x95b6('0x6'));var path=require('path');var sox=require(_0x95b6('0x7'));var csv=require(_0x95b6('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x95b6('0x9'));var squel=require(_0x95b6('0xa'));var crypto=require(_0x95b6('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x95b6('0xc'));var toCsv=require(_0x95b6('0x8'));var querystring=require(_0x95b6('0xd'));var Papa=require(_0x95b6('0xe'));var Redis=require('ioredis');var authService=require(_0x95b6('0xf'));var qs=require(_0x95b6('0x10'));var as=require(_0x95b6('0x11'));var hardwareService=require(_0x95b6('0x12'));var logger=require(_0x95b6('0x13'))(_0x95b6('0x14'));var utils=require(_0x95b6('0x15'));var config=require(_0x95b6('0x16'));var licenseUtil=require(_0x95b6('0x17'));var db=require(_0x95b6('0x18'))['db'];function respondWithStatusCode(_0xfd0808,_0x320a10){_0x320a10=_0x320a10||0xcc;return function(_0xf3bc21){if(_0xf3bc21){return _0xfd0808[_0x95b6('0x19')](_0x320a10);}return _0xfd0808[_0x95b6('0x1a')](_0x320a10)[_0x95b6('0x1b')]();};}function respondWithResult(_0x35c37b,_0x2cf0c9){_0x2cf0c9=_0x2cf0c9||0xc8;return function(_0x433190){if(_0x433190){return _0x35c37b[_0x95b6('0x1a')](_0x2cf0c9)['json'](_0x433190);}};}function respondWithFilteredResult(_0xef931,_0x9d068){return function(_0x500ff5){if(_0x500ff5){var _0x72537=typeof _0x9d068[_0x95b6('0x1c')]===_0x95b6('0x1d')&&typeof _0x9d068[_0x95b6('0x1e')]==='undefined';var _0xaf928a=_0x500ff5[_0x95b6('0x1f')];var _0x560c21=_0x72537?0x0:_0x9d068[_0x95b6('0x1c')];var _0x2e4dc7=_0x72537?_0x500ff5[_0x95b6('0x1f')]:_0x9d068['offset']+_0x9d068[_0x95b6('0x1e')];var _0x3c8239;if(_0x2e4dc7>=_0xaf928a){_0x2e4dc7=_0xaf928a;_0x3c8239=0xc8;}else{_0x3c8239=0xce;}_0xef931['status'](_0x3c8239);return _0xef931[_0x95b6('0x20')]('Content-Range',_0x560c21+'-'+_0x2e4dc7+'/'+_0xaf928a)[_0x95b6('0x21')](_0x500ff5);}return null;};}function patchUpdates(_0x3543bd){return function(_0x2a1489){try{jsonpatch[_0x95b6('0x22')](_0x2a1489,_0x3543bd,!![]);}catch(_0x3ed04e){return BPromise[_0x95b6('0x23')](_0x3ed04e);}return _0x2a1489[_0x95b6('0x24')]();};}function saveUpdates(_0x2ed586,_0x472790){return function(_0x4413c6){if(_0x4413c6){return _0x4413c6[_0x95b6('0x25')](_0x2ed586)[_0x95b6('0x26')](function(_0x1e8df4){return _0x1e8df4;});}return null;};}function removeEntity(_0x901991,_0x4a0d43){return function(_0x93905f){if(_0x93905f){return _0x93905f[_0x95b6('0x27')]()[_0x95b6('0x26')](function(){_0x901991[_0x95b6('0x1a')](0xcc)[_0x95b6('0x1b')]();});}};}function handleEntityNotFound(_0x50b54e,_0x2b399f){return function(_0x1b3bf0){if(!_0x1b3bf0){_0x50b54e[_0x95b6('0x19')](0x194);}return _0x1b3bf0;};}function handleError(_0x347a87,_0x59fbed){_0x59fbed=_0x59fbed||0x1f4;return function(_0x15afc5){logger['error'](_0x15afc5[_0x95b6('0x28')]);if(_0x15afc5[_0x95b6('0x29')]){delete _0x15afc5[_0x95b6('0x29')];}_0x347a87[_0x95b6('0x1a')](_0x59fbed)[_0x95b6('0x2a')](_0x15afc5);};}exports[_0x95b6('0x2b')]=function(_0x1788a5,_0xf6484e){var _0x46474d={},_0x2b3bcf={},_0x261903={'count':0x0,'rows':[]};var _0x2a27b5=_['map'](db[_0x95b6('0x2c')][_0x95b6('0x2d')],function(_0x52e60e){return{'name':_0x52e60e[_0x95b6('0x2e')],'type':_0x52e60e[_0x95b6('0x2f')]['key']};});_0x2b3bcf[_0x95b6('0x30')]=_[_0x95b6('0x31')](_0x2a27b5,_0x95b6('0x29'));_0x2b3bcf[_0x95b6('0x32')]=_[_0x95b6('0x33')](_0x1788a5[_0x95b6('0x32')]);_0x2b3bcf[_0x95b6('0x34')]=_[_0x95b6('0x35')](_0x2b3bcf[_0x95b6('0x30')],_0x2b3bcf['query']);_0x46474d[_0x95b6('0x36')]=_[_0x95b6('0x35')](_0x2b3bcf['model'],qs['fields'](_0x1788a5['query'][_0x95b6('0x37')]));_0x46474d[_0x95b6('0x36')]=_0x46474d[_0x95b6('0x36')][_0x95b6('0x38')]?_0x46474d[_0x95b6('0x36')]:_0x2b3bcf[_0x95b6('0x30')];if(!_0x1788a5[_0x95b6('0x32')]['hasOwnProperty'](_0x95b6('0x39'))){_0x46474d[_0x95b6('0x1e')]=qs[_0x95b6('0x1e')](_0x1788a5[_0x95b6('0x32')][_0x95b6('0x1e')]);_0x46474d['offset']=qs[_0x95b6('0x1c')](_0x1788a5[_0x95b6('0x32')][_0x95b6('0x1c')]);}_0x46474d[_0x95b6('0x3a')]=qs['sort'](_0x1788a5[_0x95b6('0x32')][_0x95b6('0x3b')]);_0x46474d['where']=qs['filters'](_[_0x95b6('0x3c')](_0x1788a5[_0x95b6('0x32')],_0x2b3bcf[_0x95b6('0x34')]),_0x2a27b5);if(_0x1788a5[_0x95b6('0x32')][_0x95b6('0x3d')]){_0x46474d[_0x95b6('0x3e')]=_[_0x95b6('0x3f')](_0x46474d[_0x95b6('0x3e')],{'$or':_['map'](_0x2a27b5,function(_0x41ccdb){if(_0x41ccdb['type']!==_0x95b6('0x40')){var _0x486031={};_0x486031[_0x41ccdb[_0x95b6('0x29')]]={'$like':'%'+_0x1788a5[_0x95b6('0x32')][_0x95b6('0x3d')]+'%'};return _0x486031;}})});}_0x46474d=_[_0x95b6('0x3f')]({},_0x46474d,_0x1788a5[_0x95b6('0x41')]);var _0x1e2eef={'where':_0x46474d[_0x95b6('0x3e')]};return db[_0x95b6('0x2c')][_0x95b6('0x1f')](_0x1e2eef)[_0x95b6('0x26')](function(_0x33ffa8){_0x261903[_0x95b6('0x1f')]=_0x33ffa8;if(_0x1788a5[_0x95b6('0x32')][_0x95b6('0x42')]){_0x46474d['include']=[{'all':!![]}];}return db[_0x95b6('0x2c')][_0x95b6('0x43')](_0x46474d);})['then'](function(_0xc2804){_0x261903['rows']=_0xc2804;return _0x261903;})[_0x95b6('0x26')](respondWithFilteredResult(_0xf6484e,_0x46474d))[_0x95b6('0x44')](handleError(_0xf6484e,null));};exports[_0x95b6('0x45')]=function(_0x5ef270,_0x3a73e2){var _0x32023a={'raw':!![],'where':{'id':_0x5ef270[_0x95b6('0x46')]['id']}},_0x4ccbb3={};_0x4ccbb3[_0x95b6('0x30')]=_['keys'](db['VoiceQueuesLog'][_0x95b6('0x2d')]);_0x4ccbb3['query']=_[_0x95b6('0x33')](_0x5ef270[_0x95b6('0x32')]);_0x4ccbb3[_0x95b6('0x34')]=_[_0x95b6('0x35')](_0x4ccbb3[_0x95b6('0x30')],_0x4ccbb3[_0x95b6('0x32')]);_0x32023a['attributes']=_['intersection'](_0x4ccbb3[_0x95b6('0x30')],qs[_0x95b6('0x37')](_0x5ef270['query'][_0x95b6('0x37')]));_0x32023a['attributes']=_0x32023a['attributes']['length']?_0x32023a['attributes']:_0x4ccbb3[_0x95b6('0x30')];if(_0x5ef270['query'][_0x95b6('0x42')]){_0x32023a[_0x95b6('0x47')]=[{'all':!![]}];}_0x32023a=_['merge']({},_0x32023a,_0x5ef270['options']);return db[_0x95b6('0x2c')][_0x95b6('0x48')](_0x32023a)[_0x95b6('0x26')](handleEntityNotFound(_0x3a73e2,null))[_0x95b6('0x26')](respondWithResult(_0x3a73e2,null))[_0x95b6('0x44')](handleError(_0x3a73e2,null));};exports[_0x95b6('0x49')]=function(_0x598d91,_0x15647e){return db[_0x95b6('0x2c')][_0x95b6('0x49')](_0x598d91[_0x95b6('0x4a')],{})[_0x95b6('0x26')](respondWithResult(_0x15647e,0xc9))[_0x95b6('0x44')](handleError(_0x15647e,null));};exports[_0x95b6('0x25')]=function(_0x3af425,_0xa71b64){if(_0x3af425[_0x95b6('0x4a')]['id']){delete _0x3af425['body']['id'];}return db[_0x95b6('0x2c')][_0x95b6('0x48')]({'where':{'id':_0x3af425[_0x95b6('0x46')]['id']}})[_0x95b6('0x26')](handleEntityNotFound(_0xa71b64,null))[_0x95b6('0x26')](saveUpdates(_0x3af425[_0x95b6('0x4a')],null))[_0x95b6('0x26')](respondWithResult(_0xa71b64,null))[_0x95b6('0x44')](handleError(_0xa71b64,null));};exports['destroy']=function(_0x1368b9,_0x526ffa){return db[_0x95b6('0x2c')][_0x95b6('0x48')]({'where':{'id':_0x1368b9['params']['id']}})['then'](handleEntityNotFound(_0x526ffa,null))[_0x95b6('0x26')](removeEntity(_0x526ffa,null))[_0x95b6('0x44')](handleError(_0x526ffa,null));};
\ No newline at end of file
+var _0xa266=['zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','index','map','VoiceQueuesLog','fieldName','type','model','name','keys','query','filters','attributes','intersection','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','rawAttributes','length','find','catch','create','body','eml-format','rimraf'];(function(_0x45de21,_0x4443c8){var _0xe2b65a=function(_0x5ccab2){while(--_0x5ccab2){_0x45de21['push'](_0x45de21['shift']());}};_0xe2b65a(++_0x4443c8);}(_0xa266,0x1c6));var _0x6a26=function(_0x47408e,_0x481428){_0x47408e=_0x47408e-0x0;var _0x1636bc=_0xa266[_0x47408e];return _0x1636bc;};'use strict';var emlformat=require(_0x6a26('0x0'));var rimraf=require(_0x6a26('0x1'));var zipdir=require(_0x6a26('0x2'));var jsonpatch=require(_0x6a26('0x3'));var rp=require('request-promise');var moment=require(_0x6a26('0x4'));var BPromise=require(_0x6a26('0x5'));var Mustache=require(_0x6a26('0x6'));var util=require(_0x6a26('0x7'));var path=require(_0x6a26('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6a26('0x9'));var fs=require('fs');var fs_extra=require(_0x6a26('0xa'));var _=require(_0x6a26('0xb'));var squel=require(_0x6a26('0xc'));var crypto=require(_0x6a26('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6a26('0xe'));var toCsv=require(_0x6a26('0xf'));var querystring=require(_0x6a26('0x10'));var Papa=require(_0x6a26('0x11'));var Redis=require(_0x6a26('0x12'));var authService=require(_0x6a26('0x13'));var qs=require(_0x6a26('0x14'));var as=require(_0x6a26('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6a26('0x16'))(_0x6a26('0x17'));var utils=require(_0x6a26('0x18'));var config=require(_0x6a26('0x19'));var licenseUtil=require(_0x6a26('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2f3ef8,_0x2c81a5){_0x2c81a5=_0x2c81a5||0xcc;return function(_0x4cf8b0){if(_0x4cf8b0){return _0x2f3ef8[_0x6a26('0x1b')](_0x2c81a5);}return _0x2f3ef8['status'](_0x2c81a5)[_0x6a26('0x1c')]();};}function respondWithResult(_0x1396fb,_0x4b0e63){_0x4b0e63=_0x4b0e63||0xc8;return function(_0x45a8bf){if(_0x45a8bf){return _0x1396fb[_0x6a26('0x1d')](_0x4b0e63)[_0x6a26('0x1e')](_0x45a8bf);}};}function respondWithFilteredResult(_0xb9da3a,_0x5a1f1d){return function(_0x42adfb){if(_0x42adfb){var _0x3f589c=typeof _0x5a1f1d[_0x6a26('0x1f')]===_0x6a26('0x20')&&typeof _0x5a1f1d[_0x6a26('0x21')]===_0x6a26('0x20');var _0x27dc3e=_0x42adfb[_0x6a26('0x22')];var _0x15f233=_0x3f589c?0x0:_0x5a1f1d[_0x6a26('0x1f')];var _0x3e0b37=_0x3f589c?_0x42adfb[_0x6a26('0x22')]:_0x5a1f1d[_0x6a26('0x1f')]+_0x5a1f1d[_0x6a26('0x21')];var _0x4e1057;if(_0x3e0b37>=_0x27dc3e){_0x3e0b37=_0x27dc3e;_0x4e1057=0xc8;}else{_0x4e1057=0xce;}_0xb9da3a[_0x6a26('0x1d')](_0x4e1057);return _0xb9da3a[_0x6a26('0x23')](_0x6a26('0x24'),_0x15f233+'-'+_0x3e0b37+'/'+_0x27dc3e)[_0x6a26('0x1e')](_0x42adfb);}return null;};}function patchUpdates(_0x49f222){return function(_0x1406ba){try{jsonpatch[_0x6a26('0x25')](_0x1406ba,_0x49f222,!![]);}catch(_0x370f85){return BPromise[_0x6a26('0x26')](_0x370f85);}return _0x1406ba['save']();};}function saveUpdates(_0x409919,_0x14c9cf){return function(_0x46edeb){if(_0x46edeb){return _0x46edeb[_0x6a26('0x27')](_0x409919)[_0x6a26('0x28')](function(_0x124fba){return _0x124fba;});}return null;};}function removeEntity(_0x579fc3,_0x56d910){return function(_0x36d6cc){if(_0x36d6cc){return _0x36d6cc[_0x6a26('0x29')]()[_0x6a26('0x28')](function(){_0x579fc3[_0x6a26('0x1d')](0xcc)[_0x6a26('0x1c')]();});}};}function handleEntityNotFound(_0x452dbe,_0x2b47d9){return function(_0x46f6a3){if(!_0x46f6a3){_0x452dbe['sendStatus'](0x194);}return _0x46f6a3;};}function handleError(_0x5a37ec,_0x5f54de){_0x5f54de=_0x5f54de||0x1f4;return function(_0x331174){logger['error'](_0x331174[_0x6a26('0x2a')]);if(_0x331174['name']){delete _0x331174['name'];}_0x5a37ec[_0x6a26('0x1d')](_0x5f54de)['send'](_0x331174);};}exports[_0x6a26('0x2b')]=function(_0xec4b75,_0x58c84c){var _0x31c798={},_0x4d0cb8={},_0x1b53a6={'count':0x0,'rows':[]};var _0x547309=_[_0x6a26('0x2c')](db[_0x6a26('0x2d')]['rawAttributes'],function(_0x98e0e3){return{'name':_0x98e0e3[_0x6a26('0x2e')],'type':_0x98e0e3[_0x6a26('0x2f')]['key']};});_0x4d0cb8[_0x6a26('0x30')]=_[_0x6a26('0x2c')](_0x547309,_0x6a26('0x31'));_0x4d0cb8['query']=_[_0x6a26('0x32')](_0xec4b75[_0x6a26('0x33')]);_0x4d0cb8[_0x6a26('0x34')]=_['intersection'](_0x4d0cb8['model'],_0x4d0cb8[_0x6a26('0x33')]);_0x31c798[_0x6a26('0x35')]=_[_0x6a26('0x36')](_0x4d0cb8[_0x6a26('0x30')],qs['fields'](_0xec4b75['query'][_0x6a26('0x37')]));_0x31c798['attributes']=_0x31c798['attributes']['length']?_0x31c798['attributes']:_0x4d0cb8[_0x6a26('0x30')];if(!_0xec4b75[_0x6a26('0x33')]['hasOwnProperty'](_0x6a26('0x38'))){_0x31c798[_0x6a26('0x21')]=qs[_0x6a26('0x21')](_0xec4b75[_0x6a26('0x33')][_0x6a26('0x21')]);_0x31c798[_0x6a26('0x1f')]=qs[_0x6a26('0x1f')](_0xec4b75['query'][_0x6a26('0x1f')]);}_0x31c798[_0x6a26('0x39')]=qs[_0x6a26('0x3a')](_0xec4b75[_0x6a26('0x33')][_0x6a26('0x3a')]);_0x31c798[_0x6a26('0x3b')]=qs[_0x6a26('0x34')](_[_0x6a26('0x3c')](_0xec4b75[_0x6a26('0x33')],_0x4d0cb8[_0x6a26('0x34')]),_0x547309);if(_0xec4b75['query'][_0x6a26('0x3d')]){_0x31c798[_0x6a26('0x3b')]=_[_0x6a26('0x3e')](_0x31c798[_0x6a26('0x3b')],{'$or':_['map'](_0x547309,function(_0x2f8a20){if(_0x2f8a20[_0x6a26('0x2f')]!==_0x6a26('0x3f')){var _0x1ff959={};_0x1ff959[_0x2f8a20['name']]={'$like':'%'+_0xec4b75[_0x6a26('0x33')][_0x6a26('0x3d')]+'%'};return _0x1ff959;}})});}_0x31c798=_[_0x6a26('0x3e')]({},_0x31c798,_0xec4b75[_0x6a26('0x40')]);var _0x2c6ae2={'where':_0x31c798[_0x6a26('0x3b')]};return db['VoiceQueuesLog'][_0x6a26('0x22')](_0x2c6ae2)[_0x6a26('0x28')](function(_0x3df887){_0x1b53a6[_0x6a26('0x22')]=_0x3df887;if(_0xec4b75[_0x6a26('0x33')][_0x6a26('0x41')]){_0x31c798[_0x6a26('0x42')]=[{'all':!![]}];}return db[_0x6a26('0x2d')][_0x6a26('0x43')](_0x31c798);})[_0x6a26('0x28')](function(_0x5d1495){_0x1b53a6['rows']=_0x5d1495;return _0x1b53a6;})['then'](respondWithFilteredResult(_0x58c84c,_0x31c798))['catch'](handleError(_0x58c84c,null));};exports[_0x6a26('0x44')]=function(_0x2f986c,_0x58a69e){var _0x30474b={'raw':!![],'where':{'id':_0x2f986c[_0x6a26('0x45')]['id']}},_0x2042dc={};_0x2042dc[_0x6a26('0x30')]=_[_0x6a26('0x32')](db[_0x6a26('0x2d')][_0x6a26('0x46')]);_0x2042dc[_0x6a26('0x33')]=_[_0x6a26('0x32')](_0x2f986c['query']);_0x2042dc[_0x6a26('0x34')]=_[_0x6a26('0x36')](_0x2042dc[_0x6a26('0x30')],_0x2042dc[_0x6a26('0x33')]);_0x30474b[_0x6a26('0x35')]=_[_0x6a26('0x36')](_0x2042dc['model'],qs[_0x6a26('0x37')](_0x2f986c[_0x6a26('0x33')][_0x6a26('0x37')]));_0x30474b[_0x6a26('0x35')]=_0x30474b[_0x6a26('0x35')][_0x6a26('0x47')]?_0x30474b['attributes']:_0x2042dc[_0x6a26('0x30')];if(_0x2f986c[_0x6a26('0x33')][_0x6a26('0x41')]){_0x30474b[_0x6a26('0x42')]=[{'all':!![]}];}_0x30474b=_[_0x6a26('0x3e')]({},_0x30474b,_0x2f986c['options']);return db[_0x6a26('0x2d')][_0x6a26('0x48')](_0x30474b)[_0x6a26('0x28')](handleEntityNotFound(_0x58a69e,null))['then'](respondWithResult(_0x58a69e,null))[_0x6a26('0x49')](handleError(_0x58a69e,null));};exports[_0x6a26('0x4a')]=function(_0x22e106,_0x51fff5){return db[_0x6a26('0x2d')]['create'](_0x22e106[_0x6a26('0x4b')],{})[_0x6a26('0x28')](respondWithResult(_0x51fff5,0xc9))[_0x6a26('0x49')](handleError(_0x51fff5,null));};exports[_0x6a26('0x27')]=function(_0x20d16a,_0xff68ec){if(_0x20d16a[_0x6a26('0x4b')]['id']){delete _0x20d16a[_0x6a26('0x4b')]['id'];}return db[_0x6a26('0x2d')][_0x6a26('0x48')]({'where':{'id':_0x20d16a[_0x6a26('0x45')]['id']}})['then'](handleEntityNotFound(_0xff68ec,null))['then'](saveUpdates(_0x20d16a['body'],null))[_0x6a26('0x28')](respondWithResult(_0xff68ec,null))[_0x6a26('0x49')](handleError(_0xff68ec,null));};exports['destroy']=function(_0x2a24c8,_0x2943b0){return db[_0x6a26('0x2d')]['find']({'where':{'id':_0x2a24c8[_0x6a26('0x45')]['id']}})[_0x6a26('0x28')](handleEntityNotFound(_0x2943b0,null))[_0x6a26('0x28')](removeEntity(_0x2943b0,null))[_0x6a26('0x49')](handleError(_0x2943b0,null));};
\ No newline at end of file
index 3b58485..9012388 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd20e=['request-promise','rimraf','../../config/environment','exports','VoiceQueuesLog','event','dtm','lodash','util','../../config/logger','api','bluebird'];(function(_0x46bd29,_0x475c78){var _0x215991=function(_0x2aa138){while(--_0x2aa138){_0x46bd29['push'](_0x46bd29['shift']());}};_0x215991(++_0x475c78);}(_0xd20e,0xbb));var _0xed20=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0xd20e[_0x5f09c5];return _0x426ad9;};'use strict';var _=require(_0xed20('0x0'));var util=require(_0xed20('0x1'));var logger=require(_0xed20('0x2'))(_0xed20('0x3'));var moment=require('moment');var BPromise=require(_0xed20('0x4'));var rp=require(_0xed20('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xed20('0x6'));var config=require(_0xed20('0x7'));var attributes=require('./voiceQueuesLog.attributes');module[_0xed20('0x8')]=function(_0x1eda4e,_0x408ac3){return _0x1eda4e['define'](_0xed20('0x9'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0xed20('0xa'),_0xed20('0xb')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x76ff=['util','moment','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','event_dtm','dtm','lodash'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x76ff,0xa8));var _0xf76f=function(_0x1079c7,_0x50db24){_0x1079c7=_0x1079c7-0x0;var _0x5e441c=_0x76ff[_0x1079c7];return _0x5e441c;};'use strict';var _=require(_0xf76f('0x0'));var util=require(_0xf76f('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf76f('0x2'));var BPromise=require('bluebird');var rp=require(_0xf76f('0x3'));var fs=require('fs');var path=require(_0xf76f('0x4'));var rimraf=require(_0xf76f('0x5'));var config=require(_0xf76f('0x6'));var attributes=require(_0xf76f('0x7'));module[_0xf76f('0x8')]=function(_0x1aa763,_0x47f244){return _0x1aa763[_0xf76f('0x9')](_0xf76f('0xa'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0xf76f('0xb'),'fields':['event',_0xf76f('0xc')]}],'timestamps':![]});};
\ No newline at end of file
index d206dc9..72da6b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa786=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0xa786,0x1f1));var _0x6a78=function(_0x57cb5d,_0x2f8ed0){_0x57cb5d=_0x57cb5d-0x0;var _0x2f0d83=_0xa786[_0x57cb5d];return _0x2f0d83;};'use strict';var _=require(_0x6a78('0x0'));var util=require(_0x6a78('0x1'));var moment=require(_0x6a78('0x2'));var BPromise=require(_0x6a78('0x3'));var rs=require(_0x6a78('0x4'));var fs=require('fs');var Redis=require(_0x6a78('0x5'));var db=require(_0x6a78('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x6a78('0x7'))(_0x6a78('0x8'));var config=require(_0x6a78('0x9'));var jayson=require(_0x6a78('0xa'));var client=jayson['client'][_0x6a78('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x34deae,_0x3df8b4,_0x55482c){return new BPromise(function(_0x58d2bc,_0x489b26){return client[_0x6a78('0xc')](_0x34deae,_0x55482c)['then'](function(_0x5e3e6b){logger[_0x6a78('0xd')](_0x6a78('0xe'),_0x3df8b4,_0x6a78('0xf'));logger[_0x6a78('0x10')](_0x6a78('0x11'),_0x3df8b4,'request\x20sent',JSON['stringify'](_0x5e3e6b));if(_0x5e3e6b[_0x6a78('0x12')]){if(_0x5e3e6b[_0x6a78('0x12')]['code']===0x1f4){logger[_0x6a78('0x12')](_0x6a78('0xe'),_0x3df8b4,_0x5e3e6b[_0x6a78('0x12')][_0x6a78('0x13')]);return _0x489b26(_0x5e3e6b[_0x6a78('0x12')]['message']);}logger[_0x6a78('0x12')](_0x6a78('0xe'),_0x3df8b4,_0x5e3e6b['error'][_0x6a78('0x13')]);return _0x58d2bc(_0x5e3e6b[_0x6a78('0x12')][_0x6a78('0x13')]);}else{logger[_0x6a78('0xd')](_0x6a78('0xe'),_0x3df8b4,_0x6a78('0xf'));_0x58d2bc(_0x5e3e6b[_0x6a78('0x14')][_0x6a78('0x13')]);}})['catch'](function(_0x3f9482){logger[_0x6a78('0x12')](_0x6a78('0xe'),_0x3df8b4,_0x3f9482);_0x489b26(_0x3f9482);});});}
\ No newline at end of file
+var _0x44f4=['error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x599e1e,_0x434df0){var _0x152c87=function(_0x3a96d2){while(--_0x3a96d2){_0x599e1e['push'](_0x599e1e['shift']());}};_0x152c87(++_0x434df0);}(_0x44f4,0x140));var _0x444f=function(_0x675141,_0x2d7c4d){_0x675141=_0x675141-0x0;var _0x385659=_0x44f4[_0x675141];return _0x385659;};'use strict';var _=require(_0x444f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x444f('0x1'));var rs=require(_0x444f('0x2'));var fs=require('fs');var Redis=require(_0x444f('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x444f('0x4'));var logger=require('../../config/logger')(_0x444f('0x5'));var config=require(_0x444f('0x6'));var jayson=require(_0x444f('0x7'));var client=jayson[_0x444f('0x8')][_0x444f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1bb0cf,_0x25c7ca,_0x5631f4){return new BPromise(function(_0x35d321,_0x228309){return client['request'](_0x1bb0cf,_0x5631f4)['then'](function(_0x50ef6d){logger[_0x444f('0xa')](_0x444f('0xb'),_0x25c7ca,_0x444f('0xc'));logger[_0x444f('0xd')](_0x444f('0xe'),_0x25c7ca,_0x444f('0xc'),JSON[_0x444f('0xf')](_0x50ef6d));if(_0x50ef6d[_0x444f('0x10')]){if(_0x50ef6d[_0x444f('0x10')][_0x444f('0x11')]===0x1f4){logger[_0x444f('0x10')]('VoiceQueuesLog,\x20%s,\x20%s',_0x25c7ca,_0x50ef6d[_0x444f('0x10')]['message']);return _0x228309(_0x50ef6d[_0x444f('0x10')][_0x444f('0x12')]);}logger[_0x444f('0x10')](_0x444f('0xb'),_0x25c7ca,_0x50ef6d[_0x444f('0x10')][_0x444f('0x12')]);return _0x35d321(_0x50ef6d[_0x444f('0x10')]['message']);}else{logger['info'](_0x444f('0xb'),_0x25c7ca,_0x444f('0xc'));_0x35d321(_0x50ef6d[_0x444f('0x13')][_0x444f('0x12')]);}})[_0x444f('0x14')](function(_0x10a4ad){logger[_0x444f('0x10')](_0x444f('0xb'),_0x25c7ca,_0x10a4ad);_0x228309(_0x10a4ad);});});}
\ No newline at end of file
index cc050d7..b51dabd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca80=['runTranscribe','put','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./voiceRecording.controller','get','isAuthenticated','/describe','describe','/:id','show','download','downloads','downloadTranscribe','post','create','/:id/transcribe'];(function(_0x1f4719,_0x183aaf){var _0x15aae9=function(_0x60e584){while(--_0x60e584){_0x1f4719['push'](_0x1f4719['shift']());}};_0x15aae9(++_0x183aaf);}(_0xca80,0xf4));var _0x0ca8=function(_0x4de6cd,_0xcaf8e8){_0x4de6cd=_0x4de6cd-0x0;var _0x5df267=_0xca80[_0x4de6cd];return _0x5df267;};'use strict';var multer=require('multer');var util=require(_0x0ca8('0x0'));var path=require(_0x0ca8('0x1'));var timeout=require(_0x0ca8('0x2'));var express=require(_0x0ca8('0x3'));var router=express[_0x0ca8('0x4')]();var fs_extra=require(_0x0ca8('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x0ca8('0x6'));var controller=require(_0x0ca8('0x7'));router[_0x0ca8('0x8')]('/',auth[_0x0ca8('0x9')](),controller['index']);router[_0x0ca8('0x8')](_0x0ca8('0xa'),auth[_0x0ca8('0x9')](),controller[_0x0ca8('0xb')]);router[_0x0ca8('0x8')](_0x0ca8('0xc'),auth['isAuthenticated'](),controller[_0x0ca8('0xd')]);router[_0x0ca8('0x8')]('/:id/download',auth[_0x0ca8('0x9')](),controller[_0x0ca8('0xe')]);router[_0x0ca8('0x8')]('/:id/downloads',controller[_0x0ca8('0xf')]);router[_0x0ca8('0x8')]('/:id/transcribe',auth[_0x0ca8('0x9')](),controller[_0x0ca8('0x10')]);router[_0x0ca8('0x11')]('/',auth[_0x0ca8('0x9')](),controller[_0x0ca8('0x12')]);router[_0x0ca8('0x11')](_0x0ca8('0x13'),auth['isAuthenticated'](),controller[_0x0ca8('0x14')]);router[_0x0ca8('0x15')](_0x0ca8('0xc'),auth[_0x0ca8('0x9')](),controller['update']);router[_0x0ca8('0x16')](_0x0ca8('0xc'),auth[_0x0ca8('0x9')](),controller['destroy']);module[_0x0ca8('0x17')]=router;
\ No newline at end of file
+var _0x725c=['../../components/interaction/service','./voiceRecording.controller','get','isAuthenticated','/describe','/:id','show','/:id/download','download','/:id/downloads','downloadTranscribe','post','create','runTranscribe','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service'];(function(_0x3e3064,_0x3dd6f5){var _0x4547e1=function(_0x785d07){while(--_0x785d07){_0x3e3064['push'](_0x3e3064['shift']());}};_0x4547e1(++_0x3dd6f5);}(_0x725c,0x73));var _0xc725=function(_0x4a055e,_0x59b80a){_0x4a055e=_0x4a055e-0x0;var _0x328a29=_0x725c[_0x4a055e];return _0x328a29;};'use strict';var multer=require('multer');var util=require(_0xc725('0x0'));var path=require('path');var timeout=require(_0xc725('0x1'));var express=require(_0xc725('0x2'));var router=express[_0xc725('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc725('0x4'));var interaction=require(_0xc725('0x5'));var config=require('../../config/environment');var controller=require(_0xc725('0x6'));router[_0xc725('0x7')]('/',auth[_0xc725('0x8')](),controller['index']);router[_0xc725('0x7')](_0xc725('0x9'),auth[_0xc725('0x8')](),controller['describe']);router[_0xc725('0x7')](_0xc725('0xa'),auth[_0xc725('0x8')](),controller[_0xc725('0xb')]);router[_0xc725('0x7')](_0xc725('0xc'),auth[_0xc725('0x8')](),controller[_0xc725('0xd')]);router[_0xc725('0x7')](_0xc725('0xe'),controller['downloads']);router[_0xc725('0x7')]('/:id/transcribe',auth['isAuthenticated'](),controller[_0xc725('0xf')]);router[_0xc725('0x10')]('/',auth[_0xc725('0x8')](),controller[_0xc725('0x11')]);router['post']('/:id/transcribe',auth[_0xc725('0x8')](),controller[_0xc725('0x12')]);router[_0xc725('0x13')]('/:id',auth[_0xc725('0x8')](),controller[_0xc725('0x14')]);router[_0xc725('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xc725('0x16')]);module[_0xc725('0x17')]=router;
\ No newline at end of file
index 22075b9..ff6ee76 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(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'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(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'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 c3a8f7a..988c17e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82f3=['uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','name','send','index','map','VoiceRecording','rawAttributes','fieldName','differenceBy','format','query','keys','filters','model','attributes','intersection','length','order','sort','where','pick','filter','merge','includeAll','findAll','catch','show','fields','include','options','find','create','body','describe','download','../../components/encryptor','type','params','value','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','filename','unlink','message','VoiceRecording\x20not\x20found','Not\x20found','downloads','sequelize','MD5','col','uniqueid','token','$and','push','extname','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','basename','readFileSync','bucket','Bucket','location','Location','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJobName','transcribeName','TranscriptionJob','transcribeStatus','runTranscribe','findOne','secrets','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','transcribeAccountId','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','IN_PROGRESS','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','aws-sdk'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x82f3,0x1b9));var _0x382f=function(_0x19ce02,_0x92a2a9){_0x19ce02=_0x19ce02-0x0;var _0x122aeb=_0x82f3[_0x19ce02];return _0x122aeb;};'use strict';var emlformat=require(_0x382f('0x0'));var rimraf=require(_0x382f('0x1'));var zipdir=require(_0x382f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x382f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x382f('0x4'));var util=require(_0x382f('0x5'));var path=require(_0x382f('0x6'));var sox=require(_0x382f('0x7'));var csv=require(_0x382f('0x8'));var ejs=require(_0x382f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x382f('0xa'));var squel=require('squel');var crypto=require(_0x382f('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x382f('0xc'));var toCsv=require(_0x382f('0x8'));var querystring=require(_0x382f('0xd'));var Papa=require('papaparse');var AWS=require(_0x382f('0xe'));var uuidv4=require(_0x382f('0xf'));var Redis=require(_0x382f('0x10'));var authService=require(_0x382f('0x11'));var qs=require(_0x382f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x382f('0x13'));var logger=require(_0x382f('0x14'))(_0x382f('0x15'));var utils=require(_0x382f('0x16'));var config=require(_0x382f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x382f('0x18'))['db'];function respondWithStatusCode(_0x2467fc,_0x42442a){_0x42442a=_0x42442a||0xcc;return function(_0x5f1300){if(_0x5f1300){return _0x2467fc['sendStatus'](_0x42442a);}return _0x2467fc[_0x382f('0x19')](_0x42442a)[_0x382f('0x1a')]();};}function respondWithResult(_0x1b9c8f,_0x33655e){_0x33655e=_0x33655e||0xc8;return function(_0x467a9e){if(_0x467a9e){return _0x1b9c8f[_0x382f('0x19')](_0x33655e)['json'](_0x467a9e);}};}function respondWithFilteredResult(_0x2b239c,_0x4d6b11){return function(_0x596810){if(_0x596810){var _0x5d6d1d=typeof _0x4d6b11[_0x382f('0x1b')]==='undefined'&&typeof _0x4d6b11['limit']==='undefined';var _0x13a9db=_0x596810['count'];var _0x5a66b5=_0x5d6d1d?0x0:_0x4d6b11['offset'];var _0x2dd318=_0x5d6d1d?_0x596810[_0x382f('0x1c')]:_0x4d6b11[_0x382f('0x1b')]+_0x4d6b11[_0x382f('0x1d')];var _0x27e632;if(_0x2dd318>=_0x13a9db){_0x2dd318=_0x13a9db;_0x27e632=0xc8;}else{_0x27e632=0xce;}_0x2b239c[_0x382f('0x19')](_0x27e632);return _0x2b239c[_0x382f('0x1e')](_0x382f('0x1f'),_0x5a66b5+'-'+_0x2dd318+'/'+_0x13a9db)[_0x382f('0x20')](_0x596810);}return null;};}function patchUpdates(_0x433160){return function(_0x4d8274){try{jsonpatch[_0x382f('0x21')](_0x4d8274,_0x433160,!![]);}catch(_0x42cbb0){return BPromise[_0x382f('0x22')](_0x42cbb0);}return _0x4d8274[_0x382f('0x23')]();};}function saveUpdates(_0x27ceb2,_0x2065d1){return function(_0x5aee63){if(_0x5aee63){return _0x5aee63[_0x382f('0x24')](_0x27ceb2)[_0x382f('0x25')](function(_0x4277a2){return _0x4277a2;});}return null;};}function removeEntity(_0x121ee3,_0xdce62d){return function(_0x331fc1){if(_0x331fc1){return _0x331fc1[_0x382f('0x26')]()[_0x382f('0x25')](function(){_0x121ee3['status'](0xcc)[_0x382f('0x1a')]();});}};}function handleEntityNotFound(_0x221dfd,_0x4fc36f){return function(_0x832485){if(!_0x832485){_0x221dfd[_0x382f('0x27')](0x194);}return _0x832485;};}function handleError(_0x13bfb5,_0x46f966){_0x46f966=_0x46f966||0x1f4;return function(_0x1425c6){logger['error'](_0x1425c6['stack']);if(_0x1425c6[_0x382f('0x28')]){delete _0x1425c6[_0x382f('0x28')];}_0x13bfb5[_0x382f('0x19')](_0x46f966)[_0x382f('0x29')](_0x1425c6);};}exports[_0x382f('0x2a')]=function(_0xc69559,_0x42bbee){var _0x149801={},_0x1da038={},_0x171171={'count':0x0,'rows':[]};var _0x52355b=_[_0x382f('0x2b')](db[_0x382f('0x2c')][_0x382f('0x2d')],function(_0x25c0de){return{'name':_0x25c0de[_0x382f('0x2e')],'type':_0x25c0de['type']['key']};});_0x1da038['model']=_[_0x382f('0x2f')](_[_0x382f('0x2b')](_0x52355b,_0x382f('0x28')),[_0x382f('0x30')]);_0x1da038[_0x382f('0x31')]=_[_0x382f('0x32')](_0xc69559[_0x382f('0x31')]);_0x1da038[_0x382f('0x33')]=_['intersection'](_0x1da038[_0x382f('0x34')],_0x1da038['query']);_0x149801[_0x382f('0x35')]=_[_0x382f('0x36')](_0x1da038['model'],qs['fields'](_0xc69559[_0x382f('0x31')]['fields']));_0x149801[_0x382f('0x35')]=_0x149801[_0x382f('0x35')][_0x382f('0x37')]?_0x149801[_0x382f('0x35')]:_0x1da038[_0x382f('0x34')];if(!_0xc69559[_0x382f('0x31')]['hasOwnProperty']('nolimit')){_0x149801[_0x382f('0x1d')]=qs[_0x382f('0x1d')](_0xc69559[_0x382f('0x31')][_0x382f('0x1d')]);_0x149801[_0x382f('0x1b')]=qs[_0x382f('0x1b')](_0xc69559[_0x382f('0x31')][_0x382f('0x1b')]);}_0x149801[_0x382f('0x38')]=qs[_0x382f('0x39')](_0xc69559['query'][_0x382f('0x39')]);_0x149801[_0x382f('0x3a')]=qs[_0x382f('0x33')](_[_0x382f('0x3b')](_0xc69559[_0x382f('0x31')],_0x1da038['filters']),_0x52355b);if(_0xc69559[_0x382f('0x31')][_0x382f('0x3c')]){_0x149801[_0x382f('0x3a')]=_[_0x382f('0x3d')](_0x149801[_0x382f('0x3a')],{'$or':_[_0x382f('0x2b')](_0x52355b,function(_0x2ec2c2){if(_0x2ec2c2['type']!=='VIRTUAL'){var _0x40ff8e={};_0x40ff8e[_0x2ec2c2[_0x382f('0x28')]]={'$like':'%'+_0xc69559[_0x382f('0x31')][_0x382f('0x3c')]+'%'};return _0x40ff8e;}})});}_0x149801=_[_0x382f('0x3d')]({},_0x149801,_0xc69559['options']);var _0x3aa41c={'where':_0x149801[_0x382f('0x3a')]};return db['VoiceRecording']['count'](_0x3aa41c)['then'](function(_0x13e0bd){_0x171171[_0x382f('0x1c')]=_0x13e0bd;if(_0xc69559['query'][_0x382f('0x3e')]){_0x149801['include']=[{'all':!![]}];}return db[_0x382f('0x2c')][_0x382f('0x3f')](_0x149801);})[_0x382f('0x25')](function(_0x975ecf){_0x171171['rows']=_0x975ecf;return _0x171171;})[_0x382f('0x25')](respondWithFilteredResult(_0x42bbee,_0x149801))[_0x382f('0x40')](handleError(_0x42bbee,null));};exports[_0x382f('0x41')]=function(_0x38d05e,_0x27c561){var _0xb34ecc={'raw':![],'where':{'id':_0x38d05e['params']['id']}},_0x4d3554={};_0x4d3554[_0x382f('0x34')]=_[_0x382f('0x32')](db[_0x382f('0x2c')][_0x382f('0x2d')]);_0x4d3554[_0x382f('0x31')]=_[_0x382f('0x32')](_0x38d05e[_0x382f('0x31')]);_0x4d3554[_0x382f('0x33')]=_[_0x382f('0x36')](_0x4d3554[_0x382f('0x34')],_0x4d3554['query']);_0xb34ecc[_0x382f('0x35')]=_[_0x382f('0x36')](_0x4d3554[_0x382f('0x34')],qs[_0x382f('0x42')](_0x38d05e[_0x382f('0x31')][_0x382f('0x42')]));_0xb34ecc['attributes']=_0xb34ecc[_0x382f('0x35')][_0x382f('0x37')]?_0xb34ecc[_0x382f('0x35')]:_0x4d3554[_0x382f('0x34')];if(_0x38d05e[_0x382f('0x31')][_0x382f('0x3e')]){_0xb34ecc[_0x382f('0x43')]=[{'all':!![]}];}_0xb34ecc=_[_0x382f('0x3d')]({},_0xb34ecc,_0x38d05e[_0x382f('0x44')]);return db[_0x382f('0x2c')][_0x382f('0x45')](_0xb34ecc)[_0x382f('0x25')](handleEntityNotFound(_0x27c561,null))['then'](respondWithResult(_0x27c561,null))[_0x382f('0x40')](handleError(_0x27c561,null));};exports[_0x382f('0x46')]=function(_0x14481b,_0x4f7710){return db['VoiceRecording'][_0x382f('0x46')](_0x14481b[_0x382f('0x47')],{})['then'](respondWithResult(_0x4f7710,0xc9))[_0x382f('0x40')](handleError(_0x4f7710,null));};exports[_0x382f('0x24')]=function(_0x1b9f35,_0x569a39){if(_0x1b9f35[_0x382f('0x47')]['id']){delete _0x1b9f35[_0x382f('0x47')]['id'];}return db['VoiceRecording'][_0x382f('0x45')]({'where':{'id':_0x1b9f35['params']['id']}})[_0x382f('0x25')](handleEntityNotFound(_0x569a39,null))['then'](saveUpdates(_0x1b9f35[_0x382f('0x47')],null))[_0x382f('0x25')](respondWithResult(_0x569a39,null))['catch'](handleError(_0x569a39,null));};exports[_0x382f('0x48')]=function(_0x2403e1,_0x24e743){return db[_0x382f('0x2c')]['describe']()[_0x382f('0x25')](respondWithResult(_0x24e743,null))['catch'](handleError(_0x24e743,null));};exports[_0x382f('0x49')]=function(_0x2e8e57,_0xed3dbc,_0xfa3f04){var _0x262629=require(_0x382f('0x4a'));var _0x27e6a3=![];var _0x49aa21={};if(_0x2e8e57['query'][_0x382f('0x4b')]&&_0x2e8e57[_0x382f('0x31')]['type']==='uniqueid'){_0x49aa21['uniqueid']=_0x2e8e57['params']['id'];}else{_0x49aa21['id']=_0x2e8e57[_0x382f('0x4c')]['id'];}return db[_0x382f('0x2c')][_0x382f('0x45')]({'where':_0x49aa21,'attributes':['id','value'],'raw':!![]})[_0x382f('0x25')](handleEntityNotFound(_0xed3dbc,null))[_0x382f('0x25')](function(_0x4a1155){if(_0x4a1155){var _0x3e920a=_0x4a1155[_0x382f('0x4d')];var _0x4c9816=util[_0x382f('0x30')](_0x382f('0x4e'),_0x3e920a);if(fs[_0x382f('0x4f')](_0x4c9816)){_0x27e6a3=!![];return _0x262629[_0x382f('0x50')](_0x4c9816,_0x3e920a,config['secrets'][_0x382f('0x51')])[_0x382f('0x25')](function(){return _0x4a1155;});}return _0x4a1155;}})[_0x382f('0x25')](function(_0x2cc3f0){if(_0x2cc3f0){var _0x46f1f1=_0x2cc3f0['value'];if(!fs[_0x382f('0x4f')](_0x46f1f1)){throw new db[(_0x382f('0x52'))][(_0x382f('0x53'))]('VoiceRecording\x20not\x20found');}if(_0x2cc3f0['filename']){return _0xed3dbc[_0x382f('0x49')](_0x46f1f1,_0x2cc3f0[_0x382f('0x54')]+path['extname'](_0x46f1f1),function(){if(_0x27e6a3){fs[_0x382f('0x55')](_0x46f1f1);}});}else{return _0xed3dbc['download'](_0x46f1f1,function(_0x2e92d6){if(_0x27e6a3){fs[_0x382f('0x55')](_0x46f1f1);}});}}})[_0x382f('0x40')](function(_0x2a0313){if(_0x2a0313[_0x382f('0x56')]===_0x382f('0x57')){_0xed3dbc['status'](0x194)[_0x382f('0x29')](_0x382f('0x58'));}else{return handleError(_0xed3dbc,null);}});};exports[_0x382f('0x59')]=function(_0x275ac6,_0x4102ea,_0x407ede){var _0x595cfe=require(_0x382f('0x4a'));var _0x21e555=![];var _0x467c06={'$and':[db[_0x382f('0x5a')][_0x382f('0x3a')](db[_0x382f('0x5a')]['fn'](_0x382f('0x5b'),db['sequelize'][_0x382f('0x5c')](_0x382f('0x5d'))),_0x275ac6[_0x382f('0x31')][_0x382f('0x5e')])]};if(_0x275ac6[_0x382f('0x31')][_0x382f('0x4b')]&&_0x275ac6[_0x382f('0x31')][_0x382f('0x4b')]===_0x382f('0x5d')){_0x467c06[_0x382f('0x5f')][_0x382f('0x60')]({'uniqueid':_0x275ac6[_0x382f('0x4c')]['id']});}else{_0x467c06['$and']['push']({'id':_0x275ac6[_0x382f('0x4c')]['id']});}return db['VoiceRecording'][_0x382f('0x45')]({'where':_0x467c06,'attributes':['id',_0x382f('0x4d')],'raw':!![]})[_0x382f('0x25')](handleEntityNotFound(_0x4102ea,null))['then'](function(_0xc93bea){if(_0xc93bea){var _0x17a53e=util[_0x382f('0x30')]('%s.cypher',_0xc93bea[_0x382f('0x4d')]);if(fs[_0x382f('0x4f')](_0x17a53e)){_0x21e555=!![];return _0x595cfe[_0x382f('0x50')](_0x17a53e,_0xc93bea[_0x382f('0x4d')],config['secrets']['recording'])[_0x382f('0x25')](function(){return _0xc93bea;});}return _0xc93bea;}})[_0x382f('0x25')](function(_0x3e0410){if(_0x3e0410){if(!fs['existsSync'](_0x3e0410['value'])){throw new db['Sequelize']['ValidationError']('VoiceRecording\x20not\x20found');}if(_0x3e0410[_0x382f('0x54')]){return _0x4102ea['download'](_0x3e0410[_0x382f('0x4d')],_0x3e0410[_0x382f('0x54')]+path[_0x382f('0x61')](_0x3e0410['value']),function(){if(_0x21e555){fs['unlink'](_0x3e0410[_0x382f('0x4d')]);}});}else{return _0x4102ea[_0x382f('0x49')](_0x3e0410[_0x382f('0x4d')],function(_0x50ce3a){if(_0x21e555){fs[_0x382f('0x55')](_0x3e0410[_0x382f('0x4d')]);}});}}})[_0x382f('0x40')](handleError(_0x4102ea,null));};exports[_0x382f('0x26')]=function(_0x1c760c,_0x18c3c6){return db[_0x382f('0x2c')][_0x382f('0x45')]({'where':{'id':_0x1c760c[_0x382f('0x4c')]['id']}})[_0x382f('0x25')](function(_0x4f5968){if(_[_0x382f('0x62')](_0x4f5968)){throw new ReferenceError('Entity\x20not\x20found');}return _0x4f5968;})[_0x382f('0x25')](function(_0x538138){var _0x36352c=_0x538138['value'];logger[_0x382f('0x63')]('cancellazione\x20fisica\x20documento\x20%s',_0x36352c);if(!_['isNil'](_0x538138[_0x382f('0x4d')])&&fs[_0x382f('0x4f')](_0x36352c)){logger[_0x382f('0x63')](_0x382f('0x64')+_0x36352c+_0x382f('0x65'));fs[_0x382f('0x66')](_0x36352c);}_0x36352c=_0x36352c+_0x382f('0x67');if(!_[_0x382f('0x62')](_0x538138[_0x382f('0x4d')])&&fs['existsSync'](_0x36352c)){logger[_0x382f('0x63')](_0x382f('0x64')+_0x36352c+_0x382f('0x65'));fs[_0x382f('0x66')](_0x36352c);}return _0x538138;})[_0x382f('0x25')](function(_0x5eb86d){if(!_0x5eb86d)throw new InternalError();return _0x5eb86d[_0x382f('0x26')]();})[_0x382f('0x25')](function(){_0x18c3c6[_0x382f('0x19')](0xcc)['end']();})[_0x382f('0x40')](handleError(_0x18c3c6,null));};function getBucketslist(_0x2c17b7,_0x1a3ed0,_0x2bc4ac){return new Promise(function(_0x24f688,_0x2979e9){var _0x378706=new AWS['S3']({'accessKeyId':_0x1a3ed0,'secretAccessKey':_0x2c17b7,'region':_0x2bc4ac});_0x378706[_0x382f('0x68')]({},function(_0x1c5509,_0x32253f){if(_0x1c5509){return _0x2979e9(_0x1c5509);}else{return _0x24f688(_0x32253f);}});});}function createBucket(_0x2f0054,_0x452c2e,_0x20b166,_0x38e4ce){return new Promise(function(_0x39fd46,_0x506507){var _0x12c7ff=new AWS['S3']({'accessKeyId':_0x452c2e,'secretAccessKey':_0x2f0054,'region':_0x20b166});_0x12c7ff[_0x382f('0x69')]({'Bucket':_0x38e4ce},function(_0x3cc7f0,_0x24f5dc){if(_0x3cc7f0){return _0x506507(_0x3cc7f0);}else{return _0x39fd46(_0x24f5dc);}});});}function uploadFile(_0x3c74fc,_0x24fefa,_0x1072bc,_0x5d6c1a,_0x2ae782,_0xbfdc30){return new Promise(function(_0x220e6d,_0x2273cc){var _0x113eb8=new AWS['S3']({'accessKeyId':_0x24fefa,'secretAccessKey':_0x3c74fc,'region':_0x1072bc});_0x113eb8[_0x382f('0x6a')]({'Bucket':_0x5d6c1a,'Key':_0x2ae782,'Body':_0xbfdc30},function(_0x231be3,_0x184379){if(_0x231be3){return _0x2273cc(_0x231be3);}else{return _0x220e6d(_0x184379);}});});}function startTranscribe(_0x535248,_0x53af52,_0x5d883c,_0x1ed36a,_0x4e112a,_0x4041d8){return new Promise(function(_0x273592,_0x1f2d25){var _0xe60140=new AWS[(_0x382f('0x6b'))]({'accessKeyId':_0x53af52,'secretAccessKey':_0x535248,'region':_0x5d883c});_0xe60140[_0x382f('0x6c')]({'TranscriptionJobName':_0x1ed36a,'LanguageCode':_0x4e112a,'Media':{'MediaFileUri':_0x4041d8}},function(_0x222c22,_0x178ac1){if(_0x222c22){return _0x1f2d25(_0x222c22);}else{return _0x273592(_0x178ac1);}});});}function transcribe(_0x5435ed,_0x2b612d,_0x42ab75,_0x1ff631,_0x5d10ec,_0x13ac1e,_0x3d41d1){return new Promise(function(_0x129c55,_0x382639){var _0x21a56f={};logger[_0x382f('0x63')](util[_0x382f('0x30')]('[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s',_0x5435ed,_0x5d10ec));return uploadFile(_0x2b612d,_0x42ab75,_0x1ff631,_0x5d10ec,path[_0x382f('0x6d')](_0x13ac1e),fs[_0x382f('0x6e')](_0x13ac1e))[_0x382f('0x25')](function(_0x3268fc){logger[_0x382f('0x63')](util[_0x382f('0x30')]('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0x5435ed,_0x5d10ec,_0x3268fc['Location']));_0x21a56f[_0x382f('0x6f')]=_0x3268fc[_0x382f('0x70')];_0x21a56f[_0x382f('0x71')]=_0x3268fc[_0x382f('0x72')];logger['info'](util[_0x382f('0x30')]('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x5435ed));return startTranscribe(_0x2b612d,_0x42ab75,_0x1ff631,uuidv4(),_0x3d41d1,_0x3268fc[_0x382f('0x72')]);})[_0x382f('0x25')](function(_0x2cc27c){logger[_0x382f('0x63')](util[_0x382f('0x30')](_0x382f('0x73'),_0x5435ed,_0x2cc27c['TranscriptionJob'][_0x382f('0x74')]));_0x21a56f[_0x382f('0x75')]=_0x2cc27c[_0x382f('0x76')]['TranscriptionJobName'];_0x21a56f[_0x382f('0x77')]=_0x2cc27c['TranscriptionJob']['TranscriptionJobStatus'];return _0x129c55(_0x21a56f);})[_0x382f('0x40')](function(_0x588d3f){return _0x382639(_0x588d3f);});});}exports[_0x382f('0x78')]=function(_0x3b89cb,_0x58a1dd,_0x12b7fd){var _0x387dc9;var _0x244f05;var _0x353b52;var _0x3d62d8=require('../../components/encryptor');return db[_0x382f('0x2c')][_0x382f('0x79')]({'where':{'id':_0x3b89cb[_0x382f('0x4c')]['id']}})[_0x382f('0x25')](function(_0x24d1c1){if(_0x24d1c1){var _0xe97ba1=util[_0x382f('0x30')]('%s.cypher',_0x24d1c1[_0x382f('0x4d')]);if(fs[_0x382f('0x4f')](_0xe97ba1)){cypher=!![];return _0x3d62d8[_0x382f('0x50')](_0xe97ba1,_0x24d1c1[_0x382f('0x4d')],config[_0x382f('0x7a')]['recording'])[_0x382f('0x25')](function(){return _0x24d1c1;});}return _0x24d1c1;}})[_0x382f('0x25')](function(_0x51a1de){if(!_0x51a1de){throw new db[(_0x382f('0x52'))][(_0x382f('0x53'))](_0x382f('0x7b'));}_0x244f05=_0x51a1de;return db[_0x382f('0x7c')][_0x382f('0x79')]({'where':{'id':0x1}});})[_0x382f('0x25')](handleEntityNotFound(_0x58a1dd,null))['then'](function(_0x5f3733){if(_0x5f3733){_0x387dc9=_0x5f3733;if(!_0x387dc9[_0x382f('0x7d')]||!_0x387dc9['transcribeAccountId']||!_0x387dc9[_0x382f('0x7e')]||!_0x387dc9[_0x382f('0x7f')]||!_0x387dc9[_0x382f('0x6f')]){throw new db['Sequelize'][(_0x382f('0x53'))](_0x382f('0x80'));}if(_0x3b89cb[_0x382f('0x47')][_0x382f('0x81')]&&(!_0x387dc9[_0x382f('0x82')]||!_0x387dc9[_0x382f('0x83')]||!_0x387dc9[_0x382f('0x84')]||!_0x387dc9[_0x382f('0x7f')]||!_0x387dc9[_0x382f('0x6f')])){throw new db[(_0x382f('0x52'))][(_0x382f('0x53'))](_0x382f('0x85'));}return db[_0x382f('0x86')][_0x382f('0x79')]({'where':{'id':_0x387dc9[_0x382f('0x87')]}});}})['then'](function(_0x2015c3){if(!_0x2015c3){throw new db['Sequelize'][(_0x382f('0x53'))](_0x382f('0x88'));}if(!_0x2015c3[_0x382f('0x89')]||!_0x2015c3[_0x382f('0x8a')]){throw new db[(_0x382f('0x52'))][(_0x382f('0x53'))](_0x382f('0x8b'));}_0x353b52=_0x2015c3;return getBucketslist(_0x353b52[_0x382f('0x89')],_0x353b52[_0x382f('0x8a')],_0x387dc9[_0x382f('0x7e')]);})['then'](function(_0x1d21fe){if(_0x1d21fe&&_0x1d21fe[_0x382f('0x8c')]){var _0x3ac94c=_[_0x382f('0x45')](_0x1d21fe[_0x382f('0x8c')],function(_0x31e89c){return _0x31e89c['Name']===_0x387dc9[_0x382f('0x6f')];});if(!_0x3ac94c){logger[_0x382f('0x63')](util[_0x382f('0x30')](_0x382f('0x8d'),_0x3b89cb[_0x382f('0x4c')]['id'],_0x387dc9[_0x382f('0x6f')]));return createBucket(_0x353b52[_0x382f('0x89')],_0x353b52[_0x382f('0x8a')],_0x387dc9[_0x382f('0x7e')],_0x387dc9[_0x382f('0x6f')]);}logger['info'](util[_0x382f('0x30')](_0x382f('0x8e'),_0x3b89cb[_0x382f('0x4c')]['id'],_0x387dc9['bucket']));return;}})['then'](function(_0x1360cf){if(_0x244f05[_0x382f('0x77')]===_0x382f('0x8f')){return transcribe(_0x3b89cb[_0x382f('0x4c')]['id'],_0x353b52['data1'],_0x353b52[_0x382f('0x8a')],_0x387dc9[_0x382f('0x7e')],_0x387dc9[_0x382f('0x6f')],_0x244f05[_0x382f('0x4d')],_0x387dc9[_0x382f('0x7f')]);}else{logger['info'](util[_0x382f('0x30')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x3b89cb[_0x382f('0x4c')]['id']));return{'transcribeStatus':_0x382f('0x90')};}})[_0x382f('0x25')](function(_0x409a73){if(_0x409a73){_0x409a73['tempSentiment']=_0x3b89cb[_0x382f('0x47')][_0x382f('0x81')];return _0x244f05[_0x382f('0x91')](_0x409a73);}})[_0x382f('0x25')](respondWithResult(_0x58a1dd,null))[_0x382f('0x40')](handleError(_0x58a1dd,null));};function writeFile(_0x2c3c5c,_0x44cce4){return new Promise(function(_0x4a717d,_0x3f6dbd){fs[_0x382f('0x92')](_0x44cce4,_0x2c3c5c,function(_0x1ba5c1,_0x209b99){if(_0x1ba5c1){return _0x3f6dbd(_0x1ba5c1);}else{return _0x4a717d(_0x209b99);}});});}exports[_0x382f('0x93')]=function(_0x3cc99d,_0x51c030,_0x540efe){return db[_0x382f('0x2c')][_0x382f('0x79')]({'where':{'id':_0x3cc99d[_0x382f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x51c030))[_0x382f('0x25')](function(_0x261581){if(_0x261581&&_0x261581['fileText']){var _0x59ecb7=_0x261581[_0x382f('0x94')];var _0xba4619=config[_0x382f('0x95')]+_0x382f('0x96')+_0x261581['id']+'.txt';if(fs[_0x382f('0x4f')](_0xba4619)){return _0xba4619;}return writeFile(_0x59ecb7,_0xba4619)['then'](function(){return _0xba4619;});}else{throw new db[(_0x382f('0x52'))][(_0x382f('0x53'))](_0x382f('0x97'));}})[_0x382f('0x25')](function(_0x447440){return _0x51c030[_0x382f('0x49')](_0x447440);})['catch'](handleError(_0x51c030));};
\ No newline at end of file
+var _0x1915=['File:\x20\x22','unlinkSync','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','listBuckets','createBucket','TranscribeService','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','Location','bucket','Bucket','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJob','TranscriptionJobStatus','runTranscribe','../../components/encryptor','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','NEW','language','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','zip-dir','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','uuid/v4','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','reject','update','then','destroy','end','sendStatus','error','stack','send','index','map','VoiceRecording','rawAttributes','type','key','differenceBy','format','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','name','options','findAll','rows','catch','show','params','keys','include','create','body','find','download','uniqueid','value','existsSync','decryptFile','recording','ValidationError','filename','unlink','VoiceRecording\x20not\x20found','Not\x20found','downloads','sequelize','col','token','push','%s.cypher','secrets','Sequelize','extname','Entity\x20not\x20found','info'];(function(_0x553975,_0x39ea48){var _0x2ce569=function(_0x586fde){while(--_0x586fde){_0x553975['push'](_0x553975['shift']());}};_0x2ce569(++_0x39ea48);}(_0x1915,0x14f));var _0x5191=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x1915[_0x4a9fb1];return _0x348672;};'use strict';var emlformat=require(_0x5191('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5191('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5191('0x2'));var moment=require(_0x5191('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5191('0x4'));var util=require(_0x5191('0x5'));var path=require(_0x5191('0x6'));var sox=require('sox');var csv=require(_0x5191('0x7'));var ejs=require(_0x5191('0x8'));var fs=require('fs');var fs_extra=require(_0x5191('0x9'));var _=require(_0x5191('0xa'));var squel=require(_0x5191('0xb'));var crypto=require('crypto');var jsforce=require(_0x5191('0xc'));var deskjs=require(_0x5191('0xd'));var toCsv=require(_0x5191('0x7'));var querystring=require(_0x5191('0xe'));var Papa=require(_0x5191('0xf'));var AWS=require('aws-sdk');var uuidv4=require(_0x5191('0x10'));var Redis=require('ioredis');var authService=require(_0x5191('0x11'));var qs=require(_0x5191('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5191('0x13'));var logger=require(_0x5191('0x14'))(_0x5191('0x15'));var utils=require('../../config/utils');var config=require(_0x5191('0x16'));var licenseUtil=require(_0x5191('0x17'));var db=require(_0x5191('0x18'))['db'];function respondWithStatusCode(_0x4bebd6,_0x137771){_0x137771=_0x137771||0xcc;return function(_0x54620e){if(_0x54620e){return _0x4bebd6['sendStatus'](_0x137771);}return _0x4bebd6[_0x5191('0x19')](_0x137771)['end']();};}function respondWithResult(_0x4ca24b,_0x2ad51f){_0x2ad51f=_0x2ad51f||0xc8;return function(_0x1d0b0e){if(_0x1d0b0e){return _0x4ca24b[_0x5191('0x19')](_0x2ad51f)[_0x5191('0x1a')](_0x1d0b0e);}};}function respondWithFilteredResult(_0x2e1abf,_0x1a6a5c){return function(_0x5ea8b8){if(_0x5ea8b8){var _0x5e7bb2=typeof _0x1a6a5c[_0x5191('0x1b')]===_0x5191('0x1c')&&typeof _0x1a6a5c[_0x5191('0x1d')]===_0x5191('0x1c');var _0x1ca2a3=_0x5ea8b8[_0x5191('0x1e')];var _0x3e1c49=_0x5e7bb2?0x0:_0x1a6a5c[_0x5191('0x1b')];var _0x168f09=_0x5e7bb2?_0x5ea8b8[_0x5191('0x1e')]:_0x1a6a5c[_0x5191('0x1b')]+_0x1a6a5c[_0x5191('0x1d')];var _0x4f62d1;if(_0x168f09>=_0x1ca2a3){_0x168f09=_0x1ca2a3;_0x4f62d1=0xc8;}else{_0x4f62d1=0xce;}_0x2e1abf[_0x5191('0x19')](_0x4f62d1);return _0x2e1abf[_0x5191('0x1f')]('Content-Range',_0x3e1c49+'-'+_0x168f09+'/'+_0x1ca2a3)[_0x5191('0x1a')](_0x5ea8b8);}return null;};}function patchUpdates(_0x47a1ee){return function(_0x4f7465){try{jsonpatch['apply'](_0x4f7465,_0x47a1ee,!![]);}catch(_0x3206e6){return BPromise[_0x5191('0x20')](_0x3206e6);}return _0x4f7465['save']();};}function saveUpdates(_0x9f899e,_0xe355f9){return function(_0x3cada2){if(_0x3cada2){return _0x3cada2[_0x5191('0x21')](_0x9f899e)[_0x5191('0x22')](function(_0x1f59bc){return _0x1f59bc;});}return null;};}function removeEntity(_0x1eb4a7,_0x4ac40e){return function(_0xe775fb){if(_0xe775fb){return _0xe775fb[_0x5191('0x23')]()['then'](function(){_0x1eb4a7[_0x5191('0x19')](0xcc)[_0x5191('0x24')]();});}};}function handleEntityNotFound(_0x2e2149,_0x7620b8){return function(_0x19e4aa){if(!_0x19e4aa){_0x2e2149[_0x5191('0x25')](0x194);}return _0x19e4aa;};}function handleError(_0x2fd0bc,_0x428cff){_0x428cff=_0x428cff||0x1f4;return function(_0x8f2814){logger[_0x5191('0x26')](_0x8f2814[_0x5191('0x27')]);if(_0x8f2814['name']){delete _0x8f2814['name'];}_0x2fd0bc['status'](_0x428cff)[_0x5191('0x28')](_0x8f2814);};}exports[_0x5191('0x29')]=function(_0x93da38,_0x3b8e67){var _0x33880a={},_0x20c5a4={},_0x25d4c6={'count':0x0,'rows':[]};var _0x4987c7=_[_0x5191('0x2a')](db[_0x5191('0x2b')][_0x5191('0x2c')],function(_0x526073){return{'name':_0x526073['fieldName'],'type':_0x526073[_0x5191('0x2d')][_0x5191('0x2e')]};});_0x20c5a4['model']=_[_0x5191('0x2f')](_[_0x5191('0x2a')](_0x4987c7,'name'),[_0x5191('0x30')]);_0x20c5a4[_0x5191('0x31')]=_['keys'](_0x93da38[_0x5191('0x31')]);_0x20c5a4[_0x5191('0x32')]=_[_0x5191('0x33')](_0x20c5a4[_0x5191('0x34')],_0x20c5a4[_0x5191('0x31')]);_0x33880a[_0x5191('0x35')]=_[_0x5191('0x33')](_0x20c5a4[_0x5191('0x34')],qs[_0x5191('0x36')](_0x93da38[_0x5191('0x31')][_0x5191('0x36')]));_0x33880a[_0x5191('0x35')]=_0x33880a[_0x5191('0x35')][_0x5191('0x37')]?_0x33880a['attributes']:_0x20c5a4[_0x5191('0x34')];if(!_0x93da38[_0x5191('0x31')][_0x5191('0x38')](_0x5191('0x39'))){_0x33880a[_0x5191('0x1d')]=qs[_0x5191('0x1d')](_0x93da38[_0x5191('0x31')]['limit']);_0x33880a[_0x5191('0x1b')]=qs[_0x5191('0x1b')](_0x93da38[_0x5191('0x31')][_0x5191('0x1b')]);}_0x33880a['order']=qs['sort'](_0x93da38[_0x5191('0x31')][_0x5191('0x3a')]);_0x33880a['where']=qs[_0x5191('0x32')](_[_0x5191('0x3b')](_0x93da38[_0x5191('0x31')],_0x20c5a4[_0x5191('0x32')]),_0x4987c7);if(_0x93da38[_0x5191('0x31')][_0x5191('0x3c')]){_0x33880a[_0x5191('0x3d')]=_[_0x5191('0x3e')](_0x33880a['where'],{'$or':_[_0x5191('0x2a')](_0x4987c7,function(_0xfb9d9){if(_0xfb9d9[_0x5191('0x2d')]!=='VIRTUAL'){var _0xfee9f9={};_0xfee9f9[_0xfb9d9[_0x5191('0x3f')]]={'$like':'%'+_0x93da38[_0x5191('0x31')][_0x5191('0x3c')]+'%'};return _0xfee9f9;}})});}_0x33880a=_['merge']({},_0x33880a,_0x93da38[_0x5191('0x40')]);var _0x525b7e={'where':_0x33880a[_0x5191('0x3d')]};return db[_0x5191('0x2b')][_0x5191('0x1e')](_0x525b7e)[_0x5191('0x22')](function(_0xecc8a7){_0x25d4c6[_0x5191('0x1e')]=_0xecc8a7;if(_0x93da38[_0x5191('0x31')]['includeAll']){_0x33880a['include']=[{'all':!![]}];}return db['VoiceRecording'][_0x5191('0x41')](_0x33880a);})[_0x5191('0x22')](function(_0x2382cb){_0x25d4c6[_0x5191('0x42')]=_0x2382cb;return _0x25d4c6;})['then'](respondWithFilteredResult(_0x3b8e67,_0x33880a))[_0x5191('0x43')](handleError(_0x3b8e67,null));};exports[_0x5191('0x44')]=function(_0x3d5de6,_0x44f8d2){var _0x514331={'raw':![],'where':{'id':_0x3d5de6[_0x5191('0x45')]['id']}},_0x31d5a0={};_0x31d5a0[_0x5191('0x34')]=_[_0x5191('0x46')](db[_0x5191('0x2b')][_0x5191('0x2c')]);_0x31d5a0[_0x5191('0x31')]=_[_0x5191('0x46')](_0x3d5de6[_0x5191('0x31')]);_0x31d5a0['filters']=_['intersection'](_0x31d5a0[_0x5191('0x34')],_0x31d5a0[_0x5191('0x31')]);_0x514331[_0x5191('0x35')]=_['intersection'](_0x31d5a0['model'],qs[_0x5191('0x36')](_0x3d5de6['query'][_0x5191('0x36')]));_0x514331[_0x5191('0x35')]=_0x514331[_0x5191('0x35')][_0x5191('0x37')]?_0x514331[_0x5191('0x35')]:_0x31d5a0[_0x5191('0x34')];if(_0x3d5de6[_0x5191('0x31')]['includeAll']){_0x514331[_0x5191('0x47')]=[{'all':!![]}];}_0x514331=_['merge']({},_0x514331,_0x3d5de6['options']);return db[_0x5191('0x2b')]['find'](_0x514331)[_0x5191('0x22')](handleEntityNotFound(_0x44f8d2,null))['then'](respondWithResult(_0x44f8d2,null))[_0x5191('0x43')](handleError(_0x44f8d2,null));};exports['create']=function(_0x45be40,_0x29b909){return db[_0x5191('0x2b')][_0x5191('0x48')](_0x45be40[_0x5191('0x49')],{})[_0x5191('0x22')](respondWithResult(_0x29b909,0xc9))[_0x5191('0x43')](handleError(_0x29b909,null));};exports['update']=function(_0x40646d,_0x54a1b6){if(_0x40646d[_0x5191('0x49')]['id']){delete _0x40646d[_0x5191('0x49')]['id'];}return db[_0x5191('0x2b')][_0x5191('0x4a')]({'where':{'id':_0x40646d['params']['id']}})[_0x5191('0x22')](handleEntityNotFound(_0x54a1b6,null))[_0x5191('0x22')](saveUpdates(_0x40646d['body'],null))[_0x5191('0x22')](respondWithResult(_0x54a1b6,null))[_0x5191('0x43')](handleError(_0x54a1b6,null));};exports['describe']=function(_0x3a527d,_0x4c8f77){return db[_0x5191('0x2b')]['describe']()[_0x5191('0x22')](respondWithResult(_0x4c8f77,null))[_0x5191('0x43')](handleError(_0x4c8f77,null));};exports[_0x5191('0x4b')]=function(_0x43c51f,_0x1b41b7,_0x3b9d19){var _0xf46f9f=require('../../components/encryptor');var _0x7828d3=![];var _0x48ef0f={};if(_0x43c51f[_0x5191('0x31')][_0x5191('0x2d')]&&_0x43c51f[_0x5191('0x31')][_0x5191('0x2d')]===_0x5191('0x4c')){_0x48ef0f['uniqueid']=_0x43c51f['params']['id'];}else{_0x48ef0f['id']=_0x43c51f[_0x5191('0x45')]['id'];}return db[_0x5191('0x2b')][_0x5191('0x4a')]({'where':_0x48ef0f,'attributes':['id',_0x5191('0x4d')],'raw':!![]})['then'](handleEntityNotFound(_0x1b41b7,null))[_0x5191('0x22')](function(_0x3b1ef5){if(_0x3b1ef5){var _0x15b50f=_0x3b1ef5[_0x5191('0x4d')];var _0x53b791=util[_0x5191('0x30')]('%s.cypher',_0x15b50f);if(fs[_0x5191('0x4e')](_0x53b791)){_0x7828d3=!![];return _0xf46f9f[_0x5191('0x4f')](_0x53b791,_0x15b50f,config['secrets'][_0x5191('0x50')])[_0x5191('0x22')](function(){return _0x3b1ef5;});}return _0x3b1ef5;}})['then'](function(_0x2ffa67){if(_0x2ffa67){var _0xc272fd=_0x2ffa67[_0x5191('0x4d')];if(!fs[_0x5191('0x4e')](_0xc272fd)){throw new db['Sequelize'][(_0x5191('0x51'))]('VoiceRecording\x20not\x20found');}if(_0x2ffa67[_0x5191('0x52')]){return _0x1b41b7[_0x5191('0x4b')](_0xc272fd,_0x2ffa67[_0x5191('0x52')]+path['extname'](_0xc272fd),function(){if(_0x7828d3){fs[_0x5191('0x53')](_0xc272fd);}});}else{return _0x1b41b7[_0x5191('0x4b')](_0xc272fd,function(_0x1a3660){if(_0x7828d3){fs[_0x5191('0x53')](_0xc272fd);}});}}})['catch'](function(_0x3dc4af){if(_0x3dc4af['message']===_0x5191('0x54')){_0x1b41b7[_0x5191('0x19')](0x194)[_0x5191('0x28')](_0x5191('0x55'));}else{return handleError(_0x1b41b7,null);}});};exports[_0x5191('0x56')]=function(_0x2ce207,_0xe4a1c4,_0x577699){var _0x4edc23=require('../../components/encryptor');var _0x530799=![];var _0x171fd9={'$and':[db[_0x5191('0x57')][_0x5191('0x3d')](db[_0x5191('0x57')]['fn']('MD5',db[_0x5191('0x57')][_0x5191('0x58')]('uniqueid')),_0x2ce207[_0x5191('0x31')][_0x5191('0x59')])]};if(_0x2ce207[_0x5191('0x31')]['type']&&_0x2ce207[_0x5191('0x31')][_0x5191('0x2d')]===_0x5191('0x4c')){_0x171fd9['$and'][_0x5191('0x5a')]({'uniqueid':_0x2ce207[_0x5191('0x45')]['id']});}else{_0x171fd9['$and'][_0x5191('0x5a')]({'id':_0x2ce207[_0x5191('0x45')]['id']});}return db['VoiceRecording'][_0x5191('0x4a')]({'where':_0x171fd9,'attributes':['id',_0x5191('0x4d')],'raw':!![]})[_0x5191('0x22')](handleEntityNotFound(_0xe4a1c4,null))['then'](function(_0x4ffd8f){if(_0x4ffd8f){var _0x1e2f4a=util['format'](_0x5191('0x5b'),_0x4ffd8f[_0x5191('0x4d')]);if(fs[_0x5191('0x4e')](_0x1e2f4a)){_0x530799=!![];return _0x4edc23[_0x5191('0x4f')](_0x1e2f4a,_0x4ffd8f[_0x5191('0x4d')],config[_0x5191('0x5c')][_0x5191('0x50')])[_0x5191('0x22')](function(){return _0x4ffd8f;});}return _0x4ffd8f;}})[_0x5191('0x22')](function(_0x3063f4){if(_0x3063f4){if(!fs[_0x5191('0x4e')](_0x3063f4[_0x5191('0x4d')])){throw new db[(_0x5191('0x5d'))][(_0x5191('0x51'))](_0x5191('0x54'));}if(_0x3063f4[_0x5191('0x52')]){return _0xe4a1c4[_0x5191('0x4b')](_0x3063f4['value'],_0x3063f4[_0x5191('0x52')]+path[_0x5191('0x5e')](_0x3063f4[_0x5191('0x4d')]),function(){if(_0x530799){fs[_0x5191('0x53')](_0x3063f4['value']);}});}else{return _0xe4a1c4[_0x5191('0x4b')](_0x3063f4[_0x5191('0x4d')],function(_0x35151d){if(_0x530799){fs['unlink'](_0x3063f4[_0x5191('0x4d')]);}});}}})[_0x5191('0x43')](handleError(_0xe4a1c4,null));};exports[_0x5191('0x23')]=function(_0x2b8247,_0x5670d0){return db[_0x5191('0x2b')][_0x5191('0x4a')]({'where':{'id':_0x2b8247[_0x5191('0x45')]['id']}})[_0x5191('0x22')](function(_0x182a10){if(_['isNil'](_0x182a10)){throw new ReferenceError(_0x5191('0x5f'));}return _0x182a10;})[_0x5191('0x22')](function(_0x3ac156){var _0x512311=_0x3ac156[_0x5191('0x4d')];logger[_0x5191('0x60')]('cancellazione\x20fisica\x20documento\x20%s',_0x512311);if(!_['isNil'](_0x3ac156[_0x5191('0x4d')])&&fs[_0x5191('0x4e')](_0x512311)){logger['info'](_0x5191('0x61')+_0x512311+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x5191('0x62')](_0x512311);}_0x512311=_0x512311+'.cypher';if(!_['isNil'](_0x3ac156['value'])&&fs['existsSync'](_0x512311)){logger[_0x5191('0x60')]('File:\x20\x22'+_0x512311+_0x5191('0x63'));fs['unlinkSync'](_0x512311);}return _0x3ac156;})['then'](function(_0x1d0113){if(!_0x1d0113)throw new InternalError();return _0x1d0113[_0x5191('0x23')]();})[_0x5191('0x22')](function(){_0x5670d0[_0x5191('0x19')](0xcc)[_0x5191('0x24')]();})[_0x5191('0x43')](handleError(_0x5670d0,null));};function getBucketslist(_0x35190b,_0x120fab,_0xfb8e9d){return new Promise(function(_0x599dbb,_0x562549){var _0x3601cd=new AWS['S3']({'accessKeyId':_0x120fab,'secretAccessKey':_0x35190b,'region':_0xfb8e9d});_0x3601cd[_0x5191('0x64')]({},function(_0x261b5f,_0x1b2773){if(_0x261b5f){return _0x562549(_0x261b5f);}else{return _0x599dbb(_0x1b2773);}});});}function createBucket(_0x128e80,_0x1d4b3d,_0xf3f715,_0x2348f1){return new Promise(function(_0x5a60ca,_0x5c3c8a){var _0x2f8a87=new AWS['S3']({'accessKeyId':_0x1d4b3d,'secretAccessKey':_0x128e80,'region':_0xf3f715});_0x2f8a87[_0x5191('0x65')]({'Bucket':_0x2348f1},function(_0x48eaa2,_0x5bbf1d){if(_0x48eaa2){return _0x5c3c8a(_0x48eaa2);}else{return _0x5a60ca(_0x5bbf1d);}});});}function uploadFile(_0x1e9964,_0x467c06,_0x4da307,_0x584622,_0x4ddea7,_0x447bc7){return new Promise(function(_0x3a1b19,_0xff67b6){var _0x4f0ab3=new AWS['S3']({'accessKeyId':_0x467c06,'secretAccessKey':_0x1e9964,'region':_0x4da307});_0x4f0ab3['upload']({'Bucket':_0x584622,'Key':_0x4ddea7,'Body':_0x447bc7},function(_0x1e151c,_0x214cc0){if(_0x1e151c){return _0xff67b6(_0x1e151c);}else{return _0x3a1b19(_0x214cc0);}});});}function startTranscribe(_0x2cedfb,_0x40bc79,_0x11aefe,_0x53c5df,_0x1392ff,_0x22f1a0){return new Promise(function(_0x1b0b5c,_0x1dac6c){var _0x36179f=new AWS[(_0x5191('0x66'))]({'accessKeyId':_0x40bc79,'secretAccessKey':_0x2cedfb,'region':_0x11aefe});_0x36179f['startTranscriptionJob']({'TranscriptionJobName':_0x53c5df,'LanguageCode':_0x1392ff,'Media':{'MediaFileUri':_0x22f1a0}},function(_0x492c0,_0x5e1ed8){if(_0x492c0){return _0x1dac6c(_0x492c0);}else{return _0x1b0b5c(_0x5e1ed8);}});});}function transcribe(_0x4761b5,_0x4a744a,_0x1c70b5,_0x23371e,_0x2994e6,_0x23cb1c,_0x5049da){return new Promise(function(_0x5187f3,_0x3e99be){var _0x2ad16d={};logger['info'](util[_0x5191('0x30')](_0x5191('0x67'),_0x4761b5,_0x2994e6));return uploadFile(_0x4a744a,_0x1c70b5,_0x23371e,_0x2994e6,path[_0x5191('0x68')](_0x23cb1c),fs[_0x5191('0x69')](_0x23cb1c))[_0x5191('0x22')](function(_0x468746){logger[_0x5191('0x60')](util[_0x5191('0x30')]('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0x4761b5,_0x2994e6,_0x468746[_0x5191('0x6a')]));_0x2ad16d[_0x5191('0x6b')]=_0x468746[_0x5191('0x6c')];_0x2ad16d['location']=_0x468746[_0x5191('0x6a')];logger['info'](util[_0x5191('0x30')](_0x5191('0x6d'),_0x4761b5));return startTranscribe(_0x4a744a,_0x1c70b5,_0x23371e,uuidv4(),_0x5049da,_0x468746[_0x5191('0x6a')]);})[_0x5191('0x22')](function(_0x1aebf3){logger[_0x5191('0x60')](util['format'](_0x5191('0x6e'),_0x4761b5,_0x1aebf3['TranscriptionJob'][_0x5191('0x6f')]));_0x2ad16d[_0x5191('0x70')]=_0x1aebf3['TranscriptionJob'][_0x5191('0x6f')];_0x2ad16d[_0x5191('0x71')]=_0x1aebf3[_0x5191('0x72')][_0x5191('0x73')];return _0x5187f3(_0x2ad16d);})[_0x5191('0x43')](function(_0x2fa044){return _0x3e99be(_0x2fa044);});});}exports[_0x5191('0x74')]=function(_0x5123d8,_0x2174db,_0x495247){var _0x17992e;var _0x312aa4;var _0x4e6753;var _0x29bd7d=require(_0x5191('0x75'));return db[_0x5191('0x2b')][_0x5191('0x76')]({'where':{'id':_0x5123d8[_0x5191('0x45')]['id']}})[_0x5191('0x22')](function(_0x55f750){if(_0x55f750){var _0x5048eb=util[_0x5191('0x30')]('%s.cypher',_0x55f750[_0x5191('0x4d')]);if(fs[_0x5191('0x4e')](_0x5048eb)){cypher=!![];return _0x29bd7d[_0x5191('0x4f')](_0x5048eb,_0x55f750['value'],config['secrets']['recording'])[_0x5191('0x22')](function(){return _0x55f750;});}return _0x55f750;}})[_0x5191('0x22')](function(_0x5c2153){if(!_0x5c2153){throw new db['Sequelize'][(_0x5191('0x51'))](_0x5191('0x77'));}_0x312aa4=_0x5c2153;return db[_0x5191('0x78')]['findOne']({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x2174db,null))['then'](function(_0x109abe){if(_0x109abe){_0x17992e=_0x109abe;if(!_0x17992e[_0x5191('0x79')]||!_0x17992e[_0x5191('0x7a')]||!_0x17992e[_0x5191('0x7b')]||!_0x17992e['language']||!_0x17992e[_0x5191('0x6b')]){throw new db['Sequelize'][(_0x5191('0x51'))](_0x5191('0x7c'));}if(_0x5123d8['body']['runSentiment']&&(!_0x17992e['sentiment']||!_0x17992e[_0x5191('0x7d')]||!_0x17992e[_0x5191('0x7e')]||!_0x17992e['language']||!_0x17992e['bucket'])){throw new db[(_0x5191('0x5d'))]['ValidationError'](_0x5191('0x7f'));}return db[_0x5191('0x80')][_0x5191('0x76')]({'where':{'id':_0x17992e[_0x5191('0x7a')]}});}})[_0x5191('0x22')](function(_0x14ba54){if(!_0x14ba54){throw new db['Sequelize'][(_0x5191('0x51'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x14ba54[_0x5191('0x81')]||!_0x14ba54[_0x5191('0x82')]){throw new db['Sequelize'][(_0x5191('0x51'))](_0x5191('0x83'));}_0x4e6753=_0x14ba54;return getBucketslist(_0x4e6753[_0x5191('0x81')],_0x4e6753[_0x5191('0x82')],_0x17992e['transcribeRegion']);})[_0x5191('0x22')](function(_0x18d549){if(_0x18d549&&_0x18d549['Buckets']){var _0x11fe4a=_[_0x5191('0x4a')](_0x18d549[_0x5191('0x84')],function(_0x4dffdf){return _0x4dffdf['Name']===_0x17992e['bucket'];});if(!_0x11fe4a){logger[_0x5191('0x60')](util[_0x5191('0x30')](_0x5191('0x85'),_0x5123d8[_0x5191('0x45')]['id'],_0x17992e[_0x5191('0x6b')]));return createBucket(_0x4e6753[_0x5191('0x81')],_0x4e6753['data2'],_0x17992e[_0x5191('0x7b')],_0x17992e[_0x5191('0x6b')]);}logger['info'](util[_0x5191('0x30')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x5123d8[_0x5191('0x45')]['id'],_0x17992e[_0x5191('0x6b')]));return;}})[_0x5191('0x22')](function(_0x5e341c){if(_0x312aa4['transcribeStatus']===_0x5191('0x86')){return transcribe(_0x5123d8[_0x5191('0x45')]['id'],_0x4e6753[_0x5191('0x81')],_0x4e6753[_0x5191('0x82')],_0x17992e['transcribeRegion'],_0x17992e[_0x5191('0x6b')],_0x312aa4['value'],_0x17992e[_0x5191('0x87')]);}else{logger[_0x5191('0x60')](util['format'](_0x5191('0x88'),_0x5123d8[_0x5191('0x45')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})['then'](function(_0x5864d4){if(_0x5864d4){_0x5864d4['tempSentiment']=_0x5123d8['body']['runSentiment'];return _0x312aa4['updateAttributes'](_0x5864d4);}})[_0x5191('0x22')](respondWithResult(_0x2174db,null))[_0x5191('0x43')](handleError(_0x2174db,null));};function writeFile(_0x2b3183,_0x33751a){return new Promise(function(_0x1852a0,_0x238499){fs[_0x5191('0x89')](_0x33751a,_0x2b3183,function(_0x217325,_0x2e9349){if(_0x217325){return _0x238499(_0x217325);}else{return _0x1852a0(_0x2e9349);}});});}exports[_0x5191('0x8a')]=function(_0x3a1be7,_0x431017,_0x220870){return db[_0x5191('0x2b')][_0x5191('0x76')]({'where':{'id':_0x3a1be7[_0x5191('0x45')]['id']}})[_0x5191('0x22')](handleEntityNotFound(_0x431017))[_0x5191('0x22')](function(_0x22c99a){if(_0x22c99a&&_0x22c99a[_0x5191('0x8b')]){var _0x68c567=_0x22c99a[_0x5191('0x8b')];var _0x35894e=config[_0x5191('0x8c')]+_0x5191('0x8d')+_0x22c99a['id']+_0x5191('0x8e');if(fs['existsSync'](_0x35894e)){return _0x35894e;}return writeFile(_0x68c567,_0x35894e)['then'](function(){return _0x35894e;});}else{throw new db[(_0x5191('0x5d'))][(_0x5191('0x51'))](_0x5191('0x8f'));}})[_0x5191('0x22')](function(_0x4eb66c){return _0x431017[_0x5191('0x4b')](_0x4eb66c);})[_0x5191('0x43')](handleError(_0x431017));};
\ No newline at end of file
index 0bb70f6..6775eab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc20=['uniqueid','lodash','api','bluebird','request-promise','path','rimraf','./voiceRecording.attributes','exports','define','VoiceRecording','voice_recordings'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xfc20,0x12d));var _0x0fc2=function(_0x57aae5,_0x4b0939){_0x57aae5=_0x57aae5-0x0;var _0x33225e=_0xfc20[_0x57aae5];return _0x33225e;};'use strict';var _=require(_0x0fc2('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0fc2('0x1'));var moment=require('moment');var BPromise=require(_0x0fc2('0x2'));var rp=require(_0x0fc2('0x3'));var fs=require('fs');var path=require(_0x0fc2('0x4'));var rimraf=require(_0x0fc2('0x5'));var config=require('../../config/environment');var attributes=require(_0x0fc2('0x6'));module[_0x0fc2('0x7')]=function(_0x5f326d,_0x8c459a){return _0x5f326d[_0x0fc2('0x8')](_0x0fc2('0x9'),attributes,{'tableName':_0x0fc2('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0fc2('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa977=['bluebird','request-promise','path','../../config/environment','exports','define','VoiceRecording','voice_recordings','uniqueid','lodash','util','../../config/logger','api'];(function(_0x34365b,_0x418c5a){var _0x12d73a=function(_0x242ded){while(--_0x242ded){_0x34365b['push'](_0x34365b['shift']());}};_0x12d73a(++_0x418c5a);}(_0xa977,0x7e));var _0x7a97=function(_0x5c3df3,_0xb0b26){_0x5c3df3=_0x5c3df3-0x0;var _0x4d7dec=_0xa977[_0x5c3df3];return _0x4d7dec;};'use strict';var _=require(_0x7a97('0x0'));var util=require(_0x7a97('0x1'));var logger=require(_0x7a97('0x2'))(_0x7a97('0x3'));var moment=require('moment');var BPromise=require(_0x7a97('0x4'));var rp=require(_0x7a97('0x5'));var fs=require('fs');var path=require(_0x7a97('0x6'));var rimraf=require('rimraf');var config=require(_0x7a97('0x7'));var attributes=require('./voiceRecording.attributes');module[_0x7a97('0x8')]=function(_0x5260c4,_0x391bfc){return _0x5260c4[_0x7a97('0x9')](_0x7a97('0xa'),attributes,{'tableName':_0x7a97('0xb'),'paranoid':![],'indexes':[{'name':_0x7a97('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 0ee62a2..183f746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf2f=['request','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','UpdateVoiceRecording','VoiceRecording','update','options','where','attributes','limit','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','body','existsSync','value','format','%s.cypher','encryptFile','recording','then','unlink','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x46c3fd,_0x5df411){var _0x15c233=function(_0x50a24a){while(--_0x50a24a){_0x46c3fd['push'](_0x46c3fd['shift']());}};_0x15c233(++_0x5df411);}(_0xcf2f,0xa7));var _0xfcf2=function(_0xb82875,_0xa454ab){_0xb82875=_0xb82875-0x0;var _0x3431ff=_0xcf2f[_0xb82875];return _0x3431ff;};'use strict';var _=require(_0xfcf2('0x0'));var util=require(_0xfcf2('0x1'));var moment=require(_0xfcf2('0x2'));var BPromise=require(_0xfcf2('0x3'));var rs=require(_0xfcf2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfcf2('0x5'))['db'];var utils=require(_0xfcf2('0x6'));var logger=require(_0xfcf2('0x7'))(_0xfcf2('0x8'));var config=require(_0xfcf2('0x9'));var jayson=require(_0xfcf2('0xa'));var client=jayson[_0xfcf2('0xb')][_0xfcf2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x41d4bd,_0x157f48,_0x16b6b2){return new BPromise(function(_0x34f444,_0xb4c510){return client[_0xfcf2('0xd')](_0x41d4bd,_0x16b6b2)['then'](function(_0x575f33){logger['info'](_0xfcf2('0xe'),_0x157f48,_0xfcf2('0xf'));logger['debug'](_0xfcf2('0x10'),_0x157f48,_0xfcf2('0xf'),JSON[_0xfcf2('0x11')](_0x575f33));if(_0x575f33[_0xfcf2('0x12')]){if(_0x575f33['error']['code']===0x1f4){logger[_0xfcf2('0x12')](_0xfcf2('0xe'),_0x157f48,_0x575f33[_0xfcf2('0x12')][_0xfcf2('0x13')]);return _0xb4c510(_0x575f33['error'][_0xfcf2('0x13')]);}logger['error']('VoiceRecording,\x20%s,\x20%s',_0x157f48,_0x575f33['error'][_0xfcf2('0x13')]);return _0x34f444(_0x575f33['error'][_0xfcf2('0x13')]);}else{logger[_0xfcf2('0x14')](_0xfcf2('0xe'),_0x157f48,_0xfcf2('0xf'));_0x34f444(_0x575f33[_0xfcf2('0x15')][_0xfcf2('0x13')]);}})[_0xfcf2('0x16')](function(_0x4d64ce){logger[_0xfcf2('0x12')](_0xfcf2('0xe'),_0x157f48,_0x4d64ce);_0xb4c510(_0x4d64ce);});});}exports[_0xfcf2('0x17')]=function(_0x581d78){var _0xd87472=this;return new Promise(function(_0x1b3c89,_0x33eaa7){return db[_0xfcf2('0x18')][_0xfcf2('0x19')](_0x581d78['body'],{'raw':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1b')]||null:null,'attributes':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1c')]||null:null,'limit':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1d')]||null:null})['then'](function(_0x3790ed){logger[_0xfcf2('0x14')](_0xfcf2('0x17'),_0x581d78);logger['debug'](_0xfcf2('0x17'),_0x581d78,JSON[_0xfcf2('0x11')](_0x3790ed));_0x1b3c89(_0x3790ed);})['catch'](function(_0x3c3774){logger[_0xfcf2('0x12')]('UpdateVoiceRecording',_0x3c3774[_0xfcf2('0x13')],_0x581d78);_0x33eaa7(_0xd87472[_0xfcf2('0x12')](0x1f4,_0x3c3774[_0xfcf2('0x13')]));});});};exports[_0xfcf2('0x1e')]=function(_0x5bb384){var _0x1deca3=this;return new Promise(function(_0x448222,_0x2a9d64){var _0x3779ee=require(_0xfcf2('0x1f'));var _0x2b1d60;return db[_0xfcf2('0x20')][_0xfcf2('0x21')]({'attributes':['id',_0xfcf2('0x22')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x4c2935){_0x2b1d60=_0x4c2935;return db[_0xfcf2('0x18')][_0xfcf2('0x23')](_0x5bb384[_0xfcf2('0x24')]);})['then'](function(_0x560898){if(_0x2b1d60['callRecordingEncryption']&&fs[_0xfcf2('0x25')](_0x560898[_0xfcf2('0x26')])){var _0x40c1ae=util[_0xfcf2('0x27')](_0xfcf2('0x28'),_0x560898[_0xfcf2('0x26')]);return _0x3779ee[_0xfcf2('0x29')](_0x560898['value'],_0x40c1ae,config['secrets'][_0xfcf2('0x2a')])[_0xfcf2('0x2b')](function(){fs[_0xfcf2('0x2c')](_0x560898[_0xfcf2('0x26')]);logger['info']('CreateVoiceRecording\x20file\x20encrypted');return _0x560898;});}return _0x560898;})[_0xfcf2('0x2b')](function(_0x5310e6){logger[_0xfcf2('0x14')](_0xfcf2('0x1e'),_0x5bb384);logger['debug'](_0xfcf2('0x1e'),_0x5bb384,JSON[_0xfcf2('0x11')](_0x5310e6));_0x448222(_0x5310e6);})[_0xfcf2('0x16')](function(_0x4046c6){logger[_0xfcf2('0x12')](_0xfcf2('0x1e'),_0x4046c6[_0xfcf2('0x13')],_0x5bb384);_0x2a9d64(_0x1deca3['error'](0x1f4,_0x4046c6[_0xfcf2('0x13')]));});});};
\ No newline at end of file
+var _0x33af=['error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','body','options','raw','where','attributes','limit','findOne','callRecordingEncryption','create','existsSync','value','format','%s.cypher','encryptFile','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x3b2675,_0x1423a4){var _0x2e92ae=function(_0x2268a0){while(--_0x2268a0){_0x3b2675['push'](_0x3b2675['shift']());}};_0x2e92ae(++_0x1423a4);}(_0x33af,0xec));var _0xf33a=function(_0x5316c9,_0x1599b8){_0x5316c9=_0x5316c9-0x0;var _0x4b7507=_0x33af[_0x5316c9];return _0x4b7507;};'use strict';var _=require('lodash');var util=require(_0xf33a('0x0'));var moment=require('moment');var BPromise=require(_0xf33a('0x1'));var rs=require(_0xf33a('0x2'));var fs=require('fs');var Redis=require(_0xf33a('0x3'));var db=require(_0xf33a('0x4'))['db'];var utils=require(_0xf33a('0x5'));var logger=require(_0xf33a('0x6'))('rpc');var config=require(_0xf33a('0x7'));var jayson=require(_0xf33a('0x8'));var client=jayson['client'][_0xf33a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x384b14,_0x1b2b01,_0x2f3730){return new BPromise(function(_0x2baabb,_0x2cb169){return client['request'](_0x384b14,_0x2f3730)[_0xf33a('0xa')](function(_0x14eb0e){logger[_0xf33a('0xb')](_0xf33a('0xc'),_0x1b2b01,_0xf33a('0xd'));logger[_0xf33a('0xe')]('VoiceRecording,\x20%s,\x20%s,\x20%s',_0x1b2b01,'request\x20sent',JSON[_0xf33a('0xf')](_0x14eb0e));if(_0x14eb0e[_0xf33a('0x10')]){if(_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x11')]===0x1f4){logger[_0xf33a('0x10')]('VoiceRecording,\x20%s,\x20%s',_0x1b2b01,_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);return _0x2cb169(_0x14eb0e['error']['message']);}logger[_0xf33a('0x10')](_0xf33a('0xc'),_0x1b2b01,_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);return _0x2baabb(_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);}else{logger[_0xf33a('0xb')](_0xf33a('0xc'),_0x1b2b01,'request\x20sent');_0x2baabb(_0x14eb0e[_0xf33a('0x13')]['message']);}})[_0xf33a('0x14')](function(_0x229389){logger['error'](_0xf33a('0xc'),_0x1b2b01,_0x229389);_0x2cb169(_0x229389);});});}exports[_0xf33a('0x15')]=function(_0x524109){var _0x2946ef=this;return new Promise(function(_0x23d9e2,_0x38d69a){return db[_0xf33a('0x16')]['update'](_0x524109[_0xf33a('0x17')],{'raw':_0x524109[_0xf33a('0x18')]?_0x524109[_0xf33a('0x18')][_0xf33a('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x524109[_0xf33a('0x18')]?_0x524109[_0xf33a('0x18')][_0xf33a('0x1a')]||null:null,'attributes':_0x524109[_0xf33a('0x18')]?_0x524109[_0xf33a('0x18')][_0xf33a('0x1b')]||null:null,'limit':_0x524109['options']?_0x524109[_0xf33a('0x18')][_0xf33a('0x1c')]||null:null})[_0xf33a('0xa')](function(_0x27faa1){logger[_0xf33a('0xb')]('UpdateVoiceRecording',_0x524109);logger[_0xf33a('0xe')]('UpdateVoiceRecording',_0x524109,JSON[_0xf33a('0xf')](_0x27faa1));_0x23d9e2(_0x27faa1);})[_0xf33a('0x14')](function(_0x394468){logger[_0xf33a('0x10')](_0xf33a('0x15'),_0x394468['message'],_0x524109);_0x38d69a(_0x2946ef[_0xf33a('0x10')](0x1f4,_0x394468[_0xf33a('0x12')]));});});};exports['CreateVoiceRecording']=function(_0x4af24a){var _0x16ef31=this;return new Promise(function(_0x5f0a53,_0x5cf981){var _0x38eba2=require('../../components/encryptor');var _0x79d653;return db['Setting'][_0xf33a('0x1d')]({'attributes':['id',_0xf33a('0x1e')],'where':{'id':0x1},'raw':!![]})[_0xf33a('0xa')](function(_0x729fca){_0x79d653=_0x729fca;return db[_0xf33a('0x16')][_0xf33a('0x1f')](_0x4af24a[_0xf33a('0x17')]);})[_0xf33a('0xa')](function(_0x26e81){if(_0x79d653[_0xf33a('0x1e')]&&fs[_0xf33a('0x20')](_0x26e81[_0xf33a('0x21')])){var _0x22c9f2=util[_0xf33a('0x22')](_0xf33a('0x23'),_0x26e81['value']);return _0x38eba2[_0xf33a('0x24')](_0x26e81[_0xf33a('0x21')],_0x22c9f2,config[_0xf33a('0x25')][_0xf33a('0x26')])['then'](function(){fs[_0xf33a('0x27')](_0x26e81[_0xf33a('0x21')]);logger[_0xf33a('0xb')](_0xf33a('0x28'));return _0x26e81;});}return _0x26e81;})[_0xf33a('0xa')](function(_0x109d84){logger['info'](_0xf33a('0x29'),_0x4af24a);logger[_0xf33a('0xe')](_0xf33a('0x29'),_0x4af24a,JSON[_0xf33a('0xf')](_0x109d84));_0x5f0a53(_0x109d84);})[_0xf33a('0x14')](function(_0x57e7be){logger['error'](_0xf33a('0x29'),_0x57e7be['message'],_0x4af24a);_0x5cf981(_0x16ef31['error'](0x1f4,_0x57e7be['message']));});});};
\ No newline at end of file
index 498706d..7164ee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdf5=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceTransferReport.controller','get','isAuthenticated','index','describe','show','post','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x3d12b6,_0x25827f){var _0x2225c9=function(_0x3b5add){while(--_0x3b5add){_0x3d12b6['push'](_0x3d12b6['shift']());}};_0x2225c9(++_0x25827f);}(_0xcdf5,0xc5));var _0x5cdf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xcdf5[_0x432682];return _0x463d05;};'use strict';var multer=require(_0x5cdf('0x0'));var util=require(_0x5cdf('0x1'));var path=require(_0x5cdf('0x2'));var timeout=require('connect-timeout');var express=require(_0x5cdf('0x3'));var router=express[_0x5cdf('0x4')]();var fs_extra=require(_0x5cdf('0x5'));var auth=require(_0x5cdf('0x6'));var interaction=require(_0x5cdf('0x7'));var config=require('../../config/environment');var controller=require(_0x5cdf('0x8'));router[_0x5cdf('0x9')]('/',auth[_0x5cdf('0xa')](),controller[_0x5cdf('0xb')]);router[_0x5cdf('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x5cdf('0xc')]);router['get']('/:id',auth[_0x5cdf('0xa')](),controller[_0x5cdf('0xd')]);router[_0x5cdf('0xe')]('/',auth[_0x5cdf('0xa')](),controller[_0x5cdf('0xf')]);router[_0x5cdf('0x10')](_0x5cdf('0x11'),auth['isAuthenticated'](),controller[_0x5cdf('0x12')]);router[_0x5cdf('0x13')](_0x5cdf('0x11'),auth[_0x5cdf('0xa')](),controller[_0x5cdf('0x14')]);module[_0x5cdf('0x15')]=router;
\ No newline at end of file
+var _0xe5b0=['/describe','isAuthenticated','show','create','put','/:id','update','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index'];(function(_0x29d915,_0x54a040){var _0x160f86=function(_0x237dfa){while(--_0x237dfa){_0x29d915['push'](_0x29d915['shift']());}};_0x160f86(++_0x54a040);}(_0xe5b0,0xa0));var _0x0e5b=function(_0x76a9b8,_0x28cab7){_0x76a9b8=_0x76a9b8-0x0;var _0x2a5091=_0xe5b0[_0x76a9b8];return _0x2a5091;};'use strict';var multer=require('multer');var util=require(_0x0e5b('0x0'));var path=require(_0x0e5b('0x1'));var timeout=require(_0x0e5b('0x2'));var express=require(_0x0e5b('0x3'));var router=express[_0x0e5b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x0e5b('0x5'));var interaction=require(_0x0e5b('0x6'));var config=require(_0x0e5b('0x7'));var controller=require('./voiceTransferReport.controller');router[_0x0e5b('0x8')]('/',auth['isAuthenticated'](),controller[_0x0e5b('0x9')]);router[_0x0e5b('0x8')](_0x0e5b('0xa'),auth[_0x0e5b('0xb')](),controller['describe']);router[_0x0e5b('0x8')]('/:id',auth[_0x0e5b('0xb')](),controller[_0x0e5b('0xc')]);router['post']('/',auth[_0x0e5b('0xb')](),controller[_0x0e5b('0xd')]);router[_0x0e5b('0xe')](_0x0e5b('0xf'),auth[_0x0e5b('0xb')](),controller[_0x0e5b('0x10')]);router['delete'](_0x0e5b('0xf'),auth[_0x0e5b('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 8d8cfb7..ee7f1b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c84=['attended','STRING','Yes','sequelize','exports','ENUM','blind'];(function(_0x83af7f,_0x49c6fd){var _0x32d85c=function(_0xf0e8bc){while(--_0xf0e8bc){_0x83af7f['push'](_0x83af7f['shift']());}};_0x32d85c(++_0x49c6fd);}(_0x1c84,0xf1));var _0x41c8=function(_0x21481c,_0x1b51ba){_0x21481c=_0x21481c-0x0;var _0x5dd77a=_0x1c84[_0x21481c];return _0x5dd77a;};'use strict';var Sequelize=require(_0x41c8('0x0'));var moment=require('moment');module[_0x41c8('0x1')]={'type':{'type':Sequelize[_0x41c8('0x2')](_0x41c8('0x3'),_0x41c8('0x4'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0x41c8('0x5')]},'transferercalleridnum':{'type':Sequelize[_0x41c8('0x5')]},'transferercalleridname':{'type':Sequelize[_0x41c8('0x5')]},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0x41c8('0x5')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0x41c8('0x5')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x41c8('0x5')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x41c8('0x5')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0x41c8('0x5')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x41c8('0x5')]},'transfereecontext':{'type':Sequelize[_0x41c8('0x5')]},'transfereeexten':{'type':Sequelize[_0x41c8('0x5')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize['ENUM'](_0x41c8('0x6'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x41c8('0x5')]}};
\ No newline at end of file
+var _0x4d22=['sequelize','moment','exports','ENUM','blind','attended','STRING','Yes'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x4d22,0x120));var _0x24d2=function(_0x3a05b9,_0x192e6f){_0x3a05b9=_0x3a05b9-0x0;var _0x3257e9=_0x4d22[_0x3a05b9];return _0x3257e9;};'use strict';var Sequelize=require(_0x24d2('0x0'));var moment=require(_0x24d2('0x1'));module[_0x24d2('0x2')]={'type':{'type':Sequelize[_0x24d2('0x3')](_0x24d2('0x4'),_0x24d2('0x5'))},'result':{'type':Sequelize[_0x24d2('0x6')]},'transfererchannel':{'type':Sequelize[_0x24d2('0x6')]},'transferercalleridnum':{'type':Sequelize[_0x24d2('0x6')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0x24d2('0x6')]},'transfererconnectedlinename':{'type':Sequelize[_0x24d2('0x6')]},'transfereraccountcode':{'type':Sequelize[_0x24d2('0x6')]},'transferercontext':{'type':Sequelize[_0x24d2('0x6')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0x24d2('0x6')]},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0x24d2('0x6')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x24d2('0x6')]},'transfereeconnectedlinename':{'type':Sequelize[_0x24d2('0x6')]},'transfereeaccountcode':{'type':Sequelize[_0x24d2('0x6')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize[_0x24d2('0x6')]},'isexternal':{'type':Sequelize[_0x24d2('0x3')](_0x24d2('0x7'),'No')},'context':{'type':Sequelize[_0x24d2('0x6')]},'extension':{'type':Sequelize[_0x24d2('0x6')]}};
\ No newline at end of file
index da00c90..19f92a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56b9=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','apply','reject','save','then','name','send','map','VoiceTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','includeAll','include','rows','catch','params','create','body','update','find','destroy','describe','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x2f42b9,_0x424040){var _0x56c3c7=function(_0x3e2a1f){while(--_0x3e2a1f){_0x2f42b9['push'](_0x2f42b9['shift']());}};_0x56c3c7(++_0x424040);}(_0x56b9,0x102));var _0x956b=function(_0x3d0afb,_0x31c391){_0x3d0afb=_0x3d0afb-0x0;var _0x375e8f=_0x56b9[_0x3d0afb];return _0x375e8f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x956b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x956b('0x1'));var moment=require('moment');var BPromise=require(_0x956b('0x2'));var Mustache=require(_0x956b('0x3'));var util=require(_0x956b('0x4'));var path=require(_0x956b('0x5'));var sox=require(_0x956b('0x6'));var csv=require(_0x956b('0x7'));var ejs=require(_0x956b('0x8'));var fs=require('fs');var fs_extra=require(_0x956b('0x9'));var _=require(_0x956b('0xa'));var squel=require(_0x956b('0xb'));var crypto=require(_0x956b('0xc'));var jsforce=require(_0x956b('0xd'));var deskjs=require(_0x956b('0xe'));var toCsv=require(_0x956b('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x956b('0xf'));var authService=require(_0x956b('0x10'));var qs=require(_0x956b('0x11'));var as=require(_0x956b('0x12'));var hardwareService=require(_0x956b('0x13'));var logger=require(_0x956b('0x14'))(_0x956b('0x15'));var utils=require(_0x956b('0x16'));var config=require(_0x956b('0x17'));var licenseUtil=require(_0x956b('0x18'));var db=require(_0x956b('0x19'))['db'];function respondWithStatusCode(_0x218907,_0x11a163){_0x11a163=_0x11a163||0xcc;return function(_0x1ea78e){if(_0x1ea78e){return _0x218907[_0x956b('0x1a')](_0x11a163);}return _0x218907[_0x956b('0x1b')](_0x11a163)[_0x956b('0x1c')]();};}function respondWithResult(_0x4fb90a,_0x12631b){_0x12631b=_0x12631b||0xc8;return function(_0x41f518){if(_0x41f518){return _0x4fb90a[_0x956b('0x1b')](_0x12631b)[_0x956b('0x1d')](_0x41f518);}};}function respondWithFilteredResult(_0x4e1848,_0xdfca84){return function(_0x415aef){if(_0x415aef){var _0x388b99=typeof _0xdfca84[_0x956b('0x1e')]==='undefined'&&typeof _0xdfca84[_0x956b('0x1f')]==='undefined';var _0x251f77=_0x415aef[_0x956b('0x20')];var _0x3d2829=_0x388b99?0x0:_0xdfca84[_0x956b('0x1e')];var _0x3fd42d=_0x388b99?_0x415aef[_0x956b('0x20')]:_0xdfca84[_0x956b('0x1e')]+_0xdfca84['limit'];var _0x1ee854;if(_0x3fd42d>=_0x251f77){_0x3fd42d=_0x251f77;_0x1ee854=0xc8;}else{_0x1ee854=0xce;}_0x4e1848[_0x956b('0x1b')](_0x1ee854);return _0x4e1848['set']('Content-Range',_0x3d2829+'-'+_0x3fd42d+'/'+_0x251f77)[_0x956b('0x1d')](_0x415aef);}return null;};}function patchUpdates(_0x397b0b){return function(_0xc37adc){try{jsonpatch[_0x956b('0x21')](_0xc37adc,_0x397b0b,!![]);}catch(_0x5ca3bc){return BPromise[_0x956b('0x22')](_0x5ca3bc);}return _0xc37adc[_0x956b('0x23')]();};}function saveUpdates(_0x393e23,_0x426bf8){return function(_0x3267bf){if(_0x3267bf){return _0x3267bf['update'](_0x393e23)['then'](function(_0x7e1b98){return _0x7e1b98;});}return null;};}function removeEntity(_0x505988,_0xbaef09){return function(_0xe4a6d){if(_0xe4a6d){return _0xe4a6d['destroy']()[_0x956b('0x24')](function(){_0x505988[_0x956b('0x1b')](0xcc)[_0x956b('0x1c')]();});}};}function handleEntityNotFound(_0x55261a,_0x4ae8e6){return function(_0x8e314a){if(!_0x8e314a){_0x55261a['sendStatus'](0x194);}return _0x8e314a;};}function handleError(_0x5a542c,_0x2f147b){_0x2f147b=_0x2f147b||0x1f4;return function(_0xdb0aa6){logger['error'](_0xdb0aa6['stack']);if(_0xdb0aa6[_0x956b('0x25')]){delete _0xdb0aa6['name'];}_0x5a542c[_0x956b('0x1b')](_0x2f147b)[_0x956b('0x26')](_0xdb0aa6);};}exports['index']=function(_0x18f34b,_0x513e2b){var _0x21b49d={},_0x3b87aa={},_0xb19d26={'count':0x0,'rows':[]};var _0x51b206=_[_0x956b('0x27')](db[_0x956b('0x28')][_0x956b('0x29')],function(_0x50794a){return{'name':_0x50794a[_0x956b('0x2a')],'type':_0x50794a[_0x956b('0x2b')][_0x956b('0x2c')]};});_0x3b87aa[_0x956b('0x2d')]=_[_0x956b('0x27')](_0x51b206,_0x956b('0x25'));_0x3b87aa[_0x956b('0x2e')]=_[_0x956b('0x2f')](_0x18f34b[_0x956b('0x2e')]);_0x3b87aa[_0x956b('0x30')]=_[_0x956b('0x31')](_0x3b87aa['model'],_0x3b87aa[_0x956b('0x2e')]);_0x21b49d['attributes']=_[_0x956b('0x31')](_0x3b87aa[_0x956b('0x2d')],qs['fields'](_0x18f34b['query']['fields']));_0x21b49d[_0x956b('0x32')]=_0x21b49d[_0x956b('0x32')][_0x956b('0x33')]?_0x21b49d['attributes']:_0x3b87aa[_0x956b('0x2d')];if(!_0x18f34b[_0x956b('0x2e')][_0x956b('0x34')](_0x956b('0x35'))){_0x21b49d[_0x956b('0x1f')]=qs['limit'](_0x18f34b[_0x956b('0x2e')][_0x956b('0x1f')]);_0x21b49d[_0x956b('0x1e')]=qs[_0x956b('0x1e')](_0x18f34b['query'][_0x956b('0x1e')]);}_0x21b49d[_0x956b('0x36')]=qs[_0x956b('0x37')](_0x18f34b[_0x956b('0x2e')]['sort']);_0x21b49d[_0x956b('0x38')]=qs[_0x956b('0x30')](_['pick'](_0x18f34b[_0x956b('0x2e')],_0x3b87aa[_0x956b('0x30')]),_0x51b206);if(_0x18f34b[_0x956b('0x2e')]['filter']){_0x21b49d[_0x956b('0x38')]=_[_0x956b('0x39')](_0x21b49d[_0x956b('0x38')],{'$or':_[_0x956b('0x27')](_0x51b206,function(_0x2d0646){if(_0x2d0646[_0x956b('0x2b')]!=='VIRTUAL'){var _0x5c1d75={};_0x5c1d75[_0x2d0646[_0x956b('0x25')]]={'$like':'%'+_0x18f34b[_0x956b('0x2e')]['filter']+'%'};return _0x5c1d75;}})});}_0x21b49d=_['merge']({},_0x21b49d,_0x18f34b['options']);var _0x3d7119={'where':_0x21b49d[_0x956b('0x38')]};return db[_0x956b('0x28')]['count'](_0x3d7119)['then'](function(_0x1e1511){_0xb19d26[_0x956b('0x20')]=_0x1e1511;if(_0x18f34b[_0x956b('0x2e')][_0x956b('0x3a')]){_0x21b49d[_0x956b('0x3b')]=[{'all':!![]}];}return db['VoiceTransferReport']['findAll'](_0x21b49d);})[_0x956b('0x24')](function(_0x369c55){_0xb19d26[_0x956b('0x3c')]=_0x369c55;return _0xb19d26;})[_0x956b('0x24')](respondWithFilteredResult(_0x513e2b,_0x21b49d))[_0x956b('0x3d')](handleError(_0x513e2b,null));};exports['show']=function(_0x2d48d5,_0x198639){var _0x8ed031={'raw':!![],'where':{'id':_0x2d48d5[_0x956b('0x3e')]['id']}},_0x2d79a1={};_0x2d79a1['model']=_[_0x956b('0x2f')](db[_0x956b('0x28')][_0x956b('0x29')]);_0x2d79a1[_0x956b('0x2e')]=_['keys'](_0x2d48d5['query']);_0x2d79a1['filters']=_[_0x956b('0x31')](_0x2d79a1[_0x956b('0x2d')],_0x2d79a1[_0x956b('0x2e')]);_0x8ed031['attributes']=_['intersection'](_0x2d79a1[_0x956b('0x2d')],qs['fields'](_0x2d48d5['query']['fields']));_0x8ed031['attributes']=_0x8ed031[_0x956b('0x32')][_0x956b('0x33')]?_0x8ed031['attributes']:_0x2d79a1['model'];if(_0x2d48d5['query'][_0x956b('0x3a')]){_0x8ed031[_0x956b('0x3b')]=[{'all':!![]}];}_0x8ed031=_[_0x956b('0x39')]({},_0x8ed031,_0x2d48d5['options']);return db[_0x956b('0x28')]['find'](_0x8ed031)[_0x956b('0x24')](handleEntityNotFound(_0x198639,null))[_0x956b('0x24')](respondWithResult(_0x198639,null))[_0x956b('0x3d')](handleError(_0x198639,null));};exports[_0x956b('0x3f')]=function(_0x5959f6,_0x52d60a){return db['VoiceTransferReport'][_0x956b('0x3f')](_0x5959f6[_0x956b('0x40')],{})[_0x956b('0x24')](respondWithResult(_0x52d60a,0xc9))[_0x956b('0x3d')](handleError(_0x52d60a,null));};exports[_0x956b('0x41')]=function(_0x522229,_0x1018ae){if(_0x522229[_0x956b('0x40')]['id']){delete _0x522229['body']['id'];}return db[_0x956b('0x28')][_0x956b('0x42')]({'where':{'id':_0x522229['params']['id']}})['then'](handleEntityNotFound(_0x1018ae,null))['then'](saveUpdates(_0x522229[_0x956b('0x40')],null))[_0x956b('0x24')](respondWithResult(_0x1018ae,null))['catch'](handleError(_0x1018ae,null));};exports[_0x956b('0x43')]=function(_0x27d1f2,_0x43af55){return db[_0x956b('0x28')][_0x956b('0x42')]({'where':{'id':_0x27d1f2['params']['id']}})[_0x956b('0x24')](handleEntityNotFound(_0x43af55,null))['then'](removeEntity(_0x43af55,null))[_0x956b('0x3d')](handleError(_0x43af55,null));};exports[_0x956b('0x44')]=function(_0x2776bb,_0x6c3bbb){return db[_0x956b('0x28')][_0x956b('0x44')]()[_0x956b('0x24')](respondWithResult(_0x6c3bbb,null))[_0x956b('0x3d')](handleError(_0x6c3bbb,null));};
\ No newline at end of file
+var _0xf939=['type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','map','VIRTUAL','VoiceTransferReport','count','findAll','rows','show','params','rawAttributes','includeAll','include','options','find','create','body','catch','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','fieldName'];(function(_0x48fdff,_0x2d0169){var _0x49d876=function(_0x57d793){while(--_0x57d793){_0x48fdff['push'](_0x48fdff['shift']());}};_0x49d876(++_0x2d0169);}(_0xf939,0x114));var _0x9f93=function(_0x202abb,_0x4b29a9){_0x202abb=_0x202abb-0x0;var _0x199c47=_0xf939[_0x202abb];return _0x199c47;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9f93('0x0'));var zipdir=require(_0x9f93('0x1'));var jsonpatch=require(_0x9f93('0x2'));var rp=require(_0x9f93('0x3'));var moment=require(_0x9f93('0x4'));var BPromise=require(_0x9f93('0x5'));var Mustache=require('mustache');var util=require(_0x9f93('0x6'));var path=require(_0x9f93('0x7'));var sox=require(_0x9f93('0x8'));var csv=require(_0x9f93('0x9'));var ejs=require(_0x9f93('0xa'));var fs=require('fs');var fs_extra=require(_0x9f93('0xb'));var _=require(_0x9f93('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9f93('0xd'));var deskjs=require(_0x9f93('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9f93('0xf'));var Papa=require(_0x9f93('0x10'));var Redis=require(_0x9f93('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x9f93('0x12'));var as=require(_0x9f93('0x13'));var hardwareService=require(_0x9f93('0x14'));var logger=require(_0x9f93('0x15'))(_0x9f93('0x16'));var utils=require(_0x9f93('0x17'));var config=require(_0x9f93('0x18'));var licenseUtil=require(_0x9f93('0x19'));var db=require(_0x9f93('0x1a'))['db'];function respondWithStatusCode(_0x237129,_0x18f26a){_0x18f26a=_0x18f26a||0xcc;return function(_0x229a43){if(_0x229a43){return _0x237129[_0x9f93('0x1b')](_0x18f26a);}return _0x237129[_0x9f93('0x1c')](_0x18f26a)['end']();};}function respondWithResult(_0x5d904e,_0x38e02d){_0x38e02d=_0x38e02d||0xc8;return function(_0x460519){if(_0x460519){return _0x5d904e[_0x9f93('0x1c')](_0x38e02d)[_0x9f93('0x1d')](_0x460519);}};}function respondWithFilteredResult(_0x291eb0,_0x14d913){return function(_0x507858){if(_0x507858){var _0x3bb7e4=typeof _0x14d913[_0x9f93('0x1e')]===_0x9f93('0x1f')&&typeof _0x14d913[_0x9f93('0x20')]===_0x9f93('0x1f');var _0x14a52d=_0x507858['count'];var _0x40c182=_0x3bb7e4?0x0:_0x14d913[_0x9f93('0x1e')];var _0x5a2509=_0x3bb7e4?_0x507858['count']:_0x14d913['offset']+_0x14d913['limit'];var _0x5ede24;if(_0x5a2509>=_0x14a52d){_0x5a2509=_0x14a52d;_0x5ede24=0xc8;}else{_0x5ede24=0xce;}_0x291eb0[_0x9f93('0x1c')](_0x5ede24);return _0x291eb0[_0x9f93('0x21')](_0x9f93('0x22'),_0x40c182+'-'+_0x5a2509+'/'+_0x14a52d)['json'](_0x507858);}return null;};}function patchUpdates(_0xbcd37b){return function(_0x1fee9a){try{jsonpatch[_0x9f93('0x23')](_0x1fee9a,_0xbcd37b,!![]);}catch(_0x10f284){return BPromise[_0x9f93('0x24')](_0x10f284);}return _0x1fee9a[_0x9f93('0x25')]();};}function saveUpdates(_0x3b3e3a,_0x48e4bf){return function(_0x15ccb5){if(_0x15ccb5){return _0x15ccb5[_0x9f93('0x26')](_0x3b3e3a)[_0x9f93('0x27')](function(_0x382476){return _0x382476;});}return null;};}function removeEntity(_0x1dd624,_0x21be6b){return function(_0xe051a2){if(_0xe051a2){return _0xe051a2[_0x9f93('0x28')]()['then'](function(){_0x1dd624[_0x9f93('0x1c')](0xcc)[_0x9f93('0x29')]();});}};}function handleEntityNotFound(_0x22805f,_0x2ac27b){return function(_0x63e467){if(!_0x63e467){_0x22805f[_0x9f93('0x1b')](0x194);}return _0x63e467;};}function handleError(_0x15e84b,_0x31cb19){_0x31cb19=_0x31cb19||0x1f4;return function(_0xe056bf){logger[_0x9f93('0x2a')](_0xe056bf[_0x9f93('0x2b')]);if(_0xe056bf[_0x9f93('0x2c')]){delete _0xe056bf[_0x9f93('0x2c')];}_0x15e84b[_0x9f93('0x1c')](_0x31cb19)[_0x9f93('0x2d')](_0xe056bf);};}exports[_0x9f93('0x2e')]=function(_0x471228,_0x4b4d3a){var _0x951c3f={},_0x379adc={},_0x5d5ca5={'count':0x0,'rows':[]};var _0x2cec6e=_['map'](db['VoiceTransferReport']['rawAttributes'],function(_0x1114eb){return{'name':_0x1114eb[_0x9f93('0x2f')],'type':_0x1114eb[_0x9f93('0x30')][_0x9f93('0x31')]};});_0x379adc['model']=_['map'](_0x2cec6e,_0x9f93('0x2c'));_0x379adc[_0x9f93('0x32')]=_[_0x9f93('0x33')](_0x471228[_0x9f93('0x32')]);_0x379adc['filters']=_[_0x9f93('0x34')](_0x379adc[_0x9f93('0x35')],_0x379adc[_0x9f93('0x32')]);_0x951c3f[_0x9f93('0x36')]=_['intersection'](_0x379adc[_0x9f93('0x35')],qs[_0x9f93('0x37')](_0x471228[_0x9f93('0x32')][_0x9f93('0x37')]));_0x951c3f[_0x9f93('0x36')]=_0x951c3f[_0x9f93('0x36')][_0x9f93('0x38')]?_0x951c3f['attributes']:_0x379adc[_0x9f93('0x35')];if(!_0x471228[_0x9f93('0x32')][_0x9f93('0x39')](_0x9f93('0x3a'))){_0x951c3f[_0x9f93('0x20')]=qs[_0x9f93('0x20')](_0x471228['query'][_0x9f93('0x20')]);_0x951c3f[_0x9f93('0x1e')]=qs[_0x9f93('0x1e')](_0x471228['query'][_0x9f93('0x1e')]);}_0x951c3f['order']=qs[_0x9f93('0x3b')](_0x471228[_0x9f93('0x32')][_0x9f93('0x3b')]);_0x951c3f[_0x9f93('0x3c')]=qs[_0x9f93('0x3d')](_[_0x9f93('0x3e')](_0x471228['query'],_0x379adc[_0x9f93('0x3d')]),_0x2cec6e);if(_0x471228[_0x9f93('0x32')]['filter']){_0x951c3f[_0x9f93('0x3c')]=_[_0x9f93('0x3f')](_0x951c3f[_0x9f93('0x3c')],{'$or':_[_0x9f93('0x40')](_0x2cec6e,function(_0xe04602){if(_0xe04602['type']!==_0x9f93('0x41')){var _0x80e21f={};_0x80e21f[_0xe04602[_0x9f93('0x2c')]]={'$like':'%'+_0x471228[_0x9f93('0x32')]['filter']+'%'};return _0x80e21f;}})});}_0x951c3f=_[_0x9f93('0x3f')]({},_0x951c3f,_0x471228['options']);var _0x5de263={'where':_0x951c3f[_0x9f93('0x3c')]};return db[_0x9f93('0x42')][_0x9f93('0x43')](_0x5de263)[_0x9f93('0x27')](function(_0x23b7be){_0x5d5ca5[_0x9f93('0x43')]=_0x23b7be;if(_0x471228['query']['includeAll']){_0x951c3f['include']=[{'all':!![]}];}return db['VoiceTransferReport'][_0x9f93('0x44')](_0x951c3f);})[_0x9f93('0x27')](function(_0x1e4ead){_0x5d5ca5[_0x9f93('0x45')]=_0x1e4ead;return _0x5d5ca5;})[_0x9f93('0x27')](respondWithFilteredResult(_0x4b4d3a,_0x951c3f))['catch'](handleError(_0x4b4d3a,null));};exports[_0x9f93('0x46')]=function(_0x45c6b9,_0x5d6311){var _0x21c155={'raw':!![],'where':{'id':_0x45c6b9[_0x9f93('0x47')]['id']}},_0x423e8b={};_0x423e8b[_0x9f93('0x35')]=_[_0x9f93('0x33')](db[_0x9f93('0x42')][_0x9f93('0x48')]);_0x423e8b[_0x9f93('0x32')]=_[_0x9f93('0x33')](_0x45c6b9[_0x9f93('0x32')]);_0x423e8b[_0x9f93('0x3d')]=_[_0x9f93('0x34')](_0x423e8b[_0x9f93('0x35')],_0x423e8b['query']);_0x21c155[_0x9f93('0x36')]=_['intersection'](_0x423e8b[_0x9f93('0x35')],qs['fields'](_0x45c6b9[_0x9f93('0x32')]['fields']));_0x21c155['attributes']=_0x21c155[_0x9f93('0x36')][_0x9f93('0x38')]?_0x21c155[_0x9f93('0x36')]:_0x423e8b[_0x9f93('0x35')];if(_0x45c6b9['query'][_0x9f93('0x49')]){_0x21c155[_0x9f93('0x4a')]=[{'all':!![]}];}_0x21c155=_[_0x9f93('0x3f')]({},_0x21c155,_0x45c6b9[_0x9f93('0x4b')]);return db[_0x9f93('0x42')][_0x9f93('0x4c')](_0x21c155)[_0x9f93('0x27')](handleEntityNotFound(_0x5d6311,null))[_0x9f93('0x27')](respondWithResult(_0x5d6311,null))['catch'](handleError(_0x5d6311,null));};exports[_0x9f93('0x4d')]=function(_0x1234a7,_0x511750){return db[_0x9f93('0x42')][_0x9f93('0x4d')](_0x1234a7[_0x9f93('0x4e')],{})[_0x9f93('0x27')](respondWithResult(_0x511750,0xc9))[_0x9f93('0x4f')](handleError(_0x511750,null));};exports['update']=function(_0x43afa7,_0x225cbb){if(_0x43afa7[_0x9f93('0x4e')]['id']){delete _0x43afa7[_0x9f93('0x4e')]['id'];}return db[_0x9f93('0x42')][_0x9f93('0x4c')]({'where':{'id':_0x43afa7['params']['id']}})['then'](handleEntityNotFound(_0x225cbb,null))[_0x9f93('0x27')](saveUpdates(_0x43afa7[_0x9f93('0x4e')],null))[_0x9f93('0x27')](respondWithResult(_0x225cbb,null))[_0x9f93('0x4f')](handleError(_0x225cbb,null));};exports[_0x9f93('0x28')]=function(_0x4965f9,_0x3f3408){return db[_0x9f93('0x42')][_0x9f93('0x4c')]({'where':{'id':_0x4965f9[_0x9f93('0x47')]['id']}})[_0x9f93('0x27')](handleEntityNotFound(_0x3f3408,null))[_0x9f93('0x27')](removeEntity(_0x3f3408,null))['catch'](handleError(_0x3f3408,null));};exports[_0x9f93('0x50')]=function(_0x274354,_0xdaee1e){return db[_0x9f93('0x42')][_0x9f93('0x50')]()['then'](respondWithResult(_0xdaee1e,null))[_0x9f93('0x4f')](handleError(_0xdaee1e,null));};
\ No newline at end of file
index 5e89180..dea07e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae66=['path','rimraf','../../config/environment','exports','define','VoiceTransferReport','lodash','../../config/logger','api'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xae66,0x9f));var _0x6ae6=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xae66[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x6ae6('0x0'));var util=require('util');var logger=require(_0x6ae6('0x1'))(_0x6ae6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6ae6('0x3'));var rimraf=require(_0x6ae6('0x4'));var config=require(_0x6ae6('0x5'));var attributes=require('./voiceTransferReport.attributes');module[_0x6ae6('0x6')]=function(_0x3ebfd5,_0x42ee6f){return _0x3ebfd5[_0x6ae6('0x7')](_0x6ae6('0x8'),attributes,{'tableName':'report_call_transfer','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x523c=['moment','bluebird','path','rimraf','../../config/environment','./voiceTransferReport.attributes','define','VoiceTransferReport','report_call_transfer','lodash','util','../../config/logger','api'];(function(_0x343100,_0x3af201){var _0x209dcc=function(_0x151b9c){while(--_0x151b9c){_0x343100['push'](_0x343100['shift']());}};_0x209dcc(++_0x3af201);}(_0x523c,0x100));var _0xc523=function(_0x59e112,_0x52bbc0){_0x59e112=_0x59e112-0x0;var _0x256382=_0x523c[_0x59e112];return _0x256382;};'use strict';var _=require(_0xc523('0x0'));var util=require(_0xc523('0x1'));var logger=require(_0xc523('0x2'))(_0xc523('0x3'));var moment=require(_0xc523('0x4'));var BPromise=require(_0xc523('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc523('0x6'));var rimraf=require(_0xc523('0x7'));var config=require(_0xc523('0x8'));var attributes=require(_0xc523('0x9'));module['exports']=function(_0xb442a8,_0x523d90){return _0xb442a8[_0xc523('0xa')](_0xc523('0xb'),attributes,{'tableName':_0xc523('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d8263c2..49fc69f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6462=['then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','lodash','bluebird','randomstring','../../config/utils','rpc','client','http','request'];(function(_0x2a453b,_0x479c50){var _0x132f79=function(_0x5e3d83){while(--_0x5e3d83){_0x2a453b['push'](_0x2a453b['shift']());}};_0x132f79(++_0x479c50);}(_0x6462,0x100));var _0x2646=function(_0x14db5e,_0x1b688d){_0x14db5e=_0x14db5e-0x0;var _0x89966b=_0x6462[_0x14db5e];return _0x89966b;};'use strict';var _=require(_0x2646('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2646('0x1'));var rs=require(_0x2646('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2646('0x3'));var logger=require('../../config/logger')(_0x2646('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2646('0x5')][_0x2646('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4c9e9c,_0x4f210a,_0x4e401c){return new BPromise(function(_0x5c7b4f,_0x5a6f5d){return client[_0x2646('0x7')](_0x4c9e9c,_0x4e401c)[_0x2646('0x8')](function(_0x477822){logger[_0x2646('0x9')](_0x2646('0xa'),_0x4f210a,_0x2646('0xb'));logger[_0x2646('0xc')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x4f210a,_0x2646('0xb'),JSON[_0x2646('0xd')](_0x477822));if(_0x477822['error']){if(_0x477822[_0x2646('0xe')][_0x2646('0xf')]===0x1f4){logger[_0x2646('0xe')](_0x2646('0xa'),_0x4f210a,_0x477822[_0x2646('0xe')][_0x2646('0x10')]);return _0x5a6f5d(_0x477822[_0x2646('0xe')][_0x2646('0x10')]);}logger[_0x2646('0xe')](_0x2646('0xa'),_0x4f210a,_0x477822['error'][_0x2646('0x10')]);return _0x5c7b4f(_0x477822[_0x2646('0xe')][_0x2646('0x10')]);}else{logger['info'](_0x2646('0xa'),_0x4f210a,'request\x20sent');_0x5c7b4f(_0x477822[_0x2646('0x11')][_0x2646('0x10')]);}})[_0x2646('0x12')](function(_0x94993f){logger[_0x2646('0xe')](_0x2646('0xa'),_0x4f210a,_0x94993f);_0x5a6f5d(_0x94993f);});});}exports[_0x2646('0x13')]=function(_0x1418ad){var _0x342eda=this;return new Promise(function(_0x1865f3,_0x1e9d1b){return db[_0x2646('0x14')][_0x2646('0x15')](_0x1418ad[_0x2646('0x16')],{'raw':_0x1418ad['options']?_0x1418ad[_0x2646('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x2646('0x8')](function(_0x187e40){logger[_0x2646('0x9')](_0x2646('0x13'),_0x1418ad);logger[_0x2646('0xc')](_0x2646('0x13'),_0x1418ad,JSON[_0x2646('0xd')](_0x187e40));_0x1865f3(_0x187e40);})[_0x2646('0x12')](function(_0x2c0ec1){logger[_0x2646('0xe')](_0x2646('0x13'),_0x2c0ec1[_0x2646('0x10')],_0x1418ad);_0x1e9d1b(_0x342eda[_0x2646('0xe')](0x1f4,_0x2c0ec1['message']));});});};
\ No newline at end of file
+var _0x74ef=['then','info','VoiceTransferReport,\x20%s,\x20%s','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x11586a,_0x19c491){var _0x1d8220=function(_0x143e1a){while(--_0x143e1a){_0x11586a['push'](_0x11586a['shift']());}};_0x1d8220(++_0x19c491);}(_0x74ef,0x199));var _0xf74e=function(_0x6a8704,_0x1a6ea6){_0x6a8704=_0x6a8704-0x0;var _0xac8070=_0x74ef[_0x6a8704];return _0xac8070;};'use strict';var _=require(_0xf74e('0x0'));var util=require(_0xf74e('0x1'));var moment=require(_0xf74e('0x2'));var BPromise=require(_0xf74e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf74e('0x4'));var db=require(_0xf74e('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf74e('0x6'));var config=require(_0xf74e('0x7'));var jayson=require(_0xf74e('0x8'));var client=jayson[_0xf74e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x18da47,_0x3c263e,_0xa321eb){return new BPromise(function(_0x5a385a,_0x499f2a){return client[_0xf74e('0xa')](_0x18da47,_0xa321eb)[_0xf74e('0xb')](function(_0x49207e){logger[_0xf74e('0xc')](_0xf74e('0xd'),_0x3c263e,'request\x20sent');logger[_0xf74e('0xe')](_0xf74e('0xf'),_0x3c263e,_0xf74e('0x10'),JSON['stringify'](_0x49207e));if(_0x49207e[_0xf74e('0x11')]){if(_0x49207e[_0xf74e('0x11')][_0xf74e('0x12')]===0x1f4){logger[_0xf74e('0x11')](_0xf74e('0xd'),_0x3c263e,_0x49207e[_0xf74e('0x11')][_0xf74e('0x13')]);return _0x499f2a(_0x49207e[_0xf74e('0x11')][_0xf74e('0x13')]);}logger[_0xf74e('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x3c263e,_0x49207e[_0xf74e('0x11')]['message']);return _0x5a385a(_0x49207e[_0xf74e('0x11')][_0xf74e('0x13')]);}else{logger['info'](_0xf74e('0xd'),_0x3c263e,_0xf74e('0x10'));_0x5a385a(_0x49207e[_0xf74e('0x14')][_0xf74e('0x13')]);}})[_0xf74e('0x15')](function(_0x18715e){logger[_0xf74e('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x3c263e,_0x18715e);_0x499f2a(_0x18715e);});});}exports[_0xf74e('0x16')]=function(_0x352d26){var _0x399a74=this;return new Promise(function(_0x2d133e,_0x18831c){return db[_0xf74e('0x17')]['create'](_0x352d26[_0xf74e('0x18')],{'raw':_0x352d26[_0xf74e('0x19')]?_0x352d26['options'][_0xf74e('0x1a')]===undefined?!![]:![]:!![]})[_0xf74e('0xb')](function(_0x44fd6e){logger[_0xf74e('0xc')](_0xf74e('0x16'),_0x352d26);logger[_0xf74e('0xe')](_0xf74e('0x16'),_0x352d26,JSON[_0xf74e('0x1b')](_0x44fd6e));_0x2d133e(_0x44fd6e);})[_0xf74e('0x15')](function(_0x57dde5){logger[_0xf74e('0x11')](_0xf74e('0x16'),_0x57dde5[_0xf74e('0x13')],_0x352d26);_0x18831c(_0x399a74['error'](0x1f4,_0x57dde5[_0xf74e('0x13')]));});});};
\ No newline at end of file
index f1c9eac..ba89e48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9111=['../../components/auth/service','./webbar.controller','post','canUpdate','/hangup','isAuthenticated','hangup','/answer','/hold','hold','unhold','/calls','calls','/transfer','transfer','exports','express'];(function(_0x411c23,_0x5503ae){var _0x27fab6=function(_0x4136c1){while(--_0x4136c1){_0x411c23['push'](_0x411c23['shift']());}};_0x27fab6(++_0x5503ae);}(_0x9111,0xba));var _0x1911=function(_0x1c6ddd,_0x4fcc42){_0x1c6ddd=_0x1c6ddd-0x0;var _0x4830ef=_0x9111[_0x1c6ddd];return _0x4830ef;};'use strict';var express=require(_0x1911('0x0'));var router=express['Router']();var auth=require(_0x1911('0x1'));var controller=require(_0x1911('0x2'));router[_0x1911('0x3')]('/originate',auth['isAuthenticated'](),auth[_0x1911('0x4')](),controller['originate']);router[_0x1911('0x3')](_0x1911('0x5'),auth[_0x1911('0x6')](),auth[_0x1911('0x4')](),controller[_0x1911('0x7')]);router[_0x1911('0x3')](_0x1911('0x8'),auth[_0x1911('0x6')](),auth['canUpdate'](),controller['answer']);router[_0x1911('0x3')](_0x1911('0x9'),auth[_0x1911('0x6')](),auth[_0x1911('0x4')](),controller[_0x1911('0xa')]);router[_0x1911('0x3')]('/unhold',auth[_0x1911('0x6')](),auth[_0x1911('0x4')](),controller[_0x1911('0xb')]);router[_0x1911('0x3')](_0x1911('0xc'),auth[_0x1911('0x6')](),auth['canUpdate'](),controller[_0x1911('0xd')]);router[_0x1911('0x3')](_0x1911('0xe'),auth[_0x1911('0x6')](),auth[_0x1911('0x4')](),controller[_0x1911('0xf')]);module[_0x1911('0x10')]=router;
\ No newline at end of file
+var _0x8266=['originate','hangup','/answer','answer','/hold','hold','/unhold','/calls','calls','/transfer','exports','Router','../../components/auth/service','./webbar.controller','post','/originate','isAuthenticated','canUpdate'];(function(_0x3ce4e0,_0x875801){var _0x432e47=function(_0x27095e){while(--_0x27095e){_0x3ce4e0['push'](_0x3ce4e0['shift']());}};_0x432e47(++_0x875801);}(_0x8266,0x89));var _0x6826=function(_0xeccc1c,_0x5e0e4c){_0xeccc1c=_0xeccc1c-0x0;var _0x11f1c3=_0x8266[_0xeccc1c];return _0x11f1c3;};'use strict';var express=require('express');var router=express[_0x6826('0x0')]();var auth=require(_0x6826('0x1'));var controller=require(_0x6826('0x2'));router[_0x6826('0x3')](_0x6826('0x4'),auth[_0x6826('0x5')](),auth[_0x6826('0x6')](),controller[_0x6826('0x7')]);router[_0x6826('0x3')]('/hangup',auth[_0x6826('0x5')](),auth[_0x6826('0x6')](),controller[_0x6826('0x8')]);router['post'](_0x6826('0x9'),auth[_0x6826('0x5')](),auth[_0x6826('0x6')](),controller[_0x6826('0xa')]);router[_0x6826('0x3')](_0x6826('0xb'),auth[_0x6826('0x5')](),auth[_0x6826('0x6')](),controller[_0x6826('0xc')]);router[_0x6826('0x3')](_0x6826('0xd'),auth[_0x6826('0x5')](),auth[_0x6826('0x6')](),controller['unhold']);router[_0x6826('0x3')](_0x6826('0xe'),auth['isAuthenticated'](),auth[_0x6826('0x6')](),controller[_0x6826('0xf')]);router[_0x6826('0x3')](_0x6826('0x10'),auth[_0x6826('0x5')](),auth['canUpdate'](),controller['transfer']);module[_0x6826('0x11')]=router;
\ No newline at end of file
index f288fc2..a1d6257 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bc6=['path','lodash','../../mysqldb','client','../../config/logger','webbarapi','redis','defaults','localhost','socket.io-emitter','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','stack','status','send','name','NotFound','request','then','code','message','catch','User','findOne','VoiceChannels','filter','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','validate','callerId','format','user:%s','json','originate\x20executed!','hangup\x20fired:','userId','entityFound:','webbar:hangup','hangup\x20executed!','answer\x20fired:','webbar:answer','webbar:hold','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','all','conference','conference\x20fired:','webbar:conference','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!'];(function(_0x65e216,_0x568bd5){var _0x4e3e06=function(_0x351fc0){while(--_0x351fc0){_0x65e216['push'](_0x65e216['shift']());}};_0x4e3e06(++_0x568bd5);}(_0x2bc6,0x163));var _0x62bc=function(_0x287f9b,_0x557885){_0x287f9b=_0x287f9b-0x0;var _0x5248bb=_0x2bc6[_0x287f9b];return _0x5248bb;};'use strict';var path=require(_0x62bc('0x0'));var fs=require('fs');var _=require(_0x62bc('0x1'));var db=require(_0x62bc('0x2'))['db'];var config=require('../../config/environment');var util=require('util');var BPromise=require('bluebird');var jayson=require('jayson/promise');var amiClient=jayson[_0x62bc('0x3')]['http']({'port':0x232a});var logger=require(_0x62bc('0x4'))(_0x62bc('0x5'));var Redis=require('ioredis');config[_0x62bc('0x6')]=_[_0x62bc('0x7')](config[_0x62bc('0x6')],{'host':_0x62bc('0x8'),'port':0x18eb});var io=require(_0x62bc('0x9'))(new Redis(config[_0x62bc('0x6')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'callNumber':{'type':_0x62bc('0xc'),'required':[!![],_0x62bc('0xd')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x62bc('0xc')}});var hangupValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'sessionId':{'type':_0x62bc('0xc'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'sessionId':{'type':_0x62bc('0xc'),'required':[!![],_0x62bc('0xe')]},'transferNumber':{'type':'string','required':[!![],_0x62bc('0xf')]}});var holdValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x62bc('0xc'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});function emit(_0x39c5e0,_0x2d6820,_0x5bb569){logger[_0x62bc('0x10')](_0x39c5e0,_0x2d6820,JSON[_0x62bc('0x11')](_0x5bb569));io['to'](_0x39c5e0)[_0x62bc('0x12')](_0x2d6820,_0x5bb569);}function handleError(_0x1e2405){return function(_0xc95407){console[_0x62bc('0x13')](_0x62bc('0x14'),_0xc95407,_0xc95407 instanceof RangeError);logger[_0x62bc('0x15')](_0xc95407[_0x62bc('0x16')]);if(_0xc95407 instanceof RangeError){if(_0xc95407['name']){delete _0xc95407['name'];}_0x1e2405[_0x62bc('0x17')](0x194)[_0x62bc('0x18')](_0xc95407);}else{if(_0xc95407[_0x62bc('0x19')]){delete _0xc95407['name'];}_0x1e2405[_0x62bc('0x17')](0x1f4)['send'](_0xc95407);}};}function checkError(){return function(_0x30e7d9){if(!_0x30e7d9){throw new RangeError(_0x62bc('0x1a'));}return _0x30e7d9;};}function respondWithRpcPromise(_0x1b6689,_0x5e2e9b){return new BPromise(function(_0x3b8644,_0x28757d){var _0xae87bf=amiClient;return _0xae87bf[_0x62bc('0x1b')](_0x1b6689,_0x5e2e9b)[_0x62bc('0x1c')](function(_0x3b2eb0){if(_0x3b2eb0['error']){if(_0x3b2eb0[_0x62bc('0x15')][_0x62bc('0x1d')]===0x1f4){return _0x28757d(_0x3b2eb0[_0x62bc('0x15')][_0x62bc('0x1e')]);}return _0x3b8644(_0x3b2eb0[_0x62bc('0x15')]['message']);}else{_0x3b8644(_0x3b2eb0['result']);}})[_0x62bc('0x1f')](function(_0x58e76a){_0x28757d(_0x58e76a);});});}function getAgent(_0x32e749){return db[_0x62bc('0x20')][_0x62bc('0x21')]({'where':{'id':_0x32e749,'role':'agent'}})[_0x62bc('0x1c')](checkError());}function getAgentCheckSession(_0x19e689,_0x32e03c){return new BPromise(function(_0x5c03ac,_0x5b26ce){var _0x641626=respondWithRpcPromise(_0x62bc('0x22'));var _0x23817c=getAgent(_0x19e689);Promise['all']([_0x641626,_0x23817c])[_0x62bc('0x1c')](function(_0x1f2985){var _0x44600f=_0x1f2985[0x0];var _0x444267=_0x1f2985[0x1];var _0x5a9302=_[_0x62bc('0x23')](_0x44600f['rows'],function(_0x26701b){return _0x26701b[_0x62bc('0x24')]==_0x444267['id']&&_0x26701b[_0x62bc('0x25')]==_0x32e03c;});if(_0x5a9302[_0x62bc('0x26')]==0x1){_0x5c03ac(_0x444267);}else{_0x5b26ce(new RangeError(_0x62bc('0x27')+_0x32e03c+_0x62bc('0x28')));}});});}exports[_0x62bc('0x29')]=function(_0x12d443,_0x406063){logger[_0x62bc('0x10')](_0x62bc('0x2a'),_0x12d443[_0x62bc('0x2b')]);var _0x1668ab=originateValidation[_0x62bc('0x2c')](_0x12d443[_0x62bc('0x2b')]);if(_0x1668ab[_0x62bc('0x26')]>0x0){return _0x406063[_0x62bc('0x17')](0x190)['json'](_0x1668ab);}var _0x32e3a9=_0x12d443['body']['userId'];var _0x2823ef=_0x12d443['body']['callNumber'];var _0x512dac=_0x12d443[_0x62bc('0x2b')][_0x62bc('0x2d')];var _0x26e043=_0x12d443['body']['callbackUrl'];return getAgent(_0x32e3a9)['then'](function(_0x3c938d){logger[_0x62bc('0x10')]('entityFound:',_0x3c938d['name']);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x3c938d[_0x62bc('0x19')]),'webbar:originate',{'callNumber':_0x2823ef,'callerId':_0x512dac,'callbackUrl':_0x26e043});return _0x406063[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'error':![],'message':_0x62bc('0x31')});})[_0x62bc('0x1f')](handleError(_0x406063));};exports['hangup']=function(_0x42a777,_0x2caa71){logger['info'](_0x62bc('0x32'),_0x42a777[_0x62bc('0x2b')]);var _0x24dbbe=hangupValidation[_0x62bc('0x2c')](_0x42a777['body']);if(_0x24dbbe[_0x62bc('0x26')]>0x0){return _0x2caa71['status'](0x190)[_0x62bc('0x30')](_0x24dbbe);}var _0x19a6e2=_0x42a777[_0x62bc('0x2b')][_0x62bc('0x33')];var _0x5c0d67=_0x42a777[_0x62bc('0x2b')][_0x62bc('0x25')];return getAgent(_0x19a6e2)[_0x62bc('0x1c')](function(_0x176b1f){logger[_0x62bc('0x10')](_0x62bc('0x34'),_0x176b1f[_0x62bc('0x19')]);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x176b1f[_0x62bc('0x19')]),_0x62bc('0x35'),{'sessionId':_0x5c0d67});return _0x2caa71['status'](0xc8)['json']({'error':![],'message':_0x62bc('0x36')});})[_0x62bc('0x1f')](handleError(_0x2caa71));};exports['answer']=function(_0x1cf503,_0x366505){logger[_0x62bc('0x10')](_0x62bc('0x37'),_0x1cf503[_0x62bc('0x2b')]);var _0x5f3752=answerValidation[_0x62bc('0x2c')](_0x1cf503[_0x62bc('0x2b')]);if(_0x5f3752['length']>0x0){return _0x366505['status'](0x190)[_0x62bc('0x30')](_0x5f3752);}var _0xdbd9ee=_0x1cf503[_0x62bc('0x2b')]['userId'];var _0x185423=_0x1cf503[_0x62bc('0x2b')][_0x62bc('0x25')];return getAgent(_0xdbd9ee)[_0x62bc('0x1c')](function(_0x467d22){logger[_0x62bc('0x10')]('entityFound:',_0x467d22[_0x62bc('0x19')]);emit(util['format'](_0x62bc('0x2f'),_0x467d22[_0x62bc('0x19')]),_0x62bc('0x38'),{'sessionId':_0x185423});return _0x366505['status'](0xc8)['json']({'error':![],'message':'answer\x20executed!'});})[_0x62bc('0x1f')](handleError(_0x366505));};exports['hold']=function(_0x10ea2e,_0x10ffa0){logger['info']('hold\x20fired:',_0x10ea2e['body']);var _0x4ce5fa=holdValidation[_0x62bc('0x2c')](_0x10ea2e[_0x62bc('0x2b')]);if(_0x4ce5fa[_0x62bc('0x26')]>0x0){return _0x10ffa0[_0x62bc('0x17')](0x190)['json'](_0x4ce5fa);}var _0x3834b2=_0x10ea2e[_0x62bc('0x2b')]['userId'];var _0x1c0026=_0x10ea2e['body'][_0x62bc('0x25')];return getAgent(_0x3834b2)[_0x62bc('0x1c')](function(_0x17e0ec){logger[_0x62bc('0x10')](_0x62bc('0x34'),_0x17e0ec[_0x62bc('0x19')]);emit(util[_0x62bc('0x2e')]('user:%s',_0x17e0ec[_0x62bc('0x19')]),_0x62bc('0x39'),{'sessionId':_0x1c0026});return _0x10ffa0['status'](0xc8)[_0x62bc('0x30')]({'error':![],'message':'hold\x20executed!'});})[_0x62bc('0x1f')](handleError(_0x10ffa0));};exports[_0x62bc('0x3a')]=function(_0x4bec08,_0x6c2969){logger[_0x62bc('0x10')](_0x62bc('0x3b'),_0x4bec08['body']);var _0xed0bef=unholdValidation[_0x62bc('0x2c')](_0x4bec08[_0x62bc('0x2b')]);if(_0xed0bef[_0x62bc('0x26')]>0x0){return _0x6c2969[_0x62bc('0x17')](0x190)[_0x62bc('0x30')](_0xed0bef);}var _0xe9ea36=_0x4bec08[_0x62bc('0x2b')][_0x62bc('0x33')];var _0x1fb6d3=_0x4bec08[_0x62bc('0x2b')][_0x62bc('0x25')];return getAgent(_0xe9ea36)[_0x62bc('0x1c')](function(_0x3bb89a){logger[_0x62bc('0x10')](_0x62bc('0x34'),_0x3bb89a['name']);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x3bb89a[_0x62bc('0x19')]),_0x62bc('0x3c'),{'sessionId':_0x1fb6d3});return _0x6c2969[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'error':![],'message':_0x62bc('0x3d')});})[_0x62bc('0x1f')](handleError(_0x6c2969));};exports[_0x62bc('0x3e')]=function(_0x4142dd,_0x2f2322){logger[_0x62bc('0x10')]('calls\x20fired:',_0x2f2322[_0x62bc('0x2b')]);var _0x50d761=callsValidation[_0x62bc('0x2c')](_0x4142dd[_0x62bc('0x2b')]);if(_0x50d761[_0x62bc('0x26')]>0x0){return _0x2f2322[_0x62bc('0x17')](0x190)[_0x62bc('0x30')](_0x50d761);}var _0xb6e13e=_0x4142dd[_0x62bc('0x2b')][_0x62bc('0x33')];var _0x4934ce=respondWithRpcPromise('VoiceChannels');var _0xd35ce2=getAgent(_0xb6e13e);return Promise[_0x62bc('0x3f')]([_0x4934ce,_0xd35ce2])[_0x62bc('0x1c')](function(_0x56bccf){var _0x221681=_0x56bccf[0x0];var _0x1325a4=_0x56bccf[0x1];var _0x14064d=_[_0x62bc('0x23')](_0x221681['rows'],function(_0x19e990){return _0x19e990[_0x62bc('0x24')]==_0x1325a4['id'];});return _0x2f2322[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'count':_0x14064d[_0x62bc('0x26')],'rows':_0x14064d});})[_0x62bc('0x1f')](handleError(_0x2f2322));};exports[_0x62bc('0x40')]=function(_0x4f196a,_0x32d424){logger[_0x62bc('0x10')](_0x62bc('0x41'),_0x4f196a['body']);var _0x4a56b7=conferenceValidation[_0x62bc('0x2c')](_0x4f196a[_0x62bc('0x2b')]);if(_0x4a56b7[_0x62bc('0x26')]>0x0){return _0x32d424['status'](0x190)[_0x62bc('0x30')](_0x4a56b7);}var _0x579c0c=_0x4f196a[_0x62bc('0x2b')][_0x62bc('0x33')];return getAgent(_0x579c0c)['then'](function(_0x3884b0){logger['info'](_0x62bc('0x34'),_0x3884b0['name']);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x3884b0[_0x62bc('0x19')]),_0x62bc('0x42'));return _0x32d424[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'error':![],'message':'conference\x20executed!'});})[_0x62bc('0x1f')](handleError(_0x32d424));};exports[_0x62bc('0x43')]=function(_0x2e28e4,_0x4e5478){logger[_0x62bc('0x10')](_0x62bc('0x44'),_0x2e28e4[_0x62bc('0x2b')]);var _0x132509=transferValidation['validate'](_0x2e28e4[_0x62bc('0x2b')]);if(_0x132509[_0x62bc('0x26')]>0x0){return _0x4e5478[_0x62bc('0x17')](0x190)[_0x62bc('0x30')](_0x132509);}var _0x31d5f0=_0x2e28e4['body']['userId'];var _0x280f73=_0x2e28e4['body'][_0x62bc('0x25')];var _0x18779a=_0x2e28e4['body'][_0x62bc('0x45')];return getAgent(_0x31d5f0)['then'](function(_0x2a3599){logger['info'](_0x62bc('0x34'),_0x2a3599['name']);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x2a3599[_0x62bc('0x19')]),'webbar:transfer',{'sessionId':_0x280f73,'transferNumber':_0x18779a});return _0x4e5478[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'error':![],'message':_0x62bc('0x46')});})[_0x62bc('0x1f')](handleError(_0x4e5478));};
\ No newline at end of file
+var _0x4ded=['User','findOne','agent','VoiceChannels','all','filter','rows','length','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl','entityFound:','format','webbar:originate','originate\x20executed!','hangup','sessionId','user:%s','webbar:hangup','hangup\x20executed!','webbar:answer','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls\x20fired:','UserId','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','defaults','redis','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','handleError:','stack','name','status','send','NotFound','request','then','error','code','message','result','catch'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0x4ded,0x116));var _0xd4de=function(_0x15e247,_0x57c39e){_0x15e247=_0x15e247-0x0;var _0x51e732=_0x4ded[_0x15e247];return _0x51e732;};'use strict';var path=require(_0xd4de('0x0'));var fs=require('fs');var _=require(_0xd4de('0x1'));var db=require(_0xd4de('0x2'))['db'];var config=require(_0xd4de('0x3'));var util=require(_0xd4de('0x4'));var BPromise=require(_0xd4de('0x5'));var jayson=require(_0xd4de('0x6'));var amiClient=jayson[_0xd4de('0x7')][_0xd4de('0x8')]({'port':0x232a});var logger=require(_0xd4de('0x9'))(_0xd4de('0xa'));var Redis=require(_0xd4de('0xb'));config['redis']=_[_0xd4de('0xc')](config[_0xd4de('0xd')],{'host':_0xd4de('0xe'),'port':0x18eb});var io=require(_0xd4de('0xf'))(new Redis(config[_0xd4de('0xd')]));var Schema=require(_0xd4de('0x10'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0xd4de('0x11')]},'callNumber':{'type':'string','required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':'string'},'callbackUrl':{'type':_0xd4de('0x12')}});var hangupValidation=new Schema({'userId':{'type':_0xd4de('0x13'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0xd4de('0x11')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0xd4de('0x13'),'required':[!![],_0xd4de('0x11')]},'sessionId':{'type':_0xd4de('0x12'),'required':[!![],_0xd4de('0x14')]},'transferNumber':{'type':_0xd4de('0x12'),'required':[!![],_0xd4de('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0xd4de('0x13'),'required':[!![],_0xd4de('0x11')]},'sessionId':{'type':_0xd4de('0x12'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xd4de('0x13'),'required':[!![],_0xd4de('0x11')]},'sessionId':{'type':_0xd4de('0x12'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xd4de('0x13'),'required':[!![],_0xd4de('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':_0xd4de('0x13'),'required':[!![],_0xd4de('0x11')]}});function emit(_0x325fba,_0x4b0a95,_0x5d0aeb){logger[_0xd4de('0x16')](_0x325fba,_0x4b0a95,JSON[_0xd4de('0x17')](_0x5d0aeb));io['to'](_0x325fba)[_0xd4de('0x18')](_0x4b0a95,_0x5d0aeb);}function handleError(_0x428aa2){return function(_0x5b1d1c){console['log'](_0xd4de('0x19'),_0x5b1d1c,_0x5b1d1c instanceof RangeError);logger['error'](_0x5b1d1c[_0xd4de('0x1a')]);if(_0x5b1d1c instanceof RangeError){if(_0x5b1d1c[_0xd4de('0x1b')]){delete _0x5b1d1c['name'];}_0x428aa2[_0xd4de('0x1c')](0x194)['send'](_0x5b1d1c);}else{if(_0x5b1d1c[_0xd4de('0x1b')]){delete _0x5b1d1c[_0xd4de('0x1b')];}_0x428aa2[_0xd4de('0x1c')](0x1f4)[_0xd4de('0x1d')](_0x5b1d1c);}};}function checkError(){return function(_0x5368f5){if(!_0x5368f5){throw new RangeError(_0xd4de('0x1e'));}return _0x5368f5;};}function respondWithRpcPromise(_0x47311c,_0x360e3d){return new BPromise(function(_0xdb3fc,_0x1c631a){var _0x2d092a=amiClient;return _0x2d092a[_0xd4de('0x1f')](_0x47311c,_0x360e3d)[_0xd4de('0x20')](function(_0x2f9de6){if(_0x2f9de6[_0xd4de('0x21')]){if(_0x2f9de6['error'][_0xd4de('0x22')]===0x1f4){return _0x1c631a(_0x2f9de6[_0xd4de('0x21')][_0xd4de('0x23')]);}return _0xdb3fc(_0x2f9de6[_0xd4de('0x21')][_0xd4de('0x23')]);}else{_0xdb3fc(_0x2f9de6[_0xd4de('0x24')]);}})[_0xd4de('0x25')](function(_0x36308c){_0x1c631a(_0x36308c);});});}function getAgent(_0x2aa82a){return db[_0xd4de('0x26')][_0xd4de('0x27')]({'where':{'id':_0x2aa82a,'role':_0xd4de('0x28')}})['then'](checkError());}function getAgentCheckSession(_0xe64e4e,_0x35e2fc){return new BPromise(function(_0x5005b0,_0x1d7d37){var _0x59b3c5=respondWithRpcPromise(_0xd4de('0x29'));var _0x32e407=getAgent(_0xe64e4e);Promise[_0xd4de('0x2a')]([_0x59b3c5,_0x32e407])['then'](function(_0xd4de93){var _0x36f2f1=_0xd4de93[0x0];var _0x17f0a=_0xd4de93[0x1];var _0x50cb73=_[_0xd4de('0x2b')](_0x36f2f1[_0xd4de('0x2c')],function(_0x55f9f9){return _0x55f9f9['UserId']==_0x17f0a['id']&&_0x55f9f9['sessionId']==_0x35e2fc;});if(_0x50cb73[_0xd4de('0x2d')]==0x1){_0x5005b0(_0x17f0a);}else{_0x1d7d37(new RangeError('sessionId\x20'+_0x35e2fc+_0xd4de('0x2e')));}});});}exports[_0xd4de('0x2f')]=function(_0x3bc54d,_0x2e08eb){logger['info'](_0xd4de('0x30'),_0x3bc54d[_0xd4de('0x31')]);var _0x4e43a1=originateValidation[_0xd4de('0x10')](_0x3bc54d[_0xd4de('0x31')]);if(_0x4e43a1['length']>0x0){return _0x2e08eb['status'](0x190)[_0xd4de('0x32')](_0x4e43a1);}var _0x40114b=_0x3bc54d[_0xd4de('0x31')][_0xd4de('0x33')];var _0x4f565b=_0x3bc54d[_0xd4de('0x31')][_0xd4de('0x34')];var _0x4def30=_0x3bc54d[_0xd4de('0x31')][_0xd4de('0x35')];var _0x1e744e=_0x3bc54d[_0xd4de('0x31')][_0xd4de('0x36')];return getAgent(_0x40114b)[_0xd4de('0x20')](function(_0x53441c){logger['info'](_0xd4de('0x37'),_0x53441c[_0xd4de('0x1b')]);emit(util[_0xd4de('0x38')]('user:%s',_0x53441c[_0xd4de('0x1b')]),_0xd4de('0x39'),{'callNumber':_0x4f565b,'callerId':_0x4def30,'callbackUrl':_0x1e744e});return _0x2e08eb['status'](0xc8)[_0xd4de('0x32')]({'error':![],'message':_0xd4de('0x3a')});})[_0xd4de('0x25')](handleError(_0x2e08eb));};exports[_0xd4de('0x3b')]=function(_0x4c5898,_0x53d7dc){logger[_0xd4de('0x16')]('hangup\x20fired:',_0x4c5898[_0xd4de('0x31')]);var _0x4de12c=hangupValidation[_0xd4de('0x10')](_0x4c5898[_0xd4de('0x31')]);if(_0x4de12c[_0xd4de('0x2d')]>0x0){return _0x53d7dc[_0xd4de('0x1c')](0x190)['json'](_0x4de12c);}var _0x21209d=_0x4c5898['body'][_0xd4de('0x33')];var _0x280f76=_0x4c5898[_0xd4de('0x31')][_0xd4de('0x3c')];return getAgent(_0x21209d)[_0xd4de('0x20')](function(_0x13c256){logger[_0xd4de('0x16')]('entityFound:',_0x13c256[_0xd4de('0x1b')]);emit(util[_0xd4de('0x38')](_0xd4de('0x3d'),_0x13c256[_0xd4de('0x1b')]),_0xd4de('0x3e'),{'sessionId':_0x280f76});return _0x53d7dc['status'](0xc8)[_0xd4de('0x32')]({'error':![],'message':_0xd4de('0x3f')});})[_0xd4de('0x25')](handleError(_0x53d7dc));};exports['answer']=function(_0x3eaa14,_0x1f2ff4){logger[_0xd4de('0x16')]('answer\x20fired:',_0x3eaa14[_0xd4de('0x31')]);var _0x10a42c=answerValidation[_0xd4de('0x10')](_0x3eaa14[_0xd4de('0x31')]);if(_0x10a42c[_0xd4de('0x2d')]>0x0){return _0x1f2ff4[_0xd4de('0x1c')](0x190)[_0xd4de('0x32')](_0x10a42c);}var _0x5ecbbd=_0x3eaa14[_0xd4de('0x31')][_0xd4de('0x33')];var _0x58082a=_0x3eaa14['body'][_0xd4de('0x3c')];return getAgent(_0x5ecbbd)[_0xd4de('0x20')](function(_0x20245a){logger['info']('entityFound:',_0x20245a[_0xd4de('0x1b')]);emit(util[_0xd4de('0x38')]('user:%s',_0x20245a[_0xd4de('0x1b')]),_0xd4de('0x40'),{'sessionId':_0x58082a});return _0x1f2ff4[_0xd4de('0x1c')](0xc8)[_0xd4de('0x32')]({'error':![],'message':'answer\x20executed!'});})[_0xd4de('0x25')](handleError(_0x1f2ff4));};exports[_0xd4de('0x41')]=function(_0x579700,_0x3745ef){logger[_0xd4de('0x16')](_0xd4de('0x42'),_0x579700['body']);var _0x2f775c=holdValidation[_0xd4de('0x10')](_0x579700[_0xd4de('0x31')]);if(_0x2f775c[_0xd4de('0x2d')]>0x0){return _0x3745ef[_0xd4de('0x1c')](0x190)[_0xd4de('0x32')](_0x2f775c);}var _0x40bf55=_0x579700[_0xd4de('0x31')][_0xd4de('0x33')];var _0x2e46b3=_0x579700['body'][_0xd4de('0x3c')];return getAgent(_0x40bf55)[_0xd4de('0x20')](function(_0x178daf){logger['info'](_0xd4de('0x37'),_0x178daf[_0xd4de('0x1b')]);emit(util[_0xd4de('0x38')](_0xd4de('0x3d'),_0x178daf[_0xd4de('0x1b')]),_0xd4de('0x43'),{'sessionId':_0x2e46b3});return _0x3745ef[_0xd4de('0x1c')](0xc8)[_0xd4de('0x32')]({'error':![],'message':_0xd4de('0x44')});})[_0xd4de('0x25')](handleError(_0x3745ef));};exports['unhold']=function(_0x3e4c7f,_0x26d032){logger[_0xd4de('0x16')](_0xd4de('0x45'),_0x3e4c7f[_0xd4de('0x31')]);var _0x584548=unholdValidation['validate'](_0x3e4c7f[_0xd4de('0x31')]);if(_0x584548[_0xd4de('0x2d')]>0x0){return _0x26d032['status'](0x190)['json'](_0x584548);}var _0x2d8589=_0x3e4c7f[_0xd4de('0x31')][_0xd4de('0x33')];var _0x199440=_0x3e4c7f[_0xd4de('0x31')][_0xd4de('0x3c')];return getAgent(_0x2d8589)[_0xd4de('0x20')](function(_0x4801de){logger[_0xd4de('0x16')](_0xd4de('0x37'),_0x4801de[_0xd4de('0x1b')]);emit(util[_0xd4de('0x38')]('user:%s',_0x4801de[_0xd4de('0x1b')]),_0xd4de('0x46'),{'sessionId':_0x199440});return _0x26d032[_0xd4de('0x1c')](0xc8)[_0xd4de('0x32')]({'error':![],'message':_0xd4de('0x47')});})[_0xd4de('0x25')](handleError(_0x26d032));};exports['calls']=function(_0x70a48b,_0x5896c5){logger['info'](_0xd4de('0x48'),_0x5896c5[_0xd4de('0x31')]);var _0x2d1e45=callsValidation[_0xd4de('0x10')](_0x70a48b['body']);if(_0x2d1e45[_0xd4de('0x2d')]>0x0){return _0x5896c5[_0xd4de('0x1c')](0x190)[_0xd4de('0x32')](_0x2d1e45);}var _0x117052=_0x70a48b[_0xd4de('0x31')]['userId'];var _0x5496f7=respondWithRpcPromise('VoiceChannels');var _0x3f6d8c=getAgent(_0x117052);return Promise[_0xd4de('0x2a')]([_0x5496f7,_0x3f6d8c])[_0xd4de('0x20')](function(_0x3c5f7a){var _0x5be7d2=_0x3c5f7a[0x0];var _0x35ba6f=_0x3c5f7a[0x1];var _0x146eaa=_[_0xd4de('0x2b')](_0x5be7d2[_0xd4de('0x2c')],function(_0x51e239){return _0x51e239[_0xd4de('0x49')]==_0x35ba6f['id'];});return _0x5896c5[_0xd4de('0x1c')](0xc8)[_0xd4de('0x32')]({'count':_0x146eaa[_0xd4de('0x2d')],'rows':_0x146eaa});})['catch'](handleError(_0x5896c5));};exports['conference']=function(_0x5aeab7,_0x42e40b){logger[_0xd4de('0x16')](_0xd4de('0x4a'),_0x5aeab7['body']);var _0x18f2c3=conferenceValidation[_0xd4de('0x10')](_0x5aeab7[_0xd4de('0x31')]);if(_0x18f2c3['length']>0x0){return _0x42e40b[_0xd4de('0x1c')](0x190)['json'](_0x18f2c3);}var _0x2ee7c1=_0x5aeab7[_0xd4de('0x31')][_0xd4de('0x33')];return getAgent(_0x2ee7c1)[_0xd4de('0x20')](function(_0x9b082d){logger[_0xd4de('0x16')](_0xd4de('0x37'),_0x9b082d[_0xd4de('0x1b')]);emit(util['format'](_0xd4de('0x3d'),_0x9b082d['name']),_0xd4de('0x4b'));return _0x42e40b[_0xd4de('0x1c')](0xc8)['json']({'error':![],'message':_0xd4de('0x4c')});})[_0xd4de('0x25')](handleError(_0x42e40b));};exports[_0xd4de('0x4d')]=function(_0x4652b9,_0x26a803){logger[_0xd4de('0x16')](_0xd4de('0x4e'),_0x4652b9[_0xd4de('0x31')]);var _0x1c2f97=transferValidation[_0xd4de('0x10')](_0x4652b9[_0xd4de('0x31')]);if(_0x1c2f97[_0xd4de('0x2d')]>0x0){return _0x26a803[_0xd4de('0x1c')](0x190)['json'](_0x1c2f97);}var _0x38d703=_0x4652b9[_0xd4de('0x31')][_0xd4de('0x33')];var _0x331f08=_0x4652b9[_0xd4de('0x31')][_0xd4de('0x3c')];var _0x26bf55=_0x4652b9[_0xd4de('0x31')]['transferNumber'];return getAgent(_0x38d703)[_0xd4de('0x20')](function(_0x538d98){logger['info']('entityFound:',_0x538d98[_0xd4de('0x1b')]);emit(util[_0xd4de('0x38')]('user:%s',_0x538d98['name']),'webbar:transfer',{'sessionId':_0x331f08,'transferNumber':_0x26bf55});return _0x26a803['status'](0xc8)[_0xd4de('0x32')]({'error':![],'message':'transfer\x20executed!'});})[_0xd4de('0x25')](handleError(_0x26a803));};
\ No newline at end of file
index 447efbc..45a8d6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1623=['destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','./whatsappAccount.controller','isAuthenticated','index','/describe','describe','get','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','post','/:id/dispositions','addAgents','/:id/notify','notify','update'];(function(_0x556927,_0x34b53f){var _0x5f1235=function(_0x4f4e44){while(--_0x4f4e44){_0x556927['push'](_0x556927['shift']());}};_0x5f1235(++_0x34b53f);}(_0x1623,0xab));var _0x3162=function(_0x21148c,_0x4eca83){_0x21148c=_0x21148c-0x0;var _0x3f2bf2=_0x1623[_0x21148c];return _0x3f2bf2;};'use strict';var multer=require(_0x3162('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3162('0x1'));var express=require(_0x3162('0x2'));var router=express[_0x3162('0x3')]();var fs_extra=require(_0x3162('0x4'));var auth=require(_0x3162('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3162('0x6'));router['get']('/',auth[_0x3162('0x7')](),controller[_0x3162('0x8')]);router['get'](_0x3162('0x9'),auth[_0x3162('0x7')](),controller[_0x3162('0xa')]);router[_0x3162('0xb')](_0x3162('0xc'),auth[_0x3162('0x7')](),controller[_0x3162('0xd')]);router[_0x3162('0xb')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x3162('0xe')]);router[_0x3162('0xb')](_0x3162('0xf'),auth[_0x3162('0x7')](),controller[_0x3162('0x10')]);router[_0x3162('0xb')](_0x3162('0x11'),auth[_0x3162('0x7')](),controller[_0x3162('0x12')]);router['get'](_0x3162('0x13'),auth['isAuthenticated'](),controller[_0x3162('0x14')]);router[_0x3162('0x15')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3162('0x15')](_0x3162('0x16'),auth[_0x3162('0x7')](),controller['addDisposition']);router[_0x3162('0x15')](_0x3162('0xf'),auth[_0x3162('0x7')](),controller['addAnswer']);router[_0x3162('0x15')](_0x3162('0x11'),auth[_0x3162('0x7')](),controller[_0x3162('0x17')]);router[_0x3162('0x15')](_0x3162('0x13'),auth[_0x3162('0x7')](),controller['addApplications']);router[_0x3162('0x15')](_0x3162('0x18'),controller[_0x3162('0x19')]);router[_0x3162('0x15')]('/:id/send',auth[_0x3162('0x7')](),controller['send']);router['put'](_0x3162('0xc'),auth[_0x3162('0x7')](),controller[_0x3162('0x1a')]);router['delete']('/:id',auth[_0x3162('0x7')](),controller[_0x3162('0x1b')]);router[_0x3162('0x1c')](_0x3162('0x16'),auth[_0x3162('0x7')](),controller[_0x3162('0x1d')]);router[_0x3162('0x1c')](_0x3162('0xf'),auth['isAuthenticated'](),controller[_0x3162('0x1e')]);router[_0x3162('0x1c')](_0x3162('0x11'),auth[_0x3162('0x7')](),controller[_0x3162('0x1f')]);module[_0x3162('0x20')]=router;
\ No newline at end of file
+var _0x8f4c=['create','addDisposition','/:id/canned_answers','addAgents','/:id/applications','addApplications','/:id/notify','notify','/:id/send','send','put','update','delete','destroy','removeDispositions','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','describe','/:id','isAuthenticated','show','/:id/dispositions','getDispositions','/:id/users','getAgents','getApplications','post'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x8f4c,0x113));var _0xc8f4=function(_0x1f0ad7,_0xbdbf69){_0x1f0ad7=_0x1f0ad7-0x0;var _0xc907ef=_0x8f4c[_0x1f0ad7];return _0xc907ef;};'use strict';var multer=require(_0xc8f4('0x0'));var util=require(_0xc8f4('0x1'));var path=require(_0xc8f4('0x2'));var timeout=require(_0xc8f4('0x3'));var express=require(_0xc8f4('0x4'));var router=express[_0xc8f4('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc8f4('0x6'));var interaction=require(_0xc8f4('0x7'));var config=require(_0xc8f4('0x8'));var controller=require('./whatsappAccount.controller');router[_0xc8f4('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xc8f4('0xa'),auth['isAuthenticated'](),controller[_0xc8f4('0xb')]);router[_0xc8f4('0x9')](_0xc8f4('0xc'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0xe')]);router['get'](_0xc8f4('0xf'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x10')]);router[_0xc8f4('0x9')]('/:id/canned_answers',auth[_0xc8f4('0xd')](),controller['getAnswers']);router[_0xc8f4('0x9')](_0xc8f4('0x11'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x12')]);router[_0xc8f4('0x9')]('/:id/applications',auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x13')]);router[_0xc8f4('0x14')]('/',auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x15')]);router[_0xc8f4('0x14')]('/:id/dispositions',auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x16')]);router[_0xc8f4('0x14')](_0xc8f4('0x17'),auth[_0xc8f4('0xd')](),controller['addAnswer']);router[_0xc8f4('0x14')]('/:id/users',auth['isAuthenticated'](),controller[_0xc8f4('0x18')]);router[_0xc8f4('0x14')](_0xc8f4('0x19'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x1a')]);router[_0xc8f4('0x14')](_0xc8f4('0x1b'),controller[_0xc8f4('0x1c')]);router[_0xc8f4('0x14')](_0xc8f4('0x1d'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x1e')]);router[_0xc8f4('0x1f')]('/:id',auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x20')]);router[_0xc8f4('0x21')](_0xc8f4('0xc'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x22')]);router[_0xc8f4('0x21')](_0xc8f4('0xf'),auth['isAuthenticated'](),controller[_0xc8f4('0x23')]);router[_0xc8f4('0x21')](_0xc8f4('0x17'),auth[_0xc8f4('0xd')](),controller['removeAnswers']);router[_0xc8f4('0x21')]('/:id/users',auth[_0xc8f4('0xd')](),controller['removeAgents']);module[_0xc8f4('0x24')]=router;
\ No newline at end of file
index f7715d7..552849d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd8e=['generate','ENUM','twilio','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name'];(function(_0x2ae040,_0x391121){var _0x3ab366=function(_0xb1fe56){while(--_0xb1fe56){_0x2ae040['push'](_0x2ae040['shift']());}};_0x3ab366(++_0x391121);}(_0xcd8e,0x16b));var _0xecd8=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xcd8e[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0xecd8('0x0'));var rs=require(_0xecd8('0x1'));module[_0xecd8('0x2')]={'name':{'type':Sequelize[_0xecd8('0x3')],'unique':_0xecd8('0x4'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0xecd8('0x3')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xecd8('0x5')]();}},'phone':{'type':Sequelize[_0xecd8('0x3')]},'type':{'type':Sequelize[_0xecd8('0x6')](_0xecd8('0x7'))},'accountSid':{'type':Sequelize[_0xecd8('0x3')]},'authToken':{'type':Sequelize[_0xecd8('0x3')]},'notificationTemplate':{'type':Sequelize[_0xecd8('0x8')],'defaultValue':function(){return _0xecd8('0x9');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0xecd8('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xecd8('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xecd8('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xecd8('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xecd8('0xb')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xecd8('0xc'),'set':function(_0x33339f){if(!_0x33339f){this[_0xecd8('0xd')](_0xecd8('0xe'),null);}this[_0xecd8('0xd')](_0xecd8('0xf'),_0x33339f);}},'description':{'type':Sequelize[_0xecd8('0x3')]}};
\ No newline at end of file
+var _0x4253=['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','mandatoryDispositionPauseId','mandatoryDisposition','STRING','generate','TEXT'];(function(_0x57d9c,_0x297b78){var _0x1972a5=function(_0x33528a){while(--_0x33528a){_0x57d9c['push'](_0x57d9c['shift']());}};_0x1972a5(++_0x297b78);}(_0x4253,0x152));var _0x3425=function(_0x39062d,_0x2342d7){_0x39062d=_0x39062d-0x0;var _0x19666f=_0x4253[_0x39062d];return _0x19666f;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module['exports']={'name':{'type':Sequelize[_0x3425('0x0')],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x3425('0x1')]();}},'phone':{'type':Sequelize[_0x3425('0x0')]},'type':{'type':Sequelize['ENUM']('twilio')},'accountSid':{'type':Sequelize[_0x3425('0x0')]},'authToken':{'type':Sequelize[_0x3425('0x0')]},'notificationTemplate':{'type':Sequelize[_0x3425('0x2')],'defaultValue':function(){return _0x3425('0x3');}},'notificationSound':{'type':Sequelize[_0x3425('0x4')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x3425('0x4')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3425('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3425('0x4')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3425('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3425('0x4')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x3425('0x6')},'mandatoryDisposition':{'type':Sequelize[_0x3425('0x4')],'defaultValue':![],'comment':_0x3425('0x7'),'set':function(_0x326f12){if(!_0x326f12){this[_0x3425('0x8')](_0x3425('0x9'),null);}this[_0x3425('0x8')](_0x3425('0xa'),_0x326f12);}},'description':{'type':Sequelize[_0x3425('0x0')]}};
\ No newline at end of file
index e496922..cebab19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaef7=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','jayson/promise','client','http','then','info','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','result','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','update','destroy','get','UserProfileResource','sendStatus','stack','name','send','Pause','map','WhatsappAccount','type','query','filters','model','intersection','fields','attributes','length','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','rawAttributes','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','WhatsappAccounts','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','mandatoryDispositionPause','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','removeDispositions','ids','addAnswer','getAnswers','findOne','CannedAnswer','hasOwnProperty','nolimit','order','removeAnswers','omit','spread','emit','removeAgents','isArray','userWhatsappAccount:remove','User','getAgents','addApplications','transaction','WhatsappApplication','findAndCountAll','getApplications','whatsapp','Applications','applications','orderBy','priority','asc','account','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','mobile','twilio','from','From','replace','Body','messageId','MessageSid','from\x20is\x20mandatory','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','ListId','CmContact','Contacts','DESC','list','contact','WhatsappInteraction','interaction','created','autoclose','close','unmanaged','*,*,*,*','WhatsappMessage','AttachmentId','UserId','unshift','agent','startRouting','receiveMessage','entity\x20found','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','CmList','List','out','Messages','dataValues','push','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x47af66,_0x52cd59){var _0x465bad=function(_0x5af18e){while(--_0x5af18e){_0x47af66['push'](_0x47af66['shift']());}};_0x465bad(++_0x52cd59);}(_0xaef7,0x15a));var _0x7aef=function(_0x3650e0,_0xda0f52){_0x3650e0=_0x3650e0-0x0;var _0x6841fb=_0xaef7[_0x3650e0];return _0x6841fb;};'use strict';var emlformat=require(_0x7aef('0x0'));var rimraf=require(_0x7aef('0x1'));var zipdir=require(_0x7aef('0x2'));var jsonpatch=require(_0x7aef('0x3'));var rp=require(_0x7aef('0x4'));var moment=require('moment');var BPromise=require(_0x7aef('0x5'));var Mustache=require('mustache');var util=require(_0x7aef('0x6'));var path=require(_0x7aef('0x7'));var sox=require(_0x7aef('0x8'));var csv=require('to-csv');var ejs=require(_0x7aef('0x9'));var fs=require('fs');var fs_extra=require(_0x7aef('0xa'));var _=require(_0x7aef('0xb'));var squel=require('squel');var crypto=require(_0x7aef('0xc'));var jsforce=require(_0x7aef('0xd'));var deskjs=require(_0x7aef('0xe'));var toCsv=require(_0x7aef('0xf'));var querystring=require('querystring');var Papa=require(_0x7aef('0x10'));var Redis=require(_0x7aef('0x11'));var authService=require(_0x7aef('0x12'));var qs=require(_0x7aef('0x13'));var as=require(_0x7aef('0x14'));var hardwareService=require(_0x7aef('0x15'));var logger=require(_0x7aef('0x16'))(_0x7aef('0x17'));var utils=require(_0x7aef('0x18'));var config=require(_0x7aef('0x19'));var licenseUtil=require(_0x7aef('0x1a'));var db=require('../../mysqldb')['db'];config[_0x7aef('0x1b')]=_[_0x7aef('0x1c')](config[_0x7aef('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x7aef('0x1d'))(new Redis(config[_0x7aef('0x1b')]));require('./whatsappAccount.socket')['register'](socket);var jayson=require(_0x7aef('0x1e'));var client=jayson[_0x7aef('0x1f')][_0x7aef('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x5b3632,_0x29ee8f,_0x41abcf,_0x281dd2){return new BPromise(function(_0xc42397,_0x566656){var _0x4ae4bb=_0x281dd2||client;return _0x4ae4bb['request'](_0x5b3632,_0x41abcf)[_0x7aef('0x21')](function(_0x580da3){logger[_0x7aef('0x22')]('WhatsappAccount,\x20%s,\x20%s',_0x29ee8f,'request\x20sent');logger[_0x7aef('0x23')](_0x7aef('0x24'),_0x29ee8f,_0x7aef('0x25'),JSON[_0x7aef('0x26')](_0x580da3));if(_0x580da3[_0x7aef('0x27')]){if(_0x580da3[_0x7aef('0x27')][_0x7aef('0x28')]===0x1f4){logger['error'](_0x7aef('0x29'),_0x29ee8f,_0x580da3[_0x7aef('0x27')][_0x7aef('0x2a')]);return _0x566656(_0x580da3['error'][_0x7aef('0x2a')]);}logger[_0x7aef('0x27')]('WhatsappAccount,\x20%s,\x20%s',_0x29ee8f,_0x580da3[_0x7aef('0x27')][_0x7aef('0x2a')]);return _0xc42397(_0x580da3[_0x7aef('0x27')][_0x7aef('0x2a')]);}else{logger[_0x7aef('0x22')]('WhatsappAccount,\x20%s,\x20%s',_0x29ee8f,_0x7aef('0x25'));_0xc42397(_0x580da3[_0x7aef('0x2b')][_0x7aef('0x2a')]);}})['catch'](function(_0x5a8e79){logger[_0x7aef('0x27')](_0x7aef('0x29'),_0x29ee8f,_0x5a8e79);_0x566656(_0x5a8e79);});});}function respondWithStatusCode(_0x1bf642,_0x443312){_0x443312=_0x443312||0xcc;return function(_0x1abc3){if(_0x1abc3){return _0x1bf642['sendStatus'](_0x443312);}return _0x1bf642[_0x7aef('0x2c')](_0x443312)[_0x7aef('0x2d')]();};}function respondWithResult(_0xf1042d,_0x54d0b1){_0x54d0b1=_0x54d0b1||0xc8;return function(_0x2a1c25){if(_0x2a1c25){return _0xf1042d['status'](_0x54d0b1)['json'](_0x2a1c25);}};}function respondWithFilteredResult(_0x25f4c4,_0x7d36f1){return function(_0x4a1c26){if(_0x4a1c26){var _0x2ce3b4=typeof _0x7d36f1[_0x7aef('0x2e')]==='undefined'&&typeof _0x7d36f1['limit']===_0x7aef('0x2f');var _0x45e2cf=_0x4a1c26[_0x7aef('0x30')];var _0x4a29da=_0x2ce3b4?0x0:_0x7d36f1[_0x7aef('0x2e')];var _0x5797eb=_0x2ce3b4?_0x4a1c26[_0x7aef('0x30')]:_0x7d36f1[_0x7aef('0x2e')]+_0x7d36f1[_0x7aef('0x31')];var _0x3b68b6;if(_0x5797eb>=_0x45e2cf){_0x5797eb=_0x45e2cf;_0x3b68b6=0xc8;}else{_0x3b68b6=0xce;}_0x25f4c4[_0x7aef('0x2c')](_0x3b68b6);return _0x25f4c4[_0x7aef('0x32')](_0x7aef('0x33'),_0x4a29da+'-'+_0x5797eb+'/'+_0x45e2cf)[_0x7aef('0x34')](_0x4a1c26);}return null;};}function patchUpdates(_0x576f83){return function(_0x4619d5){try{jsonpatch[_0x7aef('0x35')](_0x4619d5,_0x576f83,!![]);}catch(_0x3fc8a1){return BPromise['reject'](_0x3fc8a1);}return _0x4619d5['save']();};}function saveUpdates(_0x4f3cc2,_0x2f320a){return function(_0x583811){if(_0x583811){return _0x583811[_0x7aef('0x36')](_0x4f3cc2)[_0x7aef('0x21')](function(_0x5d10aa){return _0x5d10aa;});}return null;};}function removeEntity(_0x4bd825,_0x3ec21b){return function(_0x4e3ffb){if(_0x4e3ffb){return _0x4e3ffb[_0x7aef('0x37')]()['then'](function(){var _0x46f6fe=_0x4e3ffb[_0x7aef('0x38')]({'plain':!![]});var _0x1ccec9='WhatsappAccounts';return db[_0x7aef('0x39')][_0x7aef('0x37')]({'where':{'type':_0x1ccec9,'resourceId':_0x46f6fe['id']}})[_0x7aef('0x21')](function(){return _0x4e3ffb;});})['then'](function(){_0x4bd825[_0x7aef('0x2c')](0xcc)[_0x7aef('0x2d')]();});}};}function handleEntityNotFound(_0x53b3aa,_0x3ff6b1){return function(_0x1e48bc){if(!_0x1e48bc){_0x53b3aa[_0x7aef('0x3a')](0x194);}return _0x1e48bc;};}function handleError(_0x35369d,_0x55bbe1){_0x55bbe1=_0x55bbe1||0x1f4;return function(_0x1d65bc){logger['error'](_0x1d65bc[_0x7aef('0x3b')]);if(_0x1d65bc['name']){delete _0x1d65bc[_0x7aef('0x3c')];}_0x35369d[_0x7aef('0x2c')](_0x55bbe1)[_0x7aef('0x3d')](_0x1d65bc);};}exports['index']=function(_0x5d15c5,_0x8dd573){var _0x13c8e8={'include':[{'model':db[_0x7aef('0x3e')],'as':'mandatoryDispositionPause'}]},_0x107817={},_0x398517={'count':0x0,'rows':[]};var _0x4379ff=_[_0x7aef('0x3f')](db[_0x7aef('0x40')]['rawAttributes'],function(_0x56c0ea){return{'name':_0x56c0ea['fieldName'],'type':_0x56c0ea[_0x7aef('0x41')]['key']};});_0x107817['model']=_[_0x7aef('0x3f')](_0x4379ff,'name');_0x107817[_0x7aef('0x42')]=_['keys'](_0x5d15c5[_0x7aef('0x42')]);_0x107817[_0x7aef('0x43')]=_['intersection'](_0x107817[_0x7aef('0x44')],_0x107817[_0x7aef('0x42')]);_0x13c8e8['attributes']=_[_0x7aef('0x45')](_0x107817['model'],qs[_0x7aef('0x46')](_0x5d15c5[_0x7aef('0x42')][_0x7aef('0x46')]));_0x13c8e8[_0x7aef('0x47')]=_0x13c8e8[_0x7aef('0x47')][_0x7aef('0x48')]?_0x13c8e8[_0x7aef('0x47')]:_0x107817['model'];if(!_0x5d15c5[_0x7aef('0x42')]['hasOwnProperty']('nolimit')){_0x13c8e8[_0x7aef('0x31')]=qs[_0x7aef('0x31')](_0x5d15c5[_0x7aef('0x42')][_0x7aef('0x31')]);_0x13c8e8['offset']=qs[_0x7aef('0x2e')](_0x5d15c5[_0x7aef('0x42')][_0x7aef('0x2e')]);}_0x13c8e8['order']=qs[_0x7aef('0x49')](_0x5d15c5[_0x7aef('0x42')]['sort']);_0x13c8e8['where']=qs[_0x7aef('0x43')](_[_0x7aef('0x4a')](_0x5d15c5[_0x7aef('0x42')],_0x107817[_0x7aef('0x43')]),_0x4379ff);if(_0x5d15c5[_0x7aef('0x42')][_0x7aef('0x4b')]){_0x13c8e8[_0x7aef('0x4c')]=_[_0x7aef('0x4d')](_0x13c8e8[_0x7aef('0x4c')],{'$or':_['map'](_0x4379ff,function(_0x476f7e){if(_0x476f7e['type']!==_0x7aef('0x4e')){var _0x19ca76={};_0x19ca76[_0x476f7e[_0x7aef('0x3c')]]={'$like':'%'+_0x5d15c5[_0x7aef('0x42')][_0x7aef('0x4b')]+'%'};return _0x19ca76;}})});}_0x13c8e8=_[_0x7aef('0x4d')]({},_0x13c8e8,_0x5d15c5[_0x7aef('0x4f')]);var _0xa325d={'where':_0x13c8e8['where']};return db[_0x7aef('0x40')]['count'](_0xa325d)[_0x7aef('0x21')](function(_0x3575bd){_0x398517[_0x7aef('0x30')]=_0x3575bd;if(_0x5d15c5['query'][_0x7aef('0x50')]){_0x13c8e8[_0x7aef('0x51')]=[{'all':!![]}];}return db[_0x7aef('0x40')][_0x7aef('0x52')](_0x13c8e8);})['then'](function(_0x576621){_0x398517[_0x7aef('0x53')]=_0x576621;return _0x398517;})['then'](respondWithFilteredResult(_0x8dd573,_0x13c8e8))[_0x7aef('0x54')](handleError(_0x8dd573,null));};exports['show']=function(_0x366105,_0x29d8f4){var _0x5d453d={'raw':![],'where':{'id':_0x366105[_0x7aef('0x55')]['id']},'include':[{'model':db[_0x7aef('0x3e')],'as':'mandatoryDispositionPause'}]},_0xff1ff1={};_0xff1ff1[_0x7aef('0x44')]=_[_0x7aef('0x56')](db[_0x7aef('0x40')][_0x7aef('0x57')]);_0xff1ff1[_0x7aef('0x42')]=_[_0x7aef('0x56')](_0x366105[_0x7aef('0x42')]);_0xff1ff1[_0x7aef('0x43')]=_[_0x7aef('0x45')](_0xff1ff1[_0x7aef('0x44')],_0xff1ff1[_0x7aef('0x42')]);_0x5d453d['attributes']=_[_0x7aef('0x45')](_0xff1ff1[_0x7aef('0x44')],qs['fields'](_0x366105[_0x7aef('0x42')][_0x7aef('0x46')]));_0x5d453d['attributes']=_0x5d453d[_0x7aef('0x47')]['length']?_0x5d453d[_0x7aef('0x47')]:_0xff1ff1[_0x7aef('0x44')];if(_0x366105['query']['includeAll']){_0x5d453d[_0x7aef('0x51')]=[{'all':!![]}];}_0x5d453d=_['merge']({},_0x5d453d,_0x366105[_0x7aef('0x4f')]);return db[_0x7aef('0x40')][_0x7aef('0x58')](_0x5d453d)['then'](handleEntityNotFound(_0x29d8f4,null))[_0x7aef('0x21')](respondWithResult(_0x29d8f4,null))['catch'](handleError(_0x29d8f4,null));};exports[_0x7aef('0x59')]=function(_0xa70843,_0x540418){return db[_0x7aef('0x40')][_0x7aef('0x59')](_0xa70843[_0x7aef('0x5a')],{})[_0x7aef('0x21')](function(_0x2f6992){var _0x4bb436=_0xa70843['user'][_0x7aef('0x38')]({'plain':!![]});if(!_0x4bb436)throw new Error(_0x7aef('0x5b'));if(_0x4bb436[_0x7aef('0x5c')]===_0x7aef('0x5d')){var _0x3df548=_0x2f6992['get']({'plain':!![]});var _0x544556=_0x7aef('0x5e');return db[_0x7aef('0x5f')][_0x7aef('0x58')]({'where':{'name':_0x544556,'userProfileId':_0x4bb436['userProfileId']},'raw':!![]})[_0x7aef('0x21')](function(_0x1f0df5){if(_0x1f0df5&&_0x1f0df5[_0x7aef('0x60')]===0x0){return db[_0x7aef('0x39')][_0x7aef('0x59')]({'name':_0x3df548[_0x7aef('0x3c')],'resourceId':_0x3df548['id'],'type':_0x1f0df5[_0x7aef('0x3c')],'sectionId':_0x1f0df5['id']},{})[_0x7aef('0x21')](function(){return _0x2f6992;});}else{return _0x2f6992;}})[_0x7aef('0x54')](function(_0x46ed99){logger[_0x7aef('0x27')](_0x7aef('0x61'),_0x46ed99);throw _0x46ed99;});}return _0x2f6992;})[_0x7aef('0x21')](respondWithResult(_0x540418,0xc9))[_0x7aef('0x54')](handleError(_0x540418,null));};exports[_0x7aef('0x36')]=function(_0x24bed1,_0xbf343){if(_0x24bed1['body']['id']){delete _0x24bed1['body']['id'];}return db['WhatsappAccount'][_0x7aef('0x58')]({'where':{'id':_0x24bed1[_0x7aef('0x55')]['id']},'include':[{'model':db[_0x7aef('0x3e')],'as':_0x7aef('0x62')}]})[_0x7aef('0x21')](handleEntityNotFound(_0xbf343,null))[_0x7aef('0x21')](saveUpdates(_0x24bed1[_0x7aef('0x5a')],null))[_0x7aef('0x21')](respondWithResult(_0xbf343,null))[_0x7aef('0x54')](handleError(_0xbf343,null));};exports[_0x7aef('0x37')]=function(_0x100ad8,_0x44cf9b){return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x100ad8[_0x7aef('0x55')]['id']}})['then'](handleEntityNotFound(_0x44cf9b,null))['then'](removeEntity(_0x44cf9b,null))[_0x7aef('0x54')](handleError(_0x44cf9b,null));};exports[_0x7aef('0x63')]=function(_0x2083b5,_0x545493){return db[_0x7aef('0x40')][_0x7aef('0x63')]()['then'](respondWithResult(_0x545493,null))[_0x7aef('0x54')](handleError(_0x545493,null));};exports[_0x7aef('0x64')]=function(_0x4a6183,_0x2f012f,_0x404e2d){if(_0x4a6183[_0x7aef('0x5a')]['id']){delete _0x4a6183[_0x7aef('0x5a')]['id'];}return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x4a6183['params']['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x2f012f,null))[_0x7aef('0x21')](function(_0x41aec2){if(_0x41aec2){_0x4a6183['body'][_0x7aef('0x65')]=_0x41aec2['id'];return db[_0x7aef('0x66')][_0x7aef('0x59')](_0x4a6183[_0x7aef('0x5a')]);}})[_0x7aef('0x21')](respondWithResult(_0x2f012f,null))[_0x7aef('0x54')](handleError(_0x2f012f,null));};exports[_0x7aef('0x67')]=function(_0x3f3797,_0x34a956,_0x43bd7d){var _0x431af8={'raw':![],'where':{}};var _0x3ff9bb={};var _0x18102f={'count':0x0,'rows':[]};return db['WhatsappAccount']['findOne']({'where':{'id':_0x3f3797['params']['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x34a956,null))[_0x7aef('0x21')](function(_0x4c0215){if(_0x4c0215){_0x3ff9bb['model']=_[_0x7aef('0x56')](db[_0x7aef('0x66')]['rawAttributes']);_0x3ff9bb['query']=_[_0x7aef('0x56')](_0x3f3797[_0x7aef('0x42')]);_0x3ff9bb[_0x7aef('0x43')]=_['intersection'](_0x3ff9bb[_0x7aef('0x44')],_0x3ff9bb[_0x7aef('0x42')]);_0x431af8[_0x7aef('0x47')]=_['intersection'](_0x3ff9bb['model'],qs[_0x7aef('0x46')](_0x3f3797['query'][_0x7aef('0x46')]));_0x431af8[_0x7aef('0x47')]=_0x431af8[_0x7aef('0x47')][_0x7aef('0x48')]?_0x431af8[_0x7aef('0x47')]:_0x3ff9bb[_0x7aef('0x44')];if(!_0x3f3797[_0x7aef('0x42')]['hasOwnProperty']('nolimit')){_0x431af8[_0x7aef('0x31')]=qs[_0x7aef('0x31')](_0x3f3797[_0x7aef('0x42')][_0x7aef('0x31')]);_0x431af8['offset']=qs[_0x7aef('0x2e')](_0x3f3797['query'][_0x7aef('0x2e')]);}_0x431af8['order']=qs[_0x7aef('0x49')](_0x3f3797[_0x7aef('0x42')][_0x7aef('0x49')]);_0x431af8[_0x7aef('0x4c')]=qs['filters'](_['pick'](_0x3f3797['query'],_0x3ff9bb[_0x7aef('0x43')]));_0x431af8['where']['WhatsappAccountId']=_0x4c0215['id'];if(_0x3f3797[_0x7aef('0x42')][_0x7aef('0x4b')]){_0x431af8['where']=_[_0x7aef('0x4d')](_0x431af8[_0x7aef('0x4c')],{'$or':_['map'](_0x431af8[_0x7aef('0x47')],function(_0x4142e0){var _0x1aed70={};_0x1aed70[_0x4142e0]={'$like':'%'+_0x3f3797[_0x7aef('0x42')][_0x7aef('0x4b')]+'%'};return _0x1aed70;})});}_0x431af8=_[_0x7aef('0x4d')]({},_0x431af8,_0x3f3797[_0x7aef('0x4f')]);return db[_0x7aef('0x66')][_0x7aef('0x30')]({'where':_0x431af8[_0x7aef('0x4c')]})['then'](function(_0x5728b8){_0x18102f[_0x7aef('0x30')]=_0x5728b8;if(_0x3f3797[_0x7aef('0x42')]['includeAll']){_0x431af8[_0x7aef('0x51')]=[{'all':!![]}];}return db['Disposition'][_0x7aef('0x52')](_0x431af8);})[_0x7aef('0x21')](function(_0x5e44b6){_0x18102f[_0x7aef('0x53')]=_0x5e44b6;return _0x18102f;});}})[_0x7aef('0x21')](respondWithFilteredResult(_0x34a956,_0x431af8))[_0x7aef('0x54')](handleError(_0x34a956,null));};exports[_0x7aef('0x68')]=function(_0x5041b3,_0xda01c0,_0x2decfb){return db[_0x7aef('0x40')]['find']({'where':{'id':_0x5041b3[_0x7aef('0x55')]['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0xda01c0,null))[_0x7aef('0x21')](function(_0x558b04){if(_0x558b04){return _0x558b04[_0x7aef('0x68')](_0x5041b3[_0x7aef('0x42')][_0x7aef('0x69')]);}})[_0x7aef('0x21')](respondWithStatusCode(_0xda01c0,null))['catch'](handleError(_0xda01c0,null));};exports[_0x7aef('0x6a')]=function(_0x1231a0,_0x1f03cd,_0x395fb3){if(_0x1231a0[_0x7aef('0x5a')]['id']){delete _0x1231a0[_0x7aef('0x5a')]['id'];}return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x1231a0[_0x7aef('0x55')]['id']}})['then'](handleEntityNotFound(_0x1f03cd,null))[_0x7aef('0x21')](function(_0x4709ed){if(_0x4709ed){_0x1231a0[_0x7aef('0x5a')]['WhatsappAccountId']=_0x4709ed['id'];return db['CannedAnswer'][_0x7aef('0x59')](_0x1231a0[_0x7aef('0x5a')]);}})[_0x7aef('0x21')](respondWithResult(_0x1f03cd,null))['catch'](handleError(_0x1f03cd,null));};exports[_0x7aef('0x6b')]=function(_0x477ce4,_0x4b8700,_0x2e3ce8){var _0x58b2f3={'raw':![],'where':{}};var _0x594434={};var _0x5b24af={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x7aef('0x6c')]({'where':{'id':_0x477ce4['params']['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x4b8700,null))[_0x7aef('0x21')](function(_0x43d516){if(_0x43d516){_0x594434[_0x7aef('0x44')]=_[_0x7aef('0x56')](db[_0x7aef('0x6d')]['rawAttributes']);_0x594434[_0x7aef('0x42')]=_[_0x7aef('0x56')](_0x477ce4[_0x7aef('0x42')]);_0x594434['filters']=_[_0x7aef('0x45')](_0x594434[_0x7aef('0x44')],_0x594434[_0x7aef('0x42')]);_0x58b2f3[_0x7aef('0x47')]=_['intersection'](_0x594434[_0x7aef('0x44')],qs['fields'](_0x477ce4['query'][_0x7aef('0x46')]));_0x58b2f3[_0x7aef('0x47')]=_0x58b2f3[_0x7aef('0x47')][_0x7aef('0x48')]?_0x58b2f3['attributes']:_0x594434[_0x7aef('0x44')];if(!_0x477ce4[_0x7aef('0x42')][_0x7aef('0x6e')](_0x7aef('0x6f'))){_0x58b2f3[_0x7aef('0x31')]=qs[_0x7aef('0x31')](_0x477ce4[_0x7aef('0x42')][_0x7aef('0x31')]);_0x58b2f3[_0x7aef('0x2e')]=qs[_0x7aef('0x2e')](_0x477ce4['query'][_0x7aef('0x2e')]);}_0x58b2f3[_0x7aef('0x70')]=qs['sort'](_0x477ce4[_0x7aef('0x42')][_0x7aef('0x49')]);_0x58b2f3[_0x7aef('0x4c')]=qs[_0x7aef('0x43')](_[_0x7aef('0x4a')](_0x477ce4['query'],_0x594434[_0x7aef('0x43')]));_0x58b2f3['where']['WhatsappAccountId']=_0x43d516['id'];if(_0x477ce4[_0x7aef('0x42')][_0x7aef('0x4b')]){_0x58b2f3[_0x7aef('0x4c')]=_[_0x7aef('0x4d')](_0x58b2f3[_0x7aef('0x4c')],{'$or':_[_0x7aef('0x3f')](_0x58b2f3['attributes'],function(_0x490e3e){var _0x236f84={};_0x236f84[_0x490e3e]={'$like':'%'+_0x477ce4[_0x7aef('0x42')][_0x7aef('0x4b')]+'%'};return _0x236f84;})});}_0x58b2f3=_[_0x7aef('0x4d')]({},_0x58b2f3,_0x477ce4['options']);return db[_0x7aef('0x6d')][_0x7aef('0x30')]({'where':_0x58b2f3[_0x7aef('0x4c')]})[_0x7aef('0x21')](function(_0x328539){_0x5b24af[_0x7aef('0x30')]=_0x328539;if(_0x477ce4[_0x7aef('0x42')][_0x7aef('0x50')]){_0x58b2f3[_0x7aef('0x51')]=[{'all':!![]}];}return db['CannedAnswer'][_0x7aef('0x52')](_0x58b2f3);})['then'](function(_0x53ac20){_0x5b24af[_0x7aef('0x53')]=_0x53ac20;return _0x5b24af;});}})[_0x7aef('0x21')](respondWithFilteredResult(_0x4b8700,_0x58b2f3))[_0x7aef('0x54')](handleError(_0x4b8700,null));};exports[_0x7aef('0x71')]=function(_0x247556,_0x8848fb,_0x51e77b){return db[_0x7aef('0x40')]['find']({'where':{'id':_0x247556['params']['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x8848fb,null))['then'](function(_0x43bde5){if(_0x43bde5){return _0x43bde5[_0x7aef('0x71')](_0x247556['query'][_0x7aef('0x69')]);}})[_0x7aef('0x21')](respondWithStatusCode(_0x8848fb,null))[_0x7aef('0x54')](handleError(_0x8848fb,null));};exports['addAgents']=function(_0x5f02ac,_0x3e23e0,_0x80362b){return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x5f02ac[_0x7aef('0x55')]['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x3e23e0,null))['then'](function(_0x3ca390){if(_0x3ca390){return _0x3ca390['addAgents'](_0x5f02ac['body'][_0x7aef('0x69')],_[_0x7aef('0x72')](_0x5f02ac['body'],['ids','id'])||{})[_0x7aef('0x73')](function(_0x1dc973){for(var _0x4bba69=0x0;_0x4bba69<_0x5f02ac[_0x7aef('0x5a')][_0x7aef('0x69')][_0x7aef('0x48')];_0x4bba69+=0x1){socket[_0x7aef('0x74')]('userWhatsappAccount:save',{'UserId':Number(_0x5f02ac['body'][_0x7aef('0x69')][_0x4bba69]),'WhatsappAccountId':Number(_0x5f02ac['params']['id'])});}return _0x1dc973;});}})[_0x7aef('0x21')](respondWithResult(_0x3e23e0,null))[_0x7aef('0x54')](handleError(_0x3e23e0,null));};exports['removeAgents']=function(_0x5c780c,_0x4ba53d,_0x291a3d){return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x5c780c[_0x7aef('0x55')]['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x4ba53d,null))[_0x7aef('0x21')](function(_0x51f676){if(_0x51f676){return _0x51f676[_0x7aef('0x75')](_0x5c780c[_0x7aef('0x42')][_0x7aef('0x69')])[_0x7aef('0x21')](function(){if(_[_0x7aef('0x76')](_0x5c780c[_0x7aef('0x42')][_0x7aef('0x69')])){for(var _0x211d9a=0x0;_0x211d9a<_0x5c780c[_0x7aef('0x42')][_0x7aef('0x69')]['length'];_0x211d9a+=0x1){socket[_0x7aef('0x74')](_0x7aef('0x77'),{'UserId':Number(_0x5c780c[_0x7aef('0x42')][_0x7aef('0x69')][_0x211d9a]),'WhatsappAccountId':Number(_0x5c780c[_0x7aef('0x55')]['id'])});}}else{socket['emit'](_0x7aef('0x77'),{'UserId':Number(_0x5c780c[_0x7aef('0x42')][_0x7aef('0x69')]),'WhatsappAccountId':Number(_0x5c780c[_0x7aef('0x55')]['id'])});}});}})[_0x7aef('0x21')](respondWithStatusCode(_0x4ba53d,null))['catch'](handleError(_0x4ba53d,null));};exports['getAgents']=function(_0x3638e0,_0x3887f2,_0xe88575){var _0x4cfeb9={};var _0x525a85={};var _0x2f645f;var _0x24fe80;return db[_0x7aef('0x40')][_0x7aef('0x6c')]({'where':{'id':_0x3638e0['params']['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x3887f2,null))[_0x7aef('0x21')](function(_0x36e8ac){if(_0x36e8ac){_0x2f645f=_0x36e8ac;_0x525a85[_0x7aef('0x44')]=_[_0x7aef('0x56')](db[_0x7aef('0x78')]['rawAttributes']);_0x525a85[_0x7aef('0x42')]=_[_0x7aef('0x56')](_0x3638e0[_0x7aef('0x42')]);_0x525a85['filters']=_[_0x7aef('0x45')](_0x525a85['model'],_0x525a85['query']);_0x4cfeb9[_0x7aef('0x47')]=_[_0x7aef('0x45')](_0x525a85[_0x7aef('0x44')],qs[_0x7aef('0x46')](_0x3638e0[_0x7aef('0x42')][_0x7aef('0x46')]));_0x4cfeb9[_0x7aef('0x47')]=_0x4cfeb9['attributes'][_0x7aef('0x48')]?_0x4cfeb9[_0x7aef('0x47')]:_0x525a85[_0x7aef('0x44')];_0x4cfeb9[_0x7aef('0x70')]=qs[_0x7aef('0x49')](_0x3638e0[_0x7aef('0x42')]['sort']);_0x4cfeb9['where']=qs['filters'](_[_0x7aef('0x4a')](_0x3638e0[_0x7aef('0x42')],_0x525a85[_0x7aef('0x43')]));if(_0x3638e0['query'][_0x7aef('0x4b')]){_0x4cfeb9[_0x7aef('0x4c')]=_[_0x7aef('0x4d')](_0x4cfeb9[_0x7aef('0x4c')],{'$or':_[_0x7aef('0x3f')](_0x4cfeb9[_0x7aef('0x47')],function(_0x19dad3){var _0x71fe4={};_0x71fe4[_0x19dad3]={'$like':'%'+_0x3638e0[_0x7aef('0x42')][_0x7aef('0x4b')]+'%'};return _0x71fe4;})});}_0x4cfeb9=_[_0x7aef('0x4d')]({},_0x4cfeb9,_0x3638e0['options']);return _0x2f645f['getAgents'](_0x4cfeb9);}})['then'](function(_0x4a2f04){if(_0x4a2f04){_0x24fe80=_0x4a2f04[_0x7aef('0x48')];if(!_0x3638e0['query'][_0x7aef('0x6e')](_0x7aef('0x6f'))){_0x4cfeb9[_0x7aef('0x31')]=qs[_0x7aef('0x31')](_0x3638e0[_0x7aef('0x42')][_0x7aef('0x31')]);_0x4cfeb9[_0x7aef('0x2e')]=qs[_0x7aef('0x2e')](_0x3638e0[_0x7aef('0x42')][_0x7aef('0x2e')]);}return _0x2f645f[_0x7aef('0x79')](_0x4cfeb9);}})[_0x7aef('0x21')](function(_0x19692c){if(_0x19692c){return _0x19692c?{'count':_0x24fe80,'rows':_0x19692c}:null;}})[_0x7aef('0x21')](respondWithResult(_0x3887f2,null))['catch'](handleError(_0x3887f2,null));};exports[_0x7aef('0x7a')]=function(_0x5182dc,_0x1eaf86,_0x822b9e){return db[_0x7aef('0x40')][_0x7aef('0x6c')]({'where':{'id':_0x5182dc[_0x7aef('0x55')]['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x1eaf86,null))[_0x7aef('0x21')](function(_0x55b6c){if(_0x55b6c){return db['sequelize'][_0x7aef('0x7b')](function(_0x47ae10){return db['WhatsappApplication']['destroy']({'where':{'WhatsappAccountId':_0x5182dc['params']['id']},'transaction':_0x47ae10})[_0x7aef('0x21')](function(_0xdcd59f){var _0x362a79=_[_0x7aef('0x3f')](_0x5182dc[_0x7aef('0x5a')],function(_0x5af715){_0x5af715[_0x7aef('0x65')]=_0x5182dc['params']['id'];return _0x5af715;});return db[_0x7aef('0x7c')]['bulkCreate'](_0x362a79,{'transaction':_0x47ae10});});})[_0x7aef('0x21')](function(){return db[_0x7aef('0x7c')][_0x7aef('0x7d')]({'where':{'WhatsappAccountId':_0x5182dc[_0x7aef('0x55')]['id']},'order':'priority'});});}})['then'](respondWithResult(_0x1eaf86,null))[_0x7aef('0x54')](handleError(_0x1eaf86,null));};exports[_0x7aef('0x7e')]=function(_0x1c93ef,_0x667dc6,_0x599a86){var _0x45f378={};var _0x31a627={};var _0x228820;var _0x39ce1f;return db[_0x7aef('0x40')]['findOne']({'where':{'id':_0x1c93ef['params']['id']}})['then'](handleEntityNotFound(_0x667dc6,null))[_0x7aef('0x21')](function(_0x4c8d3e){if(_0x4c8d3e){_0x228820=_0x4c8d3e;_0x31a627[_0x7aef('0x44')]=_[_0x7aef('0x56')](db['WhatsappApplication'][_0x7aef('0x57')]);_0x31a627[_0x7aef('0x42')]=_['keys'](_0x1c93ef[_0x7aef('0x42')]);_0x31a627[_0x7aef('0x43')]=_[_0x7aef('0x45')](_0x31a627[_0x7aef('0x44')],_0x31a627[_0x7aef('0x42')]);_0x45f378[_0x7aef('0x47')]=_[_0x7aef('0x45')](_0x31a627[_0x7aef('0x44')],qs['fields'](_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x46')]));_0x45f378['attributes']=_0x45f378[_0x7aef('0x47')][_0x7aef('0x48')]?_0x45f378['attributes']:_0x31a627[_0x7aef('0x44')];_0x45f378[_0x7aef('0x70')]=qs[_0x7aef('0x49')](_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x49')]);_0x45f378[_0x7aef('0x4c')]=qs[_0x7aef('0x43')](_['pick'](_0x1c93ef['query'],_0x31a627[_0x7aef('0x43')]));if(_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x4b')]){_0x45f378[_0x7aef('0x4c')]=_[_0x7aef('0x4d')](_0x45f378[_0x7aef('0x4c')],{'$or':_[_0x7aef('0x3f')](_0x45f378[_0x7aef('0x47')],function(_0x281849){var _0x2a525f={};_0x2a525f[_0x281849]={'$like':'%'+_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x4b')]+'%'};return _0x2a525f;})});}_0x45f378=_[_0x7aef('0x4d')]({},_0x45f378,_0x1c93ef[_0x7aef('0x4f')]);return _0x228820[_0x7aef('0x7e')](_0x45f378);}})['then'](function(_0x11812a){if(_0x11812a){_0x39ce1f=_0x11812a[_0x7aef('0x48')];if(!_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x6e')]('nolimit')){_0x45f378[_0x7aef('0x31')]=qs['limit'](_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x31')]);_0x45f378[_0x7aef('0x2e')]=qs[_0x7aef('0x2e')](_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x2e')]);}return _0x228820['getApplications'](_0x45f378);}})['then'](function(_0x1b9b78){if(_0x1b9b78){return _0x1b9b78?{'count':_0x39ce1f,'rows':_0x1b9b78}:null;}})[_0x7aef('0x21')](respondWithResult(_0x667dc6,null))['catch'](handleError(_0x667dc6,null));};exports['notify']=function(_0x569cf5,_0x4f7df0,_0x3e1ca8){var _0x31359b={'channel':_0x7aef('0x7f')};var _0x571fc0=[];var _0x57a74b=[];var _0xe1f128={};return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x569cf5[_0x7aef('0x55')]['id']},'include':[{'model':db[_0x7aef('0x7c')],'as':_0x7aef('0x80')}]})[_0x7aef('0x21')](handleEntityNotFound(_0x4f7df0,null))['then'](function(_0x3bd5c9){_0x31359b['account']=_0x3bd5c9;_0x31359b[_0x7aef('0x81')]=_[_0x7aef('0x82')](_0x3bd5c9['Applications'],[_0x7aef('0x83')],[_0x7aef('0x84')]);if(_0x31359b[_0x7aef('0x85')][_0x7aef('0x80')]){delete _0x31359b[_0x7aef('0x85')][_0x7aef('0x80')];}return db['CmContact'][_0x7aef('0x63')]();})[_0x7aef('0x21')](function(_0x3dd6ee){if(!_0x3dd6ee){throw new db[(_0x7aef('0x86'))][(_0x7aef('0x87'))]('no\x20available\x20attributes');}_0x571fc0=_[_0x7aef('0x88')](_[_0x7aef('0x56')](_0x3dd6ee),[_0x7aef('0x89'),_0x7aef('0x8a')]);_0x57a74b=_['difference'](_['keys'](_0x3dd6ee),[_0x7aef('0x89'),'updatedAt',_0x7aef('0x8b'),'ListId']);_0x31359b[_0x7aef('0x5a')]={'mapKey':_0x7aef('0x8c')};if(_0x31359b[_0x7aef('0x85')]['type']&&_0x31359b[_0x7aef('0x85')]['type']===_0x7aef('0x8d')){_0x31359b[_0x7aef('0x5a')][_0x7aef('0x8e')]=_0x569cf5[_0x7aef('0x5a')][_0x7aef('0x8f')][_0x7aef('0x90')]('whatsapp:','');_0x31359b[_0x7aef('0x5a')][_0x7aef('0x5a')]=_0x569cf5[_0x7aef('0x5a')][_0x7aef('0x91')];_0x31359b['body'][_0x7aef('0x92')]=_0x569cf5[_0x7aef('0x5a')][_0x7aef('0x93')];}if(_0x31359b[_0x7aef('0x5a')]['id']){delete _0x31359b[_0x7aef('0x5a')]['id'];}if(_['isNil'](_0x31359b['body'][_0x7aef('0x8e')])){throw new db[(_0x7aef('0x86'))][(_0x7aef('0x87'))](_0x7aef('0x94'));}if(_[_0x7aef('0x95')](_0x31359b[_0x7aef('0x5a')][_0x7aef('0x5a')])||_0x31359b[_0x7aef('0x5a')][_0x7aef('0x5a')]===''){throw new db[(_0x7aef('0x86'))][(_0x7aef('0x87'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x7aef('0x95')](_0x31359b[_0x7aef('0x5a')][_0x7aef('0x96')])){throw new db['Sequelize']['ValidationError'](_0x7aef('0x97')+_0x57a74b);}if(!_[_0x7aef('0x98')](_0x57a74b,_0x31359b[_0x7aef('0x5a')]['mapKey'])){throw new db[(_0x7aef('0x86'))][(_0x7aef('0x87'))](_0x7aef('0x99')+_0x57a74b);}_0xe1f128[_0x31359b['body'][_0x7aef('0x96')]]=_0x31359b['body'][_0x7aef('0x8e')];return db['CmList'][_0x7aef('0x58')]({'where':{'id':_0x31359b[_0x7aef('0x85')][_0x7aef('0x9a')]},'include':[{'model':db[_0x7aef('0x9b')],'as':_0x7aef('0x9c'),'where':_0xe1f128,'limit':0x1,'order':[[_0x7aef('0x8a'),_0x7aef('0x9d')]]}]});})['then'](handleEntityNotFound(_0x4f7df0,null))[_0x7aef('0x21')](function(_0x526632){if(_0x526632){_0x31359b[_0x7aef('0x9e')]=_[_0x7aef('0x72')](_0x526632,[_0x7aef('0x9c')]);if(_0x526632[_0x7aef('0x9c')][_0x7aef('0x48')]){return _0x526632[_0x7aef('0x9c')][0x0];}var _0x2470e7=_[_0x7aef('0x1c')](_0x31359b['body'],{'firstName':_0x31359b[_0x7aef('0x5a')]['from'],'ListId':_0x526632['id']});_0x2470e7[_0x31359b[_0x7aef('0x5a')][_0x7aef('0x96')]]=_0x31359b[_0x7aef('0x5a')]['from'];return db[_0x7aef('0x9b')][_0x7aef('0x59')](_0x2470e7,{'fields':_0x571fc0,'raw':!![]});}})['then'](handleEntityNotFound(_0x4f7df0,null))[_0x7aef('0x21')](function(_0x1c37e5){if(_0x1c37e5){_0x31359b[_0x7aef('0x9f')]=_0x1c37e5;var _0x8285c3={'ContactId':_0x1c37e5['id'],'phone':_0x31359b[_0x7aef('0x5a')][_0x7aef('0x8e')],'WhatsappAccountId':_0x569cf5[_0x7aef('0x55')]['id']};var _0x20fcb0={'ContactId':_0x1c37e5['id'],'WhatsappAccountId':_0x569cf5[_0x7aef('0x55')]['id'],'closed':![]};return db[_0x7aef('0xa0')]['find']({'where':_0x20fcb0})[_0x7aef('0x21')](function(_0x25ee86){if(_0x25ee86){return[_0x25ee86,![]];}return db[_0x7aef('0xa0')][_0x7aef('0x59')](_0x8285c3)['then'](function(_0x47ee2e){return[_0x47ee2e,!![]];});});}})['spread'](function(_0x572f12,_0x1ed128){_0x31359b['interaction']=_0x572f12[_0x7aef('0x38')]({'plain':!![]});_0x31359b[_0x7aef('0xa1')][_0x7aef('0xa2')]=![];if(_0x1ed128){if(_0x31359b[_0x7aef('0x85')][_0x7aef('0xa3')]){_0x31359b[_0x7aef('0x81')]['push']({'id':0x0,'priority':_0x31359b[_0x7aef('0x81')][_0x7aef('0x48')]+0x1,'app':_0x7aef('0xa4'),'appdata':_0x7aef('0xa5'),'interval':_0x7aef('0xa6')});}_0x31359b[_0x7aef('0xa1')][_0x7aef('0xa2')]=!![];}return db[_0x7aef('0xa7')][_0x7aef('0x59')]({'phone':_0x31359b[_0x7aef('0x5a')]['from'],'messageId':_0x31359b['body'][_0x7aef('0x92')],'body':_0x31359b['body'][_0x7aef('0x5a')],'WhatsappAccountId':_0x569cf5[_0x7aef('0x55')]['id'],'WhatsappInteractionId':_0x572f12['id'],'direction':'in','ContactId':_0x572f12['ContactId'],'AttachmentId':_0x31359b[_0x7aef('0x5a')][_0x7aef('0xa8')]});})[_0x7aef('0x21')](function(_0x3a09da){_0x31359b[_0x7aef('0x2a')]=_0x3a09da;if(_0x31359b['interaction'][_0x7aef('0xa9')]){return db['User'][_0x7aef('0x58')]({'attributes':['id',_0x7aef('0x3c')],'where':{'id':_0x31359b[_0x7aef('0xa1')][_0x7aef('0xa9')]}})[_0x7aef('0x21')](function(_0x107cfb){if(_0x107cfb){_0x31359b[_0x7aef('0x81')][_0x7aef('0xaa')]({'id':0x0,'priority':0x0,'app':_0x7aef('0xab'),'appdata':_0x107cfb[_0x7aef('0x3c')]+','+(_0x31359b['account']['waitForTheAssignedAgent']||0xa),'interval':_0x7aef('0xa6')});}return respondWithRpcPromise('Start',_0x7aef('0xac'),_0x31359b);});}return respondWithRpcPromise('Start',_0x7aef('0xac'),_0x31359b);})[_0x7aef('0x21')](function(_0x4d3ebf){if(_0x4d3ebf){var _0x448d92=0xc8;var _0x4d2234=_0x7aef('0xad');logger['info'](_0x7aef('0x24'),_0x4d2234,_0x448d92,_0x7aef('0xae'));logger[_0x7aef('0x23')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x4d2234,_0x448d92,_0x7aef('0xae'),JSON[_0x7aef('0x26')](_0x4d3ebf));if(_0x31359b[_0x7aef('0x85')]['type']===_0x7aef('0x8d')){return _0x4f7df0['status'](_0x448d92)[_0x7aef('0x32')]('Content-Type',_0x7aef('0xaf'))[_0x7aef('0x3d')](_0x7aef('0xb0'));}else{return _0x4f7df0[_0x7aef('0x2c')](_0x448d92)[_0x7aef('0x34')](_0x4d3ebf);}}})[_0x7aef('0x54')](handleError(_0x4f7df0,null));};exports[_0x7aef('0x3d')]=function(_0x31ea20,_0x1a6dca,_0x2e6cce){var _0x2bb9f7,_0x1c6521,_0x3b79e7;if(_[_0x7aef('0x95')](_0x31ea20[_0x7aef('0x5a')][_0x7aef('0x5a')])||_0x31ea20['body'][_0x7aef('0x5a')]===''){throw new db[(_0x7aef('0x86'))][(_0x7aef('0x87'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x7aef('0x95')](_0x31ea20[_0x7aef('0x5a')]['to'])){throw new db[(_0x7aef('0x86'))]['ValidationError']('to\x20is\x20mandatory');}_0x2bb9f7=_0x31ea20[_0x7aef('0x5a')]['to'];return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x31ea20[_0x7aef('0x55')]['id']},'include':[{'model':db[_0x7aef('0xb1')],'as':_0x7aef('0xb2'),'include':[{'model':db[_0x7aef('0x9b')],'as':_0x7aef('0x9c'),'where':{'mobile':_0x2bb9f7},'limit':0x1,'order':[[_0x7aef('0x8a'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x1a6dca,null))['then'](function(_0x48f719){if(_0x48f719&&_0x48f719[_0x7aef('0xb2')]){_0x1c6521=_0x48f719[_0x7aef('0x38')]({'plain':!![]});if(_0x1c6521['List']&&_0x1c6521['List'][_0x7aef('0x9c')][_0x7aef('0x48')]){return _0x1c6521[_0x7aef('0xb2')][_0x7aef('0x9c')][0x0];}return db[_0x7aef('0x9b')][_0x7aef('0x59')](_[_0x7aef('0x1c')](_0x31ea20[_0x7aef('0x5a')],{'firstName':_0x2bb9f7,'mobile':_0x2bb9f7,'phone':_0x2bb9f7,'ListId':_0x1c6521[_0x7aef('0x9a')]}));}})[_0x7aef('0x21')](handleEntityNotFound(_0x1a6dca,null))[_0x7aef('0x21')](function(_0x403afe){if(_0x403afe){_0x3b79e7=_0x403afe;return db['WhatsappInteraction'][_0x7aef('0x58')]({'where':{'ContactId':_0x3b79e7['id'],'closed':![],'WhatsappAccountId':_0x1c6521['id']}})['then'](function(_0x355026){if(_0x355026){return[_0x355026,![]];}return db[_0x7aef('0xa0')][_0x7aef('0x59')]({'UserId':_0x31ea20[_0x7aef('0x5d')]['id'],'ContactId':_0x3b79e7['id'],'WhatsappAccountId':_0x1c6521['id'],'phone':_0x2bb9f7,'firstMsgDirection':_0x7aef('0xb3'),'Messages':[_['merge'](_0x31ea20['body'],{'read':![],'body':_0x31ea20[_0x7aef('0x5a')][_0x7aef('0x5a')],'phone':_0x2bb9f7,'WhatsappAccountId':_0x1c6521['id'],'UserId':_0x31ea20[_0x7aef('0x5d')]['id'],'ContactId':_0x3b79e7['id']})]},{'include':[{'model':db[_0x7aef('0xa7')],'as':_0x7aef('0xb4')}]})[_0x7aef('0x21')](function(_0x242ebf){return[_0x242ebf,!![]];});});}})[_0x7aef('0x73')](function(_0x1730cb,_0x32b30b){if(_0x32b30b){return _0x1730cb;}return db[_0x7aef('0xa7')][_0x7aef('0x59')](_['merge'](_0x31ea20[_0x7aef('0x5a')],{'read':![],'body':_0x31ea20[_0x7aef('0x5a')][_0x7aef('0x5a')],'phone':_0x2bb9f7,'WhatsappAccountId':_0x1c6521['id'],'WhatsappInteractionId':_0x1730cb['id'],'UserId':_0x31ea20[_0x7aef('0x5d')]['id'],'ContactId':_0x3b79e7['id']}))[_0x7aef('0x21')](function(_0x4a065a){_0x1730cb['dataValues'][_0x7aef('0xb4')]=[];_0x1730cb[_0x7aef('0xb5')][_0x7aef('0xb4')][_0x7aef('0xb6')](_0x4a065a[_0x7aef('0xb5')]);return _0x1730cb;});})[_0x7aef('0x21')](respondWithResult(_0x1a6dca,null))[_0x7aef('0x54')](handleError(_0x1a6dca,null));};
\ No newline at end of file
+var _0x2ab7=['stack','name','send','index','Pause','mandatoryDispositionPause','rawAttributes','type','key','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','WhatsappAccount','count','include','findAll','rows','params','includeAll','find','create','user','role','get','userProfileId','autoAssociation','body','describe','getDispositions','findOne','Disposition','WhatsappAccountId','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','userWhatsappAccount:remove','getAgents','User','sequelize','transaction','WhatsappApplication','bulkCreate','findAndCountAll','getApplications','notify','whatsapp','account','applications','priority','asc','Applications','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','mobile','twilio','From','replace','whatsapp:','Body','messageId','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','from','CmList','ListId','updatedAt','DESC','list','Contacts','WhatsappInteraction','interaction','autoclose','push','close','unmanaged','*,*,*,*','created','WhatsappMessage','ContactId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','out','dataValues','Messages','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','http','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','limit','undefined','offset','set','Content-Range','json','reject','save','update','destroy','WhatsappAccounts','UserProfileResource'];(function(_0x499ed3,_0x43509c){var _0x1349c2=function(_0x2ad265){while(--_0x2ad265){_0x499ed3['push'](_0x499ed3['shift']());}};_0x1349c2(++_0x43509c);}(_0x2ab7,0x7d));var _0x72ab=function(_0x343ba9,_0x864b3){_0x343ba9=_0x343ba9-0x0;var _0x303eff=_0x2ab7[_0x343ba9];return _0x303eff;};'use strict';var emlformat=require(_0x72ab('0x0'));var rimraf=require(_0x72ab('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x72ab('0x2'));var rp=require('request-promise');var moment=require(_0x72ab('0x3'));var BPromise=require(_0x72ab('0x4'));var Mustache=require(_0x72ab('0x5'));var util=require('util');var path=require(_0x72ab('0x6'));var sox=require(_0x72ab('0x7'));var csv=require(_0x72ab('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x72ab('0x9'));var _=require(_0x72ab('0xa'));var squel=require(_0x72ab('0xb'));var crypto=require(_0x72ab('0xc'));var jsforce=require(_0x72ab('0xd'));var deskjs=require(_0x72ab('0xe'));var toCsv=require(_0x72ab('0x8'));var querystring=require(_0x72ab('0xf'));var Papa=require(_0x72ab('0x10'));var Redis=require('ioredis');var authService=require(_0x72ab('0x11'));var qs=require(_0x72ab('0x12'));var as=require(_0x72ab('0x13'));var hardwareService=require(_0x72ab('0x14'));var logger=require(_0x72ab('0x15'))(_0x72ab('0x16'));var utils=require(_0x72ab('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x72ab('0x18'));var db=require(_0x72ab('0x19'))['db'];config[_0x72ab('0x1a')]=_[_0x72ab('0x1b')](config[_0x72ab('0x1a')],{'host':_0x72ab('0x1c'),'port':0x18eb});var socket=require(_0x72ab('0x1d'))(new Redis(config[_0x72ab('0x1a')]));require(_0x72ab('0x1e'))[_0x72ab('0x1f')](socket);var jayson=require(_0x72ab('0x20'));var client=jayson['client'][_0x72ab('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x5b14e9,_0x387298,_0x2cccbb,_0x354c29){return new BPromise(function(_0x4285ed,_0x82356e){var _0x42c4ca=_0x354c29||client;return _0x42c4ca['request'](_0x5b14e9,_0x2cccbb)[_0x72ab('0x22')](function(_0x5b4290){logger[_0x72ab('0x23')](_0x72ab('0x24'),_0x387298,_0x72ab('0x25'));logger['debug'](_0x72ab('0x26'),_0x387298,_0x72ab('0x25'),JSON[_0x72ab('0x27')](_0x5b4290));if(_0x5b4290['error']){if(_0x5b4290['error']['code']===0x1f4){logger['error'](_0x72ab('0x24'),_0x387298,_0x5b4290[_0x72ab('0x28')][_0x72ab('0x29')]);return _0x82356e(_0x5b4290['error'][_0x72ab('0x29')]);}logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x387298,_0x5b4290['error']['message']);return _0x4285ed(_0x5b4290[_0x72ab('0x28')]['message']);}else{logger[_0x72ab('0x23')](_0x72ab('0x24'),_0x387298,_0x72ab('0x25'));_0x4285ed(_0x5b4290[_0x72ab('0x2a')][_0x72ab('0x29')]);}})[_0x72ab('0x2b')](function(_0x2d7b13){logger[_0x72ab('0x28')](_0x72ab('0x24'),_0x387298,_0x2d7b13);_0x82356e(_0x2d7b13);});});}function respondWithStatusCode(_0x4820b4,_0x3e4271){_0x3e4271=_0x3e4271||0xcc;return function(_0x103d2f){if(_0x103d2f){return _0x4820b4[_0x72ab('0x2c')](_0x3e4271);}return _0x4820b4[_0x72ab('0x2d')](_0x3e4271)[_0x72ab('0x2e')]();};}function respondWithResult(_0x295d81,_0x5934c1){_0x5934c1=_0x5934c1||0xc8;return function(_0x4c7a66){if(_0x4c7a66){return _0x295d81[_0x72ab('0x2d')](_0x5934c1)['json'](_0x4c7a66);}};}function respondWithFilteredResult(_0x449478,_0x2e6c61){return function(_0xf666f0){if(_0xf666f0){var _0x72eba1=typeof _0x2e6c61['offset']==='undefined'&&typeof _0x2e6c61[_0x72ab('0x2f')]===_0x72ab('0x30');var _0x4c1356=_0xf666f0['count'];var _0x4379d7=_0x72eba1?0x0:_0x2e6c61[_0x72ab('0x31')];var _0x40822e=_0x72eba1?_0xf666f0['count']:_0x2e6c61[_0x72ab('0x31')]+_0x2e6c61[_0x72ab('0x2f')];var _0x4849cc;if(_0x40822e>=_0x4c1356){_0x40822e=_0x4c1356;_0x4849cc=0xc8;}else{_0x4849cc=0xce;}_0x449478[_0x72ab('0x2d')](_0x4849cc);return _0x449478[_0x72ab('0x32')](_0x72ab('0x33'),_0x4379d7+'-'+_0x40822e+'/'+_0x4c1356)[_0x72ab('0x34')](_0xf666f0);}return null;};}function patchUpdates(_0x56b5f8){return function(_0x5a22a6){try{jsonpatch['apply'](_0x5a22a6,_0x56b5f8,!![]);}catch(_0x273433){return BPromise[_0x72ab('0x35')](_0x273433);}return _0x5a22a6[_0x72ab('0x36')]();};}function saveUpdates(_0x51139a,_0x54ddb5){return function(_0x397410){if(_0x397410){return _0x397410[_0x72ab('0x37')](_0x51139a)['then'](function(_0x51cbb6){return _0x51cbb6;});}return null;};}function removeEntity(_0x1a7f3a,_0x183b2e){return function(_0xda597d){if(_0xda597d){return _0xda597d[_0x72ab('0x38')]()[_0x72ab('0x22')](function(){var _0x2e9407=_0xda597d['get']({'plain':!![]});var _0x1cd636=_0x72ab('0x39');return db[_0x72ab('0x3a')][_0x72ab('0x38')]({'where':{'type':_0x1cd636,'resourceId':_0x2e9407['id']}})[_0x72ab('0x22')](function(){return _0xda597d;});})[_0x72ab('0x22')](function(){_0x1a7f3a[_0x72ab('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x538de8,_0x19ebae){return function(_0x4063e6){if(!_0x4063e6){_0x538de8[_0x72ab('0x2c')](0x194);}return _0x4063e6;};}function handleError(_0x451834,_0x45cfea){_0x45cfea=_0x45cfea||0x1f4;return function(_0x4bb2b3){logger['error'](_0x4bb2b3[_0x72ab('0x3b')]);if(_0x4bb2b3[_0x72ab('0x3c')]){delete _0x4bb2b3[_0x72ab('0x3c')];}_0x451834['status'](_0x45cfea)[_0x72ab('0x3d')](_0x4bb2b3);};}exports[_0x72ab('0x3e')]=function(_0x13b8cc,_0x11fa4c){var _0x565f7c={'include':[{'model':db[_0x72ab('0x3f')],'as':_0x72ab('0x40')}]},_0x3259b1={},_0x1e1a98={'count':0x0,'rows':[]};var _0x44a33a=_['map'](db['WhatsappAccount'][_0x72ab('0x41')],function(_0x52191a){return{'name':_0x52191a['fieldName'],'type':_0x52191a[_0x72ab('0x42')][_0x72ab('0x43')]};});_0x3259b1[_0x72ab('0x44')]=_[_0x72ab('0x45')](_0x44a33a,'name');_0x3259b1['query']=_[_0x72ab('0x46')](_0x13b8cc[_0x72ab('0x47')]);_0x3259b1[_0x72ab('0x48')]=_[_0x72ab('0x49')](_0x3259b1[_0x72ab('0x44')],_0x3259b1['query']);_0x565f7c['attributes']=_['intersection'](_0x3259b1['model'],qs[_0x72ab('0x4a')](_0x13b8cc['query'][_0x72ab('0x4a')]));_0x565f7c[_0x72ab('0x4b')]=_0x565f7c[_0x72ab('0x4b')][_0x72ab('0x4c')]?_0x565f7c[_0x72ab('0x4b')]:_0x3259b1['model'];if(!_0x13b8cc[_0x72ab('0x47')][_0x72ab('0x4d')](_0x72ab('0x4e'))){_0x565f7c[_0x72ab('0x2f')]=qs[_0x72ab('0x2f')](_0x13b8cc[_0x72ab('0x47')][_0x72ab('0x2f')]);_0x565f7c[_0x72ab('0x31')]=qs[_0x72ab('0x31')](_0x13b8cc[_0x72ab('0x47')][_0x72ab('0x31')]);}_0x565f7c[_0x72ab('0x4f')]=qs[_0x72ab('0x50')](_0x13b8cc[_0x72ab('0x47')][_0x72ab('0x50')]);_0x565f7c[_0x72ab('0x51')]=qs[_0x72ab('0x48')](_[_0x72ab('0x52')](_0x13b8cc[_0x72ab('0x47')],_0x3259b1['filters']),_0x44a33a);if(_0x13b8cc['query']['filter']){_0x565f7c['where']=_[_0x72ab('0x53')](_0x565f7c[_0x72ab('0x51')],{'$or':_[_0x72ab('0x45')](_0x44a33a,function(_0x5db14a){if(_0x5db14a[_0x72ab('0x42')]!==_0x72ab('0x54')){var _0x2c4459={};_0x2c4459[_0x5db14a['name']]={'$like':'%'+_0x13b8cc['query'][_0x72ab('0x55')]+'%'};return _0x2c4459;}})});}_0x565f7c=_[_0x72ab('0x53')]({},_0x565f7c,_0x13b8cc[_0x72ab('0x56')]);var _0xb65340={'where':_0x565f7c['where']};return db[_0x72ab('0x57')][_0x72ab('0x58')](_0xb65340)[_0x72ab('0x22')](function(_0x1bd6d3){_0x1e1a98[_0x72ab('0x58')]=_0x1bd6d3;if(_0x13b8cc[_0x72ab('0x47')]['includeAll']){_0x565f7c[_0x72ab('0x59')]=[{'all':!![]}];}return db[_0x72ab('0x57')][_0x72ab('0x5a')](_0x565f7c);})[_0x72ab('0x22')](function(_0x250637){_0x1e1a98[_0x72ab('0x5b')]=_0x250637;return _0x1e1a98;})[_0x72ab('0x22')](respondWithFilteredResult(_0x11fa4c,_0x565f7c))[_0x72ab('0x2b')](handleError(_0x11fa4c,null));};exports['show']=function(_0x31a600,_0x4f6209){var _0xd7e22e={'raw':![],'where':{'id':_0x31a600[_0x72ab('0x5c')]['id']},'include':[{'model':db[_0x72ab('0x3f')],'as':'mandatoryDispositionPause'}]},_0x41d7ba={};_0x41d7ba[_0x72ab('0x44')]=_[_0x72ab('0x46')](db[_0x72ab('0x57')]['rawAttributes']);_0x41d7ba['query']=_[_0x72ab('0x46')](_0x31a600[_0x72ab('0x47')]);_0x41d7ba['filters']=_['intersection'](_0x41d7ba[_0x72ab('0x44')],_0x41d7ba['query']);_0xd7e22e[_0x72ab('0x4b')]=_['intersection'](_0x41d7ba[_0x72ab('0x44')],qs['fields'](_0x31a600[_0x72ab('0x47')][_0x72ab('0x4a')]));_0xd7e22e[_0x72ab('0x4b')]=_0xd7e22e['attributes'][_0x72ab('0x4c')]?_0xd7e22e['attributes']:_0x41d7ba[_0x72ab('0x44')];if(_0x31a600[_0x72ab('0x47')][_0x72ab('0x5d')]){_0xd7e22e['include']=[{'all':!![]}];}_0xd7e22e=_[_0x72ab('0x53')]({},_0xd7e22e,_0x31a600['options']);return db[_0x72ab('0x57')][_0x72ab('0x5e')](_0xd7e22e)[_0x72ab('0x22')](handleEntityNotFound(_0x4f6209,null))[_0x72ab('0x22')](respondWithResult(_0x4f6209,null))[_0x72ab('0x2b')](handleError(_0x4f6209,null));};exports[_0x72ab('0x5f')]=function(_0x3d0b57,_0x4b7c83){return db[_0x72ab('0x57')][_0x72ab('0x5f')](_0x3d0b57['body'],{})[_0x72ab('0x22')](function(_0x6f3386){var _0x2612c0=_0x3d0b57[_0x72ab('0x60')]['get']({'plain':!![]});if(!_0x2612c0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2612c0[_0x72ab('0x61')]===_0x72ab('0x60')){var _0x3ffb4a=_0x6f3386[_0x72ab('0x62')]({'plain':!![]});var _0x4526ee='WhatsappAccounts';return db['UserProfileSection']['find']({'where':{'name':_0x4526ee,'userProfileId':_0x2612c0[_0x72ab('0x63')]},'raw':!![]})[_0x72ab('0x22')](function(_0x3ae797){if(_0x3ae797&&_0x3ae797[_0x72ab('0x64')]===0x0){return db[_0x72ab('0x3a')]['create']({'name':_0x3ffb4a[_0x72ab('0x3c')],'resourceId':_0x3ffb4a['id'],'type':_0x3ae797[_0x72ab('0x3c')],'sectionId':_0x3ae797['id']},{})[_0x72ab('0x22')](function(){return _0x6f3386;});}else{return _0x6f3386;}})['catch'](function(_0x1e6329){logger[_0x72ab('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1e6329);throw _0x1e6329;});}return _0x6f3386;})[_0x72ab('0x22')](respondWithResult(_0x4b7c83,0xc9))[_0x72ab('0x2b')](handleError(_0x4b7c83,null));};exports['update']=function(_0x507938,_0x5048db){if(_0x507938['body']['id']){delete _0x507938[_0x72ab('0x65')]['id'];}return db['WhatsappAccount'][_0x72ab('0x5e')]({'where':{'id':_0x507938[_0x72ab('0x5c')]['id']},'include':[{'model':db[_0x72ab('0x3f')],'as':_0x72ab('0x40')}]})[_0x72ab('0x22')](handleEntityNotFound(_0x5048db,null))[_0x72ab('0x22')](saveUpdates(_0x507938[_0x72ab('0x65')],null))[_0x72ab('0x22')](respondWithResult(_0x5048db,null))[_0x72ab('0x2b')](handleError(_0x5048db,null));};exports[_0x72ab('0x38')]=function(_0x3e96de,_0x4f6ee7){return db['WhatsappAccount'][_0x72ab('0x5e')]({'where':{'id':_0x3e96de[_0x72ab('0x5c')]['id']}})['then'](handleEntityNotFound(_0x4f6ee7,null))[_0x72ab('0x22')](removeEntity(_0x4f6ee7,null))['catch'](handleError(_0x4f6ee7,null));};exports[_0x72ab('0x66')]=function(_0x1bc5e0,_0x3bebff){return db['WhatsappAccount'][_0x72ab('0x66')]()['then'](respondWithResult(_0x3bebff,null))[_0x72ab('0x2b')](handleError(_0x3bebff,null));};exports['addDisposition']=function(_0x254fb4,_0x31dcf3,_0x244234){if(_0x254fb4['body']['id']){delete _0x254fb4[_0x72ab('0x65')]['id'];}return db[_0x72ab('0x57')][_0x72ab('0x5e')]({'where':{'id':_0x254fb4[_0x72ab('0x5c')]['id']}})[_0x72ab('0x22')](handleEntityNotFound(_0x31dcf3,null))[_0x72ab('0x22')](function(_0x5abe4a){if(_0x5abe4a){_0x254fb4[_0x72ab('0x65')]['WhatsappAccountId']=_0x5abe4a['id'];return db['Disposition'][_0x72ab('0x5f')](_0x254fb4['body']);}})['then'](respondWithResult(_0x31dcf3,null))[_0x72ab('0x2b')](handleError(_0x31dcf3,null));};exports[_0x72ab('0x67')]=function(_0x4dc144,_0x2f928d,_0x5afc2c){var _0xf44b71={'raw':![],'where':{}};var _0x128edd={};var _0x3a46df={'count':0x0,'rows':[]};return db[_0x72ab('0x57')][_0x72ab('0x68')]({'where':{'id':_0x4dc144[_0x72ab('0x5c')]['id']}})['then'](handleEntityNotFound(_0x2f928d,null))[_0x72ab('0x22')](function(_0x40959c){if(_0x40959c){_0x128edd[_0x72ab('0x44')]=_[_0x72ab('0x46')](db[_0x72ab('0x69')]['rawAttributes']);_0x128edd[_0x72ab('0x47')]=_[_0x72ab('0x46')](_0x4dc144[_0x72ab('0x47')]);_0x128edd[_0x72ab('0x48')]=_[_0x72ab('0x49')](_0x128edd[_0x72ab('0x44')],_0x128edd['query']);_0xf44b71[_0x72ab('0x4b')]=_[_0x72ab('0x49')](_0x128edd[_0x72ab('0x44')],qs[_0x72ab('0x4a')](_0x4dc144[_0x72ab('0x47')][_0x72ab('0x4a')]));_0xf44b71['attributes']=_0xf44b71['attributes']['length']?_0xf44b71[_0x72ab('0x4b')]:_0x128edd[_0x72ab('0x44')];if(!_0x4dc144[_0x72ab('0x47')][_0x72ab('0x4d')](_0x72ab('0x4e'))){_0xf44b71[_0x72ab('0x2f')]=qs[_0x72ab('0x2f')](_0x4dc144['query'][_0x72ab('0x2f')]);_0xf44b71[_0x72ab('0x31')]=qs[_0x72ab('0x31')](_0x4dc144[_0x72ab('0x47')][_0x72ab('0x31')]);}_0xf44b71[_0x72ab('0x4f')]=qs[_0x72ab('0x50')](_0x4dc144[_0x72ab('0x47')][_0x72ab('0x50')]);_0xf44b71[_0x72ab('0x51')]=qs['filters'](_[_0x72ab('0x52')](_0x4dc144['query'],_0x128edd[_0x72ab('0x48')]));_0xf44b71['where'][_0x72ab('0x6a')]=_0x40959c['id'];if(_0x4dc144[_0x72ab('0x47')]['filter']){_0xf44b71[_0x72ab('0x51')]=_[_0x72ab('0x53')](_0xf44b71[_0x72ab('0x51')],{'$or':_[_0x72ab('0x45')](_0xf44b71['attributes'],function(_0x3a9419){var _0x48ff1e={};_0x48ff1e[_0x3a9419]={'$like':'%'+_0x4dc144[_0x72ab('0x47')][_0x72ab('0x55')]+'%'};return _0x48ff1e;})});}_0xf44b71=_[_0x72ab('0x53')]({},_0xf44b71,_0x4dc144[_0x72ab('0x56')]);return db['Disposition']['count']({'where':_0xf44b71[_0x72ab('0x51')]})[_0x72ab('0x22')](function(_0x27004f){_0x3a46df[_0x72ab('0x58')]=_0x27004f;if(_0x4dc144['query'][_0x72ab('0x5d')]){_0xf44b71['include']=[{'all':!![]}];}return db[_0x72ab('0x69')]['findAll'](_0xf44b71);})[_0x72ab('0x22')](function(_0x59c49f){_0x3a46df[_0x72ab('0x5b')]=_0x59c49f;return _0x3a46df;});}})['then'](respondWithFilteredResult(_0x2f928d,_0xf44b71))[_0x72ab('0x2b')](handleError(_0x2f928d,null));};exports['removeDispositions']=function(_0x2722c0,_0xa406a4,_0x2831fe){return db[_0x72ab('0x57')][_0x72ab('0x5e')]({'where':{'id':_0x2722c0[_0x72ab('0x5c')]['id']}})[_0x72ab('0x22')](handleEntityNotFound(_0xa406a4,null))[_0x72ab('0x22')](function(_0x4e10d6){if(_0x4e10d6){return _0x4e10d6['removeDispositions'](_0x2722c0[_0x72ab('0x47')][_0x72ab('0x6b')]);}})['then'](respondWithStatusCode(_0xa406a4,null))[_0x72ab('0x2b')](handleError(_0xa406a4,null));};exports[_0x72ab('0x6c')]=function(_0x5bcb84,_0x5731ee,_0x5e595a){if(_0x5bcb84[_0x72ab('0x65')]['id']){delete _0x5bcb84['body']['id'];}return db[_0x72ab('0x57')][_0x72ab('0x5e')]({'where':{'id':_0x5bcb84['params']['id']}})['then'](handleEntityNotFound(_0x5731ee,null))[_0x72ab('0x22')](function(_0x2a7f65){if(_0x2a7f65){_0x5bcb84[_0x72ab('0x65')][_0x72ab('0x6a')]=_0x2a7f65['id'];return db[_0x72ab('0x6d')][_0x72ab('0x5f')](_0x5bcb84[_0x72ab('0x65')]);}})[_0x72ab('0x22')](respondWithResult(_0x5731ee,null))['catch'](handleError(_0x5731ee,null));};exports[_0x72ab('0x6e')]=function(_0x40ab69,_0x246f66,_0x3ad1d7){var _0x18a51a={'raw':![],'where':{}};var _0xddeece={};var _0x1bbeea={'count':0x0,'rows':[]};return db[_0x72ab('0x57')][_0x72ab('0x68')]({'where':{'id':_0x40ab69['params']['id']}})['then'](handleEntityNotFound(_0x246f66,null))[_0x72ab('0x22')](function(_0x43ceeb){if(_0x43ceeb){_0xddeece[_0x72ab('0x44')]=_[_0x72ab('0x46')](db[_0x72ab('0x6d')]['rawAttributes']);_0xddeece[_0x72ab('0x47')]=_['keys'](_0x40ab69[_0x72ab('0x47')]);_0xddeece[_0x72ab('0x48')]=_['intersection'](_0xddeece[_0x72ab('0x44')],_0xddeece[_0x72ab('0x47')]);_0x18a51a[_0x72ab('0x4b')]=_['intersection'](_0xddeece[_0x72ab('0x44')],qs['fields'](_0x40ab69[_0x72ab('0x47')][_0x72ab('0x4a')]));_0x18a51a['attributes']=_0x18a51a[_0x72ab('0x4b')][_0x72ab('0x4c')]?_0x18a51a[_0x72ab('0x4b')]:_0xddeece[_0x72ab('0x44')];if(!_0x40ab69[_0x72ab('0x47')]['hasOwnProperty'](_0x72ab('0x4e'))){_0x18a51a[_0x72ab('0x2f')]=qs[_0x72ab('0x2f')](_0x40ab69[_0x72ab('0x47')]['limit']);_0x18a51a['offset']=qs[_0x72ab('0x31')](_0x40ab69[_0x72ab('0x47')][_0x72ab('0x31')]);}_0x18a51a[_0x72ab('0x4f')]=qs[_0x72ab('0x50')](_0x40ab69[_0x72ab('0x47')]['sort']);_0x18a51a[_0x72ab('0x51')]=qs[_0x72ab('0x48')](_[_0x72ab('0x52')](_0x40ab69['query'],_0xddeece[_0x72ab('0x48')]));_0x18a51a[_0x72ab('0x51')][_0x72ab('0x6a')]=_0x43ceeb['id'];if(_0x40ab69[_0x72ab('0x47')]['filter']){_0x18a51a[_0x72ab('0x51')]=_[_0x72ab('0x53')](_0x18a51a[_0x72ab('0x51')],{'$or':_['map'](_0x18a51a[_0x72ab('0x4b')],function(_0x270add){var _0x623316={};_0x623316[_0x270add]={'$like':'%'+_0x40ab69[_0x72ab('0x47')][_0x72ab('0x55')]+'%'};return _0x623316;})});}_0x18a51a=_[_0x72ab('0x53')]({},_0x18a51a,_0x40ab69[_0x72ab('0x56')]);return db['CannedAnswer'][_0x72ab('0x58')]({'where':_0x18a51a[_0x72ab('0x51')]})[_0x72ab('0x22')](function(_0x8b8ebc){_0x1bbeea[_0x72ab('0x58')]=_0x8b8ebc;if(_0x40ab69['query']['includeAll']){_0x18a51a[_0x72ab('0x59')]=[{'all':!![]}];}return db[_0x72ab('0x6d')][_0x72ab('0x5a')](_0x18a51a);})[_0x72ab('0x22')](function(_0x3fd8ad){_0x1bbeea['rows']=_0x3fd8ad;return _0x1bbeea;});}})[_0x72ab('0x22')](respondWithFilteredResult(_0x246f66,_0x18a51a))[_0x72ab('0x2b')](handleError(_0x246f66,null));};exports[_0x72ab('0x6f')]=function(_0x2e5399,_0x3f902d,_0x2d0bdb){return db[_0x72ab('0x57')][_0x72ab('0x5e')]({'where':{'id':_0x2e5399[_0x72ab('0x5c')]['id']}})[_0x72ab('0x22')](handleEntityNotFound(_0x3f902d,null))[_0x72ab('0x22')](function(_0x3471c4){if(_0x3471c4){return _0x3471c4['removeAnswers'](_0x2e5399[_0x72ab('0x47')][_0x72ab('0x6b')]);}})['then'](respondWithStatusCode(_0x3f902d,null))[_0x72ab('0x2b')](handleError(_0x3f902d,null));};exports[_0x72ab('0x70')]=function(_0x49e0f7,_0x3b868c,_0x3bdc31){return db[_0x72ab('0x57')][_0x72ab('0x5e')]({'where':{'id':_0x49e0f7['params']['id']}})[_0x72ab('0x22')](handleEntityNotFound(_0x3b868c,null))['then'](function(_0x4c9dcf){if(_0x4c9dcf){return _0x4c9dcf['addAgents'](_0x49e0f7[_0x72ab('0x65')]['ids'],_[_0x72ab('0x71')](_0x49e0f7['body'],[_0x72ab('0x6b'),'id'])||{})[_0x72ab('0x72')](function(_0xf113d7){for(var _0x31fadb=0x0;_0x31fadb<_0x49e0f7[_0x72ab('0x65')]['ids']['length'];_0x31fadb+=0x1){socket[_0x72ab('0x73')](_0x72ab('0x74'),{'UserId':Number(_0x49e0f7[_0x72ab('0x65')][_0x72ab('0x6b')][_0x31fadb]),'WhatsappAccountId':Number(_0x49e0f7['params']['id'])});}return _0xf113d7;});}})[_0x72ab('0x22')](respondWithResult(_0x3b868c,null))[_0x72ab('0x2b')](handleError(_0x3b868c,null));};exports[_0x72ab('0x75')]=function(_0x3e7111,_0x2ad760,_0x2ef3d1){return db[_0x72ab('0x57')][_0x72ab('0x5e')]({'where':{'id':_0x3e7111[_0x72ab('0x5c')]['id']}})[_0x72ab('0x22')](handleEntityNotFound(_0x2ad760,null))[_0x72ab('0x22')](function(_0x23db7e){if(_0x23db7e){return _0x23db7e[_0x72ab('0x75')](_0x3e7111[_0x72ab('0x47')][_0x72ab('0x6b')])[_0x72ab('0x22')](function(){if(_['isArray'](_0x3e7111['query'][_0x72ab('0x6b')])){for(var _0x14201e=0x0;_0x14201e<_0x3e7111['query']['ids'][_0x72ab('0x4c')];_0x14201e+=0x1){socket[_0x72ab('0x73')](_0x72ab('0x76'),{'UserId':Number(_0x3e7111[_0x72ab('0x47')][_0x72ab('0x6b')][_0x14201e]),'WhatsappAccountId':Number(_0x3e7111[_0x72ab('0x5c')]['id'])});}}else{socket[_0x72ab('0x73')](_0x72ab('0x76'),{'UserId':Number(_0x3e7111[_0x72ab('0x47')][_0x72ab('0x6b')]),'WhatsappAccountId':Number(_0x3e7111[_0x72ab('0x5c')]['id'])});}});}})['then'](respondWithStatusCode(_0x2ad760,null))[_0x72ab('0x2b')](handleError(_0x2ad760,null));};exports[_0x72ab('0x77')]=function(_0x2814b1,_0x48b697,_0x344fb6){var _0x5157c8={};var _0x12338e={};var _0x309a35;var _0x1969bf;return db['WhatsappAccount']['findOne']({'where':{'id':_0x2814b1['params']['id']}})[_0x72ab('0x22')](handleEntityNotFound(_0x48b697,null))[_0x72ab('0x22')](function(_0xcff26e){if(_0xcff26e){_0x309a35=_0xcff26e;_0x12338e[_0x72ab('0x44')]=_[_0x72ab('0x46')](db[_0x72ab('0x78')][_0x72ab('0x41')]);_0x12338e[_0x72ab('0x47')]=_[_0x72ab('0x46')](_0x2814b1['query']);_0x12338e['filters']=_[_0x72ab('0x49')](_0x12338e['model'],_0x12338e[_0x72ab('0x47')]);_0x5157c8[_0x72ab('0x4b')]=_['intersection'](_0x12338e[_0x72ab('0x44')],qs['fields'](_0x2814b1[_0x72ab('0x47')][_0x72ab('0x4a')]));_0x5157c8['attributes']=_0x5157c8[_0x72ab('0x4b')][_0x72ab('0x4c')]?_0x5157c8[_0x72ab('0x4b')]:_0x12338e['model'];_0x5157c8[_0x72ab('0x4f')]=qs[_0x72ab('0x50')](_0x2814b1[_0x72ab('0x47')][_0x72ab('0x50')]);_0x5157c8[_0x72ab('0x51')]=qs[_0x72ab('0x48')](_[_0x72ab('0x52')](_0x2814b1[_0x72ab('0x47')],_0x12338e[_0x72ab('0x48')]));if(_0x2814b1[_0x72ab('0x47')][_0x72ab('0x55')]){_0x5157c8[_0x72ab('0x51')]=_[_0x72ab('0x53')](_0x5157c8[_0x72ab('0x51')],{'$or':_[_0x72ab('0x45')](_0x5157c8[_0x72ab('0x4b')],function(_0x29e85a){var _0x43b17e={};_0x43b17e[_0x29e85a]={'$like':'%'+_0x2814b1[_0x72ab('0x47')][_0x72ab('0x55')]+'%'};return _0x43b17e;})});}_0x5157c8=_[_0x72ab('0x53')]({},_0x5157c8,_0x2814b1[_0x72ab('0x56')]);return _0x309a35[_0x72ab('0x77')](_0x5157c8);}})[_0x72ab('0x22')](function(_0x360406){if(_0x360406){_0x1969bf=_0x360406[_0x72ab('0x4c')];if(!_0x2814b1['query'][_0x72ab('0x4d')](_0x72ab('0x4e'))){_0x5157c8['limit']=qs[_0x72ab('0x2f')](_0x2814b1[_0x72ab('0x47')]['limit']);_0x5157c8[_0x72ab('0x31')]=qs[_0x72ab('0x31')](_0x2814b1[_0x72ab('0x47')][_0x72ab('0x31')]);}return _0x309a35[_0x72ab('0x77')](_0x5157c8);}})[_0x72ab('0x22')](function(_0x3d510e){if(_0x3d510e){return _0x3d510e?{'count':_0x1969bf,'rows':_0x3d510e}:null;}})[_0x72ab('0x22')](respondWithResult(_0x48b697,null))[_0x72ab('0x2b')](handleError(_0x48b697,null));};exports['addApplications']=function(_0x2e3abb,_0x516008,_0x104615){return db[_0x72ab('0x57')][_0x72ab('0x68')]({'where':{'id':_0x2e3abb[_0x72ab('0x5c')]['id']}})[_0x72ab('0x22')](handleEntityNotFound(_0x516008,null))[_0x72ab('0x22')](function(_0x4112fc){if(_0x4112fc){return db[_0x72ab('0x79')][_0x72ab('0x7a')](function(_0x13d4e3){return db[_0x72ab('0x7b')][_0x72ab('0x38')]({'where':{'WhatsappAccountId':_0x2e3abb['params']['id']},'transaction':_0x13d4e3})['then'](function(_0x1c5661){var _0x37652d=_[_0x72ab('0x45')](_0x2e3abb['body'],function(_0x2f1e28){_0x2f1e28[_0x72ab('0x6a')]=_0x2e3abb['params']['id'];return _0x2f1e28;});return db[_0x72ab('0x7b')][_0x72ab('0x7c')](_0x37652d,{'transaction':_0x13d4e3});});})['then'](function(){return db['WhatsappApplication'][_0x72ab('0x7d')]({'where':{'WhatsappAccountId':_0x2e3abb[_0x72ab('0x5c')]['id']},'order':'priority'});});}})['then'](respondWithResult(_0x516008,null))[_0x72ab('0x2b')](handleError(_0x516008,null));};exports['getApplications']=function(_0x5b9c8e,_0x520975,_0x51ad80){var _0x320f67={};var _0x2247e2={};var _0x1b455c;var _0x1a0d1e;return db['WhatsappAccount']['findOne']({'where':{'id':_0x5b9c8e[_0x72ab('0x5c')]['id']}})[_0x72ab('0x22')](handleEntityNotFound(_0x520975,null))[_0x72ab('0x22')](function(_0x4b9e96){if(_0x4b9e96){_0x1b455c=_0x4b9e96;_0x2247e2[_0x72ab('0x44')]=_[_0x72ab('0x46')](db[_0x72ab('0x7b')][_0x72ab('0x41')]);_0x2247e2[_0x72ab('0x47')]=_[_0x72ab('0x46')](_0x5b9c8e[_0x72ab('0x47')]);_0x2247e2['filters']=_[_0x72ab('0x49')](_0x2247e2[_0x72ab('0x44')],_0x2247e2[_0x72ab('0x47')]);_0x320f67[_0x72ab('0x4b')]=_[_0x72ab('0x49')](_0x2247e2[_0x72ab('0x44')],qs['fields'](_0x5b9c8e[_0x72ab('0x47')][_0x72ab('0x4a')]));_0x320f67[_0x72ab('0x4b')]=_0x320f67[_0x72ab('0x4b')][_0x72ab('0x4c')]?_0x320f67['attributes']:_0x2247e2['model'];_0x320f67[_0x72ab('0x4f')]=qs['sort'](_0x5b9c8e['query'][_0x72ab('0x50')]);_0x320f67['where']=qs[_0x72ab('0x48')](_[_0x72ab('0x52')](_0x5b9c8e[_0x72ab('0x47')],_0x2247e2['filters']));if(_0x5b9c8e[_0x72ab('0x47')][_0x72ab('0x55')]){_0x320f67['where']=_[_0x72ab('0x53')](_0x320f67[_0x72ab('0x51')],{'$or':_[_0x72ab('0x45')](_0x320f67['attributes'],function(_0x1936a7){var _0x38df25={};_0x38df25[_0x1936a7]={'$like':'%'+_0x5b9c8e[_0x72ab('0x47')][_0x72ab('0x55')]+'%'};return _0x38df25;})});}_0x320f67=_[_0x72ab('0x53')]({},_0x320f67,_0x5b9c8e[_0x72ab('0x56')]);return _0x1b455c[_0x72ab('0x7e')](_0x320f67);}})[_0x72ab('0x22')](function(_0x1111ad){if(_0x1111ad){_0x1a0d1e=_0x1111ad['length'];if(!_0x5b9c8e['query'][_0x72ab('0x4d')](_0x72ab('0x4e'))){_0x320f67[_0x72ab('0x2f')]=qs['limit'](_0x5b9c8e['query']['limit']);_0x320f67[_0x72ab('0x31')]=qs[_0x72ab('0x31')](_0x5b9c8e[_0x72ab('0x47')]['offset']);}return _0x1b455c[_0x72ab('0x7e')](_0x320f67);}})[_0x72ab('0x22')](function(_0x462121){if(_0x462121){return _0x462121?{'count':_0x1a0d1e,'rows':_0x462121}:null;}})['then'](respondWithResult(_0x520975,null))[_0x72ab('0x2b')](handleError(_0x520975,null));};exports[_0x72ab('0x7f')]=function(_0x2f5f86,_0x55f65b,_0x5144a3){var _0x32255f={'channel':_0x72ab('0x80')};var _0x56d41b=[];var _0x51196f=[];var _0x894797={};return db[_0x72ab('0x57')][_0x72ab('0x5e')]({'where':{'id':_0x2f5f86[_0x72ab('0x5c')]['id']},'include':[{'model':db[_0x72ab('0x7b')],'as':'Applications'}]})[_0x72ab('0x22')](handleEntityNotFound(_0x55f65b,null))[_0x72ab('0x22')](function(_0x4373e1){_0x32255f[_0x72ab('0x81')]=_0x4373e1;_0x32255f[_0x72ab('0x82')]=_['orderBy'](_0x4373e1['Applications'],[_0x72ab('0x83')],[_0x72ab('0x84')]);if(_0x32255f[_0x72ab('0x81')][_0x72ab('0x85')]){delete _0x32255f['account'][_0x72ab('0x85')];}return db[_0x72ab('0x86')][_0x72ab('0x66')]();})[_0x72ab('0x22')](function(_0x5c5275){if(!_0x5c5275){throw new db[(_0x72ab('0x87'))][(_0x72ab('0x88'))](_0x72ab('0x89'));}_0x56d41b=_[_0x72ab('0x8a')](_[_0x72ab('0x46')](_0x5c5275),['createdAt','updatedAt']);_0x51196f=_['difference'](_[_0x72ab('0x46')](_0x5c5275),[_0x72ab('0x8b'),'updatedAt','CompanyId','ListId']);_0x32255f[_0x72ab('0x65')]={'mapKey':_0x72ab('0x8c')};if(_0x32255f[_0x72ab('0x81')][_0x72ab('0x42')]&&_0x32255f[_0x72ab('0x81')][_0x72ab('0x42')]===_0x72ab('0x8d')){_0x32255f['body']['from']=_0x2f5f86[_0x72ab('0x65')][_0x72ab('0x8e')][_0x72ab('0x8f')](_0x72ab('0x90'),'');_0x32255f[_0x72ab('0x65')]['body']=_0x2f5f86['body'][_0x72ab('0x91')];_0x32255f[_0x72ab('0x65')][_0x72ab('0x92')]=_0x2f5f86[_0x72ab('0x65')]['MessageSid'];}if(_0x32255f['body']['id']){delete _0x32255f['body']['id'];}if(_[_0x72ab('0x93')](_0x32255f['body']['from'])){throw new db[(_0x72ab('0x87'))][(_0x72ab('0x88'))]('from\x20is\x20mandatory');}if(_[_0x72ab('0x93')](_0x32255f[_0x72ab('0x65')][_0x72ab('0x65')])||_0x32255f['body'][_0x72ab('0x65')]===''){throw new db['Sequelize'][(_0x72ab('0x88'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x72ab('0x93')](_0x32255f['body']['mapKey'])){throw new db[(_0x72ab('0x87'))]['ValidationError'](_0x72ab('0x94')+_0x51196f);}if(!_['includes'](_0x51196f,_0x32255f[_0x72ab('0x65')]['mapKey'])){throw new db[(_0x72ab('0x87'))][(_0x72ab('0x88'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x51196f);}_0x894797[_0x32255f[_0x72ab('0x65')][_0x72ab('0x95')]]=_0x32255f[_0x72ab('0x65')][_0x72ab('0x96')];return db[_0x72ab('0x97')][_0x72ab('0x5e')]({'where':{'id':_0x32255f[_0x72ab('0x81')][_0x72ab('0x98')]},'include':[{'model':db[_0x72ab('0x86')],'as':'Contacts','where':_0x894797,'limit':0x1,'order':[[_0x72ab('0x99'),_0x72ab('0x9a')]]}]});})['then'](handleEntityNotFound(_0x55f65b,null))[_0x72ab('0x22')](function(_0x5d1c82){if(_0x5d1c82){_0x32255f[_0x72ab('0x9b')]=_['omit'](_0x5d1c82,[_0x72ab('0x9c')]);if(_0x5d1c82['Contacts'][_0x72ab('0x4c')]){return _0x5d1c82[_0x72ab('0x9c')][0x0];}var _0xfc8514=_[_0x72ab('0x1b')](_0x32255f[_0x72ab('0x65')],{'firstName':_0x32255f[_0x72ab('0x65')][_0x72ab('0x96')],'ListId':_0x5d1c82['id']});_0xfc8514[_0x32255f[_0x72ab('0x65')][_0x72ab('0x95')]]=_0x32255f[_0x72ab('0x65')][_0x72ab('0x96')];return db[_0x72ab('0x86')][_0x72ab('0x5f')](_0xfc8514,{'fields':_0x56d41b,'raw':!![]});}})[_0x72ab('0x22')](handleEntityNotFound(_0x55f65b,null))[_0x72ab('0x22')](function(_0x1faa59){if(_0x1faa59){_0x32255f['contact']=_0x1faa59;var _0x4e15b3={'ContactId':_0x1faa59['id'],'phone':_0x32255f['body']['from'],'WhatsappAccountId':_0x2f5f86[_0x72ab('0x5c')]['id']};var _0x4914ca={'ContactId':_0x1faa59['id'],'WhatsappAccountId':_0x2f5f86['params']['id'],'closed':![]};return db[_0x72ab('0x9d')]['find']({'where':_0x4914ca})[_0x72ab('0x22')](function(_0x2a43b7){if(_0x2a43b7){return[_0x2a43b7,![]];}return db[_0x72ab('0x9d')][_0x72ab('0x5f')](_0x4e15b3)['then'](function(_0x573313){return[_0x573313,!![]];});});}})[_0x72ab('0x72')](function(_0x62c76,_0x45e7bd){_0x32255f[_0x72ab('0x9e')]=_0x62c76[_0x72ab('0x62')]({'plain':!![]});_0x32255f[_0x72ab('0x9e')]['created']=![];if(_0x45e7bd){if(_0x32255f['account'][_0x72ab('0x9f')]){_0x32255f[_0x72ab('0x82')][_0x72ab('0xa0')]({'id':0x0,'priority':_0x32255f[_0x72ab('0x82')]['length']+0x1,'app':_0x72ab('0xa1'),'appdata':_0x72ab('0xa2'),'interval':_0x72ab('0xa3')});}_0x32255f[_0x72ab('0x9e')][_0x72ab('0xa4')]=!![];}return db[_0x72ab('0xa5')][_0x72ab('0x5f')]({'phone':_0x32255f[_0x72ab('0x65')][_0x72ab('0x96')],'messageId':_0x32255f[_0x72ab('0x65')][_0x72ab('0x92')],'body':_0x32255f[_0x72ab('0x65')][_0x72ab('0x65')],'WhatsappAccountId':_0x2f5f86[_0x72ab('0x5c')]['id'],'WhatsappInteractionId':_0x62c76['id'],'direction':'in','ContactId':_0x62c76[_0x72ab('0xa6')],'AttachmentId':_0x32255f[_0x72ab('0x65')]['AttachmentId']});})['then'](function(_0x5364a7){_0x32255f[_0x72ab('0x29')]=_0x5364a7;if(_0x32255f[_0x72ab('0x9e')][_0x72ab('0xa7')]){return db[_0x72ab('0x78')][_0x72ab('0x5e')]({'attributes':['id',_0x72ab('0x3c')],'where':{'id':_0x32255f['interaction'][_0x72ab('0xa7')]}})[_0x72ab('0x22')](function(_0x4b19bc){if(_0x4b19bc){_0x32255f['applications'][_0x72ab('0xa8')]({'id':0x0,'priority':0x0,'app':_0x72ab('0xa9'),'appdata':_0x4b19bc[_0x72ab('0x3c')]+','+(_0x32255f['account'][_0x72ab('0xaa')]||0xa),'interval':_0x72ab('0xa3')});}return respondWithRpcPromise(_0x72ab('0xab'),_0x72ab('0xac'),_0x32255f);});}return respondWithRpcPromise(_0x72ab('0xab'),_0x72ab('0xac'),_0x32255f);})[_0x72ab('0x22')](function(_0x2cf723){if(_0x2cf723){var _0x4f8abf=0xc8;var _0x3e061b='receiveMessage';logger[_0x72ab('0x23')](_0x72ab('0x26'),_0x3e061b,_0x4f8abf,_0x72ab('0xad'));logger['debug'](_0x72ab('0xae'),_0x3e061b,_0x4f8abf,_0x72ab('0xad'),JSON[_0x72ab('0x27')](_0x2cf723));if(_0x32255f[_0x72ab('0x81')]['type']===_0x72ab('0x8d')){return _0x55f65b['status'](_0x4f8abf)[_0x72ab('0x32')](_0x72ab('0xaf'),_0x72ab('0xb0'))['send'](_0x72ab('0xb1'));}else{return _0x55f65b['status'](_0x4f8abf)[_0x72ab('0x34')](_0x2cf723);}}})['catch'](handleError(_0x55f65b,null));};exports[_0x72ab('0x3d')]=function(_0x38f755,_0x1c4d70,_0x37adf9){var _0x295584,_0x438d4a,_0x30c4ea;if(_[_0x72ab('0x93')](_0x38f755[_0x72ab('0x65')][_0x72ab('0x65')])||_0x38f755['body'][_0x72ab('0x65')]===''){throw new db[(_0x72ab('0x87'))][(_0x72ab('0x88'))](_0x72ab('0xb2'));}if(_[_0x72ab('0x93')](_0x38f755[_0x72ab('0x65')]['to'])){throw new db[(_0x72ab('0x87'))]['ValidationError'](_0x72ab('0xb3'));}_0x295584=_0x38f755[_0x72ab('0x65')]['to'];return db[_0x72ab('0x57')][_0x72ab('0x5e')]({'where':{'id':_0x38f755[_0x72ab('0x5c')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x72ab('0x86')],'as':_0x72ab('0x9c'),'where':{'mobile':_0x295584},'limit':0x1,'order':[[_0x72ab('0x99'),_0x72ab('0x9a')]]}]}]})['then'](handleEntityNotFound(_0x1c4d70,null))[_0x72ab('0x22')](function(_0x4d58b8){if(_0x4d58b8&&_0x4d58b8[_0x72ab('0xb4')]){_0x438d4a=_0x4d58b8['get']({'plain':!![]});if(_0x438d4a[_0x72ab('0xb4')]&&_0x438d4a[_0x72ab('0xb4')][_0x72ab('0x9c')][_0x72ab('0x4c')]){return _0x438d4a['List']['Contacts'][0x0];}return db[_0x72ab('0x86')][_0x72ab('0x5f')](_['defaults'](_0x38f755[_0x72ab('0x65')],{'firstName':_0x295584,'mobile':_0x295584,'phone':_0x295584,'ListId':_0x438d4a[_0x72ab('0x98')]}));}})[_0x72ab('0x22')](handleEntityNotFound(_0x1c4d70,null))[_0x72ab('0x22')](function(_0x130a9c){if(_0x130a9c){_0x30c4ea=_0x130a9c;return db[_0x72ab('0x9d')][_0x72ab('0x5e')]({'where':{'ContactId':_0x30c4ea['id'],'closed':![],'WhatsappAccountId':_0x438d4a['id']}})['then'](function(_0x26f67e){if(_0x26f67e){return[_0x26f67e,![]];}return db['WhatsappInteraction'][_0x72ab('0x5f')]({'UserId':_0x38f755[_0x72ab('0x60')]['id'],'ContactId':_0x30c4ea['id'],'WhatsappAccountId':_0x438d4a['id'],'phone':_0x295584,'firstMsgDirection':_0x72ab('0xb5'),'Messages':[_[_0x72ab('0x53')](_0x38f755['body'],{'read':![],'body':_0x38f755['body'][_0x72ab('0x65')],'phone':_0x295584,'WhatsappAccountId':_0x438d4a['id'],'UserId':_0x38f755[_0x72ab('0x60')]['id'],'ContactId':_0x30c4ea['id']})]},{'include':[{'model':db[_0x72ab('0xa5')],'as':'Messages'}]})[_0x72ab('0x22')](function(_0x497a19){return[_0x497a19,!![]];});});}})[_0x72ab('0x72')](function(_0x3c8565,_0x2aa81b){if(_0x2aa81b){return _0x3c8565;}return db['WhatsappMessage'][_0x72ab('0x5f')](_[_0x72ab('0x53')](_0x38f755[_0x72ab('0x65')],{'read':![],'body':_0x38f755[_0x72ab('0x65')][_0x72ab('0x65')],'phone':_0x295584,'WhatsappAccountId':_0x438d4a['id'],'WhatsappInteractionId':_0x3c8565['id'],'UserId':_0x38f755[_0x72ab('0x60')]['id'],'ContactId':_0x30c4ea['id']}))[_0x72ab('0x22')](function(_0x32b609){_0x3c8565[_0x72ab('0xb6')][_0x72ab('0xb7')]=[];_0x3c8565['dataValues'][_0x72ab('0xb7')][_0x72ab('0xa0')](_0x32b609['dataValues']);return _0x3c8565;});})['then'](respondWithResult(_0x1c4d70,null))[_0x72ab('0x2b')](handleError(_0x1c4d70,null));};
\ No newline at end of file
index 9547fa9..284b22e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb35d=['exports','events','WhatsappAccount','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x43f2ed,_0x18ef91){var _0x5f452f=function(_0x4616df){while(--_0x4616df){_0x43f2ed['push'](_0x43f2ed['shift']());}};_0x5f452f(++_0x18ef91);}(_0xb35d,0x191));var _0xdb35=function(_0x209bbf,_0x2e2375){_0x209bbf=_0x209bbf-0x0;var _0x592d4b=_0xb35d[_0x209bbf];return _0x592d4b;};'use strict';var EventEmitter=require(_0xdb35('0x0'));var WhatsappAccount=require('../../mysqldb')['db'][_0xdb35('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xdb35('0x2')](0x0);var events={'afterCreate':_0xdb35('0x3'),'afterUpdate':_0xdb35('0x4'),'afterDestroy':'remove'};function emitEvent(_0x562e17){return function(_0x29f6ea,_0x2e533e,_0x3200ba){WhatsappAccountEvents['emit'](_0x562e17+':'+_0x29f6ea['id'],_0x29f6ea);WhatsappAccountEvents[_0xdb35('0x5')](_0x562e17,_0x29f6ea);_0x3200ba(null);};}for(var e in events){if(events[_0xdb35('0x6')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module[_0xdb35('0x7')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xf428=['../../mysqldb','WhatsappAccount','setMaxListeners','update','remove','emit'];(function(_0x526071,_0x256e12){var _0x410bb7=function(_0x186180){while(--_0x186180){_0x526071['push'](_0x526071['shift']());}};_0x410bb7(++_0x256e12);}(_0xf428,0x102));var _0x8f42=function(_0x3a57a3,_0x5673df){_0x3a57a3=_0x3a57a3-0x0;var _0x292eda=_0xf428[_0x3a57a3];return _0x292eda;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0x8f42('0x0'))['db'][_0x8f42('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x8f42('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8f42('0x3'),'afterDestroy':_0x8f42('0x4')};function emitEvent(_0x26a1af){return function(_0x1c1db6,_0x297aab,_0xb3ba49){WhatsappAccountEvents[_0x8f42('0x5')](_0x26a1af+':'+_0x1c1db6['id'],_0x1c1db6);WhatsappAccountEvents['emit'](_0x26a1af,_0x1c1db6);_0xb3ba49(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index 4e0b6c0..faf61ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96f6=['exports','WhatsappAccount','whatsapp_accounts','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./whatsappAccount.attributes'];(function(_0x59760e,_0x5b7697){var _0x160a9b=function(_0x4456ce){while(--_0x4456ce){_0x59760e['push'](_0x59760e['shift']());}};_0x160a9b(++_0x5b7697);}(_0x96f6,0x117));var _0x696f=function(_0x118afa,_0x4bf0c1){_0x118afa=_0x118afa-0x0;var _0x167d76=_0x96f6[_0x118afa];return _0x167d76;};'use strict';var _=require(_0x696f('0x0'));var util=require(_0x696f('0x1'));var logger=require(_0x696f('0x2'))(_0x696f('0x3'));var moment=require('moment');var BPromise=require(_0x696f('0x4'));var rp=require(_0x696f('0x5'));var fs=require('fs');var path=require(_0x696f('0x6'));var rimraf=require(_0x696f('0x7'));var config=require('../../config/environment');var attributes=require(_0x696f('0x8'));module[_0x696f('0x9')]=function(_0x5f132e,_0x461375){return _0x5f132e['define'](_0x696f('0xa'),attributes,{'tableName':_0x696f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe793=['moment','bluebird','request-promise','path','rimraf','exports','whatsapp_accounts','lodash','util','../../config/logger','api'];(function(_0x2932ce,_0x5855c9){var _0x2f1cdd=function(_0x227bcb){while(--_0x227bcb){_0x2932ce['push'](_0x2932ce['shift']());}};_0x2f1cdd(++_0x5855c9);}(_0xe793,0x130));var _0x3e79=function(_0x171671,_0x6a9c9b){_0x171671=_0x171671-0x0;var _0x25499e=_0xe793[_0x171671];return _0x25499e;};'use strict';var _=require(_0x3e79('0x0'));var util=require(_0x3e79('0x1'));var logger=require(_0x3e79('0x2'))(_0x3e79('0x3'));var moment=require(_0x3e79('0x4'));var BPromise=require(_0x3e79('0x5'));var rp=require(_0x3e79('0x6'));var fs=require('fs');var path=require(_0x3e79('0x7'));var rimraf=require(_0x3e79('0x8'));var config=require('../../config/environment');var attributes=require('./whatsappAccount.attributes');module[_0x3e79('0x9')]=function(_0x1a01da,_0x12ff59){return _0x1a01da['define']('WhatsappAccount',attributes,{'tableName':_0x3e79('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4503540..60abea6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5af6=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','register','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','include','model','attributes','map','lodash','randomstring','../../mysqldb'];(function(_0x4887c3,_0x2529a8){var _0x43ab61=function(_0x2d774d){while(--_0x2d774d){_0x4887c3['push'](_0x4887c3['shift']());}};_0x43ab61(++_0x2529a8);}(_0x5af6,0x15d));var _0x65af=function(_0xdd8620,_0x39ed20){_0xdd8620=_0xdd8620-0x0;var _0x25d02f=_0x5af6[_0xdd8620];return _0x25d02f;};'use strict';var _=require(_0x65af('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x65af('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x65af('0x2'))['db'];var utils=require(_0x65af('0x3'));var logger=require(_0x65af('0x4'))('rpc');var config=require(_0x65af('0x5'));var jayson=require(_0x65af('0x6'));var client=jayson[_0x65af('0x7')]['http']({'port':0x232a});config[_0x65af('0x8')]=_[_0x65af('0x9')](config['redis'],{'host':_0x65af('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x65af('0x8')]));require('./whatsappAccount.socket')[_0x65af('0xb')](socket);function respondWithRpcPromise(_0x1df61f,_0x3aba32,_0x22803b){return new BPromise(function(_0x2cb915,_0x584c5a){return client[_0x65af('0xc')](_0x1df61f,_0x22803b)[_0x65af('0xd')](function(_0xc272bb){logger['info'](_0x65af('0xe'),_0x3aba32,_0x65af('0xf'));logger['debug'](_0x65af('0x10'),_0x3aba32,_0x65af('0xf'),JSON[_0x65af('0x11')](_0xc272bb));if(_0xc272bb['error']){if(_0xc272bb[_0x65af('0x12')]['code']===0x1f4){logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x3aba32,_0xc272bb[_0x65af('0x12')]['message']);return _0x584c5a(_0xc272bb['error']['message']);}logger[_0x65af('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x3aba32,_0xc272bb[_0x65af('0x12')][_0x65af('0x13')]);return _0x2cb915(_0xc272bb[_0x65af('0x12')][_0x65af('0x13')]);}else{logger[_0x65af('0x14')](_0x65af('0xe'),_0x3aba32,'request\x20sent');_0x2cb915(_0xc272bb['result']['message']);}})[_0x65af('0x15')](function(_0x26ab0e){logger[_0x65af('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x3aba32,_0x26ab0e);_0x584c5a(_0x26ab0e);});});}exports[_0x65af('0x16')]=function(_0x42d552){var _0x1bff74=this;return new Promise(function(_0x1133dc,_0x326f86){return db[_0x65af('0x17')][_0x65af('0x18')]({'raw':_0x42d552['options']?_0x42d552[_0x65af('0x19')][_0x65af('0x1a')]===undefined?!![]:![]:!![],'where':_0x42d552['options']?_0x42d552[_0x65af('0x19')][_0x65af('0x1b')]||null:null,'attributes':_0x42d552[_0x65af('0x19')]?_0x42d552['options']['attributes']||null:null,'include':_0x42d552[_0x65af('0x19')]?_0x42d552[_0x65af('0x19')]['include']?_['map'](_0x42d552[_0x65af('0x19')][_0x65af('0x1c')],function(_0x4a29b8){return{'model':db[_0x4a29b8[_0x65af('0x1d')]],'as':_0x4a29b8['as'],'attributes':_0x4a29b8[_0x65af('0x1e')],'include':_0x4a29b8[_0x65af('0x1c')]?_[_0x65af('0x1f')](_0x4a29b8[_0x65af('0x1c')],function(_0x27cab3){return{'model':db[_0x27cab3['model']],'as':_0x27cab3['as'],'attributes':_0x27cab3[_0x65af('0x1e')],'include':_0x27cab3[_0x65af('0x1c')]?_['map'](_0x27cab3[_0x65af('0x1c')],function(_0x474b79){return{'model':db[_0x474b79[_0x65af('0x1d')]],'as':_0x474b79['as'],'attributes':_0x474b79['attributes']};}):[]};}):[]};}):[]:[]})[_0x65af('0xd')](function(_0x231e5c){logger['info']('ShowWhatsappAccount',_0x42d552);logger['debug']('ShowWhatsappAccount',_0x42d552,JSON['stringify'](_0x231e5c));_0x1133dc(_0x231e5c);})[_0x65af('0x15')](function(_0x5b7418){logger[_0x65af('0x12')]('ShowWhatsappAccount',_0x5b7418[_0x65af('0x13')],_0x42d552);_0x326f86(_0x1bff74[_0x65af('0x12')](0x1f4,_0x5b7418['message']));});});};
\ No newline at end of file
+var _0xdc74=['options','raw','attributes','include','model','map','then','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','request','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','ShowWhatsappAccount','WhatsappAccount','find'];(function(_0x1bf89a,_0x2a2949){var _0x198910=function(_0x171142){while(--_0x171142){_0x1bf89a['push'](_0x1bf89a['shift']());}};_0x198910(++_0x2a2949);}(_0xdc74,0xbb));var _0x4dc7=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xdc74[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x4dc7('0x0'));var util=require(_0x4dc7('0x1'));var moment=require(_0x4dc7('0x2'));var BPromise=require(_0x4dc7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4dc7('0x4'))['db'];var utils=require(_0x4dc7('0x5'));var logger=require(_0x4dc7('0x6'))(_0x4dc7('0x7'));var config=require(_0x4dc7('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4dc7('0x9')]({'port':0x232a});config[_0x4dc7('0xa')]=_[_0x4dc7('0xb')](config['redis'],{'host':_0x4dc7('0xc'),'port':0x18eb});var socket=require(_0x4dc7('0xd'))(new Redis(config['redis']));require(_0x4dc7('0xe'))['register'](socket);function respondWithRpcPromise(_0x1c16a2,_0x592139,_0x2cd456){return new BPromise(function(_0x3603d1,_0x29ff36){return client[_0x4dc7('0xf')](_0x1c16a2,_0x2cd456)['then'](function(_0x585db1){logger[_0x4dc7('0x10')](_0x4dc7('0x11'),_0x592139,_0x4dc7('0x12'));logger[_0x4dc7('0x13')](_0x4dc7('0x14'),_0x592139,_0x4dc7('0x12'),JSON[_0x4dc7('0x15')](_0x585db1));if(_0x585db1[_0x4dc7('0x16')]){if(_0x585db1['error'][_0x4dc7('0x17')]===0x1f4){logger[_0x4dc7('0x16')](_0x4dc7('0x11'),_0x592139,_0x585db1[_0x4dc7('0x16')][_0x4dc7('0x18')]);return _0x29ff36(_0x585db1[_0x4dc7('0x16')][_0x4dc7('0x18')]);}logger[_0x4dc7('0x16')](_0x4dc7('0x11'),_0x592139,_0x585db1[_0x4dc7('0x16')][_0x4dc7('0x18')]);return _0x3603d1(_0x585db1[_0x4dc7('0x16')]['message']);}else{logger[_0x4dc7('0x10')]('WhatsappAccount,\x20%s,\x20%s',_0x592139,'request\x20sent');_0x3603d1(_0x585db1['result'][_0x4dc7('0x18')]);}})[_0x4dc7('0x19')](function(_0x67ad13){logger[_0x4dc7('0x16')](_0x4dc7('0x11'),_0x592139,_0x67ad13);_0x29ff36(_0x67ad13);});});}exports[_0x4dc7('0x1a')]=function(_0x5a3eaa){var _0x2322da=this;return new Promise(function(_0xa94325,_0x3d7f29){return db[_0x4dc7('0x1b')][_0x4dc7('0x1c')]({'raw':_0x5a3eaa[_0x4dc7('0x1d')]?_0x5a3eaa['options'][_0x4dc7('0x1e')]===undefined?!![]:![]:!![],'where':_0x5a3eaa[_0x4dc7('0x1d')]?_0x5a3eaa[_0x4dc7('0x1d')]['where']||null:null,'attributes':_0x5a3eaa[_0x4dc7('0x1d')]?_0x5a3eaa[_0x4dc7('0x1d')][_0x4dc7('0x1f')]||null:null,'include':_0x5a3eaa[_0x4dc7('0x1d')]?_0x5a3eaa['options'][_0x4dc7('0x20')]?_['map'](_0x5a3eaa[_0x4dc7('0x1d')][_0x4dc7('0x20')],function(_0x4c2c4b){return{'model':db[_0x4c2c4b[_0x4dc7('0x21')]],'as':_0x4c2c4b['as'],'attributes':_0x4c2c4b[_0x4dc7('0x1f')],'include':_0x4c2c4b[_0x4dc7('0x20')]?_[_0x4dc7('0x22')](_0x4c2c4b[_0x4dc7('0x20')],function(_0xe5ed0e){return{'model':db[_0xe5ed0e['model']],'as':_0xe5ed0e['as'],'attributes':_0xe5ed0e['attributes'],'include':_0xe5ed0e[_0x4dc7('0x20')]?_[_0x4dc7('0x22')](_0xe5ed0e['include'],function(_0x15681c){return{'model':db[_0x15681c[_0x4dc7('0x21')]],'as':_0x15681c['as'],'attributes':_0x15681c[_0x4dc7('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x4dc7('0x23')](function(_0x57de64){logger['info']('ShowWhatsappAccount',_0x5a3eaa);logger[_0x4dc7('0x13')]('ShowWhatsappAccount',_0x5a3eaa,JSON[_0x4dc7('0x15')](_0x57de64));_0xa94325(_0x57de64);})[_0x4dc7('0x19')](function(_0x3e0d05){logger[_0x4dc7('0x16')]('ShowWhatsappAccount',_0x3e0d05['message'],_0x5a3eaa);_0x3d7f29(_0x2322da['error'](0x1f4,_0x3e0d05[_0x4dc7('0x18')]));});});};
\ No newline at end of file
index 773275c..b44b8a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89af=['emit','removeListener','length','whatsappAccount:','save','remove','update'];(function(_0x4a367f,_0x4e05f2){var _0x2bedd5=function(_0x5b5e70){while(--_0x5b5e70){_0x4a367f['push'](_0x4a367f['shift']());}};_0x2bedd5(++_0x4e05f2);}(_0x89af,0xf9));var _0xf89a=function(_0x5efefe,_0x3b695b){_0x5efefe=_0x5efefe-0x0;var _0x1d7d1a=_0x89af[_0x5efefe];return _0x1d7d1a;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=[_0xf89a('0x0'),_0xf89a('0x1'),_0xf89a('0x2')];function createListener(_0x28f6d7,_0x4ff8a2){return function(_0x7cae85){_0x4ff8a2[_0xf89a('0x3')](_0x28f6d7,_0x7cae85);};}function removeListener(_0x985b25,_0x5cb960){return function(){WhatsappAccountEvents[_0xf89a('0x4')](_0x985b25,_0x5cb960);};}exports['register']=function(_0x42c8eb){for(var _0x5193a4=0x0,_0x2928f8=events[_0xf89a('0x5')];_0x5193a4<_0x2928f8;_0x5193a4++){var _0x3640d8=events[_0x5193a4];var _0x23b84e=createListener(_0xf89a('0x6')+_0x3640d8,_0x42c8eb);WhatsappAccountEvents['on'](_0x3640d8,_0x23b84e);}};
\ No newline at end of file
+var _0xcf4d=['register','length','./whatsappAccount.events','remove','update','removeListener'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0xcf4d,0x122));var _0xdcf4=function(_0xdd921f,_0x38ca38){_0xdd921f=_0xdd921f-0x0;var _0x1ff361=_0xcf4d[_0xdd921f];return _0x1ff361;};'use strict';var WhatsappAccountEvents=require(_0xdcf4('0x0'));var events=['save',_0xdcf4('0x1'),_0xdcf4('0x2')];function createListener(_0xb87d7d,_0x15490d){return function(_0x4f6f07){_0x15490d['emit'](_0xb87d7d,_0x4f6f07);};}function removeListener(_0x6e20e5,_0x247db8){return function(){WhatsappAccountEvents[_0xdcf4('0x3')](_0x6e20e5,_0x247db8);};}exports[_0xdcf4('0x4')]=function(_0x465395){for(var _0x103749=0x0,_0x10c1c0=events[_0xdcf4('0x5')];_0x103749<_0x10c1c0;_0x103749++){var _0x594bae=events[_0x103749];var _0x3a9cac=createListener('whatsappAccount:'+_0x594bae,_0x465395);WhatsappAccountEvents['on'](_0x594bae,_0x3a9cac);}};
\ No newline at end of file
index e8a593e..a0c25f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf3=['get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0xacf3,0x6b));var _0x3acf=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xacf3[_0x57b54c];return _0x59cc19;};'use strict';var multer=require('multer');var util=require(_0x3acf('0x0'));var path=require(_0x3acf('0x1'));var timeout=require('connect-timeout');var express=require(_0x3acf('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3acf('0x3'));var interaction=require(_0x3acf('0x4'));var config=require(_0x3acf('0x5'));var controller=require(_0x3acf('0x6'));router[_0x3acf('0x7')]('/',auth[_0x3acf('0x8')](),controller[_0x3acf('0x9')]);router[_0x3acf('0x7')](_0x3acf('0xa'),auth['isAuthenticated'](),controller[_0x3acf('0xb')]);router[_0x3acf('0xc')]('/',auth[_0x3acf('0x8')](),controller[_0x3acf('0xd')]);router[_0x3acf('0xe')]('/:id',auth[_0x3acf('0x8')](),controller[_0x3acf('0xf')]);router[_0x3acf('0x10')]('/:id',auth[_0x3acf('0x8')](),controller[_0x3acf('0x11')]);module[_0x3acf('0x12')]=router;
\ No newline at end of file
+var _0xf613=['isAuthenticated','post','put','delete','/:id','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','index','get'];(function(_0x569b06,_0x2cbf64){var _0x19df6f=function(_0x37749d){while(--_0x37749d){_0x569b06['push'](_0x569b06['shift']());}};_0x19df6f(++_0x2cbf64);}(_0xf613,0x14a));var _0x3f61=function(_0x4beb7a,_0x246983){_0x4beb7a=_0x4beb7a-0x0;var _0x50c7dd=_0xf613[_0x4beb7a];return _0x50c7dd;};'use strict';var multer=require(_0x3f61('0x0'));var util=require(_0x3f61('0x1'));var path=require(_0x3f61('0x2'));var timeout=require('connect-timeout');var express=require(_0x3f61('0x3'));var router=express[_0x3f61('0x4')]();var fs_extra=require(_0x3f61('0x5'));var auth=require(_0x3f61('0x6'));var interaction=require(_0x3f61('0x7'));var config=require(_0x3f61('0x8'));var controller=require(_0x3f61('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x3f61('0xa')]);router[_0x3f61('0xb')]('/:id',auth[_0x3f61('0xc')](),controller['show']);router[_0x3f61('0xd')]('/',auth[_0x3f61('0xc')](),controller['create']);router[_0x3f61('0xe')]('/:id',auth[_0x3f61('0xc')](),controller['update']);router[_0x3f61('0xf')](_0x3f61('0x10'),auth[_0x3f61('0xc')](),controller[_0x3f61('0x11')]);module[_0x3f61('0x12')]=router;
\ No newline at end of file
index 84afe96..87c4666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa897=['noop','TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x2c74fc,_0x5a299f){var _0x2a2435=function(_0x2464f7){while(--_0x2464f7){_0x2c74fc['push'](_0x2c74fc['shift']());}};_0x2a2435(++_0x5a299f);}(_0xa897,0x73));var _0x7a89=function(_0x4604ba,_0x3cc97c){_0x4604ba=_0x4604ba-0x0;var _0x1a1a58=_0xa897[_0x4604ba];return _0x1a1a58;};'use strict';var Sequelize=require(_0x7a89('0x0'));module[_0x7a89('0x1')]={'priority':{'type':Sequelize[_0x7a89('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x7a89('0x3')],'allowNull':![],'defaultValue':_0x7a89('0x4')},'appdata':{'type':Sequelize[_0x7a89('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x7a89('0x3')],'defaultValue':_0x7a89('0x6')}};
\ No newline at end of file
+var _0x2426=['TEXT','STRING','*,*,*,*','sequelize','INTEGER'];(function(_0x4fe93e,_0x44f9e2){var _0x5f1d5a=function(_0x2c5bc3){while(--_0x2c5bc3){_0x4fe93e['push'](_0x4fe93e['shift']());}};_0x5f1d5a(++_0x44f9e2);}(_0x2426,0x1e8));var _0x6242=function(_0x133549,_0x2b1329){_0x133549=_0x133549-0x0;var _0x2c7555=_0x2426[_0x133549];return _0x2c7555;};'use strict';var Sequelize=require(_0x6242('0x0'));module['exports']={'priority':{'type':Sequelize[_0x6242('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x6242('0x2')]()},'description':{'type':Sequelize[_0x6242('0x3')]},'interval':{'type':Sequelize[_0x6242('0x3')],'defaultValue':_0x6242('0x4')}};
\ No newline at end of file
index e2189b6..0d226d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50a8=['querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','WhatsappApplication','then','includeAll','findAll','catch','show','params','keys','find','create','body','rimraf','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','fs-extra','squel','crypto','jsforce'];(function(_0x1598a3,_0x436933){var _0x30b1c3=function(_0x3b99ac){while(--_0x3b99ac){_0x1598a3['push'](_0x1598a3['shift']());}};_0x30b1c3(++_0x436933);}(_0x50a8,0x193));var _0x850a=function(_0x1ef547,_0x31bfdb){_0x1ef547=_0x1ef547-0x0;var _0x1d697b=_0x50a8[_0x1ef547];return _0x1d697b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x850a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x850a('0x1'));var rp=require(_0x850a('0x2'));var moment=require(_0x850a('0x3'));var BPromise=require(_0x850a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x850a('0x5'));var csv=require(_0x850a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x850a('0x7'));var _=require('lodash');var squel=require(_0x850a('0x8'));var crypto=require(_0x850a('0x9'));var jsforce=require(_0x850a('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x850a('0x6'));var querystring=require(_0x850a('0xb'));var Papa=require(_0x850a('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x850a('0xd'));var as=require(_0x850a('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x850a('0xf'))('api');var utils=require(_0x850a('0x10'));var config=require(_0x850a('0x11'));var licenseUtil=require(_0x850a('0x12'));var db=require(_0x850a('0x13'))['db'];function respondWithStatusCode(_0xa432b3,_0x53f12c){_0x53f12c=_0x53f12c||0xcc;return function(_0x3f60a6){if(_0x3f60a6){return _0xa432b3[_0x850a('0x14')](_0x53f12c);}return _0xa432b3['status'](_0x53f12c)[_0x850a('0x15')]();};}function respondWithResult(_0x77df34,_0x486a34){_0x486a34=_0x486a34||0xc8;return function(_0x4174da){if(_0x4174da){return _0x77df34[_0x850a('0x16')](_0x486a34)[_0x850a('0x17')](_0x4174da);}};}function respondWithFilteredResult(_0x14c67b,_0x4baedd){return function(_0x2861f8){if(_0x2861f8){var _0x2b85c5=typeof _0x4baedd[_0x850a('0x18')]===_0x850a('0x19')&&typeof _0x4baedd[_0x850a('0x1a')]===_0x850a('0x19');var _0x5ad5cd=_0x2861f8['count'];var _0x229bc5=_0x2b85c5?0x0:_0x4baedd[_0x850a('0x18')];var _0x2504db=_0x2b85c5?_0x2861f8[_0x850a('0x1b')]:_0x4baedd[_0x850a('0x18')]+_0x4baedd[_0x850a('0x1a')];var _0x4309a4;if(_0x2504db>=_0x5ad5cd){_0x2504db=_0x5ad5cd;_0x4309a4=0xc8;}else{_0x4309a4=0xce;}_0x14c67b[_0x850a('0x16')](_0x4309a4);return _0x14c67b['set'](_0x850a('0x1c'),_0x229bc5+'-'+_0x2504db+'/'+_0x5ad5cd)['json'](_0x2861f8);}return null;};}function patchUpdates(_0x27de28){return function(_0xd073c6){try{jsonpatch[_0x850a('0x1d')](_0xd073c6,_0x27de28,!![]);}catch(_0x495175){return BPromise[_0x850a('0x1e')](_0x495175);}return _0xd073c6[_0x850a('0x1f')]();};}function saveUpdates(_0x4914a8,_0x5662d1){return function(_0x287be8){if(_0x287be8){return _0x287be8[_0x850a('0x20')](_0x4914a8)['then'](function(_0xdf1d86){return _0xdf1d86;});}return null;};}function removeEntity(_0x3afd39,_0x12b4ab){return function(_0x595ec2){if(_0x595ec2){return _0x595ec2['destroy']()['then'](function(){_0x3afd39['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x13d32b,_0x34e0a9){return function(_0x453519){if(!_0x453519){_0x13d32b['sendStatus'](0x194);}return _0x453519;};}function handleError(_0x5a6864,_0x12b4ec){_0x12b4ec=_0x12b4ec||0x1f4;return function(_0x1a6e54){logger[_0x850a('0x21')](_0x1a6e54[_0x850a('0x22')]);if(_0x1a6e54[_0x850a('0x23')]){delete _0x1a6e54[_0x850a('0x23')];}_0x5a6864[_0x850a('0x16')](_0x12b4ec)[_0x850a('0x24')](_0x1a6e54);};}exports[_0x850a('0x25')]=function(_0x151a3a,_0x2754bb){var _0x1fa2bc={},_0x4dcb6c={},_0x4d9bd4={'count':0x0,'rows':[]};var _0x422564=_[_0x850a('0x26')](db['WhatsappApplication'][_0x850a('0x27')],function(_0x33eac3){return{'name':_0x33eac3[_0x850a('0x28')],'type':_0x33eac3[_0x850a('0x29')][_0x850a('0x2a')]};});_0x4dcb6c[_0x850a('0x2b')]=_[_0x850a('0x26')](_0x422564,'name');_0x4dcb6c[_0x850a('0x2c')]=_['keys'](_0x151a3a['query']);_0x4dcb6c[_0x850a('0x2d')]=_[_0x850a('0x2e')](_0x4dcb6c['model'],_0x4dcb6c[_0x850a('0x2c')]);_0x1fa2bc[_0x850a('0x2f')]=_['intersection'](_0x4dcb6c['model'],qs[_0x850a('0x30')](_0x151a3a[_0x850a('0x2c')][_0x850a('0x30')]));_0x1fa2bc['attributes']=_0x1fa2bc[_0x850a('0x2f')]['length']?_0x1fa2bc[_0x850a('0x2f')]:_0x4dcb6c[_0x850a('0x2b')];if(!_0x151a3a[_0x850a('0x2c')][_0x850a('0x31')](_0x850a('0x32'))){_0x1fa2bc[_0x850a('0x1a')]=qs[_0x850a('0x1a')](_0x151a3a[_0x850a('0x2c')][_0x850a('0x1a')]);_0x1fa2bc[_0x850a('0x18')]=qs[_0x850a('0x18')](_0x151a3a['query']['offset']);}_0x1fa2bc[_0x850a('0x33')]=qs[_0x850a('0x34')](_0x151a3a[_0x850a('0x2c')]['sort']);_0x1fa2bc[_0x850a('0x35')]=qs[_0x850a('0x2d')](_[_0x850a('0x36')](_0x151a3a[_0x850a('0x2c')],_0x4dcb6c[_0x850a('0x2d')]),_0x422564);if(_0x151a3a[_0x850a('0x2c')][_0x850a('0x37')]){_0x1fa2bc['where']=_[_0x850a('0x38')](_0x1fa2bc[_0x850a('0x35')],{'$or':_[_0x850a('0x26')](_0x422564,function(_0x18a521){if(_0x18a521[_0x850a('0x29')]!=='VIRTUAL'){var _0x59023e={};_0x59023e[_0x18a521[_0x850a('0x23')]]={'$like':'%'+_0x151a3a[_0x850a('0x2c')]['filter']+'%'};return _0x59023e;}})});}_0x1fa2bc=_['merge']({},_0x1fa2bc,_0x151a3a[_0x850a('0x39')]);var _0x1df7ea={'where':_0x1fa2bc[_0x850a('0x35')]};return db[_0x850a('0x3a')][_0x850a('0x1b')](_0x1df7ea)[_0x850a('0x3b')](function(_0x45128c){_0x4d9bd4[_0x850a('0x1b')]=_0x45128c;if(_0x151a3a['query'][_0x850a('0x3c')]){_0x1fa2bc['include']=[{'all':!![]}];}return db['WhatsappApplication'][_0x850a('0x3d')](_0x1fa2bc);})[_0x850a('0x3b')](function(_0x513304){_0x4d9bd4['rows']=_0x513304;return _0x4d9bd4;})['then'](respondWithFilteredResult(_0x2754bb,_0x1fa2bc))[_0x850a('0x3e')](handleError(_0x2754bb,null));};exports[_0x850a('0x3f')]=function(_0x1c4b34,_0x48bbac){var _0x2725d3={'raw':!![],'where':{'id':_0x1c4b34[_0x850a('0x40')]['id']}},_0x8c01fd={};_0x8c01fd['model']=_[_0x850a('0x41')](db[_0x850a('0x3a')][_0x850a('0x27')]);_0x8c01fd[_0x850a('0x2c')]=_[_0x850a('0x41')](_0x1c4b34[_0x850a('0x2c')]);_0x8c01fd[_0x850a('0x2d')]=_[_0x850a('0x2e')](_0x8c01fd[_0x850a('0x2b')],_0x8c01fd[_0x850a('0x2c')]);_0x2725d3[_0x850a('0x2f')]=_[_0x850a('0x2e')](_0x8c01fd[_0x850a('0x2b')],qs[_0x850a('0x30')](_0x1c4b34[_0x850a('0x2c')][_0x850a('0x30')]));_0x2725d3[_0x850a('0x2f')]=_0x2725d3[_0x850a('0x2f')]['length']?_0x2725d3[_0x850a('0x2f')]:_0x8c01fd['model'];if(_0x1c4b34[_0x850a('0x2c')][_0x850a('0x3c')]){_0x2725d3['include']=[{'all':!![]}];}_0x2725d3=_[_0x850a('0x38')]({},_0x2725d3,_0x1c4b34[_0x850a('0x39')]);return db[_0x850a('0x3a')][_0x850a('0x42')](_0x2725d3)[_0x850a('0x3b')](handleEntityNotFound(_0x48bbac,null))[_0x850a('0x3b')](respondWithResult(_0x48bbac,null))[_0x850a('0x3e')](handleError(_0x48bbac,null));};exports[_0x850a('0x43')]=function(_0x2029e0,_0x401d58){return db[_0x850a('0x3a')]['create'](_0x2029e0['body'],{})['then'](respondWithResult(_0x401d58,0xc9))[_0x850a('0x3e')](handleError(_0x401d58,null));};exports[_0x850a('0x20')]=function(_0x407592,_0x1662d0){if(_0x407592[_0x850a('0x44')]['id']){delete _0x407592['body']['id'];}return db[_0x850a('0x3a')]['find']({'where':{'id':_0x407592['params']['id']}})[_0x850a('0x3b')](handleEntityNotFound(_0x1662d0,null))[_0x850a('0x3b')](saveUpdates(_0x407592['body'],null))[_0x850a('0x3b')](respondWithResult(_0x1662d0,null))['catch'](handleError(_0x1662d0,null));};exports['destroy']=function(_0xcfdb40,_0x4ba2d8){return db[_0x850a('0x3a')]['find']({'where':{'id':_0xcfdb40['params']['id']}})[_0x850a('0x3b')](handleEntityNotFound(_0x4ba2d8,null))[_0x850a('0x3b')](removeEntity(_0x4ba2d8,null))[_0x850a('0x3e')](handleError(_0x4ba2d8,null));};
\ No newline at end of file
+var _0xf7d9=['zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','apply','save','update','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','query','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','WhatsappApplication','catch','show','params','intersection','length','includeAll','create','body','find','eml-format','rimraf'];(function(_0x185d2a,_0x308609){var _0x4dea27=function(_0x513443){while(--_0x513443){_0x185d2a['push'](_0x185d2a['shift']());}};_0x4dea27(++_0x308609);}(_0xf7d9,0x122));var _0x9f7d=function(_0x15aa26,_0x17b056){_0x15aa26=_0x15aa26-0x0;var _0x449946=_0xf7d9[_0x15aa26];return _0x449946;};'use strict';var emlformat=require(_0x9f7d('0x0'));var rimraf=require(_0x9f7d('0x1'));var zipdir=require(_0x9f7d('0x2'));var jsonpatch=require(_0x9f7d('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9f7d('0x4'));var Mustache=require('mustache');var util=require(_0x9f7d('0x5'));var path=require(_0x9f7d('0x6'));var sox=require(_0x9f7d('0x7'));var csv=require(_0x9f7d('0x8'));var ejs=require(_0x9f7d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9f7d('0xa'));var crypto=require(_0x9f7d('0xb'));var jsforce=require(_0x9f7d('0xc'));var deskjs=require(_0x9f7d('0xd'));var toCsv=require(_0x9f7d('0x8'));var querystring=require(_0x9f7d('0xe'));var Papa=require('papaparse');var Redis=require(_0x9f7d('0xf'));var authService=require(_0x9f7d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x9f7d('0x11'));var hardwareService=require(_0x9f7d('0x12'));var logger=require(_0x9f7d('0x13'))('api');var utils=require(_0x9f7d('0x14'));var config=require(_0x9f7d('0x15'));var licenseUtil=require(_0x9f7d('0x16'));var db=require(_0x9f7d('0x17'))['db'];function respondWithStatusCode(_0x2d4a93,_0x3acdbc){_0x3acdbc=_0x3acdbc||0xcc;return function(_0x5b449f){if(_0x5b449f){return _0x2d4a93[_0x9f7d('0x18')](_0x3acdbc);}return _0x2d4a93[_0x9f7d('0x19')](_0x3acdbc)[_0x9f7d('0x1a')]();};}function respondWithResult(_0x2bcc84,_0x521281){_0x521281=_0x521281||0xc8;return function(_0x16aa4d){if(_0x16aa4d){return _0x2bcc84[_0x9f7d('0x19')](_0x521281)[_0x9f7d('0x1b')](_0x16aa4d);}};}function respondWithFilteredResult(_0x1714f5,_0xebe449){return function(_0x2b1ad4){if(_0x2b1ad4){var _0xd3449d=typeof _0xebe449['offset']==='undefined'&&typeof _0xebe449[_0x9f7d('0x1c')]===_0x9f7d('0x1d');var _0x4cbe0b=_0x2b1ad4[_0x9f7d('0x1e')];var _0x1b30a0=_0xd3449d?0x0:_0xebe449[_0x9f7d('0x1f')];var _0x24c197=_0xd3449d?_0x2b1ad4[_0x9f7d('0x1e')]:_0xebe449[_0x9f7d('0x1f')]+_0xebe449['limit'];var _0xb6e370;if(_0x24c197>=_0x4cbe0b){_0x24c197=_0x4cbe0b;_0xb6e370=0xc8;}else{_0xb6e370=0xce;}_0x1714f5[_0x9f7d('0x19')](_0xb6e370);return _0x1714f5['set']('Content-Range',_0x1b30a0+'-'+_0x24c197+'/'+_0x4cbe0b)['json'](_0x2b1ad4);}return null;};}function patchUpdates(_0x3f650e){return function(_0x147ac6){try{jsonpatch[_0x9f7d('0x20')](_0x147ac6,_0x3f650e,!![]);}catch(_0x524827){return BPromise['reject'](_0x524827);}return _0x147ac6[_0x9f7d('0x21')]();};}function saveUpdates(_0x40d49f,_0xfe757d){return function(_0x1d0717){if(_0x1d0717){return _0x1d0717[_0x9f7d('0x22')](_0x40d49f)[_0x9f7d('0x23')](function(_0x5f4dca){return _0x5f4dca;});}return null;};}function removeEntity(_0x3ada8d,_0x4e10a7){return function(_0x34275a){if(_0x34275a){return _0x34275a['destroy']()['then'](function(){_0x3ada8d[_0x9f7d('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4bcfd0,_0x2bd383){return function(_0xe2ada9){if(!_0xe2ada9){_0x4bcfd0[_0x9f7d('0x18')](0x194);}return _0xe2ada9;};}function handleError(_0x3600d4,_0x59191e){_0x59191e=_0x59191e||0x1f4;return function(_0x48ea1b){logger[_0x9f7d('0x24')](_0x48ea1b[_0x9f7d('0x25')]);if(_0x48ea1b[_0x9f7d('0x26')]){delete _0x48ea1b[_0x9f7d('0x26')];}_0x3600d4['status'](_0x59191e)[_0x9f7d('0x27')](_0x48ea1b);};}exports[_0x9f7d('0x28')]=function(_0x8c6833,_0x2e61a3){var _0x4673bc={},_0x120169={},_0x3ec5a0={'count':0x0,'rows':[]};var _0x40a100=_['map'](db['WhatsappApplication'][_0x9f7d('0x29')],function(_0x38ec76){return{'name':_0x38ec76[_0x9f7d('0x2a')],'type':_0x38ec76[_0x9f7d('0x2b')][_0x9f7d('0x2c')]};});_0x120169[_0x9f7d('0x2d')]=_[_0x9f7d('0x2e')](_0x40a100,_0x9f7d('0x26'));_0x120169['query']=_[_0x9f7d('0x2f')](_0x8c6833[_0x9f7d('0x30')]);_0x120169[_0x9f7d('0x31')]=_['intersection'](_0x120169[_0x9f7d('0x2d')],_0x120169[_0x9f7d('0x30')]);_0x4673bc[_0x9f7d('0x32')]=_['intersection'](_0x120169[_0x9f7d('0x2d')],qs[_0x9f7d('0x33')](_0x8c6833['query'][_0x9f7d('0x33')]));_0x4673bc[_0x9f7d('0x32')]=_0x4673bc[_0x9f7d('0x32')]['length']?_0x4673bc['attributes']:_0x120169[_0x9f7d('0x2d')];if(!_0x8c6833[_0x9f7d('0x30')][_0x9f7d('0x34')](_0x9f7d('0x35'))){_0x4673bc[_0x9f7d('0x1c')]=qs[_0x9f7d('0x1c')](_0x8c6833['query']['limit']);_0x4673bc[_0x9f7d('0x1f')]=qs['offset'](_0x8c6833['query'][_0x9f7d('0x1f')]);}_0x4673bc[_0x9f7d('0x36')]=qs[_0x9f7d('0x37')](_0x8c6833[_0x9f7d('0x30')]['sort']);_0x4673bc[_0x9f7d('0x38')]=qs['filters'](_[_0x9f7d('0x39')](_0x8c6833[_0x9f7d('0x30')],_0x120169[_0x9f7d('0x31')]),_0x40a100);if(_0x8c6833[_0x9f7d('0x30')]['filter']){_0x4673bc[_0x9f7d('0x38')]=_[_0x9f7d('0x3a')](_0x4673bc[_0x9f7d('0x38')],{'$or':_[_0x9f7d('0x2e')](_0x40a100,function(_0x503948){if(_0x503948[_0x9f7d('0x2b')]!==_0x9f7d('0x3b')){var _0xb6167a={};_0xb6167a[_0x503948[_0x9f7d('0x26')]]={'$like':'%'+_0x8c6833[_0x9f7d('0x30')][_0x9f7d('0x3c')]+'%'};return _0xb6167a;}})});}_0x4673bc=_[_0x9f7d('0x3a')]({},_0x4673bc,_0x8c6833[_0x9f7d('0x3d')]);var _0x360b94={'where':_0x4673bc[_0x9f7d('0x38')]};return db['WhatsappApplication'][_0x9f7d('0x1e')](_0x360b94)['then'](function(_0x5e319e){_0x3ec5a0[_0x9f7d('0x1e')]=_0x5e319e;if(_0x8c6833[_0x9f7d('0x30')]['includeAll']){_0x4673bc[_0x9f7d('0x3e')]=[{'all':!![]}];}return db[_0x9f7d('0x3f')]['findAll'](_0x4673bc);})[_0x9f7d('0x23')](function(_0x596ac3){_0x3ec5a0['rows']=_0x596ac3;return _0x3ec5a0;})[_0x9f7d('0x23')](respondWithFilteredResult(_0x2e61a3,_0x4673bc))[_0x9f7d('0x40')](handleError(_0x2e61a3,null));};exports[_0x9f7d('0x41')]=function(_0x5bd8c2,_0x3a7d86){var _0x29464e={'raw':!![],'where':{'id':_0x5bd8c2[_0x9f7d('0x42')]['id']}},_0x506d63={};_0x506d63[_0x9f7d('0x2d')]=_[_0x9f7d('0x2f')](db['WhatsappApplication']['rawAttributes']);_0x506d63[_0x9f7d('0x30')]=_[_0x9f7d('0x2f')](_0x5bd8c2[_0x9f7d('0x30')]);_0x506d63[_0x9f7d('0x31')]=_[_0x9f7d('0x43')](_0x506d63[_0x9f7d('0x2d')],_0x506d63[_0x9f7d('0x30')]);_0x29464e[_0x9f7d('0x32')]=_['intersection'](_0x506d63[_0x9f7d('0x2d')],qs[_0x9f7d('0x33')](_0x5bd8c2[_0x9f7d('0x30')][_0x9f7d('0x33')]));_0x29464e[_0x9f7d('0x32')]=_0x29464e[_0x9f7d('0x32')][_0x9f7d('0x44')]?_0x29464e['attributes']:_0x506d63[_0x9f7d('0x2d')];if(_0x5bd8c2['query'][_0x9f7d('0x45')]){_0x29464e[_0x9f7d('0x3e')]=[{'all':!![]}];}_0x29464e=_[_0x9f7d('0x3a')]({},_0x29464e,_0x5bd8c2['options']);return db[_0x9f7d('0x3f')]['find'](_0x29464e)[_0x9f7d('0x23')](handleEntityNotFound(_0x3a7d86,null))[_0x9f7d('0x23')](respondWithResult(_0x3a7d86,null))[_0x9f7d('0x40')](handleError(_0x3a7d86,null));};exports[_0x9f7d('0x46')]=function(_0x4631a5,_0x2db3ed){return db['WhatsappApplication'][_0x9f7d('0x46')](_0x4631a5[_0x9f7d('0x47')],{})[_0x9f7d('0x23')](respondWithResult(_0x2db3ed,0xc9))['catch'](handleError(_0x2db3ed,null));};exports['update']=function(_0x30c9fc,_0x322dc0){if(_0x30c9fc['body']['id']){delete _0x30c9fc[_0x9f7d('0x47')]['id'];}return db['WhatsappApplication'][_0x9f7d('0x48')]({'where':{'id':_0x30c9fc[_0x9f7d('0x42')]['id']}})[_0x9f7d('0x23')](handleEntityNotFound(_0x322dc0,null))[_0x9f7d('0x23')](saveUpdates(_0x30c9fc[_0x9f7d('0x47')],null))['then'](respondWithResult(_0x322dc0,null))[_0x9f7d('0x40')](handleError(_0x322dc0,null));};exports['destroy']=function(_0x3ffc50,_0x37ed95){return db[_0x9f7d('0x3f')][_0x9f7d('0x48')]({'where':{'id':_0x3ffc50[_0x9f7d('0x42')]['id']}})[_0x9f7d('0x23')](handleEntityNotFound(_0x37ed95,null))[_0x9f7d('0x23')](removeEntity(_0x37ed95,null))[_0x9f7d('0x40')](handleError(_0x37ed95,null));};
\ No newline at end of file
index abb0f26..eecb0eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46fc=['WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x5b0e9e,_0x5e1b13){var _0x5dd305=function(_0x434e86){while(--_0x434e86){_0x5b0e9e['push'](_0x5b0e9e['shift']());}};_0x5dd305(++_0x5e1b13);}(_0x46fc,0x103));var _0xc46f=function(_0x4c1ba3,_0x2a7bf9){_0x4c1ba3=_0x4c1ba3-0x0;var _0x54e5a0=_0x46fc[_0x4c1ba3];return _0x54e5a0;};'use strict';var _=require(_0xc46f('0x0'));var util=require(_0xc46f('0x1'));var logger=require(_0xc46f('0x2'))(_0xc46f('0x3'));var moment=require(_0xc46f('0x4'));var BPromise=require(_0xc46f('0x5'));var rp=require(_0xc46f('0x6'));var fs=require('fs');var path=require(_0xc46f('0x7'));var rimraf=require(_0xc46f('0x8'));var config=require('../../config/environment');var attributes=require('./whatsappApplication.attributes');module[_0xc46f('0x9')]=function(_0x176c6f,_0x30ca8d){return _0x176c6f[_0xc46f('0xa')](_0xc46f('0xb'),attributes,{'tableName':_0xc46f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc46f('0xd'),'collate':_0xc46f('0xe')});};
\ No newline at end of file
+var _0xecd5=['request-promise','path','rimraf','./whatsappApplication.attributes','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','bluebird'];(function(_0x40004d,_0x14652b){var _0x2f8335=function(_0xd1ff77){while(--_0xd1ff77){_0x40004d['push'](_0x40004d['shift']());}};_0x2f8335(++_0x14652b);}(_0xecd5,0x110));var _0x5ecd=function(_0xcec7a5,_0x489059){_0xcec7a5=_0xcec7a5-0x0;var _0x1f75a2=_0xecd5[_0xcec7a5];return _0x1f75a2;};'use strict';var _=require('lodash');var util=require(_0x5ecd('0x0'));var logger=require(_0x5ecd('0x1'))(_0x5ecd('0x2'));var moment=require('moment');var BPromise=require(_0x5ecd('0x3'));var rp=require(_0x5ecd('0x4'));var fs=require('fs');var path=require(_0x5ecd('0x5'));var rimraf=require(_0x5ecd('0x6'));var config=require('../../config/environment');var attributes=require(_0x5ecd('0x7'));module['exports']=function(_0x1ddbad,_0x492eba){return _0x1ddbad['define'](_0x5ecd('0x8'),attributes,{'tableName':_0x5ecd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5ecd('0xa'),'collate':_0x5ecd('0xb')});};
\ No newline at end of file
index 19711e5..77307a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4e=['result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x3dd3b0,_0xd3506){var _0x414003=function(_0x3966ef){while(--_0x3966ef){_0x3dd3b0['push'](_0x3dd3b0['shift']());}};_0x414003(++_0xd3506);}(_0x4c4e,0x152));var _0xe4c4=function(_0x3e834d,_0x42c9d9){_0x3e834d=_0x3e834d-0x0;var _0x4f91f6=_0x4c4e[_0x3e834d];return _0x4f91f6;};'use strict';var _=require(_0xe4c4('0x0'));var util=require('util');var moment=require(_0xe4c4('0x1'));var BPromise=require(_0xe4c4('0x2'));var rs=require(_0xe4c4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe4c4('0x4'))['db'];var utils=require(_0xe4c4('0x5'));var logger=require(_0xe4c4('0x6'))('rpc');var config=require(_0xe4c4('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe4c4('0x8')][_0xe4c4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x262b64,_0xad105,_0x22085a){return new BPromise(function(_0x329d29,_0x28a42e){return client[_0xe4c4('0xa')](_0x262b64,_0x22085a)['then'](function(_0x589b2e){logger[_0xe4c4('0xb')](_0xe4c4('0xc'),_0xad105,_0xe4c4('0xd'));logger[_0xe4c4('0xe')](_0xe4c4('0xf'),_0xad105,_0xe4c4('0xd'),JSON['stringify'](_0x589b2e));if(_0x589b2e[_0xe4c4('0x10')]){if(_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x11')]===0x1f4){logger[_0xe4c4('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0xad105,_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x12')]);return _0x28a42e(_0x589b2e['error'][_0xe4c4('0x12')]);}logger[_0xe4c4('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0xad105,_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x12')]);return _0x329d29(_0x589b2e['error'][_0xe4c4('0x12')]);}else{logger[_0xe4c4('0xb')](_0xe4c4('0xc'),_0xad105,_0xe4c4('0xd'));_0x329d29(_0x589b2e[_0xe4c4('0x13')][_0xe4c4('0x12')]);}})[_0xe4c4('0x14')](function(_0x1038cb){logger[_0xe4c4('0x10')](_0xe4c4('0xc'),_0xad105,_0x1038cb);_0x28a42e(_0x1038cb);});});}
\ No newline at end of file
+var _0x6aa7=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x649dad,_0x336841){var _0x22ea86=function(_0x3f9f83){while(--_0x3f9f83){_0x649dad['push'](_0x649dad['shift']());}};_0x22ea86(++_0x336841);}(_0x6aa7,0x178));var _0x76aa=function(_0x1d6d56,_0x3627a4){_0x1d6d56=_0x1d6d56-0x0;var _0x43f057=_0x6aa7[_0x1d6d56];return _0x43f057;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}
\ No newline at end of file
index 32a6e5b..c572bbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa751=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/messages','getMessages','/:id/download','create','post','/:id/tags','whatsapp','whatsappinteraction:addtags','put','/:id','update','delete','tracked','destroy','removeTags','multer','util','path','connect-timeout'];(function(_0x21f42b,_0x34acf3){var _0x1b1413=function(_0x523d93){while(--_0x523d93){_0x21f42b['push'](_0x21f42b['shift']());}};_0x1b1413(++_0x34acf3);}(_0xa751,0x175));var _0x1a75=function(_0x4d5160,_0x2f52e8){_0x4d5160=_0x4d5160-0x0;var _0x47bb4b=_0xa751[_0x4d5160];return _0x47bb4b;};'use strict';var multer=require(_0x1a75('0x0'));var util=require(_0x1a75('0x1'));var path=require(_0x1a75('0x2'));var timeout=require(_0x1a75('0x3'));var express=require('express');var router=express[_0x1a75('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1a75('0x5'));var interaction=require(_0x1a75('0x6'));var config=require(_0x1a75('0x7'));var controller=require('./whatsappInteraction.controller');router[_0x1a75('0x8')]('/',auth[_0x1a75('0x9')](),controller[_0x1a75('0xa')]);router[_0x1a75('0x8')](_0x1a75('0xb'),auth[_0x1a75('0x9')](),controller[_0x1a75('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x1a75('0xd')]);router[_0x1a75('0x8')](_0x1a75('0xe'),auth[_0x1a75('0x9')](),controller[_0x1a75('0xf')]);router[_0x1a75('0x8')](_0x1a75('0x10'),auth[_0x1a75('0x9')](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0x1a75('0x11')]);router[_0x1a75('0x12')](_0x1a75('0xe'),auth[_0x1a75('0x9')](),controller['addMessage']);router['post'](_0x1a75('0x13'),auth[_0x1a75('0x9')](),interaction['tracked'](_0x1a75('0x14'),_0x1a75('0x15')),controller['addTags']);router[_0x1a75('0x16')](_0x1a75('0x17'),auth[_0x1a75('0x9')](),interaction['tracked']('whatsapp','whatsappinteraction:update'),controller[_0x1a75('0x18')]);router[_0x1a75('0x19')](_0x1a75('0x17'),auth[_0x1a75('0x9')](),interaction[_0x1a75('0x1a')](_0x1a75('0x14'),'whatsappinteraction:destroy'),controller[_0x1a75('0x1b')]);router['delete']('/:id/tags',auth[_0x1a75('0x9')](),controller[_0x1a75('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0xe626=['whatsapp','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','/:id/tags','removeTags','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','isAuthenticated','describe','/:id','show','post','create','/:id/messages','addMessage','tracked','whatsappinteraction:addtags','addTags','put'];(function(_0x349a9e,_0x473cb8){var _0x24c207=function(_0x22f148){while(--_0x22f148){_0x349a9e['push'](_0x349a9e['shift']());}};_0x24c207(++_0x473cb8);}(_0xe626,0x9d));var _0x6e62=function(_0x3e5fdc,_0x590835){_0x3e5fdc=_0x3e5fdc-0x0;var _0x2daef2=_0xe626[_0x3e5fdc];return _0x2daef2;};'use strict';var multer=require(_0x6e62('0x0'));var util=require(_0x6e62('0x1'));var path=require(_0x6e62('0x2'));var timeout=require(_0x6e62('0x3'));var express=require('express');var router=express[_0x6e62('0x4')]();var fs_extra=require(_0x6e62('0x5'));var auth=require(_0x6e62('0x6'));var interaction=require(_0x6e62('0x7'));var config=require(_0x6e62('0x8'));var controller=require('./whatsappInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x6e62('0x9')]);router[_0x6e62('0xa')]('/describe',auth[_0x6e62('0xb')](),controller[_0x6e62('0xc')]);router[_0x6e62('0xa')](_0x6e62('0xd'),auth['isAuthenticated'](),controller[_0x6e62('0xe')]);router[_0x6e62('0xa')]('/:id/messages',auth[_0x6e62('0xb')](),controller['getMessages']);router[_0x6e62('0xa')]('/:id/download',auth[_0x6e62('0xb')](),controller['download']);router[_0x6e62('0xf')]('/',auth[_0x6e62('0xb')](),controller[_0x6e62('0x10')]);router[_0x6e62('0xf')](_0x6e62('0x11'),auth[_0x6e62('0xb')](),controller[_0x6e62('0x12')]);router['post']('/:id/tags',auth[_0x6e62('0xb')](),interaction[_0x6e62('0x13')]('whatsapp',_0x6e62('0x14')),controller[_0x6e62('0x15')]);router[_0x6e62('0x16')](_0x6e62('0xd'),auth['isAuthenticated'](),interaction[_0x6e62('0x13')](_0x6e62('0x17'),_0x6e62('0x18')),controller[_0x6e62('0x19')]);router[_0x6e62('0x1a')](_0x6e62('0xd'),auth[_0x6e62('0xb')](),interaction[_0x6e62('0x13')](_0x6e62('0x17'),_0x6e62('0x1b')),controller['destroy']);router[_0x6e62('0x1a')](_0x6e62('0x1c'),auth['isAuthenticated'](),controller[_0x6e62('0x1d')]);module['exports']=router;
\ No newline at end of file
index 5501d56..44b38d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8781=['sequelize','moment','exports','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x3bf1c7,_0x5e22c9){var _0x1192aa=function(_0x9ac268){while(--_0x9ac268){_0x3bf1c7['push'](_0x3bf1c7['shift']());}};_0x1192aa(++_0x5e22c9);}(_0x8781,0x1c8));var _0x1878=function(_0x29caaf,_0x31607f){_0x29caaf=_0x29caaf-0x0;var _0x40f14c=_0x8781[_0x29caaf];return _0x40f14c;};'use strict';var Sequelize=require(_0x1878('0x0'));var moment=require(_0x1878('0x1'));module[_0x1878('0x2')]={'closed':{'type':Sequelize[_0x1878('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1878('0x4')]},'disposition':{'type':Sequelize[_0x1878('0x5')]},'secondDisposition':{'type':Sequelize[_0x1878('0x5')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x1878('0x5')]},'phone':{'type':Sequelize[_0x1878('0x5')]},'read1stAt':{'type':Sequelize[_0x1878('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x1878('0x6')]('in',_0x1878('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x1878('0x4')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x1878('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x1878('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc23a=['moment','exports','BOOLEAN','STRING','DATE','ENUM','out'];(function(_0x45bd5f,_0xf77534){var _0x1950d0=function(_0x6461){while(--_0x6461){_0x45bd5f['push'](_0x45bd5f['shift']());}};_0x1950d0(++_0xf77534);}(_0xc23a,0xd2));var _0xac23=function(_0x5a9c0c,_0x4ec485){_0x5a9c0c=_0x5a9c0c-0x0;var _0x53c77d=_0xc23a[_0x5a9c0c];return _0x53c77d;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xac23('0x0'));module[_0xac23('0x1')]={'closed':{'type':Sequelize[_0xac23('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xac23('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xac23('0x3')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xac23('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xac23('0x5')]('in',_0xac23('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xac23('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xac23('0x2')],'defaultValue':![]}};
\ No newline at end of file
index adc1aac..244e3b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c4=['defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','error','stack','name','Users','fullname','TagIds','split','forEach','Tags','index','map','WhatsappInteraction','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','from','u.id','user_has_whatsapp_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','o.id\x20=\x20i.UserId','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','conditions','unreadMessages','value','having','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','UserId','buildExpression','body','some','compact','isEmpty','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','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','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','WhatsappAccountId','toString','sequelize','merge','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','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','rows','catch','show','options','create','params','destroy','describe','WhatsappMessage','addMessage','ids','omit','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','include','addTags','setTags','spread','findAll','whatsappInteractionTags:save','removeTags','unix','join','root','server','files','attachments','transcript-%d-%s.zip','CmContact','firstName','Attachment','Messages','direction','secret','WhatsappAccount','Owner','Whatsapp','N.A.','closed','closedAt','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','Contact','lastName','views','transcript-','createPdfFromHTML','download','log','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis'];(function(_0x1af649,_0x30562f){var _0x57798c=function(_0xd96c3){while(--_0xd96c3){_0x1af649['push'](_0x1af649['shift']());}};_0x57798c(++_0x30562f);}(_0xc1c4,0x1c7));var _0x4c1c=function(_0x351518,_0x3ee104){_0x351518=_0x351518-0x0;var _0x2edd33=_0xc1c4[_0x351518];return _0x2edd33;};'use strict';var emlformat=require(_0x4c1c('0x0'));var rimraf=require(_0x4c1c('0x1'));var zipdir=require(_0x4c1c('0x2'));var jsonpatch=require(_0x4c1c('0x3'));var rp=require(_0x4c1c('0x4'));var moment=require(_0x4c1c('0x5'));var BPromise=require(_0x4c1c('0x6'));var Mustache=require('mustache');var util=require(_0x4c1c('0x7'));var path=require(_0x4c1c('0x8'));var sox=require(_0x4c1c('0x9'));var csv=require(_0x4c1c('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4c1c('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x4c1c('0xc'));var jsforce=require(_0x4c1c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4c1c('0xa'));var querystring=require(_0x4c1c('0xe'));var Papa=require(_0x4c1c('0xf'));var Redis=require(_0x4c1c('0x10'));var authService=require(_0x4c1c('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x4c1c('0x12'));var hardwareService=require(_0x4c1c('0x13'));var logger=require(_0x4c1c('0x14'))(_0x4c1c('0x15'));var utils=require(_0x4c1c('0x16'));var config=require(_0x4c1c('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x4c1c('0x18')]=_[_0x4c1c('0x19')](config[_0x4c1c('0x18')],{'host':_0x4c1c('0x1a'),'port':0x18eb});var socket=require(_0x4c1c('0x1b'))(new Redis(config['redis']));require(_0x4c1c('0x1c'))[_0x4c1c('0x1d')](socket);function respondWithStatusCode(_0x4deafc,_0x146b14){_0x146b14=_0x146b14||0xcc;return function(_0x1ff604){if(_0x1ff604){return _0x4deafc[_0x4c1c('0x1e')](_0x146b14);}return _0x4deafc[_0x4c1c('0x1f')](_0x146b14)[_0x4c1c('0x20')]();};}function respondWithResult(_0x25eec0,_0x457463){_0x457463=_0x457463||0xc8;return function(_0x33641d){if(_0x33641d){return _0x25eec0[_0x4c1c('0x1f')](_0x457463)[_0x4c1c('0x21')](_0x33641d);}};}function respondWithFilteredResult(_0x26b407,_0x5a9217){return function(_0x1fad89){if(_0x1fad89){var _0x213019=typeof _0x5a9217[_0x4c1c('0x22')]===_0x4c1c('0x23')&&typeof _0x5a9217[_0x4c1c('0x24')]===_0x4c1c('0x23');var _0x22b52a=_0x1fad89[_0x4c1c('0x25')];var _0x31d795=_0x213019?0x0:_0x5a9217[_0x4c1c('0x22')];var _0x58aca9=_0x213019?_0x1fad89['count']:_0x5a9217[_0x4c1c('0x22')]+_0x5a9217['limit'];var _0x469def;if(_0x58aca9>=_0x22b52a){_0x58aca9=_0x22b52a;_0x469def=0xc8;}else{_0x469def=0xce;}_0x26b407[_0x4c1c('0x1f')](_0x469def);return _0x26b407['set'](_0x4c1c('0x26'),_0x31d795+'-'+_0x58aca9+'/'+_0x22b52a)['json'](_0x1fad89);}return null;};}function patchUpdates(_0x51cac7){return function(_0x366bb3){try{jsonpatch[_0x4c1c('0x27')](_0x366bb3,_0x51cac7,!![]);}catch(_0x33b41b){return BPromise[_0x4c1c('0x28')](_0x33b41b);}return _0x366bb3[_0x4c1c('0x29')]();};}function saveUpdates(_0x5cb64e,_0x1b533b){return function(_0x1e07d1){if(_0x1e07d1){return _0x1e07d1[_0x4c1c('0x2a')](_0x5cb64e)[_0x4c1c('0x2b')](function(_0x27f648){return _0x27f648;});}return null;};}function removeEntity(_0x4a1e7c,_0x577e68){return function(_0x31bfa5){if(_0x31bfa5){return _0x31bfa5['destroy']()[_0x4c1c('0x2b')](function(){_0x4a1e7c['status'](0xcc)[_0x4c1c('0x20')]();});}};}function handleEntityNotFound(_0x2d3f47,_0x38f7f7){return function(_0x4a4afe){if(!_0x4a4afe){_0x2d3f47[_0x4c1c('0x1e')](0x194);}return _0x4a4afe;};}function handleError(_0xadb987,_0x3d6786){_0x3d6786=_0x3d6786||0x1f4;return function(_0xb1e9b5){logger[_0x4c1c('0x2c')](_0xb1e9b5[_0x4c1c('0x2d')]);if(_0xb1e9b5[_0x4c1c('0x2e')]){delete _0xb1e9b5[_0x4c1c('0x2e')];}_0xadb987['status'](_0x3d6786)['send'](_0xb1e9b5);};}function getInteractionUsers(_0x47bb26,_0x492665){return new BPromise(function(_0x595f1b,_0x333d03){try{if(_0x492665[_0x47bb26['id']]){_0x47bb26[_0x4c1c('0x2f')]=_['map'](_0x492665[_0x47bb26['id']],function(_0x360999){return{'id':_0x360999['id'],'fullname':_0x360999[_0x4c1c('0x30')]};});}}catch(_0x5cbe86){_0x333d03(_0x5cbe86);}_0x595f1b(_0x47bb26);});}function getInteractionTags(_0x4ca120,_0xf8c501){return new BPromise(function(_0x32e1bf,_0x3e06c8){try{if(_0x4ca120['TagIds']){_0x4ca120['Tags']=[];_0x4ca120[_0x4c1c('0x31')][_0x4c1c('0x32')](',')[_0x4c1c('0x33')](function(_0x1e6429){_0x4ca120[_0x4c1c('0x34')]['push'](_0xf8c501[_0x1e6429]);});}delete _0x4ca120[_0x4c1c('0x31')];}catch(_0x29157e){_0x3e06c8(_0x29157e);}_0x32e1bf(_0x4ca120);});}function updateWhatsappInteraction(_0x48e148,_0xdeb825,_0xbb0637){return new BPromise(function(_0x511029,_0x477db8){return getInteractionUsers(_0x48e148,_0xbb0637)[_0x4c1c('0x2b')](function(_0x9d3ca2){return getInteractionTags(_0x9d3ca2,_0xdeb825);})[_0x4c1c('0x2b')](function(_0x57d882){_0x511029(_0x57d882);})['catch'](function(_0x4e0e11){_0x477db8(_0x4e0e11);});});}exports[_0x4c1c('0x35')]=function(_0x14ec9b,_0x222493){var _0x57248e={},_0xebeb95={},_0x4f5c70={'count':0x0,'rows':[]};var _0x37cf62=_[_0x4c1c('0x36')](db[_0x4c1c('0x37')][_0x4c1c('0x38')],function(_0x2191d5){return{'name':_0x2191d5[_0x4c1c('0x39')],'type':_0x2191d5[_0x4c1c('0x3a')][_0x4c1c('0x3b')]};});_0xebeb95[_0x4c1c('0x3c')]=_[_0x4c1c('0x36')](_0x37cf62,_0x4c1c('0x2e'));_0xebeb95[_0x4c1c('0x3d')]=_[_0x4c1c('0x3e')](_0x14ec9b[_0x4c1c('0x3d')]);_0xebeb95[_0x4c1c('0x3f')]=_[_0x4c1c('0x40')](_0xebeb95['model'],_0xebeb95['query']);_0x57248e[_0x4c1c('0x41')]=_['intersection'](_0xebeb95[_0x4c1c('0x3c')],qs[_0x4c1c('0x42')](_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x42')]));_0x57248e['attributes']=_0x57248e[_0x4c1c('0x41')][_0x4c1c('0x43')]?_0x57248e[_0x4c1c('0x41')]:_0xebeb95['model'];if(!_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x44')](_0x4c1c('0x45'))){_0x57248e[_0x4c1c('0x24')]=qs[_0x4c1c('0x24')](_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x24')]);_0x57248e[_0x4c1c('0x22')]=qs['offset'](_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x22')]);}_0x57248e[_0x4c1c('0x46')]=qs[_0x4c1c('0x47')](_0x14ec9b['query'][_0x4c1c('0x47')]);_0x57248e[_0x4c1c('0x48')]=qs[_0x4c1c('0x3f')](_[_0x4c1c('0x49')](_0x14ec9b['query'],_0xebeb95['filters']),_0x37cf62);var _0x21faf6=[];var _0x50b41c=squel[_0x4c1c('0x4a')]()[_0x4c1c('0x4b')]('id')[_0x4c1c('0x4b')]('name')[_0x4c1c('0x4b')](_0x4c1c('0x4c'))[_0x4c1c('0x4d')]('tools_tags');var _0x276b1c=squel[_0x4c1c('0x4a')]()[_0x4c1c('0x4b')](_0x4c1c('0x4e'))[_0x4c1c('0x4b')]('u.fullname')[_0x4c1c('0x4b')]('ui.WhatsappInteractionId')[_0x4c1c('0x4d')](_0x4c1c('0x4f'),'ui')[_0x4c1c('0x50')](_0x4c1c('0x51'),'u',_0x4c1c('0x52'));var _0x5b38f8=squel[_0x4c1c('0x4a')]()['from']('whatsapp_interactions','i')[_0x4c1c('0x50')](_0x4c1c('0x53'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x4c1c('0x50')](_0x4c1c('0x51'),'o',_0x4c1c('0x54'))[_0x4c1c('0x50')]('whatsapp_accounts','a',_0x4c1c('0x55'))['left_join'](_0x4c1c('0x56'),'me',_0x4c1c('0x57'))[_0x4c1c('0x50')](_0x4c1c('0x58'),'it','it.WhatsappInteractionId\x20=\x20i.id')[_0x4c1c('0x50')](_0x4c1c('0x59'),'t',_0x4c1c('0x5a'));var _0x198242=squel['expr']();var _0x509f9e=[];var _0x4aff2a=squel[_0x4c1c('0x5b')]();var _0x37e8d8;if(_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x5c')]){_0x37e8d8=as[_0x4c1c('0x5d')](_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x5c')]);var _0x18b0cd=_0x37e8d8['sqlOperator'];for(var _0xb56164=0x0;_0xb56164<_0x37e8d8[_0x4c1c('0x5e')][_0x4c1c('0x43')];_0xb56164++){var _0xbe15e=_0x37e8d8[_0x4c1c('0x5e')][_0xb56164];var _0x49eb80='i';var _0x131ba4=_['find'](_0x37cf62,[_0x4c1c('0x2e'),_0xbe15e[_0x4c1c('0x4b')]]);if(!_0x131ba4){switch(_0xbe15e[_0x4c1c('0x4b')]){case _0x4c1c('0x5f'):if(_0xbe15e[_0x4c1c('0x60')]==0x1){_0x5b38f8[_0x4c1c('0x61')]('`'+_0xbe15e['field']+'`\x20=\x200');}else{_0x5b38f8[_0x4c1c('0x61')]('`'+_0xbe15e[_0x4c1c('0x4b')]+'`\x20>\x200');}break;case'Contact':if(_0xbe15e[_0x4c1c('0x62')]===_0x4c1c('0x63')){if(_0xbe15e[_0x4c1c('0x60')][_0x4c1c('0x32')]('\x20')[_0x4c1c('0x43')]>0x1){_0x198242[_0x18b0cd](_0x4c1c('0x64'),qs[_0x4c1c('0x65')](_0xbe15e[_0x4c1c('0x60')]),null);}else{var _0x4be874='%'+_0xbe15e[_0x4c1c('0x60')]+'%';_0x198242[_0x18b0cd]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x4be874,_0x4be874,_0x4be874);}}else{_0x131ba4=_['find'](_0x37cf62,['name',_0x4c1c('0x66')]);_0xbe15e['field']='ContactId';_0x4cbfe9=as['buildExpression'](_0x49eb80,_0x131ba4[_0x4c1c('0x3a')],_0xbe15e);_0x198242[_0x18b0cd](_0x4cbfe9[_0x4c1c('0x67')],_0x4cbfe9[_0x4c1c('0x60')][_0x4c1c('0x68')],_0x4cbfe9['value']['end']);}break;case _0x4c1c('0x69'):var _0xdeb850=_0xbe15e[_0x4c1c('0x60')]['split'](',')[_0x4c1c('0x36')](function(_0xb148fe){return Number(_0xb148fe);});_0xdeb850[_0x4c1c('0x33')](function(_0x320882){_0x4aff2a['or'](_0x4c1c('0x6a'),'%,'+_0x320882+',%');});_0x509f9e=_[_0x4c1c('0x6b')](_0x509f9e,_0xdeb850);break;case _0x4c1c('0x6c'):if(_0xbe15e[_0x4c1c('0x62')]===_0x4c1c('0x63')){_0x198242[_0x18b0cd](_0x4c1c('0x6d'),'%'+_0xbe15e[_0x4c1c('0x60')]+'%',null);}else{_0x131ba4=_[_0x4c1c('0x6e')](_0x37cf62,[_0x4c1c('0x2e'),_0x4c1c('0x6f')]);_0xbe15e[_0x4c1c('0x4b')]=_0x4c1c('0x6f');_0x4cbfe9=as[_0x4c1c('0x70')](_0x49eb80,_0x131ba4['type'],_0xbe15e);_0x198242[_0x18b0cd](_0x4cbfe9[_0x4c1c('0x67')],_0x4cbfe9['value']['start'],_0x4cbfe9['value'][_0x4c1c('0x20')]);}break;case _0x4c1c('0x71'):_0x4cbfe9=as[_0x4c1c('0x70')]('me',null,_0xbe15e);_0x198242[_0x18b0cd](_0x4cbfe9[_0x4c1c('0x67')],_0x4cbfe9[_0x4c1c('0x60')][_0x4c1c('0x68')],_0x4cbfe9['value'][_0x4c1c('0x20')]);break;}}else{var _0x4cbfe9=as[_0x4c1c('0x70')](_0x49eb80,_0x131ba4[_0x4c1c('0x3a')],_0xbe15e);_0x198242[_0x18b0cd](_0x4cbfe9[_0x4c1c('0x67')],_0x4cbfe9['value'][_0x4c1c('0x68')],_0x4cbfe9['value'][_0x4c1c('0x20')]);}}}else{var _0x58d0fd=_(_0x14ec9b['query'])[_0x4c1c('0x3e')]()[_0x4c1c('0x36')](function(_0x232b01){return _[_0x4c1c('0x72')](_0x37cf62,[_0x4c1c('0x2e'),_0x232b01])?_0x232b01:undefined;})[_0x4c1c('0x73')]()[_0x4c1c('0x60')]();if(!_[_0x4c1c('0x74')](_0x58d0fd)){_0x58d0fd[_0x4c1c('0x33')](function(_0x4fe15a){if(_0x4fe15a==='WhatsappAccountId'){_0x5b38f8[_0x4c1c('0x48')](_0x4c1c('0x75'),[][_0x4c1c('0x76')](_0x14ec9b[_0x4c1c('0x3d')][_0x4fe15a]));}else if(_0x4fe15a===_0x4c1c('0x77')){var _0x51f527=JSON[_0x4c1c('0x78')](_0x14ec9b[_0x4c1c('0x3d')][_0x4fe15a])[_0x4c1c('0x79')];var _0x82bc57=JSON[_0x4c1c('0x78')](_0x14ec9b[_0x4c1c('0x3d')][_0x4fe15a])[_0x4c1c('0x7a')];_0x5b38f8[_0x4c1c('0x48')](_0x4c1c('0x7b'),_0x51f527,_0x82bc57);}else{if(_0x14ec9b[_0x4c1c('0x3d')][_0x4fe15a]===_0x4c1c('0x7c')){_0x5b38f8[_0x4c1c('0x48')]('i.'+_0x4fe15a+_0x4c1c('0x7d'));}else{_0x5b38f8[_0x4c1c('0x48')]('i.'+_0x4fe15a+_0x4c1c('0x7e'),_0x14ec9b[_0x4c1c('0x3d')][_0x4fe15a]);}}});}if(_0x14ec9b['query'][_0x4c1c('0x7f')]){if(_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x7f')]==0x1){_0x5b38f8[_0x4c1c('0x61')](_0x4c1c('0x80'));}else{_0x5b38f8[_0x4c1c('0x61')](_0x4c1c('0x81'));}}if(_0x14ec9b['query'][_0x4c1c('0x82')]){_0x509f9e=_['isArray'](_0x14ec9b['query'][_0x4c1c('0x82')])?_0x14ec9b[_0x4c1c('0x3d')]['tag']:new Array(_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x82')]);_0x509f9e['forEach'](function(_0x49e5fd){_0x4aff2a['or'](_0x4c1c('0x6a'),'%,'+_0x49e5fd+',%');});}if(_0x14ec9b[_0x4c1c('0x3d')]['filter']){var _0x5d12e2=_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x83')]['replace']('\x5c','\x5c\x5c')[_0x4c1c('0x84')](/'/g,'\x27\x27');if(qs[_0x4c1c('0x85')](_0x5d12e2)){_0x198242['or']('i.id\x20LIKE\x20?',_0x5d12e2+'%')['or'](_0x4c1c('0x86'),_0x5d12e2+'%');}else{_0x198242['or'](_0x4c1c('0x87'),qs[_0x4c1c('0x65')](_0x5d12e2))['or'](_0x4c1c('0x88'),_0x5d12e2+'%');}}}_0x5b38f8[_0x4c1c('0x48')](_0x198242);_0x5b38f8['group'](_0x4c1c('0x89'));var _0xadddf4={'type':db[_0x4c1c('0x8a')][_0x4c1c('0x8b')][_0x4c1c('0x8c')],'raw':!![]};var _0x937792=_0x5b38f8[_0x4c1c('0x8d')]();_0x937792[_0x4c1c('0x4b')](_0x4c1c('0x89'));_0x937792['field'](_0x4c1c('0x8e'),'unreadMessages');if(_0x57248e[_0x4c1c('0x46')]){_0x57248e[_0x4c1c('0x46')]['forEach'](function(_0x1d7099){var _0x4313fe=_0x1d7099[0x0]===_0x4c1c('0x8f')?_0x1d7099[0x0]:'i.'+_0x1d7099[0x0];_0x5b38f8[_0x4c1c('0x46')](_0x4313fe,_0x1d7099[0x1]===_0x4c1c('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x509f9e)){_0x5b38f8[_0x4c1c('0x61')](_0x4aff2a);_0x937792[_0x4c1c('0x48')]('t.id\x20IN\x20?',_0x509f9e);}BPromise['resolve']()['then'](function(){if(!_0x37e8d8){if(_0x14ec9b[_0x4c1c('0x3d')]['WhatsappAccountId'])return;_0x937792[_0x4c1c('0x48')](_0x4c1c('0x91'));_0x5b38f8[_0x4c1c('0x48')](_0x4c1c('0x91'));return;}if(_0x14ec9b['user'][_0x4c1c('0x92')]!==_0x4c1c('0x93'))return;return _0x14ec9b[_0x4c1c('0x94')][_0x4c1c('0x95')]({'attributes':['id'],'raw':!![]})[_0x4c1c('0x2b')](function(_0x236e18){if(_[_0x4c1c('0x74')](_0x236e18)){_0x937792[_0x4c1c('0x48')]('i.WhatsappAccountId\x20IS\x20NULL');_0x5b38f8[_0x4c1c('0x48')](_0x4c1c('0x96'));}else{_0x937792[_0x4c1c('0x48')]('i.WhatsappAccountId\x20IN\x20?',_['map'](_0x236e18,'id'));_0x5b38f8[_0x4c1c('0x48')]('i.WhatsappAccountId\x20IN\x20?',_[_0x4c1c('0x36')](_0x236e18,'id'));}});})[_0x4c1c('0x2b')](function(){if(_0x14ec9b['user'][_0x4c1c('0x92')]===_0x4c1c('0x93')&&!_0x37e8d8&&!_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x97')])return[];return db['sequelize']['query'](_0x937792[_0x4c1c('0x98')](),_0xadddf4);})[_0x4c1c('0x2b')](function(_0x3572ab){_0x4f5c70[_0x4c1c('0x25')]=_0x3572ab[_0x4c1c('0x43')];if(_0x4f5c70[_0x4c1c('0x25')]===0x0)return[];return db[_0x4c1c('0x99')][_0x4c1c('0x3d')](_0x50b41c[_0x4c1c('0x98')](),_0xadddf4)[_0x4c1c('0x2b')](function(_0x361f4a){_0x21faf6=_['keyBy'](_0x361f4a,'id');_0xadddf4=_[_0x4c1c('0x9a')](_0xadddf4,{'model':db[_0x4c1c('0x37')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x42')]){_0x57248e[_0x4c1c('0x41')]['forEach'](function(_0x591805){_0x5b38f8[_0x4c1c('0x4b')]('i.'+_0x591805);});}else{_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0x8e'),_0x4c1c('0x5f'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0x9b'),'Account.key');_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0x9c'),_0x4c1c('0x9d'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0x9e'),_0x4c1c('0x8f'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0x9f'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0xa0'),'Contact.firstName');_0x5b38f8['field'](_0x4c1c('0xa1'),_0x4c1c('0xa2'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0xa3'),_0x4c1c('0xa4'));_0x5b38f8['field'](_0x4c1c('0xa5'),_0x4c1c('0xa6'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0xa7'),_0x4c1c('0xa8'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0xa9'),_0x4c1c('0xaa'));_0x5b38f8['field'](_0x4c1c('0xab'),_0x4c1c('0xac'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0xad'),_0x4c1c('0xae'));_0x5b38f8['field'](_0x4c1c('0xaf'),'TagIds');}if(_0x57248e[_0x4c1c('0x24')])_0x5b38f8[_0x4c1c('0x24')](_0x57248e[_0x4c1c('0x24')]);if(_0x57248e[_0x4c1c('0x22')])_0x5b38f8[_0x4c1c('0x22')](_0x57248e['offset']);return db[_0x4c1c('0x99')][_0x4c1c('0x3d')](_0x5b38f8[_0x4c1c('0x98')](),_0xadddf4);})[_0x4c1c('0x2b')](function(_0x293472){if(_0x293472[_0x4c1c('0x43')]>0x0)_0x276b1c[_0x4c1c('0x48')](_0x4c1c('0xb0'),_[_0x4c1c('0x36')](_0x293472,'id'));return db[_0x4c1c('0x99')]['query'](_0x276b1c[_0x4c1c('0x98')](),_0xadddf4)[_0x4c1c('0x2b')](function(_0x126f2d){var _0x362c20=_[_0x4c1c('0xb1')](_0x126f2d,_0x4c1c('0xb2'));var _0x4693b8=[];_0x293472['forEach'](function(_0x416dfe){_0x4693b8[_0x4c1c('0xb3')](updateWhatsappInteraction(_0x416dfe,_0x21faf6,_0x362c20));});return BPromise[_0x4c1c('0xb4')](_0x4693b8);});});})['then'](function(_0x1109cc){_0x4f5c70[_0x4c1c('0xb5')]=_0x1109cc;return _0x4f5c70;})['then'](respondWithFilteredResult(_0x222493,_0x57248e))[_0x4c1c('0xb6')](handleError(_0x222493,null));};exports[_0x4c1c('0xb7')]=function(_0x3e0d49,_0xd6d748){var _0xac1afe={'raw':![],'where':{'id':_0x3e0d49['params']['id']}},_0x32e0c0={};_0x32e0c0[_0x4c1c('0x3c')]=_[_0x4c1c('0x3e')](db['WhatsappInteraction'][_0x4c1c('0x38')]);_0x32e0c0['query']=_[_0x4c1c('0x3e')](_0x3e0d49[_0x4c1c('0x3d')]);_0x32e0c0[_0x4c1c('0x3f')]=_[_0x4c1c('0x40')](_0x32e0c0[_0x4c1c('0x3c')],_0x32e0c0['query']);_0xac1afe[_0x4c1c('0x41')]=_['intersection'](_0x32e0c0[_0x4c1c('0x3c')],qs['fields'](_0x3e0d49[_0x4c1c('0x3d')][_0x4c1c('0x42')]));_0xac1afe[_0x4c1c('0x41')]=_0xac1afe['attributes']['length']?_0xac1afe[_0x4c1c('0x41')]:_0x32e0c0['model'];if(_0x3e0d49[_0x4c1c('0x3d')]['includeAll']){_0xac1afe['include']=[{'all':!![]}];}_0xac1afe=_['merge']({},_0xac1afe,_0x3e0d49[_0x4c1c('0xb8')]);return db[_0x4c1c('0x37')][_0x4c1c('0x6e')](_0xac1afe)['then'](handleEntityNotFound(_0xd6d748,null))['then'](respondWithResult(_0xd6d748,null))[_0x4c1c('0xb6')](handleError(_0xd6d748,null));};exports[_0x4c1c('0xb9')]=function(_0x4a4df7,_0x437579){return db[_0x4c1c('0x37')][_0x4c1c('0xb9')](_0x4a4df7[_0x4c1c('0x71')],{})[_0x4c1c('0x2b')](respondWithResult(_0x437579,0xc9))[_0x4c1c('0xb6')](handleError(_0x437579,null));};exports[_0x4c1c('0x2a')]=function(_0x3b9b55,_0x19a9c2){if(_0x3b9b55[_0x4c1c('0x71')]['id']){delete _0x3b9b55[_0x4c1c('0x71')]['id'];}return db['WhatsappInteraction'][_0x4c1c('0x6e')]({'where':{'id':_0x3b9b55[_0x4c1c('0xba')]['id']}})[_0x4c1c('0x2b')](handleEntityNotFound(_0x19a9c2,null))['then'](saveUpdates(_0x3b9b55[_0x4c1c('0x71')],null))[_0x4c1c('0x2b')](respondWithResult(_0x19a9c2,null))[_0x4c1c('0xb6')](handleError(_0x19a9c2,null));};exports[_0x4c1c('0xbb')]=function(_0x1e1a64,_0x3ce7dc){return db[_0x4c1c('0x37')][_0x4c1c('0x6e')]({'where':{'id':_0x1e1a64[_0x4c1c('0xba')]['id']}})['then'](handleEntityNotFound(_0x3ce7dc,null))['then'](removeEntity(_0x3ce7dc,null))[_0x4c1c('0xb6')](handleError(_0x3ce7dc,null));};exports['describe']=function(_0x331b78,_0x470db0){return db['WhatsappInteraction'][_0x4c1c('0xbc')]()[_0x4c1c('0x2b')](respondWithResult(_0x470db0,null))['catch'](handleError(_0x470db0,null));};exports['addMessage']=function(_0x757a78,_0x3a4871,_0x568c1d){return db[_0x4c1c('0xbd')][_0x4c1c('0x6e')]({'where':{'id':_0x757a78['params']['id']}})['then'](handleEntityNotFound(_0x3a4871,null))[_0x4c1c('0x2b')](function(_0x51d405){if(_0x51d405){return _0x51d405[_0x4c1c('0xbe')](_0x757a78[_0x4c1c('0x71')][_0x4c1c('0xbf')],_[_0x4c1c('0xc0')](_0x757a78[_0x4c1c('0x71')],[_0x4c1c('0xbf'),'id'])||{});}})[_0x4c1c('0x2b')](respondWithResult(_0x3a4871,null))['catch'](handleError(_0x3a4871,null));};exports[_0x4c1c('0xc1')]=function(_0x5df1ed,_0x10de1d,_0x124530){var _0x2066c5={'raw':![],'where':{}};var _0x1e2812={};var _0x3467a5={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0x4c1c('0xc2')]({'where':{'id':_0x5df1ed[_0x4c1c('0xba')]['id']}})[_0x4c1c('0x2b')](handleEntityNotFound(_0x10de1d,null))[_0x4c1c('0x2b')](function(_0x322ea6){if(_0x322ea6){_0x1e2812[_0x4c1c('0x3c')]=_[_0x4c1c('0x3e')](db[_0x4c1c('0xbd')][_0x4c1c('0x38')]);_0x1e2812['query']=_[_0x4c1c('0x3e')](_0x5df1ed['query']);_0x1e2812['filters']=_['intersection'](_0x1e2812[_0x4c1c('0x3c')],_0x1e2812['query']);_0x2066c5['attributes']=_['intersection'](_0x1e2812[_0x4c1c('0x3c')],qs['fields'](_0x5df1ed[_0x4c1c('0x3d')][_0x4c1c('0x42')]));_0x2066c5[_0x4c1c('0x41')]=_0x2066c5[_0x4c1c('0x41')][_0x4c1c('0x43')]?_0x2066c5['attributes']:_0x1e2812[_0x4c1c('0x3c')];if(!_0x5df1ed['query'][_0x4c1c('0x44')]('nolimit')){_0x2066c5['limit']=qs[_0x4c1c('0x24')](_0x5df1ed['query']['limit']);_0x2066c5[_0x4c1c('0x22')]=qs[_0x4c1c('0x22')](_0x5df1ed['query'][_0x4c1c('0x22')]);}_0x2066c5[_0x4c1c('0x46')]=qs[_0x4c1c('0x47')](_0x5df1ed[_0x4c1c('0x3d')][_0x4c1c('0x47')]);_0x2066c5[_0x4c1c('0x48')]=qs[_0x4c1c('0x3f')](_[_0x4c1c('0x49')](_0x5df1ed[_0x4c1c('0x3d')],_0x1e2812[_0x4c1c('0x3f')]));_0x2066c5[_0x4c1c('0x48')][_0x4c1c('0xb2')]=_0x322ea6['id'];if(_0x5df1ed[_0x4c1c('0x3d')][_0x4c1c('0x83')]){_0x2066c5['where']=_['merge'](_0x2066c5[_0x4c1c('0x48')],{'$or':_[_0x4c1c('0x36')](_0x2066c5[_0x4c1c('0x41')],function(_0x4bab81){var _0x12c662={};_0x12c662[_0x4bab81]={'$like':'%'+_0x5df1ed[_0x4c1c('0x3d')][_0x4c1c('0x83')]+'%'};return _0x12c662;})});}if(_0x5df1ed[_0x4c1c('0x3d')][_0x4c1c('0x79')]){var _0xc15e80=_0x5df1ed['query']['$gte'][_0x4c1c('0x32')](',');var _0x1c0835={};_0x1c0835[_0xc15e80[0x0]]={'$gte':moment(_0xc15e80[0x1])[_0x4c1c('0xc3')](_0x4c1c('0xc4'))};_0x2066c5[_0x4c1c('0x48')]=_['merge'](_0x2066c5[_0x4c1c('0x48')],_0x1c0835);}_0x2066c5=_[_0x4c1c('0x9a')]({},_0x2066c5,_0x5df1ed[_0x4c1c('0xb8')]);return db[_0x4c1c('0xbd')]['count']({'where':_0x2066c5[_0x4c1c('0x48')]})['then'](function(_0x273a07){_0x3467a5[_0x4c1c('0x25')]=_0x273a07;if(_0x5df1ed[_0x4c1c('0x3d')][_0x4c1c('0xc5')]){_0x2066c5[_0x4c1c('0xc6')]=[{'all':!![]}];}return db[_0x4c1c('0xbd')]['findAll'](_0x2066c5);})[_0x4c1c('0x2b')](function(_0x1a568c){_0x3467a5[_0x4c1c('0xb5')]=_0x1a568c;return _0x3467a5;});}})[_0x4c1c('0x2b')](respondWithFilteredResult(_0x10de1d,_0x2066c5))[_0x4c1c('0xb6')](handleError(_0x10de1d,null));};exports[_0x4c1c('0xc7')]=function(_0x464530,_0x1bbdc2,_0x1cab0d){return db[_0x4c1c('0x37')][_0x4c1c('0x6e')]({'where':{'id':_0x464530[_0x4c1c('0xba')]['id']}})[_0x4c1c('0x2b')](handleEntityNotFound(_0x1bbdc2,null))[_0x4c1c('0x2b')](function(_0x23f9ed){if(_0x23f9ed){return _0x23f9ed[_0x4c1c('0xc8')](_0x464530[_0x4c1c('0x71')][_0x4c1c('0xbf')],_[_0x4c1c('0xc0')](_0x464530['body'],[_0x4c1c('0xbf'),'id'])||{})[_0x4c1c('0xc9')](function(){return db['Tag'][_0x4c1c('0xca')]({'attributes':['id',_0x4c1c('0x2e'),_0x4c1c('0x4c')],'where':{'id':_0x464530[_0x4c1c('0x71')]['ids']}});})['then'](function(_0x54dbc2){socket['emit'](_0x4c1c('0xcb'),{'id':Number(_0x464530[_0x4c1c('0xba')]['id']),'tags':_0x54dbc2||[]});return{'id':Number(_0x464530[_0x4c1c('0xba')]['id']),'tags':_0x54dbc2||[]};});}})[_0x4c1c('0x2b')](respondWithResult(_0x1bbdc2,null))[_0x4c1c('0xb6')](handleError(_0x1bbdc2,null));};exports['removeTags']=function(_0x31dc96,_0x64b57,_0x409e87){return db[_0x4c1c('0x37')]['find']({'where':{'id':_0x31dc96[_0x4c1c('0xba')]['id']}})[_0x4c1c('0x2b')](handleEntityNotFound(_0x64b57,null))[_0x4c1c('0x2b')](function(_0x2d32c3){if(_0x2d32c3){return _0x2d32c3[_0x4c1c('0xcc')](_0x31dc96[_0x4c1c('0x3d')][_0x4c1c('0xbf')]);}})[_0x4c1c('0x2b')](respondWithStatusCode(_0x64b57,null))[_0x4c1c('0xb6')](handleError(_0x64b57,null));};exports['download']=function(_0x1cf023,_0x4a02af){var _0x95ad5f=moment()[_0x4c1c('0xcd')]()['toString']();var _0x471510=path[_0x4c1c('0xce')](config[_0x4c1c('0xcf')],_0x4c1c('0xd0'),_0x4c1c('0xd1'),'tmp');var _0x54d504=path['join'](config['root'],'server','files',_0x4c1c('0xd2'));var _0x238990=path[_0x4c1c('0xce')](_0x471510,_0x95ad5f);var _0xdd3624=util[_0x4c1c('0xc3')](_0x4c1c('0xd3'),_0x1cf023['params']['id'],_0x95ad5f);var _0x21d9a0=path['join'](_0x471510,_0xdd3624);var _0xf957dd=[];_0xf957dd[_0x4c1c('0xb3')]({'model':db[_0x4c1c('0x6c')],'as':'User','attributes':['id',_0x4c1c('0x30')],'raw':!![]});_0xf957dd[_0x4c1c('0xb3')]({'model':db[_0x4c1c('0xd4')],'as':'Contact','attributes':['id',_0x4c1c('0xd5'),'lastName'],'raw':!![]});if(_0x1cf023[_0x4c1c('0x3d')][_0x4c1c('0xd2')]){_0xf957dd[_0x4c1c('0xb3')]({'model':db['Attachment'],'as':_0x4c1c('0xd6'),'raw':!![]});}var _0x5430de=[{'model':db['WhatsappMessage'],'as':_0x4c1c('0xd7'),'attributes':['id',_0x4c1c('0x71'),_0x4c1c('0x77'),_0x4c1c('0xd8'),_0x4c1c('0xd9'),'read'],'include':_0xf957dd}];_0x5430de[_0x4c1c('0xb3')]({'model':db[_0x4c1c('0xda')],'as':'Account','attributes':['id','name']});_0x5430de[_0x4c1c('0xb3')]({'model':db[_0x4c1c('0x6c')],'as':_0x4c1c('0xdb'),'attributes':['id',_0x4c1c('0x30')]});return db[_0x4c1c('0x37')][_0x4c1c('0x6e')]({'where':{'id':_0x1cf023[_0x4c1c('0xba')]['id']},'include':_0x5430de})[_0x4c1c('0x2b')](handleEntityNotFound(_0x4a02af,null))[_0x4c1c('0x2b')](function(_0x3ed063){if(_0x3ed063){var _0x395b12=_0x3ed063['get']({'plain':!![]});fs['mkdirSync'](_0x238990);var _0x2b129e={'channel':_0x4c1c('0xdc'),'account':_0x395b12['Account'][_0x4c1c('0x2e')],'agent':_0x395b12[_0x4c1c('0xdb')]?_0x395b12['Owner'][_0x4c1c('0x30')]:_0x4c1c('0xdd'),'createdAt':moment(_0x395b12[_0x4c1c('0x77')])[_0x4c1c('0xc3')](_0x4c1c('0xc4'))['toString'](),'closedAt':_0x395b12[_0x4c1c('0xde')]?moment(_0x395b12[_0x4c1c('0xdf')])[_0x4c1c('0xc3')](_0x4c1c('0xc4'))[_0x4c1c('0x98')]():'','disposition':_0x395b12[_0x4c1c('0xe0')],'messages':_(_0x395b12[_0x4c1c('0xd7')])[_0x4c1c('0x83')]({'secret':![]})[_0x4c1c('0x36')](function(_0xdb0446){if(_0xdb0446[_0x4c1c('0xd6')]){var _0x3a5be9=path[_0x4c1c('0xce')](_0x54d504,_0xdb0446[_0x4c1c('0xd6')][_0x4c1c('0xe1')]);if(fs[_0x4c1c('0xe2')](_0x3a5be9)){fs[_0x4c1c('0xe3')](_0x3a5be9)[_0x4c1c('0xe4')](fs[_0x4c1c('0xe5')](path['join'](_0x238990,_0xdb0446[_0x4c1c('0xd6')][_0x4c1c('0xe1')])));}}return{'date':moment(_0xdb0446[_0x4c1c('0x77')])[_0x4c1c('0xc3')](_0x4c1c('0xc4'))[_0x4c1c('0x98')](),'sender':_0xdb0446[_0x4c1c('0xd8')]===_0x4c1c('0xe6')?_0xdb0446[_0x4c1c('0x6c')]?_0xdb0446[_0x4c1c('0x6c')][_0x4c1c('0x30')]:_0x4c1c('0xe7'):_0xdb0446['Contact'][_0x4c1c('0xd5')]+(_0xdb0446[_0x4c1c('0xe8')][_0x4c1c('0xe9')]?'\x20'+_0xdb0446[_0x4c1c('0xe8')][_0x4c1c('0xe9')]:''),'body':_0xdb0446[_0x4c1c('0xd6')]?_0xdb0446[_0x4c1c('0xd6')][_0x4c1c('0xe1')]:_0xdb0446[_0x4c1c('0x71')],'direction':_0xdb0446['direction']===_0x4c1c('0xe6')?'A':'C','secret':_0xdb0446[_0x4c1c('0xd9')],'read':_0xdb0446[_0x4c1c('0x7f')],'attachment':_0xdb0446[_0x4c1c('0xd6')]};})[_0x4c1c('0x60')]()};return ejs['renderFile'](path['join'](config['root'],_0x4c1c('0xd0'),_0x4c1c('0xea'),'downloadInteraction.ejs'),{'interaction':_0x2b129e})[_0x4c1c('0x2b')](function(_0x5617c1){var _0x17971c=path[_0x4c1c('0xce')](_0x238990,_0x4c1c('0xeb')+_0x395b12['id']+'-'+_0x95ad5f+'.pdf');var _0xd0b855={'path':_0x17971c,'channel':_0x4c1c('0xdc'),'interactionId':_0x395b12['id']};return pdf[_0x4c1c('0xec')](_0x5617c1,_0xd0b855);})[_0x4c1c('0x2b')](function(){return new BPromise(function(_0x1833f7,_0x485e55){zipdir(_0x238990,{'saveTo':_0x21d9a0},function(_0x2fcee2,_0x40837a){if(_0x2fcee2)return _0x485e55(_0x2fcee2);return _0x1833f7(_0x40837a);});})[_0x4c1c('0x2b')](function(){return new BPromise(function(_0x5c12f5,_0x54e57f){rimraf(_0x238990,function(_0xbe9bd0){if(_0xbe9bd0)_0x54e57f(_0xbe9bd0);return _0x5c12f5();});});})[_0x4c1c('0x2b')](function(){return _0x4a02af[_0x4c1c('0xed')](_0x21d9a0,_0xdd3624,function(_0x3a8f60){if(_0x3a8f60){console[_0x4c1c('0xee')](_0x4c1c('0xef'),_0x3a8f60);}else{fs['unlinkSync'](_0x21d9a0);}});});});}else{return _0x4a02af[_0x4c1c('0x1e')](0xc8);}})['catch'](handleError(_0x4a02af,null));};
\ No newline at end of file
+var _0xd8ee=['Attachment','direction','secret','WhatsappAccount','Account','get','mkdirSync','Owner','N.A.','closedAt','disposition','Messages','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','lastName','renderFile','transcript-','.pdf','Whatsapp','createPdfFromHTML','log','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','end','json','undefined','count','offset','limit','apply','reject','save','then','destroy','stack','name','send','Users','map','fullname','TagIds','Tags','split','forEach','push','index','WhatsappInteraction','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','where','pick','field','color','from','select','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','users','u.id\x20=\x20ui.UserId','whatsapp_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','tools_tags','expr','search','parseSearch','sqlOperator','conditions','find','value','having','`\x20=\x200','`\x20>\x200','Contact','$substring','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','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','buildExpression','text','keys','some','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','i.id','Sequelize','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','sequelize','toString','merge','a.key','Account.key','a.mandatoryDisposition','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','Contact.phone','c.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','ui.WhatsappInteractionId\x20IN\x20?','groupBy','all','catch','show','params','options','create','body','update','describe','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','sort','WhatsappInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','addTags','spread','findAll','emit','whatsappInteractionTags:save','removeTags','download','unix','join','root','tmp','server','files','attachments','transcript-%d-%s.zip','CmContact','firstName'];(function(_0x58a0b7,_0x5202b9){var _0x2de399=function(_0x24b276){while(--_0x24b276){_0x58a0b7['push'](_0x58a0b7['shift']());}};_0x2de399(++_0x5202b9);}(_0xd8ee,0x1f2));var _0xed8e=function(_0x2c0a40,_0x16a7bd){_0x2c0a40=_0x2c0a40-0x0;var _0x504f84=_0xd8ee[_0x2c0a40];return _0x504f84;};'use strict';var emlformat=require(_0xed8e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xed8e('0x1'));var jsonpatch=require(_0xed8e('0x2'));var rp=require(_0xed8e('0x3'));var moment=require('moment');var BPromise=require(_0xed8e('0x4'));var Mustache=require(_0xed8e('0x5'));var util=require(_0xed8e('0x6'));var path=require(_0xed8e('0x7'));var sox=require(_0xed8e('0x8'));var csv=require(_0xed8e('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xed8e('0xa'));var _=require(_0xed8e('0xb'));var squel=require(_0xed8e('0xc'));var crypto=require(_0xed8e('0xd'));var jsforce=require(_0xed8e('0xe'));var deskjs=require(_0xed8e('0xf'));var toCsv=require(_0xed8e('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xed8e('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xed8e('0x11'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xed8e('0x12'));var logger=require(_0xed8e('0x13'))('api');var utils=require(_0xed8e('0x14'));var config=require(_0xed8e('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xed8e('0x16'))['db'];config['redis']=_[_0xed8e('0x17')](config[_0xed8e('0x18')],{'host':_0xed8e('0x19'),'port':0x18eb});var socket=require(_0xed8e('0x1a'))(new Redis(config[_0xed8e('0x18')]));require(_0xed8e('0x1b'))[_0xed8e('0x1c')](socket);function respondWithStatusCode(_0x16f03d,_0x33e126){_0x33e126=_0x33e126||0xcc;return function(_0x17b3c7){if(_0x17b3c7){return _0x16f03d[_0xed8e('0x1d')](_0x33e126);}return _0x16f03d[_0xed8e('0x1e')](_0x33e126)[_0xed8e('0x1f')]();};}function respondWithResult(_0x4cefe4,_0x35f69d){_0x35f69d=_0x35f69d||0xc8;return function(_0x51a804){if(_0x51a804){return _0x4cefe4[_0xed8e('0x1e')](_0x35f69d)[_0xed8e('0x20')](_0x51a804);}};}function respondWithFilteredResult(_0x5866df,_0x715374){return function(_0x167924){if(_0x167924){var _0x1be4d5=typeof _0x715374['offset']==='undefined'&&typeof _0x715374['limit']===_0xed8e('0x21');var _0x1c8ceb=_0x167924[_0xed8e('0x22')];var _0x421e50=_0x1be4d5?0x0:_0x715374['offset'];var _0x59003c=_0x1be4d5?_0x167924[_0xed8e('0x22')]:_0x715374[_0xed8e('0x23')]+_0x715374[_0xed8e('0x24')];var _0x2a4c3f;if(_0x59003c>=_0x1c8ceb){_0x59003c=_0x1c8ceb;_0x2a4c3f=0xc8;}else{_0x2a4c3f=0xce;}_0x5866df[_0xed8e('0x1e')](_0x2a4c3f);return _0x5866df['set']('Content-Range',_0x421e50+'-'+_0x59003c+'/'+_0x1c8ceb)[_0xed8e('0x20')](_0x167924);}return null;};}function patchUpdates(_0x589317){return function(_0x1846b0){try{jsonpatch[_0xed8e('0x25')](_0x1846b0,_0x589317,!![]);}catch(_0x4bebfc){return BPromise[_0xed8e('0x26')](_0x4bebfc);}return _0x1846b0[_0xed8e('0x27')]();};}function saveUpdates(_0x521290,_0x65fe20){return function(_0x4986cf){if(_0x4986cf){return _0x4986cf['update'](_0x521290)[_0xed8e('0x28')](function(_0x37c350){return _0x37c350;});}return null;};}function removeEntity(_0x428295,_0x91cfdc){return function(_0x177e05){if(_0x177e05){return _0x177e05[_0xed8e('0x29')]()[_0xed8e('0x28')](function(){_0x428295[_0xed8e('0x1e')](0xcc)[_0xed8e('0x1f')]();});}};}function handleEntityNotFound(_0x2be2be,_0x2bd5ee){return function(_0x4be629){if(!_0x4be629){_0x2be2be['sendStatus'](0x194);}return _0x4be629;};}function handleError(_0x5063fd,_0x3ce206){_0x3ce206=_0x3ce206||0x1f4;return function(_0x177d69){logger['error'](_0x177d69[_0xed8e('0x2a')]);if(_0x177d69['name']){delete _0x177d69[_0xed8e('0x2b')];}_0x5063fd[_0xed8e('0x1e')](_0x3ce206)[_0xed8e('0x2c')](_0x177d69);};}function getInteractionUsers(_0xb99b19,_0x2666b5){return new BPromise(function(_0x432f03,_0x39f94a){try{if(_0x2666b5[_0xb99b19['id']]){_0xb99b19[_0xed8e('0x2d')]=_[_0xed8e('0x2e')](_0x2666b5[_0xb99b19['id']],function(_0x4ea85c){return{'id':_0x4ea85c['id'],'fullname':_0x4ea85c[_0xed8e('0x2f')]};});}}catch(_0x120eab){_0x39f94a(_0x120eab);}_0x432f03(_0xb99b19);});}function getInteractionTags(_0x86356a,_0x2e90cd){return new BPromise(function(_0x3c0b46,_0x414afe){try{if(_0x86356a[_0xed8e('0x30')]){_0x86356a[_0xed8e('0x31')]=[];_0x86356a[_0xed8e('0x30')][_0xed8e('0x32')](',')[_0xed8e('0x33')](function(_0x290539){_0x86356a[_0xed8e('0x31')][_0xed8e('0x34')](_0x2e90cd[_0x290539]);});}delete _0x86356a[_0xed8e('0x30')];}catch(_0x44cb09){_0x414afe(_0x44cb09);}_0x3c0b46(_0x86356a);});}function updateWhatsappInteraction(_0x1492e4,_0x3e7e80,_0x255516){return new BPromise(function(_0xb63e7e,_0x43c7de){return getInteractionUsers(_0x1492e4,_0x255516)[_0xed8e('0x28')](function(_0x1c2792){return getInteractionTags(_0x1c2792,_0x3e7e80);})[_0xed8e('0x28')](function(_0x27b6a8){_0xb63e7e(_0x27b6a8);})['catch'](function(_0x2b2e3a){_0x43c7de(_0x2b2e3a);});});}exports[_0xed8e('0x35')]=function(_0x2967d5,_0x755964){var _0x272e0a={},_0x506f91={},_0x5df389={'count':0x0,'rows':[]};var _0x1b9f9e=_['map'](db[_0xed8e('0x36')][_0xed8e('0x37')],function(_0x402971){return{'name':_0x402971[_0xed8e('0x38')],'type':_0x402971[_0xed8e('0x39')][_0xed8e('0x3a')]};});_0x506f91[_0xed8e('0x3b')]=_[_0xed8e('0x2e')](_0x1b9f9e,_0xed8e('0x2b'));_0x506f91['query']=_['keys'](_0x2967d5[_0xed8e('0x3c')]);_0x506f91[_0xed8e('0x3d')]=_[_0xed8e('0x3e')](_0x506f91[_0xed8e('0x3b')],_0x506f91[_0xed8e('0x3c')]);_0x272e0a['attributes']=_['intersection'](_0x506f91[_0xed8e('0x3b')],qs[_0xed8e('0x3f')](_0x2967d5[_0xed8e('0x3c')][_0xed8e('0x3f')]));_0x272e0a[_0xed8e('0x40')]=_0x272e0a[_0xed8e('0x40')][_0xed8e('0x41')]?_0x272e0a[_0xed8e('0x40')]:_0x506f91[_0xed8e('0x3b')];if(!_0x2967d5[_0xed8e('0x3c')]['hasOwnProperty'](_0xed8e('0x42'))){_0x272e0a['limit']=qs[_0xed8e('0x24')](_0x2967d5[_0xed8e('0x3c')][_0xed8e('0x24')]);_0x272e0a[_0xed8e('0x23')]=qs[_0xed8e('0x23')](_0x2967d5['query']['offset']);}_0x272e0a[_0xed8e('0x43')]=qs['sort'](_0x2967d5[_0xed8e('0x3c')]['sort']);_0x272e0a[_0xed8e('0x44')]=qs[_0xed8e('0x3d')](_[_0xed8e('0x45')](_0x2967d5[_0xed8e('0x3c')],_0x506f91[_0xed8e('0x3d')]),_0x1b9f9e);var _0x16f14a=[];var _0x47d211=squel['select']()[_0xed8e('0x46')]('id')[_0xed8e('0x46')]('name')[_0xed8e('0x46')](_0xed8e('0x47'))[_0xed8e('0x48')]('tools_tags');var _0x50fd08=squel[_0xed8e('0x49')]()[_0xed8e('0x46')]('u.id')[_0xed8e('0x46')](_0xed8e('0x4a'))[_0xed8e('0x46')](_0xed8e('0x4b'))[_0xed8e('0x48')](_0xed8e('0x4c'),'ui')[_0xed8e('0x4d')](_0xed8e('0x4e'),'u',_0xed8e('0x4f'));var _0x41cb55=squel[_0xed8e('0x49')]()['from'](_0xed8e('0x50'),'i')[_0xed8e('0x4d')](_0xed8e('0x51'),'c',_0xed8e('0x52'))[_0xed8e('0x4d')]('users','o',_0xed8e('0x53'))['left_join'](_0xed8e('0x54'),'a','a.id\x20=\x20i.WhatsappAccountId')[_0xed8e('0x4d')](_0xed8e('0x55'),'me',_0xed8e('0x56'))[_0xed8e('0x4d')](_0xed8e('0x57'),'it',_0xed8e('0x58'))[_0xed8e('0x4d')](_0xed8e('0x59'),'t','t.id\x20=\x20it.TagId');var _0x5db003=squel[_0xed8e('0x5a')]();var _0x3691c8=[];var _0x47f345=squel[_0xed8e('0x5a')]();var _0xe6640;if(_0x2967d5[_0xed8e('0x3c')][_0xed8e('0x5b')]){_0xe6640=as[_0xed8e('0x5c')](_0x2967d5['query'][_0xed8e('0x5b')]);var _0x342198=_0xe6640[_0xed8e('0x5d')];for(var _0x47c588=0x0;_0x47c588<_0xe6640[_0xed8e('0x5e')][_0xed8e('0x41')];_0x47c588++){var _0x423e0d=_0xe6640[_0xed8e('0x5e')][_0x47c588];var _0x54fde2='i';var _0x90229b=_[_0xed8e('0x5f')](_0x1b9f9e,[_0xed8e('0x2b'),_0x423e0d['field']]);if(!_0x90229b){switch(_0x423e0d['field']){case'unreadMessages':if(_0x423e0d[_0xed8e('0x60')]==0x1){_0x41cb55[_0xed8e('0x61')]('`'+_0x423e0d[_0xed8e('0x46')]+_0xed8e('0x62'));}else{_0x41cb55[_0xed8e('0x61')]('`'+_0x423e0d['field']+_0xed8e('0x63'));}break;case _0xed8e('0x64'):if(_0x423e0d['operator']===_0xed8e('0x65')){if(_0x423e0d[_0xed8e('0x60')]['split']('\x20')['length']>0x1){_0x5db003[_0x342198]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x423e0d[_0xed8e('0x60')]),null);}else{var _0xeefe88='%'+_0x423e0d[_0xed8e('0x60')]+'%';_0x5db003[_0x342198](_0xed8e('0x66'),_0xeefe88,_0xeefe88,_0xeefe88);}}else{_0x90229b=_[_0xed8e('0x5f')](_0x1b9f9e,[_0xed8e('0x2b'),_0xed8e('0x67')]);_0x423e0d[_0xed8e('0x46')]='ContactId';_0x478fed=as['buildExpression'](_0x54fde2,_0x90229b[_0xed8e('0x39')],_0x423e0d);_0x5db003[_0x342198](_0x478fed['text'],_0x478fed[_0xed8e('0x60')][_0xed8e('0x68')],_0x478fed[_0xed8e('0x60')][_0xed8e('0x1f')]);}break;case _0xed8e('0x69'):var _0x40e7b0=_0x423e0d[_0xed8e('0x60')]['split'](',')[_0xed8e('0x2e')](function(_0x1f4ec8){return Number(_0x1f4ec8);});_0x40e7b0[_0xed8e('0x33')](function(_0x36147f){_0x47f345['or'](_0xed8e('0x6a'),'%,'+_0x36147f+',%');});_0x3691c8=_[_0xed8e('0x6b')](_0x3691c8,_0x40e7b0);break;case _0xed8e('0x6c'):if(_0x423e0d[_0xed8e('0x6d')]===_0xed8e('0x65')){_0x5db003[_0x342198](_0xed8e('0x6e'),'%'+_0x423e0d['value']+'%',null);}else{_0x90229b=_[_0xed8e('0x5f')](_0x1b9f9e,['name',_0xed8e('0x6f')]);_0x423e0d[_0xed8e('0x46')]=_0xed8e('0x6f');_0x478fed=as[_0xed8e('0x70')](_0x54fde2,_0x90229b[_0xed8e('0x39')],_0x423e0d);_0x5db003[_0x342198](_0x478fed[_0xed8e('0x71')],_0x478fed['value']['start'],_0x478fed[_0xed8e('0x60')]['end']);}break;case'body':_0x478fed=as[_0xed8e('0x70')]('me',null,_0x423e0d);_0x5db003[_0x342198](_0x478fed[_0xed8e('0x71')],_0x478fed['value'][_0xed8e('0x68')],_0x478fed['value']['end']);break;}}else{var _0x478fed=as[_0xed8e('0x70')](_0x54fde2,_0x90229b[_0xed8e('0x39')],_0x423e0d);_0x5db003[_0x342198](_0x478fed[_0xed8e('0x71')],_0x478fed[_0xed8e('0x60')][_0xed8e('0x68')],_0x478fed[_0xed8e('0x60')][_0xed8e('0x1f')]);}}}else{var _0x5ce77c=_(_0x2967d5[_0xed8e('0x3c')])[_0xed8e('0x72')]()['map'](function(_0x3252cf){return _[_0xed8e('0x73')](_0x1b9f9e,[_0xed8e('0x2b'),_0x3252cf])?_0x3252cf:undefined;})['compact']()[_0xed8e('0x60')]();if(!_['isEmpty'](_0x5ce77c)){_0x5ce77c['forEach'](function(_0x3af02a){if(_0x3af02a===_0xed8e('0x74')){_0x41cb55[_0xed8e('0x44')](_0xed8e('0x75'),[][_0xed8e('0x76')](_0x2967d5['query'][_0x3af02a]));}else if(_0x3af02a===_0xed8e('0x77')){var _0x3b40d9=JSON['parse'](_0x2967d5[_0xed8e('0x3c')][_0x3af02a])[_0xed8e('0x78')];var _0x2d249c=JSON[_0xed8e('0x79')](_0x2967d5[_0xed8e('0x3c')][_0x3af02a])[_0xed8e('0x7a')];_0x41cb55[_0xed8e('0x44')](_0xed8e('0x7b'),_0x3b40d9,_0x2d249c);}else{if(_0x2967d5[_0xed8e('0x3c')][_0x3af02a]==='null'){_0x41cb55[_0xed8e('0x44')]('i.'+_0x3af02a+_0xed8e('0x7c'));}else{_0x41cb55[_0xed8e('0x44')]('i.'+_0x3af02a+'\x20=\x20?',_0x2967d5[_0xed8e('0x3c')][_0x3af02a]);}}});}if(_0x2967d5[_0xed8e('0x3c')][_0xed8e('0x7d')]){if(_0x2967d5[_0xed8e('0x3c')][_0xed8e('0x7d')]==0x1){_0x41cb55[_0xed8e('0x61')](_0xed8e('0x7e'));}else{_0x41cb55[_0xed8e('0x61')](_0xed8e('0x7f'));}}if(_0x2967d5[_0xed8e('0x3c')][_0xed8e('0x80')]){_0x3691c8=_['isArray'](_0x2967d5['query'][_0xed8e('0x80')])?_0x2967d5[_0xed8e('0x3c')]['tag']:new Array(_0x2967d5['query'][_0xed8e('0x80')]);_0x3691c8['forEach'](function(_0x2495f0){_0x47f345['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2495f0+',%');});}if(_0x2967d5[_0xed8e('0x3c')][_0xed8e('0x81')]){var _0x4f805e=_0x2967d5[_0xed8e('0x3c')][_0xed8e('0x81')][_0xed8e('0x82')]('\x5c','\x5c\x5c')[_0xed8e('0x82')](/'/g,'\x27\x27');if(qs[_0xed8e('0x83')](_0x4f805e)){_0x5db003['or'](_0xed8e('0x84'),_0x4f805e+'%')['or'](_0xed8e('0x85'),_0x4f805e+'%');}else{_0x5db003['or'](_0xed8e('0x86'),qs[_0xed8e('0x87')](_0x4f805e))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x4f805e+'%');}}}_0x41cb55['where'](_0x5db003);_0x41cb55[_0xed8e('0x88')](_0xed8e('0x89'));var _0xb938bd={'type':db[_0xed8e('0x8a')]['QueryTypes']['SELECT'],'raw':!![]};var _0x4188d=_0x41cb55['clone']();_0x4188d[_0xed8e('0x46')]('i.id');_0x4188d[_0xed8e('0x46')](_0xed8e('0x8b'),_0xed8e('0x8c'));if(_0x272e0a[_0xed8e('0x43')]){_0x272e0a[_0xed8e('0x43')]['forEach'](function(_0x307da0){var _0x29e769=_0x307da0[0x0]===_0xed8e('0x8d')?_0x307da0[0x0]:'i.'+_0x307da0[0x0];_0x41cb55[_0xed8e('0x43')](_0x29e769,_0x307da0[0x1]===_0xed8e('0x8e')?![]:!![]);});}if(!_[_0xed8e('0x8f')](_0x3691c8)){_0x41cb55['having'](_0x47f345);_0x4188d[_0xed8e('0x44')](_0xed8e('0x90'),_0x3691c8);}BPromise[_0xed8e('0x91')]()['then'](function(){if(!_0xe6640){if(_0x2967d5[_0xed8e('0x3c')][_0xed8e('0x74')])return;_0x4188d[_0xed8e('0x44')](_0xed8e('0x92'));_0x41cb55[_0xed8e('0x44')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x2967d5['user'][_0xed8e('0x93')]!==_0xed8e('0x94'))return;return _0x2967d5[_0xed8e('0x95')][_0xed8e('0x96')]({'attributes':['id'],'raw':!![]})[_0xed8e('0x28')](function(_0x3052ff){if(_['isEmpty'](_0x3052ff)){_0x4188d['where'](_0xed8e('0x97'));_0x41cb55[_0xed8e('0x44')](_0xed8e('0x97'));}else{_0x4188d['where'](_0xed8e('0x75'),_[_0xed8e('0x2e')](_0x3052ff,'id'));_0x41cb55[_0xed8e('0x44')](_0xed8e('0x75'),_[_0xed8e('0x2e')](_0x3052ff,'id'));}});})['then'](function(){if(_0x2967d5[_0xed8e('0x95')][_0xed8e('0x93')]===_0xed8e('0x94')&&!_0xe6640&&!_0x2967d5[_0xed8e('0x3c')][_0xed8e('0x74')])return[];return db[_0xed8e('0x98')][_0xed8e('0x3c')](_0x4188d[_0xed8e('0x99')](),_0xb938bd);})[_0xed8e('0x28')](function(_0x46c4cf){_0x5df389[_0xed8e('0x22')]=_0x46c4cf[_0xed8e('0x41')];if(_0x5df389['count']===0x0)return[];return db[_0xed8e('0x98')][_0xed8e('0x3c')](_0x47d211[_0xed8e('0x99')](),_0xb938bd)[_0xed8e('0x28')](function(_0x55dbe9){_0x16f14a=_['keyBy'](_0x55dbe9,'id');_0xb938bd=_[_0xed8e('0x9a')](_0xb938bd,{'model':db[_0xed8e('0x36')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2967d5[_0xed8e('0x3c')][_0xed8e('0x3f')]){_0x272e0a['attributes'][_0xed8e('0x33')](function(_0x20bd09){_0x41cb55[_0xed8e('0x46')]('i.'+_0x20bd09);});}else{_0x41cb55[_0xed8e('0x46')](_0xed8e('0x8b'),_0xed8e('0x8c'));_0x41cb55[_0xed8e('0x46')](_0xed8e('0x9b'),_0xed8e('0x9c'));_0x41cb55[_0xed8e('0x46')](_0xed8e('0x9d'),'Account.mandatoryDisposition');_0x41cb55[_0xed8e('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',_0xed8e('0x8d'));_0x41cb55[_0xed8e('0x46')](_0xed8e('0x9e'));_0x41cb55['field'](_0xed8e('0x9f'),_0xed8e('0xa0'));_0x41cb55[_0xed8e('0x46')](_0xed8e('0xa1'),_0xed8e('0xa2'));_0x41cb55[_0xed8e('0x46')]('c.email','Contact.email');_0x41cb55[_0xed8e('0x46')]('c.phone',_0xed8e('0xa3'));_0x41cb55['field'](_0xed8e('0xa4'),'Contact.mobile');_0x41cb55[_0xed8e('0x46')](_0xed8e('0xa5'),'Contact.fax');_0x41cb55[_0xed8e('0x46')](_0xed8e('0xa6'),_0xed8e('0xa7'));_0x41cb55[_0xed8e('0x46')](_0xed8e('0xa8'),_0xed8e('0xa9'));_0x41cb55['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0xed8e('0x30'));}if(_0x272e0a['limit'])_0x41cb55[_0xed8e('0x24')](_0x272e0a['limit']);if(_0x272e0a[_0xed8e('0x23')])_0x41cb55[_0xed8e('0x23')](_0x272e0a[_0xed8e('0x23')]);return db[_0xed8e('0x98')]['query'](_0x41cb55[_0xed8e('0x99')](),_0xb938bd);})[_0xed8e('0x28')](function(_0x28415e){if(_0x28415e[_0xed8e('0x41')]>0x0)_0x50fd08[_0xed8e('0x44')](_0xed8e('0xaa'),_['map'](_0x28415e,'id'));return db[_0xed8e('0x98')][_0xed8e('0x3c')](_0x50fd08[_0xed8e('0x99')](),_0xb938bd)[_0xed8e('0x28')](function(_0x5e2822){var _0xbf6e2c=_[_0xed8e('0xab')](_0x5e2822,'WhatsappInteractionId');var _0x23cf8a=[];_0x28415e[_0xed8e('0x33')](function(_0x47c716){_0x23cf8a[_0xed8e('0x34')](updateWhatsappInteraction(_0x47c716,_0x16f14a,_0xbf6e2c));});return BPromise[_0xed8e('0xac')](_0x23cf8a);});});})[_0xed8e('0x28')](function(_0x340e1d){_0x5df389['rows']=_0x340e1d;return _0x5df389;})['then'](respondWithFilteredResult(_0x755964,_0x272e0a))[_0xed8e('0xad')](handleError(_0x755964,null));};exports[_0xed8e('0xae')]=function(_0x12eb8a,_0x499d41){var _0x3f1ce5={'raw':![],'where':{'id':_0x12eb8a[_0xed8e('0xaf')]['id']}},_0x3778fc={};_0x3778fc['model']=_[_0xed8e('0x72')](db[_0xed8e('0x36')]['rawAttributes']);_0x3778fc['query']=_[_0xed8e('0x72')](_0x12eb8a[_0xed8e('0x3c')]);_0x3778fc[_0xed8e('0x3d')]=_[_0xed8e('0x3e')](_0x3778fc['model'],_0x3778fc['query']);_0x3f1ce5[_0xed8e('0x40')]=_[_0xed8e('0x3e')](_0x3778fc['model'],qs[_0xed8e('0x3f')](_0x12eb8a[_0xed8e('0x3c')][_0xed8e('0x3f')]));_0x3f1ce5[_0xed8e('0x40')]=_0x3f1ce5[_0xed8e('0x40')][_0xed8e('0x41')]?_0x3f1ce5[_0xed8e('0x40')]:_0x3778fc[_0xed8e('0x3b')];if(_0x12eb8a['query']['includeAll']){_0x3f1ce5['include']=[{'all':!![]}];}_0x3f1ce5=_[_0xed8e('0x9a')]({},_0x3f1ce5,_0x12eb8a[_0xed8e('0xb0')]);return db[_0xed8e('0x36')]['find'](_0x3f1ce5)[_0xed8e('0x28')](handleEntityNotFound(_0x499d41,null))['then'](respondWithResult(_0x499d41,null))[_0xed8e('0xad')](handleError(_0x499d41,null));};exports[_0xed8e('0xb1')]=function(_0x12f565,_0x3fe56f){return db[_0xed8e('0x36')][_0xed8e('0xb1')](_0x12f565[_0xed8e('0xb2')],{})['then'](respondWithResult(_0x3fe56f,0xc9))[_0xed8e('0xad')](handleError(_0x3fe56f,null));};exports[_0xed8e('0xb3')]=function(_0x27cdb6,_0x17312f){if(_0x27cdb6[_0xed8e('0xb2')]['id']){delete _0x27cdb6[_0xed8e('0xb2')]['id'];}return db[_0xed8e('0x36')][_0xed8e('0x5f')]({'where':{'id':_0x27cdb6[_0xed8e('0xaf')]['id']}})[_0xed8e('0x28')](handleEntityNotFound(_0x17312f,null))[_0xed8e('0x28')](saveUpdates(_0x27cdb6[_0xed8e('0xb2')],null))[_0xed8e('0x28')](respondWithResult(_0x17312f,null))[_0xed8e('0xad')](handleError(_0x17312f,null));};exports[_0xed8e('0x29')]=function(_0x2d39e2,_0x5ad71d){return db['WhatsappInteraction'][_0xed8e('0x5f')]({'where':{'id':_0x2d39e2['params']['id']}})[_0xed8e('0x28')](handleEntityNotFound(_0x5ad71d,null))[_0xed8e('0x28')](removeEntity(_0x5ad71d,null))['catch'](handleError(_0x5ad71d,null));};exports[_0xed8e('0xb4')]=function(_0x18e110,_0x5e2491){return db[_0xed8e('0x36')][_0xed8e('0xb4')]()[_0xed8e('0x28')](respondWithResult(_0x5e2491,null))['catch'](handleError(_0x5e2491,null));};exports[_0xed8e('0xb5')]=function(_0x2bb35d,_0x5d7cab,_0x167e88){return db[_0xed8e('0xb6')][_0xed8e('0x5f')]({'where':{'id':_0x2bb35d[_0xed8e('0xaf')]['id']}})[_0xed8e('0x28')](handleEntityNotFound(_0x5d7cab,null))[_0xed8e('0x28')](function(_0x4887d5){if(_0x4887d5){return _0x4887d5[_0xed8e('0xb5')](_0x2bb35d[_0xed8e('0xb2')][_0xed8e('0xb7')],_[_0xed8e('0xb8')](_0x2bb35d['body'],['ids','id'])||{});}})[_0xed8e('0x28')](respondWithResult(_0x5d7cab,null))[_0xed8e('0xad')](handleError(_0x5d7cab,null));};exports[_0xed8e('0xb9')]=function(_0x53b49d,_0x3169fc,_0x323aa4){var _0x58d697={'raw':![],'where':{}};var _0x551fd9={};var _0x566c2c={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0xed8e('0xba')]({'where':{'id':_0x53b49d['params']['id']}})[_0xed8e('0x28')](handleEntityNotFound(_0x3169fc,null))[_0xed8e('0x28')](function(_0xb3d616){if(_0xb3d616){_0x551fd9[_0xed8e('0x3b')]=_[_0xed8e('0x72')](db[_0xed8e('0xb6')][_0xed8e('0x37')]);_0x551fd9[_0xed8e('0x3c')]=_['keys'](_0x53b49d['query']);_0x551fd9[_0xed8e('0x3d')]=_['intersection'](_0x551fd9[_0xed8e('0x3b')],_0x551fd9[_0xed8e('0x3c')]);_0x58d697[_0xed8e('0x40')]=_[_0xed8e('0x3e')](_0x551fd9[_0xed8e('0x3b')],qs[_0xed8e('0x3f')](_0x53b49d['query'][_0xed8e('0x3f')]));_0x58d697[_0xed8e('0x40')]=_0x58d697[_0xed8e('0x40')][_0xed8e('0x41')]?_0x58d697[_0xed8e('0x40')]:_0x551fd9[_0xed8e('0x3b')];if(!_0x53b49d['query']['hasOwnProperty'](_0xed8e('0x42'))){_0x58d697[_0xed8e('0x24')]=qs['limit'](_0x53b49d[_0xed8e('0x3c')]['limit']);_0x58d697[_0xed8e('0x23')]=qs[_0xed8e('0x23')](_0x53b49d[_0xed8e('0x3c')]['offset']);}_0x58d697[_0xed8e('0x43')]=qs['sort'](_0x53b49d[_0xed8e('0x3c')][_0xed8e('0xbb')]);_0x58d697[_0xed8e('0x44')]=qs[_0xed8e('0x3d')](_[_0xed8e('0x45')](_0x53b49d[_0xed8e('0x3c')],_0x551fd9[_0xed8e('0x3d')]));_0x58d697['where'][_0xed8e('0xbc')]=_0xb3d616['id'];if(_0x53b49d['query'][_0xed8e('0x81')]){_0x58d697[_0xed8e('0x44')]=_[_0xed8e('0x9a')](_0x58d697[_0xed8e('0x44')],{'$or':_['map'](_0x58d697[_0xed8e('0x40')],function(_0x3d79e6){var _0xd6f65c={};_0xd6f65c[_0x3d79e6]={'$like':'%'+_0x53b49d[_0xed8e('0x3c')][_0xed8e('0x81')]+'%'};return _0xd6f65c;})});}if(_0x53b49d['query'][_0xed8e('0x78')]){var _0x32367f=_0x53b49d[_0xed8e('0x3c')]['$gte']['split'](',');var _0x38bbb9={};_0x38bbb9[_0x32367f[0x0]]={'$gte':moment(_0x32367f[0x1])[_0xed8e('0xbd')](_0xed8e('0xbe'))};_0x58d697[_0xed8e('0x44')]=_[_0xed8e('0x9a')](_0x58d697[_0xed8e('0x44')],_0x38bbb9);}_0x58d697=_[_0xed8e('0x9a')]({},_0x58d697,_0x53b49d[_0xed8e('0xb0')]);return db[_0xed8e('0xb6')][_0xed8e('0x22')]({'where':_0x58d697[_0xed8e('0x44')]})[_0xed8e('0x28')](function(_0x40f045){_0x566c2c['count']=_0x40f045;if(_0x53b49d[_0xed8e('0x3c')][_0xed8e('0xbf')]){_0x58d697['include']=[{'all':!![]}];}return db[_0xed8e('0xb6')]['findAll'](_0x58d697);})['then'](function(_0x380bb7){_0x566c2c[_0xed8e('0xc0')]=_0x380bb7;return _0x566c2c;});}})[_0xed8e('0x28')](respondWithFilteredResult(_0x3169fc,_0x58d697))[_0xed8e('0xad')](handleError(_0x3169fc,null));};exports[_0xed8e('0xc1')]=function(_0x54f415,_0x2d3c3e,_0xd9ae55){return db[_0xed8e('0x36')]['find']({'where':{'id':_0x54f415['params']['id']}})[_0xed8e('0x28')](handleEntityNotFound(_0x2d3c3e,null))[_0xed8e('0x28')](function(_0x21ada7){if(_0x21ada7){return _0x21ada7['setTags'](_0x54f415[_0xed8e('0xb2')][_0xed8e('0xb7')],_[_0xed8e('0xb8')](_0x54f415[_0xed8e('0xb2')],[_0xed8e('0xb7'),'id'])||{})[_0xed8e('0xc2')](function(){return db[_0xed8e('0x69')][_0xed8e('0xc3')]({'attributes':['id',_0xed8e('0x2b'),_0xed8e('0x47')],'where':{'id':_0x54f415[_0xed8e('0xb2')][_0xed8e('0xb7')]}});})[_0xed8e('0x28')](function(_0x1faae1){socket[_0xed8e('0xc4')](_0xed8e('0xc5'),{'id':Number(_0x54f415[_0xed8e('0xaf')]['id']),'tags':_0x1faae1||[]});return{'id':Number(_0x54f415[_0xed8e('0xaf')]['id']),'tags':_0x1faae1||[]};});}})[_0xed8e('0x28')](respondWithResult(_0x2d3c3e,null))[_0xed8e('0xad')](handleError(_0x2d3c3e,null));};exports[_0xed8e('0xc6')]=function(_0x527682,_0x3a0694,_0x5ad52c){return db[_0xed8e('0x36')][_0xed8e('0x5f')]({'where':{'id':_0x527682[_0xed8e('0xaf')]['id']}})['then'](handleEntityNotFound(_0x3a0694,null))['then'](function(_0x445a21){if(_0x445a21){return _0x445a21[_0xed8e('0xc6')](_0x527682['query']['ids']);}})['then'](respondWithStatusCode(_0x3a0694,null))[_0xed8e('0xad')](handleError(_0x3a0694,null));};exports[_0xed8e('0xc7')]=function(_0x2622ce,_0x36f49e){var _0x14fa08=moment()[_0xed8e('0xc8')]()['toString']();var _0x419583=path[_0xed8e('0xc9')](config[_0xed8e('0xca')],'server','files',_0xed8e('0xcb'));var _0x21d74c=path[_0xed8e('0xc9')](config[_0xed8e('0xca')],_0xed8e('0xcc'),_0xed8e('0xcd'),_0xed8e('0xce'));var _0x250ebd=path['join'](_0x419583,_0x14fa08);var _0x480600=util[_0xed8e('0xbd')](_0xed8e('0xcf'),_0x2622ce['params']['id'],_0x14fa08);var _0x477812=path[_0xed8e('0xc9')](_0x419583,_0x480600);var _0x4d3738=[];_0x4d3738[_0xed8e('0x34')]({'model':db[_0xed8e('0x6c')],'as':'User','attributes':['id',_0xed8e('0x2f')],'raw':!![]});_0x4d3738[_0xed8e('0x34')]({'model':db[_0xed8e('0xd0')],'as':'Contact','attributes':['id',_0xed8e('0xd1'),'lastName'],'raw':!![]});if(_0x2622ce[_0xed8e('0x3c')][_0xed8e('0xce')]){_0x4d3738[_0xed8e('0x34')]({'model':db[_0xed8e('0xd2')],'as':_0xed8e('0xd2'),'raw':!![]});}var _0x2159ca=[{'model':db[_0xed8e('0xb6')],'as':'Messages','attributes':['id',_0xed8e('0xb2'),_0xed8e('0x77'),_0xed8e('0xd3'),_0xed8e('0xd4'),_0xed8e('0x7d')],'include':_0x4d3738}];_0x2159ca[_0xed8e('0x34')]({'model':db[_0xed8e('0xd5')],'as':_0xed8e('0xd6'),'attributes':['id',_0xed8e('0x2b')]});_0x2159ca[_0xed8e('0x34')]({'model':db[_0xed8e('0x6c')],'as':'Owner','attributes':['id',_0xed8e('0x2f')]});return db[_0xed8e('0x36')][_0xed8e('0x5f')]({'where':{'id':_0x2622ce[_0xed8e('0xaf')]['id']},'include':_0x2159ca})[_0xed8e('0x28')](handleEntityNotFound(_0x36f49e,null))['then'](function(_0x5901e0){if(_0x5901e0){var _0x1c5a1d=_0x5901e0[_0xed8e('0xd7')]({'plain':!![]});fs[_0xed8e('0xd8')](_0x250ebd);var _0x549be4={'channel':'Whatsapp','account':_0x1c5a1d[_0xed8e('0xd6')]['name'],'agent':_0x1c5a1d[_0xed8e('0xd9')]?_0x1c5a1d[_0xed8e('0xd9')][_0xed8e('0x2f')]:_0xed8e('0xda'),'createdAt':moment(_0x1c5a1d[_0xed8e('0x77')])[_0xed8e('0xbd')](_0xed8e('0xbe'))[_0xed8e('0x99')](),'closedAt':_0x1c5a1d['closed']?moment(_0x1c5a1d[_0xed8e('0xdb')])[_0xed8e('0xbd')](_0xed8e('0xbe'))['toString']():'','disposition':_0x1c5a1d[_0xed8e('0xdc')],'messages':_(_0x1c5a1d[_0xed8e('0xdd')])[_0xed8e('0x81')]({'secret':![]})['map'](function(_0x26746f){if(_0x26746f['Attachment']){var _0x410b93=path[_0xed8e('0xc9')](_0x21d74c,_0x26746f[_0xed8e('0xd2')][_0xed8e('0xde')]);if(fs[_0xed8e('0xdf')](_0x410b93)){fs[_0xed8e('0xe0')](_0x410b93)[_0xed8e('0xe1')](fs[_0xed8e('0xe2')](path[_0xed8e('0xc9')](_0x250ebd,_0x26746f[_0xed8e('0xd2')]['basename'])));}}return{'date':moment(_0x26746f[_0xed8e('0x77')])[_0xed8e('0xbd')](_0xed8e('0xbe'))[_0xed8e('0x99')](),'sender':_0x26746f[_0xed8e('0xd3')]===_0xed8e('0xe3')?_0x26746f[_0xed8e('0x6c')]?_0x26746f['User'][_0xed8e('0x2f')]:_0xed8e('0xe4'):_0x26746f[_0xed8e('0x64')]['firstName']+(_0x26746f[_0xed8e('0x64')][_0xed8e('0xe5')]?'\x20'+_0x26746f[_0xed8e('0x64')]['lastName']:''),'body':_0x26746f[_0xed8e('0xd2')]?_0x26746f[_0xed8e('0xd2')][_0xed8e('0xde')]:_0x26746f[_0xed8e('0xb2')],'direction':_0x26746f[_0xed8e('0xd3')]==='out'?'A':'C','secret':_0x26746f[_0xed8e('0xd4')],'read':_0x26746f[_0xed8e('0x7d')],'attachment':_0x26746f[_0xed8e('0xd2')]};})['value']()};return ejs[_0xed8e('0xe6')](path[_0xed8e('0xc9')](config[_0xed8e('0xca')],_0xed8e('0xcc'),'views','downloadInteraction.ejs'),{'interaction':_0x549be4})[_0xed8e('0x28')](function(_0x4c8672){var _0x5b69fb=path[_0xed8e('0xc9')](_0x250ebd,_0xed8e('0xe7')+_0x1c5a1d['id']+'-'+_0x14fa08+_0xed8e('0xe8'));var _0x109aee={'path':_0x5b69fb,'channel':_0xed8e('0xe9'),'interactionId':_0x1c5a1d['id']};return pdf[_0xed8e('0xea')](_0x4c8672,_0x109aee);})[_0xed8e('0x28')](function(){return new BPromise(function(_0x3309f1,_0x55a8f4){zipdir(_0x250ebd,{'saveTo':_0x477812},function(_0x3ad80a,_0x59d438){if(_0x3ad80a)return _0x55a8f4(_0x3ad80a);return _0x3309f1(_0x59d438);});})[_0xed8e('0x28')](function(){return new BPromise(function(_0x258b36,_0x1bce1f){rimraf(_0x250ebd,function(_0x2837c6){if(_0x2837c6)_0x1bce1f(_0x2837c6);return _0x258b36();});});})[_0xed8e('0x28')](function(){return _0x36f49e[_0xed8e('0xc7')](_0x477812,_0x480600,function(_0x369872){if(_0x369872){console[_0xed8e('0xeb')]('err',_0x369872);}else{fs['unlinkSync'](_0x477812);}});});});}else{return _0x36f49e[_0xed8e('0x1d')](0xc8);}})[_0xed8e('0xad')](handleError(_0x36f49e,null));};
\ No newline at end of file
index 307e18b..cd19fb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e0=['update','remove','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','hasOwnProperty','exports','events','../../mysqldb','WhatsappInteraction','save'];(function(_0x2b32ea,_0x267434){var _0x3b829a=function(_0x451938){while(--_0x451938){_0x2b32ea['push'](_0x2b32ea['shift']());}};_0x3b829a(++_0x267434);}(_0x55e0,0xdc));var _0x055e=function(_0x4a5b2c,_0x453068){_0x4a5b2c=_0x4a5b2c-0x0;var _0x3f723d=_0x55e0[_0x4a5b2c];return _0x3f723d;};'use strict';var EventEmitter=require(_0x055e('0x0'));var WhatsappInteraction=require(_0x055e('0x1'))['db'][_0x055e('0x2')];var WhatsappMessage=require(_0x055e('0x1'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x055e('0x3'),'afterUpdate':_0x055e('0x4'),'afterDestroy':_0x055e('0x5')};function emitEvent(_0x2773e4){return function(_0x157473,_0x196394,_0x490ee1){_0x157473['getUsers']({'attributes':['id'],'raw':!![]})[_0x055e('0x6')](function(_0x4a442e){_0x157473[_0x055e('0x7')](_0x055e('0x8'),_0x4a442e[_0x055e('0x9')](function(_0x230c32){return{'id':_0x230c32['id']};}));return WhatsappMessage[_0x055e('0xa')]({'where':{'WhatsappInteractionId':_0x157473['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x40779c){_0x157473[_0x055e('0x7')](_0x055e('0xb'),_0x40779c[_0x055e('0xc')]);WhatsappInteractionEvents[_0x055e('0xd')](_0x2773e4+':'+_0x157473['id'],_0x157473);WhatsappInteractionEvents['emit'](_0x2773e4,_0x157473);_0x490ee1(null);})['catch'](_0x490ee1(null));};}for(var e in events){if(events[_0x055e('0xe')](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module[_0x055e('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xf4dd=['then','setDataValue','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','events','../../mysqldb','WhatsappInteraction','WhatsappMessage','setMaxListeners','save','remove'];(function(_0x17ac0d,_0x24c02b){var _0x273d32=function(_0x2f25d1){while(--_0x2f25d1){_0x17ac0d['push'](_0x17ac0d['shift']());}};_0x273d32(++_0x24c02b);}(_0xf4dd,0xb4));var _0xdf4d=function(_0x33afcc,_0x283c67){_0x33afcc=_0x33afcc-0x0;var _0x13df92=_0xf4dd[_0x33afcc];return _0x13df92;};'use strict';var EventEmitter=require(_0xdf4d('0x0'));var WhatsappInteraction=require(_0xdf4d('0x1'))['db'][_0xdf4d('0x2')];var WhatsappMessage=require(_0xdf4d('0x1'))['db'][_0xdf4d('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xdf4d('0x4')](0x0);var events={'afterCreate':_0xdf4d('0x5'),'afterUpdate':'update','afterDestroy':_0xdf4d('0x6')};function emitEvent(_0x539191){return function(_0x434c2a,_0x58fc81,_0x41d806){_0x434c2a['getUsers']({'attributes':['id'],'raw':!![]})[_0xdf4d('0x7')](function(_0x5ee8f5){_0x434c2a[_0xdf4d('0x8')]('Users',_0x5ee8f5[_0xdf4d('0x9')](function(_0x313d25){return{'id':_0x313d25['id']};}));return WhatsappMessage[_0xdf4d('0xa')]({'where':{'WhatsappInteractionId':_0x434c2a['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x3c82eb){_0x434c2a[_0xdf4d('0x8')](_0xdf4d('0xb'),_0x3c82eb[_0xdf4d('0xc')]);WhatsappInteractionEvents[_0xdf4d('0xd')](_0x539191+':'+_0x434c2a['id'],_0x434c2a);WhatsappInteractionEvents[_0xdf4d('0xd')](_0x539191,_0x434c2a);_0x41d806(null);})[_0xdf4d('0xe')](_0x41d806(null));};}for(var e in events){if(events[_0xdf4d('0xf')](e)){var event=events[e];WhatsappInteraction[_0xdf4d('0x10')](e,emitEvent(event));}}module['exports']=WhatsappInteractionEvents;
\ No newline at end of file
index 7be47bb..5c65e02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69c5=['api','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define','whatsapp_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger'];(function(_0x36f58b,_0x2e27b3){var _0x10ebaa=function(_0x1cb715){while(--_0x1cb715){_0x36f58b['push'](_0x36f58b['shift']());}};_0x10ebaa(++_0x2e27b3);}(_0x69c5,0xad));var _0x569c=function(_0x501d86,_0x284bca){_0x501d86=_0x501d86-0x0;var _0x1f9d47=_0x69c5[_0x501d86];return _0x1f9d47;};'use strict';var _=require(_0x569c('0x0'));var util=require(_0x569c('0x1'));var logger=require(_0x569c('0x2'))(_0x569c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x569c('0x4'));var fs=require('fs');var path=require(_0x569c('0x5'));var rimraf=require(_0x569c('0x6'));var config=require(_0x569c('0x7'));var attributes=require(_0x569c('0x8'));module[_0x569c('0x9')]=function(_0x1477d9,_0x2363e1){return _0x1477d9[_0x569c('0xa')]('WhatsappInteraction',attributes,{'tableName':_0x569c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x22d8cf,_0x32faa6,_0xb7f5cd){if(_0x22d8cf[_0x569c('0xc')](_0x569c('0xd'))){_0x22d8cf[_0x569c('0xe')]=moment()['format'](_0x569c('0xf'));}_0xb7f5cd(null,_0x22d8cf);}}});};
\ No newline at end of file
+var _0xaea5=['closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','api','request-promise','rimraf','exports','whatsapp_interactions'];(function(_0x4ef58e,_0x53f8fe){var _0x563228=function(_0x42bcd9){while(--_0x42bcd9){_0x4ef58e['push'](_0x4ef58e['shift']());}};_0x563228(++_0x53f8fe);}(_0xaea5,0xb7));var _0x5aea=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xaea5[_0x432682];return _0x463d05;};'use strict';var _=require(_0x5aea('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5aea('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5aea('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5aea('0x3'));var config=require('../../config/environment');var attributes=require('./whatsappInteraction.attributes');module[_0x5aea('0x4')]=function(_0x5efdbb,_0x46629f){return _0x5efdbb['define']('WhatsappInteraction',attributes,{'tableName':_0x5aea('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2c0748,_0x87feb1,_0x4fcaa6){if(_0x2c0748['changed'](_0x5aea('0x6'))){_0x2c0748['closedAt']=moment()[_0x5aea('0x7')](_0x5aea('0x8'));}_0x4fcaa6(null,_0x2c0748);}}});};
\ No newline at end of file
index c252eb1..39817a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ede=['localhost','./whatsappInteraction.socket','request','then','info','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappInteraction,\x20%s,\x20%s','result','UpdateWhatsappInteraction','WhatsappInteraction','body','options','raw','where','limit','catch','AddTagsToWhatsappInteraction','find','ids','omit','AddTags','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis'];(function(_0x1809b1,_0x5dd515){var _0x2aeafb=function(_0x4842ce){while(--_0x4842ce){_0x1809b1['push'](_0x1809b1['shift']());}};_0x2aeafb(++_0x5dd515);}(_0x9ede,0x183));var _0xe9ed=function(_0x20655f,_0x30c253){_0x20655f=_0x20655f-0x0;var _0x1efb50=_0x9ede[_0x20655f];return _0x1efb50;};'use strict';var _=require(_0xe9ed('0x0'));var util=require(_0xe9ed('0x1'));var moment=require('moment');var BPromise=require(_0xe9ed('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe9ed('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe9ed('0x4'));var logger=require(_0xe9ed('0x5'))(_0xe9ed('0x6'));var config=require(_0xe9ed('0x7'));var jayson=require(_0xe9ed('0x8'));var client=jayson[_0xe9ed('0x9')][_0xe9ed('0xa')]({'port':0x232a});config['redis']=_[_0xe9ed('0xb')](config[_0xe9ed('0xc')],{'host':_0xe9ed('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe9ed('0xe'))['register'](socket);function respondWithRpcPromise(_0x12d0b8,_0x171c51,_0x41820f){return new BPromise(function(_0x4cb915,_0x5534d7){return client[_0xe9ed('0xf')](_0x12d0b8,_0x41820f)[_0xe9ed('0x10')](function(_0x10ca75){logger[_0xe9ed('0x11')]('WhatsappInteraction,\x20%s,\x20%s',_0x171c51,_0xe9ed('0x12'));logger[_0xe9ed('0x13')](_0xe9ed('0x14'),_0x171c51,'request\x20sent',JSON[_0xe9ed('0x15')](_0x10ca75));if(_0x10ca75[_0xe9ed('0x16')]){if(_0x10ca75[_0xe9ed('0x16')][_0xe9ed('0x17')]===0x1f4){logger[_0xe9ed('0x16')]('WhatsappInteraction,\x20%s,\x20%s',_0x171c51,_0x10ca75[_0xe9ed('0x16')][_0xe9ed('0x18')]);return _0x5534d7(_0x10ca75['error'][_0xe9ed('0x18')]);}logger[_0xe9ed('0x16')](_0xe9ed('0x19'),_0x171c51,_0x10ca75['error'][_0xe9ed('0x18')]);return _0x4cb915(_0x10ca75[_0xe9ed('0x16')][_0xe9ed('0x18')]);}else{logger[_0xe9ed('0x11')](_0xe9ed('0x19'),_0x171c51,_0xe9ed('0x12'));_0x4cb915(_0x10ca75[_0xe9ed('0x1a')][_0xe9ed('0x18')]);}})['catch'](function(_0x6541e2){logger[_0xe9ed('0x16')](_0xe9ed('0x19'),_0x171c51,_0x6541e2);_0x5534d7(_0x6541e2);});});}exports[_0xe9ed('0x1b')]=function(_0x28a4ec){var _0x5e3ccc=this;return new Promise(function(_0x4444a9,_0x41f1e6){return db[_0xe9ed('0x1c')]['update'](_0x28a4ec[_0xe9ed('0x1d')],{'raw':_0x28a4ec[_0xe9ed('0x1e')]?_0x28a4ec[_0xe9ed('0x1e')][_0xe9ed('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x28a4ec[_0xe9ed('0x1e')]?_0x28a4ec[_0xe9ed('0x1e')][_0xe9ed('0x20')]||null:null,'attributes':_0x28a4ec[_0xe9ed('0x1e')]?_0x28a4ec['options']['attributes']||null:null,'limit':_0x28a4ec[_0xe9ed('0x1e')]?_0x28a4ec[_0xe9ed('0x1e')][_0xe9ed('0x21')]||null:null})[_0xe9ed('0x10')](function(_0x537099){logger[_0xe9ed('0x11')](_0xe9ed('0x1b'),_0x28a4ec);logger[_0xe9ed('0x13')](_0xe9ed('0x1b'),_0x28a4ec,JSON[_0xe9ed('0x15')](_0x537099));_0x4444a9(_0x537099);})[_0xe9ed('0x22')](function(_0x12e1e0){logger[_0xe9ed('0x16')]('UpdateWhatsappInteraction',_0x12e1e0[_0xe9ed('0x18')],_0x28a4ec);_0x41f1e6(_0x5e3ccc[_0xe9ed('0x16')](0x1f4,_0x12e1e0[_0xe9ed('0x18')]));});});};exports[_0xe9ed('0x23')]=function(_0x4fc718){return new Promise(function(_0x50f7c5,_0x1e6144){return db[_0xe9ed('0x1c')][_0xe9ed('0x24')]({'where':_0x4fc718[_0xe9ed('0x1e')]?_0x4fc718['options'][_0xe9ed('0x20')]||null:null})['then'](function(_0x30119a){if(_0x30119a){return _0x30119a['addTags'](_0x4fc718[_0xe9ed('0x1d')][_0xe9ed('0x25')],_[_0xe9ed('0x26')](_0x4fc718[_0xe9ed('0x1d')],[_0xe9ed('0x25'),'id'])||{});}})['spread'](function(_0x4e822f){logger[_0xe9ed('0x11')](_0xe9ed('0x27'),_0x4fc718);logger[_0xe9ed('0x13')](_0xe9ed('0x27'),_0x4fc718,JSON['stringify'](_0x4e822f));_0x50f7c5(_0x4e822f);})[_0xe9ed('0x22')](function(_0xdbd85c){logger['error'](_0xe9ed('0x27'),_0xdbd85c[_0xe9ed('0x18')],_0x4fc718);_0x1e6144(_this[_0xe9ed('0x16')](0x1f4,_0xdbd85c[_0xe9ed('0x18')]));});});};
\ No newline at end of file
+var _0xc585=['request','info','WhatsappInteraction,\x20%s,\x20%s','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','WhatsappInteraction','update','options','raw','where','limit','then','UpdateWhatsappInteraction','AddTagsToWhatsappInteraction','find','addTags','body','ids','omit','spread','AddTags','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','register'];(function(_0x449b86,_0x9ea79){var _0x595959=function(_0x6db172){while(--_0x6db172){_0x449b86['push'](_0x449b86['shift']());}};_0x595959(++_0x9ea79);}(_0xc585,0x157));var _0x5c58=function(_0x263b11,_0xce0e29){_0x263b11=_0x263b11-0x0;var _0x54484c=_0xc585[_0x263b11];return _0x54484c;};'use strict';var _=require(_0x5c58('0x0'));var util=require(_0x5c58('0x1'));var moment=require('moment');var BPromise=require(_0x5c58('0x2'));var rs=require(_0x5c58('0x3'));var fs=require('fs');var Redis=require(_0x5c58('0x4'));var db=require(_0x5c58('0x5'))['db'];var utils=require(_0x5c58('0x6'));var logger=require(_0x5c58('0x7'))(_0x5c58('0x8'));var config=require(_0x5c58('0x9'));var jayson=require(_0x5c58('0xa'));var client=jayson[_0x5c58('0xb')][_0x5c58('0xc')]({'port':0x232a});config['redis']=_[_0x5c58('0xd')](config[_0x5c58('0xe')],{'host':_0x5c58('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5c58('0xe')]));require('./whatsappInteraction.socket')[_0x5c58('0x10')](socket);function respondWithRpcPromise(_0x400e09,_0x734796,_0x298f6b){return new BPromise(function(_0x5738cf,_0x208fa2){return client[_0x5c58('0x11')](_0x400e09,_0x298f6b)['then'](function(_0x3469e0){logger[_0x5c58('0x12')](_0x5c58('0x13'),_0x734796,'request\x20sent');logger[_0x5c58('0x14')](_0x5c58('0x15'),_0x734796,'request\x20sent',JSON['stringify'](_0x3469e0));if(_0x3469e0[_0x5c58('0x16')]){if(_0x3469e0[_0x5c58('0x16')][_0x5c58('0x17')]===0x1f4){logger[_0x5c58('0x16')](_0x5c58('0x13'),_0x734796,_0x3469e0[_0x5c58('0x16')][_0x5c58('0x18')]);return _0x208fa2(_0x3469e0[_0x5c58('0x16')][_0x5c58('0x18')]);}logger[_0x5c58('0x16')](_0x5c58('0x13'),_0x734796,_0x3469e0[_0x5c58('0x16')]['message']);return _0x5738cf(_0x3469e0[_0x5c58('0x16')][_0x5c58('0x18')]);}else{logger[_0x5c58('0x12')](_0x5c58('0x13'),_0x734796,_0x5c58('0x19'));_0x5738cf(_0x3469e0[_0x5c58('0x1a')][_0x5c58('0x18')]);}})[_0x5c58('0x1b')](function(_0x1d95e4){logger[_0x5c58('0x16')](_0x5c58('0x13'),_0x734796,_0x1d95e4);_0x208fa2(_0x1d95e4);});});}exports['UpdateWhatsappInteraction']=function(_0x80a0de){var _0xe54e39=this;return new Promise(function(_0x5228b8,_0x14f529){return db[_0x5c58('0x1c')][_0x5c58('0x1d')](_0x80a0de['body'],{'raw':_0x80a0de[_0x5c58('0x1e')]?_0x80a0de[_0x5c58('0x1e')][_0x5c58('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x80a0de[_0x5c58('0x1e')]?_0x80a0de[_0x5c58('0x1e')][_0x5c58('0x20')]||null:null,'attributes':_0x80a0de[_0x5c58('0x1e')]?_0x80a0de[_0x5c58('0x1e')]['attributes']||null:null,'limit':_0x80a0de[_0x5c58('0x1e')]?_0x80a0de[_0x5c58('0x1e')][_0x5c58('0x21')]||null:null})[_0x5c58('0x22')](function(_0xec79bc){logger[_0x5c58('0x12')](_0x5c58('0x23'),_0x80a0de);logger[_0x5c58('0x14')]('UpdateWhatsappInteraction',_0x80a0de,JSON['stringify'](_0xec79bc));_0x5228b8(_0xec79bc);})['catch'](function(_0x59c718){logger[_0x5c58('0x16')]('UpdateWhatsappInteraction',_0x59c718['message'],_0x80a0de);_0x14f529(_0xe54e39['error'](0x1f4,_0x59c718[_0x5c58('0x18')]));});});};exports[_0x5c58('0x24')]=function(_0x33033f){return new Promise(function(_0x1e9007,_0x5437d3){return db['WhatsappInteraction'][_0x5c58('0x25')]({'where':_0x33033f['options']?_0x33033f[_0x5c58('0x1e')][_0x5c58('0x20')]||null:null})[_0x5c58('0x22')](function(_0x4484f0){if(_0x4484f0){return _0x4484f0[_0x5c58('0x26')](_0x33033f[_0x5c58('0x27')][_0x5c58('0x28')],_[_0x5c58('0x29')](_0x33033f['body'],['ids','id'])||{});}})[_0x5c58('0x2a')](function(_0x5adf1a){logger['info'](_0x5c58('0x2b'),_0x33033f);logger[_0x5c58('0x14')]('AddTags',_0x33033f,JSON[_0x5c58('0x2c')](_0x5adf1a));_0x1e9007(_0x5adf1a);})[_0x5c58('0x1b')](function(_0x1a8f1f){logger[_0x5c58('0x16')](_0x5c58('0x2b'),_0x1a8f1f['message'],_0x33033f);_0x5437d3(_this[_0x5c58('0x16')](0x1f4,_0x1a8f1f[_0x5c58('0x18')]));});});};
\ No newline at end of file
index 3a2eff7..3667316 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8961=['./whatsappInteraction.events','remove','update','emit','removeListener','register','whatsappInteraction:'];(function(_0xb49cb8,_0x39474b){var _0x879ead=function(_0x596639){while(--_0x596639){_0xb49cb8['push'](_0xb49cb8['shift']());}};_0x879ead(++_0x39474b);}(_0x8961,0x103));var _0x1896=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x8961[_0x160c73];return _0xd9302;};'use strict';var WhatsappInteractionEvents=require(_0x1896('0x0'));var events=['save',_0x1896('0x1'),_0x1896('0x2')];function createListener(_0x113c22,_0x106157){return function(_0x31bc4a){_0x106157[_0x1896('0x3')](_0x113c22,_0x31bc4a);};}function removeListener(_0x793b0b,_0x359ee5){return function(){WhatsappInteractionEvents[_0x1896('0x4')](_0x793b0b,_0x359ee5);};}exports[_0x1896('0x5')]=function(_0x44b854){for(var _0x299929=0x0,_0x16f31e=events['length'];_0x299929<_0x16f31e;_0x299929++){var _0x2fe2fb=events[_0x299929];var _0x13c4fc=createListener(_0x1896('0x6')+_0x2fe2fb,_0x44b854);WhatsappInteractionEvents['on'](_0x2fe2fb,_0x13c4fc);}};
\ No newline at end of file
+var _0x2d71=['length','whatsappInteraction:','save','remove','emit','register'];(function(_0x1a5ad1,_0x357407){var _0x7b8b22=function(_0x312e53){while(--_0x312e53){_0x1a5ad1['push'](_0x1a5ad1['shift']());}};_0x7b8b22(++_0x357407);}(_0x2d71,0x8c));var _0x12d7=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x2d71[_0x2641f9];return _0x585741;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0x12d7('0x0'),_0x12d7('0x1'),'update'];function createListener(_0x436e7a,_0x1df3d2){return function(_0x51c569){_0x1df3d2[_0x12d7('0x2')](_0x436e7a,_0x51c569);};}function removeListener(_0x1616bd,_0x29f6d2){return function(){WhatsappInteractionEvents['removeListener'](_0x1616bd,_0x29f6d2);};}exports[_0x12d7('0x3')]=function(_0x56ad6b){for(var _0x4dbbfa=0x0,_0x117b6b=events[_0x12d7('0x4')];_0x4dbbfa<_0x117b6b;_0x4dbbfa++){var _0xefa9b4=events[_0x4dbbfa];var _0x18f855=createListener(_0x12d7('0x5')+_0xefa9b4,_0x56ad6b);WhatsappInteractionEvents['on'](_0xefa9b4,_0x18f855);}};
\ No newline at end of file
index 02aaa63..fbc45be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1a8=['util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','index','get','/describe','isAuthenticated','describe','/:id','show','post','whatsapp','/:id/status','status','update','put','/:id/accept','reject','delete','destroy','exports','multer'];(function(_0x22eb96,_0x3c2d8d){var _0x5e1adf=function(_0x22e392){while(--_0x22e392){_0x22eb96['push'](_0x22eb96['shift']());}};_0x5e1adf(++_0x3c2d8d);}(_0xd1a8,0x103));var _0x8d1a=function(_0x221c0f,_0x396a11){_0x221c0f=_0x221c0f-0x0;var _0x4647ad=_0xd1a8[_0x221c0f];return _0x4647ad;};'use strict';var multer=require(_0x8d1a('0x0'));var util=require(_0x8d1a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8d1a('0x2'));var router=express['Router']();var fs_extra=require(_0x8d1a('0x3'));var auth=require(_0x8d1a('0x4'));var interaction=require(_0x8d1a('0x5'));var config=require(_0x8d1a('0x6'));var controller=require(_0x8d1a('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x8d1a('0x8')]);router[_0x8d1a('0x9')](_0x8d1a('0xa'),auth[_0x8d1a('0xb')](),controller[_0x8d1a('0xc')]);router[_0x8d1a('0x9')](_0x8d1a('0xd'),auth[_0x8d1a('0xb')](),controller[_0x8d1a('0xe')]);router[_0x8d1a('0xf')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x8d1a('0x10'),'whatsappmessage:create'),controller['create']);router[_0x8d1a('0xf')](_0x8d1a('0x11'),controller[_0x8d1a('0x12')]);router['put'](_0x8d1a('0xd'),auth[_0x8d1a('0xb')](),controller[_0x8d1a('0x13')]);router[_0x8d1a('0x14')](_0x8d1a('0x15'),auth['isAuthenticated'](),controller['accept']);router[_0x8d1a('0x14')]('/:id/reject',auth[_0x8d1a('0xb')](),controller[_0x8d1a('0x16')]);router[_0x8d1a('0x17')](_0x8d1a('0xd'),auth[_0x8d1a('0xb')](),controller[_0x8d1a('0x18')]);module[_0x8d1a('0x19')]=router;
\ No newline at end of file
+var _0x2a31=['delete','/:id','destroy','multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','./whatsappMessage.controller','get','isAuthenticated','index','/describe','describe','show','post','tracked','whatsapp','create','/:id/status','status','put','accept','/:id/reject','reject'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x2a31,0x189));var _0x12a3=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0x2a31[_0x4fc9e6];return _0x551d28;};'use strict';var multer=require(_0x12a3('0x0'));var util=require('util');var path=require(_0x12a3('0x1'));var timeout=require(_0x12a3('0x2'));var express=require(_0x12a3('0x3'));var router=express['Router']();var fs_extra=require(_0x12a3('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x12a3('0x5'));var config=require('../../config/environment');var controller=require(_0x12a3('0x6'));router[_0x12a3('0x7')]('/',auth[_0x12a3('0x8')](),controller[_0x12a3('0x9')]);router[_0x12a3('0x7')](_0x12a3('0xa'),auth[_0x12a3('0x8')](),controller[_0x12a3('0xb')]);router[_0x12a3('0x7')]('/:id',auth[_0x12a3('0x8')](),controller[_0x12a3('0xc')]);router[_0x12a3('0xd')]('/',auth[_0x12a3('0x8')](),interaction[_0x12a3('0xe')](_0x12a3('0xf'),'whatsappmessage:create'),controller[_0x12a3('0x10')]);router[_0x12a3('0xd')](_0x12a3('0x11'),controller[_0x12a3('0x12')]);router[_0x12a3('0x13')]('/:id',auth[_0x12a3('0x8')](),controller['update']);router[_0x12a3('0x13')]('/:id/accept',auth[_0x12a3('0x8')](),controller[_0x12a3('0x14')]);router[_0x12a3('0x13')](_0x12a3('0x15'),auth['isAuthenticated'](),controller[_0x12a3('0x16')]);router[_0x12a3('0x17')](_0x12a3('0x18'),auth[_0x12a3('0x8')](),controller[_0x12a3('0x19')]);module['exports']=router;
\ No newline at end of file
index b0d5722..d671e27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfab=['sequelize','TEXT','BOOLEAN','out','STRING','DATE'];(function(_0x462999,_0x24d200){var _0x4b1366=function(_0x1fa353){while(--_0x1fa353){_0x462999['push'](_0x462999['shift']());}};_0x4b1366(++_0x24d200);}(_0xcfab,0x1e0));var _0xbcfa=function(_0x49770e,_0x50aea9){_0x49770e=_0x49770e-0x0;var _0x45d552=_0xcfab[_0x49770e];return _0x45d552;};'use strict';var Sequelize=require(_0xbcfa('0x0'));module['exports']={'body':{'type':Sequelize[_0xbcfa('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xbcfa('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xbcfa('0x3')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xbcfa('0x4')]},'readAt':{'type':Sequelize[_0xbcfa('0x5')]},'secret':{'type':Sequelize[_0xbcfa('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xbcfa('0x1')]}};
\ No newline at end of file
+var _0x13c6=['BOOLEAN','out','STRING','DATE','sequelize','exports','TEXT','medium'];(function(_0x301c34,_0x15701e){var _0x1a8c5a=function(_0x297b4f){while(--_0x297b4f){_0x301c34['push'](_0x301c34['shift']());}};_0x1a8c5a(++_0x15701e);}(_0x13c6,0x94));var _0x613c=function(_0x40a1de,_0x399e42){_0x40a1de=_0x40a1de-0x0;var _0x461c68=_0x13c6[_0x40a1de];return _0x461c68;};'use strict';var Sequelize=require(_0x613c('0x0'));module[_0x613c('0x1')]={'body':{'type':Sequelize[_0x613c('0x2')](_0x613c('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x613c('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x613c('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0x613c('0x6')]},'readAt':{'type':Sequelize[_0x613c('0x7')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0x613c('0x6')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 52b413e..62c4afe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x440f=['localhost','./whatsappMessage.socket','register','jayson/promise','client','http','then','debug','request\x20sent','code','WhatsappMessage,\x20%s,\x20%s','error','message','info','sendStatus','status','end','json','undefined','limit','count','set','apply','reject','save','update','destroy','name','send','index','map','WhatsappMessage','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','../../config/logger','whatsapp-interactions','whatsapp','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','agent','fullname','email','internal','interface','SIP/%s','channel','accept','EventManager','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','null','RejectMessage','contact','motionChannel','event','rejectmessage','WhatsppMessage,\x20%s,\x20%s,\x20%s','twilio','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','inspect','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis'];(function(_0x29df9a,_0x42aff3){var _0x3a8e96=function(_0x70fbe7){while(--_0x70fbe7){_0x29df9a['push'](_0x29df9a['shift']());}};_0x3a8e96(++_0x42aff3);}(_0x440f,0xfc));var _0xf440=function(_0xc9fc3d,_0x539e30){_0xc9fc3d=_0xc9fc3d-0x0;var _0xbc4866=_0x440f[_0xc9fc3d];return _0xbc4866;};'use strict';var emlformat=require(_0xf440('0x0'));var rimraf=require(_0xf440('0x1'));var zipdir=require(_0xf440('0x2'));var jsonpatch=require(_0xf440('0x3'));var rp=require(_0xf440('0x4'));var moment=require(_0xf440('0x5'));var BPromise=require(_0xf440('0x6'));var Mustache=require(_0xf440('0x7'));var util=require(_0xf440('0x8'));var path=require(_0xf440('0x9'));var sox=require('sox');var csv=require(_0xf440('0xa'));var ejs=require(_0xf440('0xb'));var fs=require('fs');var fs_extra=require(_0xf440('0xc'));var _=require(_0xf440('0xd'));var squel=require(_0xf440('0xe'));var crypto=require('crypto');var jsforce=require(_0xf440('0xf'));var deskjs=require(_0xf440('0x10'));var toCsv=require(_0xf440('0xa'));var querystring=require(_0xf440('0x11'));var Papa=require('papaparse');var Redis=require(_0xf440('0x12'));var authService=require(_0xf440('0x13'));var qs=require(_0xf440('0x14'));var as=require(_0xf440('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf440('0x16'));var utils=require(_0xf440('0x17'));var config=require(_0xf440('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf440('0x19'))['db'];config['redis']=_[_0xf440('0x1a')](config[_0xf440('0x1b')],{'host':_0xf440('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf440('0x1b')]));require(_0xf440('0x1d'))[_0xf440('0x1e')](socket);var jayson=require(_0xf440('0x1f'));var client=jayson[_0xf440('0x20')][_0xf440('0x21')]({'port':0x232c});var client9002=jayson['client'][_0xf440('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x1436ce,_0x2faa7f,_0x3afb5d,_0x36d3d2){return new BPromise(function(_0xaf6b1c,_0x15c6d0){var _0x5560d7=_0x36d3d2||client;return _0x5560d7['request'](_0x1436ce,_0x3afb5d)[_0xf440('0x22')](function(_0x392d25){logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x2faa7f,'request\x20sent');logger[_0xf440('0x23')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x2faa7f,_0xf440('0x24'),JSON['stringify'](_0x392d25));if(_0x392d25['error']){if(_0x392d25['error'][_0xf440('0x25')]===0x1f4){logger['error'](_0xf440('0x26'),_0x2faa7f,_0x392d25[_0xf440('0x27')][_0xf440('0x28')]);return _0x15c6d0(_0x392d25['error'][_0xf440('0x28')]);}logger[_0xf440('0x27')]('WhatsappMessage,\x20%s,\x20%s',_0x2faa7f,_0x392d25[_0xf440('0x27')][_0xf440('0x28')]);return _0xaf6b1c(_0x392d25[_0xf440('0x27')][_0xf440('0x28')]);}else{logger[_0xf440('0x29')]('WhatsappMessage,\x20%s,\x20%s',_0x2faa7f,_0xf440('0x24'));_0xaf6b1c(_0x392d25['result'][_0xf440('0x28')]);}})['catch'](function(_0x288de3){logger[_0xf440('0x27')](_0xf440('0x26'),_0x2faa7f,_0x288de3);_0x15c6d0(_0x288de3);});});}function respondWithStatusCode(_0x4495c7,_0x3de6e7){_0x3de6e7=_0x3de6e7||0xcc;return function(_0x13f114){if(_0x13f114){return _0x4495c7[_0xf440('0x2a')](_0x3de6e7);}return _0x4495c7[_0xf440('0x2b')](_0x3de6e7)[_0xf440('0x2c')]();};}function respondWithResult(_0x104164,_0x13f8d1){_0x13f8d1=_0x13f8d1||0xc8;return function(_0x4bb853){if(_0x4bb853){return _0x104164[_0xf440('0x2b')](_0x13f8d1)[_0xf440('0x2d')](_0x4bb853);}};}function respondWithFilteredResult(_0x20ab54,_0xf44ebc){return function(_0x38f609){if(_0x38f609){var _0x5746f3=typeof _0xf44ebc['offset']===_0xf440('0x2e')&&typeof _0xf44ebc[_0xf440('0x2f')]===_0xf440('0x2e');var _0x2b7918=_0x38f609[_0xf440('0x30')];var _0x593c83=_0x5746f3?0x0:_0xf44ebc['offset'];var _0x4dd2ff=_0x5746f3?_0x38f609['count']:_0xf44ebc['offset']+_0xf44ebc[_0xf440('0x2f')];var _0x10da8e;if(_0x4dd2ff>=_0x2b7918){_0x4dd2ff=_0x2b7918;_0x10da8e=0xc8;}else{_0x10da8e=0xce;}_0x20ab54[_0xf440('0x2b')](_0x10da8e);return _0x20ab54[_0xf440('0x31')]('Content-Range',_0x593c83+'-'+_0x4dd2ff+'/'+_0x2b7918)[_0xf440('0x2d')](_0x38f609);}return null;};}function patchUpdates(_0x2136aa){return function(_0x3fab46){try{jsonpatch[_0xf440('0x32')](_0x3fab46,_0x2136aa,!![]);}catch(_0x1296e3){return BPromise[_0xf440('0x33')](_0x1296e3);}return _0x3fab46[_0xf440('0x34')]();};}function saveUpdates(_0x2c91e2,_0x496dab){return function(_0x3df944){if(_0x3df944){return _0x3df944[_0xf440('0x35')](_0x2c91e2)['then'](function(_0x5a131b){return _0x5a131b;});}return null;};}function removeEntity(_0x51b204,_0x1d5784){return function(_0x4f4a23){if(_0x4f4a23){return _0x4f4a23[_0xf440('0x36')]()[_0xf440('0x22')](function(){_0x51b204[_0xf440('0x2b')](0xcc)[_0xf440('0x2c')]();});}};}function handleEntityNotFound(_0x275638,_0x4648d0){return function(_0x3d8a99){if(!_0x3d8a99){_0x275638[_0xf440('0x2a')](0x194);}return _0x3d8a99;};}function handleError(_0x5d0413,_0x382cec){_0x382cec=_0x382cec||0x1f4;return function(_0x5b6a5f){logger[_0xf440('0x27')](_0x5b6a5f['stack']);if(_0x5b6a5f[_0xf440('0x37')]){delete _0x5b6a5f[_0xf440('0x37')];}_0x5d0413[_0xf440('0x2b')](_0x382cec)[_0xf440('0x38')](_0x5b6a5f);};}exports[_0xf440('0x39')]=function(_0x27264c,_0x34e1cb){var _0x6b3a5a={},_0x3f40e2={},_0x344f8a={'count':0x0,'rows':[]};var _0x708db5=_[_0xf440('0x3a')](db[_0xf440('0x3b')][_0xf440('0x3c')],function(_0x2502d9){return{'name':_0x2502d9['fieldName'],'type':_0x2502d9[_0xf440('0x3d')][_0xf440('0x3e')]};});_0x3f40e2[_0xf440('0x3f')]=_[_0xf440('0x3a')](_0x708db5,'name');_0x3f40e2['query']=_[_0xf440('0x40')](_0x27264c[_0xf440('0x41')]);_0x3f40e2[_0xf440('0x42')]=_[_0xf440('0x43')](_0x3f40e2['model'],_0x3f40e2[_0xf440('0x41')]);_0x6b3a5a[_0xf440('0x44')]=_['intersection'](_0x3f40e2[_0xf440('0x3f')],qs[_0xf440('0x45')](_0x27264c[_0xf440('0x41')][_0xf440('0x45')]));_0x6b3a5a['attributes']=_0x6b3a5a['attributes'][_0xf440('0x46')]?_0x6b3a5a['attributes']:_0x3f40e2[_0xf440('0x3f')];if(!_0x27264c[_0xf440('0x41')][_0xf440('0x47')](_0xf440('0x48'))){_0x6b3a5a[_0xf440('0x2f')]=qs['limit'](_0x27264c['query'][_0xf440('0x2f')]);_0x6b3a5a[_0xf440('0x49')]=qs[_0xf440('0x49')](_0x27264c[_0xf440('0x41')][_0xf440('0x49')]);}_0x6b3a5a[_0xf440('0x4a')]=qs[_0xf440('0x4b')](_0x27264c[_0xf440('0x41')][_0xf440('0x4b')]);_0x6b3a5a[_0xf440('0x4c')]=qs['filters'](_[_0xf440('0x4d')](_0x27264c[_0xf440('0x41')],_0x3f40e2[_0xf440('0x42')]),_0x708db5);if(_0x27264c[_0xf440('0x41')][_0xf440('0x4e')]){_0x6b3a5a['where']=_['merge'](_0x6b3a5a[_0xf440('0x4c')],{'$or':_[_0xf440('0x3a')](_0x708db5,function(_0x355496){if(_0x355496[_0xf440('0x3d')]!==_0xf440('0x4f')){var _0x3e5da8={};_0x3e5da8[_0x355496[_0xf440('0x37')]]={'$like':'%'+_0x27264c[_0xf440('0x41')][_0xf440('0x4e')]+'%'};return _0x3e5da8;}})});}_0x6b3a5a=_[_0xf440('0x50')]({},_0x6b3a5a,_0x27264c[_0xf440('0x51')]);var _0x2267e0={'where':_0x6b3a5a['where']};return db[_0xf440('0x3b')][_0xf440('0x30')](_0x2267e0)[_0xf440('0x22')](function(_0x5f31cc){_0x344f8a[_0xf440('0x30')]=_0x5f31cc;if(_0x27264c[_0xf440('0x41')][_0xf440('0x52')]){_0x6b3a5a[_0xf440('0x53')]=[{'all':!![]}];}return db['WhatsappMessage'][_0xf440('0x54')](_0x6b3a5a);})[_0xf440('0x22')](function(_0x46e1a7){_0x344f8a[_0xf440('0x55')]=_0x46e1a7;return _0x344f8a;})['then'](respondWithFilteredResult(_0x34e1cb,_0x6b3a5a))[_0xf440('0x56')](handleError(_0x34e1cb,null));};exports[_0xf440('0x57')]=function(_0x158cf7,_0x23acbb){var _0x29b9fe={'raw':!![],'where':{'id':_0x158cf7[_0xf440('0x58')]['id']}},_0x28bd64={};_0x28bd64[_0xf440('0x3f')]=_[_0xf440('0x40')](db[_0xf440('0x3b')][_0xf440('0x3c')]);_0x28bd64[_0xf440('0x41')]=_[_0xf440('0x40')](_0x158cf7[_0xf440('0x41')]);_0x28bd64[_0xf440('0x42')]=_['intersection'](_0x28bd64[_0xf440('0x3f')],_0x28bd64['query']);_0x29b9fe[_0xf440('0x44')]=_['intersection'](_0x28bd64['model'],qs[_0xf440('0x45')](_0x158cf7[_0xf440('0x41')][_0xf440('0x45')]));_0x29b9fe[_0xf440('0x44')]=_0x29b9fe['attributes']['length']?_0x29b9fe['attributes']:_0x28bd64[_0xf440('0x3f')];if(_0x158cf7[_0xf440('0x41')][_0xf440('0x52')]){_0x29b9fe[_0xf440('0x53')]=[{'all':!![]}];}_0x29b9fe=_['merge']({},_0x29b9fe,_0x158cf7[_0xf440('0x51')]);return db[_0xf440('0x3b')][_0xf440('0x59')](_0x29b9fe)[_0xf440('0x22')](handleEntityNotFound(_0x23acbb,null))[_0xf440('0x22')](respondWithResult(_0x23acbb,null))[_0xf440('0x56')](handleError(_0x23acbb,null));};exports[_0xf440('0x5a')]=function(_0x4615e9,_0x5e2fbb){return db['WhatsappMessage'][_0xf440('0x5a')](_0x4615e9[_0xf440('0x5b')],{})[_0xf440('0x22')](respondWithResult(_0x5e2fbb,0xc9))[_0xf440('0x56')](handleError(_0x5e2fbb,null));};exports['update']=function(_0x249383,_0x65d894){if(_0x249383[_0xf440('0x5b')]['id']){delete _0x249383['body']['id'];}return db[_0xf440('0x3b')]['find']({'where':{'id':_0x249383[_0xf440('0x58')]['id']}})['then'](handleEntityNotFound(_0x65d894,null))['then'](saveUpdates(_0x249383[_0xf440('0x5b')],null))[_0xf440('0x22')](respondWithResult(_0x65d894,null))[_0xf440('0x56')](handleError(_0x65d894,null));};exports[_0xf440('0x36')]=function(_0x2eb626,_0x1773e4){return db[_0xf440('0x3b')][_0xf440('0x59')]({'where':{'id':_0x2eb626['params']['id']}})['then'](handleEntityNotFound(_0x1773e4,null))['then'](removeEntity(_0x1773e4,null))[_0xf440('0x56')](handleError(_0x1773e4,null));};exports['describe']=function(_0x3f819e,_0x206209){return db[_0xf440('0x3b')][_0xf440('0x5c')]()[_0xf440('0x22')](respondWithResult(_0x206209,null))[_0xf440('0x56')](handleError(_0x206209,null));};var interaction_log=require(_0xf440('0x5d'))(_0xf440('0x5e'));exports['accept']=function(_0x531e1f,_0x2c7e6a,_0x2b73b6){var _0x516b0a={'agent':{},'channel':_0xf440('0x5f')};if(_0x531e1f['body']['id']){delete _0x531e1f[_0xf440('0x5b')]['id'];}_0x531e1f[_0xf440('0x5b')][_0xf440('0x60')]=!![];_0x531e1f[_0xf440('0x5b')]['readAt']=moment()[_0xf440('0x61')](_0xf440('0x62'));_0x531e1f[_0xf440('0x5b')][_0xf440('0x63')]=_0x531e1f[_0xf440('0x5b')][_0xf440('0x63')]||_0x531e1f[_0xf440('0x64')]['id'];_0x516b0a['agent']['id']=_0x531e1f[_0xf440('0x5b')][_0xf440('0x63')];return db[_0xf440('0x3b')][_0xf440('0x59')]({'where':{'id':_0x531e1f[_0xf440('0x58')]['id'],'UserId':null}})[_0xf440('0x22')](handleEntityNotFound(_0x2c7e6a,null))[_0xf440('0x22')](saveUpdates(_0x531e1f[_0xf440('0x5b')],null))['then'](function(_0x158b7f){if(_0x158b7f){_0x516b0a[_0xf440('0x28')]=_0x158b7f[_0xf440('0x65')]({'plain':!![]});return db[_0xf440('0x66')][_0xf440('0x59')]({'where':{'id':_0x158b7f[_0xf440('0x67')]}});}return null;})[_0xf440('0x22')](handleEntityNotFound(_0x2c7e6a,null))[_0xf440('0x22')](function(_0x3cb87a){if(_0x3cb87a){return _0x3cb87a[_0xf440('0x35')]({'UserId':_0x531e1f[_0xf440('0x5b')]['UserId'],'read1stAt':_[_0xf440('0x68')](_0x3cb87a[_0xf440('0x69')])?moment()[_0xf440('0x61')](_0xf440('0x62')):undefined});}return null;})['then'](function(_0x2e6cd7){if(_0x2e6cd7){_0x516b0a['interaction']=_0x2e6cd7[_0xf440('0x65')]({'plain':!![]});interaction_log[_0xf440('0x29')](_0xf440('0x6a'),_0x531e1f[_0xf440('0x64')]['id'],_0x531e1f['user'][_0xf440('0x37')],_0x531e1f[_0xf440('0x64')][_0xf440('0x6b')],_0x516b0a[_0xf440('0x6c')]['id'],_0x531e1f[_0xf440('0x5b')]?JSON['stringify'](_0x531e1f[_0xf440('0x5b')]):'null');return respondWithRpcPromise(_0xf440('0x6d'),_0xf440('0x6e'),_0x516b0a);}return null;})[_0xf440('0x22')](function(_0x3c8318){var _0x25754a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3c8318['message'][_0xf440('0x6f')];return db[_0xf440('0x70')]['query'](_0x25754a,{'type':db[_0xf440('0x71')][_0xf440('0x72')][_0xf440('0x73')],'raw':!![]})[_0xf440('0x22')](function(_0x87c8e0){return _0x87c8e0;});})['then'](function(_0x34a2c4){if(_0x34a2c4){_0x516b0a[_0xf440('0x28')]['contact']=_0x34a2c4[0x0];if(!_0x531e1f['body']['UserId'])return;return db[_0xf440('0x74')][_0xf440('0x59')]({'where':{'id':_0x531e1f[_0xf440('0x5b')][_0xf440('0x63')],'role':_0xf440('0x75')},'attributes':['id',_0xf440('0x37'),_0xf440('0x76'),_0xf440('0x77'),_0xf440('0x78')],'raw':!![]});}return null;})['then'](function(_0x5b0bc0){if(!_0x5b0bc0)return null;_0x516b0a[_0xf440('0x28')][_0xf440('0x75')]=_0x5b0bc0;return _0x516b0a;})[_0xf440('0x22')](function(_0x327d7a){if(_0x327d7a){if(_0x531e1f[_0xf440('0x5b')]['manual']){_0x516b0a[_0xf440('0x28')][_0xf440('0x79')]=util[_0xf440('0x61')](_0xf440('0x7a'),_0x531e1f['user'][_0xf440('0x37')]);_0x516b0a[_0xf440('0x28')]['channel']=_0x516b0a['channel'];_0x516b0a[_0xf440('0x28')]['motionChannel']=_0x516b0a[_0xf440('0x7b')];_0x516b0a[_0xf440('0x28')]['event']=_0xf440('0x7c');return respondWithRpcPromise(_0xf440('0x7d'),'EventManager',{'event':'acceptmessage','message':_0x516b0a[_0xf440('0x28')]},client9002)[_0xf440('0x22')](function(){return _0x516b0a;});}return _0x516b0a;}return null;})[_0xf440('0x22')](respondWithResult(_0x2c7e6a,null))[_0xf440('0x56')](handleError(_0x2c7e6a,null));};var interaction_log=require(_0xf440('0x5d'))('whatsapp-interactions');exports[_0xf440('0x33')]=function(_0x4503ac,_0x80a56d,_0x35a371){var _0x237f21={'agent':{},'channel':_0xf440('0x5f')};if(_0x4503ac[_0xf440('0x5b')]['id']){delete _0x4503ac['body']['id'];}_0x4503ac['body'][_0xf440('0x63')]=_0x4503ac['body'][_0xf440('0x63')]||_0x4503ac['user']['id'];_0x237f21[_0xf440('0x75')]['id']=_0x4503ac[_0xf440('0x5b')][_0xf440('0x63')];return db[_0xf440('0x3b')]['find']({'where':{'id':_0x4503ac['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x80a56d,null))[_0xf440('0x22')](function(_0x43afa6){if(_0x43afa6){_0x237f21[_0xf440('0x28')]=_0x43afa6[_0xf440('0x65')]({'plain':!![]});return db['WhatsappInteraction'][_0xf440('0x59')]({'where':{'id':_0x43afa6[_0xf440('0x67')]}});}return null;})[_0xf440('0x22')](handleEntityNotFound(_0x80a56d,null))[_0xf440('0x22')](function(_0x52a47a){if(_0x52a47a){_0x237f21['interaction']=_0x52a47a[_0xf440('0x65')]({'plain':!![]});interaction_log['info'](_0xf440('0x7e'),_0x4503ac[_0xf440('0x64')]['id'],_0x4503ac[_0xf440('0x64')][_0xf440('0x37')],_0x4503ac['user'][_0xf440('0x6b')],_0x237f21['interaction']['id'],_0x4503ac['body']?JSON[_0xf440('0x7f')](_0x4503ac[_0xf440('0x5b')]):_0xf440('0x80'));return respondWithRpcPromise(_0xf440('0x81'),'rejectMessage',_0x237f21);}return null;})[_0xf440('0x22')](function(_0x1798bd){var _0xc3731d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1798bd[_0xf440('0x28')]['ContactId'];return db[_0xf440('0x70')]['query'](_0xc3731d,{'type':db[_0xf440('0x71')][_0xf440('0x72')]['SELECT'],'raw':!![]})[_0xf440('0x22')](function(_0x1ee692){return _0x1ee692;});})[_0xf440('0x22')](function(_0x260e2f){if(_0x260e2f){_0x237f21[_0xf440('0x28')][_0xf440('0x82')]=_0x260e2f[0x0];if(!_0x4503ac['body'][_0xf440('0x63')])return;return db[_0xf440('0x74')][_0xf440('0x59')]({'where':{'id':_0x4503ac[_0xf440('0x5b')][_0xf440('0x63')],'role':_0xf440('0x75')},'attributes':['id',_0xf440('0x37'),_0xf440('0x76'),_0xf440('0x77'),'internal'],'raw':!![]});}return null;})[_0xf440('0x22')](function(_0x3db988){if(!_0x3db988)return null;_0x237f21['message'][_0xf440('0x75')]=_0x3db988;return _0x237f21;})['then'](function(_0x4af69f){if(_0x4af69f){_0x4af69f[_0xf440('0x28')]['interface']=util['format'](_0xf440('0x7a'),_0x4503ac[_0xf440('0x64')][_0xf440('0x37')]);_0x4af69f[_0xf440('0x28')]['channel']=_0x237f21['channel'];_0x4af69f[_0xf440('0x28')][_0xf440('0x83')]=_0x237f21[_0xf440('0x7b')];_0x4af69f[_0xf440('0x28')][_0xf440('0x84')]=_0xf440('0x33');respondWithRpcPromise(_0xf440('0x7d'),_0xf440('0x7d'),{'event':_0xf440('0x85'),'message':_0x4af69f['message']},client9002);return _0x237f21;}return null;})[_0xf440('0x22')](respondWithResult(_0x80a56d,null))[_0xf440('0x56')](handleError(_0x80a56d,null));};exports[_0xf440('0x2b')]=function(_0x162729,_0x199d79,_0x5856b5){if(_0x162729[_0xf440('0x5b')]['id']){delete _0x162729[_0xf440('0x5b')]['id'];}var _0x238517;return db[_0xf440('0x3b')][_0xf440('0x59')]({'where':{'id':_0x162729['params']['id']}})[_0xf440('0x22')](handleEntityNotFound(_0x199d79,null))['then'](function(_0x130213){if(_0x130213){_0x238517=_0x130213;return db['WhatsappAccount'][_0xf440('0x59')]({'where':{'id':_0x130213['WhatsappAccountId']}});}})['then'](handleEntityNotFound(_0x199d79,null))[_0xf440('0x22')](function(_0x2c17cb){if(_0x2c17cb){logger[_0xf440('0x23')](_0xf440('0x86'),'status','received\x20delivery\x20report\x20from',_0x2c17cb[_0xf440('0x3d')],util['inspect'](_0x162729[_0xf440('0x5b')],{'showHidden':![],'depth':null}));switch(_0x2c17cb[_0xf440('0x3d')]){case _0xf440('0x87'):if(_0x162729[_0xf440('0x5b')]['MessageSid']&&_0x162729[_0xf440('0x5b')]['MessageSid']===_0x238517[_0xf440('0x88')]&&_0x162729[_0xf440('0x5b')][_0xf440('0x89')]&&_0x162729['body'][_0xf440('0x89')]==='read'){return _0x238517[_0xf440('0x35')]({'read':!![]});}else{logger[_0xf440('0x27')](_0xf440('0x8a'),_0xf440('0x2b'),_0xf440('0x87'),util[_0xf440('0x8b')](_0x162729[_0xf440('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x238517;}})[_0xf440('0x22')](respondWithResult(_0x199d79,null))['catch'](handleError(_0x199d79,null));};
\ No newline at end of file
+var _0xc8d7=['Sequelize','SELECT','email','SIP/%s','channel','rejectmessage','WhatsappAccount','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','eml-format','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','destroy','stack','name','send','index','map','type','model','query','filters','intersection','fields','attributes','length','order','sort','where','pick','filter','merge','options','WhatsappMessage','includeAll','show','params','keys','rawAttributes','include','find','create','body','catch','update','describe','../../config/logger','whatsapp-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','contact','User','fullname','internal','manual','event','EventManager','acceptmessage','reject','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','ContactId','sequelize'];(function(_0x28f18d,_0x5be346){var _0x1f149c=function(_0x3f2044){while(--_0x3f2044){_0x28f18d['push'](_0x28f18d['shift']());}};_0x1f149c(++_0x5be346);}(_0xc8d7,0x122));var _0x7c8d=function(_0x50b457,_0x85fdb5){_0x50b457=_0x50b457-0x0;var _0x328b1e=_0xc8d7[_0x50b457];return _0x328b1e;};'use strict';var emlformat=require(_0x7c8d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7c8d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7c8d('0x2'));var BPromise=require(_0x7c8d('0x3'));var Mustache=require(_0x7c8d('0x4'));var util=require(_0x7c8d('0x5'));var path=require(_0x7c8d('0x6'));var sox=require('sox');var csv=require(_0x7c8d('0x7'));var ejs=require(_0x7c8d('0x8'));var fs=require('fs');var fs_extra=require(_0x7c8d('0x9'));var _=require(_0x7c8d('0xa'));var squel=require(_0x7c8d('0xb'));var crypto=require('crypto');var jsforce=require(_0x7c8d('0xc'));var deskjs=require(_0x7c8d('0xd'));var toCsv=require(_0x7c8d('0x7'));var querystring=require(_0x7c8d('0xe'));var Papa=require(_0x7c8d('0xf'));var Redis=require(_0x7c8d('0x10'));var authService=require(_0x7c8d('0x11'));var qs=require(_0x7c8d('0x12'));var as=require(_0x7c8d('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x7c8d('0x14'));var config=require(_0x7c8d('0x15'));var licenseUtil=require(_0x7c8d('0x16'));var db=require(_0x7c8d('0x17'))['db'];config['redis']=_[_0x7c8d('0x18')](config['redis'],{'host':_0x7c8d('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7c8d('0x1a'))[_0x7c8d('0x1b')](socket);var jayson=require(_0x7c8d('0x1c'));var client=jayson[_0x7c8d('0x1d')]['http']({'port':0x232c});var client9002=jayson[_0x7c8d('0x1d')][_0x7c8d('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x17a1ff,_0x18c2bd,_0x41f333,_0x2c009f){return new BPromise(function(_0x57b86d,_0x683cbd){var _0x5a0037=_0x2c009f||client;return _0x5a0037[_0x7c8d('0x1f')](_0x17a1ff,_0x41f333)[_0x7c8d('0x20')](function(_0x6980d3){logger[_0x7c8d('0x21')]('WhatsappMessage,\x20%s,\x20%s',_0x18c2bd,'request\x20sent');logger[_0x7c8d('0x22')](_0x7c8d('0x23'),_0x18c2bd,_0x7c8d('0x24'),JSON[_0x7c8d('0x25')](_0x6980d3));if(_0x6980d3['error']){if(_0x6980d3[_0x7c8d('0x26')][_0x7c8d('0x27')]===0x1f4){logger[_0x7c8d('0x26')](_0x7c8d('0x28'),_0x18c2bd,_0x6980d3[_0x7c8d('0x26')]['message']);return _0x683cbd(_0x6980d3[_0x7c8d('0x26')][_0x7c8d('0x29')]);}logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x18c2bd,_0x6980d3[_0x7c8d('0x26')]['message']);return _0x57b86d(_0x6980d3[_0x7c8d('0x26')][_0x7c8d('0x29')]);}else{logger['info'](_0x7c8d('0x28'),_0x18c2bd,'request\x20sent');_0x57b86d(_0x6980d3[_0x7c8d('0x2a')][_0x7c8d('0x29')]);}})['catch'](function(_0x4bc7ee){logger[_0x7c8d('0x26')]('WhatsappMessage,\x20%s,\x20%s',_0x18c2bd,_0x4bc7ee);_0x683cbd(_0x4bc7ee);});});}function respondWithStatusCode(_0x53ae56,_0x40a1df){_0x40a1df=_0x40a1df||0xcc;return function(_0x37c81e){if(_0x37c81e){return _0x53ae56[_0x7c8d('0x2b')](_0x40a1df);}return _0x53ae56[_0x7c8d('0x2c')](_0x40a1df)[_0x7c8d('0x2d')]();};}function respondWithResult(_0x35890e,_0x43510f){_0x43510f=_0x43510f||0xc8;return function(_0x5d7d21){if(_0x5d7d21){return _0x35890e[_0x7c8d('0x2c')](_0x43510f)[_0x7c8d('0x2e')](_0x5d7d21);}};}function respondWithFilteredResult(_0x252da5,_0x272ab6){return function(_0x12a522){if(_0x12a522){var _0x3855e3=typeof _0x272ab6[_0x7c8d('0x2f')]===_0x7c8d('0x30')&&typeof _0x272ab6[_0x7c8d('0x31')]===_0x7c8d('0x30');var _0x21edf8=_0x12a522['count'];var _0x2de02f=_0x3855e3?0x0:_0x272ab6[_0x7c8d('0x2f')];var _0x54c8c5=_0x3855e3?_0x12a522[_0x7c8d('0x32')]:_0x272ab6[_0x7c8d('0x2f')]+_0x272ab6['limit'];var _0xd8cd4;if(_0x54c8c5>=_0x21edf8){_0x54c8c5=_0x21edf8;_0xd8cd4=0xc8;}else{_0xd8cd4=0xce;}_0x252da5[_0x7c8d('0x2c')](_0xd8cd4);return _0x252da5[_0x7c8d('0x33')](_0x7c8d('0x34'),_0x2de02f+'-'+_0x54c8c5+'/'+_0x21edf8)[_0x7c8d('0x2e')](_0x12a522);}return null;};}function patchUpdates(_0x2191f7){return function(_0x478312){try{jsonpatch[_0x7c8d('0x35')](_0x478312,_0x2191f7,!![]);}catch(_0x109dd5){return BPromise['reject'](_0x109dd5);}return _0x478312['save']();};}function saveUpdates(_0x3b94f8,_0x577544){return function(_0x571222){if(_0x571222){return _0x571222['update'](_0x3b94f8)[_0x7c8d('0x20')](function(_0xe7d31d){return _0xe7d31d;});}return null;};}function removeEntity(_0x3290bb,_0x4f24c3){return function(_0x421848){if(_0x421848){return _0x421848[_0x7c8d('0x36')]()[_0x7c8d('0x20')](function(){_0x3290bb[_0x7c8d('0x2c')](0xcc)[_0x7c8d('0x2d')]();});}};}function handleEntityNotFound(_0x4d7769,_0x32a594){return function(_0x3453b0){if(!_0x3453b0){_0x4d7769['sendStatus'](0x194);}return _0x3453b0;};}function handleError(_0x3775b0,_0x561efb){_0x561efb=_0x561efb||0x1f4;return function(_0x46306b){logger[_0x7c8d('0x26')](_0x46306b[_0x7c8d('0x37')]);if(_0x46306b[_0x7c8d('0x38')]){delete _0x46306b[_0x7c8d('0x38')];}_0x3775b0[_0x7c8d('0x2c')](_0x561efb)[_0x7c8d('0x39')](_0x46306b);};}exports[_0x7c8d('0x3a')]=function(_0x494d9f,_0x510b6f){var _0x502bf8={},_0x401064={},_0x3a6e1f={'count':0x0,'rows':[]};var _0x387fa5=_[_0x7c8d('0x3b')](db['WhatsappMessage']['rawAttributes'],function(_0x2b83f3){return{'name':_0x2b83f3['fieldName'],'type':_0x2b83f3[_0x7c8d('0x3c')]['key']};});_0x401064[_0x7c8d('0x3d')]=_['map'](_0x387fa5,_0x7c8d('0x38'));_0x401064[_0x7c8d('0x3e')]=_['keys'](_0x494d9f[_0x7c8d('0x3e')]);_0x401064[_0x7c8d('0x3f')]=_[_0x7c8d('0x40')](_0x401064[_0x7c8d('0x3d')],_0x401064['query']);_0x502bf8['attributes']=_[_0x7c8d('0x40')](_0x401064['model'],qs['fields'](_0x494d9f[_0x7c8d('0x3e')][_0x7c8d('0x41')]));_0x502bf8[_0x7c8d('0x42')]=_0x502bf8[_0x7c8d('0x42')][_0x7c8d('0x43')]?_0x502bf8[_0x7c8d('0x42')]:_0x401064[_0x7c8d('0x3d')];if(!_0x494d9f[_0x7c8d('0x3e')]['hasOwnProperty']('nolimit')){_0x502bf8['limit']=qs[_0x7c8d('0x31')](_0x494d9f['query'][_0x7c8d('0x31')]);_0x502bf8['offset']=qs[_0x7c8d('0x2f')](_0x494d9f['query'][_0x7c8d('0x2f')]);}_0x502bf8[_0x7c8d('0x44')]=qs[_0x7c8d('0x45')](_0x494d9f[_0x7c8d('0x3e')][_0x7c8d('0x45')]);_0x502bf8[_0x7c8d('0x46')]=qs[_0x7c8d('0x3f')](_[_0x7c8d('0x47')](_0x494d9f[_0x7c8d('0x3e')],_0x401064['filters']),_0x387fa5);if(_0x494d9f[_0x7c8d('0x3e')][_0x7c8d('0x48')]){_0x502bf8[_0x7c8d('0x46')]=_[_0x7c8d('0x49')](_0x502bf8[_0x7c8d('0x46')],{'$or':_[_0x7c8d('0x3b')](_0x387fa5,function(_0x64e1a6){if(_0x64e1a6['type']!=='VIRTUAL'){var _0x5cae8e={};_0x5cae8e[_0x64e1a6[_0x7c8d('0x38')]]={'$like':'%'+_0x494d9f[_0x7c8d('0x3e')][_0x7c8d('0x48')]+'%'};return _0x5cae8e;}})});}_0x502bf8=_[_0x7c8d('0x49')]({},_0x502bf8,_0x494d9f[_0x7c8d('0x4a')]);var _0x57aeca={'where':_0x502bf8[_0x7c8d('0x46')]};return db[_0x7c8d('0x4b')][_0x7c8d('0x32')](_0x57aeca)[_0x7c8d('0x20')](function(_0x43875f){_0x3a6e1f[_0x7c8d('0x32')]=_0x43875f;if(_0x494d9f[_0x7c8d('0x3e')][_0x7c8d('0x4c')]){_0x502bf8['include']=[{'all':!![]}];}return db[_0x7c8d('0x4b')]['findAll'](_0x502bf8);})[_0x7c8d('0x20')](function(_0x14bbc9){_0x3a6e1f['rows']=_0x14bbc9;return _0x3a6e1f;})[_0x7c8d('0x20')](respondWithFilteredResult(_0x510b6f,_0x502bf8))['catch'](handleError(_0x510b6f,null));};exports[_0x7c8d('0x4d')]=function(_0x29326f,_0x5d9868){var _0xa5f4ee={'raw':!![],'where':{'id':_0x29326f[_0x7c8d('0x4e')]['id']}},_0x3d42be={};_0x3d42be[_0x7c8d('0x3d')]=_[_0x7c8d('0x4f')](db[_0x7c8d('0x4b')][_0x7c8d('0x50')]);_0x3d42be[_0x7c8d('0x3e')]=_[_0x7c8d('0x4f')](_0x29326f[_0x7c8d('0x3e')]);_0x3d42be['filters']=_[_0x7c8d('0x40')](_0x3d42be[_0x7c8d('0x3d')],_0x3d42be[_0x7c8d('0x3e')]);_0xa5f4ee[_0x7c8d('0x42')]=_['intersection'](_0x3d42be[_0x7c8d('0x3d')],qs['fields'](_0x29326f[_0x7c8d('0x3e')][_0x7c8d('0x41')]));_0xa5f4ee[_0x7c8d('0x42')]=_0xa5f4ee[_0x7c8d('0x42')]['length']?_0xa5f4ee['attributes']:_0x3d42be[_0x7c8d('0x3d')];if(_0x29326f[_0x7c8d('0x3e')][_0x7c8d('0x4c')]){_0xa5f4ee[_0x7c8d('0x51')]=[{'all':!![]}];}_0xa5f4ee=_[_0x7c8d('0x49')]({},_0xa5f4ee,_0x29326f['options']);return db[_0x7c8d('0x4b')][_0x7c8d('0x52')](_0xa5f4ee)[_0x7c8d('0x20')](handleEntityNotFound(_0x5d9868,null))[_0x7c8d('0x20')](respondWithResult(_0x5d9868,null))['catch'](handleError(_0x5d9868,null));};exports[_0x7c8d('0x53')]=function(_0x45352c,_0x43ac39){return db[_0x7c8d('0x4b')][_0x7c8d('0x53')](_0x45352c[_0x7c8d('0x54')],{})[_0x7c8d('0x20')](respondWithResult(_0x43ac39,0xc9))[_0x7c8d('0x55')](handleError(_0x43ac39,null));};exports[_0x7c8d('0x56')]=function(_0x6c7fbe,_0x2065c0){if(_0x6c7fbe['body']['id']){delete _0x6c7fbe[_0x7c8d('0x54')]['id'];}return db['WhatsappMessage']['find']({'where':{'id':_0x6c7fbe['params']['id']}})[_0x7c8d('0x20')](handleEntityNotFound(_0x2065c0,null))[_0x7c8d('0x20')](saveUpdates(_0x6c7fbe['body'],null))[_0x7c8d('0x20')](respondWithResult(_0x2065c0,null))['catch'](handleError(_0x2065c0,null));};exports[_0x7c8d('0x36')]=function(_0x5dc3b5,_0x422817){return db['WhatsappMessage'][_0x7c8d('0x52')]({'where':{'id':_0x5dc3b5[_0x7c8d('0x4e')]['id']}})['then'](handleEntityNotFound(_0x422817,null))[_0x7c8d('0x20')](removeEntity(_0x422817,null))['catch'](handleError(_0x422817,null));};exports[_0x7c8d('0x57')]=function(_0x12bfa7,_0x33c2fc){return db[_0x7c8d('0x4b')][_0x7c8d('0x57')]()[_0x7c8d('0x20')](respondWithResult(_0x33c2fc,null))[_0x7c8d('0x55')](handleError(_0x33c2fc,null));};var interaction_log=require(_0x7c8d('0x58'))(_0x7c8d('0x59'));exports[_0x7c8d('0x5a')]=function(_0x139da9,_0xc2bd19,_0x25c18b){var _0x2193dd={'agent':{},'channel':'whatsapp'};if(_0x139da9[_0x7c8d('0x54')]['id']){delete _0x139da9[_0x7c8d('0x54')]['id'];}_0x139da9['body'][_0x7c8d('0x5b')]=!![];_0x139da9[_0x7c8d('0x54')][_0x7c8d('0x5c')]=moment()[_0x7c8d('0x5d')](_0x7c8d('0x5e'));_0x139da9[_0x7c8d('0x54')][_0x7c8d('0x5f')]=_0x139da9[_0x7c8d('0x54')][_0x7c8d('0x5f')]||_0x139da9[_0x7c8d('0x60')]['id'];_0x2193dd[_0x7c8d('0x61')]['id']=_0x139da9['body'][_0x7c8d('0x5f')];return db['WhatsappMessage']['find']({'where':{'id':_0x139da9[_0x7c8d('0x4e')]['id'],'UserId':null}})[_0x7c8d('0x20')](handleEntityNotFound(_0xc2bd19,null))[_0x7c8d('0x20')](saveUpdates(_0x139da9[_0x7c8d('0x54')],null))[_0x7c8d('0x20')](function(_0x32261b){if(_0x32261b){_0x2193dd[_0x7c8d('0x29')]=_0x32261b[_0x7c8d('0x62')]({'plain':!![]});return db[_0x7c8d('0x63')][_0x7c8d('0x52')]({'where':{'id':_0x32261b[_0x7c8d('0x64')]}});}return null;})['then'](handleEntityNotFound(_0xc2bd19,null))[_0x7c8d('0x20')](function(_0x143321){if(_0x143321){return _0x143321[_0x7c8d('0x56')]({'UserId':_0x139da9['body']['UserId'],'read1stAt':_[_0x7c8d('0x65')](_0x143321[_0x7c8d('0x66')])?moment()[_0x7c8d('0x5d')](_0x7c8d('0x5e')):undefined});}return null;})[_0x7c8d('0x20')](function(_0x33e985){if(_0x33e985){_0x2193dd[_0x7c8d('0x67')]=_0x33e985[_0x7c8d('0x62')]({'plain':!![]});interaction_log[_0x7c8d('0x21')](_0x7c8d('0x68'),_0x139da9[_0x7c8d('0x60')]['id'],_0x139da9[_0x7c8d('0x60')][_0x7c8d('0x38')],_0x139da9[_0x7c8d('0x60')][_0x7c8d('0x69')],_0x2193dd[_0x7c8d('0x67')]['id'],_0x139da9['body']?JSON[_0x7c8d('0x25')](_0x139da9[_0x7c8d('0x54')]):_0x7c8d('0x6a'));return respondWithRpcPromise(_0x7c8d('0x6b'),_0x7c8d('0x6c'),_0x2193dd);}return null;})[_0x7c8d('0x20')](function(_0x52af42){var _0x2c3016=_0x7c8d('0x6d')+_0x52af42[_0x7c8d('0x29')]['ContactId'];return db['sequelize'][_0x7c8d('0x3e')](_0x2c3016,{'type':db['Sequelize'][_0x7c8d('0x6e')]['SELECT'],'raw':!![]})[_0x7c8d('0x20')](function(_0x324e8f){return _0x324e8f;});})[_0x7c8d('0x20')](function(_0x43a407){if(_0x43a407){_0x2193dd[_0x7c8d('0x29')][_0x7c8d('0x6f')]=_0x43a407[0x0];if(!_0x139da9[_0x7c8d('0x54')]['UserId'])return;return db[_0x7c8d('0x70')][_0x7c8d('0x52')]({'where':{'id':_0x139da9['body'][_0x7c8d('0x5f')],'role':'agent'},'attributes':['id',_0x7c8d('0x38'),_0x7c8d('0x71'),'email',_0x7c8d('0x72')],'raw':!![]});}return null;})[_0x7c8d('0x20')](function(_0x121c98){if(!_0x121c98)return null;_0x2193dd[_0x7c8d('0x29')][_0x7c8d('0x61')]=_0x121c98;return _0x2193dd;})['then'](function(_0xf37782){if(_0xf37782){if(_0x139da9[_0x7c8d('0x54')][_0x7c8d('0x73')]){_0x2193dd[_0x7c8d('0x29')]['interface']=util['format']('SIP/%s',_0x139da9[_0x7c8d('0x60')]['name']);_0x2193dd['message']['channel']=_0x2193dd['channel'];_0x2193dd[_0x7c8d('0x29')][_0x7c8d('0x74')]=_0x7c8d('0x5a');return respondWithRpcPromise('EventManager',_0x7c8d('0x75'),{'event':_0x7c8d('0x76'),'message':_0x2193dd[_0x7c8d('0x29')]},client9002)[_0x7c8d('0x20')](function(){return _0x2193dd;});}return _0x2193dd;}return null;})[_0x7c8d('0x20')](respondWithResult(_0xc2bd19,null))[_0x7c8d('0x55')](handleError(_0xc2bd19,null));};var interaction_log=require(_0x7c8d('0x58'))(_0x7c8d('0x59'));exports[_0x7c8d('0x77')]=function(_0x344c36,_0x4f1d56,_0x72b833){var _0x5d5333={'agent':{},'channel':'whatsapp'};if(_0x344c36['body']['id']){delete _0x344c36[_0x7c8d('0x54')]['id'];}_0x344c36[_0x7c8d('0x54')]['UserId']=_0x344c36[_0x7c8d('0x54')][_0x7c8d('0x5f')]||_0x344c36[_0x7c8d('0x60')]['id'];_0x5d5333[_0x7c8d('0x61')]['id']=_0x344c36['body'][_0x7c8d('0x5f')];return db[_0x7c8d('0x4b')][_0x7c8d('0x52')]({'where':{'id':_0x344c36['params']['id'],'UserId':null}})[_0x7c8d('0x20')](handleEntityNotFound(_0x4f1d56,null))[_0x7c8d('0x20')](function(_0x301ab9){if(_0x301ab9){_0x5d5333[_0x7c8d('0x29')]=_0x301ab9['get']({'plain':!![]});return db[_0x7c8d('0x63')][_0x7c8d('0x52')]({'where':{'id':_0x301ab9[_0x7c8d('0x64')]}});}return null;})[_0x7c8d('0x20')](handleEntityNotFound(_0x4f1d56,null))[_0x7c8d('0x20')](function(_0x3b65f7){if(_0x3b65f7){_0x5d5333['interaction']=_0x3b65f7[_0x7c8d('0x62')]({'plain':!![]});interaction_log[_0x7c8d('0x21')](_0x7c8d('0x78'),_0x344c36[_0x7c8d('0x60')]['id'],_0x344c36[_0x7c8d('0x60')][_0x7c8d('0x38')],_0x344c36[_0x7c8d('0x60')][_0x7c8d('0x69')],_0x5d5333[_0x7c8d('0x67')]['id'],_0x344c36[_0x7c8d('0x54')]?JSON[_0x7c8d('0x25')](_0x344c36['body']):_0x7c8d('0x6a'));return respondWithRpcPromise('RejectMessage',_0x7c8d('0x79'),_0x5d5333);}return null;})[_0x7c8d('0x20')](function(_0x5eb4be){var _0x245277=_0x7c8d('0x6d')+_0x5eb4be['message'][_0x7c8d('0x7a')];return db[_0x7c8d('0x7b')][_0x7c8d('0x3e')](_0x245277,{'type':db[_0x7c8d('0x7c')][_0x7c8d('0x6e')][_0x7c8d('0x7d')],'raw':!![]})[_0x7c8d('0x20')](function(_0x52c53a){return _0x52c53a;});})['then'](function(_0x308d70){if(_0x308d70){_0x5d5333[_0x7c8d('0x29')][_0x7c8d('0x6f')]=_0x308d70[0x0];if(!_0x344c36[_0x7c8d('0x54')][_0x7c8d('0x5f')])return;return db[_0x7c8d('0x70')]['find']({'where':{'id':_0x344c36[_0x7c8d('0x54')][_0x7c8d('0x5f')],'role':_0x7c8d('0x61')},'attributes':['id','name',_0x7c8d('0x71'),_0x7c8d('0x7e'),_0x7c8d('0x72')],'raw':!![]});}return null;})[_0x7c8d('0x20')](function(_0x3be5aa){if(!_0x3be5aa)return null;_0x5d5333[_0x7c8d('0x29')][_0x7c8d('0x61')]=_0x3be5aa;return _0x5d5333;})[_0x7c8d('0x20')](function(_0x14a67e){if(_0x14a67e){_0x14a67e[_0x7c8d('0x29')]['interface']=util['format'](_0x7c8d('0x7f'),_0x344c36['user'][_0x7c8d('0x38')]);_0x14a67e[_0x7c8d('0x29')][_0x7c8d('0x80')]=_0x5d5333[_0x7c8d('0x80')];_0x14a67e[_0x7c8d('0x29')][_0x7c8d('0x74')]=_0x7c8d('0x77');respondWithRpcPromise(_0x7c8d('0x75'),_0x7c8d('0x75'),{'event':_0x7c8d('0x81'),'message':_0x14a67e['message']},client9002);return _0x5d5333;}return null;})['then'](respondWithResult(_0x4f1d56,null))[_0x7c8d('0x55')](handleError(_0x4f1d56,null));};exports[_0x7c8d('0x2c')]=function(_0x14d15d,_0x26a34c,_0x7fb046){if(_0x14d15d[_0x7c8d('0x54')]['id']){delete _0x14d15d[_0x7c8d('0x54')]['id'];}var _0x5e6282;return db[_0x7c8d('0x4b')][_0x7c8d('0x52')]({'where':{'id':_0x14d15d['params']['id']}})[_0x7c8d('0x20')](handleEntityNotFound(_0x26a34c,null))[_0x7c8d('0x20')](function(_0x559953){if(_0x559953){_0x5e6282=_0x559953;return db[_0x7c8d('0x82')]['find']({'where':{'id':_0x559953['WhatsappAccountId']}});}})[_0x7c8d('0x20')](handleEntityNotFound(_0x26a34c,null))[_0x7c8d('0x20')](function(_0xd977a3){if(_0xd977a3){logger[_0x7c8d('0x22')](_0x7c8d('0x83'),_0x7c8d('0x2c'),_0x7c8d('0x84'),_0xd977a3['type'],util[_0x7c8d('0x85')](_0x14d15d[_0x7c8d('0x54')],{'showHidden':![],'depth':null}));switch(_0xd977a3[_0x7c8d('0x3c')]){case _0x7c8d('0x86'):if(_0x14d15d[_0x7c8d('0x54')][_0x7c8d('0x87')]&&_0x14d15d[_0x7c8d('0x54')]['MessageSid']===_0x5e6282[_0x7c8d('0x88')]&&_0x14d15d[_0x7c8d('0x54')]['MessageStatus']&&_0x14d15d[_0x7c8d('0x54')][_0x7c8d('0x89')]===_0x7c8d('0x5b')){return _0x5e6282[_0x7c8d('0x56')]({'read':!![]});}else{logger[_0x7c8d('0x26')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x7c8d('0x2c'),'twilio',util[_0x7c8d('0x85')](_0x14d15d['body'],{'showHidden':![],'depth':null}));}break;}return _0x5e6282;}})[_0x7c8d('0x20')](respondWithResult(_0x26a34c,null))[_0x7c8d('0x55')](handleError(_0x26a34c,null));};
\ No newline at end of file
index 4630c72..3b9ed27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f4d=['events','../../mysqldb','WhatsappMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x50a004,_0x193d84){var _0x5e9992=function(_0x3c8c37){while(--_0x3c8c37){_0x50a004['push'](_0x50a004['shift']());}};_0x5e9992(++_0x193d84);}(_0x9f4d,0xb0));var _0xd9f4=function(_0x5c814d,_0x4d81c7){_0x5c814d=_0x5c814d-0x0;var _0x89b71=_0x9f4d[_0x5c814d];return _0x89b71;};'use strict';var EventEmitter=require(_0xd9f4('0x0'));var WhatsappMessage=require(_0xd9f4('0x1'))['db'][_0xd9f4('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xd9f4('0x3')](0x0);var events={'afterCreate':_0xd9f4('0x4'),'afterUpdate':_0xd9f4('0x5'),'afterDestroy':_0xd9f4('0x6')};function emitEvent(_0x273eb9){return function(_0x7dccea,_0x5e0ab0,_0x2c39cb){WhatsappMessageEvents['emit'](_0x273eb9+':'+_0x7dccea['id'],_0x7dccea);WhatsappMessageEvents[_0xd9f4('0x7')](_0x273eb9,_0x7dccea);_0x2c39cb(null);};}for(var e in events){if(events[_0xd9f4('0x8')](e)){var event=events[e];WhatsappMessage[_0xd9f4('0x9')](e,emitEvent(event));}}module[_0xd9f4('0xa')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x1339=['update','remove','emit','hasOwnProperty','exports','WhatsappMessage','setMaxListeners','save'];(function(_0x37cec3,_0x414214){var _0x13a137=function(_0x3f42cf){while(--_0x3f42cf){_0x37cec3['push'](_0x37cec3['shift']());}};_0x13a137(++_0x414214);}(_0x1339,0x1ed));var _0x9133=function(_0x1a68dd,_0x3fd6aa){_0x1a68dd=_0x1a68dd-0x0;var _0x3a7101=_0x1339[_0x1a68dd];return _0x3a7101;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require('../../mysqldb')['db'][_0x9133('0x0')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x9133('0x1')](0x0);var events={'afterCreate':_0x9133('0x2'),'afterUpdate':_0x9133('0x3'),'afterDestroy':_0x9133('0x4')};function emitEvent(_0x192d48){return function(_0x176e80,_0x110c51,_0x558345){WhatsappMessageEvents[_0x9133('0x5')](_0x192d48+':'+_0x176e80['id'],_0x176e80);WhatsappMessageEvents[_0x9133('0x5')](_0x192d48,_0x176e80);_0x558345(null);};}for(var e in events){if(events[_0x9133('0x6')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0x9133('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
index ede0871..1d3b5f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2162=['/api/whatsapp/messages/','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','finally','util','api','moment','request-promise','path','../../config/environment','./whatsappMessage.attributes','exports','whatsapp_messages','messageId','fti_whatsapp_messages','get','direction','toLowerCase','out','secret','isNil','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','update','catch','error','WhatsappAccount','find','WhatsappAccountId','then','type','twilio','accountSid','authToken','phone','messages','create','whatsapp:'];(function(_0x46bee1,_0x25d4d4){var _0x279156=function(_0x311aba){while(--_0x311aba){_0x46bee1['push'](_0x46bee1['shift']());}};_0x279156(++_0x25d4d4);}(_0x2162,0x110));var _0x2216=function(_0x1bca2e,_0x2e5dbc){_0x1bca2e=_0x1bca2e-0x0;var _0x11ab8d=_0x2162[_0x1bca2e];return _0x11ab8d;};'use strict';var _=require('lodash');var util=require(_0x2216('0x0'));var logger=require('../../config/logger')(_0x2216('0x1'));var moment=require(_0x2216('0x2'));var BPromise=require('bluebird');var rp=require(_0x2216('0x3'));var fs=require('fs');var path=require(_0x2216('0x4'));var rimraf=require('rimraf');var config=require(_0x2216('0x5'));var attributes=require(_0x2216('0x6'));module[_0x2216('0x7')]=function(_0x524a11,_0x39378b){return _0x524a11['define']('WhatsappMessage',attributes,{'tableName':_0x2216('0x8'),'paranoid':![],'indexes':[{'name':_0x2216('0x9'),'fields':[_0x2216('0x9')]},{'name':_0x2216('0xa'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5ef687,_0x4b16f8,_0x26087b){var _0x291559=_0x524a11['models'];var _0x31d9b7=_0x5ef687[_0x2216('0xb')]({'plain':!![]});if(_0x31d9b7[_0x2216('0xc')][_0x2216('0xd')]()==='in'||_0x31d9b7['direction'][_0x2216('0xd')]()===_0x2216('0xe')&&!_0x31d9b7[_0x2216('0xf')]&&!_[_0x2216('0x10')](_0x31d9b7[_0x2216('0x11')])){_0x291559[_0x2216('0x12')][_0x2216('0x13')]({'where':{'id':_0x31d9b7[_0x2216('0x14')]}})['then'](function(_0xf273d8){if(_0xf273d8){_0xf273d8[_0x2216('0x15')]({'lastMsgAt':_0x31d9b7['createdAt'],'lastMsgDirection':_0x31d9b7[_0x2216('0xc')]['toLowerCase']()});}})[_0x2216('0x16')](function(_0x9e6c0b){console[_0x2216('0x17')](_0x9e6c0b);});}if(_0x31d9b7[_0x2216('0xc')]===_0x2216('0xe')&&!_0x31d9b7[_0x2216('0xf')]){var _0x1aa3c9;_0x291559[_0x2216('0x18')][_0x2216('0x19')]({'where':{'id':_0x31d9b7[_0x2216('0x1a')]},'raw':!![]})[_0x2216('0x1b')](function(_0x280c71){_0x1aa3c9=_0x280c71;if(_0x1aa3c9&&_0x1aa3c9[_0x2216('0x1c')]){switch(_0x1aa3c9[_0x2216('0x1c')]){case _0x2216('0x1d'):var _0x4ea6c6=require(_0x2216('0x1d'));if(_0x1aa3c9[_0x2216('0x1e')]&&_0x1aa3c9[_0x2216('0x1f')]&&_0x1aa3c9[_0x2216('0x20')]){var _0x47a40f=new _0x4ea6c6(_0x1aa3c9[_0x2216('0x1e')],_0x1aa3c9[_0x2216('0x1f')]);_0x47a40f[_0x2216('0x21')][_0x2216('0x22')]({'body':_0x31d9b7['body'],'to':'whatsapp:'+_0x31d9b7['phone'],'from':_0x2216('0x23')+_0x1aa3c9[_0x2216('0x20')],'statusCallback':_0x1aa3c9['remote']+_0x2216('0x24')+_0x31d9b7['id']+_0x2216('0x25')+_0x1aa3c9[_0x2216('0x26')]})[_0x2216('0x1b')](function(_0x281531){if(_0x281531['sid']){return _0x5ef687[_0x2216('0x15')]({'messageId':_0x281531[_0x2216('0x27')]});}})[_0x2216('0x16')](function(_0x15fded){logger['error'](_0x2216('0x28'),_0x2216('0x29'),_0x2216('0x1d'),util[_0x2216('0x2a')](_0x15fded,{'showHidden':![],'depth':null}));});}else{logger[_0x2216('0x17')](_0x2216('0x28'),_0x2216('0x29'),_0x2216('0x1d'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})[_0x2216('0x2b')](function(){_0x26087b();});}else{_0x26087b();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xd876=['../../config/environment','./whatsappMessage.attributes','exports','WhatsappMessage','messageId','fti_whatsapp_messages','body','FULLTEXT','get','direction','toLowerCase','out','secret','isNil','UserId','WhatsappInteraction','then','update','createdAt','error','WhatsappAccount','find','WhatsappAccountId','type','twilio','authToken','phone','accountSid','messages','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','token','sid','catch','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally','utf8mb4','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5f23b3,_0x34c03e){var _0x5cc7f6=function(_0x3d7925){while(--_0x3d7925){_0x5f23b3['push'](_0x5f23b3['shift']());}};_0x5cc7f6(++_0x34c03e);}(_0xd876,0xed));var _0x6d87=function(_0x12bc39,_0x36f9db){_0x12bc39=_0x12bc39-0x0;var _0x52a8b0=_0xd876[_0x12bc39];return _0x52a8b0;};'use strict';var _=require(_0x6d87('0x0'));var util=require(_0x6d87('0x1'));var logger=require('../../config/logger')(_0x6d87('0x2'));var moment=require(_0x6d87('0x3'));var BPromise=require(_0x6d87('0x4'));var rp=require(_0x6d87('0x5'));var fs=require('fs');var path=require(_0x6d87('0x6'));var rimraf=require(_0x6d87('0x7'));var config=require(_0x6d87('0x8'));var attributes=require(_0x6d87('0x9'));module[_0x6d87('0xa')]=function(_0x3b1fa3,_0x500178){return _0x3b1fa3['define'](_0x6d87('0xb'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0x6d87('0xc'),'fields':['messageId']},{'name':_0x6d87('0xd'),'fields':[_0x6d87('0xe')],'type':_0x6d87('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x17269d,_0x2aea89,_0x9d81fc){var _0x3f1320=_0x3b1fa3['models'];var _0x11b7d6=_0x17269d[_0x6d87('0x10')]({'plain':!![]});if(_0x11b7d6[_0x6d87('0x11')][_0x6d87('0x12')]()==='in'||_0x11b7d6[_0x6d87('0x11')]['toLowerCase']()===_0x6d87('0x13')&&!_0x11b7d6[_0x6d87('0x14')]&&!_[_0x6d87('0x15')](_0x11b7d6[_0x6d87('0x16')])){_0x3f1320[_0x6d87('0x17')]['findOne']({'where':{'id':_0x11b7d6['WhatsappInteractionId']}})[_0x6d87('0x18')](function(_0x271036){if(_0x271036){_0x271036[_0x6d87('0x19')]({'lastMsgAt':_0x11b7d6[_0x6d87('0x1a')],'lastMsgDirection':_0x11b7d6[_0x6d87('0x11')]['toLowerCase']()});}})['catch'](function(_0x40ae2b){console[_0x6d87('0x1b')](_0x40ae2b);});}if(_0x11b7d6[_0x6d87('0x11')]===_0x6d87('0x13')&&!_0x11b7d6[_0x6d87('0x14')]){var _0x40ce6c;_0x3f1320[_0x6d87('0x1c')][_0x6d87('0x1d')]({'where':{'id':_0x11b7d6[_0x6d87('0x1e')]},'raw':!![]})['then'](function(_0x5d836d){_0x40ce6c=_0x5d836d;if(_0x40ce6c&&_0x40ce6c['type']){switch(_0x40ce6c[_0x6d87('0x1f')]){case _0x6d87('0x20'):var _0xc21b0=require('twilio');if(_0x40ce6c['accountSid']&&_0x40ce6c[_0x6d87('0x21')]&&_0x40ce6c[_0x6d87('0x22')]){var _0x3b288f=new _0xc21b0(_0x40ce6c[_0x6d87('0x23')],_0x40ce6c[_0x6d87('0x21')]);_0x3b288f[_0x6d87('0x24')]['create']({'body':_0x11b7d6[_0x6d87('0xe')],'to':_0x6d87('0x25')+_0x11b7d6[_0x6d87('0x22')],'from':_0x6d87('0x25')+_0x40ce6c[_0x6d87('0x22')],'statusCallback':_0x40ce6c[_0x6d87('0x26')]+_0x6d87('0x27')+_0x11b7d6['id']+_0x6d87('0x28')+_0x40ce6c[_0x6d87('0x29')]})[_0x6d87('0x18')](function(_0x44b609){if(_0x44b609[_0x6d87('0x2a')]){return _0x17269d[_0x6d87('0x19')]({'messageId':_0x44b609[_0x6d87('0x2a')]});}})[_0x6d87('0x2b')](function(_0x2c9085){logger[_0x6d87('0x1b')](_0x6d87('0x2c'),_0x6d87('0x2d'),_0x6d87('0x20'),util['inspect'](_0x2c9085,{'showHidden':![],'depth':null}));});}else{logger[_0x6d87('0x1b')](_0x6d87('0x2c'),'afterCreate',_0x6d87('0x20'),_0x6d87('0x2e'));}break;}}})[_0x6d87('0x2f')](function(){_0x9d81fc();});}else{_0x9d81fc();}}},'charset':_0x6d87('0x30'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 804e6b8..31bbfcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9726=['moment','bluebird','randomstring','../../mysqldb','../../config/logger','jayson/promise','client','http','defaults','redis','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','create','body','options','raw','CreateWhatsappMessage','debug','lodash'];(function(_0x1c7187,_0x32311e){var _0x2028dc=function(_0x1127dc){while(--_0x1127dc){_0x1c7187['push'](_0x1c7187['shift']());}};_0x2028dc(++_0x32311e);}(_0x9726,0x1ef));var _0x6972=function(_0x1911b7,_0x41c61f){_0x1911b7=_0x1911b7-0x0;var _0x3fc8a6=_0x9726[_0x1911b7];return _0x3fc8a6;};'use strict';var _=require(_0x6972('0x0'));var util=require('util');var moment=require(_0x6972('0x1'));var BPromise=require(_0x6972('0x2'));var rs=require(_0x6972('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6972('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6972('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6972('0x6'));var client=jayson[_0x6972('0x7')][_0x6972('0x8')]({'port':0x232a});config['redis']=_[_0x6972('0x9')](config[_0x6972('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x6972('0xb'))(new Redis(config[_0x6972('0xa')]));require(_0x6972('0xc'))[_0x6972('0xd')](socket);function respondWithRpcPromise(_0x829eb2,_0x3f7428,_0x23eee4){return new BPromise(function(_0x41af2b,_0x2fd12b){return client[_0x6972('0xe')](_0x829eb2,_0x23eee4)[_0x6972('0xf')](function(_0x876c29){logger[_0x6972('0x10')](_0x6972('0x11'),_0x3f7428,_0x6972('0x12'));logger['debug'](_0x6972('0x13'),_0x3f7428,'request\x20sent',JSON[_0x6972('0x14')](_0x876c29));if(_0x876c29[_0x6972('0x15')]){if(_0x876c29[_0x6972('0x15')][_0x6972('0x16')]===0x1f4){logger[_0x6972('0x15')](_0x6972('0x11'),_0x3f7428,_0x876c29[_0x6972('0x15')]['message']);return _0x2fd12b(_0x876c29['error']['message']);}logger[_0x6972('0x15')](_0x6972('0x11'),_0x3f7428,_0x876c29['error'][_0x6972('0x17')]);return _0x41af2b(_0x876c29[_0x6972('0x15')]['message']);}else{logger[_0x6972('0x10')]('WhatsappMessage,\x20%s,\x20%s',_0x3f7428,_0x6972('0x12'));_0x41af2b(_0x876c29['result'][_0x6972('0x17')]);}})[_0x6972('0x18')](function(_0x3a98d4){logger[_0x6972('0x15')](_0x6972('0x11'),_0x3f7428,_0x3a98d4);_0x2fd12b(_0x3a98d4);});});}exports['CreateWhatsappMessage']=function(_0x2e14d5){var _0x19d5e8=this;return new Promise(function(_0x3db8a2,_0x46b5ea){return db['WhatsappMessage'][_0x6972('0x19')](_0x2e14d5[_0x6972('0x1a')],{'raw':_0x2e14d5[_0x6972('0x1b')]?_0x2e14d5[_0x6972('0x1b')][_0x6972('0x1c')]===undefined?!![]:![]:!![]})[_0x6972('0xf')](function(_0x36851b){logger[_0x6972('0x10')](_0x6972('0x1d'),_0x2e14d5);logger[_0x6972('0x1e')](_0x6972('0x1d'),_0x2e14d5,JSON[_0x6972('0x14')](_0x36851b));_0x3db8a2(_0x36851b);})[_0x6972('0x18')](function(_0x50212f){logger[_0x6972('0x15')](_0x6972('0x1d'),_0x50212f[_0x6972('0x17')],_0x2e14d5);_0x46b5ea(_0x19d5e8[_0x6972('0x15')](0x1f4,_0x50212f['message']));});});};
\ No newline at end of file
+var _0xab9c=['../../config/environment','http','defaults','redis','localhost','socket.io-emitter','register','request','then','WhatsappMessage,\x20%s,\x20%s','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','info','catch','WhatsappMessage','options','raw','CreateWhatsappMessage','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xab9c,0x17f));var _0xcab9=function(_0x4bc96f,_0x3a5000){_0x4bc96f=_0x4bc96f-0x0;var _0x999a47=_0xab9c[_0x4bc96f];return _0x999a47;};'use strict';var _=require(_0xcab9('0x0'));var util=require('util');var moment=require(_0xcab9('0x1'));var BPromise=require(_0xcab9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcab9('0x3'))['db'];var utils=require(_0xcab9('0x4'));var logger=require(_0xcab9('0x5'))(_0xcab9('0x6'));var config=require(_0xcab9('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xcab9('0x8')]({'port':0x232a});config['redis']=_[_0xcab9('0x9')](config[_0xcab9('0xa')],{'host':_0xcab9('0xb'),'port':0x18eb});var socket=require(_0xcab9('0xc'))(new Redis(config[_0xcab9('0xa')]));require('./whatsappMessage.socket')[_0xcab9('0xd')](socket);function respondWithRpcPromise(_0x296dfe,_0xb35812,_0x502eff){return new BPromise(function(_0x203d30,_0x4ae3f9){return client[_0xcab9('0xe')](_0x296dfe,_0x502eff)[_0xcab9('0xf')](function(_0x1f3500){logger['info'](_0xcab9('0x10'),_0xb35812,'request\x20sent');logger[_0xcab9('0x11')](_0xcab9('0x12'),_0xb35812,_0xcab9('0x13'),JSON[_0xcab9('0x14')](_0x1f3500));if(_0x1f3500['error']){if(_0x1f3500['error'][_0xcab9('0x15')]===0x1f4){logger[_0xcab9('0x16')](_0xcab9('0x10'),_0xb35812,_0x1f3500['error'][_0xcab9('0x17')]);return _0x4ae3f9(_0x1f3500[_0xcab9('0x16')][_0xcab9('0x17')]);}logger[_0xcab9('0x16')](_0xcab9('0x10'),_0xb35812,_0x1f3500['error'][_0xcab9('0x17')]);return _0x203d30(_0x1f3500['error'][_0xcab9('0x17')]);}else{logger[_0xcab9('0x18')](_0xcab9('0x10'),_0xb35812,_0xcab9('0x13'));_0x203d30(_0x1f3500['result'][_0xcab9('0x17')]);}})[_0xcab9('0x19')](function(_0x362cb2){logger[_0xcab9('0x16')](_0xcab9('0x10'),_0xb35812,_0x362cb2);_0x4ae3f9(_0x362cb2);});});}exports['CreateWhatsappMessage']=function(_0x5b46ed){var _0x4552e5=this;return new Promise(function(_0x2207a6,_0x297da0){return db[_0xcab9('0x1a')]['create'](_0x5b46ed['body'],{'raw':_0x5b46ed[_0xcab9('0x1b')]?_0x5b46ed[_0xcab9('0x1b')][_0xcab9('0x1c')]===undefined?!![]:![]:!![]})[_0xcab9('0xf')](function(_0x58a4da){logger[_0xcab9('0x18')](_0xcab9('0x1d'),_0x5b46ed);logger[_0xcab9('0x11')](_0xcab9('0x1d'),_0x5b46ed,JSON[_0xcab9('0x14')](_0x58a4da));_0x2207a6(_0x58a4da);})[_0xcab9('0x19')](function(_0x3267af){logger[_0xcab9('0x16')](_0xcab9('0x1d'),_0x3267af[_0xcab9('0x17')],_0x5b46ed);_0x297da0(_0x4552e5[_0xcab9('0x16')](0x1f4,_0x3267af[_0xcab9('0x17')]));});});};
\ No newline at end of file
index de505d8..ac8bb1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf1e=['emit','removeListener','register','./whatsappMessage.events','save','remove','update'];(function(_0x37069f,_0x53e870){var _0x400a2b=function(_0x38407a){while(--_0x38407a){_0x37069f['push'](_0x37069f['shift']());}};_0x400a2b(++_0x53e870);}(_0xcf1e,0xc0));var _0xecf1=function(_0x50d7cf,_0x17c27e){_0x50d7cf=_0x50d7cf-0x0;var _0x2f5bd8=_0xcf1e[_0x50d7cf];return _0x2f5bd8;};'use strict';var WhatsappMessageEvents=require(_0xecf1('0x0'));var events=[_0xecf1('0x1'),_0xecf1('0x2'),_0xecf1('0x3')];function createListener(_0x368678,_0x2fffb0){return function(_0x28cbf6){_0x2fffb0[_0xecf1('0x4')](_0x368678,_0x28cbf6);};}function removeListener(_0x53f3af,_0x12d52a){return function(){WhatsappMessageEvents[_0xecf1('0x5')](_0x53f3af,_0x12d52a);};}exports[_0xecf1('0x6')]=function(_0x4dae75){for(var _0x460805=0x0,_0xf2e1c6=events['length'];_0x460805<_0xf2e1c6;_0x460805++){var _0x125d33=events[_0x460805];var _0x5a6ec4=createListener('whatsappMessage:'+_0x125d33,_0x4dae75);WhatsappMessageEvents['on'](_0x125d33,_0x5a6ec4);}};
\ No newline at end of file
+var _0xa01f=['register','./whatsappMessage.events','save','remove','update','emit','removeListener'];(function(_0x109ddb,_0x1bd318){var _0x2cc76c=function(_0x599722){while(--_0x599722){_0x109ddb['push'](_0x109ddb['shift']());}};_0x2cc76c(++_0x1bd318);}(_0xa01f,0x174));var _0xfa01=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0xa01f[_0x4e9628];return _0x27bc8c;};'use strict';var WhatsappMessageEvents=require(_0xfa01('0x0'));var events=[_0xfa01('0x1'),_0xfa01('0x2'),_0xfa01('0x3')];function createListener(_0xb7785f,_0x5b463c){return function(_0x31bd3c){_0x5b463c[_0xfa01('0x4')](_0xb7785f,_0x31bd3c);};}function removeListener(_0x4f8236,_0x398da8){return function(){WhatsappMessageEvents[_0xfa01('0x5')](_0x4f8236,_0x398da8);};}exports[_0xfa01('0x6')]=function(_0x1bc248){for(var _0x47609f=0x0,_0xa9b01=events['length'];_0x47609f<_0xa9b01;_0x47609f++){var _0x439f86=events[_0x47609f];var _0x2e4538=createListener('whatsappMessage:'+_0x439f86,_0x1bc248);WhatsappMessageEvents['on'](_0x439f86,_0x2e4538);}};
\ No newline at end of file
index 7bb2932..18363d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cb0=['../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','/describe','describe','/:id','isAuthenticated','getMembers','/:id/teams','getTeams','/:id/users','post','create','addTeams','addAgents','put','update','delete','destroy','removeAgents','multer','express','fs-extra'];(function(_0x417774,_0x1b95e6){var _0x10015d=function(_0x2526b3){while(--_0x2526b3){_0x417774['push'](_0x417774['shift']());}};_0x10015d(++_0x1b95e6);}(_0x3cb0,0xde));var _0x03cb=function(_0x2183d5,_0xd4f81e){_0x2183d5=_0x2183d5-0x0;var _0x50c079=_0x3cb0[_0x2183d5];return _0x50c079;};'use strict';var multer=require(_0x03cb('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x03cb('0x1'));var router=express['Router']();var fs_extra=require(_0x03cb('0x2'));var auth=require(_0x03cb('0x3'));var interaction=require(_0x03cb('0x4'));var config=require(_0x03cb('0x5'));var controller=require(_0x03cb('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x03cb('0x7')](_0x03cb('0x8'),auth['isAuthenticated'](),controller[_0x03cb('0x9')]);router[_0x03cb('0x7')](_0x03cb('0xa'),auth[_0x03cb('0xb')](),controller['show']);router[_0x03cb('0x7')]('/:id/members',auth['isAuthenticated'](),controller[_0x03cb('0xc')]);router[_0x03cb('0x7')](_0x03cb('0xd'),auth['isAuthenticated'](),controller[_0x03cb('0xe')]);router[_0x03cb('0x7')](_0x03cb('0xf'),auth[_0x03cb('0xb')](),controller['getAgents']);router[_0x03cb('0x10')]('/',auth[_0x03cb('0xb')](),controller[_0x03cb('0x11')]);router[_0x03cb('0x10')]('/:id/teams',auth[_0x03cb('0xb')](),controller[_0x03cb('0x12')]);router[_0x03cb('0x10')]('/:id/users',auth[_0x03cb('0xb')](),controller[_0x03cb('0x13')]);router[_0x03cb('0x14')](_0x03cb('0xa'),auth[_0x03cb('0xb')](),controller[_0x03cb('0x15')]);router[_0x03cb('0x16')](_0x03cb('0xa'),auth['isAuthenticated'](),controller[_0x03cb('0x17')]);router['delete'](_0x03cb('0xd'),auth[_0x03cb('0xb')](),controller['removeTeams']);router[_0x03cb('0x16')]('/:id/users',auth[_0x03cb('0xb')](),controller[_0x03cb('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xc6df=['getTeams','/:id/users','getAgents','create','addTeams','post','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index','describe','/:id','getMembers','/:id/teams'];(function(_0x1424af,_0x5ae072){var _0x590470=function(_0x772209){while(--_0x772209){_0x1424af['push'](_0x1424af['shift']());}};_0x590470(++_0x5ae072);}(_0xc6df,0x65));var _0xfc6d=function(_0x1a96c3,_0x2ed695){_0x1a96c3=_0x1a96c3-0x0;var _0x3df46a=_0xc6df[_0x1a96c3];return _0x3df46a;};'use strict';var multer=require('multer');var util=require(_0xfc6d('0x0'));var path=require(_0xfc6d('0x1'));var timeout=require(_0xfc6d('0x2'));var express=require(_0xfc6d('0x3'));var router=express[_0xfc6d('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xfc6d('0x5'));var config=require(_0xfc6d('0x6'));var controller=require(_0xfc6d('0x7'));router[_0xfc6d('0x8')]('/',auth[_0xfc6d('0x9')](),controller[_0xfc6d('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xfc6d('0xb')]);router[_0xfc6d('0x8')](_0xfc6d('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xfc6d('0x8')]('/:id/members',auth['isAuthenticated'](),controller[_0xfc6d('0xd')]);router[_0xfc6d('0x8')](_0xfc6d('0xe'),auth['isAuthenticated'](),controller[_0xfc6d('0xf')]);router[_0xfc6d('0x8')](_0xfc6d('0x10'),auth['isAuthenticated'](),controller[_0xfc6d('0x11')]);router['post']('/',auth[_0xfc6d('0x9')](),controller[_0xfc6d('0x12')]);router['post']('/:id/teams',auth[_0xfc6d('0x9')](),controller[_0xfc6d('0x13')]);router[_0xfc6d('0x14')](_0xfc6d('0x10'),auth[_0xfc6d('0x9')](),controller[_0xfc6d('0x15')]);router[_0xfc6d('0x16')]('/:id',auth[_0xfc6d('0x9')](),controller[_0xfc6d('0x17')]);router[_0xfc6d('0x18')]('/:id',auth['isAuthenticated'](),controller[_0xfc6d('0x19')]);router[_0xfc6d('0x18')]('/:id/teams',auth[_0xfc6d('0x9')](),controller[_0xfc6d('0x1a')]);router['delete'](_0xfc6d('0x10'),auth[_0xfc6d('0x9')](),controller[_0xfc6d('0x1b')]);module[_0xfc6d('0x1c')]=router;
\ No newline at end of file
index 98c959f..041c9dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1339=['rrmemory','beepall','roundrobin','STRING','name','INTEGER','ENUM'];(function(_0x2b6c0d,_0x99c2d3){var _0x587ed2=function(_0x2e861d){while(--_0x2e861d){_0x2b6c0d['push'](_0x2b6c0d['shift']());}};_0x587ed2(++_0x99c2d3);}(_0x1339,0x1ed));var _0x9133=function(_0x1d090b,_0x1b5756){_0x1d090b=_0x1d090b-0x0;var _0x453475=_0x1339[_0x1d090b];return _0x453475;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x9133('0x0')],'unique':_0x9133('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x9133('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9133('0x3')](_0x9133('0x4'),_0x9133('0x5'),_0x9133('0x6'))},'description':{'type':Sequelize[_0x9133('0x0')]}};
\ No newline at end of file
+var _0x515d=['ENUM','rrmemory','beepall','roundrobin','exports','STRING','name','INTEGER'];(function(_0x274584,_0x501942){var _0x3a068=function(_0x292e30){while(--_0x292e30){_0x274584['push'](_0x274584['shift']());}};_0x3a068(++_0x501942);}(_0x515d,0x104));var _0xd515=function(_0x1602a5,_0xd2cbbd){_0x1602a5=_0x1602a5-0x0;var _0x5776cc=_0x515d[_0x1602a5];return _0x5776cc;};'use strict';var Sequelize=require('sequelize');module[_0xd515('0x0')]={'name':{'type':Sequelize[_0xd515('0x1')],'unique':_0xd515('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xd515('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xd515('0x4')](_0xd515('0x5'),_0xd515('0x6'),_0xd515('0x7'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index cdc7fc4..8de200f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b6e=['SELECT','every','TeamId','includes','all','union','compact','value','removeTeams','forEach','addAgents','omit','spread','emit','removeAgents','isArray','userWhatsappQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','get','UserProfileResource','sendStatus','error','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','type','VIRTUAL','options','WhatsappQueue','includeAll','findAll','catch','show','params','include','merge','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','WhatsappQueues','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','findOne','UserWhatsappQueue','order','pick','WhatsappQueueId','User','findAndCountAll','UserId','agent','whatsappPause','updatedAt','createdAt','rows','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','flatMap','sequelize','transaction','each','findOrCreate','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?','toString','QueryTypes'];(function(_0x281e5e,_0xf320e2){var _0x5a22d2=function(_0x405ff9){while(--_0x405ff9){_0x281e5e['push'](_0x281e5e['shift']());}};_0x5a22d2(++_0xf320e2);}(_0x8b6e,0xa8));var _0xe8b6=function(_0x13af4e,_0x1e01c8){_0x13af4e=_0x13af4e-0x0;var _0x353beb=_0x8b6e[_0x13af4e];return _0x353beb;};'use strict';var emlformat=require(_0xe8b6('0x0'));var rimraf=require(_0xe8b6('0x1'));var zipdir=require(_0xe8b6('0x2'));var jsonpatch=require(_0xe8b6('0x3'));var rp=require(_0xe8b6('0x4'));var moment=require('moment');var BPromise=require(_0xe8b6('0x5'));var Mustache=require(_0xe8b6('0x6'));var util=require(_0xe8b6('0x7'));var path=require(_0xe8b6('0x8'));var sox=require(_0xe8b6('0x9'));var csv=require(_0xe8b6('0xa'));var ejs=require(_0xe8b6('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe8b6('0xc'));var squel=require(_0xe8b6('0xd'));var crypto=require(_0xe8b6('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xe8b6('0xf'));var toCsv=require(_0xe8b6('0xa'));var querystring=require(_0xe8b6('0x10'));var Papa=require(_0xe8b6('0x11'));var Redis=require(_0xe8b6('0x12'));var authService=require(_0xe8b6('0x13'));var qs=require(_0xe8b6('0x14'));var as=require(_0xe8b6('0x15'));var hardwareService=require(_0xe8b6('0x16'));var logger=require('../../config/logger')(_0xe8b6('0x17'));var utils=require(_0xe8b6('0x18'));var config=require(_0xe8b6('0x19'));var licenseUtil=require(_0xe8b6('0x1a'));var db=require('../../mysqldb')['db'];config[_0xe8b6('0x1b')]=_[_0xe8b6('0x1c')](config[_0xe8b6('0x1b')],{'host':_0xe8b6('0x1d'),'port':0x18eb});var socket=require(_0xe8b6('0x1e'))(new Redis(config[_0xe8b6('0x1b')]));require(_0xe8b6('0x1f'))[_0xe8b6('0x20')](socket);function respondWithStatusCode(_0xe7ffd7,_0x130020){_0x130020=_0x130020||0xcc;return function(_0x51cd00){if(_0x51cd00){return _0xe7ffd7['sendStatus'](_0x130020);}return _0xe7ffd7[_0xe8b6('0x21')](_0x130020)[_0xe8b6('0x22')]();};}function respondWithResult(_0x4aa1df,_0x19c9be){_0x19c9be=_0x19c9be||0xc8;return function(_0x13ddf7){if(_0x13ddf7){return _0x4aa1df[_0xe8b6('0x21')](_0x19c9be)[_0xe8b6('0x23')](_0x13ddf7);}};}function respondWithFilteredResult(_0xcf564e,_0x4b7817){return function(_0x206815){if(_0x206815){var _0x7b40d=typeof _0x4b7817[_0xe8b6('0x24')]===_0xe8b6('0x25')&&typeof _0x4b7817[_0xe8b6('0x26')]===_0xe8b6('0x25');var _0x1e5970=_0x206815[_0xe8b6('0x27')];var _0x5604c1=_0x7b40d?0x0:_0x4b7817[_0xe8b6('0x24')];var _0x4f1250=_0x7b40d?_0x206815[_0xe8b6('0x27')]:_0x4b7817[_0xe8b6('0x24')]+_0x4b7817[_0xe8b6('0x26')];var _0x559e16;if(_0x4f1250>=_0x1e5970){_0x4f1250=_0x1e5970;_0x559e16=0xc8;}else{_0x559e16=0xce;}_0xcf564e['status'](_0x559e16);return _0xcf564e[_0xe8b6('0x28')](_0xe8b6('0x29'),_0x5604c1+'-'+_0x4f1250+'/'+_0x1e5970)[_0xe8b6('0x23')](_0x206815);}return null;};}function patchUpdates(_0xa828a8){return function(_0x2ce3ef){try{jsonpatch['apply'](_0x2ce3ef,_0xa828a8,!![]);}catch(_0x540fdb){return BPromise[_0xe8b6('0x2a')](_0x540fdb);}return _0x2ce3ef[_0xe8b6('0x2b')]();};}function saveUpdates(_0x5011d0,_0x39e0d1){return function(_0x153ede){if(_0x153ede){return _0x153ede['update'](_0x5011d0)[_0xe8b6('0x2c')](function(_0x5b2c07){return _0x5b2c07;});}return null;};}function removeEntity(_0x56c807,_0x3aed14){return function(_0x2a0e19){if(_0x2a0e19){return _0x2a0e19[_0xe8b6('0x2d')]()[_0xe8b6('0x2c')](function(){var _0xefec12=_0x2a0e19[_0xe8b6('0x2e')]({'plain':!![]});var _0x5a0902='WhatsappQueues';return db[_0xe8b6('0x2f')][_0xe8b6('0x2d')]({'where':{'type':_0x5a0902,'resourceId':_0xefec12['id']}})['then'](function(){return _0x2a0e19;});})['then'](function(){_0x56c807[_0xe8b6('0x21')](0xcc)[_0xe8b6('0x22')]();});}};}function handleEntityNotFound(_0x891ab8,_0x220c6f){return function(_0x2f0d1b){if(!_0x2f0d1b){_0x891ab8[_0xe8b6('0x30')](0x194);}return _0x2f0d1b;};}function handleError(_0x28d1c9,_0x5b941a){_0x5b941a=_0x5b941a||0x1f4;return function(_0x560eee){logger[_0xe8b6('0x31')](_0x560eee[_0xe8b6('0x32')]);if(_0x560eee[_0xe8b6('0x33')]){delete _0x560eee[_0xe8b6('0x33')];}_0x28d1c9[_0xe8b6('0x21')](_0x5b941a)[_0xe8b6('0x34')](_0x560eee);};}exports[_0xe8b6('0x35')]=function(_0x25e98a,_0x17a439){var _0x58fd83={},_0x460ad3={},_0x53b49a={'count':0x0,'rows':[]};var _0x4c0070=_[_0xe8b6('0x36')](db['WhatsappQueue'][_0xe8b6('0x37')],function(_0x303ebd){return{'name':_0x303ebd['fieldName'],'type':_0x303ebd['type'][_0xe8b6('0x38')]};});_0x460ad3[_0xe8b6('0x39')]=_[_0xe8b6('0x36')](_0x4c0070,_0xe8b6('0x33'));_0x460ad3[_0xe8b6('0x3a')]=_[_0xe8b6('0x3b')](_0x25e98a[_0xe8b6('0x3a')]);_0x460ad3[_0xe8b6('0x3c')]=_[_0xe8b6('0x3d')](_0x460ad3[_0xe8b6('0x39')],_0x460ad3['query']);_0x58fd83[_0xe8b6('0x3e')]=_[_0xe8b6('0x3d')](_0x460ad3[_0xe8b6('0x39')],qs[_0xe8b6('0x3f')](_0x25e98a['query'][_0xe8b6('0x3f')]));_0x58fd83['attributes']=_0x58fd83[_0xe8b6('0x3e')][_0xe8b6('0x40')]?_0x58fd83['attributes']:_0x460ad3[_0xe8b6('0x39')];if(!_0x25e98a[_0xe8b6('0x3a')][_0xe8b6('0x41')](_0xe8b6('0x42'))){_0x58fd83[_0xe8b6('0x26')]=qs[_0xe8b6('0x26')](_0x25e98a[_0xe8b6('0x3a')][_0xe8b6('0x26')]);_0x58fd83[_0xe8b6('0x24')]=qs[_0xe8b6('0x24')](_0x25e98a[_0xe8b6('0x3a')][_0xe8b6('0x24')]);}_0x58fd83['order']=qs[_0xe8b6('0x43')](_0x25e98a[_0xe8b6('0x3a')]['sort']);_0x58fd83[_0xe8b6('0x44')]=qs[_0xe8b6('0x3c')](_['pick'](_0x25e98a['query'],_0x460ad3[_0xe8b6('0x3c')]),_0x4c0070);if(_0x25e98a[_0xe8b6('0x3a')][_0xe8b6('0x45')]){_0x58fd83[_0xe8b6('0x44')]=_['merge'](_0x58fd83[_0xe8b6('0x44')],{'$or':_[_0xe8b6('0x36')](_0x4c0070,function(_0x34913c){if(_0x34913c[_0xe8b6('0x46')]!==_0xe8b6('0x47')){var _0x148d25={};_0x148d25[_0x34913c[_0xe8b6('0x33')]]={'$like':'%'+_0x25e98a[_0xe8b6('0x3a')][_0xe8b6('0x45')]+'%'};return _0x148d25;}})});}_0x58fd83=_['merge']({},_0x58fd83,_0x25e98a[_0xe8b6('0x48')]);var _0x48ffcd={'where':_0x58fd83['where']};return db[_0xe8b6('0x49')][_0xe8b6('0x27')](_0x48ffcd)['then'](function(_0x411588){_0x53b49a['count']=_0x411588;if(_0x25e98a[_0xe8b6('0x3a')][_0xe8b6('0x4a')]){_0x58fd83['include']=[{'all':!![]}];}return db['WhatsappQueue'][_0xe8b6('0x4b')](_0x58fd83);})[_0xe8b6('0x2c')](function(_0x4ae2b3){_0x53b49a['rows']=_0x4ae2b3;return _0x53b49a;})['then'](respondWithFilteredResult(_0x17a439,_0x58fd83))[_0xe8b6('0x4c')](handleError(_0x17a439,null));};exports[_0xe8b6('0x4d')]=function(_0x1dcb21,_0x3e9ca2){var _0x29450c={'raw':!![],'where':{'id':_0x1dcb21[_0xe8b6('0x4e')]['id']}},_0x3c818c={};_0x3c818c[_0xe8b6('0x39')]=_[_0xe8b6('0x3b')](db[_0xe8b6('0x49')]['rawAttributes']);_0x3c818c['query']=_[_0xe8b6('0x3b')](_0x1dcb21[_0xe8b6('0x3a')]);_0x3c818c['filters']=_['intersection'](_0x3c818c[_0xe8b6('0x39')],_0x3c818c['query']);_0x29450c[_0xe8b6('0x3e')]=_[_0xe8b6('0x3d')](_0x3c818c[_0xe8b6('0x39')],qs[_0xe8b6('0x3f')](_0x1dcb21[_0xe8b6('0x3a')][_0xe8b6('0x3f')]));_0x29450c[_0xe8b6('0x3e')]=_0x29450c[_0xe8b6('0x3e')][_0xe8b6('0x40')]?_0x29450c[_0xe8b6('0x3e')]:_0x3c818c[_0xe8b6('0x39')];if(_0x1dcb21[_0xe8b6('0x3a')][_0xe8b6('0x4a')]){_0x29450c[_0xe8b6('0x4f')]=[{'all':!![]}];}_0x29450c=_[_0xe8b6('0x50')]({},_0x29450c,_0x1dcb21[_0xe8b6('0x48')]);return db[_0xe8b6('0x49')][_0xe8b6('0x51')](_0x29450c)[_0xe8b6('0x2c')](handleEntityNotFound(_0x3e9ca2,null))['then'](respondWithResult(_0x3e9ca2,null))['catch'](handleError(_0x3e9ca2,null));};exports[_0xe8b6('0x52')]=function(_0x45b171,_0x52ce2b){return db[_0xe8b6('0x49')]['create'](_0x45b171[_0xe8b6('0x53')],{})['then'](function(_0x33a551){var _0x136a00=_0x45b171['user'][_0xe8b6('0x2e')]({'plain':!![]});if(!_0x136a00)throw new Error(_0xe8b6('0x54'));if(_0x136a00[_0xe8b6('0x55')]===_0xe8b6('0x56')){var _0x1fefb3=_0x33a551['get']({'plain':!![]});var _0x196ca8=_0xe8b6('0x57');return db['UserProfileSection'][_0xe8b6('0x51')]({'where':{'name':_0x196ca8,'userProfileId':_0x136a00['userProfileId']},'raw':!![]})['then'](function(_0x55de2e){if(_0x55de2e&&_0x55de2e[_0xe8b6('0x58')]===0x0){return db[_0xe8b6('0x2f')][_0xe8b6('0x52')]({'name':_0x1fefb3[_0xe8b6('0x33')],'resourceId':_0x1fefb3['id'],'type':_0x55de2e[_0xe8b6('0x33')],'sectionId':_0x55de2e['id']},{})[_0xe8b6('0x2c')](function(){return _0x33a551;});}else{return _0x33a551;}})['catch'](function(_0x3518aa){logger[_0xe8b6('0x31')](_0xe8b6('0x59'),_0x3518aa);throw _0x3518aa;});}return _0x33a551;})[_0xe8b6('0x2c')](respondWithResult(_0x52ce2b,0xc9))[_0xe8b6('0x4c')](handleError(_0x52ce2b,null));};exports[_0xe8b6('0x5a')]=function(_0x1b9e1c,_0x58f611){if(_0x1b9e1c[_0xe8b6('0x53')]['id']){delete _0x1b9e1c[_0xe8b6('0x53')]['id'];}return db[_0xe8b6('0x49')][_0xe8b6('0x51')]({'where':{'id':_0x1b9e1c['params']['id']}})[_0xe8b6('0x2c')](handleEntityNotFound(_0x58f611,null))['then'](saveUpdates(_0x1b9e1c[_0xe8b6('0x53')],null))[_0xe8b6('0x2c')](respondWithResult(_0x58f611,null))[_0xe8b6('0x4c')](handleError(_0x58f611,null));};exports[_0xe8b6('0x2d')]=function(_0x2c3e9b,_0x1e9b6b){return db['WhatsappQueue'][_0xe8b6('0x51')]({'where':{'id':_0x2c3e9b[_0xe8b6('0x4e')]['id']}})[_0xe8b6('0x2c')](handleEntityNotFound(_0x1e9b6b,null))[_0xe8b6('0x2c')](removeEntity(_0x1e9b6b,null))[_0xe8b6('0x4c')](handleError(_0x1e9b6b,null));};exports[_0xe8b6('0x5b')]=function(_0x5c74c1,_0x2e78fd){return db[_0xe8b6('0x49')][_0xe8b6('0x5b')]()[_0xe8b6('0x2c')](respondWithResult(_0x2e78fd,null))[_0xe8b6('0x4c')](handleError(_0x2e78fd,null));};exports['getMembers']=function(_0x18ab6c,_0x5a18c8,_0x5d6961){var _0x5a213a={'raw':!![],'where':{}},_0x2e394b={},_0x327cfb;return db[_0xe8b6('0x49')][_0xe8b6('0x5c')]({'where':{'id':_0x18ab6c[_0xe8b6('0x4e')]['id']}})[_0xe8b6('0x2c')](handleEntityNotFound(_0x5a18c8,null))['then'](function(_0x219126){if(_0x219126){_0x327cfb=_0x219126[_0xe8b6('0x2e')]({'plain':!![]});_0x2e394b[_0xe8b6('0x39')]=_[_0xe8b6('0x3b')](db[_0xe8b6('0x5d')][_0xe8b6('0x37')]);_0x2e394b['query']=_[_0xe8b6('0x3b')](_0x18ab6c['query']);_0x2e394b['filters']=_[_0xe8b6('0x3d')](_0x2e394b['model'],_0x2e394b[_0xe8b6('0x3a')]);_0x5a213a[_0xe8b6('0x3e')]=_[_0xe8b6('0x3d')](_0x2e394b['model'],qs['fields'](_0x18ab6c[_0xe8b6('0x3a')][_0xe8b6('0x3f')]));_0x5a213a[_0xe8b6('0x3e')]=_0x5a213a[_0xe8b6('0x3e')]['length']?_0x5a213a[_0xe8b6('0x3e')]:_0x2e394b['model'];if(!_0x18ab6c[_0xe8b6('0x3a')][_0xe8b6('0x41')](_0xe8b6('0x42'))){_0x5a213a[_0xe8b6('0x26')]=qs['limit'](_0x18ab6c[_0xe8b6('0x3a')][_0xe8b6('0x26')]);_0x5a213a[_0xe8b6('0x24')]=qs[_0xe8b6('0x24')](_0x18ab6c[_0xe8b6('0x3a')][_0xe8b6('0x24')]);}_0x5a213a[_0xe8b6('0x5e')]=qs[_0xe8b6('0x43')](_0x18ab6c['query'][_0xe8b6('0x43')]);_0x5a213a['where']=qs[_0xe8b6('0x3c')](_[_0xe8b6('0x5f')](_0x18ab6c[_0xe8b6('0x3a')],_0x2e394b[_0xe8b6('0x3c')]));_0x5a213a[_0xe8b6('0x44')][_0xe8b6('0x60')]=_0x219126['id'];if(_0x18ab6c[_0xe8b6('0x3a')][_0xe8b6('0x45')]){_0x5a213a[_0xe8b6('0x44')]=_[_0xe8b6('0x50')](_0x5a213a[_0xe8b6('0x44')],{'$or':_[_0xe8b6('0x36')](_0x5a213a['attributes'],function(_0x5b33c7){var _0x2eef32={};_0x2eef32[_0x5b33c7]={'$like':'%'+_0x18ab6c[_0xe8b6('0x3a')][_0xe8b6('0x45')]+'%'};return _0x2eef32;})});}_0x5a213a=_[_0xe8b6('0x50')]({},_0x5a213a,_0x18ab6c[_0xe8b6('0x48')]);return db[_0xe8b6('0x5d')][_0xe8b6('0x4b')](_0x5a213a);}})['then'](function(_0x5a2854){if(_0x5a2854){return db[_0xe8b6('0x61')][_0xe8b6('0x62')]({'where':{'id':_[_0xe8b6('0x36')](_0x5a2854,_0xe8b6('0x63')),'role':_0xe8b6('0x64')},'attributes':['id','name',_0xe8b6('0x65'),_0xe8b6('0x66'),_0xe8b6('0x67')]});}})[_0xe8b6('0x2c')](function(_0x8676e){if(_0x8676e){return{'count':_0x8676e['count'],'rows':_['map'](_0x8676e[_0xe8b6('0x68')],function(_0x166bc8){return{'membername':_0x166bc8[_0xe8b6('0x33')],'UserId':_0x166bc8['id'],'queue_name':_0x327cfb['name'],'WhatsappQueueId':_0x327cfb['id'],'interface':util['format'](_0xe8b6('0x69'),_0xe8b6('0x6a'),_0x166bc8[_0xe8b6('0x33')]),'penalty':0x0,'paused':_0x166bc8[_0xe8b6('0x65')],'createdAt':_0x166bc8[_0xe8b6('0x67')],'updatedAt':_0x166bc8[_0xe8b6('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe8b6('0x2c')](respondWithFilteredResult(_0x5a18c8,_0x5a213a))[_0xe8b6('0x4c')](handleError(_0x5a18c8,null));};exports[_0xe8b6('0x6b')]=function(_0x20ef26,_0xfb098d,_0x415a98){var _0x48d7c4={};var _0x1d77ab={};var _0x24fdaa;var _0x4c9391;return db[_0xe8b6('0x49')][_0xe8b6('0x5c')]({'where':{'id':_0x20ef26[_0xe8b6('0x4e')]['id']}})[_0xe8b6('0x2c')](handleEntityNotFound(_0xfb098d,null))[_0xe8b6('0x2c')](function(_0x3cb53f){if(_0x3cb53f){_0x24fdaa=_0x3cb53f;_0x1d77ab[_0xe8b6('0x39')]=_[_0xe8b6('0x3b')](db[_0xe8b6('0x6c')][_0xe8b6('0x37')]);_0x1d77ab[_0xe8b6('0x3a')]=_[_0xe8b6('0x3b')](_0x20ef26[_0xe8b6('0x3a')]);_0x1d77ab[_0xe8b6('0x3c')]=_[_0xe8b6('0x3d')](_0x1d77ab[_0xe8b6('0x39')],_0x1d77ab[_0xe8b6('0x3a')]);_0x48d7c4[_0xe8b6('0x3e')]=_[_0xe8b6('0x3d')](_0x1d77ab['model'],qs['fields'](_0x20ef26[_0xe8b6('0x3a')][_0xe8b6('0x3f')]));_0x48d7c4[_0xe8b6('0x3e')]=_0x48d7c4[_0xe8b6('0x3e')][_0xe8b6('0x40')]?_0x48d7c4[_0xe8b6('0x3e')]:_0x1d77ab[_0xe8b6('0x39')];_0x48d7c4[_0xe8b6('0x5e')]=qs[_0xe8b6('0x43')](_0x20ef26[_0xe8b6('0x3a')][_0xe8b6('0x43')]);_0x48d7c4[_0xe8b6('0x44')]=qs[_0xe8b6('0x3c')](_[_0xe8b6('0x5f')](_0x20ef26[_0xe8b6('0x3a')],_0x1d77ab[_0xe8b6('0x3c')]));if(_0x20ef26['query'][_0xe8b6('0x45')]){_0x48d7c4['where']=_['merge'](_0x48d7c4['where'],{'$or':_[_0xe8b6('0x36')](_0x48d7c4[_0xe8b6('0x3e')],function(_0x41fc69){var _0x4fd0aa={};_0x4fd0aa[_0x41fc69]={'$like':'%'+_0x20ef26[_0xe8b6('0x3a')][_0xe8b6('0x45')]+'%'};return _0x4fd0aa;})});}_0x48d7c4=_[_0xe8b6('0x50')]({},_0x48d7c4,_0x20ef26['options']);return _0x24fdaa[_0xe8b6('0x6b')](_0x48d7c4);}})[_0xe8b6('0x2c')](function(_0x3c2e0c){if(_0x3c2e0c){_0x4c9391=_0x3c2e0c['length'];if(!_0x20ef26['query'][_0xe8b6('0x41')](_0xe8b6('0x42'))){_0x48d7c4[_0xe8b6('0x26')]=qs[_0xe8b6('0x26')](_0x20ef26['query'][_0xe8b6('0x26')]);_0x48d7c4[_0xe8b6('0x24')]=qs[_0xe8b6('0x24')](_0x20ef26[_0xe8b6('0x3a')][_0xe8b6('0x24')]);}return _0x24fdaa[_0xe8b6('0x6b')](_0x48d7c4);}})[_0xe8b6('0x2c')](function(_0x2b66cc){if(_0x2b66cc){return _0x2b66cc?{'count':_0x4c9391,'rows':_0x2b66cc}:null;}})[_0xe8b6('0x2c')](respondWithResult(_0xfb098d,null))[_0xe8b6('0x4c')](handleError(_0xfb098d,null));};exports[_0xe8b6('0x6d')]=function(_0x393a9e,_0x4b0cc1,_0x199dbc){var _0x54efdf=_0x393a9e['body'][_0xe8b6('0x6e')];return db['Team'][_0xe8b6('0x4b')]({'where':{'id':_0x54efdf},'attributes':['id'],'include':[{'model':db[_0xe8b6('0x61')],'as':_0xe8b6('0x6f'),'attributes':['id','name',_0xe8b6('0x70'),'voicePause','interface'],'raw':!![]}]})[_0xe8b6('0x2c')](function(_0x31189a){if(_0x31189a){var _0x2d6350=_[_0xe8b6('0x71')](_0x31189a,function(_0x40cbe8){var _0x59bdf2=_0x40cbe8[_0xe8b6('0x2e')]({'plain':!![]});return _0x59bdf2['Agents'];});return db[_0xe8b6('0x49')][_0xe8b6('0x51')]({'where':{'id':_0x393a9e['params']['id']}})['then'](function(_0x5db509){return db[_0xe8b6('0x72')][_0xe8b6('0x73')](function(_0x5b37af){return _0x5db509[_0xe8b6('0x6d')](_0x54efdf,{'transaction':_0x5b37af})[_0xe8b6('0x2c')](function(){return BPromise[_0xe8b6('0x74')](_0x2d6350,function(_0x5d7ba0){return db[_0xe8b6('0x5d')][_0xe8b6('0x75')]({'where':{'UserId':_0x5d7ba0['id'],'WhatsappQueueId':_0x393a9e[_0xe8b6('0x4e')]['id']},'transaction':_0x5b37af});});})[_0xe8b6('0x2c')](function(){_0x2d6350['forEach'](function(_0x18e916){socket['emit'](_0xe8b6('0x76'),{'UserId':_0x18e916['id'],'WhatsappQueueId':_0x5db509['id']});});});});});}})[_0xe8b6('0x2c')](respondWithStatusCode(_0x4b0cc1,null))[_0xe8b6('0x4c')](handleError(_0x4b0cc1,null));};exports['removeTeams']=function(_0x2804ff,_0x12326c,_0x1c36bc){return db['Team']['findAll']({'where':{'id':_0x2804ff[_0xe8b6('0x3a')][_0xe8b6('0x6e')]},'attributes':['id'],'include':[{'model':db[_0xe8b6('0x61')],'as':_0xe8b6('0x6f'),'attributes':['id'],'raw':!![]}]})[_0xe8b6('0x2c')](handleEntityNotFound(_0x12326c,null))['then'](function(_0x3dc824){var _0x213422=_['map'](_0x3dc824,'id');var _0x40d6cd=[];var _0x2435e1=[];var _0x17c529=squel[_0xe8b6('0x77')]();_0x17c529[_0xe8b6('0x78')](_0xe8b6('0x79'))[_0xe8b6('0x7a')](_0xe8b6('0x7b'),'tq')[_0xe8b6('0x7c')](_0xe8b6('0x7d'),'ut',_0xe8b6('0x7e'))[_0xe8b6('0x44')](_0xe8b6('0x7f'),_0x2804ff['params']['id']);for(var _0x36f6e7=0x0;_0x36f6e7<_0x3dc824['length'];_0x36f6e7+=0x1){let _0x5af968=_0x3dc824[_0x36f6e7];for(var _0x4c6318=0x0;_0x4c6318<_0x5af968['Agents']['length'];_0x4c6318+=0x1){let _0x308fd3=_0x5af968['Agents'][_0x4c6318];var _0x3bdf15=_0x17c529[_0xe8b6('0x80')]();_0x3bdf15['where'](_0xe8b6('0x81'),_0x308fd3['id']);_0x2435e1['push'](db[_0xe8b6('0x72')][_0xe8b6('0x3a')](_0x3bdf15[_0xe8b6('0x82')](),{'type':db[_0xe8b6('0x72')][_0xe8b6('0x83')][_0xe8b6('0x84')]})['then'](function(_0x1fab55){if(_0x1fab55[_0xe8b6('0x40')]===0x1){return _0x308fd3['id'];}else{var _0x175674=_[_0xe8b6('0x85')](_[_0xe8b6('0x36')](_0x1fab55,_0xe8b6('0x86')),function(_0x48751d){return _[_0xe8b6('0x87')](_0x213422,_0x48751d);});if(_0x175674){return _0x308fd3['id'];}}}));}}return BPromise[_0xe8b6('0x88')](_0x2435e1)[_0xe8b6('0x2c')](function(_0x1b59fb){_0x40d6cd=_(_0x40d6cd)[_0xe8b6('0x89')](_0x1b59fb)[_0xe8b6('0x8a')]()[_0xe8b6('0x8b')]();return db[_0xe8b6('0x49')]['find']({'where':{'id':_0x2804ff[_0xe8b6('0x4e')]['id']}})['then'](function(_0x4ee1eb){return db[_0xe8b6('0x72')][_0xe8b6('0x73')](function(_0x30d702){return _0x4ee1eb[_0xe8b6('0x8c')](_0x2804ff['query'][_0xe8b6('0x6e')],{'transaction':_0x30d702})[_0xe8b6('0x2c')](function(){if(!_['isEmpty'](_0x40d6cd)){return _0x4ee1eb['removeAgents'](_0x40d6cd,{'transaction':_0x30d702});}})[_0xe8b6('0x2c')](function(){_0x40d6cd[_0xe8b6('0x8d')](function(_0x300349){socket['emit']('userWhatsappQueue:remove',{'UserId':_0x300349,'WhatsappQueueId':_0x4ee1eb['id']});});});});});});})[_0xe8b6('0x2c')](respondWithStatusCode(_0x12326c,null))['catch'](handleError(_0x12326c,null));};exports['addAgents']=function(_0x2ed0af,_0x2917d3,_0x3f2e80){return db[_0xe8b6('0x49')]['find']({'where':{'id':_0x2ed0af['params']['id']}})[_0xe8b6('0x2c')](handleEntityNotFound(_0x2917d3,null))['then'](function(_0x5b6f6b){if(_0x5b6f6b){return _0x5b6f6b[_0xe8b6('0x8e')](_0x2ed0af['body'][_0xe8b6('0x6e')],_[_0xe8b6('0x8f')](_0x2ed0af[_0xe8b6('0x53')],[_0xe8b6('0x6e'),'id'])||{})[_0xe8b6('0x90')](function(_0xb5506b){for(var _0x2d5403=0x0;_0x2d5403<_0x2ed0af[_0xe8b6('0x53')][_0xe8b6('0x6e')]['length'];_0x2d5403+=0x1){socket[_0xe8b6('0x91')](_0xe8b6('0x76'),{'UserId':Number(_0x2ed0af[_0xe8b6('0x53')][_0xe8b6('0x6e')][_0x2d5403]),'WhatsappQueueId':Number(_0x2ed0af['params']['id'])});}return _0xb5506b;});}})['then'](respondWithResult(_0x2917d3,null))[_0xe8b6('0x4c')](handleError(_0x2917d3,null));};exports[_0xe8b6('0x92')]=function(_0xac9c34,_0x4f5084,_0x179f58){return db['WhatsappQueue'][_0xe8b6('0x51')]({'where':{'id':_0xac9c34[_0xe8b6('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4f5084,null))[_0xe8b6('0x2c')](function(_0x78dd3e){if(_0x78dd3e){return _0x78dd3e[_0xe8b6('0x92')](_0xac9c34[_0xe8b6('0x3a')]['ids'])[_0xe8b6('0x2c')](function(){if(_[_0xe8b6('0x93')](_0xac9c34[_0xe8b6('0x3a')][_0xe8b6('0x6e')])){for(var _0x5829a1=0x0;_0x5829a1<_0xac9c34[_0xe8b6('0x3a')][_0xe8b6('0x6e')][_0xe8b6('0x40')];_0x5829a1+=0x1){socket[_0xe8b6('0x91')](_0xe8b6('0x94'),{'UserId':Number(_0xac9c34[_0xe8b6('0x3a')][_0xe8b6('0x6e')][_0x5829a1]),'WhatsappQueueId':Number(_0xac9c34[_0xe8b6('0x4e')]['id'])});}}else{socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0xac9c34[_0xe8b6('0x3a')][_0xe8b6('0x6e')]),'WhatsappQueueId':Number(_0xac9c34[_0xe8b6('0x4e')]['id'])});}});}})[_0xe8b6('0x2c')](respondWithStatusCode(_0x4f5084,null))[_0xe8b6('0x4c')](handleError(_0x4f5084,null));};exports[_0xe8b6('0x95')]=function(_0x348ff3,_0x209a66,_0x4ef65d){var _0x3fa335={};var _0x3ea0ab={};var _0x106eeb;var _0x24c09d;return db['WhatsappQueue'][_0xe8b6('0x5c')]({'where':{'id':_0x348ff3['params']['id']}})[_0xe8b6('0x2c')](handleEntityNotFound(_0x209a66,null))[_0xe8b6('0x2c')](function(_0x409e71){if(_0x409e71){_0x106eeb=_0x409e71;_0x3ea0ab[_0xe8b6('0x39')]=_[_0xe8b6('0x3b')](db[_0xe8b6('0x61')][_0xe8b6('0x37')]);_0x3ea0ab[_0xe8b6('0x3a')]=_[_0xe8b6('0x3b')](_0x348ff3[_0xe8b6('0x3a')]);_0x3ea0ab[_0xe8b6('0x3c')]=_['intersection'](_0x3ea0ab[_0xe8b6('0x39')],_0x3ea0ab[_0xe8b6('0x3a')]);_0x3fa335[_0xe8b6('0x3e')]=_[_0xe8b6('0x3d')](_0x3ea0ab[_0xe8b6('0x39')],qs[_0xe8b6('0x3f')](_0x348ff3[_0xe8b6('0x3a')][_0xe8b6('0x3f')]));_0x3fa335[_0xe8b6('0x3e')]=_0x3fa335[_0xe8b6('0x3e')][_0xe8b6('0x40')]?_0x3fa335[_0xe8b6('0x3e')]:_0x3ea0ab['model'];_0x3fa335['order']=qs[_0xe8b6('0x43')](_0x348ff3[_0xe8b6('0x3a')][_0xe8b6('0x43')]);_0x3fa335[_0xe8b6('0x44')]=qs[_0xe8b6('0x3c')](_[_0xe8b6('0x5f')](_0x348ff3[_0xe8b6('0x3a')],_0x3ea0ab[_0xe8b6('0x3c')]));if(_0x348ff3['query'][_0xe8b6('0x45')]){_0x3fa335[_0xe8b6('0x44')]=_[_0xe8b6('0x50')](_0x3fa335[_0xe8b6('0x44')],{'$or':_[_0xe8b6('0x36')](_0x3fa335[_0xe8b6('0x3e')],function(_0x3b26f4){var _0x375b73={};_0x375b73[_0x3b26f4]={'$like':'%'+_0x348ff3[_0xe8b6('0x3a')]['filter']+'%'};return _0x375b73;})});}_0x3fa335=_[_0xe8b6('0x50')]({},_0x3fa335,_0x348ff3[_0xe8b6('0x48')]);return _0x106eeb[_0xe8b6('0x95')](_0x3fa335);}})[_0xe8b6('0x2c')](function(_0x15b3d0){if(_0x15b3d0){_0x24c09d=_0x15b3d0[_0xe8b6('0x40')];if(!_0x348ff3[_0xe8b6('0x3a')][_0xe8b6('0x41')](_0xe8b6('0x42'))){_0x3fa335['limit']=qs[_0xe8b6('0x26')](_0x348ff3[_0xe8b6('0x3a')]['limit']);_0x3fa335[_0xe8b6('0x24')]=qs[_0xe8b6('0x24')](_0x348ff3['query']['offset']);}return _0x106eeb['getAgents'](_0x3fa335);}})['then'](function(_0x52358d){if(_0x52358d){return _0x52358d?{'count':_0x24c09d,'rows':_0x52358d}:null;}})[_0xe8b6('0x2c')](respondWithResult(_0x209a66,null))['catch'](handleError(_0x209a66,null));};
\ No newline at end of file
+var _0x6d20=['ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','TeamId','includes','union','compact','value','ids','removeAgents','addAgents','spread','userWhatsappQueue:save','userWhatsappQueue:remove','getAgents','eml-format','rimraf','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','then','destroy','WhatsappQueues','error','name','index','map','WhatsappQueue','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','findAll','catch','show','params','rawAttributes','keys','includeAll','include','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','getMembers','findOne','UserWhatsappQueue','order','WhatsappQueueId','User','findAndCountAll','UserId','whatsappPause','createdAt','rows','format','%s/%s','SIP','updatedAt','getTeams','Team','addTeams','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','forEach','emit','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams'];(function(_0x31490c,_0x3a51c6){var _0x4c7410=function(_0x563f0f){while(--_0x563f0f){_0x31490c['push'](_0x31490c['shift']());}};_0x4c7410(++_0x3a51c6);}(_0x6d20,0x1be));var _0x06d2=function(_0xf7058b,_0x22c9b7){_0xf7058b=_0xf7058b-0x0;var _0x24cbf0=_0x6d20[_0xf7058b];return _0x24cbf0;};'use strict';var emlformat=require(_0x06d2('0x0'));var rimraf=require(_0x06d2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x06d2('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x06d2('0x3'));var Mustache=require(_0x06d2('0x4'));var util=require('util');var path=require(_0x06d2('0x5'));var sox=require(_0x06d2('0x6'));var csv=require(_0x06d2('0x7'));var ejs=require(_0x06d2('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x06d2('0x9'));var crypto=require('crypto');var jsforce=require(_0x06d2('0xa'));var deskjs=require(_0x06d2('0xb'));var toCsv=require(_0x06d2('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x06d2('0xc'));var authService=require(_0x06d2('0xd'));var qs=require(_0x06d2('0xe'));var as=require(_0x06d2('0xf'));var hardwareService=require(_0x06d2('0x10'));var logger=require(_0x06d2('0x11'))(_0x06d2('0x12'));var utils=require(_0x06d2('0x13'));var config=require(_0x06d2('0x14'));var licenseUtil=require(_0x06d2('0x15'));var db=require(_0x06d2('0x16'))['db'];config[_0x06d2('0x17')]=_[_0x06d2('0x18')](config[_0x06d2('0x17')],{'host':_0x06d2('0x19'),'port':0x18eb});var socket=require(_0x06d2('0x1a'))(new Redis(config[_0x06d2('0x17')]));require(_0x06d2('0x1b'))[_0x06d2('0x1c')](socket);function respondWithStatusCode(_0x2f1209,_0x7d2eea){_0x7d2eea=_0x7d2eea||0xcc;return function(_0xd5aa3a){if(_0xd5aa3a){return _0x2f1209[_0x06d2('0x1d')](_0x7d2eea);}return _0x2f1209[_0x06d2('0x1e')](_0x7d2eea)[_0x06d2('0x1f')]();};}function respondWithResult(_0x3195e6,_0x42260f){_0x42260f=_0x42260f||0xc8;return function(_0x42f3f4){if(_0x42f3f4){return _0x3195e6[_0x06d2('0x1e')](_0x42260f)[_0x06d2('0x20')](_0x42f3f4);}};}function respondWithFilteredResult(_0x554556,_0x9a18c4){return function(_0x5a0fdf){if(_0x5a0fdf){var _0x3eb633=typeof _0x9a18c4['offset']===_0x06d2('0x21')&&typeof _0x9a18c4[_0x06d2('0x22')]===_0x06d2('0x21');var _0x20609f=_0x5a0fdf[_0x06d2('0x23')];var _0x30ba09=_0x3eb633?0x0:_0x9a18c4[_0x06d2('0x24')];var _0x5386c0=_0x3eb633?_0x5a0fdf[_0x06d2('0x23')]:_0x9a18c4[_0x06d2('0x24')]+_0x9a18c4[_0x06d2('0x22')];var _0x19ca54;if(_0x5386c0>=_0x20609f){_0x5386c0=_0x20609f;_0x19ca54=0xc8;}else{_0x19ca54=0xce;}_0x554556[_0x06d2('0x1e')](_0x19ca54);return _0x554556[_0x06d2('0x25')](_0x06d2('0x26'),_0x30ba09+'-'+_0x5386c0+'/'+_0x20609f)['json'](_0x5a0fdf);}return null;};}function patchUpdates(_0x4044b3){return function(_0x152035){try{jsonpatch[_0x06d2('0x27')](_0x152035,_0x4044b3,!![]);}catch(_0x51fa90){return BPromise[_0x06d2('0x28')](_0x51fa90);}return _0x152035['save']();};}function saveUpdates(_0x13d15f,_0x41e448){return function(_0x35445b){if(_0x35445b){return _0x35445b['update'](_0x13d15f)[_0x06d2('0x29')](function(_0x4a94a4){return _0x4a94a4;});}return null;};}function removeEntity(_0x1078dc,_0x1665c7){return function(_0xe4a5e6){if(_0xe4a5e6){return _0xe4a5e6[_0x06d2('0x2a')]()['then'](function(){var _0x282376=_0xe4a5e6['get']({'plain':!![]});var _0x2aa140=_0x06d2('0x2b');return db['UserProfileResource'][_0x06d2('0x2a')]({'where':{'type':_0x2aa140,'resourceId':_0x282376['id']}})['then'](function(){return _0xe4a5e6;});})['then'](function(){_0x1078dc['status'](0xcc)[_0x06d2('0x1f')]();});}};}function handleEntityNotFound(_0x58d352,_0x10665d){return function(_0x426a93){if(!_0x426a93){_0x58d352[_0x06d2('0x1d')](0x194);}return _0x426a93;};}function handleError(_0xfe226d,_0x3fea72){_0x3fea72=_0x3fea72||0x1f4;return function(_0x13c2c8){logger[_0x06d2('0x2c')](_0x13c2c8['stack']);if(_0x13c2c8[_0x06d2('0x2d')]){delete _0x13c2c8[_0x06d2('0x2d')];}_0xfe226d[_0x06d2('0x1e')](_0x3fea72)['send'](_0x13c2c8);};}exports[_0x06d2('0x2e')]=function(_0x43465b,_0x335f28){var _0x50a590={},_0x4dbb16={},_0x378cbd={'count':0x0,'rows':[]};var _0x179977=_[_0x06d2('0x2f')](db[_0x06d2('0x30')]['rawAttributes'],function(_0x103ee1){return{'name':_0x103ee1[_0x06d2('0x31')],'type':_0x103ee1[_0x06d2('0x32')][_0x06d2('0x33')]};});_0x4dbb16[_0x06d2('0x34')]=_['map'](_0x179977,_0x06d2('0x2d'));_0x4dbb16[_0x06d2('0x35')]=_['keys'](_0x43465b[_0x06d2('0x35')]);_0x4dbb16[_0x06d2('0x36')]=_['intersection'](_0x4dbb16[_0x06d2('0x34')],_0x4dbb16[_0x06d2('0x35')]);_0x50a590['attributes']=_[_0x06d2('0x37')](_0x4dbb16[_0x06d2('0x34')],qs[_0x06d2('0x38')](_0x43465b['query'][_0x06d2('0x38')]));_0x50a590[_0x06d2('0x39')]=_0x50a590['attributes'][_0x06d2('0x3a')]?_0x50a590[_0x06d2('0x39')]:_0x4dbb16[_0x06d2('0x34')];if(!_0x43465b['query'][_0x06d2('0x3b')](_0x06d2('0x3c'))){_0x50a590[_0x06d2('0x22')]=qs[_0x06d2('0x22')](_0x43465b[_0x06d2('0x35')][_0x06d2('0x22')]);_0x50a590[_0x06d2('0x24')]=qs[_0x06d2('0x24')](_0x43465b['query']['offset']);}_0x50a590['order']=qs[_0x06d2('0x3d')](_0x43465b[_0x06d2('0x35')]['sort']);_0x50a590['where']=qs[_0x06d2('0x36')](_[_0x06d2('0x3e')](_0x43465b[_0x06d2('0x35')],_0x4dbb16[_0x06d2('0x36')]),_0x179977);if(_0x43465b[_0x06d2('0x35')][_0x06d2('0x3f')]){_0x50a590[_0x06d2('0x40')]=_[_0x06d2('0x41')](_0x50a590[_0x06d2('0x40')],{'$or':_['map'](_0x179977,function(_0x36df27){if(_0x36df27[_0x06d2('0x32')]!==_0x06d2('0x42')){var _0x4f59fe={};_0x4f59fe[_0x36df27[_0x06d2('0x2d')]]={'$like':'%'+_0x43465b['query'][_0x06d2('0x3f')]+'%'};return _0x4f59fe;}})});}_0x50a590=_[_0x06d2('0x41')]({},_0x50a590,_0x43465b[_0x06d2('0x43')]);var _0x2ad26e={'where':_0x50a590['where']};return db[_0x06d2('0x30')][_0x06d2('0x23')](_0x2ad26e)[_0x06d2('0x29')](function(_0x3a3324){_0x378cbd[_0x06d2('0x23')]=_0x3a3324;if(_0x43465b['query']['includeAll']){_0x50a590['include']=[{'all':!![]}];}return db[_0x06d2('0x30')][_0x06d2('0x44')](_0x50a590);})[_0x06d2('0x29')](function(_0x38c499){_0x378cbd['rows']=_0x38c499;return _0x378cbd;})[_0x06d2('0x29')](respondWithFilteredResult(_0x335f28,_0x50a590))[_0x06d2('0x45')](handleError(_0x335f28,null));};exports[_0x06d2('0x46')]=function(_0xde6c6e,_0x20073d){var _0x3b28d5={'raw':!![],'where':{'id':_0xde6c6e[_0x06d2('0x47')]['id']}},_0x5d66d1={};_0x5d66d1[_0x06d2('0x34')]=_['keys'](db[_0x06d2('0x30')][_0x06d2('0x48')]);_0x5d66d1[_0x06d2('0x35')]=_[_0x06d2('0x49')](_0xde6c6e['query']);_0x5d66d1[_0x06d2('0x36')]=_[_0x06d2('0x37')](_0x5d66d1[_0x06d2('0x34')],_0x5d66d1[_0x06d2('0x35')]);_0x3b28d5[_0x06d2('0x39')]=_['intersection'](_0x5d66d1[_0x06d2('0x34')],qs[_0x06d2('0x38')](_0xde6c6e['query'][_0x06d2('0x38')]));_0x3b28d5['attributes']=_0x3b28d5[_0x06d2('0x39')]['length']?_0x3b28d5['attributes']:_0x5d66d1[_0x06d2('0x34')];if(_0xde6c6e[_0x06d2('0x35')][_0x06d2('0x4a')]){_0x3b28d5[_0x06d2('0x4b')]=[{'all':!![]}];}_0x3b28d5=_[_0x06d2('0x41')]({},_0x3b28d5,_0xde6c6e['options']);return db['WhatsappQueue'][_0x06d2('0x4c')](_0x3b28d5)[_0x06d2('0x29')](handleEntityNotFound(_0x20073d,null))['then'](respondWithResult(_0x20073d,null))[_0x06d2('0x45')](handleError(_0x20073d,null));};exports[_0x06d2('0x4d')]=function(_0x136c79,_0x1e3ad7){return db[_0x06d2('0x30')][_0x06d2('0x4d')](_0x136c79['body'],{})['then'](function(_0x3e93b0){var _0x2e5943=_0x136c79['user']['get']({'plain':!![]});if(!_0x2e5943)throw new Error(_0x06d2('0x4e'));if(_0x2e5943['role']==='user'){var _0x2b9fab=_0x3e93b0[_0x06d2('0x4f')]({'plain':!![]});var _0x2ca76f=_0x06d2('0x2b');return db[_0x06d2('0x50')][_0x06d2('0x4c')]({'where':{'name':_0x2ca76f,'userProfileId':_0x2e5943[_0x06d2('0x51')]},'raw':!![]})[_0x06d2('0x29')](function(_0x17dd03){if(_0x17dd03&&_0x17dd03[_0x06d2('0x52')]===0x0){return db[_0x06d2('0x53')][_0x06d2('0x4d')]({'name':_0x2b9fab[_0x06d2('0x2d')],'resourceId':_0x2b9fab['id'],'type':_0x17dd03['name'],'sectionId':_0x17dd03['id']},{})[_0x06d2('0x29')](function(){return _0x3e93b0;});}else{return _0x3e93b0;}})[_0x06d2('0x45')](function(_0x437d0b){logger[_0x06d2('0x2c')](_0x06d2('0x54'),_0x437d0b);throw _0x437d0b;});}return _0x3e93b0;})[_0x06d2('0x29')](respondWithResult(_0x1e3ad7,0xc9))[_0x06d2('0x45')](handleError(_0x1e3ad7,null));};exports[_0x06d2('0x55')]=function(_0x31a89f,_0x4598d6){if(_0x31a89f[_0x06d2('0x56')]['id']){delete _0x31a89f[_0x06d2('0x56')]['id'];}return db[_0x06d2('0x30')][_0x06d2('0x4c')]({'where':{'id':_0x31a89f['params']['id']}})[_0x06d2('0x29')](handleEntityNotFound(_0x4598d6,null))[_0x06d2('0x29')](saveUpdates(_0x31a89f[_0x06d2('0x56')],null))[_0x06d2('0x29')](respondWithResult(_0x4598d6,null))[_0x06d2('0x45')](handleError(_0x4598d6,null));};exports['destroy']=function(_0x360cff,_0x21e986){return db[_0x06d2('0x30')][_0x06d2('0x4c')]({'where':{'id':_0x360cff[_0x06d2('0x47')]['id']}})['then'](handleEntityNotFound(_0x21e986,null))['then'](removeEntity(_0x21e986,null))[_0x06d2('0x45')](handleError(_0x21e986,null));};exports[_0x06d2('0x57')]=function(_0x3bb811,_0x183e2d){return db['WhatsappQueue'][_0x06d2('0x57')]()['then'](respondWithResult(_0x183e2d,null))[_0x06d2('0x45')](handleError(_0x183e2d,null));};exports[_0x06d2('0x58')]=function(_0x571a0f,_0xbcbafc,_0x3d963f){var _0xf4cad={'raw':!![],'where':{}},_0x368ab3={},_0x15d072;return db['WhatsappQueue'][_0x06d2('0x59')]({'where':{'id':_0x571a0f[_0x06d2('0x47')]['id']}})[_0x06d2('0x29')](handleEntityNotFound(_0xbcbafc,null))['then'](function(_0x3e1e43){if(_0x3e1e43){_0x15d072=_0x3e1e43[_0x06d2('0x4f')]({'plain':!![]});_0x368ab3[_0x06d2('0x34')]=_[_0x06d2('0x49')](db[_0x06d2('0x5a')]['rawAttributes']);_0x368ab3[_0x06d2('0x35')]=_[_0x06d2('0x49')](_0x571a0f[_0x06d2('0x35')]);_0x368ab3['filters']=_['intersection'](_0x368ab3[_0x06d2('0x34')],_0x368ab3[_0x06d2('0x35')]);_0xf4cad[_0x06d2('0x39')]=_['intersection'](_0x368ab3['model'],qs[_0x06d2('0x38')](_0x571a0f[_0x06d2('0x35')][_0x06d2('0x38')]));_0xf4cad[_0x06d2('0x39')]=_0xf4cad['attributes'][_0x06d2('0x3a')]?_0xf4cad[_0x06d2('0x39')]:_0x368ab3['model'];if(!_0x571a0f['query']['hasOwnProperty'](_0x06d2('0x3c'))){_0xf4cad[_0x06d2('0x22')]=qs[_0x06d2('0x22')](_0x571a0f[_0x06d2('0x35')][_0x06d2('0x22')]);_0xf4cad[_0x06d2('0x24')]=qs[_0x06d2('0x24')](_0x571a0f[_0x06d2('0x35')]['offset']);}_0xf4cad[_0x06d2('0x5b')]=qs[_0x06d2('0x3d')](_0x571a0f[_0x06d2('0x35')]['sort']);_0xf4cad[_0x06d2('0x40')]=qs['filters'](_[_0x06d2('0x3e')](_0x571a0f[_0x06d2('0x35')],_0x368ab3['filters']));_0xf4cad[_0x06d2('0x40')][_0x06d2('0x5c')]=_0x3e1e43['id'];if(_0x571a0f[_0x06d2('0x35')][_0x06d2('0x3f')]){_0xf4cad['where']=_[_0x06d2('0x41')](_0xf4cad[_0x06d2('0x40')],{'$or':_[_0x06d2('0x2f')](_0xf4cad[_0x06d2('0x39')],function(_0x2a474c){var _0xa86fca={};_0xa86fca[_0x2a474c]={'$like':'%'+_0x571a0f['query']['filter']+'%'};return _0xa86fca;})});}_0xf4cad=_[_0x06d2('0x41')]({},_0xf4cad,_0x571a0f[_0x06d2('0x43')]);return db[_0x06d2('0x5a')][_0x06d2('0x44')](_0xf4cad);}})[_0x06d2('0x29')](function(_0x4cd075){if(_0x4cd075){return db[_0x06d2('0x5d')][_0x06d2('0x5e')]({'where':{'id':_['map'](_0x4cd075,_0x06d2('0x5f')),'role':'agent'},'attributes':['id',_0x06d2('0x2d'),_0x06d2('0x60'),'updatedAt',_0x06d2('0x61')]});}})[_0x06d2('0x29')](function(_0x40c16a){if(_0x40c16a){return{'count':_0x40c16a[_0x06d2('0x23')],'rows':_[_0x06d2('0x2f')](_0x40c16a[_0x06d2('0x62')],function(_0x47434d){return{'membername':_0x47434d['name'],'UserId':_0x47434d['id'],'queue_name':_0x15d072[_0x06d2('0x2d')],'WhatsappQueueId':_0x15d072['id'],'interface':util[_0x06d2('0x63')](_0x06d2('0x64'),_0x06d2('0x65'),_0x47434d[_0x06d2('0x2d')]),'penalty':0x0,'paused':_0x47434d[_0x06d2('0x60')],'createdAt':_0x47434d[_0x06d2('0x61')],'updatedAt':_0x47434d[_0x06d2('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0xbcbafc,_0xf4cad))[_0x06d2('0x45')](handleError(_0xbcbafc,null));};exports[_0x06d2('0x67')]=function(_0x5b2246,_0x4ecad2,_0xd4fec8){var _0x2714ea={};var _0x434a1e={};var _0x295da1;var _0x299747;return db[_0x06d2('0x30')][_0x06d2('0x59')]({'where':{'id':_0x5b2246['params']['id']}})[_0x06d2('0x29')](handleEntityNotFound(_0x4ecad2,null))[_0x06d2('0x29')](function(_0x17b929){if(_0x17b929){_0x295da1=_0x17b929;_0x434a1e[_0x06d2('0x34')]=_['keys'](db[_0x06d2('0x68')][_0x06d2('0x48')]);_0x434a1e[_0x06d2('0x35')]=_[_0x06d2('0x49')](_0x5b2246[_0x06d2('0x35')]);_0x434a1e[_0x06d2('0x36')]=_[_0x06d2('0x37')](_0x434a1e[_0x06d2('0x34')],_0x434a1e[_0x06d2('0x35')]);_0x2714ea[_0x06d2('0x39')]=_[_0x06d2('0x37')](_0x434a1e[_0x06d2('0x34')],qs['fields'](_0x5b2246[_0x06d2('0x35')][_0x06d2('0x38')]));_0x2714ea['attributes']=_0x2714ea[_0x06d2('0x39')][_0x06d2('0x3a')]?_0x2714ea['attributes']:_0x434a1e['model'];_0x2714ea[_0x06d2('0x5b')]=qs['sort'](_0x5b2246['query'][_0x06d2('0x3d')]);_0x2714ea[_0x06d2('0x40')]=qs[_0x06d2('0x36')](_[_0x06d2('0x3e')](_0x5b2246[_0x06d2('0x35')],_0x434a1e[_0x06d2('0x36')]));if(_0x5b2246[_0x06d2('0x35')][_0x06d2('0x3f')]){_0x2714ea['where']=_[_0x06d2('0x41')](_0x2714ea['where'],{'$or':_['map'](_0x2714ea[_0x06d2('0x39')],function(_0x114703){var _0x518eb6={};_0x518eb6[_0x114703]={'$like':'%'+_0x5b2246[_0x06d2('0x35')]['filter']+'%'};return _0x518eb6;})});}_0x2714ea=_[_0x06d2('0x41')]({},_0x2714ea,_0x5b2246[_0x06d2('0x43')]);return _0x295da1['getTeams'](_0x2714ea);}})['then'](function(_0x662a9b){if(_0x662a9b){_0x299747=_0x662a9b['length'];if(!_0x5b2246[_0x06d2('0x35')][_0x06d2('0x3b')]('nolimit')){_0x2714ea['limit']=qs['limit'](_0x5b2246[_0x06d2('0x35')][_0x06d2('0x22')]);_0x2714ea[_0x06d2('0x24')]=qs[_0x06d2('0x24')](_0x5b2246[_0x06d2('0x35')][_0x06d2('0x24')]);}return _0x295da1[_0x06d2('0x67')](_0x2714ea);}})[_0x06d2('0x29')](function(_0x1e7d31){if(_0x1e7d31){return _0x1e7d31?{'count':_0x299747,'rows':_0x1e7d31}:null;}})['then'](respondWithResult(_0x4ecad2,null))[_0x06d2('0x45')](handleError(_0x4ecad2,null));};exports[_0x06d2('0x69')]=function(_0x13ddda,_0x435ae1,_0x4d425d){var _0x35b996=_0x13ddda[_0x06d2('0x56')]['ids'];return db[_0x06d2('0x68')]['findAll']({'where':{'id':_0x35b996},'attributes':['id'],'include':[{'model':db[_0x06d2('0x5d')],'as':'Agents','attributes':['id',_0x06d2('0x2d'),_0x06d2('0x6a'),_0x06d2('0x6b'),_0x06d2('0x6c')],'raw':!![]}]})['then'](function(_0x43d410){if(_0x43d410){var _0x128225=_[_0x06d2('0x6d')](_0x43d410,function(_0x33df45){var _0x5040f0=_0x33df45['get']({'plain':!![]});return _0x5040f0[_0x06d2('0x6e')];});return db[_0x06d2('0x30')]['find']({'where':{'id':_0x13ddda[_0x06d2('0x47')]['id']}})[_0x06d2('0x29')](function(_0x11ba42){return db[_0x06d2('0x6f')][_0x06d2('0x70')](function(_0x25185c){return _0x11ba42[_0x06d2('0x69')](_0x35b996,{'transaction':_0x25185c})[_0x06d2('0x29')](function(){return BPromise[_0x06d2('0x71')](_0x128225,function(_0xe4999c){return db['UserWhatsappQueue']['findOrCreate']({'where':{'UserId':_0xe4999c['id'],'WhatsappQueueId':_0x13ddda[_0x06d2('0x47')]['id']},'transaction':_0x25185c});});})[_0x06d2('0x29')](function(){_0x128225[_0x06d2('0x72')](function(_0x65e45d){socket[_0x06d2('0x73')]('userWhatsappQueue:save',{'UserId':_0x65e45d['id'],'WhatsappQueueId':_0x11ba42['id']});});});});});}})[_0x06d2('0x29')](respondWithStatusCode(_0x435ae1,null))['catch'](handleError(_0x435ae1,null));};exports['removeTeams']=function(_0x36b508,_0x32f26f,_0x1ed801){return db['Team']['findAll']({'where':{'id':_0x36b508[_0x06d2('0x35')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x06d2('0x6e'),'attributes':['id'],'raw':!![]}]})[_0x06d2('0x29')](handleEntityNotFound(_0x32f26f,null))[_0x06d2('0x29')](function(_0x3ea52b){var _0x3a7791=_['map'](_0x3ea52b,'id');var _0x2f7783=[];var _0x13094c=[];var _0x534bc8=squel['select']();_0x534bc8[_0x06d2('0x74')](_0x06d2('0x75'))[_0x06d2('0x76')](_0x06d2('0x77'),'tq')[_0x06d2('0x78')](_0x06d2('0x79'),'ut',_0x06d2('0x7a'))[_0x06d2('0x40')](_0x06d2('0x7b'),_0x36b508[_0x06d2('0x47')]['id']);for(var _0x525b7a=0x0;_0x525b7a<_0x3ea52b[_0x06d2('0x3a')];_0x525b7a+=0x1){let _0x3d20f8=_0x3ea52b[_0x525b7a];for(var _0x3f309e=0x0;_0x3f309e<_0x3d20f8[_0x06d2('0x6e')][_0x06d2('0x3a')];_0x3f309e+=0x1){let _0xc286a0=_0x3d20f8['Agents'][_0x3f309e];var _0x5d9c47=_0x534bc8[_0x06d2('0x7c')]();_0x5d9c47[_0x06d2('0x40')](_0x06d2('0x7d'),_0xc286a0['id']);_0x13094c[_0x06d2('0x7e')](db[_0x06d2('0x6f')][_0x06d2('0x35')](_0x5d9c47[_0x06d2('0x7f')](),{'type':db['sequelize'][_0x06d2('0x80')]['SELECT']})['then'](function(_0x5de5b6){if(_0x5de5b6[_0x06d2('0x3a')]===0x1){return _0xc286a0['id'];}else{var _0x44d855=_[_0x06d2('0x81')](_['map'](_0x5de5b6,_0x06d2('0x82')),function(_0x3b55a4){return _[_0x06d2('0x83')](_0x3a7791,_0x3b55a4);});if(_0x44d855){return _0xc286a0['id'];}}}));}}return BPromise['all'](_0x13094c)[_0x06d2('0x29')](function(_0x27529e){_0x2f7783=_(_0x2f7783)[_0x06d2('0x84')](_0x27529e)[_0x06d2('0x85')]()[_0x06d2('0x86')]();return db['WhatsappQueue'][_0x06d2('0x4c')]({'where':{'id':_0x36b508[_0x06d2('0x47')]['id']}})['then'](function(_0x6c5d83){return db[_0x06d2('0x6f')]['transaction'](function(_0x2dcf9e){return _0x6c5d83['removeTeams'](_0x36b508[_0x06d2('0x35')][_0x06d2('0x87')],{'transaction':_0x2dcf9e})[_0x06d2('0x29')](function(){if(!_['isEmpty'](_0x2f7783)){return _0x6c5d83[_0x06d2('0x88')](_0x2f7783,{'transaction':_0x2dcf9e});}})[_0x06d2('0x29')](function(){_0x2f7783[_0x06d2('0x72')](function(_0x5003bb){socket['emit']('userWhatsappQueue:remove',{'UserId':_0x5003bb,'WhatsappQueueId':_0x6c5d83['id']});});});});});});})['then'](respondWithStatusCode(_0x32f26f,null))[_0x06d2('0x45')](handleError(_0x32f26f,null));};exports['addAgents']=function(_0x4aa6d5,_0x29f21d,_0x3bbb22){return db[_0x06d2('0x30')][_0x06d2('0x4c')]({'where':{'id':_0x4aa6d5['params']['id']}})[_0x06d2('0x29')](handleEntityNotFound(_0x29f21d,null))['then'](function(_0x5e7a45){if(_0x5e7a45){return _0x5e7a45[_0x06d2('0x89')](_0x4aa6d5[_0x06d2('0x56')]['ids'],_['omit'](_0x4aa6d5[_0x06d2('0x56')],[_0x06d2('0x87'),'id'])||{})[_0x06d2('0x8a')](function(_0x19c4b3){for(var _0x4a5d3b=0x0;_0x4a5d3b<_0x4aa6d5[_0x06d2('0x56')][_0x06d2('0x87')][_0x06d2('0x3a')];_0x4a5d3b+=0x1){socket[_0x06d2('0x73')](_0x06d2('0x8b'),{'UserId':Number(_0x4aa6d5['body'][_0x06d2('0x87')][_0x4a5d3b]),'WhatsappQueueId':Number(_0x4aa6d5['params']['id'])});}return _0x19c4b3;});}})[_0x06d2('0x29')](respondWithResult(_0x29f21d,null))[_0x06d2('0x45')](handleError(_0x29f21d,null));};exports['removeAgents']=function(_0x5dc7db,_0x4537f9,_0xc205a4){return db['WhatsappQueue'][_0x06d2('0x4c')]({'where':{'id':_0x5dc7db['params']['id']}})['then'](handleEntityNotFound(_0x4537f9,null))[_0x06d2('0x29')](function(_0x23883b){if(_0x23883b){return _0x23883b[_0x06d2('0x88')](_0x5dc7db[_0x06d2('0x35')]['ids'])[_0x06d2('0x29')](function(){if(_['isArray'](_0x5dc7db[_0x06d2('0x35')][_0x06d2('0x87')])){for(var _0x13f071=0x0;_0x13f071<_0x5dc7db[_0x06d2('0x35')][_0x06d2('0x87')]['length'];_0x13f071+=0x1){socket['emit'](_0x06d2('0x8c'),{'UserId':Number(_0x5dc7db[_0x06d2('0x35')]['ids'][_0x13f071]),'WhatsappQueueId':Number(_0x5dc7db[_0x06d2('0x47')]['id'])});}}else{socket[_0x06d2('0x73')](_0x06d2('0x8c'),{'UserId':Number(_0x5dc7db[_0x06d2('0x35')][_0x06d2('0x87')]),'WhatsappQueueId':Number(_0x5dc7db[_0x06d2('0x47')]['id'])});}});}})['then'](respondWithStatusCode(_0x4537f9,null))[_0x06d2('0x45')](handleError(_0x4537f9,null));};exports[_0x06d2('0x8d')]=function(_0x44bbeb,_0x205dc1,_0x5081c7){var _0x17e5ac={};var _0xc4b4b2={};var _0x35601b;var _0x359292;return db[_0x06d2('0x30')][_0x06d2('0x59')]({'where':{'id':_0x44bbeb[_0x06d2('0x47')]['id']}})['then'](handleEntityNotFound(_0x205dc1,null))[_0x06d2('0x29')](function(_0x1b7de8){if(_0x1b7de8){_0x35601b=_0x1b7de8;_0xc4b4b2[_0x06d2('0x34')]=_[_0x06d2('0x49')](db['User'][_0x06d2('0x48')]);_0xc4b4b2[_0x06d2('0x35')]=_[_0x06d2('0x49')](_0x44bbeb[_0x06d2('0x35')]);_0xc4b4b2['filters']=_[_0x06d2('0x37')](_0xc4b4b2[_0x06d2('0x34')],_0xc4b4b2[_0x06d2('0x35')]);_0x17e5ac[_0x06d2('0x39')]=_[_0x06d2('0x37')](_0xc4b4b2[_0x06d2('0x34')],qs['fields'](_0x44bbeb[_0x06d2('0x35')][_0x06d2('0x38')]));_0x17e5ac[_0x06d2('0x39')]=_0x17e5ac['attributes'][_0x06d2('0x3a')]?_0x17e5ac[_0x06d2('0x39')]:_0xc4b4b2[_0x06d2('0x34')];_0x17e5ac['order']=qs[_0x06d2('0x3d')](_0x44bbeb['query']['sort']);_0x17e5ac['where']=qs[_0x06d2('0x36')](_[_0x06d2('0x3e')](_0x44bbeb[_0x06d2('0x35')],_0xc4b4b2[_0x06d2('0x36')]));if(_0x44bbeb[_0x06d2('0x35')][_0x06d2('0x3f')]){_0x17e5ac[_0x06d2('0x40')]=_[_0x06d2('0x41')](_0x17e5ac[_0x06d2('0x40')],{'$or':_[_0x06d2('0x2f')](_0x17e5ac[_0x06d2('0x39')],function(_0x5576a5){var _0xb8c53f={};_0xb8c53f[_0x5576a5]={'$like':'%'+_0x44bbeb[_0x06d2('0x35')][_0x06d2('0x3f')]+'%'};return _0xb8c53f;})});}_0x17e5ac=_['merge']({},_0x17e5ac,_0x44bbeb[_0x06d2('0x43')]);return _0x35601b[_0x06d2('0x8d')](_0x17e5ac);}})[_0x06d2('0x29')](function(_0x15c2b5){if(_0x15c2b5){_0x359292=_0x15c2b5[_0x06d2('0x3a')];if(!_0x44bbeb[_0x06d2('0x35')][_0x06d2('0x3b')](_0x06d2('0x3c'))){_0x17e5ac[_0x06d2('0x22')]=qs[_0x06d2('0x22')](_0x44bbeb[_0x06d2('0x35')]['limit']);_0x17e5ac['offset']=qs[_0x06d2('0x24')](_0x44bbeb[_0x06d2('0x35')]['offset']);}return _0x35601b['getAgents'](_0x17e5ac);}})[_0x06d2('0x29')](function(_0x317954){if(_0x317954){return _0x317954?{'count':_0x359292,'rows':_0x317954}:null;}})[_0x06d2('0x29')](respondWithResult(_0x205dc1,null))[_0x06d2('0x45')](handleError(_0x205dc1,null));};
\ No newline at end of file
index 4b90d7c..5e73c3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32c3=['emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners'];(function(_0x1f9efe,_0x1915b9){var _0x1d30fa=function(_0x29fee5){while(--_0x29fee5){_0x1f9efe['push'](_0x1f9efe['shift']());}};_0x1d30fa(++_0x1915b9);}(_0x32c3,0x195));var _0x332c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x32c3[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0x332c('0x0'));var WhatsappQueue=require(_0x332c('0x1'))['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x332c('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x24a7d1){return function(_0x36b7ab,_0x279986,_0xe973f){WhatsappQueueEvents[_0x332c('0x3')](_0x24a7d1+':'+_0x36b7ab['id'],_0x36b7ab);WhatsappQueueEvents['emit'](_0x24a7d1,_0x36b7ab);_0xe973f(null);};}for(var e in events){if(events[_0x332c('0x4')](e)){var event=events[e];WhatsappQueue[_0x332c('0x5')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
+var _0x0d3d=['../../mysqldb','WhatsappQueue','setMaxListeners','save','update','remove','emit','exports','events'];(function(_0x357e92,_0x492b13){var _0x142dab=function(_0x4df560){while(--_0x4df560){_0x357e92['push'](_0x357e92['shift']());}};_0x142dab(++_0x492b13);}(_0x0d3d,0x155));var _0xd0d3=function(_0x2a9668,_0x15b505){_0x2a9668=_0x2a9668-0x0;var _0x5258a5=_0x0d3d[_0x2a9668];return _0x5258a5;};'use strict';var EventEmitter=require(_0xd0d3('0x0'));var WhatsappQueue=require(_0xd0d3('0x1'))['db'][_0xd0d3('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xd0d3('0x3')](0x0);var events={'afterCreate':_0xd0d3('0x4'),'afterUpdate':_0xd0d3('0x5'),'afterDestroy':_0xd0d3('0x6')};function emitEvent(_0x43dbc5){return function(_0x7a87be,_0x17cb58,_0x21dd77){WhatsappQueueEvents['emit'](_0x43dbc5+':'+_0x7a87be['id'],_0x7a87be);WhatsappQueueEvents[_0xd0d3('0x7')](_0x43dbc5,_0x7a87be);_0x21dd77(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue['hook'](e,emitEvent(event));}}module[_0xd0d3('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
index b7fcc7d..921beab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x856d=['whatsapp_queues','lodash','util','../../config/logger','moment','path','../../config/environment','./whatsappQueue.attributes','exports','define'];(function(_0x5e1e42,_0x14220e){var _0x540daa=function(_0x59b5c1){while(--_0x59b5c1){_0x5e1e42['push'](_0x5e1e42['shift']());}};_0x540daa(++_0x14220e);}(_0x856d,0xa1));var _0xd856=function(_0x4340b4,_0x52b0e8){_0x4340b4=_0x4340b4-0x0;var _0x494fdc=_0x856d[_0x4340b4];return _0x494fdc;};'use strict';var _=require(_0xd856('0x0'));var util=require(_0xd856('0x1'));var logger=require(_0xd856('0x2'))('api');var moment=require(_0xd856('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd856('0x4'));var rimraf=require('rimraf');var config=require(_0xd856('0x5'));var attributes=require(_0xd856('0x6'));module[_0xd856('0x7')]=function(_0xe88bc1,_0x23073b){return _0xe88bc1[_0xd856('0x8')]('WhatsappQueue',attributes,{'tableName':_0xd856('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6869=['define','WhatsappQueue','whatsapp_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappQueue.attributes'];(function(_0x24dedb,_0x116fe6){var _0x4220b2=function(_0x1bf700){while(--_0x1bf700){_0x24dedb['push'](_0x24dedb['shift']());}};_0x4220b2(++_0x116fe6);}(_0x6869,0xf3));var _0x9686=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x6869[_0x2b4411];return _0x8e41ef;};'use strict';var _=require(_0x9686('0x0'));var util=require(_0x9686('0x1'));var logger=require(_0x9686('0x2'))('api');var moment=require('moment');var BPromise=require(_0x9686('0x3'));var rp=require(_0x9686('0x4'));var fs=require('fs');var path=require(_0x9686('0x5'));var rimraf=require(_0x9686('0x6'));var config=require(_0x9686('0x7'));var attributes=require(_0x9686('0x8'));module['exports']=function(_0x31597c,_0x3dee9f){return _0x31597c[_0x9686('0x9')](_0x9686('0xa'),attributes,{'tableName':_0x9686('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f517268..f2738b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ab=['findAll','options','raw','where','attributes','limit','map','include','model','debug','ShowWhatsappQueue','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./whatsappQueue.socket','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetWhatsappQueue','WhatsappQueue'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0x55ab,0x1b8));var _0xb55a=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x55ab[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var util=require(_0xb55a('0x0'));var moment=require(_0xb55a('0x1'));var BPromise=require(_0xb55a('0x2'));var rs=require(_0xb55a('0x3'));var fs=require('fs');var Redis=require(_0xb55a('0x4'));var db=require(_0xb55a('0x5'))['db'];var utils=require(_0xb55a('0x6'));var logger=require(_0xb55a('0x7'))('rpc');var config=require(_0xb55a('0x8'));var jayson=require(_0xb55a('0x9'));var client=jayson[_0xb55a('0xa')][_0xb55a('0xb')]({'port':0x232a});config[_0xb55a('0xc')]=_[_0xb55a('0xd')](config[_0xb55a('0xc')],{'host':_0xb55a('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb55a('0xf'))['register'](socket);function respondWithRpcPromise(_0xd6ef91,_0x1c2330,_0x3426ca){return new BPromise(function(_0x95af85,_0x217f88){return client[_0xb55a('0x10')](_0xd6ef91,_0x3426ca)[_0xb55a('0x11')](function(_0x20145f){logger[_0xb55a('0x12')](_0xb55a('0x13'),_0x1c2330,_0xb55a('0x14'));logger['debug'](_0xb55a('0x15'),_0x1c2330,'request\x20sent',JSON[_0xb55a('0x16')](_0x20145f));if(_0x20145f[_0xb55a('0x17')]){if(_0x20145f[_0xb55a('0x17')]['code']===0x1f4){logger[_0xb55a('0x17')]('WhatsappQueue,\x20%s,\x20%s',_0x1c2330,_0x20145f[_0xb55a('0x17')][_0xb55a('0x18')]);return _0x217f88(_0x20145f['error'][_0xb55a('0x18')]);}logger['error'](_0xb55a('0x13'),_0x1c2330,_0x20145f[_0xb55a('0x17')]['message']);return _0x95af85(_0x20145f[_0xb55a('0x17')][_0xb55a('0x18')]);}else{logger['info']('WhatsappQueue,\x20%s,\x20%s',_0x1c2330,_0xb55a('0x14'));_0x95af85(_0x20145f['result'][_0xb55a('0x18')]);}})[_0xb55a('0x19')](function(_0x24d109){logger['error'](_0xb55a('0x13'),_0x1c2330,_0x24d109);_0x217f88(_0x24d109);});});}exports[_0xb55a('0x1a')]=function(_0x355aa9){var _0x5ccf2f=this;return new Promise(function(_0x39ea86,_0x3d7ab0){return db[_0xb55a('0x1b')][_0xb55a('0x1c')]({'raw':_0x355aa9[_0xb55a('0x1d')]?_0x355aa9[_0xb55a('0x1d')][_0xb55a('0x1e')]===undefined?!![]:![]:!![],'where':_0x355aa9[_0xb55a('0x1d')]?_0x355aa9['options'][_0xb55a('0x1f')]||null:null,'attributes':_0x355aa9[_0xb55a('0x1d')]?_0x355aa9[_0xb55a('0x1d')][_0xb55a('0x20')]||null:null,'limit':_0x355aa9[_0xb55a('0x1d')]?_0x355aa9[_0xb55a('0x1d')][_0xb55a('0x21')]||null:null,'include':_0x355aa9[_0xb55a('0x1d')]?_0x355aa9['options']['include']?_[_0xb55a('0x22')](_0x355aa9[_0xb55a('0x1d')][_0xb55a('0x23')],function(_0x51bb74){return{'model':db[_0x51bb74[_0xb55a('0x24')]],'as':_0x51bb74['as'],'attributes':_0x51bb74['attributes'],'include':_0x51bb74['include']?_[_0xb55a('0x22')](_0x51bb74[_0xb55a('0x23')],function(_0x1a5c49){return{'model':db[_0x1a5c49[_0xb55a('0x24')]],'as':_0x1a5c49['as'],'attributes':_0x1a5c49[_0xb55a('0x20')],'include':_0x1a5c49[_0xb55a('0x23')]?_['map'](_0x1a5c49[_0xb55a('0x23')],function(_0x11521a){return{'model':db[_0x11521a[_0xb55a('0x24')]],'as':_0x11521a['as'],'attributes':_0x11521a[_0xb55a('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x77bb16){logger[_0xb55a('0x12')](_0xb55a('0x1a'),_0x355aa9);logger[_0xb55a('0x25')](_0xb55a('0x1a'),_0x355aa9,JSON[_0xb55a('0x16')](_0x77bb16));_0x39ea86(_0x77bb16);})['catch'](function(_0x18aebd){logger['error']('GetWhatsappQueue',_0x18aebd['message'],_0x355aa9);_0x3d7ab0(_0x5ccf2f[_0xb55a('0x17')](0x1f4,_0x18aebd[_0xb55a('0x18')]));});});};exports['ShowWhatsappQueue']=function(_0x980636){var _0x2b57b6=this;return new Promise(function(_0x3db51a,_0x7bda05){return db['WhatsappQueue']['find']({'raw':_0x980636[_0xb55a('0x1d')]?_0x980636[_0xb55a('0x1d')][_0xb55a('0x1e')]===undefined?!![]:![]:!![],'where':_0x980636[_0xb55a('0x1d')]?_0x980636[_0xb55a('0x1d')][_0xb55a('0x1f')]||null:null,'attributes':_0x980636[_0xb55a('0x1d')]?_0x980636[_0xb55a('0x1d')][_0xb55a('0x20')]||null:null,'include':_0x980636[_0xb55a('0x1d')]?_0x980636[_0xb55a('0x1d')]['include']?_[_0xb55a('0x22')](_0x980636['options'][_0xb55a('0x23')],function(_0x4d7f06){return{'model':db[_0x4d7f06['model']],'as':_0x4d7f06['as'],'attributes':_0x4d7f06['attributes'],'include':_0x4d7f06[_0xb55a('0x23')]?_[_0xb55a('0x22')](_0x4d7f06[_0xb55a('0x23')],function(_0x4b824e){return{'model':db[_0x4b824e[_0xb55a('0x24')]],'as':_0x4b824e['as'],'attributes':_0x4b824e[_0xb55a('0x20')],'include':_0x4b824e[_0xb55a('0x23')]?_['map'](_0x4b824e['include'],function(_0x36b62e){return{'model':db[_0x36b62e[_0xb55a('0x24')]],'as':_0x36b62e['as'],'attributes':_0x36b62e[_0xb55a('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2e1c34){logger[_0xb55a('0x12')](_0xb55a('0x26'),_0x980636);logger['debug'](_0xb55a('0x26'),_0x980636,JSON[_0xb55a('0x16')](_0x2e1c34));_0x3db51a(_0x2e1c34);})['catch'](function(_0x3de5d5){logger[_0xb55a('0x17')](_0xb55a('0x26'),_0x3de5d5[_0xb55a('0x18')],_0x980636);_0x7bda05(_0x2b57b6['error'](0x1f4,_0x3de5d5[_0xb55a('0x18')]));});});};
\ No newline at end of file
+var _0x29bf=['catch','GetWhatsappQueue','WhatsappQueue','findAll','options','where','attributes','limit','include','map','model','ShowWhatsappQueue','find','raw','then','debug','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register','request','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x1e130e,_0x3d6fd5){var _0x3108f8=function(_0x2da44e){while(--_0x2da44e){_0x1e130e['push'](_0x1e130e['shift']());}};_0x3108f8(++_0x3d6fd5);}(_0x29bf,0x1be));var _0xf29b=function(_0x5c7872,_0x11e350){_0x5c7872=_0x5c7872-0x0;var _0x3cdf1e=_0x29bf[_0x5c7872];return _0x3cdf1e;};'use strict';var _=require('lodash');var util=require(_0xf29b('0x0'));var moment=require(_0xf29b('0x1'));var BPromise=require('bluebird');var rs=require(_0xf29b('0x2'));var fs=require('fs');var Redis=require(_0xf29b('0x3'));var db=require(_0xf29b('0x4'))['db'];var utils=require(_0xf29b('0x5'));var logger=require(_0xf29b('0x6'))(_0xf29b('0x7'));var config=require(_0xf29b('0x8'));var jayson=require(_0xf29b('0x9'));var client=jayson[_0xf29b('0xa')][_0xf29b('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xf29b('0xc')],{'host':_0xf29b('0xd'),'port':0x18eb});var socket=require(_0xf29b('0xe'))(new Redis(config[_0xf29b('0xc')]));require(_0xf29b('0xf'))[_0xf29b('0x10')](socket);function respondWithRpcPromise(_0x473824,_0x1c714a,_0x728789){return new BPromise(function(_0x4673d5,_0x2fad91){return client[_0xf29b('0x11')](_0x473824,_0x728789)['then'](function(_0xfc6799){logger[_0xf29b('0x12')](_0xf29b('0x13'),_0x1c714a,_0xf29b('0x14'));logger['debug'](_0xf29b('0x15'),_0x1c714a,'request\x20sent',JSON[_0xf29b('0x16')](_0xfc6799));if(_0xfc6799['error']){if(_0xfc6799[_0xf29b('0x17')][_0xf29b('0x18')]===0x1f4){logger[_0xf29b('0x17')](_0xf29b('0x13'),_0x1c714a,_0xfc6799['error'][_0xf29b('0x19')]);return _0x2fad91(_0xfc6799[_0xf29b('0x17')]['message']);}logger[_0xf29b('0x17')]('WhatsappQueue,\x20%s,\x20%s',_0x1c714a,_0xfc6799[_0xf29b('0x17')][_0xf29b('0x19')]);return _0x4673d5(_0xfc6799[_0xf29b('0x17')][_0xf29b('0x19')]);}else{logger[_0xf29b('0x12')](_0xf29b('0x13'),_0x1c714a,'request\x20sent');_0x4673d5(_0xfc6799[_0xf29b('0x1a')][_0xf29b('0x19')]);}})[_0xf29b('0x1b')](function(_0x200dbf){logger[_0xf29b('0x17')](_0xf29b('0x13'),_0x1c714a,_0x200dbf);_0x2fad91(_0x200dbf);});});}exports[_0xf29b('0x1c')]=function(_0x2606cb){var _0x4671c9=this;return new Promise(function(_0x596e5e,_0x26d647){return db[_0xf29b('0x1d')][_0xf29b('0x1e')]({'raw':_0x2606cb[_0xf29b('0x1f')]?_0x2606cb['options']['raw']===undefined?!![]:![]:!![],'where':_0x2606cb[_0xf29b('0x1f')]?_0x2606cb['options'][_0xf29b('0x20')]||null:null,'attributes':_0x2606cb[_0xf29b('0x1f')]?_0x2606cb[_0xf29b('0x1f')][_0xf29b('0x21')]||null:null,'limit':_0x2606cb['options']?_0x2606cb[_0xf29b('0x1f')][_0xf29b('0x22')]||null:null,'include':_0x2606cb[_0xf29b('0x1f')]?_0x2606cb[_0xf29b('0x1f')][_0xf29b('0x23')]?_[_0xf29b('0x24')](_0x2606cb[_0xf29b('0x1f')][_0xf29b('0x23')],function(_0x12da9f){return{'model':db[_0x12da9f[_0xf29b('0x25')]],'as':_0x12da9f['as'],'attributes':_0x12da9f[_0xf29b('0x21')],'include':_0x12da9f['include']?_['map'](_0x12da9f[_0xf29b('0x23')],function(_0x3e2c69){return{'model':db[_0x3e2c69[_0xf29b('0x25')]],'as':_0x3e2c69['as'],'attributes':_0x3e2c69[_0xf29b('0x21')],'include':_0x3e2c69['include']?_[_0xf29b('0x24')](_0x3e2c69[_0xf29b('0x23')],function(_0x3bcd3f){return{'model':db[_0x3bcd3f[_0xf29b('0x25')]],'as':_0x3bcd3f['as'],'attributes':_0x3bcd3f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x382e7c){logger[_0xf29b('0x12')]('GetWhatsappQueue',_0x2606cb);logger['debug'](_0xf29b('0x1c'),_0x2606cb,JSON[_0xf29b('0x16')](_0x382e7c));_0x596e5e(_0x382e7c);})[_0xf29b('0x1b')](function(_0xf6c33c){logger[_0xf29b('0x17')](_0xf29b('0x1c'),_0xf6c33c[_0xf29b('0x19')],_0x2606cb);_0x26d647(_0x4671c9[_0xf29b('0x17')](0x1f4,_0xf6c33c['message']));});});};exports[_0xf29b('0x26')]=function(_0x1e3c9e){var _0x229e92=this;return new Promise(function(_0x2e698e,_0x26e932){return db[_0xf29b('0x1d')][_0xf29b('0x27')]({'raw':_0x1e3c9e[_0xf29b('0x1f')]?_0x1e3c9e[_0xf29b('0x1f')][_0xf29b('0x28')]===undefined?!![]:![]:!![],'where':_0x1e3c9e[_0xf29b('0x1f')]?_0x1e3c9e['options'][_0xf29b('0x20')]||null:null,'attributes':_0x1e3c9e[_0xf29b('0x1f')]?_0x1e3c9e[_0xf29b('0x1f')][_0xf29b('0x21')]||null:null,'include':_0x1e3c9e[_0xf29b('0x1f')]?_0x1e3c9e[_0xf29b('0x1f')][_0xf29b('0x23')]?_['map'](_0x1e3c9e[_0xf29b('0x1f')][_0xf29b('0x23')],function(_0x574e60){return{'model':db[_0x574e60[_0xf29b('0x25')]],'as':_0x574e60['as'],'attributes':_0x574e60[_0xf29b('0x21')],'include':_0x574e60[_0xf29b('0x23')]?_[_0xf29b('0x24')](_0x574e60[_0xf29b('0x23')],function(_0x592068){return{'model':db[_0x592068[_0xf29b('0x25')]],'as':_0x592068['as'],'attributes':_0x592068['attributes'],'include':_0x592068['include']?_[_0xf29b('0x24')](_0x592068[_0xf29b('0x23')],function(_0x1700e7){return{'model':db[_0x1700e7['model']],'as':_0x1700e7['as'],'attributes':_0x1700e7['attributes']};}):[]};}):[]};}):[]:[]})[_0xf29b('0x29')](function(_0xd678ec){logger[_0xf29b('0x12')](_0xf29b('0x26'),_0x1e3c9e);logger[_0xf29b('0x2a')]('ShowWhatsappQueue',_0x1e3c9e,JSON['stringify'](_0xd678ec));_0x2e698e(_0xd678ec);})[_0xf29b('0x1b')](function(_0x329aea){logger[_0xf29b('0x17')](_0xf29b('0x26'),_0x329aea[_0xf29b('0x19')],_0x1e3c9e);_0x26e932(_0x229e92[_0xf29b('0x17')](0x1f4,_0x329aea['message']));});});};
\ No newline at end of file
index 85aadbb..b28e0a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c9c=['register','length','whatsappQueue:','./whatsappQueue.events','save','update','removeListener'];(function(_0x29695a,_0x153d43){var _0x2405fc=function(_0x1b4e1f){while(--_0x1b4e1f){_0x29695a['push'](_0x29695a['shift']());}};_0x2405fc(++_0x153d43);}(_0x6c9c,0x96));var _0xc6c9=function(_0xd9ed40,_0xc28ab0){_0xd9ed40=_0xd9ed40-0x0;var _0x2cabad=_0x6c9c[_0xd9ed40];return _0x2cabad;};'use strict';var WhatsappQueueEvents=require(_0xc6c9('0x0'));var events=[_0xc6c9('0x1'),'remove',_0xc6c9('0x2')];function createListener(_0x4b9b1a,_0x3207f2){return function(_0x13acbe){_0x3207f2['emit'](_0x4b9b1a,_0x13acbe);};}function removeListener(_0x996712,_0x4d7cbd){return function(){WhatsappQueueEvents[_0xc6c9('0x3')](_0x996712,_0x4d7cbd);};}exports[_0xc6c9('0x4')]=function(_0x39b932){for(var _0x20d814=0x0,_0x20295d=events[_0xc6c9('0x5')];_0x20d814<_0x20295d;_0x20d814++){var _0x33f1a4=events[_0x20d814];var _0x81891a=createListener(_0xc6c9('0x6')+_0x33f1a4,_0x39b932);WhatsappQueueEvents['on'](_0x33f1a4,_0x81891a);}};
\ No newline at end of file
+var _0x381b=['emit','removeListener','register','length','save','remove','update'];(function(_0x2cb282,_0x153209){var _0x49d14b=function(_0x6a91bc){while(--_0x6a91bc){_0x2cb282['push'](_0x2cb282['shift']());}};_0x49d14b(++_0x153209);}(_0x381b,0xac));var _0xb381=function(_0x1d39f6,_0x146f4a){_0x1d39f6=_0x1d39f6-0x0;var _0x3dbd7a=_0x381b[_0x1d39f6];return _0x3dbd7a;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0xb381('0x0'),_0xb381('0x1'),_0xb381('0x2')];function createListener(_0x41879e,_0x3625f4){return function(_0x383144){_0x3625f4[_0xb381('0x3')](_0x41879e,_0x383144);};}function removeListener(_0x3c4a73,_0x445c25){return function(){WhatsappQueueEvents[_0xb381('0x4')](_0x3c4a73,_0x445c25);};}exports[_0xb381('0x5')]=function(_0x98713){for(var _0x3e39a9=0x0,_0x4b7490=events[_0xb381('0x6')];_0x3e39a9<_0x4b7490;_0x3e39a9++){var _0x33ab44=events[_0x3e39a9];var _0x517387=createListener('whatsappQueue:'+_0x33ab44,_0x98713);WhatsappQueueEvents['on'](_0x33ab44,_0x517387);}};
\ No newline at end of file
index 57e9a26..f0a058c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7424=['describe','/:id','show','create','put','delete','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x390dc1,_0x4b8ec7){var _0x3820ae=function(_0x194e1e){while(--_0x194e1e){_0x390dc1['push'](_0x390dc1['shift']());}};_0x3820ae(++_0x4b8ec7);}(_0x7424,0x16f));var _0x4742=function(_0x575624,_0x437f3a){_0x575624=_0x575624-0x0;var _0x595921=_0x7424[_0x575624];return _0x595921;};'use strict';var multer=require(_0x4742('0x0'));var util=require(_0x4742('0x1'));var path=require(_0x4742('0x2'));var timeout=require('connect-timeout');var express=require(_0x4742('0x3'));var router=express[_0x4742('0x4')]();var fs_extra=require(_0x4742('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4742('0x6'));var config=require(_0x4742('0x7'));var controller=require('./whatsappQueueReport.controller');router['get']('/',auth[_0x4742('0x8')](),controller[_0x4742('0x9')]);router[_0x4742('0xa')]('/describe',auth[_0x4742('0x8')](),controller[_0x4742('0xb')]);router['get'](_0x4742('0xc'),auth[_0x4742('0x8')](),controller[_0x4742('0xd')]);router['post']('/',auth[_0x4742('0x8')](),controller[_0x4742('0xe')]);router[_0x4742('0xf')]('/:id',auth[_0x4742('0x8')](),controller['update']);router[_0x4742('0x10')](_0x4742('0xc'),auth[_0x4742('0x8')](),controller['destroy']);module[_0x4742('0x11')]=router;
\ No newline at end of file
+var _0x7e4b=['isAuthenticated','index','describe','show','post','create','put','/:id','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get'];(function(_0x4e6354,_0x2541ad){var _0x338849=function(_0xce6ef0){while(--_0xce6ef0){_0x4e6354['push'](_0x4e6354['shift']());}};_0x338849(++_0x2541ad);}(_0x7e4b,0x64));var _0xb7e4=function(_0x40ca83,_0x5b4bc5){_0x40ca83=_0x40ca83-0x0;var _0x48585b=_0x7e4b[_0x40ca83];return _0x48585b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb7e4('0x0'));var timeout=require(_0xb7e4('0x1'));var express=require(_0xb7e4('0x2'));var router=express[_0xb7e4('0x3')]();var fs_extra=require(_0xb7e4('0x4'));var auth=require(_0xb7e4('0x5'));var interaction=require(_0xb7e4('0x6'));var config=require(_0xb7e4('0x7'));var controller=require(_0xb7e4('0x8'));router[_0xb7e4('0x9')]('/',auth[_0xb7e4('0xa')](),controller[_0xb7e4('0xb')]);router[_0xb7e4('0x9')]('/describe',auth[_0xb7e4('0xa')](),controller[_0xb7e4('0xc')]);router[_0xb7e4('0x9')]('/:id',auth[_0xb7e4('0xa')](),controller[_0xb7e4('0xd')]);router[_0xb7e4('0xe')]('/',auth[_0xb7e4('0xa')](),controller[_0xb7e4('0xf')]);router[_0xb7e4('0x10')](_0xb7e4('0x11'),auth[_0xb7e4('0xa')](),controller[_0xb7e4('0x12')]);router[_0xb7e4('0x13')](_0xb7e4('0x11'),auth[_0xb7e4('0xa')](),controller[_0xb7e4('0x14')]);module[_0xb7e4('0x15')]=router;
\ No newline at end of file
index 0fdce59..74795cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x4a60d4,_0x348b50){var _0x3ed031=function(_0xe56e2e){while(--_0xe56e2e){_0x4a60d4['push'](_0x4a60d4['shift']());}};_0x3ed031(++_0x348b50);}(_0x7a54,0x106));var _0x47a5=function(_0x30d04d,_0x417353){_0x30d04d=_0x30d04d-0x0;var _0x525e9b=_0x7a54[_0x30d04d];return _0x525e9b;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x122e9a,_0x4f59e6){var _0x54e326=function(_0x30d8b9){while(--_0x30d8b9){_0x122e9a['push'](_0x122e9a['shift']());}};_0x54e326(++_0x4f59e6);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'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 550aa5e..bc14c8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fd9=['includeAll','include','rows','catch','show','params','create','body','find','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','WhatsappQueueReport','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options'];(function(_0x25ca40,_0x2259f7){var _0x1b25f6=function(_0x151b39){while(--_0x151b39){_0x25ca40['push'](_0x25ca40['shift']());}};_0x1b25f6(++_0x2259f7);}(_0x0fd9,0xa3));var _0x90fd=function(_0x41c381,_0x1176bd){_0x41c381=_0x41c381-0x0;var _0x427981=_0x0fd9[_0x41c381];return _0x427981;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x90fd('0x0'));var zipdir=require(_0x90fd('0x1'));var jsonpatch=require(_0x90fd('0x2'));var rp=require(_0x90fd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x90fd('0x4'));var util=require(_0x90fd('0x5'));var path=require(_0x90fd('0x6'));var sox=require(_0x90fd('0x7'));var csv=require(_0x90fd('0x8'));var ejs=require(_0x90fd('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x90fd('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x90fd('0xb'));var toCsv=require(_0x90fd('0x8'));var querystring=require('querystring');var Papa=require(_0x90fd('0xc'));var Redis=require(_0x90fd('0xd'));var authService=require(_0x90fd('0xe'));var qs=require(_0x90fd('0xf'));var as=require(_0x90fd('0x10'));var hardwareService=require(_0x90fd('0x11'));var logger=require(_0x90fd('0x12'))(_0x90fd('0x13'));var utils=require(_0x90fd('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x90fd('0x15'));var db=require(_0x90fd('0x16'))['db'];function respondWithStatusCode(_0x4e8b99,_0x1439ed){_0x1439ed=_0x1439ed||0xcc;return function(_0x37a0f8){if(_0x37a0f8){return _0x4e8b99[_0x90fd('0x17')](_0x1439ed);}return _0x4e8b99['status'](_0x1439ed)[_0x90fd('0x18')]();};}function respondWithResult(_0x48e701,_0x1cae40){_0x1cae40=_0x1cae40||0xc8;return function(_0xb402d9){if(_0xb402d9){return _0x48e701[_0x90fd('0x19')](_0x1cae40)[_0x90fd('0x1a')](_0xb402d9);}};}function respondWithFilteredResult(_0x3c5da8,_0x442a19){return function(_0x296a64){if(_0x296a64){var _0x4eb953=typeof _0x442a19['offset']===_0x90fd('0x1b')&&typeof _0x442a19[_0x90fd('0x1c')]==='undefined';var _0x130489=_0x296a64[_0x90fd('0x1d')];var _0x1fcc87=_0x4eb953?0x0:_0x442a19['offset'];var _0x3f9c76=_0x4eb953?_0x296a64[_0x90fd('0x1d')]:_0x442a19[_0x90fd('0x1e')]+_0x442a19[_0x90fd('0x1c')];var _0x251957;if(_0x3f9c76>=_0x130489){_0x3f9c76=_0x130489;_0x251957=0xc8;}else{_0x251957=0xce;}_0x3c5da8[_0x90fd('0x19')](_0x251957);return _0x3c5da8[_0x90fd('0x1f')](_0x90fd('0x20'),_0x1fcc87+'-'+_0x3f9c76+'/'+_0x130489)[_0x90fd('0x1a')](_0x296a64);}return null;};}function patchUpdates(_0x90197e){return function(_0x19e79b){try{jsonpatch[_0x90fd('0x21')](_0x19e79b,_0x90197e,!![]);}catch(_0x1fb31a){return BPromise[_0x90fd('0x22')](_0x1fb31a);}return _0x19e79b[_0x90fd('0x23')]();};}function saveUpdates(_0x493c26,_0x35ce4e){return function(_0xc4e4e2){if(_0xc4e4e2){return _0xc4e4e2[_0x90fd('0x24')](_0x493c26)[_0x90fd('0x25')](function(_0x411a6a){return _0x411a6a;});}return null;};}function removeEntity(_0x3ad6c6,_0x30f67e){return function(_0x300262){if(_0x300262){return _0x300262['destroy']()[_0x90fd('0x25')](function(){_0x3ad6c6['status'](0xcc)[_0x90fd('0x18')]();});}};}function handleEntityNotFound(_0x18d5b3,_0x2ffea2){return function(_0x31667c){if(!_0x31667c){_0x18d5b3[_0x90fd('0x17')](0x194);}return _0x31667c;};}function handleError(_0x4c962f,_0x35c38d){_0x35c38d=_0x35c38d||0x1f4;return function(_0xe333f0){logger[_0x90fd('0x26')](_0xe333f0[_0x90fd('0x27')]);if(_0xe333f0[_0x90fd('0x28')]){delete _0xe333f0[_0x90fd('0x28')];}_0x4c962f['status'](_0x35c38d)['send'](_0xe333f0);};}exports[_0x90fd('0x29')]=function(_0x170cfb,_0x2924e9){var _0x404971={},_0x397aaf={},_0x59b3e8={'count':0x0,'rows':[]};var _0x4f69e7=_[_0x90fd('0x2a')](db[_0x90fd('0x2b')][_0x90fd('0x2c')],function(_0x3a0102){return{'name':_0x3a0102['fieldName'],'type':_0x3a0102['type'][_0x90fd('0x2d')]};});_0x397aaf[_0x90fd('0x2e')]=_[_0x90fd('0x2a')](_0x4f69e7,_0x90fd('0x28'));_0x397aaf['query']=_[_0x90fd('0x2f')](_0x170cfb[_0x90fd('0x30')]);_0x397aaf[_0x90fd('0x31')]=_[_0x90fd('0x32')](_0x397aaf[_0x90fd('0x2e')],_0x397aaf[_0x90fd('0x30')]);_0x404971[_0x90fd('0x33')]=_[_0x90fd('0x32')](_0x397aaf[_0x90fd('0x2e')],qs[_0x90fd('0x34')](_0x170cfb[_0x90fd('0x30')][_0x90fd('0x34')]));_0x404971[_0x90fd('0x33')]=_0x404971[_0x90fd('0x33')][_0x90fd('0x35')]?_0x404971[_0x90fd('0x33')]:_0x397aaf['model'];if(!_0x170cfb[_0x90fd('0x30')][_0x90fd('0x36')](_0x90fd('0x37'))){_0x404971[_0x90fd('0x1c')]=qs[_0x90fd('0x1c')](_0x170cfb[_0x90fd('0x30')][_0x90fd('0x1c')]);_0x404971[_0x90fd('0x1e')]=qs[_0x90fd('0x1e')](_0x170cfb[_0x90fd('0x30')][_0x90fd('0x1e')]);}_0x404971[_0x90fd('0x38')]=qs[_0x90fd('0x39')](_0x170cfb['query'][_0x90fd('0x39')]);_0x404971[_0x90fd('0x3a')]=qs[_0x90fd('0x31')](_[_0x90fd('0x3b')](_0x170cfb['query'],_0x397aaf[_0x90fd('0x31')]),_0x4f69e7);if(_0x170cfb[_0x90fd('0x30')][_0x90fd('0x3c')]){_0x404971['where']=_['merge'](_0x404971[_0x90fd('0x3a')],{'$or':_[_0x90fd('0x2a')](_0x4f69e7,function(_0x377319){if(_0x377319[_0x90fd('0x3d')]!==_0x90fd('0x3e')){var _0x254200={};_0x254200[_0x377319[_0x90fd('0x28')]]={'$like':'%'+_0x170cfb[_0x90fd('0x30')][_0x90fd('0x3c')]+'%'};return _0x254200;}})});}_0x404971=_[_0x90fd('0x3f')]({},_0x404971,_0x170cfb[_0x90fd('0x40')]);var _0x43c84c={'where':_0x404971[_0x90fd('0x3a')]};return db[_0x90fd('0x2b')][_0x90fd('0x1d')](_0x43c84c)[_0x90fd('0x25')](function(_0x2717ca){_0x59b3e8[_0x90fd('0x1d')]=_0x2717ca;if(_0x170cfb['query'][_0x90fd('0x41')]){_0x404971[_0x90fd('0x42')]=[{'all':!![]}];}return db[_0x90fd('0x2b')]['findAll'](_0x404971);})['then'](function(_0x47b8c8){_0x59b3e8[_0x90fd('0x43')]=_0x47b8c8;return _0x59b3e8;})[_0x90fd('0x25')](respondWithFilteredResult(_0x2924e9,_0x404971))[_0x90fd('0x44')](handleError(_0x2924e9,null));};exports[_0x90fd('0x45')]=function(_0x1361d9,_0x311c7e){var _0x363365={'raw':!![],'where':{'id':_0x1361d9[_0x90fd('0x46')]['id']}},_0x733d4d={};_0x733d4d[_0x90fd('0x2e')]=_[_0x90fd('0x2f')](db[_0x90fd('0x2b')][_0x90fd('0x2c')]);_0x733d4d[_0x90fd('0x30')]=_[_0x90fd('0x2f')](_0x1361d9['query']);_0x733d4d['filters']=_[_0x90fd('0x32')](_0x733d4d[_0x90fd('0x2e')],_0x733d4d[_0x90fd('0x30')]);_0x363365['attributes']=_['intersection'](_0x733d4d[_0x90fd('0x2e')],qs[_0x90fd('0x34')](_0x1361d9['query']['fields']));_0x363365[_0x90fd('0x33')]=_0x363365[_0x90fd('0x33')]['length']?_0x363365['attributes']:_0x733d4d[_0x90fd('0x2e')];if(_0x1361d9[_0x90fd('0x30')][_0x90fd('0x41')]){_0x363365['include']=[{'all':!![]}];}_0x363365=_[_0x90fd('0x3f')]({},_0x363365,_0x1361d9[_0x90fd('0x40')]);return db['WhatsappQueueReport']['find'](_0x363365)['then'](handleEntityNotFound(_0x311c7e,null))[_0x90fd('0x25')](respondWithResult(_0x311c7e,null))[_0x90fd('0x44')](handleError(_0x311c7e,null));};exports['create']=function(_0x2d42b3,_0x2b73f7){return db[_0x90fd('0x2b')][_0x90fd('0x47')](_0x2d42b3[_0x90fd('0x48')],{})['then'](respondWithResult(_0x2b73f7,0xc9))['catch'](handleError(_0x2b73f7,null));};exports[_0x90fd('0x24')]=function(_0x326e4d,_0x125874){if(_0x326e4d[_0x90fd('0x48')]['id']){delete _0x326e4d[_0x90fd('0x48')]['id'];}return db[_0x90fd('0x2b')][_0x90fd('0x49')]({'where':{'id':_0x326e4d[_0x90fd('0x46')]['id']}})[_0x90fd('0x25')](handleEntityNotFound(_0x125874,null))[_0x90fd('0x25')](saveUpdates(_0x326e4d['body'],null))[_0x90fd('0x25')](respondWithResult(_0x125874,null))[_0x90fd('0x44')](handleError(_0x125874,null));};exports[_0x90fd('0x4a')]=function(_0x38021b,_0x4b47bc){return db['WhatsappQueueReport'][_0x90fd('0x49')]({'where':{'id':_0x38021b['params']['id']}})['then'](handleEntityNotFound(_0x4b47bc,null))[_0x90fd('0x25')](removeEntity(_0x4b47bc,null))[_0x90fd('0x44')](handleError(_0x4b47bc,null));};exports[_0x90fd('0x4b')]=function(_0xb8a2af,_0x13c428){return db[_0x90fd('0x2b')][_0x90fd('0x4b')]()['then'](respondWithResult(_0x13c428,null))['catch'](handleError(_0x13c428,null));};
\ No newline at end of file
+var _0xe511=['destroy','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','save','update','then','error','name','send','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','WhatsappQueueReport','findAll','catch','show','params','rawAttributes','find','create','body'];(function(_0x9a4fb7,_0x12071c){var _0x3ffe67=function(_0x77f5e8){while(--_0x77f5e8){_0x9a4fb7['push'](_0x9a4fb7['shift']());}};_0x3ffe67(++_0x12071c);}(_0xe511,0x16f));var _0x1e51=function(_0x1f88f0,_0x2dc0ac){_0x1f88f0=_0x1f88f0-0x0;var _0x3684f5=_0xe511[_0x1f88f0];return _0x3684f5;};'use strict';var emlformat=require(_0x1e51('0x0'));var rimraf=require(_0x1e51('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1e51('0x2'));var rp=require('request-promise');var moment=require(_0x1e51('0x3'));var BPromise=require(_0x1e51('0x4'));var Mustache=require('mustache');var util=require(_0x1e51('0x5'));var path=require(_0x1e51('0x6'));var sox=require(_0x1e51('0x7'));var csv=require(_0x1e51('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1e51('0x9'));var _=require(_0x1e51('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1e51('0xb'));var deskjs=require(_0x1e51('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1e51('0xd'));var Redis=require(_0x1e51('0xe'));var authService=require(_0x1e51('0xf'));var qs=require(_0x1e51('0x10'));var as=require(_0x1e51('0x11'));var hardwareService=require(_0x1e51('0x12'));var logger=require('../../config/logger')(_0x1e51('0x13'));var utils=require(_0x1e51('0x14'));var config=require(_0x1e51('0x15'));var licenseUtil=require(_0x1e51('0x16'));var db=require(_0x1e51('0x17'))['db'];function respondWithStatusCode(_0x3c5330,_0x5544eb){_0x5544eb=_0x5544eb||0xcc;return function(_0x408a77){if(_0x408a77){return _0x3c5330[_0x1e51('0x18')](_0x5544eb);}return _0x3c5330[_0x1e51('0x19')](_0x5544eb)[_0x1e51('0x1a')]();};}function respondWithResult(_0x21bcbd,_0x32945d){_0x32945d=_0x32945d||0xc8;return function(_0x441c70){if(_0x441c70){return _0x21bcbd[_0x1e51('0x19')](_0x32945d)[_0x1e51('0x1b')](_0x441c70);}};}function respondWithFilteredResult(_0xd76fba,_0x5a5c07){return function(_0x3b01b7){if(_0x3b01b7){var _0x24db4f=typeof _0x5a5c07[_0x1e51('0x1c')]==='undefined'&&typeof _0x5a5c07[_0x1e51('0x1d')]==='undefined';var _0x53d222=_0x3b01b7[_0x1e51('0x1e')];var _0x27dcad=_0x24db4f?0x0:_0x5a5c07[_0x1e51('0x1c')];var _0x4785a5=_0x24db4f?_0x3b01b7[_0x1e51('0x1e')]:_0x5a5c07[_0x1e51('0x1c')]+_0x5a5c07['limit'];var _0x39449b;if(_0x4785a5>=_0x53d222){_0x4785a5=_0x53d222;_0x39449b=0xc8;}else{_0x39449b=0xce;}_0xd76fba['status'](_0x39449b);return _0xd76fba[_0x1e51('0x1f')](_0x1e51('0x20'),_0x27dcad+'-'+_0x4785a5+'/'+_0x53d222)[_0x1e51('0x1b')](_0x3b01b7);}return null;};}function patchUpdates(_0x183a95){return function(_0x506f40){try{jsonpatch['apply'](_0x506f40,_0x183a95,!![]);}catch(_0x4e6a49){return BPromise['reject'](_0x4e6a49);}return _0x506f40[_0x1e51('0x21')]();};}function saveUpdates(_0x4f1f56,_0x3f7340){return function(_0x28aacb){if(_0x28aacb){return _0x28aacb[_0x1e51('0x22')](_0x4f1f56)[_0x1e51('0x23')](function(_0x23c85a){return _0x23c85a;});}return null;};}function removeEntity(_0xf9298,_0x270adf){return function(_0x461d3d){if(_0x461d3d){return _0x461d3d['destroy']()['then'](function(){_0xf9298[_0x1e51('0x19')](0xcc)[_0x1e51('0x1a')]();});}};}function handleEntityNotFound(_0x2e42b1,_0x1386db){return function(_0x505d79){if(!_0x505d79){_0x2e42b1['sendStatus'](0x194);}return _0x505d79;};}function handleError(_0x486ad6,_0x1eb83f){_0x1eb83f=_0x1eb83f||0x1f4;return function(_0x2a1561){logger[_0x1e51('0x24')](_0x2a1561['stack']);if(_0x2a1561[_0x1e51('0x25')]){delete _0x2a1561['name'];}_0x486ad6['status'](_0x1eb83f)[_0x1e51('0x26')](_0x2a1561);};}exports['index']=function(_0x170ec6,_0x1eb79f){var _0x56722f={},_0x3e6ef2={},_0x10ee23={'count':0x0,'rows':[]};var _0x71c7af=_[_0x1e51('0x27')](db['WhatsappQueueReport']['rawAttributes'],function(_0x4f67d3){return{'name':_0x4f67d3[_0x1e51('0x28')],'type':_0x4f67d3[_0x1e51('0x29')][_0x1e51('0x2a')]};});_0x3e6ef2[_0x1e51('0x2b')]=_[_0x1e51('0x27')](_0x71c7af,_0x1e51('0x25'));_0x3e6ef2[_0x1e51('0x2c')]=_[_0x1e51('0x2d')](_0x170ec6[_0x1e51('0x2c')]);_0x3e6ef2[_0x1e51('0x2e')]=_[_0x1e51('0x2f')](_0x3e6ef2['model'],_0x3e6ef2[_0x1e51('0x2c')]);_0x56722f[_0x1e51('0x30')]=_[_0x1e51('0x2f')](_0x3e6ef2[_0x1e51('0x2b')],qs[_0x1e51('0x31')](_0x170ec6['query'][_0x1e51('0x31')]));_0x56722f['attributes']=_0x56722f[_0x1e51('0x30')][_0x1e51('0x32')]?_0x56722f[_0x1e51('0x30')]:_0x3e6ef2['model'];if(!_0x170ec6[_0x1e51('0x2c')]['hasOwnProperty'](_0x1e51('0x33'))){_0x56722f['limit']=qs['limit'](_0x170ec6[_0x1e51('0x2c')][_0x1e51('0x1d')]);_0x56722f[_0x1e51('0x1c')]=qs['offset'](_0x170ec6[_0x1e51('0x2c')]['offset']);}_0x56722f[_0x1e51('0x34')]=qs[_0x1e51('0x35')](_0x170ec6['query'][_0x1e51('0x35')]);_0x56722f[_0x1e51('0x36')]=qs[_0x1e51('0x2e')](_[_0x1e51('0x37')](_0x170ec6[_0x1e51('0x2c')],_0x3e6ef2[_0x1e51('0x2e')]),_0x71c7af);if(_0x170ec6['query']['filter']){_0x56722f[_0x1e51('0x36')]=_['merge'](_0x56722f[_0x1e51('0x36')],{'$or':_[_0x1e51('0x27')](_0x71c7af,function(_0x32c41b){if(_0x32c41b[_0x1e51('0x29')]!==_0x1e51('0x38')){var _0x174a24={};_0x174a24[_0x32c41b[_0x1e51('0x25')]]={'$like':'%'+_0x170ec6[_0x1e51('0x2c')][_0x1e51('0x39')]+'%'};return _0x174a24;}})});}_0x56722f=_[_0x1e51('0x3a')]({},_0x56722f,_0x170ec6[_0x1e51('0x3b')]);var _0x5360b3={'where':_0x56722f[_0x1e51('0x36')]};return db['WhatsappQueueReport'][_0x1e51('0x1e')](_0x5360b3)[_0x1e51('0x23')](function(_0x2b287e){_0x10ee23[_0x1e51('0x1e')]=_0x2b287e;if(_0x170ec6[_0x1e51('0x2c')][_0x1e51('0x3c')]){_0x56722f[_0x1e51('0x3d')]=[{'all':!![]}];}return db[_0x1e51('0x3e')][_0x1e51('0x3f')](_0x56722f);})[_0x1e51('0x23')](function(_0xc40fce){_0x10ee23['rows']=_0xc40fce;return _0x10ee23;})['then'](respondWithFilteredResult(_0x1eb79f,_0x56722f))[_0x1e51('0x40')](handleError(_0x1eb79f,null));};exports[_0x1e51('0x41')]=function(_0x3be495,_0x4650e4){var _0x1ef3d3={'raw':!![],'where':{'id':_0x3be495[_0x1e51('0x42')]['id']}},_0x1a9e0d={};_0x1a9e0d[_0x1e51('0x2b')]=_['keys'](db[_0x1e51('0x3e')][_0x1e51('0x43')]);_0x1a9e0d[_0x1e51('0x2c')]=_[_0x1e51('0x2d')](_0x3be495[_0x1e51('0x2c')]);_0x1a9e0d[_0x1e51('0x2e')]=_[_0x1e51('0x2f')](_0x1a9e0d['model'],_0x1a9e0d[_0x1e51('0x2c')]);_0x1ef3d3[_0x1e51('0x30')]=_['intersection'](_0x1a9e0d[_0x1e51('0x2b')],qs[_0x1e51('0x31')](_0x3be495[_0x1e51('0x2c')]['fields']));_0x1ef3d3[_0x1e51('0x30')]=_0x1ef3d3[_0x1e51('0x30')][_0x1e51('0x32')]?_0x1ef3d3[_0x1e51('0x30')]:_0x1a9e0d[_0x1e51('0x2b')];if(_0x3be495[_0x1e51('0x2c')][_0x1e51('0x3c')]){_0x1ef3d3[_0x1e51('0x3d')]=[{'all':!![]}];}_0x1ef3d3=_[_0x1e51('0x3a')]({},_0x1ef3d3,_0x3be495['options']);return db[_0x1e51('0x3e')][_0x1e51('0x44')](_0x1ef3d3)['then'](handleEntityNotFound(_0x4650e4,null))[_0x1e51('0x23')](respondWithResult(_0x4650e4,null))[_0x1e51('0x40')](handleError(_0x4650e4,null));};exports[_0x1e51('0x45')]=function(_0x4f6405,_0x44468a){return db[_0x1e51('0x3e')][_0x1e51('0x45')](_0x4f6405['body'],{})[_0x1e51('0x23')](respondWithResult(_0x44468a,0xc9))['catch'](handleError(_0x44468a,null));};exports['update']=function(_0x54688b,_0x169e6c){if(_0x54688b[_0x1e51('0x46')]['id']){delete _0x54688b['body']['id'];}return db['WhatsappQueueReport'][_0x1e51('0x44')]({'where':{'id':_0x54688b[_0x1e51('0x42')]['id']}})[_0x1e51('0x23')](handleEntityNotFound(_0x169e6c,null))[_0x1e51('0x23')](saveUpdates(_0x54688b[_0x1e51('0x46')],null))[_0x1e51('0x23')](respondWithResult(_0x169e6c,null))['catch'](handleError(_0x169e6c,null));};exports[_0x1e51('0x47')]=function(_0x48a2d0,_0xf6bd35){return db[_0x1e51('0x3e')]['find']({'where':{'id':_0x48a2d0['params']['id']}})['then'](handleEntityNotFound(_0xf6bd35,null))[_0x1e51('0x23')](removeEntity(_0xf6bd35,null))[_0x1e51('0x40')](handleError(_0xf6bd35,null));};exports[_0x1e51('0x48')]=function(_0x4cdfe3,_0x2fdee1){return db[_0x1e51('0x3e')][_0x1e51('0x48')]()[_0x1e51('0x23')](respondWithResult(_0x2fdee1,null))[_0x1e51('0x40')](handleError(_0x2fdee1,null));};
\ No newline at end of file
index 8232815..2c46053 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cf0=['../../config/environment','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','../../config/logger','bluebird','path'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x1cf0,0x16c));var _0x01cf=function(_0x256e32,_0x4013bc){_0x256e32=_0x256e32-0x0;var _0x464070=_0x1cf0[_0x256e32];return _0x464070;};'use strict';var _=require(_0x01cf('0x0'));var util=require(_0x01cf('0x1'));var logger=require(_0x01cf('0x2'))('api');var moment=require('moment');var BPromise=require(_0x01cf('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x01cf('0x4'));var rimraf=require('rimraf');var config=require(_0x01cf('0x5'));var attributes=require('./whatsappQueueReport.attributes');module['exports']=function(_0x404627,_0x37287c){return _0x404627['define'](_0x01cf('0x6'),attributes,{'tableName':_0x01cf('0x7'),'paranoid':![],'indexes':[{'name':_0x01cf('0x8'),'fields':[_0x01cf('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbc50=['./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','moment','request-promise','path','rimraf'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0xbc50,0xde));var _0x0bc5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbc50[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0bc5('0x0'));var util=require(_0x0bc5('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0bc5('0x2'));var BPromise=require('bluebird');var rp=require(_0x0bc5('0x3'));var fs=require('fs');var path=require(_0x0bc5('0x4'));var rimraf=require(_0x0bc5('0x5'));var config=require('../../config/environment');var attributes=require(_0x0bc5('0x6'));module[_0x0bc5('0x7')]=function(_0x4e4339,_0x49228a){return _0x4e4339[_0x0bc5('0x8')](_0x0bc5('0x9'),attributes,{'tableName':_0x0bc5('0xa'),'paranoid':![],'indexes':[{'name':_0x0bc5('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 4de1139..f4bcf59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07ac=['UpdateWhatsappQueueReport','lodash','util','moment','bluebird','../../config/utils','rpc','jayson/promise','client','http','then','info','request\x20sent','debug','stringify','error','WhatsappQueueReport,\x20%s,\x20%s','message','result','catch','CreateWhatsappQueueReport','body','options','raw','WhatsappQueueReport','where','limit'];(function(_0x2c1db5,_0x20b060){var _0x204189=function(_0x20398e){while(--_0x20398e){_0x2c1db5['push'](_0x2c1db5['shift']());}};_0x204189(++_0x20b060);}(_0x07ac,0x160));var _0xc07a=function(_0x22bdd3,_0x552e50){_0x22bdd3=_0x22bdd3-0x0;var _0x44d9d9=_0x07ac[_0x22bdd3];return _0x44d9d9;};'use strict';var _=require(_0xc07a('0x0'));var util=require(_0xc07a('0x1'));var moment=require(_0xc07a('0x2'));var BPromise=require(_0xc07a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc07a('0x4'));var logger=require('../../config/logger')(_0xc07a('0x5'));var config=require('../../config/environment');var jayson=require(_0xc07a('0x6'));var client=jayson[_0xc07a('0x7')][_0xc07a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x54cc6d,_0x20b514,_0x4179c7){return new BPromise(function(_0x5a1286,_0x582f32){return client['request'](_0x54cc6d,_0x4179c7)[_0xc07a('0x9')](function(_0x3906b7){logger[_0xc07a('0xa')]('WhatsappQueueReport,\x20%s,\x20%s',_0x20b514,_0xc07a('0xb'));logger[_0xc07a('0xc')]('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x20b514,_0xc07a('0xb'),JSON[_0xc07a('0xd')](_0x3906b7));if(_0x3906b7[_0xc07a('0xe')]){if(_0x3906b7[_0xc07a('0xe')]['code']===0x1f4){logger[_0xc07a('0xe')](_0xc07a('0xf'),_0x20b514,_0x3906b7['error'][_0xc07a('0x10')]);return _0x582f32(_0x3906b7[_0xc07a('0xe')]['message']);}logger[_0xc07a('0xe')](_0xc07a('0xf'),_0x20b514,_0x3906b7[_0xc07a('0xe')][_0xc07a('0x10')]);return _0x5a1286(_0x3906b7[_0xc07a('0xe')][_0xc07a('0x10')]);}else{logger[_0xc07a('0xa')]('WhatsappQueueReport,\x20%s,\x20%s',_0x20b514,'request\x20sent');_0x5a1286(_0x3906b7[_0xc07a('0x11')][_0xc07a('0x10')]);}})[_0xc07a('0x12')](function(_0x574771){logger[_0xc07a('0xe')]('WhatsappQueueReport,\x20%s,\x20%s',_0x20b514,_0x574771);_0x582f32(_0x574771);});});}exports[_0xc07a('0x13')]=function(_0x5f1284){var _0x11c9af=this;return new Promise(function(_0x5f2396,_0x43293b){return db['WhatsappQueueReport']['create'](_0x5f1284[_0xc07a('0x14')],{'raw':_0x5f1284[_0xc07a('0x15')]?_0x5f1284['options'][_0xc07a('0x16')]===undefined?!![]:![]:!![]})[_0xc07a('0x9')](function(_0x3b93bd){logger['info'](_0xc07a('0x13'),_0x5f1284);logger[_0xc07a('0xc')](_0xc07a('0x13'),_0x5f1284,JSON[_0xc07a('0xd')](_0x3b93bd));_0x5f2396(_0x3b93bd);})[_0xc07a('0x12')](function(_0x5d60f0){logger[_0xc07a('0xe')](_0xc07a('0x13'),_0x5d60f0[_0xc07a('0x10')],_0x5f1284);_0x43293b(_0x11c9af[_0xc07a('0xe')](0x1f4,_0x5d60f0['message']));});});};exports['UpdateWhatsappQueueReport']=function(_0x4d9300){var _0x510683=this;return new Promise(function(_0x56f5ee,_0x285bd8){return db[_0xc07a('0x17')]['update'](_0x4d9300[_0xc07a('0x14')],{'raw':_0x4d9300[_0xc07a('0x15')]?_0x4d9300['options'][_0xc07a('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4d9300[_0xc07a('0x15')]?_0x4d9300[_0xc07a('0x15')][_0xc07a('0x18')]||null:null,'attributes':_0x4d9300[_0xc07a('0x15')]?_0x4d9300[_0xc07a('0x15')]['attributes']||null:null,'limit':_0x4d9300['options']?_0x4d9300[_0xc07a('0x15')][_0xc07a('0x19')]||null:null})['then'](function(_0x43a411){logger[_0xc07a('0xa')](_0xc07a('0x1a'),_0x4d9300);logger[_0xc07a('0xc')](_0xc07a('0x1a'),_0x4d9300,JSON[_0xc07a('0xd')](_0x43a411));_0x56f5ee(_0x43a411);})['catch'](function(_0xee5c5d){logger[_0xc07a('0xe')]('UpdateWhatsappQueueReport',_0xee5c5d[_0xc07a('0x10')],_0x4d9300);_0x285bd8(_0x510683[_0xc07a('0xe')](0x1f4,_0xee5c5d[_0xc07a('0x10')]));});});};
\ No newline at end of file
+var _0x0c28=['WhatsappQueueReport','where','attributes','limit','UpdateWhatsappQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','body','options','raw','CreateWhatsappQueueReport','debug'];(function(_0x1b658a,_0x14a9c8){var _0x313d17=function(_0x1254bb){while(--_0x1254bb){_0x1b658a['push'](_0x1b658a['shift']());}};_0x313d17(++_0x14a9c8);}(_0x0c28,0xf3));var _0x80c2=function(_0x3f7cb0,_0x5d9756){_0x3f7cb0=_0x3f7cb0-0x0;var _0x4b4b6f=_0x0c28[_0x3f7cb0];return _0x4b4b6f;};'use strict';var _=require(_0x80c2('0x0'));var util=require(_0x80c2('0x1'));var moment=require(_0x80c2('0x2'));var BPromise=require(_0x80c2('0x3'));var rs=require(_0x80c2('0x4'));var fs=require('fs');var Redis=require(_0x80c2('0x5'));var db=require(_0x80c2('0x6'))['db'];var utils=require(_0x80c2('0x7'));var logger=require(_0x80c2('0x8'))('rpc');var config=require(_0x80c2('0x9'));var jayson=require(_0x80c2('0xa'));var client=jayson[_0x80c2('0xb')][_0x80c2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x212842,_0x3c8385,_0x18ed0a){return new BPromise(function(_0x1aa9f9,_0x2f6be2){return client[_0x80c2('0xd')](_0x212842,_0x18ed0a)[_0x80c2('0xe')](function(_0x5474e4){logger[_0x80c2('0xf')](_0x80c2('0x10'),_0x3c8385,_0x80c2('0x11'));logger['debug']('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x3c8385,_0x80c2('0x11'),JSON[_0x80c2('0x12')](_0x5474e4));if(_0x5474e4['error']){if(_0x5474e4[_0x80c2('0x13')][_0x80c2('0x14')]===0x1f4){logger[_0x80c2('0x13')]('WhatsappQueueReport,\x20%s,\x20%s',_0x3c8385,_0x5474e4[_0x80c2('0x13')][_0x80c2('0x15')]);return _0x2f6be2(_0x5474e4[_0x80c2('0x13')][_0x80c2('0x15')]);}logger[_0x80c2('0x13')]('WhatsappQueueReport,\x20%s,\x20%s',_0x3c8385,_0x5474e4[_0x80c2('0x13')][_0x80c2('0x15')]);return _0x1aa9f9(_0x5474e4['error'][_0x80c2('0x15')]);}else{logger[_0x80c2('0xf')](_0x80c2('0x10'),_0x3c8385,_0x80c2('0x11'));_0x1aa9f9(_0x5474e4[_0x80c2('0x16')][_0x80c2('0x15')]);}})[_0x80c2('0x17')](function(_0x46a2e1){logger[_0x80c2('0x13')](_0x80c2('0x10'),_0x3c8385,_0x46a2e1);_0x2f6be2(_0x46a2e1);});});}exports['CreateWhatsappQueueReport']=function(_0x4bdad2){var _0x3470e8=this;return new Promise(function(_0x20b015,_0x58ec9b){return db['WhatsappQueueReport']['create'](_0x4bdad2[_0x80c2('0x18')],{'raw':_0x4bdad2[_0x80c2('0x19')]?_0x4bdad2[_0x80c2('0x19')][_0x80c2('0x1a')]===undefined?!![]:![]:!![]})[_0x80c2('0xe')](function(_0x13cfab){logger[_0x80c2('0xf')](_0x80c2('0x1b'),_0x4bdad2);logger[_0x80c2('0x1c')](_0x80c2('0x1b'),_0x4bdad2,JSON['stringify'](_0x13cfab));_0x20b015(_0x13cfab);})[_0x80c2('0x17')](function(_0x2d0bfe){logger[_0x80c2('0x13')](_0x80c2('0x1b'),_0x2d0bfe[_0x80c2('0x15')],_0x4bdad2);_0x58ec9b(_0x3470e8[_0x80c2('0x13')](0x1f4,_0x2d0bfe[_0x80c2('0x15')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x48a72e){var _0x31ecb1=this;return new Promise(function(_0x3fe308,_0x2e5514){return db[_0x80c2('0x1d')]['update'](_0x48a72e[_0x80c2('0x18')],{'raw':_0x48a72e['options']?_0x48a72e['options'][_0x80c2('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x48a72e[_0x80c2('0x19')]?_0x48a72e[_0x80c2('0x19')][_0x80c2('0x1e')]||null:null,'attributes':_0x48a72e[_0x80c2('0x19')]?_0x48a72e[_0x80c2('0x19')][_0x80c2('0x1f')]||null:null,'limit':_0x48a72e[_0x80c2('0x19')]?_0x48a72e[_0x80c2('0x19')][_0x80c2('0x20')]||null:null})[_0x80c2('0xe')](function(_0x25c29e){logger[_0x80c2('0xf')]('UpdateWhatsappQueueReport',_0x48a72e);logger[_0x80c2('0x1c')](_0x80c2('0x21'),_0x48a72e,JSON[_0x80c2('0x12')](_0x25c29e));_0x3fe308(_0x25c29e);})[_0x80c2('0x17')](function(_0x525ac5){logger['error'](_0x80c2('0x21'),_0x525ac5[_0x80c2('0x15')],_0x48a72e);_0x2e5514(_0x31ecb1[_0x80c2('0x13')](0x1f4,_0x525ac5[_0x80c2('0x15')]));});});};
\ No newline at end of file
index 2ee7f58..0ba4825 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c41=['update','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappTransferReport.controller','get','isAuthenticated','index','/:id','post','create','put'];(function(_0xc82d1a,_0x145c50){var _0x32fad2=function(_0x232731){while(--_0x232731){_0xc82d1a['push'](_0xc82d1a['shift']());}};_0x32fad2(++_0x145c50);}(_0x7c41,0x158));var _0x17c4=function(_0x5c9747,_0x423026){_0x5c9747=_0x5c9747-0x0;var _0x52c13c=_0x7c41[_0x5c9747];return _0x52c13c;};'use strict';var multer=require(_0x17c4('0x0'));var util=require(_0x17c4('0x1'));var path=require(_0x17c4('0x2'));var timeout=require(_0x17c4('0x3'));var express=require(_0x17c4('0x4'));var router=express['Router']();var fs_extra=require(_0x17c4('0x5'));var auth=require(_0x17c4('0x6'));var interaction=require(_0x17c4('0x7'));var config=require('../../config/environment');var controller=require(_0x17c4('0x8'));router[_0x17c4('0x9')]('/',auth[_0x17c4('0xa')](),controller[_0x17c4('0xb')]);router[_0x17c4('0x9')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x17c4('0x9')](_0x17c4('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x17c4('0xd')]('/',auth[_0x17c4('0xa')](),controller[_0x17c4('0xe')]);router[_0x17c4('0xf')](_0x17c4('0xc'),auth[_0x17c4('0xa')](),controller[_0x17c4('0x10')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x17c4('0x11')]=router;
\ No newline at end of file
+var _0x49f0=['put','update','delete','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','./whatsappTransferReport.controller','isAuthenticated','index','/describe','describe','get','/:id','show','post','create'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x49f0,0x108));var _0x049f=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x49f0[_0xfae23b];return _0x200640;};'use strict';var multer=require(_0x049f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x049f('0x1'));var express=require(_0x049f('0x2'));var router=express[_0x049f('0x3')]();var fs_extra=require(_0x049f('0x4'));var auth=require(_0x049f('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x049f('0x6'));router['get']('/',auth[_0x049f('0x7')](),controller[_0x049f('0x8')]);router['get'](_0x049f('0x9'),auth[_0x049f('0x7')](),controller[_0x049f('0xa')]);router[_0x049f('0xb')](_0x049f('0xc'),auth[_0x049f('0x7')](),controller[_0x049f('0xd')]);router[_0x049f('0xe')]('/',auth[_0x049f('0x7')](),controller[_0x049f('0xf')]);router[_0x049f('0x10')](_0x049f('0xc'),auth[_0x049f('0x7')](),controller[_0x049f('0x11')]);router[_0x049f('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x049f('0x13')]);module['exports']=router;
\ No newline at end of file
index d87b194..461e85f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e1=['agent','DATE','sequelize','exports','ENUM','account'];(function(_0x15c466,_0x1a423b){var _0x311475=function(_0x5d03f8){while(--_0x5d03f8){_0x15c466['push'](_0x15c466['shift']());}};_0x311475(++_0x1a423b);}(_0xa9e1,0x7a));var _0x1a9e=function(_0x51b1a5,_0x285a4f){_0x51b1a5=_0x51b1a5-0x0;var _0x15c738=_0xa9e1[_0x51b1a5];return _0x15c738;};'use strict';var Sequelize=require(_0x1a9e('0x0'));module[_0x1a9e('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x1a9e('0x2')](_0x1a9e('0x3'),_0x1a9e('0x4'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x1a9e('0x5')]}};
\ No newline at end of file
+var _0xa887=['STRING','ENUM','agent','queue','DATE','sequelize'];(function(_0x5f746f,_0x5b05ab){var _0x198d15=function(_0x58c7e7){while(--_0x58c7e7){_0x5f746f['push'](_0x5f746f['shift']());}};_0x198d15(++_0x5b05ab);}(_0xa887,0x89));var _0x7a88=function(_0x186376,_0x5d988a){_0x186376=_0x186376-0x0;var _0x2dbdd9=_0xa887[_0x186376];return _0x2dbdd9;};'use strict';var Sequelize=require(_0x7a88('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x7a88('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x7a88('0x2')]('account',_0x7a88('0x3'),_0x7a88('0x4')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x7a88('0x5')]}};
\ No newline at end of file
index ff4f959..31b32ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd07e=['sendStatus','end','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','status','error','stack','name','send','index','WhatsappTransferReport','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','findAll','rows','show','params','include','options','find','create','catch','body','describe','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','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'];(function(_0x14c192,_0x5002fd){var _0x3ec1cf=function(_0x5be35f){while(--_0x5be35f){_0x14c192['push'](_0x14c192['shift']());}};_0x3ec1cf(++_0x5002fd);}(_0xd07e,0x80));var _0xed07=function(_0x575f7b,_0x1c0ff7){_0x575f7b=_0x575f7b-0x0;var _0x396aa1=_0xd07e[_0x575f7b];return _0x396aa1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xed07('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xed07('0x1'));var rp=require('request-promise');var moment=require(_0xed07('0x2'));var BPromise=require(_0xed07('0x3'));var Mustache=require('mustache');var util=require(_0xed07('0x4'));var path=require(_0xed07('0x5'));var sox=require(_0xed07('0x6'));var csv=require(_0xed07('0x7'));var ejs=require(_0xed07('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xed07('0x9'));var squel=require(_0xed07('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xed07('0xb'));var toCsv=require(_0xed07('0x7'));var querystring=require(_0xed07('0xc'));var Papa=require(_0xed07('0xd'));var Redis=require(_0xed07('0xe'));var authService=require(_0xed07('0xf'));var qs=require(_0xed07('0x10'));var as=require(_0xed07('0x11'));var hardwareService=require(_0xed07('0x12'));var logger=require(_0xed07('0x13'))(_0xed07('0x14'));var utils=require('../../config/utils');var config=require(_0xed07('0x15'));var licenseUtil=require(_0xed07('0x16'));var db=require(_0xed07('0x17'))['db'];function respondWithStatusCode(_0x2c589f,_0x1f1d59){_0x1f1d59=_0x1f1d59||0xcc;return function(_0x21aa96){if(_0x21aa96){return _0x2c589f[_0xed07('0x18')](_0x1f1d59);}return _0x2c589f['status'](_0x1f1d59)[_0xed07('0x19')]();};}function respondWithResult(_0x5eba26,_0x2c358d){_0x2c358d=_0x2c358d||0xc8;return function(_0x49b071){if(_0x49b071){return _0x5eba26['status'](_0x2c358d)['json'](_0x49b071);}};}function respondWithFilteredResult(_0x345950,_0x2c45b3){return function(_0x7dee7c){if(_0x7dee7c){var _0x38e6f7=typeof _0x2c45b3['offset']===_0xed07('0x1a')&&typeof _0x2c45b3['limit']===_0xed07('0x1a');var _0x395536=_0x7dee7c[_0xed07('0x1b')];var _0x61a079=_0x38e6f7?0x0:_0x2c45b3['offset'];var _0x7a6b29=_0x38e6f7?_0x7dee7c[_0xed07('0x1b')]:_0x2c45b3[_0xed07('0x1c')]+_0x2c45b3['limit'];var _0x4ebfff;if(_0x7a6b29>=_0x395536){_0x7a6b29=_0x395536;_0x4ebfff=0xc8;}else{_0x4ebfff=0xce;}_0x345950['status'](_0x4ebfff);return _0x345950[_0xed07('0x1d')](_0xed07('0x1e'),_0x61a079+'-'+_0x7a6b29+'/'+_0x395536)['json'](_0x7dee7c);}return null;};}function patchUpdates(_0x3d8488){return function(_0xe4ecf0){try{jsonpatch[_0xed07('0x1f')](_0xe4ecf0,_0x3d8488,!![]);}catch(_0x445275){return BPromise[_0xed07('0x20')](_0x445275);}return _0xe4ecf0[_0xed07('0x21')]();};}function saveUpdates(_0x15f5bf,_0x5a3b37){return function(_0x5bb7b6){if(_0x5bb7b6){return _0x5bb7b6[_0xed07('0x22')](_0x15f5bf)[_0xed07('0x23')](function(_0x1faeb0){return _0x1faeb0;});}return null;};}function removeEntity(_0xb836ab,_0x4b89c1){return function(_0x25b3e6){if(_0x25b3e6){return _0x25b3e6[_0xed07('0x24')]()['then'](function(){_0xb836ab[_0xed07('0x25')](0xcc)[_0xed07('0x19')]();});}};}function handleEntityNotFound(_0x57d898,_0x58846a){return function(_0x16266b){if(!_0x16266b){_0x57d898[_0xed07('0x18')](0x194);}return _0x16266b;};}function handleError(_0x120ea2,_0x417a1c){_0x417a1c=_0x417a1c||0x1f4;return function(_0x1fafb5){logger[_0xed07('0x26')](_0x1fafb5[_0xed07('0x27')]);if(_0x1fafb5['name']){delete _0x1fafb5[_0xed07('0x28')];}_0x120ea2['status'](_0x417a1c)[_0xed07('0x29')](_0x1fafb5);};}exports[_0xed07('0x2a')]=function(_0x143436,_0x1e9113){var _0x7ae630={},_0x1869a7={},_0xa03b7={'count':0x0,'rows':[]};var _0x87b1e2=_['map'](db[_0xed07('0x2b')][_0xed07('0x2c')],function(_0xee197f){return{'name':_0xee197f['fieldName'],'type':_0xee197f['type']['key']};});_0x1869a7[_0xed07('0x2d')]=_['map'](_0x87b1e2,'name');_0x1869a7[_0xed07('0x2e')]=_[_0xed07('0x2f')](_0x143436[_0xed07('0x2e')]);_0x1869a7[_0xed07('0x30')]=_[_0xed07('0x31')](_0x1869a7['model'],_0x1869a7[_0xed07('0x2e')]);_0x7ae630[_0xed07('0x32')]=_['intersection'](_0x1869a7['model'],qs[_0xed07('0x33')](_0x143436[_0xed07('0x2e')][_0xed07('0x33')]));_0x7ae630['attributes']=_0x7ae630[_0xed07('0x32')][_0xed07('0x34')]?_0x7ae630[_0xed07('0x32')]:_0x1869a7[_0xed07('0x2d')];if(!_0x143436[_0xed07('0x2e')][_0xed07('0x35')](_0xed07('0x36'))){_0x7ae630[_0xed07('0x37')]=qs['limit'](_0x143436[_0xed07('0x2e')][_0xed07('0x37')]);_0x7ae630[_0xed07('0x1c')]=qs[_0xed07('0x1c')](_0x143436[_0xed07('0x2e')][_0xed07('0x1c')]);}_0x7ae630[_0xed07('0x38')]=qs[_0xed07('0x39')](_0x143436['query'][_0xed07('0x39')]);_0x7ae630[_0xed07('0x3a')]=qs[_0xed07('0x30')](_[_0xed07('0x3b')](_0x143436[_0xed07('0x2e')],_0x1869a7[_0xed07('0x30')]),_0x87b1e2);if(_0x143436[_0xed07('0x2e')][_0xed07('0x3c')]){_0x7ae630[_0xed07('0x3a')]=_[_0xed07('0x3d')](_0x7ae630[_0xed07('0x3a')],{'$or':_['map'](_0x87b1e2,function(_0xcc067f){if(_0xcc067f[_0xed07('0x3e')]!==_0xed07('0x3f')){var _0x36fae3={};_0x36fae3[_0xcc067f[_0xed07('0x28')]]={'$like':'%'+_0x143436[_0xed07('0x2e')][_0xed07('0x3c')]+'%'};return _0x36fae3;}})});}_0x7ae630=_[_0xed07('0x3d')]({},_0x7ae630,_0x143436['options']);var _0x2d50bb={'where':_0x7ae630['where']};return db[_0xed07('0x2b')][_0xed07('0x1b')](_0x2d50bb)[_0xed07('0x23')](function(_0x31c133){_0xa03b7[_0xed07('0x1b')]=_0x31c133;if(_0x143436['query'][_0xed07('0x40')]){_0x7ae630['include']=[{'all':!![]}];}return db[_0xed07('0x2b')][_0xed07('0x41')](_0x7ae630);})[_0xed07('0x23')](function(_0xebdcd6){_0xa03b7[_0xed07('0x42')]=_0xebdcd6;return _0xa03b7;})[_0xed07('0x23')](respondWithFilteredResult(_0x1e9113,_0x7ae630))['catch'](handleError(_0x1e9113,null));};exports[_0xed07('0x43')]=function(_0x2c5617,_0x746695){var _0x3a89f3={'raw':!![],'where':{'id':_0x2c5617[_0xed07('0x44')]['id']}},_0x1a97e9={};_0x1a97e9[_0xed07('0x2d')]=_[_0xed07('0x2f')](db[_0xed07('0x2b')]['rawAttributes']);_0x1a97e9[_0xed07('0x2e')]=_[_0xed07('0x2f')](_0x2c5617[_0xed07('0x2e')]);_0x1a97e9[_0xed07('0x30')]=_[_0xed07('0x31')](_0x1a97e9[_0xed07('0x2d')],_0x1a97e9['query']);_0x3a89f3[_0xed07('0x32')]=_[_0xed07('0x31')](_0x1a97e9[_0xed07('0x2d')],qs[_0xed07('0x33')](_0x2c5617[_0xed07('0x2e')][_0xed07('0x33')]));_0x3a89f3[_0xed07('0x32')]=_0x3a89f3['attributes'][_0xed07('0x34')]?_0x3a89f3['attributes']:_0x1a97e9[_0xed07('0x2d')];if(_0x2c5617[_0xed07('0x2e')][_0xed07('0x40')]){_0x3a89f3[_0xed07('0x45')]=[{'all':!![]}];}_0x3a89f3=_[_0xed07('0x3d')]({},_0x3a89f3,_0x2c5617[_0xed07('0x46')]);return db['WhatsappTransferReport'][_0xed07('0x47')](_0x3a89f3)['then'](handleEntityNotFound(_0x746695,null))[_0xed07('0x23')](respondWithResult(_0x746695,null))['catch'](handleError(_0x746695,null));};exports['create']=function(_0x18a154,_0x5973c6){return db[_0xed07('0x2b')][_0xed07('0x48')](_0x18a154['body'],{})[_0xed07('0x23')](respondWithResult(_0x5973c6,0xc9))[_0xed07('0x49')](handleError(_0x5973c6,null));};exports[_0xed07('0x22')]=function(_0x47f13b,_0x416b4a){if(_0x47f13b[_0xed07('0x4a')]['id']){delete _0x47f13b[_0xed07('0x4a')]['id'];}return db[_0xed07('0x2b')][_0xed07('0x47')]({'where':{'id':_0x47f13b[_0xed07('0x44')]['id']}})[_0xed07('0x23')](handleEntityNotFound(_0x416b4a,null))[_0xed07('0x23')](saveUpdates(_0x47f13b[_0xed07('0x4a')],null))[_0xed07('0x23')](respondWithResult(_0x416b4a,null))[_0xed07('0x49')](handleError(_0x416b4a,null));};exports[_0xed07('0x24')]=function(_0x4b9496,_0x1f49e6){return db[_0xed07('0x2b')][_0xed07('0x47')]({'where':{'id':_0x4b9496[_0xed07('0x44')]['id']}})[_0xed07('0x23')](handleEntityNotFound(_0x1f49e6,null))[_0xed07('0x23')](removeEntity(_0x1f49e6,null))[_0xed07('0x49')](handleError(_0x1f49e6,null));};exports[_0xed07('0x4b')]=function(_0x421cc9,_0x1ab2b4){return db[_0xed07('0x2b')][_0xed07('0x4b')]()[_0xed07('0x23')](respondWithResult(_0x1ab2b4,null))[_0xed07('0x49')](handleError(_0x1ab2b4,null));};
\ No newline at end of file
+var _0xb2ef=['../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','map','WhatsappTransferReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','VIRTUAL','options','includeAll','findAll','catch','show','filters','include','merge','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x409fb8,_0x5ab3d3){var _0x278270=function(_0x58849c){while(--_0x58849c){_0x409fb8['push'](_0x409fb8['shift']());}};_0x278270(++_0x5ab3d3);}(_0xb2ef,0x7b));var _0xfb2e=function(_0x8b78d4,_0x32f791){_0x8b78d4=_0x8b78d4-0x0;var _0x50400e=_0xb2ef[_0x8b78d4];return _0x50400e;};'use strict';var emlformat=require(_0xfb2e('0x0'));var rimraf=require(_0xfb2e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfb2e('0x2'));var rp=require(_0xfb2e('0x3'));var moment=require(_0xfb2e('0x4'));var BPromise=require(_0xfb2e('0x5'));var Mustache=require(_0xfb2e('0x6'));var util=require(_0xfb2e('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfb2e('0x8'));var fs=require('fs');var fs_extra=require(_0xfb2e('0x9'));var _=require(_0xfb2e('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfb2e('0xb'));var deskjs=require(_0xfb2e('0xc'));var toCsv=require(_0xfb2e('0xd'));var querystring=require(_0xfb2e('0xe'));var Papa=require(_0xfb2e('0xf'));var Redis=require(_0xfb2e('0x10'));var authService=require(_0xfb2e('0x11'));var qs=require(_0xfb2e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfb2e('0x13'));var logger=require(_0xfb2e('0x14'))(_0xfb2e('0x15'));var utils=require(_0xfb2e('0x16'));var config=require(_0xfb2e('0x17'));var licenseUtil=require(_0xfb2e('0x18'));var db=require(_0xfb2e('0x19'))['db'];function respondWithStatusCode(_0x59dfd4,_0x2f6901){_0x2f6901=_0x2f6901||0xcc;return function(_0x1411db){if(_0x1411db){return _0x59dfd4['sendStatus'](_0x2f6901);}return _0x59dfd4[_0xfb2e('0x1a')](_0x2f6901)['end']();};}function respondWithResult(_0x552a48,_0x31a97e){_0x31a97e=_0x31a97e||0xc8;return function(_0x4ac125){if(_0x4ac125){return _0x552a48['status'](_0x31a97e)[_0xfb2e('0x1b')](_0x4ac125);}};}function respondWithFilteredResult(_0xca0414,_0x5dec83){return function(_0x2544d8){if(_0x2544d8){var _0x312c52=typeof _0x5dec83[_0xfb2e('0x1c')]===_0xfb2e('0x1d')&&typeof _0x5dec83[_0xfb2e('0x1e')]===_0xfb2e('0x1d');var _0x263614=_0x2544d8[_0xfb2e('0x1f')];var _0x5b4afd=_0x312c52?0x0:_0x5dec83['offset'];var _0x5c3fad=_0x312c52?_0x2544d8[_0xfb2e('0x1f')]:_0x5dec83[_0xfb2e('0x1c')]+_0x5dec83['limit'];var _0x20764c;if(_0x5c3fad>=_0x263614){_0x5c3fad=_0x263614;_0x20764c=0xc8;}else{_0x20764c=0xce;}_0xca0414[_0xfb2e('0x1a')](_0x20764c);return _0xca0414['set'](_0xfb2e('0x20'),_0x5b4afd+'-'+_0x5c3fad+'/'+_0x263614)[_0xfb2e('0x1b')](_0x2544d8);}return null;};}function patchUpdates(_0x57ebec){return function(_0x4f751b){try{jsonpatch[_0xfb2e('0x21')](_0x4f751b,_0x57ebec,!![]);}catch(_0x231ee4){return BPromise[_0xfb2e('0x22')](_0x231ee4);}return _0x4f751b[_0xfb2e('0x23')]();};}function saveUpdates(_0x54d66d,_0x3fee65){return function(_0x2cd639){if(_0x2cd639){return _0x2cd639[_0xfb2e('0x24')](_0x54d66d)[_0xfb2e('0x25')](function(_0x4de9e1){return _0x4de9e1;});}return null;};}function removeEntity(_0x4b6518,_0x45f34){return function(_0x3daeff){if(_0x3daeff){return _0x3daeff[_0xfb2e('0x26')]()['then'](function(){_0x4b6518['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x275d62,_0x31eb7a){return function(_0x319c19){if(!_0x319c19){_0x275d62[_0xfb2e('0x27')](0x194);}return _0x319c19;};}function handleError(_0x42c117,_0x45f95c){_0x45f95c=_0x45f95c||0x1f4;return function(_0x214234){logger[_0xfb2e('0x28')](_0x214234[_0xfb2e('0x29')]);if(_0x214234['name']){delete _0x214234[_0xfb2e('0x2a')];}_0x42c117[_0xfb2e('0x1a')](_0x45f95c)['send'](_0x214234);};}exports['index']=function(_0x57cc2c,_0xc9a2a7){var _0x59f47a={},_0xad95a1={},_0x2ed882={'count':0x0,'rows':[]};var _0x3cf14e=_[_0xfb2e('0x2b')](db[_0xfb2e('0x2c')][_0xfb2e('0x2d')],function(_0x497178){return{'name':_0x497178[_0xfb2e('0x2e')],'type':_0x497178[_0xfb2e('0x2f')]['key']};});_0xad95a1[_0xfb2e('0x30')]=_[_0xfb2e('0x2b')](_0x3cf14e,'name');_0xad95a1[_0xfb2e('0x31')]=_[_0xfb2e('0x32')](_0x57cc2c[_0xfb2e('0x31')]);_0xad95a1['filters']=_[_0xfb2e('0x33')](_0xad95a1['model'],_0xad95a1['query']);_0x59f47a[_0xfb2e('0x34')]=_['intersection'](_0xad95a1[_0xfb2e('0x30')],qs[_0xfb2e('0x35')](_0x57cc2c[_0xfb2e('0x31')]['fields']));_0x59f47a[_0xfb2e('0x34')]=_0x59f47a[_0xfb2e('0x34')][_0xfb2e('0x36')]?_0x59f47a[_0xfb2e('0x34')]:_0xad95a1[_0xfb2e('0x30')];if(!_0x57cc2c[_0xfb2e('0x31')][_0xfb2e('0x37')](_0xfb2e('0x38'))){_0x59f47a['limit']=qs[_0xfb2e('0x1e')](_0x57cc2c['query'][_0xfb2e('0x1e')]);_0x59f47a['offset']=qs[_0xfb2e('0x1c')](_0x57cc2c[_0xfb2e('0x31')][_0xfb2e('0x1c')]);}_0x59f47a[_0xfb2e('0x39')]=qs[_0xfb2e('0x3a')](_0x57cc2c[_0xfb2e('0x31')][_0xfb2e('0x3a')]);_0x59f47a['where']=qs['filters'](_['pick'](_0x57cc2c[_0xfb2e('0x31')],_0xad95a1['filters']),_0x3cf14e);if(_0x57cc2c['query'][_0xfb2e('0x3b')]){_0x59f47a[_0xfb2e('0x3c')]=_['merge'](_0x59f47a[_0xfb2e('0x3c')],{'$or':_[_0xfb2e('0x2b')](_0x3cf14e,function(_0x4dc234){if(_0x4dc234['type']!==_0xfb2e('0x3d')){var _0x4c94ac={};_0x4c94ac[_0x4dc234[_0xfb2e('0x2a')]]={'$like':'%'+_0x57cc2c[_0xfb2e('0x31')]['filter']+'%'};return _0x4c94ac;}})});}_0x59f47a=_['merge']({},_0x59f47a,_0x57cc2c[_0xfb2e('0x3e')]);var _0x6d31cd={'where':_0x59f47a[_0xfb2e('0x3c')]};return db['WhatsappTransferReport'][_0xfb2e('0x1f')](_0x6d31cd)[_0xfb2e('0x25')](function(_0x683ae6){_0x2ed882[_0xfb2e('0x1f')]=_0x683ae6;if(_0x57cc2c[_0xfb2e('0x31')][_0xfb2e('0x3f')]){_0x59f47a['include']=[{'all':!![]}];}return db[_0xfb2e('0x2c')][_0xfb2e('0x40')](_0x59f47a);})[_0xfb2e('0x25')](function(_0x3c342c){_0x2ed882['rows']=_0x3c342c;return _0x2ed882;})[_0xfb2e('0x25')](respondWithFilteredResult(_0xc9a2a7,_0x59f47a))[_0xfb2e('0x41')](handleError(_0xc9a2a7,null));};exports[_0xfb2e('0x42')]=function(_0x3cce84,_0xb08660){var _0x4bfbfc={'raw':!![],'where':{'id':_0x3cce84['params']['id']}},_0x1441c3={};_0x1441c3[_0xfb2e('0x30')]=_[_0xfb2e('0x32')](db['WhatsappTransferReport'][_0xfb2e('0x2d')]);_0x1441c3[_0xfb2e('0x31')]=_['keys'](_0x3cce84['query']);_0x1441c3[_0xfb2e('0x43')]=_['intersection'](_0x1441c3['model'],_0x1441c3[_0xfb2e('0x31')]);_0x4bfbfc['attributes']=_[_0xfb2e('0x33')](_0x1441c3[_0xfb2e('0x30')],qs['fields'](_0x3cce84[_0xfb2e('0x31')]['fields']));_0x4bfbfc[_0xfb2e('0x34')]=_0x4bfbfc['attributes'][_0xfb2e('0x36')]?_0x4bfbfc[_0xfb2e('0x34')]:_0x1441c3[_0xfb2e('0x30')];if(_0x3cce84['query'][_0xfb2e('0x3f')]){_0x4bfbfc[_0xfb2e('0x44')]=[{'all':!![]}];}_0x4bfbfc=_[_0xfb2e('0x45')]({},_0x4bfbfc,_0x3cce84['options']);return db[_0xfb2e('0x2c')][_0xfb2e('0x46')](_0x4bfbfc)['then'](handleEntityNotFound(_0xb08660,null))[_0xfb2e('0x25')](respondWithResult(_0xb08660,null))[_0xfb2e('0x41')](handleError(_0xb08660,null));};exports[_0xfb2e('0x47')]=function(_0x1bc6cf,_0xcb3971){return db['WhatsappTransferReport'][_0xfb2e('0x47')](_0x1bc6cf[_0xfb2e('0x48')],{})[_0xfb2e('0x25')](respondWithResult(_0xcb3971,0xc9))[_0xfb2e('0x41')](handleError(_0xcb3971,null));};exports[_0xfb2e('0x24')]=function(_0x2e237f,_0x9cb828){if(_0x2e237f[_0xfb2e('0x48')]['id']){delete _0x2e237f[_0xfb2e('0x48')]['id'];}return db[_0xfb2e('0x2c')][_0xfb2e('0x46')]({'where':{'id':_0x2e237f['params']['id']}})['then'](handleEntityNotFound(_0x9cb828,null))[_0xfb2e('0x25')](saveUpdates(_0x2e237f[_0xfb2e('0x48')],null))[_0xfb2e('0x25')](respondWithResult(_0x9cb828,null))[_0xfb2e('0x41')](handleError(_0x9cb828,null));};exports[_0xfb2e('0x26')]=function(_0xde6324,_0x45dc24){return db['WhatsappTransferReport'][_0xfb2e('0x46')]({'where':{'id':_0xde6324['params']['id']}})[_0xfb2e('0x25')](handleEntityNotFound(_0x45dc24,null))[_0xfb2e('0x25')](removeEntity(_0x45dc24,null))['catch'](handleError(_0x45dc24,null));};exports['describe']=function(_0x39f2e4,_0x31da6f){return db['WhatsappTransferReport']['describe']()[_0xfb2e('0x25')](respondWithResult(_0x31da6f,null))[_0xfb2e('0x41')](handleError(_0x31da6f,null));};
\ No newline at end of file
index ae6c37e..87eb577 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c28=['moment','request-promise','./whatsappTransferReport.attributes','exports','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','util','../../config/logger'];(function(_0x1fa2c3,_0x15bb6c){var _0x48bf80=function(_0x9aa2e1){while(--_0x9aa2e1){_0x1fa2c3['push'](_0x1fa2c3['shift']());}};_0x48bf80(++_0x15bb6c);}(_0x2c28,0xcd));var _0x82c2=function(_0x35b9d5,_0x5ceff8){_0x35b9d5=_0x35b9d5-0x0;var _0x5c8e44=_0x2c28[_0x35b9d5];return _0x5c8e44;};'use strict';var _=require('lodash');var util=require(_0x82c2('0x0'));var logger=require(_0x82c2('0x1'))('api');var moment=require(_0x82c2('0x2'));var BPromise=require('bluebird');var rp=require(_0x82c2('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x82c2('0x4'));module[_0x82c2('0x5')]=function(_0x375ae8,_0x2cf7d3){return _0x375ae8['define'](_0x82c2('0x6'),attributes,{'tableName':_0x82c2('0x7'),'paranoid':![],'indexes':[{'name':_0x82c2('0x8'),'fields':[_0x82c2('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc5bf=['util','../../config/logger','api','bluebird','rimraf','./whatsappTransferReport.attributes','exports','WhatsappTransferReport','uniqueid'];(function(_0x45bc28,_0x1bd2d9){var _0x554800=function(_0x536585){while(--_0x536585){_0x45bc28['push'](_0x45bc28['shift']());}};_0x554800(++_0x1bd2d9);}(_0xc5bf,0xab));var _0xfc5b=function(_0x917c20,_0x2e065a){_0x917c20=_0x917c20-0x0;var _0x457d37=_0xc5bf[_0x917c20];return _0x457d37;};'use strict';var _=require('lodash');var util=require(_0xfc5b('0x0'));var logger=require(_0xfc5b('0x1'))(_0xfc5b('0x2'));var moment=require('moment');var BPromise=require(_0xfc5b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xfc5b('0x4'));var config=require('../../config/environment');var attributes=require(_0xfc5b('0x5'));module[_0xfc5b('0x6')]=function(_0x2ea10e,_0x2150d2){return _0x2ea10e['define'](_0xfc5b('0x7'),attributes,{'tableName':'report_whatsapp_transfer','paranoid':![],'indexes':[{'name':_0xfc5b('0x8'),'fields':[_0xfc5b('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index 5d6721b..a47b031 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a92=['request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','WhatsappTransferReport,\x20%s,\x20%s'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x3a92,0x12e));var _0x23a9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3a92[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x23a9('0x0'));var moment=require(_0x23a9('0x1'));var BPromise=require('bluebird');var rs=require(_0x23a9('0x2'));var fs=require('fs');var Redis=require(_0x23a9('0x3'));var db=require(_0x23a9('0x4'))['db'];var utils=require(_0x23a9('0x5'));var logger=require(_0x23a9('0x6'))(_0x23a9('0x7'));var config=require(_0x23a9('0x8'));var jayson=require(_0x23a9('0x9'));var client=jayson['client'][_0x23a9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2cedbd,_0x3615a8,_0x477066){return new BPromise(function(_0x26435d,_0xa9707a){return client['request'](_0x2cedbd,_0x477066)['then'](function(_0x556074){logger[_0x23a9('0xb')](_0x23a9('0xc'),_0x3615a8,_0x23a9('0xd'));logger[_0x23a9('0xe')](_0x23a9('0xf'),_0x3615a8,_0x23a9('0xd'),JSON[_0x23a9('0x10')](_0x556074));if(_0x556074[_0x23a9('0x11')]){if(_0x556074['error']['code']===0x1f4){logger[_0x23a9('0x11')](_0x23a9('0xc'),_0x3615a8,_0x556074[_0x23a9('0x11')][_0x23a9('0x12')]);return _0xa9707a(_0x556074[_0x23a9('0x11')][_0x23a9('0x12')]);}logger[_0x23a9('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x3615a8,_0x556074[_0x23a9('0x11')][_0x23a9('0x12')]);return _0x26435d(_0x556074[_0x23a9('0x11')][_0x23a9('0x12')]);}else{logger[_0x23a9('0xb')]('WhatsappTransferReport,\x20%s,\x20%s',_0x3615a8,'request\x20sent');_0x26435d(_0x556074[_0x23a9('0x13')][_0x23a9('0x12')]);}})[_0x23a9('0x14')](function(_0x4858f5){logger[_0x23a9('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x3615a8,_0x4858f5);_0xa9707a(_0x4858f5);});});}
\ No newline at end of file
+var _0xc604=['result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','debug','error','message'];(function(_0x15cc45,_0x2eb9a8){var _0x25867e=function(_0x29e099){while(--_0x29e099){_0x15cc45['push'](_0x15cc45['shift']());}};_0x25867e(++_0x2eb9a8);}(_0xc604,0x191));var _0x4c60=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc604[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4c60('0x0'));var util=require(_0x4c60('0x1'));var moment=require(_0x4c60('0x2'));var BPromise=require(_0x4c60('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4c60('0x4'));var db=require(_0x4c60('0x5'))['db'];var utils=require(_0x4c60('0x6'));var logger=require(_0x4c60('0x7'))(_0x4c60('0x8'));var config=require(_0x4c60('0x9'));var jayson=require(_0x4c60('0xa'));var client=jayson[_0x4c60('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x37efdc,_0x52af1a,_0xcbe2d4){return new BPromise(function(_0x2388fc,_0x3f8ed9){return client[_0x4c60('0xc')](_0x37efdc,_0xcbe2d4)[_0x4c60('0xd')](function(_0x1cdddf){logger[_0x4c60('0xe')](_0x4c60('0xf'),_0x52af1a,'request\x20sent');logger[_0x4c60('0x10')]('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x52af1a,'request\x20sent',JSON['stringify'](_0x1cdddf));if(_0x1cdddf[_0x4c60('0x11')]){if(_0x1cdddf[_0x4c60('0x11')]['code']===0x1f4){logger[_0x4c60('0x11')](_0x4c60('0xf'),_0x52af1a,_0x1cdddf[_0x4c60('0x11')][_0x4c60('0x12')]);return _0x3f8ed9(_0x1cdddf[_0x4c60('0x11')]['message']);}logger[_0x4c60('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x52af1a,_0x1cdddf[_0x4c60('0x11')][_0x4c60('0x12')]);return _0x2388fc(_0x1cdddf[_0x4c60('0x11')][_0x4c60('0x12')]);}else{logger[_0x4c60('0xe')](_0x4c60('0xf'),_0x52af1a,'request\x20sent');_0x2388fc(_0x1cdddf[_0x4c60('0x13')][_0x4c60('0x12')]);}})['catch'](function(_0x60263e){logger['error'](_0x4c60('0xf'),_0x52af1a,_0x60263e);_0x3f8ed9(_0x60263e);});});}
\ No newline at end of file
index 27842f0..e6f3f89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c7f=['exit','lodash','./mysqldb','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/transcribe','sync','listen','info','start','then','Online\x20apps:','map','filter','online','name','join','Offline\x20apps:','status','seedDB','./config/seedDB','./config/license','default','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s'];(function(_0x4c1ec2,_0x4f42b7){var _0x3f6f1c=function(_0xc82652){while(--_0xc82652){_0x4c1ec2['push'](_0x4c1ec2['shift']());}};_0x3f6f1c(++_0x4f42b7);}(_0x9c7f,0x1a1));var _0xf9c7=function(_0x2d7bf6,_0x203b47){_0x2d7bf6=_0x2d7bf6-0x0;var _0x5b09d0=_0x9c7f[_0x2d7bf6];return _0x5b09d0;};'use strict';var _=require(_0xf9c7('0x0'));var mysqldb=require(_0xf9c7('0x1'));var rpc=require(_0xf9c7('0x2'));var config=require(_0xf9c7('0x3'));var logger=require(_0xf9c7('0x4'))(_0xf9c7('0x5'));var pm2=require(_0xf9c7('0x6'));var pm2Config=require(_0xf9c7('0x7'));var schedule=require(_0xf9c7('0x8'));var chat=require(_0xf9c7('0x9'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0xf9c7('0xa'));function main(){return mysqldb['db']['sequelize'][_0xf9c7('0xb')]()['then'](function(){return rpc[_0xf9c7('0xc')]();})['then'](function(_0x477730){logger[_0xf9c7('0xd')](_0x477730);return chat[_0xf9c7('0xe')]();})[_0xf9c7('0xf')](function(){return whatsapp[_0xf9c7('0xe')]();})['then'](function(){return schedule['start']();})[_0xf9c7('0xf')](function(){return transcribe[_0xf9c7('0xe')]();})[_0xf9c7('0xf')](function(_0x47afad){logger[_0xf9c7('0xd')](_0x47afad);return pm2['start'](pm2Config);})[_0xf9c7('0xf')](function(_0x4b5e56){logger[_0xf9c7('0xd')](_0xf9c7('0x10'),_[_0xf9c7('0x11')](_[_0xf9c7('0x12')](_0x4b5e56,{'status':_0xf9c7('0x13')}),_0xf9c7('0x14'))[_0xf9c7('0x15')]());logger[_0xf9c7('0xd')](_0xf9c7('0x16'),_[_0xf9c7('0x11')](_[_0xf9c7('0x12')](_0x4b5e56,function(_0x629b5d){return _0x629b5d[_0xf9c7('0x17')]!==_0xf9c7('0x13');}),_0xf9c7('0x14'))[_0xf9c7('0x15')]()||'None');config[_0xf9c7('0x18')]&&require(_0xf9c7('0x19'))['default']();require(_0xf9c7('0x1a'))[_0xf9c7('0x1b')]();})[_0xf9c7('0x1c')](function(_0x5ac9a1){logger[_0xf9c7('0x1d')](_0xf9c7('0x1e'),_0x5ac9a1);process[_0xf9c7('0x1f')](0x1);});}main();
\ No newline at end of file
+var _0x31ec=['catch','exit','lodash','./mysqldb','./config/logger','app','./config/pm2/config','./config/schedule/chat','sync','listen','then','start','info','Online\x20apps:','map','filter','online','name','Offline\x20apps:','status','join','None','seedDB','default','./config/license'];(function(_0x2d12ef,_0x27d288){var _0x5ed0f7=function(_0xdd90cf){while(--_0xdd90cf){_0x2d12ef['push'](_0x2d12ef['shift']());}};_0x5ed0f7(++_0x27d288);}(_0x31ec,0x98));var _0xc31e=function(_0x424e17,_0x3df4e2){_0x424e17=_0x424e17-0x0;var _0x367c4e=_0x31ec[_0x424e17];return _0x367c4e;};'use strict';var _=require(_0xc31e('0x0'));var mysqldb=require(_0xc31e('0x1'));var rpc=require('./rpc');var config=require('./config/environment');var logger=require(_0xc31e('0x2'))(_0xc31e('0x3'));var pm2=require('./config/pm2');var pm2Config=require(_0xc31e('0x4'));var schedule=require('./config/schedule');var chat=require(_0xc31e('0x5'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require('./config/schedule/transcribe');function main(){return mysqldb['db']['sequelize'][_0xc31e('0x6')]()['then'](function(){return rpc[_0xc31e('0x7')]();})[_0xc31e('0x8')](function(_0xf01c88){logger['info'](_0xf01c88);return chat[_0xc31e('0x9')]();})[_0xc31e('0x8')](function(){return whatsapp[_0xc31e('0x9')]();})['then'](function(){return schedule['start']();})[_0xc31e('0x8')](function(){return transcribe[_0xc31e('0x9')]();})[_0xc31e('0x8')](function(_0x4233c3){logger[_0xc31e('0xa')](_0x4233c3);return pm2[_0xc31e('0x9')](pm2Config);})[_0xc31e('0x8')](function(_0x1261e0){logger[_0xc31e('0xa')](_0xc31e('0xb'),_[_0xc31e('0xc')](_[_0xc31e('0xd')](_0x1261e0,{'status':_0xc31e('0xe')}),_0xc31e('0xf'))['join']());logger[_0xc31e('0xa')](_0xc31e('0x10'),_[_0xc31e('0xc')](_[_0xc31e('0xd')](_0x1261e0,function(_0x4ad192){return _0x4ad192[_0xc31e('0x11')]!==_0xc31e('0xe');}),_0xc31e('0xf'))[_0xc31e('0x12')]()||_0xc31e('0x13'));config[_0xc31e('0x14')]&&require('./config/seedDB')[_0xc31e('0x15')]();require(_0xc31e('0x16'))[_0xc31e('0x15')]();})[_0xc31e('0x17')](function(_0x4db26d){logger['error']('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x4db26d);process[_0xc31e('0x18')](0x1);});}main();
\ No newline at end of file
index afbb271..1460a7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4897=['blockDuration','isEqual','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','add','minutes','Unknown\x20authorization\x20format','User\x20not\x20found.','getLicense','update','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','apiKeyNonce','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','splice','unshift','promisify','sign','secret','secrets','payload','verify','floor','toString','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','composable-middleware','basic-auth','crypto','util','moment','session','role','internal','email','permissions','md5secret','voicePause','mailPause','smsPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','alias','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','interface','userProfileId','settingsEnabled','wssPort','downloadVoiceRecordings','downloadAttachments','isAuthenticated','use','user','ChatInteraction','params','closed','then','status','disposition','unmanaged','Unmanaged.','Forbidden.','catch','headers','authorization','Basic','User','find','name','authenticate','pass','json','Wrong\x20credentials.','startsWith','Bearer','query','apikey','getUuid','Setting','findOne','allowedLoginAttempts'];(function(_0x4ec15b,_0x5039eb){var _0xeeba8c=function(_0x3458d2){while(--_0x3458d2){_0x4ec15b['push'](_0x4ec15b['shift']());}};_0xeeba8c(++_0x5039eb);}(_0x4897,0xa6));var _0x7489=function(_0x49b533,_0x4b64d6){_0x49b533=_0x49b533-0x0;var _0x5bf2a6=_0x4897[_0x49b533];return _0x5bf2a6;};'use strict';var db=require(_0x7489('0x0'))['db'];var config=require(_0x7489('0x1'));var hardwareConf=require(_0x7489('0x2'));var licenseUtil=require(_0x7489('0x3'));var encryptor=require(_0x7489('0x4'));var _=require(_0x7489('0x5'));var jwt=require('jsonwebtoken');var expressJwt=require('express-jwt');var compose=require(_0x7489('0x6'));var basicAuth=require(_0x7489('0x7'));var crypto=require(_0x7489('0x8'));var BPromise=require('bluebird');var util=require(_0x7489('0x9'));var moment=require(_0x7489('0xa'));var validateJwt=expressJwt({'secret':config['secrets'][_0x7489('0xb')]});var userAttributes=['id',_0x7489('0xc'),'fullname','name',_0x7489('0xd'),_0x7489('0xe'),'userpic',_0x7489('0xf'),_0x7489('0x10'),_0x7489('0x11'),'chatPause',_0x7489('0x12'),'faxPause',_0x7489('0x13'),_0x7489('0x14'),_0x7489('0x15'),_0x7489('0x16'),_0x7489('0x17'),_0x7489('0x18'),_0x7489('0x19'),'allowmessenger','passwordResetAt',_0x7489('0x1a'),'phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd',_0x7489('0x1b'),_0x7489('0x1c'),_0x7489('0x1d'),_0x7489('0x1e'),_0x7489('0x1f'),_0x7489('0x20'),'phoneBarRemoteControlPort','hotdesk',_0x7489('0x21'),_0x7489('0x22'),'privacyEnabled',_0x7489('0x23'),_0x7489('0x24'),_0x7489('0x25'),'downloadOmnichannelInteractions',_0x7489('0x26')];exports['isChatInteractionAuthorized']=function(){return this[_0x7489('0x27')](!![])[_0x7489('0x28')](function(_0x1f0d33,_0x43f499,_0xce84f8){if(_0x1f0d33[_0x7489('0x29')]){_0xce84f8();}else{return db[_0x7489('0x2a')]['findOne']({'where':{'id':_0x1f0d33[_0x7489('0x2b')]['id']},'attributes':['id',_0x7489('0x2c'),'disposition'],'raw':!![]})[_0x7489('0x2d')](function(_0x57cace){if(_0x57cace&&_0x57cace['closed']){return _0x43f499[_0x7489('0x2e')](_0x57cace[_0x7489('0x2f')]===_0x7489('0x30')?0x195:0x193)['json']({'message':_0x57cace['disposition']===_0x7489('0x30')?_0x7489('0x31'):_0x7489('0x32')});}else{_0xce84f8();}})[_0x7489('0x33')](function(_0x44d4bb){_0xce84f8(_0x44d4bb);});}});};exports['isAuthenticated']=function isAuthenticated(_0x57e626){return compose()[_0x7489('0x28')](function(_0x2c3f93,_0x7ff5a,_0xe04c3c){var _0x1cc2dc;if(_0x2c3f93[_0x7489('0x34')][_0x7489('0x35')]){if(_['startsWith'](_0x2c3f93[_0x7489('0x34')][_0x7489('0x35')],_0x7489('0x36'))){var _0x29f83d=basicAuth(_0x2c3f93);db[_0x7489('0x37')][_0x7489('0x38')]({'where':{'name':_0x29f83d[_0x7489('0x39')]}})['then'](function(_0x1e57a8){if(!_0x1e57a8||!_0x1e57a8[_0x7489('0x3a')](_0x29f83d[_0x7489('0x3b')])){return _0x7ff5a[_0x7489('0x2e')](0x191)[_0x7489('0x3c')]({'message':_0x7489('0x3d')});}_0x2c3f93[_0x7489('0x29')]={'id':_0x1e57a8['id']};_0xe04c3c();})['catch'](function(_0x28715c){_0xe04c3c(_0x28715c);});}else if(_[_0x7489('0x3e')](_0x2c3f93[_0x7489('0x34')][_0x7489('0x35')],_0x7489('0x3f'))){validateJwt(_0x2c3f93,_0x7ff5a,_0xe04c3c);}else{if(_0x57e626){_0xe04c3c();}else{return _0x7ff5a['status'](0x193)['json']({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x2c3f93[_0x7489('0x40')][_0x7489('0x41')]){try{var _0x4d0556={'audience':hardwareConf[_0x7489('0x42')](),'issuer':hardwareConf[_0x7489('0x42')]()};verifyJwt(_0x2c3f93[_0x7489('0x40')]['apikey'],_0x4d0556)[_0x7489('0x2d')](function(_0x45d816){return db[_0x7489('0x37')][_0x7489('0x38')]({'where':{'id':_0x45d816['sub']}})['then'](function(_0x363025){_0x1cc2dc=_0x363025;return db[_0x7489('0x43')][_0x7489('0x44')]({'where':{'id':0x1},'attributes':[_0x7489('0x45'),_0x7489('0x46')],'raw':!![]});})[_0x7489('0x2d')](function(_0x1de51b){if(!_0x1cc2dc||!_[_0x7489('0x47')](_0x1cc2dc['apiKeyNonce'],_0x45d816[_0x7489('0x48')])){return _0x7ff5a[_0x7489('0x2e')](0x191)[_0x7489('0x3c')]({'message':_0x7489('0x49')});}if(_0x1cc2dc[_0x7489('0x4a')]){return _0x7ff5a[_0x7489('0x2e')](0x191)[_0x7489('0x3c')]({'message':_0x7489('0x4b')});}if(_0x1cc2dc['blocked']){if(_0x1de51b[_0x7489('0x46')]>0x0){if(moment(_0x1cc2dc['blockedAt'])[_0x7489('0x4c')](_0x1de51b[_0x7489('0x46')],_0x7489('0x4d'))>moment()){return _0x7ff5a[_0x7489('0x2e')](0x191)[_0x7489('0x3c')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x7ff5a[_0x7489('0x2e')](0x191)[_0x7489('0x3c')]({'message':_0x7489('0x4b')});}}_0x2c3f93[_0x7489('0x29')]={'id':_0x1cc2dc['id']};_0xe04c3c();});})[_0x7489('0x33')](function(){return _0x7ff5a[_0x7489('0x2e')](0x191)[_0x7489('0x3c')]({'message':_0x7489('0x4b')});});}catch(_0x2b9c8d){_0xe04c3c(_0x2b9c8d);}}else if(_0x57e626){_0xe04c3c();}else{return _0x7ff5a[_0x7489('0x2e')](0x193)['json']({'message':_0x7489('0x4e')});}})['use'](function(_0x19814a,_0x570ca4,_0x1d7b08){if(_0x19814a[_0x7489('0x29')]){db['User'][_0x7489('0x38')]({'where':{'id':_0x19814a[_0x7489('0x29')]['id']},'attributes':userAttributes})[_0x7489('0x2d')](function(_0x24a8b5){if(!_0x24a8b5){return _0x570ca4['status'](0x194)[_0x7489('0x3c')]({'message':_0x7489('0x4f')});}_0x19814a[_0x7489('0x29')]=_0x24a8b5;_0x1d7b08();})[_0x7489('0x33')](function(_0x4fd9a5){_0x1d7b08(_0x4fd9a5);});}else if(_0x57e626){_0x1d7b08();}else{return _0x570ca4['status'](0x194)[_0x7489('0x3c')]({'message':'User\x20object\x20not\x20found.'});}});};exports['canUpdate']=function canUpdate(){return compose()['use'](function(_0x175671,_0x34338d,_0x560e3f){return licenseUtil[_0x7489('0x50')]()['then'](function(_0x4398c7){if(_0x4398c7[_0x7489('0x51')]){_0x560e3f();}else{return _0x34338d['status'](0x193)['json']({'message':'Forbidden'});}})[_0x7489('0x33')](function(_0x1f32bb){_0x560e3f(_0x1f32bb);});});};exports[_0x7489('0x52')]=function(_0x42d3aa,_0x412dce,_0x33e436){_0x42d3aa['isMiddleware']=!![];return _0x33e436();};exports[_0x7489('0x53')]=function signToken(_0x499a82){return signJwt(_0x499a82);};exports[_0x7489('0x54')]=function(_0x3497f0,_0x4dba54){if(!_0x3497f0[_0x7489('0x29')]){return _0x4dba54[_0x7489('0x2e')](0x194)['json']({'message':_0x7489('0x55')});}var _0x1c558c={'payload':{'id':_0x3497f0[_0x7489('0x29')]['id'],'role':_0x3497f0['user'][_0x7489('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x1c558c)[_0x7489('0x2d')](function(_0x56abde){_0x4dba54[_0x7489('0x56')](_0x7489('0x57'),_0x56abde);_0x4dba54[_0x7489('0x58')](_0x7489('0x59'));})[_0x7489('0x33')](function(_0x232d27){return _0x4dba54[_0x7489('0x2e')](0x1f4)[_0x7489('0x5a')](_0x232d27);});};exports[_0x7489('0x5b')]=function(_0x166656){if(_['isNil'](_0x166656['apiKeyNonce'])||_[_0x7489('0x5c')](_0x166656[_0x7489('0x5d')])){return null;}else{return createJwt(_0x166656);}};exports[_0x7489('0x5e')]=function(_0x3f5bcc){_0x3f5bcc[_0x7489('0x5f')]=generateNonce();_0x3f5bcc[_0x7489('0x5d')]=generateIssuedAt();return createJwt(_0x3f5bcc);};exports['regenerateApiKey']=function(_0x359d11,_0x147f02){var _0x283a0f=_0x359d11[_0x7489('0x40')][_0x7489('0x41')];if(_0x283a0f){var _0x4850ae={'nonce':_0x147f02[_0x7489('0x5f')],'iat':_0x147f02[_0x7489('0x5d')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x7489('0x42')]()};return verifyJwt(_0x283a0f,_0x4850ae)['then'](function(){return generateApiKey(_0x147f02);});}else{throw{'message':_0x7489('0x60')};}};exports[_0x7489('0x61')]=function(_0x4ce57e){var _0x3b4e36=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x3b4e36[_0x7489('0x62')](_0x4ce57e))throw new db['Sequelize'][(_0x7489('0x63'))]('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[_0x7489('0x64')]=function(_0x5126f7,_0x485e11,_0x1d20c8){var _0x1a3ee9=encryptor[_0x7489('0x65')](_0x485e11)[_0x7489('0x66')](',');for(var _0xf37e1d=0x0;_0xf37e1d<_0x1d20c8;_0xf37e1d++){if(!_0x1a3ee9[_0xf37e1d])break;if(_0x5126f7[_0x7489('0x67')]()===_0x1a3ee9[_0xf37e1d][_0x7489('0x67')]()){var _0x3bfac9=util[_0x7489('0x68')](_0x7489('0x69'),_0x1d20c8);if(_0x1d20c8===0x1){_0x3bfac9='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db['Sequelize'][(_0x7489('0x63'))](_0x3bfac9);}}return;};exports[_0x7489('0x6a')]=function(_0x524b33,_0x4b3d79){var _0x4c3f4b=_0x4b3d79?encryptor['decryptString'](_0x4b3d79)[_0x7489('0x66')](','):[];if(_0x4c3f4b['length']===0x5){_0x4c3f4b[_0x7489('0x6b')](-0x1,0x1);}_0x4c3f4b[_0x7489('0x6c')](_0x524b33);return encryptor['encryptString'](_0x4c3f4b['join'](','));};function signJwt(_0x33ec1a){var _0x3df8be=BPromise[_0x7489('0x6d')](jwt[_0x7489('0x6e')],{'context':jwt});var _0x49a64b=_0x33ec1a[_0x7489('0x6f')]||config[_0x7489('0x70')][_0x7489('0xb')];return new BPromise(function(_0x42397e,_0xbd8e20){_0x3df8be(_0x33ec1a[_0x7489('0x71')],_0x49a64b,_0x33ec1a['options'])['then'](function(_0x289201){_0x42397e(_0x289201);})[_0x7489('0x33')](function(_0x5c5bf9){_0xbd8e20(_0x5c5bf9);});});}function verifyJwt(_0x9b9814,_0x174097,_0x5eeb72){var _0x26a811=BPromise[_0x7489('0x6d')](jwt[_0x7489('0x72')],{'context':jwt});var _0x355f54=_0x5eeb72||config[_0x7489('0x70')][_0x7489('0xb')];return new BPromise(function(_0x41fecf,_0xcb8d29){_0x26a811(_0x9b9814,_0x355f54,_0x174097)['then'](function(_0x468449){_0x41fecf(_0x468449);})[_0x7489('0x33')](function(_0x1e32d8){_0xcb8d29(_0x1e32d8);});});}function generateNonce(){return crypto['randomBytes'](0x10)['toString']('hex');}function generateIssuedAt(){return Math[_0x7489('0x73')](Date['now']()/0x3e8)[_0x7489('0x74')]();}function createJwt(_0x3033b7){var _0x14d28a={'payload':{'iat':_0x3033b7[_0x7489('0x5d')],'nonce':_0x3033b7[_0x7489('0x5f')]},'options':{'algorithm':_0x7489('0x75'),'subject':_0x3033b7['id']['toString'](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x14d28a)[_0x7489('0x2d')](function(_0x4a31c8){return{'iat':_0x3033b7[_0x7489('0x5d')],'nonce':_0x3033b7[_0x7489('0x5f')],'token':_0x4a31c8};});}
\ No newline at end of file
+var _0x3fa1=['mailPause','faxPause','smsPause','openchannelPause','pauseType','lastLoginAt','crudPermissions','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','isChatInteractionAuthorized','use','user','findOne','params','closed','then','status','disposition','unmanaged','json','Forbidden.','isAuthenticated','headers','authorization','Basic','User','find','name','authenticate','pass','Wrong\x20credentials.','catch','startsWith','Bearer','query','apikey','getUuid','sub','Setting','blockDuration','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blockedAt','add','minutes','Unknown\x20authorization\x20format','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','Forbidden','isMiddleware','signToken','setTokenCookie','cookie','motion.token','/dashboards/general','send','isNil','apiKeyIat','regenerateApiKey','validatePasswordPattern','test','Sequelize','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','ValidationError','decryptString','length','splice','unshift','encryptString','join','promisify','sign','secret','options','verify','randomBytes','toString','hex','floor','HS512','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','bluebird','util','moment','secrets','session','role','internal','userpic','md5secret','voicePause','chatPause'];(function(_0x58afd5,_0x534a48){var _0x3e503b=function(_0x27ba44){while(--_0x27ba44){_0x58afd5['push'](_0x58afd5['shift']());}};_0x3e503b(++_0x534a48);}(_0x3fa1,0xea));var _0x13fa=function(_0x59266e,_0x54ffd8){_0x59266e=_0x59266e-0x0;var _0x316df6=_0x3fa1[_0x59266e];return _0x316df6;};'use strict';var db=require('../../mysqldb')['db'];var config=require(_0x13fa('0x0'));var hardwareConf=require(_0x13fa('0x1'));var licenseUtil=require(_0x13fa('0x2'));var encryptor=require(_0x13fa('0x3'));var _=require(_0x13fa('0x4'));var jwt=require(_0x13fa('0x5'));var expressJwt=require(_0x13fa('0x6'));var compose=require(_0x13fa('0x7'));var basicAuth=require(_0x13fa('0x8'));var crypto=require('crypto');var BPromise=require(_0x13fa('0x9'));var util=require(_0x13fa('0xa'));var moment=require(_0x13fa('0xb'));var validateJwt=expressJwt({'secret':config[_0x13fa('0xc')][_0x13fa('0xd')]});var userAttributes=['id',_0x13fa('0xe'),'fullname','name',_0x13fa('0xf'),'email',_0x13fa('0x10'),'permissions',_0x13fa('0x11'),_0x13fa('0x12'),_0x13fa('0x13'),_0x13fa('0x14'),_0x13fa('0x15'),_0x13fa('0x16'),_0x13fa('0x17'),_0x13fa('0x18'),'showWebBar',_0x13fa('0x19'),'lastPauseAt',_0x13fa('0x1a'),_0x13fa('0x1b'),_0x13fa('0x1c'),_0x13fa('0x1d'),_0x13fa('0x1e'),_0x13fa('0x1f'),_0x13fa('0x20'),_0x13fa('0x21'),_0x13fa('0x22'),_0x13fa('0x23'),_0x13fa('0x24'),_0x13fa('0x25'),_0x13fa('0x26'),'phoneBarRemoteControlPort','hotdesk',_0x13fa('0x27'),_0x13fa('0x28'),_0x13fa('0x29'),_0x13fa('0x2a'),_0x13fa('0x2b'),_0x13fa('0x2c'),_0x13fa('0x2d'),'downloadAttachments'];exports[_0x13fa('0x2e')]=function(){return this['isAuthenticated'](!![])[_0x13fa('0x2f')](function(_0x51ec85,_0x343918,_0x779b31){if(_0x51ec85[_0x13fa('0x30')]){_0x779b31();}else{return db['ChatInteraction'][_0x13fa('0x31')]({'where':{'id':_0x51ec85[_0x13fa('0x32')]['id']},'attributes':['id',_0x13fa('0x33'),'disposition'],'raw':!![]})[_0x13fa('0x34')](function(_0x46f3dd){if(_0x46f3dd&&_0x46f3dd[_0x13fa('0x33')]){return _0x343918[_0x13fa('0x35')](_0x46f3dd[_0x13fa('0x36')]===_0x13fa('0x37')?0x195:0x193)[_0x13fa('0x38')]({'message':_0x46f3dd[_0x13fa('0x36')]===_0x13fa('0x37')?'Unmanaged.':_0x13fa('0x39')});}else{_0x779b31();}})['catch'](function(_0x25f65c){_0x779b31(_0x25f65c);});}});};exports[_0x13fa('0x3a')]=function isAuthenticated(_0xf58514){return compose()['use'](function(_0x38fcbb,_0x467248,_0x4ec8bc){var _0x408079;if(_0x38fcbb[_0x13fa('0x3b')][_0x13fa('0x3c')]){if(_['startsWith'](_0x38fcbb['headers'][_0x13fa('0x3c')],_0x13fa('0x3d'))){var _0x383b38=basicAuth(_0x38fcbb);db[_0x13fa('0x3e')][_0x13fa('0x3f')]({'where':{'name':_0x383b38[_0x13fa('0x40')]}})['then'](function(_0x488ae0){if(!_0x488ae0||!_0x488ae0[_0x13fa('0x41')](_0x383b38[_0x13fa('0x42')])){return _0x467248[_0x13fa('0x35')](0x191)['json']({'message':_0x13fa('0x43')});}_0x38fcbb[_0x13fa('0x30')]={'id':_0x488ae0['id']};_0x4ec8bc();})[_0x13fa('0x44')](function(_0x36117c){_0x4ec8bc(_0x36117c);});}else if(_[_0x13fa('0x45')](_0x38fcbb[_0x13fa('0x3b')][_0x13fa('0x3c')],_0x13fa('0x46'))){validateJwt(_0x38fcbb,_0x467248,_0x4ec8bc);}else{if(_0xf58514){_0x4ec8bc();}else{return _0x467248[_0x13fa('0x35')](0x193)[_0x13fa('0x38')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x38fcbb[_0x13fa('0x47')][_0x13fa('0x48')]){try{var _0x50181f={'audience':hardwareConf[_0x13fa('0x49')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x38fcbb['query'][_0x13fa('0x48')],_0x50181f)[_0x13fa('0x34')](function(_0x2c77a9){return db[_0x13fa('0x3e')][_0x13fa('0x3f')]({'where':{'id':_0x2c77a9[_0x13fa('0x4a')]}})[_0x13fa('0x34')](function(_0xb2e918){_0x408079=_0xb2e918;return db[_0x13fa('0x4b')][_0x13fa('0x31')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x13fa('0x4c')],'raw':!![]});})[_0x13fa('0x34')](function(_0x3c004d){if(!_0x408079||!_[_0x13fa('0x4d')](_0x408079[_0x13fa('0x4e')],_0x2c77a9[_0x13fa('0x4f')])){return _0x467248[_0x13fa('0x35')](0x191)['json']({'message':_0x13fa('0x50')});}if(_0x408079[_0x13fa('0x51')]){return _0x467248[_0x13fa('0x35')](0x191)['json']({'message':_0x13fa('0x52')});}if(_0x408079['blocked']){if(_0x3c004d['blockDuration']>0x0){if(moment(_0x408079[_0x13fa('0x53')])[_0x13fa('0x54')](_0x3c004d[_0x13fa('0x4c')],_0x13fa('0x55'))>moment()){return _0x467248['status'](0x191)[_0x13fa('0x38')]({'message':_0x13fa('0x52')});}}else{return _0x467248[_0x13fa('0x35')](0x191)[_0x13fa('0x38')]({'message':_0x13fa('0x52')});}}_0x38fcbb['user']={'id':_0x408079['id']};_0x4ec8bc();});})['catch'](function(){return _0x467248[_0x13fa('0x35')](0x191)[_0x13fa('0x38')]({'message':_0x13fa('0x52')});});}catch(_0x13f74d){_0x4ec8bc(_0x13f74d);}}else if(_0xf58514){_0x4ec8bc();}else{return _0x467248[_0x13fa('0x35')](0x193)['json']({'message':_0x13fa('0x56')});}})['use'](function(_0x159847,_0x56a314,_0x28046e){if(_0x159847[_0x13fa('0x30')]){db[_0x13fa('0x3e')][_0x13fa('0x3f')]({'where':{'id':_0x159847['user']['id']},'attributes':userAttributes})[_0x13fa('0x34')](function(_0xd72693){if(!_0xd72693){return _0x56a314['status'](0x194)[_0x13fa('0x38')]({'message':_0x13fa('0x57')});}_0x159847['user']=_0xd72693;_0x28046e();})['catch'](function(_0x21116a){_0x28046e(_0x21116a);});}else if(_0xf58514){_0x28046e();}else{return _0x56a314['status'](0x194)[_0x13fa('0x38')]({'message':_0x13fa('0x58')});}});};exports[_0x13fa('0x59')]=function canUpdate(){return compose()['use'](function(_0x7c4252,_0x3d2a2f,_0x5c0ff2){return licenseUtil[_0x13fa('0x5a')]()[_0x13fa('0x34')](function(_0x3185ca){if(_0x3185ca['update']){_0x5c0ff2();}else{return _0x3d2a2f[_0x13fa('0x35')](0x193)[_0x13fa('0x38')]({'message':_0x13fa('0x5b')});}})[_0x13fa('0x44')](function(_0x5786cf){_0x5c0ff2(_0x5786cf);});});};exports['isMiddleware']=function(_0x20c4de,_0x84b92f,_0x21402f){_0x20c4de[_0x13fa('0x5c')]=!![];return _0x21402f();};exports[_0x13fa('0x5d')]=function signToken(_0x341494){return signJwt(_0x341494);};exports[_0x13fa('0x5e')]=function(_0x471dc1,_0x1d6627){if(!_0x471dc1[_0x13fa('0x30')]){return _0x1d6627['status'](0x194)[_0x13fa('0x38')]({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x545a21={'payload':{'id':_0x471dc1[_0x13fa('0x30')]['id'],'role':_0x471dc1[_0x13fa('0x30')][_0x13fa('0xe')]},'options':{'expiresIn':0x15180}};return signJwt(_0x545a21)[_0x13fa('0x34')](function(_0x5835f8){_0x1d6627[_0x13fa('0x5f')](_0x13fa('0x60'),_0x5835f8);_0x1d6627['redirect'](_0x13fa('0x61'));})[_0x13fa('0x44')](function(_0x192b83){return _0x1d6627[_0x13fa('0x35')](0x1f4)[_0x13fa('0x62')](_0x192b83);});};exports['retrieveApiKey']=function(_0x254329){if(_[_0x13fa('0x63')](_0x254329['apiKeyNonce'])||_[_0x13fa('0x63')](_0x254329[_0x13fa('0x64')])){return null;}else{return createJwt(_0x254329);}};exports['generateApiKey']=function(_0x12ec90){_0x12ec90[_0x13fa('0x4e')]=generateNonce();_0x12ec90['apiKeyIat']=generateIssuedAt();return createJwt(_0x12ec90);};exports[_0x13fa('0x65')]=function(_0x10baaa,_0x144edc){var _0x3c2c10=_0x10baaa[_0x13fa('0x47')][_0x13fa('0x48')];if(_0x3c2c10){var _0x3ac33d={'nonce':_0x144edc['apiKeyNonce'],'iat':_0x144edc['apiKeyIat'],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x13fa('0x49')]()};return verifyJwt(_0x3c2c10,_0x3ac33d)[_0x13fa('0x34')](function(){return generateApiKey(_0x144edc);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0x13fa('0x66')]=function(_0x51a49c){var _0x2f1b18=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x2f1b18[_0x13fa('0x67')](_0x51a49c))throw new db[(_0x13fa('0x68'))]['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~!@#$%^&-_=+[{]}.');return;};exports['validatePasswordHistory']=function(_0x6a3a0c,_0x41321a,_0x51230b){var _0x39b1df=encryptor['decryptString'](_0x41321a)[_0x13fa('0x69')](',');for(var _0x6e6396=0x0;_0x6e6396<_0x51230b;_0x6e6396++){if(!_0x39b1df[_0x6e6396])break;if(_0x6a3a0c['toLowerCase']()===_0x39b1df[_0x6e6396][_0x13fa('0x6a')]()){var _0x2efd6f=util[_0x13fa('0x6b')](_0x13fa('0x6c'),_0x51230b);if(_0x51230b===0x1){_0x2efd6f=_0x13fa('0x6d');}throw new db[(_0x13fa('0x68'))][(_0x13fa('0x6e'))](_0x2efd6f);}}return;};exports['updatePasswordsHistory']=function(_0x3bc778,_0x4a5468){var _0x4513f7=_0x4a5468?encryptor[_0x13fa('0x6f')](_0x4a5468)[_0x13fa('0x69')](','):[];if(_0x4513f7[_0x13fa('0x70')]===0x5){_0x4513f7[_0x13fa('0x71')](-0x1,0x1);}_0x4513f7[_0x13fa('0x72')](_0x3bc778);return encryptor[_0x13fa('0x73')](_0x4513f7[_0x13fa('0x74')](','));};function signJwt(_0x5de34c){var _0x2459b1=BPromise[_0x13fa('0x75')](jwt[_0x13fa('0x76')],{'context':jwt});var _0x44330=_0x5de34c[_0x13fa('0x77')]||config[_0x13fa('0xc')]['session'];return new BPromise(function(_0x449d02,_0x4a2ecf){_0x2459b1(_0x5de34c['payload'],_0x44330,_0x5de34c[_0x13fa('0x78')])[_0x13fa('0x34')](function(_0x518b82){_0x449d02(_0x518b82);})[_0x13fa('0x44')](function(_0x1bc958){_0x4a2ecf(_0x1bc958);});});}function verifyJwt(_0x5cae4e,_0x2baaf0,_0x41436b){var _0x20e44c=BPromise[_0x13fa('0x75')](jwt[_0x13fa('0x79')],{'context':jwt});var _0xd72dd=_0x41436b||config[_0x13fa('0xc')]['session'];return new BPromise(function(_0x1a1a73,_0x4736a0){_0x20e44c(_0x5cae4e,_0xd72dd,_0x2baaf0)[_0x13fa('0x34')](function(_0x235220){_0x1a1a73(_0x235220);})[_0x13fa('0x44')](function(_0x522f05){_0x4736a0(_0x522f05);});});}function generateNonce(){return crypto[_0x13fa('0x7a')](0x10)[_0x13fa('0x7b')](_0x13fa('0x7c'));}function generateIssuedAt(){return Math[_0x13fa('0x7d')](Date['now']()/0x3e8)[_0x13fa('0x7b')]();}function createJwt(_0x5b730f){var _0x1fcb15={'payload':{'iat':_0x5b730f[_0x13fa('0x64')],'nonce':_0x5b730f[_0x13fa('0x4e')]},'options':{'algorithm':_0x13fa('0x7e'),'subject':_0x5b730f['id'][_0x13fa('0x7b')](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf[_0x13fa('0x49')]()}};return signJwt(_0x1fcb15)[_0x13fa('0x34')](function(_0x36989e){return{'iat':_0x5b730f[_0x13fa('0x64')],'nonce':_0x5b730f[_0x13fa('0x4e')],'token':_0x36989e};});}
\ No newline at end of file
index 32032ee..6beaa76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9972=['filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createWriteStream','data','binary','write','end','final','unlink','decryptFile','createDecipher','update','close','secret','utf8','base64','decryptString','crypto','lodash','../../config/environment','secrets','session','aes-256-ctr','aes192','algorithm','encrypt','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test'];(function(_0x1f5c05,_0x3f25f0){var _0x1fcc8=function(_0x250109){while(--_0x250109){_0x1f5c05['push'](_0x1f5c05['shift']());}};_0x1fcc8(++_0x3f25f0);}(_0x9972,0x1d4));var _0x2997=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x9972[_0x4a9fb1];return _0x348672;};'use strict';var crypto=require(_0x2997('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x2997('0x1'));var config=require(_0x2997('0x2'));var logger=require('../../config/logger')('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x2997('0x3')][_0x2997('0x4')],'algorithm':_0x2997('0x5')};const fileOptions={'algorithm':_0x2997('0x6')};if(config['encrypt']&&config['encrypt']['algorithm']){var isSupported=isAlgorithmSupported(config['encrypt'][_0x2997('0x7')]);if(isSupported){fileOptions[_0x2997('0x7')]=config[_0x2997('0x8')][_0x2997('0x7')];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0x2997('0x9')](config[_0x2997('0x8')][_0x2997('0x7')],_0x2997('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0x241144){return AES_SUPPORTED_RX[_0x2997('0xb')](_0x241144);}function getSupportedCiphers(){return crypto['getCiphers']()[_0x2997('0xc')](isASupportedCipher);}function isAlgorithmSupported(_0x539275){return getSupportedCiphers()[_0x2997('0xd')](_0x539275)>-0x1;}function combineOptions(_0x2e1fab){var _0x35f6f0={};for(var _0x510d4b in fileOptions){if(fileOptions[_0x2997('0xe')](_0x510d4b)){_0x35f6f0[_0x510d4b]=fileOptions[_0x510d4b];}}if(_0x2e1fab){for(var _0x50f391 in _0x2e1fab){if(_0x2e1fab[_0x2997('0xe')](_0x50f391)){_0x35f6f0[_0x50f391]=_0x2e1fab[_0x50f391];}}}return _0x35f6f0;}exports[_0x2997('0xf')]=function(_0x253609,_0x18cbb2,_0x30812e,_0x23ca08){return new BPromise(function(_0xc67384,_0x3db94f){_0x23ca08=combineOptions(_0x23ca08);var _0x1f2c57=new Buffer(_0x30812e);var _0x46f4ab=fs[_0x2997('0x10')](_0x253609);var _0x755b58=fs[_0x2997('0x11')](_0x18cbb2);var _0x3d3a00=crypto['createCipher'](_0x23ca08['algorithm'],_0x1f2c57);_0x46f4ab['on'](_0x2997('0x12'),function(_0x16f7ab){var _0xbb543d=new Buffer(_0x3d3a00['update'](_0x16f7ab),_0x2997('0x13'));_0x755b58[_0x2997('0x14')](_0xbb543d);});_0x46f4ab['on'](_0x2997('0x15'),function(){try{var _0x44f38f=new Buffer(_0x3d3a00[_0x2997('0x16')](_0x2997('0x13')),_0x2997('0x13'));_0x755b58['write'](_0x44f38f);_0x755b58['end']();_0x755b58['on']('close',function(){return _0xc67384(_0x18cbb2);});}catch(_0x27d0c8){fs[_0x2997('0x17')](_0x18cbb2);return _0x3db94f(_0x27d0c8);}});});};exports[_0x2997('0x18')]=function(_0x2fd807,_0x21d3ef,_0x249761,_0x315cac){return new BPromise(function(_0x2704e2,_0x76911a){_0x315cac=combineOptions(_0x315cac);var _0x2b2a99=new Buffer(_0x249761);var _0x2cb0cc=fs[_0x2997('0x10')](_0x2fd807);var _0x1f7b1e=fs['createWriteStream'](_0x21d3ef);var _0x253d05=crypto[_0x2997('0x19')](_0x315cac[_0x2997('0x7')],_0x2b2a99);_0x2cb0cc['on'](_0x2997('0x12'),function(_0x569981){var _0x498867=new Buffer(_0x253d05[_0x2997('0x1a')](_0x569981),'binary');_0x1f7b1e['write'](_0x498867);});_0x2cb0cc['on'](_0x2997('0x15'),function(){try{var _0x357e22=new Buffer(_0x253d05[_0x2997('0x16')](_0x2997('0x13')),_0x2997('0x13'));_0x1f7b1e[_0x2997('0x14')](_0x357e22);_0x1f7b1e[_0x2997('0x15')]();_0x1f7b1e['on'](_0x2997('0x1b'),function(){return _0x2704e2(_0x21d3ef);});}catch(_0x12195b){fs[_0x2997('0x17')](_0x21d3ef);return _0x76911a(_0x12195b);}});});};exports['encryptString']=function(_0x145b8f,_0xbc04c4,_0x3ecc13){var _0x1a3a96=_0x3ecc13||stringOptions[_0x2997('0x7')];var _0x112fd3=_0xbc04c4||stringOptions[_0x2997('0x1c')];var _0x184999=crypto['createCipher'](_0x1a3a96,_0x112fd3);var _0x247904=_0x184999[_0x2997('0x1a')](_0x145b8f,_0x2997('0x1d'),_0x2997('0x1e'));_0x247904+=_0x184999['final'](_0x2997('0x1e'));return _0x247904;};exports[_0x2997('0x1f')]=function(_0x43136d,_0x51575c,_0x2cdffb){var _0x23957a=_0x2cdffb||stringOptions[_0x2997('0x7')];var _0x3e4530=_0x51575c||stringOptions[_0x2997('0x1c')];var _0x26a5a4=crypto[_0x2997('0x19')](_0x23957a,_0x3e4530);var _0x24eb09=_0x26a5a4[_0x2997('0x1a')](_0x43136d,_0x2997('0x1e'),'utf8');_0x24eb09+=_0x26a5a4['final'](_0x2997('0x1d'));return _0x24eb09;};
\ No newline at end of file
+var _0x2608=['createDecipher','final','encryptString','secret','utf8','base64','crypto','bluebird','lodash','../../config/logger','session','aes-256-ctr','aes192','encrypt','algorithm','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createWriteStream','createCipher','data','update','binary','write','end','close','unlink','decryptFile','createReadStream'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2608,0xb0));var _0x8260=function(_0x1524fd,_0x31bc5f){_0x1524fd=_0x1524fd-0x0;var _0x34ea65=_0x2608[_0x1524fd];return _0x34ea65;};'use strict';var crypto=require(_0x8260('0x0'));var fs=require('fs');var BPromise=require(_0x8260('0x1'));var _=require(_0x8260('0x2'));var config=require('../../config/environment');var logger=require(_0x8260('0x3'))('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0x8260('0x4')],'algorithm':_0x8260('0x5')};const fileOptions={'algorithm':_0x8260('0x6')};if(config[_0x8260('0x7')]&&config[_0x8260('0x7')][_0x8260('0x8')]){var isSupported=isAlgorithmSupported(config[_0x8260('0x7')][_0x8260('0x8')]);if(isSupported){fileOptions[_0x8260('0x8')]=config[_0x8260('0x7')][_0x8260('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0x8260('0x9')](config['encrypt']['algorithm'],_0x8260('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0x4d9172){return AES_SUPPORTED_RX[_0x8260('0xb')](_0x4d9172);}function getSupportedCiphers(){return crypto[_0x8260('0xc')]()[_0x8260('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x3ce372){return getSupportedCiphers()[_0x8260('0xe')](_0x3ce372)>-0x1;}function combineOptions(_0x3703e0){var _0x22d507={};for(var _0x345b78 in fileOptions){if(fileOptions[_0x8260('0xf')](_0x345b78)){_0x22d507[_0x345b78]=fileOptions[_0x345b78];}}if(_0x3703e0){for(var _0x486749 in _0x3703e0){if(_0x3703e0[_0x8260('0xf')](_0x486749)){_0x22d507[_0x486749]=_0x3703e0[_0x486749];}}}return _0x22d507;}exports[_0x8260('0x10')]=function(_0x2e3109,_0x53a2dc,_0x427cd0,_0x353308){return new BPromise(function(_0x39ed6e,_0x4a65d5){_0x353308=combineOptions(_0x353308);var _0xfed0bf=new Buffer(_0x427cd0);var _0x130976=fs['createReadStream'](_0x2e3109);var _0x5b2bec=fs[_0x8260('0x11')](_0x53a2dc);var _0x1efece=crypto[_0x8260('0x12')](_0x353308[_0x8260('0x8')],_0xfed0bf);_0x130976['on'](_0x8260('0x13'),function(_0x54fa19){var _0x26e003=new Buffer(_0x1efece[_0x8260('0x14')](_0x54fa19),_0x8260('0x15'));_0x5b2bec[_0x8260('0x16')](_0x26e003);});_0x130976['on'](_0x8260('0x17'),function(){try{var _0x79f423=new Buffer(_0x1efece['final'](_0x8260('0x15')),_0x8260('0x15'));_0x5b2bec[_0x8260('0x16')](_0x79f423);_0x5b2bec['end']();_0x5b2bec['on'](_0x8260('0x18'),function(){return _0x39ed6e(_0x53a2dc);});}catch(_0x899d16){fs[_0x8260('0x19')](_0x53a2dc);return _0x4a65d5(_0x899d16);}});});};exports[_0x8260('0x1a')]=function(_0x1e38cd,_0x4a524c,_0x68d8da,_0x297f0d){return new BPromise(function(_0x2ed172,_0xe35c9){_0x297f0d=combineOptions(_0x297f0d);var _0x1066e7=new Buffer(_0x68d8da);var _0x173d32=fs[_0x8260('0x1b')](_0x1e38cd);var _0x147f91=fs['createWriteStream'](_0x4a524c);var _0x413974=crypto[_0x8260('0x1c')](_0x297f0d[_0x8260('0x8')],_0x1066e7);_0x173d32['on'](_0x8260('0x13'),function(_0x2cc386){var _0x8f6cdd=new Buffer(_0x413974[_0x8260('0x14')](_0x2cc386),_0x8260('0x15'));_0x147f91[_0x8260('0x16')](_0x8f6cdd);});_0x173d32['on']('end',function(){try{var _0x58027b=new Buffer(_0x413974[_0x8260('0x1d')](_0x8260('0x15')),'binary');_0x147f91['write'](_0x58027b);_0x147f91['end']();_0x147f91['on'](_0x8260('0x18'),function(){return _0x2ed172(_0x4a524c);});}catch(_0x3fb2df){fs[_0x8260('0x19')](_0x4a524c);return _0xe35c9(_0x3fb2df);}});});};exports[_0x8260('0x1e')]=function(_0x494f7a,_0x3822c6,_0x31e144){var _0x2dc04f=_0x31e144||stringOptions[_0x8260('0x8')];var _0x107b33=_0x3822c6||stringOptions[_0x8260('0x1f')];var _0x57d90b=crypto['createCipher'](_0x2dc04f,_0x107b33);var _0x3084bb=_0x57d90b[_0x8260('0x14')](_0x494f7a,_0x8260('0x20'),_0x8260('0x21'));_0x3084bb+=_0x57d90b[_0x8260('0x1d')](_0x8260('0x21'));return _0x3084bb;};exports['decryptString']=function(_0x660952,_0x1ebab0,_0x5e6c01){var _0x3e9520=_0x5e6c01||stringOptions[_0x8260('0x8')];var _0x32a09d=_0x1ebab0||stringOptions['secret'];var _0x49328b=crypto['createDecipher'](_0x3e9520,_0x32a09d);var _0x79447f=_0x49328b[_0x8260('0x14')](_0x660952,'base64',_0x8260('0x20'));_0x79447f+=_0x49328b[_0x8260('0x1d')](_0x8260('0x20'));return _0x79447f;};
\ No newline at end of file
index 933dc76..90df277 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9861=['num','length','split','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','basename','.csv','existsSync','join','mkdirSync','each','%s%d.%s','csv','%s.%s','writeFileSync','zip','Completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','finally','exit','util','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','../../config/logger','analytics','argv','savename','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','find','then','splitSizeCsv','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes'];(function(_0x3dafef,_0x3322f1){var _0x3792dd=function(_0x2de3b9){while(--_0x2de3b9){_0x3dafef['push'](_0x3dafef['shift']());}};_0x3792dd(++_0x3322f1);}(_0x9861,0x176));var _0x1986=function(_0x5148ad,_0x1c7396){_0x5148ad=_0x5148ad-0x0;var _0x125714=_0x9861[_0x5148ad];return _0x125714;};'use strict';var util=require(_0x1986('0x0'));var path=require('path');var _=require('lodash');var csv=require(_0x1986('0x1'));var fs=require('fs');var BPromise=require(_0x1986('0x2'));var zipdir=require(_0x1986('0x3'));var rimraf=require(_0x1986('0x4'));var db=require(_0x1986('0x5'))['db'];var dbH=require(_0x1986('0x5'))['dbH'];var logger=require(_0x1986('0x6'))(_0x1986('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x1986('0x8')][0x2]);var QUERY=process[_0x1986('0x8')][0x3];var PATH=process[_0x1986('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0xc5e066,_0x412444){var _0x4150da={'status':_0xc5e066};var _0x2bd40f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x412444){_0x4150da[_0x1986('0x9')]=_0x412444;}return db['AnalyticExtractedReport'][_0x1986('0xa')](_0x4150da,_0x2bd40f);}function main(){var _0x1578f9=0x1388;var _0x66f64d;logger[_0x1986('0xb')](util['format'](_0x1986('0xc'),EXTRACTED_REPORT_ID,_0x1986('0xd')));return db['Setting'][_0x1986('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizeCsv']})[_0x1986('0xf')](function(_0x1f49f6){if(_0x1f49f6){_0x66f64d=_0x1f49f6;_0x1578f9=_0x66f64d[_0x1986('0x10')]||0x1388;}})[_0x1986('0xf')](function(){return dbH[_0x1986('0x11')][_0x1986('0x12')](util[_0x1986('0x13')](_0x1986('0x14'),QUERY),{'type':dbH[_0x1986('0x11')][_0x1986('0x15')]['SELECT']});})['then'](function(_0x12984d){if(!_0x12984d[0x0][_0x1986('0x16')]){return analyticExtractedReport('Empty');}var _0x3b4244=[];var _0xf4c7bc=0x0;var _0x292d42=!![];if(_0x12984d&&_0x12984d[_0x1986('0x17')]){var _0x306a43=_0x12984d[0x0][_0x1986('0x16')]%(_0xf4c7bc+_0x1578f9);if(_0x66f64d[_0x1986('0x18')]){for(;_0x292d42;_0xf4c7bc+=_0x1578f9,_0x306a43=_0x12984d[0x0][_0x1986('0x16')]%(_0xf4c7bc+_0x1578f9)){if(_0x306a43==0x0||_0x306a43==_0x12984d[0x0][_0x1986('0x16')]){_0x292d42=![];}_0x3b4244[_0x1986('0x19')](dbH[_0x1986('0x11')][_0x1986('0x12')](util[_0x1986('0x13')](_0x1986('0x1a'),QUERY,_0x1578f9,_0xf4c7bc),{'type':dbH['sequelize'][_0x1986('0x15')][_0x1986('0x1b')]}));}}else{_0x3b4244['push'](dbH[_0x1986('0x11')][_0x1986('0x12')](QUERY,{'type':dbH['sequelize']['QueryTypes'][_0x1986('0x1b')]}));}}var _0x358807=path[_0x1986('0x1c')](PATH);var _0x530aa1=path[_0x1986('0x1d')](PATH,_0x1986('0x1e'));var _0x2908d7=_0x66f64d['split']&&_0x3b4244[_0x1986('0x17')]>0x1;var _0xbde8e2=[];if(!fs[_0x1986('0x1f')](path[_0x1986('0x20')](_0x358807,_0x530aa1))&&_0x2908d7){fs[_0x1986('0x21')](path['join'](_0x358807,_0x530aa1));}return BPromise[_0x1986('0x22')](_0x3b4244,function(_0x518f3c){_0xbde8e2[_0x1986('0x19')](_0x518f3c);})[_0x1986('0xf')](function(){for(var _0x5873eb=0x0;_0x5873eb<_0xbde8e2[_0x1986('0x17')];_0x5873eb+=0x1){var _0x37094b;var _0x3b8f25=_0xbde8e2[_0x5873eb];if(_0x2908d7){_0x37094b=path['join'](_0x358807,_0x530aa1,util['format'](_0x1986('0x23'),_0x530aa1,_0x5873eb,_0x1986('0x24')));}else{_0x37094b=path['join'](_0x358807,util[_0x1986('0x13')](_0x1986('0x25'),_0x530aa1,_0x1986('0x24')));}fs[_0x1986('0x26')](_0x37094b,csv(_0x3b8f25));}})['then'](function(){if(_0x2908d7){zipdir(path[_0x1986('0x20')](_0x358807,_0x530aa1),{'saveTo':path[_0x1986('0x20')](_0x358807,util[_0x1986('0x13')]('%s.%s',_0x530aa1,_0x1986('0x27')))},function(_0x10090c,_0x435218){});rimraf(path[_0x1986('0x20')](_0x358807,_0x530aa1),function(){});}})[_0x1986('0xf')](function(){logger[_0x1986('0xb')](util[_0x1986('0x13')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x1986('0xd')));return analyticExtractedReport(_0x1986('0x28'),_0x2908d7?util[_0x1986('0x13')]('%s.%s',_0x530aa1,_0x2908d7?_0x1986('0x27'):_0x1986('0x24')):null);});})['catch'](function(_0x5f0f66){logger[_0x1986('0xb')](util[_0x1986('0x13')](_0x1986('0x29'),EXTRACTED_REPORT_ID,_0x1986('0xd')),util['inspect'](_0x5f0f66,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x1986('0x2a')](function(){process[_0x1986('0x2b')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xae60=['Empty','length','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.csv','existsSync','join','mkdirSync','each','%s%d.%s','csv','%s.%s','writeFileSync','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','util','path','lodash','bluebird','zip-dir','rimraf','../../mysqldb','dbH','analytics','argv','AnalyticExtractedReport','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','then','sequelize','query','QueryTypes','SELECT','num'];(function(_0x1794bd,_0x9f5daa){var _0x4032c7=function(_0x9c1863){while(--_0x9c1863){_0x1794bd['push'](_0x1794bd['shift']());}};_0x4032c7(++_0x9f5daa);}(_0xae60,0x1c7));var _0x0ae6=function(_0x176329,_0x568c84){_0x176329=_0x176329-0x0;var _0x31997c=_0xae60[_0x176329];return _0x31997c;};'use strict';var util=require(_0x0ae6('0x0'));var path=require(_0x0ae6('0x1'));var _=require(_0x0ae6('0x2'));var csv=require('to-csv');var fs=require('fs');var BPromise=require(_0x0ae6('0x3'));var zipdir=require(_0x0ae6('0x4'));var rimraf=require(_0x0ae6('0x5'));var db=require('../../mysqldb')['db'];var dbH=require(_0x0ae6('0x6'))[_0x0ae6('0x7')];var logger=require('../../config/logger')(_0x0ae6('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0x0ae6('0x9')][0x2]);var QUERY=process[_0x0ae6('0x9')][0x3];var PATH=process[_0x0ae6('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0xbb596c,_0x447a1d){var _0x120910={'status':_0xbb596c};var _0x1b5e80={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x447a1d){_0x120910['savename']=_0x447a1d;}return db[_0x0ae6('0xa')][_0x0ae6('0xb')](_0x120910,_0x1b5e80);}function main(){var _0x3a8b0e=0x1388;var _0x39787a;logger['info'](util[_0x0ae6('0xc')](_0x0ae6('0xd'),EXTRACTED_REPORT_ID,_0x0ae6('0xe')));return db[_0x0ae6('0xf')][_0x0ae6('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x0ae6('0x11'),_0x0ae6('0x12')]})[_0x0ae6('0x13')](function(_0x3b05a4){if(_0x3b05a4){_0x39787a=_0x3b05a4;_0x3a8b0e=_0x39787a[_0x0ae6('0x12')]||0x1388;}})[_0x0ae6('0x13')](function(){return dbH[_0x0ae6('0x14')][_0x0ae6('0x15')](util[_0x0ae6('0xc')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x0ae6('0x14')][_0x0ae6('0x16')][_0x0ae6('0x17')]});})[_0x0ae6('0x13')](function(_0xce3e23){if(!_0xce3e23[0x0][_0x0ae6('0x18')]){return analyticExtractedReport(_0x0ae6('0x19'));}var _0x3b64ac=[];var _0xa797bb=0x0;var _0x13ba83=!![];if(_0xce3e23&&_0xce3e23[_0x0ae6('0x1a')]){var _0x22e8a5=_0xce3e23[0x0][_0x0ae6('0x18')]%(_0xa797bb+_0x3a8b0e);if(_0x39787a[_0x0ae6('0x11')]){for(;_0x13ba83;_0xa797bb+=_0x3a8b0e,_0x22e8a5=_0xce3e23[0x0][_0x0ae6('0x18')]%(_0xa797bb+_0x3a8b0e)){if(_0x22e8a5==0x0||_0x22e8a5==_0xce3e23[0x0][_0x0ae6('0x18')]){_0x13ba83=![];}_0x3b64ac[_0x0ae6('0x1b')](dbH[_0x0ae6('0x14')][_0x0ae6('0x15')](util[_0x0ae6('0xc')](_0x0ae6('0x1c'),QUERY,_0x3a8b0e,_0xa797bb),{'type':dbH[_0x0ae6('0x14')]['QueryTypes'][_0x0ae6('0x17')]}));}}else{_0x3b64ac[_0x0ae6('0x1b')](dbH[_0x0ae6('0x14')][_0x0ae6('0x15')](QUERY,{'type':dbH[_0x0ae6('0x14')][_0x0ae6('0x16')][_0x0ae6('0x17')]}));}}var _0x829039=path['dirname'](PATH);var _0x39b22e=path[_0x0ae6('0x1d')](PATH,_0x0ae6('0x1e'));var _0x2f4688=_0x39787a[_0x0ae6('0x11')]&&_0x3b64ac['length']>0x1;var _0x296a9d=[];if(!fs[_0x0ae6('0x1f')](path[_0x0ae6('0x20')](_0x829039,_0x39b22e))&&_0x2f4688){fs[_0x0ae6('0x21')](path[_0x0ae6('0x20')](_0x829039,_0x39b22e));}return BPromise[_0x0ae6('0x22')](_0x3b64ac,function(_0x5b86fe){_0x296a9d[_0x0ae6('0x1b')](_0x5b86fe);})[_0x0ae6('0x13')](function(){for(var _0x519f17=0x0;_0x519f17<_0x296a9d['length'];_0x519f17+=0x1){var _0x44eb95;var _0x3255a7=_0x296a9d[_0x519f17];if(_0x2f4688){_0x44eb95=path[_0x0ae6('0x20')](_0x829039,_0x39b22e,util['format'](_0x0ae6('0x23'),_0x39b22e,_0x519f17,_0x0ae6('0x24')));}else{_0x44eb95=path[_0x0ae6('0x20')](_0x829039,util['format'](_0x0ae6('0x25'),_0x39b22e,_0x0ae6('0x24')));}fs[_0x0ae6('0x26')](_0x44eb95,csv(_0x3255a7));}})[_0x0ae6('0x13')](function(){if(_0x2f4688){zipdir(path[_0x0ae6('0x20')](_0x829039,_0x39b22e),{'saveTo':path[_0x0ae6('0x20')](_0x829039,util['format']('%s.%s',_0x39b22e,_0x0ae6('0x27')))},function(_0x419384,_0x4e6df8){});rimraf(path['join'](_0x829039,_0x39b22e),function(){});}})[_0x0ae6('0x13')](function(){logger[_0x0ae6('0x28')](util[_0x0ae6('0xc')](_0x0ae6('0x29'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x0ae6('0x2a'),_0x2f4688?util[_0x0ae6('0xc')](_0x0ae6('0x25'),_0x39b22e,_0x2f4688?'zip':_0x0ae6('0x24')):null);});})[_0x0ae6('0x2b')](function(_0x2af8c0){logger[_0x0ae6('0x28')](util[_0x0ae6('0xc')](_0x0ae6('0x2c'),EXTRACTED_REPORT_ID,_0x0ae6('0xe')),util[_0x0ae6('0x2d')](_0x2af8c0,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x0ae6('0x2e'));})[_0x0ae6('0x2f')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
index f943312..3f651a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfaf=['path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','JSDOM','window','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','update','tableHeader','map','toString','value','fill','auto','body','push','chunk','keys','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','format','length','header','pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','black','right','dirname','basename','.pdf','join','%s.%s','pdf','Setting','find','then','splitSizePdf','num','split','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','mkdirSync','all','createPdfKitDocument','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','createWriteStream','finish','error','end','createPdfFromHTML','lodash','util'];(function(_0x276312,_0x53c0d7){var _0xa0242f=function(_0x135bed){while(--_0x135bed){_0x276312['push'](_0x276312['shift']());}};_0xa0242f(++_0x53c0d7);}(_0xdfaf,0xb4));var _0xfdfa=function(_0x10d8b4,_0x428280){_0x10d8b4=_0x10d8b4-0x0;var _0x4ea4c1=_0xdfaf[_0x10d8b4];return _0x4ea4c1;};'use strict';var _=require(_0xfdfa('0x0'));var fs=require('fs');var util=require(_0xfdfa('0x1'));var path=require(_0xfdfa('0x2'));var moment=require(_0xfdfa('0x3'));var htmlToPdfmake=require(_0xfdfa('0x4'));var PdfPrinter=require(_0xfdfa('0x5'));var zipdir=require(_0xfdfa('0x6'));var rimraf=require('rimraf');var JSDOM=require('jsdom')[_0xfdfa('0x7')];var window=new JSDOM('')[_0xfdfa('0x8')];var db=require(_0xfdfa('0x9'))['db'];var dbH=require('../../mysqldb')[_0xfdfa('0xa')];var logger=require(_0xfdfa('0xb'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0xfdfa('0xc')][0x2]);var QUERY=process[_0xfdfa('0xc')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0xfdfa('0xc')][0x5];var FORMAT=_0xfdfa('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x144e66,_0x11489c){var _0x564a55={'status':_0x144e66};var _0x3d07c6={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x11489c){_0x564a55['savename']=_0x11489c;}return db[_0xfdfa('0xe')][_0xfdfa('0xf')](_0x564a55,_0x3d07c6);}function getHeaders(_0x1d9ecd){return _['map'](_0x1d9ecd,function(_0x24ba67){return{'text':_0x24ba67,'style':_0xfdfa('0x10')};});}function getRows(_0xbbf1e7,_0x56c30f){return _[_0xfdfa('0x11')](_0x56c30f,function(_0x39be7b){return _(_0x39be7b)['pick'](_0xbbf1e7)[_0xfdfa('0x11')](function(_0x1886a9){return _0x1886a9?_[_0xfdfa('0x12')](_0x1886a9):'';})[_0xfdfa('0x13')]();});}function createTable(_0x449aa5,_0x3cfe30){var _0x2e91dc={'widths':_[_0xfdfa('0x14')](Array(_0x449aa5['length']),0x91),'heights':function(_0x44a3ed){return _0x44a3ed===0x0?_0xfdfa('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x1077a2=getHeaders(_0x449aa5);_0x2e91dc[_0xfdfa('0x16')][_0xfdfa('0x17')](_0x1077a2);var _0x4cc35d=getRows(_0x449aa5,_0x3cfe30);_0x2e91dc[_0xfdfa('0x16')]=_0x2e91dc['body']['concat'](_0x4cc35d);return _0x2e91dc;}function createTables(_0x31432f){var _0x3ae018=[];var _0x2cefc2=_[_0xfdfa('0x18')](Object[_0xfdfa('0x19')](_0x31432f[0x0]),0x5);_0x2cefc2['forEach'](function(_0x3709e5){_0x3ae018[_0xfdfa('0x17')](createTable(_0x3709e5,_0x31432f));});return _0x3ae018;}function getPDFDocDefinition(_0x25a81){var _0x1f866c=util['format'](_0xfdfa('0x1a'),NAME,EXTRACTED_REPORT[_0xfdfa('0x1b')],moment(EXTRACTED_REPORT[_0xfdfa('0x1c')])['format'](FORMAT),moment(EXTRACTED_REPORT[_0xfdfa('0x1d')])[_0xfdfa('0x1e')](FORMAT));var _0x46eda7=[];for(var _0x358205=0x0;_0x358205<_0x25a81[_0xfdfa('0x1f')];_0x358205++){var _0xbeea11=[];if(_0x358205===0x0){_0xbeea11[_0xfdfa('0x17')]({'text':_0x1f866c,'style':_0xfdfa('0x20')});}var _0x267c63={'table':_0x25a81[_0x358205]};if(_0x358205>0x0){_0x267c63[_0xfdfa('0x21')]=_0xfdfa('0x22');_0x267c63[_0xfdfa('0x23')]=[0x0,0x46,0x0,0x0];}_0xbeea11[_0xfdfa('0x17')](_0x267c63);_0x46eda7[_0xfdfa('0x17')](_0xbeea11);}return{'pageSize':'A4','pageOrientation':_0xfdfa('0x24'),'content':_0x46eda7,'footer':function(_0x52e85f,_0x3ac9fa){return{'text':_0x52e85f['toString']()+_0xfdfa('0x25')+_0x3ac9fa,'style':_0xfdfa('0x26')};},'defaultStyle':{'font':_0xfdfa('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xfdfa('0x28')},'footer':{'alignment':_0xfdfa('0x29'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x743ecf){var _0x44f286=0x1388;var _0x5eebe4;if(!_0x743ecf[0x0]['num']){return analyticExtractedReport('Empty');}var _0x339cfb=[];var _0x2ccd88=0x0;var _0xd45f30=!![];var _0x4ea48a=path[_0xfdfa('0x2a')](PATH);var _0x42dceb=path[_0xfdfa('0x2b')](PATH,_0xfdfa('0x2c'));var _0x267b71=path[_0xfdfa('0x2d')](_0x4ea48a,util[_0xfdfa('0x1e')](_0xfdfa('0x2e'),_0x42dceb,_0xfdfa('0x2f')));var _0x44a4db=![];return db[_0xfdfa('0x30')][_0xfdfa('0x31')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizePdf']})[_0xfdfa('0x32')](function(_0x4d60c5){if(_0x4d60c5){_0x5eebe4=_0x4d60c5;_0x44f286=_0x5eebe4[_0xfdfa('0x33')]||0x3e8;}})[_0xfdfa('0x32')](function(){if(_0x743ecf&&_0x743ecf['length']){var _0x4184fd=_0x743ecf[0x0][_0xfdfa('0x34')]%(_0x2ccd88+_0x44f286);if(_0x5eebe4[_0xfdfa('0x35')]){for(;_0xd45f30;_0x2ccd88+=_0x44f286,_0x4184fd=_0x743ecf[0x0][_0xfdfa('0x34')]%(_0x2ccd88+_0x44f286)){if(_0x4184fd==0x0||_0x4184fd==_0x743ecf[0x0][_0xfdfa('0x34')]){_0xd45f30=![];}_0x339cfb[_0xfdfa('0x17')](dbH[_0xfdfa('0x36')][_0xfdfa('0x37')](util[_0xfdfa('0x1e')](_0xfdfa('0x38'),QUERY,_0x44f286,_0x2ccd88),{'type':dbH[_0xfdfa('0x36')][_0xfdfa('0x39')][_0xfdfa('0x3a')]}));}}else{_0x339cfb['push'](dbH[_0xfdfa('0x36')][_0xfdfa('0x37')](QUERY,{'type':dbH[_0xfdfa('0x36')][_0xfdfa('0x39')]['SELECT']}));}}_0x44a4db=_0x5eebe4[_0xfdfa('0x35')]&&_0x339cfb[_0xfdfa('0x1f')]>0x1;if(!fs['existsSync'](path[_0xfdfa('0x2d')](_0x4ea48a,_0x42dceb))&&_0x44a4db){fs[_0xfdfa('0x3b')](path[_0xfdfa('0x2d')](_0x4ea48a,_0x42dceb));}return Promise[_0xfdfa('0x3c')](_0x339cfb);})[_0xfdfa('0x32')](function(_0x1e35f1){return createTables(_['flatten'](_0x1e35f1));})[_0xfdfa('0x32')](function(_0x5c4399){var _0x2dbb09=getPDFDocDefinition(_0x5c4399);var _0x53d0c8=getPDFPrinter();var _0x34a5ba=_0x53d0c8[_0xfdfa('0x3d')](_0x2dbb09);if(_0x44a4db)_0x267b71=path[_0xfdfa('0x2d')](_0x4ea48a,_0x42dceb,util[_0xfdfa('0x1e')]('%s%d.%s',_0x42dceb,index,_0xfdfa('0x2f')));return writePDFDocument(_0x34a5ba,_0x267b71);})[_0xfdfa('0x32')](function(){if(!_0x44a4db)return;zipdir(path[_0xfdfa('0x2d')](_0x4ea48a,_0x42dceb),{'saveTo':path[_0xfdfa('0x2d')](_0x4ea48a,util[_0xfdfa('0x1e')](_0xfdfa('0x2e'),_0x42dceb,_0xfdfa('0x3e')))},function(_0x3545b9){if(_0x3545b9)throw _0x3545b9;return;});})[_0xfdfa('0x32')](function(){if(!_0x44a4db)return;rimraf(path[_0xfdfa('0x2d')](_0x4ea48a,_0x42dceb),function(){});})[_0xfdfa('0x32')](function(){logger[_0xfdfa('0x3f')](util['format'](_0xfdfa('0x40'),EXTRACTED_REPORT_ID,_0xfdfa('0x41')));return analyticExtractedReport(_0xfdfa('0x42'),_0x44a4db?util[_0xfdfa('0x1e')](_0xfdfa('0x2e'),_0x42dceb,_0x44a4db?_0xfdfa('0x3e'):'pdf'):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xfdfa('0x3f')](util[_0xfdfa('0x1e')](_0xfdfa('0x43'),EXTRACTED_REPORT_ID,'PDF'));return db[_0xfdfa('0xe')][_0xfdfa('0x44')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xfdfa('0x32')](function(_0x19830b){EXTRACTED_REPORT=_0x19830b;return dbH[_0xfdfa('0x36')]['query'](util[_0xfdfa('0x1e')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0xfdfa('0x36')][_0xfdfa('0x39')][_0xfdfa('0x3a')]});})[_0xfdfa('0x32')](extractReport)[_0xfdfa('0x45')](function(_0x289fa1){logger[_0xfdfa('0x3f')](util[_0xfdfa('0x1e')](_0xfdfa('0x46'),EXTRACTED_REPORT_ID,_0xfdfa('0x47')),util['inspect'](_0x289fa1,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xfdfa('0x48'));})[_0xfdfa('0x49')](function(){process[_0xfdfa('0x4a')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x8d01bd=new PdfPrinter({'Arial':{'normal':__dirname+_0xfdfa('0x4b'),'bold':__dirname+_0xfdfa('0x4c'),'italics':__dirname+_0xfdfa('0x4d'),'bolditalics':__dirname+_0xfdfa('0x4e')}});return _0x8d01bd;}function getPDFDocDefinitionFromHTML(_0x761a30,_0x2fa76b){var _0x3cdca6=util[_0xfdfa('0x1e')](_0xfdfa('0x4f'),_0x2fa76b[_0xfdfa('0x50')],_0x2fa76b[_0xfdfa('0x51')]);var _0x4af68d=moment()['format'](_0xfdfa('0x52'))[_0xfdfa('0x12')]();var _0x26cce3=htmlToPdfmake(_0x761a30,{'window':window,'tableAutoSize':!![]});return{'content':[_0x26cce3],'defaultStyle':{'font':_0xfdfa('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xfdfa('0x53'),'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':_0xfdfa('0x53')}},'header':function(){return[{'text':_0xfdfa('0x54'),'style':'header'}];},'footer':function(_0x2a1eca,_0x38d92b){return[{'text':util[_0xfdfa('0x1e')](_0xfdfa('0x55'),_0x3cdca6,_0x2a1eca,_0x38d92b,_0x4af68d),'style':_0xfdfa('0x26')}];}};}function writePDFDocument(_0xcefdaa,_0x4679dc){return new Promise(function(_0x417374,_0x6efef2){var _0x4529d9=_0xcefdaa['pipe'](fs[_0xfdfa('0x56')](_0x4679dc));_0x4529d9['on'](_0xfdfa('0x57'),function(){_0x417374(_0xfdfa('0x57'));});_0x4529d9['on'](_0xfdfa('0x58'),function(_0x4a1207){_0x6efef2(_0x4a1207);});_0xcefdaa[_0xfdfa('0x59')]();});}exports[_0xfdfa('0x5a')]=function(_0x322c35,_0x59ac63){var _0x5ab200=getPDFPrinter();var _0x524931=getPDFDocDefinitionFromHTML(_0x322c35,_0x59ac63);var _0x461af9=_0x5ab200[_0xfdfa('0x3d')](_0x524931);return writePDFDocument(_0x461af9,_0x59ac63['path'])['catch'](function(_0x1f6464){throw _0x1f6464;});};
\ No newline at end of file
+var _0x7191=['savename','map','toString','value','fill','auto','body','push','concat','chunk','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','endDate','length','header','pageBreak','before','landscape','num','Empty','dirname','basename','.pdf','%s.%s','Setting','find','split','splitSizePdf','then','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','existsSync','join','all','%s%d.%s','pdf','zip','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','AnalyticExtractedReport','findOne','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','channel','interactionId','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','finish','error','end','createPdfFromHTML','lodash','util','path','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','../../mysqldb','../../config/logger','analytics','argv'];(function(_0x59162a,_0x10e547){var _0x35e50d=function(_0x578425){while(--_0x578425){_0x59162a['push'](_0x59162a['shift']());}};_0x35e50d(++_0x10e547);}(_0x7191,0xe7));var _0x1719=function(_0x170175,_0x380acf){_0x170175=_0x170175-0x0;var _0x4f9b50=_0x7191[_0x170175];return _0x4f9b50;};'use strict';var _=require(_0x1719('0x0'));var fs=require('fs');var util=require(_0x1719('0x1'));var path=require(_0x1719('0x2'));var moment=require('moment');var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x1719('0x3'));var zipdir=require(_0x1719('0x4'));var rimraf=require(_0x1719('0x5'));var JSDOM=require(_0x1719('0x6'))[_0x1719('0x7')];var window=new JSDOM('')['window'];var db=require(_0x1719('0x8'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x1719('0x9'))(_0x1719('0xa'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process['argv'][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x1719('0xb')][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x2dd546,_0xa81f09){var _0x2b006d={'status':_0x2dd546};var _0x44ca2d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xa81f09){_0x2b006d[_0x1719('0xc')]=_0xa81f09;}return db['AnalyticExtractedReport']['update'](_0x2b006d,_0x44ca2d);}function getHeaders(_0x420b47){return _[_0x1719('0xd')](_0x420b47,function(_0x4c34a7){return{'text':_0x4c34a7,'style':'tableHeader'};});}function getRows(_0x3ea493,_0x30d7c4){return _[_0x1719('0xd')](_0x30d7c4,function(_0x2841a9){return _(_0x2841a9)['pick'](_0x3ea493)[_0x1719('0xd')](function(_0x56a5e4){return _0x56a5e4?_[_0x1719('0xe')](_0x56a5e4):'';})[_0x1719('0xf')]();});}function createTable(_0x2f3148,_0x21cfe0){var _0x5634b6={'widths':_[_0x1719('0x10')](Array(_0x2f3148['length']),0x91),'heights':function(_0x5e5802){return _0x5e5802===0x0?_0x1719('0x11'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x25e986=getHeaders(_0x2f3148);_0x5634b6[_0x1719('0x12')][_0x1719('0x13')](_0x25e986);var _0x4201f4=getRows(_0x2f3148,_0x21cfe0);_0x5634b6[_0x1719('0x12')]=_0x5634b6[_0x1719('0x12')][_0x1719('0x14')](_0x4201f4);return _0x5634b6;}function createTables(_0x2f7897){var _0x4e2b06=[];var _0x5096af=_[_0x1719('0x15')](Object['keys'](_0x2f7897[0x0]),0x5);_0x5096af[_0x1719('0x16')](function(_0x421bf6){_0x4e2b06[_0x1719('0x13')](createTable(_0x421bf6,_0x2f7897));});return _0x4e2b06;}function getPDFDocDefinition(_0x42e635){var _0x53b58f=util[_0x1719('0x17')](_0x1719('0x18'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x1719('0x19')])[_0x1719('0x17')](FORMAT),moment(EXTRACTED_REPORT[_0x1719('0x1a')])[_0x1719('0x17')](FORMAT));var _0x3d1725=[];for(var _0x5b2607=0x0;_0x5b2607<_0x42e635[_0x1719('0x1b')];_0x5b2607++){var _0x5255fe=[];if(_0x5b2607===0x0){_0x5255fe[_0x1719('0x13')]({'text':_0x53b58f,'style':_0x1719('0x1c')});}var _0x1b5630={'table':_0x42e635[_0x5b2607]};if(_0x5b2607>0x0){_0x1b5630[_0x1719('0x1d')]=_0x1719('0x1e');_0x1b5630['margin']=[0x0,0x46,0x0,0x0];}_0x5255fe['push'](_0x1b5630);_0x3d1725['push'](_0x5255fe);}return{'pageSize':'A4','pageOrientation':_0x1719('0x1f'),'content':_0x3d1725,'footer':function(_0x3c8ed6,_0x90c642){return{'text':_0x3c8ed6[_0x1719('0xe')]()+'\x20/\x20'+_0x90c642,'style':'footer'};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x19ed44){var _0x550301=0x1388;var _0x43b59a;if(!_0x19ed44[0x0][_0x1719('0x20')]){return analyticExtractedReport(_0x1719('0x21'));}var _0xd8fefd=[];var _0x1bc108=0x0;var _0x31f4b8=!![];var _0x577c69=path[_0x1719('0x22')](PATH);var _0x261133=path[_0x1719('0x23')](PATH,_0x1719('0x24'));var _0x3d0793=path['join'](_0x577c69,util[_0x1719('0x17')](_0x1719('0x25'),_0x261133,'pdf'));var _0x351d95=![];return db[_0x1719('0x26')][_0x1719('0x27')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x1719('0x28'),_0x1719('0x29')]})[_0x1719('0x2a')](function(_0x462747){if(_0x462747){_0x43b59a=_0x462747;_0x550301=_0x43b59a[_0x1719('0x29')]||0x3e8;}})[_0x1719('0x2a')](function(){if(_0x19ed44&&_0x19ed44[_0x1719('0x1b')]){var _0x4df212=_0x19ed44[0x0][_0x1719('0x20')]%(_0x1bc108+_0x550301);if(_0x43b59a[_0x1719('0x28')]){for(;_0x31f4b8;_0x1bc108+=_0x550301,_0x4df212=_0x19ed44[0x0][_0x1719('0x20')]%(_0x1bc108+_0x550301)){if(_0x4df212==0x0||_0x4df212==_0x19ed44[0x0][_0x1719('0x20')]){_0x31f4b8=![];}_0xd8fefd[_0x1719('0x13')](dbH[_0x1719('0x2b')][_0x1719('0x2c')](util['format'](_0x1719('0x2d'),QUERY,_0x550301,_0x1bc108),{'type':dbH[_0x1719('0x2b')][_0x1719('0x2e')][_0x1719('0x2f')]}));}}else{_0xd8fefd[_0x1719('0x13')](dbH[_0x1719('0x2b')][_0x1719('0x2c')](QUERY,{'type':dbH[_0x1719('0x2b')][_0x1719('0x2e')]['SELECT']}));}}_0x351d95=_0x43b59a[_0x1719('0x28')]&&_0xd8fefd['length']>0x1;if(!fs[_0x1719('0x30')](path[_0x1719('0x31')](_0x577c69,_0x261133))&&_0x351d95){fs['mkdirSync'](path[_0x1719('0x31')](_0x577c69,_0x261133));}return Promise[_0x1719('0x32')](_0xd8fefd);})[_0x1719('0x2a')](function(_0x1b11f8){return createTables(_['flatten'](_0x1b11f8));})[_0x1719('0x2a')](function(_0x122959){var _0x5d66b9=getPDFDocDefinition(_0x122959);var _0x4e6951=getPDFPrinter();var _0x5b06fa=_0x4e6951['createPdfKitDocument'](_0x5d66b9);if(_0x351d95)_0x3d0793=path[_0x1719('0x31')](_0x577c69,_0x261133,util[_0x1719('0x17')](_0x1719('0x33'),_0x261133,index,_0x1719('0x34')));return writePDFDocument(_0x5b06fa,_0x3d0793);})[_0x1719('0x2a')](function(){if(!_0x351d95)return;zipdir(path[_0x1719('0x31')](_0x577c69,_0x261133),{'saveTo':path[_0x1719('0x31')](_0x577c69,util[_0x1719('0x17')](_0x1719('0x25'),_0x261133,_0x1719('0x35')))},function(_0x2511b6){if(_0x2511b6)throw _0x2511b6;return;});})[_0x1719('0x2a')](function(){if(!_0x351d95)return;rimraf(path[_0x1719('0x31')](_0x577c69,_0x261133),function(){});})[_0x1719('0x2a')](function(){logger[_0x1719('0x36')](util[_0x1719('0x17')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport('Completed',_0x351d95?util[_0x1719('0x17')]('%s.%s',_0x261133,_0x351d95?_0x1719('0x35'):_0x1719('0x34')):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x1719('0x36')](util['format'](_0x1719('0x37'),EXTRACTED_REPORT_ID,_0x1719('0x38')));return db[_0x1719('0x39')][_0x1719('0x3a')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x1719('0x2a')](function(_0x2ebca2){EXTRACTED_REPORT=_0x2ebca2;return dbH[_0x1719('0x2b')][_0x1719('0x2c')](util[_0x1719('0x17')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x1719('0x2b')][_0x1719('0x2e')][_0x1719('0x2f')]});})['then'](extractReport)[_0x1719('0x3b')](function(_0x5661fd){logger[_0x1719('0x36')](util['format'](_0x1719('0x3c'),EXTRACTED_REPORT_ID,_0x1719('0x38')),util[_0x1719('0x3d')](_0x5661fd,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x1719('0x3e'));})[_0x1719('0x3f')](function(){process[_0x1719('0x40')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x5741e2=new PdfPrinter({'Arial':{'normal':__dirname+_0x1719('0x41'),'bold':__dirname+_0x1719('0x42'),'italics':__dirname+_0x1719('0x43'),'bolditalics':__dirname+_0x1719('0x44')}});return _0x5741e2;}function getPDFDocDefinitionFromHTML(_0x1d2749,_0x65c604){var _0x184558=util[_0x1719('0x17')]('%s\x20#%d',_0x65c604[_0x1719('0x45')],_0x65c604[_0x1719('0x46')]);var _0x106ecb=moment()['format'](_0x1719('0x47'))[_0x1719('0xe')]();var _0x3f04c7=htmlToPdfmake(_0x1d2749,{'window':window,'tableAutoSize':!![]});return{'content':[_0x3f04c7],'defaultStyle':{'font':_0x1719('0x48')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x1719('0x49'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x1719('0x49'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x1719('0x4a'),'style':_0x1719('0x1c')}];},'footer':function(_0x59dff6,_0x5e8f29){return[{'text':util[_0x1719('0x17')](_0x1719('0x4b'),_0x184558,_0x59dff6,_0x5e8f29,_0x106ecb),'style':'footer'}];}};}function writePDFDocument(_0x504124,_0xb5f7c8){return new Promise(function(_0x4cba4f,_0x350823){var _0x2c9d38=_0x504124[_0x1719('0x4c')](fs['createWriteStream'](_0xb5f7c8));_0x2c9d38['on'](_0x1719('0x4d'),function(){_0x4cba4f(_0x1719('0x4d'));});_0x2c9d38['on'](_0x1719('0x4e'),function(_0x2a73c5){_0x350823(_0x2a73c5);});_0x504124[_0x1719('0x4f')]();});}exports[_0x1719('0x50')]=function(_0xc1ef4e,_0x454db8){var _0x1c7f3d=getPDFPrinter();var _0x56e1a=getPDFDocDefinitionFromHTML(_0xc1ef4e,_0x454db8);var _0x2f7958=_0x1c7f3d['createPdfKitDocument'](_0x56e1a);return writePDFDocument(_0x2f7958,_0x454db8[_0x1719('0x2')])[_0x1719('0x3b')](function(_0x556c57){throw _0x556c57;});};
\ No newline at end of file
index ddc69c3..7ff4d61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9466=['catch','Failed','finally','exit','util','path','lodash','bluebird','zip-dir','rimraf','dbH','../../config/logger','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','query','QueryTypes','num','Empty','length','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','basename','.xlsx','existsSync','join','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed'];(function(_0x46262b,_0x525c15){var _0x1eefd4=function(_0x5a37b2){while(--_0x5a37b2){_0x46262b['push'](_0x46262b['shift']());}};_0x1eefd4(++_0x525c15);}(_0x9466,0x17c));var _0x6946=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x9466[_0x599f41];return _0x2e4d58;};'use strict';var util=require(_0x6946('0x0'));var path=require(_0x6946('0x1'));var _=require(_0x6946('0x2'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0x6946('0x3'));var zipdir=require(_0x6946('0x4'));var rimraf=require(_0x6946('0x5'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0x6946('0x6')];var logger=require(_0x6946('0x7'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x6946('0x8')][0x3];var PATH=process[_0x6946('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x53bfcc,_0x475881){var _0x3a460a={'status':_0x53bfcc};var _0x2b5743={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x475881){_0x3a460a[_0x6946('0x9')]=_0x475881;}return db[_0x6946('0xa')][_0x6946('0xb')](_0x3a460a,_0x2b5743);}function main(){var _0x58a1cc=0x1388;var _0x50a2c5;logger[_0x6946('0xc')](util[_0x6946('0xd')](_0x6946('0xe'),EXTRACTED_REPORT_ID,_0x6946('0xf')));return db[_0x6946('0x10')][_0x6946('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x6946('0x12'),_0x6946('0x13')]})[_0x6946('0x14')](function(_0x249ef9){if(_0x249ef9){_0x50a2c5=_0x249ef9;_0x58a1cc=_0x50a2c5[_0x6946('0x13')]||0x1388;}})[_0x6946('0x14')](function(){return dbH[_0x6946('0x15')][_0x6946('0x16')](util['format']('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x6946('0x15')][_0x6946('0x17')]['SELECT']});})[_0x6946('0x14')](function(_0x1f53a5){if(!_0x1f53a5[0x0][_0x6946('0x18')]){return analyticExtractedReport(_0x6946('0x19'));}var _0x5e864d=[];var _0x5abda3=0x0;var _0x1792e6=!![];if(_0x50a2c5[_0x6946('0x12')]){if(_0x1f53a5&&_0x1f53a5[_0x6946('0x1a')]){var _0x4ba7df=_0x1f53a5[0x0][_0x6946('0x18')]%(_0x5abda3+_0x58a1cc);for(;_0x1792e6;_0x5abda3+=_0x58a1cc,_0x4ba7df=_0x1f53a5[0x0]['num']%(_0x5abda3+_0x58a1cc)){if(_0x4ba7df==0x0||_0x4ba7df==_0x1f53a5[0x0][_0x6946('0x18')]){_0x1792e6=![];}_0x5e864d[_0x6946('0x1b')](dbH[_0x6946('0x15')]['query'](util[_0x6946('0xd')](_0x6946('0x1c'),QUERY,_0x58a1cc,_0x5abda3),{'type':dbH[_0x6946('0x15')][_0x6946('0x17')][_0x6946('0x1d')]}));}}}else{_0x5e864d['push'](dbH[_0x6946('0x15')][_0x6946('0x16')](QUERY,{'type':dbH['sequelize']['QueryTypes'][_0x6946('0x1d')]}));}var _0xaaa413=path['dirname'](PATH);var _0x305d6f=path[_0x6946('0x1e')](PATH,_0x6946('0x1f'));var _0x5db4ee=_0x50a2c5[_0x6946('0x12')]&&_0x5e864d[_0x6946('0x1a')]>0x1;var _0x8bc0b1=[];if(!fs[_0x6946('0x20')](path[_0x6946('0x21')](_0xaaa413,_0x305d6f))&&_0x5db4ee){fs['mkdirSync'](path[_0x6946('0x21')](_0xaaa413,_0x305d6f));}return BPromise[_0x6946('0x22')](_0x5e864d,function(_0x483985){_0x8bc0b1[_0x6946('0x1b')](_0x483985);})[_0x6946('0x14')](function(){for(var _0x5210b7=0x0;_0x5210b7<_0x8bc0b1[_0x6946('0x1a')];_0x5210b7+=0x1){var _0x5af6a0;var _0x215b1b=_0x8bc0b1[_0x5210b7];if(_0x5db4ee){_0x5af6a0=path[_0x6946('0x21')](_0xaaa413,_0x305d6f,util[_0x6946('0xd')](_0x6946('0x23'),_0x305d6f,_0x5210b7,_0x6946('0x24')));}else{_0x5af6a0=path[_0x6946('0x21')](_0xaaa413,util[_0x6946('0xd')](_0x6946('0x25'),_0x305d6f,_0x6946('0x24')));}fs[_0x6946('0x26')](_0x5af6a0,json2xls(_0x215b1b),_0x6946('0x27'));}})[_0x6946('0x14')](function(){if(_0x5db4ee){zipdir(path[_0x6946('0x21')](_0xaaa413,_0x305d6f),{'saveTo':path[_0x6946('0x21')](_0xaaa413,util['format']('%s.%s',_0x305d6f,_0x6946('0x28')))},function(_0x405caf,_0x49474c){});rimraf(path[_0x6946('0x21')](_0xaaa413,_0x305d6f),function(){});}})[_0x6946('0x14')](function(){logger[_0x6946('0xc')](util['format'](_0x6946('0x29'),EXTRACTED_REPORT_ID,_0x6946('0xf')));return analyticExtractedReport(_0x6946('0x2a'),_0x5db4ee?util['format'](_0x6946('0x25'),_0x305d6f,_0x5db4ee?_0x6946('0x28'):'xlsx'):null);});})[_0x6946('0x2b')](function(_0x16e1da){logger['info'](util[_0x6946('0xd')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'XLSX'),util['inspect'](_0x16e1da,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x6946('0x2c'));})[_0x6946('0x2d')](function(){process[_0x6946('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xe177=['argv','AnalyticExtractedReport','info','format','XLSX','split','splitSizeXlsx','then','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','Empty','length','num','push','query','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','.xlsx','mkdirSync','join','%s%d.%s','xlsx','%s.%s','writeFileSync','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','path','lodash','json2xls','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics'];(function(_0x3809f1,_0x5f527e){var _0x14acfd=function(_0x15f749){while(--_0x15f749){_0x3809f1['push'](_0x3809f1['shift']());}};_0x14acfd(++_0x5f527e);}(_0xe177,0xd3));var _0x7e17=function(_0x77b1b2,_0x1eb99a){_0x77b1b2=_0x77b1b2-0x0;var _0x5dc734=_0xe177[_0x77b1b2];return _0x5dc734;};'use strict';var util=require('util');var path=require(_0x7e17('0x0'));var _=require(_0x7e17('0x1'));var fs=require('fs');var json2xls=require(_0x7e17('0x2'));var BPromise=require('bluebird');var zipdir=require(_0x7e17('0x3'));var rimraf=require(_0x7e17('0x4'));var db=require(_0x7e17('0x5'))['db'];var dbH=require(_0x7e17('0x5'))[_0x7e17('0x6')];var logger=require(_0x7e17('0x7'))(_0x7e17('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0x7e17('0x9')][0x2]);var QUERY=process[_0x7e17('0x9')][0x3];var PATH=process[_0x7e17('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x1fed77,_0x5bc0cb){var _0x13feee={'status':_0x1fed77};var _0x33a3b2={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5bc0cb){_0x13feee['savename']=_0x5bc0cb;}return db[_0x7e17('0xa')]['update'](_0x13feee,_0x33a3b2);}function main(){var _0x121650=0x1388;var _0x1efd90;logger[_0x7e17('0xb')](util[_0x7e17('0xc')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x7e17('0xd')));return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x7e17('0xe'),_0x7e17('0xf')]})[_0x7e17('0x10')](function(_0x19e0a7){if(_0x19e0a7){_0x1efd90=_0x19e0a7;_0x121650=_0x1efd90[_0x7e17('0xf')]||0x1388;}})[_0x7e17('0x10')](function(){return dbH[_0x7e17('0x11')]['query'](util['format'](_0x7e17('0x12'),QUERY),{'type':dbH[_0x7e17('0x11')][_0x7e17('0x13')][_0x7e17('0x14')]});})[_0x7e17('0x10')](function(_0x5bdcba){if(!_0x5bdcba[0x0]['num']){return analyticExtractedReport(_0x7e17('0x15'));}var _0x46beff=[];var _0x50354e=0x0;var _0x34ab6b=!![];if(_0x1efd90[_0x7e17('0xe')]){if(_0x5bdcba&&_0x5bdcba[_0x7e17('0x16')]){var _0x3e1bb1=_0x5bdcba[0x0]['num']%(_0x50354e+_0x121650);for(;_0x34ab6b;_0x50354e+=_0x121650,_0x3e1bb1=_0x5bdcba[0x0][_0x7e17('0x17')]%(_0x50354e+_0x121650)){if(_0x3e1bb1==0x0||_0x3e1bb1==_0x5bdcba[0x0][_0x7e17('0x17')]){_0x34ab6b=![];}_0x46beff[_0x7e17('0x18')](dbH[_0x7e17('0x11')][_0x7e17('0x19')](util['format'](_0x7e17('0x1a'),QUERY,_0x121650,_0x50354e),{'type':dbH[_0x7e17('0x11')][_0x7e17('0x13')][_0x7e17('0x14')]}));}}}else{_0x46beff[_0x7e17('0x18')](dbH[_0x7e17('0x11')][_0x7e17('0x19')](QUERY,{'type':dbH['sequelize'][_0x7e17('0x13')][_0x7e17('0x14')]}));}var _0xcfb636=path[_0x7e17('0x1b')](PATH);var _0x1d0dda=path['basename'](PATH,_0x7e17('0x1c'));var _0x1e1a96=_0x1efd90['split']&&_0x46beff['length']>0x1;var _0x2483db=[];if(!fs['existsSync'](path['join'](_0xcfb636,_0x1d0dda))&&_0x1e1a96){fs[_0x7e17('0x1d')](path[_0x7e17('0x1e')](_0xcfb636,_0x1d0dda));}return BPromise['each'](_0x46beff,function(_0x2ac26d){_0x2483db[_0x7e17('0x18')](_0x2ac26d);})['then'](function(){for(var _0x20fd5f=0x0;_0x20fd5f<_0x2483db[_0x7e17('0x16')];_0x20fd5f+=0x1){var _0x5860bd;var _0x3c6562=_0x2483db[_0x20fd5f];if(_0x1e1a96){_0x5860bd=path[_0x7e17('0x1e')](_0xcfb636,_0x1d0dda,util[_0x7e17('0xc')](_0x7e17('0x1f'),_0x1d0dda,_0x20fd5f,_0x7e17('0x20')));}else{_0x5860bd=path['join'](_0xcfb636,util['format'](_0x7e17('0x21'),_0x1d0dda,'xlsx'));}fs[_0x7e17('0x22')](_0x5860bd,json2xls(_0x3c6562),'binary');}})[_0x7e17('0x10')](function(){if(_0x1e1a96){zipdir(path[_0x7e17('0x1e')](_0xcfb636,_0x1d0dda),{'saveTo':path['join'](_0xcfb636,util[_0x7e17('0xc')](_0x7e17('0x21'),_0x1d0dda,_0x7e17('0x23')))},function(_0x1f0828,_0x5b99e2){});rimraf(path['join'](_0xcfb636,_0x1d0dda),function(){});}})[_0x7e17('0x10')](function(){logger['info'](util[_0x7e17('0xc')](_0x7e17('0x24'),EXTRACTED_REPORT_ID,_0x7e17('0xd')));return analyticExtractedReport(_0x7e17('0x25'),_0x1e1a96?util[_0x7e17('0xc')]('%s.%s',_0x1d0dda,_0x1e1a96?_0x7e17('0x23'):_0x7e17('0x20')):null);});})[_0x7e17('0x26')](function(_0xbc6a08){logger[_0x7e17('0xb')](util[_0x7e17('0xc')](_0x7e17('0x27'),EXTRACTED_REPORT_ID,'XLSX'),util[_0x7e17('0x28')](_0xbc6a08,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x7e17('0x29'));})[_0x7e17('0x2a')](function(){process[_0x7e17('0x2b')](EXIT_CODE);});}main();
\ No newline at end of file
index 8684210..37a1578 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87cc=['CDR(prefix)=${EXTEN:0:','outboundrouteid=','none','_XCALLY_MIXMONITOR_FORMAT=','recordingFormat','wav','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','IntervalId','tag','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','answer','indexOf','app','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime','last','concat','Hangup','transaction','destroy','sortBy','error','rewrite','lodash','util','models','Interval','findAll','then','intervals','VoiceExtension','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','playback','hasOwnProperty','priority','extensions','extension','push','Set','format','type','inbound','VoiceExtensionId','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','context','CDR(routeid)=','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto('];(function(_0x3c44a0,_0x251004){var _0x16f84e=function(_0x28b4e2){while(--_0x28b4e2){_0x3c44a0['push'](_0x3c44a0['shift']());}};_0x16f84e(++_0x251004);}(_0x87cc,0x69));var _0xc87c=function(_0x2ef6f5,_0x2d0372){_0x2ef6f5=_0x2ef6f5-0x0;var _0x3e0028=_0x87cc[_0x2ef6f5];return _0x3e0028;};'use strict';var _=require(_0xc87c('0x0'));var util=require(_0xc87c('0x1'));function rewrite(_0x585928,_0x283d85){var _0x4ac5d3=this;return _0x585928[_0xc87c('0x2')][_0xc87c('0x3')][_0xc87c('0x4')]({'raw':!![]})[_0xc87c('0x5')](function(_0x329e4c){_0x4ac5d3[_0xc87c('0x6')]=_0x329e4c;return _0x585928[_0xc87c('0x2')][_0xc87c('0x7')][_0xc87c('0x4')]({'where':{'IntervalId':_0x283d85['IntervalId']},'raw':!![]});})[_0xc87c('0x5')](function(_0x7319fe){return _0x585928[_0xc87c('0x2')][_0xc87c('0x7')][_0xc87c('0x4')]({'where':{'exten':{'$in':_[_0xc87c('0x8')](_[_0xc87c('0x9')](_0x7319fe,_0xc87c('0xa')))}},'order':[{'raw':_0xc87c('0xb')}],'raw':!![]});})[_0xc87c('0x5')](function(_0x6cc6c2){var _0x506cf7=_['filter'](_0x6cc6c2,{'priority':'1'});var _0x3150ae=_[_0xc87c('0xc')](_0x6cc6c2,{'isApp':0x1});var _0x5a9e31=_[_0xc87c('0xd')](_0x3150ae,_0xc87c('0xa'));var _0x19422c=['queue',_0xc87c('0xe')];var _0x573216=[];var _0x511c15=[];for(var _0x45d554 in _0x5a9e31){if(_0x5a9e31[_0xc87c('0xf')](_0x45d554)){_0x4ac5d3[_0xc87c('0x10')]=0x2;_0x4ac5d3[_0xc87c('0x11')]=[];_0x4ac5d3[_0xc87c('0x12')]=_['find'](_0x506cf7,{'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')]});_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0]['type'],'app':_0xc87c('0x14'),'appdata':util[_0xc87c('0x15')]('CDR(type)=%s',_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')]),'context':_0x5a9e31[_0x45d554][0x0]['context'],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']});if(_0x5a9e31[_0x45d554][0x0]['type']===_0xc87c('0x17')){_0x4ac5d3[_0xc87c('0x11')]['push']({'type':_0x5a9e31[_0x45d554][0x0]['type'],'app':_0xc87c('0x14'),'appdata':'CDR(routeid)='+_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')],'context':_0x5a9e31[_0x45d554][0x0]['context'],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3['priority']++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});}else if(_0x5a9e31[_0x45d554][0x0]['type']===_0xc87c('0x19')){if(_0x4ac5d3[_0xc87c('0x12')]){_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':'Set','appdata':_0xc87c('0x1a')+(_0x4ac5d3['extension'][_0xc87c('0x1b')]?_0xc87c('0x1c')+_0x4ac5d3[_0xc87c('0x12')][_0xc87c('0x1b')]+'}':_0xc87c('0x1d')),'context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3['priority']++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});}_0x4ac5d3['extensions'][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':_0xc87c('0x1f')+_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')],'context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});var _0x23bce0=_0x4ac5d3[_0xc87c('0x10')]++;_0x4ac5d3['extensions']['push']({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x20'),'appdata':_0xc87c('0x21')+(_0x23bce0+0x2)+_0xc87c('0x22')+(_0x23bce0+0x1)+')','context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x23bce0,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']});if(_0x4ac5d3[_0xc87c('0x12')]){_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':_0x4ac5d3[_0xc87c('0x12')][_0xc87c('0x1b')]?_0xc87c('0x23')+_0x4ac5d3[_0xc87c('0x12')]['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0]['exten'],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']});}_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':_0xc87c('0x24')+_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')],'context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0]['exten'],'priority':_0x4ac5d3['priority']++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});if(_0x4ac5d3[_0xc87c('0x12')]&&_0x4ac5d3['extension']['hasOwnProperty']('recordingFormat')&&_0x4ac5d3[_0xc87c('0x12')]['recordingFormat']!==_0xc87c('0x25')){_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0]['exten'],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']});_0x4ac5d3['extensions'][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':_0xc87c('0x26')+_0x4ac5d3['extension'][_0xc87c('0x27')]||_0xc87c('0x28'),'context':_0x5a9e31[_0x45d554][0x0]['context'],'exten':_0x5a9e31[_0x45d554][0x0]['exten'],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']});}}_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']});_0x4ac5d3['extensions']['push']({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':_0xc87c('0x29'),'context':_0x5a9e31[_0x45d554][0x0]['context'],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3['priority']++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':_0xc87c('0x2a'),'context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});for(var _0x35174f=0x0,_0x2bb1d3=0x0;_0x35174f<_0x5a9e31[_0x45d554][_0xc87c('0x2b')];_0x35174f+=0x1,_0x2bb1d3=0x0){var _0x12bbb2=_0x5a9e31[_0x45d554][_0x35174f];if(_0x12bbb2[_0xc87c('0x16')]){_0x12bbb2['type']=_0x12bbb2['type'][_0xc87c('0x2c')]();}var _0x2e2a1a=[];var _0x521c00=[];delete _0x12bbb2['id'];delete _0x12bbb2[_0xc87c('0x2d')];delete _0x12bbb2[_0xc87c('0x2e')];var _0x45cefd=_0x12bbb2[_0xc87c('0x2f')]!==_0xc87c('0x30')?[_0x12bbb2[_0xc87c('0x2f')]]:_0x12bbb2[_0xc87c('0x31')]?_[_0xc87c('0x9')](_['filter'](_0x4ac5d3['intervals'],{'IntervalId':_0x12bbb2[_0xc87c('0x31')]}),_0xc87c('0x2f')):[];if(_0x12bbb2[_0xc87c('0xf')]('tag')){if(_0x12bbb2[_0xc87c('0x32')]&&_0x12bbb2[_0xc87c('0x32')]!=='--'){_0x2e2a1a[_0xc87c('0x13')]({'type':_0x12bbb2[_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':'CDR(tag)='+_0x12bbb2[_0xc87c('0x32')],'context':_0x12bbb2[_0xc87c('0x1e')],'exten':_0x12bbb2[_0xc87c('0xa')],'priority':_0x45cefd[_0xc87c('0x2b')]+_0x4ac5d3[_0xc87c('0x10')]+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});}}if(_0x12bbb2[_0xc87c('0x16')]===_0xc87c('0x19')&&_0x12bbb2[_0xc87c('0xf')](_0xc87c('0x33'))){if(_0x12bbb2[_0xc87c('0x33')]){_0x2e2a1a['push']({'type':_0x12bbb2[_0xc87c('0x16')],'app':'ExecIf','appdata':_0xc87c('0x34')+_0x12bbb2['callerID']+')','context':_0x12bbb2['context'],'exten':_0x12bbb2[_0xc87c('0xa')],'priority':_0x45cefd[_0xc87c('0x2b')]+_0x4ac5d3[_0xc87c('0x10')]+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});}else{_0x2e2a1a[_0xc87c('0x13')]({'type':_0x12bbb2[_0xc87c('0x16')],'app':_0xc87c('0x20'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x12bbb2[_0xc87c('0x1e')],'exten':_0x12bbb2[_0xc87c('0xa')],'priority':_0x45cefd[_0xc87c('0x2b')]+_0x4ac5d3[_0xc87c('0x10')]+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});}}if(_0x12bbb2['hasOwnProperty'](_0xc87c('0x35'))){if(_0x19422c[_0xc87c('0x36')](_0x12bbb2[_0xc87c('0x37')][_0xc87c('0x2c')]())>=0x0&&_0x12bbb2['appType']!==_0xc87c('0x38')){if(_0x12bbb2[_0xc87c('0x35')]){_0x2e2a1a[_0xc87c('0x13')]({'type':_0x12bbb2[_0xc87c('0x16')],'app':_0xc87c('0x20'),'appdata':_0xc87c('0x39'),'context':_0x12bbb2[_0xc87c('0x1e')],'exten':_0x12bbb2['exten'],'priority':_0x45cefd['length']+_0x4ac5d3[_0xc87c('0x10')]+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});_0x2e2a1a['push']({'type':_0x12bbb2['type'],'app':_0xc87c('0x14'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x12bbb2[_0xc87c('0x1e')],'exten':_0x12bbb2[_0xc87c('0xa')],'priority':_0x45cefd[_0xc87c('0x2b')]+_0x4ac5d3['priority']+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});}else{_0x2e2a1a[_0xc87c('0x13')]({'type':_0x12bbb2[_0xc87c('0x16')],'app':_0xc87c('0x20'),'appdata':_0xc87c('0x3a'),'context':_0x12bbb2['context'],'exten':_0x12bbb2[_0xc87c('0xa')],'priority':_0x45cefd['length']+_0x4ac5d3[_0xc87c('0x10')]+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});_0x2e2a1a[_0xc87c('0x13')]({'type':_0x12bbb2['type'],'app':_0xc87c('0x14'),'appdata':_0xc87c('0x3b'),'context':_0x12bbb2[_0xc87c('0x1e')],'exten':_0x12bbb2[_0xc87c('0xa')],'priority':_0x45cefd[_0xc87c('0x2b')]+_0x4ac5d3[_0xc87c('0x10')]+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});}}}for(var _0x49ea8b=0x0;_0x49ea8b<_0x45cefd[_0xc87c('0x2b')];_0x49ea8b+=0x1){var _0x1b842d=_0x4ac5d3['priority']+_0x45cefd['length'];var _0x850b92=_0x49ea8b===_0x45cefd[_0xc87c('0x2b')]-0x1?_0x4ac5d3[_0xc87c('0x10')]+_0x2e2a1a['length']+_0x521c00[_0xc87c('0x2b')]+0x2:_0x4ac5d3[_0xc87c('0x10')]+_0x49ea8b+0x1;_0x2e2a1a[_0xc87c('0x3c')](_0x49ea8b,0x0,{'type':_0x12bbb2[_0xc87c('0x16')],'app':_0xc87c('0x3d'),'appdata':_0x45cefd[_0x49ea8b]+'?'+_0x12bbb2[_0xc87c('0x1e')]+',${EXTEN},'+_0x1b842d+':'+_0x12bbb2[_0xc87c('0x1e')]+',${EXTEN},'+_0x850b92,'exten':_0x12bbb2[_0xc87c('0xa')],'context':_0x12bbb2[_0xc87c('0x1e')],'priority':_0x4ac5d3[_0xc87c('0x10')]+_0x49ea8b,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});}_0x12bbb2[_0xc87c('0x10')]=_0x2e2a1a['length']?_[_0xc87c('0x3e')](_0x2e2a1a)[_0xc87c('0x10')]+0x1:_0x4ac5d3[_0xc87c('0x10')];_0x4ac5d3[_0xc87c('0x10')]=(_0x521c00[_0xc87c('0x2b')]?_[_0xc87c('0x3e')](_0x521c00)[_0xc87c('0x10')]:_0x12bbb2[_0xc87c('0x10')])+0x1;_0x4ac5d3[_0xc87c('0x11')]=_[_0xc87c('0x3f')](_0x4ac5d3[_0xc87c('0x11')],_0x2e2a1a,[_0x12bbb2],_0x521c00);}_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0]['type'],'app':_0xc87c('0x40'),'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'priority':_0x4ac5d3[_0xc87c('0x10')],'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});_0x573216[_0xc87c('0x13')](_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']);_0x511c15=_[_0xc87c('0x3f')](_0x511c15,_0x4ac5d3[_0xc87c('0x11')]);}}return _0x585928[_0xc87c('0x41')](function(_0x2ec288){return _0x585928['models'][_0xc87c('0x7')][_0xc87c('0x42')]({'where':{'VoiceExtensionId':{'$in':_0x573216}},'transaction':_0x2ec288})['then'](function(_0x346867){return _0x585928['models'][_0xc87c('0x7')]['bulkCreate'](_[_0xc87c('0x43')](_0x511c15,_0xc87c('0x10')),{'transaction':_0x2ec288});});});})['catch'](function(_0x229158){console[_0xc87c('0x44')](_0x229158);});}exports[_0xc87c('0x45')]=rewrite;
\ No newline at end of file
+var _0x9f19=['intervals','IntervalId','VoiceExtension','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','hasOwnProperty','extensions','extension','push','Set','CDR(type)=%s','type','context','priority','VoiceExtensionId','inbound','CDR(routeid)=','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','createdAt','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','toLowerCase','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime','last','concat','Hangup','transaction','bulkCreate','sortBy','error','lodash','util','models','findAll','then'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x9f19,0x168));var _0x99f1=function(_0x5eb8dc,_0x3cdacb){_0x5eb8dc=_0x5eb8dc-0x0;var _0x1e54d3=_0x9f19[_0x5eb8dc];return _0x1e54d3;};'use strict';var _=require(_0x99f1('0x0'));var util=require(_0x99f1('0x1'));function rewrite(_0x1d8687,_0x573227){var _0x2371f5=this;return _0x1d8687[_0x99f1('0x2')]['Interval'][_0x99f1('0x3')]({'raw':!![]})[_0x99f1('0x4')](function(_0x3541ed){_0x2371f5[_0x99f1('0x5')]=_0x3541ed;return _0x1d8687[_0x99f1('0x2')]['VoiceExtension'][_0x99f1('0x3')]({'where':{'IntervalId':_0x573227[_0x99f1('0x6')]},'raw':!![]});})[_0x99f1('0x4')](function(_0x48871b){return _0x1d8687[_0x99f1('0x2')][_0x99f1('0x7')][_0x99f1('0x3')]({'where':{'exten':{'$in':_[_0x99f1('0x8')](_[_0x99f1('0x9')](_0x48871b,_0x99f1('0xa')))}},'order':[{'raw':_0x99f1('0xb')}],'raw':!![]});})[_0x99f1('0x4')](function(_0x356752){var _0x351706=_[_0x99f1('0xc')](_0x356752,{'priority':'1'});var _0x361ea5=_[_0x99f1('0xc')](_0x356752,{'isApp':0x1});var _0x4b552d=_[_0x99f1('0xd')](_0x361ea5,_0x99f1('0xa'));var _0x21a54c=[_0x99f1('0xe'),_0x99f1('0xf')];var _0xfad20e=[];var _0x533baa=[];for(var _0x30c674 in _0x4b552d){if(_0x4b552d[_0x99f1('0x10')](_0x30c674)){_0x2371f5['priority']=0x2;_0x2371f5[_0x99f1('0x11')]=[];_0x2371f5[_0x99f1('0x12')]=_['find'](_0x351706,{'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')]});_0x2371f5['extensions'][_0x99f1('0x13')]({'type':_0x4b552d[_0x30c674][0x0]['type'],'app':_0x99f1('0x14'),'appdata':util['format'](_0x99f1('0x15'),_0x4b552d[_0x30c674][0x0][_0x99f1('0x16')]),'context':_0x4b552d[_0x30c674][0x0][_0x99f1('0x17')],'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')],'priority':_0x2371f5[_0x99f1('0x18')]++,'VoiceExtensionId':_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]});if(_0x4b552d[_0x30c674][0x0]['type']===_0x99f1('0x1a')){_0x2371f5[_0x99f1('0x11')][_0x99f1('0x13')]({'type':_0x4b552d[_0x30c674][0x0][_0x99f1('0x16')],'app':_0x99f1('0x14'),'appdata':_0x99f1('0x1b')+_0x4b552d[_0x30c674][0x0]['VoiceExtensionId'],'context':_0x4b552d[_0x30c674][0x0]['context'],'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')],'priority':_0x2371f5['priority']++,'VoiceExtensionId':_0x4b552d[_0x30c674][0x0]['VoiceExtensionId']});}else if(_0x4b552d[_0x30c674][0x0]['type']===_0x99f1('0x1c')){if(_0x2371f5[_0x99f1('0x12')]){_0x2371f5[_0x99f1('0x11')]['push']({'type':_0x4b552d[_0x30c674][0x0][_0x99f1('0x16')],'app':'Set','appdata':_0x99f1('0x1d')+(_0x2371f5[_0x99f1('0x12')][_0x99f1('0x1e')]?_0x99f1('0x1f')+_0x2371f5[_0x99f1('0x12')][_0x99f1('0x1e')]+'}':_0x99f1('0x20')),'context':_0x4b552d[_0x30c674][0x0][_0x99f1('0x17')],'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')],'priority':_0x2371f5['priority']++,'VoiceExtensionId':_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]});}_0x2371f5[_0x99f1('0x11')][_0x99f1('0x13')]({'type':_0x4b552d[_0x30c674][0x0]['type'],'app':_0x99f1('0x14'),'appdata':_0x99f1('0x1b')+_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')],'context':_0x4b552d[_0x30c674][0x0][_0x99f1('0x17')],'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')],'priority':_0x2371f5[_0x99f1('0x18')]++,'VoiceExtensionId':_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]});var _0x4ec51c=_0x2371f5[_0x99f1('0x18')]++;_0x2371f5[_0x99f1('0x11')]['push']({'type':_0x4b552d[_0x30c674][0x0][_0x99f1('0x16')],'app':_0x99f1('0x21'),'appdata':_0x99f1('0x22')+(_0x4ec51c+0x2)+'):Goto('+(_0x4ec51c+0x1)+')','context':_0x4b552d[_0x30c674][0x0]['context'],'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')],'priority':_0x4ec51c,'VoiceExtensionId':_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]});if(_0x2371f5[_0x99f1('0x12')]){_0x2371f5[_0x99f1('0x11')][_0x99f1('0x13')]({'type':_0x4b552d[_0x30c674][0x0][_0x99f1('0x16')],'app':_0x99f1('0x14'),'appdata':_0x2371f5[_0x99f1('0x12')]['cutdigits']?_0x99f1('0x23')+_0x2371f5[_0x99f1('0x12')][_0x99f1('0x1e')]+'}':_0x99f1('0x24'),'context':_0x4b552d[_0x30c674][0x0][_0x99f1('0x17')],'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')],'priority':_0x2371f5[_0x99f1('0x18')]++,'VoiceExtensionId':_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]});}_0x2371f5[_0x99f1('0x11')][_0x99f1('0x13')]({'type':_0x4b552d[_0x30c674][0x0]['type'],'app':_0x99f1('0x14'),'appdata':_0x99f1('0x25')+_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')],'context':_0x4b552d[_0x30c674][0x0][_0x99f1('0x17')],'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')],'priority':_0x2371f5[_0x99f1('0x18')]++,'VoiceExtensionId':_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]});if(_0x2371f5[_0x99f1('0x12')]&&_0x2371f5['extension'][_0x99f1('0x10')](_0x99f1('0x26'))&&_0x2371f5['extension'][_0x99f1('0x26')]!==_0x99f1('0x27')){_0x2371f5[_0x99f1('0x11')][_0x99f1('0x13')]({'type':_0x4b552d[_0x30c674][0x0][_0x99f1('0x16')],'app':_0x99f1('0x14'),'appdata':_0x99f1('0x28'),'context':_0x4b552d[_0x30c674][0x0][_0x99f1('0x17')],'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')],'priority':_0x2371f5[_0x99f1('0x18')]++,'VoiceExtensionId':_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]});_0x2371f5[_0x99f1('0x11')][_0x99f1('0x13')]({'type':_0x4b552d[_0x30c674][0x0][_0x99f1('0x16')],'app':_0x99f1('0x14'),'appdata':_0x99f1('0x29')+_0x2371f5['extension'][_0x99f1('0x26')]||_0x99f1('0x2a'),'context':_0x4b552d[_0x30c674][0x0][_0x99f1('0x17')],'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')],'priority':_0x2371f5['priority']++,'VoiceExtensionId':_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]});}}_0x2371f5['extensions'][_0x99f1('0x13')]({'type':_0x4b552d[_0x30c674][0x0]['type'],'app':'Set','appdata':_0x99f1('0x2b'),'context':_0x4b552d[_0x30c674][0x0][_0x99f1('0x17')],'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')],'priority':_0x2371f5[_0x99f1('0x18')]++,'VoiceExtensionId':_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]});_0x2371f5[_0x99f1('0x11')]['push']({'type':_0x4b552d[_0x30c674][0x0][_0x99f1('0x16')],'app':_0x99f1('0x14'),'appdata':_0x99f1('0x2c'),'context':_0x4b552d[_0x30c674][0x0][_0x99f1('0x17')],'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')],'priority':_0x2371f5[_0x99f1('0x18')]++,'VoiceExtensionId':_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]});_0x2371f5[_0x99f1('0x11')][_0x99f1('0x13')]({'type':_0x4b552d[_0x30c674][0x0][_0x99f1('0x16')],'app':'Set','appdata':_0x99f1('0x2d'),'context':_0x4b552d[_0x30c674][0x0][_0x99f1('0x17')],'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')],'priority':_0x2371f5[_0x99f1('0x18')]++,'VoiceExtensionId':_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]});for(var _0x15c6fe=0x0,_0x42fb55=0x0;_0x15c6fe<_0x4b552d[_0x30c674][_0x99f1('0x2e')];_0x15c6fe+=0x1,_0x42fb55=0x0){var _0x128025=_0x4b552d[_0x30c674][_0x15c6fe];if(_0x128025[_0x99f1('0x16')]){_0x128025[_0x99f1('0x16')]=_0x128025[_0x99f1('0x16')]['toLowerCase']();}var _0x4c4d99=[];var _0x7cc91c=[];delete _0x128025['id'];delete _0x128025[_0x99f1('0x2f')];delete _0x128025[_0x99f1('0x30')];var _0x3b0a65=_0x128025[_0x99f1('0x31')]!==_0x99f1('0x32')?[_0x128025[_0x99f1('0x31')]]:_0x128025[_0x99f1('0x6')]?_[_0x99f1('0x9')](_[_0x99f1('0xc')](_0x2371f5[_0x99f1('0x5')],{'IntervalId':_0x128025[_0x99f1('0x6')]}),_0x99f1('0x31')):[];if(_0x128025[_0x99f1('0x10')](_0x99f1('0x33'))){if(_0x128025[_0x99f1('0x33')]&&_0x128025[_0x99f1('0x33')]!=='--'){_0x4c4d99['push']({'type':_0x128025[_0x99f1('0x16')],'app':_0x99f1('0x14'),'appdata':_0x99f1('0x34')+_0x128025[_0x99f1('0x33')],'context':_0x128025[_0x99f1('0x17')],'exten':_0x128025['exten'],'priority':_0x3b0a65['length']+_0x2371f5[_0x99f1('0x18')]+_0x42fb55++,'VoiceExtensionId':_0x128025['VoiceExtensionId']});}}if(_0x128025[_0x99f1('0x16')]==='outbound'&&_0x128025[_0x99f1('0x10')](_0x99f1('0x35'))){if(_0x128025[_0x99f1('0x35')]){_0x4c4d99['push']({'type':_0x128025[_0x99f1('0x16')],'app':_0x99f1('0x21'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x128025[_0x99f1('0x35')]+')','context':_0x128025[_0x99f1('0x17')],'exten':_0x128025[_0x99f1('0xa')],'priority':_0x3b0a65['length']+_0x2371f5['priority']+_0x42fb55++,'VoiceExtensionId':_0x128025[_0x99f1('0x19')]});}else{_0x4c4d99[_0x99f1('0x13')]({'type':_0x128025[_0x99f1('0x16')],'app':_0x99f1('0x21'),'appdata':_0x99f1('0x36'),'context':_0x128025['context'],'exten':_0x128025[_0x99f1('0xa')],'priority':_0x3b0a65[_0x99f1('0x2e')]+_0x2371f5[_0x99f1('0x18')]+_0x42fb55++,'VoiceExtensionId':_0x128025[_0x99f1('0x19')]});}}if(_0x128025[_0x99f1('0x10')](_0x99f1('0x37'))){if(_0x21a54c[_0x99f1('0x38')](_0x128025[_0x99f1('0x39')][_0x99f1('0x3a')]())>=0x0&&_0x128025[_0x99f1('0x3b')]!==_0x99f1('0x3c')){if(_0x128025[_0x99f1('0x37')]){_0x4c4d99['push']({'type':_0x128025[_0x99f1('0x16')],'app':_0x99f1('0x21'),'appdata':_0x99f1('0x3d'),'context':_0x128025[_0x99f1('0x17')],'exten':_0x128025[_0x99f1('0xa')],'priority':_0x3b0a65[_0x99f1('0x2e')]+_0x2371f5[_0x99f1('0x18')]+_0x42fb55++,'VoiceExtensionId':_0x128025[_0x99f1('0x19')]});_0x4c4d99['push']({'type':_0x128025[_0x99f1('0x16')],'app':_0x99f1('0x14'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x128025['context'],'exten':_0x128025[_0x99f1('0xa')],'priority':_0x3b0a65[_0x99f1('0x2e')]+_0x2371f5[_0x99f1('0x18')]+_0x42fb55++,'VoiceExtensionId':_0x128025[_0x99f1('0x19')]});}else{_0x4c4d99[_0x99f1('0x13')]({'type':_0x128025[_0x99f1('0x16')],'app':_0x99f1('0x21'),'appdata':_0x99f1('0x3e'),'context':_0x128025['context'],'exten':_0x128025['exten'],'priority':_0x3b0a65[_0x99f1('0x2e')]+_0x2371f5[_0x99f1('0x18')]+_0x42fb55++,'VoiceExtensionId':_0x128025[_0x99f1('0x19')]});_0x4c4d99[_0x99f1('0x13')]({'type':_0x128025['type'],'app':_0x99f1('0x14'),'appdata':_0x99f1('0x3f'),'context':_0x128025[_0x99f1('0x17')],'exten':_0x128025['exten'],'priority':_0x3b0a65[_0x99f1('0x2e')]+_0x2371f5[_0x99f1('0x18')]+_0x42fb55++,'VoiceExtensionId':_0x128025['VoiceExtensionId']});}}}for(var _0x286e25=0x0;_0x286e25<_0x3b0a65['length'];_0x286e25+=0x1){var _0x19e9e8=_0x2371f5[_0x99f1('0x18')]+_0x3b0a65[_0x99f1('0x2e')];var _0x26ae9b=_0x286e25===_0x3b0a65[_0x99f1('0x2e')]-0x1?_0x2371f5[_0x99f1('0x18')]+_0x4c4d99[_0x99f1('0x2e')]+_0x7cc91c[_0x99f1('0x2e')]+0x2:_0x2371f5['priority']+_0x286e25+0x1;_0x4c4d99[_0x99f1('0x40')](_0x286e25,0x0,{'type':_0x128025[_0x99f1('0x16')],'app':_0x99f1('0x41'),'appdata':_0x3b0a65[_0x286e25]+'?'+_0x128025[_0x99f1('0x17')]+',${EXTEN},'+_0x19e9e8+':'+_0x128025[_0x99f1('0x17')]+',${EXTEN},'+_0x26ae9b,'exten':_0x128025[_0x99f1('0xa')],'context':_0x128025[_0x99f1('0x17')],'priority':_0x2371f5['priority']+_0x286e25,'VoiceExtensionId':_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]});}_0x128025[_0x99f1('0x18')]=_0x4c4d99[_0x99f1('0x2e')]?_[_0x99f1('0x42')](_0x4c4d99)[_0x99f1('0x18')]+0x1:_0x2371f5[_0x99f1('0x18')];_0x2371f5[_0x99f1('0x18')]=(_0x7cc91c[_0x99f1('0x2e')]?_[_0x99f1('0x42')](_0x7cc91c)[_0x99f1('0x18')]:_0x128025[_0x99f1('0x18')])+0x1;_0x2371f5[_0x99f1('0x11')]=_[_0x99f1('0x43')](_0x2371f5[_0x99f1('0x11')],_0x4c4d99,[_0x128025],_0x7cc91c);}_0x2371f5[_0x99f1('0x11')][_0x99f1('0x13')]({'type':_0x4b552d[_0x30c674][0x0][_0x99f1('0x16')],'app':_0x99f1('0x44'),'exten':_0x4b552d[_0x30c674][0x0][_0x99f1('0xa')],'context':_0x4b552d[_0x30c674][0x0][_0x99f1('0x17')],'priority':_0x2371f5[_0x99f1('0x18')],'VoiceExtensionId':_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]});_0xfad20e[_0x99f1('0x13')](_0x4b552d[_0x30c674][0x0][_0x99f1('0x19')]);_0x533baa=_[_0x99f1('0x43')](_0x533baa,_0x2371f5[_0x99f1('0x11')]);}}return _0x1d8687[_0x99f1('0x45')](function(_0x4d3ad8){return _0x1d8687[_0x99f1('0x2')][_0x99f1('0x7')]['destroy']({'where':{'VoiceExtensionId':{'$in':_0xfad20e}},'transaction':_0x4d3ad8})[_0x99f1('0x4')](function(_0x19228d){return _0x1d8687[_0x99f1('0x2')][_0x99f1('0x7')][_0x99f1('0x46')](_[_0x99f1('0x47')](_0x533baa,_0x99f1('0x18')),{'transaction':_0x4d3ad8});});});})['catch'](function(_0x29022d){console[_0x99f1('0x48')](_0x29022d);});}exports['rewrite']=rewrite;
\ No newline at end of file
index 94faa3b..61207ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f77=['email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','CmContact','create','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','insert','cm_hopper','fromQuery','createdAt','updatedAt','field','NOW()','from','cm_contacts','deletedAt\x20IS\x20NULL','toString','where','phone\x20NOT\x20IN\x20(?)','select','\x20=\x20?','into','scheduledAt','ContactId','id\x20IN\x20?','str','calleridnum','cm_hopper_final','phone\x20IS\x20NOT\x20NULL','cm_hopper_black','VoiceQueue','findAll','outbound','CmList','Lists','get','dialCheckDuplicateType','always','sequelize','VoiceQueueId','onlyIfOpen','query','all','BlackLists','Campaign','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','resume','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','resolve','createReadStream','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','util','lodash','squel','papaparse','../../../mysqldb','../../../config/logger','api','redis','defaults','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','hasOwnProperty','data','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!'];(function(_0x104112,_0x342eb6){var _0x394ab4=function(_0x48db18){while(--_0x48db18){_0x104112['push'](_0x104112['shift']());}};_0x394ab4(++_0x342eb6);}(_0x5f77,0x124));var _0x75f7=function(_0x576170,_0x1712ae){_0x576170=_0x576170-0x0;var _0x397c70=_0x5f77[_0x576170];return _0x397c70;};'use strict';var BPromise=require('bluebird');var util=require(_0x75f7('0x0'));var _=require(_0x75f7('0x1'));var fs=require('fs');var squel=require(_0x75f7('0x2'));var Papa=require(_0x75f7('0x3'));var Redis=require('ioredis');var db=require(_0x75f7('0x4'))['db'];var config=require('../../../config/environment');var logger=require(_0x75f7('0x5'))(_0x75f7('0x6'));config[_0x75f7('0x7')]=_[_0x75f7('0x8')](config[_0x75f7('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x75f7('0x9'))(new Redis(config[_0x75f7('0x7')]));require(_0x75f7('0xa'))[_0x75f7('0xb')](socket);try{if(!process[_0x75f7('0xc')][0x2]||process[_0x75f7('0xc')][0x2]===_0x75f7('0xd')||process['argv'][0x2]===_0x75f7('0xe')){throw new Error(_0x75f7('0xf'));}var FILEPATH=process['argv'][0x2];if(!process[_0x75f7('0xc')][0x3]||process['argv'][0x3]==='undefined'||process[_0x75f7('0xc')][0x3]===_0x75f7('0xe')||!process[_0x75f7('0xc')][0x4]||process['argv'][0x4]===_0x75f7('0xd')||process[_0x75f7('0xc')][0x4]===_0x75f7('0xe')){throw new Error(_0x75f7('0x10'));}var FIELDS=_['zipObject'](process[_0x75f7('0xc')][0x3][_0x75f7('0x11')](','),process['argv'][0x4][_0x75f7('0x11')](','));if(!process[_0x75f7('0xc')][0x5]||process[_0x75f7('0xc')][0x5]===_0x75f7('0xd')||process[_0x75f7('0xc')][0x5]==='null'){throw new Error(_0x75f7('0x12'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0x75f7('0xc')][0x6]&&process[_0x75f7('0xc')][0x6]!==_0x75f7('0xd')&&process[_0x75f7('0xc')][0x6]!=='null'?process[_0x75f7('0xc')][0x6]:null;var DUPLICATES=process[_0x75f7('0xc')][0x7]&&process['argv'][0x7]!==_0x75f7('0xd')&&process[_0x75f7('0xc')][0x7]!=='null'?process[_0x75f7('0xc')][0x7]:null;if(!process[_0x75f7('0xc')][0x8]||process[_0x75f7('0xc')][0x8]==='undefined'||process['argv'][0x8]==='null'){throw new Error(_0x75f7('0x13'));}var SOCKET_TIMESTAMP=process[_0x75f7('0xc')][0x8];}catch(_0x3e74ad){logger[_0x75f7('0x14')](_0x3e74ad);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(_0x1e51a8,_0x15bac8,_0xcd5049,_0x140c1c){var _0x4d90e3={'message':_0x15bac8};_0x4d90e3[_0x1e51a8]=!![];if(_0xcd5049){_0x4d90e3[_0x75f7('0x15')]=_0xcd5049;}if(_0x140c1c){_0x4d90e3[_0x75f7('0x16')]=_0x140c1c;}return _0x4d90e3;}function isEmail(_0x239699){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))*$/[_0x75f7('0x17')](_0x239699);}function checkRow(_0x116104,_0x6b3153,_0x58153d){return new BPromise(function(_0x8ee91,_0x5a8f18){if(_['isNil'](_0x116104)){return _0x5a8f18(handleCheckRowError(_0x75f7('0x14'),_0x75f7('0x18'),null,_0x58153d));}if(_0x116104['errors']&&_0x116104[_0x75f7('0x19')][_0x75f7('0x1a')]){var _0x3ed0d3=_[_0x75f7('0x1b')](_0x116104[_0x75f7('0x19')],_0x75f7('0x1c'))[_0x75f7('0x1d')](';');return _0x5a8f18(handleCheckRowError(_0x75f7('0x14'),_0x3ed0d3,null,_0x58153d));}var _0x1f7ab4={};for(var _0xaf0c30 in FIELDS){if(FIELDS[_0x75f7('0x1e')](_0xaf0c30)&&FIELDS[_0xaf0c30]){_0x1f7ab4[_0xaf0c30]=_0x116104['data'][0x0][FIELDS[_0xaf0c30]]||_0x116104[_0x75f7('0x1f')][0x0]['\ufeff'+FIELDS[_0xaf0c30]];}}if(!_0x1f7ab4['firstName']){return _0x5a8f18(handleCheckRowError('error',_0x75f7('0x20'),null,_0x58153d));}if(!_0x1f7ab4[_0x75f7('0x21')]){return _0x5a8f18(handleCheckRowError(_0x75f7('0x14'),_0x75f7('0x22'),null,_0x58153d));}if(_0x1f7ab4['birthDate']){var _0x225a2a=moment(_0x1f7ab4[_0x75f7('0x23')],'YYYY-MM-DD');if(!_0x225a2a[_0x75f7('0x24')]()){return _0x5a8f18(handleCheckRowError('error',_0x75f7('0x25'),null,_0x58153d));}}if(_0x1f7ab4[_0x75f7('0x26')]){if(!isEmail(_0x1f7ab4['email'])){return _0x5a8f18(handleCheckRowError(_0x75f7('0x14'),_0x75f7('0x27'),null,_0x58153d));}}_0x1f7ab4[_0x75f7('0x28')]=LISTID;_0x1f7ab4[_0x75f7('0x29')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x75f7('0x1a')]&&_0x6b3153){var _0x9df965={};for(var _0x484590=0x0,_0x3d1539=DUPLICATES[_0x75f7('0x1a')];_0x484590<_0x3d1539;_0x484590+=0x1){_0x9df965[DUPLICATES[_0x484590]]=_0x1f7ab4[DUPLICATES[_0x484590]];}var _0xf60b2c=_[_0x75f7('0x2a')](_0x6b3153,_0x9df965);if(_0xf60b2c){return _0x5a8f18(handleCheckRowError('duplicate','Duplicate\x20Contact',_0xf60b2c,_0x58153d));}}return db[_0x75f7('0x2b')][_0x75f7('0x2c')](_0x1f7ab4,{'raw':!![],'hooks':![],'fields':_['keys'](_0x1f7ab4)})[_0x75f7('0x2d')](function(_0x3dabbf){if(DUPLICATES&&DUPLICATES['length']&&_0x6b3153){_0x6b3153[_0x75f7('0x2e')](_[_0x75f7('0x2f')](_0x1f7ab4,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x3dabbf['id'];return _0x8ee91();})[_0x75f7('0x30')](function(_0x58336f){return _0x5a8f18(handleCheckRowError(_0x75f7('0x14'),_0x75f7('0x31')+(_0x58336f[_0x75f7('0x1c')]||JSON[_0x75f7('0x32')](_0x58336f)),null,_0x58153d));});});}function checkHopper(){function _0x4f2270(){return function(_0x2e0028){logger[_0x75f7('0x14')](_0x75f7('0x33'),_0x75f7('0x34'),util[_0x75f7('0x35')](_0x2e0028,{'showHidden':![],'depth':null}));};}var _0x27b9cc=function(_0x4d5d07,_0x514d87){var _0x1571ed=squel[_0x75f7('0x36')]()['into'](_0x75f7('0x37'))[_0x75f7('0x38')](['phone','scheduledAt','ContactId','ListId',_0x514d87,_0x75f7('0x39'),_0x75f7('0x3a')],squel['select']()[_0x75f7('0x3b')](_0x75f7('0x21'),'phone')[_0x75f7('0x3b')](_0x75f7('0x3c'),'scheduledAt')[_0x75f7('0x3b')]('id','ContactId')[_0x75f7('0x3b')](LISTID['toString'](),_0x75f7('0x28'))[_0x75f7('0x3b')](_0x4d5d07['id']['toString'](),_0x514d87)['field'](_0x75f7('0x3c'),_0x75f7('0x39'))[_0x75f7('0x3b')](_0x75f7('0x3c'),'updatedAt')[_0x75f7('0x3d')](_0x75f7('0x3e'))['where'](_0x75f7('0x3f'))['where']('ListId\x20=\x20?',LISTID[_0x75f7('0x40')]())[_0x75f7('0x41')]('phone\x20IS\x20NOT\x20NULL')[_0x75f7('0x41')](_0x75f7('0x42'),squel[_0x75f7('0x43')]()['field']('phone')[_0x75f7('0x3d')](_0x75f7('0x37'))[_0x75f7('0x41')](_0x514d87+_0x75f7('0x44'),_0x4d5d07['id'][_0x75f7('0x40')]())))['toString']();return _0x1571ed;};var _0x16785d=function(_0x249a75,_0x47f228){var _0x897066=squel['insert']()[_0x75f7('0x45')](_0x75f7('0x37'))['fromQuery'](['phone',_0x75f7('0x46'),'ContactId',_0x75f7('0x28'),_0x47f228,'createdAt',_0x75f7('0x3a')],squel['select']()[_0x75f7('0x3b')]('phone',_0x75f7('0x21'))[_0x75f7('0x3b')](_0x75f7('0x3c'),_0x75f7('0x46'))[_0x75f7('0x3b')]('id',_0x75f7('0x47'))[_0x75f7('0x3b')](LISTID[_0x75f7('0x40')](),_0x75f7('0x28'))[_0x75f7('0x3b')](_0x249a75['id'][_0x75f7('0x40')](),_0x47f228)[_0x75f7('0x3b')](_0x75f7('0x3c'),_0x75f7('0x39'))[_0x75f7('0x3b')]('NOW()',_0x75f7('0x3a'))[_0x75f7('0x3d')]('cm_contacts')['where'](_0x75f7('0x3f'))['where']('ListId\x20=\x20?',LISTID[_0x75f7('0x40')]())[_0x75f7('0x41')](_0x75f7('0x48'),squel[_0x75f7('0x49')](hopperContacts))[_0x75f7('0x41')]('phone\x20IS\x20NOT\x20NULL')[_0x75f7('0x41')](_0x75f7('0x42'),squel['select']()[_0x75f7('0x3b')](_0x75f7('0x4a'))[_0x75f7('0x3d')](_0x75f7('0x4b'))[_0x75f7('0x41')](_0x47f228+_0x75f7('0x44'),_0x249a75['id'][_0x75f7('0x40')]()))[_0x75f7('0x41')](_0x75f7('0x42'),squel['select']()[_0x75f7('0x3b')](_0x75f7('0x21'))[_0x75f7('0x3d')](_0x75f7('0x37'))[_0x75f7('0x41')](_0x47f228+_0x75f7('0x44'),_0x249a75['id'][_0x75f7('0x40')]())))[_0x75f7('0x40')]();return _0x897066;};function _0x562408(_0x5203a3,_0x2ad311){var _0x42d304=squel[_0x75f7('0x36')]()[_0x75f7('0x45')](_0x75f7('0x37'))['fromQuery']([_0x75f7('0x21'),_0x75f7('0x46'),_0x75f7('0x47'),'ListId',_0x2ad311,_0x75f7('0x39'),'updatedAt'],squel[_0x75f7('0x43')]()['field']('phone',_0x75f7('0x21'))['field'](_0x75f7('0x3c'),_0x75f7('0x46'))[_0x75f7('0x3b')]('id',_0x75f7('0x47'))[_0x75f7('0x3b')](LISTID[_0x75f7('0x40')](),_0x75f7('0x28'))[_0x75f7('0x3b')](_0x5203a3['id'][_0x75f7('0x40')](),_0x2ad311)[_0x75f7('0x3b')]('NOW()',_0x75f7('0x39'))[_0x75f7('0x3b')](_0x75f7('0x3c'),_0x75f7('0x3a'))[_0x75f7('0x3d')]('cm_contacts')[_0x75f7('0x41')](_0x75f7('0x3f'))[_0x75f7('0x41')]('ListId\x20=\x20?',LISTID['toString']())[_0x75f7('0x41')](_0x75f7('0x48'),squel[_0x75f7('0x49')](hopperContacts))['where'](_0x75f7('0x4c')))[_0x75f7('0x40')]();return _0x42d304;}function _0x23de93(_0x3610b0,_0x39294c){var _0x2e84a3=squel['insert']()[_0x75f7('0x45')](_0x75f7('0x4d'))[_0x75f7('0x38')](['phone',_0x75f7('0x47'),_0x75f7('0x28'),_0x39294c,_0x75f7('0x39'),_0x75f7('0x3a')],squel[_0x75f7('0x43')]()[_0x75f7('0x3b')](_0x75f7('0x21'),'phone')[_0x75f7('0x3b')]('id','ContactId')[_0x75f7('0x3b')](LISTID[_0x75f7('0x40')](),_0x75f7('0x28'))[_0x75f7('0x3b')](_0x3610b0['id'][_0x75f7('0x40')](),_0x39294c)[_0x75f7('0x3b')](_0x75f7('0x3c'),_0x75f7('0x39'))[_0x75f7('0x3b')](_0x75f7('0x3c'),_0x75f7('0x3a'))[_0x75f7('0x3d')](_0x75f7('0x3e'))[_0x75f7('0x41')](_0x75f7('0x3f'))['where']('ListId\x20=\x20?',LISTID[_0x75f7('0x40')]())[_0x75f7('0x41')](_0x75f7('0x48'),squel['str'](hopperContacts))['where'](_0x75f7('0x4c')))[_0x75f7('0x40')]();return _0x2e84a3;}return db[_0x75f7('0x4e')][_0x75f7('0x4f')]({'where':{'type':_0x75f7('0x50')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x75f7('0x51')],'as':_0x75f7('0x52'),'where':{'id':LISTID}}]})['then'](function(_0xbf8182){var _0x55049c=[];if(_0xbf8182){var _0x2af485;for(var _0x3a89c4=0x0,_0x18cdf2;_0x3a89c4<_0xbf8182['length'];_0x3a89c4+=0x1){_0x18cdf2=_0xbf8182[_0x3a89c4][_0x75f7('0x53')]({'plain':!![]});switch(_0x18cdf2[_0x75f7('0x54')]){case _0x75f7('0x55'):_0x55049c[_0x75f7('0x2e')](db[_0x75f7('0x56')]['query'](_0x16785d(_0x18cdf2,_0x75f7('0x57')))['then'](function(){})['catch'](_0x4f2270()));break;case _0x75f7('0x58'):_0x55049c[_0x75f7('0x2e')](db[_0x75f7('0x56')][_0x75f7('0x59')](_0x27b9cc(_0x18cdf2,_0x75f7('0x57')))['then'](function(){})[_0x75f7('0x30')](_0x4f2270()));break;default:_0x55049c[_0x75f7('0x2e')](db[_0x75f7('0x56')][_0x75f7('0x59')](_0x562408(_0x18cdf2,'VoiceQueueId'))['then'](function(){})[_0x75f7('0x30')](_0x4f2270()));}}}return _0x55049c;})[_0x75f7('0x5a')]()[_0x75f7('0x2d')](function(){return db['VoiceQueue'][_0x75f7('0x4f')]({'where':{'type':_0x75f7('0x50')},'attributes':['id'],'include':[{'model':db[_0x75f7('0x51')],'as':_0x75f7('0x5b'),'where':{'id':LISTID}}]})[_0x75f7('0x2d')](function(_0xee18f0){var _0x47024f=[];if(_0xee18f0){var _0x106db3;for(var _0x140ef6=0x0,_0x2ed809;_0x140ef6<_0xee18f0[_0x75f7('0x1a')];_0x140ef6+=0x1){_0x2ed809=_0xee18f0[_0x140ef6][_0x75f7('0x53')]({'plain':!![]});_0x47024f['push'](db['sequelize']['query'](_0x23de93(_0x2ed809,_0x75f7('0x57')))['then'](function(){})['catch'](_0x4f2270()));}}return _0x47024f;})[_0x75f7('0x5a')]();})[_0x75f7('0x2d')](function(){return db[_0x75f7('0x5c')][_0x75f7('0x4f')]({'attributes':['id',_0x75f7('0x54')],'include':[{'model':db[_0x75f7('0x51')],'as':_0x75f7('0x52'),'where':{'id':LISTID}}]})[_0x75f7('0x2d')](function(_0x477e4d){var _0x12f9b5=[];if(_0x477e4d){for(var _0x2eec09=0x0,_0x5eebf4;_0x2eec09<_0x477e4d[_0x75f7('0x1a')];_0x2eec09+=0x1){_0x5eebf4=_0x477e4d[_0x2eec09]['get']({'plain':!![]});switch(_0x5eebf4['dialCheckDuplicateType']){case _0x75f7('0x55'):_0x12f9b5[_0x75f7('0x2e')](db[_0x75f7('0x56')][_0x75f7('0x59')](_0x16785d(_0x5eebf4,_0x75f7('0x5d')))[_0x75f7('0x2d')](function(){})[_0x75f7('0x30')](_0x4f2270()));break;case'onlyIfOpen':_0x12f9b5[_0x75f7('0x2e')](db[_0x75f7('0x56')][_0x75f7('0x59')](_0x27b9cc(_0x5eebf4,_0x75f7('0x5d')))[_0x75f7('0x2d')](function(){})[_0x75f7('0x30')](_0x4f2270()));break;default:_0x12f9b5[_0x75f7('0x2e')](db[_0x75f7('0x56')]['query'](_0x562408(_0x5eebf4,'CampaignId'))[_0x75f7('0x2d')](function(){})['catch'](_0x4f2270()));}}}return _0x12f9b5;})[_0x75f7('0x5a')]();})[_0x75f7('0x2d')](function(){return db[_0x75f7('0x5c')][_0x75f7('0x4f')]({'attributes':['id'],'include':[{'model':db[_0x75f7('0x51')],'as':_0x75f7('0x5b'),'where':{'id':LISTID}}]})[_0x75f7('0x2d')](function(_0x2e6c3c){var _0xb4f89f=[];if(_0x2e6c3c){for(var _0xc49b55=0x0,_0x31bfb8;_0xc49b55<_0x2e6c3c[_0x75f7('0x1a')];_0xc49b55+=0x1){_0x31bfb8=_0x2e6c3c[_0xc49b55][_0x75f7('0x53')]({'plain':!![]});_0xb4f89f[_0x75f7('0x2e')](db[_0x75f7('0x56')][_0x75f7('0x59')](_0x23de93(_0x31bfb8,'CampaignId'))[_0x75f7('0x2d')](function(){})[_0x75f7('0x30')](_0x4f2270()));}}return _0xb4f89f;})[_0x75f7('0x5a')]();})[_0x75f7('0x30')](function(_0x23131f){logger[_0x75f7('0x14')](_0x75f7('0x5e'),_0x75f7('0x5f'),_0x23131f['message']);});}var processPromises=function(_0x42bf44){return BPromise[_0x75f7('0x5a')](promises)[_0x75f7('0x2d')](function(_0x190164){})['catch'](function(_0x4289ed){logger[_0x75f7('0x14')](_0x75f7('0x60'),JSON[_0x75f7('0x32')](_0x4289ed));})[_0x75f7('0x61')](function(){socket['emit']('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x42bf44){return _0x42bf44[_0x75f7('0x62')]();}});};var endCsv=function(){return BPromise['resolve']()[_0x75f7('0x2d')](function(){if(hopperContacts){return checkHopper();}})[_0x75f7('0x2d')](function(){socket['emit']('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x193b33){logger[_0x75f7('0x14')](_0x75f7('0x63'),JSON[_0x75f7('0x32')](_0x193b33));}finally{process[_0x75f7('0x64')](0x0);}});};process['on'](_0x75f7('0x65'),function(){logger[_0x75f7('0x66')](_0x75f7('0x67'));endCsv();});function main(){return BPromise[_0x75f7('0x68')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db['CmContact'][_0x75f7('0x4f')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x75f7('0x2d')](function(_0x21750b){var _0x8fabdf=fs[_0x75f7('0x69')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x8fabdf,{'header':!![],'skipEmptyLines':!![],'step':function(_0x87db1e,_0x4bc0c5){total+=0x1;var _0x482f7e=total;promises['push'](checkRow(_0x87db1e,_0x21750b,_0x482f7e)[_0x75f7('0x2d')](function(){success+=0x1;})[_0x75f7('0x30')](function(_0x443b82){if(_0x443b82[_0x75f7('0x14')]){errors+=0x1;delete _0x443b82[_0x75f7('0x14')];}else if(_0x443b82[_0x75f7('0x6a')]){duplicates+=0x1;delete _0x443b82[_0x75f7('0x6a')];}rows[_0x75f7('0x2e')](_0x443b82);}));if(total%0xc8===0x0){_0x4bc0c5[_0x75f7('0x6b')]();return processPromises(_0x4bc0c5);}},'complete':function(){return processPromises()[_0x75f7('0x2d')](function(){logger[_0x75f7('0x66')](_0x75f7('0x6c'));endCsv();});},'error':function(_0x3e4f50,_0x2d0785){logger[_0x75f7('0x66')](_0x75f7('0x6d'),JSON[_0x75f7('0x32')](_0x3e4f50));endCsv();}});})['catch'](function(_0x1fe590){logger[_0x75f7('0x14')]('Error\x20executing\x20contact\x20csv\x20import:',JSON['stringify'](_0x1fe590));});}main();
\ No newline at end of file
+var _0xab22=['push','pick','catch','Error\x20while\x20creating\x20contact:\x20','message','cmContact','checkHopper','insert','into','fromQuery','scheduledAt','ContactId','updatedAt','select','field','NOW()','toString','createdAt','from','where','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','cm_contacts','id\x20IN\x20?','calleridnum','cm_hopper_final','cm_hopper','ListId\x20=\x20?','str','cm_hopper_black','VoiceQueue','outbound','CmList','get','always','sequelize','onlyIfOpen','query','VoiceQueueId','all','findAll','Campaign','Lists','dialCheckDuplicateType','CampaignId','BlackLists','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','stringify','finally','emit','contact:csv_','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','CSV\x20import\x20process\x20stopped!','createReadStream','parse','info','CSV\x20parsed\x20correctly!','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','defaults','localhost','socket.io-emitter','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','error','contact','index','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','join','data','firstName','firstName\x20not\x20specified!','phone','birthDate','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','duplicate','Duplicate\x20Contact','CmContact','create','keys','then'];(function(_0x1d7037,_0x57dd95){var _0x4d6568=function(_0x5c64c5){while(--_0x5c64c5){_0x1d7037['push'](_0x1d7037['shift']());}};_0x4d6568(++_0x57dd95);}(_0xab22,0x124));var _0x2ab2=function(_0xd90af2,_0x42d64d){_0xd90af2=_0xd90af2-0x0;var _0xf3eb8b=_0xab22[_0xd90af2];return _0xf3eb8b;};'use strict';var BPromise=require(_0x2ab2('0x0'));var util=require(_0x2ab2('0x1'));var _=require(_0x2ab2('0x2'));var fs=require('fs');var squel=require('squel');var Papa=require('papaparse');var Redis=require(_0x2ab2('0x3'));var db=require(_0x2ab2('0x4'))['db'];var config=require(_0x2ab2('0x5'));var logger=require(_0x2ab2('0x6'))(_0x2ab2('0x7'));config[_0x2ab2('0x8')]=_[_0x2ab2('0x9')](config[_0x2ab2('0x8')],{'host':_0x2ab2('0xa'),'port':0x18eb});var socket=require(_0x2ab2('0xb'))(new Redis(config[_0x2ab2('0x8')]));require('../../../api/cmContact/cmContact.socket')[_0x2ab2('0xc')](socket);try{if(!process[_0x2ab2('0xd')][0x2]||process[_0x2ab2('0xd')][0x2]===_0x2ab2('0xe')||process['argv'][0x2]===_0x2ab2('0xf')){throw new Error(_0x2ab2('0x10'));}var FILEPATH=process[_0x2ab2('0xd')][0x2];if(!process[_0x2ab2('0xd')][0x3]||process['argv'][0x3]===_0x2ab2('0xe')||process[_0x2ab2('0xd')][0x3]===_0x2ab2('0xf')||!process[_0x2ab2('0xd')][0x4]||process[_0x2ab2('0xd')][0x4]===_0x2ab2('0xe')||process[_0x2ab2('0xd')][0x4]===_0x2ab2('0xf')){throw new Error(_0x2ab2('0x11'));}var FIELDS=_[_0x2ab2('0x12')](process[_0x2ab2('0xd')][0x3][_0x2ab2('0x13')](','),process[_0x2ab2('0xd')][0x4][_0x2ab2('0x13')](','));if(!process[_0x2ab2('0xd')][0x5]||process['argv'][0x5]==='undefined'||process[_0x2ab2('0xd')][0x5]===_0x2ab2('0xf')){throw new Error(_0x2ab2('0x14'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0x2ab2('0xd')][0x6]&&process[_0x2ab2('0xd')][0x6]!==_0x2ab2('0xe')&&process['argv'][0x6]!==_0x2ab2('0xf')?process[_0x2ab2('0xd')][0x6]:null;var DUPLICATES=process[_0x2ab2('0xd')][0x7]&&process['argv'][0x7]!==_0x2ab2('0xe')&&process[_0x2ab2('0xd')][0x7]!==_0x2ab2('0xf')?process[_0x2ab2('0xd')][0x7]:null;if(!process['argv'][0x8]||process[_0x2ab2('0xd')][0x8]==='undefined'||process[_0x2ab2('0xd')][0x8]===_0x2ab2('0xf')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0x2ab2('0xd')][0x8];}catch(_0x55b58c){logger[_0x2ab2('0x15')](_0x55b58c);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(_0x484988,_0x39c0fc,_0x12a23d,_0xf7978e){var _0x493c58={'message':_0x39c0fc};_0x493c58[_0x484988]=!![];if(_0x12a23d){_0x493c58[_0x2ab2('0x16')]=_0x12a23d;}if(_0xf7978e){_0x493c58[_0x2ab2('0x17')]=_0xf7978e;}return _0x493c58;}function isEmail(_0x3d6acb){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x3d6acb);}function checkRow(_0x2486c1,_0xa10d23,_0x11f2e5){return new BPromise(function(_0x1e03d2,_0x59bd0a){if(_[_0x2ab2('0x18')](_0x2486c1)){return _0x59bd0a(handleCheckRowError('error',_0x2ab2('0x19'),null,_0x11f2e5));}if(_0x2486c1[_0x2ab2('0x1a')]&&_0x2486c1[_0x2ab2('0x1a')][_0x2ab2('0x1b')]){var _0xe04d51=_[_0x2ab2('0x1c')](_0x2486c1[_0x2ab2('0x1a')],'message')[_0x2ab2('0x1d')](';');return _0x59bd0a(handleCheckRowError(_0x2ab2('0x15'),_0xe04d51,null,_0x11f2e5));}var _0x5771f7={};for(var _0xffc801 in FIELDS){if(FIELDS['hasOwnProperty'](_0xffc801)&&FIELDS[_0xffc801]){_0x5771f7[_0xffc801]=_0x2486c1['data'][0x0][FIELDS[_0xffc801]]||_0x2486c1[_0x2ab2('0x1e')][0x0]['\ufeff'+FIELDS[_0xffc801]];}}if(!_0x5771f7[_0x2ab2('0x1f')]){return _0x59bd0a(handleCheckRowError(_0x2ab2('0x15'),_0x2ab2('0x20'),null,_0x11f2e5));}if(!_0x5771f7[_0x2ab2('0x21')]){return _0x59bd0a(handleCheckRowError(_0x2ab2('0x15'),'phone\x20not\x20specified!',null,_0x11f2e5));}if(_0x5771f7[_0x2ab2('0x22')]){var _0x2433eb=moment(_0x5771f7[_0x2ab2('0x22')],'YYYY-MM-DD');if(!_0x2433eb[_0x2ab2('0x23')]()){return _0x59bd0a(handleCheckRowError(_0x2ab2('0x15'),_0x2ab2('0x24'),null,_0x11f2e5));}}if(_0x5771f7['email']){if(!isEmail(_0x5771f7['email'])){return _0x59bd0a(handleCheckRowError(_0x2ab2('0x15'),_0x2ab2('0x25'),null,_0x11f2e5));}}_0x5771f7[_0x2ab2('0x26')]=LISTID;_0x5771f7[_0x2ab2('0x27')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x2ab2('0x1b')]&&_0xa10d23){var _0xdb961e={};for(var _0x25e3c4=0x0,_0x5dfc57=DUPLICATES[_0x2ab2('0x1b')];_0x25e3c4<_0x5dfc57;_0x25e3c4+=0x1){_0xdb961e[DUPLICATES[_0x25e3c4]]=_0x5771f7[DUPLICATES[_0x25e3c4]];}var _0x311429=_[_0x2ab2('0x28')](_0xa10d23,_0xdb961e);if(_0x311429){return _0x59bd0a(handleCheckRowError(_0x2ab2('0x29'),_0x2ab2('0x2a'),_0x311429,_0x11f2e5));}}return db[_0x2ab2('0x2b')][_0x2ab2('0x2c')](_0x5771f7,{'raw':!![],'hooks':![],'fields':_[_0x2ab2('0x2d')](_0x5771f7)})[_0x2ab2('0x2e')](function(_0x54b441){if(DUPLICATES&&DUPLICATES['length']&&_0xa10d23){_0xa10d23[_0x2ab2('0x2f')](_[_0x2ab2('0x30')](_0x5771f7,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x54b441['id'];return _0x1e03d2();})[_0x2ab2('0x31')](function(_0x2bfaec){return _0x59bd0a(handleCheckRowError(_0x2ab2('0x15'),_0x2ab2('0x32')+(_0x2bfaec[_0x2ab2('0x33')]||JSON['stringify'](_0x2bfaec)),null,_0x11f2e5));});});}function checkHopper(){function _0x4146a3(){return function(_0x1c221c){logger['error'](_0x2ab2('0x34'),_0x2ab2('0x35'),util['inspect'](_0x1c221c,{'showHidden':![],'depth':null}));};}var _0x2329a1=function(_0x428a93,_0x345640){var _0x321cfc=squel[_0x2ab2('0x36')]()[_0x2ab2('0x37')]('cm_hopper')[_0x2ab2('0x38')]([_0x2ab2('0x21'),_0x2ab2('0x39'),_0x2ab2('0x3a'),_0x2ab2('0x26'),_0x345640,'createdAt',_0x2ab2('0x3b')],squel[_0x2ab2('0x3c')]()['field'](_0x2ab2('0x21'),_0x2ab2('0x21'))[_0x2ab2('0x3d')](_0x2ab2('0x3e'),_0x2ab2('0x39'))[_0x2ab2('0x3d')]('id',_0x2ab2('0x3a'))[_0x2ab2('0x3d')](LISTID[_0x2ab2('0x3f')](),'ListId')[_0x2ab2('0x3d')](_0x428a93['id']['toString'](),_0x345640)[_0x2ab2('0x3d')](_0x2ab2('0x3e'),_0x2ab2('0x40'))[_0x2ab2('0x3d')](_0x2ab2('0x3e'),'updatedAt')[_0x2ab2('0x41')]('cm_contacts')[_0x2ab2('0x42')](_0x2ab2('0x43'))['where']('ListId\x20=\x20?',LISTID[_0x2ab2('0x3f')]())['where'](_0x2ab2('0x44'))[_0x2ab2('0x42')](_0x2ab2('0x45'),squel['select']()[_0x2ab2('0x3d')](_0x2ab2('0x21'))[_0x2ab2('0x41')]('cm_hopper')[_0x2ab2('0x42')](_0x345640+_0x2ab2('0x46'),_0x428a93['id'][_0x2ab2('0x3f')]())))['toString']();return _0x321cfc;};var _0x5939a2=function(_0x43d8c8,_0x54e525){var _0x5c2290=squel[_0x2ab2('0x36')]()['into']('cm_hopper')[_0x2ab2('0x38')]([_0x2ab2('0x21'),_0x2ab2('0x39'),'ContactId',_0x2ab2('0x26'),_0x54e525,'createdAt',_0x2ab2('0x3b')],squel[_0x2ab2('0x3c')]()['field'](_0x2ab2('0x21'),_0x2ab2('0x21'))[_0x2ab2('0x3d')](_0x2ab2('0x3e'),'scheduledAt')['field']('id',_0x2ab2('0x3a'))[_0x2ab2('0x3d')](LISTID[_0x2ab2('0x3f')](),_0x2ab2('0x26'))[_0x2ab2('0x3d')](_0x43d8c8['id'][_0x2ab2('0x3f')](),_0x54e525)[_0x2ab2('0x3d')](_0x2ab2('0x3e'),_0x2ab2('0x40'))[_0x2ab2('0x3d')](_0x2ab2('0x3e'),_0x2ab2('0x3b'))['from'](_0x2ab2('0x47'))[_0x2ab2('0x42')](_0x2ab2('0x43'))['where']('ListId\x20=\x20?',LISTID[_0x2ab2('0x3f')]())[_0x2ab2('0x42')](_0x2ab2('0x48'),squel['str'](hopperContacts))['where'](_0x2ab2('0x44'))['where'](_0x2ab2('0x45'),squel[_0x2ab2('0x3c')]()['field'](_0x2ab2('0x49'))[_0x2ab2('0x41')](_0x2ab2('0x4a'))[_0x2ab2('0x42')](_0x54e525+'\x20=\x20?',_0x43d8c8['id'][_0x2ab2('0x3f')]()))[_0x2ab2('0x42')](_0x2ab2('0x45'),squel['select']()['field'](_0x2ab2('0x21'))[_0x2ab2('0x41')](_0x2ab2('0x4b'))[_0x2ab2('0x42')](_0x54e525+'\x20=\x20?',_0x43d8c8['id'][_0x2ab2('0x3f')]())))[_0x2ab2('0x3f')]();return _0x5c2290;};function _0x2fa8f4(_0x3cd252,_0xec372f){var _0x24e240=squel[_0x2ab2('0x36')]()[_0x2ab2('0x37')](_0x2ab2('0x4b'))['fromQuery']([_0x2ab2('0x21'),'scheduledAt',_0x2ab2('0x3a'),_0x2ab2('0x26'),_0xec372f,_0x2ab2('0x40'),_0x2ab2('0x3b')],squel['select']()[_0x2ab2('0x3d')](_0x2ab2('0x21'),_0x2ab2('0x21'))[_0x2ab2('0x3d')](_0x2ab2('0x3e'),'scheduledAt')[_0x2ab2('0x3d')]('id','ContactId')['field'](LISTID[_0x2ab2('0x3f')](),_0x2ab2('0x26'))['field'](_0x3cd252['id']['toString'](),_0xec372f)['field'](_0x2ab2('0x3e'),_0x2ab2('0x40'))[_0x2ab2('0x3d')](_0x2ab2('0x3e'),_0x2ab2('0x3b'))[_0x2ab2('0x41')](_0x2ab2('0x47'))[_0x2ab2('0x42')](_0x2ab2('0x43'))[_0x2ab2('0x42')](_0x2ab2('0x4c'),LISTID[_0x2ab2('0x3f')]())[_0x2ab2('0x42')]('id\x20IN\x20?',squel[_0x2ab2('0x4d')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))['toString']();return _0x24e240;}function _0x152454(_0x508465,_0x9d606d){var _0x314b8a=squel[_0x2ab2('0x36')]()[_0x2ab2('0x37')](_0x2ab2('0x4e'))[_0x2ab2('0x38')]([_0x2ab2('0x21'),_0x2ab2('0x3a'),_0x2ab2('0x26'),_0x9d606d,'createdAt',_0x2ab2('0x3b')],squel['select']()[_0x2ab2('0x3d')]('phone',_0x2ab2('0x21'))[_0x2ab2('0x3d')]('id',_0x2ab2('0x3a'))['field'](LISTID[_0x2ab2('0x3f')](),_0x2ab2('0x26'))[_0x2ab2('0x3d')](_0x508465['id'][_0x2ab2('0x3f')](),_0x9d606d)['field']('NOW()',_0x2ab2('0x40'))[_0x2ab2('0x3d')]('NOW()',_0x2ab2('0x3b'))[_0x2ab2('0x41')](_0x2ab2('0x47'))[_0x2ab2('0x42')]('deletedAt\x20IS\x20NULL')[_0x2ab2('0x42')](_0x2ab2('0x4c'),LISTID[_0x2ab2('0x3f')]())[_0x2ab2('0x42')]('id\x20IN\x20?',squel[_0x2ab2('0x4d')](hopperContacts))[_0x2ab2('0x42')](_0x2ab2('0x44')))[_0x2ab2('0x3f')]();return _0x314b8a;}return db[_0x2ab2('0x4f')]['findAll']({'where':{'type':_0x2ab2('0x50')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x2ab2('0x51')],'as':'Lists','where':{'id':LISTID}}]})[_0x2ab2('0x2e')](function(_0xb820a3){var _0x19adb2=[];if(_0xb820a3){var _0x39ece7;for(var _0x57518e=0x0,_0x4f9c5e;_0x57518e<_0xb820a3[_0x2ab2('0x1b')];_0x57518e+=0x1){_0x4f9c5e=_0xb820a3[_0x57518e][_0x2ab2('0x52')]({'plain':!![]});switch(_0x4f9c5e['dialCheckDuplicateType']){case _0x2ab2('0x53'):_0x19adb2[_0x2ab2('0x2f')](db[_0x2ab2('0x54')]['query'](_0x5939a2(_0x4f9c5e,'VoiceQueueId'))[_0x2ab2('0x2e')](function(){})['catch'](_0x4146a3()));break;case _0x2ab2('0x55'):_0x19adb2[_0x2ab2('0x2f')](db[_0x2ab2('0x54')][_0x2ab2('0x56')](_0x2329a1(_0x4f9c5e,'VoiceQueueId'))[_0x2ab2('0x2e')](function(){})[_0x2ab2('0x31')](_0x4146a3()));break;default:_0x19adb2[_0x2ab2('0x2f')](db['sequelize'][_0x2ab2('0x56')](_0x2fa8f4(_0x4f9c5e,_0x2ab2('0x57')))[_0x2ab2('0x2e')](function(){})[_0x2ab2('0x31')](_0x4146a3()));}}}return _0x19adb2;})[_0x2ab2('0x58')]()['then'](function(){return db[_0x2ab2('0x4f')][_0x2ab2('0x59')]({'where':{'type':_0x2ab2('0x50')},'attributes':['id'],'include':[{'model':db['CmList'],'as':'BlackLists','where':{'id':LISTID}}]})[_0x2ab2('0x2e')](function(_0x1bdcc9){var _0xca1ad1=[];if(_0x1bdcc9){var _0xf31d6e;for(var _0x52feb3=0x0,_0x1028d0;_0x52feb3<_0x1bdcc9[_0x2ab2('0x1b')];_0x52feb3+=0x1){_0x1028d0=_0x1bdcc9[_0x52feb3][_0x2ab2('0x52')]({'plain':!![]});_0xca1ad1[_0x2ab2('0x2f')](db[_0x2ab2('0x54')][_0x2ab2('0x56')](_0x152454(_0x1028d0,_0x2ab2('0x57')))[_0x2ab2('0x2e')](function(){})[_0x2ab2('0x31')](_0x4146a3()));}}return _0xca1ad1;})[_0x2ab2('0x58')]();})['then'](function(){return db[_0x2ab2('0x5a')][_0x2ab2('0x59')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x2ab2('0x51')],'as':_0x2ab2('0x5b'),'where':{'id':LISTID}}]})[_0x2ab2('0x2e')](function(_0x2f367f){var _0x89fda5=[];if(_0x2f367f){for(var _0x3d4922=0x0,_0x3711d6;_0x3d4922<_0x2f367f[_0x2ab2('0x1b')];_0x3d4922+=0x1){_0x3711d6=_0x2f367f[_0x3d4922][_0x2ab2('0x52')]({'plain':!![]});switch(_0x3711d6[_0x2ab2('0x5c')]){case'always':_0x89fda5[_0x2ab2('0x2f')](db['sequelize'][_0x2ab2('0x56')](_0x5939a2(_0x3711d6,_0x2ab2('0x5d')))[_0x2ab2('0x2e')](function(){})[_0x2ab2('0x31')](_0x4146a3()));break;case'onlyIfOpen':_0x89fda5['push'](db[_0x2ab2('0x54')][_0x2ab2('0x56')](_0x2329a1(_0x3711d6,_0x2ab2('0x5d')))[_0x2ab2('0x2e')](function(){})['catch'](_0x4146a3()));break;default:_0x89fda5[_0x2ab2('0x2f')](db['sequelize'][_0x2ab2('0x56')](_0x2fa8f4(_0x3711d6,_0x2ab2('0x5d')))[_0x2ab2('0x2e')](function(){})[_0x2ab2('0x31')](_0x4146a3()));}}}return _0x89fda5;})[_0x2ab2('0x58')]();})['then'](function(){return db['Campaign'][_0x2ab2('0x59')]({'attributes':['id'],'include':[{'model':db[_0x2ab2('0x51')],'as':_0x2ab2('0x5e'),'where':{'id':LISTID}}]})[_0x2ab2('0x2e')](function(_0x4b95e0){var _0x5524f0=[];if(_0x4b95e0){for(var _0x2f1161=0x0,_0x4caf20;_0x2f1161<_0x4b95e0[_0x2ab2('0x1b')];_0x2f1161+=0x1){_0x4caf20=_0x4b95e0[_0x2f1161][_0x2ab2('0x52')]({'plain':!![]});_0x5524f0[_0x2ab2('0x2f')](db[_0x2ab2('0x54')][_0x2ab2('0x56')](_0x152454(_0x4caf20,'CampaignId'))['then'](function(){})['catch'](_0x4146a3()));}}return _0x5524f0;})['all']();})[_0x2ab2('0x31')](function(_0x369080){logger[_0x2ab2('0x15')](_0x2ab2('0x5f'),_0x2ab2('0x60'),_0x369080['message']);});}var processPromises=function(_0x2ffbf7){return BPromise[_0x2ab2('0x58')](promises)['then'](function(_0x71339d){})[_0x2ab2('0x31')](function(_0x131fa2){logger[_0x2ab2('0x15')](_0x2ab2('0x61'),JSON[_0x2ab2('0x62')](_0x131fa2));})[_0x2ab2('0x63')](function(){socket[_0x2ab2('0x64')](_0x2ab2('0x65')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x2ffbf7){return _0x2ffbf7['resume']();}});};var endCsv=function(){return BPromise[_0x2ab2('0x66')]()[_0x2ab2('0x2e')](function(){if(hopperContacts){return checkHopper();}})[_0x2ab2('0x2e')](function(){socket[_0x2ab2('0x64')](_0x2ab2('0x65')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x2ab2('0x67')](FILEPATH);}catch(_0x4e1e12){logger[_0x2ab2('0x15')](_0x2ab2('0x68'),JSON[_0x2ab2('0x62')](_0x4e1e12));}finally{process[_0x2ab2('0x69')](0x0);}});};process['on'](_0x2ab2('0x6a'),function(){logger['info'](_0x2ab2('0x6b'));endCsv();});function main(){return BPromise['resolve']()[_0x2ab2('0x2e')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0x2ab2('0x2b')][_0x2ab2('0x59')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x5a5c1e){var _0x55f50c=fs[_0x2ab2('0x6c')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x2ab2('0x6d')](_0x55f50c,{'header':!![],'skipEmptyLines':!![],'step':function(_0x4f413d,_0x518dd2){total+=0x1;var _0x52d2fe=total;promises[_0x2ab2('0x2f')](checkRow(_0x4f413d,_0x5a5c1e,_0x52d2fe)[_0x2ab2('0x2e')](function(){success+=0x1;})[_0x2ab2('0x31')](function(_0xbfde5d){if(_0xbfde5d['error']){errors+=0x1;delete _0xbfde5d[_0x2ab2('0x15')];}else if(_0xbfde5d['duplicate']){duplicates+=0x1;delete _0xbfde5d[_0x2ab2('0x29')];}rows['push'](_0xbfde5d);}));if(total%0xc8===0x0){_0x518dd2['pause']();return processPromises(_0x518dd2);}},'complete':function(){return processPromises()[_0x2ab2('0x2e')](function(){logger[_0x2ab2('0x6e')](_0x2ab2('0x6f'));endCsv();});},'error':function(_0x2a8ed2,_0x503fb6){logger[_0x2ab2('0x6e')]('CSV\x20parse\x20error',JSON[_0x2ab2('0x62')](_0x2a8ed2));endCsv();}});})[_0x2ab2('0x31')](function(_0x248faf){logger[_0x2ab2('0x15')](_0x2ab2('0x70'),JSON[_0x2ab2('0x62')](_0x248faf));});}main();
\ No newline at end of file
index 9de5210..d0a2ce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4870=['then','finish','affectedRows','contact:import:','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','file\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','squel','../../../config/logger','defaults','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','from','join','.id\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','toString','cm_contacts.id','cm_contacts.ListId','insert','cm_hopper_black','cm_contacts.ListId\x20=\x20','ListId\x20=\x20?','\x20=\x20?','concat','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','group','info','Received\x20SIGINT','message','exit','code','query','spread','catch','main','stringify','send','start','binding','root','server/files/tmp','header','writeFileSync','parse','createReadStream','data','length','errors','hasOwnProperty','trim','replace','push','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','agent\x20not\x20exists','email','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','rows','emit','Abort\x20parser','abort','SystemError','error','duplicates','CREATE\x20TABLE\x20','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','VoiceQueueId','voice_queues_has_cm_blacklists','voice_queues','campaigns','CampaignId','campaigns_has_cm_blacklists','each'];(function(_0x28812e,_0xd6124b){var _0x3ff0bf=function(_0x3f3f72){while(--_0x3f3f72){_0x28812e['push'](_0x28812e['shift']());}};_0x3ff0bf(++_0xd6124b);}(_0x4870,0x8f));var _0x0487=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x4870[_0x36ed48];return _0x51c63a;};'use strict';var fs=require('fs');var path=require(_0x0487('0x0'));var _=require(_0x0487('0x1'));var Papa=require(_0x0487('0x2'));var util=require(_0x0487('0x3'));var BPromise=require(_0x0487('0x4'));var moment=require('moment');var squel=require(_0x0487('0x5'));var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require('../../../config/environment');var logger=require(_0x0487('0x6'))('import');config['redis']=_[_0x0487('0x7')](config[_0x0487('0x8')],{'host':_0x0487('0x9'),'port':0x18eb});var socket=require(_0x0487('0xa'))(new Redis(config[_0x0487('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x0487('0xb')](_0x0487('0xc'));function isEmail(_0x5a8335){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))*$/[_0x0487('0xd')](_0x5a8335);}function selectNotIn(_0x55ac60,_0x269335,_0x50687b,_0x5a9d2d,_0x4d3cba){return squel[_0x0487('0xe')]()[_0x0487('0xf')](_0x0487('0x10'))[_0x0487('0x11')](_0x5a9d2d)[_0x0487('0x12')](_0x269335,null,_0x269335+_0x0487('0x13')+_0x5a9d2d+'.'+_0x50687b)[_0x0487('0x14')](_0x5a9d2d+'.'+_0x50687b+'\x20=\x20'+_0x55ac60+'.'+_0x50687b)['where'](_0x269335+_0x0487('0x15')+_0x4d3cba[_0x0487('0x12')]()+')');}function insertCmHopper(_0x1652c2,_0x3a0725,_0xdfd383,_0x3accb9,_0x494fdb){var _0x444c5d=[_0x0487('0x16'),_0x0487('0x17'),'cm_contacts.id','cm_contacts.ListId',_0x3a0725+'.'+_0x3accb9,_0x0487('0x18'),_0x0487('0x19'),_0x0487('0x1a'),_0x0487('0x1b'),'\x22'+_0x494fdb+'\x22'];return squel['insert']()[_0x0487('0x1c')](_0x0487('0x1d'))[_0x0487('0x1e')]([_0x0487('0x10'),_0x0487('0x1f'),_0x0487('0x20'),_0x0487('0x21'),_0x3accb9,_0x0487('0x22'),_0x0487('0x23'),_0x0487('0x24'),_0x0487('0x25'),_0x0487('0x26')],squel['select']()[_0x0487('0x27')](_0x444c5d)[_0x0487('0x11')](_0x3a0725)[_0x0487('0x12')](_0x0487('0x28'),null,'cm_contacts.ListId\x20=\x20'+_0x3a0725+_0x0487('0x29'))[_0x0487('0x12')](_0xdfd383,null,_0xdfd383+'.id\x20=\x20'+_0x3a0725+'.'+_0x3accb9)[_0x0487('0x14')](_0x3a0725+_0x0487('0x2a'),_0x1652c2)['where'](_0x0487('0x2b'),NOW)['where'](_0x0487('0x2c'),selectNotIn(_0x3a0725,_0xdfd383,_0x3accb9,_0x0487('0x1d'),['\x22always\x22','\x22onlyIfOpen\x22']))[_0x0487('0x14')](_0x0487('0x2c'),selectNotIn(_0x3a0725,_0xdfd383,_0x3accb9,_0x0487('0x1d'),['\x22always\x22'])))[_0x0487('0x2d')]();}function insertCmHopperBlack(_0x234098,_0x5771c9,_0x40fdca,_0x5ab567){var _0x5666cd=[_0x0487('0x16'),_0x0487('0x2e'),_0x0487('0x2f'),_0x5771c9+'.'+_0x5ab567,'cm_contacts.createdAt',_0x0487('0x19')];return squel[_0x0487('0x30')]()['into'](_0x0487('0x31'))[_0x0487('0x1e')]([_0x0487('0x10'),_0x0487('0x20'),_0x0487('0x21'),_0x5ab567,_0x0487('0x22'),_0x0487('0x23')],squel[_0x0487('0xe')]()[_0x0487('0x27')](_0x5666cd)[_0x0487('0x11')](_0x5771c9)['join']('cm_contacts',null,_0x0487('0x32')+_0x5771c9+_0x0487('0x29'))[_0x0487('0x12')](_0x40fdca,null,_0x40fdca+'.id\x20=\x20'+_0x5771c9+'.'+_0x5ab567)[_0x0487('0x14')](_0x5771c9+_0x0487('0x2a'),_0x234098)[_0x0487('0x14')](_0x0487('0x2b'),NOW)[_0x0487('0x14')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x0487('0xe')]()[_0x0487('0xf')](_0x0487('0x10'))[_0x0487('0x11')](_0x0487('0x31'))[_0x0487('0x14')](_0x0487('0x33'),_0x234098)[_0x0487('0x14')](_0x5ab567+_0x0487('0x34'),_0x5771c9+'.'+_0x5ab567)))[_0x0487('0x2d')]();}function insertCmContact(_0x3da94c,_0x5d933d,_0x57d03b,_0x569b2f){var _0x3c8178=_[_0x0487('0x35')](_['keys'](_0x569b2f),[_0x0487('0x21'),_0x0487('0x36'),_0x0487('0x22'),_0x0487('0x23')]);return squel[_0x0487('0x30')]()[_0x0487('0x1c')](_0x0487('0x28'))[_0x0487('0x1e')](_0x3c8178,squel[_0x0487('0xe')]()[_0x0487('0x27')](_0x3c8178)[_0x0487('0x11')](_0x5d933d)['where']('('+_0x57d03b[_0x0487('0x12')](',')+_0x0487('0x37'),squel['select']()[_0x0487('0x27')](_0x57d03b)[_0x0487('0x11')]('cm_contacts')['where']('ListId\x20=\x20?',_0x3da94c)[_0x0487('0x14')](_0x0487('0x38')))[_0x0487('0x14')](_0x0487('0x39'),squel[_0x0487('0xe')]()[_0x0487('0xf')]('MIN(id)','min_id')[_0x0487('0x11')](_0x5d933d)[_0x0487('0x3a')](_0x57d03b[_0x0487('0x12')](','))))['toString']();}function handleStop(){logger[_0x0487('0x3b')](_0x0487('0x3c'));stopped=!![];}function handleUncaughtException(_0x500a4c){logger['error'](_0x500a4c[_0x0487('0x3d')]);process[_0x0487('0x3e')](0x1);}function handleError(_0x3fdc50,_0x25bad6){stats['errors']['push']({'name':_0x25bad6[_0x0487('0x3f')],'message':_0x25bad6[_0x0487('0x3d')],'row':_0x3fdc50});}function handleQuery(_0x574a94){logger[_0x0487('0x3b')](_0x574a94);return db['sequelize'][_0x0487('0x40')](_0x574a94)[_0x0487('0x41')](function(_0x53bb96){results['push'](_0x53bb96);})[_0x0487('0x42')](function(_0x5a2992){logger['error'](_0x5a2992[_0x0487('0x3d')]);});}function main(_0x24d037,_0x4610a1,_0x3ddb4a,_0xbfbc56){logger[_0x0487('0x3b')](_0x0487('0x43'),_0x24d037,JSON[_0x0487('0x44')](_0x4610a1));process[_0x0487('0x45')](_0x0487('0x46'));var _0xbe7d8a=_0x4610a1[_0x0487('0x47')];var _0x31b957=_0x4610a1['socket_timestamp'];var _0x4aa546=path[_0x0487('0x12')](config[_0x0487('0x48')],_0x0487('0x49'),_0x31b957+'.csv');var _0x154480=_['keys'](_0xbe7d8a)['join']();logger[_0x0487('0x3b')](_0x0487('0x4a'),_0x154480);fs[_0x0487('0x4b')](_0x4aa546,_0x154480+'\x0a');Papa[_0x0487('0x4c')](fs[_0x0487('0x4d')](_0x24d037),{'header':!![],'skipEmptyLines':!![],'step':function(_0x1f9f7b,_0x4660f4){try{for(var _0x2b8cf4=0x0,_0x397f9a=[];_0x2b8cf4<_0x1f9f7b[_0x0487('0x4e')][_0x0487('0x4f')];_0x2b8cf4++){stats['rows']+=0x1;if(_0x1f9f7b[_0x0487('0x50')][_0x2b8cf4]){handleError(_0x1f9f7b[_0x0487('0x4e')][_0x2b8cf4],_0x1f9f7b[_0x0487('0x50')][_0x2b8cf4]);}else{var _0xe9b259=[];for(var _0x14e12c in _0xbe7d8a){if(_0xbe7d8a[_0x0487('0x51')](_0x14e12c)){if(_0x1f9f7b[_0x0487('0x4e')][_0x2b8cf4][_0xbe7d8a[_0x14e12c]]){var _0x26998f=_[_0x0487('0x52')](_0x1f9f7b['data'][_0x2b8cf4][_0xbe7d8a[_0x14e12c]][_0x0487('0x53')](/"/g,'\x27'));switch(_0x14e12c){case _0x0487('0x1f'):var _0xe84131=moment(_0x26998f,_0x0487('0xc'),!![]);if(_0xe84131['isValid']()){_0x397f9a[_0x0487('0x54')]('\x22'+_0x26998f+'\x22');}else{_0xe9b259['push'](_0x0487('0x55'));}break;case'priority':var _0x1054bc=parseInt(_0x26998f);_0x26998f=_[_0x0487('0x56')](_0x1054bc)||_0x1054bc<0x0||_0x1054bc>0x4?_0xbfbc56?0x3:0x2:_0x1054bc;_0x397f9a[_0x0487('0x54')]('\x22'+_0x26998f+'\x22');break;case _0x0487('0x25'):var _0x126f66=parseInt(_0x26998f);if(_[_0x0487('0x57')](_0x126f66)&&_[_0x0487('0x58')](_0x3ddb4a,_0x126f66)){_0x397f9a['push']('\x22'+_0x126f66+'\x22');}else{_0xe9b259[_0x0487('0x54')](_0x0487('0x59'));}break;case _0x0487('0x5a'):if(isEmail(_0x26998f)){_0x397f9a[_0x0487('0x54')]('\x22'+_0x26998f+'\x22');}else{_0xe9b259['push']('email\x20wrong\x20format');}break;case'dateOfBirth':var _0x2e5829=moment(_0x26998f,_0x0487('0x5b'),!![]);if(_0x2e5829['isValid']()){_0x397f9a[_0x0487('0x54')]('\x22'+_0x26998f+'\x22');}else{_0xe9b259[_0x0487('0x54')](_0x0487('0x5c'));}break;default:_0x397f9a[_0x0487('0x54')]('\x22'+_0x26998f+'\x22');}}else{switch(_0x14e12c){case _0x0487('0x5d'):case _0x0487('0x10'):_0xe9b259[_0x0487('0x54')](_0x14e12c+_0x0487('0x5e'));break;default:_0x397f9a[_0x0487('0x54')]('\x22\x22');}}}}if(_0xe9b259[_0x0487('0x4f')]){handleError(_0x1f9f7b[_0x0487('0x4e')][_0x2b8cf4],{'code':_0x0487('0x5f'),'message':_0xe9b259[_0x0487('0x12')]()});}else{fs[_0x0487('0x60')](_0x4aa546,_0x397f9a['join']()+'\x0a');}_0x397f9a=[];}if(!(stats[_0x0487('0x61')]%0xc8)){socket[_0x0487('0x62')]('contact:import:'+_0x31b957,stats);stats[_0x0487('0x50')]=[];}}if(stopped){logger[_0x0487('0x3b')](_0x0487('0x63'));_0x4660f4[_0x0487('0x64')]();}}catch(_0x317350){handleError(_0x1f9f7b[_0x0487('0x4e')][_0x2b8cf4],{'code':_0x0487('0x65'),'message':_0x317350[_0x0487('0x3d')]});logger[_0x0487('0x66')]('step',_0x317350['message']);}},'complete':function(){try{var _0x29dce1=[];var _0x42da74=_0x0487('0x28');if(_0x4610a1[_0x0487('0x67')]&&_0x4610a1[_0x0487('0x67')][_0x0487('0x4f')]){_0x42da74='cm_contacts_'+_0x31b957;_0x29dce1[_0x0487('0x54')](_0x0487('0x68')+_0x42da74+'\x20LIKE\x20cm_contacts;');}var _0x20610f=util[_0x0487('0xb')]('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',_0x4aa546,_0x42da74,_0x154480,_0x4610a1[_0x0487('0x21')],_0x4610a1['CompanyId']||null,NOW,NOW);if(_[_0x0487('0x69')](_0xbe7d8a[_0x0487('0x1f')])){_0x20610f+=_0x0487('0x6a');}_0x29dce1[_0x0487('0x54')](_0x20610f);if(_0x4610a1[_0x0487('0x67')]&&_0x4610a1['duplicates'][_0x0487('0x4f')]){_0x29dce1[_0x0487('0x54')](insertCmContact(_0x4610a1[_0x0487('0x21')],_0x42da74,_0x4610a1[_0x0487('0x67')],_0xbe7d8a));_0x29dce1[_0x0487('0x54')](_0x0487('0x6b')+_0x42da74+';');}_0x29dce1[_0x0487('0x54')](insertCmHopper(_0x4610a1[_0x0487('0x21')],'voice_queues_has_cm_lists','voice_queues',_0x0487('0x6c'),_0xbfbc56));_0x29dce1[_0x0487('0x54')](insertCmHopperBlack(_0x4610a1[_0x0487('0x21')],_0x0487('0x6d'),_0x0487('0x6e'),_0x0487('0x6c')));_0x29dce1[_0x0487('0x54')](insertCmHopper(_0x4610a1[_0x0487('0x21')],'campaigns_has_cm_lists',_0x0487('0x6f'),_0x0487('0x70'),_0xbfbc56));_0x29dce1[_0x0487('0x54')](insertCmHopperBlack(_0x4610a1[_0x0487('0x21')],_0x0487('0x71'),_0x0487('0x6f'),_0x0487('0x70')));BPromise[_0x0487('0x72')](_0x29dce1,handleQuery)[_0x0487('0x73')](function(_0x6bc1f7){stats[_0x0487('0x74')]=!![];stats[_0x0487('0x75')]=_0x4610a1['duplicates']&&_0x4610a1['duplicates'][_0x0487('0x4f')]?results[0x2][_0x0487('0x75')]:results[0x0]['affectedRows'];socket['emit'](_0x0487('0x76')+_0x31b957,stats);fs['unlink'](_0x24d037);fs['unlink'](_0x4aa546);process[_0x0487('0x3e')](0x0);})['catch'](function(_0x12ce45){logger[_0x0487('0x66')](_0x12ce45[_0x0487('0x3d')]);process['exit'](0x1);});}catch(_0x3279b8){logger[_0x0487('0x66')]('complete',_0x3279b8[_0x0487('0x3d')]);process[_0x0487('0x3e')](0x1);}},'error':function(_0x10a46d,_0x388fa0,_0xcff67,_0x2a087f){throw new Error(_0x2a087f);}});}function validate(){if(process[_0x0487('0x77')]&&process[_0x0487('0x77')][_0x0487('0x4f')]<0x4){throw new Error(_0x0487('0x78'));}var _0x59e649=path[_0x0487('0x12')](config['root'],_0x0487('0x49'),process[_0x0487('0x77')][0x2]);if(!fs['existsSync'](_0x59e649)){throw new Error(_0x0487('0x79'));}var _0x2d7db9={};try{_0x2d7db9=JSON['parse'](process[_0x0487('0x77')][0x3]);if(!_0x2d7db9[_0x0487('0x47')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x2d7db9[_0x0487('0x47')][_0x0487('0x10')]){throw new Error(_0x0487('0x7a'));}if(!_0x2d7db9[_0x0487('0x47')][_0x0487('0x5d')]){throw new Error(_0x0487('0x7b'));}var _0x2a74f1=0x0;if(_0x2d7db9['binding']['UserId']){_0x2a74f1=0x1;}if(!_0x2d7db9[_0x0487('0x21')]){throw new Error(_0x0487('0x7c'));}}catch(_0x4ab454){throw new Error(_0x0487('0x7d'));}var _0x2fd24f=[];try{_0x2fd24f=_['map'](JSON[_0x0487('0x4c')](process['argv'][0x4]),'id');}catch(_0x267813){logger['info'](_0x0487('0x7e'));}main(_0x59e649,_0x2d7db9,_0x2fd24f,_0x2a74f1);}validate();process['on'](_0x0487('0x7f'),handleStop);process['on'](_0x0487('0x80'),handleUncaughtException);
\ No newline at end of file
+var _0xd1fd=['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_has_cm_lists','campaigns_has_cm_lists','CampaignId','campaigns_has_cm_blacklists','campaigns','each','finish','affectedRows','unlink','complete','argv','root','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','parse','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','util','bluebird','moment','../../../mysqldb','import','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','createdAt','updatedAt','UserId','recallme','select','fields','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','cm_contacts.ListId','cm_hopper_black','ContactId','ListId','ListId\x20=\x20?','toString','keys','CompanyId','cm_contacts','deletedAt\x20IS\x20NULL','MIN(id)','min_id','info','Received\x20SIGINT','error','message','exit','errors','code','query','push','catch','main','stringify','send','binding','socket_timestamp','server/files/tmp','.csv','header','writeFileSync','createReadStream','data','length','rows','hasOwnProperty','trim','replace','scheduledat','isValid','priority','isNaN','isNumber','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','contact:import:','Abort\x20parser','abort','SystemError','duplicates'];(function(_0x580308,_0x569772){var _0x1e20dc=function(_0x1d7030){while(--_0x1d7030){_0x580308['push'](_0x580308['shift']());}};_0x1e20dc(++_0x569772);}(_0xd1fd,0xa1));var _0xdd1f=function(_0x4b3e49,_0x9e566c){_0x4b3e49=_0x4b3e49-0x0;var _0x57e339=_0xd1fd[_0x4b3e49];return _0x57e339;};'use strict';var fs=require('fs');var path=require(_0xdd1f('0x0'));var _=require(_0xdd1f('0x1'));var Papa=require('papaparse');var util=require(_0xdd1f('0x2'));var BPromise=require(_0xdd1f('0x3'));var moment=require(_0xdd1f('0x4'));var squel=require('squel');var Redis=require('ioredis');var db=require(_0xdd1f('0x5'))['db'];var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xdd1f('0x6'));config[_0xdd1f('0x7')]=_['defaults'](config['redis'],{'host':_0xdd1f('0x8'),'port':0x18eb});var socket=require(_0xdd1f('0x9'))(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xdd1f('0xa')](_0xdd1f('0xb'));function isEmail(_0x1513a4){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))*$/[_0xdd1f('0xc')](_0x1513a4);}function selectNotIn(_0x5972ef,_0xde615a,_0x3d42a4,_0x339442,_0x346b75){return squel['select']()[_0xdd1f('0xd')](_0xdd1f('0xe'))[_0xdd1f('0xf')](_0x339442)[_0xdd1f('0x10')](_0xde615a,null,_0xde615a+_0xdd1f('0x11')+_0x339442+'.'+_0x3d42a4)[_0xdd1f('0x12')](_0x339442+'.'+_0x3d42a4+_0xdd1f('0x13')+_0x5972ef+'.'+_0x3d42a4)[_0xdd1f('0x12')](_0xde615a+_0xdd1f('0x14')+_0x346b75[_0xdd1f('0x10')]()+')');}function insertCmHopper(_0x1384a0,_0x31b47c,_0x200814,_0x10b771,_0x50e8c5){var _0x34c37f=[_0xdd1f('0x15'),_0xdd1f('0x16'),_0xdd1f('0x17'),'cm_contacts.ListId',_0x31b47c+'.'+_0x10b771,_0xdd1f('0x18'),_0xdd1f('0x19'),_0xdd1f('0x1a'),_0xdd1f('0x1b'),'\x22'+_0x50e8c5+'\x22'];return squel[_0xdd1f('0x1c')]()[_0xdd1f('0x1d')](_0xdd1f('0x1e'))[_0xdd1f('0x1f')](['phone','scheduledat','ContactId','ListId',_0x10b771,_0xdd1f('0x20'),_0xdd1f('0x21'),'priority',_0xdd1f('0x22'),_0xdd1f('0x23')],squel[_0xdd1f('0x24')]()[_0xdd1f('0x25')](_0x34c37f)['from'](_0x31b47c)['join']('cm_contacts',null,_0xdd1f('0x26')+_0x31b47c+_0xdd1f('0x27'))[_0xdd1f('0x10')](_0x200814,null,_0x200814+_0xdd1f('0x11')+_0x31b47c+'.'+_0x10b771)[_0xdd1f('0x12')](_0x31b47c+_0xdd1f('0x28'),_0x1384a0)[_0xdd1f('0x12')](_0xdd1f('0x29'),NOW)[_0xdd1f('0x12')](_0xdd1f('0x2a'),selectNotIn(_0x31b47c,_0x200814,_0x10b771,'cm_hopper',['\x22always\x22',_0xdd1f('0x2b')]))[_0xdd1f('0x12')](_0xdd1f('0x2a'),selectNotIn(_0x31b47c,_0x200814,_0x10b771,_0xdd1f('0x1e'),[_0xdd1f('0x2c')])))['toString']();}function insertCmHopperBlack(_0x14019a,_0x14d333,_0x288bcb,_0x382c29){var _0x547840=['cm_contacts.phone',_0xdd1f('0x17'),_0xdd1f('0x2d'),_0x14d333+'.'+_0x382c29,_0xdd1f('0x18'),_0xdd1f('0x19')];return squel[_0xdd1f('0x1c')]()['into'](_0xdd1f('0x2e'))[_0xdd1f('0x1f')]([_0xdd1f('0xe'),_0xdd1f('0x2f'),_0xdd1f('0x30'),_0x382c29,_0xdd1f('0x20'),'updatedAt'],squel[_0xdd1f('0x24')]()['fields'](_0x547840)[_0xdd1f('0xf')](_0x14d333)[_0xdd1f('0x10')]('cm_contacts',null,_0xdd1f('0x26')+_0x14d333+_0xdd1f('0x27'))[_0xdd1f('0x10')](_0x288bcb,null,_0x288bcb+'.id\x20=\x20'+_0x14d333+'.'+_0x382c29)['where'](_0x14d333+_0xdd1f('0x28'),_0x14019a)['where'](_0xdd1f('0x29'),NOW)['where'](_0xdd1f('0x2a'),squel[_0xdd1f('0x24')]()[_0xdd1f('0xd')]('phone')['from'](_0xdd1f('0x2e'))[_0xdd1f('0x12')](_0xdd1f('0x31'),_0x14019a)[_0xdd1f('0x12')](_0x382c29+'\x20=\x20?',_0x14d333+'.'+_0x382c29)))[_0xdd1f('0x32')]();}function insertCmContact(_0x6e284d,_0x58bc88,_0x4c9c2e,_0x54b8f5){var _0x236519=_['concat'](_[_0xdd1f('0x33')](_0x54b8f5),[_0xdd1f('0x30'),_0xdd1f('0x34'),_0xdd1f('0x20'),_0xdd1f('0x21')]);return squel['insert']()[_0xdd1f('0x1d')](_0xdd1f('0x35'))[_0xdd1f('0x1f')](_0x236519,squel['select']()['fields'](_0x236519)[_0xdd1f('0xf')](_0x58bc88)[_0xdd1f('0x12')]('('+_0x4c9c2e[_0xdd1f('0x10')](',')+')\x20NOT\x20IN\x20?',squel[_0xdd1f('0x24')]()[_0xdd1f('0x25')](_0x4c9c2e)['from'](_0xdd1f('0x35'))[_0xdd1f('0x12')](_0xdd1f('0x31'),_0x6e284d)[_0xdd1f('0x12')](_0xdd1f('0x36')))[_0xdd1f('0x12')]('id\x20IN\x20?',squel[_0xdd1f('0x24')]()[_0xdd1f('0xd')](_0xdd1f('0x37'),_0xdd1f('0x38'))['from'](_0x58bc88)['group'](_0x4c9c2e[_0xdd1f('0x10')](','))))['toString']();}function handleStop(){logger[_0xdd1f('0x39')](_0xdd1f('0x3a'));stopped=!![];}function handleUncaughtException(_0x3a16b5){logger[_0xdd1f('0x3b')](_0x3a16b5[_0xdd1f('0x3c')]);process[_0xdd1f('0x3d')](0x1);}function handleError(_0x2ca046,_0x252eed){stats[_0xdd1f('0x3e')]['push']({'name':_0x252eed[_0xdd1f('0x3f')],'message':_0x252eed['message'],'row':_0x2ca046});}function handleQuery(_0x234bcf){logger[_0xdd1f('0x39')](_0x234bcf);return db['sequelize'][_0xdd1f('0x40')](_0x234bcf)['spread'](function(_0xd547b1){results[_0xdd1f('0x41')](_0xd547b1);})[_0xdd1f('0x42')](function(_0x149038){logger[_0xdd1f('0x3b')](_0x149038[_0xdd1f('0x3c')]);});}function main(_0x313a80,_0x51bbba,_0x8d70c8,_0x1d5f50){logger[_0xdd1f('0x39')](_0xdd1f('0x43'),_0x313a80,JSON[_0xdd1f('0x44')](_0x51bbba));process[_0xdd1f('0x45')]('start');var _0x2e7196=_0x51bbba[_0xdd1f('0x46')];var _0x2e11c5=_0x51bbba[_0xdd1f('0x47')];var _0x45e62e=path[_0xdd1f('0x10')](config['root'],_0xdd1f('0x48'),_0x2e11c5+_0xdd1f('0x49'));var _0x27b5e5=_[_0xdd1f('0x33')](_0x2e7196)[_0xdd1f('0x10')]();logger[_0xdd1f('0x39')](_0xdd1f('0x4a'),_0x27b5e5);fs[_0xdd1f('0x4b')](_0x45e62e,_0x27b5e5+'\x0a');Papa['parse'](fs[_0xdd1f('0x4c')](_0x313a80),{'header':!![],'skipEmptyLines':!![],'step':function(_0x435ffe,_0x1f2973){try{for(var _0x2ef892=0x0,_0x1b38e1=[];_0x2ef892<_0x435ffe[_0xdd1f('0x4d')][_0xdd1f('0x4e')];_0x2ef892++){stats[_0xdd1f('0x4f')]+=0x1;if(_0x435ffe[_0xdd1f('0x3e')][_0x2ef892]){handleError(_0x435ffe[_0xdd1f('0x4d')][_0x2ef892],_0x435ffe[_0xdd1f('0x3e')][_0x2ef892]);}else{var _0x4bcdab=[];for(var _0x43969c in _0x2e7196){if(_0x2e7196[_0xdd1f('0x50')](_0x43969c)){if(_0x435ffe['data'][_0x2ef892][_0x2e7196[_0x43969c]]){var _0x24546a=_[_0xdd1f('0x51')](_0x435ffe[_0xdd1f('0x4d')][_0x2ef892][_0x2e7196[_0x43969c]][_0xdd1f('0x52')](/"/g,'\x27'));switch(_0x43969c){case _0xdd1f('0x53'):var _0x595a54=moment(_0x24546a,_0xdd1f('0xb'),!![]);if(_0x595a54[_0xdd1f('0x54')]()){_0x1b38e1[_0xdd1f('0x41')]('\x22'+_0x24546a+'\x22');}else{_0x4bcdab[_0xdd1f('0x41')]('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case _0xdd1f('0x55'):var _0x544b00=parseInt(_0x24546a);_0x24546a=_[_0xdd1f('0x56')](_0x544b00)||_0x544b00<0x0||_0x544b00>0x4?_0x1d5f50?0x3:0x2:_0x544b00;_0x1b38e1[_0xdd1f('0x41')]('\x22'+_0x24546a+'\x22');break;case _0xdd1f('0x22'):var _0xc97dee=parseInt(_0x24546a);if(_[_0xdd1f('0x57')](_0xc97dee)&&_[_0xdd1f('0x58')](_0x8d70c8,_0xc97dee)){_0x1b38e1['push']('\x22'+_0xc97dee+'\x22');}else{_0x4bcdab[_0xdd1f('0x41')](_0xdd1f('0x59'));}break;case'email':if(isEmail(_0x24546a)){_0x1b38e1[_0xdd1f('0x41')]('\x22'+_0x24546a+'\x22');}else{_0x4bcdab[_0xdd1f('0x41')](_0xdd1f('0x5a'));}break;case _0xdd1f('0x5b'):var _0x55e74d=moment(_0x24546a,_0xdd1f('0x5c'),!![]);if(_0x55e74d['isValid']()){_0x1b38e1[_0xdd1f('0x41')]('\x22'+_0x24546a+'\x22');}else{_0x4bcdab[_0xdd1f('0x41')](_0xdd1f('0x5d'));}break;default:_0x1b38e1[_0xdd1f('0x41')]('\x22'+_0x24546a+'\x22');}}else{switch(_0x43969c){case _0xdd1f('0x5e'):case _0xdd1f('0xe'):_0x4bcdab[_0xdd1f('0x41')](_0x43969c+_0xdd1f('0x5f'));break;default:_0x1b38e1[_0xdd1f('0x41')]('\x22\x22');}}}}if(_0x4bcdab[_0xdd1f('0x4e')]){handleError(_0x435ffe[_0xdd1f('0x4d')][_0x2ef892],{'code':_0xdd1f('0x60'),'message':_0x4bcdab[_0xdd1f('0x10')]()});}else{fs[_0xdd1f('0x61')](_0x45e62e,_0x1b38e1[_0xdd1f('0x10')]()+'\x0a');}_0x1b38e1=[];}if(!(stats[_0xdd1f('0x4f')]%0xc8)){socket['emit'](_0xdd1f('0x62')+_0x2e11c5,stats);stats[_0xdd1f('0x3e')]=[];}}if(stopped){logger[_0xdd1f('0x39')](_0xdd1f('0x63'));_0x1f2973[_0xdd1f('0x64')]();}}catch(_0x276bee){handleError(_0x435ffe[_0xdd1f('0x4d')][_0x2ef892],{'code':_0xdd1f('0x65'),'message':_0x276bee[_0xdd1f('0x3c')]});logger[_0xdd1f('0x3b')]('step',_0x276bee[_0xdd1f('0x3c')]);}},'complete':function(){try{var _0x3ebfe8=[];var _0x5027d3='cm_contacts';if(_0x51bbba[_0xdd1f('0x66')]&&_0x51bbba[_0xdd1f('0x66')][_0xdd1f('0x4e')]){_0x5027d3=_0xdd1f('0x67')+_0x2e11c5;_0x3ebfe8[_0xdd1f('0x41')](_0xdd1f('0x68')+_0x5027d3+_0xdd1f('0x69'));}var _0x29aeb8=util[_0xdd1f('0xa')](_0xdd1f('0x6a'),_0x45e62e,_0x5027d3,_0x27b5e5,_0x51bbba[_0xdd1f('0x30')],_0x51bbba['CompanyId']||null,NOW,NOW);if(_[_0xdd1f('0x6b')](_0x2e7196[_0xdd1f('0x53')])){_0x29aeb8+=_0xdd1f('0x6c');}_0x3ebfe8[_0xdd1f('0x41')](_0x29aeb8);if(_0x51bbba[_0xdd1f('0x66')]&&_0x51bbba[_0xdd1f('0x66')][_0xdd1f('0x4e')]){_0x3ebfe8['push'](insertCmContact(_0x51bbba[_0xdd1f('0x30')],_0x5027d3,_0x51bbba['duplicates'],_0x2e7196));_0x3ebfe8[_0xdd1f('0x41')](_0xdd1f('0x6d')+_0x5027d3+';');}_0x3ebfe8[_0xdd1f('0x41')](insertCmHopper(_0x51bbba[_0xdd1f('0x30')],_0xdd1f('0x6e'),'voice_queues','VoiceQueueId',_0x1d5f50));_0x3ebfe8[_0xdd1f('0x41')](insertCmHopperBlack(_0x51bbba['ListId'],'voice_queues_has_cm_blacklists','voice_queues','VoiceQueueId'));_0x3ebfe8[_0xdd1f('0x41')](insertCmHopper(_0x51bbba[_0xdd1f('0x30')],_0xdd1f('0x6f'),'campaigns',_0xdd1f('0x70'),_0x1d5f50));_0x3ebfe8['push'](insertCmHopperBlack(_0x51bbba[_0xdd1f('0x30')],_0xdd1f('0x71'),_0xdd1f('0x72'),_0xdd1f('0x70')));BPromise[_0xdd1f('0x73')](_0x3ebfe8,handleQuery)['then'](function(_0x34c5c8){stats[_0xdd1f('0x74')]=!![];stats[_0xdd1f('0x75')]=_0x51bbba[_0xdd1f('0x66')]&&_0x51bbba['duplicates'][_0xdd1f('0x4e')]?results[0x2]['affectedRows']:results[0x0][_0xdd1f('0x75')];socket['emit']('contact:import:'+_0x2e11c5,stats);fs[_0xdd1f('0x76')](_0x313a80);fs['unlink'](_0x45e62e);process[_0xdd1f('0x3d')](0x0);})[_0xdd1f('0x42')](function(_0x2245a3){logger[_0xdd1f('0x3b')](_0x2245a3[_0xdd1f('0x3c')]);process[_0xdd1f('0x3d')](0x1);});}catch(_0x2d2f71){logger[_0xdd1f('0x3b')](_0xdd1f('0x77'),_0x2d2f71[_0xdd1f('0x3c')]);process[_0xdd1f('0x3d')](0x1);}},'error':function(_0x1e69b3,_0x19755f,_0x5247b6,_0x5e7328){throw new Error(_0x5e7328);}});}function validate(){if(process[_0xdd1f('0x78')]&&process['argv']['length']<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x231dc6=path[_0xdd1f('0x10')](config[_0xdd1f('0x79')],_0xdd1f('0x48'),process['argv'][0x2]);if(!fs['existsSync'](_0x231dc6)){throw new Error(_0xdd1f('0x7a'));}var _0x46d613={};try{_0x46d613=JSON['parse'](process[_0xdd1f('0x78')][0x3]);if(!_0x46d613[_0xdd1f('0x46')]){throw new Error(_0xdd1f('0x7b'));}if(!_0x46d613['binding'][_0xdd1f('0xe')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x46d613['binding'][_0xdd1f('0x5e')]){throw new Error(_0xdd1f('0x7c'));}var _0x1c2850=0x0;if(_0x46d613[_0xdd1f('0x46')][_0xdd1f('0x22')]){_0x1c2850=0x1;}if(!_0x46d613[_0xdd1f('0x30')]){throw new Error(_0xdd1f('0x7d'));}}catch(_0x3888b4){throw new Error(_0xdd1f('0x7e'));}var _0x3fd2e0=[];try{_0x3fd2e0=_[_0xdd1f('0x7f')](JSON[_0xdd1f('0x80')](process[_0xdd1f('0x78')][0x4]),'id');}catch(_0xa31ba6){logger['info'](_0xdd1f('0x81'));}main(_0x231dc6,_0x46d613,_0x3fd2e0,_0x1c2850);}validate();process['on'](_0xdd1f('0x82'),handleStop);process['on'](_0xdd1f('0x83'),handleUncaughtException);
\ No newline at end of file
index 0d62a4d..5dab18a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f37=['membername','uniqueid','starttime','***\x20Time\x20Info\x20***','answertime','endtime','Duration','getSubjects','string','[xCALLY\x20Ticket]','voice','inbound','push','queue','variable','outbound','destcalleridnum','getDescriptions','toLowerCase','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','calleridnum','Caller\x20Name','calleridname','Call\x20To','destexten','UniqueId','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','Agent\x20Number','Agent\x20Ring','Agent\x20Connect','Agent\x20Complete','agentcompleteAt','Hold\x20Time','Talk\x20Time','talktime','Called\x20Number','Member\x20Name'];(function(_0x783767,_0x382fbc){var _0x1df5a1=function(_0x5c622b){while(--_0x5c622b){_0x783767['push'](_0x783767['shift']());}};_0x1df5a1(++_0x382fbc);}(_0x6f37,0x1ab));var _0x76f3=function(_0x40d548,_0x233d52){_0x40d548=_0x40d548-0x0;var _0x1791f8=_0x6f37[_0x40d548];return _0x1791f8;};'use strict';exports[_0x76f3('0x0')]=function(_0x22d823,_0x35d8f4){var _0x545bb1=[{'type':_0x76f3('0x1'),'content':_0x76f3('0x2'),'variableName':null}];switch(_0x22d823['toLowerCase']()){case _0x76f3('0x3'):switch(_0x35d8f4['toLowerCase']()){case _0x76f3('0x4'):_0x545bb1[_0x76f3('0x5')]({'type':'variable','content':'','variableName':_0x76f3('0x6')});_0x545bb1[_0x76f3('0x5')]({'type':_0x76f3('0x7'),'content':'','variableName':'calleridnum'});break;case _0x76f3('0x8'):_0x545bb1[_0x76f3('0x5')]({'type':_0x76f3('0x1'),'content':'Outbound\x20Call','variableName':null});_0x545bb1[_0x76f3('0x5')]({'type':_0x76f3('0x7'),'content':'','variableName':_0x76f3('0x9')});break;}}return _0x545bb1;};exports[_0x76f3('0xa')]=function(_0xf4b489,_0x35fe60){var _0x51c69d=[];switch(_0xf4b489[_0x76f3('0xb')]()){case _0x76f3('0x3'):switch(_0x35fe60[_0x76f3('0xb')]()){case _0x76f3('0x4'):_0x51c69d=[{'type':'string','content':_0x76f3('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0xe'),'keyType':'variable','variableName':_0x76f3('0xf')},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x10'),'keyType':_0x76f3('0x7'),'variableName':_0x76f3('0x11')},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x12'),'keyType':_0x76f3('0x7'),'variableName':_0x76f3('0x13')},{'type':_0x76f3('0xd'),'content':'','key':'Queue','keyType':_0x76f3('0x7'),'variableName':'queue'},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x14'),'keyType':_0x76f3('0x7'),'variableName':'uniqueid'},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x15'),'keyType':_0x76f3('0x7'),'variableName':_0x76f3('0x16')},{'type':_0x76f3('0x1'),'content':_0x76f3('0x17'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x76f3('0x18'),'keyType':_0x76f3('0x7'),'variableName':'destcalleridname'},{'type':'keyValue','content':'','key':_0x76f3('0x19'),'keyType':_0x76f3('0x7'),'variableName':_0x76f3('0x9')},{'type':'string','content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x1a'),'keyType':'variable','variableName':_0x76f3('0x16')},{'type':'keyValue','content':'','key':_0x76f3('0x1b'),'keyType':_0x76f3('0x7'),'variableName':'agentconnectAt'},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x1c'),'keyType':_0x76f3('0x7'),'variableName':_0x76f3('0x1d')},{'type':'keyValue','content':'','key':_0x76f3('0x1e'),'keyType':'variable','variableName':'holdtime'},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x1f'),'keyType':_0x76f3('0x7'),'variableName':_0x76f3('0x20')}];break;case _0x76f3('0x8'):_0x51c69d=[{'type':_0x76f3('0x1'),'content':'***\x20Call\x20Info\x20***','variableName':null},{'type':'keyValue','content':'','key':_0x76f3('0x21'),'keyType':_0x76f3('0x7'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x22'),'keyType':_0x76f3('0x7'),'keyContent':'','variableName':_0x76f3('0x23')},{'type':_0x76f3('0xd'),'content':'','key':'UniqueId','keyType':'variable','keyContent':'','variableName':_0x76f3('0x24')},{'type':'keyValue','content':'','key':'Date','keyType':_0x76f3('0x7'),'keyContent':'','variableName':_0x76f3('0x25')},{'type':_0x76f3('0x1'),'content':_0x76f3('0x26')},{'type':_0x76f3('0xd'),'content':'','key':'Answer\x20Time','keyType':_0x76f3('0x7'),'keyContent':'','variableName':_0x76f3('0x27')},{'type':_0x76f3('0xd'),'content':'','key':'Complete\x20Time','keyType':'variable','keyContent':'','variableName':_0x76f3('0x28')},{'type':'keyValue','content':'','key':_0x76f3('0x29'),'keyType':_0x76f3('0x7'),'keyContent':'','variableName':'duration'},{'type':_0x76f3('0xd'),'content':'','key':'Billable\x20Time','keyType':_0x76f3('0x7'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x51c69d;};
\ No newline at end of file
+var _0x1371=['duration','Billable\x20Time','billableseconds','string','[xCALLY\x20Ticket]','toLowerCase','voice','inbound','push','variable','calleridnum','outbound','Outbound\x20Call','destcalleridnum','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','queue','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','agentcompleteAt','Hold\x20Time','holdtime','talktime','***\x20Call\x20Info\x20***','Called\x20Number','Member\x20Name','membername','UniqueId','uniqueid','starttime','Answer\x20Time','answertime','Duration'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1371,0x145));var _0x1137=function(_0x41d2ff,_0x32486f){_0x41d2ff=_0x41d2ff-0x0;var _0x16389d=_0x1371[_0x41d2ff];return _0x16389d;};'use strict';exports['getSubjects']=function(_0x3b26c4,_0x1d0cb3){var _0x2ba076=[{'type':_0x1137('0x0'),'content':_0x1137('0x1'),'variableName':null}];switch(_0x3b26c4[_0x1137('0x2')]()){case _0x1137('0x3'):switch(_0x1d0cb3['toLowerCase']()){case _0x1137('0x4'):_0x2ba076[_0x1137('0x5')]({'type':_0x1137('0x6'),'content':'','variableName':'queue'});_0x2ba076[_0x1137('0x5')]({'type':_0x1137('0x6'),'content':'','variableName':_0x1137('0x7')});break;case _0x1137('0x8'):_0x2ba076[_0x1137('0x5')]({'type':_0x1137('0x0'),'content':_0x1137('0x9'),'variableName':null});_0x2ba076[_0x1137('0x5')]({'type':_0x1137('0x6'),'content':'','variableName':_0x1137('0xa')});break;}}return _0x2ba076;};exports['getDescriptions']=function(_0x275366,_0x4e24b5){var _0x58a372=[];switch(_0x275366[_0x1137('0x2')]()){case _0x1137('0x3'):switch(_0x4e24b5['toLowerCase']()){case _0x1137('0x4'):_0x58a372=[{'type':_0x1137('0x0'),'content':'***\x20Call\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0xc'),'keyType':_0x1137('0x6'),'variableName':_0x1137('0x7')},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0xd'),'keyType':_0x1137('0x6'),'variableName':_0x1137('0xe')},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0xf'),'keyType':_0x1137('0x6'),'variableName':_0x1137('0x10')},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0x11'),'keyType':_0x1137('0x6'),'variableName':_0x1137('0x12')},{'type':_0x1137('0xb'),'content':'','key':'UniqueId','keyType':'variable','variableName':'uniqueid'},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0x13'),'keyType':'variable','variableName':_0x1137('0x14')},{'type':'string','content':_0x1137('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0x16'),'keyType':_0x1137('0x6'),'variableName':_0x1137('0x17')},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0x18'),'keyType':'variable','variableName':_0x1137('0xa')},{'type':_0x1137('0x0'),'content':_0x1137('0x19'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x1137('0x1a'),'keyType':_0x1137('0x6'),'variableName':_0x1137('0x14')},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0x1b'),'keyType':_0x1137('0x6'),'variableName':_0x1137('0x1c')},{'type':_0x1137('0xb'),'content':'','key':'Agent\x20Complete','keyType':_0x1137('0x6'),'variableName':_0x1137('0x1d')},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0x1e'),'keyType':_0x1137('0x6'),'variableName':_0x1137('0x1f')},{'type':_0x1137('0xb'),'content':'','key':'Talk\x20Time','keyType':'variable','variableName':_0x1137('0x20')}];break;case _0x1137('0x8'):_0x58a372=[{'type':_0x1137('0x0'),'content':_0x1137('0x21'),'variableName':null},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0x22'),'keyType':_0x1137('0x6'),'keyContent':'','variableName':_0x1137('0xa')},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0x23'),'keyType':'variable','keyContent':'','variableName':_0x1137('0x24')},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0x25'),'keyType':_0x1137('0x6'),'keyContent':'','variableName':_0x1137('0x26')},{'type':'keyValue','content':'','key':_0x1137('0x13'),'keyType':_0x1137('0x6'),'keyContent':'','variableName':_0x1137('0x27')},{'type':_0x1137('0x0'),'content':_0x1137('0x19')},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0x28'),'keyType':_0x1137('0x6'),'keyContent':'','variableName':_0x1137('0x29')},{'type':_0x1137('0xb'),'content':'','key':'Complete\x20Time','keyType':_0x1137('0x6'),'keyContent':'','variableName':'endtime'},{'type':_0x1137('0xb'),'content':'','key':_0x1137('0x2a'),'keyType':_0x1137('0x6'),'keyContent':'','variableName':_0x1137('0x2b')},{'type':'keyValue','content':'','key':_0x1137('0x2c'),'keyType':_0x1137('0x6'),'keyContent':'','variableName':_0x1137('0x2d')}];break;}}return _0x58a372;};
\ No newline at end of file
index 6b05ba1..84f0611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf79f=['then','update','info','catch','tracked','user','query','omit','body','html','phone','fax','mobile','lodash','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','InteractionId','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','stringify','upperFirst','Interaction','findOne'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf79f,0xc1));var _0xff79=function(_0x1d4923,_0x4e222f){_0x1d4923=_0x1d4923-0x0;var _0x14ea9a=_0xf79f[_0x1d4923];return _0x14ea9a;};'use strict';var _=require(_0xff79('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0xff79('0x1'))(_0xff79('0x2')),'mail':require(_0xff79('0x1'))(_0xff79('0x3')),'fax':require(_0xff79('0x1'))(_0xff79('0x4')),'sms':require(_0xff79('0x1'))(_0xff79('0x5')),'chat':require(_0xff79('0x1'))(_0xff79('0x6')),'whatsapp':require(_0xff79('0x1'))(_0xff79('0x7'))};function getInteractionId(_0xd4543a,_0x449e99,_0x57f046){if(_0xd4543a&&_0xd4543a[_['upperFirst'](_0x57f046)+_0xff79('0x8')]){return _0xd4543a[_['upperFirst'](_0x57f046)+_0xff79('0x8')];}else if(_0xd4543a&&_0xd4543a['id']){return _0xd4543a['id'];}else if(_0x449e99&&_0x449e99['id']){return _0x449e99['id'];}else{return'unknown';}}function log(_0xe1f5ff,_0x314a67,_0x48a95d,_0x4e34ec,_0x546a38,_0x29e270){loggers[_0x546a38[_0xff79('0x9')]()][_0xe1f5ff](_0xff79('0xa'),_0x29e270[_0xff79('0xb')](),_0x314a67?_0x314a67['id']:null,_0x314a67?_0x314a67[_0xff79('0xc')]:null,_0x314a67?_0x314a67['role']:null,getInteractionId(_0x48a95d,_0x4e34ec,_0x546a38),_0x48a95d?JSON[_0xff79('0xd')](_0x48a95d):'null');}function updateUser(_0x5af907,_0x222b04,_0x1160f5,_0x4ab21c,_0x24f891){db[_[_0xff79('0xe')](_0x4ab21c)+_0xff79('0xf')][_0xff79('0x10')]({'where':{'id':getInteractionId(_0x222b04,_0x1160f5,_0x4ab21c)}})[_0xff79('0x11')](function(_0x260dad){if(_0x260dad){return _0x260dad[_0xff79('0x12')]({'UserId':_0x5af907?_0x5af907['id']:null});}})['then'](function(_0x27117b){if(_0x27117b){log(_0xff79('0x13'),_0x5af907,_0x222b04,_0x1160f5,_0x4ab21c,_0x24f891);}})[_0xff79('0x14')](function(){log('error',_0x5af907,_0x222b04,_0x1160f5,_0x4ab21c,_0x24f891);});}exports[_0xff79('0x15')]=function(_0x4696c7,_0x269be7){return function(_0x1dc750,_0x529977,_0x3283ab){var _0x122de8=_0x1dc750[_0xff79('0x16')];var _0x440b63={};var _0x3d1b1c=_0x1dc750[_0xff79('0x17')];if(_0x440b63){_0x440b63=_['clone'](_0x1dc750['body']);_0x440b63=_[_0xff79('0x18')](_0x440b63,[_0xff79('0x19'),_0xff79('0x1a'),_0xff79('0x1b'),_0xff79('0x1c'),_0xff79('0x1d')]);}updateUser(_0x122de8,_0x440b63,_0x3d1b1c,_0x4696c7,_0x269be7);_0x3283ab(null);};};
\ No newline at end of file
+var _0x4ec1=['InteractionId','unknown','toUpperCase','name','stringify','Interaction','findOne','then','catch','tracked','user','query','clone','body','html','fax','mobile','lodash','../../mysqldb','openchannel-interactions','../../config/logger','mail-interactions','upperFirst'];(function(_0x3aa2e8,_0x2b9050){var _0xc3d50f=function(_0x587769){while(--_0x587769){_0x3aa2e8['push'](_0x3aa2e8['shift']());}};_0xc3d50f(++_0x2b9050);}(_0x4ec1,0x84));var _0x14ec=function(_0x1e287c,_0x370b91){_0x1e287c=_0x1e287c-0x0;var _0x47fccc=_0x4ec1[_0x1e287c];return _0x47fccc;};'use strict';var _=require(_0x14ec('0x0'));var db=require(_0x14ec('0x1'))['db'];var loggers={'openchannel':require('../../config/logger')(_0x14ec('0x2')),'mail':require(_0x14ec('0x3'))(_0x14ec('0x4')),'fax':require(_0x14ec('0x3'))('fax-interactions'),'sms':require(_0x14ec('0x3'))('sms-interactions'),'chat':require(_0x14ec('0x3'))('chat-interactions'),'whatsapp':require(_0x14ec('0x3'))('whatsapp-interactions')};function getInteractionId(_0x30d175,_0x275b48,_0x57f5be){if(_0x30d175&&_0x30d175[_[_0x14ec('0x5')](_0x57f5be)+'InteractionId']){return _0x30d175[_[_0x14ec('0x5')](_0x57f5be)+_0x14ec('0x6')];}else if(_0x30d175&&_0x30d175['id']){return _0x30d175['id'];}else if(_0x275b48&&_0x275b48['id']){return _0x275b48['id'];}else{return _0x14ec('0x7');}}function log(_0x4e91b8,_0x4025f0,_0x432a6f,_0x59b4d8,_0x52271a,_0x41ff72){loggers[_0x52271a['toLowerCase']()][_0x4e91b8]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x41ff72[_0x14ec('0x8')](),_0x4025f0?_0x4025f0['id']:null,_0x4025f0?_0x4025f0[_0x14ec('0x9')]:null,_0x4025f0?_0x4025f0['role']:null,getInteractionId(_0x432a6f,_0x59b4d8,_0x52271a),_0x432a6f?JSON[_0x14ec('0xa')](_0x432a6f):'null');}function updateUser(_0x268b7e,_0x5bb9df,_0x405952,_0x45fab3,_0x1f8acf){db[_[_0x14ec('0x5')](_0x45fab3)+_0x14ec('0xb')][_0x14ec('0xc')]({'where':{'id':getInteractionId(_0x5bb9df,_0x405952,_0x45fab3)}})[_0x14ec('0xd')](function(_0x357273){if(_0x357273){return _0x357273['update']({'UserId':_0x268b7e?_0x268b7e['id']:null});}})['then'](function(_0x501916){if(_0x501916){log('info',_0x268b7e,_0x5bb9df,_0x405952,_0x45fab3,_0x1f8acf);}})[_0x14ec('0xe')](function(){log('error',_0x268b7e,_0x5bb9df,_0x405952,_0x45fab3,_0x1f8acf);});}exports[_0x14ec('0xf')]=function(_0x2d25c2,_0x56b8fc){return function(_0x2ee25d,_0x29a9a6,_0xed913a){var _0x344f81=_0x2ee25d[_0x14ec('0x10')];var _0x584cda={};var _0x8c810=_0x2ee25d[_0x14ec('0x11')];if(_0x584cda){_0x584cda=_[_0x14ec('0x12')](_0x2ee25d['body']);_0x584cda=_['omit'](_0x584cda,[_0x14ec('0x13'),_0x14ec('0x14'),'phone',_0x14ec('0x15'),_0x14ec('0x16')]);}updateUser(_0x344f81,_0x584cda,_0x8c810,_0x2d25c2,_0x56b8fc);_0xed913a(null);};};
\ No newline at end of file
index fa660e1..adf42f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66ef=['update','utf8','final','hasOwnProperty','use','License','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','users','user','crypto','composable-middleware','../../config/environment','data1','license','split','aes-256-ctr','format'];(function(_0x4d394d,_0x40e7b3){var _0x4f0003=function(_0x56d25d){while(--_0x56d25d){_0x4d394d['push'](_0x4d394d['shift']());}};_0x4f0003(++_0x40e7b3);}(_0x66ef,0x19a));var _0xf66e=function(_0x540a46,_0x3dd2bc){_0x540a46=_0x540a46-0x0;var _0x5eb168=_0x66ef[_0x540a46];return _0x5eb168;};'use strict';var crypto=require(_0xf66e('0x0'));var util=require('util');var compose=require(_0xf66e('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xf66e('0x2'));function getValueFromLicense(_0x27fc7d,_0x2244ff){if(_0x27fc7d&&_0x2244ff){if(_0x2244ff[_0xf66e('0x3')]&&_0x2244ff[_0xf66e('0x4')]){var _0x445a50=_0x2244ff[_0xf66e('0x3')];var _0x2023c2=_0x2244ff['license'];var _0x1e1a53=_0x445a50[_0xf66e('0x5')]('-')[0x4];var _0x5605ba=_0x445a50['split']('-')[0x0];var _0x119319=crypto['createDecipher'](_0xf66e('0x6'),util[_0xf66e('0x7')]('%s:%s:%s',_0x1e1a53,_0x445a50,_0x5605ba));var _0x277e55=_0x119319[_0xf66e('0x8')](_0x2023c2,'base64',_0xf66e('0x9'));_0x277e55+=_0x119319[_0xf66e('0xa')]('utf8');var _0x9b9c23=JSON['parse'](_0x277e55);return _0x9b9c23[_0xf66e('0xb')](_0x27fc7d)?_0x9b9c23[_0x27fc7d]:null;}}return null;}function isLimit(_0x2137b0,_0x313adc,_0x291af5,_0x221304){var _0x157810=_0x313adc;return compose()[_0xf66e('0xc')](function(_0x515b8c,_0x469a2f,_0x1fb496){return db[_0xf66e('0xd')][_0xf66e('0xe')]({'where':{'id':0x1},'raw':!![]})[_0xf66e('0xf')](function(_0x516f3f){var _0x32bfd8=getValueFromLicense(_0x2137b0,_0x516f3f);return _0x32bfd8?_0x32bfd8:_0x157810;})[_0xf66e('0xf')](function(_0x179d52){_0x157810=_0x179d52;return _0x291af5[_0xf66e('0x10')](_0x221304);})['then'](function(_0xda95c5){if(_0xda95c5>=_0x157810){return _0x469a2f[_0xf66e('0x11')](0x193)[_0xf66e('0x12')]({'message':util[_0xf66e('0x7')](_0xf66e('0x13'),_0x2137b0)});}_0x1fb496();})['catch'](function(_0x3e6f2e){_0x1fb496(_0x3e6f2e);});});}function isUserLimit(){return isLimit(_0xf66e('0x14'),0x1,db['User'],{'where':{'$or':[{'role':'admin'},{'role':_0xf66e('0x15')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
+var _0xd4ab=['license','split','createDecipher','aes-256-ctr','%s:%s:%s','utf8','final','parse','hasOwnProperty','License','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','users','User','admin','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb','../../config/environment','data1'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0xd4ab,0x174));var _0xbd4a=function(_0x3be8b2,_0x459059){_0x3be8b2=_0x3be8b2-0x0;var _0x1a4d7c=_0xd4ab[_0x3be8b2];return _0x1a4d7c;};'use strict';var crypto=require(_0xbd4a('0x0'));var util=require(_0xbd4a('0x1'));var compose=require(_0xbd4a('0x2'));var db=require(_0xbd4a('0x3'))['db'];var config=require(_0xbd4a('0x4'));function getValueFromLicense(_0xecba15,_0x36b93f){if(_0xecba15&&_0x36b93f){if(_0x36b93f[_0xbd4a('0x5')]&&_0x36b93f[_0xbd4a('0x6')]){var _0xfd3c33=_0x36b93f[_0xbd4a('0x5')];var _0x408b97=_0x36b93f['license'];var _0x3d9fc7=_0xfd3c33[_0xbd4a('0x7')]('-')[0x4];var _0x5a1e24=_0xfd3c33['split']('-')[0x0];var _0x9e4413=crypto[_0xbd4a('0x8')](_0xbd4a('0x9'),util['format'](_0xbd4a('0xa'),_0x3d9fc7,_0xfd3c33,_0x5a1e24));var _0xcd040d=_0x9e4413['update'](_0x408b97,'base64',_0xbd4a('0xb'));_0xcd040d+=_0x9e4413[_0xbd4a('0xc')](_0xbd4a('0xb'));var _0x4ccf8d=JSON[_0xbd4a('0xd')](_0xcd040d);return _0x4ccf8d[_0xbd4a('0xe')](_0xecba15)?_0x4ccf8d[_0xecba15]:null;}}return null;}function isLimit(_0x1c98ce,_0x4558de,_0x1d81f8,_0x14325a){var _0x1fc43b=_0x4558de;return compose()['use'](function(_0x448abf,_0x589ed6,_0x257db9){return db[_0xbd4a('0xf')][_0xbd4a('0x10')]({'where':{'id':0x1},'raw':!![]})[_0xbd4a('0x11')](function(_0x62b27f){var _0x55eee0=getValueFromLicense(_0x1c98ce,_0x62b27f);return _0x55eee0?_0x55eee0:_0x1fc43b;})[_0xbd4a('0x11')](function(_0x547455){_0x1fc43b=_0x547455;return _0x1d81f8[_0xbd4a('0x12')](_0x14325a);})[_0xbd4a('0x11')](function(_0x3657ab){if(_0x3657ab>=_0x1fc43b){return _0x589ed6[_0xbd4a('0x13')](0x193)[_0xbd4a('0x14')]({'message':util['format'](_0xbd4a('0x15'),_0x1c98ce)});}_0x257db9();})['catch'](function(_0x1bbcc9){_0x257db9(_0x1bbcc9);});});}function isUserLimit(){return isLimit(_0xbd4a('0x16'),0x1,db[_0xbd4a('0x17')],{'where':{'$or':[{'role':_0xbd4a('0x18')},{'role':_0xbd4a('0x19')}]}});}exports[_0xbd4a('0x1a')]=isUserLimit;
\ No newline at end of file
index 9bb076c..3e8b9cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e7e=['$ne','$notIn','\x20IS\x20NULL)','IN\x20?','NOT\x20IN\x20?','$eq','=\x20?','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','<=\x20?','>=\x20?','BETWEEN\x20?\x20AND\x20?','$in','start','$substring','$startsWith','pop','utcOffset','hours','minutes','seconds','lodash','startsWith','[$or]','replace','split','slice','forEach','shift','filter','indexOf','conditions','push','DATE','operator','$between','value','includes','$gt','$lte','add','days','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20'];(function(_0x5da789,_0xfc3d85){var _0x477021=function(_0x355fa1){while(--_0x355fa1){_0x5da789['push'](_0x5da789['shift']());}};_0x477021(++_0xfc3d85);}(_0x8e7e,0x1b8));var _0xe8e7=function(_0x139c15,_0x4da83e){_0x139c15=_0x139c15-0x0;var _0x116da1=_0x8e7e[_0x139c15];return _0x116da1;};'use strict';var _=require(_0xe8e7('0x0'));var moment=require('moment');exports['parseSearch']=function(_0x5318d1){var _0x1dcb9d={'conditions':[]};_0x1dcb9d['sqlOperator']=_[_0xe8e7('0x1')](_0x5318d1,_0xe8e7('0x2'))?'or':'and';var _0x3d47da=_0x5318d1['replace']('[$and]','')[_0xe8e7('0x3')](_0xe8e7('0x2'),'')[_0xe8e7('0x4')]('||');for(var _0x342133=0x0;_0x342133<_0x3d47da['length'];_0x342133++){var _0xd63392=_0x3d47da[_0x342133][_0xe8e7('0x4')](':=');var _0x329fd8=_0xd63392[0x0];var _0xda6639=_0xd63392[_0xe8e7('0x5')](0x1);_0xda6639[_0xe8e7('0x6')](function(_0x5d88b6){var _0x212ae8=_0x5d88b6[_0xe8e7('0x4')]('[')[_0xe8e7('0x7')]();var _0x40f4ee=_0x5d88b6['match'](/\[(.*?)\]/g);_0x40f4ee[_0xe8e7('0x6')](function(_0x3c39e7){var _0x9419a8=_0x3c39e7[_0xe8e7('0x4')]('[')[_0xe8e7('0x8')](function(_0xf943e0){return _0xf943e0[_0xe8e7('0x9')](']')>-0x1;})['map'](function(_0x5877ab){return _0x5877ab[_0xe8e7('0x4')](']')[0x0];})[0x0];_0x1dcb9d[_0xe8e7('0xa')][_0xe8e7('0xb')]({'field':_0x329fd8,'operator':_0x212ae8,'value':_0x9419a8});});});}return _0x1dcb9d;};exports['buildExpression']=function(_0x1b6422,_0xd6076f,_0x43ff39){var _0x450193={};if(_0xd6076f===_0xe8e7('0xc')){if(_0x43ff39[_0xe8e7('0xd')]==='$eq'){_0x43ff39[_0xe8e7('0xd')]=_0xe8e7('0xe');_0x43ff39[_0xe8e7('0xf')]+=','+_0x43ff39[_0xe8e7('0xf')];}else if(_[_0xe8e7('0x10')]([_0xe8e7('0x11'),_0xe8e7('0x12')],_0x43ff39[_0xe8e7('0xd')])){_0x43ff39[_0xe8e7('0xf')]=moment(_0x43ff39[_0xe8e7('0xf')])[_0xe8e7('0x13')](0x1,_0xe8e7('0x14'))[_0xe8e7('0x15')](_0xe8e7('0x16'));}}if(_0x43ff39['castTo']){_0xd6076f=_0x43ff39[_0xe8e7('0x17')];_0x450193[_0xe8e7('0x18')]=_0xe8e7('0x19')+_0x1b6422+'.'+_0x43ff39[_0xe8e7('0x1a')]+_0xe8e7('0x1b')+_0x43ff39[_0xe8e7('0x17')]+')\x20'+parseOperator(_0x43ff39[_0xe8e7('0xd')]);}else{_0x450193[_0xe8e7('0x18')]=_0x1b6422+'.'+_0x43ff39[_0xe8e7('0x1a')]+'\x20'+parseOperator(_0x43ff39[_0xe8e7('0xd')]);}if(_[_0xe8e7('0x10')]([_0xe8e7('0x1c'),_0xe8e7('0x1d')],_0x43ff39['operator']))_0x450193['text']='('+_0x450193[_0xe8e7('0x18')]+'\x20OR\x20'+_0x1b6422+'.'+_0x43ff39[_0xe8e7('0x1a')]+_0xe8e7('0x1e');_0x450193['value']=parseValue(_0xd6076f,_0x43ff39['operator'],_0x43ff39[_0xe8e7('0xf')]);return _0x450193;};function parseOperator(_0x4c4fc8){var _0x20ea3a;switch(_0x4c4fc8){case'$in':_0x20ea3a=_0xe8e7('0x1f');break;case _0xe8e7('0x1d'):_0x20ea3a=_0xe8e7('0x20');break;case _0xe8e7('0x21'):_0x20ea3a=_0xe8e7('0x22');break;case'$ne':_0x20ea3a='<>\x20?';break;case'$substring':case'$startsWith':case _0xe8e7('0x23'):_0x20ea3a=_0xe8e7('0x24');break;case _0xe8e7('0x25'):_0x20ea3a=_0xe8e7('0x26');break;case _0xe8e7('0x11'):_0x20ea3a=_0xe8e7('0x27');break;case'$lte':_0x20ea3a=_0xe8e7('0x28');break;case'$gte':_0x20ea3a=_0xe8e7('0x29');break;case'$between':_0x20ea3a=_0xe8e7('0x2a');break;}return _0x20ea3a;}function parseValue(_0x66ee90,_0x2fd461,_0x61972d){var _0x4570e7={'start':undefined,'end':undefined};switch(_0x2fd461){case _0xe8e7('0x2b'):case _0xe8e7('0x1d'):_0x4570e7[_0xe8e7('0x2c')]=_0x61972d[_0xe8e7('0x4')](',');break;case _0xe8e7('0x2d'):_0x4570e7[_0xe8e7('0x2c')]='%'+_0x61972d+'%';break;case _0xe8e7('0x2e'):_0x4570e7[_0xe8e7('0x2c')]=_0x61972d+'%';break;case _0xe8e7('0x23'):_0x4570e7[_0xe8e7('0x2c')]='%'+_0x61972d;break;case'$between':var _0x4dad19=_0x61972d[_0xe8e7('0x4')](',');var _0x61972d=_0x4dad19[_0xe8e7('0x7')]();var _0x3e12e0=_0x4dad19[_0xe8e7('0x2f')]();if(_0x66ee90==='DATE'){_0x61972d=moment(_0x61972d)['utcOffset'](0x0,!![])[_0xe8e7('0x15')]();_0x3e12e0=moment(_0x3e12e0)[_0xe8e7('0x30')](0x0,!![])[_0xe8e7('0x13')](0x17,_0xe8e7('0x31'))[_0xe8e7('0x13')](0x3b,_0xe8e7('0x32'))[_0xe8e7('0x13')](0x3b,_0xe8e7('0x33'))[_0xe8e7('0x15')]();}_0x4570e7={'start':_0x61972d,'end':_0x3e12e0};break;default:_0x4570e7[_0xe8e7('0x2c')]=_0x61972d;break;}return _0x4570e7;}
\ No newline at end of file
+var _0x6e70=['$eq','$between','value','includes','$lte','days','format','castTo','text','field','\x20AS\x20','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','>\x20?','>=\x20?','BETWEEN\x20?\x20AND\x20?','$in','start','pop','utcOffset','add','hours','minutes','lodash','moment','parseSearch','sqlOperator','startsWith','and','[$and]','replace','[$or]','split','length','slice','forEach','shift','match','filter','indexOf','map','conditions','push','buildExpression','DATE','operator'];(function(_0x5e2fd8,_0x1949ba){var _0x4027fc=function(_0x41033d){while(--_0x41033d){_0x5e2fd8['push'](_0x5e2fd8['shift']());}};_0x4027fc(++_0x1949ba);}(_0x6e70,0xc9));var _0x06e7=function(_0x355427,_0x913002){_0x355427=_0x355427-0x0;var _0x57724d=_0x6e70[_0x355427];return _0x57724d;};'use strict';var _=require(_0x06e7('0x0'));var moment=require(_0x06e7('0x1'));exports[_0x06e7('0x2')]=function(_0x1fa428){var _0x50a207={'conditions':[]};_0x50a207[_0x06e7('0x3')]=_[_0x06e7('0x4')](_0x1fa428,'[$or]')?'or':_0x06e7('0x5');var _0x2581fd=_0x1fa428['replace'](_0x06e7('0x6'),'')[_0x06e7('0x7')](_0x06e7('0x8'),'')[_0x06e7('0x9')]('||');for(var _0x2291a7=0x0;_0x2291a7<_0x2581fd[_0x06e7('0xa')];_0x2291a7++){var _0x233502=_0x2581fd[_0x2291a7][_0x06e7('0x9')](':=');var _0x48b138=_0x233502[0x0];var _0x106344=_0x233502[_0x06e7('0xb')](0x1);_0x106344[_0x06e7('0xc')](function(_0x5c05b8){var _0x2e1b6f=_0x5c05b8[_0x06e7('0x9')]('[')[_0x06e7('0xd')]();var _0x5b5dbc=_0x5c05b8[_0x06e7('0xe')](/\[(.*?)\]/g);_0x5b5dbc[_0x06e7('0xc')](function(_0x1bcccc){var _0x1dc31c=_0x1bcccc['split']('[')[_0x06e7('0xf')](function(_0x3d0c31){return _0x3d0c31[_0x06e7('0x10')](']')>-0x1;})[_0x06e7('0x11')](function(_0x32c0de){return _0x32c0de[_0x06e7('0x9')](']')[0x0];})[0x0];_0x50a207[_0x06e7('0x12')][_0x06e7('0x13')]({'field':_0x48b138,'operator':_0x2e1b6f,'value':_0x1dc31c});});});}return _0x50a207;};exports[_0x06e7('0x14')]=function(_0x341d77,_0x1248e4,_0x5b0d14){var _0x1fcf7f={};if(_0x1248e4===_0x06e7('0x15')){if(_0x5b0d14[_0x06e7('0x16')]===_0x06e7('0x17')){_0x5b0d14[_0x06e7('0x16')]=_0x06e7('0x18');_0x5b0d14['value']+=','+_0x5b0d14[_0x06e7('0x19')];}else if(_[_0x06e7('0x1a')](['$gt',_0x06e7('0x1b')],_0x5b0d14[_0x06e7('0x16')])){_0x5b0d14[_0x06e7('0x19')]=moment(_0x5b0d14[_0x06e7('0x19')])['add'](0x1,_0x06e7('0x1c'))[_0x06e7('0x1d')]('YYYY-MM-DD');}}if(_0x5b0d14[_0x06e7('0x1e')]){_0x1248e4=_0x5b0d14['castTo'];_0x1fcf7f[_0x06e7('0x1f')]='CAST('+_0x341d77+'.'+_0x5b0d14[_0x06e7('0x20')]+_0x06e7('0x21')+_0x5b0d14['castTo']+')\x20'+parseOperator(_0x5b0d14[_0x06e7('0x16')]);}else{_0x1fcf7f[_0x06e7('0x1f')]=_0x341d77+'.'+_0x5b0d14[_0x06e7('0x20')]+'\x20'+parseOperator(_0x5b0d14[_0x06e7('0x16')]);}if(_[_0x06e7('0x1a')]([_0x06e7('0x22'),_0x06e7('0x23')],_0x5b0d14['operator']))_0x1fcf7f[_0x06e7('0x1f')]='('+_0x1fcf7f[_0x06e7('0x1f')]+_0x06e7('0x24')+_0x341d77+'.'+_0x5b0d14[_0x06e7('0x20')]+_0x06e7('0x25');_0x1fcf7f[_0x06e7('0x19')]=parseValue(_0x1248e4,_0x5b0d14[_0x06e7('0x16')],_0x5b0d14[_0x06e7('0x19')]);return _0x1fcf7f;};function parseOperator(_0x929c30){var _0x1acb4e;switch(_0x929c30){case'$in':_0x1acb4e=_0x06e7('0x26');break;case _0x06e7('0x23'):_0x1acb4e=_0x06e7('0x27');break;case _0x06e7('0x17'):_0x1acb4e=_0x06e7('0x28');break;case _0x06e7('0x22'):_0x1acb4e=_0x06e7('0x29');break;case _0x06e7('0x2a'):case _0x06e7('0x2b'):case _0x06e7('0x2c'):_0x1acb4e=_0x06e7('0x2d');break;case'$lt':_0x1acb4e='<\x20?';break;case'$gt':_0x1acb4e=_0x06e7('0x2e');break;case'$lte':_0x1acb4e='<=\x20?';break;case'$gte':_0x1acb4e=_0x06e7('0x2f');break;case _0x06e7('0x18'):_0x1acb4e=_0x06e7('0x30');break;}return _0x1acb4e;}function parseValue(_0x2c4f62,_0x5402f0,_0x32ca0c){var _0x4c749b={'start':undefined,'end':undefined};switch(_0x5402f0){case _0x06e7('0x31'):case _0x06e7('0x23'):_0x4c749b[_0x06e7('0x32')]=_0x32ca0c[_0x06e7('0x9')](',');break;case _0x06e7('0x2a'):_0x4c749b[_0x06e7('0x32')]='%'+_0x32ca0c+'%';break;case _0x06e7('0x2b'):_0x4c749b['start']=_0x32ca0c+'%';break;case'$endsWith':_0x4c749b[_0x06e7('0x32')]='%'+_0x32ca0c;break;case _0x06e7('0x18'):var _0x5476ea=_0x32ca0c['split'](',');var _0x32ca0c=_0x5476ea[_0x06e7('0xd')]();var _0x335278=_0x5476ea[_0x06e7('0x33')]();if(_0x2c4f62===_0x06e7('0x15')){_0x32ca0c=moment(_0x32ca0c)[_0x06e7('0x34')](0x0,!![])[_0x06e7('0x1d')]();_0x335278=moment(_0x335278)[_0x06e7('0x34')](0x0,!![])[_0x06e7('0x35')](0x17,_0x06e7('0x36'))[_0x06e7('0x35')](0x3b,_0x06e7('0x37'))[_0x06e7('0x35')](0x3b,'seconds')['format']();}_0x4c749b={'start':_0x32ca0c,'end':_0x335278};break;default:_0x4c749b[_0x06e7('0x32')]=_0x32ca0c;break;}return _0x4c749b;}
\ No newline at end of file
index a23bb63..319986d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bfe=['filters','forOwn','find','DATE','$gte','format','utc','$lte','YYYY-MM-DD','subtract','name','uniqueid','isArray','split','limit','sort','map','indexOf','priority','cast','col','unsigned','DESC','ASC','omit','isObject','isString','length','unset','hasOwnProperty','isNumeric','match','isEmail','forEach','push','join','query','$id','model','intersection','attributes','nolimit','offset','order','where','filter','merge','type','VIRTUAL','lower','options','lodash','sequelize','moment','parse','keys','includes','fields'];(function(_0x10c8da,_0x1d40bd){var _0x1a289c=function(_0xfe062f){while(--_0xfe062f){_0x10c8da['push'](_0x10c8da['shift']());}};_0x1a289c(++_0x1d40bd);}(_0x4bfe,0x1c9));var _0xe4bf=function(_0x1a6849,_0x2e01db){_0x1a6849=_0x1a6849-0x0;var _0x5e7b55=_0x4bfe[_0x1a6849];return _0x5e7b55;};'use strict';var _=require(_0xe4bf('0x0'));var sequelize=require(_0xe4bf('0x1'));var moment=require(_0xe4bf('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x236e68){var _0x207d52=['ne'];try{var _0xdaa475=JSON[_0xe4bf('0x3')](_0x236e68);var _0x4ba59a=Object[_0xe4bf('0x4')](_0xdaa475)[0x0];return _0x207d52[_0xe4bf('0x5')](_0x4ba59a);}catch(_0x3f1c7a){return![];}}function getOperatorValue(_0x3ae3e1){var _0x251148=JSON[_0xe4bf('0x3')](_0x3ae3e1);var _0x21e809=Object[_0xe4bf('0x4')](_0x251148)[0x0];var _0x5cab02=_0x251148[_0x21e809];return{['$'+_0x21e809]:_0x5cab02};}exports[_0xe4bf('0x6')]=function(_0x227156){var _0x407160=null;if(_0x227156){_0x407160=_0x227156['split'](',');}return _0x407160;};exports[_0xe4bf('0x7')]=function(_0x58878b,_0x1fb93f){var _0x4338b7={};if(!_['isEmpty'](_0x58878b)){_[_0xe4bf('0x8')](_0x58878b,function(_0x30dce9,_0x9c173c){try{if(_0x1fb93f){var _0x3d7e0e=_[_0xe4bf('0x9')](_0x1fb93f,{'name':_0x9c173c})||{};if(hasSequelizeOperator(_0x30dce9)){_0x4338b7[_0x9c173c]=getOperatorValue(_0x30dce9);}else if(_0x3d7e0e['type']===_0xe4bf('0xa')&&_['isPlainObject'](_0x30dce9)){var _0x10276e=JSON['parse'](_0x30dce9);var _0x4500d2={'$gte':moment(moment(_0x10276e[_0xe4bf('0xb')])[_0xe4bf('0xc')]('YYYY-MM-DD'))[_0xe4bf('0xd')]()['format'](),'$lte':moment(moment(_0x10276e[_0xe4bf('0xe')])[_0xe4bf('0xc')](_0xe4bf('0xf')))[_0xe4bf('0xd')]()[_0xe4bf('0x10')](0x1,'s')[_0xe4bf('0xc')]()};_0x4338b7[_0x9c173c]=_0x4500d2;}else if(_0x3d7e0e[_0xe4bf('0x11')]===_0xe4bf('0x12')){_0x4338b7[_0x9c173c]=_0x30dce9;}else{_0x4338b7[_0x9c173c]=_[_0xe4bf('0x13')](_0x30dce9)?_0x30dce9:JSON[_0xe4bf('0x3')](_0x30dce9);}}else{_0x4338b7[_0x9c173c]=_[_0xe4bf('0x13')](_0x30dce9)?_0x30dce9:JSON[_0xe4bf('0x3')](_0x30dce9);}}catch(_0x379261){_0x4338b7[_0x9c173c]=_0x30dce9[_0xe4bf('0x14')](',');}});}return _0x4338b7;};exports[_0xe4bf('0x15')]=function(_0x5afcc8){_0x5afcc8=parseInt(_0x5afcc8,0xa);if(!_0x5afcc8||_0x5afcc8<0x0){_0x5afcc8=LIMIT_VALUE;}return _0x5afcc8;};exports['offset']=function(_0x4f5269){_0x4f5269=parseInt(_0x4f5269,0xa);if(!_0x4f5269||_0x4f5269<0x0){_0x4f5269=0x0;}return _0x4f5269;};exports[_0xe4bf('0x16')]=function(_0x48ce2e){var _0x319932,_0x332abf=null;if(_0x48ce2e){_0x319932=_0x48ce2e[_0xe4bf('0x14')](',');_0x332abf=_[_0xe4bf('0x17')](_0x319932,function(_0x1e8edd){if(_0x1e8edd[_0xe4bf('0x18')]('-')===0x0){return[_0x1e8edd===_0xe4bf('0x19')?sequelize[_0xe4bf('0x1a')](sequelize[_0xe4bf('0x1b')](_0xe4bf('0x19')),_0xe4bf('0x1c')):_0x1e8edd['substr'](0x1),_0xe4bf('0x1d')];}else{return[_0x1e8edd===_0xe4bf('0x19')?sequelize[_0xe4bf('0x1a')](sequelize['col'](_0xe4bf('0x19')),_0xe4bf('0x1c')):_0x1e8edd,_0xe4bf('0x1e')];}});}return _0x332abf;};exports[_0xe4bf('0x1f')]=function(_0x5d9033,_0x360b19){if(_['isEmpty'](_0x5d9033)){return _0x5d9033;}if(_[_0xe4bf('0x13')](_0x5d9033)){for(var _0x288ac3=0x0;_0x288ac3<_0x5d9033['length'];_0x288ac3+=0x1){_0x5d9033[_0x288ac3]=this['omit'](_0x5d9033[_0x288ac3],_0x360b19);}return _0x5d9033;}if(!_[_0xe4bf('0x20')](_0x5d9033)){return _0x5d9033;}if(_[_0xe4bf('0x21')](_0x360b19)){_0x360b19=[_0x360b19];}if(!_[_0xe4bf('0x13')](_0x360b19)){return _0x5d9033;}for(var _0x5d2e5d=0x0;_0x5d2e5d<_0x360b19[_0xe4bf('0x22')];_0x5d2e5d+=0x1){_[_0xe4bf('0x23')](_0x5d9033,_0x360b19[_0x5d2e5d]);}for(var _0x9c79a1 in _0x5d9033){if(_0x5d9033[_0xe4bf('0x24')](_0x9c79a1)){_0x5d9033[_0x9c79a1]=this[_0xe4bf('0x1f')](_0x5d9033[_0x9c79a1],_0x360b19);}}return _0x5d9033;};exports[_0xe4bf('0x25')]=function(_0x3b5317){return _0x3b5317[_0xe4bf('0x26')](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports[_0xe4bf('0x27')]=function(_0x454992){return _0x454992[_0xe4bf('0x26')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x5ccb46){var _0x200d33=[];_0x5ccb46[_0xe4bf('0x14')](/[ ,]+/)[_0xe4bf('0x28')](function(_0x182f35){_0x182f35=_0x182f35['replace'](/([^:]")"+/g,'$1');_0x182f35='+'+_0x182f35+'*';if(_0x182f35[_0xe4bf('0x5')]('@'))_0x182f35='\x22'+_0x182f35+'\x22';_0x200d33[_0xe4bf('0x29')](_0x182f35);});return _0x200d33[_0xe4bf('0x2a')]('\x20');};exports['getOptions']=function(_0x4411d1,_0x5aa035,_0x1698af){var _0x26c2c5={},_0x305cab={};if(_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x2c')]){_0x5aa035[_0xe4bf('0x2b')]['id']=_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x2c')];delete _0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x2c')];}_0x26c2c5[_0xe4bf('0x2d')]=_[_0xe4bf('0x17')](_0x4411d1,_0xe4bf('0x11'));_0x26c2c5[_0xe4bf('0x2b')]=_[_0xe4bf('0x4')](_0x5aa035[_0xe4bf('0x2b')]);_0x26c2c5[_0xe4bf('0x7')]=_[_0xe4bf('0x2e')](_0x26c2c5[_0xe4bf('0x2d')],_0x26c2c5['query']);_0x305cab[_0xe4bf('0x2f')]=_[_0xe4bf('0x2e')](_0x26c2c5['model'],this[_0xe4bf('0x6')](_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x6')]));_0x305cab[_0xe4bf('0x2f')]=_0x305cab[_0xe4bf('0x2f')][_0xe4bf('0x22')]?_0x305cab[_0xe4bf('0x2f')]:_0x26c2c5[_0xe4bf('0x2d')];if(!_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x24')](_0xe4bf('0x30'))){_0x305cab[_0xe4bf('0x15')]=this[_0xe4bf('0x15')](_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x15')]);_0x305cab[_0xe4bf('0x31')]=this['offset'](_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x31')]);}_0x305cab[_0xe4bf('0x32')]=this[_0xe4bf('0x16')](_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x16')]);_0x305cab[_0xe4bf('0x33')]=this[_0xe4bf('0x7')](_['pick'](_0x5aa035[_0xe4bf('0x2b')],_0x26c2c5[_0xe4bf('0x7')]),_0x4411d1);if(_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x34')]){_0x305cab[_0xe4bf('0x33')]=_[_0xe4bf('0x35')](_0x305cab['where'],{'$or':_[_0xe4bf('0x17')](_0x4411d1,function(_0xae90a){if(_0xae90a[_0xe4bf('0x36')]!==_0xe4bf('0x37')){if(_0x1698af){return sequelize[_0xe4bf('0x33')](sequelize['fn'](_0xe4bf('0x38'),sequelize[_0xe4bf('0x1b')](_0xae90a[_0xe4bf('0x11')])),{'$like':sequelize['fn'](_0xe4bf('0x38'),'%'+_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x34')]+'%')});}else{var _0x1de801={};_0x1de801[_0xae90a['name']]={'$like':'%'+_0x5aa035[_0xe4bf('0x2b')]['filter']+'%'};return _0x1de801;}}})});}_0x305cab=_[_0xe4bf('0x35')]({},_0x305cab,_0x5aa035[_0xe4bf('0x39')]);return _0x305cab;};
\ No newline at end of file
+var _0x4aea=['cast','col','unsigned','substr','DESC','ASC','omit','length','isString','isArray','unset','hasOwnProperty','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','includes','push','$id','query','attributes','intersection','model','nolimit','pick','filter','where','merge','map','type','VIRTUAL','lower','options','lodash','moment','parse','keys','fields','split','filters','isEmpty','forOwn','find','isPlainObject','$gte','utc','$lte','format','YYYY-MM-DD','subtract','name','uniqueid','limit','offset','sort','indexOf','priority'];(function(_0x601af2,_0x347e1a){var _0x354c99=function(_0x482644){while(--_0x482644){_0x601af2['push'](_0x601af2['shift']());}};_0x354c99(++_0x347e1a);}(_0x4aea,0xd4));var _0xa4ae=function(_0x908b56,_0x539c50){_0x908b56=_0x908b56-0x0;var _0x3af693=_0x4aea[_0x908b56];return _0x3af693;};'use strict';var _=require(_0xa4ae('0x0'));var sequelize=require('sequelize');var moment=require(_0xa4ae('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x1ddc58){var _0x491580=['ne'];try{var _0x2e3082=JSON[_0xa4ae('0x2')](_0x1ddc58);var _0x57ece8=Object[_0xa4ae('0x3')](_0x2e3082)[0x0];return _0x491580['includes'](_0x57ece8);}catch(_0x4407d2){return![];}}function getOperatorValue(_0x49e0d8){var _0x7a9635=JSON['parse'](_0x49e0d8);var _0x8ba1c3=Object[_0xa4ae('0x3')](_0x7a9635)[0x0];var _0x2687d7=_0x7a9635[_0x8ba1c3];return{['$'+_0x8ba1c3]:_0x2687d7};}exports[_0xa4ae('0x4')]=function(_0x551c89){var _0x4fb657=null;if(_0x551c89){_0x4fb657=_0x551c89[_0xa4ae('0x5')](',');}return _0x4fb657;};exports[_0xa4ae('0x6')]=function(_0x2e7652,_0x3ebf08){var _0xdb92f8={};if(!_[_0xa4ae('0x7')](_0x2e7652)){_[_0xa4ae('0x8')](_0x2e7652,function(_0x21eeb6,_0x296ded){try{if(_0x3ebf08){var _0x46306a=_[_0xa4ae('0x9')](_0x3ebf08,{'name':_0x296ded})||{};if(hasSequelizeOperator(_0x21eeb6)){_0xdb92f8[_0x296ded]=getOperatorValue(_0x21eeb6);}else if(_0x46306a['type']==='DATE'&&_[_0xa4ae('0xa')](_0x21eeb6)){var _0x23c668=JSON[_0xa4ae('0x2')](_0x21eeb6);var _0xcf24a3={'$gte':moment(moment(_0x23c668[_0xa4ae('0xb')])['format']('YYYY-MM-DD'))[_0xa4ae('0xc')]()['format'](),'$lte':moment(moment(_0x23c668[_0xa4ae('0xd')])[_0xa4ae('0xe')](_0xa4ae('0xf')))['utc']()[_0xa4ae('0x10')](0x1,'s')['format']()};_0xdb92f8[_0x296ded]=_0xcf24a3;}else if(_0x46306a[_0xa4ae('0x11')]===_0xa4ae('0x12')){_0xdb92f8[_0x296ded]=_0x21eeb6;}else{_0xdb92f8[_0x296ded]=_['isArray'](_0x21eeb6)?_0x21eeb6:JSON[_0xa4ae('0x2')](_0x21eeb6);}}else{_0xdb92f8[_0x296ded]=_['isArray'](_0x21eeb6)?_0x21eeb6:JSON[_0xa4ae('0x2')](_0x21eeb6);}}catch(_0x200a4c){_0xdb92f8[_0x296ded]=_0x21eeb6[_0xa4ae('0x5')](',');}});}return _0xdb92f8;};exports[_0xa4ae('0x13')]=function(_0x8b94ce){_0x8b94ce=parseInt(_0x8b94ce,0xa);if(!_0x8b94ce||_0x8b94ce<0x0){_0x8b94ce=LIMIT_VALUE;}return _0x8b94ce;};exports[_0xa4ae('0x14')]=function(_0x5adb29){_0x5adb29=parseInt(_0x5adb29,0xa);if(!_0x5adb29||_0x5adb29<0x0){_0x5adb29=0x0;}return _0x5adb29;};exports[_0xa4ae('0x15')]=function(_0xb581ab){var _0x48aa1f,_0x5f599d=null;if(_0xb581ab){_0x48aa1f=_0xb581ab[_0xa4ae('0x5')](',');_0x5f599d=_['map'](_0x48aa1f,function(_0x4caf9d){if(_0x4caf9d[_0xa4ae('0x16')]('-')===0x0){return[_0x4caf9d===_0xa4ae('0x17')?sequelize[_0xa4ae('0x18')](sequelize[_0xa4ae('0x19')](_0xa4ae('0x17')),_0xa4ae('0x1a')):_0x4caf9d[_0xa4ae('0x1b')](0x1),_0xa4ae('0x1c')];}else{return[_0x4caf9d===_0xa4ae('0x17')?sequelize[_0xa4ae('0x18')](sequelize[_0xa4ae('0x19')](_0xa4ae('0x17')),_0xa4ae('0x1a')):_0x4caf9d,_0xa4ae('0x1d')];}});}return _0x5f599d;};exports[_0xa4ae('0x1e')]=function(_0x3678a1,_0x70186a){if(_[_0xa4ae('0x7')](_0x3678a1)){return _0x3678a1;}if(_['isArray'](_0x3678a1)){for(var _0x33b72d=0x0;_0x33b72d<_0x3678a1[_0xa4ae('0x1f')];_0x33b72d+=0x1){_0x3678a1[_0x33b72d]=this[_0xa4ae('0x1e')](_0x3678a1[_0x33b72d],_0x70186a);}return _0x3678a1;}if(!_['isObject'](_0x3678a1)){return _0x3678a1;}if(_[_0xa4ae('0x20')](_0x70186a)){_0x70186a=[_0x70186a];}if(!_[_0xa4ae('0x21')](_0x70186a)){return _0x3678a1;}for(var _0x4da85e=0x0;_0x4da85e<_0x70186a[_0xa4ae('0x1f')];_0x4da85e+=0x1){_[_0xa4ae('0x22')](_0x3678a1,_0x70186a[_0x4da85e]);}for(var _0x1571a5 in _0x3678a1){if(_0x3678a1[_0xa4ae('0x23')](_0x1571a5)){_0x3678a1[_0x1571a5]=this[_0xa4ae('0x1e')](_0x3678a1[_0x1571a5],_0x70186a);}}return _0x3678a1;};exports['isNumeric']=function(_0x9ef345){return _0x9ef345[_0xa4ae('0x24')](RegExp(_0xa4ae('0x25')))?!![]:![];};exports[_0xa4ae('0x26')]=function(_0x13784f){return _0x13784f[_0xa4ae('0x24')](/^\S+@\S+$/)?!![]:![];};exports[_0xa4ae('0x27')]=function(_0x169637){var _0x4d3e58=[];_0x169637[_0xa4ae('0x5')](/[ ,]+/)[_0xa4ae('0x28')](function(_0xf84852){_0xf84852=_0xf84852[_0xa4ae('0x29')](/([^:]")"+/g,'$1');_0xf84852='+'+_0xf84852+'*';if(_0xf84852[_0xa4ae('0x2a')]('@'))_0xf84852='\x22'+_0xf84852+'\x22';_0x4d3e58[_0xa4ae('0x2b')](_0xf84852);});return _0x4d3e58['join']('\x20');};exports['getOptions']=function(_0x3ce2c2,_0x2cf045,_0x47bee1){var _0x2380b7={},_0x3a4895={};if(_0x2cf045['query'][_0xa4ae('0x2c')]){_0x2cf045[_0xa4ae('0x2d')]['id']=_0x2cf045[_0xa4ae('0x2d')]['$id'];delete _0x2cf045['query'][_0xa4ae('0x2c')];}_0x2380b7['model']=_['map'](_0x3ce2c2,_0xa4ae('0x11'));_0x2380b7[_0xa4ae('0x2d')]=_[_0xa4ae('0x3')](_0x2cf045[_0xa4ae('0x2d')]);_0x2380b7['filters']=_['intersection'](_0x2380b7['model'],_0x2380b7['query']);_0x3a4895[_0xa4ae('0x2e')]=_[_0xa4ae('0x2f')](_0x2380b7[_0xa4ae('0x30')],this[_0xa4ae('0x4')](_0x2cf045[_0xa4ae('0x2d')][_0xa4ae('0x4')]));_0x3a4895['attributes']=_0x3a4895[_0xa4ae('0x2e')][_0xa4ae('0x1f')]?_0x3a4895[_0xa4ae('0x2e')]:_0x2380b7['model'];if(!_0x2cf045[_0xa4ae('0x2d')][_0xa4ae('0x23')](_0xa4ae('0x31'))){_0x3a4895[_0xa4ae('0x13')]=this[_0xa4ae('0x13')](_0x2cf045['query']['limit']);_0x3a4895[_0xa4ae('0x14')]=this['offset'](_0x2cf045[_0xa4ae('0x2d')][_0xa4ae('0x14')]);}_0x3a4895['order']=this[_0xa4ae('0x15')](_0x2cf045['query']['sort']);_0x3a4895['where']=this[_0xa4ae('0x6')](_[_0xa4ae('0x32')](_0x2cf045[_0xa4ae('0x2d')],_0x2380b7[_0xa4ae('0x6')]),_0x3ce2c2);if(_0x2cf045[_0xa4ae('0x2d')][_0xa4ae('0x33')]){_0x3a4895[_0xa4ae('0x34')]=_[_0xa4ae('0x35')](_0x3a4895[_0xa4ae('0x34')],{'$or':_[_0xa4ae('0x36')](_0x3ce2c2,function(_0x14e3b2){if(_0x14e3b2[_0xa4ae('0x37')]!==_0xa4ae('0x38')){if(_0x47bee1){return sequelize['where'](sequelize['fn'](_0xa4ae('0x39'),sequelize[_0xa4ae('0x19')](_0x14e3b2[_0xa4ae('0x11')])),{'$like':sequelize['fn'](_0xa4ae('0x39'),'%'+_0x2cf045[_0xa4ae('0x2d')][_0xa4ae('0x33')]+'%')});}else{var _0x19cb50={};_0x19cb50[_0x14e3b2['name']]={'$like':'%'+_0x2cf045[_0xa4ae('0x2d')][_0xa4ae('0x33')]+'%'};return _0x19cb50;}}})});}_0x3a4895=_['merge']({},_0x3a4895,_0x2cf045[_0xa4ae('0x3a')]);return _0x3a4895;};
\ No newline at end of file
index 11e1862..1f220cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd644=['root','public','test','join','client','use','set','json\x20replacer','toISOString','split','static','get','views','/server/views','engine','html','urlencoded','50mb','json','express','serve-favicon','body-parser','errorhandler','path','cors','moment','../mysqldb','appPath'];(function(_0x581682,_0x3534a8){var _0x1889f6=function(_0x5fcc27){while(--_0x5fcc27){_0x581682['push'](_0x581682['shift']());}};_0x1889f6(++_0x3534a8);}(_0xd644,0xbb));var _0x4d64=function(_0x535c37,_0x3f2309){_0x535c37=_0x535c37-0x0;var _0x419f7f=_0xd644[_0x535c37];return _0x419f7f;};'use strict';var express=require(_0x4d64('0x0'));var favicon=require(_0x4d64('0x1'));var bodyParser=require(_0x4d64('0x2'));var methodOverride=require('method-override');var cookieParser=require('cookie-parser');var errorHandler=require(_0x4d64('0x3'));var path=require(_0x4d64('0x4'));var passport=require('passport');var cors=require(_0x4d64('0x5'));var moment=require(_0x4d64('0x6'));var config=require('./environment');var db=require(_0x4d64('0x7'))['db'];exports['default']=function(_0x38489c){var _0x255cd0=_0x38489c['get']('env');if(_0x255cd0==='production'){_0x38489c['set'](_0x4d64('0x8'),path['join'](config[_0x4d64('0x9')],_0x4d64('0xa')));}if(_0x255cd0==='development'||_0x255cd0===_0x4d64('0xb')){_0x38489c['set'](_0x4d64('0x8'),path[_0x4d64('0xc')](config['root'],_0x4d64('0xd')));_0x38489c[_0x4d64('0xe')](errorHandler());}_0x38489c[_0x4d64('0xf')](_0x4d64('0x10'),function(_0x58460a,_0x867a4e){if(this[_0x58460a]instanceof Date){_0x867a4e=this[_0x58460a][_0x4d64('0x11')]()[_0x4d64('0x12')]('.')[0x0]+'Z';}return _0x867a4e;});_0x38489c['use'](express[_0x4d64('0x13')](_0x38489c[_0x4d64('0x14')](_0x4d64('0x8'))));_0x38489c[_0x4d64('0xf')](_0x4d64('0x15'),config[_0x4d64('0x9')]+_0x4d64('0x16'));_0x38489c[_0x4d64('0x17')](_0x4d64('0x18'),require('ejs')['renderFile']);_0x38489c[_0x4d64('0xf')]('view\x20engine',_0x4d64('0x18'));_0x38489c['use'](bodyParser[_0x4d64('0x19')]({'limit':_0x4d64('0x1a'),'extended':!![]}));_0x38489c[_0x4d64('0xe')](bodyParser[_0x4d64('0x1b')]({'limit':_0x4d64('0x1a')}));_0x38489c[_0x4d64('0xe')](cors());_0x38489c[_0x4d64('0xe')](methodOverride());_0x38489c[_0x4d64('0xe')](cookieParser());_0x38489c[_0x4d64('0xe')](passport['initialize']());};
\ No newline at end of file
+var _0x3a28=['root','development','test','use','json\x20replacer','split','static','views','/server/views','engine','html','ejs','renderFile','view\x20engine','50mb','json','initialize','express','body-parser','method-override','errorhandler','path','passport','cors','./environment','../mysqldb','get','production','set','appPath','join'];(function(_0x43060d,_0x2cc718){var _0x406f11=function(_0x57f54b){while(--_0x57f54b){_0x43060d['push'](_0x43060d['shift']());}};_0x406f11(++_0x2cc718);}(_0x3a28,0x166));var _0x83a2=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x3a28[_0x2e4aa2];return _0x5e6092;};'use strict';var express=require(_0x83a2('0x0'));var favicon=require('serve-favicon');var bodyParser=require(_0x83a2('0x1'));var methodOverride=require(_0x83a2('0x2'));var cookieParser=require('cookie-parser');var errorHandler=require(_0x83a2('0x3'));var path=require(_0x83a2('0x4'));var passport=require(_0x83a2('0x5'));var cors=require(_0x83a2('0x6'));var moment=require('moment');var config=require(_0x83a2('0x7'));var db=require(_0x83a2('0x8'))['db'];exports['default']=function(_0x270a9a){var _0x52c9c3=_0x270a9a[_0x83a2('0x9')]('env');if(_0x52c9c3===_0x83a2('0xa')){_0x270a9a[_0x83a2('0xb')](_0x83a2('0xc'),path[_0x83a2('0xd')](config[_0x83a2('0xe')],'public'));}if(_0x52c9c3===_0x83a2('0xf')||_0x52c9c3===_0x83a2('0x10')){_0x270a9a[_0x83a2('0xb')](_0x83a2('0xc'),path[_0x83a2('0xd')](config[_0x83a2('0xe')],'client'));_0x270a9a[_0x83a2('0x11')](errorHandler());}_0x270a9a['set'](_0x83a2('0x12'),function(_0x1a85a7,_0x410697){if(this[_0x1a85a7]instanceof Date){_0x410697=this[_0x1a85a7]['toISOString']()[_0x83a2('0x13')]('.')[0x0]+'Z';}return _0x410697;});_0x270a9a[_0x83a2('0x11')](express[_0x83a2('0x14')](_0x270a9a['get'](_0x83a2('0xc'))));_0x270a9a[_0x83a2('0xb')](_0x83a2('0x15'),config['root']+_0x83a2('0x16'));_0x270a9a[_0x83a2('0x17')](_0x83a2('0x18'),require(_0x83a2('0x19'))[_0x83a2('0x1a')]);_0x270a9a['set'](_0x83a2('0x1b'),_0x83a2('0x18'));_0x270a9a[_0x83a2('0x11')](bodyParser['urlencoded']({'limit':_0x83a2('0x1c'),'extended':!![]}));_0x270a9a[_0x83a2('0x11')](bodyParser[_0x83a2('0x1d')]({'limit':_0x83a2('0x1c')}));_0x270a9a['use'](cors());_0x270a9a[_0x83a2('0x11')](methodOverride());_0x270a9a[_0x83a2('0x11')](cookieParser());_0x270a9a[_0x83a2('0x11')](passport[_0x83a2('0x1e')]());};
\ No newline at end of file
index 87c2619..3d055f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe31c=['keys','length','filter','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','map','model','join','createHash','md5','update','digest','hex','getUuid','platform','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','macAddress','ipAddress','substring','lodash','bimedia-machine-uuid','../environment','networkInterfaces','orderBy'];(function(_0x4ec8d5,_0x22e5d6){var _0x15fe14=function(_0x33e8ea){while(--_0x33e8ea){_0x4ec8d5['push'](_0x4ec8d5['shift']());}};_0x15fe14(++_0x22e5d6);}(_0xe31c,0x87));var _0xce31=function(_0x322423,_0x424ddb){_0x322423=_0x322423-0x0;var _0x320148=_0xe31c[_0x322423];return _0x320148;};'use strict';var _=require(_0xce31('0x0'));var os=require('os');var crypto=require('crypto');var machine=require(_0xce31('0x1'));var exec=require('child_process')['execSync'];var config=require(_0xce31('0x2'));function getInterfaces(){var _0x5b88b6=[];var _0x29cde7=os[_0xce31('0x3')]();var _0x585016=_[_0xce31('0x4')](_[_0xce31('0x5')](_0x29cde7));for(var _0x331262=0x0;_0x331262<_0x585016[_0xce31('0x6')];_0x331262++){var _0x2d6cb0=_0x29cde7[_0x585016[_0x331262]][_0xce31('0x7')](function(_0x47a339){return _0x47a339['family']===_0xce31('0x8')&&_0x47a339[_0xce31('0x9')]===![];});_0x5b88b6=_0x5b88b6[_0xce31('0xa')](_0x2d6cb0);}return _0x5b88b6;}function getFirstInterface(){var _0x3940c1=_[_0xce31('0xb')](getInterfaces());return{'macAddress':_0x3940c1&&_0x3940c1[_0xce31('0xc')]?_0x3940c1['mac']:_0xce31('0xd'),'ipAddress':_0x3940c1&&_0x3940c1[_0xce31('0xe')]?_0x3940c1['address']:_0xce31('0xf')};}exports[_0xce31('0x10')]=getFirstInterface;function getCPUhash(){var _0x4b5505=_[_0xce31('0x4')](os['cpus']()[_0xce31('0x11')](function(_0x3c0538){return _0x3c0538[_0xce31('0x12')];}))[_0xce31('0x13')](':');return crypto[_0xce31('0x14')](_0xce31('0x15'))[_0xce31('0x16')](_0x4b5505)[_0xce31('0x17')](_0xce31('0x18'));}exports[_0xce31('0x19')]=function(){var _0x6f20f=os[_0xce31('0x1a')]();var _0x1e8e64=/[0-9a-f-]{36}/;if(config[_0xce31('0x1b')]&&_0x1e8e64['test'](config[_0xce31('0x1b')])){return config['licenseToken'];}else if(_0x6f20f===_0xce31('0x1c')){return exec(_0xce31('0x1d'),{'encoding':_0xce31('0x1e')})[_0xce31('0x1f')]('\x0d\x0a','');}else{var _0x1186f3=getFirstInterface();var _0x142115=getCPUhash();var _0x4d0583=_0x142115+'|'+os['hostname']()+'|'+_0x1186f3[_0xce31('0x20')]+'|'+_0x1186f3[_0xce31('0x21')];var _0x541942=crypto[_0xce31('0x14')](_0xce31('0x15'))[_0xce31('0x16')](_0x4d0583)[_0xce31('0x17')](_0xce31('0x18'));return _0x541942[_0xce31('0x22')](0x0,0x8)+'-'+_0x541942[_0xce31('0x22')](0x8,0xc)+'-'+_0x541942[_0xce31('0x22')](0xc,0x10)+'-'+_0x541942['substring'](0x10,0x14)+'-'+_0x541942[_0xce31('0x22')](0x14);}};
\ No newline at end of file
+var _0x2c1e=['length','concat','mac','address','orderBy','map','model','join','createHash','md5','digest','getUuid','platform','licenseToken','dmidecode\x20--string\x20system-uuid','utf8','replace','macAddress','ipAddress','substring','lodash','crypto','bimedia-machine-uuid','child_process','execSync','networkInterfaces','keys'];(function(_0x202dfc,_0x25ddc6){var _0x22b7c9=function(_0x3be04e){while(--_0x3be04e){_0x202dfc['push'](_0x202dfc['shift']());}};_0x22b7c9(++_0x25ddc6);}(_0x2c1e,0x80));var _0xe2c1=function(_0x4368c4,_0x2b8702){_0x4368c4=_0x4368c4-0x0;var _0x1e6c6f=_0x2c1e[_0x4368c4];return _0x1e6c6f;};'use strict';var _=require(_0xe2c1('0x0'));var os=require('os');var crypto=require(_0xe2c1('0x1'));var machine=require(_0xe2c1('0x2'));var exec=require(_0xe2c1('0x3'))[_0xe2c1('0x4')];var config=require('../environment');function getInterfaces(){var _0x1a3d4f=[];var _0x4882f2=os[_0xe2c1('0x5')]();var _0x21aa48=_['orderBy'](_[_0xe2c1('0x6')](_0x4882f2));for(var _0x5308e6=0x0;_0x5308e6<_0x21aa48[_0xe2c1('0x7')];_0x5308e6++){var _0x3d4a24=_0x4882f2[_0x21aa48[_0x5308e6]]['filter'](function(_0x4775c5){return _0x4775c5['family']==='IPv4'&&_0x4775c5['internal']===![];});_0x1a3d4f=_0x1a3d4f[_0xe2c1('0x8')](_0x3d4a24);}return _0x1a3d4f;}function getFirstInterface(){var _0x31d211=_['head'](getInterfaces());return{'macAddress':_0x31d211&&_0x31d211['mac']?_0x31d211[_0xe2c1('0x9')]:'00:00:00:00:00:00','ipAddress':_0x31d211&&_0x31d211['address']?_0x31d211[_0xe2c1('0xa')]:'127.0.0.1'};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x3dfaad=_[_0xe2c1('0xb')](os['cpus']()[_0xe2c1('0xc')](function(_0x3caba9){return _0x3caba9[_0xe2c1('0xd')];}))[_0xe2c1('0xe')](':');return crypto[_0xe2c1('0xf')](_0xe2c1('0x10'))['update'](_0x3dfaad)[_0xe2c1('0x11')]('hex');}exports[_0xe2c1('0x12')]=function(){var _0x1de41e=os[_0xe2c1('0x13')]();var _0x30cc91=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x30cc91['test'](config[_0xe2c1('0x14')])){return config['licenseToken'];}else if(_0x1de41e==='win32'){return exec(_0xe2c1('0x15'),{'encoding':_0xe2c1('0x16')})[_0xe2c1('0x17')]('\x0d\x0a','');}else{var _0xdc735e=getFirstInterface();var _0x13db61=getCPUhash();var _0x3ab223=_0x13db61+'|'+os['hostname']()+'|'+_0xdc735e[_0xe2c1('0x18')]+'|'+_0xdc735e[_0xe2c1('0x19')];var _0x182751=crypto[_0xe2c1('0xf')](_0xe2c1('0x10'))['update'](_0x3ab223)['digest']('hex');return _0x182751['substring'](0x0,0x8)+'-'+_0x182751[_0xe2c1('0x1a')](0x8,0xc)+'-'+_0x182751[_0xe2c1('0x1a')](0xc,0x10)+'-'+_0x182751[_0xe2c1('0x1a')](0x10,0x14)+'-'+_0x182751['substring'](0x14);}};
\ No newline at end of file
index cf88fc8..a62085f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e96=['../logger','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','data1','active','license','data2','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','decryptString','days','DEMO\x20START\x20AT\x20%s','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware'];(function(_0x11e05d,_0x3a4491){var _0x335588=function(_0x35ec3f){while(--_0x35ec3f){_0x11e05d['push'](_0x11e05d['shift']());}};_0x335588(++_0x3a4491);}(_0x6e96,0x1b0));var _0x66e9=function(_0x236907,_0x263de5){_0x236907=_0x236907-0x0;var _0x15eb29=_0x6e96[_0x236907];return _0x15eb29;};'use strict';var util=require('util');var moment=require(_0x66e9('0x0'));var rp=require(_0x66e9('0x1'));var BPromise=require(_0x66e9('0x2'));var pkginfo=require(_0x66e9('0x3'))(module,_0x66e9('0x4'));var db=require(_0x66e9('0x5'))['db'];var encryptor=require(_0x66e9('0x6'));var hardware=require(_0x66e9('0x7'));var logger=require(_0x66e9('0x8'))('license');var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x5c8eb6){return new BPromise(function(_0x30c86b,_0x791da6){var _0x314589=util[_0x66e9('0x9')](_0x66e9('0xa'),HOST,_0x5c8eb6,module[_0x66e9('0xb')][_0x66e9('0x4')]);if(oldToken){_0x314589=util[_0x66e9('0x9')](_0x66e9('0xc'),HOST,_0x5c8eb6,module['exports'][_0x66e9('0x4')],oldToken);}var _0x2365fd={'uri':_0x314589,'method':_0x66e9('0xd'),'timeout':0xea60,'json':!![]};return rp(_0x2365fd)[_0x66e9('0xe')](function(_0x514979){_0x30c86b(_0x514979);})[_0x66e9('0xf')](function(_0xd0e9c2){_0x791da6(_0xd0e9c2);});});}function manageLicense(_0x2b0509,_0x5b31a9){var _0x1039c9=_0x5b31a9['get']({'plain':!![]});if(!isOldTokenSent&&_0x1039c9[_0x66e9('0x10')]!==_0x2b0509&&!_0x1039c9['data2']){oldToken=_0x1039c9[_0x66e9('0x10')];}httpRequest(_0x2b0509)[_0x66e9('0xe')](function(_0x580fa2){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x580fa2[_0x66e9('0x11')]){isOldTokenSent=![];if(!_0x1039c9[_0x66e9('0x12')]&&_0x1039c9[_0x66e9('0x12')]!=_0x580fa2[_0x66e9('0x12')]||_0x1039c9[_0x66e9('0x12')]&&_0x1039c9[_0x66e9('0x13')]){logger['info'](_0x66e9('0x14'));}if(_0x1039c9[_0x66e9('0x12')]&&!_0x1039c9[_0x66e9('0x13')]&&_0x1039c9['license']!=_0x580fa2[_0x66e9('0x12')]){logger[_0x66e9('0x15')](_0x66e9('0x16'));}if(_0x1039c9[_0x66e9('0x12')]&&!_0x1039c9[_0x66e9('0x13')]&&_0x1039c9[_0x66e9('0x12')]==_0x580fa2[_0x66e9('0x12')]){return _0x5b31a9;}return _0x5b31a9[_0x66e9('0x17')]({'data1':_0x2b0509,'data2':null,'license':_0x580fa2[_0x66e9('0x12')]});}else{if(_0x580fa2[_0x66e9('0x12')]||_0x1039c9['license']){if(!_0x1039c9[_0x66e9('0x13')]){if(_0x1039c9['data1']==_0x2b0509){GRAY_PERIOD_REASON='Disabled';logger[_0x66e9('0x15')](_0x66e9('0x18'));}else{GRAY_PERIOD_REASON='Changed';logger[_0x66e9('0x15')](_0x66e9('0x19'),_0x1039c9[_0x66e9('0x10')],_0x2b0509);}logger[_0x66e9('0x15')]('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0x66e9('0x1a')](),moment()['format'](_0x66e9('0x1b')));return _0x5b31a9['update']({'data2':encryptor[_0x66e9('0x1c')](moment()[_0x66e9('0x9')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()['diff'](encryptor[_0x66e9('0x1d')](_0x1039c9[_0x66e9('0x13')]),_0x66e9('0x1e'))>DAYS){logger[_0x66e9('0x15')](_0x66e9('0x1f'),moment()[_0x66e9('0x9')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x5b31a9[_0x66e9('0x17')]({'data1':_0x2b0509,'data2':null,'license':null});}}}else{if(_0x1039c9[_0x66e9('0x10')]!=_0x2b0509){logger[_0x66e9('0x15')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x1039c9['data1'],_0x2b0509);return _0x5b31a9[_0x66e9('0x17')]({'data1':_0x2b0509,'data2':null,'license':null});}}}return _0x5b31a9;})['then'](function(_0x12150e){_0x5b31a9=_0x12150e;})[_0x66e9('0xf')](function(_0x54532d){logger['error'](_0x54532d[_0x66e9('0x20')]);})[_0x66e9('0x21')](function(){setTimeout(function(){manageLicense(hardware[_0x66e9('0x22')](),_0x5b31a9);},TIME);});}function defaultLicense(){var _0x258ba9=hardware['getUuid']();if(_0x258ba9){return db[_0x66e9('0x23')][_0x66e9('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x258ba9}})[_0x66e9('0x25')](function(_0x6d416b,_0x304d87){logger[_0x66e9('0x15')](_0x66e9('0x26'),_0x258ba9);manageLicense(_0x258ba9,_0x6d416b);})[_0x66e9('0xf')](function(_0x2d4aad){logger['error'](_0x2d4aad[_0x66e9('0x20')]);});}}exports[_0x66e9('0x27')]=defaultLicense;
\ No newline at end of file
+var _0x8096=['finally','getUuid','License','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','bluebird','pkginfo','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','version','GET','then','get','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','update','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','YYYY-MM-DD\x20HH:mm','encryptString','diff','days','catch','error','message'];(function(_0x163d42,_0x3cabea){var _0x59186c=function(_0x139ab9){while(--_0x139ab9){_0x163d42['push'](_0x163d42['shift']());}};_0x59186c(++_0x3cabea);}(_0x8096,0x1b3));var _0x6809=function(_0x12f197,_0x24cd88){_0x12f197=_0x12f197-0x0;var _0x3655cc=_0x8096[_0x12f197];return _0x3655cc;};'use strict';var util=require(_0x6809('0x0'));var moment=require(_0x6809('0x1'));var rp=require(_0x6809('0x2'));var BPromise=require(_0x6809('0x3'));var pkginfo=require(_0x6809('0x4'))(module,'version');var db=require(_0x6809('0x5'))['db'];var encryptor=require(_0x6809('0x6'));var hardware=require(_0x6809('0x7'));var logger=require(_0x6809('0x8'))(_0x6809('0x9'));var HOST=_0x6809('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x116ed8){return new BPromise(function(_0x557c19,_0x3492eb){var _0x5dfce9=util[_0x6809('0xb')](_0x6809('0xc'),HOST,_0x116ed8,module[_0x6809('0xd')][_0x6809('0xe')]);if(oldToken){_0x5dfce9=util[_0x6809('0xb')]('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x116ed8,module[_0x6809('0xd')]['version'],oldToken);}var _0x342ea3={'uri':_0x5dfce9,'method':_0x6809('0xf'),'timeout':0xea60,'json':!![]};return rp(_0x342ea3)[_0x6809('0x10')](function(_0x4315a1){_0x557c19(_0x4315a1);})['catch'](function(_0xbf46a0){_0x3492eb(_0xbf46a0);});});}function manageLicense(_0x493632,_0x5c8c48){var _0x2604dd=_0x5c8c48[_0x6809('0x11')]({'plain':!![]});if(!isOldTokenSent&&_0x2604dd[_0x6809('0x12')]!==_0x493632&&!_0x2604dd[_0x6809('0x13')]){oldToken=_0x2604dd['data1'];}httpRequest(_0x493632)[_0x6809('0x10')](function(_0x3a04f4){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x3a04f4[_0x6809('0x14')]){isOldTokenSent=![];if(!_0x2604dd['license']&&_0x2604dd['license']!=_0x3a04f4['license']||_0x2604dd[_0x6809('0x9')]&&_0x2604dd[_0x6809('0x13')]){logger[_0x6809('0x15')](_0x6809('0x16'));}if(_0x2604dd[_0x6809('0x9')]&&!_0x2604dd[_0x6809('0x13')]&&_0x2604dd[_0x6809('0x9')]!=_0x3a04f4[_0x6809('0x9')]){logger[_0x6809('0x15')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x2604dd['license']&&!_0x2604dd[_0x6809('0x13')]&&_0x2604dd['license']==_0x3a04f4[_0x6809('0x9')]){return _0x5c8c48;}return _0x5c8c48[_0x6809('0x17')]({'data1':_0x493632,'data2':null,'license':_0x3a04f4[_0x6809('0x9')]});}else{if(_0x3a04f4[_0x6809('0x9')]||_0x2604dd[_0x6809('0x9')]){if(!_0x2604dd[_0x6809('0x13')]){if(_0x2604dd[_0x6809('0x12')]==_0x493632){GRAY_PERIOD_REASON='Disabled';logger[_0x6809('0x15')]('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x6809('0x18');logger[_0x6809('0x15')](_0x6809('0x19'),_0x2604dd[_0x6809('0x12')],_0x493632);}logger['info']('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON['toUpperCase'](),moment()['format'](_0x6809('0x1a')));return _0x5c8c48[_0x6809('0x17')]({'data2':encryptor[_0x6809('0x1b')](moment()[_0x6809('0xb')](_0x6809('0x1a')))});}else{if(moment()[_0x6809('0x1c')](encryptor['decryptString'](_0x2604dd[_0x6809('0x13')]),_0x6809('0x1d'))>DAYS){logger[_0x6809('0x15')]('DEMO\x20START\x20AT\x20%s',moment()[_0x6809('0xb')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x5c8c48[_0x6809('0x17')]({'data1':_0x493632,'data2':null,'license':null});}}}else{if(_0x2604dd[_0x6809('0x12')]!=_0x493632){logger[_0x6809('0x15')](_0x6809('0x19'),_0x2604dd[_0x6809('0x12')],_0x493632);return _0x5c8c48[_0x6809('0x17')]({'data1':_0x493632,'data2':null,'license':null});}}}return _0x5c8c48;})[_0x6809('0x10')](function(_0x38d869){_0x5c8c48=_0x38d869;})[_0x6809('0x1e')](function(_0x3b5204){logger[_0x6809('0x1f')](_0x3b5204[_0x6809('0x20')]);})[_0x6809('0x21')](function(){setTimeout(function(){manageLicense(hardware[_0x6809('0x22')](),_0x5c8c48);},TIME);});}function defaultLicense(){var _0x879c8e=hardware['getUuid']();if(_0x879c8e){return db[_0x6809('0x23')]['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x879c8e}})[_0x6809('0x24')](function(_0x23785c,_0x4f91b5){logger[_0x6809('0x15')](_0x6809('0x25'),_0x879c8e);manageLicense(_0x879c8e,_0x23785c);})[_0x6809('0x1e')](function(_0x173c24){logger['error'](_0x173c24['message']);});}}exports[_0x6809('0x26')]=defaultLicense;
\ No newline at end of file
index aad9cdc..857b4ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6894=['defaults','uuid','data1','license','License\x20key\x20value\x20not\x20found','split','format','%s:%s:%s','parse','demo','machineUuid','decryptString','deadline','add','changed','disabled','then','User','findAll','sequelize','col','role','count','user','telephone','users','telephones','pick','countBy','admin','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','catch','exports','util','lodash','moment','bluebird','./hardware','../../mysqldb','2027-01-01T00:00:00.000Z','Breaking\x20license','getUuid','find'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x6894,0x7a));var _0x4689=function(_0x154192,_0x2d360f){_0x154192=_0x154192-0x0;var _0x3c2792=_0x6894[_0x154192];return _0x3c2792;};'use strict';var util=require(_0x4689('0x0'));var _=require(_0x4689('0x1'));var moment=require(_0x4689('0x2'));var BPromise=require(_0x4689('0x3'));var hardware=require(_0x4689('0x4'));var encryptor=require('../../components/encryptor');var db=require(_0x4689('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x4689('0x6'),'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':_0x4689('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x4689('0x7'),'machineUuid':hardware[_0x4689('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x589369){return new BPromise(function(_0x3109c1,_0x572e62){return db['License'][_0x4689('0x9')](_[_0x4689('0xa')](_0x589369,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x276451){return checkLicense(_0x276451,null);})['then'](function(_0x1733d8){_0x3109c1(_0x1733d8);return;})['catch'](function(_0x1528ae){_0x572e62(_0x1528ae);});});}function checkLicense(_0x1cafb8,_0x599ab6){if(!_0x1cafb8){demoLicense[_0x4689('0xb')]=_0x1cafb8[_0x4689('0xc')];return demoLicense;}try{var _0x45e446=_0x599ab6||_0x1cafb8[_0x4689('0xd')];if(_['isEmpty'](_0x45e446)){throw new Error(_0x4689('0xe'));}var _0x2a655f=_0x1cafb8['data1'];var _0x5651c9=_0x1cafb8['data2'];var _0xbc38f7=_0x2a655f[_0x4689('0xf')]('-')[0x4];var _0x114f80=_0x2a655f[_0x4689('0xf')]('-')[0x0];var _0x2ada17=encryptor['decryptString'](_0x45e446,util[_0x4689('0x10')](_0x4689('0x11'),_0xbc38f7,_0x2a655f,_0x114f80));var _0x52b791=JSON[_0x4689('0x12')](_0x2ada17);_0x52b791[_0x4689('0x13')]=![];_0x52b791['uuid']=_0x2a655f;_0x52b791[_0x4689('0x14')]=hardware[_0x4689('0x8')]();if(_0x5651c9){var _0x2d8ca1=encryptor[_0x4689('0x15')](_0x5651c9);_0x52b791['gray']=_0x2d8ca1;_0x52b791[_0x4689('0x16')]=moment(_0x2d8ca1)[_0x4689('0x17')](0x7,'days')[_0x4689('0x10')]();_0x52b791['grayReason']=_0x52b791[_0x4689('0xb')]!=_0x52b791[_0x4689('0x14')]?_0x4689('0x18'):_0x4689('0x19');}return _0x52b791;}catch(_0x1bb2e9){breakingLicense['uuid']=_0x1cafb8[_0x4689('0xc')];breakingLicense['message']=_0x1bb2e9['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x248e92,_0x140759){getLicense()[_0x4689('0x1a')](function(_0x225238){return db[_0x4689('0x1b')][_0x4689('0x1c')]({'attributes':['role',[db[_0x4689('0x1d')]['fn']('COUNT',db[_0x4689('0x1d')][_0x4689('0x1e')](_0x4689('0x1f'))),_0x4689('0x20')]],'group':_0x4689('0x1f'),'where':{'role':{'$or':['admin',_0x4689('0x21'),_0x4689('0x22')]}},'raw':!![]})[_0x4689('0x1a')](function(_0x217b1d){var _0x26533e={'user':_0x225238[_0x4689('0x23')]||0x0,'telephone':_0x225238[_0x4689('0x24')]||0x0};_0x217b1d['forEach'](function(_0x3ef9c2){var _0x6a74fa=_0x3ef9c2['role']==='admin'?_0x4689('0x21'):_0x3ef9c2[_0x4689('0x1f')];_0x26533e[_0x6a74fa]-=_0x3ef9c2[_0x4689('0x20')];if(_0x26533e[_0x6a74fa]<0x0)_0x26533e[_0x6a74fa]=0x0;});_0x248e92(_0x26533e);return;});})['catch'](function(_0x16f01c){_0x140759(_0x16f01c);});});}function checkUserLimits(_0x135dfb){return new BPromise(function(_0x4c7fc3,_0x1f038f){getLimits()['then'](function(_0x50e2f5){var _0x28f2e6=_[_0x4689('0x25')](_[_0x4689('0x26')](_0x135dfb,_0x4689('0x1f')),[_0x4689('0x27'),_0x4689('0x21'),_0x4689('0x22')]);var _0x40ab66=(_0x28f2e6[_0x4689('0x27')]||0x0)+(_0x28f2e6[_0x4689('0x21')]||0x0);var _0x4403a9=_0x28f2e6[_0x4689('0x22')]||0x0;if(_0x40ab66>_0x50e2f5[_0x4689('0x21')])return _0x1f038f(_0x4689('0x28'));if(_0x4403a9>_0x50e2f5[_0x4689('0x22')])return _0x1f038f(_0x4689('0x29'));return _0x4c7fc3();})[_0x4689('0x2a')](function(_0x23ce02){_0x1f038f(_0x23ce02);});});}module[_0x4689('0x2b')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0xf7e9=['telephones','forEach','admin','pick','countBy','telephone','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','moment','bluebird','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','getUuid','Breaking\x20license','License','find','then','catch','data1','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','parse','demo','uuid','deadline','days','grayReason','machineUuid','changed','disabled','findAll','role','sequelize','COUNT','count','user','users'];(function(_0xd299c3,_0x4ba0f1){var _0x376574=function(_0xc585f){while(--_0xc585f){_0xd299c3['push'](_0xd299c3['shift']());}};_0x376574(++_0x4ba0f1);}(_0xf7e9,0xea));var _0x9f7e=function(_0x4d8a8f,_0x2afd4c){_0x4d8a8f=_0x4d8a8f-0x0;var _0xfc4adc=_0xf7e9[_0x4d8a8f];return _0xfc4adc;};'use strict';var util=require(_0x9f7e('0x0'));var _=require(_0x9f7e('0x1'));var moment=require(_0x9f7e('0x2'));var BPromise=require(_0x9f7e('0x3'));var hardware=require('./hardware');var encryptor=require(_0x9f7e('0x4'));var db=require(_0x9f7e('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x9f7e('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware[_0x9f7e('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x9f7e('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x9f7e('0x8'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x4315d1){return new BPromise(function(_0x2228b4,_0x33f0f1){return db[_0x9f7e('0x9')][_0x9f7e('0xa')](_['defaults'](_0x4315d1,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x5515ce){return checkLicense(_0x5515ce,null);})[_0x9f7e('0xb')](function(_0x125595){_0x2228b4(_0x125595);return;})[_0x9f7e('0xc')](function(_0x501687){_0x33f0f1(_0x501687);});});}function checkLicense(_0x23cc23,_0x39e473){if(!_0x23cc23){demoLicense['uuid']=_0x23cc23[_0x9f7e('0xd')];return demoLicense;}try{var _0x4d8dd9=_0x39e473||_0x23cc23['license'];if(_[_0x9f7e('0xe')](_0x4d8dd9)){throw new Error(_0x9f7e('0xf'));}var _0x3cea70=_0x23cc23[_0x9f7e('0xd')];var _0x89bbf4=_0x23cc23[_0x9f7e('0x10')];var _0x25043a=_0x3cea70['split']('-')[0x4];var _0x534c1f=_0x3cea70[_0x9f7e('0x11')]('-')[0x0];var _0x9d6c26=encryptor[_0x9f7e('0x12')](_0x4d8dd9,util[_0x9f7e('0x13')]('%s:%s:%s',_0x25043a,_0x3cea70,_0x534c1f));var _0x5eed84=JSON[_0x9f7e('0x14')](_0x9d6c26);_0x5eed84[_0x9f7e('0x15')]=![];_0x5eed84[_0x9f7e('0x16')]=_0x3cea70;_0x5eed84['machineUuid']=hardware[_0x9f7e('0x7')]();if(_0x89bbf4){var _0x5b1894=encryptor[_0x9f7e('0x12')](_0x89bbf4);_0x5eed84['gray']=_0x5b1894;_0x5eed84[_0x9f7e('0x17')]=moment(_0x5b1894)['add'](0x7,_0x9f7e('0x18'))[_0x9f7e('0x13')]();_0x5eed84[_0x9f7e('0x19')]=_0x5eed84[_0x9f7e('0x16')]!=_0x5eed84[_0x9f7e('0x1a')]?_0x9f7e('0x1b'):_0x9f7e('0x1c');}return _0x5eed84;}catch(_0x18bea4){breakingLicense[_0x9f7e('0x16')]=_0x23cc23['data1'];breakingLicense['message']=_0x18bea4['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x3f659b,_0x1178da){getLicense()[_0x9f7e('0xb')](function(_0x404b6c){return db['User'][_0x9f7e('0x1d')]({'attributes':[_0x9f7e('0x1e'),[db[_0x9f7e('0x1f')]['fn'](_0x9f7e('0x20'),db[_0x9f7e('0x1f')]['col']('role')),_0x9f7e('0x21')]],'group':'role','where':{'role':{'$or':['admin',_0x9f7e('0x22'),'telephone']}},'raw':!![]})[_0x9f7e('0xb')](function(_0x50f06b){var _0x109f80={'user':_0x404b6c[_0x9f7e('0x23')]||0x0,'telephone':_0x404b6c[_0x9f7e('0x24')]||0x0};_0x50f06b[_0x9f7e('0x25')](function(_0x4b8680){var _0xea410d=_0x4b8680[_0x9f7e('0x1e')]===_0x9f7e('0x26')?_0x9f7e('0x22'):_0x4b8680['role'];_0x109f80[_0xea410d]-=_0x4b8680[_0x9f7e('0x21')];if(_0x109f80[_0xea410d]<0x0)_0x109f80[_0xea410d]=0x0;});_0x3f659b(_0x109f80);return;});})[_0x9f7e('0xc')](function(_0x2af563){_0x1178da(_0x2af563);});});}function checkUserLimits(_0x137e37){return new BPromise(function(_0x348d4a,_0x623b8f){getLimits()['then'](function(_0x49446a){var _0x29a919=_[_0x9f7e('0x27')](_[_0x9f7e('0x28')](_0x137e37,_0x9f7e('0x1e')),[_0x9f7e('0x26'),_0x9f7e('0x22'),_0x9f7e('0x29')]);var _0x6f0d52=(_0x29a919['admin']||0x0)+(_0x29a919[_0x9f7e('0x22')]||0x0);var _0x1cc651=_0x29a919[_0x9f7e('0x29')]||0x0;if(_0x6f0d52>_0x49446a[_0x9f7e('0x22')])return _0x623b8f(_0x9f7e('0x2a'));if(_0x1cc651>_0x49446a[_0x9f7e('0x29')])return _0x623b8f(_0x9f7e('0x2b'));return _0x348d4a();})['catch'](function(_0x481151){_0x623b8f(_0x481151);});});}module[_0x9f7e('0x2c')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index afa2774..14dc2e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['myappanuglar-secret','app-id','exports','http://localhost:9000'];(function(_0x1a375d,_0x5ebe64){var _0x5443de=function(_0x3302f2){while(--_0x3302f2){_0x1a375d['push'](_0x1a375d['shift']());}};_0x5443de(++_0x5ebe64);}(_0xdb28,0x106));var _0x8db2=function(_0x3317f8,_0x2b0987){_0x3317f8=_0x3317f8-0x0;var _0x4e039e=_0xdb28[_0x3317f8];return _0x4e039e;};'use strict';module[_0x8db2('0x0')]={'DOMAIN':_0x8db2('0x1'),'SESSION_SECRET':_0x8db2('0x2'),'GOOGLE_ID':_0x8db2('0x3'),'GOOGLE_SECRET':'secret','DEBUG':''};
\ No newline at end of file
+var _0x8f59=['exports','http://localhost:9000','myappanuglar-secret','app-id','secret'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x8f59,0x11d));var _0x98f5=function(_0x4ef03d,_0x4b8062){_0x4ef03d=_0x4ef03d-0x0;var _0x33cce1=_0x8f59[_0x4ef03d];return _0x33cce1;};'use strict';module[_0x98f5('0x0')]={'DOMAIN':_0x98f5('0x1'),'SESSION_SECRET':_0x98f5('0x2'),'GOOGLE_ID':_0x98f5('0x3'),'GOOGLE_SECRET':_0x98f5('0x4'),'DEBUG':''};
\ No newline at end of file
index 2552e0d..db08a80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf61=['transports','File','%s-%s','error','info','debugLevel','moment','util','path','INFO','/var','log','xcally','format','%s-%s.log','message','{{{','replace','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','exports','Logger'];(function(_0x4bf905,_0x4911c5){var _0x614bc8=function(_0x5d1f3c){while(--_0x5d1f3c){_0x4bf905['push'](_0x4bf905['shift']());}};_0x614bc8(++_0x4911c5);}(_0xaf61,0x126));var _0x1af6=function(_0x217348,_0x32a42d){_0x217348=_0x217348-0x0;var _0xaba3a0=_0xaf61[_0x217348];return _0xaba3a0;};'use strict';var moment=require(_0x1af6('0x0'));var winston=require('winston');var util=require(_0x1af6('0x1'));var path=require(_0x1af6('0x2'));var debugLevel=_0x1af6('0x3');function filename(_0x3919e6,_0x2b2912){return path['join'](_0x1af6('0x4'),_0x1af6('0x5'),_0x1af6('0x6'),util[_0x1af6('0x7')](_0x1af6('0x8'),_0x3919e6,_0x2b2912));}function formatter(_0x27ee8d,_0x2ef925){_0x2ef925[_0x1af6('0x9')]=_0x2ef925[_0x1af6('0x9')]['replace'](/@@{/g,_0x1af6('0xa'))['replace'](/}@@/g,'}}}')[_0x1af6('0xb')](/@{/g,'{{')[_0x1af6('0xb')](/}@/g,'}}');return util[_0x1af6('0x7')](_0x1af6('0xc'),moment()[_0x1af6('0x7')](_0x1af6('0xd')),_0x2ef925[_0x1af6('0xe')][_0x1af6('0xf')](),_0x27ee8d,_0x2ef925[_0x1af6('0x9')]);}module[_0x1af6('0x10')]=function(_0x3afd4a){return new winston[(_0x1af6('0x11'))]({'transports':[new winston[(_0x1af6('0x12'))][(_0x1af6('0x13'))]({'name':util[_0x1af6('0x7')](_0x1af6('0x14'),_0x3afd4a,_0x1af6('0x15')),'filename':filename(_0x3afd4a,_0x1af6('0x15')),'level':_0x1af6('0x15'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x482f36){return formatter(_0x3afd4a,_0x482f36);}}),new winston[(_0x1af6('0x12'))][(_0x1af6('0x13'))]({'name':util['format'](_0x1af6('0x14'),_0x3afd4a,_0x1af6('0x16')),'filename':filename(_0x3afd4a,_0x1af6('0x16')),'level':_0x1af6('0x16'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x175bc5){return formatter(_0x3afd4a,_0x175bc5);}}),new winston['transports']['Console']({'level':process['env'][_0x1af6('0x17')]||debugLevel,'json':![],'formatter':function(_0x52bdb5){return formatter(_0x3afd4a,_0x52bdb5);}})]});};
\ No newline at end of file
+var _0x9390=['message','{{{','replace','[%s]\x20[%s]\x20%s\x20-\x20%s','format','level','toUpperCase','exports','transports','error','%s-%s','info','Console','env','moment','util','path','INFO','join','/var','log'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0x9390,0x1c7));var _0x0939=function(_0x320a8b,_0x11b6f0){_0x320a8b=_0x320a8b-0x0;var _0x159ef7=_0x9390[_0x320a8b];return _0x159ef7;};'use strict';var moment=require(_0x0939('0x0'));var winston=require('winston');var util=require(_0x0939('0x1'));var path=require(_0x0939('0x2'));var debugLevel=_0x0939('0x3');function filename(_0x3b30e1,_0x543322){return path[_0x0939('0x4')](_0x0939('0x5'),_0x0939('0x6'),'xcally',util['format']('%s-%s.log',_0x3b30e1,_0x543322));}function formatter(_0x12683c,_0x19ac31){_0x19ac31[_0x0939('0x7')]=_0x19ac31['message']['replace'](/@@{/g,_0x0939('0x8'))[_0x0939('0x9')](/}@@/g,'}}}')[_0x0939('0x9')](/@{/g,'{{')[_0x0939('0x9')](/}@/g,'}}');return util['format'](_0x0939('0xa'),moment()[_0x0939('0xb')]('YYYY-MM-DD\x20HH:mm:ss'),_0x19ac31[_0x0939('0xc')][_0x0939('0xd')](),_0x12683c,_0x19ac31[_0x0939('0x7')]);}module[_0x0939('0xe')]=function(_0x16d0a0){return new winston['Logger']({'transports':[new winston[(_0x0939('0xf'))]['File']({'name':util[_0x0939('0xb')]('%s-%s',_0x16d0a0,_0x0939('0x10')),'filename':filename(_0x16d0a0,'error'),'level':_0x0939('0x10'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x308748){return formatter(_0x16d0a0,_0x308748);}}),new winston[(_0x0939('0xf'))]['File']({'name':util['format'](_0x0939('0x11'),_0x16d0a0,_0x0939('0x12')),'filename':filename(_0x16d0a0,_0x0939('0x12')),'level':'info','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x50ca08){return formatter(_0x16d0a0,_0x50ca08);}}),new winston[(_0x0939('0xf'))][(_0x0939('0x13'))]({'level':process[_0x0939('0x14')]['debugLevel']||debugLevel,'json':![],'formatter':function(_0x1e1a90){return formatter(_0x16d0a0,_0x1e1a90);}})]});};
\ No newline at end of file
index d8eee2b..3684a5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe490=['xdr','../../services/xdr/index.js','exports','path','express','join','../../services/express/index.js','ami','../../services/agi/index.js','email','../../services/email/index.js','routing'];(function(_0x584283,_0x4226cb){var _0x5b254c=function(_0x84b21e){while(--_0x84b21e){_0x584283['push'](_0x584283['shift']());}};_0x5b254c(++_0x4226cb);}(_0xe490,0x7b));var _0x0e49=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xe490[_0x3b380d];return _0x54502b;};'use strict';var path=require(_0x0e49('0x0'));var os=require('os');var config={'apps':[{'name':_0x0e49('0x1'),'script':path[_0x0e49('0x2')](__dirname,_0x0e49('0x3'))},{'name':_0x0e49('0x4'),'script':path[_0x0e49('0x2')](__dirname,'../../services/ami/index.js')},{'name':'agi','script':path[_0x0e49('0x2')](__dirname,_0x0e49('0x5'))},{'name':_0x0e49('0x6'),'script':path['join'](__dirname,_0x0e49('0x7'))},{'name':_0x0e49('0x8'),'script':path['join'](__dirname,'../../services/routing/index.js')},{'name':_0x0e49('0x9'),'script':path[_0x0e49('0x2')](__dirname,_0x0e49('0xa'))}]};module[_0x0e49('0xb')]=config;
\ No newline at end of file
+var _0xaf9a=['agi','../../services/agi/index.js','email','../../services/email/index.js','routing','xdr','exports','path','express','join','../../services/express/index.js','../../services/ami/index.js'];(function(_0x1fadf6,_0x57d261){var _0x2bf90c=function(_0x530b63){while(--_0x530b63){_0x1fadf6['push'](_0x1fadf6['shift']());}};_0x2bf90c(++_0x57d261);}(_0xaf9a,0x73));var _0xaaf9=function(_0x2ab3f1,_0x136c24){_0x2ab3f1=_0x2ab3f1-0x0;var _0x12ae2c=_0xaf9a[_0x2ab3f1];return _0x12ae2c;};'use strict';var path=require(_0xaaf9('0x0'));var os=require('os');var config={'apps':[{'name':_0xaaf9('0x1'),'script':path[_0xaaf9('0x2')](__dirname,_0xaaf9('0x3'))},{'name':'ami','script':path[_0xaaf9('0x2')](__dirname,_0xaaf9('0x4'))},{'name':_0xaaf9('0x5'),'script':path[_0xaaf9('0x2')](__dirname,_0xaaf9('0x6'))},{'name':_0xaaf9('0x7'),'script':path[_0xaaf9('0x2')](__dirname,_0xaaf9('0x8'))},{'name':_0xaaf9('0x9'),'script':path['join'](__dirname,'../../services/routing/index.js')},{'name':_0xaaf9('0xa'),'script':path['join'](__dirname,'../../services/xdr/index.js')}]};module[_0xaaf9('0xb')]=config;
\ No newline at end of file
index cf26e6b..1ab54fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207e=['bluebird','./config','connect','connected','start','disconnect','then','stop','restart','list','describe','delete','dump'];(function(_0x454018,_0x46e33a){var _0x24697d=function(_0x3ec647){while(--_0x3ec647){_0x454018['push'](_0x454018['shift']());}};_0x24697d(++_0x46e33a);}(_0x207e,0x1c7));var _0xe207=function(_0x234637,_0x4bd143){_0x234637=_0x234637-0x0;var _0x3144c6=_0x207e[_0x234637];return _0x3144c6;};'use strict';var pm2=require('pm2');var BPromise=require(_0xe207('0x0'));var config=require(_0xe207('0x1'));function connect(){return new BPromise(function(_0x265db7,_0x2dfde8){return pm2[_0xe207('0x2')](function(_0x2a40fb){if(_0x2a40fb){return _0x2dfde8(_0x2a40fb);}return _0x265db7(_0xe207('0x3'));});});};exports['start']=function(_0x1af219){return connect()['then'](function(){return new BPromise(function(_0x41f3e5,_0xb27422){return pm2[_0xe207('0x4')](_0x1af219,function(_0x78e1e6,_0x412260){if(_0x78e1e6){return _0xb27422(_0x78e1e6);}pm2[_0xe207('0x5')]();return _0x41f3e5(_0x412260);});});});};exports['stop']=function(_0x4ddf62){return connect()[_0xe207('0x6')](function(){return new BPromise(function(_0x5a0762,_0x5aeeeb){return pm2[_0xe207('0x7')](_0x4ddf62,function(_0xa673a9,_0x133f06){if(_0xa673a9){return _0x5aeeeb(_0xa673a9);}pm2[_0xe207('0x5')]();return _0x5a0762(_0x133f06);});});});};exports['restart']=function(_0x1f5f87){return connect()[_0xe207('0x6')](function(){return new BPromise(function(_0x2df325,_0x12f6f6){return pm2[_0xe207('0x8')](_0x1f5f87,function(_0x4f7816,_0xfd7e39){if(_0x4f7816){return _0x12f6f6(_0x4f7816);}pm2[_0xe207('0x5')]();return _0x2df325(_0xfd7e39);});});});};exports[_0xe207('0x9')]=function(){return connect()['then'](function(){return new BPromise(function(_0x4573c8,_0x107242){return pm2[_0xe207('0x9')](function(_0x533ff5,_0x59bff0){if(_0x533ff5){return _0x107242(_0x533ff5);}pm2[_0xe207('0x5')]();return _0x4573c8(_0x59bff0);});});});};exports[_0xe207('0xa')]=function(_0x931daa){return connect()['then'](function(){return new BPromise(function(_0x3ff978,_0x412224){return pm2['describe'](_0x931daa,function(_0x4c6d50,_0x2afbde){if(_0x4c6d50){return _0x412224(_0x4c6d50);}pm2[_0xe207('0x5')]();return _0x3ff978(_0x2afbde);});});});};exports['delete']=function(_0x16cb29){return connect()[_0xe207('0x6')](function(){return new BPromise(function(_0x483f36,_0x18dba6){return pm2[_0xe207('0xb')](_0x16cb29,function(_0x4770c2,_0xb9c46f){if(_0x4770c2){return _0x18dba6(_0x4770c2);}pm2[_0xe207('0x5')]();return _0x483f36(_0xb9c46f);});});});};exports['dump']=function(){return connect()['then'](function(){return new BPromise(function(_0x27b0b1,_0x5dabc3){return pm2[_0xe207('0xc')](function(_0x36bcb7){if(_0x36bcb7){return _0x5dabc3(_0x36bcb7);}return _0x27b0b1('saved');});});});};
\ No newline at end of file
+var _0x5599=['delete','dump','saved','bluebird','./config','connect','connected','start','then','disconnect','stop','restart','list'];(function(_0x485eb2,_0x309eae){var _0x4ee062=function(_0xc9dfa7){while(--_0xc9dfa7){_0x485eb2['push'](_0x485eb2['shift']());}};_0x4ee062(++_0x309eae);}(_0x5599,0x13b));var _0x9559=function(_0x355925,_0x231b18){_0x355925=_0x355925-0x0;var _0x321895=_0x5599[_0x355925];return _0x321895;};'use strict';var pm2=require('pm2');var BPromise=require(_0x9559('0x0'));var config=require(_0x9559('0x1'));function connect(){return new BPromise(function(_0x40c3da,_0x3485c9){return pm2[_0x9559('0x2')](function(_0x5349a0){if(_0x5349a0){return _0x3485c9(_0x5349a0);}return _0x40c3da(_0x9559('0x3'));});});};exports[_0x9559('0x4')]=function(_0x5794e0){return connect()[_0x9559('0x5')](function(){return new BPromise(function(_0x27171b,_0x10b6e5){return pm2[_0x9559('0x4')](_0x5794e0,function(_0x339f1a,_0x3aad5e){if(_0x339f1a){return _0x10b6e5(_0x339f1a);}pm2[_0x9559('0x6')]();return _0x27171b(_0x3aad5e);});});});};exports[_0x9559('0x7')]=function(_0x2d65e5){return connect()[_0x9559('0x5')](function(){return new BPromise(function(_0x2fde44,_0x5450d7){return pm2['stop'](_0x2d65e5,function(_0x59f8a1,_0x134773){if(_0x59f8a1){return _0x5450d7(_0x59f8a1);}pm2[_0x9559('0x6')]();return _0x2fde44(_0x134773);});});});};exports[_0x9559('0x8')]=function(_0x47f086){return connect()[_0x9559('0x5')](function(){return new BPromise(function(_0x48c311,_0x2b0448){return pm2['restart'](_0x47f086,function(_0x2c5c10,_0x95b99){if(_0x2c5c10){return _0x2b0448(_0x2c5c10);}pm2[_0x9559('0x6')]();return _0x48c311(_0x95b99);});});});};exports[_0x9559('0x9')]=function(){return connect()[_0x9559('0x5')](function(){return new BPromise(function(_0x356223,_0x512f93){return pm2[_0x9559('0x9')](function(_0x43140e,_0x509dad){if(_0x43140e){return _0x512f93(_0x43140e);}pm2[_0x9559('0x6')]();return _0x356223(_0x509dad);});});});};exports['describe']=function(_0x17abca){return connect()['then'](function(){return new BPromise(function(_0x2498a5,_0x5f384c){return pm2['describe'](_0x17abca,function(_0x535162,_0xb5c227){if(_0x535162){return _0x5f384c(_0x535162);}pm2['disconnect']();return _0x2498a5(_0xb5c227);});});});};exports[_0x9559('0xa')]=function(_0x4820a0){return connect()[_0x9559('0x5')](function(){return new BPromise(function(_0xdbd1cf,_0x1d777c){return pm2['delete'](_0x4820a0,function(_0x226c51,_0x116b98){if(_0x226c51){return _0x1d777c(_0x226c51);}pm2[_0x9559('0x6')]();return _0xdbd1cf(_0x116b98);});});});};exports[_0x9559('0xb')]=function(){return connect()[_0x9559('0x5')](function(){return new BPromise(function(_0x164394,_0x21ec75){return pm2[_0x9559('0xb')](function(_0xaf9998){if(_0xaf9998){return _0x21ec75(_0xaf9998);}return _0x164394(_0x9559('0xc'));});});});};
\ No newline at end of file
index 6db4d0f..ab07def 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51e5=['info','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','util','../../mysqldb','redis','localhost','socket.io-emitter','Setting','find','then','chatTimeout','ChatInteraction','lastMsgAt','subtract','length','map'];(function(_0x45e98f,_0x3d3314){var _0xcc5ff6=function(_0x3b94c9){while(--_0x3b94c9){_0x45e98f['push'](_0x45e98f['shift']());}};_0xcc5ff6(++_0x3d3314);}(_0x51e5,0x12e));var _0x551e=function(_0x44cf54,_0x3230ee){_0x44cf54=_0x44cf54-0x0;var _0xa337b9=_0x51e5[_0x44cf54];return _0xa337b9;};'use strict';var _=require(_0x551e('0x0'));var moment=require(_0x551e('0x1'));var Redis=require(_0x551e('0x2'));var util=require(_0x551e('0x3'));var config=require('../../config/environment');var db=require(_0x551e('0x4'))['db'];var logger=require('../logger')('schedule');config[_0x551e('0x5')]=_['defaults'](config[_0x551e('0x5')],{'host':_0x551e('0x6'),'port':0x18eb});var io=require(_0x551e('0x7'))(new Redis(config[_0x551e('0x5')]));function closeInteractions(){var _0x5ebed8=0x0;var _0x5b1d82=[];return db[_0x551e('0x8')][_0x551e('0x9')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0x551e('0xa')](function(_0x21d505){_0x5ebed8=_0x21d505[_0x551e('0xb')];if(_0x5ebed8){return db[_0x551e('0xc')]['findAll']({'raw':!![],'attributes':['id',_0x551e('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x551e('0xe')](_0x21d505[_0x551e('0xb')],'minutes')}}});}else{return[];}})[_0x551e('0xa')](function(_0x1479c5){if(_0x1479c5&&_0x1479c5[_0x551e('0xf')]){_0x5b1d82=_[_0x551e('0x10')](_0x1479c5||[],'id');logger[_0x551e('0x11')](_0x551e('0x12'),_0x5b1d82[_0x551e('0x13')]());return db[_0x551e('0xc')][_0x551e('0x14')]({'closeReason':_0x551e('0x15'),'disposition':_0x551e('0x16'),'closed':!![],'closedAt':moment()['format'](_0x551e('0x17'))},{'where':{'id':_0x5b1d82}});}})[_0x551e('0xa')](function(){if(_0x5b1d82&&_0x5b1d82[_0x551e('0xf')]){logger['info'](_0x551e('0x18'),_0x5b1d82['join']());for(var _0x2625ee=0x0;_0x2625ee<_0x5b1d82[_0x551e('0xf')];_0x2625ee++){io[_0x551e('0x19')]('chatInteraction:update',{'id':_0x5b1d82[_0x2625ee],'closed':!![]});}}})['catch'](function(_0x2b381b){logger['error'](_0x551e('0x1a'),_0x2b381b?util[_0x551e('0x1b')](_0x2b381b,{'showHidden':![],'depth':null}):'');});}exports[_0x551e('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x83c9=['[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','redis','defaults','localhost','Setting','find','chatTimeout','then','ChatInteraction','findAll','subtract','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','join','emit','chatInteraction:update','catch','error'];(function(_0x5574fe,_0x40d457){var _0xa06a9c=function(_0x45fb73){while(--_0x45fb73){_0x5574fe['push'](_0x5574fe['shift']());}};_0xa06a9c(++_0x40d457);}(_0x83c9,0x8b));var _0x983c=function(_0xb725be,_0x45bd01){_0xb725be=_0xb725be-0x0;var _0x2f2424=_0x83c9[_0xb725be];return _0x2f2424;};'use strict';var _=require(_0x983c('0x0'));var moment=require(_0x983c('0x1'));var Redis=require(_0x983c('0x2'));var util=require(_0x983c('0x3'));var config=require(_0x983c('0x4'));var db=require(_0x983c('0x5'))['db'];var logger=require(_0x983c('0x6'))('schedule');config[_0x983c('0x7')]=_[_0x983c('0x8')](config[_0x983c('0x7')],{'host':_0x983c('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x983c('0x7')]));function closeInteractions(){var _0x5c5608=0x0;var _0x39c29e=[];return db[_0x983c('0xa')][_0x983c('0xb')]({'raw':!![],'attributes':['id',_0x983c('0xc')],'where':{'id':0x1}})[_0x983c('0xd')](function(_0x3f00fb){_0x5c5608=_0x3f00fb[_0x983c('0xc')];if(_0x5c5608){return db[_0x983c('0xe')][_0x983c('0xf')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x983c('0x10')](_0x3f00fb['chatTimeout'],'minutes')}}});}else{return[];}})[_0x983c('0xd')](function(_0x62baf7){if(_0x62baf7&&_0x62baf7[_0x983c('0x11')]){_0x39c29e=_[_0x983c('0x12')](_0x62baf7||[],'id');logger[_0x983c('0x13')](_0x983c('0x14'),_0x39c29e['join']());return db['ChatInteraction'][_0x983c('0x15')]({'closeReason':'system','disposition':_0x983c('0x16'),'closed':!![],'closedAt':moment()[_0x983c('0x17')](_0x983c('0x18'))},{'where':{'id':_0x39c29e}});}})[_0x983c('0xd')](function(){if(_0x39c29e&&_0x39c29e[_0x983c('0x11')]){logger[_0x983c('0x13')](_0x983c('0x19'),_0x39c29e[_0x983c('0x1a')]());for(var _0x4f0af9=0x0;_0x4f0af9<_0x39c29e['length'];_0x4f0af9++){io[_0x983c('0x1b')](_0x983c('0x1c'),{'id':_0x39c29e[_0x4f0af9],'closed':!![]});}}})[_0x983c('0x1d')](function(_0x2a1f2e){logger[_0x983c('0x1e')](_0x983c('0x1f'),_0x2a1f2e?util[_0x983c('0x20')](_0x2a1f2e,{'showHidden':![],'depth':null}):'');});}exports[_0x983c('0x21')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 7df7450..162ab6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28f9=['keyBy','difference','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','start','add\x20cron','exists','stop','stop\x20cron','startAt','update','update\x20cron','deleteJob','run','util','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','MailAccount','service','Smtp','host','port','secure','authentication','auth','user','pass','name','email','bcc','format','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','../../files/reports','%s.%s','basename','savename','extname','zip','join','status','attachments','message','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','existsSync','Sent','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','catch','stringify','isNil','subtractNumber\x20null\x20or\x20undefined','subtract','subtractNumber','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','runReport','CustomReportId','no\x20report\x20id','Schedule','findAll','keys','map','toString'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0x28f9,0xbf));var _0x928f=function(_0x1866d3,_0x1e5790){_0x1866d3=_0x1866d3-0x0;var _0x319a77=_0x28f9[_0x1866d3];return _0x319a77;};'use strict';var fs=require('fs');var util=require(_0x928f('0x0'));var path=require('path');var _=require('lodash');var moment=require('moment');var CronJobManager=require('cron-job-manager');var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x928f('0x1'))('schedule');var db=require(_0x928f('0x2'))['db'];var analyticCustomReportController=require(_0x928f('0x3'));var analyticDefaultReportController=require(_0x928f('0x4'));var client=jayson[_0x928f('0x5')][_0x928f('0x6')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x52fa6e,_0x545a56){return function(){logger[_0x928f('0x7')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x52fa6e['email']);var _0x2eaf79=!![];var _0x5a98b1={'tls':{'rejectUnauthorized':![]}};if(_0x52fa6e[_0x928f('0x8')]['Smtp'][_0x928f('0x9')]){_0x5a98b1[_0x928f('0x9')]=_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0x9')];}else{_0x5a98b1[_0x928f('0xb')]=_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0xb')];_0x5a98b1['port']=_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0xc')];_0x5a98b1[_0x928f('0xd')]=_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0xd')];}if(_0x52fa6e['MailAccount'][_0x928f('0xa')][_0x928f('0xe')]){_0x5a98b1[_0x928f('0xf')]={'user':_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0x10')],'pass':_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0x11')]};}var _0x486446={'account':_0x5a98b1,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x52fa6e[_0x928f('0x8')][_0x928f('0x12')],_0x52fa6e[_0x928f('0x8')]['email']||_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0x10')]),'to':_0x52fa6e[_0x928f('0x13')],'cc':_0x52fa6e['cc'],'bcc':_0x52fa6e[_0x928f('0x14')],'subject':util[_0x928f('0x15')](_0x928f('0x16'),_0x545a56[_0x928f('0x12')],_0x52fa6e['subtractNumber'],_0x52fa6e[_0x928f('0x17')])}};var _0x1fed62=path['join'](__dirname,_0x928f('0x18'));var _0x263279=_0x545a56['savename'];var _0x1e054f=util[_0x928f('0x15')](_0x928f('0x19'),path[_0x928f('0x1a')](_0x545a56[_0x928f('0x1b')],path[_0x928f('0x1c')](_0x545a56['savename'])),_0x928f('0x1d'));var _0xeb8896=path[_0x928f('0x1e')](_0x1fed62,_0x263279);var _0xc473ae=path[_0x928f('0x1e')](_0x1fed62,_0x1e054f);if(fs['existsSync'](_0xeb8896)){_0x545a56[_0x928f('0x1f')]='Sent';_0x486446['message'][_0x928f('0x20')]=[{'filename':_0x263279,'path':_0xeb8896}];_0x486446[_0x928f('0x21')][_0x928f('0x22')]=util[_0x928f('0x15')](_0x928f('0x23'),JSON['stringify'](_0x545a56,null,0x2));}else if(fs[_0x928f('0x24')](_0xc473ae)){_0x545a56['status']=_0x928f('0x25');_0x486446[_0x928f('0x21')][_0x928f('0x20')]=[{'filename':_0x1e054f,'path':_0xc473ae}];}else{_0x486446['message'][_0x928f('0x22')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x52fa6e[_0x928f('0x26')]){_0x2eaf79=![];logger[_0x928f('0x7')](_0x928f('0x27'));}}if(_0x2eaf79){return client[_0x928f('0x28')](_0x928f('0x29'),_0x486446)[_0x928f('0x2a')](function(_0x48751b){if(_0x48751b[_0x928f('0x2b')]){return logger[_0x928f('0x2b')](_0x928f('0x2c'),JSON['stringify'](_0x48751b));}return logger['info'](_0x928f('0x2d'));})[_0x928f('0x2e')](function(_0x32f44c){return logger[_0x928f('0x2b')](_0x928f('0x2c'),JSON[_0x928f('0x2f')](_0x32f44c));});}};}function handleError(){return function(_0x1d69c5){return logger[_0x928f('0x2b')](JSON[_0x928f('0x2f')](_0x1d69c5));};}function handleResult(_0x3965b8){return function(_0x3b8018){logger[_0x928f('0x7')]('data',JSON[_0x928f('0x2f')](_0x3b8018));if(_0x3965b8[_0x928f('0x8')]&&_0x3965b8[_0x928f('0x8')][_0x928f('0xa')]&&!_[_0x928f('0x30')](_0x3965b8['email'])){setTimeout(handleSendEmail(_0x3965b8,_0x3b8018),0x3c*0x3e8);}};}function handleJob(_0x1123af){return function(){try{if(_[_0x928f('0x30')](_0x1123af['subtractNumber'])){return logger[_0x928f('0x7')](_0x928f('0x31'));}if(_['isNil'](_0x1123af[_0x928f('0x17')])){return logger[_0x928f('0x7')]('subtractUnit\x20null\x20or\x20undefined');}var _0x3aa1fa={'startDate':moment()[_0x928f('0x32')](_0x1123af[_0x928f('0x33')],_0x1123af[_0x928f('0x17')])[_0x928f('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()['format'](_0x928f('0x34')),'type':_0x928f('0x35'),'output':_0x1123af[_0x928f('0x36')],'name':_0x1123af[_0x928f('0x12')]};if(!_[_0x928f('0x30')](_0x1123af['DefaultReportId'])){logger[_0x928f('0x7')]('exec\x20defaul\x20report\x20id:%s',_0x1123af[_0x928f('0x37')]);return analyticDefaultReportController[_0x928f('0x38')]({'id':_0x1123af[_0x928f('0x37')]},_0x3aa1fa)['then'](handleResult(_0x1123af))[_0x928f('0x2e')](handleError());}if(!_['isNil'](_0x1123af[_0x928f('0x39')])){logger['info']('exec\x20custom\x20report\x20id:%s',_0x1123af[_0x928f('0x39')]);return analyticCustomReportController[_0x928f('0x38')]({'id':_0x1123af['CustomReportId']},_0x3aa1fa)[_0x928f('0x2a')](handleResult(_0x1123af))[_0x928f('0x2e')](handleError());}}catch(_0x4b9633){logger[_0x928f('0x2b')](JSON['stringify'](_0x4b9633));}return logger[_0x928f('0x7')](_0x928f('0x3a'));};}function getJobs(_0x232ddf){var _0x30d6ce={};if(_0x232ddf){_0x30d6ce['id']=_0x232ddf;}return db[_0x928f('0x3b')][_0x928f('0x3c')]({'where':_0x30d6ce,'include':[{'model':db[_0x928f('0x8')],'attributes':['id','name',_0x928f('0x13')],'include':[{'model':db['MailServerOut'],'as':_0x928f('0xa')}]}]})[_0x928f('0x2a')](function(_0x5a16d1){var _0x50d27e=_[_0x928f('0x3d')](manager['jobs']);var _0x2e5e8e=_[_0x928f('0x3e')](_0x5a16d1,function(_0x44914c){return _0x44914c['id'][_0x928f('0x3f')]();});var _0x40298f=_[_0x928f('0x40')](_0x5a16d1,function(_0x67f5c4){return _0x67f5c4['id'][_0x928f('0x3f')]();});var _0x5ba4de=_0x232ddf?_0x2e5e8e:_[_0x928f('0x41')](_0x2e5e8e,_0x50d27e);var _0x1ff7a9=_['intersection'](_0x2e5e8e,_0x50d27e);var _0x2d57a8=_[_0x928f('0x41')](_0x50d27e,_0x2e5e8e);var _0x3bd818;var _0x2f1ab0;for(_0x3bd818=0x0;_0x3bd818<_0x2d57a8[_0x928f('0x42')]&&!_0x232ddf;_0x3bd818+=0x1){_0x2f1ab0=_0x2d57a8[_0x3bd818][_0x928f('0x3f')]();if(manager['exists'](_0x2f1ab0)){manager['stop'](_0x2f1ab0);manager['deleteJob'](_0x2f1ab0);logger[_0x928f('0x7')]('delete\x20cron',_0x2f1ab0);}}logger[_0x928f('0x7')]('toRun',JSON[_0x928f('0x2f')](_0x5ba4de));for(_0x3bd818=0x0;_0x3bd818<_0x5ba4de['length'];_0x3bd818+=0x1){_0x2f1ab0=_0x5ba4de[_0x3bd818][_0x928f('0x3f')]();logger['info'](_0x928f('0x43'),_0x2f1ab0);if(_0x232ddf){logger[_0x928f('0x7')](_0x928f('0x44'),_0x232ddf);logger[_0x928f('0x7')](JSON[_0x928f('0x2f')](_0x40298f[_0x2f1ab0]));BPromise[_0x928f('0x45')]()['then'](handleJob(_0x40298f[_0x2f1ab0]));logger[_0x928f('0x7')](_0x928f('0x46'),_0x40298f[_0x2f1ab0][_0x928f('0x12')],_0x40298f[_0x2f1ab0][_0x928f('0x47')]);}else if(_0x40298f[_0x2f1ab0][_0x928f('0x47')]&&_0x40298f[_0x2f1ab0][_0x928f('0x48')]&&moment()[_0x928f('0x49')](_0x40298f[_0x2f1ab0]['startAt'],_0x40298f[_0x2f1ab0][_0x928f('0x4a')])){manager['add'](_0x2f1ab0,_0x40298f[_0x2f1ab0][_0x928f('0x47')],handleJob(_0x40298f[_0x2f1ab0]));manager[_0x928f('0x4b')](_0x2f1ab0);logger['info'](_0x928f('0x4c'),_0x40298f[_0x2f1ab0][_0x928f('0x12')],_0x40298f[_0x2f1ab0]['cron']);}else if(manager[_0x928f('0x4d')](_0x2f1ab0)){manager[_0x928f('0x4e')](_0x2f1ab0);manager['deleteJob'](_0x2f1ab0);logger[_0x928f('0x7')](_0x928f('0x4f'),_0x40298f[_0x2f1ab0][_0x928f('0x12')],_0x40298f[_0x2f1ab0][_0x928f('0x47')]);}}for(_0x3bd818=0x0,_0x2f1ab0;_0x3bd818<_0x1ff7a9[_0x928f('0x42')]&&!_0x232ddf;_0x3bd818+=0x1){_0x2f1ab0=_0x1ff7a9[_0x3bd818][_0x928f('0x3f')]();if(manager[_0x928f('0x4d')](_0x2f1ab0)){if(_0x40298f[_0x2f1ab0][_0x928f('0x47')]&&_0x40298f[_0x2f1ab0]['active']&&moment()[_0x928f('0x49')](_0x40298f[_0x2f1ab0][_0x928f('0x50')],_0x40298f[_0x2f1ab0][_0x928f('0x4a')])){manager[_0x928f('0x51')](_0x2f1ab0,_0x40298f[_0x2f1ab0][_0x928f('0x47')],handleJob(_0x40298f[_0x2f1ab0]));logger[_0x928f('0x7')](_0x928f('0x52'),_0x40298f[_0x2f1ab0]['name'],_0x40298f[_0x2f1ab0]['cron']);}else{manager['stop'](_0x2f1ab0);manager[_0x928f('0x53')](_0x2f1ab0);logger['info'](_0x928f('0x4f'),_0x40298f[_0x2f1ab0][_0x928f('0x12')],_0x40298f[_0x2f1ab0][_0x928f('0x47')]);}}}})[_0x928f('0x2e')](function(_0x2ec2c5){logger[_0x928f('0x2b')](JSON['stringify'](_0x2ec2c5));});}exports[_0x928f('0x54')]=function(_0x15688e){return getJobs(_0x15688e);};exports[_0x928f('0x4b')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xb86e=['isBetween','startAt','endAt','start','add\x20cron','stop\x20cron','update','update\x20cron','run','util','lodash','cron-job-manager','jayson/promise','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','email','MailAccount','service','Smtp','host','secure','authentication','auth','user','pass','format','\x22%s\x22\x20<%s>','name','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','../../files/reports','%s.%s','basename','savename','extname','zip','join','existsSync','message','attachments','Sent','text','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','stringify','email\x20sent','catch','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','YYYY-MM-DD\x20HH:mm:ss','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','keys','jobs','map','keyBy','toString','difference','exists','stop','deleteJob','delete\x20cron','toRun','length','index','my\x20id','resolve','cron','active'];(function(_0x2d0631,_0x2e04b6){var _0x2e9dce=function(_0x146727){while(--_0x146727){_0x2d0631['push'](_0x2d0631['shift']());}};_0x2e9dce(++_0x2e04b6);}(_0xb86e,0x10e));var _0xeb86=function(_0x40df5f,_0x8fd59f){_0x40df5f=_0x40df5f-0x0;var _0x1573f1=_0xb86e[_0x40df5f];return _0x1573f1;};'use strict';var fs=require('fs');var util=require(_0xeb86('0x0'));var path=require('path');var _=require(_0xeb86('0x1'));var moment=require('moment');var CronJobManager=require(_0xeb86('0x2'));var jayson=require(_0xeb86('0x3'));var BPromise=require(_0xeb86('0x4'));var logger=require(_0xeb86('0x5'))('schedule');var db=require(_0xeb86('0x6'))['db'];var analyticCustomReportController=require(_0xeb86('0x7'));var analyticDefaultReportController=require(_0xeb86('0x8'));var client=jayson[_0xeb86('0x9')][_0xeb86('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x20dc9c,_0x56ae20){return function(){logger[_0xeb86('0xb')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x20dc9c[_0xeb86('0xc')]);var _0x3c7252=!![];var _0x57ddb7={'tls':{'rejectUnauthorized':![]}};if(_0x20dc9c[_0xeb86('0xd')]['Smtp'][_0xeb86('0xe')]){_0x57ddb7['service']=_0x20dc9c[_0xeb86('0xd')][_0xeb86('0xf')][_0xeb86('0xe')];}else{_0x57ddb7[_0xeb86('0x10')]=_0x20dc9c['MailAccount']['Smtp'][_0xeb86('0x10')];_0x57ddb7['port']=_0x20dc9c[_0xeb86('0xd')][_0xeb86('0xf')]['port'];_0x57ddb7[_0xeb86('0x11')]=_0x20dc9c['MailAccount'][_0xeb86('0xf')]['secure'];}if(_0x20dc9c['MailAccount'][_0xeb86('0xf')][_0xeb86('0x12')]){_0x57ddb7[_0xeb86('0x13')]={'user':_0x20dc9c[_0xeb86('0xd')][_0xeb86('0xf')][_0xeb86('0x14')],'pass':_0x20dc9c[_0xeb86('0xd')][_0xeb86('0xf')][_0xeb86('0x15')]};}var _0x82085f={'account':_0x57ddb7,'message':{'from':util[_0xeb86('0x16')](_0xeb86('0x17'),_0x20dc9c[_0xeb86('0xd')][_0xeb86('0x18')],_0x20dc9c['MailAccount']['email']||_0x20dc9c['MailAccount']['Smtp'][_0xeb86('0x14')]),'to':_0x20dc9c[_0xeb86('0xc')],'cc':_0x20dc9c['cc'],'bcc':_0x20dc9c[_0xeb86('0x19')],'subject':util[_0xeb86('0x16')](_0xeb86('0x1a'),_0x56ae20[_0xeb86('0x18')],_0x20dc9c[_0xeb86('0x1b')],_0x20dc9c['subtractUnit'])}};var _0x5136b8=path['join'](__dirname,_0xeb86('0x1c'));var _0x16c4b=_0x56ae20['savename'];var _0xf51d88=util[_0xeb86('0x16')](_0xeb86('0x1d'),path[_0xeb86('0x1e')](_0x56ae20[_0xeb86('0x1f')],path[_0xeb86('0x20')](_0x56ae20[_0xeb86('0x1f')])),_0xeb86('0x21'));var _0x287e7d=path['join'](_0x5136b8,_0x16c4b);var _0x10d07f=path[_0xeb86('0x22')](_0x5136b8,_0xf51d88);if(fs[_0xeb86('0x23')](_0x287e7d)){_0x56ae20['status']='Sent';_0x82085f[_0xeb86('0x24')][_0xeb86('0x25')]=[{'filename':_0x16c4b,'path':_0x287e7d}];_0x82085f['message']['text']=util[_0xeb86('0x16')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON['stringify'](_0x56ae20,null,0x2));}else if(fs['existsSync'](_0x10d07f)){_0x56ae20['status']=_0xeb86('0x26');_0x82085f[_0xeb86('0x24')][_0xeb86('0x25')]=[{'filename':_0xf51d88,'path':_0x10d07f}];}else{_0x82085f[_0xeb86('0x24')][_0xeb86('0x27')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x20dc9c['sendIfEmpty']){_0x3c7252=![];logger[_0xeb86('0xb')](_0xeb86('0x28'));}}if(_0x3c7252){return client[_0xeb86('0x29')](_0xeb86('0x2a'),_0x82085f)[_0xeb86('0x2b')](function(_0x204a32){if(_0x204a32[_0xeb86('0x2c')]){return logger['error'](_0xeb86('0x2d'),JSON[_0xeb86('0x2e')](_0x204a32));}return logger[_0xeb86('0xb')](_0xeb86('0x2f'));})[_0xeb86('0x30')](function(_0x1f8d23){return logger[_0xeb86('0x2c')](_0xeb86('0x2d'),JSON[_0xeb86('0x2e')](_0x1f8d23));});}};}function handleError(){return function(_0x560a10){return logger[_0xeb86('0x2c')](JSON[_0xeb86('0x2e')](_0x560a10));};}function handleResult(_0x2d64fb){return function(_0x474a23){logger[_0xeb86('0xb')]('data',JSON[_0xeb86('0x2e')](_0x474a23));if(_0x2d64fb[_0xeb86('0xd')]&&_0x2d64fb[_0xeb86('0xd')][_0xeb86('0xf')]&&!_[_0xeb86('0x31')](_0x2d64fb[_0xeb86('0xc')])){setTimeout(handleSendEmail(_0x2d64fb,_0x474a23),0x3c*0x3e8);}};}function handleJob(_0xb03d26){return function(){try{if(_[_0xeb86('0x31')](_0xb03d26['subtractNumber'])){return logger[_0xeb86('0xb')](_0xeb86('0x32'));}if(_[_0xeb86('0x31')](_0xb03d26['subtractUnit'])){return logger['info']('subtractUnit\x20null\x20or\x20undefined');}var _0x200819={'startDate':moment()['subtract'](_0xb03d26[_0xeb86('0x1b')],_0xb03d26[_0xeb86('0x33')])[_0xeb86('0x16')](_0xeb86('0x34')),'endDate':moment()[_0xeb86('0x16')](_0xeb86('0x34')),'type':'scheduled','output':_0xb03d26['output'],'name':_0xb03d26['name']};if(!_[_0xeb86('0x31')](_0xb03d26[_0xeb86('0x35')])){logger[_0xeb86('0xb')](_0xeb86('0x36'),_0xb03d26['DefaultReportId']);return analyticDefaultReportController[_0xeb86('0x37')]({'id':_0xb03d26[_0xeb86('0x35')]},_0x200819)[_0xeb86('0x2b')](handleResult(_0xb03d26))[_0xeb86('0x30')](handleError());}if(!_['isNil'](_0xb03d26[_0xeb86('0x38')])){logger[_0xeb86('0xb')](_0xeb86('0x39'),_0xb03d26['CustomReportId']);return analyticCustomReportController[_0xeb86('0x37')]({'id':_0xb03d26['CustomReportId']},_0x200819)[_0xeb86('0x2b')](handleResult(_0xb03d26))[_0xeb86('0x30')](handleError());}}catch(_0x158fa8){logger[_0xeb86('0x2c')](JSON[_0xeb86('0x2e')](_0x158fa8));}return logger[_0xeb86('0xb')](_0xeb86('0x3a'));};}function getJobs(_0x290e47){var _0x33716e={};if(_0x290e47){_0x33716e['id']=_0x290e47;}return db[_0xeb86('0x3b')][_0xeb86('0x3c')]({'where':_0x33716e,'include':[{'model':db[_0xeb86('0xd')],'attributes':['id','name','email'],'include':[{'model':db['MailServerOut'],'as':_0xeb86('0xf')}]}]})[_0xeb86('0x2b')](function(_0x23a376){var _0x8a0e7a=_[_0xeb86('0x3d')](manager[_0xeb86('0x3e')]);var _0x471313=_[_0xeb86('0x3f')](_0x23a376,function(_0x462eec){return _0x462eec['id']['toString']();});var _0x44b248=_[_0xeb86('0x40')](_0x23a376,function(_0x270a00){return _0x270a00['id'][_0xeb86('0x41')]();});var _0x1a76d7=_0x290e47?_0x471313:_[_0xeb86('0x42')](_0x471313,_0x8a0e7a);var _0x278742=_['intersection'](_0x471313,_0x8a0e7a);var _0x4e7b9c=_['difference'](_0x8a0e7a,_0x471313);var _0x49c334;var _0x714f93;for(_0x49c334=0x0;_0x49c334<_0x4e7b9c['length']&&!_0x290e47;_0x49c334+=0x1){_0x714f93=_0x4e7b9c[_0x49c334][_0xeb86('0x41')]();if(manager[_0xeb86('0x43')](_0x714f93)){manager[_0xeb86('0x44')](_0x714f93);manager[_0xeb86('0x45')](_0x714f93);logger['info'](_0xeb86('0x46'),_0x714f93);}}logger[_0xeb86('0xb')](_0xeb86('0x47'),JSON[_0xeb86('0x2e')](_0x1a76d7));for(_0x49c334=0x0;_0x49c334<_0x1a76d7[_0xeb86('0x48')];_0x49c334+=0x1){_0x714f93=_0x1a76d7[_0x49c334][_0xeb86('0x41')]();logger[_0xeb86('0xb')](_0xeb86('0x49'),_0x714f93);if(_0x290e47){logger[_0xeb86('0xb')](_0xeb86('0x4a'),_0x290e47);logger[_0xeb86('0xb')](JSON[_0xeb86('0x2e')](_0x44b248[_0x714f93]));BPromise[_0xeb86('0x4b')]()[_0xeb86('0x2b')](handleJob(_0x44b248[_0x714f93]));logger['info']('run\x20job',_0x44b248[_0x714f93][_0xeb86('0x18')],_0x44b248[_0x714f93][_0xeb86('0x4c')]);}else if(_0x44b248[_0x714f93][_0xeb86('0x4c')]&&_0x44b248[_0x714f93][_0xeb86('0x4d')]&&moment()[_0xeb86('0x4e')](_0x44b248[_0x714f93][_0xeb86('0x4f')],_0x44b248[_0x714f93][_0xeb86('0x50')])){manager['add'](_0x714f93,_0x44b248[_0x714f93]['cron'],handleJob(_0x44b248[_0x714f93]));manager[_0xeb86('0x51')](_0x714f93);logger[_0xeb86('0xb')](_0xeb86('0x52'),_0x44b248[_0x714f93]['name'],_0x44b248[_0x714f93][_0xeb86('0x4c')]);}else if(manager[_0xeb86('0x43')](_0x714f93)){manager['stop'](_0x714f93);manager[_0xeb86('0x45')](_0x714f93);logger['info'](_0xeb86('0x53'),_0x44b248[_0x714f93]['name'],_0x44b248[_0x714f93][_0xeb86('0x4c')]);}}for(_0x49c334=0x0,_0x714f93;_0x49c334<_0x278742[_0xeb86('0x48')]&&!_0x290e47;_0x49c334+=0x1){_0x714f93=_0x278742[_0x49c334][_0xeb86('0x41')]();if(manager[_0xeb86('0x43')](_0x714f93)){if(_0x44b248[_0x714f93]['cron']&&_0x44b248[_0x714f93][_0xeb86('0x4d')]&&moment()[_0xeb86('0x4e')](_0x44b248[_0x714f93]['startAt'],_0x44b248[_0x714f93]['endAt'])){manager[_0xeb86('0x54')](_0x714f93,_0x44b248[_0x714f93][_0xeb86('0x4c')],handleJob(_0x44b248[_0x714f93]));logger[_0xeb86('0xb')](_0xeb86('0x55'),_0x44b248[_0x714f93][_0xeb86('0x18')],_0x44b248[_0x714f93]['cron']);}else{manager['stop'](_0x714f93);manager[_0xeb86('0x45')](_0x714f93);logger[_0xeb86('0xb')]('stop\x20cron',_0x44b248[_0x714f93][_0xeb86('0x18')],_0x44b248[_0x714f93]['cron']);}}}})[_0xeb86('0x30')](function(_0xef9409){logger[_0xeb86('0x2c')](JSON[_0xeb86('0x2e')](_0xef9409));});}exports[_0xeb86('0x56')]=function(_0x3159c7){return getJobs(_0x3159c7);};exports[_0xeb86('0x51')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 366d944..6d0a4e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab26=['lodash','aws-sdk','request-promise','bluebird','../../mysqldb','TranscribeService','Comprehend','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data2','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','transcript','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','findOne','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Negative','Mixed','FAILED','FailureReason','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','tempSentiment','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Neutral','name','error','VoiceRecording','IN_PROGRESS','length','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','transcribeRegion','forEach','push','all','catch','SequelizeValidationError','inspect'];(function(_0x286931,_0x50a98a){var _0x5a7d1d=function(_0x2629a0){while(--_0x2629a0){_0x286931['push'](_0x286931['shift']());}};_0x5a7d1d(++_0x50a98a);}(_0xab26,0xd2));var _0x6ab2=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xab26[_0x57b54c];return _0x59cc19;};var _=require(_0x6ab2('0x0'));var AWS=require(_0x6ab2('0x1'));var rp=require(_0x6ab2('0x2'));var util=require('util');var BPromise=require(_0x6ab2('0x3'));var db=require(_0x6ab2('0x4'))['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x4c8cf,_0x51bdcd,_0x332458,_0xb15094){return new Promise(function(_0x31c9f1,_0x56dc80){var _0x41643a=new AWS[(_0x6ab2('0x5'))]({'accessKeyId':_0x51bdcd,'secretAccessKey':_0x4c8cf,'region':_0x332458});_0x41643a['getTranscriptionJob']({'TranscriptionJobName':_0xb15094},function(_0x140cc1,_0x3157f1){if(_0x140cc1){return _0x56dc80(_0x140cc1);}else{return _0x31c9f1(_0x3157f1);}});});}function sentiment(_0x442ae2,_0xf9b141,_0x3bb68b,_0x3964fd,_0x217b42){return new Promise(function(_0x448216,_0x459538){var _0x2e765a=new AWS[(_0x6ab2('0x6'))]({'accessKeyId':_0xf9b141,'secretAccessKey':_0x442ae2,'region':_0x3bb68b});_0x2e765a['detectSentiment']({'Text':_0x3964fd,'LanguageCode':_0x217b42[_0x6ab2('0x7')](0x0,0x2)},function(_0x2db481,_0x3c4612){if(_0x2db481){return _0x459538(_0x2db481);}else{return _0x448216(_0x3c4612);}});});}function checkTranscribeJob(_0x5b7e6d,_0x5b6f7c,_0x10c3b1){var _0x2bb464;return new BPromise(function(_0x431d63,_0x8d1dc8){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0xa'),_0x5b7e6d['id'],_0x5b7e6d[_0x6ab2('0xb')]));return getTranscriptionJob(_0x10c3b1['data1'],_0x10c3b1[_0x6ab2('0xc')],_0x5b6f7c['transcribeRegion'],_0x5b7e6d[_0x6ab2('0xb')])[_0x6ab2('0xd')](function(_0x5ced24){logger['info'](util['format'](_0x6ab2('0xe'),_0x5b7e6d['id'],_0x5b7e6d[_0x6ab2('0xb')],_0x5ced24[_0x6ab2('0xf')][_0x6ab2('0x10')]));if(!_0x5b7e6d[_0x6ab2('0x11')]){switch(_0x5ced24[_0x6ab2('0xf')]['TranscriptionJobStatus']){case _0x6ab2('0x12'):var _0x2aac55={'transcribeStatus':_0x5ced24['TranscriptionJob'][_0x6ab2('0x10')],'fileUri':_0x5ced24['TranscriptionJob']['Transcript'][_0x6ab2('0x13')]};logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x14'),_0x5b7e6d['id']));return rp({'uri':_0x5ced24[_0x6ab2('0xf')]['Transcript'][_0x6ab2('0x13')],'json':!![]})[_0x6ab2('0xd')](function(_0x3b7a1a){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x15'),_0x5b7e6d['id']));if(_0x3b7a1a&&_0x3b7a1a[_0x6ab2('0x16')]&&_0x3b7a1a[_0x6ab2('0x16')][_0x6ab2('0x17')]&&_0x3b7a1a[_0x6ab2('0x16')]['transcripts']['length']){_0x2aac55['fileText']='';for(var _0x11e287=0x0;_0x11e287<_0x3b7a1a[_0x6ab2('0x16')][_0x6ab2('0x17')]['length'];_0x11e287++){_0x2aac55[_0x6ab2('0x11')]+=_0x3b7a1a[_0x6ab2('0x16')][_0x6ab2('0x17')][_0x11e287][_0x6ab2('0x18')]+'';}}return _0x5b7e6d['update'](_0x2aac55);})['then'](function(){logger['info'](util[_0x6ab2('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5b7e6d['id']));if(!_0x5b7e6d['tempSentiment']){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x1b'));}if(!_0x5b6f7c[_0x6ab2('0x1c')]||!_0x5b6f7c[_0x6ab2('0x1d')]||!_0x5b6f7c[_0x6ab2('0x1e')]||!_0x5b6f7c[_0x6ab2('0x1f')]||!_0x5b6f7c[_0x6ab2('0x20')]){throw new db[(_0x6ab2('0x19'))]['ValidationError'](_0x6ab2('0x21'));}if(!_0x2aac55[_0x6ab2('0x11')]){throw new Error('Transcript\x20not\x20available');}if(_0x5b6f7c[_0x6ab2('0x1d')]===_0x10c3b1['id']){return _0x10c3b1;}else{return db['CloudProvider'][_0x6ab2('0x22')]({'where':{'id':_settings[_0x6ab2('0x1d')]}});}})[_0x6ab2('0xd')](function(_0x151367){if(!_0x151367){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x151367[_0x6ab2('0x23')]||!_0x151367[_0x6ab2('0xc')]){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x24'));}_0x2bb464=_0x151367;logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x5b7e6d['id']));return sentiment(_0x2bb464[_0x6ab2('0x23')],_0x2bb464[_0x6ab2('0xc')],_0x5b6f7c['sentimentRegion'],_0x2aac55['fileText'],_0x5b6f7c[_0x6ab2('0x1f')]);})[_0x6ab2('0xd')](function(_0x309165){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x25'),_0x5b7e6d['id']));return _0x5b7e6d[_0x6ab2('0x26')]({'sentiment':_0x309165[_0x6ab2('0x27')],'sPositive':_0x309165['SentimentScore']['Positive'],'sNegative':_0x309165[_0x6ab2('0x28')][_0x6ab2('0x29')],'sMixed':_0x309165[_0x6ab2('0x28')][_0x6ab2('0x2a')],'sNeutral':_0x309165[_0x6ab2('0x28')]['Neutral']});})[_0x6ab2('0xd')](function(){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5b7e6d['id']));_0x431d63();});case _0x6ab2('0x2b'):return _0x5b7e6d[_0x6ab2('0x26')]({'transcribeStatus':'FAILED','failureReason':_0x5ced24[_0x6ab2('0xf')][_0x6ab2('0x2c')]})[_0x6ab2('0xd')](function(){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x2d'),_0x5b7e6d['id']));_0x431d63();});default:logger[_0x6ab2('0x8')](util['format'](_0x6ab2('0x2e'),_0x5b7e6d['id']));break;}}else{return BPromise['resolve']()[_0x6ab2('0xd')](function(){if(!_0x5b7e6d[_0x6ab2('0x2f')]){throw new db[(_0x6ab2('0x19'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x5b6f7c[_0x6ab2('0x1c')]||!_0x5b6f7c['sentimentAccountId']||!_0x5b6f7c['sentimentRegion']||!_0x5b6f7c[_0x6ab2('0x1f')]||!_0x5b6f7c[_0x6ab2('0x20')]){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x21'));}if(!_0x5b7e6d['fileText']){throw new Error(_0x6ab2('0x30'));}if(_0x5b6f7c['sentimentAccountId']===_0x10c3b1['id']){return _0x10c3b1;}else{return db[_0x6ab2('0x31')][_0x6ab2('0x22')]({'where':{'id':_settings[_0x6ab2('0x1d')]}});}})[_0x6ab2('0xd')](function(_0x507fdc){if(!_0x507fdc){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x32'));}if(!_0x507fdc[_0x6ab2('0x23')]||!_0x507fdc[_0x6ab2('0xc')]){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x24'));}_0x2bb464=_0x507fdc;logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x33'),_0x5b7e6d['id']));return sentiment(_0x2bb464[_0x6ab2('0x23')],_0x2bb464['data2'],_0x5b6f7c[_0x6ab2('0x1e')],_0x5b7e6d[_0x6ab2('0x11')],_0x5b6f7c[_0x6ab2('0x1f')]);})[_0x6ab2('0xd')](function(_0x1b38ae){logger[_0x6ab2('0x8')](util['format'](_0x6ab2('0x25'),_0x5b7e6d['id']));return _0x5b7e6d[_0x6ab2('0x26')]({'sentiment':_0x1b38ae[_0x6ab2('0x27')],'sPositive':_0x1b38ae[_0x6ab2('0x28')]['Positive'],'sNegative':_0x1b38ae['SentimentScore'][_0x6ab2('0x29')],'sMixed':_0x1b38ae[_0x6ab2('0x28')][_0x6ab2('0x2a')],'sNeutral':_0x1b38ae[_0x6ab2('0x28')][_0x6ab2('0x34')],'transcribeStatus':'COMPLETED'});})[_0x6ab2('0xd')](function(){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x2d'),_0x5b7e6d['id']));_0x431d63();});}})['catch'](function(_0x538532){if(_0x538532){if(!_0x538532[_0x6ab2('0x35')]||_0x538532[_0x6ab2('0x35')]!=='SequelizeValidationError'){logger[_0x6ab2('0x36')](util['format']('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x5b7e6d['id']),util['inspect'](_0x538532,{'showHidden':![],'depth':null}));}}_0x431d63();});});}function checkTranscribe(){var _0x1a7e42;var _0x2bee34;var _0x4fffb4;return db[_0x6ab2('0x37')]['findAll']({'where':{'transcribeStatus':_0x6ab2('0x38')}})[_0x6ab2('0xd')](function(_0xe385cf){if(!_0xe385cf||!_0xe385cf[_0x6ab2('0x39')]){throw new db['Sequelize'][(_0x6ab2('0x1a'))](_0x6ab2('0x3a'));}_0x1a7e42=_0xe385cf;return db[_0x6ab2('0x3b')][_0x6ab2('0x22')]({'where':{'id':0x1}});})[_0x6ab2('0xd')](function(_0x301270){if(!_0x301270){throw new db[(_0x6ab2('0x19'))]['ValidationError'](_0x6ab2('0x3c'));}_0x2bee34=_0x301270;if(!_0x2bee34[_0x6ab2('0x3d')]||!_0x2bee34[_0x6ab2('0x3e')]||!_0x2bee34[_0x6ab2('0x3f')]||!_0x2bee34[_0x6ab2('0x1f')]||!_0x2bee34[_0x6ab2('0x20')]){throw new db['Sequelize'][(_0x6ab2('0x1a'))]('Transcribe\x20not\x20configured');}return db[_0x6ab2('0x31')][_0x6ab2('0x22')]({'where':{'id':_0x2bee34[_0x6ab2('0x3e')]}});})[_0x6ab2('0xd')](function(_0x145428){if(!_0x145428){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x32'));}if(!_0x145428[_0x6ab2('0x23')]||!_0x145428['data2']){throw new db[(_0x6ab2('0x19'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x4fffb4=_0x145428;var _0x3dde6b=[];_0x1a7e42[_0x6ab2('0x40')](function(_0x12eab2){_0x3dde6b[_0x6ab2('0x41')](checkTranscribeJob(_0x12eab2,_0x2bee34,_0x4fffb4));});return BPromise[_0x6ab2('0x42')](_0x3dde6b);})[_0x6ab2('0x43')](function(_0x7f1000){if(_0x7f1000){if(!_0x7f1000[_0x6ab2('0x35')]||_0x7f1000[_0x6ab2('0x35')]!==_0x6ab2('0x44')){logger[_0x6ab2('0x36')](util[_0x6ab2('0x45')](_0x7f1000,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xf69b=['TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','length','transcripts','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','findOne','Sequelize','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','Positive','Mixed','catch','name','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','push','SequelizeValidationError','error','inspect','start','aws-sdk','util','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','data1','data2','transcribeRegion','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','transcribeName','TranscriptionJob'];(function(_0x582d0b,_0x28f609){var _0x2e93e1=function(_0xb6a81c){while(--_0xb6a81c){_0x582d0b['push'](_0x582d0b['shift']());}};_0x2e93e1(++_0x28f609);}(_0xf69b,0xc8));var _0xbf69=function(_0x1c0ed8,_0x4d668e){_0x1c0ed8=_0x1c0ed8-0x0;var _0x975234=_0xf69b[_0x1c0ed8];return _0x975234;};var _=require('lodash');var AWS=require(_0xbf69('0x0'));var rp=require('request-promise');var util=require(_0xbf69('0x1'));var BPromise=require('bluebird');var db=require(_0xbf69('0x2'))['db'];var logger=require(_0xbf69('0x3'))(_0xbf69('0x4'));function getTranscriptionJob(_0x5b8f25,_0x28fa1e,_0x5524ad,_0x3bff4c){return new Promise(function(_0x1480a1,_0x33d729){var _0x642645=new AWS[(_0xbf69('0x5'))]({'accessKeyId':_0x28fa1e,'secretAccessKey':_0x5b8f25,'region':_0x5524ad});_0x642645[_0xbf69('0x6')]({'TranscriptionJobName':_0x3bff4c},function(_0x1fec31,_0x3a4504){if(_0x1fec31){return _0x33d729(_0x1fec31);}else{return _0x1480a1(_0x3a4504);}});});}function sentiment(_0xd7c347,_0x64efd7,_0x516ebe,_0x2fbfa6,_0x6cad86){return new Promise(function(_0x34756e,_0x5a07b6){var _0x15765b=new AWS[(_0xbf69('0x7'))]({'accessKeyId':_0x64efd7,'secretAccessKey':_0xd7c347,'region':_0x516ebe});_0x15765b[_0xbf69('0x8')]({'Text':_0x2fbfa6,'LanguageCode':_0x6cad86[_0xbf69('0x9')](0x0,0x2)},function(_0x495af8,_0x121f0b){if(_0x495af8){return _0x5a07b6(_0x495af8);}else{return _0x34756e(_0x121f0b);}});});}function checkTranscribeJob(_0xa9d09f,_0x2edf93,_0x980232){var _0x294fdb;return new BPromise(function(_0x574bc0,_0x536f5c){logger[_0xbf69('0xa')](util['format']('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0xa9d09f['id'],_0xa9d09f['transcribeName']));return getTranscriptionJob(_0x980232[_0xbf69('0xb')],_0x980232[_0xbf69('0xc')],_0x2edf93[_0xbf69('0xd')],_0xa9d09f['transcribeName'])[_0xbf69('0xe')](function(_0x301fe7){logger[_0xbf69('0xa')](util[_0xbf69('0xf')](_0xbf69('0x10'),_0xa9d09f['id'],_0xa9d09f[_0xbf69('0x11')],_0x301fe7[_0xbf69('0x12')][_0xbf69('0x13')]));if(!_0xa9d09f[_0xbf69('0x14')]){switch(_0x301fe7[_0xbf69('0x12')][_0xbf69('0x13')]){case _0xbf69('0x15'):var _0x20b98e={'transcribeStatus':_0x301fe7[_0xbf69('0x12')][_0xbf69('0x13')],'fileUri':_0x301fe7[_0xbf69('0x12')]['Transcript'][_0xbf69('0x16')]};logger[_0xbf69('0xa')](util[_0xbf69('0xf')]('[RECORDING:%d]\x20Get\x20transcript',_0xa9d09f['id']));return rp({'uri':_0x301fe7[_0xbf69('0x12')][_0xbf69('0x17')][_0xbf69('0x16')],'json':!![]})['then'](function(_0x4cb86f){logger[_0xbf69('0xa')](util[_0xbf69('0xf')](_0xbf69('0x18'),_0xa9d09f['id']));if(_0x4cb86f&&_0x4cb86f[_0xbf69('0x19')]&&_0x4cb86f[_0xbf69('0x19')]['transcripts']&&_0x4cb86f[_0xbf69('0x19')]['transcripts'][_0xbf69('0x1a')]){_0x20b98e['fileText']='';for(var _0x2a5874=0x0;_0x2a5874<_0x4cb86f[_0xbf69('0x19')][_0xbf69('0x1b')][_0xbf69('0x1a')];_0x2a5874++){_0x20b98e[_0xbf69('0x14')]+=_0x4cb86f[_0xbf69('0x19')][_0xbf69('0x1b')][_0x2a5874][_0xbf69('0x1c')]+'';}}return _0xa9d09f[_0xbf69('0x1d')](_0x20b98e);})[_0xbf69('0xe')](function(){logger[_0xbf69('0xa')](util[_0xbf69('0xf')](_0xbf69('0x1e'),_0xa9d09f['id']));if(!_0xa9d09f[_0xbf69('0x1f')]){throw new db['Sequelize'][(_0xbf69('0x20'))](_0xbf69('0x21'));}if(!_0x2edf93[_0xbf69('0x22')]||!_0x2edf93[_0xbf69('0x23')]||!_0x2edf93[_0xbf69('0x24')]||!_0x2edf93[_0xbf69('0x25')]||!_0x2edf93[_0xbf69('0x26')]){throw new db['Sequelize'][(_0xbf69('0x20'))](_0xbf69('0x27'));}if(!_0x20b98e['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x2edf93['sentimentAccountId']===_0x980232['id']){return _0x980232;}else{return db['CloudProvider'][_0xbf69('0x28')]({'where':{'id':_settings[_0xbf69('0x23')]}});}})['then'](function(_0x27ebe1){if(!_0x27ebe1){throw new db[(_0xbf69('0x29'))][(_0xbf69('0x20'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x27ebe1['data1']||!_0x27ebe1[_0xbf69('0xc')]){throw new db[(_0xbf69('0x29'))][(_0xbf69('0x20'))](_0xbf69('0x2a'));}_0x294fdb=_0x27ebe1;logger['info'](util[_0xbf69('0xf')](_0xbf69('0x2b'),_0xa9d09f['id']));return sentiment(_0x294fdb[_0xbf69('0xb')],_0x294fdb[_0xbf69('0xc')],_0x2edf93[_0xbf69('0x24')],_0x20b98e[_0xbf69('0x14')],_0x2edf93[_0xbf69('0x25')]);})[_0xbf69('0xe')](function(_0x5acfd3){logger[_0xbf69('0xa')](util[_0xbf69('0xf')](_0xbf69('0x2c'),_0xa9d09f['id']));return _0xa9d09f['update']({'sentiment':_0x5acfd3[_0xbf69('0x2d')],'sPositive':_0x5acfd3['SentimentScore']['Positive'],'sNegative':_0x5acfd3[_0xbf69('0x2e')][_0xbf69('0x2f')],'sMixed':_0x5acfd3['SentimentScore']['Mixed'],'sNeutral':_0x5acfd3[_0xbf69('0x2e')][_0xbf69('0x30')]});})[_0xbf69('0xe')](function(){logger['info'](util[_0xbf69('0xf')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xa9d09f['id']));_0x574bc0();});case _0xbf69('0x31'):return _0xa9d09f['update']({'transcribeStatus':_0xbf69('0x31'),'failureReason':_0x301fe7['TranscriptionJob']['FailureReason']})[_0xbf69('0xe')](function(){logger[_0xbf69('0xa')](util[_0xbf69('0xf')](_0xbf69('0x1e'),_0xa9d09f['id']));_0x574bc0();});default:logger[_0xbf69('0xa')](util['format'](_0xbf69('0x32'),_0xa9d09f['id']));break;}}else{return BPromise[_0xbf69('0x33')]()[_0xbf69('0xe')](function(){if(!_0xa9d09f[_0xbf69('0x1f')]){throw new db[(_0xbf69('0x29'))][(_0xbf69('0x20'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x2edf93[_0xbf69('0x22')]||!_0x2edf93[_0xbf69('0x23')]||!_0x2edf93['sentimentRegion']||!_0x2edf93[_0xbf69('0x25')]||!_0x2edf93[_0xbf69('0x26')]){throw new db['Sequelize'][(_0xbf69('0x20'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0xa9d09f[_0xbf69('0x14')]){throw new Error(_0xbf69('0x34'));}if(_0x2edf93[_0xbf69('0x23')]===_0x980232['id']){return _0x980232;}else{return db[_0xbf69('0x35')]['findOne']({'where':{'id':_settings[_0xbf69('0x23')]}});}})[_0xbf69('0xe')](function(_0x4531d7){if(!_0x4531d7){throw new db[(_0xbf69('0x29'))][(_0xbf69('0x20'))](_0xbf69('0x36'));}if(!_0x4531d7[_0xbf69('0xb')]||!_0x4531d7['data2']){throw new db['Sequelize']['ValidationError'](_0xbf69('0x2a'));}_0x294fdb=_0x4531d7;logger['info'](util[_0xbf69('0xf')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0xa9d09f['id']));return sentiment(_0x294fdb[_0xbf69('0xb')],_0x294fdb['data2'],_0x2edf93['sentimentRegion'],_0xa9d09f[_0xbf69('0x14')],_0x2edf93[_0xbf69('0x25')]);})[_0xbf69('0xe')](function(_0x3b2467){logger[_0xbf69('0xa')](util[_0xbf69('0xf')](_0xbf69('0x2c'),_0xa9d09f['id']));return _0xa9d09f[_0xbf69('0x1d')]({'sentiment':_0x3b2467[_0xbf69('0x2d')],'sPositive':_0x3b2467[_0xbf69('0x2e')][_0xbf69('0x37')],'sNegative':_0x3b2467[_0xbf69('0x2e')][_0xbf69('0x2f')],'sMixed':_0x3b2467['SentimentScore'][_0xbf69('0x38')],'sNeutral':_0x3b2467[_0xbf69('0x2e')][_0xbf69('0x30')],'transcribeStatus':_0xbf69('0x15')});})['then'](function(){logger['info'](util['format'](_0xbf69('0x1e'),_0xa9d09f['id']));_0x574bc0();});}})[_0xbf69('0x39')](function(_0x1784f3){if(_0x1784f3){if(!_0x1784f3[_0xbf69('0x3a')]||_0x1784f3[_0xbf69('0x3a')]!=='SequelizeValidationError'){logger['error'](util['format'](_0xbf69('0x3b'),_0xa9d09f['id']),util['inspect'](_0x1784f3,{'showHidden':![],'depth':null}));}}_0x574bc0();});});}function checkTranscribe(){var _0x510635;var _0x103c7a;var _0x55dc90;return db[_0xbf69('0x3c')][_0xbf69('0x3d')]({'where':{'transcribeStatus':_0xbf69('0x3e')}})[_0xbf69('0xe')](function(_0x55502e){if(!_0x55502e||!_0x55502e[_0xbf69('0x1a')]){throw new db[(_0xbf69('0x29'))]['ValidationError'](_0xbf69('0x3f'));}_0x510635=_0x55502e;return db[_0xbf69('0x40')][_0xbf69('0x28')]({'where':{'id':0x1}});})['then'](function(_0x275b2c){if(!_0x275b2c){throw new db[(_0xbf69('0x29'))][(_0xbf69('0x20'))](_0xbf69('0x41'));}_0x103c7a=_0x275b2c;if(!_0x103c7a[_0xbf69('0x4')]||!_0x103c7a[_0xbf69('0x42')]||!_0x103c7a[_0xbf69('0xd')]||!_0x103c7a['language']||!_0x103c7a[_0xbf69('0x26')]){throw new db['Sequelize']['ValidationError'](_0xbf69('0x43'));}return db[_0xbf69('0x35')][_0xbf69('0x28')]({'where':{'id':_0x103c7a[_0xbf69('0x42')]}});})['then'](function(_0x4ee565){if(!_0x4ee565){throw new db[(_0xbf69('0x29'))][(_0xbf69('0x20'))](_0xbf69('0x36'));}if(!_0x4ee565[_0xbf69('0xb')]||!_0x4ee565['data2']){throw new db[(_0xbf69('0x29'))][(_0xbf69('0x20'))](_0xbf69('0x2a'));}_0x55dc90=_0x4ee565;var _0x3faffc=[];_0x510635['forEach'](function(_0x2695de){_0x3faffc[_0xbf69('0x44')](checkTranscribeJob(_0x2695de,_0x103c7a,_0x55dc90));});return BPromise['all'](_0x3faffc);})[_0xbf69('0x39')](function(_0x225938){if(_0x225938){if(!_0x225938[_0xbf69('0x3a')]||_0x225938[_0xbf69('0x3a')]!==_0xbf69('0x45')){logger[_0xbf69('0x46')](util[_0xbf69('0x47')](_0x225938,{'showHidden':![],'depth':null}));}}});}exports[_0xbf69('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 4ff7b2f..df9f79c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5794=['timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','moment','ioredis','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','hours','then','length','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system'];(function(_0x2c47dc,_0x3d7409){var _0x1494d0=function(_0x279008){while(--_0x279008){_0x2c47dc['push'](_0x2c47dc['shift']());}};_0x1494d0(++_0x3d7409);}(_0x5794,0x16b));var _0x4579=function(_0x2bcd1f,_0x5bc426){_0x2bcd1f=_0x2bcd1f-0x0;var _0x2af292=_0x5794[_0x2bcd1f];return _0x2af292;};'use strict';var _=require('lodash');var moment=require(_0x4579('0x0'));var Redis=require(_0x4579('0x1'));var util=require('util');var config=require(_0x4579('0x2'));var db=require(_0x4579('0x3'))['db'];var logger=require(_0x4579('0x4'))(_0x4579('0x5'));config[_0x4579('0x6')]=_[_0x4579('0x7')](config[_0x4579('0x6')],{'host':_0x4579('0x8'),'port':0x18eb});var io=require(_0x4579('0x9'))(new Redis(config['redis']));function closeInteractions(){var _0x51c31f=[];return db[_0x4579('0xa')][_0x4579('0xb')]({'raw':!![],'attributes':['id',_0x4579('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x4579('0xd'))}}})[_0x4579('0xe')](function(_0x3c7337){if(_0x3c7337&&_0x3c7337[_0x4579('0xf')]){_0x51c31f=_['map'](_0x3c7337||[],'id');logger[_0x4579('0x10')](_0x4579('0x11'),_0x51c31f[_0x4579('0x12')]());return db[_0x4579('0xa')][_0x4579('0x13')]({'closeReason':_0x4579('0x14'),'disposition':_0x4579('0x15'),'closed':!![],'closedAt':moment()[_0x4579('0x16')](_0x4579('0x17'))},{'where':{'id':_0x51c31f}});}})['then'](function(){if(_0x51c31f&&_0x51c31f['length']){logger[_0x4579('0x10')](_0x4579('0x18'),_0x51c31f[_0x4579('0x12')]());for(var _0x4b894c=0x0;_0x4b894c<_0x51c31f[_0x4579('0xf')];_0x4b894c++){io[_0x4579('0x19')](_0x4579('0x1a'),{'id':_0x51c31f[_0x4b894c],'closed':!![]});}}})[_0x4579('0x1b')](function(_0x1c728e){logger[_0x4579('0x1c')](_0x4579('0x1d'),_0x1c728e?util[_0x4579('0x1e')](_0x1c728e,{'showHidden':![],'depth':null}):'');});}exports[_0x4579('0x1f')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x2198=['info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','system','timeout','YYYY-MM-DD\x20HH:mm:ss','then','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','whatsappInteraction:update','catch','error','moment','util','../../config/environment','../../mysqldb','../logger','redis','socket.io-emitter','findAll','lastMsgAt','subtract','hours','length'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x2198,0x14d));var _0x8219=function(_0x1cd9c9,_0x3876fd){_0x1cd9c9=_0x1cd9c9-0x0;var _0x50acf5=_0x2198[_0x1cd9c9];return _0x50acf5;};'use strict';var _=require('lodash');var moment=require(_0x8219('0x0'));var Redis=require('ioredis');var util=require(_0x8219('0x1'));var config=require(_0x8219('0x2'));var db=require(_0x8219('0x3'))['db'];var logger=require(_0x8219('0x4'))('schedule');config[_0x8219('0x5')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x8219('0x6'))(new Redis(config['redis']));function closeInteractions(){var _0x352ea4=[];return db['WhatsappInteraction'][_0x8219('0x7')]({'raw':!![],'attributes':['id',_0x8219('0x8')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x8219('0x9')](0x18,_0x8219('0xa'))}}})['then'](function(_0x4f8f9f){if(_0x4f8f9f&&_0x4f8f9f[_0x8219('0xb')]){_0x352ea4=_['map'](_0x4f8f9f||[],'id');logger[_0x8219('0xc')](_0x8219('0xd'),_0x352ea4[_0x8219('0xe')]());return db['WhatsappInteraction']['update']({'closeReason':_0x8219('0xf'),'disposition':_0x8219('0x10'),'closed':!![],'closedAt':moment()['format'](_0x8219('0x11'))},{'where':{'id':_0x352ea4}});}})[_0x8219('0x12')](function(){if(_0x352ea4&&_0x352ea4[_0x8219('0xb')]){logger[_0x8219('0xc')](_0x8219('0x13'),_0x352ea4[_0x8219('0xe')]());for(var _0x17f988=0x0;_0x17f988<_0x352ea4[_0x8219('0xb')];_0x17f988++){io['emit'](_0x8219('0x14'),{'id':_0x352ea4[_0x17f988],'closed':!![]});}}})[_0x8219('0x15')](function(_0x34c35f){logger[_0x8219('0x16')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x34c35f?util['inspect'](_0x34c35f,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index c67bc8a..87e242c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x360f=['hopper1','contacts2','hopper2','catch','../mysqldb','push','@xcally.com','now','Biondo','CmContact','destroy','then','log','finished\x20populating','contacts1','CmHopper','bulkCreate'];(function(_0x2f4d41,_0x525047){var _0x3b0bb2=function(_0x19960d){while(--_0x19960d){_0x2f4d41['push'](_0x2f4d41['shift']());}};_0x3b0bb2(++_0x525047);}(_0x360f,0x125));var _0xf360=function(_0x40af8c,_0x3773d5){_0x40af8c=_0x40af8c-0x0;var _0x17c1aa=_0x360f[_0x40af8c];return _0x17c1aa;};'use strict';var util=require('util');var db=require(_0xf360('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xf360('0x1')]({'id':i,'firstName':'Innocenzo'+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0xf360('0x2')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xf360('0x1')]({'id':i,'active':![],'scheduledat':Date[_0xf360('0x3')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xf360('0x3')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xf360('0x1')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xf360('0x4')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0xf360('0x2')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xf360('0x1')]({'id':i,'active':![],'scheduledat':Date[_0xf360('0x3')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}db[_0xf360('0x5')][_0xf360('0x6')]({'where':{}})[_0xf360('0x7')](function(){return db[_0xf360('0x5')]['bulkCreate'](contacts);})['then'](function(){console[_0xf360('0x8')](_0xf360('0x9'),_0xf360('0xa'));return db[_0xf360('0xb')]['destroy']({'where':{}});})['then'](function(){return db['CmHopper'][_0xf360('0xc')](hopper);})[_0xf360('0x7')](function(){console[_0xf360('0x8')]('finished\x20populating',_0xf360('0xd'));return db['CmContact']['bulkCreate'](contacts2);})[_0xf360('0x7')](function(){console['log'](_0xf360('0x9'),_0xf360('0xe'));return db['CmHopper'][_0xf360('0xc')](hopper2);})[_0xf360('0x7')](function(){console[_0xf360('0x8')]('finished\x20populating',_0xf360('0xf'));})[_0xf360('0x10')](function(_0x2e1d38){console[_0xf360('0x8')](_0x2e1d38);});
\ No newline at end of file
+var _0x037f=['finished\x20populating','CmHopper','hopper1','contacts2','catch','util','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','CmContact','destroy','then','bulkCreate','log'];(function(_0x22aa61,_0x45e107){var _0x51500a=function(_0x16a73b){while(--_0x16a73b){_0x22aa61['push'](_0x22aa61['shift']());}};_0x51500a(++_0x45e107);}(_0x037f,0x71));var _0xf037=function(_0x38987f,_0xc79720){_0x38987f=_0x38987f-0x0;var _0x4cb697=_0x037f[_0x38987f];return _0x4cb697;};'use strict';var util=require(_0xf037('0x0'));var db=require(_0xf037('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xf037('0x2')]({'id':i,'firstName':_0xf037('0x3')+i,'lastName':_0xf037('0x4')+i,'phone':0xf879fb460+i,'email':_0xf037('0x5')+i+_0xf037('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xf037('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xf037('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0xf037('0x7')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xf037('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0xf037('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xf037('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xf037('0x7')](),'updatedAt':Date['now']()});}db[_0xf037('0x8')][_0xf037('0x9')]({'where':{}})[_0xf037('0xa')](function(){return db[_0xf037('0x8')][_0xf037('0xb')](contacts);})[_0xf037('0xa')](function(){console[_0xf037('0xc')](_0xf037('0xd'),'contacts1');return db['CmHopper'][_0xf037('0x9')]({'where':{}});})[_0xf037('0xa')](function(){return db[_0xf037('0xe')][_0xf037('0xb')](hopper);})['then'](function(){console['log'](_0xf037('0xd'),_0xf037('0xf'));return db['CmContact'][_0xf037('0xb')](contacts2);})[_0xf037('0xa')](function(){console['log'](_0xf037('0xd'),_0xf037('0x10'));return db[_0xf037('0xe')][_0xf037('0xb')](hopper2);})[_0xf037('0xa')](function(){console[_0xf037('0xc')](_0xf037('0xd'),'hopper2');})[_0xf037('0x11')](function(_0x522dec){console['log'](_0x522dec);});
\ No newline at end of file
index f34c641..1d115d9 100644 (file)
@@ -362,6 +362,10 @@ var applicationsAlways = {
       app: 'Progress'
     },
     {
+      app: 'Set',
+      appdata: 'CDR(type)=internal'
+    },
+    {
       app: 'Queue',
       appdata: '${EXTEN:20},xX'
     }
index b5adbb0..7032d9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c8e=['ulaw','yes','/etc/pki/tls/certs/motion.crt','\x22%s\x22\x20<%s>','User','then','log','add\x20user','catch','util','push','%s%s','agent','format','%s%s@xcally.com','password','friend','udp','all'];(function(_0x4df99b,_0x537393){var _0x538d2f=function(_0x9c24ab){while(--_0x9c24ab){_0x4df99b['push'](_0x4df99b['shift']());}};_0x538d2f(++_0x537393);}(_0x4c8e,0x1ab));var _0xe4c8=function(_0x1fb1c1,_0x4ebe69){_0x1fb1c1=_0x1fb1c1-0x0;var _0x1622df=_0x4c8e[_0x1fb1c1];return _0x1622df;};'use strict';var util=require(_0xe4c8('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xe4c8('0x1')]({'name':util['format'](_0xe4c8('0x2'),_0xe4c8('0x3'),i),'fullname':util[_0xe4c8('0x4')](_0xe4c8('0x2'),_0xe4c8('0x3'),i),'email':util[_0xe4c8('0x4')](_0xe4c8('0x5'),_0xe4c8('0x3'),i),'role':_0xe4c8('0x3'),'password':_0xe4c8('0x6'),'internal':0xfa0+i,'type':_0xe4c8('0x7'),'transport':[_0xe4c8('0x8'),'ws','wss'],'disallow':[_0xe4c8('0x9')],'allow':[_0xe4c8('0xa')],'defaultuser':util['format']('%s%s',_0xe4c8('0x3'),i),'encryption':_0xe4c8('0xb'),'avpf':_0xe4c8('0xb'),'force_avp':'yes','icesupport':_0xe4c8('0xb'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':_0xe4c8('0xc'),'dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':'actpass','callerid':util[_0xe4c8('0x4')](_0xe4c8('0xd'),util[_0xe4c8('0x4')](_0xe4c8('0x2'),'agent',i),0xfa0+i)});}db[_0xe4c8('0xe')]['bulkCreate'](users)[_0xe4c8('0xf')](function(){console[_0xe4c8('0x10')](_0xe4c8('0x11'));})[_0xe4c8('0x12')](function(_0x5175fd){console['log'](_0x5175fd);});
\ No newline at end of file
+var _0x2665=['agent','%s%s@xcally.com','password','friend','udp','all','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','log','add\x20user','push','format','%s%s'];(function(_0x2d42b7,_0x391076){var _0x3ac15a=function(_0x38ec34){while(--_0x38ec34){_0x2d42b7['push'](_0x2d42b7['shift']());}};_0x3ac15a(++_0x391076);}(_0x2665,0x1d1));var _0x5266=function(_0x287ae0,_0x401ffb){_0x287ae0=_0x287ae0-0x0;var _0xbffbff=_0x2665[_0x287ae0];return _0xbffbff;};'use strict';var util=require('util');var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x5266('0x0')]({'name':util[_0x5266('0x1')](_0x5266('0x2'),_0x5266('0x3'),i),'fullname':util[_0x5266('0x1')](_0x5266('0x2'),'agent',i),'email':util[_0x5266('0x1')](_0x5266('0x4'),'agent',i),'role':_0x5266('0x3'),'password':_0x5266('0x5'),'internal':0xfa0+i,'type':_0x5266('0x6'),'transport':[_0x5266('0x7'),'ws','wss'],'disallow':[_0x5266('0x8')],'allow':[_0x5266('0x9')],'defaultuser':util[_0x5266('0x1')](_0x5266('0x2'),_0x5266('0x3'),i),'encryption':_0x5266('0xa'),'avpf':'yes','force_avp':'yes','icesupport':_0x5266('0xa'),'dtlsenable':_0x5266('0xa'),'dtlsverify':'no','dtlscertfile':_0x5266('0xb'),'dtlsprivatekey':_0x5266('0xc'),'dtlssetup':_0x5266('0xd'),'callerid':util[_0x5266('0x1')](_0x5266('0xe'),util['format'](_0x5266('0x2'),_0x5266('0x3'),i),0xfa0+i)});}db[_0x5266('0xf')]['bulkCreate'](users)['then'](function(){console[_0x5266('0x10')](_0x5266('0x11'));})['catch'](function(_0x13e425){console['log'](_0x13e425);});
\ No newline at end of file
index 4ed429d..be530cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa413=['trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','log','join','default','connection','setMaxListeners','address','request','SocketIO\x20','disconnect','DISCONNECTED','CONNECTED','lodash','bluebird','./environment','name','role','agent','telephone','type','ivr','then','autoAssociation','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','User','where','Campaign','format','Agents','length','handshake','find','userProfileId','query','ChatInteraction','MailInteraction','MailInteractions','FaxInteractions','SmsInteractions','OpenchannelInteractions','WhatsappInteractions','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','include','ChatQueue','push','FaxQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueue','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','openchannel','whatsapp','telephone:%s'];(function(_0x1dd937,_0xddcb8c){var _0x1bf73d=function(_0x301750){while(--_0x301750){_0x1dd937['push'](_0x1dd937['shift']());}};_0x1bf73d(++_0xddcb8c);}(_0xa413,0x1e5));var _0x3a41=function(_0x558365,_0x16025e){_0x558365=_0x558365-0x0;var _0x2a230b=_0xa413[_0x558365];return _0x2a230b;};'use strict';var _=require(_0x3a41('0x0'));var util=require('util');var BPromise=require(_0x3a41('0x1'));var db=require('../mysqldb')['db'];var config=require(_0x3a41('0x2'));var queryQueues={'attributes':['id',_0x3a41('0x3')],'include':[{'as':'Agents','model':db['User'],'attributes':['id',_0x3a41('0x3'),_0x3a41('0x4')],'raw':!![],'where':{'role':_0x3a41('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x3a41('0x3')],'where':{'role':_0x3a41('0x6')}};var queryTrunks={'raw':!![],'attributes':['id',_0x3a41('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x3a41('0x3')],'where':{'role':_0x3a41('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x3a41('0x3'),_0x3a41('0x7')],'where':{'type':_0x3a41('0x8')}};function getAssociatedResources(_0x5a3e2e,_0x162aaa,_0x570304){return db['UserProfileSection']['findOne']({'where':{'name':_0x5a3e2e,'userProfileId':_0x162aaa},'raw':!![]})[_0x3a41('0x9')](function(_0x57ef75){if(_0x57ef75){if(_0x57ef75[_0x3a41('0xa')]){switch(_0x5a3e2e){case'VoiceQueues':case _0x3a41('0xb'):case _0x3a41('0xc'):case'SmsQueues':case _0x3a41('0xd'):case _0x3a41('0xe'):case _0x3a41('0xf'):return db[_0x570304][_0x3a41('0x10')](queryQueues);case _0x3a41('0x11'):return db[_0x570304]['findAll'](queryTelephones);case _0x3a41('0x12'):return db[_0x570304][_0x3a41('0x10')](queryTrunks);case _0x3a41('0x13'):return db[_0x570304][_0x3a41('0x10')](queryCampaigns);}}else{return db[_0x3a41('0x14')][_0x3a41('0x10')]({'attributes':[_0x3a41('0x15')],'where':{'sectionId':_0x57ef75['id']},'raw':!![]})[_0x3a41('0x9')](function(_0x463d5b){if(_0x463d5b){var _0x37697c={'where':{'id':_[_0x3a41('0x16')](_0x463d5b,'resourceId')},'raw':!![]};switch(_0x570304){case _0x3a41('0x17'):_0x37697c[_0x3a41('0x18')]['role']='telephone';break;case _0x3a41('0x19'):_0x37697c[_0x3a41('0x18')][_0x3a41('0x7')]=_0x3a41('0x8');break;}return db[_0x570304][_0x3a41('0x10')](_0x37697c);}else{return[];}});}}else{return[];}})[_0x3a41('0x9')](function(_0x19d41d){return _0x19d41d;});}function joinOrLeaveQueues(_0x232b8d,_0x5d816d,_0x5c2652,_0x2fa25b){_0x232b8d[_0x5d816d](util[_0x3a41('0x1a')]('%s:queue:%s',_0x5c2652,_0x2fa25b['name']));if(_0x2fa25b['Agents']){for(var _0x8629b5=0x0;_0x8629b5<_0x2fa25b[_0x3a41('0x1b')][_0x3a41('0x1c')];_0x8629b5+=0x1){_0x232b8d[_0x5d816d](util[_0x3a41('0x1a')]('user:%s',_0x2fa25b['Agents'][_0x8629b5][_0x3a41('0x3')]));}}}function joinOrLeave(_0x1ea3fe,_0x4905de,_0x383788){var _0x115b82;if(_0x1ea3fe[_0x3a41('0x1d')]['query']['id']){db[_0x3a41('0x17')][_0x3a41('0x1e')]({'attributes':['id','name',_0x3a41('0x4'),_0x3a41('0x1f')],'where':{'id':_0x1ea3fe[_0x3a41('0x1d')][_0x3a41('0x20')]['id']},'include':[{'model':db[_0x3a41('0x21')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x3a41('0x22')],'as':_0x3a41('0x23'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x3a41('0x24'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x3a41('0x25'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x3a41('0x26'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x3a41('0x27'),'attributes':['id'],'raw':!![]}]})[_0x3a41('0x9')](function(_0x185b95){if(_0x185b95){_0x115b82=_0x185b95;_0x1ea3fe[_0x4905de](util[_0x3a41('0x1a')](_0x3a41('0x28'),_0x185b95[_0x3a41('0x3')]));var _0x9d7a22=[];switch(_0x185b95[_0x3a41('0x4')]){case _0x3a41('0x29'):_0x1ea3fe[_0x4905de](_0x3a41('0x2a'));_0x1ea3fe[_0x4905de](_0x3a41('0x2b'));if(queryQueues[_0x3a41('0x2c')](_0x3a41('0x2d'))){delete queryQueues[_0x3a41('0x2d')];}_0x9d7a22['push'](db['VoiceQueue']['findAll'](queryQueues));_0x9d7a22['push'](db[_0x3a41('0x2e')][_0x3a41('0x10')](queryQueues));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x30')][_0x3a41('0x10')](queryQueues));_0x9d7a22['push'](db['SmsQueue']['findAll'](queryQueues));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x31')]['findAll'](queryQueues));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x32')][_0x3a41('0x10')](queryQueues));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x33')][_0x3a41('0x10')](queryQueues));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x17')][_0x3a41('0x10')](queryTelephones));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x34')][_0x3a41('0x10')](queryTrunks));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x19')][_0x3a41('0x10')](queryCampaigns));_0x9d7a22['push'](db['User'][_0x3a41('0x10')](queryAgents));break;case _0x3a41('0x35'):_0x1ea3fe[_0x4905de]('voice:inbound');_0x1ea3fe[_0x4905de](_0x3a41('0x2b'));_0x9d7a22['push'](getAssociatedResources('VoiceQueues',_0x185b95['userProfileId'],_0x3a41('0x36')));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources('ChatQueues',_0x185b95[_0x3a41('0x1f')],_0x3a41('0x2e')));_0x9d7a22['push'](getAssociatedResources(_0x3a41('0xc'),_0x185b95[_0x3a41('0x1f')],'FaxQueue'));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources('SmsQueues',_0x185b95['userProfileId'],'SmsQueue'));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources(_0x3a41('0xd'),_0x185b95['userProfileId'],_0x3a41('0x31')));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources(_0x3a41('0xe'),_0x185b95[_0x3a41('0x1f')],_0x3a41('0x32')));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources(_0x3a41('0xf'),_0x185b95[_0x3a41('0x1f')],_0x3a41('0x33')));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources(_0x3a41('0x11'),_0x185b95[_0x3a41('0x1f')],_0x3a41('0x17')));_0x9d7a22['push'](getAssociatedResources('Trunks',_0x185b95['userProfileId'],_0x3a41('0x34')));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources('IvrCampaigns',_0x185b95[_0x3a41('0x1f')],'Campaign'));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x17')][_0x3a41('0x10')](queryAgents));break;case'agent':_0x1ea3fe[_0x4905de](_0x3a41('0x2a'));_0x1ea3fe[_0x4905de](_0x3a41('0x2b'));_0x9d7a22[_0x3a41('0x2f')](_0x185b95['getVoiceQueues']({'attributes':['id',_0x3a41('0x3')]}));_0x9d7a22[_0x3a41('0x2f')](_0x185b95[_0x3a41('0x37')]({'attributes':['id',_0x3a41('0x3')]}));_0x9d7a22[_0x3a41('0x2f')](_0x185b95[_0x3a41('0x38')]({'attributes':['id',_0x3a41('0x3')]}));_0x9d7a22['push'](_0x185b95[_0x3a41('0x39')]({'attributes':['id',_0x3a41('0x3')]}));_0x9d7a22[_0x3a41('0x2f')](_0x185b95[_0x3a41('0x3a')]({'attributes':['id','name']}));_0x9d7a22[_0x3a41('0x2f')](_0x185b95[_0x3a41('0x3b')]({'attributes':['id','name']}));_0x9d7a22[_0x3a41('0x2f')](_0x185b95[_0x3a41('0x3c')]({'attributes':['id',_0x3a41('0x3')]}));break;}return BPromise[_0x3a41('0x3d')](_0x9d7a22);}})[_0x3a41('0x9')](function(_0x5cbdb5){if(_0x5cbdb5&&_0x5cbdb5[_0x3a41('0x1c')]){for(var _0x4d30f6=0x0;_0x4d30f6<_0x5cbdb5['length'];_0x4d30f6+=0x1){for(var _0x2af115=0x0;_0x2af115<_0x5cbdb5[_0x4d30f6][_0x3a41('0x1c')];_0x2af115+=0x1){switch(_0x4d30f6){case 0x0:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,_0x3a41('0x3e'),_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x1:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,_0x3a41('0x3f'),_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x2:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,'fax',_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x3:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,'sms',_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x4:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,'mail',_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x5:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,_0x3a41('0x40'),_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x6:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,_0x3a41('0x41'),_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x7:if(_0x115b82[_0x3a41('0x4')]!==_0x3a41('0x5'))_0x1ea3fe[_0x4905de](util[_0x3a41('0x1a')](_0x3a41('0x42'),_0x5cbdb5[_0x4d30f6][_0x2af115][_0x3a41('0x3')]));break;case 0x8:if(_0x115b82[_0x3a41('0x4')]!==_0x3a41('0x5'))_0x1ea3fe[_0x4905de](util[_0x3a41('0x1a')](_0x3a41('0x43'),_0x5cbdb5[_0x4d30f6][_0x2af115][_0x3a41('0x3')]));break;case 0x9:if(_0x115b82[_0x3a41('0x4')]!==_0x3a41('0x5'))_0x1ea3fe[_0x4905de](util['format'](_0x3a41('0x44'),_0x5cbdb5[_0x4d30f6][_0x2af115]['type'],_0x5cbdb5[_0x4d30f6][_0x2af115][_0x3a41('0x3')]));break;case 0xa:_0x1ea3fe[_0x4905de](util['format'](_0x3a41('0x28'),_0x5cbdb5[_0x4d30f6][_0x2af115]['name']));break;}}}}})[_0x3a41('0x9')](function(){if(_0x4905de===_0x3a41('0x45')){var _0x37dd8f=_[_0x3a41('0x16')](_0x115b82['ChatInteractions'],'id');return _0x115b82[_0x3a41('0x46')](_0x37dd8f)['then'](function(){for(var _0x139614=0x0;_0x139614<_0x37dd8f[_0x3a41('0x1c')];_0x139614+=0x1){_0x383788[_0x3a41('0x47')](_0x3a41('0x48'),{'ChatInteractionId':Number(_0x37dd8f[_0x139614]),'UserId':Number(_0x115b82['id'])});}});}})[_0x3a41('0x9')](function(){if(_0x4905de===_0x3a41('0x45')){var _0x31863a=_[_0x3a41('0x16')](_0x115b82[_0x3a41('0x23')],'id');return _0x115b82['removeMailInteractions'](_0x31863a)[_0x3a41('0x9')](function(){for(var _0x59ae4f=0x0;_0x59ae4f<_0x31863a[_0x3a41('0x1c')];_0x59ae4f+=0x1){_0x383788[_0x3a41('0x47')](_0x3a41('0x49'),{'MailInteractionId':Number(_0x31863a[_0x59ae4f]),'UserId':Number(_0x115b82['id'])});}});}})['then'](function(){if(_0x4905de===_0x3a41('0x45')){var _0xfdc1a7=_[_0x3a41('0x16')](_0x115b82['FaxInteractions'],'id');return _0x115b82[_0x3a41('0x4a')](_0xfdc1a7)[_0x3a41('0x9')](function(){for(var _0x1d2520=0x0;_0x1d2520<_0xfdc1a7[_0x3a41('0x1c')];_0x1d2520+=0x1){_0x383788[_0x3a41('0x47')](_0x3a41('0x4b'),{'FaxInteractionId':Number(_0xfdc1a7[_0x1d2520]),'UserId':Number(_0x115b82['id'])});}});}})[_0x3a41('0x9')](function(){if(_0x4905de===_0x3a41('0x45')){var _0x3e8f9f=_[_0x3a41('0x16')](_0x115b82['SmsInteractions'],'id');return _0x115b82[_0x3a41('0x4c')](_0x3e8f9f)[_0x3a41('0x9')](function(){for(var _0x462294=0x0;_0x462294<_0x3e8f9f[_0x3a41('0x1c')];_0x462294+=0x1){_0x383788[_0x3a41('0x47')](_0x3a41('0x4d'),{'SmsInteractionId':Number(_0x3e8f9f[_0x462294]),'UserId':Number(_0x115b82['id'])});}});}})[_0x3a41('0x9')](function(){if(_0x4905de===_0x3a41('0x45')){var _0x46cf43=_['map'](_0x115b82[_0x3a41('0x26')],'id');return _0x115b82['removeOpenchannelInteractions'](_0x46cf43)[_0x3a41('0x9')](function(){for(var _0x489038=0x0;_0x489038<_0x46cf43[_0x3a41('0x1c')];_0x489038+=0x1){_0x383788[_0x3a41('0x47')](_0x3a41('0x4e'),{'OpenchannelInteractionId':Number(_0x46cf43[_0x489038]),'UserId':Number(_0x115b82['id'])});}});}})[_0x3a41('0x9')](function(){if(_0x4905de===_0x3a41('0x45')){var _0x13e116=_[_0x3a41('0x16')](_0x115b82[_0x3a41('0x27')],'id');return _0x115b82[_0x3a41('0x4f')](_0x13e116)[_0x3a41('0x9')](function(){for(var _0x500f23=0x0;_0x500f23<_0x13e116[_0x3a41('0x1c')];_0x500f23+=0x1){_0x383788[_0x3a41('0x47')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x13e116[_0x500f23]),'UserId':Number(_0x115b82['id'])});}});}})[_0x3a41('0x50')](function(_0x1b9ecc){_0x1ea3fe[_0x3a41('0x51')](_0x1b9ecc);});}}function onDisconnect(_0x2576a8,_0x1b68bf){joinOrLeave(_0x2576a8,_0x3a41('0x45'),_0x1b68bf);}function onConnect(_0x4c05fd){joinOrLeave(_0x4c05fd,_0x3a41('0x52'));}exports[_0x3a41('0x53')]=function(_0x178c27){_0x178c27['on'](_0x3a41('0x54'),function(_0x473ac3){_0x473ac3[_0x3a41('0x55')](0x0);_0x473ac3[_0x3a41('0x56')]=_0x473ac3[_0x3a41('0x57')]['connection']['remoteAddress']+':'+_0x473ac3[_0x3a41('0x57')][_0x3a41('0x54')]['remotePort'];_0x473ac3['connectedAt']=new Date();_0x473ac3[_0x3a41('0x51')]=function(_0x24f471){console[_0x3a41('0x51')](_0x3a41('0x58')+_0x473ac3['nsp']['name']+'['+_0x473ac3[_0x3a41('0x56')]+']',_0x24f471);};_0x473ac3['on'](_0x3a41('0x59'),function(){onDisconnect(_0x473ac3,_0x178c27);_0x473ac3[_0x3a41('0x51')](_0x3a41('0x5a'));});onConnect(_0x473ac3);_0x473ac3[_0x3a41('0x51')](_0x3a41('0x5b'));});};
\ No newline at end of file
+var _0xe353=['address','remoteAddress','request','remotePort','connectedAt','log','nsp','CONNECTED','util','bluebird','../mysqldb','./environment','name','Agents','User','role','agent','type','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','findAll','Telephones','IvrCampaigns','UserProfileResource','resourceId','map','where','telephone','Campaign','ivr','format','%s:queue:%s','length','user:%s','query','find','userProfileId','handshake','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','hasOwnProperty','include','push','VoiceQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','user','voice:outbound','ChatQueues','WhatsappQueues','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','OpenchannelInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','default','connection','setMaxListeners'];(function(_0x235c6d,_0x16f5d3){var _0x4633eb=function(_0x582c90){while(--_0x582c90){_0x235c6d['push'](_0x235c6d['shift']());}};_0x4633eb(++_0x16f5d3);}(_0xe353,0xdc));var _0x3e35=function(_0x4b2863,_0x494899){_0x4b2863=_0x4b2863-0x0;var _0x567d67=_0xe353[_0x4b2863];return _0x567d67;};'use strict';var _=require('lodash');var util=require(_0x3e35('0x0'));var BPromise=require(_0x3e35('0x1'));var db=require(_0x3e35('0x2'))['db'];var config=require(_0x3e35('0x3'));var queryQueues={'attributes':['id',_0x3e35('0x4')],'include':[{'as':_0x3e35('0x5'),'model':db[_0x3e35('0x6')],'attributes':['id',_0x3e35('0x4'),_0x3e35('0x7')],'raw':!![],'where':{'role':_0x3e35('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x3e35('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x3e35('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x3e35('0x4')],'where':{'role':_0x3e35('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x3e35('0x9')],'where':{'type':'ivr'}};function getAssociatedResources(_0xe156a,_0x183d1f,_0x37dbac){return db[_0x3e35('0xa')][_0x3e35('0xb')]({'where':{'name':_0xe156a,'userProfileId':_0x183d1f},'raw':!![]})[_0x3e35('0xc')](function(_0x8e9557){if(_0x8e9557){if(_0x8e9557[_0x3e35('0xd')]){switch(_0xe156a){case _0x3e35('0xe'):case'ChatQueues':case _0x3e35('0xf'):case _0x3e35('0x10'):case _0x3e35('0x11'):case _0x3e35('0x12'):case'WhatsappQueues':return db[_0x37dbac][_0x3e35('0x13')](queryQueues);case _0x3e35('0x14'):return db[_0x37dbac]['findAll'](queryTelephones);case'Trunks':return db[_0x37dbac][_0x3e35('0x13')](queryTrunks);case _0x3e35('0x15'):return db[_0x37dbac][_0x3e35('0x13')](queryCampaigns);}}else{return db[_0x3e35('0x16')][_0x3e35('0x13')]({'attributes':[_0x3e35('0x17')],'where':{'sectionId':_0x8e9557['id']},'raw':!![]})['then'](function(_0x16ca34){if(_0x16ca34){var _0x5ab566={'where':{'id':_[_0x3e35('0x18')](_0x16ca34,'resourceId')},'raw':!![]};switch(_0x37dbac){case _0x3e35('0x6'):_0x5ab566[_0x3e35('0x19')][_0x3e35('0x7')]=_0x3e35('0x1a');break;case _0x3e35('0x1b'):_0x5ab566['where'][_0x3e35('0x9')]=_0x3e35('0x1c');break;}return db[_0x37dbac][_0x3e35('0x13')](_0x5ab566);}else{return[];}});}}else{return[];}})[_0x3e35('0xc')](function(_0x487e07){return _0x487e07;});}function joinOrLeaveQueues(_0x2a405d,_0x56aa31,_0x43fd52,_0x1eed3e){_0x2a405d[_0x56aa31](util[_0x3e35('0x1d')](_0x3e35('0x1e'),_0x43fd52,_0x1eed3e['name']));if(_0x1eed3e[_0x3e35('0x5')]){for(var _0x509244=0x0;_0x509244<_0x1eed3e['Agents'][_0x3e35('0x1f')];_0x509244+=0x1){_0x2a405d[_0x56aa31](util['format'](_0x3e35('0x20'),_0x1eed3e['Agents'][_0x509244]['name']));}}}function joinOrLeave(_0x22389a,_0x28614d,_0x1ca8c8){var _0x3ea7fa;if(_0x22389a['handshake'][_0x3e35('0x21')]['id']){db['User'][_0x3e35('0x22')]({'attributes':['id',_0x3e35('0x4'),_0x3e35('0x7'),_0x3e35('0x23')],'where':{'id':_0x22389a[_0x3e35('0x24')][_0x3e35('0x21')]['id']},'include':[{'model':db[_0x3e35('0x25')],'as':_0x3e35('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x3e35('0x27')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x3e35('0x28')],'as':_0x3e35('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x3e35('0x2a')],'as':_0x3e35('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0x3e35('0x2c')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x3e35('0x2d')],'as':_0x3e35('0x2e'),'attributes':['id'],'raw':!![]}]})[_0x3e35('0xc')](function(_0x3e2581){if(_0x3e2581){_0x3ea7fa=_0x3e2581;_0x22389a[_0x28614d](util[_0x3e35('0x1d')](_0x3e35('0x20'),_0x3e2581[_0x3e35('0x4')]));var _0x5084cf=[];switch(_0x3e2581[_0x3e35('0x7')]){case _0x3e35('0x2f'):_0x22389a[_0x28614d](_0x3e35('0x30'));_0x22389a[_0x28614d]('voice:outbound');if(queryQueues[_0x3e35('0x31')](_0x3e35('0x32'))){delete queryQueues['include'];}_0x5084cf[_0x3e35('0x33')](db[_0x3e35('0x34')]['findAll'](queryQueues));_0x5084cf['push'](db['ChatQueue'][_0x3e35('0x13')](queryQueues));_0x5084cf['push'](db[_0x3e35('0x35')][_0x3e35('0x13')](queryQueues));_0x5084cf[_0x3e35('0x33')](db[_0x3e35('0x36')][_0x3e35('0x13')](queryQueues));_0x5084cf[_0x3e35('0x33')](db[_0x3e35('0x37')][_0x3e35('0x13')](queryQueues));_0x5084cf[_0x3e35('0x33')](db[_0x3e35('0x38')]['findAll'](queryQueues));_0x5084cf[_0x3e35('0x33')](db[_0x3e35('0x39')][_0x3e35('0x13')](queryQueues));_0x5084cf[_0x3e35('0x33')](db[_0x3e35('0x6')][_0x3e35('0x13')](queryTelephones));_0x5084cf['push'](db['Trunk'][_0x3e35('0x13')](queryTrunks));_0x5084cf[_0x3e35('0x33')](db[_0x3e35('0x1b')][_0x3e35('0x13')](queryCampaigns));_0x5084cf['push'](db[_0x3e35('0x6')]['findAll'](queryAgents));break;case _0x3e35('0x3a'):_0x22389a[_0x28614d](_0x3e35('0x30'));_0x22389a[_0x28614d](_0x3e35('0x3b'));_0x5084cf[_0x3e35('0x33')](getAssociatedResources('VoiceQueues',_0x3e2581[_0x3e35('0x23')],'VoiceQueue'));_0x5084cf['push'](getAssociatedResources(_0x3e35('0x3c'),_0x3e2581[_0x3e35('0x23')],'ChatQueue'));_0x5084cf[_0x3e35('0x33')](getAssociatedResources(_0x3e35('0xf'),_0x3e2581[_0x3e35('0x23')],_0x3e35('0x35')));_0x5084cf[_0x3e35('0x33')](getAssociatedResources('SmsQueues',_0x3e2581[_0x3e35('0x23')],_0x3e35('0x36')));_0x5084cf[_0x3e35('0x33')](getAssociatedResources('MailQueues',_0x3e2581[_0x3e35('0x23')],'MailQueue'));_0x5084cf[_0x3e35('0x33')](getAssociatedResources(_0x3e35('0x12'),_0x3e2581[_0x3e35('0x23')],'OpenchannelQueue'));_0x5084cf[_0x3e35('0x33')](getAssociatedResources(_0x3e35('0x3d'),_0x3e2581['userProfileId'],'WhatsappQueue'));_0x5084cf[_0x3e35('0x33')](getAssociatedResources(_0x3e35('0x14'),_0x3e2581['userProfileId'],_0x3e35('0x6')));_0x5084cf[_0x3e35('0x33')](getAssociatedResources('Trunks',_0x3e2581[_0x3e35('0x23')],'Trunk'));_0x5084cf[_0x3e35('0x33')](getAssociatedResources(_0x3e35('0x15'),_0x3e2581[_0x3e35('0x23')],'Campaign'));_0x5084cf[_0x3e35('0x33')](db[_0x3e35('0x6')][_0x3e35('0x13')](queryAgents));break;case _0x3e35('0x8'):_0x22389a[_0x28614d](_0x3e35('0x30'));_0x22389a[_0x28614d](_0x3e35('0x3b'));_0x5084cf[_0x3e35('0x33')](_0x3e2581[_0x3e35('0x3e')]({'attributes':['id',_0x3e35('0x4')]}));_0x5084cf[_0x3e35('0x33')](_0x3e2581[_0x3e35('0x3f')]({'attributes':['id','name']}));_0x5084cf['push'](_0x3e2581[_0x3e35('0x40')]({'attributes':['id',_0x3e35('0x4')]}));_0x5084cf['push'](_0x3e2581[_0x3e35('0x41')]({'attributes':['id',_0x3e35('0x4')]}));_0x5084cf['push'](_0x3e2581[_0x3e35('0x42')]({'attributes':['id',_0x3e35('0x4')]}));_0x5084cf['push'](_0x3e2581[_0x3e35('0x43')]({'attributes':['id',_0x3e35('0x4')]}));_0x5084cf['push'](_0x3e2581[_0x3e35('0x44')]({'attributes':['id',_0x3e35('0x4')]}));break;}return BPromise[_0x3e35('0x45')](_0x5084cf);}})[_0x3e35('0xc')](function(_0x5e2c66){if(_0x5e2c66&&_0x5e2c66['length']){for(var _0x50244a=0x0;_0x50244a<_0x5e2c66[_0x3e35('0x1f')];_0x50244a+=0x1){for(var _0x330320=0x0;_0x330320<_0x5e2c66[_0x50244a][_0x3e35('0x1f')];_0x330320+=0x1){switch(_0x50244a){case 0x0:joinOrLeaveQueues(_0x22389a,_0x28614d,_0x3e35('0x46'),_0x5e2c66[_0x50244a][_0x330320]);break;case 0x1:joinOrLeaveQueues(_0x22389a,_0x28614d,_0x3e35('0x47'),_0x5e2c66[_0x50244a][_0x330320]);break;case 0x2:joinOrLeaveQueues(_0x22389a,_0x28614d,_0x3e35('0x48'),_0x5e2c66[_0x50244a][_0x330320]);break;case 0x3:joinOrLeaveQueues(_0x22389a,_0x28614d,_0x3e35('0x49'),_0x5e2c66[_0x50244a][_0x330320]);break;case 0x4:joinOrLeaveQueues(_0x22389a,_0x28614d,_0x3e35('0x4a'),_0x5e2c66[_0x50244a][_0x330320]);break;case 0x5:joinOrLeaveQueues(_0x22389a,_0x28614d,_0x3e35('0x4b'),_0x5e2c66[_0x50244a][_0x330320]);break;case 0x6:joinOrLeaveQueues(_0x22389a,_0x28614d,_0x3e35('0x4c'),_0x5e2c66[_0x50244a][_0x330320]);break;case 0x7:if(_0x3ea7fa[_0x3e35('0x7')]!=='agent')_0x22389a[_0x28614d](util[_0x3e35('0x1d')](_0x3e35('0x4d'),_0x5e2c66[_0x50244a][_0x330320][_0x3e35('0x4')]));break;case 0x8:if(_0x3ea7fa[_0x3e35('0x7')]!==_0x3e35('0x8'))_0x22389a[_0x28614d](util[_0x3e35('0x1d')]('trunk:%s',_0x5e2c66[_0x50244a][_0x330320][_0x3e35('0x4')]));break;case 0x9:if(_0x3ea7fa[_0x3e35('0x7')]!==_0x3e35('0x8'))_0x22389a[_0x28614d](util[_0x3e35('0x1d')](_0x3e35('0x4e'),_0x5e2c66[_0x50244a][_0x330320][_0x3e35('0x9')],_0x5e2c66[_0x50244a][_0x330320][_0x3e35('0x4')]));break;case 0xa:_0x22389a[_0x28614d](util[_0x3e35('0x1d')](_0x3e35('0x20'),_0x5e2c66[_0x50244a][_0x330320][_0x3e35('0x4')]));break;}}}}})[_0x3e35('0xc')](function(){if(_0x28614d===_0x3e35('0x4f')){var _0x30a550=_[_0x3e35('0x18')](_0x3ea7fa[_0x3e35('0x26')],'id');return _0x3ea7fa[_0x3e35('0x50')](_0x30a550)['then'](function(){for(var _0x1c5580=0x0;_0x1c5580<_0x30a550[_0x3e35('0x1f')];_0x1c5580+=0x1){_0x1ca8c8[_0x3e35('0x51')](_0x3e35('0x52'),{'ChatInteractionId':Number(_0x30a550[_0x1c5580]),'UserId':Number(_0x3ea7fa['id'])});}});}})['then'](function(){if(_0x28614d===_0x3e35('0x4f')){var _0x12d8c2=_['map'](_0x3ea7fa[_0x3e35('0x53')],'id');return _0x3ea7fa[_0x3e35('0x54')](_0x12d8c2)[_0x3e35('0xc')](function(){for(var _0x2a57d4=0x0;_0x2a57d4<_0x12d8c2[_0x3e35('0x1f')];_0x2a57d4+=0x1){_0x1ca8c8[_0x3e35('0x51')](_0x3e35('0x55'),{'MailInteractionId':Number(_0x12d8c2[_0x2a57d4]),'UserId':Number(_0x3ea7fa['id'])});}});}})[_0x3e35('0xc')](function(){if(_0x28614d===_0x3e35('0x4f')){var _0x2b518f=_[_0x3e35('0x18')](_0x3ea7fa[_0x3e35('0x29')],'id');return _0x3ea7fa['removeFaxInteractions'](_0x2b518f)[_0x3e35('0xc')](function(){for(var _0x953b54=0x0;_0x953b54<_0x2b518f[_0x3e35('0x1f')];_0x953b54+=0x1){_0x1ca8c8[_0x3e35('0x51')](_0x3e35('0x56'),{'FaxInteractionId':Number(_0x2b518f[_0x953b54]),'UserId':Number(_0x3ea7fa['id'])});}});}})[_0x3e35('0xc')](function(){if(_0x28614d==='leave'){var _0x120892=_['map'](_0x3ea7fa['SmsInteractions'],'id');return _0x3ea7fa[_0x3e35('0x57')](_0x120892)[_0x3e35('0xc')](function(){for(var _0x48e7c5=0x0;_0x48e7c5<_0x120892['length'];_0x48e7c5+=0x1){_0x1ca8c8[_0x3e35('0x51')](_0x3e35('0x58'),{'SmsInteractionId':Number(_0x120892[_0x48e7c5]),'UserId':Number(_0x3ea7fa['id'])});}});}})['then'](function(){if(_0x28614d===_0x3e35('0x4f')){var _0x56d72b=_['map'](_0x3ea7fa[_0x3e35('0x59')],'id');return _0x3ea7fa[_0x3e35('0x5a')](_0x56d72b)[_0x3e35('0xc')](function(){for(var _0x3376c7=0x0;_0x3376c7<_0x56d72b[_0x3e35('0x1f')];_0x3376c7+=0x1){_0x1ca8c8[_0x3e35('0x51')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x56d72b[_0x3376c7]),'UserId':Number(_0x3ea7fa['id'])});}});}})['then'](function(){if(_0x28614d===_0x3e35('0x4f')){var _0x116c21=_['map'](_0x3ea7fa[_0x3e35('0x2e')],'id');return _0x3ea7fa[_0x3e35('0x5b')](_0x116c21)[_0x3e35('0xc')](function(){for(var _0x4a74e8=0x0;_0x4a74e8<_0x116c21['length'];_0x4a74e8+=0x1){_0x1ca8c8['emit'](_0x3e35('0x5c'),{'WhatsappInteractionId':Number(_0x116c21[_0x4a74e8]),'UserId':Number(_0x3ea7fa['id'])});}});}})[_0x3e35('0x5d')](function(_0x21f24e){_0x22389a['log'](_0x21f24e);});}}function onDisconnect(_0x256f11,_0x58d7dd){joinOrLeave(_0x256f11,_0x3e35('0x4f'),_0x58d7dd);}function onConnect(_0x4e5553){joinOrLeave(_0x4e5553,_0x3e35('0x5e'));}exports[_0x3e35('0x5f')]=function(_0x224a04){_0x224a04['on'](_0x3e35('0x60'),function(_0x190011){_0x190011[_0x3e35('0x61')](0x0);_0x190011[_0x3e35('0x62')]=_0x190011['request']['connection'][_0x3e35('0x63')]+':'+_0x190011[_0x3e35('0x64')]['connection'][_0x3e35('0x65')];_0x190011[_0x3e35('0x66')]=new Date();_0x190011[_0x3e35('0x67')]=function(_0x26507c){console[_0x3e35('0x67')]('SocketIO\x20'+_0x190011[_0x3e35('0x68')][_0x3e35('0x4')]+'['+_0x190011[_0x3e35('0x62')]+']',_0x26507c);};_0x190011['on']('disconnect',function(){onDisconnect(_0x190011,_0x224a04);_0x190011[_0x3e35('0x67')]('DISCONNECTED');});onConnect(_0x190011);_0x190011[_0x3e35('0x67')](_0x3e35('0x69'));});};
\ No newline at end of file
index c638109..a91e0ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f14=['sequelize','query','Sequelize','QueryTypes','SELECT','then','contact','find','UserId','name','fullname','interface','format','channel','agent','incomingmessage','outgoingmessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','changed','closed','User','SIP/%s','default','length','model','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','triggers','lodash','client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','Sms','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','Mail','MailInteraction','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','info','Trigger,\x20%s','error','code','catch','get','motionChannel','event','direction','ContactId'];(function(_0x25d42d,_0x2fdcc6){var _0x2012dc=function(_0x5d7e3e){while(--_0x5d7e3e){_0x25d42d['push'](_0x25d42d['shift']());}};_0x2012dc(++_0x2fdcc6);}(_0x8f14,0xa0));var _0x48f1=function(_0x555283,_0x4289df){_0x555283=_0x555283-0x0;var _0x37f532=_0x8f14[_0x555283];return _0x37f532;};'use strict';var util=require(_0x48f1('0x0'));var db=require(_0x48f1('0x1'))['db'];var jayson=require(_0x48f1('0x2'));var logger=require('../logger')(_0x48f1('0x3'));var _=require(_0x48f1('0x4'));var client=jayson[_0x48f1('0x5')][_0x48f1('0x6')]({'port':0x232a});var triggers=[{'channel':_0x48f1('0x7'),'model':_0x48f1('0x8'),'event':_0x48f1('0x9'),'condition':_0x48f1('0xa'),'callback':afterCreate},{'channel':_0x48f1('0x7'),'model':_0x48f1('0x8'),'event':_0x48f1('0xb'),'condition':_0x48f1('0xc'),'callback':afterUpdate},{'channel':'Chat','model':_0x48f1('0xd'),'event':'afterCreate','condition':_0x48f1('0xe'),'callback':afterCreateMessage},{'channel':_0x48f1('0xf'),'model':'SmsInteraction','event':_0x48f1('0x9'),'condition':_0x48f1('0xa'),'callback':afterCreate},{'channel':'Sms','model':'SmsInteraction','event':_0x48f1('0xb'),'condition':_0x48f1('0xc'),'callback':afterUpdate},{'channel':_0x48f1('0xf'),'model':'SmsMessage','event':'afterCreate','condition':_0x48f1('0xe'),'callback':afterCreateMessage},{'channel':_0x48f1('0x10'),'model':'WhatsappInteraction','event':_0x48f1('0x9'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x48f1('0x10'),'model':_0x48f1('0x11'),'event':_0x48f1('0xb'),'condition':_0x48f1('0xc'),'callback':afterUpdate},{'channel':_0x48f1('0x10'),'model':_0x48f1('0x12'),'event':'afterCreate','condition':_0x48f1('0xe'),'callback':afterCreateMessage},{'channel':_0x48f1('0x13'),'model':_0x48f1('0x14'),'event':'afterCreate','condition':_0x48f1('0xa'),'callback':afterCreate},{'channel':_0x48f1('0x13'),'model':'FaxInteraction','event':_0x48f1('0xb'),'condition':_0x48f1('0xc'),'callback':afterUpdate},{'channel':'Fax','model':'FaxMessage','event':_0x48f1('0x9'),'condition':_0x48f1('0xe'),'callback':afterCreateMessage},{'channel':_0x48f1('0x15'),'model':'MailInteraction','event':'afterCreate','condition':_0x48f1('0xa'),'callback':afterCreate},{'channel':_0x48f1('0x15'),'model':_0x48f1('0x16'),'event':_0x48f1('0xb'),'condition':_0x48f1('0xc'),'callback':afterUpdate},{'channel':_0x48f1('0x15'),'model':'MailMessage','event':_0x48f1('0x9'),'condition':_0x48f1('0xe'),'callback':afterCreateMessage},{'channel':_0x48f1('0x17'),'model':_0x48f1('0x18'),'event':'afterCreate','condition':_0x48f1('0xa'),'callback':afterCreate},{'channel':'Openchannel','model':_0x48f1('0x18'),'event':'afterUpdate','condition':_0x48f1('0xc'),'callback':afterUpdate},{'channel':_0x48f1('0x17'),'model':_0x48f1('0x19'),'event':'afterCreate','condition':_0x48f1('0xe'),'callback':afterCreateMessage}];function request(_0x4cd38f){return client[_0x48f1('0x1a')](_0x48f1('0x1b'),_0x4cd38f)['then'](function(_0x599150){logger[_0x48f1('0x1c')](_0x48f1('0x1d'),_0x48f1('0x1b'),_0x599150);if(_0x599150[_0x48f1('0x1e')]){if(_0x599150['error'][_0x48f1('0x1f')]===0x1f4){logger[_0x48f1('0x1e')](_0x48f1('0x1d'),_0x48f1('0x1b'),_0x599150[_0x48f1('0x1e')]);}}})[_0x48f1('0x20')](function(_0x4a492d){logger[_0x48f1('0x1e')](_0x48f1('0x1d'),_0x48f1('0x1b'),_0x4a492d);});}function afterCreateMessage(_0x2119a6,_0x555dc5){return function(_0x5567f4,_0x5f5aa2){_0x5567f4=_0x5567f4[_0x48f1('0x21')]({'plain':!![]});_0x5567f4['channel']=_0x2119a6;_0x5567f4[_0x48f1('0x22')]=_0x2119a6;_0x5567f4[_0x48f1('0x23')]=_0x5567f4[_0x48f1('0x24')];var _0x273d50='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5567f4[_0x48f1('0x25')];return db[_0x48f1('0x26')][_0x48f1('0x27')](_0x273d50,{'type':db[_0x48f1('0x28')][_0x48f1('0x29')][_0x48f1('0x2a')],'raw':!![]})['then'](function(_0x2a7d76){return _0x2a7d76;})[_0x48f1('0x2b')](function(_0x541e46){if(_0x541e46){_0x5567f4[_0x48f1('0x2c')]=_0x541e46[0x0];}if(_0x5567f4['UserId']){return db['User'][_0x48f1('0x2d')]({'where':{'id':_0x5567f4[_0x48f1('0x2e')]},'attributes':['id',_0x48f1('0x2f'),_0x48f1('0x30'),'email','internal'],'raw':!![]})[_0x48f1('0x2b')](function(_0x5d488e){_0x5567f4[_0x48f1('0x31')]=util[_0x48f1('0x32')]('SIP/%s',_0x5d488e[_0x48f1('0x2f')]);_0x5567f4[_0x48f1('0x33')]=_0x2119a6;_0x5567f4[_0x48f1('0x34')]=_0x5d488e;return request({'event':_0x48f1('0x35'),'message':_0x5567f4});})['catch'](function(_0x572346){console[_0x48f1('0x1e')](_0x572346);});}else{return request({'event':_0x48f1('0x36'),'message':_0x5567f4});}});};}function afterCreate(_0x1ed3b7,_0x1e64ce){return function(_0x20ac61,_0x3d372d){_0x20ac61=_0x20ac61[_0x48f1('0x21')]({'plain':!![]});_0x20ac61['channel']=_0x1ed3b7;_0x20ac61[_0x48f1('0x22')]=_0x1ed3b7;_0x20ac61[_0x48f1('0x23')]='opened';var _0x373a2f=_0x48f1('0x37')+_0x20ac61[_0x48f1('0x25')];return db[_0x48f1('0x26')]['query'](_0x373a2f,{'type':db['Sequelize'][_0x48f1('0x29')][_0x48f1('0x2a')],'raw':!![]})[_0x48f1('0x2b')](function(_0x58d1f2){return _0x58d1f2;})[_0x48f1('0x2b')](function(_0x549c3e){if(_0x549c3e){_0x20ac61['contact']=_0x549c3e[0x0];}return request({'event':_0x1e64ce,'message':_0x20ac61});});};}function afterUpdate(_0x13fbe1,_0x45a98a){return function(_0x411f48,_0x27ae1e){if(_0x411f48[_0x48f1('0x38')](_0x48f1('0x39'))&&_0x411f48[_0x48f1('0x39')]){_0x411f48=_0x411f48['get']({'plain':!![]});_0x411f48['channel']=_0x13fbe1;_0x411f48[_0x48f1('0x22')]=_0x13fbe1;_0x411f48[_0x48f1('0x23')]=_0x48f1('0x39');var _0x51a0b1=_0x48f1('0x37')+_0x411f48[_0x48f1('0x25')];return db[_0x48f1('0x26')][_0x48f1('0x27')](_0x51a0b1,{'type':db[_0x48f1('0x28')][_0x48f1('0x29')][_0x48f1('0x2a')],'raw':!![]})[_0x48f1('0x2b')](function(_0x1a282b){return _0x1a282b;})[_0x48f1('0x2b')](function(_0x5a81cf){if(_0x5a81cf){_0x411f48['contact']=_0x5a81cf[0x0];}if(_0x411f48[_0x48f1('0x2e')]){return db[_0x48f1('0x3a')][_0x48f1('0x2d')]({'where':{'id':_0x411f48[_0x48f1('0x2e')]},'attributes':['id',_0x48f1('0x2f'),_0x48f1('0x30'),'email','internal'],'raw':!![]})['then'](function(_0x552f14){_0x411f48[_0x48f1('0x31')]=util['format'](_0x48f1('0x3b'),_0x552f14[_0x48f1('0x2f')]);_0x411f48[_0x48f1('0x34')]=_0x552f14;return request({'event':_0x45a98a,'message':_0x411f48});})[_0x48f1('0x20')](function(_0x28b305){console[_0x48f1('0x1e')](_0x28b305);});}else{return request({'event':_0x45a98a,'message':_0x411f48});}});}};}exports[_0x48f1('0x3c')]=function(){for(var _0x5c95f0=0x0;_0x5c95f0<triggers[_0x48f1('0x3d')];_0x5c95f0+=0x1){if(db['hasOwnProperty'](triggers[_0x5c95f0][_0x48f1('0x3e')])){db[triggers[_0x5c95f0][_0x48f1('0x3e')]]['hook'](triggers[_0x5c95f0][_0x48f1('0x23')],triggers[_0x5c95f0][_0x48f1('0x3f')](triggers[_0x5c95f0][_0x48f1('0x33')][_0x48f1('0x40')](),triggers[_0x5c95f0][_0x48f1('0x41')]));}}};
\ No newline at end of file
+var _0xf689=['info','Trigger,\x20%s','error','catch','get','event','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','Sequelize','QueryTypes','SELECT','User','find','UserId','name','fullname','email','internal','interface','format','SIP/%s','channel','outgoingmessage','opened','contact','changed','closed','ContactId','agent','default','length','hasOwnProperty','model','callback','toLowerCase','util','../../mysqldb','jayson/promise','../logger','client','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','newmessage','Sms','SmsInteraction','closedinteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','MailInteraction','Mail','MailMessage','OpenchannelInteraction','Openchannel','OpenchannelMessage','request','EventManager','then'];(function(_0x5bd991,_0x2b4a7c){var _0x3faed1=function(_0x139b10){while(--_0x139b10){_0x5bd991['push'](_0x5bd991['shift']());}};_0x3faed1(++_0x2b4a7c);}(_0xf689,0x68));var _0x9f68=function(_0x2d37da,_0x11ecf4){_0x2d37da=_0x2d37da-0x0;var _0x1af6df=_0xf689[_0x2d37da];return _0x1af6df;};'use strict';var util=require(_0x9f68('0x0'));var db=require(_0x9f68('0x1'))['db'];var jayson=require(_0x9f68('0x2'));var logger=require(_0x9f68('0x3'))('triggers');var _=require('lodash');var client=jayson[_0x9f68('0x4')]['http']({'port':0x232a});var triggers=[{'channel':_0x9f68('0x5'),'model':_0x9f68('0x6'),'event':_0x9f68('0x7'),'condition':_0x9f68('0x8'),'callback':afterCreate},{'channel':_0x9f68('0x5'),'model':_0x9f68('0x6'),'event':_0x9f68('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x9f68('0x5'),'model':'ChatMessage','event':_0x9f68('0x7'),'condition':_0x9f68('0xa'),'callback':afterCreateMessage},{'channel':_0x9f68('0xb'),'model':_0x9f68('0xc'),'event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0x9f68('0xb'),'model':_0x9f68('0xc'),'event':_0x9f68('0x9'),'condition':_0x9f68('0xd'),'callback':afterUpdate},{'channel':_0x9f68('0xb'),'model':_0x9f68('0xe'),'event':_0x9f68('0x7'),'condition':_0x9f68('0xa'),'callback':afterCreateMessage},{'channel':_0x9f68('0xf'),'model':_0x9f68('0x10'),'event':_0x9f68('0x7'),'condition':_0x9f68('0x8'),'callback':afterCreate},{'channel':_0x9f68('0xf'),'model':_0x9f68('0x10'),'event':'afterUpdate','condition':_0x9f68('0xd'),'callback':afterUpdate},{'channel':_0x9f68('0xf'),'model':_0x9f68('0x11'),'event':_0x9f68('0x7'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x9f68('0x12'),'model':_0x9f68('0x13'),'event':_0x9f68('0x7'),'condition':_0x9f68('0x8'),'callback':afterCreate},{'channel':_0x9f68('0x12'),'model':_0x9f68('0x13'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0x9f68('0x12'),'model':_0x9f68('0x14'),'event':_0x9f68('0x7'),'condition':_0x9f68('0xa'),'callback':afterCreateMessage},{'channel':'Mail','model':_0x9f68('0x15'),'event':_0x9f68('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':'Mail','model':'MailInteraction','event':_0x9f68('0x9'),'condition':_0x9f68('0xd'),'callback':afterUpdate},{'channel':_0x9f68('0x16'),'model':_0x9f68('0x17'),'event':_0x9f68('0x7'),'condition':_0x9f68('0xa'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0x9f68('0x18'),'event':_0x9f68('0x7'),'condition':_0x9f68('0x8'),'callback':afterCreate},{'channel':_0x9f68('0x19'),'model':'OpenchannelInteraction','event':_0x9f68('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x9f68('0x19'),'model':_0x9f68('0x1a'),'event':_0x9f68('0x7'),'condition':_0x9f68('0xa'),'callback':afterCreateMessage}];function request(_0x432161){return client[_0x9f68('0x1b')](_0x9f68('0x1c'),_0x432161)[_0x9f68('0x1d')](function(_0x52ef0b){logger[_0x9f68('0x1e')](_0x9f68('0x1f'),_0x9f68('0x1c'),_0x52ef0b);if(_0x52ef0b[_0x9f68('0x20')]){if(_0x52ef0b[_0x9f68('0x20')]['code']===0x1f4){logger[_0x9f68('0x20')](_0x9f68('0x1f'),'EventManager',_0x52ef0b[_0x9f68('0x20')]);}}})[_0x9f68('0x21')](function(_0x30791a){logger[_0x9f68('0x20')]('Trigger,\x20%s','EventManager',_0x30791a);});}function afterCreateMessage(_0x191d17,_0x5ee6fd){return function(_0x1ecaa3,_0x5d962d){_0x1ecaa3=_0x1ecaa3[_0x9f68('0x22')]({'plain':!![]});_0x1ecaa3['channel']=_0x191d17;_0x1ecaa3[_0x9f68('0x23')]=_0x1ecaa3[_0x9f68('0x24')];var _0x3281e1=_0x9f68('0x25')+_0x1ecaa3['ContactId'];return db[_0x9f68('0x26')][_0x9f68('0x27')](_0x3281e1,{'type':db[_0x9f68('0x28')][_0x9f68('0x29')][_0x9f68('0x2a')],'raw':!![]})[_0x9f68('0x1d')](function(_0x31623a){return _0x31623a;})[_0x9f68('0x1d')](function(_0x53b4d7){if(_0x53b4d7){_0x1ecaa3['contact']=_0x53b4d7[0x0];}if(_0x1ecaa3['UserId']){return db[_0x9f68('0x2b')][_0x9f68('0x2c')]({'where':{'id':_0x1ecaa3[_0x9f68('0x2d')]},'attributes':['id',_0x9f68('0x2e'),_0x9f68('0x2f'),_0x9f68('0x30'),_0x9f68('0x31')],'raw':!![]})['then'](function(_0x14c423){_0x1ecaa3[_0x9f68('0x32')]=util[_0x9f68('0x33')](_0x9f68('0x34'),_0x14c423[_0x9f68('0x2e')]);_0x1ecaa3[_0x9f68('0x35')]=_0x191d17;_0x1ecaa3['agent']=_0x14c423;return request({'event':'incomingmessage','message':_0x1ecaa3});})[_0x9f68('0x21')](function(_0x49ace5){console[_0x9f68('0x20')](_0x49ace5);});}else{return request({'event':_0x9f68('0x36'),'message':_0x1ecaa3});}});};}function afterCreate(_0x1533e5,_0x1b6016){return function(_0x3af867,_0x214efb){_0x3af867=_0x3af867[_0x9f68('0x22')]({'plain':!![]});_0x3af867['channel']=_0x1533e5;_0x3af867['event']=_0x9f68('0x37');var _0x2ff92b=_0x9f68('0x25')+_0x3af867['ContactId'];return db[_0x9f68('0x26')][_0x9f68('0x27')](_0x2ff92b,{'type':db[_0x9f68('0x28')][_0x9f68('0x29')][_0x9f68('0x2a')],'raw':!![]})[_0x9f68('0x1d')](function(_0x3c0082){return _0x3c0082;})[_0x9f68('0x1d')](function(_0x4d904a){if(_0x4d904a){_0x3af867[_0x9f68('0x38')]=_0x4d904a[0x0];}return request({'event':_0x1b6016,'message':_0x3af867});});};}function afterUpdate(_0x128755,_0x3dbab2){return function(_0x3915bd,_0x6bae86){if(_0x3915bd[_0x9f68('0x39')](_0x9f68('0x3a'))&&_0x3915bd[_0x9f68('0x3a')]){_0x3915bd=_0x3915bd[_0x9f68('0x22')]({'plain':!![]});_0x3915bd['channel']=_0x128755;_0x3915bd['event']=_0x9f68('0x3a');var _0x297ed5=_0x9f68('0x25')+_0x3915bd[_0x9f68('0x3b')];return db[_0x9f68('0x26')][_0x9f68('0x27')](_0x297ed5,{'type':db[_0x9f68('0x28')][_0x9f68('0x29')][_0x9f68('0x2a')],'raw':!![]})[_0x9f68('0x1d')](function(_0x5c111a){return _0x5c111a;})[_0x9f68('0x1d')](function(_0x1c7852){if(_0x1c7852){_0x3915bd[_0x9f68('0x38')]=_0x1c7852[0x0];}if(_0x3915bd[_0x9f68('0x2d')]){return db['User'][_0x9f68('0x2c')]({'where':{'id':_0x3915bd[_0x9f68('0x2d')]},'attributes':['id',_0x9f68('0x2e'),'fullname',_0x9f68('0x30'),_0x9f68('0x31')],'raw':!![]})['then'](function(_0x5d0c6){_0x3915bd[_0x9f68('0x32')]=util['format'](_0x9f68('0x34'),_0x5d0c6[_0x9f68('0x2e')]);_0x3915bd[_0x9f68('0x3c')]=_0x5d0c6;return request({'event':_0x3dbab2,'message':_0x3915bd});})[_0x9f68('0x21')](function(_0xa75def){console['error'](_0xa75def);});}else{return request({'event':_0x3dbab2,'message':_0x3915bd});}});}};}exports[_0x9f68('0x3d')]=function(){for(var _0x10e86e=0x0;_0x10e86e<triggers[_0x9f68('0x3e')];_0x10e86e+=0x1){if(db[_0x9f68('0x3f')](triggers[_0x10e86e][_0x9f68('0x40')])){db[triggers[_0x10e86e]['model']]['hook'](triggers[_0x10e86e][_0x9f68('0x23')],triggers[_0x10e86e][_0x9f68('0x41')](triggers[_0x10e86e][_0x9f68('0x35')][_0x9f68('0x42')](),triggers[_0x10e86e]['condition']));}}};
\ No newline at end of file
index 0a906e2..d2ba463 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9c7=['agents','Maximum\x20login\x20has\x20been\x20reached','lodash','bluebird','./license/util','voice','mail','chat','sms','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','User','then'];(function(_0x1bb72d,_0x2b333b){var _0x47c752=function(_0x3fa6f5){while(--_0x3fa6f5){_0x1bb72d['push'](_0x1bb72d['shift']());}};_0x47c752(++_0x2b333b);}(_0xc9c7,0x8c));var _0x7c9c=function(_0x4b2a19,_0x1aab1a){_0x4b2a19=_0x4b2a19-0x0;var _0x1e7d38=_0xc9c7[_0x4b2a19];return _0x1e7d38;};'use strict';var _=require(_0x7c9c('0x0'));var BPromise=require(_0x7c9c('0x1'));var db=require('../mysqldb')['db'];var util=require(_0x7c9c('0x2'));var channels=[_0x7c9c('0x3'),_0x7c9c('0x4'),_0x7c9c('0x5'),'fax',_0x7c9c('0x6'),_0x7c9c('0x7'),_0x7c9c('0x8')];exports[_0x7c9c('0x9')]=function(){return channels;};exports[_0x7c9c('0xa')]=function(_0x234017){_0x234017=_0x234017[_0x7c9c('0xb')]();return _[_0x7c9c('0xc')](channels,_0x234017);};exports[_0x7c9c('0xd')]=function(_0x4b0835,_0x3f96fa,_0x44a5d4,_0x1f1217){var _0x4750d2={'loginAttempts':_0x3f96fa,'blocked':_0x44a5d4};if(!_[_0x7c9c('0xe')](_0x1f1217)){_0x4750d2[_0x7c9c('0xf')]=_0x1f1217;}return _0x4b0835[_0x7c9c('0x10')](_0x4750d2);};exports[_0x7c9c('0x11')]=function(_0x3bc209){return new BPromise(function(_0x250ff6,_0x17d70f){var _0xc3306e=0x0;if(_0x3bc209[_0x7c9c('0x12')]!=='agent'){_0x250ff6(_0x3bc209);}db[_0x7c9c('0x13')]['count']({'where':{'role':'agent','online':!![],'id':{'$ne':_0x3bc209['id']}}})[_0x7c9c('0x14')](function(_0x2cc912){_0xc3306e=_0x2cc912;return util[_0x7c9c('0x11')]();})['then'](function(_0x4a6e93){if(_0x4a6e93&&_0x4a6e93[_0x7c9c('0x15')]&&_0xc3306e>=_0x4a6e93[_0x7c9c('0x15')]){throw Error(_0x7c9c('0x16'));}_0x250ff6(_0x3bc209);})['catch'](function(_0x293655){_0x17d70f(_0x293655);});});};
\ No newline at end of file
+var _0xf6a2=['mail','chat','fax','sms','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','User','count','agent','then','agents','catch','lodash','../mysqldb','./license/util','voice'];(function(_0x2c6442,_0x3224c5){var _0x2dfca4=function(_0x132f72){while(--_0x132f72){_0x2c6442['push'](_0x2c6442['shift']());}};_0x2dfca4(++_0x3224c5);}(_0xf6a2,0x15a));var _0x2f6a=function(_0x2872b0,_0x4b0855){_0x2872b0=_0x2872b0-0x0;var _0x58b379=_0xf6a2[_0x2872b0];return _0x58b379;};'use strict';var _=require(_0x2f6a('0x0'));var BPromise=require('bluebird');var db=require(_0x2f6a('0x1'))['db'];var util=require(_0x2f6a('0x2'));var channels=[_0x2f6a('0x3'),_0x2f6a('0x4'),_0x2f6a('0x5'),_0x2f6a('0x6'),_0x2f6a('0x7'),_0x2f6a('0x8'),_0x2f6a('0x9')];exports[_0x2f6a('0xa')]=function(){return channels;};exports[_0x2f6a('0xb')]=function(_0xf869c4){_0xf869c4=_0xf869c4[_0x2f6a('0xc')]();return _['includes'](channels,_0xf869c4);};exports[_0x2f6a('0xd')]=function(_0x13cc2e,_0x3214cd,_0x3dbf0e,_0x3321d9){var _0xea58f5={'loginAttempts':_0x3214cd,'blocked':_0x3dbf0e};if(!_[_0x2f6a('0xe')](_0x3321d9)){_0xea58f5[_0x2f6a('0xf')]=_0x3321d9;}return _0x13cc2e[_0x2f6a('0x10')](_0xea58f5);};exports[_0x2f6a('0x11')]=function(_0x29aecc){return new BPromise(function(_0x319aa9,_0x34d77a){var _0x271c60=0x0;if(_0x29aecc[_0x2f6a('0x12')]!=='agent'){_0x319aa9(_0x29aecc);}db[_0x2f6a('0x13')][_0x2f6a('0x14')]({'where':{'role':_0x2f6a('0x15'),'online':!![],'id':{'$ne':_0x29aecc['id']}}})[_0x2f6a('0x16')](function(_0x1c0f06){_0x271c60=_0x1c0f06;return util[_0x2f6a('0x11')]();})[_0x2f6a('0x16')](function(_0x56c9d3){if(_0x56c9d3&&_0x56c9d3[_0x2f6a('0x17')]&&_0x271c60>=_0x56c9d3['agents']){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x319aa9(_0x29aecc);})[_0x2f6a('0x18')](function(_0x36cc51){_0x34d77a(_0x36cc51);});});};
\ No newline at end of file
index ad13e15..6065d94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x119c=['render','send','404','status'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x119c,0xea));var _0xc119=function(_0x1795df,_0xcb261e){_0x1795df=_0x1795df-0x0;var _0x3f13c0=_0x119c[_0x1795df];return _0x3f13c0;};'use strict';module['exports'][0x194]=function pageNotFound(_0xa9d064,_0x5d31b3){var _0x3f93eb=_0xc119('0x0');var _0x906239=0x194;var _0x540eeb={'status':_0x906239};_0x5d31b3[_0xc119('0x1')](_0x540eeb[_0xc119('0x1')]);_0x5d31b3[_0xc119('0x2')](_0x3f93eb,{},function(_0x573014,_0xc67c68){if(_0x573014){return _0x5d31b3['status'](_0x540eeb[_0xc119('0x1')])['json'](_0x540eeb);}_0x5d31b3[_0xc119('0x3')](_0xc67c68);});};
\ No newline at end of file
+var _0xc526=['404','status','json','send'];(function(_0x5cff2f,_0x327411){var _0x4ad9ee=function(_0x55692e){while(--_0x55692e){_0x5cff2f['push'](_0x5cff2f['shift']());}};_0x4ad9ee(++_0x327411);}(_0xc526,0x124));var _0x6c52=function(_0x4bfd82,_0x11c5ac){_0x4bfd82=_0x4bfd82-0x0;var _0x125174=_0xc526[_0x4bfd82];return _0x125174;};'use strict';module['exports'][0x194]=function pageNotFound(_0x2a17c1,_0x5c333b){var _0x34f5aa=_0x6c52('0x0');var _0x3b4d94=0x194;var _0x54a05b={'status':_0x3b4d94};_0x5c333b[_0x6c52('0x1')](_0x54a05b['status']);_0x5c333b['render'](_0x34f5aa,{},function(_0x56f51f,_0x23a266){if(_0x56f51f){return _0x5c333b[_0x6c52('0x1')](_0x54a05b[_0x6c52('0x1')])[_0x6c52('0x2')](_0x54a05b);}_0x5c333b[_0x6c52('0x3')](_0x23a266);});};
\ No newline at end of file
index 0a5c292..67951a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91c8=['ServicenowField','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','SquareOdbc','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','Team','License','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','../api/smsTransferReport/smsTransferReport.model','../api/voicePrefix/voicePrefix.model','UserProfile','UserProfileSection','../api/userProfileSection/userProfileSection.model','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','WhatsappInteraction','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','hasOne','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','Extensions','cascade','CmHopperHistory','HopperHistory','ChatInteractions','SmsInteractions','FaxInteractions','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','chat_group_has_users','Contacts','cm_user_has_contacts','CmList','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','FaxInteraction','user_has_fax_interactions','user_has_sms_interactions','OpenchannelInteractions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueue','VoiceQueues','UserVoiceQueue','ChatQueues','FaxQueues','SmsQueue','SmsQueues','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueue','WhatsappQueues','VoicePrefix','VoicePrefixes','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','user_has_openchannel_accounts','SmsAccount','SmsAccounts','user_has_sms_accounts','WhatsappAccount','user_has_whatsapp_accounts','SquareProject','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','Sound','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperFinals','HopperHistories','HopperBlacks','JscriptySessions','Trunk','TrunkId','TrunkBackupId','IntervalId','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Teams','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','mailboxuser','VoiceQueueReport','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','MailAccountId','Imap','Dispositions','CannedAnswer','Answers','Messages','Interactions','Applications','List','Template','TemplateId','mandatoryDispositionPause','Agents','MailQueue','team_has_mail_queues','MailMessage','MailInteractionId','Account','Contact','mail_interaction_has_tags','Tags','Users','ChatWebsiteId','ChatOfflineMessage','ChatOfflineMessageId','restrict','TagId','MailQueueReport','ContactId','Items','FaxAccountId','Exntensions','Owner','fax_interaction_has_tags','Interaction','FaxInteractionId','ListId','SmsAccountId','sms_interaction_has_tags','ThroughTags','SmsInteractionId','SmsQueueId','OpenchannelAccountId','OpenchannelMessage','OpenchannelApplication','OpenchannelQueueId','openchannel_interaction_has_tags','OpenchannelInteractionId','AttachmentId','team_has_openchannel_queues','ProactiveActions','OpenchannelQueueReport','Agent','Queue','ChatInteractionId','chat_interaction_has_tags','Attachments','team_has_chat_queues','Website','CompanyId','Company','cm_contact_has_tags','Campaign','CampaignId','OwnerId','CmHopperBlack','Condition','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','AutomationId','ParentId','MailApplications','ChatApplications','FaxApplications','SmsApplications','Schedule','DefaultReportId','CustomReportId','Mohs','whatsapp_interaction_has_tags','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','MetricId','SalesforceAccount','SalesforceConfiguration','Configurations','AccountId','Subjects','SubjectId','Descriptions','FieldId','Subject','Description','DescriptionId','Field','VariableId','SugarcrmConfiguration','DeskAccount','int_desk_configuration_has_tags','FreshdeskField','ServicenowAccount','FromId','ToId','SessionId','ProjectId','MailQueues','team_has_fax_queues','team_has_sms_queues','team_has_whatsapp_queues','TrunkBackup','SquareProjectId','campaigns_has_cm_blacklists','FromUserId','ToUserId','ToAgent','ToMailQueueId','ToMailAccountId','ToAccount','FromChatWebsiteId','FromAccount','FromAgent','ToChatQueueId','ToQueue','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToFaxAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','SmsTransferReport','FromSmsAccountId','ToSmsAccountId','CmCustomField','CustomFields','Queues','user_has_voice_prefixes','UserProfileSections','UserProfileResource','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','ToWhatsappAccountId','ToQueueId','exports','../config/environment','sequelize','lodash','jstz','determine','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','mysql','name','utf8','utf8_general_ci','sequelizeHistory','database','password','username','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','VoiceMusicOnHold','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','VoiceMail','VoiceMailMessage','VoiceCallReport','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','MailAccount','../api/mailAccount/mailAccount.model','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailInteraction/mailInteraction.model','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','FaxAccount','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','../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','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','ChatMessage','../api/chatMessage/chatMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','CmCompany','../api/cmCompany/cmCompany.model','CmContact','CmHopper','../api/cmHopper/cmHopper.model','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','Action','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/schedule/schedule.model','Tag','../api/tag/tag.model','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','AnalyticDefaultReport','AnalyticExtractedReport','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model'];(function(_0x4ef23a,_0x27fb98){var _0xe5d974=function(_0x361278){while(--_0x361278){_0x4ef23a['push'](_0x4ef23a['shift']());}};_0xe5d974(++_0x27fb98);}(_0x91c8,0x13d));var _0x891c=function(_0x463a25,_0x893d60){_0x463a25=_0x463a25-0x0;var _0x2fee6f=_0x91c8[_0x463a25];return _0x2fee6f;};'use strict';var config=require(_0x891c('0x0'));var Sequelize=require(_0x891c('0x1'));var _=require(_0x891c('0x2'));var jstz=require(_0x891c('0x3'));var timezone=jstz[_0x891c('0x4')]();config[_0x891c('0x1')]=_[_0x891c('0x5')](config[_0x891c('0x1')],{'database':_0x891c('0x6'),'username':_0x891c('0x7'),'password':_0x891c('0x8'),'options':{'host':_0x891c('0x9'),'port':0xcea,'dialect':_0x891c('0xa'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0x891c('0xb')](),'define':{'charset':_0x891c('0xc'),'collate':_0x891c('0xd')}}});config[_0x891c('0xe')]=_[_0x891c('0x5')](config['sequelizeHistory'],{'database':_0x891c('0x6'),'username':'xcall','password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':'mysql','dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0x891c('0xb')](),'define':{'charset':_0x891c('0xc'),'collate':_0x891c('0xd')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x891c('0x1')][_0x891c('0xf')],config[_0x891c('0x1')]['username'],config[_0x891c('0x1')][_0x891c('0x10')],config[_0x891c('0x1')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x891c('0xe')]['database'],config[_0x891c('0xe')][_0x891c('0x11')],config[_0x891c('0xe')][_0x891c('0x10')],config[_0x891c('0xe')]['options'])};db[_0x891c('0x12')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x14'));db[_0x891c('0x15')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x16'));db[_0x891c('0x17')]=db[_0x891c('0x1')]['import'](_0x891c('0x18'));db[_0x891c('0x19')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/voiceExtension/voiceExtension.model');db[_0x891c('0x1a')]=db['sequelize'][_0x891c('0x13')]('../api/voiceMusicOnHold/voiceMusicOnHold.model');db['VoiceQueue']=db[_0x891c('0x1')][_0x891c('0x13')]('../api/voiceQueue/voiceQueue.model');db['VoiceRecording']=db['sequelize'][_0x891c('0x13')](_0x891c('0x1b'));db['ScreenRecording']=db[_0x891c('0x1')]['import'](_0x891c('0x1c'));db[_0x891c('0x1d')]=db[_0x891c('0x1')]['import']('../api/voiceMail/voiceMail.model');db[_0x891c('0x1e')]=db[_0x891c('0x1')]['import']('../api/voiceMailMessage/voiceMailMessage.model');db[_0x891c('0x1f')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/voiceCallReport/voiceCallReport.model');db[_0x891c('0x20')]=db[_0x891c('0x1')]['import'](_0x891c('0x21'));db['VoiceAgentReport']=db['sequelize'][_0x891c('0x13')](_0x891c('0x22'));db['VoiceQueueReport']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x23'));db[_0x891c('0x24')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x25'));db['Trunk']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x26'));db['VoiceTransferReport']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x27'));db[_0x891c('0x28')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x29'));db['UserVoiceQueue']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x2a'));db[_0x891c('0x2b')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x2c'));db[_0x891c('0x2d')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x2e'));db[_0x891c('0x2f')]=db[_0x891c('0x1')]['import'](_0x891c('0x30'));db[_0x891c('0x31')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x32'));db['UserOpenchannelQueue']=db[_0x891c('0x1')][_0x891c('0x13')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0x891c('0x33')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x34'));db[_0x891c('0x35')]=db[_0x891c('0x1')]['import'](_0x891c('0x36'));db[_0x891c('0x37')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/mailServerOut/mailServerOut.model');db[_0x891c('0x38')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x39'));db['MailQueue']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x3a'));db[_0x891c('0x3b')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x3c'));db['MailMessage']=db['sequelize'][_0x891c('0x13')](_0x891c('0x3d'));db[_0x891c('0x3e')]=db[_0x891c('0x1')]['import'](_0x891c('0x3f'));db['MailQueueReport']=db[_0x891c('0x1')]['import'](_0x891c('0x40'));db[_0x891c('0x41')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x42'));db[_0x891c('0x43')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/dashboardItem/dashboardItem.model');db[_0x891c('0x44')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/faxAccount/faxAccount.model');db[_0x891c('0x45')]=db[_0x891c('0x1')]['import'](_0x891c('0x46'));db['FaxInteraction']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x47'));db[_0x891c('0x48')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x49'));db[_0x891c('0x4a')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x4b'));db[_0x891c('0x4c')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x4d'));db['SmsAccount']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x4e'));db[_0x891c('0x4f')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x50'));db[_0x891c('0x51')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x52'));db[_0x891c('0x53')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x54'));db['SmsQueue']=db['sequelize'][_0x891c('0x13')](_0x891c('0x55'));db[_0x891c('0x56')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x57'));db['OpenchannelApplication']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x58'));db[_0x891c('0x59')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x5a'));db['OpenchannelMessage']=db[_0x891c('0x1')]['import'](_0x891c('0x5b'));db[_0x891c('0x5c')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x5d'));db[_0x891c('0x5e')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x5f'));db['OpenchannelQueueReport']=db[_0x891c('0x1')]['import'](_0x891c('0x60'));db[_0x891c('0x61')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x62'));db[_0x891c('0x63')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/chatInteraction/chatInteraction.model');db[_0x891c('0x64')]=db['sequelize']['import'](_0x891c('0x65'));db['ChatOfflineMessage']=db[_0x891c('0x1')][_0x891c('0x13')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x891c('0x66')]=db[_0x891c('0x1')]['import'](_0x891c('0x67'));db[_0x891c('0x68')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/chatGroup/chatGroup.model');db[_0x891c('0x69')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/chatProactiveAction/chatProactiveAction.model');db[_0x891c('0x6a')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x6b'));db[_0x891c('0x6c')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/cmContact/cmContact.model');db[_0x891c('0x6d')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x6e'));db['CmHopperBlack']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x6f'));db[_0x891c('0x70')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x71'));db['CmHopperHistory']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x72'));db[_0x891c('0x73')]=db[_0x891c('0x1')]['import']('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db[_0x891c('0x1')][_0x891c('0x13')]('../api/cmCustomField/cmCustomField.model');db[_0x891c('0x74')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/action/action.model');db[_0x891c('0x75')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x76'));db['CannedAnswer']=db[_0x891c('0x1')]['import'](_0x891c('0x77'));db[_0x891c('0x78')]=db['sequelize'][_0x891c('0x13')]('../api/disposition/disposition.model');db['Condition']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x79'));db[_0x891c('0x7a')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x7b'));db[_0x891c('0x7c')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x7d'));db[_0x891c('0x7e')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x7f'));db['VoiceQueuesLog']=db[_0x891c('0x1')][_0x891c('0x13')]('../api/voiceQueuesLog/voiceQueuesLog.model');db['Schedule']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x80'));db['Sound']=db['sequelize'][_0x891c('0x13')]('../api/sound/sound.model');db[_0x891c('0x81')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x82'));db['Template']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x83'));db[_0x891c('0x84')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x85'));db[_0x891c('0x86')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/variable/variable.model');db[_0x891c('0x87')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x88'));db[_0x891c('0x89')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x8a'));db[_0x891c('0x8b')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/analyticCustomReport/analyticCustomReport.model');db[_0x891c('0x8c')]=db['sequelize'][_0x891c('0x13')]('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0x891c('0x8d')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/analyticExtractedReport/analyticExtractedReport.model');db[_0x891c('0x8e')]=db[_0x891c('0x1')]['import'](_0x891c('0x8f'));db[_0x891c('0x90')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x91'));db[_0x891c('0x92')]=db[_0x891c('0x1')]['import'](_0x891c('0x93'));db['SalesforceAccount']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x94'));db['SalesforceConfiguration']=db['sequelize'][_0x891c('0x13')](_0x891c('0x95'));db[_0x891c('0x96')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x97'));db[_0x891c('0x98')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x99'));db['SugarcrmConfiguration']=db[_0x891c('0x1')]['import'](_0x891c('0x9a'));db[_0x891c('0x9b')]=db['sequelize']['import']('../api/intSugarcrmField/intSugarcrmField.model');db['DeskAccount']=db[_0x891c('0x1')]['import'](_0x891c('0x9c'));db[_0x891c('0x9d')]=db['sequelize'][_0x891c('0x13')]('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x891c('0x9e')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x9f'));db[_0x891c('0xa0')]=db[_0x891c('0x1')]['import'](_0x891c('0xa1'));db[_0x891c('0xa2')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/intZohoConfiguration/intZohoConfiguration.model');db[_0x891c('0xa3')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/intZohoField/intZohoField.model');db[_0x891c('0xa4')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xa5'));db[_0x891c('0xa6')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xa7'));db[_0x891c('0xa8')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xa9'));db[_0x891c('0xaa')]=db['sequelize'][_0x891c('0x13')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0x891c('0xab')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xac'));db['FreshdeskField']=db[_0x891c('0x1')][_0x891c('0x13')]('../api/intFreshdeskField/intFreshdeskField.model');db[_0x891c('0xad')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xae'));db[_0x891c('0xaf')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xb0'));db[_0x891c('0xb1')]=db[_0x891c('0x1')]['import']('../api/intVtigerField/intVtigerField.model');db['ServicenowAccount']=db['sequelize']['import'](_0x891c('0xb2'));db[_0x891c('0xb3')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xb4'));db[_0x891c('0xb5')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/intServicenowField/intServicenowField.model');db['Dynamics365Account']=db[_0x891c('0x1')]['import'](_0x891c('0xb6'));db[_0x891c('0xb7')]=db[_0x891c('0x1')]['import'](_0x891c('0xb8'));db[_0x891c('0xb9')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xba'));db[_0x891c('0xbb')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xbc'));db[_0x891c('0xbd')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xbe'));db[_0x891c('0xbf')]=db[_0x891c('0x1')]['import'](_0x891c('0xc0'));db[_0x891c('0x87')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x88'));db[_0x891c('0xc1')]=db['sequelize'][_0x891c('0x13')]('../api/network/network.model');db[_0x891c('0xc2')]=db['sequelize'][_0x891c('0x13')](_0x891c('0xc3'));db[_0x891c('0xc4')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xc5'));db[_0x891c('0xc6')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xc7'));db[_0x891c('0xc8')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xc9'));db[_0x891c('0xca')]=db[_0x891c('0x1')]['import']('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0x891c('0xcb')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xcc'));db[_0x891c('0xcd')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xce'));db[_0x891c('0xcf')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/squareReportDetail/squareReportDetail.model');db[_0x891c('0xd0')]=db['sequelize'][_0x891c('0x13')](_0x891c('0xd1'));db[_0x891c('0xd2')]=db['sequelize']['import']('../api/setting/setting.model');db[_0x891c('0xd3')]=db['sequelize'][_0x891c('0x13')]('../api/squareOdbc/squareOdbc.model');db['SquareProject']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xd4'));db[_0x891c('0xd5')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xd6'));db['SquareMessage']=db['sequelize'][_0x891c('0x13')]('../api/squareMessage/squareMessage.model');db[_0x891c('0xd7')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/team/team.model');db[_0x891c('0xd8')]=db[_0x891c('0x1')]['import']('../api/license/license.model');db['Campaign']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xd9'));db[_0x891c('0xda')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xdb'));db[_0x891c('0xdc')]=db[_0x891c('0x1')]['import'](_0x891c('0xdd'));db[_0x891c('0xde')]=db['sequelize'][_0x891c('0x13')](_0x891c('0xdf'));db[_0x891c('0xe0')]=db['sequelize'][_0x891c('0x13')](_0x891c('0xe1'));db[_0x891c('0xe2')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/chatTransferReport/chatTransferReport.model');db[_0x891c('0xe3')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xe4'));db[_0x891c('0xe5')]=db['sequelize']['import'](_0x891c('0xe6'));db['SmsTransferReport']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xe7'));db['CmList']=db[_0x891c('0x1')]['import']('../api/cmList/cmList.model');db['VoicePrefix']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xe8'));db[_0x891c('0xe9')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/userProfile/userProfile.model');db[_0x891c('0xea')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xeb'));db['UserProfileResource']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xec'));db[_0x891c('0xed')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xee'));db['WhatsappAccount']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xef'));db[_0x891c('0xf0')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/whatsappApplication/whatsappApplication.model');db[_0x891c('0xf1')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/whatsappInteraction/whatsappInteraction.model');db[_0x891c('0xf2')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xf3'));db[_0x891c('0xf4')]=db['sequelize'][_0x891c('0x13')](_0x891c('0xf5'));db[_0x891c('0xf6')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/whatsappTransferReport/whatsappTransferReport.model');db['WhatsappQueue']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xf7'));db[_0x891c('0xf8')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xf9'));db[_0x891c('0xfa')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xfb'));db['User'][_0x891c('0xfc')](db['VoiceMail'],{'as':_0x891c('0x1d'),'onDelete':'cascade','foreignKey':_0x891c('0xfd')});db[_0x891c('0x12')][_0x891c('0xfe')](db[_0x891c('0xff')],{'as':_0x891c('0x100'),'foreignKey':'UserId'});db[_0x891c('0x12')][_0x891c('0xfe')](db[_0x891c('0x28')],{'as':_0x891c('0x101'),'foreignKey':'UserId'});db[_0x891c('0x12')]['hasMany'](db[_0x891c('0x19')],{'as':_0x891c('0x102'),'onDelete':_0x891c('0x103'),'hooks':!![]});db[_0x891c('0x12')][_0x891c('0xfe')](db[_0x891c('0x70')],{'as':'HopperFinals','foreignKey':_0x891c('0xfd')});db[_0x891c('0x12')]['hasMany'](db[_0x891c('0x104')],{'as':_0x891c('0x105'),'foreignKey':_0x891c('0xfd')});db['User'][_0x891c('0xfe')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0x891c('0xfd')});db[_0x891c('0x12')]['hasMany'](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','foreignKey':_0x891c('0xfd')});db['User']['hasMany'](db[_0x891c('0x63')],{'as':_0x891c('0x106'),'foreignKey':'UserId'});db[_0x891c('0x12')][_0x891c('0xfe')](db[_0x891c('0x51')],{'as':_0x891c('0x107'),'foreignKey':_0x891c('0xfd')});db['User'][_0x891c('0xfe')](db['FaxInteraction'],{'as':_0x891c('0x108'),'foreignKey':_0x891c('0xfd')});db['User'][_0x891c('0xfe')](db[_0x891c('0x109')],{'as':_0x891c('0x10a'),'foreignKey':_0x891c('0xfd')});db[_0x891c('0x12')]['hasMany'](db[_0x891c('0xf1')],{'as':_0x891c('0x10b'),'foreignKey':_0x891c('0xfd')});db['User'][_0x891c('0xfe')](db['UserNotification'],{'as':_0x891c('0x10c'),'foreignKey':_0x891c('0x10d')});db[_0x891c('0x12')][_0x891c('0x10e')](db[_0x891c('0xe9')],{'as':_0x891c('0xe9'),'foreignKey':_0x891c('0x10f')});db['User'][_0x891c('0x110')](db['ChatGroup'],{'as':'Groups','through':_0x891c('0x111')});db[_0x891c('0x12')][_0x891c('0x110')](db['CmContact'],{'as':_0x891c('0x112'),'through':_0x891c('0x113')});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x114')],{'as':_0x891c('0x115'),'through':_0x891c('0x116')});db[_0x891c('0x12')][_0x891c('0x110')](db[_0x891c('0xd7')],{'through':_0x891c('0x117')});db[_0x891c('0x12')][_0x891c('0x110')](db['MailInteraction'],{'as':'MailInteractions','through':_0x891c('0x118')});db['User'][_0x891c('0x110')](db[_0x891c('0x63')],{'as':_0x891c('0x106'),'through':_0x891c('0x119')});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x11a')],{'as':'FaxInteractions','through':_0x891c('0x11b')});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x51')],{'as':_0x891c('0x107'),'through':_0x891c('0x11c')});db['User'][_0x891c('0x110')](db['OpenchannelInteraction'],{'as':_0x891c('0x11d'),'through':_0x891c('0x11e')});db['User'][_0x891c('0x110')](db[_0x891c('0xf1')],{'as':'WhatsappInteractions','through':_0x891c('0x11f')});db['User'][_0x891c('0x110')](db[_0x891c('0x120')],{'as':_0x891c('0x121'),'through':_0x891c('0x122'),'required':![]});db[_0x891c('0x12')][_0x891c('0x110')](db['MailQueue'],{'as':'MailQueues','through':_0x891c('0x2d'),'required':![]});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x66')],{'as':_0x891c('0x123'),'through':_0x891c('0x2b'),'required':![],'hooks':!![]});db['User'][_0x891c('0x110')](db[_0x891c('0x4a')],{'as':_0x891c('0x124'),'through':_0x891c('0x2f'),'required':![]});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x125')],{'as':_0x891c('0x126'),'through':'UserSmsQueue','required':![]});db['User'][_0x891c('0x110')](db[_0x891c('0x5c')],{'as':_0x891c('0x127'),'through':_0x891c('0x128'),'required':![]});db[_0x891c('0x12')][_0x891c('0x110')](db[_0x891c('0x129')],{'as':_0x891c('0x12a'),'through':_0x891c('0x33'),'required':![]});db[_0x891c('0x12')][_0x891c('0x110')](db[_0x891c('0x114')],{'through':_0x891c('0x116')});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x12b')],{'as':_0x891c('0x12c'),'through':'user_has_voice_prefixes','required':![]});db['User'][_0x891c('0x110')](db[_0x891c('0x5e')],{'as':_0x891c('0x12d'),'through':_0x891c('0x12e')});db['User'][_0x891c('0x110')](db[_0x891c('0x44')],{'as':'FaxAccounts','through':_0x891c('0x12f')});db['User'][_0x891c('0x110')](db[_0x891c('0x38')],{'as':_0x891c('0x130'),'through':_0x891c('0x131')});db['User'][_0x891c('0x110')](db[_0x891c('0x56')],{'as':'OpenchannelAccounts','through':_0x891c('0x132')});db['User']['belongsToMany'](db[_0x891c('0x133')],{'as':_0x891c('0x134'),'through':_0x891c('0x135')});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x136')],{'as':'WhatsappAccounts','through':_0x891c('0x137')});db['User']['belongsToMany'](db[_0x891c('0x138')],{'as':_0x891c('0x139'),'through':_0x891c('0x13a')});db[_0x891c('0x15')][_0x891c('0xfe')](db['VoiceExtension'],{'as':_0x891c('0x13b'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x13c')});db['VoiceContext'][_0x891c('0xfe')](db['VoiceExtension'],{'onDelete':'cascade'});db[_0x891c('0x19')][_0x891c('0xfe')](db[_0x891c('0x19')],{'as':'Applications','onDelete':_0x891c('0x103')});db['VoiceMusicOnHold']['belongsToMany'](db[_0x891c('0x13d')],{'as':_0x891c('0x13e'),'through':_0x891c('0x13f')});db[_0x891c('0x120')][_0x891c('0xfe')](db[_0x891c('0x28')],{'as':_0x891c('0x140'),'foreignKey':_0x891c('0x141')});db[_0x891c('0x120')][_0x891c('0xfe')](db[_0x891c('0x6d')],{'as':_0x891c('0x142'),'foreignKey':_0x891c('0x141')});db[_0x891c('0x120')][_0x891c('0xfe')](db[_0x891c('0x70')],{'as':_0x891c('0x143'),'foreignKey':'VoiceQueueId'});db[_0x891c('0x120')]['hasMany'](db[_0x891c('0x104')],{'as':_0x891c('0x144'),'foreignKey':_0x891c('0x141')});db[_0x891c('0x120')][_0x891c('0xfe')](db[_0x891c('0x73')],{'as':_0x891c('0x73'),'foreignKey':_0x891c('0x141')});db[_0x891c('0x120')][_0x891c('0xfe')](db['CmHopperBlack'],{'as':_0x891c('0x145'),'foreignKey':_0x891c('0x141')});db[_0x891c('0x120')][_0x891c('0xfe')](db[_0x891c('0xca')],{'as':_0x891c('0x146'),'foreignKey':_0x891c('0x141')});db['VoiceQueue']['belongsTo'](db[_0x891c('0x147')],{'as':'Trunk','foreignKey':_0x891c('0x148')});db[_0x891c('0x120')]['belongsTo'](db[_0x891c('0x147')],{'as':'TrunkBackup','foreignKey':_0x891c('0x149')});db[_0x891c('0x120')][_0x891c('0x10e')](db['Interval'],{'as':_0x891c('0x7a'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0x120')]['belongsTo'](db[_0x891c('0x7c')],{'as':'mandatoryDispositionPause','foreignKey':_0x891c('0x14b')});db['VoiceQueue'][_0x891c('0x110')](db[_0x891c('0x114')],{'as':_0x891c('0x115'),'through':_0x891c('0x14c')});db[_0x891c('0x120')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':'Agents','through':_0x891c('0x122')});db[_0x891c('0x120')][_0x891c('0x110')](db['Team'],{'as':_0x891c('0x14d'),'through':_0x891c('0xfa')});db['VoiceQueue'][_0x891c('0x110')](db[_0x891c('0x114')],{'as':_0x891c('0x14e'),'through':_0x891c('0x14f')});db[_0x891c('0xff')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x12'),'foreignKey':_0x891c('0xfd')});db[_0x891c('0x150')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x12'),'foreignKey':_0x891c('0xfd')});db[_0x891c('0x1d')][_0x891c('0xfe')](db[_0x891c('0x1e')],{'as':'Messages','onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x151'),'sourceKey':'mailbox'});db[_0x891c('0x1e')][_0x891c('0x10e')](db['VoiceMail'],{'foreignKey':_0x891c('0x151'),'targetKey':'mailbox'});db[_0x891c('0x1f')][_0x891c('0xfe')](db[_0x891c('0x152')],{'as':_0x891c('0x153'),'foreignKey':_0x891c('0x154'),'constraints':![]});db[_0x891c('0x1f')]['hasMany'](db[_0x891c('0x155')],{'as':_0x891c('0x156'),'foreignKey':_0x891c('0x154'),'constraints':![]});db['VoiceCallReport'][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':'User','foreignKey':_0x891c('0xfd')});db['VoiceCallReport']['belongsTo'](db[_0x891c('0x6c')],{'as':'Contact','foreignKey':'ContactId'});db[_0x891c('0x35')][_0x891c('0x10e')](db[_0x891c('0x38')],{'as':_0x891c('0x38'),'foreignKey':'MailAccountId'});db[_0x891c('0x37')]['belongsTo'](db[_0x891c('0x38')],{'as':_0x891c('0x38'),'foreignKey':_0x891c('0x157')});db[_0x891c('0x38')]['hasOne'](db[_0x891c('0x35')],{'as':_0x891c('0x158'),'onDelete':_0x891c('0x103')});db[_0x891c('0x38')]['hasOne'](db[_0x891c('0x37')],{'as':'Smtp','onDelete':_0x891c('0x103')});db[_0x891c('0x38')][_0x891c('0xfe')](db[_0x891c('0x78')],{'as':_0x891c('0x159'),'foreignKey':_0x891c('0x157'),'onDelete':_0x891c('0x103')});db[_0x891c('0x38')][_0x891c('0xfe')](db[_0x891c('0x15a')],{'as':_0x891c('0x15b'),'foreignKey':_0x891c('0x157')});db[_0x891c('0x38')][_0x891c('0xfe')](db['MailMessage'],{'as':_0x891c('0x15c'),'foreignKey':_0x891c('0x157')});db[_0x891c('0x38')]['hasMany'](db[_0x891c('0x109')],{'as':_0x891c('0x15d')});db[_0x891c('0x38')][_0x891c('0xfe')](db[_0x891c('0x3e')],{'as':_0x891c('0x15e')});db[_0x891c('0x38')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':'ListId'});db['MailAccount'][_0x891c('0x10e')](db[_0x891c('0x160')],{'as':'Template','foreignKey':_0x891c('0x161')});db['MailAccount'][_0x891c('0x10e')](db[_0x891c('0x7c')],{'as':_0x891c('0x162'),'foreignKey':_0x891c('0x14b')});db[_0x891c('0x38')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x131')});db[_0x891c('0x164')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':'UserMailQueue'});db[_0x891c('0x164')]['belongsToMany'](db[_0x891c('0xd7')],{'through':_0x891c('0x165'),'as':_0x891c('0x14d')});db['MailInteraction'][_0x891c('0xfe')](db[_0x891c('0x166')],{'as':_0x891c('0x15c'),'onDelete':'cascade','foreignKey':_0x891c('0x167')});db[_0x891c('0x109')]['belongsTo'](db[_0x891c('0x38')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x157')});db[_0x891c('0x109')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':'ContactId'});db[_0x891c('0x109')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':'Owner','foreignKey':_0x891c('0xfd')});db[_0x891c('0x109')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x16a'),'as':_0x891c('0x16b')});db[_0x891c('0x109')]['belongsToMany'](db[_0x891c('0x81')],{'through':_0x891c('0x16a'),'as':'ThroughTags'});db['MailInteraction']['belongsToMany'](db['User'],{'as':_0x891c('0x16c'),'through':_0x891c('0x118'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x891c('0xfe')](db[_0x891c('0xdc')],{'as':'Attachments','onDelete':_0x891c('0x103')});db[_0x891c('0x166')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':'User'});db[_0x891c('0x166')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169')});db[_0x891c('0x166')][_0x891c('0x10e')](db[_0x891c('0x109')],{'as':'Interaction','foreignKey':'MailInteractionId'});db[_0x891c('0x166')][_0x891c('0x10e')](db[_0x891c('0x38')],{'as':'Account','foreignKey':_0x891c('0x157')});db[_0x891c('0x166')][_0x891c('0x10e')](db[_0x891c('0x5e')],{'as':_0x891c('0x5e'),'foreignKey':_0x891c('0x16d')});db[_0x891c('0x166')][_0x891c('0x10e')](db[_0x891c('0x16e')],{'as':_0x891c('0x16e'),'foreignKey':_0x891c('0x16f')});db['MailApplication']['belongsTo'](db[_0x891c('0x12')],{'onDelete':'restrict'});db[_0x891c('0x3e')][_0x891c('0x10e')](db[_0x891c('0x164')],{'onDelete':_0x891c('0x170')});db[_0x891c('0x3e')]['belongsTo'](db[_0x891c('0x38')],{'onDelete':_0x891c('0x170')});db[_0x891c('0x3e')][_0x891c('0x10e')](db['Interval'],{'onDelete':_0x891c('0x170'),'foreignKey':'IntervalId'});db['MailApplication'][_0x891c('0x10e')](db[_0x891c('0x81')],{'onDelete':'restrict','foreignKey':_0x891c('0x171')});db[_0x891c('0x172')][_0x891c('0x10e')](db['MailAccount'],{});db[_0x891c('0x172')][_0x891c('0x10e')](db['CmList'],{'as':_0x891c('0x15f'),'foreignKey':'ListId'});db[_0x891c('0x172')][_0x891c('0x10e')](db['CmContact'],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db['MailQueueReport'][_0x891c('0x10e')](db[_0x891c('0x109')],{});db['MailQueueReport'][_0x891c('0x10e')](db[_0x891c('0x166')],{});db['MailQueueReport'][_0x891c('0x10e')](db[_0x891c('0x12')],{});db[_0x891c('0x172')][_0x891c('0x10e')](db['MailQueue'],{});db[_0x891c('0x41')][_0x891c('0xfe')](db['DashboardItem'],{'as':_0x891c('0x174'),'onDelete':_0x891c('0x103')});db[_0x891c('0x44')]['hasMany'](db[_0x891c('0x78')],{'as':_0x891c('0x159'),'foreignKey':_0x891c('0x175'),'onDelete':'cascade'});db[_0x891c('0x44')][_0x891c('0xfe')](db[_0x891c('0x15a')],{'as':_0x891c('0x15b'),'foreignKey':'FaxAccountId'});db['FaxAccount'][_0x891c('0xfe')](db[_0x891c('0x11a')],{'as':_0x891c('0x15d')});db[_0x891c('0x44')][_0x891c('0xfe')](db['FaxApplication'],{'as':_0x891c('0x15e')});db['FaxAccount']['hasMany'](db['VoiceExtension'],{'as':_0x891c('0x176'),'onDelete':_0x891c('0x103')});db['FaxAccount']['hasMany'](db[_0x891c('0x48')],{'as':_0x891c('0x15c')});db[_0x891c('0x44')][_0x891c('0x10e')](db[_0x891c('0x147')],{'as':_0x891c('0x147')});db[_0x891c('0x44')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':'ListId'});db[_0x891c('0x44')][_0x891c('0x10e')](db[_0x891c('0x7c')],{'as':_0x891c('0x162'),'foreignKey':_0x891c('0x14b')});db[_0x891c('0x44')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x12f')});db[_0x891c('0x45')][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':'restrict'});db[_0x891c('0x45')][_0x891c('0x10e')](db[_0x891c('0x4a')],{'onDelete':'restrict'});db[_0x891c('0x45')][_0x891c('0x10e')](db['FaxAccount'],{'onDelete':'restrict'});db[_0x891c('0x45')][_0x891c('0x10e')](db['Tag'],{'onDelete':'restrict','foreignKey':_0x891c('0x171')});db['FaxInteraction'][_0x891c('0xfe')](db['FaxMessage'],{'as':_0x891c('0x15c'),'onDelete':_0x891c('0x103'),'foreignKey':'FaxInteractionId'});db[_0x891c('0x11a')][_0x891c('0x10e')](db[_0x891c('0x44')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x175')});db['FaxInteraction'][_0x891c('0x10e')](db['CmContact'],{'as':'Contact','foreignKey':_0x891c('0x173')});db[_0x891c('0x11a')][_0x891c('0x10e')](db['User'],{'as':_0x891c('0x177'),'foreignKey':_0x891c('0xfd')});db['FaxInteraction'][_0x891c('0x110')](db['Tag'],{'through':_0x891c('0x178'),'as':_0x891c('0x16b')});db[_0x891c('0x11a')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x178'),'as':'ThroughTags'});db['FaxInteraction'][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x16c'),'through':_0x891c('0x11b'),'foreignKey':'FaxInteractionId'});db['FaxMessage'][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':'cascade','as':_0x891c('0x12')});db[_0x891c('0x48')][_0x891c('0x10e')](db[_0x891c('0x11a')],{'as':_0x891c('0x179'),'foreignKey':_0x891c('0x17a')});db[_0x891c('0x48')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169')});db[_0x891c('0x48')][_0x891c('0x10e')](db['Attachment'],{'as':_0x891c('0xdc'),'foreignKey':'AttachmentId'});db[_0x891c('0x48')][_0x891c('0x10e')](db[_0x891c('0x44')],{'as':_0x891c('0x168'),'foreignKey':'FaxAccountId'});db[_0x891c('0x4a')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':'UserFaxQueue'});db['FaxQueue']['belongsToMany'](db[_0x891c('0xd7')],{'through':'team_has_fax_queues','as':_0x891c('0x14d')});db[_0x891c('0x4c')][_0x891c('0x10e')](db[_0x891c('0x44')],{});db[_0x891c('0x4c')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':_0x891c('0x17b')});db[_0x891c('0x4c')]['belongsTo'](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x4c')][_0x891c('0x10e')](db[_0x891c('0x11a')],{});db[_0x891c('0x4c')][_0x891c('0x10e')](db['FaxMessage'],{});db[_0x891c('0x4c')][_0x891c('0x10e')](db[_0x891c('0x12')],{});db['FaxQueueReport']['belongsTo'](db[_0x891c('0x4a')],{});db['SmsAccount'][_0x891c('0xfe')](db[_0x891c('0x78')],{'as':_0x891c('0x159'),'foreignKey':'SmsAccountId','onDelete':'cascade'});db[_0x891c('0x133')][_0x891c('0xfe')](db[_0x891c('0x15a')],{'as':_0x891c('0x15b'),'foreignKey':_0x891c('0x17c')});db[_0x891c('0x133')][_0x891c('0xfe')](db[_0x891c('0x53')],{'as':'Messages','foreignKey':_0x891c('0x17c')});db[_0x891c('0x133')]['hasMany'](db[_0x891c('0x51')],{'as':_0x891c('0x15d')});db[_0x891c('0x133')]['hasMany'](db[_0x891c('0x4f')],{'as':_0x891c('0x15e')});db[_0x891c('0x133')]['belongsTo'](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':_0x891c('0x17b')});db['SmsAccount']['belongsTo'](db[_0x891c('0x7c')],{'as':_0x891c('0x162'),'foreignKey':_0x891c('0x14b')});db['SmsAccount'][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x135')});db['SmsApplication'][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':'restrict'});db['SmsApplication'][_0x891c('0x10e')](db['SmsQueue'],{'onDelete':_0x891c('0x170')});db['SmsApplication'][_0x891c('0x10e')](db[_0x891c('0x133')],{'onDelete':_0x891c('0x170')});db[_0x891c('0x4f')][_0x891c('0x10e')](db[_0x891c('0x7a')],{'onDelete':_0x891c('0x170'),'foreignKey':'IntervalId'});db[_0x891c('0x4f')][_0x891c('0x10e')](db[_0x891c('0x81')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x171')});db[_0x891c('0x51')]['hasMany'](db[_0x891c('0x53')],{'as':'Messages','onDelete':_0x891c('0x103'),'foreignKey':'SmsInteractionId'});db[_0x891c('0x51')]['belongsTo'](db['SmsAccount'],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x17c')});db[_0x891c('0x51')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x51')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x177'),'foreignKey':_0x891c('0xfd')});db[_0x891c('0x51')][_0x891c('0x110')](db['Tag'],{'through':_0x891c('0x17d'),'as':_0x891c('0x16b')});db[_0x891c('0x51')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x17d'),'as':_0x891c('0x17e')});db[_0x891c('0x51')]['belongsToMany'](db[_0x891c('0x12')],{'as':'Users','through':_0x891c('0x11c'),'foreignKey':_0x891c('0x17f')});db[_0x891c('0x53')][_0x891c('0x10e')](db['User'],{'as':_0x891c('0x12')});db[_0x891c('0x53')][_0x891c('0x10e')](db['CmContact'],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169')});db[_0x891c('0x53')][_0x891c('0x10e')](db[_0x891c('0x51')],{'onDelete':_0x891c('0x103'),'as':'Interaction','foreignKey':_0x891c('0x17f')});db[_0x891c('0x53')]['belongsTo'](db[_0x891c('0x133')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x17c')});db[_0x891c('0x125')][_0x891c('0x110')](db['User'],{'as':'Agents','through':_0x891c('0x31'),'foreignKey':_0x891c('0x180')});db[_0x891c('0x125')]['belongsToMany'](db[_0x891c('0xd7')],{'through':'team_has_sms_queues','as':'Teams'});db[_0x891c('0x56')]['hasMany'](db[_0x891c('0x78')],{'as':'Dispositions','foreignKey':_0x891c('0x181'),'onDelete':'cascade'});db['OpenchannelAccount']['hasMany'](db['CannedAnswer'],{'as':_0x891c('0x15b'),'foreignKey':_0x891c('0x181')});db[_0x891c('0x56')]['hasMany'](db[_0x891c('0x59')],{'as':'Interactions','foreignKey':_0x891c('0x181')});db[_0x891c('0x56')][_0x891c('0xfe')](db[_0x891c('0x182')],{'as':_0x891c('0x15c'),'foreignKey':_0x891c('0x181')});db['OpenchannelAccount'][_0x891c('0xfe')](db[_0x891c('0x183')],{'as':_0x891c('0x15e'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':'ListId'});db[_0x891c('0x56')][_0x891c('0x10e')](db['Pause'],{'as':_0x891c('0x162'),'foreignKey':_0x891c('0x14b')});db[_0x891c('0x56')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':'Agents','through':_0x891c('0x132')});db[_0x891c('0x183')][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':_0x891c('0x170')});db['OpenchannelApplication']['belongsTo'](db[_0x891c('0x5c')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x184')});db[_0x891c('0x183')][_0x891c('0x10e')](db[_0x891c('0x56')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x181')});db[_0x891c('0x183')]['belongsTo'](db[_0x891c('0x7a')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0x183')]['belongsTo'](db['Tag'],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x171')});db[_0x891c('0x59')][_0x891c('0xfe')](db[_0x891c('0x182')],{'as':_0x891c('0x15c'),'onDelete':_0x891c('0x103'),'foreignKey':'OpenchannelInteractionId'});db['OpenchannelInteraction'][_0x891c('0x10e')](db[_0x891c('0x56')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x181')});db[_0x891c('0x59')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':'ContactId'});db[_0x891c('0x59')]['belongsTo'](db[_0x891c('0x12')],{'as':_0x891c('0x177'),'foreignKey':_0x891c('0xfd')});db[_0x891c('0x59')]['belongsToMany'](db[_0x891c('0x81')],{'through':_0x891c('0x185'),'as':_0x891c('0x16b')});db['OpenchannelInteraction'][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x185'),'as':_0x891c('0x17e')});db[_0x891c('0x59')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x16c'),'through':_0x891c('0x11e'),'foreignKey':_0x891c('0x186')});db['OpenchannelMessage']['belongsTo'](db['User'],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x12')});db[_0x891c('0x182')][_0x891c('0x10e')](db['CmContact'],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169')});db[_0x891c('0x182')][_0x891c('0x10e')](db[_0x891c('0x59')],{'onDelete':_0x891c('0x103'),'as':'Interaction','foreignKey':_0x891c('0x186')});db['OpenchannelMessage']['belongsTo'](db[_0x891c('0xdc')],{'as':_0x891c('0xdc'),'foreignKey':_0x891c('0x187')});db['OpenchannelMessage'][_0x891c('0x10e')](db[_0x891c('0x56')],{'as':_0x891c('0x168'),'foreignKey':'OpenchannelAccountId'});db[_0x891c('0x5c')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x128'),'foreignKey':_0x891c('0x184')});db[_0x891c('0x5c')]['belongsToMany'](db[_0x891c('0xd7')],{'through':_0x891c('0x188'),'as':_0x891c('0x14d')});db[_0x891c('0x5e')]['hasMany'](db['Disposition'],{'as':'Dispositions','foreignKey':'ChatWebsiteId','onDelete':_0x891c('0x103')});db[_0x891c('0x5e')][_0x891c('0xfe')](db['CannedAnswer'],{'as':'Answers','foreignKey':_0x891c('0x16d')});db['ChatWebsite'][_0x891c('0xfe')](db[_0x891c('0x69')],{'as':_0x891c('0x189')});db[_0x891c('0x5e')]['hasMany'](db['ChatInteraction'],{'as':'Interactions'});db[_0x891c('0x5e')][_0x891c('0xfe')](db[_0x891c('0x61')],{'as':_0x891c('0x15e')});db[_0x891c('0x5e')][_0x891c('0xfe')](db['ChatMessage'],{'as':_0x891c('0x15c')});db[_0x891c('0x5e')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':'List','foreignKey':'ListId'});db[_0x891c('0x5e')][_0x891c('0x10e')](db['Interval'],{'as':_0x891c('0x7a'),'foreignKey':'IntervalId'});db['ChatWebsite'][_0x891c('0x10e')](db['MailAccount'],{'as':_0x891c('0x38'),'foreignKey':_0x891c('0x157')});db[_0x891c('0x5e')][_0x891c('0x10e')](db[_0x891c('0x7c')],{'as':_0x891c('0x162'),'foreignKey':_0x891c('0x14b')});db[_0x891c('0x5e')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':'Agents','through':_0x891c('0x12e')});db[_0x891c('0x18a')]['belongsTo'](db[_0x891c('0x56')],{});db[_0x891c('0x18a')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':_0x891c('0x17b')});db['OpenchannelQueueReport'][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':'Contact','foreignKey':_0x891c('0x173')});db['OpenchannelQueueReport'][_0x891c('0x10e')](db[_0x891c('0x59')],{});db[_0x891c('0x18a')][_0x891c('0x10e')](db['OpenchannelMessage'],{});db[_0x891c('0x18a')]['belongsTo'](db[_0x891c('0x12')],{});db[_0x891c('0x18a')][_0x891c('0x10e')](db[_0x891c('0x5c')],{});db[_0x891c('0x61')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x18b'),'foreignKey':_0x891c('0xfd'),'onDelete':'restrict'});db[_0x891c('0x61')][_0x891c('0x10e')](db['ChatQueue'],{'as':_0x891c('0x18c'),'foreignKey':'ChatQueueId','onDelete':_0x891c('0x170')});db[_0x891c('0x61')][_0x891c('0x10e')](db[_0x891c('0x5e')],{'as':'Website','foreignKey':_0x891c('0x16d'),'onDelete':_0x891c('0x170')});db[_0x891c('0x61')][_0x891c('0x10e')](db[_0x891c('0x81')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x171')});db[_0x891c('0x63')][_0x891c('0xfe')](db[_0x891c('0x64')],{'as':_0x891c('0x15c'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x18d')});db[_0x891c('0x63')][_0x891c('0x10e')](db[_0x891c('0x5e')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x16d')});db[_0x891c('0x63')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x63')]['belongsTo'](db[_0x891c('0x12')],{'as':_0x891c('0x177'),'foreignKey':_0x891c('0xfd')});db[_0x891c('0x63')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x18e'),'as':_0x891c('0x16b')});db[_0x891c('0x63')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x18e'),'as':'ThroughTags'});db[_0x891c('0x63')][_0x891c('0x110')](db['User'],{'as':_0x891c('0x16c'),'through':'user_has_chat_interactions','foreignKey':_0x891c('0x18d')});db[_0x891c('0x64')][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':'cascade','as':_0x891c('0x12')});db['ChatMessage']['belongsTo'](db[_0x891c('0x6c')],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x64')][_0x891c('0x10e')](db[_0x891c('0x63')],{'onDelete':_0x891c('0x103'),'as':'Interaction','foreignKey':'ChatInteractionId'});db[_0x891c('0x64')][_0x891c('0x10e')](db[_0x891c('0xdc')],{'as':'Attachment','foreignKey':_0x891c('0x187')});db['ChatMessage'][_0x891c('0x10e')](db['ChatWebsite'],{'as':_0x891c('0x168'),'foreignKey':'ChatWebsiteId'});db[_0x891c('0x16e')][_0x891c('0xfe')](db[_0x891c('0xdc')],{'as':_0x891c('0x18f'),'foreignKey':_0x891c('0x16f'),'onDelete':_0x891c('0x103'),'hooks':!![]});db[_0x891c('0x16e')]['belongsTo'](db[_0x891c('0x6c')],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169'),'foreignKey':'ContactId'});db[_0x891c('0x16e')]['belongsTo'](db[_0x891c('0x5e')],{'as':'Account','foreignKey':_0x891c('0x16d')});db['ChatQueue'][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x2b'),'hooks':!![]});db[_0x891c('0x66')][_0x891c('0x110')](db[_0x891c('0xd7')],{'through':_0x891c('0x190'),'as':_0x891c('0x14d')});db[_0x891c('0x68')][_0x891c('0xfe')](db[_0x891c('0xc4')],{'as':_0x891c('0x15c'),'foreignKey':'ChatGroupId','onDelete':'cascade'});db['ChatGroup'][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x140'),'through':_0x891c('0x111')});db['ChatProactiveAction']['belongsTo'](db['ChatWebsite'],{'as':_0x891c('0x191'),'foreignKey':'ChatWebsiteId'});db[_0x891c('0x6a')][_0x891c('0xfe')](db[_0x891c('0x6c')],{'as':_0x891c('0x112'),'foreignKey':_0x891c('0x192')});db[_0x891c('0x6c')][_0x891c('0xfe')](db['CmHopper'],{'as':_0x891c('0x142'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x6c')][_0x891c('0xfe')](db[_0x891c('0x70')],{'as':_0x891c('0x143'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x6c')][_0x891c('0xfe')](db[_0x891c('0x104')],{'as':_0x891c('0x144'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x6c')][_0x891c('0xfe')](db['ReportAgentPreview'],{'as':_0x891c('0x73'),'foreignKey':_0x891c('0x173')});db['CmContact'][_0x891c('0xfe')](db[_0x891c('0xca')],{'as':'JscriptySessions','foreignKey':_0x891c('0x173')});db['CmContact'][_0x891c('0xfe')](db[_0x891c('0x59')],{'as':'OpenchannelInteractions','foreignKey':_0x891c('0x173'),'onDelete':_0x891c('0x170')});db[_0x891c('0x6c')][_0x891c('0xfe')](db[_0x891c('0x63')],{'as':'ChatInteractions','foreignKey':_0x891c('0x173'),'onDelete':_0x891c('0x170')});db['CmContact'][_0x891c('0xfe')](db[_0x891c('0x51')],{'as':_0x891c('0x107'),'foreignKey':_0x891c('0x173'),'onDelete':_0x891c('0x170')});db[_0x891c('0x6c')][_0x891c('0xfe')](db['FaxInteraction'],{'as':'FaxInteractions','foreignKey':_0x891c('0x173'),'onDelete':_0x891c('0x170')});db[_0x891c('0x6c')][_0x891c('0xfe')](db[_0x891c('0x109')],{'as':_0x891c('0x10a'),'foreignKey':'ContactId','onDelete':_0x891c('0x170')});db[_0x891c('0x6c')][_0x891c('0x10e')](db['CmCompany'],{'as':_0x891c('0x193'),'foreignKey':_0x891c('0x192')});db[_0x891c('0x6c')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':'List','foreignKey':_0x891c('0x17b'),'onDelete':_0x891c('0x103')});db[_0x891c('0x6c')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x16c'),'through':_0x891c('0x113')});db[_0x891c('0x6c')]['belongsToMany'](db[_0x891c('0x81')],{'as':'Tags','through':_0x891c('0x194')});db[_0x891c('0x6c')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x194'),'as':_0x891c('0x17e')});db[_0x891c('0x6d')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':'ContactId','onDelete':_0x891c('0x103')});db[_0x891c('0x6d')][_0x891c('0x10e')](db['CmList'],{'as':_0x891c('0x15f'),'foreignKey':_0x891c('0x17b'),'onDelete':_0x891c('0x103')});db[_0x891c('0x6d')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x18b'),'foreignKey':_0x891c('0xfd')});db['CmHopper']['belongsTo'](db[_0x891c('0x120')],{'as':_0x891c('0x18c'),'foreignKey':'VoiceQueueId','onDelete':_0x891c('0x103')});db[_0x891c('0x6d')][_0x891c('0x10e')](db[_0x891c('0x195')],{'as':_0x891c('0x195'),'foreignKey':_0x891c('0x196'),'onDelete':_0x891c('0x103')});db['CmHopper'][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x177'),'foreignKey':_0x891c('0x197')});db[_0x891c('0x198')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173'),'onDelete':_0x891c('0x103')});db[_0x891c('0x198')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':'List','foreignKey':_0x891c('0x17b'),'onDelete':_0x891c('0x103')});db[_0x891c('0x198')][_0x891c('0x10e')](db[_0x891c('0x120')],{'as':'Queue','foreignKey':_0x891c('0x141'),'onDelete':_0x891c('0x103')});db[_0x891c('0x198')]['belongsTo'](db[_0x891c('0x195')],{'as':'Campaign','foreignKey':'CampaignId','onDelete':'cascade'});db['Automation']['hasMany'](db[_0x891c('0x199')],{'as':{'plural':_0x891c('0x19a'),'singular':_0x891c('0x19b')},'foreignKey':_0x891c('0x19c'),'onDelete':'cascade','hooks':!![]});db['Automation']['hasMany'](db[_0x891c('0x199')],{'as':{'plural':_0x891c('0x19d'),'singular':_0x891c('0x19e')},'foreignKey':_0x891c('0x19f'),'onDelete':_0x891c('0x103'),'hooks':!![]});db[_0x891c('0x75')][_0x891c('0xfe')](db[_0x891c('0x74')],{'as':_0x891c('0x1a0'),'foreignKey':_0x891c('0x1a1'),'onDelete':_0x891c('0x103'),'hooks':!![]});db['Disposition'][_0x891c('0xfe')](db[_0x891c('0x78')],{'as':_0x891c('0x159'),'foreignKey':_0x891c('0x1a2'),'onDelete':_0x891c('0x103')});db['Interval'][_0x891c('0xfe')](db[_0x891c('0x7a')],{'as':'Intervals','foreignKey':'IntervalId','onDelete':_0x891c('0x103'),'hooks':!![],'required':![]});db['Interval'][_0x891c('0xfe')](db[_0x891c('0x19')],{'as':_0x891c('0x102'),'foreignKey':'IntervalId','onDelete':_0x891c('0x170')});db['Interval'][_0x891c('0xfe')](db['MailApplication'],{'as':_0x891c('0x1a3'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0x7a')][_0x891c('0xfe')](db[_0x891c('0x61')],{'as':_0x891c('0x1a4'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0x7a')]['hasMany'](db[_0x891c('0x45')],{'as':_0x891c('0x1a5'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0x7a')][_0x891c('0xfe')](db[_0x891c('0x4f')],{'as':_0x891c('0x1a6'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0x1a7')][_0x891c('0x10e')](db[_0x891c('0x38')],{});db[_0x891c('0x1a7')]['belongsTo'](db[_0x891c('0x8c')],{'foreignKey':_0x891c('0x1a8')});db[_0x891c('0x1a7')]['belongsTo'](db[_0x891c('0x8b')],{'foreignKey':_0x891c('0x1a9')});db['Sound'][_0x891c('0x110')](db[_0x891c('0x1a')],{'as':_0x891c('0x1aa'),'through':'moh_has_sounds','onDelete':_0x891c('0x170')});db[_0x891c('0x81')][_0x891c('0x110')](db['CmContact'],{'through':_0x891c('0x194')});db[_0x891c('0x81')][_0x891c('0x110')](db[_0x891c('0x63')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x891c('0x110')](db[_0x891c('0x109')],{'through':_0x891c('0x16a')});db['Tag'][_0x891c('0x110')](db[_0x891c('0x51')],{'through':_0x891c('0x17d')});db[_0x891c('0x81')][_0x891c('0x110')](db[_0x891c('0x11a')],{'through':_0x891c('0x178')});db['Tag'][_0x891c('0x110')](db[_0x891c('0x59')],{'through':'openchannel_interaction_has_tags'});db[_0x891c('0x81')][_0x891c('0x110')](db[_0x891c('0xf1')],{'through':_0x891c('0x1ab')});db['Trigger'][_0x891c('0xfe')](db[_0x891c('0x199')],{'as':{'plural':'AllConditions','singular':_0x891c('0x1ac')},'foreignKey':_0x891c('0x1ad'),'onDelete':_0x891c('0x103'),'hooks':!![]});db[_0x891c('0x84')]['hasMany'](db[_0x891c('0x199')],{'as':{'plural':_0x891c('0x1ae'),'singular':_0x891c('0x1af')},'foreignKey':_0x891c('0x1b0'),'onDelete':_0x891c('0x103'),'hooks':!![]});db[_0x891c('0x84')]['hasMany'](db['Action'],{'as':'Actions','foreignKey':_0x891c('0x1b1'),'onDelete':_0x891c('0x103'),'hooks':!![]});db[_0x891c('0x8b')][_0x891c('0xfe')](db[_0x891c('0x90')],{'as':_0x891c('0x1b2'),'onDelete':'cascade','foreignKey':_0x891c('0x1a9'),'hooks':!![]});db[_0x891c('0x8c')][_0x891c('0xfe')](db[_0x891c('0x90')],{'as':_0x891c('0x1b2'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x891c('0x8e')][_0x891c('0xfe')](db[_0x891c('0x90')],{'as':_0x891c('0x1b2'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b3')});db[_0x891c('0x90')]['belongsTo'](db[_0x891c('0x8e')],{'foreignKey':_0x891c('0x1b3')});db[_0x891c('0x1b4')][_0x891c('0xfe')](db[_0x891c('0x1b5')],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0x1b5')][_0x891c('0xfe')](db['SalesforceField'],{'as':_0x891c('0x1b8'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b9')});db['SalesforceConfiguration'][_0x891c('0xfe')](db[_0x891c('0x96')],{'as':_0x891c('0x1ba'),'onDelete':_0x891c('0x103'),'foreignKey':'DescriptionId'});db[_0x891c('0x1b5')][_0x891c('0xfe')](db[_0x891c('0x96')],{'as':_0x891c('0x1b2'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0x1b5')][_0x891c('0x10e')](db[_0x891c('0x1b4')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0x96')][_0x891c('0xfe')](db['SalesforceField'],{'as':_0x891c('0x1bc'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0x96')][_0x891c('0xfe')](db[_0x891c('0x96')],{'as':_0x891c('0x1bd'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0x96')][_0x891c('0xfe')](db[_0x891c('0x96')],{'as':_0x891c('0x1bf'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0x96')][_0x891c('0x10e')](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':_0x891c('0x1c0')});db[_0x891c('0x98')]['hasMany'](db[_0x891c('0x1c1')],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':'AccountId'});db[_0x891c('0x1c1')]['hasMany'](db[_0x891c('0x9b')],{'as':_0x891c('0x1b8'),'onDelete':'cascade','foreignKey':_0x891c('0x1b9')});db[_0x891c('0x1c1')]['hasMany'](db[_0x891c('0x9b')],{'as':_0x891c('0x1ba'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0x1c1')][_0x891c('0xfe')](db[_0x891c('0x9b')],{'as':_0x891c('0x1b2'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1bb')});db['SugarcrmConfiguration'][_0x891c('0x10e')](db['SugarcrmAccount'],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0x9b')][_0x891c('0xfe')](db[_0x891c('0x9b')],{'as':_0x891c('0x1bc'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0x9b')][_0x891c('0xfe')](db[_0x891c('0x9b')],{'as':_0x891c('0x1bd'),'foreignKey':'DescriptionId'});db[_0x891c('0x9b')][_0x891c('0xfe')](db['SugarcrmField'],{'as':_0x891c('0x1bf'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0x9b')]['belongsTo'](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':'VariableId'});db[_0x891c('0x1c2')][_0x891c('0xfe')](db[_0x891c('0x9d')],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0x9d')][_0x891c('0xfe')](db[_0x891c('0x9e')],{'as':_0x891c('0x1b8'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0x9d')][_0x891c('0xfe')](db[_0x891c('0x9e')],{'as':'Descriptions','onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0x9d')][_0x891c('0xfe')](db['DeskField'],{'as':'Fields','onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0x9d')][_0x891c('0x10e')](db[_0x891c('0x1c2')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0x9d')]['belongsToMany'](db[_0x891c('0x81')],{'through':_0x891c('0x1c3')});db[_0x891c('0x9e')][_0x891c('0xfe')](db[_0x891c('0x9e')],{'as':_0x891c('0x1bc'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0x9e')][_0x891c('0xfe')](db[_0x891c('0x9e')],{'as':'Description','foreignKey':_0x891c('0x1be')});db[_0x891c('0x9e')][_0x891c('0xfe')](db[_0x891c('0x9e')],{'as':_0x891c('0x1bf'),'foreignKey':_0x891c('0x1bb')});db['DeskField']['belongsTo'](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':_0x891c('0x1c0')});db[_0x891c('0xa0')]['hasMany'](db[_0x891c('0xa2')],{'as':'Configurations','onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db['ZohoConfiguration']['hasMany'](db[_0x891c('0xa3')],{'as':_0x891c('0x1b8'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0xa2')]['hasMany'](db[_0x891c('0xa3')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x891c('0x1be')});db[_0x891c('0xa2')]['hasMany'](db[_0x891c('0xa3')],{'as':_0x891c('0x1b2'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1bb')});db['ZohoConfiguration']['belongsTo'](db['ZohoAccount'],{'as':_0x891c('0x168'),'foreignKey':'AccountId'});db[_0x891c('0xa3')][_0x891c('0xfe')](db[_0x891c('0xa3')],{'as':_0x891c('0x1bc'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0xa3')][_0x891c('0xfe')](db[_0x891c('0xa3')],{'as':_0x891c('0x1bd'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0xa3')]['hasMany'](db[_0x891c('0xa3')],{'as':'Field','foreignKey':'FieldId'});db[_0x891c('0xa3')][_0x891c('0x10e')](db[_0x891c('0x86')],{'as':'Variable','foreignKey':_0x891c('0x1c0')});db[_0x891c('0xa4')][_0x891c('0xfe')](db['ZendeskConfiguration'],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xa6')][_0x891c('0xfe')](db[_0x891c('0xa8')],{'as':_0x891c('0x1b8'),'foreignKey':'SubjectId'});db[_0x891c('0xa6')][_0x891c('0xfe')](db['ZendeskField'],{'as':_0x891c('0x1ba'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0xa6')][_0x891c('0xfe')](db[_0x891c('0xa8')],{'as':_0x891c('0x1b2'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0xa6')]['belongsTo'](db['ZendeskAccount'],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xa6')]['belongsToMany'](db[_0x891c('0x81')],{'through':'int_zendesk_configuration_has_tags'});db[_0x891c('0xa8')][_0x891c('0xfe')](db[_0x891c('0xa8')],{'as':_0x891c('0x1bc'),'foreignKey':_0x891c('0x1b9')});db['ZendeskField'][_0x891c('0xfe')](db[_0x891c('0xa8')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x891c('0xa8')]['hasMany'](db[_0x891c('0xa8')],{'as':'Field','foreignKey':_0x891c('0x1bb')});db[_0x891c('0xa8')]['belongsTo'](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':_0x891c('0x1c0')});db[_0x891c('0xaa')][_0x891c('0xfe')](db['FreshdeskConfiguration'],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xab')][_0x891c('0xfe')](db[_0x891c('0x1c4')],{'as':_0x891c('0x1b8'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0xab')]['hasMany'](db['FreshdeskField'],{'as':_0x891c('0x1ba'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0xab')][_0x891c('0xfe')](db[_0x891c('0x1c4')],{'as':_0x891c('0x1b2'),'onDelete':'cascade','foreignKey':_0x891c('0x1bb')});db['FreshdeskConfiguration'][_0x891c('0x10e')](db[_0x891c('0xaa')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xab')]['belongsToMany'](db[_0x891c('0x81')],{'through':'int_freshdesk_configuration_has_tags'});db[_0x891c('0x1c4')]['hasMany'](db['FreshdeskField'],{'as':_0x891c('0x1bc'),'foreignKey':'SubjectId'});db[_0x891c('0x1c4')]['hasMany'](db[_0x891c('0x1c4')],{'as':_0x891c('0x1bd'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0x1c4')][_0x891c('0xfe')](db[_0x891c('0x1c4')],{'as':_0x891c('0x1bf'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0x1c4')]['belongsTo'](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':_0x891c('0x1c0')});db[_0x891c('0xad')]['hasMany'](db['VtigerConfiguration'],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xaf')][_0x891c('0xfe')](db[_0x891c('0xb1')],{'as':_0x891c('0x1b8'),'foreignKey':'SubjectId'});db[_0x891c('0xaf')]['hasMany'](db[_0x891c('0xb1')],{'as':'Descriptions','foreignKey':_0x891c('0x1be')});db[_0x891c('0xaf')]['hasMany'](db[_0x891c('0xb1')],{'as':_0x891c('0x1b2'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0xaf')]['belongsTo'](db[_0x891c('0xad')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xb1')]['hasMany'](db[_0x891c('0xb1')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x891c('0xb1')][_0x891c('0xfe')](db[_0x891c('0xb1')],{'as':_0x891c('0x1bd'),'foreignKey':_0x891c('0x1be')});db['VtigerField'][_0x891c('0xfe')](db[_0x891c('0xb1')],{'as':_0x891c('0x1bf'),'foreignKey':'FieldId'});db[_0x891c('0xb1')][_0x891c('0x10e')](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':'VariableId'});db['ServicenowAccount'][_0x891c('0xfe')](db[_0x891c('0xb3')],{'as':_0x891c('0x1b6'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0x891c('0xb3')][_0x891c('0xfe')](db['ServicenowField'],{'as':_0x891c('0x1b8'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0xb3')][_0x891c('0xfe')](db[_0x891c('0xb5')],{'as':_0x891c('0x1ba'),'foreignKey':'DescriptionId'});db[_0x891c('0xb3')][_0x891c('0xfe')](db[_0x891c('0xb5')],{'as':_0x891c('0x1b2'),'foreignKey':'FieldId'});db[_0x891c('0xb3')]['belongsTo'](db[_0x891c('0x1c5')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db['ServicenowField'][_0x891c('0xfe')](db['ServicenowField'],{'as':'Subject','foreignKey':_0x891c('0x1b9')});db[_0x891c('0xb5')][_0x891c('0xfe')](db[_0x891c('0xb5')],{'as':_0x891c('0x1bd'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0xb5')][_0x891c('0xfe')](db[_0x891c('0xb5')],{'as':'Field','foreignKey':_0x891c('0x1bb')});db[_0x891c('0xb5')][_0x891c('0x10e')](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':_0x891c('0x1c0')});db['Dynamics365Account']['hasMany'](db['Dynamics365Configuration'],{'as':'Configurations','onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xb7')][_0x891c('0xfe')](db[_0x891c('0xb9')],{'as':_0x891c('0x1b8'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0xb7')][_0x891c('0xfe')](db[_0x891c('0xb9')],{'as':_0x891c('0x1ba'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0xb7')][_0x891c('0xfe')](db[_0x891c('0xb9')],{'as':_0x891c('0x1b2'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0xb7')][_0x891c('0x10e')](db['Dynamics365Account'],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xb9')][_0x891c('0xfe')](db[_0x891c('0xb9')],{'as':_0x891c('0x1bc'),'foreignKey':'SubjectId'});db[_0x891c('0xb9')][_0x891c('0xfe')](db[_0x891c('0xb9')],{'as':_0x891c('0x1bd'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0xb9')]['hasMany'](db[_0x891c('0xb9')],{'as':_0x891c('0x1bf'),'foreignKey':'FieldId'});db['Dynamics365Field'][_0x891c('0x10e')](db[_0x891c('0x86')],{'as':'Variable','foreignKey':'VariableId'});db[_0x891c('0xbb')][_0x891c('0xfe')](db['FreshsalesConfiguration'],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db['FreshsalesConfiguration'][_0x891c('0xfe')](db[_0x891c('0xbf')],{'as':'Subjects','foreignKey':_0x891c('0x1b9')});db['FreshsalesConfiguration']['hasMany'](db[_0x891c('0xbf')],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0x891c('0xbd')][_0x891c('0xfe')](db[_0x891c('0xbf')],{'as':_0x891c('0x1b2'),'foreignKey':_0x891c('0x1bb')});db['FreshsalesConfiguration']['belongsTo'](db['FreshsalesAccount'],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xbf')]['hasMany'](db[_0x891c('0xbf')],{'as':_0x891c('0x1bc'),'foreignKey':'SubjectId'});db[_0x891c('0xbf')]['hasMany'](db[_0x891c('0xbf')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x891c('0xbf')]['hasMany'](db[_0x891c('0xbf')],{'as':'Field','foreignKey':_0x891c('0x1bb')});db['FreshsalesField']['belongsTo'](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':_0x891c('0x1c0')});db[_0x891c('0xc2')][_0x891c('0x10e')](db['ChatWebsite'],{});db['ChatQueueReport'][_0x891c('0x10e')](db['CmList'],{'as':_0x891c('0x15f'),'foreignKey':'ListId'});db[_0x891c('0xc2')][_0x891c('0x10e')](db['CmContact'],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0xc2')][_0x891c('0x10e')](db['ChatInteraction'],{});db[_0x891c('0xc2')]['belongsTo'](db[_0x891c('0x64')],{});db[_0x891c('0xc2')][_0x891c('0x10e')](db[_0x891c('0x12')],{});db[_0x891c('0xc2')]['belongsTo'](db[_0x891c('0x66')],{});db[_0x891c('0xc4')][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1c6')});db[_0x891c('0xc4')][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1c7')});db[_0x891c('0xca')][_0x891c('0xfe')](db[_0x891c('0xc8')],{'foreignKey':_0x891c('0x1c8'),'onDelete':_0x891c('0x103')});db[_0x891c('0xca')][_0x891c('0xfe')](db[_0x891c('0xc6')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x891c('0xcb')][_0x891c('0x10e')](db[_0x891c('0x133')],{});db[_0x891c('0xcb')][_0x891c('0x10e')](db['CmList'],{'as':_0x891c('0x15f'),'foreignKey':_0x891c('0x17b')});db['SmsQueueReport'][_0x891c('0x10e')](db['CmContact'],{'as':_0x891c('0x169'),'foreignKey':'ContactId'});db['SmsQueueReport'][_0x891c('0x10e')](db[_0x891c('0x51')],{});db[_0x891c('0xcb')]['belongsTo'](db['SmsMessage'],{});db['SmsQueueReport'][_0x891c('0x10e')](db[_0x891c('0x12')],{});db[_0x891c('0xcb')]['belongsTo'](db[_0x891c('0x125')],{});db['JscriptyProject'][_0x891c('0xfe')](db[_0x891c('0xca')],{'foreignKey':_0x891c('0x1c9')});db['JscriptyProject'][_0x891c('0xfe')](db['JscriptyQuestionReport'],{'foreignKey':_0x891c('0x1c9')});db[_0x891c('0xd0')][_0x891c('0xfe')](db[_0x891c('0xc6')],{'foreignKey':'ProjectId'});db[_0x891c('0x138')][_0x891c('0x110')](db['User'],{'as':'Users','through':_0x891c('0x13a')});db['Team'][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x117')});db[_0x891c('0xd7')][_0x891c('0x110')](db[_0x891c('0x120')],{'through':_0x891c('0xfa'),'as':'VoiceQueues'});db[_0x891c('0xd7')][_0x891c('0x110')](db[_0x891c('0x164')],{'through':_0x891c('0x165'),'as':_0x891c('0x1ca')});db[_0x891c('0xd7')][_0x891c('0x110')](db[_0x891c('0x66')],{'through':_0x891c('0x190'),'as':_0x891c('0x123')});db[_0x891c('0xd7')][_0x891c('0x110')](db['FaxQueue'],{'through':_0x891c('0x1cb'),'as':_0x891c('0x124')});db['Team'][_0x891c('0x110')](db[_0x891c('0x125')],{'through':_0x891c('0x1cc'),'as':_0x891c('0x126')});db[_0x891c('0xd7')][_0x891c('0x110')](db[_0x891c('0x5c')],{'through':_0x891c('0x188'),'as':_0x891c('0x127')});db['Team'][_0x891c('0x110')](db[_0x891c('0x129')],{'through':_0x891c('0x1cd'),'as':_0x891c('0x12a')});db[_0x891c('0x195')][_0x891c('0xfe')](db[_0x891c('0x6d')],{'as':_0x891c('0x142'),'foreignKey':_0x891c('0x196')});db[_0x891c('0x195')]['hasMany'](db[_0x891c('0x70')],{'as':_0x891c('0x143'),'foreignKey':_0x891c('0x196')});db[_0x891c('0x195')][_0x891c('0xfe')](db['CmHopperHistory'],{'as':_0x891c('0x144'),'foreignKey':_0x891c('0x196')});db[_0x891c('0x195')]['hasMany'](db[_0x891c('0x198')],{'as':_0x891c('0x145'),'foreignKey':_0x891c('0x196')});db[_0x891c('0x195')][_0x891c('0x10e')](db[_0x891c('0x147')],{'as':_0x891c('0x147'),'foreignKey':_0x891c('0x148')});db['Campaign']['belongsTo'](db[_0x891c('0x147')],{'as':_0x891c('0x1ce'),'foreignKey':'TrunkBackupId'});db[_0x891c('0x195')][_0x891c('0x10e')](db['Interval'],{'as':_0x891c('0x7a'),'foreignKey':'IntervalId'});db[_0x891c('0x195')][_0x891c('0x10e')](db['SquareProject'],{'as':_0x891c('0x138'),'foreignKey':_0x891c('0x1cf')});db[_0x891c('0x195')][_0x891c('0x110')](db[_0x891c('0x114')],{'as':_0x891c('0x115'),'through':'campaigns_has_cm_lists'});db[_0x891c('0x195')]['belongsToMany'](db[_0x891c('0x114')],{'as':_0x891c('0x14e'),'through':_0x891c('0x1d0')});db['Attachment'][_0x891c('0x10e')](db[_0x891c('0x16e')],{'as':_0x891c('0x16e'),'foreignKey':_0x891c('0x16f')});db[_0x891c('0xe0')]['belongsTo'](db['MailMessage'],{});db[_0x891c('0xe0')][_0x891c('0x10e')](db[_0x891c('0x109')],{});db[_0x891c('0xe0')][_0x891c('0x10e')](db[_0x891c('0x38')],{'foreignKey':'FromMailAccountId','as':'FromAccount'});db['MailTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x891c('0x1d1'),'as':'FromAgent'});db[_0x891c('0xe0')][_0x891c('0x10e')](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d2'),'as':_0x891c('0x1d3')});db['MailTransferReport'][_0x891c('0x10e')](db[_0x891c('0x164')],{'foreignKey':_0x891c('0x1d4'),'as':'ToQueue'});db[_0x891c('0xe0')][_0x891c('0x10e')](db[_0x891c('0x38')],{'foreignKey':_0x891c('0x1d5'),'as':_0x891c('0x1d6')});db[_0x891c('0xe2')]['belongsTo'](db['ChatMessage'],{});db[_0x891c('0xe2')]['belongsTo'](db[_0x891c('0x63')],{});db[_0x891c('0xe2')][_0x891c('0x10e')](db['ChatWebsite'],{'foreignKey':_0x891c('0x1d7'),'as':_0x891c('0x1d8')});db[_0x891c('0xe2')][_0x891c('0x10e')](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d1'),'as':_0x891c('0x1d9')});db[_0x891c('0xe2')]['belongsTo'](db[_0x891c('0x12')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0x891c('0xe2')][_0x891c('0x10e')](db[_0x891c('0x66')],{'foreignKey':_0x891c('0x1da'),'as':_0x891c('0x1db')});db[_0x891c('0xe2')][_0x891c('0x10e')](db[_0x891c('0x5e')],{'foreignKey':_0x891c('0x1dc'),'as':_0x891c('0x1d6')});db[_0x891c('0xe3')][_0x891c('0x10e')](db[_0x891c('0x48')],{});db[_0x891c('0xe3')][_0x891c('0x10e')](db[_0x891c('0x11a')],{});db[_0x891c('0xe3')][_0x891c('0x10e')](db[_0x891c('0x44')],{'foreignKey':_0x891c('0x1dd'),'as':_0x891c('0x1d8')});db['FaxTransferReport']['belongsTo'](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d1'),'as':'FromAgent'});db[_0x891c('0xe3')][_0x891c('0x10e')](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d2'),'as':_0x891c('0x1d3')});db[_0x891c('0xe3')][_0x891c('0x10e')](db['FaxQueue'],{'foreignKey':_0x891c('0x1de'),'as':_0x891c('0x1db')});db[_0x891c('0xe3')]['belongsTo'](db[_0x891c('0x44')],{'foreignKey':_0x891c('0x1df'),'as':_0x891c('0x1d6')});db['OpenchannelTransferReport'][_0x891c('0x10e')](db['OpenchannelMessage'],{});db[_0x891c('0xe5')][_0x891c('0x10e')](db[_0x891c('0x59')],{});db[_0x891c('0xe5')][_0x891c('0x10e')](db[_0x891c('0x56')],{'foreignKey':'FromOpenchannelAccountId','as':_0x891c('0x1d8')});db['OpenchannelTransferReport']['belongsTo'](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d1'),'as':'FromAgent'});db[_0x891c('0xe5')]['belongsTo'](db['User'],{'foreignKey':_0x891c('0x1d2'),'as':_0x891c('0x1d3')});db[_0x891c('0xe5')]['belongsTo'](db[_0x891c('0x5c')],{'foreignKey':_0x891c('0x1e0'),'as':_0x891c('0x1db')});db[_0x891c('0xe5')][_0x891c('0x10e')](db[_0x891c('0x56')],{'foreignKey':_0x891c('0x1e1'),'as':'ToAccount'});db[_0x891c('0x1e2')]['belongsTo'](db[_0x891c('0x53')],{});db[_0x891c('0x1e2')]['belongsTo'](db[_0x891c('0x51')],{});db[_0x891c('0x1e2')]['belongsTo'](db['SmsAccount'],{'foreignKey':_0x891c('0x1e3'),'as':'FromAccount'});db['SmsTransferReport'][_0x891c('0x10e')](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d1'),'as':_0x891c('0x1d9')});db[_0x891c('0x1e2')][_0x891c('0x10e')](db['User'],{'foreignKey':_0x891c('0x1d2'),'as':_0x891c('0x1d3')});db[_0x891c('0x1e2')]['belongsTo'](db[_0x891c('0x125')],{'foreignKey':'ToSmsQueueId','as':'ToQueue'});db[_0x891c('0x1e2')][_0x891c('0x10e')](db[_0x891c('0x133')],{'foreignKey':_0x891c('0x1e4'),'as':_0x891c('0x1d6')});db['CmList'][_0x891c('0xfe')](db[_0x891c('0x78')],{'as':_0x891c('0x159'),'foreignKey':_0x891c('0x17b'),'onDelete':_0x891c('0x103')});db['CmList'][_0x891c('0xfe')](db[_0x891c('0x1e5')],{'as':_0x891c('0x1e6'),'foreignKey':_0x891c('0x17b')});db['CmList'][_0x891c('0xfe')](db['CmContact'],{'as':'Contacts','onDelete':'cascade','foreignKey':_0x891c('0x17b')});db[_0x891c('0x114')]['hasMany'](db['CmHopperFinal'],{'as':_0x891c('0x143'),'foreignKey':_0x891c('0x17b')});db['CmList'][_0x891c('0xfe')](db[_0x891c('0x104')],{'as':_0x891c('0x105'),'foreignKey':_0x891c('0x17b')});db['CmList'][_0x891c('0xfe')](db[_0x891c('0x73')],{'as':'ReportAgentPreview','foreignKey':_0x891c('0x17b')});db[_0x891c('0x114')]['belongsToMany'](db['VoiceQueue'],{'as':_0x891c('0x1e7'),'through':_0x891c('0x14c')});db['CmList']['belongsToMany'](db['User'],{'as':_0x891c('0x163'),'through':'cm_user_has_lists'});db[_0x891c('0x12b')][_0x891c('0xfe')](db[_0x891c('0x19')],{'as':_0x891c('0x102'),'onDelete':_0x891c('0x103')});db['VoicePrefix'][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x1e8')});db[_0x891c('0xe9')][_0x891c('0xfe')](db['User'],{'as':_0x891c('0x16c'),'foreignKey':_0x891c('0x10f')});db[_0x891c('0xe9')][_0x891c('0xfe')](db[_0x891c('0xea')],{'as':_0x891c('0x1e9'),'foreignKey':'userProfileId','onDelete':'cascade'});db['UserProfileSection'][_0x891c('0xfe')](db[_0x891c('0x1ea')],{'as':_0x891c('0x1eb'),'foreignKey':_0x891c('0x1ec'),'onDelete':_0x891c('0x103')});db['WhatsappAccount'][_0x891c('0xfe')](db[_0x891c('0x78')],{'as':_0x891c('0x159'),'foreignKey':_0x891c('0x1ed'),'onDelete':_0x891c('0x103')});db[_0x891c('0x136')][_0x891c('0xfe')](db[_0x891c('0x15a')],{'as':_0x891c('0x15b'),'foreignKey':'WhatsappAccountId'});db[_0x891c('0x136')][_0x891c('0xfe')](db[_0x891c('0xf2')],{'as':_0x891c('0x15c'),'foreignKey':_0x891c('0x1ed')});db[_0x891c('0x136')][_0x891c('0xfe')](db[_0x891c('0xf1')],{'as':_0x891c('0x15d')});db[_0x891c('0x136')][_0x891c('0xfe')](db[_0x891c('0xf0')],{'as':'Applications'});db['WhatsappAccount'][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':_0x891c('0x17b')});db[_0x891c('0x136')][_0x891c('0x10e')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x891c('0x136')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':'Agents','through':'user_has_whatsapp_accounts'});db[_0x891c('0xf0')][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':'restrict'});db[_0x891c('0xf0')][_0x891c('0x10e')](db['WhatsappQueue'],{'onDelete':'restrict'});db[_0x891c('0xf0')][_0x891c('0x10e')](db[_0x891c('0x136')],{'onDelete':_0x891c('0x170')});db['WhatsappApplication'][_0x891c('0x10e')](db[_0x891c('0x7a')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0xf0')][_0x891c('0x10e')](db[_0x891c('0x81')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x171')});db[_0x891c('0xf1')][_0x891c('0xfe')](db[_0x891c('0xf2')],{'as':_0x891c('0x15c'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1ee')});db[_0x891c('0xf1')][_0x891c('0x10e')](db[_0x891c('0x136')],{'as':_0x891c('0x168'),'foreignKey':'WhatsappAccountId'});db[_0x891c('0xf1')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0xf1')][_0x891c('0x10e')](db['User'],{'as':'Owner','foreignKey':_0x891c('0xfd')});db[_0x891c('0xf1')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':'whatsapp_interaction_has_tags','as':_0x891c('0x16b')});db['WhatsappInteraction'][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x1ab'),'as':'ThroughTags'});db[_0x891c('0xf1')][_0x891c('0x110')](db['User'],{'as':'Users','through':_0x891c('0x11f'),'foreignKey':_0x891c('0x1ee')});db[_0x891c('0xf2')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x12')});db['WhatsappMessage'][_0x891c('0x10e')](db[_0x891c('0x6c')],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169')});db[_0x891c('0xf2')][_0x891c('0x10e')](db[_0x891c('0xf1')],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x179'),'foreignKey':_0x891c('0x1ee')});db[_0x891c('0xf2')]['belongsTo'](db['WhatsappAccount'],{'as':_0x891c('0x168'),'foreignKey':'WhatsappAccountId'});db[_0x891c('0xf4')][_0x891c('0x10e')](db[_0x891c('0x136')],{});db[_0x891c('0xf4')][_0x891c('0x10e')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x891c('0xf4')]['belongsTo'](db['CmContact'],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0xf4')][_0x891c('0x10e')](db[_0x891c('0xf1')],{});db['WhatsappQueueReport'][_0x891c('0x10e')](db[_0x891c('0x129')],{});db[_0x891c('0xf4')][_0x891c('0x10e')](db[_0x891c('0xf2')],{});db[_0x891c('0xf4')][_0x891c('0x10e')](db[_0x891c('0x12')],{});db[_0x891c('0xf6')][_0x891c('0x10e')](db[_0x891c('0xf2')],{});db[_0x891c('0xf6')][_0x891c('0x10e')](db['WhatsappInteraction'],{});db['WhatsappTransferReport']['belongsTo'](db[_0x891c('0x136')],{'foreignKey':'FromWhatsappAccountId','as':'FromAccount'});db[_0x891c('0xf6')][_0x891c('0x10e')](db['WhatsappAccount'],{'foreignKey':_0x891c('0x1ef'),'as':'ToAccount'});db['WhatsappTransferReport'][_0x891c('0x10e')](db['WhatsappQueue'],{'foreignKey':_0x891c('0x1f0'),'as':'ToQueue'});db[_0x891c('0xf6')][_0x891c('0x10e')](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d1'),'as':'FromAgent'});db[_0x891c('0xf6')][_0x891c('0x10e')](db['User'],{'foreignKey':_0x891c('0x1d2'),'as':_0x891c('0x1d3')});db[_0x891c('0x129')][_0x891c('0x110')](db['User'],{'as':_0x891c('0x163'),'through':_0x891c('0x33'),'foreignKey':'WhatsappQueueId'});db[_0x891c('0x129')][_0x891c('0x110')](db[_0x891c('0xd7')],{'through':_0x891c('0x1cd'),'as':_0x891c('0x14d')});module[_0x891c('0x1f1')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x2c5c=['MailInteractions','WhatsappInteraction','UserNotifications','SenderId','belongsTo','belongsToMany','ChatGroup','Groups','Contacts','Lists','cm_user_has_lists','Team','user_has_teams','ChatInteractions','user_has_fax_interactions','user_has_sms_interactions','WhatsappInteractions','user_has_whatsapp_interactions','VoiceQueues','UserVoiceQueue','MailQueues','FaxQueues','SmsQueue','WhatsappQueue','CmList','VoicePrefix','VoicePrefixes','user_has_voice_prefixes','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','CmHopper','HopperHistories','CmHopperBlack','HopperBlacks','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','Interval','Agents','VoiceMailMessage','mailboxuser','mailbox','QueueCalls','uniqueid','AgentReports','Contact','ContactId','MailAccountId','MailServerOut','Imap','Smtp','Dispositions','Answers','Messages','List','ListId','Template','TemplateId','mandatoryDispositionPause','mandatoryDispositionPauseId','team_has_mail_queues','Teams','Account','Tags','ThroughTags','Users','user_has_mail_interactions','MailInteractionId','Attachments','ChatWebsiteId','ChatOfflineMessageId','restrict','IntervalId','TagId','MailQueueReport','Items','FaxAccountId','FaxApplication','Exntensions','FaxInteractionId','Owner','fax_interaction_has_tags','Interaction','AttachmentId','UserFaxQueue','team_has_fax_queues','SmsAccount','SmsAccountId','Interactions','SmsApplication','user_has_sms_accounts','SmsInteractionId','OpenchannelAccountId','OpenchannelApplication','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ProactiveActions','ChatApplication','Agent','Queue','ChatQueueId','Website','ChatMessage','chat_interaction_has_tags','ChatInteractionId','team_has_chat_queues','ChatInternalMessage','chat_group_has_users','CmCompany','CompanyId','Hoppers','FaxInteractions','Company','cm_user_has_contacts','cm_contact_has_tags','Campaign','CampaignId','OwnerId','All','OneAll','Any','OneAny','AutomationAnyId','Actions','AutomationId','ParentId','Intervals','Extensions','MailApplications','FaxApplications','Schedule','DefaultReportId','AnalyticCustomReport','CustomReportId','Mohs','sms_interaction_has_tags','whatsapp_interaction_has_tags','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','Fields','AnalyticMetric','MetricId','Configurations','SalesforceConfiguration','SubjectId','Descriptions','DescriptionId','FieldId','SalesforceAccount','AccountId','Subject','Description','Variable','Subjects','SugarcrmField','VariableId','DeskField','Field','ZohoConfiguration','int_zendesk_configuration_has_tags','FreshdeskAccount','int_freshdesk_configuration_has_tags','Dynamics365Account','FreshsalesField','FromId','SessionId','JscriptyProject','ProjectId','ChatQueues','SmsQueues','OpenchannelQueues','team_has_whatsapp_queues','WhatsappQueues','SquareProjectId','campaigns_has_cm_lists','BlackLists','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromUserId','FromAgent','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ChatTransferReport','ToChatWebsiteId','FromFaxAccountId','ToFaxAccountId','ToAccount','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','Queues','voice_queues_has_cm_lists','userProfileId','UserProfileSections','sectionId','WhatsappAccountId','WhatsappInteractionId','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','../config/environment','lodash','jstz','determine','sequelize','xcall','127.0.0.1','mysql','utf8mb4','name','utf8','utf8_general_ci','defaultsDeep','sequelizeHistory','motion2','xC@LL1234','username','password','options','database','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','VoiceMail','../api/voiceMail/voiceMail.model','VoiceCallReport','../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','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','UserWhatsappQueue','MailServerIn','../api/mailServerIn/mailServerIn.model','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','Dashboard','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','../api/cmHopper/cmHopper.model','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','../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','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','Sound','Tag','../api/tag/tag.model','../api/template/template.model','Trigger','../api/trigger/trigger.model','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','FreshdeskField','VtigerAccount','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','ServicenowField','../api/intServicenowField/intServicenowField.model','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','Dynamics365Field','FreshsalesAccount','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','../api/squareReport/squareReport.model','SquareDetailsReport','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareProject','../api/squareProject/squareProject.model','SquareMessage','../api/squareMessage/squareMessage.model','License','../api/license/license.model','../api/campaign/campaign.model','Migration','Attachment','../api/attachment/attachment.model','Plugin','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','FaxTransferReport','OpenchannelTransferReport','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','UserProfile','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','../api/whatsappQueue/whatsappQueue.model','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','hasOne','cascade','UserId','User','hasMany','VoiceQueuesRt','HopperFinals','HopperHistory','ReportAgentPreview','OpenchannelInteractions','SmsInteractions'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x2c5c,0xe5));var _0xc2c5=function(_0x289f0a,_0x57fa92){_0x289f0a=_0x289f0a-0x0;var _0x178a28=_0x2c5c[_0x289f0a];return _0x178a28;};'use strict';var config=require(_0xc2c5('0x0'));var Sequelize=require('sequelize');var _=require(_0xc2c5('0x1'));var jstz=require(_0xc2c5('0x2'));var timezone=jstz[_0xc2c5('0x3')]();config[_0xc2c5('0x4')]=_['defaultsDeep'](config[_0xc2c5('0x4')],{'database':'motion2','username':_0xc2c5('0x5'),'password':'xC@LL1234','options':{'host':_0xc2c5('0x6'),'port':0xcea,'dialect':_0xc2c5('0x7'),'dialectOptions':{'charset':_0xc2c5('0x8')},'logging':![],'timezone':timezone[_0xc2c5('0x9')](),'define':{'charset':_0xc2c5('0xa'),'collate':_0xc2c5('0xb')}}});config['sequelizeHistory']=_[_0xc2c5('0xc')](config[_0xc2c5('0xd')],{'database':_0xc2c5('0xe'),'username':_0xc2c5('0x5'),'password':_0xc2c5('0xf'),'options':{'host':_0xc2c5('0x6'),'port':0xcea,'dialect':_0xc2c5('0x7'),'dialectOptions':{'charset':_0xc2c5('0x8')},'logging':![],'timezone':timezone[_0xc2c5('0x9')](),'define':{'charset':_0xc2c5('0xa'),'collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xc2c5('0x4')]['database'],config[_0xc2c5('0x4')][_0xc2c5('0x10')],config['sequelize'][_0xc2c5('0x11')],config[_0xc2c5('0x4')][_0xc2c5('0x12')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xc2c5('0xd')][_0xc2c5('0x13')],config['sequelizeHistory'][_0xc2c5('0x10')],config[_0xc2c5('0xd')]['password'],config[_0xc2c5('0xd')][_0xc2c5('0x12')])};db['User']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x15'));db[_0xc2c5('0x16')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x17'));db[_0xc2c5('0x18')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x19'));db[_0xc2c5('0x1a')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x1b'));db[_0xc2c5('0x1c')]=db['sequelize']['import'](_0xc2c5('0x1d'));db[_0xc2c5('0x1e')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x1f'));db[_0xc2c5('0x20')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x21'));db[_0xc2c5('0x22')]=db['sequelize'][_0xc2c5('0x14')]('../api/screenRecording/screenRecording.model');db[_0xc2c5('0x23')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x24'));db['VoiceMailMessage']=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0xc2c5('0x25')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x26'));db[_0xc2c5('0x27')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x28'));db[_0xc2c5('0x29')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x2a'));db[_0xc2c5('0x2b')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x2c'));db[_0xc2c5('0x2d')]=db[_0xc2c5('0x4')]['import']('../api/memberReport/memberReport.model');db[_0xc2c5('0x2e')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x2f'));db[_0xc2c5('0x30')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/voiceTransferReport/voiceTransferReport.model');db[_0xc2c5('0x31')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x32'));db['UserVoiceQueue']=db['sequelize'][_0xc2c5('0x14')]('../api/userVoiceQueue/userVoiceQueue.model');db[_0xc2c5('0x33')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x34'));db[_0xc2c5('0x35')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x36'));db['UserFaxQueue']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x37'));db[_0xc2c5('0x38')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x39'));db[_0xc2c5('0x3a')]=db[_0xc2c5('0x4')]['import']('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0xc2c5('0x3b')]=db[_0xc2c5('0x4')]['import']('../api/userWhatsappQueue/userWhatsappQueue.model');db[_0xc2c5('0x3c')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x3d'));db['MailServerOut']=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x3e'));db[_0xc2c5('0x3f')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/mailAccount/mailAccount.model');db[_0xc2c5('0x40')]=db['sequelize'][_0xc2c5('0x14')]('../api/mailQueue/mailQueue.model');db[_0xc2c5('0x41')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x42'));db[_0xc2c5('0x43')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/mailInteraction/mailInteraction.model');db[_0xc2c5('0x44')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x45'));db[_0xc2c5('0x46')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x47'));db['MailQueueReport']=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x48'));db[_0xc2c5('0x49')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/dashboard/dashboard.model');db[_0xc2c5('0x4a')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x4b'));db[_0xc2c5('0x4c')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x4d'));db['FaxApplication']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x4e'));db[_0xc2c5('0x4f')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x50'));db[_0xc2c5('0x51')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x52'));db[_0xc2c5('0x53')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x54'));db[_0xc2c5('0x55')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x56'));db['SmsAccount']=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x57'));db['SmsApplication']=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x58'));db[_0xc2c5('0x59')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x5a'));db[_0xc2c5('0x5b')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x5c'));db['SmsQueue']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x5d'));db[_0xc2c5('0x5e')]=db['sequelize']['import'](_0xc2c5('0x5f'));db['OpenchannelApplication']=db['sequelize']['import'](_0xc2c5('0x60'));db[_0xc2c5('0x61')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x62'));db[_0xc2c5('0x63')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/openchannelMessage/openchannelMessage.model');db[_0xc2c5('0x64')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x65'));db[_0xc2c5('0x66')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x67'));db[_0xc2c5('0x68')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x69'));db['ChatApplication']=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/chatApplication/chatApplication.model');db[_0xc2c5('0x6a')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x6b'));db['ChatMessage']=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x6c'));db[_0xc2c5('0x6d')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x6e'));db[_0xc2c5('0x6f')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/chatQueue/chatQueue.model');db['ChatGroup']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x70'));db[_0xc2c5('0x71')]=db[_0xc2c5('0x4')]['import']('../api/chatProactiveAction/chatProactiveAction.model');db['CmCompany']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x72'));db[_0xc2c5('0x73')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x74'));db['CmHopper']=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x75'));db['CmHopperBlack']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x76'));db[_0xc2c5('0x77')]=db[_0xc2c5('0x4')]['import']('../api/cmHopperFinal/cmHopperFinal.model');db[_0xc2c5('0x78')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x79'));db['ReportAgentPreview']=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x7a'));db[_0xc2c5('0x7b')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x7c'));db[_0xc2c5('0x7d')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x7e'));db[_0xc2c5('0x7f')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x80'));db[_0xc2c5('0x81')]=db['sequelize']['import'](_0xc2c5('0x82'));db[_0xc2c5('0x83')]=db['sequelize'][_0xc2c5('0x14')]('../api/disposition/disposition.model');db[_0xc2c5('0x84')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x85'));db['Interval']=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x86'));db[_0xc2c5('0x87')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x88'));db[_0xc2c5('0x89')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x8a'));db[_0xc2c5('0x8b')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/voiceQueuesLog/voiceQueuesLog.model');db['Schedule']=db['sequelize'][_0xc2c5('0x14')]('../api/schedule/schedule.model');db[_0xc2c5('0x8c')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/sound/sound.model');db[_0xc2c5('0x8d')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x8e'));db['Template']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x8f'));db[_0xc2c5('0x90')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x91'));db['Variable']=db[_0xc2c5('0x4')]['import'](_0xc2c5('0x92'));db[_0xc2c5('0x93')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x94'));db[_0xc2c5('0x95')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x96'));db['AnalyticCustomReport']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x97'));db[_0xc2c5('0x98')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x99'));db[_0xc2c5('0x9a')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x9b'));db['AnalyticMetric']=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/analyticMetric/analyticMetric.model');db[_0xc2c5('0x9c')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0x9d'));db[_0xc2c5('0x9e')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x9f'));db['SalesforceAccount']=db[_0xc2c5('0x4')]['import'](_0xc2c5('0xa0'));db['SalesforceConfiguration']=db[_0xc2c5('0x4')]['import'](_0xc2c5('0xa1'));db[_0xc2c5('0xa2')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xa3'));db[_0xc2c5('0xa4')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xa5'));db[_0xc2c5('0xa6')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xa7'));db['SugarcrmField']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xa8'));db[_0xc2c5('0xa9')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0xaa'));db[_0xc2c5('0xab')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xac'));db['DeskField']=db[_0xc2c5('0x4')]['import'](_0xc2c5('0xad'));db[_0xc2c5('0xae')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0xaf'));db['ZohoConfiguration']=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/intZohoConfiguration/intZohoConfiguration.model');db[_0xc2c5('0xb0')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0xb1'));db[_0xc2c5('0xb2')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0xc2c5('0xb3')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xb4'));db[_0xc2c5('0xb5')]=db['sequelize'][_0xc2c5('0x14')]('../api/intZendeskField/intZendeskField.model');db['FreshdeskAccount']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xb6'));db[_0xc2c5('0xb7')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db[_0xc2c5('0xb8')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/intFreshdeskField/intFreshdeskField.model');db[_0xc2c5('0xb9')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/intVtigerAccount/intVtigerAccount.model');db[_0xc2c5('0xba')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xbb'));db[_0xc2c5('0xbc')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xbd'));db[_0xc2c5('0xbe')]=db['sequelize']['import'](_0xc2c5('0xbf'));db[_0xc2c5('0xc0')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0xc2c5('0xc1')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xc2'));db['Dynamics365Account']=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0xc3'));db[_0xc2c5('0xc4')]=db['sequelize']['import']('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0xc2c5('0xc5')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/intDynamics365Field/intDynamics365Field.model');db[_0xc2c5('0xc6')]=db[_0xc2c5('0x4')]['import']('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0xc2c5('0xc7')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0xc8'));db['FreshsalesField']=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/intFreshsalesField/intFreshsalesField.model');db[_0xc2c5('0x93')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x94'));db[_0xc2c5('0xc9')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xca'));db[_0xc2c5('0xcb')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xcc'));db['ChatInternalMessage']=db[_0xc2c5('0x4')]['import'](_0xc2c5('0xcd'));db[_0xc2c5('0xce')]=db['sequelize']['import'](_0xc2c5('0xcf'));db[_0xc2c5('0xd0')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0xd1'));db[_0xc2c5('0xd2')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xd3'));db[_0xc2c5('0xd4')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xd5'));db['SquareReport']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xd6'));db[_0xc2c5('0xd7')]=db['sequelize'][_0xc2c5('0x14')]('../api/squareReportDetail/squareReportDetail.model');db['JscriptyProject']=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0xd8'));db[_0xc2c5('0xd9')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xda'));db['SquareOdbc']=db['sequelize']['import']('../api/squareOdbc/squareOdbc.model');db[_0xc2c5('0xdb')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0xdc'));db['SquareRecording']=db[_0xc2c5('0x4')]['import']('../api/squareRecording/squareRecording.model');db[_0xc2c5('0xdd')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xde'));db['Team']=db[_0xc2c5('0x4')]['import']('../api/team/team.model');db[_0xc2c5('0xdf')]=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0xe0'));db['Campaign']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xe1'));db[_0xc2c5('0xe2')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/migration/migration.model');db[_0xc2c5('0xe3')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xe4'));db[_0xc2c5('0xe5')]=db[_0xc2c5('0x4')]['import']('../api/plugin/plugin.model');db[_0xc2c5('0xe6')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0xe7'));db['ChatTransferReport']=db[_0xc2c5('0x4')]['import']('../api/chatTransferReport/chatTransferReport.model');db[_0xc2c5('0xe8')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/faxTransferReport/faxTransferReport.model');db[_0xc2c5('0xe9')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0xc2c5('0xea')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xeb'));db['CmList']=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0xec'));db['VoicePrefix']=db['sequelize'][_0xc2c5('0x14')](_0xc2c5('0xed'));db[_0xc2c5('0xee')]=db['sequelize'][_0xc2c5('0x14')]('../api/userProfile/userProfile.model');db[_0xc2c5('0xef')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xf0'));db[_0xc2c5('0xf1')]=db[_0xc2c5('0x4')]['import'](_0xc2c5('0xf2'));db[_0xc2c5('0xf3')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xf4'));db[_0xc2c5('0xf5')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xf6'));db[_0xc2c5('0xf7')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')]('../api/whatsappApplication/whatsappApplication.model');db['WhatsappInteraction']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xf8'));db[_0xc2c5('0xf9')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xfa'));db[_0xc2c5('0xfb')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xfc'));db[_0xc2c5('0xfd')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xfe'));db['WhatsappQueue']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0xff'));db['CloudProvider']=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x100'));db[_0xc2c5('0x101')]=db[_0xc2c5('0x4')][_0xc2c5('0x14')](_0xc2c5('0x102'));db['User'][_0xc2c5('0x103')](db[_0xc2c5('0x23')],{'as':_0xc2c5('0x23'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x106')][_0xc2c5('0x107')](db[_0xc2c5('0x20')],{'as':'Recordings','foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x106')][_0xc2c5('0x107')](db[_0xc2c5('0x31')],{'as':_0xc2c5('0x108'),'foreignKey':'UserId'});db[_0xc2c5('0x106')]['hasMany'](db[_0xc2c5('0x1a')],{'as':'Extensions','onDelete':_0xc2c5('0x104'),'hooks':!![]});db[_0xc2c5('0x106')][_0xc2c5('0x107')](db['CmHopperFinal'],{'as':_0xc2c5('0x109'),'foreignKey':_0xc2c5('0x105')});db['User']['hasMany'](db[_0xc2c5('0x78')],{'as':_0xc2c5('0x10a'),'foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x106')][_0xc2c5('0x107')](db[_0xc2c5('0x10b')],{'as':'ReportAgentPreview','foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x106')]['hasMany'](db[_0xc2c5('0x61')],{'as':_0xc2c5('0x10c'),'foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x106')]['hasMany'](db[_0xc2c5('0x6a')],{'as':'ChatInteractions','foreignKey':_0xc2c5('0x105')});db['User'][_0xc2c5('0x107')](db[_0xc2c5('0x59')],{'as':_0xc2c5('0x10d'),'foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x106')][_0xc2c5('0x107')](db[_0xc2c5('0x4f')],{'as':'FaxInteractions','foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x106')][_0xc2c5('0x107')](db[_0xc2c5('0x43')],{'as':_0xc2c5('0x10e'),'foreignKey':'UserId'});db[_0xc2c5('0x106')][_0xc2c5('0x107')](db[_0xc2c5('0x10f')],{'as':'WhatsappInteractions','foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x106')][_0xc2c5('0x107')](db[_0xc2c5('0xf3')],{'as':_0xc2c5('0x110'),'foreignKey':_0xc2c5('0x111')});db['User'][_0xc2c5('0x112')](db['UserProfile'],{'as':_0xc2c5('0xee'),'foreignKey':'userProfileId'});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db[_0xc2c5('0x114')],{'as':_0xc2c5('0x115'),'through':'chat_group_has_users'});db['User'][_0xc2c5('0x113')](db['CmContact'],{'as':_0xc2c5('0x116'),'through':'cm_user_has_contacts'});db[_0xc2c5('0x106')]['belongsToMany'](db['CmList'],{'as':_0xc2c5('0x117'),'through':_0xc2c5('0x118')});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db[_0xc2c5('0x119')],{'through':_0xc2c5('0x11a')});db['User'][_0xc2c5('0x113')](db[_0xc2c5('0x43')],{'as':_0xc2c5('0x10e'),'through':'user_has_mail_interactions'});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db[_0xc2c5('0x6a')],{'as':_0xc2c5('0x11b'),'through':'user_has_chat_interactions'});db[_0xc2c5('0x106')]['belongsToMany'](db[_0xc2c5('0x4f')],{'as':'FaxInteractions','through':_0xc2c5('0x11c')});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db[_0xc2c5('0x59')],{'as':_0xc2c5('0x10d'),'through':_0xc2c5('0x11d')});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db['OpenchannelInteraction'],{'as':_0xc2c5('0x10c'),'through':'user_has_openchannel_interactions'});db['User'][_0xc2c5('0x113')](db[_0xc2c5('0x10f')],{'as':_0xc2c5('0x11e'),'through':_0xc2c5('0x11f')});db['User']['belongsToMany'](db[_0xc2c5('0x1e')],{'as':_0xc2c5('0x120'),'through':_0xc2c5('0x121'),'required':![]});db[_0xc2c5('0x106')]['belongsToMany'](db['MailQueue'],{'as':_0xc2c5('0x122'),'through':_0xc2c5('0x35'),'required':![]});db['User'][_0xc2c5('0x113')](db[_0xc2c5('0x6f')],{'as':'ChatQueues','through':_0xc2c5('0x33'),'required':![],'hooks':!![]});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db['FaxQueue'],{'as':_0xc2c5('0x123'),'through':'UserFaxQueue','required':![]});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db[_0xc2c5('0x124')],{'as':'SmsQueues','through':_0xc2c5('0x38'),'required':![]});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db['OpenchannelQueue'],{'as':'OpenchannelQueues','through':_0xc2c5('0x3a'),'required':![]});db['User'][_0xc2c5('0x113')](db[_0xc2c5('0x125')],{'as':'WhatsappQueues','through':_0xc2c5('0x3b'),'required':![]});db[_0xc2c5('0x106')]['belongsToMany'](db[_0xc2c5('0x126')],{'through':'cm_user_has_lists'});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db[_0xc2c5('0x127')],{'as':_0xc2c5('0x128'),'through':_0xc2c5('0x129'),'required':![]});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db[_0xc2c5('0x66')],{'as':_0xc2c5('0x12a'),'through':_0xc2c5('0x12b')});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db[_0xc2c5('0x4c')],{'as':'FaxAccounts','through':_0xc2c5('0x12c')});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db['MailAccount'],{'as':'MailAccounts','through':_0xc2c5('0x12d')});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db['OpenchannelAccount'],{'as':_0xc2c5('0x12e'),'through':_0xc2c5('0x12f')});db[_0xc2c5('0x106')][_0xc2c5('0x113')](db['SmsAccount'],{'as':_0xc2c5('0x130'),'through':'user_has_sms_accounts'});db[_0xc2c5('0x106')]['belongsToMany'](db[_0xc2c5('0xf5')],{'as':_0xc2c5('0x131'),'through':_0xc2c5('0x132')});db['User']['belongsToMany'](db[_0xc2c5('0xdb')],{'as':_0xc2c5('0x133'),'through':_0xc2c5('0x134')});db[_0xc2c5('0x16')]['hasMany'](db[_0xc2c5('0x1a')],{'as':_0xc2c5('0x135'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x136')});db[_0xc2c5('0x18')][_0xc2c5('0x107')](db[_0xc2c5('0x1a')],{'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x1a')][_0xc2c5('0x107')](db['VoiceExtension'],{'as':_0xc2c5('0x137'),'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x1c')][_0xc2c5('0x113')](db[_0xc2c5('0x8c')],{'as':_0xc2c5('0x138'),'through':_0xc2c5('0x139')});db[_0xc2c5('0x1e')]['hasMany'](db[_0xc2c5('0x31')],{'as':_0xc2c5('0x13a'),'foreignKey':_0xc2c5('0x13b')});db['VoiceQueue'][_0xc2c5('0x107')](db[_0xc2c5('0x13c')],{'as':'Hoppers','foreignKey':_0xc2c5('0x13b')});db['VoiceQueue']['hasMany'](db[_0xc2c5('0x77')],{'as':_0xc2c5('0x109'),'foreignKey':_0xc2c5('0x13b')});db[_0xc2c5('0x1e')][_0xc2c5('0x107')](db[_0xc2c5('0x78')],{'as':_0xc2c5('0x13d'),'foreignKey':_0xc2c5('0x13b')});db[_0xc2c5('0x1e')][_0xc2c5('0x107')](db[_0xc2c5('0x10b')],{'as':_0xc2c5('0x10b'),'foreignKey':_0xc2c5('0x13b')});db['VoiceQueue'][_0xc2c5('0x107')](db[_0xc2c5('0x13e')],{'as':_0xc2c5('0x13f'),'foreignKey':_0xc2c5('0x13b')});db[_0xc2c5('0x1e')][_0xc2c5('0x107')](db['JscriptySessionReport'],{'as':_0xc2c5('0x140'),'foreignKey':_0xc2c5('0x13b')});db[_0xc2c5('0x1e')]['belongsTo'](db[_0xc2c5('0x2e')],{'as':_0xc2c5('0x2e'),'foreignKey':_0xc2c5('0x141')});db[_0xc2c5('0x1e')]['belongsTo'](db[_0xc2c5('0x2e')],{'as':_0xc2c5('0x142'),'foreignKey':_0xc2c5('0x143')});db['VoiceQueue']['belongsTo'](db[_0xc2c5('0x144')],{'as':_0xc2c5('0x144'),'foreignKey':'IntervalId'});db[_0xc2c5('0x1e')][_0xc2c5('0x112')](db[_0xc2c5('0x87')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db['VoiceQueue'][_0xc2c5('0x113')](db[_0xc2c5('0x126')],{'as':'Lists','through':'voice_queues_has_cm_lists'});db[_0xc2c5('0x1e')][_0xc2c5('0x113')](db['User'],{'as':_0xc2c5('0x145'),'through':_0xc2c5('0x121')});db[_0xc2c5('0x1e')]['belongsToMany'](db[_0xc2c5('0x119')],{'as':'Teams','through':'TeamVoiceQueue'});db[_0xc2c5('0x1e')][_0xc2c5('0x113')](db[_0xc2c5('0x126')],{'as':'BlackLists','through':'voice_queues_has_cm_blacklists'});db[_0xc2c5('0x20')][_0xc2c5('0x112')](db['User'],{'as':'User','foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x22')]['belongsTo'](db['User'],{'as':_0xc2c5('0x106'),'foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x23')][_0xc2c5('0x107')](db[_0xc2c5('0x146')],{'as':'Messages','onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x147'),'sourceKey':_0xc2c5('0x148')});db[_0xc2c5('0x146')][_0xc2c5('0x112')](db[_0xc2c5('0x23')],{'foreignKey':_0xc2c5('0x147'),'targetKey':_0xc2c5('0x148')});db['VoiceCallReport'][_0xc2c5('0x107')](db[_0xc2c5('0x2b')],{'as':_0xc2c5('0x149'),'foreignKey':_0xc2c5('0x14a'),'constraints':![]});db[_0xc2c5('0x25')][_0xc2c5('0x107')](db[_0xc2c5('0x29')],{'as':_0xc2c5('0x14b'),'foreignKey':_0xc2c5('0x14a'),'constraints':![]});db['VoiceCallReport'][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x106'),'foreignKey':'UserId'});db[_0xc2c5('0x25')]['belongsTo'](db[_0xc2c5('0x73')],{'as':_0xc2c5('0x14c'),'foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0x3c')]['belongsTo'](db[_0xc2c5('0x3f')],{'as':_0xc2c5('0x3f'),'foreignKey':_0xc2c5('0x14e')});db[_0xc2c5('0x14f')][_0xc2c5('0x112')](db[_0xc2c5('0x3f')],{'as':'MailAccount','foreignKey':_0xc2c5('0x14e')});db[_0xc2c5('0x3f')][_0xc2c5('0x103')](db['MailServerIn'],{'as':_0xc2c5('0x150'),'onDelete':'cascade'});db['MailAccount']['hasOne'](db['MailServerOut'],{'as':_0xc2c5('0x151'),'onDelete':'cascade'});db[_0xc2c5('0x3f')][_0xc2c5('0x107')](db[_0xc2c5('0x83')],{'as':_0xc2c5('0x152'),'foreignKey':_0xc2c5('0x14e'),'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x3f')][_0xc2c5('0x107')](db[_0xc2c5('0x81')],{'as':_0xc2c5('0x153'),'foreignKey':'MailAccountId'});db['MailAccount'][_0xc2c5('0x107')](db['MailMessage'],{'as':_0xc2c5('0x154'),'foreignKey':_0xc2c5('0x14e')});db['MailAccount']['hasMany'](db['MailInteraction'],{'as':'Interactions'});db[_0xc2c5('0x3f')][_0xc2c5('0x107')](db[_0xc2c5('0x46')],{'as':_0xc2c5('0x137')});db['MailAccount'][_0xc2c5('0x112')](db[_0xc2c5('0x126')],{'as':_0xc2c5('0x155'),'foreignKey':_0xc2c5('0x156')});db[_0xc2c5('0x3f')][_0xc2c5('0x112')](db[_0xc2c5('0x157')],{'as':_0xc2c5('0x157'),'foreignKey':_0xc2c5('0x158')});db[_0xc2c5('0x3f')][_0xc2c5('0x112')](db[_0xc2c5('0x87')],{'as':_0xc2c5('0x159'),'foreignKey':_0xc2c5('0x15a')});db[_0xc2c5('0x3f')][_0xc2c5('0x113')](db[_0xc2c5('0x106')],{'as':'Agents','through':'user_has_mail_accounts'});db[_0xc2c5('0x40')][_0xc2c5('0x113')](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x145'),'through':_0xc2c5('0x35')});db[_0xc2c5('0x40')][_0xc2c5('0x113')](db[_0xc2c5('0x119')],{'through':_0xc2c5('0x15b'),'as':_0xc2c5('0x15c')});db['MailInteraction'][_0xc2c5('0x107')](db[_0xc2c5('0x44')],{'as':_0xc2c5('0x154'),'onDelete':'cascade','foreignKey':'MailInteractionId'});db[_0xc2c5('0x43')][_0xc2c5('0x112')](db['MailAccount'],{'as':_0xc2c5('0x15d'),'foreignKey':'MailAccountId'});db[_0xc2c5('0x43')][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'as':_0xc2c5('0x14c'),'foreignKey':'ContactId'});db[_0xc2c5('0x43')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'as':'Owner','foreignKey':_0xc2c5('0x105')});db['MailInteraction']['belongsToMany'](db['Tag'],{'through':'mail_interaction_has_tags','as':_0xc2c5('0x15e')});db[_0xc2c5('0x43')][_0xc2c5('0x113')](db['Tag'],{'through':'mail_interaction_has_tags','as':_0xc2c5('0x15f')});db[_0xc2c5('0x43')]['belongsToMany'](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x160'),'through':_0xc2c5('0x161'),'foreignKey':_0xc2c5('0x162')});db[_0xc2c5('0x44')][_0xc2c5('0x107')](db['Attachment'],{'as':_0xc2c5('0x163'),'onDelete':_0xc2c5('0x104')});db['MailMessage'][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x106')});db[_0xc2c5('0x44')]['belongsTo'](db[_0xc2c5('0x73')],{'onDelete':'cascade','as':_0xc2c5('0x14c')});db[_0xc2c5('0x44')][_0xc2c5('0x112')](db[_0xc2c5('0x43')],{'as':'Interaction','foreignKey':_0xc2c5('0x162')});db[_0xc2c5('0x44')][_0xc2c5('0x112')](db[_0xc2c5('0x3f')],{'as':_0xc2c5('0x15d'),'foreignKey':'MailAccountId'});db[_0xc2c5('0x44')][_0xc2c5('0x112')](db[_0xc2c5('0x66')],{'as':'ChatWebsite','foreignKey':_0xc2c5('0x164')});db['MailMessage']['belongsTo'](db[_0xc2c5('0x6d')],{'as':'ChatOfflineMessage','foreignKey':_0xc2c5('0x165')});db[_0xc2c5('0x46')][_0xc2c5('0x112')](db['User'],{'onDelete':'restrict'});db[_0xc2c5('0x46')]['belongsTo'](db[_0xc2c5('0x40')],{'onDelete':_0xc2c5('0x166')});db['MailApplication'][_0xc2c5('0x112')](db['MailAccount'],{'onDelete':_0xc2c5('0x166')});db['MailApplication'][_0xc2c5('0x112')](db[_0xc2c5('0x144')],{'onDelete':_0xc2c5('0x166'),'foreignKey':_0xc2c5('0x167')});db[_0xc2c5('0x46')][_0xc2c5('0x112')](db[_0xc2c5('0x8d')],{'onDelete':'restrict','foreignKey':_0xc2c5('0x168')});db[_0xc2c5('0x169')][_0xc2c5('0x112')](db[_0xc2c5('0x3f')],{});db[_0xc2c5('0x169')]['belongsTo'](db[_0xc2c5('0x126')],{'as':_0xc2c5('0x155'),'foreignKey':_0xc2c5('0x156')});db['MailQueueReport'][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'as':_0xc2c5('0x14c'),'foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0x169')][_0xc2c5('0x112')](db[_0xc2c5('0x43')],{});db[_0xc2c5('0x169')]['belongsTo'](db[_0xc2c5('0x44')],{});db[_0xc2c5('0x169')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{});db[_0xc2c5('0x169')][_0xc2c5('0x112')](db[_0xc2c5('0x40')],{});db['Dashboard'][_0xc2c5('0x107')](db[_0xc2c5('0x4a')],{'as':_0xc2c5('0x16a'),'onDelete':'cascade'});db[_0xc2c5('0x4c')][_0xc2c5('0x107')](db[_0xc2c5('0x83')],{'as':'Dispositions','foreignKey':'FaxAccountId','onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x4c')]['hasMany'](db['CannedAnswer'],{'as':_0xc2c5('0x153'),'foreignKey':_0xc2c5('0x16b')});db[_0xc2c5('0x4c')][_0xc2c5('0x107')](db['FaxInteraction'],{'as':'Interactions'});db['FaxAccount'][_0xc2c5('0x107')](db[_0xc2c5('0x16c')],{'as':_0xc2c5('0x137')});db[_0xc2c5('0x4c')]['hasMany'](db[_0xc2c5('0x1a')],{'as':_0xc2c5('0x16d'),'onDelete':'cascade'});db[_0xc2c5('0x4c')][_0xc2c5('0x107')](db['FaxMessage'],{'as':_0xc2c5('0x154')});db[_0xc2c5('0x4c')][_0xc2c5('0x112')](db['Trunk'],{'as':'Trunk'});db[_0xc2c5('0x4c')][_0xc2c5('0x112')](db[_0xc2c5('0x126')],{'as':'List','foreignKey':_0xc2c5('0x156')});db[_0xc2c5('0x4c')]['belongsTo'](db[_0xc2c5('0x87')],{'as':_0xc2c5('0x159'),'foreignKey':_0xc2c5('0x15a')});db['FaxAccount']['belongsToMany'](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x145'),'through':'user_has_fax_accounts'});db[_0xc2c5('0x16c')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'onDelete':_0xc2c5('0x166')});db['FaxApplication'][_0xc2c5('0x112')](db[_0xc2c5('0x53')],{'onDelete':_0xc2c5('0x166')});db[_0xc2c5('0x16c')][_0xc2c5('0x112')](db[_0xc2c5('0x4c')],{'onDelete':_0xc2c5('0x166')});db[_0xc2c5('0x16c')][_0xc2c5('0x112')](db[_0xc2c5('0x8d')],{'onDelete':_0xc2c5('0x166'),'foreignKey':_0xc2c5('0x168')});db[_0xc2c5('0x4f')][_0xc2c5('0x107')](db['FaxMessage'],{'as':_0xc2c5('0x154'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x16e')});db[_0xc2c5('0x4f')][_0xc2c5('0x112')](db[_0xc2c5('0x4c')],{'as':_0xc2c5('0x15d'),'foreignKey':_0xc2c5('0x16b')});db[_0xc2c5('0x4f')][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'as':_0xc2c5('0x14c'),'foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0x4f')][_0xc2c5('0x112')](db['User'],{'as':_0xc2c5('0x16f'),'foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x4f')][_0xc2c5('0x113')](db[_0xc2c5('0x8d')],{'through':_0xc2c5('0x170'),'as':_0xc2c5('0x15e')});db['FaxInteraction'][_0xc2c5('0x113')](db[_0xc2c5('0x8d')],{'through':_0xc2c5('0x170'),'as':_0xc2c5('0x15f')});db[_0xc2c5('0x4f')][_0xc2c5('0x113')](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x160'),'through':'user_has_fax_interactions','foreignKey':_0xc2c5('0x16e')});db[_0xc2c5('0x51')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'onDelete':_0xc2c5('0x104'),'as':_0xc2c5('0x106')});db[_0xc2c5('0x51')][_0xc2c5('0x112')](db[_0xc2c5('0x4f')],{'as':_0xc2c5('0x171'),'foreignKey':_0xc2c5('0x16e')});db['FaxMessage'][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'onDelete':_0xc2c5('0x104'),'as':_0xc2c5('0x14c')});db[_0xc2c5('0x51')][_0xc2c5('0x112')](db[_0xc2c5('0xe3')],{'as':_0xc2c5('0xe3'),'foreignKey':_0xc2c5('0x172')});db[_0xc2c5('0x51')][_0xc2c5('0x112')](db[_0xc2c5('0x4c')],{'as':_0xc2c5('0x15d'),'foreignKey':_0xc2c5('0x16b')});db['FaxQueue'][_0xc2c5('0x113')](db['User'],{'as':_0xc2c5('0x145'),'through':_0xc2c5('0x173')});db['FaxQueue'][_0xc2c5('0x113')](db[_0xc2c5('0x119')],{'through':_0xc2c5('0x174'),'as':_0xc2c5('0x15c')});db[_0xc2c5('0x55')][_0xc2c5('0x112')](db[_0xc2c5('0x4c')],{});db['FaxQueueReport'][_0xc2c5('0x112')](db[_0xc2c5('0x126')],{'as':_0xc2c5('0x155'),'foreignKey':_0xc2c5('0x156')});db[_0xc2c5('0x55')][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'as':_0xc2c5('0x14c'),'foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0x55')][_0xc2c5('0x112')](db[_0xc2c5('0x4f')],{});db[_0xc2c5('0x55')][_0xc2c5('0x112')](db[_0xc2c5('0x51')],{});db[_0xc2c5('0x55')]['belongsTo'](db[_0xc2c5('0x106')],{});db[_0xc2c5('0x55')][_0xc2c5('0x112')](db[_0xc2c5('0x53')],{});db[_0xc2c5('0x175')][_0xc2c5('0x107')](db['Disposition'],{'as':_0xc2c5('0x152'),'foreignKey':_0xc2c5('0x176'),'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x175')][_0xc2c5('0x107')](db[_0xc2c5('0x81')],{'as':_0xc2c5('0x153'),'foreignKey':_0xc2c5('0x176')});db[_0xc2c5('0x175')][_0xc2c5('0x107')](db[_0xc2c5('0x5b')],{'as':_0xc2c5('0x154'),'foreignKey':'SmsAccountId'});db[_0xc2c5('0x175')]['hasMany'](db[_0xc2c5('0x59')],{'as':_0xc2c5('0x177')});db[_0xc2c5('0x175')]['hasMany'](db[_0xc2c5('0x178')],{'as':_0xc2c5('0x137')});db['SmsAccount']['belongsTo'](db[_0xc2c5('0x126')],{'as':_0xc2c5('0x155'),'foreignKey':_0xc2c5('0x156')});db[_0xc2c5('0x175')][_0xc2c5('0x112')](db[_0xc2c5('0x87')],{'as':'mandatoryDispositionPause','foreignKey':_0xc2c5('0x15a')});db['SmsAccount'][_0xc2c5('0x113')](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x145'),'through':_0xc2c5('0x179')});db[_0xc2c5('0x178')][_0xc2c5('0x112')](db['User'],{'onDelete':_0xc2c5('0x166')});db[_0xc2c5('0x178')][_0xc2c5('0x112')](db[_0xc2c5('0x124')],{'onDelete':_0xc2c5('0x166')});db['SmsApplication']['belongsTo'](db[_0xc2c5('0x175')],{'onDelete':_0xc2c5('0x166')});db[_0xc2c5('0x178')][_0xc2c5('0x112')](db[_0xc2c5('0x144')],{'onDelete':_0xc2c5('0x166'),'foreignKey':_0xc2c5('0x167')});db['SmsApplication'][_0xc2c5('0x112')](db[_0xc2c5('0x8d')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xc2c5('0x59')][_0xc2c5('0x107')](db['SmsMessage'],{'as':'Messages','onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x17a')});db['SmsInteraction'][_0xc2c5('0x112')](db[_0xc2c5('0x175')],{'as':_0xc2c5('0x15d'),'foreignKey':'SmsAccountId'});db['SmsInteraction'][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'as':_0xc2c5('0x14c'),'foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0x59')][_0xc2c5('0x112')](db['User'],{'as':_0xc2c5('0x16f'),'foreignKey':_0xc2c5('0x105')});db['SmsInteraction'][_0xc2c5('0x113')](db[_0xc2c5('0x8d')],{'through':'sms_interaction_has_tags','as':'Tags'});db[_0xc2c5('0x59')]['belongsToMany'](db['Tag'],{'through':'sms_interaction_has_tags','as':_0xc2c5('0x15f')});db[_0xc2c5('0x59')][_0xc2c5('0x113')](db['User'],{'as':_0xc2c5('0x160'),'through':'user_has_sms_interactions','foreignKey':_0xc2c5('0x17a')});db[_0xc2c5('0x5b')]['belongsTo'](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x106')});db[_0xc2c5('0x5b')][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'onDelete':_0xc2c5('0x104'),'as':_0xc2c5('0x14c')});db[_0xc2c5('0x5b')][_0xc2c5('0x112')](db['SmsInteraction'],{'onDelete':'cascade','as':_0xc2c5('0x171'),'foreignKey':'SmsInteractionId'});db['SmsMessage']['belongsTo'](db[_0xc2c5('0x175')],{'as':_0xc2c5('0x15d'),'foreignKey':_0xc2c5('0x176')});db[_0xc2c5('0x124')]['belongsToMany'](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x145'),'through':_0xc2c5('0x38'),'foreignKey':'SmsQueueId'});db['SmsQueue'][_0xc2c5('0x113')](db['Team'],{'through':'team_has_sms_queues','as':_0xc2c5('0x15c')});db[_0xc2c5('0x5e')][_0xc2c5('0x107')](db[_0xc2c5('0x83')],{'as':_0xc2c5('0x152'),'foreignKey':_0xc2c5('0x17b'),'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x5e')][_0xc2c5('0x107')](db[_0xc2c5('0x81')],{'as':_0xc2c5('0x153'),'foreignKey':'OpenchannelAccountId'});db[_0xc2c5('0x5e')][_0xc2c5('0x107')](db[_0xc2c5('0x61')],{'as':_0xc2c5('0x177'),'foreignKey':'OpenchannelAccountId'});db[_0xc2c5('0x5e')][_0xc2c5('0x107')](db['OpenchannelMessage'],{'as':'Messages','foreignKey':_0xc2c5('0x17b')});db[_0xc2c5('0x5e')][_0xc2c5('0x107')](db[_0xc2c5('0x17c')],{'as':_0xc2c5('0x137'),'foreignKey':_0xc2c5('0x17b')});db[_0xc2c5('0x5e')]['belongsTo'](db[_0xc2c5('0x126')],{'as':_0xc2c5('0x155'),'foreignKey':_0xc2c5('0x156')});db[_0xc2c5('0x5e')]['belongsTo'](db[_0xc2c5('0x87')],{'as':_0xc2c5('0x159'),'foreignKey':_0xc2c5('0x15a')});db[_0xc2c5('0x5e')][_0xc2c5('0x113')](db[_0xc2c5('0x106')],{'as':'Agents','through':_0xc2c5('0x12f')});db['OpenchannelApplication']['belongsTo'](db[_0xc2c5('0x106')],{'onDelete':_0xc2c5('0x166')});db[_0xc2c5('0x17c')][_0xc2c5('0x112')](db[_0xc2c5('0x64')],{'onDelete':_0xc2c5('0x166'),'foreignKey':_0xc2c5('0x17d')});db[_0xc2c5('0x17c')][_0xc2c5('0x112')](db[_0xc2c5('0x5e')],{'onDelete':_0xc2c5('0x166'),'foreignKey':_0xc2c5('0x17b')});db[_0xc2c5('0x17c')][_0xc2c5('0x112')](db[_0xc2c5('0x144')],{'onDelete':_0xc2c5('0x166'),'foreignKey':_0xc2c5('0x167')});db[_0xc2c5('0x17c')][_0xc2c5('0x112')](db['Tag'],{'onDelete':_0xc2c5('0x166'),'foreignKey':_0xc2c5('0x168')});db[_0xc2c5('0x61')]['hasMany'](db['OpenchannelMessage'],{'as':_0xc2c5('0x154'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x17e')});db[_0xc2c5('0x61')][_0xc2c5('0x112')](db[_0xc2c5('0x5e')],{'as':_0xc2c5('0x15d'),'foreignKey':_0xc2c5('0x17b')});db[_0xc2c5('0x61')]['belongsTo'](db[_0xc2c5('0x73')],{'as':_0xc2c5('0x14c'),'foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0x61')]['belongsTo'](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x16f'),'foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x61')][_0xc2c5('0x113')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':'Tags'});db[_0xc2c5('0x61')][_0xc2c5('0x113')](db[_0xc2c5('0x8d')],{'through':_0xc2c5('0x17f'),'as':_0xc2c5('0x15f')});db[_0xc2c5('0x61')]['belongsToMany'](db[_0xc2c5('0x106')],{'as':'Users','through':'user_has_openchannel_interactions','foreignKey':_0xc2c5('0x17e')});db[_0xc2c5('0x63')]['belongsTo'](db[_0xc2c5('0x106')],{'onDelete':'cascade','as':_0xc2c5('0x106')});db[_0xc2c5('0x63')]['belongsTo'](db['CmContact'],{'onDelete':_0xc2c5('0x104'),'as':'Contact'});db[_0xc2c5('0x63')][_0xc2c5('0x112')](db['OpenchannelInteraction'],{'onDelete':_0xc2c5('0x104'),'as':_0xc2c5('0x171'),'foreignKey':_0xc2c5('0x17e')});db[_0xc2c5('0x63')][_0xc2c5('0x112')](db['Attachment'],{'as':_0xc2c5('0xe3'),'foreignKey':_0xc2c5('0x172')});db[_0xc2c5('0x63')][_0xc2c5('0x112')](db[_0xc2c5('0x5e')],{'as':'Account','foreignKey':_0xc2c5('0x17b')});db[_0xc2c5('0x64')][_0xc2c5('0x113')](db['User'],{'as':_0xc2c5('0x145'),'through':_0xc2c5('0x3a'),'foreignKey':_0xc2c5('0x17d')});db[_0xc2c5('0x64')][_0xc2c5('0x113')](db[_0xc2c5('0x119')],{'through':_0xc2c5('0x180'),'as':'Teams'});db[_0xc2c5('0x66')][_0xc2c5('0x107')](db[_0xc2c5('0x83')],{'as':_0xc2c5('0x152'),'foreignKey':_0xc2c5('0x164'),'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x66')][_0xc2c5('0x107')](db[_0xc2c5('0x81')],{'as':_0xc2c5('0x153'),'foreignKey':_0xc2c5('0x164')});db[_0xc2c5('0x66')]['hasMany'](db[_0xc2c5('0x71')],{'as':_0xc2c5('0x181')});db[_0xc2c5('0x66')]['hasMany'](db['ChatInteraction'],{'as':_0xc2c5('0x177')});db[_0xc2c5('0x66')]['hasMany'](db[_0xc2c5('0x182')],{'as':_0xc2c5('0x137')});db[_0xc2c5('0x66')][_0xc2c5('0x107')](db['ChatMessage'],{'as':_0xc2c5('0x154')});db[_0xc2c5('0x66')][_0xc2c5('0x112')](db['CmList'],{'as':_0xc2c5('0x155'),'foreignKey':_0xc2c5('0x156')});db['ChatWebsite'][_0xc2c5('0x112')](db[_0xc2c5('0x144')],{'as':_0xc2c5('0x144'),'foreignKey':_0xc2c5('0x167')});db[_0xc2c5('0x66')][_0xc2c5('0x112')](db['MailAccount'],{'as':_0xc2c5('0x3f'),'foreignKey':_0xc2c5('0x14e')});db[_0xc2c5('0x66')][_0xc2c5('0x112')](db[_0xc2c5('0x87')],{'as':'mandatoryDispositionPause','foreignKey':_0xc2c5('0x15a')});db['ChatWebsite'][_0xc2c5('0x113')](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x145'),'through':_0xc2c5('0x12b')});db[_0xc2c5('0x68')][_0xc2c5('0x112')](db[_0xc2c5('0x5e')],{});db[_0xc2c5('0x68')][_0xc2c5('0x112')](db[_0xc2c5('0x126')],{'as':_0xc2c5('0x155'),'foreignKey':_0xc2c5('0x156')});db[_0xc2c5('0x68')][_0xc2c5('0x112')](db['CmContact'],{'as':_0xc2c5('0x14c'),'foreignKey':'ContactId'});db[_0xc2c5('0x68')][_0xc2c5('0x112')](db['OpenchannelInteraction'],{});db[_0xc2c5('0x68')][_0xc2c5('0x112')](db[_0xc2c5('0x63')],{});db[_0xc2c5('0x68')]['belongsTo'](db[_0xc2c5('0x106')],{});db['OpenchannelQueueReport'][_0xc2c5('0x112')](db['OpenchannelQueue'],{});db[_0xc2c5('0x182')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x183'),'foreignKey':_0xc2c5('0x105'),'onDelete':_0xc2c5('0x166')});db['ChatApplication'][_0xc2c5('0x112')](db[_0xc2c5('0x6f')],{'as':_0xc2c5('0x184'),'foreignKey':_0xc2c5('0x185'),'onDelete':'restrict'});db['ChatApplication'][_0xc2c5('0x112')](db[_0xc2c5('0x66')],{'as':_0xc2c5('0x186'),'foreignKey':_0xc2c5('0x164'),'onDelete':_0xc2c5('0x166')});db[_0xc2c5('0x182')][_0xc2c5('0x112')](db[_0xc2c5('0x8d')],{'onDelete':_0xc2c5('0x166'),'foreignKey':_0xc2c5('0x168')});db[_0xc2c5('0x6a')][_0xc2c5('0x107')](db[_0xc2c5('0x187')],{'as':_0xc2c5('0x154'),'onDelete':_0xc2c5('0x104'),'foreignKey':'ChatInteractionId'});db[_0xc2c5('0x6a')]['belongsTo'](db[_0xc2c5('0x66')],{'as':_0xc2c5('0x15d'),'foreignKey':_0xc2c5('0x164')});db[_0xc2c5('0x6a')][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'as':_0xc2c5('0x14c'),'foreignKey':_0xc2c5('0x14d')});db['ChatInteraction'][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x16f'),'foreignKey':'UserId'});db['ChatInteraction']['belongsToMany'](db['Tag'],{'through':_0xc2c5('0x188'),'as':_0xc2c5('0x15e')});db[_0xc2c5('0x6a')][_0xc2c5('0x113')](db[_0xc2c5('0x8d')],{'through':'chat_interaction_has_tags','as':_0xc2c5('0x15f')});db[_0xc2c5('0x6a')][_0xc2c5('0x113')](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x160'),'through':'user_has_chat_interactions','foreignKey':'ChatInteractionId'});db[_0xc2c5('0x187')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'onDelete':'cascade','as':_0xc2c5('0x106')});db[_0xc2c5('0x187')]['belongsTo'](db[_0xc2c5('0x73')],{'onDelete':'cascade','as':'Contact','foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0x187')][_0xc2c5('0x112')](db['ChatInteraction'],{'onDelete':_0xc2c5('0x104'),'as':_0xc2c5('0x171'),'foreignKey':_0xc2c5('0x189')});db['ChatMessage']['belongsTo'](db[_0xc2c5('0xe3')],{'as':_0xc2c5('0xe3'),'foreignKey':_0xc2c5('0x172')});db['ChatMessage']['belongsTo'](db[_0xc2c5('0x66')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0xc2c5('0x6d')][_0xc2c5('0x107')](db[_0xc2c5('0xe3')],{'as':_0xc2c5('0x163'),'foreignKey':'ChatOfflineMessageId','onDelete':_0xc2c5('0x104'),'hooks':!![]});db['ChatOfflineMessage'][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'onDelete':_0xc2c5('0x104'),'as':_0xc2c5('0x14c'),'foreignKey':'ContactId'});db[_0xc2c5('0x6d')][_0xc2c5('0x112')](db['ChatWebsite'],{'as':_0xc2c5('0x15d'),'foreignKey':_0xc2c5('0x164')});db[_0xc2c5('0x6f')][_0xc2c5('0x113')](db[_0xc2c5('0x106')],{'as':'Agents','through':_0xc2c5('0x33'),'hooks':!![]});db[_0xc2c5('0x6f')]['belongsToMany'](db[_0xc2c5('0x119')],{'through':_0xc2c5('0x18a'),'as':_0xc2c5('0x15c')});db['ChatGroup'][_0xc2c5('0x107')](db[_0xc2c5('0x18b')],{'as':'Messages','foreignKey':'ChatGroupId','onDelete':'cascade'});db[_0xc2c5('0x114')][_0xc2c5('0x113')](db['User'],{'as':_0xc2c5('0x13a'),'through':_0xc2c5('0x18c')});db[_0xc2c5('0x71')]['belongsTo'](db[_0xc2c5('0x66')],{'as':'Website','foreignKey':_0xc2c5('0x164')});db[_0xc2c5('0x18d')][_0xc2c5('0x107')](db['CmContact'],{'as':_0xc2c5('0x116'),'foreignKey':_0xc2c5('0x18e')});db[_0xc2c5('0x73')][_0xc2c5('0x107')](db[_0xc2c5('0x13c')],{'as':_0xc2c5('0x18f'),'foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0x73')]['hasMany'](db['CmHopperFinal'],{'as':_0xc2c5('0x109'),'foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0x73')][_0xc2c5('0x107')](db[_0xc2c5('0x78')],{'as':_0xc2c5('0x13d'),'foreignKey':'ContactId'});db[_0xc2c5('0x73')][_0xc2c5('0x107')](db[_0xc2c5('0x10b')],{'as':_0xc2c5('0x10b'),'foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0x73')]['hasMany'](db['JscriptySessionReport'],{'as':_0xc2c5('0x140'),'foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0x73')][_0xc2c5('0x107')](db[_0xc2c5('0x61')],{'as':'OpenchannelInteractions','foreignKey':_0xc2c5('0x14d'),'onDelete':'restrict'});db[_0xc2c5('0x73')]['hasMany'](db[_0xc2c5('0x6a')],{'as':'ChatInteractions','foreignKey':_0xc2c5('0x14d'),'onDelete':_0xc2c5('0x166')});db[_0xc2c5('0x73')][_0xc2c5('0x107')](db[_0xc2c5('0x59')],{'as':_0xc2c5('0x10d'),'foreignKey':_0xc2c5('0x14d'),'onDelete':_0xc2c5('0x166')});db[_0xc2c5('0x73')]['hasMany'](db[_0xc2c5('0x4f')],{'as':_0xc2c5('0x190'),'foreignKey':_0xc2c5('0x14d'),'onDelete':_0xc2c5('0x166')});db[_0xc2c5('0x73')][_0xc2c5('0x107')](db[_0xc2c5('0x43')],{'as':_0xc2c5('0x10e'),'foreignKey':'ContactId','onDelete':_0xc2c5('0x166')});db[_0xc2c5('0x73')]['belongsTo'](db[_0xc2c5('0x18d')],{'as':_0xc2c5('0x191'),'foreignKey':_0xc2c5('0x18e')});db[_0xc2c5('0x73')][_0xc2c5('0x112')](db[_0xc2c5('0x126')],{'as':_0xc2c5('0x155'),'foreignKey':_0xc2c5('0x156'),'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x73')][_0xc2c5('0x113')](db['User'],{'as':_0xc2c5('0x160'),'through':_0xc2c5('0x192')});db['CmContact']['belongsToMany'](db[_0xc2c5('0x8d')],{'as':'Tags','through':_0xc2c5('0x193')});db[_0xc2c5('0x73')][_0xc2c5('0x113')](db[_0xc2c5('0x8d')],{'through':'cm_contact_has_tags','as':_0xc2c5('0x15f')});db[_0xc2c5('0x13c')][_0xc2c5('0x112')](db['CmContact'],{'as':_0xc2c5('0x14c'),'foreignKey':_0xc2c5('0x14d'),'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x13c')][_0xc2c5('0x112')](db[_0xc2c5('0x126')],{'as':'List','foreignKey':_0xc2c5('0x156'),'onDelete':_0xc2c5('0x104')});db['CmHopper']['belongsTo'](db['User'],{'as':_0xc2c5('0x183'),'foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x13c')][_0xc2c5('0x112')](db[_0xc2c5('0x1e')],{'as':_0xc2c5('0x184'),'foreignKey':_0xc2c5('0x13b'),'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x13c')][_0xc2c5('0x112')](db[_0xc2c5('0x194')],{'as':_0xc2c5('0x194'),'foreignKey':_0xc2c5('0x195'),'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x13c')][_0xc2c5('0x112')](db['User'],{'as':_0xc2c5('0x16f'),'foreignKey':_0xc2c5('0x196')});db[_0xc2c5('0x13e')][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'as':'Contact','foreignKey':_0xc2c5('0x14d'),'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x13e')][_0xc2c5('0x112')](db['CmList'],{'as':'List','foreignKey':'ListId','onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x13e')][_0xc2c5('0x112')](db[_0xc2c5('0x1e')],{'as':'Queue','foreignKey':_0xc2c5('0x13b'),'onDelete':_0xc2c5('0x104')});db['CmHopperBlack'][_0xc2c5('0x112')](db[_0xc2c5('0x194')],{'as':'Campaign','foreignKey':'CampaignId','onDelete':'cascade'});db['Automation'][_0xc2c5('0x107')](db[_0xc2c5('0x84')],{'as':{'plural':_0xc2c5('0x197'),'singular':_0xc2c5('0x198')},'foreignKey':'AutomationAllId','onDelete':_0xc2c5('0x104'),'hooks':!![]});db[_0xc2c5('0x7f')][_0xc2c5('0x107')](db[_0xc2c5('0x84')],{'as':{'plural':_0xc2c5('0x199'),'singular':_0xc2c5('0x19a')},'foreignKey':_0xc2c5('0x19b'),'onDelete':_0xc2c5('0x104'),'hooks':!![]});db[_0xc2c5('0x7f')][_0xc2c5('0x107')](db[_0xc2c5('0x7d')],{'as':_0xc2c5('0x19c'),'foreignKey':_0xc2c5('0x19d'),'onDelete':'cascade','hooks':!![]});db[_0xc2c5('0x83')][_0xc2c5('0x107')](db[_0xc2c5('0x83')],{'as':_0xc2c5('0x152'),'foreignKey':_0xc2c5('0x19e'),'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0x144')][_0xc2c5('0x107')](db[_0xc2c5('0x144')],{'as':_0xc2c5('0x19f'),'foreignKey':'IntervalId','onDelete':'cascade','hooks':!![],'required':![]});db[_0xc2c5('0x144')]['hasMany'](db[_0xc2c5('0x1a')],{'as':_0xc2c5('0x1a0'),'foreignKey':_0xc2c5('0x167'),'onDelete':'restrict'});db['Interval']['hasMany'](db[_0xc2c5('0x46')],{'as':_0xc2c5('0x1a1'),'foreignKey':'IntervalId'});db[_0xc2c5('0x144')][_0xc2c5('0x107')](db[_0xc2c5('0x182')],{'as':'ChatApplications','foreignKey':'IntervalId'});db[_0xc2c5('0x144')][_0xc2c5('0x107')](db[_0xc2c5('0x16c')],{'as':_0xc2c5('0x1a2'),'foreignKey':'IntervalId'});db[_0xc2c5('0x144')]['hasMany'](db[_0xc2c5('0x178')],{'as':'SmsApplications','foreignKey':'IntervalId'});db[_0xc2c5('0x1a3')][_0xc2c5('0x112')](db['MailAccount'],{});db[_0xc2c5('0x1a3')][_0xc2c5('0x112')](db[_0xc2c5('0x98')],{'foreignKey':_0xc2c5('0x1a4')});db[_0xc2c5('0x1a3')][_0xc2c5('0x112')](db[_0xc2c5('0x1a5')],{'foreignKey':_0xc2c5('0x1a6')});db[_0xc2c5('0x8c')][_0xc2c5('0x113')](db[_0xc2c5('0x1c')],{'as':_0xc2c5('0x1a7'),'through':_0xc2c5('0x139'),'onDelete':'restrict'});db['Tag'][_0xc2c5('0x113')](db[_0xc2c5('0x73')],{'through':_0xc2c5('0x193')});db[_0xc2c5('0x8d')][_0xc2c5('0x113')](db[_0xc2c5('0x6a')],{'through':'chat_interaction_has_tags'});db['Tag'][_0xc2c5('0x113')](db[_0xc2c5('0x43')],{'through':'mail_interaction_has_tags'});db['Tag'][_0xc2c5('0x113')](db[_0xc2c5('0x59')],{'through':_0xc2c5('0x1a8')});db[_0xc2c5('0x8d')][_0xc2c5('0x113')](db[_0xc2c5('0x4f')],{'through':_0xc2c5('0x170')});db[_0xc2c5('0x8d')]['belongsToMany'](db[_0xc2c5('0x61')],{'through':_0xc2c5('0x17f')});db[_0xc2c5('0x8d')][_0xc2c5('0x113')](db[_0xc2c5('0x10f')],{'through':_0xc2c5('0x1a9')});db[_0xc2c5('0x90')][_0xc2c5('0x107')](db['Condition'],{'as':{'plural':_0xc2c5('0x1aa'),'singular':_0xc2c5('0x1ab')},'foreignKey':_0xc2c5('0x1ac'),'onDelete':_0xc2c5('0x104'),'hooks':!![]});db['Trigger'][_0xc2c5('0x107')](db[_0xc2c5('0x84')],{'as':{'plural':_0xc2c5('0x1ad'),'singular':_0xc2c5('0x1ae')},'foreignKey':'TriggerAnyId','onDelete':_0xc2c5('0x104'),'hooks':!![]});db[_0xc2c5('0x90')][_0xc2c5('0x107')](db[_0xc2c5('0x7d')],{'as':_0xc2c5('0x19c'),'foreignKey':'TriggerId','onDelete':_0xc2c5('0x104'),'hooks':!![]});db[_0xc2c5('0x1a5')][_0xc2c5('0x107')](db[_0xc2c5('0x9c')],{'as':_0xc2c5('0x1af'),'onDelete':'cascade','foreignKey':_0xc2c5('0x1a6'),'hooks':!![]});db['AnalyticDefaultReport'][_0xc2c5('0x107')](db[_0xc2c5('0x9c')],{'as':'Fields','onDelete':_0xc2c5('0x104'),'foreignKey':'DefaultReportId'});db[_0xc2c5('0x1b0')][_0xc2c5('0x107')](db['AnalyticFieldReport'],{'as':_0xc2c5('0x1af'),'onDelete':'cascade','foreignKey':_0xc2c5('0x1b1')});db['AnalyticFieldReport'][_0xc2c5('0x112')](db[_0xc2c5('0x1b0')],{'foreignKey':_0xc2c5('0x1b1')});db['SalesforceAccount']['hasMany'](db['SalesforceConfiguration'],{'as':_0xc2c5('0x1b2'),'onDelete':_0xc2c5('0x104'),'foreignKey':'AccountId'});db[_0xc2c5('0x1b3')][_0xc2c5('0x107')](db[_0xc2c5('0xa2')],{'as':'Subjects','onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b4')});db[_0xc2c5('0x1b3')][_0xc2c5('0x107')](db['SalesforceField'],{'as':_0xc2c5('0x1b5'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b6')});db['SalesforceConfiguration'][_0xc2c5('0x107')](db[_0xc2c5('0xa2')],{'as':_0xc2c5('0x1af'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b7')});db[_0xc2c5('0x1b3')][_0xc2c5('0x112')](db[_0xc2c5('0x1b8')],{'as':_0xc2c5('0x15d'),'foreignKey':_0xc2c5('0x1b9')});db['SalesforceField'][_0xc2c5('0x107')](db[_0xc2c5('0xa2')],{'as':_0xc2c5('0x1ba'),'foreignKey':'SubjectId'});db[_0xc2c5('0xa2')][_0xc2c5('0x107')](db[_0xc2c5('0xa2')],{'as':_0xc2c5('0x1bb'),'foreignKey':'DescriptionId'});db[_0xc2c5('0xa2')][_0xc2c5('0x107')](db['SalesforceField'],{'as':'Field','foreignKey':_0xc2c5('0x1b7')});db[_0xc2c5('0xa2')][_0xc2c5('0x112')](db[_0xc2c5('0x1bc')],{'as':_0xc2c5('0x1bc'),'foreignKey':'VariableId'});db[_0xc2c5('0xa4')][_0xc2c5('0x107')](db[_0xc2c5('0xa6')],{'as':_0xc2c5('0x1b2'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b9')});db[_0xc2c5('0xa6')][_0xc2c5('0x107')](db['SugarcrmField'],{'as':_0xc2c5('0x1bd'),'onDelete':'cascade','foreignKey':_0xc2c5('0x1b4')});db['SugarcrmConfiguration'][_0xc2c5('0x107')](db[_0xc2c5('0x1be')],{'as':_0xc2c5('0x1b5'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b6')});db[_0xc2c5('0xa6')][_0xc2c5('0x107')](db[_0xc2c5('0x1be')],{'as':_0xc2c5('0x1af'),'onDelete':_0xc2c5('0x104'),'foreignKey':'FieldId'});db[_0xc2c5('0xa6')]['belongsTo'](db['SugarcrmAccount'],{'as':_0xc2c5('0x15d'),'foreignKey':_0xc2c5('0x1b9')});db[_0xc2c5('0x1be')][_0xc2c5('0x107')](db[_0xc2c5('0x1be')],{'as':_0xc2c5('0x1ba'),'foreignKey':_0xc2c5('0x1b4')});db[_0xc2c5('0x1be')]['hasMany'](db[_0xc2c5('0x1be')],{'as':_0xc2c5('0x1bb'),'foreignKey':_0xc2c5('0x1b6')});db[_0xc2c5('0x1be')][_0xc2c5('0x107')](db[_0xc2c5('0x1be')],{'as':'Field','foreignKey':'FieldId'});db['SugarcrmField'][_0xc2c5('0x112')](db[_0xc2c5('0x1bc')],{'as':_0xc2c5('0x1bc'),'foreignKey':_0xc2c5('0x1bf')});db['DeskAccount']['hasMany'](db[_0xc2c5('0xab')],{'as':_0xc2c5('0x1b2'),'onDelete':_0xc2c5('0x104'),'foreignKey':'AccountId'});db[_0xc2c5('0xab')][_0xc2c5('0x107')](db[_0xc2c5('0x1c0')],{'as':_0xc2c5('0x1bd'),'onDelete':'cascade','foreignKey':_0xc2c5('0x1b4')});db[_0xc2c5('0xab')][_0xc2c5('0x107')](db['DeskField'],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0xc2c5('0x1b6')});db[_0xc2c5('0xab')][_0xc2c5('0x107')](db[_0xc2c5('0x1c0')],{'as':'Fields','onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b7')});db[_0xc2c5('0xab')][_0xc2c5('0x112')](db['DeskAccount'],{'as':'Account','foreignKey':'AccountId'});db[_0xc2c5('0xab')][_0xc2c5('0x113')](db[_0xc2c5('0x8d')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0xc2c5('0x107')](db[_0xc2c5('0x1c0')],{'as':'Subject','foreignKey':_0xc2c5('0x1b4')});db['DeskField'][_0xc2c5('0x107')](db[_0xc2c5('0x1c0')],{'as':'Description','foreignKey':_0xc2c5('0x1b6')});db[_0xc2c5('0x1c0')]['hasMany'](db['DeskField'],{'as':_0xc2c5('0x1c1'),'foreignKey':_0xc2c5('0x1b7')});db[_0xc2c5('0x1c0')][_0xc2c5('0x112')](db[_0xc2c5('0x1bc')],{'as':_0xc2c5('0x1bc'),'foreignKey':'VariableId'});db['ZohoAccount'][_0xc2c5('0x107')](db['ZohoConfiguration'],{'as':_0xc2c5('0x1b2'),'onDelete':_0xc2c5('0x104'),'foreignKey':'AccountId'});db[_0xc2c5('0x1c2')][_0xc2c5('0x107')](db[_0xc2c5('0xb0')],{'as':'Subjects','onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b4')});db[_0xc2c5('0x1c2')][_0xc2c5('0x107')](db[_0xc2c5('0xb0')],{'as':_0xc2c5('0x1b5'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b6')});db['ZohoConfiguration'][_0xc2c5('0x107')](db[_0xc2c5('0xb0')],{'as':'Fields','onDelete':_0xc2c5('0x104'),'foreignKey':'FieldId'});db[_0xc2c5('0x1c2')][_0xc2c5('0x112')](db[_0xc2c5('0xae')],{'as':'Account','foreignKey':_0xc2c5('0x1b9')});db[_0xc2c5('0xb0')][_0xc2c5('0x107')](db['ZohoField'],{'as':'Subject','foreignKey':_0xc2c5('0x1b4')});db[_0xc2c5('0xb0')][_0xc2c5('0x107')](db[_0xc2c5('0xb0')],{'as':_0xc2c5('0x1bb'),'foreignKey':_0xc2c5('0x1b6')});db[_0xc2c5('0xb0')][_0xc2c5('0x107')](db['ZohoField'],{'as':_0xc2c5('0x1c1'),'foreignKey':_0xc2c5('0x1b7')});db[_0xc2c5('0xb0')][_0xc2c5('0x112')](db[_0xc2c5('0x1bc')],{'as':_0xc2c5('0x1bc'),'foreignKey':_0xc2c5('0x1bf')});db[_0xc2c5('0xb2')][_0xc2c5('0x107')](db['ZendeskConfiguration'],{'as':_0xc2c5('0x1b2'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b9')});db[_0xc2c5('0xb3')][_0xc2c5('0x107')](db['ZendeskField'],{'as':_0xc2c5('0x1bd'),'foreignKey':_0xc2c5('0x1b4')});db[_0xc2c5('0xb3')][_0xc2c5('0x107')](db['ZendeskField'],{'as':_0xc2c5('0x1b5'),'foreignKey':_0xc2c5('0x1b6')});db[_0xc2c5('0xb3')]['hasMany'](db[_0xc2c5('0xb5')],{'as':_0xc2c5('0x1af'),'foreignKey':_0xc2c5('0x1b7')});db[_0xc2c5('0xb3')][_0xc2c5('0x112')](db['ZendeskAccount'],{'as':'Account','foreignKey':_0xc2c5('0x1b9')});db[_0xc2c5('0xb3')][_0xc2c5('0x113')](db[_0xc2c5('0x8d')],{'through':_0xc2c5('0x1c3')});db[_0xc2c5('0xb5')]['hasMany'](db[_0xc2c5('0xb5')],{'as':_0xc2c5('0x1ba'),'foreignKey':_0xc2c5('0x1b4')});db[_0xc2c5('0xb5')]['hasMany'](db['ZendeskField'],{'as':_0xc2c5('0x1bb'),'foreignKey':_0xc2c5('0x1b6')});db[_0xc2c5('0xb5')][_0xc2c5('0x107')](db[_0xc2c5('0xb5')],{'as':_0xc2c5('0x1c1'),'foreignKey':_0xc2c5('0x1b7')});db[_0xc2c5('0xb5')][_0xc2c5('0x112')](db[_0xc2c5('0x1bc')],{'as':_0xc2c5('0x1bc'),'foreignKey':_0xc2c5('0x1bf')});db[_0xc2c5('0x1c4')]['hasMany'](db['FreshdeskConfiguration'],{'as':'Configurations','onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b9')});db[_0xc2c5('0xb7')]['hasMany'](db['FreshdeskField'],{'as':_0xc2c5('0x1bd'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b4')});db[_0xc2c5('0xb7')][_0xc2c5('0x107')](db['FreshdeskField'],{'as':_0xc2c5('0x1b5'),'onDelete':_0xc2c5('0x104'),'foreignKey':'DescriptionId'});db[_0xc2c5('0xb7')]['hasMany'](db[_0xc2c5('0xb8')],{'as':'Fields','onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b7')});db[_0xc2c5('0xb7')][_0xc2c5('0x112')](db[_0xc2c5('0x1c4')],{'as':'Account','foreignKey':_0xc2c5('0x1b9')});db[_0xc2c5('0xb7')][_0xc2c5('0x113')](db['Tag'],{'through':_0xc2c5('0x1c5')});db[_0xc2c5('0xb8')]['hasMany'](db['FreshdeskField'],{'as':_0xc2c5('0x1ba'),'foreignKey':'SubjectId'});db['FreshdeskField'][_0xc2c5('0x107')](db[_0xc2c5('0xb8')],{'as':'Description','foreignKey':_0xc2c5('0x1b6')});db['FreshdeskField'][_0xc2c5('0x107')](db[_0xc2c5('0xb8')],{'as':_0xc2c5('0x1c1'),'foreignKey':_0xc2c5('0x1b7')});db[_0xc2c5('0xb8')][_0xc2c5('0x112')](db['Variable'],{'as':'Variable','foreignKey':_0xc2c5('0x1bf')});db[_0xc2c5('0xb9')][_0xc2c5('0x107')](db['VtigerConfiguration'],{'as':_0xc2c5('0x1b2'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b9')});db['VtigerConfiguration']['hasMany'](db[_0xc2c5('0xbc')],{'as':_0xc2c5('0x1bd'),'foreignKey':_0xc2c5('0x1b4')});db[_0xc2c5('0xba')]['hasMany'](db['VtigerField'],{'as':_0xc2c5('0x1b5'),'foreignKey':_0xc2c5('0x1b6')});db[_0xc2c5('0xba')]['hasMany'](db[_0xc2c5('0xbc')],{'as':'Fields','foreignKey':_0xc2c5('0x1b7')});db['VtigerConfiguration'][_0xc2c5('0x112')](db[_0xc2c5('0xb9')],{'as':_0xc2c5('0x15d'),'foreignKey':_0xc2c5('0x1b9')});db['VtigerField']['hasMany'](db['VtigerField'],{'as':_0xc2c5('0x1ba'),'foreignKey':_0xc2c5('0x1b4')});db['VtigerField'][_0xc2c5('0x107')](db[_0xc2c5('0xbc')],{'as':_0xc2c5('0x1bb'),'foreignKey':_0xc2c5('0x1b6')});db['VtigerField'][_0xc2c5('0x107')](db[_0xc2c5('0xbc')],{'as':_0xc2c5('0x1c1'),'foreignKey':_0xc2c5('0x1b7')});db[_0xc2c5('0xbc')]['belongsTo'](db[_0xc2c5('0x1bc')],{'as':_0xc2c5('0x1bc'),'foreignKey':'VariableId'});db['ServicenowAccount'][_0xc2c5('0x107')](db['ServicenowConfiguration'],{'as':_0xc2c5('0x1b2'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b9')});db['ServicenowConfiguration']['hasMany'](db[_0xc2c5('0xc1')],{'as':_0xc2c5('0x1bd'),'foreignKey':_0xc2c5('0x1b4')});db['ServicenowConfiguration'][_0xc2c5('0x107')](db['ServicenowField'],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ServicenowConfiguration'][_0xc2c5('0x107')](db[_0xc2c5('0xc1')],{'as':_0xc2c5('0x1af'),'foreignKey':_0xc2c5('0x1b7')});db[_0xc2c5('0xc0')][_0xc2c5('0x112')](db['ServicenowAccount'],{'as':_0xc2c5('0x15d'),'foreignKey':_0xc2c5('0x1b9')});db['ServicenowField']['hasMany'](db[_0xc2c5('0xc1')],{'as':_0xc2c5('0x1ba'),'foreignKey':_0xc2c5('0x1b4')});db[_0xc2c5('0xc1')]['hasMany'](db['ServicenowField'],{'as':_0xc2c5('0x1bb'),'foreignKey':'DescriptionId'});db[_0xc2c5('0xc1')][_0xc2c5('0x107')](db[_0xc2c5('0xc1')],{'as':_0xc2c5('0x1c1'),'foreignKey':'FieldId'});db['ServicenowField'][_0xc2c5('0x112')](db[_0xc2c5('0x1bc')],{'as':'Variable','foreignKey':_0xc2c5('0x1bf')});db[_0xc2c5('0x1c6')][_0xc2c5('0x107')](db[_0xc2c5('0xc4')],{'as':'Configurations','onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b9')});db['Dynamics365Configuration']['hasMany'](db['Dynamics365Field'],{'as':_0xc2c5('0x1bd'),'onDelete':_0xc2c5('0x104'),'foreignKey':'SubjectId'});db[_0xc2c5('0xc4')][_0xc2c5('0x107')](db[_0xc2c5('0xc5')],{'as':_0xc2c5('0x1b5'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b6')});db[_0xc2c5('0xc4')]['hasMany'](db[_0xc2c5('0xc5')],{'as':_0xc2c5('0x1af'),'onDelete':_0xc2c5('0x104'),'foreignKey':'FieldId'});db['Dynamics365Configuration'][_0xc2c5('0x112')](db[_0xc2c5('0x1c6')],{'as':'Account','foreignKey':'AccountId'});db[_0xc2c5('0xc5')][_0xc2c5('0x107')](db[_0xc2c5('0xc5')],{'as':_0xc2c5('0x1ba'),'foreignKey':'SubjectId'});db[_0xc2c5('0xc5')][_0xc2c5('0x107')](db[_0xc2c5('0xc5')],{'as':_0xc2c5('0x1bb'),'foreignKey':_0xc2c5('0x1b6')});db[_0xc2c5('0xc5')][_0xc2c5('0x107')](db[_0xc2c5('0xc5')],{'as':_0xc2c5('0x1c1'),'foreignKey':_0xc2c5('0x1b7')});db[_0xc2c5('0xc5')][_0xc2c5('0x112')](db['Variable'],{'as':_0xc2c5('0x1bc'),'foreignKey':_0xc2c5('0x1bf')});db[_0xc2c5('0xc6')][_0xc2c5('0x107')](db[_0xc2c5('0xc7')],{'as':'Configurations','onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1b9')});db[_0xc2c5('0xc7')]['hasMany'](db[_0xc2c5('0x1c7')],{'as':_0xc2c5('0x1bd'),'foreignKey':_0xc2c5('0x1b4')});db[_0xc2c5('0xc7')][_0xc2c5('0x107')](db[_0xc2c5('0x1c7')],{'as':'Descriptions','foreignKey':'DescriptionId'});db['FreshsalesConfiguration'][_0xc2c5('0x107')](db[_0xc2c5('0x1c7')],{'as':_0xc2c5('0x1af'),'foreignKey':_0xc2c5('0x1b7')});db[_0xc2c5('0xc7')]['belongsTo'](db[_0xc2c5('0xc6')],{'as':'Account','foreignKey':'AccountId'});db[_0xc2c5('0x1c7')][_0xc2c5('0x107')](db[_0xc2c5('0x1c7')],{'as':_0xc2c5('0x1ba'),'foreignKey':_0xc2c5('0x1b4')});db['FreshsalesField'][_0xc2c5('0x107')](db[_0xc2c5('0x1c7')],{'as':_0xc2c5('0x1bb'),'foreignKey':_0xc2c5('0x1b6')});db[_0xc2c5('0x1c7')][_0xc2c5('0x107')](db[_0xc2c5('0x1c7')],{'as':'Field','foreignKey':_0xc2c5('0x1b7')});db['FreshsalesField'][_0xc2c5('0x112')](db[_0xc2c5('0x1bc')],{'as':_0xc2c5('0x1bc'),'foreignKey':_0xc2c5('0x1bf')});db[_0xc2c5('0xcb')]['belongsTo'](db['ChatWebsite'],{});db[_0xc2c5('0xcb')][_0xc2c5('0x112')](db[_0xc2c5('0x126')],{'as':_0xc2c5('0x155'),'foreignKey':'ListId'});db[_0xc2c5('0xcb')][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'as':_0xc2c5('0x14c'),'foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0xcb')][_0xc2c5('0x112')](db[_0xc2c5('0x6a')],{});db[_0xc2c5('0xcb')][_0xc2c5('0x112')](db['ChatMessage'],{});db[_0xc2c5('0xcb')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{});db['ChatQueueReport'][_0xc2c5('0x112')](db[_0xc2c5('0x6f')],{});db[_0xc2c5('0x18b')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x1c8')});db[_0xc2c5('0x18b')][_0xc2c5('0x112')](db['User'],{'onDelete':_0xc2c5('0x104'),'foreignKey':'ToId'});db[_0xc2c5('0xd2')][_0xc2c5('0x107')](db[_0xc2c5('0xd0')],{'foreignKey':_0xc2c5('0x1c9'),'onDelete':_0xc2c5('0x104')});db['JscriptySessionReport'][_0xc2c5('0x107')](db['JscriptyAnswerReport'],{'foreignKey':'SessionId','onDelete':_0xc2c5('0x104')});db[_0xc2c5('0xd4')][_0xc2c5('0x112')](db[_0xc2c5('0x175')],{});db[_0xc2c5('0xd4')]['belongsTo'](db['CmList'],{'as':_0xc2c5('0x155'),'foreignKey':_0xc2c5('0x156')});db['SmsQueueReport'][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'as':_0xc2c5('0x14c'),'foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0xd4')][_0xc2c5('0x112')](db[_0xc2c5('0x59')],{});db['SmsQueueReport'][_0xc2c5('0x112')](db[_0xc2c5('0x5b')],{});db[_0xc2c5('0xd4')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{});db['SmsQueueReport'][_0xc2c5('0x112')](db[_0xc2c5('0x124')],{});db[_0xc2c5('0x1ca')][_0xc2c5('0x107')](db[_0xc2c5('0xd2')],{'foreignKey':'ProjectId'});db['JscriptyProject']['hasMany'](db['JscriptyQuestionReport'],{'foreignKey':_0xc2c5('0x1cb')});db[_0xc2c5('0x1ca')][_0xc2c5('0x107')](db[_0xc2c5('0xce')],{'foreignKey':'ProjectId'});db[_0xc2c5('0xdb')][_0xc2c5('0x113')](db[_0xc2c5('0x106')],{'as':'Users','through':_0xc2c5('0x134')});db[_0xc2c5('0x119')][_0xc2c5('0x113')](db['User'],{'as':_0xc2c5('0x145'),'through':_0xc2c5('0x11a')});db[_0xc2c5('0x119')][_0xc2c5('0x113')](db['VoiceQueue'],{'through':_0xc2c5('0x101'),'as':_0xc2c5('0x120')});db[_0xc2c5('0x119')]['belongsToMany'](db[_0xc2c5('0x40')],{'through':'team_has_mail_queues','as':_0xc2c5('0x122')});db[_0xc2c5('0x119')][_0xc2c5('0x113')](db['ChatQueue'],{'through':_0xc2c5('0x18a'),'as':_0xc2c5('0x1cc')});db['Team']['belongsToMany'](db[_0xc2c5('0x53')],{'through':_0xc2c5('0x174'),'as':_0xc2c5('0x123')});db[_0xc2c5('0x119')][_0xc2c5('0x113')](db[_0xc2c5('0x124')],{'through':'team_has_sms_queues','as':_0xc2c5('0x1cd')});db[_0xc2c5('0x119')][_0xc2c5('0x113')](db['OpenchannelQueue'],{'through':_0xc2c5('0x180'),'as':_0xc2c5('0x1ce')});db['Team'][_0xc2c5('0x113')](db[_0xc2c5('0x125')],{'through':_0xc2c5('0x1cf'),'as':_0xc2c5('0x1d0')});db[_0xc2c5('0x194')][_0xc2c5('0x107')](db[_0xc2c5('0x13c')],{'as':_0xc2c5('0x18f'),'foreignKey':_0xc2c5('0x195')});db[_0xc2c5('0x194')][_0xc2c5('0x107')](db[_0xc2c5('0x77')],{'as':_0xc2c5('0x109'),'foreignKey':_0xc2c5('0x195')});db['Campaign'][_0xc2c5('0x107')](db[_0xc2c5('0x78')],{'as':_0xc2c5('0x13d'),'foreignKey':_0xc2c5('0x195')});db[_0xc2c5('0x194')][_0xc2c5('0x107')](db[_0xc2c5('0x13e')],{'as':_0xc2c5('0x13f'),'foreignKey':'CampaignId'});db[_0xc2c5('0x194')][_0xc2c5('0x112')](db[_0xc2c5('0x2e')],{'as':_0xc2c5('0x2e'),'foreignKey':'TrunkId'});db['Campaign']['belongsTo'](db[_0xc2c5('0x2e')],{'as':_0xc2c5('0x142'),'foreignKey':'TrunkBackupId'});db[_0xc2c5('0x194')][_0xc2c5('0x112')](db[_0xc2c5('0x144')],{'as':_0xc2c5('0x144'),'foreignKey':_0xc2c5('0x167')});db[_0xc2c5('0x194')][_0xc2c5('0x112')](db[_0xc2c5('0xdb')],{'as':_0xc2c5('0xdb'),'foreignKey':_0xc2c5('0x1d1')});db['Campaign'][_0xc2c5('0x113')](db[_0xc2c5('0x126')],{'as':'Lists','through':_0xc2c5('0x1d2')});db[_0xc2c5('0x194')][_0xc2c5('0x113')](db[_0xc2c5('0x126')],{'as':_0xc2c5('0x1d3'),'through':_0xc2c5('0x1d4')});db[_0xc2c5('0xe3')][_0xc2c5('0x112')](db[_0xc2c5('0x6d')],{'as':_0xc2c5('0x6d'),'foreignKey':'ChatOfflineMessageId'});db['MailTransferReport'][_0xc2c5('0x112')](db[_0xc2c5('0x44')],{});db[_0xc2c5('0xe6')]['belongsTo'](db[_0xc2c5('0x43')],{});db[_0xc2c5('0xe6')][_0xc2c5('0x112')](db[_0xc2c5('0x3f')],{'foreignKey':_0xc2c5('0x1d5'),'as':_0xc2c5('0x1d6')});db[_0xc2c5('0xe6')][_0xc2c5('0x112')](db['User'],{'foreignKey':_0xc2c5('0x1d7'),'as':_0xc2c5('0x1d8')});db['MailTransferReport'][_0xc2c5('0x112')](db['User'],{'foreignKey':_0xc2c5('0x1d9'),'as':_0xc2c5('0x1da')});db[_0xc2c5('0xe6')][_0xc2c5('0x112')](db[_0xc2c5('0x40')],{'foreignKey':_0xc2c5('0x1db'),'as':_0xc2c5('0x1dc')});db['MailTransferReport']['belongsTo'](db['MailAccount'],{'foreignKey':_0xc2c5('0x1dd'),'as':'ToAccount'});db[_0xc2c5('0x1de')]['belongsTo'](db[_0xc2c5('0x187')],{});db[_0xc2c5('0x1de')]['belongsTo'](db['ChatInteraction'],{});db[_0xc2c5('0x1de')][_0xc2c5('0x112')](db['ChatWebsite'],{'foreignKey':'FromChatWebsiteId','as':'FromAccount'});db[_0xc2c5('0x1de')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'foreignKey':_0xc2c5('0x1d7'),'as':_0xc2c5('0x1d8')});db['ChatTransferReport'][_0xc2c5('0x112')](db['User'],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0xc2c5('0x1de')][_0xc2c5('0x112')](db[_0xc2c5('0x6f')],{'foreignKey':'ToChatQueueId','as':_0xc2c5('0x1dc')});db['ChatTransferReport'][_0xc2c5('0x112')](db[_0xc2c5('0x66')],{'foreignKey':_0xc2c5('0x1df'),'as':'ToAccount'});db['FaxTransferReport'][_0xc2c5('0x112')](db[_0xc2c5('0x51')],{});db['FaxTransferReport']['belongsTo'](db[_0xc2c5('0x4f')],{});db[_0xc2c5('0xe8')][_0xc2c5('0x112')](db[_0xc2c5('0x4c')],{'foreignKey':_0xc2c5('0x1e0'),'as':'FromAccount'});db[_0xc2c5('0xe8')][_0xc2c5('0x112')](db['User'],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xc2c5('0xe8')][_0xc2c5('0x112')](db['User'],{'foreignKey':'ToUserId','as':_0xc2c5('0x1da')});db[_0xc2c5('0xe8')][_0xc2c5('0x112')](db[_0xc2c5('0x53')],{'foreignKey':'ToFaxQueueId','as':_0xc2c5('0x1dc')});db[_0xc2c5('0xe8')]['belongsTo'](db[_0xc2c5('0x4c')],{'foreignKey':_0xc2c5('0x1e1'),'as':_0xc2c5('0x1e2')});db[_0xc2c5('0xe9')][_0xc2c5('0x112')](db[_0xc2c5('0x63')],{});db[_0xc2c5('0xe9')][_0xc2c5('0x112')](db[_0xc2c5('0x61')],{});db[_0xc2c5('0xe9')]['belongsTo'](db[_0xc2c5('0x5e')],{'foreignKey':'FromOpenchannelAccountId','as':_0xc2c5('0x1d6')});db['OpenchannelTransferReport'][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'foreignKey':'FromUserId','as':'FromAgent'});db['OpenchannelTransferReport'][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'foreignKey':_0xc2c5('0x1d9'),'as':_0xc2c5('0x1da')});db[_0xc2c5('0xe9')][_0xc2c5('0x112')](db[_0xc2c5('0x64')],{'foreignKey':'ToOpenchannelQueueId','as':_0xc2c5('0x1dc')});db[_0xc2c5('0xe9')][_0xc2c5('0x112')](db[_0xc2c5('0x5e')],{'foreignKey':_0xc2c5('0x1e3'),'as':'ToAccount'});db[_0xc2c5('0xea')][_0xc2c5('0x112')](db[_0xc2c5('0x5b')],{});db[_0xc2c5('0xea')][_0xc2c5('0x112')](db['SmsInteraction'],{});db[_0xc2c5('0xea')]['belongsTo'](db[_0xc2c5('0x175')],{'foreignKey':_0xc2c5('0x1e4'),'as':_0xc2c5('0x1d6')});db['SmsTransferReport'][_0xc2c5('0x112')](db['User'],{'foreignKey':_0xc2c5('0x1d7'),'as':_0xc2c5('0x1d8')});db['SmsTransferReport'][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0xc2c5('0xea')]['belongsTo'](db[_0xc2c5('0x124')],{'foreignKey':_0xc2c5('0x1e5'),'as':_0xc2c5('0x1dc')});db[_0xc2c5('0xea')][_0xc2c5('0x112')](db['SmsAccount'],{'foreignKey':_0xc2c5('0x1e6'),'as':_0xc2c5('0x1e2')});db[_0xc2c5('0x126')][_0xc2c5('0x107')](db[_0xc2c5('0x83')],{'as':'Dispositions','foreignKey':'ListId','onDelete':'cascade'});db[_0xc2c5('0x126')][_0xc2c5('0x107')](db['CmCustomField'],{'as':_0xc2c5('0x1e7'),'foreignKey':'ListId'});db[_0xc2c5('0x126')][_0xc2c5('0x107')](db[_0xc2c5('0x73')],{'as':_0xc2c5('0x116'),'onDelete':_0xc2c5('0x104'),'foreignKey':_0xc2c5('0x156')});db[_0xc2c5('0x126')]['hasMany'](db[_0xc2c5('0x77')],{'as':_0xc2c5('0x109'),'foreignKey':'ListId'});db[_0xc2c5('0x126')]['hasMany'](db[_0xc2c5('0x78')],{'as':'HopperHistory','foreignKey':_0xc2c5('0x156')});db[_0xc2c5('0x126')]['hasMany'](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0xc2c5('0x156')});db[_0xc2c5('0x126')][_0xc2c5('0x113')](db[_0xc2c5('0x1e')],{'as':_0xc2c5('0x1e8'),'through':_0xc2c5('0x1e9')});db[_0xc2c5('0x126')][_0xc2c5('0x113')](db['User'],{'as':_0xc2c5('0x145'),'through':_0xc2c5('0x118')});db[_0xc2c5('0x127')][_0xc2c5('0x107')](db[_0xc2c5('0x1a')],{'as':_0xc2c5('0x1a0'),'onDelete':'cascade'});db[_0xc2c5('0x127')][_0xc2c5('0x113')](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x145'),'through':_0xc2c5('0x129')});db[_0xc2c5('0xee')][_0xc2c5('0x107')](db['User'],{'as':_0xc2c5('0x160'),'foreignKey':_0xc2c5('0x1ea')});db[_0xc2c5('0xee')]['hasMany'](db[_0xc2c5('0xef')],{'as':_0xc2c5('0x1eb'),'foreignKey':_0xc2c5('0x1ea'),'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0xef')][_0xc2c5('0x107')](db[_0xc2c5('0xf1')],{'as':'Resources','foreignKey':_0xc2c5('0x1ec'),'onDelete':'cascade'});db[_0xc2c5('0xf5')][_0xc2c5('0x107')](db[_0xc2c5('0x83')],{'as':'Dispositions','foreignKey':_0xc2c5('0x1ed'),'onDelete':_0xc2c5('0x104')});db[_0xc2c5('0xf5')][_0xc2c5('0x107')](db[_0xc2c5('0x81')],{'as':_0xc2c5('0x153'),'foreignKey':_0xc2c5('0x1ed')});db[_0xc2c5('0xf5')]['hasMany'](db[_0xc2c5('0xf9')],{'as':_0xc2c5('0x154'),'foreignKey':'WhatsappAccountId'});db[_0xc2c5('0xf5')][_0xc2c5('0x107')](db['WhatsappInteraction'],{'as':_0xc2c5('0x177')});db[_0xc2c5('0xf5')][_0xc2c5('0x107')](db[_0xc2c5('0xf7')],{'as':_0xc2c5('0x137')});db[_0xc2c5('0xf5')]['belongsTo'](db[_0xc2c5('0x126')],{'as':_0xc2c5('0x155'),'foreignKey':_0xc2c5('0x156')});db[_0xc2c5('0xf5')][_0xc2c5('0x112')](db[_0xc2c5('0x87')],{'as':_0xc2c5('0x159'),'foreignKey':_0xc2c5('0x15a')});db[_0xc2c5('0xf5')][_0xc2c5('0x113')](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x145'),'through':'user_has_whatsapp_accounts'});db[_0xc2c5('0xf7')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'onDelete':_0xc2c5('0x166')});db['WhatsappApplication'][_0xc2c5('0x112')](db['WhatsappQueue'],{'onDelete':'restrict'});db[_0xc2c5('0xf7')][_0xc2c5('0x112')](db['WhatsappAccount'],{'onDelete':_0xc2c5('0x166')});db[_0xc2c5('0xf7')][_0xc2c5('0x112')](db['Interval'],{'onDelete':_0xc2c5('0x166'),'foreignKey':_0xc2c5('0x167')});db[_0xc2c5('0xf7')][_0xc2c5('0x112')](db[_0xc2c5('0x8d')],{'onDelete':'restrict','foreignKey':_0xc2c5('0x168')});db[_0xc2c5('0x10f')][_0xc2c5('0x107')](db[_0xc2c5('0xf9')],{'as':_0xc2c5('0x154'),'onDelete':_0xc2c5('0x104'),'foreignKey':'WhatsappInteractionId'});db[_0xc2c5('0x10f')][_0xc2c5('0x112')](db['WhatsappAccount'],{'as':'Account','foreignKey':_0xc2c5('0x1ed')});db[_0xc2c5('0x10f')][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'as':_0xc2c5('0x14c'),'foreignKey':_0xc2c5('0x14d')});db[_0xc2c5('0x10f')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'as':'Owner','foreignKey':_0xc2c5('0x105')});db[_0xc2c5('0x10f')]['belongsToMany'](db[_0xc2c5('0x8d')],{'through':'whatsapp_interaction_has_tags','as':_0xc2c5('0x15e')});db[_0xc2c5('0x10f')][_0xc2c5('0x113')](db['Tag'],{'through':_0xc2c5('0x1a9'),'as':_0xc2c5('0x15f')});db[_0xc2c5('0x10f')][_0xc2c5('0x113')](db[_0xc2c5('0x106')],{'as':'Users','through':_0xc2c5('0x11f'),'foreignKey':'WhatsappInteractionId'});db[_0xc2c5('0xf9')][_0xc2c5('0x112')](db['User'],{'as':_0xc2c5('0x106')});db[_0xc2c5('0xf9')][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'onDelete':_0xc2c5('0x104'),'as':_0xc2c5('0x14c')});db[_0xc2c5('0xf9')][_0xc2c5('0x112')](db[_0xc2c5('0x10f')],{'onDelete':_0xc2c5('0x104'),'as':_0xc2c5('0x171'),'foreignKey':_0xc2c5('0x1ee')});db[_0xc2c5('0xf9')][_0xc2c5('0x112')](db[_0xc2c5('0xf5')],{'as':'Account','foreignKey':'WhatsappAccountId'});db[_0xc2c5('0xfb')]['belongsTo'](db[_0xc2c5('0xf5')],{});db[_0xc2c5('0xfb')][_0xc2c5('0x112')](db[_0xc2c5('0x126')],{'as':'List','foreignKey':_0xc2c5('0x156')});db[_0xc2c5('0xfb')][_0xc2c5('0x112')](db[_0xc2c5('0x73')],{'as':_0xc2c5('0x14c'),'foreignKey':_0xc2c5('0x14d')});db['WhatsappQueueReport'][_0xc2c5('0x112')](db[_0xc2c5('0x10f')],{});db[_0xc2c5('0xfb')][_0xc2c5('0x112')](db[_0xc2c5('0x125')],{});db[_0xc2c5('0xfb')]['belongsTo'](db['WhatsappMessage'],{});db[_0xc2c5('0xfb')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{});db[_0xc2c5('0xfd')]['belongsTo'](db[_0xc2c5('0xf9')],{});db[_0xc2c5('0xfd')][_0xc2c5('0x112')](db[_0xc2c5('0x10f')],{});db['WhatsappTransferReport'][_0xc2c5('0x112')](db[_0xc2c5('0xf5')],{'foreignKey':_0xc2c5('0x1ef'),'as':_0xc2c5('0x1d6')});db['WhatsappTransferReport']['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0xc2c5('0x1f0'),'as':_0xc2c5('0x1e2')});db['WhatsappTransferReport']['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0xc2c5('0x1f1'),'as':_0xc2c5('0x1dc')});db[_0xc2c5('0xfd')]['belongsTo'](db[_0xc2c5('0x106')],{'foreignKey':'FromUserId','as':_0xc2c5('0x1d8')});db[_0xc2c5('0xfd')][_0xc2c5('0x112')](db[_0xc2c5('0x106')],{'foreignKey':_0xc2c5('0x1d9'),'as':_0xc2c5('0x1da')});db['WhatsappQueue']['belongsToMany'](db[_0xc2c5('0x106')],{'as':_0xc2c5('0x145'),'through':_0xc2c5('0x3b'),'foreignKey':_0xc2c5('0x1f2')});db['WhatsappQueue'][_0xc2c5('0x113')](db[_0xc2c5('0x119')],{'through':_0xc2c5('0x1cf'),'as':_0xc2c5('0x15c')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
index 524beb4..62f0631 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ed2=['/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','./api/voiceCallReport','/api/voice/agents/reports','./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/interactions','./api/mailInteraction','/api/mail/messages','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/messages','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','./api/cmContact','/api/cm/hopper','/api/cm/hopper_black','/api/cm/hopper_final','./api/cmHopperFinal','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','./api/condition','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','/api/integrations/desk/accounts','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','/api/integrations/zoho/configurations','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','./api/intFreshdeskConfiguration','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/fields','./api/intVtigerField','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','/api/networks','./api/network','/api/chat/reports/queue','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','/api/square/projects','./api/squareProject','/api/square/recordings','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','/api/attachments','/api/plugins','./api/plugin','/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/userProfile/sections','./api/userProfileSection','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappApplication','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','./api/authLocal','/api/auth/google','/api/jira','./api/jira','./api/rpc','/api/version','/api/pm2','./api/pm2','./api/webbar','/apidoc','static','join','root','/www','/demo','snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','username','password','newPassword','apiKey','phone','mobile','fax','clientId','clientSecret','securityToken','code','accessKey','tenantId','token','channelSecret','accessToken','consumerKey','consumerSecret','calleridname','calleridnum','exten','vidaooApiKey','clientEmail','privateKey','accesskeyid','secretaccesskey','key','pass','accountSid','secret','isPlainObject','isArray','length','isString','replace','}@@','includes','lodash','path','express','express-winston','util','./config/environment','./config/logger','auth','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','headers','x-forwarded-for','connection','url','statusCode','responseTime','user','name','role','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','format','method','remoteAddress','other','agent_name','test','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext'];(function(_0x16a572,_0x4571ce){var _0x33b88a=function(_0x11c899){while(--_0x11c899){_0x16a572['push'](_0x16a572['shift']());}};_0x33b88a(++_0x4571ce);}(_0x9ed2,0x122));var _0x29ed=function(_0x389832,_0x10a4a9){_0x389832=_0x389832-0x0;var _0x59429e=_0x9ed2[_0x389832];return _0x59429e;};'use strict';var _=require(_0x29ed('0x0'));var path=require(_0x29ed('0x1'));var express=require(_0x29ed('0x2'));var ewinston=require(_0x29ed('0x3'));var util=require(_0x29ed('0x4'));var errors=require('./errors');var config=require(_0x29ed('0x5'));var logger=require(_0x29ed('0x6'))('api');var authLogger=require(_0x29ed('0x6'))(_0x29ed('0x7'));exports['default']=function(_0x3b92fe){_0x3b92fe['use'](ewinston[_0x29ed('0x8')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x4ceefe,_0xab08fe){var _0x1baca9=_0x29ed('0x9');if(!_[_0x29ed('0xa')](_0x4ceefe[_0x29ed('0xb')])){_0x1baca9+=_0x29ed('0xc');var _0x40d3f6=_0x4ceefe[_0x29ed('0xb')];maskSensitiveData(_0x40d3f6);}return util['format'](_0x1baca9,_0x4ceefe['method'],_0x4ceefe[_0x29ed('0xd')][_0x29ed('0xe')]?_0x4ceefe['headers'][_0x29ed('0xe')]:_0x4ceefe[_0x29ed('0xf')]['remoteAddress']||_0x4ceefe['ip'],_0x4ceefe[_0x29ed('0x10')],_0xab08fe[_0x29ed('0x11')],_0xab08fe[_0x29ed('0x12')],_0x4ceefe[_0x29ed('0x13')]?_0x4ceefe[_0x29ed('0x13')]['id']:null,_0x4ceefe[_0x29ed('0x13')]?_0x4ceefe[_0x29ed('0x13')][_0x29ed('0x14')]:null,_0x4ceefe['user']?_0x4ceefe[_0x29ed('0x13')][_0x29ed('0x15')]:null,_0x40d3f6?util['inspect'](_0x40d3f6,![],null):'');}}));_0x3b92fe[_0x29ed('0x16')](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x3972fd,_0x21002f){var _0x417283=_0x29ed('0x17');if(_0x3972fd[_0x29ed('0xb')]&&_0x3972fd[_0x29ed('0xb')][_0x29ed('0x18')]&&_0x3972fd['body'][_0x29ed('0x19')]){_0x417283=_0x29ed('0x1a');}return util[_0x29ed('0x1b')](_0x417283,_0x3972fd[_0x29ed('0x1c')],_0x3972fd[_0x29ed('0xd')]['x-forwarded-for']?_0x3972fd[_0x29ed('0xd')]['x-forwarded-for']:_0x3972fd[_0x29ed('0xf')][_0x29ed('0x1d')]||_0x3972fd['ip'],_0x3972fd[_0x29ed('0x10')],_0x21002f['statusCode'],_0x21002f[_0x29ed('0x12')],_0x3972fd['user']?_0x3972fd[_0x29ed('0x13')]['id']:null,_0x3972fd[_0x29ed('0x13')]?_0x3972fd[_0x29ed('0x13')][_0x29ed('0x14')]:null,_0x3972fd['user']?_0x3972fd['user']['role']:null,_0x3972fd[_0x29ed('0xb')]&&_0x3972fd[_0x29ed('0xb')][_0x29ed('0x18')]?_0x3972fd[_0x29ed('0xb')][_0x29ed('0x18')]:_0x29ed('0x1e'),_0x3972fd['body']&&_0x3972fd['body'][_0x29ed('0x19')]?_0x3972fd['body'][_0x29ed('0x19')]:'',_0x3972fd[_0x29ed('0xb')]&&_0x3972fd[_0x29ed('0xb')][_0x29ed('0x1f')]?_0x3972fd[_0x29ed('0xb')]['agent_name']:'');},'ignoreRoute':function(_0x166ad1){var _0x196404=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x196404[_0x29ed('0x20')](_0x166ad1[_0x29ed('0x10')]);}}));_0x3b92fe[_0x29ed('0x16')]('/api/users',require('./api/user'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x21'),require(_0x29ed('0x22')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x23'),require(_0x29ed('0x24')));_0x3b92fe['use'](_0x29ed('0x25'),require(_0x29ed('0x26')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x27'),require(_0x29ed('0x28')));_0x3b92fe[_0x29ed('0x16')]('/api/voice/queues',require('./api/voiceQueue'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x29'),require(_0x29ed('0x2a')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x2b'),require('./api/screenRecording'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x2c'),require(_0x29ed('0x2d')));_0x3b92fe['use'](_0x29ed('0x2e'),require(_0x29ed('0x2f')));_0x3b92fe[_0x29ed('0x16')]('/api/voice/calls/reports',require(_0x29ed('0x30')));_0x3b92fe[_0x29ed('0x16')]('/api/voice/dials/reports',require('./api/voiceDialReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x31'),require(_0x29ed('0x32')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x33'),require(_0x29ed('0x34')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x35'),require(_0x29ed('0x36')));_0x3b92fe[_0x29ed('0x16')]('/api/trunks',require(_0x29ed('0x37')));_0x3b92fe['use'](_0x29ed('0x38'),require(_0x29ed('0x39')));_0x3b92fe['use'](_0x29ed('0x3a'),require(_0x29ed('0x3b')));_0x3b92fe['use'](_0x29ed('0x3c'),require(_0x29ed('0x3d')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x3e'),require(_0x29ed('0x3f')));_0x3b92fe[_0x29ed('0x16')]('/api/mail/substatuses',require('./api/mailSubstatus'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x40'),require(_0x29ed('0x41')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x42'),require('./api/mailMessage'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x43'),require(_0x29ed('0x44')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x45'),require(_0x29ed('0x46')));_0x3b92fe['use'](_0x29ed('0x47'),require(_0x29ed('0x48')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x49'),require('./api/dashboardItem'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x4a'),require(_0x29ed('0x4b')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x4c'),require(_0x29ed('0x4d')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x4e'),require('./api/faxInteraction'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x4f'),require(_0x29ed('0x50')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x51'),require(_0x29ed('0x52')));_0x3b92fe['use'](_0x29ed('0x53'),require(_0x29ed('0x54')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x55'),require(_0x29ed('0x56')));_0x3b92fe[_0x29ed('0x16')]('/api/sms/applications',require(_0x29ed('0x57')));_0x3b92fe['use'](_0x29ed('0x58'),require(_0x29ed('0x59')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x5a'),require(_0x29ed('0x5b')));_0x3b92fe['use']('/api/sms/queues',require(_0x29ed('0x5c')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x5d'),require(_0x29ed('0x5e')));_0x3b92fe[_0x29ed('0x16')]('/api/openchannel/applications',require('./api/openchannelApplication'));_0x3b92fe['use']('/api/openchannel/interactions',require('./api/openchannelInteraction'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x5f'),require('./api/openchannelMessage'));_0x3b92fe['use'](_0x29ed('0x60'),require(_0x29ed('0x61')));_0x3b92fe['use'](_0x29ed('0x62'),require(_0x29ed('0x63')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x64'),require(_0x29ed('0x65')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x66'),require('./api/chatApplication'));_0x3b92fe[_0x29ed('0x16')]('/api/chat/interactions',require(_0x29ed('0x67')));_0x3b92fe['use'](_0x29ed('0x68'),require(_0x29ed('0x69')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x6a'),require(_0x29ed('0x6b')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x6c'),require(_0x29ed('0x6d')));_0x3b92fe[_0x29ed('0x16')]('/api/chat/groups',require('./api/chatGroup'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x6e'),require(_0x29ed('0x6f')));_0x3b92fe['use'](_0x29ed('0x70'),require(_0x29ed('0x71')));_0x3b92fe[_0x29ed('0x16')]('/api/cm/contacts',require(_0x29ed('0x72')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x73'),require('./api/cmHopper'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x74'),require('./api/cmHopperBlack'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x75'),require(_0x29ed('0x76')));_0x3b92fe[_0x29ed('0x16')]('/api/cm/hopper_history',require(_0x29ed('0x77')));_0x3b92fe['use'](_0x29ed('0x78'),require(_0x29ed('0x79')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x7a'),require(_0x29ed('0x7b')));_0x3b92fe[_0x29ed('0x16')]('/api/automations',require(_0x29ed('0x7c')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x7d'),require(_0x29ed('0x7e')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x7f'),require(_0x29ed('0x80')));_0x3b92fe['use']('/api/conditions',require(_0x29ed('0x81')));_0x3b92fe[_0x29ed('0x16')]('/api/intervals',require('./api/interval'));_0x3b92fe[_0x29ed('0x16')]('/api/pauses',require(_0x29ed('0x82')));_0x3b92fe['use'](_0x29ed('0x83'),require(_0x29ed('0x84')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x85'),require('./api/voiceQueuesLog'));_0x3b92fe['use']('/api/schedules',require(_0x29ed('0x86')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x87'),require(_0x29ed('0x88')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x89'),require(_0x29ed('0x8a')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x8b'),require(_0x29ed('0x8c')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x8d'),require(_0x29ed('0x8e')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x8f'),require(_0x29ed('0x90')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x91'),require('./api/integration'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x92'),require(_0x29ed('0x93')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x94'),require(_0x29ed('0x95')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x96'),require(_0x29ed('0x97')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x98'),require('./api/analyticExtractedReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x99'),require(_0x29ed('0x9a')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x9b'),require('./api/analyticFieldReport'));_0x3b92fe[_0x29ed('0x16')]('/api/analytics/tree_reports',require(_0x29ed('0x9c')));_0x3b92fe[_0x29ed('0x16')]('/api/integrations/salesforce/accounts',require(_0x29ed('0x9d')));_0x3b92fe['use'](_0x29ed('0x9e'),require(_0x29ed('0x9f')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xa0'),require('./api/intSalesforceField'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xa1'),require(_0x29ed('0xa2')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xa3'),require(_0x29ed('0xa4')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xa5'),require('./api/intSugarcrmField'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xa6'),require('./api/intDeskAccount'));_0x3b92fe[_0x29ed('0x16')]('/api/integrations/desk/configurations',require(_0x29ed('0xa7')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xa8'),require(_0x29ed('0xa9')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xaa'),require('./api/intZohoAccount'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xab'),require('./api/intZohoConfiguration'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xac'),require(_0x29ed('0xad')));_0x3b92fe['use'](_0x29ed('0xae'),require(_0x29ed('0xaf')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xb0'),require(_0x29ed('0xb1')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xb2'),require(_0x29ed('0xb3')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xb4'),require(_0x29ed('0xb5')));_0x3b92fe[_0x29ed('0x16')]('/api/integrations/freshdesk/configurations',require(_0x29ed('0xb6')));_0x3b92fe[_0x29ed('0x16')]('/api/integrations/freshdesk/fields',require(_0x29ed('0xb7')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xb8'),require(_0x29ed('0xb9')));_0x3b92fe['use']('/api/integrations/vtiger/configurations',require('./api/intVtigerConfiguration'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xba'),require(_0x29ed('0xbb')));_0x3b92fe[_0x29ed('0x16')]('/api/integrations/servicenow/accounts',require('./api/intServicenowAccount'));_0x3b92fe['use']('/api/integrations/servicenow/configurations',require(_0x29ed('0xbc')));_0x3b92fe['use'](_0x29ed('0xbd'),require(_0x29ed('0xbe')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xbf'),require(_0x29ed('0xc0')));_0x3b92fe[_0x29ed('0x16')]('/api/integrations/dynamics365/configurations',require(_0x29ed('0xc1')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xc2'),require(_0x29ed('0xc3')));_0x3b92fe['use'](_0x29ed('0xc4'),require(_0x29ed('0xc5')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xc6'),require(_0x29ed('0xc7')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xc8'),require('./api/intFreshsalesField'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xc9'),require(_0x29ed('0xca')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xcb'),require('./api/chatQueueReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xcc'),require(_0x29ed('0xcd')));_0x3b92fe['use'](_0x29ed('0xce'),require(_0x29ed('0xcf')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xd0'),require('./api/jscriptyQuestionReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xd1'),require(_0x29ed('0xd2')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xd3'),require('./api/smsQueueReport'));_0x3b92fe['use'](_0x29ed('0xd4'),require(_0x29ed('0xd5')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xd6'),require(_0x29ed('0xd7')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xd8'),require(_0x29ed('0xd9')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xda'),require('./api/setting'));_0x3b92fe['use']('/api/square/odbc',require('./api/squareOdbc'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xdb'),require(_0x29ed('0xdc')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xdd'),require('./api/squareRecording'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xde'),require(_0x29ed('0xdf')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xe0'),require(_0x29ed('0xe1')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xe2'),require(_0x29ed('0xe3')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xe4'),require(_0x29ed('0xe5')));_0x3b92fe['use'](_0x29ed('0xe6'),require(_0x29ed('0xe7')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xe8'),require('./api/attachment'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xe9'),require(_0x29ed('0xea')));_0x3b92fe[_0x29ed('0x16')]('/api/mail/reports/transfer',require('./api/mailTransferReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xeb'),require(_0x29ed('0xec')));_0x3b92fe[_0x29ed('0x16')]('/api/fax/reports/transfer',require('./api/faxTransferReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xed'),require('./api/openchannelTransferReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xee'),require(_0x29ed('0xef')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xf0'),require(_0x29ed('0xf1')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xf2'),require(_0x29ed('0xf3')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xf4'),require(_0x29ed('0xf5')));_0x3b92fe['use'](_0x29ed('0xf6'),require(_0x29ed('0xf7')));_0x3b92fe['use']('/api/userProfile/resources',require(_0x29ed('0xf8')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xf9'),require(_0x29ed('0xfa')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xfb'),require('./api/whatsappAccount'));_0x3b92fe[_0x29ed('0x16')]('/api/whatsapp/applications',require(_0x29ed('0xfc')));_0x3b92fe[_0x29ed('0x16')]('/api/whatsapp/interactions',require(_0x29ed('0xfd')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xfe'),require(_0x29ed('0xff')));_0x3b92fe[_0x29ed('0x16')]('/api/whatsapp/reports/queue',require('./api/whatsappQueueReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x100'),require(_0x29ed('0x101')));_0x3b92fe['use'](_0x29ed('0x102'),require(_0x29ed('0x103')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x104'),require(_0x29ed('0x105')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x106'),require(_0x29ed('0x107')));_0x3b92fe[_0x29ed('0x16')]('/api/auth/local',require(_0x29ed('0x108')));_0x3b92fe['use'](_0x29ed('0x109'),require('./api/authGoogle'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x10a'),require(_0x29ed('0x10b')));_0x3b92fe[_0x29ed('0x16')]('/api/rpc',require(_0x29ed('0x10c')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x10d'),require('./api/version'));_0x3b92fe[_0x29ed('0x16')]('/api/system',require('./api/system'));_0x3b92fe['use'](_0x29ed('0x10e'),require(_0x29ed('0x10f')));_0x3b92fe[_0x29ed('0x16')]('/api/webbar',require(_0x29ed('0x110')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x111'),express[_0x29ed('0x112')](path[_0x29ed('0x113')](config[_0x29ed('0x114')],_0x29ed('0x111'))));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x115'),express[_0x29ed('0x112')](path[_0x29ed('0x113')](config[_0x29ed('0x114')],_0x29ed('0x115'))));_0x3b92fe[_0x29ed('0x16')]('/demo',express[_0x29ed('0x112')](path[_0x29ed('0x113')](config[_0x29ed('0x114')],_0x29ed('0x116'))));_0x3b92fe['use']('/snippet',express[_0x29ed('0x112')](path['join'](config[_0x29ed('0x114')],_0x29ed('0x117'),_0x29ed('0x118'))));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x119'),express[_0x29ed('0x112')](path[_0x29ed('0x113')](config[_0x29ed('0x114')],_0x29ed('0x11a'))));_0x3b92fe[_0x29ed('0x11b')](_0x29ed('0x11c'))['get'](errors[0x194]);_0x3b92fe[_0x29ed('0x11b')]('/*')[_0x29ed('0x11d')](function(_0xbf2537,_0xcfa18b){_0xcfa18b[_0x29ed('0x11e')](path[_0x29ed('0x11f')](_0x3b92fe[_0x29ed('0x11d')](_0x29ed('0x120'))+_0x29ed('0x121')));});};var sensitiveFields=[_0x29ed('0x122'),_0x29ed('0x123'),_0x29ed('0x124'),_0x29ed('0x125'),'firstName','lastName','street',_0x29ed('0x126'),_0x29ed('0x127'),_0x29ed('0x128'),'email',_0x29ed('0x129'),_0x29ed('0x12a'),_0x29ed('0x12b'),_0x29ed('0x12c'),_0x29ed('0x12d'),_0x29ed('0x12e'),_0x29ed('0x12f'),_0x29ed('0x130'),_0x29ed('0x131'),'accessTokenSecret','authToken',_0x29ed('0x132'),_0x29ed('0x133'),'membername',_0x29ed('0x134'),_0x29ed('0x135'),_0x29ed('0x136'),_0x29ed('0x137'),_0x29ed('0x138'),_0x29ed('0x139'),_0x29ed('0x13a'),_0x29ed('0x13b'),_0x29ed('0x13c'),'user',_0x29ed('0x13d'),_0x29ed('0x13e'),'localstationid','dsn',_0x29ed('0x13f'),'registry','oldPassword'];function maskSensitiveData(_0x15e8d7){var _0x46a569=/(?!^)[\s\S](?!$)/g;if(!_[_0x29ed('0x140')](_0x15e8d7))return;for(var _0x5ebef0 in _0x15e8d7){if(_[_0x29ed('0x141')](_0x15e8d7[_0x5ebef0])){for(var _0x971d08=0x0;_0x971d08<_0x15e8d7[_0x5ebef0][_0x29ed('0x142')];_0x971d08++){maskSensitiveData(_0x15e8d7[_0x5ebef0][_0x971d08]);}}else if(_[_0x29ed('0x140')](_0x15e8d7[_0x5ebef0])){maskSensitiveData(_0x15e8d7[_0x5ebef0]);}else if(_[_0x29ed('0x143')](_0x15e8d7[_0x5ebef0])){_0x15e8d7[_0x5ebef0]=_0x15e8d7[_0x5ebef0][_0x29ed('0x144')](/{{{/g,'@@{')[_0x29ed('0x144')](/}}}/g,_0x29ed('0x145'))[_0x29ed('0x144')](/{{/g,'@{')[_0x29ed('0x144')](/}}/g,'}@');if(_[_0x29ed('0x146')](sensitiveFields,_0x5ebef0)){_0x15e8d7[_0x5ebef0]=_0x15e8d7[_0x5ebef0][_0x29ed('0x144')](_0x46a569,'*');}}}}
\ No newline at end of file
+var _0xd4e6=['./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','./api/jscriptyProject','./api/setting','/api/square/odbc','/api/square/projects','./api/squareProject','/api/square/messages','/api/teams','/api/license','./api/license','./api/campaign','./api/migration','/api/attachments','/api/plugins','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','/api/sms/reports/transfer','./api/smsTransferReport','./api/cmList','/api/voice/prefixes','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/whatsapp/accounts','./api/whatsappAccount','./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/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/jira','./api/jira','/api/rpc','/api/version','./api/version','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/apidoc','static','join','/www','/demo','/snippet','root','snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','appPath','username','password','newPassword','apiKey','lastName','fax','email','clientId','code','accessKey','tenantId','token','accessToken','accessTokenSecret','authToken','consumerKey','membername','calleridname','calleridnum','exten','vidaooApiKey','clientEmail','accesskeyid','secretaccesskey','key','pass','dsn','secret','registry','isPlainObject','isArray','length','isString','@@{','replace','}@@','includes','path','./errors','./config/environment','./config/logger','api','auth','default','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','x-forwarded-for','headers','connection','remoteAddress','url','statusCode','responseTime','user','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','format','method','name','other','agent_name','test','/api/users','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','./api/voiceRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','/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/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','./api/faxMessage','/api/fax/queues','./api/faxQueue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./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/openchannelMessage','./api/openchannelQueue','/api/chat/websites','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','./api/cmHopperHistory','/api/cm/custom_fields','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','./api/disposition','/api/conditions','./api/condition','/api/intervals','/api/pauses','./api/pause','/api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','/api/templates','./api/template','./api/trigger','./api/variable','./api/integration','/api/integrations/reports','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./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/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','/api/integrations/zendesk/fields','./api/intZendeskField','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','/api/integrations/vtiger/accounts','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','./api/intVtigerField','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','/api/integrations/freshsales/fields','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages'];(function(_0x203b7d,_0x191879){var _0x4c3c69=function(_0x2944be){while(--_0x2944be){_0x203b7d['push'](_0x203b7d['shift']());}};_0x4c3c69(++_0x191879);}(_0xd4e6,0x7a));var _0x6d4e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xd4e6[_0xf0bcac];return _0x4e4c65;};'use strict';var _=require('lodash');var path=require(_0x6d4e('0x0'));var express=require('express');var ewinston=require('express-winston');var util=require('util');var errors=require(_0x6d4e('0x1'));var config=require(_0x6d4e('0x2'));var logger=require(_0x6d4e('0x3'))(_0x6d4e('0x4'));var authLogger=require(_0x6d4e('0x3'))(_0x6d4e('0x5'));exports[_0x6d4e('0x6')]=function(_0x234783){_0x234783[_0x6d4e('0x7')](ewinston[_0x6d4e('0x8')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0xc2862f,_0x3ec527){var _0x5e97da=_0x6d4e('0x9');if(!_[_0x6d4e('0xa')](_0xc2862f[_0x6d4e('0xb')])){_0x5e97da+='\x20body=%s';var _0x3cc9e1=_0xc2862f[_0x6d4e('0xb')];maskSensitiveData(_0x3cc9e1);}return util['format'](_0x5e97da,_0xc2862f['method'],_0xc2862f['headers'][_0x6d4e('0xc')]?_0xc2862f[_0x6d4e('0xd')][_0x6d4e('0xc')]:_0xc2862f[_0x6d4e('0xe')][_0x6d4e('0xf')]||_0xc2862f['ip'],_0xc2862f[_0x6d4e('0x10')],_0x3ec527[_0x6d4e('0x11')],_0x3ec527[_0x6d4e('0x12')],_0xc2862f[_0x6d4e('0x13')]?_0xc2862f['user']['id']:null,_0xc2862f['user']?_0xc2862f[_0x6d4e('0x13')]['name']:null,_0xc2862f[_0x6d4e('0x13')]?_0xc2862f['user'][_0x6d4e('0x14')]:null,_0x3cc9e1?util[_0x6d4e('0x15')](_0x3cc9e1,![],null):'');}}));_0x234783[_0x6d4e('0x7')](ewinston[_0x6d4e('0x8')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0xc46244,_0xc28293){var _0x39ae1c=_0x6d4e('0x16');if(_0xc46244['body']&&_0xc46244['body'][_0x6d4e('0x17')]&&_0xc46244[_0x6d4e('0xb')][_0x6d4e('0x18')]){_0x39ae1c='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0x6d4e('0x19')](_0x39ae1c,_0xc46244[_0x6d4e('0x1a')],_0xc46244['headers'][_0x6d4e('0xc')]?_0xc46244[_0x6d4e('0xd')][_0x6d4e('0xc')]:_0xc46244[_0x6d4e('0xe')][_0x6d4e('0xf')]||_0xc46244['ip'],_0xc46244[_0x6d4e('0x10')],_0xc28293[_0x6d4e('0x11')],_0xc28293[_0x6d4e('0x12')],_0xc46244[_0x6d4e('0x13')]?_0xc46244['user']['id']:null,_0xc46244[_0x6d4e('0x13')]?_0xc46244['user'][_0x6d4e('0x1b')]:null,_0xc46244[_0x6d4e('0x13')]?_0xc46244[_0x6d4e('0x13')][_0x6d4e('0x14')]:null,_0xc46244[_0x6d4e('0xb')]&&_0xc46244['body'][_0x6d4e('0x17')]?_0xc46244[_0x6d4e('0xb')][_0x6d4e('0x17')]:_0x6d4e('0x1c'),_0xc46244[_0x6d4e('0xb')]&&_0xc46244[_0x6d4e('0xb')][_0x6d4e('0x18')]?_0xc46244[_0x6d4e('0xb')][_0x6d4e('0x18')]:'',_0xc46244[_0x6d4e('0xb')]&&_0xc46244[_0x6d4e('0xb')][_0x6d4e('0x1d')]?_0xc46244[_0x6d4e('0xb')][_0x6d4e('0x1d')]:'');},'ignoreRoute':function(_0x1bfa79){var _0x3a1579=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x3a1579[_0x6d4e('0x1e')](_0x1bfa79[_0x6d4e('0x10')]);}}));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x1f'),require('./api/user'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x20'),require(_0x6d4e('0x21')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x22'),require('./api/voiceContext'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x23'),require(_0x6d4e('0x24')));_0x234783[_0x6d4e('0x7')]('/api/voice/mohs',require(_0x6d4e('0x25')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x26'),require(_0x6d4e('0x27')));_0x234783[_0x6d4e('0x7')]('/api/voice/recordings',require(_0x6d4e('0x28')));_0x234783[_0x6d4e('0x7')]('/api/screen/recordings',require('./api/screenRecording'));_0x234783['use'](_0x6d4e('0x29'),require(_0x6d4e('0x2a')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x2b'),require(_0x6d4e('0x2c')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x2d'),require('./api/voiceCallReport'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x2e'),require(_0x6d4e('0x2f')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x30'),require(_0x6d4e('0x31')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x32'),require(_0x6d4e('0x33')));_0x234783['use'](_0x6d4e('0x34'),require(_0x6d4e('0x35')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x36'),require('./api/trunk'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x37'),require(_0x6d4e('0x38')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x39'),require(_0x6d4e('0x3a')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x3b'),require(_0x6d4e('0x3c')));_0x234783['use'](_0x6d4e('0x3d'),require(_0x6d4e('0x3e')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x3f'),require(_0x6d4e('0x40')));_0x234783['use']('/api/mail/interactions',require(_0x6d4e('0x41')));_0x234783['use'](_0x6d4e('0x42'),require(_0x6d4e('0x43')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x44'),require(_0x6d4e('0x45')));_0x234783['use'](_0x6d4e('0x46'),require(_0x6d4e('0x47')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x48'),require('./api/dashboard'));_0x234783['use'](_0x6d4e('0x49'),require(_0x6d4e('0x4a')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x4b'),require(_0x6d4e('0x4c')));_0x234783[_0x6d4e('0x7')]('/api/fax/applications',require(_0x6d4e('0x4d')));_0x234783['use'](_0x6d4e('0x4e'),require(_0x6d4e('0x4f')));_0x234783[_0x6d4e('0x7')]('/api/fax/messages',require(_0x6d4e('0x50')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x51'),require(_0x6d4e('0x52')));_0x234783[_0x6d4e('0x7')]('/api/fax/reports/queue',require(_0x6d4e('0x53')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x54'),require(_0x6d4e('0x55')));_0x234783['use'](_0x6d4e('0x56'),require(_0x6d4e('0x57')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x58'),require('./api/smsInteraction'));_0x234783[_0x6d4e('0x7')]('/api/sms/messages',require(_0x6d4e('0x59')));_0x234783['use'](_0x6d4e('0x5a'),require(_0x6d4e('0x5b')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x5c'),require(_0x6d4e('0x5d')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x5e'),require(_0x6d4e('0x5f')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x60'),require(_0x6d4e('0x61')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x62'),require(_0x6d4e('0x63')));_0x234783[_0x6d4e('0x7')]('/api/openchannel/queues',require(_0x6d4e('0x64')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x65'),require('./api/chatWebsite'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x66'),require(_0x6d4e('0x67')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x68'),require(_0x6d4e('0x69')));_0x234783['use'](_0x6d4e('0x6a'),require(_0x6d4e('0x6b')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x6c'),require(_0x6d4e('0x6d')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x6e'),require(_0x6d4e('0x6f')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x70'),require(_0x6d4e('0x71')));_0x234783['use'](_0x6d4e('0x72'),require(_0x6d4e('0x73')));_0x234783['use'](_0x6d4e('0x74'),require(_0x6d4e('0x75')));_0x234783['use'](_0x6d4e('0x76'),require(_0x6d4e('0x77')));_0x234783['use'](_0x6d4e('0x78'),require(_0x6d4e('0x79')));_0x234783[_0x6d4e('0x7')]('/api/cm/hopper',require(_0x6d4e('0x7a')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x7b'),require(_0x6d4e('0x7c')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x7d'),require(_0x6d4e('0x7e')));_0x234783['use']('/api/cm/hopper_history',require(_0x6d4e('0x7f')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x80'),require('./api/cmCustomField'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x81'),require(_0x6d4e('0x82')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x83'),require(_0x6d4e('0x84')));_0x234783['use'](_0x6d4e('0x85'),require(_0x6d4e('0x86')));_0x234783[_0x6d4e('0x7')]('/api/dispositions',require(_0x6d4e('0x87')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x88'),require(_0x6d4e('0x89')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x8a'),require('./api/interval'));_0x234783['use'](_0x6d4e('0x8b'),require(_0x6d4e('0x8c')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x8d'),require('./api/cdr'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x8e'),require(_0x6d4e('0x8f')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x90'),require(_0x6d4e('0x91')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x92'),require(_0x6d4e('0x93')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x94'),require('./api/tag'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x95'),require(_0x6d4e('0x96')));_0x234783[_0x6d4e('0x7')]('/api/triggers',require(_0x6d4e('0x97')));_0x234783[_0x6d4e('0x7')]('/api/variables',require(_0x6d4e('0x98')));_0x234783[_0x6d4e('0x7')]('/api/integrations',require(_0x6d4e('0x99')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x9a'),require('./api/integrationReport'));_0x234783['use'](_0x6d4e('0x9b'),require(_0x6d4e('0x9c')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x9d'),require(_0x6d4e('0x9e')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x9f'),require('./api/analyticExtractedReport'));_0x234783[_0x6d4e('0x7')]('/api/analytics/metrics',require(_0x6d4e('0xa0')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xa1'),require('./api/analyticFieldReport'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xa2'),require(_0x6d4e('0xa3')));_0x234783['use'](_0x6d4e('0xa4'),require('./api/intSalesforceAccount'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xa5'),require(_0x6d4e('0xa6')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xa7'),require('./api/intSalesforceField'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xa8'),require(_0x6d4e('0xa9')));_0x234783['use'](_0x6d4e('0xaa'),require(_0x6d4e('0xab')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xac'),require('./api/intSugarcrmField'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xad'),require(_0x6d4e('0xae')));_0x234783['use'](_0x6d4e('0xaf'),require('./api/intDeskConfiguration'));_0x234783[_0x6d4e('0x7')]('/api/integrations/desk/fields',require(_0x6d4e('0xb0')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xb1'),require('./api/intZohoAccount'));_0x234783['use']('/api/integrations/zoho/configurations',require(_0x6d4e('0xb2')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xb3'),require(_0x6d4e('0xb4')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xb5'),require(_0x6d4e('0xb6')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xb7'),require('./api/intZendeskConfiguration'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xb8'),require(_0x6d4e('0xb9')));_0x234783[_0x6d4e('0x7')]('/api/integrations/freshdesk/accounts',require(_0x6d4e('0xba')));_0x234783['use'](_0x6d4e('0xbb'),require(_0x6d4e('0xbc')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xbd'),require('./api/intFreshdeskField'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xbe'),require('./api/intVtigerAccount'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xbf'),require(_0x6d4e('0xc0')));_0x234783[_0x6d4e('0x7')]('/api/integrations/vtiger/fields',require(_0x6d4e('0xc1')));_0x234783['use']('/api/integrations/servicenow/accounts',require(_0x6d4e('0xc2')));_0x234783['use'](_0x6d4e('0xc3'),require(_0x6d4e('0xc4')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xc5'),require(_0x6d4e('0xc6')));_0x234783['use']('/api/integrations/dynamics365/accounts',require(_0x6d4e('0xc7')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xc8'),require('./api/intDynamics365Configuration'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xc9'),require('./api/intDynamics365Field'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xca'),require(_0x6d4e('0xcb')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xcc'),require('./api/intFreshsalesConfiguration'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xcd'),require('./api/intFreshsalesField'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xce'),require(_0x6d4e('0xcf')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xd0'),require(_0x6d4e('0xd1')));_0x234783['use'](_0x6d4e('0xd2'),require(_0x6d4e('0xd3')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xd4'),require(_0x6d4e('0xd5')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xd6'),require(_0x6d4e('0xd7')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xd8'),require(_0x6d4e('0xd9')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xda'),require(_0x6d4e('0xdb')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xdc'),require(_0x6d4e('0xdd')));_0x234783['use'](_0x6d4e('0xde'),require(_0x6d4e('0xdf')));_0x234783[_0x6d4e('0x7')]('/api/jscripty/projects',require(_0x6d4e('0xe0')));_0x234783[_0x6d4e('0x7')]('/api/settings',require(_0x6d4e('0xe1')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xe2'),require('./api/squareOdbc'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xe3'),require(_0x6d4e('0xe4')));_0x234783[_0x6d4e('0x7')]('/api/square/recordings',require('./api/squareRecording'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xe5'),require('./api/squareMessage'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xe6'),require('./api/team'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xe7'),require(_0x6d4e('0xe8')));_0x234783['use']('/api/campaigns',require(_0x6d4e('0xe9')));_0x234783['use']('/api/migrations',require(_0x6d4e('0xea')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xeb'),require('./api/attachment'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xec'),require('./api/plugin'));_0x234783[_0x6d4e('0x7')]('/api/mail/reports/transfer',require(_0x6d4e('0xed')));_0x234783['use'](_0x6d4e('0xee'),require(_0x6d4e('0xef')));_0x234783['use'](_0x6d4e('0xf0'),require('./api/faxTransferReport'));_0x234783[_0x6d4e('0x7')]('/api/openchannel/reports/transfer',require('./api/openchannelTransferReport'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xf1'),require(_0x6d4e('0xf2')));_0x234783[_0x6d4e('0x7')]('/api/cm/lists',require(_0x6d4e('0xf3')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xf4'),require('./api/voicePrefix'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xf5'),require(_0x6d4e('0xf6')));_0x234783['use'](_0x6d4e('0xf7'),require(_0x6d4e('0xf8')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xf9'),require(_0x6d4e('0xfa')));_0x234783[_0x6d4e('0x7')]('/api/userNotifications',require('./api/userNotification'));_0x234783['use'](_0x6d4e('0xfb'),require(_0x6d4e('0xfc')));_0x234783[_0x6d4e('0x7')]('/api/whatsapp/applications',require(_0x6d4e('0xfd')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0xfe'),require(_0x6d4e('0xff')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x100'),require('./api/whatsappMessage'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x101'),require(_0x6d4e('0x102')));_0x234783['use'](_0x6d4e('0x103'),require(_0x6d4e('0x104')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x105'),require(_0x6d4e('0x106')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x107'),require(_0x6d4e('0x108')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x109'),require(_0x6d4e('0x10a')));_0x234783['use'](_0x6d4e('0x10b'),require(_0x6d4e('0x10c')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x10d'),require(_0x6d4e('0x10e')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x10f'),require(_0x6d4e('0x110')));_0x234783['use'](_0x6d4e('0x111'),require('./api/rpc'));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x112'),require(_0x6d4e('0x113')));_0x234783[_0x6d4e('0x7')]('/api/system',require(_0x6d4e('0x114')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x115'),require(_0x6d4e('0x116')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x117'),require(_0x6d4e('0x118')));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x119'),express[_0x6d4e('0x11a')](path[_0x6d4e('0x11b')](config['root'],_0x6d4e('0x119'))));_0x234783[_0x6d4e('0x7')]('/www',express[_0x6d4e('0x11a')](path[_0x6d4e('0x11b')](config['root'],_0x6d4e('0x11c'))));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x11d'),express['static'](path[_0x6d4e('0x11b')](config['root'],_0x6d4e('0x11d'))));_0x234783['use'](_0x6d4e('0x11e'),express[_0x6d4e('0x11a')](path[_0x6d4e('0x11b')](config[_0x6d4e('0x11f')],_0x6d4e('0x120'),_0x6d4e('0x121'))));_0x234783[_0x6d4e('0x7')](_0x6d4e('0x122'),express['static'](path['join'](config[_0x6d4e('0x11f')],_0x6d4e('0x123'))));_0x234783[_0x6d4e('0x124')](_0x6d4e('0x125'))[_0x6d4e('0x126')](errors[0x194]);_0x234783[_0x6d4e('0x124')]('/*')['get'](function(_0x35c022,_0x14bb23){_0x14bb23['sendFile'](path['resolve'](_0x234783[_0x6d4e('0x126')](_0x6d4e('0x127'))+'/index.html'));});};var sensitiveFields=[_0x6d4e('0x128'),_0x6d4e('0x129'),_0x6d4e('0x12a'),_0x6d4e('0x12b'),'firstName',_0x6d4e('0x12c'),'street','phone','mobile',_0x6d4e('0x12d'),_0x6d4e('0x12e'),_0x6d4e('0x12f'),'clientSecret','securityToken',_0x6d4e('0x130'),_0x6d4e('0x131'),_0x6d4e('0x132'),_0x6d4e('0x133'),'channelSecret',_0x6d4e('0x134'),_0x6d4e('0x135'),_0x6d4e('0x136'),_0x6d4e('0x137'),'consumerSecret',_0x6d4e('0x138'),_0x6d4e('0x139'),_0x6d4e('0x13a'),_0x6d4e('0x13b'),_0x6d4e('0x13c'),_0x6d4e('0x13d'),'privateKey',_0x6d4e('0x13e'),_0x6d4e('0x13f'),_0x6d4e('0x140'),_0x6d4e('0x13'),_0x6d4e('0x141'),'accountSid','localstationid',_0x6d4e('0x142'),_0x6d4e('0x143'),_0x6d4e('0x144'),'oldPassword'];function maskSensitiveData(_0x3162a4){var _0x9d84bd=/(?!^)[\s\S](?!$)/g;if(!_[_0x6d4e('0x145')](_0x3162a4))return;for(var _0xfe8169 in _0x3162a4){if(_[_0x6d4e('0x146')](_0x3162a4[_0xfe8169])){for(var _0xd74d2f=0x0;_0xd74d2f<_0x3162a4[_0xfe8169][_0x6d4e('0x147')];_0xd74d2f++){maskSensitiveData(_0x3162a4[_0xfe8169][_0xd74d2f]);}}else if(_['isPlainObject'](_0x3162a4[_0xfe8169])){maskSensitiveData(_0x3162a4[_0xfe8169]);}else if(_[_0x6d4e('0x148')](_0x3162a4[_0xfe8169])){_0x3162a4[_0xfe8169]=_0x3162a4[_0xfe8169]['replace'](/{{{/g,_0x6d4e('0x149'))[_0x6d4e('0x14a')](/}}}/g,_0x6d4e('0x14b'))[_0x6d4e('0x14a')](/{{/g,'@{')[_0x6d4e('0x14a')](/}}/g,'}@');if(_[_0x6d4e('0x14c')](sensitiveFields,_0xfe8169)){_0x3162a4[_0xfe8169]=_0x3162a4[_0xfe8169][_0x6d4e('0x14a')](_0x9d84bd,'*');}}}}
\ No newline at end of file
index 26a3d3b..d8b54e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c03=['../api/interval/interval.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','bluebird','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.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/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc'];(function(_0x19fb82,_0x45da17){var _0xa7a3da=function(_0x279452){while(--_0x279452){_0x19fb82['push'](_0x19fb82['shift']());}};_0xa7a3da(++_0x45da17);}(_0x8c03,0x6f));var _0x38c0=function(_0x3ab3f0,_0x916f8a){_0x3ab3f0=_0x3ab3f0-0x0;var _0x46d86e=_0x8c03[_0x3ab3f0];return _0x46d86e;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x38c0('0x0'));var _=require(_0x38c0('0x1'));var config=require(_0x38c0('0x2'));exports[_0x38c0('0x3')]=function(){return new BPromise(function(_0x69cc39,_0x57883f){var _0x5e553e={};_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x5')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x6')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x7')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/voiceRecording/voiceRecording.rpc'));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x8')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x9')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0xa')));_0x5e553e=_['merge'](_0x5e553e,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0xb')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0xc')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0xd')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0xe')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0xf')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x10')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x11')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x12')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x13')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x14')));_0x5e553e=_['merge'](_0x5e553e,require('../api/faxAccount/faxAccount.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/faxApplication/faxApplication.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x15')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x16')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x17')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x18')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/smsAccount/smsAccount.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x19')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x1a')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x1b')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x1c')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x1d')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x1e')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x1f')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/chatQueue/chatQueue.rpc'));_0x5e553e=_['merge'](_0x5e553e,require('../api/cmContact/cmContact.rpc'));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x20')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x21')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x22')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x23')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x24')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x25')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/pause/pause.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/sound/sound.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x26')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x27')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x28')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x29')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x2a')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x2b')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x2c')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x2d')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x2e')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x2f')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x30')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x31')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x32')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/squareReport/squareReport.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x33')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x34')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x35')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x36')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x37')));_0x5e553e=_['merge'](_0x5e553e,require('../api/squareMessage/squareMessage.rpc'));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x38')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x39')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x3a')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x3b')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x3c')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x3d')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x3e')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x3f')));var _0x412a8f=jayson[_0x38c0('0x40')](_0x5e553e)[_0x38c0('0x41')]();var _0x4fd0ff=config[_0x38c0('0x42')]['port']||config['port']+0x1;var _0x435541=config[_0x38c0('0x42')]['ip']||_0x38c0('0x43');_0x412a8f['on'](_0x38c0('0x44'),function(_0xc0fe52){return _0x57883f(_0xc0fe52);});_0x412a8f['listen'](_0x4fd0ff,_0x435541,function(){console[_0x38c0('0x45')](_0x38c0('0x46'),_0x435541,_0x4fd0ff);require(_0x38c0('0x47'))[_0x38c0('0x48')]();return _0x69cc39(_0x38c0('0x49')+_0x435541+':'+_0x4fd0ff);});});};
\ No newline at end of file
+var _0xfb18=['../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/interval/interval.rpc','../api/sound/sound.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../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/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','bluebird','../config/environment','listen','../api/user/user.rpc','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelMessage/openchannelMessage.rpc'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfb18,0x147));var _0x8fb1=function(_0x6287b6,_0x5682e7){_0x6287b6=_0x6287b6-0x0;var _0x5d6be4=_0xfb18[_0x6287b6];return _0x5d6be4;};'use strict';var jayson=require(_0x8fb1('0x0'));var BPromise=require(_0x8fb1('0x1'));var _=require('lodash');var config=require(_0x8fb1('0x2'));exports[_0x8fb1('0x3')]=function(){return new BPromise(function(_0x5bb54d,_0x543ca1){var _0xb4a753={};_0xb4a753=_['merge'](_0xb4a753,require(_0x8fb1('0x4')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x6')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x7')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x8')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x9')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0xa')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0xb')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0xc')));_0xb4a753=_['merge'](_0xb4a753,require(_0x8fb1('0xd')));_0xb4a753=_['merge'](_0xb4a753,require('../api/trunk/trunk.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0xe')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0xb4a753=_['merge'](_0xb4a753,require(_0x8fb1('0xf')));_0xb4a753=_['merge'](_0xb4a753,require('../api/mailAccount/mailAccount.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x10')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x11')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/mailMessage/mailMessage.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/mailApplication/mailApplication.rpc'));_0xb4a753=_['merge'](_0xb4a753,require(_0x8fb1('0x12')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x13')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/faxApplication/faxApplication.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x14')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x15')));_0xb4a753=_['merge'](_0xb4a753,require(_0x8fb1('0x16')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x17')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x18')));_0xb4a753=_['merge'](_0xb4a753,require('../api/smsInteraction/smsInteraction.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/smsMessage/smsMessage.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x19')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x1a')));_0xb4a753=_['merge'](_0xb4a753,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x1b')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/openchannelQueue/openchannelQueue.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x1c')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x1d')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/chatMessage/chatMessage.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x1e')));_0xb4a753=_['merge'](_0xb4a753,require(_0x8fb1('0x1f')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/cmHopper/cmHopper.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x20')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x21')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x22')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x23')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/pause/pause.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x24')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/template/template.rpc'));_0xb4a753=_['merge'](_0xb4a753,require(_0x8fb1('0x25')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x26')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x27')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x28')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x29')));_0xb4a753=_['merge'](_0xb4a753,require(_0x8fb1('0x2a')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x2b')));_0xb4a753=_['merge'](_0xb4a753,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x2c')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x2d')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x2e')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x2f')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x30')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/squareReport/squareReport.rpc'));_0xb4a753=_['merge'](_0xb4a753,require(_0x8fb1('0x31')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x32')));_0xb4a753=_['merge'](_0xb4a753,require(_0x8fb1('0x33')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x34')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x35')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x36')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x37')));_0xb4a753=_['merge'](_0xb4a753,require(_0x8fb1('0x38')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x39')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require('../api/whatsappAccount/whatsappAccount.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x3a')));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x3b')));_0xb4a753=_['merge'](_0xb4a753,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0xb4a753=_[_0x8fb1('0x5')](_0xb4a753,require(_0x8fb1('0x3c')));var _0x101680=jayson['server'](_0xb4a753)[_0x8fb1('0x3d')]();var _0x11e618=config[_0x8fb1('0x3e')][_0x8fb1('0x3f')]||config[_0x8fb1('0x3f')]+0x1;var _0xfd9d0b=config[_0x8fb1('0x3e')]['ip']||_0x8fb1('0x40');_0x101680['on'](_0x8fb1('0x41'),function(_0x8e8779){return _0x543ca1(_0x8e8779);});_0x101680[_0x8fb1('0x3')](_0x11e618,_0xfd9d0b,function(){console[_0x8fb1('0x42')](_0x8fb1('0x43'),_0xfd9d0b,_0x11e618);require(_0x8fb1('0x44'))[_0x8fb1('0x45')]();return _0x5bb54d(_0x8fb1('0x46')+_0xfd9d0b+':'+_0x11e618);});});};
\ No newline at end of file
index 097de0f..623ed7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdbd=['SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','continueAt','setPriority','getVariable','wav','BEEP','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','WAIT','label','exports','util','lodash','events','EventEmitter','./reply','./error','setEncoding','utf8','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','520\x20End\x20of\x20proper','function','no\x20code','indexOf','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','pipe','command','inherits','prototype','sendRequest','sync','answer','ANSWER','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','format','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20PRIORITY\x20%s','HANGUP','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','replace','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits'];(function(_0x254752,_0x5248bc){var _0x1984a1=function(_0x2d0a2f){while(--_0x2d0a2f){_0x254752['push'](_0x254752['shift']());}};_0x1984a1(++_0x5248bc);}(_0xfdbd,0xf0));var _0xdfdb=function(_0x385467,_0x298239){_0x385467=_0x385467-0x0;var _0x5ed67e=_0xfdbd[_0x385467];return _0x5ed67e;};'use strict';var util=require(_0xdfdb('0x0'));var _=require(_0xdfdb('0x1'));var EventEmitter=require(_0xdfdb('0x2'))[_0xdfdb('0x3')];var AGIReply=require(_0xdfdb('0x4'));var AGIError=require(_0xdfdb('0x5'));function AGIChannel(_0x11218a){var _0x66533b=this,_0x330ad3=new AGIReply(),_0x5945e0=![],_0x3f5b2d={};EventEmitter['call'](_0x66533b);_0x11218a[_0xdfdb('0x6')](_0xdfdb('0x7'));_0x11218a['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x330ad3['setEncoding']('utf8');_0x330ad3['on'](_0xdfdb('0x8'),function(_0xf72a24){for(var _0x47c629 in _0xf72a24){_0x66533b[_0x47c629]=_0xf72a24[_0x47c629];}_0x66533b[_0xdfdb('0x9')](_0xdfdb('0xa'));});_0x330ad3['on'](_0xdfdb('0xb'),function(_0x27ddcd){if(_0x27ddcd[_0xdfdb('0xc')]()==_0xdfdb('0xd')){_0x66533b[_0xdfdb('0x9')]('hangup');return;}if(_0x27ddcd[_0xdfdb('0xe')](0x0,0xb)==_0xdfdb('0xf')){_0x5945e0=!![];}if(_0x5945e0){_0x3f5b2d['rx']+=_0x27ddcd+'\x0a';if(_0x27ddcd['search'](_0xdfdb('0x10'))!=-0x1){_0x5945e0=![];}}else{_0x3f5b2d['rx']=_0x27ddcd;}if(_0x5945e0){return;}if(typeof _0x3f5b2d['cb']==_0xdfdb('0x11')){var _0x2bee3b=_0x3f5b2d['rx'][_0xdfdb('0xe')](0x0,0x3),_0x1918c1=null,_0x2a95f1=null;_0x2bee3b=parseInt(_0x2bee3b);if(isNaN(_0x2bee3b)){_0x3f5b2d['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xdfdb('0x12')});return;}if(_0x2bee3b!=0xc8){_0x3f5b2d['cb'](null,{'code':_0x2bee3b,'result':-0x1,'extra':'KO'});return;}_0x1918c1=_0x3f5b2d['rx'][_0xdfdb('0xe')](0x4)['replace']('result=','');if(_0x1918c1[_0xdfdb('0x13')]('\x20')!=-0x1){_0x1918c1=_0x1918c1['substr'](0x0,_0x1918c1[_0xdfdb('0x13')]('\x20'));}if(_[_0xdfdb('0x14')](_0x1918c1,'-1')){_0x1918c1=parseInt(_0x1918c1);}_0x2a95f1=_0x3f5b2d['rx'][_0xdfdb('0x15')]('\x20');if(_0x2a95f1[_0xdfdb('0x16')]==0x3){_0x2a95f1=_0x2a95f1[0x2][_0xdfdb('0xe')](0x1,_0x2a95f1[0x2][_0xdfdb('0x16')]-0x1);}else if(_0x2a95f1['length']>0x3){var _0x4fd3d5=/\((.+)\)/;var _0x2a0295=_0x3f5b2d['rx'][_0xdfdb('0x17')](_0x4fd3d5);if(_0x2a0295){_0x2a95f1=_0x2a0295[0x1];}else{_0x2a95f1=null;}}else{_0x2a95f1=null;}_0x3f5b2d['cb'](null,{'code':_0x2bee3b,'result':_0x1918c1,'extra':_0x2a95f1});}});_0x11218a['on'](_0xdfdb('0x18'),function(_0x55ab5a){_0x66533b[_0xdfdb('0x9')](_0xdfdb('0x18'),new AGIError(_0xdfdb('0x19'),_0x55ab5a[_0xdfdb('0x1a')]));});_0x11218a['on'](_0xdfdb('0x1b'),function(){_0x66533b[_0xdfdb('0x9')](_0xdfdb('0x1b'),new AGIError(_0xdfdb('0x1c')));});_0x11218a['on']('timeout',function(){_0x66533b[_0xdfdb('0x9')](_0xdfdb('0x1d'),new AGIError(_0xdfdb('0x1e')));_0x11218a['destroy']();});_0x11218a[_0xdfdb('0x1f')](_0x330ad3);this[_0xdfdb('0x20')]=function(_0x2c7dd1,_0x4d55e5){var _0x2c7dd1=_0x2c7dd1||'',_0x4d55e5=typeof _0x4d55e5==_0xdfdb('0x11')?_0x4d55e5:new Function();_0x3f5b2d={'tx':_0x2c7dd1,'rx':'','cb':_0x4d55e5};_0x11218a['write'](_0x2c7dd1+'\x0a');},this[_0xdfdb('0x1b')]=function(){_0x11218a['destroy']();};}util[_0xdfdb('0x21')](AGIChannel,EventEmitter);AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x23')]=function(_0x2a560c){return this['command'][_0xdfdb('0x24')](this,_0x2a560c);};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x25')]=function(){return this[_0xdfdb('0x23')](_0xdfdb('0x26'));};AGIChannel[_0xdfdb('0x22')]['getData']=function(_0xec4d22,_0x2d5fe2,_0xdf3a5c){_0xec4d22=_0xec4d22===undefined?'beep':_0xec4d22;_0x2d5fe2=_0x2d5fe2===undefined?'5':_0x2d5fe2;_0xdf3a5c=_0xdf3a5c===undefined?'1':_0xdf3a5c;return this[_0xdfdb('0x23')](util['format'](_0xdfdb('0x27'),_0xec4d22,_0x2d5fe2*0x3e8,_0xdf3a5c));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x28')]=function(_0x513fa0){_0x513fa0=_0x513fa0||'NO\x20MESSAGE';return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x2a'),_0x513fa0));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x2b')]=function(_0x165f72,_0x5a9fc4){if(_[_0xdfdb('0x2c')](_0x5a9fc4)){return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x2d'),_0x165f72,_0x5a9fc4[_0xdfdb('0x2e')](',')));}return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x2d'),_0x165f72,_0x5a9fc4));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x2f')]=function(_0x379e6a){return this['sendRequest'](util['format'](_0xdfdb('0x30'),_0x379e6a));};AGIChannel['prototype'][_0xdfdb('0x31')]=function(_0x14e83e){return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')]('SET\x20EXTENSION\x20%s',_0x14e83e));};AGIChannel[_0xdfdb('0x22')]['setPriority']=function(_0x341f0d){return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x32'),_0x341f0d));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0xd')]=function(){return this['sendRequest'](_0xdfdb('0x33'));};AGIChannel[_0xdfdb('0x22')]['setVariable']=function(_0x1c1484,_0x4377d6){var _0x45b7bb=_[_0xdfdb('0x34')](_0x4377d6)||_[_0xdfdb('0x35')](_0x4377d6)?_0x4377d6[_0xdfdb('0x36')]():_0x4377d6;return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x37'),_0x1c1484,_0x45b7bb?_0x45b7bb[_0xdfdb('0x36')]()[_0xdfdb('0x38')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xdfdb('0x39')]=function(_0x2e65b9,_0x3d3807){return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x3a'),_0x2e65b9,_0x3d3807));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x3b')]=function(_0x55bfc6,_0x55d707){return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x3c'),_0x55bfc6,_0x55d707));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x3d')]=function(_0x300884,_0x3da4ca){return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x300884,_0x3da4ca));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x3e')]=function(_0x13ddb7,_0x31fad2,_0x561add){_0x31fad2=_0x31fad2||this['extension'];_0x561add=_0x561add||0x1;this[_0xdfdb('0x2f')](_0x13ddb7);this[_0xdfdb('0x31')](_0x31fad2);this[_0xdfdb('0x3f')](_0x561add);return this[_0xdfdb('0x28')](util[_0xdfdb('0x29')]('GOTO\x20%s\x20%s\x20%s',_0x13ddb7,_0x31fad2,_0x561add));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x40')]=function(_0xf0482a){return this['sendRequest'](util[_0xdfdb('0x29')]('GET\x20VARIABLE\x20\x22%s\x22',_0xf0482a));};AGIChannel[_0xdfdb('0x22')]['recordFile']=function(_0x15b0c6,_0x3a50e7,_0x5c14a1,_0xc92f82,_0x4e8ead,_0xfea790){_0x3a50e7=_0x3a50e7||_0xdfdb('0x41');_0x5c14a1=_0x5c14a1||'';_0xc92f82=_0xc92f82===undefined?-0x1:_0xc92f82==='-1'?-0x1:_0xc92f82*0x3e8;_0x4e8ead=_0x4e8ead===undefined?'':'s='+_0x4e8ead;_0xfea790=_0xfea790?_0xdfdb('0x42'):'';return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x15b0c6,_0x3a50e7,_0x5c14a1,_0xc92f82,_0xfea790,_0x4e8ead));};AGIChannel['prototype'][_0xdfdb('0x43')]=function(_0xaac02e,_0x4b70b3){_0x4b70b3=_0x4b70b3||'';return this[_0xdfdb('0x23')](util['format'](_0xdfdb('0x44'),_0xaac02e,_0x4b70b3));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x45')]=function(_0x103166){return this[_0xdfdb('0x2b')](_0xdfdb('0x46'),_0x103166);};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x47')]=function(_0x2ac36e){return this[_0xdfdb('0x2b')](_0xdfdb('0x48'),_0x2ac36e);};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x18')]=function(_0x202c25,_0x1c08fb){this[_0xdfdb('0x28')](util['format']('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x202c25['id'],_0x202c25[_0xdfdb('0x49')],_0x1c08fb));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xdfdb('0x4a')]=AGIChannel;
\ No newline at end of file
+var _0x0018=['GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setContext','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isNumber','SET\x20VARIABLE\x20%s\x20\x22%s\x22','toString','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','continueAt','extension','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','wait','noop','label','exports','util','lodash','events','EventEmitter','./reply','./error','call','setEncoding','utf8','setTimeout','headers','emit','line','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','substr','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','timeout','E_AGI_SOCKET_TIMEOUT','pipe','write','destroy','prototype','sync','answer','sendRequest','beep'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0018,0x1aa));var _0x8001=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x0018[_0x432682];return _0x463d05;};'use strict';var util=require(_0x8001('0x0'));var _=require(_0x8001('0x1'));var EventEmitter=require(_0x8001('0x2'))[_0x8001('0x3')];var AGIReply=require(_0x8001('0x4'));var AGIError=require(_0x8001('0x5'));function AGIChannel(_0x4762a4){var _0x122eaa=this,_0x5e857e=new AGIReply(),_0x54725c=![],_0xc0508f={};EventEmitter[_0x8001('0x6')](_0x122eaa);_0x4762a4[_0x8001('0x7')](_0x8001('0x8'));_0x4762a4[_0x8001('0x9')](0x8*0x3c*0x3c*0x3e8);_0x5e857e[_0x8001('0x7')](_0x8001('0x8'));_0x5e857e['on'](_0x8001('0xa'),function(_0xf39064){for(var _0x59ebaa in _0xf39064){_0x122eaa[_0x59ebaa]=_0xf39064[_0x59ebaa];}_0x122eaa[_0x8001('0xb')]('ready');});_0x5e857e['on'](_0x8001('0xc'),function(_0x55b090){if(_0x55b090[_0x8001('0xd')]()=='hangup'){_0x122eaa['emit'](_0x8001('0xe'));return;}if(_0x55b090[_0x8001('0xf')](0x0,0xb)==_0x8001('0x10')){_0x54725c=!![];}if(_0x54725c){_0xc0508f['rx']+=_0x55b090+'\x0a';if(_0x55b090[_0x8001('0x11')](_0x8001('0x12'))!=-0x1){_0x54725c=![];}}else{_0xc0508f['rx']=_0x55b090;}if(_0x54725c){return;}if(typeof _0xc0508f['cb']==_0x8001('0x13')){var _0xa6afa5=_0xc0508f['rx'][_0x8001('0xf')](0x0,0x3),_0x527a30=null,_0x39a714=null;_0xa6afa5=parseInt(_0xa6afa5);if(isNaN(_0xa6afa5)){_0xc0508f['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x8001('0x14')});return;}if(_0xa6afa5!=0xc8){_0xc0508f['cb'](null,{'code':_0xa6afa5,'result':-0x1,'extra':'KO'});return;}_0x527a30=_0xc0508f['rx'][_0x8001('0xf')](0x4)[_0x8001('0x15')](_0x8001('0x16'),'');if(_0x527a30['indexOf']('\x20')!=-0x1){_0x527a30=_0x527a30[_0x8001('0x17')](0x0,_0x527a30['indexOf']('\x20'));}if(_[_0x8001('0x18')](_0x527a30,'-1')){_0x527a30=parseInt(_0x527a30);}_0x39a714=_0xc0508f['rx'][_0x8001('0x19')]('\x20');if(_0x39a714[_0x8001('0x1a')]==0x3){_0x39a714=_0x39a714[0x2][_0x8001('0xf')](0x1,_0x39a714[0x2][_0x8001('0x1a')]-0x1);}else if(_0x39a714[_0x8001('0x1a')]>0x3){var _0x34af6d=/\((.+)\)/;var _0x5c37aa=_0xc0508f['rx'][_0x8001('0x1b')](_0x34af6d);if(_0x5c37aa){_0x39a714=_0x5c37aa[0x1];}else{_0x39a714=null;}}else{_0x39a714=null;}_0xc0508f['cb'](null,{'code':_0xa6afa5,'result':_0x527a30,'extra':_0x39a714});}});_0x4762a4['on'](_0x8001('0x1c'),function(_0x13b484){_0x122eaa['emit'](_0x8001('0x1c'),new AGIError(_0x8001('0x1d'),_0x13b484[_0x8001('0x1e')]));});_0x4762a4['on'](_0x8001('0x1f'),function(){_0x122eaa[_0x8001('0xb')](_0x8001('0x1f'),new AGIError('E_AGI_SOCKET_CLOSE'));});_0x4762a4['on'](_0x8001('0x20'),function(){_0x122eaa[_0x8001('0xb')]('timeout',new AGIError(_0x8001('0x21')));_0x4762a4['destroy']();});_0x4762a4[_0x8001('0x22')](_0x5e857e);this['command']=function(_0x20e355,_0x45139a){var _0x20e355=_0x20e355||'',_0x45139a=typeof _0x45139a==_0x8001('0x13')?_0x45139a:new Function();_0xc0508f={'tx':_0x20e355,'rx':'','cb':_0x45139a};_0x4762a4[_0x8001('0x23')](_0x20e355+'\x0a');},this['close']=function(){_0x4762a4[_0x8001('0x24')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0x8001('0x25')]['sendRequest']=function(_0x1fcae7){return this['command'][_0x8001('0x26')](this,_0x1fcae7);};AGIChannel[_0x8001('0x25')][_0x8001('0x27')]=function(){return this[_0x8001('0x28')]('ANSWER');};AGIChannel[_0x8001('0x25')]['getData']=function(_0x649e21,_0x399773,_0x189774){_0x649e21=_0x649e21===undefined?_0x8001('0x29'):_0x649e21;_0x399773=_0x399773===undefined?'5':_0x399773;_0x189774=_0x189774===undefined?'1':_0x189774;return this[_0x8001('0x28')](util['format'](_0x8001('0x2a'),_0x649e21,_0x399773*0x3e8,_0x189774));};AGIChannel[_0x8001('0x25')]['noop']=function(_0x355c29){_0x355c29=_0x355c29||_0x8001('0x2b');return this['sendRequest'](util[_0x8001('0x2c')](_0x8001('0x2d'),_0x355c29));};AGIChannel[_0x8001('0x25')][_0x8001('0x2e')]=function(_0x4bab81,_0x3e08a6){if(_[_0x8001('0x2f')](_0x3e08a6)){return this['sendRequest'](util[_0x8001('0x2c')](_0x8001('0x30'),_0x4bab81,_0x3e08a6[_0x8001('0x31')](',')));}return this['sendRequest'](util[_0x8001('0x2c')](_0x8001('0x30'),_0x4bab81,_0x3e08a6));};AGIChannel[_0x8001('0x25')][_0x8001('0x32')]=function(_0x33f4d3){return this[_0x8001('0x28')](util[_0x8001('0x2c')]('SET\x20CONTEXT\x20%s',_0x33f4d3));};AGIChannel[_0x8001('0x25')][_0x8001('0x33')]=function(_0x15edb9){return this[_0x8001('0x28')](util[_0x8001('0x2c')](_0x8001('0x34'),_0x15edb9));};AGIChannel[_0x8001('0x25')][_0x8001('0x35')]=function(_0x5c41e3){return this['sendRequest'](util[_0x8001('0x2c')](_0x8001('0x36'),_0x5c41e3));};AGIChannel[_0x8001('0x25')][_0x8001('0xe')]=function(){return this[_0x8001('0x28')](_0x8001('0x37'));};AGIChannel[_0x8001('0x25')][_0x8001('0x38')]=function(_0x49311e,_0x3b7464){var _0x36026f=_['isBoolean'](_0x3b7464)||_[_0x8001('0x39')](_0x3b7464)?_0x3b7464['toString']():_0x3b7464;return this['sendRequest'](util[_0x8001('0x2c')](_0x8001('0x3a'),_0x49311e,_0x36026f?_0x36026f[_0x8001('0x3b')]()[_0x8001('0x15')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x8001('0x25')]['sayNumber']=function(_0x12a545,_0x5a8ff8){return this[_0x8001('0x28')](util['format']('SAY\x20NUMBER\x20%s\x20%s',_0x12a545,_0x5a8ff8));};AGIChannel['prototype'][_0x8001('0x3c')]=function(_0x2d4d9c,_0x44d46f){return this['sendRequest'](util['format'](_0x8001('0x3d'),_0x2d4d9c,_0x44d46f));};AGIChannel[_0x8001('0x25')][_0x8001('0x3e')]=function(_0x176c5f,_0x23dbea){return this['sendRequest'](util[_0x8001('0x2c')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x176c5f,_0x23dbea));};AGIChannel[_0x8001('0x25')][_0x8001('0x3f')]=function(_0x32f0cc,_0x42f16f,_0x3791fa){_0x42f16f=_0x42f16f||this[_0x8001('0x40')];_0x3791fa=_0x3791fa||0x1;this[_0x8001('0x32')](_0x32f0cc);this[_0x8001('0x33')](_0x42f16f);this[_0x8001('0x35')](_0x3791fa);return this['noop'](util[_0x8001('0x2c')](_0x8001('0x41'),_0x32f0cc,_0x42f16f,_0x3791fa));};AGIChannel[_0x8001('0x25')][_0x8001('0x42')]=function(_0x17cad1){return this[_0x8001('0x28')](util['format'](_0x8001('0x43'),_0x17cad1));};AGIChannel[_0x8001('0x25')][_0x8001('0x44')]=function(_0x107e69,_0x4b5ba6,_0x54fe8b,_0x3e3c7a,_0xf96da9,_0x5c470d){_0x4b5ba6=_0x4b5ba6||_0x8001('0x45');_0x54fe8b=_0x54fe8b||'';_0x3e3c7a=_0x3e3c7a===undefined?-0x1:_0x3e3c7a==='-1'?-0x1:_0x3e3c7a*0x3e8;_0xf96da9=_0xf96da9===undefined?'':'s='+_0xf96da9;_0x5c470d=_0x5c470d?_0x8001('0x46'):'';return this[_0x8001('0x28')](util['format'](_0x8001('0x47'),_0x107e69,_0x4b5ba6,_0x54fe8b,_0x3e3c7a,_0x5c470d,_0xf96da9));};AGIChannel[_0x8001('0x25')][_0x8001('0x48')]=function(_0x429f70,_0x577893){_0x577893=_0x577893||'';return this[_0x8001('0x28')](util['format'](_0x8001('0x49'),_0x429f70,_0x577893));};AGIChannel[_0x8001('0x25')]['agi']=function(_0xe9b3b0){return this[_0x8001('0x2e')]('AGI',_0xe9b3b0);};AGIChannel[_0x8001('0x25')][_0x8001('0x4a')]=function(_0x38d950){return this['exec']('WAIT',_0x38d950);};AGIChannel[_0x8001('0x25')][_0x8001('0x1c')]=function(_0x211536,_0x436653){this[_0x8001('0x4b')](util[_0x8001('0x2c')]('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x211536['id'],_0x211536[_0x8001('0x4c')],_0x436653));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x8001('0x4d')]=AGIChannel;
\ No newline at end of file
index 1252bfc..3cfd4f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x701e=['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.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','message','name','exports','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.'];(function(_0x3bd564,_0x3c1502){var _0x51c5b0=function(_0x250cba){while(--_0x250cba){_0x3bd564['push'](_0x3bd564['shift']());}};_0x51c5b0(++_0x3c1502);}(_0x701e,0x142));var _0xe701=function(_0x4f8998,_0x5774f3){_0x4f8998=_0x4f8998-0x0;var _0x47a429=_0x701e[_0x4f8998];return _0x47a429;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':_0xe701('0x0'),'E_AGI_ARGUMENT_PORT':_0xe701('0x1'),'E_AGI_SERVER_ERROR':_0xe701('0x2'),'E_AGI_SERVER_CLOSE':_0xe701('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0xe701('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0xe701('0x5'),'E_AGI_SOCKET_ERROR':_0xe701('0x6'),'E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0xe701('0x7'),'E_AGI_COMMAND_EMPTY':_0xe701('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xe701('0x9'),'E_AGI_IVR_ENTRY':_0xe701('0xa')};function AGIError(_0x4ba625){var _0x4ba625=_0x4ba625||null,_0xe6811c=_0xe6811c||[],_0x227184=0x1,_0x4807f0='';if(!error[_0x4ba625]){_0x4ba625=_0xe701('0xb');}_0xe6811c[_0xe701('0xc')](error[_0x4ba625]);while(arguments[_0x227184]){_0xe6811c[_0xe701('0xc')](arguments[_0x227184]);_0x227184++;}_0x4807f0=util[_0xe701('0xd')][_0xe701('0xe')](util,_0xe6811c);this[_0xe701('0xf')]=_0x4807f0;this[_0xe701('0x10')]=_0x4ba625;}module[_0xe701('0x11')]=AGIError;
\ No newline at end of file
+var _0x3aab=['Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Empty\x20command.','E_AGI_UNDEFINED','push','format','name','exports','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.'];(function(_0x15cb36,_0x2f5af5){var _0x182314=function(_0x57242c){while(--_0x57242c){_0x15cb36['push'](_0x15cb36['shift']());}};_0x182314(++_0x2f5af5);}(_0x3aab,0x8d));var _0xb3aa=function(_0x188cd7,_0x1a9c43){_0x188cd7=_0x188cd7-0x0;var _0x47d7fc=_0x3aab[_0x188cd7];return _0x47d7fc;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':_0xb3aa('0x0'),'E_AGI_ARGUMENT_PORT':_0xb3aa('0x1'),'E_AGI_SERVER_ERROR':_0xb3aa('0x2'),'E_AGI_SERVER_CLOSE':_0xb3aa('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0xb3aa('0x4'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':_0xb3aa('0x5'),'E_AGI_SOCKET_CLOSE':_0xb3aa('0x6'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0xb3aa('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x1aa2d3){var _0x1aa2d3=_0x1aa2d3||null,_0x149dd2=_0x149dd2||[],_0x384482=0x1,_0x2d429f='';if(!error[_0x1aa2d3]){_0x1aa2d3=_0xb3aa('0x8');}_0x149dd2[_0xb3aa('0x9')](error[_0x1aa2d3]);while(arguments[_0x384482]){_0x149dd2[_0xb3aa('0x9')](arguments[_0x384482]);_0x384482++;}_0x2d429f=util[_0xb3aa('0xa')]['apply'](util,_0x149dd2);this['message']=_0x2d429f;this[_0xb3aa('0xb')]=_0x1aa2d3;}module[_0xb3aa('0xc')]=AGIError;
\ No newline at end of file
index a51bad0..3c162e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79d4=['info','stop\x20traverse','no\x20edge/s\x20available','condition','split','agicommand','vswitch','default','target','invalid','length','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','agi','menu','getdigits','edges','numberOfEdges','addVertex','vertices','prototype','addEdge','push','size','relations','getVertex','traverseBFS'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x79d4,0x177));var _0x479d=function(_0x39dc44,_0x595103){_0x39dc44=_0x39dc44-0x0;var _0x39a6b5=_0x79d4[_0x39dc44];return _0x39a6b5;};'use strict';var _=require(_0x479d('0x0'));var logger=require('../../../config/logger')(_0x479d('0x1'));var verticesWithRetry=[_0x479d('0x2'),_0x479d('0x3'),'getsecretdigits'];var Graph=function(){this['vertices']={};this[_0x479d('0x4')]={};this[_0x479d('0x5')]=0x0;};Graph['prototype'][_0x479d('0x6')]=function(_0x13afa7){this[_0x479d('0x7')][_0x13afa7['id']]=_0x13afa7;this[_0x479d('0x4')][_0x13afa7['id']]=[];};Graph[_0x479d('0x8')][_0x479d('0x9')]=function(_0x24a638,_0x543007,_0x295baa){this[_0x479d('0x4')][_0x24a638][_0x479d('0xa')]({'target':_0x543007,'condition':_0x295baa});this[_0x479d('0x5')]+=0x1;};Graph[_0x479d('0x8')][_0x479d('0xb')]=function(){return _[_0x479d('0xb')](this['vertices']);};Graph['prototype'][_0x479d('0xc')]=function(){return this[_0x479d('0x5')];};Graph[_0x479d('0x8')][_0x479d('0xd')]=function(_0x5e5d00){return this[_0x479d('0x7')][_0x5e5d00];};Graph[_0x479d('0x8')][_0x479d('0xe')]=function(_0x8086ed,_0x2af6ce){if(!this['vertices'][_0x8086ed]){return logger['info']('no\x20vertex\x20found');}var _0x33f137=_0x2af6ce(this[_0x479d('0x7')][_0x8086ed]);if(!_0x33f137){return logger[_0x479d('0xf')](_0x479d('0x10'));}if(this[_0x479d('0x4')][_0x8086ed]['length']===0x0){return logger['info'](_0x479d('0x11'));}for(var _0x2cd010=0x0,_0x47fa40=[],_0x5cd11c=![];_0x2cd010<this[_0x479d('0x4')][_0x8086ed]['length'];_0x2cd010+=0x1){if(this[_0x479d('0x4')][_0x8086ed][_0x2cd010][_0x479d('0x12')]){_0x47fa40=this[_0x479d('0x4')][_0x8086ed][_0x2cd010][_0x479d('0x12')][_0x479d('0x13')](',');for(var _0x4ed28b=0x0;_0x4ed28b<_0x47fa40['length'];_0x4ed28b+=0x1){if(this[_0x479d('0x7')][_0x8086ed][_0x479d('0x14')]===_0x479d('0x15')&&_0x47fa40[_0x4ed28b]==='-'){_0x5cd11c=this[_0x479d('0x4')][_0x8086ed][_0x2cd010]['target'];logger[_0x479d('0xf')](_0x479d('0x16'),_0x47fa40[_0x4ed28b],this[_0x479d('0x4')][_0x8086ed][_0x2cd010][_0x479d('0x17')]);}else if(this[_0x479d('0x7')][_0x8086ed][_0x479d('0x14')]===_0x479d('0x2')&&_0x47fa40[_0x4ed28b]==='i'){_0x5cd11c=this['edges'][_0x8086ed][_0x2cd010][_0x479d('0x17')];logger[_0x479d('0xf')](_0x479d('0x18'),_0x47fa40[_0x4ed28b],this[_0x479d('0x4')][_0x8086ed][_0x2cd010][_0x479d('0x17')]);}if(_0x47fa40[_0x4ed28b]===_0x33f137){return this[_0x479d('0xe')](this[_0x479d('0x4')][_0x8086ed][_0x2cd010][_0x479d('0x17')],_0x2af6ce);}}}else{return this[_0x479d('0xe')](this[_0x479d('0x4')][_0x8086ed][_0x2cd010][_0x479d('0x17')],_0x2af6ce);}}if(_0x47fa40[_0x479d('0x19')]){if(this[_0x479d('0x7')][_0x8086ed][_0x479d('0x14')]==='vswitch'){if(_0x5cd11c){return this[_0x479d('0xe')](_0x5cd11c,_0x2af6ce);}return logger[_0x479d('0xf')]('default\x20on\x20switch\x20not\x20found');}else if(_[_0x479d('0x1a')](verticesWithRetry,this[_0x479d('0x7')][_0x8086ed][_0x479d('0x14')])){if(_0x33f137==='-'){return logger[_0x479d('0xf')](_0x479d('0x1b'));}if(_0x5cd11c&&_0x33f137!=='t'){return this[_0x479d('0xe')](_0x5cd11c,_0x2af6ce);}return this[_0x479d('0xe')](_0x8086ed,_0x2af6ce);}return logger['info'](_0x479d('0x1c'));}};module[_0x479d('0x1d')]=Graph;
\ No newline at end of file
+var _0x5c00=['addVertex','addEdge','push','numberOfEdges','size','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','agicommand','vswitch','target','default','menu','invalid','max\x20retry\x20reach','condition\x20not\x20found','exports','../../../config/logger','agi','getdigits','vertices','edges','prototype'];(function(_0x4b4f24,_0x5654a8){var _0x1c13d4=function(_0x4940bf){while(--_0x4940bf){_0x4b4f24['push'](_0x4b4f24['shift']());}};_0x1c13d4(++_0x5654a8);}(_0x5c00,0xea));var _0x05c0=function(_0x29ceb7,_0x464552){_0x29ceb7=_0x29ceb7-0x0;var _0x26e370=_0x5c00[_0x29ceb7];return _0x26e370;};'use strict';var _=require('lodash');var logger=require(_0x05c0('0x0'))(_0x05c0('0x1'));var verticesWithRetry=['menu',_0x05c0('0x2'),'getsecretdigits'];var Graph=function(){this[_0x05c0('0x3')]={};this[_0x05c0('0x4')]={};this['numberOfEdges']=0x0;};Graph[_0x05c0('0x5')][_0x05c0('0x6')]=function(_0x489db8){this[_0x05c0('0x3')][_0x489db8['id']]=_0x489db8;this[_0x05c0('0x4')][_0x489db8['id']]=[];};Graph[_0x05c0('0x5')][_0x05c0('0x7')]=function(_0x126ed7,_0x2d5a93,_0x3e4bc5){this[_0x05c0('0x4')][_0x126ed7][_0x05c0('0x8')]({'target':_0x2d5a93,'condition':_0x3e4bc5});this[_0x05c0('0x9')]+=0x1;};Graph[_0x05c0('0x5')]['size']=function(){return _[_0x05c0('0xa')](this[_0x05c0('0x3')]);};Graph[_0x05c0('0x5')][_0x05c0('0xb')]=function(){return this[_0x05c0('0x9')];};Graph[_0x05c0('0x5')][_0x05c0('0xc')]=function(_0x32f47d){return this[_0x05c0('0x3')][_0x32f47d];};Graph['prototype'][_0x05c0('0xd')]=function(_0x3756bc,_0x308d59){if(!this[_0x05c0('0x3')][_0x3756bc]){return logger[_0x05c0('0xe')](_0x05c0('0xf'));}var _0x1d9300=_0x308d59(this[_0x05c0('0x3')][_0x3756bc]);if(!_0x1d9300){return logger[_0x05c0('0xe')](_0x05c0('0x10'));}if(this[_0x05c0('0x4')][_0x3756bc][_0x05c0('0x11')]===0x0){return logger[_0x05c0('0xe')](_0x05c0('0x12'));}for(var _0x13c540=0x0,_0x52a84f=[],_0xc35d6b=![];_0x13c540<this[_0x05c0('0x4')][_0x3756bc][_0x05c0('0x11')];_0x13c540+=0x1){if(this['edges'][_0x3756bc][_0x13c540][_0x05c0('0x13')]){_0x52a84f=this['edges'][_0x3756bc][_0x13c540][_0x05c0('0x13')][_0x05c0('0x14')](',');for(var _0x3df26e=0x0;_0x3df26e<_0x52a84f[_0x05c0('0x11')];_0x3df26e+=0x1){if(this['vertices'][_0x3756bc][_0x05c0('0x15')]===_0x05c0('0x16')&&_0x52a84f[_0x3df26e]==='-'){_0xc35d6b=this['edges'][_0x3756bc][_0x13c540][_0x05c0('0x17')];logger[_0x05c0('0xe')](_0x05c0('0x18'),_0x52a84f[_0x3df26e],this[_0x05c0('0x4')][_0x3756bc][_0x13c540][_0x05c0('0x17')]);}else if(this[_0x05c0('0x3')][_0x3756bc]['agicommand']===_0x05c0('0x19')&&_0x52a84f[_0x3df26e]==='i'){_0xc35d6b=this[_0x05c0('0x4')][_0x3756bc][_0x13c540][_0x05c0('0x17')];logger['info'](_0x05c0('0x1a'),_0x52a84f[_0x3df26e],this['edges'][_0x3756bc][_0x13c540][_0x05c0('0x17')]);}if(_0x52a84f[_0x3df26e]===_0x1d9300){return this[_0x05c0('0xd')](this[_0x05c0('0x4')][_0x3756bc][_0x13c540][_0x05c0('0x17')],_0x308d59);}}}else{return this[_0x05c0('0xd')](this['edges'][_0x3756bc][_0x13c540]['target'],_0x308d59);}}if(_0x52a84f[_0x05c0('0x11')]){if(this[_0x05c0('0x3')][_0x3756bc]['agicommand']===_0x05c0('0x16')){if(_0xc35d6b){return this[_0x05c0('0xd')](_0xc35d6b,_0x308d59);}return logger[_0x05c0('0xe')]('default\x20on\x20switch\x20not\x20found');}else if(_['includes'](verticesWithRetry,this[_0x05c0('0x3')][_0x3756bc]['agicommand'])){if(_0x1d9300==='-'){return logger['info'](_0x05c0('0x1b'));}if(_0xc35d6b&&_0x1d9300!=='t'){return this[_0x05c0('0xd')](_0xc35d6b,_0x308d59);}return this[_0x05c0('0xd')](_0x3756bc,_0x308d59);}return logger[_0x05c0('0xe')](_0x05c0('0x1c'));}};module[_0x05c0('0x1d')]=Graph;
\ No newline at end of file
index 75318a4..fd177c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7cc=['Project\x20%s\x20not\x20found','close','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','xml2json','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','defaults','127.0.0.1','nextTick','error','stack','log','port','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','format','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','hasOwnProperty','retry','maxRetry','omit','mxCell','length','source','target','getSquareProject','then','createSquareReport','catch','indexOf','substring','inspect','debug','variables','timeout','production','start','joinAt','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','agicommand','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','stringify','result','isUndefined','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[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','Project\x20%s\x20not\x20published','continueAt'];(function(_0x131557,_0x541d3b){var _0x20ccbd=function(_0x5af406){while(--_0x5af406){_0x131557['push'](_0x131557['shift']());}};_0x20ccbd(++_0x541d3b);}(_0xa7cc,0xba));var _0xca7c=function(_0x686b80,_0x409cf7){_0x686b80=_0x686b80-0x0;var _0x2f4f5a=_0xa7cc[_0x686b80];return _0x2f4f5a;};'use strict';var parser=require(_0xca7c('0x0'));var _=require('lodash');var syncho=require('syncho');var util=require(_0xca7c('0x1'));var moment=require(_0xca7c('0x2'));var config=require(_0xca7c('0x3'));var logger=require(_0xca7c('0x4'))(_0xca7c('0x5'));var utilLicense=require(_0xca7c('0x6'));var rpc=require(_0xca7c('0x7'));var mailRpc=require(_0xca7c('0x8'));var Graph=require(_0xca7c('0x9'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xca7c('0x5')]=_[_0xca7c('0xa')](config[_0xca7c('0x5')],{'ip':_0xca7c('0xb'),'port':0x11dd});function connectionHandler(_0x5c14a9){process[_0xca7c('0xc')](function(){syncho(function(){try{setChannelVariables(_0x5c14a9);agiHandler(_0x5c14a9);}catch(_0xf40236){logger[_0xca7c('0xd')](_0xf40236[_0xca7c('0xe')]);}});});}function listeningHandler(){console[_0xca7c('0xf')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0xca7c('0x5')][_0xca7c('0x10')]);logger[_0xca7c('0x11')](util['format'](_0xca7c('0x12'),config['agi']['ip'],config[_0xca7c('0x5')][_0xca7c('0x10')]));}function errorHandler(_0x84fff0){if(_0x84fff0&&_0x84fff0[_0xca7c('0x13')]&&_0x84fff0[_0xca7c('0x14')]){logger['error'](util[_0xca7c('0x15')]('[%s]\x20%s',_0x84fff0[_0xca7c('0x13')],_0x84fff0[_0xca7c('0x14')]));}else{logger[_0xca7c('0xd')](util[_0xca7c('0x15')]('[ERROR]\x20%s',_0x84fff0['stack']));}}function closeHandler(){logger[_0xca7c('0x11')](util[_0xca7c('0x15')](_0xca7c('0x16'),this[_0xca7c('0x17')],this[_0xca7c('0x18')],this[_0xca7c('0x19')],this[_0xca7c('0x1a')],this[_0xca7c('0x1b')]));try{createSquareReport(this);}catch(_0x46c7ef){logger[_0xca7c('0xd')](_0x46c7ef[_0xca7c('0xe')]);}}function timeoutHandler(){logger['info'](util[_0xca7c('0x15')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xca7c('0x17')],this[_0xca7c('0x18')],this[_0xca7c('0x19')],this[_0xca7c('0x1a')],this[_0xca7c('0x1b')]));}function hangupHandler(){logger[_0xca7c('0x11')](util['format'](_0xca7c('0x1c'),this[_0xca7c('0x17')],this[_0xca7c('0x18')],this[_0xca7c('0x19')],this[_0xca7c('0x1a')],this[_0xca7c('0x1b')]));this[_0xca7c('0x1d')]=!![];}function getRoot(_0xfe222){return parser[_0xca7c('0x1e')](_0xfe222,{'object':!![]})[_0xca7c('0x1f')][_0xca7c('0x20')];}function addVertex(_0x131b77,_0x117d1e,_0x49e73d){_0x117d1e['agicommand']=_0x49e73d;if(_0x117d1e[_0xca7c('0x21')](_0xca7c('0x22'))){_0x117d1e[_0xca7c('0x23')]=parseInt(_0x117d1e[_0xca7c('0x22')],0xa);}_0x131b77['addVertex'](_[_0xca7c('0x24')](_0x117d1e,_0xca7c('0x25')));}function initGraph(_0x5823b1,_0x4b7492){var _0x5e6a51=new Graph();for(var _0x23cf2e in _0x5823b1){if(_0x5823b1[_0xca7c('0x21')](_0x23cf2e)){if(_['isArray'](_0x5823b1[_0x23cf2e])){for(var _0x312ed5=0x0;_0x312ed5<_0x5823b1[_0x23cf2e][_0xca7c('0x26')];_0x312ed5+=0x1){addVertex(_0x5e6a51,_0x5823b1[_0x23cf2e][_0x312ed5],_0x23cf2e);}}else{addVertex(_0x5e6a51,_0x5823b1[_0x23cf2e],_0x23cf2e);}}}for(var _0x543cc5=0x0;_0x543cc5<_0x4b7492[_0xca7c('0x26')];_0x543cc5+=0x1){if(_0x4b7492[_0x543cc5][_0xca7c('0x27')]&&_0x4b7492[_0x543cc5][_0xca7c('0x28')]){_0x5e6a51['addEdge'](_0x4b7492[_0x543cc5][_0xca7c('0x27')],_0x4b7492[_0x543cc5][_0xca7c('0x28')],_0x4b7492[_0x543cc5]['value']);}}return _0x5e6a51;}function getSquareProject(_0x414dcc,_0x3a4e96){rpc[_0xca7c('0x29')](_0x414dcc)[_0xca7c('0x2a')](function(_0x53c321){_0x3a4e96(null,_0x53c321);})['catch'](function(_0x349f80){_0x3a4e96(null,_0x349f80);});}function createSquareReport(_0xa84d57,_0x481718){rpc[_0xca7c('0x2b')](_0xa84d57)[_0xca7c('0x2a')](function(_0x1727f2){if(_0x481718){_0x481718(null,_0x1727f2);}})[_0xca7c('0x2c')](function(_0x15607e){if(_0x481718){_0x481718(null,_0x15607e);}});}function setChannelVariables(_0x5b613c){for(var _0xdd3598 in _0x5b613c){if(_0x5b613c[_0xca7c('0x21')](_0xdd3598)){if(_0xdd3598[_0xca7c('0x2d')]('agi_')===0x0){_0x5b613c[_0xdd3598[_0xca7c('0x2e')](0x4)]=_0x5b613c[_0xdd3598];delete _0x5b613c[_0xdd3598];}}}}function getLogFromObject(_0x118455){return util[_0xca7c('0x2f')](_0x118455,{'showHidden':![],'depth':null});}function agiHandler(_0x3e21b8){var _0x2447b1,_0x31baf5,_0x4637fe,_0x3cd8c7,_0xeb5189;logger[_0xca7c('0x30')](_0xca7c('0x31'),JSON['stringify'](_0x3e21b8,null,0x2));logger[_0xca7c('0x11')](util[_0xca7c('0x15')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x3e21b8['arg_1'],_0x3e21b8[_0xca7c('0x18')],_0x3e21b8[_0xca7c('0x19')],_0x3e21b8[_0xca7c('0x1a')],_0x3e21b8[_0xca7c('0x1b')]));_0x3e21b8['on']('error',errorHandler);_0x3e21b8['on']('close',closeHandler);_0x3e21b8['on'](_0xca7c('0x32'),timeoutHandler);_0x3e21b8[_0xca7c('0x1d')]=![];_0x3e21b8['on']('hangup',hangupHandler);var _0x5f59a8=getSquareProject['sync'](null,_0x3e21b8[_0xca7c('0x17')]);if(_0x5f59a8){if(_0x5f59a8[_0xca7c('0x33')]){_0x2447b1=getRoot(_0x5f59a8[_0xca7c('0x33')]);if(_0x2447b1&&_0x2447b1[_0xca7c('0x34')]){logger[_0xca7c('0x30')](_0xca7c('0x20'),JSON['stringify'](_0x2447b1,null,0x2));_0x3e21b8[_0xca7c('0x35')]=moment()[_0xca7c('0x15')]('YYYY-MM-DD\x20HH:mm:ss');_0x31baf5=initGraph(_[_0xca7c('0x24')](_0x2447b1,_0xca7c('0x25')),_0x2447b1[_0xca7c('0x25')]);_0x4637fe=new Vertices(_0x3e21b8,rpc,mailRpc);logger['info'](util['format'](_0xca7c('0x36'),_0x3e21b8[_0xca7c('0x17')],_0x3e21b8[_0xca7c('0x18')],_0x3e21b8[_0xca7c('0x19')],_0x3e21b8[_0xca7c('0x1a')],_0x3e21b8['uniqueid']));_0x31baf5[_0xca7c('0x37')](_0x2447b1['start']['id'],function(_0x126faa){try{_0x126faa=_0x4637fe[_0xca7c('0x38')](_0x126faa);logger['debug'](_0xca7c('0x39'),JSON['stringify'](_0x126faa,null,0x2));if(_0x126faa[_0xca7c('0x3a')]==='gotoc'){logger['info'](_0xca7c('0x3b'));_0x3e21b8[_0xca7c('0x3c')]=_0x126faa['context']||_0x3e21b8['context'];_0x3e21b8[_0xca7c('0x3d')]=_0x126faa[_0xca7c('0x3d')];_0x3e21b8[_0xca7c('0x3e')]=_0x126faa[_0xca7c('0x3e')]?_0x126faa['priority']-0x1:0x1;return null;}else if(_0x126faa&&_0x4637fe[_0x126faa[_0xca7c('0x3a')]]){_0xeb5189=_0x4637fe[_0x126faa[_0xca7c('0x3a')]](_0x126faa);logger[_0xca7c('0x11')](_0xca7c('0x3f'),JSON[_0xca7c('0x40')](_0xeb5189,null,0x2));if(_0xeb5189&&_0xeb5189['code']===AGI_CODE_SUCCESS&&_0xeb5189[_0xca7c('0x41')]!==AGI_RESULT_ERROR&&!_0x3e21b8[_0xca7c('0x1d')]){logger[_0xca7c('0x30')]('response',getLogFromObject(_0xeb5189));return _[_0xca7c('0x42')](_0xeb5189[_0xca7c('0x41')])?null:_0xeb5189[_0xca7c('0x41')][_0xca7c('0x43')]();}else{logger[_0xca7c('0xd')](_0xca7c('0x3f'),getLogFromObject(_0xeb5189));return null;}}else{logger['error'](_0xca7c('0x44'));return null;}}catch(_0x5df2dd){logger[_0xca7c('0xd')](_0x5df2dd['stack']);return null;}});if(_0x2447b1[_0xca7c('0x45')]){logger['info'](util[_0xca7c('0x15')](_0xca7c('0x46'),_0x3e21b8[_0xca7c('0x17')],_0x3e21b8['calleridname'],_0x3e21b8[_0xca7c('0x19')],_0x3e21b8[_0xca7c('0x1a')],_0x3e21b8[_0xca7c('0x1b')]));_0x31baf5[_0xca7c('0x37')](_0x2447b1[_0xca7c('0x45')]['id'],function(_0x18cd15){try{_0x18cd15=_0x4637fe[_0xca7c('0x38')](_0x18cd15);logger[_0xca7c('0x30')](_0xca7c('0x39'),JSON['stringify'](_0x18cd15,null,0x2));if(_0x18cd15&&_0x4637fe[_0x18cd15[_0xca7c('0x3a')]]){_0xeb5189=_0x4637fe[_0x18cd15[_0xca7c('0x3a')]](_0x18cd15);if(_0xeb5189){logger[_0xca7c('0x30')](_0xca7c('0x3f'),getLogFromObject(_0xeb5189));return _[_0xca7c('0x42')](_0xeb5189[_0xca7c('0x41')])?null:_0xeb5189['result'][_0xca7c('0x43')]();}else{logger[_0xca7c('0xd')](_0xca7c('0x3f'),getLogFromObject(_0xeb5189));return null;}}else{logger['error']('agicommand\x20not\x20found');return null;}}catch(_0x23d180){logger[_0xca7c('0xd')](_0x23d180['stack']);return null;}});}logger[_0xca7c('0x11')](util['format'](_0xca7c('0x47'),_0x3e21b8[_0xca7c('0x17')],_0x3e21b8[_0xca7c('0x18')],_0x3e21b8[_0xca7c('0x19')],_0x3e21b8[_0xca7c('0x1a')],_0x3e21b8[_0xca7c('0x1b')]));logger[_0xca7c('0x11')](util['format'](_0xca7c('0x48'),_0x3e21b8[_0xca7c('0x3c')],_0x3e21b8[_0xca7c('0x3d')],parseInt(_0x3e21b8[_0xca7c('0x3e')],0xa)+0x1));_0x3e21b8['continueAt'](_0x3e21b8[_0xca7c('0x3c')],_0x3e21b8[_0xca7c('0x3d')],parseInt(_0x3e21b8[_0xca7c('0x3e')],0xa)+0x1);_0x3e21b8['close']();}}else{logger[_0xca7c('0xd')](util['format'](_0xca7c('0x49'),_0x3e21b8['arg_1']));_0x3e21b8[_0xca7c('0x4a')](_0x3e21b8[_0xca7c('0x3c')],_0x3e21b8[_0xca7c('0x3d')],parseInt(_0x3e21b8[_0xca7c('0x3e')],0xa)+0x1);_0x3e21b8['close']();}}else{logger['error'](util[_0xca7c('0x15')](_0xca7c('0x4b'),_0x3e21b8[_0xca7c('0x17')]));_0x3e21b8[_0xca7c('0x4a')](_0x3e21b8[_0xca7c('0x3c')],_0x3e21b8[_0xca7c('0x3d')],parseInt(_0x3e21b8['priority'],0xa)+0x1);_0x3e21b8[_0xca7c('0x4c')]();}}function main(){var _0x443ebc;return utilLicense[_0xca7c('0x4d')]()[_0xca7c('0x2a')](function(_0x4fabe0){if(_0x4fabe0){if(_0x4fabe0[_0xca7c('0x4e')]){if(_0x4fabe0[_0xca7c('0x4f')]&&_0x4fabe0['callysquare']>0x0){logger[_0xca7c('0x11')](util['format'](_0xca7c('0x50'),_0x4fabe0[_0xca7c('0x4f')]));_0x443ebc=_0x4fabe0[_0xca7c('0x4f')];}else{logger['info'](_0xca7c('0x51'));}}else{logger[_0xca7c('0x11')](_0xca7c('0x52'));_0x443ebc=-0x1;}}})[_0xca7c('0x2c')](function(_0x5112ed){logger[_0xca7c('0xd')](_0xca7c('0x53'),_0x5112ed[_0xca7c('0xe')]);})[_0xca7c('0x45')](function(){var _0x19999b=require(_0xca7c('0x54'))(config[_0xca7c('0x5')][_0xca7c('0x10')],config[_0xca7c('0x5')]['ip'],_0x443ebc);_0x19999b['on'](_0xca7c('0xd'),errorHandler);_0x19999b['on'](_0xca7c('0x55'),listeningHandler);_0x19999b['on'](_0xca7c('0x56'),connectionHandler);_0x19999b['on'](_0xca7c('0x4c'),closeHandler);});}main();
\ No newline at end of file
+var _0x9729=['xml2json','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','127.0.0.1','nextTick','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','name','message','[ERROR]\x20%s','info','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','evtHangup','toJson','mxGraphModel','retry','addVertex','omit','mxCell','isArray','length','source','target','value','getSquareProject','then','catch','createSquareReport','hasOwnProperty','indexOf','agi_','substring','inspect','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','hangup','sync','production','start','root','YYYY-MM-DD\x20HH:mm:ss','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','agicommand','result','response','isUndefined','toString','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','vertex','agicommand\x20not\x20found','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','continueAt','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','listening','connection'];(function(_0x20c9b2,_0x55d7b1){var _0x2c6030=function(_0x10845f){while(--_0x10845f){_0x20c9b2['push'](_0x20c9b2['shift']());}};_0x2c6030(++_0x55d7b1);}(_0x9729,0x114));var _0x9972=function(_0x9b49c2,_0x53a754){_0x9b49c2=_0x9b49c2-0x0;var _0x21c2ee=_0x9729[_0x9b49c2];return _0x21c2ee;};'use strict';var parser=require(_0x9972('0x0'));var _=require(_0x9972('0x1'));var syncho=require(_0x9972('0x2'));var util=require(_0x9972('0x3'));var moment=require(_0x9972('0x4'));var config=require(_0x9972('0x5'));var logger=require(_0x9972('0x6'))(_0x9972('0x7'));var utilLicense=require(_0x9972('0x8'));var rpc=require(_0x9972('0x9'));var mailRpc=require(_0x9972('0xa'));var Graph=require(_0x9972('0xb'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_['defaults'](config[_0x9972('0x7')],{'ip':_0x9972('0xc'),'port':0x11dd});function connectionHandler(_0x4d4d03){process[_0x9972('0xd')](function(){syncho(function(){try{setChannelVariables(_0x4d4d03);agiHandler(_0x4d4d03);}catch(_0x5bd91f){logger[_0x9972('0xe')](_0x5bd91f[_0x9972('0xf')]);}});});}function listeningHandler(){console[_0x9972('0x10')](_0x9972('0x11'),config[_0x9972('0x7')]['port']);logger['info'](util[_0x9972('0x12')](_0x9972('0x13'),config['agi']['ip'],config[_0x9972('0x7')][_0x9972('0x14')]));}function errorHandler(_0x1893ce){if(_0x1893ce&&_0x1893ce[_0x9972('0x15')]&&_0x1893ce[_0x9972('0x16')]){logger[_0x9972('0xe')](util[_0x9972('0x12')]('[%s]\x20%s',_0x1893ce[_0x9972('0x15')],_0x1893ce[_0x9972('0x16')]));}else{logger[_0x9972('0xe')](util[_0x9972('0x12')](_0x9972('0x17'),_0x1893ce[_0x9972('0xf')]));}}function closeHandler(){logger[_0x9972('0x18')](util['format'](_0x9972('0x19'),this[_0x9972('0x1a')],this[_0x9972('0x1b')],this[_0x9972('0x1c')],this[_0x9972('0x1d')],this[_0x9972('0x1e')]));try{createSquareReport(this);}catch(_0x2ee068){logger[_0x9972('0xe')](_0x2ee068['stack']);}}function timeoutHandler(){logger[_0x9972('0x18')](util[_0x9972('0x12')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x9972('0x1a')],this['calleridname'],this[_0x9972('0x1c')],this[_0x9972('0x1d')],this[_0x9972('0x1e')]));}function hangupHandler(){logger[_0x9972('0x18')](util[_0x9972('0x12')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x9972('0x1a')],this[_0x9972('0x1b')],this[_0x9972('0x1c')],this[_0x9972('0x1d')],this[_0x9972('0x1e')]));this[_0x9972('0x1f')]=!![];}function getRoot(_0x1639c3){return parser[_0x9972('0x20')](_0x1639c3,{'object':!![]})[_0x9972('0x21')]['root'];}function addVertex(_0x2bb911,_0x457215,_0x5483d6){_0x457215['agicommand']=_0x5483d6;if(_0x457215['hasOwnProperty']('retry')){_0x457215['maxRetry']=parseInt(_0x457215[_0x9972('0x22')],0xa);}_0x2bb911[_0x9972('0x23')](_[_0x9972('0x24')](_0x457215,_0x9972('0x25')));}function initGraph(_0x3b7355,_0x546a53){var _0x40e858=new Graph();for(var _0x211977 in _0x3b7355){if(_0x3b7355['hasOwnProperty'](_0x211977)){if(_[_0x9972('0x26')](_0x3b7355[_0x211977])){for(var _0x29aa20=0x0;_0x29aa20<_0x3b7355[_0x211977][_0x9972('0x27')];_0x29aa20+=0x1){addVertex(_0x40e858,_0x3b7355[_0x211977][_0x29aa20],_0x211977);}}else{addVertex(_0x40e858,_0x3b7355[_0x211977],_0x211977);}}}for(var _0x5e3055=0x0;_0x5e3055<_0x546a53[_0x9972('0x27')];_0x5e3055+=0x1){if(_0x546a53[_0x5e3055][_0x9972('0x28')]&&_0x546a53[_0x5e3055]['target']){_0x40e858['addEdge'](_0x546a53[_0x5e3055][_0x9972('0x28')],_0x546a53[_0x5e3055][_0x9972('0x29')],_0x546a53[_0x5e3055][_0x9972('0x2a')]);}}return _0x40e858;}function getSquareProject(_0x3ae1d7,_0x16561f){rpc[_0x9972('0x2b')](_0x3ae1d7)[_0x9972('0x2c')](function(_0x5eacaf){_0x16561f(null,_0x5eacaf);})[_0x9972('0x2d')](function(_0x5aae40){_0x16561f(null,_0x5aae40);});}function createSquareReport(_0x331b64,_0x2aff6b){rpc[_0x9972('0x2e')](_0x331b64)['then'](function(_0x5d3d4e){if(_0x2aff6b){_0x2aff6b(null,_0x5d3d4e);}})[_0x9972('0x2d')](function(_0x138adf){if(_0x2aff6b){_0x2aff6b(null,_0x138adf);}});}function setChannelVariables(_0x480b00){for(var _0x519cb6 in _0x480b00){if(_0x480b00[_0x9972('0x2f')](_0x519cb6)){if(_0x519cb6[_0x9972('0x30')](_0x9972('0x31'))===0x0){_0x480b00[_0x519cb6[_0x9972('0x32')](0x4)]=_0x480b00[_0x519cb6];delete _0x480b00[_0x519cb6];}}}}function getLogFromObject(_0x5ee581){return util[_0x9972('0x33')](_0x5ee581,{'showHidden':![],'depth':null});}function agiHandler(_0x574650){var _0x2e1ac1,_0x1a85fc,_0x5b7ac3,_0x307823,_0x39b2e4;logger[_0x9972('0x34')](_0x9972('0x35'),JSON[_0x9972('0x36')](_0x574650,null,0x2));logger['info'](util[_0x9972('0x12')](_0x9972('0x37'),_0x574650[_0x9972('0x1a')],_0x574650[_0x9972('0x1b')],_0x574650[_0x9972('0x1c')],_0x574650[_0x9972('0x1d')],_0x574650['uniqueid']));_0x574650['on'](_0x9972('0xe'),errorHandler);_0x574650['on'](_0x9972('0x38'),closeHandler);_0x574650['on']('timeout',timeoutHandler);_0x574650[_0x9972('0x1f')]=![];_0x574650['on'](_0x9972('0x39'),hangupHandler);var _0x35cdcc=getSquareProject[_0x9972('0x3a')](null,_0x574650[_0x9972('0x1a')]);if(_0x35cdcc){if(_0x35cdcc[_0x9972('0x3b')]){_0x2e1ac1=getRoot(_0x35cdcc[_0x9972('0x3b')]);if(_0x2e1ac1&&_0x2e1ac1[_0x9972('0x3c')]){logger[_0x9972('0x34')](_0x9972('0x3d'),JSON[_0x9972('0x36')](_0x2e1ac1,null,0x2));_0x574650['joinAt']=moment()[_0x9972('0x12')](_0x9972('0x3e'));_0x1a85fc=initGraph(_['omit'](_0x2e1ac1,'mxCell'),_0x2e1ac1[_0x9972('0x25')]);_0x5b7ac3=new Vertices(_0x574650,rpc,mailRpc);logger[_0x9972('0x18')](util['format'](_0x9972('0x3f'),_0x574650[_0x9972('0x1a')],_0x574650['calleridname'],_0x574650['callerid'],_0x574650[_0x9972('0x1d')],_0x574650[_0x9972('0x1e')]));_0x1a85fc[_0x9972('0x40')](_0x2e1ac1[_0x9972('0x3c')]['id'],function(_0x483aeb){try{_0x483aeb=_0x5b7ac3[_0x9972('0x41')](_0x483aeb);logger[_0x9972('0x34')]('vertex',JSON['stringify'](_0x483aeb,null,0x2));if(_0x483aeb['agicommand']==='gotoc'){logger[_0x9972('0x18')](_0x9972('0x42'));_0x574650[_0x9972('0x43')]=_0x483aeb[_0x9972('0x43')]||_0x574650[_0x9972('0x43')];_0x574650[_0x9972('0x44')]=_0x483aeb[_0x9972('0x44')];_0x574650[_0x9972('0x45')]=_0x483aeb[_0x9972('0x45')]?_0x483aeb[_0x9972('0x45')]-0x1:0x1;return null;}else if(_0x483aeb&&_0x5b7ac3[_0x483aeb[_0x9972('0x46')]]){_0x39b2e4=_0x5b7ac3[_0x483aeb[_0x9972('0x46')]](_0x483aeb);logger[_0x9972('0x18')]('response',JSON[_0x9972('0x36')](_0x39b2e4,null,0x2));if(_0x39b2e4&&_0x39b2e4['code']===AGI_CODE_SUCCESS&&_0x39b2e4[_0x9972('0x47')]!==AGI_RESULT_ERROR&&!_0x574650['evtHangup']){logger[_0x9972('0x34')](_0x9972('0x48'),getLogFromObject(_0x39b2e4));return _[_0x9972('0x49')](_0x39b2e4['result'])?null:_0x39b2e4[_0x9972('0x47')][_0x9972('0x4a')]();}else{logger[_0x9972('0xe')](_0x9972('0x48'),getLogFromObject(_0x39b2e4));return null;}}else{logger['error']('agicommand\x20not\x20found');return null;}}catch(_0x3c84f9){logger[_0x9972('0xe')](_0x3c84f9[_0x9972('0xf')]);return null;}});if(_0x2e1ac1[_0x9972('0x4b')]){logger[_0x9972('0x18')](util[_0x9972('0x12')](_0x9972('0x4c'),_0x574650[_0x9972('0x1a')],_0x574650['calleridname'],_0x574650[_0x9972('0x1c')],_0x574650['dnid'],_0x574650[_0x9972('0x1e')]));_0x1a85fc[_0x9972('0x40')](_0x2e1ac1[_0x9972('0x4b')]['id'],function(_0x43e620){try{_0x43e620=_0x5b7ac3[_0x9972('0x41')](_0x43e620);logger[_0x9972('0x34')](_0x9972('0x4d'),JSON[_0x9972('0x36')](_0x43e620,null,0x2));if(_0x43e620&&_0x5b7ac3[_0x43e620[_0x9972('0x46')]]){_0x39b2e4=_0x5b7ac3[_0x43e620[_0x9972('0x46')]](_0x43e620);if(_0x39b2e4){logger[_0x9972('0x34')](_0x9972('0x48'),getLogFromObject(_0x39b2e4));return _[_0x9972('0x49')](_0x39b2e4[_0x9972('0x47')])?null:_0x39b2e4[_0x9972('0x47')][_0x9972('0x4a')]();}else{logger[_0x9972('0xe')]('response',getLogFromObject(_0x39b2e4));return null;}}else{logger[_0x9972('0xe')](_0x9972('0x4e'));return null;}}catch(_0x4e04e8){logger['error'](_0x4e04e8[_0x9972('0xf')]);return null;}});}logger['info'](util['format'](_0x9972('0x4f'),_0x574650[_0x9972('0x1a')],_0x574650[_0x9972('0x1b')],_0x574650[_0x9972('0x1c')],_0x574650[_0x9972('0x1d')],_0x574650[_0x9972('0x1e')]));logger[_0x9972('0x18')](util[_0x9972('0x12')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x574650[_0x9972('0x43')],_0x574650['extension'],parseInt(_0x574650[_0x9972('0x45')],0xa)+0x1));_0x574650['continueAt'](_0x574650[_0x9972('0x43')],_0x574650['extension'],parseInt(_0x574650[_0x9972('0x45')],0xa)+0x1);_0x574650[_0x9972('0x38')]();}}else{logger[_0x9972('0xe')](util[_0x9972('0x12')](_0x9972('0x50'),_0x574650[_0x9972('0x1a')]));_0x574650['continueAt'](_0x574650['context'],_0x574650[_0x9972('0x44')],parseInt(_0x574650[_0x9972('0x45')],0xa)+0x1);_0x574650['close']();}}else{logger[_0x9972('0xe')](util[_0x9972('0x12')](_0x9972('0x51'),_0x574650[_0x9972('0x1a')]));_0x574650[_0x9972('0x52')](_0x574650[_0x9972('0x43')],_0x574650[_0x9972('0x44')],parseInt(_0x574650[_0x9972('0x45')],0xa)+0x1);_0x574650[_0x9972('0x38')]();}}function main(){var _0x9bfc8d;return utilLicense[_0x9972('0x53')]()['then'](function(_0x5f54e6){if(_0x5f54e6){if(_0x5f54e6[_0x9972('0x54')]){if(_0x5f54e6[_0x9972('0x55')]&&_0x5f54e6[_0x9972('0x55')]>0x0){logger[_0x9972('0x18')](util['format'](_0x9972('0x56'),_0x5f54e6[_0x9972('0x55')]));_0x9bfc8d=_0x5f54e6[_0x9972('0x55')];}else{logger[_0x9972('0x18')](_0x9972('0x57'));}}else{logger['info'](_0x9972('0x58'));_0x9bfc8d=-0x1;}}})[_0x9972('0x2d')](function(_0x1df859){logger[_0x9972('0xe')]('[LICENSE]',_0x1df859[_0x9972('0xf')]);})[_0x9972('0x4b')](function(){var _0x1ba995=require(_0x9972('0x59'))(config[_0x9972('0x7')][_0x9972('0x14')],config[_0x9972('0x7')]['ip'],_0x9bfc8d);_0x1ba995['on'](_0x9972('0xe'),errorHandler);_0x1ba995['on'](_0x9972('0x5a'),listeningHandler);_0x1ba995['on'](_0x9972('0x5b'),connectionHandler);_0x1ba995['on']('close',closeHandler);});}main();
\ No newline at end of file
index 297f0ac..1f5c927 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3ba=['result','catch','SendMail','bluebird','client','http','request','then','error'];(function(_0x40d411,_0x4642f1){var _0x51fd22=function(_0x1031c5){while(--_0x1031c5){_0x40d411['push'](_0x40d411['shift']());}};_0x51fd22(++_0x4642f1);}(_0xd3ba,0x93));var _0xad3b=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xd3ba[_0x465028];return _0xb783d4;};'use strict';var BPromise=require(_0xad3b('0x0'));var jayson=require('jayson/promise');var client=jayson[_0xad3b('0x1')][_0xad3b('0x2')]({'port':0x232b});function request(_0xd06f02,_0x5425dc){return new BPromise(function(_0x102085,_0x3b29e4){return client[_0xad3b('0x3')](_0xd06f02,_0x5425dc)[_0xad3b('0x4')](function(_0x570dba){if(_0x570dba[_0xad3b('0x5')]){return _0x3b29e4(_0x570dba[_0xad3b('0x5')]['message']);}else{return _0x102085(_0x570dba[_0xad3b('0x6')]);}})[_0xad3b('0x7')](function(_0x9ed04){return _0x3b29e4(_0x9ed04);});});}exports['sendMailMessage']=function(_0x40f353,_0x3ce1a4){return request(_0xad3b('0x8'),{'account':_0x40f353,'message':_0x3ce1a4});};
\ No newline at end of file
+var _0xe105=['catch','sendMailMessage','SendMail','client','request','then','error','message','result'];(function(_0x2642d3,_0x2f3c97){var _0x542bc9=function(_0x551e59){while(--_0x551e59){_0x2642d3['push'](_0x2642d3['shift']());}};_0x542bc9(++_0x2f3c97);}(_0xe105,0x1ce));var _0x5e10=function(_0xbb8f06,_0x4ce2d3){_0xbb8f06=_0xbb8f06-0x0;var _0x3954f1=_0xe105[_0xbb8f06];return _0x3954f1;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var client=jayson[_0x5e10('0x0')]['http']({'port':0x232b});function request(_0x510eab,_0xe34c53){return new BPromise(function(_0x5e6f0c,_0x55723c){return client[_0x5e10('0x1')](_0x510eab,_0xe34c53)[_0x5e10('0x2')](function(_0xa0c5d4){if(_0xa0c5d4[_0x5e10('0x3')]){return _0x55723c(_0xa0c5d4['error'][_0x5e10('0x4')]);}else{return _0x5e6f0c(_0xa0c5d4[_0x5e10('0x5')]);}})[_0x5e10('0x6')](function(_0x193db8){return _0x55723c(_0x193db8);});});}exports[_0x5e10('0x7')]=function(_0x5c2c3b,_0xaa36ca){return request(_0x5e10('0x8'),{'account':_0x5c2c3b,'message':_0xaa36ca});};
\ No newline at end of file
index 2e7a1b4..35a9f05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb522=['toString','_inBody','substring','length','split','indexOf','trim','slice','headers','emit','line','exports','util','stream','Transform','_localBuffer','inherits','_transform','\x0d\x0a\x0d\x0a'];(function(_0x168038,_0x552d34){var _0x226594=function(_0x515602){while(--_0x515602){_0x168038['push'](_0x168038['shift']());}};_0x226594(++_0x552d34);}(_0xb522,0x188));var _0x2b52=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb522[_0x321bb2];return _0x9c12ed;};'use strict';var util=require(_0x2b52('0x0'));var Transform=require(_0x2b52('0x1'))[_0x2b52('0x2')];function AGIReply(_0x351077){Transform['call'](this,_0x351077);this[_0x2b52('0x3')]='';this['_inBody']=![];}util[_0x2b52('0x4')](AGIReply,Transform);AGIReply['prototype'][_0x2b52('0x5')]=function(_0x520b7b,_0x3039cc,_0x29f858){var _0x22704d='\x0a',_0x31755e=['\x0a\x0a',_0x2b52('0x6')],_0x1f3a94=-0x1,_0x5bf044=-0x1,_0x38b06d='',_0xf44e9b=0x0,_0x3e41ea='',_0x3ed7e3='';this[_0x2b52('0x3')]+=_0x520b7b[_0x2b52('0x7')]();_0x3e41ea=this['_localBuffer'];if(!this[_0x2b52('0x8')]){_0xf44e9b=0x0;while(_0x31755e[_0xf44e9b]){while((_0x5bf044=_0x3e41ea['indexOf'](_0x31755e[_0xf44e9b]))!=-0x1){_0x38b06d=_0x31755e[_0xf44e9b];_0x3ed7e3=_0x3e41ea['substring'](0x0,_0x5bf044);_0x3e41ea=_0x3e41ea[_0x2b52('0x9')](_0x5bf044+_0x38b06d[_0x2b52('0xa')]);var _0x54c638=_0x3ed7e3[_0x2b52('0xb')](_0x22704d),_0x47b179=0x0,_0x5a02df={},_0x1ff160='',_0x59d7f1='',_0x4d7680=-0x1;while(_0x54c638[_0x47b179]){_0x4d7680=_0x54c638[_0x47b179][_0x2b52('0xc')](':');if(_0x4d7680!=-0x1){_0x1ff160=_0x54c638[_0x47b179]['slice'](0x0,_0x4d7680)[_0x2b52('0xd')]();_0x59d7f1=_0x54c638[_0x47b179][_0x2b52('0xe')](_0x4d7680+0x1)[_0x2b52('0xd')]();if(_0x1ff160[_0x2b52('0xa')]>0x0){_0x5a02df[_0x1ff160]=_0x59d7f1;}}else{}_0x47b179++;}this['emit'](_0x2b52('0xf'),_0x5a02df);this[_0x2b52('0x8')]=!![];}_0xf44e9b++;}this['_localBuffer']=_0x3e41ea;}else{while((_0x1f3a94=_0x3e41ea['indexOf'](_0x22704d))!=-0x1){_0x3ed7e3=_0x3e41ea[_0x2b52('0x9')](0x0,_0x1f3a94);this[_0x2b52('0x10')](_0x2b52('0x11'),_0x3ed7e3);_0x3e41ea=_0x3e41ea['substring'](_0x1f3a94+_0x22704d[_0x2b52('0xa')]);}this[_0x2b52('0x3')]=_0x3e41ea;}_0x29f858();};module[_0x2b52('0x12')]=AGIReply;
\ No newline at end of file
+var _0x3454=['_localBuffer','_inBody','prototype','_transform','\x0d\x0a\x0d\x0a','substring','length','indexOf','trim','slice','emit','headers','line','exports','stream','Transform','call'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x3454,0x1c8));var _0x4345=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3454[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var Transform=require(_0x4345('0x0'))[_0x4345('0x1')];function AGIReply(_0x2167c5){Transform[_0x4345('0x2')](this,_0x2167c5);this[_0x4345('0x3')]='';this[_0x4345('0x4')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x4345('0x5')][_0x4345('0x6')]=function(_0xdc0ad3,_0x248bc2,_0x57cb70){var _0xe6402a='\x0a',_0x4bfaeb=['\x0a\x0a',_0x4345('0x7')],_0x570d36=-0x1,_0x2fc502=-0x1,_0x39f65d='',_0x422d87=0x0,_0x485ab4='',_0x4c79c8='';this[_0x4345('0x3')]+=_0xdc0ad3['toString']();_0x485ab4=this[_0x4345('0x3')];if(!this['_inBody']){_0x422d87=0x0;while(_0x4bfaeb[_0x422d87]){while((_0x2fc502=_0x485ab4['indexOf'](_0x4bfaeb[_0x422d87]))!=-0x1){_0x39f65d=_0x4bfaeb[_0x422d87];_0x4c79c8=_0x485ab4[_0x4345('0x8')](0x0,_0x2fc502);_0x485ab4=_0x485ab4['substring'](_0x2fc502+_0x39f65d[_0x4345('0x9')]);var _0x533a47=_0x4c79c8['split'](_0xe6402a),_0x359009=0x0,_0x441068={},_0x1feec3='',_0x1552c2='',_0x596e80=-0x1;while(_0x533a47[_0x359009]){_0x596e80=_0x533a47[_0x359009][_0x4345('0xa')](':');if(_0x596e80!=-0x1){_0x1feec3=_0x533a47[_0x359009]['slice'](0x0,_0x596e80)[_0x4345('0xb')]();_0x1552c2=_0x533a47[_0x359009][_0x4345('0xc')](_0x596e80+0x1)[_0x4345('0xb')]();if(_0x1feec3['length']>0x0){_0x441068[_0x1feec3]=_0x1552c2;}}else{}_0x359009++;}this[_0x4345('0xd')](_0x4345('0xe'),_0x441068);this['_inBody']=!![];}_0x422d87++;}this[_0x4345('0x3')]=_0x485ab4;}else{while((_0x570d36=_0x485ab4[_0x4345('0xa')](_0xe6402a))!=-0x1){_0x4c79c8=_0x485ab4[_0x4345('0x8')](0x0,_0x570d36);this[_0x4345('0xd')](_0x4345('0xf'),_0x4c79c8);_0x485ab4=_0x485ab4[_0x4345('0x8')](_0x570d36+_0xe6402a[_0x4345('0x9')]);}this['_localBuffer']=_0x485ab4;}_0x57cb70();};module[_0x4345('0x10')]=AGIReply;
\ No newline at end of file
index 163f8a5..bdd829f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe60f=['Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','CreateSquareDetailsReport','CreateSquareReport','merge','arg_1','arg_2','CreateSquareRecording','createCmContact','ShowCmHopper','phone','ListId','CreateCmContact','getPauseById','ShowPause','agentLogin','agentPause','agentUnpause','UnpauseUser','agentLogout','moment','util','then','error','message','result','catch','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','getSquareProjectById','name','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','getTrunkById','ShowTrunk','getSoundById','save_name','getIntervalById','ShowInterval'];(function(_0x1efc8c,_0x46e5ef){var _0x2f2ace=function(_0x1623a4){while(--_0x1623a4){_0x1efc8c['push'](_0x1efc8c['shift']());}};_0x2f2ace(++_0x46e5ef);}(_0xe60f,0xb3));var _0xfe60=function(_0x29c9c8,_0x4f6e6a){_0x29c9c8=_0x29c9c8-0x0;var _0x4c653e=_0xe60f[_0x29c9c8];return _0x4c653e;};'use strict';var BPromise=require('bluebird');var moment=require(_0xfe60('0x0'));var _=require('lodash');var util=require(_0xfe60('0x1'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x2329});function request(_0x187044,_0x57e97f){return new BPromise(function(_0x3cdaeb,_0x576e34){return client['request'](_0x187044,_0x57e97f)[_0xfe60('0x2')](function(_0x4a4d27){if(_0x4a4d27[_0xfe60('0x3')]){return _0x576e34(_0x4a4d27[_0xfe60('0x3')][_0xfe60('0x4')]);}else{return _0x3cdaeb(_0x4a4d27[_0xfe60('0x5')]);}})[_0xfe60('0x6')](function(_0x255cac){return _0x576e34(_0x255cac);});});}exports[_0xfe60('0x7')]=function(_0x10acdf){return request(_0xfe60('0x8'),{'options':{'raw':![],'where':{'name':_0x10acdf},'attributes':['production']}});};exports[_0xfe60('0x9')]=function(_0x3f3c6c){return request(_0xfe60('0xa'),{'options':{'raw':![],'where':{'id':_0x3f3c6c},'include':[{'model':_0xfe60('0xb'),'as':_0xfe60('0xc')}],'attributes':['id','name','email']}});};exports[_0xfe60('0xd')]=function(_0x530da1){return request(_0xfe60('0x8'),{'options':{'where':{'id':_0x530da1},'attributes':[_0xfe60('0xe')]}});};exports[_0xfe60('0xf')]=function(_0x35c420){return request(_0xfe60('0x10'),{'options':{'where':{'id':_0x35c420},'attributes':['name']}});};exports[_0xfe60('0x11')]=function(_0xe5997){return request(_0xfe60('0x12'),{'options':{'where':{'id':_0xe5997},'attributes':[_0xfe60('0xe')]}});};exports[_0xfe60('0x13')]=function(_0x3af329){return request(_0xfe60('0x14'),{'options':{'where':{'id':_0x3af329},'attributes':[_0xfe60('0x15')]}});};exports[_0xfe60('0x16')]=function(_0x4e5404){return request('ShowUser',{'options':{'where':{'id':_0x4e5404},'attributes':[_0xfe60('0xe')]}});};exports[_0xfe60('0x17')]=function(_0x390404){return request(_0xfe60('0x18'),{'options':{'where':{'id':_0x390404},'attributes':[_0xfe60('0xe')]}});};exports[_0xfe60('0x19')]=function(_0x142008){return request('ShowSound',{'options':{'where':{'id':_0x142008},'attributes':[_0xfe60('0x1a')]}});};exports[_0xfe60('0x1b')]=function(_0x223642){return request(_0xfe60('0x1c'),{'options':{'raw':![],'where':{'id':_0x223642},'include':[{'model':'Interval','as':_0xfe60('0x1d')}]}});};exports[_0xfe60('0x1e')]=function(_0x29c1a3){return request(_0xfe60('0x1f'),{'options':{'where':{'id':_0x29c1a3},'attributes':['id',_0xfe60('0xe')]}});};exports[_0xfe60('0x20')]=function(_0x4c7e4d){return request(_0xfe60('0x21'),{'body':_0x4c7e4d});};exports['createSquareDetailsReport']=function(_0x4bd595){return request(_0xfe60('0x22'),{'body':_0x4bd595});};exports['createSquareReport']=function(_0x11c324){return request(_0xfe60('0x23'),{'body':_[_0xfe60('0x24')](_0x11c324,{'project_name':_0x11c324[_0xfe60('0x25')],'prev_project_name':_0x11c324[_0xfe60('0x26')]||'','is_subproject':_0x11c324[_0xfe60('0x26')]?!![]:![],'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')})});};exports['createSquareRecording']=function(_0x2cc80f){return request(_0xfe60('0x27'),{'body':_0x2cc80f});};exports['createSquareMessage']=function(_0x5818c0){return request('CreateSquareMessage',{'body':_0x5818c0});};exports[_0xfe60('0x28')]=function(_0x26bc75){return request(_0xfe60('0x29'),{'options':{'raw':![],'where':{'phone':_0x26bc75[_0xfe60('0x2a')],'ListId':_0x26bc75[_0xfe60('0x2b')]}}})[_0xfe60('0x2')](function(_0x165cef){if(_0x165cef){return _0x165cef;}return request(_0xfe60('0x2c'),{'body':_0x26bc75});});};exports[_0xfe60('0x2d')]=function(_0xef5ec6){return request(_0xfe60('0x2e'),{'options':{'where':{'id':_0xef5ec6},'attributes':[_0xfe60('0xe')]}});};exports[_0xfe60('0x2f')]=function(_0x410c21,_0x55591a){return request('LoginUser',{'body':{'interface':_0x55591a},'options':{'where':_0x410c21}});};exports[_0xfe60('0x30')]=function(_0xacd9ef,_0x1297bf,_0x497cf5){return request('PauseUser',{'body':{'type':_0x1297bf,'uniqueid':_0x497cf5},'options':{'where':_0xacd9ef}});};exports[_0xfe60('0x31')]=function(_0x3b373f){return request(_0xfe60('0x32'),{'body':{},'options':{'where':_0x3b373f}});};exports[_0xfe60('0x33')]=function(_0x3dc7c5){return request('LogoutUser',{'body':{},'options':{'where':_0x3dc7c5}});};
\ No newline at end of file
+var _0x55ba=['phone','ListId','CreateCmContact','getPauseById','agentLogin','LoginUser','agentPause','PauseUser','agentLogout','LogoutUser','bluebird','moment','lodash','util','jayson/promise','client','http','request','then','error','message','result','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','name','email','getSquareProjectById','ShowVoiceQueue','getVariableById','ShowSquareOdbc','dsn','getUserById','ShowUser','ShowTrunk','save_name','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','createSquareReport','CreateSquareReport','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact'];(function(_0x1e31d5,_0x3116ad){var _0x23a68d=function(_0x4e7fbb){while(--_0x4e7fbb){_0x1e31d5['push'](_0x1e31d5['shift']());}};_0x23a68d(++_0x3116ad);}(_0x55ba,0x80));var _0xa55b=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x55ba[_0x178e48];return _0x440d7e;};'use strict';var BPromise=require(_0xa55b('0x0'));var moment=require(_0xa55b('0x1'));var _=require(_0xa55b('0x2'));var util=require(_0xa55b('0x3'));var jayson=require(_0xa55b('0x4'));var client=jayson[_0xa55b('0x5')][_0xa55b('0x6')]({'port':0x2329});function request(_0x1ea235,_0x48c0df){return new BPromise(function(_0x1d5cfe,_0x4502eb){return client[_0xa55b('0x7')](_0x1ea235,_0x48c0df)[_0xa55b('0x8')](function(_0x235fd1){if(_0x235fd1[_0xa55b('0x9')]){return _0x4502eb(_0x235fd1[_0xa55b('0x9')][_0xa55b('0xa')]);}else{return _0x1d5cfe(_0x235fd1[_0xa55b('0xb')]);}})['catch'](function(_0xd4643c){return _0x4502eb(_0xd4643c);});});}exports[_0xa55b('0xc')]=function(_0x22d8a7){return request(_0xa55b('0xd'),{'options':{'raw':![],'where':{'name':_0x22d8a7},'attributes':[_0xa55b('0xe')]}});};exports[_0xa55b('0xf')]=function(_0x3aacf7){return request(_0xa55b('0x10'),{'options':{'raw':![],'where':{'id':_0x3aacf7},'include':[{'model':_0xa55b('0x11'),'as':_0xa55b('0x12')}],'attributes':['id',_0xa55b('0x13'),_0xa55b('0x14')]}});};exports[_0xa55b('0x15')]=function(_0x2902f9){return request(_0xa55b('0xd'),{'options':{'where':{'id':_0x2902f9},'attributes':[_0xa55b('0x13')]}});};exports['getVoiceQueueById']=function(_0x349ffb){return request(_0xa55b('0x16'),{'options':{'where':{'id':_0x349ffb},'attributes':['name']}});};exports[_0xa55b('0x17')]=function(_0x47a468){return request('ShowVariable',{'options':{'where':{'id':_0x47a468},'attributes':[_0xa55b('0x13')]}});};exports['getSquareOdbcById']=function(_0x2d57fd){return request(_0xa55b('0x18'),{'options':{'where':{'id':_0x2d57fd},'attributes':[_0xa55b('0x19')]}});};exports[_0xa55b('0x1a')]=function(_0x37e456){return request(_0xa55b('0x1b'),{'options':{'where':{'id':_0x37e456},'attributes':[_0xa55b('0x13')]}});};exports['getTrunkById']=function(_0x5b9484){return request(_0xa55b('0x1c'),{'options':{'where':{'id':_0x5b9484},'attributes':[_0xa55b('0x13')]}});};exports['getSoundById']=function(_0x5b01df){return request('ShowSound',{'options':{'where':{'id':_0x5b01df},'attributes':[_0xa55b('0x1d')]}});};exports[_0xa55b('0x1e')]=function(_0x2ffb29){return request(_0xa55b('0x1f'),{'options':{'raw':![],'where':{'id':_0x2ffb29},'include':[{'model':_0xa55b('0x20'),'as':_0xa55b('0x21')}]}});};exports[_0xa55b('0x22')]=function(_0x1d4872){return request('ShowSmsAccount',{'options':{'where':{'id':_0x1d4872},'attributes':['id',_0xa55b('0x13')]}});};exports[_0xa55b('0x23')]=function(_0xe0624b){return request(_0xa55b('0x24'),{'body':_0xe0624b});};exports[_0xa55b('0x25')]=function(_0x23af50){return request('CreateSquareDetailsReport',{'body':_0x23af50});};exports[_0xa55b('0x26')]=function(_0x5d4366){return request(_0xa55b('0x27'),{'body':_['merge'](_0x5d4366,{'project_name':_0x5d4366[_0xa55b('0x28')],'prev_project_name':_0x5d4366[_0xa55b('0x29')]||'','is_subproject':_0x5d4366[_0xa55b('0x29')]?!![]:![],'leaveAt':moment()[_0xa55b('0x2a')](_0xa55b('0x2b'))})});};exports[_0xa55b('0x2c')]=function(_0x3b17ee){return request(_0xa55b('0x2d'),{'body':_0x3b17ee});};exports[_0xa55b('0x2e')]=function(_0x4586fa){return request(_0xa55b('0x2f'),{'body':_0x4586fa});};exports[_0xa55b('0x30')]=function(_0x41db16){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0x41db16[_0xa55b('0x31')],'ListId':_0x41db16[_0xa55b('0x32')]}}})[_0xa55b('0x8')](function(_0x80acbc){if(_0x80acbc){return _0x80acbc;}return request(_0xa55b('0x33'),{'body':_0x41db16});});};exports[_0xa55b('0x34')]=function(_0x1e93b1){return request('ShowPause',{'options':{'where':{'id':_0x1e93b1},'attributes':[_0xa55b('0x13')]}});};exports[_0xa55b('0x35')]=function(_0x2cb3d1,_0x22a435){return request(_0xa55b('0x36'),{'body':{'interface':_0x22a435},'options':{'where':_0x2cb3d1}});};exports[_0xa55b('0x37')]=function(_0x191014,_0x242653,_0xc614dc){return request(_0xa55b('0x38'),{'body':{'type':_0x242653,'uniqueid':_0xc614dc},'options':{'where':_0x191014}});};exports['agentUnpause']=function(_0x654908){return request('UnpauseUser',{'body':{},'options':{'where':_0x654908}});};exports[_0xa55b('0x39')]=function(_0x2ed446){return request(_0xa55b('0x3a'),{'body':{},'options':{'where':_0x2ed446}});};
\ No newline at end of file
index 82cc3f4..b9f867a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00b3=['exports','./polly','./lex'];(function(_0x3ecf3b,_0x12c1b6){var _0x123171=function(_0x364b93){while(--_0x364b93){_0x3ecf3b['push'](_0x3ecf3b['shift']());}};_0x123171(++_0x12c1b6);}(_0x00b3,0x157));var _0x300b=function(_0x241e77,_0x40ce34){_0x241e77=_0x241e77-0x0;var _0x1fcbd8=_0x00b3[_0x241e77];return _0x1fcbd8;};var polly=require(_0x300b('0x0'));var lex=require(_0x300b('0x1'));module[_0x300b('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x52ad=['exports','./polly','./lex'];(function(_0x27157b,_0x545daa){var _0x559192=function(_0x3be45e){while(--_0x3be45e){_0x27157b['push'](_0x27157b['shift']());}};_0x559192(++_0x545daa);}(_0x52ad,0x1d8));var _0xd52a=function(_0x790da0,_0x2e92e2){_0x790da0=_0x790da0-0x0;var _0x2eb9cc=_0x52ad[_0x790da0];return _0x2eb9cc;};var polly=require(_0xd52a('0x0'));var lex=require(_0xd52a('0x1'));module[_0xd52a('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 4ff20f4..af12208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ff3=['exports'];(function(_0x57f217,_0x26961d){var _0x58e576=function(_0x1e33f1){while(--_0x1e33f1){_0x57f217['push'](_0x57f217['shift']());}};_0x58e576(++_0x26961d);}(_0x5ff3,0x17d));var _0x35ff=function(_0x41670c,_0x4cec14){_0x41670c=_0x41670c-0x0;var _0x5ebac1=_0x5ff3[_0x41670c];return _0x5ebac1;};'use strict';var lex=require('./lib/api');module[_0x35ff('0x0')]=function(_0x48cbf7,_0x1763a,_0x47c98d,_0x380f54,_0x1bb200,_0x3bd66a){return lex(_0x48cbf7,_0x1763a,_0x47c98d,_0x380f54,_0x1bb200,_0x3bd66a);};
\ No newline at end of file
+var _0x668b=['./lib/api','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x668b,0x140));var _0xb668=function(_0x18a436,_0x1dbe06){_0x18a436=_0x18a436-0x0;var _0x5c2cf8=_0x668b[_0x18a436];return _0x5c2cf8;};'use strict';var lex=require(_0xb668('0x0'));module[_0xb668('0x1')]=function(_0x51555f,_0x15fbea,_0x2c30c1,_0x49a53b,_0x336ba4,_0x5e2e83){return lex(_0x51555f,_0x15fbea,_0x2c30c1,_0x49a53b,_0x336ba4,_0x5e2e83);};
\ No newline at end of file
index 0f9bdd4..d7bba8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x2be463,_0x3c2ba0){var _0x1ff123=function(_0x19624e){while(--_0x19624e){_0x2be463['push'](_0x2be463['shift']());}};_0x1ff123(++_0x3c2ba0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'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(_0x30c1c6,_0x2a71ab){var _0x2388a1=function(_0x51e588){while(--_0x51e588){_0x30c1c6['push'](_0x30c1c6['shift']());}};_0x2388a1(++_0x2a71ab);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'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 45a7524..bc50b9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5db3=['./lib/api','exports'];(function(_0x114c1c,_0x5bfd6d){var _0x50a0a6=function(_0x4f97f0){while(--_0x4f97f0){_0x114c1c['push'](_0x114c1c['shift']());}};_0x50a0a6(++_0x5bfd6d);}(_0x5db3,0xe8));var _0x35db=function(_0x3a607e,_0x54d530){_0x3a607e=_0x3a607e-0x0;var _0x37b106=_0x5db3[_0x3a607e];return _0x37b106;};'use strict';var polly=require(_0x35db('0x0'));module[_0x35db('0x1')]=function(_0x364c44,_0xb2efac,_0x2662f3,_0x57dd75,_0x1a3d64,_0x243916,_0x14b008){return polly(_0x364c44,_0xb2efac,_0x2662f3,_0x57dd75,_0x1a3d64,_0x243916,_0x14b008);};
\ No newline at end of file
+var _0x2395=['exports','./lib/api'];(function(_0x265fa4,_0x41fdf4){var _0x218765=function(_0x455365){while(--_0x455365){_0x265fa4['push'](_0x265fa4['shift']());}};_0x218765(++_0x41fdf4);}(_0x2395,0xf1));var _0x5239=function(_0x34fe5d,_0x2303b3){_0x34fe5d=_0x34fe5d-0x0;var _0x3644be=_0x2395[_0x34fe5d];return _0x3644be;};'use strict';var polly=require(_0x5239('0x0'));module[_0x5239('0x1')]=function(_0x3d3c79,_0x1f08cc,_0x1c48c4,_0x265af9,_0x2eb0be,_0x932431,_0x218a59){return polly(_0x3d3c79,_0x1f08cc,_0x1c48c4,_0x265af9,_0x2eb0be,_0x932431,_0x218a59);};
\ No newline at end of file
index 91c235a..06ae1d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c6e=['AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3','path','bluebird','synthesizeSpeech'];(function(_0x81176b,_0x114b6b){var _0x162d4e=function(_0x581110){while(--_0x581110){_0x81176b['push'](_0x81176b['shift']());}};_0x162d4e(++_0x114b6b);}(_0x3c6e,0xa7));var _0xe3c6=function(_0x3261f5,_0x5745b7){_0x3261f5=_0x3261f5-0x0;var _0x149001=_0x3c6e[_0x3261f5];return _0x149001;};'use strict';var fs=require('fs');var path=require(_0xe3c6('0x0'));var BPromise=require(_0xe3c6('0x1'));var rs=require('randomstring');var AWS=require('aws-sdk');function pollyResult(_0x4c57a5,_0x14292e,_0x3bdafa){return new BPromise(function(_0x56dd0e,_0x269b1a){_0x4c57a5[_0xe3c6('0x2')](_0x14292e,function(_0x40d06d,_0x2e391a){if(_0x40d06d){_0x269b1a(_0x40d06d);}else if(_0x2e391a){if(_0x2e391a[_0xe3c6('0x3')]instanceof Buffer){fs[_0xe3c6('0x4')](_0x3bdafa,_0x2e391a[_0xe3c6('0x3')],function(_0x5edaaf){if(_0x5edaaf){_0x269b1a(_0x5edaaf);}else{_0x56dd0e();}});}else{_0x269b1a(new Error(_0xe3c6('0x5')));}}else{_0x269b1a(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0xe3c6('0x6')]=function(_0x559e5b,_0x3e5073,_0x274228,_0x3d99d4,_0x4ceb74,_0x58f9bf,_0x14350a){var _0x56ad2e=new AWS[(_0xe3c6('0x7'))]({'accessKeyId':_0x559e5b,'secretAccessKey':_0x3e5073,'region':_0x274228});var _0x4f9f7b={'Text':_0x4ceb74,'TextType':_0x58f9bf||_0xe3c6('0x8'),'OutputFormat':_0xe3c6('0x9'),'VoiceId':_0x3d99d4};return pollyResult(_0x56ad2e,_0x4f9f7b,_0x14350a);};
\ No newline at end of file
+var _0x744c=['AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','text','mp3','path','bluebird','randomstring','aws-sdk'];(function(_0x1b5ef9,_0x513f83){var _0x3014c8=function(_0x3954a7){while(--_0x3954a7){_0x1b5ef9['push'](_0x1b5ef9['shift']());}};_0x3014c8(++_0x513f83);}(_0x744c,0x151));var _0xc744=function(_0x565a9a,_0x529abe){_0x565a9a=_0x565a9a-0x0;var _0x5322cd=_0x744c[_0x565a9a];return _0x5322cd;};'use strict';var fs=require('fs');var path=require(_0xc744('0x0'));var BPromise=require(_0xc744('0x1'));var rs=require(_0xc744('0x2'));var AWS=require(_0xc744('0x3'));function pollyResult(_0x4ebf06,_0x29e164,_0x4041d5){return new BPromise(function(_0x383092,_0x62ca51){_0x4ebf06['synthesizeSpeech'](_0x29e164,function(_0x5cf61a,_0x48a911){if(_0x5cf61a){_0x62ca51(_0x5cf61a);}else if(_0x48a911){if(_0x48a911[_0xc744('0x4')]instanceof Buffer){fs[_0xc744('0x5')](_0x4041d5,_0x48a911[_0xc744('0x4')],function(_0x4460cb){if(_0x4460cb){_0x62ca51(_0x4460cb);}else{_0x383092();}});}else{_0x62ca51(new Error(_0xc744('0x6')));}}else{_0x62ca51(new Error(_0xc744('0x7')));}});});}module[_0xc744('0x8')]=function(_0x46d781,_0x29feb1,_0x343fa4,_0x563345,_0x1f3956,_0x15a3fe,_0x3c3176){var _0x5d2c75=new AWS['Polly']({'accessKeyId':_0x46d781,'secretAccessKey':_0x29feb1,'region':_0x343fa4});var _0x1e772b={'Text':_0x1f3956,'TextType':_0x15a3fe||_0xc744('0x9'),'OutputFormat':_0xc744('0xa'),'VoiceId':_0x563345};return pollyResult(_0x5d2c75,_0x1e772b,_0x3c3176);};
\ No newline at end of file
index 46e8819..5622986 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3ad=['./lib/api'];(function(_0x5cb48d,_0x28866e){var _0x3249ca=function(_0x361eae){while(--_0x361eae){_0x5cb48d['push'](_0x5cb48d['shift']());}};_0x3249ca(++_0x28866e);}(_0xc3ad,0x13a));var _0xdc3a=function(_0x3a5bf3,_0x3c388e){_0x3a5bf3=_0x3a5bf3-0x0;var _0x2b8d6a=_0xc3ad[_0x3a5bf3];return _0x2b8d6a;};'use strict';var asr=require(_0xdc3a('0x0'));module['exports']=function(_0x523da0,_0x24e156,_0x1f1276,_0x343ad4){return asr(_0x523da0,_0x24e156,_0x1f1276);};
\ No newline at end of file
+var _0xdf7e=['exports','./lib/api'];(function(_0xefee9,_0x216da2){var _0x3aace9=function(_0x2ca632){while(--_0x2ca632){_0xefee9['push'](_0xefee9['shift']());}};_0x3aace9(++_0x216da2);}(_0xdf7e,0x1ad));var _0xedf7=function(_0x5b3ad6,_0x14b8a9){_0x5b3ad6=_0x5b3ad6-0x0;var _0x5f57af=_0xdf7e[_0x5b3ad6];return _0x5f57af;};'use strict';var asr=require(_0xedf7('0x0'));module[_0xedf7('0x1')]=function(_0x13cd3f,_0x18fd01,_0x132712,_0x108529){return asr(_0x13cd3f,_0x18fd01,_0x132712);};
\ No newline at end of file
index 7eec0ed..fb30d3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48ea=['url','https://speech.googleapis.com','exports','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','/v1/speech:recognize?key='];(function(_0x1c8e2d,_0x1c1dc0){var _0x47496a=function(_0x3f4883){while(--_0x3f4883){_0x1c8e2d['push'](_0x1c8e2d['shift']());}};_0x47496a(++_0x1c1dc0);}(_0x48ea,0x9c));var _0xa48e=function(_0x387a7c,_0x442229){_0x387a7c=_0x387a7c-0x0;var _0xa89304=_0x48ea[_0x387a7c];return _0xa89304;};'use strict';var url=require(_0xa48e('0x0'));var BPromise=require('bluebird');var fs=require('fs');var host=_0xa48e('0x1');module[_0xa48e('0x2')]=function(_0x108dac,_0x492009,_0x480d3c){return new BPromise(function(_0x86a544,_0x5c7354){var _0x1da836;if(typeof _0x108dac!==_0xa48e('0x3')||_0x108dac[_0xa48e('0x4')]===0x0){return _0x5c7354(_0xa48e('0x5'));}if(typeof _0x492009!==_0xa48e('0x3')||_0x492009[_0xa48e('0x4')]===0x0){return _0x5c7354(_0xa48e('0x6'));}if(typeof _0x480d3c!==_0xa48e('0x7')&&(typeof _0x480d3c!==_0xa48e('0x3')||_0x480d3c[_0xa48e('0x4')]===0x0)){return _0x5c7354(_0xa48e('0x8'));}try{_0x1da836=fs[_0xa48e('0x9')](_0x108dac)[_0xa48e('0xa')](_0xa48e('0xb'));}catch(_0xf9436a){return _0x5c7354(_0xf9436a);}return _0x86a544({'method':'POST','uri':host+_0xa48e('0xc')+_0x492009,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':'8000','languageCode':_0x480d3c},'audio':{'content':_0x1da836}},'json':!![]});});};
\ No newline at end of file
+var _0xd49c=['filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','base64','POST','/v1/speech:recognize?key=','LINEAR16','8000','bluebird','exports','string','length'];(function(_0x12e3e3,_0x501eaf){var _0x26602e=function(_0x427882){while(--_0x427882){_0x12e3e3['push'](_0x12e3e3['shift']());}};_0x26602e(++_0x501eaf);}(_0xd49c,0x1d8));var _0xcd49=function(_0x1d5786,_0x1d6789){_0x1d5786=_0x1d5786-0x0;var _0x2cb817=_0xd49c[_0x1d5786];return _0x2cb817;};'use strict';var url=require('url');var BPromise=require(_0xcd49('0x0'));var fs=require('fs');var host='https://speech.googleapis.com';module[_0xcd49('0x1')]=function(_0x190db1,_0x5bda72,_0x1181d4){return new BPromise(function(_0x52362d,_0x3a3034){var _0x4c36ab;if(typeof _0x190db1!==_0xcd49('0x2')||_0x190db1[_0xcd49('0x3')]===0x0){return _0x3a3034(_0xcd49('0x4'));}if(typeof _0x5bda72!==_0xcd49('0x2')||_0x5bda72[_0xcd49('0x3')]===0x0){return _0x3a3034(_0xcd49('0x5'));}if(typeof _0x1181d4!==_0xcd49('0x6')&&(typeof _0x1181d4!==_0xcd49('0x2')||_0x1181d4[_0xcd49('0x3')]===0x0)){return _0x3a3034(_0xcd49('0x7'));}try{_0x4c36ab=fs[_0xcd49('0x8')](_0x190db1)['toString'](_0xcd49('0x9'));}catch(_0x14dd47){return _0x3a3034(_0x14dd47);}return _0x52362d({'method':_0xcd49('0xa'),'uri':host+_0xcd49('0xb')+_0x5bda72,'body':{'config':{'encoding':_0xcd49('0xc'),'sampleRateHertz':_0xcd49('0xd'),'languageCode':_0x1181d4},'audio':{'content':_0x4c36ab}},'json':!![]});});};
\ No newline at end of file
index ed0b905..5c8475f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1580=['./asr'];(function(_0x4f0e62,_0x28e44f){var _0x117ab8=function(_0x1a74bb){while(--_0x1a74bb){_0x4f0e62['push'](_0x4f0e62['shift']());}};_0x117ab8(++_0x28e44f);}(_0x1580,0x9d));var _0x0158=function(_0x5997c2,_0x23e397){_0x5997c2=_0x5997c2-0x0;var _0x5318f9=_0x1580[_0x5997c2];return _0x5318f9;};var asr=require(_0x0158('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var _0xc9a9=['./asr'];(function(_0x7b352c,_0x5a3490){var _0x27271e=function(_0x3f62a5){while(--_0x3f62a5){_0x7b352c['push'](_0x7b352c['shift']());}};_0x27271e(++_0x5a3490);}(_0xc9a9,0xc8));var _0x9c9a=function(_0x139001,_0x13cbae){_0x139001=_0x139001-0x0;var _0x2cebaa=_0xc9a9[_0x139001];return _0x2cebaa;};var asr=require(_0x9c9a('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
index 4bb9df4..1f6f57b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11b7=['start','generate','.wav','writeFileSync','base64','then','777','readFileSync','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','tmp','.mp3','from','audioContent','writeFile','resolve','chmodSync','info','googleCloudTTS\x20path','split','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','f.req=','stringify','null','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','googleASR','uri','results','alternatives','transcript','join','map','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','action','speech','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','SessionsClient','detectIntent','Dialogflow\x20V2\x20response:','allRequiredParamsPresent','queryResult','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','dialogflow','md5','path','sox','google-tts-api','util','./aws','./google','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','unlink','download\x20error','data','end','transcode','wav','error\x20convert','finish\x20to\x20convert'];(function(_0x2e7637,_0x51ed05){var _0xace948=function(_0x121a56){while(--_0x121a56){_0x2e7637['push'](_0x2e7637['shift']());}};_0xace948(++_0x51ed05);}(_0x11b7,0xea));var _0x711b=function(_0x15a0fe,_0x1ff601){_0x15a0fe=_0x15a0fe-0x0;var _0x830aa6=_0x11b7[_0x15a0fe];return _0x830aa6;};'use strict';var apiai=require('apiai-promise');var BPromise=require('bluebird');var dialogflow=require(_0x711b('0x0'));var fs=require('fs');var http=require('http');var https=require('https');var md5=require(_0x711b('0x1'));var path=require(_0x711b('0x2'));var querystring=require('querystring');var rp=require('request-promise');var rs=require('randomstring');var sox=require(_0x711b('0x3'));var tts=require(_0x711b('0x4'));var urlParse=require('url')['parse'];var util=require(_0x711b('0x5'));var aws=require(_0x711b('0x6'));var google=require(_0x711b('0x7'));var sestek=require('./sestek');var tilde=require(_0x711b('0x8'));var logger=require(_0x711b('0x9'))(_0x711b('0xa'));var ISPEECH_API=_0x711b('0xb');function downloadFile(_0x205da2,_0x100a0f){return new BPromise(function(_0x2c9b98,_0x3b6790){var _0x1d31a3=urlParse(_0x205da2);var _0x9f9c84=_0x1d31a3[_0x711b('0xc')]===_0x711b('0xd')?https:http;var _0x5e5545={'host':_0x1d31a3[_0x711b('0xe')],'path':_0x1d31a3[_0x711b('0x2')],'headers':{'user-agent':_0x711b('0xf')}};_0x9f9c84[_0x711b('0x10')](_0x5e5545,function(_0x486571){if(_0x486571[_0x711b('0x11')]!==0xc8){logger[_0x711b('0x12')](_0x711b('0x13')+_0x205da2+_0x711b('0x14')+_0x486571[_0x711b('0x11')]+'\x20('+_0x486571[_0x711b('0x15')]+')');_0x3b6790(new Error('request\x20to\x20'+_0x205da2+_0x711b('0x14')+_0x486571[_0x711b('0x11')]+'\x20('+_0x486571[_0x711b('0x15')]+')'));return;}var _0x3e01fb=fs['createWriteStream'](_0x100a0f);_0x3e01fb['on']('finish',function(){logger['info']('finish\x20download\x20file');_0x3e01fb['close'](_0x2c9b98);});_0x3e01fb['on']('error',function(_0x2351ee){fs[_0x711b('0x16')](_0x100a0f);logger[_0x711b('0x12')](_0x711b('0x17'),_0x2351ee);_0x3b6790(_0x2351ee);});_0x486571['pipe'](_0x3e01fb);})['on']('error',function(_0x5809b9){logger['error'](_0x5809b9);_0x3b6790(_0x5809b9);})['end']();});}function uploadFile(_0x3095c3){return new BPromise(function(_0x52e485,_0x774206){var _0x3b8231=urlParse(_0x3095c3);var _0x364761=_0x3b8231['protocol']===_0x711b('0xd')?https:http;var _0x4e0e8b={'host':_0x3b8231['host'],'path':_0x3b8231[_0x711b('0x2')],'headers':{'user-agent':_0x711b('0xf')}};_0x364761[_0x711b('0x10')](_0x4e0e8b,function(_0x9daa4b){if(_0x9daa4b[_0x711b('0x11')]!==0xc8){_0x774206(new Error(_0x711b('0x13')+_0x3095c3+_0x711b('0x14')+_0x9daa4b[_0x711b('0x11')]+'\x20('+_0x9daa4b[_0x711b('0x15')]+')'));return;}var _0x1f5d8f='';_0x9daa4b['on'](_0x711b('0x18'),function(_0x296a07){_0x1f5d8f+=_0x296a07;});_0x9daa4b['on'](_0x711b('0x19'),function(){_0x52e485(_0x1f5d8f);});})['on'](_0x711b('0x12'),function(_0x8bf4f1){_0x774206(_0x8bf4f1);})[_0x711b('0x19')]();});}function convertFile(_0x2978ad,_0x3c73e3){return new BPromise(function(_0x8b3f40,_0x3731ea){var _0x3847fb=sox[_0x711b('0x1a')](_0x2978ad,_0x3c73e3,{'sampleRate':0x1f40,'format':_0x711b('0x1b'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3847fb['on']('error',function(_0x52c443){logger['error'](_0x711b('0x1c'),_0x52c443);_0x3731ea(_0x52c443);});_0x3847fb['on']('end',function(){logger['info'](_0x711b('0x1d'));_0x8b3f40();});_0x3847fb[_0x711b('0x1e')]();});}function base64Decode(_0x2cb238,_0x51ceff){var _0x572669=path['resolve'](__dirname,'tmp',rs[_0x711b('0x1f')](0x4)+_0x711b('0x20'));fs[_0x711b('0x21')](_0x572669,_0x2cb238,_0x711b('0x22'));return convertFile(_0x572669,_0x51ceff)[_0x711b('0x23')](function(){try{fs['unlink'](_0x572669);fs['chmodSync'](_0x51ceff,_0x711b('0x24'));}catch(_0x541435){logger['error'](_0x541435);}return _0x51ceff['split']('.')[0x0];});}function base64Encode(_0x16ec0a){var _0x70b5dd=fs[_0x711b('0x25')](_0x16ec0a);return new Buffer(_0x70b5dd)['toString'](_0x711b('0x22'));}exports[_0x711b('0x26')]=function(_0x400afc,_0x21a63f,_0x56da9c,_0x44c49a,_0x48770f,_0x1aa3c9){var _0x4be1c1,_0x5423c1;var _0x4781d3=_0x711b('0x27');var _0x1305a2=_0x711b('0x28')+_0x400afc;var _0x414c7e={};if(_0x21a63f===_0x711b('0x29')){_0x414c7e[_0x711b('0x2a')]={'ssml':_0x56da9c};}else{_0x414c7e[_0x711b('0x2a')]={'text':_0x56da9c};};_0x414c7e[_0x711b('0x2b')]={'languageCode':_0x44c49a,'ssmlGender':_0x48770f};_0x414c7e[_0x711b('0x2c')]={'audioEncoding':_0x711b('0x2d'),'sampleRateHertz':0x1f40};var _0x2b0066={'url':_0x4781d3+_0x711b('0x2e')+_0x1305a2,'method':_0x711b('0x2f'),'json':!![],'body':_0x414c7e};return rp(_0x2b0066)[_0x711b('0x23')](function(_0x2a9dc6){return new BPromise(function(_0x1ba9e7,_0x3e76f0){_0x4be1c1=path['resolve'](__dirname,_0x711b('0x30'),rs[_0x711b('0x1f')](0x4)+_0x711b('0x31'));var _0x3f88f3=Buffer[_0x711b('0x32')](_0x2a9dc6[_0x711b('0x33')],'base64');return fs[_0x711b('0x34')](_0x4be1c1,_0x3f88f3,function(_0x2e9445){_0x3e76f0(_0x2e9445);},function(_0x444001){fs['chmodSync'](_0x4be1c1,_0x711b('0x24'));_0x1ba9e7(_0x444001);});});})[_0x711b('0x23')](function(_0x5775db){_0x5423c1=path[_0x711b('0x35')](__dirname,_0x711b('0x30'),rs[_0x711b('0x1f')](0x4)+'.wav');return convertFile(_0x4be1c1,_0x5423c1);})[_0x711b('0x23')](function(){try{fs[_0x711b('0x16')](_0x4be1c1);fs[_0x711b('0x36')](_0x5423c1,_0x711b('0x24'));}catch(_0x594903){logger[_0x711b('0x12')](_0x594903);}logger[_0x711b('0x37')](_0x711b('0x38'),_0x5423c1[_0x711b('0x39')]('.')[0x0]);return _0x5423c1[_0x711b('0x39')]('.')[0x0];});};exports[_0x711b('0x3a')]=function(_0x1ed6a1,_0x1fd4dd){var _0x276874=_0x711b('0x3b');var _0x19b19a,_0x13d377;var _0x2bbdea;var _0x5d31d0={'encoding':'utf8','method':_0x711b('0x2f'),'timeout':0x2710,'url':_0x276874,'headers':{'Content-Type':_0x711b('0x3c')},'body':_0x711b('0x3d')+encodeURIComponent(JSON[_0x711b('0x3e')]([[['jQ1olc',JSON[_0x711b('0x3e')]([_0x1ed6a1,_0x1fd4dd||'en',![],_0x711b('0x3f')]),null,'generic']]]))};return rp(_0x5d31d0)[_0x711b('0x23')](function(_0x2c12f6){try{_0x2bbdea=eval(_0x2c12f6[_0x711b('0x40')](0x5))[0x0][0x2];}catch(_0x6c8f46){throw new Error(_0x711b('0x41')+_0x2c12f6['data']);}if(!_0x2bbdea){if(_0x1ed6a1[_0x711b('0x42')]>0xc8){throw new Error(_0x711b('0x43'));}else{throw new Error('lang\x20\x22'+_0x1fd4dd+'\x22\x20might\x20not\x20exist');}}try{_0x2bbdea=eval(_0x2bbdea)[0x0];}catch(_0x401112){throw new Error('parse\x20response\x20failed:\x0a'+res['data']);}const _0x1e6e73=_0x2bbdea;_0x19b19a=path['resolve'](__dirname,_0x711b('0x30'),rs[_0x711b('0x1f')](0x4)+_0x711b('0x31'));fs[_0x711b('0x21')](_0x19b19a,_0x2bbdea,{'encoding':_0x711b('0x22')});_0x13d377=path[_0x711b('0x35')](__dirname,'tmp',rs[_0x711b('0x1f')](0x4)+'.wav');return convertFile(_0x19b19a,_0x13d377);})['then'](function(){try{fs[_0x711b('0x16')](_0x19b19a);fs[_0x711b('0x36')](_0x13d377,_0x711b('0x24'));}catch(_0xba69c4){logger[_0x711b('0x12')](_0xba69c4);}logger[_0x711b('0x37')]('goggleTTS\x20path',_0x13d377[_0x711b('0x39')]('.')[0x0]);return _0x13d377[_0x711b('0x39')]('.')[0x0];});};exports[_0x711b('0x44')]=function(_0xfe33fc,_0x364674,_0x57f91f){return google['asr'](_0xfe33fc,_0x364674,_0x57f91f)[_0x711b('0x23')](function(_0x249451){logger['info'](_0x249451[_0x711b('0x45')]);return rp(_0x249451);})[_0x711b('0x23')](function(_0x430134){var _0x36d08f='';var _0x554a42=0x0;try{fs[_0x711b('0x16')](_0xfe33fc);}catch(_0x576c1c){logger[_0x711b('0x12')](_0x576c1c);}if(_0x430134&&_0x430134[_0x711b('0x46')]){_0x36d08f=_0x430134['results']['map'](function(_0x310f1c){return _0x310f1c&&_0x310f1c[_0x711b('0x47')][0x0]&&_0x310f1c[_0x711b('0x47')][0x0][_0x711b('0x48')]?_0x310f1c[_0x711b('0x47')][0x0][_0x711b('0x48')]:'';})[_0x711b('0x49')]('\x0a');_0x554a42=_0x430134[_0x711b('0x46')][_0x711b('0x4a')](function(_0x4455f8){return _0x4455f8&&_0x4455f8[_0x711b('0x47')][0x0]&&_0x4455f8[_0x711b('0x47')][0x0][_0x711b('0x4b')]?_0x4455f8[_0x711b('0x47')][0x0]['confidence']:0x0;})[_0x711b('0x49')]('\x0a');}logger['info'](_0x711b('0x4c'),_0x36d08f);logger['info'](_0x711b('0x4d'),_0x554a42);return{'transcript':_0x36d08f,'confidence':_0x554a42};})[_0x711b('0x4e')](function(_0xc3345e){logger[_0x711b('0x12')](_0x711b('0x4f'),_0xc3345e[_0x711b('0x11')],_0xc3345e[_0x711b('0x50')],_0xc3345e[_0x711b('0x51')]);});};exports[_0x711b('0x52')]=function(_0x60d5b6,_0x380ced,_0x4cc104,_0x1769f0){var _0x35afd4=apiai(_0x380ced,{'language':_0x1769f0||'en'});return _0x35afd4[_0x711b('0x53')](_0x4cc104,{'sessionId':md5(_0x60d5b6)})[_0x711b('0x23')](function(_0x550b06){logger[_0x711b('0x37')](JSON[_0x711b('0x3e')](_0x550b06));return{'source':_0x550b06[_0x711b('0x54')][_0x711b('0x55')],'resolvedQuery':_0x550b06[_0x711b('0x54')]['resolvedQuery'],'action':_0x550b06['result'][_0x711b('0x56')],'actionIncomplete':_0x550b06[_0x711b('0x54')]['actionIncomplete'],'speech':_0x550b06[_0x711b('0x54')]['fulfillment'][_0x711b('0x57')],'score':_0x550b06[_0x711b('0x54')]['score'],'statusCode':_0x550b06[_0x711b('0x58')][_0x711b('0x59')],'endConversation':_0x550b06[_0x711b('0x54')][_0x711b('0x5a')][_0x711b('0x5b')]||![],'isFallbackIntent':_0x550b06[_0x711b('0x54')][_0x711b('0x5a')][_0x711b('0x5c')]};});};exports[_0x711b('0x5d')]=function(_0x3bd895,_0x392c7b,_0x24b610,_0x14d413,_0x365253,_0x3975e3){var _0x3e133a=_0x14d413['replace'](/\\n/g,'\x0a');var _0x36f832={'credentials':{'private_key':_0x3e133a,'client_email':_0x24b610}};var _0x56237d=new dialogflow[(_0x711b('0x5e'))](_0x36f832);var _0x7fd693=_0x56237d['sessionPath'](_0x392c7b,md5(_0x3bd895));var _0x1b265b={'session':_0x7fd693,'queryInput':{'text':{'text':_0x365253,'languageCode':_0x3975e3}}};return _0x56237d[_0x711b('0x5f')](_0x1b265b)['then'](function(_0x57647b){if(_0x57647b&&_0x57647b['length']){logger[_0x711b('0x37')](_0x711b('0x60'),JSON[_0x711b('0x3e')](_0x57647b));var _0x4a97b1=_0x57647b[0x0];if(_0x4a97b1){var _0x580e8c={'action':_0x4a97b1['queryResult'][_0x711b('0x56')],'allRequiredParamsPresent':_0x4a97b1['queryResult'][_0x711b('0x61')],'endConversation':_0x4a97b1[_0x711b('0x62')][_0x711b('0x63')]&&_0x4a97b1[_0x711b('0x62')][_0x711b('0x63')][_0x711b('0x64')]?_0x4a97b1[_0x711b('0x62')][_0x711b('0x63')][_0x711b('0x64')][_0x711b('0x65')][_0x711b('0x66')]:![],'fulfillmentText':_0x4a97b1[_0x711b('0x62')][_0x711b('0x67')],'intentName':_0x4a97b1['queryResult']['intent'][_0x711b('0x50')],'intentDisplayName':_0x4a97b1['queryResult']['intent'][_0x711b('0x68')],'isFallbackIntent':_0x4a97b1[_0x711b('0x62')]['intent'][_0x711b('0x69')],'languageCode':_0x4a97b1[_0x711b('0x62')][_0x711b('0x6a')],'queryText':_0x4a97b1[_0x711b('0x62')][_0x711b('0x6b')],'responseId':_0x4a97b1[_0x711b('0x6c')],'score':_0x4a97b1[_0x711b('0x62')][_0x711b('0x6d')],'speech':_0x4a97b1[_0x711b('0x62')][_0x711b('0x67')],'providerResponse':JSON[_0x711b('0x3e')](_0x57647b)};return _0x580e8c;}}});};exports[_0x711b('0x6e')]=function(_0x13f4cd,_0x3ceea4,_0x322261,_0x5a1dc6){return tilde['asr'](_0x13f4cd,_0x3ceea4,_0x322261,_0x5a1dc6)[_0x711b('0x23')](function(_0x2a3cf6){try{fs['unlink'](_0x13f4cd);}catch(_0x577963){logger[_0x711b('0x12')](_0x577963);}logger[_0x711b('0x37')](_0x711b('0x6f'),_0x2a3cf6[_0x711b('0x48')]);logger[_0x711b('0x37')](_0x711b('0x70'),_0x2a3cf6['confidence']);return _0x2a3cf6;});};exports[_0x711b('0x71')]=function(_0x4e850e,_0x195e87,_0x5442bc,_0x1e805f,_0x37773e,_0x27a105){var _0xb61f91=path[_0x711b('0x35')](__dirname,_0x711b('0x30'),rs[_0x711b('0x1f')](0x4)+_0x711b('0x31'));var _0x2d66be;return aws[_0x711b('0x72')](_0x4e850e,_0x195e87,_0x5442bc,_0x1e805f,_0x37773e,_0x27a105,_0xb61f91)[_0x711b('0x23')](function(){_0x2d66be=path[_0x711b('0x35')](__dirname,_0x711b('0x30'),rs[_0x711b('0x1f')](0x4)+_0x711b('0x20'));return convertFile(_0xb61f91,_0x2d66be);})[_0x711b('0x23')](function(){try{fs[_0x711b('0x16')](_0xb61f91);fs['chmodSync'](_0x2d66be,'777');}catch(_0x32d1b9){logger[_0x711b('0x12')](_0x32d1b9);}return _0x2d66be[_0x711b('0x39')]('.')[0x0];});};exports[_0x711b('0x73')]=function(_0x3e264c,_0x92eb8,_0x1ac921,_0x2aa64d,_0x1d7dda,_0x328404){return aws[_0x711b('0x74')](_0x3e264c,_0x92eb8,_0x1ac921,_0x2aa64d,_0x1d7dda,_0x328404)[_0x711b('0x23')](function(_0x325425){logger[_0x711b('0x37')](JSON[_0x711b('0x3e')](_0x325425));return _0x325425;});};exports['ispeechTTS']=function(_0x4782cd,_0x1e7b16,_0xe8a9a6,_0x3b6007){var _0x186e4c=util['format'](_0x711b('0x75'),ISPEECH_API,_0x4782cd,encodeURIComponent(_0x1e7b16),_0xe8a9a6,_0x3b6007);var _0x529148=path[_0x711b('0x35')](__dirname,_0x711b('0x30'),rs['generate'](0x4)+'.mp3');var _0x469610;return downloadFile(_0x186e4c,_0x529148)[_0x711b('0x23')](function(){_0x469610=path[_0x711b('0x35')](__dirname,_0x711b('0x30'),rs['generate'](0x4)+_0x711b('0x20'));return convertFile(_0x529148,_0x469610);})[_0x711b('0x23')](function(){try{fs[_0x711b('0x16')](_0x529148);fs[_0x711b('0x36')](_0x469610,_0x711b('0x24'));}catch(_0x4ae5bb){logger[_0x711b('0x12')](_0x4ae5bb);}return _0x469610[_0x711b('0x39')]('.')[0x0];});};exports[_0x711b('0x76')]=function(_0x6ebf5a,_0x36454b,_0x5e1266,_0x3c66b){var _0x6ccef3=util[_0x711b('0x77')](_0x711b('0x78'),ISPEECH_API,_0x36454b,_0x5e1266,base64Encode(_0x6ebf5a),_0x3c66b?util[_0x711b('0x77')](_0x711b('0x79'),encodeURIComponent(_0x3c66b)):_0x711b('0x7a'));return uploadFile(_0x6ccef3)[_0x711b('0x23')](function(_0x57b8aa){return querystring['parse'](_0x57b8aa);});};exports[_0x711b('0x7b')]=function(_0x5dd9cf,_0x104847){return sestek['nda'](_0x5dd9cf,_0x104847)[_0x711b('0x23')](function(_0xc8cac8){logger['info'](JSON[_0x711b('0x3e')](_0xc8cac8));var _0x1ac6e5={'speech':_0xc8cac8[_0x711b('0x7c')],'action':_0xc8cac8['channelData']?_0xc8cac8[_0x711b('0x7d')][_0x711b('0x7e')]:undefined,'actiondata':_0xc8cac8['channelData']?_0xc8cac8[_0x711b('0x7d')][_0x711b('0x7f')]:undefined};if(_0xc8cac8[_0x711b('0x7d')]&&_0xc8cac8[_0x711b('0x7d')]['AudioFromTts']){return base64Decode(_0xc8cac8['channelData'][_0x711b('0x80')][_0x711b('0x81')],path['resolve'](__dirname,_0x711b('0x30'),rs['generate'](0x4)+_0x711b('0x20')))[_0x711b('0x23')](function(_0x3e458a){_0x1ac6e5[_0x711b('0x82')]=_0x3e458a;return _0x1ac6e5;});}return _0x1ac6e5;});};exports[_0x711b('0x83')]=function(){return __dirname;};
\ No newline at end of file
+var _0xf0d8=['generate','.wav','writeFileSync','chmodSync','split','readFileSync','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','text:synthesize','POST','then','resolve','.mp3','from','audioContent','writeFile','777','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','metadata','endConversation','isFallbackIntent','googleDialogflowV2','SessionsClient','detectIntent','queryResult','diagnosticInfo','fields','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','polly','awsLex','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','dirName','apiai-promise','dialogflow','http','https','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','host','WHAT_EVER','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','createWriteStream','info','finish\x20download\x20file','unlink','download\x20error','pipe','end','get','data','transcode','error\x20convert','finish\x20to\x20convert','start','tmp'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0xf0d8,0x175));var _0x8f0d=function(_0xa29ef8,_0x2238d0){_0xa29ef8=_0xa29ef8-0x0;var _0x4958ce=_0xf0d8[_0xa29ef8];return _0x4958ce;};'use strict';var apiai=require(_0x8f0d('0x0'));var BPromise=require('bluebird');var dialogflow=require(_0x8f0d('0x1'));var fs=require('fs');var http=require(_0x8f0d('0x2'));var https=require(_0x8f0d('0x3'));var md5=require(_0x8f0d('0x4'));var path=require(_0x8f0d('0x5'));var querystring=require(_0x8f0d('0x6'));var rp=require(_0x8f0d('0x7'));var rs=require(_0x8f0d('0x8'));var sox=require(_0x8f0d('0x9'));var tts=require(_0x8f0d('0xa'));var urlParse=require('url')[_0x8f0d('0xb')];var util=require(_0x8f0d('0xc'));var aws=require(_0x8f0d('0xd'));var google=require(_0x8f0d('0xe'));var sestek=require(_0x8f0d('0xf'));var tilde=require(_0x8f0d('0x10'));var logger=require(_0x8f0d('0x11'))('agi');var ISPEECH_API=_0x8f0d('0x12');function downloadFile(_0x12eacc,_0x5b7e00){return new BPromise(function(_0x2f209d,_0x441d71){var _0x1e06ea=urlParse(_0x12eacc);var _0xd235d5=_0x1e06ea[_0x8f0d('0x13')]==='https:'?https:http;var _0x51ec91={'host':_0x1e06ea[_0x8f0d('0x14')],'path':_0x1e06ea['path'],'headers':{'user-agent':_0x8f0d('0x15')}};_0xd235d5['get'](_0x51ec91,function(_0xc2117d){if(_0xc2117d['statusCode']!==0xc8){logger[_0x8f0d('0x16')](_0x8f0d('0x17')+_0x12eacc+_0x8f0d('0x18')+_0xc2117d[_0x8f0d('0x19')]+'\x20('+_0xc2117d[_0x8f0d('0x1a')]+')');_0x441d71(new Error('request\x20to\x20'+_0x12eacc+_0x8f0d('0x18')+_0xc2117d[_0x8f0d('0x19')]+'\x20('+_0xc2117d[_0x8f0d('0x1a')]+')'));return;}var _0x10990f=fs[_0x8f0d('0x1b')](_0x5b7e00);_0x10990f['on']('finish',function(){logger[_0x8f0d('0x1c')](_0x8f0d('0x1d'));_0x10990f['close'](_0x2f209d);});_0x10990f['on'](_0x8f0d('0x16'),function(_0x68d56b){fs[_0x8f0d('0x1e')](_0x5b7e00);logger[_0x8f0d('0x16')](_0x8f0d('0x1f'),_0x68d56b);_0x441d71(_0x68d56b);});_0xc2117d[_0x8f0d('0x20')](_0x10990f);})['on']('error',function(_0x209e7e){logger[_0x8f0d('0x16')](_0x209e7e);_0x441d71(_0x209e7e);})[_0x8f0d('0x21')]();});}function uploadFile(_0x1c8f28){return new BPromise(function(_0x8cb49a,_0x2022a3){var _0xeeb349=urlParse(_0x1c8f28);var _0x308d46=_0xeeb349[_0x8f0d('0x13')]==='https:'?https:http;var _0x14cfd5={'host':_0xeeb349[_0x8f0d('0x14')],'path':_0xeeb349[_0x8f0d('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0x308d46[_0x8f0d('0x22')](_0x14cfd5,function(_0x19c3e5){if(_0x19c3e5[_0x8f0d('0x19')]!==0xc8){_0x2022a3(new Error(_0x8f0d('0x17')+_0x1c8f28+'\x20failed,\x20status\x20code\x20=\x20'+_0x19c3e5[_0x8f0d('0x19')]+'\x20('+_0x19c3e5[_0x8f0d('0x1a')]+')'));return;}var _0x2132f5='';_0x19c3e5['on'](_0x8f0d('0x23'),function(_0x716166){_0x2132f5+=_0x716166;});_0x19c3e5['on']('end',function(){_0x8cb49a(_0x2132f5);});})['on'](_0x8f0d('0x16'),function(_0x1d7bdd){_0x2022a3(_0x1d7bdd);})[_0x8f0d('0x21')]();});}function convertFile(_0x25e327,_0x1c63cc){return new BPromise(function(_0x4d5b38,_0x2a9656){var _0x3be223=sox[_0x8f0d('0x24')](_0x25e327,_0x1c63cc,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3be223['on'](_0x8f0d('0x16'),function(_0x5a07d7){logger[_0x8f0d('0x16')](_0x8f0d('0x25'),_0x5a07d7);_0x2a9656(_0x5a07d7);});_0x3be223['on']('end',function(){logger[_0x8f0d('0x1c')](_0x8f0d('0x26'));_0x4d5b38();});_0x3be223[_0x8f0d('0x27')]();});}function base64Decode(_0x3de42a,_0x16d72f){var _0x52e18f=path['resolve'](__dirname,_0x8f0d('0x28'),rs[_0x8f0d('0x29')](0x4)+_0x8f0d('0x2a'));fs[_0x8f0d('0x2b')](_0x52e18f,_0x3de42a,'base64');return convertFile(_0x52e18f,_0x16d72f)['then'](function(){try{fs['unlink'](_0x52e18f);fs[_0x8f0d('0x2c')](_0x16d72f,'777');}catch(_0x5c6949){logger[_0x8f0d('0x16')](_0x5c6949);}return _0x16d72f[_0x8f0d('0x2d')]('.')[0x0];});}function base64Encode(_0xa5eb71){var _0x5daf29=fs[_0x8f0d('0x2e')](_0xa5eb71);return new Buffer(_0x5daf29)['toString'](_0x8f0d('0x2f'));}exports[_0x8f0d('0x30')]=function(_0x569571,_0x47c8b8,_0x4bd21c,_0x3c796d,_0x3481f3,_0x20b872){var _0x32358c,_0xb645c3;var _0x485184=_0x8f0d('0x31');var _0x5116dd=_0x8f0d('0x32')+_0x569571;var _0x573c79={};if(_0x47c8b8===_0x8f0d('0x33')){_0x573c79[_0x8f0d('0x34')]={'ssml':_0x4bd21c};}else{_0x573c79[_0x8f0d('0x34')]={'text':_0x4bd21c};};_0x573c79[_0x8f0d('0x35')]={'languageCode':_0x3c796d,'ssmlGender':_0x3481f3};_0x573c79[_0x8f0d('0x36')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x562af5={'url':_0x485184+_0x8f0d('0x37')+_0x5116dd,'method':_0x8f0d('0x38'),'json':!![],'body':_0x573c79};return rp(_0x562af5)[_0x8f0d('0x39')](function(_0x374556){return new BPromise(function(_0x2a2931,_0x37258e){_0x32358c=path[_0x8f0d('0x3a')](__dirname,'tmp',rs['generate'](0x4)+_0x8f0d('0x3b'));var _0x126b87=Buffer[_0x8f0d('0x3c')](_0x374556[_0x8f0d('0x3d')],'base64');return fs[_0x8f0d('0x3e')](_0x32358c,_0x126b87,function(_0xf4b0a7){_0x37258e(_0xf4b0a7);},function(_0x56c032){fs[_0x8f0d('0x2c')](_0x32358c,_0x8f0d('0x3f'));_0x2a2931(_0x56c032);});});})['then'](function(_0x43651d){_0xb645c3=path[_0x8f0d('0x3a')](__dirname,_0x8f0d('0x28'),rs[_0x8f0d('0x29')](0x4)+_0x8f0d('0x2a'));return convertFile(_0x32358c,_0xb645c3);})[_0x8f0d('0x39')](function(){try{fs[_0x8f0d('0x1e')](_0x32358c);fs['chmodSync'](_0xb645c3,_0x8f0d('0x3f'));}catch(_0x4f06c9){logger['error'](_0x4f06c9);}logger[_0x8f0d('0x1c')](_0x8f0d('0x40'),_0xb645c3[_0x8f0d('0x2d')]('.')[0x0]);return _0xb645c3[_0x8f0d('0x2d')]('.')[0x0];});};exports[_0x8f0d('0x41')]=function(_0x221c70,_0x3b8c7d){var _0xeef7c4=_0x8f0d('0x42');var _0x439f5a,_0x2a3149;var _0x303924;var _0x3c05c7={'encoding':_0x8f0d('0x43'),'method':_0x8f0d('0x38'),'timeout':0x2710,'url':_0xeef7c4,'headers':{'Content-Type':_0x8f0d('0x44')},'body':_0x8f0d('0x45')+encodeURIComponent(JSON[_0x8f0d('0x46')]([[[_0x8f0d('0x47'),JSON['stringify']([_0x221c70,_0x3b8c7d||'en',![],_0x8f0d('0x48')]),null,'generic']]]))};return rp(_0x3c05c7)[_0x8f0d('0x39')](function(_0x5aefbc){try{_0x303924=eval(_0x5aefbc['slice'](0x5))[0x0][0x2];}catch(_0x36455a){throw new Error('parse\x20response\x20failed:\x0a'+_0x5aefbc['data']);}if(!_0x303924){if(_0x221c70[_0x8f0d('0x49')]>0xc8){throw new Error(_0x8f0d('0x4a'));}else{throw new Error(_0x8f0d('0x4b')+_0x3b8c7d+_0x8f0d('0x4c'));}}try{_0x303924=eval(_0x303924)[0x0];}catch(_0x2a6685){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x8f0d('0x23')]);}const _0x313b16=_0x303924;_0x439f5a=path['resolve'](__dirname,_0x8f0d('0x28'),rs[_0x8f0d('0x29')](0x4)+_0x8f0d('0x3b'));fs['writeFileSync'](_0x439f5a,_0x303924,{'encoding':_0x8f0d('0x2f')});_0x2a3149=path[_0x8f0d('0x3a')](__dirname,_0x8f0d('0x28'),rs[_0x8f0d('0x29')](0x4)+_0x8f0d('0x2a'));return convertFile(_0x439f5a,_0x2a3149);})[_0x8f0d('0x39')](function(){try{fs[_0x8f0d('0x1e')](_0x439f5a);fs[_0x8f0d('0x2c')](_0x2a3149,_0x8f0d('0x3f'));}catch(_0x5ce35f){logger[_0x8f0d('0x16')](_0x5ce35f);}logger[_0x8f0d('0x1c')](_0x8f0d('0x4d'),_0x2a3149[_0x8f0d('0x2d')]('.')[0x0]);return _0x2a3149['split']('.')[0x0];});};exports[_0x8f0d('0x4e')]=function(_0x19a159,_0x7f270a,_0x432517){return google[_0x8f0d('0x4f')](_0x19a159,_0x7f270a,_0x432517)['then'](function(_0x1de3da){logger['info'](_0x1de3da[_0x8f0d('0x50')]);return rp(_0x1de3da);})['then'](function(_0x47ec7f){var _0x3938eb='';var _0x359ee8=0x0;try{fs[_0x8f0d('0x1e')](_0x19a159);}catch(_0x51398f){logger[_0x8f0d('0x16')](_0x51398f);}if(_0x47ec7f&&_0x47ec7f[_0x8f0d('0x51')]){_0x3938eb=_0x47ec7f[_0x8f0d('0x51')][_0x8f0d('0x52')](function(_0x403262){return _0x403262&&_0x403262[_0x8f0d('0x53')][0x0]&&_0x403262[_0x8f0d('0x53')][0x0]['transcript']?_0x403262[_0x8f0d('0x53')][0x0][_0x8f0d('0x54')]:'';})[_0x8f0d('0x55')]('\x0a');_0x359ee8=_0x47ec7f[_0x8f0d('0x51')][_0x8f0d('0x52')](function(_0xa62d9c){return _0xa62d9c&&_0xa62d9c[_0x8f0d('0x53')][0x0]&&_0xa62d9c[_0x8f0d('0x53')][0x0][_0x8f0d('0x56')]?_0xa62d9c[_0x8f0d('0x53')][0x0][_0x8f0d('0x56')]:0x0;})[_0x8f0d('0x55')]('\x0a');}logger[_0x8f0d('0x1c')](_0x8f0d('0x57'),_0x3938eb);logger[_0x8f0d('0x1c')](_0x8f0d('0x58'),_0x359ee8);return{'transcript':_0x3938eb,'confidence':_0x359ee8};})[_0x8f0d('0x59')](function(_0x3ac4eb){logger[_0x8f0d('0x16')](_0x8f0d('0x5a'),_0x3ac4eb[_0x8f0d('0x19')],_0x3ac4eb[_0x8f0d('0x5b')],_0x3ac4eb[_0x8f0d('0x5c')]);});};exports[_0x8f0d('0x5d')]=function(_0x14b430,_0x1e8cf5,_0x11dd37,_0x3e8280){var _0x4c9a57=apiai(_0x1e8cf5,{'language':_0x3e8280||'en'});return _0x4c9a57[_0x8f0d('0x5e')](_0x11dd37,{'sessionId':md5(_0x14b430)})['then'](function(_0x1fb6e7){logger[_0x8f0d('0x1c')](JSON[_0x8f0d('0x46')](_0x1fb6e7));return{'source':_0x1fb6e7[_0x8f0d('0x5f')]['source'],'resolvedQuery':_0x1fb6e7[_0x8f0d('0x5f')][_0x8f0d('0x60')],'action':_0x1fb6e7[_0x8f0d('0x5f')][_0x8f0d('0x61')],'actionIncomplete':_0x1fb6e7[_0x8f0d('0x5f')][_0x8f0d('0x62')],'speech':_0x1fb6e7[_0x8f0d('0x5f')][_0x8f0d('0x63')][_0x8f0d('0x64')],'score':_0x1fb6e7[_0x8f0d('0x5f')][_0x8f0d('0x65')],'statusCode':_0x1fb6e7['status']['code'],'endConversation':_0x1fb6e7[_0x8f0d('0x5f')][_0x8f0d('0x66')][_0x8f0d('0x67')]||![],'isFallbackIntent':_0x1fb6e7[_0x8f0d('0x5f')][_0x8f0d('0x66')][_0x8f0d('0x68')]};});};exports[_0x8f0d('0x69')]=function(_0x5371cf,_0x125d4f,_0x50ce7b,_0x5da7e5,_0x16bdbc,_0x433426){var _0x1d31fe=_0x5da7e5['replace'](/\\n/g,'\x0a');var _0x347ebc={'credentials':{'private_key':_0x1d31fe,'client_email':_0x50ce7b}};var _0x3dc70f=new dialogflow[(_0x8f0d('0x6a'))](_0x347ebc);var _0x7df0b0=_0x3dc70f['sessionPath'](_0x125d4f,md5(_0x5371cf));var _0x2cecb5={'session':_0x7df0b0,'queryInput':{'text':{'text':_0x16bdbc,'languageCode':_0x433426}}};return _0x3dc70f[_0x8f0d('0x6b')](_0x2cecb5)['then'](function(_0x3b1566){if(_0x3b1566&&_0x3b1566['length']){logger[_0x8f0d('0x1c')]('Dialogflow\x20V2\x20response:',JSON[_0x8f0d('0x46')](_0x3b1566));var _0x5614a6=_0x3b1566[0x0];if(_0x5614a6){var _0x3e24d3={'action':_0x5614a6['queryResult'][_0x8f0d('0x61')],'allRequiredParamsPresent':_0x5614a6[_0x8f0d('0x6c')]['allRequiredParamsPresent'],'endConversation':_0x5614a6[_0x8f0d('0x6c')][_0x8f0d('0x6d')]&&_0x5614a6['queryResult'][_0x8f0d('0x6d')][_0x8f0d('0x6e')]?_0x5614a6[_0x8f0d('0x6c')]['diagnosticInfo'][_0x8f0d('0x6e')]['end_conversation'][_0x8f0d('0x6f')]:![],'fulfillmentText':_0x5614a6[_0x8f0d('0x6c')][_0x8f0d('0x70')],'intentName':_0x5614a6['queryResult'][_0x8f0d('0x71')][_0x8f0d('0x5b')],'intentDisplayName':_0x5614a6[_0x8f0d('0x6c')][_0x8f0d('0x71')][_0x8f0d('0x72')],'isFallbackIntent':_0x5614a6[_0x8f0d('0x6c')][_0x8f0d('0x71')][_0x8f0d('0x73')],'languageCode':_0x5614a6['queryResult'][_0x8f0d('0x74')],'queryText':_0x5614a6[_0x8f0d('0x6c')][_0x8f0d('0x75')],'responseId':_0x5614a6[_0x8f0d('0x76')],'score':_0x5614a6[_0x8f0d('0x6c')][_0x8f0d('0x77')],'speech':_0x5614a6[_0x8f0d('0x6c')][_0x8f0d('0x70')],'providerResponse':JSON[_0x8f0d('0x46')](_0x3b1566)};return _0x3e24d3;}}});};exports[_0x8f0d('0x78')]=function(_0x3a15c6,_0x21a5e9,_0xeb03f8,_0x598029){return tilde[_0x8f0d('0x4f')](_0x3a15c6,_0x21a5e9,_0xeb03f8,_0x598029)[_0x8f0d('0x39')](function(_0x34251e){try{fs[_0x8f0d('0x1e')](_0x3a15c6);}catch(_0x5413cd){logger[_0x8f0d('0x16')](_0x5413cd);}logger[_0x8f0d('0x1c')]('Tilde\x20ASR\x20transcription',_0x34251e['transcript']);logger['info']('Tilde\x20ASR\x20confidence',_0x34251e['confidence']);return _0x34251e;});};exports['awsPolly']=function(_0x8ca2fd,_0x29fbe1,_0x479e45,_0x166148,_0x66602,_0x337454){var _0x5bad42=path[_0x8f0d('0x3a')](__dirname,_0x8f0d('0x28'),rs[_0x8f0d('0x29')](0x4)+_0x8f0d('0x3b'));var _0x5592f4;return aws[_0x8f0d('0x79')](_0x8ca2fd,_0x29fbe1,_0x479e45,_0x166148,_0x66602,_0x337454,_0x5bad42)['then'](function(){_0x5592f4=path[_0x8f0d('0x3a')](__dirname,_0x8f0d('0x28'),rs[_0x8f0d('0x29')](0x4)+_0x8f0d('0x2a'));return convertFile(_0x5bad42,_0x5592f4);})['then'](function(){try{fs[_0x8f0d('0x1e')](_0x5bad42);fs[_0x8f0d('0x2c')](_0x5592f4,_0x8f0d('0x3f'));}catch(_0x4d418b){logger[_0x8f0d('0x16')](_0x4d418b);}return _0x5592f4[_0x8f0d('0x2d')]('.')[0x0];});};exports[_0x8f0d('0x7a')]=function(_0x204b30,_0x599468,_0x21dc78,_0x5acbfe,_0x57b5a4,_0x341eef){return aws[_0x8f0d('0x7b')](_0x204b30,_0x599468,_0x21dc78,_0x5acbfe,_0x57b5a4,_0x341eef)['then'](function(_0x171408){logger['info'](JSON[_0x8f0d('0x46')](_0x171408));return _0x171408;});};exports['ispeechTTS']=function(_0x19047b,_0x4a2e26,_0x29de74,_0x3d9e57){var _0x1b6fe2=util[_0x8f0d('0x7c')](_0x8f0d('0x7d'),ISPEECH_API,_0x19047b,encodeURIComponent(_0x4a2e26),_0x29de74,_0x3d9e57);var _0x55d55c=path[_0x8f0d('0x3a')](__dirname,_0x8f0d('0x28'),rs[_0x8f0d('0x29')](0x4)+_0x8f0d('0x3b'));var _0x3e8ed3;return downloadFile(_0x1b6fe2,_0x55d55c)[_0x8f0d('0x39')](function(){_0x3e8ed3=path[_0x8f0d('0x3a')](__dirname,'tmp',rs[_0x8f0d('0x29')](0x4)+_0x8f0d('0x2a'));return convertFile(_0x55d55c,_0x3e8ed3);})[_0x8f0d('0x39')](function(){try{fs[_0x8f0d('0x1e')](_0x55d55c);fs['chmodSync'](_0x3e8ed3,_0x8f0d('0x3f'));}catch(_0x3f381d){logger[_0x8f0d('0x16')](_0x3f381d);}return _0x3e8ed3[_0x8f0d('0x2d')]('.')[0x0];});};exports[_0x8f0d('0x7e')]=function(_0xf5fa3,_0x39e77b,_0x107456,_0x879c51){var _0xcaf929=util[_0x8f0d('0x7c')](_0x8f0d('0x7f'),ISPEECH_API,_0x39e77b,_0x107456,base64Encode(_0xf5fa3),_0x879c51?util['format'](_0x8f0d('0x80'),encodeURIComponent(_0x879c51)):_0x8f0d('0x81'));return uploadFile(_0xcaf929)['then'](function(_0x48a12d){return querystring['parse'](_0x48a12d);});};exports['sestekNDA']=function(_0x437c10,_0x46052d){return sestek[_0x8f0d('0x82')](_0x437c10,_0x46052d)[_0x8f0d('0x39')](function(_0x46ee32){logger['info'](JSON[_0x8f0d('0x46')](_0x46ee32));var _0xa0fb5={'speech':_0x46ee32[_0x8f0d('0x83')],'action':_0x46ee32[_0x8f0d('0x84')]?_0x46ee32['channelData'][_0x8f0d('0x85')]:undefined,'actiondata':_0x46ee32['channelData']?_0x46ee32['channelData'][_0x8f0d('0x86')]:undefined};if(_0x46ee32['channelData']&&_0x46ee32[_0x8f0d('0x84')][_0x8f0d('0x87')]){return base64Decode(_0x46ee32[_0x8f0d('0x84')]['AudioFromTts'][_0x8f0d('0x88')],path[_0x8f0d('0x3a')](__dirname,'tmp',rs['generate'](0x4)+_0x8f0d('0x2a')))[_0x8f0d('0x39')](function(_0x53d076){_0xa0fb5['audiofile']=_0x53d076;return _0xa0fb5;});}return _0xa0fb5;});};exports[_0x8f0d('0x89')]=function(){return __dirname;};
\ No newline at end of file
index cce38b3..6899e19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb323=['exports'];(function(_0x36f364,_0x52948d){var _0x5e707e=function(_0xf17993){while(--_0xf17993){_0x36f364['push'](_0x36f364['shift']());}};_0x5e707e(++_0x52948d);}(_0xb323,0xb6));var _0x3b32=function(_0x39e932,_0x23d413){_0x39e932=_0x39e932-0x0;var _0x413ea3=_0xb323[_0x39e932];return _0x413ea3;};var nda=require('./nda');module[_0x3b32('0x0')]={'nda':nda};
\ No newline at end of file
+var _0x496d=['./nda','exports'];(function(_0x2a2f7e,_0x27df25){var _0x18c674=function(_0x484fb0){while(--_0x484fb0){_0x2a2f7e['push'](_0x2a2f7e['shift']());}};_0x18c674(++_0x27df25);}(_0x496d,0xca));var _0xd496=function(_0x51fe86,_0x422b66){_0x51fe86=_0x51fe86-0x0;var _0x3557d4=_0x496d[_0x51fe86];return _0x3557d4;};var nda=require(_0xd496('0x0'));module[_0xd496('0x1')]={'nda':nda};
\ No newline at end of file
index cde38d3..bd2c7c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c42=['custom_action_data','CustomActionData','info','stringify','url','../../../../../config/logger','agi','POST','resolve','ndauth_url','/token','password','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','extension','Bearer\x20','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action'];(function(_0x5e841f,_0x51921c){var _0x21afe3=function(_0x4d5cb6){while(--_0x4d5cb6){_0x5e841f['push'](_0x5e841f['shift']());}};_0x21afe3(++_0x51921c);}(_0x1c42,0x13a));var _0x21c4=function(_0x53914d,_0x5a80af){_0x53914d=_0x53914d-0x0;var _0x230539=_0x1c42[_0x53914d];return _0x230539;};'use strict';var rp=require('request-promise');var url=require(_0x21c4('0x0'));var logger=require(_0x21c4('0x1'))(_0x21c4('0x2'));module['exports']=function(_0x27cb4a,_0x40bc3e){var _0x1512d2={'method':_0x21c4('0x3'),'uri':url[_0x21c4('0x4')](_0x40bc3e[_0x21c4('0x5')],_0x21c4('0x6')),'form':{'grant_type':_0x21c4('0x7'),'username':_0x40bc3e['username'],'password':_0x40bc3e[_0x21c4('0x7')]},'json':!![]};return rp(_0x1512d2)[_0x21c4('0x8')](function(_0x54b2ea){var _0x184e75={'method':'POST','uri':url[_0x21c4('0x4')](_0x40bc3e[_0x21c4('0x9')],_0x21c4('0xa')),'body':{'type':_0x40bc3e[_0x21c4('0xb')]||_0x21c4('0xc'),'channelId':_0x21c4('0xd'),'conversation':{'id':_0x27cb4a[_0x21c4('0xe')]},'from':{'id':_0x27cb4a[_0x21c4('0xf')],'name':_0x27cb4a[_0x21c4('0x10')]},'recipient':{'id':_0x27cb4a['dnid'],'name':_0x27cb4a[_0x21c4('0x11')]},'text':_0x40bc3e['text'],'channelData':{}},'headers':{'Authorization':_0x21c4('0x12')+_0x54b2ea['access_token']},'json':!![]};if(_0x40bc3e[_0x21c4('0x13')]){_0x184e75[_0x21c4('0x14')][_0x21c4('0x15')][_0x21c4('0x16')]=_0x40bc3e[_0x21c4('0x13')];}if(_0x40bc3e[_0x21c4('0x17')]=='1'){_0x184e75[_0x21c4('0x14')][_0x21c4('0x15')][_0x21c4('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x21c4('0x19')};}if(_0x40bc3e[_0x21c4('0x1a')]){_0x184e75[_0x21c4('0x14')][_0x21c4('0x15')]['CustomAction']=_0x40bc3e['custom_action'];if(_0x40bc3e[_0x21c4('0x1b')]){_0x184e75[_0x21c4('0x14')][_0x21c4('0x15')][_0x21c4('0x1c')]=_0x40bc3e[_0x21c4('0x1b')];}}logger[_0x21c4('0x1d')](JSON[_0x21c4('0x1e')](_0x184e75));return rp(_0x184e75);});};
\ No newline at end of file
+var _0x8369=['custom_action_data','info','stringify','request-promise','url','../../../../../config/logger','agi','exports','POST','ndauth_url','/token','username','password','resolve','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','callerid','calleridname','dnid','extension','text','access_token','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','CustomActionData'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8369,0x10b));var _0x9836=function(_0x2a3484,_0x3493b6){_0x2a3484=_0x2a3484-0x0;var _0x3652d7=_0x8369[_0x2a3484];return _0x3652d7;};'use strict';var rp=require(_0x9836('0x0'));var url=require(_0x9836('0x1'));var logger=require(_0x9836('0x2'))(_0x9836('0x3'));module[_0x9836('0x4')]=function(_0x1fe0f3,_0x420408){var _0x4a2d45={'method':_0x9836('0x5'),'uri':url['resolve'](_0x420408[_0x9836('0x6')],_0x9836('0x7')),'form':{'grant_type':'password','username':_0x420408[_0x9836('0x8')],'password':_0x420408[_0x9836('0x9')]},'json':!![]};return rp(_0x4a2d45)['then'](function(_0x37214e){var _0x3007ed={'method':_0x9836('0x5'),'uri':url[_0x9836('0xa')](_0x420408['ndassistant_url'],_0x9836('0xb')),'body':{'type':_0x420408[_0x9836('0xc')]||_0x9836('0xd'),'channelId':_0x9836('0xe'),'conversation':{'id':_0x1fe0f3['uniqueid']},'from':{'id':_0x1fe0f3[_0x9836('0xf')],'name':_0x1fe0f3[_0x9836('0x10')]},'recipient':{'id':_0x1fe0f3[_0x9836('0x11')],'name':_0x1fe0f3[_0x9836('0x12')]},'text':_0x420408[_0x9836('0x13')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x37214e[_0x9836('0x14')]},'json':!![]};if(_0x420408[_0x9836('0x15')]){_0x3007ed[_0x9836('0x16')][_0x9836('0x17')][_0x9836('0x18')]=_0x420408[_0x9836('0x15')];}if(_0x420408[_0x9836('0x19')]=='1'){_0x3007ed[_0x9836('0x16')]['channelData'][_0x9836('0x1a')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x9836('0x1b')};}if(_0x420408[_0x9836('0x1c')]){_0x3007ed['body'][_0x9836('0x17')]['CustomAction']=_0x420408[_0x9836('0x1c')];if(_0x420408['custom_action_data']){_0x3007ed[_0x9836('0x16')][_0x9836('0x17')][_0x9836('0x1d')]=_0x420408[_0x9836('0x1e')];}}logger[_0x9836('0x1f')](JSON[_0x9836('0x20')](_0x3007ed));return rp(_0x3007ed);});};
\ No newline at end of file
index e09eddb..938a642 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc598=['exports','./lib/api'];(function(_0x8a0f8,_0x512126){var _0x3c132c=function(_0x3c9382){while(--_0x3c9382){_0x8a0f8['push'](_0x8a0f8['shift']());}};_0x3c132c(++_0x512126);}(_0xc598,0x8b));var _0x8c59=function(_0x22e04c,_0x4d3176){_0x22e04c=_0x22e04c-0x0;var _0x267ffe=_0xc598[_0x22e04c];return _0x267ffe;};'use strict';var asr=require(_0x8c59('0x0'));module[_0x8c59('0x1')]=function(_0x3b8beb,_0x431f68,_0x59156c,_0x1ffe95){return asr(_0x3b8beb,_0x431f68,_0x59156c,_0x1ffe95);};
\ No newline at end of file
+var _0x8292=['exports'];(function(_0x53ef01,_0x49631a){var _0x4f9f64=function(_0x536969){while(--_0x536969){_0x53ef01['push'](_0x53ef01['shift']());}};_0x4f9f64(++_0x49631a);}(_0x8292,0xb2));var _0x2829=function(_0x1f1641,_0x42ad9d){_0x1f1641=_0x1f1641-0x0;var _0x9660b4=_0x8292[_0x1f1641];return _0x9660b4;};'use strict';var asr=require('./lib/api');module[_0x2829('0x0')]=function(_0x22b84a,_0xd1be36,_0x240d66,_0x430139){return asr(_0x22b84a,_0xd1be36,_0x240d66,_0x430139);};
\ No newline at end of file
index a5d9eb3..1f10712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc69=['info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','sha1','update','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','stringify','terminate','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','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','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','bluebird','lodash','moment','crypto','../../../../../../config/logger','agi'];(function(_0x18d631,_0x4376d2){var _0x50d708=function(_0x3b6ab5){while(--_0x3b6ab5){_0x18d631['push'](_0x18d631['shift']());}};_0x50d708(++_0x4376d2);}(_0xcc69,0xc7));var _0x9cc6=function(_0xc587ed,_0x11cbc2){_0xc587ed=_0xc587ed-0x0;var _0x41d137=_0xcc69[_0xc587ed];return _0x41d137;};'use strict';var BPromise=require(_0x9cc6('0x0'));var _=require(_0x9cc6('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x9cc6('0x2'));var crypto=require(_0x9cc6('0x3'));var logger=require(_0x9cc6('0x4'))(_0x9cc6('0x5'));module['exports']=function(_0x25e674,_0x23180e,_0x80f63e,_0x633d2a){return new BPromise(function(_0x30e21c,_0x32b13a){logger[_0x9cc6('0x6')](_0x9cc6('0x7'),_0x633d2a||_0x9cc6('0x8'));var _0x4ef5a9=new WebSocket(_0x633d2a||_0x9cc6('0x8'),{'perMessageDeflate':![]});var _0x162421='';var _0xc15595='0';var _0x37656c='1';var _0x54c7f1=_0x9cc6('0x9');function _0x58f6e8(_0xc98967){var _0x31254c=crypto['createHash'](_0x9cc6('0xa'));_0x31254c[_0x9cc6('0xb')](_0xc98967);return _0x31254c['digest'](_0x9cc6('0xc'));}function _0x26c8da(){try{logger['info'](_0x9cc6('0xd'));var _0x53bf31=moment()[_0x9cc6('0xe')]();var _0x2f3c4e=_0x58f6e8(_0x53bf31+_0x23180e+_0x80f63e);_0x4ef5a9[_0x9cc6('0xf')](JSON['stringify']({'appID':_0x23180e,'timestamp':_0x53bf31,'appKey':_0x2f3c4e}));var _0xd0905a=fs[_0x9cc6('0x10')](_0x25e674);_0xd0905a['on'](_0x9cc6('0x11'),function(_0xdc8947){_0x4ef5a9[_0x9cc6('0xf')](_0xdc8947);});_0xd0905a['on'](_0x9cc6('0x12'),function(){_0x4ef5a9[_0x9cc6('0xf')](_0x9cc6('0x13'));});}catch(_0x1db25b){logger[_0x9cc6('0x14')](_0x9cc6('0x15'),JSON[_0x9cc6('0x16')](_0x1db25b));_0x4ef5a9[_0x9cc6('0x17')]();}}function _0x40c0b5(_0x732961){try{if(_0x732961){var _0x27fd02=JSON['parse'](_0x732961);switch(_0x27fd02[_0x9cc6('0x18')]){case 0x0:if(_0x27fd02[_0x9cc6('0x19')]){if(_0x27fd02[_0x9cc6('0x19')][_0x9cc6('0x1a')]){logger['info'](_0x9cc6('0x1b'),JSON['stringify'](_0x27fd02[_0x9cc6('0x19')]['hypotheses']));_0x162421=_0x27fd02['result'][_0x9cc6('0x1c')][0x0][_0x9cc6('0x1d')];_0xc15595=_0x27fd02[_0x9cc6('0x19')][_0x9cc6('0x1c')][0x0][_0x9cc6('0x1e')];_0x37656c='0';_0x54c7f1=_0x9cc6('0x1f');_0x4ef5a9[_0x9cc6('0x17')]();}}break;case 0x1:logger[_0x9cc6('0x6')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x37656c='1';_0x54c7f1=_0x9cc6('0x9');break;case 0x2:logger[_0x9cc6('0x6')](_0x9cc6('0x20'));_0x37656c='2';_0x54c7f1=_0x9cc6('0x20');break;case 0x9:logger['info'](_0x9cc6('0x21'));_0x37656c='9';_0x54c7f1=_0x9cc6('0x21');break;case 0xa:logger[_0x9cc6('0x6')](_0x9cc6('0x22'));_0x37656c='10';_0x54c7f1=_0x9cc6('0x22');break;case 0xb:logger[_0x9cc6('0x6')](_0x9cc6('0x23'));_0x37656c='11';_0x54c7f1=_0x9cc6('0x23');}}}catch(_0xcbd1a2){logger[_0x9cc6('0x14')](_0x9cc6('0x24'),JSON[_0x9cc6('0x16')](_0xcbd1a2));_0x4ef5a9[_0x9cc6('0x17')]();}}function _0x28121f(){logger[_0x9cc6('0x6')]('Close\x20Tilde\x20ASR\x20socket');_0x30e21c({'transcript':_0x162421,'confidence':_0xc15595,'status':_0x37656c,'status_message':_0x54c7f1});}function _0x70d7f7(_0xe885c7){logger[_0x9cc6('0x14')](_0x9cc6('0x25'));if(!_[_0x9cc6('0x26')](_0xe885c7)){logger['error'](_[_0x9cc6('0x27')](_0xe885c7)?JSON[_0x9cc6('0x16')](_0xe885c7):_0xe885c7);}}_0x4ef5a9['on'](_0x9cc6('0x28'),_0x26c8da);_0x4ef5a9['on']('message',_0x40c0b5);_0x4ef5a9['on'](_0x9cc6('0x12'),_0x28121f);_0x4ef5a9['on'](_0x9cc6('0x14'),_0x70d7f7);});};
\ No newline at end of file
+var _0x3580=['moment','crypto','exports','info','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','createHash','sha1','update','digest','Open\x20Tilde\x20ASR\x20socket','stringify','createReadStream','data','send','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','parse','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','likelihood','Success.','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','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','open','message','bluebird','lodash'];(function(_0x19f4f6,_0x31b760){var _0x3c0391=function(_0x23e76c){while(--_0x23e76c){_0x19f4f6['push'](_0x19f4f6['shift']());}};_0x3c0391(++_0x31b760);}(_0x3580,0xc1));var _0x0358=function(_0x46e1b3,_0x3567d1){_0x46e1b3=_0x46e1b3-0x0;var _0x2cc460=_0x3580[_0x46e1b3];return _0x2cc460;};'use strict';var BPromise=require(_0x0358('0x0'));var _=require(_0x0358('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x0358('0x2'));var crypto=require(_0x0358('0x3'));var logger=require('../../../../../../config/logger')('agi');module[_0x0358('0x4')]=function(_0x3f4476,_0x22a3a3,_0xb283bf,_0x1ef2cc){return new BPromise(function(_0x1b3804,_0x41ded1){logger[_0x0358('0x5')]('Tilde\x20URI',_0x1ef2cc||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x49b6bd=new WebSocket(_0x1ef2cc||_0x0358('0x6'),{'perMessageDeflate':![]});var _0x56885f='';var _0x518ec3='0';var _0x4b8539='1';var _0x35e6eb='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x48fea2(_0x4f3880){var _0x13ca86=crypto[_0x0358('0x7')](_0x0358('0x8'));_0x13ca86[_0x0358('0x9')](_0x4f3880);return _0x13ca86[_0x0358('0xa')]('hex');}function _0x443fa4(){try{logger[_0x0358('0x5')](_0x0358('0xb'));var _0x72b28d=moment()['unix']();var _0x4c184c=_0x48fea2(_0x72b28d+_0x22a3a3+_0xb283bf);_0x49b6bd['send'](JSON[_0x0358('0xc')]({'appID':_0x22a3a3,'timestamp':_0x72b28d,'appKey':_0x4c184c}));var _0x5e3b69=fs[_0x0358('0xd')](_0x3f4476);_0x5e3b69['on'](_0x0358('0xe'),function(_0x847b23){_0x49b6bd[_0x0358('0xf')](_0x847b23);});_0x5e3b69['on']('close',function(){_0x49b6bd[_0x0358('0xf')](_0x0358('0x10'));});}catch(_0x4c7045){logger[_0x0358('0x11')](_0x0358('0x12'),JSON[_0x0358('0xc')](_0x4c7045));_0x49b6bd[_0x0358('0x13')]();}}function _0x24a926(_0x5e91f2){try{if(_0x5e91f2){var _0x5084e1=JSON[_0x0358('0x14')](_0x5e91f2);switch(_0x5084e1['status']){case 0x0:if(_0x5084e1['result']){if(_0x5084e1[_0x0358('0x15')][_0x0358('0x16')]){logger['info'](_0x0358('0x17'),JSON[_0x0358('0xc')](_0x5084e1['result']['hypotheses']));_0x56885f=_0x5084e1['result'][_0x0358('0x18')][0x0]['transcript'];_0x518ec3=_0x5084e1[_0x0358('0x15')][_0x0358('0x18')][0x0][_0x0358('0x19')];_0x4b8539='0';_0x35e6eb=_0x0358('0x1a');_0x49b6bd[_0x0358('0x13')]();}}break;case 0x1:logger[_0x0358('0x5')](_0x0358('0x1b'));_0x4b8539='1';_0x35e6eb=_0x0358('0x1b');break;case 0x2:logger['info'](_0x0358('0x1c'));_0x4b8539='2';_0x35e6eb=_0x0358('0x1c');break;case 0x9:logger['info']('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x4b8539='9';_0x35e6eb=_0x0358('0x1d');break;case 0xa:logger[_0x0358('0x5')](_0x0358('0x1e'));_0x4b8539='10';_0x35e6eb=_0x0358('0x1e');break;case 0xb:logger[_0x0358('0x5')](_0x0358('0x1f'));_0x4b8539='11';_0x35e6eb=_0x0358('0x1f');}}}catch(_0x228a15){logger[_0x0358('0x11')](_0x0358('0x20'),JSON[_0x0358('0xc')](_0x228a15));_0x49b6bd[_0x0358('0x13')]();}}function _0x5803fb(){logger[_0x0358('0x5')](_0x0358('0x21'));_0x1b3804({'transcript':_0x56885f,'confidence':_0x518ec3,'status':_0x4b8539,'status_message':_0x35e6eb});}function _0x43b7a1(_0x40f8f7){logger[_0x0358('0x11')](_0x0358('0x22'));if(!_[_0x0358('0x23')](_0x40f8f7)){logger[_0x0358('0x11')](_[_0x0358('0x24')](_0x40f8f7)?JSON[_0x0358('0xc')](_0x40f8f7):_0x40f8f7);}}_0x49b6bd['on'](_0x0358('0x25'),_0x443fa4);_0x49b6bd['on'](_0x0358('0x26'),_0x24a926);_0x49b6bd['on']('close',_0x5803fb);_0x49b6bd['on'](_0x0358('0x11'),_0x43b7a1);});};
\ No newline at end of file
index 82cdc1b..10cb4be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fbd=['./asr'];(function(_0x5bb612,_0x19ed1e){var _0x8e28d7=function(_0x32bbeb){while(--_0x32bbeb){_0x5bb612['push'](_0x5bb612['shift']());}};_0x8e28d7(++_0x19ed1e);}(_0x6fbd,0x141));var _0xd6fb=function(_0x562faa,_0x23adc7){_0x562faa=_0x562faa-0x0;var _0xc70f59=_0x6fbd[_0x562faa];return _0xc70f59;};var asr=require(_0xd6fb('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var asr=require('./asr');module['exports']={'asr':asr};
\ No newline at end of file
index 30eb766..bbc9db2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ddd=['connection','getConnections','error','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','ready','code','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','util','./error','./channel','127.0.0.1','emit','E_AGI_ARGUMENT_PORT','createServer','listen','listening'];(function(_0x4841c2,_0x49d761){var _0x26965e=function(_0x493711){while(--_0x493711){_0x4841c2['push'](_0x4841c2['shift']());}};_0x26965e(++_0x49d761);}(_0x3ddd,0x8a));var _0xd3dd=function(_0x40c938,_0x235622){_0x40c938=_0x40c938-0x0;var _0x59f333=_0x3ddd[_0x40c938];return _0x59f333;};'use strict';var util=require(_0xd3dd('0x0'));var net=require('net');var EventEmitter=require('events')['EventEmitter'];var AGIError=require(_0xd3dd('0x1'));var AGIChannel=require(_0xd3dd('0x2'));var AGIServer=function(_0x949e0,_0x5d99a0,_0x570e86){var _0x30ca4f=this,_0x949e0=_0x949e0||0x11dd,_0x5d99a0=_0x5d99a0||_0xd3dd('0x3'),_0x2bb35f=null,_0x29636e=0x0;EventEmitter['call'](_0x30ca4f);function _0x8bcf26(){if(!_0x949e0){_0x30ca4f[_0xd3dd('0x4')]('error',new AGIError(_0xd3dd('0x5')));return![];}_0x2bb35f=net[_0xd3dd('0x6')]();_0x2bb35f[_0xd3dd('0x7')](_0x949e0,_0x5d99a0);_0x2bb35f['on'](_0xd3dd('0x8'),function(){_0x30ca4f[_0xd3dd('0x4')](_0xd3dd('0x8'));});_0x2bb35f['on'](_0xd3dd('0x9'),function(_0x2ec11e){_0x2bb35f[_0xd3dd('0xa')](function(_0x156fc5,_0x408a06){if(_0x156fc5){_0x30ca4f['emit'](_0xd3dd('0xb'),new AGIError(_0xd3dd('0xc'),_0x156fc5));}else if(_0x570e86&&_0x570e86<0x0){_0x30ca4f['emit'](_0xd3dd('0xb'),new AGIError(_0xd3dd('0xd')));_0x2ec11e[_0xd3dd('0xe')]();}else if(_0x570e86&&_0x570e86>0x0&&_0x570e86<_0x408a06){_0x29636e+=0x1;_0x30ca4f['emit'](_0xd3dd('0xb'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x29636e));_0x2ec11e[_0xd3dd('0xe')]();}else{var _0x207742=new AGIChannel(_0x2ec11e);_0x207742['on'](_0xd3dd('0xf'),function(){_0x30ca4f[_0xd3dd('0x4')](_0xd3dd('0x9'),_0x207742);});}});});_0x2bb35f['on']('error',function(_0x487535){_0x30ca4f['emit'](_0xd3dd('0xb'),new AGIError('E_AGI_SERVER_ERROR',_0x487535[_0xd3dd('0x10')]));});_0x2bb35f['on']('close',function(){_0x30ca4f['emit']('close',new AGIError(_0xd3dd('0x11')));});}process[_0xd3dd('0x12')](function(){_0x8bcf26();});};util[_0xd3dd('0x13')](AGIServer,EventEmitter);module[_0xd3dd('0x14')]=function(_0x51f5eb,_0x1d2d05,_0x620ad1){return new AGIServer(_0x51f5eb,_0x1d2d05,_0x620ad1);};
\ No newline at end of file
+var _0x5d91=['listen','connection','getConnections','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','E_AGI_SERVER_ERROR','code','close','inherits','exports','util','net','EventEmitter','./error','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','createServer'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x5d91,0x114));var _0x15d9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5d91[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x15d9('0x0'));var net=require(_0x15d9('0x1'));var EventEmitter=require('events')[_0x15d9('0x2')];var AGIError=require(_0x15d9('0x3'));var AGIChannel=require('./channel');var AGIServer=function(_0x1c5fad,_0x52cd96,_0x12d87e){var _0x2b018a=this,_0x1c5fad=_0x1c5fad||0x11dd,_0x52cd96=_0x52cd96||_0x15d9('0x4'),_0x420b0b=null,_0x5e1888=0x0;EventEmitter[_0x15d9('0x5')](_0x2b018a);function _0x437939(){if(!_0x1c5fad){_0x2b018a[_0x15d9('0x6')](_0x15d9('0x7'),new AGIError(_0x15d9('0x8')));return![];}_0x420b0b=net[_0x15d9('0x9')]();_0x420b0b[_0x15d9('0xa')](_0x1c5fad,_0x52cd96);_0x420b0b['on']('listening',function(){_0x2b018a[_0x15d9('0x6')]('listening');});_0x420b0b['on'](_0x15d9('0xb'),function(_0x51bc36){_0x420b0b[_0x15d9('0xc')](function(_0x1fe71a,_0x5bb668){if(_0x1fe71a){_0x2b018a[_0x15d9('0x6')](_0x15d9('0x7'),new AGIError('E_AGI_SERVER_ERROR',_0x1fe71a));}else if(_0x12d87e&&_0x12d87e<0x0){_0x2b018a[_0x15d9('0x6')](_0x15d9('0x7'),new AGIError(_0x15d9('0xd')));_0x51bc36[_0x15d9('0xe')]();}else if(_0x12d87e&&_0x12d87e>0x0&&_0x12d87e<_0x5bb668){_0x5e1888+=0x1;_0x2b018a[_0x15d9('0x6')]('error',new AGIError(_0x15d9('0xf'),_0x5e1888));_0x51bc36['destroy']();}else{var _0x208f89=new AGIChannel(_0x51bc36);_0x208f89['on'](_0x15d9('0x10'),function(){_0x2b018a[_0x15d9('0x6')]('connection',_0x208f89);});}});});_0x420b0b['on'](_0x15d9('0x7'),function(_0x3f29c0){_0x2b018a[_0x15d9('0x6')](_0x15d9('0x7'),new AGIError(_0x15d9('0x11'),_0x3f29c0[_0x15d9('0x12')]));});_0x420b0b['on'](_0x15d9('0x13'),function(){_0x2b018a[_0x15d9('0x6')](_0x15d9('0x13'),new AGIError('E_AGI_SERVER_CLOSE'));});}process['nextTick'](function(){_0x437939();});};util[_0x15d9('0x14')](AGIServer,EventEmitter);module[_0x15d9('0x15')]=function(_0x3f5d60,_0x5ba6e4,_0x3be80e){return new AGIServer(_0x3f5d60,_0x5ba6e4,_0x3be80e);};
\ No newline at end of file
index 8f7d9a0..9d20b38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28cc=['agentLogin','trim','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','restAPI','url','method','number','timeout','includes','POST','PUT','toUpperCase','body','parse','headers','rawHeaders','computedVariables','sync','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','googleDialogflowV2','dialogflowV2_project_id','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','model','awsPolly','aws_access_key_id','Amy','aws_text_type','awsLex','aws_secret_access_key','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','uri','clear','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','saveRestApiResult','%s.%s','setVariable','split','length','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','isConfigured','maxRetry','retry','mrcpsynth','noop','exec','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','RECOG_INSTANCE()','command','args','answer','Wait\x20%s\x20seconds\x20before\x20answer','Enter\x20in\x20CALLBACK\x20(%s)\x20block','delay','add','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','sestektts','lumenvoxasr','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','sestekasr','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','replace','getQueryOdbc','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','no\x20user\x20found','DIAL','SIP/%s','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20text\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','Dialogflow\x20is\x20unreachable','dialogflowV2','no\x20project_id\x20configured','client_email','private_key','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','out','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','sesteknda','Sestek\x20NDA\x20%s\x20file\x20created','audiofile','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','Enter\x20in\x20END\x20(%s)\x20block','end','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','opts','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','getdigits','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','getSound','no\x20file\x20audio\x20found','getData','maxdigit','hiddendigitsnum','generate','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','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','no\x20key\x20configured','wav','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','no\x20appid\x20configured','appsecret','no\x20appsecret\x20configured','TILDE_ASR_%s','TildeASR\x20Result\x20%s','continueAt','priority','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','no\x20find\x20by\x20configured','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','math','no\x20operation\x20configured','operation','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','response','digit','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20found','indexOf','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%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','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','%s_STATUS_MESSAGE','statusMessage','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','getMailAccount','no\x20mail\x20account\x20found','email','Smtp','user','bcc','subject','service','host','port','secure','auth','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','getSmsAccount','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','shellCommand','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','replaceAll','join','exports','path','util','lodash','shelljs','odbc','randomstring','moment','mustache','request-promise','../../config/logger','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawBody','menu','getsecretdigits','channel','rpc','mailRpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueueById','getSquareProject','getSquareProjectById','getSquareOdbc','dsn','getUser','getUserById','getTrunk','getSoundById','getSoundPath','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','interval','map','Intervals','format','%s/sounds/converted/%s','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','callerid','createSquareRecording','calleridname','context','extension','dnid','arg_1','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agentUnpause','agentLogout','agent','internal','%s/%s@from-sip/n','LOCAL'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x28cc,0x180));var _0xc28c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x28cc[_0x321bb2];return _0x9c12ed;};'use strict';var fs=require('fs');var path=require(_0xc28c('0x0'));var util=require(_0xc28c('0x1'));var _=require(_0xc28c('0x2'));var sh=require(_0xc28c('0x3'));var odbc=require(_0xc28c('0x4'))();var rs=require(_0xc28c('0x5'));var moment=require(_0xc28c('0x6'));var Mustache=require(_0xc28c('0x7'));var rp=require(_0xc28c('0x8'));var logger=require(_0xc28c('0x9'))(_0xc28c('0xa'));var config=require(_0xc28c('0xb'));var scripts=require(_0xc28c('0xc'));var FILES_PATH=_0xc28c('0xd');var recursiveMapAttributes=['rawHeaders',_0xc28c('0xe')];var verticesWithRetry=[_0xc28c('0xf'),'getdigits',_0xc28c('0x10')];var AGIVertices=function(_0x2c5cb5,_0x50b4fe,_0x235b15){this[_0xc28c('0x11')]=_0x2c5cb5;this[_0xc28c('0x12')]=_0x50b4fe;this[_0xc28c('0x13')]=_0x235b15;};AGIVertices[_0xc28c('0x14')][_0xc28c('0x15')]=function(_0x2da609,_0x2c057c){this[_0xc28c('0x12')][_0xc28c('0x16')](_0x2da609)[_0xc28c('0x17')](function(_0x221299){_0x2c057c(null,_0x221299?_0x221299[_0xc28c('0x18')]:![]);})[_0xc28c('0x19')](function(_0x2930ef){_0x2c057c(_0x2930ef);});};AGIVertices['prototype']['getVoiceQueue']=function(_0x12b530,_0x1c57ad){this[_0xc28c('0x12')][_0xc28c('0x1a')](_0x12b530)[_0xc28c('0x17')](function(_0x1d2515){_0x1c57ad(null,_0x1d2515?_0x1d2515[_0xc28c('0x18')]:![]);})['catch'](function(_0x47d104){_0x1c57ad(_0x47d104);});};AGIVertices['prototype'][_0xc28c('0x1b')]=function(_0x113909,_0x401938){this[_0xc28c('0x12')][_0xc28c('0x1c')](_0x113909)[_0xc28c('0x17')](function(_0x11f05a){_0x401938(null,_0x11f05a?_0x11f05a[_0xc28c('0x18')]:![]);})[_0xc28c('0x19')](function(_0x2ff347){_0x401938(_0x2ff347);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1d')]=function(_0x17e023,_0x3845ad){this[_0xc28c('0x12')]['getSquareOdbcById'](_0x17e023)[_0xc28c('0x17')](function(_0x470340){_0x3845ad(null,_0x470340?_0x470340[_0xc28c('0x1e')]:![]);})[_0xc28c('0x19')](function(_0x15e2de){_0x3845ad(_0x15e2de);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1f')]=function(_0x4808b8,_0x3c6cc8){this[_0xc28c('0x12')][_0xc28c('0x20')](_0x4808b8)[_0xc28c('0x17')](function(_0x2bd92b){_0x3c6cc8(null,_0x2bd92b?_0x2bd92b[_0xc28c('0x18')]:![]);})[_0xc28c('0x19')](function(_0x32ee3a){_0x3c6cc8(_0x32ee3a);});};AGIVertices['prototype'][_0xc28c('0x21')]=function(_0x558cca,_0x2c1f7c){this[_0xc28c('0x12')]['getTrunkById'](_0x558cca)[_0xc28c('0x17')](function(_0xf0d9ee){_0x2c1f7c(null,_0xf0d9ee?_0xf0d9ee[_0xc28c('0x18')]:![]);})[_0xc28c('0x19')](function(_0x16ad3f){_0x2c1f7c(_0x16ad3f);});};AGIVertices[_0xc28c('0x14')]['getSound']=function(_0x392625,_0x3ac7dc){var _0xec9c2=this;this[_0xc28c('0x12')][_0xc28c('0x22')](_0x392625)[_0xc28c('0x17')](function(_0xf18318){_0x3ac7dc(null,_0xf18318?_0xec9c2[_0xc28c('0x23')](_0xf18318['save_name']):![]);})['catch'](function(_0x4df626){_0x3ac7dc(_0x4df626);});};AGIVertices[_0xc28c('0x14')]['getMailAccount']=function(_0x1fd1c5,_0x49d6fb){this[_0xc28c('0x12')][_0xc28c('0x24')](_0x1fd1c5)['then'](function(_0x22d0a4){_0x49d6fb(null,_0x22d0a4?_0x22d0a4:![]);})[_0xc28c('0x19')](function(_0x22c652){_0x49d6fb(_0x22c652);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x25')]=function(_0x2a7e0a,_0x4743a3,_0x522d89){this['mailRpc'][_0xc28c('0x25')](_0x2a7e0a,_0x4743a3)[_0xc28c('0x17')](function(){_0x522d89(null);})[_0xc28c('0x19')](function(_0x458f54){_0x522d89(_0x458f54);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x26')]=function(_0x34022f,_0x42c344){this[_0xc28c('0x12')][_0xc28c('0x27')](_0x34022f)['then'](function(_0x4e2149){if(_0x4e2149){if(_0x4e2149['IntervalId']){_0x42c344(null,[_0x4e2149[_0xc28c('0x28')]]);}else{_0x42c344(null,_[_0xc28c('0x29')](_0x4e2149[_0xc28c('0x2a')],_0xc28c('0x28')));}}else{_0x42c344(null,![]);}})['catch'](function(_0x13aae7){_0x42c344(_0x13aae7);});};AGIVertices[_0xc28c('0x14')]['getSoundPath']=function(_0x4154ef){return util[_0xc28c('0x2b')](_0xc28c('0x2c'),FILES_PATH,_0x4154ef);};AGIVertices['prototype']['getQueryOdbc']=function(_0x3a8fb0,_0xddad76,_0x5c8597){odbc['open'](_0x3a8fb0,function(_0x56974d){if(_0x56974d){logger[_0xc28c('0x2d')](_0xc28c('0x2e'),_0x56974d);_0x5c8597(_0x56974d);}else{logger[_0xc28c('0x2f')](_0xc28c('0x30'));odbc[_0xc28c('0x31')](_0xddad76,function(_0x165da7,_0x1828b0){if(_0x165da7){logger[_0xc28c('0x2f')]('Error\x20executing\x20query\x20%s',_0xddad76);_0x5c8597(_0x165da7);}else{logger[_0xc28c('0x2f')]('Query\x20executed\x20correctly\x20%s',_0xddad76);odbc[_0xc28c('0x32')](function(_0x9bff17){if(_0x9bff17){logger[_0xc28c('0x2d')](_0xc28c('0x33'),_0x9bff17);}_0x5c8597(null,_0x1828b0);});}});}});};AGIVertices[_0xc28c('0x14')]['getSmsAccount']=function(_0x5699aa,_0x2d5829){this['rpc'][_0xc28c('0x34')](_0x5699aa)[_0xc28c('0x17')](function(_0x33a6e0){_0x2d5829(null,_0x33a6e0?_0x33a6e0:![]);})[_0xc28c('0x19')](function(_0x217686){_0x2d5829(_0x217686);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x35')]=function(_0x369a13,_0x5a920a){this['rpc'][_0xc28c('0x35')](_0x369a13)[_0xc28c('0x17')](function(_0x5658c5){_0x5a920a(null,_0x5658c5);})[_0xc28c('0x19')](function(_0x4a7cf0){_0x5a920a(_0x4a7cf0);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x36')]=function(_0x342b5d,_0x409ef0,_0x21392e){this[_0xc28c('0x12')][_0xc28c('0x36')]({'uniqueid':this[_0xc28c('0x11')][_0xc28c('0x37')],'node':_0x342b5d[_0xc28c('0x38')],'application':_0x342b5d[_0xc28c('0x39')],'data':_0x409ef0||null,'project_name':this[_0xc28c('0x11')]['arg_1'],'callerid':this[_0xc28c('0x11')][_0xc28c('0x3a')]})[_0xc28c('0x17')](function(_0x41edb6){if(_0x21392e){_0x21392e(null,_0x41edb6);}})[_0xc28c('0x19')](function(_0x12126b){if(_0x21392e){_0x21392e(_0x12126b);}});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x3b')]=function(_0x5732ea,_0x423aa0,_0x2f5d8a,_0x16b18e){this[_0xc28c('0x12')]['createSquareRecording']({'uniqueid':this[_0xc28c('0x11')][_0xc28c('0x37')],'callerid':this[_0xc28c('0x11')]['callerid'],'calleridname':this[_0xc28c('0x11')][_0xc28c('0x3c')],'context':this['channel'][_0xc28c('0x3d')],'extension':this[_0xc28c('0x11')][_0xc28c('0x3e')],'priority':this[_0xc28c('0x11')]['priority'],'accountcode':this[_0xc28c('0x11')]['accountcode'],'dnid':this[_0xc28c('0x11')][_0xc28c('0x3f')],'projectName':this['channel'][_0xc28c('0x40')],'saveName':_0x423aa0,'filename':_0x5732ea[_0xc28c('0x41')]||_0x423aa0,'savePath':_0x2f5d8a})[_0xc28c('0x17')](function(_0x211151){_0x16b18e(null,_0x211151);})[_0xc28c('0x19')](function(_0x3755b4){_0x16b18e(_0x3755b4);});};AGIVertices['prototype'][_0xc28c('0x42')]=function(_0x2e2740,_0x4b1b4b,_0x31d30a,_0x4906ad,_0x1bd554){this[_0xc28c('0x12')]['createSquareMessage']({'uniqueid':this[_0xc28c('0x11')]['uniqueid'],'body':_0x2e2740,'direction':_0x4b1b4b,'providerName':_0x31d30a,'providerResponse':_0x4906ad})[_0xc28c('0x17')](function(_0x45fbbe){if(_0x1bd554){_0x1bd554(null,_0x45fbbe);}})['catch'](function(_0x5ec2bb){if(_0x1bd554){_0x1bd554(_0x5ec2bb);}});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x43')]=function(_0x5136f9,_0x59d9d0){this[_0xc28c('0x12')][_0xc28c('0x43')]({'firstName':_[_0xc28c('0x44')](_0x5136f9[_0xc28c('0x18')])||_[_0xc28c('0x45')](_0x5136f9['name'])?_0xc28c('0x46')+Math[_0xc28c('0x47')]():_0x5136f9[_0xc28c('0x18')],'lastName':_[_0xc28c('0x44')](_0x5136f9[_0xc28c('0x48')])||_[_0xc28c('0x45')](_0x5136f9[_0xc28c('0x48')])?null:_0x5136f9['lastName'],'phone':_0x5136f9[_0xc28c('0x49')],'ListId':_0x5136f9[_0xc28c('0x4a')],'scheduledat':_0x5136f9[_0xc28c('0x4b')],'callbackUniqueid':this[_0xc28c('0x11')][_0xc28c('0x37')],'tags':'callback','description':_0xc28c('0x4c')+_0x5136f9['scheduledAt'][_0xc28c('0x4d')](),'priority':_0x5136f9[_0xc28c('0x4e')]})[_0xc28c('0x17')](function(_0x56309a){_0x59d9d0(null,_0x56309a);})[_0xc28c('0x19')](function(_0x2402a0){_0x59d9d0(_0x2402a0);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x4f')]=function(_0x19ed10,_0x433c42){this['rpc'][_0xc28c('0x50')](_0x19ed10)[_0xc28c('0x17')](function(_0x314bd0){_0x433c42(null,_0x314bd0?_0x314bd0['name']:![]);})['catch'](function(_0x409e43){_0x433c42(_0x409e43);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x51')]=function(_0x4a08d2,_0x248e0d,_0xed5347){var _0x37427f={'role':'agent'};_0x37427f[_0x4a08d2]=this[_0xc28c('0x11')][_0xc28c('0x3a')];this['rpc']['agentPause'](_0x37427f,_0x248e0d,this[_0xc28c('0x11')][_0xc28c('0x37')])[_0xc28c('0x17')](function(_0x1eeb8a){_0xed5347(null,_[_0xc28c('0x45')](_0x1eeb8a)?![]:!![]);})[_0xc28c('0x19')](function(_0x329a71){logger[_0xc28c('0x2d')](_0x329a71);_0xed5347(null,![]);});};AGIVertices['prototype']['agentUnpause']=function(_0x205370,_0x385517){var _0x4785f6={'role':'agent'};_0x4785f6[_0x205370]=this[_0xc28c('0x11')][_0xc28c('0x3a')];this[_0xc28c('0x12')][_0xc28c('0x52')](_0x4785f6)['then'](function(_0xfccf59){_0x385517(null,_[_0xc28c('0x45')](_0xfccf59)?![]:!![]);})[_0xc28c('0x19')](function(_0x5423a1){logger[_0xc28c('0x2d')](_0x5423a1);_0x385517(null,![]);});};AGIVertices['prototype'][_0xc28c('0x53')]=function(_0xdf76ef,_0x3d1683){var _0x1aa37e={'role':'agent'};_0x1aa37e[_0xdf76ef]=this[_0xc28c('0x11')][_0xc28c('0x3a')];this['rpc'][_0xc28c('0x53')](_0x1aa37e)[_0xc28c('0x17')](function(_0x4bc1d1){_0x3d1683(null,_[_0xc28c('0x45')](_0x4bc1d1)?![]:!![]);})[_0xc28c('0x19')](function(_0x312d7e){logger[_0xc28c('0x2d')](_0x312d7e);_0x3d1683(null,![]);});};AGIVertices[_0xc28c('0x14')]['agentLogin']=function(_0x4ce0ef,_0x2e7ec7){var _0x4acbce={'role':_0xc28c('0x54')};_0x4acbce[_0x4ce0ef]=this[_0xc28c('0x11')][_0xc28c('0x3a')];var _0x42fbb2=_0x4ce0ef!=_0xc28c('0x55')?util[_0xc28c('0x2b')](_0xc28c('0x56'),_0xc28c('0x57'),this[_0xc28c('0x11')][_0xc28c('0x3a')]):undefined;this[_0xc28c('0x12')][_0xc28c('0x58')](_0x4acbce,_0x42fbb2)[_0xc28c('0x17')](function(_0x384499){_0x2e7ec7(null,_[_0xc28c('0x45')](_0x384499)?![]:!![]);})[_0xc28c('0x19')](function(_0x518bc7){logger[_0xc28c('0x2d')](_0x518bc7);_0x2e7ec7(null,![]);});};AGIVertices[_0xc28c('0x14')]['shellCommand']=function(_0x2d0cf1,_0x4f8585){sh['exec'](_[_0xc28c('0x59')](_0x2d0cf1),function(_0x15aec6,_0x213ae2){var _0x184dbf=_0x213ae2['replace'](/(\r\n|\n|\r)/gm,'');_0x4f8585(null,_0x184dbf);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x5a')]=function(_0x34567f,_0x28a70f){scripts[_0xc28c('0x5a')](_0x34567f[_0xc28c('0x5b')],_0x34567f[_0xc28c('0x5c')]||'text',_0x34567f[_0xc28c('0x5d')],_0x34567f[_0xc28c('0x5e')]||_0xc28c('0x5f'),_0x34567f[_0xc28c('0x60')]||_0xc28c('0x61'),_0x34567f[_0xc28c('0x62')]||_0xc28c('0x63'))[_0xc28c('0x17')](function(_0x219950){_0x28a70f(null,_0x219950);})[_0xc28c('0x19')](function(_0x27c45e){_0x28a70f(_0x27c45e);});};AGIVertices['prototype'][_0xc28c('0x64')]=function(_0x54754e,_0x1355f7){scripts[_0xc28c('0x64')](_0x54754e[_0xc28c('0x5d')],_0x54754e['google_tts_language']||'en',0x1)[_0xc28c('0x17')](function(_0x192fd4){_0x1355f7(null,_0x192fd4);})[_0xc28c('0x19')](function(_0x42269b){_0x1355f7(_0x42269b);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x65')]=function(_0x11a504,_0x10508f){var _0x571736={'uri':_0x11a504[_0xc28c('0x66')],'method':_0x11a504[_0xc28c('0x67')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x11a504['timeout'])===_0xc28c('0x68')&&parseInt(_0x11a504[_0xc28c('0x69')])>=0x1?parseInt(_0x11a504[_0xc28c('0x69')])*0x3e8:0x5*0x3e8};if(_[_0xc28c('0x6a')]([_0xc28c('0x6b'),_0xc28c('0x6c')],_0x571736[_0xc28c('0x67')][_0xc28c('0x6d')]())){try{_0x571736[_0xc28c('0x6e')]=_0x11a504[_0xc28c('0xe')]?JSON[_0xc28c('0x6f')](_0x11a504[_0xc28c('0xe')]):{};}catch(_0x785d7c){logger['error']('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x785d7c);}}try{_0x571736[_0xc28c('0x70')]=_0x11a504[_0xc28c('0x71')]?JSON[_0xc28c('0x6f')](_0x11a504[_0xc28c('0x71')]):{};}catch(_0xb1fc23){logger[_0xc28c('0x2d')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0xb1fc23);}if(_0x11a504[_0xc28c('0x72')]){try{var _0x7ec2ac=require(_0x11a504[_0xc28c('0x72')])[_0xc28c('0x73')](this,_0x571736);_0x571736['uri']=Mustache[_0xc28c('0x74')](_0x11a504[_0xc28c('0x66')],_0x7ec2ac,{},['$$','$$']);if(_0x571736[_0xc28c('0x70')]){_0x571736[_0xc28c('0x70')]=JSON['parse'](Mustache['render'](JSON[_0xc28c('0x75')](_0x571736[_0xc28c('0x70')]),_0x7ec2ac,{},['$$','$$']));}if(_0x571736[_0xc28c('0x6e')]){_0x571736[_0xc28c('0x6e')]=JSON[_0xc28c('0x6f')](Mustache['render'](JSON[_0xc28c('0x75')](_0x571736['body']),_0x7ec2ac,{},['$$','$$']));}}catch(_0x61497b){logger[_0xc28c('0x2d')](_0xc28c('0x76'),_0x61497b);}}rp(_0x571736)[_0xc28c('0x17')](function(_0x5a1c7c){var _0x10466b={'statusCode':_0x5a1c7c[_0xc28c('0x77')]||0xc8,'statusMessage':_0x5a1c7c['statusMessage']||'OK','headers':_0x5a1c7c[_0xc28c('0x70')]||{},'body':_0x5a1c7c[_0xc28c('0x6e')]||{}};_0x10508f(null,_0x10466b);})['catch'](function(_0x1dec9c){var _0x1f3ee0={'statusCode':_0x1dec9c[_0xc28c('0x77')]||0x1f4,'statusMessage':_0x1dec9c[_0xc28c('0x78')]||_0xc28c('0x79'),'headers':_0x1dec9c[_0xc28c('0x7a')][_0xc28c('0x70')]||{},'body':_0x1dec9c[_0xc28c('0x7a')]['body']||{}};_0x10508f(null,_0x1f3ee0);});};AGIVertices['prototype'][_0xc28c('0x7b')]=function(_0x2ce0ea,_0x1d5037){scripts[_0xc28c('0x7b')](this[_0xc28c('0x11')][_0xc28c('0x37')],_0x2ce0ea[_0xc28c('0x7c')],_0x2ce0ea[_0xc28c('0x5d')],_0x2ce0ea['dialogflow_language']||'en')[_0xc28c('0x17')](function(_0x72f754){_0x1d5037(null,_0x72f754);})[_0xc28c('0x19')](function(_0x3e09a2){_0x1d5037(_0x3e09a2);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x7d')]=function(_0x4f829a,_0x25dcc7){scripts[_0xc28c('0x7d')](this[_0xc28c('0x11')][_0xc28c('0x37')],_0x4f829a[_0xc28c('0x7e')],_0x4f829a['client_email'],_0x4f829a['private_key'],_0x4f829a[_0xc28c('0x5d')],_0x4f829a['dialogflowV2_language']||'en')['then'](function(_0x365f76){_0x25dcc7(null,_0x365f76);})[_0xc28c('0x19')](function(_0x45169e){_0x25dcc7(_0x45169e);});};AGIVertices[_0xc28c('0x14')]['sestekNDA']=function(_0x5ab782,_0x3d4ff9){scripts[_0xc28c('0x7f')](this[_0xc28c('0x11')],_0x5ab782)[_0xc28c('0x17')](function(_0x5dd68d){_0x3d4ff9(null,_0x5dd68d);})[_0xc28c('0x19')](function(_0x3b389c){_0x3d4ff9(_0x3b389c);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x80')]=function(_0x4ac35f,_0x736e7c){scripts[_0xc28c('0x80')](_0x4ac35f[_0xc28c('0x7c')],_0x4ac35f['text'],_0x4ac35f[_0xc28c('0x81')]||_0xc28c('0x5f'),_0x4ac35f[_0xc28c('0x82')])[_0xc28c('0x17')](function(_0x18d5f5){_0x736e7c(null,_0x18d5f5);})[_0xc28c('0x19')](function(_0x2bf6da){_0x736e7c(_0x2bf6da);});};AGIVertices['prototype'][_0xc28c('0x83')]=function(_0x56acc0,_0x5815fb,_0x4f1623){scripts[_0xc28c('0x83')](_0x5815fb,_0x56acc0[_0xc28c('0x7c')],_0x56acc0[_0xc28c('0x84')]||_0xc28c('0x5f'),this['isConfigured'](_0x56acc0['model'])?_0x56acc0[_0xc28c('0x85')]:undefined)[_0xc28c('0x17')](function(_0x4d8aa8){_0x4f1623(null,_0x4d8aa8);})[_0xc28c('0x19')](function(_0x2f774c){_0x4f1623(_0x2f774c);});};AGIVertices['prototype']['awsPolly']=function(_0x9364d8,_0x36c51a){scripts[_0xc28c('0x86')](_0x9364d8[_0xc28c('0x87')],_0x9364d8['aws_secret_access_key'],_0x9364d8['aws_polly_region'],_0x9364d8['aws_polly_voice']||_0xc28c('0x88'),_0x9364d8['text'],_0x9364d8[_0xc28c('0x89')]||'text')['then'](function(_0x9ac769){_0x36c51a(null,_0x9ac769);})[_0xc28c('0x19')](function(_0x4bf24b){_0x36c51a(_0x4bf24b);});};AGIVertices[_0xc28c('0x14')]['awsLex']=function(_0x2c9cdc,_0x38bc17){scripts[_0xc28c('0x8a')](this['channel'][_0xc28c('0x37')],_0x2c9cdc[_0xc28c('0x87')],_0x2c9cdc[_0xc28c('0x8b')],_0x2c9cdc[_0xc28c('0x8c')],_0x2c9cdc[_0xc28c('0x5d')],_0x2c9cdc[_0xc28c('0x8d')])[_0xc28c('0x17')](function(_0x3f7121){_0x38bc17(null,_0x3f7121);})[_0xc28c('0x19')](function(_0x2f9052){_0x38bc17(_0x2f9052);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x8e')]=function(_0x11dfda,_0x3d7c40,_0x585fcd){scripts[_0xc28c('0x8e')](_0x3d7c40,_0x11dfda['key'],_0x11dfda[_0xc28c('0x8f')]||_0xc28c('0x5f'))[_0xc28c('0x17')](function(_0x3819ce){_0x585fcd(null,_0x3819ce);})[_0xc28c('0x19')](function(_0x545149){_0x585fcd(_0x545149);});};AGIVertices['prototype'][_0xc28c('0x90')]=function(_0xb8a0c1,_0xc760fd,_0x45c07f){scripts[_0xc28c('0x90')](_0xc760fd,_0xb8a0c1['appid'],_0xb8a0c1['appsecret'],_0xb8a0c1[_0xc28c('0x91')])[_0xc28c('0x17')](function(_0x4898c3){_0x45c07f(null,_0x4898c3);})[_0xc28c('0x19')](function(_0x8514f7){_0x45c07f(_0x8514f7);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x92')]=function(_0x56be36){var _0x3672ec=_[_0xc28c('0x6a')](verticesWithRetry,_0x56be36[_0xc28c('0x39')])?_0x56be36:_['clone'](_0x56be36);for(var _0x621253 in _0x3672ec){if(_0x3672ec[_0xc28c('0x93')](_0x621253)){if(_0x3672ec[_0x621253]&&_[_0xc28c('0x94')](_0x3672ec[_0x621253])){if(_[_0xc28c('0x6a')](recursiveMapAttributes,_0x621253)){_0x3672ec[_0x621253]=this[_0xc28c('0x95')](_0x3672ec[_0x621253]);}else{_0x3672ec[_0x621253]=this[_0xc28c('0x96')](_0x3672ec[_0x621253]);}}}}return _0x3672ec;};AGIVertices['prototype'][_0xc28c('0x97')]=function(_0x3fbaab){for(var _0x5a5710 in _0x3fbaab){if(_0x3fbaab[_0xc28c('0x93')](_0x5a5710)){if(_[_0xc28c('0x98')](_0x3fbaab[_0x5a5710])){this[_0xc28c('0x97')](_0x3fbaab[_0x5a5710]);}else if(_[_0xc28c('0x99')](_0x3fbaab[_0x5a5710])){for(var _0x30e764=0x0;_0x30e764<_0x3fbaab[_0x5a5710]['length'];_0x30e764++){this[_0xc28c('0x97')](_0x3fbaab[_0x5a5710][_0x30e764]);}}else if(_['isString'](_0x3fbaab[_0x5a5710])){_0x3fbaab[_0x5a5710]=this[_0xc28c('0x96')](_0x3fbaab[_0x5a5710]);}}}};AGIVertices[_0xc28c('0x14')][_0xc28c('0x9a')]=function(_0x27b035,_0x58ca5b){for(var _0x491060 in _0x27b035){if(_0x27b035[_0xc28c('0x93')](_0x491060)){if(_[_0xc28c('0x98')](_0x27b035[_0x491060])){if(!_[_0xc28c('0x44')](_0x27b035[_0x491060])){this[_0xc28c('0x9a')](_0x27b035[_0x491060],util['format']('%s.%s',_0x58ca5b,_0x491060));}}else if(_['isArray'](_0x27b035[_0x491060])){for(var _0x6b91ff=0x0;_0x6b91ff<_0x27b035[_0x491060]['length'];_0x6b91ff++){this[_0xc28c('0x9a')](_0x27b035[_0x491060][_0x6b91ff],util[_0xc28c('0x2b')](_0xc28c('0x9b'),_0x58ca5b,_0x491060+'['+_0x6b91ff+']'));}}else{if(!_[_0xc28c('0x45')](_0x27b035[_0x491060])){this[_0xc28c('0x11')][_0xc28c('0x9c')](util[_0xc28c('0x2b')](_0xc28c('0x9b'),_0x58ca5b,_0x491060),_0x27b035[_0x491060]);}}}}};AGIVertices[_0xc28c('0x14')][_0xc28c('0x95')]=function(_0x313875){try{var _0x5bce5e=JSON[_0xc28c('0x6f')](_0x313875);this[_0xc28c('0x97')](_0x5bce5e);return JSON['stringify'](_0x5bce5e);}catch(_0x43ccc0){return this['replaceAllVariables'](_0x313875);}};AGIVertices[_0xc28c('0x14')]['replaceAllVariables']=function(_0xb099f1){var _0x489b89=_0xb099f1[_0xc28c('0x9d')]('{');for(var _0x56797e=0x1;_0x56797e<_0x489b89[_0xc28c('0x9e')];_0x56797e+=0x1){var _0x521451=_0x489b89[_0x56797e][_0xc28c('0x9d')]('}');if(_0x521451[_0xc28c('0x9e')]>0x1){_0xb099f1=_0xb099f1['replaceAll']('{'+_0x521451[0x0]+'}',this[_0xc28c('0x11')][_0xc28c('0x15')](_0x521451[0x0])[_0xc28c('0x9f')]||_0x521451[0x0]);}}if(_0x489b89[_0xc28c('0x9e')]===0x1){return _0xb099f1[_0xc28c('0x4d')]();}return this[_0xc28c('0x96')](_0xb099f1);};AGIVertices['prototype'][_0xc28c('0xa0')]=function(_0x7eff5e,_0x53626e){var _0x53f4d0=this[_0xc28c('0x11')][_0xc28c('0x15')](_0x7eff5e);if(_0x53f4d0[_0xc28c('0xa1')]===-0x1){return _0x53f4d0;}logger['info'](util[_0xc28c('0x2b')](_0xc28c('0xa2'),_0x53626e,_0x53f4d0[_0xc28c('0x9f')]));return this[_0xc28c('0x11')]['setVariable'](_0x53626e,_0x53f4d0[_0xc28c('0x9f')]);};AGIVertices['prototype'][_0xc28c('0xa3')]=function(_0x2fa3d5){return _0x2fa3d5&&_0x2fa3d5!=='0'&&_0x2fa3d5!=='-1'&&_0x2fa3d5!=='';};AGIVertices[_0xc28c('0x14')][_0xc28c('0xa4')]=function(_0x39c721){this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x39c721,'-');_0x39c721[_0xc28c('0xa5')]=_0x39c721[_0xc28c('0xa4')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0xc28c('0xa6')]=function(_0x21363f){logger['info'](util[_0xc28c('0x2b')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x21363f[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x21363f[_0xc28c('0x5d')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')]('no\x20text\x20configured');}var _0x5b6fd6='\x22'+_0x21363f['text']+'\x22';if(this[_0xc28c('0xa3')](_0x21363f[_0xc28c('0x7a')])){_0x5b6fd6+=','+_0x21363f[_0xc28c('0x7a')];}var _0x35511f=this[_0xc28c('0x11')][_0xc28c('0xa8')]('MRCPSynth',_0x5b6fd6);if(_0x35511f[_0xc28c('0xa1')]===-0x1){return _0x35511f;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xa9'),_0x5b6fd6));};AGIVertices[_0xc28c('0x14')]['mrcprecog']=function(_0x33595b){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0xaa'),_0x33595b[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x33595b[_0xc28c('0xab')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xac'));}var _0x8f48df=_0x33595b['grammar'];if(this['isConfigured'](_0x33595b['options'])){_0x8f48df+=','+_0x33595b['options'];}var _0xb5dd99=this['channel'][_0xc28c('0xa8')](_0xc28c('0xad'),_0x8f48df);if(_0xb5dd99[_0xc28c('0xa1')]===-0x1){return _0xb5dd99;}var _0x1fd1a5=this[_0xc28c('0xa0')](_0xc28c('0xae'),_0xc28c('0xaf'));if(_0x1fd1a5[_0xc28c('0xa1')]===-0x1){return _0x1fd1a5;}var _0x3c22ef=this[_0xc28c('0xa0')](_0xc28c('0xb0'),'MRCP_RECOG_TRANSCRIPT');if(_0x3c22ef['result']===-0x1){return _0x3c22ef;}var _0xd67525=this[_0xc28c('0xa0')](_0xc28c('0xb1'),'MRCP_RECOG_INSTANCE');if(_0xd67525[_0xc28c('0xa1')]===-0x1){return _0xd67525;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format']('Executed\x20command\x20MRCPRecog\x20%s',_0x8f48df));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xa')]=function(_0x5e13dd){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20AGI\x20(%s)\x20block',_0x5e13dd[_0xc28c('0x38')]));return this['channel'][_0xc28c('0xa')]([_0x5e13dd[_0xc28c('0xb2')],_0x5e13dd[_0xc28c('0xb3')]]);};AGIVertices[_0xc28c('0x14')][_0xc28c('0xb4')]=function(_0x458906){logger['info'](util[_0xc28c('0x2b')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x458906['label']));if(this[_0xc28c('0xa3')](_0x458906[_0xc28c('0x69')])){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0xb5'),_0x458906[_0xc28c('0x69')]));var _0x26819e=this[_0xc28c('0x11')]['wait'](_0x458906[_0xc28c('0x69')]);if(_0x26819e[_0xc28c('0xa1')]===-0x1){return _0x26819e;}}return this[_0xc28c('0x11')][_0xc28c('0xb4')]();};AGIVertices['prototype']['callback']=function(_0x540518){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0xb6'),_0x540518['label']));if(!this['isConfigured'](_0x540518[_0xc28c('0x4a')])){return this['channel'][_0xc28c('0x2d')](_0x540518,'no\x20list\x20selected');}_0x540518['scheduledAt']=moment();if(this[_0xc28c('0xa3')](_0x540518[_0xc28c('0xb7')])){_0x540518[_0xc28c('0x4b')]=moment()[_0xc28c('0xb8')](_0x540518[_0xc28c('0xb7')],_0xc28c('0xb9'));}if(!this[_0xc28c('0xa3')](_0x540518[_0xc28c('0x4e')])){_0x540518['callback_priority']=0x2;}this[_0xc28c('0x43')][_0xc28c('0x73')](this,_0x540518);return this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xba'),_0x540518[_0xc28c('0x49')],_0x540518[_0xc28c('0x4a')],_0x540518[_0xc28c('0x4b')]));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xbb')]=function(_0x2ac93b){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0xbc'),_0x2ac93b['label']));var _0x378c2d=this['channel']['exec'](_0x2ac93b[_0xc28c('0xbd')],_0x2ac93b[_0xc28c('0x7a')]);if(_0x378c2d['result']===-0x1){return _0x378c2d;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xbe'),_0x2ac93b['application'],_0x2ac93b['options']));};AGIVertices[_0xc28c('0x14')]['lumenvoxtts']=function(_0x37144e){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0xbf'),_0x37144e[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x37144e['text'])){return this['channel'][_0xc28c('0xa7')]('no\x20text\x20configured');}var _0x597f59='\x22'+_0x37144e[_0xc28c('0x5d')]+'\x22';if(this[_0xc28c('0xa3')](_0x37144e[_0xc28c('0x7a')])){_0x597f59+=','+_0x37144e[_0xc28c('0x7a')];}var _0x1a38f5=this['channel']['exec'](_0xc28c('0xc0'),_0x597f59);if(_0x1a38f5[_0xc28c('0xa1')]===-0x1){return _0x1a38f5;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xa9'),_0x597f59));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xc1')]=function(_0x43d7ff){logger[_0xc28c('0x2f')](util['format']('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x43d7ff[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x43d7ff[_0xc28c('0x5d')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')]('no\x20text\x20configured');}var _0x253208='\x22'+_0x43d7ff['text']+'\x22';if(this[_0xc28c('0xa3')](_0x43d7ff[_0xc28c('0x7a')])){_0x253208+=','+_0x43d7ff[_0xc28c('0x7a')];}var _0x207a9f=this['channel'][_0xc28c('0xa8')]('MRCPSynth',_0x253208);if(_0x207a9f[_0xc28c('0xa1')]===-0x1){return _0x207a9f;}return this['channel']['noop'](util[_0xc28c('0x2b')](_0xc28c('0xa9'),_0x253208));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xc2')]=function(_0x47a94b){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x47a94b['label']));if(!this['isConfigured'](_0x47a94b[_0xc28c('0xab')])){return this[_0xc28c('0x11')]['noop'](_0xc28c('0xac'));}var _0x5d8aca=_0x47a94b['grammar'];if(this[_0xc28c('0xa3')](_0x47a94b[_0xc28c('0x7a')])){_0x5d8aca+=','+_0x47a94b[_0xc28c('0x7a')];}var _0x29084e=this[_0xc28c('0x11')]['exec']('MRCPRecog',_0x5d8aca);if(_0x29084e['result']===-0x1){return _0x29084e;}var _0x2b67da=this[_0xc28c('0xa0')](_0xc28c('0xae'),_0xc28c('0xc3'));if(_0x2b67da[_0xc28c('0xa1')]===-0x1){return _0x2b67da;}var _0x1f62e7=this[_0xc28c('0xa0')]('RECOG_INPUT()',_0xc28c('0xc4'));if(_0x1f62e7[_0xc28c('0xa1')]===-0x1){return _0x1f62e7;}var _0x267871=this[_0xc28c('0xa0')]('RECOG_INSTANCE()','LUMENVOX_ASR_INSTANCE');if(_0x267871[_0xc28c('0xa1')]===-0x1){return _0x267871;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('Executed\x20command\x20MRCPRecog\x20%s',_0x5d8aca));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xc5')]=function(_0x1e565d){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x1e565d[_0xc28c('0x38')]));if(!this['isConfigured'](_0x1e565d[_0xc28c('0xab')])){return this[_0xc28c('0x11')]['noop']('no\x20grammar\x20configured');}var _0x229f65=_0x1e565d[_0xc28c('0xab')];if(this[_0xc28c('0xa3')](_0x1e565d[_0xc28c('0x7a')])){_0x229f65+=','+_0x1e565d['options'];}var _0x292a5b=this[_0xc28c('0x11')]['exec'](_0xc28c('0xad'),_0x229f65);if(_0x292a5b[_0xc28c('0xa1')]===-0x1){return _0x292a5b;}var _0x270d7a=this[_0xc28c('0xa0')]('RECOG_CONFIDENCE()',_0xc28c('0xc6'));if(_0x270d7a[_0xc28c('0xa1')]===-0x1){return _0x270d7a;}var _0x219de2=this[_0xc28c('0xa0')]('RECOG_INPUT()',_0xc28c('0xc7'));if(_0x219de2[_0xc28c('0xa1')]===-0x1){return _0x219de2;}var _0x240a39=this[_0xc28c('0xa0')](_0xc28c('0xb1'),_0xc28c('0xc8'));if(_0x240a39['result']===-0x1){return _0x240a39;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xc9'),_0x229f65));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xca')]=function(_0x2f7930){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0xcb'),_0x2f7930[_0xc28c('0x38')]));if(!this['isConfigured'](_0x2f7930[_0xc28c('0xcc')])){return this[_0xc28c('0x11')]['error'](_0x2f7930,_0xc28c('0xcd'));}var _0x2f21b4=this[_0xc28c('0x1d')][_0xc28c('0x73')](this,_0x2f7930[_0xc28c('0xcc')]);if(!_0x2f21b4){return this[_0xc28c('0x11')]['error'](_0x2f7930,_0xc28c('0xce'));}if(!this[_0xc28c('0xa3')](_0x2f7930[_0xc28c('0x31')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x2f7930,_0xc28c('0xcf'));}var _0x5b36c7=_0x2f7930[_0xc28c('0x31')][_0xc28c('0xd0')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('query:\x20%s',_0x5b36c7));var _0x263902=this[_0xc28c('0xd1')][_0xc28c('0x73')](this,_0x2f21b4,_0x5b36c7);this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x2f7930,_0x5b36c7);if(!this[_0xc28c('0xa3')](_0x2f7930[_0xc28c('0xd2')])){return this['channel']['noop'](_0xc28c('0xd3'));}var _0x28db02=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x2f7930['variable_id']);if(!_0x28db02){return this['channel']['error'](_0x2f7930,_0xc28c('0xd4'));}var _0x4df93e=this;_0x263902[_0xc28c('0xd5')](function(_0x16a048,_0x5d995f){Object[_0xc28c('0xd6')](_0x16a048)[_0xc28c('0xd5')](function(_0x1dd512){_0x4df93e[_0xc28c('0x11')][_0xc28c('0x9c')](util[_0xc28c('0x2b')](_0xc28c('0xd7'),_0x28db02,_0x5d995f,_0x1dd512),_0x16a048[_0x1dd512]);});});this['channel'][_0xc28c('0x9c')](util[_0xc28c('0x2b')](_0xc28c('0xd8'),_0x28db02),_0x263902['length']);return this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')](_0xc28c('0xd9'),_0x28db02));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xda')]=function(_0x39f577){logger[_0xc28c('0xdb')](util['format'](_0xc28c('0xdc'),_0x39f577['label']));if(!this[_0xc28c('0xa3')](_0x39f577['sip_id'])){return this[_0xc28c('0x11')]['error'](_0x39f577,_0xc28c('0xdd'));}var _0x2abdcd=this[_0xc28c('0x1f')][_0xc28c('0x73')](this,_0x39f577[_0xc28c('0xde')]);if(!_0x2abdcd){return this[_0xc28c('0x11')]['error'](_0x39f577,_0xc28c('0xdf'));}var _0x2fff33=this[_0xc28c('0x11')][_0xc28c('0xa8')](_0xc28c('0xe0'),[util[_0xc28c('0x2b')](_0xc28c('0xe1'),_0x2abdcd),_0x39f577[_0xc28c('0x69')],_0x39f577['opts'],_0x39f577[_0xc28c('0x66')]]);if(_0x2fff33[_0xc28c('0xa1')]===-0x1){return _0x2fff33;}return this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xe2'),_0xc28c('0xe0')));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xe3')]=function(_0x394ba2){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0xe4'),_0x394ba2[_0xc28c('0x38')]));if(!this['isConfigured'](_0x394ba2[_0xc28c('0x7c')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')]('no\x20key\x20configured');}if(!this[_0xc28c('0xa3')](_0x394ba2['text'])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0xe5'));}this['channel'][_0xc28c('0xe6')]=!![];this[_0xc28c('0x36')](_0x394ba2);this[_0xc28c('0x42')](_0x394ba2[_0xc28c('0x5d')],'in','','');this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')](_0xc28c('0xe7'),_0x394ba2['text']));var _0x56c44a=this['googleDialogflow']['sync'](this,_0x394ba2);if(_0x56c44a){for(var _0x380e5d in _0x56c44a){if(_0x56c44a[_0xc28c('0x93')](_0x380e5d)){this['channel'][_0xc28c('0x9c')](util['format'](_0xc28c('0xe8'),_0x380e5d[_0xc28c('0x6d')]()),_0x56c44a[_0x380e5d]);}}this[_0xc28c('0x42')](_0x56c44a[_0xc28c('0xe9')],'out',_0xc28c('0xe3'),'');return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('Dialogflow\x20Result\x20%s',_0x56c44a[_0xc28c('0xe9')]));}return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x394ba2,_0xc28c('0xea'));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xeb')]=function(_0x42f509){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x42f509['label']));if(!this[_0xc28c('0xa3')](_0x42f509[_0xc28c('0x7e')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xec'));}if(!this[_0xc28c('0xa3')](_0x42f509[_0xc28c('0xed')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')]('no\x20client_email\x20configured');}if(!this['isConfigured'](_0x42f509[_0xc28c('0xee')])){return this[_0xc28c('0x11')]['noop']('no\x20private_key\x20configured');}if(!this[_0xc28c('0xa3')](_0x42f509['dialogflowV2_language'])){return this[_0xc28c('0x11')]['noop'](_0xc28c('0xef'));}if(!this[_0xc28c('0xa3')](_0x42f509['text'])){return this[_0xc28c('0x11')]['noop'](_0xc28c('0xe5'));}this[_0xc28c('0x11')][_0xc28c('0xe6')]=!![];this[_0xc28c('0x36')](_0x42f509);this[_0xc28c('0x42')](_0x42f509[_0xc28c('0x5d')],'in','','');this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xf0'),_0x42f509[_0xc28c('0x5d')]));var _0x282f40=this[_0xc28c('0x7d')]['sync'](this,_0x42f509);if(_0x282f40){for(var _0x982b66 in _0x282f40){if(_0x282f40[_0xc28c('0x93')](_0x982b66)){if(_0x982b66!=='providerResponse'){this[_0xc28c('0x11')][_0xc28c('0x9c')](util[_0xc28c('0x2b')]('DIALOGFLOW_%s',_0x982b66[_0xc28c('0x6d')]()),_0x282f40[_0x982b66]);}}}this[_0xc28c('0x42')](_0x282f40[_0xc28c('0xe9')],_0xc28c('0xf1'),_0xc28c('0xeb'),_0x282f40['providerResponse']);return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xf2'),_0x282f40[_0xc28c('0xe9')]));}return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x42f509,_0xc28c('0xf3'));};AGIVertices['prototype']['sesteknda']=function(_0x3b51fb){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0xf4'),_0x3b51fb[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x3b51fb[_0xc28c('0xf5')])){return this[_0xc28c('0x11')]['noop'](_0xc28c('0xf6'));}if(!this[_0xc28c('0xa3')](_0x3b51fb[_0xc28c('0xf7')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0xf8'));}if(!this[_0xc28c('0xa3')](_0x3b51fb[_0xc28c('0xf9')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xfa'));}if(!this[_0xc28c('0xa3')](_0x3b51fb[_0xc28c('0xfb')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0xe5'));}this['channel'][_0xc28c('0xe6')]=!![];this[_0xc28c('0x36')](_0x3b51fb);this[_0xc28c('0x42')](_0x3b51fb[_0xc28c('0x5d')],'in','','');this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xfc'),_0x3b51fb[_0xc28c('0x5d')]));var _0x1e99df=this[_0xc28c('0x7f')][_0xc28c('0x73')](this,_0x3b51fb);if(_0x1e99df){for(var _0x2c8626 in _0x1e99df){if(_0x1e99df[_0xc28c('0x93')](_0x2c8626)){this[_0xc28c('0x11')][_0xc28c('0x9c')](util[_0xc28c('0x2b')](_0xc28c('0xfd'),_0x2c8626['toUpperCase']()),_0x1e99df[_0x2c8626]);}}this[_0xc28c('0x42')](_0x1e99df[_0xc28c('0xe9')],_0xc28c('0xf1'),_0xc28c('0xfe'),'');if(_0x1e99df['audiofile']){this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')](_0xc28c('0xff'),_0x1e99df[_0xc28c('0x100')]));var _0x4085ad=this[_0xc28c('0x11')][_0xc28c('0x101')](_0x1e99df[_0xc28c('0x100')]);try{fs[_0xc28c('0x102')](_0x1e99df[_0xc28c('0x100')]+_0xc28c('0x103'));}catch(_0x415cbb){logger[_0xc28c('0x2d')](_0x415cbb);}return _0x4085ad;}else{return this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x104'),_0x1e99df[_0xc28c('0xe9')]));}}return this['channel']['error'](_0x3b51fb,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0xc28c('0x14')]['end']=function(_0x5a1903){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x105'),_0x5a1903[_0xc28c('0x38')]));return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x106'));};AGIVertices[_0xc28c('0x14')]['ext_dial']=function(_0x57a825){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x107'),_0x57a825[_0xc28c('0x38')]));var _0x577049='';if(_0x57a825[_0xc28c('0x108')]){if(!this['isConfigured'](_0x57a825[_0xc28c('0x108')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x57a825,_0xc28c('0x109'));}else{var _0x1c5ab9=parseInt(_0x57a825['trunk_id'],0xa);if(isNaN(_0x1c5ab9)){_0x577049=_0x57a825[_0xc28c('0x108')];}else{_0x577049=this[_0xc28c('0x21')]['sync'](this,_0x57a825['trunk_id']);if(!_0x577049){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x57a825,_0xc28c('0x10a'));}}}}else if(_0x57a825[_0xc28c('0x10b')]){_0x577049=_0x57a825[_0xc28c('0x10b')];}else{return this[_0xc28c('0x11')]['error'](_0x57a825,_0xc28c('0x109'));}var _0x51af3e=this['channel']['exec'](_0xc28c('0xe0'),[util[_0xc28c('0x2b')](_0xc28c('0x10c'),_0x577049,_0x57a825[_0xc28c('0x49')]),_0x57a825[_0xc28c('0x69')],_0x57a825[_0xc28c('0x10d')],_0x57a825['url']]);if(_0x51af3e[_0xc28c('0xa1')]===-0x1){return _0x51af3e;}return this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')]('Executed\x20command\x20%s',_0xc28c('0xe0')));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x10e')]=function(_0x348d9e){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x10f'),_0x348d9e['label']));return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x10e'));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x110')]=function(_0x513602){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x111'),_0x513602[_0xc28c('0x38')]));if(_0x513602[_0xc28c('0xa5')]===0x0){return this[_0xc28c('0xa4')](_0x513602);}_0x513602['retry']-=0x1;if(!this['isConfigured'](_0x513602[_0xc28c('0x112')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x513602,_0xc28c('0x113'));}var _0x10da30=this[_0xc28c('0x114')][_0xc28c('0x73')](this,_0x513602[_0xc28c('0x112')]);if(!_0x10da30){return this['channel'][_0xc28c('0x2d')](_0x513602,_0xc28c('0x115'));}if(!this['isConfigured'](_0x513602[_0xc28c('0xd2')])){return this[_0xc28c('0x11')]['error']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x520152=this[_0xc28c('0x11')][_0xc28c('0x116')](_0x10da30,_0x513602['response'],_0x513602['maxdigit']);var _0x3da506=_0x520152[_0xc28c('0xa1')]?_0x520152[_0xc28c('0xa1')][_0xc28c('0x4d')]():'';logger[_0xc28c('0x2f')]('test',JSON[_0xc28c('0x75')](_0x520152));if(_0x520152[_0xc28c('0xa1')]===-0x1){this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x513602,_0x3da506);return _0x520152;}else if(_0x520152[_0xc28c('0x9f')]===_0xc28c('0x69')){_0x520152[_0xc28c('0xa1')]=_0x3da506['length']>=parseInt(_0x513602['mindigit'])?'x':'i';}else{_0x520152['result']=_0x3da506['length']>=parseInt(_0x513602['mindigit'])&&_0x3da506[_0xc28c('0x9e')]<=parseInt(_0x513602[_0xc28c('0x117')])?'x':'i';}var _0x20135a=this[_0xc28c('0x15')]['sync'](this,_0x513602[_0xc28c('0xd2')]);if(!_0x20135a){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x513602,'no\x20variable\x20found');}this[_0xc28c('0x11')][_0xc28c('0x9c')](_0x20135a,_0x3da506);if(this[_0xc28c('0xa3')](_0x513602[_0xc28c('0x118')])){var _0x258e4b=parseInt(_0x513602[_0xc28c('0x118')],0xa);var _0x5f4d06=rs[_0xc28c('0x119')]({'charset':'*','length':_0x258e4b});var _0x3a8a27=_0x3da506['length'];if(_0x3a8a27>0x0){if(_0x3a8a27>_0x258e4b){this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x513602,_0x513602['hiddendigitspos']==='first'?_0x5f4d06+_0x3da506[_0xc28c('0x11a')](_0x258e4b):_0x3da506['substr'](0x0,_0x3a8a27-_0x258e4b)+_0x5f4d06);}else{this['createSquareDetailsReport']['sync'](this,_0x513602,rs[_0xc28c('0x119')]({'charset':'*','length':_0x3a8a27}));}}else{this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x513602,'');}}else{this[_0xc28c('0x36')]['sync'](this,_0x513602,_0x3da506);}return _0x520152;};AGIVertices[_0xc28c('0x14')][_0xc28c('0x10')]=function(_0x3b6833){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x11b'),_0x3b6833[_0xc28c('0x38')]));return this[_0xc28c('0x110')](_0x3b6833);};AGIVertices['prototype'][_0xc28c('0x11c')]=function(_0x589920){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x11d'),_0x589920['label']));this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x589920,_0x589920[_0xc28c('0x11e')]);return this['channel']['noop'](util[_0xc28c('0x2b')]('GOAL\x20%s',_0x589920[_0xc28c('0x11e')]));};AGIVertices['prototype'][_0xc28c('0x11f')]=function(_0x4a28f6){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x120'),_0x4a28f6[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x4a28f6['aws_access_key_id'])||!this[_0xc28c('0xa3')](_0x4a28f6[_0xc28c('0x8b')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')]('no\x20valid\x20credentials\x20configured');}if(!this[_0xc28c('0xa3')](_0x4a28f6[_0xc28c('0x5d')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0xe5'));}this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x121'),_0x4a28f6['text']));var _0xd7add5=this['awsPolly'][_0xc28c('0x73')](this,_0x4a28f6);if(_0xd7add5){this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x122'),_0xd7add5));var _0x108dc8=this[_0xc28c('0x11')]['streamFile'](_0xd7add5);try{fs[_0xc28c('0x102')](_0xd7add5+_0xc28c('0x103'));}catch(_0x71c4a3){logger[_0xc28c('0x2d')](_0x71c4a3);}return _0x108dc8;}return this['channel'][_0xc28c('0x2d')](_0x4a28f6,'aws\x20Polly\x20is\x20unreachable');};AGIVertices['prototype'][_0xc28c('0x123')]=function(_0x11b538){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x124'),_0x11b538['label']));if(!this[_0xc28c('0xa3')](_0x11b538[_0xc28c('0x87')])||!this['isConfigured'](_0x11b538[_0xc28c('0x8b')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0x125'));}if(!this[_0xc28c('0xa3')](_0x11b538['aws_bot_name'])){return this[_0xc28c('0x11')]['noop'](_0xc28c('0x126'));}if(!this['isConfigured'](_0x11b538[_0xc28c('0x5d')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xe5'));}this[_0xc28c('0x11')][_0xc28c('0xe6')]=!![];this['createSquareDetailsReport'](_0x11b538);this[_0xc28c('0x42')](_0x11b538[_0xc28c('0x5d')],'in','','');this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x127'),_0x11b538[_0xc28c('0x5d')]));var _0x158700=this[_0xc28c('0x8a')][_0xc28c('0x73')](this,_0x11b538);if(_0x158700){for(var _0x53556d in _0x158700){if(_0x158700[_0xc28c('0x93')](_0x53556d)&&_['isString'](_0x158700[_0x53556d])){this[_0xc28c('0x11')][_0xc28c('0x9c')](util['format'](_0xc28c('0x128'),_0x53556d[_0xc28c('0x6d')]()),_0x158700[_0x53556d]);}}if(_[_0xc28c('0x45')](_0x158700[_0xc28c('0x78')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0x129'));}else{this[_0xc28c('0x42')](_0x158700[_0xc28c('0x78')],_0xc28c('0xf1'),_0xc28c('0x12a'),'');return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x12b'),_0x158700[_0xc28c('0x78')]));}}return this[_0xc28c('0x11')]['error'](_0x11b538,_0xc28c('0x12c'));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x12d')]=function(_0x3e0c0c){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x12e'),_0x3e0c0c[_0xc28c('0x38')],_0x3e0c0c[_0xc28c('0x69')]));if(!this[_0xc28c('0xa3')](_0x3e0c0c[_0xc28c('0x7c')])){return this['channel']['noop'](_0xc28c('0x12f'));}var _0x3ae2d5=_0xc28c('0x130');var _0x50dd34=util[_0xc28c('0x2b')](_0xc28c('0x131'),FILES_PATH,rs[_0xc28c('0x119')](0x4));var _0x2f2091=util[_0xc28c('0x2b')](_0xc28c('0x9b'),_0x50dd34,_0x3ae2d5);var _0x3aee08=!![];if(_0x3e0c0c[_0xc28c('0x132')]===_0xc28c('0x133')){_0x3aee08=![];}var _0x399b52=this[_0xc28c('0x11')][_0xc28c('0x134')](_0x50dd34,_0x3ae2d5,_0x3e0c0c[_0xc28c('0x135')],_0x3e0c0c['timeout'],undefined,_0x3aee08);if(_0x399b52[_0xc28c('0xa1')]!==-0x1){this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x136'),_0x2f2091));var _0x360133=this[_0xc28c('0x8e')][_0xc28c('0x73')](this,_0x3e0c0c,_0x2f2091);if(_0x360133){for(var _0x1820c8 in _0x360133){if(_0x360133['hasOwnProperty'](_0x1820c8)){this['channel'][_0xc28c('0x9c')](util[_0xc28c('0x2b')]('GOOGLE_ASR_%s',_0x1820c8[_0xc28c('0x6d')]()),_0x360133[_0x1820c8]);}}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x137'),JSON['stringify'](_0x360133)));}}return _0x399b52;};AGIVertices[_0xc28c('0x14')][_0xc28c('0x138')]=function(_0x2f5ded){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x139'),_0x2f5ded['label']));if(!this[_0xc28c('0xa3')](_0x2f5ded[_0xc28c('0x13a')])){return this['channel']['noop'](_0xc28c('0x13b'));}if(!this[_0xc28c('0xa3')](_0x2f5ded[_0xc28c('0x13c')])){return this[_0xc28c('0x11')]['noop'](_0xc28c('0x13d'));}var _0x273f0c=_0xc28c('0x130');var _0x4f42ff=util['format'](_0xc28c('0x131'),FILES_PATH,rs[_0xc28c('0x119')](0x4));var _0x30acd6=util[_0xc28c('0x2b')](_0xc28c('0x9b'),_0x4f42ff,_0x273f0c);var _0x4bdfd7=!![];if(_0x2f5ded[_0xc28c('0x132')]==='NOBEEP'){_0x4bdfd7=![];}var _0x43d265=this[_0xc28c('0x11')]['recordFile'](_0x4f42ff,_0x273f0c,_0x2f5ded[_0xc28c('0x135')],_0x2f5ded[_0xc28c('0x69')],undefined,_0x4bdfd7);if(_0x43d265[_0xc28c('0xa1')]!==-0x1){this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')]('tilde\x20%s\x20file\x20created',_0x30acd6));var _0x237081=this['tildeASR'][_0xc28c('0x73')](this,_0x2f5ded,_0x30acd6);if(_0x237081){for(var _0x1b7c3e in _0x237081){if(_0x237081[_0xc28c('0x93')](_0x1b7c3e)){this[_0xc28c('0x11')]['setVariable'](util[_0xc28c('0x2b')](_0xc28c('0x13e'),_0x1b7c3e[_0xc28c('0x6d')]()),_0x237081[_0x1b7c3e]);}}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x13f'),JSON[_0xc28c('0x75')](_0x237081)));}}return _0x43d265;};AGIVertices[_0xc28c('0x14')]['gotoc']=function(_0x3dbffc){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x3dbffc['label']));return this[_0xc28c('0x11')][_0xc28c('0x140')](_0x3dbffc[_0xc28c('0x3d')],_0x3dbffc[_0xc28c('0x3e')],_0x3dbffc[_0xc28c('0x141')]);};AGIVertices[_0xc28c('0x14')][_0xc28c('0x142')]=function(_0x49207b){logger['info'](util['format'](_0xc28c('0x143'),_0x49207b[_0xc28c('0x38')]));if(!this['isConfigured'](_0x49207b[_0xc28c('0x144')])){return this['channel'][_0xc28c('0x2d')](_0x49207b,_0xc28c('0x145'));}try{var _0xed08fc=eval(_0x49207b[_0xc28c('0x144')])?_0xc28c('0x146'):_0xc28c('0x147');this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format'](_0xc28c('0x148'),_0x49207b[_0xc28c('0x144')],_0xed08fc));return{'code':0xc8,'result':_0xed08fc};}catch(_0x29c1f5){return{'code':0xc8,'result':_0xc28c('0x147')};}};AGIVertices[_0xc28c('0x14')][_0xc28c('0x149')]=function(_0x1b317f){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x14a'),_0x1b317f[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x1b317f[_0xc28c('0x14b')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x1b317f,_0xc28c('0x14c'));}var _0x15fa0c=this[_0xc28c('0x26')][_0xc28c('0x73')](this,_0x1b317f[_0xc28c('0x14b')]);if(!_0x15fa0c){return this['channel']['error'](_0x1b317f,'no\x20intervals\x20found');}for(var _0x732933=0x0;_0x732933<_0x15fa0c[_0xc28c('0x9e')];_0x732933+=0x1){var _0x2ce7e3=this[_0xc28c('0x11')][_0xc28c('0x15')](util[_0xc28c('0x2b')](_0xc28c('0x14d'),_0x15fa0c[_0x732933]));if(_0x2ce7e3['result']===-0x1){return _0x2ce7e3;}logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x14e'),_0x15fa0c[_0x732933],_0x2ce7e3[_0xc28c('0x9f')]));if(_0x2ce7e3[_0xc28c('0x9f')]===_0xc28c('0x146')){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x14e'),_0x15fa0c[_0x732933],'true'));this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x14e'),_0x15fa0c[_0x732933],_0xc28c('0x146')));return{'code':0xc8,'result':_0xc28c('0x146')};}else{logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x14e'),_0x15fa0c[_0x732933],_0xc28c('0x147')));this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x14e'),_0x15fa0c[_0x732933],_0xc28c('0x147')));}}return{'code':0xc8,'result':_0xc28c('0x147')};};AGIVertices[_0xc28c('0x14')]['hangup']=function(_0x56d754){logger[_0xc28c('0x2f')](util['format']('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x56d754[_0xc28c('0x38')]));return this[_0xc28c('0x11')][_0xc28c('0x14f')]();};AGIVertices[_0xc28c('0x14')][_0xc28c('0x150')]=function(_0x197499){logger['info'](util['format'](_0xc28c('0x151'),_0x197499[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x197499[_0xc28c('0x7c')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x12f'));}var _0x12b80b='wav';var _0x15eab9=util[_0xc28c('0x2b')](_0xc28c('0x131'),FILES_PATH,rs[_0xc28c('0x119')](0x4));var _0x2ebee5=util['format'](_0xc28c('0x9b'),_0x15eab9,_0x12b80b);var _0x67b1b0=!![];if(_0x197499['beep']===_0xc28c('0x133')){_0x67b1b0=![];}var _0x546fa1=this[_0xc28c('0x11')]['recordFile'](_0x15eab9,_0x12b80b,_0x197499[_0xc28c('0x135')],_0x197499[_0xc28c('0x69')],undefined,_0x67b1b0);if(_0x546fa1[_0xc28c('0xa1')]!==-0x1){this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x152'),_0x2ebee5));var _0x512345=this[_0xc28c('0x83')][_0xc28c('0x73')](this,_0x197499,_0x2ebee5);if(_0x512345){for(var _0x5b4d3c in _0x512345){if(_0x512345[_0xc28c('0x93')](_0x5b4d3c)){this['channel'][_0xc28c('0x9c')](util[_0xc28c('0x2b')](_0xc28c('0x153'),_0x5b4d3c['toUpperCase']()),_0x512345[_0x5b4d3c]);}}return this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x154'),JSON[_0xc28c('0x75')](_0x512345)));}}return _0x546fa1;};AGIVertices[_0xc28c('0x14')]['ispeechtts']=function(_0x36ab45){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x155'),_0x36ab45[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x36ab45[_0xc28c('0x7c')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0x12f'));}if(!this[_0xc28c('0xa3')](_0x36ab45['text'])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xe5'));}this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x156'),_0x36ab45[_0xc28c('0x5d')]));var _0x27396a=this[_0xc28c('0x80')][_0xc28c('0x73')](this,_0x36ab45);if(_0x27396a){this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x152'),_0x27396a));var _0x1bf99c=this[_0xc28c('0x11')][_0xc28c('0x101')](_0x27396a,_0x36ab45[_0xc28c('0x135')]);try{fs[_0xc28c('0x102')](_0x27396a+_0xc28c('0x103'));}catch(_0x3e05be){logger[_0xc28c('0x2d')](_0x3e05be);}return _0x1bf99c;}return this['channel'][_0xc28c('0x2d')](_0x36ab45,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0xc28c('0x14')][_0xc28c('0x157')]=function(_0x260de8){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x158'),_0x260de8['label']));if(!this[_0xc28c('0xa3')](_0x260de8['findBy'])){return this['channel'][_0xc28c('0x2d')](_0x260de8,_0xc28c('0x159'));}logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xc28c('0x11')]['callerid'],_0x260de8[_0xc28c('0x15a')]));var _0x488e94=this[_0xc28c('0x58')][_0xc28c('0x73')](this,_0x260de8[_0xc28c('0x15a')]);if(_0x488e94){logger[_0xc28c('0x2f')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x260de8['findBy']));this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x15b'),this['channel'][_0xc28c('0x3a')],_0x260de8[_0xc28c('0x15a')]));return{'code':0xc8,'result':_0xc28c('0x15c')};}else{logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x15d'),this['channel'][_0xc28c('0x3a')],_0x260de8[_0xc28c('0x15a')]));this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format'](_0xc28c('0x15d'),this['channel']['callerid'],_0x260de8[_0xc28c('0x15a')]));return{'code':0xc8,'result':_0xc28c('0x15e')};}};AGIVertices['prototype'][_0xc28c('0x15f')]=function(_0x1ed4c8){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x1ed4c8[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x1ed4c8['findBy'])){return this[_0xc28c('0x11')]['error'](_0x1ed4c8,'no\x20find\x20by\x20configured');}logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x1ed4c8[_0xc28c('0x15a')]));var _0x31248b=this['agentLogout'][_0xc28c('0x73')](this,_0x1ed4c8[_0xc28c('0x15a')]);if(_0x31248b){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x15b'),this['channel'][_0xc28c('0x3a')],_0x1ed4c8[_0xc28c('0x15a')]));this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x1ed4c8[_0xc28c('0x15a')]));return{'code':0xc8,'result':_0xc28c('0x15c')};}else{logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x15d'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x1ed4c8['findBy']));this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format'](_0xc28c('0x15d'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x1ed4c8[_0xc28c('0x15a')]));return{'code':0xc8,'result':_0xc28c('0x15e')};}};AGIVertices[_0xc28c('0x14')][_0xc28c('0x160')]=function(_0x295dd9){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x295dd9['label']));if(!this[_0xc28c('0xa3')](_0x295dd9['operation'])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x295dd9,_0xc28c('0x161'));}this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('math\x20%s',_0x295dd9[_0xc28c('0x162')]));var _0x2b952d=eval(_0x295dd9['operation']);if(!this[_0xc28c('0xa3')](_0x295dd9['variable_id'])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xd3'));}var _0x1d7b73=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x295dd9[_0xc28c('0xd2')]);if(!_0x1d7b73){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x295dd9,_0xc28c('0xd4'));}if(_[_0xc28c('0x99')](_0x2b952d)){var _0x280f3a=this;_0x2b952d['forEach'](function(_0xd527ec,_0x5361e0){_0x280f3a[_0xc28c('0x11')][_0xc28c('0x9c')](util['format'](_0xc28c('0x163'),_0x1d7b73,_0x5361e0),_0xd527ec);});return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x164'),_0x1d7b73));}else{return this['channel'][_0xc28c('0x9c')](_0x1d7b73,_0x2b952d);}};AGIVertices[_0xc28c('0x14')][_0xc28c('0xf')]=function(_0x82362){logger['info'](util['format'](_0xc28c('0x165'),_0x82362[_0xc28c('0x38')]));if(_0x82362[_0xc28c('0xa5')]===0x0){return this[_0xc28c('0xa4')](_0x82362);}_0x82362[_0xc28c('0xa5')]-=0x1;if(!this[_0xc28c('0xa3')](_0x82362[_0xc28c('0x112')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x82362,_0xc28c('0x113'));}var _0x3292c4=this[_0xc28c('0x114')][_0xc28c('0x73')](this,_0x82362[_0xc28c('0x112')]);if(!_0x3292c4){return this[_0xc28c('0x11')]['error'](_0x82362,'no\x20file\x20audio\x20found');}var _0x3bdf78=this[_0xc28c('0x11')][_0xc28c('0x116')](_0x3292c4,_0x82362[_0xc28c('0x166')],_0x82362[_0xc28c('0x167')]);var _0x284555=_0x3bdf78[_0xc28c('0xa1')];if(_0x3bdf78[_0xc28c('0xa1')]===-0x1){this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x82362,'-1');return _0x3bdf78;}else if(_0x3bdf78['extra']===_0xc28c('0x69')){_0x3bdf78['result']=_0x3bdf78[_0xc28c('0xa1')][_0xc28c('0x9e')]>0x0?_0x3bdf78[_0xc28c('0xa1')]:'t';}else if(_[_0xc28c('0x44')](_0x3bdf78[_0xc28c('0xa1')])){_0x3bdf78[_0xc28c('0xa1')]='#';_0x284555='#';}if(!this[_0xc28c('0xa3')](_0x82362[_0xc28c('0xd2')])){this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0xd3'));}else{var _0xbfa412=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x82362[_0xc28c('0xd2')]);if(!_0xbfa412){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x82362,_0xc28c('0xd4'));}this['channel'][_0xc28c('0x9c')](_0xbfa412,_0x284555);}this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x82362,_0x284555);return _0x3bdf78;};AGIVertices['prototype'][_0xc28c('0xa7')]=function(_0x119d08){logger[_0xc28c('0x2f')](util['format']('Enter\x20in\x20NOOP\x20(%s)\x20block',_0x119d08[_0xc28c('0x38')]));return this['channel']['noop'](_0x119d08[_0xc28c('0x168')]||_0x119d08[_0xc28c('0x38')]);};AGIVertices['prototype'][_0xc28c('0x169')]=function(_0x55d00e){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x16a'),_0x55d00e[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x55d00e[_0xc28c('0x15a')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x55d00e,_0xc28c('0x159'));}logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x16b'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x55d00e[_0xc28c('0x15a')]));var _0x1a1dad=this['getPause'][_0xc28c('0x73')](this,_0x55d00e[_0xc28c('0x16c')]);var _0x5706a4=this[_0xc28c('0x51')]['sync'](this,_0x55d00e[_0xc28c('0x15a')],_0x1a1dad);if(_0x5706a4){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x15b'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x55d00e[_0xc28c('0x15a')]));this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x15b'),this[_0xc28c('0x11')]['callerid'],_0x55d00e['findBy']));return{'code':0xc8,'result':_0xc28c('0x15c')};}else{logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x15d'),this[_0xc28c('0x11')]['callerid'],_0x55d00e[_0xc28c('0x15a')]));this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x15b'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x55d00e[_0xc28c('0x15a')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xc28c('0x14')]['playback']=function(_0x5e53a6){logger['info'](util['format'](_0xc28c('0x16d'),_0x5e53a6[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x5e53a6[_0xc28c('0x112')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x5e53a6,'no\x20file\x20audio\x20selected');}var _0x51f31c=this[_0xc28c('0x114')]['sync'](this,_0x5e53a6[_0xc28c('0x112')]);if(!_0x51f31c){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x5e53a6,'no\x20file\x20audio\x20found');}var _0x317359=this['channel'][_0xc28c('0xa8')](_0xc28c('0x16e'),[_0x51f31c,_0x5e53a6[_0xc28c('0x10d')]]);if(_0x317359[_0xc28c('0xa1')]===-0x1){return _0x317359;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xbe'),_0xc28c('0x16e'),_0x51f31c));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x16f')]=function(_0xd90f0){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x170'),_0xd90f0[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0xd90f0[_0xc28c('0x171')])){return this[_0xc28c('0x11')]['error'](_0xd90f0,'no\x20queue\x20selected');}var _0xacd30='';var _0x1216f8=parseInt(_0xd90f0['queue_id'],0xa);if(isNaN(_0x1216f8)){_0xacd30=_0xd90f0[_0xc28c('0x171')];}else{_0xacd30=this['getVoiceQueue'][_0xc28c('0x73')](this,_0xd90f0[_0xc28c('0x171')]);if(!_0xacd30){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0xd90f0,_0xc28c('0x172'));}}var _0x189702='';if(this['isConfigured'](_0xd90f0['file_id'])){var _0x3d5c6a=this[_0xc28c('0x114')]['sync'](this,_0xd90f0['file_id']);if(_0x3d5c6a){_0x189702=_0x3d5c6a;}}this[_0xc28c('0x36')]['sync'](this,_0xd90f0,_0xacd30);if(_0xd90f0['opts'][_0xc28c('0x173')]('x')<0x0){_0xd90f0[_0xc28c('0x10d')]+='x';}if(_0xd90f0['opts']['indexOf']('X')<0x0){_0xd90f0[_0xc28c('0x10d')]+='X';}this[_0xc28c('0x11')]['setVariable']('XMCS-QUEUE',_0xacd30?_0xacd30['toLowerCase']():'');var _0x519db9=this[_0xc28c('0x11')][_0xc28c('0xa8')](_0xc28c('0x174'),[_0xacd30,_0xd90f0[_0xc28c('0x10d')],_0xd90f0[_0xc28c('0x66')],_0x189702,_0xd90f0[_0xc28c('0x69')],_0xd90f0[_0xc28c('0xa')],_0xd90f0[_0xc28c('0x175')],_0xd90f0[_0xc28c('0x176')],'',_0xd90f0[_0xc28c('0x177')]]);if(_0x519db9[_0xc28c('0xa1')]===-0x1){return _0x519db9;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('Executed\x20command\x20%s\x20%s',_0xc28c('0x174'),_0xacd30));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x178')]=function(_0x3d952b){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x179'),_0x3d952b[_0xc28c('0x38')]));var _0x4466b7=_0x3d952b[_0xc28c('0x17a')]||_0xc28c('0x130');var _0x1f45eb=util[_0xc28c('0x2b')](_0xc28c('0x17b'),this[_0xc28c('0x11')]['uniqueid'],rs[_0xc28c('0x119')](0x5));var _0x81c8ec=util['format']('%s/recordings/%s.%s',FILES_PATH,_0x1f45eb,_0x4466b7);var _0xdc8567=util[_0xc28c('0x2b')]('%s/recordings/%s',FILES_PATH,_0x1f45eb);this[_0xc28c('0x3b')]['sync'](this,_0x3d952b,_0x1f45eb,_0x81c8ec);this['channel']['setVariable'](_0xc28c('0x17c'),_0x1f45eb);logger[_0xc28c('0x2f')](_0xc28c('0x17d'),_0xdc8567,_0x4466b7,_0x3d952b[_0xc28c('0x17e')],_0x3d952b[_0xc28c('0x69')]);return this['channel'][_0xc28c('0x134')](_0xdc8567,_0x4466b7,_0x3d952b[_0xc28c('0x17e')],_0x3d952b[_0xc28c('0x69')],undefined,!![]);};AGIVertices[_0xc28c('0x14')][_0xc28c('0x17f')]=function(_0x290a87){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x180'),_0x290a87[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x290a87[_0xc28c('0x66')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x181'));}var _0x47b4c9=this[_0xc28c('0x65')][_0xc28c('0x73')](this,_0x290a87);logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x182'),util[_0xc28c('0x183')](_0x47b4c9,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x290a87[_0xc28c('0xd2')])){return this['channel']['noop'](_0xc28c('0x184'));}var _0x24fb4b=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x290a87['variable_id']);if(!_0x24fb4b){return this['channel'][_0xc28c('0x2d')](_0x290a87,_0xc28c('0xd4'));}this['channel']['setVariable'](util['format'](_0xc28c('0x185'),_0x24fb4b),_0x47b4c9[_0xc28c('0x77')]?_0x47b4c9[_0xc28c('0x77')]:'200');this[_0xc28c('0x11')][_0xc28c('0x9c')](util[_0xc28c('0x2b')](_0xc28c('0x186'),_0x24fb4b),_0x47b4c9[_0xc28c('0x187')]?_0x47b4c9[_0xc28c('0x187')]:'OK');if(_0x47b4c9['body']){try{this['saveRestApiResult'](_0x47b4c9[_0xc28c('0x6e')],_0x24fb4b);}catch(_0x7c4fae){logger[_0xc28c('0x2d')](util[_0xc28c('0x2b')](_0xc28c('0x188'),_0x24fb4b));}}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format'](_0xc28c('0xd9'),_0x24fb4b));};AGIVertices['prototype']['saydigits']=function(_0x340798){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x189'),_0x340798[_0xc28c('0x38')]));return this[_0xc28c('0x11')]['sayDigits'](_0x340798[_0xc28c('0x18a')][_0xc28c('0xd0')](/\s+/g,''),_0x340798[_0xc28c('0x17e')]);};AGIVertices['prototype'][_0xc28c('0x18b')]=function(_0x531831){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x18c'),_0x531831[_0xc28c('0x38')]));return this[_0xc28c('0x11')][_0xc28c('0x18d')](_0x531831[_0xc28c('0x68')][_0xc28c('0xd0')](/\s+/g,''),_0x531831['escape_digits']);};AGIVertices[_0xc28c('0x14')][_0xc28c('0x18e')]=function(_0x446ecf){logger['info'](util[_0xc28c('0x2b')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x446ecf[_0xc28c('0x38')]));return this[_0xc28c('0x11')][_0xc28c('0x18f')](_0x446ecf[_0xc28c('0x5d')],_0x446ecf[_0xc28c('0x17e')]);};AGIVertices[_0xc28c('0x14')][_0xc28c('0x190')]=function(_0x342016){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x191'),_0x342016[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x342016[_0xc28c('0x192')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')]('no\x20mail\x20account\x20configured');}var _0x5d377a=this[_0xc28c('0x193')][_0xc28c('0x73')](this,_0x342016[_0xc28c('0x192')]);if(!_0x5d377a||!_0x5d377a['Smtp']){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x342016,_0xc28c('0x194'));}var _0x214a18={'from':util[_0xc28c('0x2b')]('\x22%s\x22\x20<%s>',_0x5d377a[_0xc28c('0x18')],_0x5d377a[_0xc28c('0x195')]||_0x5d377a[_0xc28c('0x196')][_0xc28c('0x197')]),'to':_0x342016['to']||'','cc':_0x342016['cc']||'','bcc':_0x342016[_0xc28c('0x198')]||'','subject':_0x342016[_0xc28c('0x199')],'html':_0x342016['text'],'text':_0x342016['text']};var _0x41803f={'tls':{'rejectUnauthorized':![]}};if(_0x5d377a[_0xc28c('0x196')]['service']){_0x41803f['service']=_0x5d377a[_0xc28c('0x196')][_0xc28c('0x19a')];}else{_0x41803f[_0xc28c('0x19b')]=_0x5d377a[_0xc28c('0x196')][_0xc28c('0x19b')];_0x41803f[_0xc28c('0x19c')]=_0x5d377a[_0xc28c('0x196')][_0xc28c('0x19c')];_0x41803f[_0xc28c('0x19d')]=_0x5d377a[_0xc28c('0x196')]['secure'];}if(_0x5d377a['Smtp']['authentication']){_0x41803f[_0xc28c('0x19e')]={'user':_0x5d377a['Smtp'][_0xc28c('0x197')],'pass':_0x5d377a[_0xc28c('0x196')]['pass']};}if(this['isConfigured'](_0x342016[_0xc28c('0x19f')])){}logger['debug'](_0xc28c('0x1a0'),JSON[_0xc28c('0x75')](_0x214a18));this['createSquareDetailsReport'][_0xc28c('0x73')](this,_0x342016,_0x342016[_0xc28c('0x192')]);this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x1a1'),_0x5d377a[_0xc28c('0x18')]));this[_0xc28c('0x25')][_0xc28c('0x73')](this,_0x41803f,_0x214a18);return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x1a2'));};AGIVertices['prototype'][_0xc28c('0x1a3')]=function(_0x357a9c){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1a4'),_0x357a9c[_0xc28c('0x38')]));return this['channel']['noop'](_0xc28c('0x1a5'));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1a6')]=function(_0x302b7f){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1a7'),_0x302b7f['label']));if(!this[_0xc28c('0xa3')](_0x302b7f[_0xc28c('0x1a8')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0x1a9'));}var _0x176314=this[_0xc28c('0x1aa')]['sync'](this,_0x302b7f[_0xc28c('0x1a8')]);if(!_0x176314){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x302b7f,'no\x20sms\x20account\x20found');}var _0xa5d217={'body':_0x302b7f[_0xc28c('0x1ab')],'phone':_0x302b7f['to']||'','SmsAccountId':_0x176314['id']};logger[_0xc28c('0xdb')](_0xc28c('0x1ac'),JSON[_0xc28c('0x75')](_0xa5d217));this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x302b7f,_0x302b7f[_0xc28c('0x1a8')]);this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x1ad'),_0x176314[_0xc28c('0x18')]));this[_0xc28c('0x35')][_0xc28c('0x73')](this,_0xa5d217);return this['channel']['noop']('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1ae')]=function(_0x448bca){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1af'),_0x448bca['label']));if(!this[_0xc28c('0xa3')](_0x448bca[_0xc28c('0xd2')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x448bca,_0xc28c('0x1b0'));}var _0x5b022c=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x448bca[_0xc28c('0xd2')]);if(!_0x5b022c){return this[_0xc28c('0x11')]['error'](_0x448bca,_0xc28c('0xd4'));}return this[_0xc28c('0x11')]['setVariable'](_0x5b022c,_0x448bca[_0xc28c('0x1b1')]);};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1b2')]=function(_0x43fda9){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1b3'),_0x43fda9[_0xc28c('0x38')]));this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x1b4'));if(_0x43fda9['answer']===_0xc28c('0x1b5')){this[_0xc28c('0x11')]['noop'](_0xc28c('0x1b6'));return this[_0xc28c('0x11')][_0xc28c('0xb4')]();}return this[_0xc28c('0x11')]['noop'](_0xc28c('0x1b7'));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1b8')]=function(_0x3bd29b){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x1b9'),_0x3bd29b[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x3bd29b[_0xc28c('0x1ba')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x3bd29b,_0xc28c('0x1bb'));}var _0x4ba11b=this[_0xc28c('0x1b')][_0xc28c('0x73')](this,_0x3bd29b[_0xc28c('0x1ba')]);if(!this[_0xc28c('0xa3')](_0x4ba11b)){return this[_0xc28c('0x11')]['error'](_0x3bd29b,util[_0xc28c('0x2b')](_0xc28c('0x1bc'),_0x3bd29b[_0xc28c('0x1ba')]));}if(_0x4ba11b===this['channel']['arg_1']){return this['channel'][_0xc28c('0x2d')](_0x3bd29b,_0xc28c('0x1bd'));}this['createSquareDetailsReport'][_0xc28c('0x73')](this,_0x3bd29b,_0x4ba11b);var _0x4780ca=this[_0xc28c('0x11')][_0xc28c('0xa8')](_0xc28c('0x1be'),util[_0xc28c('0x2b')](_0xc28c('0x1bf'),config[_0xc28c('0xa')][_0xc28c('0x19b')]||_0xc28c('0x1c0'),_0x4ba11b,this[_0xc28c('0x11')][_0xc28c('0x40')]));if(_0x4780ca['result']===-0x1){return _0x4780ca;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('Executed\x20command\x20%s\x20%s',_0xc28c('0x1be'),_0x4ba11b));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1c1')]=function(_0x523905){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x1c2'),_0x523905[_0xc28c('0x38')]));var _0x1f25e3=this[_0xc28c('0x1c3')][_0xc28c('0x73')](this,_0x523905[_0xc28c('0xb2')]);this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x523905,_0x523905[_0xc28c('0xb2')]);if(this['isConfigured'](_0x523905[_0xc28c('0xd2')])){var _0x7d580a=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x523905['variable_id']);if(_0x7d580a){this[_0xc28c('0x11')]['setVariable'](_0x7d580a,_0x1f25e3);return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x523905['command'],_0x7d580a));}}return this['channel']['noop'](util[_0xc28c('0x2b')](_0xc28c('0x1c4'),_0x523905[_0xc28c('0xb2')]));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1c5')]=function(_0x35d745){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x1c6'),_0x35d745[_0xc28c('0x38')]));_0x35d745[_0xc28c('0x5d')]=_0x35d745[_0xc28c('0x5d')][_0xc28c('0xd0')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xc28c('0xa3')](_0x35d745['apiKey'])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x1c7'));}if(!this[_0xc28c('0xa3')](_0x35d745['text'])){return this['channel']['noop'](_0xc28c('0xe5'));}this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format'](_0xc28c('0x1c8'),_0x35d745[_0xc28c('0x5d')]));var _0x552976=this[_0xc28c('0x5a')]['sync'](this,_0x35d745);if(_0x552976){this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x1c9'),_0x552976));var _0x1895af=this[_0xc28c('0x11')]['streamFile'](_0x552976);try{fs[_0xc28c('0x102')](_0x552976+_0xc28c('0x103'));}catch(_0x87384f){logger[_0xc28c('0x2d')](_0x87384f);}return _0x1895af;}return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x35d745,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0xc28c('0x14')]['tts']=function(_0x40cce9){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1ca'),_0x40cce9[_0xc28c('0x38')]));_0x40cce9[_0xc28c('0x5d')]=_0x40cce9['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x40cce9[_0xc28c('0x5d')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xe5'));}this[_0xc28c('0x11')]['noop'](util['format']('Trying\x20Google\x20TTS\x20%s',_0x40cce9[_0xc28c('0x5d')]));var _0x51d0cb=this[_0xc28c('0x64')]['sync'](this,_0x40cce9);if(_0x51d0cb){this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')](_0xc28c('0x1cb'),_0x51d0cb));var _0xeae246=this[_0xc28c('0x11')][_0xc28c('0x101')](_0x51d0cb);try{fs[_0xc28c('0x102')](_0x51d0cb+_0xc28c('0x103'));}catch(_0x8ad7e1){logger[_0xc28c('0x2d')](_0x8ad7e1);}return _0xeae246;}return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x40cce9,_0xc28c('0x1cc'));};AGIVertices['prototype'][_0xc28c('0x1cd')]=function(_0x7ea72d){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1ce'),_0x7ea72d[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x7ea72d[_0xc28c('0x15a')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x7ea72d,_0xc28c('0x159'));}logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x16b'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x7ea72d[_0xc28c('0x15a')]));var _0x2704c2=this[_0xc28c('0x52')][_0xc28c('0x73')](this,_0x7ea72d[_0xc28c('0x15a')]);if(_0x2704c2){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x15b'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x7ea72d[_0xc28c('0x15a')]));this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xc28c('0x11')]['callerid'],_0x7ea72d[_0xc28c('0x15a')]));return{'code':0xc8,'result':_0xc28c('0x15c')};}else{logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x7ea72d[_0xc28c('0x15a')]));this['channel'][_0xc28c('0xa7')](util['format'](_0xc28c('0x15d'),this['channel'][_0xc28c('0x3a')],_0x7ea72d[_0xc28c('0x15a')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1cf')]=function(_0x42c615){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x1d0'),_0x42c615[_0xc28c('0x38')]));var _0x438092=this[_0xc28c('0x11')][_0xc28c('0xa8')](_0xc28c('0x1d1'),[_0x42c615['mailbox'],_0x42c615['options']]);if(_0x438092['result']===-0x1){return _0x438092;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format'](_0xc28c('0xbe'),_0xc28c('0x1d1'),_0x42c615[_0xc28c('0x1d2')]));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1d3')]=function(_0x514e96){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1d4'),_0x514e96[_0xc28c('0x38')]));if(!this['isConfigured'](_0x514e96[_0xc28c('0xd2')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x514e96,'no\x20variable\x20selected');}var _0xa5dd4c=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x514e96[_0xc28c('0xd2')]);if(!_0xa5dd4c){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x514e96,_0xc28c('0xd4'));}var _0x4b391b=this[_0xc28c('0x11')]['getVariable'](_0xa5dd4c);return{'code':0xc8,'result':_0x4b391b[_0xc28c('0x9f')]?_0x4b391b[_0xc28c('0x9f')]:'-'};};String[_0xc28c('0x14')][_0xc28c('0x1d5')]=function(_0xcb896,_0x229b7d){return this[_0xc28c('0x9d')](_0xcb896)[_0xc28c('0x1d6')](_0x229b7d);};module[_0xc28c('0x1d7')]=AGIVertices;
\ No newline at end of file
+var _0x3d74=['stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','isConfigured','model','awsPolly','aws_access_key_id','Amy','awsLex','aws_secret_access_key','aws_lex_region','googleASR','google_asr_language','appid','appsecret','clear','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','isPlainObject','recursiveNodeIndex','isArray','saveRestApiResult','%s.%s','length','setVariable','split','replaceAll','extra','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','no\x20text\x20configured','MRCPSynth','noop','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','getAndSetVariable','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Wait\x20%s\x20seconds\x20before\x20answer','callback','delay','add','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','lumenvoxtts','lumenvoxasr','MRCPRecog','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','odbc_id','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','getUser','DIAL','SIP/%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','speech','out','no\x20project_id\x20configured','no\x20private_key\x20configured','providerResponse','DIALOGFLOW_%s','dialogflowV2','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','streamFile','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','getTrunk','no\x20trunk\x20found','trunk_name','no\x20trunk\x20selected','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','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','Enter\x20in\x20GOAL\x20(%s)\x20block','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','unlink','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','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','NOBEEP','recordFile','intKey','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','beep','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','EVAL\x20CONDITION\x20%s\x20%s','false','getIntervals','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','Enter\x20in\x20LOGIN\x20(%s)\x20block','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','failure','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','maxRetry','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','PLAYBACK','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','toLowerCase','QUEUE','agi','position','Executed\x20command\x20%s\x20%s','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','variable\x20%s\x20set','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','saynumber','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Smtp','no\x20mail\x20account\x20found','email','user','bcc','service','host','port','secure','authentication','auth','pass','template_id','sendMail\x20message','account_id','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','sms_account_id','no\x20sms\x20account\x20configured','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','no\x20subproject\x20selected','project_id','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','127.0.0.1','system','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','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','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20%s\x20file\x20created','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','path','util','lodash','shelljs','odbc','moment','request-promise','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','getVariable','getVariableById','then','name','catch','getVoiceQueue','getVoiceQueueById','prototype','getSquareOdbc','getSquareOdbcById','getUserById','getTrunkById','getSoundById','getMailAccount','getMailAccountById','sendMailMessage','IntervalId','interval','Intervals','getSoundPath','format','%s/sounds/converted/%s','getQueryOdbc','error','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','extension','priority','accountcode','dnid','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agentUnpause','agent','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','exec','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','restAPI','url','method','timeout','includes','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','headers'];(function(_0x30de7c,_0x47ebde){var _0x40529e=function(_0x44dfc4){while(--_0x44dfc4){_0x30de7c['push'](_0x30de7c['shift']());}};_0x40529e(++_0x47ebde);}(_0x3d74,0x149));var _0x43d7=function(_0x4b1434,_0x882740){_0x4b1434=_0x4b1434-0x0;var _0x1efa17=_0x3d74[_0x4b1434];return _0x1efa17;};'use strict';var fs=require('fs');var path=require(_0x43d7('0x0'));var util=require(_0x43d7('0x1'));var _=require(_0x43d7('0x2'));var sh=require(_0x43d7('0x3'));var odbc=require(_0x43d7('0x4'))();var rs=require('randomstring');var moment=require(_0x43d7('0x5'));var Mustache=require('mustache');var rp=require(_0x43d7('0x6'));var logger=require('../../config/logger')('agi');var config=require(_0x43d7('0x7'));var scripts=require(_0x43d7('0x8'));var FILES_PATH=_0x43d7('0x9');var recursiveMapAttributes=[_0x43d7('0xa'),_0x43d7('0xb')];var verticesWithRetry=[_0x43d7('0xc'),_0x43d7('0xd'),_0x43d7('0xe')];var AGIVertices=function(_0x27a691,_0x38da85,_0x5048ec){this[_0x43d7('0xf')]=_0x27a691;this[_0x43d7('0x10')]=_0x38da85;this[_0x43d7('0x11')]=_0x5048ec;};AGIVertices['prototype'][_0x43d7('0x12')]=function(_0x2d90c6,_0x583310){this[_0x43d7('0x10')][_0x43d7('0x13')](_0x2d90c6)[_0x43d7('0x14')](function(_0x465ebd){_0x583310(null,_0x465ebd?_0x465ebd[_0x43d7('0x15')]:![]);})[_0x43d7('0x16')](function(_0x2a0c64){_0x583310(_0x2a0c64);});};AGIVertices['prototype'][_0x43d7('0x17')]=function(_0x18b362,_0x1f98bf){this[_0x43d7('0x10')][_0x43d7('0x18')](_0x18b362)[_0x43d7('0x14')](function(_0x4bbeb5){_0x1f98bf(null,_0x4bbeb5?_0x4bbeb5[_0x43d7('0x15')]:![]);})[_0x43d7('0x16')](function(_0x473013){_0x1f98bf(_0x473013);});};AGIVertices[_0x43d7('0x19')]['getSquareProject']=function(_0x54093f,_0x46bae2){this[_0x43d7('0x10')]['getSquareProjectById'](_0x54093f)[_0x43d7('0x14')](function(_0x4e6fad){_0x46bae2(null,_0x4e6fad?_0x4e6fad[_0x43d7('0x15')]:![]);})['catch'](function(_0x7aafbd){_0x46bae2(_0x7aafbd);});};AGIVertices['prototype'][_0x43d7('0x1a')]=function(_0x35c493,_0x15abb4){this[_0x43d7('0x10')][_0x43d7('0x1b')](_0x35c493)[_0x43d7('0x14')](function(_0x453fe5){_0x15abb4(null,_0x453fe5?_0x453fe5['dsn']:![]);})[_0x43d7('0x16')](function(_0x15529f){_0x15abb4(_0x15529f);});};AGIVertices['prototype']['getUser']=function(_0xf1b8d2,_0x47591c){this['rpc'][_0x43d7('0x1c')](_0xf1b8d2)[_0x43d7('0x14')](function(_0x32b01b){_0x47591c(null,_0x32b01b?_0x32b01b['name']:![]);})[_0x43d7('0x16')](function(_0x48b929){_0x47591c(_0x48b929);});};AGIVertices['prototype']['getTrunk']=function(_0x26b57e,_0x89dd6a){this['rpc'][_0x43d7('0x1d')](_0x26b57e)[_0x43d7('0x14')](function(_0x33d6a7){_0x89dd6a(null,_0x33d6a7?_0x33d6a7[_0x43d7('0x15')]:![]);})['catch'](function(_0x58819d){_0x89dd6a(_0x58819d);});};AGIVertices[_0x43d7('0x19')]['getSound']=function(_0x295e46,_0x31efd3){var _0x1a8fd3=this;this[_0x43d7('0x10')][_0x43d7('0x1e')](_0x295e46)[_0x43d7('0x14')](function(_0x32fe00){_0x31efd3(null,_0x32fe00?_0x1a8fd3['getSoundPath'](_0x32fe00['save_name']):![]);})['catch'](function(_0x58118d){_0x31efd3(_0x58118d);});};AGIVertices['prototype'][_0x43d7('0x1f')]=function(_0xda64b9,_0x28f04f){this[_0x43d7('0x10')][_0x43d7('0x20')](_0xda64b9)[_0x43d7('0x14')](function(_0x443f79){_0x28f04f(null,_0x443f79?_0x443f79:![]);})[_0x43d7('0x16')](function(_0x2d4b5a){_0x28f04f(_0x2d4b5a);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x21')]=function(_0x44a3f4,_0x14f364,_0x299184){this[_0x43d7('0x11')]['sendMailMessage'](_0x44a3f4,_0x14f364)[_0x43d7('0x14')](function(){_0x299184(null);})[_0x43d7('0x16')](function(_0x43ec7a){_0x299184(_0x43ec7a);});};AGIVertices[_0x43d7('0x19')]['getIntervals']=function(_0x53535e,_0x5e19a3){this[_0x43d7('0x10')]['getIntervalById'](_0x53535e)[_0x43d7('0x14')](function(_0x28101c){if(_0x28101c){if(_0x28101c[_0x43d7('0x22')]){_0x5e19a3(null,[_0x28101c[_0x43d7('0x23')]]);}else{_0x5e19a3(null,_['map'](_0x28101c[_0x43d7('0x24')],_0x43d7('0x23')));}}else{_0x5e19a3(null,![]);}})['catch'](function(_0x5d5588){_0x5e19a3(_0x5d5588);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x25')]=function(_0x1c087d){return util[_0x43d7('0x26')](_0x43d7('0x27'),FILES_PATH,_0x1c087d);};AGIVertices[_0x43d7('0x19')][_0x43d7('0x28')]=function(_0x12de33,_0x1081a8,_0x200689){odbc['open'](_0x12de33,function(_0x1be345){if(_0x1be345){logger[_0x43d7('0x29')]('Error\x20getting\x20ODBC\x20connection\x20%s',_0x1be345);_0x200689(_0x1be345);}else{logger[_0x43d7('0x2a')](_0x43d7('0x2b'));odbc[_0x43d7('0x2c')](_0x1081a8,function(_0x238665,_0x2878b4){if(_0x238665){logger[_0x43d7('0x2a')](_0x43d7('0x2d'),_0x1081a8);_0x200689(_0x238665);}else{logger[_0x43d7('0x2a')](_0x43d7('0x2e'),_0x1081a8);odbc[_0x43d7('0x2f')](function(_0x3f488f){if(_0x3f488f){logger[_0x43d7('0x29')](_0x43d7('0x30'),_0x3f488f);}_0x200689(null,_0x2878b4);});}});}});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x31')]=function(_0x2d79aa,_0x120b91){this[_0x43d7('0x10')]['getSmsAccountById'](_0x2d79aa)['then'](function(_0x159cae){_0x120b91(null,_0x159cae?_0x159cae:![]);})[_0x43d7('0x16')](function(_0xef5715){_0x120b91(_0xef5715);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x32')]=function(_0x57e88e,_0x40da90){this[_0x43d7('0x10')][_0x43d7('0x32')](_0x57e88e)[_0x43d7('0x14')](function(_0x340b5d){_0x40da90(null,_0x340b5d);})[_0x43d7('0x16')](function(_0x8e7fc2){_0x40da90(_0x8e7fc2);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x33')]=function(_0x1dfb7b,_0x237ee4,_0x5bf4b6){this['rpc'][_0x43d7('0x33')]({'uniqueid':this[_0x43d7('0xf')][_0x43d7('0x34')],'node':_0x1dfb7b[_0x43d7('0x35')],'application':_0x1dfb7b[_0x43d7('0x36')],'data':_0x237ee4||null,'project_name':this['channel'][_0x43d7('0x37')],'callerid':this['channel'][_0x43d7('0x38')]})[_0x43d7('0x14')](function(_0x1afffa){if(_0x5bf4b6){_0x5bf4b6(null,_0x1afffa);}})[_0x43d7('0x16')](function(_0x526e0e){if(_0x5bf4b6){_0x5bf4b6(_0x526e0e);}});};AGIVertices['prototype'][_0x43d7('0x39')]=function(_0x5d4448,_0x2ed23a,_0x4c7618,_0x9059ce){this[_0x43d7('0x10')][_0x43d7('0x39')]({'uniqueid':this[_0x43d7('0xf')]['uniqueid'],'callerid':this['channel'][_0x43d7('0x38')],'calleridname':this['channel'][_0x43d7('0x3a')],'context':this[_0x43d7('0xf')]['context'],'extension':this['channel'][_0x43d7('0x3b')],'priority':this[_0x43d7('0xf')][_0x43d7('0x3c')],'accountcode':this[_0x43d7('0xf')][_0x43d7('0x3d')],'dnid':this[_0x43d7('0xf')][_0x43d7('0x3e')],'projectName':this[_0x43d7('0xf')][_0x43d7('0x37')],'saveName':_0x2ed23a,'filename':_0x5d4448['file']||_0x2ed23a,'savePath':_0x4c7618})[_0x43d7('0x14')](function(_0x25ff6c){_0x9059ce(null,_0x25ff6c);})[_0x43d7('0x16')](function(_0x3e7c31){_0x9059ce(_0x3e7c31);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x3f')]=function(_0x529386,_0xbc0624,_0x4ade98,_0x59ac88,_0x44a686){this[_0x43d7('0x10')][_0x43d7('0x3f')]({'uniqueid':this[_0x43d7('0xf')][_0x43d7('0x34')],'body':_0x529386,'direction':_0xbc0624,'providerName':_0x4ade98,'providerResponse':_0x59ac88})['then'](function(_0xb2d951){if(_0x44a686){_0x44a686(null,_0xb2d951);}})[_0x43d7('0x16')](function(_0x4627c9){if(_0x44a686){_0x44a686(_0x4627c9);}});};AGIVertices[_0x43d7('0x19')]['createCmContact']=function(_0x23900,_0x7a084f){this['rpc'][_0x43d7('0x40')]({'firstName':_[_0x43d7('0x41')](_0x23900[_0x43d7('0x15')])||_[_0x43d7('0x42')](_0x23900['name'])?_0x43d7('0x43')+Math[_0x43d7('0x44')]():_0x23900[_0x43d7('0x15')],'lastName':_[_0x43d7('0x41')](_0x23900[_0x43d7('0x45')])||_[_0x43d7('0x42')](_0x23900[_0x43d7('0x45')])?null:_0x23900[_0x43d7('0x45')],'phone':_0x23900[_0x43d7('0x46')],'ListId':_0x23900[_0x43d7('0x47')],'scheduledat':_0x23900[_0x43d7('0x48')],'callbackUniqueid':this['channel']['uniqueid'],'tags':'callback','description':_0x43d7('0x49')+_0x23900[_0x43d7('0x48')][_0x43d7('0x4a')](),'priority':_0x23900[_0x43d7('0x4b')]})[_0x43d7('0x14')](function(_0x132b5b){_0x7a084f(null,_0x132b5b);})['catch'](function(_0x34769e){_0x7a084f(_0x34769e);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x4c')]=function(_0x1029d8,_0x1c1a75){this[_0x43d7('0x10')][_0x43d7('0x4d')](_0x1029d8)[_0x43d7('0x14')](function(_0xbff376){_0x1c1a75(null,_0xbff376?_0xbff376[_0x43d7('0x15')]:![]);})[_0x43d7('0x16')](function(_0x9109ff){_0x1c1a75(_0x9109ff);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x4e')]=function(_0x3fb8d2,_0x10de3b,_0x5945f1){var _0x57121f={'role':'agent'};_0x57121f[_0x3fb8d2]=this['channel'][_0x43d7('0x38')];this[_0x43d7('0x10')]['agentPause'](_0x57121f,_0x10de3b,this['channel'][_0x43d7('0x34')])[_0x43d7('0x14')](function(_0xc64149){_0x5945f1(null,_['isNil'](_0xc64149)?![]:!![]);})['catch'](function(_0x103e1f){logger[_0x43d7('0x29')](_0x103e1f);_0x5945f1(null,![]);});};AGIVertices['prototype'][_0x43d7('0x4f')]=function(_0x32bd6c,_0x3cda21){var _0x353917={'role':_0x43d7('0x50')};_0x353917[_0x32bd6c]=this[_0x43d7('0xf')][_0x43d7('0x38')];this[_0x43d7('0x10')][_0x43d7('0x4f')](_0x353917)[_0x43d7('0x14')](function(_0xbef03f){_0x3cda21(null,_[_0x43d7('0x42')](_0xbef03f)?![]:!![]);})[_0x43d7('0x16')](function(_0x52c2f9){logger[_0x43d7('0x29')](_0x52c2f9);_0x3cda21(null,![]);});};AGIVertices[_0x43d7('0x19')]['agentLogout']=function(_0x231172,_0x4dbc63){var _0x27137c={'role':_0x43d7('0x50')};_0x27137c[_0x231172]=this['channel'][_0x43d7('0x38')];this['rpc'][_0x43d7('0x51')](_0x27137c)[_0x43d7('0x14')](function(_0x2266da){_0x4dbc63(null,_[_0x43d7('0x42')](_0x2266da)?![]:!![]);})[_0x43d7('0x16')](function(_0x2f654a){logger[_0x43d7('0x29')](_0x2f654a);_0x4dbc63(null,![]);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x52')]=function(_0x5519d7,_0x109e13){var _0xa7b25f={'role':_0x43d7('0x50')};_0xa7b25f[_0x5519d7]=this['channel'][_0x43d7('0x38')];var _0x5055a2=_0x5519d7!=_0x43d7('0x53')?util[_0x43d7('0x26')](_0x43d7('0x54'),_0x43d7('0x55'),this['channel'][_0x43d7('0x38')]):undefined;this[_0x43d7('0x10')]['agentLogin'](_0xa7b25f,_0x5055a2)[_0x43d7('0x14')](function(_0x1892d5){_0x109e13(null,_['isNil'](_0x1892d5)?![]:!![]);})['catch'](function(_0x488a20){logger['error'](_0x488a20);_0x109e13(null,![]);});};AGIVertices['prototype'][_0x43d7('0x56')]=function(_0x4440f5,_0x5a38a0){sh[_0x43d7('0x57')](_['trim'](_0x4440f5),function(_0x28c46e,_0x52565d){var _0xc120dd=_0x52565d[_0x43d7('0x58')](/(\r\n|\n|\r)/gm,'');_0x5a38a0(null,_0xc120dd);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x59')]=function(_0x13c87a,_0x2ceb6d){scripts[_0x43d7('0x59')](_0x13c87a[_0x43d7('0x5a')],_0x13c87a[_0x43d7('0x5b')]||_0x43d7('0x5c'),_0x13c87a[_0x43d7('0x5c')],_0x13c87a[_0x43d7('0x5d')]||_0x43d7('0x5e'),_0x13c87a[_0x43d7('0x5f')]||_0x43d7('0x60'),_0x13c87a[_0x43d7('0x61')]||_0x43d7('0x62'))[_0x43d7('0x14')](function(_0x4f4fec){_0x2ceb6d(null,_0x4f4fec);})[_0x43d7('0x16')](function(_0x5bb0b9){_0x2ceb6d(_0x5bb0b9);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x63')]=function(_0x2dbbea,_0x490858){scripts[_0x43d7('0x63')](_0x2dbbea[_0x43d7('0x5c')],_0x2dbbea['google_tts_language']||'en',0x1)[_0x43d7('0x14')](function(_0x450b69){_0x490858(null,_0x450b69);})[_0x43d7('0x16')](function(_0x4e84e9){_0x490858(_0x4e84e9);});};AGIVertices['prototype'][_0x43d7('0x64')]=function(_0x342e63,_0x228960){var _0x1f382f={'uri':_0x342e63[_0x43d7('0x65')],'method':_0x342e63[_0x43d7('0x66')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x342e63[_0x43d7('0x67')])==='number'&&parseInt(_0x342e63[_0x43d7('0x67')])>=0x1?parseInt(_0x342e63[_0x43d7('0x67')])*0x3e8:0x5*0x3e8};if(_[_0x43d7('0x68')](['POST',_0x43d7('0x69')],_0x1f382f[_0x43d7('0x66')][_0x43d7('0x6a')]())){try{_0x1f382f[_0x43d7('0x6b')]=_0x342e63[_0x43d7('0xb')]?JSON[_0x43d7('0x6c')](_0x342e63[_0x43d7('0xb')]):{};}catch(_0x541c54){logger['error'](_0x43d7('0x6d'),_0x541c54);}}try{_0x1f382f['headers']=_0x342e63[_0x43d7('0xa')]?JSON[_0x43d7('0x6c')](_0x342e63[_0x43d7('0xa')]):{};}catch(_0x31f052){logger['error'](_0x43d7('0x6e'),_0x31f052);}if(_0x342e63[_0x43d7('0x6f')]){try{var _0x7f12cf=require(_0x342e63[_0x43d7('0x6f')])[_0x43d7('0x70')](this,_0x1f382f);_0x1f382f[_0x43d7('0x71')]=Mustache[_0x43d7('0x72')](_0x342e63[_0x43d7('0x65')],_0x7f12cf,{},['$$','$$']);if(_0x1f382f[_0x43d7('0x73')]){_0x1f382f['headers']=JSON[_0x43d7('0x6c')](Mustache[_0x43d7('0x72')](JSON[_0x43d7('0x74')](_0x1f382f[_0x43d7('0x73')]),_0x7f12cf,{},['$$','$$']));}if(_0x1f382f['body']){_0x1f382f[_0x43d7('0x6b')]=JSON[_0x43d7('0x6c')](Mustache[_0x43d7('0x72')](JSON['stringify'](_0x1f382f[_0x43d7('0x6b')]),_0x7f12cf,{},['$$','$$']));}}catch(_0x2d9868){logger[_0x43d7('0x29')](_0x43d7('0x75'),_0x2d9868);}}rp(_0x1f382f)[_0x43d7('0x14')](function(_0x5750b4){var _0x2a7a50={'statusCode':_0x5750b4[_0x43d7('0x76')]||0xc8,'statusMessage':_0x5750b4[_0x43d7('0x77')]||'OK','headers':_0x5750b4[_0x43d7('0x73')]||{},'body':_0x5750b4[_0x43d7('0x6b')]||{}};_0x228960(null,_0x2a7a50);})[_0x43d7('0x16')](function(_0x39f05f){var _0x964bf4={'statusCode':_0x39f05f[_0x43d7('0x76')]||0x1f4,'statusMessage':_0x39f05f[_0x43d7('0x78')]||_0x43d7('0x79'),'headers':_0x39f05f[_0x43d7('0x7a')][_0x43d7('0x73')]||{},'body':_0x39f05f[_0x43d7('0x7a')]['body']||{}};_0x228960(null,_0x964bf4);});};AGIVertices['prototype'][_0x43d7('0x7b')]=function(_0x5f6a78,_0x3075b5){scripts[_0x43d7('0x7b')](this[_0x43d7('0xf')]['uniqueid'],_0x5f6a78[_0x43d7('0x7c')],_0x5f6a78[_0x43d7('0x5c')],_0x5f6a78['dialogflow_language']||'en')[_0x43d7('0x14')](function(_0x511157){_0x3075b5(null,_0x511157);})[_0x43d7('0x16')](function(_0x116180){_0x3075b5(_0x116180);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x7d')]=function(_0x2c59f2,_0x2f4c8f){scripts[_0x43d7('0x7d')](this[_0x43d7('0xf')][_0x43d7('0x34')],_0x2c59f2[_0x43d7('0x7e')],_0x2c59f2[_0x43d7('0x7f')],_0x2c59f2[_0x43d7('0x80')],_0x2c59f2[_0x43d7('0x5c')],_0x2c59f2[_0x43d7('0x81')]||'en')['then'](function(_0x5f452c){_0x2f4c8f(null,_0x5f452c);})[_0x43d7('0x16')](function(_0x5f1c01){_0x2f4c8f(_0x5f1c01);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x82')]=function(_0x1e5cf2,_0x15d7ec){scripts[_0x43d7('0x82')](this[_0x43d7('0xf')],_0x1e5cf2)[_0x43d7('0x14')](function(_0x44057d){_0x15d7ec(null,_0x44057d);})[_0x43d7('0x16')](function(_0x36aa00){_0x15d7ec(_0x36aa00);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x83')]=function(_0x3d3fe1,_0x4eddfc){scripts[_0x43d7('0x83')](_0x3d3fe1[_0x43d7('0x7c')],_0x3d3fe1['text'],_0x3d3fe1[_0x43d7('0x84')]||_0x43d7('0x5e'),_0x3d3fe1[_0x43d7('0x85')])[_0x43d7('0x14')](function(_0x432456){_0x4eddfc(null,_0x432456);})['catch'](function(_0x474190){_0x4eddfc(_0x474190);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x86')]=function(_0x27ae2f,_0x5df194,_0x3e1217){scripts['ispeechASR'](_0x5df194,_0x27ae2f[_0x43d7('0x7c')],_0x27ae2f['ispeech_asr_language']||_0x43d7('0x5e'),this[_0x43d7('0x87')](_0x27ae2f[_0x43d7('0x88')])?_0x27ae2f[_0x43d7('0x88')]:undefined)[_0x43d7('0x14')](function(_0x2232e4){_0x3e1217(null,_0x2232e4);})[_0x43d7('0x16')](function(_0xc5ed22){_0x3e1217(_0xc5ed22);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x89')]=function(_0x51a63d,_0x14377c){scripts['awsPolly'](_0x51a63d[_0x43d7('0x8a')],_0x51a63d['aws_secret_access_key'],_0x51a63d['aws_polly_region'],_0x51a63d['aws_polly_voice']||_0x43d7('0x8b'),_0x51a63d[_0x43d7('0x5c')],_0x51a63d['aws_text_type']||'text')[_0x43d7('0x14')](function(_0x184c8b){_0x14377c(null,_0x184c8b);})[_0x43d7('0x16')](function(_0x349db2){_0x14377c(_0x349db2);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x8c')]=function(_0x394279,_0xef6321){scripts[_0x43d7('0x8c')](this['channel'][_0x43d7('0x34')],_0x394279[_0x43d7('0x8a')],_0x394279[_0x43d7('0x8d')],_0x394279[_0x43d7('0x8e')],_0x394279['text'],_0x394279['aws_bot_name'])['then'](function(_0x18fd1c){_0xef6321(null,_0x18fd1c);})[_0x43d7('0x16')](function(_0x7684b4){_0xef6321(_0x7684b4);});};AGIVertices[_0x43d7('0x19')]['googleASR']=function(_0x40805d,_0x1e3460,_0x32bf5b){scripts[_0x43d7('0x8f')](_0x1e3460,_0x40805d[_0x43d7('0x7c')],_0x40805d[_0x43d7('0x90')]||'en-US')['then'](function(_0x33cc20){_0x32bf5b(null,_0x33cc20);})[_0x43d7('0x16')](function(_0x1ea3f4){_0x32bf5b(_0x1ea3f4);});};AGIVertices['prototype']['tildeASR']=function(_0x5ddaca,_0xd58cfb,_0x2d89f0){scripts['tildeASR'](_0xd58cfb,_0x5ddaca[_0x43d7('0x91')],_0x5ddaca[_0x43d7('0x92')],_0x5ddaca[_0x43d7('0x71')])[_0x43d7('0x14')](function(_0x47fd88){_0x2d89f0(null,_0x47fd88);})[_0x43d7('0x16')](function(_0x219120){_0x2d89f0(_0x219120);});};AGIVertices[_0x43d7('0x19')][_0x43d7('0x93')]=function(_0x150fab){var _0x8efa99=_[_0x43d7('0x68')](verticesWithRetry,_0x150fab[_0x43d7('0x36')])?_0x150fab:_[_0x43d7('0x94')](_0x150fab);for(var _0x388958 in _0x8efa99){if(_0x8efa99[_0x43d7('0x95')](_0x388958)){if(_0x8efa99[_0x388958]&&_[_0x43d7('0x96')](_0x8efa99[_0x388958])){if(_[_0x43d7('0x68')](recursiveMapAttributes,_0x388958)){_0x8efa99[_0x388958]=this[_0x43d7('0x97')](_0x8efa99[_0x388958]);}else{_0x8efa99[_0x388958]=this[_0x43d7('0x98')](_0x8efa99[_0x388958]);}}}}return _0x8efa99;};AGIVertices['prototype']['recursiveNodeIndex']=function(_0x1da0e0){for(var _0x421555 in _0x1da0e0){if(_0x1da0e0['hasOwnProperty'](_0x421555)){if(_[_0x43d7('0x99')](_0x1da0e0[_0x421555])){this[_0x43d7('0x9a')](_0x1da0e0[_0x421555]);}else if(_[_0x43d7('0x9b')](_0x1da0e0[_0x421555])){for(var _0x971989=0x0;_0x971989<_0x1da0e0[_0x421555]['length'];_0x971989++){this['recursiveNodeIndex'](_0x1da0e0[_0x421555][_0x971989]);}}else if(_[_0x43d7('0x96')](_0x1da0e0[_0x421555])){_0x1da0e0[_0x421555]=this[_0x43d7('0x98')](_0x1da0e0[_0x421555]);}}}};AGIVertices[_0x43d7('0x19')]['saveRestApiResult']=function(_0x76fc98,_0x2c540d){for(var _0x5dcac9 in _0x76fc98){if(_0x76fc98[_0x43d7('0x95')](_0x5dcac9)){if(_[_0x43d7('0x99')](_0x76fc98[_0x5dcac9])){if(!_[_0x43d7('0x41')](_0x76fc98[_0x5dcac9])){this[_0x43d7('0x9c')](_0x76fc98[_0x5dcac9],util['format'](_0x43d7('0x9d'),_0x2c540d,_0x5dcac9));}}else if(_['isArray'](_0x76fc98[_0x5dcac9])){for(var _0x4a0dfe=0x0;_0x4a0dfe<_0x76fc98[_0x5dcac9][_0x43d7('0x9e')];_0x4a0dfe++){this['saveRestApiResult'](_0x76fc98[_0x5dcac9][_0x4a0dfe],util[_0x43d7('0x26')](_0x43d7('0x9d'),_0x2c540d,_0x5dcac9+'['+_0x4a0dfe+']'));}}else{if(!_[_0x43d7('0x42')](_0x76fc98[_0x5dcac9])){this[_0x43d7('0xf')][_0x43d7('0x9f')](util[_0x43d7('0x26')]('%s.%s',_0x2c540d,_0x5dcac9),_0x76fc98[_0x5dcac9]);}}}}};AGIVertices[_0x43d7('0x19')]['replaceObjectAllVariables']=function(_0x134e50){try{var _0x4eb71d=JSON[_0x43d7('0x6c')](_0x134e50);this[_0x43d7('0x9a')](_0x4eb71d);return JSON['stringify'](_0x4eb71d);}catch(_0x2b2fe4){return this['replaceAllVariables'](_0x134e50);}};AGIVertices[_0x43d7('0x19')][_0x43d7('0x98')]=function(_0x590832){var _0x25cf66=_0x590832[_0x43d7('0xa0')]('{');for(var _0x46ae6e=0x1;_0x46ae6e<_0x25cf66['length'];_0x46ae6e+=0x1){var _0x5d5ab9=_0x25cf66[_0x46ae6e][_0x43d7('0xa0')]('}');if(_0x5d5ab9[_0x43d7('0x9e')]>0x1){_0x590832=_0x590832[_0x43d7('0xa1')]('{'+_0x5d5ab9[0x0]+'}',this['channel'][_0x43d7('0x12')](_0x5d5ab9[0x0])[_0x43d7('0xa2')]||_0x5d5ab9[0x0]);}}if(_0x25cf66['length']===0x1){return _0x590832['toString']();}return this[_0x43d7('0x98')](_0x590832);};AGIVertices[_0x43d7('0x19')]['getAndSetVariable']=function(_0x1d1312,_0x311ed9){var _0x7a0b88=this[_0x43d7('0xf')]['getVariable'](_0x1d1312);if(_0x7a0b88[_0x43d7('0xa3')]===-0x1){return _0x7a0b88;}logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0xa4'),_0x311ed9,_0x7a0b88[_0x43d7('0xa2')]));return this[_0x43d7('0xf')][_0x43d7('0x9f')](_0x311ed9,_0x7a0b88['extra']);};AGIVertices[_0x43d7('0x19')][_0x43d7('0x87')]=function(_0x5dc73b){return _0x5dc73b&&_0x5dc73b!=='0'&&_0x5dc73b!=='-1'&&_0x5dc73b!=='';};AGIVertices[_0x43d7('0x19')]['maxRetry']=function(_0x368779){this['createSquareDetailsReport'][_0x43d7('0x70')](this,_0x368779,'-');_0x368779[_0x43d7('0xa5')]=_0x368779['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0x43d7('0x19')][_0x43d7('0xa6')]=function(_0xa83e13){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0xa7'),_0xa83e13[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0xa83e13[_0x43d7('0x5c')])){return this[_0x43d7('0xf')]['noop'](_0x43d7('0xa8'));}var _0x4281a6='\x22'+_0xa83e13[_0x43d7('0x5c')]+'\x22';if(this[_0x43d7('0x87')](_0xa83e13[_0x43d7('0x7a')])){_0x4281a6+=','+_0xa83e13['options'];}var _0x32d344=this[_0x43d7('0xf')]['exec'](_0x43d7('0xa9'),_0x4281a6);if(_0x32d344[_0x43d7('0xa3')]===-0x1){return _0x32d344;}return this['channel'][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0xab'),_0x4281a6));};AGIVertices[_0x43d7('0x19')][_0x43d7('0xac')]=function(_0x4e79f5){logger['info'](util[_0x43d7('0x26')](_0x43d7('0xad'),_0x4e79f5[_0x43d7('0x35')]));if(!this['isConfigured'](_0x4e79f5[_0x43d7('0xae')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0xaf'));}var _0xb33636=_0x4e79f5['grammar'];if(this[_0x43d7('0x87')](_0x4e79f5['options'])){_0xb33636+=','+_0x4e79f5[_0x43d7('0x7a')];}var _0x5b70ff=this[_0x43d7('0xf')]['exec']('MRCPRecog',_0xb33636);if(_0x5b70ff[_0x43d7('0xa3')]===-0x1){return _0x5b70ff;}var _0x420cfc=this[_0x43d7('0xb0')](_0x43d7('0xb1'),_0x43d7('0xb2'));if(_0x420cfc[_0x43d7('0xa3')]===-0x1){return _0x420cfc;}var _0x5d23f5=this[_0x43d7('0xb0')](_0x43d7('0xb3'),'MRCP_RECOG_TRANSCRIPT');if(_0x5d23f5[_0x43d7('0xa3')]===-0x1){return _0x5d23f5;}var _0x108593=this[_0x43d7('0xb0')](_0x43d7('0xb4'),'MRCP_RECOG_INSTANCE');if(_0x108593[_0x43d7('0xa3')]===-0x1){return _0x108593;}return this[_0x43d7('0xf')]['noop'](util['format'](_0x43d7('0xb5'),_0xb33636));};AGIVertices[_0x43d7('0x19')]['agi']=function(_0x5a3b4f){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0xb6'),_0x5a3b4f[_0x43d7('0x35')]));return this['channel']['agi']([_0x5a3b4f[_0x43d7('0xb7')],_0x5a3b4f[_0x43d7('0xb8')]]);};AGIVertices[_0x43d7('0x19')][_0x43d7('0xb9')]=function(_0x5eb2a2){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x5eb2a2['label']));if(this['isConfigured'](_0x5eb2a2[_0x43d7('0x67')])){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0xba'),_0x5eb2a2['timeout']));var _0x537c8d=this[_0x43d7('0xf')]['wait'](_0x5eb2a2[_0x43d7('0x67')]);if(_0x537c8d[_0x43d7('0xa3')]===-0x1){return _0x537c8d;}}return this[_0x43d7('0xf')][_0x43d7('0xb9')]();};AGIVertices[_0x43d7('0x19')][_0x43d7('0xbb')]=function(_0x13a977){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')]('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x13a977[_0x43d7('0x35')]));if(!this['isConfigured'](_0x13a977[_0x43d7('0x47')])){return this['channel'][_0x43d7('0x29')](_0x13a977,'no\x20list\x20selected');}_0x13a977[_0x43d7('0x48')]=moment();if(this[_0x43d7('0x87')](_0x13a977[_0x43d7('0xbc')])){_0x13a977[_0x43d7('0x48')]=moment()[_0x43d7('0xbd')](_0x13a977[_0x43d7('0xbc')],_0x43d7('0xbe'));}if(!this[_0x43d7('0x87')](_0x13a977['callback_priority'])){_0x13a977['callback_priority']=0x2;}this[_0x43d7('0x40')][_0x43d7('0x70')](this,_0x13a977);return this[_0x43d7('0xf')]['noop'](util[_0x43d7('0x26')](_0x43d7('0xbf'),_0x13a977[_0x43d7('0x46')],_0x13a977['list_id'],_0x13a977[_0x43d7('0x48')]));};AGIVertices[_0x43d7('0x19')][_0x43d7('0xc0')]=function(_0x5120be){logger[_0x43d7('0x2a')](util['format'](_0x43d7('0xc1'),_0x5120be[_0x43d7('0x35')]));var _0x588f06=this[_0x43d7('0xf')]['exec'](_0x5120be[_0x43d7('0xc2')],_0x5120be[_0x43d7('0x7a')]);if(_0x588f06[_0x43d7('0xa3')]===-0x1){return _0x588f06;}return this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')]('Executed\x20command\x20%s\x20%s',_0x5120be[_0x43d7('0xc2')],_0x5120be[_0x43d7('0x7a')]));};AGIVertices[_0x43d7('0x19')][_0x43d7('0xc3')]=function(_0x2b2aaf){logger['info'](util[_0x43d7('0x26')]('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0x2b2aaf[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x2b2aaf[_0x43d7('0x5c')])){return this['channel'][_0x43d7('0xaa')](_0x43d7('0xa8'));}var _0x52146d='\x22'+_0x2b2aaf[_0x43d7('0x5c')]+'\x22';if(this[_0x43d7('0x87')](_0x2b2aaf[_0x43d7('0x7a')])){_0x52146d+=','+_0x2b2aaf[_0x43d7('0x7a')];}var _0x19b203=this[_0x43d7('0xf')][_0x43d7('0x57')](_0x43d7('0xa9'),_0x52146d);if(_0x19b203[_0x43d7('0xa3')]===-0x1){return _0x19b203;}return this[_0x43d7('0xf')]['noop'](util[_0x43d7('0x26')](_0x43d7('0xab'),_0x52146d));};AGIVertices[_0x43d7('0x19')]['sestektts']=function(_0x1de620){logger['info'](util[_0x43d7('0x26')]('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x1de620[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x1de620[_0x43d7('0x5c')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0xa8'));}var _0x9485b3='\x22'+_0x1de620['text']+'\x22';if(this[_0x43d7('0x87')](_0x1de620['options'])){_0x9485b3+=','+_0x1de620[_0x43d7('0x7a')];}var _0x2943fe=this[_0x43d7('0xf')]['exec'](_0x43d7('0xa9'),_0x9485b3);if(_0x2943fe[_0x43d7('0xa3')]===-0x1){return _0x2943fe;}return this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0xab'),_0x9485b3));};AGIVertices['prototype'][_0x43d7('0xc4')]=function(_0x3b8839){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x3b8839['label']));if(!this[_0x43d7('0x87')](_0x3b8839[_0x43d7('0xae')])){return this[_0x43d7('0xf')]['noop'](_0x43d7('0xaf'));}var _0x3f2569=_0x3b8839[_0x43d7('0xae')];if(this[_0x43d7('0x87')](_0x3b8839['options'])){_0x3f2569+=','+_0x3b8839[_0x43d7('0x7a')];}var _0x23176b=this[_0x43d7('0xf')][_0x43d7('0x57')](_0x43d7('0xc5'),_0x3f2569);if(_0x23176b[_0x43d7('0xa3')]===-0x1){return _0x23176b;}var _0x55fd79=this[_0x43d7('0xb0')](_0x43d7('0xb1'),'LUMENVOX_ASR_CONFIDENCE');if(_0x55fd79[_0x43d7('0xa3')]===-0x1){return _0x55fd79;}var _0x20571d=this[_0x43d7('0xb0')](_0x43d7('0xb3'),_0x43d7('0xc6'));if(_0x20571d[_0x43d7('0xa3')]===-0x1){return _0x20571d;}var _0x2398e7=this['getAndSetVariable'](_0x43d7('0xb4'),_0x43d7('0xc7'));if(_0x2398e7[_0x43d7('0xa3')]===-0x1){return _0x2398e7;}return this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0xb5'),_0x3f2569));};AGIVertices['prototype'][_0x43d7('0xc8')]=function(_0x2f72f8){logger['info'](util[_0x43d7('0x26')](_0x43d7('0xc9'),_0x2f72f8[_0x43d7('0x35')]));if(!this['isConfigured'](_0x2f72f8[_0x43d7('0xae')])){return this['channel'][_0x43d7('0xaa')]('no\x20grammar\x20configured');}var _0x4c2c09=_0x2f72f8[_0x43d7('0xae')];if(this[_0x43d7('0x87')](_0x2f72f8['options'])){_0x4c2c09+=','+_0x2f72f8[_0x43d7('0x7a')];}var _0xfd7927=this['channel'][_0x43d7('0x57')](_0x43d7('0xc5'),_0x4c2c09);if(_0xfd7927[_0x43d7('0xa3')]===-0x1){return _0xfd7927;}var _0x3bc220=this[_0x43d7('0xb0')](_0x43d7('0xb1'),'SESTEK_ASR_CONFIDENCE');if(_0x3bc220[_0x43d7('0xa3')]===-0x1){return _0x3bc220;}var _0x34b35a=this[_0x43d7('0xb0')]('RECOG_INPUT()',_0x43d7('0xca'));if(_0x34b35a[_0x43d7('0xa3')]===-0x1){return _0x34b35a;}var _0x485c19=this[_0x43d7('0xb0')]('RECOG_INSTANCE()',_0x43d7('0xcb'));if(_0x485c19[_0x43d7('0xa3')]===-0x1){return _0x485c19;}return this[_0x43d7('0xf')][_0x43d7('0xaa')](util['format']('Executed\x20command\x20MRCPRecog\x20%s',_0x4c2c09));};AGIVertices['prototype']['database']=function(_0x341852){logger['info'](util[_0x43d7('0x26')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x341852[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x341852['odbc_id'])){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x341852,'no\x20database\x20selected');}var _0x49379c=this['getSquareOdbc'][_0x43d7('0x70')](this,_0x341852[_0x43d7('0xcc')]);if(!_0x49379c){return this['channel'][_0x43d7('0x29')](_0x341852,_0x43d7('0xcd'));}if(!this[_0x43d7('0x87')](_0x341852[_0x43d7('0x2c')])){return this['channel'][_0x43d7('0x29')](_0x341852,_0x43d7('0xce'));}var _0x45dcf6=_0x341852[_0x43d7('0x2c')][_0x43d7('0x58')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0xcf'),_0x45dcf6));var _0x4fba2d=this[_0x43d7('0x28')][_0x43d7('0x70')](this,_0x49379c,_0x45dcf6);this[_0x43d7('0x33')][_0x43d7('0x70')](this,_0x341852,_0x45dcf6);if(!this[_0x43d7('0x87')](_0x341852[_0x43d7('0xd0')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0xd1'));}var _0x29814f=this[_0x43d7('0x12')][_0x43d7('0x70')](this,_0x341852[_0x43d7('0xd0')]);if(!_0x29814f){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x341852,_0x43d7('0xd2'));}var _0x47196b=this;_0x4fba2d[_0x43d7('0xd3')](function(_0x20fb8d,_0x2b57af){Object[_0x43d7('0xd4')](_0x20fb8d)[_0x43d7('0xd3')](function(_0x176915){_0x47196b[_0x43d7('0xf')][_0x43d7('0x9f')](util[_0x43d7('0x26')](_0x43d7('0xd5'),_0x29814f,_0x2b57af,_0x176915),_0x20fb8d[_0x176915]);});});this['channel'][_0x43d7('0x9f')](util[_0x43d7('0x26')](_0x43d7('0xd6'),_0x29814f),_0x4fba2d['length']);return this[_0x43d7('0xf')]['noop'](util[_0x43d7('0x26')]('variable\x20%s\x20set',_0x29814f));};AGIVertices[_0x43d7('0x19')]['dial']=function(_0x2e7edf){logger[_0x43d7('0xd7')](util[_0x43d7('0x26')](_0x43d7('0xd8'),_0x2e7edf[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x2e7edf[_0x43d7('0xd9')])){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x2e7edf,_0x43d7('0xda'));}var _0xe5e499=this[_0x43d7('0xdb')][_0x43d7('0x70')](this,_0x2e7edf[_0x43d7('0xd9')]);if(!_0xe5e499){return this[_0x43d7('0xf')]['error'](_0x2e7edf,'no\x20user\x20found');}var _0xce5aeb=this['channel'][_0x43d7('0x57')](_0x43d7('0xdc'),[util[_0x43d7('0x26')](_0x43d7('0xdd'),_0xe5e499),_0x2e7edf[_0x43d7('0x67')],_0x2e7edf['opts'],_0x2e7edf['url']]);if(_0xce5aeb['result']===-0x1){return _0xce5aeb;}return this['channel'][_0x43d7('0xaa')](util[_0x43d7('0x26')]('Executed\x20command\x20%s','DIAL'));};AGIVertices[_0x43d7('0x19')][_0x43d7('0xde')]=function(_0x4d941e){logger['info'](util[_0x43d7('0x26')](_0x43d7('0xdf'),_0x4d941e[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x4d941e[_0x43d7('0x7c')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0xe0'));}if(!this[_0x43d7('0x87')](_0x4d941e[_0x43d7('0x5c')])){return this['channel'][_0x43d7('0xaa')](_0x43d7('0xa8'));}this[_0x43d7('0xf')][_0x43d7('0xe1')]=!![];this[_0x43d7('0x33')](_0x4d941e);this[_0x43d7('0x3f')](_0x4d941e['text'],'in','','');this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')]('Trying\x20Dialogflow:\x20%s',_0x4d941e[_0x43d7('0x5c')]));var _0x2869cf=this[_0x43d7('0x7b')][_0x43d7('0x70')](this,_0x4d941e);if(_0x2869cf){for(var _0x424073 in _0x2869cf){if(_0x2869cf[_0x43d7('0x95')](_0x424073)){this['channel'][_0x43d7('0x9f')](util[_0x43d7('0x26')]('DIALOGFLOW_%s',_0x424073['toUpperCase']()),_0x2869cf[_0x424073]);}}this['createSquareMessage'](_0x2869cf[_0x43d7('0xe2')],_0x43d7('0xe3'),_0x43d7('0xde'),'');return this['channel'][_0x43d7('0xaa')](util[_0x43d7('0x26')]('Dialogflow\x20Result\x20%s',_0x2869cf[_0x43d7('0xe2')]));}return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x4d941e,'Dialogflow\x20is\x20unreachable');};AGIVertices['prototype']['dialogflowV2']=function(_0x1bc916){logger['info'](util['format']('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x1bc916[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x1bc916[_0x43d7('0x7e')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0xe4'));}if(!this[_0x43d7('0x87')](_0x1bc916[_0x43d7('0x7f')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')]('no\x20client_email\x20configured');}if(!this[_0x43d7('0x87')](_0x1bc916[_0x43d7('0x80')])){return this[_0x43d7('0xf')]['noop'](_0x43d7('0xe5'));}if(!this['isConfigured'](_0x1bc916['dialogflowV2_language'])){return this[_0x43d7('0xf')]['noop']('no\x20anguage\x20configured');}if(!this[_0x43d7('0x87')](_0x1bc916[_0x43d7('0x5c')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0xa8'));}this['channel'][_0x43d7('0xe1')]=!![];this[_0x43d7('0x33')](_0x1bc916);this[_0x43d7('0x3f')](_0x1bc916[_0x43d7('0x5c')],'in','','');this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')]('Trying\x20DialogflowV2:\x20%s',_0x1bc916[_0x43d7('0x5c')]));var _0x363c95=this[_0x43d7('0x7d')][_0x43d7('0x70')](this,_0x1bc916);if(_0x363c95){for(var _0x3fa32f in _0x363c95){if(_0x363c95[_0x43d7('0x95')](_0x3fa32f)){if(_0x3fa32f!==_0x43d7('0xe6')){this[_0x43d7('0xf')]['setVariable'](util[_0x43d7('0x26')](_0x43d7('0xe7'),_0x3fa32f[_0x43d7('0x6a')]()),_0x363c95[_0x3fa32f]);}}}this[_0x43d7('0x3f')](_0x363c95['speech'],_0x43d7('0xe3'),_0x43d7('0xe8'),_0x363c95[_0x43d7('0xe6')]);return this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0xe9'),_0x363c95['speech']));}return this[_0x43d7('0xf')]['error'](_0x1bc916,_0x43d7('0xea'));};AGIVertices[_0x43d7('0x19')][_0x43d7('0xeb')]=function(_0x1812f6){logger[_0x43d7('0x2a')](util['format']('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x1812f6[_0x43d7('0x35')]));if(!this['isConfigured'](_0x1812f6[_0x43d7('0xec')])){return this['channel'][_0x43d7('0xaa')](_0x43d7('0xed'));}if(!this['isConfigured'](_0x1812f6[_0x43d7('0xee')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0xef'));}if(!this[_0x43d7('0x87')](_0x1812f6[_0x43d7('0xf0')])){return this['channel'][_0x43d7('0xaa')](_0x43d7('0xf1'));}if(!this[_0x43d7('0x87')](_0x1812f6['ndassistant_url'])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0xa8'));}this[_0x43d7('0xf')]['bot']=!![];this[_0x43d7('0x33')](_0x1812f6);this[_0x43d7('0x3f')](_0x1812f6['text'],'in','','');this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0xf2'),_0x1812f6[_0x43d7('0x5c')]));var _0x176e3d=this[_0x43d7('0x82')][_0x43d7('0x70')](this,_0x1812f6);if(_0x176e3d){for(var _0x35f16a in _0x176e3d){if(_0x176e3d[_0x43d7('0x95')](_0x35f16a)){this[_0x43d7('0xf')][_0x43d7('0x9f')](util[_0x43d7('0x26')](_0x43d7('0xf3'),_0x35f16a['toUpperCase']()),_0x176e3d[_0x35f16a]);}}this[_0x43d7('0x3f')](_0x176e3d[_0x43d7('0xe2')],_0x43d7('0xe3'),_0x43d7('0xeb'),'');if(_0x176e3d[_0x43d7('0xf4')]){this[_0x43d7('0xf')][_0x43d7('0xaa')](util['format']('Sestek\x20NDA\x20%s\x20file\x20created',_0x176e3d['audiofile']));var _0x5048c5=this[_0x43d7('0xf')][_0x43d7('0xf5')](_0x176e3d['audiofile']);try{fs['unlink'](_0x176e3d[_0x43d7('0xf4')]+_0x43d7('0xf6'));}catch(_0x31917b){logger['error'](_0x31917b);}return _0x5048c5;}else{return this['channel'][_0x43d7('0xaa')](util['format'](_0x43d7('0xf7'),_0x176e3d[_0x43d7('0xe2')]));}}return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x1812f6,_0x43d7('0xf8'));};AGIVertices[_0x43d7('0x19')][_0x43d7('0xf9')]=function(_0x155571){logger['info'](util[_0x43d7('0x26')](_0x43d7('0xfa'),_0x155571[_0x43d7('0x35')]));return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0xf9'));};AGIVertices['prototype']['ext_dial']=function(_0x54e9b1){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0xfb'),_0x54e9b1['label']));var _0x2984c7='';if(_0x54e9b1['trunk_id']){if(!this[_0x43d7('0x87')](_0x54e9b1[_0x43d7('0xfc')])){return this['channel'][_0x43d7('0x29')](_0x54e9b1,'no\x20trunk\x20selected');}else{var _0x2b35f7=parseInt(_0x54e9b1['trunk_id'],0xa);if(isNaN(_0x2b35f7)){_0x2984c7=_0x54e9b1[_0x43d7('0xfc')];}else{_0x2984c7=this[_0x43d7('0xfd')]['sync'](this,_0x54e9b1[_0x43d7('0xfc')]);if(!_0x2984c7){return this[_0x43d7('0xf')]['error'](_0x54e9b1,_0x43d7('0xfe'));}}}}else if(_0x54e9b1[_0x43d7('0xff')]){_0x2984c7=_0x54e9b1[_0x43d7('0xff')];}else{return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x54e9b1,_0x43d7('0x100'));}var _0x37bb22=this[_0x43d7('0xf')][_0x43d7('0x57')](_0x43d7('0xdc'),[util[_0x43d7('0x26')](_0x43d7('0x101'),_0x2984c7,_0x54e9b1[_0x43d7('0x46')]),_0x54e9b1[_0x43d7('0x67')],_0x54e9b1[_0x43d7('0x102')],_0x54e9b1['url']]);if(_0x37bb22[_0x43d7('0xa3')]===-0x1){return _0x37bb22;}return this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')]('Executed\x20command\x20%s',_0x43d7('0xdc')));};AGIVertices['prototype'][_0x43d7('0x103')]=function(_0x506b35){logger['info'](util[_0x43d7('0x26')](_0x43d7('0x104'),_0x506b35[_0x43d7('0x35')]));return this[_0x43d7('0xf')][_0x43d7('0xaa')]('finally');};AGIVertices['prototype'][_0x43d7('0xd')]=function(_0x1ef73f){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x105'),_0x1ef73f[_0x43d7('0x35')]));if(_0x1ef73f['retry']===0x0){return this['maxRetry'](_0x1ef73f);}_0x1ef73f[_0x43d7('0xa5')]-=0x1;if(!this[_0x43d7('0x87')](_0x1ef73f['file_id'])){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x1ef73f,_0x43d7('0x106'));}var _0x17b906=this[_0x43d7('0x107')][_0x43d7('0x70')](this,_0x1ef73f[_0x43d7('0x108')]);if(!_0x17b906){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x1ef73f,_0x43d7('0x109'));}if(!this[_0x43d7('0x87')](_0x1ef73f[_0x43d7('0xd0')])){return this[_0x43d7('0xf')]['error']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x4872ca=this['channel'][_0x43d7('0x10a')](_0x17b906,_0x1ef73f[_0x43d7('0x10b')],_0x1ef73f[_0x43d7('0x10c')]);var _0xd24f5e=_0x4872ca[_0x43d7('0xa3')]?_0x4872ca[_0x43d7('0xa3')][_0x43d7('0x4a')]():'';logger['info'](_0x43d7('0x10d'),JSON['stringify'](_0x4872ca));if(_0x4872ca['result']===-0x1){this[_0x43d7('0x33')][_0x43d7('0x70')](this,_0x1ef73f,_0xd24f5e);return _0x4872ca;}else if(_0x4872ca['extra']===_0x43d7('0x67')){_0x4872ca[_0x43d7('0xa3')]=_0xd24f5e[_0x43d7('0x9e')]>=parseInt(_0x1ef73f[_0x43d7('0x10e')])?'x':'i';}else{_0x4872ca[_0x43d7('0xa3')]=_0xd24f5e['length']>=parseInt(_0x1ef73f[_0x43d7('0x10e')])&&_0xd24f5e[_0x43d7('0x9e')]<=parseInt(_0x1ef73f[_0x43d7('0x10c')])?'x':'i';}var _0x3cafab=this[_0x43d7('0x12')]['sync'](this,_0x1ef73f['variable_id']);if(!_0x3cafab){return this['channel'][_0x43d7('0x29')](_0x1ef73f,_0x43d7('0xd2'));}this['channel'][_0x43d7('0x9f')](_0x3cafab,_0xd24f5e);if(this[_0x43d7('0x87')](_0x1ef73f[_0x43d7('0x10f')])){var _0x1938c2=parseInt(_0x1ef73f[_0x43d7('0x10f')],0xa);var _0x231f94=rs[_0x43d7('0x110')]({'charset':'*','length':_0x1938c2});var _0x1e68e5=_0xd24f5e[_0x43d7('0x9e')];if(_0x1e68e5>0x0){if(_0x1e68e5>_0x1938c2){this['createSquareDetailsReport'][_0x43d7('0x70')](this,_0x1ef73f,_0x1ef73f[_0x43d7('0x111')]===_0x43d7('0x112')?_0x231f94+_0xd24f5e['substr'](_0x1938c2):_0xd24f5e[_0x43d7('0x113')](0x0,_0x1e68e5-_0x1938c2)+_0x231f94);}else{this[_0x43d7('0x33')][_0x43d7('0x70')](this,_0x1ef73f,rs[_0x43d7('0x110')]({'charset':'*','length':_0x1e68e5}));}}else{this['createSquareDetailsReport'][_0x43d7('0x70')](this,_0x1ef73f,'');}}else{this['createSquareDetailsReport'][_0x43d7('0x70')](this,_0x1ef73f,_0xd24f5e);}return _0x4872ca;};AGIVertices[_0x43d7('0x19')][_0x43d7('0xe')]=function(_0x34df25){logger['info'](util[_0x43d7('0x26')](_0x43d7('0x114'),_0x34df25[_0x43d7('0x35')]));return this[_0x43d7('0xd')](_0x34df25);};AGIVertices['prototype']['goal']=function(_0x150ece){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x115'),_0x150ece['label']));this['createSquareDetailsReport'][_0x43d7('0x70')](this,_0x150ece,_0x150ece['goalname']);return this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')]('GOAL\x20%s',_0x150ece['goalname']));};AGIVertices[_0x43d7('0x19')][_0x43d7('0x116')]=function(_0xf79bac){logger['info'](util[_0x43d7('0x26')](_0x43d7('0x117'),_0xf79bac[_0x43d7('0x35')]));if(!this['isConfigured'](_0xf79bac[_0x43d7('0x8a')])||!this[_0x43d7('0x87')](_0xf79bac[_0x43d7('0x8d')])){return this[_0x43d7('0xf')]['noop'](_0x43d7('0x118'));}if(!this[_0x43d7('0x87')](_0xf79bac[_0x43d7('0x5c')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0xa8'));}this['channel'][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x119'),_0xf79bac[_0x43d7('0x5c')]));var _0x5c3f2e=this[_0x43d7('0x89')][_0x43d7('0x70')](this,_0xf79bac);if(_0x5c3f2e){this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x11a'),_0x5c3f2e));var _0x5ab602=this[_0x43d7('0xf')][_0x43d7('0xf5')](_0x5c3f2e);try{fs[_0x43d7('0x11b')](_0x5c3f2e+_0x43d7('0xf6'));}catch(_0x57ea87){logger['error'](_0x57ea87);}return _0x5ab602;}return this[_0x43d7('0xf')][_0x43d7('0x29')](_0xf79bac,'aws\x20Polly\x20is\x20unreachable');};AGIVertices['prototype']['awslex']=function(_0x1135f7){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')]('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x1135f7[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x1135f7[_0x43d7('0x8a')])||!this[_0x43d7('0x87')](_0x1135f7[_0x43d7('0x8d')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0x118'));}if(!this[_0x43d7('0x87')](_0x1135f7[_0x43d7('0x11c')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0x11d'));}if(!this[_0x43d7('0x87')](_0x1135f7[_0x43d7('0x5c')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0xa8'));}this[_0x43d7('0xf')][_0x43d7('0xe1')]=!![];this[_0x43d7('0x33')](_0x1135f7);this[_0x43d7('0x3f')](_0x1135f7[_0x43d7('0x5c')],'in','','');this[_0x43d7('0xf')]['noop'](util['format'](_0x43d7('0x11e'),_0x1135f7['text']));var _0x198a53=this[_0x43d7('0x8c')][_0x43d7('0x70')](this,_0x1135f7);if(_0x198a53){for(var _0x1b4ce in _0x198a53){if(_0x198a53[_0x43d7('0x95')](_0x1b4ce)&&_[_0x43d7('0x96')](_0x198a53[_0x1b4ce])){this[_0x43d7('0xf')][_0x43d7('0x9f')](util[_0x43d7('0x26')](_0x43d7('0x11f'),_0x1b4ce[_0x43d7('0x6a')]()),_0x198a53[_0x1b4ce]);}}if(_[_0x43d7('0x42')](_0x198a53[_0x43d7('0x78')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0x120'));}else{this[_0x43d7('0x3f')](_0x198a53[_0x43d7('0x78')],_0x43d7('0xe3'),_0x43d7('0x121'),'');return this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x122'),_0x198a53['message']));}}return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x1135f7,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices['prototype'][_0x43d7('0x123')]=function(_0x4bffec){logger['info'](util[_0x43d7('0x26')](_0x43d7('0x124'),_0x4bffec[_0x43d7('0x35')],_0x4bffec[_0x43d7('0x67')]));if(!this[_0x43d7('0x87')](_0x4bffec['key'])){return this['channel'][_0x43d7('0xaa')](_0x43d7('0xe0'));}var _0x560789=_0x43d7('0x125');var _0x3eee84=util['format'](_0x43d7('0x126'),FILES_PATH,rs[_0x43d7('0x110')](0x4));var _0x3f0996=util[_0x43d7('0x26')](_0x43d7('0x9d'),_0x3eee84,_0x560789);var _0x5831c6=!![];if(_0x4bffec['beep']===_0x43d7('0x127')){_0x5831c6=![];}var _0x10a109=this['channel'][_0x43d7('0x128')](_0x3eee84,_0x560789,_0x4bffec[_0x43d7('0x129')],_0x4bffec[_0x43d7('0x67')],undefined,_0x5831c6);if(_0x10a109[_0x43d7('0xa3')]!==-0x1){this['channel'][_0x43d7('0xaa')](util[_0x43d7('0x26')]('google\x20%s\x20file\x20created',_0x3f0996));var _0xab700c=this[_0x43d7('0x8f')][_0x43d7('0x70')](this,_0x4bffec,_0x3f0996);if(_0xab700c){for(var _0x4f5893 in _0xab700c){if(_0xab700c[_0x43d7('0x95')](_0x4f5893)){this['channel'][_0x43d7('0x9f')](util['format'](_0x43d7('0x12a'),_0x4f5893[_0x43d7('0x6a')]()),_0xab700c[_0x4f5893]);}}return this['channel'][_0x43d7('0xaa')](util['format'](_0x43d7('0x12b'),JSON[_0x43d7('0x74')](_0xab700c)));}}return _0x10a109;};AGIVertices['prototype']['tildeasr']=function(_0x3721cc){logger['info'](util[_0x43d7('0x26')](_0x43d7('0x12c'),_0x3721cc['label']));if(!this[_0x43d7('0x87')](_0x3721cc[_0x43d7('0x91')])){return this['channel'][_0x43d7('0xaa')](_0x43d7('0x12d'));}if(!this[_0x43d7('0x87')](_0x3721cc[_0x43d7('0x92')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0x12e'));}var _0x1eb6a9='wav';var _0x382f5b=util[_0x43d7('0x26')](_0x43d7('0x126'),FILES_PATH,rs[_0x43d7('0x110')](0x4));var _0x37f7fe=util[_0x43d7('0x26')](_0x43d7('0x9d'),_0x382f5b,_0x1eb6a9);var _0x1fdd2c=!![];if(_0x3721cc[_0x43d7('0x12f')]===_0x43d7('0x127')){_0x1fdd2c=![];}var _0x15b2f8=this[_0x43d7('0xf')]['recordFile'](_0x382f5b,_0x1eb6a9,_0x3721cc['intKey'],_0x3721cc[_0x43d7('0x67')],undefined,_0x1fdd2c);if(_0x15b2f8[_0x43d7('0xa3')]!==-0x1){this[_0x43d7('0xf')][_0x43d7('0xaa')](util['format'](_0x43d7('0x130'),_0x37f7fe));var _0x42626a=this['tildeASR'][_0x43d7('0x70')](this,_0x3721cc,_0x37f7fe);if(_0x42626a){for(var _0x5d163f in _0x42626a){if(_0x42626a[_0x43d7('0x95')](_0x5d163f)){this[_0x43d7('0xf')][_0x43d7('0x9f')](util['format'](_0x43d7('0x131'),_0x5d163f['toUpperCase']()),_0x42626a[_0x5d163f]);}}return this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')]('TildeASR\x20Result\x20%s',JSON[_0x43d7('0x74')](_0x42626a)));}}return _0x15b2f8;};AGIVertices[_0x43d7('0x19')]['gotoc']=function(_0x3185cf){logger['info'](util[_0x43d7('0x26')](_0x43d7('0x132'),_0x3185cf['label']));return this[_0x43d7('0xf')][_0x43d7('0x133')](_0x3185cf['context'],_0x3185cf[_0x43d7('0x3b')],_0x3185cf[_0x43d7('0x3c')]);};AGIVertices[_0x43d7('0x19')]['gotoif']=function(_0x1808da){logger['info'](util[_0x43d7('0x26')](_0x43d7('0x134'),_0x1808da['label']));if(!this[_0x43d7('0x87')](_0x1808da[_0x43d7('0x135')])){return this[_0x43d7('0xf')]['error'](_0x1808da,_0x43d7('0x136'));}try{var _0x15dcd1=eval(_0x1808da['condition'])?_0x43d7('0x137'):'false';this[_0x43d7('0xf')][_0x43d7('0xaa')](util['format'](_0x43d7('0x138'),_0x1808da[_0x43d7('0x135')],_0x15dcd1));return{'code':0xc8,'result':_0x15dcd1};}catch(_0x2083a3){return{'code':0xc8,'result':_0x43d7('0x139')};}};AGIVertices[_0x43d7('0x19')]['gotoiftime']=function(_0x50fa39){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x50fa39[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x50fa39['interval_id'])){return this[_0x43d7('0xf')]['error'](_0x50fa39,'no\x20interval\x20configured');}var _0x1b8c0f=this[_0x43d7('0x13a')]['sync'](this,_0x50fa39['interval_id']);if(!_0x1b8c0f){return this['channel']['error'](_0x50fa39,_0x43d7('0x13b'));}for(var _0xc4cb0f=0x0;_0xc4cb0f<_0x1b8c0f[_0x43d7('0x9e')];_0xc4cb0f+=0x1){var _0x2c2d77=this[_0x43d7('0xf')][_0x43d7('0x12')](util['format'](_0x43d7('0x13c'),_0x1b8c0f[_0xc4cb0f]));if(_0x2c2d77[_0x43d7('0xa3')]===-0x1){return _0x2c2d77;}logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x13d'),_0x1b8c0f[_0xc4cb0f],_0x2c2d77[_0x43d7('0xa2')]));if(_0x2c2d77[_0x43d7('0xa2')]===_0x43d7('0x137')){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x13d'),_0x1b8c0f[_0xc4cb0f],_0x43d7('0x137')));this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')]('IFTIME\x20%s\x20%s',_0x1b8c0f[_0xc4cb0f],'true'));return{'code':0xc8,'result':_0x43d7('0x137')};}else{logger['info'](util[_0x43d7('0x26')](_0x43d7('0x13d'),_0x1b8c0f[_0xc4cb0f],'false'));this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x13d'),_0x1b8c0f[_0xc4cb0f],_0x43d7('0x139')));}}return{'code':0xc8,'result':_0x43d7('0x139')};};AGIVertices['prototype'][_0x43d7('0x13e')]=function(_0x3ee5a3){logger['info'](util['format']('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x3ee5a3[_0x43d7('0x35')]));return this[_0x43d7('0xf')][_0x43d7('0x13e')]();};AGIVertices[_0x43d7('0x19')][_0x43d7('0x13f')]=function(_0x1e3889){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x140'),_0x1e3889['label']));if(!this[_0x43d7('0x87')](_0x1e3889[_0x43d7('0x7c')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0xe0'));}var _0x454ae4='wav';var _0x4a1030=util[_0x43d7('0x26')](_0x43d7('0x126'),FILES_PATH,rs['generate'](0x4));var _0x1f4118=util[_0x43d7('0x26')](_0x43d7('0x9d'),_0x4a1030,_0x454ae4);var _0x3203c6=!![];if(_0x1e3889[_0x43d7('0x12f')]==='NOBEEP'){_0x3203c6=![];}var _0x3e878f=this['channel'][_0x43d7('0x128')](_0x4a1030,_0x454ae4,_0x1e3889[_0x43d7('0x129')],_0x1e3889[_0x43d7('0x67')],undefined,_0x3203c6);if(_0x3e878f[_0x43d7('0xa3')]!==-0x1){this[_0x43d7('0xf')][_0x43d7('0xaa')](util['format'](_0x43d7('0x141'),_0x1f4118));var _0x20d53c=this[_0x43d7('0x86')][_0x43d7('0x70')](this,_0x1e3889,_0x1f4118);if(_0x20d53c){for(var _0xaef69f in _0x20d53c){if(_0x20d53c[_0x43d7('0x95')](_0xaef69f)){this[_0x43d7('0xf')][_0x43d7('0x9f')](util[_0x43d7('0x26')]('ISPEECH_ASR_%s',_0xaef69f[_0x43d7('0x6a')]()),_0x20d53c[_0xaef69f]);}}return this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x142'),JSON[_0x43d7('0x74')](_0x20d53c)));}}return _0x3e878f;};AGIVertices[_0x43d7('0x19')][_0x43d7('0x143')]=function(_0x12b993){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x144'),_0x12b993[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x12b993[_0x43d7('0x7c')])){return this['channel'][_0x43d7('0xaa')](_0x43d7('0xe0'));}if(!this[_0x43d7('0x87')](_0x12b993[_0x43d7('0x5c')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0xa8'));}this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x145'),_0x12b993[_0x43d7('0x5c')]));var _0x18ad50=this[_0x43d7('0x83')][_0x43d7('0x70')](this,_0x12b993);if(_0x18ad50){this[_0x43d7('0xf')]['noop'](util[_0x43d7('0x26')](_0x43d7('0x141'),_0x18ad50));var _0x10f976=this['channel'][_0x43d7('0xf5')](_0x18ad50,_0x12b993[_0x43d7('0x129')]);try{fs[_0x43d7('0x11b')](_0x18ad50+_0x43d7('0xf6'));}catch(_0x45c92c){logger[_0x43d7('0x29')](_0x45c92c);}return _0x10f976;}return this['channel'][_0x43d7('0x29')](_0x12b993,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0x43d7('0x19')]['login']=function(_0x4a79d7){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x146'),_0x4a79d7[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x4a79d7['findBy'])){return this['channel'][_0x43d7('0x29')](_0x4a79d7,_0x43d7('0x147'));}logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x148'),this[_0x43d7('0xf')][_0x43d7('0x38')],_0x4a79d7[_0x43d7('0x149')]));var _0x37380b=this[_0x43d7('0x52')][_0x43d7('0x70')](this,_0x4a79d7['findBy']);if(_0x37380b){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x14a'),this[_0x43d7('0xf')]['callerid'],_0x4a79d7[_0x43d7('0x149')]));this['channel'][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x14a'),this[_0x43d7('0xf')][_0x43d7('0x38')],_0x4a79d7[_0x43d7('0x149')]));return{'code':0xc8,'result':_0x43d7('0x14b')};}else{logger[_0x43d7('0x2a')](util[_0x43d7('0x26')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x43d7('0xf')][_0x43d7('0x38')],_0x4a79d7[_0x43d7('0x149')]));this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x14c'),this[_0x43d7('0xf')]['callerid'],_0x4a79d7[_0x43d7('0x149')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x43d7('0x19')][_0x43d7('0x14d')]=function(_0x106de2){logger['info'](util[_0x43d7('0x26')](_0x43d7('0x14e'),_0x106de2[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x106de2['findBy'])){return this['channel'][_0x43d7('0x29')](_0x106de2,'no\x20find\x20by\x20configured');}logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x148'),this[_0x43d7('0xf')]['callerid'],_0x106de2[_0x43d7('0x149')]));var _0x3dd8a4=this[_0x43d7('0x51')][_0x43d7('0x70')](this,_0x106de2[_0x43d7('0x149')]);if(_0x3dd8a4){logger['info'](util[_0x43d7('0x26')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x43d7('0x38')],_0x106de2['findBy']));this[_0x43d7('0xf')]['noop'](util[_0x43d7('0x26')](_0x43d7('0x14a'),this[_0x43d7('0xf')]['callerid'],_0x106de2[_0x43d7('0x149')]));return{'code':0xc8,'result':'success'};}else{logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x14c'),this[_0x43d7('0xf')]['callerid'],_0x106de2[_0x43d7('0x149')]));this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x14c'),this[_0x43d7('0xf')][_0x43d7('0x38')],_0x106de2[_0x43d7('0x149')]));return{'code':0xc8,'result':_0x43d7('0x14f')};}};AGIVertices[_0x43d7('0x19')]['math']=function(_0x2573ce){logger['info'](util[_0x43d7('0x26')](_0x43d7('0x150'),_0x2573ce[_0x43d7('0x35')]));if(!this['isConfigured'](_0x2573ce[_0x43d7('0x151')])){return this[_0x43d7('0xf')]['error'](_0x2573ce,_0x43d7('0x152'));}this['channel'][_0x43d7('0xaa')](util[_0x43d7('0x26')]('math\x20%s',_0x2573ce[_0x43d7('0x151')]));var _0x5f4581=eval(_0x2573ce[_0x43d7('0x151')]);if(!this[_0x43d7('0x87')](_0x2573ce[_0x43d7('0xd0')])){return this['channel']['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x45842b=this[_0x43d7('0x12')][_0x43d7('0x70')](this,_0x2573ce[_0x43d7('0xd0')]);if(!_0x45842b){return this[_0x43d7('0xf')]['error'](_0x2573ce,_0x43d7('0xd2'));}if(_['isArray'](_0x5f4581)){var _0x363d53=this;_0x5f4581[_0x43d7('0xd3')](function(_0x1516c7,_0x426f89){_0x363d53['channel'][_0x43d7('0x9f')](util['format'](_0x43d7('0x153'),_0x45842b,_0x426f89),_0x1516c7);});return this[_0x43d7('0xf')]['noop'](util[_0x43d7('0x26')](_0x43d7('0x154'),_0x45842b));}else{return this[_0x43d7('0xf')]['setVariable'](_0x45842b,_0x5f4581);}};AGIVertices[_0x43d7('0x19')]['menu']=function(_0x15aaf7){logger[_0x43d7('0x2a')](util['format'](_0x43d7('0x155'),_0x15aaf7[_0x43d7('0x35')]));if(_0x15aaf7['retry']===0x0){return this[_0x43d7('0x156')](_0x15aaf7);}_0x15aaf7[_0x43d7('0xa5')]-=0x1;if(!this['isConfigured'](_0x15aaf7['file_id'])){return this['channel']['error'](_0x15aaf7,_0x43d7('0x106'));}var _0x3f3710=this['getSound'][_0x43d7('0x70')](this,_0x15aaf7['file_id']);if(!_0x3f3710){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x15aaf7,_0x43d7('0x109'));}var _0x4e5a=this[_0x43d7('0xf')]['getData'](_0x3f3710,_0x15aaf7[_0x43d7('0x10b')],_0x15aaf7[_0x43d7('0x157')]);var _0x5047f6=_0x4e5a[_0x43d7('0xa3')];if(_0x4e5a[_0x43d7('0xa3')]===-0x1){this[_0x43d7('0x33')]['sync'](this,_0x15aaf7,'-1');return _0x4e5a;}else if(_0x4e5a[_0x43d7('0xa2')]===_0x43d7('0x67')){_0x4e5a['result']=_0x4e5a['result'][_0x43d7('0x9e')]>0x0?_0x4e5a[_0x43d7('0xa3')]:'t';}else if(_[_0x43d7('0x41')](_0x4e5a[_0x43d7('0xa3')])){_0x4e5a[_0x43d7('0xa3')]='#';_0x5047f6='#';}if(!this['isConfigured'](_0x15aaf7[_0x43d7('0xd0')])){this[_0x43d7('0xf')][_0x43d7('0xaa')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x17ea15=this[_0x43d7('0x12')][_0x43d7('0x70')](this,_0x15aaf7['variable_id']);if(!_0x17ea15){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x15aaf7,_0x43d7('0xd2'));}this['channel']['setVariable'](_0x17ea15,_0x5047f6);}this[_0x43d7('0x33')][_0x43d7('0x70')](this,_0x15aaf7,_0x5047f6);return _0x4e5a;};AGIVertices[_0x43d7('0x19')][_0x43d7('0xaa')]=function(_0x459ab5){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x158'),_0x459ab5[_0x43d7('0x35')]));return this['channel']['noop'](_0x459ab5[_0x43d7('0x159')]||_0x459ab5[_0x43d7('0x35')]);};AGIVertices['prototype'][_0x43d7('0x15a')]=function(_0x5c1c2e){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x15b'),_0x5c1c2e[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x5c1c2e[_0x43d7('0x149')])){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x5c1c2e,'no\x20find\x20by\x20configured');}logger[_0x43d7('0x2a')](util['format'](_0x43d7('0x148'),this[_0x43d7('0xf')]['callerid'],_0x5c1c2e['findBy']));var _0x3e8fa8=this['getPause'][_0x43d7('0x70')](this,_0x5c1c2e['pause_id']);var _0x35c2f2=this[_0x43d7('0x4e')][_0x43d7('0x70')](this,_0x5c1c2e[_0x43d7('0x149')],_0x3e8fa8);if(_0x35c2f2){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x43d7('0xf')][_0x43d7('0x38')],_0x5c1c2e['findBy']));this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x43d7('0xf')]['callerid'],_0x5c1c2e[_0x43d7('0x149')]));return{'code':0xc8,'result':_0x43d7('0x14b')};}else{logger[_0x43d7('0x2a')](util['format'](_0x43d7('0x14c'),this['channel'][_0x43d7('0x38')],_0x5c1c2e[_0x43d7('0x149')]));this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x14a'),this[_0x43d7('0xf')]['callerid'],_0x5c1c2e[_0x43d7('0x149')]));return{'code':0xc8,'result':_0x43d7('0x14f')};}};AGIVertices[_0x43d7('0x19')]['playback']=function(_0xd0c1cf){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')]('Enter\x20in\x20PLAYBACK\x20(%s)\x20block',_0xd0c1cf[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0xd0c1cf['file_id'])){return this['channel'][_0x43d7('0x29')](_0xd0c1cf,_0x43d7('0x106'));}var _0x8f349a=this[_0x43d7('0x107')][_0x43d7('0x70')](this,_0xd0c1cf[_0x43d7('0x108')]);if(!_0x8f349a){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0xd0c1cf,_0x43d7('0x109'));}var _0x15553b=this[_0x43d7('0xf')][_0x43d7('0x57')](_0x43d7('0x15c'),[_0x8f349a,_0xd0c1cf[_0x43d7('0x102')]]);if(_0x15553b[_0x43d7('0xa3')]===-0x1){return _0x15553b;}return this[_0x43d7('0xf')]['noop'](util[_0x43d7('0x26')]('Executed\x20command\x20%s\x20%s',_0x43d7('0x15c'),_0x8f349a));};AGIVertices[_0x43d7('0x19')]['queue']=function(_0x37fac6){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x15d'),_0x37fac6[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x37fac6[_0x43d7('0x15e')])){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x37fac6,_0x43d7('0x15f'));}var _0x75d8b2='';var _0x8a6daa=parseInt(_0x37fac6['queue_id'],0xa);if(isNaN(_0x8a6daa)){_0x75d8b2=_0x37fac6[_0x43d7('0x15e')];}else{_0x75d8b2=this['getVoiceQueue'][_0x43d7('0x70')](this,_0x37fac6['queue_id']);if(!_0x75d8b2){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x37fac6,_0x43d7('0x160'));}}var _0x1ca20e='';if(this['isConfigured'](_0x37fac6[_0x43d7('0x108')])){var _0x49d16c=this['getSound'][_0x43d7('0x70')](this,_0x37fac6[_0x43d7('0x108')]);if(_0x49d16c){_0x1ca20e=_0x49d16c;}}this[_0x43d7('0x33')]['sync'](this,_0x37fac6,_0x75d8b2);if(_0x37fac6[_0x43d7('0x102')][_0x43d7('0x161')]('x')<0x0){_0x37fac6[_0x43d7('0x102')]+='x';}if(_0x37fac6['opts'][_0x43d7('0x161')]('X')<0x0){_0x37fac6[_0x43d7('0x102')]+='X';}this[_0x43d7('0xf')][_0x43d7('0x9f')]('XMCS-QUEUE',_0x75d8b2?_0x75d8b2[_0x43d7('0x162')]():'');var _0x5b274c=this[_0x43d7('0xf')][_0x43d7('0x57')](_0x43d7('0x163'),[_0x75d8b2,_0x37fac6['opts'],_0x37fac6[_0x43d7('0x65')],_0x1ca20e,_0x37fac6[_0x43d7('0x67')],_0x37fac6[_0x43d7('0x164')],_0x37fac6['macro'],_0x37fac6['gosub'],'',_0x37fac6[_0x43d7('0x165')]]);if(_0x5b274c[_0x43d7('0xa3')]===-0x1){return _0x5b274c;}return this['channel']['noop'](util[_0x43d7('0x26')](_0x43d7('0x166'),_0x43d7('0x163'),_0x75d8b2));};AGIVertices[_0x43d7('0x19')]['record']=function(_0x6f0b9){logger[_0x43d7('0x2a')](util['format'](_0x43d7('0x167'),_0x6f0b9[_0x43d7('0x35')]));var _0x525e30=_0x6f0b9[_0x43d7('0x168')]||_0x43d7('0x125');var _0x4c44d0=util[_0x43d7('0x26')](_0x43d7('0x169'),this[_0x43d7('0xf')]['uniqueid'],rs[_0x43d7('0x110')](0x5));var _0x2eb4fc=util[_0x43d7('0x26')](_0x43d7('0x16a'),FILES_PATH,_0x4c44d0,_0x525e30);var _0x42a181=util[_0x43d7('0x26')](_0x43d7('0x126'),FILES_PATH,_0x4c44d0);this[_0x43d7('0x39')][_0x43d7('0x70')](this,_0x6f0b9,_0x4c44d0,_0x2eb4fc);this[_0x43d7('0xf')][_0x43d7('0x9f')]('RECORDING_SAVENAME',_0x4c44d0);logger[_0x43d7('0x2a')](_0x43d7('0x16b'),_0x42a181,_0x525e30,_0x6f0b9[_0x43d7('0x16c')],_0x6f0b9[_0x43d7('0x67')]);return this[_0x43d7('0xf')]['recordFile'](_0x42a181,_0x525e30,_0x6f0b9[_0x43d7('0x16c')],_0x6f0b9['timeout'],undefined,!![]);};AGIVertices[_0x43d7('0x19')][_0x43d7('0x16d')]=function(_0x31fb72){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x16e'),_0x31fb72[_0x43d7('0x35')]));if(!this['isConfigured'](_0x31fb72[_0x43d7('0x65')])){return this['channel'][_0x43d7('0xaa')](_0x43d7('0x16f'));}var _0x2b95f9=this['restAPI']['sync'](this,_0x31fb72);logger['info'](util[_0x43d7('0x26')]('Response:',util[_0x43d7('0x170')](_0x2b95f9,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x31fb72[_0x43d7('0xd0')])){return this[_0x43d7('0xf')]['noop'](_0x43d7('0x171'));}var _0x3efcd5=this['getVariable'][_0x43d7('0x70')](this,_0x31fb72[_0x43d7('0xd0')]);if(!_0x3efcd5){return this[_0x43d7('0xf')]['error'](_0x31fb72,_0x43d7('0xd2'));}this[_0x43d7('0xf')][_0x43d7('0x9f')](util[_0x43d7('0x26')](_0x43d7('0x172'),_0x3efcd5),_0x2b95f9[_0x43d7('0x76')]?_0x2b95f9[_0x43d7('0x76')]:_0x43d7('0x173'));this[_0x43d7('0xf')][_0x43d7('0x9f')](util[_0x43d7('0x26')]('%s_STATUS_MESSAGE',_0x3efcd5),_0x2b95f9[_0x43d7('0x77')]?_0x2b95f9[_0x43d7('0x77')]:'OK');if(_0x2b95f9[_0x43d7('0x6b')]){try{this['saveRestApiResult'](_0x2b95f9[_0x43d7('0x6b')],_0x3efcd5);}catch(_0x1137d9){logger[_0x43d7('0x29')](util['format'](_0x43d7('0x174'),_0x3efcd5));}}return this[_0x43d7('0xf')][_0x43d7('0xaa')](util['format'](_0x43d7('0x175'),_0x3efcd5));};AGIVertices[_0x43d7('0x19')][_0x43d7('0x176')]=function(_0x418095){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x177'),_0x418095[_0x43d7('0x35')]));return this[_0x43d7('0xf')][_0x43d7('0x178')](_0x418095['digits'][_0x43d7('0x58')](/\s+/g,''),_0x418095[_0x43d7('0x16c')]);};AGIVertices[_0x43d7('0x19')][_0x43d7('0x179')]=function(_0xd4bf75){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0xd4bf75[_0x43d7('0x35')]));return this[_0x43d7('0xf')][_0x43d7('0x17a')](_0xd4bf75['number'][_0x43d7('0x58')](/\s+/g,''),_0xd4bf75['escape_digits']);};AGIVertices[_0x43d7('0x19')][_0x43d7('0x17b')]=function(_0x3019f4){logger[_0x43d7('0x2a')](util['format'](_0x43d7('0x17c'),_0x3019f4[_0x43d7('0x35')]));return this['channel'][_0x43d7('0x17d')](_0x3019f4[_0x43d7('0x5c')],_0x3019f4[_0x43d7('0x16c')]);};AGIVertices[_0x43d7('0x19')][_0x43d7('0x17e')]=function(_0x36629f){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x36629f[_0x43d7('0x35')]));if(!this['isConfigured'](_0x36629f['account_id'])){return this[_0x43d7('0xf')][_0x43d7('0xaa')]('no\x20mail\x20account\x20configured');}var _0x2cdb7b=this[_0x43d7('0x1f')][_0x43d7('0x70')](this,_0x36629f['account_id']);if(!_0x2cdb7b||!_0x2cdb7b[_0x43d7('0x17f')]){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x36629f,_0x43d7('0x180'));}var _0x350f54={'from':util['format']('\x22%s\x22\x20<%s>',_0x2cdb7b[_0x43d7('0x15')],_0x2cdb7b[_0x43d7('0x181')]||_0x2cdb7b[_0x43d7('0x17f')][_0x43d7('0x182')]),'to':_0x36629f['to']||'','cc':_0x36629f['cc']||'','bcc':_0x36629f[_0x43d7('0x183')]||'','subject':_0x36629f['subject'],'html':_0x36629f[_0x43d7('0x5c')],'text':_0x36629f[_0x43d7('0x5c')]};var _0x4fdcda={'tls':{'rejectUnauthorized':![]}};if(_0x2cdb7b[_0x43d7('0x17f')][_0x43d7('0x184')]){_0x4fdcda[_0x43d7('0x184')]=_0x2cdb7b[_0x43d7('0x17f')][_0x43d7('0x184')];}else{_0x4fdcda[_0x43d7('0x185')]=_0x2cdb7b['Smtp'][_0x43d7('0x185')];_0x4fdcda[_0x43d7('0x186')]=_0x2cdb7b['Smtp']['port'];_0x4fdcda[_0x43d7('0x187')]=_0x2cdb7b[_0x43d7('0x17f')][_0x43d7('0x187')];}if(_0x2cdb7b[_0x43d7('0x17f')][_0x43d7('0x188')]){_0x4fdcda[_0x43d7('0x189')]={'user':_0x2cdb7b[_0x43d7('0x17f')][_0x43d7('0x182')],'pass':_0x2cdb7b[_0x43d7('0x17f')][_0x43d7('0x18a')]};}if(this[_0x43d7('0x87')](_0x36629f[_0x43d7('0x18b')])){}logger[_0x43d7('0xd7')](_0x43d7('0x18c'),JSON[_0x43d7('0x74')](_0x350f54));this[_0x43d7('0x33')]['sync'](this,_0x36629f,_0x36629f[_0x43d7('0x18d')]);this[_0x43d7('0xf')][_0x43d7('0xaa')](util['format'](_0x43d7('0x18e'),_0x2cdb7b[_0x43d7('0x15')]));this[_0x43d7('0x21')][_0x43d7('0x70')](this,_0x4fdcda,_0x350f54);return this[_0x43d7('0xf')]['noop'](_0x43d7('0x18f'));};AGIVertices[_0x43d7('0x19')][_0x43d7('0x190')]=function(_0x5450a4){logger[_0x43d7('0x2a')](util['format'](_0x43d7('0x191'),_0x5450a4[_0x43d7('0x35')]));return this['channel'][_0x43d7('0xaa')](_0x43d7('0x192'));};AGIVertices[_0x43d7('0x19')][_0x43d7('0x193')]=function(_0x51d1f8){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')]('Enter\x20in\x20SENDSMS\x20(%s)\x20block',_0x51d1f8[_0x43d7('0x35')]));if(!this['isConfigured'](_0x51d1f8[_0x43d7('0x194')])){return this['channel']['noop'](_0x43d7('0x195'));}var _0x45ef65=this[_0x43d7('0x31')][_0x43d7('0x70')](this,_0x51d1f8[_0x43d7('0x194')]);if(!_0x45ef65){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x51d1f8,'no\x20sms\x20account\x20found');}var _0x160305={'body':_0x51d1f8[_0x43d7('0x196')],'phone':_0x51d1f8['to']||'','SmsAccountId':_0x45ef65['id']};logger['debug'](_0x43d7('0x197'),JSON[_0x43d7('0x74')](_0x160305));this['createSquareDetailsReport'][_0x43d7('0x70')](this,_0x51d1f8,_0x51d1f8[_0x43d7('0x194')]);this[_0x43d7('0xf')][_0x43d7('0xaa')](util['format'](_0x43d7('0x198'),_0x45ef65[_0x43d7('0x15')]));this[_0x43d7('0x32')][_0x43d7('0x70')](this,_0x160305);return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0x199'));};AGIVertices[_0x43d7('0x19')][_0x43d7('0x19a')]=function(_0x42189e){logger['info'](util['format']('Enter\x20in\x20SET\x20(%s)\x20block',_0x42189e[_0x43d7('0x35')]));if(!this[_0x43d7('0x87')](_0x42189e[_0x43d7('0xd0')])){return this['channel'][_0x43d7('0x29')](_0x42189e,_0x43d7('0x19b'));}var _0x4c24c9=this[_0x43d7('0x12')][_0x43d7('0x70')](this,_0x42189e[_0x43d7('0xd0')]);if(!_0x4c24c9){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x42189e,_0x43d7('0xd2'));}return this[_0x43d7('0xf')][_0x43d7('0x9f')](_0x4c24c9,_0x42189e[_0x43d7('0x19c')]);};AGIVertices[_0x43d7('0x19')][_0x43d7('0x19d')]=function(_0x1e7093){logger['info'](util[_0x43d7('0x26')](_0x43d7('0x19e'),_0x1e7093[_0x43d7('0x35')]));this[_0x43d7('0xf')]['noop']('START\x20CALLY\x20SQUARE');if(_0x1e7093[_0x43d7('0xb9')]==='yes'){this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0x19f'));return this[_0x43d7('0xf')]['answer']();}return this[_0x43d7('0xf')]['noop'](_0x43d7('0x1a0'));};AGIVertices[_0x43d7('0x19')][_0x43d7('0x1a1')]=function(_0x435dd0){logger[_0x43d7('0x2a')](util['format'](_0x43d7('0x1a2'),_0x435dd0['label']));if(!this[_0x43d7('0x87')](_0x435dd0['project_id'])){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x435dd0,_0x43d7('0x1a3'));}var _0x35b336=this['getSquareProject']['sync'](this,_0x435dd0[_0x43d7('0x1a4')]);if(!this[_0x43d7('0x87')](_0x35b336)){return this['channel'][_0x43d7('0x29')](_0x435dd0,util[_0x43d7('0x26')](_0x43d7('0x1a5'),_0x435dd0[_0x43d7('0x1a4')]));}if(_0x35b336===this['channel'][_0x43d7('0x37')]){return this['channel'][_0x43d7('0x29')](_0x435dd0,_0x43d7('0x1a6'));}this[_0x43d7('0x33')][_0x43d7('0x70')](this,_0x435dd0,_0x35b336);var _0x39420f=this['channel'][_0x43d7('0x57')](_0x43d7('0x1a7'),util['format'](_0x43d7('0x1a8'),config[_0x43d7('0x164')][_0x43d7('0x185')]||_0x43d7('0x1a9'),_0x35b336,this[_0x43d7('0xf')][_0x43d7('0x37')]));if(_0x39420f[_0x43d7('0xa3')]===-0x1){return _0x39420f;}return this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x166'),_0x43d7('0x1a7'),_0x35b336));};AGIVertices[_0x43d7('0x19')][_0x43d7('0x1aa')]=function(_0x57d7f5){logger['info'](util['format']('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x57d7f5[_0x43d7('0x35')]));var _0x1b0c10=this[_0x43d7('0x56')][_0x43d7('0x70')](this,_0x57d7f5[_0x43d7('0xb7')]);this[_0x43d7('0x33')][_0x43d7('0x70')](this,_0x57d7f5,_0x57d7f5[_0x43d7('0xb7')]);if(this['isConfigured'](_0x57d7f5[_0x43d7('0xd0')])){var _0x5ba5de=this[_0x43d7('0x12')][_0x43d7('0x70')](this,_0x57d7f5['variable_id']);if(_0x5ba5de){this[_0x43d7('0xf')][_0x43d7('0x9f')](_0x5ba5de,_0x1b0c10);return this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x1ab'),_0x57d7f5[_0x43d7('0xb7')],_0x5ba5de));}}return this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x1ac'),_0x57d7f5[_0x43d7('0xb7')]));};AGIVertices[_0x43d7('0x19')]['google_cloud_tts']=function(_0x1d8d68){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x1ad'),_0x1d8d68[_0x43d7('0x35')]));_0x1d8d68[_0x43d7('0x5c')]=_0x1d8d68[_0x43d7('0x5c')][_0x43d7('0x58')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x1d8d68[_0x43d7('0x5a')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')](_0x43d7('0x1ae'));}if(!this['isConfigured'](_0x1d8d68[_0x43d7('0x5c')])){return this[_0x43d7('0xf')][_0x43d7('0xaa')]('no\x20text\x20configured');}this['channel'][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x1af'),_0x1d8d68[_0x43d7('0x5c')]));var _0x46643b=this[_0x43d7('0x59')][_0x43d7('0x70')](this,_0x1d8d68);if(_0x46643b){this[_0x43d7('0xf')]['noop'](util[_0x43d7('0x26')](_0x43d7('0x1b0'),_0x46643b));var _0x53a0de=this[_0x43d7('0xf')]['streamFile'](_0x46643b);try{fs[_0x43d7('0x11b')](_0x46643b+_0x43d7('0xf6'));}catch(_0x1dcc02){logger[_0x43d7('0x29')](_0x1dcc02);}return _0x53a0de;}return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x1d8d68,_0x43d7('0x1b1'));};AGIVertices[_0x43d7('0x19')]['tts']=function(_0x175f9f){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x1b2'),_0x175f9f[_0x43d7('0x35')]));_0x175f9f['text']=_0x175f9f[_0x43d7('0x5c')][_0x43d7('0x58')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x43d7('0x87')](_0x175f9f[_0x43d7('0x5c')])){return this['channel']['noop'](_0x43d7('0xa8'));}this['channel']['noop'](util['format']('Trying\x20Google\x20TTS\x20%s',_0x175f9f[_0x43d7('0x5c')]));var _0x1c3234=this[_0x43d7('0x63')][_0x43d7('0x70')](this,_0x175f9f);if(_0x1c3234){this['channel'][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x1b3'),_0x1c3234));var _0x2b06eb=this[_0x43d7('0xf')][_0x43d7('0xf5')](_0x1c3234);try{fs[_0x43d7('0x11b')](_0x1c3234+_0x43d7('0xf6'));}catch(_0x241545){logger[_0x43d7('0x29')](_0x241545);}return _0x2b06eb;}return this['channel']['error'](_0x175f9f,'Google\x20TTS\x20is\x20unreachable');};AGIVertices[_0x43d7('0x19')][_0x43d7('0x1b4')]=function(_0x2b7de5){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x1b5'),_0x2b7de5[_0x43d7('0x35')]));if(!this['isConfigured'](_0x2b7de5[_0x43d7('0x149')])){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x2b7de5,_0x43d7('0x147'));}logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x148'),this[_0x43d7('0xf')][_0x43d7('0x38')],_0x2b7de5[_0x43d7('0x149')]));var _0x431e0f=this[_0x43d7('0x4f')][_0x43d7('0x70')](this,_0x2b7de5[_0x43d7('0x149')]);if(_0x431e0f){logger['info'](util[_0x43d7('0x26')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x43d7('0xf')][_0x43d7('0x38')],_0x2b7de5['findBy']));this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')](_0x43d7('0x14a'),this[_0x43d7('0xf')][_0x43d7('0x38')],_0x2b7de5['findBy']));return{'code':0xc8,'result':'success'};}else{logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x14c'),this[_0x43d7('0xf')][_0x43d7('0x38')],_0x2b7de5[_0x43d7('0x149')]));this[_0x43d7('0xf')][_0x43d7('0xaa')](util[_0x43d7('0x26')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x43d7('0xf')][_0x43d7('0x38')],_0x2b7de5[_0x43d7('0x149')]));return{'code':0xc8,'result':_0x43d7('0x14f')};}};AGIVertices['prototype'][_0x43d7('0x1b6')]=function(_0xee5f13){logger['info'](util[_0x43d7('0x26')](_0x43d7('0x1b7'),_0xee5f13[_0x43d7('0x35')]));var _0x4b6ff9=this[_0x43d7('0xf')][_0x43d7('0x57')]('VOICEMAIL',[_0xee5f13['mailbox'],_0xee5f13[_0x43d7('0x7a')]]);if(_0x4b6ff9['result']===-0x1){return _0x4b6ff9;}return this[_0x43d7('0xf')][_0x43d7('0xaa')](util['format'](_0x43d7('0x166'),_0x43d7('0x1b8'),_0xee5f13[_0x43d7('0x1b9')]));};AGIVertices[_0x43d7('0x19')][_0x43d7('0x1ba')]=function(_0x136473){logger[_0x43d7('0x2a')](util[_0x43d7('0x26')](_0x43d7('0x1bb'),_0x136473[_0x43d7('0x35')]));if(!this['isConfigured'](_0x136473[_0x43d7('0xd0')])){return this[_0x43d7('0xf')]['error'](_0x136473,'no\x20variable\x20selected');}var _0x1d9d80=this[_0x43d7('0x12')][_0x43d7('0x70')](this,_0x136473['variable_id']);if(!_0x1d9d80){return this[_0x43d7('0xf')][_0x43d7('0x29')](_0x136473,_0x43d7('0xd2'));}var _0x295777=this[_0x43d7('0xf')]['getVariable'](_0x1d9d80);return{'code':0xc8,'result':_0x295777[_0x43d7('0xa2')]?_0x295777[_0x43d7('0xa2')]:'-'};};String[_0x43d7('0x19')][_0x43d7('0xa1')]=function(_0x4d1a65,_0x1a7816){return this[_0x43d7('0xa0')](_0x4d1a65)[_0x43d7('0x1bc')](_0x1a7816);};module['exports']=AGIVertices;
\ No newline at end of file
index 3f77940..c00398f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dd6=['interface','isUndefined','attended','[%s][HANGUP:LINKEDID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','isNil','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','startAcw','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','getAgent','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','updateAcw','then','info','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','message','prototype','uniqueid'];(function(_0x3019dc,_0x10fadc){var _0x5550db=function(_0x253a65){while(--_0x253a65){_0x3019dc['push'](_0x3019dc['shift']());}};_0x5550db(++_0x10fadc);}(_0x8dd6,0x1c5));var _0x68dd=function(_0x26fee6,_0xfe4eb2){_0x26fee6=_0x26fee6-0x0;var _0x552a3a=_0x8dd6[_0x26fee6];return _0x552a3a;};'use strict';var util=require(_0x68dd('0x0'));var _=require(_0x68dd('0x1'));var moment=require('moment');var ami=require(_0x68dd('0x2'));var logger=require('../../../config/logger')(_0x68dd('0x3'));var RpcUser=require(_0x68dd('0x4'));var RpcVoiceAgentReport=require(_0x68dd('0x5'));function Acw(_0xe879c8){this[_0x68dd('0x6')]=_0xe879c8[_0x68dd('0x6')];this[_0x68dd('0x7')]=_0xe879c8[_0x68dd('0x7')];this['timers']=_0xe879c8[_0x68dd('0x8')];this[_0x68dd('0x9')]={};ami['on'](_0x68dd('0xa'),this[_0x68dd('0xb')][_0x68dd('0xc')](this));ami['on'](_0x68dd('0xd'),this[_0x68dd('0xe')]['bind'](this));ami['on'](_0x68dd('0xf'),this['syncHangup']['bind'](this));ami['on'](_0x68dd('0x10'),this[_0x68dd('0x11')][_0x68dd('0xc')](this));ami['on'](_0x68dd('0x12'),this['syncAttendedTransfer'][_0x68dd('0xc')](this));ami['on']('blindtransfer',this[_0x68dd('0x13')][_0x68dd('0xc')](this));ami['on'](_0x68dd('0x14'),this[_0x68dd('0x15')]['bind'](this));}function getDiff(_0x5c815e){var _0x273609=moment()['milliseconds'](0x0);var _0x46139d=moment(_0x5c815e)[_0x68dd('0x16')](0x0);return _0x273609[_0x68dd('0x17')](_0x46139d,'seconds');}Acw['prototype'][_0x68dd('0x18')]=function(_0x3be944){try{var _0x414302=this;var _0x509075=this['channels'][_0x3be944]['interface'];var _0x521904=this[_0x68dd('0x9')][_0x3be944][_0x68dd('0x19')];var _0x2e5579=this[_0x68dd('0x6')][_0x521904];var _0x4ad527=![];var _0x117db8=_0x68dd('0x1a');if(_0x2e5579[_0x68dd('0x1b')]){if(_0x2e5579[_0x68dd('0x1c')][_0x68dd('0x1d')]){_0x4ad527=!![];_0x117db8=_0x2e5579[_0x68dd('0x1c')][_0x68dd('0x1d')];}}ami['Action']({'action':'QueuePause','interface':_0x509075,'paused':!![],'reason':_0x117db8})['then'](function(_0x5cc2ad){if(_0x414302[_0x68dd('0x7')][_0x509075]){return RpcUser[_0x68dd('0x1e')](_0x414302[_0x68dd('0x7')][_0x509075]['id'])['then'](function(_0x39233c){if(_0x39233c&&!_0x39233c['voicePause']){logger['info'](_0x68dd('0x1f'),_0x3be944,_0x509075,_0x521904);var _0x149ee6=_0x414302['channels'][_0x3be944]['attended']&&_0x414302[_0x68dd('0x9')][_0x3be944][_0x68dd('0x20')]?_0x414302['channels'][_0x3be944][_0x68dd('0x20')]:_0x3be944;return RpcUser[_0x68dd('0x21')](_0x414302[_0x68dd('0x7')][_0x509075],_0x117db8,_0x149ee6)['then'](function(_0x1ca401){if(!_0x4ad527){_0x414302[_0x68dd('0x8')][_0x509075]={};logger['info']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x3be944,_0x414302[_0x68dd('0x6')][_0x521904][_0x68dd('0x22')],_0x509075,_0x521904);_0x414302['timers'][_0x509075][_0x68dd('0x23')]=setTimeout(_0x414302[_0x68dd('0x24')][_0x68dd('0xc')](_0x414302,_0x509075),_0x414302[_0x68dd('0x6')][_0x521904][_0x68dd('0x22')]*0x3e8);_0x414302['timers'][_0x509075][_0x68dd('0x25')]=moment()[_0x68dd('0x26')](_0x68dd('0x27'));_0x414302[_0x68dd('0x8')][_0x509075]['uniqueid']=_0x3be944;_0x414302[_0x68dd('0x8')][_0x509075][_0x68dd('0x19')]=_0x521904;_0x414302['timers'][_0x509075][_0x68dd('0x28')]=function(){var _0x306ff3=getDiff(_0x414302[_0x68dd('0x8')][_0x509075][_0x68dd('0x25')]);clearTimeout(_0x414302[_0x68dd('0x8')][_0x509075][_0x68dd('0x23')]);_0x414302['timers'][_0x509075][_0x68dd('0x23')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x306ff3},_0x414302['timers'][_0x509075]['uniqueid'],_0x509075)[_0x68dd('0x29')](function(_0x167df4){logger[_0x68dd('0x2a')]('[%s][UPDATE][ACWTIME:%s]',_0x3be944,_0x306ff3,_0x167df4);})[_0x68dd('0x2b')](function(_0x4c9643){logger[_0x68dd('0x2c')](_0x68dd('0x2d'),_0x3be944,_0x4c9643);});delete _0x414302[_0x68dd('0x8')][_0x509075];};}});}else{logger['info'](_0x68dd('0x2e'),_0x3be944,_0x509075,_0x521904);}});}})[_0x68dd('0x2b')](function(_0x3f01d7){logger[_0x68dd('0x2c')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x3be944,_0x414302[_0x68dd('0x6')][_0x521904][_0x68dd('0x22')],_0x509075,_0x521904);})[_0x68dd('0x2f')](function(){delete _0x414302[_0x68dd('0x9')][_0x3be944];});}catch(_0x5d3d88){logger[_0x68dd('0x2c')](_0x68dd('0x30'),_0x5d3d88['message']);}};Acw['prototype'][_0x68dd('0x24')]=function(_0x2b03c3){try{var _0x3c5031=this;if(_0x3c5031['timers'][_0x2b03c3]){_0x3c5031[_0x68dd('0x8')][_0x2b03c3][_0x68dd('0x23')]=![];var _0x3b75bb=_0x3c5031[_0x68dd('0x8')][_0x2b03c3]['uniqueid'];var _0x48645f=_0x3c5031[_0x68dd('0x8')][_0x2b03c3][_0x68dd('0x19')];var _0x313692=_0x3c5031[_0x68dd('0x6')][_0x48645f][_0x68dd('0x22')];logger[_0x68dd('0x2a')]('[%s][TIMER][STOP][AGENT:%s]',_0x3b75bb,_0x2b03c3);RpcUser[_0x68dd('0x31')](this[_0x68dd('0x7')][_0x2b03c3]);RpcVoiceAgentReport['update']({'acwtime':_0x313692,'agentacw':!![]},_0x3b75bb,_0x2b03c3)['then'](function(_0x53e913){logger['info'](_0x68dd('0x32'),_0x3b75bb,_0x313692,_0x53e913);})[_0x68dd('0x2b')](function(_0xc709ad){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x3b75bb,_0xc709ad);});}else{logger[_0x68dd('0x2c')](_0x68dd('0x33'),_0x2b03c3);if(_0x3c5031[_0x68dd('0x8')]){logger[_0x68dd('0x2a')](_0x68dd('0x34'),JSON['stringify'](_0x3c5031[_0x68dd('0x8')]));}}}catch(_0x3e919a){logger[_0x68dd('0x2c')](_0x68dd('0x35'),_0x3e919a[_0x68dd('0x36')]);}};Acw[_0x68dd('0x37')][_0x68dd('0xb')]=function(_0x52b8bb){try{if(this[_0x68dd('0x6')][_0x52b8bb[_0x68dd('0x19')]]&&(this[_0x68dd('0x6')][_0x52b8bb[_0x68dd('0x19')]][_0x68dd('0x3')]||this['voiceQueues'][_0x52b8bb['queue']][_0x68dd('0x1b')])){if(this[_0x68dd('0x7')][_0x52b8bb['interface']]){this[_0x68dd('0x9')][_0x52b8bb[_0x68dd('0x38')]]={'queue':_0x52b8bb[_0x68dd('0x19')],'interface':_0x52b8bb[_0x68dd('0x39')],'destlinkedid':_0x52b8bb[_0x68dd('0x20')]};}}}catch(_0x3979a7){logger[_0x68dd('0x2c')]('[ACW][syncAgentConnect]\x20%s',_0x3979a7[_0x68dd('0x36')]);}};Acw[_0x68dd('0x37')][_0x68dd('0x15')]=function(_0x1d579e){try{if(this['voiceQueues'][_0x1d579e[_0x68dd('0x19')]]&&(this['voiceQueues'][_0x1d579e['queue']][_0x68dd('0x3')]||this[_0x68dd('0x6')][_0x1d579e[_0x68dd('0x19')]]['mandatoryDisposition'])){if(this[_0x68dd('0x7')][_0x1d579e[_0x68dd('0x39')]]){this[_0x68dd('0x9')][_0x1d579e[_0x68dd('0x38')]]={'queue':_0x1d579e[_0x68dd('0x19')],'interface':_0x1d579e[_0x68dd('0x39')]};}}}catch(_0x353a25){logger['error']('[ACW][syncAgentConnectPreview]\x20%s',_0x353a25[_0x68dd('0x36')]);}};Acw[_0x68dd('0x37')][_0x68dd('0xe')]=function(_0x1e9109){try{if(this['channels'][_0x1e9109['uniqueid']]&&_[_0x68dd('0x3a')](this[_0x68dd('0x9')][_0x1e9109['uniqueid']]['attended'])){logger[_0x68dd('0x2a')]('[%s][HANGUP:UNIQUEID]',_0x1e9109['uniqueid']);this[_0x68dd('0x18')](_0x1e9109['uniqueid']);}else if(this[_0x68dd('0x9')][_0x1e9109['linkedid']]&&_['isUndefined'](this[_0x68dd('0x9')][_0x1e9109['linkedid']][_0x68dd('0x3b')])){logger[_0x68dd('0x2a')](_0x68dd('0x3c'),_0x1e9109[_0x68dd('0x3d')]);this['startAcw'](_0x1e9109[_0x68dd('0x3d')]);}}catch(_0x529c4b){logger[_0x68dd('0x2c')](_0x68dd('0x3e'),_0x529c4b[_0x68dd('0x36')]);}};Acw['prototype']['syncHangup']=function(_0x496661){try{if(this[_0x68dd('0x9')][_0x496661[_0x68dd('0x38')]]&&this[_0x68dd('0x9')][_0x496661['uniqueid']][_0x68dd('0x3b')]){logger[_0x68dd('0x2a')](_0x68dd('0x3f'),_0x496661[_0x68dd('0x38')]);this[_0x68dd('0x18')](_0x496661[_0x68dd('0x38')]);}else if(this[_0x68dd('0x9')][_0x496661[_0x68dd('0x3d')]]&&this[_0x68dd('0x9')][_0x496661[_0x68dd('0x3d')]][_0x68dd('0x3b')]){logger[_0x68dd('0x2a')](_0x68dd('0x40'),_0x496661[_0x68dd('0x3d')]);this[_0x68dd('0x18')](_0x496661['linkedid']);}}catch(_0x57872c){logger['error'](_0x68dd('0x41'),_0x57872c[_0x68dd('0x36')]);}};Acw['prototype'][_0x68dd('0x42')]=function(_0x42479c){try{if(!_['isNil'](this['channels'][_0x42479c[_0x68dd('0x43')]])){this[_0x68dd('0x18')](_0x42479c[_0x68dd('0x43')]);if(this[_0x68dd('0x9')][_0x42479c['secondtransfereruniqueid']]){this[_0x68dd('0x9')][_0x42479c[_0x68dd('0x44')]]['attended']=!![];this[_0x68dd('0x9')][_0x42479c[_0x68dd('0x45')]]=this[_0x68dd('0x9')][_0x42479c[_0x68dd('0x44')]];delete this['channels'][_0x42479c['secondtransfereruniqueid']];}}else if(!_[_0x68dd('0x46')](this['channels'][_0x42479c[_0x68dd('0x45')]])){this[_0x68dd('0x18')](_0x42479c[_0x68dd('0x45')]);if(this[_0x68dd('0x9')][_0x42479c['origtransfereruniqueid']]){this[_0x68dd('0x9')][_0x42479c[_0x68dd('0x47')]][_0x68dd('0x3b')]=!![];this['channels'][_0x42479c[_0x68dd('0x43')]]=this[_0x68dd('0x9')][_0x42479c[_0x68dd('0x47')]];delete this[_0x68dd('0x9')][_0x42479c[_0x68dd('0x47')]];}}}catch(_0xcd1369){logger[_0x68dd('0x2c')](_0x68dd('0x48'),_0xcd1369['message']);}};Acw[_0x68dd('0x37')][_0x68dd('0x13')]=function(_0xe4f659){try{if(this['channels'][_0xe4f659['transfereruniqueid']]){logger[_0x68dd('0x2a')](_0x68dd('0x49'),JSON[_0x68dd('0x4a')](_0xe4f659[_0x68dd('0x4b')]));this[_0x68dd('0x18')](_0xe4f659[_0x68dd('0x4b')]);}else if(this[_0x68dd('0x9')][_0xe4f659[_0x68dd('0x4c')]]){logger[_0x68dd('0x2a')](_0x68dd('0x4d'),JSON[_0x68dd('0x4a')](_0xe4f659['transfererlinkedid']));this[_0x68dd('0x18')](_0xe4f659['transfererlinkedid']);}}catch(_0xf84418){logger[_0x68dd('0x2c')](_0x68dd('0x4e'),_0xf84418[_0x68dd('0x36')]);}};Acw[_0x68dd('0x37')][_0x68dd('0x11')]=function(_0x2bf3f4){try{if(this[_0x68dd('0x6')][_0x2bf3f4['queue']]&&this[_0x68dd('0x6')][_0x2bf3f4[_0x68dd('0x19')]][_0x68dd('0x4f')]===_0x68dd('0x50')){if(this[_0x68dd('0x7')][_0x2bf3f4['interface']]){logger[_0x68dd('0x2a')](_0x68dd('0x51'),_0x2bf3f4['uniqueid'],_0x2bf3f4[_0x68dd('0x39')],_0x2bf3f4['queue']);return RpcUser[_0x68dd('0x21')](this[_0x68dd('0x7')][_0x2bf3f4[_0x68dd('0x39')]],_0x68dd('0x52'),_0x2bf3f4[_0x68dd('0x38')]);}}}catch(_0x329c81){logger[_0x68dd('0x2c')](_0x68dd('0x53'),_0x329c81[_0x68dd('0x36')]);}};module[_0x68dd('0x54')]=Acw;
\ No newline at end of file
+var _0xf711=['syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','info','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','lastPauseAt','update','catch','error','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','prototype','[%s][TIMER][STOP][AGENT:%s]','[%s][UPDATE][ACWTIME:%s]','[%s][UPDATE][ERRORS:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[%s][HANGUP:UNIQUEID]','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','transfereeuniqueid','transfertargetuniqueid','secondtransfereruniqueid','isNil','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer'];(function(_0x267fe9,_0x14dbd2){var _0x41c163=function(_0x875ca5){while(--_0x875ca5){_0x267fe9['push'](_0x267fe9['shift']());}};_0x41c163(++_0x14dbd2);}(_0xf711,0x1a0));var _0x1f71=function(_0x263ad8,_0x119328){_0x263ad8=_0x263ad8-0x0;var _0x511c79=_0xf711[_0x263ad8];return _0x511c79;};'use strict';var util=require(_0x1f71('0x0'));var _=require('lodash');var moment=require('moment');var ami=require(_0x1f71('0x1'));var logger=require('../../../config/logger')(_0x1f71('0x2'));var RpcUser=require(_0x1f71('0x3'));var RpcVoiceAgentReport=require(_0x1f71('0x4'));function Acw(_0x448b21){this[_0x1f71('0x5')]=_0x448b21[_0x1f71('0x5')];this[_0x1f71('0x6')]=_0x448b21[_0x1f71('0x6')];this[_0x1f71('0x7')]=_0x448b21[_0x1f71('0x7')];this[_0x1f71('0x8')]={};ami['on'](_0x1f71('0x9'),this[_0x1f71('0xa')][_0x1f71('0xb')](this));ami['on']('hanguprequest',this[_0x1f71('0xc')]['bind'](this));ami['on'](_0x1f71('0xd'),this[_0x1f71('0xe')][_0x1f71('0xb')](this));ami['on'](_0x1f71('0xf'),this[_0x1f71('0x10')][_0x1f71('0xb')](this));ami['on']('attendedtransfer',this[_0x1f71('0x11')][_0x1f71('0xb')](this));ami['on'](_0x1f71('0x12'),this[_0x1f71('0x13')]['bind'](this));ami['on'](_0x1f71('0x14'),this[_0x1f71('0x15')][_0x1f71('0xb')](this));}function getDiff(_0x3e409d){var _0x50ffb7=moment()[_0x1f71('0x16')](0x0);var _0xe800db=moment(_0x3e409d)['milliseconds'](0x0);return _0x50ffb7[_0x1f71('0x17')](_0xe800db,_0x1f71('0x18'));}Acw['prototype'][_0x1f71('0x19')]=function(_0x34f2a3){try{var _0x35b0e4=this;var _0x29a023=this[_0x1f71('0x8')][_0x34f2a3][_0x1f71('0x1a')];var _0x88dc04=this[_0x1f71('0x8')][_0x34f2a3][_0x1f71('0x1b')];var _0x5e0fe6=this[_0x1f71('0x5')][_0x88dc04];var _0x4c4321=![];var _0x38c2dd=_0x1f71('0x1c');if(_0x5e0fe6[_0x1f71('0x1d')]){if(_0x5e0fe6[_0x1f71('0x1e')][_0x1f71('0x1f')]){_0x4c4321=!![];_0x38c2dd=_0x5e0fe6['mandatoryDispositionPause'][_0x1f71('0x1f')];}}ami[_0x1f71('0x20')]({'action':_0x1f71('0x21'),'interface':_0x29a023,'paused':!![],'reason':_0x38c2dd})[_0x1f71('0x22')](function(_0x5a1874){if(_0x35b0e4['agents'][_0x29a023]){return RpcUser[_0x1f71('0x23')](_0x35b0e4[_0x1f71('0x6')][_0x29a023]['id'])[_0x1f71('0x22')](function(_0x2ed114){if(_0x2ed114&&!_0x2ed114[_0x1f71('0x24')]){logger[_0x1f71('0x25')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x34f2a3,_0x29a023,_0x88dc04);var _0x34bcb9=_0x35b0e4[_0x1f71('0x8')][_0x34f2a3][_0x1f71('0x26')]&&_0x35b0e4['channels'][_0x34f2a3][_0x1f71('0x27')]?_0x35b0e4[_0x1f71('0x8')][_0x34f2a3]['destlinkedid']:_0x34f2a3;return RpcUser[_0x1f71('0x28')](_0x35b0e4['agents'][_0x29a023],_0x38c2dd,_0x34bcb9)[_0x1f71('0x22')](function(_0x39957e){if(!_0x4c4321){_0x35b0e4[_0x1f71('0x7')][_0x29a023]={};logger[_0x1f71('0x25')](_0x1f71('0x29'),_0x34f2a3,_0x35b0e4[_0x1f71('0x5')][_0x88dc04][_0x1f71('0x2a')],_0x29a023,_0x88dc04);_0x35b0e4[_0x1f71('0x7')][_0x29a023][_0x1f71('0x2b')]=setTimeout(_0x35b0e4[_0x1f71('0x2c')][_0x1f71('0xb')](_0x35b0e4,_0x29a023),_0x35b0e4[_0x1f71('0x5')][_0x88dc04][_0x1f71('0x2a')]*0x3e8);_0x35b0e4['timers'][_0x29a023]['lastPauseAt']=moment()[_0x1f71('0x2d')](_0x1f71('0x2e'));_0x35b0e4['timers'][_0x29a023][_0x1f71('0x2f')]=_0x34f2a3;_0x35b0e4[_0x1f71('0x7')][_0x29a023]['queue']=_0x88dc04;_0x35b0e4[_0x1f71('0x7')][_0x29a023][_0x1f71('0x30')]=function(){var _0x483ba8=getDiff(_0x35b0e4[_0x1f71('0x7')][_0x29a023][_0x1f71('0x31')]);clearTimeout(_0x35b0e4['timers'][_0x29a023][_0x1f71('0x2b')]);_0x35b0e4[_0x1f71('0x7')][_0x29a023][_0x1f71('0x2b')]=![];RpcVoiceAgentReport[_0x1f71('0x32')]({'acwtime':_0x483ba8},_0x35b0e4['timers'][_0x29a023][_0x1f71('0x2f')],_0x29a023)['then'](function(_0x4af317){logger[_0x1f71('0x25')]('[%s][UPDATE][ACWTIME:%s]',_0x34f2a3,_0x483ba8,_0x4af317);})[_0x1f71('0x33')](function(_0x31bade){logger[_0x1f71('0x34')]('[%s][UPDATE][ERRORS:%s]',_0x34f2a3,_0x31bade);});delete _0x35b0e4[_0x1f71('0x7')][_0x29a023];};}});}else{logger[_0x1f71('0x25')](_0x1f71('0x35'),_0x34f2a3,_0x29a023,_0x88dc04);}});}})[_0x1f71('0x33')](function(_0x103252){logger[_0x1f71('0x34')](_0x1f71('0x29'),_0x34f2a3,_0x35b0e4[_0x1f71('0x5')][_0x88dc04]['acwTimeout'],_0x29a023,_0x88dc04);})[_0x1f71('0x36')](function(){delete _0x35b0e4[_0x1f71('0x8')][_0x34f2a3];});}catch(_0x30a08f){logger[_0x1f71('0x34')](_0x1f71('0x37'),_0x30a08f[_0x1f71('0x38')]);}};Acw[_0x1f71('0x39')][_0x1f71('0x2c')]=function(_0x3c5e68){try{var _0x473e8c=this;if(_0x473e8c[_0x1f71('0x7')][_0x3c5e68]){_0x473e8c[_0x1f71('0x7')][_0x3c5e68][_0x1f71('0x2b')]=![];var _0x46eb22=_0x473e8c['timers'][_0x3c5e68][_0x1f71('0x2f')];var _0x1cac17=_0x473e8c['timers'][_0x3c5e68][_0x1f71('0x1b')];var _0x5d9678=_0x473e8c[_0x1f71('0x5')][_0x1cac17][_0x1f71('0x2a')];logger[_0x1f71('0x25')](_0x1f71('0x3a'),_0x46eb22,_0x3c5e68);RpcUser['saveUnpause'](this[_0x1f71('0x6')][_0x3c5e68]);RpcVoiceAgentReport[_0x1f71('0x32')]({'acwtime':_0x5d9678,'agentacw':!![]},_0x46eb22,_0x3c5e68)[_0x1f71('0x22')](function(_0x2ab162){logger[_0x1f71('0x25')](_0x1f71('0x3b'),_0x46eb22,_0x5d9678,_0x2ab162);})[_0x1f71('0x33')](function(_0x28da36){logger[_0x1f71('0x34')](_0x1f71('0x3c'),_0x46eb22,_0x28da36);});}else{logger[_0x1f71('0x34')](_0x1f71('0x3d'),_0x3c5e68);if(_0x473e8c[_0x1f71('0x7')]){logger['info'](_0x1f71('0x3e'),JSON[_0x1f71('0x3f')](_0x473e8c[_0x1f71('0x7')]));}}}catch(_0x1061cb){logger[_0x1f71('0x34')](_0x1f71('0x40'),_0x1061cb['message']);}};Acw[_0x1f71('0x39')]['syncAgentConnect']=function(_0x1d48ed){try{if(this[_0x1f71('0x5')][_0x1d48ed['queue']]&&(this[_0x1f71('0x5')][_0x1d48ed[_0x1f71('0x1b')]][_0x1f71('0x2')]||this[_0x1f71('0x5')][_0x1d48ed['queue']]['mandatoryDisposition'])){if(this['agents'][_0x1d48ed[_0x1f71('0x1a')]]){this[_0x1f71('0x8')][_0x1d48ed[_0x1f71('0x2f')]]={'queue':_0x1d48ed[_0x1f71('0x1b')],'interface':_0x1d48ed[_0x1f71('0x1a')],'destlinkedid':_0x1d48ed[_0x1f71('0x27')]};}}}catch(_0x5262f2){logger[_0x1f71('0x34')](_0x1f71('0x41'),_0x5262f2['message']);}};Acw['prototype'][_0x1f71('0x15')]=function(_0xd87048){try{if(this[_0x1f71('0x5')][_0xd87048['queue']]&&(this[_0x1f71('0x5')][_0xd87048[_0x1f71('0x1b')]][_0x1f71('0x2')]||this['voiceQueues'][_0xd87048[_0x1f71('0x1b')]][_0x1f71('0x1d')])){if(this[_0x1f71('0x6')][_0xd87048['interface']]){this[_0x1f71('0x8')][_0xd87048['uniqueid']]={'queue':_0xd87048['queue'],'interface':_0xd87048['interface']};}}}catch(_0x161221){logger[_0x1f71('0x34')]('[ACW][syncAgentConnectPreview]\x20%s',_0x161221[_0x1f71('0x38')]);}};Acw[_0x1f71('0x39')][_0x1f71('0xc')]=function(_0x221cc1){try{if(this[_0x1f71('0x8')][_0x221cc1[_0x1f71('0x2f')]]&&_['isUndefined'](this[_0x1f71('0x8')][_0x221cc1['uniqueid']]['attended'])){logger['info'](_0x1f71('0x42'),_0x221cc1['uniqueid']);this['startAcw'](_0x221cc1[_0x1f71('0x2f')]);}else if(this[_0x1f71('0x8')][_0x221cc1[_0x1f71('0x43')]]&&_[_0x1f71('0x44')](this[_0x1f71('0x8')][_0x221cc1[_0x1f71('0x43')]][_0x1f71('0x26')])){logger[_0x1f71('0x25')](_0x1f71('0x45'),_0x221cc1['linkedid']);this[_0x1f71('0x19')](_0x221cc1[_0x1f71('0x43')]);}}catch(_0x2fcf7c){logger[_0x1f71('0x34')](_0x1f71('0x46'),_0x2fcf7c[_0x1f71('0x38')]);}};Acw[_0x1f71('0x39')][_0x1f71('0xe')]=function(_0x4947e4){try{if(this[_0x1f71('0x8')][_0x4947e4[_0x1f71('0x2f')]]&&this['channels'][_0x4947e4['uniqueid']][_0x1f71('0x26')]){logger[_0x1f71('0x25')](_0x1f71('0x47'),_0x4947e4[_0x1f71('0x2f')]);this[_0x1f71('0x19')](_0x4947e4['uniqueid']);}else if(this[_0x1f71('0x8')][_0x4947e4[_0x1f71('0x43')]]&&this[_0x1f71('0x8')][_0x4947e4[_0x1f71('0x43')]]['attended']){logger[_0x1f71('0x25')](_0x1f71('0x48'),_0x4947e4['linkedid']);this[_0x1f71('0x19')](_0x4947e4[_0x1f71('0x43')]);}}catch(_0x3f9514){logger['error']('[ACW][syncHangup]\x20%s',_0x3f9514[_0x1f71('0x38')]);}};Acw[_0x1f71('0x39')]['syncAttendedTransfer']=function(_0x51075e){try{if(!_['isNil'](this[_0x1f71('0x8')][_0x51075e[_0x1f71('0x49')]])){this[_0x1f71('0x19')](_0x51075e['transfereeuniqueid']);if(this[_0x1f71('0x8')][_0x51075e['secondtransfereruniqueid']]){this['channels'][_0x51075e['secondtransfereruniqueid']][_0x1f71('0x26')]=!![];this[_0x1f71('0x8')][_0x51075e[_0x1f71('0x4a')]]=this[_0x1f71('0x8')][_0x51075e[_0x1f71('0x4b')]];delete this['channels'][_0x51075e[_0x1f71('0x4b')]];}}else if(!_[_0x1f71('0x4c')](this['channels'][_0x51075e[_0x1f71('0x4a')]])){this['startAcw'](_0x51075e['transfertargetuniqueid']);if(this[_0x1f71('0x8')][_0x51075e[_0x1f71('0x4d')]]){this['channels'][_0x51075e[_0x1f71('0x4d')]]['attended']=!![];this['channels'][_0x51075e['transfereeuniqueid']]=this[_0x1f71('0x8')][_0x51075e[_0x1f71('0x4d')]];delete this[_0x1f71('0x8')][_0x51075e[_0x1f71('0x4d')]];}}}catch(_0x127489){logger[_0x1f71('0x34')](_0x1f71('0x4e'),_0x127489[_0x1f71('0x38')]);}};Acw[_0x1f71('0x39')][_0x1f71('0x13')]=function(_0x45fa08){try{if(this[_0x1f71('0x8')][_0x45fa08[_0x1f71('0x4f')]]){logger['info']('[%s][BLINDTRANSFER:UNIQUEID]',JSON['stringify'](_0x45fa08[_0x1f71('0x4f')]));this['startAcw'](_0x45fa08['transfereruniqueid']);}else if(this[_0x1f71('0x8')][_0x45fa08[_0x1f71('0x50')]]){logger['info']('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x1f71('0x3f')](_0x45fa08[_0x1f71('0x50')]));this['startAcw'](_0x45fa08[_0x1f71('0x50')]);}}catch(_0x3a43d2){logger[_0x1f71('0x34')](_0x1f71('0x51'),_0x3a43d2[_0x1f71('0x38')]);}};Acw[_0x1f71('0x39')][_0x1f71('0x10')]=function(_0x5cce0e){try{if(this[_0x1f71('0x5')][_0x5cce0e[_0x1f71('0x1b')]]&&this[_0x1f71('0x5')][_0x5cce0e['queue']][_0x1f71('0x52')]===_0x1f71('0x53')){if(this[_0x1f71('0x6')][_0x5cce0e[_0x1f71('0x1a')]]){logger['info'](_0x1f71('0x54'),_0x5cce0e['uniqueid'],_0x5cce0e['interface'],_0x5cce0e[_0x1f71('0x1b')]);return RpcUser[_0x1f71('0x28')](this['agents'][_0x5cce0e['interface']],'Auto-Pause',_0x5cce0e[_0x1f71('0x2f')]);}}}catch(_0x3f2338){logger[_0x1f71('0x34')](_0x1f71('0x55'),_0x3f2338[_0x1f71('0x38')]);}};module[_0x1f71('0x56')]=Acw;
\ No newline at end of file
index 6738534..737bae8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6da4=['Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionSipPeerStatus','catch','log','exports','asterisk-manager','moment','util','lodash','port','asterisk','password','keepConnected','promisify','action','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','username','inspect','error','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','Action','devicestatelist','sippeerstatus','actionQueueSummary','actionCoreShowChannels','info'];(function(_0x4a5f6c,_0x4f532e){var _0x281ffd=function(_0x4c68e3){while(--_0x4c68e3){_0x4a5f6c['push'](_0x4a5f6c['shift']());}};_0x281ffd(++_0x4f532e);}(_0x6da4,0xc5));var _0x46da=function(_0x32e4d3,_0x4be410){_0x32e4d3=_0x32e4d3-0x0;var _0x36fcc0=_0x6da4[_0x32e4d3];return _0x36fcc0;};'use strict';var Manager=require(_0x46da('0x0'));var BPromise=require('bluebird');var moment=require(_0x46da('0x1'));var util=require(_0x46da('0x2'));var _=require(_0x46da('0x3'));var logger=require('../../config/logger')('ami');var config=require('../../config/environment');var ami=new Manager(config['asterisk'][_0x46da('0x4')],config['asterisk']['ip'],config[_0x46da('0x5')]['username'],config[_0x46da('0x5')][_0x46da('0x6')],!![]);ami[_0x46da('0x7')]();ami['Action']=BPromise[_0x46da('0x8')](ami[_0x46da('0x9')]);function error(_0x3031d1){logger['error'](util[_0x46da('0xa')](_0x46da('0xb'),config['asterisk'][_0x46da('0xc')],config[_0x46da('0x5')]['ip'],config['asterisk'][_0x46da('0x4')],util[_0x46da('0xd')](_0x3031d1,![],null)));}function close(){logger[_0x46da('0xe')](util['format'](_0x46da('0xf'),config['asterisk'][_0x46da('0xc')],config['asterisk']['ip'],config[_0x46da('0x5')]['port']));}ami[_0x46da('0x10')]=function(){return function(){return ami['Action']({'action':_0x46da('0x11')});};};ami[_0x46da('0x12')]=function(){return function(){return ami[_0x46da('0x13')]({'action':_0x46da('0x14')});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0x46da('0x13')]({'action':_0x46da('0x15')});};};ami[_0x46da('0x16')]=function(){return function(){return ami['Action']({'action':'queuesummary'});};};ami[_0x46da('0x17')]=function(){return function(){return ami['Action']({'action':'coreshowchannels'});};};function connect(_0x3f1a83){logger[_0x46da('0x18')](util['format'](_0x46da('0x19'),config[_0x46da('0x5')][_0x46da('0xc')],config['asterisk']['ip'],config['asterisk'][_0x46da('0x4')]));ami[_0x46da('0x1a')](_0x46da('0xe'),error);ami[_0x46da('0x1a')](_0x46da('0x1b'),close);}ami['on'](_0x46da('0x1c'),connect);ami['on'](_0x46da('0x1d'),function(_0x360fcf){logger[_0x46da('0x18')](util[_0x46da('0xa')]('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0x46da('0x5')][_0x46da('0xc')],config[_0x46da('0x5')]['ip'],config['asterisk'][_0x46da('0x4')],util[_0x46da('0xd')](_0x360fcf,![],null)));});ami['on']('fullybooted',function(_0x1f85f8){logger[_0x46da('0x18')](util[_0x46da('0xa')](_0x46da('0x1e'),config[_0x46da('0x5')][_0x46da('0xc')],config[_0x46da('0x5')]['ip'],config['asterisk'][_0x46da('0x4')]));return BPromise[_0x46da('0x1f')]()[_0x46da('0x20')](ami['actionSipShowRegistry']())[_0x46da('0x20')](ami[_0x46da('0x12')]())['then'](ami[_0x46da('0x21')]())['then'](ami[_0x46da('0x16')]())[_0x46da('0x20')](ami[_0x46da('0x17')]())[_0x46da('0x22')](function(_0x64e2dd){console[_0x46da('0x23')](_0x64e2dd);});});ami[_0x46da('0x1a')](_0x46da('0xe'),error);ami[_0x46da('0x1a')](_0x46da('0x1b'),close);module[_0x46da('0x24')]=ami;
\ No newline at end of file
+var _0x5da6=['actionSipPeerStatus','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','inspect','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','log','exports','asterisk-manager','bluebird','moment','util','lodash','ami','../../config/environment','asterisk','username','password','keepConnected','Action','action','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','error','port','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist'];(function(_0x571a17,_0x63fb3d){var _0x3ef337=function(_0x12096b){while(--_0x12096b){_0x571a17['push'](_0x571a17['shift']());}};_0x3ef337(++_0x63fb3d);}(_0x5da6,0x103));var _0x65da=function(_0x2d7063,_0x564e04){_0x2d7063=_0x2d7063-0x0;var _0x303dfc=_0x5da6[_0x2d7063];return _0x303dfc;};'use strict';var Manager=require(_0x65da('0x0'));var BPromise=require(_0x65da('0x1'));var moment=require(_0x65da('0x2'));var util=require(_0x65da('0x3'));var _=require(_0x65da('0x4'));var logger=require('../../config/logger')(_0x65da('0x5'));var config=require(_0x65da('0x6'));var ami=new Manager(config[_0x65da('0x7')]['port'],config[_0x65da('0x7')]['ip'],config[_0x65da('0x7')][_0x65da('0x8')],config[_0x65da('0x7')][_0x65da('0x9')],!![]);ami[_0x65da('0xa')]();ami[_0x65da('0xb')]=BPromise['promisify'](ami[_0x65da('0xc')]);function error(_0x1c9d31){logger['error'](util[_0x65da('0xd')](_0x65da('0xe'),config[_0x65da('0x7')][_0x65da('0x8')],config['asterisk']['ip'],config[_0x65da('0x7')]['port'],util['inspect'](_0x1c9d31,![],null)));}function close(){logger[_0x65da('0xf')](util[_0x65da('0xd')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config[_0x65da('0x7')][_0x65da('0x8')],config[_0x65da('0x7')]['ip'],config['asterisk'][_0x65da('0x10')]));}ami[_0x65da('0x11')]=function(){return function(){return ami[_0x65da('0xb')]({'action':_0x65da('0x12')});};};ami[_0x65da('0x13')]=function(){return function(){return ami['Action']({'action':_0x65da('0x14')});};};ami[_0x65da('0x15')]=function(){return function(){return ami[_0x65da('0xb')]({'action':_0x65da('0x16')});};};ami['actionQueueSummary']=function(){return function(){return ami[_0x65da('0xb')]({'action':_0x65da('0x17')});};};ami[_0x65da('0x18')]=function(){return function(){return ami[_0x65da('0xb')]({'action':_0x65da('0x19')});};};function connect(_0x30f9e9){logger[_0x65da('0x1a')](util[_0x65da('0xd')](_0x65da('0x1b'),config['asterisk'][_0x65da('0x8')],config['asterisk']['ip'],config[_0x65da('0x7')][_0x65da('0x10')]));ami[_0x65da('0x1c')](_0x65da('0xf'),error);ami[_0x65da('0x1c')](_0x65da('0x1d'),close);}ami['on'](_0x65da('0x1e'),connect);ami['on'](_0x65da('0x1f'),function(_0x9635cc){logger[_0x65da('0x1a')](util['format'](_0x65da('0x20'),config[_0x65da('0x7')][_0x65da('0x8')],config[_0x65da('0x7')]['ip'],config['asterisk']['port'],util[_0x65da('0x21')](_0x9635cc,![],null)));});ami['on'](_0x65da('0x22'),function(_0x141d62){logger['info'](util[_0x65da('0xd')](_0x65da('0x23'),config['asterisk'][_0x65da('0x8')],config[_0x65da('0x7')]['ip'],config[_0x65da('0x7')]['port']));return BPromise[_0x65da('0x24')]()['then'](ami[_0x65da('0x11')]())['then'](ami[_0x65da('0x13')]())[_0x65da('0x25')](ami[_0x65da('0x15')]())[_0x65da('0x25')](ami['actionQueueSummary']())['then'](ami[_0x65da('0x18')]())['catch'](function(_0x9efc24){console[_0x65da('0x26')](_0x9efc24);});});ami['once']('error',error);ami[_0x65da('0x1c')](_0x65da('0x1d'),close);module[_0x65da('0x27')]=ami;
\ No newline at end of file
index ae29e9e..e59b069 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['rpc','error','message','result','exports','jayson/promise','http','request','then','debug','memberReport'];(function(_0x3e9030,_0x16c384){var _0x526b49=function(_0x3228fe){while(--_0x3228fe){_0x3e9030['push'](_0x3e9030['shift']());}};_0x526b49(++_0x16c384);}(_0xf4eb,0xec));var _0xbf4e=function(_0x6854e6,_0x64c51e){_0x6854e6=_0x6854e6-0x0;var _0xf29a80=_0xf4eb[_0x6854e6];return _0xf29a80;};'use strict';var jayson=require(_0xbf4e('0x0'));var BPromise=require('bluebird');var logger=require('../../config/logger')('ami');var client=jayson['client'][_0xbf4e('0x1')]({'port':0x2329});client['Request']=function(_0x4e7fa7,_0x2e3070){return new BPromise(function(_0x1c7606,_0x32d1d7){return client[_0xbf4e('0x2')](_0x4e7fa7,_0x2e3070)[_0xbf4e('0x3')](function(_0x2fcfed){logger[_0xbf4e('0x4')]('rpc',_0xbf4e('0x5'),_0x4e7fa7,_0x2e3070,_0x2fcfed);if(_0x2fcfed['error']){logger['error'](_0xbf4e('0x6'),_0xbf4e('0x5'),_0x4e7fa7,_0x2fcfed[_0xbf4e('0x7')][_0xbf4e('0x8')],_0x2e3070);return _0x32d1d7(_0x2fcfed[_0xbf4e('0x7')][_0xbf4e('0x8')]);}else{return _0x1c7606(_0x2fcfed[_0xbf4e('0x9')]);}})['catch'](function(_0x4d9a07){logger[_0xbf4e('0x7')]('rpc',_0xbf4e('0x5'),_0x4e7fa7,_0x4d9a07,_0x2e3070);return _0x32d1d7(_0x4d9a07);});});};module[_0xbf4e('0xa')]=client;
\ No newline at end of file
+var _0xd8b0=['message','result','catch','exports','jayson/promise','bluebird','http','Request','then','debug','memberReport','error','rpc'];(function(_0x44d9e8,_0x2f0bc2){var _0x64816e=function(_0x3e9a6d){while(--_0x3e9a6d){_0x44d9e8['push'](_0x44d9e8['shift']());}};_0x64816e(++_0x2f0bc2);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var jayson=require(_0x0d8b('0x0'));var BPromise=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('ami');var client=jayson['client'][_0x0d8b('0x2')]({'port':0x2329});client[_0x0d8b('0x3')]=function(_0x43bca1,_0x364286){return new BPromise(function(_0x8196ed,_0x577834){return client['request'](_0x43bca1,_0x364286)[_0x0d8b('0x4')](function(_0x227c63){logger[_0x0d8b('0x5')]('rpc',_0x0d8b('0x6'),_0x43bca1,_0x364286,_0x227c63);if(_0x227c63[_0x0d8b('0x7')]){logger['error'](_0x0d8b('0x8'),_0x0d8b('0x6'),_0x43bca1,_0x227c63[_0x0d8b('0x7')][_0x0d8b('0x9')],_0x364286);return _0x577834(_0x227c63[_0x0d8b('0x7')][_0x0d8b('0x9')]);}else{return _0x8196ed(_0x227c63[_0x0d8b('0xa')]);}})[_0x0d8b('0xb')](function(_0x48fa16){logger[_0x0d8b('0x7')]('rpc',_0x0d8b('0x6'),_0x43bca1,_0x48fa16,_0x364286);return _0x577834(_0x48fa16);});});};module[_0x0d8b('0xc')]=client;
\ No newline at end of file
index 2dae202..2bf6094 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9552=['scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','starttime','YYYY-MM-DD\x20HH:mm:ss','callback','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','format','\x22%s\x22\x20<%s>','dialCutDigit','substring','exports','util','lodash','isNil','string','voiceQueue','uniqueid','name','Contact','phone','firstName','lastName','number','queue','active','type','dialQueueTimeout'];(function(_0x2a4bf7,_0x23bb9f){var _0x3530be=function(_0x519314){while(--_0x519314){_0x2a4bf7['push'](_0x2a4bf7['shift']());}};_0x3530be(++_0x23bb9f);}(_0x9552,0xfe));var _0x2955=function(_0xabd75d,_0x438b31){_0xabd75d=_0xabd75d-0x0;var _0x579083=_0x9552[_0xabd75d];return _0x579083;};'use strict';var util=require(_0x2955('0x0'));var _=require(_0x2955('0x1'));var moment=require('moment');function checkNameSurname(_0x3c9721,_0x235cfe,_0x406991){var _0x1e9ffe='';if(!_[_0x2955('0x2')](_0x235cfe)&&_0x2955('0x3')===typeof _0x235cfe){_0x1e9ffe+=_0x235cfe;}if(!_[_0x2955('0x2')](_0x406991)&&_0x2955('0x3')===typeof _0x406991){_0x1e9ffe+='\x20'+_0x406991;}if(_0x1e9ffe!==''){return _0x1e9ffe;}return _0x3c9721;}function Action(_0xec62f4,_0x11db0d,_0x419a74){this[_0x2955('0x4')]=_0xec62f4;this[_0x2955('0x5')]=_0x419a74||undefined;this[_0x2955('0x6')]=checkNameSurname(_0x11db0d[_0x2955('0x7')][_0x2955('0x8')],_0x11db0d[_0x2955('0x7')][_0x2955('0x9')],_0x11db0d[_0x2955('0x7')][_0x2955('0xa')]);this[_0x2955('0xb')]=_0x11db0d[_0x2955('0x7')][_0x2955('0x8')];this[_0x2955('0xc')]=_0xec62f4[_0x2955('0x6')];this[_0x2955('0xd')]=_0x11db0d[_0x2955('0xd')]||![];this[_0x2955('0xe')]=_0xec62f4[_0x2955('0xe')];this[_0x2955('0xf')]=_0xec62f4[_0x2955('0xf')]||0x3;this[_0x2955('0x10')]=_0x11db0d['scheduledat'];this[_0x2955('0x11')]=_0x11db0d[_0x2955('0x11')];this[_0x2955('0x12')]=_0x11db0d['countcongestionretry'];this[_0x2955('0x13')]=_0x11db0d[_0x2955('0x13')];this[_0x2955('0x14')]=_0x11db0d['countnosuchnumberretry'];this[_0x2955('0x15')]=_0x11db0d['countdropretry'];this[_0x2955('0x16')]=_0x11db0d[_0x2955('0x16')];this[_0x2955('0x17')]=_0x11db0d[_0x2955('0x17')];this[_0x2955('0x18')]=_0x11db0d['countagentrejectretry'];this[_0x2955('0x19')]=_0x11db0d[_0x2955('0x19')];this['ListId']=_0x11db0d[_0x2955('0x1a')];this[_0x2955('0x1b')]=_0x11db0d[_0x2955('0x1b')];this[_0x2955('0x1c')]=_0x11db0d[_0x2955('0x1c')];this[_0x2955('0x1d')]=_0x11db0d['CampaignId'];this['idHopper']=_0x11db0d['id'];this[_0x2955('0x1e')]=_0x11db0d[_0x2955('0x7')][_0x2955('0x9')]||'';this[_0x2955('0x1f')]=moment()['format'](_0x2955('0x20'));this[_0x2955('0x21')]=_0x11db0d[_0x2955('0x21')];this['callbackuniqueid']=_0x11db0d['callbackuniqueid'];this[_0x2955('0x22')]=_0x11db0d[_0x2955('0x22')];this['recallme']=_0x11db0d[_0x2955('0x23')];this[_0x2955('0x24')]='';this[_0x2955('0x25')]='';}Action[_0x2955('0x26')][_0x2955('0x27')]=function(){return util[_0x2955('0x28')](_0x2955('0x29'),this[_0x2955('0x6')],this[_0x2955('0x4')][_0x2955('0x2a')]>0x0?this[_0x2955('0xb')][_0x2955('0x2b')](this['voiceQueue'][_0x2955('0x2a')]):this[_0x2955('0xb')]);};Action[_0x2955('0x26')]['getQueue']=function(){return this[_0x2955('0xc')];};module[_0x2955('0x2c')]=Action;
\ No newline at end of file
+var _0x9a83=['originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','number','exports','lodash','moment','isNil','string','voiceQueue','uniqueid','name','Contact','firstName','lastName','phone','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum'];(function(_0x46ab31,_0x267436){var _0x597b20=function(_0x5b0028){while(--_0x5b0028){_0x46ab31['push'](_0x46ab31['shift']());}};_0x597b20(++_0x267436);}(_0x9a83,0xb4));var _0x39a8=function(_0x6f3151,_0x406745){_0x6f3151=_0x6f3151-0x0;var _0x305fb8=_0x9a83[_0x6f3151];return _0x305fb8;};'use strict';var util=require('util');var _=require(_0x39a8('0x0'));var moment=require(_0x39a8('0x1'));function checkNameSurname(_0x45f58f,_0x28f484,_0x2a5dc5){var _0x1382b6='';if(!_[_0x39a8('0x2')](_0x28f484)&&'string'===typeof _0x28f484){_0x1382b6+=_0x28f484;}if(!_[_0x39a8('0x2')](_0x2a5dc5)&&_0x39a8('0x3')===typeof _0x2a5dc5){_0x1382b6+='\x20'+_0x2a5dc5;}if(_0x1382b6!==''){return _0x1382b6;}return _0x45f58f;}function Action(_0x129228,_0x494c84,_0x5f3c6e){this[_0x39a8('0x4')]=_0x129228;this[_0x39a8('0x5')]=_0x5f3c6e||undefined;this[_0x39a8('0x6')]=checkNameSurname(_0x494c84[_0x39a8('0x7')]['phone'],_0x494c84[_0x39a8('0x7')][_0x39a8('0x8')],_0x494c84[_0x39a8('0x7')][_0x39a8('0x9')]);this['number']=_0x494c84[_0x39a8('0x7')][_0x39a8('0xa')];this['queue']=_0x129228[_0x39a8('0x6')];this[_0x39a8('0xb')]=_0x494c84[_0x39a8('0xb')]||![];this[_0x39a8('0xc')]=_0x129228[_0x39a8('0xc')];this['dialQueueTimeout']=_0x129228[_0x39a8('0xd')]||0x3;this[_0x39a8('0xe')]=_0x494c84[_0x39a8('0xe')];this['countbusyretry']=_0x494c84[_0x39a8('0xf')];this[_0x39a8('0x10')]=_0x494c84['countcongestionretry'];this[_0x39a8('0x11')]=_0x494c84['countnoanswerretry'];this[_0x39a8('0x12')]=_0x494c84[_0x39a8('0x12')];this['countdropretry']=_0x494c84['countdropretry'];this['countabandonedretry']=_0x494c84['countabandonedretry'];this['countmachineretry']=_0x494c84[_0x39a8('0x13')];this[_0x39a8('0x14')]=_0x494c84[_0x39a8('0x14')];this[_0x39a8('0x15')]=_0x494c84[_0x39a8('0x15')];this[_0x39a8('0x16')]=_0x494c84[_0x39a8('0x16')];this[_0x39a8('0x17')]=_0x494c84[_0x39a8('0x17')];this[_0x39a8('0x18')]=_0x494c84[_0x39a8('0x18')];this[_0x39a8('0x19')]=_0x494c84[_0x39a8('0x19')];this[_0x39a8('0x1a')]=_0x494c84['id'];this['ContactFirstName']=_0x494c84[_0x39a8('0x7')][_0x39a8('0x8')]||'';this[_0x39a8('0x1b')]=moment()[_0x39a8('0x1c')](_0x39a8('0x1d'));this[_0x39a8('0x1e')]=_0x494c84[_0x39a8('0x1e')];this[_0x39a8('0x1f')]=_0x494c84['callbackuniqueid'];this[_0x39a8('0x20')]=_0x494c84[_0x39a8('0x20')];this[_0x39a8('0x21')]=_0x494c84['recallme'];this[_0x39a8('0x22')]='';this[_0x39a8('0x23')]='';}Action[_0x39a8('0x24')][_0x39a8('0x25')]=function(){return util[_0x39a8('0x1c')](_0x39a8('0x26'),this['name'],this[_0x39a8('0x4')][_0x39a8('0x27')]>0x0?this['number'][_0x39a8('0x28')](this[_0x39a8('0x4')][_0x39a8('0x27')]):this[_0x39a8('0x29')]);};Action[_0x39a8('0x24')]['getQueue']=function(){return this['queue'];};module[_0x39a8('0x2a')]=Action;
\ No newline at end of file
index 4876be6..9cd600a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf372=['countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countdropretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','answertime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','util','lodash','moment','diff','seconds','state','scheduledat','type','campaigntype','outbound','queue'];(function(_0x3a9815,_0x47eb16){var _0x188653=function(_0x203e84){while(--_0x203e84){_0x3a9815['push'](_0x3a9815['shift']());}};_0x188653(++_0x47eb16);}(_0xf372,0x165));var _0x2f37=function(_0x2c21b9,_0x1a9c25){_0x2c21b9=_0x2c21b9-0x0;var _0x444377=_0xf372[_0x2c21b9];return _0x444377;};'use strict';var util=require(_0x2f37('0x0'));var _=require(_0x2f37('0x1'));var moment=require(_0x2f37('0x2'));function getSeconds(_0x53d049,_0x5981eb){var _0x2f9ddb=moment(_0x53d049)['milliseconds'](0x0);var _0x24a0cc=moment(_0x5981eb)['milliseconds'](0x0);return _0x2f9ddb[_0x2f37('0x3')](_0x24a0cc,_0x2f37('0x4'));}function AgentComplete(_0x58df61,_0x5bc2f0){this[_0x2f37('0x5')]=0x4;this['statedesc']='Answer';this[_0x2f37('0x6')]=_0x58df61[_0x2f37('0x6')];this[_0x2f37('0x7')]=_0x58df61['type'];this[_0x2f37('0x8')]=_0x58df61[_0x2f37('0x7')]===_0x2f37('0x9')?_0x2f37('0xa'):_0x58df61[_0x2f37('0x7')];this[_0x2f37('0xb')]=_0x58df61['countbusyretry'];this[_0x2f37('0xc')]=_0x58df61[_0x2f37('0xc')];this[_0x2f37('0xd')]=_0x58df61[_0x2f37('0xd')];this[_0x2f37('0xe')]=_0x58df61[_0x2f37('0xb')]+_0x58df61[_0x2f37('0xc')]+_0x58df61[_0x2f37('0xd')]+_0x58df61[_0x2f37('0xf')]+_0x58df61['countdropretry']+_0x58df61[_0x2f37('0x10')]+_0x58df61['countmachineretry']+_0x58df61['countagentrejectretry'];this['countnosuchnumberretry']=_0x58df61[_0x2f37('0xf')];this['countdropretry']=_0x58df61[_0x2f37('0x11')];this['countabandonedretry']=_0x58df61[_0x2f37('0x10')];this[_0x2f37('0x12')]=_0x58df61[_0x2f37('0x12')];this[_0x2f37('0x13')]=_0x58df61[_0x2f37('0x13')];this['uniqueid']=_0x5bc2f0[_0x2f37('0x14')];this[_0x2f37('0x15')]=_0x58df61[_0x2f37('0x16')];this[_0x2f37('0x17')]=_0x58df61[_0x2f37('0x18')];this['starttime']=_0x58df61[_0x2f37('0x19')];this['responsetime']=_0x58df61[_0x2f37('0x1a')];this['answertime']=_0x58df61['answertime'];this[_0x2f37('0x1b')]=moment()[_0x2f37('0x1c')](_0x2f37('0x1d'));this[_0x2f37('0x1e')]=getSeconds(_0x58df61[_0x2f37('0x1a')],_0x58df61[_0x2f37('0x19')]);this[_0x2f37('0x1f')]=getSeconds(_0x58df61[_0x2f37('0x20')],_0x58df61[_0x2f37('0x1a')]);this[_0x2f37('0x21')]=getSeconds(this[_0x2f37('0x1b')],_0x58df61['answertime']);this[_0x2f37('0xa')]=_0x5bc2f0[_0x2f37('0xa')];this[_0x2f37('0x22')]=_0x5bc2f0[_0x2f37('0x22')];this[_0x2f37('0x23')]=_0x5bc2f0[_0x2f37('0x23')];this[_0x2f37('0x24')]=_0x58df61['callback'];this[_0x2f37('0x25')]=_0x58df61[_0x2f37('0x25')];this[_0x2f37('0x26')]=_0x58df61['callbackat'];this[_0x2f37('0x27')]=_0x58df61[_0x2f37('0x27')];this[_0x2f37('0x28')]=_0x58df61[_0x2f37('0x28')];this[_0x2f37('0x29')]=_0x58df61['ListId'];this[_0x2f37('0x2a')]=_0x58df61[_0x2f37('0x2a')];this[_0x2f37('0x2b')]=_0x58df61[_0x2f37('0x2b')];this['CampaignId']=_0x58df61['CampaignId'];this[_0x2f37('0x2c')]=_0x58df61[_0x2f37('0x2c')]||'';this[_0x2f37('0x2d')]=_0x58df61['originatecalleridname']||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0x781e=['countagentrejectretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','answertime','format','ringtime','talktime','endtime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','seconds','state','statedesc','scheduledat','type','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry'];(function(_0x5f3d45,_0x260d78){var _0x135c19=function(_0x2a095f){while(--_0x2a095f){_0x5f3d45['push'](_0x5f3d45['shift']());}};_0x135c19(++_0x260d78);}(_0x781e,0x17d));var _0xe781=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x781e[_0xa464c9];return _0x3d73c4;};'use strict';var util=require(_0xe781('0x0'));var _=require('lodash');var moment=require(_0xe781('0x1'));function getSeconds(_0x26cdf7,_0x5d35b8){var _0x5d2add=moment(_0x26cdf7)[_0xe781('0x2')](0x0);var _0x2a4f5b=moment(_0x5d35b8)['milliseconds'](0x0);return _0x5d2add['diff'](_0x2a4f5b,_0xe781('0x3'));}function AgentComplete(_0x108991,_0x25176a){this[_0xe781('0x4')]=0x4;this[_0xe781('0x5')]='Answer';this[_0xe781('0x6')]=_0x108991['scheduledat'];this[_0xe781('0x7')]=_0x108991[_0xe781('0x7')];this['campaigntype']=_0x108991[_0xe781('0x7')]==='outbound'?'queue':_0x108991[_0xe781('0x7')];this[_0xe781('0x8')]=_0x108991[_0xe781('0x8')];this[_0xe781('0x9')]=_0x108991[_0xe781('0x9')];this[_0xe781('0xa')]=_0x108991['countnoanswerretry'];this[_0xe781('0xb')]=_0x108991[_0xe781('0x8')]+_0x108991[_0xe781('0x9')]+_0x108991[_0xe781('0xa')]+_0x108991[_0xe781('0xc')]+_0x108991[_0xe781('0xd')]+_0x108991['countabandonedretry']+_0x108991[_0xe781('0xe')]+_0x108991[_0xe781('0xf')];this['countnosuchnumberretry']=_0x108991['countnosuchnumberretry'];this['countdropretry']=_0x108991['countdropretry'];this[_0xe781('0x10')]=_0x108991[_0xe781('0x10')];this[_0xe781('0xe')]=_0x108991[_0xe781('0xe')];this[_0xe781('0xf')]=_0x108991[_0xe781('0xf')];this[_0xe781('0x11')]=_0x25176a['uniqueid'];this[_0xe781('0x12')]=_0x108991[_0xe781('0x13')];this[_0xe781('0x14')]=_0x108991[_0xe781('0x15')];this[_0xe781('0x16')]=_0x108991[_0xe781('0x16')];this[_0xe781('0x17')]=_0x108991[_0xe781('0x17')];this[_0xe781('0x18')]=_0x108991['answertime'];this['endtime']=moment()[_0xe781('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xe781('0x1a')]=getSeconds(_0x108991[_0xe781('0x17')],_0x108991[_0xe781('0x16')]);this['holdtime']=getSeconds(_0x108991[_0xe781('0x18')],_0x108991[_0xe781('0x17')]);this[_0xe781('0x1b')]=getSeconds(this[_0xe781('0x1c')],_0x108991['answertime']);this[_0xe781('0x1d')]=_0x25176a[_0xe781('0x1d')];this[_0xe781('0x1e')]=_0x25176a[_0xe781('0x1e')];this['reason']=_0x25176a[_0xe781('0x1f')];this[_0xe781('0x20')]=_0x108991[_0xe781('0x20')];this[_0xe781('0x21')]=_0x108991['callbackuniqueid'];this[_0xe781('0x22')]=_0x108991['callbackat'];this['recallme']=_0x108991[_0xe781('0x23')];this['ContactId']=_0x108991[_0xe781('0x24')];this[_0xe781('0x25')]=_0x108991[_0xe781('0x25')];this[_0xe781('0x26')]=_0x108991[_0xe781('0x26')];this['VoiceQueueId']=_0x108991[_0xe781('0x27')];this[_0xe781('0x28')]=_0x108991[_0xe781('0x28')];this[_0xe781('0x29')]=_0x108991['originatecalleridnum']||'';this[_0xe781('0x2a')]=_0x108991['originatecalleridname']||'';}module[_0xe781('0x2b')]=AgentComplete;
\ No newline at end of file
index d5a8e79..9d79a09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06f4=['countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','queue','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridname','exports','util','lodash','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry'];(function(_0x3cee76,_0x2c6506){var _0x210720=function(_0x4197c5){while(--_0x4197c5){_0x3cee76['push'](_0x3cee76['shift']());}};_0x210720(++_0x2c6506);}(_0x06f4,0x136));var _0x406f=function(_0x116ebe,_0x44c4e5){_0x116ebe=_0x116ebe-0x0;var _0x3e5f62=_0x06f4[_0x116ebe];return _0x3e5f62;};'use strict';var util=require(_0x406f('0x0'));var _=require(_0x406f('0x1'));var moment=require('moment');function getSeconds(_0x203c04,_0x276a15){var _0x58cd7d=moment(_0x203c04)['milliseconds'](0x0);var _0x3a4ff0=moment(_0x276a15)['milliseconds'](0x0);return _0x58cd7d[_0x406f('0x2')](_0x3a4ff0,_0x406f('0x3'));}function Final(_0x3ab3d4){this[_0x406f('0x4')]=_0x3ab3d4['uniqueid'];this[_0x406f('0x5')]=_0x3ab3d4['scheduledat'];this[_0x406f('0x6')]=_0x3ab3d4[_0x406f('0x6')];this[_0x406f('0x7')]=_0x3ab3d4['type']===_0x406f('0x8')?'queue':_0x3ab3d4['type'];this[_0x406f('0x9')]=_0x3ab3d4['countbusyretry'];this[_0x406f('0xa')]=_0x3ab3d4['countcongestionretry'];this[_0x406f('0xb')]=_0x3ab3d4['countnoanswerretry'];this[_0x406f('0xc')]=_0x3ab3d4[_0x406f('0x9')]+_0x3ab3d4['countcongestionretry']+_0x3ab3d4[_0x406f('0xb')]+_0x3ab3d4[_0x406f('0xd')]+_0x3ab3d4[_0x406f('0xe')]+_0x3ab3d4[_0x406f('0xf')]+_0x3ab3d4[_0x406f('0x10')]+_0x3ab3d4[_0x406f('0x11')];this[_0x406f('0xd')]=_0x3ab3d4[_0x406f('0xd')];this[_0x406f('0xe')]=_0x3ab3d4[_0x406f('0xe')];this[_0x406f('0xf')]=_0x3ab3d4['countabandonedretry'];this[_0x406f('0x10')]=_0x3ab3d4[_0x406f('0x10')];this[_0x406f('0x11')]=_0x3ab3d4['countagentrejectretry'];this[_0x406f('0x12')]=_0x3ab3d4[_0x406f('0x12')];this['calleridname']=_0x3ab3d4['calleridname'];this[_0x406f('0x13')]=_0x3ab3d4[_0x406f('0x13')];this['starttime']=_0x3ab3d4[_0x406f('0x14')];this['responsetime']=_0x3ab3d4[_0x406f('0x15')];this[_0x406f('0x16')]=_0x3ab3d4[_0x406f('0x15')];this[_0x406f('0x17')]=_0x3ab3d4['ringtime']||0x0;this['holdtime']=_0x3ab3d4[_0x406f('0x18')]||0x0;this['talktime']=_0x3ab3d4[_0x406f('0x19')]||0x0;this['callback']=_0x3ab3d4[_0x406f('0x1a')];this[_0x406f('0x1b')]=_0x3ab3d4[_0x406f('0x1b')];this['callbackat']=_0x3ab3d4['callbackat'];this['recallme']=_0x3ab3d4[_0x406f('0x1c')];this[_0x406f('0x1d')]=_0x3ab3d4[_0x406f('0x1d')];this['ListId']=_0x3ab3d4[_0x406f('0x1e')];this['UserId']=_0x3ab3d4[_0x406f('0x1f')];this[_0x406f('0x20')]=_0x3ab3d4[_0x406f('0x20')];this[_0x406f('0x21')]=_0x3ab3d4[_0x406f('0x21')];this['originatecalleridnum']=_0x3ab3d4['originatecalleridnum']||'';this[_0x406f('0x22')]=_0x3ab3d4['originatecalleridname']||'';}module[_0x406f('0x23')]=Final;
\ No newline at end of file
+var _0xfd87=['ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridnum','starttime','responsetime','endtime'];(function(_0x1562a2,_0x2e4655){var _0x39a636=function(_0x25483a){while(--_0x25483a){_0x1562a2['push'](_0x1562a2['shift']());}};_0x39a636(++_0x2e4655);}(_0xfd87,0x80));var _0x7fd8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd87[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x7fd8('0x0'));var _=require(_0x7fd8('0x1'));var moment=require(_0x7fd8('0x2'));function getSeconds(_0x42ecd1,_0x11b128){var _0x15d25f=moment(_0x42ecd1)[_0x7fd8('0x3')](0x0);var _0x42b06c=moment(_0x11b128)[_0x7fd8('0x3')](0x0);return _0x15d25f[_0x7fd8('0x4')](_0x42b06c,_0x7fd8('0x5'));}function Final(_0x5b80b2){this[_0x7fd8('0x6')]=_0x5b80b2[_0x7fd8('0x6')];this['scheduledat']=_0x5b80b2[_0x7fd8('0x7')];this[_0x7fd8('0x8')]=_0x5b80b2[_0x7fd8('0x8')];this[_0x7fd8('0x9')]=_0x5b80b2[_0x7fd8('0x8')]==='outbound'?_0x7fd8('0xa'):_0x5b80b2[_0x7fd8('0x8')];this[_0x7fd8('0xb')]=_0x5b80b2['countbusyretry'];this['countcongestionretry']=_0x5b80b2['countcongestionretry'];this[_0x7fd8('0xc')]=_0x5b80b2['countnoanswerretry'];this[_0x7fd8('0xd')]=_0x5b80b2[_0x7fd8('0xb')]+_0x5b80b2[_0x7fd8('0xe')]+_0x5b80b2['countnoanswerretry']+_0x5b80b2[_0x7fd8('0xf')]+_0x5b80b2[_0x7fd8('0x10')]+_0x5b80b2[_0x7fd8('0x11')]+_0x5b80b2[_0x7fd8('0x12')]+_0x5b80b2[_0x7fd8('0x13')];this['countnosuchnumberretry']=_0x5b80b2[_0x7fd8('0xf')];this[_0x7fd8('0x10')]=_0x5b80b2[_0x7fd8('0x10')];this[_0x7fd8('0x11')]=_0x5b80b2[_0x7fd8('0x11')];this[_0x7fd8('0x12')]=_0x5b80b2[_0x7fd8('0x12')];this[_0x7fd8('0x13')]=_0x5b80b2[_0x7fd8('0x13')];this[_0x7fd8('0xa')]=_0x5b80b2[_0x7fd8('0xa')];this['calleridname']=_0x5b80b2['calleridname'];this['calleridnum']=_0x5b80b2[_0x7fd8('0x14')];this[_0x7fd8('0x15')]=_0x5b80b2['starttime'];this[_0x7fd8('0x16')]=_0x5b80b2[_0x7fd8('0x16')];this[_0x7fd8('0x17')]=_0x5b80b2[_0x7fd8('0x16')];this[_0x7fd8('0x18')]=_0x5b80b2[_0x7fd8('0x18')]||0x0;this[_0x7fd8('0x19')]=_0x5b80b2[_0x7fd8('0x19')]||0x0;this['talktime']=_0x5b80b2[_0x7fd8('0x1a')]||0x0;this[_0x7fd8('0x1b')]=_0x5b80b2[_0x7fd8('0x1b')];this[_0x7fd8('0x1c')]=_0x5b80b2[_0x7fd8('0x1c')];this[_0x7fd8('0x1d')]=_0x5b80b2['callbackat'];this[_0x7fd8('0x1e')]=_0x5b80b2[_0x7fd8('0x1e')];this[_0x7fd8('0x1f')]=_0x5b80b2[_0x7fd8('0x1f')];this['ListId']=_0x5b80b2[_0x7fd8('0x20')];this[_0x7fd8('0x21')]=_0x5b80b2[_0x7fd8('0x21')];this[_0x7fd8('0x22')]=_0x5b80b2[_0x7fd8('0x22')];this['CampaignId']=_0x5b80b2['CampaignId'];this[_0x7fd8('0x23')]=_0x5b80b2[_0x7fd8('0x23')]||'';this[_0x7fd8('0x24')]=_0x5b80b2[_0x7fd8('0x24')]||'';}module[_0x7fd8('0x25')]=Final;
\ No newline at end of file
index bdec101..d0d9bbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd658=['ContactId','ListId','UserId','VoiceQueueId','CampaignId','util','milliseconds','diff','seconds','state','Answer','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridnum','starttime','responsetime','endtime','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme'];(function(_0x57add2,_0x4f2b7d){var _0x4e3670=function(_0x3311b){while(--_0x3311b){_0x57add2['push'](_0x57add2['shift']());}};_0x4e3670(++_0x4f2b7d);}(_0xd658,0x159));var _0x8d65=function(_0xefe6e4,_0x273583){_0xefe6e4=_0xefe6e4-0x0;var _0x106b72=_0xd658[_0xefe6e4];return _0x106b72;};'use strict';var util=require(_0x8d65('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0x4127c4,_0x34f016){var _0x4d6920=moment(_0x4127c4)[_0x8d65('0x1')](0x0);var _0x32e530=moment(_0x34f016)[_0x8d65('0x1')](0x0);return _0x4d6920[_0x8d65('0x2')](_0x32e530,_0x8d65('0x3'));}function Hangup(_0x48d0db,_0x1dbe8b){this[_0x8d65('0x4')]=0x4;this['statedesc']=_0x8d65('0x5');this[_0x8d65('0x6')]=_0x48d0db['scheduledat'];this[_0x8d65('0x7')]=_0x48d0db[_0x8d65('0x7')];this[_0x8d65('0x8')]=_0x48d0db['type']==='outbound'?_0x8d65('0x9'):_0x48d0db[_0x8d65('0x7')];this[_0x8d65('0xa')]=_0x48d0db[_0x8d65('0xa')];this[_0x8d65('0xb')]=_0x48d0db[_0x8d65('0xb')];this[_0x8d65('0xc')]=_0x48d0db[_0x8d65('0xc')];this['countglobal']=_0x48d0db[_0x8d65('0xa')]+_0x48d0db[_0x8d65('0xb')]+_0x48d0db[_0x8d65('0xc')]+_0x48d0db['countnosuchnumberretry']+_0x48d0db[_0x8d65('0xd')]+_0x48d0db['countabandonedretry']+_0x48d0db['countmachineretry']+_0x48d0db['countagentrejectretry'];this[_0x8d65('0xe')]=_0x48d0db[_0x8d65('0xe')];this[_0x8d65('0xd')]=_0x48d0db[_0x8d65('0xd')];this[_0x8d65('0xf')]=_0x48d0db[_0x8d65('0xf')];this[_0x8d65('0x10')]=_0x48d0db[_0x8d65('0x10')];this[_0x8d65('0x11')]=_0x48d0db[_0x8d65('0x11')];this['uniqueid']=_0x1dbe8b[_0x8d65('0x12')];this['calleridname']=_0x48d0db['name'];this[_0x8d65('0x13')]=_0x48d0db['number'];this[_0x8d65('0x14')]=_0x48d0db[_0x8d65('0x14')];this['responsetime']=_0x48d0db[_0x8d65('0x15')];this[_0x8d65('0x16')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['ringtime']=getSeconds(_0x48d0db[_0x8d65('0x15')],_0x48d0db[_0x8d65('0x14')]);this['holdtime']=0x0;this['talktime']=getSeconds(this['endtime'],_0x48d0db['responsetime']);this['queue']=_0x48d0db['queue'];this['membername']='IVR';this[_0x8d65('0x17')]=_0x1dbe8b[_0x8d65('0x18')];this[_0x8d65('0x19')]=_0x48d0db['callback'];this[_0x8d65('0x1a')]=_0x48d0db['callbackuniqueid'];this[_0x8d65('0x1b')]=_0x48d0db[_0x8d65('0x1b')];this[_0x8d65('0x1c')]=_0x48d0db[_0x8d65('0x1c')];this[_0x8d65('0x1d')]=_0x48d0db[_0x8d65('0x1d')];this[_0x8d65('0x1e')]=_0x48d0db[_0x8d65('0x1e')];this[_0x8d65('0x1f')]=_0x48d0db['UserId'];this['VoiceQueueId']=_0x48d0db[_0x8d65('0x20')];this[_0x8d65('0x21')]=_0x48d0db[_0x8d65('0x21')];}module['exports']=Hangup;
\ No newline at end of file
+var _0xbaef=['callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','starttime','responsetime','format','ringtime','holdtime','talktime','endtime','queue','membername','IVR','cause-txt','callback','callbackuniqueid'];(function(_0x5d6280,_0x3f72ab){var _0x77b738=function(_0x1b8208){while(--_0x1b8208){_0x5d6280['push'](_0x5d6280['shift']());}};_0x77b738(++_0x3f72ab);}(_0xbaef,0x92));var _0xfbae=function(_0x156515,_0x760da4){_0x156515=_0x156515-0x0;var _0x3e1e8b=_0xbaef[_0x156515];return _0x3e1e8b;};'use strict';var util=require(_0xfbae('0x0'));var _=require(_0xfbae('0x1'));var moment=require(_0xfbae('0x2'));function getSeconds(_0x4f8b0d,_0x55544b){var _0x5005d6=moment(_0x4f8b0d)[_0xfbae('0x3')](0x0);var _0x28a402=moment(_0x55544b)[_0xfbae('0x3')](0x0);return _0x5005d6[_0xfbae('0x4')](_0x28a402,_0xfbae('0x5'));}function Hangup(_0x45bbd7,_0x452bca){this[_0xfbae('0x6')]=0x4;this[_0xfbae('0x7')]=_0xfbae('0x8');this['scheduledat']=_0x45bbd7[_0xfbae('0x9')];this[_0xfbae('0xa')]=_0x45bbd7[_0xfbae('0xa')];this[_0xfbae('0xb')]=_0x45bbd7[_0xfbae('0xa')]===_0xfbae('0xc')?'queue':_0x45bbd7['type'];this[_0xfbae('0xd')]=_0x45bbd7[_0xfbae('0xd')];this['countcongestionretry']=_0x45bbd7[_0xfbae('0xe')];this[_0xfbae('0xf')]=_0x45bbd7['countnoanswerretry'];this[_0xfbae('0x10')]=_0x45bbd7[_0xfbae('0xd')]+_0x45bbd7[_0xfbae('0xe')]+_0x45bbd7[_0xfbae('0xf')]+_0x45bbd7[_0xfbae('0x11')]+_0x45bbd7[_0xfbae('0x12')]+_0x45bbd7[_0xfbae('0x13')]+_0x45bbd7[_0xfbae('0x14')]+_0x45bbd7[_0xfbae('0x15')];this[_0xfbae('0x11')]=_0x45bbd7[_0xfbae('0x11')];this[_0xfbae('0x12')]=_0x45bbd7[_0xfbae('0x12')];this[_0xfbae('0x13')]=_0x45bbd7[_0xfbae('0x13')];this[_0xfbae('0x14')]=_0x45bbd7[_0xfbae('0x14')];this[_0xfbae('0x15')]=_0x45bbd7[_0xfbae('0x15')];this[_0xfbae('0x16')]=_0x452bca[_0xfbae('0x16')];this[_0xfbae('0x17')]=_0x45bbd7[_0xfbae('0x18')];this['calleridnum']=_0x45bbd7['number'];this[_0xfbae('0x19')]=_0x45bbd7['starttime'];this[_0xfbae('0x1a')]=_0x45bbd7[_0xfbae('0x1a')];this['endtime']=moment()[_0xfbae('0x1b')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xfbae('0x1c')]=getSeconds(_0x45bbd7[_0xfbae('0x1a')],_0x45bbd7[_0xfbae('0x19')]);this[_0xfbae('0x1d')]=0x0;this[_0xfbae('0x1e')]=getSeconds(this[_0xfbae('0x1f')],_0x45bbd7[_0xfbae('0x1a')]);this[_0xfbae('0x20')]=_0x45bbd7['queue'];this[_0xfbae('0x21')]=_0xfbae('0x22');this['reason']=_0x452bca[_0xfbae('0x23')];this['callback']=_0x45bbd7[_0xfbae('0x24')];this[_0xfbae('0x25')]=_0x45bbd7[_0xfbae('0x25')];this[_0xfbae('0x26')]=_0x45bbd7[_0xfbae('0x26')];this[_0xfbae('0x27')]=_0x45bbd7['recallme'];this[_0xfbae('0x28')]=_0x45bbd7['ContactId'];this['ListId']=_0x45bbd7[_0xfbae('0x29')];this['UserId']=_0x45bbd7[_0xfbae('0x2a')];this[_0xfbae('0x2b')]=_0x45bbd7['VoiceQueueId'];this[_0xfbae('0x2c')]=_0x45bbd7[_0xfbae('0x2c')];}module[_0xfbae('0x2d')]=Hangup;
\ No newline at end of file
index 15cb854..8339847 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1a7=['holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xf1a7,0x11f));var _0x7f1a=function(_0x2a2cf8,_0x3573f4){_0x2a2cf8=_0x2a2cf8-0x0;var _0x32d355=_0xf1a7[_0x2a2cf8];return _0x32d355;};'use strict';var util=require('util');var _=require(_0x7f1a('0x0'));var moment=require(_0x7f1a('0x1'));function getSeconds(_0x2346de,_0x186a62){var _0x4bd337=moment(_0x2346de)[_0x7f1a('0x2')](0x0);var _0x265c55=moment(_0x186a62)[_0x7f1a('0x2')](0x0);return _0x4bd337['diff'](_0x265c55,'seconds');}function History(_0x3f804d){this[_0x7f1a('0x3')]=_0x3f804d[_0x7f1a('0x3')];this[_0x7f1a('0x4')]=_0x3f804d[_0x7f1a('0x4')]||undefined;this[_0x7f1a('0x5')]=_0x3f804d[_0x7f1a('0x5')];this[_0x7f1a('0x6')]=_0x3f804d[_0x7f1a('0x5')]==='outbound'?_0x7f1a('0x7'):_0x3f804d[_0x7f1a('0x5')];this[_0x7f1a('0x8')]=_0x3f804d[_0x7f1a('0x8')];this[_0x7f1a('0x9')]=_0x3f804d['countcongestionretry'];this[_0x7f1a('0xa')]=_0x3f804d[_0x7f1a('0xa')];this[_0x7f1a('0xb')]=_0x3f804d[_0x7f1a('0x8')]+_0x3f804d[_0x7f1a('0x9')]+_0x3f804d[_0x7f1a('0xa')]+_0x3f804d[_0x7f1a('0xc')]+_0x3f804d['countdropretry']+_0x3f804d[_0x7f1a('0xd')]+_0x3f804d[_0x7f1a('0xe')]+_0x3f804d[_0x7f1a('0xf')];this['countnosuchnumberretry']=_0x3f804d[_0x7f1a('0xc')];this[_0x7f1a('0x10')]=_0x3f804d['countdropretry'];this[_0x7f1a('0xd')]=_0x3f804d['countabandonedretry'];this[_0x7f1a('0xe')]=_0x3f804d['countmachineretry'];this['countagentrejectretry']=_0x3f804d[_0x7f1a('0xf')];this[_0x7f1a('0x7')]=_0x3f804d[_0x7f1a('0x7')];this[_0x7f1a('0x11')]=_0x3f804d[_0x7f1a('0x12')];this[_0x7f1a('0x13')]=_0x3f804d[_0x7f1a('0x14')];this[_0x7f1a('0x15')]=_0x3f804d[_0x7f1a('0x15')];this[_0x7f1a('0x16')]=_0x3f804d[_0x7f1a('0x16')];this[_0x7f1a('0x17')]=_0x3f804d['responsetime'];this[_0x7f1a('0x18')]=getSeconds(_0x3f804d['responsetime'],_0x3f804d[_0x7f1a('0x15')]);this[_0x7f1a('0x19')]=0x0;this[_0x7f1a('0x1a')]=0x0;this['callback']=_0x3f804d[_0x7f1a('0x1b')];this[_0x7f1a('0x1c')]=_0x3f804d[_0x7f1a('0x1c')];this[_0x7f1a('0x1d')]=_0x3f804d[_0x7f1a('0x1d')];this[_0x7f1a('0x1e')]=_0x3f804d[_0x7f1a('0x1e')];this[_0x7f1a('0x1f')]=_0x3f804d[_0x7f1a('0x1f')];this[_0x7f1a('0x20')]=_0x3f804d[_0x7f1a('0x20')];this[_0x7f1a('0x21')]=_0x3f804d[_0x7f1a('0x21')];this[_0x7f1a('0x22')]=_0x3f804d[_0x7f1a('0x22')];this[_0x7f1a('0x23')]=_0x3f804d['CampaignId'];this[_0x7f1a('0x24')]=_0x3f804d['originatecalleridnum']||'';this[_0x7f1a('0x25')]=_0x3f804d['originatecalleridname']||'';}module[_0x7f1a('0x26')]=History;
\ No newline at end of file
+var _0xefcd=['milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','calleridname','name','number','starttime','responsetime','endtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment'];(function(_0x49db27,_0x2a216d){var _0x470e06=function(_0x46d5b8){while(--_0x46d5b8){_0x49db27['push'](_0x49db27['shift']());}};_0x470e06(++_0x2a216d);}(_0xefcd,0x9a));var _0xdefc=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xefcd[_0x4b055c];return _0x4b62bb;};'use strict';var util=require(_0xdefc('0x0'));var _=require('lodash');var moment=require(_0xdefc('0x1'));function getSeconds(_0x4d67ce,_0x25e0dd){var _0x776085=moment(_0x4d67ce)[_0xdefc('0x2')](0x0);var _0x5cf05e=moment(_0x25e0dd)[_0xdefc('0x2')](0x0);return _0x776085[_0xdefc('0x3')](_0x5cf05e,_0xdefc('0x4'));}function History(_0x59f17a){this[_0xdefc('0x5')]=_0x59f17a['uniqueid'];this['scheduledat']=_0x59f17a[_0xdefc('0x6')]||undefined;this[_0xdefc('0x7')]=_0x59f17a['type'];this[_0xdefc('0x8')]=_0x59f17a['type']===_0xdefc('0x9')?_0xdefc('0xa'):_0x59f17a[_0xdefc('0x7')];this[_0xdefc('0xb')]=_0x59f17a['countbusyretry'];this[_0xdefc('0xc')]=_0x59f17a[_0xdefc('0xc')];this[_0xdefc('0xd')]=_0x59f17a[_0xdefc('0xd')];this[_0xdefc('0xe')]=_0x59f17a[_0xdefc('0xb')]+_0x59f17a['countcongestionretry']+_0x59f17a[_0xdefc('0xd')]+_0x59f17a[_0xdefc('0xf')]+_0x59f17a[_0xdefc('0x10')]+_0x59f17a['countabandonedretry']+_0x59f17a[_0xdefc('0x11')]+_0x59f17a[_0xdefc('0x12')];this[_0xdefc('0xf')]=_0x59f17a[_0xdefc('0xf')];this['countdropretry']=_0x59f17a[_0xdefc('0x10')];this[_0xdefc('0x13')]=_0x59f17a[_0xdefc('0x13')];this[_0xdefc('0x11')]=_0x59f17a[_0xdefc('0x11')];this[_0xdefc('0x12')]=_0x59f17a[_0xdefc('0x12')];this[_0xdefc('0xa')]=_0x59f17a[_0xdefc('0xa')];this[_0xdefc('0x14')]=_0x59f17a[_0xdefc('0x15')];this['calleridnum']=_0x59f17a[_0xdefc('0x16')];this[_0xdefc('0x17')]=_0x59f17a[_0xdefc('0x17')];this[_0xdefc('0x18')]=_0x59f17a[_0xdefc('0x18')];this[_0xdefc('0x19')]=_0x59f17a['responsetime'];this['ringtime']=getSeconds(_0x59f17a[_0xdefc('0x18')],_0x59f17a['starttime']);this['holdtime']=0x0;this[_0xdefc('0x1a')]=0x0;this[_0xdefc('0x1b')]=_0x59f17a[_0xdefc('0x1b')];this[_0xdefc('0x1c')]=_0x59f17a[_0xdefc('0x1c')];this[_0xdefc('0x1d')]=_0x59f17a[_0xdefc('0x1d')];this[_0xdefc('0x1e')]=_0x59f17a[_0xdefc('0x1e')];this[_0xdefc('0x1f')]=_0x59f17a[_0xdefc('0x1f')];this[_0xdefc('0x20')]=_0x59f17a[_0xdefc('0x20')];this[_0xdefc('0x21')]=_0x59f17a[_0xdefc('0x21')];this[_0xdefc('0x22')]=_0x59f17a[_0xdefc('0x22')];this[_0xdefc('0x23')]=_0x59f17a[_0xdefc('0x23')];this[_0xdefc('0x24')]=_0x59f17a[_0xdefc('0x24')]||'';this[_0xdefc('0x25')]=_0x59f17a[_0xdefc('0x25')]||'';}module[_0xdefc('0x26')]=History;
\ No newline at end of file
index 89f8b75..cdeab11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3750=['checkDialMethod','checkIsTrunkReachable','dialGlobalInterval','launchHandleIvr','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','object','originate','phone','Contact','contact\x20is\x20undefine','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialQueueTimeout','dialAMDInitialSilence','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','updatedAt','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','dialPrefix','trim','dialCutDigit','substring','SIP/%s/%s%s','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialCongestionRetryFrequency','dialNoSuchNumberMaxRetry','[rescheduleContact][NoSuchNumber]','dialAbandonedMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','outboundNoSuchCallsDay','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','createStateFinal','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','dialNoAnswerMaxRetry','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalAvailable','[startMethodPredictive][StartProgressive]','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','predictiveIntervalErlangCallsDroppedCalls','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','dialPredictiveOptimization','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','floor','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','UserId','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','scheduledat','dialRecallMeTimeout','Agent','voicePause','unlockContact','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','handleIvr','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','dialLimitQueue','reachable','ACTIVE','[getContactDialer2]','tryOriginatePredictive','not_inuse','[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','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','[busyFactor]','m\x20=\x20','Umin\x20=\x20','exports','util','lodash','bluebird','uuid','moment','ioredis','../preview/util/util','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./queueCallerAbandon','env','127.0.0.1','roundrobin','enqueue','tail','finally','sequence','campaigns','agents','trunks','maxNumberOriginate','channels','optionPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','custom:queuesummary','newexten','syncNewExten','varset','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopClearZombieChannels','message','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','name','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','isEmpty','Intervals','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','outbound','strategy','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','total','type','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','active','callerid','md5','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\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','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\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','---------------------------','isUndefined','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','erlangCallToSecond','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','merge','clearing\x20variable\x20start\x20progressive','handlePredictive','preview','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','length','originated','undefined','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','AVAILABLE_CONTACTS_FINISHED','sendMessageOneNotActive','talking','available','[syncQueueSummary]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','state','starttime','prototype','clearZombieChannels','uniqueId','[uniqueid]','actions','[actions]','Action','status','catch','No\x20such\x20channel','updateOriginated','voiceQueues','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','emptyContact','notFound','saveInDb','pick','ListId','CampaignId','[emptyContact][createHistory]','[emptyContact]','Success','SIP/%s','unmonitored','syncVarSet','uniqueid','isNil','variable','amdstatus','xcally-motion-dialer','dialAMDActive','value','HANGUP','outboundAnswerCallsDay','HangupInAMD','membername','emit','custom:amd','buildObj','amd','[syncHangupInAMD]','MACHINE','statedesc','Machine','AMD','countmachineretry','countglobal','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countagentrejectretry','dialGlobalMaxRetry','dialMachineMaxRetry','reason\x2019\x20machine....','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ContactId','VoiceQueueId','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','stateGlobal','reason19\x20machine....','syncHangup','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','AGI','outboundUnknownCallsDay','cause-txt','Unknow','[syncHangupIvr]','syncAgentComplete','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','Drop','dropreason','TIMEOUT','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','endtime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','countabandonedretry','add','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','channel','actionid','paused','stateinterface','locked','rrmemory','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','run','[Catch][Preview][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','[booked][RR][finaly]','Agent:\x20','[booked][unlock]','[unlock][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','loopCampaigns','syncCampaigns','isTrunkReachable','\x20trunk\x20is\x20not\x20reachable','checkIfTime','checkIfTimeIntervals','ifTime','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','Failure','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','interval','indexOf','true','iftime\x20%s,%s','timezones','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','dialMethod','progressive','handlePower','power','dialPowerLevel','Queue','method\x20not\x20recognized','dialTimezone'];(function(_0x252690,_0x242f7d){var _0xeb0a8d=function(_0x1a3614){while(--_0x1a3614){_0x252690['push'](_0x252690['shift']());}};_0xeb0a8d(++_0x242f7d);}(_0x3750,0xbb));var _0x0375=function(_0x511e82,_0x5c8e7b){_0x511e82=_0x511e82-0x0;var _0x32bc8e=_0x3750[_0x511e82];return _0x32bc8e;};'use strict';var util=require(_0x0375('0x0'));var _=require(_0x0375('0x1'));var BPromise=require(_0x0375('0x2'));var uuid=require(_0x0375('0x3'));var moment=require(_0x0375('0x4'));var rr=require('rr');var md5=require('md5');var Redis=require(_0x0375('0x5'));var ut=require(_0x0375('0x6'));var config=require('../../../config/environment/');var logger=require(_0x0375('0x7'))(_0x0375('0x8'));var loggerBooked=require(_0x0375('0x7'))(_0x0375('0x9'));var loggerPredictive=require(_0x0375('0x7'))(_0x0375('0xa'));var loggerPredictiveCalls=require('../../../config/logger')(_0x0375('0xb'));var loggerSyncQueueSummary=require(_0x0375('0x7'))(_0x0375('0xc'));var ami=require(_0x0375('0xd'));config[_0x0375('0xe')]=_[_0x0375('0xf')](config['redis'],{'host':_0x0375('0x10'),'port':0x18eb});var io=require(_0x0375('0x11'))(new Redis(config[_0x0375('0xe')]));var cmHopper=require(_0x0375('0x12'));var cmHopperHistory=require(_0x0375('0x13'));var cmHopperBlack=require(_0x0375('0x14'));var voiceQueueRt=require(_0x0375('0x15'));var Action=require(_0x0375('0x16'));var History=require(_0x0375('0x17'));var Final=require(_0x0375('0x18'));var AgentComplete=require(_0x0375('0x19'));var QueueCallerAbandon=require(_0x0375('0x1a'));var Hangup=require('./hangup');var ipAgi=process[_0x0375('0x1b')]['XCALLY_IP_AGI']||_0x0375('0x1c');var strategy={'rrmemory':'rrmemory','roundrobin':_0x0375('0x1d')};var Sequence=function(){};Sequence['prototype'][_0x0375('0x1e')]=function(_0x3126f6){this[_0x0375('0x1f')]=this[_0x0375('0x1f')]?this[_0x0375('0x1f')][_0x0375('0x20')](_0x3126f6):_0x3126f6();};function Dialer(_0x3585a0,_0x94acd1){this[_0x0375('0x21')]=new Sequence();this['preview']=_0x94acd1;this['voiceQueues']=_0x3585a0['voiceQueues'];this[_0x0375('0x22')]=_0x3585a0['campaigns'];this['agents']=_0x3585a0[_0x0375('0x23')];this[_0x0375('0x24')]=_0x3585a0[_0x0375('0x24')];this['maxNumberOriginate']=config[_0x0375('0x25')]||0x2;this[_0x0375('0x26')]={};this['actions']={};this['contactsId']={};this['uniqueId']={};this[_0x0375('0x27')]={};this['startPredictive']={};this[_0x0375('0x28')]={};this[_0x0375('0x29')]={};this[_0x0375('0x2a')]={};this[_0x0375('0x2b')]={};ami['on'](_0x0375('0x2c'),this['syncAgentConnect'][_0x0375('0x2d')](this));ami['on'](_0x0375('0x2e'),this[_0x0375('0x2f')]['bind'](this));ami['on'](_0x0375('0x30'),this[_0x0375('0x31')][_0x0375('0x2d')](this));ami['on'](_0x0375('0x32'),this['syncAgentComplete'][_0x0375('0x2d')](this));ami['on'](_0x0375('0x33'),this['syncQueueSummary']['bind'](this));ami['on']('hangup',this['syncHangup'][_0x0375('0x2d')](this));ami['on'](_0x0375('0x34'),this[_0x0375('0x35')]['bind'](this));ami['on'](_0x0375('0x36'),this['syncVarSet'][_0x0375('0x2d')](this));ami['on'](_0x0375('0x37'),this[_0x0375('0x38')][_0x0375('0x2d')](this));ami['on'](_0x0375('0x39'),this[_0x0375('0x3a')][_0x0375('0x2d')](this));this['loopCampaigns']();this[_0x0375('0x3b')]();}function isNotNull(_0x3162d2){return _0x3162d2!==null&&!_['isUndefined'](_0x3162d2);}function checkIsLoggedIn(_0x17a4eb,_0x550de3){return function(){if(_0x550de3<=0x0){_0x17a4eb[_0x0375('0x3c')]=_0x0375('0x3d');throw _0x17a4eb['name']+_0x0375('0x3e');}};}function isActive(_0x226c7c){return _0x226c7c;}function checkIsActive(_0x5891c5,_0x502762){return function(){if(!isActive(_0x502762)){_0x5891c5[_0x0375('0x3c')]=_0x0375('0x3f');throw _0x5891c5[_0x0375('0x40')]+'\x20NOT\x20Active';}};}function checkInterval(_0x4d24be){return function(){if(!isNotNull(_0x4d24be[_0x0375('0x41')])){_0x4d24be[_0x0375('0x3c')]=_0x0375('0x42');throw _0x4d24be[_0x0375('0x40')]+_0x0375('0x43');}if(!isNotNull(_0x4d24be['Interval']['Intervals'])){_0x4d24be['message']='INTERVAL_IS_NULL';throw _0x4d24be['name']+_0x0375('0x43');}if(!isNotNull(_[_0x0375('0x44')](_0x4d24be[_0x0375('0x41')][_0x0375('0x45')]))){_0x4d24be[_0x0375('0x3c')]='INTERVAL_IS_NULL';throw _0x4d24be[_0x0375('0x40')]+_0x0375('0x43');}};}function msgResponse(_0x506832,_0x1e8473,_0x3c82c1){return{'action':_0x506832,'response':_0x1e8473,'message':_0x3c82c1,'stack':_0x3c82c1};}function myreject(_0x714dc9){return function(_0xc2c399){return _0x714dc9(msgResponse(_0x0375('0x46'),_0x0375('0x47'),JSON[_0x0375('0x48')](_0xc2c399)));};}function getSeconds(_0x1d552e,_0x4e0150){var _0x3adc51=moment(_0x1d552e)[_0x0375('0x49')](0x0);var _0x13f893=moment(_0x4e0150)[_0x0375('0x49')](0x0);return _0x3adc51[_0x0375('0x4a')](_0x13f893,_0x0375('0x4b'));}function emit(_0x586e11,_0x2536a0,_0x523097){io['to'](_0x586e11)['emit'](_0x2536a0,_0x523097);}function emitVoiceQueueSummary(_0x62ce0b){if(_0x62ce0b['type']===_0x0375('0x4c')){var _0x480cbb={'id':_0x62ce0b['id'],'name':_0x62ce0b[_0x0375('0x40')],'strategy':_0x62ce0b[_0x0375('0x4d')],'answered':_0x62ce0b['answered'],'available':_0x62ce0b['available'],'loggedIn':_0x62ce0b[_0x0375('0x4e')],'pTalking':_0x62ce0b[_0x0375('0x4f')],'sumBillable':_0x62ce0b[_0x0375('0x50')],'sumDuration':_0x62ce0b[_0x0375('0x51')],'sumHoldTime':_0x62ce0b[_0x0375('0x52')]||0x0,'talking':_0x62ce0b['talking'],'total':_0x62ce0b[_0x0375('0x53')],'type':_0x62ce0b[_0x0375('0x54')],'unmanaged':_0x62ce0b[_0x0375('0x55')],'abandoned':_0x62ce0b[_0x0375('0x56')],'waiting':_0x62ce0b[_0x0375('0x57')],'loggedInDb':_0x62ce0b[_0x0375('0x58')],'dialActive':_0x62ce0b[_0x0375('0x59')],'dialMethod':_0x62ce0b['dialMethod'],'dialOriginateCallerIdName':_0x62ce0b[_0x0375('0x5a')],'dialOriginateCallerIdNumber':_0x62ce0b[_0x0375('0x5b')],'dialOriginateTimeout':_0x62ce0b[_0x0375('0x5c')],'dialPrefix':_0x62ce0b['dialPrefix'],'outboundAnswerAgiCallsDay':_0x62ce0b[_0x0375('0x5d')],'outboundAnswerCallsDay':_0x62ce0b['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x62ce0b[_0x0375('0x5e')],'outboundBusyCallsDay':_0x62ce0b[_0x0375('0x5f')],'outboundCongestionCallsDay':_0x62ce0b[_0x0375('0x60')],'outboundDropCallsDayACS':_0x62ce0b['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x62ce0b[_0x0375('0x61')],'outboundDropCallsDayTimeout':_0x62ce0b[_0x0375('0x62')],'outboundNoAnswerCallsDay':_0x62ce0b[_0x0375('0x63')],'outboundNoSuchCallsDay':_0x62ce0b['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x62ce0b[_0x0375('0x64')],'outboundReCallsDay':_0x62ce0b[_0x0375('0x65')],'outboundRejectCallsDay':_0x62ce0b[_0x0375('0x66')],'outboundUnknownCallsDay':_0x62ce0b['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x62ce0b[_0x0375('0x67')],'predictiveIntervalAvgHoldtime':_0x62ce0b['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x62ce0b[_0x0375('0x68')],'predictiveIntervalDroppedCallsCallersExit':_0x62ce0b[_0x0375('0x69')],'predictiveIntervalDroppedCallsTimeout':_0x62ce0b['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x62ce0b['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x62ce0b['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x62ce0b[_0x0375('0x6a')],'predictiveIntervalMultiplicativeFactor':_0x62ce0b[_0x0375('0x6b')],'predictiveIntervalPauses':_0x62ce0b[_0x0375('0x6c')],'predictiveIntervalAvailable':_0x62ce0b['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x62ce0b[_0x0375('0x6d')],'message':_0x62ce0b['message'],'originated':_0x62ce0b['originated'],'erlangCalls':_0x62ce0b[_0x0375('0x6e')],'erlangCallToSecond':_0x62ce0b['erlangCallToSecond'],'erlangAbandonmentRate':_0x62ce0b[_0x0375('0x6f')],'erlangBusyFactor':_0x62ce0b[_0x0375('0x70')],'startPredictive':_0x62ce0b[_0x0375('0x71')],'startProgressive':_0x62ce0b[_0x0375('0x28')]};if(_0x62ce0b[_0x0375('0x72')]){_0x480cbb['Trunk']={'id':_0x62ce0b[_0x0375('0x72')]['id'],'name':_0x62ce0b[_0x0375('0x72')][_0x0375('0x40')],'active':_0x62ce0b['Trunk'][_0x0375('0x73')],'callerid':_0x62ce0b[_0x0375('0x72')][_0x0375('0x74')]};}if(_0x62ce0b['Interval']){_0x480cbb['Interval']={'id':_0x62ce0b[_0x0375('0x41')]['id'],'name':_0x62ce0b[_0x0375('0x41')][_0x0375('0x40')]};}var _0x3360a4=md5(JSON[_0x0375('0x48')](_0x480cbb));if(_0x62ce0b[_0x0375('0x75')]!==_0x3360a4){_0x62ce0b[_0x0375('0x75')]=_0x3360a4;emit(util[_0x0375('0x76')](_0x0375('0x77'),_0x480cbb['name']),_0x0375('0x78'),_0x480cbb);}}}function emitCampaignSummary(_0x3008f3){if(_0x3008f3[_0x0375('0x54')]===_0x0375('0x79')){emit(util[_0x0375('0x76')](_0x0375('0x7a'),_0x3008f3[_0x0375('0x40')]),'campaign:save',_0x3008f3);}}function checkGetDataPredictive(_0x1e84c3){if(isNotNull(_0x1e84c3)&&!_['isEmpty'](_0x1e84c3)){loggerPredictive[_0x0375('0x7b')](_0x0375('0x7c'));loggerPredictive[_0x0375('0x7b')](_0x0375('0x7d'),_0x1e84c3[_0x0375('0x6d')]);loggerPredictive[_0x0375('0x7b')]('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1e84c3['predictiveIntervalAnsweredCalls']);loggerPredictive[_0x0375('0x7b')](_0x0375('0x7e'),_0x1e84c3[_0x0375('0x7f')]);loggerPredictive[_0x0375('0x7b')](_0x0375('0x80'),_0x1e84c3[_0x0375('0x69')]);loggerPredictive[_0x0375('0x7b')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1e84c3[_0x0375('0x81')]);loggerPredictive[_0x0375('0x7b')](_0x0375('0x82'),_0x1e84c3[_0x0375('0x68')]);loggerPredictive[_0x0375('0x7b')](_0x0375('0x83'));if(_0x1e84c3[_0x0375('0x6d')]>0x0){if(!_[_0x0375('0x84')](_0x1e84c3[_0x0375('0x68')])&&_0x1e84c3[_0x0375('0x68')]>0x0){return!![];}loggerPredictive['info']('Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive');if(!_['isUndefined'](_0x1e84c3[_0x0375('0x81')])&&_0x1e84c3[_0x0375('0x81')]>0x0){return!![];}loggerPredictive[_0x0375('0x7b')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive['info'](_0x0375('0x85'));}}else{loggerPredictive[_0x0375('0x7b')](_0x0375('0x86'));}return![];}function mergeDataErlangB(_0x25e63b){return function(_0x2be455){loggerPredictive['info'](_0x0375('0x87'));loggerPredictive[_0x0375('0x7b')](_0x0375('0x88'),_0x2be455['erlangCalls']);loggerPredictive['info'](_0x0375('0x89'),_0x2be455[_0x0375('0x8a')]);loggerPredictive[_0x0375('0x7b')](_0x0375('0x8b'),_0x2be455[_0x0375('0x6f')]);loggerPredictive['info'](_0x0375('0x8c'),_0x2be455[_0x0375('0x70')]);loggerPredictive['info'](_0x0375('0x8b'),_0x2be455['erlangAbandonmentRate']);loggerPredictive[_0x0375('0x7b')](_0x0375('0x83'));_[_0x0375('0x8d')](_0x25e63b,_0x2be455);};}function getDiff(_0x1f527a){var _0x4b55ba=moment()[_0x0375('0x49')](0x0);var _0x295040=moment(_0x1f527a)[_0x0375('0x49')](0x0);return _0x4b55ba['diff'](_0x295040,_0x0375('0x4b'));}function ifInterval(_0x5bf49f,_0x1afa5b){if(_[_0x0375('0x84')](_0x1afa5b)){return![];}return getDiff(_0x1afa5b)<_0x5bf49f*0x3c;}function freeVariablesPredictive(_0x27806f){if(isNotNull(_0x27806f)){if(!_[_0x0375('0x84')](_0x27806f[_0x0375('0x28')])){_0x27806f['startProgressive']=undefined;loggerPredictive['info'](_0x27806f[_0x0375('0x40')],_0x0375('0x8e'));}if(!_[_0x0375('0x84')](_0x27806f[_0x0375('0x71')])){_0x27806f[_0x0375('0x71')]=undefined;loggerPredictive[_0x0375('0x7b')](_0x27806f[_0x0375('0x40')],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x0375('0x84')](_0x27806f['handlePredictive'])){clearInterval(_0x27806f['handlePredictive']);_0x27806f[_0x0375('0x8f')]=undefined;loggerPredictive[_0x0375('0x7b')](_0x27806f[_0x0375('0x40')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x582885,_0x19610c){if(_0x19610c===0x0){return 0x0;}var _0x2226eb=0x1;for(var _0x33e84c=0x1;_0x33e84c<=_0x19610c;_0x33e84c+=0x1){_0x2226eb=0x1+_0x2226eb*_0x33e84c/_0x582885;}return 0x1/_0x2226eb;}function isVoiceQueueOutbound(_0x50c957){return _0x50c957===_0x0375('0x4c');}function isNotPreview(_0x4a5fc0){return _0x4a5fc0!==_0x0375('0x90');}function isCampaignIvr(_0x477605){return _0x477605===_0x0375('0x79');}function getCallerId(_0x3e98e9,_0x89f29e,_0x5d9483){if(!_[_0x0375('0x84')](_0x5d9483)&&typeof _0x5d9483==='string'&&!_[_0x0375('0x44')](_0x5d9483)){if(!_[_0x0375('0x84')](_0x89f29e)&&typeof _0x89f29e===_0x0375('0x91')&&!_[_0x0375('0x44')](_0x89f29e)){return util[_0x0375('0x76')](_0x0375('0x92'),_0x89f29e,_0x5d9483);}return util[_0x0375('0x76')](_0x0375('0x92'),_0x5d9483,_0x5d9483);}if(!_[_0x0375('0x84')](_0x3e98e9)&&typeof _0x3e98e9===_0x0375('0x91')&&!_[_0x0375('0x44')](_0x3e98e9)){return _0x3e98e9;}return _0x0375('0x93');}function loggerCatchQueueSummary(_0x570425,_0x5116c6){return function(_0x1c098a){freeVariablesPredictive(_0x5116c6);emitVoiceQueueSummary(_0x5116c6);emitCampaignSummary(_0x5116c6);loggerSyncQueueSummary[_0x0375('0x94')](_0x570425,util[_0x0375('0x95')](_0x1c098a,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x11827a,_0x4a536a){return function(_0x455e){loggerPredictive['error'](_0x4a536a[_0x0375('0x40')],_0x11827a);loggerPredictive[_0x0375('0x94')](_0x455e['stack']);freeVariablesPredictive(_0x4a536a);};}function loggerCatch(_0x2f610d){return function(_0x438622){logger[_0x0375('0x94')](_0x2f610d,util[_0x0375('0x95')](_0x438622,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x5049c3){return _0x5049c3&&!_[_0x0375('0x84')](_0x5049c3)&&_0x5049c3[_0x0375('0x96')]>0x0;}function decremetOriginate(_0xdade95){if(!_[_0x0375('0x84')](_0xdade95)&&_0xdade95!==null){if(typeof _0xdade95[_0x0375('0x97')]!==_0x0375('0x98')){if(_0xdade95[_0x0375('0x97')]>0x0){_0xdade95[_0x0375('0x97')]-=0x1;}else{logger[_0x0375('0x94')]('[decremetOriginate]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x0375('0x94')](_0x0375('0x99'));}}function checkContactLowerLimitOriginate(_0x40d223,_0x55440a,_0x7eb8e7){if(_0x55440a>_0x7eb8e7){for(var _0x1848d9=0x0;_0x1848d9<_0x55440a-_0x7eb8e7;_0x1848d9+=0x1){decremetOriginate(_0x40d223);}}}function loggerGetContactDialer(_0x1d4229,_0x278783,_0x54decb){return function(_0x5778b3){checkContactLowerLimitOriginate(_0x278783,_0x54decb,0x0);logger[_0x0375('0x94')](_0x1d4229,util[_0x0375('0x95')](_0x5778b3,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x60297f){return function(_0x28cf3b){if(isNotNull(_0x28cf3b)&&isNotNull(_0x28cf3b[0x0])){if(_0x28cf3b[0x0][_0x0375('0x9a')]>0x0){_0x60297f['message']=_0x0375('0x9b');logger[_0x0375('0x7b')](_0x0375('0x9c')+_0x60297f[_0x0375('0x40')],_0x28cf3b[0x0][_0x0375('0x9a')],'contacts');}else{_0x60297f[_0x0375('0x3c')]=_0x0375('0x9d');logger[_0x0375('0x7b')]('[getContactDialer2][Empty]'+_0x60297f[_0x0375('0x40')]);}}};}function notSendMessagesQueue(_0x266123){if(_0x266123[_0x0375('0x9e')]){freeVariablesPredictive(_0x266123);if(_0x266123['originated']===0x0&&_0x266123[_0x0375('0x9f')]===0x0&&_0x266123[_0x0375('0x57')]===0x0&&(_0x266123[_0x0375('0x4f')]||0x0)===0x0){_0x266123[_0x0375('0x9e')]=![];_0x266123[_0x0375('0xa0')]=0x0;_0x266123[_0x0375('0x3c')]='NOT_ACTIVE';loggerSyncQueueSummary[_0x0375('0x94')](_0x0375('0xa1'),_0x266123[_0x0375('0x40')],'is\x20not\x20active');}else{_0x266123[_0x0375('0x3c')]=_0x0375('0xa2');loggerSyncQueueSummary['error'](_0x0375('0xa1'),_0x266123[_0x0375('0x40')],_0x0375('0xa3'));}emitVoiceQueueSummary(_0x266123);}}function notSendMessagesCampaign(_0x41a905){if(_0x41a905[_0x0375('0x9e')]){if(_0x41a905[_0x0375('0x97')]===0x0){_0x41a905[_0x0375('0x9e')]=![];_0x41a905[_0x0375('0x3c')]=_0x0375('0x3f');loggerSyncQueueSummary['error'](_0x0375('0xa4'),_0x41a905['name'],_0x0375('0xa5'));}else{_0x41a905[_0x0375('0x3c')]='IS_DISACTIVED';loggerSyncQueueSummary[_0x0375('0x94')](_0x0375('0xa4'),_0x41a905[_0x0375('0x40')],_0x0375('0xa3'));}emitCampaignSummary(_0x41a905);}}function createObjHistory(_0x15cea3,_0x2b89a7,_0x588fce,_0xbe8f3f,_0x47310d){_0x15cea3[_0x0375('0x3c')]=_0x588fce;var _0x244fb1=new Action(_0x15cea3,_0x2b89a7);var _0x50fbfb=new History(_0x244fb1);_0x50fbfb[_0x0375('0xa6')]=_0xbe8f3f;_0x50fbfb['statedesc']=_0x47310d;_0x50fbfb['endtime']=_0x244fb1[_0x0375('0xa7')];return _0x50fbfb;}Dialer[_0x0375('0xa8')][_0x0375('0x3b')]=function(){var _0x6baa39=this;setInterval(function(){_0x6baa39[_0x0375('0xa9')](_0x6baa39[_0x0375('0xaa')],_0x0375('0xab'));_0x6baa39[_0x0375('0xa9')](_0x6baa39[_0x0375('0xac')],_0x0375('0xad'));},0x32c8);};Dialer[_0x0375('0xa8')]['clearZombieChannels']=function(_0x5c17fb,_0x4157d){var _0x3a9e75=this;for(var _0x4daf0d in _0x5c17fb){if(typeof _0x5c17fb[_0x4daf0d]!==_0x0375('0x98')){this[_0x0375('0x21')][_0x0375('0x1e')](function(){if(!_['isNil'](_0x5c17fb[_0x4daf0d])){return ami[_0x0375('0xae')]({'action':_0x0375('0xaf'),'channel':_0x5c17fb[_0x4daf0d]['channel']})[_0x0375('0xb0')](function(_0x7adfc8){if(_0x7adfc8[_0x0375('0x3c')]===_0x0375('0xb1')){setTimeout(function(){if(_0x5c17fb[_0x4daf0d]&&_0x5c17fb[_0x4daf0d][_0x0375('0x54')]!=='ivr'){_0x3a9e75[_0x0375('0xb2')](_0x3a9e75[_0x0375('0xb3')][_0x5c17fb[_0x4daf0d][_0x0375('0xb4')]]);logger[_0x0375('0x94')](_0x0375('0xb5'),_0x4157d,_0x4daf0d,_0x5c17fb[_0x4daf0d][_0x0375('0xb4')]);delete _0x5c17fb[_0x4daf0d];}if(_0x5c17fb[_0x4daf0d]&&_0x5c17fb[_0x4daf0d][_0x0375('0x54')]===_0x0375('0x79')){_0x3a9e75[_0x0375('0xb2')](_0x3a9e75[_0x0375('0x22')][_0x5c17fb[_0x4daf0d]['queue']]);logger['error'](_0x0375('0xb6'),_0x4157d,_0x4daf0d,_0x5c17fb[_0x4daf0d][_0x0375('0xb4')]);delete _0x5c17fb[_0x4daf0d];}},0x2328);}});}});}}};Dialer[_0x0375('0xa8')][_0x0375('0xb7')]=function(_0x365d53){return BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](cmHopper['countReScheduled'](_0x365d53))[_0x0375('0xb0')](loggerCatch(_0x0375('0xba')));};Dialer[_0x0375('0xa8')][_0x0375('0xbb')]=function(_0x562ce1){return BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](cmHopperBlack[_0x0375('0xbb')](_0x562ce1))[_0x0375('0xb0')](loggerCatch(_0x0375('0xbc')));};Dialer[_0x0375('0xa8')][_0x0375('0xbd')]=function(_0x2aae3a){return BPromise[_0x0375('0xb8')]()['then'](cmHopperBlack[_0x0375('0xbd')](_0x2aae3a))[_0x0375('0xb0')](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer[_0x0375('0xa8')][_0x0375('0xbe')]=function(_0x56abdb){return BPromise[_0x0375('0xb8')]()['then'](cmHopperHistory[_0x0375('0xbf')](_0x56abdb))[_0x0375('0xb0')](loggerCatch(_0x0375('0xc0')));};Dialer[_0x0375('0xa8')]['rescheduleContact']=function(_0x58cd94){return BPromise['resolve']()[_0x0375('0xb9')](cmHopper[_0x0375('0xc1')](_0x58cd94))[_0x0375('0xb0')](loggerCatch(_0x0375('0xc2')));};Dialer[_0x0375('0xa8')]['unlockContact']=function(_0x1c72df,_0x55302b,_0x2d98d1){return BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](cmHopper['unlockContact'](_0x1c72df,_0x55302b,_0x2d98d1))[_0x0375('0xb0')](loggerCatch(_0x0375('0xc3')));};Dialer[_0x0375('0xa8')][_0x0375('0xc4')]=function(_0x4e5b3b,_0x3a8dc1,_0x104b43,_0x2a13ab,_0x4a180d){return BPromise['resolve']()[_0x0375('0xb9')](cmHopper[_0x0375('0xc4')](_0x4e5b3b,_0x3a8dc1,_0x104b43,_0x2a13ab))['catch'](function(_0x8c9b15){_0x4a180d[_0x0375('0xc5')]-=_0x104b43;_0x4a180d[_0x0375('0xc5')]=_0x4a180d['temp']>0x0?_0x4a180d[_0x0375('0xc5')]:0x0;loggerCatch(_0x0375('0xc6'))(_0x8c9b15);});};Dialer[_0x0375('0xa8')]['getContactDialerIvr']=function(_0x316e80,_0x3ebe46,_0x3846e4,_0x596b8b){return BPromise['resolve']()['then'](cmHopper[_0x0375('0xc7')](_0x316e80,_0x3ebe46,_0x3846e4))[_0x0375('0xb0')](function(_0x4994a2){_0x596b8b[_0x0375('0xc5')]-=_0x3ebe46;_0x596b8b['temp']=_0x596b8b['temp']>0x0?_0x596b8b['temp']:0x0;loggerCatch(_0x0375('0xc8'))(_0x4994a2);});};Dialer['prototype'][_0x0375('0xc9')]=function(_0x1badc6){return BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](voiceQueueRt[_0x0375('0xc9')](_0x1badc6))[_0x0375('0xb0')](loggerCatch(_0x0375('0xca')));};Dialer[_0x0375('0xa8')][_0x0375('0xcb')]=function(_0x52f6de){return BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](cmHopper[_0x0375('0xcb')](_0x52f6de))[_0x0375('0xb0')](loggerCatch(_0x0375('0xcc')));};Dialer[_0x0375('0xa8')][_0x0375('0xcd')]=function(_0x10316f){return BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](cmHopperHistory[_0x0375('0xcd')](_0x10316f))[_0x0375('0xb0')](loggerCatch(_0x0375('0xce')));};Dialer['prototype'][_0x0375('0xb2')]=function(_0x3e696c){if(!_[_0x0375('0x84')](_0x3e696c)&&_0x3e696c!==null){if(typeof _0x3e696c['originated']!==_0x0375('0x98')){if(_0x3e696c[_0x0375('0x97')]>0x0){_0x3e696c[_0x0375('0x97')]-=0x1;}else{logger[_0x0375('0x94')](_0x0375('0xcf'));}}}else{logger[_0x0375('0x94')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x0375('0xa8')][_0x0375('0xd0')]=function(_0x3233e4,_0x58af24){var _0x12a1e2=this;return function(_0x207e49){_0x12a1e2[_0x0375('0xb2')](_0x58af24);logger[_0x0375('0x94')](_0x3233e4,util[_0x0375('0x95')](_0x207e49,{'showHidden':![],'depth':null}));};};Dialer[_0x0375('0xa8')][_0x0375('0xd1')]=function(_0x134c28,_0x59cbec,_0x375b6a){var _0x315d6d={'state':0x19,'statedesc':_0x0375('0xd2')};this[_0x0375('0xb2')](_0x59cbec);this[_0x0375('0xd3')](_['merge'](_0x315d6d,_[_0x0375('0xd4')](_0x375b6a,['ContactId',_0x0375('0xd5'),'UserId','VoiceQueueId',_0x0375('0xd6')])),_0x0375('0xd7'),_0x0375('0xd8'));logger[_0x0375('0x94')](_0x134c28);};Dialer[_0x0375('0xa8')]['isSuccess']=function(_0x6b827b){return _0x6b827b===_0x0375('0xd9');};Dialer[_0x0375('0xa8')]['isTrunkReachable']=function(_0x3bad9b){return!_[_0x0375('0x84')](_0x3bad9b)&&_0x3bad9b&&!_[_0x0375('0x84')](_0x3bad9b[_0x0375('0x40')])&&!_[_0x0375('0x84')](_0x3bad9b[_0x0375('0x73')])&&_0x3bad9b[_0x0375('0x73')]&&(this[_0x0375('0x24')][util[_0x0375('0x76')]('SIP/%s',_0x3bad9b[_0x0375('0x40')])][_0x0375('0xaf')]==='reachable'||this['trunks'][util[_0x0375('0x76')](_0x0375('0xda'),_0x3bad9b[_0x0375('0x40')])][_0x0375('0xaf')]===_0x0375('0xdb'));};Dialer['prototype'][_0x0375('0xd3')]=function(_0x10d62c,_0x4696b9,_0x591506){this[_0x0375('0xcd')](_0x10d62c)[_0x0375('0xb0')](loggerCatch(_0x4696b9));this[_0x0375('0xcb')](_0x10d62c)[_0x0375('0xb0')](loggerCatch(_0x591506));};Dialer['prototype'][_0x0375('0xdc')]=function(_0x1fb524){var _0xd9bdf9=this['uniqueId'][_0x1fb524[_0x0375('0xdd')]];var _0x160a6c;if(!_[_0x0375('0xde')](_0x1fb524)&&!_[_0x0375('0xde')](_0x1fb524[_0x0375('0xdf')])&&!_['isNil'](_0x1fb524['variable'][_0x0375('0xe0')])&&_0x1fb524['exten']===_0x0375('0xe1')&&_0xd9bdf9){if(_0xd9bdf9[_0x0375('0x54')]!==_0x0375('0x79')&&this[_0x0375('0xb3')][_0xd9bdf9[_0x0375('0xb4')]][_0x0375('0xe2')]&&_0x1fb524[_0x0375('0xe3')]===_0x0375('0xe4')){delete this[_0x0375('0xaa')][_0x1fb524[_0x0375('0xdd')]];this[_0x0375('0xb2')](this[_0x0375('0xb3')][_0xd9bdf9[_0x0375('0xb4')]]);this['voiceQueues'][_0xd9bdf9['queue']][_0x0375('0xe5')]+=0x1;this[_0x0375('0xb3')][_0xd9bdf9[_0x0375('0xb4')]][_0x0375('0x5d')]+=0x1;_0x160a6c=new Hangup(_0xd9bdf9,_0x1fb524);_0x160a6c[_0x0375('0xa6')]=0x12;_0x160a6c['statedesc']=_0x0375('0xe6');_0x160a6c[_0x0375('0xe7')]='AMD';ami[_0x0375('0xe8')](_0x0375('0xe9'),ut[_0x0375('0xea')](_0x160a6c,_0x0375('0xeb')));this[_0x0375('0xd3')](_0x160a6c,'[syncHangupInAMD][createHistory]',_0x0375('0xec'));}if(_0xd9bdf9[_0x0375('0x54')]!==_0x0375('0x79')&&this[_0x0375('0xb3')][_0xd9bdf9['queue']]['dialAMDActive']&&_0x1fb524[_0x0375('0xe3')]===_0x0375('0xed')){var _0x33304a=this;return new BPromise(function(_0x28a440,_0x28d4db){delete _0x33304a[_0x0375('0xaa')][_0x1fb524[_0x0375('0xdd')]];_0x33304a[_0x0375('0xb2')](_0x33304a[_0x0375('0xb3')][_0xd9bdf9[_0x0375('0xb4')]]);_0x33304a[_0x0375('0xb3')][_0xd9bdf9[_0x0375('0xb4')]][_0x0375('0xe5')]+=0x1;_0x33304a['voiceQueues'][_0xd9bdf9['queue']][_0x0375('0x5d')]+=0x1;var _0x2fd517=_0x33304a[_0x0375('0xb3')][_0xd9bdf9[_0x0375('0xb4')]];var _0x14c3b7=new Hangup(_0xd9bdf9,_0x1fb524);_0x14c3b7[_0x0375('0xa6')]=0x13;_0x14c3b7[_0x0375('0xee')]=_0x0375('0xef');_0x14c3b7[_0x0375('0xe7')]=_0x0375('0xf0');_0x14c3b7[_0x0375('0xf1')]+=0x1;_0x14c3b7[_0x0375('0xf2')]+=0x1;_0x14c3b7[_0x0375('0xeb')]=!![];ami[_0x0375('0xe8')](_0x0375('0xe9'),ut['buildObj'](_0x14c3b7,_0x0375('0xeb')));_0x33304a[_0x0375('0xcd')](_0x14c3b7)[_0x0375('0xb0')](loggerCatch(_0x0375('0xf3')));if(_0x14c3b7[_0x0375('0xf4')]+_0x14c3b7[_0x0375('0xf5')]+_0x14c3b7[_0x0375('0xf6')]+_0x14c3b7[_0x0375('0xf7')]+_0x14c3b7[_0x0375('0xf8')]+_0x14c3b7['countabandonedretry']+_0x14c3b7['countmachineretry']+_0x14c3b7[_0x0375('0xf9')]>=_0x2fd517[_0x0375('0xfa')]){_0x33304a['stateGlobal'](_0x14c3b7,_0x28a440,_0x28d4db,'reason19\x20machine....');}else{if(_0x14c3b7[_0x0375('0xf1')]>=_0x2fd517[_0x0375('0xfb')]){_0x33304a['createStateFinal'](_0x14c3b7,_0x28a440,_0x28d4db,_0x0375('0xfc'));}else{_0x33304a[_0x0375('0xc1')]({'active':![],'countmachineretry':_0x14c3b7[_0x0375('0xf1')],'scheduledat':moment()['add'](_0x2fd517[_0x0375('0xfd')],_0x0375('0xfe'))[_0x0375('0x76')](_0x0375('0xff')),'ContactId':_0x14c3b7[_0x0375('0x100')],'ListId':_0x14c3b7[_0x0375('0xd5')],'VoiceQueueId':_0x14c3b7[_0x0375('0x101')]||undefined,'CampaignId':_0x14c3b7[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x102')));_0x28a440({'reschedule':0x1});}}});}if(_0xd9bdf9[_0x0375('0x54')]==='ivr'&&this[_0x0375('0x22')][_0xd9bdf9['queue']][_0x0375('0xe2')]&&_0x1fb524[_0x0375('0xe3')]===_0x0375('0xe4')){delete this['uniqueId'][_0x1fb524[_0x0375('0xdd')]];this['updateOriginated'](this[_0x0375('0x22')][_0xd9bdf9['queue']]);_0x160a6c=new Hangup(_0xd9bdf9,_0x1fb524);_0x160a6c[_0x0375('0xa6')]=0x12;_0x160a6c[_0x0375('0xee')]=_0x0375('0xe6');_0x160a6c[_0x0375('0xe7')]=_0x0375('0xf0');ami[_0x0375('0xe8')](_0x0375('0xe9'),ut[_0x0375('0xea')](_0x160a6c,'amd'));this[_0x0375('0xd3')](_0x160a6c,_0x0375('0x103'),_0x0375('0x104'));}if(_0xd9bdf9['type']===_0x0375('0x79')&&this[_0x0375('0x22')][_0xd9bdf9['queue']]['dialAMDActive']&&_0x1fb524[_0x0375('0xe3')]===_0x0375('0xed')){var _0x33304a=this;return new BPromise(function(_0x54267f,_0x1bbe44){delete _0x33304a[_0x0375('0xaa')][_0x1fb524['uniqueid']];_0x33304a[_0x0375('0xb2')](_0x33304a[_0x0375('0x22')][_0xd9bdf9['queue']]);_0x33304a['campaigns'][_0xd9bdf9[_0x0375('0xb4')]][_0x0375('0xe5')]+=0x1;_0x33304a[_0x0375('0x22')][_0xd9bdf9[_0x0375('0xb4')]][_0x0375('0x5d')]+=0x1;var _0x42d39c=_0x33304a[_0x0375('0x22')][_0xd9bdf9['queue']];var _0x4fef39=new Hangup(_0xd9bdf9,_0x1fb524);_0x4fef39[_0x0375('0xa6')]=0x13;_0x4fef39[_0x0375('0xee')]=_0x0375('0xef');_0x4fef39[_0x0375('0xe7')]='AMD';_0x4fef39[_0x0375('0xf1')]+=0x1;_0x4fef39[_0x0375('0xf2')]+=0x1;_0x4fef39['amd']=!![];ami[_0x0375('0xe8')](_0x0375('0xe9'),ut[_0x0375('0xea')](_0x4fef39,_0x0375('0xeb')));_0x33304a[_0x0375('0xcd')](_0x4fef39)[_0x0375('0xb0')](loggerCatch(_0x0375('0xf3')));if(_0x4fef39[_0x0375('0xf4')]+_0x4fef39[_0x0375('0xf5')]+_0x4fef39[_0x0375('0xf6')]+_0x4fef39[_0x0375('0xf7')]+_0x4fef39[_0x0375('0xf8')]+_0x4fef39['countabandonedretry']+_0x4fef39['countmachineretry']+_0x4fef39[_0x0375('0xf9')]>=_0x42d39c[_0x0375('0xfa')]){_0x33304a[_0x0375('0x105')](_0x4fef39,_0x54267f,_0x1bbe44,_0x0375('0x106'));}else{if(_0x4fef39['countmachineretry']>=_0x42d39c[_0x0375('0xfb')]){_0x33304a['createStateFinal'](_0x4fef39,_0x54267f,_0x1bbe44,_0x0375('0xfc'));}else{_0x33304a['rescheduleContact']({'active':![],'countmachineretry':_0x4fef39[_0x0375('0xf1')],'scheduledat':moment()['add'](_0x42d39c['dialMachineRetryFrequency'],_0x0375('0xfe'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4fef39[_0x0375('0x100')],'ListId':_0x4fef39[_0x0375('0xd5')],'VoiceQueueId':_0x4fef39[_0x0375('0x101')]||undefined,'CampaignId':_0x4fef39['CampaignId']||undefined})['catch'](loggerCatch(_0x0375('0x102')));_0x54267f({'reschedule':0x1});}}});}}};Dialer[_0x0375('0xa8')][_0x0375('0x107')]=function(_0x3c1745){var _0x5d493a=this[_0x0375('0xaa')][_0x3c1745[_0x0375('0xdd')]];var _0x68574d=this;var _0x19e744;if(_0x5d493a&&_0x5d493a[_0x0375('0x54')]==='ivr'){delete this[_0x0375('0xaa')][_0x3c1745[_0x0375('0xdd')]];this[_0x0375('0xb2')](this[_0x0375('0x22')][_0x5d493a[_0x0375('0xb4')]]);this[_0x0375('0x22')][_0x5d493a['queue']][_0x0375('0x108')]+=0x1;_0x19e744=new Hangup(_0x5d493a,_0x3c1745);this[_0x0375('0xcd')](_0x19e744)[_0x0375('0xb0')](loggerCatch(_0x0375('0x109')));this[_0x0375('0xcb')](_0x19e744)[_0x0375('0xb0')](loggerCatch('[syncHangupIvr]'));}if(_0x5d493a&&_0x5d493a['type']!==_0x0375('0x79')&&isNotNull(this['voiceQueues'][_0x5d493a[_0x0375('0xb4')]][_0x0375('0x10a')])){delete this[_0x0375('0xaa')][_0x3c1745[_0x0375('0xdd')]];this['updateOriginated'](this[_0x0375('0xb3')][_0x5d493a[_0x0375('0xb4')]]);this[_0x0375('0xb3')][_0x5d493a[_0x0375('0xb4')]][_0x0375('0xe5')]+=0x1;this[_0x0375('0xb3')][_0x5d493a['queue']][_0x0375('0x5d')]+=0x1;_0x19e744=new Hangup(_0x5d493a,_0x3c1745);_0x19e744['state']=0x10;_0x19e744[_0x0375('0xee')]=_0x0375('0x10b');_0x19e744[_0x0375('0xe7')]=_0x0375('0x10c');this[_0x0375('0xcd')](_0x19e744)[_0x0375('0xb0')](loggerCatch(_0x0375('0x109')));this['moveContactManagedDialer'](_0x19e744)[_0x0375('0xb0')](loggerCatch('[syncHangupIvr]'));}if(_0x5d493a&&_0x5d493a[_0x0375('0x54')]!==_0x0375('0x79')&&!isNotNull(this[_0x0375('0xb3')][_0x5d493a[_0x0375('0xb4')]]['dialQueueProject'])){delete this[_0x0375('0xaa')][_0x3c1745[_0x0375('0xdd')]];this[_0x0375('0xb2')](this['voiceQueues'][_0x5d493a[_0x0375('0xb4')]]);this[_0x0375('0xb3')][_0x5d493a['queue']][_0x0375('0x10d')]+=0x1;_0x19e744=new Hangup(_0x5d493a,_0x3c1745);_0x19e744[_0x0375('0xa6')]=0xc;_0x19e744['statedesc']=_0x3c1745[_0x0375('0x10e')];_0x19e744[_0x0375('0xe7')]=_0x0375('0x10f');this[_0x0375('0xcd')](_0x19e744)[_0x0375('0xb0')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x0375('0xcb')](_0x19e744)[_0x0375('0xb0')](loggerCatch(_0x0375('0x110')));}};Dialer[_0x0375('0xa8')][_0x0375('0x111')]=function(_0x77c560){var _0x4f896f=this['uniqueId'][_0x77c560[_0x0375('0xdd')]];var _0x43fac4=this;if(this[_0x0375('0xb3')][_0x77c560[_0x0375('0xb4')]]){if(_0x4f896f&&_0x4f896f['type']!==_0x0375('0x79')){delete this[_0x0375('0xaa')][_0x77c560[_0x0375('0xdd')]];this[_0x0375('0xb3')][_0x77c560['queue']]['outboundAnswerCallsDay']+=0x1;var _0x3319e0=new AgentComplete(_0x4f896f,_0x77c560);if(_0x77c560[_0x0375('0x112')]===_0x0375('0x113')){_0x3319e0[_0x0375('0x114')]=this[_0x0375('0xb3')][_0x77c560[_0x0375('0xb4')]][_0x0375('0x115')]&&this[_0x0375('0xb3')][_0x77c560[_0x0375('0xb4')]][_0x0375('0x116')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0x0375('0xcd')](_0x3319e0)['catch'](loggerCatch(_0x0375('0x117')));this[_0x0375('0xcb')](_0x3319e0)[_0x0375('0xb0')](loggerCatch(_0x0375('0x118')));}}};Dialer['prototype']['syncAgentConnect']=function(_0x1713a5){if(this[_0x0375('0xb3')][_0x1713a5[_0x0375('0xb4')]]){if(this['uniqueId'][_0x1713a5[_0x0375('0xdd')]]&&this[_0x0375('0xaa')][_0x1713a5['uniqueid']][_0x0375('0x54')]!==_0x0375('0x79')){this['updateOriginated'](this['voiceQueues'][_0x1713a5['queue']]);this[_0x0375('0xaa')][_0x1713a5[_0x0375('0xdd')]]['answertime']=moment()[_0x0375('0x76')](_0x0375('0xff'));}}};Dialer[_0x0375('0xa8')][_0x0375('0x119')]=function(_0x573898){this[_0x0375('0xcd')](_0x573898)[_0x0375('0xb0')](loggerCatch(_0x0375('0x117')));this[_0x0375('0xcb')](_0x573898)['catch'](loggerCatch(_0x0375('0x11a')));};Dialer[_0x0375('0xa8')][_0x0375('0x2f')]=function(_0x4067e4){var _0x47817f=this[_0x0375('0xaa')][_0x4067e4[_0x0375('0xdd')]];var _0xfaf673=this;if(this[_0x0375('0xb3')][_0x4067e4['queue']]){if(_0x47817f&&_0x47817f['type']!==_0x0375('0x79')){delete this[_0x0375('0xaa')][_0x4067e4['uniqueid']];this[_0x0375('0xb2')](this[_0x0375('0xb3')][_0x4067e4['queue']]);_0x47817f[_0x0375('0x11b')]=moment()['format'](_0x0375('0xff'));var _0x59f903=new QueueCallerAbandon(_0x47817f,_0x4067e4);if(getSeconds(_0x47817f[_0x0375('0x11b')],_0x47817f[_0x0375('0x11c')])>=_0x47817f['dialQueueTimeout']){this['voiceQueues'][_0x4067e4[_0x0375('0xb4')]][_0x0375('0x7f')]+=0x1;this[_0x0375('0xb3')][_0x4067e4[_0x0375('0xb4')]][_0x0375('0x62')]+=0x1;this[_0x0375('0xb3')][_0x4067e4[_0x0375('0xb4')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x59f903['state']=0xa;_0x59f903[_0x0375('0xee')]=_0x0375('0x11d');_0x59f903[_0x0375('0x11e')]=_0x0375('0x11f');_0x59f903[_0x0375('0x114')]=this[_0x0375('0xb3')][_0x4067e4[_0x0375('0xb4')]][_0x0375('0x115')]?moment()[_0x0375('0x76')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;_0x59f903[_0x0375('0xf8')]+=0x1;_0x59f903['countglobal']+=0x1;if(_0x59f903[_0x0375('0xf8')]>=this[_0x0375('0xb3')][_0x4067e4[_0x0375('0xb4')]][_0x0375('0x120')]){this['queueCallerAbandonCreateState'](_0x59f903);}else{this['rescheduleContact']({'active':![],'countdropretry':_0x59f903[_0x0375('0xf8')],'scheduledat':moment()['add'](this['voiceQueues'][_0x4067e4['queue']][_0x0375('0x121')],_0x0375('0xfe'))[_0x0375('0x76')](_0x0375('0xff')),'ContactId':_0x47817f[_0x0375('0x100')],'ListId':_0x47817f[_0x0375('0xd5')],'VoiceQueueId':_0x47817f[_0x0375('0x101')]||undefined,'CampaignId':_0x47817f['CampaignId']||undefined})['catch'](loggerCatch(_0x0375('0x122')));var _0x20758e=new History(_0x59f903);_0x20758e[_0x0375('0xa6')]=0xa;_0x20758e[_0x0375('0xee')]=_0x0375('0x11d');_0x20758e['starttime']=moment()[_0x0375('0x76')]('YYYY-MM-DD\x20HH:mm:ss');_0x20758e[_0x0375('0x123')]=_0x20758e[_0x0375('0xa7')];_0x20758e[_0x0375('0x124')]=_0x59f903[_0x0375('0x124')];_0x20758e[_0x0375('0x125')]=_0x59f903['calleridnum'];this[_0x0375('0xcd')](_0x20758e)[_0x0375('0xb0')](loggerCatch(_0x0375('0x126')));}}else{this[_0x0375('0xb3')][_0x4067e4[_0x0375('0xb4')]][_0x0375('0x69')]+=0x1;this[_0x0375('0xb3')][_0x4067e4['queue']][_0x0375('0x61')]+=0x1;_0x59f903[_0x0375('0xa6')]=0xb;_0x59f903[_0x0375('0xee')]=_0x0375('0x127');_0x59f903[_0x0375('0x11e')]='CALLEREXIT';_0x59f903['countabandonedretry']+=0x1;_0x59f903[_0x0375('0xf2')]+=0x1;if(_0x59f903[_0x0375('0x128')]>=this[_0x0375('0xb3')][_0x4067e4[_0x0375('0xb4')]]['dialAbandonedMaxRetry']){this[_0x0375('0x119')](_0x59f903);}else{this[_0x0375('0xc1')]({'active':![],'countabandonedretry':_0x59f903[_0x0375('0x128')],'scheduledat':moment()[_0x0375('0x129')](this['voiceQueues'][_0x4067e4[_0x0375('0xb4')]][_0x0375('0x12a')],'minutes')[_0x0375('0x76')](_0x0375('0xff')),'ContactId':_0x47817f[_0x0375('0x100')],'ListId':_0x47817f[_0x0375('0xd5')],'VoiceQueueId':_0x47817f[_0x0375('0x101')]||undefined,'CampaignId':_0x47817f[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x12b')));var _0x20758e=new History(_0x59f903);_0x20758e[_0x0375('0xa6')]=0xb;_0x20758e['statedesc']='Abandoned';_0x20758e[_0x0375('0xa7')]=moment()[_0x0375('0x76')](_0x0375('0xff'));_0x20758e['endtime']=_0x20758e[_0x0375('0xa7')];_0x20758e['calleridname']=_0x59f903['calleridname'];_0x20758e[_0x0375('0x125')]=_0x59f903[_0x0375('0x125')];this[_0x0375('0xcd')](_0x20758e)[_0x0375('0xb0')](loggerCatch('[syncAgentComplete][createHistory][11]'));}}}}};Dialer[_0x0375('0xa8')][_0x0375('0x35')]=function(_0x517d05){if(this['actions'][_0x517d05[_0x0375('0xdd')]]){this['actions'][_0x517d05[_0x0375('0xdd')]][_0x0375('0x12c')]=_0x517d05['channel'];}if(this[_0x0375('0xaa')][_0x517d05['uniqueid']]){this[_0x0375('0xaa')][_0x517d05[_0x0375('0xdd')]][_0x0375('0x12c')]=_0x517d05[_0x0375('0x12c')];}};Dialer[_0x0375('0xa8')][_0x0375('0x38')]=function(_0x37a0e0){if(strategy[this[_0x0375('0xb3')][this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]][_0x0375('0xb4')]][_0x0375('0x4d')]]===_0x0375('0x1d')){if(this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]]&&_[_0x0375('0xde')](this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]]['locked'])&&_0x37a0e0[_0x0375('0xaf')]==='1'&&_0x37a0e0[_0x0375('0x12e')]==='0'){if(this[_0x0375('0x23')][_0x37a0e0[_0x0375('0x12f')]]){if(!this[_0x0375('0x23')][_0x37a0e0[_0x0375('0x12f')]][_0x0375('0x130')]){this[_0x0375('0x23')][_0x37a0e0['stateinterface']][_0x0375('0x130')]=!![];this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]][_0x0375('0x130')]=!![];this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]]['stateinterface']=_0x37a0e0[_0x0375('0x12f')];}}}}else if((strategy[this[_0x0375('0xb3')][this[_0x0375('0xac')][_0x37a0e0['actionid']]['queue']][_0x0375('0x4d')]]||_0x0375('0x131'))==='rrmemory'){if(this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]]){if(this['agents'][_0x37a0e0[_0x0375('0x12f')]]){this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]][_0x0375('0x12f')]=_0x37a0e0[_0x0375('0x12f')];if(_['isNil'](this[_0x0375('0x2a')][this[_0x0375('0xac')][_0x37a0e0['actionid']]['queue']])){this['queueBooked'][this[_0x0375('0xac')][_0x37a0e0['actionid']][_0x0375('0xb4')]]=[];}this[_0x0375('0x2a')][this['actions'][_0x37a0e0[_0x0375('0x12d')]]['queue']][_0x0375('0x132')](_['merge'](_[_0x0375('0xd4')](this['actions'][_0x37a0e0['actionid']],[_0x0375('0x133'),_0x0375('0x12f')]),{'status':_0x37a0e0['status'],'paused':_0x37a0e0['paused']}));}}}};function unlockQueueStatus(_0x238592,_0x3fc2e3){setTimeout(function(){if(_[_0x0375('0x84')](_0x238592[_0x0375('0x134')])){loggerBooked['error'](_0x0375('0x135'),_0x3fc2e3);}_0x238592[_0x0375('0x134')]=!![];loggerBooked[_0x0375('0x7b')]('[booked][unlockQueueStatus]',_0x3fc2e3,JSON['stringify'](_['pick'](_0x238592,[_0x0375('0x40'),_0x0375('0x134')])));},0x1f3);}Dialer['prototype']['syncQueueStatusComplete']=function(_0x64d7e8){var _0x17cba8=this;var _0x5da507=_0x17cba8[_0x0375('0xb3')][_0x17cba8['actions'][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]];if(strategy[this['voiceQueues'][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]][_0x0375('0x4d')]]===_0x0375('0x1d')){if(this[_0x0375('0xac')][_0x64d7e8['actionid']]&&this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0x12f')]){this[_0x0375('0x90')][_0x0375('0x136')](this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['idHopper'],this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0x12f')])[_0x0375('0xb0')](function(_0x319741){logger[_0x0375('0x94')](_0x0375('0x137'),util['inspect'](_0x319741,{'showHidden':![],'depth':null}));})[_0x0375('0x20')](function(){_0x17cba8[_0x0375('0xb2')](_0x17cba8['voiceQueues'][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]);_0x17cba8[_0x0375('0x23')][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['stateinterface']][_0x0375('0x130')]=![];delete _0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]];unlockQueueStatus(_0x5da507);});}else{this[_0x0375('0xb2')](this[_0x0375('0xb3')][this['actions'][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0x100')],'ListId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xd5')],'VoiceQueueId':this['actions'][_0x64d7e8['actionid']][_0x0375('0x101')]||undefined,'CampaignId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0x64d7e8[_0x0375('0x12d')]];unlockQueueStatus(_0x5da507);}}else if((strategy[this[_0x0375('0xb3')][this['actions'][_0x64d7e8[_0x0375('0x12d')]]['queue']][_0x0375('0x4d')]]||_0x0375('0x131'))==='rrmemory'){var _0x2546c4;if(this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]&&!_[_0x0375('0x44')](this[_0x0375('0x2a')][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]])){if(this[_0x0375('0x2b')][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]){this[_0x0375('0x2b')][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['queue']]=this[_0x0375('0x2b')][this['actions'][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]?this['queueBookedRR'][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]:this[_0x0375('0x2a')][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['queue']]?this['queueBooked'][this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0xb4')]][_0x0375('0x138')]||0x0:0x0;}this['queueBooked'][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]][_0x0375('0x138')]=this[_0x0375('0x2b')][this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0xb4')]];for(var _0x39192a=0x0;_0x39192a<this[_0x0375('0x2a')][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['queue']][_0x0375('0x96')];_0x39192a+=0x1){_0x2546c4=rr(this[_0x0375('0x2a')][this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0xb4')]]);this[_0x0375('0x2b')][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]=this[_0x0375('0x2a')][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]['_rr'];if(_0x2546c4['status']==='1'&&_0x2546c4['paused']==='0'){break;}}if(!_[_0x0375('0xde')](_0x2546c4)){this[_0x0375('0x23')][_0x2546c4[_0x0375('0x12f')]]['unlockRR']=_['isUndefined'](this[_0x0375('0x23')][_0x2546c4['stateinterface']][_0x0375('0x139')])?!![]:this[_0x0375('0x23')][_0x2546c4[_0x0375('0x12f')]]['unlockRR'];}loggerBooked[_0x0375('0x7b')](_0x0375('0x13a'),_0x64d7e8[_0x0375('0x12d')],'Agent:\x20',JSON[_0x0375('0x48')](_[_0x0375('0xd4')](this[_0x0375('0x23')][_0x2546c4[_0x0375('0x12f')]],[_0x0375('0x40'),'unlockRR'])),_0x0375('0x13b'),JSON[_0x0375('0x48')](_0x2546c4[_0x0375('0x133')]));if(!_[_0x0375('0xde')](_0x2546c4)&&_0x2546c4['status']==='1'&&_0x2546c4[_0x0375('0x12e')]==='0'&&this[_0x0375('0x23')][_0x2546c4[_0x0375('0x12f')]][_0x0375('0x139')]){this[_0x0375('0x23')][_0x2546c4[_0x0375('0x12f')]]['unlockRR']=![];this[_0x0375('0x2a')][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['queue']]=[];this[_0x0375('0x90')][_0x0375('0x136')](_0x2546c4['idHopper'],_0x2546c4[_0x0375('0x12f')])[_0x0375('0xb0')](function(_0x5dd85b){logger[_0x0375('0x94')](_0x0375('0x137'),util[_0x0375('0x95')](_0x5dd85b,{'showHidden':![],'depth':null}));})[_0x0375('0x20')](function(){_0x17cba8[_0x0375('0xb2')](_0x17cba8[_0x0375('0xb3')][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['queue']]);setTimeout(function(){_0x17cba8[_0x0375('0x23')][_0x2546c4['stateinterface']]['unlockRR']=!![];loggerBooked[_0x0375('0x7b')](_0x0375('0x13c'),_0x64d7e8[_0x0375('0x12d')],_0x0375('0x13d'),JSON['stringify'](_[_0x0375('0xd4')](_0x17cba8[_0x0375('0x23')][_0x2546c4[_0x0375('0x12f')]],[_0x0375('0x40'),_0x0375('0x139')])),_0x0375('0x13b'),JSON[_0x0375('0x48')](_0x2546c4[_0x0375('0x133')]));},0xc7);delete _0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]];unlockQueueStatus(_0x5da507,_0x64d7e8[_0x0375('0x12d')]);});}else{loggerBooked[_0x0375('0x7b')](_0x0375('0x13e'));this[_0x0375('0xb2')](this[_0x0375('0xb3')][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]);this[_0x0375('0xc1')]({'active':![],'ContactId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0x100')],'ListId':this['actions'][_0x64d7e8['actionid']][_0x0375('0xd5')],'VoiceQueueId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0x101')]||undefined,'CampaignId':this['actions'][_0x64d7e8['actionid']]['CampaignId']||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x13f')));delete this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]];unlockQueueStatus(_0x5da507);}}else{loggerBooked['info']('[booked][unlock2]');this['updateOriginated'](this['voiceQueues'][this['actions'][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]);this[_0x0375('0xc1')]({'active':![],'ContactId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0x100')],'ListId':this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0xd5')],'VoiceQueueId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0x101')]||undefined,'CampaignId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]];unlockQueueStatus(_0x5da507);}}else{loggerBooked[_0x0375('0x7b')](_0x0375('0x140'));this[_0x0375('0xb2')](this['voiceQueues'][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['queue']]);this[_0x0375('0xc1')]({'active':![],'ContactId':this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0x100')],'ListId':this['actions'][_0x64d7e8[_0x0375('0x12d')]]['ListId'],'VoiceQueueId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0x101')]||undefined,'CampaignId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['CampaignId']||undefined})['catch'](loggerCatch(_0x0375('0x141')));delete this[_0x0375('0xac')][_0x64d7e8['actionid']];unlockQueueStatus(_0x5da507);}};Dialer['prototype'][_0x0375('0x142')]=function(){var _0x5a5424=this;setInterval(function(){_0x5a5424[_0x0375('0x143')]();},0x3e8);};Dialer[_0x0375('0xa8')]['checkIsTrunkReachable']=function(_0x54b150){var _0x1ca874=this;return function(){if(!_0x1ca874[_0x0375('0x144')](_0x54b150['Trunk'])){if(!_0x1ca874[_0x0375('0x144')](_0x54b150['TrunkBackup'])){_0x54b150[_0x0375('0x3c')]='TRUNK_IS_NOT_REACHABLE';throw _0x54b150[_0x0375('0x40')]+_0x0375('0x145');}}};};Dialer[_0x0375('0xa8')][_0x0375('0x146')]=function(_0x171663,_0x34a4cc,_0xb9a50f,_0x5ea66f){var _0x2e4496=this;return function(){var _0x404e34=!![];return _0x2e4496['ifTime'](_0x171663,_0x34a4cc,_0xb9a50f,_0x5ea66f,_0x404e34);};};Dialer['prototype'][_0x0375('0x147')]=function(_0x3f40e3,_0x33a276,_0x1704f5,_0x4f3e37){var _0x27ce29=this;return function(){var _0x1160d7=![];return _0x27ce29['ifTime'](_0x3f40e3[_0x0375('0x45')],_0x33a276,_0x1704f5,_0x4f3e37,_0x1160d7);};};Dialer['prototype'][_0x0375('0x148')]=function(_0x10ae92,_0x578be0,_0x3939e0,_0x519dea,_0x4ca5eb){var _0x37e7ec=[];return new BPromise(function(_0x3690c0,_0x1fe8c8){if(!isNotNull(_0x10ae92)){_0x519dea[_0x0375('0x3c')]=_0x0375('0x42');return _0x1fe8c8(msgResponse(_0x0375('0x148'),'Failure',_0x3939e0+_0x0375('0x149')));}if(_[_0x0375('0x44')](_0x10ae92)){_0x519dea[_0x0375('0x3c')]=_0x0375('0x14a');return _0x1fe8c8(msgResponse(_0x0375('0x148'),_0x0375('0x14b'),_0x3939e0+'\x20Intervals\x20is\x20empty\x20'));}if(_0x578be0&&_['isUndefined'](config['timezones'][_0x578be0])){_0x519dea[_0x0375('0x3c')]=_0x0375('0x14c');return _0x1fe8c8(msgResponse(_0x0375('0x148'),_0x0375('0x14b'),_0x3939e0+_0x0375('0x14d')+_0x578be0));}if(_[_0x0375('0x14e')](_0x10ae92)){for(var _0x51bce7=0x0;_0x51bce7<_0x10ae92['length'];_0x51bce7+=0x1){_0x37e7ec[_0x0375('0x132')](ami[_0x0375('0xae')]({'action':_0x0375('0x14f'),'command':util[_0x0375('0x76')]('iftime\x20%s,%s',_0x10ae92[_0x51bce7][_0x0375('0x150')],!_[_0x0375('0x84')](config['timezones'][_0x578be0])?_0x578be0:'')})[_0x0375('0xb9')](function(_0x356bbe){return _0x356bbe['content'][_0x0375('0x151')](_0x0375('0x152'))>=0x0;})['catch'](myreject(_0x1fe8c8)));}}else{_0x37e7ec[_0x0375('0x132')](ami[_0x0375('0xae')]({'action':'command','command':util[_0x0375('0x76')](_0x0375('0x153'),_0x10ae92,!_[_0x0375('0x84')](config[_0x0375('0x154')][_0x578be0])?_0x578be0:'')})[_0x0375('0xb9')](function(_0x4f17da){return _0x4f17da['content'][_0x0375('0x151')](_0x0375('0x152'))>=0x0;})[_0x0375('0xb0')](myreject(_0x1fe8c8)));}BPromise[_0x0375('0x155')](_0x37e7ec)['then'](function(_0x34ab9a){var _0x40e4b2=_[_0x0375('0x156')](_0x34ab9a);if(_0x40e4b2){return _0x3690c0(_0x40e4b2);}else{_0x519dea[_0x0375('0x3c')]=_0x4ca5eb?_0x0375('0x157'):_0x0375('0x158');return _0x1fe8c8(msgResponse(_0x0375('0x159'),'Failure','Global:\x20'+_0x4ca5eb+'\x20'+_0x3939e0+_0x0375('0x15a')+util[_0x0375('0x95')](_0x10ae92,{'showHidden':![],'depth':null})+_0x0375('0x15b')+_0x578be0));}})['catch'](function(_0x5601ae){return _0x1fe8c8(msgResponse(_0x0375('0x148'),_0x0375('0x14b'),JSON[_0x0375('0x48')](_0x5601ae)));});});};Dialer['prototype']['checkDialMethod']=function(_0x29da65){var _0x351710=this;return function(){switch(_0x29da65[_0x0375('0x15c')]){case _0x0375('0x15d'):freeVariablesPredictive(_0x29da65);_0x351710[_0x0375('0x15e')](_0x29da65,0x1);break;case _0x0375('0x15f'):freeVariablesPredictive(_0x29da65);_0x351710[_0x0375('0x15e')](_0x29da65,_0x29da65[_0x0375('0x160')]);break;case _0x0375('0xa'):_0x351710[_0x0375('0xa')](_0x29da65);break;case _0x0375('0x9'):freeVariablesPredictive(_0x29da65);_0x351710['handlePower'](_0x29da65,0x1);break;default:freeVariablesPredictive(_0x29da65);logger[_0x0375('0x94')](_0x0375('0x161'),_0x29da65[_0x0375('0x40')],_0x0375('0x162'));}};};Dialer[_0x0375('0xa8')]['launchHandleIvr']=function(_0x558adb){var _0x5688a5=this;return function(){_0x5688a5['handleIvr'](_0x558adb);};};Dialer[_0x0375('0xa8')][_0x0375('0xc')]=function(_0x494060){var _0x3d27bf=this;if(isNotPreview(_0x494060[_0x0375('0x15c')])){if(isVoiceQueueOutbound(_0x494060[_0x0375('0x54')])&&isActive(_0x494060['dialActive'])){_0x494060[_0x0375('0x9e')]=!![];BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](checkIsLoggedIn(_0x494060,_0x494060['loggedIn']))[_0x0375('0xb9')](checkIsActive(_0x494060,_0x494060[_0x0375('0x59')]))[_0x0375('0xb9')](checkInterval(_0x494060))['then'](_0x3d27bf['checkIsTrunkReachable'](_0x494060))[_0x0375('0xb9')](_0x3d27bf[_0x0375('0x146')](_0x494060['dialGlobalInterval'],_0x494060[_0x0375('0x163')],_0x494060[_0x0375('0x40')],_0x494060))[_0x0375('0xb9')](_0x3d27bf[_0x0375('0x147')](_0x494060[_0x0375('0x41')],_0x494060[_0x0375('0x163')],_0x494060[_0x0375('0x40')],_0x494060))[_0x0375('0xb9')](_0x3d27bf[_0x0375('0x164')](_0x494060))['catch'](loggerCatchQueueSummary('[syncQueueSummary]',_0x494060));}else{notSendMessagesQueue(_0x494060);}}else{freeVariablesPredictive(_0x494060);}};Dialer[_0x0375('0xa8')][_0x0375('0x143')]=function(){var _0x318ef5=this;var _0x19da83;for(var _0x526104 in this[_0x0375('0x22')]){if(typeof this['campaigns'][_0x526104]!=='undefined'){_0x19da83=this[_0x0375('0x22')][_0x526104];if(isCampaignIvr(_0x19da83['type'])&&isActive(_0x19da83[_0x0375('0x73')])){_0x19da83['sendMessageOneNotActive']=!![];BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](checkIsActive(_0x19da83,_0x19da83[_0x0375('0x73')]))[_0x0375('0xb9')](checkInterval(_0x19da83))[_0x0375('0xb9')](_0x318ef5[_0x0375('0x165')](_0x19da83))[_0x0375('0xb9')](_0x318ef5[_0x0375('0x146')](_0x19da83[_0x0375('0x166')],_0x19da83[_0x0375('0x163')],_0x19da83[_0x0375('0x40')],_0x19da83))[_0x0375('0xb9')](_0x318ef5[_0x0375('0x147')](_0x19da83[_0x0375('0x41')],_0x19da83[_0x0375('0x163')],_0x19da83[_0x0375('0x40')],_0x19da83))['then'](_0x318ef5[_0x0375('0x167')](_0x19da83))['catch'](loggerCatchQueueSummary(_0x0375('0x168'),_0x19da83));}else{notSendMessagesCampaign(_0x19da83);}}}};function getCallerIdRandom(_0x45cd0e,_0x2490ef){var _0x448561;var _0x1702ab;var _0x2245cf;if(_0x2490ef<=0x0){_0x2490ef=0x1;}_0x448561=new RegExp(_0x0375('0x169')+_0x2490ef+'}$');_0x1702ab=Math[_0x0375('0x16a')](0xa,_0x2490ef-0x1);_0x2245cf=Math[_0x0375('0x16a')](0xa,_0x2490ef)-0x1;return util[_0x0375('0x76')]('%s',_[_0x0375('0x16b')](_0x45cd0e,_0x448561,_[_0x0375('0x16c')](_0x1702ab,_0x2245cf)));}function extractCalleridName(_0x5e33a1){var _0x47d530=_0x5e33a1[_0x0375('0x16d')](/"(.*?)"/);return _0x47d530?_0x47d530[0x1]:_0x5e33a1;}function extractCalleridNumber(_0x2b0408){var _0x4c2af6=_0x2b0408[_0x0375('0x16d')](/<(.*?)>/);return _0x4c2af6?_0x4c2af6[0x1]:_0x2b0408;}Dialer[_0x0375('0xa8')]['actionOriginate']=function(_0x3581d9,_0x4a5386){var _0x88ef88=this;var _0x58e2d7=uuid['v4']();this[_0x0375('0xac')][_0x58e2d7]=new Action(_0x3581d9,_0x4a5386,_0x58e2d7);return new BPromise(function(_0xe42170,_0x1cfde9){if(_[_0x0375('0x84')](_0x3581d9)&&typeof _0x3581d9!==_0x0375('0x16e')){return _0x1cfde9(msgResponse(_0x0375('0x16f'),_0x0375('0x14b'),'voiceQueue\x20is\x20undefine'));}if(_['isUndefined'](_0x4a5386['Contact'][_0x0375('0x170')])||_0x4a5386[_0x0375('0x171')][_0x0375('0x170')]===null){return _0x1cfde9(msgResponse(_0x0375('0x16f'),_0x0375('0x14b'),_0x0375('0x172')));}var _0x164483={'XMD-CALLERID':_0x88ef88[_0x0375('0xac')][_0x58e2d7]['getCaller'](),'XMD-AGI':_0x3581d9[_0x0375('0x10a')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x3581d9['dialQueueProject']):_0x0375('0x173'),'XMD-AGIAFTER':_0x3581d9[_0x0375('0x115')]?util[_0x0375('0x76')]('\x22agi://%s/square,%s\x22',ipAgi,_0x3581d9[_0x0375('0x115')]):'NONE','XMD-QUEUE':_0x3581d9[_0x0375('0x54')]===_0x0375('0x4c')?util['format'](_0x0375('0x174'),_0x3581d9['name'],_0x3581d9[_0x0375('0x175')]||'',_0x3581d9[_0x0375('0x116')]?'c':'',_0x3581d9[_0x0375('0x176')]||0x3):_0x0375('0x173'),'XMD-CONTACTID':_0x4a5386[_0x0375('0x100')],'XMD-CDRTYPE':_0x0375('0x8'),'CALLERID(all)':_0x88ef88[_0x0375('0xac')][_0x58e2d7]['getCaller'](),'XMD-AMD':_0x3581d9[_0x0375('0xe2')]?'ACTIVE':'NONE','XMD-DESTINATION':_0x0375('0xe1')};if(_0x3581d9[_0x0375('0xe2')]){_0x164483['XMD-AMDINITIALSILENCE']=_0x3581d9[_0x0375('0x177')]||0x9c4;_0x164483['XMD-AMDGREETING']=_0x3581d9[_0x0375('0x178')]||0x5dc;_0x164483[_0x0375('0x179')]=_0x3581d9[_0x0375('0x17a')]||0x320;_0x164483[_0x0375('0x17b')]=_0x3581d9[_0x0375('0x17c')]||0x1388;_0x164483[_0x0375('0x17d')]=_0x3581d9[_0x0375('0x17e')]||0x64;_0x164483['XMD-AMDBETWEENWORDSSILENCE']=_0x3581d9[_0x0375('0x17f')]||0x32;_0x164483['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x3581d9[_0x0375('0x180')]||0x3;_0x164483[_0x0375('0x181')]=_0x3581d9[_0x0375('0x182')]||0x100;_0x164483[_0x0375('0x183')]=_0x3581d9[_0x0375('0x184')]||0x1388;}if(_0x3581d9['type']==='outbound'){_0x164483[_0x0375('0x185')]=_0x4a5386[_0x0375('0x101')];}else{_0x164483[_0x0375('0x186')]=_0x4a5386[_0x0375('0xd6')];}for(var _0x315048 in _0x4a5386['Contact']){if(typeof _0x4a5386[_0x0375('0x171')][_0x315048]!==_0x0375('0x98')){if(isNotNull(_0x4a5386[_0x0375('0x171')][_0x315048])&&_0x315048!=='id'&&_0x315048!==_0x0375('0x187')&&_0x315048!=='createdAt'&&_0x315048!==_0x0375('0x188')){_0x164483[util['format'](_0x0375('0x189'),_0x0375('0x18a'),_[_0x0375('0x18b')](_0x315048))]=_0x4a5386[_0x0375('0x171')][_0x315048];}}}var _0x5891f=_0x88ef88['isTrunkReachable'](_0x3581d9[_0x0375('0x72')])?getCallerId(_0x3581d9[_0x0375('0x72')]['callerid'],_0x3581d9[_0x0375('0x5a')],_0x3581d9[_0x0375('0x18c')]>0x0?getCallerIdRandom(_0x3581d9[_0x0375('0x5b')],_0x3581d9['dialRandomLastDigitCallerIdNumber']):_0x3581d9[_0x0375('0x5b')]):getCallerId(_[_0x0375('0xde')](_0x3581d9[_0x0375('0x18d')])?_0x3581d9[_0x0375('0x72')][_0x0375('0x74')]:_0x3581d9['TrunkBackup'][_0x0375('0x74')],_0x3581d9[_0x0375('0x5a')],_0x3581d9['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x3581d9[_0x0375('0x5b')],_0x3581d9['dialRandomLastDigitCallerIdNumber']):_0x3581d9[_0x0375('0x5b')]);if(_0x5891f){_0x164483[_0x0375('0x18e')]=_0x88ef88['actions'][_0x58e2d7][_0x0375('0x18f')]=extractCalleridName(_0x5891f);_0x164483[_0x0375('0x190')]=_0x88ef88[_0x0375('0xac')][_0x58e2d7][_0x0375('0x191')]=extractCalleridNumber(_0x5891f);}return ami['Action']({'actionid':_0x58e2d7,'action':_0x0375('0x16f'),'channel':_0x88ef88['isTrunkReachable'](_0x3581d9[_0x0375('0x72')])?util['format']('SIP/%s/%s%s',_0x3581d9[_0x0375('0x72')][_0x0375('0x40')],isNotNull(_0x3581d9[_0x0375('0x192')])?_0x3581d9['dialPrefix'][_0x0375('0x193')]()||'':'',_0x3581d9[_0x0375('0x194')]>0x0?_0x4a5386[_0x0375('0x171')][_0x0375('0x170')][_0x0375('0x195')](_0x3581d9[_0x0375('0x194')]):_0x4a5386[_0x0375('0x171')][_0x0375('0x170')]):util[_0x0375('0x76')](_0x0375('0x196'),_[_0x0375('0xde')](_0x3581d9['TrunkBackup'])?_0x3581d9[_0x0375('0x72')][_0x0375('0x40')]:_0x3581d9[_0x0375('0x18d')][_0x0375('0x40')],isNotNull(_0x3581d9[_0x0375('0x192')])?_0x3581d9[_0x0375('0x192')][_0x0375('0x193')]()||'':'',_0x3581d9['dialCutDigit']>0x0?_0x4a5386[_0x0375('0x171')][_0x0375('0x170')]['substring'](_0x3581d9[_0x0375('0x194')]):_0x4a5386[_0x0375('0x171')][_0x0375('0x170')]),'callerid':_0x5891f,'Exten':_0x0375('0xe1'),'Context':'from-sip','Priority':'1','variable':_0x164483,'timeout':(_0x3581d9[_0x0375('0x5c')]||0x1e)*0x3e8,'async':!![],'channelid':_0x58e2d7})[_0x0375('0xb9')](function(_0x5f257c){return _0xe42170(_0x5f257c);})[_0x0375('0xb0')](function(_0x31b900){_0x3581d9['outboundOriginateFailureCallsDay']+=0x1;var _0x52e817=new History(_0x88ef88[_0x0375('0xac')][_0x58e2d7]);logger['error'](util[_0x0375('0x76')](_0x0375('0x197'),JSON[_0x0375('0x48')](_0x31b900)));_0x52e817[_0x0375('0xa6')]=0xe;_0x52e817[_0x0375('0xee')]=_0x0375('0x198');_0x52e817['starttime']=moment()[_0x0375('0x76')]('YYYY-MM-DD\x20HH:mm:ss');_0x52e817[_0x0375('0x123')]=_0x52e817['starttime'];_0x88ef88[_0x0375('0xcd')](_0x52e817)[_0x0375('0xb0')](loggerCatch(_0x0375('0x199')));_0x88ef88['moveContactManagedDialer'](_0x52e817)['catch'](loggerCatch(_0x0375('0x199')))['finally'](function(){delete _0x88ef88['actions'][_0x58e2d7];return _0x1cfde9(msgResponse(_0x0375('0x16f'),_0x0375('0x47'),_0x0375('0x19a')));});});});};Dialer[_0x0375('0xa8')][_0x0375('0x31')]=function(_0x5cf387){var _0x262270=this[_0x0375('0xac')][_0x5cf387[_0x0375('0x12d')]];if(_0x262270){delete this[_0x0375('0xac')][_0x5cf387[_0x0375('0x12d')]];_0x262270['responsetime']=moment()[_0x0375('0x76')](_0x0375('0xff'));var _0x36be32=_0x262270[_0x0375('0x54')]===_0x0375('0x79')?this['campaigns'][_0x262270['queue']]:this[_0x0375('0xb3')][_0x262270[_0x0375('0x19b')]()];if(!this['isSuccess'](_0x5cf387[_0x0375('0x19c')])){this[_0x0375('0xb2')](_0x36be32);return this[_0x0375('0x19d')](_0x262270,_0x36be32,_0x5cf387)[_0x0375('0xb0')](loggerCatch(_0x0375('0x19e')));}this[_0x0375('0xaa')][_0x5cf387['uniqueid']]=_0x262270;}};Dialer['prototype'][_0x0375('0x19f')]=function(_0xf9d348,_0x2cf8cc,_0x55ab87){var _0x441141=new History(_0x2cf8cc);if(_0x441141[_0x0375('0xf4')]+_0x441141[_0x0375('0xf5')]+_0x441141[_0x0375('0xf6')]+_0x441141[_0x0375('0xf7')]+_0x441141['countdropretry']+_0x441141['countabandonedretry']+_0x441141[_0x0375('0xf1')]+_0x441141[_0x0375('0xf9')]>=_0x55ab87[_0x0375('0xfa')]-0x1){return!![];}switch(_0xf9d348){case 0x3:if(_0x441141[_0x0375('0xf6')]>=_0x55ab87['dialNoAnswerMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x441141['countnoanswerretry']+=0x1,'scheduledat':moment()[_0x0375('0x129')](_0x55ab87['dialNoAnswerRetryFrequency'],_0x0375('0xfe'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x441141['ContactId'],'ListId':_0x441141['ListId'],'VoiceQueueId':_0x441141['VoiceQueueId']||undefined,'CampaignId':_0x441141[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x1a0')));break;case 0x5:if(_0x441141['countbusyretry']>=_0x55ab87[_0x0375('0x1a1')]-0x1){return!![];}this[_0x0375('0xc1')]({'active':![],'countbusyretry':_0x441141[_0x0375('0xf4')]+=0x1,'scheduledat':moment()['add'](_0x55ab87['dialBusyRetryFrequency'],'minutes')['format'](_0x0375('0xff')),'ContactId':_0x441141[_0x0375('0x100')],'ListId':_0x441141['ListId'],'VoiceQueueId':_0x441141[_0x0375('0x101')]||undefined,'CampaignId':_0x441141[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x441141[_0x0375('0xf5')]>=_0x55ab87['dialCongestionMaxRetry']-0x1){return!![];}this[_0x0375('0xc1')]({'active':![],'countcongestionretry':_0x441141[_0x0375('0xf5')]+=0x1,'scheduledat':moment()[_0x0375('0x129')](_0x55ab87[_0x0375('0x1a2')],'minutes')['format'](_0x0375('0xff')),'ContactId':_0x441141[_0x0375('0x100')],'ListId':_0x441141[_0x0375('0xd5')],'VoiceQueueId':_0x441141['VoiceQueueId']||undefined,'CampaignId':_0x441141[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x441141[_0x0375('0xf7')]>=_0x55ab87[_0x0375('0x1a3')]-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x441141[_0x0375('0xf7')]+=0x1,'scheduledat':moment()[_0x0375('0x129')](_0x55ab87['dialNoSuchNumberRetryFrequency'],_0x0375('0xfe'))[_0x0375('0x76')](_0x0375('0xff')),'ContactId':_0x441141['ContactId'],'ListId':_0x441141[_0x0375('0xd5')],'VoiceQueueId':_0x441141[_0x0375('0x101')]||undefined,'CampaignId':_0x441141['CampaignId']||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x1a4')));}break;case 0xa:if(_0x441141[_0x0375('0xf8')]>=_0x55ab87[_0x0375('0x120')]-0x1){return!![];}this[_0x0375('0xc1')]({'active':![],'countdropretry':_0x441141[_0x0375('0xf8')]+=0x1,'scheduledat':moment()[_0x0375('0x129')](_0x55ab87[_0x0375('0x121')],_0x0375('0xfe'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x441141[_0x0375('0x100')],'ListId':_0x441141['ListId'],'VoiceQueueId':_0x441141['VoiceQueueId']||undefined,'CampaignId':_0x441141[_0x0375('0xd6')]||undefined})['catch'](loggerCatch(_0x0375('0x122')));break;case 0xb:if(_0x441141[_0x0375('0x128')]>=_0x55ab87[_0x0375('0x1a5')]-0x1){return!![];}this[_0x0375('0xc1')]({'active':![],'countabandonedretry':_0x441141[_0x0375('0x128')]+=0x1,'scheduledat':moment()[_0x0375('0x129')](_0x55ab87[_0x0375('0x12a')],'minutes')['format'](_0x0375('0xff')),'ContactId':_0x441141[_0x0375('0x100')],'ListId':_0x441141['ListId'],'VoiceQueueId':_0x441141[_0x0375('0x101')]||undefined,'CampaignId':_0x441141[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x12b')));break;case 0x13:if(_0x441141['countmachineretry']>=_0x55ab87['dialMachineMaxRetry']-0x1){return!![];}this[_0x0375('0xc1')]({'active':![],'countmachineretry':_0x441141[_0x0375('0xf1')]+=0x1,'scheduledat':moment()[_0x0375('0x129')](_0x55ab87[_0x0375('0xfd')],'minutes')['format'](_0x0375('0xff')),'ContactId':_0x441141[_0x0375('0x100')],'ListId':_0x441141['ListId'],'VoiceQueueId':_0x441141[_0x0375('0x101')]||undefined,'CampaignId':_0x441141[_0x0375('0xd6')]||undefined})['catch'](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x441141['countagentrejectretry']>=_0x55ab87[_0x0375('0x1a6')]-0x1){return!![];}this[_0x0375('0xc1')]({'active':![],'countagentrejectretry':_0x441141[_0x0375('0xf9')]+=0x1,'scheduledat':moment()['add'](_0x55ab87[_0x0375('0x1a7')],_0x0375('0xfe'))[_0x0375('0x76')](_0x0375('0xff')),'ContactId':_0x441141[_0x0375('0x100')],'ListId':_0x441141['ListId'],'VoiceQueueId':_0x441141['VoiceQueueId']||undefined,'CampaignId':_0x441141['CampaignId']||undefined})[_0x0375('0xb0')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0x0375('0xa8')][_0x0375('0x19d')]=function(_0x1cdc65,_0x234674,_0x414577){var _0x57bf5d=this;var _0x17eba3=new History(_0x1cdc65);return new BPromise(function(_0x3fe079,_0x7760dc){if(_[_0x0375('0x84')](_0x234674)&&typeof _0x234674!=='object'){return _0x7760dc(msgResponse(_0x0375('0x1a8'),'Failure',_0x0375('0x1a9')));}if(_['isUndefined'](_0x414577)&&typeof _0x414577!==_0x0375('0x16e')){return _0x7760dc(msgResponse('[callProgressDetecting]',_0x0375('0x14b'),_0x0375('0x1aa')));}switch(_0x414577[_0x0375('0x112')]){case'0':_0x234674[_0x0375('0x1ab')]+=0x1;_0x17eba3[_0x0375('0xa6')]=0x0;_0x17eba3['statedesc']=_0x0375('0x1ac');_0x17eba3[_0x0375('0xf7')]+=0x1;_0x17eba3['countglobal']+=0x1;ami['emit'](_0x0375('0x1ad'),ut[_0x0375('0xea')](_0x1cdc65,_0x0375('0x1ae')));_0x57bf5d[_0x0375('0xcd')](_0x17eba3)[_0x0375('0xb0')](loggerCatch(_0x0375('0xf3')));if(_0x57bf5d[_0x0375('0x19f')](0x0,_0x1cdc65,_0x234674)){if(_0x17eba3['countnosuchnumberretry']>=_0x234674[_0x0375('0x1a3')]){_0x57bf5d[_0x0375('0x1af')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1b0'));}else{_0x57bf5d['stateGlobal'](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1b0'));}}break;case'3':_0x234674[_0x0375('0x63')]+=0x1;_0x17eba3[_0x0375('0xa6')]=0x3;_0x17eba3[_0x0375('0xee')]=_0x0375('0x1b1');_0x17eba3['countnoanswerretry']+=0x1;_0x17eba3['countglobal']+=0x1;ami['emit'](_0x0375('0x1b2'),ut['buildObj'](_0x1cdc65,_0x0375('0x1b3')));_0x57bf5d[_0x0375('0xcd')](_0x17eba3)[_0x0375('0xb0')](loggerCatch(_0x0375('0x1b4')));if(_0x57bf5d[_0x0375('0x19f')](0x3,_0x1cdc65,_0x234674)){if(_0x17eba3[_0x0375('0xf6')]>=_0x234674[_0x0375('0x1b5')]){_0x57bf5d[_0x0375('0x1af')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1b6'));}else{_0x57bf5d[_0x0375('0x105')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1b6'));}}break;case'5':_0x234674['outboundBusyCallsDay']+=0x1;_0x17eba3[_0x0375('0xa6')]=0x5;_0x17eba3[_0x0375('0xee')]=_0x0375('0x1b7');_0x17eba3['countbusyretry']+=0x1;_0x17eba3['countglobal']+=0x1;ami[_0x0375('0xe8')](_0x0375('0x1b8'),ut[_0x0375('0xea')](_0x1cdc65,_0x0375('0x1b9')));_0x57bf5d[_0x0375('0xcd')](_0x17eba3)['catch'](loggerCatch(_0x0375('0x1ba')));if(_0x57bf5d[_0x0375('0x19f')](0x5,_0x1cdc65,_0x234674)){if(_0x17eba3[_0x0375('0xf4')]>=_0x234674[_0x0375('0x1a1')]){_0x57bf5d['createStateFinal'](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1bb'));}else{_0x57bf5d['stateGlobal'](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1bb'));}}break;case'8':_0x234674[_0x0375('0x60')]+=0x1;_0x17eba3['state']=0x8;_0x17eba3[_0x0375('0xee')]=_0x0375('0x1bc');_0x17eba3['countcongestionretry']+=0x1;_0x17eba3[_0x0375('0xf2')]+=0x1;ami['emit'](_0x0375('0x1bd'),ut[_0x0375('0xea')](_0x1cdc65,_0x0375('0x1be')));_0x57bf5d[_0x0375('0xcd')](_0x17eba3)['catch'](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x57bf5d[_0x0375('0x19f')](0x8,_0x1cdc65,_0x234674)){if(_0x17eba3['countcongestionretry']>=_0x234674[_0x0375('0x1bf')]){_0x57bf5d[_0x0375('0x1af')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1c0'));}else{_0x57bf5d[_0x0375('0x105')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1c0'));}}break;case'11':_0x234674[_0x0375('0x1c1')]+=0x1;_0x17eba3[_0x0375('0xa6')]=0xb;_0x17eba3[_0x0375('0xee')]=_0x0375('0x127');_0x17eba3[_0x0375('0x128')]+=0x1;_0x17eba3['countglobal']+=0x1;_0x57bf5d['createHistory'](_0x17eba3)[_0x0375('0xb0')](loggerCatch(_0x0375('0x1c2')));if(_0x57bf5d[_0x0375('0x19f')](0xb,_0x1cdc65,_0x234674)){if(_0x17eba3[_0x0375('0x128')]>=_0x234674[_0x0375('0x1a5')]){_0x57bf5d[_0x0375('0x1af')](_0x17eba3,_0x3fe079,_0x7760dc,'reason\x2011\x20abandoned');}else{_0x57bf5d[_0x0375('0x105')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1c3'));}}break;case'20':_0x234674[_0x0375('0x66')]+=0x1;_0x17eba3[_0x0375('0xa6')]=0x14;_0x17eba3[_0x0375('0xee')]='AgentReject';_0x17eba3[_0x0375('0xf9')]+=0x1;_0x17eba3['countglobal']+=0x1;ami[_0x0375('0xe8')]('custom:agentreject',ut[_0x0375('0xea')](_0x1cdc65,_0x0375('0x1c4')));_0x57bf5d[_0x0375('0xcd')](_0x17eba3)[_0x0375('0xb0')](loggerCatch(_0x0375('0x1c5')));if(_0x57bf5d[_0x0375('0x19f')](0x14,_0x1cdc65,_0x234674)){if(_0x17eba3[_0x0375('0xf9')]>=_0x234674[_0x0375('0x1a6')]){_0x57bf5d[_0x0375('0x1af')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1c6'));}else{_0x57bf5d[_0x0375('0x105')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1c6'));}}break;default:_0x234674['outboundUnknownCallsDay']+=0x1;_0x17eba3[_0x0375('0xa6')]=0xc;_0x17eba3[_0x0375('0xee')]=_0x414577[_0x0375('0x112')];_0x57bf5d['createHistory'](_0x17eba3)[_0x0375('0xb0')](loggerCatch(_0x0375('0x1c7')));if(_0x57bf5d[_0x0375('0x19f')](_0x414577[_0x0375('0x112')],_0x1cdc65,_0x234674)){if(_0x17eba3[_0x0375('0xf4')]+_0x17eba3['countcongestionretry']+_0x17eba3['countnoanswerretry']+_0x17eba3[_0x0375('0xf7')]+_0x17eba3[_0x0375('0xf8')]+_0x17eba3['countabandonedretry']+_0x17eba3[_0x0375('0xf1')]+_0x17eba3[_0x0375('0xf9')]>=_0x234674[_0x0375('0xfa')]){_0x57bf5d[_0x0375('0x105')](_0x17eba3,_0x3fe079,_0x7760dc,_0x414577[_0x0375('0x112')]);}else{_0x57bf5d['createStateFinal'](_0x17eba3,_0x3fe079,_0x7760dc,_0x414577[_0x0375('0x112')]);}}}});};Dialer[_0x0375('0xa8')][_0x0375('0x105')]=function(_0x59e59d,_0x2f3058,_0x2ca769,_0x303327){var _0xb0b4a3=new Final(_0x59e59d);_0xb0b4a3[_0x0375('0xa6')]=0xf;_0xb0b4a3[_0x0375('0xee')]='Global';this[_0x0375('0x1af')](_0xb0b4a3,_0x2f3058,_0x2ca769,_0x303327);};Dialer[_0x0375('0xa8')][_0x0375('0x1af')]=function(_0x2f9de5,_0x272c0b,_0x1e07e5,_0x4c1c9d){this[_0x0375('0xcb')](_0x2f9de5)[_0x0375('0xb9')](function(){return _0x272c0b(msgResponse(_0x0375('0x1a8'),_0x0375('0xd9'),_0x4c1c9d));})[_0x0375('0xb0')](function(){return _0x1e07e5(msgResponse(_0x0375('0x1c8'),_0x0375('0x14b'),_0x0375('0x1c9')));});};Dialer[_0x0375('0xa8')][_0x0375('0xa')]=function(_0x200883){var _0x77042d=_0x200883[_0x0375('0x1ca')]/0x64;var _0x31eec1=_0x200883['outboundDropCallsDayTimeout']/(_0x200883[_0x0375('0x62')]+_0x200883[_0x0375('0xe5')]);var _0x2382ea=Math[_0x0375('0x1cb')](_0x200883['predictiveIntervalAvailable']*(_0x200883[_0x0375('0x1cc')]/0x64));var _0x2e70db=Math[_0x0375('0x1cb')](_0x200883[_0x0375('0x1cd')]*(_0x200883['predictiveIntervalMinThreshold']/0x64));var _0x423ee8=_0x200883[_0x0375('0xa0')]+_0x200883[_0x0375('0x9f')];var _0x18de5f=Math['floor'](_0x200883[_0x0375('0x6e')]*_0x200883[_0x0375('0x6f')]*_0x200883['predictiveIntervalHitRate']*_0x200883[_0x0375('0x6b')]);if(_[_0x0375('0x84')](_0x200883[_0x0375('0x28')])){if(!_[_0x0375('0x84')](_0x200883['startPredictive'])){_0x200883['startPredictive']=undefined;loggerPredictive[_0x0375('0x94')](_0x0375('0x1ce'),'check\x20predictive\x20is\x20not\x20undefine');}if(!_[_0x0375('0x84')](_0x200883[_0x0375('0x8f')])){loggerPredictive[_0x0375('0x94')](_0x0375('0x1ce'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x200883[_0x0375('0x8f')]);_0x200883[_0x0375('0x8f')]=undefined;}_0x200883[_0x0375('0x28')]=moment()[_0x0375('0x76')](_0x0375('0xff'));loggerPredictive[_0x0375('0x7b')](_0x200883[_0x0375('0x40')],_0x0375('0x1cf'),_0x200883[_0x0375('0x28')]);this[_0x0375('0x15e')](_0x200883,0x1);}else if(ifInterval(_0x200883[_0x0375('0x1d0')],_0x200883['startProgressive'])){this[_0x0375('0x15e')](_0x200883,0x1);loggerPredictiveCalls[_0x0375('0x7b')]('[startMethodPredictive][StartProgressive][Loop]',_0x200883[_0x0375('0x28')],_0x200883[_0x0375('0x40')]);_0x200883['erlangCalls']=0x0;_0x200883['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x77042d<_0x31eec1&&_0x200883['dialPredictiveOptimization']===_0x0375('0x1d1')){freeVariablesPredictive(_0x200883);loggerPredictive[_0x0375('0x7b')](_0x0375('0x1d2'),_0x0375('0x1d3'),_0x31eec1,_0x0375('0x28'),_0x200883[_0x0375('0x40')]);}else if(_0x18de5f<_0x200883['predictiveIntervalErlangCallsDroppedCalls']&&_0x200883['dialPredictiveOptimization']==='dropRate'){freeVariablesPredictive(_0x200883);loggerPredictive[_0x0375('0x7b')]('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20',_0x18de5f,'Drop\x20in\x20this\x20interval',_0x200883[_0x0375('0x1d4')],_0x0375('0x28'),_0x200883[_0x0375('0x40')]);}else if(!ifInterval(_0x200883[_0x0375('0x1d0')],_0x200883[_0x0375('0x28')])&&_[_0x0375('0x84')](_0x200883['startPredictive'])&&!_['isUndefined'](_0x200883[_0x0375('0x28')])){_0x200883[_0x0375('0x71')]=moment()[_0x0375('0x76')](_0x0375('0xff'));loggerPredictive[_0x0375('0x7b')](_0x200883[_0x0375('0x40')],_0x0375('0x1d5'),_0x200883[_0x0375('0x71')]);this['averageHandleTime'](_0x200883['dialPredictiveInterval'])['then'](this[_0x0375('0x1d6')](_0x200883))[_0x0375('0xb9')](mergeDataErlangB(_0x200883))[_0x0375('0xb9')](this[_0x0375('0x1d7')](_0x200883))[_0x0375('0xb0')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x200883));}else if(!ifInterval(_0x200883[_0x0375('0x1d0')],_0x200883[_0x0375('0x71')])){_0x200883[_0x0375('0x1d4')]=0x0;_0x200883[_0x0375('0x71')]=moment()[_0x0375('0x76')](_0x0375('0xff'));loggerPredictive[_0x0375('0x7b')](_0x200883[_0x0375('0x40')],_0x0375('0x1d8'),_0x200883['startPredictive']);clearInterval(_0x200883[_0x0375('0x8f')]);_0x200883[_0x0375('0x8f')]=undefined;this['averageHandleTime'](_0x200883['dialPredictiveInterval'])[_0x0375('0xb9')](this[_0x0375('0x1d6')](_0x200883))[_0x0375('0xb9')](mergeDataErlangB(_0x200883))[_0x0375('0xb9')](this[_0x0375('0x1d7')](_0x200883))[_0x0375('0xb0')](loggerCatchPredictive(_0x0375('0x1d9'),_0x200883));}else if(_0x200883[_0x0375('0x1cd')]&&_0x423ee8<_0x200883['predictiveIntervalAvailable']-_0x2e70db){freeVariablesPredictive(_0x200883);loggerPredictive[_0x0375('0x7b')](_0x200883[_0x0375('0x40')],_0x0375('0x1da'),_0x423ee8,_0x0375('0x1db'),_0x200883[_0x0375('0x1cd')],'-',_0x2e70db,'=',_0x200883[_0x0375('0x1cd')]-_0x2e70db,')');}else if(_0x200883[_0x0375('0x1cd')]&&_0x423ee8>_0x200883[_0x0375('0x1cd')]+_0x2382ea){freeVariablesPredictive(_0x200883);loggerPredictive[_0x0375('0x7b')](_0x200883[_0x0375('0x40')],_0x0375('0x1da'),_0x423ee8,_0x0375('0x1dc'),_0x200883['predictiveIntervalAvailable'],'+',_0x2382ea,'=',_0x200883['predictiveIntervalAvailable']+_0x2382ea,')');}};Dialer[_0x0375('0xa8')]['getDataPredictive']=function(_0x2b6007){var _0x17a71b=this;return function(_0x11c34f){return new BPromise(function(_0x3bf0e,_0x5d12be){_[_0x0375('0x8d')](_0x2b6007,_0x11c34f[0x0]);if(checkGetDataPredictive(_0x11c34f[0x0])){var _0x3a80ae=_0x2b6007[_0x0375('0x1cd')]=_0x2b6007[_0x0375('0x9f')]+_0x2b6007['available'];var _0x3a7f2e=_0x2b6007[_0x0375('0x1d0')]*0x3c;var _0x2769a3=_0x11c34f[0x0][_0x0375('0x68')]+_0x11c34f[0x0][_0x0375('0x81')];var _0x4aee3b=(_0x11c34f[0x0][_0x0375('0x67')]+_0x11c34f[0x0][_0x0375('0x7f')]+_0x11c34f[0x0][_0x0375('0x69')])/_0x11c34f[0x0][_0x0375('0x6d')];_0x2b6007[_0x0375('0x6a')]=_0x4aee3b>0x0?_0x4aee3b:0x1;switch(_0x2b6007[_0x0375('0x1dd')]){case _0x0375('0x1d1'):var _0x59232a=_0x2b6007[_0x0375('0x1ca')]/0x64;return _0x17a71b[_0x0375('0x1de')](_0x3a80ae,_0x3a7f2e,_0x2769a3,_0x4aee3b,_0x59232a)['then'](function(_0x23dca3){return _0x3bf0e(_0x23dca3);});case _0x0375('0x1df'):var _0xf13042=_0x2b6007[_0x0375('0x1ca')]/0x64;return _0x17a71b[_0x0375('0x1e0')](_0x3a80ae,_0x3a7f2e,_0x2769a3,_0x4aee3b,_0xf13042)[_0x0375('0xb9')](function(_0x1dbd17){return _0x3bf0e(_0x1dbd17);});default:return _0x5d12be(msgResponse(_0x0375('0x1e1'),'Failure',_0x0375('0x1e2')));}}else{return _0x5d12be(msgResponse(_0x0375('0x1e1'),'Failure',_0x0375('0x1e3')));}});};};Dialer['prototype'][_0x0375('0x1e4')]=function(_0xe014d2){var _0x14d345=this;return function(_0x2ec098){return new BPromise(function(_0x5b850f,_0x5b5bc8){_[_0x0375('0x8d')](_0xe014d2,_0x2ec098[0x0]);if(checkGetDataPredictive(_0x2ec098[0x0])){loggerPredictive[_0x0375('0x7b')](JSON[_0x0375('0x48')](_0x2ec098[0x0]));if(_0xe014d2[_0x0375('0x1dd')]===_0x0375('0x1d1')){return _0x14d345[_0x0375('0xc9')](_0xe014d2['id'])['then'](function(_0x2d96f3){var _0xc365d1=_0xe014d2[_0x0375('0x4e')]-_0x2d96f3[0x0][_0x0375('0x1e5')];var _0x36dfc2=_0xe014d2[_0x0375('0x1d0')]*0x3c;var _0x5c9975=_0x2ec098[0x0]['predictiveIntervalAvgTalktime']+_0x2ec098[0x0][_0x0375('0x81')];var _0x443808=(_0x2ec098[0x0]['predictiveIntervalAnsweredCalls']+_0x2ec098[0x0][_0x0375('0x7f')]+_0x2ec098[0x0][_0x0375('0x69')])/_0x2ec098[0x0][_0x0375('0x6d')];var _0x4fcbc5=_0xe014d2[_0x0375('0x1ca')]/0x64;_0xe014d2[_0x0375('0x6c')]=_0x2d96f3[0x0][_0x0375('0x1e5')]||0x0;_0xe014d2['predictiveIntervalHitRate']=_0x443808>0x0?_0x443808:0x1;return _0x14d345[_0x0375('0x1de')](_0xc365d1,_0x36dfc2,_0x5c9975,_0x443808,_0x4fcbc5);})[_0x0375('0xb9')](function(_0xc20eaa){return _0x5b850f(_0xc20eaa);})[_0x0375('0xb0')](function(_0xefc6e0){return _0x5b5bc8(msgResponse(_0x0375('0x1e6'),_0x0375('0x14b'),JSON[_0x0375('0x48')](_0xefc6e0)));});}if(_0xe014d2[_0x0375('0x1dd')]===_0x0375('0x1df')){return _0x14d345[_0x0375('0xc9')](_0xe014d2['id'])[_0x0375('0xb9')](function(_0x7534f6){var _0x4e79e1=_0xe014d2[_0x0375('0x4e')]-_0x7534f6[0x0]['outboundQueuePauses'];var _0x1e5f39=_0xe014d2[_0x0375('0x1d0')]*0x3c;var _0x547843=_0x2ec098[0x0][_0x0375('0x68')]+_0x2ec098[0x0][_0x0375('0x81')];var _0x1581de=(_0x2ec098[0x0][_0x0375('0x67')]+_0x2ec098[0x0][_0x0375('0x7f')]+_0x2ec098[0x0][_0x0375('0x69')])/_0x2ec098[0x0][_0x0375('0x6d')];var _0x4abf58=_0xe014d2[_0x0375('0x1ca')]/0x64;_0xe014d2[_0x0375('0x6c')]=_0x7534f6[0x0][_0x0375('0x1e5')]||0x0;_0xe014d2[_0x0375('0x6a')]=_0x1581de>0x0?_0x1581de:0x1;return _0x14d345['busyFactor'](_0x4e79e1,_0x1e5f39,_0x547843,_0x1581de,_0x4abf58);})[_0x0375('0xb9')](function(_0x487d24){return _0x5b850f(_0x487d24);})[_0x0375('0xb0')](function(_0x5b3fb0){return _0x5b5bc8(msgResponse(_0x0375('0x1e6'),_0x0375('0x14b'),JSON[_0x0375('0x48')](_0x5b3fb0)));});}}else{return _0x5b5bc8(msgResponse(_0x0375('0x1e1'),_0x0375('0x14b'),_0x0375('0x1e3')));}});};};Dialer[_0x0375('0xa8')]['startMethodPredictive']=function(_0xa73713){var _0x5d893d=this;return function(){var _0xfc108b=0x0;var _0x586932=Math[_0x0375('0x1e7')](_0xa73713[_0x0375('0x8a')]*0x3e8);if(_0x586932>0x0){_0x586932=_0x586932<0x64?0x64:_0x586932;loggerPredictive[_0x0375('0x7b')](_0xa73713[_0x0375('0x40')],_0x0375('0x1e8'),_0x586932,_0x0375('0x49'));_0xa73713[_0x0375('0x8f')]=setInterval(function(){_0x5d893d[_0x0375('0x8f')](_0xa73713);loggerPredictiveCalls[_0x0375('0x7b')]('[handlePredictive]',_0xfc108b+=0x1);},_0x586932);}else{loggerPredictive[_0x0375('0x7b')](_0xa73713[_0x0375('0x40')],_0x0375('0x1e9'));}};};Dialer[_0x0375('0xa8')][_0x0375('0x1ea')]=function(_0x22c130,_0x33952f){var _0x550adb=this;return function(_0x47c662){if(_[_0x0375('0x44')](_0x47c662)){if(_[_0x0375('0xde')](_0x33952f[_0x0375('0x1eb')])||!_0x33952f['recallme']){if(_0x22c130[_0x0375('0x15c')]===_0x0375('0x9')){_0x22c130['queueStatusComplete']=_[_0x0375('0x84')](_0x22c130[_0x0375('0x134')])?!![]:_0x22c130[_0x0375('0x134')];var _0x552989=uuid['v4']();_0x550adb['actions'][_0x552989]=new Action(_0x22c130,_0x33952f,_0x552989);loggerBooked[_0x0375('0x7b')]('[booked][checkContactBlack]',_0x552989,_0x0375('0x1ec'),JSON[_0x0375('0x48')](_0x22c130['queueStatusComplete']),_0x0375('0x1ed'),_0x22c130[_0x0375('0x40')]);if(_0x22c130[_0x0375('0x134')]){_0x22c130[_0x0375('0x134')]=![];_0x550adb[_0x0375('0x2a')][_0x550adb['actions'][_0x552989][_0x0375('0xb4')]]=[];ami[_0x0375('0xae')]({'actionid':_0x552989,'action':_0x0375('0x1ee'),'queue':_0x22c130['name']})[_0x0375('0xb0')](function(){_0x550adb[_0x0375('0xb2')](_0x22c130);_0x550adb[_0x0375('0xc1')]({'active':![],'ContactId':_0x550adb[_0x0375('0xac')][_0x552989][_0x0375('0x100')],'ListId':_0x550adb[_0x0375('0xac')][_0x552989][_0x0375('0xd5')],'VoiceQueueId':_0x550adb[_0x0375('0xac')][_0x552989][_0x0375('0x101')]||undefined,'CampaignId':_0x550adb[_0x0375('0xac')][_0x552989][_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x1ef')));delete _0x550adb[_0x0375('0xac')][_0x552989];});}else{loggerBooked['info'](_0x0375('0x1f0'),JSON[_0x0375('0x48')](_0x22c130[_0x0375('0x134')]),_0x0375('0x1ed'),_0x22c130[_0x0375('0x40')]);_0x550adb['updateOriginated'](_0x22c130);_0x550adb[_0x0375('0xc1')]({'active':![],'ContactId':_0x550adb[_0x0375('0xac')][_0x552989]['ContactId'],'ListId':_0x550adb['actions'][_0x552989][_0x0375('0xd5')],'VoiceQueueId':_0x550adb[_0x0375('0xac')][_0x552989]['VoiceQueueId']||undefined,'CampaignId':_0x550adb[_0x0375('0xac')][_0x552989][_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x1ef')));delete _0x550adb[_0x0375('0xac')][_0x552989];}}else{return _0x550adb['actionOriginate'](_0x22c130,_0x33952f);}}else{if(getDiff(_0x33952f[_0x0375('0x1f1')])<_0x22c130[_0x0375('0x1f2')]*0x3c){if(_0x33952f['Agent']&&!_0x33952f[_0x0375('0x1f3')][_0x0375('0x1f4')]){_0x550adb[_0x0375('0x90')]['run'](_0x33952f['id'])[_0x0375('0x20')](function(){_0x550adb[_0x0375('0xb2')](_0x22c130);});}else{_0x550adb[_0x0375('0x1f5')]({'active':![]},_0x33952f['id'],0x1)[_0x0375('0x20')](function(){_0x550adb[_0x0375('0xb2')](_0x22c130);});}}else{_0x22c130[_0x0375('0x65')]+=0x1;_0x550adb['updateOriginated'](_0x22c130);if(_0x22c130['dialRecallInQueue']){_0x550adb[_0x0375('0xc1')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x33952f[_0x0375('0x100')],'ListId':_0x33952f['ListId'],'VoiceQueueId':_0x33952f[_0x0375('0x101')]||undefined,'CampaignId':_0x33952f[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x1f6')));_0x550adb['createHistory'](createObjHistory(_0x22c130,_0x33952f,_0x0375('0x1f7'),0x17,_0x0375('0x1f8')))[_0x0375('0xb0')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x550adb[_0x0375('0xd3')](createObjHistory(_0x22c130,_0x33952f,_0x0375('0x1f9'),0x16,_0x0375('0x1fa')),_0x0375('0x1fb'),'[Originate][HistoryRecallClose]');}}}}else{_0x22c130['outboundBlacklistCallsDay']+=0x1;_0x550adb['saveInDb'](createObjHistory(_0x22c130,_0x33952f,_0x0375('0x1fc'),0xd,_0x0375('0x1fd')),_0x0375('0x1fe'),_0x0375('0x1ff'));throw _0x0375('0x200');}};};Dialer[_0x0375('0xa8')][_0x0375('0x201')]=function(_0x4a1d4c){var _0x1c0ee0=this;var _0x6acbf3=_0x4a1d4c[_0x0375('0x202')]-_0x4a1d4c[_0x0375('0x97')]-_0x4a1d4c[_0x0375('0xc5')];emitCampaignSummary(_0x4a1d4c);if(_0x6acbf3>0x0){if(_0x6acbf3>this[_0x0375('0x25')]){_0x6acbf3=this[_0x0375('0x25')];}_0x4a1d4c[_0x0375('0xc5')]+=_0x6acbf3;this[_0x0375('0xc7')](_0x4a1d4c['id'],_0x6acbf3,_0x4a1d4c[_0x0375('0x203')],_0x4a1d4c)['then'](function(_0x9cfafa){_0x4a1d4c[_0x0375('0xc5')]-=_0x6acbf3;_0x4a1d4c['temp']=_0x4a1d4c[_0x0375('0xc5')]>0x0?_0x4a1d4c['temp']:0x0;if(!checkContactEmpty(_0x9cfafa)){_0x4a1d4c['message']=_0x0375('0x9d');logger[_0x0375('0x7b')](_0x0375('0x204')+_0x4a1d4c[_0x0375('0x40')]);}else{_0x4a1d4c[_0x0375('0x97')]+=_0x9cfafa[_0x0375('0x96')];_0x4a1d4c[_0x0375('0x3c')]=_0x0375('0x205');for(var _0x5c4e2e=0x0;_0x5c4e2e<_0x9cfafa['length'];_0x5c4e2e+=0x1){_0x4a1d4c['ivrTotalCallsDays']+=0x1;if(_[_0x0375('0xde')](_0x9cfafa[_0x5c4e2e])||_[_0x0375('0xde')](_0x9cfafa[_0x5c4e2e][_0x0375('0x171')])||_[_0x0375('0xde')](_0x9cfafa[_0x5c4e2e][_0x0375('0x171')][_0x0375('0x170')])){_0x1c0ee0[_0x0375('0xd1')](_0x0375('0x206'),_0x4a1d4c,_0x9cfafa[_0x5c4e2e]);}else{_0x1c0ee0[_0x0375('0xbd')](_[_0x0375('0xd4')](_0x9cfafa[_0x5c4e2e],[_0x0375('0xd6'),_0x0375('0x207')]))[_0x0375('0xb9')](_0x1c0ee0['checkContactBlack'](_0x4a1d4c,_0x9cfafa[_0x5c4e2e]))[_0x0375('0xb0')](_0x1c0ee0['loggerHandler'](_0x0375('0x208'),_0x4a1d4c));}}}})[_0x0375('0xb0')](loggerGetContactDialer('[getContactCampaign2]',_0x4a1d4c,_0x6acbf3));}};Dialer[_0x0375('0xa8')][_0x0375('0x15e')]=function(_0x2bdf8e,_0x30a110){var _0x5cf53c=this;var _0x1bd381=[];var _0x5e0733=_0x30a110>=0x1?_0x30a110:0x1;if(_0x2bdf8e[_0x0375('0x15c')]===_0x0375('0x9')){_0x5e0733=0x1;}var _0x1fb446=Math[_0x0375('0x1e7')](_0x2bdf8e[_0x0375('0xa0')]*_0x5e0733)-_0x2bdf8e['originated']-_0x2bdf8e[_0x0375('0xc5')];emitVoiceQueueSummary(_0x2bdf8e);if(_0x2bdf8e['dialLimitQueue']>0x0){var _0x4db49b=_0x2bdf8e[_0x0375('0x209')]-_0x2bdf8e['originated']-_0x2bdf8e['talking']-_0x2bdf8e[_0x0375('0xc5')]-_0x2bdf8e['pTalking'];if(_0x1fb446>_0x4db49b){_0x1fb446=_0x4db49b;}}if(_0x1fb446>0x0){if(_0x2bdf8e[_0x0375('0x15c')]===_0x0375('0x9')){_0x1fb446=0x1;}if(_0x1fb446>this[_0x0375('0x25')]){_0x1fb446=this[_0x0375('0x25')];}_0x2bdf8e[_0x0375('0xc5')]+=_0x1fb446;for(var _0x477edb in this[_0x0375('0x23')]){if(typeof this['agents'][_0x477edb]!==_0x0375('0x98')){if(this[_0x0375('0x23')][_0x477edb]['state']==='not_inuse'&&this[_0x0375('0x23')][_0x477edb][_0x0375('0xaf')]===_0x0375('0x20a')){_0x1bd381[_0x0375('0x132')](this[_0x0375('0x23')][_0x477edb]['id']);}}}this['getContactDialer'](_0x2bdf8e['id'],_0x1bd381,_0x1fb446,_0x2bdf8e['dialOrderByScheduledAt'],_0x2bdf8e)['then'](function(_0x514777){_0x2bdf8e[_0x0375('0xc5')]-=_0x1fb446;_0x2bdf8e[_0x0375('0xc5')]=_0x2bdf8e[_0x0375('0xc5')]>0x0?_0x2bdf8e['temp']:0x0;if(!checkContactEmpty(_0x514777)){_0x5cf53c[_0x0375('0xb7')](_0x2bdf8e)[_0x0375('0xb9')](sendMessageReschedule(_0x2bdf8e))[_0x0375('0xb0')](loggerCatch(_0x0375('0xba')));}else{_0x2bdf8e[_0x0375('0x97')]+=_0x514777[_0x0375('0x96')];_0x2bdf8e[_0x0375('0x3c')]=_0x2bdf8e[_0x0375('0x15c')]===_0x0375('0x9')?_0x0375('0x20b'):_0x0375('0x205');for(var _0x1e3047=0x0;_0x1e3047<_0x514777['length'];_0x1e3047+=0x1){if(_[_0x0375('0xde')](_0x514777[_0x1e3047])||_[_0x0375('0xde')](_0x514777[_0x1e3047]['Contact'])||_[_0x0375('0xde')](_0x514777[_0x1e3047]['Contact']['phone'])){_0x5cf53c['emptyContact'](_0x0375('0x206'),_0x2bdf8e,_0x514777[_0x1e3047]);}else{_0x5cf53c[_0x0375('0xbb')](_[_0x0375('0xd4')](_0x514777[_0x1e3047],[_0x0375('0x101'),_0x0375('0x207')]))[_0x0375('0xb9')](_0x5cf53c[_0x0375('0x1ea')](_0x2bdf8e,_0x514777[_0x1e3047]))[_0x0375('0xb0')](_0x5cf53c[_0x0375('0xd0')](_0x0375('0x206'),_0x2bdf8e));}}}})[_0x0375('0xb0')](loggerGetContactDialer(_0x0375('0x20c'),_0x2bdf8e,_0x1fb446));}};Dialer[_0x0375('0xa8')][_0x0375('0x8f')]=function(_0x1310cd){if(_0x1310cd[_0x0375('0x209')]>0x0){var _0x19540c=_0x1310cd[_0x0375('0x209')]-_0x1310cd[_0x0375('0x97')]-_0x1310cd[_0x0375('0x9f')];if(_0x19540c>0x0){this[_0x0375('0x20d')](_0x1310cd);}else{loggerPredictiveCalls[_0x0375('0x7b')]('[handlePredictive][limitChannel]');}}else{this['tryOriginatePredictive'](_0x1310cd);}};Dialer[_0x0375('0xa8')][_0x0375('0x20d')]=function(_0x204a91){var _0x188331=this;var _0x4eab37=[];_0x204a91[_0x0375('0x97')]+=0x1;for(var _0x2e0ab0 in this['agents']){if(typeof this['agents'][_0x2e0ab0]!==_0x0375('0x98')){if(this['agents'][_0x2e0ab0]['state']===_0x0375('0x20e')&&this[_0x0375('0x23')][_0x2e0ab0][_0x0375('0xaf')]===_0x0375('0x20a')){_0x4eab37['push'](this[_0x0375('0x23')][_0x2e0ab0]['id']);}}}this[_0x0375('0xc4')](_0x204a91['id'],_0x4eab37,0x1,_0x204a91[_0x0375('0x203')],_0x204a91)[_0x0375('0xb9')](function(_0x290464){if(!checkContactEmpty(_0x290464)){checkContactLowerLimitOriginate(_0x204a91,0x1,0x0);_0x188331[_0x0375('0xb7')](_0x204a91)[_0x0375('0xb9')](sendMessageReschedule(_0x204a91))['catch'](loggerCatch(_0x0375('0xba')));}else{_0x204a91[_0x0375('0x3c')]=_0x0375('0x205');if(_['isNil'](_0x290464[0x0])||_[_0x0375('0xde')](_0x290464[0x0][_0x0375('0x171')])||_['isNil'](_0x290464[0x0][_0x0375('0x171')]['phone'])){_0x188331[_0x0375('0xd1')](_0x0375('0x206'),_0x204a91,_0x290464[0x0]);}else{_0x188331[_0x0375('0xbb')](_[_0x0375('0xd4')](_0x290464[0x0],[_0x0375('0x101'),'Contact.phone']))[_0x0375('0xb9')](_0x188331[_0x0375('0x1ea')](_0x204a91,_0x290464[0x0]))[_0x0375('0xb0')](_0x188331[_0x0375('0xd0')](_0x0375('0x20f'),_0x204a91));}}})[_0x0375('0xb0')](loggerGetContactDialer(_0x0375('0x210'),_0x204a91,0x1));emitVoiceQueueSummary(_0x204a91);};Dialer[_0x0375('0xa8')][_0x0375('0x1de')]=function(_0x218ffd,_0x435c41,_0x333638,_0x27f26c,_0x311816,_0x483063){loggerPredictive[_0x0375('0x7b')](_0x0375('0x211'));loggerPredictive['info'](_0x0375('0x212'),_0x218ffd);loggerPredictive[_0x0375('0x7b')](_0x0375('0x213'),_0x435c41);loggerPredictive[_0x0375('0x7b')](_0x0375('0x214'),_0x333638);loggerPredictive[_0x0375('0x7b')](_0x0375('0x215'),_0x27f26c);loggerPredictive[_0x0375('0x7b')](_0x0375('0x216'),_0x311816);loggerPredictive[_0x0375('0x7b')](_0x0375('0x83'));return new BPromise(function(_0x37ee35,_0x182d72){if(_0x218ffd<=0x0||isNaN(_0x218ffd)){return _0x182d72(msgResponse(_0x0375('0x217'),_0x0375('0x47'),'m\x20=\x20'+_0x218ffd));}if(_0x333638<=0x0||isNaN(_0x333638)){return _0x182d72(msgResponse('[abandonmentRate]',_0x0375('0x47'),'Ts\x20=\x20'+_0x333638));}if(_0x27f26c<=0x0||isNaN(_0x27f26c)){return _0x182d72(msgResponse(_0x0375('0x217'),_0x0375('0x47'),'p\x20=\x20'+_0x27f26c));}if(_0x435c41<=0x0||isNaN(_0x435c41)){return _0x182d72(msgResponse(_0x0375('0x217'),_0x0375('0x47'),_0x0375('0x218')+_0x435c41));}if(_0x311816<=0x0||isNaN(_0x311816)){return _0x182d72(msgResponse('[abandonmentRate]','Error',_0x0375('0x219')+_0x311816));}_0x483063=_0x483063||0x0;var _0x494322=0x1/_0x333638;var _0xb54123=0x0;var _0x45c98=0x0;var _0x2ffc69=0x0;var _0x32ee82=0x0;for(var _0x220c90=0x0;_0x2ffc69<_0x311816;_0x220c90+=0x1){_0x45c98=_0x220c90/_0x435c41;_0xb54123=(_0x27f26c*_0x45c98+_0x483063)/_0x494322;_0x2ffc69=erlangb(_0xb54123,_0x218ffd);_0x32ee82=_0xb54123/_0x218ffd*(0x1-erlangb(_0xb54123,_0x218ffd));}return _0x37ee35({'erlangCalls':_0x220c90,'erlangCallToSecond':_0x435c41/_0x220c90,'erlangAbandonmentRate':_0x2ffc69,'erlangBusyFactor':_0x32ee82});});};Dialer[_0x0375('0xa8')][_0x0375('0x1e0')]=function(_0x2dcc52,_0x55f6b7,_0x184c49,_0x133c8e,_0x313e58,_0x40f2d5){loggerPredictive[_0x0375('0x7b')](_0x0375('0x21a'));loggerPredictive['info'](_0x0375('0x212'),_0x2dcc52);loggerPredictive[_0x0375('0x7b')](_0x0375('0x213'),_0x55f6b7);loggerPredictive[_0x0375('0x7b')](_0x0375('0x214'),_0x184c49);loggerPredictive['info'](_0x0375('0x215'),_0x133c8e);loggerPredictive[_0x0375('0x7b')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x313e58);loggerPredictive[_0x0375('0x7b')](_0x0375('0x83'));return new BPromise(function(_0x42a88c,_0x1df9a7){if(_0x2dcc52<=0x0||isNaN(_0x2dcc52)){return _0x1df9a7(msgResponse(_0x0375('0x21b'),'Error',_0x0375('0x21c')+_0x2dcc52));}if(_0x184c49<=0x0||isNaN(_0x184c49)){return _0x1df9a7(msgResponse(_0x0375('0x21b'),_0x0375('0x47'),'Ts\x20=\x20'+_0x184c49));}if(_0x133c8e<=0x0||isNaN(_0x133c8e)){return _0x1df9a7(msgResponse(_0x0375('0x21b'),_0x0375('0x47'),'p\x20=\x20'+_0x133c8e));}if(_0x55f6b7<=0x0||isNaN(_0x55f6b7)){return _0x1df9a7(msgResponse(_0x0375('0x21b'),_0x0375('0x47'),_0x0375('0x218')+_0x55f6b7));}if(_0x313e58<=0x0||isNaN(_0x313e58)){return _0x1df9a7(msgResponse(_0x0375('0x21b'),_0x0375('0x47'),_0x0375('0x21d')+_0x313e58));}_0x40f2d5=_0x40f2d5||0x0;var _0x2cbb0d=0x1/_0x184c49;var _0x132c5e=0x0;var _0x43542a=0x0;var _0x23a182=0x0;var _0x17682a=0x0;for(var _0x59e321=0x0;_0x17682a<_0x313e58;_0x59e321+=0x1){_0x43542a=_0x59e321/_0x55f6b7;_0x132c5e=(_0x133c8e*_0x43542a+_0x40f2d5)/_0x2cbb0d;_0x23a182=erlangb(_0x132c5e,_0x2dcc52);_0x17682a=_0x132c5e/_0x2dcc52*(0x1-erlangb(_0x132c5e,_0x2dcc52));}return _0x42a88c({'erlangCalls':_0x59e321,'erlangCallToSecond':_0x55f6b7/_0x59e321,'erlangAbandonmentRate':_0x23a182,'erlangBusyFactor':_0x17682a});});};module[_0x0375('0x21e')]=Dialer;
\ No newline at end of file
+var _0x8b2b=['waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','active','callerid','format','voice:queue:%s','voice_queue:save','ivr','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','predictiveIntervalDroppedCallsCallersExit','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','isUndefined','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','---------\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','erlangCallToSecond','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','merge','clearing\x20variable\x20start\x20progressive','handlePredictive','clearing\x20variable\x20handle\x20predictive','outbound','string','\x22%s\x22\x20<%s>','inspect','error','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','state','endtime','starttime','clearZombieChannels','[uniqueid]','[actions]','undefined','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','emptyContact','notFound','saveInDb','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','Success','isTrunkReachable','SIP/%s','unmonitored','uniqueid','isNil','variable','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','statedesc','HangupInAMD','buildObj','MACHINE','Machine','membername','AMD','countmachineretry','countglobal','amd','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','dialGlobalMaxRetry','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','rescheduleContact','add','dialMachineRetryFrequency','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','custom:amd','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','[syncAgentComplete][createHistory][0]','stateGlobal','reason\x2019\x20machine....','minutes','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AGI','cause-txt','Unknow','reason','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete]','syncAgentConnect','answertime','queueCallerAbandonCreateState','[syncAgentComplete][createHistory]','[syncQueueCallerAbandon]\x20[Drop]','droptime','dialQueueTimeout','dropreason','TIMEOUT','dialQueueProject2','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','Drop','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','actionid','strategy','roundrobin','locked','paused','stateinterface','push','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','run','idHopper','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','[Catch][Preview][syncQueueStatusComplete]','finally','[booked][RR][finaly]','contactAgent-idHopper:\x20','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','TrunkBackup','checkIfTime','ifTime','checkIfTimeIntervals','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','Failure','isArray','length','command','interval','true','iftime\x20%s,%s','content','some','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','power','handlePower','dialPowerLevel','method\x20not\x20recognized','launchHandleIvr','handleIvr','dialTimezone','dialGlobalInterval','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','dialer','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','createdAt','updatedAt','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridnum','SIP/%s/%s%s','trim','dialCutDigit','substring','OriginateError','[originate][error]','getQueue','isSuccess','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','countagentrejectretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','outboundNoSuchCallsDay','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','NoAnswer','noanswer','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','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','predictiveIntervalMaxThreshold','round','predictiveIntervalMinThreshold','floor','check\x20predictive\x20is\x20not\x20undefine','[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','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\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Queue:\x20','scheduledat','dialRecallMeTimeout','Agent','voicePause','outboundReCallsDay','dialRecallInQueue','RECALLINQUEUE','[Originate][HistoryDialRecallInQueue][historyCatch]','[Originate][HistoryRecallClose][historyCatch]','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[getContactCampaign2]','dialLimitQueue','not_inuse','reachable','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','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','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','p\x20=\x20','Umin\x20=\x20','exports','util','lodash','bluebird','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','booked','predictive','syncQueueSummary','../ami','redis','defaults','socket.io-emitter','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./queueCallerAbandon','127.0.0.1','rrmemory','prototype','enqueue','tail','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','bind','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','message','AGENTS_NOT_LOGGED','name','NOT_ACTIVE','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','type','answered','available','loggedIn','pTalking','sumHoldTime','talking','total','unmanaged'];(function(_0x35d958,_0x82c5ba){var _0x3813bb=function(_0x9448bb){while(--_0x9448bb){_0x35d958['push'](_0x35d958['shift']());}};_0x3813bb(++_0x82c5ba);}(_0x8b2b,0x1c0));var _0xb8b2=function(_0x1e8da4,_0x423e3b){_0x1e8da4=_0x1e8da4-0x0;var _0x1683f8=_0x8b2b[_0x1e8da4];return _0x1683f8;};'use strict';var util=require(_0xb8b2('0x0'));var _=require(_0xb8b2('0x1'));var BPromise=require(_0xb8b2('0x2'));var uuid=require('uuid');var moment=require(_0xb8b2('0x3'));var rr=require('rr');var md5=require(_0xb8b2('0x4'));var Redis=require(_0xb8b2('0x5'));var ut=require(_0xb8b2('0x6'));var config=require(_0xb8b2('0x7'));var logger=require(_0xb8b2('0x8'))('dialer');var loggerBooked=require('../../../config/logger')(_0xb8b2('0x9'));var loggerPredictive=require(_0xb8b2('0x8'))(_0xb8b2('0xa'));var loggerPredictiveCalls=require(_0xb8b2('0x8'))('predictiveCalls');var loggerSyncQueueSummary=require('../../../config/logger')(_0xb8b2('0xb'));var ami=require(_0xb8b2('0xc'));config[_0xb8b2('0xd')]=_[_0xb8b2('0xe')](config[_0xb8b2('0xd')],{'host':'localhost','port':0x18eb});var io=require(_0xb8b2('0xf'))(new Redis(config['redis']));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0xb8b2('0x10'));var cmHopperBlack=require(_0xb8b2('0x11'));var voiceQueueRt=require(_0xb8b2('0x12'));var Action=require(_0xb8b2('0x13'));var History=require(_0xb8b2('0x14'));var Final=require(_0xb8b2('0x15'));var AgentComplete=require('./agentComplete');var QueueCallerAbandon=require(_0xb8b2('0x16'));var Hangup=require('./hangup');var ipAgi=process['env']['XCALLY_IP_AGI']||_0xb8b2('0x17');var strategy={'rrmemory':_0xb8b2('0x18'),'roundrobin':'roundrobin'};var Sequence=function(){};Sequence[_0xb8b2('0x19')][_0xb8b2('0x1a')]=function(_0x333bfb){this[_0xb8b2('0x1b')]=this[_0xb8b2('0x1b')]?this['tail']['finally'](_0x333bfb):_0x333bfb();};function Dialer(_0xda50ef,_0x7eff5){this[_0xb8b2('0x1c')]=new Sequence();this[_0xb8b2('0x1d')]=_0x7eff5;this[_0xb8b2('0x1e')]=_0xda50ef['voiceQueues'];this['campaigns']=_0xda50ef[_0xb8b2('0x1f')];this[_0xb8b2('0x20')]=_0xda50ef[_0xb8b2('0x20')];this[_0xb8b2('0x21')]=_0xda50ef['trunks'];this[_0xb8b2('0x22')]=config[_0xb8b2('0x22')]||0x2;this[_0xb8b2('0x23')]={};this[_0xb8b2('0x24')]={};this[_0xb8b2('0x25')]={};this[_0xb8b2('0x26')]={};this[_0xb8b2('0x27')]={};this['startPredictive']={};this[_0xb8b2('0x28')]={};this[_0xb8b2('0x29')]={};this[_0xb8b2('0x2a')]={};this[_0xb8b2('0x2b')]={};ami['on'](_0xb8b2('0x2c'),this['syncAgentConnect'][_0xb8b2('0x2d')](this));ami['on']('queuecallerabandon',this[_0xb8b2('0x2e')][_0xb8b2('0x2d')](this));ami['on'](_0xb8b2('0x2f'),this[_0xb8b2('0x30')]['bind'](this));ami['on'](_0xb8b2('0x31'),this[_0xb8b2('0x32')][_0xb8b2('0x2d')](this));ami['on']('custom:queuesummary',this['syncQueueSummary']['bind'](this));ami['on']('hangup',this[_0xb8b2('0x33')][_0xb8b2('0x2d')](this));ami['on'](_0xb8b2('0x34'),this[_0xb8b2('0x35')][_0xb8b2('0x2d')](this));ami['on'](_0xb8b2('0x36'),this[_0xb8b2('0x37')][_0xb8b2('0x2d')](this));ami['on'](_0xb8b2('0x38'),this[_0xb8b2('0x39')][_0xb8b2('0x2d')](this));ami['on'](_0xb8b2('0x3a'),this[_0xb8b2('0x3b')][_0xb8b2('0x2d')](this));this[_0xb8b2('0x3c')]();this[_0xb8b2('0x3d')]();}function isNotNull(_0x3f9dc8){return _0x3f9dc8!==null&&!_['isUndefined'](_0x3f9dc8);}function checkIsLoggedIn(_0x37ea31,_0x1899d9){return function(){if(_0x1899d9<=0x0){_0x37ea31[_0xb8b2('0x3e')]=_0xb8b2('0x3f');throw _0x37ea31[_0xb8b2('0x40')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x29cde1){return _0x29cde1;}function checkIsActive(_0x407864,_0x26309e){return function(){if(!isActive(_0x26309e)){_0x407864['message']=_0xb8b2('0x41');throw _0x407864[_0xb8b2('0x40')]+'\x20NOT\x20Active';}};}function checkInterval(_0xa11e1){return function(){if(!isNotNull(_0xa11e1[_0xb8b2('0x42')])){_0xa11e1[_0xb8b2('0x3e')]=_0xb8b2('0x43');throw _0xa11e1[_0xb8b2('0x40')]+_0xb8b2('0x44');}if(!isNotNull(_0xa11e1[_0xb8b2('0x42')][_0xb8b2('0x45')])){_0xa11e1[_0xb8b2('0x3e')]=_0xb8b2('0x43');throw _0xa11e1['name']+_0xb8b2('0x44');}if(!isNotNull(_[_0xb8b2('0x46')](_0xa11e1['Interval'][_0xb8b2('0x45')]))){_0xa11e1[_0xb8b2('0x3e')]=_0xb8b2('0x43');throw _0xa11e1[_0xb8b2('0x40')]+_0xb8b2('0x44');}};}function msgResponse(_0x27180e,_0x298997,_0x337c6e){return{'action':_0x27180e,'response':_0x298997,'message':_0x337c6e,'stack':_0x337c6e};}function myreject(_0x18fa6e){return function(_0x1a4fa0){return _0x18fa6e(msgResponse(_0xb8b2('0x47'),_0xb8b2('0x48'),JSON[_0xb8b2('0x49')](_0x1a4fa0)));};}function getSeconds(_0x43198d,_0x352c5f){var _0x43b71d=moment(_0x43198d)[_0xb8b2('0x4a')](0x0);var _0x9d012d=moment(_0x352c5f)[_0xb8b2('0x4a')](0x0);return _0x43b71d[_0xb8b2('0x4b')](_0x9d012d,_0xb8b2('0x4c'));}function emit(_0x433fe6,_0x22649a,_0x84bef9){io['to'](_0x433fe6)[_0xb8b2('0x4d')](_0x22649a,_0x84bef9);}function emitVoiceQueueSummary(_0x3de2e0){if(_0x3de2e0[_0xb8b2('0x4e')]==='outbound'){var _0x482d64={'id':_0x3de2e0['id'],'name':_0x3de2e0[_0xb8b2('0x40')],'strategy':_0x3de2e0['strategy'],'answered':_0x3de2e0[_0xb8b2('0x4f')],'available':_0x3de2e0[_0xb8b2('0x50')],'loggedIn':_0x3de2e0[_0xb8b2('0x51')],'pTalking':_0x3de2e0[_0xb8b2('0x52')],'sumBillable':_0x3de2e0['sumBillable'],'sumDuration':_0x3de2e0['sumDuration'],'sumHoldTime':_0x3de2e0[_0xb8b2('0x53')]||0x0,'talking':_0x3de2e0[_0xb8b2('0x54')],'total':_0x3de2e0[_0xb8b2('0x55')],'type':_0x3de2e0[_0xb8b2('0x4e')],'unmanaged':_0x3de2e0[_0xb8b2('0x56')],'abandoned':_0x3de2e0['abandoned'],'waiting':_0x3de2e0[_0xb8b2('0x57')],'loggedInDb':_0x3de2e0[_0xb8b2('0x58')],'dialActive':_0x3de2e0[_0xb8b2('0x59')],'dialMethod':_0x3de2e0[_0xb8b2('0x5a')],'dialOriginateCallerIdName':_0x3de2e0[_0xb8b2('0x5b')],'dialOriginateCallerIdNumber':_0x3de2e0['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x3de2e0[_0xb8b2('0x5c')],'dialPrefix':_0x3de2e0[_0xb8b2('0x5d')],'outboundAnswerAgiCallsDay':_0x3de2e0[_0xb8b2('0x5e')],'outboundAnswerCallsDay':_0x3de2e0[_0xb8b2('0x5f')],'outboundBlacklistCallsDay':_0x3de2e0[_0xb8b2('0x60')],'outboundBusyCallsDay':_0x3de2e0[_0xb8b2('0x61')],'outboundCongestionCallsDay':_0x3de2e0[_0xb8b2('0x62')],'outboundDropCallsDayACS':_0x3de2e0[_0xb8b2('0x63')],'outboundDropCallsDayCallersExit':_0x3de2e0[_0xb8b2('0x64')],'outboundDropCallsDayTimeout':_0x3de2e0[_0xb8b2('0x65')],'outboundNoAnswerCallsDay':_0x3de2e0['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x3de2e0['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x3de2e0[_0xb8b2('0x66')],'outboundReCallsDay':_0x3de2e0['outboundReCallsDay'],'outboundRejectCallsDay':_0x3de2e0[_0xb8b2('0x67')],'outboundUnknownCallsDay':_0x3de2e0[_0xb8b2('0x68')],'predictiveIntervalAnsweredCalls':_0x3de2e0[_0xb8b2('0x69')],'predictiveIntervalAvgHoldtime':_0x3de2e0[_0xb8b2('0x6a')],'predictiveIntervalAvgTalktime':_0x3de2e0[_0xb8b2('0x6b')],'predictiveIntervalDroppedCallsCallersExit':_0x3de2e0['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x3de2e0[_0xb8b2('0x6c')],'predictiveIntervalErlangCalls':_0x3de2e0[_0xb8b2('0x6d')],'predictiveIntervalErlangCallsDroppedCalls':_0x3de2e0[_0xb8b2('0x6e')],'predictiveIntervalHitRate':_0x3de2e0[_0xb8b2('0x6f')],'predictiveIntervalMultiplicativeFactor':_0x3de2e0[_0xb8b2('0x70')],'predictiveIntervalPauses':_0x3de2e0[_0xb8b2('0x71')],'predictiveIntervalAvailable':_0x3de2e0[_0xb8b2('0x72')],'predictiveIntervalTotalCalls':_0x3de2e0[_0xb8b2('0x73')],'message':_0x3de2e0[_0xb8b2('0x3e')],'originated':_0x3de2e0[_0xb8b2('0x74')],'erlangCalls':_0x3de2e0[_0xb8b2('0x75')],'erlangCallToSecond':_0x3de2e0['erlangCallToSecond'],'erlangAbandonmentRate':_0x3de2e0[_0xb8b2('0x76')],'erlangBusyFactor':_0x3de2e0[_0xb8b2('0x77')],'startPredictive':_0x3de2e0[_0xb8b2('0x78')],'startProgressive':_0x3de2e0[_0xb8b2('0x28')]};if(_0x3de2e0[_0xb8b2('0x79')]){_0x482d64[_0xb8b2('0x79')]={'id':_0x3de2e0[_0xb8b2('0x79')]['id'],'name':_0x3de2e0[_0xb8b2('0x79')][_0xb8b2('0x40')],'active':_0x3de2e0[_0xb8b2('0x79')][_0xb8b2('0x7a')],'callerid':_0x3de2e0[_0xb8b2('0x79')][_0xb8b2('0x7b')]};}if(_0x3de2e0['Interval']){_0x482d64[_0xb8b2('0x42')]={'id':_0x3de2e0[_0xb8b2('0x42')]['id'],'name':_0x3de2e0['Interval'][_0xb8b2('0x40')]};}var _0x2b9c9a=md5(JSON[_0xb8b2('0x49')](_0x482d64));if(_0x3de2e0['md5']!==_0x2b9c9a){_0x3de2e0[_0xb8b2('0x4')]=_0x2b9c9a;emit(util[_0xb8b2('0x7c')](_0xb8b2('0x7d'),_0x482d64[_0xb8b2('0x40')]),_0xb8b2('0x7e'),_0x482d64);}}}function emitCampaignSummary(_0x174a3d){if(_0x174a3d[_0xb8b2('0x4e')]===_0xb8b2('0x7f')){emit(util[_0xb8b2('0x7c')](_0xb8b2('0x80'),_0x174a3d[_0xb8b2('0x40')]),_0xb8b2('0x81'),_0x174a3d);}}function checkGetDataPredictive(_0xc28eb9){if(isNotNull(_0xc28eb9)&&!_[_0xb8b2('0x46')](_0xc28eb9)){loggerPredictive[_0xb8b2('0x82')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive['info'](_0xb8b2('0x83'),_0xc28eb9[_0xb8b2('0x73')]);loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x84'),_0xc28eb9[_0xb8b2('0x69')]);loggerPredictive[_0xb8b2('0x82')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xc28eb9[_0xb8b2('0x6c')]);loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x85'),_0xc28eb9[_0xb8b2('0x86')]);loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x87'),_0xc28eb9[_0xb8b2('0x6a')]);loggerPredictive[_0xb8b2('0x82')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xc28eb9[_0xb8b2('0x6b')]);loggerPredictive['info'](_0xb8b2('0x88'));if(_0xc28eb9[_0xb8b2('0x73')]>0x0){if(!_[_0xb8b2('0x89')](_0xc28eb9[_0xb8b2('0x6b')])&&_0xc28eb9[_0xb8b2('0x6b')]>0x0){return!![];}loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x8a'));if(!_['isUndefined'](_0xc28eb9[_0xb8b2('0x6a')])&&_0xc28eb9[_0xb8b2('0x6a')]>0x0){return!![];}loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x8b'));}else{loggerPredictive[_0xb8b2('0x82')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0xb8b2('0x82')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x52598e){return function(_0x26fd29){loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x8c'));loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x8d'),_0x26fd29[_0xb8b2('0x75')]);loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x8e'),_0x26fd29[_0xb8b2('0x8f')]);loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x90'),_0x26fd29[_0xb8b2('0x76')]);loggerPredictive['info'](_0xb8b2('0x91'),_0x26fd29[_0xb8b2('0x77')]);loggerPredictive['info'](_0xb8b2('0x90'),_0x26fd29[_0xb8b2('0x76')]);loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x88'));_[_0xb8b2('0x92')](_0x52598e,_0x26fd29);};}function getDiff(_0x5361f8){var _0x356e20=moment()['milliseconds'](0x0);var _0x28c92d=moment(_0x5361f8)[_0xb8b2('0x4a')](0x0);return _0x356e20[_0xb8b2('0x4b')](_0x28c92d,'seconds');}function ifInterval(_0x34c3c9,_0x21c7ec){if(_[_0xb8b2('0x89')](_0x21c7ec)){return![];}return getDiff(_0x21c7ec)<_0x34c3c9*0x3c;}function freeVariablesPredictive(_0x41d670){if(isNotNull(_0x41d670)){if(!_[_0xb8b2('0x89')](_0x41d670['startProgressive'])){_0x41d670['startProgressive']=undefined;loggerPredictive[_0xb8b2('0x82')](_0x41d670[_0xb8b2('0x40')],_0xb8b2('0x93'));}if(!_[_0xb8b2('0x89')](_0x41d670[_0xb8b2('0x78')])){_0x41d670[_0xb8b2('0x78')]=undefined;loggerPredictive[_0xb8b2('0x82')](_0x41d670[_0xb8b2('0x40')],'clearing\x20variable\x20start\x20predictive');}if(!_[_0xb8b2('0x89')](_0x41d670['handlePredictive'])){clearInterval(_0x41d670['handlePredictive']);_0x41d670[_0xb8b2('0x94')]=undefined;loggerPredictive[_0xb8b2('0x82')](_0x41d670[_0xb8b2('0x40')],_0xb8b2('0x95'));}}}function erlangb(_0x419710,_0x8ac34e){if(_0x8ac34e===0x0){return 0x0;}var _0x1ffea7=0x1;for(var _0xa6ffa1=0x1;_0xa6ffa1<=_0x8ac34e;_0xa6ffa1+=0x1){_0x1ffea7=0x1+_0x1ffea7*_0xa6ffa1/_0x419710;}return 0x1/_0x1ffea7;}function isVoiceQueueOutbound(_0x552719){return _0x552719===_0xb8b2('0x96');}function isNotPreview(_0x714005){return _0x714005!=='preview';}function isCampaignIvr(_0xe2c61b){return _0xe2c61b==='ivr';}function getCallerId(_0x2132b4,_0x213fe9,_0x150d69){if(!_[_0xb8b2('0x89')](_0x150d69)&&typeof _0x150d69===_0xb8b2('0x97')&&!_['isEmpty'](_0x150d69)){if(!_['isUndefined'](_0x213fe9)&&typeof _0x213fe9===_0xb8b2('0x97')&&!_[_0xb8b2('0x46')](_0x213fe9)){return util['format'](_0xb8b2('0x98'),_0x213fe9,_0x150d69);}return util[_0xb8b2('0x7c')](_0xb8b2('0x98'),_0x150d69,_0x150d69);}if(!_['isUndefined'](_0x2132b4)&&typeof _0x2132b4===_0xb8b2('0x97')&&!_[_0xb8b2('0x46')](_0x2132b4)){return _0x2132b4;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x417d6f,_0xcf1f6e){return function(_0x5b0055){freeVariablesPredictive(_0xcf1f6e);emitVoiceQueueSummary(_0xcf1f6e);emitCampaignSummary(_0xcf1f6e);loggerSyncQueueSummary['error'](_0x417d6f,util[_0xb8b2('0x99')](_0x5b0055,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x1b5402,_0x2a7709){return function(_0x5f206d){loggerPredictive['error'](_0x2a7709['name'],_0x1b5402);loggerPredictive[_0xb8b2('0x9a')](_0x5f206d['stack']);freeVariablesPredictive(_0x2a7709);};}function loggerCatch(_0x411176){return function(_0x188ca6){logger[_0xb8b2('0x9a')](_0x411176,util[_0xb8b2('0x99')](_0x188ca6,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x2f8ae6){return _0x2f8ae6&&!_[_0xb8b2('0x89')](_0x2f8ae6)&&_0x2f8ae6['length']>0x0;}function decremetOriginate(_0x4ddae3){if(!_[_0xb8b2('0x89')](_0x4ddae3)&&_0x4ddae3!==null){if(typeof _0x4ddae3[_0xb8b2('0x74')]!=='undefined'){if(_0x4ddae3[_0xb8b2('0x74')]>0x0){_0x4ddae3[_0xb8b2('0x74')]-=0x1;}else{logger[_0xb8b2('0x9a')](_0xb8b2('0x9b'));}}}else{logger[_0xb8b2('0x9a')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x2231cc,_0x396d75,_0x472dda){if(_0x396d75>_0x472dda){for(var _0x5c03a3=0x0;_0x5c03a3<_0x396d75-_0x472dda;_0x5c03a3+=0x1){decremetOriginate(_0x2231cc);}}}function loggerGetContactDialer(_0xbdc200,_0x2de419,_0x4fd3ce){return function(_0x287001){checkContactLowerLimitOriginate(_0x2de419,_0x4fd3ce,0x0);logger[_0xb8b2('0x9a')](_0xbdc200,util[_0xb8b2('0x99')](_0x287001,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x199d6e){return function(_0x5b7a0e){if(isNotNull(_0x5b7a0e)&&isNotNull(_0x5b7a0e[0x0])){if(_0x5b7a0e[0x0][_0xb8b2('0x9c')]>0x0){_0x199d6e[_0xb8b2('0x3e')]='RESCHEDULED_CONTACTS';logger[_0xb8b2('0x82')]('[getContactDialer2][ReScheduled]'+_0x199d6e[_0xb8b2('0x40')],_0x5b7a0e[0x0][_0xb8b2('0x9c')],'contacts');}else{_0x199d6e['message']='AVAILABLE_CONTACTS_FINISHED';logger['info']('[getContactDialer2][Empty]'+_0x199d6e['name']);}}};}function notSendMessagesQueue(_0x1878ee){if(_0x1878ee[_0xb8b2('0x9d')]){freeVariablesPredictive(_0x1878ee);if(_0x1878ee[_0xb8b2('0x74')]===0x0&&_0x1878ee[_0xb8b2('0x54')]===0x0&&_0x1878ee[_0xb8b2('0x57')]===0x0&&(_0x1878ee[_0xb8b2('0x52')]||0x0)===0x0){_0x1878ee[_0xb8b2('0x9d')]=![];_0x1878ee[_0xb8b2('0x50')]=0x0;_0x1878ee[_0xb8b2('0x3e')]=_0xb8b2('0x41');loggerSyncQueueSummary[_0xb8b2('0x9a')](_0xb8b2('0x9e'),_0x1878ee['name'],'is\x20not\x20active');}else{_0x1878ee[_0xb8b2('0x3e')]=_0xb8b2('0x9f');loggerSyncQueueSummary[_0xb8b2('0x9a')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x1878ee['name'],_0xb8b2('0xa0'));}emitVoiceQueueSummary(_0x1878ee);}}function notSendMessagesCampaign(_0x50f942){if(_0x50f942[_0xb8b2('0x9d')]){if(_0x50f942[_0xb8b2('0x74')]===0x0){_0x50f942[_0xb8b2('0x9d')]=![];_0x50f942[_0xb8b2('0x3e')]='NOT_ACTIVE';loggerSyncQueueSummary[_0xb8b2('0x9a')](_0xb8b2('0xa1'),_0x50f942[_0xb8b2('0x40')],_0xb8b2('0xa2'));}else{_0x50f942[_0xb8b2('0x3e')]=_0xb8b2('0x9f');loggerSyncQueueSummary['error'](_0xb8b2('0xa1'),_0x50f942[_0xb8b2('0x40')],'is\x20disactive');}emitCampaignSummary(_0x50f942);}}function createObjHistory(_0xeedb47,_0x422293,_0x3fd1be,_0x503c71,_0x4838a4){_0xeedb47[_0xb8b2('0x3e')]=_0x3fd1be;var _0x5130a2=new Action(_0xeedb47,_0x422293);var _0x4c3c3b=new History(_0x5130a2);_0x4c3c3b[_0xb8b2('0xa3')]=_0x503c71;_0x4c3c3b['statedesc']=_0x4838a4;_0x4c3c3b[_0xb8b2('0xa4')]=_0x5130a2[_0xb8b2('0xa5')];return _0x4c3c3b;}Dialer['prototype'][_0xb8b2('0x3d')]=function(){var _0x3fa3fe=this;setInterval(function(){_0x3fa3fe[_0xb8b2('0xa6')](_0x3fa3fe['uniqueId'],_0xb8b2('0xa7'));_0x3fa3fe['clearZombieChannels'](_0x3fa3fe[_0xb8b2('0x24')],_0xb8b2('0xa8'));},0x32c8);};Dialer[_0xb8b2('0x19')][_0xb8b2('0xa6')]=function(_0x7d00d1,_0x21a9e0){var _0xe2655d=this;for(var _0x613aef in _0x7d00d1){if(typeof _0x7d00d1[_0x613aef]!==_0xb8b2('0xa9')){this['sequence'][_0xb8b2('0x1a')](function(){if(!_['isNil'](_0x7d00d1[_0x613aef])){return ami[_0xb8b2('0xaa')]({'action':_0xb8b2('0xab'),'channel':_0x7d00d1[_0x613aef][_0xb8b2('0xac')]})[_0xb8b2('0xad')](function(_0x32c03e){if(_0x32c03e['message']===_0xb8b2('0xae')){setTimeout(function(){if(_0x7d00d1[_0x613aef]&&_0x7d00d1[_0x613aef][_0xb8b2('0x4e')]!==_0xb8b2('0x7f')){_0xe2655d[_0xb8b2('0xaf')](_0xe2655d[_0xb8b2('0x1e')][_0x7d00d1[_0x613aef][_0xb8b2('0xb0')]]);logger[_0xb8b2('0x9a')]('[Dialer][checkChannel]',_0x21a9e0,_0x613aef,_0x7d00d1[_0x613aef][_0xb8b2('0xb0')]);delete _0x7d00d1[_0x613aef];}if(_0x7d00d1[_0x613aef]&&_0x7d00d1[_0x613aef]['type']==='ivr'){_0xe2655d[_0xb8b2('0xaf')](_0xe2655d['campaigns'][_0x7d00d1[_0x613aef][_0xb8b2('0xb0')]]);logger['error'](_0xb8b2('0xb1'),_0x21a9e0,_0x613aef,_0x7d00d1[_0x613aef][_0xb8b2('0xb0')]);delete _0x7d00d1[_0x613aef];}},0x2328);}});}});}}};Dialer[_0xb8b2('0x19')][_0xb8b2('0xb2')]=function(_0x4481df){return BPromise[_0xb8b2('0xb3')]()[_0xb8b2('0xb4')](cmHopper[_0xb8b2('0xb2')](_0x4481df))[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0xb5')));};Dialer[_0xb8b2('0x19')][_0xb8b2('0xb6')]=function(_0x2c6529){return BPromise[_0xb8b2('0xb3')]()[_0xb8b2('0xb4')](cmHopperBlack[_0xb8b2('0xb6')](_0x2c6529))[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0xb7')));};Dialer[_0xb8b2('0x19')][_0xb8b2('0xb8')]=function(_0x1400ee){return BPromise['resolve']()[_0xb8b2('0xb4')](cmHopperBlack[_0xb8b2('0xb8')](_0x1400ee))[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0xb9')));};Dialer[_0xb8b2('0x19')][_0xb8b2('0xba')]=function(_0x49449a){return BPromise[_0xb8b2('0xb3')]()[_0xb8b2('0xb4')](cmHopperHistory[_0xb8b2('0xbb')](_0x49449a))['catch'](loggerCatch(_0xb8b2('0xbc')));};Dialer[_0xb8b2('0x19')]['rescheduleContact']=function(_0x431a18){return BPromise[_0xb8b2('0xb3')]()[_0xb8b2('0xb4')](cmHopper['rescheduleContact'](_0x431a18))[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0xbd')));};Dialer[_0xb8b2('0x19')][_0xb8b2('0xbe')]=function(_0x160547,_0x4c2955,_0x29c842){return BPromise[_0xb8b2('0xb3')]()[_0xb8b2('0xb4')](cmHopper[_0xb8b2('0xbe')](_0x160547,_0x4c2955,_0x29c842))[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0xbf')));};Dialer['prototype'][_0xb8b2('0xc0')]=function(_0x8b15c1,_0x4844c9,_0x12e497,_0x1fd6df,_0x29e894){return BPromise[_0xb8b2('0xb3')]()[_0xb8b2('0xb4')](cmHopper[_0xb8b2('0xc0')](_0x8b15c1,_0x4844c9,_0x12e497,_0x1fd6df))[_0xb8b2('0xad')](function(_0x3f5b25){_0x29e894[_0xb8b2('0xc1')]-=_0x12e497;_0x29e894[_0xb8b2('0xc1')]=_0x29e894[_0xb8b2('0xc1')]>0x0?_0x29e894[_0xb8b2('0xc1')]:0x0;loggerCatch(_0xb8b2('0xc2'))(_0x3f5b25);});};Dialer['prototype'][_0xb8b2('0xc3')]=function(_0x58b66a,_0x904e81,_0x3989ee,_0x1261b2){return BPromise['resolve']()['then'](cmHopper['getContactDialerIvr'](_0x58b66a,_0x904e81,_0x3989ee))[_0xb8b2('0xad')](function(_0x55da0e){_0x1261b2[_0xb8b2('0xc1')]-=_0x904e81;_0x1261b2[_0xb8b2('0xc1')]=_0x1261b2[_0xb8b2('0xc1')]>0x0?_0x1261b2[_0xb8b2('0xc1')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0x55da0e);});};Dialer['prototype']['getVoiceQueueRtPauses']=function(_0x3e955e){return BPromise[_0xb8b2('0xb3')]()['then'](voiceQueueRt[_0xb8b2('0xc4')](_0x3e955e))[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0xc5')));};Dialer[_0xb8b2('0x19')][_0xb8b2('0xc6')]=function(_0x10849d){return BPromise[_0xb8b2('0xb3')]()[_0xb8b2('0xb4')](cmHopper['moveContactManagedDialer'](_0x10849d))['catch'](loggerCatch(_0xb8b2('0xc7')));};Dialer[_0xb8b2('0x19')][_0xb8b2('0xc8')]=function(_0x1e38fa){return BPromise[_0xb8b2('0xb3')]()[_0xb8b2('0xb4')](cmHopperHistory[_0xb8b2('0xc8')](_0x1e38fa))[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0xc9')));};Dialer[_0xb8b2('0x19')][_0xb8b2('0xaf')]=function(_0x381577){if(!_['isUndefined'](_0x381577)&&_0x381577!==null){if(typeof _0x381577[_0xb8b2('0x74')]!==_0xb8b2('0xa9')){if(_0x381577[_0xb8b2('0x74')]>0x0){_0x381577['originated']-=0x1;}else{logger['error'](_0xb8b2('0xca'));}}}else{logger[_0xb8b2('0x9a')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0xb8b2('0x19')][_0xb8b2('0xcb')]=function(_0x435b68,_0x172a03){var _0x4341ae=this;return function(_0x5463b0){_0x4341ae[_0xb8b2('0xaf')](_0x172a03);logger['error'](_0x435b68,util[_0xb8b2('0x99')](_0x5463b0,{'showHidden':![],'depth':null}));};};Dialer[_0xb8b2('0x19')][_0xb8b2('0xcc')]=function(_0x50a048,_0x51ac7d,_0x8cbd39){var _0x206662={'state':0x19,'statedesc':_0xb8b2('0xcd')};this[_0xb8b2('0xaf')](_0x51ac7d);this[_0xb8b2('0xce')](_[_0xb8b2('0x92')](_0x206662,_[_0xb8b2('0xcf')](_0x8cbd39,[_0xb8b2('0xd0'),_0xb8b2('0xd1'),_0xb8b2('0xd2'),_0xb8b2('0xd3'),_0xb8b2('0xd4')])),_0xb8b2('0xd5'),_0xb8b2('0xd6'));logger[_0xb8b2('0x9a')](_0x50a048);};Dialer[_0xb8b2('0x19')]['isSuccess']=function(_0x350057){return _0x350057===_0xb8b2('0xd7');};Dialer[_0xb8b2('0x19')][_0xb8b2('0xd8')]=function(_0x55c2e5){return!_[_0xb8b2('0x89')](_0x55c2e5)&&_0x55c2e5&&!_[_0xb8b2('0x89')](_0x55c2e5[_0xb8b2('0x40')])&&!_[_0xb8b2('0x89')](_0x55c2e5[_0xb8b2('0x7a')])&&_0x55c2e5['active']&&(this[_0xb8b2('0x21')][util[_0xb8b2('0x7c')]('SIP/%s',_0x55c2e5[_0xb8b2('0x40')])]['status']==='reachable'||this[_0xb8b2('0x21')][util[_0xb8b2('0x7c')](_0xb8b2('0xd9'),_0x55c2e5['name'])][_0xb8b2('0xab')]===_0xb8b2('0xda'));};Dialer[_0xb8b2('0x19')][_0xb8b2('0xce')]=function(_0x22a803,_0x53f7d1,_0x4c77dd){this[_0xb8b2('0xc8')](_0x22a803)[_0xb8b2('0xad')](loggerCatch(_0x53f7d1));this['moveContactManagedDialer'](_0x22a803)[_0xb8b2('0xad')](loggerCatch(_0x4c77dd));};Dialer[_0xb8b2('0x19')][_0xb8b2('0x37')]=function(_0x34e4f7){var _0x1025ef=this['uniqueId'][_0x34e4f7[_0xb8b2('0xdb')]];var _0x531232;if(!_[_0xb8b2('0xdc')](_0x34e4f7)&&!_['isNil'](_0x34e4f7[_0xb8b2('0xdd')])&&!_[_0xb8b2('0xdc')](_0x34e4f7[_0xb8b2('0xdd')]['amdstatus'])&&_0x34e4f7[_0xb8b2('0xde')]===_0xb8b2('0xdf')&&_0x1025ef){if(_0x1025ef[_0xb8b2('0x4e')]!=='ivr'&&this['voiceQueues'][_0x1025ef[_0xb8b2('0xb0')]][_0xb8b2('0xe0')]&&_0x34e4f7[_0xb8b2('0xe1')]===_0xb8b2('0xe2')){delete this[_0xb8b2('0x26')][_0x34e4f7['uniqueid']];this[_0xb8b2('0xaf')](this['voiceQueues'][_0x1025ef[_0xb8b2('0xb0')]]);this[_0xb8b2('0x1e')][_0x1025ef[_0xb8b2('0xb0')]][_0xb8b2('0x5f')]+=0x1;this[_0xb8b2('0x1e')][_0x1025ef[_0xb8b2('0xb0')]][_0xb8b2('0x5e')]+=0x1;_0x531232=new Hangup(_0x1025ef,_0x34e4f7);_0x531232[_0xb8b2('0xa3')]=0x12;_0x531232[_0xb8b2('0xe3')]=_0xb8b2('0xe4');_0x531232['membername']='AMD';ami['emit']('custom:amd',ut[_0xb8b2('0xe5')](_0x531232,'amd'));this[_0xb8b2('0xce')](_0x531232,'[syncHangupInAMD][createHistory]','[syncHangupInAMD]');}if(_0x1025ef[_0xb8b2('0x4e')]!==_0xb8b2('0x7f')&&this[_0xb8b2('0x1e')][_0x1025ef[_0xb8b2('0xb0')]][_0xb8b2('0xe0')]&&_0x34e4f7[_0xb8b2('0xe1')]===_0xb8b2('0xe6')){var _0x29db0e=this;return new BPromise(function(_0x35471c,_0x28a288){delete _0x29db0e['uniqueId'][_0x34e4f7['uniqueid']];_0x29db0e[_0xb8b2('0xaf')](_0x29db0e[_0xb8b2('0x1e')][_0x1025ef[_0xb8b2('0xb0')]]);_0x29db0e[_0xb8b2('0x1e')][_0x1025ef[_0xb8b2('0xb0')]][_0xb8b2('0x5f')]+=0x1;_0x29db0e[_0xb8b2('0x1e')][_0x1025ef[_0xb8b2('0xb0')]][_0xb8b2('0x5e')]+=0x1;var _0x4e1327=_0x29db0e[_0xb8b2('0x1e')][_0x1025ef[_0xb8b2('0xb0')]];var _0x569f5a=new Hangup(_0x1025ef,_0x34e4f7);_0x569f5a[_0xb8b2('0xa3')]=0x13;_0x569f5a[_0xb8b2('0xe3')]=_0xb8b2('0xe7');_0x569f5a[_0xb8b2('0xe8')]=_0xb8b2('0xe9');_0x569f5a[_0xb8b2('0xea')]+=0x1;_0x569f5a[_0xb8b2('0xeb')]+=0x1;_0x569f5a[_0xb8b2('0xec')]=!![];ami['emit']('custom:amd',ut[_0xb8b2('0xe5')](_0x569f5a,'amd'));_0x29db0e[_0xb8b2('0xc8')](_0x569f5a)[_0xb8b2('0xad')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x569f5a[_0xb8b2('0xed')]+_0x569f5a[_0xb8b2('0xee')]+_0x569f5a[_0xb8b2('0xef')]+_0x569f5a[_0xb8b2('0xf0')]+_0x569f5a[_0xb8b2('0xf1')]+_0x569f5a[_0xb8b2('0xf2')]+_0x569f5a[_0xb8b2('0xea')]+_0x569f5a['countagentrejectretry']>=_0x4e1327[_0xb8b2('0xf3')]){_0x29db0e['stateGlobal'](_0x569f5a,_0x35471c,_0x28a288,_0xb8b2('0xf4'));}else{if(_0x569f5a[_0xb8b2('0xea')]>=_0x4e1327[_0xb8b2('0xf5')]){_0x29db0e[_0xb8b2('0xf6')](_0x569f5a,_0x35471c,_0x28a288,'reason\x2019\x20machine....');}else{_0x29db0e[_0xb8b2('0xf7')]({'active':![],'countmachineretry':_0x569f5a[_0xb8b2('0xea')],'scheduledat':moment()[_0xb8b2('0xf8')](_0x4e1327[_0xb8b2('0xf9')],'minutes')[_0xb8b2('0x7c')](_0xb8b2('0xfa')),'ContactId':_0x569f5a[_0xb8b2('0xd0')],'ListId':_0x569f5a[_0xb8b2('0xd1')],'VoiceQueueId':_0x569f5a['VoiceQueueId']||undefined,'CampaignId':_0x569f5a[_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0xfb')));_0x35471c({'reschedule':0x1});}}});}if(_0x1025ef[_0xb8b2('0x4e')]===_0xb8b2('0x7f')&&this[_0xb8b2('0x1f')][_0x1025ef['queue']][_0xb8b2('0xe0')]&&_0x34e4f7[_0xb8b2('0xe1')]==='HANGUP'){delete this[_0xb8b2('0x26')][_0x34e4f7[_0xb8b2('0xdb')]];this['updateOriginated'](this['campaigns'][_0x1025ef['queue']]);_0x531232=new Hangup(_0x1025ef,_0x34e4f7);_0x531232[_0xb8b2('0xa3')]=0x12;_0x531232[_0xb8b2('0xe3')]=_0xb8b2('0xe4');_0x531232['membername']='AMD';ami[_0xb8b2('0x4d')](_0xb8b2('0xfc'),ut[_0xb8b2('0xe5')](_0x531232,_0xb8b2('0xec')));this['saveInDb'](_0x531232,_0xb8b2('0xfd'),_0xb8b2('0xfe'));}if(_0x1025ef['type']===_0xb8b2('0x7f')&&this[_0xb8b2('0x1f')][_0x1025ef[_0xb8b2('0xb0')]][_0xb8b2('0xe0')]&&_0x34e4f7[_0xb8b2('0xe1')]==='MACHINE'){var _0x29db0e=this;return new BPromise(function(_0x2e11e1,_0x242ef8){delete _0x29db0e['uniqueId'][_0x34e4f7[_0xb8b2('0xdb')]];_0x29db0e[_0xb8b2('0xaf')](_0x29db0e[_0xb8b2('0x1f')][_0x1025ef['queue']]);_0x29db0e['campaigns'][_0x1025ef[_0xb8b2('0xb0')]][_0xb8b2('0x5f')]+=0x1;_0x29db0e[_0xb8b2('0x1f')][_0x1025ef[_0xb8b2('0xb0')]][_0xb8b2('0x5e')]+=0x1;var _0x2defea=_0x29db0e['campaigns'][_0x1025ef[_0xb8b2('0xb0')]];var _0x138c00=new Hangup(_0x1025ef,_0x34e4f7);_0x138c00[_0xb8b2('0xa3')]=0x13;_0x138c00[_0xb8b2('0xe3')]=_0xb8b2('0xe7');_0x138c00[_0xb8b2('0xe8')]=_0xb8b2('0xe9');_0x138c00[_0xb8b2('0xea')]+=0x1;_0x138c00[_0xb8b2('0xeb')]+=0x1;_0x138c00[_0xb8b2('0xec')]=!![];ami[_0xb8b2('0x4d')](_0xb8b2('0xfc'),ut['buildObj'](_0x138c00,_0xb8b2('0xec')));_0x29db0e['createHistory'](_0x138c00)['catch'](loggerCatch(_0xb8b2('0xff')));if(_0x138c00[_0xb8b2('0xed')]+_0x138c00[_0xb8b2('0xee')]+_0x138c00[_0xb8b2('0xef')]+_0x138c00[_0xb8b2('0xf0')]+_0x138c00['countdropretry']+_0x138c00[_0xb8b2('0xf2')]+_0x138c00[_0xb8b2('0xea')]+_0x138c00['countagentrejectretry']>=_0x2defea[_0xb8b2('0xf3')]){_0x29db0e[_0xb8b2('0x100')](_0x138c00,_0x2e11e1,_0x242ef8,'reason19\x20machine....');}else{if(_0x138c00['countmachineretry']>=_0x2defea[_0xb8b2('0xf5')]){_0x29db0e['createStateFinal'](_0x138c00,_0x2e11e1,_0x242ef8,_0xb8b2('0x101'));}else{_0x29db0e['rescheduleContact']({'active':![],'countmachineretry':_0x138c00[_0xb8b2('0xea')],'scheduledat':moment()['add'](_0x2defea[_0xb8b2('0xf9')],_0xb8b2('0x102'))[_0xb8b2('0x7c')](_0xb8b2('0xfa')),'ContactId':_0x138c00[_0xb8b2('0xd0')],'ListId':_0x138c00[_0xb8b2('0xd1')],'VoiceQueueId':_0x138c00['VoiceQueueId']||undefined,'CampaignId':_0x138c00[_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0xfb')));_0x2e11e1({'reschedule':0x1});}}});}}};Dialer['prototype'][_0xb8b2('0x33')]=function(_0x650fe){var _0xb49f9c=this[_0xb8b2('0x26')][_0x650fe['uniqueid']];var _0x1ba7a0=this;var _0x19b6fe;if(_0xb49f9c&&_0xb49f9c['type']===_0xb8b2('0x7f')){delete this[_0xb8b2('0x26')][_0x650fe[_0xb8b2('0xdb')]];this[_0xb8b2('0xaf')](this[_0xb8b2('0x1f')][_0xb49f9c[_0xb8b2('0xb0')]]);this[_0xb8b2('0x1f')][_0xb49f9c[_0xb8b2('0xb0')]][_0xb8b2('0x103')]+=0x1;_0x19b6fe=new Hangup(_0xb49f9c,_0x650fe);this['createHistory'](_0x19b6fe)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x104')));this[_0xb8b2('0xc6')](_0x19b6fe)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x105')));}if(_0xb49f9c&&_0xb49f9c['type']!==_0xb8b2('0x7f')&&isNotNull(this['voiceQueues'][_0xb49f9c['queue']][_0xb8b2('0x106')])){delete this[_0xb8b2('0x26')][_0x650fe['uniqueid']];this[_0xb8b2('0xaf')](this['voiceQueues'][_0xb49f9c[_0xb8b2('0xb0')]]);this[_0xb8b2('0x1e')][_0xb49f9c[_0xb8b2('0xb0')]][_0xb8b2('0x5f')]+=0x1;this[_0xb8b2('0x1e')][_0xb49f9c[_0xb8b2('0xb0')]][_0xb8b2('0x5e')]+=0x1;_0x19b6fe=new Hangup(_0xb49f9c,_0x650fe);_0x19b6fe['state']=0x10;_0x19b6fe[_0xb8b2('0xe3')]='AnswerAGI';_0x19b6fe[_0xb8b2('0xe8')]=_0xb8b2('0x107');this['createHistory'](_0x19b6fe)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x104')));this[_0xb8b2('0xc6')](_0x19b6fe)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x105')));}if(_0xb49f9c&&_0xb49f9c[_0xb8b2('0x4e')]!==_0xb8b2('0x7f')&&!isNotNull(this[_0xb8b2('0x1e')][_0xb49f9c[_0xb8b2('0xb0')]][_0xb8b2('0x106')])){delete this[_0xb8b2('0x26')][_0x650fe[_0xb8b2('0xdb')]];this[_0xb8b2('0xaf')](this[_0xb8b2('0x1e')][_0xb49f9c[_0xb8b2('0xb0')]]);this['voiceQueues'][_0xb49f9c[_0xb8b2('0xb0')]][_0xb8b2('0x68')]+=0x1;_0x19b6fe=new Hangup(_0xb49f9c,_0x650fe);_0x19b6fe[_0xb8b2('0xa3')]=0xc;_0x19b6fe[_0xb8b2('0xe3')]=_0x650fe[_0xb8b2('0x108')];_0x19b6fe['membername']=_0xb8b2('0x109');this[_0xb8b2('0xc8')](_0x19b6fe)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x104')));this[_0xb8b2('0xc6')](_0x19b6fe)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x105')));}};Dialer[_0xb8b2('0x19')][_0xb8b2('0x32')]=function(_0x2f5adb){var _0x27aadd=this[_0xb8b2('0x26')][_0x2f5adb[_0xb8b2('0xdb')]];var _0x1ee47a=this;if(this[_0xb8b2('0x1e')][_0x2f5adb['queue']]){if(_0x27aadd&&_0x27aadd[_0xb8b2('0x4e')]!==_0xb8b2('0x7f')){delete this[_0xb8b2('0x26')][_0x2f5adb['uniqueid']];this['voiceQueues'][_0x2f5adb['queue']][_0xb8b2('0x5f')]+=0x1;var _0xc111b5=new AgentComplete(_0x27aadd,_0x2f5adb);if(_0x2f5adb[_0xb8b2('0x10a')]===_0xb8b2('0x10b')){_0xc111b5[_0xb8b2('0x10c')]=this['voiceQueues'][_0x2f5adb[_0xb8b2('0xb0')]]['dialQueueProject2']&&this[_0xb8b2('0x1e')][_0x2f5adb[_0xb8b2('0xb0')]][_0xb8b2('0x10d')]?moment()['format'](_0xb8b2('0xfa')):undefined;}this[_0xb8b2('0xc8')](_0xc111b5)['catch'](loggerCatch('[syncAgentComplete][createHistory]'));this[_0xb8b2('0xc6')](_0xc111b5)['catch'](loggerCatch(_0xb8b2('0x10e')));}}};Dialer[_0xb8b2('0x19')][_0xb8b2('0x10f')]=function(_0x212833){if(this[_0xb8b2('0x1e')][_0x212833['queue']]){if(this[_0xb8b2('0x26')][_0x212833['uniqueid']]&&this[_0xb8b2('0x26')][_0x212833[_0xb8b2('0xdb')]][_0xb8b2('0x4e')]!==_0xb8b2('0x7f')){this[_0xb8b2('0xaf')](this[_0xb8b2('0x1e')][_0x212833[_0xb8b2('0xb0')]]);this['uniqueId'][_0x212833[_0xb8b2('0xdb')]][_0xb8b2('0x110')]=moment()[_0xb8b2('0x7c')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0xb8b2('0x19')][_0xb8b2('0x111')]=function(_0x2113a3){this['createHistory'](_0x2113a3)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x112')));this[_0xb8b2('0xc6')](_0x2113a3)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x113')));};Dialer['prototype'][_0xb8b2('0x2e')]=function(_0x442676){var _0x5678d8=this['uniqueId'][_0x442676[_0xb8b2('0xdb')]];var _0x1ce1a1=this;if(this['voiceQueues'][_0x442676['queue']]){if(_0x5678d8&&_0x5678d8[_0xb8b2('0x4e')]!==_0xb8b2('0x7f')){delete this[_0xb8b2('0x26')][_0x442676[_0xb8b2('0xdb')]];this[_0xb8b2('0xaf')](this[_0xb8b2('0x1e')][_0x442676[_0xb8b2('0xb0')]]);_0x5678d8['droptime']=moment()[_0xb8b2('0x7c')](_0xb8b2('0xfa'));var _0x48dbce=new QueueCallerAbandon(_0x5678d8,_0x442676);if(getSeconds(_0x5678d8[_0xb8b2('0x114')],_0x5678d8['responsetime'])>=_0x5678d8[_0xb8b2('0x115')]){this[_0xb8b2('0x1e')][_0x442676['queue']][_0xb8b2('0x6c')]+=0x1;this['voiceQueues'][_0x442676[_0xb8b2('0xb0')]]['outboundDropCallsDayTimeout']+=0x1;this['voiceQueues'][_0x442676['queue']][_0xb8b2('0x6e')]+=0x1;_0x48dbce[_0xb8b2('0xa3')]=0xa;_0x48dbce[_0xb8b2('0xe3')]='Drop';_0x48dbce[_0xb8b2('0x116')]=_0xb8b2('0x117');_0x48dbce['agiafterat']=this[_0xb8b2('0x1e')][_0x442676[_0xb8b2('0xb0')]][_0xb8b2('0x118')]?moment()[_0xb8b2('0x7c')](_0xb8b2('0xfa')):undefined;_0x48dbce['countdropretry']+=0x1;_0x48dbce[_0xb8b2('0xeb')]+=0x1;if(_0x48dbce['countdropretry']>=this['voiceQueues'][_0x442676[_0xb8b2('0xb0')]][_0xb8b2('0x119')]){this[_0xb8b2('0x111')](_0x48dbce);}else{this[_0xb8b2('0xf7')]({'active':![],'countdropretry':_0x48dbce[_0xb8b2('0xf1')],'scheduledat':moment()[_0xb8b2('0xf8')](this['voiceQueues'][_0x442676[_0xb8b2('0xb0')]][_0xb8b2('0x11a')],'minutes')['format'](_0xb8b2('0xfa')),'ContactId':_0x5678d8[_0xb8b2('0xd0')],'ListId':_0x5678d8[_0xb8b2('0xd1')],'VoiceQueueId':_0x5678d8[_0xb8b2('0xd3')]||undefined,'CampaignId':_0x5678d8[_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x11b')));var _0x5e7394=new History(_0x48dbce);_0x5e7394[_0xb8b2('0xa3')]=0xa;_0x5e7394['statedesc']=_0xb8b2('0x11c');_0x5e7394[_0xb8b2('0xa5')]=moment()[_0xb8b2('0x7c')]('YYYY-MM-DD\x20HH:mm:ss');_0x5e7394[_0xb8b2('0xa4')]=_0x5e7394[_0xb8b2('0xa5')];_0x5e7394[_0xb8b2('0x11d')]=_0x48dbce['calleridname'];_0x5e7394[_0xb8b2('0x11e')]=_0x48dbce['calleridnum'];this[_0xb8b2('0xc8')](_0x5e7394)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x11f')));}}else{this['voiceQueues'][_0x442676[_0xb8b2('0xb0')]][_0xb8b2('0x86')]+=0x1;this[_0xb8b2('0x1e')][_0x442676['queue']][_0xb8b2('0x64')]+=0x1;_0x48dbce[_0xb8b2('0xa3')]=0xb;_0x48dbce['statedesc']=_0xb8b2('0x120');_0x48dbce[_0xb8b2('0x116')]=_0xb8b2('0x121');_0x48dbce[_0xb8b2('0xf2')]+=0x1;_0x48dbce[_0xb8b2('0xeb')]+=0x1;if(_0x48dbce['countabandonedretry']>=this[_0xb8b2('0x1e')][_0x442676[_0xb8b2('0xb0')]][_0xb8b2('0x122')]){this[_0xb8b2('0x111')](_0x48dbce);}else{this[_0xb8b2('0xf7')]({'active':![],'countabandonedretry':_0x48dbce[_0xb8b2('0xf2')],'scheduledat':moment()['add'](this[_0xb8b2('0x1e')][_0x442676[_0xb8b2('0xb0')]]['dialAbandonedRetryFrequency'],_0xb8b2('0x102'))[_0xb8b2('0x7c')](_0xb8b2('0xfa')),'ContactId':_0x5678d8[_0xb8b2('0xd0')],'ListId':_0x5678d8[_0xb8b2('0xd1')],'VoiceQueueId':_0x5678d8['VoiceQueueId']||undefined,'CampaignId':_0x5678d8[_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x5e7394=new History(_0x48dbce);_0x5e7394[_0xb8b2('0xa3')]=0xb;_0x5e7394[_0xb8b2('0xe3')]=_0xb8b2('0x120');_0x5e7394[_0xb8b2('0xa5')]=moment()[_0xb8b2('0x7c')](_0xb8b2('0xfa'));_0x5e7394['endtime']=_0x5e7394['starttime'];_0x5e7394['calleridname']=_0x48dbce[_0xb8b2('0x11d')];_0x5e7394['calleridnum']=_0x48dbce[_0xb8b2('0x11e')];this[_0xb8b2('0xc8')](_0x5e7394)[_0xb8b2('0xad')](loggerCatch('[syncAgentComplete][createHistory][11]'));}}}}};Dialer['prototype'][_0xb8b2('0x35')]=function(_0x1cf0b6){if(this[_0xb8b2('0x24')][_0x1cf0b6[_0xb8b2('0xdb')]]){this[_0xb8b2('0x24')][_0x1cf0b6[_0xb8b2('0xdb')]][_0xb8b2('0xac')]=_0x1cf0b6['channel'];}if(this['uniqueId'][_0x1cf0b6[_0xb8b2('0xdb')]]){this['uniqueId'][_0x1cf0b6[_0xb8b2('0xdb')]][_0xb8b2('0xac')]=_0x1cf0b6[_0xb8b2('0xac')];}};Dialer[_0xb8b2('0x19')][_0xb8b2('0x39')]=function(_0x549a7d){if(strategy[this[_0xb8b2('0x1e')][this[_0xb8b2('0x24')][_0x549a7d[_0xb8b2('0x123')]]['queue']][_0xb8b2('0x124')]]===_0xb8b2('0x125')){if(this[_0xb8b2('0x24')][_0x549a7d[_0xb8b2('0x123')]]&&_[_0xb8b2('0xdc')](this[_0xb8b2('0x24')][_0x549a7d[_0xb8b2('0x123')]][_0xb8b2('0x126')])&&_0x549a7d[_0xb8b2('0xab')]==='1'&&_0x549a7d[_0xb8b2('0x127')]==='0'){if(this['agents'][_0x549a7d[_0xb8b2('0x128')]]){if(!this[_0xb8b2('0x20')][_0x549a7d[_0xb8b2('0x128')]][_0xb8b2('0x126')]){this['agents'][_0x549a7d[_0xb8b2('0x128')]]['locked']=!![];this[_0xb8b2('0x24')][_0x549a7d[_0xb8b2('0x123')]]['locked']=!![];this[_0xb8b2('0x24')][_0x549a7d[_0xb8b2('0x123')]][_0xb8b2('0x128')]=_0x549a7d[_0xb8b2('0x128')];}}}}else if((strategy[this[_0xb8b2('0x1e')][this[_0xb8b2('0x24')][_0x549a7d['actionid']]['queue']][_0xb8b2('0x124')]]||_0xb8b2('0x18'))===_0xb8b2('0x18')){if(this[_0xb8b2('0x24')][_0x549a7d['actionid']]){if(this[_0xb8b2('0x20')][_0x549a7d[_0xb8b2('0x128')]]){this[_0xb8b2('0x24')][_0x549a7d[_0xb8b2('0x123')]][_0xb8b2('0x128')]=_0x549a7d['stateinterface'];if(_[_0xb8b2('0xdc')](this[_0xb8b2('0x2a')][this['actions'][_0x549a7d[_0xb8b2('0x123')]][_0xb8b2('0xb0')]])){this['queueBooked'][this[_0xb8b2('0x24')][_0x549a7d['actionid']][_0xb8b2('0xb0')]]=[];}this[_0xb8b2('0x2a')][this[_0xb8b2('0x24')][_0x549a7d[_0xb8b2('0x123')]]['queue']][_0xb8b2('0x129')](_[_0xb8b2('0x92')](_[_0xb8b2('0xcf')](this[_0xb8b2('0x24')][_0x549a7d[_0xb8b2('0x123')]],['idHopper',_0xb8b2('0x128')]),{'status':_0x549a7d['status'],'paused':_0x549a7d['paused']}));}}}};function unlockQueueStatus(_0x7fe563,_0x2d7bb4){setTimeout(function(){if(_['isUndefined'](_0x7fe563[_0xb8b2('0x12a')])){loggerBooked[_0xb8b2('0x9a')](_0xb8b2('0x12b'),_0x2d7bb4);}_0x7fe563[_0xb8b2('0x12a')]=!![];loggerBooked['info'](_0xb8b2('0x12c'),_0x2d7bb4,JSON[_0xb8b2('0x49')](_[_0xb8b2('0xcf')](_0x7fe563,[_0xb8b2('0x40'),'queueStatusComplete'])));},0x1f3);}Dialer['prototype'][_0xb8b2('0x3b')]=function(_0x25c180){var _0xfc10b8=this;var _0x2f6a9c=_0xfc10b8[_0xb8b2('0x1e')][_0xfc10b8[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]]['queue']];if(strategy[this[_0xb8b2('0x1e')][this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xb0')]][_0xb8b2('0x124')]]===_0xb8b2('0x125')){if(this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]]&&this[_0xb8b2('0x24')][_0x25c180['actionid']][_0xb8b2('0x128')]){this[_0xb8b2('0x1d')][_0xb8b2('0x12d')](this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0x12e')],this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0x128')])[_0xb8b2('0xad')](function(_0x1bc77c){logger[_0xb8b2('0x9a')]('[Catch][Preview][syncQueueStatusComplete]',util['inspect'](_0x1bc77c,{'showHidden':![],'depth':null}));})['finally'](function(){_0xfc10b8[_0xb8b2('0xaf')](_0xfc10b8['voiceQueues'][_0xfc10b8[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]]['queue']]);_0xfc10b8['agents'][_0xfc10b8[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]]['stateinterface']][_0xb8b2('0x126')]=![];delete _0xfc10b8['actions'][_0x25c180[_0xb8b2('0x123')]];unlockQueueStatus(_0x2f6a9c);});}else{this['updateOriginated'](this[_0xb8b2('0x1e')][this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xb0')]]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x25c180['actionid']][_0xb8b2('0xd0')],'ListId':this['actions'][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xd1')],'VoiceQueueId':this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xd3')]||undefined,'CampaignId':this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x12f')));delete this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]];unlockQueueStatus(_0x2f6a9c);}}else if((strategy[this[_0xb8b2('0x1e')][this['actions'][_0x25c180[_0xb8b2('0x123')]]['queue']][_0xb8b2('0x124')]]||'rrmemory')===_0xb8b2('0x18')){var _0x13b1fd;if(this[_0xb8b2('0x24')][_0x25c180['actionid']]&&!_[_0xb8b2('0x46')](this[_0xb8b2('0x2a')][this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xb0')]])){if(this['queueBookedRR'][_0xfc10b8[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xb0')]]){this[_0xb8b2('0x2b')][_0xfc10b8['actions'][_0x25c180['actionid']][_0xb8b2('0xb0')]]=this['queueBookedRR'][this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xb0')]]?this['queueBookedRR'][this['actions'][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xb0')]]:this[_0xb8b2('0x2a')][this[_0xb8b2('0x24')][_0x25c180['actionid']]['queue']]?this[_0xb8b2('0x2a')][this['actions'][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xb0')]][_0xb8b2('0x130')]||0x0:0x0;}this[_0xb8b2('0x2a')][this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xb0')]]['_rr']=this['queueBookedRR'][this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xb0')]];for(var _0x1c6ad1=0x0;_0x1c6ad1<this[_0xb8b2('0x2a')][this[_0xb8b2('0x24')][_0x25c180['actionid']][_0xb8b2('0xb0')]]['length'];_0x1c6ad1+=0x1){_0x13b1fd=rr(this['queueBooked'][this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]]['queue']]);this['queueBookedRR'][_0xfc10b8[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]]['queue']]=this[_0xb8b2('0x2a')][this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]]['queue']][_0xb8b2('0x130')];if(_0x13b1fd['status']==='1'&&_0x13b1fd[_0xb8b2('0x127')]==='0'){break;}}if(!_[_0xb8b2('0xdc')](_0x13b1fd)){this[_0xb8b2('0x20')][_0x13b1fd['stateinterface']]['unlockRR']=_[_0xb8b2('0x89')](this[_0xb8b2('0x20')][_0x13b1fd['stateinterface']][_0xb8b2('0x131')])?!![]:this[_0xb8b2('0x20')][_0x13b1fd['stateinterface']][_0xb8b2('0x131')];}loggerBooked[_0xb8b2('0x82')](_0xb8b2('0x132'),_0x25c180['actionid'],_0xb8b2('0x133'),JSON['stringify'](_[_0xb8b2('0xcf')](this[_0xb8b2('0x20')][_0x13b1fd[_0xb8b2('0x128')]],['name',_0xb8b2('0x131')])),'contactAgent-idHopper:\x20',JSON[_0xb8b2('0x49')](_0x13b1fd[_0xb8b2('0x12e')]));if(!_['isNil'](_0x13b1fd)&&_0x13b1fd[_0xb8b2('0xab')]==='1'&&_0x13b1fd[_0xb8b2('0x127')]==='0'&&this[_0xb8b2('0x20')][_0x13b1fd[_0xb8b2('0x128')]][_0xb8b2('0x131')]){this[_0xb8b2('0x20')][_0x13b1fd[_0xb8b2('0x128')]][_0xb8b2('0x131')]=![];this['queueBooked'][_0xfc10b8[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]]['queue']]=[];this[_0xb8b2('0x1d')]['run'](_0x13b1fd['idHopper'],_0x13b1fd[_0xb8b2('0x128')])[_0xb8b2('0xad')](function(_0x3fddd3){logger['error'](_0xb8b2('0x134'),util[_0xb8b2('0x99')](_0x3fddd3,{'showHidden':![],'depth':null}));})[_0xb8b2('0x135')](function(){_0xfc10b8[_0xb8b2('0xaf')](_0xfc10b8[_0xb8b2('0x1e')][_0xfc10b8[_0xb8b2('0x24')][_0x25c180['actionid']][_0xb8b2('0xb0')]]);setTimeout(function(){_0xfc10b8[_0xb8b2('0x20')][_0x13b1fd['stateinterface']][_0xb8b2('0x131')]=!![];loggerBooked['info'](_0xb8b2('0x136'),_0x25c180[_0xb8b2('0x123')],'Agent:\x20',JSON[_0xb8b2('0x49')](_[_0xb8b2('0xcf')](_0xfc10b8[_0xb8b2('0x20')][_0x13b1fd[_0xb8b2('0x128')]],['name',_0xb8b2('0x131')])),_0xb8b2('0x137'),JSON[_0xb8b2('0x49')](_0x13b1fd[_0xb8b2('0x12e')]));},0xc7);delete _0xfc10b8['actions'][_0x25c180[_0xb8b2('0x123')]];unlockQueueStatus(_0x2f6a9c,_0x25c180[_0xb8b2('0x123')]);});}else{loggerBooked[_0xb8b2('0x82')](_0xb8b2('0x138'));this[_0xb8b2('0xaf')](this[_0xb8b2('0x1e')][this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xb0')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]]['ContactId'],'ListId':this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xd1')],'VoiceQueueId':this[_0xb8b2('0x24')][_0x25c180['actionid']]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]];unlockQueueStatus(_0x2f6a9c);}}else{loggerBooked['info'](_0xb8b2('0x139'));this[_0xb8b2('0xaf')](this[_0xb8b2('0x1e')][this[_0xb8b2('0x24')][_0x25c180['actionid']]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xd0')],'ListId':this[_0xb8b2('0x24')][_0x25c180['actionid']]['ListId'],'VoiceQueueId':this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xd4')]||undefined})['catch'](loggerCatch(_0xb8b2('0x13a')));delete this['actions'][_0x25c180[_0xb8b2('0x123')]];unlockQueueStatus(_0x2f6a9c);}}else{loggerBooked['info']('[booked][unlock3]');this[_0xb8b2('0xaf')](this['voiceQueues'][this[_0xb8b2('0x24')][_0x25c180['actionid']][_0xb8b2('0xb0')]]);this[_0xb8b2('0xf7')]({'active':![],'ContactId':this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xd0')],'ListId':this[_0xb8b2('0x24')][_0x25c180['actionid']][_0xb8b2('0xd1')],'VoiceQueueId':this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xd3')]||undefined,'CampaignId':this[_0xb8b2('0x24')][_0x25c180[_0xb8b2('0x123')]][_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this['actions'][_0x25c180[_0xb8b2('0x123')]];unlockQueueStatus(_0x2f6a9c);}};Dialer[_0xb8b2('0x19')]['loopCampaigns']=function(){var _0x3b1811=this;setInterval(function(){_0x3b1811[_0xb8b2('0x13b')]();},0x3e8);};Dialer[_0xb8b2('0x19')][_0xb8b2('0x13c')]=function(_0x289157){var _0x4d7bfb=this;return function(){if(!_0x4d7bfb[_0xb8b2('0xd8')](_0x289157[_0xb8b2('0x79')])){if(!_0x4d7bfb[_0xb8b2('0xd8')](_0x289157[_0xb8b2('0x13d')])){_0x289157[_0xb8b2('0x3e')]='TRUNK_IS_NOT_REACHABLE';throw _0x289157['name']+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer['prototype'][_0xb8b2('0x13e')]=function(_0x4f7540,_0x33cfe6,_0x516fa6,_0x984a9){var _0x4cbb74=this;return function(){var _0x4dd977=!![];return _0x4cbb74[_0xb8b2('0x13f')](_0x4f7540,_0x33cfe6,_0x516fa6,_0x984a9,_0x4dd977);};};Dialer[_0xb8b2('0x19')][_0xb8b2('0x140')]=function(_0x339c3b,_0x5b0a2a,_0x3e68e7,_0x13f9ef){var _0xc5bdad=this;return function(){var _0x6bded2=![];return _0xc5bdad[_0xb8b2('0x13f')](_0x339c3b[_0xb8b2('0x45')],_0x5b0a2a,_0x3e68e7,_0x13f9ef,_0x6bded2);};};Dialer[_0xb8b2('0x19')][_0xb8b2('0x13f')]=function(_0x1e9dce,_0x283739,_0x4ad8c7,_0x38f000,_0x24b2b6){var _0x3e96d4=[];return new BPromise(function(_0x2f8ba3,_0x1abf0d){if(!isNotNull(_0x1e9dce)){_0x38f000[_0xb8b2('0x3e')]='INTERVAL_IS_NULL';return _0x1abf0d(msgResponse('ifTime','Failure',_0x4ad8c7+'\x20Intervals\x20is\x20null\x20'));}if(_[_0xb8b2('0x46')](_0x1e9dce)){_0x38f000[_0xb8b2('0x3e')]=_0xb8b2('0x141');return _0x1abf0d(msgResponse(_0xb8b2('0x13f'),'Failure',_0x4ad8c7+_0xb8b2('0x142')));}if(_0x283739&&_[_0xb8b2('0x89')](config[_0xb8b2('0x143')][_0x283739])){_0x38f000[_0xb8b2('0x3e')]=_0xb8b2('0x144');return _0x1abf0d(msgResponse('ifTime',_0xb8b2('0x145'),_0x4ad8c7+'\x20Timezone\x20unknow\x20'+_0x283739));}if(_[_0xb8b2('0x146')](_0x1e9dce)){for(var _0x346e7c=0x0;_0x346e7c<_0x1e9dce[_0xb8b2('0x147')];_0x346e7c+=0x1){_0x3e96d4[_0xb8b2('0x129')](ami[_0xb8b2('0xaa')]({'action':_0xb8b2('0x148'),'command':util['format']('iftime\x20%s,%s',_0x1e9dce[_0x346e7c][_0xb8b2('0x149')],!_[_0xb8b2('0x89')](config[_0xb8b2('0x143')][_0x283739])?_0x283739:'')})[_0xb8b2('0xb4')](function(_0x33e90b){return _0x33e90b['content']['indexOf'](_0xb8b2('0x14a'))>=0x0;})[_0xb8b2('0xad')](myreject(_0x1abf0d)));}}else{_0x3e96d4[_0xb8b2('0x129')](ami[_0xb8b2('0xaa')]({'action':'command','command':util['format'](_0xb8b2('0x14b'),_0x1e9dce,!_[_0xb8b2('0x89')](config[_0xb8b2('0x143')][_0x283739])?_0x283739:'')})[_0xb8b2('0xb4')](function(_0x25f28f){return _0x25f28f[_0xb8b2('0x14c')]['indexOf'](_0xb8b2('0x14a'))>=0x0;})[_0xb8b2('0xad')](myreject(_0x1abf0d)));}BPromise['all'](_0x3e96d4)[_0xb8b2('0xb4')](function(_0x3d8389){var _0x13b997=_[_0xb8b2('0x14d')](_0x3d8389);if(_0x13b997){return _0x2f8ba3(_0x13b997);}else{_0x38f000[_0xb8b2('0x3e')]=_0x24b2b6?'GLOBAL_INTERVAL_IS_OVERTIME':'INTERVAL_IS_OVERTIME';return _0x1abf0d(msgResponse(_0xb8b2('0x14e'),_0xb8b2('0x145'),_0xb8b2('0x14f')+_0x24b2b6+'\x20'+_0x4ad8c7+_0xb8b2('0x150')+util[_0xb8b2('0x99')](_0x1e9dce,{'showHidden':![],'depth':null})+_0xb8b2('0x151')+_0x283739));}})[_0xb8b2('0xad')](function(_0x16674b){return _0x1abf0d(msgResponse(_0xb8b2('0x13f'),'Failure',JSON[_0xb8b2('0x49')](_0x16674b)));});});};Dialer[_0xb8b2('0x19')][_0xb8b2('0x152')]=function(_0x38e3c9){var _0x2f3122=this;return function(){switch(_0x38e3c9[_0xb8b2('0x5a')]){case _0xb8b2('0x153'):freeVariablesPredictive(_0x38e3c9);_0x2f3122['handlePower'](_0x38e3c9,0x1);break;case _0xb8b2('0x154'):freeVariablesPredictive(_0x38e3c9);_0x2f3122[_0xb8b2('0x155')](_0x38e3c9,_0x38e3c9[_0xb8b2('0x156')]);break;case _0xb8b2('0xa'):_0x2f3122['predictive'](_0x38e3c9);break;case _0xb8b2('0x9'):freeVariablesPredictive(_0x38e3c9);_0x2f3122[_0xb8b2('0x155')](_0x38e3c9,0x1);break;default:freeVariablesPredictive(_0x38e3c9);logger[_0xb8b2('0x9a')]('Queue',_0x38e3c9['name'],_0xb8b2('0x157'));}};};Dialer[_0xb8b2('0x19')][_0xb8b2('0x158')]=function(_0x51611e){var _0x8e62d0=this;return function(){_0x8e62d0[_0xb8b2('0x159')](_0x51611e);};};Dialer[_0xb8b2('0x19')][_0xb8b2('0xb')]=function(_0x187a20){var _0x24a57c=this;if(isNotPreview(_0x187a20[_0xb8b2('0x5a')])){if(isVoiceQueueOutbound(_0x187a20['type'])&&isActive(_0x187a20['dialActive'])){_0x187a20[_0xb8b2('0x9d')]=!![];BPromise[_0xb8b2('0xb3')]()[_0xb8b2('0xb4')](checkIsLoggedIn(_0x187a20,_0x187a20[_0xb8b2('0x51')]))[_0xb8b2('0xb4')](checkIsActive(_0x187a20,_0x187a20['dialActive']))[_0xb8b2('0xb4')](checkInterval(_0x187a20))[_0xb8b2('0xb4')](_0x24a57c['checkIsTrunkReachable'](_0x187a20))[_0xb8b2('0xb4')](_0x24a57c[_0xb8b2('0x13e')](_0x187a20['dialGlobalInterval'],_0x187a20[_0xb8b2('0x15a')],_0x187a20['name'],_0x187a20))[_0xb8b2('0xb4')](_0x24a57c[_0xb8b2('0x140')](_0x187a20[_0xb8b2('0x42')],_0x187a20[_0xb8b2('0x15a')],_0x187a20[_0xb8b2('0x40')],_0x187a20))[_0xb8b2('0xb4')](_0x24a57c[_0xb8b2('0x152')](_0x187a20))[_0xb8b2('0xad')](loggerCatchQueueSummary('[syncQueueSummary]',_0x187a20));}else{notSendMessagesQueue(_0x187a20);}}else{freeVariablesPredictive(_0x187a20);}};Dialer[_0xb8b2('0x19')][_0xb8b2('0x13b')]=function(){var _0x1b8ce6=this;var _0x5a6269;for(var _0x1c00a6 in this[_0xb8b2('0x1f')]){if(typeof this[_0xb8b2('0x1f')][_0x1c00a6]!==_0xb8b2('0xa9')){_0x5a6269=this[_0xb8b2('0x1f')][_0x1c00a6];if(isCampaignIvr(_0x5a6269[_0xb8b2('0x4e')])&&isActive(_0x5a6269[_0xb8b2('0x7a')])){_0x5a6269[_0xb8b2('0x9d')]=!![];BPromise[_0xb8b2('0xb3')]()[_0xb8b2('0xb4')](checkIsActive(_0x5a6269,_0x5a6269['active']))[_0xb8b2('0xb4')](checkInterval(_0x5a6269))[_0xb8b2('0xb4')](_0x1b8ce6[_0xb8b2('0x13c')](_0x5a6269))[_0xb8b2('0xb4')](_0x1b8ce6['checkIfTime'](_0x5a6269[_0xb8b2('0x15b')],_0x5a6269[_0xb8b2('0x15a')],_0x5a6269[_0xb8b2('0x40')],_0x5a6269))[_0xb8b2('0xb4')](_0x1b8ce6[_0xb8b2('0x140')](_0x5a6269[_0xb8b2('0x42')],_0x5a6269[_0xb8b2('0x15a')],_0x5a6269[_0xb8b2('0x40')],_0x5a6269))[_0xb8b2('0xb4')](_0x1b8ce6[_0xb8b2('0x158')](_0x5a6269))['catch'](loggerCatchQueueSummary(_0xb8b2('0x15c'),_0x5a6269));}else{notSendMessagesCampaign(_0x5a6269);}}}};function getCallerIdRandom(_0x5b2885,_0x48ea66){var _0x4b6ef8;var _0x179d91;var _0x578bfe;if(_0x48ea66<=0x0){_0x48ea66=0x1;}_0x4b6ef8=new RegExp(_0xb8b2('0x15d')+_0x48ea66+'}$');_0x179d91=Math[_0xb8b2('0x15e')](0xa,_0x48ea66-0x1);_0x578bfe=Math[_0xb8b2('0x15e')](0xa,_0x48ea66)-0x1;return util['format']('%s',_[_0xb8b2('0x15f')](_0x5b2885,_0x4b6ef8,_[_0xb8b2('0x160')](_0x179d91,_0x578bfe)));}function extractCalleridName(_0x464993){var _0x345712=_0x464993[_0xb8b2('0x161')](/"(.*?)"/);return _0x345712?_0x345712[0x1]:_0x464993;}function extractCalleridNumber(_0xe225f4){var _0x8057d8=_0xe225f4[_0xb8b2('0x161')](/<(.*?)>/);return _0x8057d8?_0x8057d8[0x1]:_0xe225f4;}Dialer['prototype'][_0xb8b2('0x162')]=function(_0x47aa7f,_0x173099){var _0x2f06c=this;var _0x34f126=uuid['v4']();this[_0xb8b2('0x24')][_0x34f126]=new Action(_0x47aa7f,_0x173099,_0x34f126);return new BPromise(function(_0x4c6c14,_0x17449d){if(_['isUndefined'](_0x47aa7f)&&typeof _0x47aa7f!==_0xb8b2('0x163')){return _0x17449d(msgResponse(_0xb8b2('0x164'),_0xb8b2('0x145'),_0xb8b2('0x165')));}if(_[_0xb8b2('0x89')](_0x173099[_0xb8b2('0x166')][_0xb8b2('0x167')])||_0x173099['Contact']['phone']===null){return _0x17449d(msgResponse(_0xb8b2('0x164'),_0xb8b2('0x145'),_0xb8b2('0x168')));}var _0x4d79a7={'XMD-CALLERID':_0x2f06c[_0xb8b2('0x24')][_0x34f126][_0xb8b2('0x169')](),'XMD-AGI':_0x47aa7f[_0xb8b2('0x106')]?util['format'](_0xb8b2('0x16a'),ipAgi,_0x47aa7f[_0xb8b2('0x106')]):_0xb8b2('0x16b'),'XMD-AGIAFTER':_0x47aa7f[_0xb8b2('0x118')]?util[_0xb8b2('0x7c')](_0xb8b2('0x16a'),ipAgi,_0x47aa7f[_0xb8b2('0x118')]):'NONE','XMD-QUEUE':_0x47aa7f[_0xb8b2('0x4e')]===_0xb8b2('0x96')?util[_0xb8b2('0x7c')]('\x22%s,%s%s,,,%s\x22',_0x47aa7f[_0xb8b2('0x40')],_0x47aa7f['dialQueueOptions']||'',_0x47aa7f[_0xb8b2('0x10d')]?'c':'',_0x47aa7f[_0xb8b2('0x115')]||0x3):_0xb8b2('0x16b'),'XMD-CONTACTID':_0x173099[_0xb8b2('0xd0')],'XMD-CDRTYPE':_0xb8b2('0x16c'),'CALLERID(all)':_0x2f06c[_0xb8b2('0x24')][_0x34f126][_0xb8b2('0x169')](),'XMD-AMD':_0x47aa7f[_0xb8b2('0xe0')]?_0xb8b2('0x16d'):_0xb8b2('0x16b'),'XMD-DESTINATION':'xcally-motion-dialer'};if(_0x47aa7f[_0xb8b2('0xe0')]){_0x4d79a7[_0xb8b2('0x16e')]=_0x47aa7f[_0xb8b2('0x16f')]||0x9c4;_0x4d79a7[_0xb8b2('0x170')]=_0x47aa7f['dialAMDGreeting']||0x5dc;_0x4d79a7['XMD-AMDAFTERGREETINGSILENCE']=_0x47aa7f[_0xb8b2('0x171')]||0x320;_0x4d79a7[_0xb8b2('0x172')]=_0x47aa7f[_0xb8b2('0x173')]||0x1388;_0x4d79a7['XMD-AMDMINWORDLENGTH']=_0x47aa7f[_0xb8b2('0x174')]||0x64;_0x4d79a7[_0xb8b2('0x175')]=_0x47aa7f['dialAMDBetweenWordsSilence']||0x32;_0x4d79a7[_0xb8b2('0x176')]=_0x47aa7f[_0xb8b2('0x177')]||0x3;_0x4d79a7['XMD-AMDSILENCETHRESHOLD']=_0x47aa7f[_0xb8b2('0x178')]||0x100;_0x4d79a7[_0xb8b2('0x179')]=_0x47aa7f[_0xb8b2('0x17a')]||0x1388;}if(_0x47aa7f[_0xb8b2('0x4e')]===_0xb8b2('0x96')){_0x4d79a7[_0xb8b2('0x17b')]=_0x173099[_0xb8b2('0xd3')];}else{_0x4d79a7[_0xb8b2('0x17c')]=_0x173099[_0xb8b2('0xd4')];}for(var _0x3bee81 in _0x173099['Contact']){if(typeof _0x173099[_0xb8b2('0x166')][_0x3bee81]!==_0xb8b2('0xa9')){if(isNotNull(_0x173099[_0xb8b2('0x166')][_0x3bee81])&&_0x3bee81!=='id'&&_0x3bee81!=='tags'&&_0x3bee81!==_0xb8b2('0x17d')&&_0x3bee81!==_0xb8b2('0x17e')){_0x4d79a7[util[_0xb8b2('0x7c')](_0xb8b2('0x17f'),_0xb8b2('0x180'),_[_0xb8b2('0x181')](_0x3bee81))]=_0x173099[_0xb8b2('0x166')][_0x3bee81];}}}var _0xe6011a=_0x2f06c[_0xb8b2('0xd8')](_0x47aa7f[_0xb8b2('0x79')])?getCallerId(_0x47aa7f[_0xb8b2('0x79')]['callerid'],_0x47aa7f['dialOriginateCallerIdName'],_0x47aa7f[_0xb8b2('0x182')]>0x0?getCallerIdRandom(_0x47aa7f[_0xb8b2('0x183')],_0x47aa7f[_0xb8b2('0x182')]):_0x47aa7f['dialOriginateCallerIdNumber']):getCallerId(_[_0xb8b2('0xdc')](_0x47aa7f[_0xb8b2('0x13d')])?_0x47aa7f[_0xb8b2('0x79')][_0xb8b2('0x7b')]:_0x47aa7f['TrunkBackup'][_0xb8b2('0x7b')],_0x47aa7f[_0xb8b2('0x5b')],_0x47aa7f['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x47aa7f[_0xb8b2('0x183')],_0x47aa7f['dialRandomLastDigitCallerIdNumber']):_0x47aa7f[_0xb8b2('0x183')]);if(_0xe6011a){_0x4d79a7[_0xb8b2('0x184')]=_0x2f06c[_0xb8b2('0x24')][_0x34f126]['originatecalleridname']=extractCalleridName(_0xe6011a);_0x4d79a7['XMD-ORIGINATECALLERIDNUM']=_0x2f06c[_0xb8b2('0x24')][_0x34f126][_0xb8b2('0x185')]=extractCalleridNumber(_0xe6011a);}return ami[_0xb8b2('0xaa')]({'actionid':_0x34f126,'action':'originate','channel':_0x2f06c[_0xb8b2('0xd8')](_0x47aa7f[_0xb8b2('0x79')])?util[_0xb8b2('0x7c')](_0xb8b2('0x186'),_0x47aa7f[_0xb8b2('0x79')][_0xb8b2('0x40')],isNotNull(_0x47aa7f[_0xb8b2('0x5d')])?_0x47aa7f[_0xb8b2('0x5d')][_0xb8b2('0x187')]()||'':'',_0x47aa7f[_0xb8b2('0x188')]>0x0?_0x173099[_0xb8b2('0x166')][_0xb8b2('0x167')][_0xb8b2('0x189')](_0x47aa7f['dialCutDigit']):_0x173099['Contact']['phone']):util['format'](_0xb8b2('0x186'),_[_0xb8b2('0xdc')](_0x47aa7f[_0xb8b2('0x13d')])?_0x47aa7f[_0xb8b2('0x79')]['name']:_0x47aa7f[_0xb8b2('0x13d')]['name'],isNotNull(_0x47aa7f[_0xb8b2('0x5d')])?_0x47aa7f[_0xb8b2('0x5d')][_0xb8b2('0x187')]()||'':'',_0x47aa7f[_0xb8b2('0x188')]>0x0?_0x173099[_0xb8b2('0x166')][_0xb8b2('0x167')][_0xb8b2('0x189')](_0x47aa7f[_0xb8b2('0x188')]):_0x173099[_0xb8b2('0x166')]['phone']),'callerid':_0xe6011a,'Exten':_0xb8b2('0xdf'),'Context':'from-sip','Priority':'1','variable':_0x4d79a7,'timeout':(_0x47aa7f[_0xb8b2('0x5c')]||0x1e)*0x3e8,'async':!![],'channelid':_0x34f126})[_0xb8b2('0xb4')](function(_0x6d3b6e){return _0x4c6c14(_0x6d3b6e);})['catch'](function(_0x4ce30a){_0x47aa7f[_0xb8b2('0x66')]+=0x1;var _0x305349=new History(_0x2f06c['actions'][_0x34f126]);logger[_0xb8b2('0x9a')](util[_0xb8b2('0x7c')]('[originateError]:\x20%s',JSON[_0xb8b2('0x49')](_0x4ce30a)));_0x305349['state']=0xe;_0x305349['statedesc']=_0xb8b2('0x18a');_0x305349[_0xb8b2('0xa5')]=moment()[_0xb8b2('0x7c')]('YYYY-MM-DD\x20HH:mm:ss');_0x305349['endtime']=_0x305349[_0xb8b2('0xa5')];_0x2f06c['createHistory'](_0x305349)['catch'](loggerCatch(_0xb8b2('0x18b')));_0x2f06c[_0xb8b2('0xc6')](_0x305349)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x18b')))[_0xb8b2('0x135')](function(){delete _0x2f06c[_0xb8b2('0x24')][_0x34f126];return _0x17449d(msgResponse(_0xb8b2('0x164'),'Error','originate\x20action\x20Error'));});});});};Dialer[_0xb8b2('0x19')]['syncOriginateResponse']=function(_0x322279){var _0x194371=this['actions'][_0x322279['actionid']];if(_0x194371){delete this[_0xb8b2('0x24')][_0x322279[_0xb8b2('0x123')]];_0x194371['responsetime']=moment()[_0xb8b2('0x7c')](_0xb8b2('0xfa'));var _0x2da6ad=_0x194371['type']===_0xb8b2('0x7f')?this['campaigns'][_0x194371[_0xb8b2('0xb0')]]:this[_0xb8b2('0x1e')][_0x194371[_0xb8b2('0x18c')]()];if(!this[_0xb8b2('0x18d')](_0x322279[_0xb8b2('0x18e')])){this['updateOriginated'](_0x2da6ad);return this[_0xb8b2('0x18f')](_0x194371,_0x2da6ad,_0x322279)['catch'](loggerCatch(_0xb8b2('0x190')));}this[_0xb8b2('0x26')][_0x322279['uniqueid']]=_0x194371;}};Dialer[_0xb8b2('0x19')][_0xb8b2('0x191')]=function(_0x453308,_0x4a5ede,_0x8ea52f){var _0x3ff5e8=new History(_0x4a5ede);if(_0x3ff5e8[_0xb8b2('0xed')]+_0x3ff5e8[_0xb8b2('0xee')]+_0x3ff5e8[_0xb8b2('0xef')]+_0x3ff5e8[_0xb8b2('0xf0')]+_0x3ff5e8[_0xb8b2('0xf1')]+_0x3ff5e8[_0xb8b2('0xf2')]+_0x3ff5e8[_0xb8b2('0xea')]+_0x3ff5e8[_0xb8b2('0x192')]>=_0x8ea52f[_0xb8b2('0xf3')]-0x1){return!![];}switch(_0x453308){case 0x3:if(_0x3ff5e8[_0xb8b2('0xef')]>=_0x8ea52f[_0xb8b2('0x193')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x3ff5e8[_0xb8b2('0xef')]+=0x1,'scheduledat':moment()[_0xb8b2('0xf8')](_0x8ea52f[_0xb8b2('0x194')],_0xb8b2('0x102'))[_0xb8b2('0x7c')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x3ff5e8[_0xb8b2('0xd0')],'ListId':_0x3ff5e8['ListId'],'VoiceQueueId':_0x3ff5e8[_0xb8b2('0xd3')]||undefined,'CampaignId':_0x3ff5e8[_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x195')));break;case 0x5:if(_0x3ff5e8[_0xb8b2('0xed')]>=_0x8ea52f['dialBusyMaxRetry']-0x1){return!![];}this[_0xb8b2('0xf7')]({'active':![],'countbusyretry':_0x3ff5e8['countbusyretry']+=0x1,'scheduledat':moment()['add'](_0x8ea52f['dialBusyRetryFrequency'],_0xb8b2('0x102'))[_0xb8b2('0x7c')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x3ff5e8[_0xb8b2('0xd0')],'ListId':_0x3ff5e8[_0xb8b2('0xd1')],'VoiceQueueId':_0x3ff5e8[_0xb8b2('0xd3')]||undefined,'CampaignId':_0x3ff5e8[_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x3ff5e8[_0xb8b2('0xee')]>=_0x8ea52f['dialCongestionMaxRetry']-0x1){return!![];}this[_0xb8b2('0xf7')]({'active':![],'countcongestionretry':_0x3ff5e8[_0xb8b2('0xee')]+=0x1,'scheduledat':moment()[_0xb8b2('0xf8')](_0x8ea52f[_0xb8b2('0x196')],_0xb8b2('0x102'))[_0xb8b2('0x7c')](_0xb8b2('0xfa')),'ContactId':_0x3ff5e8[_0xb8b2('0xd0')],'ListId':_0x3ff5e8[_0xb8b2('0xd1')],'VoiceQueueId':_0x3ff5e8['VoiceQueueId']||undefined,'CampaignId':_0x3ff5e8[_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x197')));break;case 0x0:if(_0x3ff5e8[_0xb8b2('0xf0')]>=_0x8ea52f[_0xb8b2('0x198')]-0x1){return!![];}else{this[_0xb8b2('0xf7')]({'active':![],'countnosuchnumberretry':_0x3ff5e8['countnosuchnumberretry']+=0x1,'scheduledat':moment()[_0xb8b2('0xf8')](_0x8ea52f[_0xb8b2('0x199')],_0xb8b2('0x102'))[_0xb8b2('0x7c')](_0xb8b2('0xfa')),'ContactId':_0x3ff5e8[_0xb8b2('0xd0')],'ListId':_0x3ff5e8['ListId'],'VoiceQueueId':_0x3ff5e8[_0xb8b2('0xd3')]||undefined,'CampaignId':_0x3ff5e8[_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x19a')));}break;case 0xa:if(_0x3ff5e8[_0xb8b2('0xf1')]>=_0x8ea52f['dialDropMaxRetry']-0x1){return!![];}this[_0xb8b2('0xf7')]({'active':![],'countdropretry':_0x3ff5e8[_0xb8b2('0xf1')]+=0x1,'scheduledat':moment()['add'](_0x8ea52f[_0xb8b2('0x11a')],_0xb8b2('0x102'))[_0xb8b2('0x7c')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x3ff5e8[_0xb8b2('0xd0')],'ListId':_0x3ff5e8[_0xb8b2('0xd1')],'VoiceQueueId':_0x3ff5e8['VoiceQueueId']||undefined,'CampaignId':_0x3ff5e8['CampaignId']||undefined})[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x11b')));break;case 0xb:if(_0x3ff5e8['countabandonedretry']>=_0x8ea52f['dialAbandonedMaxRetry']-0x1){return!![];}this[_0xb8b2('0xf7')]({'active':![],'countabandonedretry':_0x3ff5e8[_0xb8b2('0xf2')]+=0x1,'scheduledat':moment()[_0xb8b2('0xf8')](_0x8ea52f[_0xb8b2('0x19b')],'minutes')[_0xb8b2('0x7c')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x3ff5e8[_0xb8b2('0xd0')],'ListId':_0x3ff5e8[_0xb8b2('0xd1')],'VoiceQueueId':_0x3ff5e8[_0xb8b2('0xd3')]||undefined,'CampaignId':_0x3ff5e8[_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x19c')));break;case 0x13:if(_0x3ff5e8[_0xb8b2('0xea')]>=_0x8ea52f[_0xb8b2('0xf5')]-0x1){return!![];}this[_0xb8b2('0xf7')]({'active':![],'countmachineretry':_0x3ff5e8[_0xb8b2('0xea')]+=0x1,'scheduledat':moment()[_0xb8b2('0xf8')](_0x8ea52f[_0xb8b2('0xf9')],_0xb8b2('0x102'))[_0xb8b2('0x7c')](_0xb8b2('0xfa')),'ContactId':_0x3ff5e8['ContactId'],'ListId':_0x3ff5e8['ListId'],'VoiceQueueId':_0x3ff5e8['VoiceQueueId']||undefined,'CampaignId':_0x3ff5e8[_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0xfb')));break;case 0x14:if(_0x3ff5e8[_0xb8b2('0x192')]>=_0x8ea52f[_0xb8b2('0x19d')]-0x1){return!![];}this[_0xb8b2('0xf7')]({'active':![],'countagentrejectretry':_0x3ff5e8['countagentrejectretry']+=0x1,'scheduledat':moment()[_0xb8b2('0xf8')](_0x8ea52f[_0xb8b2('0x19e')],_0xb8b2('0x102'))[_0xb8b2('0x7c')](_0xb8b2('0xfa')),'ContactId':_0x3ff5e8['ContactId'],'ListId':_0x3ff5e8[_0xb8b2('0xd1')],'VoiceQueueId':_0x3ff5e8[_0xb8b2('0xd3')]||undefined,'CampaignId':_0x3ff5e8[_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0xb8b2('0x19')][_0xb8b2('0x18f')]=function(_0x27bda2,_0x30b807,_0x3afca0){var _0x2c0f9c=this;var _0xc3713a=new History(_0x27bda2);return new BPromise(function(_0x257443,_0x3c3bb0){if(_[_0xb8b2('0x89')](_0x30b807)&&typeof _0x30b807!==_0xb8b2('0x163')){return _0x3c3bb0(msgResponse(_0xb8b2('0x19f'),_0xb8b2('0x145'),_0xb8b2('0x1a0')));}if(_['isUndefined'](_0x3afca0)&&typeof _0x3afca0!==_0xb8b2('0x163')){return _0x3c3bb0(msgResponse(_0xb8b2('0x19f'),_0xb8b2('0x145'),_0xb8b2('0x1a1')));}switch(_0x3afca0['reason']){case'0':_0x30b807[_0xb8b2('0x1a2')]+=0x1;_0xc3713a[_0xb8b2('0xa3')]=0x0;_0xc3713a[_0xb8b2('0xe3')]=_0xb8b2('0x1a3');_0xc3713a[_0xb8b2('0xf0')]+=0x1;_0xc3713a['countglobal']+=0x1;ami[_0xb8b2('0x4d')](_0xb8b2('0x1a4'),ut[_0xb8b2('0xe5')](_0x27bda2,_0xb8b2('0x1a5')));_0x2c0f9c[_0xb8b2('0xc8')](_0xc3713a)['catch'](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x2c0f9c[_0xb8b2('0x191')](0x0,_0x27bda2,_0x30b807)){if(_0xc3713a[_0xb8b2('0xf0')]>=_0x30b807[_0xb8b2('0x198')]){_0x2c0f9c[_0xb8b2('0xf6')](_0xc3713a,_0x257443,_0x3c3bb0,_0xb8b2('0x1a6'));}else{_0x2c0f9c[_0xb8b2('0x100')](_0xc3713a,_0x257443,_0x3c3bb0,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x30b807[_0xb8b2('0x1a7')]+=0x1;_0xc3713a[_0xb8b2('0xa3')]=0x3;_0xc3713a[_0xb8b2('0xe3')]=_0xb8b2('0x1a8');_0xc3713a['countnoanswerretry']+=0x1;_0xc3713a['countglobal']+=0x1;ami[_0xb8b2('0x4d')]('custom:agentnoanswer',ut[_0xb8b2('0xe5')](_0x27bda2,_0xb8b2('0x1a9')));_0x2c0f9c[_0xb8b2('0xc8')](_0xc3713a)[_0xb8b2('0xad')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x2c0f9c['checkRetriveMax'](0x3,_0x27bda2,_0x30b807)){if(_0xc3713a['countnoanswerretry']>=_0x30b807['dialNoAnswerMaxRetry']){_0x2c0f9c['createStateFinal'](_0xc3713a,_0x257443,_0x3c3bb0,_0xb8b2('0x1aa'));}else{_0x2c0f9c['stateGlobal'](_0xc3713a,_0x257443,_0x3c3bb0,_0xb8b2('0x1aa'));}}break;case'5':_0x30b807[_0xb8b2('0x61')]+=0x1;_0xc3713a[_0xb8b2('0xa3')]=0x5;_0xc3713a[_0xb8b2('0xe3')]=_0xb8b2('0x1ab');_0xc3713a[_0xb8b2('0xed')]+=0x1;_0xc3713a['countglobal']+=0x1;ami[_0xb8b2('0x4d')](_0xb8b2('0x1ac'),ut[_0xb8b2('0xe5')](_0x27bda2,_0xb8b2('0x1ad')));_0x2c0f9c['createHistory'](_0xc3713a)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x1ae')));if(_0x2c0f9c[_0xb8b2('0x191')](0x5,_0x27bda2,_0x30b807)){if(_0xc3713a[_0xb8b2('0xed')]>=_0x30b807['dialBusyMaxRetry']){_0x2c0f9c[_0xb8b2('0xf6')](_0xc3713a,_0x257443,_0x3c3bb0,_0xb8b2('0x1af'));}else{_0x2c0f9c[_0xb8b2('0x100')](_0xc3713a,_0x257443,_0x3c3bb0,_0xb8b2('0x1af'));}}break;case'8':_0x30b807['outboundCongestionCallsDay']+=0x1;_0xc3713a['state']=0x8;_0xc3713a[_0xb8b2('0xe3')]=_0xb8b2('0x1b0');_0xc3713a['countcongestionretry']+=0x1;_0xc3713a[_0xb8b2('0xeb')]+=0x1;ami[_0xb8b2('0x4d')](_0xb8b2('0x1b1'),ut[_0xb8b2('0xe5')](_0x27bda2,_0xb8b2('0x1b2')));_0x2c0f9c['createHistory'](_0xc3713a)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x1b3')));if(_0x2c0f9c[_0xb8b2('0x191')](0x8,_0x27bda2,_0x30b807)){if(_0xc3713a['countcongestionretry']>=_0x30b807[_0xb8b2('0x1b4')]){_0x2c0f9c['createStateFinal'](_0xc3713a,_0x257443,_0x3c3bb0,_0xb8b2('0x1b5'));}else{_0x2c0f9c['stateGlobal'](_0xc3713a,_0x257443,_0x3c3bb0,'reason\x208\x20congestion');}}break;case'11':_0x30b807[_0xb8b2('0x1b6')]+=0x1;_0xc3713a[_0xb8b2('0xa3')]=0xb;_0xc3713a[_0xb8b2('0xe3')]=_0xb8b2('0x120');_0xc3713a[_0xb8b2('0xf2')]+=0x1;_0xc3713a[_0xb8b2('0xeb')]+=0x1;_0x2c0f9c[_0xb8b2('0xc8')](_0xc3713a)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x1b7')));if(_0x2c0f9c[_0xb8b2('0x191')](0xb,_0x27bda2,_0x30b807)){if(_0xc3713a[_0xb8b2('0xf2')]>=_0x30b807[_0xb8b2('0x122')]){_0x2c0f9c[_0xb8b2('0xf6')](_0xc3713a,_0x257443,_0x3c3bb0,_0xb8b2('0x1b8'));}else{_0x2c0f9c['stateGlobal'](_0xc3713a,_0x257443,_0x3c3bb0,'reason\x2011\x20abandoned');}}break;case'20':_0x30b807[_0xb8b2('0x67')]+=0x1;_0xc3713a[_0xb8b2('0xa3')]=0x14;_0xc3713a[_0xb8b2('0xe3')]=_0xb8b2('0x1b9');_0xc3713a[_0xb8b2('0x192')]+=0x1;_0xc3713a[_0xb8b2('0xeb')]+=0x1;ami[_0xb8b2('0x4d')](_0xb8b2('0x1ba'),ut[_0xb8b2('0xe5')](_0x27bda2,_0xb8b2('0x1bb')));_0x2c0f9c[_0xb8b2('0xc8')](_0xc3713a)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x1bc')));if(_0x2c0f9c[_0xb8b2('0x191')](0x14,_0x27bda2,_0x30b807)){if(_0xc3713a[_0xb8b2('0x192')]>=_0x30b807[_0xb8b2('0x19d')]){_0x2c0f9c[_0xb8b2('0xf6')](_0xc3713a,_0x257443,_0x3c3bb0,_0xb8b2('0x1bd'));}else{_0x2c0f9c[_0xb8b2('0x100')](_0xc3713a,_0x257443,_0x3c3bb0,_0xb8b2('0x1bd'));}}break;default:_0x30b807[_0xb8b2('0x68')]+=0x1;_0xc3713a['state']=0xc;_0xc3713a[_0xb8b2('0xe3')]=_0x3afca0[_0xb8b2('0x10a')];_0x2c0f9c[_0xb8b2('0xc8')](_0xc3713a)[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x1be')));if(_0x2c0f9c[_0xb8b2('0x191')](_0x3afca0[_0xb8b2('0x10a')],_0x27bda2,_0x30b807)){if(_0xc3713a[_0xb8b2('0xed')]+_0xc3713a[_0xb8b2('0xee')]+_0xc3713a[_0xb8b2('0xef')]+_0xc3713a[_0xb8b2('0xf0')]+_0xc3713a['countdropretry']+_0xc3713a[_0xb8b2('0xf2')]+_0xc3713a[_0xb8b2('0xea')]+_0xc3713a[_0xb8b2('0x192')]>=_0x30b807[_0xb8b2('0xf3')]){_0x2c0f9c[_0xb8b2('0x100')](_0xc3713a,_0x257443,_0x3c3bb0,_0x3afca0[_0xb8b2('0x10a')]);}else{_0x2c0f9c[_0xb8b2('0xf6')](_0xc3713a,_0x257443,_0x3c3bb0,_0x3afca0[_0xb8b2('0x10a')]);}}}});};Dialer[_0xb8b2('0x19')][_0xb8b2('0x100')]=function(_0x95576a,_0x4be636,_0x1db294,_0x3e14bc){var _0x5dbf56=new Final(_0x95576a);_0x5dbf56[_0xb8b2('0xa3')]=0xf;_0x5dbf56[_0xb8b2('0xe3')]=_0xb8b2('0x1bf');this[_0xb8b2('0xf6')](_0x5dbf56,_0x4be636,_0x1db294,_0x3e14bc);};Dialer['prototype']['createStateFinal']=function(_0x6cf04f,_0x14e0de,_0x190369,_0x253f87){this[_0xb8b2('0xc6')](_0x6cf04f)['then'](function(){return _0x14e0de(msgResponse(_0xb8b2('0x19f'),_0xb8b2('0xd7'),_0x253f87));})[_0xb8b2('0xad')](function(){return _0x190369(msgResponse(_0xb8b2('0x1c0'),'Failure','contact\x20not\x20moved'));});};Dialer[_0xb8b2('0x19')]['predictive']=function(_0x144c84){var _0x278d15=_0x144c84[_0xb8b2('0x1c1')]/0x64;var _0x575c68=_0x144c84[_0xb8b2('0x65')]/(_0x144c84['outboundDropCallsDayTimeout']+_0x144c84[_0xb8b2('0x5f')]);var _0x4e2158=Math['round'](_0x144c84[_0xb8b2('0x72')]*(_0x144c84[_0xb8b2('0x1c2')]/0x64));var _0x5bb127=Math[_0xb8b2('0x1c3')](_0x144c84['predictiveIntervalAvailable']*(_0x144c84[_0xb8b2('0x1c4')]/0x64));var _0x5ed469=_0x144c84['available']+_0x144c84[_0xb8b2('0x54')];var _0x5d4690=Math[_0xb8b2('0x1c5')](_0x144c84[_0xb8b2('0x75')]*_0x144c84[_0xb8b2('0x76')]*_0x144c84[_0xb8b2('0x6f')]*_0x144c84['predictiveIntervalMultiplicativeFactor']);if(_['isUndefined'](_0x144c84[_0xb8b2('0x28')])){if(!_['isUndefined'](_0x144c84['startPredictive'])){_0x144c84['startPredictive']=undefined;loggerPredictive[_0xb8b2('0x9a')]('[startMethodPredictive][StartProgressive]',_0xb8b2('0x1c6'));}if(!_[_0xb8b2('0x89')](_0x144c84[_0xb8b2('0x94')])){loggerPredictive[_0xb8b2('0x9a')](_0xb8b2('0x1c7'),_0xb8b2('0x1c8'));clearInterval(_0x144c84[_0xb8b2('0x94')]);_0x144c84['handlePredictive']=undefined;}_0x144c84[_0xb8b2('0x28')]=moment()[_0xb8b2('0x7c')](_0xb8b2('0xfa'));loggerPredictive[_0xb8b2('0x82')](_0x144c84['name'],_0xb8b2('0x1c9'),_0x144c84['startProgressive']);this[_0xb8b2('0x155')](_0x144c84,0x1);}else if(ifInterval(_0x144c84[_0xb8b2('0x1ca')],_0x144c84[_0xb8b2('0x28')])){this[_0xb8b2('0x155')](_0x144c84,0x1);loggerPredictiveCalls[_0xb8b2('0x82')](_0xb8b2('0x1cb'),_0x144c84[_0xb8b2('0x28')],_0x144c84[_0xb8b2('0x40')]);_0x144c84['erlangCalls']=0x0;_0x144c84[_0xb8b2('0x6e')]=0x0;}else if(_0x278d15<_0x575c68&&_0x144c84[_0xb8b2('0x1cc')]===_0xb8b2('0x1cd')){freeVariablesPredictive(_0x144c84);loggerPredictive['info']('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0xb8b2('0x1ce'),_0x575c68,_0xb8b2('0x28'),_0x144c84[_0xb8b2('0x40')]);}else if(_0x5d4690<_0x144c84[_0xb8b2('0x6e')]&&_0x144c84[_0xb8b2('0x1cc')]==='dropRate'){freeVariablesPredictive(_0x144c84);loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x1cf'),_0xb8b2('0x1d0'),_0x5d4690,_0xb8b2('0x1d1'),_0x144c84[_0xb8b2('0x6e')],_0xb8b2('0x28'),_0x144c84['name']);}else if(!ifInterval(_0x144c84['dialPredictiveInterval'],_0x144c84[_0xb8b2('0x28')])&&_[_0xb8b2('0x89')](_0x144c84[_0xb8b2('0x78')])&&!_['isUndefined'](_0x144c84['startProgressive'])){_0x144c84[_0xb8b2('0x78')]=moment()[_0xb8b2('0x7c')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xb8b2('0x82')](_0x144c84[_0xb8b2('0x40')],_0xb8b2('0x1d2'),_0x144c84[_0xb8b2('0x78')]);this[_0xb8b2('0xba')](_0x144c84['dialPredictiveInterval'])[_0xb8b2('0xb4')](this[_0xb8b2('0x1d3')](_0x144c84))[_0xb8b2('0xb4')](mergeDataErlangB(_0x144c84))[_0xb8b2('0xb4')](this[_0xb8b2('0x1d4')](_0x144c84))[_0xb8b2('0xad')](loggerCatchPredictive(_0xb8b2('0x1d5'),_0x144c84));}else if(!ifInterval(_0x144c84[_0xb8b2('0x1ca')],_0x144c84[_0xb8b2('0x78')])){_0x144c84[_0xb8b2('0x6e')]=0x0;_0x144c84[_0xb8b2('0x78')]=moment()['format'](_0xb8b2('0xfa'));loggerPredictive[_0xb8b2('0x82')](_0x144c84[_0xb8b2('0x40')],_0xb8b2('0x1d6'),_0x144c84[_0xb8b2('0x78')]);clearInterval(_0x144c84[_0xb8b2('0x94')]);_0x144c84['handlePredictive']=undefined;this[_0xb8b2('0xba')](_0x144c84['dialPredictiveInterval'])['then'](this[_0xb8b2('0x1d3')](_0x144c84))[_0xb8b2('0xb4')](mergeDataErlangB(_0x144c84))[_0xb8b2('0xb4')](this['startMethodPredictive'](_0x144c84))['catch'](loggerCatchPredictive(_0xb8b2('0x1d7'),_0x144c84));}else if(_0x144c84['predictiveIntervalAvailable']&&_0x5ed469<_0x144c84[_0xb8b2('0x72')]-_0x5bb127){freeVariablesPredictive(_0x144c84);loggerPredictive[_0xb8b2('0x82')](_0x144c84[_0xb8b2('0x40')],_0xb8b2('0x1d8'),_0x5ed469,')\x20are\x20less\x20than\x20threshold\x20(',_0x144c84[_0xb8b2('0x72')],'-',_0x5bb127,'=',_0x144c84[_0xb8b2('0x72')]-_0x5bb127,')');}else if(_0x144c84[_0xb8b2('0x72')]&&_0x5ed469>_0x144c84[_0xb8b2('0x72')]+_0x4e2158){freeVariablesPredictive(_0x144c84);loggerPredictive[_0xb8b2('0x82')](_0x144c84[_0xb8b2('0x40')],_0xb8b2('0x1d8'),_0x5ed469,_0xb8b2('0x1d9'),_0x144c84[_0xb8b2('0x72')],'+',_0x4e2158,'=',_0x144c84[_0xb8b2('0x72')]+_0x4e2158,')');}};Dialer[_0xb8b2('0x19')][_0xb8b2('0x1d3')]=function(_0x599184){var _0x2c0c4c=this;return function(_0x55da76){return new BPromise(function(_0x148428,_0x187b80){_[_0xb8b2('0x92')](_0x599184,_0x55da76[0x0]);if(checkGetDataPredictive(_0x55da76[0x0])){var _0x221955=_0x599184[_0xb8b2('0x72')]=_0x599184[_0xb8b2('0x54')]+_0x599184[_0xb8b2('0x50')];var _0x9a91b6=_0x599184[_0xb8b2('0x1ca')]*0x3c;var _0x426117=_0x55da76[0x0][_0xb8b2('0x6b')]+_0x55da76[0x0]['predictiveIntervalAvgHoldtime'];var _0x188203=(_0x55da76[0x0][_0xb8b2('0x69')]+_0x55da76[0x0][_0xb8b2('0x6c')]+_0x55da76[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x55da76[0x0][_0xb8b2('0x73')];_0x599184['predictiveIntervalHitRate']=_0x188203>0x0?_0x188203:0x1;switch(_0x599184[_0xb8b2('0x1cc')]){case _0xb8b2('0x1cd'):var _0x1759d8=_0x599184[_0xb8b2('0x1c1')]/0x64;return _0x2c0c4c[_0xb8b2('0x1da')](_0x221955,_0x9a91b6,_0x426117,_0x188203,_0x1759d8)['then'](function(_0x3bbbbb){return _0x148428(_0x3bbbbb);});case _0xb8b2('0x1db'):var _0x40e9aa=_0x599184[_0xb8b2('0x1c1')]/0x64;return _0x2c0c4c[_0xb8b2('0x1dc')](_0x221955,_0x9a91b6,_0x426117,_0x188203,_0x40e9aa)[_0xb8b2('0xb4')](function(_0x518256){return _0x148428(_0x518256);});default:return _0x187b80(msgResponse(_0xb8b2('0x1dd'),_0xb8b2('0x145'),'Unknown\x20Predictive'));}}else{return _0x187b80(msgResponse(_0xb8b2('0x1dd'),'Failure',_0xb8b2('0x1de')));}});};};Dialer[_0xb8b2('0x19')][_0xb8b2('0x1df')]=function(_0x58a33d){var _0x37938d=this;return function(_0x1f098f){return new BPromise(function(_0x32e02a,_0x17fcf0){_[_0xb8b2('0x92')](_0x58a33d,_0x1f098f[0x0]);if(checkGetDataPredictive(_0x1f098f[0x0])){loggerPredictive['info'](JSON[_0xb8b2('0x49')](_0x1f098f[0x0]));if(_0x58a33d[_0xb8b2('0x1cc')]===_0xb8b2('0x1cd')){return _0x37938d[_0xb8b2('0xc4')](_0x58a33d['id'])[_0xb8b2('0xb4')](function(_0x3298d7){var _0x379e76=_0x58a33d[_0xb8b2('0x51')]-_0x3298d7[0x0]['outboundQueuePauses'];var _0x432587=_0x58a33d[_0xb8b2('0x1ca')]*0x3c;var _0x30d1a7=_0x1f098f[0x0]['predictiveIntervalAvgTalktime']+_0x1f098f[0x0]['predictiveIntervalAvgHoldtime'];var _0x3ef6b4=(_0x1f098f[0x0][_0xb8b2('0x69')]+_0x1f098f[0x0][_0xb8b2('0x6c')]+_0x1f098f[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x1f098f[0x0][_0xb8b2('0x73')];var _0x1e942e=_0x58a33d['dialPredictiveOptimizationPercentage']/0x64;_0x58a33d[_0xb8b2('0x71')]=_0x3298d7[0x0][_0xb8b2('0x1e0')]||0x0;_0x58a33d[_0xb8b2('0x6f')]=_0x3ef6b4>0x0?_0x3ef6b4:0x1;return _0x37938d[_0xb8b2('0x1da')](_0x379e76,_0x432587,_0x30d1a7,_0x3ef6b4,_0x1e942e);})[_0xb8b2('0xb4')](function(_0x373424){return _0x32e02a(_0x373424);})[_0xb8b2('0xad')](function(_0x309653){return _0x17fcf0(msgResponse(_0xb8b2('0x1e1'),_0xb8b2('0x145'),JSON[_0xb8b2('0x49')](_0x309653)));});}if(_0x58a33d['dialPredictiveOptimization']===_0xb8b2('0x1db')){return _0x37938d['getVoiceQueueRtPauses'](_0x58a33d['id'])['then'](function(_0x4f2519){var _0x4bcf98=_0x58a33d['loggedIn']-_0x4f2519[0x0]['outboundQueuePauses'];var _0x19c6a5=_0x58a33d[_0xb8b2('0x1ca')]*0x3c;var _0x51c864=_0x1f098f[0x0][_0xb8b2('0x6b')]+_0x1f098f[0x0][_0xb8b2('0x6a')];var _0x15ccba=(_0x1f098f[0x0][_0xb8b2('0x69')]+_0x1f098f[0x0][_0xb8b2('0x6c')]+_0x1f098f[0x0][_0xb8b2('0x86')])/_0x1f098f[0x0][_0xb8b2('0x73')];var _0x146a56=_0x58a33d['dialPredictiveOptimizationPercentage']/0x64;_0x58a33d[_0xb8b2('0x71')]=_0x4f2519[0x0][_0xb8b2('0x1e0')]||0x0;_0x58a33d['predictiveIntervalHitRate']=_0x15ccba>0x0?_0x15ccba:0x1;return _0x37938d['busyFactor'](_0x4bcf98,_0x19c6a5,_0x51c864,_0x15ccba,_0x146a56);})[_0xb8b2('0xb4')](function(_0x58015f){return _0x32e02a(_0x58015f);})['catch'](function(_0x156c48){return _0x17fcf0(msgResponse(_0xb8b2('0x1e1'),_0xb8b2('0x145'),JSON[_0xb8b2('0x49')](_0x156c48)));});}}else{return _0x17fcf0(msgResponse(_0xb8b2('0x1dd'),_0xb8b2('0x145'),_0xb8b2('0x1de')));}});};};Dialer[_0xb8b2('0x19')][_0xb8b2('0x1d4')]=function(_0x98d655){var _0x14ac97=this;return function(){var _0x52dfa7=0x0;var _0xb8ed7f=Math[_0xb8b2('0x1c5')](_0x98d655[_0xb8b2('0x8f')]*0x3e8);if(_0xb8ed7f>0x0){_0xb8ed7f=_0xb8ed7f<0x64?0x64:_0xb8ed7f;loggerPredictive['info'](_0x98d655[_0xb8b2('0x40')],'one\x20call\x20every:',_0xb8ed7f,'milliseconds');_0x98d655[_0xb8b2('0x94')]=setInterval(function(){_0x14ac97['handlePredictive'](_0x98d655);loggerPredictiveCalls[_0xb8b2('0x82')](_0xb8b2('0x1e2'),_0x52dfa7+=0x1);},_0xb8ed7f);}else{loggerPredictive[_0xb8b2('0x82')](_0x98d655[_0xb8b2('0x40')],_0xb8b2('0x1e3'));}};};Dialer['prototype'][_0xb8b2('0x1e4')]=function(_0x5d2631,_0x245be3){var _0x52f610=this;return function(_0x21c937){if(_[_0xb8b2('0x46')](_0x21c937)){if(_['isNil'](_0x245be3[_0xb8b2('0xd2')])||!_0x245be3[_0xb8b2('0x1e5')]){if(_0x5d2631[_0xb8b2('0x5a')]===_0xb8b2('0x9')){_0x5d2631[_0xb8b2('0x12a')]=_[_0xb8b2('0x89')](_0x5d2631[_0xb8b2('0x12a')])?!![]:_0x5d2631[_0xb8b2('0x12a')];var _0x594cdf=uuid['v4']();_0x52f610[_0xb8b2('0x24')][_0x594cdf]=new Action(_0x5d2631,_0x245be3,_0x594cdf);loggerBooked[_0xb8b2('0x82')](_0xb8b2('0x1e6'),_0x594cdf,_0xb8b2('0x1e7'),JSON['stringify'](_0x5d2631[_0xb8b2('0x12a')]),'Queue:\x20',_0x5d2631[_0xb8b2('0x40')]);if(_0x5d2631[_0xb8b2('0x12a')]){_0x5d2631[_0xb8b2('0x12a')]=![];_0x52f610[_0xb8b2('0x2a')][_0x52f610[_0xb8b2('0x24')][_0x594cdf][_0xb8b2('0xb0')]]=[];ami[_0xb8b2('0xaa')]({'actionid':_0x594cdf,'action':_0xb8b2('0x1e8'),'queue':_0x5d2631['name']})[_0xb8b2('0xad')](function(){_0x52f610[_0xb8b2('0xaf')](_0x5d2631);_0x52f610['rescheduleContact']({'active':![],'ContactId':_0x52f610[_0xb8b2('0x24')][_0x594cdf][_0xb8b2('0xd0')],'ListId':_0x52f610[_0xb8b2('0x24')][_0x594cdf]['ListId'],'VoiceQueueId':_0x52f610[_0xb8b2('0x24')][_0x594cdf][_0xb8b2('0xd3')]||undefined,'CampaignId':_0x52f610[_0xb8b2('0x24')][_0x594cdf][_0xb8b2('0xd4')]||undefined})[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x1e9')));delete _0x52f610[_0xb8b2('0x24')][_0x594cdf];});}else{loggerBooked['info'](_0xb8b2('0x1ea'),JSON[_0xb8b2('0x49')](_0x5d2631['queueStatusComplete']),_0xb8b2('0x1eb'),_0x5d2631['name']);_0x52f610[_0xb8b2('0xaf')](_0x5d2631);_0x52f610[_0xb8b2('0xf7')]({'active':![],'ContactId':_0x52f610['actions'][_0x594cdf]['ContactId'],'ListId':_0x52f610['actions'][_0x594cdf]['ListId'],'VoiceQueueId':_0x52f610[_0xb8b2('0x24')][_0x594cdf][_0xb8b2('0xd3')]||undefined,'CampaignId':_0x52f610[_0xb8b2('0x24')][_0x594cdf]['CampaignId']||undefined})[_0xb8b2('0xad')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x52f610[_0xb8b2('0x24')][_0x594cdf];}}else{return _0x52f610['actionOriginate'](_0x5d2631,_0x245be3);}}else{if(getDiff(_0x245be3[_0xb8b2('0x1ec')])<_0x5d2631[_0xb8b2('0x1ed')]*0x3c){if(_0x245be3[_0xb8b2('0x1ee')]&&!_0x245be3[_0xb8b2('0x1ee')][_0xb8b2('0x1ef')]){_0x52f610[_0xb8b2('0x1d')]['run'](_0x245be3['id'])[_0xb8b2('0x135')](function(){_0x52f610[_0xb8b2('0xaf')](_0x5d2631);});}else{_0x52f610[_0xb8b2('0xbe')]({'active':![]},_0x245be3['id'],0x1)['finally'](function(){_0x52f610[_0xb8b2('0xaf')](_0x5d2631);});}}else{_0x5d2631[_0xb8b2('0x1f0')]+=0x1;_0x52f610[_0xb8b2('0xaf')](_0x5d2631);if(_0x5d2631[_0xb8b2('0x1f1')]){_0x52f610[_0xb8b2('0xf7')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x245be3[_0xb8b2('0xd0')],'ListId':_0x245be3[_0xb8b2('0xd1')],'VoiceQueueId':_0x245be3[_0xb8b2('0xd3')]||undefined,'CampaignId':_0x245be3['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][dialRecallInQueue]'));_0x52f610['createHistory'](createObjHistory(_0x5d2631,_0x245be3,_0xb8b2('0x1f2'),0x17,'RecallInQueue'))[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0x1f3')));}else{_0x52f610[_0xb8b2('0xce')](createObjHistory(_0x5d2631,_0x245be3,'RECALLFAILEDTIMEOUT',0x16,'RecallFailedTimeout'),_0xb8b2('0x1f4'),'[Originate][HistoryRecallClose]');}}}}else{_0x5d2631['outboundBlacklistCallsDay']+=0x1;_0x52f610[_0xb8b2('0xce')](createObjHistory(_0x5d2631,_0x245be3,'BLACKLIST',0xd,_0xb8b2('0x1f5')),_0xb8b2('0x1f6'),_0xb8b2('0x1f7'));throw _0xb8b2('0x1f8');}};};Dialer[_0xb8b2('0x19')][_0xb8b2('0x159')]=function(_0x1f5646){var _0x3c3d0c=this;var _0x2e4f06=_0x1f5646[_0xb8b2('0x1f9')]-_0x1f5646[_0xb8b2('0x74')]-_0x1f5646['temp'];emitCampaignSummary(_0x1f5646);if(_0x2e4f06>0x0){if(_0x2e4f06>this[_0xb8b2('0x22')]){_0x2e4f06=this[_0xb8b2('0x22')];}_0x1f5646['temp']+=_0x2e4f06;this['getContactDialerIvr'](_0x1f5646['id'],_0x2e4f06,_0x1f5646[_0xb8b2('0x1fa')],_0x1f5646)[_0xb8b2('0xb4')](function(_0x20ec8f){_0x1f5646[_0xb8b2('0xc1')]-=_0x2e4f06;_0x1f5646[_0xb8b2('0xc1')]=_0x1f5646[_0xb8b2('0xc1')]>0x0?_0x1f5646[_0xb8b2('0xc1')]:0x0;if(!checkContactEmpty(_0x20ec8f)){_0x1f5646['message']='AVAILABLE_CONTACTS_FINISHED';logger['info'](_0xb8b2('0x1fb')+_0x1f5646[_0xb8b2('0x40')]);}else{_0x1f5646[_0xb8b2('0x74')]+=_0x20ec8f[_0xb8b2('0x147')];_0x1f5646['message']=_0xb8b2('0x1fc');for(var _0x3cff33=0x0;_0x3cff33<_0x20ec8f[_0xb8b2('0x147')];_0x3cff33+=0x1){_0x1f5646[_0xb8b2('0x1fd')]+=0x1;if(_[_0xb8b2('0xdc')](_0x20ec8f[_0x3cff33])||_['isNil'](_0x20ec8f[_0x3cff33][_0xb8b2('0x166')])||_[_0xb8b2('0xdc')](_0x20ec8f[_0x3cff33]['Contact']['phone'])){_0x3c3d0c[_0xb8b2('0xcc')](_0xb8b2('0x1fe'),_0x1f5646,_0x20ec8f[_0x3cff33]);}else{_0x3c3d0c[_0xb8b2('0xb8')](_[_0xb8b2('0xcf')](_0x20ec8f[_0x3cff33],[_0xb8b2('0xd4'),_0xb8b2('0x1ff')]))[_0xb8b2('0xb4')](_0x3c3d0c[_0xb8b2('0x1e4')](_0x1f5646,_0x20ec8f[_0x3cff33]))[_0xb8b2('0xad')](_0x3c3d0c[_0xb8b2('0xcb')]('[actionOriginateIvr]\x20',_0x1f5646));}}}})['catch'](loggerGetContactDialer(_0xb8b2('0x200'),_0x1f5646,_0x2e4f06));}};Dialer['prototype'][_0xb8b2('0x155')]=function(_0xc1a924,_0x53f138){var _0x2975e5=this;var _0x41da7d=[];var _0x377af1=_0x53f138>=0x1?_0x53f138:0x1;if(_0xc1a924['dialMethod']===_0xb8b2('0x9')){_0x377af1=0x1;}var _0x39f298=Math[_0xb8b2('0x1c5')](_0xc1a924[_0xb8b2('0x50')]*_0x377af1)-_0xc1a924['originated']-_0xc1a924[_0xb8b2('0xc1')];emitVoiceQueueSummary(_0xc1a924);if(_0xc1a924['dialLimitQueue']>0x0){var _0xaa3867=_0xc1a924[_0xb8b2('0x201')]-_0xc1a924[_0xb8b2('0x74')]-_0xc1a924[_0xb8b2('0x54')]-_0xc1a924['temp']-_0xc1a924[_0xb8b2('0x52')];if(_0x39f298>_0xaa3867){_0x39f298=_0xaa3867;}}if(_0x39f298>0x0){if(_0xc1a924[_0xb8b2('0x5a')]===_0xb8b2('0x9')){_0x39f298=0x1;}if(_0x39f298>this[_0xb8b2('0x22')]){_0x39f298=this['maxNumberOriginate'];}_0xc1a924['temp']+=_0x39f298;for(var _0x21811d in this[_0xb8b2('0x20')]){if(typeof this[_0xb8b2('0x20')][_0x21811d]!==_0xb8b2('0xa9')){if(this['agents'][_0x21811d][_0xb8b2('0xa3')]===_0xb8b2('0x202')&&this[_0xb8b2('0x20')][_0x21811d][_0xb8b2('0xab')]===_0xb8b2('0x203')){_0x41da7d['push'](this[_0xb8b2('0x20')][_0x21811d]['id']);}}}this[_0xb8b2('0xc0')](_0xc1a924['id'],_0x41da7d,_0x39f298,_0xc1a924[_0xb8b2('0x1fa')],_0xc1a924)[_0xb8b2('0xb4')](function(_0x1504f5){_0xc1a924[_0xb8b2('0xc1')]-=_0x39f298;_0xc1a924[_0xb8b2('0xc1')]=_0xc1a924[_0xb8b2('0xc1')]>0x0?_0xc1a924[_0xb8b2('0xc1')]:0x0;if(!checkContactEmpty(_0x1504f5)){_0x2975e5[_0xb8b2('0xb2')](_0xc1a924)[_0xb8b2('0xb4')](sendMessageReschedule(_0xc1a924))[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0xb5')));}else{_0xc1a924[_0xb8b2('0x74')]+=_0x1504f5['length'];_0xc1a924[_0xb8b2('0x3e')]=_0xc1a924[_0xb8b2('0x5a')]==='booked'?_0xb8b2('0x16d'):_0xb8b2('0x1fc');for(var _0x52e24=0x0;_0x52e24<_0x1504f5[_0xb8b2('0x147')];_0x52e24+=0x1){if(_[_0xb8b2('0xdc')](_0x1504f5[_0x52e24])||_[_0xb8b2('0xdc')](_0x1504f5[_0x52e24][_0xb8b2('0x166')])||_['isNil'](_0x1504f5[_0x52e24][_0xb8b2('0x166')]['phone'])){_0x2975e5[_0xb8b2('0xcc')](_0xb8b2('0x1fe'),_0xc1a924,_0x1504f5[_0x52e24]);}else{_0x2975e5[_0xb8b2('0xb6')](_['pick'](_0x1504f5[_0x52e24],['VoiceQueueId','Contact.phone']))[_0xb8b2('0xb4')](_0x2975e5['checkContactBlack'](_0xc1a924,_0x1504f5[_0x52e24]))[_0xb8b2('0xad')](_0x2975e5[_0xb8b2('0xcb')](_0xb8b2('0x1fe'),_0xc1a924));}}}})[_0xb8b2('0xad')](loggerGetContactDialer(_0xb8b2('0x204'),_0xc1a924,_0x39f298));}};Dialer[_0xb8b2('0x19')][_0xb8b2('0x94')]=function(_0x2369d8){if(_0x2369d8[_0xb8b2('0x201')]>0x0){var _0x5af0a3=_0x2369d8[_0xb8b2('0x201')]-_0x2369d8[_0xb8b2('0x74')]-_0x2369d8['talking'];if(_0x5af0a3>0x0){this[_0xb8b2('0x205')](_0x2369d8);}else{loggerPredictiveCalls[_0xb8b2('0x82')](_0xb8b2('0x206'));}}else{this[_0xb8b2('0x205')](_0x2369d8);}};Dialer[_0xb8b2('0x19')][_0xb8b2('0x205')]=function(_0x3a6273){var _0x34dd41=this;var _0x7a3382=[];_0x3a6273['originated']+=0x1;for(var _0x26755e in this[_0xb8b2('0x20')]){if(typeof this[_0xb8b2('0x20')][_0x26755e]!=='undefined'){if(this[_0xb8b2('0x20')][_0x26755e][_0xb8b2('0xa3')]===_0xb8b2('0x202')&&this[_0xb8b2('0x20')][_0x26755e][_0xb8b2('0xab')]===_0xb8b2('0x203')){_0x7a3382[_0xb8b2('0x129')](this['agents'][_0x26755e]['id']);}}}this['getContactDialer'](_0x3a6273['id'],_0x7a3382,0x1,_0x3a6273['dialOrderByScheduledAt'],_0x3a6273)[_0xb8b2('0xb4')](function(_0x149653){if(!checkContactEmpty(_0x149653)){checkContactLowerLimitOriginate(_0x3a6273,0x1,0x0);_0x34dd41[_0xb8b2('0xb2')](_0x3a6273)[_0xb8b2('0xb4')](sendMessageReschedule(_0x3a6273))[_0xb8b2('0xad')](loggerCatch(_0xb8b2('0xb5')));}else{_0x3a6273[_0xb8b2('0x3e')]=_0xb8b2('0x1fc');if(_['isNil'](_0x149653[0x0])||_[_0xb8b2('0xdc')](_0x149653[0x0]['Contact'])||_[_0xb8b2('0xdc')](_0x149653[0x0][_0xb8b2('0x166')]['phone'])){_0x34dd41['emptyContact']('[actionOriginate]\x20',_0x3a6273,_0x149653[0x0]);}else{_0x34dd41['checkIsBlackList'](_['pick'](_0x149653[0x0],[_0xb8b2('0xd3'),_0xb8b2('0x1ff')]))[_0xb8b2('0xb4')](_0x34dd41[_0xb8b2('0x1e4')](_0x3a6273,_0x149653[0x0]))[_0xb8b2('0xad')](_0x34dd41[_0xb8b2('0xcb')](_0xb8b2('0x207'),_0x3a6273));}}})[_0xb8b2('0xad')](loggerGetContactDialer(_0xb8b2('0x208'),_0x3a6273,0x1));emitVoiceQueueSummary(_0x3a6273);};Dialer[_0xb8b2('0x19')][_0xb8b2('0x1da')]=function(_0x454d66,_0x1336f3,_0x4b1b0c,_0x18052b,_0x5cafb5,_0x3aeca9){loggerPredictive[_0xb8b2('0x82')]('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0xb8b2('0x82')]('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',_0x454d66);loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x209'),_0x1336f3);loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x20a'),_0x4b1b0c);loggerPredictive[_0xb8b2('0x82')]('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',_0x18052b);loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x20b'),_0x5cafb5);loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x88'));return new BPromise(function(_0x4d6099,_0x215fc2){if(_0x454d66<=0x0||isNaN(_0x454d66)){return _0x215fc2(msgResponse(_0xb8b2('0x20c'),_0xb8b2('0x48'),_0xb8b2('0x20d')+_0x454d66));}if(_0x4b1b0c<=0x0||isNaN(_0x4b1b0c)){return _0x215fc2(msgResponse('[abandonmentRate]','Error',_0xb8b2('0x20e')+_0x4b1b0c));}if(_0x18052b<=0x0||isNaN(_0x18052b)){return _0x215fc2(msgResponse(_0xb8b2('0x20c'),_0xb8b2('0x48'),'p\x20=\x20'+_0x18052b));}if(_0x1336f3<=0x0||isNaN(_0x1336f3)){return _0x215fc2(msgResponse(_0xb8b2('0x20c'),_0xb8b2('0x48'),_0xb8b2('0x20f')+_0x1336f3));}if(_0x5cafb5<=0x0||isNaN(_0x5cafb5)){return _0x215fc2(msgResponse(_0xb8b2('0x20c'),'Error',_0xb8b2('0x210')+_0x5cafb5));}_0x3aeca9=_0x3aeca9||0x0;var _0xfc876f=0x1/_0x4b1b0c;var _0x37bc7a=0x0;var _0x475b9a=0x0;var _0x374206=0x0;var _0x384999=0x0;for(var _0x4f811f=0x0;_0x374206<_0x5cafb5;_0x4f811f+=0x1){_0x475b9a=_0x4f811f/_0x1336f3;_0x37bc7a=(_0x18052b*_0x475b9a+_0x3aeca9)/_0xfc876f;_0x374206=erlangb(_0x37bc7a,_0x454d66);_0x384999=_0x37bc7a/_0x454d66*(0x1-erlangb(_0x37bc7a,_0x454d66));}return _0x4d6099({'erlangCalls':_0x4f811f,'erlangCallToSecond':_0x1336f3/_0x4f811f,'erlangAbandonmentRate':_0x374206,'erlangBusyFactor':_0x384999});});};Dialer[_0xb8b2('0x19')][_0xb8b2('0x1dc')]=function(_0x3d9293,_0x40a0fd,_0xb72c3b,_0x445b9d,_0x1564fc,_0x2b2688){loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x211'));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',_0x3d9293);loggerPredictive[_0xb8b2('0x82')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x40a0fd);loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x20a'),_0xb72c3b);loggerPredictive[_0xb8b2('0x82')](_0xb8b2('0x212'),_0x445b9d);loggerPredictive[_0xb8b2('0x82')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1564fc);loggerPredictive['info'](_0xb8b2('0x88'));return new BPromise(function(_0x2d3da9,_0x48230d){if(_0x3d9293<=0x0||isNaN(_0x3d9293)){return _0x48230d(msgResponse('[busyFactor]',_0xb8b2('0x48'),_0xb8b2('0x20d')+_0x3d9293));}if(_0xb72c3b<=0x0||isNaN(_0xb72c3b)){return _0x48230d(msgResponse(_0xb8b2('0x213'),_0xb8b2('0x48'),_0xb8b2('0x20e')+_0xb72c3b));}if(_0x445b9d<=0x0||isNaN(_0x445b9d)){return _0x48230d(msgResponse(_0xb8b2('0x213'),_0xb8b2('0x48'),_0xb8b2('0x214')+_0x445b9d));}if(_0x40a0fd<=0x0||isNaN(_0x40a0fd)){return _0x48230d(msgResponse(_0xb8b2('0x213'),'Error','interval\x20=\x20'+_0x40a0fd));}if(_0x1564fc<=0x0||isNaN(_0x1564fc)){return _0x48230d(msgResponse(_0xb8b2('0x213'),_0xb8b2('0x48'),_0xb8b2('0x215')+_0x1564fc));}_0x2b2688=_0x2b2688||0x0;var _0x560927=0x1/_0xb72c3b;var _0xf1eebd=0x0;var _0x5d9b30=0x0;var _0x29e963=0x0;var _0x120ef0=0x0;for(var _0x4babc8=0x0;_0x120ef0<_0x1564fc;_0x4babc8+=0x1){_0x5d9b30=_0x4babc8/_0x40a0fd;_0xf1eebd=(_0x445b9d*_0x5d9b30+_0x2b2688)/_0x560927;_0x29e963=erlangb(_0xf1eebd,_0x3d9293);_0x120ef0=_0xf1eebd/_0x3d9293*(0x1-erlangb(_0xf1eebd,_0x3d9293));}return _0x2d3da9({'erlangCalls':_0x4babc8,'erlangCallToSecond':_0x40a0fd/_0x4babc8,'erlangAbandonmentRate':_0x29e963,'erlangBusyFactor':_0x120ef0});});};module[_0xb8b2('0x216')]=Dialer;
\ No newline at end of file
index 2be914f..bb5eaa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc96d=['campaigntype','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','diff','seconds','scheduledat','type'];(function(_0x46cc04,_0x5a6bef){var _0x400c05=function(_0x885527){while(--_0x885527){_0x46cc04['push'](_0x46cc04['shift']());}};_0x400c05(++_0x5a6bef);}(_0xc96d,0x11f));var _0xdc96=function(_0x5074ef,_0x46cecf){_0x5074ef=_0x5074ef-0x0;var _0x2be1ba=_0xc96d[_0x5074ef];return _0x2be1ba;};'use strict';var util=require('util');var _=require(_0xdc96('0x0'));var moment=require(_0xdc96('0x1'));function getSeconds(_0x2bd346,_0x156721){var _0xb22901=moment(_0x2bd346)[_0xdc96('0x2')](0x0);var _0x5f406e=moment(_0x156721)[_0xdc96('0x2')](0x0);return _0xb22901[_0xdc96('0x3')](_0x5f406e,_0xdc96('0x4'));}function QueueCallerAbandon(_0x39075b,_0x24a801){this[_0xdc96('0x5')]=_0x39075b[_0xdc96('0x5')];this[_0xdc96('0x6')]=_0x39075b[_0xdc96('0x6')];this[_0xdc96('0x7')]=_0x39075b[_0xdc96('0x6')]==='outbound'?'queue':_0x39075b[_0xdc96('0x6')];this['countbusyretry']=_0x39075b[_0xdc96('0x8')];this[_0xdc96('0x9')]=_0x39075b[_0xdc96('0x9')];this[_0xdc96('0xa')]=_0x39075b[_0xdc96('0xa')];this['countglobal']=_0x39075b[_0xdc96('0x8')]+_0x39075b[_0xdc96('0x9')]+_0x39075b['countnoanswerretry']+_0x39075b[_0xdc96('0xb')]+_0x39075b[_0xdc96('0xc')]+_0x39075b[_0xdc96('0xd')]+_0x39075b[_0xdc96('0xe')]+_0x39075b[_0xdc96('0xf')];this['countnosuchnumberretry']=_0x39075b['countnosuchnumberretry'];this[_0xdc96('0xc')]=_0x39075b[_0xdc96('0xc')];this[_0xdc96('0xd')]=_0x39075b[_0xdc96('0xd')];this[_0xdc96('0xe')]=_0x39075b[_0xdc96('0xe')];this[_0xdc96('0xf')]=_0x39075b[_0xdc96('0xf')];this[_0xdc96('0x10')]=_0x24a801[_0xdc96('0x10')];this[_0xdc96('0x11')]=_0x39075b[_0xdc96('0x12')];this[_0xdc96('0x13')]=_0x39075b['number'];this['starttime']=_0x39075b[_0xdc96('0x14')];this['responsetime']=_0x39075b[_0xdc96('0x15')];this[_0xdc96('0x16')]=_0x39075b['droptime'];this[_0xdc96('0x17')]=this[_0xdc96('0x16')];this[_0xdc96('0x18')]=getSeconds(_0x39075b['responsetime'],_0x39075b[_0xdc96('0x14')]);this[_0xdc96('0x19')]=getSeconds(this[_0xdc96('0x16')],_0x39075b[_0xdc96('0x15')]);this[_0xdc96('0x1a')]=0x0;this[_0xdc96('0x1b')]=_0x24a801[_0xdc96('0x1b')];this[_0xdc96('0x1c')]=_0x24a801[_0xdc96('0x1d')];this[_0xdc96('0x1e')]=_0x24a801['reason'];this['callback']=_0x39075b[_0xdc96('0x1f')];this[_0xdc96('0x20')]=_0x39075b[_0xdc96('0x20')];this['callbackat']=_0x39075b['callbackat'];this[_0xdc96('0x21')]=_0x39075b[_0xdc96('0x21')];this[_0xdc96('0x22')]=_0x39075b[_0xdc96('0x22')];this[_0xdc96('0x23')]=_0x39075b['ListId'];this[_0xdc96('0x24')]=_0x39075b[_0xdc96('0x24')];this[_0xdc96('0x25')]=_0x39075b[_0xdc96('0x25')];this[_0xdc96('0x26')]=_0x39075b[_0xdc96('0x26')];this[_0xdc96('0x27')]=_0x39075b[_0xdc96('0x27')]||'';this[_0xdc96('0x28')]=_0x39075b[_0xdc96('0x28')]||'';}module[_0xdc96('0x29')]=QueueCallerAbandon;
\ No newline at end of file
+var _0xb09b=['CampaignId','originatecalleridnum','lodash','diff','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countnosuchnumberretry','countagentrejectretry','uniqueid','calleridname','name','number','responsetime','droptime','endtime','ringtime','starttime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x47077d,_0x16ad9f){var _0x2cf416=function(_0x500e2a){while(--_0x500e2a){_0x47077d['push'](_0x47077d['shift']());}};_0x2cf416(++_0x16ad9f);}(_0xb09b,0x1af));var _0xbb09=function(_0x32ad69,_0x518f0c){_0x32ad69=_0x32ad69-0x0;var _0x1062ef=_0xb09b[_0x32ad69];return _0x1062ef;};'use strict';var util=require('util');var _=require(_0xbb09('0x0'));var moment=require('moment');function getSeconds(_0x1122b1,_0x403af3){var _0x69b7=moment(_0x1122b1)['milliseconds'](0x0);var _0x8e48ca=moment(_0x403af3)['milliseconds'](0x0);return _0x69b7[_0xbb09('0x1')](_0x8e48ca,'seconds');}function QueueCallerAbandon(_0x3660e6,_0xe5286){this[_0xbb09('0x2')]=_0x3660e6[_0xbb09('0x2')];this[_0xbb09('0x3')]=_0x3660e6[_0xbb09('0x3')];this[_0xbb09('0x4')]=_0x3660e6['type']===_0xbb09('0x5')?_0xbb09('0x6'):_0x3660e6[_0xbb09('0x3')];this[_0xbb09('0x7')]=_0x3660e6[_0xbb09('0x7')];this['countcongestionretry']=_0x3660e6[_0xbb09('0x8')];this['countnoanswerretry']=_0x3660e6[_0xbb09('0x9')];this['countglobal']=_0x3660e6[_0xbb09('0x7')]+_0x3660e6['countcongestionretry']+_0x3660e6[_0xbb09('0x9')]+_0x3660e6['countnosuchnumberretry']+_0x3660e6[_0xbb09('0xa')]+_0x3660e6[_0xbb09('0xb')]+_0x3660e6[_0xbb09('0xc')]+_0x3660e6['countagentrejectretry'];this[_0xbb09('0xd')]=_0x3660e6[_0xbb09('0xd')];this['countdropretry']=_0x3660e6[_0xbb09('0xa')];this[_0xbb09('0xb')]=_0x3660e6[_0xbb09('0xb')];this[_0xbb09('0xc')]=_0x3660e6[_0xbb09('0xc')];this[_0xbb09('0xe')]=_0x3660e6['countagentrejectretry'];this[_0xbb09('0xf')]=_0xe5286[_0xbb09('0xf')];this[_0xbb09('0x10')]=_0x3660e6[_0xbb09('0x11')];this['calleridnum']=_0x3660e6[_0xbb09('0x12')];this['starttime']=_0x3660e6['starttime'];this[_0xbb09('0x13')]=_0x3660e6[_0xbb09('0x13')];this[_0xbb09('0x14')]=_0x3660e6[_0xbb09('0x14')];this[_0xbb09('0x15')]=this[_0xbb09('0x14')];this[_0xbb09('0x16')]=getSeconds(_0x3660e6[_0xbb09('0x13')],_0x3660e6[_0xbb09('0x17')]);this[_0xbb09('0x18')]=getSeconds(this[_0xbb09('0x14')],_0x3660e6['responsetime']);this[_0xbb09('0x19')]=0x0;this[_0xbb09('0x6')]=_0xe5286[_0xbb09('0x6')];this[_0xbb09('0x1a')]=_0xe5286[_0xbb09('0x1b')];this[_0xbb09('0x1c')]=_0xe5286[_0xbb09('0x1c')];this[_0xbb09('0x1d')]=_0x3660e6['callback'];this['callbackuniqueid']=_0x3660e6[_0xbb09('0x1e')];this[_0xbb09('0x1f')]=_0x3660e6['callbackat'];this[_0xbb09('0x20')]=_0x3660e6[_0xbb09('0x20')];this[_0xbb09('0x21')]=_0x3660e6[_0xbb09('0x21')];this[_0xbb09('0x22')]=_0x3660e6[_0xbb09('0x22')];this[_0xbb09('0x23')]=_0x3660e6['UserId'];this[_0xbb09('0x24')]=_0x3660e6[_0xbb09('0x24')];this[_0xbb09('0x25')]=_0x3660e6[_0xbb09('0x25')];this[_0xbb09('0x26')]=_0x3660e6['originatecalleridnum']||'';this['originatecalleridname']=_0x3660e6['originatecalleridname']||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
index f735e62..716af6a 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(_0x3e0796,_0x4dff83){var _0x27810c=function(_0x1d9633){while(--_0x1d9633){_0x3e0796['push'](_0x3e0796['shift']());}};_0x27810c(++_0x4dff83);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'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(_0x53fab6,_0x4ef76a){var _0x29e9c4=function(_0x154c75){while(--_0x154c75){_0x53fab6['push'](_0x53fab6['shift']());}};_0x29e9c4(++_0x4ef76a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xa9e0[_0x376b45];return _0x2341b3;};'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 4acf56c..ca94a46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5c4=['send','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','checkAfterSend','checkTrunk','Trunk\x20Reachable','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','execute','format','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','execOriginate','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','uuid','moment','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./channel','./action','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','syncVarSet','newexten','syncNewExten','syncFaxStatus','receivefax','syncReceiveFax','syncOriginateResponse','from-voip-provider','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','prototype','variable','hasOwnProperty','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','then','error','\x20notify\x20','stringify','catch','\x20receiveFax\x20','merge','pick','response','reason','update','AttachmentId','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','finally','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxstatus','SUCCESS','SENDING\x20FAILED:\x20','SENDING\x20FAILED'];(function(_0x3747ae,_0x408e61){var _0x339035=function(_0x83be87){while(--_0x83be87){_0x3747ae['push'](_0x3747ae['shift']());}};_0x339035(++_0x408e61);}(_0xe5c4,0x1ed));var _0x4e5c=function(_0x10cd1d,_0xe35e2c){_0x10cd1d=_0x10cd1d-0x0;var _0x5e35dd=_0xe5c4[_0x10cd1d];return _0x5e35dd;};'use strict';var util=require(_0x4e5c('0x0'));var _=require(_0x4e5c('0x1'));var BPromise=require('bluebird');var uuid=require(_0x4e5c('0x2'));var moment=require(_0x4e5c('0x3'));var path=require('path');var tiff2pdf=require('tiff2pdf');var gs=require(_0x4e5c('0x4'));var logger=require(_0x4e5c('0x5'))(_0x4e5c('0x6'));var ami=require(_0x4e5c('0x7'));var rpcDb=require(_0x4e5c('0x8'));var Channel=require(_0x4e5c('0x9'));var ut=require('./util/util');var Action=require(_0x4e5c('0xa'));var faxAccount=require('../rpc/faxAccount');var attachment=require(_0x4e5c('0xb'));var faxMessage=require(_0x4e5c('0xc'));function Fax(_0x5270fb){this[_0x4e5c('0xd')]={};this['faxAccounts']=_0x5270fb[_0x4e5c('0xe')];this[_0x4e5c('0xf')]=_0x5270fb[_0x4e5c('0xf')];this[_0x4e5c('0x10')]={};ami['on'](_0x4e5c('0x11'),this[_0x4e5c('0x12')][_0x4e5c('0x13')](this));ami['on']('varset',this[_0x4e5c('0x14')]['bind'](this));ami['on']('newstate',this['syncNewState'][_0x4e5c('0x13')](this));ami['on'](_0x4e5c('0x15'),this[_0x4e5c('0x16')][_0x4e5c('0x13')](this));ami['on']('faxstatus',this[_0x4e5c('0x17')][_0x4e5c('0x13')](this));ami['on'](_0x4e5c('0x18'),this[_0x4e5c('0x19')][_0x4e5c('0x13')](this));ami['on']('hangup',this['syncHangup'][_0x4e5c('0x13')](this));ami['on']('originateresponse',this[_0x4e5c('0x1a')][_0x4e5c('0x13')](this));}Fax['prototype']['syncNewchannel']=function(_0x635c72){if(_0x635c72['context']===_0x4e5c('0x1b')){for(var _0x2bc2cb in this['faxAccounts']){if(this['faxAccounts']['hasOwnProperty'](_0x2bc2cb)){if(_0x635c72['exten']===this[_0x4e5c('0xe')][_0x2bc2cb][_0x4e5c('0x1c')]){this['channels'][_0x635c72[_0x4e5c('0x1d')]]={};this['channels'][_0x635c72[_0x4e5c('0x1d')]]['channel']=_0x635c72[_0x4e5c('0x1e')];this[_0x4e5c('0xd')][_0x635c72['uniqueid']]['id']=this['faxAccounts'][_0x2bc2cb]['id'];this['channels'][_0x635c72[_0x4e5c('0x1d')]][_0x4e5c('0x1f')]=this[_0x4e5c('0xe')][_0x2bc2cb][_0x4e5c('0x1f')];logger['info'](_0x635c72[_0x4e5c('0x1d')],'\x20syncNewchannel\x20');}}}}if(this[_0x4e5c('0x10')][_0x635c72['uniqueid']]){this[_0x4e5c('0xd')][_0x635c72[_0x4e5c('0x1d')]]={};this[_0x4e5c('0xd')][_0x635c72['uniqueid']][_0x4e5c('0x1e')]=_0x635c72[_0x4e5c('0x1e')];logger[_0x4e5c('0x20')](_0x635c72['uniqueid'],_0x4e5c('0x21'));}};Fax[_0x4e5c('0x22')][_0x4e5c('0x14')]=function(_0x1ee20e){if(this[_0x4e5c('0xd')][_0x1ee20e[_0x4e5c('0x1d')]]){for(var _0x51c8ad in _0x1ee20e[_0x4e5c('0x23')]){if(_0x1ee20e['variable'][_0x4e5c('0x24')](_0x51c8ad)){this[_0x4e5c('0xd')][_0x1ee20e['uniqueid']][_0x51c8ad]=_0x1ee20e[_0x4e5c('0x25')];}}}};Fax[_0x4e5c('0x22')]['syncNewState']=function(_0xd7ac64){if(this[_0x4e5c('0xd')][_0xd7ac64[_0x4e5c('0x1d')]]){this[_0x4e5c('0xd')][_0xd7ac64[_0x4e5c('0x1d')]][_0x4e5c('0x26')]=_0xd7ac64[_0x4e5c('0x26')];this[_0x4e5c('0xd')][_0xd7ac64['uniqueid']][_0x4e5c('0x27')]=_0xd7ac64[_0x4e5c('0x27')];}};Fax[_0x4e5c('0x22')][_0x4e5c('0x16')]=function(_0x224348){if(this[_0x4e5c('0xd')][_0x224348[_0x4e5c('0x1d')]]){for(var _0x45b908 in _0x224348['variable']){if(_0x224348[_0x4e5c('0x23')][_0x4e5c('0x24')](_0x45b908)){this[_0x4e5c('0xd')][_0x224348[_0x4e5c('0x1d')]][_0x45b908]=_0x224348[_0x4e5c('0x25')];}}}};Fax['prototype'][_0x4e5c('0x17')]=function(_0x4c15ad){if(this[_0x4e5c('0xd')][_0x4c15ad['uniqueid']]){this['channels'][_0x4c15ad[_0x4e5c('0x1d')]]['operation']=_0x4c15ad[_0x4e5c('0x28')];this[_0x4e5c('0xd')][_0x4c15ad[_0x4e5c('0x1d')]]['status']=_0x4c15ad[_0x4e5c('0x29')];this[_0x4e5c('0xd')][_0x4c15ad[_0x4e5c('0x1d')]][_0x4e5c('0x1c')]=_0x4c15ad[_0x4e5c('0x1c')];this['channels'][_0x4c15ad[_0x4e5c('0x1d')]]['filename']=_0x4c15ad[_0x4e5c('0x2a')];logger[_0x4e5c('0x20')](_0x4c15ad[_0x4e5c('0x1d')],_0x4e5c('0x2b'));}};Fax[_0x4e5c('0x22')][_0x4e5c('0x19')]=function(_0x2e5276){var _0x10b70a=this;if(this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]]){var _0x23f606=this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]]['id'];this[_0x4e5c('0xd')][_0x2e5276['uniqueid']][_0x4e5c('0x2c')]=_0x2e5276['remotestationid'];this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]][_0x4e5c('0x2d')]=_0x2e5276[_0x4e5c('0x2d')];this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]][_0x4e5c('0x1c')]=_0x2e5276[_0x4e5c('0x1c')];this[_0x4e5c('0xd')][_0x2e5276['uniqueid']][_0x4e5c('0x2e')]=_0x2e5276[_0x4e5c('0x2e')];this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]][_0x4e5c('0x2f')]=_0x2e5276[_0x4e5c('0x2f')];this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]][_0x4e5c('0x2a')]=_0x2e5276[_0x4e5c('0x2a')];this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]]['calleridnum']=_0x2e5276[_0x4e5c('0x30')];if(this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]]['pagestransferred']>0x0){tiff2pdf(_0x2e5276[_0x4e5c('0x2a')],_0x4e5c('0x31'),function(_0x522e07){logger[_0x4e5c('0x20')](_0x2e5276['uniqueid'],_0x4e5c('0x32'),_0x522e07[_0x4e5c('0x33')]);attachment[_0x4e5c('0x34')]({'name':path['parse'](_0x2e5276['filename'])['name'],'basename':path[_0x4e5c('0x35')](_0x2e5276[_0x4e5c('0x2a')])[_0x4e5c('0x1f')]+_0x4e5c('0x36'),'type':_0x4e5c('0x37')})[_0x4e5c('0x38')](function(_0x552a33){faxAccount['notify'](_0x23f606,{'from':_0x2e5276[_0x4e5c('0x30')],'mapKey':_0x4e5c('0x6'),'body':path[_0x4e5c('0x35')](_0x2e5276['filename'])[_0x4e5c('0x1f')]+_0x4e5c('0x36'),'AttachmentId':_0x552a33['id']})['catch'](function(_0x3c343b){logger[_0x4e5c('0x39')](_0x2e5276[_0x4e5c('0x1d')],_0x4e5c('0x3a'),JSON[_0x4e5c('0x3b')](_0x3c343b));});})[_0x4e5c('0x3c')](function(_0x11d8ce){logger[_0x4e5c('0x39')](_0x2e5276[_0x4e5c('0x1d')],_0x4e5c('0x3d'),JSON[_0x4e5c('0x3b')](_0x11d8ce));});});}logger[_0x4e5c('0x20')](_0x2e5276[_0x4e5c('0x1d')],_0x4e5c('0x3d'));}};Fax[_0x4e5c('0x22')][_0x4e5c('0x1a')]=function(_0x56f606){if(this[_0x4e5c('0x10')][_0x56f606[_0x4e5c('0x1d')]]){_[_0x4e5c('0x3e')](this[_0x4e5c('0xd')][_0x56f606['uniqueid']],_[_0x4e5c('0x3f')](_0x56f606,[_0x4e5c('0x40'),_0x4e5c('0x41')]));}};function updateStatus(_0x30d744){if(_0x30d744['AttachmentId']){faxMessage[_0x4e5c('0x42')](_0x30d744[_0x4e5c('0x43')],{'failMessage':'SENDING\x20FAILED\x20'})[_0x4e5c('0x38')](function(_0x3ccb61){ut[_0x4e5c('0x44')](_0x4e5c('0x45'),_0x3ccb61);})[_0x4e5c('0x3c')](function(_0x35afd0){ut[_0x4e5c('0x44')]('[Fax][Message][Error][NoUpdate1]',_0x35afd0);});}else{ut[_0x4e5c('0x44')](_0x4e5c('0x46'));}}Fax['prototype'][_0x4e5c('0x47')]=function(_0x45fbf6,_0x5454fd,_0x21af50){var _0x305133=this;var _0x1e2bf0={};if(_0x5454fd){_0x1e2bf0={'read':_0x5454fd};}else{_0x1e2bf0={'failMessage':_0x21af50};}if(this[_0x4e5c('0x10')][_0x45fbf6][_0x4e5c('0x43')]){faxMessage['update'](this[_0x4e5c('0x10')][_0x45fbf6]['AttachmentId'],_0x1e2bf0)['then'](function(_0x23a9ae){ut[_0x4e5c('0x44')](_0x4e5c('0x48'),_0x23a9ae);})['catch'](function(_0x4781c6){ut['logger']('[Fax][Message][NoUpdate1]',_0x4781c6);})[_0x4e5c('0x49')](function(){delete _0x305133[_0x4e5c('0xd')][_0x45fbf6];delete _0x305133[_0x4e5c('0x10')][_0x45fbf6];});}else{ut[_0x4e5c('0x44')](_0x4e5c('0x4a'));delete this[_0x4e5c('0xd')][_0x45fbf6];delete this[_0x4e5c('0x10')][_0x45fbf6];}};Fax[_0x4e5c('0x22')][_0x4e5c('0x4b')]=function(_0xa3e45a){var _0x26b79c=this;if(this[_0x4e5c('0xd')][_0xa3e45a['uniqueid']]){if(this[_0x4e5c('0x10')][_0xa3e45a[_0x4e5c('0x1d')]]){this['channels'][_0xa3e45a[_0x4e5c('0x1d')]]['id']=this['actions'][_0xa3e45a[_0x4e5c('0x1d')]]['id'];this[_0x4e5c('0xd')][_0xa3e45a[_0x4e5c('0x1d')]][_0x4e5c('0x1f')]=this[_0x4e5c('0x10')][_0xa3e45a[_0x4e5c('0x1d')]][_0x4e5c('0x1f')];}logger[_0x4e5c('0x20')](_0xa3e45a[_0x4e5c('0x1d')],this['actions'][_0xa3e45a[_0x4e5c('0x1d')]]?_0x4e5c('0x4c'):_0x4e5c('0x4d'),JSON[_0x4e5c('0x3b')](this[_0x4e5c('0xd')][_0xa3e45a[_0x4e5c('0x1d')]]));if(this['actions'][_0xa3e45a['uniqueid']]){if(this[_0x4e5c('0xd')][_0xa3e45a[_0x4e5c('0x1d')]]['faxpages']>0x0&&this[_0x4e5c('0xd')][_0xa3e45a[_0x4e5c('0x1d')]][_0x4e5c('0x4e')]===_0x4e5c('0x4f')){this[_0x4e5c('0x47')](_0xa3e45a[_0x4e5c('0x1d')],!![]);}else{this[_0x4e5c('0x47')](_0xa3e45a[_0x4e5c('0x1d')],![],this[_0x4e5c('0xd')][_0xa3e45a[_0x4e5c('0x1d')]]['faxstatusstring']?_0x4e5c('0x50')+this['channels'][_0xa3e45a['uniqueid']]['faxstatusstring']:_0x4e5c('0x51'));}}}};Fax[_0x4e5c('0x22')][_0x4e5c('0x52')]=function(_0x1ac9b0){var _0x496834=this;return new BPromise(function(_0x54c84d,_0x485ef6){_0x496834['execOriginate'](_0x1ac9b0,_0x496834['faxAccounts'][_0x1ac9b0[_0x4e5c('0x53')]])[_0x4e5c('0x38')](function(_0x954c86){ut[_0x4e5c('0x44')](_0x4e5c('0x54'),_0x954c86);_0x54c84d(ut[_0x4e5c('0x33')](_0x4e5c('0x55')));})[_0x4e5c('0x3c')](function(_0x212e05){ut[_0x4e5c('0x44')]('[Fax][execOriginate][failure]',_0x212e05);updateStatus(_0x1ac9b0);_0x485ef6(ut[_0x4e5c('0x33')]('Fax\x20failed'));});});};Fax[_0x4e5c('0x22')][_0x4e5c('0x56')]=function(_0x16e99f){var _0x168732=this;return new BPromise(function(_0x2e73ad,_0x10734d){var _0x4688cb=_0x168732[_0x4e5c('0x57')](_0x168732[_0x4e5c('0xe')][_0x16e99f[_0x4e5c('0x53')]]['Trunk'],_0x16e99f);if(_0x4688cb['isValid']){_0x2e73ad(ut[_0x4e5c('0x33')](_0x4e5c('0x58')));}else{_0x10734d(ut[_0x4e5c('0x33')](_0x4688cb[_0x4e5c('0x33')]));}});};function originate(_0x5b30fb,_0x2b9e43,_0xfa6046){return new BPromise(function(_0x4ab37a,_0x5832b0){if(_0xfa6046){var _0xe4e075=util['format'](_0x4e5c('0x59'),path['parse'](_0x5b30fb['path'])[_0x4e5c('0x1f')],_0x5b30fb[_0x4e5c('0x5a')]);gs[_0x4e5c('0x5b')](_0xe4e075)[_0x4e5c('0x38')](function(){_0x5b30fb[_0x4e5c('0x5a')]=util[_0x4e5c('0x5c')](_0x4e5c('0x5d'),path[_0x4e5c('0x35')](_0x5b30fb['path'])[_0x4e5c('0x5e')],path[_0x4e5c('0x35')](_0x5b30fb[_0x4e5c('0x5a')])[_0x4e5c('0x1f')]);_0x2b9e43[_0x4e5c('0x5f')]=_0x5b30fb['path'];ut[_0x4e5c('0x44')](_0x4e5c('0x60'),'');ami[_0x4e5c('0x61')](ut[_0x4e5c('0x62')](_0x5b30fb,_0x2b9e43))[_0x4e5c('0x38')](function(_0x25ad1f){_0x4ab37a(_0x25ad1f);})[_0x4e5c('0x3c')](function(_0x2169ca){_0x5832b0(_0x2169ca);});})[_0x4e5c('0x3c')](function(_0x125cbe){_0x5832b0(_0x125cbe);});}else{ami['Action'](ut['variablesAction'](_0x5b30fb,_0x2b9e43))['then'](function(_0x1a44e8){_0x4ab37a(_0x1a44e8);})[_0x4e5c('0x3c')](function(_0x577fbe){_0x5832b0(_0x577fbe);});}});}Fax[_0x4e5c('0x22')][_0x4e5c('0x63')]=function(_0x130e88,_0x2a3fce){var _0xe6344c=this;return new BPromise(function(_0x18a2b9,_0x34553d){var _0x2d6c32=uuid['v4']();var _0x250f48=ut['addVariables'](_0x130e88,_0x2a3fce);_0xe6344c['actions'][_0x2d6c32]=new Action(_0x2d6c32,_0x2a3fce,_0x130e88);var _0x38992c=_0xe6344c[_0x4e5c('0x10')][_0x2d6c32];if(path[_0x4e5c('0x35')](_0x130e88[_0x4e5c('0x5a')])[_0x4e5c('0x64')]===_0x4e5c('0x36')){originate(_0x38992c,_0x250f48,!![])[_0x4e5c('0x38')](function(_0x5c6c5a){_0x18a2b9(_0x5c6c5a);})[_0x4e5c('0x3c')](function(_0x44366d){_0x34553d(_0x44366d);});}else{originate(_0x38992c,_0x250f48,![])[_0x4e5c('0x38')](function(_0x233be7){_0x18a2b9(_0x233be7);})[_0x4e5c('0x3c')](function(_0x21cd62){_0x34553d(_0x21cd62);});}});};Fax[_0x4e5c('0x22')][_0x4e5c('0x65')]=function(_0x8f585a){return!_['isNil'](_0x8f585a)&&!_[_0x4e5c('0x66')](_0x8f585a['name'])&&!_[_0x4e5c('0x66')](_0x8f585a['active'])&&_0x8f585a[_0x4e5c('0x67')]&&!_[_0x4e5c('0x66')](this[_0x4e5c('0xf')][util['format']('SIP/%s',_0x8f585a['name'])])&&!_[_0x4e5c('0x66')](this[_0x4e5c('0xf')][util[_0x4e5c('0x5c')](_0x4e5c('0x68'),_0x8f585a[_0x4e5c('0x1f')])][_0x4e5c('0x29')])&&(this[_0x4e5c('0xf')][util[_0x4e5c('0x5c')](_0x4e5c('0x68'),_0x8f585a[_0x4e5c('0x1f')])][_0x4e5c('0x29')]===_0x4e5c('0x69')||this[_0x4e5c('0xf')][util[_0x4e5c('0x5c')]('SIP/%s',_0x8f585a[_0x4e5c('0x1f')])][_0x4e5c('0x29')]===_0x4e5c('0x6a'));};Fax[_0x4e5c('0x22')][_0x4e5c('0x57')]=function(_0x2a028a,_0x376ea3){if(!this[_0x4e5c('0x65')](_0x2a028a)){ut[_0x4e5c('0x44')](_0x4e5c('0x6b'),_['isNil'](_0x2a028a)?'':_0x2a028a[_0x4e5c('0x1f')]+_0x4e5c('0x6c'));return{'isValid':![],'message':_0x4e5c('0x6d')};}if(_[_0x4e5c('0x66')](_0x376ea3[_0x4e5c('0x6')])){ut[_0x4e5c('0x44')]('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0x4e5c('0x3b')](_0x376ea3));return{'isValid':![],'message':_0x4e5c('0x6e')};}if(_[_0x4e5c('0x66')](_0x376ea3[_0x4e5c('0x5a')])){ut[_0x4e5c('0x44')](_0x4e5c('0x6f'),JSON['stringify'](_0x376ea3));return{'isValid':![],'message':_0x4e5c('0x70')};}return{'isValid':!![],'message':_0x4e5c('0x71')};};module[_0x4e5c('0x72')]=Fax;
\ No newline at end of file
+var _0x0bc5=['.pdf','application/pdf','then','catch','error','\x20receiveFax\x20','stringify','merge','pick','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','[Fax][Message][Error][Updated]','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','SUCCESS','faxstatusstring','SENDING\x20FAILED','send','FaxAccountId','[Fax][execOriginate][failure]','checkAfterSend','checkTrunk','Trunk','Trunk\x20Reachable','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','format','%s/%s.tif','XMF-PATH','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','Empty\x20path','exports','util','lodash','uuid','moment','path','tiff2pdf','./util/gs','../../../config/logger','fax','./rpcDb','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','trunks','actions','newchannel','syncNewchannel','varset','syncVarSet','bind','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','originateresponse','syncOriginateResponse','context','from-voip-provider','faxAccounts','hasOwnProperty','exten','localstationid','uniqueid','name','info','\x20syncNewchannel\x20','channel','prototype','variable','channelstate','channelstatedesc','value','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','parse'];(function(_0x1bceb4,_0x508336){var _0x612070=function(_0x344316){while(--_0x344316){_0x1bceb4['push'](_0x1bceb4['shift']());}};_0x612070(++_0x508336);}(_0x0bc5,0xa9));var _0x50bc=function(_0x5cacd1,_0x35e5db){_0x5cacd1=_0x5cacd1-0x0;var _0x3edad1=_0x0bc5[_0x5cacd1];return _0x3edad1;};'use strict';var util=require(_0x50bc('0x0'));var _=require(_0x50bc('0x1'));var BPromise=require('bluebird');var uuid=require(_0x50bc('0x2'));var moment=require(_0x50bc('0x3'));var path=require(_0x50bc('0x4'));var tiff2pdf=require(_0x50bc('0x5'));var gs=require(_0x50bc('0x6'));var logger=require(_0x50bc('0x7'))(_0x50bc('0x8'));var ami=require('../ami');var rpcDb=require(_0x50bc('0x9'));var Channel=require('./channel');var ut=require(_0x50bc('0xa'));var Action=require(_0x50bc('0xb'));var faxAccount=require(_0x50bc('0xc'));var attachment=require(_0x50bc('0xd'));var faxMessage=require(_0x50bc('0xe'));function Fax(_0x1a8e16){this[_0x50bc('0xf')]={};this['faxAccounts']=_0x1a8e16['faxAccounts'];this[_0x50bc('0x10')]=_0x1a8e16[_0x50bc('0x10')];this[_0x50bc('0x11')]={};ami['on'](_0x50bc('0x12'),this[_0x50bc('0x13')]['bind'](this));ami['on'](_0x50bc('0x14'),this[_0x50bc('0x15')][_0x50bc('0x16')](this));ami['on']('newstate',this[_0x50bc('0x17')]['bind'](this));ami['on'](_0x50bc('0x18'),this[_0x50bc('0x19')]['bind'](this));ami['on'](_0x50bc('0x1a'),this[_0x50bc('0x1b')][_0x50bc('0x16')](this));ami['on'](_0x50bc('0x1c'),this[_0x50bc('0x1d')][_0x50bc('0x16')](this));ami['on'](_0x50bc('0x1e'),this['syncHangup'][_0x50bc('0x16')](this));ami['on'](_0x50bc('0x1f'),this[_0x50bc('0x20')]['bind'](this));}Fax['prototype']['syncNewchannel']=function(_0x583329){if(_0x583329[_0x50bc('0x21')]===_0x50bc('0x22')){for(var _0x5636cd in this[_0x50bc('0x23')]){if(this[_0x50bc('0x23')][_0x50bc('0x24')](_0x5636cd)){if(_0x583329[_0x50bc('0x25')]===this[_0x50bc('0x23')][_0x5636cd][_0x50bc('0x26')]){this[_0x50bc('0xf')][_0x583329[_0x50bc('0x27')]]={};this['channels'][_0x583329['uniqueid']]['channel']=_0x583329['channel'];this[_0x50bc('0xf')][_0x583329[_0x50bc('0x27')]]['id']=this[_0x50bc('0x23')][_0x5636cd]['id'];this[_0x50bc('0xf')][_0x583329[_0x50bc('0x27')]][_0x50bc('0x28')]=this[_0x50bc('0x23')][_0x5636cd][_0x50bc('0x28')];logger[_0x50bc('0x29')](_0x583329['uniqueid'],_0x50bc('0x2a'));}}}}if(this['actions'][_0x583329[_0x50bc('0x27')]]){this['channels'][_0x583329['uniqueid']]={};this[_0x50bc('0xf')][_0x583329[_0x50bc('0x27')]][_0x50bc('0x2b')]=_0x583329['channel'];logger['info'](_0x583329[_0x50bc('0x27')],_0x50bc('0x2a'));}};Fax[_0x50bc('0x2c')][_0x50bc('0x15')]=function(_0x3682e4){if(this['channels'][_0x3682e4[_0x50bc('0x27')]]){for(var _0x9c644f in _0x3682e4[_0x50bc('0x2d')]){if(_0x3682e4[_0x50bc('0x2d')][_0x50bc('0x24')](_0x9c644f)){this[_0x50bc('0xf')][_0x3682e4[_0x50bc('0x27')]][_0x9c644f]=_0x3682e4['value'];}}}};Fax[_0x50bc('0x2c')][_0x50bc('0x17')]=function(_0x3a9914){if(this[_0x50bc('0xf')][_0x3a9914[_0x50bc('0x27')]]){this[_0x50bc('0xf')][_0x3a9914[_0x50bc('0x27')]][_0x50bc('0x2e')]=_0x3a9914['channelstate'];this[_0x50bc('0xf')][_0x3a9914['uniqueid']][_0x50bc('0x2f')]=_0x3a9914[_0x50bc('0x2f')];}};Fax[_0x50bc('0x2c')][_0x50bc('0x19')]=function(_0x4e76f8){if(this[_0x50bc('0xf')][_0x4e76f8[_0x50bc('0x27')]]){for(var _0x148504 in _0x4e76f8[_0x50bc('0x2d')]){if(_0x4e76f8[_0x50bc('0x2d')][_0x50bc('0x24')](_0x148504)){this[_0x50bc('0xf')][_0x4e76f8['uniqueid']][_0x148504]=_0x4e76f8[_0x50bc('0x30')];}}}};Fax[_0x50bc('0x2c')][_0x50bc('0x1b')]=function(_0x4003c4){if(this[_0x50bc('0xf')][_0x4003c4[_0x50bc('0x27')]]){this['channels'][_0x4003c4[_0x50bc('0x27')]]['operation']=_0x4003c4['operation'];this[_0x50bc('0xf')][_0x4003c4[_0x50bc('0x27')]][_0x50bc('0x31')]=_0x4003c4[_0x50bc('0x31')];this['channels'][_0x4003c4[_0x50bc('0x27')]]['localstationid']=_0x4003c4['localstationid'];this[_0x50bc('0xf')][_0x4003c4[_0x50bc('0x27')]][_0x50bc('0x32')]=_0x4003c4['filename'];logger[_0x50bc('0x29')](_0x4003c4['uniqueid'],_0x50bc('0x33'));}};Fax['prototype'][_0x50bc('0x1d')]=function(_0x295562){var _0x17cacd=this;if(this[_0x50bc('0xf')][_0x295562[_0x50bc('0x27')]]){var _0x31c573=this[_0x50bc('0xf')][_0x295562[_0x50bc('0x27')]]['id'];this[_0x50bc('0xf')][_0x295562[_0x50bc('0x27')]][_0x50bc('0x34')]=_0x295562[_0x50bc('0x34')];this[_0x50bc('0xf')][_0x295562[_0x50bc('0x27')]][_0x50bc('0x35')]=_0x295562[_0x50bc('0x35')];this[_0x50bc('0xf')][_0x295562['uniqueid']][_0x50bc('0x26')]=_0x295562['localstationid'];this[_0x50bc('0xf')][_0x295562[_0x50bc('0x27')]][_0x50bc('0x36')]=_0x295562[_0x50bc('0x36')];this[_0x50bc('0xf')][_0x295562[_0x50bc('0x27')]][_0x50bc('0x37')]=_0x295562[_0x50bc('0x37')];this[_0x50bc('0xf')][_0x295562[_0x50bc('0x27')]][_0x50bc('0x32')]=_0x295562['filename'];this[_0x50bc('0xf')][_0x295562[_0x50bc('0x27')]][_0x50bc('0x38')]=_0x295562[_0x50bc('0x38')];if(this[_0x50bc('0xf')][_0x295562['uniqueid']][_0x50bc('0x35')]>0x0){tiff2pdf(_0x295562[_0x50bc('0x32')],_0x50bc('0x39'),function(_0x5e60f9){logger[_0x50bc('0x29')](_0x295562[_0x50bc('0x27')],_0x50bc('0x3a'),_0x5e60f9[_0x50bc('0x3b')]);attachment['create']({'name':path[_0x50bc('0x3c')](_0x295562[_0x50bc('0x32')])['name'],'basename':path[_0x50bc('0x3c')](_0x295562[_0x50bc('0x32')])[_0x50bc('0x28')]+_0x50bc('0x3d'),'type':_0x50bc('0x3e')})[_0x50bc('0x3f')](function(_0x2487eb){faxAccount['notify'](_0x31c573,{'from':_0x295562[_0x50bc('0x38')],'mapKey':_0x50bc('0x8'),'body':path[_0x50bc('0x3c')](_0x295562[_0x50bc('0x32')])['name']+_0x50bc('0x3d'),'AttachmentId':_0x2487eb['id']})[_0x50bc('0x40')](function(_0x56f83c){logger[_0x50bc('0x41')](_0x295562['uniqueid'],'\x20notify\x20',JSON['stringify'](_0x56f83c));});})[_0x50bc('0x40')](function(_0x14c159){logger[_0x50bc('0x41')](_0x295562[_0x50bc('0x27')],_0x50bc('0x42'),JSON[_0x50bc('0x43')](_0x14c159));});});}logger['info'](_0x295562[_0x50bc('0x27')],_0x50bc('0x42'));}};Fax[_0x50bc('0x2c')][_0x50bc('0x20')]=function(_0x445d97){if(this[_0x50bc('0x11')][_0x445d97[_0x50bc('0x27')]]){_[_0x50bc('0x44')](this['channels'][_0x445d97[_0x50bc('0x27')]],_[_0x50bc('0x45')](_0x445d97,[_0x50bc('0x46'),_0x50bc('0x47')]));}};function updateStatus(_0x53a613){if(_0x53a613[_0x50bc('0x48')]){faxMessage[_0x50bc('0x49')](_0x53a613['AttachmentId'],{'failMessage':_0x50bc('0x4a')})[_0x50bc('0x3f')](function(_0x3a1d4e){ut['logger'](_0x50bc('0x4b'),_0x3a1d4e);})[_0x50bc('0x40')](function(_0x1f115e){ut[_0x50bc('0x4c')](_0x50bc('0x4d'),_0x1f115e);});}else{ut[_0x50bc('0x4c')](_0x50bc('0x4e'));}}Fax[_0x50bc('0x2c')][_0x50bc('0x4f')]=function(_0x168683,_0x5e17fb,_0x5b1f9e){var _0x44d7b3=this;var _0x3be3f1={};if(_0x5e17fb){_0x3be3f1={'read':_0x5e17fb};}else{_0x3be3f1={'failMessage':_0x5b1f9e};}if(this[_0x50bc('0x11')][_0x168683][_0x50bc('0x48')]){faxMessage['update'](this['actions'][_0x168683]['AttachmentId'],_0x3be3f1)[_0x50bc('0x3f')](function(_0x56ecd8){ut[_0x50bc('0x4c')]('[Fax][Message][Updated]',_0x56ecd8);})[_0x50bc('0x40')](function(_0x3c5281){ut[_0x50bc('0x4c')](_0x50bc('0x50'),_0x3c5281);})[_0x50bc('0x51')](function(){delete _0x44d7b3[_0x50bc('0xf')][_0x168683];delete _0x44d7b3[_0x50bc('0x11')][_0x168683];});}else{ut[_0x50bc('0x4c')](_0x50bc('0x52'));delete this[_0x50bc('0xf')][_0x168683];delete this[_0x50bc('0x11')][_0x168683];}};Fax[_0x50bc('0x2c')][_0x50bc('0x53')]=function(_0x1e80a5){var _0x3cb32a=this;if(this[_0x50bc('0xf')][_0x1e80a5[_0x50bc('0x27')]]){if(this[_0x50bc('0x11')][_0x1e80a5[_0x50bc('0x27')]]){this[_0x50bc('0xf')][_0x1e80a5['uniqueid']]['id']=this[_0x50bc('0x11')][_0x1e80a5[_0x50bc('0x27')]]['id'];this[_0x50bc('0xf')][_0x1e80a5[_0x50bc('0x27')]]['name']=this['actions'][_0x1e80a5['uniqueid']][_0x50bc('0x28')];}logger[_0x50bc('0x29')](_0x1e80a5[_0x50bc('0x27')],this[_0x50bc('0x11')][_0x1e80a5[_0x50bc('0x27')]]?_0x50bc('0x54'):_0x50bc('0x55'),JSON['stringify'](this[_0x50bc('0xf')][_0x1e80a5['uniqueid']]));if(this[_0x50bc('0x11')][_0x1e80a5[_0x50bc('0x27')]]){if(this['channels'][_0x1e80a5[_0x50bc('0x27')]]['faxpages']>0x0&&this[_0x50bc('0xf')][_0x1e80a5[_0x50bc('0x27')]][_0x50bc('0x1a')]===_0x50bc('0x56')){this[_0x50bc('0x4f')](_0x1e80a5[_0x50bc('0x27')],!![]);}else{this[_0x50bc('0x4f')](_0x1e80a5[_0x50bc('0x27')],![],this['channels'][_0x1e80a5[_0x50bc('0x27')]][_0x50bc('0x57')]?'SENDING\x20FAILED:\x20'+this['channels'][_0x1e80a5[_0x50bc('0x27')]][_0x50bc('0x57')]:_0x50bc('0x58'));}}}};Fax[_0x50bc('0x2c')][_0x50bc('0x59')]=function(_0x19232c){var _0x50ee15=this;return new BPromise(function(_0x1bd812,_0x1154ba){_0x50ee15['execOriginate'](_0x19232c,_0x50ee15[_0x50bc('0x23')][_0x19232c[_0x50bc('0x5a')]])[_0x50bc('0x3f')](function(_0x4a373b){ut[_0x50bc('0x4c')]('[Fax][execOriginate][success]',_0x4a373b);_0x1bd812(ut[_0x50bc('0x3b')]('Fax\x20received'));})['catch'](function(_0x4dccf4){ut[_0x50bc('0x4c')](_0x50bc('0x5b'),_0x4dccf4);updateStatus(_0x19232c);_0x1154ba(ut[_0x50bc('0x3b')]('Fax\x20failed'));});});};Fax[_0x50bc('0x2c')][_0x50bc('0x5c')]=function(_0x85f98f){var _0x409ff4=this;return new BPromise(function(_0x32ebb7,_0x3cb6f7){var _0x4bfb87=_0x409ff4[_0x50bc('0x5d')](_0x409ff4[_0x50bc('0x23')][_0x85f98f['FaxAccountId']][_0x50bc('0x5e')],_0x85f98f);if(_0x4bfb87['isValid']){_0x32ebb7(ut[_0x50bc('0x3b')](_0x50bc('0x5f')));}else{_0x3cb6f7(ut[_0x50bc('0x3b')](_0x4bfb87[_0x50bc('0x3b')]));}});};function originate(_0x262de1,_0x2f6672,_0x1b6c72){return new BPromise(function(_0x13d500,_0x255e46){if(_0x1b6c72){var _0x5c2625=util['format'](_0x50bc('0x60'),path[_0x50bc('0x3c')](_0x262de1[_0x50bc('0x4')])['name'],_0x262de1[_0x50bc('0x4')]);gs[_0x50bc('0x61')](_0x5c2625)[_0x50bc('0x3f')](function(){_0x262de1[_0x50bc('0x4')]=util[_0x50bc('0x62')](_0x50bc('0x63'),path[_0x50bc('0x3c')](_0x262de1['path'])['dir'],path[_0x50bc('0x3c')](_0x262de1[_0x50bc('0x4')])[_0x50bc('0x28')]);_0x2f6672[_0x50bc('0x64')]=_0x262de1[_0x50bc('0x4')];ut[_0x50bc('0x4c')]('Convert\x20pdf\x20to\x20tif','');ami[_0x50bc('0x65')](ut[_0x50bc('0x66')](_0x262de1,_0x2f6672))[_0x50bc('0x3f')](function(_0x158d97){_0x13d500(_0x158d97);})[_0x50bc('0x40')](function(_0x478b11){_0x255e46(_0x478b11);});})[_0x50bc('0x40')](function(_0xc49de9){_0x255e46(_0xc49de9);});}else{ami[_0x50bc('0x65')](ut[_0x50bc('0x66')](_0x262de1,_0x2f6672))['then'](function(_0x400f66){_0x13d500(_0x400f66);})[_0x50bc('0x40')](function(_0x591dcf){_0x255e46(_0x591dcf);});}});}Fax[_0x50bc('0x2c')]['execOriginate']=function(_0x46058c,_0x5e0764){var _0x43853b=this;return new BPromise(function(_0x8f87e2,_0x40b4f6){var _0x45510b=uuid['v4']();var _0x5b7888=ut[_0x50bc('0x67')](_0x46058c,_0x5e0764);_0x43853b[_0x50bc('0x11')][_0x45510b]=new Action(_0x45510b,_0x5e0764,_0x46058c);var _0x2fa6f5=_0x43853b[_0x50bc('0x11')][_0x45510b];if(path[_0x50bc('0x3c')](_0x46058c[_0x50bc('0x4')])[_0x50bc('0x68')]===_0x50bc('0x3d')){originate(_0x2fa6f5,_0x5b7888,!![])[_0x50bc('0x3f')](function(_0x17972e){_0x8f87e2(_0x17972e);})[_0x50bc('0x40')](function(_0x20f4f2){_0x40b4f6(_0x20f4f2);});}else{originate(_0x2fa6f5,_0x5b7888,![])[_0x50bc('0x3f')](function(_0x1bf864){_0x8f87e2(_0x1bf864);})[_0x50bc('0x40')](function(_0x23c1d9){_0x40b4f6(_0x23c1d9);});}});};Fax[_0x50bc('0x2c')][_0x50bc('0x69')]=function(_0x565927){return!_[_0x50bc('0x6a')](_0x565927)&&!_[_0x50bc('0x6a')](_0x565927['name'])&&!_['isNil'](_0x565927[_0x50bc('0x6b')])&&_0x565927['active']&&!_[_0x50bc('0x6a')](this[_0x50bc('0x10')][util[_0x50bc('0x62')](_0x50bc('0x6c'),_0x565927[_0x50bc('0x28')])])&&!_[_0x50bc('0x6a')](this[_0x50bc('0x10')][util[_0x50bc('0x62')](_0x50bc('0x6c'),_0x565927[_0x50bc('0x28')])][_0x50bc('0x31')])&&(this[_0x50bc('0x10')][util['format'](_0x50bc('0x6c'),_0x565927[_0x50bc('0x28')])][_0x50bc('0x31')]===_0x50bc('0x6d')||this[_0x50bc('0x10')][util['format'](_0x50bc('0x6c'),_0x565927[_0x50bc('0x28')])]['status']===_0x50bc('0x6e'));};Fax[_0x50bc('0x2c')][_0x50bc('0x5d')]=function(_0x343285,_0x3f9385){if(!this[_0x50bc('0x69')](_0x343285)){ut[_0x50bc('0x4c')]('[Fax][checkTrunk][Trunk\x20not\x20work]',_['isNil'](_0x343285)?'':_0x343285[_0x50bc('0x28')]+_0x50bc('0x6f'));return{'isValid':![],'message':_0x50bc('0x70')};}if(_[_0x50bc('0x6a')](_0x3f9385[_0x50bc('0x8')])){ut['logger']('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0x50bc('0x43')](_0x3f9385));return{'isValid':![],'message':'Empty\x20Fax'};}if(_['isNil'](_0x3f9385[_0x50bc('0x4')])){ut[_0x50bc('0x4c')]('[Fax][checkTrunk][Empty\x20path]',JSON['stringify'](_0x3f9385));return{'isValid':![],'message':_0x50bc('0x71')};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0x50bc('0x72')]=Fax;
\ No newline at end of file
index 73a1f74..8072dbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41d5=['inspect','notify','[Notify]\x20','util','bluebird','lodash','../rpc/faxAccount','error'];(function(_0x22ab22,_0x8453cf){var _0x1d01b5=function(_0x1b84c2){while(--_0x1b84c2){_0x22ab22['push'](_0x22ab22['shift']());}};_0x1d01b5(++_0x8453cf);}(_0x41d5,0x193));var _0x541d=function(_0x5e20d4,_0x5d782b){_0x5e20d4=_0x5e20d4-0x0;var _0x310d29=_0x41d5[_0x5e20d4];return _0x310d29;};'use strict';var util=require(_0x541d('0x0'));var BPromise=require(_0x541d('0x1'));var logger=require('../../../config/logger')('preview');var _=require(_0x541d('0x2'));var faxAccount=require(_0x541d('0x3'));function loggerCatch(_0x23b791){return function(_0x469b5e){logger[_0x541d('0x4')](_0x23b791,util[_0x541d('0x5')](_0x469b5e,{'showHidden':![],'depth':null}));};}exports[_0x541d('0x6')]=function(_0x1fffaa,_0x33a79f){return BPromise['resolve']()['then'](faxAccount['notify'](_0x1fffaa,_0x33a79f))['catch'](loggerCatch(_0x541d('0x7')));};
\ No newline at end of file
+var _0xa15a=['preview','../rpc/faxAccount','inspect','notify','util','bluebird','../../../config/logger'];(function(_0x176046,_0x456dbd){var _0x2873a9=function(_0x62752){while(--_0x62752){_0x176046['push'](_0x176046['shift']());}};_0x2873a9(++_0x456dbd);}(_0xa15a,0xdd));var _0xaa15=function(_0x37c2aa,_0x32e3a0){_0x37c2aa=_0x37c2aa-0x0;var _0x1f0c0d=_0xa15a[_0x37c2aa];return _0x1f0c0d;};'use strict';var util=require(_0xaa15('0x0'));var BPromise=require(_0xaa15('0x1'));var logger=require(_0xaa15('0x2'))(_0xaa15('0x3'));var _=require('lodash');var faxAccount=require(_0xaa15('0x4'));function loggerCatch(_0x2bff92){return function(_0xfa9323){logger['error'](_0x2bff92,util[_0xaa15('0x5')](_0xfa9323,{'showHidden':![],'depth':null}));};}exports[_0xaa15('0x6')]=function(_0x43f3e0,_0x23ad53){return BPromise['resolve']()['then'](faxAccount[_0xaa15('0x6')](_0x43f3e0,_0x23ad53))['catch'](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
index 1d789da..30c8b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ffc=['Exec\x20gs','util','fax','child_process','exec','execute','info'];(function(_0x29771f,_0x1189ae){var _0x279baf=function(_0xd66325){while(--_0xd66325){_0x29771f['push'](_0x29771f['shift']());}};_0x279baf(++_0x1189ae);}(_0x1ffc,0x1eb));var _0xc1ff=function(_0x2d92f7,_0x317a27){_0x2d92f7=_0x2d92f7-0x0;var _0x4d0d46=_0x1ffc[_0x2d92f7];return _0x4d0d46;};'use strict';var util=require(_0xc1ff('0x0'));var logger=require('../../../../config/logger')(_0xc1ff('0x1'));var BPromise=require('bluebird');var exec=require(_0xc1ff('0x2'))[_0xc1ff('0x3')];exports[_0xc1ff('0x4')]=function(_0x56a51c){return new BPromise(function(_0x425629,_0x5dc150){exec(_0x56a51c,function(_0x5d8425,_0x58f435,_0x499a22){logger[_0xc1ff('0x5')](_0xc1ff('0x6'),_0x58f435);if(_0x5d8425){logger[_0xc1ff('0x5')](_0xc1ff('0x6'),'\x20Error\x20:',util['inspect'](_0x5d8425,{'showHidden':![],'depth':null}),_0x58f435,_0x499a22);_0x5dc150(_0x5d8425);}_0x425629(_0x58f435);});});};
\ No newline at end of file
+var _0xd4f2=['\x20Error\x20:','inspect','util','../../../../config/logger','fax','bluebird','child_process','info','Exec\x20gs'];(function(_0x4b45aa,_0x38fc4b){var _0x529c65=function(_0x49528b){while(--_0x49528b){_0x4b45aa['push'](_0x4b45aa['shift']());}};_0x529c65(++_0x38fc4b);}(_0xd4f2,0x12b));var _0x2d4f=function(_0x43f3db,_0x1237f2){_0x43f3db=_0x43f3db-0x0;var _0x54a630=_0xd4f2[_0x43f3db];return _0x54a630;};'use strict';var util=require(_0x2d4f('0x0'));var logger=require(_0x2d4f('0x1'))(_0x2d4f('0x2'));var BPromise=require(_0x2d4f('0x3'));var exec=require(_0x2d4f('0x4'))['exec'];exports['execute']=function(_0x2c272b){return new BPromise(function(_0xa3e790,_0x3d07e7){exec(_0x2c272b,function(_0x5a0c1b,_0xd1423f,_0x5cc9b9){logger[_0x2d4f('0x5')](_0x2d4f('0x6'),_0xd1423f);if(_0x5a0c1b){logger[_0x2d4f('0x5')](_0x2d4f('0x6'),_0x2d4f('0x7'),util[_0x2d4f('0x8')](_0x5a0c1b,{'showHidden':![],'depth':null}),_0xd1423f,_0x5cc9b9);_0x3d07e7(_0x5a0c1b);}_0xa3e790(_0xd1423f);});});};
\ No newline at end of file
index aaede5e..3e49362 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23aa=['headerinfo','minrate','format','\x22%s\x22','modem','gateway','faxdetect','localstationid','path','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','uniqueid','lodash','moment','fax','inspect','addVariables','ecm'];(function(_0x3e0a0e,_0x1ecf6d){var _0x8e0d0a=function(_0x521ce6){while(--_0x521ce6){_0x3e0a0e['push'](_0x3e0a0e['shift']());}};_0x8e0d0a(++_0x1ecf6d);}(_0x23aa,0x1c6));var _0xa23a=function(_0x229a5e,_0x22f1a7){_0x229a5e=_0x229a5e-0x0;var _0x2ec47c=_0x23aa[_0x229a5e];return _0x2ec47c;};'use strict';var util=require('util');var _=require(_0xa23a('0x0'));var moment=require(_0xa23a('0x1'));var logger=require('../../../../config/logger')(_0xa23a('0x2'));exports['message']=function(_0x41ecc8){return{'message':_0x41ecc8};};exports['logger']=function(_0x199fc2,_0x54a943){logger['info'](_0x199fc2,util[_0xa23a('0x3')](_0x54a943,{'showHidden':![],'depth':null}));};exports[_0xa23a('0x4')]=function(_0x4877f5,_0x5b98ab){var _0x559f61={'XMF-ECM':_0x5b98ab[_0xa23a('0x5')],'XMF-HEADERINFO':_0x5b98ab[_0xa23a('0x6')],'XMF-MINRATE':_0x5b98ab[_0xa23a('0x7')],'XMF-MAXRATE':_0x5b98ab['maxrate'],'XMF-MODEM':util[_0xa23a('0x8')](_0xa23a('0x9'),_0x5b98ab[_0xa23a('0xa')]),'XMF-GATEWAY':_0x5b98ab[_0xa23a('0xb')],'XMF-FAXDETECT':_0x5b98ab[_0xa23a('0xc')],'XMF-T38TIMEOUT':_0x5b98ab['t38timeout'],'XMF-LOCALSTATIONID':_0x5b98ab[_0xa23a('0xd')],'XMF-PATH':_0x4877f5[_0xa23a('0xe')]};return _0x559f61;};exports['variablesAction']=function(_0x593e8e,_0x381aa1){return{'actionid':_0x593e8e['uniqueid'],'action':'originate','channel':_0x593e8e[_0xa23a('0xf')],'Exten':_0xa23a('0x10'),'Context':_0xa23a('0x11'),'Priority':'1','callerid':util[_0xa23a('0x8')](_0xa23a('0x12'),_0x593e8e['headerinfo']?_0x593e8e['headerinfo']:'',_0x593e8e[_0xa23a('0xd')]),'variable':_0x381aa1,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x593e8e[_0xa23a('0x13')]};};
\ No newline at end of file
+var _0x2ce9=['logger','info','inspect','ecm','maxrate','format','modem','gateway','faxdetect','path','variablesAction','uniqueid','originate','from-sip','\x22%s\x22\x20<%s>','headerinfo','localstationid','util','lodash','moment','../../../../config/logger','message'];(function(_0x4bae1a,_0x5b0916){var _0x27f6d2=function(_0x2204b2){while(--_0x2204b2){_0x4bae1a['push'](_0x4bae1a['shift']());}};_0x27f6d2(++_0x5b0916);}(_0x2ce9,0xed));var _0x92ce=function(_0x87239,_0x38c793){_0x87239=_0x87239-0x0;var _0x53af1e=_0x2ce9[_0x87239];return _0x53af1e;};'use strict';var util=require(_0x92ce('0x0'));var _=require(_0x92ce('0x1'));var moment=require(_0x92ce('0x2'));var logger=require(_0x92ce('0x3'))('fax');exports[_0x92ce('0x4')]=function(_0x4c5289){return{'message':_0x4c5289};};exports[_0x92ce('0x5')]=function(_0x11b477,_0x1d684c){logger[_0x92ce('0x6')](_0x11b477,util[_0x92ce('0x7')](_0x1d684c,{'showHidden':![],'depth':null}));};exports['addVariables']=function(_0x393c56,_0x416668){var _0x2aa913={'XMF-ECM':_0x416668[_0x92ce('0x8')],'XMF-HEADERINFO':_0x416668['headerinfo'],'XMF-MINRATE':_0x416668['minrate'],'XMF-MAXRATE':_0x416668[_0x92ce('0x9')],'XMF-MODEM':util[_0x92ce('0xa')]('\x22%s\x22',_0x416668[_0x92ce('0xb')]),'XMF-GATEWAY':_0x416668[_0x92ce('0xc')],'XMF-FAXDETECT':_0x416668[_0x92ce('0xd')],'XMF-T38TIMEOUT':_0x416668['t38timeout'],'XMF-LOCALSTATIONID':_0x416668['localstationid'],'XMF-PATH':_0x393c56[_0x92ce('0xe')]};return _0x2aa913;};exports[_0x92ce('0xf')]=function(_0x3c71c0,_0x3a794e){return{'actionid':_0x3c71c0[_0x92ce('0x10')],'action':_0x92ce('0x11'),'channel':_0x3c71c0['channel'],'Exten':'xcally-motion-fax','Context':_0x92ce('0x12'),'Priority':'1','callerid':util[_0x92ce('0xa')](_0x92ce('0x13'),_0x3c71c0[_0x92ce('0x14')]?_0x3c71c0[_0x92ce('0x14')]:'',_0x3c71c0[_0x92ce('0x15')]),'variable':_0x3a794e,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x3c71c0[_0x92ce('0x10')]};};
\ No newline at end of file
index eb054b3..42b03a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd49d=['getVoiceQueues','initTriggers','initTemplates','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','initSugarcrmAccounts','initFreshdeskAccounts','getDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','getVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','listen','sync','log','bluebird','util','moment','./server','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/trunk','./rpc/trigger','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','resolve','getAgents','then','initAgents','getTelephones','initTelephones','getTrunks','initTrunks'];(function(_0x2f7ffc,_0x234d9f){var _0x30f6b7=function(_0x3974bf){while(--_0x3974bf){_0x2f7ffc['push'](_0x2f7ffc['shift']());}};_0x30f6b7(++_0x234d9f);}(_0xd49d,0x139));var _0xdd49=function(_0x29a593,_0x17bb27){_0x29a593=_0x29a593-0x0;var _0x2cfb67=_0xd49d[_0x29a593];return _0x2cfb67;};'use strict';var BPromise=require(_0xdd49('0x0'));var util=require(_0xdd49('0x1'));var moment=require(_0xdd49('0x2'));var server=require(_0xdd49('0x3'));var Realtime=require('./realtime');var Report=require(_0xdd49('0x4'));var Acw=require(_0xdd49('0x5'));var Trigger=require(_0xdd49('0x6'));var Dialer=require(_0xdd49('0x7'));var Preview=require(_0xdd49('0x8'));var Fax=require(_0xdd49('0x9'));var user=require(_0xdd49('0xa'));var voiceQueue=require(_0xdd49('0xb'));var voiceQueueReport=require(_0xdd49('0xc'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0xdd49('0xd'));var trigger=require(_0xdd49('0xe'));var template=require('./rpc/template');var cmHopperHistory=require(_0xdd49('0xf'));var campaign=require(_0xdd49('0x10'));var voiceExtension=require(_0xdd49('0x11'));var faxAccount=require(_0xdd49('0x12'));var zendesk=require(_0xdd49('0x13'));var salesforce=require(_0xdd49('0x14'));var sugarcrm=require(_0xdd49('0x15'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0xdd49('0x16'));var zoho=require(_0xdd49('0x17'));var vtiger=require('./rpc/integrations/vtiger');var freshsales=require(_0xdd49('0x18'));var servicenow=require(_0xdd49('0x19'));var dynamics365=require(_0xdd49('0x1a'));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()[_0xdd49('0x1b')](_0xdd49('0x1c'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0xdd49('0x1c'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0xdd49('0x1d')]()['then'](user[_0xdd49('0x1e')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x20')]())['then'](user[_0xdd49('0x21')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x22')]())['then'](trunk[_0xdd49('0x23')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x24')]())[_0xdd49('0x1f')](voiceQueue[_0xdd49('0x25')]())[_0xdd49('0x1f')](realtime['initVoiceQueues']())[_0xdd49('0x1f')](trigger['getTriggers']())[_0xdd49('0x1f')](realtime[_0xdd49('0x26')]())[_0xdd49('0x1f')](template['getTemplates']())['then'](realtime[_0xdd49('0x27')]())['then'](zendesk['getZendeskAccounts']())[_0xdd49('0x1f')](realtime[_0xdd49('0x28')]())['then'](salesforce[_0xdd49('0x29')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x2a')]())[_0xdd49('0x1f')](sugarcrm['getSugarcrmAccounts']())['then'](realtime[_0xdd49('0x2b')]())[_0xdd49('0x1f')](freshdesk['getFreshdeskAccounts']())[_0xdd49('0x1f')](realtime[_0xdd49('0x2c')]())['then'](desk[_0xdd49('0x2d')]())[_0xdd49('0x1f')](realtime['initDeskAccounts']())['then'](zoho[_0xdd49('0x2e')]())['then'](realtime[_0xdd49('0x2f')]())[_0xdd49('0x1f')](vtiger[_0xdd49('0x30')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x31')]())['then'](freshsales[_0xdd49('0x32')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x33')]())['then'](servicenow[_0xdd49('0x34')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x35')]())[_0xdd49('0x1f')](dynamics365[_0xdd49('0x36')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x37')]())[_0xdd49('0x1f')](campaign[_0xdd49('0x38')]())['then'](realtime['initCampaigns']())['then'](voiceExtension[_0xdd49('0x39')]())['then'](realtime['initVoiceExtensions']())[_0xdd49('0x1f')](faxAccount[_0xdd49('0x3a')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x3b')]())[_0xdd49('0x1f')](function(){return realtime;});}function initParams(){return BPromise[_0xdd49('0x1d')]()[_0xdd49('0x1f')](voiceQueueReport[_0xdd49('0x3c')]())[_0xdd49('0x1f')](realtime['initVoiceQueueReports']())[_0xdd49('0x1f')](cmHopperHistory[_0xdd49('0x3d')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x3e')]())[_0xdd49('0x1f')](cmHopperHistory[_0xdd49('0x3f')]())['then'](realtime['initCampaignHopperHistory']())[_0xdd49('0x1f')](voiceCallReport[_0xdd49('0x40')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x41')]())[_0xdd49('0x1f')](function(_0x169544){})[_0xdd49('0x42')](function(_0x58af10){console['log'](_0x58af10);});}function main(){return server[_0xdd49('0x43')](realtime,preview,fax)[_0xdd49('0x1f')](function(_0x2937ff){return initRealtime();})[_0xdd49('0x1f')](function(){return initParams();})[_0xdd49('0x1f')](function(){report[_0xdd49('0x44')]();setInterval(initRealtime,0x1388);})[_0xdd49('0x42')](function(_0x2a523f){console[_0xdd49('0x45')](_0x2a523f);});}main();
\ No newline at end of file
+var _0x7804=['initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','log','listen','sync','bluebird','util','moment','./server','./realtime','./acw','./trigger','./dialer','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','get','hour','resolve','then','initAgents','getTelephones','initTelephones','getTrunks','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','initZohoAccounts','initVtigerAccounts','getFreshsalesAccounts'];(function(_0x35376e,_0x33f855){var _0x52d359=function(_0x415d54){while(--_0x415d54){_0x35376e['push'](_0x35376e['shift']());}};_0x52d359(++_0x33f855);}(_0x7804,0x155));var _0x4780=function(_0x335af2,_0x2ee77f){_0x335af2=_0x335af2-0x0;var _0x333389=_0x7804[_0x335af2];return _0x333389;};'use strict';var BPromise=require(_0x4780('0x0'));var util=require(_0x4780('0x1'));var moment=require(_0x4780('0x2'));var server=require(_0x4780('0x3'));var Realtime=require(_0x4780('0x4'));var Report=require('./report');var Acw=require(_0x4780('0x5'));var Trigger=require(_0x4780('0x6'));var Dialer=require(_0x4780('0x7'));var Preview=require('./preview');var Fax=require('./fax');var user=require(_0x4780('0x8'));var voiceQueue=require(_0x4780('0x9'));var voiceQueueReport=require(_0x4780('0xa'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0x4780('0xb'));var trigger=require(_0x4780('0xc'));var template=require(_0x4780('0xd'));var cmHopperHistory=require(_0x4780('0xe'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0x4780('0xf'));var faxAccount=require('./rpc/faxAccount');var zendesk=require(_0x4780('0x10'));var salesforce=require(_0x4780('0x11'));var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require(_0x4780('0x12'));var desk=require(_0x4780('0x13'));var zoho=require(_0x4780('0x14'));var vtiger=require(_0x4780('0x15'));var freshsales=require(_0x4780('0x16'));var servicenow=require(_0x4780('0x17'));var dynamics365=require('./rpc/integrations/dynamics365');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()[_0x4780('0x18')](_0x4780('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x4780('0x18')](_0x4780('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x4780('0x1a')]()[_0x4780('0x1b')](user['getAgents']())[_0x4780('0x1b')](realtime[_0x4780('0x1c')]())['then'](user[_0x4780('0x1d')]())[_0x4780('0x1b')](realtime[_0x4780('0x1e')]())[_0x4780('0x1b')](trunk[_0x4780('0x1f')]())['then'](realtime['initTrunks']())[_0x4780('0x1b')](voiceQueue['getVoiceQueues']())[_0x4780('0x1b')](realtime[_0x4780('0x20')]())['then'](trigger[_0x4780('0x21')]())[_0x4780('0x1b')](realtime[_0x4780('0x22')]())[_0x4780('0x1b')](template[_0x4780('0x23')]())[_0x4780('0x1b')](realtime[_0x4780('0x24')]())[_0x4780('0x1b')](zendesk[_0x4780('0x25')]())[_0x4780('0x1b')](realtime[_0x4780('0x26')]())[_0x4780('0x1b')](salesforce[_0x4780('0x27')]())[_0x4780('0x1b')](realtime[_0x4780('0x28')]())['then'](sugarcrm[_0x4780('0x29')]())[_0x4780('0x1b')](realtime[_0x4780('0x2a')]())['then'](freshdesk['getFreshdeskAccounts']())[_0x4780('0x1b')](realtime[_0x4780('0x2b')]())[_0x4780('0x1b')](desk[_0x4780('0x2c')]())['then'](realtime[_0x4780('0x2d')]())[_0x4780('0x1b')](zoho['getZohoAccounts']())[_0x4780('0x1b')](realtime[_0x4780('0x2e')]())[_0x4780('0x1b')](vtiger['getVtigerAccounts']())[_0x4780('0x1b')](realtime[_0x4780('0x2f')]())[_0x4780('0x1b')](freshsales[_0x4780('0x30')]())[_0x4780('0x1b')](realtime['initFreshsalesAccounts']())[_0x4780('0x1b')](servicenow['getServicenowAccounts']())[_0x4780('0x1b')](realtime[_0x4780('0x31')]())[_0x4780('0x1b')](dynamics365[_0x4780('0x32')]())[_0x4780('0x1b')](realtime[_0x4780('0x33')]())[_0x4780('0x1b')](campaign[_0x4780('0x34')]())[_0x4780('0x1b')](realtime[_0x4780('0x35')]())['then'](voiceExtension[_0x4780('0x36')]())[_0x4780('0x1b')](realtime['initVoiceExtensions']())[_0x4780('0x1b')](faxAccount[_0x4780('0x37')]())['then'](realtime[_0x4780('0x38')]())['then'](function(){return realtime;});}function initParams(){return BPromise[_0x4780('0x1a')]()[_0x4780('0x1b')](voiceQueueReport[_0x4780('0x39')]())[_0x4780('0x1b')](realtime['initVoiceQueueReports']())['then'](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x4780('0x1b')](realtime[_0x4780('0x3a')]())[_0x4780('0x1b')](cmHopperHistory['getCampaignHopperHistory']())[_0x4780('0x1b')](realtime['initCampaignHopperHistory']())['then'](voiceCallReport[_0x4780('0x3b')]())[_0x4780('0x1b')](realtime[_0x4780('0x3c')]())[_0x4780('0x1b')](function(_0x1a2995){})[_0x4780('0x3d')](function(_0x13e442){console[_0x4780('0x3e')](_0x13e442);});}function main(){return server[_0x4780('0x3f')](realtime,preview,fax)['then'](function(_0x2beb1c){return initRealtime();})[_0x4780('0x1b')](function(){return initParams();})['then'](function(){report[_0x4780('0x40')]();setInterval(initRealtime,0x1388);})[_0x4780('0x3d')](function(_0x59689e){console[_0x4780('0x3e')](_0x59689e);});}main();
\ No newline at end of file
index e00837a..946b6e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['name','email','accountcode','fullname','unknown','stateTime','status','address','mobile','interface','online','voiceStatus','voiceStatusQueue','onhold','local','updateStatusRealtime','state','idle','inuse','talking','statePause','voiceStatusTime','toNumber','voiceStatusCallerIdNumber','stringify','format','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','defaults','redis','socket.io-emitter'];(function(_0x8b4f41,_0x210287){var _0x45e5bd=function(_0xe2d2f8){while(--_0xe2d2f8){_0x8b4f41['push'](_0x8b4f41['shift']());}};_0x45e5bd(++_0x210287);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x29e35f,_0x4859ef){_0x29e35f=_0x29e35f-0x0;var _0x266b74=_0xcb91[_0x29e35f];return _0x266b74;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var md5=require(_0x1cb9('0x1'));var Redis=require(_0x1cb9('0x2'));var config=require(_0x1cb9('0x3'));config['redis']=_[_0x1cb9('0x4')](config[_0x1cb9('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x1cb9('0x6'))(new Redis(config[_0x1cb9('0x5')]));function Agent(_0x53ffbd){this['id']=_0x53ffbd['id']||0x0;this[_0x1cb9('0x7')]=_0x53ffbd[_0x1cb9('0x7')]||'';this['email']=_0x53ffbd[_0x1cb9('0x8')]||'';this[_0x1cb9('0x9')]=_0x53ffbd['accountcode']||'';this[_0x1cb9('0xa')]=_0x53ffbd['fullname']||'';this['state']=_0x1cb9('0xb');this[_0x1cb9('0xc')]=0x0;this[_0x1cb9('0xd')]=_0x1cb9('0xb');this[_0x1cb9('0xe')]='';this['phone']='';this[_0x1cb9('0xf')]='';this[_0x1cb9('0x10')]='';this[_0x1cb9('0x11')]=_0x53ffbd[_0x1cb9('0x11')]||![];this[_0x1cb9('0x12')]='unknown';this['voiceStatusTime']=0x0;this['voiceStatusCallerIdNumber']='';this[_0x1cb9('0x13')]='';this[_0x1cb9('0x14')]=![];this[_0x1cb9('0x15')]=![];this[_0x1cb9('0x1')]='';}Agent['prototype'][_0x1cb9('0x16')]=function(_0x6ef389){var _0x1b3cd7;if(_0x6ef389&&_0x6ef389[_0x1cb9('0x17')]){_0x1b3cd7=_0x6ef389[_0x1cb9('0x17')]['toLowerCase']();switch(_0x1b3cd7){case'not_inuse':_0x1b3cd7=_0x1cb9('0x18');break;case _0x1cb9('0x19'):_0x1b3cd7=_0x1cb9('0x1a');break;}}if(_0x1b3cd7&&this[_0x1cb9('0x12')]!==_0x1b3cd7||_0x6ef389[_0x1cb9('0x1b')]){this[_0x1cb9('0x1c')]=_[_0x1cb9('0x1d')](moment()['format']('x'));}if(_0x1b3cd7){this['voiceStatus']=_0x1b3cd7;}var _0x1b2fa6={'id':this['id'],'name':this[_0x1cb9('0x7')],'email':this[_0x1cb9('0x8')],'accountcode':this[_0x1cb9('0x9')],'fullname':this[_0x1cb9('0xa')],'state':this[_0x1cb9('0x17')],'stateTime':this[_0x1cb9('0xc')],'status':this['status'],'address':this['address'],'online':this[_0x1cb9('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x1cb9('0x1c')],'voiceStatusCallerIdNumber':this[_0x1cb9('0x1e')],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this['interface'],'onhold':this[_0x1cb9('0x14')]};var _0x325637=md5(JSON[_0x1cb9('0x1f')](_0x1b2fa6));if(this[_0x1cb9('0x1')]!==_0x325637){this[_0x1cb9('0x1')]=_0x325637;io['to'](util[_0x1cb9('0x20')]('user:%s',_0x1b2fa6['name']))[_0x1cb9('0x21')]('user:save',_0x1b2fa6);io[_0x1cb9('0x21')](_0x1cb9('0x22'),_0x1b2fa6);}};module[_0x1cb9('0x23')]=Agent;
\ No newline at end of file
+var _0xe706=['address','phone','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','updateStatusRealtime','not_inuse','inuse','talking','format','interface','stringify','md5','user:%s','emit','user:presence','lodash','util','moment','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','email','accountcode','fullname','state','unknown','stateTime','status'];(function(_0x3f3f1f,_0x28b7ea){var _0x16872b=function(_0xb81b23){while(--_0xb81b23){_0x3f3f1f['push'](_0x3f3f1f['shift']());}};_0x16872b(++_0x28b7ea);}(_0xe706,0xa3));var _0x6e70=function(_0x421eeb,_0x3d3e3e){_0x421eeb=_0x421eeb-0x0;var _0x2c7371=_0xe706[_0x421eeb];return _0x2c7371;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var md5=require('md5');var Redis=require(_0x6e70('0x3'));var config=require(_0x6e70('0x4'));config[_0x6e70('0x5')]=_[_0x6e70('0x6')](config[_0x6e70('0x5')],{'host':_0x6e70('0x7'),'port':0x18eb});var io=require(_0x6e70('0x8'))(new Redis(config[_0x6e70('0x5')]));function Agent(_0x1b0389){this['id']=_0x1b0389['id']||0x0;this[_0x6e70('0x9')]=_0x1b0389[_0x6e70('0x9')]||'';this[_0x6e70('0xa')]=_0x1b0389[_0x6e70('0xa')]||'';this[_0x6e70('0xb')]=_0x1b0389[_0x6e70('0xb')]||'';this[_0x6e70('0xc')]=_0x1b0389[_0x6e70('0xc')]||'';this[_0x6e70('0xd')]=_0x6e70('0xe');this[_0x6e70('0xf')]=0x0;this[_0x6e70('0x10')]=_0x6e70('0xe');this[_0x6e70('0x11')]='';this[_0x6e70('0x12')]='';this['mobile']='';this['interface']='';this[_0x6e70('0x13')]=_0x1b0389[_0x6e70('0x13')]||![];this[_0x6e70('0x14')]=_0x6e70('0xe');this[_0x6e70('0x15')]=0x0;this[_0x6e70('0x16')]='';this[_0x6e70('0x17')]='';this[_0x6e70('0x18')]=![];this['local']=![];this['md5']='';}Agent['prototype'][_0x6e70('0x19')]=function(_0x5a37a6){var _0x53aed0;if(_0x5a37a6&&_0x5a37a6[_0x6e70('0xd')]){_0x53aed0=_0x5a37a6[_0x6e70('0xd')]['toLowerCase']();switch(_0x53aed0){case _0x6e70('0x1a'):_0x53aed0='idle';break;case _0x6e70('0x1b'):_0x53aed0=_0x6e70('0x1c');break;}}if(_0x53aed0&&this['voiceStatus']!==_0x53aed0||_0x5a37a6['statePause']){this[_0x6e70('0x15')]=_['toNumber'](moment()[_0x6e70('0x1d')]('x'));}if(_0x53aed0){this[_0x6e70('0x14')]=_0x53aed0;}var _0x53acdc={'id':this['id'],'name':this['name'],'email':this[_0x6e70('0xa')],'accountcode':this[_0x6e70('0xb')],'fullname':this[_0x6e70('0xc')],'state':this[_0x6e70('0xd')],'stateTime':this[_0x6e70('0xf')],'status':this[_0x6e70('0x10')],'address':this[_0x6e70('0x11')],'online':this[_0x6e70('0x13')],'voiceStatus':this[_0x6e70('0x14')],'voiceStatusTime':this[_0x6e70('0x15')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x6e70('0x17')],'interface':this[_0x6e70('0x1e')],'onhold':this[_0x6e70('0x18')]};var _0x502b2d=md5(JSON[_0x6e70('0x1f')](_0x53acdc));if(this[_0x6e70('0x20')]!==_0x502b2d){this[_0x6e70('0x20')]=_0x502b2d;io['to'](util['format'](_0x6e70('0x21'),_0x53acdc['name']))['emit']('user:save',_0x53acdc);io[_0x6e70('0x22')](_0x6e70('0x23'),_0x53acdc);}};module['exports']=Agent;
\ No newline at end of file
index 354615e..31ba560 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ac=['dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout'];(function(_0x2cde51,_0x41b85c){var _0x37177e=function(_0x5a68f4){while(--_0x5a68f4){_0x2cde51['push'](_0x2cde51['shift']());}};_0x37177e(++_0x41b85c);}(_0x55ac,0x149));var _0xc55a=function(_0x5801a5,_0x4a0dac){_0x5801a5=_0x5801a5-0x0;var _0x4b88cf=_0x55ac[_0x5801a5];return _0x4b88cf;};'use strict';function Campaign(_0x3c97cd){this['id']=_0x3c97cd['id']||0x0;this[_0xc55a('0x0')]=_0x3c97cd[_0xc55a('0x0')]||'';this[_0xc55a('0x1')]=_0x3c97cd['type']||_0xc55a('0x2');this[_0xc55a('0x3')]=0x0;this['temp']=0x0;this['ivrAnswerCallsDay']=0x0;this[_0xc55a('0x4')]=0x0;this[_0xc55a('0x5')]='';this[_0xc55a('0x6')]=!![];this[_0xc55a('0x7')]=_0x3c97cd[_0xc55a('0x7')];this[_0xc55a('0x8')]=_0x3c97cd['limitCalls'];this[_0xc55a('0x9')]=_0x3c97cd[_0xc55a('0x9')]||null;this['dialGlobalInterval']=_0x3c97cd[_0xc55a('0xa')]?_0x3c97cd[_0xc55a('0xa')]:null;this[_0xc55a('0xb')]=_0x3c97cd['dialOriginateCallerIdName'];this[_0xc55a('0xc')]=_0x3c97cd['dialOriginateCallerIdNumber'];this[_0xc55a('0xd')]=_0x3c97cd[_0xc55a('0xd')]||0x1e;this[_0xc55a('0xe')]=_0x3c97cd[_0xc55a('0xe')];this[_0xc55a('0xf')]=_0x3c97cd[_0xc55a('0xf')];this['dialBusyMaxRetry']=_0x3c97cd[_0xc55a('0x10')];this[_0xc55a('0x11')]=_0x3c97cd['dialBusyRetryFrequency'];this[_0xc55a('0x12')]=_0x3c97cd[_0xc55a('0x12')];this[_0xc55a('0x13')]=_0x3c97cd['dialNoAnswerRetryFrequency'];this[_0xc55a('0x14')]=_0x3c97cd['dialGlobalMaxRetry'];this[_0xc55a('0x15')]=_0x3c97cd[_0xc55a('0x15')]||0x3;this[_0xc55a('0x16')]=_0x3c97cd['dialNoSuchNumberRetryFrequency']||0x96;this[_0xc55a('0x17')]=_0x3c97cd[_0xc55a('0x17')]||0x3;this[_0xc55a('0x18')]=_0x3c97cd['dialDropRetryFrequency']||0x96;this[_0xc55a('0x19')]=_0x3c97cd[_0xc55a('0x19')]||0x3;this[_0xc55a('0x1a')]=_0x3c97cd[_0xc55a('0x1a')]||0x96;this['dialMachineMaxRetry']=_0x3c97cd['dialMachineMaxRetry']||0x3;this[_0xc55a('0x1b')]=_0x3c97cd[_0xc55a('0x1b')]||0x96;this[_0xc55a('0x1c')]=_0x3c97cd['dialAgentRejectMaxRetry']||0x3;this[_0xc55a('0x1d')]=_0x3c97cd[_0xc55a('0x1d')]||0x96;this[_0xc55a('0x1e')]=_0x3c97cd['dialOrderByScheduledAt']||_0xc55a('0x1f');this['dialPrefix']=_0x3c97cd[_0xc55a('0x20')]||undefined;this[_0xc55a('0x21')]=_0x3c97cd[_0xc55a('0x21')]||undefined;this[_0xc55a('0x22')]=_0x3c97cd['dialCutDigit']||undefined;this['TrunkBackup']=_0x3c97cd[_0xc55a('0x23')]?_0x3c97cd[_0xc55a('0x23')]:undefined;this[_0xc55a('0x24')]=_0x3c97cd['Trunk']?_0x3c97cd[_0xc55a('0x24')]:undefined;this['Interval']=_0x3c97cd[_0xc55a('0x25')]?_0x3c97cd['Interval']:undefined;this[_0xc55a('0x26')]=_0x3c97cd[_0xc55a('0x26')]?_0x3c97cd[_0xc55a('0x26')]:undefined;this['dialQueueProject']=_0x3c97cd[_0xc55a('0x26')]?_0x3c97cd[_0xc55a('0x26')][_0xc55a('0x0')]:undefined;this[_0xc55a('0x27')]=_0x3c97cd[_0xc55a('0x27')]||![];this[_0xc55a('0x28')]=_0x3c97cd['dialAMDInitialSilence'];this[_0xc55a('0x29')]=_0x3c97cd[_0xc55a('0x29')];this[_0xc55a('0x2a')]=_0x3c97cd[_0xc55a('0x2a')];this['dialAMDTotalAnalysisTime']=_0x3c97cd['dialAMDTotalAnalysisTime'];this['dialAMDMinWordLength']=_0x3c97cd[_0xc55a('0x2b')];this['dialAMDBetweenWordsSilence']=_0x3c97cd[_0xc55a('0x2c')];this[_0xc55a('0x2d')]=_0x3c97cd[_0xc55a('0x2d')];this['dialAMDSilenceThreshold']=_0x3c97cd[_0xc55a('0x2e')];this[_0xc55a('0x2f')]=_0x3c97cd[_0xc55a('0x2f')];}module[_0xc55a('0x30')]=Campaign;
\ No newline at end of file
+var _0xbab7=['ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','originated','temp','ivrAnswerCallsDay'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0xbab7,0x12d));var _0x7bab=function(_0x5bc0b1,_0x5c7866){_0x5bc0b1=_0x5bc0b1-0x0;var _0x31eb5f=_0xbab7[_0x5bc0b1];return _0x31eb5f;};'use strict';function Campaign(_0x49b1ff){this['id']=_0x49b1ff['id']||0x0;this[_0x7bab('0x0')]=_0x49b1ff[_0x7bab('0x0')]||'';this[_0x7bab('0x1')]=_0x49b1ff[_0x7bab('0x1')]||'campaign';this[_0x7bab('0x2')]=0x0;this[_0x7bab('0x3')]=0x0;this[_0x7bab('0x4')]=0x0;this[_0x7bab('0x5')]=0x0;this[_0x7bab('0x6')]='';this[_0x7bab('0x7')]=!![];this[_0x7bab('0x8')]=_0x49b1ff[_0x7bab('0x8')];this[_0x7bab('0x9')]=_0x49b1ff[_0x7bab('0x9')];this[_0x7bab('0xa')]=_0x49b1ff[_0x7bab('0xa')]||null;this['dialGlobalInterval']=_0x49b1ff[_0x7bab('0xb')]?_0x49b1ff[_0x7bab('0xb')]:null;this[_0x7bab('0xc')]=_0x49b1ff[_0x7bab('0xc')];this[_0x7bab('0xd')]=_0x49b1ff['dialOriginateCallerIdNumber'];this[_0x7bab('0xe')]=_0x49b1ff[_0x7bab('0xe')]||0x1e;this['dialCongestionMaxRetry']=_0x49b1ff[_0x7bab('0xf')];this['dialCongestionRetryFrequency']=_0x49b1ff[_0x7bab('0x10')];this['dialBusyMaxRetry']=_0x49b1ff[_0x7bab('0x11')];this[_0x7bab('0x12')]=_0x49b1ff[_0x7bab('0x12')];this[_0x7bab('0x13')]=_0x49b1ff[_0x7bab('0x13')];this['dialNoAnswerRetryFrequency']=_0x49b1ff['dialNoAnswerRetryFrequency'];this['dialGlobalMaxRetry']=_0x49b1ff[_0x7bab('0x14')];this[_0x7bab('0x15')]=_0x49b1ff[_0x7bab('0x15')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x49b1ff[_0x7bab('0x16')]||0x96;this[_0x7bab('0x17')]=_0x49b1ff[_0x7bab('0x17')]||0x3;this[_0x7bab('0x18')]=_0x49b1ff['dialDropRetryFrequency']||0x96;this[_0x7bab('0x19')]=_0x49b1ff['dialAbandonedMaxRetry']||0x3;this['dialAbandonedRetryFrequency']=_0x49b1ff['dialAbandonedRetryFrequency']||0x96;this['dialMachineMaxRetry']=_0x49b1ff[_0x7bab('0x1a')]||0x3;this[_0x7bab('0x1b')]=_0x49b1ff['dialMachineRetryFrequency']||0x96;this[_0x7bab('0x1c')]=_0x49b1ff[_0x7bab('0x1c')]||0x3;this[_0x7bab('0x1d')]=_0x49b1ff['dialAgentRejectRetryFrequency']||0x96;this['dialOrderByScheduledAt']=_0x49b1ff[_0x7bab('0x1e')]||_0x7bab('0x1f');this[_0x7bab('0x20')]=_0x49b1ff[_0x7bab('0x20')]||undefined;this[_0x7bab('0x21')]=_0x49b1ff[_0x7bab('0x21')]||undefined;this[_0x7bab('0x22')]=_0x49b1ff[_0x7bab('0x22')]||undefined;this['TrunkBackup']=_0x49b1ff[_0x7bab('0x23')]?_0x49b1ff[_0x7bab('0x23')]:undefined;this[_0x7bab('0x24')]=_0x49b1ff[_0x7bab('0x24')]?_0x49b1ff[_0x7bab('0x24')]:undefined;this['Interval']=_0x49b1ff['Interval']?_0x49b1ff[_0x7bab('0x25')]:undefined;this[_0x7bab('0x26')]=_0x49b1ff[_0x7bab('0x26')]?_0x49b1ff[_0x7bab('0x26')]:undefined;this[_0x7bab('0x27')]=_0x49b1ff[_0x7bab('0x26')]?_0x49b1ff[_0x7bab('0x26')][_0x7bab('0x0')]:undefined;this['dialAMDActive']=_0x49b1ff[_0x7bab('0x28')]||![];this['dialAMDInitialSilence']=_0x49b1ff[_0x7bab('0x29')];this['dialAMDGreeting']=_0x49b1ff[_0x7bab('0x2a')];this[_0x7bab('0x2b')]=_0x49b1ff['dialAMDAfterGreetingSilence'];this[_0x7bab('0x2c')]=_0x49b1ff[_0x7bab('0x2c')];this[_0x7bab('0x2d')]=_0x49b1ff[_0x7bab('0x2d')];this['dialAMDBetweenWordsSilence']=_0x49b1ff[_0x7bab('0x2e')];this[_0x7bab('0x2f')]=_0x49b1ff[_0x7bab('0x2f')];this[_0x7bab('0x30')]=_0x49b1ff['dialAMDSilenceThreshold'];this[_0x7bab('0x31')]=_0x49b1ff[_0x7bab('0x31')];}module[_0x7bab('0x32')]=Campaign;
\ No newline at end of file
index 84ceb8c..49c6316 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x383b=['lastapplication','billableseconds','holdtime','type','tag','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferType','mohtime','starttime','destinationchannel','calleridnum','calleridname','connectedlinename','context','uniqueid','linkedid','exten','answered','answertime','unmanaged','abandoned'];(function(_0x42e4d7,_0x4bd202){var _0x346cd8=function(_0x36c0f6){while(--_0x36c0f6){_0x42e4d7['push'](_0x42e4d7['shift']());}};_0x346cd8(++_0x4bd202);}(_0x383b,0x89));var _0xb383=function(_0x2c9ee7,_0x41c477){_0x2c9ee7=_0x2c9ee7-0x0;var _0x27fdc6=_0x383b[_0x2c9ee7];return _0x27fdc6;};'use strict';function Channel(){this[_0xb383('0x0')]=null;this['channel']='';this[_0xb383('0x1')]='';this[_0xb383('0x2')]=0x0;this[_0xb383('0x3')]='';this['connectedlinenum']=undefined;this[_0xb383('0x4')]=undefined;this['accountcode']=0x0;this[_0xb383('0x5')]='';this[_0xb383('0x6')]=0x0;this[_0xb383('0x7')]=0x0;this[_0xb383('0x8')]=0x0;this[_0xb383('0x9')]=![];this[_0xb383('0xa')]=null;this['endtime']=null;this[_0xb383('0xb')]=![];this[_0xb383('0xc')]=![];this[_0xb383('0xd')]='';this['lastdata']='';this['duration']=0x0;this[_0xb383('0xe')]=0x0;this[_0xb383('0xf')]=0x0;this[_0xb383('0x10')]=null;this[_0xb383('0x11')]=null;this['disposition']=null;this[_0xb383('0x12')]=![];this[_0xb383('0x13')]=null;this[_0xb383('0x14')]=null;this[_0xb383('0x15')]=[];this[_0xb383('0x16')]=undefined;this['transferconnectedlinenum']=undefined;this[_0xb383('0x17')]=undefined;this[_0xb383('0x18')]=0x0;}module['exports']=Channel;
\ No newline at end of file
+var _0x4baa=['calleridname','connectedlinenum','connectedlinename','accountcode','uniqueid','linkedid','exten','answered','answertime','endtime','unmanaged','abandoned','lastapplication','duration','billableseconds','type','disposition','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','mohtime','destinationchannel'];(function(_0x4e8820,_0x57a45c){var _0x3171ff=function(_0x3536aa){while(--_0x3536aa){_0x4e8820['push'](_0x4e8820['shift']());}};_0x3171ff(++_0x57a45c);}(_0x4baa,0x14f));var _0xa4ba=function(_0x3c7f77,_0x50b2a2){_0x3c7f77=_0x3c7f77-0x0;var _0x7f4d0=_0x4baa[_0x3c7f77];return _0x7f4d0;};'use strict';function Channel(){this['starttime']=null;this['channel']='';this[_0xa4ba('0x0')]='';this['calleridnum']=0x0;this[_0xa4ba('0x1')]='';this[_0xa4ba('0x2')]=undefined;this[_0xa4ba('0x3')]=undefined;this[_0xa4ba('0x4')]=0x0;this['context']='';this[_0xa4ba('0x5')]=0x0;this[_0xa4ba('0x6')]=0x0;this[_0xa4ba('0x7')]=0x0;this[_0xa4ba('0x8')]=![];this[_0xa4ba('0x9')]=null;this[_0xa4ba('0xa')]=null;this[_0xa4ba('0xb')]=![];this[_0xa4ba('0xc')]=![];this[_0xa4ba('0xd')]='';this['lastdata']='';this[_0xa4ba('0xe')]=0x0;this[_0xa4ba('0xf')]=0x0;this['holdtime']=0x0;this[_0xa4ba('0x10')]=null;this['tag']=null;this[_0xa4ba('0x11')]=null;this['monitor']=![];this[_0xa4ba('0x12')]=null;this[_0xa4ba('0x13')]=null;this[_0xa4ba('0x14')]=[];this[_0xa4ba('0x15')]=undefined;this[_0xa4ba('0x16')]=undefined;this['transferType']=undefined;this[_0xa4ba('0x17')]=0x0;}module['exports']=Channel;
\ No newline at end of file
index 652c04e..37fb6fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x074b=['Configurations','exports','name','username','remoteUri','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl'];(function(_0x5d0649,_0x420088){var _0x429327=function(_0x1c157d){while(--_0x1c157d){_0x5d0649['push'](_0x5d0649['shift']());}};_0x429327(++_0x420088);}(_0x074b,0xe6));var _0xb074=function(_0x19b19b,_0x53c6ee){_0x19b19b=_0x19b19b-0x0;var _0x1d67ed=_0x074b[_0x19b19b];return _0x1d67ed;};'use strict';function DeskAccount(_0x17c778){this['id']=_0x17c778['id']||0x0;this[_0xb074('0x0')]=_0x17c778[_0xb074('0x0')]||'';this[_0xb074('0x1')]=_0x17c778[_0xb074('0x1')]||'';this[_0xb074('0x2')]=_0x17c778['remoteUri']||'';this['authType']=_0x17c778['authType']||'';this[_0xb074('0x3')]=_0x17c778['password']||'';this[_0xb074('0x4')]=_0x17c778['consumerKey']||'';this['consumerSecret']=_0x17c778[_0xb074('0x5')]||'';this[_0xb074('0x6')]=_0x17c778[_0xb074('0x6')]||'';this['tokenSecret']=_0x17c778[_0xb074('0x7')]||'';this[_0xb074('0x8')]=_0x17c778[_0xb074('0x8')]||'';this[_0xb074('0x9')]=_0x17c778[_0xb074('0x9')]||'';this[_0xb074('0xa')]=_0x17c778[_0xb074('0xa')]||{};}module[_0xb074('0xb')]=DeskAccount;
\ No newline at end of file
+var _0xde2f=['tokenSecret','type','serverUrl','Configurations','exports','name','remoteUri','password','consumerKey','consumerSecret','token'];(function(_0x956efa,_0x3f8d74){var _0x2ed83c=function(_0x241f94){while(--_0x241f94){_0x956efa['push'](_0x956efa['shift']());}};_0x2ed83c(++_0x3f8d74);}(_0xde2f,0x1e9));var _0xfde2=function(_0x3a6371,_0x23c284){_0x3a6371=_0x3a6371-0x0;var _0x30b1ea=_0xde2f[_0x3a6371];return _0x30b1ea;};'use strict';function DeskAccount(_0x5acdf1){this['id']=_0x5acdf1['id']||0x0;this[_0xfde2('0x0')]=_0x5acdf1[_0xfde2('0x0')]||'';this['username']=_0x5acdf1['username']||'';this[_0xfde2('0x1')]=_0x5acdf1[_0xfde2('0x1')]||'';this['authType']=_0x5acdf1['authType']||'';this[_0xfde2('0x2')]=_0x5acdf1[_0xfde2('0x2')]||'';this[_0xfde2('0x3')]=_0x5acdf1['consumerKey']||'';this[_0xfde2('0x4')]=_0x5acdf1[_0xfde2('0x4')]||'';this['token']=_0x5acdf1[_0xfde2('0x5')]||'';this[_0xfde2('0x6')]=_0x5acdf1[_0xfde2('0x6')]||'';this[_0xfde2('0x7')]=_0x5acdf1[_0xfde2('0x7')]||'';this[_0xfde2('0x8')]=_0x5acdf1['serverUrl']||'';this[_0xfde2('0x9')]=_0x5acdf1[_0xfde2('0x9')]||{};}module[_0xfde2('0xa')]=DeskAccount;
\ No newline at end of file
index 273fb7a..9c10814 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['exports','name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','Configurations'];(function(_0x56c514,_0x273aa2){var _0x3e2108=function(_0x22ed5a){while(--_0x22ed5a){_0x56c514['push'](_0x56c514['shift']());}};_0x3e2108(++_0x273aa2);}(_0x91a7,0xe7));var _0x791a=function(_0x58e3ee,_0x3ad5ba){_0x58e3ee=_0x58e3ee-0x0;var _0x76c60b=_0x91a7[_0x58e3ee];return _0x76c60b;};'use strict';function Dynamics365Account(_0x27c92e){this['id']=_0x27c92e['id']||0x0;this[_0x791a('0x0')]=_0x27c92e[_0x791a('0x0')]||'';this[_0x791a('0x1')]=_0x27c92e['username']||'';this[_0x791a('0x2')]=_0x27c92e['password']||'';this[_0x791a('0x3')]=_0x27c92e['remoteUri']||'';this['tenantId']=_0x27c92e[_0x791a('0x4')]||'';this[_0x791a('0x5')]=_0x27c92e['clientId']||'';this[_0x791a('0x6')]=_0x27c92e['clientSecret']||{};this[_0x791a('0x7')]=_0x27c92e[_0x791a('0x7')]||'';this['Configurations']=_0x27c92e[_0x791a('0x8')]||{};}module[_0x791a('0x9')]=Dynamics365Account;
\ No newline at end of file
+var _0xda3f=['clientId','serverUrl','Configurations','exports','name','password','remoteUri','tenantId'];(function(_0x58cf02,_0x204077){var _0x4ff4e3=function(_0x5a018e){while(--_0x5a018e){_0x58cf02['push'](_0x58cf02['shift']());}};_0x4ff4e3(++_0x204077);}(_0xda3f,0xec));var _0xfda3=function(_0xd3c6cf,_0x16e3d7){_0xd3c6cf=_0xd3c6cf-0x0;var _0x982419=_0xda3f[_0xd3c6cf];return _0x982419;};'use strict';function Dynamics365Account(_0x33f0ce){this['id']=_0x33f0ce['id']||0x0;this[_0xfda3('0x0')]=_0x33f0ce[_0xfda3('0x0')]||'';this['username']=_0x33f0ce['username']||'';this['password']=_0x33f0ce[_0xfda3('0x1')]||'';this['remoteUri']=_0x33f0ce[_0xfda3('0x2')]||'';this[_0xfda3('0x3')]=_0x33f0ce['tenantId']||'';this[_0xfda3('0x4')]=_0x33f0ce[_0xfda3('0x4')]||'';this['clientSecret']=_0x33f0ce['clientSecret']||{};this[_0xfda3('0x5')]=_0x33f0ce[_0xfda3('0x5')]||'';this[_0xfda3('0x6')]=_0x33f0ce[_0xfda3('0x6')]||{};}module[_0xfda3('0x7')]=Dynamics365Account;
\ No newline at end of file
index 70cd6cf..f827851 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7ec=['t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway'];(function(_0x11dc89,_0x4983cc){var _0xeab215=function(_0x371db6){while(--_0x371db6){_0x11dc89['push'](_0x11dc89['shift']());}};_0xeab215(++_0x4983cc);}(_0xc7ec,0x77));var _0xcc7e=function(_0x305b20,_0x5e57e9){_0x305b20=_0x305b20-0x0;var _0x26d64a=_0xc7ec[_0x305b20];return _0x26d64a;};'use strict';function FaxAccount(_0x468810){this['id']=_0x468810['id']||0x0;this[_0xcc7e('0x0')]=_0x468810[_0xcc7e('0x0')]||'';this[_0xcc7e('0x1')]=_0x468810[_0xcc7e('0x1')];this[_0xcc7e('0x2')]=_0x468810[_0xcc7e('0x2')];this[_0xcc7e('0x3')]=_0x468810['headerinfo'];this[_0xcc7e('0x4')]=_0x468810[_0xcc7e('0x4')];this[_0xcc7e('0x5')]=_0x468810[_0xcc7e('0x5')]||0x960;this[_0xcc7e('0x6')]=_0x468810[_0xcc7e('0x6')]||0x3840;this[_0xcc7e('0x7')]=_0x468810[_0xcc7e('0x7')]||'v17,v27,v29';this[_0xcc7e('0x8')]=_0x468810[_0xcc7e('0x8')]||'no';this['faxdetect']=_0x468810['faxdetect']||'no';this[_0xcc7e('0x9')]=_0x468810[_0xcc7e('0x9')]||0x1388;this[_0xcc7e('0xa')]=_0x468810[_0xcc7e('0xa')]||_0xcc7e('0xb');this[_0xcc7e('0xc')]=_0x468810['Trunk']?_0x468810[_0xcc7e('0xc')]:undefined;this[_0xcc7e('0xd')]=_0x468810[_0xcc7e('0xd')];this[_0xcc7e('0xe')]=_0x468810['key'];}module[_0xcc7e('0xf')]=FaxAccount;
\ No newline at end of file
+var _0x9ac9=['ListId','key','exports','name','description','ecm','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk'];(function(_0x189b45,_0x6ea5d6){var _0x439608=function(_0x4b6973){while(--_0x4b6973){_0x189b45['push'](_0x189b45['shift']());}};_0x439608(++_0x6ea5d6);}(_0x9ac9,0x124));var _0x99ac=function(_0x4e274b,_0xa32b44){_0x4e274b=_0x4e274b-0x0;var _0x372167=_0x9ac9[_0x4e274b];return _0x372167;};'use strict';function FaxAccount(_0x68475b){this['id']=_0x68475b['id']||0x0;this[_0x99ac('0x0')]=_0x68475b[_0x99ac('0x0')]||'';this[_0x99ac('0x1')]=_0x68475b[_0x99ac('0x1')];this[_0x99ac('0x2')]=_0x68475b[_0x99ac('0x2')];this['headerinfo']=_0x68475b['headerinfo'];this[_0x99ac('0x3')]=_0x68475b[_0x99ac('0x3')];this['minrate']=_0x68475b[_0x99ac('0x4')]||0x960;this['maxrate']=_0x68475b[_0x99ac('0x5')]||0x3840;this['modem']=_0x68475b[_0x99ac('0x6')]||_0x99ac('0x7');this[_0x99ac('0x8')]=_0x68475b[_0x99ac('0x8')]||'no';this[_0x99ac('0x9')]=_0x68475b[_0x99ac('0x9')]||'no';this[_0x99ac('0xa')]=_0x68475b['t38timeout']||0x1388;this[_0x99ac('0xb')]=_0x68475b[_0x99ac('0xb')]||_0x99ac('0xc');this[_0x99ac('0xd')]=_0x68475b['Trunk']?_0x68475b[_0x99ac('0xd')]:undefined;this[_0x99ac('0xe')]=_0x68475b['ListId'];this[_0x99ac('0xf')]=_0x68475b[_0x99ac('0xf')];}module[_0x99ac('0x10')]=FaxAccount;
\ No newline at end of file
index d74da5c..ef3209d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c84=['serverUrl','Configurations','exports','name','username','apiKey','token','remoteUri'];(function(_0x3fa933,_0x190a6d){var _0x52846d=function(_0x4e856b){while(--_0x4e856b){_0x3fa933['push'](_0x3fa933['shift']());}};_0x52846d(++_0x190a6d);}(_0x7c84,0x18b));var _0x47c8=function(_0x1f0f20,_0x3744f5){_0x1f0f20=_0x1f0f20-0x0;var _0x1e9ad0=_0x7c84[_0x1f0f20];return _0x1e9ad0;};'use strict';function FreshdeskAccount(_0x3f5fe0){this['id']=_0x3f5fe0['id']||0x0;this[_0x47c8('0x0')]=_0x3f5fe0[_0x47c8('0x0')]||'';this[_0x47c8('0x1')]=_0x3f5fe0[_0x47c8('0x1')]||'';this[_0x47c8('0x2')]=_0x3f5fe0[_0x47c8('0x3')]||'';this[_0x47c8('0x4')]=_0x3f5fe0['remoteUri']||'';this[_0x47c8('0x5')]=_0x3f5fe0[_0x47c8('0x5')]||'';this[_0x47c8('0x6')]=_0x3f5fe0[_0x47c8('0x6')]||{};}module[_0x47c8('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0xfa66=['token','serverUrl','Configurations','exports','name','username','apiKey'];(function(_0x443d7e,_0x5e3d2f){var _0x4401ec=function(_0x5b9ddd){while(--_0x5b9ddd){_0x443d7e['push'](_0x443d7e['shift']());}};_0x4401ec(++_0x5e3d2f);}(_0xfa66,0x18c));var _0x6fa6=function(_0x18b029,_0x20e00a){_0x18b029=_0x18b029-0x0;var _0x42fd10=_0xfa66[_0x18b029];return _0x42fd10;};'use strict';function FreshdeskAccount(_0x3570bd){this['id']=_0x3570bd['id']||0x0;this[_0x6fa6('0x0')]=_0x3570bd[_0x6fa6('0x0')]||'';this['username']=_0x3570bd[_0x6fa6('0x1')]||'';this[_0x6fa6('0x2')]=_0x3570bd[_0x6fa6('0x3')]||'';this['remoteUri']=_0x3570bd['remoteUri']||'';this['serverUrl']=_0x3570bd[_0x6fa6('0x4')]||'';this[_0x6fa6('0x5')]=_0x3570bd['Configurations']||{};}module[_0x6fa6('0x6')]=FreshdeskAccount;
\ No newline at end of file
index f3ae3ca..c6d3478 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4aa3=['exports','name','username','token','remoteUri','serverUrl','Configurations'];(function(_0x3577d1,_0x4893f0){var _0x597460=function(_0x974ff){while(--_0x974ff){_0x3577d1['push'](_0x3577d1['shift']());}};_0x597460(++_0x4893f0);}(_0x4aa3,0x174));var _0x34aa=function(_0x5862e3,_0x50d643){_0x5862e3=_0x5862e3-0x0;var _0x1a0e81=_0x4aa3[_0x5862e3];return _0x1a0e81;};'use strict';function FreshsalesAccount(_0x45ec6e){this['id']=_0x45ec6e['id']||0x0;this[_0x34aa('0x0')]=_0x45ec6e['name']||'';this[_0x34aa('0x1')]=_0x45ec6e[_0x34aa('0x1')]||'';this['apiKey']=_0x45ec6e[_0x34aa('0x2')]||'';this[_0x34aa('0x3')]=_0x45ec6e['remoteUri']||'';this[_0x34aa('0x4')]=_0x45ec6e[_0x34aa('0x4')]||'';this[_0x34aa('0x5')]=_0x45ec6e['Configurations']||{};}module[_0x34aa('0x6')]=FreshsalesAccount;
\ No newline at end of file
+var _0x1dcc=['name','username','apiKey','remoteUri','serverUrl','Configurations','exports'];(function(_0x28a80e,_0x2127ee){var _0x59c8cb=function(_0x3ce8f4){while(--_0x3ce8f4){_0x28a80e['push'](_0x28a80e['shift']());}};_0x59c8cb(++_0x2127ee);}(_0x1dcc,0x1ea));var _0xc1dc=function(_0x3c1bfc,_0x41bd67){_0x3c1bfc=_0x3c1bfc-0x0;var _0x2e09eb=_0x1dcc[_0x3c1bfc];return _0x2e09eb;};'use strict';function FreshsalesAccount(_0x586379){this['id']=_0x586379['id']||0x0;this[_0xc1dc('0x0')]=_0x586379[_0xc1dc('0x0')]||'';this[_0xc1dc('0x1')]=_0x586379['username']||'';this[_0xc1dc('0x2')]=_0x586379['token']||'';this[_0xc1dc('0x3')]=_0x586379[_0xc1dc('0x3')]||'';this[_0xc1dc('0x4')]=_0x586379['serverUrl']||'';this['Configurations']=_0x586379[_0xc1dc('0x5')]||{};}module[_0xc1dc('0x6')]=FreshsalesAccount;
\ No newline at end of file
index 093bde2..cd41d02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f80=['assigned','lastAssignedTo','voice','mohtime','variables','inbound','uniqueid','calleridnum','calleridname','queuecallerjoinAt','queuecallerleaveAt','count','queuecallerabandon','queuecallerabandonAt','queuecallercompleteAt','queuecallerexit','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','exten','priority'];(function(_0x2459fd,_0x575d9b){var _0x364cd2=function(_0x4b22f6){while(--_0x4b22f6){_0x2459fd['push'](_0x2459fd['shift']());}};_0x364cd2(++_0x575d9b);}(_0x2f80,0x155));var _0x02f8=function(_0x33fb76,_0x450ed3){_0x33fb76=_0x33fb76-0x0;var _0x41033e=_0x2f80[_0x33fb76];return _0x41033e;};'use strict';function QueueReport(){this['type']=_0x02f8('0x0');this[_0x02f8('0x1')]='';this[_0x02f8('0x2')]='';this[_0x02f8('0x3')]='';this['queue']='';this[_0x02f8('0x4')]=null;this[_0x02f8('0x5')]=null;this['position']=0x1;this[_0x02f8('0x6')]=0x1;this[_0x02f8('0x7')]=![];this[_0x02f8('0x8')]=null;this['queuecallercomplete']=![];this[_0x02f8('0x9')]=null;this[_0x02f8('0xa')]=![];this['queuecallerexitAt']=null;this[_0x02f8('0xb')]=0x1;this[_0x02f8('0xc')]='';this[_0x02f8('0xd')]='';this[_0x02f8('0xe')]='';this[_0x02f8('0xf')]='';this[_0x02f8('0x10')]='';this[_0x02f8('0x11')]='';this[_0x02f8('0x12')]='';this['holdtime']=0x0;this[_0x02f8('0x13')]=![];this[_0x02f8('0x14')]='';this['motionChannel']=_0x02f8('0x15');this[_0x02f8('0x16')]=0x0;this[_0x02f8('0x17')]={};}module['exports']=QueueReport;
\ No newline at end of file
+var _0x0ecd=['calleridnum','calleridname','queue','queuecallerjoinAt','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','exten','holdtime','assigned','lastAssignedTo','mohtime','variables','exports','type','inbound','uniqueid'];(function(_0x32cc05,_0x106d41){var _0x445e74=function(_0x5209d0){while(--_0x5209d0){_0x32cc05['push'](_0x32cc05['shift']());}};_0x445e74(++_0x106d41);}(_0x0ecd,0x99));var _0xd0ec=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0ecd[_0x3dd15e];return _0x231fd0;};'use strict';function QueueReport(){this[_0xd0ec('0x0')]=_0xd0ec('0x1');this[_0xd0ec('0x2')]='';this[_0xd0ec('0x3')]='';this[_0xd0ec('0x4')]='';this[_0xd0ec('0x5')]='';this[_0xd0ec('0x6')]=null;this['queuecallerleaveAt']=null;this['position']=0x1;this[_0xd0ec('0x7')]=0x1;this[_0xd0ec('0x8')]=![];this[_0xd0ec('0x9')]=null;this[_0xd0ec('0xa')]=![];this[_0xd0ec('0xb')]=null;this[_0xd0ec('0xc')]=![];this['queuecallerexitAt']=null;this[_0xd0ec('0xd')]=0x1;this[_0xd0ec('0xe')]='';this[_0xd0ec('0xf')]='';this[_0xd0ec('0x10')]='';this[_0xd0ec('0x11')]='';this[_0xd0ec('0x12')]='';this[_0xd0ec('0x13')]='';this['priority']='';this[_0xd0ec('0x14')]=0x0;this[_0xd0ec('0x15')]=![];this[_0xd0ec('0x16')]='';this[_0xd0ec('0x17')]=0x0;this[_0xd0ec('0x18')]={};}module[_0xd0ec('0x19')]=QueueReport;
\ No newline at end of file
index 2abd48b..ad9906d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x046a=['integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','clientId','clientSecret','securityToken','type'];(function(_0x2c264f,_0x17e72a){var _0x53aa2f=function(_0x1505d0){while(--_0x1505d0){_0x2c264f['push'](_0x2c264f['shift']());}};_0x53aa2f(++_0x17e72a);}(_0x046a,0x122));var _0xa046=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x046a[_0x9df060];return _0x338dfe;};'use strict';function SalesforceAccount(_0x17b5a6){this['id']=_0x17b5a6['id']||0x0;this['name']=_0x17b5a6[_0xa046('0x0')]||'';this[_0xa046('0x1')]=_0x17b5a6[_0xa046('0x1')]||'';this[_0xa046('0x2')]=_0x17b5a6['remoteUri']||'';this['password']=_0x17b5a6['password']||'';this['clientId']=_0x17b5a6[_0xa046('0x3')]||'';this[_0xa046('0x4')]=_0x17b5a6[_0xa046('0x4')]||'';this[_0xa046('0x5')]=_0x17b5a6['securityToken']||'';this[_0xa046('0x6')]=_0x17b5a6[_0xa046('0x6')]||_0xa046('0x7');this['serverUrl']=_0x17b5a6[_0xa046('0x8')]||'';this[_0xa046('0x9')]=_0x17b5a6[_0xa046('0x9')]||{};}module[_0xa046('0xa')]=SalesforceAccount;
\ No newline at end of file
+var _0x2317=['clientSecret','securityToken','type','serverUrl','Configurations','name','username','remoteUri','password','clientId'];(function(_0x22f8ab,_0x15d8ff){var _0x2a70e5=function(_0x5e6895){while(--_0x5e6895){_0x22f8ab['push'](_0x22f8ab['shift']());}};_0x2a70e5(++_0x15d8ff);}(_0x2317,0x16d));var _0x7231=function(_0x4be89f,_0x440c7c){_0x4be89f=_0x4be89f-0x0;var _0x5b52b9=_0x2317[_0x4be89f];return _0x5b52b9;};'use strict';function SalesforceAccount(_0x4062f9){this['id']=_0x4062f9['id']||0x0;this[_0x7231('0x0')]=_0x4062f9[_0x7231('0x0')]||'';this['username']=_0x4062f9[_0x7231('0x1')]||'';this[_0x7231('0x2')]=_0x4062f9[_0x7231('0x2')]||'';this['password']=_0x4062f9[_0x7231('0x3')]||'';this['clientId']=_0x4062f9[_0x7231('0x4')]||'';this[_0x7231('0x5')]=_0x4062f9['clientSecret']||'';this[_0x7231('0x6')]=_0x4062f9[_0x7231('0x6')]||'';this[_0x7231('0x7')]=_0x4062f9[_0x7231('0x7')]||'integrationTab';this[_0x7231('0x8')]=_0x4062f9[_0x7231('0x8')]||'';this[_0x7231('0x9')]=_0x4062f9[_0x7231('0x9')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
index cf63181..f32fba7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0cd=['Configurations','name','username','password','remoteUri'];(function(_0x379da5,_0x2394ee){var _0x522f9c=function(_0x4c1cbd){while(--_0x4c1cbd){_0x379da5['push'](_0x379da5['shift']());}};_0x522f9c(++_0x2394ee);}(_0xd0cd,0x150));var _0xdd0c=function(_0x159969,_0x48b72a){_0x159969=_0x159969-0x0;var _0x21fb4b=_0xd0cd[_0x159969];return _0x21fb4b;};'use strict';function ServicenowAccount(_0x12ce6e){this['id']=_0x12ce6e['id']||0x0;this[_0xdd0c('0x0')]=_0x12ce6e['name']||'';this['username']=_0x12ce6e[_0xdd0c('0x1')]||'';this[_0xdd0c('0x2')]=_0x12ce6e[_0xdd0c('0x2')]||'';this[_0xdd0c('0x3')]=_0x12ce6e['remoteUri']||'';this['serverUrl']=_0x12ce6e['serverUrl']||'';this['Configurations']=_0x12ce6e[_0xdd0c('0x4')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
+var _0xe47e=['password','remoteUri','serverUrl','Configurations','name','username'];(function(_0x37d1ee,_0x4ff0b2){var _0x5aca83=function(_0x1c9fe0){while(--_0x1c9fe0){_0x37d1ee['push'](_0x37d1ee['shift']());}};_0x5aca83(++_0x4ff0b2);}(_0xe47e,0x11e));var _0xee47=function(_0x1e6db3,_0x5643ac){_0x1e6db3=_0x1e6db3-0x0;var _0x1de886=_0xe47e[_0x1e6db3];return _0x1de886;};'use strict';function ServicenowAccount(_0x1bca5c){this['id']=_0x1bca5c['id']||0x0;this[_0xee47('0x0')]=_0x1bca5c[_0xee47('0x0')]||'';this[_0xee47('0x1')]=_0x1bca5c[_0xee47('0x1')]||'';this[_0xee47('0x2')]=_0x1bca5c[_0xee47('0x2')]||'';this[_0xee47('0x3')]=_0x1bca5c['remoteUri']||'';this['serverUrl']=_0x1bca5c[_0xee47('0x4')]||'';this['Configurations']=_0x1bca5c[_0xee47('0x5')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
index 813835d..ea8b21a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9241=['username','password','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x30461e,_0x370d8b){var _0x567052=function(_0x546fbd){while(--_0x546fbd){_0x30461e['push'](_0x30461e['shift']());}};_0x567052(++_0x370d8b);}(_0x9241,0x76));var _0x1924=function(_0x2f446d,_0x5bccb7){_0x2f446d=_0x2f446d-0x0;var _0x3c5551=_0x9241[_0x2f446d];return _0x3c5551;};'use strict';function SugarcrmAccount(_0x3ed7a1){this['id']=_0x3ed7a1['id']||0x0;this[_0x1924('0x0')]=_0x3ed7a1['name']||'';this[_0x1924('0x1')]=_0x3ed7a1[_0x1924('0x1')]||'';this[_0x1924('0x2')]=_0x3ed7a1[_0x1924('0x2')]||'';this[_0x1924('0x3')]=_0x3ed7a1['remoteUri']||'';this[_0x1924('0x4')]=_0x3ed7a1[_0x1924('0x4')]||'';this[_0x1924('0x5')]=_0x3ed7a1['Configurations']||{};}module[_0x1924('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x560e=['remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x560e,0x184));var _0xe560=function(_0x57e0c8,_0x11f3c4){_0x57e0c8=_0x57e0c8-0x0;var _0x3bfa1d=_0x560e[_0x57e0c8];return _0x3bfa1d;};'use strict';function SugarcrmAccount(_0x447d5a){this['id']=_0x447d5a['id']||0x0;this['name']=_0x447d5a[_0xe560('0x0')]||'';this[_0xe560('0x1')]=_0x447d5a[_0xe560('0x1')]||'';this['password']=_0x447d5a['password']||'';this[_0xe560('0x2')]=_0x447d5a[_0xe560('0x2')]||'';this[_0xe560('0x3')]=_0x447d5a[_0xe560('0x3')]||'';this[_0xe560('0x4')]=_0x447d5a[_0xe560('0x4')]||{};}module[_0xe560('0x5')]=SugarcrmAccount;
\ No newline at end of file
index b8aa158..c372641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd657=['address','name','accountcode','state','unknown','stateTime','status'];(function(_0x466e57,_0x21b819){var _0x34df42=function(_0x3e9758){while(--_0x3e9758){_0x466e57['push'](_0x466e57['shift']());}};_0x34df42(++_0x21b819);}(_0xd657,0x71));var _0x7d65=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd657[_0x3dd15e];return _0x231fd0;};'use strict';function Telephone(_0x8af4f5){this['id']=_0x8af4f5['id']||0x0;this[_0x7d65('0x0')]=_0x8af4f5[_0x7d65('0x0')]||'';this['accountcode']=_0x8af4f5[_0x7d65('0x1')]||'';this[_0x7d65('0x2')]=_0x7d65('0x3');this[_0x7d65('0x4')]=0x0;this[_0x7d65('0x5')]=_0x7d65('0x3');this[_0x7d65('0x6')]='';}module['exports']=Telephone;
\ No newline at end of file
+var _0xd485=['status','unknown','name','accountcode'];(function(_0x484003,_0x439971){var _0x7fb094=function(_0xb05882){while(--_0xb05882){_0x484003['push'](_0x484003['shift']());}};_0x7fb094(++_0x439971);}(_0xd485,0x1e6));var _0x5d48=function(_0xbc7a79,_0x3ac8d7){_0xbc7a79=_0xbc7a79-0x0;var _0x105c12=_0xd485[_0xbc7a79];return _0x105c12;};'use strict';function Telephone(_0x3468fd){this['id']=_0x3468fd['id']||0x0;this[_0x5d48('0x0')]=_0x3468fd[_0x5d48('0x0')]||'';this[_0x5d48('0x1')]=_0x3468fd[_0x5d48('0x1')]||'';this['state']='unknown';this['stateTime']=0x0;this[_0x5d48('0x2')]=_0x5d48('0x3');this['address']='';}module['exports']=Telephone;
\ No newline at end of file
index 0a4fc40..edf977b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x2abd0c,_0x42b690){var _0x35d71f=function(_0x4e8699){while(--_0x4e8699){_0x2abd0c['push'](_0x2abd0c['shift']());}};_0x35d71f(++_0x42b690);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'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(_0x4119d7,_0x1001b8){var _0x5f1639=function(_0x37babf){while(--_0x37babf){_0x4119d7['push'](_0x4119d7['shift']());}};_0x5f1639(++_0x1001b8);}(_0xb10b,0x12a));var _0xbb10=function(_0x20025e,_0x44c8e1){_0x20025e=_0x20025e-0x0;var _0x4a5ac4=_0xb10b[_0x20025e];return _0x4a5ac4;};'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 923105d..e79ef77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['AllConditions','AnyConditions','Actions','exports','name','channel','status'];(function(_0x5cbd0e,_0x260f33){var _0x532100=function(_0x39b810){while(--_0x39b810){_0x5cbd0e['push'](_0x5cbd0e['shift']());}};_0x532100(++_0x260f33);}(_0xb10b,0x12a));var _0xbb10=function(_0x580f33,_0x4d524d){_0x580f33=_0x580f33-0x0;var _0x4f9e76=_0xb10b[_0x580f33];return _0x4f9e76;};'use strict';function Trigger(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'voice';this[_0xbb10('0x2')]=_0x13ce8d[_0xbb10('0x2')]||![];this[_0xbb10('0x3')]=_0x13ce8d[_0xbb10('0x3')]||[];this[_0xbb10('0x4')]=_0x13ce8d[_0xbb10('0x4')]||[];this['Actions']=_0x13ce8d[_0xbb10('0x5')]||[];}module[_0xbb10('0x6')]=Trigger;
\ No newline at end of file
+var _0xda3f=['Actions','name','status','AllConditions','AnyConditions'];(function(_0x15b972,_0x1aef38){var _0x2ba990=function(_0x32d5e7){while(--_0x32d5e7){_0x15b972['push'](_0x15b972['shift']());}};_0x2ba990(++_0x1aef38);}(_0xda3f,0xec));var _0xfda3=function(_0x35c946,_0x10aa64){_0x35c946=_0x35c946-0x0;var _0x1e1fae=_0xda3f[_0x35c946];return _0x1e1fae;};'use strict';function Trigger(_0x33f0ce){this['id']=_0x33f0ce['id']||0x0;this[_0xfda3('0x0')]=_0x33f0ce[_0xfda3('0x0')]||'';this['channel']=_0x33f0ce['channel']||'voice';this[_0xfda3('0x1')]=_0x33f0ce['status']||![];this[_0xfda3('0x2')]=_0x33f0ce[_0xfda3('0x2')]||[];this['AnyConditions']=_0x33f0ce[_0xfda3('0x3')]||[];this[_0xfda3('0x4')]=_0x33f0ce['Actions']||[];}module['exports']=Trigger;
\ No newline at end of file
index 368a9fc..2ef26a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b21=['registrationtime','defaultuser','exports','active','name','state','unknown','stateTime','status','registry','indexOf','split','host','domain','domainport'];(function(_0x4f616b,_0x4cb423){var _0x1ef1c0=function(_0x5c59f8){while(--_0x5c59f8){_0x4f616b['push'](_0x4f616b['shift']());}};_0x1ef1c0(++_0x4cb423);}(_0x3b21,0x102));var _0x13b2=function(_0xc29009,_0x30e181){_0xc29009=_0xc29009-0x0;var _0x1d7cef=_0x3b21[_0xc29009];return _0x1d7cef;};'use strict';function Trunk(_0x407b18){this['id']=_0x407b18['id']||0x0;this['active']=_0x407b18[_0x13b2('0x0')]||![];this[_0x13b2('0x1')]=_0x407b18[_0x13b2('0x1')]||'';this[_0x13b2('0x2')]=_0x13b2('0x3');this[_0x13b2('0x4')]=0x0;this[_0x13b2('0x5')]=_0x13b2('0x3');this['registry']=_0x407b18[_0x13b2('0x6')]&&_0x407b18[_0x13b2('0x6')][_0x13b2('0x7')](':')?_0x407b18['registry'][_0x13b2('0x8')](':')[0x0]:'';this[_0x13b2('0x9')]='';this['port']='';this[_0x13b2('0xa')]='';this[_0x13b2('0xb')]='';this['refresh']='';this['stateRegistry']='unknown';this[_0x13b2('0xc')]='';this['address']='';this[_0x13b2('0xd')]=_0x407b18['defaultuser']||'';}module[_0x13b2('0xe')]=Trunk;
\ No newline at end of file
+var _0xaee8=['port','domain','domainport','refresh','stateRegistry','registrationtime','defaultuser','exports','active','name','state','stateTime','unknown','registry','split'];(function(_0x2ce591,_0x2075ec){var _0x18121b=function(_0x1288bc){while(--_0x1288bc){_0x2ce591['push'](_0x2ce591['shift']());}};_0x18121b(++_0x2075ec);}(_0xaee8,0x80));var _0x8aee=function(_0x3f6073,_0xb9d981){_0x3f6073=_0x3f6073-0x0;var _0x14b830=_0xaee8[_0x3f6073];return _0x14b830;};'use strict';function Trunk(_0x4a8206){this['id']=_0x4a8206['id']||0x0;this[_0x8aee('0x0')]=_0x4a8206[_0x8aee('0x0')]||![];this[_0x8aee('0x1')]=_0x4a8206[_0x8aee('0x1')]||'';this[_0x8aee('0x2')]='unknown';this[_0x8aee('0x3')]=0x0;this['status']=_0x8aee('0x4');this[_0x8aee('0x5')]=_0x4a8206[_0x8aee('0x5')]&&_0x4a8206[_0x8aee('0x5')]['indexOf'](':')?_0x4a8206['registry'][_0x8aee('0x6')](':')[0x0]:'';this['host']='';this[_0x8aee('0x7')]='';this[_0x8aee('0x8')]='';this[_0x8aee('0x9')]='';this[_0x8aee('0xa')]='';this[_0x8aee('0xb')]=_0x8aee('0x4');this[_0x8aee('0xc')]='';this['address']='';this[_0x8aee('0xd')]=_0x4a8206[_0x8aee('0xd')]||'';}module[_0x8aee('0xe')]=Trunk;
\ No newline at end of file
index 4ddc702..2150982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb511=['exports','exten','recordingFormat','mandatoryDisposition'];(function(_0x2aa7a5,_0x7021f2){var _0x532d06=function(_0x1ba929){while(--_0x1ba929){_0x2aa7a5['push'](_0x2aa7a5['shift']());}};_0x532d06(++_0x7021f2);}(_0xb511,0x1b9));var _0x1b51=function(_0x3d3c79,_0x27b105){_0x3d3c79=_0x3d3c79-0x0;var _0x20719e=_0xb511[_0x3d3c79];return _0x20719e;};'use strict';function voiceExtension(_0x4086cd){this['id']=_0x4086cd['id']||0x0;this[_0x1b51('0x0')]=_0x4086cd[_0x1b51('0x0')]||'';this['recordingFormat']=_0x4086cd[_0x1b51('0x1')]||'none';this[_0x1b51('0x2')]=_0x4086cd[_0x1b51('0x2')]||![];}module[_0x1b51('0x3')]=voiceExtension;
\ No newline at end of file
+var _0x50b1=['exports','exten','none'];(function(_0x34ca8c,_0x453f95){var _0x303ee5=function(_0x5856be){while(--_0x5856be){_0x34ca8c['push'](_0x34ca8c['shift']());}};_0x303ee5(++_0x453f95);}(_0x50b1,0xa0));var _0x150b=function(_0x4d2bda,_0x42e45a){_0x4d2bda=_0x4d2bda-0x0;var _0x66249f=_0x50b1[_0x4d2bda];return _0x66249f;};'use strict';function voiceExtension(_0x2e07e0){this['id']=_0x2e07e0['id']||0x0;this['exten']=_0x2e07e0[_0x150b('0x0')]||'';this['recordingFormat']=_0x2e07e0['recordingFormat']||_0x150b('0x1');this['mandatoryDisposition']=_0x2e07e0['mandatoryDisposition']||![];}module[_0x150b('0x2')]=voiceExtension;
\ No newline at end of file
index bd9e377..c8037d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1f4=['dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayACS','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalPauses','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalHitRate','erlangBusyFactor','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','not_inuse','invalid','unavailable','ringinuse','wav49','gsm','roundrobin','name','monitor_format','type','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency'];(function(_0x4fe51b,_0x5f15d8){var _0x4ea24f=function(_0x29eceb){while(--_0x29eceb){_0x4fe51b['push'](_0x4fe51b['shift']());}};_0x4ea24f(++_0x5f15d8);}(_0xd1f4,0xa8));var _0x4d1f=function(_0x532030,_0x191db8){_0x532030=_0x532030-0x0;var _0x40648a=_0xd1f4[_0x532030];return _0x40648a;};'use strict';var statusDesc=['unknown',_0x4d1f('0x0'),'inuse','busy',_0x4d1f('0x1'),_0x4d1f('0x2'),'ringing',_0x4d1f('0x3'),'onhold'];var monitorFormat={'wav':'wav','wav49':_0x4d1f('0x4'),'gsm':_0x4d1f('0x5')};var strategy={'rrmemory':'rrmemory','roundrobin':_0x4d1f('0x6')};function VoiceQueue(_0x13a7a2){this['id']=_0x13a7a2['id']||0x0;this['name']=_0x13a7a2[_0x4d1f('0x7')]||'';this[_0x4d1f('0x8')]=_0x13a7a2[_0x4d1f('0x8')]||'';this[_0x4d1f('0x9')]=_0x13a7a2[_0x4d1f('0x9')]||'inbound';this['waiting']=0x0;this['talking']=0x0;this[_0x4d1f('0xa')]=0x0;this[_0x4d1f('0xb')]=0x0;this[_0x4d1f('0xc')]=0x0;this[_0x4d1f('0xd')]=0x0;this[_0x4d1f('0xe')]=0x0;this[_0x4d1f('0xf')]=0x0;this[_0x4d1f('0x10')]=0x0;this[_0x4d1f('0x11')]=0x0;this[_0x4d1f('0x12')]=0x0;this[_0x4d1f('0x13')]=_0x13a7a2[_0x4d1f('0x13')]||![];this[_0x4d1f('0x14')]=_0x13a7a2[_0x4d1f('0x14')]||0xa;this['autopause']=_0x13a7a2[_0x4d1f('0x15')]||'no';this[_0x4d1f('0x16')]=!![];this[_0x4d1f('0x17')]='';this[_0x4d1f('0x18')]=0x0;this[_0x4d1f('0x19')]=0x0;this[_0x4d1f('0x1a')]=_0x13a7a2[_0x4d1f('0x1a')]||null;this[_0x4d1f('0x1b')]=_0x13a7a2[_0x4d1f('0x1b')]?_0x13a7a2[_0x4d1f('0x1b')]:null;this[_0x4d1f('0x1c')]=_0x13a7a2[_0x4d1f('0x1c')];this[_0x4d1f('0x1d')]=_0x13a7a2['dialMethod']||_0x4d1f('0x1e');this[_0x4d1f('0x1f')]=_0x13a7a2[_0x4d1f('0x1f')]||0x0;this[_0x4d1f('0x20')]=_0x13a7a2['dialLimitQueue']||0x0;this['dialPowerLevel']=_0x13a7a2[_0x4d1f('0x21')]||0x1;this[_0x4d1f('0x22')]=_0x13a7a2[_0x4d1f('0x22')]||_0x4d1f('0x23');this[_0x4d1f('0x24')]=_0x13a7a2[_0x4d1f('0x24')]||0.03;this['dialPredictiveInterval']=_0x13a7a2[_0x4d1f('0x25')]||0x258;this[_0x4d1f('0x26')]=_0x13a7a2[_0x4d1f('0x26')]||_0x4d1f('0x27');this[_0x4d1f('0x28')]=_0x13a7a2[_0x4d1f('0x28')]||_0x4d1f('0x27');this['dialOriginateTimeout']=_0x13a7a2[_0x4d1f('0x29')]||0x1e;this['dialQueueOptions']=_0x13a7a2[_0x4d1f('0x2a')]||_0x4d1f('0x2b');this[_0x4d1f('0x2c')]=_0x13a7a2[_0x4d1f('0x2c')]||0x3;this[_0x4d1f('0x2d')]=_0x13a7a2['dialQueueProject']||undefined;this['dialCongestionMaxRetry']=_0x13a7a2[_0x4d1f('0x2e')]||0x3;this[_0x4d1f('0x2f')]=_0x13a7a2['dialCongestionRetryFrequency']||0x96;this[_0x4d1f('0x30')]=_0x13a7a2['dialBusyMaxRetry']||0x3;this[_0x4d1f('0x31')]=_0x13a7a2[_0x4d1f('0x31')]||0x96;this['dialNoAnswerMaxRetry']=_0x13a7a2[_0x4d1f('0x32')]||0x3;this[_0x4d1f('0x33')]=_0x13a7a2['dialNoAnswerRetryFrequency']||0x96;this['dialNoSuchNumberMaxRetry']=_0x13a7a2[_0x4d1f('0x34')]||0x3;this[_0x4d1f('0x35')]=_0x13a7a2[_0x4d1f('0x35')]||0x96;this[_0x4d1f('0x36')]=_0x13a7a2[_0x4d1f('0x36')]||0x3;this['dialDropRetryFrequency']=_0x13a7a2[_0x4d1f('0x37')]||0x96;this['dialAbandonedMaxRetry']=_0x13a7a2[_0x4d1f('0x38')]||0x3;this[_0x4d1f('0x39')]=_0x13a7a2['dialAbandonedRetryFrequency']||0x96;this[_0x4d1f('0x3a')]=_0x13a7a2[_0x4d1f('0x3a')]||0x3;this['dialMachineRetryFrequency']=_0x13a7a2[_0x4d1f('0x3b')]||0x96;this[_0x4d1f('0x3c')]=_0x13a7a2[_0x4d1f('0x3c')]||0x3;this[_0x4d1f('0x3d')]=_0x13a7a2[_0x4d1f('0x3d')]||0x96;this[_0x4d1f('0x3e')]=_0x13a7a2[_0x4d1f('0x3e')]||0x4;this[_0x4d1f('0x3f')]=_0x13a7a2['Trunk']?_0x13a7a2[_0x4d1f('0x3f')]:undefined;this['TrunkBackup']=_0x13a7a2['TrunkBackup']?_0x13a7a2[_0x4d1f('0x40')]:undefined;this['dialPrefix']=_0x13a7a2[_0x4d1f('0x41')]||undefined;this[_0x4d1f('0x42')]=_0x13a7a2['Interval']?_0x13a7a2['Interval']:undefined;this[_0x4d1f('0x43')]=_0x13a7a2[_0x4d1f('0x43')]||'DESC';this[_0x4d1f('0x44')]=_0x13a7a2['dialRandomLastDigitCallerIdNumber']||undefined;this['dialCutDigit']=_0x13a7a2[_0x4d1f('0x45')]||undefined;this[_0x4d1f('0x46')]=strategy[_0x13a7a2['strategy']]||'rrmemory';this[_0x4d1f('0x47')]=!![];this['dialAMDActive']=_0x13a7a2[_0x4d1f('0x48')]||![];this[_0x4d1f('0x49')]=_0x13a7a2[_0x4d1f('0x49')];this[_0x4d1f('0x4a')]=_0x13a7a2[_0x4d1f('0x4a')];this[_0x4d1f('0x4b')]=_0x13a7a2[_0x4d1f('0x4b')];this[_0x4d1f('0x4c')]=_0x13a7a2[_0x4d1f('0x4c')];this[_0x4d1f('0x4d')]=_0x13a7a2[_0x4d1f('0x4d')];this[_0x4d1f('0x4e')]=_0x13a7a2[_0x4d1f('0x4e')];this['dialAMDMaximumNumberOfWords']=_0x13a7a2[_0x4d1f('0x4f')];this[_0x4d1f('0x50')]=_0x13a7a2[_0x4d1f('0x50')];this[_0x4d1f('0x51')]=_0x13a7a2[_0x4d1f('0x51')];this[_0x4d1f('0x52')]=0x0;this['pTalking']=0x0;this[_0x4d1f('0x53')]=_0x13a7a2[_0x4d1f('0x53')];this[_0x4d1f('0x54')]=0x0;this[_0x4d1f('0x55')]=0x0;this[_0x4d1f('0x56')]=0x0;this['outboundBusyCallsDay']=0x0;this['outboundCongestionCallsDay']=0x0;this[_0x4d1f('0x57')]=0x0;this[_0x4d1f('0x58')]=0x0;this[_0x4d1f('0x59')]=0x0;this[_0x4d1f('0x5a')]=0x0;this[_0x4d1f('0x5b')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0x4d1f('0x5c')]=0x0;this['outboundReCallsDay']=0x0;this[_0x4d1f('0x5d')]=0x0;this[_0x4d1f('0x5e')]=undefined;this[_0x4d1f('0x5f')]=undefined;this[_0x4d1f('0x60')]=undefined;this[_0x4d1f('0x61')]=1.05;this[_0x4d1f('0x62')]=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0x4d1f('0x63')]=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0x4d1f('0x64')]=0x0;this['predictiveIntervalAvailable']=0x0;this[_0x4d1f('0x65')]=_0x13a7a2[_0x4d1f('0x66')]||0x14;this[_0x4d1f('0x67')]=_0x13a7a2[_0x4d1f('0x66')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0x4d1f('0x68')]=0x1;this['erlangCalls']=0x0;this['erlangCallToSecond']=0x0;this['erlangAbandonmentRate']=0x0;this[_0x4d1f('0x69')]=0x0;this['dialRecallMeTimeout']=_0x13a7a2['dialRecallMeTimeout']||0x1e;this[_0x4d1f('0x6a')]=_0x13a7a2[_0x4d1f('0x6a')]||![];this[_0x4d1f('0x6b')]=_0x13a7a2[_0x4d1f('0x6b')]||undefined;this[_0x4d1f('0x6c')]=_0x13a7a2['dialAgiAfterHangupClient']||![];this[_0x4d1f('0x6d')]=_0x13a7a2[_0x4d1f('0x6d')]||![];this[_0x4d1f('0x8')]=monitorFormat[_0x13a7a2[_0x4d1f('0x8')]]?monitorFormat[_0x13a7a2[_0x4d1f('0x8')]]:undefined;this[_0x4d1f('0x6e')]=_0x13a7a2[_0x4d1f('0x6e')]||![];this['mandatoryDispositionPause']=_0x13a7a2[_0x4d1f('0x6f')]?_0x13a7a2[_0x4d1f('0x6f')]:undefined;}module[_0x4d1f('0x70')]=VoiceQueue;
\ No newline at end of file
+var _0x161a=['dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','outboundAnswerCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','inuse','busy','unavailable','ringinuse','onhold','gsm','rrmemory','roundrobin','name','monitor_format','type','inbound','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','acw','acwTimeout','autopause','sendMessageOneNotActive','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber'];(function(_0x5de1ae,_0x2a1c39){var _0x198be3=function(_0x168068){while(--_0x168068){_0x5de1ae['push'](_0x5de1ae['shift']());}};_0x198be3(++_0x2a1c39);}(_0x161a,0x140));var _0xa161=function(_0x1d3577,_0x17a32e){_0x1d3577=_0x1d3577-0x0;var _0x277d9a=_0x161a[_0x1d3577];return _0x277d9a;};'use strict';var statusDesc=['unknown','not_inuse',_0xa161('0x0'),_0xa161('0x1'),'invalid',_0xa161('0x2'),'ringing',_0xa161('0x3'),_0xa161('0x4')];var monitorFormat={'wav':'wav','wav49':'wav49','gsm':_0xa161('0x5')};var strategy={'rrmemory':_0xa161('0x6'),'roundrobin':_0xa161('0x7')};function VoiceQueue(_0x8a253b){this['id']=_0x8a253b['id']||0x0;this[_0xa161('0x8')]=_0x8a253b[_0xa161('0x8')]||'';this[_0xa161('0x9')]=_0x8a253b['monitor_format']||'';this[_0xa161('0xa')]=_0x8a253b[_0xa161('0xa')]||_0xa161('0xb');this[_0xa161('0xc')]=0x0;this[_0xa161('0xd')]=0x0;this[_0xa161('0xe')]=0x0;this[_0xa161('0xf')]=0x0;this[_0xa161('0x10')]=0x0;this[_0xa161('0x11')]=0x0;this[_0xa161('0x12')]=0x0;this[_0xa161('0x13')]=0x0;this[_0xa161('0x14')]=0x0;this[_0xa161('0x15')]=0x0;this['available']=0x0;this[_0xa161('0x16')]=_0x8a253b[_0xa161('0x16')]||![];this[_0xa161('0x17')]=_0x8a253b[_0xa161('0x17')]||0xa;this['autopause']=_0x8a253b[_0xa161('0x18')]||'no';this[_0xa161('0x19')]=!![];this['message']='';this[_0xa161('0x1a')]=0x0;this[_0xa161('0x1b')]=0x0;this['dialTimezone']=_0x8a253b[_0xa161('0x1c')]||null;this[_0xa161('0x1d')]=_0x8a253b[_0xa161('0x1d')]?_0x8a253b['dialGlobalInterval']:null;this[_0xa161('0x1e')]=_0x8a253b[_0xa161('0x1e')];this[_0xa161('0x1f')]=_0x8a253b[_0xa161('0x1f')]||_0xa161('0x20');this[_0xa161('0x21')]=_0x8a253b[_0xa161('0x21')]||0x0;this['dialLimitQueue']=_0x8a253b[_0xa161('0x22')]||0x0;this[_0xa161('0x23')]=_0x8a253b['dialPowerLevel']||0x1;this[_0xa161('0x24')]=_0x8a253b['dialPredictiveOptimization']||_0xa161('0x25');this[_0xa161('0x26')]=_0x8a253b[_0xa161('0x26')]||0.03;this[_0xa161('0x27')]=_0x8a253b[_0xa161('0x27')]||0x258;this['dialOriginateCallerIdName']=_0x8a253b[_0xa161('0x28')]||_0xa161('0x29');this[_0xa161('0x2a')]=_0x8a253b[_0xa161('0x2a')]||_0xa161('0x29');this[_0xa161('0x2b')]=_0x8a253b[_0xa161('0x2b')]||0x1e;this[_0xa161('0x2c')]=_0x8a253b[_0xa161('0x2c')]||_0xa161('0x2d');this[_0xa161('0x2e')]=_0x8a253b['dialQueueTimeout']||0x3;this[_0xa161('0x2f')]=_0x8a253b[_0xa161('0x2f')]||undefined;this[_0xa161('0x30')]=_0x8a253b[_0xa161('0x30')]||0x3;this[_0xa161('0x31')]=_0x8a253b[_0xa161('0x31')]||0x96;this[_0xa161('0x32')]=_0x8a253b[_0xa161('0x32')]||0x3;this[_0xa161('0x33')]=_0x8a253b[_0xa161('0x33')]||0x96;this[_0xa161('0x34')]=_0x8a253b['dialNoAnswerMaxRetry']||0x3;this[_0xa161('0x35')]=_0x8a253b['dialNoAnswerRetryFrequency']||0x96;this[_0xa161('0x36')]=_0x8a253b[_0xa161('0x36')]||0x3;this[_0xa161('0x37')]=_0x8a253b[_0xa161('0x37')]||0x96;this[_0xa161('0x38')]=_0x8a253b[_0xa161('0x38')]||0x3;this[_0xa161('0x39')]=_0x8a253b[_0xa161('0x39')]||0x96;this[_0xa161('0x3a')]=_0x8a253b[_0xa161('0x3a')]||0x3;this[_0xa161('0x3b')]=_0x8a253b[_0xa161('0x3b')]||0x96;this[_0xa161('0x3c')]=_0x8a253b[_0xa161('0x3c')]||0x3;this[_0xa161('0x3d')]=_0x8a253b['dialMachineRetryFrequency']||0x96;this[_0xa161('0x3e')]=_0x8a253b['dialAgentRejectMaxRetry']||0x3;this[_0xa161('0x3f')]=_0x8a253b['dialAgentRejectRetryFrequency']||0x96;this[_0xa161('0x40')]=_0x8a253b[_0xa161('0x40')]||0x4;this[_0xa161('0x41')]=_0x8a253b[_0xa161('0x41')]?_0x8a253b[_0xa161('0x41')]:undefined;this[_0xa161('0x42')]=_0x8a253b[_0xa161('0x42')]?_0x8a253b['TrunkBackup']:undefined;this['dialPrefix']=_0x8a253b[_0xa161('0x43')]||undefined;this['Interval']=_0x8a253b['Interval']?_0x8a253b['Interval']:undefined;this[_0xa161('0x44')]=_0x8a253b[_0xa161('0x44')]||_0xa161('0x45');this[_0xa161('0x46')]=_0x8a253b[_0xa161('0x46')]||undefined;this[_0xa161('0x47')]=_0x8a253b['dialCutDigit']||undefined;this[_0xa161('0x48')]=strategy[_0x8a253b['strategy']]||_0xa161('0x6');this[_0xa161('0x49')]=!![];this['dialAMDActive']=_0x8a253b[_0xa161('0x4a')]||![];this[_0xa161('0x4b')]=_0x8a253b[_0xa161('0x4b')];this['dialAMDGreeting']=_0x8a253b[_0xa161('0x4c')];this[_0xa161('0x4d')]=_0x8a253b[_0xa161('0x4d')];this[_0xa161('0x4e')]=_0x8a253b[_0xa161('0x4e')];this[_0xa161('0x4f')]=_0x8a253b[_0xa161('0x4f')];this['dialAMDBetweenWordsSilence']=_0x8a253b[_0xa161('0x50')];this['dialAMDMaximumNumberOfWords']=_0x8a253b[_0xa161('0x51')];this['dialAMDSilenceThreshold']=_0x8a253b[_0xa161('0x52')];this[_0xa161('0x53')]=_0x8a253b['dialAMDMaximumWordLength'];this['outboundRejectCallsDay']=0x0;this['pTalking']=0x0;this[_0xa161('0x54')]=_0x8a253b[_0xa161('0x54')];this[_0xa161('0x55')]=0x0;this['outboundAnswerAgiCallsDay']=0x0;this[_0xa161('0x56')]=0x0;this[_0xa161('0x57')]=0x0;this[_0xa161('0x58')]=0x0;this[_0xa161('0x59')]=0x0;this[_0xa161('0x5a')]=0x0;this[_0xa161('0x5b')]=0x0;this[_0xa161('0x5c')]=0x0;this[_0xa161('0x5d')]=0x0;this[_0xa161('0x5e')]=0x0;this[_0xa161('0x5f')]=0x0;this[_0xa161('0x60')]=0x0;this[_0xa161('0x61')]=0x0;this[_0xa161('0x62')]=undefined;this[_0xa161('0x63')]=undefined;this['handlePredictive']=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0xa161('0x64')]=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0xa161('0x65')]=0x0;this[_0xa161('0x66')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0xa161('0x67')]=0x0;this[_0xa161('0x68')]=0x0;this[_0xa161('0x69')]=_0x8a253b['dialPredictiveIntervalMaxThreshold']||0x14;this[_0xa161('0x6a')]=_0x8a253b[_0xa161('0x6b')]||0xa;this[_0xa161('0x6c')]=0x0;this[_0xa161('0x6d')]=0x0;this[_0xa161('0x6e')]=0x1;this[_0xa161('0x6f')]=0x0;this[_0xa161('0x70')]=0x0;this[_0xa161('0x71')]=0x0;this['erlangBusyFactor']=0x0;this[_0xa161('0x72')]=_0x8a253b['dialRecallMeTimeout']||0x1e;this[_0xa161('0x73')]=_0x8a253b['dialRecallInQueue']||![];this[_0xa161('0x74')]=_0x8a253b['dialQueueProject2']||undefined;this['dialAgiAfterHangupClient']=_0x8a253b[_0xa161('0x75')]||![];this['dialAgiAfterHangupAgent']=_0x8a253b[_0xa161('0x76')]||![];this[_0xa161('0x9')]=monitorFormat[_0x8a253b[_0xa161('0x9')]]?monitorFormat[_0x8a253b[_0xa161('0x9')]]:undefined;this[_0xa161('0x77')]=_0x8a253b[_0xa161('0x77')]||![];this[_0xa161('0x78')]=_0x8a253b[_0xa161('0x78')]?_0x8a253b[_0xa161('0x78')]:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
index d02d900..6798208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9abd=['serverUrl','Configurations','name','username','accessKey','remoteUri'];(function(_0x2612e7,_0x283b4c){var _0x10c34c=function(_0x33d603){while(--_0x33d603){_0x2612e7['push'](_0x2612e7['shift']());}};_0x10c34c(++_0x283b4c);}(_0x9abd,0x164));var _0xd9ab=function(_0x2f2f86,_0x58d2e5){_0x2f2f86=_0x2f2f86-0x0;var _0x16af9b=_0x9abd[_0x2f2f86];return _0x16af9b;};'use strict';function VtigerAccount(_0x4dc570){this['id']=_0x4dc570['id']||0x0;this[_0xd9ab('0x0')]=_0x4dc570[_0xd9ab('0x0')]||'';this['username']=_0x4dc570[_0xd9ab('0x1')]||'';this[_0xd9ab('0x2')]=_0x4dc570[_0xd9ab('0x2')]||'';this['remoteUri']=_0x4dc570[_0xd9ab('0x3')]||'';this['serverUrl']=_0x4dc570[_0xd9ab('0x4')]||'';this['Configurations']=_0x4dc570[_0xd9ab('0x5')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
+var _0x4165=['Configurations','name','username','accessKey','remoteUri','serverUrl'];(function(_0x2ba3d6,_0x211f3e){var _0x35e9b7=function(_0x1281b0){while(--_0x1281b0){_0x2ba3d6['push'](_0x2ba3d6['shift']());}};_0x35e9b7(++_0x211f3e);}(_0x4165,0x1c3));var _0x5416=function(_0x271dfa,_0x3d43da){_0x271dfa=_0x271dfa-0x0;var _0xf3a515=_0x4165[_0x271dfa];return _0xf3a515;};'use strict';function VtigerAccount(_0x28be81){this['id']=_0x28be81['id']||0x0;this['name']=_0x28be81[_0x5416('0x0')]||'';this[_0x5416('0x1')]=_0x28be81[_0x5416('0x1')]||'';this[_0x5416('0x2')]=_0x28be81[_0x5416('0x2')]||'';this[_0x5416('0x3')]=_0x28be81[_0x5416('0x3')]||'';this[_0x5416('0x4')]=_0x28be81[_0x5416('0x4')]||'';this[_0x5416('0x5')]=_0x28be81[_0x5416('0x5')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
index 5c35f03..6b39aa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b59=['serverUrl','Configurations','exports','name','username','password','token','remoteUri','authType','type','integrationTab'];(function(_0x4200f0,_0x542567){var _0x30053d=function(_0x24f060){while(--_0x24f060){_0x4200f0['push'](_0x4200f0['shift']());}};_0x30053d(++_0x542567);}(_0x3b59,0x184));var _0x93b5=function(_0x3d59d8,_0x24ed58){_0x3d59d8=_0x3d59d8-0x0;var _0x5aeab1=_0x3b59[_0x3d59d8];return _0x5aeab1;};'use strict';function ZendeskAccount(_0x502aac){this['id']=_0x502aac['id']||0x0;this[_0x93b5('0x0')]=_0x502aac[_0x93b5('0x0')]||'';this[_0x93b5('0x1')]=_0x502aac[_0x93b5('0x1')]||'';this[_0x93b5('0x2')]=_0x502aac['password']||'';this['token']=_0x502aac[_0x93b5('0x3')]||'';this[_0x93b5('0x4')]=_0x502aac[_0x93b5('0x4')]||'';this[_0x93b5('0x5')]=_0x502aac[_0x93b5('0x5')]||'';this[_0x93b5('0x6')]=_0x502aac['type']||_0x93b5('0x7');this[_0x93b5('0x8')]=_0x502aac[_0x93b5('0x8')]||'';this[_0x93b5('0x9')]=_0x502aac[_0x93b5('0x9')]||{};}module[_0x93b5('0xa')]=ZendeskAccount;
\ No newline at end of file
+var _0x0d96=['exports','name','username','password','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations'];(function(_0x385adc,_0x375409){var _0x2d9cc6=function(_0x4b1337){while(--_0x4b1337){_0x385adc['push'](_0x385adc['shift']());}};_0x2d9cc6(++_0x375409);}(_0x0d96,0x18d));var _0x60d9=function(_0x30dfa6,_0x506d38){_0x30dfa6=_0x30dfa6-0x0;var _0x536e7e=_0x0d96[_0x30dfa6];return _0x536e7e;};'use strict';function ZendeskAccount(_0x25c007){this['id']=_0x25c007['id']||0x0;this['name']=_0x25c007[_0x60d9('0x0')]||'';this[_0x60d9('0x1')]=_0x25c007[_0x60d9('0x1')]||'';this[_0x60d9('0x2')]=_0x25c007[_0x60d9('0x2')]||'';this[_0x60d9('0x3')]=_0x25c007[_0x60d9('0x3')]||'';this[_0x60d9('0x4')]=_0x25c007[_0x60d9('0x4')]||'';this[_0x60d9('0x5')]=_0x25c007['authType']||'';this[_0x60d9('0x6')]=_0x25c007[_0x60d9('0x6')]||_0x60d9('0x7');this[_0x60d9('0x8')]=_0x25c007[_0x60d9('0x8')]||'';this[_0x60d9('0x9')]=_0x25c007[_0x60d9('0x9')]||{};}module[_0x60d9('0xa')]=ZendeskAccount;
\ No newline at end of file
index 3d7638e..483b78c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47e7=['clientId','clientSecret','serverUrl','code','refreshToken','Configurations','exports','name','description','host','zone'];(function(_0xb5dc4d,_0x494bd0){var _0x27815a=function(_0x1878ca){while(--_0x1878ca){_0xb5dc4d['push'](_0xb5dc4d['shift']());}};_0x27815a(++_0x494bd0);}(_0x47e7,0x1ca));var _0x747e=function(_0x37a165,_0x1942f3){_0x37a165=_0x37a165-0x0;var _0x4eff4d=_0x47e7[_0x37a165];return _0x4eff4d;};'use strict';function ZohoAccount(_0x3bc989){this['id']=_0x3bc989['id']||0x0;this['name']=_0x3bc989[_0x747e('0x0')]||'';this[_0x747e('0x1')]=_0x3bc989[_0x747e('0x1')]||'';this['host']=_0x3bc989[_0x747e('0x2')]||'';this[_0x747e('0x3')]=_0x3bc989[_0x747e('0x3')]||'';this[_0x747e('0x4')]=_0x3bc989['clientId']||'';this[_0x747e('0x5')]=_0x3bc989[_0x747e('0x5')]||'';this['serverUrl']=_0x3bc989[_0x747e('0x6')]||'';this[_0x747e('0x7')]=_0x3bc989[_0x747e('0x7')]||'';this[_0x747e('0x8')]=_0x3bc989[_0x747e('0x8')]||'';this[_0x747e('0x9')]=_0x3bc989[_0x747e('0x9')]||{};}module[_0x747e('0xa')]=ZohoAccount;
\ No newline at end of file
+var _0x1343=['refreshToken','Configurations','exports','name','description','host','zone','clientId','clientSecret','serverUrl','code'];(function(_0x1b6045,_0x35ee49){var _0x26a4ba=function(_0x2a7d72){while(--_0x2a7d72){_0x1b6045['push'](_0x1b6045['shift']());}};_0x26a4ba(++_0x35ee49);}(_0x1343,0x7c));var _0x3134=function(_0x41249e,_0x275d84){_0x41249e=_0x41249e-0x0;var _0x2bff48=_0x1343[_0x41249e];return _0x2bff48;};'use strict';function ZohoAccount(_0x459e79){this['id']=_0x459e79['id']||0x0;this[_0x3134('0x0')]=_0x459e79['name']||'';this[_0x3134('0x1')]=_0x459e79[_0x3134('0x1')]||'';this[_0x3134('0x2')]=_0x459e79[_0x3134('0x2')]||'';this[_0x3134('0x3')]=_0x459e79[_0x3134('0x3')]||'';this[_0x3134('0x4')]=_0x459e79[_0x3134('0x4')]||'';this[_0x3134('0x5')]=_0x459e79[_0x3134('0x5')]||'';this[_0x3134('0x6')]=_0x459e79[_0x3134('0x6')]||'';this['code']=_0x459e79[_0x3134('0x7')]||'';this[_0x3134('0x8')]=_0x459e79[_0x3134('0x8')]||'';this[_0x3134('0x9')]=_0x459e79['Configurations']||{};}module[_0x3134('0xa')]=ZohoAccount;
\ No newline at end of file
index 4de8ede..b96e9f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1850=['getCaller','\x22%s\x22\x20<%s>','number','exports','moment','isNil','string','uniqueid','idContact','queue','name','type','campaigntype','dialAnswer','membername','Agent','channelAgent','SIP/%s','calleridname','phone','Contact','firstName','lastName','active','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype'];(function(_0x4f7d50,_0x363daa){var _0x327bfd=function(_0x8fd108){while(--_0x8fd108){_0x4f7d50['push'](_0x4f7d50['shift']());}};_0x327bfd(++_0x363daa);}(_0x1850,0x1bc));var _0x0185=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1850[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x0185('0x0'));function checkNameSurname(_0x229041,_0x549128,_0x4f0778){var _0x145f18='';if(!_[_0x0185('0x1')](_0x549128)&&'string'===typeof _0x549128){_0x145f18+=_0x549128;}if(!_[_0x0185('0x1')](_0x4f0778)&&_0x0185('0x2')===typeof _0x4f0778){_0x145f18+='\x20'+_0x4f0778;}if(_0x145f18!==''){return _0x145f18;}return _0x229041;}function Action(_0x11d5a3,_0x3cc92a,_0x5af75f,_0x18e749,_0x8a5b24){this[_0x0185('0x3')]=_0x5af75f||undefined;this[_0x0185('0x4')]=_0x11d5a3['id'];this[_0x0185('0x5')]=_0x3cc92a[_0x0185('0x6')];this['type']=_0x3cc92a[_0x0185('0x7')];this[_0x0185('0x8')]=_0x0185('0x5');this[_0x0185('0x9')]=![];this[_0x0185('0xa')]=_['isNil'](_0x11d5a3[_0x0185('0xb')])?undefined:_0x11d5a3[_0x0185('0xb')][_0x0185('0x6')];this[_0x0185('0xc')]=this['membername']?util['format'](_0x0185('0xd'),this[_0x0185('0xa')]):_0x18e749||undefined;this[_0x0185('0xe')]=checkNameSurname(_0x11d5a3['Contact'][_0x0185('0xf')],_0x11d5a3[_0x0185('0x10')][_0x0185('0x11')],_0x11d5a3[_0x0185('0x10')][_0x0185('0x12')]);this[_0x0185('0x13')]=_0x11d5a3[_0x0185('0x13')]||![];this['calleridnum']=_0x11d5a3[_0x0185('0x10')][_0x0185('0xf')];this[_0x0185('0x14')]=_0x11d5a3[_0x0185('0x14')];this[_0x0185('0x15')]=_0x11d5a3['countbusyretry']||0x0;this[_0x0185('0x16')]=_0x11d5a3[_0x0185('0x16')]||0x0;this[_0x0185('0x17')]=_0x11d5a3[_0x0185('0x17')]||0x0;this['countglobal']=(_0x11d5a3[_0x0185('0x15')]||0x0)+(_0x11d5a3[_0x0185('0x16')]||0x0)+(_0x11d5a3[_0x0185('0x17')]||0x0)+(_0x11d5a3[_0x0185('0x18')]||0x0)+(_0x11d5a3['countdropretry']||0x0)+(_0x11d5a3[_0x0185('0x19')]||0x0)+(_0x11d5a3[_0x0185('0x1a')]||0x0)+(_0x11d5a3[_0x0185('0x1b')]||0x0);this['countnosuchnumberretry']=_0x11d5a3[_0x0185('0x18')]||0x0;this[_0x0185('0x1c')]=_0x11d5a3[_0x0185('0x1c')]||0x0;this['countabandonedretry']=_0x11d5a3[_0x0185('0x19')]||0x0;this[_0x0185('0x1a')]=_0x11d5a3[_0x0185('0x1a')]||0x0;this[_0x0185('0x1b')]=_0x11d5a3[_0x0185('0x1b')]||0x0;this[_0x0185('0x1d')]=_0x11d5a3[_0x0185('0x1d')];this[_0x0185('0x1e')]=_0x11d5a3[_0x0185('0x1e')];this[_0x0185('0x1f')]=_0x11d5a3[_0x0185('0x1f')];this[_0x0185('0x20')]=_0x11d5a3[_0x0185('0x20')];this[_0x0185('0x21')]=_0x11d5a3[_0x0185('0x21')];this[_0x0185('0x22')]=_0x11d5a3['ListId'];this[_0x0185('0x23')]=_[_0x0185('0x1')](_0x11d5a3[_0x0185('0xb')])?_0x11d5a3[_0x0185('0x23')]:_0x11d5a3[_0x0185('0xb')]['id'];this[_0x0185('0x24')]=_0x11d5a3[_0x0185('0x24')];this[_0x0185('0x25')]='';this[_0x0185('0x26')]='';}Action[_0x0185('0x27')][_0x0185('0x28')]=function(){return util['format'](_0x0185('0x29'),this[_0x0185('0xe')],this[_0x0185('0x2a')]);};module[_0x0185('0x2b')]=Action;
\ No newline at end of file
+var _0x1ab2=['queue','dialAnswer','membername','Agent','channelAgent','format','calleridname','Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','callback','callbackuniqueid','callbackat','ContactId','ListId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','exports','util','moment','isNil','string','uniqueid','idContact','name','type','campaigntype'];(function(_0x14e553,_0xead512){var _0x1e8cfa=function(_0x10283c){while(--_0x10283c){_0x14e553['push'](_0x14e553['shift']());}};_0x1e8cfa(++_0xead512);}(_0x1ab2,0xce));var _0x21ab=function(_0x3a733f,_0x1d0fb8){_0x3a733f=_0x3a733f-0x0;var _0x28266a=_0x1ab2[_0x3a733f];return _0x28266a;};'use strict';var util=require(_0x21ab('0x0'));var _=require('lodash');var moment=require(_0x21ab('0x1'));function checkNameSurname(_0x353e25,_0x5a68f4,_0x2a8b9b){var _0x4a6f76='';if(!_[_0x21ab('0x2')](_0x5a68f4)&&_0x21ab('0x3')===typeof _0x5a68f4){_0x4a6f76+=_0x5a68f4;}if(!_['isNil'](_0x2a8b9b)&&_0x21ab('0x3')===typeof _0x2a8b9b){_0x4a6f76+='\x20'+_0x2a8b9b;}if(_0x4a6f76!==''){return _0x4a6f76;}return _0x353e25;}function Action(_0x38b60b,_0x32e6a9,_0x4ae62b,_0x1caa54,_0x5dfd17){this[_0x21ab('0x4')]=_0x4ae62b||undefined;this[_0x21ab('0x5')]=_0x38b60b['id'];this['queue']=_0x32e6a9[_0x21ab('0x6')];this[_0x21ab('0x7')]=_0x32e6a9['type'];this[_0x21ab('0x8')]=_0x21ab('0x9');this[_0x21ab('0xa')]=![];this[_0x21ab('0xb')]=_[_0x21ab('0x2')](_0x38b60b[_0x21ab('0xc')])?undefined:_0x38b60b[_0x21ab('0xc')][_0x21ab('0x6')];this[_0x21ab('0xd')]=this['membername']?util[_0x21ab('0xe')]('SIP/%s',this[_0x21ab('0xb')]):_0x1caa54||undefined;this[_0x21ab('0xf')]=checkNameSurname(_0x38b60b[_0x21ab('0x10')][_0x21ab('0x11')],_0x38b60b[_0x21ab('0x10')][_0x21ab('0x12')],_0x38b60b[_0x21ab('0x10')][_0x21ab('0x13')]);this[_0x21ab('0x14')]=_0x38b60b[_0x21ab('0x14')]||![];this[_0x21ab('0x15')]=_0x38b60b['Contact'][_0x21ab('0x11')];this[_0x21ab('0x16')]=_0x38b60b[_0x21ab('0x16')];this['countbusyretry']=_0x38b60b[_0x21ab('0x17')]||0x0;this['countcongestionretry']=_0x38b60b['countcongestionretry']||0x0;this[_0x21ab('0x18')]=_0x38b60b[_0x21ab('0x18')]||0x0;this[_0x21ab('0x19')]=(_0x38b60b[_0x21ab('0x17')]||0x0)+(_0x38b60b['countcongestionretry']||0x0)+(_0x38b60b[_0x21ab('0x18')]||0x0)+(_0x38b60b[_0x21ab('0x1a')]||0x0)+(_0x38b60b['countdropretry']||0x0)+(_0x38b60b[_0x21ab('0x1b')]||0x0)+(_0x38b60b[_0x21ab('0x1c')]||0x0)+(_0x38b60b[_0x21ab('0x1d')]||0x0);this[_0x21ab('0x1a')]=_0x38b60b[_0x21ab('0x1a')]||0x0;this[_0x21ab('0x1e')]=_0x38b60b['countdropretry']||0x0;this[_0x21ab('0x1b')]=_0x38b60b[_0x21ab('0x1b')]||0x0;this[_0x21ab('0x1c')]=_0x38b60b[_0x21ab('0x1c')]||0x0;this[_0x21ab('0x1d')]=_0x38b60b[_0x21ab('0x1d')]||0x0;this[_0x21ab('0x1f')]=_0x38b60b[_0x21ab('0x1f')];this[_0x21ab('0x20')]=_0x38b60b['callbackuniqueid'];this['callbackat']=_0x38b60b[_0x21ab('0x21')];this['recallme']=_0x38b60b['recallme'];this[_0x21ab('0x22')]=_0x38b60b[_0x21ab('0x22')];this['ListId']=_0x38b60b[_0x21ab('0x23')];this['UserId']=_[_0x21ab('0x2')](_0x38b60b[_0x21ab('0xc')])?_0x38b60b['UserId']:_0x38b60b['Agent']['id'];this['VoiceQueueId']=_0x38b60b[_0x21ab('0x24')];this[_0x21ab('0x25')]='';this[_0x21ab('0x26')]='';}Action[_0x21ab('0x27')][_0x21ab('0x28')]=function(){return util[_0x21ab('0xe')](_0x21ab('0x29'),this[_0x21ab('0xf')],this['number']);};module[_0x21ab('0x2a')]=Action;
\ No newline at end of file
index 78ffaaa..75b22c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x911d=['isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','Global','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','ANSWER','answertime','dialAnswer','uniqueid','custom:agentconnect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','sumDuration','talktime','\x20Queue','BUSY','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','NOANSWER','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','countnoanswerretry','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','[callProgressDetectingCustomer][logCongestion]','CANCEL','AgentReject','custom:agentreject','agentreject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','countagentrejectretry','ABANDONED','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','NoAnswer','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','reason','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','[Preview][execCall][success]','Queue:\x20','idContact','custom:agentcalled','called','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','Contact\x20in\x20black\x20List','SIP/%s','reachable','unmonitored','execRun','unlock','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','Contact.phone','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','execCall','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','variablesAction','channelAgent','destconnectedlinenum','user:%s','accountcode','calleridnum','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','logLookAgent','clone','isFailure','response','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','statedesc','channelstate','transfer','[syncHangup][talking][transfer]','[syncHangup][talking][cause]','destuniqueid','syncHangupRequest','addVariable','variables','filterKey','variable','keys','value','error','[syncVarSet][Preview]','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','bluebird','uuid','ioredis','../../../config/logger','preview','actionPreview','../ami','./rpcDb','./action','./util/util','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','syncHangup','hanguprequest','syncDialEnd','newexten','varset','syncAttendedTransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','name','strategy','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','talking','total','abandoned','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgTalktime','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','md5','format','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice:queue:%s','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','paused','logger','\x20is\x20not\x20active','IS_DISACTIVED','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20disactive','syncCampaigns','hasOwnProperty','dialMethod','booked','clearZombieChannels','setMessage','clearZombieChannel','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','pick','contactId','UserId','VoiceQueueId','ListId','Action','status','channel','catch','[clearZombieChannel]','decrementTalkink','loggerError','[action]','size','recallMe','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x911d,0xba));var _0xd911=function(_0x499caf,_0x34744f){_0x499caf=_0x499caf-0x0;var _0x47b9bb=_0x911d[_0x499caf];return _0x47b9bb;};'use strict';var util=require(_0xd911('0x0'));var _=require(_0xd911('0x1'));var BPromise=require(_0xd911('0x2'));var uuid=require(_0xd911('0x3'));var moment=require('moment');var md5=require('md5');var Redis=require(_0xd911('0x4'));var config=require('../../../config/environment');var logger=require(_0xd911('0x5'))(_0xd911('0x6'));var loggerAction=require(_0xd911('0x5'))(_0xd911('0x7'));var ami=require(_0xd911('0x8'));var rpcDb=require(_0xd911('0x9'));var Action=require(_0xd911('0xa'));var ut=require(_0xd911('0xb'));config[_0xd911('0xc')]=_[_0xd911('0xd')](config[_0xd911('0xc')],{'host':_0xd911('0xe'),'port':0x18eb});var io=require(_0xd911('0xf'))(new Redis(config[_0xd911('0xc')]));var Sequence=function(){};Sequence[_0xd911('0x10')][_0xd911('0x11')]=function(_0xb31753){this[_0xd911('0x12')]=this['tail']?this[_0xd911('0x12')]['finally'](_0xb31753):_0xb31753();};function Preview(_0x13e1f3){this['sequence']=new Sequence();this[_0xd911('0x13')]=_0x13e1f3[_0xd911('0x14')];this[_0xd911('0x15')]=_0x13e1f3[_0xd911('0x15')];this[_0xd911('0x16')]={};this['agents']=_0x13e1f3[_0xd911('0x17')];this[_0xd911('0x18')]=0x0;ami['on'](_0xd911('0x19'),this[_0xd911('0x1a')][_0xd911('0x1b')](this));ami['on']('hangup',this[_0xd911('0x1c')][_0xd911('0x1b')](this));ami['on'](_0xd911('0x1d'),this['syncHangupRequest'][_0xd911('0x1b')](this));ami['on']('dialend',this[_0xd911('0x1e')]['bind'](this));ami['on'](_0xd911('0x1f'),this['syncNewExten'][_0xd911('0x1b')](this));ami['on'](_0xd911('0x20'),this['syncVarSet'][_0xd911('0x1b')](this));ami['on']('attendedtransfer',this[_0xd911('0x21')][_0xd911('0x1b')](this));ami['on']('blindtransfer',this[_0xd911('0x22')][_0xd911('0x1b')](this));this[_0xd911('0x23')](this[_0xd911('0x13')]);}function emit(_0x27b654,_0x1f65c8,_0x2c36df){io['to'](_0x27b654)[_0xd911('0x24')](_0x1f65c8,_0x2c36df);}function emitCampaignPreview(_0x3f6300){if(_0x3f6300[_0xd911('0x25')]===_0xd911('0x26')){var _0x4bb70b={'id':_0x3f6300['id'],'name':_0x3f6300[_0xd911('0x27')],'strategy':_0x3f6300[_0xd911('0x28')],'answered':_0x3f6300[_0xd911('0x29')],'available':_0x3f6300[_0xd911('0x2a')],'loggedIn':_0x3f6300[_0xd911('0x2b')],'pTalking':_0x3f6300[_0xd911('0x2c')],'sumBillable':_0x3f6300[_0xd911('0x2d')],'sumDuration':_0x3f6300['sumDuration'],'sumHoldTime':_0x3f6300[_0xd911('0x2e')]||0x0,'talking':_0x3f6300[_0xd911('0x2f')],'total':_0x3f6300[_0xd911('0x30')],'type':_0x3f6300[_0xd911('0x25')],'unmanaged':_0x3f6300['unmanaged'],'abandoned':_0x3f6300[_0xd911('0x31')],'waiting':_0x3f6300['waiting'],'loggedInDb':_0x3f6300[_0xd911('0x32')],'dialActive':_0x3f6300[_0xd911('0x33')],'dialMethod':_0x3f6300['dialMethod'],'dialOriginateCallerIdName':_0x3f6300[_0xd911('0x34')],'dialOriginateCallerIdNumber':_0x3f6300[_0xd911('0x35')],'dialOriginateTimeout':_0x3f6300['dialOriginateTimeout'],'dialPrefix':_0x3f6300[_0xd911('0x36')],'outboundAnswerAgiCallsDay':_0x3f6300[_0xd911('0x37')],'outboundAnswerCallsDay':_0x3f6300[_0xd911('0x38')],'outboundBlacklistCallsDay':_0x3f6300[_0xd911('0x39')],'outboundBusyCallsDay':_0x3f6300[_0xd911('0x3a')],'outboundCongestionCallsDay':_0x3f6300[_0xd911('0x3b')],'outboundDropCallsDayACS':_0x3f6300['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x3f6300[_0xd911('0x3c')],'outboundDropCallsDayTimeout':_0x3f6300[_0xd911('0x3d')],'outboundNoAnswerCallsDay':_0x3f6300[_0xd911('0x3e')],'outboundNoSuchCallsDay':_0x3f6300[_0xd911('0x3f')],'outboundOriginateFailureCallsDay':_0x3f6300[_0xd911('0x40')],'outboundReCallsDay':_0x3f6300[_0xd911('0x41')],'outboundRejectCallsDay':_0x3f6300[_0xd911('0x42')],'outboundUnknownCallsDay':_0x3f6300[_0xd911('0x43')],'outboundAbandonedCallsDay':_0x3f6300[_0xd911('0x44')],'predictiveIntervalAnsweredCalls':_0x3f6300[_0xd911('0x45')],'predictiveIntervalAvgHoldtime':_0x3f6300['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x3f6300[_0xd911('0x46')],'predictiveIntervalDroppedCallsCallersExit':_0x3f6300['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x3f6300['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x3f6300[_0xd911('0x47')],'predictiveIntervalErlangCallsDroppedCalls':_0x3f6300[_0xd911('0x48')],'predictiveIntervalHitRate':_0x3f6300[_0xd911('0x49')],'predictiveIntervalMultiplicativeFactor':_0x3f6300['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x3f6300['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x3f6300[_0xd911('0x4a')],'predictiveIntervalTotalCalls':_0x3f6300[_0xd911('0x4b')],'message':_0x3f6300[_0xd911('0x4c')],'originated':_0x3f6300[_0xd911('0x4d')],'erlangCalls':_0x3f6300[_0xd911('0x4e')],'erlangCallToSecond':_0x3f6300[_0xd911('0x4f')],'erlangAbandonmentRate':_0x3f6300['erlangAbandonmentRate'],'erlangBusyFactor':_0x3f6300[_0xd911('0x50')],'startPredictive':_0x3f6300[_0xd911('0x51')],'startProgressive':_0x3f6300[_0xd911('0x52')]};if(_0x3f6300[_0xd911('0x53')]){_0x4bb70b[_0xd911('0x53')]={'id':_0x3f6300[_0xd911('0x53')]['id'],'name':_0x3f6300[_0xd911('0x53')][_0xd911('0x27')],'active':_0x3f6300[_0xd911('0x53')][_0xd911('0x54')],'callerid':_0x3f6300[_0xd911('0x53')][_0xd911('0x55')]};}if(_0x3f6300[_0xd911('0x56')]){_0x4bb70b['Interval']={'id':_0x3f6300[_0xd911('0x56')]['id'],'name':_0x3f6300['Interval'][_0xd911('0x27')]};}var _0x28f05d=md5(JSON[_0xd911('0x57')](_0x4bb70b));if(_0x3f6300['md5']!==_0x28f05d){_0x3f6300[_0xd911('0x58')]=_0x28f05d;emit(util[_0xd911('0x59')]('voice:queue:%s',_0x4bb70b[_0xd911('0x27')]),_0xd911('0x5a'),_0x4bb70b);}}}function emitVoiceQueueChannelRemove(_0x53d117){logger[_0xd911('0x5b')](_0xd911('0x5c'),JSON[_0xd911('0x57')](_0x53d117));emit(util['format'](_0xd911('0x5d'),_0x53d117[_0xd911('0x27')]),_0xd911('0x5e'),_0x53d117);io[_0xd911('0x24')](_0xd911('0x5f'),_0x53d117);}function notSendMessagesQueue(_0x5815ac){if(_0x5815ac[_0xd911('0x60')]){if(_0x5815ac['originated']===0x0&&_0x5815ac[_0xd911('0x2c')]===0x0){_0x5815ac['sendMessageOneNotActive']=![];_0x5815ac[_0xd911('0x2a')]=0x0;_0x5815ac[_0xd911('0x61')]=0x0;_0x5815ac['message']='NOT_ACTIVE';ut[_0xd911('0x62')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x5815ac[_0xd911('0x27')]+_0xd911('0x63'));}else{_0x5815ac[_0xd911('0x4c')]=_0xd911('0x64');ut[_0xd911('0x62')](_0xd911('0x65'),_0x5815ac[_0xd911('0x27')]+_0xd911('0x66'));}emitCampaignPreview(_0x5815ac);}}Preview[_0xd911('0x10')]['loopCampaigns']=function(){var _0x5b261e=this;setInterval(function(){_0x5b261e[_0xd911('0x67')]();},0x7cf);};Preview[_0xd911('0x10')][_0xd911('0x67')]=function(){var _0x1c17b8=this[_0xd911('0x13')];this[_0xd911('0x18')]+=0x1;for(var _0x556dd7 in _0x1c17b8){if(_0x1c17b8[_0xd911('0x68')](_0x556dd7)&&(_0x1c17b8[_0x556dd7][_0xd911('0x69')]===_0xd911('0x6')||_0x1c17b8[_0x556dd7][_0xd911('0x69')]===_0xd911('0x6a'))&&_0x1c17b8[_0x556dd7][_0xd911('0x25')]===_0xd911('0x26')){if(this[_0xd911('0x18')]>0x7){this[_0xd911('0x18')]=0x0;this[_0xd911('0x6b')]();}}if(_0x1c17b8[_0xd911('0x68')](_0x556dd7)&&_0x1c17b8[_0x556dd7]['dialMethod']===_0xd911('0x6')&&_0x1c17b8[_0x556dd7][_0xd911('0x25')]===_0xd911('0x26')){if(_0x1c17b8[_0x556dd7][_0xd911('0x33')]){this[_0xd911('0x6c')](_0x1c17b8[_0x556dd7]);this['recallMe'](_0x1c17b8[_0x556dd7]);}else{notSendMessagesQueue(_0x1c17b8[_0x556dd7]);}}}};Preview[_0xd911('0x10')][_0xd911('0x6d')]=function(_0x271176){var _0x11752f=this;this['sequence'][_0xd911('0x11')](function(){if(!_[_0xd911('0x6e')](_0x11752f[_0xd911('0x16')][_0x271176])){loggerAction['info'](_0xd911('0x6f'),_0x271176,_0xd911('0x70'),_0x11752f[_0xd911('0x16')][_0x271176][_0xd911('0x71')],_0xd911('0x72'),JSON['stringify'](_0x11752f[_0xd911('0x13')][_0x11752f[_0xd911('0x16')][_0x271176][_0xd911('0x71')]][_0xd911('0x4d')]),_0xd911('0x73'),JSON[_0xd911('0x57')](_0x11752f['campaignsPreview'][_0x11752f['actions'][_0x271176][_0xd911('0x71')]]['pTalking']),JSON[_0xd911('0x57')](_0x11752f[_0xd911('0x16')][_0x271176]['dialAnswer']),JSON['stringify'](_[_0xd911('0x74')](_0x11752f[_0xd911('0x16')][_0x271176],[_0xd911('0x75'),_0xd911('0x76'),_0xd911('0x77'),_0xd911('0x78')])));return ami[_0xd911('0x79')]({'action':_0xd911('0x7a'),'channel':_0x11752f[_0xd911('0x16')][_0x271176][_0xd911('0x7b')]})[_0xd911('0x7c')](function(_0x57b256){if(_0x57b256[_0xd911('0x4c')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x11752f[_0xd911('0x16')][_0x271176]){ut['updateOriginated'](_0x11752f[_0xd911('0x13')][_0x11752f[_0xd911('0x16')][_0x271176][_0xd911('0x71')]],_0xd911('0x7d'));if(_0x11752f['actions'][_0x271176]['dialAnswer']===!![]){ut[_0xd911('0x7e')](_0x11752f[_0xd911('0x13')][_0x11752f[_0xd911('0x16')][_0x271176]['queue']],_0xd911('0x7d'));ut['loggerError']('[Dialer][checkChannel][pTalking][Preview]'+_0x271176,_0x11752f[_0xd911('0x16')][_0x271176][_0xd911('0x71')]);}ut[_0xd911('0x7f')]('[Dialer][checkChannel][Preview]'+_0x271176,_0x11752f['actions'][_0x271176][_0xd911('0x71')]);delete _0x11752f['actions'][_0x271176];}},0x2328);}});}});};Preview[_0xd911('0x10')][_0xd911('0x6b')]=function(){var _0x148d2e=this;loggerAction[_0xd911('0x5b')](_0xd911('0x80'),_[_0xd911('0x81')](this['actions']));for(var _0x29be8f in this[_0xd911('0x16')]){if(_0x148d2e[_0xd911('0x16')][_0xd911('0x68')](_0x29be8f)){_0x148d2e[_0xd911('0x6d')](_0x29be8f);}}};Preview[_0xd911('0x10')][_0xd911('0x82')]=function(_0x1a48be){var _0x173ffb=this;rpcDb['getContactRecallMe'](_0x1a48be['id'],ut[_0xd911('0x83')](this[_0xd911('0x17')]))[_0xd911('0x84')](function(_0x10eb09){if(!_['isNil'](_0x10eb09)){for(var _0xab16ac=0x0;_0xab16ac<_0x10eb09[_0xd911('0x85')];_0xab16ac+=0x1){if(ut[_0xd911('0x86')](_0x10eb09[_0xab16ac][_0xd911('0x87')])<_0x1a48be[_0xd911('0x88')]*0x3c){if(_0x10eb09[_0xab16ac]['Agent']&&!_0x10eb09[_0xab16ac][_0xd911('0x89')][_0xd911('0x8a')]){_0x173ffb[_0xd911('0x8b')](_0x10eb09[_0xab16ac]['id'])[_0xd911('0x84')](ut[_0xd911('0x8c')](_0xd911('0x8d')))['catch'](ut[_0xd911('0x8c')](_0xd911('0x8d')));}else{rpcDb[_0xd911('0x8e')](_0x10eb09[_0xab16ac]['id']);}}else{var _0x390972=new Action(_0x10eb09[_0xab16ac],_0x1a48be);_0x390972[_0xd911('0x8f')]=moment()['format'](_0xd911('0x90'));_0x1a48be[_0xd911('0x41')]+=0x1;ut[_0xd911('0x91')](_0x390972,0x17,_0xd911('0x92'));if(_0x1a48be[_0xd911('0x93')]){rpcDb[_0xd911('0x94')](ut[_0xd911('0x95')](_0x10eb09[_0xab16ac]));rpcDb[_0xd911('0x96')](_0x390972,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0xd911('0x91')](_0x390972,0x16,_0xd911('0x97'));rpcDb[_0xd911('0x96')](_0x390972,_0xd911('0x98'));rpcDb[_0xd911('0x99')](_0x390972,_0xd911('0x98'));}}}}})[_0xd911('0x7c')](ut[_0xd911('0x8c')](_0xd911('0x9a')));};Preview[_0xd911('0x10')][_0xd911('0x6c')]=function(_0x46f56b){_0x46f56b[_0xd911('0x60')]=!![];if(ut[_0xd911('0x9b')](_0x46f56b[_0xd911('0x2b')])){_0x46f56b[_0xd911('0x4c')]=_0xd911('0x9c');}else if(!ut[_0xd911('0x9d')](_0x46f56b['dialActive'])){_0x46f56b[_0xd911('0x4c')]='NOT_ACTIVE';}else if(!this[_0xd911('0x9e')](_0x46f56b[_0xd911('0x53')])){if(!this[_0xd911('0x9e')](_0x46f56b[_0xd911('0x9f')])){_0x46f56b[_0xd911('0x4c')]=_0xd911('0xa0');}else{_0x46f56b[_0xd911('0x4c')]=_0xd911('0xa1');}}else{_0x46f56b['message']=_0xd911('0xa1');}emitCampaignPreview(_0x46f56b);};Preview[_0xd911('0x10')][_0xd911('0xa2')]=function(_0x38892c,_0x18b577,_0x5837be){var _0x1cec6e=this;var _0x43fd9d=this['actions'][_0x18b577];var _0x441f1d=this[_0xd911('0x13')][_0x43fd9d['queue']];var _0x392188;if(_0x441f1d){switch(_0x5837be){case'1':_0x441f1d[_0xd911('0x3f')]+=0x1;_0x43fd9d[_0xd911('0xa3')]+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut[_0xd911('0xa5')](_0x43fd9d);ut['logCustomer'](_0x43fd9d,0x0,_0xd911('0xa6'));ami[_0xd911('0x24')](_0xd911('0xa7'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xa9')));rpcDb[_0xd911('0x96')](_0x43fd9d,_0xd911('0xaa'));if(ut['totalGlobal'](_0x43fd9d)>=_0x441f1d[_0xd911('0xab')]){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,_0xd911('0xad'));rpcDb[_0xd911('0x99')](_0x392188,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x43fd9d['countnosuchnumberretry']>=_0x441f1d[_0xd911('0xae')]){rpcDb[_0xd911('0x99')](_0x43fd9d,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0xd911('0xaf')](ut[_0xd911('0xb0')](_0x43fd9d,_0xd911('0xa3'),_0x441f1d[_0xd911('0xb1')]),_0x43fd9d[_0xd911('0xb2')],_0x43fd9d[_0xd911('0xb3')]);}}delete this['actions'][_0x38892c[_0xd911('0xb4')]];break;case _0xd911('0xb5'):var _0x391082=moment()[_0xd911('0x59')](_0xd911('0x90'));_0x43fd9d['responsetime']=_0x391082;_0x43fd9d[_0xd911('0xb6')]=_0x391082;_0x43fd9d[_0xd911('0xb7')]=!![];_0x441f1d[_0xd911('0x2c')]+=0x1;logger[_0xd911('0x5b')]('[syncHangup][talking][increment]',_0x43fd9d[_0xd911('0xb8')],'\x20Queue',_0x441f1d['name'],_0xd911('0x73'),_0x441f1d[_0xd911('0x2c')]);ami[_0xd911('0x24')](_0xd911('0xb9'),ut[_0xd911('0xa8')](_0x43fd9d,'connect',this[_0xd911('0x13')][_0x43fd9d['queue']]));if(_0x441f1d[_0xd911('0xba')]){ami['emit'](_0xd911('0xbb'),ut[_0xd911('0xbc')](_0x43fd9d));}break;case'16':ami[_0xd911('0x24')](_0xd911('0xbd'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xbe'),this[_0xd911('0x13')][_0x43fd9d[_0xd911('0x71')]]));emitVoiceQueueChannelRemove(ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xbe')));_0x441f1d[_0xd911('0x38')]+=0x1;_0x441f1d['total']+=0x1;_0x441f1d[_0xd911('0x29')]+=0x1;ut[_0xd911('0x7e')](_0x441f1d,_0xd911('0xbf'));_0x43fd9d['countglobal']=ut[_0xd911('0xa5')](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0x4,_0xd911('0xc0'));rpcDb[_0xd911('0x96')](_0x43fd9d,_0xd911('0xc1'));rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xc2'));rpcDb['crateCustomerReportQueue'](_0x43fd9d);_0x441f1d[_0xd911('0xc3')]+=_0x43fd9d[_0xd911('0xc4')];_0x441f1d[_0xd911('0x2d')]+=_0x43fd9d['talktime'];logger['info']('[syncHangup][talking][decrement]',_0x43fd9d[_0xd911('0xb8')],_0xd911('0xc5'),_0x441f1d[_0xd911('0x27')],'pTalking:\x20',_0x441f1d[_0xd911('0x2c')]);delete this[_0xd911('0x16')][_0x38892c[_0xd911('0xb4')]];break;case _0xd911('0xc6'):_0x441f1d[_0xd911('0x3a')]+=0x1;_0x43fd9d[_0xd911('0xc7')]+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut[_0xd911('0xa5')](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0x5,_0xd911('0xc8'));ami[_0xd911('0x24')](_0xd911('0xc9'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xca')));rpcDb[_0xd911('0x96')](_0x43fd9d,_0xd911('0xcb'));if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d[_0xd911('0xab')]){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,_0xd911('0xad'));rpcDb[_0xd911('0x99')](_0x392188,_0xd911('0xcc'));}else{if(_0x43fd9d[_0xd911('0xc7')]>=_0x441f1d[_0xd911('0xcd')]){rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xcb'));}else{rpcDb['rescheduleContact'](ut[_0xd911('0xb0')](_0x43fd9d,_0xd911('0xc7'),_0x441f1d['dialBusyRetryFrequency']),_0x43fd9d[_0xd911('0xb2')],_0x43fd9d[_0xd911('0xb3')]);}}break;case _0xd911('0xce'):_0x441f1d[_0xd911('0x3e')]+=0x1;_0x43fd9d['countnoanswerretry']+=0x1;_0x43fd9d['countglobal']=ut[_0xd911('0xa5')](_0x43fd9d);ut['logCustomer'](_0x43fd9d,0x3,'NoAnswer');ami[_0xd911('0x24')](_0xd911('0xcf'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xd0')));rpcDb[_0xd911('0x96')](_0x43fd9d,'[callProgressDetectingCustomer][logNoAnswer]');if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d[_0xd911('0xab')]){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,_0xd911('0xad'));rpcDb['createCustomerFinal'](_0x392188,_0xd911('0xd1'));}else{if(_0x43fd9d['countnoanswerretry']>=_0x441f1d[_0xd911('0xd2')]){rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xd3'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x43fd9d,_0xd911('0xd4'),_0x441f1d[_0xd911('0xd5')]),_0x43fd9d[_0xd911('0xb2')],_0x43fd9d[_0xd911('0xb3')]);}}break;case _0xd911('0xd6'):_0x441f1d[_0xd911('0x3b')]+=0x1;_0x43fd9d[_0xd911('0xd7')]+=0x1;_0x43fd9d['countglobal']=ut[_0xd911('0xa5')](_0x43fd9d);ut['logCustomer'](_0x43fd9d,0x8,'Congestion');ami[_0xd911('0x24')]('custom:agentcongestion',ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xd8')));rpcDb[_0xd911('0x96')](_0x43fd9d,'[callProgressDetectingCustomer][logCongestion]');if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d['dialGlobalMaxRetry']){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,_0xd911('0xad'));rpcDb[_0xd911('0x99')](_0x392188,_0xd911('0xd9'));}else{if(_0x43fd9d[_0xd911('0xd7')]>=_0x441f1d['dialCongestionMaxRetry']){rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xda'));}else{rpcDb[_0xd911('0xaf')](ut[_0xd911('0xb0')](_0x43fd9d,'countcongestionretry',_0x441f1d['dialBusyRetryFrequency']),_0x43fd9d[_0xd911('0xb2')],_0x43fd9d[_0xd911('0xb3')]);}}break;case _0xd911('0xdb'):_0x441f1d[_0xd911('0x42')]+=0x1;_0x43fd9d['countagentrejectretry']+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut['totalGlobal'](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0x14,_0xd911('0xdc'));ami[_0xd911('0x24')](_0xd911('0xdd'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xde')));rpcDb[_0xd911('0x96')](_0x43fd9d,'[syncHangupRequest][logAgentReject]');if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d[_0xd911('0xab')]){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0x14,_0xd911('0xdc'));rpcDb[_0xd911('0x99')](_0x392188,_0xd911('0xdf'));}else{if(_0x43fd9d['countagentrejectretry']>=_0x441f1d[_0xd911('0xe0')]){rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xdf'));}else{rpcDb[_0xd911('0xaf')](ut[_0xd911('0xb0')](_0x43fd9d,_0xd911('0xe1'),_0x441f1d['dialAgentRejectRetryFrequency']),_0x43fd9d[_0xd911('0xb2')],_0x43fd9d[_0xd911('0xb3')]);}}break;case _0xd911('0xe2'):_0x441f1d['outboundAbandonedCallsDay']+=0x1;_0x43fd9d['countabandonedretry']+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut[_0xd911('0xa5')](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0xb,'Abandoned');rpcDb[_0xd911('0x96')](_0x43fd9d,_0xd911('0xe3'));if(ut['totalGlobal'](_0x43fd9d)>=_0x441f1d['dialGlobalMaxRetry']){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,_0xd911('0xad'));rpcDb['createCustomerFinal'](_0x392188,_0xd911('0xe3'));}else{if(_0x43fd9d['countabandonedetry']>=_0x441f1d[_0xd911('0xe4')]){rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xe3'));}else{rpcDb[_0xd911('0xaf')](ut[_0xd911('0xb0')](_0x43fd9d,'countabandonedretry',_0x441f1d['dialAbandonedRetryFrequency']),_0x43fd9d[_0xd911('0xb2')],_0x43fd9d[_0xd911('0xb3')]);}}break;case'18':_0x441f1d['outboundUnknownCallsDay']+=0x1;_0x43fd9d['countmachineretry']+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut[_0xd911('0xa5')](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0x12,_0x38892c[_0xd911('0xe5')]||_0x38892c[_0xd911('0xe6')]);ami[_0xd911('0x24')](_0xd911('0xe7'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xe8')));rpcDb[_0xd911('0x96')](_0x43fd9d,_0xd911('0xe9'));if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d[_0xd911('0xab')]){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,_0xd911('0xad'));rpcDb[_0xd911('0x99')](_0x392188,_0xd911('0xe9'));}else{rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xe9'));}delete this['actions'][_0x38892c[_0xd911('0xb4')]];break;case'19':_0x441f1d[_0xd911('0x43')]+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut[_0xd911('0xa5')](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0x13,_0x38892c[_0xd911('0xe5')]||_0x38892c['dialstatus']);ami[_0xd911('0x24')](_0xd911('0xe7'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xe8')));rpcDb['createCustomerHistory'](_0x43fd9d,_0xd911('0xea'));if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d[_0xd911('0xab')]){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,'Global');rpcDb['createCustomerFinal'](_0x392188,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xea'));}delete this[_0xd911('0x16')][_0x38892c[_0xd911('0xb4')]];break;default:if(_0x43fd9d[_0xd911('0xb7')]){ut[_0xd911('0x7e')](_0x441f1d,_0xd911('0xeb'));ut[_0xd911('0x7f')](_0xd911('0xec')+_0x441f1d[_0xd911('0x27')],_0x38892c);}_0x441f1d['outboundUnknownCallsDay']+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut[_0xd911('0xa5')](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0xc,_0x38892c['cause-txt']||_0x38892c['dialstatus']);rpcDb[_0xd911('0x96')](_0x43fd9d,'[callProgressDetectingCustomer][logUnknown]');if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d['dialGlobalMaxRetry']){_0x392188=ut['cloneAction'](_0x43fd9d,0xf,'Global');rpcDb[_0xd911('0x99')](_0x392188,_0xd911('0xed'));}else{rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xed'));}delete this[_0xd911('0x16')][_0x38892c['linkedid']];}if(!(_0x43fd9d[_0xd911('0xb7')]&&_0x5837be==='16')){ut[_0xd911('0xee')](_0x441f1d,'[callProgressDetectingCustomer]');logger[_0xd911('0x5b')](_0xd911('0xef'),_0x43fd9d['uniqueid'],'\x20Queue',_0x441f1d[_0xd911('0x27')],'originated:\x20',_0x441f1d['originated']);}if(_0x5837be!==_0xd911('0xb5')){delete this[_0xd911('0x16')][_0x38892c[_0xd911('0xb4')]];delete this[_0xd911('0x16')][_0x38892c[_0xd911('0xf0')]];}}};Preview['prototype'][_0xd911('0xf1')]=function(_0x2ad781,_0x3ef70b,_0x4a88ac){if(_[_0xd911('0xf2')](_0x3ef70b)&&_0xd911('0xf3')!==typeof _0x3ef70b){return;}if(_[_0xd911('0xf2')](_0x4a88ac)&&_0xd911('0xf3')!==typeof _0x4a88ac){return;}switch(_0x4a88ac['reason']){case'0':ut[_0xd911('0xf4')](_0x2ad781,0x0,_0xd911('0xa6'));rpcDb[_0xd911('0xf5')](_0x2ad781,_0xd911('0xf6'));break;case'3':ut[_0xd911('0xf4')](_0x2ad781,0x3,_0xd911('0xf7'));rpcDb[_0xd911('0xf5')](_0x2ad781,_0xd911('0xf8'));break;case'5':ut['logAgent'](_0x2ad781,0x5,_0xd911('0xc8'));rpcDb['createAgentHistory'](_0x2ad781,_0xd911('0xf9'));break;case'8':ut[_0xd911('0xf4')](_0x2ad781,0x8,_0xd911('0xfa'));rpcDb[_0xd911('0xf5')](_0x2ad781,_0xd911('0xfb'));break;case'22':ut[_0xd911('0xf4')](_0x2ad781,0x16,_0xd911('0xfc'));rpcDb[_0xd911('0xf5')](_0x2ad781,_0xd911('0xfd'));break;default:ut[_0xd911('0xf4')](_0x2ad781,0xc,_0x4a88ac[_0xd911('0xfe')]);rpcDb['createAgentHistory'](_0x2ad781,_0xd911('0xfb'));}ut[_0xd911('0xee')](_0x3ef70b,'[callProgressDetectingAgent]');logger[_0xd911('0x5b')](_0xd911('0xff'),_0x2ad781[_0xd911('0xb8')],_0xd911('0xc5'),_0x3ef70b[_0xd911('0x27')],_0xd911('0x72'),_0x3ef70b['originated']);delete this['actions'][_0x2ad781[_0xd911('0xb8')]];};Preview['prototype'][_0xd911('0x100')]=function(_0xfa605,_0x53d4b1,_0x2a8c8c,_0x20b6f8,_0x2267ad){var _0x2d8956=this;return new BPromise(function(_0x19b375,_0x4c1d92){if(_[_0xd911('0x6e')](_0x53d4b1)||_[_0xd911('0x6e')](_0x53d4b1[_0xd911('0x101')])||_['isNil'](_0x53d4b1[_0xd911('0x101')][_0xd911('0x102')])||_[_0xd911('0x6e')](_0x53d4b1[_0xd911('0x77')])){_0x4c1d92(ut[_0xd911('0x4c')](_0xd911('0x103'),_0x20b6f8,_0x2267ad));return;}var _0x31be6d=uuid['v4']();var _0x6499de=_0x2d8956['campaignsPreview'][_0x53d4b1[_0xd911('0x70')][_0xd911('0x27')]];var _0x2c5e59=_0x2a8c8c?_0x2d8956['agents'][_0x2a8c8c]['id']:undefined;_0x2d8956['actions'][_0x31be6d]=new Action(_0x53d4b1,_0x6499de,_0x31be6d,_0x2a8c8c,_0x2c5e59);var _0x4e51af=_0x2d8956[_0xd911('0x16')][_0x31be6d];_0x4e51af['unlockAgent']=_0x20b6f8;_0x4e51af['activeContact']=_0x2267ad;_0x4e51af[_0xd911('0x104')]=_0x2a8c8c;if(_[_0xd911('0x105')](_0xfa605)){_0x2d8956['execCall'](_0x4e51af,_0x6499de,_0x53d4b1,_0x2a8c8c)[_0xd911('0x84')](function(_0xd8ef89){logger['info'](_0xd911('0x106'),_0xd911('0x107')+_0x4e51af[_0xd911('0x71')]+'\x20IdHopper:\x20'+_0x4e51af[_0xd911('0x108')],JSON[_0xd911('0x57')](_0xd8ef89));ami[_0xd911('0x24')](_0xd911('0x109'),ut[_0xd911('0xa8')](_0x4e51af,_0xd911('0x10a'),_0x2d8956['campaignsPreview'][_0x4e51af[_0xd911('0x71')]]));_0x19b375(ut[_0xd911('0x4c')]('Calling'));})['catch'](function(_0x479c14){ut['logger'](_0xd911('0x10b'),_0x479c14);_0x4c1d92(ut[_0xd911('0x4c')](_0xd911('0x10c'),_0x20b6f8,_0x2267ad));});}else{_0x6499de[_0xd911('0x39')]+=0x1;ut[_0xd911('0x10d')](_0x4e51af);rpcDb[_0xd911('0x10e')](_0x4e51af,'[Blacklist][error]');delete _0x2d8956[_0xd911('0x16')][_0x31be6d];_0x4c1d92(ut['message'](_0xd911('0x10f'),_0x20b6f8,_0x2267ad));}});};Preview[_0xd911('0x10')][_0xd911('0x9e')]=function(_0x1d17a0){return!_['isNil'](_0x1d17a0)&&!_[_0xd911('0x6e')](_0x1d17a0[_0xd911('0x27')])&&!_[_0xd911('0x6e')](_0x1d17a0[_0xd911('0x54')])&&_0x1d17a0['active']&&!_['isNil'](this[_0xd911('0x15')][util[_0xd911('0x59')](_0xd911('0x110'),_0x1d17a0[_0xd911('0x27')])])&&!_['isNil'](this[_0xd911('0x15')][util[_0xd911('0x59')]('SIP/%s',_0x1d17a0[_0xd911('0x27')])][_0xd911('0x7a')])&&(this[_0xd911('0x15')][util['format'](_0xd911('0x110'),_0x1d17a0[_0xd911('0x27')])][_0xd911('0x7a')]===_0xd911('0x111')||this[_0xd911('0x15')][util[_0xd911('0x59')](_0xd911('0x110'),_0x1d17a0[_0xd911('0x27')])][_0xd911('0x7a')]===_0xd911('0x112'));};Preview['prototype'][_0xd911('0x8b')]=function(_0x201c72,_0x4c1d49){var _0x140d1f=this;return new BPromise(function(_0x5d4f03,_0x29433e){_0x140d1f[_0xd911('0x113')](_0x201c72,_0x4c1d49)['then'](function(_0x2d415f){_0x5d4f03(_[_0xd911('0x74')](_0x2d415f,[_0xd911('0x4c')]));})[_0xd911('0x7c')](function(_0x496ecb){if(_0x496ecb[_0xd911('0x114')]){rpcDb['unlockContact'](_0x201c72);}if(_0x496ecb['active']){rpcDb[_0xd911('0x8e')](_0x201c72);}_0x29433e(_[_0xd911('0x74')](_0x496ecb,['message']));});});};Preview[_0xd911('0x10')]['execRun']=function(_0x12dab6,_0x41d5ed){var _0x185e98=this;return new BPromise(function(_0x5c7b46,_0x5bab19){var _0x443a59,_0x59161c;rpcDb[_0xd911('0x115')](_0x12dab6)[_0xd911('0x84')](function(_0x24b34c){if(!_[_0xd911('0x6e')](_0x24b34c[0x0])){_0x59161c=_0x24b34c[0x0][_0xd911('0x116')]?![]:!![];_0x443a59=_0x24b34c[0x0]['recallme']?!![]:![];_0x443a59=_0x41d5ed?!![]:_0x443a59;}var _0x29812d=_0x185e98[_0xd911('0x117')](_0x24b34c);if(_0x29812d[_0xd911('0x118')]){rpcDb[_0xd911('0x119')](_[_0xd911('0x74')](_0x24b34c[0x0],['VoiceQueueId',_0xd911('0x11a')]))[_0xd911('0x84')](function(_0x4faafe){_0x185e98[_0xd911('0x100')](_0x4faafe,_0x24b34c[0x0],_0x41d5ed,_0x59161c,_0x443a59)['then'](function(_0x37339f){_0x5c7b46(_0x37339f);})[_0xd911('0x7c')](function(_0x57a4ec){_0x5bab19(_0x57a4ec);});})[_0xd911('0x7c')](function(_0x3db4ea){ut['logger'](_0xd911('0x11b'),_0x3db4ea);_0x5bab19(ut[_0xd911('0x4c')]('Call\x20unsuccessful',_0x59161c,_0x443a59));});}else{_0x5bab19(ut[_0xd911('0x4c')](_0x29812d[_0xd911('0x4c')],_0x59161c,_0x443a59));}})['catch'](function(_0x323374){ut[_0xd911('0x62')](_0xd911('0x11c'),_0x323374);_0x5bab19(ut[_0xd911('0x4c')]('Call\x20unsuccessful',![],!![]));});});};Preview[_0xd911('0x10')]['validateContact']=function(_0x3388cd){if(_[_0xd911('0x6e')](_0x3388cd)||_['isEmpty'](_0x3388cd)||!_[_0xd911('0x6e')](_0x3388cd[0x0][_0xd911('0x89')])&&_[_0xd911('0x6e')](_0x3388cd[0x0]['Agent'][_0xd911('0x27')])){ut[_0xd911('0x62')]('[Preview][validateContact][Empty\x20Contact]',_0x3388cd);return{'isValid':![],'message':_0xd911('0x11d')};}var _0x3ec254=this[_0xd911('0x13')][_0x3388cd[0x0][_0xd911('0x70')][_0xd911('0x27')]];_0x3ec254[_0xd911('0x4c')]='ACTIVE';if(_[_0xd911('0x6e')](_0x3ec254)){ut[_0xd911('0x62')](_0xd911('0x11e'),_0x3ec254);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0xd911('0x9e')](_0x3ec254[_0xd911('0x53')])){ut['logger']('[Preview][validateContact][Trunk\x20not\x20work]',_0xd911('0x11f')+_0x3ec254[_0xd911('0x27')]+_0xd911('0x120'));if(!this[_0xd911('0x9e')](_0x3ec254[_0xd911('0x9f')])){ut['logger']('[Preview][validateContact][Trunk\x20not\x20work]',_0x3ec254[_0xd911('0x27')]+_0xd911('0x121'));return{'isValid':![],'message':_0xd911('0x122')};}}if(!ut[_0xd911('0x9d')](_0x3ec254[_0xd911('0x33')])){ut[_0xd911('0x62')](_0xd911('0x123'),_0x3ec254['name']+'\x20Not\x20Active');return{'isValid':![],'message':_0xd911('0x11f')+_0x3ec254['name']+_0xd911('0x124')};}return{'isValid':!![],'message':_0xd911('0x125')};};Preview[_0xd911('0x10')][_0xd911('0x126')]=function(_0xb066bb,_0x1c30cc,_0x1cced0,_0x2b793e){var _0x2a2eef=this;return new BPromise(function(_0x218378,_0x36150b){var _0x348a69=_0xb066bb[_0xd911('0xb8')];var _0x25fef4=_0x2a2eef['isTrunkReachable'](_0x1c30cc[_0xd911('0x53')])?util[_0xd911('0x59')](_0xd911('0x127'),_0x1c30cc[_0xd911('0x53')]['name'],_[_0xd911('0x6e')](_0x1c30cc[_0xd911('0x36')])?'':_0x1c30cc[_0xd911('0x36')][_0xd911('0x128')]()||'',_0x1c30cc[_0xd911('0x129')]>0x0?_0x1cced0[_0xd911('0x101')][_0xd911('0x102')][_0xd911('0x12a')](_0x1c30cc[_0xd911('0x129')]):_0x1cced0[_0xd911('0x101')][_0xd911('0x102')]):util['format']('SIP/%s/%s%s',_[_0xd911('0x6e')](_0x1c30cc['TrunkBackup'])?_0x1c30cc[_0xd911('0x53')]['name']:_0x1c30cc['TrunkBackup']['name'],_[_0xd911('0x6e')](_0x1c30cc[_0xd911('0x36')])?'':_0x1c30cc[_0xd911('0x36')][_0xd911('0x128')]()||'',_0x1c30cc[_0xd911('0x129')]>0x0?_0x1cced0[_0xd911('0x101')][_0xd911('0x102')][_0xd911('0x12a')](_0x1c30cc[_0xd911('0x129')]):_0x1cced0[_0xd911('0x101')][_0xd911('0x102')]);var _0x2d5611=_0x2a2eef[_0xd911('0x9e')](_0x1c30cc[_0xd911('0x53')])?ut[_0xd911('0x12b')](_0x1c30cc[_0xd911('0x53')][_0xd911('0x55')],_0x1c30cc[_0xd911('0x34')],_0x1c30cc[_0xd911('0x12c')]>0x0?ut[_0xd911('0x12d')](_0x1c30cc['dialOriginateCallerIdNumber'],_0x1c30cc[_0xd911('0x12c')]):_0x1c30cc[_0xd911('0x35')]):ut['getCallerId'](_[_0xd911('0x6e')](_0x1c30cc[_0xd911('0x9f')])?_0x1c30cc['Trunk'][_0xd911('0x55')]:_0x1c30cc['TrunkBackup'][_0xd911('0x55')],_0x1c30cc[_0xd911('0x34')],_0x1c30cc[_0xd911('0x12c')]>0x0?ut['getCallerIdRandom'](_0x1c30cc['dialOriginateCallerIdNumber'],_0x1c30cc[_0xd911('0x12c')]):_0x1c30cc[_0xd911('0x35')]);if(_0x2d5611){_0xb066bb['originatecalleridname']=ut[_0xd911('0x12e')](_0x2d5611);_0xb066bb[_0xd911('0x12f')]=ut[_0xd911('0x130')](_0x2d5611);}var _0x28a15f=ut[_0xd911('0x131')](_0x1c30cc,_0x1cced0,_0x25fef4,_0x2d5611,_0x348a69,_0xb066bb);_[_0xd911('0x132')](_0xb066bb,ut['toLowerVariables'](_0x28a15f));_0xb066bb['starttime']=moment()[_0xd911('0x59')]('YYYY-MM-DD\x20HH:mm:ss');ami[_0xd911('0x79')](ut[_0xd911('0x133')](_0xb066bb,_0x1c30cc,_0x28a15f,_0xb066bb[_0xd911('0xb3')],_0x2b793e))[_0xd911('0x84')](function(_0xb103e3){var _0x1f29ad=_0xb066bb[_0xd911('0x134')];if(!_[_0xd911('0x6e')](_0x1f29ad)){if(!_['isNil'](_0x2a2eef['agents'][_0x1f29ad])){_0x2a2eef[_0xd911('0x17')][_0x1f29ad][_0xd911('0x135')]=_0xb066bb['calleridnum'];emit(util[_0xd911('0x59')](_0xd911('0x136'),_0x2a2eef[_0xd911('0x17')][_0x1f29ad][_0xd911('0x27')]),'user:agentconnect',{'destaccountcode':_0x2a2eef[_0xd911('0x17')][_0x1f29ad][_0xd911('0x137')],'destconnectedlinenum':_0xb066bb[_0xd911('0x138')]});}}_0x1c30cc[_0xd911('0x4d')]+=0x1;logger[_0xd911('0x5b')](_0xd911('0x139'),_0x348a69,_0xd911('0xc5'),_0x1c30cc[_0xd911('0x27')],_0xd911('0x72'),_0x1c30cc[_0xd911('0x4d')]);_0x218378(_0xb103e3);})[_0xd911('0x7c')](function(_0x5ac026){ut[_0xd911('0xf4')](_0xb066bb,0xe,_0xd911('0x13a'));rpcDb[_0xd911('0xf5')](_0xb066bb,_0xd911('0x13b'));_0x36150b(_0x5ac026);});});};Preview['prototype']['syncNewExten']=function(_0x5e22e7){if(this[_0xd911('0x16')][_0x5e22e7[_0xd911('0xb4')]]){this['actions'][_0x5e22e7[_0xd911('0xb4')]]['channel']=_0x5e22e7[_0xd911('0x7b')];}};Preview[_0xd911('0x10')][_0xd911('0x1a')]=function(_0x2d13e7){var _0x4ee30b=this;var _0x30534f=this['actions'][_0x2d13e7['actionid']];if(_0x30534f){if(_0x30534f['lookAgent']&&this[_0xd911('0x17')][_0x30534f[_0xd911('0x104')]]){ut[_0xd911('0x13c')](_0x30534f,this[_0xd911('0x17')][_0x30534f['lookAgent']]['name'],this['agents'][_0x30534f[_0xd911('0x104')]]['id']);}var _0x360695=_[_0xd911('0x13d')](_0x30534f);_0x360695['responsetime']=moment()[_0xd911('0x59')](_0xd911('0x90'));var _0x28200d=_0x4ee30b[_0xd911('0x13')][_0x30534f[_0xd911('0x71')]];if(ut[_0xd911('0x13e')](_0x2d13e7[_0xd911('0x13f')])){if(_0x30534f[_0xd911('0xb2')]){rpcDb['unlockContact'](_0x30534f[_0xd911('0x108')]);}if(_0x30534f[_0xd911('0xb3')]){rpcDb[_0xd911('0x8e')](_0x30534f[_0xd911('0x108')]);}ami[_0xd911('0x24')](_0xd911('0x140'),ut[_0xd911('0xa8')](_0x30534f,_0xd911('0x141'),this['campaignsPreview'][_0x30534f[_0xd911('0x71')]]));this[_0xd911('0xf1')](_0x360695,_0x28200d,_0x2d13e7);}else{_0x30534f[_0xd911('0x8f')]=moment()[_0xd911('0x59')](_0xd911('0x90'));ut[_0xd911('0xf4')](_0x360695,0x4,_0xd911('0xc0'));rpcDb['createAgentHistory'](_0x360695,_0xd911('0x142'));}}};Preview['prototype']['syncHangup']=function(_0x13dc04){var _0x2ac888=this;var _0x5d8510=this[_0xd911('0x16')][_0x13dc04[_0xd911('0xb4')]];var _0x3af802;if(_0x5d8510){_0x3af802=this[_0xd911('0x13')][_0x5d8510[_0xd911('0x71')]];logger[_0xd911('0x5b')](_0xd911('0x143'),_0x13dc04[_0xd911('0xb4')],'\x20Queue',_0x3af802[_0xd911('0x27')],_0xd911('0x73'),_0x3af802[_0xd911('0x2c')]);}if(this[_0xd911('0x16')][_0x13dc04[_0xd911('0xb4')]]&&_0x13dc04[_0xd911('0xb4')]!==_0x13dc04[_0xd911('0xb8')]){if(_0x13dc04['cause']==='16'&&this[_0xd911('0x16')][_0x13dc04['linkedid']]['dialAnswer']){this[_0xd911('0xa2')](_0x13dc04,_0x13dc04[_0xd911('0xb4')],_0x13dc04[_0xd911('0x144')]);}else if(this[_0xd911('0x16')][_0x13dc04[_0xd911('0xb4')]]['dialAnswer']){logger[_0xd911('0x5b')]('[syncHangup][talking][cause]',_0x13dc04['linkedid'],_0x13dc04[_0xd911('0x144')],'\x20Queue',_0x3af802['name'],_0xd911('0x73'),_0x3af802[_0xd911('0x2c')]);this[_0xd911('0xa2')](_0x13dc04,_0x13dc04[_0xd911('0xb4')],_0x13dc04[_0xd911('0x144')]);}}else if(_0x5d8510&&_[_0xd911('0x6e')](_0x5d8510[_0xd911('0x145')])&&_0x3af802['dialQueueProject']&&_0x13dc04[_0xd911('0xb4')]===_0x13dc04[_0xd911('0xb8')]&&_[_0xd911('0x6e')](_0x13dc04['reason'])&&_0x13dc04[_0xd911('0x144')]==='16'&&_0x13dc04[_0xd911('0x146')]==='6'&&_[_0xd911('0xf2')](_0x5d8510['transfer'])){if(_0x5d8510['unlockAgent']){rpcDb['unlockContact'](_0x5d8510['idContact']);}if(_0x5d8510[_0xd911('0xb3')]){rpcDb[_0xd911('0x8e')](_0x5d8510['idContact']);}_0x13dc04[_0xd911('0xfe')]='22';this['callProgressDetectingAgent'](_0x5d8510,_0x3af802,_0x13dc04);}else if(_0x5d8510&&_0x5d8510[_0xd911('0x147')]){if(_0x13dc04['cause']==='16'&&this[_0xd911('0x16')][_0x13dc04[_0xd911('0xb4')]]['dialAnswer']){logger[_0xd911('0x5b')](_0xd911('0x148'),_0x13dc04['linkedid'],_0x13dc04['cause'],_0xd911('0xc5'),_0x3af802[_0xd911('0x27')],_0xd911('0x73'),_0x3af802[_0xd911('0x2c')]);this[_0xd911('0xa2')](_0x13dc04,_0x13dc04[_0xd911('0xb4')],_0x13dc04[_0xd911('0x144')]);}else if(this[_0xd911('0x16')][_0x13dc04[_0xd911('0xb4')]][_0xd911('0xb7')]){logger['info'](_0xd911('0x149'),_0x13dc04[_0xd911('0xb4')],_0x13dc04[_0xd911('0x144')],_0xd911('0xc5'),_0x3af802[_0xd911('0x27')],_0xd911('0x73'),_0x3af802[_0xd911('0x2c')]);this[_0xd911('0xa2')](_0x13dc04,_0x13dc04[_0xd911('0xb4')],_0x13dc04[_0xd911('0x144')]);}}};Preview[_0xd911('0x10')][_0xd911('0x1e')]=function(_0x58aa23){if(this['actions'][_0x58aa23[_0xd911('0xf0')]]&&_0x58aa23[_0xd911('0xf0')]!==_0x58aa23[_0xd911('0x14a')]){this[_0xd911('0xa2')](_0x58aa23,_0x58aa23[_0xd911('0xf0')],_0x58aa23[_0xd911('0xe6')]);}};Preview[_0xd911('0x10')][_0xd911('0x14b')]=function(_0x222f15){if(this[_0xd911('0x16')][_0x222f15['linkedid']]&&_0x222f15[_0xd911('0xb4')]!==_0x222f15['uniqueid']&&!this[_0xd911('0x16')][_0x222f15[_0xd911('0xb4')]][_0xd911('0xb7')]){if(_0x222f15['cause']==='1'){this[_0xd911('0xa2')](_0x222f15,_0x222f15[_0xd911('0xb4')],_0x222f15[_0xd911('0x144')]);}}};Preview[_0xd911('0x10')][_0xd911('0x14c')]=function(_0x24368f,_0x219b0f,_0x521dbe){if(this['actions'][_0x24368f]){if(_[_0xd911('0x6e')](this['actions'][_0x24368f][_0xd911('0x14d')])){this[_0xd911('0x16')][_0x24368f]['variables']={};}this[_0xd911('0x16')][_0x24368f]['variables'][_0x219b0f]=_0x521dbe;}};Preview[_0xd911('0x10')]['syncVarSet']=function(_0x17baf5){try{if(!_[_0xd911('0x6e')](_0x17baf5)){if(ut[_0xd911('0x14e')](_['keys'](_0x17baf5[_0xd911('0x14f')])[0x0])){this[_0xd911('0x14c')](_0x17baf5['uniqueid'],_[_0xd911('0x150')](_0x17baf5['variable'])[0x0],_0x17baf5[_0xd911('0x151')]);}}}catch(_0x44bf6f){logger[_0xd911('0x152')](_0xd911('0x153'),util['inspect'](_0x44bf6f,{'showHidden':![],'depth':null}));}};Preview[_0xd911('0x10')][_0xd911('0x21')]=function(_0x364a92){if(_0x364a92){if(this[_0xd911('0x16')][_0x364a92['transfertargetlinkedid']]){this[_0xd911('0x16')][_0x364a92[_0xd911('0x154')]][_0xd911('0x147')]=!![];}}};Preview[_0xd911('0x10')][_0xd911('0x22')]=function(_0xee37ef){if(_0xee37ef){if(this[_0xd911('0x16')][_0xee37ef['transfererlinkedid']]){this[_0xd911('0x16')][_0xee37ef[_0xd911('0x155')]]['transfer']=!![];}}};module[_0xd911('0x156')]=Preview;
\ No newline at end of file
+var _0xc653=['dialAbandonedRetryFrequency','dialstatus','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','amd','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','cause-txt','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','ANSWER','destlinkedid','callProgressDetectingAgent','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','checkInBlack','Contact','phone','lookAgent','execCall','Queue:\x20','\x20IdHopper:\x20','idContact','custom:agentcalled','Calling','[Preview][execCall][failure]','outboundBlacklistCallsDay','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','unlock','unlockContact','execRun','recallme','validateContact','checkIsBlackList','Contact.phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','isEmpty','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','callerid','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','variablesAction','channelAgent','destconnectedlinenum','calleridnum','user:agentconnect','[originated][increment]','syncNewExten','channel','actionid','logLookAgent','responsetime','isFailure','response','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','statedesc','isUndefined','transfer','[syncHangup][talking][transfer]','callProgressDetectingCustomer','variables','filterKey','keys','variable','addVariable','value','error','[syncVarSet][Preview]','inspect','syncAttendedTransfer','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','bluebird','uuid','moment','md5','ioredis','../../../config/environment','../../../config/logger','actionPreview','../ami','./action','./util/util','redis','defaults','localhost','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','hangup','syncHangup','hanguprequest','syncHangupRequest','bind','dialend','syncDialEnd','newexten','varset','syncVarSet','attendedtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','strategy','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','talking','unmanaged','abandoned','waiting','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startProgressive','Trunk','name','active','Interval','stringify','format','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice:queue:%s','voice_queue_presence:remove','sendMessageOneNotActive','paused','message','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','syncCampaigns','preview','clearZombieChannels','hasOwnProperty','dialActive','recallMe','clearZombieChannel','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','pick','contactId','UserId','VoiceQueueId','ListId','Action','status','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','dialAnswer','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[action]','size','getContactRecallMe','agentReadyId','then','length','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','logger2','catch','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','ACTIVE','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','createCustomerHistory','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','unlockAgent','activeContact','linkedid','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','connect','acw','custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','talktime','BUSY','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','dialBusyRetryFrequency','NOANSWER','countnoanswerretry','NoAnswer','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','CONGESTION','countcongestionretry','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','CANCEL','countagentrejectretry','AgentReject','custom:agentreject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety'];(function(_0x2df2d0,_0x1d6ea8){var _0x3c4438=function(_0x456da2){while(--_0x456da2){_0x2df2d0['push'](_0x2df2d0['shift']());}};_0x3c4438(++_0x1d6ea8);}(_0xc653,0x1c8));var _0x3c65=function(_0x4cbc4f,_0x35777d){_0x4cbc4f=_0x4cbc4f-0x0;var _0xfe51c=_0xc653[_0x4cbc4f];return _0xfe51c;};'use strict';var util=require(_0x3c65('0x0'));var _=require(_0x3c65('0x1'));var BPromise=require(_0x3c65('0x2'));var uuid=require(_0x3c65('0x3'));var moment=require(_0x3c65('0x4'));var md5=require(_0x3c65('0x5'));var Redis=require(_0x3c65('0x6'));var config=require(_0x3c65('0x7'));var logger=require(_0x3c65('0x8'))('preview');var loggerAction=require('../../../config/logger')(_0x3c65('0x9'));var ami=require(_0x3c65('0xa'));var rpcDb=require('./rpcDb');var Action=require(_0x3c65('0xb'));var ut=require(_0x3c65('0xc'));config[_0x3c65('0xd')]=_[_0x3c65('0xe')](config[_0x3c65('0xd')],{'host':_0x3c65('0xf'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3c65('0xd')]));var Sequence=function(){};Sequence[_0x3c65('0x10')][_0x3c65('0x11')]=function(_0x2fb840){this[_0x3c65('0x12')]=this[_0x3c65('0x12')]?this[_0x3c65('0x12')][_0x3c65('0x13')](_0x2fb840):_0x2fb840();};function Preview(_0x5ba2ab){this[_0x3c65('0x14')]=new Sequence();this[_0x3c65('0x15')]=_0x5ba2ab[_0x3c65('0x16')];this['trunks']=_0x5ba2ab[_0x3c65('0x17')];this[_0x3c65('0x18')]={};this[_0x3c65('0x19')]=_0x5ba2ab[_0x3c65('0x19')];this[_0x3c65('0x1a')]=0x0;ami['on'](_0x3c65('0x1b'),this[_0x3c65('0x1c')]['bind'](this));ami['on'](_0x3c65('0x1d'),this[_0x3c65('0x1e')]['bind'](this));ami['on'](_0x3c65('0x1f'),this[_0x3c65('0x20')][_0x3c65('0x21')](this));ami['on'](_0x3c65('0x22'),this[_0x3c65('0x23')][_0x3c65('0x21')](this));ami['on'](_0x3c65('0x24'),this['syncNewExten'][_0x3c65('0x21')](this));ami['on'](_0x3c65('0x25'),this[_0x3c65('0x26')]['bind'](this));ami['on'](_0x3c65('0x27'),this['syncAttendedTransfer'][_0x3c65('0x21')](this));ami['on']('blindtransfer',this[_0x3c65('0x28')][_0x3c65('0x21')](this));this[_0x3c65('0x29')](this['campaignsPreview']);}function emit(_0x2e4348,_0x2975f0,_0x1e345a){io['to'](_0x2e4348)[_0x3c65('0x2a')](_0x2975f0,_0x1e345a);}function emitCampaignPreview(_0x29c279){if(_0x29c279[_0x3c65('0x2b')]===_0x3c65('0x2c')){var _0x2c9130={'id':_0x29c279['id'],'name':_0x29c279['name'],'strategy':_0x29c279[_0x3c65('0x2d')],'answered':_0x29c279[_0x3c65('0x2e')],'available':_0x29c279[_0x3c65('0x2f')],'loggedIn':_0x29c279[_0x3c65('0x30')],'pTalking':_0x29c279[_0x3c65('0x31')],'sumBillable':_0x29c279[_0x3c65('0x32')],'sumDuration':_0x29c279['sumDuration'],'sumHoldTime':_0x29c279[_0x3c65('0x33')]||0x0,'talking':_0x29c279[_0x3c65('0x34')],'total':_0x29c279['total'],'type':_0x29c279[_0x3c65('0x2b')],'unmanaged':_0x29c279[_0x3c65('0x35')],'abandoned':_0x29c279[_0x3c65('0x36')],'waiting':_0x29c279[_0x3c65('0x37')],'loggedInDb':_0x29c279['loggedInDb'],'dialActive':_0x29c279['dialActive'],'dialMethod':_0x29c279[_0x3c65('0x38')],'dialOriginateCallerIdName':_0x29c279[_0x3c65('0x39')],'dialOriginateCallerIdNumber':_0x29c279[_0x3c65('0x3a')],'dialOriginateTimeout':_0x29c279['dialOriginateTimeout'],'dialPrefix':_0x29c279[_0x3c65('0x3b')],'outboundAnswerAgiCallsDay':_0x29c279[_0x3c65('0x3c')],'outboundAnswerCallsDay':_0x29c279[_0x3c65('0x3d')],'outboundBlacklistCallsDay':_0x29c279['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x29c279[_0x3c65('0x3e')],'outboundCongestionCallsDay':_0x29c279[_0x3c65('0x3f')],'outboundDropCallsDayACS':_0x29c279[_0x3c65('0x40')],'outboundDropCallsDayCallersExit':_0x29c279[_0x3c65('0x41')],'outboundDropCallsDayTimeout':_0x29c279['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x29c279[_0x3c65('0x42')],'outboundNoSuchCallsDay':_0x29c279[_0x3c65('0x43')],'outboundOriginateFailureCallsDay':_0x29c279[_0x3c65('0x44')],'outboundReCallsDay':_0x29c279['outboundReCallsDay'],'outboundRejectCallsDay':_0x29c279[_0x3c65('0x45')],'outboundUnknownCallsDay':_0x29c279[_0x3c65('0x46')],'outboundAbandonedCallsDay':_0x29c279['outboundAbandonedCallsDay'],'predictiveIntervalAnsweredCalls':_0x29c279[_0x3c65('0x47')],'predictiveIntervalAvgHoldtime':_0x29c279[_0x3c65('0x48')],'predictiveIntervalAvgTalktime':_0x29c279['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x29c279[_0x3c65('0x49')],'predictiveIntervalDroppedCallsTimeout':_0x29c279[_0x3c65('0x4a')],'predictiveIntervalErlangCalls':_0x29c279[_0x3c65('0x4b')],'predictiveIntervalErlangCallsDroppedCalls':_0x29c279[_0x3c65('0x4c')],'predictiveIntervalHitRate':_0x29c279[_0x3c65('0x4d')],'predictiveIntervalMultiplicativeFactor':_0x29c279['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x29c279[_0x3c65('0x4e')],'predictiveIntervalAvailable':_0x29c279['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x29c279[_0x3c65('0x4f')],'message':_0x29c279['message'],'originated':_0x29c279[_0x3c65('0x50')],'erlangCalls':_0x29c279[_0x3c65('0x51')],'erlangCallToSecond':_0x29c279['erlangCallToSecond'],'erlangAbandonmentRate':_0x29c279[_0x3c65('0x52')],'erlangBusyFactor':_0x29c279[_0x3c65('0x53')],'startPredictive':_0x29c279['startPredictive'],'startProgressive':_0x29c279[_0x3c65('0x54')]};if(_0x29c279[_0x3c65('0x55')]){_0x2c9130[_0x3c65('0x55')]={'id':_0x29c279[_0x3c65('0x55')]['id'],'name':_0x29c279[_0x3c65('0x55')][_0x3c65('0x56')],'active':_0x29c279[_0x3c65('0x55')][_0x3c65('0x57')],'callerid':_0x29c279[_0x3c65('0x55')]['callerid']};}if(_0x29c279[_0x3c65('0x58')]){_0x2c9130[_0x3c65('0x58')]={'id':_0x29c279[_0x3c65('0x58')]['id'],'name':_0x29c279[_0x3c65('0x58')][_0x3c65('0x56')]};}var _0xf5dd9f=md5(JSON[_0x3c65('0x59')](_0x2c9130));if(_0x29c279[_0x3c65('0x5')]!==_0xf5dd9f){_0x29c279[_0x3c65('0x5')]=_0xf5dd9f;emit(util[_0x3c65('0x5a')]('voice:queue:%s',_0x2c9130['name']),_0x3c65('0x5b'),_0x2c9130);}}}function emitVoiceQueueChannelRemove(_0x1c1963){logger[_0x3c65('0x5c')](_0x3c65('0x5d'),JSON['stringify'](_0x1c1963));emit(util[_0x3c65('0x5a')](_0x3c65('0x5e'),_0x1c1963[_0x3c65('0x56')]),'voice_queue_channel:remove',_0x1c1963);io[_0x3c65('0x2a')](_0x3c65('0x5f'),_0x1c1963);}function notSendMessagesQueue(_0x15dbc7){if(_0x15dbc7[_0x3c65('0x60')]){if(_0x15dbc7['originated']===0x0&&_0x15dbc7[_0x3c65('0x31')]===0x0){_0x15dbc7['sendMessageOneNotActive']=![];_0x15dbc7[_0x3c65('0x2f')]=0x0;_0x15dbc7[_0x3c65('0x61')]=0x0;_0x15dbc7[_0x3c65('0x62')]=_0x3c65('0x63');ut[_0x3c65('0x64')](_0x3c65('0x65'),_0x15dbc7[_0x3c65('0x56')]+_0x3c65('0x66'));}else{_0x15dbc7[_0x3c65('0x62')]=_0x3c65('0x67');ut[_0x3c65('0x64')](_0x3c65('0x65'),_0x15dbc7[_0x3c65('0x56')]+_0x3c65('0x68'));}emitCampaignPreview(_0x15dbc7);}}Preview[_0x3c65('0x10')][_0x3c65('0x29')]=function(){var _0x34e95e=this;setInterval(function(){_0x34e95e[_0x3c65('0x69')]();},0x7cf);};Preview[_0x3c65('0x10')][_0x3c65('0x69')]=function(){var _0x50aaef=this[_0x3c65('0x15')];this['clockClearZombieChannels']+=0x1;for(var _0x172088 in _0x50aaef){if(_0x50aaef['hasOwnProperty'](_0x172088)&&(_0x50aaef[_0x172088][_0x3c65('0x38')]===_0x3c65('0x6a')||_0x50aaef[_0x172088][_0x3c65('0x38')]==='booked')&&_0x50aaef[_0x172088][_0x3c65('0x2b')]===_0x3c65('0x2c')){if(this[_0x3c65('0x1a')]>0x7){this['clockClearZombieChannels']=0x0;this[_0x3c65('0x6b')]();}}if(_0x50aaef[_0x3c65('0x6c')](_0x172088)&&_0x50aaef[_0x172088][_0x3c65('0x38')]==='preview'&&_0x50aaef[_0x172088]['type']===_0x3c65('0x2c')){if(_0x50aaef[_0x172088][_0x3c65('0x6d')]){this['setMessage'](_0x50aaef[_0x172088]);this[_0x3c65('0x6e')](_0x50aaef[_0x172088]);}else{notSendMessagesQueue(_0x50aaef[_0x172088]);}}}};Preview[_0x3c65('0x10')][_0x3c65('0x6f')]=function(_0x14dd1a){var _0x306f87=this;this[_0x3c65('0x14')]['enqueue'](function(){if(!_[_0x3c65('0x70')](_0x306f87[_0x3c65('0x18')][_0x14dd1a])){loggerAction[_0x3c65('0x5c')](_0x3c65('0x71'),_0x14dd1a,_0x3c65('0x72'),_0x306f87[_0x3c65('0x18')][_0x14dd1a][_0x3c65('0x73')],_0x3c65('0x74'),JSON['stringify'](_0x306f87[_0x3c65('0x15')][_0x306f87['actions'][_0x14dd1a]['queue']][_0x3c65('0x50')]),_0x3c65('0x75'),JSON[_0x3c65('0x59')](_0x306f87['campaignsPreview'][_0x306f87[_0x3c65('0x18')][_0x14dd1a]['queue']][_0x3c65('0x31')]),JSON['stringify'](_0x306f87[_0x3c65('0x18')][_0x14dd1a]['dialAnswer']),JSON[_0x3c65('0x59')](_[_0x3c65('0x76')](_0x306f87[_0x3c65('0x18')][_0x14dd1a],[_0x3c65('0x77'),_0x3c65('0x78'),_0x3c65('0x79'),_0x3c65('0x7a')])));return ami[_0x3c65('0x7b')]({'action':_0x3c65('0x7c'),'channel':_0x306f87[_0x3c65('0x18')][_0x14dd1a]['channel']})['catch'](function(_0x4dfd6a){if(_0x4dfd6a[_0x3c65('0x62')]===_0x3c65('0x7d')){setTimeout(function(){if(_0x306f87[_0x3c65('0x18')][_0x14dd1a]){ut[_0x3c65('0x7e')](_0x306f87[_0x3c65('0x15')][_0x306f87[_0x3c65('0x18')][_0x14dd1a]['queue']],_0x3c65('0x7f'));if(_0x306f87[_0x3c65('0x18')][_0x14dd1a][_0x3c65('0x80')]===!![]){ut[_0x3c65('0x81')](_0x306f87['campaignsPreview'][_0x306f87[_0x3c65('0x18')][_0x14dd1a]['queue']],_0x3c65('0x7f'));ut[_0x3c65('0x82')](_0x3c65('0x83')+_0x14dd1a,_0x306f87['actions'][_0x14dd1a]['queue']);}ut[_0x3c65('0x82')]('[Dialer][checkChannel][Preview]'+_0x14dd1a,_0x306f87[_0x3c65('0x18')][_0x14dd1a][_0x3c65('0x73')]);delete _0x306f87[_0x3c65('0x18')][_0x14dd1a];}},0x2328);}});}});};Preview[_0x3c65('0x10')][_0x3c65('0x6b')]=function(){var _0x2455a3=this;loggerAction[_0x3c65('0x5c')](_0x3c65('0x84'),_[_0x3c65('0x85')](this[_0x3c65('0x18')]));for(var _0x4af6a1 in this[_0x3c65('0x18')]){if(_0x2455a3[_0x3c65('0x18')][_0x3c65('0x6c')](_0x4af6a1)){_0x2455a3['clearZombieChannel'](_0x4af6a1);}}};Preview[_0x3c65('0x10')][_0x3c65('0x6e')]=function(_0x23159a){var _0x9788c2=this;rpcDb[_0x3c65('0x86')](_0x23159a['id'],ut[_0x3c65('0x87')](this[_0x3c65('0x19')]))[_0x3c65('0x88')](function(_0x186987){if(!_[_0x3c65('0x70')](_0x186987)){for(var _0x29aace=0x0;_0x29aace<_0x186987[_0x3c65('0x89')];_0x29aace+=0x1){if(ut['getDiff'](_0x186987[_0x29aace][_0x3c65('0x8a')])<_0x23159a[_0x3c65('0x8b')]*0x3c){if(_0x186987[_0x29aace][_0x3c65('0x8c')]&&!_0x186987[_0x29aace][_0x3c65('0x8c')][_0x3c65('0x8d')]){_0x9788c2[_0x3c65('0x8e')](_0x186987[_0x29aace]['id'])[_0x3c65('0x88')](ut[_0x3c65('0x8f')]('[RecallMe]'))[_0x3c65('0x90')](ut[_0x3c65('0x8f')](_0x3c65('0x91')));}else{rpcDb[_0x3c65('0x92')](_0x186987[_0x29aace]['id']);}}else{var _0x12e763=new Action(_0x186987[_0x29aace],_0x23159a);_0x12e763[_0x3c65('0x93')]=moment()[_0x3c65('0x5a')](_0x3c65('0x94'));_0x23159a[_0x3c65('0x95')]+=0x1;ut[_0x3c65('0x96')](_0x12e763,0x17,_0x3c65('0x97'));if(_0x23159a[_0x3c65('0x98')]){rpcDb[_0x3c65('0x99')](ut[_0x3c65('0x9a')](_0x186987[_0x29aace]));rpcDb['createCustomerHistory'](_0x12e763,_0x3c65('0x9b'));}else{ut[_0x3c65('0x96')](_0x12e763,0x16,_0x3c65('0x9c'));rpcDb['createCustomerHistory'](_0x12e763,_0x3c65('0x9d'));rpcDb[_0x3c65('0x9e')](_0x12e763,_0x3c65('0x9d'));}}}}})[_0x3c65('0x90')](ut['logger2'](_0x3c65('0x9f')));};Preview[_0x3c65('0x10')]['setMessage']=function(_0x58bcff){_0x58bcff[_0x3c65('0x60')]=!![];if(ut[_0x3c65('0xa0')](_0x58bcff[_0x3c65('0x30')])){_0x58bcff[_0x3c65('0x62')]=_0x3c65('0xa1');}else if(!ut[_0x3c65('0xa2')](_0x58bcff[_0x3c65('0x6d')])){_0x58bcff[_0x3c65('0x62')]=_0x3c65('0x63');}else if(!this[_0x3c65('0xa3')](_0x58bcff[_0x3c65('0x55')])){if(!this[_0x3c65('0xa3')](_0x58bcff[_0x3c65('0xa4')])){_0x58bcff[_0x3c65('0x62')]='TRUNK_IS_NOT_REACHABLE';}else{_0x58bcff[_0x3c65('0x62')]=_0x3c65('0xa5');}}else{_0x58bcff[_0x3c65('0x62')]=_0x3c65('0xa5');}emitCampaignPreview(_0x58bcff);};Preview[_0x3c65('0x10')]['callProgressDetectingCustomer']=function(_0x17468c,_0x473a70,_0xb5b2f){var _0x18ad91=this;var _0x10bb84=this[_0x3c65('0x18')][_0x473a70];var _0x44d932=this['campaignsPreview'][_0x10bb84[_0x3c65('0x73')]];var _0x1f101c;if(_0x44d932){switch(_0xb5b2f){case'1':_0x44d932[_0x3c65('0x43')]+=0x1;_0x10bb84['countnosuchnumberretry']+=0x1;_0x10bb84[_0x3c65('0xa6')]=ut[_0x3c65('0xa7')](_0x10bb84);ut[_0x3c65('0x96')](_0x10bb84,0x0,_0x3c65('0xa8'));ami[_0x3c65('0x2a')](_0x3c65('0xa9'),ut[_0x3c65('0xaa')](_0x10bb84,_0x3c65('0xab')));rpcDb[_0x3c65('0xac')](_0x10bb84,_0x3c65('0xad'));if(ut[_0x3c65('0xa7')](_0x10bb84)>=_0x44d932[_0x3c65('0xae')]){_0x1f101c=ut[_0x3c65('0xaf')](_0x10bb84,0xf,_0x3c65('0xb0'));rpcDb['createCustomerFinal'](_0x1f101c,_0x3c65('0xb1'));}else{if(_0x10bb84['countnosuchnumberretry']>=_0x44d932[_0x3c65('0xb2')]){rpcDb['createCustomerFinal'](_0x10bb84,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0x3c65('0xb3')](ut[_0x3c65('0xb4')](_0x10bb84,'countnosuchnumberretry',_0x44d932['dialNoSuchNumberRetryFrequency']),_0x10bb84[_0x3c65('0xb5')],_0x10bb84[_0x3c65('0xb6')]);}}delete this['actions'][_0x17468c[_0x3c65('0xb7')]];break;case'ANSWER':var _0x2d2bbc=moment()[_0x3c65('0x5a')](_0x3c65('0x94'));_0x10bb84['responsetime']=_0x2d2bbc;_0x10bb84[_0x3c65('0xb8')]=_0x2d2bbc;_0x10bb84['dialAnswer']=!![];_0x44d932[_0x3c65('0x31')]+=0x1;logger['info'](_0x3c65('0xb9'),_0x10bb84[_0x3c65('0xba')],_0x3c65('0xbb'),_0x44d932['name'],_0x3c65('0x75'),_0x44d932[_0x3c65('0x31')]);ami['emit'](_0x3c65('0xbc'),ut['buildObj'](_0x10bb84,_0x3c65('0xbd'),this['campaignsPreview'][_0x10bb84[_0x3c65('0x73')]]));if(_0x44d932[_0x3c65('0xbe')]){ami['emit']('custom:agentConnectPreview',ut['buildAcw'](_0x10bb84));}break;case'16':ami[_0x3c65('0x2a')](_0x3c65('0xbf'),ut[_0x3c65('0xaa')](_0x10bb84,_0x3c65('0xc0'),this[_0x3c65('0x15')][_0x10bb84[_0x3c65('0x73')]]));emitVoiceQueueChannelRemove(ut[_0x3c65('0xaa')](_0x10bb84,'complete'));_0x44d932[_0x3c65('0x3d')]+=0x1;_0x44d932['total']+=0x1;_0x44d932[_0x3c65('0x2e')]+=0x1;ut[_0x3c65('0x81')](_0x44d932,_0x3c65('0xc1'));_0x10bb84[_0x3c65('0xa6')]=ut[_0x3c65('0xa7')](_0x10bb84);ut[_0x3c65('0x96')](_0x10bb84,0x4,_0x3c65('0xc2'));rpcDb[_0x3c65('0xac')](_0x10bb84,_0x3c65('0xc3'));rpcDb[_0x3c65('0x9e')](_0x10bb84,_0x3c65('0xc4'));rpcDb[_0x3c65('0xc5')](_0x10bb84);_0x44d932[_0x3c65('0xc6')]+=_0x10bb84[_0x3c65('0xc7')];_0x44d932[_0x3c65('0x32')]+=_0x10bb84['talktime'];logger[_0x3c65('0x5c')]('[syncHangup][talking][decrement]',_0x10bb84[_0x3c65('0xba')],_0x3c65('0xbb'),_0x44d932[_0x3c65('0x56')],_0x3c65('0x75'),_0x44d932['pTalking']);delete this[_0x3c65('0x18')][_0x17468c[_0x3c65('0xb7')]];break;case _0x3c65('0xc8'):_0x44d932[_0x3c65('0x3e')]+=0x1;_0x10bb84[_0x3c65('0xc9')]+=0x1;_0x10bb84[_0x3c65('0xa6')]=ut[_0x3c65('0xa7')](_0x10bb84);ut[_0x3c65('0x96')](_0x10bb84,0x5,_0x3c65('0xca'));ami[_0x3c65('0x2a')](_0x3c65('0xcb'),ut[_0x3c65('0xaa')](_0x10bb84,_0x3c65('0xcc')));rpcDb[_0x3c65('0xac')](_0x10bb84,_0x3c65('0xcd'));if(ut[_0x3c65('0xa7')](_0x10bb84)>=_0x44d932[_0x3c65('0xae')]){_0x1f101c=ut[_0x3c65('0xaf')](_0x10bb84,0xf,'Global');rpcDb[_0x3c65('0x9e')](_0x1f101c,_0x3c65('0xce'));}else{if(_0x10bb84['countbusyretry']>=_0x44d932[_0x3c65('0xcf')]){rpcDb[_0x3c65('0x9e')](_0x10bb84,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb['rescheduleContact'](ut[_0x3c65('0xb4')](_0x10bb84,_0x3c65('0xc9'),_0x44d932[_0x3c65('0xd0')]),_0x10bb84[_0x3c65('0xb5')],_0x10bb84[_0x3c65('0xb6')]);}}break;case _0x3c65('0xd1'):_0x44d932[_0x3c65('0x42')]+=0x1;_0x10bb84[_0x3c65('0xd2')]+=0x1;_0x10bb84[_0x3c65('0xa6')]=ut['totalGlobal'](_0x10bb84);ut[_0x3c65('0x96')](_0x10bb84,0x3,_0x3c65('0xd3'));ami[_0x3c65('0x2a')](_0x3c65('0xd4'),ut[_0x3c65('0xaa')](_0x10bb84,_0x3c65('0xd5')));rpcDb['createCustomerHistory'](_0x10bb84,'[callProgressDetectingCustomer][logNoAnswer]');if(ut[_0x3c65('0xa7')](_0x10bb84)>=_0x44d932[_0x3c65('0xae')]){_0x1f101c=ut['cloneAction'](_0x10bb84,0xf,_0x3c65('0xb0'));rpcDb[_0x3c65('0x9e')](_0x1f101c,_0x3c65('0xd6'));}else{if(_0x10bb84['countnoanswerretry']>=_0x44d932[_0x3c65('0xd7')]){rpcDb[_0x3c65('0x9e')](_0x10bb84,_0x3c65('0xd8'));}else{rpcDb['rescheduleContact'](ut[_0x3c65('0xb4')](_0x10bb84,_0x3c65('0xd2'),_0x44d932['dialNoAnswerRetryFrequency']),_0x10bb84['unlockAgent'],_0x10bb84[_0x3c65('0xb6')]);}}break;case _0x3c65('0xd9'):_0x44d932[_0x3c65('0x3f')]+=0x1;_0x10bb84[_0x3c65('0xda')]+=0x1;_0x10bb84[_0x3c65('0xa6')]=ut[_0x3c65('0xa7')](_0x10bb84);ut[_0x3c65('0x96')](_0x10bb84,0x8,'Congestion');ami[_0x3c65('0x2a')](_0x3c65('0xdb'),ut['buildObj'](_0x10bb84,_0x3c65('0xdc')));rpcDb[_0x3c65('0xac')](_0x10bb84,_0x3c65('0xdd'));if(ut[_0x3c65('0xa7')](_0x10bb84)>=_0x44d932[_0x3c65('0xae')]){_0x1f101c=ut['cloneAction'](_0x10bb84,0xf,'Global');rpcDb[_0x3c65('0x9e')](_0x1f101c,_0x3c65('0xde'));}else{if(_0x10bb84[_0x3c65('0xda')]>=_0x44d932['dialCongestionMaxRetry']){rpcDb[_0x3c65('0x9e')](_0x10bb84,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb['rescheduleContact'](ut[_0x3c65('0xb4')](_0x10bb84,_0x3c65('0xda'),_0x44d932[_0x3c65('0xd0')]),_0x10bb84['unlockAgent'],_0x10bb84[_0x3c65('0xb6')]);}}break;case _0x3c65('0xdf'):_0x44d932['outboundRejectCallsDay']+=0x1;_0x10bb84[_0x3c65('0xe0')]+=0x1;_0x10bb84[_0x3c65('0xa6')]=ut[_0x3c65('0xa7')](_0x10bb84);ut['logCustomer'](_0x10bb84,0x14,_0x3c65('0xe1'));ami[_0x3c65('0x2a')](_0x3c65('0xe2'),ut[_0x3c65('0xaa')](_0x10bb84,'agentreject'));rpcDb[_0x3c65('0xac')](_0x10bb84,'[syncHangupRequest][logAgentReject]');if(ut[_0x3c65('0xa7')](_0x10bb84)>=_0x44d932[_0x3c65('0xae')]){_0x1f101c=ut['cloneAction'](_0x10bb84,0x14,_0x3c65('0xe1'));rpcDb[_0x3c65('0x9e')](_0x1f101c,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x10bb84[_0x3c65('0xe0')]>=_0x44d932['dialAgentRejectMaxRetry']){rpcDb[_0x3c65('0x9e')](_0x10bb84,_0x3c65('0xe3'));}else{rpcDb[_0x3c65('0xb3')](ut['scheduledAt'](_0x10bb84,_0x3c65('0xe0'),_0x44d932[_0x3c65('0xe4')]),_0x10bb84['unlockAgent'],_0x10bb84[_0x3c65('0xb6')]);}}break;case _0x3c65('0xe5'):_0x44d932['outboundAbandonedCallsDay']+=0x1;_0x10bb84[_0x3c65('0xe6')]+=0x1;_0x10bb84['countglobal']=ut[_0x3c65('0xa7')](_0x10bb84);ut[_0x3c65('0x96')](_0x10bb84,0xb,'Abandoned');rpcDb['createCustomerHistory'](_0x10bb84,_0x3c65('0xe7'));if(ut[_0x3c65('0xa7')](_0x10bb84)>=_0x44d932[_0x3c65('0xae')]){_0x1f101c=ut[_0x3c65('0xaf')](_0x10bb84,0xf,'Global');rpcDb[_0x3c65('0x9e')](_0x1f101c,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x10bb84[_0x3c65('0xe8')]>=_0x44d932[_0x3c65('0xe9')]){rpcDb[_0x3c65('0x9e')](_0x10bb84,_0x3c65('0xe7'));}else{rpcDb['rescheduleContact'](ut[_0x3c65('0xb4')](_0x10bb84,'countabandonedretry',_0x44d932[_0x3c65('0xea')]),_0x10bb84[_0x3c65('0xb5')],_0x10bb84[_0x3c65('0xb6')]);}}break;case'18':_0x44d932[_0x3c65('0x46')]+=0x1;_0x10bb84['countmachineretry']+=0x1;_0x10bb84[_0x3c65('0xa6')]=ut['totalGlobal'](_0x10bb84);ut[_0x3c65('0x96')](_0x10bb84,0x12,_0x17468c['cause-txt']||_0x17468c[_0x3c65('0xeb')]);ami[_0x3c65('0x2a')](_0x3c65('0xec'),ut[_0x3c65('0xaa')](_0x10bb84,'amd'));rpcDb[_0x3c65('0xac')](_0x10bb84,'[callProgressDetectingCustomer][hangupInAMD]');if(ut['totalGlobal'](_0x10bb84)>=_0x44d932[_0x3c65('0xae')]){_0x1f101c=ut['cloneAction'](_0x10bb84,0xf,_0x3c65('0xb0'));rpcDb['createCustomerFinal'](_0x1f101c,_0x3c65('0xed'));}else{rpcDb[_0x3c65('0x9e')](_0x10bb84,'[callProgressDetectingCustomer][hangupInAMD]');}delete this[_0x3c65('0x18')][_0x17468c[_0x3c65('0xb7')]];break;case'19':_0x44d932[_0x3c65('0x46')]+=0x1;_0x10bb84[_0x3c65('0xa6')]=ut['totalGlobal'](_0x10bb84);ut[_0x3c65('0x96')](_0x10bb84,0x13,_0x17468c['cause-txt']||_0x17468c['dialstatus']);ami[_0x3c65('0x2a')](_0x3c65('0xec'),ut[_0x3c65('0xaa')](_0x10bb84,_0x3c65('0xee')));rpcDb[_0x3c65('0xac')](_0x10bb84,_0x3c65('0xef'));if(ut[_0x3c65('0xa7')](_0x10bb84)>=_0x44d932[_0x3c65('0xae')]){_0x1f101c=ut[_0x3c65('0xaf')](_0x10bb84,0xf,_0x3c65('0xb0'));rpcDb[_0x3c65('0x9e')](_0x1f101c,_0x3c65('0xef'));}else{rpcDb[_0x3c65('0x9e')](_0x10bb84,_0x3c65('0xef'));}delete this['actions'][_0x17468c[_0x3c65('0xb7')]];break;default:if(_0x10bb84['dialAnswer']){ut[_0x3c65('0x81')](_0x44d932,_0x3c65('0xf0'));ut[_0x3c65('0x82')](_0x3c65('0xf1')+_0x44d932['name'],_0x17468c);}_0x44d932[_0x3c65('0x46')]+=0x1;_0x10bb84[_0x3c65('0xa6')]=ut['totalGlobal'](_0x10bb84);ut[_0x3c65('0x96')](_0x10bb84,0xc,_0x17468c[_0x3c65('0xf2')]||_0x17468c[_0x3c65('0xeb')]);rpcDb[_0x3c65('0xac')](_0x10bb84,_0x3c65('0xf3'));if(ut[_0x3c65('0xa7')](_0x10bb84)>=_0x44d932[_0x3c65('0xae')]){_0x1f101c=ut[_0x3c65('0xaf')](_0x10bb84,0xf,_0x3c65('0xb0'));rpcDb[_0x3c65('0x9e')](_0x1f101c,_0x3c65('0xf4'));}else{rpcDb['createCustomerFinal'](_0x10bb84,_0x3c65('0xf4'));}delete this[_0x3c65('0x18')][_0x17468c[_0x3c65('0xb7')]];}if(!(_0x10bb84[_0x3c65('0x80')]&&_0xb5b2f==='16')){ut[_0x3c65('0x7e')](_0x44d932,'[callProgressDetectingCustomer]');logger[_0x3c65('0x5c')]('[originated][decrement][callProgressDetectingCustomer]',_0x10bb84['uniqueid'],_0x3c65('0xbb'),_0x44d932[_0x3c65('0x56')],_0x3c65('0x74'),_0x44d932[_0x3c65('0x50')]);}if(_0xb5b2f!==_0x3c65('0xf5')){delete this[_0x3c65('0x18')][_0x17468c['linkedid']];delete this[_0x3c65('0x18')][_0x17468c[_0x3c65('0xf6')]];}}};Preview[_0x3c65('0x10')][_0x3c65('0xf7')]=function(_0x40d364,_0x51681b,_0x5497a4){if(_['isUndefined'](_0x51681b)&&_0x3c65('0xf8')!==typeof _0x51681b){return;}if(_['isUndefined'](_0x5497a4)&&_0x3c65('0xf8')!==typeof _0x5497a4){return;}switch(_0x5497a4[_0x3c65('0xf9')]){case'0':ut[_0x3c65('0xfa')](_0x40d364,0x0,_0x3c65('0xa8'));rpcDb[_0x3c65('0xfb')](_0x40d364,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut['logAgent'](_0x40d364,0x3,_0x3c65('0xd3'));rpcDb['createAgentHistory'](_0x40d364,_0x3c65('0xfc'));break;case'5':ut[_0x3c65('0xfa')](_0x40d364,0x5,_0x3c65('0xca'));rpcDb[_0x3c65('0xfb')](_0x40d364,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0x3c65('0xfa')](_0x40d364,0x8,'Congestion');rpcDb[_0x3c65('0xfb')](_0x40d364,_0x3c65('0xfd'));break;case'22':ut[_0x3c65('0xfa')](_0x40d364,0x16,_0x3c65('0xfe'));rpcDb[_0x3c65('0xfb')](_0x40d364,_0x3c65('0xff'));break;default:ut[_0x3c65('0xfa')](_0x40d364,0xc,_0x5497a4['reason']);rpcDb[_0x3c65('0xfb')](_0x40d364,_0x3c65('0xfd'));}ut[_0x3c65('0x7e')](_0x51681b,_0x3c65('0x100'));logger[_0x3c65('0x5c')]('[originated][decrement][callProgressDetectingAgent]',_0x40d364[_0x3c65('0xba')],'\x20Queue',_0x51681b[_0x3c65('0x56')],_0x3c65('0x74'),_0x51681b[_0x3c65('0x50')]);delete this[_0x3c65('0x18')][_0x40d364['uniqueid']];};Preview[_0x3c65('0x10')][_0x3c65('0x101')]=function(_0x31bf75,_0x313dde,_0x4abc37,_0x16188d,_0x48834f){var _0x537435=this;return new BPromise(function(_0xf064f3,_0x4d239a){if(_[_0x3c65('0x70')](_0x313dde)||_[_0x3c65('0x70')](_0x313dde[_0x3c65('0x102')])||_['isNil'](_0x313dde[_0x3c65('0x102')][_0x3c65('0x103')])||_[_0x3c65('0x70')](_0x313dde[_0x3c65('0x79')])){_0x4d239a(ut[_0x3c65('0x62')]('Contact\x20is\x20undefined',_0x16188d,_0x48834f));return;}var _0x496436=uuid['v4']();var _0xac7696=_0x537435[_0x3c65('0x15')][_0x313dde[_0x3c65('0x72')][_0x3c65('0x56')]];var _0x198c59=_0x4abc37?_0x537435[_0x3c65('0x19')][_0x4abc37]['id']:undefined;_0x537435[_0x3c65('0x18')][_0x496436]=new Action(_0x313dde,_0xac7696,_0x496436,_0x4abc37,_0x198c59);var _0x1a86fa=_0x537435[_0x3c65('0x18')][_0x496436];_0x1a86fa[_0x3c65('0xb5')]=_0x16188d;_0x1a86fa[_0x3c65('0xb6')]=_0x48834f;_0x1a86fa[_0x3c65('0x104')]=_0x4abc37;if(_['isEmpty'](_0x31bf75)){_0x537435[_0x3c65('0x105')](_0x1a86fa,_0xac7696,_0x313dde,_0x4abc37)['then'](function(_0x3d4692){logger[_0x3c65('0x5c')]('[Preview][execCall][success]',_0x3c65('0x106')+_0x1a86fa[_0x3c65('0x73')]+_0x3c65('0x107')+_0x1a86fa[_0x3c65('0x108')],JSON[_0x3c65('0x59')](_0x3d4692));ami[_0x3c65('0x2a')](_0x3c65('0x109'),ut[_0x3c65('0xaa')](_0x1a86fa,'called',_0x537435[_0x3c65('0x15')][_0x1a86fa[_0x3c65('0x73')]]));_0xf064f3(ut[_0x3c65('0x62')](_0x3c65('0x10a')));})[_0x3c65('0x90')](function(_0x10ef6d){ut[_0x3c65('0x64')](_0x3c65('0x10b'),_0x10ef6d);_0x4d239a(ut[_0x3c65('0x62')]('Call\x20failed',_0x16188d,_0x48834f));});}else{_0xac7696[_0x3c65('0x10c')]+=0x1;ut[_0x3c65('0x10d')](_0x1a86fa);rpcDb[_0x3c65('0x10e')](_0x1a86fa,_0x3c65('0x10f'));delete _0x537435['actions'][_0x496436];_0x4d239a(ut['message'](_0x3c65('0x110'),_0x16188d,_0x48834f));}});};Preview[_0x3c65('0x10')][_0x3c65('0xa3')]=function(_0x2250ca){return!_['isNil'](_0x2250ca)&&!_[_0x3c65('0x70')](_0x2250ca[_0x3c65('0x56')])&&!_['isNil'](_0x2250ca['active'])&&_0x2250ca[_0x3c65('0x57')]&&!_[_0x3c65('0x70')](this[_0x3c65('0x17')][util['format'](_0x3c65('0x111'),_0x2250ca[_0x3c65('0x56')])])&&!_['isNil'](this['trunks'][util['format'](_0x3c65('0x111'),_0x2250ca[_0x3c65('0x56')])][_0x3c65('0x7c')])&&(this['trunks'][util[_0x3c65('0x5a')](_0x3c65('0x111'),_0x2250ca[_0x3c65('0x56')])][_0x3c65('0x7c')]===_0x3c65('0x112')||this[_0x3c65('0x17')][util['format']('SIP/%s',_0x2250ca['name'])][_0x3c65('0x7c')]==='unmonitored');};Preview[_0x3c65('0x10')][_0x3c65('0x8e')]=function(_0x133aad,_0x843cfc){var _0x56f604=this;return new BPromise(function(_0xde7abc,_0x1696b8){_0x56f604['execRun'](_0x133aad,_0x843cfc)[_0x3c65('0x88')](function(_0x5e99e7){_0xde7abc(_[_0x3c65('0x76')](_0x5e99e7,[_0x3c65('0x62')]));})[_0x3c65('0x90')](function(_0x5a4ace){if(_0x5a4ace[_0x3c65('0x113')]){rpcDb[_0x3c65('0x114')](_0x133aad);}if(_0x5a4ace[_0x3c65('0x57')]){rpcDb[_0x3c65('0x92')](_0x133aad);}_0x1696b8(_[_0x3c65('0x76')](_0x5a4ace,[_0x3c65('0x62')]));});});};Preview['prototype'][_0x3c65('0x115')]=function(_0xbe8e89,_0x39feb1){var _0x1b10f2=this;return new BPromise(function(_0x8c3166,_0x4a6bf7){var _0xf3b6f8,_0x482089;rpcDb['getContactPreview'](_0xbe8e89)[_0x3c65('0x88')](function(_0x6892){if(!_[_0x3c65('0x70')](_0x6892[0x0])){_0x482089=_0x6892[0x0][_0x3c65('0x116')]?![]:!![];_0xf3b6f8=_0x6892[0x0][_0x3c65('0x116')]?!![]:![];_0xf3b6f8=_0x39feb1?!![]:_0xf3b6f8;}var _0x4008a5=_0x1b10f2[_0x3c65('0x117')](_0x6892);if(_0x4008a5['isValid']){rpcDb[_0x3c65('0x118')](_[_0x3c65('0x76')](_0x6892[0x0],[_0x3c65('0x79'),_0x3c65('0x119')]))['then'](function(_0x3ca046){_0x1b10f2[_0x3c65('0x101')](_0x3ca046,_0x6892[0x0],_0x39feb1,_0x482089,_0xf3b6f8)[_0x3c65('0x88')](function(_0x29f064){_0x8c3166(_0x29f064);})['catch'](function(_0x2cc803){_0x4a6bf7(_0x2cc803);});})['catch'](function(_0x314325){ut[_0x3c65('0x64')](_0x3c65('0x11a'),_0x314325);_0x4a6bf7(ut[_0x3c65('0x62')]('Call\x20unsuccessful',_0x482089,_0xf3b6f8));});}else{_0x4a6bf7(ut[_0x3c65('0x62')](_0x4008a5[_0x3c65('0x62')],_0x482089,_0xf3b6f8));}})[_0x3c65('0x90')](function(_0x23c439){ut['logger']('[Preview][getContactPreview]',_0x23c439);_0x4a6bf7(ut[_0x3c65('0x62')](_0x3c65('0x11b'),![],!![]));});});};Preview[_0x3c65('0x10')][_0x3c65('0x117')]=function(_0x241968){if(_[_0x3c65('0x70')](_0x241968)||_[_0x3c65('0x11c')](_0x241968)||!_[_0x3c65('0x70')](_0x241968[0x0]['Agent'])&&_[_0x3c65('0x70')](_0x241968[0x0][_0x3c65('0x8c')][_0x3c65('0x56')])){ut['logger'](_0x3c65('0x11d'),_0x241968);return{'isValid':![],'message':_0x3c65('0x11e')};}var _0x339a67=this[_0x3c65('0x15')][_0x241968[0x0]['Queue'][_0x3c65('0x56')]];_0x339a67[_0x3c65('0x62')]=_0x3c65('0xa5');if(_[_0x3c65('0x70')](_0x339a67)){ut[_0x3c65('0x64')](_0x3c65('0x11f'),_0x339a67);return{'isValid':![],'message':_0x3c65('0x120')};}if(!this[_0x3c65('0xa3')](_0x339a67[_0x3c65('0x55')])){ut[_0x3c65('0x64')](_0x3c65('0x121'),_0x3c65('0x122')+_0x339a67[_0x3c65('0x56')]+_0x3c65('0x123'));if(!this[_0x3c65('0xa3')](_0x339a67[_0x3c65('0xa4')])){ut['logger'](_0x3c65('0x121'),_0x339a67['name']+_0x3c65('0x124'));return{'isValid':![],'message':_0x3c65('0x125')};}}if(!ut['isActive'](_0x339a67[_0x3c65('0x6d')])){ut[_0x3c65('0x64')](_0x3c65('0x126'),_0x339a67[_0x3c65('0x56')]+_0x3c65('0x127'));return{'isValid':![],'message':_0x3c65('0x122')+_0x339a67['name']+_0x3c65('0x127')};}return{'isValid':!![],'message':_0x3c65('0x128')};};Preview[_0x3c65('0x10')][_0x3c65('0x105')]=function(_0x28cf76,_0x2e5f38,_0x4137eb,_0xa397cd){var _0xd43d94=this;return new BPromise(function(_0xf74bf6,_0x20d685){var _0x4f23f6=_0x28cf76['uniqueid'];var _0x421ffb=_0xd43d94[_0x3c65('0xa3')](_0x2e5f38[_0x3c65('0x55')])?util['format'](_0x3c65('0x129'),_0x2e5f38[_0x3c65('0x55')][_0x3c65('0x56')],_[_0x3c65('0x70')](_0x2e5f38[_0x3c65('0x3b')])?'':_0x2e5f38[_0x3c65('0x3b')][_0x3c65('0x12a')]()||'',_0x2e5f38[_0x3c65('0x12b')]>0x0?_0x4137eb[_0x3c65('0x102')][_0x3c65('0x103')]['substring'](_0x2e5f38[_0x3c65('0x12b')]):_0x4137eb[_0x3c65('0x102')][_0x3c65('0x103')]):util[_0x3c65('0x5a')](_0x3c65('0x129'),_[_0x3c65('0x70')](_0x2e5f38[_0x3c65('0xa4')])?_0x2e5f38['Trunk'][_0x3c65('0x56')]:_0x2e5f38[_0x3c65('0xa4')]['name'],_[_0x3c65('0x70')](_0x2e5f38[_0x3c65('0x3b')])?'':_0x2e5f38[_0x3c65('0x3b')][_0x3c65('0x12a')]()||'',_0x2e5f38[_0x3c65('0x12b')]>0x0?_0x4137eb[_0x3c65('0x102')][_0x3c65('0x103')][_0x3c65('0x12c')](_0x2e5f38[_0x3c65('0x12b')]):_0x4137eb[_0x3c65('0x102')][_0x3c65('0x103')]);var _0x4cbfea=_0xd43d94['isTrunkReachable'](_0x2e5f38[_0x3c65('0x55')])?ut[_0x3c65('0x12d')](_0x2e5f38['Trunk']['callerid'],_0x2e5f38[_0x3c65('0x39')],_0x2e5f38[_0x3c65('0x12e')]>0x0?ut[_0x3c65('0x12f')](_0x2e5f38['dialOriginateCallerIdNumber'],_0x2e5f38[_0x3c65('0x12e')]):_0x2e5f38[_0x3c65('0x3a')]):ut[_0x3c65('0x12d')](_[_0x3c65('0x70')](_0x2e5f38['TrunkBackup'])?_0x2e5f38['Trunk'][_0x3c65('0x130')]:_0x2e5f38[_0x3c65('0xa4')][_0x3c65('0x130')],_0x2e5f38[_0x3c65('0x39')],_0x2e5f38[_0x3c65('0x12e')]>0x0?ut['getCallerIdRandom'](_0x2e5f38['dialOriginateCallerIdNumber'],_0x2e5f38[_0x3c65('0x12e')]):_0x2e5f38[_0x3c65('0x3a')]);if(_0x4cbfea){_0x28cf76['originatecalleridname']=ut[_0x3c65('0x131')](_0x4cbfea);_0x28cf76[_0x3c65('0x132')]=ut[_0x3c65('0x133')](_0x4cbfea);}var _0x571307=ut[_0x3c65('0x134')](_0x2e5f38,_0x4137eb,_0x421ffb,_0x4cbfea,_0x4f23f6,_0x28cf76);_[_0x3c65('0x135')](_0x28cf76,ut[_0x3c65('0x136')](_0x571307));_0x28cf76[_0x3c65('0x93')]=moment()[_0x3c65('0x5a')](_0x3c65('0x94'));ami[_0x3c65('0x7b')](ut[_0x3c65('0x137')](_0x28cf76,_0x2e5f38,_0x571307,_0x28cf76[_0x3c65('0xb6')],_0xa397cd))[_0x3c65('0x88')](function(_0x56adb5){var _0x5e41a7=_0x28cf76[_0x3c65('0x138')];if(!_['isNil'](_0x5e41a7)){if(!_[_0x3c65('0x70')](_0xd43d94[_0x3c65('0x19')][_0x5e41a7])){_0xd43d94['agents'][_0x5e41a7][_0x3c65('0x139')]=_0x28cf76[_0x3c65('0x13a')];emit(util['format']('user:%s',_0xd43d94['agents'][_0x5e41a7][_0x3c65('0x56')]),_0x3c65('0x13b'),{'destaccountcode':_0xd43d94[_0x3c65('0x19')][_0x5e41a7]['accountcode'],'destconnectedlinenum':_0x28cf76[_0x3c65('0x13a')]});}}_0x2e5f38[_0x3c65('0x50')]+=0x1;logger['info'](_0x3c65('0x13c'),_0x4f23f6,_0x3c65('0xbb'),_0x2e5f38[_0x3c65('0x56')],_0x3c65('0x74'),_0x2e5f38[_0x3c65('0x50')]);_0xf74bf6(_0x56adb5);})[_0x3c65('0x90')](function(_0x4acce0){ut[_0x3c65('0xfa')](_0x28cf76,0xe,'OriginateError');rpcDb[_0x3c65('0xfb')](_0x28cf76,'[originateFailure][logOriginateFailure]');_0x20d685(_0x4acce0);});});};Preview[_0x3c65('0x10')][_0x3c65('0x13d')]=function(_0x90f210){if(this['actions'][_0x90f210['linkedid']]){this['actions'][_0x90f210[_0x3c65('0xb7')]][_0x3c65('0x13e')]=_0x90f210['channel'];}};Preview[_0x3c65('0x10')][_0x3c65('0x1c')]=function(_0x11a89c){var _0x284380=this;var _0x4d8a86=this[_0x3c65('0x18')][_0x11a89c[_0x3c65('0x13f')]];if(_0x4d8a86){if(_0x4d8a86[_0x3c65('0x104')]&&this[_0x3c65('0x19')][_0x4d8a86['lookAgent']]){ut[_0x3c65('0x140')](_0x4d8a86,this['agents'][_0x4d8a86['lookAgent']][_0x3c65('0x56')],this[_0x3c65('0x19')][_0x4d8a86[_0x3c65('0x104')]]['id']);}var _0x4b15eb=_['clone'](_0x4d8a86);_0x4b15eb[_0x3c65('0x141')]=moment()[_0x3c65('0x5a')](_0x3c65('0x94'));var _0xd2ec5c=_0x284380[_0x3c65('0x15')][_0x4d8a86[_0x3c65('0x73')]];if(ut[_0x3c65('0x142')](_0x11a89c[_0x3c65('0x143')])){if(_0x4d8a86['unlockAgent']){rpcDb[_0x3c65('0x114')](_0x4d8a86[_0x3c65('0x108')]);}if(_0x4d8a86[_0x3c65('0xb6')]){rpcDb[_0x3c65('0x92')](_0x4d8a86[_0x3c65('0x108')]);}ami[_0x3c65('0x2a')]('custom:agentringnoanswer',ut[_0x3c65('0xaa')](_0x4d8a86,'rejected',this[_0x3c65('0x15')][_0x4d8a86[_0x3c65('0x73')]]));this[_0x3c65('0xf7')](_0x4b15eb,_0xd2ec5c,_0x11a89c);}else{_0x4d8a86[_0x3c65('0x93')]=moment()['format'](_0x3c65('0x94'));ut[_0x3c65('0xfa')](_0x4b15eb,0x4,_0x3c65('0xc2'));rpcDb[_0x3c65('0xfb')](_0x4b15eb,_0x3c65('0x144'));}}};Preview[_0x3c65('0x10')][_0x3c65('0x1e')]=function(_0x3a8d44){var _0x5f1f6f=this;var _0x135a20=this[_0x3c65('0x18')][_0x3a8d44[_0x3c65('0xb7')]];var _0x4695af;if(_0x135a20){_0x4695af=this[_0x3c65('0x15')][_0x135a20['queue']];logger[_0x3c65('0x5c')](_0x3c65('0x145'),_0x3a8d44[_0x3c65('0xb7')],_0x3c65('0xbb'),_0x4695af[_0x3c65('0x56')],_0x3c65('0x75'),_0x4695af['pTalking']);}if(this[_0x3c65('0x18')][_0x3a8d44['linkedid']]&&_0x3a8d44[_0x3c65('0xb7')]!==_0x3a8d44[_0x3c65('0xba')]){if(_0x3a8d44[_0x3c65('0x146')]==='16'&&this[_0x3c65('0x18')][_0x3a8d44['linkedid']][_0x3c65('0x80')]){this['callProgressDetectingCustomer'](_0x3a8d44,_0x3a8d44[_0x3c65('0xb7')],_0x3a8d44[_0x3c65('0x146')]);}else if(this[_0x3c65('0x18')][_0x3a8d44['linkedid']][_0x3c65('0x80')]){logger[_0x3c65('0x5c')]('[syncHangup][talking][cause]',_0x3a8d44[_0x3c65('0xb7')],_0x3a8d44[_0x3c65('0x146')],_0x3c65('0xbb'),_0x4695af[_0x3c65('0x56')],_0x3c65('0x75'),_0x4695af[_0x3c65('0x31')]);this['callProgressDetectingCustomer'](_0x3a8d44,_0x3a8d44[_0x3c65('0xb7')],_0x3a8d44[_0x3c65('0x146')]);}}else if(_0x135a20&&_[_0x3c65('0x70')](_0x135a20[_0x3c65('0x147')])&&_0x4695af['dialQueueProject']&&_0x3a8d44[_0x3c65('0xb7')]===_0x3a8d44[_0x3c65('0xba')]&&_[_0x3c65('0x70')](_0x3a8d44[_0x3c65('0xf9')])&&_0x3a8d44['cause']==='16'&&_0x3a8d44['channelstate']==='6'&&_[_0x3c65('0x148')](_0x135a20[_0x3c65('0x149')])){if(_0x135a20[_0x3c65('0xb5')]){rpcDb[_0x3c65('0x114')](_0x135a20['idContact']);}if(_0x135a20['activeContact']){rpcDb[_0x3c65('0x92')](_0x135a20[_0x3c65('0x108')]);}_0x3a8d44[_0x3c65('0xf9')]='22';this['callProgressDetectingAgent'](_0x135a20,_0x4695af,_0x3a8d44);}else if(_0x135a20&&_0x135a20[_0x3c65('0x149')]){if(_0x3a8d44['cause']==='16'&&this[_0x3c65('0x18')][_0x3a8d44[_0x3c65('0xb7')]][_0x3c65('0x80')]){logger[_0x3c65('0x5c')](_0x3c65('0x14a'),_0x3a8d44['linkedid'],_0x3a8d44[_0x3c65('0x146')],_0x3c65('0xbb'),_0x4695af[_0x3c65('0x56')],_0x3c65('0x75'),_0x4695af['pTalking']);this[_0x3c65('0x14b')](_0x3a8d44,_0x3a8d44[_0x3c65('0xb7')],_0x3a8d44[_0x3c65('0x146')]);}else if(this['actions'][_0x3a8d44['linkedid']][_0x3c65('0x80')]){logger[_0x3c65('0x5c')]('[syncHangup][talking][cause]',_0x3a8d44[_0x3c65('0xb7')],_0x3a8d44['cause'],_0x3c65('0xbb'),_0x4695af[_0x3c65('0x56')],_0x3c65('0x75'),_0x4695af[_0x3c65('0x31')]);this[_0x3c65('0x14b')](_0x3a8d44,_0x3a8d44[_0x3c65('0xb7')],_0x3a8d44['cause']);}}};Preview[_0x3c65('0x10')]['syncDialEnd']=function(_0x25e9ed){if(this[_0x3c65('0x18')][_0x25e9ed['destlinkedid']]&&_0x25e9ed[_0x3c65('0xf6')]!==_0x25e9ed['destuniqueid']){this[_0x3c65('0x14b')](_0x25e9ed,_0x25e9ed[_0x3c65('0xf6')],_0x25e9ed[_0x3c65('0xeb')]);}};Preview[_0x3c65('0x10')][_0x3c65('0x20')]=function(_0x4fb4a2){if(this[_0x3c65('0x18')][_0x4fb4a2[_0x3c65('0xb7')]]&&_0x4fb4a2['linkedid']!==_0x4fb4a2[_0x3c65('0xba')]&&!this[_0x3c65('0x18')][_0x4fb4a2[_0x3c65('0xb7')]][_0x3c65('0x80')]){if(_0x4fb4a2[_0x3c65('0x146')]==='1'){this['callProgressDetectingCustomer'](_0x4fb4a2,_0x4fb4a2[_0x3c65('0xb7')],_0x4fb4a2[_0x3c65('0x146')]);}}};Preview[_0x3c65('0x10')]['addVariable']=function(_0x552a45,_0x4d24cf,_0x467e5b){if(this[_0x3c65('0x18')][_0x552a45]){if(_[_0x3c65('0x70')](this[_0x3c65('0x18')][_0x552a45][_0x3c65('0x14c')])){this[_0x3c65('0x18')][_0x552a45][_0x3c65('0x14c')]={};}this[_0x3c65('0x18')][_0x552a45][_0x3c65('0x14c')][_0x4d24cf]=_0x467e5b;}};Preview[_0x3c65('0x10')][_0x3c65('0x26')]=function(_0x36e79b){try{if(!_['isNil'](_0x36e79b)){if(ut[_0x3c65('0x14d')](_[_0x3c65('0x14e')](_0x36e79b[_0x3c65('0x14f')])[0x0])){this[_0x3c65('0x150')](_0x36e79b['uniqueid'],_[_0x3c65('0x14e')](_0x36e79b[_0x3c65('0x14f')])[0x0],_0x36e79b[_0x3c65('0x151')]);}}}catch(_0x3608a4){logger[_0x3c65('0x152')](_0x3c65('0x153'),util[_0x3c65('0x154')](_0x3608a4,{'showHidden':![],'depth':null}));}};Preview[_0x3c65('0x10')][_0x3c65('0x155')]=function(_0x3a708b){if(_0x3a708b){if(this[_0x3c65('0x18')][_0x3a708b[_0x3c65('0x156')]]){this[_0x3c65('0x18')][_0x3a708b['transfertargetlinkedid']]['transfer']=!![];}}};Preview['prototype'][_0x3c65('0x28')]=function(_0x3aab1e){if(_0x3aab1e){if(this['actions'][_0x3aab1e['transfererlinkedid']]){this[_0x3c65('0x18')][_0x3aab1e[_0x3c65('0x157')]][_0x3c65('0x149')]=!![];}}};module[_0x3c65('0x158')]=Preview;
\ No newline at end of file
index 8c9b804..8716961 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92f7=['queuecallerexitreason','COMPLETED','create','getContactRecallMe','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','[createHistory]\x20','catch','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','getContactPreview','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo'];(function(_0x3624b4,_0x5ced54){var _0x2f858f=function(_0x43071f){while(--_0x43071f){_0x3624b4['push'](_0x3624b4['shift']());}};_0x2f858f(++_0x5ced54);}(_0x92f7,0xea));var _0x792f=function(_0x4403e5,_0x32ddae){_0x4403e5=_0x4403e5-0x0;var _0x512114=_0x92f7[_0x4403e5];return _0x512114;};'use strict';var util=require(_0x792f('0x0'));var BPromise=require('bluebird');var logger=require(_0x792f('0x1'))(_0x792f('0x2'));var _=require('lodash');var cmHopper=require(_0x792f('0x3'));var cmHopperFinal=require(_0x792f('0x4'));var cmHopperHistory=require(_0x792f('0x5'));var cmHopperBlack=require(_0x792f('0x6'));var voiceQueueRt=require('../rpc/voiceQueueRt');var agentReportPreview=require(_0x792f('0x7'));var voiceQueueReport=require(_0x792f('0x8'));function loggerCatch(_0x29f762){return function(_0x395483){logger[_0x792f('0x9')](_0x29f762,util[_0x792f('0xa')](_0x395483,{'showHidden':![],'depth':null}));};}function create(_0x3a3762){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopperHistory[_0x792f('0xd')](_0x3a3762))['catch'](loggerCatch(_0x792f('0xe')));}function createAgent(_0x340881){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](agentReportPreview[_0x792f('0xd')](_0x340881))[_0x792f('0xf')](loggerCatch(_0x792f('0xe')));}function moveContact(_0x1dc865){return BPromise['resolve']()['then'](cmHopper[_0x792f('0x10')](_0x1dc865,!![]))[_0x792f('0xf')](loggerCatch(_0x792f('0x11')));}exports[_0x792f('0x12')]=function(_0x1a0d68){return BPromise[_0x792f('0xb')]()['then'](cmHopperBlack[_0x792f('0x12')](_0x1a0d68))[_0x792f('0xf')](loggerCatch('[checkIsBlackList]\x20'));};exports['getContactPreview']=function(_0x559577){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopper[_0x792f('0x13')](_0x559577))[_0x792f('0xf')](loggerCatch('[getContactPreview]\x20'));};exports[_0x792f('0xd')]=function(_0x277ebf,_0x5e27dc){create(_0x277ebf)[_0x792f('0xf')](loggerCatch(_0x5e27dc));moveContact(_0x277ebf)[_0x792f('0xf')](loggerCatch(_0x5e27dc));};exports['createAgentHistory']=function(_0x3627f8,_0x3b5f6b){createAgent(_0x3627f8)['catch'](loggerCatch(_0x3b5f6b));};exports[_0x792f('0x14')]=function(_0x4a38ba,_0x49a0a1){create(_0x4a38ba)[_0x792f('0xf')](loggerCatch(_0x49a0a1));};exports[_0x792f('0x15')]=function(_0x3075a6,_0x558fe1){moveContact(_0x3075a6)[_0x792f('0xf')](loggerCatch(_0x558fe1));};exports[_0x792f('0x16')]=function(_0x30c376,_0x10d021,_0x3cfb94){if(_0x10d021){_0x30c376[_0x792f('0x17')]=null;}if(_0x3cfb94){_0x30c376[_0x792f('0x18')]=![];}return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopper[_0x792f('0x16')](_0x30c376))['catch'](loggerCatch(_0x792f('0x19')));};exports[_0x792f('0x1a')]=function(_0x376762){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopper[_0x792f('0x1a')](_0x376762))[_0x792f('0xf')](loggerCatch('[countReScheduled]\x20'));};exports[_0x792f('0x1b')]=function(_0x1d8c78){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopper[_0x792f('0x1b')]({'UserId':null},_0x1d8c78,0x1))[_0x792f('0xf')](loggerCatch(_0x792f('0x1c')));};exports[_0x792f('0x1d')]=function(_0x431db9){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopper[_0x792f('0x1b')]({'active':![]},_0x431db9,0x1))[_0x792f('0xf')](loggerCatch(_0x792f('0x1e')));};exports[_0x792f('0x1f')]=function(_0x430c78){var _0xb27433={};_0xb27433['type']=_0x430c78['type'];_0xb27433[_0x792f('0x20')]=_0x430c78[_0x792f('0x20')];_0xb27433[_0x792f('0x21')]=_0x430c78[_0x792f('0x21')];_0xb27433[_0x792f('0x22')]=_0x430c78[_0x792f('0x22')];_0xb27433['queue']=_0x430c78[_0x792f('0x23')];_0xb27433[_0x792f('0x24')]=_0x430c78[_0x792f('0x25')];_0xb27433[_0x792f('0x26')]=_0x430c78['answertime'];_0xb27433[_0x792f('0x27')]=0x1;_0xb27433[_0x792f('0x28')]=_0x430c78[_0x792f('0x29')];_0xb27433[_0x792f('0x2a')]=_0x430c78[_0x792f('0x2b')];_0xb27433[_0x792f('0x2c')]=_0x792f('0x2d');_0xb27433[_0x792f('0x2e')]=_0x792f('0x2f');_0xb27433[_0x792f('0x30')]=0x0;_0xb27433[_0x792f('0x31')]=0x1;_0xb27433[_0x792f('0x32')]=_0x430c78[_0x792f('0x2b')];_0xb27433[_0x792f('0x33')]=_0x792f('0x34');return BPromise['resolve']()[_0x792f('0xc')](voiceQueueReport[_0x792f('0x35')](_0xb27433))[_0x792f('0xf')](loggerCatch('[voiceQueueReport]\x20'));};exports[_0x792f('0x36')]=function(_0x5073da,_0x4675ad){return BPromise[_0x792f('0xb')]()['then'](cmHopper[_0x792f('0x36')](_0x5073da,_0x4675ad))['catch'](loggerCatch('[GetContactRecallMe]\x20'));};exports[_0x792f('0x37')]=function(_0x32c517){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopper['rescheduleContact'](_0x32c517,!![],!![]))[_0x792f('0xf')](loggerCatch(_0x792f('0x38')));};
\ No newline at end of file
+var _0x89b0=['crateCustomerReportQueue','type','uniqueid','calleridnum','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','xcally-motion-preview','holdtime','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/voiceQueueRt','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','catch','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20'];(function(_0x49d41c,_0x2bdc35){var _0xb64c5f=function(_0x28f535){while(--_0x28f535){_0x49d41c['push'](_0x49d41c['shift']());}};_0xb64c5f(++_0x2bdc35);}(_0x89b0,0x101));var _0x089b=function(_0x2035ef,_0x3f7d39){_0x2035ef=_0x2035ef-0x0;var _0x86c909=_0x89b0[_0x2035ef];return _0x86c909;};'use strict';var util=require(_0x089b('0x0'));var BPromise=require(_0x089b('0x1'));var logger=require(_0x089b('0x2'))(_0x089b('0x3'));var _=require(_0x089b('0x4'));var cmHopper=require(_0x089b('0x5'));var cmHopperFinal=require(_0x089b('0x6'));var cmHopperHistory=require(_0x089b('0x7'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x089b('0x8'));var agentReportPreview=require('../rpc/agentReportPreview');var voiceQueueReport=require(_0x089b('0x9'));function loggerCatch(_0x50ce04){return function(_0x3f8e3b){logger[_0x089b('0xa')](_0x50ce04,util[_0x089b('0xb')](_0x3f8e3b,{'showHidden':![],'depth':null}));};}function create(_0x38624b){return BPromise[_0x089b('0xc')]()[_0x089b('0xd')](cmHopperHistory[_0x089b('0xe')](_0x38624b))[_0x089b('0xf')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x4aa0e9){return BPromise[_0x089b('0xc')]()[_0x089b('0xd')](agentReportPreview[_0x089b('0xe')](_0x4aa0e9))['catch'](loggerCatch('[createHistory]\x20'));}function moveContact(_0x4e99a4){return BPromise[_0x089b('0xc')]()[_0x089b('0xd')](cmHopper['moveContactManagedDialer'](_0x4e99a4,!![]))[_0x089b('0xf')](loggerCatch(_0x089b('0x10')));}exports[_0x089b('0x11')]=function(_0x27c4ba){return BPromise[_0x089b('0xc')]()[_0x089b('0xd')](cmHopperBlack[_0x089b('0x11')](_0x27c4ba))['catch'](loggerCatch(_0x089b('0x12')));};exports['getContactPreview']=function(_0x1e6bad){return BPromise[_0x089b('0xc')]()[_0x089b('0xd')](cmHopper[_0x089b('0x13')](_0x1e6bad))[_0x089b('0xf')](loggerCatch(_0x089b('0x14')));};exports[_0x089b('0xe')]=function(_0xf3977,_0x3608d5){create(_0xf3977)['catch'](loggerCatch(_0x3608d5));moveContact(_0xf3977)[_0x089b('0xf')](loggerCatch(_0x3608d5));};exports[_0x089b('0x15')]=function(_0x6a9a67,_0x26123e){createAgent(_0x6a9a67)[_0x089b('0xf')](loggerCatch(_0x26123e));};exports[_0x089b('0x16')]=function(_0x1a3320,_0x1f0a08){create(_0x1a3320)[_0x089b('0xf')](loggerCatch(_0x1f0a08));};exports[_0x089b('0x17')]=function(_0x1f8741,_0x5603fd){moveContact(_0x1f8741)['catch'](loggerCatch(_0x5603fd));};exports[_0x089b('0x18')]=function(_0x238325,_0x375ada,_0x2a3dd1){if(_0x375ada){_0x238325['UserId']=null;}if(_0x2a3dd1){_0x238325[_0x089b('0x19')]=![];}return BPromise[_0x089b('0xc')]()['then'](cmHopper['rescheduleContact'](_0x238325))[_0x089b('0xf')](loggerCatch(_0x089b('0x1a')));};exports[_0x089b('0x1b')]=function(_0x3c20ab){return BPromise[_0x089b('0xc')]()['then'](cmHopper[_0x089b('0x1b')](_0x3c20ab))[_0x089b('0xf')](loggerCatch(_0x089b('0x1c')));};exports[_0x089b('0x1d')]=function(_0x2918ec){return BPromise['resolve']()[_0x089b('0xd')](cmHopper[_0x089b('0x1d')]({'UserId':null},_0x2918ec,0x1))['catch'](loggerCatch(_0x089b('0x1e')));};exports[_0x089b('0x1f')]=function(_0x5c2d60){return BPromise['resolve']()[_0x089b('0xd')](cmHopper[_0x089b('0x1d')]({'active':![]},_0x5c2d60,0x1))[_0x089b('0xf')](loggerCatch(_0x089b('0x20')));};exports[_0x089b('0x21')]=function(_0x42b8d9){var _0x573225={};_0x573225['type']=_0x42b8d9[_0x089b('0x22')];_0x573225[_0x089b('0x23')]=_0x42b8d9['uniqueid'];_0x573225[_0x089b('0x24')]=_0x42b8d9[_0x089b('0x24')];_0x573225['calleridname']=_0x42b8d9['calleridname'];_0x573225['queue']=_0x42b8d9[_0x089b('0x25')];_0x573225[_0x089b('0x26')]=_0x42b8d9[_0x089b('0x27')];_0x573225[_0x089b('0x28')]=_0x42b8d9[_0x089b('0x27')];_0x573225[_0x089b('0x29')]=0x1;_0x573225[_0x089b('0x2a')]=_0x42b8d9[_0x089b('0x2b')];_0x573225[_0x089b('0x2c')]=_0x42b8d9[_0x089b('0x2d')];_0x573225[_0x089b('0x2e')]='from-sip';_0x573225['exten']=_0x089b('0x2f');_0x573225[_0x089b('0x30')]=0x0;_0x573225['assigned']=0x1;_0x573225[_0x089b('0x31')]=_0x42b8d9['membername'];_0x573225[_0x089b('0x32')]=_0x089b('0x33');return BPromise[_0x089b('0xc')]()[_0x089b('0xd')](voiceQueueReport[_0x089b('0x34')](_0x573225))['catch'](loggerCatch(_0x089b('0x35')));};exports[_0x089b('0x36')]=function(_0x3f55dd,_0x4fec73){return BPromise['resolve']()[_0x089b('0xd')](cmHopper[_0x089b('0x36')](_0x3f55dd,_0x4fec73))[_0x089b('0xf')](loggerCatch(_0x089b('0x37')));};exports[_0x089b('0x38')]=function(_0x55fb23){return BPromise[_0x089b('0xc')]()[_0x089b('0xd')](cmHopper[_0x089b('0x18')](_0x55fb23,!![],!![]))[_0x089b('0xf')](loggerCatch(_0x089b('0x39')));};
\ No newline at end of file
index 995d6fe..068eea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34ed=['xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosloss','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','random','match','extractCalleridNumber','util','moment','../../../../config/logger','preview','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','loggerCatch','inspect','logger','info','loggerError','message','getCallerId','isUndefined','string','isEmpty','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','isActive','Queue','name','calleridnum','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','createdAt','updatedAt','XMD-','toUpper','toLowerVariables','toLower','isNil','originated','error','[updateOriginated]\x20object\x20originated\x20is\x20negative','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','ringtime','membername','logCustomer','talktime','answertime','Failure','RECALL','BOOKED','originate','channelAgent','from-sip','countbusyretry','countcongestionretry','countagentrejectretry','countnosuchnumberretry','clone','scheduledAt','active','scheduledat','add','minutes','ContactId','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','interface','motionChannel','mandatoryDisposition','buildAcw','queue','uniqueid','agentReadyId','not_inuse','status','push','getDiff','seconds','createBody','filterKey','idContact','type','calleridname','countnoanswerretry','countglobal','callback','callbackuniqueid','recallme','xmd-voicequeueid','xmd-phone','xmd-listid'];(function(_0x439415,_0x1019ae){var _0x149999=function(_0x57f8eb){while(--_0x57f8eb){_0x439415['push'](_0x439415['shift']());}};_0x149999(++_0x1019ae);}(_0x34ed,0xa0));var _0xd34e=function(_0x221b8c,_0x2c7afc){_0x221b8c=_0x221b8c-0x0;var _0x3fab9f=_0x34ed[_0x221b8c];return _0x3fab9f;};'use strict';var util=require(_0xd34e('0x0'));var _=require('lodash');var moment=require(_0xd34e('0x1'));var logger=require(_0xd34e('0x2'))(_0xd34e('0x3'));var ipAgi=process[_0xd34e('0x4')][_0xd34e('0x5')]||_0xd34e('0x6');function getSeconds(_0x40ae9f,_0x2bfc03){var _0x186771=moment(_0x40ae9f)[_0xd34e('0x7')](0x0);var _0x3f15d1=moment(_0x2bfc03)[_0xd34e('0x7')](0x0);return _0x186771[_0xd34e('0x8')](_0x3f15d1,'seconds');}exports[_0xd34e('0x9')]=function(_0x1a620b){return function(_0x1311aa){logger['error'](_0x1a620b,util[_0xd34e('0xa')](_0x1311aa,{'showHidden':![],'depth':null}));};};exports[_0xd34e('0xb')]=function(_0x5ec251,_0x7cafed){logger[_0xd34e('0xc')](_0x5ec251,util[_0xd34e('0xa')](_0x7cafed,{'showHidden':![],'depth':null}));};exports[_0xd34e('0xd')]=function(_0x1d4135,_0x492942){logger['error'](_0x1d4135,util['inspect'](_0x492942,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x22549d){return function(_0x2bd9b4){logger['info'](_0x22549d,util[_0xd34e('0xa')](_0x2bd9b4,{'showHidden':![],'depth':null}));};};exports[_0xd34e('0xe')]=function(_0x5acd24,_0x418b99,_0x33ec37){return{'message':_0x5acd24,'unlock':_0x418b99,'active':_0x33ec37};};exports[_0xd34e('0xf')]=function(_0x6e959a,_0x19fe70,_0x12a6d1){if(!_[_0xd34e('0x10')](_0x12a6d1)&&_0xd34e('0x11')===typeof _0x12a6d1&&!_[_0xd34e('0x12')](_0x12a6d1)){if(!_[_0xd34e('0x10')](_0x19fe70)&&_0xd34e('0x11')===typeof _0x19fe70&&!_[_0xd34e('0x12')](_0x19fe70)){return util['format'](_0xd34e('0x13'),_0x19fe70,_0x12a6d1);}return util[_0xd34e('0x14')](_0xd34e('0x13'),_0x12a6d1,_0x12a6d1);}if(!_[_0xd34e('0x10')](_0x6e959a)&&_0xd34e('0x11')===typeof _0x6e959a&&!_['isEmpty'](_0x6e959a)){return _0x6e959a;}return _0xd34e('0x15');};exports[_0xd34e('0x16')]=function(_0x401835){if(_['isNil'](_0x401835)){return![];}return _0x401835;};exports['addVariables']=function(_0xef6862,_0x137c3b,_0x26ad1d,_0x3d6882,_0x3f03f1,_0x4933e8){var _0x217a8e={'XMD-QUEUE':_0x137c3b[_0xd34e('0x17')]?_0x137c3b[_0xd34e('0x17')][_0xd34e('0x18')]:'','XMD-CALLERID':_0x3d6882,'XMD-CALLERID-PREVIEW':_0x4933e8?util[_0xd34e('0x14')](_0xd34e('0x13'),_0x4933e8['calleridname'],_0x4933e8[_0xd34e('0x19')]):_0x3d6882,'XMD-DIALID':_0x3f03f1,'XMD-CONTACTID':_0x137c3b['ContactId'],'XMD-CDRTYPE':_0xd34e('0x1a'),'CALLERID(all)':_0x3d6882,'XMD-VOICEQUEUEID':_0x137c3b[_0xd34e('0x1b')],'XMD-DIALCHANNEL':_0x26ad1d,'XMD-DIALTIMEOUT':_0xef6862[_0xd34e('0x1c')]||0x1e,'XMD-DIALOPTIONS':util[_0xd34e('0x14')](_0xd34e('0x1d'),_0xef6862[_0xd34e('0x1e')]?'g':'',_['isEmpty'](_0xef6862[_0xd34e('0x1f')])?'':_0xd34e('0x20')),'XMD-DIALURL':_0xef6862[_0xd34e('0x21')]||'','XMD-AGI':_0xef6862[_0xd34e('0x22')]?util[_0xd34e('0x14')](_0xd34e('0x23'),ipAgi,_0xef6862[_0xd34e('0x22')]):_0xd34e('0x24'),'XMD-AGIAFTER':_0xef6862[_0xd34e('0x1e')]?util['format'](_0xd34e('0x23'),ipAgi,_0xef6862['dialQueueProject2']):'NONE','XMD-ORIGINATECALLERIDNUM':_0x4933e8?_0x4933e8[_0xd34e('0x25')]:'','XMD-ORIGINATECALLERIDNAME':_0x4933e8?_0x4933e8[_0xd34e('0x26')]:'','XMD-DESTINATION':_0xd34e('0x27')};if(!_[_0xd34e('0x12')](_0xef6862[_0xd34e('0x1f')])){_0x217a8e[util[_0xd34e('0x14')]('%s',_0xd34e('0x28'))]=_0xef6862[_0xd34e('0x1f')];_0x217a8e[util[_0xd34e('0x14')]('%s',_0xd34e('0x29'))]=_0x3f03f1;}if(_0x137c3b&&_0x137c3b[_0xd34e('0x2a')]){for(var _0x3703ab in _0x137c3b[_0xd34e('0x2a')]){if(_0x137c3b[_0xd34e('0x2a')][_0xd34e('0x2b')](_0x3703ab)){if(!_['isNil'](_0x137c3b['Contact'][_0x3703ab])&&_0x3703ab!=='id'&&_0x3703ab!=='tags'&&_0x3703ab!==_0xd34e('0x2c')&&_0x3703ab!==_0xd34e('0x2d')){_0x217a8e[util['format']('%s%s',_0xd34e('0x2e'),_[_0xd34e('0x2f')](_0x3703ab))]=_0x137c3b['Contact'][_0x3703ab];}}}}return _0x217a8e;};exports[_0xd34e('0x30')]=function(_0xa4870d){var _0x165c95={};for(var _0x4dd40b in _0xa4870d){if(_0xa4870d[_0xd34e('0x2b')](_0x4dd40b)){_0x165c95[util[_0xd34e('0x14')]('%s',_[_0xd34e('0x31')](_0x4dd40b))]=_0xa4870d[_0x4dd40b];}}return{'variables':_0x165c95};};exports['updateOriginated']=function(_0x428609,_0x4b2cbc){if(!_[_0xd34e('0x32')](_0x428609)){if(_0x428609['hasOwnProperty'](_0xd34e('0x33'))){if(_0x428609[_0xd34e('0x33')]>0x0){_0x428609[_0xd34e('0x33')]-=0x1;}else{logger[_0xd34e('0x34')](_0xd34e('0x35'),_0x4b2cbc);}}}else{logger[_0xd34e('0x34')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x4b2cbc);}};exports['logBlacklist']=function(_0x18c524){var _0x12ec15=moment()[_0xd34e('0x14')](_0xd34e('0x36'));_0x18c524[_0xd34e('0x37')]=0xd;_0x18c524[_0xd34e('0x38')]=_0xd34e('0x39');_0x18c524[_0xd34e('0x3a')]=_0x12ec15;_0x18c524[_0xd34e('0x3b')]=_0x12ec15;_0x18c524[_0xd34e('0x3c')]=_0x12ec15;};exports[_0xd34e('0x3d')]=function(_0x497842,_0xeab1df,_0x2697c4){var _0x588efc=moment()['format'](_0xd34e('0x36'));_0x497842['state']=_0xeab1df;_0x497842[_0xd34e('0x38')]=_0x2697c4;_0x497842[_0xd34e('0x3b')]=_0x588efc;_0x497842[_0xd34e('0x3e')]=getSeconds(_0x497842[_0xd34e('0x3b')],_0x497842[_0xd34e('0x3a')]);};exports['logLookAgent']=function(_0x2e5438,_0x394d75,_0x542fee){_0x2e5438[_0xd34e('0x3f')]=_0x394d75;_0x2e5438['UserId']=_0x542fee;};exports[_0xd34e('0x40')]=function(_0x1c50f0,_0x2e5b9b,_0x2d8c42){var _0x43bf38=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x1c50f0[_0xd34e('0x37')]=_0x2e5b9b;_0x1c50f0['statedesc']=_0x2d8c42;_0x1c50f0[_0xd34e('0x3b')]=_0x1c50f0[_0xd34e('0x3b')]?_0x1c50f0[_0xd34e('0x3b')]:_0x43bf38;_0x1c50f0['endtime']=_0x1c50f0[_0xd34e('0x3c')]?_0x1c50f0['endtime']:_0x43bf38;_0x1c50f0[_0xd34e('0x3e')]=getSeconds(_0x1c50f0[_0xd34e('0x3b')]||0x0,_0x1c50f0[_0xd34e('0x3a')]||0x0);_0x1c50f0[_0xd34e('0x41')]=_0x1c50f0['answertime']?getSeconds(_0x1c50f0[_0xd34e('0x3c')],_0x1c50f0[_0xd34e('0x42')]):0x0;};exports['isFailure']=function(_0x4bdee4){return _0x4bdee4===_0xd34e('0x43');};exports['variablesAction']=function(_0x1578c4,_0x471d32,_0x2aab90,_0x1284bb,_0x5c8101){var _0x76a975=_0x1284bb?_0xd34e('0x44'):_0x1578c4['calleridname'];_0x76a975=_0x5c8101?_0xd34e('0x45'):_0x76a975;return{'actionid':_0x1578c4['uniqueid'],'action':_0xd34e('0x46'),'channel':_0x1578c4[_0xd34e('0x47')],'callerid':util[_0xd34e('0x14')]('\x22%s\x22\x20<%s>',_0x76a975,_0x1578c4[_0xd34e('0x19')]),'Exten':_0xd34e('0x27'),'Context':_0xd34e('0x48'),'Priority':'1','variable':_0x2aab90,'timeout':(_0x471d32['timeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x1578c4['uniqueid']};};exports['totalGlobal']=function(_0x151db1){return _0x151db1[_0xd34e('0x49')]+_0x151db1[_0xd34e('0x4a')]+_0x151db1['countnoanswerretry']+_0x151db1[_0xd34e('0x4b')]+_0x151db1[_0xd34e('0x4c')];};exports['cloneAction']=function(_0x60ebb5){var _0x44a8d0=_[_0xd34e('0x4d')](_0x60ebb5);_0x44a8d0[_0xd34e('0x37')]=0xf;_0x44a8d0['statedesc']='Global';return _0x44a8d0;};exports[_0xd34e('0x4e')]=function(_0x854726,_0x48ec61,_0x1bc7e8){var _0x3da261={};_0x3da261[_0x48ec61]=_0x854726[_0x48ec61];_0x3da261[_0xd34e('0x4f')]=![];_0x3da261[_0xd34e('0x50')]=moment()[_0xd34e('0x51')](_0x1bc7e8,_0xd34e('0x52'))[_0xd34e('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x3da261[_0xd34e('0x53')]=_0x854726['ContactId'];_0x3da261[_0xd34e('0x54')]=_0x854726['ListId'];_0x3da261['VoiceQueueId']=_0x854726[_0xd34e('0x1b')]||undefined;return _0x3da261;};exports[_0xd34e('0x55')]=function(_0x93199b,_0x535d5e){if(!_[_0xd34e('0x32')](_0x93199b)){if(_0x93199b[_0xd34e('0x56')]>0x0){_0x93199b[_0xd34e('0x56')]-=0x1;}else{logger['error'](_0x535d5e,_0xd34e('0x57'));}}else{logger['error'](_0x535d5e,_0xd34e('0x58'));}};exports[_0xd34e('0x59')]=function(_0x11e235){if(_0x11e235<=0x0){return!![];}return![];};exports['buildObj']=function(_0xd5da90,_0x1a2369,_0x3812d8){_0xd5da90[_0xd34e('0x5a')]=_0x1a2369;_0xd5da90['name']=_0xd5da90['queue'];_0xd5da90[_0xd34e('0x5b')]=_0xd5da90['channelAgent'];_0xd5da90[_0xd34e('0x5c')]='voice';if(_0x3812d8){_0xd5da90[_0xd34e('0x5d')]=_0x3812d8[_0xd34e('0x5d')];}return _0xd5da90;};exports[_0xd34e('0x5e')]=function(_0x4668a9){var _0x22fd25={};_0x22fd25[_0xd34e('0x5f')]=_0x4668a9[_0xd34e('0x5f')];_0x22fd25[_0xd34e('0x5b')]=_0x4668a9[_0xd34e('0x47')];_0x22fd25[_0xd34e('0x60')]=_0x4668a9[_0xd34e('0x60')];return _0x22fd25;};exports[_0xd34e('0x61')]=function(_0x320faf){var _0x250cef=[];for(var _0x30a8f8 in _0x320faf){if(_0x320faf[_0xd34e('0x2b')](_0x30a8f8)){if(!_[_0xd34e('0x32')](_0x320faf[_0x30a8f8])&&_0x320faf[_0x30a8f8][_0xd34e('0x37')]===_0xd34e('0x62')&&_0x320faf[_0x30a8f8][_0xd34e('0x63')]==='reachable'){_0x250cef[_0xd34e('0x64')](_0x320faf[_0x30a8f8]['id']);}}}return _0x250cef;};exports[_0xd34e('0x65')]=function(_0x5ab795){var _0x59a046=moment()[_0xd34e('0x7')](0x0);var _0x2c1af0=moment(_0x5ab795)[_0xd34e('0x7')](0x0);return _0x59a046[_0xd34e('0x8')](_0x2c1af0,_0xd34e('0x66'));};exports[_0xd34e('0x67')]=function(_0x3b2aeb){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x3b2aeb[_0xd34e('0x53')],'ListId':_0x3b2aeb['ListId'],'VoiceQueueId':_0x3b2aeb[_0xd34e('0x1b')]||undefined,'CampaignId':_0x3b2aeb['CampaignId']||undefined};};exports[_0xd34e('0x68')]=function(_0x4e7838){if(_0x4e7838===_0xd34e('0x60')||_0x4e7838===_0xd34e('0x69')||_0x4e7838===_0xd34e('0x5f')||_0x4e7838===_0xd34e('0x6a')||_0x4e7838==='campaigntype'||_0x4e7838==='dialAnswer'||_0x4e7838===_0xd34e('0x3f')||_0x4e7838===_0xd34e('0x47')||_0x4e7838===_0xd34e('0x6b')||_0x4e7838===_0xd34e('0x4f')||_0x4e7838===_0xd34e('0x19')||_0x4e7838===_0xd34e('0x50')||_0x4e7838===_0xd34e('0x49')||_0x4e7838===_0xd34e('0x4a')||_0x4e7838===_0xd34e('0x6c')||_0x4e7838===_0xd34e('0x6d')||_0x4e7838===_0xd34e('0x6e')||_0x4e7838===_0xd34e('0x6f')||_0x4e7838==='callbackat'||_0x4e7838===_0xd34e('0x70')||_0x4e7838==='ContactId'||_0x4e7838===_0xd34e('0x54')||_0x4e7838==='UserId'||_0x4e7838===_0xd34e('0x1b')||_0x4e7838==='sipcallid'||_0x4e7838===_0xd34e('0x71')||_0x4e7838==='xmd-queue'||_0x4e7838===_0xd34e('0x72')||_0x4e7838===_0xd34e('0x73')||_0x4e7838==='xmd-dialurl'||_0x4e7838===_0xd34e('0x74')||_0x4e7838===_0xd34e('0x75')||_0x4e7838===_0xd34e('0x76')||_0x4e7838===_0xd34e('0x77')||_0x4e7838==='xmd-contactid'||_0x4e7838===_0xd34e('0x78')||_0x4e7838===_0xd34e('0x79')||_0x4e7838===_0xd34e('0x7a')||_0x4e7838===_0xd34e('0x7b')||_0x4e7838===_0xd34e('0x7c')||_0x4e7838===_0xd34e('0x7d')||_0x4e7838===_0xd34e('0x7e')||_0x4e7838===_0xd34e('0x7f')||_0x4e7838==='rtpaudioqosloss'||_0x4e7838===_0xd34e('0x80')||_0x4e7838===_0xd34e('0x81')||_0x4e7838===_0xd34e('0x82')||_0x4e7838===_0xd34e('0x7c')||_0x4e7838===_0xd34e('0x7d')||_0x4e7838==='rtpaudioqosjitter'||_0x4e7838===_0xd34e('0x7f')||_0x4e7838===_0xd34e('0x83')||_0x4e7838===_0xd34e('0x80')||_0x4e7838===_0xd34e('0x81')||_0x4e7838===_0xd34e('0x82')||_0x4e7838==='bridgepeer'||_0x4e7838===_0xd34e('0x84')||_0x4e7838===_0xd34e('0x37')||_0x4e7838===_0xd34e('0x38')){return![];}return!![];};exports[_0xd34e('0x85')]=function(_0x39c84a,_0x217ec8){var _0x36a9ac,_0x35d48c,_0x6b6913;if(_0x217ec8<=0x0){_0x217ec8=0x1;}_0x36a9ac=new RegExp(_0xd34e('0x86')+_0x217ec8+'}$');_0x35d48c=Math['pow'](0xa,_0x217ec8-0x1);_0x6b6913=Math['pow'](0xa,_0x217ec8)-0x1;return util['format']('%s',_['replace'](_0x39c84a,_0x36a9ac,_[_0xd34e('0x87')](_0x35d48c,_0x6b6913)));};exports['extractCalleridName']=function(_0x106693){var _0x2fb3c6=_0x106693[_0xd34e('0x88')](/"(.*?)"/);return _0x2fb3c6?_0x2fb3c6[0x1]:_0x106693;};exports[_0xd34e('0x89')]=function(_0x4877eb){var _0x3dc162=_0x4877eb[_0xd34e('0x88')](/<(.*?)>/);return _0x3dc162?_0x3dc162[0x1]:_0x4877eb;};
\ No newline at end of file
+var _0xfd9e=['Global','scheduledAt','scheduledat','add','minutes','ListId','VoiceQueueId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','buildObj','lastevent','name','queue','interface','mandatoryDisposition','buildAcw','agentReadyId','not_inuse','status','reachable','push','getDiff','createBody','CampaignId','campaigntype','active','countglobal','callbackuniqueid','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqoslossbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','pow','random','extractCalleridName','extractCalleridNumber','match','util','lodash','../../../../config/logger','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','seconds','loggerCatch','error','logger','info','loggerError','message','getCallerId','isUndefined','isEmpty','format','\x22%s\x22\x20<%s>','isActive','isNil','addVariables','Queue','calleridnum','ContactId','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','logAgent','responsetime','logLookAgent','UserId','logCustomer','endtime','starttime','talktime','answertime','Failure','RECALL','calleridname','uniqueid','originate','channelAgent','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone'];(function(_0x27ec91,_0x44153c){var _0x45b91e=function(_0x10d4a7){while(--_0x10d4a7){_0x27ec91['push'](_0x27ec91['shift']());}};_0x45b91e(++_0x44153c);}(_0xfd9e,0xc7));var _0xefd9=function(_0x391078,_0x411863){_0x391078=_0x391078-0x0;var _0x44895b=_0xfd9e[_0x391078];return _0x44895b;};'use strict';var util=require(_0xefd9('0x0'));var _=require(_0xefd9('0x1'));var moment=require('moment');var logger=require(_0xefd9('0x2'))('preview');var ipAgi=process[_0xefd9('0x3')][_0xefd9('0x4')]||_0xefd9('0x5');function getSeconds(_0x2394f8,_0x559bbf){var _0x2f7768=moment(_0x2394f8)['milliseconds'](0x0);var _0x4523ed=moment(_0x559bbf)[_0xefd9('0x6')](0x0);return _0x2f7768[_0xefd9('0x7')](_0x4523ed,_0xefd9('0x8'));}exports[_0xefd9('0x9')]=function(_0x237962){return function(_0x2c88fe){logger[_0xefd9('0xa')](_0x237962,util['inspect'](_0x2c88fe,{'showHidden':![],'depth':null}));};};exports[_0xefd9('0xb')]=function(_0x1c0c77,_0x326035){logger[_0xefd9('0xc')](_0x1c0c77,util['inspect'](_0x326035,{'showHidden':![],'depth':null}));};exports[_0xefd9('0xd')]=function(_0xf1f1c6,_0x10bd8e){logger['error'](_0xf1f1c6,util['inspect'](_0x10bd8e,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x374dc9){return function(_0x5b0367){logger[_0xefd9('0xc')](_0x374dc9,util['inspect'](_0x5b0367,{'showHidden':![],'depth':null}));};};exports[_0xefd9('0xe')]=function(_0x4f186a,_0x46f5d9,_0x2dd47a){return{'message':_0x4f186a,'unlock':_0x46f5d9,'active':_0x2dd47a};};exports[_0xefd9('0xf')]=function(_0x40cbdb,_0x1d9c27,_0x47e168){if(!_[_0xefd9('0x10')](_0x47e168)&&'string'===typeof _0x47e168&&!_[_0xefd9('0x11')](_0x47e168)){if(!_[_0xefd9('0x10')](_0x1d9c27)&&'string'===typeof _0x1d9c27&&!_['isEmpty'](_0x1d9c27)){return util[_0xefd9('0x12')](_0xefd9('0x13'),_0x1d9c27,_0x47e168);}return util[_0xefd9('0x12')](_0xefd9('0x13'),_0x47e168,_0x47e168);}if(!_[_0xefd9('0x10')](_0x40cbdb)&&'string'===typeof _0x40cbdb&&!_[_0xefd9('0x11')](_0x40cbdb)){return _0x40cbdb;}return'\x22\x22\x20<>';};exports[_0xefd9('0x14')]=function(_0x13fa80){if(_[_0xefd9('0x15')](_0x13fa80)){return![];}return _0x13fa80;};exports[_0xefd9('0x16')]=function(_0x1b1bc1,_0x48fbad,_0x53ed4a,_0x1d8c40,_0x461db7,_0x17881f){var _0x559dc4={'XMD-QUEUE':_0x48fbad[_0xefd9('0x17')]?_0x48fbad['Queue']['name']:'','XMD-CALLERID':_0x1d8c40,'XMD-CALLERID-PREVIEW':_0x17881f?util[_0xefd9('0x12')](_0xefd9('0x13'),_0x17881f['calleridname'],_0x17881f[_0xefd9('0x18')]):_0x1d8c40,'XMD-DIALID':_0x461db7,'XMD-CONTACTID':_0x48fbad[_0xefd9('0x19')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x1d8c40,'XMD-VOICEQUEUEID':_0x48fbad['VoiceQueueId'],'XMD-DIALCHANNEL':_0x53ed4a,'XMD-DIALTIMEOUT':_0x1b1bc1['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util['format'](_0xefd9('0x1a'),_0x1b1bc1[_0xefd9('0x1b')]?'g':'',_[_0xefd9('0x11')](_0x1b1bc1[_0xefd9('0x1c')])?'':_0xefd9('0x1d')),'XMD-DIALURL':_0x1b1bc1[_0xefd9('0x1e')]||'','XMD-AGI':_0x1b1bc1[_0xefd9('0x1f')]?util[_0xefd9('0x12')]('\x22agi://%s/square,%s\x22',ipAgi,_0x1b1bc1[_0xefd9('0x1f')]):_0xefd9('0x20'),'XMD-AGIAFTER':_0x1b1bc1[_0xefd9('0x1b')]?util[_0xefd9('0x12')]('\x22agi://%s/square,%s\x22',ipAgi,_0x1b1bc1[_0xefd9('0x1b')]):'NONE','XMD-ORIGINATECALLERIDNUM':_0x17881f?_0x17881f[_0xefd9('0x21')]:'','XMD-ORIGINATECALLERIDNAME':_0x17881f?_0x17881f[_0xefd9('0x22')]:'','XMD-DESTINATION':_0xefd9('0x23')};if(!_[_0xefd9('0x11')](_0x1b1bc1[_0xefd9('0x1c')])){_0x559dc4[util[_0xefd9('0x12')]('%s',_0xefd9('0x24'))]=_0x1b1bc1[_0xefd9('0x1c')];_0x559dc4[util[_0xefd9('0x12')]('%s',_0xefd9('0x25'))]=_0x461db7;}if(_0x48fbad&&_0x48fbad['Contact']){for(var _0x1813c3 in _0x48fbad[_0xefd9('0x26')]){if(_0x48fbad[_0xefd9('0x26')][_0xefd9('0x27')](_0x1813c3)){if(!_['isNil'](_0x48fbad[_0xefd9('0x26')][_0x1813c3])&&_0x1813c3!=='id'&&_0x1813c3!==_0xefd9('0x28')&&_0x1813c3!==_0xefd9('0x29')&&_0x1813c3!==_0xefd9('0x2a')){_0x559dc4[util[_0xefd9('0x12')](_0xefd9('0x2b'),_0xefd9('0x2c'),_[_0xefd9('0x2d')](_0x1813c3))]=_0x48fbad[_0xefd9('0x26')][_0x1813c3];}}}}return _0x559dc4;};exports[_0xefd9('0x2e')]=function(_0x5650c5){var _0x3e13cc={};for(var _0x3c7445 in _0x5650c5){if(_0x5650c5[_0xefd9('0x27')](_0x3c7445)){_0x3e13cc[util['format']('%s',_[_0xefd9('0x2f')](_0x3c7445))]=_0x5650c5[_0x3c7445];}}return{'variables':_0x3e13cc};};exports[_0xefd9('0x30')]=function(_0x40f464,_0x22061d){if(!_[_0xefd9('0x15')](_0x40f464)){if(_0x40f464[_0xefd9('0x27')]('originated')){if(_0x40f464[_0xefd9('0x31')]>0x0){_0x40f464[_0xefd9('0x31')]-=0x1;}else{logger['error'](_0xefd9('0x32'),_0x22061d);}}}else{logger[_0xefd9('0xa')](_0xefd9('0x33'),_0x22061d);}};exports['logBlacklist']=function(_0x27b3cb){var _0x10b533=moment()[_0xefd9('0x12')](_0xefd9('0x34'));_0x27b3cb[_0xefd9('0x35')]=0xd;_0x27b3cb[_0xefd9('0x36')]=_0xefd9('0x37');_0x27b3cb['starttime']=_0x10b533;_0x27b3cb['responsetime']=_0x10b533;_0x27b3cb['endtime']=_0x10b533;};exports[_0xefd9('0x38')]=function(_0xf4402b,_0x2783b1,_0x41a929){var _0x3f286b=moment()[_0xefd9('0x12')](_0xefd9('0x34'));_0xf4402b['state']=_0x2783b1;_0xf4402b[_0xefd9('0x36')]=_0x41a929;_0xf4402b[_0xefd9('0x39')]=_0x3f286b;_0xf4402b['ringtime']=getSeconds(_0xf4402b[_0xefd9('0x39')],_0xf4402b['starttime']);};exports[_0xefd9('0x3a')]=function(_0x31ae13,_0x8189ea,_0x59e007){_0x31ae13['membername']=_0x8189ea;_0x31ae13[_0xefd9('0x3b')]=_0x59e007;};exports[_0xefd9('0x3c')]=function(_0x5938e9,_0x44d1c4,_0x5a7a12){var _0x33354b=moment()[_0xefd9('0x12')](_0xefd9('0x34'));_0x5938e9[_0xefd9('0x35')]=_0x44d1c4;_0x5938e9[_0xefd9('0x36')]=_0x5a7a12;_0x5938e9[_0xefd9('0x39')]=_0x5938e9[_0xefd9('0x39')]?_0x5938e9[_0xefd9('0x39')]:_0x33354b;_0x5938e9[_0xefd9('0x3d')]=_0x5938e9[_0xefd9('0x3d')]?_0x5938e9[_0xefd9('0x3d')]:_0x33354b;_0x5938e9['ringtime']=getSeconds(_0x5938e9[_0xefd9('0x39')]||0x0,_0x5938e9[_0xefd9('0x3e')]||0x0);_0x5938e9[_0xefd9('0x3f')]=_0x5938e9[_0xefd9('0x40')]?getSeconds(_0x5938e9[_0xefd9('0x3d')],_0x5938e9['answertime']):0x0;};exports['isFailure']=function(_0x170642){return _0x170642===_0xefd9('0x41');};exports['variablesAction']=function(_0x50b0ed,_0x26cea2,_0x450401,_0x58063e,_0x1bf693){var _0x4a3167=_0x58063e?_0xefd9('0x42'):_0x50b0ed[_0xefd9('0x43')];_0x4a3167=_0x1bf693?'BOOKED':_0x4a3167;return{'actionid':_0x50b0ed[_0xefd9('0x44')],'action':_0xefd9('0x45'),'channel':_0x50b0ed[_0xefd9('0x46')],'callerid':util['format'](_0xefd9('0x13'),_0x4a3167,_0x50b0ed[_0xefd9('0x18')]),'Exten':_0xefd9('0x23'),'Context':_0xefd9('0x47'),'Priority':'1','variable':_0x450401,'timeout':(_0x26cea2[_0xefd9('0x48')]||0x1e)*0x3e8,'async':!![],'channelid':_0x50b0ed[_0xefd9('0x44')]};};exports[_0xefd9('0x49')]=function(_0x11be26){return _0x11be26[_0xefd9('0x4a')]+_0x11be26[_0xefd9('0x4b')]+_0x11be26[_0xefd9('0x4c')]+_0x11be26[_0xefd9('0x4d')]+_0x11be26[_0xefd9('0x4e')];};exports[_0xefd9('0x4f')]=function(_0x26cf6c){var _0x12d5aa=_[_0xefd9('0x50')](_0x26cf6c);_0x12d5aa[_0xefd9('0x35')]=0xf;_0x12d5aa[_0xefd9('0x36')]=_0xefd9('0x51');return _0x12d5aa;};exports[_0xefd9('0x52')]=function(_0x1cd6e1,_0x2f53a4,_0x27b42e){var _0x4edc2b={};_0x4edc2b[_0x2f53a4]=_0x1cd6e1[_0x2f53a4];_0x4edc2b['active']=![];_0x4edc2b[_0xefd9('0x53')]=moment()[_0xefd9('0x54')](_0x27b42e,_0xefd9('0x55'))[_0xefd9('0x12')](_0xefd9('0x34'));_0x4edc2b[_0xefd9('0x19')]=_0x1cd6e1[_0xefd9('0x19')];_0x4edc2b[_0xefd9('0x56')]=_0x1cd6e1['ListId'];_0x4edc2b[_0xefd9('0x57')]=_0x1cd6e1[_0xefd9('0x57')]||undefined;return _0x4edc2b;};exports[_0xefd9('0x58')]=function(_0x24da7f,_0xd21066){if(!_[_0xefd9('0x15')](_0x24da7f)){if(_0x24da7f[_0xefd9('0x59')]>0x0){_0x24da7f[_0xefd9('0x59')]-=0x1;}else{logger[_0xefd9('0xa')](_0xd21066,_0xefd9('0x5a'));}}else{logger[_0xefd9('0xa')](_0xd21066,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports['IsNotLoggedIn']=function(_0x17722d){if(_0x17722d<=0x0){return!![];}return![];};exports[_0xefd9('0x5b')]=function(_0x32b3b1,_0x523a4f,_0x2e564a){_0x32b3b1[_0xefd9('0x5c')]=_0x523a4f;_0x32b3b1[_0xefd9('0x5d')]=_0x32b3b1[_0xefd9('0x5e')];_0x32b3b1[_0xefd9('0x5f')]=_0x32b3b1['channelAgent'];if(_0x2e564a){_0x32b3b1['mandatoryDisposition']=_0x2e564a[_0xefd9('0x60')];}return _0x32b3b1;};exports[_0xefd9('0x61')]=function(_0x1c1b7a){var _0x45aca2={};_0x45aca2['queue']=_0x1c1b7a['queue'];_0x45aca2[_0xefd9('0x5f')]=_0x1c1b7a[_0xefd9('0x46')];_0x45aca2[_0xefd9('0x44')]=_0x1c1b7a['uniqueid'];return _0x45aca2;};exports[_0xefd9('0x62')]=function(_0x2adf88){var _0x1015f3=[];for(var _0x577d30 in _0x2adf88){if(_0x2adf88[_0xefd9('0x27')](_0x577d30)){if(!_[_0xefd9('0x15')](_0x2adf88[_0x577d30])&&_0x2adf88[_0x577d30]['state']===_0xefd9('0x63')&&_0x2adf88[_0x577d30][_0xefd9('0x64')]===_0xefd9('0x65')){_0x1015f3[_0xefd9('0x66')](_0x2adf88[_0x577d30]['id']);}}}return _0x1015f3;};exports[_0xefd9('0x67')]=function(_0x4e704b){var _0xbaef3e=moment()[_0xefd9('0x6')](0x0);var _0x5226ec=moment(_0x4e704b)[_0xefd9('0x6')](0x0);return _0xbaef3e[_0xefd9('0x7')](_0x5226ec,_0xefd9('0x8'));};exports[_0xefd9('0x68')]=function(_0x296b08){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x296b08[_0xefd9('0x19')],'ListId':_0x296b08[_0xefd9('0x56')],'VoiceQueueId':_0x296b08['VoiceQueueId']||undefined,'CampaignId':_0x296b08[_0xefd9('0x69')]||undefined};};exports['filterKey']=function(_0x841be5){if(_0x841be5===_0xefd9('0x44')||_0x841be5==='idContact'||_0x841be5===_0xefd9('0x5e')||_0x841be5==='type'||_0x841be5===_0xefd9('0x6a')||_0x841be5==='dialAnswer'||_0x841be5==='membername'||_0x841be5===_0xefd9('0x46')||_0x841be5===_0xefd9('0x43')||_0x841be5===_0xefd9('0x6b')||_0x841be5===_0xefd9('0x18')||_0x841be5===_0xefd9('0x53')||_0x841be5===_0xefd9('0x4a')||_0x841be5===_0xefd9('0x4b')||_0x841be5===_0xefd9('0x4c')||_0x841be5===_0xefd9('0x6c')||_0x841be5==='callback'||_0x841be5===_0xefd9('0x6d')||_0x841be5==='callbackat'||_0x841be5===_0xefd9('0x6e')||_0x841be5==='ContactId'||_0x841be5==='ListId'||_0x841be5==='UserId'||_0x841be5===_0xefd9('0x57')||_0x841be5===_0xefd9('0x6f')||_0x841be5===_0xefd9('0x70')||_0x841be5===_0xefd9('0x71')||_0x841be5===_0xefd9('0x72')||_0x841be5===_0xefd9('0x73')||_0x841be5==='xmd-dialurl'||_0x841be5===_0xefd9('0x74')||_0x841be5===_0xefd9('0x75')||_0x841be5===_0xefd9('0x76')||_0x841be5===_0xefd9('0x77')||_0x841be5===_0xefd9('0x78')||_0x841be5===_0xefd9('0x79')||_0x841be5===_0xefd9('0x7a')||_0x841be5===_0xefd9('0x7b')||_0x841be5===_0xefd9('0x7c')||_0x841be5===_0xefd9('0x7d')||_0x841be5===_0xefd9('0x7e')||_0x841be5===_0xefd9('0x7f')||_0x841be5===_0xefd9('0x80')||_0x841be5===_0xefd9('0x81')||_0x841be5==='rtpaudioqoslossbridged'||_0x841be5===_0xefd9('0x82')||_0x841be5==='rtpaudioqosrttbridged'||_0x841be5==='rtpaudioqos'||_0x841be5==='rtpaudioqosbridged'||_0x841be5===_0xefd9('0x7f')||_0x841be5==='rtpaudioqosjitterbridged'||_0x841be5===_0xefd9('0x81')||_0x841be5===_0xefd9('0x83')||_0x841be5===_0xefd9('0x82')||_0x841be5==='rtpaudioqosrttbridged'||_0x841be5===_0xefd9('0x84')||_0x841be5===_0xefd9('0x85')||_0x841be5===_0xefd9('0x35')||_0x841be5===_0xefd9('0x36')){return![];}return!![];};exports[_0xefd9('0x86')]=function(_0x46d938,_0x1d0c8f){var _0x5d2001,_0x51b361,_0x247ebf;if(_0x1d0c8f<=0x0){_0x1d0c8f=0x1;}_0x5d2001=new RegExp('\x5cw{0,'+_0x1d0c8f+'}$');_0x51b361=Math[_0xefd9('0x87')](0xa,_0x1d0c8f-0x1);_0x247ebf=Math[_0xefd9('0x87')](0xa,_0x1d0c8f)-0x1;return util['format']('%s',_['replace'](_0x46d938,_0x5d2001,_[_0xefd9('0x88')](_0x51b361,_0x247ebf)));};exports[_0xefd9('0x89')]=function(_0x4ce2d7){var _0x1ec353=_0x4ce2d7['match'](/"(.*?)"/);return _0x1ec353?_0x1ec353[0x1]:_0x4ce2d7;};exports[_0xefd9('0x8a')]=function(_0x5e3ac2){var _0x1d0df7=_0x5e3ac2[_0xefd9('0x8b')](/<(.*?)>/);return _0x1d0df7?_0x1d0df7[0x1]:_0x5e3ac2;};
\ No newline at end of file
index 8b9b2ec..cadfd65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x256a=['voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','queueremove','queuepause','boolean','reload','voicequeuechannel'];(function(_0x252851,_0x1a7f34){var _0x49d6b1=function(_0x4720c1){while(--_0x4720c1){_0x252851['push'](_0x252851['shift']());}};_0x49d6b1(++_0x1a7f34);}(_0x256a,0x1b1));var _0xa256=function(_0x2e7fd0,_0x483b30){_0x2e7fd0=_0x2e7fd0-0x0;var _0x2fc533=_0x256a[_0x2e7fd0];return _0x2fc533;};'use strict';exports[_0xa256('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0xa256('0x1'),'required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':'boolean','required':![]}};exports[_0xa256('0x2')]={'queue':{'type':_0xa256('0x1'),'required':!![]},'interface':{'type':_0xa256('0x1'),'required':!![]}};exports[_0xa256('0x3')]={'interface':{'type':_0xa256('0x1'),'required':!![]},'paused':{'type':_0xa256('0x4')},'reason':{'type':_0xa256('0x1'),'required':![]}};exports[_0xa256('0x5')]={'module':{'type':_0xa256('0x1'),'required':![]}};exports[_0xa256('0x6')]={'uniqueid':{'type':_0xa256('0x1'),'required':!![]}};exports[_0xa256('0x7')]={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0xa256('0x1')},'format':{'type':_0xa256('0x1')},'mixmonitorid':{'type':'string'}};exports[_0xa256('0x8')]={'uniqueid':{'type':_0xa256('0x1'),'required':!![]}};exports[_0xa256('0x9')]={'uniqueid':{'type':_0xa256('0x1'),'required':!![]},'exten':{'type':_0xa256('0x1'),'required':!![]},'context':{'type':'string'}};
\ No newline at end of file
+var _0x06dd=['voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number','boolean','queueremove','queuepause','reload','voicequeuechannel'];(function(_0x469576,_0x34c931){var _0x3f99ae=function(_0x825f34){while(--_0x825f34){_0x469576['push'](_0x469576['shift']());}};_0x3f99ae(++_0x34c931);}(_0x06dd,0x14d));var _0xd06d=function(_0x4af3b7,_0x30c116){_0x4af3b7=_0x4af3b7-0x0;var _0x24727c=_0x06dd[_0x4af3b7];return _0x24727c;};'use strict';exports[_0xd06d('0x0')]={'queue':{'type':_0xd06d('0x1'),'required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0xd06d('0x1'),'required':!![]},'penalty':{'type':_0xd06d('0x2'),'required':![]},'paused':{'type':_0xd06d('0x3'),'required':![]}};exports[_0xd06d('0x4')]={'queue':{'type':_0xd06d('0x1'),'required':!![]},'interface':{'type':'string','required':!![]}};exports[_0xd06d('0x5')]={'interface':{'type':'string','required':!![]},'paused':{'type':_0xd06d('0x3')},'reason':{'type':_0xd06d('0x1'),'required':![]}};exports[_0xd06d('0x6')]={'module':{'type':'string','required':![]}};exports[_0xd06d('0x7')]={'uniqueid':{'type':'string','required':!![]}};exports[_0xd06d('0x8')]={'uniqueid':{'type':_0xd06d('0x1'),'required':!![]},'filename':{'type':_0xd06d('0x1')},'format':{'type':_0xd06d('0x1')},'mixmonitorid':{'type':'string'}};exports[_0xd06d('0x9')]={'uniqueid':{'type':_0xd06d('0x1'),'required':!![]}};exports[_0xd06d('0xa')]={'uniqueid':{'type':'string','required':!![]},'exten':{'type':_0xd06d('0x1'),'required':!![]},'context':{'type':_0xd06d('0x1')}};
\ No newline at end of file
index 82a2784..7598d76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe26b=['initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initDynamics365Accounts','dynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','groupBy','uniqueid','queue','queuecallerexit','queuecallerabandon','diff','queuecallerjoinAt','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','total','queuecallerleaveAt','seconds','initVoiceCallReports','outbound','duration','disposition','ANSWERED','billableseconds','initCampaigns','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','exports','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/servicenowAccount','../model/freshsalesAccount','../model/faxAccount','telephones','trunks','voiceQueues','campaigns','templates','voiceExtensions','channels','queueChannels','outboundChannels','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','freshsalesAccounts','faxAccounts','mapKeys','format','SIP/%s','name','isNil','sumHoldTime','sumBillable','hasOwnProperty','ivrTotalCallsDays','ivrAnswerCallsDay','answered','unmanaged','abandoned','sumDuration','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','length','interface','agents','isUndefined','initTrunks','initTriggers','triggers','initTemplates','initZendeskAccounts','initSalesforceAccounts'];(function(_0x250ca6,_0x47f9a4){var _0x583b6d=function(_0x139c30){while(--_0x139c30){_0x250ca6['push'](_0x250ca6['shift']());}};_0x583b6d(++_0x47f9a4);}(_0xe26b,0x8d));var _0xbe26=function(_0x244c60,_0x47c473){_0x244c60=_0x244c60-0x0;var _0x634bba=_0xe26b[_0x244c60];return _0x634bba;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require('lodash');var moment=require('moment');var Agent=require('../model/agent');var Telephone=require(_0xbe26('0x0'));var Trunk=require(_0xbe26('0x1'));var VoiceQueue=require(_0xbe26('0x2'));var Trigger=require(_0xbe26('0x3'));var Template=require(_0xbe26('0x4'));var Campaign=require('../model/campaign');var VoiceExtension=require(_0xbe26('0x5'));var ZendeskAccount=require(_0xbe26('0x6'));var SalesforceAccount=require(_0xbe26('0x7'));var FreshdeskAccount=require(_0xbe26('0x8'));var SugarcrmAccount=require(_0xbe26('0x9'));var ZohoAccount=require(_0xbe26('0xa'));var DeskAccount=require(_0xbe26('0xb'));var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require(_0xbe26('0xc'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0xbe26('0xd'));var FaxAccount=require(_0xbe26('0xe'));var Realtime=function(){this['agents']={};this[_0xbe26('0xf')]={};this[_0xbe26('0x10')]={};this[_0xbe26('0x11')]={};this['triggers']={};this[_0xbe26('0x12')]={};this[_0xbe26('0x13')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xbe26('0x14')]={};this[_0xbe26('0x15')]={};this[_0xbe26('0x16')]={};this[_0xbe26('0x17')]={};this['timers']={};this[_0xbe26('0x18')]={};this[_0xbe26('0x19')]={};this[_0xbe26('0x1a')]={};this[_0xbe26('0x1b')]={};this[_0xbe26('0x1c')]={};this[_0xbe26('0x1d')]={};this[_0xbe26('0x1e')]={};this[_0xbe26('0x1f')]={};this[_0xbe26('0x20')]={};this['dynamics365Accounts']={};this[_0xbe26('0x21')]={};this[_0xbe26('0x22')]={};};function freeIsNotKey(_0x25d20a,_0x1dccea,_0x277b5a){var _0x439e68=_[_0xbe26('0x23')](_0x25d20a,function(_0x2a7b6a,_0x582cdd){return _0x2a7b6a[_0x277b5a];});for(var _0x2c527b in _0x1dccea){if(_0x1dccea['hasOwnProperty'](_0x2c527b)){if(!_0x439e68[_0x2c527b]){delete _0x1dccea[_0x2c527b];}}}}function freeIsNotKeySip(_0x102e6b,_0x5c5bd1){var _0x4ae6bc=_['mapKeys'](_0x102e6b,function(_0x34918d,_0x637f16){return util[_0xbe26('0x24')](_0xbe26('0x25'),_0x34918d[_0xbe26('0x26')]);});for(var _0x2c8c1b in _0x5c5bd1){if(_0x5c5bd1['hasOwnProperty'](_0x2c8c1b)){if(!_0x4ae6bc[_0x2c8c1b]){delete _0x5c5bd1[_0x2c8c1b];}}}}function freeIsNotKeyAgent(_0xa6a0ab,_0x1b5fb9){var _0x2abdae=_[_0xbe26('0x23')](_0xa6a0ab,function(_0x3a18f6,_0x374908){var _0x23bd77=_[_0xbe26('0x27')](_0x3a18f6['interface'])?util[_0xbe26('0x24')](_0xbe26('0x25'),_0x3a18f6[_0xbe26('0x26')]):_0x3a18f6['interface'];return _0x23bd77;});for(var _0x56287e in _0x1b5fb9){if(_0x1b5fb9['hasOwnProperty'](_0x56287e)){if(!_0x2abdae[_0x56287e]){delete _0x1b5fb9[_0x56287e];}}}}function clearVoiceCallReports(_0x3cc6d9){_0x3cc6d9['total']=0x0;_0x3cc6d9['answered']=0x0;_0x3cc6d9[_0xbe26('0x28')]=0x0;_0x3cc6d9['sumDuration']=0x0;_0x3cc6d9[_0xbe26('0x29')]=0x0;}function clearCampaigns(_0x479a73){if(!_['isEmpty'](_0x479a73)){for(var _0x1e3ed5 in _0x479a73){if(_0x479a73[_0xbe26('0x2a')](_0x1e3ed5)){_0x479a73[_0x1e3ed5][_0xbe26('0x2b')]=0x0;_0x479a73[_0x1e3ed5][_0xbe26('0x2c')]=0x0;}}}}function clearVoiceQueues(_0x572275){if(!_['isEmpty'](_0x572275)){for(var _0x2439d4 in _0x572275){if(_0x572275[_0xbe26('0x2a')](_0x2439d4)){_0x572275[_0x2439d4]['total']=0x0;_0x572275[_0x2439d4][_0xbe26('0x2d')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x2e')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x2f')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x28')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x30')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x29')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x31')]=0x0;_0x572275[_0x2439d4]['outboundNoAnswerCallsDay']=0x0;_0x572275[_0x2439d4][_0xbe26('0x32')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x33')]=0x0;_0x572275[_0x2439d4]['outboundNoSuchCallsDay']=0x0;_0x572275[_0x2439d4][_0xbe26('0x34')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x35')]=0x0;_0x572275[_0x2439d4]['outboundDropCallsDayCallersExit']=0x0;_0x572275[_0x2439d4][_0xbe26('0x36')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x37')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x38')]=0x0;_0x572275[_0x2439d4]['outboundReCallsDay']=0x0;_0x572275[_0x2439d4][_0xbe26('0x31')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x39')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x3a')]=!![];}}}}Realtime[_0xbe26('0x3b')][_0xbe26('0x3c')]=function(_0x43dfb3,_0x1a7574){for(var _0x22908b in _0x1a7574){if(_0x43dfb3[_0xbe26('0x2a')](_0x22908b)){_0x43dfb3[_0x22908b]=_0x1a7574[_0x22908b];}}};Realtime[_0xbe26('0x3b')]['initAgents']=function(){var _0x3e9453=this;return function(_0x353285){if(_0x353285){freeIsNotKeyAgent(_0x353285,_0x3e9453['agents']);for(var _0x5999e1=0x0,_0x31f442={},_0x4edce9={};_0x5999e1<_0x353285[_0xbe26('0x3d')];_0x5999e1+=0x1){_0x31f442=_0x353285[_0x5999e1];var _0x179a4d=_[_0xbe26('0x27')](_0x31f442['interface'])?util[_0xbe26('0x24')](_0xbe26('0x25'),_0x31f442['name']):_0x31f442[_0xbe26('0x3e')];if(_['isUndefined'](_0x3e9453['agents'][_0x179a4d])){_0x3e9453['agents'][_0x179a4d]=new Agent(_0x31f442);}else{_0x3e9453[_0xbe26('0x3c')](_0x3e9453['agents'][_0x179a4d],_0x31f442);}}}return _0x3e9453[_0xbe26('0x3f')];};};Realtime['prototype']['initTelephones']=function(){var _0x4582d5=this;return function(_0x4204d4){if(_0x4204d4){freeIsNotKeySip(_0x4204d4,_0x4582d5[_0xbe26('0xf')]);for(var _0x2116fa=0x0,_0x535654={},_0x1e6a45={};_0x2116fa<_0x4204d4[_0xbe26('0x3d')];_0x2116fa+=0x1){_0x535654=_0x4204d4[_0x2116fa];if(_[_0xbe26('0x40')](_0x4582d5[_0xbe26('0xf')][util[_0xbe26('0x24')]('SIP/%s',_0x535654['name'])])){_0x4582d5['telephones'][util['format'](_0xbe26('0x25'),_0x535654[_0xbe26('0x26')])]=new Telephone(_0x535654);}else{_0x4582d5[_0xbe26('0x3c')](_0x4582d5[_0xbe26('0xf')][util[_0xbe26('0x24')]('SIP/%s',_0x535654[_0xbe26('0x26')])],_0x535654);}}}return _0x4582d5[_0xbe26('0xf')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x41')]=function(){var _0x461a4b=this;return function(_0xc67df2){if(_0xc67df2){freeIsNotKeySip(_0xc67df2,_0x461a4b[_0xbe26('0x10')]);for(var _0x39b24d=0x0,_0x1beba1={},_0x3a1eef={};_0x39b24d<_0xc67df2[_0xbe26('0x3d')];_0x39b24d+=0x1){_0x1beba1=_0xc67df2[_0x39b24d];if(_[_0xbe26('0x40')](_0x461a4b['trunks'][util[_0xbe26('0x24')](_0xbe26('0x25'),_0x1beba1['name'])])){_0x461a4b[_0xbe26('0x10')][util[_0xbe26('0x24')](_0xbe26('0x25'),_0x1beba1[_0xbe26('0x26')])]=new Trunk(_0x1beba1);}else{_0x461a4b['mergeFromDatabase'](_0x461a4b['trunks'][util['format'](_0xbe26('0x25'),_0x1beba1[_0xbe26('0x26')])],_0x1beba1);}}}return _0x461a4b[_0xbe26('0x10')];};};Realtime[_0xbe26('0x3b')]['initVoiceQueues']=function(){var _0x134470=this;return function(_0x5443f1){if(_0x5443f1){freeIsNotKey(_0x5443f1,_0x134470[_0xbe26('0x11')],_0xbe26('0x26'));for(var _0x23a04e=0x0,_0x35cabd={},_0x54e9fe={};_0x23a04e<_0x5443f1[_0xbe26('0x3d')];_0x23a04e+=0x1){_0x35cabd=_0x5443f1[_0x23a04e];if(_[_0xbe26('0x40')](_0x134470[_0xbe26('0x11')][_0x35cabd[_0xbe26('0x26')]])){_0x134470[_0xbe26('0x11')][_0x35cabd[_0xbe26('0x26')]]=new VoiceQueue(_0x35cabd);}else{_0x134470[_0xbe26('0x3c')](_0x134470['voiceQueues'][_0x35cabd[_0xbe26('0x26')]],_0x35cabd);}}}return _0x134470[_0xbe26('0x11')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x42')]=function(){var _0x346eae=this;return function(_0xcc28e4){if(_0xcc28e4){freeIsNotKey(_0xcc28e4,_0x346eae[_0xbe26('0x43')],'id');for(var _0x2bd2d3=0x0,_0x36a72d={},_0x24ad1f={};_0x2bd2d3<_0xcc28e4['length'];_0x2bd2d3+=0x1){_0x36a72d=_0xcc28e4[_0x2bd2d3];if(_[_0xbe26('0x40')](_0x346eae[_0xbe26('0x43')][_0x36a72d['id']])){_0x346eae['triggers'][_0x36a72d['id']]=new Trigger(_0x36a72d);}else{_0x346eae[_0xbe26('0x3c')](_0x346eae[_0xbe26('0x43')][_0x36a72d['id']],_0x36a72d);}}}return _0x346eae[_0xbe26('0x43')];};};Realtime['prototype'][_0xbe26('0x44')]=function(){var _0x37032c=this;return function(_0xb42cab){if(_0xb42cab){freeIsNotKey(_0xb42cab,_0x37032c[_0xbe26('0x13')],'id');for(var _0x2c22a4=0x0,_0x156009={},_0x8eeb44={};_0x2c22a4<_0xb42cab[_0xbe26('0x3d')];_0x2c22a4+=0x1){_0x156009=_0xb42cab[_0x2c22a4];if(_[_0xbe26('0x40')](_0x37032c[_0xbe26('0x13')][_0x156009['id']])){_0x37032c[_0xbe26('0x13')][_0x156009['id']]=new Template(_0x156009);}else{_0x37032c[_0xbe26('0x3c')](_0x37032c[_0xbe26('0x13')][_0x156009['id']],_0x156009);}}}return _0x37032c[_0xbe26('0x13')];};};Realtime['prototype'][_0xbe26('0x45')]=function(){var _0xd046b6=this;return function(_0x5f5911){if(_0x5f5911){freeIsNotKey(_0x5f5911,_0xd046b6[_0xbe26('0x19')],'id');for(var _0x2e66f6=0x0,_0x28ace2={},_0x3d7b4c={};_0x2e66f6<_0x5f5911[_0xbe26('0x3d')];_0x2e66f6+=0x1){_0x28ace2=_0x5f5911[_0x2e66f6];if(_['isUndefined'](_0xd046b6[_0xbe26('0x19')][_0x28ace2['id']])){_0xd046b6[_0xbe26('0x19')][_0x28ace2['id']]=new ZendeskAccount(_0x28ace2);}else{_0xd046b6['mergeFromDatabase'](_0xd046b6[_0xbe26('0x19')][_0x28ace2['id']],_0x28ace2);}}}return _0xd046b6[_0xbe26('0x19')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x46')]=function(){var _0x46d49c=this;return function(_0x5342c9){if(_0x5342c9){freeIsNotKey(_0x5342c9,_0x46d49c[_0xbe26('0x1a')],'id');for(var _0x4f9ccd=0x0,_0x1e48e1={},_0x3620d3={};_0x4f9ccd<_0x5342c9[_0xbe26('0x3d')];_0x4f9ccd+=0x1){_0x1e48e1=_0x5342c9[_0x4f9ccd];if(_[_0xbe26('0x40')](_0x46d49c['salesforceAccounts'][_0x1e48e1['id']])){_0x46d49c[_0xbe26('0x1a')][_0x1e48e1['id']]=new SalesforceAccount(_0x1e48e1);}else{_0x46d49c[_0xbe26('0x3c')](_0x46d49c[_0xbe26('0x1a')][_0x1e48e1['id']],_0x1e48e1);}}}return _0x46d49c[_0xbe26('0x1a')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x47')]=function(){var _0x2b62e3=this;return function(_0x3e4641){if(_0x3e4641){freeIsNotKey(_0x3e4641,_0x2b62e3[_0xbe26('0x1c')],'id');for(var _0x3acbcd=0x0,_0x3dd034={},_0x4d07e8={};_0x3acbcd<_0x3e4641[_0xbe26('0x3d')];_0x3acbcd+=0x1){_0x3dd034=_0x3e4641[_0x3acbcd];if(_['isUndefined'](_0x2b62e3[_0xbe26('0x1c')][_0x3dd034['id']])){_0x2b62e3[_0xbe26('0x1c')][_0x3dd034['id']]=new FreshdeskAccount(_0x3dd034);}else{_0x2b62e3['mergeFromDatabase'](_0x2b62e3[_0xbe26('0x1c')][_0x3dd034['id']],_0x3dd034);}}}return _0x2b62e3['freshdeskAccounts'];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x48')]=function(){var _0xf56aee=this;return function(_0x777dea){if(_0x777dea){freeIsNotKey(_0x777dea,_0xf56aee['zohoAccounts'],'id');for(var _0x361cb8=0x0,_0x3a2b2a={},_0x4c6c43={};_0x361cb8<_0x777dea['length'];_0x361cb8+=0x1){_0x3a2b2a=_0x777dea[_0x361cb8];if(_[_0xbe26('0x40')](_0xf56aee['zohoAccounts'][_0x3a2b2a['id']])){_0xf56aee[_0xbe26('0x1d')][_0x3a2b2a['id']]=new ZohoAccount(_0x3a2b2a);}else{_0xf56aee[_0xbe26('0x3c')](_0xf56aee['zohoAccounts'][_0x3a2b2a['id']],_0x3a2b2a);}}}return _0xf56aee[_0xbe26('0x1d')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x49')]=function(){var _0x555a69=this;return function(_0x35665d){if(_0x35665d){freeIsNotKey(_0x35665d,_0x555a69['deskAccounts'],'id');for(var _0x2a1762=0x0,_0x1eb5bd={},_0x12941c={};_0x2a1762<_0x35665d['length'];_0x2a1762+=0x1){_0x1eb5bd=_0x35665d[_0x2a1762];if(_[_0xbe26('0x40')](_0x555a69['deskAccounts'][_0x1eb5bd['id']])){_0x555a69[_0xbe26('0x1e')][_0x1eb5bd['id']]=new DeskAccount(_0x1eb5bd);}else{_0x555a69[_0xbe26('0x3c')](_0x555a69['deskAccounts'][_0x1eb5bd['id']],_0x1eb5bd);}}}return _0x555a69[_0xbe26('0x1e')];};};Realtime['prototype'][_0xbe26('0x4a')]=function(){var _0x17de0f=this;return function(_0x4a3c73){if(_0x4a3c73){freeIsNotKey(_0x4a3c73,_0x17de0f['sugarcrmAccounts'],'id');for(var _0x42ddeb=0x0,_0x1dcf09={},_0x5cfa65={};_0x42ddeb<_0x4a3c73['length'];_0x42ddeb+=0x1){_0x1dcf09=_0x4a3c73[_0x42ddeb];if(_['isUndefined'](_0x17de0f[_0xbe26('0x1b')][_0x1dcf09['id']])){_0x17de0f[_0xbe26('0x1b')][_0x1dcf09['id']]=new SugarcrmAccount(_0x1dcf09);}else{_0x17de0f[_0xbe26('0x3c')](_0x17de0f[_0xbe26('0x1b')][_0x1dcf09['id']],_0x1dcf09);}}}return _0x17de0f[_0xbe26('0x1b')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x4b')]=function(){var _0xec9159=this;return function(_0x5b8fba){if(_0x5b8fba){freeIsNotKey(_0x5b8fba,_0xec9159[_0xbe26('0x1f')],'id');for(var _0x53a88f=0x0,_0x27fe5b={},_0x4cae86={};_0x53a88f<_0x5b8fba['length'];_0x53a88f+=0x1){_0x27fe5b=_0x5b8fba[_0x53a88f];if(_[_0xbe26('0x40')](_0xec9159[_0xbe26('0x1f')][_0x27fe5b['id']])){_0xec9159['vtigerAccounts'][_0x27fe5b['id']]=new VtigerAccount(_0x27fe5b);}else{_0xec9159[_0xbe26('0x3c')](_0xec9159[_0xbe26('0x1f')][_0x27fe5b['id']],_0x27fe5b);}}}return _0xec9159['vtigerAccounts'];};};Realtime[_0xbe26('0x3b')]['initServicenowAccounts']=function(){var _0x1cac6f=this;return function(_0x57fe43){if(_0x57fe43){freeIsNotKey(_0x57fe43,_0x1cac6f['servicenowAccounts'],'id');for(var _0x4eb5d4=0x0,_0x29f04e={},_0x766ec3={};_0x4eb5d4<_0x57fe43['length'];_0x4eb5d4+=0x1){_0x29f04e=_0x57fe43[_0x4eb5d4];if(_[_0xbe26('0x40')](_0x1cac6f[_0xbe26('0x20')][_0x29f04e['id']])){_0x1cac6f[_0xbe26('0x20')][_0x29f04e['id']]=new ServicenowAccount(_0x29f04e);}else{_0x1cac6f['mergeFromDatabase'](_0x1cac6f[_0xbe26('0x20')][_0x29f04e['id']],_0x29f04e);}}}return _0x1cac6f[_0xbe26('0x20')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x4c')]=function(){var _0x47781f=this;return function(_0x9e91fb){if(_0x9e91fb){freeIsNotKey(_0x9e91fb,_0x47781f[_0xbe26('0x4d')],'id');for(var _0xde42c2=0x0,_0x4f3351={},_0x5a8eea={};_0xde42c2<_0x9e91fb['length'];_0xde42c2+=0x1){_0x4f3351=_0x9e91fb[_0xde42c2];if(_[_0xbe26('0x40')](_0x47781f[_0xbe26('0x4d')][_0x4f3351['id']])){_0x47781f['dynamics365Accounts'][_0x4f3351['id']]=new Dynamics365Account(_0x4f3351);}else{_0x47781f[_0xbe26('0x3c')](_0x47781f[_0xbe26('0x4d')][_0x4f3351['id']],_0x4f3351);}}}return _0x47781f[_0xbe26('0x4d')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x4e')]=function(){var _0x1b670c=this;return function(_0x2b52a3){if(_0x2b52a3){freeIsNotKey(_0x2b52a3,_0x1b670c[_0xbe26('0x21')],'id');for(var _0x36543f=0x0,_0x79b62={},_0x228788={};_0x36543f<_0x2b52a3['length'];_0x36543f+=0x1){_0x79b62=_0x2b52a3[_0x36543f];if(_[_0xbe26('0x40')](_0x1b670c[_0xbe26('0x21')][_0x79b62['id']])){_0x1b670c[_0xbe26('0x21')][_0x79b62['id']]=new FreshsalesAccount(_0x79b62);}else{_0x1b670c['mergeFromDatabase'](_0x1b670c[_0xbe26('0x21')][_0x79b62['id']],_0x79b62);}}}return _0x1b670c[_0xbe26('0x21')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x4f')]=function(){var _0x41fb27=this;return function(_0x2feef9){for(var _0x479d38=0x0;_0x479d38<_0x2feef9[_0xbe26('0x3d')];_0x479d38+=0x1){_[_0xbe26('0x50')](_0x41fb27['voiceQueues'][_0x2feef9[_0x479d38][_0xbe26('0x26')]],_0x2feef9[_0x479d38]);}return _0x41fb27['voiceQueues'];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0x18d736=this;return function(_0x45bc13){clearVoiceQueues(_0x18d736[_0xbe26('0x11')]);if(_0x45bc13){_0x45bc13=_[_0xbe26('0x51')](_0x45bc13,_0xbe26('0x52'));for(var _0x342aba in _0x45bc13){if(_0x45bc13[_0xbe26('0x2a')](_0x342aba)){var _0x44e6ea={};for(var _0x5c4d6b=0x0;_0x5c4d6b<_0x45bc13[_0x342aba]['length'];_0x5c4d6b+=0x1){var _0x31dccf=_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x53')];if(_0x18d736[_0xbe26('0x11')][_0x31dccf]){if(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x54')]){_0x18d736[_0xbe26('0x11')][_0x31dccf]['unmanaged']+=0x1;}if(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x55')]){_0x18d736[_0xbe26('0x11')][_0x31dccf]['abandoned']+=0x1;}_0x18d736[_0xbe26('0x11')][_0x31dccf]['sumHoldTime']+=moment(_0x45bc13[_0x342aba][_0x5c4d6b]['queuecallerleaveAt'])[_0xbe26('0x56')](moment(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x57')]),'seconds')||0x0;if(_0x5c4d6b===_0x45bc13[_0x342aba]['length']-0x1){_0x18d736[_0xbe26('0x11')][_0x31dccf]['sumDuration']+=moment(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x58')]||_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x59')]||_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x5a')])[_0xbe26('0x56')](moment(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x57')]),'seconds')||0x0;_0x18d736[_0xbe26('0x11')][_0x31dccf][_0xbe26('0x5b')]+=0x1;if(_0x45bc13[_0x342aba][_0x5c4d6b]['queuecallercomplete']){_0x18d736[_0xbe26('0x11')][_0x31dccf][_0xbe26('0x2d')]+=0x1;_0x18d736['voiceQueues'][_0x31dccf][_0xbe26('0x29')]+=moment(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x58')])[_0xbe26('0x56')](moment(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x5c')]),_0xbe26('0x5d'))||0x0;}}else{_0x18d736[_0xbe26('0x11')][_0x31dccf][_0xbe26('0x30')]+=_0x18d736['voiceQueues'][_0x31dccf][_0xbe26('0x28')]||0x0;}}}}}}return _0x18d736['voiceQueues'];};};Realtime['prototype'][_0xbe26('0x5e')]=function(){var _0x51ff45=this;return function(_0x1e1536){clearVoiceCallReports(_0x51ff45[_0xbe26('0x5f')]);if(_0x1e1536){for(var _0x58e22d=0x0;_0x58e22d<_0x1e1536['length'];_0x58e22d+=0x1){_0x51ff45[_0xbe26('0x5f')]['total']+=0x1;_0x51ff45['outbound'][_0xbe26('0x30')]+=_0x1e1536[_0x58e22d][_0xbe26('0x60')];if(_0x1e1536[_0x58e22d][_0xbe26('0x61')]===_0xbe26('0x62')){_0x51ff45[_0xbe26('0x5f')]['answered']+=0x1;_0x51ff45['outbound']['sumHoldTime']+=_0x1e1536[_0x58e22d][_0xbe26('0x60')]-_0x1e1536[_0x58e22d][_0xbe26('0x63')]||0x0;_0x51ff45[_0xbe26('0x5f')][_0xbe26('0x29')]+=_0x1e1536[_0x58e22d][_0xbe26('0x63')];}}}return _0x51ff45['outbound'];};};Realtime['prototype'][_0xbe26('0x64')]=function(){var _0x466e31=this;return function(_0x3feb5a){if(_0x3feb5a){freeIsNotKey(_0x3feb5a,_0x466e31[_0xbe26('0x12')],_0xbe26('0x26'));for(var _0x4e527e=0x0,_0xf29c95={};_0x4e527e<_0x3feb5a['length'];_0x4e527e+=0x1){_0xf29c95=_0x3feb5a[_0x4e527e];if(_[_0xbe26('0x40')](_0x466e31[_0xbe26('0x12')][_0xf29c95[_0xbe26('0x26')]])){_0x466e31[_0xbe26('0x12')][_0xf29c95[_0xbe26('0x26')]]=new Campaign(_0xf29c95);}else{_0x466e31[_0xbe26('0x3c')](_0x466e31[_0xbe26('0x12')][_0xf29c95[_0xbe26('0x26')]],_0xf29c95);_0x466e31['campaigns'][_0xf29c95[_0xbe26('0x26')]]['dialQueueProject']=_0xf29c95[_0xbe26('0x65')]?_0xf29c95[_0xbe26('0x65')][_0xbe26('0x26')]:undefined;}}}return _0x466e31['campaigns'];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x66')]=function(){var _0x55a1f4=this;return function(_0x4b0350){if(_0x4b0350){freeIsNotKey(_0x4b0350,_0x55a1f4[_0xbe26('0x14')],'id');for(var _0x137879=0x0,_0x26b61f={};_0x137879<_0x4b0350[_0xbe26('0x3d')];_0x137879+=0x1){_0x26b61f=_0x4b0350[_0x137879];if(_[_0xbe26('0x40')](_0x55a1f4[_0xbe26('0x14')][_0x26b61f['id']])){_0x55a1f4[_0xbe26('0x14')][_0x26b61f['id']]=new VoiceExtension(_0x26b61f);}else{_0x55a1f4[_0xbe26('0x3c')](_0x55a1f4[_0xbe26('0x14')][_0x26b61f['id']],_0x26b61f);}}}return _0x55a1f4[_0xbe26('0x14')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x67')]=function(){var _0x37a239=this;return function(_0x268796){clearCampaigns(_0x37a239[_0xbe26('0x12')]);for(var _0x5db8c7=0x0;_0x5db8c7<_0x268796[_0xbe26('0x3d')];_0x5db8c7+=0x1){_['merge'](_0x37a239[_0xbe26('0x12')][_0x268796[_0x5db8c7][_0xbe26('0x26')]],_0x268796[_0x5db8c7]);}return _0x37a239['campaigns'];};};Realtime['prototype'][_0xbe26('0x68')]=function(){var _0xcd3d9=this;return function(_0x1c6c00){if(_0x1c6c00){freeIsNotKey(_0x1c6c00,_0xcd3d9[_0xbe26('0x22')],'id');for(var _0x287de9=0x0,_0x61ed67={},_0x24a4b6={};_0x287de9<_0x1c6c00['length'];_0x287de9+=0x1){_0x61ed67=_0x1c6c00[_0x287de9];if(_['isUndefined'](_0xcd3d9[_0xbe26('0x22')][_0x61ed67['id']])){_0xcd3d9[_0xbe26('0x22')][_0x61ed67['id']]=new FaxAccount(_0x61ed67);}else{_0xcd3d9[_0xbe26('0x3c')](_0xcd3d9[_0xbe26('0x22')][_0x61ed67['id']],_0x61ed67);}}}return _0xcd3d9['faxAccounts'];};};module[_0xbe26('0x69')]=Realtime;
\ No newline at end of file
+var _0xfc7d=['templates','outbound','voiceExtensions','channels','timers','settings','zendeskAccounts','salesforceAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','name','isNil','SIP/%s','interface','answered','sumHoldTime','sumBillable','isEmpty','ivrAnswerCallsDay','total','abandoned','sumDuration','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','agents','mergeFromDatabase','initTelephones','length','isUndefined','initTrunks','initVoiceQueues','initTemplates','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','sugarcrmAccounts','initVtigerAccounts','vtigerAccounts','initServicenowAccounts','servicenowAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','queuecallercomplete','initVoiceCallReports','disposition','ANSWERED','duration','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','exports','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/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','telephones','trunks','voiceQueues','triggers','campaigns'];(function(_0x485b5a,_0x2b289b){var _0xd2b34d=function(_0x34dcbd){while(--_0x34dcbd){_0x485b5a['push'](_0x485b5a['shift']());}};_0xd2b34d(++_0x2b289b);}(_0xfc7d,0x1a3));var _0xdfc7=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xfc7d[_0x19950b];return _0x3c6b41;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require('lodash');var moment=require(_0xdfc7('0x0'));var Agent=require(_0xdfc7('0x1'));var Telephone=require(_0xdfc7('0x2'));var Trunk=require(_0xdfc7('0x3'));var VoiceQueue=require(_0xdfc7('0x4'));var Trigger=require(_0xdfc7('0x5'));var Template=require(_0xdfc7('0x6'));var Campaign=require(_0xdfc7('0x7'));var VoiceExtension=require(_0xdfc7('0x8'));var ZendeskAccount=require(_0xdfc7('0x9'));var SalesforceAccount=require(_0xdfc7('0xa'));var FreshdeskAccount=require(_0xdfc7('0xb'));var SugarcrmAccount=require(_0xdfc7('0xc'));var ZohoAccount=require(_0xdfc7('0xd'));var DeskAccount=require(_0xdfc7('0xe'));var VtigerAccount=require(_0xdfc7('0xf'));var ServicenowAccount=require(_0xdfc7('0x10'));var Dynamics365Account=require(_0xdfc7('0x11'));var FreshsalesAccount=require(_0xdfc7('0x12'));var FaxAccount=require(_0xdfc7('0x13'));var Realtime=function(){this['agents']={};this[_0xdfc7('0x14')]={};this[_0xdfc7('0x15')]={};this[_0xdfc7('0x16')]={};this[_0xdfc7('0x17')]={};this[_0xdfc7('0x18')]={};this[_0xdfc7('0x19')]={};this[_0xdfc7('0x1a')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xdfc7('0x1b')]={};this[_0xdfc7('0x1c')]={};this['queueChannels']={};this['outboundChannels']={};this[_0xdfc7('0x1d')]={};this[_0xdfc7('0x1e')]={};this[_0xdfc7('0x1f')]={};this[_0xdfc7('0x20')]={};this['sugarcrmAccounts']={};this[_0xdfc7('0x21')]={};this[_0xdfc7('0x22')]={};this[_0xdfc7('0x23')]={};this['vtigerAccounts']={};this['servicenowAccounts']={};this[_0xdfc7('0x24')]={};this[_0xdfc7('0x25')]={};this[_0xdfc7('0x26')]={};};function freeIsNotKey(_0x5c5f76,_0x58d081,_0x34c2ba){var _0x11d41d=_[_0xdfc7('0x27')](_0x5c5f76,function(_0x292bb4,_0xed323a){return _0x292bb4[_0x34c2ba];});for(var _0x1e24ef in _0x58d081){if(_0x58d081[_0xdfc7('0x28')](_0x1e24ef)){if(!_0x11d41d[_0x1e24ef]){delete _0x58d081[_0x1e24ef];}}}}function freeIsNotKeySip(_0x72f955,_0xc4c2c3){var _0x56c6cc=_[_0xdfc7('0x27')](_0x72f955,function(_0x4dabe0,_0x421d1a){return util[_0xdfc7('0x29')]('SIP/%s',_0x4dabe0[_0xdfc7('0x2a')]);});for(var _0x49cfd in _0xc4c2c3){if(_0xc4c2c3[_0xdfc7('0x28')](_0x49cfd)){if(!_0x56c6cc[_0x49cfd]){delete _0xc4c2c3[_0x49cfd];}}}}function freeIsNotKeyAgent(_0x4b1f2e,_0x302b67){var _0x43f279=_['mapKeys'](_0x4b1f2e,function(_0x43dbdf,_0x298adb){var _0x398a9f=_[_0xdfc7('0x2b')](_0x43dbdf['interface'])?util[_0xdfc7('0x29')](_0xdfc7('0x2c'),_0x43dbdf[_0xdfc7('0x2a')]):_0x43dbdf[_0xdfc7('0x2d')];return _0x398a9f;});for(var _0x339ed0 in _0x302b67){if(_0x302b67[_0xdfc7('0x28')](_0x339ed0)){if(!_0x43f279[_0x339ed0]){delete _0x302b67[_0x339ed0];}}}}function clearVoiceCallReports(_0x20e252){_0x20e252['total']=0x0;_0x20e252[_0xdfc7('0x2e')]=0x0;_0x20e252[_0xdfc7('0x2f')]=0x0;_0x20e252['sumDuration']=0x0;_0x20e252[_0xdfc7('0x30')]=0x0;}function clearCampaigns(_0x1514fc){if(!_[_0xdfc7('0x31')](_0x1514fc)){for(var _0x54e585 in _0x1514fc){if(_0x1514fc[_0xdfc7('0x28')](_0x54e585)){_0x1514fc[_0x54e585]['ivrTotalCallsDays']=0x0;_0x1514fc[_0x54e585][_0xdfc7('0x32')]=0x0;}}}}function clearVoiceQueues(_0x2fb7a0){if(!_[_0xdfc7('0x31')](_0x2fb7a0)){for(var _0x5b5388 in _0x2fb7a0){if(_0x2fb7a0['hasOwnProperty'](_0x5b5388)){_0x2fb7a0[_0x5b5388][_0xdfc7('0x33')]=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x2e')]=0x0;_0x2fb7a0[_0x5b5388]['unmanaged']=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x34')]=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x2f')]=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x35')]=0x0;_0x2fb7a0[_0x5b5388]['sumBillable']=0x0;_0x2fb7a0[_0x5b5388]['outboundAnswerAgiCallsDay']=0x0;_0x2fb7a0[_0x5b5388]['outboundNoAnswerCallsDay']=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x36')]=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x37')]=0x0;_0x2fb7a0[_0x5b5388]['outboundNoSuchCallsDay']=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x38')]=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x39')]=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x3a')]=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x3b')]=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x3c')]=0x0;_0x2fb7a0[_0x5b5388]['outboundRejectCallsDay']=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x3d')]=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x3e')]=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x3f')]=0x0;_0x2fb7a0[_0x5b5388][_0xdfc7('0x40')]=!![];}}}}Realtime[_0xdfc7('0x41')]['mergeFromDatabase']=function(_0x22644e,_0x2bbc8b){for(var _0x363caf in _0x2bbc8b){if(_0x22644e[_0xdfc7('0x28')](_0x363caf)){_0x22644e[_0x363caf]=_0x2bbc8b[_0x363caf];}}};Realtime[_0xdfc7('0x41')]['initAgents']=function(){var _0xca96c4=this;return function(_0x1e2c69){if(_0x1e2c69){freeIsNotKeyAgent(_0x1e2c69,_0xca96c4['agents']);for(var _0x5852cf=0x0,_0x285ad0={},_0x180090={};_0x5852cf<_0x1e2c69['length'];_0x5852cf+=0x1){_0x285ad0=_0x1e2c69[_0x5852cf];var _0x2c049c=_[_0xdfc7('0x2b')](_0x285ad0[_0xdfc7('0x2d')])?util['format']('SIP/%s',_0x285ad0['name']):_0x285ad0['interface'];if(_['isUndefined'](_0xca96c4[_0xdfc7('0x42')][_0x2c049c])){_0xca96c4[_0xdfc7('0x42')][_0x2c049c]=new Agent(_0x285ad0);}else{_0xca96c4[_0xdfc7('0x43')](_0xca96c4['agents'][_0x2c049c],_0x285ad0);}}}return _0xca96c4['agents'];};};Realtime['prototype'][_0xdfc7('0x44')]=function(){var _0x119f41=this;return function(_0x1606ee){if(_0x1606ee){freeIsNotKeySip(_0x1606ee,_0x119f41['telephones']);for(var _0x31a6a5=0x0,_0x3db8f4={},_0x5d037b={};_0x31a6a5<_0x1606ee[_0xdfc7('0x45')];_0x31a6a5+=0x1){_0x3db8f4=_0x1606ee[_0x31a6a5];if(_[_0xdfc7('0x46')](_0x119f41['telephones'][util[_0xdfc7('0x29')](_0xdfc7('0x2c'),_0x3db8f4['name'])])){_0x119f41['telephones'][util[_0xdfc7('0x29')](_0xdfc7('0x2c'),_0x3db8f4[_0xdfc7('0x2a')])]=new Telephone(_0x3db8f4);}else{_0x119f41['mergeFromDatabase'](_0x119f41[_0xdfc7('0x14')][util[_0xdfc7('0x29')](_0xdfc7('0x2c'),_0x3db8f4[_0xdfc7('0x2a')])],_0x3db8f4);}}}return _0x119f41['telephones'];};};Realtime[_0xdfc7('0x41')][_0xdfc7('0x47')]=function(){var _0x59cc72=this;return function(_0x5c2821){if(_0x5c2821){freeIsNotKeySip(_0x5c2821,_0x59cc72['trunks']);for(var _0x40afff=0x0,_0x8df79f={},_0x3bec66={};_0x40afff<_0x5c2821[_0xdfc7('0x45')];_0x40afff+=0x1){_0x8df79f=_0x5c2821[_0x40afff];if(_[_0xdfc7('0x46')](_0x59cc72[_0xdfc7('0x15')][util[_0xdfc7('0x29')](_0xdfc7('0x2c'),_0x8df79f[_0xdfc7('0x2a')])])){_0x59cc72[_0xdfc7('0x15')][util[_0xdfc7('0x29')]('SIP/%s',_0x8df79f[_0xdfc7('0x2a')])]=new Trunk(_0x8df79f);}else{_0x59cc72[_0xdfc7('0x43')](_0x59cc72['trunks'][util[_0xdfc7('0x29')](_0xdfc7('0x2c'),_0x8df79f[_0xdfc7('0x2a')])],_0x8df79f);}}}return _0x59cc72[_0xdfc7('0x15')];};};Realtime['prototype'][_0xdfc7('0x48')]=function(){var _0x486ed8=this;return function(_0xb49c85){if(_0xb49c85){freeIsNotKey(_0xb49c85,_0x486ed8[_0xdfc7('0x16')],_0xdfc7('0x2a'));for(var _0x4d94d5=0x0,_0x3e68a6={},_0x5820bf={};_0x4d94d5<_0xb49c85['length'];_0x4d94d5+=0x1){_0x3e68a6=_0xb49c85[_0x4d94d5];if(_[_0xdfc7('0x46')](_0x486ed8[_0xdfc7('0x16')][_0x3e68a6[_0xdfc7('0x2a')]])){_0x486ed8[_0xdfc7('0x16')][_0x3e68a6[_0xdfc7('0x2a')]]=new VoiceQueue(_0x3e68a6);}else{_0x486ed8[_0xdfc7('0x43')](_0x486ed8['voiceQueues'][_0x3e68a6[_0xdfc7('0x2a')]],_0x3e68a6);}}}return _0x486ed8[_0xdfc7('0x16')];};};Realtime[_0xdfc7('0x41')]['initTriggers']=function(){var _0x57562f=this;return function(_0x5407dc){if(_0x5407dc){freeIsNotKey(_0x5407dc,_0x57562f[_0xdfc7('0x17')],'id');for(var _0x94b789=0x0,_0x1c2acc={},_0x25f4b8={};_0x94b789<_0x5407dc[_0xdfc7('0x45')];_0x94b789+=0x1){_0x1c2acc=_0x5407dc[_0x94b789];if(_[_0xdfc7('0x46')](_0x57562f[_0xdfc7('0x17')][_0x1c2acc['id']])){_0x57562f['triggers'][_0x1c2acc['id']]=new Trigger(_0x1c2acc);}else{_0x57562f[_0xdfc7('0x43')](_0x57562f['triggers'][_0x1c2acc['id']],_0x1c2acc);}}}return _0x57562f['triggers'];};};Realtime[_0xdfc7('0x41')][_0xdfc7('0x49')]=function(){var _0xb17333=this;return function(_0x2b99a7){if(_0x2b99a7){freeIsNotKey(_0x2b99a7,_0xb17333[_0xdfc7('0x19')],'id');for(var _0x539abb=0x0,_0x3471bf={},_0x1aec5e={};_0x539abb<_0x2b99a7[_0xdfc7('0x45')];_0x539abb+=0x1){_0x3471bf=_0x2b99a7[_0x539abb];if(_[_0xdfc7('0x46')](_0xb17333[_0xdfc7('0x19')][_0x3471bf['id']])){_0xb17333['templates'][_0x3471bf['id']]=new Template(_0x3471bf);}else{_0xb17333[_0xdfc7('0x43')](_0xb17333[_0xdfc7('0x19')][_0x3471bf['id']],_0x3471bf);}}}return _0xb17333['templates'];};};Realtime[_0xdfc7('0x41')][_0xdfc7('0x4a')]=function(){var _0x22c068=this;return function(_0x195065){if(_0x195065){freeIsNotKey(_0x195065,_0x22c068[_0xdfc7('0x1f')],'id');for(var _0x4bcc18=0x0,_0xc99c90={},_0x20d9e1={};_0x4bcc18<_0x195065['length'];_0x4bcc18+=0x1){_0xc99c90=_0x195065[_0x4bcc18];if(_[_0xdfc7('0x46')](_0x22c068['zendeskAccounts'][_0xc99c90['id']])){_0x22c068['zendeskAccounts'][_0xc99c90['id']]=new ZendeskAccount(_0xc99c90);}else{_0x22c068[_0xdfc7('0x43')](_0x22c068[_0xdfc7('0x1f')][_0xc99c90['id']],_0xc99c90);}}}return _0x22c068[_0xdfc7('0x1f')];};};Realtime[_0xdfc7('0x41')][_0xdfc7('0x4b')]=function(){var _0x334213=this;return function(_0x3d1252){if(_0x3d1252){freeIsNotKey(_0x3d1252,_0x334213[_0xdfc7('0x20')],'id');for(var _0xb0827d=0x0,_0x3a6bf7={},_0x1f13f0={};_0xb0827d<_0x3d1252[_0xdfc7('0x45')];_0xb0827d+=0x1){_0x3a6bf7=_0x3d1252[_0xb0827d];if(_['isUndefined'](_0x334213[_0xdfc7('0x20')][_0x3a6bf7['id']])){_0x334213['salesforceAccounts'][_0x3a6bf7['id']]=new SalesforceAccount(_0x3a6bf7);}else{_0x334213['mergeFromDatabase'](_0x334213[_0xdfc7('0x20')][_0x3a6bf7['id']],_0x3a6bf7);}}}return _0x334213[_0xdfc7('0x20')];};};Realtime[_0xdfc7('0x41')][_0xdfc7('0x4c')]=function(){var _0x4ceca5=this;return function(_0x4c27c7){if(_0x4c27c7){freeIsNotKey(_0x4c27c7,_0x4ceca5[_0xdfc7('0x21')],'id');for(var _0x59caed=0x0,_0x3a6236={},_0x3a12ba={};_0x59caed<_0x4c27c7['length'];_0x59caed+=0x1){_0x3a6236=_0x4c27c7[_0x59caed];if(_[_0xdfc7('0x46')](_0x4ceca5[_0xdfc7('0x21')][_0x3a6236['id']])){_0x4ceca5[_0xdfc7('0x21')][_0x3a6236['id']]=new FreshdeskAccount(_0x3a6236);}else{_0x4ceca5[_0xdfc7('0x43')](_0x4ceca5[_0xdfc7('0x21')][_0x3a6236['id']],_0x3a6236);}}}return _0x4ceca5[_0xdfc7('0x21')];};};Realtime['prototype'][_0xdfc7('0x4d')]=function(){var _0x41b56e=this;return function(_0x27fd90){if(_0x27fd90){freeIsNotKey(_0x27fd90,_0x41b56e[_0xdfc7('0x22')],'id');for(var _0x57781d=0x0,_0xc7b883={},_0x3b1c06={};_0x57781d<_0x27fd90[_0xdfc7('0x45')];_0x57781d+=0x1){_0xc7b883=_0x27fd90[_0x57781d];if(_['isUndefined'](_0x41b56e[_0xdfc7('0x22')][_0xc7b883['id']])){_0x41b56e['zohoAccounts'][_0xc7b883['id']]=new ZohoAccount(_0xc7b883);}else{_0x41b56e['mergeFromDatabase'](_0x41b56e['zohoAccounts'][_0xc7b883['id']],_0xc7b883);}}}return _0x41b56e[_0xdfc7('0x22')];};};Realtime[_0xdfc7('0x41')][_0xdfc7('0x4e')]=function(){var _0x4d7eac=this;return function(_0x5c6bca){if(_0x5c6bca){freeIsNotKey(_0x5c6bca,_0x4d7eac[_0xdfc7('0x23')],'id');for(var _0x3d62a4=0x0,_0xd9f500={},_0x40c9b7={};_0x3d62a4<_0x5c6bca[_0xdfc7('0x45')];_0x3d62a4+=0x1){_0xd9f500=_0x5c6bca[_0x3d62a4];if(_['isUndefined'](_0x4d7eac[_0xdfc7('0x23')][_0xd9f500['id']])){_0x4d7eac[_0xdfc7('0x23')][_0xd9f500['id']]=new DeskAccount(_0xd9f500);}else{_0x4d7eac[_0xdfc7('0x43')](_0x4d7eac[_0xdfc7('0x23')][_0xd9f500['id']],_0xd9f500);}}}return _0x4d7eac[_0xdfc7('0x23')];};};Realtime[_0xdfc7('0x41')][_0xdfc7('0x4f')]=function(){var _0x35c7e0=this;return function(_0x1f187a){if(_0x1f187a){freeIsNotKey(_0x1f187a,_0x35c7e0['sugarcrmAccounts'],'id');for(var _0x371fec=0x0,_0x3cd798={},_0x2af537={};_0x371fec<_0x1f187a['length'];_0x371fec+=0x1){_0x3cd798=_0x1f187a[_0x371fec];if(_[_0xdfc7('0x46')](_0x35c7e0[_0xdfc7('0x50')][_0x3cd798['id']])){_0x35c7e0['sugarcrmAccounts'][_0x3cd798['id']]=new SugarcrmAccount(_0x3cd798);}else{_0x35c7e0[_0xdfc7('0x43')](_0x35c7e0[_0xdfc7('0x50')][_0x3cd798['id']],_0x3cd798);}}}return _0x35c7e0[_0xdfc7('0x50')];};};Realtime['prototype'][_0xdfc7('0x51')]=function(){var _0x300d13=this;return function(_0x590071){if(_0x590071){freeIsNotKey(_0x590071,_0x300d13[_0xdfc7('0x52')],'id');for(var _0x5419cf=0x0,_0x5e1fd8={},_0x14745a={};_0x5419cf<_0x590071['length'];_0x5419cf+=0x1){_0x5e1fd8=_0x590071[_0x5419cf];if(_['isUndefined'](_0x300d13[_0xdfc7('0x52')][_0x5e1fd8['id']])){_0x300d13[_0xdfc7('0x52')][_0x5e1fd8['id']]=new VtigerAccount(_0x5e1fd8);}else{_0x300d13[_0xdfc7('0x43')](_0x300d13[_0xdfc7('0x52')][_0x5e1fd8['id']],_0x5e1fd8);}}}return _0x300d13[_0xdfc7('0x52')];};};Realtime[_0xdfc7('0x41')][_0xdfc7('0x53')]=function(){var _0x209ac0=this;return function(_0x538067){if(_0x538067){freeIsNotKey(_0x538067,_0x209ac0[_0xdfc7('0x54')],'id');for(var _0x59b732=0x0,_0x16c9e1={},_0x39dd10={};_0x59b732<_0x538067['length'];_0x59b732+=0x1){_0x16c9e1=_0x538067[_0x59b732];if(_[_0xdfc7('0x46')](_0x209ac0['servicenowAccounts'][_0x16c9e1['id']])){_0x209ac0[_0xdfc7('0x54')][_0x16c9e1['id']]=new ServicenowAccount(_0x16c9e1);}else{_0x209ac0[_0xdfc7('0x43')](_0x209ac0['servicenowAccounts'][_0x16c9e1['id']],_0x16c9e1);}}}return _0x209ac0[_0xdfc7('0x54')];};};Realtime[_0xdfc7('0x41')]['initDynamics365Accounts']=function(){var _0x48228d=this;return function(_0x59b3ca){if(_0x59b3ca){freeIsNotKey(_0x59b3ca,_0x48228d[_0xdfc7('0x24')],'id');for(var _0x393f89=0x0,_0x486239={},_0x3ea109={};_0x393f89<_0x59b3ca[_0xdfc7('0x45')];_0x393f89+=0x1){_0x486239=_0x59b3ca[_0x393f89];if(_[_0xdfc7('0x46')](_0x48228d[_0xdfc7('0x24')][_0x486239['id']])){_0x48228d['dynamics365Accounts'][_0x486239['id']]=new Dynamics365Account(_0x486239);}else{_0x48228d[_0xdfc7('0x43')](_0x48228d[_0xdfc7('0x24')][_0x486239['id']],_0x486239);}}}return _0x48228d[_0xdfc7('0x24')];};};Realtime['prototype']['initFreshsalesAccounts']=function(){var _0x3ca3d3=this;return function(_0x518fe6){if(_0x518fe6){freeIsNotKey(_0x518fe6,_0x3ca3d3[_0xdfc7('0x25')],'id');for(var _0x50eedb=0x0,_0x18a79e={},_0x3cb2b7={};_0x50eedb<_0x518fe6['length'];_0x50eedb+=0x1){_0x18a79e=_0x518fe6[_0x50eedb];if(_[_0xdfc7('0x46')](_0x3ca3d3['freshsalesAccounts'][_0x18a79e['id']])){_0x3ca3d3[_0xdfc7('0x25')][_0x18a79e['id']]=new FreshsalesAccount(_0x18a79e);}else{_0x3ca3d3[_0xdfc7('0x43')](_0x3ca3d3[_0xdfc7('0x25')][_0x18a79e['id']],_0x18a79e);}}}return _0x3ca3d3[_0xdfc7('0x25')];};};Realtime['prototype'][_0xdfc7('0x55')]=function(){var _0x467e27=this;return function(_0x5c0107){for(var _0x21956f=0x0;_0x21956f<_0x5c0107[_0xdfc7('0x45')];_0x21956f+=0x1){_[_0xdfc7('0x56')](_0x467e27['voiceQueues'][_0x5c0107[_0x21956f]['name']],_0x5c0107[_0x21956f]);}return _0x467e27[_0xdfc7('0x16')];};};Realtime[_0xdfc7('0x41')][_0xdfc7('0x57')]=function(){var _0x1280dd=this;return function(_0x1eb793){clearVoiceQueues(_0x1280dd[_0xdfc7('0x16')]);if(_0x1eb793){_0x1eb793=_[_0xdfc7('0x58')](_0x1eb793,_0xdfc7('0x59'));for(var _0x494937 in _0x1eb793){if(_0x1eb793[_0xdfc7('0x28')](_0x494937)){var _0x57798a={};for(var _0x3d9436=0x0;_0x3d9436<_0x1eb793[_0x494937][_0xdfc7('0x45')];_0x3d9436+=0x1){var _0x39e99a=_0x1eb793[_0x494937][_0x3d9436][_0xdfc7('0x5a')];if(_0x1280dd[_0xdfc7('0x16')][_0x39e99a]){if(_0x1eb793[_0x494937][_0x3d9436]['queuecallerexit']){_0x1280dd['voiceQueues'][_0x39e99a]['unmanaged']+=0x1;}if(_0x1eb793[_0x494937][_0x3d9436][_0xdfc7('0x5b')]){_0x1280dd['voiceQueues'][_0x39e99a][_0xdfc7('0x34')]+=0x1;}_0x1280dd['voiceQueues'][_0x39e99a][_0xdfc7('0x2f')]+=moment(_0x1eb793[_0x494937][_0x3d9436][_0xdfc7('0x5c')])[_0xdfc7('0x5d')](moment(_0x1eb793[_0x494937][_0x3d9436][_0xdfc7('0x5e')]),_0xdfc7('0x5f'))||0x0;if(_0x3d9436===_0x1eb793[_0x494937][_0xdfc7('0x45')]-0x1){_0x1280dd[_0xdfc7('0x16')][_0x39e99a][_0xdfc7('0x35')]+=moment(_0x1eb793[_0x494937][_0x3d9436][_0xdfc7('0x60')]||_0x1eb793[_0x494937][_0x3d9436][_0xdfc7('0x61')]||_0x1eb793[_0x494937][_0x3d9436][_0xdfc7('0x62')])[_0xdfc7('0x5d')](moment(_0x1eb793[_0x494937][_0x3d9436][_0xdfc7('0x5e')]),_0xdfc7('0x5f'))||0x0;_0x1280dd[_0xdfc7('0x16')][_0x39e99a][_0xdfc7('0x33')]+=0x1;if(_0x1eb793[_0x494937][_0x3d9436][_0xdfc7('0x63')]){_0x1280dd[_0xdfc7('0x16')][_0x39e99a]['answered']+=0x1;_0x1280dd[_0xdfc7('0x16')][_0x39e99a][_0xdfc7('0x30')]+=moment(_0x1eb793[_0x494937][_0x3d9436][_0xdfc7('0x60')])[_0xdfc7('0x5d')](moment(_0x1eb793[_0x494937][_0x3d9436][_0xdfc7('0x5c')]),_0xdfc7('0x5f'))||0x0;}}else{_0x1280dd[_0xdfc7('0x16')][_0x39e99a][_0xdfc7('0x35')]+=_0x1280dd[_0xdfc7('0x16')][_0x39e99a]['sumHoldTime']||0x0;}}}}}}return _0x1280dd[_0xdfc7('0x16')];};};Realtime[_0xdfc7('0x41')][_0xdfc7('0x64')]=function(){var _0x235be3=this;return function(_0x140e82){clearVoiceCallReports(_0x235be3[_0xdfc7('0x1a')]);if(_0x140e82){for(var _0x3abe5c=0x0;_0x3abe5c<_0x140e82[_0xdfc7('0x45')];_0x3abe5c+=0x1){_0x235be3[_0xdfc7('0x1a')][_0xdfc7('0x33')]+=0x1;_0x235be3[_0xdfc7('0x1a')]['sumDuration']+=_0x140e82[_0x3abe5c]['duration'];if(_0x140e82[_0x3abe5c][_0xdfc7('0x65')]===_0xdfc7('0x66')){_0x235be3['outbound'][_0xdfc7('0x2e')]+=0x1;_0x235be3[_0xdfc7('0x1a')][_0xdfc7('0x2f')]+=_0x140e82[_0x3abe5c][_0xdfc7('0x67')]-_0x140e82[_0x3abe5c]['billableseconds']||0x0;_0x235be3[_0xdfc7('0x1a')]['sumBillable']+=_0x140e82[_0x3abe5c]['billableseconds'];}}}return _0x235be3[_0xdfc7('0x1a')];};};Realtime['prototype'][_0xdfc7('0x68')]=function(){var _0x225459=this;return function(_0x3410fb){if(_0x3410fb){freeIsNotKey(_0x3410fb,_0x225459[_0xdfc7('0x18')],_0xdfc7('0x2a'));for(var _0x39c44c=0x0,_0x6bd067={};_0x39c44c<_0x3410fb[_0xdfc7('0x45')];_0x39c44c+=0x1){_0x6bd067=_0x3410fb[_0x39c44c];if(_[_0xdfc7('0x46')](_0x225459[_0xdfc7('0x18')][_0x6bd067[_0xdfc7('0x2a')]])){_0x225459['campaigns'][_0x6bd067[_0xdfc7('0x2a')]]=new Campaign(_0x6bd067);}else{_0x225459[_0xdfc7('0x43')](_0x225459[_0xdfc7('0x18')][_0x6bd067[_0xdfc7('0x2a')]],_0x6bd067);_0x225459[_0xdfc7('0x18')][_0x6bd067[_0xdfc7('0x2a')]][_0xdfc7('0x69')]=_0x6bd067[_0xdfc7('0x6a')]?_0x6bd067[_0xdfc7('0x6a')][_0xdfc7('0x2a')]:undefined;}}}return _0x225459[_0xdfc7('0x18')];};};Realtime[_0xdfc7('0x41')][_0xdfc7('0x6b')]=function(){var _0x290ee1=this;return function(_0x1851b3){if(_0x1851b3){freeIsNotKey(_0x1851b3,_0x290ee1[_0xdfc7('0x1b')],'id');for(var _0x31d53f=0x0,_0x15e402={};_0x31d53f<_0x1851b3[_0xdfc7('0x45')];_0x31d53f+=0x1){_0x15e402=_0x1851b3[_0x31d53f];if(_[_0xdfc7('0x46')](_0x290ee1[_0xdfc7('0x1b')][_0x15e402['id']])){_0x290ee1['voiceExtensions'][_0x15e402['id']]=new VoiceExtension(_0x15e402);}else{_0x290ee1[_0xdfc7('0x43')](_0x290ee1['voiceExtensions'][_0x15e402['id']],_0x15e402);}}}return _0x290ee1[_0xdfc7('0x1b')];};};Realtime[_0xdfc7('0x41')][_0xdfc7('0x6c')]=function(){var _0x452f33=this;return function(_0x77c43c){clearCampaigns(_0x452f33['campaigns']);for(var _0x31eccc=0x0;_0x31eccc<_0x77c43c[_0xdfc7('0x45')];_0x31eccc+=0x1){_['merge'](_0x452f33[_0xdfc7('0x18')][_0x77c43c[_0x31eccc][_0xdfc7('0x2a')]],_0x77c43c[_0x31eccc]);}return _0x452f33[_0xdfc7('0x18')];};};Realtime[_0xdfc7('0x41')][_0xdfc7('0x6d')]=function(){var _0x44c26f=this;return function(_0x27cfa6){if(_0x27cfa6){freeIsNotKey(_0x27cfa6,_0x44c26f[_0xdfc7('0x26')],'id');for(var _0xc62ff3=0x0,_0x23b0ef={},_0x242c9f={};_0xc62ff3<_0x27cfa6[_0xdfc7('0x45')];_0xc62ff3+=0x1){_0x23b0ef=_0x27cfa6[_0xc62ff3];if(_[_0xdfc7('0x46')](_0x44c26f[_0xdfc7('0x26')][_0x23b0ef['id']])){_0x44c26f[_0xdfc7('0x26')][_0x23b0ef['id']]=new FaxAccount(_0x23b0ef);}else{_0x44c26f[_0xdfc7('0x43')](_0x44c26f[_0xdfc7('0x26')][_0x23b0ef['id']],_0x23b0ef);}}}return _0x44c26f[_0xdfc7('0x26')];};};module[_0xdfc7('0x6e')]=Realtime;
\ No newline at end of file
index 4acdc76..b25481c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc898=['realtime','agents','telephones','sync','xdr','custom:voiceQueueReport','bind','custom:voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','prototype','find','name','isNil','accountcode','interface','format','SIP/%s','findAgent','connectedlinenum','assigned','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','voiceQueueReport','match','destination','exten','type','dialer','lastapplication','lastdata','queue','context','from-voip-provider','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','channel','callerid','calleridname','transfers','linkedid','transfereelinkedid','create','monitor','monitors','filename','createdAt','connectedlinename','membername','xcally-motion-dialer','isArray','forEach','startsWith','substring','indexOf','mobile','phone','lastIndexOf','lodash','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceDialReport','./userReport'];(function(_0x7e68e2,_0x6edb7c){var _0x154477=function(_0x42d831){while(--_0x42d831){_0x7e68e2['push'](_0x7e68e2['shift']());}};_0x154477(++_0x6edb7c);}(_0xc898,0x95));var _0x8c89=function(_0x9686ba,_0x203d70){_0x9686ba=_0x9686ba-0x0;var _0x57c132=_0xc898[_0x9686ba];return _0x57c132;};'use strict';var _=require(_0x8c89('0x0'));var moment=require('moment');var util=require(_0x8c89('0x1'));var config=require(_0x8c89('0x2'));var ami=require(_0x8c89('0x3'));var RpcVoiceAgentReport=require(_0x8c89('0x4'));var RpcVoiceCallReport=require(_0x8c89('0x5'));var RpcVoiceDialReport=require(_0x8c89('0x6'));var RpcMemberReport=require(_0x8c89('0x7'));var RpcVoiceQueueReport=require(_0x8c89('0x8'));var RpcVoiceRecording=require(_0x8c89('0x9'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0x8c89('0xa'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require(_0x8c89('0xb'));var UserReport=require(_0x8c89('0xc'));function Report(_0x31e1b9){this[_0x8c89('0xd')]=_0x31e1b9;this[_0x8c89('0xe')]=_0x31e1b9[_0x8c89('0xe')];this[_0x8c89('0xf')]=_0x31e1b9[_0x8c89('0xf')];}Report['prototype'][_0x8c89('0x10')]=function(_0x80af6a){var _0x96e03b=new VoiceQueueReport(this[_0x8c89('0xd')]);var _0x52e10c=new VoiceAgentReport(this[_0x8c89('0xd')]);var _0x136c4d=new VoiceDialReport(this[_0x8c89('0xd')]);var _0x111b3b=new VoiceCallReport(this[_0x8c89('0xd')]);var _0x3b8fe3=new UserReport(this['realtime']);if(config[_0x8c89('0x11')]&&config[_0x8c89('0x11')]['disabled']){ami['on'](_0x8c89('0x12'),this['voiceQueueReport'][_0x8c89('0x13')](this));ami['on'](_0x8c89('0x14'),this['voiceCallReport']['bind'](this));ami['on'](_0x8c89('0x15'),this[_0x8c89('0x16')][_0x8c89('0x13')](this));ami['on'](_0x8c89('0x17'),this[_0x8c89('0x18')][_0x8c89('0x13')](this));ami['on'](_0x8c89('0x19'),this[_0x8c89('0x1a')][_0x8c89('0x13')](this));ami['on'](_0x8c89('0x1b'),this[_0x8c89('0x1c')]['bind'](this));}};Report[_0x8c89('0x1d')]['findAgent']=function(_0x5bbf53){var _0x446564;_0x446564=_[_0x8c89('0x1e')](this[_0x8c89('0xe')],function(_0x548a4f){return _0x548a4f['accountcode']==_0x5bbf53||_0x548a4f[_0x8c89('0x1f')]==_0x5bbf53;});if(_[_0x8c89('0x20')](_0x446564)){var _0x5bf47c=_[_0x8c89('0x1e')](this[_0x8c89('0xf')],function(_0x321a4c){return _0x321a4c[_0x8c89('0x21')]==_0x5bbf53||_0x321a4c[_0x8c89('0x1f')]==_0x5bbf53;});if(_0x5bf47c){_0x446564=_[_0x8c89('0x1e')](this[_0x8c89('0xe')],function(_0x29a6dd){return _0x29a6dd[_0x8c89('0x22')]==util[_0x8c89('0x23')](_0x8c89('0x24'),_0x5bf47c[_0x8c89('0x1f')]);});}}return _0x446564;};Report[_0x8c89('0x1d')]['voiceQueueReport']=function(_0x292928){for(var _0x39a7fe=0x0;_0x39a7fe<_0x292928['length'];_0x39a7fe+=0x1){var _0xeda03b=this[_0x8c89('0x25')](_0x292928[_0x39a7fe][_0x8c89('0x26')]);if(_0xeda03b){_0x292928[_0x39a7fe][_0x8c89('0x21')]=_0xeda03b['accountcode'];_0x292928[_0x39a7fe][_0x8c89('0x27')]=!![];_0x292928[_0x39a7fe]['lastAssignedTo']=_0xeda03b[_0x8c89('0x1f')];_0x292928[_0x39a7fe][_0x8c89('0x22')]=_['isNil'](_0xeda03b[_0x8c89('0x22')])?util['format']('SIP/%s',_0xeda03b[_0x8c89('0x1f')]):_0xeda03b[_0x8c89('0x22')];if(_0x292928[_0x39a7fe]['queuecallercomplete']){_0x292928[_0x39a7fe][_0x8c89('0x28')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x292928[_0x39a7fe][_0x8c89('0x29')]){_0x292928[_0x39a7fe][_0x8c89('0x2a')]=moment()[_0x8c89('0x23')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport[_0x8c89('0x2b')](_0x292928[_0x39a7fe]);}RpcVoiceQueueReport['create'](_0x292928[_0x39a7fe]);}};function extractCalleridNumber(_0x859764){var _0x10133f=_0x859764[_0x8c89('0x2c')](/<(.*?)>/);return _0x10133f?_0x10133f[0x1]:_0x859764;}Report['prototype']['voiceCallReport']=function(_0x2f2dc2){_0x2f2dc2[_0x8c89('0x2d')]=_0x2f2dc2[_0x8c89('0x2d')]||_0x2f2dc2[_0x8c89('0x2e')];if(_0x2f2dc2[_0x8c89('0x2f')]==_0x8c89('0x30')){_0x2f2dc2[_0x8c89('0x31')]='queue';_0x2f2dc2[_0x8c89('0x32')]=_0x2f2dc2[_0x8c89('0x33')];if(_0x2f2dc2[_0x8c89('0x34')]==_0x8c89('0x35')){_0x2f2dc2[_0x8c89('0x21')]='';_0x2f2dc2['destination']=extractCalleridNumber(_0x2f2dc2['callerid']);}else if(_0x2f2dc2['context']=='from-sip'){if(_0x2f2dc2[_0x8c89('0x2d')]==_0x8c89('0x36')){_0x2f2dc2[_0x8c89('0x2d')]=extractCalleridNumber(_0x2f2dc2[_0x8c89('0x37')]);_0x2f2dc2[_0x8c89('0x38')]=_0x2f2dc2[_0x8c89('0x39')];_0x2f2dc2[_0x8c89('0x3a')]=[_0x2f2dc2['channel'],_0x2f2dc2[_0x8c89('0x3b')]=_0x2f2dc2['destinationchannel']][0x0];_0x2f2dc2[_0x8c89('0x3c')]=_0x2f2dc2[_0x8c89('0x37')];}else{_0x2f2dc2['destination']=_0x2f2dc2[_0x8c89('0x38')];_0x2f2dc2[_0x8c89('0x38')]=_0x2f2dc2['originatecalleridnum'];if(_0x2f2dc2['disposition']=='ANSWERED'){_0x2f2dc2[_0x8c89('0x21')]=_0x2f2dc2[_0x8c89('0x26')];}else{_0x2f2dc2[_0x8c89('0x21')]='';}}}}else{_0x2f2dc2[_0x8c89('0x3c')]=util[_0x8c89('0x23')]('\x22%s\x22\x20<%s>',_0x2f2dc2[_0x8c89('0x3d')],_0x2f2dc2[_0x8c89('0x38')]);}if(RpcVoiceTransferReport[_0x8c89('0x3e')][_0x2f2dc2[_0x8c89('0x3f')]]){var _0x4211d2=RpcVoiceTransferReport[_0x8c89('0x3e')][_0x2f2dc2['linkedid']];_0x4211d2[_0x8c89('0x40')]=_0x2f2dc2['uniqueid'];RpcVoiceTransferReport[_0x8c89('0x1a')](_0x4211d2);delete RpcVoiceTransferReport[_0x8c89('0x3e')][_0x2f2dc2['linkedid']];}RpcVoiceCallReport[_0x8c89('0x41')](_0x2f2dc2);if(_0x2f2dc2[_0x8c89('0x42')]){for(var _0x4c240b=0x0;_0x4c240b<_0x2f2dc2[_0x8c89('0x43')]['length'];_0x4c240b+=0x1){_0x2f2dc2['monitorFilename']=_0x2f2dc2[_0x8c89('0x43')][_0x4c240b][_0x8c89('0x44')];_0x2f2dc2[_0x8c89('0x45')]=_0x2f2dc2['monitors'][_0x4c240b][_0x8c89('0x45')];if(_0x2f2dc2[_0x8c89('0x2e')]==_0x8c89('0x36')){_0x2f2dc2[_0x8c89('0x38')]=_0x2f2dc2[_0x8c89('0x26')];_0x2f2dc2[_0x8c89('0x3d')]=_0x2f2dc2[_0x8c89('0x46')];_0x2f2dc2[_0x8c89('0x26')]=_0x2f2dc2[_0x8c89('0x21')];_0x2f2dc2[_0x8c89('0x46')]=_0x2f2dc2[_0x8c89('0x47')];_0x2f2dc2[_0x8c89('0x2e')]=_0x2f2dc2[_0x8c89('0x39')];}else if(_0x2f2dc2[_0x8c89('0x2e')]==_0x8c89('0x48')){_0x2f2dc2[_0x8c89('0x38')]=_0x2f2dc2[_0x8c89('0x2d')];_0x2f2dc2['exten']=_0x2f2dc2['originatecalleridnum'];}RpcVoiceRecording['create'](_0x2f2dc2);}}};Report[_0x8c89('0x1d')][_0x8c89('0x16')]=function(_0x12d7df){if(_[_0x8c89('0x49')](_0x12d7df)){_0x12d7df[_0x8c89('0x4a')](function(_0x5964b3){RpcVoiceAgentReport[_0x8c89('0x41')](_0x5964b3);});}else{RpcVoiceAgentReport[_0x8c89('0x41')](_0x12d7df);}};Report[_0x8c89('0x1d')][_0x8c89('0x18')]=function(_0x1c69c2){RpcVoiceDialReport[_0x8c89('0x41')](_0x1c69c2);var _0x24dc52;var _0x456145;var _0x511e6b=_0x1c69c2[_0x8c89('0x3b')];if(_[_0x8c89('0x4b')](_0x511e6b,'Local')){_0x456145=_0x511e6b[_0x8c89('0x4c')](_0x511e6b[_0x8c89('0x4d')]('/')+0x1,_0x511e6b['indexOf']('@'));_0x24dc52=_[_0x8c89('0x1e')](this[_0x8c89('0xe')],function(_0x5cc9c7){return _0x5cc9c7[_0x8c89('0x4e')]==_0x456145||_0x5cc9c7[_0x8c89('0x4f')]==_0x456145||_0x5cc9c7[_0x8c89('0x21')]==_0x456145;});}else{_0x456145=_0x511e6b[_0x8c89('0x4c')](_0x511e6b['indexOf']('/')+0x1,_0x511e6b[_0x8c89('0x50')]('-'));_0x24dc52=this[_0x8c89('0x25')](_0x456145);}if(_0x24dc52){_0x1c69c2[_0x8c89('0x22')]=_[_0x8c89('0x20')](_0x24dc52[_0x8c89('0x22')])?util[_0x8c89('0x23')](_0x8c89('0x24'),_0x24dc52[_0x8c89('0x1f')]):_0x24dc52['interface'];_0x1c69c2[_0x8c89('0x47')]=_0x24dc52[_0x8c89('0x1f')];_0x1c69c2[_0x8c89('0x21')]=_0x24dc52[_0x8c89('0x21')];RpcMemberReport[_0x8c89('0x18')](_0x1c69c2);}};Report[_0x8c89('0x1d')]['blindTransfer']=function(_0xd1a913){RpcVoiceTransferReport[_0x8c89('0x3e')][_0xd1a913['transfererlinkedid']]=_0xd1a913;};Report['prototype'][_0x8c89('0x1c')]=function(_0x2d5bed){RpcVoiceTransferReport['attendedTransfer'](_0x2d5bed);};module['exports']=Report;
\ No newline at end of file
+var _0x2c64=['../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','prototype','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','findAgent','find','accountcode','name','isNil','telephones','interface','format','SIP/%s','length','connectedlinenum','assigned','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','destination','type','lastapplication','queue','lastdata','context','from-voip-provider','callerid','xcally-motion-preview','calleridnum','originatecalleridnum','destinationchannel','channel','calleridpreview','disposition','ANSWERED','calleridname','transfers','uniqueid','internal','UserId','split','monitors','monitorFilename','filename','createdAt','connectedlinename','membername','exten','xcally-motion-dialer','isArray','startsWith','substring','indexOf','mobile','phone','lastIndexOf','attendedTransfer','exports','lodash','../../../config/environment','../ami','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport'];(function(_0x24c9b3,_0xcad610){var _0xc570f8=function(_0x530a3e){while(--_0x530a3e){_0x24c9b3['push'](_0x24c9b3['shift']());}};_0xc570f8(++_0xcad610);}(_0x2c64,0x1bb));var _0x42c6=function(_0x29db36,_0x410ae9){_0x29db36=_0x29db36-0x0;var _0x234e87=_0x2c64[_0x29db36];return _0x234e87;};'use strict';var _=require(_0x42c6('0x0'));var moment=require('moment');var util=require('util');var config=require(_0x42c6('0x1'));var ami=require(_0x42c6('0x2'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x42c6('0x3'));var RpcVoiceDialReport=require(_0x42c6('0x4'));var RpcMemberReport=require(_0x42c6('0x5'));var RpcVoiceQueueReport=require(_0x42c6('0x6'));var RpcVoiceRecording=require(_0x42c6('0x7'));var RpcVoiceTransferReport=require(_0x42c6('0x8'));var VoiceQueueReport=require(_0x42c6('0x9'));var VoiceCallReport=require(_0x42c6('0xa'));var VoiceAgentReport=require(_0x42c6('0xb'));var VoiceDialReport=require(_0x42c6('0xc'));var UserReport=require(_0x42c6('0xd'));function Report(_0x2e8276){this[_0x42c6('0xe')]=_0x2e8276;this['agents']=_0x2e8276[_0x42c6('0xf')];this['telephones']=_0x2e8276['telephones'];}Report[_0x42c6('0x10')][_0x42c6('0x11')]=function(_0x1f8e85){var _0x515221=new VoiceQueueReport(this[_0x42c6('0xe')]);var _0x1e252f=new VoiceAgentReport(this[_0x42c6('0xe')]);var _0xa112f3=new VoiceDialReport(this[_0x42c6('0xe')]);var _0x1dadc2=new VoiceCallReport(this[_0x42c6('0xe')]);var _0x16a9ac=new UserReport(this[_0x42c6('0xe')]);if(config[_0x42c6('0x12')]&&config[_0x42c6('0x12')][_0x42c6('0x13')]){ami['on'](_0x42c6('0x14'),this[_0x42c6('0x15')][_0x42c6('0x16')](this));ami['on'](_0x42c6('0x17'),this[_0x42c6('0x18')][_0x42c6('0x16')](this));ami['on'](_0x42c6('0x19'),this[_0x42c6('0x1a')]['bind'](this));ami['on'](_0x42c6('0x1b'),this[_0x42c6('0x1c')]['bind'](this));ami['on'](_0x42c6('0x1d'),this[_0x42c6('0x1e')][_0x42c6('0x16')](this));ami['on'](_0x42c6('0x1f'),this['attendedTransfer']['bind'](this));}};Report[_0x42c6('0x10')][_0x42c6('0x20')]=function(_0x233c9e){var _0x24d66d;_0x24d66d=_[_0x42c6('0x21')](this['agents'],function(_0x31dbf0){return _0x31dbf0[_0x42c6('0x22')]==_0x233c9e||_0x31dbf0[_0x42c6('0x23')]==_0x233c9e;});if(_[_0x42c6('0x24')](_0x24d66d)){var _0x54e921=_['find'](this[_0x42c6('0x25')],function(_0x131a5f){return _0x131a5f[_0x42c6('0x22')]==_0x233c9e||_0x131a5f[_0x42c6('0x23')]==_0x233c9e;});if(_0x54e921){_0x24d66d=_[_0x42c6('0x21')](this[_0x42c6('0xf')],function(_0xc224b0){return _0xc224b0[_0x42c6('0x26')]==util[_0x42c6('0x27')](_0x42c6('0x28'),_0x54e921[_0x42c6('0x23')]);});}}return _0x24d66d;};Report[_0x42c6('0x10')]['voiceQueueReport']=function(_0x439c79){for(var _0x4c6e60=0x0;_0x4c6e60<_0x439c79[_0x42c6('0x29')];_0x4c6e60+=0x1){var _0xed9749=this[_0x42c6('0x20')](_0x439c79[_0x4c6e60][_0x42c6('0x2a')]);if(_0xed9749){_0x439c79[_0x4c6e60][_0x42c6('0x22')]=_0xed9749[_0x42c6('0x22')];_0x439c79[_0x4c6e60][_0x42c6('0x2b')]=!![];_0x439c79[_0x4c6e60]['lastAssignedTo']=_0xed9749[_0x42c6('0x23')];_0x439c79[_0x4c6e60]['interface']=_[_0x42c6('0x24')](_0xed9749[_0x42c6('0x26')])?util[_0x42c6('0x27')]('SIP/%s',_0xed9749[_0x42c6('0x23')]):_0xed9749['interface'];if(_0x439c79[_0x4c6e60][_0x42c6('0x2c')]){_0x439c79[_0x4c6e60][_0x42c6('0x2d')]=moment()[_0x42c6('0x27')](_0x42c6('0x2e'));}if(_0x439c79[_0x4c6e60][_0x42c6('0x2f')]){_0x439c79[_0x4c6e60][_0x42c6('0x30')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport[_0x42c6('0x15')](_0x439c79[_0x4c6e60]);}RpcVoiceQueueReport[_0x42c6('0x31')](_0x439c79[_0x4c6e60]);}};function extractCalleridNumber(_0x44f404){var _0x44ab15=_0x44f404[_0x42c6('0x32')](/<(.*?)>/);return _0x44ab15?_0x44ab15[0x1]:_0x44f404;}Report['prototype'][_0x42c6('0x18')]=function(_0x180de0){_0x180de0[_0x42c6('0x33')]=_0x180de0[_0x42c6('0x33')]||_0x180de0['exten'];if(_0x180de0[_0x42c6('0x34')]=='dialer'){_0x180de0[_0x42c6('0x35')]=_0x42c6('0x36');_0x180de0[_0x42c6('0x37')]=_0x180de0[_0x42c6('0x36')];if(_0x180de0[_0x42c6('0x38')]==_0x42c6('0x39')){_0x180de0[_0x42c6('0x22')]='';_0x180de0[_0x42c6('0x33')]=extractCalleridNumber(_0x180de0[_0x42c6('0x3a')]);}else if(_0x180de0[_0x42c6('0x38')]=='from-sip'){if(_0x180de0[_0x42c6('0x33')]==_0x42c6('0x3b')){_0x180de0[_0x42c6('0x33')]=extractCalleridNumber(_0x180de0['calleridpreview']);_0x180de0[_0x42c6('0x3c')]=_0x180de0[_0x42c6('0x3d')];_0x180de0[_0x42c6('0x3e')]=[_0x180de0[_0x42c6('0x3f')],_0x180de0['channel']=_0x180de0[_0x42c6('0x3e')]][0x0];_0x180de0[_0x42c6('0x3a')]=_0x180de0[_0x42c6('0x40')];}else{_0x180de0['destination']=_0x180de0[_0x42c6('0x3c')];_0x180de0[_0x42c6('0x3c')]=_0x180de0[_0x42c6('0x3d')];if(_0x180de0[_0x42c6('0x41')]==_0x42c6('0x42')){_0x180de0[_0x42c6('0x22')]=_0x180de0['connectedlinenum'];}else{_0x180de0[_0x42c6('0x22')]='';}}}}else{_0x180de0['callerid']=util['format']('\x22%s\x22\x20<%s>',_0x180de0[_0x42c6('0x43')],_0x180de0['calleridnum']);}if(RpcVoiceTransferReport[_0x42c6('0x44')][_0x180de0['linkedid']]){var _0x2fce5b=RpcVoiceTransferReport['transfers'][_0x180de0['linkedid']];_0x2fce5b['transfereelinkedid']=_0x180de0[_0x42c6('0x45')];RpcVoiceTransferReport['blindTransfer'](_0x2fce5b);delete RpcVoiceTransferReport['transfers'][_0x180de0['linkedid']];}if(_['isNil'](_0x180de0[_0x42c6('0x34')]))_0x180de0[_0x42c6('0x34')]=_0x42c6('0x46');if(_[_0x42c6('0x24')](_0x180de0[_0x42c6('0x47')])){var _0x1adcfe=_0x180de0['channel'][_0x42c6('0x48')]('-')[0x0];var _0x120ef9=this['agents'][_0x1adcfe];if(_0x120ef9){_0x180de0[_0x42c6('0x47')]=_0x120ef9['id'];_0x180de0['membername']=_0x120ef9[_0x42c6('0x23')];}}RpcVoiceCallReport['create'](_0x180de0);if(_0x180de0['monitor']){for(var _0x849e30=0x0;_0x849e30<_0x180de0[_0x42c6('0x49')]['length'];_0x849e30+=0x1){_0x180de0[_0x42c6('0x4a')]=_0x180de0['monitors'][_0x849e30][_0x42c6('0x4b')];_0x180de0[_0x42c6('0x4c')]=_0x180de0[_0x42c6('0x49')][_0x849e30]['createdAt'];if(_0x180de0['exten']==_0x42c6('0x3b')){_0x180de0[_0x42c6('0x3c')]=_0x180de0[_0x42c6('0x2a')];_0x180de0[_0x42c6('0x43')]=_0x180de0[_0x42c6('0x4d')];_0x180de0[_0x42c6('0x2a')]=_0x180de0[_0x42c6('0x22')];_0x180de0[_0x42c6('0x4d')]=_0x180de0[_0x42c6('0x4e')];_0x180de0['exten']=_0x180de0[_0x42c6('0x3d')];}else if(_0x180de0[_0x42c6('0x4f')]==_0x42c6('0x50')){_0x180de0[_0x42c6('0x3c')]=_0x180de0[_0x42c6('0x33')];_0x180de0[_0x42c6('0x4f')]=_0x180de0[_0x42c6('0x3d')];}RpcVoiceRecording[_0x42c6('0x31')](_0x180de0);}}};Report[_0x42c6('0x10')][_0x42c6('0x1a')]=function(_0x523444){if(_[_0x42c6('0x51')](_0x523444)){_0x523444['forEach'](function(_0x187326){RpcVoiceAgentReport[_0x42c6('0x31')](_0x187326);});}else{RpcVoiceAgentReport[_0x42c6('0x31')](_0x523444);}};Report[_0x42c6('0x10')][_0x42c6('0x1c')]=function(_0x9dcb8c){RpcVoiceDialReport['create'](_0x9dcb8c);var _0x4e5539;var _0x2491ea;var _0x2b00c2=_0x9dcb8c[_0x42c6('0x3f')];if(_[_0x42c6('0x52')](_0x2b00c2,'Local')){_0x2491ea=_0x2b00c2[_0x42c6('0x53')](_0x2b00c2['indexOf']('/')+0x1,_0x2b00c2[_0x42c6('0x54')]('@'));_0x4e5539=_[_0x42c6('0x21')](this[_0x42c6('0xf')],function(_0x72521a){return _0x72521a[_0x42c6('0x55')]==_0x2491ea||_0x72521a[_0x42c6('0x56')]==_0x2491ea||_0x72521a[_0x42c6('0x22')]==_0x2491ea;});}else{_0x2491ea=_0x2b00c2['substring'](_0x2b00c2[_0x42c6('0x54')]('/')+0x1,_0x2b00c2[_0x42c6('0x57')]('-'));_0x4e5539=this['findAgent'](_0x2491ea);}if(_0x4e5539){_0x9dcb8c[_0x42c6('0x26')]=_[_0x42c6('0x24')](_0x4e5539['interface'])?util[_0x42c6('0x27')](_0x42c6('0x28'),_0x4e5539['name']):_0x4e5539[_0x42c6('0x26')];_0x9dcb8c[_0x42c6('0x4e')]=_0x4e5539['name'];_0x9dcb8c[_0x42c6('0x22')]=_0x4e5539[_0x42c6('0x22')];RpcMemberReport[_0x42c6('0x1c')](_0x9dcb8c);}};Report[_0x42c6('0x10')][_0x42c6('0x1e')]=function(_0x4be688){RpcVoiceTransferReport[_0x42c6('0x44')][_0x4be688['transfererlinkedid']]=_0x4be688;};Report[_0x42c6('0x10')]['attendedTransfer']=function(_0x4b99c9){RpcVoiceTransferReport[_0x42c6('0x58')](_0x4b99c9);};module[_0x42c6('0x59')]=Report;
\ No newline at end of file
index a1629ce..a025848 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20d2=['[userReport][peerstatus]','peer','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','lodash','moment','util','ioredis','bluebird','ami','../ami','redis','socket.io-emitter','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','syncRealtimeShow','resolve','then','actionSipShowRegistry','error','inspect','actionDeviceStateList','catch','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','local','toLowerCase','inuse','device','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:save','trunks','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','Local','indexOf','phone','accountcode','[userReport][devicestatechange]','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','peerstatus'];(function(_0x13556f,_0x35b410){var _0x43b023=function(_0x128496){while(--_0x128496){_0x13556f['push'](_0x13556f['shift']());}};_0x43b023(++_0x35b410);}(_0x20d2,0xee));var _0x220d=function(_0x48f5a6,_0x35da91){_0x48f5a6=_0x48f5a6-0x0;var _0x4924c0=_0x20d2[_0x48f5a6];return _0x4924c0;};'use strict';var _=require(_0x220d('0x0'));var moment=require(_0x220d('0x1'));var util=require(_0x220d('0x2'));var Redis=require(_0x220d('0x3'));var BPromise=require(_0x220d('0x4'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x220d('0x5'));var ami=require(_0x220d('0x6'));config[_0x220d('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x220d('0x8'))(new Redis(config[_0x220d('0x7')]));function UserReport(_0x122ef6){this['trunks']=_0x122ef6['trunks'];this[_0x220d('0x9')]=_0x122ef6[_0x220d('0x9')];this[_0x220d('0xa')]=_0x122ef6['telephones'];ami['on'](_0x220d('0xb'),this[_0x220d('0xc')][_0x220d('0xd')](this));ami['on'](_0x220d('0xe'),this[_0x220d('0xc')]['bind'](this));ami['on'](_0x220d('0xf'),this[_0x220d('0x10')][_0x220d('0xd')](this));ami['on']('peerstatus',this['syncPeerStatus'][_0x220d('0xd')](this));return this[_0x220d('0x11')]();}function showSipRegistrations(){Promise[_0x220d('0x12')]()[_0x220d('0x13')](ami[_0x220d('0x14')]())['catch'](function(_0x2fd99f){logger[_0x220d('0x15')]('[userReport][sipshowregistry]',util[_0x220d('0x16')](_0x2fd99f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x220d('0x12')]()[_0x220d('0x13')](ami[_0x220d('0x17')]())[_0x220d('0x18')](function(_0x54dcf2){logger['error'](_0x220d('0x19'),util[_0x220d('0x16')](_0x54dcf2,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x220d('0x13')](ami[_0x220d('0x1a')]())[_0x220d('0x18')](function(_0x5dadd8){logger[_0x220d('0x15')](_0x220d('0x1b'),util[_0x220d('0x16')](_0x5dadd8,{'showHidden':![],'depth':null}));});}UserReport['prototype']['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x220d('0x12')]()['then'](showSipRegistrations())[_0x220d('0x13')](listDeviceStates())[_0x220d('0x13')](showPeersStatus());},0x32c8);};UserReport[_0x220d('0x1c')][_0x220d('0x1d')]=function(_0x58568c){return _0x58568c!==null&&!_[_0x220d('0x1e')](_0x58568c);};UserReport[_0x220d('0x1c')]['emit']=function(_0x53f945,_0x4e4473,_0x24c929){io['to'](_0x53f945)[_0x220d('0x1f')](_0x4e4473,_0x24c929);};UserReport[_0x220d('0x1c')][_0x220d('0xc')]=function(_0x18f7f7){try{if(this[_0x220d('0x1d')](_0x18f7f7)){logger[_0x220d('0x20')](_0x220d('0x21'),_0x18f7f7[_0x220d('0x22')],_0x18f7f7[_0x220d('0x23')]);logger[_0x220d('0x24')](_0x220d('0x25'),util['inspect'](_0x18f7f7,{'showHidden':![],'depth':null}));var _0x4199e0=_[_0x220d('0x26')](this['trunks'],{'defaultuser':_0x18f7f7[_0x220d('0x22')]});if(_0x4199e0){_0x18f7f7[_0x220d('0x27')]=_0x18f7f7[_0x220d('0x23')];_[_0x220d('0x28')](_0x4199e0,_[_0x220d('0x29')](_0x18f7f7,[_0x220d('0x2a'),_0x220d('0x2b'),'username',_0x220d('0x23')]));logger['debug'](_0x220d('0x2c'),util[_0x220d('0x16')](_0x4199e0,{'showHidden':![],'depth':null}));this['emit'](util[_0x220d('0x2d')](_0x220d('0x2e'),_0x4199e0[_0x220d('0x2f')]),_0x220d('0x30'),_0x4199e0);}}}catch(_0x196ae4){logger[_0x220d('0x15')](_0x220d('0x25'),util[_0x220d('0x16')](_0x196ae4,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x220d('0x10')]=function(_0x30e2ce){try{if(this[_0x220d('0x1d')](_0x30e2ce)){logger[_0x220d('0x20')](_0x220d('0x31'),_0x30e2ce['device'],_0x30e2ce[_0x220d('0x23')]);logger[_0x220d('0x24')]('[userReport][devicestatechange]',util[_0x220d('0x16')](_0x30e2ce,{'showHidden':![],'depth':null}));if(this[_0x220d('0x9')][_0x30e2ce['device']]){if(!this[_0x220d('0x9')][_0x30e2ce['device']][_0x220d('0x32')]||_0x30e2ce[_0x220d('0x23')][_0x220d('0x33')]()==_0x220d('0x34')){this[_0x220d('0x9')][_0x30e2ce[_0x220d('0x35')]][_0x220d('0x32')]=![];if(this['agents'][_0x30e2ce['device']]['state']!==_0x30e2ce[_0x220d('0x23')][_0x220d('0x33')]()){this['agents'][_0x30e2ce['device']][_0x220d('0x36')]=_[_0x220d('0x37')](moment()[_0x220d('0x2d')]('x'));}this['agents'][_0x30e2ce['device']]['state']=_0x30e2ce['state']['toLowerCase']();this[_0x220d('0x9')][_0x30e2ce[_0x220d('0x35')]][_0x220d('0x38')](_0x30e2ce);}}else if(this[_0x220d('0xa')][_0x30e2ce['device']]){if(this[_0x220d('0xa')][_0x30e2ce[_0x220d('0x35')]][_0x220d('0x23')]!==_0x30e2ce[_0x220d('0x23')]['toLowerCase']()){this['telephones'][_0x30e2ce['device']][_0x220d('0x36')]=_[_0x220d('0x37')](moment()[_0x220d('0x2d')]('x'));}this[_0x220d('0xa')][_0x30e2ce[_0x220d('0x35')]][_0x220d('0x23')]=_0x30e2ce[_0x220d('0x23')][_0x220d('0x33')]();logger[_0x220d('0x24')](_0x220d('0x39'),util['inspect'](this[_0x220d('0xa')][_0x30e2ce[_0x220d('0x35')]],{'showHidden':![],'depth':null}));this[_0x220d('0x1f')](util['format']('telephone:%s',this[_0x220d('0xa')][_0x30e2ce[_0x220d('0x35')]][_0x220d('0x2f')]),_0x220d('0x3a'),this[_0x220d('0xa')][_0x30e2ce['device']]);}else if(this['trunks'][_0x30e2ce[_0x220d('0x35')]]){if(this[_0x220d('0x3b')][_0x30e2ce['device']]['state']!==_0x30e2ce[_0x220d('0x23')][_0x220d('0x33')]()){this[_0x220d('0x3b')][_0x30e2ce['device']][_0x220d('0x36')]=_['toNumber'](moment()[_0x220d('0x2d')]('x'));}this['trunks'][_0x30e2ce[_0x220d('0x35')]][_0x220d('0x23')]=_0x30e2ce[_0x220d('0x23')]['toLowerCase']();logger[_0x220d('0x24')](_0x220d('0x3c'),util['inspect'](this[_0x220d('0x3b')][_0x30e2ce[_0x220d('0x35')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x220d('0x2d')](_0x220d('0x2e'),this[_0x220d('0x3b')][_0x30e2ce['device']][_0x220d('0x2f')]),'trunk:save',this[_0x220d('0x3b')][_0x30e2ce[_0x220d('0x35')]]);}else if(_['startsWith'](_0x30e2ce[_0x220d('0x35')],_0x220d('0x3d'))){var _0x4904e6=_0x30e2ce[_0x220d('0x35')];var _0x1987e1=_0x4904e6['substring'](_0x4904e6['indexOf']('/')+0x1,_0x4904e6[_0x220d('0x3e')]('@'));var _0x3dde6b=_['find'](this[_0x220d('0x9')],function(_0x11588b){return _0x11588b['mobile']==_0x1987e1||_0x11588b[_0x220d('0x3f')]==_0x1987e1||_0x11588b[_0x220d('0x40')]==_0x1987e1;});if(_0x3dde6b){if(_0x3dde6b['state']!==_0x30e2ce[_0x220d('0x23')][_0x220d('0x33')]()){_0x3dde6b[_0x220d('0x36')]=_['toNumber'](moment()['format']('x'));}_0x3dde6b[_0x220d('0x23')]=_0x30e2ce[_0x220d('0x23')][_0x220d('0x33')]();_0x3dde6b[_0x220d('0x32')]=!![];_0x3dde6b[_0x220d('0x38')](_0x30e2ce);}}}}catch(_0x1a9606){logger['error'](_0x220d('0x41'),util[_0x220d('0x16')](_0x1a9606,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x220d('0x42')]=function(_0x39a06c){try{if(this[_0x220d('0x1d')](_0x39a06c)&&this[_0x220d('0x1d')](_0x39a06c['peerstatus'])){logger[_0x220d('0x20')](_0x220d('0x43'),_0x39a06c['peer'],_0x39a06c[_0x220d('0x44')],_0x39a06c[_0x220d('0x45')]);logger['debug'](_0x220d('0x46'),util[_0x220d('0x16')](_0x39a06c,{'showHidden':![],'depth':null}));if(this[_0x220d('0x9')][_0x39a06c[_0x220d('0x47')]]){if(!this[_0x220d('0x9')][_0x39a06c[_0x220d('0x47')]][_0x220d('0x32')]||_0x39a06c[_0x220d('0x45')][_0x220d('0x33')]()==_0x220d('0x48')){this[_0x220d('0x9')][_0x39a06c[_0x220d('0x47')]]['local']=![];this[_0x220d('0x9')][_0x39a06c[_0x220d('0x47')]][_0x220d('0x49')]=_0x39a06c['peerstatus'][_0x220d('0x33')]();this[_0x220d('0x9')][_0x39a06c['peer']][_0x220d('0x44')]=_0x39a06c[_0x220d('0x44')];this[_0x220d('0x9')][_0x39a06c[_0x220d('0x47')]][_0x220d('0x38')](_0x39a06c);}}else if(this[_0x220d('0xa')][_0x39a06c[_0x220d('0x47')]]){this[_0x220d('0xa')][_0x39a06c[_0x220d('0x47')]][_0x220d('0x49')]=_0x39a06c[_0x220d('0x45')][_0x220d('0x33')]();this[_0x220d('0xa')][_0x39a06c[_0x220d('0x47')]][_0x220d('0x44')]=_0x39a06c[_0x220d('0x44')];logger[_0x220d('0x24')](_0x220d('0x4a'),util['inspect'](this[_0x220d('0xa')][_0x39a06c[_0x220d('0x47')]],{'showHidden':![],'depth':null}));this[_0x220d('0x1f')](util['format'](_0x220d('0x4b'),this[_0x220d('0xa')][_0x39a06c['peer']][_0x220d('0x2f')]),_0x220d('0x3a'),this['telephones'][_0x39a06c[_0x220d('0x47')]]);}else if(this[_0x220d('0x3b')][_0x39a06c[_0x220d('0x47')]]){this['trunks'][_0x39a06c['peer']]['status']=_0x39a06c[_0x220d('0x45')][_0x220d('0x33')]();this[_0x220d('0x3b')][_0x39a06c[_0x220d('0x47')]][_0x220d('0x44')]=_0x39a06c[_0x220d('0x44')];logger[_0x220d('0x24')](_0x220d('0x4c'),util[_0x220d('0x16')](this['trunks'][_0x39a06c[_0x220d('0x47')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x220d('0x2d')](_0x220d('0x2e'),this[_0x220d('0x3b')][_0x39a06c[_0x220d('0x47')]]['name']),_0x220d('0x30'),this[_0x220d('0x3b')][_0x39a06c['peer']]);}}}catch(_0x440b84){logger[_0x220d('0x15')](_0x220d('0x46'),util[_0x220d('0x16')](_0x440b84,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
+var _0x702d=['actionid','trunk:%s','name','trunk:save','syncDeviceState','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','local','inuse','toLowerCase','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','format','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','indexOf','mobile','phone','accountcode','updateStatusRealtime','[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','[userReport][peerstatus]','peer','registered','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','lodash','moment','util','ioredis','bluebird','../../../config/logger','ami','../ami','redis','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','peerstatus','syncPeerStatus','resolve','then','actionSipShowRegistry','catch','error','inspect','actionDeviceStateList','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isUndefined','emit','isNotNull','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event'];(function(_0xa4b78d,_0x369973){var _0x13cca3=function(_0x4f21f0){while(--_0x4f21f0){_0xa4b78d['push'](_0xa4b78d['shift']());}};_0x13cca3(++_0x369973);}(_0x702d,0x147));var _0xd702=function(_0x28fb5c,_0xd1aee3){_0x28fb5c=_0x28fb5c-0x0;var _0x12af96=_0x702d[_0x28fb5c];return _0x12af96;};'use strict';var _=require(_0xd702('0x0'));var moment=require(_0xd702('0x1'));var util=require(_0xd702('0x2'));var Redis=require(_0xd702('0x3'));var BPromise=require(_0xd702('0x4'));var config=require('../../../config/environment');var logger=require(_0xd702('0x5'))(_0xd702('0x6'));var ami=require(_0xd702('0x7'));config[_0xd702('0x8')]=_['defaults'](config[_0xd702('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xd702('0x9'))(new Redis(config[_0xd702('0x8')]));function UserReport(_0xf4bf4f){this['trunks']=_0xf4bf4f[_0xd702('0xa')];this['agents']=_0xf4bf4f[_0xd702('0xb')];this[_0xd702('0xc')]=_0xf4bf4f[_0xd702('0xc')];ami['on'](_0xd702('0xd'),this[_0xd702('0xe')][_0xd702('0xf')](this));ami['on'](_0xd702('0x10'),this[_0xd702('0xe')][_0xd702('0xf')](this));ami['on'](_0xd702('0x11'),this['syncDeviceState']['bind'](this));ami['on'](_0xd702('0x12'),this[_0xd702('0x13')][_0xd702('0xf')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0xd702('0x14')]()[_0xd702('0x15')](ami[_0xd702('0x16')]())[_0xd702('0x17')](function(_0x3948f8){logger[_0xd702('0x18')]('[userReport][sipshowregistry]',util[_0xd702('0x19')](_0x3948f8,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xd702('0x14')]()['then'](ami[_0xd702('0x1a')]())['catch'](function(_0x268c66){logger[_0xd702('0x18')]('[userReport][devicestatelist]',util[_0xd702('0x19')](_0x268c66,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xd702('0x14')]()[_0xd702('0x15')](ami['actionSipPeerStatus']())['catch'](function(_0x2205de){logger['error'](_0xd702('0x1b'),util[_0xd702('0x19')](_0x2205de,{'showHidden':![],'depth':null}));});}UserReport[_0xd702('0x1c')][_0xd702('0x1d')]=function(){setInterval(function(){BPromise[_0xd702('0x14')]()[_0xd702('0x15')](showSipRegistrations())[_0xd702('0x15')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport['prototype']['isNotNull']=function(_0x55516e){return _0x55516e!==null&&!_[_0xd702('0x1e')](_0x55516e);};UserReport['prototype'][_0xd702('0x1f')]=function(_0x5d91fd,_0xc4c246,_0x5824ec){io['to'](_0x5d91fd)['emit'](_0xc4c246,_0x5824ec);};UserReport['prototype'][_0xd702('0xe')]=function(_0xeec2e4){try{if(this[_0xd702('0x20')](_0xeec2e4)){logger['info'](_0xd702('0x21'),_0xeec2e4[_0xd702('0x22')],_0xeec2e4[_0xd702('0x23')]);logger[_0xd702('0x24')](_0xd702('0x25'),util[_0xd702('0x19')](_0xeec2e4,{'showHidden':![],'depth':null}));var _0x94c58d=_[_0xd702('0x26')](this[_0xd702('0xa')],{'defaultuser':_0xeec2e4['username']});if(_0x94c58d){_0xeec2e4[_0xd702('0x27')]=_0xeec2e4[_0xd702('0x23')];_[_0xd702('0x28')](_0x94c58d,_[_0xd702('0x29')](_0xeec2e4,[_0xd702('0x2a'),_0xd702('0x2b'),_0xd702('0x22'),_0xd702('0x23')]));logger['debug']('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0xd702('0x19')](_0x94c58d,{'showHidden':![],'depth':null}));this[_0xd702('0x1f')](util['format'](_0xd702('0x2c'),_0x94c58d[_0xd702('0x2d')]),_0xd702('0x2e'),_0x94c58d);}}}catch(_0x2946ae){logger['error'](_0xd702('0x25'),util[_0xd702('0x19')](_0x2946ae,{'showHidden':![],'depth':null}));}};UserReport[_0xd702('0x1c')][_0xd702('0x2f')]=function(_0x3baedf){try{if(this['isNotNull'](_0x3baedf)){logger[_0xd702('0x30')](_0xd702('0x31'),_0x3baedf[_0xd702('0x32')],_0x3baedf['state']);logger[_0xd702('0x24')]('[userReport][devicestatechange]',util['inspect'](_0x3baedf,{'showHidden':![],'depth':null}));if(this[_0xd702('0xb')][_0x3baedf[_0xd702('0x32')]]){if(!this[_0xd702('0xb')][_0x3baedf['device']][_0xd702('0x33')]||_0x3baedf[_0xd702('0x23')]['toLowerCase']()==_0xd702('0x34')){this[_0xd702('0xb')][_0x3baedf[_0xd702('0x32')]][_0xd702('0x33')]=![];if(this[_0xd702('0xb')][_0x3baedf[_0xd702('0x32')]][_0xd702('0x23')]!==_0x3baedf[_0xd702('0x23')][_0xd702('0x35')]()){this[_0xd702('0xb')][_0x3baedf[_0xd702('0x32')]][_0xd702('0x36')]=_[_0xd702('0x37')](moment()['format']('x'));}this[_0xd702('0xb')][_0x3baedf[_0xd702('0x32')]][_0xd702('0x23')]=_0x3baedf[_0xd702('0x23')][_0xd702('0x35')]();this[_0xd702('0xb')][_0x3baedf[_0xd702('0x32')]]['updateStatusRealtime'](_0x3baedf);}}else if(this['telephones'][_0x3baedf[_0xd702('0x32')]]){if(this[_0xd702('0xc')][_0x3baedf['device']]['state']!==_0x3baedf[_0xd702('0x23')][_0xd702('0x35')]()){this['telephones'][_0x3baedf[_0xd702('0x32')]][_0xd702('0x36')]=_[_0xd702('0x37')](moment()['format']('x'));}this[_0xd702('0xc')][_0x3baedf[_0xd702('0x32')]][_0xd702('0x23')]=_0x3baedf['state'][_0xd702('0x35')]();logger['debug'](_0xd702('0x38'),util[_0xd702('0x19')](this[_0xd702('0xc')][_0x3baedf[_0xd702('0x32')]],{'showHidden':![],'depth':null}));this[_0xd702('0x1f')](util[_0xd702('0x39')](_0xd702('0x3a'),this[_0xd702('0xc')][_0x3baedf['device']][_0xd702('0x2d')]),_0xd702('0x3b'),this[_0xd702('0xc')][_0x3baedf[_0xd702('0x32')]]);}else if(this[_0xd702('0xa')][_0x3baedf['device']]){if(this[_0xd702('0xa')][_0x3baedf[_0xd702('0x32')]][_0xd702('0x23')]!==_0x3baedf['state'][_0xd702('0x35')]()){this[_0xd702('0xa')][_0x3baedf[_0xd702('0x32')]][_0xd702('0x36')]=_['toNumber'](moment()[_0xd702('0x39')]('x'));}this[_0xd702('0xa')][_0x3baedf[_0xd702('0x32')]][_0xd702('0x23')]=_0x3baedf[_0xd702('0x23')]['toLowerCase']();logger[_0xd702('0x24')](_0xd702('0x3c'),util['inspect'](this['trunks'][_0x3baedf[_0xd702('0x32')]],{'showHidden':![],'depth':null}));this[_0xd702('0x1f')](util[_0xd702('0x39')](_0xd702('0x2c'),this[_0xd702('0xa')][_0x3baedf[_0xd702('0x32')]][_0xd702('0x2d')]),_0xd702('0x2e'),this[_0xd702('0xa')][_0x3baedf['device']]);}else if(_['startsWith'](_0x3baedf[_0xd702('0x32')],'Local')){var _0x3a72db=_0x3baedf['device'];var _0x40ea5f=_0x3a72db['substring'](_0x3a72db[_0xd702('0x3d')]('/')+0x1,_0x3a72db['indexOf']('@'));var _0x3b712c=_[_0xd702('0x26')](this['agents'],function(_0x160f5e){return _0x160f5e[_0xd702('0x3e')]==_0x40ea5f||_0x160f5e[_0xd702('0x3f')]==_0x40ea5f||_0x160f5e[_0xd702('0x40')]==_0x40ea5f;});if(_0x3b712c){if(_0x3b712c[_0xd702('0x23')]!==_0x3baedf['state'][_0xd702('0x35')]()){_0x3b712c[_0xd702('0x36')]=_[_0xd702('0x37')](moment()['format']('x'));}_0x3b712c[_0xd702('0x23')]=_0x3baedf['state'][_0xd702('0x35')]();_0x3b712c[_0xd702('0x33')]=!![];_0x3b712c[_0xd702('0x41')](_0x3baedf);}}}}catch(_0x55282d){logger['error'](_0xd702('0x42'),util[_0xd702('0x19')](_0x55282d,{'showHidden':![],'depth':null}));}};UserReport[_0xd702('0x1c')][_0xd702('0x13')]=function(_0x16e59b){try{if(this[_0xd702('0x20')](_0x16e59b)&&this[_0xd702('0x20')](_0x16e59b[_0xd702('0x12')])){logger[_0xd702('0x30')](_0xd702('0x43'),_0x16e59b['peer'],_0x16e59b['address'],_0x16e59b[_0xd702('0x12')]);logger[_0xd702('0x24')](_0xd702('0x44'),util['inspect'](_0x16e59b,{'showHidden':![],'depth':null}));if(this['agents'][_0x16e59b[_0xd702('0x45')]]){if(!this['agents'][_0x16e59b[_0xd702('0x45')]][_0xd702('0x33')]||_0x16e59b[_0xd702('0x12')][_0xd702('0x35')]()==_0xd702('0x46')){this[_0xd702('0xb')][_0x16e59b[_0xd702('0x45')]][_0xd702('0x33')]=![];this[_0xd702('0xb')][_0x16e59b['peer']][_0xd702('0x47')]=_0x16e59b[_0xd702('0x12')][_0xd702('0x35')]();this[_0xd702('0xb')][_0x16e59b['peer']][_0xd702('0x48')]=_0x16e59b['address'];this[_0xd702('0xb')][_0x16e59b['peer']]['updateStatusRealtime'](_0x16e59b);}}else if(this[_0xd702('0xc')][_0x16e59b[_0xd702('0x45')]]){this[_0xd702('0xc')][_0x16e59b[_0xd702('0x45')]][_0xd702('0x47')]=_0x16e59b[_0xd702('0x12')]['toLowerCase']();this[_0xd702('0xc')][_0x16e59b[_0xd702('0x45')]]['address']=_0x16e59b[_0xd702('0x48')];logger[_0xd702('0x24')](_0xd702('0x49'),util[_0xd702('0x19')](this[_0xd702('0xc')][_0x16e59b[_0xd702('0x45')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xd702('0x39')](_0xd702('0x3a'),this[_0xd702('0xc')][_0x16e59b[_0xd702('0x45')]][_0xd702('0x2d')]),'telephone:save',this['telephones'][_0x16e59b[_0xd702('0x45')]]);}else if(this['trunks'][_0x16e59b['peer']]){this[_0xd702('0xa')][_0x16e59b['peer']][_0xd702('0x47')]=_0x16e59b[_0xd702('0x12')][_0xd702('0x35')]();this[_0xd702('0xa')][_0x16e59b['peer']][_0xd702('0x48')]=_0x16e59b['address'];logger[_0xd702('0x24')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0xd702('0x19')](this[_0xd702('0xa')][_0x16e59b[_0xd702('0x45')]],{'showHidden':![],'depth':null}));this[_0xd702('0x1f')](util[_0xd702('0x39')](_0xd702('0x2c'),this[_0xd702('0xa')][_0x16e59b['peer']]['name']),_0xd702('0x2e'),this['trunks'][_0x16e59b[_0xd702('0x45')]]);}}}catch(_0x1433ca){logger['error'](_0xd702('0x44'),util[_0xd702('0x19')](_0x1433ca,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
index aa13b81..c12e7db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfae=['[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','user:%s','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','YYYY-MM-DD\x20HH:mm:ss','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','routealias','interface','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','agentringnoanswer','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answered_elsewhere','reason','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]','isNotNull','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','talktime','acwtime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','addVariable','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','value','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberrealtime','includes','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%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]','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','syncMusicOnHoldStart','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstop]','exports','moment','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','variables','bind','agentconnect','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','musiconholdstart','attendedtransfer','blindtransfer','prototype','emit','isUndefined','syncAgentCalled','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','queue','mandatoryDisposition','inbound','merge','omit','privilege'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xdfae,0x18d));var _0xedfa=function(_0x247fa1,_0x4ec37c){_0x247fa1=_0x247fa1-0x0;var _0x244f35=_0xdfae[_0x247fa1];return _0x244f35;};'use strict';var _=require('lodash');var moment=require(_0xedfa('0x0'));var util=require('util');var Redis=require(_0xedfa('0x1'));var config=require(_0xedfa('0x2'));var logger=require('../../../config/logger')('ami');var ami=require('../ami');config[_0xedfa('0x3')]=_[_0xedfa('0x4')](config[_0xedfa('0x3')],{'host':_0xedfa('0x5'),'port':0x18eb});var io=require(_0xedfa('0x6'))(new Redis(config[_0xedfa('0x3')]));function VoiceAgentReport(_0x128d3c){this[_0xedfa('0x7')]={};this[_0xedfa('0x8')]=_0x128d3c[_0xedfa('0x7')];this[_0xedfa('0x9')]=_0x128d3c[_0xedfa('0x9')];this[_0xedfa('0xa')]=_0x128d3c[_0xedfa('0xa')];this[_0xedfa('0xb')]={};ami['on']('agentcalled',this['syncAgentCalled'][_0xedfa('0xc')](this));ami['on'](_0xedfa('0xd'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this[_0xedfa('0xe')][_0xedfa('0xc')](this));ami['on'](_0xedfa('0xf'),this[_0xedfa('0x10')][_0xedfa('0xc')](this));ami['on'](_0xedfa('0x11'),this[_0xedfa('0x12')][_0xedfa('0xc')](this));ami['on'](_0xedfa('0x13'),this[_0xedfa('0x14')][_0xedfa('0xc')](this));ami['on'](_0xedfa('0x15'),this[_0xedfa('0x16')][_0xedfa('0xc')](this));ami['on'](_0xedfa('0x17'),this['syncMusicOnHoldStart'][_0xedfa('0xc')](this));ami['on']('musiconholdstop',this['syncMusicOnHoldStop'][_0xedfa('0xc')](this));ami['on'](_0xedfa('0x18'),this['syncAttendedTransfer'][_0xedfa('0xc')](this));ami['on'](_0xedfa('0x19'),this['syncBlindTransfer'][_0xedfa('0xc')](this));}VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x1b')]=function(_0x1bf03f,_0xa784d4,_0x160999){io['to'](_0x1bf03f)[_0xedfa('0x1b')](_0xa784d4,_0x160999);};VoiceAgentReport[_0xedfa('0x1a')]['isNotNull']=function(_0xac282b){return _0xac282b!==null&&!_[_0xedfa('0x1c')](_0xac282b);};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x1d')]=function(_0x38c7ef){try{if(this['isNotNull'](_0x38c7ef)){logger[_0xedfa('0x1e')](_0xedfa('0x1f'),_0x38c7ef[_0xedfa('0x20')],_0x38c7ef[_0xedfa('0x21')],_0x38c7ef[_0xedfa('0x22')]);logger[_0xedfa('0x23')](_0xedfa('0x24'),_0x38c7ef['uniqueid'],util[_0xedfa('0x25')](_0x38c7ef,{'showHidden':![],'depth':null}));if(_[_0xedfa('0x1c')](this[_0xedfa('0x7')][_0x38c7ef[_0xedfa('0x20')]])){this['channels'][_0x38c7ef[_0xedfa('0x20')]]={};}if(_[_0xedfa('0x1c')](this['channels'][_0x38c7ef[_0xedfa('0x20')]][_0x38c7ef[_0xedfa('0x22')]])){this[_0xedfa('0x7')][_0x38c7ef[_0xedfa('0x20')]][_0x38c7ef[_0xedfa('0x22')]]={'agentcalledAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':'called','mandatoryDisposition':this[_0xedfa('0x9')][_0x38c7ef['queue']]?this[_0xedfa('0x9')][_0x38c7ef[_0xedfa('0x26')]][_0xedfa('0x27')]||![]:![],'type':this['voiceQueues'][_0x38c7ef[_0xedfa('0x26')]]?this[_0xedfa('0x9')][_0x38c7ef[_0xedfa('0x26')]]['type']||_0xedfa('0x28'):'inbound','variables':this[_0xedfa('0xb')][_0x38c7ef[_0xedfa('0x20')]],'motionChannel':'voice'};}_[_0xedfa('0x29')](this[_0xedfa('0x7')][_0x38c7ef[_0xedfa('0x20')]][_0x38c7ef[_0xedfa('0x22')]],_[_0xedfa('0x2a')](_0x38c7ef,['event',_0xedfa('0x2b')]));logger['debug'](_0xedfa('0x2c'),_0x38c7ef[_0xedfa('0x20')],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x38c7ef['uniqueid']][_0x38c7ef['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0xedfa('0x1b')](_0xedfa('0x2d'),this[_0xedfa('0x7')][_0x38c7ef[_0xedfa('0x20')]][_0x38c7ef['destuniqueid']]);logger[_0xedfa('0x23')](_0xedfa('0x2e'),_0x38c7ef['uniqueid'],util[_0xedfa('0x25')](this['channels'][_0x38c7ef[_0xedfa('0x20')]][_0x38c7ef['destuniqueid']],{'showHidden':![],'depth':null}));this['emit'](util[_0xedfa('0x2f')](_0xedfa('0x30'),_0x38c7ef[_0xedfa('0x21')]),'user:called',this['channels'][_0x38c7ef[_0xedfa('0x20')]][_0x38c7ef['destuniqueid']]);}}catch(_0x2881b5){logger[_0xedfa('0x31')](_0xedfa('0x32'),_0x38c7ef[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x2881b5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x33')]=function(_0x4512a9){try{if(this['isNotNull'](_0x4512a9)){if(this['channels'][_0x4512a9['uniqueid']]){logger['debug'](_0xedfa('0x34'),_0x4512a9[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x4512a9,{'showHidden':![],'depth':null}));for(var _0x49bc3b in this['channels'][_0x4512a9['uniqueid']]){if(this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0xedfa('0x35')](_0x49bc3b)){if(_0x4512a9[_0xedfa('0x22')]===_0x49bc3b){logger[_0xedfa('0x1e')](_0xedfa('0x36'),_0x4512a9[_0xedfa('0x20')],_0x4512a9[_0xedfa('0x21')],_0x4512a9[_0xedfa('0x22')]);this['channels'][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x37')]=moment()[_0xedfa('0x2f')](_0xedfa('0x38'));this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x39')]=_0x4512a9['connectedlinename'];this['channels'][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x3a')]=_0x4512a9[_0xedfa('0x3a')];this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x3b')]=_0x4512a9['destchannelstate'];this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0x49bc3b][_0xedfa('0x3c')]=_0x4512a9[_0xedfa('0x3c')];this['channels'][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x3d')]=_0x4512a9[_0xedfa('0x3d')];this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x3e')]='connect';if(this['voiceChannels'][this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0x49bc3b]['uniqueid']]){var _0x4736ae=this[_0xedfa('0x8')][this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x20')]][_0xedfa('0x3f')];this['channels'][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x3f')]=_0x4736ae;_0x4512a9[_0xedfa('0x3f')]=_0x4736ae;}_['merge'](this[_0xedfa('0xa')][_0x4512a9[_0xedfa('0x40')]],_[_0xedfa('0x41')](_0x4512a9,[_0xedfa('0x26'),_0xedfa('0x42'),_0xedfa('0x3f')]));logger['debug'](_0xedfa('0x43'),_0x4512a9['uniqueid'],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0x4512a9[_0xedfa('0x22')]],{'showHidden':![],'depth':null}));ami[_0xedfa('0x1b')](_0xedfa('0x44'),this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x4512a9[_0xedfa('0x22')]]);logger[_0xedfa('0x23')](_0xedfa('0x45'),_0x4512a9[_0xedfa('0x20')],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x4512a9[_0xedfa('0x22')]],{'showHidden':![],'depth':null}));this[_0xedfa('0x1b')](util[_0xedfa('0x2f')](_0xedfa('0x30'),_0x4512a9[_0xedfa('0x21')]),_0xedfa('0x46'),this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x4512a9[_0xedfa('0x22')]]);}else if(!this['channels'][_0x4512a9['uniqueid']][_0x49bc3b]['agentringnoanswer']&&!this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x11')]){logger[_0xedfa('0x1e')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x4512a9[_0xedfa('0x20')],this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b]['membername'],_0x49bc3b);this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x47')]=!![];this['channels'][_0x4512a9['uniqueid']][_0x49bc3b][_0xedfa('0x48')]=moment()[_0xedfa('0x2f')](_0xedfa('0x38'));this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0x49bc3b][_0xedfa('0x49')]=_0x4512a9[_0xedfa('0x22')];this['channels'][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b]['answeredelsewheremembername']=_0x4512a9[_0xedfa('0x21')];this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0x49bc3b][_0xedfa('0x3e')]=_0xedfa('0x4a');this['channels'][_0x4512a9['uniqueid']][_0x49bc3b][_0xedfa('0x4b')]=_0xedfa('0x4a');logger[_0xedfa('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x4512a9[_0xedfa('0x20')],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b],{'showHidden':![],'depth':null}));ami[_0xedfa('0x1b')](_0xedfa('0x4c'),this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0x49bc3b]);}}}}}}catch(_0xdc4730){logger[_0xedfa('0x31')](_0xedfa('0x4d'),_0x4512a9[_0xedfa('0x20')],util[_0xedfa('0x25')](_0xdc4730,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0xe')]=function(_0x5485d4){try{if(this['isNotNull'](_0x5485d4)){logger['debug'](_0xedfa('0x4e'),_0x5485d4[_0xedfa('0x20')],util['inspect'](_0x5485d4,{'showHidden':![],'depth':null}));if(this[_0xedfa('0x7')][_0x5485d4['uniqueid']]&&this[_0xedfa('0x7')][_0x5485d4[_0xedfa('0x20')]][_0x5485d4['destuniqueid']]){logger[_0xedfa('0x1e')](_0xedfa('0x4f'),_0x5485d4[_0xedfa('0x20')],_0x5485d4[_0xedfa('0x21')],_0x5485d4[_0xedfa('0x22')]);this[_0xedfa('0x7')][_0x5485d4['uniqueid']][_0x5485d4[_0xedfa('0x22')]][_0xedfa('0x47')]=!![];this[_0xedfa('0x7')][_0x5485d4['uniqueid']][_0x5485d4[_0xedfa('0x22')]][_0xedfa('0x48')]=moment()[_0xedfa('0x2f')](_0xedfa('0x38'));this['channels'][_0x5485d4['uniqueid']][_0x5485d4[_0xedfa('0x22')]][_0xedfa('0x3e')]='rejected';this[_0xedfa('0x7')][_0x5485d4['uniqueid']][_0x5485d4[_0xedfa('0x22')]][_0xedfa('0x4b')]=_0xedfa('0x50');logger[_0xedfa('0x23')](_0xedfa('0x51'),_0x5485d4[_0xedfa('0x20')],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x5485d4[_0xedfa('0x20')]][_0x5485d4[_0xedfa('0x22')]],{'showHidden':![],'depth':null}));ami['emit']('custom:agentringnoanswer',this[_0xedfa('0x7')][_0x5485d4[_0xedfa('0x20')]][_0x5485d4[_0xedfa('0x22')]]);}}}catch(_0x3883c7){logger['error'](_0xedfa('0x52'),_0x5485d4[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x3883c7,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x10')]=function(_0x199c1e){try{if(this['isNotNull'](_0x199c1e)){logger[_0xedfa('0x23')](_0xedfa('0x53'),_0x199c1e[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x199c1e,{'showHidden':![],'depth':null}));if(this[_0xedfa('0x7')][_0x199c1e[_0xedfa('0x20')]]){for(var _0x5c3cee in this['channels'][_0x199c1e[_0xedfa('0x20')]]){if(this['channels'][_0x199c1e[_0xedfa('0x20')]]['hasOwnProperty'](_0x5c3cee)&&!this[_0xedfa('0x7')][_0x199c1e['uniqueid']][_0x5c3cee][_0xedfa('0x47')]&&!this['channels'][_0x199c1e[_0xedfa('0x20')]][_0x5c3cee]['agentcomplete']){logger[_0xedfa('0x1e')](_0xedfa('0x54'),_0x199c1e[_0xedfa('0x20')],this[_0xedfa('0x7')][_0x199c1e['uniqueid']][_0x5c3cee][_0xedfa('0x21')],_0x5c3cee);this[_0xedfa('0x7')][_0x199c1e[_0xedfa('0x20')]][_0x5c3cee][_0xedfa('0x47')]=!![];this[_0xedfa('0x7')][_0x199c1e['uniqueid']][_0x5c3cee][_0xedfa('0x48')]=moment()['format'](_0xedfa('0x38'));this[_0xedfa('0x7')][_0x199c1e[_0xedfa('0x20')]][_0x5c3cee][_0xedfa('0x3e')]=_0xedfa('0x55');this['channels'][_0x199c1e[_0xedfa('0x20')]][_0x5c3cee]['reason']=_0xedfa('0x55');logger[_0xedfa('0x23')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x199c1e[_0xedfa('0x20')],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x199c1e[_0xedfa('0x20')]][_0x5c3cee],{'showHidden':![],'depth':null}));ami['emit']('custom:agentqueuecallerabandon',this[_0xedfa('0x7')][_0x199c1e['uniqueid']][_0x5c3cee]);}}}}}catch(_0x1d8d5b){logger[_0xedfa('0x31')](_0xedfa('0x56'),_0x199c1e['uniqueid'],util[_0xedfa('0x25')](_0x1d8d5b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x12')]=function(_0x1f6194){try{if(this[_0xedfa('0x57')](_0x1f6194)){logger['debug'](_0xedfa('0x58'),_0x1f6194[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x1f6194,{'showHidden':![],'depth':null}));if(this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]]){for(var _0x1b67af in this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]]){if(this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]]['hasOwnProperty'](_0x1b67af)){if(this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x37')]&&!this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x11')]){logger[_0xedfa('0x1e')](_0xedfa('0x59'),_0x1f6194[_0xedfa('0x20')],this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x21')],_0x1b67af);this[_0xedfa('0x7')][_0x1f6194['uniqueid']][_0x1b67af][_0xedfa('0x11')]=!![];this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x5a')]=moment()[_0xedfa('0x2f')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x3e')]=_0xedfa('0x5b');this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x4b')]=_0x1f6194[_0xedfa('0x4b')]=='transfer'?'agent':_0x1f6194['reason'];this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x5c')]=_0x1f6194[_0xedfa('0x5c')];if(this[_0xedfa('0x9')][_0x1f6194['queue']]&&this[_0xedfa('0x9')][_0x1f6194[_0xedfa('0x26')]]['acw']){this['channels'][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x5d')]=this[_0xedfa('0x9')][_0x1f6194[_0xedfa('0x26')]]['acwTimeout'];this['channels'][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x5e')]=!![];}this[_0xedfa('0xa')][_0x1f6194[_0xedfa('0x40')]]=_['omit'](this[_0xedfa('0xa')][_0x1f6194[_0xedfa('0x40')]],[_0xedfa('0x26'),'destconnectedlinenum']);logger[_0xedfa('0x23')](_0xedfa('0x5f'),_0x1f6194[_0xedfa('0x20')],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af],{'showHidden':![],'depth':null}));ami[_0xedfa('0x1b')](_0xedfa('0x60'),this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af]);logger[_0xedfa('0x23')](_0xedfa('0x61'),_0x1f6194['uniqueid'],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af],{'showHidden':![],'depth':null}));this[_0xedfa('0x1b')](util[_0xedfa('0x2f')]('user:%s',_0x1f6194['membername']),_0xedfa('0x62'),this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af]);}}}}}}catch(_0x76e60b){logger[_0xedfa('0x31')](_0xedfa('0x63'),_0x1f6194[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x76e60b,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xedfa('0x14')]=function(_0x169040){try{if(this['isNotNull'](_0x169040)){logger[_0xedfa('0x23')]('[%s][voiceAgentReport][varset]\x20event:',_0x169040[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x169040,{'showHidden':![],'depth':null}));this[_0xedfa('0x64')](_0x169040['uniqueid'],_['keys'](_0x169040['variable'])[0x0],_0x169040['value']);if(this[_0xedfa('0x7')][_0x169040[_0xedfa('0x20')]]){for(var _0x51f90a in this[_0xedfa('0x7')][_0x169040[_0xedfa('0x20')]]){if(this[_0xedfa('0x7')][_0x169040[_0xedfa('0x20')]][_0xedfa('0x35')](_0x51f90a)){logger['info'](_0xedfa('0x65'),_0x169040[_0xedfa('0x20')],_0x51f90a,_['keys'](_0x169040['variable'])[0x0],_0x169040[_0xedfa('0x66')]);if(_['isUndefined'](this['channels'][_0x169040[_0xedfa('0x20')]][_0x51f90a][_0xedfa('0xb')])){this[_0xedfa('0x7')][_0x169040['uniqueid']][_0x51f90a][_0xedfa('0xb')]={};}this[_0xedfa('0x7')][_0x169040[_0xedfa('0x20')]][_0x51f90a]['variables']=this[_0xedfa('0xb')][_0x169040['uniqueid']];}}}}}catch(_0x17188b){logger[_0xedfa('0x31')]('[%s][voiceAgentReport][varset]',_0x169040[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x17188b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x64')]=function(_0x58e919,_0x1079e4,_0x3a7eef){var _0x333c5d=[_0xedfa('0x67'),_0xedfa('0x68'),_0xedfa('0x69'),'rtpaudioqosjitterbridged',_0xedfa('0x6a'),_0xedfa('0x6b'),_0xedfa('0x6c'),_0xedfa('0x6d'),_0xedfa('0x6e'),_0xedfa('0x6f'),_0xedfa('0x70'),'bridgepvtcallid',_0xedfa('0x71'),_0xedfa('0x72'),_0xedfa('0x73'),'memberlastcall','membername','memberpenalty',_0xedfa('0x74')];if(!_['isNil'](_0x1079e4)&&!_[_0xedfa('0x75')](_0x333c5d,_0x1079e4)){if(_[_0xedfa('0x1c')](this['variables'][_0x58e919])){this[_0xedfa('0xb')][_0x58e919]={};}this[_0xedfa('0xb')][_0x58e919][_0x1079e4]=_0x3a7eef;}};VoiceAgentReport[_0xedfa('0x1a')]['syncHangup']=function(_0x761e82){try{if(this[_0xedfa('0x57')](_0x761e82)){logger[_0xedfa('0x23')](_0xedfa('0x76'),_0x761e82['uniqueid'],util[_0xedfa('0x25')](_0x761e82,{'showHidden':![],'depth':null}));if(this['channels'][_0x761e82[_0xedfa('0x20')]]){for(var _0x285863 in this['channels'][_0x761e82[_0xedfa('0x20')]]){if(this[_0xedfa('0x7')][_0x761e82[_0xedfa('0x20')]][_0xedfa('0x35')](_0x285863)){if(this[_0xedfa('0x7')][_0x761e82[_0xedfa('0x20')]][_0x285863]['reason']==_0xedfa('0x77')&&this[_0xedfa('0x7')][_0x761e82[_0xedfa('0x20')]][_0x285863][_0xedfa('0x11')]){logger[_0xedfa('0x1e')](_0xedfa('0x78'),_0x761e82[_0xedfa('0x20')],_0x285863);this['channels'][_0x761e82[_0xedfa('0x20')]][_0x285863][_0xedfa('0x5a')]=moment()[_0xedfa('0x2f')](_0xedfa('0x38'));}}}logger['debug'](_0xedfa('0x79'),_0x761e82[_0xedfa('0x20')],util[_0xedfa('0x25')](_[_0xedfa('0x7a')](this['channels'][_0x761e82[_0xedfa('0x20')]]),{'showHidden':![],'depth':null}));ami[_0xedfa('0x1b')](_0xedfa('0x7b'),_['values'](this[_0xedfa('0x7')][_0x761e82[_0xedfa('0x20')]]));delete this[_0xedfa('0x7')][_0x761e82[_0xedfa('0x20')]];}if(this['variables'][_0x761e82[_0xedfa('0x20')]]){delete this[_0xedfa('0xb')][_0x761e82[_0xedfa('0x20')]];}}}catch(_0x2024c3){logger[_0xedfa('0x31')](_0xedfa('0x7c'),_0x761e82[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x2024c3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x7d')]=function(_0x4e5b4f){try{if(this[_0xedfa('0x57')](_0x4e5b4f)){logger[_0xedfa('0x23')](_0xedfa('0x7e'),_0x4e5b4f[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x4e5b4f,{'showHidden':![],'depth':null}));if(this[_0xedfa('0x7')][_0x4e5b4f[_0xedfa('0x7f')]]){for(var _0x3a868d in this[_0xedfa('0x7')][_0x4e5b4f[_0xedfa('0x7f')]]){if(this[_0xedfa('0x7')][_0x4e5b4f['transfereeuniqueid']][_0xedfa('0x35')](_0x3a868d)){if(_0x4e5b4f[_0xedfa('0x80')]===_0x3a868d){logger['info'](_0xedfa('0x81'),_0x4e5b4f[_0xedfa('0x20')],this['channels'][_0x4e5b4f[_0xedfa('0x7f')]][_0x3a868d][_0xedfa('0x21')],_0x3a868d);var _0x2246c0=moment();this['channels'][_0x4e5b4f[_0xedfa('0x7f')]][_0x3a868d][_0xedfa('0x11')]=!![];this['channels'][_0x4e5b4f[_0xedfa('0x7f')]][_0x3a868d][_0xedfa('0x5a')]=moment()[_0xedfa('0x2f')](_0xedfa('0x38'));this[_0xedfa('0x7')][_0x4e5b4f['transfereeuniqueid']][_0x3a868d]['lastevent']=_0xedfa('0x5b');this[_0xedfa('0x7')][_0x4e5b4f[_0xedfa('0x7f')]][_0x3a868d][_0xedfa('0x4b')]=_0xedfa('0x77');this[_0xedfa('0x7')][_0x4e5b4f[_0xedfa('0x7f')]][_0x3a868d]['talktime']=_0x2246c0[_0xedfa('0x82')](this[_0xedfa('0x7')][_0x4e5b4f[_0xedfa('0x7f')]][_0x3a868d][_0xedfa('0x37')],_0xedfa('0x83'));}}}}if(this[_0xedfa('0x7')][_0x4e5b4f['secondtransfereruniqueid']]){var _0x24d9a3=this[_0xedfa('0x7')][_0x4e5b4f['secondtransfereruniqueid']];this['channels'][_0x4e5b4f[_0xedfa('0x84')]]=this['channels'][_0x4e5b4f[_0xedfa('0x7f')]];this[_0xedfa('0x7')][_0x4e5b4f[_0xedfa('0x7f')]]=_0x24d9a3;}}}catch(_0xc3be72){logger[_0xedfa('0x31')](_0xedfa('0x85'),_0x4e5b4f[_0xedfa('0x20')],util[_0xedfa('0x25')](_0xc3be72,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncBlindTransfer']=function(_0x120fc5){try{if(this['isNotNull'](_0x120fc5)){logger[_0xedfa('0x23')]('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x120fc5[_0xedfa('0x20')],util['inspect'](_0x120fc5,{'showHidden':![],'depth':null}));if(this[_0xedfa('0x7')][_0x120fc5[_0xedfa('0x7f')]]){for(var _0x11c3e3 in this['channels'][_0x120fc5['transfereeuniqueid']]){if(this[_0xedfa('0x7')][_0x120fc5['transfereeuniqueid']][_0xedfa('0x35')](_0x11c3e3)){if(_0x120fc5[_0xedfa('0x86')]===_0x11c3e3){logger[_0xedfa('0x1e')](_0xedfa('0x87'),_0x120fc5[_0xedfa('0x20')],this['channels'][_0x120fc5['transfereeuniqueid']][_0x11c3e3][_0xedfa('0x21')],_0x11c3e3);var _0x990adc=moment();this[_0xedfa('0x7')][_0x120fc5[_0xedfa('0x7f')]][_0x11c3e3][_0xedfa('0x11')]=!![];this['channels'][_0x120fc5[_0xedfa('0x7f')]][_0x11c3e3][_0xedfa('0x5a')]=_0x990adc;this['channels'][_0x120fc5[_0xedfa('0x7f')]][_0x11c3e3][_0xedfa('0x3e')]='complete';this[_0xedfa('0x7')][_0x120fc5[_0xedfa('0x7f')]][_0x11c3e3][_0xedfa('0x4b')]=_0xedfa('0x77');this[_0xedfa('0x7')][_0x120fc5[_0xedfa('0x7f')]][_0x11c3e3][_0xedfa('0x5c')]=_0x990adc[_0xedfa('0x82')](this['channels'][_0x120fc5[_0xedfa('0x7f')]][_0x11c3e3]['agentconnectAt'],'seconds');}}}}}}catch(_0x1d5ca5){logger[_0xedfa('0x31')]('[%s][voiceAgentReport][blindtransfer]',_0x120fc5[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x1d5ca5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x88')]=function(_0xe04203){var _0x3ef056='';try{if(this['isNotNull'](_0xe04203)){logger[_0xedfa('0x23')](_0xedfa('0x89'),_0xe04203[_0xedfa('0x20')],util[_0xedfa('0x25')](_0xe04203,{'showHidden':![],'depth':null}));if(_0xe04203[_0xedfa('0x8a')]){_0x3ef056=_0xe04203['channel'][_0xedfa('0x8b')](0x0,_0xe04203[_0xedfa('0x8a')][_0xedfa('0x8c')]('-'));if(this['agents'][_0x3ef056]){logger['info']('[%s][voiceAgentReport][musiconholdstart]\x20interface:%s',_0xe04203[_0xedfa('0x20')],_0x3ef056);this['agents'][_0x3ef056]['onhold']=!![];}}}}catch(_0x286016){logger[_0xedfa('0x31')](_0xedfa('0x8d'),_0xe04203[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x286016,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x8e')]=function(_0x359768){var _0x50caa5='';try{if(this[_0xedfa('0x57')](_0x359768)){logger[_0xedfa('0x23')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x359768[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x359768,{'showHidden':![],'depth':null}));if(_0x359768[_0xedfa('0x8a')]){_0x50caa5=_0x359768[_0xedfa('0x8a')][_0xedfa('0x8b')](0x0,_0x359768[_0xedfa('0x8a')]['lastIndexOf']('-'));if(this[_0xedfa('0xa')][_0x50caa5]){logger[_0xedfa('0x1e')](_0xedfa('0x8f'),_0x359768[_0xedfa('0x20')],_0x50caa5);this['agents'][_0x50caa5][_0xedfa('0x90')]=![];}}}}catch(_0x4819be){logger[_0xedfa('0x31')](_0xedfa('0x91'),_0x359768[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x4819be,{'showHidden':![],'depth':null}));}};module[_0xedfa('0x92')]=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(_0xe30592,_0x2030c7){var _0x2bdf38=function(_0x2b63b1){while(--_0x2b63b1){_0xe30592['push'](_0xe30592['shift']());}};_0x2bdf38(++_0x2030c7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xa9e0[_0x2b4411];return _0x8e41ef;};'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 2008f10..54a5fdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05a3=['value','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','parse','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','endtime','billableseconds','answertime','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','then','transferType','undefined','stopRecordingOnTransfer','resolve','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','event','BlindTransfer','type','outbound','custom:voiceCallReport','[%s][voiceCallReport][hangup]','syncAttendedTransfer','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','routeid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','transfereecalleridnum','extension','BLIND','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','bluebird','lodash','moment','util','path','ioredis','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','unknown','not_inuse','unavailable','ringing','ringinuse','onhold','set','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','ANSWERED','defaults','localhost','socket.io-emitter','redis','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','varset','syncVarSet','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncBlindTransfer','syncMusicOnHoldStart','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','isNotNull','isUndefined','prototype','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','inspect','merge','pick','context','channel','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','split','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','linkedid','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','keys','from-sip','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','emit','name','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','includes','lastapplication','lastdata','match','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridname','[%s][voiceCallReport][newstate]\x20event:','answered','holdtime','diff','connectedlinename','destinationchannel','UserId','membername','channelstate','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','find','monitors','isNil','push','rec','OutgoingSpoolFailed','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s'];(function(_0x558e45,_0x4f5e4f){var _0x3e9075=function(_0x289725){while(--_0x289725){_0x558e45['push'](_0x558e45['shift']());}};_0x3e9075(++_0x4f5e4f);}(_0x05a3,0x115));var _0x305a=function(_0x15b3eb,_0x63681e){_0x15b3eb=_0x15b3eb-0x0;var _0x1c54cc=_0x05a3[_0x15b3eb];return _0x1c54cc;};'use strict';var BPromise=require(_0x305a('0x0'));var _=require(_0x305a('0x1'));var moment=require(_0x305a('0x2'));var util=require(_0x305a('0x3'));var path=require(_0x305a('0x4'));var Redis=require(_0x305a('0x5'));var config=require('../../../config/environment');var logger=require(_0x305a('0x6'))(_0x305a('0x7'));var ami=require(_0x305a('0x8'));var Channel=require(_0x305a('0x9'));var RpcSetting=require(_0x305a('0xa'));var statusDesc=[_0x305a('0xb'),_0x305a('0xc'),'inuse','busy','invalid',_0x305a('0xd'),_0x305a('0xe'),_0x305a('0xf'),_0x305a('0x10')];var applications=[_0x305a('0x11'),_0x305a('0x12'),_0x305a('0x13'),_0x305a('0x14'),_0x305a('0x15'),_0x305a('0x16')];var dispositions=[_0x305a('0x17'),_0x305a('0x18'),_0x305a('0x18'),_0x305a('0x17'),'NO\x20ANSWER',_0x305a('0x17'),_0x305a('0x19'),'BUSY','FAILED','FAILED',_0x305a('0x18')];var actions={};config['redis']=_[_0x305a('0x1a')](config['redis'],{'host':_0x305a('0x1b'),'port':0x18eb});var io=require(_0x305a('0x1c'))(new Redis(config[_0x305a('0x1d')]));function VoiceCallReport(_0x17e87b){this[_0x305a('0x1e')]=_0x17e87b[_0x305a('0x1e')];this[_0x305a('0x1f')]=_0x17e87b['agents'];this[_0x305a('0x20')]={};ami['on'](_0x305a('0x21'),this[_0x305a('0x22')][_0x305a('0x23')](this));ami['on'](_0x305a('0x24'),this['syncNewExten'][_0x305a('0x23')](this));ami['on'](_0x305a('0x25'),this[_0x305a('0x26')]['bind'](this));ami['on'](_0x305a('0x27'),this['syncNewState'][_0x305a('0x23')](this));ami['on'](_0x305a('0x28'),this[_0x305a('0x29')]['bind'](this));ami['on']('hangup',this[_0x305a('0x2a')][_0x305a('0x23')](this));ami['on'](_0x305a('0x2b'),this[_0x305a('0x2c')]['bind'](this));ami['on'](_0x305a('0x2d'),this['syncAttendedTransfer'][_0x305a('0x23')](this));ami['on']('blindtransfer',this[_0x305a('0x2e')][_0x305a('0x23')](this));ami['on']('musiconholdstart',this[_0x305a('0x2f')]['bind'](this));ami['on']('musiconholdstop',this[_0x305a('0x30')][_0x305a('0x23')](this));try{logger[_0x305a('0x31')](_0x305a('0x32'));ami[_0x305a('0x33')]();}catch(_0x391b96){logger[_0x305a('0x34')](_0x305a('0x35'),util['inspect'](_0x391b96,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0x305a('0x36')]=function(_0x200d33){return _0x200d33!==null&&!_[_0x305a('0x37')](_0x200d33);};VoiceCallReport['prototype']['emit']=function(_0x169af5,_0x4715ce,_0x41bb32){io['to'](_0x169af5)['emit'](_0x4715ce,_0x41bb32);};VoiceCallReport[_0x305a('0x38')]['syncNewCallerId']=function(_0xbbc3b5){try{if(this[_0x305a('0x36')](_0xbbc3b5)){logger[_0x305a('0x31')](_0x305a('0x39'),_0xbbc3b5[_0x305a('0x3a')],_0xbbc3b5['calleridname'],_0xbbc3b5[_0x305a('0x3b')]);logger[_0x305a('0x3c')](_0x305a('0x3d'),_0xbbc3b5[_0x305a('0x3a')],util[_0x305a('0x3e')](_0xbbc3b5,{'showHidden':![],'depth':null}));if(_0xbbc3b5[_0x305a('0x3a')]===_0xbbc3b5['linkedid']){if(!_[_0x305a('0x37')](this[_0x305a('0x1e')][_0xbbc3b5[_0x305a('0x3a')]])){_[_0x305a('0x3f')](this[_0x305a('0x1e')][_0xbbc3b5[_0x305a('0x3a')]],_[_0x305a('0x40')](_0xbbc3b5,_['keys'](this[_0x305a('0x1e')][_0xbbc3b5[_0x305a('0x3a')]])));}}if(_0xbbc3b5[_0x305a('0x41')]==='from-sip'){if(this[_0x305a('0x1f')][_0xbbc3b5[_0x305a('0x42')]['split']('-')[0x0]]){if(_0xbbc3b5[_0x305a('0x43')]==_0x305a('0x44')){this['agents'][_0xbbc3b5[_0x305a('0x42')]['split']('-')[0x0]][_0x305a('0x45')]=_0xbbc3b5[_0x305a('0x46')];this['emit'](util[_0x305a('0x47')](_0x305a('0x48'),this[_0x305a('0x1f')][_0xbbc3b5[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]['name']),_0x305a('0x4a'),{'destaccountcode':this[_0x305a('0x1f')][_0xbbc3b5[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x4b')],'destconnectedlinenum':_0xbbc3b5[_0x305a('0x46')]});}}}}}catch(_0x52abb8){logger[_0x305a('0x34')](_0x305a('0x4c'),_0xbbc3b5[_0x305a('0x3a')],util['inspect'](_0x52abb8,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')]['syncNewChannel']=function(_0x89b937){try{if(this['isNotNull'](_0x89b937)){logger[_0x305a('0x3c')]('[%s][voiceCallReport][newchannel]\x20event:',_0x89b937[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x89b937,{'showHidden':![],'depth':null}));if(_0x89b937[_0x305a('0x3a')]===_0x89b937[_0x305a('0x4d')]&&_0x89b937[_0x305a('0x42')]!='OutgoingSpoolFailed'){if(_[_0x305a('0x37')](this['channels'][_0x89b937['uniqueid']])){logger[_0x305a('0x31')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x89b937[_0x305a('0x3a')],_0x89b937[_0x305a('0x41')],_0x89b937[_0x305a('0x43')]);this[_0x305a('0x1e')][_0x89b937[_0x305a('0x3a')]]=new Channel();this[_0x305a('0x1e')][_0x89b937['uniqueid']][_0x305a('0x4e')]=moment()[_0x305a('0x47')](_0x305a('0x4f'));this[_0x305a('0x1e')][_0x89b937[_0x305a('0x3a')]][_0x305a('0x50')]=dispositions[_[_0x305a('0x51')](_0x89b937['channelstate'])];_[_0x305a('0x3f')](this[_0x305a('0x1e')][_0x89b937[_0x305a('0x3a')]],_[_0x305a('0x40')](_0x89b937,_[_0x305a('0x52')](this[_0x305a('0x1e')][_0x89b937[_0x305a('0x3a')]])));if(_0x89b937[_0x305a('0x41')]===_0x305a('0x53')){if(this[_0x305a('0x1f')][_0x89b937['channel']['split']('-')[0x0]]){if(_['isUndefined'](this[_0x305a('0x1f')][_0x89b937[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x45')])){this[_0x305a('0x1f')][_0x89b937[_0x305a('0x42')]['split']('-')[0x0]]['destconnectedlinenum']=_0x89b937[_0x305a('0x43')];logger[_0x305a('0x3c')](_0x305a('0x54'),_0x89b937[_0x305a('0x3a')],util['inspect']({'destaccountcode':this[_0x305a('0x1f')][_0x89b937[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x4b')],'destconnectedlinenum':_0x89b937[_0x305a('0x43')]},{'showHidden':![],'depth':null}));this[_0x305a('0x55')](util[_0x305a('0x47')](_0x305a('0x48'),this[_0x305a('0x1f')][_0x89b937[_0x305a('0x42')]['split']('-')[0x0]][_0x305a('0x56')]),_0x305a('0x4a'),{'destaccountcode':this[_0x305a('0x1f')][_0x89b937[_0x305a('0x42')]['split']('-')[0x0]][_0x305a('0x4b')],'destconnectedlinenum':_0x89b937[_0x305a('0x43')]});}}}}}}}catch(_0x5f2d0d){logger[_0x305a('0x34')]('[%s][voiceCallReport][newchannel]',_0x89b937['uniqueid'],util[_0x305a('0x3e')](_0x5f2d0d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0x22')]=function(_0x4ff7fc){try{if(this[_0x305a('0x36')](_0x4ff7fc)){logger[_0x305a('0x3c')](_0x305a('0x57'),_0x4ff7fc[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x4ff7fc,{'showHidden':![],'depth':null}));if(_0x4ff7fc[_0x305a('0x3a')]===_0x4ff7fc[_0x305a('0x4d')]&&_0x4ff7fc['exten']!='h'&&_0x4ff7fc[_0x305a('0x42')]!='OutgoingSpoolFailed'){_0x4ff7fc[_0x305a('0x58')]=_0x4ff7fc[_0x305a('0x58')][_0x305a('0x59')]();_0x4ff7fc[_0x305a('0x5a')]=_0x4ff7fc[_0x305a('0x5b')]&&_0x4ff7fc[_0x305a('0x5b')][_0x305a('0x5c')](_0x305a('0x5d'))?_0x4ff7fc[_0x305a('0x5b')]:(_0x4ff7fc['appdata']||_0x4ff7fc[_0x305a('0x5a')])[_0x305a('0x59')]();logger['info'](_0x305a('0x5e'),_0x4ff7fc[_0x305a('0x3a')],_0x4ff7fc[_0x305a('0x58')],_0x4ff7fc[_0x305a('0x5a')]);if(_[_0x305a('0x37')](this[_0x305a('0x1e')][_0x4ff7fc['uniqueid']])){this['channels'][_0x4ff7fc[_0x305a('0x3a')]]=new Channel();this[_0x305a('0x1e')][_0x4ff7fc[_0x305a('0x3a')]][_0x305a('0x4e')]=_0x4ff7fc[_0x305a('0x5f')]?moment()[_0x305a('0x60')](moment[_0x305a('0x5f')](_0x4ff7fc[_0x305a('0x5f')])[_0x305a('0x61')](),_0x305a('0x61'))['format'](_0x305a('0x4f')):moment()[_0x305a('0x47')](_0x305a('0x4f'));this['channels'][_0x4ff7fc[_0x305a('0x3a')]][_0x305a('0x50')]=_0x305a('0x17');}_[_0x305a('0x3f')](this[_0x305a('0x1e')][_0x4ff7fc[_0x305a('0x3a')]],_[_0x305a('0x40')](_0x4ff7fc,_[_0x305a('0x52')](this[_0x305a('0x1e')][_0x4ff7fc[_0x305a('0x3a')]])));if(_[_0x305a('0x62')](applications,_0x4ff7fc[_0x305a('0x58')])){this['channels'][_0x4ff7fc[_0x305a('0x3a')]][_0x305a('0x63')]=_0x4ff7fc[_0x305a('0x58')];this[_0x305a('0x1e')][_0x4ff7fc[_0x305a('0x3a')]][_0x305a('0x64')]=_0x4ff7fc[_0x305a('0x5a')];if(_0x4ff7fc[_0x305a('0x58')]===_0x305a('0x11')&&_[_0x305a('0x5c')](_0x4ff7fc[_0x305a('0x5a')]['toLowerCase'](),'cdr(')){var _0x45908c=_0x4ff7fc[_0x305a('0x5a')][_0x305a('0x49')]('=');var _0x24423b=_0x45908c[0x0][_0x305a('0x59')]()[_0x305a('0x65')](/cdr\((.*)\)/);if(_0x24423b){this[_0x305a('0x1e')][_0x4ff7fc[_0x305a('0x3a')]][_0x24423b[0x1]]=_0x45908c[0x1];}}else if(_0x4ff7fc['application']===_0x305a('0x12')){this['channels'][_0x4ff7fc[_0x305a('0x3a')]]['queue']=_0x4ff7fc[_0x305a('0x5a')][_0x305a('0x49')](',')[0x0];}}}}}catch(_0x314ff9){logger['error'](_0x305a('0x66'),_0x4ff7fc[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x314ff9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0x67')]=function(_0x10e5a0){try{if(this[_0x305a('0x36')](_0x10e5a0)){logger[_0x305a('0x31')](_0x305a('0x68'),_0x10e5a0[_0x305a('0x3a')],_0x10e5a0[_0x305a('0x4d')],_0x10e5a0[_0x305a('0x69')],_0x10e5a0['calleridnum']);logger[_0x305a('0x3c')](_0x305a('0x6a'),_0x10e5a0[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x10e5a0,{'showHidden':![],'depth':null}));if(_0x10e5a0[_0x305a('0x3a')]!==_0x10e5a0['linkedid']){if(this[_0x305a('0x1e')][_0x10e5a0['linkedid']]){if(_0x10e5a0['channelstate']==='6'){if(!this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x6b')]){var _0x2cefd7=moment();this['channels'][_0x10e5a0['linkedid']][_0x305a('0x6b')]=!![];this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]]['answertime']=_0x2cefd7[_0x305a('0x47')](_0x305a('0x4f'));if(this[_0x305a('0x1e')][_0x10e5a0['linkedid']][_0x305a('0x4e')]){this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x6c')]=_0x2cefd7[_0x305a('0x6d')](this['channels'][_0x10e5a0['linkedid']]['starttime'],_0x305a('0x61'));}}this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x4d')]=_0x10e5a0[_0x305a('0x3a')];if(_0x10e5a0[_0x305a('0x3b')]!==_0x305a('0x44')){this['channels'][_0x10e5a0['linkedid']]['connectedlinenum']=_0x10e5a0['calleridnum'];}this['channels'][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x6e')]=_0x10e5a0[_0x305a('0x69')];this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x6f')]=_0x10e5a0[_0x305a('0x42')];this[_0x305a('0x1e')][_0x10e5a0['linkedid']][_0x305a('0x50')]=dispositions[_[_0x305a('0x51')](_0x10e5a0['channelstate'])];if(this[_0x305a('0x1f')][_0x10e5a0['channel'][_0x305a('0x49')]('-')[0x0]]){this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x70')]=this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]['id'];this['channels'][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x71')]=this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')]['split']('-')[0x0]]['name'];}}}}else{if(this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x3a')]]){if(_0x10e5a0[_0x305a('0x72')]==='6'){if(this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]){this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x3a')]][_0x305a('0x70')]=this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]['id'];this['channels'][_0x10e5a0['uniqueid']][_0x305a('0x71')]=this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x56')];}}}}if(_0x10e5a0['channelstate']==='6'&&_0x10e5a0[_0x305a('0x41')]===_0x305a('0x53')){if(this['agents'][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]){this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')]['split']('-')[0x0]]['destconnectedlinenum']=_0x10e5a0['exten'];var _0xabd758;if(this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x3a')]])_0xabd758=this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x3a')]]['routealias'];else if(this['channels'][_0x10e5a0[_0x305a('0x4d')]])_0xabd758=this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]]['routealias'];logger['debug'](_0x305a('0x73'),_0x10e5a0[_0x305a('0x3a')],util['inspect']({'destaccountcode':this['agents'][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x4b')],'destconnectedlinenum':_0x10e5a0[_0x305a('0x43')],'routealias':_0xabd758},{'showHidden':![],'depth':null}));this[_0x305a('0x55')](util[_0x305a('0x47')](_0x305a('0x48'),this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')]['split']('-')[0x0]][_0x305a('0x56')]),_0x305a('0x4a'),{'destaccountcode':this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x4b')],'destconnectedlinenum':_0x10e5a0[_0x305a('0x43')],'routealias':_0xabd758});}}}}catch(_0x430ad1){logger['error'](_0x305a('0x74'),_0x10e5a0[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x430ad1,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0x75')]=function(_0x2e949f,_0x1ba35a){try{if(this[_0x305a('0x1e')][_0x2e949f]){logger[_0x305a('0x31')](_0x305a('0x76'),_0x2e949f,_0x1ba35a);this[_0x305a('0x1e')][_0x2e949f][_0x305a('0x77')]=!![];if(_[_0x305a('0x78')](_0x1ba35a,_0x305a('0x79'))){_0x1ba35a=_0x1ba35a['replace']('.wav49','.WAV');}this[_0x305a('0x1e')][_0x2e949f]['monitorFilename']=_0x1ba35a;var _0x1f090b=_[_0x305a('0x7a')](this[_0x305a('0x1e')][_0x2e949f][_0x305a('0x7b')],{'filename':_0x1ba35a});if(_[_0x305a('0x7c')](_0x1f090b)){this[_0x305a('0x1e')][_0x2e949f][_0x305a('0x7b')][_0x305a('0x7d')]({'filename':_0x1ba35a,'createdAt':moment()[_0x305a('0x47')](_0x305a('0x4f')),'mixmonitorid':'','status':_0x305a('0x7e')});}}}catch(_0x5d32be){logger[_0x305a('0x34')]('[%s][voiceCallReport][mixMonitorFilename]',_0x2e949f,util[_0x305a('0x3e')](_0x5d32be,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x305a('0x29')]=function(_0x405b30){try{if(this[_0x305a('0x36')](_0x405b30)){logger[_0x305a('0x3c')]('[%s][voiceCallReport][varset]\x20event:',_0x405b30[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x405b30,{'showHidden':![],'depth':null}));if(this['channels'][_0x405b30[_0x305a('0x3a')]]&&_0x405b30[_0x305a('0x42')]!=_0x305a('0x7f')){if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')])){if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')][_0x305a('0x81')])){logger['info'](_0x305a('0x82'),_0x405b30['uniqueid'],_0x405b30['value']);this[_0x305a('0x75')](_0x405b30['uniqueid'],_0x405b30['value']);}else if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')]['xmd-phone'])){logger[_0x305a('0x31')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x405b30[_0x305a('0x3a')],_0x405b30[_0x305a('0x83')]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]][_0x305a('0x3b')]=_0x405b30['value'];}else if(this['isNotNull'](_0x405b30['variable'][_0x305a('0x84')])){logger[_0x305a('0x31')](_0x305a('0x85'),_0x405b30[_0x305a('0x3a')],_0x405b30[_0x305a('0x83')]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]][_0x305a('0x86')]=_0x405b30[_0x305a('0x83')];}else if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')][_0x305a('0x87')])){logger[_0x305a('0x31')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x405b30[_0x305a('0x3a')],_0x405b30[_0x305a('0x83')]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]]['type']=_0x405b30['value'];}else if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')][_0x305a('0x88')])){logger['info'](_0x305a('0x89'),_0x405b30['uniqueid'],_0x405b30['value']['split'](',')[0x0]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]][_0x305a('0x12')]=_0x405b30[_0x305a('0x83')][_0x305a('0x49')](',')[0x0];}else if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')][_0x305a('0x8a')])){logger[_0x305a('0x31')](_0x305a('0x8b'),_0x405b30[_0x305a('0x3a')],_0x405b30[_0x305a('0x83')]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]][_0x305a('0x8c')]=_0x405b30[_0x305a('0x83')];}else if(this['isNotNull'](_0x405b30[_0x305a('0x80')][_0x305a('0x8d')])){logger[_0x305a('0x31')](_0x305a('0x8e'),_0x405b30[_0x305a('0x3a')],_0x405b30[_0x305a('0x83')]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]]['destination']=_0x405b30[_0x305a('0x83')];}else if(this[_0x305a('0x36')](_0x405b30['variable']['xmd-callerid-preview'])){logger['info'](_0x305a('0x8f'),_0x405b30[_0x305a('0x3a')],_0x405b30[_0x305a('0x83')]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]][_0x305a('0x90')]=_0x405b30[_0x305a('0x83')];}else if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')][_0x305a('0x91')])){logger['info'](_0x305a('0x92'),_0x405b30[_0x305a('0x3a')],_0x405b30['value']);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]][_0x305a('0x12')]=_0x405b30[_0x305a('0x83')];}else if(this['isNotNull'](_0x405b30[_0x305a('0x80')][_0x305a('0x93')])){logger[_0x305a('0x31')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x405b30['uniqueid'],_0x405b30['value']);this['channels'][_0x405b30[_0x305a('0x3a')]]['sipcalluniqueid']=_0x405b30['value'];}}}else if(this['isNotNull'](_0x405b30[_0x305a('0x80')][_0x305a('0x81')])){if(_0x405b30[_0x305a('0x83')]){var _0x26225a=path[_0x305a('0x94')](_0x405b30[_0x305a('0x83')])[_0x305a('0x56')];logger['info'](_0x305a('0x82'),_0x26225a,_0x405b30[_0x305a('0x83')]);this['syncMixMonitorFilename'](_0x26225a,_0x405b30['value']);}}else if(this[_0x305a('0x1e')][_0x405b30[_0x305a('0x4d')]]){if(this['isNotNull'](_0x405b30[_0x305a('0x80')])){if(this['isNotNull'](_0x405b30['variable'][_0x305a('0x93')])){logger[_0x305a('0x31')](_0x305a('0x95'),_0x405b30['linkedid'],_0x405b30['value']);this[_0x305a('0x1e')][_0x405b30['linkedid']][_0x305a('0x96')]=_0x405b30[_0x305a('0x83')];}}}}}catch(_0x164af8){logger[_0x305a('0x34')](_0x305a('0x97'),_0x405b30['uniqueid'],util[_0x305a('0x3e')](_0x164af8,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')]['syncHangup']=function(_0x56314f){try{if(this[_0x305a('0x36')](_0x56314f)){logger['debug'](_0x305a('0x98'),_0x56314f[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x56314f,{'showHidden':![],'depth':null}));if(this['channels'][_0x56314f['uniqueid']]){logger[_0x305a('0x31')](_0x305a('0x99'),_0x56314f[_0x305a('0x3a')],_0x56314f['cause-txt']);var _0x7b9ea0=moment();this[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x9a')]=_0x7b9ea0['format'](_0x305a('0x4f'));this['channels'][_0x56314f['uniqueid']]['duration']=_0x7b9ea0[_0x305a('0x6d')](this[_0x305a('0x1e')][_0x56314f['uniqueid']][_0x305a('0x4e')],'seconds');if(this[_0x305a('0x1e')][_0x56314f['uniqueid']]['answered']){this[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x9b')]=_0x7b9ea0[_0x305a('0x6d')](this['channels'][_0x56314f[_0x305a('0x3a')]][_0x305a('0x9c')],_0x305a('0x61'));this[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x6c')]=this[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x5f')]-this[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x9b')];}if(_0x56314f[_0x305a('0x41')]===_0x305a('0x53')){if(this[_0x305a('0x1f')][_0x56314f[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]){this['agents'][_0x56314f[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]=_['omit'](this[_0x305a('0x1f')][_0x56314f['channel'][_0x305a('0x49')]('-')[0x0]],[_0x305a('0x45')]);logger[_0x305a('0x3c')](_0x305a('0x9d'),_0x56314f['uniqueid'],util['inspect']({'id':this['agents'][_0x56314f[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x56314f[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x4b')]},{'showHidden':![],'depth':null}));this[_0x305a('0x55')](util[_0x305a('0x47')](_0x305a('0x48'),this[_0x305a('0x1f')][_0x56314f[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x56')]),_0x305a('0x9e'),{'id':this[_0x305a('0x1f')][_0x56314f['channel'][_0x305a('0x49')]('-')[0x0]]['id'],'destaccountcode':this[_0x305a('0x1f')][_0x56314f[_0x305a('0x42')]['split']('-')[0x0]][_0x305a('0x4b')]});}}var _0x2bf4e0=this;Promise['resolve']()[_0x305a('0x9f')](function(){var _0x48d54d=_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]];if(typeof _0x48d54d[_0x305a('0xa0')]===_0x305a('0xa1'))return;if(_['isEmpty'](_0x48d54d[_0x305a('0x7b')]))return;return RpcSetting['getSettings']()[_0x305a('0x9f')](function(_0x4b4b1a){if(!_0x4b4b1a[_0x305a('0xa2')])return;return Promise[_0x305a('0xa3')]()[_0x305a('0x9f')](function(){return ami[_0x305a('0xa4')]({'action':_0x305a('0xa5'),'channel':_0x48d54d[_0x305a('0x42')]})[_0x305a('0xa6')](function(){});})[_0x305a('0x9f')](function(){return ami[_0x305a('0xa4')]({'action':'StopMixMonitor','channel':_0x48d54d[_0x305a('0x6f')]})[_0x305a('0xa6')](function(){})[_0x305a('0xa7')](function(){var _0x35c279=_0x2bf4e0[_0x305a('0x1f')][_0x48d54d[_0x305a('0x6f')]['split']('-')[0x0]];if(!_0x35c279)return;io[_0x305a('0x55')](_0x305a('0xa8'),{'agentId':_0x35c279['id'],'uniqueid':_0x48d54d[_0x305a('0x3a')]});});});});})['then'](function(){if(_0x56314f[_0x305a('0xa9')]===_0x305a('0xaa')){_0x2bf4e0['blindTransfers'][_0x56314f[_0x305a('0x3a')]]=_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]];}else{if(_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0xab')]===_0x305a('0xac')&&_0x2bf4e0[_0x305a('0x20')][_0x56314f[_0x305a('0x3a')]]){_0x2bf4e0[_0x305a('0x1e')][_0x56314f['uniqueid']][_0x305a('0x3a')]=[_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x4d')],_0x2bf4e0['channels'][_0x56314f[_0x305a('0x3a')]][_0x305a('0x4d')]=_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x3a')]][0x0];delete _0x2bf4e0[_0x305a('0x20')][_0x56314f[_0x305a('0x3a')]];}}logger[_0x305a('0x3c')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x56314f[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]],{'showHidden':![],'depth':null}));ami[_0x305a('0x55')](_0x305a('0xad'),_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]]);delete _0x2bf4e0['channels'][_0x56314f[_0x305a('0x3a')]];});}}}catch(_0x377a91){logger[_0x305a('0x34')](_0x305a('0xae'),_0x56314f[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x377a91,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0xaf')]=function(_0x1a4c73){try{if(this[_0x305a('0x36')](_0x1a4c73)){logger[_0x305a('0x31')](_0x305a('0xb0'),_0x1a4c73[_0x305a('0x3a')],_0x1a4c73[_0x305a('0xb1')],_0x1a4c73[_0x305a('0xb2')]);logger['debug'](_0x305a('0xb3'),_0x1a4c73['uniqueid'],util[_0x305a('0x3e')](_0x1a4c73,{'showHidden':![],'depth':null}));if(this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb4')]]){this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb4')]][_0x305a('0xb5')]=_0x1a4c73[_0x305a('0xb1')];this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb4')]][_0x305a('0xb6')]=_0x1a4c73['transfertargetcalleridnum'];if(this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb7')]]){var _0x425339=this['channels'][_0x1a4c73[_0x305a('0xb7')]];this['channels'][_0x1a4c73['secondtransfereruniqueid']]=this[_0x305a('0x1e')][_0x1a4c73['transfereeuniqueid']];this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb4')]]=_0x425339;}}else if(this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb8')]]){this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb8')]][_0x305a('0xb5')]=_0x1a4c73[_0x305a('0xb1')];this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb8')]][_0x305a('0xb6')]=_0x1a4c73[_0x305a('0xb2')];if(this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb9')]]){var _0x425339=this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb9')]];this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb9')]]=this['channels'][_0x1a4c73[_0x305a('0xb8')]];this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb8')]]=_0x425339;}}if((this[_0x305a('0x1e')][_0x1a4c73['origtransfereruniqueid']]||this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xba')]])&&this[_0x305a('0x1e')][_0x1a4c73['secondtransfereruniqueid']]){var _0x626e64=_['some']([this['channels'][_0x1a4c73[_0x305a('0xb9')]],this[_0x305a('0x1e')][_0x1a4c73['origtransfererlinkedid']],this['channels'][_0x1a4c73[_0x305a('0xb7')]]],function(_0x1addb3){return _0x1addb3&&_0x1addb3[_0x305a('0xab')]===_0x305a('0xac')&&_0x1addb3[_0x305a('0xbb')];});if(_0x626e64){if(this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb9')]])this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb9')]][_0x305a('0xa0')]=_0x305a('0xbc');if(this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xba')]])this[_0x305a('0x1e')][_0x1a4c73['origtransfererlinkedid']]['transferType']='ATTENDED';this['channels'][_0x1a4c73[_0x305a('0xb7')]][_0x305a('0xa0')]=_0x305a('0xbc');}}}}catch(_0xec0e43){logger[_0x305a('0x34')](_0x305a('0xbd'),_0x1a4c73[_0x305a('0x3a')],util['inspect'](_0xec0e43,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0x2e')]=function(_0x586598){try{if(this[_0x305a('0x36')](_0x586598)){logger[_0x305a('0x31')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x586598[_0x305a('0x3a')],_0x586598[_0x305a('0xbe')],_0x586598[_0x305a('0xbf')]);logger['debug']('[%s][voiceCallReport][blindtransfer]\x20event:',_0x586598[_0x305a('0x3a')],util['inspect'](_0x586598,{'showHidden':![],'depth':null}));if(this[_0x305a('0x1e')][_0x586598['transfereeuniqueid']]){this[_0x305a('0x1e')][_0x586598[_0x305a('0xb4')]]['transfercalleridnum']=_0x586598[_0x305a('0xbe')];this[_0x305a('0x1e')][_0x586598['transfereeuniqueid']]['transferconnectedlinenum']=_0x586598['extension'];this[_0x305a('0x1e')][_0x586598[_0x305a('0xb4')]]['transferType']=_0x305a('0xc0');this[_0x305a('0x2a')]({'event':_0x305a('0xaa'),'uniqueid':_0x586598[_0x305a('0xb4')],'context':_0x586598['context'],'channel':_0x586598[_0x305a('0xc1')]});}else{this[_0x305a('0x1e')][_0x586598[_0x305a('0xc2')]][_0x305a('0xa0')]=_0x305a('0xc0');}}}catch(_0x1e352a){logger['error'](_0x305a('0xc3'),_0x586598[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x1e352a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0x2f')]=function(_0x181576){try{if(this[_0x305a('0x36')](_0x181576)){logger[_0x305a('0x3c')]('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x181576[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x181576,{'showHidden':![],'depth':null}));if(this[_0x305a('0x1e')][_0x181576[_0x305a('0x3a')]]){if(!_[_0x305a('0x7c')](this[_0x305a('0x1e')][_0x181576[_0x305a('0x3a')]]['answertime'])){this[_0x305a('0x1e')][_0x181576[_0x305a('0x3a')]][_0x305a('0xc4')]=moment()[_0x305a('0x47')](_0x305a('0x4f'));logger[_0x305a('0x31')](_0x305a('0xc5'),_0x181576[_0x305a('0x3a')],this['channels'][_0x181576[_0x305a('0x3a')]][_0x305a('0xc4')]);}}}}catch(_0x522ffb){logger['error'](_0x305a('0xc6'),_0x181576['uniqueid'],util[_0x305a('0x3e')](_0x522ffb,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0x30')]=function(_0x4a89bb){try{if(this[_0x305a('0x36')](_0x4a89bb)){logger[_0x305a('0x3c')](_0x305a('0xc7'),_0x4a89bb['uniqueid'],util[_0x305a('0x3e')](_0x4a89bb,{'showHidden':![],'depth':null}));if(this[_0x305a('0x1e')][_0x4a89bb[_0x305a('0x3a')]]){if(!_[_0x305a('0x7c')](this[_0x305a('0x1e')][_0x4a89bb['uniqueid']][_0x305a('0xc4')])){this[_0x305a('0x1e')][_0x4a89bb[_0x305a('0x3a')]][_0x305a('0xc8')]+=moment()[_0x305a('0xc9')](0x0)[_0x305a('0x6d')](this[_0x305a('0x1e')][_0x4a89bb['uniqueid']][_0x305a('0xc4')],'seconds');logger[_0x305a('0x31')](_0x305a('0xca'),_0x4a89bb['uniqueid'],this[_0x305a('0x1e')][_0x4a89bb[_0x305a('0x3a')]]['mohtime']);delete this[_0x305a('0x1e')][_0x4a89bb[_0x305a('0x3a')]][_0x305a('0xc4')];}}}}catch(_0x3251a8){logger[_0x305a('0x34')](_0x305a('0xcb'),_0x4a89bb[_0x305a('0x3a')],util['inspect'](_0x3251a8,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
+var _0x584a=['Action','StopMixMonitor','catch','finally','webbar:stopmonitors','event','BlindTransfer','type','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransferercalleridnum','origtransfereruniqueid','origtransfererlinkedid','some','outbound','routeid','transferType','ATTENDED','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transfercalleridnum','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','path','ioredis','../../../config/environment','../../../config/logger','../model/channel','queue','agi','playback','voicemail','NO\x20ANSWER','ANSWERED','BUSY','FAILED','redis','defaults','localhost','socket.io-emitter','channels','agents','coreshowchannel','syncNewExten','bind','newexten','newchannel','newstate','syncNewState','varset','syncVarSet','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','emit','info','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridnum','linkedid','merge','pick','keys','context','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','user:%s','user:agentconnect','accountcode','connectedlinenum','[%s][voiceCallReport][newcallerid]','syncNewChannel','debug','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','blindTransfers','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','YYYY-MM-DD\x20HH:mm:ss','toNumber','channelstate','isUndefined','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','format','name','application','applicationdata','CDR(routeAlias)','appdata','toLowerCase','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','starttime','duration','seconds','lastapplication','lastdata','set','startsWith','cdr(','match','calleridname','[%s][voiceCallReport][newstate]\x20event:','answertime','diff','connectedlinename','destinationchannel','disposition','UserId','membername','answered','holdtime','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','replace','.wav49','.WAV','monitorFilename','find','push','rec','[%s][voiceCallReport][mixMonitorFilename]','variable','mixmonitor_filename','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','resolve','isEmpty','monitors','then','stopRecordingOnTransfer'];(function(_0xb9350c,_0x26c325){var _0x2d4935=function(_0x2e10ba){while(--_0x2e10ba){_0xb9350c['push'](_0xb9350c['shift']());}};_0x2d4935(++_0x26c325);}(_0x584a,0x1c0));var _0xa584=function(_0x64aff8,_0x106082){_0x64aff8=_0x64aff8-0x0;var _0x5488a3=_0x584a[_0x64aff8];return _0x5488a3;};'use strict';var _=require(_0xa584('0x0'));var moment=require(_0xa584('0x1'));var util=require('util');var path=require(_0xa584('0x2'));var Redis=require(_0xa584('0x3'));var config=require(_0xa584('0x4'));var logger=require(_0xa584('0x5'))('ami');var ami=require('../ami');var Channel=require(_0xa584('0x6'));var RpcSetting=require('../rpc/setting');var applications=['set',_0xa584('0x7'),_0xa584('0x8'),'dial',_0xa584('0x9'),_0xa584('0xa')];var dispositions=['NO\x20ANSWER','FAILED','FAILED',_0xa584('0xb'),_0xa584('0xb'),_0xa584('0xb'),_0xa584('0xc'),_0xa584('0xd'),_0xa584('0xe'),_0xa584('0xe'),_0xa584('0xe')];config[_0xa584('0xf')]=_[_0xa584('0x10')](config[_0xa584('0xf')],{'host':_0xa584('0x11'),'port':0x18eb});var io=require(_0xa584('0x12'))(new Redis(config['redis']));function VoiceCallReport(_0x26cb6f){this[_0xa584('0x13')]=_0x26cb6f[_0xa584('0x13')];this[_0xa584('0x14')]=_0x26cb6f[_0xa584('0x14')];this['blindTransfers']={};ami['on'](_0xa584('0x15'),this[_0xa584('0x16')][_0xa584('0x17')](this));ami['on'](_0xa584('0x18'),this[_0xa584('0x16')]['bind'](this));ami['on'](_0xa584('0x19'),this['syncNewChannel'][_0xa584('0x17')](this));ami['on'](_0xa584('0x1a'),this[_0xa584('0x1b')]['bind'](this));ami['on'](_0xa584('0x1c'),this[_0xa584('0x1d')][_0xa584('0x17')](this));ami['on']('hangup',this[_0xa584('0x1e')]['bind'](this));ami['on'](_0xa584('0x1f'),this[_0xa584('0x20')]['bind'](this));ami['on'](_0xa584('0x21'),this[_0xa584('0x22')][_0xa584('0x17')](this));ami['on'](_0xa584('0x23'),this[_0xa584('0x24')][_0xa584('0x17')](this));ami['on'](_0xa584('0x25'),this[_0xa584('0x26')][_0xa584('0x17')](this));ami['on'](_0xa584('0x27'),this[_0xa584('0x28')]['bind'](this));try{logger['info'](_0xa584('0x29'));ami[_0xa584('0x2a')]();}catch(_0x276cb2){logger[_0xa584('0x2b')](_0xa584('0x2c'),util[_0xa584('0x2d')](_0x276cb2,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xa584('0x2e')][_0xa584('0x2f')]=function(_0x22066){return _0x22066!==null&&!_['isUndefined'](_0x22066);};VoiceCallReport[_0xa584('0x2e')]['emit']=function(_0x42ee1a,_0xda7821,_0x1f1c73){io['to'](_0x42ee1a)[_0xa584('0x30')](_0xda7821,_0x1f1c73);};VoiceCallReport['prototype'][_0xa584('0x20')]=function(_0x53d14b){try{if(this[_0xa584('0x2f')](_0x53d14b)){logger[_0xa584('0x31')](_0xa584('0x32'),_0x53d14b[_0xa584('0x33')],_0x53d14b['calleridname'],_0x53d14b[_0xa584('0x34')]);logger['debug']('[%s][voiceCallReport][newcallerid]\x20event:',_0x53d14b[_0xa584('0x33')],util['inspect'](_0x53d14b,{'showHidden':![],'depth':null}));if(_0x53d14b[_0xa584('0x33')]===_0x53d14b[_0xa584('0x35')]){if(!_['isUndefined'](this[_0xa584('0x13')][_0x53d14b[_0xa584('0x33')]])){_[_0xa584('0x36')](this[_0xa584('0x13')][_0x53d14b[_0xa584('0x33')]],_[_0xa584('0x37')](_0x53d14b,_[_0xa584('0x38')](this['channels'][_0x53d14b[_0xa584('0x33')]])));}}if(_0x53d14b[_0xa584('0x39')]===_0xa584('0x3a')){if(this['agents'][_0x53d14b[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]]){if(_0x53d14b[_0xa584('0x3d')]==_0xa584('0x3e')){this[_0xa584('0x14')][_0x53d14b[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]][_0xa584('0x3f')]=_0x53d14b['connectedlinenum'];this[_0xa584('0x30')](util['format'](_0xa584('0x40'),this['agents'][_0x53d14b[_0xa584('0x3b')]['split']('-')[0x0]]['name']),_0xa584('0x41'),{'destaccountcode':this[_0xa584('0x14')][_0x53d14b['channel'][_0xa584('0x3c')]('-')[0x0]][_0xa584('0x42')],'destconnectedlinenum':_0x53d14b[_0xa584('0x43')]});}}}}}catch(_0x47f3c9){logger['error'](_0xa584('0x44'),_0x53d14b[_0xa584('0x33')],util[_0xa584('0x2d')](_0x47f3c9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa584('0x2e')][_0xa584('0x45')]=function(_0x35f40f){try{if(this['isNotNull'](_0x35f40f)){logger[_0xa584('0x46')](_0xa584('0x47'),_0x35f40f[_0xa584('0x33')],util[_0xa584('0x2d')](_0x35f40f,{'showHidden':![],'depth':null}));if(this['channels'][_0x35f40f[_0xa584('0x33')]])return;if(_0x35f40f[_0xa584('0x3b')]===_0xa584('0x48'))return;if(_0x35f40f[_0xa584('0x33')]!==_0x35f40f[_0xa584('0x35')]&&!this[_0xa584('0x49')][_0x35f40f[_0xa584('0x35')]])return;logger[_0xa584('0x31')](_0xa584('0x4a'),_0x35f40f[_0xa584('0x33')],_0x35f40f[_0xa584('0x39')],_0x35f40f[_0xa584('0x3d')]);this['channels'][_0x35f40f[_0xa584('0x33')]]=new Channel();this[_0xa584('0x13')][_0x35f40f[_0xa584('0x33')]]['starttime']=moment()['format'](_0xa584('0x4b'));this[_0xa584('0x13')][_0x35f40f[_0xa584('0x33')]]['disposition']=dispositions[_[_0xa584('0x4c')](_0x35f40f[_0xa584('0x4d')])];_[_0xa584('0x36')](this['channels'][_0x35f40f[_0xa584('0x33')]],_[_0xa584('0x37')](_0x35f40f,_[_0xa584('0x38')](this[_0xa584('0x13')][_0x35f40f[_0xa584('0x33')]])));if(_0x35f40f[_0xa584('0x39')]===_0xa584('0x3a')){if(this['agents'][_0x35f40f['channel'][_0xa584('0x3c')]('-')[0x0]]){if(_[_0xa584('0x4e')](this[_0xa584('0x14')][_0x35f40f[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]]['destconnectedlinenum'])){this[_0xa584('0x14')][_0x35f40f[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]][_0xa584('0x3f')]=_0x35f40f[_0xa584('0x3d')];logger[_0xa584('0x46')](_0xa584('0x4f'),_0x35f40f[_0xa584('0x33')],util['inspect']({'destaccountcode':this[_0xa584('0x14')][_0x35f40f['channel'][_0xa584('0x3c')]('-')[0x0]][_0xa584('0x42')],'destconnectedlinenum':_0x35f40f['exten']},{'showHidden':![],'depth':null}));this['emit'](util[_0xa584('0x50')](_0xa584('0x40'),this[_0xa584('0x14')][_0x35f40f[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]][_0xa584('0x51')]),_0xa584('0x41'),{'destaccountcode':this[_0xa584('0x14')][_0x35f40f[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x35f40f[_0xa584('0x3d')]});}}}}}catch(_0x17e6f7){logger[_0xa584('0x2b')]('[%s][voiceCallReport][newchannel]',_0x35f40f[_0xa584('0x33')],util[_0xa584('0x2d')](_0x17e6f7,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa584('0x2e')][_0xa584('0x16')]=function(_0x257502){try{if(this[_0xa584('0x2f')](_0x257502)){logger[_0xa584('0x46')]('[%s][voiceCallReport][newexten]\x20event:',_0x257502[_0xa584('0x33')],util['inspect'](_0x257502,{'showHidden':![],'depth':null}));if(_0x257502['channel']===_0xa584('0x48')||_0x257502[_0xa584('0x3d')]==='h')return;if(_0x257502['uniqueid']===_0x257502[_0xa584('0x35')]||this[_0xa584('0x49')][_0x257502[_0xa584('0x35')]]){_0x257502[_0xa584('0x52')]=_0x257502[_0xa584('0x52')]['toLowerCase']();_0x257502[_0xa584('0x53')]=_0x257502['appdata']&&_0x257502['appdata']['startsWith'](_0xa584('0x54'))?_0x257502[_0xa584('0x55')]:(_0x257502[_0xa584('0x55')]||_0x257502[_0xa584('0x53')])[_0xa584('0x56')]();logger[_0xa584('0x31')](_0xa584('0x57'),_0x257502[_0xa584('0x33')],_0x257502[_0xa584('0x52')],_0x257502['applicationdata']);if(_[_0xa584('0x4e')](this[_0xa584('0x13')][_0x257502[_0xa584('0x33')]])){this[_0xa584('0x13')][_0x257502['uniqueid']]=new Channel();this['channels'][_0x257502['uniqueid']][_0xa584('0x58')]=_0x257502[_0xa584('0x59')]?moment()['subtract'](moment['duration'](_0x257502[_0xa584('0x59')])['seconds'](),_0xa584('0x5a'))[_0xa584('0x50')](_0xa584('0x4b')):moment()[_0xa584('0x50')](_0xa584('0x4b'));this[_0xa584('0x13')][_0x257502[_0xa584('0x33')]]['disposition']=_0xa584('0xb');}_['merge'](this[_0xa584('0x13')][_0x257502[_0xa584('0x33')]],_[_0xa584('0x37')](_0x257502,_['keys'](this[_0xa584('0x13')][_0x257502[_0xa584('0x33')]])));if(_['includes'](applications,_0x257502['application'])){this[_0xa584('0x13')][_0x257502['uniqueid']][_0xa584('0x5b')]=_0x257502[_0xa584('0x52')];this[_0xa584('0x13')][_0x257502[_0xa584('0x33')]][_0xa584('0x5c')]=_0x257502[_0xa584('0x53')];if(_0x257502[_0xa584('0x52')]===_0xa584('0x5d')&&_[_0xa584('0x5e')](_0x257502[_0xa584('0x53')]['toLowerCase'](),_0xa584('0x5f'))){var _0x5e2dba=_0x257502['applicationdata'][_0xa584('0x3c')]('=');var _0x51b5a5=_0x5e2dba[0x0][_0xa584('0x56')]()[_0xa584('0x60')](/cdr\((.*)\)/);if(_0x51b5a5){this[_0xa584('0x13')][_0x257502[_0xa584('0x33')]][_0x51b5a5[0x1]]=_0x5e2dba[0x1];}}else if(_0x257502[_0xa584('0x52')]===_0xa584('0x7')){this[_0xa584('0x13')][_0x257502['uniqueid']][_0xa584('0x7')]=_0x257502[_0xa584('0x53')][_0xa584('0x3c')](',')[0x0];}}}}}catch(_0x5a5612){logger[_0xa584('0x2b')]('[%s][voiceCallReport][newexten]',_0x257502[_0xa584('0x33')],util[_0xa584('0x2d')](_0x5a5612,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa584('0x2e')]['syncNewState']=function(_0x5c5aef){try{if(this[_0xa584('0x2f')](_0x5c5aef)){logger[_0xa584('0x31')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x5c5aef[_0xa584('0x33')],_0x5c5aef[_0xa584('0x35')],_0x5c5aef[_0xa584('0x61')],_0x5c5aef[_0xa584('0x34')]);logger[_0xa584('0x46')](_0xa584('0x62'),_0x5c5aef[_0xa584('0x33')],util[_0xa584('0x2d')](_0x5c5aef,{'showHidden':![],'depth':null}));if(_0x5c5aef[_0xa584('0x4d')]!=='6')return;if(_0x5c5aef[_0xa584('0x33')]!==_0x5c5aef[_0xa584('0x35')]){var _0x40eed7=moment();if(this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x35')]]){if(!this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x35')]]['answered']){this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x35')]]['answered']=!![];this['channels'][_0x5c5aef[_0xa584('0x35')]][_0xa584('0x63')]=_0x40eed7['format']('YYYY-MM-DD\x20HH:mm:ss');if(this[_0xa584('0x13')][_0x5c5aef['linkedid']][_0xa584('0x58')]){this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x35')]]['holdtime']=_0x40eed7[_0xa584('0x64')](this[_0xa584('0x13')][_0x5c5aef['linkedid']][_0xa584('0x58')],'seconds');}}this['channels'][_0x5c5aef['linkedid']][_0xa584('0x35')]=_0x5c5aef[_0xa584('0x33')];if(_0x5c5aef[_0xa584('0x34')]!==_0xa584('0x3e')){this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x35')]][_0xa584('0x43')]=_0x5c5aef[_0xa584('0x34')];}this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x35')]][_0xa584('0x65')]=_0x5c5aef[_0xa584('0x61')];this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x35')]][_0xa584('0x66')]=_0x5c5aef[_0xa584('0x3b')];this[_0xa584('0x13')][_0x5c5aef['linkedid']][_0xa584('0x67')]=dispositions[_['toNumber'](_0x5c5aef['channelstate'])];if(this['agents'][_0x5c5aef[_0xa584('0x3b')]['split']('-')[0x0]]){this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x35')]][_0xa584('0x68')]=this[_0xa584('0x14')][_0x5c5aef[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]]['id'];this[_0xa584('0x13')][_0x5c5aef['linkedid']][_0xa584('0x69')]=this[_0xa584('0x14')][_0x5c5aef[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]]['name'];}}if(this[_0xa584('0x13')][_0x5c5aef['uniqueid']]){if(!this['channels'][_0x5c5aef['uniqueid']][_0xa584('0x6a')]){this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x33')]][_0xa584('0x6a')]=!![];this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x33')]]['answertime']=_0x40eed7[_0xa584('0x50')](_0xa584('0x4b'));if(this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x33')]][_0xa584('0x58')]){this['channels'][_0x5c5aef[_0xa584('0x33')]][_0xa584('0x6b')]=_0x40eed7['diff'](this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x33')]]['starttime'],'seconds');}}if(_0x5c5aef[_0xa584('0x34')]!==_0xa584('0x3e')){this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x33')]]['connectedlinenum']=_0x5c5aef['calleridnum'];}this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x33')]]['connectedlinename']=_0x5c5aef[_0xa584('0x61')];this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x33')]][_0xa584('0x66')]=_0x5c5aef['channel'];this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x33')]]['disposition']=dispositions[_['toNumber'](_0x5c5aef[_0xa584('0x4d')])];}}else{if(this['channels'][_0x5c5aef[_0xa584('0x33')]]){if(this[_0xa584('0x14')][_0x5c5aef[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]]){this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x33')]][_0xa584('0x68')]=this[_0xa584('0x14')][_0x5c5aef[_0xa584('0x3b')]['split']('-')[0x0]]['id'];this['channels'][_0x5c5aef['uniqueid']][_0xa584('0x69')]=this[_0xa584('0x14')][_0x5c5aef[_0xa584('0x3b')]['split']('-')[0x0]][_0xa584('0x51')];}}}if(_0x5c5aef[_0xa584('0x39')]===_0xa584('0x3a')){if(this[_0xa584('0x14')][_0x5c5aef[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]]){this[_0xa584('0x14')][_0x5c5aef[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]][_0xa584('0x3f')]=_0x5c5aef['exten'];var _0x4c7800;if(this[_0xa584('0x13')][_0x5c5aef[_0xa584('0x33')]])_0x4c7800=this['channels'][_0x5c5aef[_0xa584('0x33')]][_0xa584('0x6c')];else if(this[_0xa584('0x13')][_0x5c5aef['linkedid']])_0x4c7800=this['channels'][_0x5c5aef[_0xa584('0x35')]][_0xa584('0x6c')];logger['debug'](_0xa584('0x6d'),_0x5c5aef[_0xa584('0x33')],util[_0xa584('0x2d')]({'destaccountcode':this[_0xa584('0x14')][_0x5c5aef['channel'][_0xa584('0x3c')]('-')[0x0]][_0xa584('0x42')],'destconnectedlinenum':_0x5c5aef[_0xa584('0x3d')],'routealias':_0x4c7800},{'showHidden':![],'depth':null}));this['emit'](util[_0xa584('0x50')]('user:%s',this[_0xa584('0x14')][_0x5c5aef[_0xa584('0x3b')]['split']('-')[0x0]]['name']),'user:agentconnect',{'destaccountcode':this[_0xa584('0x14')][_0x5c5aef[_0xa584('0x3b')]['split']('-')[0x0]][_0xa584('0x42')],'destconnectedlinenum':_0x5c5aef['exten'],'routealias':_0x4c7800});}}}}catch(_0x8115d6){logger[_0xa584('0x2b')](_0xa584('0x6e'),_0x5c5aef[_0xa584('0x33')],util[_0xa584('0x2d')](_0x8115d6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa584('0x2e')][_0xa584('0x6f')]=function(_0x2fb819,_0x3909cc){try{if(this[_0xa584('0x13')][_0x2fb819]){logger[_0xa584('0x31')](_0xa584('0x70'),_0x2fb819,_0x3909cc);this['channels'][_0x2fb819][_0xa584('0x71')]=!![];if(_[_0xa584('0x72')](_0x3909cc,'.wav49')){_0x3909cc=_0x3909cc[_0xa584('0x73')](_0xa584('0x74'),_0xa584('0x75'));}this[_0xa584('0x13')][_0x2fb819][_0xa584('0x76')]=_0x3909cc;var _0x2b453f=_[_0xa584('0x77')](this[_0xa584('0x13')][_0x2fb819]['monitors'],{'filename':_0x3909cc});if(_['isNil'](_0x2b453f)){this[_0xa584('0x13')][_0x2fb819]['monitors'][_0xa584('0x78')]({'filename':_0x3909cc,'createdAt':moment()[_0xa584('0x50')](_0xa584('0x4b')),'mixmonitorid':'','status':_0xa584('0x79')});}}}catch(_0x56a66d){logger[_0xa584('0x2b')](_0xa584('0x7a'),_0x2fb819,util['inspect'](_0x56a66d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa584('0x2e')][_0xa584('0x1d')]=function(_0x184d36){try{if(this[_0xa584('0x2f')](_0x184d36)){logger[_0xa584('0x46')]('[%s][voiceCallReport][varset]\x20event:',_0x184d36[_0xa584('0x33')],util[_0xa584('0x2d')](_0x184d36,{'showHidden':![],'depth':null}));if(this[_0xa584('0x13')][_0x184d36[_0xa584('0x33')]]&&_0x184d36[_0xa584('0x3b')]!=_0xa584('0x48')){if(this['isNotNull'](_0x184d36[_0xa584('0x7b')])){if(this['isNotNull'](_0x184d36[_0xa584('0x7b')][_0xa584('0x7c')])){logger[_0xa584('0x31')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x184d36['uniqueid'],_0x184d36[_0xa584('0x7d')]);this[_0xa584('0x6f')](_0x184d36[_0xa584('0x33')],_0x184d36[_0xa584('0x7d')]);}else if(this[_0xa584('0x2f')](_0x184d36[_0xa584('0x7b')][_0xa584('0x7e')])){logger['info'](_0xa584('0x7f'),_0x184d36[_0xa584('0x33')],_0x184d36[_0xa584('0x7d')]);this[_0xa584('0x13')][_0x184d36[_0xa584('0x33')]][_0xa584('0x34')]=_0x184d36[_0xa584('0x7d')];}else if(this[_0xa584('0x2f')](_0x184d36['variable'][_0xa584('0x80')])){logger['info'](_0xa584('0x81'),_0x184d36[_0xa584('0x33')],_0x184d36[_0xa584('0x7d')]);this[_0xa584('0x13')][_0x184d36[_0xa584('0x33')]][_0xa584('0x82')]=_0x184d36[_0xa584('0x7d')];}else if(this[_0xa584('0x2f')](_0x184d36[_0xa584('0x7b')][_0xa584('0x83')])){logger[_0xa584('0x31')](_0xa584('0x84'),_0x184d36[_0xa584('0x33')],_0x184d36[_0xa584('0x7d')]);this[_0xa584('0x13')][_0x184d36[_0xa584('0x33')]]['type']=_0x184d36[_0xa584('0x7d')];}else if(this[_0xa584('0x2f')](_0x184d36['variable']['xmd-queue'])){logger[_0xa584('0x31')](_0xa584('0x85'),_0x184d36['uniqueid'],_0x184d36[_0xa584('0x7d')]['split'](',')[0x0]);this[_0xa584('0x13')][_0x184d36[_0xa584('0x33')]][_0xa584('0x7')]=_0x184d36[_0xa584('0x7d')][_0xa584('0x3c')](',')[0x0];}else if(this[_0xa584('0x2f')](_0x184d36[_0xa584('0x7b')][_0xa584('0x86')])){logger[_0xa584('0x31')](_0xa584('0x87'),_0x184d36[_0xa584('0x33')],_0x184d36[_0xa584('0x7d')]);this['channels'][_0x184d36['uniqueid']][_0xa584('0x88')]=_0x184d36[_0xa584('0x7d')];}else if(this[_0xa584('0x2f')](_0x184d36[_0xa584('0x7b')][_0xa584('0x89')])){logger[_0xa584('0x31')](_0xa584('0x8a'),_0x184d36[_0xa584('0x33')],_0x184d36['value']);this[_0xa584('0x13')][_0x184d36[_0xa584('0x33')]][_0xa584('0x8b')]=_0x184d36['value'];}else if(this[_0xa584('0x2f')](_0x184d36['variable']['xmd-callerid-preview'])){logger[_0xa584('0x31')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0x184d36[_0xa584('0x33')],_0x184d36[_0xa584('0x7d')]);this['channels'][_0x184d36[_0xa584('0x33')]]['calleridpreview']=_0x184d36['value'];}else if(this[_0xa584('0x2f')](_0x184d36[_0xa584('0x7b')][_0xa584('0x8c')])){logger[_0xa584('0x31')](_0xa584('0x8d'),_0x184d36['uniqueid'],_0x184d36[_0xa584('0x7d')]);this[_0xa584('0x13')][_0x184d36['uniqueid']]['queue']=_0x184d36[_0xa584('0x7d')];}else if(this['isNotNull'](_0x184d36[_0xa584('0x7b')][_0xa584('0x8e')])){logger[_0xa584('0x31')](_0xa584('0x8f'),_0x184d36[_0xa584('0x33')],_0x184d36[_0xa584('0x7d')]);this['channels'][_0x184d36['uniqueid']][_0xa584('0x90')]=_0x184d36['value'];}}}else if(this[_0xa584('0x2f')](_0x184d36[_0xa584('0x7b')][_0xa584('0x7c')])){if(_0x184d36['value']){var _0x285400=path['parse'](_0x184d36[_0xa584('0x7d')])[_0xa584('0x51')];logger[_0xa584('0x31')](_0xa584('0x91'),_0x285400,_0x184d36[_0xa584('0x7d')]);this[_0xa584('0x6f')](_0x285400,_0x184d36['value']);}}else if(this[_0xa584('0x13')][_0x184d36['linkedid']]){if(this[_0xa584('0x2f')](_0x184d36[_0xa584('0x7b')])){if(this[_0xa584('0x2f')](_0x184d36['variable'][_0xa584('0x8e')])){logger[_0xa584('0x31')](_0xa584('0x8f'),_0x184d36[_0xa584('0x35')],_0x184d36[_0xa584('0x7d')]);this[_0xa584('0x13')][_0x184d36['linkedid']]['sipcalllinkedid']=_0x184d36[_0xa584('0x7d')];}}}}}catch(_0x395492){logger[_0xa584('0x2b')](_0xa584('0x92'),_0x184d36[_0xa584('0x33')],util[_0xa584('0x2d')](_0x395492,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa584('0x2e')][_0xa584('0x1e')]=function(_0x388ad4){try{if(this[_0xa584('0x2f')](_0x388ad4)){logger[_0xa584('0x46')](_0xa584('0x93'),_0x388ad4[_0xa584('0x33')],util[_0xa584('0x2d')](_0x388ad4,{'showHidden':![],'depth':null}));if(this[_0xa584('0x49')][_0x388ad4['linkedid']]){if(this['channels'][this[_0xa584('0x49')][_0x388ad4['linkedid']][_0xa584('0x35')]]){this[_0xa584('0x13')][this[_0xa584('0x49')][_0x388ad4[_0xa584('0x35')]][_0xa584('0x35')]][_0xa584('0x33')]=_0x388ad4['uniqueid'];this['channels'][this[_0xa584('0x49')][_0x388ad4[_0xa584('0x35')]][_0xa584('0x35')]][_0xa584('0x6a')]=this[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]]['answered'];this['channels'][this[_0xa584('0x49')][_0x388ad4[_0xa584('0x35')]][_0xa584('0x35')]][_0xa584('0x63')]=this[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]][_0xa584('0x63')];this[_0xa584('0x13')][this[_0xa584('0x49')][_0x388ad4[_0xa584('0x35')]][_0xa584('0x35')]][_0xa584('0x66')]=this[_0xa584('0x13')][this[_0xa584('0x49')][_0x388ad4['linkedid']][_0xa584('0x35')]][_0xa584('0x3b')];this['channels'][this[_0xa584('0x49')][_0x388ad4[_0xa584('0x35')]][_0xa584('0x35')]][_0xa584('0x67')]=this[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]][_0xa584('0x67')];this[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]]=this['channels'][this[_0xa584('0x49')][_0x388ad4[_0xa584('0x35')]][_0xa584('0x35')]];delete this[_0xa584('0x13')][this[_0xa584('0x49')][_0x388ad4[_0xa584('0x35')]][_0xa584('0x35')]];}else if(this[_0xa584('0x13')][this[_0xa584('0x49')][_0x388ad4[_0xa584('0x35')]][_0xa584('0x33')]]){this[_0xa584('0x13')][this['blindTransfers'][_0x388ad4['linkedid']][_0xa584('0x33')]]['uniqueid']=[this[_0xa584('0x13')][this[_0xa584('0x49')][_0x388ad4[_0xa584('0x35')]][_0xa584('0x33')]][_0xa584('0x35')],this[_0xa584('0x13')][this[_0xa584('0x49')][_0x388ad4['linkedid']][_0xa584('0x33')]]['linkedid']=this[_0xa584('0x13')][this[_0xa584('0x49')][_0x388ad4['linkedid']][_0xa584('0x33')]]['uniqueid']][0x0];this[_0xa584('0x13')][this[_0xa584('0x49')][_0x388ad4['linkedid']]['uniqueid']][_0xa584('0x6a')]=this[_0xa584('0x13')][_0x388ad4['uniqueid']][_0xa584('0x6a')];this[_0xa584('0x13')][this['blindTransfers'][_0x388ad4[_0xa584('0x35')]][_0xa584('0x33')]]['answertime']=this[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]][_0xa584('0x63')];this[_0xa584('0x13')][this[_0xa584('0x49')][_0x388ad4['linkedid']][_0xa584('0x33')]][_0xa584('0x66')]=this['channels'][this[_0xa584('0x49')][_0x388ad4['linkedid']][_0xa584('0x33')]]['channel'];this[_0xa584('0x13')][this[_0xa584('0x49')][_0x388ad4['linkedid']][_0xa584('0x33')]][_0xa584('0x67')]=this[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]][_0xa584('0x67')];this[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]]=this[_0xa584('0x13')][this[_0xa584('0x49')][_0x388ad4['linkedid']][_0xa584('0x33')]];delete this[_0xa584('0x13')][this[_0xa584('0x49')][_0x388ad4[_0xa584('0x35')]]['uniqueid']];}}if(this[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]]){logger[_0xa584('0x31')](_0xa584('0x94'),_0x388ad4[_0xa584('0x33')],_0x388ad4[_0xa584('0x95')]);var _0xcf9cca=moment();this['channels'][_0x388ad4[_0xa584('0x33')]]['endtime']=_0xcf9cca[_0xa584('0x50')](_0xa584('0x4b'));this[_0xa584('0x13')][_0x388ad4['uniqueid']][_0xa584('0x59')]=_0xcf9cca[_0xa584('0x64')](this[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]][_0xa584('0x58')],_0xa584('0x5a'));if(this['channels'][_0x388ad4[_0xa584('0x33')]][_0xa584('0x6a')]){this[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]]['billableseconds']=_0xcf9cca[_0xa584('0x64')](this['channels'][_0x388ad4[_0xa584('0x33')]]['answertime'],'seconds');this[_0xa584('0x13')][_0x388ad4['uniqueid']][_0xa584('0x6b')]=this[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]][_0xa584('0x59')]-this['channels'][_0x388ad4[_0xa584('0x33')]][_0xa584('0x96')];}if(_0x388ad4[_0xa584('0x39')]===_0xa584('0x3a')){if(this[_0xa584('0x14')][_0x388ad4[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]]){this['agents'][_0x388ad4[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]]=_[_0xa584('0x97')](this[_0xa584('0x14')][_0x388ad4[_0xa584('0x3b')]['split']('-')[0x0]],[_0xa584('0x3f')]);logger[_0xa584('0x46')](_0xa584('0x98'),_0x388ad4[_0xa584('0x33')],util['inspect']({'id':this[_0xa584('0x14')][_0x388ad4[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]]['id'],'destaccountcode':this[_0xa584('0x14')][_0x388ad4[_0xa584('0x3b')][_0xa584('0x3c')]('-')[0x0]][_0xa584('0x42')]},{'showHidden':![],'depth':null}));this[_0xa584('0x30')](util[_0xa584('0x50')](_0xa584('0x40'),this[_0xa584('0x14')][_0x388ad4[_0xa584('0x3b')]['split']('-')[0x0]][_0xa584('0x51')]),'user:agentcomplete',{'id':this[_0xa584('0x14')][_0x388ad4['channel'][_0xa584('0x3c')]('-')[0x0]]['id'],'destaccountcode':this[_0xa584('0x14')][_0x388ad4['channel'][_0xa584('0x3c')]('-')[0x0]]['accountcode']});}}var _0x352cf7=this;Promise[_0xa584('0x99')]()['then'](function(){var _0x507f73=_0x352cf7['channels'][_0x388ad4[_0xa584('0x33')]];if(typeof _0x507f73['transferType']==='undefined')return;if(_[_0xa584('0x9a')](_0x507f73[_0xa584('0x9b')]))return;return RpcSetting['getSettings']()[_0xa584('0x9c')](function(_0x2f308d){if(!_0x2f308d[_0xa584('0x9d')])return;return Promise[_0xa584('0x99')]()[_0xa584('0x9c')](function(){return ami[_0xa584('0x9e')]({'action':_0xa584('0x9f'),'channel':_0x507f73[_0xa584('0x3b')]})[_0xa584('0xa0')](function(){});})[_0xa584('0x9c')](function(){return ami[_0xa584('0x9e')]({'action':'StopMixMonitor','channel':_0x507f73[_0xa584('0x66')]})['catch'](function(){})[_0xa584('0xa1')](function(){var _0xaabd0a=_0x352cf7[_0xa584('0x14')][_0x507f73[_0xa584('0x66')][_0xa584('0x3c')]('-')[0x0]];if(!_0xaabd0a)return;io[_0xa584('0x30')](_0xa584('0xa2'),{'agentId':_0xaabd0a['id'],'uniqueid':_0x507f73[_0xa584('0x33')]});});});});})[_0xa584('0x9c')](function(){if(_0x388ad4[_0xa584('0xa3')]===_0xa584('0xa4')){_0x352cf7[_0xa584('0x49')][_0x388ad4[_0xa584('0x33')]]=_0x388ad4;}else{if(_0x352cf7[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]][_0xa584('0xa5')]==='outbound'&&_0x352cf7[_0xa584('0x49')][_0x388ad4[_0xa584('0x33')]]){_0x352cf7[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]][_0xa584('0x33')]=[_0x352cf7[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]][_0xa584('0x35')],_0x352cf7[_0xa584('0x13')][_0x388ad4['uniqueid']][_0xa584('0x35')]=_0x352cf7['channels'][_0x388ad4[_0xa584('0x33')]]['uniqueid']][0x0];delete _0x352cf7[_0xa584('0x49')][_0x388ad4[_0xa584('0x33')]];}}logger[_0xa584('0x46')](_0xa584('0xa6'),_0x388ad4['uniqueid'],util['inspect'](_0x352cf7[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]],{'showHidden':![],'depth':null}));ami[_0xa584('0x30')](_0xa584('0xa7'),_0x352cf7[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]]);delete _0x352cf7[_0xa584('0x13')][_0x388ad4[_0xa584('0x33')]];});}}}catch(_0x44eae5){logger['error'](_0xa584('0xa8'),_0x388ad4[_0xa584('0x33')],util[_0xa584('0x2d')](_0x44eae5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa584('0x2e')][_0xa584('0x22')]=function(_0x238d6e){try{if(this[_0xa584('0x2f')](_0x238d6e)){logger[_0xa584('0x31')](_0xa584('0xa9'),_0x238d6e[_0xa584('0x33')],_0x238d6e['origtransferercalleridnum'],_0x238d6e[_0xa584('0xaa')]);logger['debug'](_0xa584('0xab'),_0x238d6e['uniqueid'],util[_0xa584('0x2d')](_0x238d6e,{'showHidden':![],'depth':null}));var _0x4f207c;if(this[_0xa584('0x13')][_0x238d6e[_0xa584('0xac')]]){this['channels'][_0x238d6e[_0xa584('0xac')]]['transfercalleridnum']=_0x238d6e['origtransferercalleridnum'];this[_0xa584('0x13')][_0x238d6e[_0xa584('0xac')]][_0xa584('0xad')]=_0x238d6e['transfertargetcalleridnum'];if(this[_0xa584('0x13')][_0x238d6e[_0xa584('0xae')]]){_0x4f207c=this[_0xa584('0x13')][_0x238d6e['secondtransfereruniqueid']];this['channels'][_0x238d6e['secondtransfereruniqueid']]=this[_0xa584('0x13')][_0x238d6e[_0xa584('0xac')]];this['channels'][_0x238d6e['transfereeuniqueid']]=_0x4f207c;}}else if(this[_0xa584('0x13')][_0x238d6e[_0xa584('0xaf')]]){this[_0xa584('0x13')][_0x238d6e['transfertargetuniqueid']]['transfercalleridnum']=_0x238d6e[_0xa584('0xb0')];this['channels'][_0x238d6e['transfertargetuniqueid']][_0xa584('0xad')]=_0x238d6e[_0xa584('0xaa')];if(this[_0xa584('0x13')][_0x238d6e[_0xa584('0xb1')]]){_0x4f207c=this[_0xa584('0x13')][_0x238d6e[_0xa584('0xb1')]];this[_0xa584('0x13')][_0x238d6e['origtransfereruniqueid']]=this['channels'][_0x238d6e['transfertargetuniqueid']];this[_0xa584('0x13')][_0x238d6e[_0xa584('0xaf')]]=_0x4f207c;}}if((this[_0xa584('0x13')][_0x238d6e['origtransfereruniqueid']]||this[_0xa584('0x13')][_0x238d6e[_0xa584('0xb2')]])&&this[_0xa584('0x13')][_0x238d6e[_0xa584('0xae')]]){var _0x567e14=_[_0xa584('0xb3')]([this[_0xa584('0x13')][_0x238d6e['origtransfereruniqueid']],this['channels'][_0x238d6e[_0xa584('0xb2')]],this[_0xa584('0x13')][_0x238d6e[_0xa584('0xae')]]],function(_0xa89633){return _0xa89633&&_0xa89633[_0xa584('0xa5')]===_0xa584('0xb4')&&_0xa89633[_0xa584('0xb5')];});if(_0x567e14){if(this[_0xa584('0x13')][_0x238d6e[_0xa584('0xb1')]])this[_0xa584('0x13')][_0x238d6e['origtransfereruniqueid']][_0xa584('0xb6')]='ATTENDED';if(this['channels'][_0x238d6e['origtransfererlinkedid']])this[_0xa584('0x13')][_0x238d6e[_0xa584('0xb2')]][_0xa584('0xb6')]=_0xa584('0xb7');this[_0xa584('0x13')][_0x238d6e[_0xa584('0xae')]][_0xa584('0xb6')]=_0xa584('0xb7');}}}}catch(_0x4263ea){logger[_0xa584('0x2b')](_0xa584('0xb8'),_0x238d6e[_0xa584('0x33')],util[_0xa584('0x2d')](_0x4263ea,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa584('0x2e')][_0xa584('0x24')]=function(_0x3bf35f){try{if(this[_0xa584('0x2f')](_0x3bf35f)){logger[_0xa584('0x31')](_0xa584('0xb9'),_0x3bf35f[_0xa584('0x33')],_0x3bf35f[_0xa584('0xba')],_0x3bf35f[_0xa584('0xbb')]);logger['debug'](_0xa584('0xbc'),_0x3bf35f[_0xa584('0x33')],util[_0xa584('0x2d')](_0x3bf35f,{'showHidden':![],'depth':null}));if(this[_0xa584('0x13')][_0x3bf35f[_0xa584('0xac')]]){this['channels'][_0x3bf35f[_0xa584('0xac')]][_0xa584('0xbd')]=_0x3bf35f[_0xa584('0xba')];this[_0xa584('0x13')][_0x3bf35f[_0xa584('0xac')]][_0xa584('0xad')]=_0x3bf35f['extension'];this[_0xa584('0x13')][_0x3bf35f['transfereeuniqueid']]['transferType']=_0xa584('0xbe');this[_0xa584('0x1e')]({'event':'BlindTransfer','uniqueid':_0x3bf35f[_0xa584('0xac')],'linkedid':_0x3bf35f[_0xa584('0xbf')],'context':_0x3bf35f['context'],'channel':_0x3bf35f[_0xa584('0xc0')]});}else{this[_0xa584('0x13')][_0x3bf35f[_0xa584('0xbf')]][_0xa584('0xb6')]=_0xa584('0xbe');this[_0xa584('0x1e')]({'event':'BlindTransfer','uniqueid':_0x3bf35f[_0xa584('0xbf')],'linkedid':_0x3bf35f[_0xa584('0xac')],'context':_0x3bf35f[_0xa584('0x39')],'channel':_0x3bf35f[_0xa584('0xc0')]});}}}catch(_0x482ba3){logger['error'](_0xa584('0xc1'),_0x3bf35f['uniqueid'],util['inspect'](_0x482ba3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa584('0x2e')][_0xa584('0x26')]=function(_0x2eafc0){try{if(this[_0xa584('0x2f')](_0x2eafc0)){logger[_0xa584('0x46')](_0xa584('0xc2'),_0x2eafc0[_0xa584('0x33')],util[_0xa584('0x2d')](_0x2eafc0,{'showHidden':![],'depth':null}));if(this[_0xa584('0x13')][_0x2eafc0['uniqueid']]){if(!_['isNil'](this[_0xa584('0x13')][_0x2eafc0[_0xa584('0x33')]]['answertime'])){this[_0xa584('0x13')][_0x2eafc0[_0xa584('0x33')]][_0xa584('0xc3')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0xa584('0x31')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x2eafc0['uniqueid'],this[_0xa584('0x13')][_0x2eafc0['uniqueid']][_0xa584('0xc3')]);}}}}catch(_0x1e28a4){logger['error']('[%s][voiceCallReport][musiconholdstart]',_0x2eafc0['uniqueid'],util[_0xa584('0x2d')](_0x1e28a4,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa584('0x2e')][_0xa584('0x28')]=function(_0x276436){try{if(this[_0xa584('0x2f')](_0x276436)){logger['debug'](_0xa584('0xc4'),_0x276436[_0xa584('0x33')],util[_0xa584('0x2d')](_0x276436,{'showHidden':![],'depth':null}));if(this[_0xa584('0x13')][_0x276436[_0xa584('0x33')]]){if(!_['isNil'](this['channels'][_0x276436['uniqueid']][_0xa584('0xc3')])){this[_0xa584('0x13')][_0x276436['uniqueid']][_0xa584('0xc5')]+=moment()[_0xa584('0xc6')](0x0)[_0xa584('0x64')](this[_0xa584('0x13')][_0x276436[_0xa584('0x33')]][_0xa584('0xc3')],_0xa584('0x5a'));logger['info'](_0xa584('0xc7'),_0x276436[_0xa584('0x33')],this[_0xa584('0x13')][_0x276436['uniqueid']][_0xa584('0xc5')]);delete this['channels'][_0x276436[_0xa584('0x33')]][_0xa584('0xc3')];}}}}catch(_0xdba1d2){logger[_0xa584('0x2b')](_0xa584('0xc8'),_0x276436[_0xa584('0x33')],util['inspect'](_0xdba1d2,{'showHidden':![],'depth':null}));}};module[_0xa584('0xc9')]=VoiceCallReport;
\ No newline at end of file
index 27e679f..bd28fcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ab1=['isNotNull','isUndefined','emit','syncDialBegin','debug','[%s][voiceDialReport][dialbegin]\x20event:','inspect','channels','uniqueid','format','YYYY-MM-DD\x20HH:mm:ss','channel','substring','lastIndexOf','omit','event','privilege','info','membername','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','[%s][voiceDialReport][dialbegin]','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','addVariable','keys','value','variable','outboundrouteid','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberpenalty','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','holdtime','sumHoldTime','sumBillable','billableseconds','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','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]','[%s][voiceDialReport][newexten]\x20event:','application','applicationdata','appdata','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','ioredis','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','outboundChannels','outbound','applications','variables','bind','dialend','varset','syncVarSet','newexten','syncNewExten','syncHangup','prototype'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x4ab1,0x13a));var _0x14ab=function(_0xeb916d,_0x1541cb){_0xeb916d=_0xeb916d-0x0;var _0x1dcf00=_0x4ab1[_0xeb916d];return _0x1dcf00;};'use strict';var _=require(_0x14ab('0x0'));var moment=require(_0x14ab('0x1'));var util=require('util');var Redis=require(_0x14ab('0x2'));var config=require('../../../config/environment');var logger=require(_0x14ab('0x3'))(_0x14ab('0x4'));var ami=require(_0x14ab('0x5'));config[_0x14ab('0x6')]=_[_0x14ab('0x7')](config['redis'],{'host':_0x14ab('0x8'),'port':0x18eb});var io=require(_0x14ab('0x9'))(new Redis(config['redis']));function VoiceDialReport(_0x4afc51){this['channels']=_0x4afc51[_0x14ab('0xa')];this[_0x14ab('0xb')]=_0x4afc51[_0x14ab('0xb')];this[_0x14ab('0xc')]={};this[_0x14ab('0xd')]={};ami['on']('dialbegin',this['syncDialBegin'][_0x14ab('0xe')](this));ami['on'](_0x14ab('0xf'),this['syncDialEnd'][_0x14ab('0xe')](this));ami['on'](_0x14ab('0x10'),this[_0x14ab('0x11')][_0x14ab('0xe')](this));ami['on'](_0x14ab('0x12'),this[_0x14ab('0x13')][_0x14ab('0xe')](this));ami['on']('hangup',this[_0x14ab('0x14')][_0x14ab('0xe')](this));}VoiceDialReport[_0x14ab('0x15')][_0x14ab('0x16')]=function(_0x4be83f){return _0x4be83f!==null&&!_[_0x14ab('0x17')](_0x4be83f);};VoiceDialReport[_0x14ab('0x15')][_0x14ab('0x18')]=function(_0x52e4a7,_0x567155,_0xe57f14){io['to'](_0x52e4a7)[_0x14ab('0x18')](_0x567155,_0xe57f14);};VoiceDialReport['prototype'][_0x14ab('0x19')]=function(_0x50136f){try{if(this[_0x14ab('0x16')](_0x50136f)){logger[_0x14ab('0x1a')](_0x14ab('0x1b'),_0x50136f['uniqueid'],util[_0x14ab('0x1c')](_0x50136f,{'showHidden':![],'depth':null}));if(this['channels'][_0x50136f['uniqueid']]){_['merge'](this[_0x14ab('0x1d')][_0x50136f[_0x14ab('0x1e')]],{'starttime':moment()[_0x14ab('0x1f')](_0x14ab('0x20')),'lastevent':'called','interface':_0x50136f[_0x14ab('0x21')][_0x14ab('0x22')](0x0,_0x50136f[_0x14ab('0x21')]['lastIndexOf']('-')),'membername':_0x50136f[_0x14ab('0x21')]['substring'](_0x50136f[_0x14ab('0x21')][_0x14ab('0x23')]('/')+0x1,_0x50136f['channel'][_0x14ab('0x23')]('-'))},_[_0x14ab('0x24')](_0x50136f,[_0x14ab('0x25'),_0x14ab('0x26')]));logger[_0x14ab('0x27')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x50136f[_0x14ab('0x1e')],this[_0x14ab('0x1d')][_0x50136f[_0x14ab('0x1e')]][_0x14ab('0x28')],this[_0x14ab('0x1d')][_0x50136f[_0x14ab('0x1e')]]['interface']);logger[_0x14ab('0x1a')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x50136f[_0x14ab('0x1e')],util[_0x14ab('0x1c')](this[_0x14ab('0x1d')][_0x50136f[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));if(this['applications'][_0x50136f[_0x14ab('0x1e')]])_['merge'](this['channels'][_0x50136f['uniqueid']],this[_0x14ab('0xc')][_0x50136f['uniqueid']]);this[_0x14ab('0x18')](_0x14ab('0x29'),_0x14ab('0x2a'),this[_0x14ab('0x1d')][_0x50136f[_0x14ab('0x1e')]]);logger[_0x14ab('0x1a')](_0x14ab('0x2b'),_0x50136f[_0x14ab('0x1e')],util[_0x14ab('0x1c')](this['channels'][_0x50136f['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x14ab('0x18')]('custom:dialbegin',this['channels'][_0x50136f[_0x14ab('0x1e')]]);}}}catch(_0x28f63c){logger[_0x14ab('0x2c')](_0x14ab('0x2d'),_0x50136f['uniqueid'],util[_0x14ab('0x1c')](_0x28f63c,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncDialEnd']=function(_0x59f173){try{if(this[_0x14ab('0x16')](_0x59f173)){logger[_0x14ab('0x1a')]('[%s][voiceDialReport][dialend]\x20event:',_0x59f173[_0x14ab('0x1e')],util['inspect'](_0x59f173,{'showHidden':![],'depth':null}));if(this[_0x14ab('0x1d')][_0x59f173[_0x14ab('0x1e')]]){this[_0x14ab('0x1d')][_0x59f173[_0x14ab('0x1e')]][_0x14ab('0x2e')]=_0x59f173['dialstatus'];if(_0x59f173['dialstatus']===_0x14ab('0x2f')){this[_0x14ab('0x1d')][_0x59f173[_0x14ab('0x1e')]][_0x14ab('0x30')]=_0x59f173[_0x14ab('0x30')];this[_0x14ab('0x1d')][_0x59f173[_0x14ab('0x1e')]][_0x14ab('0x31')]=_0x59f173[_0x14ab('0x31')];this[_0x14ab('0x1d')][_0x59f173[_0x14ab('0x1e')]][_0x14ab('0x32')]=moment()[_0x14ab('0x1f')](_0x14ab('0x20'));this['channels'][_0x59f173['uniqueid']][_0x14ab('0x33')]=_0x14ab('0x34');logger[_0x14ab('0x27')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x59f173[_0x14ab('0x1e')],_0x59f173['channel'][_0x14ab('0x22')](_0x59f173['channel']['lastIndexOf']('/')+0x1,_0x59f173['channel'][_0x14ab('0x23')]('-')));logger[_0x14ab('0x1a')](_0x14ab('0x35'),_0x59f173[_0x14ab('0x1e')],util[_0x14ab('0x1c')](this[_0x14ab('0x1d')][_0x59f173['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x14ab('0x18')](_0x14ab('0x36'),this[_0x14ab('0x1d')][_0x59f173['uniqueid']]);}logger[_0x14ab('0x1a')](_0x14ab('0x37'),_0x59f173[_0x14ab('0x1e')],util[_0x14ab('0x1c')](this[_0x14ab('0x1d')][_0x59f173[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));this[_0x14ab('0x18')](_0x14ab('0x29'),'voice_outbound_channel:save',this['channels'][_0x59f173[_0x14ab('0x1e')]]);}}}catch(_0x27ca3c){logger[_0x14ab('0x2c')](_0x14ab('0x38'),_0x59f173['uniqueid'],util[_0x14ab('0x1c')](_0x27ca3c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x14ab('0x15')][_0x14ab('0x11')]=function(_0x4358f3){try{if(this[_0x14ab('0x16')](_0x4358f3)){logger[_0x14ab('0x1a')]('[%s][voiceDialReport][varset]\x20event:',_0x4358f3[_0x14ab('0x1e')],util[_0x14ab('0x1c')](_0x4358f3,{'showHidden':![],'depth':null}));this[_0x14ab('0x39')](_0x4358f3[_0x14ab('0x1e')],_[_0x14ab('0x3a')](_0x4358f3['variable'])[0x0],_0x4358f3[_0x14ab('0x3b')]);if(this[_0x14ab('0x16')](_0x4358f3['variable'])&&this[_0x14ab('0x16')](_0x4358f3[_0x14ab('0x3c')][_0x14ab('0x3d')])){if(_[_0x14ab('0x17')](this[_0x14ab('0x1d')][_0x4358f3[_0x14ab('0x1e')]])){this[_0x14ab('0x1d')][_0x4358f3[_0x14ab('0x1e')]]={'routeId':_0x4358f3[_0x14ab('0x3b')],'variables':this['variables'][_0x4358f3[_0x14ab('0x1e')]],'motionChannel':'voice'};logger[_0x14ab('0x27')](_0x14ab('0x3e'),_0x4358f3[_0x14ab('0x1e')],_0x4358f3[_0x14ab('0x3c')][_0x14ab('0x3d')],_['keys'](_0x4358f3[_0x14ab('0x3c')])[0x0],_0x4358f3[_0x14ab('0x3b')]);logger[_0x14ab('0x1a')](_0x14ab('0x3f'),_0x4358f3['uniqueid'],util[_0x14ab('0x1c')](this[_0x14ab('0x1d')][_0x4358f3[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));this[_0x14ab('0x18')](_0x14ab('0x29'),_0x14ab('0x2a'),this['channels'][_0x4358f3[_0x14ab('0x1e')]]);}}}}catch(_0x10edc6){logger[_0x14ab('0x2c')]('[%s][voiceDialReport][varset]',_0x4358f3['uniqueid'],util[_0x14ab('0x1c')](_0x10edc6,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x14ab('0x15')][_0x14ab('0x39')]=function(_0x133c29,_0x400b5c,_0x1fe052){var _0x5c3b26=['rtpaudioqos',_0x14ab('0x40'),'rtpaudioqosjitter',_0x14ab('0x41'),_0x14ab('0x42'),_0x14ab('0x43'),_0x14ab('0x44'),'rtpaudioqosrttbridged',_0x14ab('0x45'),'sipuri',_0x14ab('0x46'),_0x14ab('0x47'),'membercalls',_0x14ab('0x48'),_0x14ab('0x49'),'memberlastcall','membername',_0x14ab('0x4a'),'memberrealtime'];if(!_[_0x14ab('0x4b')](_0x400b5c)&&!_[_0x14ab('0x4c')](_0x5c3b26,_0x400b5c)){if(_[_0x14ab('0x17')](this[_0x14ab('0xd')][_0x133c29])){this[_0x14ab('0xd')][_0x133c29]={};}this[_0x14ab('0xd')][_0x133c29][_0x400b5c]=_0x1fe052;}};VoiceDialReport[_0x14ab('0x15')]['syncHangup']=function(_0x1b81a4){try{if(this['isNotNull'](_0x1b81a4)){logger[_0x14ab('0x1a')](_0x14ab('0x4d'),_0x1b81a4[_0x14ab('0x1e')],util[_0x14ab('0x1c')](_0x1b81a4,{'showHidden':![],'depth':null}));if(this[_0x14ab('0x1d')][_0x1b81a4['uniqueid']]){logger[_0x14ab('0x27')](_0x14ab('0x4e'),_0x1b81a4[_0x14ab('0x1e')],_0x1b81a4[_0x14ab('0x4f')]);this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x50')]=moment()['format'](_0x14ab('0x20'));this[_0x14ab('0x1d')][_0x1b81a4['uniqueid']][_0x14ab('0x51')]=moment(this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x50')])[_0x14ab('0x52')](this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x53')],_0x14ab('0x54'));this['channels'][_0x1b81a4[_0x14ab('0x1e')]]['lastevent']=_0x14ab('0x55');this[_0x14ab('0xb')]['total']+=0x1;if(this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x32')]){this['outbound']['answered']+=0x1;this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x56')]=moment(this['channels'][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x32')])[_0x14ab('0x52')](this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x53')],_0x14ab('0x54'));this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]]['billableseconds']=moment(this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]]['endtime'])[_0x14ab('0x52')](this['channels'][_0x1b81a4['uniqueid']]['answertime'],_0x14ab('0x54'));this['outbound'][_0x14ab('0x57')]+=this['channels'][_0x1b81a4[_0x14ab('0x1e')]]['holdtime']||0x0;this['outbound'][_0x14ab('0x58')]+=this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x59')];}this[_0x14ab('0xb')][_0x14ab('0x5a')]+=this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x51')];logger[_0x14ab('0x1a')](_0x14ab('0x5b'),_0x1b81a4[_0x14ab('0x1e')],util['inspect'](this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));ami['emit'](_0x14ab('0x5c'),this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]]);logger[_0x14ab('0x1a')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x1b81a4[_0x14ab('0x1e')],util[_0x14ab('0x1c')](this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));ami[_0x14ab('0x18')](_0x14ab('0x5d'),this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]]);logger[_0x14ab('0x1a')](_0x14ab('0x5e'),_0x1b81a4['uniqueid'],util[_0x14ab('0x1c')](this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));this[_0x14ab('0x18')](_0x14ab('0x29'),_0x14ab('0x5f'),this[_0x14ab('0xb')]);logger[_0x14ab('0x27')](_0x14ab('0x60'),JSON[_0x14ab('0x61')](this[_0x14ab('0x1d')][_0x1b81a4['uniqueid']]));logger['debug'](_0x14ab('0x62'),_0x1b81a4[_0x14ab('0x1e')],util['inspect'](this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));this['emit'](_0x14ab('0x29'),_0x14ab('0x63'),this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]]);delete this['channels'][_0x1b81a4[_0x14ab('0x1e')]];}else if(this['channels'][_0x1b81a4[_0x14ab('0x64')]]){this['channels'][_0x1b81a4['linkedid']][_0x14ab('0x1e')]=this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x64')]][_0x14ab('0x65')];}if(this[_0x14ab('0xd')][_0x1b81a4[_0x14ab('0x1e')]]){delete this['variables'][_0x1b81a4[_0x14ab('0x1e')]];}}}catch(_0x5850df){logger['error'](_0x14ab('0x66'),_0x1b81a4[_0x14ab('0x1e')],util['inspect'](_0x5850df,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x14ab('0x15')]['syncNewExten']=function(_0x28a105){try{if(this[_0x14ab('0x16')](_0x28a105)){logger[_0x14ab('0x1a')](_0x14ab('0x67'),_0x28a105[_0x14ab('0x1e')],util[_0x14ab('0x1c')](_0x28a105,{'showHidden':![],'depth':null}));if(_0x28a105[_0x14ab('0x68')]['toLowerCase']()==='set'){_0x28a105[_0x14ab('0x69')]=(_0x28a105[_0x14ab('0x6a')]||_0x28a105[_0x14ab('0x69')])['toLowerCase']();if(_[_0x14ab('0x6b')](_0x28a105['applicationdata'],'cdr(')){if(_[_0x14ab('0x17')](this[_0x14ab('0xc')][_0x28a105[_0x14ab('0x1e')]]))this['applications'][_0x28a105[_0x14ab('0x1e')]]={};logger['info'](_0x14ab('0x6c'),_0x28a105[_0x14ab('0x1e')],_0x28a105[_0x14ab('0x68')],_0x28a105[_0x14ab('0x69')]);var _0x5a81d5=_0x28a105['applicationdata']['split']('=');var _0x2278ca=_0x5a81d5[0x0][_0x14ab('0x6d')](/cdr\((.*)\)/);if(_0x2278ca)this[_0x14ab('0xc')][_0x28a105[_0x14ab('0x1e')]][_0x2278ca[0x1]]=_0x5a81d5[0x1];}}}}catch(_0x4f4f70){logger[_0x14ab('0x2c')](_0x14ab('0x6e'),_0x28a105[_0x14ab('0x1e')],util[_0x14ab('0x1c')](_0x4f4f70,{'showHidden':![],'depth':null}));}};module[_0x14ab('0x6f')]=VoiceDialReport;
\ No newline at end of file
+var _0x6c67=['endtime','duration','diff','starttime','seconds','complete','answered','holdtime','sumHoldTime','sumBillable','billableseconds','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','application','toLowerCase','appdata','applicationdata','split','match','exports','lodash','moment','util','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','syncNewExten','hangup','prototype','isNotNull','isUndefined','emit','debug','uniqueid','inspect','merge','format','channel','lastIndexOf','event','privilege','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice_outbound_channel:save','error','dialstatus','connectedlinenum','connectedlinename','answertime','YYYY-MM-DD\x20HH:mm:ss','lastevent','connect','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','substring','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt'];(function(_0x173a07,_0x5de661){var _0x1ea8f7=function(_0x2a78ad){while(--_0x2a78ad){_0x173a07['push'](_0x173a07['shift']());}};_0x1ea8f7(++_0x5de661);}(_0x6c67,0x95));var _0x76c6=function(_0x2f45ea,_0x15c656){_0x2f45ea=_0x2f45ea-0x0;var _0x485a84=_0x6c67[_0x2f45ea];return _0x485a84;};'use strict';var _=require(_0x76c6('0x0'));var moment=require(_0x76c6('0x1'));var util=require(_0x76c6('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x76c6('0x3'))(_0x76c6('0x4'));var ami=require(_0x76c6('0x5'));config[_0x76c6('0x6')]=_[_0x76c6('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x76c6('0x8'))(new Redis(config['redis']));function VoiceDialReport(_0x5ac089){this[_0x76c6('0x9')]=_0x5ac089[_0x76c6('0xa')];this[_0x76c6('0xb')]=_0x5ac089['outbound'];this[_0x76c6('0xc')]={};this[_0x76c6('0xd')]={};ami['on'](_0x76c6('0xe'),this[_0x76c6('0xf')][_0x76c6('0x10')](this));ami['on'](_0x76c6('0x11'),this[_0x76c6('0x12')][_0x76c6('0x10')](this));ami['on'](_0x76c6('0x13'),this[_0x76c6('0x14')]['bind'](this));ami['on']('newexten',this[_0x76c6('0x15')][_0x76c6('0x10')](this));ami['on'](_0x76c6('0x16'),this['syncHangup'][_0x76c6('0x10')](this));}VoiceDialReport[_0x76c6('0x17')][_0x76c6('0x18')]=function(_0x2461aa){return _0x2461aa!==null&&!_[_0x76c6('0x19')](_0x2461aa);};VoiceDialReport['prototype'][_0x76c6('0x1a')]=function(_0x49f604,_0x3f1cbd,_0x34bc97){io['to'](_0x49f604)[_0x76c6('0x1a')](_0x3f1cbd,_0x34bc97);};VoiceDialReport['prototype'][_0x76c6('0xf')]=function(_0x2cbd45){try{if(this['isNotNull'](_0x2cbd45)){logger[_0x76c6('0x1b')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x2cbd45[_0x76c6('0x1c')],util[_0x76c6('0x1d')](_0x2cbd45,{'showHidden':![],'depth':null}));if(this['channels'][_0x2cbd45[_0x76c6('0x1c')]]){_[_0x76c6('0x1e')](this[_0x76c6('0x9')][_0x2cbd45['uniqueid']],{'starttime':moment()[_0x76c6('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':'called','interface':_0x2cbd45[_0x76c6('0x20')]['substring'](0x0,_0x2cbd45[_0x76c6('0x20')][_0x76c6('0x21')]('-')),'membername':_0x2cbd45['channel']['substring'](_0x2cbd45['channel'][_0x76c6('0x21')]('/')+0x1,_0x2cbd45[_0x76c6('0x20')][_0x76c6('0x21')]('-'))},_['omit'](_0x2cbd45,[_0x76c6('0x22'),_0x76c6('0x23')]));logger['info'](_0x76c6('0x24'),_0x2cbd45[_0x76c6('0x1c')],this[_0x76c6('0x9')][_0x2cbd45[_0x76c6('0x1c')]][_0x76c6('0x25')],this[_0x76c6('0x9')][_0x2cbd45['uniqueid']][_0x76c6('0x26')]);logger[_0x76c6('0x1b')](_0x76c6('0x27'),_0x2cbd45[_0x76c6('0x1c')],util['inspect'](this[_0x76c6('0x9')][_0x2cbd45['uniqueid']],{'showHidden':![],'depth':null}));if(this[_0x76c6('0xc')][_0x2cbd45[_0x76c6('0x1c')]])_[_0x76c6('0x1e')](this[_0x76c6('0x9')][_0x2cbd45[_0x76c6('0x1c')]],this['applications'][_0x2cbd45[_0x76c6('0x1c')]]);this['emit']('voice:outbound',_0x76c6('0x28'),this[_0x76c6('0x9')][_0x2cbd45[_0x76c6('0x1c')]]);logger[_0x76c6('0x1b')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x2cbd45['uniqueid'],util['inspect'](this[_0x76c6('0x9')][_0x2cbd45[_0x76c6('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x76c6('0x1a')]('custom:dialbegin',this[_0x76c6('0x9')][_0x2cbd45[_0x76c6('0x1c')]]);}}}catch(_0x1d1ba0){logger[_0x76c6('0x29')]('[%s][voiceDialReport][dialbegin]',_0x2cbd45['uniqueid'],util['inspect'](_0x1d1ba0,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x76c6('0x17')][_0x76c6('0x12')]=function(_0x218be4){try{if(this['isNotNull'](_0x218be4)){logger[_0x76c6('0x1b')]('[%s][voiceDialReport][dialend]\x20event:',_0x218be4[_0x76c6('0x1c')],util[_0x76c6('0x1d')](_0x218be4,{'showHidden':![],'depth':null}));if(this[_0x76c6('0x9')][_0x218be4[_0x76c6('0x1c')]]){this[_0x76c6('0x9')][_0x218be4[_0x76c6('0x1c')]]['dialstatus']=_0x218be4[_0x76c6('0x2a')];if(_0x218be4[_0x76c6('0x2a')]==='ANSWER'){this[_0x76c6('0x9')][_0x218be4[_0x76c6('0x1c')]][_0x76c6('0x2b')]=_0x218be4[_0x76c6('0x2b')];this[_0x76c6('0x9')][_0x218be4[_0x76c6('0x1c')]]['connectedlinename']=_0x218be4[_0x76c6('0x2c')];this[_0x76c6('0x9')][_0x218be4[_0x76c6('0x1c')]][_0x76c6('0x2d')]=moment()[_0x76c6('0x1f')](_0x76c6('0x2e'));this[_0x76c6('0x9')][_0x218be4['uniqueid']][_0x76c6('0x2f')]=_0x76c6('0x30');logger[_0x76c6('0x31')](_0x76c6('0x32'),_0x218be4[_0x76c6('0x1c')],_0x218be4['channel'][_0x76c6('0x33')](_0x218be4[_0x76c6('0x20')][_0x76c6('0x21')]('/')+0x1,_0x218be4['channel'][_0x76c6('0x21')]('-')));logger['debug']('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0x218be4['uniqueid'],util[_0x76c6('0x1d')](this[_0x76c6('0x9')][_0x218be4[_0x76c6('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x76c6('0x1a')](_0x76c6('0x34'),this['channels'][_0x218be4[_0x76c6('0x1c')]]);}logger['debug'](_0x76c6('0x35'),_0x218be4['uniqueid'],util[_0x76c6('0x1d')](this[_0x76c6('0x9')][_0x218be4['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x76c6('0x36'),'voice_outbound_channel:save',this[_0x76c6('0x9')][_0x218be4['uniqueid']]);}}}catch(_0x2a0fad){logger[_0x76c6('0x29')](_0x76c6('0x37'),_0x218be4[_0x76c6('0x1c')],util[_0x76c6('0x1d')](_0x2a0fad,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x76c6('0x17')][_0x76c6('0x14')]=function(_0x5f2aea){try{if(this[_0x76c6('0x18')](_0x5f2aea)){logger[_0x76c6('0x1b')](_0x76c6('0x38'),_0x5f2aea[_0x76c6('0x1c')],util[_0x76c6('0x1d')](_0x5f2aea,{'showHidden':![],'depth':null}));this[_0x76c6('0x39')](_0x5f2aea[_0x76c6('0x1c')],_[_0x76c6('0x3a')](_0x5f2aea[_0x76c6('0x3b')])[0x0],_0x5f2aea[_0x76c6('0x3c')]);if(this[_0x76c6('0x18')](_0x5f2aea['variable'])&&this[_0x76c6('0x18')](_0x5f2aea[_0x76c6('0x3b')][_0x76c6('0x3d')])){if(_['isUndefined'](this['channels'][_0x5f2aea[_0x76c6('0x1c')]])){this[_0x76c6('0x9')][_0x5f2aea['uniqueid']]={'routeId':_0x5f2aea[_0x76c6('0x3c')],'variables':this[_0x76c6('0xd')][_0x5f2aea['uniqueid']]};logger[_0x76c6('0x31')](_0x76c6('0x3e'),_0x5f2aea[_0x76c6('0x1c')],_0x5f2aea[_0x76c6('0x3b')][_0x76c6('0x3d')],_[_0x76c6('0x3a')](_0x5f2aea['variable'])[0x0],_0x5f2aea[_0x76c6('0x3c')]);logger[_0x76c6('0x1b')](_0x76c6('0x3f'),_0x5f2aea['uniqueid'],util['inspect'](this['channels'][_0x5f2aea[_0x76c6('0x1c')]],{'showHidden':![],'depth':null}));this[_0x76c6('0x1a')]('voice:outbound',_0x76c6('0x28'),this[_0x76c6('0x9')][_0x5f2aea['uniqueid']]);}}}}catch(_0xdb1547){logger[_0x76c6('0x29')](_0x76c6('0x40'),_0x5f2aea[_0x76c6('0x1c')],util[_0x76c6('0x1d')](_0xdb1547,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x76c6('0x17')]['addVariable']=function(_0x2529be,_0x34c10c,_0x2672e4){var _0x18e8d1=[_0x76c6('0x41'),_0x76c6('0x42'),_0x76c6('0x43'),_0x76c6('0x44'),_0x76c6('0x45'),_0x76c6('0x46'),_0x76c6('0x47'),_0x76c6('0x48'),_0x76c6('0x49'),'sipuri',_0x76c6('0x4a'),_0x76c6('0x4b'),_0x76c6('0x4c'),_0x76c6('0x4d'),_0x76c6('0x4e'),'memberlastcall',_0x76c6('0x25'),_0x76c6('0x4f'),_0x76c6('0x50')];if(!_[_0x76c6('0x51')](_0x34c10c)&&!_[_0x76c6('0x52')](_0x18e8d1,_0x34c10c)){if(_[_0x76c6('0x19')](this[_0x76c6('0xd')][_0x2529be])){this['variables'][_0x2529be]={};}this[_0x76c6('0xd')][_0x2529be][_0x34c10c]=_0x2672e4;}};VoiceDialReport[_0x76c6('0x17')][_0x76c6('0x53')]=function(_0x1f4c28){try{if(this[_0x76c6('0x18')](_0x1f4c28)){logger[_0x76c6('0x1b')](_0x76c6('0x54'),_0x1f4c28[_0x76c6('0x1c')],util['inspect'](_0x1f4c28,{'showHidden':![],'depth':null}));if(this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]]){logger['info'](_0x76c6('0x55'),_0x1f4c28[_0x76c6('0x1c')],_0x1f4c28[_0x76c6('0x56')]);this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]][_0x76c6('0x57')]=moment()[_0x76c6('0x1f')](_0x76c6('0x2e'));this['channels'][_0x1f4c28[_0x76c6('0x1c')]][_0x76c6('0x58')]=moment(this[_0x76c6('0x9')][_0x1f4c28['uniqueid']]['endtime'])[_0x76c6('0x59')](this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]][_0x76c6('0x5a')],_0x76c6('0x5b'));this['channels'][_0x1f4c28[_0x76c6('0x1c')]][_0x76c6('0x2f')]=_0x76c6('0x5c');this['outbound']['total']+=0x1;if(this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]][_0x76c6('0x2d')]){this[_0x76c6('0xb')][_0x76c6('0x5d')]+=0x1;this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]][_0x76c6('0x5e')]=moment(this['channels'][_0x1f4c28[_0x76c6('0x1c')]][_0x76c6('0x2d')])[_0x76c6('0x59')](this['channels'][_0x1f4c28[_0x76c6('0x1c')]][_0x76c6('0x5a')],_0x76c6('0x5b'));this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]]['billableseconds']=moment(this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]][_0x76c6('0x57')])['diff'](this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]][_0x76c6('0x2d')],_0x76c6('0x5b'));this[_0x76c6('0xb')][_0x76c6('0x5f')]+=this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]][_0x76c6('0x5e')]||0x0;this['outbound'][_0x76c6('0x60')]+=this['channels'][_0x1f4c28[_0x76c6('0x1c')]][_0x76c6('0x61')];}this['outbound'][_0x76c6('0x62')]+=this['channels'][_0x1f4c28['uniqueid']][_0x76c6('0x58')];logger['debug'](_0x76c6('0x63'),_0x1f4c28[_0x76c6('0x1c')],util[_0x76c6('0x1d')](this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]],{'showHidden':![],'depth':null}));ami['emit'](_0x76c6('0x64'),this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]]);logger[_0x76c6('0x1b')](_0x76c6('0x65'),_0x1f4c28[_0x76c6('0x1c')],util[_0x76c6('0x1d')](this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x76c6('0x1a')](_0x76c6('0x66'),this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]]);logger[_0x76c6('0x1b')](_0x76c6('0x67'),_0x1f4c28[_0x76c6('0x1c')],util[_0x76c6('0x1d')](this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]],{'showHidden':![],'depth':null}));this['emit'](_0x76c6('0x36'),_0x76c6('0x68'),this[_0x76c6('0xb')]);logger[_0x76c6('0x31')](_0x76c6('0x69'),JSON[_0x76c6('0x6a')](this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]]));logger[_0x76c6('0x1b')](_0x76c6('0x6b'),_0x1f4c28[_0x76c6('0x1c')],util[_0x76c6('0x1d')](this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x1c')]],{'showHidden':![],'depth':null}));this[_0x76c6('0x1a')]('voice:outbound',_0x76c6('0x6c'),this['channels'][_0x1f4c28[_0x76c6('0x1c')]]);delete this['channels'][_0x1f4c28[_0x76c6('0x1c')]];}else if(this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x6d')]]){this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x6d')]]['uniqueid']=this[_0x76c6('0x9')][_0x1f4c28[_0x76c6('0x6d')]][_0x76c6('0x6e')];}if(this[_0x76c6('0xd')][_0x1f4c28[_0x76c6('0x1c')]]){delete this[_0x76c6('0xd')][_0x1f4c28[_0x76c6('0x1c')]];}}}catch(_0x292c79){logger[_0x76c6('0x29')]('[%s][voiceDialReport][hangup]',_0x1f4c28[_0x76c6('0x1c')],util[_0x76c6('0x1d')](_0x292c79,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x76c6('0x17')][_0x76c6('0x15')]=function(_0x26573e){try{if(this['isNotNull'](_0x26573e)){logger['debug']('[%s][voiceDialReport][newexten]\x20event:',_0x26573e[_0x76c6('0x1c')],util[_0x76c6('0x1d')](_0x26573e,{'showHidden':![],'depth':null}));if(_0x26573e[_0x76c6('0x6f')][_0x76c6('0x70')]()==='set'){_0x26573e['applicationdata']=(_0x26573e[_0x76c6('0x71')]||_0x26573e['applicationdata'])['toLowerCase']();if(_['startsWith'](_0x26573e[_0x76c6('0x72')],'cdr(')){if(_[_0x76c6('0x19')](this['applications'][_0x26573e['uniqueid']]))this[_0x76c6('0xc')][_0x26573e[_0x76c6('0x1c')]]={};logger['info']('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x26573e[_0x76c6('0x1c')],_0x26573e[_0x76c6('0x6f')],_0x26573e['applicationdata']);var _0x4639ae=_0x26573e[_0x76c6('0x72')][_0x76c6('0x73')]('=');var _0x2944ce=_0x4639ae[0x0][_0x76c6('0x74')](/cdr\((.*)\)/);if(_0x2944ce)this[_0x76c6('0xc')][_0x26573e[_0x76c6('0x1c')]][_0x2944ce[0x1]]=_0x4639ae[0x1];}}}}catch(_0x56c0ae){logger['error']('[%s][voiceDialReport][newexten]',_0x26573e[_0x76c6('0x1c')],util[_0x76c6('0x1d')](_0x56c0ae,{'showHidden':![],'depth':null}));}};module[_0x76c6('0x75')]=VoiceDialReport;
\ No newline at end of file
index 6a5c330..559219a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['channels','queueChannels','voiceQueues','flagQueueSummary','variables','syncQueueSummary','bind','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','fullybooted','syncFullyBooted','newexten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','queueStatusComplete','unlockRR','clearZombieChannels','isNil','Action','status','channel','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkVariables]','clearQueueReport','campaigns','emitVoiceQueueChannelRemove','emit','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','uniqueid','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','strategy','available','sumHoldTime','total','unmanaged','abandoned','Trunk','active','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','queues','catch','[voiceQueueReport][queues]','queuesummary','queue','[voiceQueueReport][queuesummary]\x20event:','info','callers','toNumber','loggedIn','loggedin','custom:queuesummary','[voiceQueueReport][queuesummary]','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','count','routealias','merge','pick','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[%s][voiceQueueReport][queuecallerleave]','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','emitVoiceQueueChannelSave','[%s][voiceQueueReport][agentconnect]','queuecallercomplete','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','syncAgentComplete','assigned','queuecallerexit','queuecallerexitAt','transfer','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','linkedid','add','seconds','transfertype','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','reason','toUpperCase','[%s][voiceQueueReport][agentcomplete]','[%s][voiceQueueReport][varset]','addVariable','variable','lastevent','timeout','queuecallerleaveAt','custom:timeout','value','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','[%s][voiceQueueReport][hangup]','length','diff','milliseconds','answered','sumBillable','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerabandon','sumDuration','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','syncAttendedTransfer','transfereeuniqueid','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfereruniqueid','[%s][voiceQueueReport][attendedtransfer]','[%s][voiceQueueReport][blindtransfer]','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','cdr(','match','[%s][voiceQueueReport][newexten]','util','md5','ioredis','../../../config/environment','../../../config/logger','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents'];(function(_0x5bd27f,_0x16c4a9){var _0x10f40a=function(_0x35237d){while(--_0x35237d){_0x5bd27f['push'](_0x5bd27f['shift']());}};_0x10f40a(++_0x16c4a9);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var moment=require('moment');var util=require(_0x3071('0x0'));var md5=require(_0x3071('0x1'));var Redis=require(_0x3071('0x2'));var config=require(_0x3071('0x3'));var logger=require(_0x3071('0x4'))('ami');var ami=require(_0x3071('0x5'));var QueueReport=require(_0x3071('0x6'));config[_0x3071('0x7')]=_[_0x3071('0x8')](config[_0x3071('0x7')],{'host':_0x3071('0x9'),'port':0x18eb});var io=require(_0x3071('0xa'))(new Redis(config[_0x3071('0x7')]));var Sequence=function(){};Sequence[_0x3071('0xb')][_0x3071('0xc')]=function(_0x3e9a5e){this[_0x3071('0xd')]=this[_0x3071('0xd')]?this['tail'][_0x3071('0xe')](_0x3e9a5e):_0x3e9a5e();};function VoiceQueueReport(_0x2610b4){this[_0x3071('0xf')]=new Sequence();this[_0x3071('0x10')]={};this[_0x3071('0x11')]=_0x2610b4['agents'];this[_0x3071('0x12')]=_0x2610b4[_0x3071('0x13')];this[_0x3071('0x14')]=_0x2610b4[_0x3071('0x14')];this[_0x3071('0x15')]=!![];this['campaigns']=_0x2610b4['campaigns'];this[_0x3071('0x16')]={};ami['on']('queuesummary',this[_0x3071('0x17')][_0x3071('0x18')](this));ami['on']('queuesummarycomplete',this[_0x3071('0x19')]['bind'](this));ami['on'](_0x3071('0x1a'),this[_0x3071('0x1b')][_0x3071('0x18')](this));ami['on'](_0x3071('0x1c'),this[_0x3071('0x1d')][_0x3071('0x18')](this));ami['on'](_0x3071('0x1e'),this[_0x3071('0x1f')][_0x3071('0x18')](this));ami['on'](_0x3071('0x20'),this['syncAgentComplete'][_0x3071('0x18')](this));ami['on'](_0x3071('0x21'),this[_0x3071('0x22')][_0x3071('0x18')](this));ami['on'](_0x3071('0x23'),this[_0x3071('0x24')][_0x3071('0x18')](this));ami['on'](_0x3071('0x25'),this['syncHangup'][_0x3071('0x18')](this));ami['on'](_0x3071('0x26'),this[_0x3071('0x27')]['bind'](this));ami['on'](_0x3071('0x28'),this['syncNewExten'][_0x3071('0x18')](this));ami['on'](_0x3071('0x29'),this[_0x3071('0x2a')][_0x3071('0x18')](this));ami['on'](_0x3071('0x2b'),this[_0x3071('0x2c')][_0x3071('0x18')](this));ami['on'](_0x3071('0x2d'),this['syncAttendedTransfer']['bind'](this));ami['on'](_0x3071('0x2e'),this[_0x3071('0x2f')][_0x3071('0x18')](this));this[_0x3071('0x30')]();this[_0x3071('0x31')]();}function clearChannels(_0x44b45f){if(!_[_0x3071('0x32')](_0x44b45f)){for(var _0x1fe727 in _0x44b45f){if(_0x44b45f[_0x3071('0x33')](_0x1fe727)){delete _0x44b45f[_0x1fe727];}}}}function clearCampaigns(_0x4c7130){if(!_[_0x3071('0x32')](_0x4c7130)){for(var _0x3f1e6e in _0x4c7130){if(_0x4c7130[_0x3071('0x33')](_0x3f1e6e)){_0x4c7130[_0x3f1e6e]['originated']=0x0;}}}}function clearVoiceQueues(_0x4fb1ca){if(!_[_0x3071('0x32')](_0x4fb1ca)){for(var _0x163604 in _0x4fb1ca){if(_0x4fb1ca[_0x3071('0x33')](_0x163604)){_0x4fb1ca[_0x163604][_0x3071('0x34')]=0x0;_0x4fb1ca[_0x163604][_0x3071('0x35')]=0x0;_0x4fb1ca[_0x163604][_0x3071('0x36')]=0x0;_0x4fb1ca[_0x163604][_0x3071('0x37')]=0x0;_0x4fb1ca[_0x163604][_0x3071('0x38')]=!![];}}}}function clearAgentBooked(_0x292205){if(!_[_0x3071('0x32')](_0x292205)){for(var _0x5aba96 in _0x292205){if(_0x292205['hasOwnProperty'](_0x5aba96)){_0x292205[_0x5aba96][_0x3071('0x39')]=!![];}}}}VoiceQueueReport[_0x3071('0xb')][_0x3071('0x3a')]=function(){var _0x40be95=this;for(var _0x3f6d90 in this[_0x3071('0x12')]){if(this[_0x3071('0x12')][_0x3071('0x33')](_0x3f6d90)&&!this['channels'][_0x3f6d90]['switch']){this['sequence'][_0x3071('0xc')](function(){if(!_[_0x3071('0x3b')](_0x40be95['channels'][_0x3f6d90])){return ami[_0x3071('0x3c')]({'action':_0x3071('0x3d'),'channel':_0x40be95[_0x3071('0x12')][_0x3f6d90][_0x3071('0x3e')]})['catch'](function(_0x218a82){if(_0x218a82[_0x3071('0x3f')]===_0x3071('0x40')){setTimeout(function(){if(_0x40be95[_0x3071('0x12')][_0x3f6d90]){delete _0x40be95[_0x3071('0x12')][_0x3f6d90];logger[_0x3071('0x41')](_0x3071('0x42'),_0x3f6d90,util[_0x3071('0x43')](_0x218a82,{'showHidden':![],'depth':null}));}if(_0x40be95['queueReports'][_0x3f6d90]){delete _0x40be95[_0x3071('0x10')][_0x3f6d90];logger['error']('[%s][voiceQueueReport][checkQueueReport]',_0x3f6d90,util[_0x3071('0x43')](_0x218a82,{'showHidden':![],'depth':null}));}if(_0x40be95[_0x3071('0x16')][_0x3f6d90]){delete _0x40be95['variables'][_0x3f6d90];logger[_0x3071('0x41')](_0x3071('0x44'),_0x3f6d90,util[_0x3071('0x43')](_0x218a82,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x27')]=function(){logger[_0x3071('0x41')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0x3071('0x12')]);this[_0x3071('0x45')](this['queueReports']);clearAgentBooked(this[_0x3071('0x11')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x3071('0x46')]);};VoiceQueueReport[_0x3071('0xb')]['clearQueueReport']=function(_0x593c99){var _0x283074=this;if(!_[_0x3071('0x32')](_0x593c99)){for(var _0x569171 in _0x593c99){if(_0x593c99['hasOwnProperty'](_0x569171)){_0x283074[_0x3071('0x47')](_0x593c99[_0x569171],'clearqueuereport');delete _0x593c99[_0x569171];}}}};VoiceQueueReport[_0x3071('0xb')]['emit']=function(_0x7c1782,_0x100650,_0x1fcc52){io['to'](_0x7c1782)[_0x3071('0x48')](_0x100650,_0x1fcc52);};VoiceQueueReport[_0x3071('0xb')]['emitVoiceQueueChannelSave']=function(_0x53ed25,_0x4337eb){logger[_0x3071('0x49')](_0x3071('0x4a')+_0x4337eb+_0x3071('0x4b'),_0x53ed25['uniqueid'],util[_0x3071('0x43')](_0x53ed25,{'showHidden':![],'depth':null}));this[_0x3071('0x48')](util[_0x3071('0x4c')](_0x3071('0x4d'),_0x53ed25[_0x3071('0x4e')]),_0x3071('0x4f'),_0x53ed25);io['emit'](_0x3071('0x50'),_0x53ed25);};VoiceQueueReport['prototype']['emitVoiceQueueChannelRemove']=function(_0x4dc9d1,_0x47ceaf){logger[_0x3071('0x49')](_0x3071('0x4a')+_0x47ceaf+_0x3071('0x51'),_0x4dc9d1[_0x3071('0x52')],util[_0x3071('0x43')](_0x4dc9d1,{'showHidden':![],'depth':null}));this[_0x3071('0x48')](util[_0x3071('0x4c')](_0x3071('0x4d'),_0x4dc9d1['name']),_0x3071('0x53'),_0x4dc9d1);io[_0x3071('0x48')](_0x3071('0x54'),_0x4dc9d1);};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x55')]=function(_0x5ef13f,_0x5c93c7){if(_0x5ef13f[_0x3071('0x56')]===_0x3071('0x57')){var _0x1fe5e0={'id':_0x5ef13f['id'],'name':_0x5ef13f[_0x3071('0x4e')],'strategy':_0x5ef13f[_0x3071('0x58')],'answered':_0x5ef13f['answered'],'available':_0x5ef13f[_0x3071('0x59')],'loggedIn':_0x5ef13f['loggedIn'],'pTalking':_0x5ef13f[_0x3071('0x36')],'sumBillable':_0x5ef13f['sumBillable'],'sumDuration':_0x5ef13f['sumDuration'],'sumHoldTime':_0x5ef13f[_0x3071('0x5a')]||0x0,'talking':_0x5ef13f['talking'],'total':_0x5ef13f[_0x3071('0x5b')],'type':_0x5ef13f['type'],'unmanaged':_0x5ef13f[_0x3071('0x5c')],'abandoned':_0x5ef13f[_0x3071('0x5d')],'waiting':_0x5ef13f[_0x3071('0x37')]};if(_0x5ef13f[_0x3071('0x5e')]){_0x1fe5e0['Trunk']={'id':_0x5ef13f[_0x3071('0x5e')]['id'],'name':_0x5ef13f['Trunk'][_0x3071('0x4e')],'active':_0x5ef13f['Trunk'][_0x3071('0x5f')],'callerid':_0x5ef13f[_0x3071('0x5e')]['callerid']};}if(_0x5ef13f[_0x3071('0x60')]){_0x1fe5e0[_0x3071('0x60')]={'id':_0x5ef13f[_0x3071('0x60')]['id'],'name':_0x5ef13f[_0x3071('0x60')][_0x3071('0x4e')]};}var _0x2622b4=md5(JSON[_0x3071('0x61')](_0x1fe5e0));if(_0x5ef13f['md5']!==_0x2622b4){_0x5ef13f[_0x3071('0x1')]=_0x2622b4;logger[_0x3071('0x49')](_0x3071('0x62')+_0x5c93c7+_0x3071('0x63'),util['inspect'](_0x1fe5e0,{'showHidden':![],'depth':null}));this[_0x3071('0x48')](util[_0x3071('0x4c')](_0x3071('0x4d'),_0x1fe5e0[_0x3071('0x4e')]),_0x3071('0x64'),_0x1fe5e0);}}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x65')]=function(_0x390944){return _0x390944!==null&&!_[_0x3071('0x66')](_0x390944);};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x31')]=function(){var _0x111115=this;setInterval(function(){_0x111115[_0x3071('0x3a')]();ami[_0x3071('0x3c')]({'action':_0x3071('0x67')})[_0x3071('0x68')](function(_0x596cdd){logger['error'](_0x3071('0x69'),util['inspect'](_0x596cdd,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x30')]=function(){var _0x15c6f8=this;setInterval(function(){if(_0x15c6f8['flagQueueSummary']){return ami[_0x3071('0x3c')]({'action':_0x3071('0x6a')})['then'](function(_0x4b8ec0){_0x15c6f8[_0x3071('0x15')]=![];})[_0x3071('0x68')](function(_0x30e9d5){logger[_0x3071('0x41')]('[voiceQueueReport][queuesummary]',util[_0x3071('0x43')](_0x30e9d5,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x17')]=function(_0x41f02a){try{if(this[_0x3071('0x65')](_0x41f02a)&&this['isNotNull'](_0x41f02a[_0x3071('0x6b')])){logger[_0x3071('0x49')](_0x3071('0x6c'),util[_0x3071('0x43')](_0x41f02a,{'showHidden':![],'depth':null}));if(this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]]){logger[_0x3071('0x6d')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x41f02a['queue']);var _0x18cad9=_['countBy'](this[_0x3071('0x12')],_0x3071('0x6b'))[_0x41f02a['queue']]||0x0;var _0x19dc95=_0x18cad9-_0x41f02a[_0x3071('0x6e')];if(this['voiceQueues'][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x37')]!==_[_0x3071('0x6f')](_0x41f02a[_0x3071('0x6e')])||this[_0x3071('0x14')][_0x41f02a['queue']][_0x3071('0x70')]!==_[_0x3071('0x6f')](_0x41f02a[_0x3071('0x71')])||this['voiceQueues'][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x59')]!==_[_0x3071('0x6f')](_0x41f02a[_0x3071('0x59')])||this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x35')]!==_0x19dc95){this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]]['waiting']=_[_0x3071('0x6f')](_0x41f02a[_0x3071('0x6e')]);this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x70')]=_[_0x3071('0x6f')](_0x41f02a[_0x3071('0x71')]);this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x59')]=_[_0x3071('0x6f')](_0x41f02a['available']);this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x35')]=_0x19dc95>0x0?_0x19dc95:0x0;this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x35')]=this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]]['talking']>_[_0x3071('0x6f')](_0x41f02a[_0x3071('0x71')])?_['toNumber'](_0x41f02a['loggedin']):this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x35')];this[_0x3071('0x55')](this['voiceQueues'][_0x41f02a['queue']],_0x3071('0x6a'));}logger['debug']('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util['inspect'](this['voiceQueues'][_0x41f02a[_0x3071('0x6b')]],{'showHidden':![],'depth':null}));ami[_0x3071('0x48')](_0x3071('0x72'),this['voiceQueues'][_0x41f02a[_0x3071('0x6b')]]);}}}catch(_0xfab3d9){logger[_0x3071('0x41')](_0x3071('0x73'),util['inspect'](_0xfab3d9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x19')]=function(_0x588406){logger[_0x3071('0x49')](_0x3071('0x74'),util[_0x3071('0x43')](_0x588406,{'showHidden':![],'depth':null}));this[_0x3071('0x15')]=!![];};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x1b')]=function(_0x2deac2){try{if(this['isNotNull'](_0x2deac2)){logger['debug'](_0x3071('0x75'),_0x2deac2[_0x3071('0x52')],util[_0x3071('0x43')](_0x2deac2,{'showHidden':![],'depth':null}));if(_['isUndefined'](this['queueReports'][_0x2deac2[_0x3071('0x52')]]))this[_0x3071('0x10')][_0x2deac2[_0x3071('0x52')]]=[];if(_[_0x3071('0x66')](this[_0x3071('0x12')][_0x2deac2[_0x3071('0x52')]]))this[_0x3071('0x12')][_0x2deac2[_0x3071('0x52')]]={};var _0x5eed64=new QueueReport();_0x5eed64[_0x3071('0x4e')]=_0x2deac2['queue'];_0x5eed64[_0x3071('0x56')]=this[_0x3071('0x14')][_0x5eed64[_0x3071('0x4e')]]&&this[_0x3071('0x14')][_0x5eed64[_0x3071('0x4e')]][_0x3071('0x56')]?this[_0x3071('0x14')][_0x5eed64[_0x3071('0x4e')]]['type']||_0x3071('0x57'):_0x3071('0x57');_0x5eed64[_0x3071('0x6b')]=_0x2deac2['queue'];_0x5eed64[_0x3071('0x76')]=moment()[_0x3071('0x4c')](_0x3071('0x77'));_0x5eed64['position']=_0x2deac2['position'];_0x5eed64[_0x3071('0x78')]=_0x2deac2['count'];_0x5eed64[_0x3071('0x52')]=_0x2deac2[_0x3071('0x52')];_0x5eed64[_0x3071('0x79')]=this[_0x3071('0x12')][_0x2deac2[_0x3071('0x52')]][_0x3071('0x79')];logger[_0x3071('0x6d')]('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x5eed64[_0x3071('0x4e')],_0x5eed64[_0x3071('0x56')]);_[_0x3071('0x7a')](_0x5eed64,_[_0x3071('0x7b')](_0x2deac2,_[_0x3071('0x7c')](_0x5eed64)));this[_0x3071('0x10')][_0x2deac2[_0x3071('0x52')]][_0x3071('0x7d')](_0x5eed64);this['channels'][_0x2deac2[_0x3071('0x52')]]=_0x5eed64;this['emitVoiceQueueChannelSave'](_0x5eed64,_0x3071('0x1a'));}}catch(_0x1456db){logger[_0x3071('0x41')](_0x3071('0x75'),_0x2deac2[_0x3071('0x52')],util[_0x3071('0x43')](_0x1456db,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x1d')]=function(_0x77df0){try{if(this[_0x3071('0x65')](_0x77df0)){logger['debug'](_0x3071('0x7e'),_0x77df0[_0x3071('0x52')],util['inspect'](_0x77df0,{'showHidden':![],'depth':null}));if(this[_0x3071('0x10')][_0x77df0[_0x3071('0x52')]]){var _0x306964=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0x77df0['uniqueid']]);_0x306964['queuecallercomplete']=![];_0x306964[_0x3071('0x80')]=null;_0x306964['holdtime']=_0x77df0[_0x3071('0x81')];_0x306964[_0x3071('0x82')]=_0x77df0[_0x3071('0x82')];_0x306964[_0x3071('0x1c')]=!![];_0x306964[_0x3071('0x83')]=moment()[_0x3071('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');_0x306964[_0x3071('0x84')]=_0x3071('0x85');_0x306964[_0x3071('0x86')]=null;logger[_0x3071('0x6d')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x306964[_0x3071('0x4e')],_0x306964[_0x3071('0x56')]);this['channels'][_0x77df0[_0x3071('0x52')]]=_0x306964;this[_0x3071('0x47')](_0x306964,_0x3071('0x1c'));}}}catch(_0x10bc5b){logger[_0x3071('0x41')]('[%s][voiceQueueReport][queuecallerabandon]',_0x77df0[_0x3071('0x52')],util['inspect'](_0x10bc5b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x1f')]=function(_0x39060f){try{if(this[_0x3071('0x65')](_0x39060f)){logger[_0x3071('0x49')](_0x3071('0x87'),_0x39060f[_0x3071('0x52')],util[_0x3071('0x43')](_0x39060f,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x39060f[_0x3071('0x52')]]){var _0x3efa3c=_[_0x3071('0x7f')](this['queueReports'][_0x39060f[_0x3071('0x52')]]);_0x3efa3c['queuecallerleaveAt']=moment()[_0x3071('0x4c')](_0x3071('0x77'));_0x3efa3c[_0x3071('0x88')]=_0x39060f['connectedlinenum'];_0x3efa3c[_0x3071('0x89')]=_0x39060f[_0x3071('0x89')];logger[_0x3071('0x6d')](_0x3071('0x8a'),_0x3efa3c[_0x3071('0x4e')],_0x3efa3c[_0x3071('0x56')],_0x39060f[_0x3071('0x88')],_0x39060f[_0x3071('0x89')]);this[_0x3071('0x12')][_0x39060f['uniqueid']]=_0x3efa3c;this[_0x3071('0x8b')](_0x3efa3c,_0x3071('0x1e'));}}}catch(_0x34b376){logger['error']('[%s][voiceQueueReport][queuecallerleave]',_0x39060f['uniqueid'],util['inspect'](_0x34b376,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x3071('0x22')]=function(_0x44b4c9){try{if(this['isNotNull'](_0x44b4c9)){logger[_0x3071('0x49')](_0x3071('0x8c'),_0x44b4c9[_0x3071('0x52')],util['inspect'](_0x44b4c9,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x44b4c9[_0x3071('0x52')]]){var _0x2927b2=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0x44b4c9[_0x3071('0x52')]]);_0x2927b2[_0x3071('0x8d')]=!![];_0x2927b2[_0x3071('0x84')]='COMPLETEDBYAGENT';logger['info'](_0x3071('0x8e'),_0x2927b2[_0x3071('0x4e')],_0x2927b2[_0x3071('0x56')]);}}}catch(_0x1674cb){logger['error'](_0x3071('0x8c'),_0x44b4c9[_0x3071('0x52')],util[_0x3071('0x43')](_0x1674cb,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x8f')]=function(_0x38bf4e){try{if(this[_0x3071('0x65')](_0x38bf4e)){logger[_0x3071('0x49')]('[%s][voiceQueueReport][agentcomplete]',_0x38bf4e[_0x3071('0x52')],util[_0x3071('0x43')](_0x38bf4e,{'showHidden':![],'depth':null}));if(this[_0x3071('0x10')][_0x38bf4e[_0x3071('0x52')]]){var _0x46cc3b=_['last'](this[_0x3071('0x10')][_0x38bf4e['uniqueid']]);_0x46cc3b['queuecallerabandon']=![];_0x46cc3b[_0x3071('0x83')]=null;_0x46cc3b[_0x3071('0x90')]=!![];_0x46cc3b[_0x3071('0x86')]=_0x38bf4e['membername'];_0x46cc3b[_0x3071('0x81')]=_0x38bf4e[_0x3071('0x81')];_0x46cc3b[_0x3071('0x8d')]=!![];_0x46cc3b[_0x3071('0x91')]=![];_0x46cc3b[_0x3071('0x92')]=null;if(!_0x46cc3b['transfer']){if(_0x38bf4e['reason']==_0x3071('0x93')){_0x46cc3b[_0x3071('0x84')]='COMPLETED';logger[_0x3071('0x6d')](_0x3071('0x94'),_0x46cc3b[_0x3071('0x4e')],_0x46cc3b[_0x3071('0x56')]);}else{if(_[_0x3071('0x95')](_0x38bf4e['channel'][_0x3071('0x96')](),'local/')){if(this[_0x3071('0x10')][_0x38bf4e[_0x3071('0x97')]]){var _0x532943=_[_0x3071('0x7f')](this['queueReports'][_0x38bf4e[_0x3071('0x97')]]);_0x532943[_0x3071('0x8d')]=![];_0x532943[_0x3071('0x91')]=!![];_0x532943[_0x3071('0x92')]=moment(_0x46cc3b['queuecallerjoinAt'])[_0x3071('0x98')](_0x38bf4e['holdtime'],_0x3071('0x99'))['format'](_0x3071('0x77'));_0x532943[_0x3071('0x84')]='FORWARDTRANSFER';_0x532943[_0x3071('0x93')]=!![];_0x532943[_0x3071('0x9a')]='FORWARD';_0x532943[_0x3071('0x9b')]=_0x38bf4e[_0x3071('0x9c')];_0x532943[_0x3071('0x9d')]=_0x38bf4e[_0x3071('0x52')];logger[_0x3071('0x6d')](_0x3071('0x9e'),_0x532943[_0x3071('0x4e')],_0x532943[_0x3071('0x56')]);var _0x325aa2=this[_0x3071('0x10')][_0x38bf4e[_0x3071('0x97')]];this[_0x3071('0x10')][_0x38bf4e[_0x3071('0x97')]]=this[_0x3071('0x10')][_0x38bf4e[_0x3071('0x52')]];this['queueReports'][_0x38bf4e[_0x3071('0x52')]]=_0x325aa2;}}else{_0x46cc3b[_0x3071('0x84')]=_0x3071('0x9f')+_0x38bf4e[_0x3071('0xa0')][_0x3071('0xa1')]();logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x46cc3b[_0x3071('0x4e')],_0x46cc3b[_0x3071('0x56')],_0x46cc3b['queuecallerexitreason']);}}}this[_0x3071('0x12')][_0x38bf4e[_0x3071('0x52')]]=_0x46cc3b;this['emitVoiceQueueChannelRemove'](_0x46cc3b,_0x3071('0x20'));}}}catch(_0x2edff8){logger[_0x3071('0x41')](_0x3071('0xa2'),_0x38bf4e[_0x3071('0x52')],util[_0x3071('0x43')](_0x2edff8,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x24')]=function(_0xbee265){try{if(this[_0x3071('0x65')](_0xbee265)){logger['debug'](_0x3071('0xa3'),_0xbee265['uniqueid'],util[_0x3071('0x43')](_0xbee265,{'showHidden':![],'depth':null}));this[_0x3071('0xa4')](_0xbee265[_0x3071('0x52')],_[_0x3071('0x7c')](_0xbee265['variable'])[0x0],_0xbee265['value']);if(this['queueReports'][_0xbee265[_0x3071('0x52')]]){var _0x44ae03=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0xbee265['uniqueid']]);if(_0x44ae03){if(this[_0x3071('0x65')](_0xbee265[_0x3071('0xa5')])&&this[_0x3071('0x65')](_0xbee265['variable']['queuestatus'])){switch(_0xbee265['value']){case'CONTINUE':_0x44ae03[_0x3071('0x91')]=![];_0x44ae03[_0x3071('0x92')]=null;break;case'TIMEOUT':_0x44ae03[_0x3071('0xa6')]=_0x3071('0xa7');_0x44ae03[_0x3071('0x91')]=!![];_0x44ae03[_0x3071('0x92')]=moment()[_0x3071('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');_0x44ae03[_0x3071('0xa8')]=moment()[_0x3071('0x4c')](_0x3071('0x77'));logger[_0x3071('0x49')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0xbee265[_0x3071('0x52')],util['inspect'](_0x44ae03,{'showHidden':![],'depth':null}));ami[_0x3071('0x48')](_0x3071('0xa9'),_0x44ae03);break;default:_0x44ae03[_0x3071('0x91')]=!![];_0x44ae03['queuecallerexitAt']=moment()[_0x3071('0x4c')](_0x3071('0x77'));_0x44ae03[_0x3071('0xa8')]=moment()[_0x3071('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');}_0x44ae03[_0x3071('0x1c')]=![];_0x44ae03[_0x3071('0x83')]=null;_0x44ae03[_0x3071('0x84')]=_0xbee265[_0x3071('0xaa')];this[_0x3071('0x12')][_0xbee265['uniqueid']]=_0x44ae03;this['emitVoiceQueueChannelRemove'](_0x44ae03,_0x3071('0x23'));}else if(this[_0x3071('0x65')](_0xbee265[_0x3071('0xa5')])&&this[_0x3071('0x65')](_0xbee265['variable']['queueposition'])){if(!_0x44ae03[_0x3071('0x1c')]){_0x44ae03[_0x3071('0x91')]=!![];_0x44ae03['queuecallerexitAt']=moment()[_0x3071('0x4c')](_0x3071('0x77'));_0x44ae03[_0x3071('0x84')]='EXITWITHKEY';_0x44ae03['queuecallerleaveAt']=moment()['format'](_0x3071('0x77'));this[_0x3071('0x12')][_0xbee265[_0x3071('0x52')]]=_0x44ae03;}}logger['info']('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0xbee265[_0x3071('0x52')],_0x44ae03[_0x3071('0x4e')],_0x44ae03[_0x3071('0x56')],_[_0x3071('0x7c')](_0xbee265[_0x3071('0xa5')])[0x0],_0xbee265['value']);_0x44ae03[_0x3071('0x16')]=this['variables'][_0xbee265[_0x3071('0x52')]];}}}}catch(_0x294e55){logger[_0x3071('0x41')](_0x3071('0xa3'),_0xbee265[_0x3071('0x52')],util['inspect'](_0x294e55,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0xa4')]=function(_0x17b103,_0x8787eb,_0x315200){var _0x39f057=[_0x3071('0xab'),_0x3071('0xac'),_0x3071('0xad'),_0x3071('0xae'),_0x3071('0xaf'),'rtpaudioqoslossbridged',_0x3071('0xb0'),_0x3071('0xb1'),_0x3071('0xb2'),_0x3071('0xb3'),'bridgepeer',_0x3071('0xb4'),'membercalls',_0x3071('0xb5'),_0x3071('0xb6'),_0x3071('0xb7'),_0x3071('0xb8'),_0x3071('0xb9'),_0x3071('0xba')];if(!_[_0x3071('0x3b')](_0x8787eb)&&!_['includes'](_0x39f057,_0x8787eb)){if(_[_0x3071('0x66')](this['variables'][_0x17b103])){this['variables'][_0x17b103]={};}this[_0x3071('0x16')][_0x17b103][_0x8787eb]=_0x315200;}};VoiceQueueReport[_0x3071('0xb')]['syncHangup']=function(_0xf7cc54){try{if(this['isNotNull'](_0xf7cc54)){logger[_0x3071('0x49')](_0x3071('0xbb'),_0xf7cc54[_0x3071('0x52')],util[_0x3071('0x43')](_0xf7cc54,{'showHidden':![],'depth':null}));if(this[_0x3071('0x10')][_0xf7cc54[_0x3071('0x52')]]){for(var _0x116692=0x0,_0x3a5b66={};_0x116692<this[_0x3071('0x10')][_0xf7cc54[_0x3071('0x52')]][_0x3071('0xbc')];_0x116692+=0x1){_0x3a5b66=this['queueReports'][_0xf7cc54[_0x3071('0x52')]][_0x116692];if(this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]]){if(_0x3a5b66['queuecallerexit']&&_0x3a5b66[_0x3071('0x93')]!=!![]){this['voiceQueues'][_0x3a5b66[_0x3071('0x6b')]][_0x3071('0x5c')]+=0x1;}if(_0x3a5b66[_0x3071('0x1c')]){this[_0x3071('0x14')][_0x3a5b66['queue']]['abandoned']+=0x1;}this['voiceQueues'][_0x3a5b66[_0x3071('0x6b')]]['sumHoldTime']+=moment(_0x3a5b66['queuecallerleaveAt'])[_0x3071('0xbd')](_0x3a5b66['queuecallerjoinAt'],_0x3071('0x99'))||0x0;if(_0x116692===this[_0x3071('0x10')][_0xf7cc54[_0x3071('0x52')]]['length']-0x1){this[_0x3071('0x14')][_0x3a5b66['queue']]['sumDuration']+=moment()[_0x3071('0xbe')](0x0)[_0x3071('0xbd')](_0x3a5b66[_0x3071('0x76')],_0x3071('0x99'));this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]][_0x3071('0x5b')]+=0x1;if(_0x3a5b66['queuecallercomplete']){this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]][_0x3071('0xbf')]+=0x1;this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]][_0x3071('0xc0')]+=moment()[_0x3071('0xbe')](0x0)[_0x3071('0xbd')](_0x3a5b66[_0x3071('0xa8')],'seconds');_0x3a5b66[_0x3071('0x80')]=moment()[_0x3071('0x4c')](_0x3071('0x77'));_0x3a5b66[_0x3071('0x91')]=![];_0x3a5b66[_0x3071('0x92')]=null;}if(_0x3a5b66[_0x3071('0x91')]&&_0x3a5b66[_0x3071('0x93')]!=!![]){_0x3a5b66['lastevent']=_0x3071('0x5c');logger['debug'](_0x3071('0xc1'),_0xf7cc54[_0x3071('0x52')],util[_0x3071('0x43')](_0x3a5b66,{'showHidden':![],'depth':null}));ami['emit']('custom:queuecallerunmanaged',_0x3a5b66);}if(_0x3a5b66['queuecallerabandon']){_0x3a5b66[_0x3071('0xa6')]=_0x3071('0x5d');logger[_0x3071('0x49')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0xf7cc54[_0x3071('0x52')],util[_0x3071('0x43')](_0x3a5b66,{'showHidden':![],'depth':null}));ami[_0x3071('0x48')](_0x3071('0xc2'),_0x3a5b66);}}else{this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]][_0x3071('0xc3')]+=this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]]['sumHoldTime'];}logger[_0x3071('0x6d')](_0x3071('0xc4'),_0xf7cc54[_0x3071('0x52')],_0x3a5b66['name'],_0x3a5b66[_0x3071('0x56')],_0xf7cc54[_0x3071('0xc5')]);this[_0x3071('0x12')][_0xf7cc54[_0x3071('0x52')]]=_0x3a5b66;this[_0x3071('0x47')](_0x3a5b66,_0x3071('0x25'));this[_0x3071('0x55')](this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]],_0x3071('0x25'));}}logger[_0x3071('0x49')](_0x3071('0xc6'),_0xf7cc54['uniqueid'],util[_0x3071('0x43')](this[_0x3071('0x10')][_0xf7cc54['uniqueid']],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceQueueReport',this['queueReports'][_0xf7cc54[_0x3071('0x52')]]);delete this[_0x3071('0x10')][_0xf7cc54['uniqueid']];delete this[_0x3071('0x12')][_0xf7cc54[_0x3071('0x52')]];}if(this[_0x3071('0x16')][_0xf7cc54[_0x3071('0x52')]]){delete this[_0x3071('0x16')][_0xf7cc54[_0x3071('0x52')]];}}}catch(_0x358227){logger[_0x3071('0x41')](_0x3071('0xbb'),_0xf7cc54[_0x3071('0x52')],util[_0x3071('0x43')](_0x358227,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0xc7')]=function(_0x49d2aa){try{if(this[_0x3071('0x65')](_0x49d2aa)){logger[_0x3071('0x49')]('[%s][voiceQueueReport][attendedtransfer]',_0x49d2aa[_0x3071('0x52')],util[_0x3071('0x43')](_0x49d2aa,{'showHidden':![],'depth':null}));var _0x63aa5d;if(this[_0x3071('0x10')][_0x49d2aa['transfereeuniqueid']]){_0x63aa5d=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xc8')]]);_0x63aa5d[_0x3071('0x9b')]=_0x49d2aa['secondtransfererexten'];_0x63aa5d['transferuniqueid']=_0x49d2aa[_0x3071('0xc9')];_0x63aa5d[_0x3071('0x84')]=_0x3071('0xca');_0x63aa5d[_0x3071('0x93')]=!![];_0x63aa5d[_0x3071('0x9a')]=_0x3071('0xcb');if(this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xc9')]]){var _0x54229b=this[_0x3071('0x10')][_0x49d2aa['secondtransfereruniqueid']];this['queueReports'][_0x49d2aa[_0x3071('0xc9')]]=this[_0x3071('0x10')][_0x49d2aa['transfereeuniqueid']];this['queueReports'][_0x49d2aa[_0x3071('0xc8')]]=_0x54229b;var _0x4aff5b=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0x49d2aa['transfereeuniqueid']]);_0x4aff5b[_0x3071('0xcc')]=!![];}logger[_0x3071('0x6d')](_0x3071('0xcd'),_0x49d2aa[_0x3071('0x52')],_0x63aa5d[_0x3071('0x4e')],_0x63aa5d['type'],_0x63aa5d[_0x3071('0x9b')],_0x63aa5d[_0x3071('0x9d')]);}else if(this['queueReports'][_0x49d2aa['transfertargetuniqueid']]){_0x63aa5d=_['last'](this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xce')]]);_0x63aa5d[_0x3071('0x9b')]=_0x49d2aa['origtransfererexten'];_0x63aa5d[_0x3071('0x9d')]=_0x49d2aa[_0x3071('0xcf')];_0x63aa5d['queuecallerexitreason']=_0x3071('0xca');_0x63aa5d[_0x3071('0x93')]=!![];_0x63aa5d[_0x3071('0x9a')]=_0x3071('0xcb');if(this[_0x3071('0x10')][_0x49d2aa['origtransfereruniqueid']]){var _0x54229b=this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xcf')]];this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xcf')]]=this['queueReports'][_0x49d2aa['transfertargetuniqueid']];this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xce')]]=_0x54229b;var _0x4aff5b=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xce')]]);_0x4aff5b[_0x3071('0xcc')]=!![];}logger['info'](_0x3071('0xcd'),_0x49d2aa[_0x3071('0x52')],_0x63aa5d[_0x3071('0x4e')],_0x63aa5d[_0x3071('0x56')],_0x63aa5d['transferexten'],_0x63aa5d[_0x3071('0x9d')]);}}}catch(_0x2fa596){logger['error'](_0x3071('0xd0'),_0x49d2aa[_0x3071('0x52')],util[_0x3071('0x43')](_0x2fa596,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x2f')]=function(_0x5069a9){try{if(this[_0x3071('0x65')](_0x5069a9)){logger['debug'](_0x3071('0xd1'),_0x5069a9['uniqueid'],util[_0x3071('0x43')](_0x5069a9,{'showHidden':![],'depth':null}));if(this[_0x3071('0x10')][_0x5069a9[_0x3071('0xc8')]]){var _0x29746e=_['last'](this[_0x3071('0x10')][_0x5069a9[_0x3071('0xc8')]]);_0x29746e[_0x3071('0x84')]='BLINDTRANSFER';_0x29746e[_0x3071('0x93')]=!![];_0x29746e[_0x3071('0x9a')]=_0x3071('0xd2');_0x29746e['transferexten']=_0x5069a9[_0x3071('0xd3')];_0x29746e[_0x3071('0x9d')]=_0x5069a9[_0x3071('0xc8')];logger[_0x3071('0x6d')](_0x3071('0xd4'),_0x5069a9['uniqueid'],_0x29746e[_0x3071('0x4e')],_0x29746e[_0x3071('0x56')],_0x29746e[_0x3071('0x9b')],_0x29746e[_0x3071('0x9d')]);this['syncHangup']({'event':_0x3071('0xd5'),'uniqueid':_0x5069a9[_0x3071('0xc8')],'context':_0x5069a9[_0x3071('0xd6')],'channel':_0x5069a9[_0x3071('0xd7')]});}}}catch(_0x4605d2){logger[_0x3071('0x41')](_0x3071('0xd1'),_0x5069a9[_0x3071('0x52')],util['inspect'](_0x4605d2,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x3071('0x2a')]=function(_0xc47864){try{if(this['isNotNull'](_0xc47864)){logger[_0x3071('0x49')](_0x3071('0xd8'),_0xc47864[_0x3071('0x52')],util[_0x3071('0x43')](_0xc47864,{'showHidden':![],'depth':null}));if(this[_0x3071('0x10')][_0xc47864[_0x3071('0x52')]]){var _0x248060=_['last'](this[_0x3071('0x10')][_0xc47864[_0x3071('0x52')]]);if(!_['isNil'](_0x248060[_0x3071('0xa8')])){_0x248060[_0x3071('0xd9')]=moment()[_0x3071('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x3071('0x6d')](_0x3071('0xda'),_0xc47864[_0x3071('0x52')],_0x248060[_0x3071('0xd9')]);}}}}catch(_0x28b7b8){logger[_0x3071('0x41')](_0x3071('0xd8'),_0xc47864[_0x3071('0x52')],util['inspect'](_0x28b7b8,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x2c')]=function(_0x5ee0e5){try{if(this['isNotNull'](_0x5ee0e5)){logger[_0x3071('0x49')]('[%s][voiceQueueReport][musiconholdstop]',_0x5ee0e5[_0x3071('0x52')],util['inspect'](_0x5ee0e5,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x5ee0e5[_0x3071('0x52')]]){var _0x1acef1=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0x5ee0e5[_0x3071('0x52')]]);if(!_[_0x3071('0x3b')](_0x1acef1['mohstarttime'])){_0x1acef1[_0x3071('0xdb')]+=moment()[_0x3071('0xbe')](0x0)['diff'](_0x1acef1[_0x3071('0xd9')],_0x3071('0x99'));logger['info'](_0x3071('0xdc'),_0x5ee0e5[_0x3071('0x52')],_0x1acef1[_0x3071('0xdb')]);delete _0x1acef1[_0x3071('0xd9')];}}}}catch(_0x158897){logger['error'](_0x3071('0xdd'),_0x5ee0e5[_0x3071('0x52')],util[_0x3071('0x43')](_0x158897,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')]['syncNewExten']=function(_0x4f32ba){try{if(this[_0x3071('0x65')](_0x4f32ba)){logger[_0x3071('0x49')](_0x3071('0xde'),_0x4f32ba[_0x3071('0x52')],util[_0x3071('0x43')](_0x4f32ba,{'showHidden':![],'depth':null}));if(_0x4f32ba[_0x3071('0xdf')][_0x3071('0x96')]()===_0x3071('0xe0')){_0x4f32ba[_0x3071('0xe1')]=_0x4f32ba[_0x3071('0xe2')]&&_0x4f32ba[_0x3071('0xe2')][_0x3071('0x95')]('CDR(routeAlias)')?_0x4f32ba[_0x3071('0xe2')]:(_0x4f32ba['appdata']||_0x4f32ba[_0x3071('0xe1')])[_0x3071('0x96')]();if(_[_0x3071('0x95')](_0x4f32ba[_0x3071('0xe1')][_0x3071('0x96')](),_0x3071('0xe3'))){logger[_0x3071('0x6d')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x4f32ba['uniqueid'],_0x4f32ba[_0x3071('0xdf')],_0x4f32ba['applicationdata']);if(_['isUndefined'](this[_0x3071('0x12')][_0x4f32ba['uniqueid']]))this['channels'][_0x4f32ba[_0x3071('0x52')]]={};var _0x58e5ca=_0x4f32ba[_0x3071('0xe1')]['split']('=');var _0x46776d=_0x58e5ca[0x0][_0x3071('0x96')]()[_0x3071('0xe4')](/cdr\((.*)\)/);if(_0x46776d)this[_0x3071('0x12')][_0x4f32ba['uniqueid']][_0x46776d[0x1]]=_0x58e5ca[0x1];}}}}catch(_0x54e790){logger['error'](_0x3071('0xe5'),_0x4f32ba[_0x3071('0x52')],util[_0x3071('0x43')](_0x54e790,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
+var _0x3c81=['[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','transferuniqueid','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][newexten]\x20event:','application','appdata','CDR(routeAlias)','applicationdata','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','match','exports','lodash','moment','md5','ioredis','../model/queueReport','redis','defaults','localhost','socket.io-emitter','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','queuesummarycomplete','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','bind','queuecallerleave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','fullybooted','syncFullyBooted','syncNewExten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','isEmpty','originated','hasOwnProperty','waiting','queueStatusComplete','unlockRR','clearZombieChannels','switch','isNil','Action','status','channel','catch','[%s][voiceQueueReport][checkChannel]','error','[%s][voiceQueueReport][checkQueueReport]','inspect','[%s][voiceQueueReport][checkVariables]','prototype','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','emit','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_channel:remove','voice_queue_presence:remove','type','inbound','answered','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','total','abandoned','Trunk','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','loopQueueShow','[voiceQueueReport][queues]','loopQueueSummary','[voiceQueueReport][queuesummary]','queue','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','available','loggedin','emitVoiceQueueSummary','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','position','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','queuecallerjoin','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','syncQueueCallerLeave','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','emitVoiceQueueChannelSave','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','queuecallerabandonAt','assigned','membername','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','linkedid','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','COMPLETEDBY','toUpperCase','[%s][voiceQueueReport][varset]','addVariable','keys','variable','queuestatus','queuecallerexit','TIMEOUT','lastevent','timeout','custom:timeout','queueposition','EXITWITHKEY','value','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','includes','syncHangup','[%s][voiceQueueReport][hangup]','length','unmanaged','milliseconds','diff','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED'];(function(_0x2008e3,_0x5e891d){var _0x22c3b4=function(_0x2fa4da){while(--_0x2fa4da){_0x2008e3['push'](_0x2008e3['shift']());}};_0x22c3b4(++_0x5e891d);}(_0x3c81,0x102));var _0x13c8=function(_0xc8069e,_0x3fd9f2){_0xc8069e=_0xc8069e-0x0;var _0x30cfd8=_0x3c81[_0xc8069e];return _0x30cfd8;};'use strict';var _=require(_0x13c8('0x0'));var moment=require(_0x13c8('0x1'));var util=require('util');var md5=require(_0x13c8('0x2'));var Redis=require(_0x13c8('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')('ami');var ami=require('../ami');var QueueReport=require(_0x13c8('0x4'));config[_0x13c8('0x5')]=_[_0x13c8('0x6')](config[_0x13c8('0x5')],{'host':_0x13c8('0x7'),'port':0x18eb});var io=require(_0x13c8('0x8'))(new Redis(config[_0x13c8('0x5')]));var Sequence=function(){};Sequence['prototype'][_0x13c8('0x9')]=function(_0x4905c3){this[_0x13c8('0xa')]=this[_0x13c8('0xa')]?this[_0x13c8('0xa')][_0x13c8('0xb')](_0x4905c3):_0x4905c3();};function VoiceQueueReport(_0xaa58b6){this[_0x13c8('0xc')]=new Sequence();this[_0x13c8('0xd')]={};this[_0x13c8('0xe')]=_0xaa58b6[_0x13c8('0xe')];this[_0x13c8('0xf')]=_0xaa58b6[_0x13c8('0x10')];this[_0x13c8('0x11')]=_0xaa58b6[_0x13c8('0x11')];this[_0x13c8('0x12')]=!![];this['campaigns']=_0xaa58b6[_0x13c8('0x13')];this[_0x13c8('0x14')]={};ami['on'](_0x13c8('0x15'),this[_0x13c8('0x16')]['bind'](this));ami['on'](_0x13c8('0x17'),this['syncQueueSummaryComplete']['bind'](this));ami['on']('queuecallerjoin',this[_0x13c8('0x18')]['bind'](this));ami['on'](_0x13c8('0x19'),this[_0x13c8('0x1a')][_0x13c8('0x1b')](this));ami['on'](_0x13c8('0x1c'),this['syncQueueCallerLeave'][_0x13c8('0x1b')](this));ami['on'](_0x13c8('0x1d'),this[_0x13c8('0x1e')][_0x13c8('0x1b')](this));ami['on'](_0x13c8('0x1f'),this[_0x13c8('0x20')][_0x13c8('0x1b')](this));ami['on'](_0x13c8('0x21'),this[_0x13c8('0x22')][_0x13c8('0x1b')](this));ami['on'](_0x13c8('0x23'),this['syncHangup'][_0x13c8('0x1b')](this));ami['on'](_0x13c8('0x24'),this[_0x13c8('0x25')][_0x13c8('0x1b')](this));ami['on']('newexten',this[_0x13c8('0x26')][_0x13c8('0x1b')](this));ami['on'](_0x13c8('0x27'),this[_0x13c8('0x28')][_0x13c8('0x1b')](this));ami['on'](_0x13c8('0x29'),this['syncMusicOnHoldStop'][_0x13c8('0x1b')](this));ami['on'](_0x13c8('0x2a'),this[_0x13c8('0x2b')][_0x13c8('0x1b')](this));ami['on']('blindtransfer',this[_0x13c8('0x2c')][_0x13c8('0x1b')](this));this['loopQueueSummary']();this['loopQueueShow']();}function clearChannels(_0x3b4fd8){if(!_[_0x13c8('0x2d')](_0x3b4fd8)){for(var _0x47e8ae in _0x3b4fd8){if(_0x3b4fd8['hasOwnProperty'](_0x47e8ae)){delete _0x3b4fd8[_0x47e8ae];}}}}function clearCampaigns(_0x288c3c){if(!_[_0x13c8('0x2d')](_0x288c3c)){for(var _0x53ada9 in _0x288c3c){if(_0x288c3c['hasOwnProperty'](_0x53ada9)){_0x288c3c[_0x53ada9][_0x13c8('0x2e')]=0x0;}}}}function clearVoiceQueues(_0x596166){if(!_['isEmpty'](_0x596166)){for(var _0x1c7dc4 in _0x596166){if(_0x596166[_0x13c8('0x2f')](_0x1c7dc4)){_0x596166[_0x1c7dc4][_0x13c8('0x2e')]=0x0;_0x596166[_0x1c7dc4]['talking']=0x0;_0x596166[_0x1c7dc4]['pTalking']=0x0;_0x596166[_0x1c7dc4][_0x13c8('0x30')]=0x0;_0x596166[_0x1c7dc4][_0x13c8('0x31')]=!![];}}}}function clearAgentBooked(_0x399840){if(!_[_0x13c8('0x2d')](_0x399840)){for(var _0x138017 in _0x399840){if(_0x399840[_0x13c8('0x2f')](_0x138017)){_0x399840[_0x138017][_0x13c8('0x32')]=!![];}}}}VoiceQueueReport['prototype'][_0x13c8('0x33')]=function(){var _0xcbc9b7=this;for(var _0x5a5911 in this['channels']){if(this[_0x13c8('0xf')][_0x13c8('0x2f')](_0x5a5911)&&!this['channels'][_0x5a5911][_0x13c8('0x34')]){this[_0x13c8('0xc')]['enqueue'](function(){if(!_[_0x13c8('0x35')](_0xcbc9b7[_0x13c8('0xf')][_0x5a5911])){return ami[_0x13c8('0x36')]({'action':_0x13c8('0x37'),'channel':_0xcbc9b7[_0x13c8('0xf')][_0x5a5911][_0x13c8('0x38')]})[_0x13c8('0x39')](function(_0x2a121a){if(_0x2a121a['message']==='No\x20such\x20channel'){setTimeout(function(){if(_0xcbc9b7[_0x13c8('0xf')][_0x5a5911]){delete _0xcbc9b7[_0x13c8('0xf')][_0x5a5911];logger['error'](_0x13c8('0x3a'),_0x5a5911,util['inspect'](_0x2a121a,{'showHidden':![],'depth':null}));}if(_0xcbc9b7[_0x13c8('0xd')][_0x5a5911]){delete _0xcbc9b7['queueReports'][_0x5a5911];logger[_0x13c8('0x3b')](_0x13c8('0x3c'),_0x5a5911,util[_0x13c8('0x3d')](_0x2a121a,{'showHidden':![],'depth':null}));}if(_0xcbc9b7[_0x13c8('0x14')][_0x5a5911]){delete _0xcbc9b7[_0x13c8('0x14')][_0x5a5911];logger[_0x13c8('0x3b')](_0x13c8('0x3e'),_0x5a5911,util['inspect'](_0x2a121a,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x13c8('0x3f')][_0x13c8('0x25')]=function(){logger['error'](_0x13c8('0x40'));clearChannels(this[_0x13c8('0xf')]);this[_0x13c8('0x41')](this['queueReports']);clearAgentBooked(this['agents']);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x13c8('0x13')]);};VoiceQueueReport[_0x13c8('0x3f')][_0x13c8('0x41')]=function(_0x42e860){var _0x33e6f8=this;if(!_[_0x13c8('0x2d')](_0x42e860)){for(var _0x3c8176 in _0x42e860){if(_0x42e860[_0x13c8('0x2f')](_0x3c8176)){_0x33e6f8[_0x13c8('0x42')](_0x42e860[_0x3c8176],'clearqueuereport');delete _0x42e860[_0x3c8176];}}}};VoiceQueueReport['prototype'][_0x13c8('0x43')]=function(_0x405fce,_0x2cc7b4,_0x362040){io['to'](_0x405fce)['emit'](_0x2cc7b4,_0x362040);};VoiceQueueReport[_0x13c8('0x3f')]['emitVoiceQueueChannelSave']=function(_0x343dba,_0x2e26c9){logger[_0x13c8('0x44')](_0x13c8('0x45')+_0x2e26c9+_0x13c8('0x46'),_0x343dba[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x343dba,{'showHidden':![],'depth':null}));this[_0x13c8('0x43')](util[_0x13c8('0x48')](_0x13c8('0x49'),_0x343dba[_0x13c8('0x4a')]),_0x13c8('0x4b'),_0x343dba);io[_0x13c8('0x43')](_0x13c8('0x4c'),_0x343dba);};VoiceQueueReport[_0x13c8('0x3f')][_0x13c8('0x42')]=function(_0x1b2ada,_0x1505fb){logger[_0x13c8('0x44')](_0x13c8('0x45')+_0x1505fb+_0x13c8('0x4d'),_0x1b2ada[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x1b2ada,{'showHidden':![],'depth':null}));this[_0x13c8('0x43')](util[_0x13c8('0x48')]('voice:queue:%s',_0x1b2ada[_0x13c8('0x4a')]),_0x13c8('0x4e'),_0x1b2ada);io[_0x13c8('0x43')](_0x13c8('0x4f'),_0x1b2ada);};VoiceQueueReport[_0x13c8('0x3f')]['emitVoiceQueueSummary']=function(_0x53b8db,_0x25606f){if(_0x53b8db[_0x13c8('0x50')]===_0x13c8('0x51')){var _0x47d41f={'id':_0x53b8db['id'],'name':_0x53b8db['name'],'strategy':_0x53b8db['strategy'],'answered':_0x53b8db[_0x13c8('0x52')],'available':_0x53b8db['available'],'loggedIn':_0x53b8db[_0x13c8('0x53')],'pTalking':_0x53b8db['pTalking'],'sumBillable':_0x53b8db[_0x13c8('0x54')],'sumDuration':_0x53b8db[_0x13c8('0x55')],'sumHoldTime':_0x53b8db[_0x13c8('0x56')]||0x0,'talking':_0x53b8db[_0x13c8('0x57')],'total':_0x53b8db[_0x13c8('0x58')],'type':_0x53b8db[_0x13c8('0x50')],'unmanaged':_0x53b8db['unmanaged'],'abandoned':_0x53b8db[_0x13c8('0x59')],'waiting':_0x53b8db[_0x13c8('0x30')]};if(_0x53b8db['Trunk']){_0x47d41f[_0x13c8('0x5a')]={'id':_0x53b8db[_0x13c8('0x5a')]['id'],'name':_0x53b8db[_0x13c8('0x5a')][_0x13c8('0x4a')],'active':_0x53b8db[_0x13c8('0x5a')]['active'],'callerid':_0x53b8db[_0x13c8('0x5a')][_0x13c8('0x5b')]};}if(_0x53b8db[_0x13c8('0x5c')]){_0x47d41f[_0x13c8('0x5c')]={'id':_0x53b8db[_0x13c8('0x5c')]['id'],'name':_0x53b8db['Interval'][_0x13c8('0x4a')]};}var _0x2c90a1=md5(JSON[_0x13c8('0x5d')](_0x47d41f));if(_0x53b8db[_0x13c8('0x2')]!==_0x2c90a1){_0x53b8db[_0x13c8('0x2')]=_0x2c90a1;logger[_0x13c8('0x44')](_0x13c8('0x5e')+_0x25606f+_0x13c8('0x5f'),util[_0x13c8('0x3d')](_0x47d41f,{'showHidden':![],'depth':null}));this[_0x13c8('0x43')](util[_0x13c8('0x48')]('voice:queue:%s',_0x47d41f[_0x13c8('0x4a')]),_0x13c8('0x60'),_0x47d41f);}}};VoiceQueueReport[_0x13c8('0x3f')][_0x13c8('0x61')]=function(_0x340fbe){return _0x340fbe!==null&&!_[_0x13c8('0x62')](_0x340fbe);};VoiceQueueReport['prototype'][_0x13c8('0x63')]=function(){var _0x416e4f=this;setInterval(function(){_0x416e4f[_0x13c8('0x33')]();ami['Action']({'action':'queues'})[_0x13c8('0x39')](function(_0x14a738){logger['error'](_0x13c8('0x64'),util[_0x13c8('0x3d')](_0x14a738,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x13c8('0x65')]=function(){var _0x554792=this;setInterval(function(){if(_0x554792[_0x13c8('0x12')]){return ami[_0x13c8('0x36')]({'action':_0x13c8('0x15')})['then'](function(_0x3235af){_0x554792[_0x13c8('0x12')]=![];})['catch'](function(_0x1c47ef){logger['error'](_0x13c8('0x66'),util[_0x13c8('0x3d')](_0x1c47ef,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x13c8('0x3f')][_0x13c8('0x16')]=function(_0x3760e4){try{if(this['isNotNull'](_0x3760e4)&&this[_0x13c8('0x61')](_0x3760e4['queue'])){logger['debug']('[voiceQueueReport][queuesummary]\x20event:',util['inspect'](_0x3760e4,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0x3760e4[_0x13c8('0x67')]]){logger[_0x13c8('0x68')](_0x13c8('0x69'),_0x3760e4[_0x13c8('0x67')]);var _0x5e1c9e=_[_0x13c8('0x6a')](this[_0x13c8('0xf')],'queue')[_0x3760e4['queue']]||0x0;var _0x41f9d7=_0x5e1c9e-_0x3760e4[_0x13c8('0x6b')];if(this[_0x13c8('0x11')][_0x3760e4[_0x13c8('0x67')]][_0x13c8('0x30')]!==_[_0x13c8('0x6c')](_0x3760e4[_0x13c8('0x6b')])||this[_0x13c8('0x11')][_0x3760e4['queue']][_0x13c8('0x53')]!==_[_0x13c8('0x6c')](_0x3760e4['loggedin'])||this[_0x13c8('0x11')][_0x3760e4[_0x13c8('0x67')]][_0x13c8('0x6d')]!==_[_0x13c8('0x6c')](_0x3760e4[_0x13c8('0x6d')])||this[_0x13c8('0x11')][_0x3760e4[_0x13c8('0x67')]][_0x13c8('0x57')]!==_0x41f9d7){this[_0x13c8('0x11')][_0x3760e4[_0x13c8('0x67')]][_0x13c8('0x30')]=_[_0x13c8('0x6c')](_0x3760e4[_0x13c8('0x6b')]);this[_0x13c8('0x11')][_0x3760e4[_0x13c8('0x67')]][_0x13c8('0x53')]=_['toNumber'](_0x3760e4[_0x13c8('0x6e')]);this['voiceQueues'][_0x3760e4[_0x13c8('0x67')]][_0x13c8('0x6d')]=_['toNumber'](_0x3760e4[_0x13c8('0x6d')]);this[_0x13c8('0x11')][_0x3760e4['queue']][_0x13c8('0x57')]=_0x41f9d7>0x0?_0x41f9d7:0x0;this[_0x13c8('0x11')][_0x3760e4[_0x13c8('0x67')]][_0x13c8('0x57')]=this[_0x13c8('0x11')][_0x3760e4[_0x13c8('0x67')]][_0x13c8('0x57')]>_[_0x13c8('0x6c')](_0x3760e4[_0x13c8('0x6e')])?_[_0x13c8('0x6c')](_0x3760e4[_0x13c8('0x6e')]):this['voiceQueues'][_0x3760e4[_0x13c8('0x67')]][_0x13c8('0x57')];this[_0x13c8('0x6f')](this[_0x13c8('0x11')][_0x3760e4[_0x13c8('0x67')]],_0x13c8('0x15'));}logger['debug'](_0x13c8('0x70'),util[_0x13c8('0x3d')](this[_0x13c8('0x11')][_0x3760e4['queue']],{'showHidden':![],'depth':null}));ami[_0x13c8('0x43')](_0x13c8('0x71'),this[_0x13c8('0x11')][_0x3760e4[_0x13c8('0x67')]]);}}}catch(_0x11ae3d){logger[_0x13c8('0x3b')]('[voiceQueueReport][queuesummary]',util[_0x13c8('0x3d')](_0x11ae3d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x13c8('0x3f')][_0x13c8('0x72')]=function(_0x19317a){logger['debug'](_0x13c8('0x73'),util[_0x13c8('0x3d')](_0x19317a,{'showHidden':![],'depth':null}));this[_0x13c8('0x12')]=!![];};VoiceQueueReport[_0x13c8('0x3f')][_0x13c8('0x18')]=function(_0x251cbb){try{if(this[_0x13c8('0x61')](_0x251cbb)){logger['debug'](_0x13c8('0x74'),_0x251cbb[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x251cbb,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x13c8('0xd')][_0x251cbb[_0x13c8('0x47')]]))this['queueReports'][_0x251cbb['uniqueid']]=[];if(_[_0x13c8('0x62')](this['channels'][_0x251cbb[_0x13c8('0x47')]]))this['channels'][_0x251cbb[_0x13c8('0x47')]]={};var _0x39aefc=new QueueReport();_0x39aefc[_0x13c8('0x4a')]=_0x251cbb[_0x13c8('0x67')];_0x39aefc[_0x13c8('0x50')]=this['voiceQueues'][_0x39aefc[_0x13c8('0x4a')]]&&this[_0x13c8('0x11')][_0x39aefc['name']][_0x13c8('0x50')]?this[_0x13c8('0x11')][_0x39aefc[_0x13c8('0x4a')]][_0x13c8('0x50')]||_0x13c8('0x51'):_0x13c8('0x51');_0x39aefc[_0x13c8('0x67')]=_0x251cbb[_0x13c8('0x67')];_0x39aefc[_0x13c8('0x75')]=moment()[_0x13c8('0x48')]('YYYY-MM-DD\x20HH:mm:ss');_0x39aefc[_0x13c8('0x76')]=_0x251cbb[_0x13c8('0x76')];_0x39aefc['count']=_0x251cbb['count'];_0x39aefc[_0x13c8('0x47')]=_0x251cbb[_0x13c8('0x47')];_0x39aefc[_0x13c8('0x77')]=this[_0x13c8('0xf')][_0x251cbb[_0x13c8('0x47')]][_0x13c8('0x77')];logger['info'](_0x13c8('0x78'),_0x39aefc[_0x13c8('0x4a')],_0x39aefc[_0x13c8('0x50')]);_[_0x13c8('0x79')](_0x39aefc,_[_0x13c8('0x7a')](_0x251cbb,_['keys'](_0x39aefc)));this[_0x13c8('0xd')][_0x251cbb[_0x13c8('0x47')]]['push'](_0x39aefc);this[_0x13c8('0xf')][_0x251cbb[_0x13c8('0x47')]]=_0x39aefc;this['emitVoiceQueueChannelSave'](_0x39aefc,_0x13c8('0x7b'));}}catch(_0x5aba56){logger[_0x13c8('0x3b')]('[%s][voiceQueueReport][queuecallerjoin]',_0x251cbb[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x5aba56,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x13c8('0x3f')]['syncQueueCallerAbandon']=function(_0x22100e){try{if(this['isNotNull'](_0x22100e)){logger['debug'](_0x13c8('0x7c'),_0x22100e[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x22100e,{'showHidden':![],'depth':null}));if(this[_0x13c8('0xd')][_0x22100e['uniqueid']]){var _0x4790bb=_[_0x13c8('0x7d')](this['queueReports'][_0x22100e['uniqueid']]);_0x4790bb[_0x13c8('0x7e')]=![];_0x4790bb[_0x13c8('0x7f')]=null;_0x4790bb[_0x13c8('0x80')]=_0x22100e[_0x13c8('0x80')];_0x4790bb['originalposition']=_0x22100e[_0x13c8('0x81')];_0x4790bb['queuecallerabandon']=!![];_0x4790bb['queuecallerabandonAt']=moment()[_0x13c8('0x48')](_0x13c8('0x82'));_0x4790bb[_0x13c8('0x83')]=_0x13c8('0x84');_0x4790bb[_0x13c8('0x85')]=null;logger['info'](_0x13c8('0x86'),_0x4790bb['name'],_0x4790bb[_0x13c8('0x50')]);this['channels'][_0x22100e['uniqueid']]=_0x4790bb;this[_0x13c8('0x42')](_0x4790bb,'queuecallerabandon');}}}catch(_0x2431bc){logger[_0x13c8('0x3b')]('[%s][voiceQueueReport][queuecallerabandon]',_0x22100e[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x2431bc,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x13c8('0x3f')][_0x13c8('0x87')]=function(_0x4fbc85){try{if(this['isNotNull'](_0x4fbc85)){logger[_0x13c8('0x44')](_0x13c8('0x88'),_0x4fbc85[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x4fbc85,{'showHidden':![],'depth':null}));if(this[_0x13c8('0xd')][_0x4fbc85['uniqueid']]){var _0x5e92ae=_[_0x13c8('0x7d')](this[_0x13c8('0xd')][_0x4fbc85[_0x13c8('0x47')]]);_0x5e92ae[_0x13c8('0x89')]=moment()[_0x13c8('0x48')](_0x13c8('0x82'));_0x5e92ae[_0x13c8('0x8a')]=_0x4fbc85[_0x13c8('0x8a')];_0x5e92ae[_0x13c8('0x8b')]=_0x4fbc85[_0x13c8('0x8b')];logger['info']('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x5e92ae[_0x13c8('0x4a')],_0x5e92ae[_0x13c8('0x50')],_0x4fbc85['connectedlinenum'],_0x4fbc85[_0x13c8('0x8b')]);this[_0x13c8('0xf')][_0x4fbc85[_0x13c8('0x47')]]=_0x5e92ae;this[_0x13c8('0x8c')](_0x5e92ae,'queuecallerleave');}}}catch(_0x411709){logger[_0x13c8('0x3b')](_0x13c8('0x88'),_0x4fbc85['uniqueid'],util[_0x13c8('0x3d')](_0x411709,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x13c8('0x3f')][_0x13c8('0x20')]=function(_0x51ba80){try{if(this[_0x13c8('0x61')](_0x51ba80)){logger[_0x13c8('0x44')](_0x13c8('0x8d'),_0x51ba80[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x51ba80,{'showHidden':![],'depth':null}));if(this[_0x13c8('0xd')][_0x51ba80['uniqueid']]){var _0x5111e5=_['last'](this['queueReports'][_0x51ba80[_0x13c8('0x47')]]);_0x5111e5[_0x13c8('0x7e')]=!![];_0x5111e5[_0x13c8('0x83')]=_0x13c8('0x8e');logger[_0x13c8('0x68')](_0x13c8('0x8f'),_0x5111e5[_0x13c8('0x4a')],_0x5111e5[_0x13c8('0x50')]);}}}catch(_0x2180a9){logger[_0x13c8('0x3b')](_0x13c8('0x8d'),_0x51ba80['uniqueid'],util['inspect'](_0x2180a9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x13c8('0x3f')][_0x13c8('0x1e')]=function(_0x2de2f1){try{if(this[_0x13c8('0x61')](_0x2de2f1)){logger['debug'](_0x13c8('0x90'),_0x2de2f1[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x2de2f1,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2de2f1['uniqueid']]){var _0x58a670=_[_0x13c8('0x7d')](this[_0x13c8('0xd')][_0x2de2f1[_0x13c8('0x47')]]);_0x58a670[_0x13c8('0x19')]=![];_0x58a670[_0x13c8('0x91')]=null;_0x58a670[_0x13c8('0x92')]=!![];_0x58a670[_0x13c8('0x85')]=_0x2de2f1[_0x13c8('0x93')];_0x58a670['holdtime']=_0x2de2f1[_0x13c8('0x80')];_0x58a670['queuecallercomplete']=!![];_0x58a670['queuecallerexit']=![];_0x58a670[_0x13c8('0x94')]=null;if(!_0x58a670[_0x13c8('0x95')]){if(_0x2de2f1[_0x13c8('0x96')]==_0x13c8('0x95')){_0x58a670['queuecallerexitreason']=_0x13c8('0x97');logger['info'](_0x13c8('0x98'),_0x58a670[_0x13c8('0x4a')],_0x58a670[_0x13c8('0x50')]);}else{if(_[_0x13c8('0x99')](_0x2de2f1['channel'][_0x13c8('0x9a')](),'local/')){if(this[_0x13c8('0xd')][_0x2de2f1[_0x13c8('0x9b')]]){var _0x5cec22=_['last'](this['queueReports'][_0x2de2f1[_0x13c8('0x9b')]]);_0x5cec22[_0x13c8('0x7e')]=![];_0x5cec22['queuecallerexit']=!![];_0x5cec22[_0x13c8('0x94')]=moment(_0x58a670[_0x13c8('0x75')])[_0x13c8('0x9c')](_0x2de2f1['holdtime'],_0x13c8('0x9d'))['format']('YYYY-MM-DD\x20HH:mm:ss');_0x5cec22['queuecallerexitreason']=_0x13c8('0x9e');_0x5cec22[_0x13c8('0x95')]=!![];_0x5cec22[_0x13c8('0x9f')]=_0x13c8('0xa0');_0x5cec22[_0x13c8('0xa1')]=_0x2de2f1[_0x13c8('0xa2')];_0x5cec22['transferuniqueid']=_0x2de2f1[_0x13c8('0x47')];logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x5cec22[_0x13c8('0x4a')],_0x5cec22['type']);var _0x1d8931=this[_0x13c8('0xd')][_0x2de2f1['linkedid']];this[_0x13c8('0xd')][_0x2de2f1[_0x13c8('0x9b')]]=this[_0x13c8('0xd')][_0x2de2f1['uniqueid']];this[_0x13c8('0xd')][_0x2de2f1['uniqueid']]=_0x1d8931;}}else{_0x58a670[_0x13c8('0x83')]=_0x13c8('0xa3')+_0x2de2f1['reason'][_0x13c8('0xa4')]();logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x58a670[_0x13c8('0x4a')],_0x58a670[_0x13c8('0x50')],_0x58a670[_0x13c8('0x83')]);}}}this['channels'][_0x2de2f1[_0x13c8('0x47')]]=_0x58a670;this[_0x13c8('0x42')](_0x58a670,_0x13c8('0x1d'));}}}catch(_0x2aafbb){logger[_0x13c8('0x3b')](_0x13c8('0x90'),_0x2de2f1['uniqueid'],util[_0x13c8('0x3d')](_0x2aafbb,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x13c8('0x22')]=function(_0x307f01){try{if(this['isNotNull'](_0x307f01)){logger[_0x13c8('0x44')](_0x13c8('0xa5'),_0x307f01['uniqueid'],util['inspect'](_0x307f01,{'showHidden':![],'depth':null}));this[_0x13c8('0xa6')](_0x307f01[_0x13c8('0x47')],_[_0x13c8('0xa7')](_0x307f01['variable'])[0x0],_0x307f01['value']);if(this[_0x13c8('0xd')][_0x307f01['uniqueid']]){var _0x4a1aa6=_['last'](this[_0x13c8('0xd')][_0x307f01[_0x13c8('0x47')]]);if(_0x4a1aa6){if(this[_0x13c8('0x61')](_0x307f01[_0x13c8('0xa8')])&&this[_0x13c8('0x61')](_0x307f01[_0x13c8('0xa8')][_0x13c8('0xa9')])){switch(_0x307f01['value']){case'CONTINUE':_0x4a1aa6[_0x13c8('0xaa')]=![];_0x4a1aa6[_0x13c8('0x94')]=null;break;case _0x13c8('0xab'):_0x4a1aa6[_0x13c8('0xac')]=_0x13c8('0xad');_0x4a1aa6[_0x13c8('0xaa')]=!![];_0x4a1aa6[_0x13c8('0x94')]=moment()[_0x13c8('0x48')](_0x13c8('0x82'));_0x4a1aa6['queuecallerleaveAt']=moment()[_0x13c8('0x48')](_0x13c8('0x82'));logger[_0x13c8('0x44')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x307f01[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x4a1aa6,{'showHidden':![],'depth':null}));ami['emit'](_0x13c8('0xae'),_0x4a1aa6);break;default:_0x4a1aa6['queuecallerexit']=!![];_0x4a1aa6['queuecallerexitAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x4a1aa6[_0x13c8('0x89')]=moment()['format'](_0x13c8('0x82'));}_0x4a1aa6[_0x13c8('0x19')]=![];_0x4a1aa6[_0x13c8('0x91')]=null;_0x4a1aa6[_0x13c8('0x83')]=_0x307f01['value'];this[_0x13c8('0xf')][_0x307f01['uniqueid']]=_0x4a1aa6;this['emitVoiceQueueChannelRemove'](_0x4a1aa6,'varset');}else if(this[_0x13c8('0x61')](_0x307f01['variable'])&&this[_0x13c8('0x61')](_0x307f01['variable'][_0x13c8('0xaf')])){if(!_0x4a1aa6[_0x13c8('0x19')]){_0x4a1aa6['queuecallerexit']=!![];_0x4a1aa6[_0x13c8('0x94')]=moment()[_0x13c8('0x48')](_0x13c8('0x82'));_0x4a1aa6[_0x13c8('0x83')]=_0x13c8('0xb0');_0x4a1aa6[_0x13c8('0x89')]=moment()[_0x13c8('0x48')](_0x13c8('0x82'));this[_0x13c8('0xf')][_0x307f01['uniqueid']]=_0x4a1aa6;}}logger[_0x13c8('0x68')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x307f01['uniqueid'],_0x4a1aa6['name'],_0x4a1aa6[_0x13c8('0x50')],_['keys'](_0x307f01[_0x13c8('0xa8')])[0x0],_0x307f01[_0x13c8('0xb1')]);_0x4a1aa6['variables']=this[_0x13c8('0x14')][_0x307f01[_0x13c8('0x47')]];}}}}catch(_0x4ad86e){logger[_0x13c8('0x3b')](_0x13c8('0xa5'),_0x307f01['uniqueid'],util[_0x13c8('0x3d')](_0x4ad86e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x13c8('0x3f')]['addVariable']=function(_0xb1a575,_0x3d9f1f,_0x46fff9){var _0x4d05d4=['rtpaudioqos','rtpaudioqosbridged',_0x13c8('0xb2'),_0x13c8('0xb3'),_0x13c8('0xb4'),_0x13c8('0xb5'),_0x13c8('0xb6'),_0x13c8('0xb7'),_0x13c8('0xb8'),_0x13c8('0xb9'),_0x13c8('0xba'),_0x13c8('0xbb'),_0x13c8('0xbc'),_0x13c8('0xbd'),_0x13c8('0xbe'),_0x13c8('0xbf'),'membername','memberpenalty',_0x13c8('0xc0')];if(!_[_0x13c8('0x35')](_0x3d9f1f)&&!_[_0x13c8('0xc1')](_0x4d05d4,_0x3d9f1f)){if(_[_0x13c8('0x62')](this[_0x13c8('0x14')][_0xb1a575])){this[_0x13c8('0x14')][_0xb1a575]={};}this[_0x13c8('0x14')][_0xb1a575][_0x3d9f1f]=_0x46fff9;}};VoiceQueueReport['prototype'][_0x13c8('0xc2')]=function(_0x24ff2b){try{if(this[_0x13c8('0x61')](_0x24ff2b)){logger[_0x13c8('0x44')](_0x13c8('0xc3'),_0x24ff2b[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x24ff2b,{'showHidden':![],'depth':null}));if(this[_0x13c8('0xd')][_0x24ff2b['uniqueid']]){for(var _0x2fec58=0x0,_0x288aae={};_0x2fec58<this[_0x13c8('0xd')][_0x24ff2b[_0x13c8('0x47')]][_0x13c8('0xc4')];_0x2fec58+=0x1){_0x288aae=this[_0x13c8('0xd')][_0x24ff2b[_0x13c8('0x47')]][_0x2fec58];if(this['voiceQueues'][_0x288aae['queue']]){if(_0x288aae['queuecallerexit']&&_0x288aae['transfer']!=!![]){this[_0x13c8('0x11')][_0x288aae[_0x13c8('0x67')]][_0x13c8('0xc5')]+=0x1;}if(_0x288aae['queuecallerabandon']){this['voiceQueues'][_0x288aae['queue']][_0x13c8('0x59')]+=0x1;}this['voiceQueues'][_0x288aae['queue']][_0x13c8('0x56')]+=moment(_0x288aae['queuecallerleaveAt'])['diff'](_0x288aae['queuecallerjoinAt'],_0x13c8('0x9d'))||0x0;if(_0x2fec58===this[_0x13c8('0xd')][_0x24ff2b['uniqueid']][_0x13c8('0xc4')]-0x1){this[_0x13c8('0x11')][_0x288aae[_0x13c8('0x67')]][_0x13c8('0x55')]+=moment()[_0x13c8('0xc6')](0x0)[_0x13c8('0xc7')](_0x288aae[_0x13c8('0x75')],'seconds');this[_0x13c8('0x11')][_0x288aae[_0x13c8('0x67')]][_0x13c8('0x58')]+=0x1;if(_0x288aae[_0x13c8('0x7e')]){this[_0x13c8('0x11')][_0x288aae[_0x13c8('0x67')]][_0x13c8('0x52')]+=0x1;this[_0x13c8('0x11')][_0x288aae[_0x13c8('0x67')]][_0x13c8('0x54')]+=moment()[_0x13c8('0xc6')](0x0)[_0x13c8('0xc7')](_0x288aae[_0x13c8('0x89')],'seconds');_0x288aae[_0x13c8('0x7f')]=moment()[_0x13c8('0x48')](_0x13c8('0x82'));_0x288aae['queuecallerexit']=![];_0x288aae['queuecallerexitAt']=null;}if(_0x288aae[_0x13c8('0xaa')]&&_0x288aae['transfer']!=!![]){_0x288aae[_0x13c8('0xac')]=_0x13c8('0xc5');logger[_0x13c8('0x44')](_0x13c8('0xc8'),_0x24ff2b['uniqueid'],util[_0x13c8('0x3d')](_0x288aae,{'showHidden':![],'depth':null}));ami[_0x13c8('0x43')](_0x13c8('0xc9'),_0x288aae);}if(_0x288aae[_0x13c8('0x19')]){_0x288aae['lastevent']=_0x13c8('0x59');logger[_0x13c8('0x44')](_0x13c8('0xca'),_0x24ff2b[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x288aae,{'showHidden':![],'depth':null}));ami[_0x13c8('0x43')]('custom:queuecallerabandon',_0x288aae);}}else{this[_0x13c8('0x11')][_0x288aae['queue']][_0x13c8('0x55')]+=this['voiceQueues'][_0x288aae[_0x13c8('0x67')]]['sumHoldTime'];}logger[_0x13c8('0x68')](_0x13c8('0xcb'),_0x24ff2b[_0x13c8('0x47')],_0x288aae['name'],_0x288aae[_0x13c8('0x50')],_0x24ff2b[_0x13c8('0xcc')]);this[_0x13c8('0xf')][_0x24ff2b['uniqueid']]=_0x288aae;this[_0x13c8('0x42')](_0x288aae,_0x13c8('0x23'));this['emitVoiceQueueSummary'](this[_0x13c8('0x11')][_0x288aae[_0x13c8('0x67')]],_0x13c8('0x23'));}}logger[_0x13c8('0x44')](_0x13c8('0xcd'),_0x24ff2b[_0x13c8('0x47')],util[_0x13c8('0x3d')](this[_0x13c8('0xd')][_0x24ff2b[_0x13c8('0x47')]],{'showHidden':![],'depth':null}));ami[_0x13c8('0x43')](_0x13c8('0xce'),this[_0x13c8('0xd')][_0x24ff2b[_0x13c8('0x47')]]);delete this[_0x13c8('0xd')][_0x24ff2b['uniqueid']];delete this[_0x13c8('0xf')][_0x24ff2b[_0x13c8('0x47')]];}if(this[_0x13c8('0x14')][_0x24ff2b['uniqueid']]){delete this[_0x13c8('0x14')][_0x24ff2b[_0x13c8('0x47')]];}}}catch(_0x5e60cd){logger[_0x13c8('0x3b')](_0x13c8('0xc3'),_0x24ff2b[_0x13c8('0x47')],util['inspect'](_0x5e60cd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x13c8('0x3f')]['syncAttendedTransfer']=function(_0x187cf8){try{if(this[_0x13c8('0x61')](_0x187cf8)){logger['debug'](_0x13c8('0xcf'),_0x187cf8[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x187cf8,{'showHidden':![],'depth':null}));var _0x550205;if(this[_0x13c8('0xd')][_0x187cf8[_0x13c8('0xd0')]]){_0x550205=_['last'](this['queueReports'][_0x187cf8[_0x13c8('0xd0')]]);_0x550205[_0x13c8('0xa1')]=_0x187cf8['secondtransfererexten'];_0x550205['transferuniqueid']=_0x187cf8[_0x13c8('0xd1')];_0x550205[_0x13c8('0x83')]=_0x13c8('0xd2');_0x550205[_0x13c8('0x95')]=!![];_0x550205['transfertype']=_0x13c8('0xd3');if(this[_0x13c8('0xd')][_0x187cf8[_0x13c8('0xd1')]]){var _0x7f79a6=this['queueReports'][_0x187cf8[_0x13c8('0xd1')]];this[_0x13c8('0xd')][_0x187cf8[_0x13c8('0xd1')]]=this[_0x13c8('0xd')][_0x187cf8[_0x13c8('0xd0')]];this[_0x13c8('0xd')][_0x187cf8[_0x13c8('0xd0')]]=_0x7f79a6;var _0x4bbe59=_[_0x13c8('0x7d')](this[_0x13c8('0xd')][_0x187cf8['transfereeuniqueid']]);_0x4bbe59[_0x13c8('0x34')]=!![];}logger['info'](_0x13c8('0xd4'),_0x187cf8[_0x13c8('0x47')],_0x550205[_0x13c8('0x4a')],_0x550205[_0x13c8('0x50')],_0x550205[_0x13c8('0xa1')],_0x550205['transferuniqueid']);}else if(this[_0x13c8('0xd')][_0x187cf8[_0x13c8('0xd5')]]){_0x550205=_[_0x13c8('0x7d')](this['queueReports'][_0x187cf8[_0x13c8('0xd5')]]);_0x550205[_0x13c8('0xa1')]=_0x187cf8['origtransfererexten'];_0x550205[_0x13c8('0xd6')]=_0x187cf8['origtransfereruniqueid'];_0x550205['queuecallerexitreason']='ATTENDEDTRANSFER';_0x550205[_0x13c8('0x95')]=!![];_0x550205[_0x13c8('0x9f')]='ATTENDED';if(this[_0x13c8('0xd')][_0x187cf8[_0x13c8('0xd7')]]){var _0x7f79a6=this[_0x13c8('0xd')][_0x187cf8[_0x13c8('0xd7')]];this['queueReports'][_0x187cf8[_0x13c8('0xd7')]]=this[_0x13c8('0xd')][_0x187cf8['transfertargetuniqueid']];this['queueReports'][_0x187cf8['transfertargetuniqueid']]=_0x7f79a6;var _0x4bbe59=_[_0x13c8('0x7d')](this[_0x13c8('0xd')][_0x187cf8[_0x13c8('0xd5')]]);_0x4bbe59['switch']=!![];}logger[_0x13c8('0x68')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x187cf8[_0x13c8('0x47')],_0x550205[_0x13c8('0x4a')],_0x550205[_0x13c8('0x50')],_0x550205['transferexten'],_0x550205[_0x13c8('0xd6')]);}}}catch(_0x4b5426){logger[_0x13c8('0x3b')]('[%s][voiceQueueReport][attendedtransfer]',_0x187cf8[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x4b5426,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x13c8('0x2c')]=function(_0x4dcee1){try{if(this[_0x13c8('0x61')](_0x4dcee1)){logger[_0x13c8('0x44')](_0x13c8('0xd8'),_0x4dcee1[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x4dcee1,{'showHidden':![],'depth':null}));if(this[_0x13c8('0xd')][_0x4dcee1[_0x13c8('0xd0')]]){var _0x2e6fb2=_[_0x13c8('0x7d')](this['queueReports'][_0x4dcee1[_0x13c8('0xd0')]]);_0x2e6fb2[_0x13c8('0x83')]=_0x13c8('0xd9');_0x2e6fb2[_0x13c8('0x95')]=!![];_0x2e6fb2[_0x13c8('0x9f')]=_0x13c8('0xda');_0x2e6fb2['transferexten']=_0x4dcee1[_0x13c8('0xdb')];_0x2e6fb2['transferuniqueid']=_0x4dcee1['transfereeuniqueid'];logger['info']('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x4dcee1[_0x13c8('0x47')],_0x2e6fb2[_0x13c8('0x4a')],_0x2e6fb2[_0x13c8('0x50')],_0x2e6fb2[_0x13c8('0xa1')],_0x2e6fb2[_0x13c8('0xd6')]);this[_0x13c8('0xc2')]({'event':'BlindTransfer','uniqueid':_0x4dcee1[_0x13c8('0xd0')],'context':_0x4dcee1['context'],'channel':_0x4dcee1['transfererchannel']});}}}catch(_0x46dbd9){logger[_0x13c8('0x3b')](_0x13c8('0xd8'),_0x4dcee1['uniqueid'],util[_0x13c8('0x3d')](_0x46dbd9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x13c8('0x3f')]['syncMusicOnHoldStart']=function(_0x278646){try{if(this[_0x13c8('0x61')](_0x278646)){logger[_0x13c8('0x44')](_0x13c8('0xdc'),_0x278646[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x278646,{'showHidden':![],'depth':null}));if(this[_0x13c8('0xd')][_0x278646[_0x13c8('0x47')]]){var _0x5f344c=_[_0x13c8('0x7d')](this[_0x13c8('0xd')][_0x278646['uniqueid']]);if(!_[_0x13c8('0x35')](_0x5f344c['queuecallerleaveAt'])){_0x5f344c['mohstarttime']=moment()[_0x13c8('0x48')](_0x13c8('0x82'));logger[_0x13c8('0x68')](_0x13c8('0xdd'),_0x278646[_0x13c8('0x47')],_0x5f344c[_0x13c8('0xde')]);}}}}catch(_0x20f1e6){logger[_0x13c8('0x3b')](_0x13c8('0xdc'),_0x278646[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x20f1e6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x13c8('0x3f')]['syncMusicOnHoldStop']=function(_0x114bbf){try{if(this['isNotNull'](_0x114bbf)){logger[_0x13c8('0x44')](_0x13c8('0xdf'),_0x114bbf[_0x13c8('0x47')],util['inspect'](_0x114bbf,{'showHidden':![],'depth':null}));if(this[_0x13c8('0xd')][_0x114bbf[_0x13c8('0x47')]]){var _0x59e83a=_[_0x13c8('0x7d')](this['queueReports'][_0x114bbf[_0x13c8('0x47')]]);if(!_[_0x13c8('0x35')](_0x59e83a[_0x13c8('0xde')])){_0x59e83a[_0x13c8('0xe0')]+=moment()[_0x13c8('0xc6')](0x0)[_0x13c8('0xc7')](_0x59e83a[_0x13c8('0xde')],_0x13c8('0x9d'));logger[_0x13c8('0x68')](_0x13c8('0xe1'),_0x114bbf[_0x13c8('0x47')],_0x59e83a[_0x13c8('0xe0')]);delete _0x59e83a[_0x13c8('0xde')];}}}}catch(_0x320b8f){logger['error'](_0x13c8('0xdf'),_0x114bbf[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x320b8f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x13c8('0x3f')][_0x13c8('0x26')]=function(_0x4e80b6){try{if(this['isNotNull'](_0x4e80b6)){logger['debug'](_0x13c8('0xe2'),_0x4e80b6[_0x13c8('0x47')],util[_0x13c8('0x3d')](_0x4e80b6,{'showHidden':![],'depth':null}));if(_0x4e80b6[_0x13c8('0xe3')][_0x13c8('0x9a')]()==='set'){_0x4e80b6['applicationdata']=_0x4e80b6['appdata']&&_0x4e80b6[_0x13c8('0xe4')]['startsWith'](_0x13c8('0xe5'))?_0x4e80b6['appdata']:(_0x4e80b6[_0x13c8('0xe4')]||_0x4e80b6['applicationdata'])['toLowerCase']();if(_[_0x13c8('0x99')](_0x4e80b6[_0x13c8('0xe6')]['toLowerCase'](),_0x13c8('0xe7'))){logger[_0x13c8('0x68')](_0x13c8('0xe8'),_0x4e80b6[_0x13c8('0x47')],_0x4e80b6[_0x13c8('0xe3')],_0x4e80b6['applicationdata']);if(_[_0x13c8('0x62')](this[_0x13c8('0xf')][_0x4e80b6[_0x13c8('0x47')]]))this[_0x13c8('0xf')][_0x4e80b6[_0x13c8('0x47')]]={};var _0x589117=_0x4e80b6[_0x13c8('0xe6')]['split']('=');var _0x40de20=_0x589117[0x0][_0x13c8('0x9a')]()[_0x13c8('0xe9')](/cdr\((.*)\)/);if(_0x40de20)this['channels'][_0x4e80b6[_0x13c8('0x47')]][_0x40de20[0x1]]=_0x589117[0x1];}}}}catch(_0x318402){logger[_0x13c8('0x3b')]('[%s][voiceQueueReport][newexten]',_0x4e80b6['uniqueid'],util['inspect'](_0x318402,{'showHidden':![],'depth':null}));}};module[_0x13c8('0xea')]=VoiceQueueReport;
\ No newline at end of file
index c8b2014..a05af0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4590=['queue','campaign'];(function(_0x26f80e,_0x1e52dd){var _0x364f3e=function(_0x127b4e){while(--_0x127b4e){_0x26f80e['push'](_0x26f80e['shift']());}};_0x364f3e(++_0x1e52dd);}(_0x4590,0x13f));var _0x0459=function(_0x1ddc4b,_0x16037a){_0x1ddc4b=_0x1ddc4b-0x0;var _0x566f8c=_0x4590[_0x1ddc4b];return _0x566f8c;};'use strict';var client=require('../client');exports['createHistory']=function(_0x3a440f){return function(){_0x3a440f[_0x0459('0x0')]=_0x3a440f[_0x0459('0x1')];return client['Request']('CreateReportAgentPreview',{'body':_0x3a440f,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
+var _0xfede=['CreateReportAgentPreview','campaign','queue'];(function(_0x1cea1b,_0x27e18b){var _0x478a32=function(_0xe180ef){while(--_0xe180ef){_0x1cea1b['push'](_0x1cea1b['shift']());}};_0x478a32(++_0x27e18b);}(_0xfede,0xca));var _0xefed=function(_0x2bf1d6,_0x410efd){_0x2bf1d6=_0x2bf1d6-0x0;var _0x1be08a=_0xfede[_0x2bf1d6];return _0x1be08a;};'use strict';var client=require('../client');exports['createHistory']=function(_0x87cc2d){return function(){_0x87cc2d[_0xefed('0x0')]=_0x87cc2d[_0xefed('0x1')];return client['Request'](_0xefed('0x2'),{'body':_0x87cc2d,'log':_0xefed('0x2')});};};
\ No newline at end of file
index 1dd25f9..c00c6d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7871=['CreateAttachment','../client','Request'];(function(_0x28c627,_0xed188c){var _0x4cf2b4=function(_0x554372){while(--_0x554372){_0x28c627['push'](_0x28c627['shift']());}};_0x4cf2b4(++_0xed188c);}(_0x7871,0xb5));var _0x1787=function(_0x1762a3,_0x56ce97){_0x1762a3=_0x1762a3-0x0;var _0x27642e=_0x7871[_0x1762a3];return _0x27642e;};'use strict';var client=require(_0x1787('0x0'));exports['create']=function(_0xcb0720){return client[_0x1787('0x1')](_0x1787('0x2'),{'body':_0xcb0720,'log':_0x1787('0x2')});};
\ No newline at end of file
+var _0x95a7=['../client','CreateAttachment'];(function(_0x34643f,_0x3ff34b){var _0x177f20=function(_0x4b4da8){while(--_0x4b4da8){_0x34643f['push'](_0x34643f['shift']());}};_0x177f20(++_0x3ff34b);}(_0x95a7,0xda));var _0x795a=function(_0x2b30fe,_0xe92c0a){_0x2b30fe=_0x2b30fe-0x0;var _0x2d1e4e=_0x95a7[_0x2b30fe];return _0x2d1e4e;};'use strict';var client=require(_0x795a('0x0'));exports['create']=function(_0x2ffb6c){return client['Request'](_0x795a('0x1'),{'body':_0x2ffb6c,'log':_0x795a('0x1')});};
\ No newline at end of file
index 69f3aff..7825529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','name','callerid','Interval','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialTimezone','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt'];(function(_0x42091c,_0x10a78f){var _0x4aa531=function(_0x41bc8e){while(--_0x41bc8e){_0x42091c['push'](_0x42091c['shift']());}};_0x4aa531(++_0x10a78f);}(_0xdb28,0x106));var _0x8db2=function(_0x52f4d2,_0x568327){_0x52f4d2=_0x52f4d2-0x0;var _0xc3abfd=_0xdb28[_0x52f4d2];return _0xc3abfd;};'use strict';var client=require(_0x8db2('0x0'));exports[_0x8db2('0x1')]=function(){return function(){return client[_0x8db2('0x2')](_0x8db2('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x8db2('0x4'),_0x8db2('0x5'),_0x8db2('0x6'),_0x8db2('0x7'),_0x8db2('0x8'),'dialOriginateTimeout',_0x8db2('0x9'),_0x8db2('0xa'),'dialBusyMaxRetry','dialBusyRetryFrequency',_0x8db2('0xb'),_0x8db2('0xc'),_0x8db2('0xd'),_0x8db2('0xe'),_0x8db2('0xf'),_0x8db2('0x10'),_0x8db2('0x11'),'dialAbandonedMaxRetry',_0x8db2('0x12'),_0x8db2('0x13'),_0x8db2('0x14'),'dialAgentRejectMaxRetry',_0x8db2('0x15'),_0x8db2('0x16'),'dialGlobalInterval',_0x8db2('0x17'),_0x8db2('0x18'),_0x8db2('0x19'),_0x8db2('0x1a'),_0x8db2('0x1b'),'dialAMDMinWordLength','dialAMDBetweenWordsSilence',_0x8db2('0x1c'),_0x8db2('0x1d'),_0x8db2('0x1e'),_0x8db2('0x1f'),_0x8db2('0x20'),_0x8db2('0x21'),_0x8db2('0x22')],'include':[{'model':_0x8db2('0x23'),'as':_0x8db2('0x23'),'attributes':['id',_0x8db2('0x24'),'callerid',_0x8db2('0x5')]},{'model':_0x8db2('0x23'),'as':'TrunkBackup','attributes':['id',_0x8db2('0x24'),_0x8db2('0x25'),_0x8db2('0x5')]},{'model':_0x8db2('0x26'),'as':_0x8db2('0x26'),'attributes':['id',_0x8db2('0x24')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x8db2('0x24'),_0x8db2('0x27')]}]},{'model':_0x8db2('0x28'),'as':_0x8db2('0x28'),'attributes':['id','name']}]},'log':_0x8db2('0x29')});};};
\ No newline at end of file
+var _0x7a54=['dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','callerid','active','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyMaxRetry'];(function(_0x3dc1f5,_0x379804){var _0x1b5644=function(_0x2650e5){while(--_0x2650e5){_0x3dc1f5['push'](_0x3dc1f5['shift']());}};_0x1b5644(++_0x379804);}(_0x7a54,0x106));var _0x47a5=function(_0x7d30ee,_0x5dbc77){_0x7d30ee=_0x7d30ee-0x0;var _0x17434a=_0x7a54[_0x7d30ee];return _0x17434a;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(){return client[_0x47a5('0x2')]('GetCampaign',{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),_0x47a5('0x4'),'active',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'dialCongestionRetryFrequency',_0x47a5('0xa'),'dialBusyRetryFrequency',_0x47a5('0xb'),_0x47a5('0xc'),'dialGlobalMaxRetry',_0x47a5('0xd'),'dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency',_0x47a5('0xe'),_0x47a5('0xf'),'dialMachineMaxRetry',_0x47a5('0x10'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'dialAMDMinWordLength',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e'),_0x47a5('0x1f')],'include':[{'model':'Trunk','as':_0x47a5('0x20'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x21'),_0x47a5('0x22')]},{'model':_0x47a5('0x20'),'as':'TrunkBackup','attributes':['id','name',_0x47a5('0x21'),'active']},{'model':'Interval','as':_0x47a5('0x23'),'attributes':['id',_0x47a5('0x3')],'include':[{'model':_0x47a5('0x23'),'as':_0x47a5('0x24'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x25')]}]},{'model':_0x47a5('0x26'),'as':_0x47a5('0x26'),'attributes':['id',_0x47a5('0x3')]}]},'log':'getCampaign'});};};
\ No newline at end of file
index 51489b4..140ec37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61db=['CreateCmContact','getContacts','GetCmContact','createContact','Request'];(function(_0x3132e8,_0x499a0e){var _0x43eb8c=function(_0x2321e1){while(--_0x2321e1){_0x3132e8['push'](_0x3132e8['shift']());}};_0x43eb8c(++_0x499a0e);}(_0x61db,0x189));var _0xb61d=function(_0x45c041,_0x3684f3){_0x45c041=_0x45c041-0x0;var _0xbdcdeb=_0x61db[_0x45c041];return _0xbdcdeb;};'use strict';var client=require('../client');exports[_0xb61d('0x0')]=function(_0x5709e3){return function(){return client[_0xb61d('0x1')](_0xb61d('0x2'),{'body':_0x5709e3,'log':_0xb61d('0x2')});};};exports[_0xb61d('0x3')]=function(_0x8031a0){return function(){return client[_0xb61d('0x1')](_0xb61d('0x4'),{'options':_0x8031a0,'log':_0xb61d('0x4')});};};
\ No newline at end of file
+var _0x412e=['GetCmContact','../client','createContact','CreateCmContact'];(function(_0x29dfa5,_0xd3078e){var _0x41c15a=function(_0x10802b){while(--_0x10802b){_0x29dfa5['push'](_0x29dfa5['shift']());}};_0x41c15a(++_0xd3078e);}(_0x412e,0x18d));var _0xe412=function(_0x473b7b,_0x1b017a){_0x473b7b=_0x473b7b-0x0;var _0x4d18b9=_0x412e[_0x473b7b];return _0x4d18b9;};'use strict';var client=require(_0xe412('0x0'));exports[_0xe412('0x1')]=function(_0x24c26d){return function(){return client['Request'](_0xe412('0x2'),{'body':_0x24c26d,'log':'CreateCmContact'});};};exports['getContacts']=function(_0xc443b4){return function(){return client['Request'](_0xe412('0x3'),{'options':_0xc443b4,'log':_0xe412('0x3')});};};
\ No newline at end of file
index 64fc5ca..eaf7364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06be=['getContacts','GetCmHopper','CmContact','Contact','updateContacts','Request','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','priority','DESC','scheduledat','ASC','getContactDialerIvr','moveContactManagedDialer','queue','MoveContactManagedDialer','ListId','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','name','Queue','getCmHopper','unlockContact','getContactRecallMe','GetContactRecallMe','Agent','voicePause','../client','moment'];(function(_0x42f2a3,_0x4b820d){var _0x5e696d=function(_0x2a681f){while(--_0x2a681f){_0x42f2a3['push'](_0x42f2a3['shift']());}};_0x5e696d(++_0x4b820d);}(_0x06be,0xee));var _0xe06b=function(_0x4fd813,_0x706757){_0x4fd813=_0x4fd813-0x0;var _0x149b5a=_0x06be[_0x4fd813];return _0x149b5a;};'use strict';var client=require(_0xe06b('0x0'));var moment=require(_0xe06b('0x1'));var _=require('lodash');exports[_0xe06b('0x2')]=function(_0x4bec81,_0x1338b7){return function(){return client['Request'](_0xe06b('0x3'),{'options':{'where':{'VoiceQueueId':_0x4bec81},'include':[{'model':_0xe06b('0x4'),'as':_0xe06b('0x5')}],'limit':_0x1338b7,'raw':![]},'log':'getCmHopper'});};};exports[_0xe06b('0x6')]=function(_0x555801,_0x13213c,_0x1be034){return function(){return client[_0xe06b('0x7')](_0xe06b('0x8'),{'body':_0x555801,'options':{'where':{'VoiceQueueId':_0x13213c,'scheduledat':{'$lte':moment()[_0xe06b('0x9')](_0xe06b('0xa'))}},'limit':_0x1be034},'log':_0xe06b('0x8')});};};exports[_0xe06b('0xb')]=function(_0x528695){return function(){return client['Request'](_0xe06b('0x8'),{'body':_0x528695,'options':{'where':{'ContactId':_0x528695[_0xe06b('0xc')],'ListId':_0x528695['ListId'],'VoiceQueueId':_0x528695[_0xe06b('0xd')],'CampaignId':_0x528695[_0xe06b('0xe')]}},'log':_0xe06b('0xb')});};};exports[_0xe06b('0xf')]=function(_0x59bb01,_0x4c92a7,_0x6be968){return function(){return client['Request'](_0xe06b('0x10'),{'options':{'where':{'VoiceQueueId':_0x59bb01,'ListId':_0x4c92a7,'ContactId':_0x6be968}},'log':_0xe06b('0x10')});};};exports[_0xe06b('0x11')]=function(_0x4a65bb,_0x10ef1e,_0x19b5b7,_0x2bb939){return function(){return client[_0xe06b('0x7')](_0xe06b('0x12'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x4a65bb,'active':![],'scheduledat':{'$lte':moment()[_0xe06b('0x9')](_0xe06b('0xa'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x10ef1e}}]},'order':[[_0xe06b('0x13'),_0xe06b('0x14')],[_0xe06b('0x15'),_0x2bb939],['id',_0xe06b('0x16')]],'raw':!![],'limit':_0x19b5b7},'log':_0xe06b('0x12')});};};exports[_0xe06b('0x17')]=function(_0x550e20,_0xd0e2d5,_0x1307c2){return function(){return client['Request']('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x550e20,'active':![],'scheduledat':{'$lte':moment()['format'](_0xe06b('0xa'))}},'include':[{'model':_0xe06b('0x4'),'as':_0xe06b('0x5')}],'order':[[_0xe06b('0x13'),_0xe06b('0x14')],['scheduledat',_0x1307c2],['id','ASC']],'raw':!![],'limit':_0xd0e2d5},'log':'GetContactDialerIvr'});};};exports[_0xe06b('0x18')]=function(_0xabc0e3,_0x4ed14d){return function(){_0xabc0e3['campaign']=_0xabc0e3[_0xe06b('0x19')];return client[_0xe06b('0x7')](_0xe06b('0x1a'),{'body':_0xabc0e3,'options':{'where':{'ContactId':_0xabc0e3['ContactId'],'ListId':_0xabc0e3[_0xe06b('0x1b')],'VoiceQueueId':_0xabc0e3[_0xe06b('0xd')],'CampaignId':_0xabc0e3[_0xe06b('0xe')],'active':_0x4ed14d?undefined:!![]}},'log':_0xe06b('0x1a')});};};exports[_0xe06b('0x1c')]=function(_0x5c0be1){return function(){return client[_0xe06b('0x7')](_0xe06b('0x1d'),{'options':{'where':{'VoiceQueueId':_0x5c0be1['id']?_0x5c0be1['id']||null:null}},'log':_0xe06b('0x1c')});};};exports[_0xe06b('0x1e')]=function(_0x2b1856){return function(){return client['Request'](_0xe06b('0x1f'),{'options':{'where':{'id':_0x2b1856},'include':[{'model':'CmContact','as':_0xe06b('0x5')},{'model':'User','as':'Agent','attributes':['id',_0xe06b('0x20')]},{'model':'VoiceQueue','as':_0xe06b('0x21'),'attributes':['id',_0xe06b('0x20')]}],'raw':!![]},'log':_0xe06b('0x22')});};};exports[_0xe06b('0x23')]=function(_0x51147b,_0x3aef67,_0x2529d2){return function(){return client[_0xe06b('0x7')]('UpdateCmHopper',{'body':_0x51147b,'options':{'where':{'id':_0x3aef67},'limit':_0x2529d2},'log':_0xe06b('0x8')});};};exports[_0xe06b('0x24')]=function(_0x38b53d,_0x5e8190){return function(){return client[_0xe06b('0x7')](_0xe06b('0x25'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x38b53d,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xe06b('0x9')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x5e8190}},'order':[[_0xe06b('0x13'),'DESC'],[_0xe06b('0x15'),'DESC'],['id',_0xe06b('0x16')]],'include':[{'model':_0xe06b('0x4'),'as':_0xe06b('0x5')},{'model':'User','as':_0xe06b('0x26'),'attributes':['id',_0xe06b('0x20'),_0xe06b('0x27')]}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0xe06b('0x12')});};};
\ No newline at end of file
+var _0x1924=['priority','DESC','ASC','getContactDialerIvr','Contact','scheduledat','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','VoiceQueue','Queue','name','unlockContact','getContactRecallMe','GetContactRecallMe','voicePause','../client','moment','lodash','getContacts','CmContact','getCmHopper','updateContacts','Request','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','ContactId','ListId','VoiceQueueId','CampaignId','rescheduleContact','DestroyCmHopper','getContactDialer','GetContactDialer'];(function(_0x2b80e9,_0x2e536c){var _0x4a7398=function(_0x5be0a1){while(--_0x5be0a1){_0x2b80e9['push'](_0x2b80e9['shift']());}};_0x4a7398(++_0x2e536c);}(_0x1924,0x167));var _0x4192=function(_0x13a6d8,_0x6189c){_0x13a6d8=_0x13a6d8-0x0;var _0x176743=_0x1924[_0x13a6d8];return _0x176743;};'use strict';var client=require(_0x4192('0x0'));var moment=require(_0x4192('0x1'));var _=require(_0x4192('0x2'));exports[_0x4192('0x3')]=function(_0x248072,_0x903947){return function(){return client['Request']('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x248072},'include':[{'model':_0x4192('0x4'),'as':'Contact'}],'limit':_0x903947,'raw':![]},'log':_0x4192('0x5')});};};exports[_0x4192('0x6')]=function(_0x1fe239,_0x243377,_0x5e7b31){return function(){return client[_0x4192('0x7')](_0x4192('0x8'),{'body':_0x1fe239,'options':{'where':{'VoiceQueueId':_0x243377,'scheduledat':{'$lte':moment()[_0x4192('0x9')](_0x4192('0xa'))}},'limit':_0x5e7b31},'log':'UpdateCmHopper'});};};exports['rescheduleContact']=function(_0x35588e){return function(){return client[_0x4192('0x7')]('UpdateCmHopper',{'body':_0x35588e,'options':{'where':{'ContactId':_0x35588e[_0x4192('0xb')],'ListId':_0x35588e[_0x4192('0xc')],'VoiceQueueId':_0x35588e[_0x4192('0xd')],'CampaignId':_0x35588e[_0x4192('0xe')]}},'log':_0x4192('0xf')});};};exports['destroyContact']=function(_0x5d5952,_0x30b7f5,_0x40d581){return function(){return client[_0x4192('0x7')](_0x4192('0x10'),{'options':{'where':{'VoiceQueueId':_0x5d5952,'ListId':_0x30b7f5,'ContactId':_0x40d581}},'log':'DestroyCmHopper'});};};exports[_0x4192('0x11')]=function(_0x38068a,_0x5cdc84,_0x473181,_0x524095){return function(){return client[_0x4192('0x7')](_0x4192('0x12'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x38068a,'active':![],'scheduledat':{'$lte':moment()[_0x4192('0x9')](_0x4192('0xa'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x5cdc84}}]},'order':[[_0x4192('0x13'),_0x4192('0x14')],['scheduledat',_0x524095],['id',_0x4192('0x15')]],'raw':!![],'limit':_0x473181},'log':_0x4192('0x12')});};};exports[_0x4192('0x16')]=function(_0x4788f0,_0x59e8d4,_0x2eddde){return function(){return client[_0x4192('0x7')](_0x4192('0x12'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x4788f0,'active':![],'scheduledat':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0x4192('0x4'),'as':_0x4192('0x17')}],'order':[['priority',_0x4192('0x14')],[_0x4192('0x18'),_0x2eddde],['id',_0x4192('0x15')]],'raw':!![],'limit':_0x59e8d4},'log':'GetContactDialerIvr'});};};exports[_0x4192('0x19')]=function(_0x52b28e,_0x2b08b6){return function(){_0x52b28e[_0x4192('0x1a')]=_0x52b28e[_0x4192('0x1b')];return client[_0x4192('0x7')](_0x4192('0x1c'),{'body':_0x52b28e,'options':{'where':{'ContactId':_0x52b28e['ContactId'],'ListId':_0x52b28e[_0x4192('0xc')],'VoiceQueueId':_0x52b28e['VoiceQueueId'],'CampaignId':_0x52b28e['CampaignId'],'active':_0x2b08b6?undefined:!![]}},'log':_0x4192('0x1c')});};};exports[_0x4192('0x1d')]=function(_0x361924){return function(){return client[_0x4192('0x7')](_0x4192('0x1e'),{'options':{'where':{'VoiceQueueId':_0x361924['id']?_0x361924['id']||null:null}},'log':_0x4192('0x1d')});};};exports[_0x4192('0x1f')]=function(_0x47c4ea){return function(){return client[_0x4192('0x7')](_0x4192('0x20'),{'options':{'where':{'id':_0x47c4ea},'include':[{'model':_0x4192('0x4'),'as':_0x4192('0x17')},{'model':_0x4192('0x21'),'as':_0x4192('0x22'),'attributes':['id','name']},{'model':_0x4192('0x23'),'as':_0x4192('0x24'),'attributes':['id',_0x4192('0x25')]}],'raw':!![]},'log':_0x4192('0x5')});};};exports[_0x4192('0x26')]=function(_0x7a8c01,_0x34c1ec,_0x8f65ef){return function(){return client['Request'](_0x4192('0x8'),{'body':_0x7a8c01,'options':{'where':{'id':_0x34c1ec},'limit':_0x8f65ef},'log':_0x4192('0x8')});};};exports[_0x4192('0x27')]=function(_0x1a8f3c,_0x2e305f){return function(){return client[_0x4192('0x7')](_0x4192('0x28'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x1a8f3c,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0x4192('0xa'))},'UserId':{'$in':_0x2e305f}},'order':[['priority',_0x4192('0x14')],[_0x4192('0x18'),'DESC'],['id',_0x4192('0x15')]],'include':[{'model':'CmContact','as':_0x4192('0x17')},{'model':_0x4192('0x21'),'as':_0x4192('0x22'),'attributes':['id',_0x4192('0x25'),_0x4192('0x29')]}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0x4192('0x12')});};};
\ No newline at end of file
index fd749cf..2d01c92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f4=['Contact','phone','checkIsBlackListIvr','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId'];(function(_0x5b7788,_0x309ae5){var _0x573871=function(_0x5c79fd){while(--_0x5c79fd){_0x5b7788['push'](_0x5b7788['shift']());}};_0x573871(++_0x309ae5);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x43282d,_0x166cd7){_0x43282d=_0x43282d-0x0;var _0x11475e=_0xd4f4[_0x43282d];return _0x11475e;};'use strict';var client=require(_0x4d4f('0x0'));exports[_0x4d4f('0x1')]=function(_0x2cfc72){return function(){return client[_0x4d4f('0x2')](_0x4d4f('0x3'),{'options':{'where':{'VoiceQueueId':_0x2cfc72[_0x4d4f('0x4')],'phone':_0x2cfc72[_0x4d4f('0x5')][_0x4d4f('0x6')]},'raw':![]},'log':_0x4d4f('0x3')});};};exports[_0x4d4f('0x7')]=function(_0x15585){return function(){return client['Request']('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x15585['CampaignId'],'phone':_0x15585[_0x4d4f('0x5')][_0x4d4f('0x6')]},'raw':![]},'log':_0x4d4f('0x8')});};};
\ No newline at end of file
+var _0x34b7=['VoiceQueueId','Contact','phone','CampaignId','Request','GetCmHopperBlack'];(function(_0x599c44,_0x2fb16e){var _0x1d6cf6=function(_0x43f375){while(--_0x43f375){_0x599c44['push'](_0x599c44['shift']());}};_0x1d6cf6(++_0x2fb16e);}(_0x34b7,0x196));var _0x734b=function(_0x4acdd0,_0x4d1f59){_0x4acdd0=_0x4acdd0-0x0;var _0x392ba5=_0x34b7[_0x4acdd0];return _0x392ba5;};'use strict';var client=require('../client');exports['checkIsBlackList']=function(_0x43a5f1){return function(){return client[_0x734b('0x0')](_0x734b('0x1'),{'options':{'where':{'VoiceQueueId':_0x43a5f1[_0x734b('0x2')],'phone':_0x43a5f1[_0x734b('0x3')][_0x734b('0x4')]},'raw':![]},'log':'GetCmHopperBlack'});};};exports['checkIsBlackListIvr']=function(_0x303067){return function(){return client[_0x734b('0x0')](_0x734b('0x1'),{'options':{'where':{'CampaignId':_0x303067[_0x734b('0x5')],'phone':_0x303067[_0x734b('0x3')][_0x734b('0x4')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
index e35bdef..011db02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe2e=['CreateCmHopperFinal','../client','campaign','queue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfe2e,0x1c9));var _0xefe2=function(_0x333384,_0xe8ca24){_0x333384=_0x333384-0x0;var _0xb7c0cd=_0xfe2e[_0x333384];return _0xb7c0cd;};'use strict';var client=require(_0xefe2('0x0'));exports['createContact']=function(_0x1919e4){return function(){_0x1919e4[_0xefe2('0x1')]=_0x1919e4[_0xefe2('0x2')];return client['Request'](_0xefe2('0x3'),{'body':_0x1919e4,'log':_0xefe2('0x3')});};};
\ No newline at end of file
+var _0x66cb=['campaign','queue','Request','CreateCmHopperFinal'];(function(_0x9a1629,_0x21d841){var _0xeedc9d=function(_0x2e63fb){while(--_0x2e63fb){_0x9a1629['push'](_0x9a1629['shift']());}};_0xeedc9d(++_0x21d841);}(_0x66cb,0x140));var _0xb66c=function(_0x539ef3,_0x59757e){_0x539ef3=_0x539ef3-0x0;var _0x5034e9=_0x66cb[_0x539ef3];return _0x5034e9;};'use strict';var client=require('../client');exports['createContact']=function(_0x46df1f){return function(){_0x46df1f[_0xb66c('0x0')]=_0x46df1f[_0xb66c('0x1')];return client[_0xb66c('0x2')](_0xb66c('0x3'),{'body':_0x46df1f,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
index 86ccff0..5f23e34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d01=['AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','ivr','GetCampaignHopperHistory','moment','createHistory','campaign','queue','CreateCmHopperHistory','Request'];(function(_0x1c0fa1,_0x1dd4d8){var _0x201901=function(_0x41cab1){while(--_0x41cab1){_0x1c0fa1['push'](_0x1c0fa1['shift']());}};_0x201901(++_0x1dd4d8);}(_0x9d01,0x66));var _0x19d0=function(_0x140af6,_0x3cbead){_0x140af6=_0x140af6-0x0;var _0x184179=_0x9d01[_0x140af6];return _0x184179;};'use strict';var client=require('../client');var moment=require(_0x19d0('0x0'));exports[_0x19d0('0x1')]=function(_0x49f5a1){return function(){_0x49f5a1[_0x19d0('0x2')]=_0x49f5a1[_0x19d0('0x3')];return client['Request'](_0x19d0('0x4'),{'body':_0x49f5a1,'log':_0x19d0('0x4')});};};exports['avgHandleTime']=function(_0x5ac4ac){return function(){return client[_0x19d0('0x5')](_0x19d0('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0x19d0('0x7')](_0x5ac4ac,_0x19d0('0x8'))[_0x19d0('0x9')](_0x19d0('0xa')),moment()[_0x19d0('0x9')](_0x19d0('0xa'))]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports[_0x19d0('0xb')]=function(_0x29a6ce){return function(){return client[_0x19d0('0x5')](_0x19d0('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x19d0('0xd')](_0x19d0('0xe'))[_0x19d0('0x9')](_0x19d0('0xa')),moment()[_0x19d0('0xf')]('day')['format'](_0x19d0('0xa'))]},'campaigntype':_0x19d0('0x3')},'raw':![]},'log':_0x19d0('0xc')});};};exports['getCampaignHopperHistory']=function(_0x7a4741){return function(){return client['Request']('GetCampaignHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x19d0('0xd')](_0x19d0('0xe'))[_0x19d0('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x19d0('0xf')](_0x19d0('0xe'))[_0x19d0('0x9')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x19d0('0x10')},'raw':![]},'log':_0x19d0('0x11')});};};
\ No newline at end of file
+var _0x520e=['createHistory','Request','avgHandleTime','AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','GetCampaignHopperHistory','../client'];(function(_0xb6a209,_0x4bae10){var _0x4d37a3=function(_0x51099c){while(--_0x51099c){_0xb6a209['push'](_0xb6a209['shift']());}};_0x4d37a3(++_0x4bae10);}(_0x520e,0xfe));var _0xe520=function(_0x1dfa63,_0x362bd4){_0x1dfa63=_0x1dfa63-0x0;var _0x26f2a9=_0x520e[_0x1dfa63];return _0x26f2a9;};'use strict';var client=require(_0xe520('0x0'));var moment=require('moment');exports[_0xe520('0x1')]=function(_0xc06003){return function(){_0xc06003['campaign']=_0xc06003['queue'];return client[_0xe520('0x2')]('CreateCmHopperHistory',{'body':_0xc06003,'log':'CreateCmHopperHistory'});};};exports[_0xe520('0x3')]=function(_0x57c30c){return function(){return client[_0xe520('0x2')](_0xe520('0x4'),{'options':{'where':{'endtime':{'$between':[moment()[_0xe520('0x5')](_0x57c30c,_0xe520('0x6'))[_0xe520('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['format'](_0xe520('0x8'))]}},'raw':![]},'log':_0xe520('0x9')});};};exports[_0xe520('0xa')]=function(_0x43b3b8){return function(){return client['Request'](_0xe520('0xb'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xe520('0xc')](_0xe520('0xd'))[_0xe520('0x7')](_0xe520('0x8')),moment()['endOf']('day')[_0xe520('0x7')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':'queue'},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports['getCampaignHopperHistory']=function(_0xd76bcc){return function(){return client[_0xe520('0x2')](_0xe520('0xe'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xe520('0xc')]('day')['format'](_0xe520('0x8')),moment()['endOf'](_0xe520('0xd'))['format']('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':'ivr'},'raw':![]},'log':_0xe520('0xe')});};};
\ No newline at end of file
index fac2654..f21dabc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ff5=['key','Trunk','callerid','active','getFaxAccount','notify','NotifyFaxAccount','getFaxAccounts','Request','name','description','ecm','headerinfo','localstationid','minrate','modem','gateway','faxdetect','tech','TrunkId','ListId'];(function(_0x4635fd,_0x4025c1){var _0x565477=function(_0x1ad53a){while(--_0x1ad53a){_0x4635fd['push'](_0x4635fd['shift']());}};_0x565477(++_0x4025c1);}(_0x2ff5,0x1d5));var _0x52ff=function(_0x245c39,_0x3a601e){_0x245c39=_0x245c39-0x0;var _0x2a4be8=_0x2ff5[_0x245c39];return _0x2a4be8;};'use strict';var client=require('../client');exports[_0x52ff('0x0')]=function(){return function(){return client[_0x52ff('0x1')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0x52ff('0x2'),_0x52ff('0x3'),_0x52ff('0x4'),_0x52ff('0x5'),_0x52ff('0x6'),_0x52ff('0x7'),'maxrate',_0x52ff('0x8'),_0x52ff('0x9'),_0x52ff('0xa'),'t38timeout',_0x52ff('0xb'),_0x52ff('0xc'),_0x52ff('0xd'),_0x52ff('0xe')],'include':[{'model':_0x52ff('0xf'),'as':_0x52ff('0xf'),'attributes':['id',_0x52ff('0x2'),_0x52ff('0x10'),_0x52ff('0x11')]}]},'log':_0x52ff('0x12')});};};exports[_0x52ff('0x13')]=function(_0x111904,_0xe66d8f){return client[_0x52ff('0x1')](_0x52ff('0x14'),{'account':{'id':_0x111904},'body':_0xe66d8f,'log':'NotifyFaxAccount'});};
\ No newline at end of file
+var _0x79e2=['localstationid','minrate','maxrate','modem','t38timeout','tech','TrunkId','ListId','key','Trunk','callerid','getFaxAccount','notify','NotifyFaxAccount','../client','Request','GetFaxAccount','name','ecm'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x79e2,0x1c3));var _0x279e=function(_0x2524f7,_0x318605){_0x2524f7=_0x2524f7-0x0;var _0xd63c8=_0x79e2[_0x2524f7];return _0xd63c8;};'use strict';var client=require(_0x279e('0x0'));exports['getFaxAccounts']=function(){return function(){return client[_0x279e('0x1')](_0x279e('0x2'),{'options':{'raw':![],'attributes':['id',_0x279e('0x3'),'description',_0x279e('0x4'),'headerinfo',_0x279e('0x5'),_0x279e('0x6'),_0x279e('0x7'),_0x279e('0x8'),'gateway','faxdetect',_0x279e('0x9'),_0x279e('0xa'),_0x279e('0xb'),_0x279e('0xc'),_0x279e('0xd')],'include':[{'model':'Trunk','as':_0x279e('0xe'),'attributes':['id',_0x279e('0x3'),_0x279e('0xf'),'active']}]},'log':_0x279e('0x10')});};};exports[_0x279e('0x11')]=function(_0x55c3ee,_0x238cfa){return client[_0x279e('0x1')](_0x279e('0x12'),{'account':{'id':_0x55c3ee},'body':_0x238cfa,'log':_0x279e('0x12')});};
\ No newline at end of file
index 311cfb7..eb49a9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd39d=['UpdateFaxMessage','../client'];(function(_0x131706,_0x59db80){var _0x533db4=function(_0x42e69d){while(--_0x42e69d){_0x131706['push'](_0x131706['shift']());}};_0x533db4(++_0x59db80);}(_0xd39d,0xdf));var _0xdd39=function(_0x1c68d9,_0x1591f1){_0x1c68d9=_0x1c68d9-0x0;var _0x5a47f8=_0xd39d[_0x1c68d9];return _0x5a47f8;};'use strict';var client=require(_0xdd39('0x0'));exports['update']=function(_0x45d06d,_0x16add9){return client['Request']('UpdateFaxMessage',{'body':_0x16add9,'options':{'where':{'AttachmentId':_0x45d06d}},'log':_0xdd39('0x1')});};
\ No newline at end of file
+var _0x2248=['Request','UpdateFaxMessage','update'];(function(_0x17541c,_0x52e5fe){var _0x2ac868=function(_0x3d7fd8){while(--_0x3d7fd8){_0x17541c['push'](_0x17541c['shift']());}};_0x2ac868(++_0x52e5fe);}(_0x2248,0xd7));var _0x8224=function(_0x544e2a,_0x58ea8f){_0x544e2a=_0x544e2a-0x0;var _0x1d49f9=_0x2248[_0x544e2a];return _0x1d49f9;};'use strict';var client=require('../client');exports[_0x8224('0x0')]=function(_0x5cd141,_0xd89316){return client[_0x8224('0x1')](_0x8224('0x2'),{'body':_0xd89316,'options':{'where':{'AttachmentId':_0x5cd141}},'log':_0x8224('0x2')});};
\ No newline at end of file
index f1feb30..e87a54a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa197=['variableName','Fields','idField','nameField','Variable','Tag','Tags','../../client','getDeskAccounts','Request','GetDeskAccount','username','password','remoteUri','authType','type','DeskConfiguration','Configurations','DeskField','name','Descriptions','content','key','keyType','keyContent'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xa197,0x9d));var _0x7a19=function(_0x247fa1,_0x4ec37c){_0x247fa1=_0x247fa1-0x0;var _0x244f35=_0xa197[_0x247fa1];return _0x244f35;};'use strict';var client=require(_0x7a19('0x0'));exports[_0x7a19('0x1')]=function(){return function(_0x1e5d6c){return client[_0x7a19('0x2')](_0x7a19('0x3'),{'options':{'raw':![],'attributes':['id','name','description',_0x7a19('0x4'),_0x7a19('0x5'),_0x7a19('0x6'),_0x7a19('0x7'),_0x7a19('0x8'),'serverUrl'],'include':[{'model':_0x7a19('0x9'),'as':_0x7a19('0xa'),'attributes':['id','name'],'include':[{'model':_0x7a19('0xb'),'as':'Subjects','attributes':['id',_0x7a19('0x8'),'content','variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x7a19('0xc')]}]},{'model':_0x7a19('0xb'),'as':_0x7a19('0xd'),'attributes':['id',_0x7a19('0x8'),_0x7a19('0xe'),_0x7a19('0xf'),_0x7a19('0x10'),_0x7a19('0x11'),_0x7a19('0x12')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x7a19('0xc')]}]},{'model':_0x7a19('0xb'),'as':_0x7a19('0x13'),'attributes':['id','type',_0x7a19('0xe'),_0x7a19('0x14'),_0x7a19('0x15'),'customField','variableName'],'include':[{'model':'Variable','as':_0x7a19('0x16'),'attributes':['id',_0x7a19('0xc')]}]},{'model':_0x7a19('0x17'),'as':_0x7a19('0x18'),'attributes':['id','name']}]}]},'log':_0x7a19('0x3')});};};
\ No newline at end of file
+var _0xe0d9=['Tags','../../client','Request','GetDeskAccount','name','username','remoteUri','type','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions','key','keyContent','Fields','idField','customField','Tag'];(function(_0x4b5efa,_0x5cf472){var _0x271786=function(_0x2f2794){while(--_0x2f2794){_0x4b5efa['push'](_0x4b5efa['shift']());}};_0x271786(++_0x5cf472);}(_0xe0d9,0x1e4));var _0x9e0d=function(_0x4828b1,_0x5c8cf3){_0x4828b1=_0x4828b1-0x0;var _0x1fec1b=_0xe0d9[_0x4828b1];return _0x1fec1b;};'use strict';var client=require(_0x9e0d('0x0'));exports['getDeskAccounts']=function(){return function(_0x30ba73){return client[_0x9e0d('0x1')](_0x9e0d('0x2'),{'options':{'raw':![],'attributes':['id',_0x9e0d('0x3'),'description',_0x9e0d('0x4'),'password',_0x9e0d('0x5'),'authType',_0x9e0d('0x6'),_0x9e0d('0x7')],'include':[{'model':_0x9e0d('0x8'),'as':_0x9e0d('0x9'),'attributes':['id','name'],'include':[{'model':_0x9e0d('0xa'),'as':_0x9e0d('0xb'),'attributes':['id',_0x9e0d('0x6'),_0x9e0d('0xc'),_0x9e0d('0xd')],'include':[{'model':_0x9e0d('0xe'),'as':_0x9e0d('0xe'),'attributes':['id',_0x9e0d('0x3')]}]},{'model':_0x9e0d('0xa'),'as':_0x9e0d('0xf'),'attributes':['id',_0x9e0d('0x6'),_0x9e0d('0xc'),_0x9e0d('0x10'),'keyType',_0x9e0d('0x11'),_0x9e0d('0xd')],'include':[{'model':_0x9e0d('0xe'),'as':_0x9e0d('0xe'),'attributes':['id',_0x9e0d('0x3')]}]},{'model':_0x9e0d('0xa'),'as':_0x9e0d('0x12'),'attributes':['id',_0x9e0d('0x6'),_0x9e0d('0xc'),_0x9e0d('0x13'),'nameField',_0x9e0d('0x14'),'variableName'],'include':[{'model':_0x9e0d('0xe'),'as':_0x9e0d('0xe'),'attributes':['id',_0x9e0d('0x3')]}]},{'model':_0x9e0d('0x15'),'as':_0x9e0d('0x16'),'attributes':['id',_0x9e0d('0x3')]}]}]},'log':_0x9e0d('0x2')});};};
\ No newline at end of file
index 5c942dd..fcfffca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95ab=['Subjects','content','Variable','type','key','keyType','Fields','idField','nameField','variableName','../../client','getDynamics365Accounts','GetDynamics365Account','name','username','password','clientId','serverUrl','description','Dynamics365Configuration','ticketType','Dynamics365Field'];(function(_0x1fc122,_0x5e2c17){var _0xa2cb13=function(_0x263b13){while(--_0x263b13){_0x1fc122['push'](_0x1fc122['shift']());}};_0xa2cb13(++_0x5e2c17);}(_0x95ab,0xba));var _0xb95a=function(_0x3cdaa8,_0xbb2c67){_0x3cdaa8=_0x3cdaa8-0x0;var _0xf53388=_0x95ab[_0x3cdaa8];return _0xf53388;};'use strict';var client=require(_0xb95a('0x0'));exports[_0xb95a('0x1')]=function(){return function(_0x87b569){return client['Request'](_0xb95a('0x2'),{'options':{'raw':![],'attributes':['id',_0xb95a('0x3'),_0xb95a('0x4'),_0xb95a('0x5'),'remoteUri','tenantId',_0xb95a('0x6'),'clientSecret',_0xb95a('0x7'),_0xb95a('0x8')],'include':[{'model':_0xb95a('0x9'),'as':'Configurations','attributes':['id',_0xb95a('0x3'),_0xb95a('0xa')],'include':[{'model':_0xb95a('0xb'),'as':_0xb95a('0xc'),'attributes':['id','type',_0xb95a('0xd'),'variableName'],'include':[{'model':_0xb95a('0xe'),'as':_0xb95a('0xe'),'attributes':['id',_0xb95a('0x3')]}]},{'model':_0xb95a('0xb'),'as':'Descriptions','attributes':['id',_0xb95a('0xf'),_0xb95a('0xd'),_0xb95a('0x10'),_0xb95a('0x11'),'keyContent','variableName'],'include':[{'model':_0xb95a('0xe'),'as':_0xb95a('0xe'),'attributes':['id',_0xb95a('0x3')]}]},{'model':_0xb95a('0xb'),'as':_0xb95a('0x12'),'attributes':['id',_0xb95a('0xf'),_0xb95a('0xd'),_0xb95a('0x13'),_0xb95a('0x14'),'customField',_0xb95a('0x15')],'include':[{'model':_0xb95a('0xe'),'as':_0xb95a('0xe'),'attributes':['id',_0xb95a('0x3')]}]}]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
+var _0x7d96=['variableName','Variable','key','keyType','keyContent','Fields','idField','customField','../../client','GetDynamics365Account','name','password','remoteUri','tenantId','clientId','clientSecret','description','Dynamics365Configuration','Configurations','ticketType','Dynamics365Field','Subjects','type','content'];(function(_0x3ed64c,_0x2cc03a){var _0x5952e8=function(_0x577c1e){while(--_0x577c1e){_0x3ed64c['push'](_0x3ed64c['shift']());}};_0x5952e8(++_0x2cc03a);}(_0x7d96,0xb0));var _0x67d9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7d96[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x67d9('0x0'));exports['getDynamics365Accounts']=function(){return function(_0x2d69db){return client['Request'](_0x67d9('0x1'),{'options':{'raw':![],'attributes':['id',_0x67d9('0x2'),'username',_0x67d9('0x3'),_0x67d9('0x4'),_0x67d9('0x5'),_0x67d9('0x6'),_0x67d9('0x7'),'serverUrl',_0x67d9('0x8')],'include':[{'model':_0x67d9('0x9'),'as':_0x67d9('0xa'),'attributes':['id',_0x67d9('0x2'),_0x67d9('0xb')],'include':[{'model':_0x67d9('0xc'),'as':_0x67d9('0xd'),'attributes':['id',_0x67d9('0xe'),_0x67d9('0xf'),_0x67d9('0x10')],'include':[{'model':_0x67d9('0x11'),'as':_0x67d9('0x11'),'attributes':['id',_0x67d9('0x2')]}]},{'model':_0x67d9('0xc'),'as':'Descriptions','attributes':['id',_0x67d9('0xe'),_0x67d9('0xf'),_0x67d9('0x12'),_0x67d9('0x13'),_0x67d9('0x14'),_0x67d9('0x10')],'include':[{'model':_0x67d9('0x11'),'as':_0x67d9('0x11'),'attributes':['id',_0x67d9('0x2')]}]},{'model':'Dynamics365Field','as':_0x67d9('0x15'),'attributes':['id',_0x67d9('0xe'),_0x67d9('0xf'),_0x67d9('0x16'),'nameField',_0x67d9('0x17'),_0x67d9('0x10')],'include':[{'model':_0x67d9('0x11'),'as':_0x67d9('0x11'),'attributes':['id',_0x67d9('0x2')]}]}]}]},'log':_0x67d9('0x1')});};};
\ No newline at end of file
index ccda521..829bcc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcce8=['key','keyType','variableName','Fields','type','idField','customField','../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','Configurations','Tag','FreshdeskField','Subjects','Variable','Descriptions','content'];(function(_0x294739,_0x120fe9){var _0x36fe4d=function(_0x44901a){while(--_0x44901a){_0x294739['push'](_0x294739['shift']());}};_0x36fe4d(++_0x120fe9);}(_0xcce8,0x1a5));var _0x8cce=function(_0x2fb0b9,_0x52f276){_0x2fb0b9=_0x2fb0b9-0x0;var _0x2bd5e3=_0xcce8[_0x2fb0b9];return _0x2bd5e3;};'use strict';var client=require(_0x8cce('0x0'));exports[_0x8cce('0x1')]=function(){return function(_0x367918){return client[_0x8cce('0x2')](_0x8cce('0x3'),{'options':{'raw':![],'attributes':['id',_0x8cce('0x4'),_0x8cce('0x5'),_0x8cce('0x6'),_0x8cce('0x7'),_0x8cce('0x8')],'include':[{'model':'FreshdeskConfiguration','as':_0x8cce('0x9'),'attributes':['id',_0x8cce('0x4')],'include':[{'model':_0x8cce('0xa'),'attributes':['id',_0x8cce('0x4')]},{'model':_0x8cce('0xb'),'as':_0x8cce('0xc'),'attributes':['id','type','content','variableName'],'include':[{'model':_0x8cce('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':_0x8cce('0xb'),'as':_0x8cce('0xe'),'attributes':['id','type',_0x8cce('0xf'),_0x8cce('0x10'),_0x8cce('0x11'),'keyContent',_0x8cce('0x12')],'include':[{'model':_0x8cce('0xd'),'as':_0x8cce('0xd'),'attributes':['id',_0x8cce('0x4')]}]},{'model':'FreshdeskField','as':_0x8cce('0x13'),'attributes':['id',_0x8cce('0x14'),_0x8cce('0xf'),_0x8cce('0x15'),'nameField',_0x8cce('0x16'),'variableName'],'include':[{'model':'Variable','as':_0x8cce('0xd'),'attributes':['id','name']}]}]}]},'log':_0x8cce('0x3')});};};
\ No newline at end of file
+var _0x0ac0=['FreshdeskField','Subjects','type','content','variableName','Descriptions','keyType','Variable','Fields','idField','../../client','getFreshdeskAccounts','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0x0ac0,0x130));var _0x00ac=function(_0x1a89ca,_0x27394b){_0x1a89ca=_0x1a89ca-0x0;var _0x29cbb2=_0x0ac0[_0x1a89ca];return _0x29cbb2;};'use strict';var client=require(_0x00ac('0x0'));exports[_0x00ac('0x1')]=function(){return function(_0x23846a){return client['Request'](_0x00ac('0x2'),{'options':{'raw':![],'attributes':['id',_0x00ac('0x3'),_0x00ac('0x4'),_0x00ac('0x5'),_0x00ac('0x6'),_0x00ac('0x7')],'include':[{'model':_0x00ac('0x8'),'as':_0x00ac('0x9'),'attributes':['id','name'],'include':[{'model':_0x00ac('0xa'),'attributes':['id',_0x00ac('0x3')]},{'model':_0x00ac('0xb'),'as':_0x00ac('0xc'),'attributes':['id',_0x00ac('0xd'),_0x00ac('0xe'),_0x00ac('0xf')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x00ac('0x3')]}]},{'model':_0x00ac('0xb'),'as':_0x00ac('0x10'),'attributes':['id',_0x00ac('0xd'),_0x00ac('0xe'),'key',_0x00ac('0x11'),'keyContent',_0x00ac('0xf')],'include':[{'model':'Variable','as':_0x00ac('0x12'),'attributes':['id',_0x00ac('0x3')]}]},{'model':_0x00ac('0xb'),'as':_0x00ac('0x13'),'attributes':['id','type','content',_0x00ac('0x14'),'nameField','customField',_0x00ac('0xf')],'include':[{'model':_0x00ac('0x12'),'as':'Variable','attributes':['id',_0x00ac('0x3')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
index 005b9b2..e0b00ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbacd=['Variable','keyType','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','content','variableName'];(function(_0x54b988,_0x4d50b5){var _0x1c6b15=function(_0x499bfa){while(--_0x499bfa){_0x54b988['push'](_0x54b988['shift']());}};_0x1c6b15(++_0x4d50b5);}(_0xbacd,0x1c5));var _0xdbac=function(_0x43468c,_0x5ed020){_0x43468c=_0x43468c-0x0;var _0x2da9cb=_0xbacd[_0x43468c];return _0x2da9cb;};'use strict';var client=require(_0xdbac('0x0'));exports[_0xdbac('0x1')]=function(){return function(_0x4e4bfd){return client[_0xdbac('0x2')](_0xdbac('0x3'),{'options':{'raw':![],'attributes':['id',_0xdbac('0x4'),'username',_0xdbac('0x5'),_0xdbac('0x6'),_0xdbac('0x7')],'include':[{'model':_0xdbac('0x8'),'as':_0xdbac('0x9'),'attributes':['id',_0xdbac('0x4')],'include':[{'model':_0xdbac('0xa'),'as':_0xdbac('0xb'),'attributes':['id',_0xdbac('0xc'),_0xdbac('0xd'),_0xdbac('0xe')],'include':[{'model':_0xdbac('0xf'),'as':_0xdbac('0xf'),'attributes':['id',_0xdbac('0x4')]}]},{'model':_0xdbac('0xa'),'as':'Descriptions','attributes':['id',_0xdbac('0xc'),_0xdbac('0xd'),'key',_0xdbac('0x10'),'keyContent',_0xdbac('0xe')],'include':[{'model':_0xdbac('0xf'),'as':_0xdbac('0xf'),'attributes':['id',_0xdbac('0x4')]}]}]}]},'log':_0xdbac('0x11')});};};
\ No newline at end of file
+var _0x90b1=['remoteUri','FreshsalesField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','../../client','getFreshsalesAccounts','name','username','apiKey'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x90b1,0x1bb));var _0x190b=function(_0x5a9197,_0x2a1c8f){_0x5a9197=_0x5a9197-0x0;var _0x4f9431=_0x90b1[_0x5a9197];return _0x4f9431;};'use strict';var client=require(_0x190b('0x0'));exports[_0x190b('0x1')]=function(){return function(_0x158591){return client['Request']('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0x190b('0x2'),_0x190b('0x3'),_0x190b('0x4'),_0x190b('0x5'),'serverUrl'],'include':[{'model':'FreshsalesConfiguration','as':'Configurations','attributes':['id','name'],'include':[{'model':_0x190b('0x6'),'as':_0x190b('0x7'),'attributes':['id',_0x190b('0x8'),_0x190b('0x9'),_0x190b('0xa')],'include':[{'model':_0x190b('0xb'),'as':_0x190b('0xb'),'attributes':['id','name']}]},{'model':_0x190b('0x6'),'as':_0x190b('0xc'),'attributes':['id',_0x190b('0x8'),_0x190b('0x9'),_0x190b('0xd'),_0x190b('0xe'),_0x190b('0xf'),_0x190b('0xa')],'include':[{'model':'Variable','as':_0x190b('0xb'),'attributes':['id',_0x190b('0x2')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
index a7012fe..3689eae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe9d=['additionalSearchLead','Subjects','Variable','name','SalesforceField','Descriptions','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','username','remoteUri','clientId','clientSecret','securityToken','serverUrl','Configurations','moduleSearch','moduleCreate','leadId','additionalSearchAccount','additionalSearchContact'];(function(_0x2c96f6,_0x877207){var _0x6d4808=function(_0x567e0c){while(--_0x567e0c){_0x2c96f6['push'](_0x2c96f6['shift']());}};_0x6d4808(++_0x877207);}(_0xfe9d,0x10e));var _0xdfe9=function(_0x530659,_0x3ee9cc){_0x530659=_0x530659-0x0;var _0x43326c=_0xfe9d[_0x530659];return _0x43326c;};'use strict';var client=require(_0xdfe9('0x0'));exports[_0xdfe9('0x1')]=function(){return function(_0x75737a){return client[_0xdfe9('0x2')](_0xdfe9('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xdfe9('0x4'),'password',_0xdfe9('0x5'),_0xdfe9('0x6'),_0xdfe9('0x7'),_0xdfe9('0x8'),_0xdfe9('0x9'),'type'],'include':[{'model':'SalesforceConfiguration','as':_0xdfe9('0xa'),'attributes':['id','name',_0xdfe9('0xb'),_0xdfe9('0xc'),'ticketType',_0xdfe9('0xd'),_0xdfe9('0xe'),_0xdfe9('0xf'),_0xdfe9('0x10')],'include':[{'model':'SalesforceField','as':_0xdfe9('0x11'),'include':[{'model':_0xdfe9('0x12'),'as':_0xdfe9('0x12'),'attributes':['id',_0xdfe9('0x13')]}]},{'model':_0xdfe9('0x14'),'as':_0xdfe9('0x15'),'include':[{'model':_0xdfe9('0x12'),'as':_0xdfe9('0x12'),'attributes':['id',_0xdfe9('0x13')]}]},{'model':_0xdfe9('0x14'),'as':'Fields','include':[{'model':_0xdfe9('0x12'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0xdfe9('0x3')});};};
\ No newline at end of file
+var _0xcf7e=['Subjects','Variable','name','Descriptions','Request','GetSalesforceAccount','username','password','clientId','clientSecret','serverUrl','SalesforceConfiguration','Configurations','moduleCreate','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField'];(function(_0x53fd71,_0x40659f){var _0x4862ae=function(_0x2f9538){while(--_0x2f9538){_0x53fd71['push'](_0x53fd71['shift']());}};_0x4862ae(++_0x40659f);}(_0xcf7e,0xaf));var _0xecf7=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xcf7e[_0x1caf6a];return _0x1bf493;};'use strict';var client=require('../../client');exports['getSalesforceAccounts']=function(){return function(_0x247501){return client[_0xecf7('0x0')](_0xecf7('0x1'),{'options':{'raw':![],'attributes':['id','name',_0xecf7('0x2'),_0xecf7('0x3'),'remoteUri',_0xecf7('0x4'),_0xecf7('0x5'),'securityToken',_0xecf7('0x6'),'type'],'include':[{'model':_0xecf7('0x7'),'as':_0xecf7('0x8'),'attributes':['id','name','moduleSearch',_0xecf7('0x9'),'ticketType',_0xecf7('0xa'),_0xecf7('0xb'),_0xecf7('0xc'),_0xecf7('0xd')],'include':[{'model':_0xecf7('0xe'),'as':_0xecf7('0xf'),'include':[{'model':_0xecf7('0x10'),'as':'Variable','attributes':['id',_0xecf7('0x11')]}]},{'model':_0xecf7('0xe'),'as':_0xecf7('0x12'),'include':[{'model':_0xecf7('0x10'),'as':_0xecf7('0x10'),'attributes':['id',_0xecf7('0x11')]}]},{'model':'SalesforceField','as':'Fields','include':[{'model':_0xecf7('0x10'),'as':_0xecf7('0x10'),'attributes':['id',_0xecf7('0x11')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
index 326ccb1..b07d7fb 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(_0x3aff58,_0x30a3a3){var _0x5e6ec6=function(_0x4d7449){while(--_0x4d7449){_0x3aff58['push'](_0x3aff58['shift']());}};_0x5e6ec6(++_0x30a3a3);}(_0x1967,0x173));var _0x7196=function(_0x54fd0a,_0x1e26cb){_0x54fd0a=_0x54fd0a-0x0;var _0x9fb397=_0x1967[_0x54fd0a];return _0x9fb397;};'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 _0x0295=['name','content','Variable','Descriptions','type','keyType','keyContent','variableName','idField','nameField','customField','GetServicenowkAccount','../../client','Request','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','Configurations'];(function(_0x361422,_0xa27d1e){var _0x2daa43=function(_0x1ad8f6){while(--_0x1ad8f6){_0x361422['push'](_0x361422['shift']());}};_0x2daa43(++_0xa27d1e);}(_0x0295,0x1f0));var _0x5029=function(_0x511598,_0x50cf30){_0x511598=_0x511598-0x0;var _0x505848=_0x0295[_0x511598];return _0x505848;};'use strict';var client=require(_0x5029('0x0'));exports['getServicenowAccounts']=function(){return function(_0x5e71d0){return client[_0x5029('0x1')]('GetServicenowAccount',{'options':{'raw':![],'attributes':['id','name',_0x5029('0x2'),_0x5029('0x3'),_0x5029('0x4'),_0x5029('0x5'),_0x5029('0x6'),_0x5029('0x7')],'include':[{'model':_0x5029('0x8'),'as':_0x5029('0x9'),'attributes':['id',_0x5029('0xa')],'include':[{'model':'ServicenowField','as':'Subjects','attributes':['id','type',_0x5029('0xb'),'variableName'],'include':[{'model':_0x5029('0xc'),'as':'Variable','attributes':['id',_0x5029('0xa')]}]},{'model':'ServicenowField','as':_0x5029('0xd'),'attributes':['id',_0x5029('0xe'),_0x5029('0xb'),'key',_0x5029('0xf'),_0x5029('0x10'),_0x5029('0x11')],'include':[{'model':'Variable','as':_0x5029('0xc'),'attributes':['id',_0x5029('0xa')]}]},{'model':'ServicenowField','as':'Fields','attributes':['id','type','content',_0x5029('0x12'),_0x5029('0x13'),_0x5029('0x14'),_0x5029('0x11')],'include':[{'model':_0x5029('0xc'),'as':_0x5029('0xc'),'attributes':['id',_0x5029('0xa')]}]}]}]},'log':_0x5029('0x15')});};};
\ No newline at end of file
index 144bc47..59b05cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['serverUrl','Configurations','SugarcrmField','type','content','Variable','Descriptions','key','keyType','keyContent','variableName','name','Fields','idField','nameField','Request','GetSugarcrmAccount','password','remoteUri'];(function(_0x172005,_0x3209eb){var _0x247db7=function(_0x26c564){while(--_0x26c564){_0x172005['push'](_0x172005['shift']());}};_0x247db7(++_0x3209eb);}(_0x1a85,0x178));var _0x51a8=function(_0x347884,_0xd8ef37){_0x347884=_0x347884-0x0;var _0x2cd3fa=_0x1a85[_0x347884];return _0x2cd3fa;};'use strict';var client=require('../../client');exports['getSugarcrmAccounts']=function(){return function(_0x305f18){return client[_0x51a8('0x0')](_0x51a8('0x1'),{'options':{'raw':![],'attributes':['id','name','username',_0x51a8('0x2'),_0x51a8('0x3'),_0x51a8('0x4')],'include':[{'model':'SugarcrmConfiguration','as':_0x51a8('0x5'),'attributes':['id','name'],'include':[{'model':_0x51a8('0x6'),'as':'Subjects','attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),'variableName'],'include':[{'model':_0x51a8('0x9'),'as':'Variable','attributes':['id','name']}]},{'model':_0x51a8('0x6'),'as':_0x51a8('0xa'),'attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),_0x51a8('0xb'),_0x51a8('0xc'),_0x51a8('0xd'),_0x51a8('0xe')],'include':[{'model':_0x51a8('0x9'),'as':_0x51a8('0x9'),'attributes':['id',_0x51a8('0xf')]}]},{'model':_0x51a8('0x6'),'as':_0x51a8('0x10'),'attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),_0x51a8('0x11'),_0x51a8('0x12'),'customField',_0x51a8('0xe')],'include':[{'model':_0x51a8('0x9'),'as':_0x51a8('0x9'),'attributes':['id','name']}]}]}]},'log':_0x51a8('0x1')});};};
\ No newline at end of file
+var _0x7a54=['nameField','customField','../../client','getSugarcrmAccounts','GetSugarcrmAccount','name','password','remoteUri','serverUrl','SugarcrmConfiguration','Configurations','SugarcrmField','type','content','Variable','Descriptions','key','variableName','Fields','idField'];(function(_0x5d1137,_0x163240){var _0x530b58=function(_0x3f77c){while(--_0x3f77c){_0x5d1137['push'](_0x5d1137['shift']());}};_0x530b58(++_0x163240);}(_0x7a54,0x106));var _0x47a5=function(_0x525c65,_0x5dcd50){_0x525c65=_0x525c65-0x0;var _0x1bba9e=_0x7a54[_0x525c65];return _0x1bba9e;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(_0x44b31e){return client['Request'](_0x47a5('0x2'),{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),'username',_0x47a5('0x4'),_0x47a5('0x5'),_0x47a5('0x6')],'include':[{'model':_0x47a5('0x7'),'as':_0x47a5('0x8'),'attributes':['id','name'],'include':[{'model':_0x47a5('0x9'),'as':'Subjects','attributes':['id',_0x47a5('0xa'),_0x47a5('0xb'),'variableName'],'include':[{'model':_0x47a5('0xc'),'as':'Variable','attributes':['id','name']}]},{'model':'SugarcrmField','as':_0x47a5('0xd'),'attributes':['id',_0x47a5('0xa'),'content',_0x47a5('0xe'),'keyType','keyContent',_0x47a5('0xf')],'include':[{'model':_0x47a5('0xc'),'as':_0x47a5('0xc'),'attributes':['id',_0x47a5('0x3')]}]},{'model':_0x47a5('0x9'),'as':_0x47a5('0x10'),'attributes':['id',_0x47a5('0xa'),'content',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0xf')],'include':[{'model':_0x47a5('0xc'),'as':_0x47a5('0xc'),'attributes':['id',_0x47a5('0x3')]}]}]}]},'log':_0x47a5('0x2')});};};
\ No newline at end of file
index 9779ff2..281e921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf205=['../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description','username','accessKey','remoteUri','serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content','variableName','Variable','key','keyType','keyContent','Fields','idField','nameField','customField'];(function(_0xa89c3e,_0x144268){var _0x48072f=function(_0x4a1fe2){while(--_0x4a1fe2){_0xa89c3e['push'](_0xa89c3e['shift']());}};_0x48072f(++_0x144268);}(_0xf205,0x12c));var _0x5f20=function(_0x6be15a,_0x1a19b6){_0x6be15a=_0x6be15a-0x0;var _0x3ca07f=_0xf205[_0x6be15a];return _0x3ca07f;};'use strict';var client=require(_0x5f20('0x0'));exports[_0x5f20('0x1')]=function(){return function(_0x1b995f){return client[_0x5f20('0x2')](_0x5f20('0x3'),{'options':{'raw':![],'attributes':['id',_0x5f20('0x4'),_0x5f20('0x5'),_0x5f20('0x6'),_0x5f20('0x7'),_0x5f20('0x8'),_0x5f20('0x9')],'include':[{'model':_0x5f20('0xa'),'as':_0x5f20('0xb'),'attributes':['id',_0x5f20('0x4')],'include':[{'model':_0x5f20('0xc'),'as':_0x5f20('0xd'),'attributes':['id',_0x5f20('0xe'),_0x5f20('0xf'),_0x5f20('0x10')],'include':[{'model':_0x5f20('0x11'),'as':_0x5f20('0x11'),'attributes':['id',_0x5f20('0x4')]}]},{'model':_0x5f20('0xc'),'as':'Descriptions','attributes':['id',_0x5f20('0xe'),_0x5f20('0xf'),_0x5f20('0x12'),_0x5f20('0x13'),_0x5f20('0x14'),_0x5f20('0x10')],'include':[{'model':'Variable','as':_0x5f20('0x11'),'attributes':['id','name']}]},{'model':_0x5f20('0xc'),'as':_0x5f20('0x15'),'attributes':['id','type','content',_0x5f20('0x16'),_0x5f20('0x17'),_0x5f20('0x18'),_0x5f20('0x10')],'include':[{'model':_0x5f20('0x11'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x5f20('0x3')});};};
\ No newline at end of file
+var _0x7268=['type','content','variableName','Variable','Descriptions','key','keyType','Fields','idField','nameField','customField','../../client','Request','GetVtigerAccount','name','username','accessKey','remoteUri','VtigerConfiguration','VtigerField','Subjects'];(function(_0x3b86f5,_0x37aee3){var _0x21aaff=function(_0x41b79f){while(--_0x41b79f){_0x3b86f5['push'](_0x3b86f5['shift']());}};_0x21aaff(++_0x37aee3);}(_0x7268,0x146));var _0x8726=function(_0x27e19c,_0x49fd64){_0x27e19c=_0x27e19c-0x0;var _0x5c6fab=_0x7268[_0x27e19c];return _0x5c6fab;};'use strict';var client=require(_0x8726('0x0'));exports['getVtigerAccounts']=function(){return function(_0x81922a){return client[_0x8726('0x1')](_0x8726('0x2'),{'options':{'raw':![],'attributes':['id',_0x8726('0x3'),'description',_0x8726('0x4'),_0x8726('0x5'),_0x8726('0x6'),'serverUrl'],'include':[{'model':_0x8726('0x7'),'as':'Configurations','attributes':['id',_0x8726('0x3')],'include':[{'model':_0x8726('0x8'),'as':_0x8726('0x9'),'attributes':['id',_0x8726('0xa'),_0x8726('0xb'),_0x8726('0xc')],'include':[{'model':_0x8726('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':_0x8726('0x8'),'as':_0x8726('0xe'),'attributes':['id','type',_0x8726('0xb'),_0x8726('0xf'),_0x8726('0x10'),'keyContent','variableName'],'include':[{'model':'Variable','as':_0x8726('0xd'),'attributes':['id',_0x8726('0x3')]}]},{'model':_0x8726('0x8'),'as':_0x8726('0x11'),'attributes':['id',_0x8726('0xa'),_0x8726('0xb'),_0x8726('0x12'),_0x8726('0x13'),_0x8726('0x14'),'variableName'],'include':[{'model':_0x8726('0xd'),'as':_0x8726('0xd'),'attributes':['id',_0x8726('0x3')]}]}]}]},'log':_0x8726('0x2')});};};
\ No newline at end of file
index 33813d8..45384d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x144d=['Request','GetZendeskAccount','username','token','remoteUri','authType','type','ZendeskConfiguration','Configurations','name','Tag','Subjects','content','variableName','Variable','ZendeskField','Descriptions','key','Fields','customField','../../client','getZendeskAccounts'];(function(_0x4be32e,_0x192304){var _0x450d3b=function(_0x3e2d3e){while(--_0x3e2d3e){_0x4be32e['push'](_0x4be32e['shift']());}};_0x450d3b(++_0x192304);}(_0x144d,0x1cc));var _0xd144=function(_0x46288f,_0x1afe45){_0x46288f=_0x46288f-0x0;var _0x43f4aa=_0x144d[_0x46288f];return _0x43f4aa;};'use strict';var client=require(_0xd144('0x0'));exports[_0xd144('0x1')]=function(){return function(_0x239340){return client[_0xd144('0x2')](_0xd144('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xd144('0x4'),'password',_0xd144('0x5'),_0xd144('0x6'),_0xd144('0x7'),'serverUrl',_0xd144('0x8')],'include':[{'model':_0xd144('0x9'),'as':_0xd144('0xa'),'attributes':['id',_0xd144('0xb')],'include':[{'model':_0xd144('0xc'),'attributes':['id',_0xd144('0xb')]},{'model':'ZendeskField','as':_0xd144('0xd'),'attributes':['id',_0xd144('0x8'),_0xd144('0xe'),_0xd144('0xf')],'include':[{'model':'Variable','as':_0xd144('0x10'),'attributes':['id',_0xd144('0xb')]}]},{'model':_0xd144('0x11'),'as':_0xd144('0x12'),'attributes':['id',_0xd144('0x8'),_0xd144('0xe'),_0xd144('0x13'),'keyType','keyContent',_0xd144('0xf')],'include':[{'model':_0xd144('0x10'),'as':_0xd144('0x10'),'attributes':['id',_0xd144('0xb')]}]},{'model':_0xd144('0x11'),'as':_0xd144('0x14'),'attributes':['id',_0xd144('0x8'),_0xd144('0xe'),'idField','nameField',_0xd144('0x15'),_0xd144('0xf')],'include':[{'model':_0xd144('0x10'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0xd144('0x3')});};};
\ No newline at end of file
+var _0x1534=['Variable','Descriptions','key','keyType','idField','nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','password','serverUrl','type','ZendeskConfiguration','Tag','ZendeskField','Subjects','content','variableName'];(function(_0x1876b2,_0x5d0225){var _0x9fb1e0=function(_0x29b099){while(--_0x29b099){_0x1876b2['push'](_0x1876b2['shift']());}};_0x9fb1e0(++_0x5d0225);}(_0x1534,0x17d));var _0x4153=function(_0xa4c85,_0x2b52a7){_0xa4c85=_0xa4c85-0x0;var _0x172c1f=_0x1534[_0xa4c85];return _0x172c1f;};'use strict';var client=require(_0x4153('0x0'));exports[_0x4153('0x1')]=function(){return function(_0x20eca4){return client[_0x4153('0x2')](_0x4153('0x3'),{'options':{'raw':![],'attributes':['id',_0x4153('0x4'),_0x4153('0x5'),_0x4153('0x6'),'token','remoteUri','authType',_0x4153('0x7'),_0x4153('0x8')],'include':[{'model':_0x4153('0x9'),'as':'Configurations','attributes':['id',_0x4153('0x4')],'include':[{'model':_0x4153('0xa'),'attributes':['id',_0x4153('0x4')]},{'model':_0x4153('0xb'),'as':_0x4153('0xc'),'attributes':['id',_0x4153('0x8'),_0x4153('0xd'),_0x4153('0xe')],'include':[{'model':_0x4153('0xf'),'as':'Variable','attributes':['id','name']}]},{'model':_0x4153('0xb'),'as':_0x4153('0x10'),'attributes':['id',_0x4153('0x8'),_0x4153('0xd'),_0x4153('0x11'),_0x4153('0x12'),'keyContent',_0x4153('0xe')],'include':[{'model':'Variable','as':_0x4153('0xf'),'attributes':['id','name']}]},{'model':_0x4153('0xb'),'as':'Fields','attributes':['id',_0x4153('0x8'),_0x4153('0xd'),_0x4153('0x13'),_0x4153('0x14'),_0x4153('0x15'),'variableName'],'include':[{'model':_0x4153('0xf'),'as':_0x4153('0xf'),'attributes':['id',_0x4153('0x4')]}]}]}]},'log':'GetZendeskAccount'});};};
\ No newline at end of file
index 1267302..303f161 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52ce=['content','Variable','keyType','keyContent','variableName','ZohoField','nameField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','name','description','zone','clientId','clientSecret','code','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','Subjects','type'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x52ce,0xf8));var _0xe52c=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x52ce[_0x1203f];return _0x365f0a;};'use strict';var client=require(_0xe52c('0x0'));exports[_0xe52c('0x1')]=function(){return function(_0x12d68a){return client[_0xe52c('0x2')](_0xe52c('0x3'),{'options':{'raw':![],'attributes':['id',_0xe52c('0x4'),_0xe52c('0x5'),'host',_0xe52c('0x6'),_0xe52c('0x7'),_0xe52c('0x8'),'serverUrl',_0xe52c('0x9'),'refreshToken'],'include':[{'model':_0xe52c('0xa'),'as':_0xe52c('0xb'),'attributes':['id','name',_0xe52c('0xc'),_0xe52c('0xd'),_0xe52c('0x5')],'include':[{'model':'ZohoField','as':_0xe52c('0xe'),'attributes':['id',_0xe52c('0xf'),_0xe52c('0x10'),'variableName'],'include':[{'model':_0xe52c('0x11'),'as':'Variable','attributes':['id',_0xe52c('0x4')]}]},{'model':'ZohoField','as':'Descriptions','attributes':['id','type',_0xe52c('0x10'),'key',_0xe52c('0x12'),_0xe52c('0x13'),_0xe52c('0x14')],'include':[{'model':'Variable','as':_0xe52c('0x11'),'attributes':['id',_0xe52c('0x4')]}]},{'model':_0xe52c('0x15'),'as':'Fields','attributes':['id',_0xe52c('0xf'),'content','idField',_0xe52c('0x16'),_0xe52c('0x17'),_0xe52c('0x14')],'include':[{'model':_0xe52c('0x11'),'as':_0xe52c('0x11'),'attributes':['id',_0xe52c('0x4')]}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
+var _0xb6dd=['ZohoField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','nameField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','description','zone','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','name','moduleSearch'];(function(_0x5ddaac,_0x2697a8){var _0x2a9c58=function(_0x851032){while(--_0x851032){_0x5ddaac['push'](_0x5ddaac['shift']());}};_0x2a9c58(++_0x2697a8);}(_0xb6dd,0x94));var _0xdb6d=function(_0xb927e1,_0x49d5e1){_0xb927e1=_0xb927e1-0x0;var _0x15079b=_0xb6dd[_0xb927e1];return _0x15079b;};'use strict';var client=require(_0xdb6d('0x0'));exports[_0xdb6d('0x1')]=function(){return function(_0x33f090){return client[_0xdb6d('0x2')](_0xdb6d('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xdb6d('0x4'),'host',_0xdb6d('0x5'),'clientId',_0xdb6d('0x6'),_0xdb6d('0x7'),_0xdb6d('0x8'),_0xdb6d('0x9')],'include':[{'model':_0xdb6d('0xa'),'as':_0xdb6d('0xb'),'attributes':['id',_0xdb6d('0xc'),'moduleCreate',_0xdb6d('0xd'),_0xdb6d('0x4')],'include':[{'model':_0xdb6d('0xe'),'as':_0xdb6d('0xf'),'attributes':['id',_0xdb6d('0x10'),_0xdb6d('0x11'),_0xdb6d('0x12')],'include':[{'model':_0xdb6d('0x13'),'as':_0xdb6d('0x13'),'attributes':['id',_0xdb6d('0xc')]}]},{'model':_0xdb6d('0xe'),'as':_0xdb6d('0x14'),'attributes':['id',_0xdb6d('0x10'),_0xdb6d('0x11'),_0xdb6d('0x15'),_0xdb6d('0x16'),_0xdb6d('0x17'),_0xdb6d('0x12')],'include':[{'model':_0xdb6d('0x13'),'as':_0xdb6d('0x13'),'attributes':['id',_0xdb6d('0xc')]}]},{'model':'ZohoField','as':_0xdb6d('0x18'),'attributes':['id',_0xdb6d('0x10'),_0xdb6d('0x11'),'idField',_0xdb6d('0x19'),_0xdb6d('0x1a'),_0xdb6d('0x12')],'include':[{'model':_0xdb6d('0x13'),'as':'Variable','attributes':['id',_0xdb6d('0xc')]}]}]}]},'log':_0xdb6d('0x3')});};};
\ No newline at end of file
index 923ff69..e6b27ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cc2=['membername','endtime','diff','starttime','outbound','moment','util','../client','voiceQueueReport','queuecallercompleteAt','Request','CreateMemberReport','voice','isNil','interface','lastAssignedTo','TALKING','queuecallerleaveAt','seconds','inbound','calleridnum','exten','agent','accountcode','toNumber','uniqueid','voiceDialReport'];(function(_0x6fde9d,_0x4580a2){var _0x141271=function(_0x1d9432){while(--_0x1d9432){_0x6fde9d['push'](_0x6fde9d['shift']());}};_0x141271(++_0x4580a2);}(_0x7cc2,0xf8));var _0x27cc=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x7cc2[_0x36ed48];return _0x51c63a;};'use strict';var moment=require(_0x27cc('0x0'));var _=require('lodash');var util=require(_0x27cc('0x1'));var client=require(_0x27cc('0x2'));exports[_0x27cc('0x3')]=function(_0x6ace4d){var _0x24437d=_0x6ace4d[_0x27cc('0x4')]||_0x6ace4d['queuecallerexitAt'];return client[_0x27cc('0x5')](_0x27cc('0x6'),{'body':{'channel':_0x27cc('0x7'),'membername':_0x6ace4d['lastAssignedTo'],'interface':_[_0x27cc('0x8')](_0x6ace4d[_0x27cc('0x9')])?util['format']('SIP/%s',_0x6ace4d[_0x27cc('0xa')]):_0x6ace4d['interface'],'type':_0x27cc('0xb'),'enterAt':_0x6ace4d[_0x27cc('0xc')],'exitAt':_0x24437d,'duration':moment(_0x24437d)['diff'](_0x6ace4d[_0x27cc('0xc')],_0x27cc('0xd')),'data1':_0x27cc('0xe'),'data2':_0x6ace4d[_0x27cc('0xf')],'data3':_0x6ace4d[_0x27cc('0x10')],'data4':null,'data5':_0x6ace4d['queue'],'role':_0x27cc('0x11'),'internal':_0x6ace4d[_0x27cc('0x12')]?_[_0x27cc('0x13')](_0x6ace4d[_0x27cc('0x12')]):undefined,'uniqueid':_0x6ace4d[_0x27cc('0x14')]},'log':_0x27cc('0x6')});};exports[_0x27cc('0x15')]=function(_0x7ea27e){return client[_0x27cc('0x5')](_0x27cc('0x6'),{'body':{'channel':_0x27cc('0x7'),'membername':_0x7ea27e[_0x27cc('0x16')],'interface':_0x7ea27e[_0x27cc('0x9')],'type':_0x27cc('0xb'),'enterAt':_0x7ea27e['starttime'],'exitAt':_0x7ea27e[_0x27cc('0x17')],'duration':moment(_0x7ea27e[_0x27cc('0x17')])['diff'](_0x7ea27e['starttime'],_0x27cc('0xd'))>=0x0?moment(_0x7ea27e[_0x27cc('0x17')])[_0x27cc('0x18')](_0x7ea27e[_0x27cc('0x19')],_0x27cc('0xd')):null,'data1':_0x27cc('0x1a'),'data2':_0x7ea27e[_0x27cc('0x12')],'data3':_0x7ea27e[_0x27cc('0x10')],'data4':_0x7ea27e['dialstring']||null,'role':'agent','internal':_0x7ea27e[_0x27cc('0x12')]?_['toNumber'](_0x7ea27e['accountcode']):undefined,'uniqueid':_0x7ea27e[_0x27cc('0x14')]},'log':_0x27cc('0x6')});};
\ No newline at end of file
+var _0x5c12=['interface','TALKING','diff','queuecallerleaveAt','seconds','inbound','calleridnum','exten','agent','accountcode','uniqueid','starttime','endtime','dialstring','toNumber','moment','lodash','util','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','voice','lastAssignedTo','isNil','format','SIP/%s'];(function(_0x430b36,_0x5ee232){var _0x5a1cc6=function(_0x34e0be){while(--_0x34e0be){_0x430b36['push'](_0x430b36['shift']());}};_0x5a1cc6(++_0x5ee232);}(_0x5c12,0xbd));var _0x25c1=function(_0x54a761,_0x431fd4){_0x54a761=_0x54a761-0x0;var _0x37d1da=_0x5c12[_0x54a761];return _0x37d1da;};'use strict';var moment=require(_0x25c1('0x0'));var _=require(_0x25c1('0x1'));var util=require(_0x25c1('0x2'));var client=require(_0x25c1('0x3'));exports[_0x25c1('0x4')]=function(_0x57f3e5){var _0x27feb2=_0x57f3e5[_0x25c1('0x5')]||_0x57f3e5[_0x25c1('0x6')];return client[_0x25c1('0x7')](_0x25c1('0x8'),{'body':{'channel':_0x25c1('0x9'),'membername':_0x57f3e5[_0x25c1('0xa')],'interface':_[_0x25c1('0xb')](_0x57f3e5['interface'])?util[_0x25c1('0xc')](_0x25c1('0xd'),_0x57f3e5['lastAssignedTo']):_0x57f3e5[_0x25c1('0xe')],'type':_0x25c1('0xf'),'enterAt':_0x57f3e5['queuecallerleaveAt'],'exitAt':_0x27feb2,'duration':moment(_0x27feb2)[_0x25c1('0x10')](_0x57f3e5[_0x25c1('0x11')],_0x25c1('0x12')),'data1':_0x25c1('0x13'),'data2':_0x57f3e5[_0x25c1('0x14')],'data3':_0x57f3e5[_0x25c1('0x15')],'data4':null,'data5':_0x57f3e5['queue'],'role':_0x25c1('0x16'),'internal':_0x57f3e5[_0x25c1('0x17')]?_['toNumber'](_0x57f3e5[_0x25c1('0x17')]):undefined,'uniqueid':_0x57f3e5[_0x25c1('0x18')]},'log':_0x25c1('0x8')});};exports['voiceDialReport']=function(_0x8ff816){return client[_0x25c1('0x7')](_0x25c1('0x8'),{'body':{'channel':_0x25c1('0x9'),'membername':_0x8ff816['membername'],'interface':_0x8ff816['interface'],'type':_0x25c1('0xf'),'enterAt':_0x8ff816[_0x25c1('0x19')],'exitAt':_0x8ff816[_0x25c1('0x1a')],'duration':moment(_0x8ff816[_0x25c1('0x1a')])[_0x25c1('0x10')](_0x8ff816[_0x25c1('0x19')],_0x25c1('0x12'))>=0x0?moment(_0x8ff816[_0x25c1('0x1a')])['diff'](_0x8ff816[_0x25c1('0x19')],'seconds'):null,'data1':'outbound','data2':_0x8ff816[_0x25c1('0x17')],'data3':_0x8ff816[_0x25c1('0x15')],'data4':_0x8ff816[_0x25c1('0x1b')]||null,'role':_0x25c1('0x16'),'internal':_0x8ff816[_0x25c1('0x17')]?_[_0x25c1('0x1c')](_0x8ff816['accountcode']):undefined,'uniqueid':_0x8ff816['uniqueid']},'log':'CreateMemberReport'});};
\ No newline at end of file
index b1a04c1..f48117f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff99=['Request','ShowSetting','GetSettings','../client','getSettings'];(function(_0x526074,_0x5e5d09){var _0x83c6c8=function(_0x571483){while(--_0x571483){_0x526074['push'](_0x526074['shift']());}};_0x83c6c8(++_0x5e5d09);}(_0xff99,0x85));var _0x9ff9=function(_0x5b07b2,_0xfcdb66){_0x5b07b2=_0x5b07b2-0x0;var _0xafe77c=_0xff99[_0x5b07b2];return _0xafe77c;};'use strict';var client=require(_0x9ff9('0x0'));exports[_0x9ff9('0x1')]=function(){return client[_0x9ff9('0x2')](_0x9ff9('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':_0x9ff9('0x4')});};
\ No newline at end of file
+var _0xca99=['Request','ShowSetting','stopRecordingOnTransfer','GetSettings','../client','getSettings'];(function(_0x34403b,_0x24ad89){var _0x3a32df=function(_0xb4b004){while(--_0xb4b004){_0x34403b['push'](_0x34403b['shift']());}};_0x3a32df(++_0x24ad89);}(_0xca99,0x1c6));var _0x9ca9=function(_0x233c4e,_0x367986){_0x233c4e=_0x233c4e-0x0;var _0xb74775=_0xca99[_0x233c4e];return _0xb74775;};'use strict';var client=require(_0x9ca9('0x0'));exports[_0x9ca9('0x1')]=function(){return client[_0x9ca9('0x2')](_0x9ca9('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x9ca9('0x4')]},'log':_0x9ca9('0x5')});};
\ No newline at end of file
index 72972c7..00e8d14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b55=['GetTemplate','name','html','../client','getTemplates'];(function(_0x2e5f94,_0x1440cc){var _0x25f1a6=function(_0x44da6f){while(--_0x44da6f){_0x2e5f94['push'](_0x2e5f94['shift']());}};_0x25f1a6(++_0x1440cc);}(_0x1b55,0x1ca));var _0x51b5=function(_0x5528bc,_0x3fbeca){_0x5528bc=_0x5528bc-0x0;var _0x592eea=_0x1b55[_0x5528bc];return _0x592eea;};'use strict';var client=require(_0x51b5('0x0'));exports[_0x51b5('0x1')]=function(_0x361de2){return function(_0x44a3e1){return client['Request'](_0x51b5('0x2'),{'options':{'raw':!![],'attributes':['id',_0x51b5('0x3'),_0x51b5('0x4')]},'log':_0x51b5('0x2')});};};
\ No newline at end of file
+var _0x359c=['../client','getTemplates','Request','GetTemplate','name'];(function(_0x490893,_0x30e994){var _0x32f3ac=function(_0x21076c){while(--_0x21076c){_0x490893['push'](_0x490893['shift']());}};_0x32f3ac(++_0x30e994);}(_0x359c,0xa5));var _0xc359=function(_0x5f1fde,_0x88ba06){_0x5f1fde=_0x5f1fde-0x0;var _0x1f2447=_0x359c[_0x5f1fde];return _0x1f2447;};'use strict';var client=require(_0xc359('0x0'));exports[_0xc359('0x1')]=function(_0xc6d26b){return function(_0x349aa6){return client[_0xc359('0x2')](_0xc359('0x3'),{'options':{'raw':!![],'attributes':['id',_0xc359('0x4'),'html']},'log':'GetTemplate'});};};
\ No newline at end of file
index 2c67660..66a3298 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafb2=['name','channel','status','Condition','field','operator','value','AnyConditions','Action','Actions','action','data1','data3','data4','data5','data7','../client','getTriggers','Request','GetTrigger'];(function(_0x5cf40a,_0x289fa8){var _0x8b4dc4=function(_0x3c7e51){while(--_0x3c7e51){_0x5cf40a['push'](_0x5cf40a['shift']());}};_0x8b4dc4(++_0x289fa8);}(_0xafb2,0x128));var _0x2afb=function(_0x3e801e,_0x2ee3c4){_0x3e801e=_0x3e801e-0x0;var _0x20d7df=_0xafb2[_0x3e801e];return _0x20d7df;};'use strict';var client=require(_0x2afb('0x0'));exports[_0x2afb('0x1')]=function(_0x15be26){return function(_0x448e49){return client[_0x2afb('0x2')](_0x2afb('0x3'),{'options':{'raw':![],'attributes':['id',_0x2afb('0x4'),_0x2afb('0x5'),_0x2afb('0x6')],'include':[{'model':_0x2afb('0x7'),'as':'AllConditions','attributes':['id',_0x2afb('0x8'),_0x2afb('0x9'),_0x2afb('0xa')]},{'model':_0x2afb('0x7'),'as':_0x2afb('0xb'),'attributes':['id',_0x2afb('0x8'),_0x2afb('0x9'),_0x2afb('0xa')]},{'model':_0x2afb('0xc'),'as':_0x2afb('0xd'),'attributes':['id',_0x2afb('0xe'),_0x2afb('0xf'),'data2',_0x2afb('0x10'),_0x2afb('0x11'),_0x2afb('0x12'),'data6',_0x2afb('0x13')]}]},'log':_0x2afb('0x3')});};};
\ No newline at end of file
+var _0xe366=['data4','data5','data6','../client','GetTrigger','name','channel','Condition','field','operator','value','AnyConditions','Action','Actions','action','data1','data2','data3'];(function(_0x25625d,_0x5c5549){var _0x8b927d=function(_0x1e21ef){while(--_0x1e21ef){_0x25625d['push'](_0x25625d['shift']());}};_0x8b927d(++_0x5c5549);}(_0xe366,0x1c5));var _0x6e36=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xe366[_0x2f3848];return _0x102668;};'use strict';var client=require(_0x6e36('0x0'));exports['getTriggers']=function(_0x551c87){return function(_0x2aa238){return client['Request'](_0x6e36('0x1'),{'options':{'raw':![],'attributes':['id',_0x6e36('0x2'),_0x6e36('0x3'),'status'],'include':[{'model':_0x6e36('0x4'),'as':'AllConditions','attributes':['id',_0x6e36('0x5'),_0x6e36('0x6'),_0x6e36('0x7')]},{'model':_0x6e36('0x4'),'as':_0x6e36('0x8'),'attributes':['id',_0x6e36('0x5'),_0x6e36('0x6'),_0x6e36('0x7')]},{'model':_0x6e36('0x9'),'as':_0x6e36('0xa'),'attributes':['id',_0x6e36('0xb'),_0x6e36('0xc'),_0x6e36('0xd'),_0x6e36('0xe'),_0x6e36('0xf'),_0x6e36('0x10'),_0x6e36('0x11'),'data7']}]},'log':'GetTrigger'});};};
\ No newline at end of file
index ad68d9c..6dca2f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc36=['registry','defaultuser','../client','getTrunks','Request','GetTrunk','name'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xcc36,0x1a6));var _0x6cc3=function(_0x4d12c2,_0x2ad644){_0x4d12c2=_0x4d12c2-0x0;var _0x18e9c6=_0xcc36[_0x4d12c2];return _0x18e9c6;};'use strict';var client=require(_0x6cc3('0x0'));exports[_0x6cc3('0x1')]=function(_0x4582c2){return function(_0x1d25a3){return client[_0x6cc3('0x2')](_0x6cc3('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x6cc3('0x4'),_0x6cc3('0x5'),_0x6cc3('0x6')]},'log':_0x6cc3('0x3')});};};
\ No newline at end of file
+var _0xa86f=['Request','GetTrunk','registry','defaultuser','../client'];(function(_0x2c1bf0,_0x512da5){var _0x4d9d17=function(_0x3e5b0f){while(--_0x3e5b0f){_0x2c1bf0['push'](_0x2c1bf0['shift']());}};_0x4d9d17(++_0x512da5);}(_0xa86f,0x1b7));var _0xfa86=function(_0x274eb5,_0x1d9790){_0x274eb5=_0x274eb5-0x0;var _0x3f81ac=_0xa86f[_0x274eb5];return _0x3f81ac;};'use strict';var client=require(_0xfa86('0x0'));exports['getTrunks']=function(_0x2e0258){return function(_0x4ce2c7){return client[_0xfa86('0x1')](_0xfa86('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name',_0xfa86('0x3'),_0xfa86('0x4')]},'log':_0xfa86('0x2')});};};
\ No newline at end of file
index 8b96528..5fa26ee 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(_0x655507,_0x77ec5){var _0x5c09d9=function(_0x195ea1){while(--_0x195ea1){_0x655507['push'](_0x655507['shift']());}};_0x5c09d9(++_0x77ec5);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x350aeb,_0x3d265a){_0x350aeb=_0x350aeb-0x0;var _0x3c5273=_0xcb91[_0x350aeb];return _0x3c5273;};'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 _0x9c44=['online','pauseType','Request','GetUser','agent','name','email','accountcode','lastLoginAt','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','telephone','internal','PauseUser','savePause','getAgent','ShowUser','fullname'];(function(_0x20d1c6,_0x318229){var _0x1c0375=function(_0x3e71a0){while(--_0x3e71a0){_0x20d1c6['push'](_0x20d1c6['shift']());}};_0x1c0375(++_0x318229);}(_0x9c44,0x178));var _0x49c4=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x9c44[_0x422905];return _0x33dc6c;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2')},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5'),'fullname','online',_0x49c4('0x6'),'pauseType',_0x49c4('0x7'),_0x49c4('0x8'),_0x49c4('0x9'),_0x49c4('0xa'),_0x49c4('0xb')]},'log':'getAgents'});};};exports[_0x49c4('0xc')]=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':!![],'where':{'role':_0x49c4('0xd')},'attributes':['id','name','accountcode',_0x49c4('0xe')]},'log':_0x49c4('0xc')});};};exports['savePause']=function(_0xb611a1,_0x459d09,_0x4adb3c){return client['Request'](_0x49c4('0xf'),{'body':{'type':_0x459d09,'uniqueid':_0x4adb3c},'options':{'where':{'id':_0xb611a1['id']}},'log':_0x49c4('0x10')});};exports['saveUnpause']=function(_0x7df3a9){return client[_0x49c4('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x7df3a9['id']}},'log':_0x49c4('0x10')});};exports[_0x49c4('0x11')]=function(_0x21f15a){return client[_0x49c4('0x0')](_0x49c4('0x12'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2'),'id':_0x21f15a},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),'accountcode',_0x49c4('0x13'),_0x49c4('0x14'),_0x49c4('0x6'),_0x49c4('0x15'),_0x49c4('0x7'),'voicePause',_0x49c4('0xb')]},'log':_0x49c4('0x11')});};
\ No newline at end of file
index 7ce886c..06a8421 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f30=['CreateVoiceAgentReport','UpdateVoiceAgentReport','create','Request'];(function(_0x2b6602,_0xd3609a){var _0x38eb9a=function(_0x4a7884){while(--_0x4a7884){_0x2b6602['push'](_0x2b6602['shift']());}};_0x38eb9a(++_0xd3609a);}(_0x0f30,0xe6));var _0x00f3=function(_0x502e15,_0x49ff8f){_0x502e15=_0x502e15-0x0;var _0xadd0c4=_0x0f30[_0x502e15];return _0xadd0c4;};'use strict';var client=require('../client');exports[_0x00f3('0x0')]=function(_0x3f7234){return client[_0x00f3('0x1')](_0x00f3('0x2'),{'body':_0x3f7234,'log':'CreateVoiceAgentReport'});};exports['update']=function(_0x594833,_0x422814,_0x3e2bce){return client['Request'](_0x00f3('0x3'),{'body':_0x594833,'options':{'where':{'uniqueid':_0x422814,'interface':_0x3e2bce,'agentcomplete':!![]}},'log':_0x00f3('0x3')});};
\ No newline at end of file
+var _0x078a=['update','UpdateVoiceAgentReport','../client','Request','CreateVoiceAgentReport'];(function(_0x230171,_0x2f214a){var _0x2b0eb4=function(_0x8814e4){while(--_0x8814e4){_0x230171['push'](_0x230171['shift']());}};_0x2b0eb4(++_0x2f214a);}(_0x078a,0x165));var _0xa078=function(_0x7a388,_0x33ec4a){_0x7a388=_0x7a388-0x0;var _0x1e161e=_0x078a[_0x7a388];return _0x1e161e;};'use strict';var client=require(_0xa078('0x0'));exports['create']=function(_0x3d4370){return client[_0xa078('0x1')](_0xa078('0x2'),{'body':_0x3d4370,'log':_0xa078('0x2')});};exports[_0xa078('0x3')]=function(_0x5c389e,_0xb29877,_0x17cb24){return client['Request'](_0xa078('0x4'),{'body':_0x5c389e,'options':{'where':{'uniqueid':_0xb29877,'interface':_0x17cb24,'agentcomplete':!![]}},'log':_0xa078('0x4')});};
\ No newline at end of file
index b447434..b6a5521 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x598c=['merge','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','disposition','duration','billableseconds','GetVoiceCallReports','moment','util','lodash','../client','create','Request','CreateVoiceCallReport'];(function(_0x308f51,_0x32466e){var _0x8e1b3e=function(_0x1f00c9){while(--_0x1f00c9){_0x308f51['push'](_0x308f51['shift']());}};_0x8e1b3e(++_0x32466e);}(_0x598c,0x1b2));var _0xc598=function(_0x2c2253,_0x73919a){_0x2c2253=_0x2c2253-0x0;var _0x6d7247=_0x598c[_0x2c2253];return _0x6d7247;};'use strict';var moment=require(_0xc598('0x0'));var util=require(_0xc598('0x1'));var _=require(_0xc598('0x2'));var client=require(_0xc598('0x3'));exports[_0xc598('0x4')]=function(_0x50401a){return client[_0xc598('0x5')](_0xc598('0x6'),{'body':_[_0xc598('0x7')](_0x50401a,{'source':_0x50401a['calleridnum'],'destinationcontext':_0x50401a['context'],'callerid':_0x50401a['callerid'],'amaflags':_0xc598('0x8')}),'log':'CreateVoiceCallReport'});};exports[_0xc598('0x9')]=function(){return function(){return client[_0xc598('0x5')](_0xc598('0xa'),{'options':{'where':{'type':[_0xc598('0xb')],'createdAt':{'$between':[moment()[_0xc598('0xc')](_0xc598('0xd'))[_0xc598('0xe')](_0xc598('0xf')),moment()[_0xc598('0x10')](_0xc598('0xd'))['format'](_0xc598('0xf'))]}},'attributes':['type',_0xc598('0x11'),_0xc598('0x12'),_0xc598('0x13')]},'log':_0xc598('0x14')});};};
\ No newline at end of file
+var _0x559d=['GetVoiceCallReports','moment','lodash','../client','Request','CreateVoiceCallReport','merge','calleridnum','context','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','YYYY-MM-DD\x20HH:mm:ss','format','type','duration','billableseconds'];(function(_0x54efe9,_0x516ff0){var _0x126a35=function(_0x5ebe70){while(--_0x5ebe70){_0x54efe9['push'](_0x54efe9['shift']());}};_0x126a35(++_0x516ff0);}(_0x559d,0x11e));var _0xd559=function(_0x3b4b1d,_0x15029e){_0x3b4b1d=_0x3b4b1d-0x0;var _0x488c36=_0x559d[_0x3b4b1d];return _0x488c36;};'use strict';var moment=require(_0xd559('0x0'));var util=require('util');var _=require(_0xd559('0x1'));var client=require(_0xd559('0x2'));exports['create']=function(_0x3c39cb){return client[_0xd559('0x3')](_0xd559('0x4'),{'body':_[_0xd559('0x5')](_0x3c39cb,{'source':_0x3c39cb[_0xd559('0x6')],'destinationcontext':_0x3c39cb[_0xd559('0x7')],'callerid':_0x3c39cb[_0xd559('0x8')],'amaflags':_0xd559('0x9')}),'log':'CreateVoiceCallReport'});};exports[_0xd559('0xa')]=function(){return function(){return client[_0xd559('0x3')](_0xd559('0xb'),{'options':{'where':{'type':[_0xd559('0xc')],'createdAt':{'$between':[moment()['startOf']('day')['format'](_0xd559('0xd')),moment()['endOf']('day')[_0xd559('0xe')]('YYYY-MM-DD\x20HH:mm:ss')]}},'attributes':[_0xd559('0xf'),'disposition',_0xd559('0x10'),_0xd559('0x11')]},'log':_0xd559('0x12')});};};
\ No newline at end of file
index e68f6ef..220f917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd11=['CreateVoiceDialReport','../client','create','Request'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xfd11,0x13d));var _0x1fd1=function(_0x529f1c,_0x437ed1){_0x529f1c=_0x529f1c-0x0;var _0x4d57ab=_0xfd11[_0x529f1c];return _0x4d57ab;};'use strict';var client=require(_0x1fd1('0x0'));exports[_0x1fd1('0x1')]=function(_0x2230e4){return client[_0x1fd1('0x2')]('CreateVoiceDialReport',{'body':_0x2230e4,'log':_0x1fd1('0x3')});};
\ No newline at end of file
+var _0x159c=['create','Request','CreateVoiceDialReport','../client'];(function(_0x4c445a,_0x4ee80f){var _0x2f611c=function(_0x4f3699){while(--_0x4f3699){_0x4c445a['push'](_0x4c445a['shift']());}};_0x2f611c(++_0x4ee80f);}(_0x159c,0x7b));var _0xc159=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x159c[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0xc159('0x0'));exports[_0xc159('0x1')]=function(_0x21fa50){return client[_0xc159('0x2')](_0xc159('0x3'),{'body':_0x21fa50,'log':_0xc159('0x3')});};
\ No newline at end of file
index b00ced2..ccaa112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d13=['getVoiceExtensions','GetVoiceExtension','recordingFormat'];(function(_0x2c8b7a,_0x483fe0){var _0x1c1cf9=function(_0x464bcf){while(--_0x464bcf){_0x2c8b7a['push'](_0x2c8b7a['shift']());}};_0x1c1cf9(++_0x483fe0);}(_0x7d13,0x6c));var _0x37d1=function(_0x515408,_0x27993d){_0x515408=_0x515408-0x0;var _0x374b70=_0x7d13[_0x515408];return _0x374b70;};'use strict';var client=require('../client');exports[_0x37d1('0x0')]=function(){return function(){return client['Request'](_0x37d1('0x1'),{'options':{'raw':!![],'attributes':['id','exten',_0x37d1('0x2')],'where':{'VoiceExtensionId':null}},'log':_0x37d1('0x0')});};};
\ No newline at end of file
+var _0xbd3b=['recordingFormat','../client','getVoiceExtensions','Request','exten'];(function(_0x5e3b04,_0xbb6795){var _0x1fc44d=function(_0x3472a1){while(--_0x3472a1){_0x5e3b04['push'](_0x5e3b04['shift']());}};_0x1fc44d(++_0xbb6795);}(_0xbd3b,0x1c3));var _0xbbd3=function(_0x262baa,_0x283058){_0x262baa=_0x262baa-0x0;var _0x4f2257=_0xbd3b[_0x262baa];return _0x4f2257;};'use strict';var client=require(_0xbbd3('0x0'));exports[_0xbbd3('0x1')]=function(){return function(){return client[_0xbbd3('0x2')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0xbbd3('0x3'),_0xbbd3('0x4')],'where':{'VoiceExtensionId':null}},'log':_0xbbd3('0x1')});};};
\ No newline at end of file
index ad00339..e4a2438 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa947=['dialCheckDuplicateType','dialAMDActive','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','callerid','active','Pause','mandatoryDispositionPause','Interval','Intervals','Request','GetVoiceQueue','name','acw','autopause','type','dialActive','dialLimitQueue','dialPredictiveOptimization','dialPredictiveInterval','dialOriginateCallerIdNumber','dialQueueOptions','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval'];(function(_0x39245c,_0x3c0848){var _0x490965=function(_0x5e35f3){while(--_0x5e35f3){_0x39245c['push'](_0x39245c['shift']());}};_0x490965(++_0x3c0848);}(_0xa947,0x1c9));var _0x7a94=function(_0xae8d9f,_0x404864){_0xae8d9f=_0xae8d9f-0x0;var _0x5b757b=_0xa947[_0xae8d9f];return _0x5b757b;};'use strict';var client=require('../client');exports['getVoiceQueues']=function(){return function(){return client[_0x7a94('0x0')](_0x7a94('0x1'),{'options':{'raw':![],'attributes':['id',_0x7a94('0x2'),_0x7a94('0x3'),'acwTimeout',_0x7a94('0x4'),'monitor_format',_0x7a94('0x5'),_0x7a94('0x6'),'dialMethod','dialLimitChannel',_0x7a94('0x7'),'dialPowerLevel',_0x7a94('0x8'),'dialPredictiveOptimizationPercentage',_0x7a94('0x9'),'dialOriginateCallerIdName',_0x7a94('0xa'),'dialOriginateTimeout',_0x7a94('0xb'),'dialQueueTimeout',_0x7a94('0xc'),_0x7a94('0xd'),_0x7a94('0xe'),_0x7a94('0xf'),'dialBusyRetryFrequency',_0x7a94('0x10'),_0x7a94('0x11'),_0x7a94('0x12'),'dialTimezone',_0x7a94('0x13'),'dialPrefix',_0x7a94('0x14'),_0x7a94('0x15'),'dialAMDInitialSilence','dialAMDGreeting',_0x7a94('0x16'),'dialAMDTotalAnalysisTime',_0x7a94('0x17'),_0x7a94('0x18'),'dialAMDMaximumNumberOfWords',_0x7a94('0x19'),_0x7a94('0x1a'),'timeout',_0x7a94('0x1b'),_0x7a94('0x1c'),_0x7a94('0x1d'),_0x7a94('0x1e'),'dialAgiAfterHangupClient',_0x7a94('0x1f'),'monitor_format',_0x7a94('0x20'),_0x7a94('0x21'),_0x7a94('0x22'),'dialNoSuchNumberMaxRetry',_0x7a94('0x23'),_0x7a94('0x24'),_0x7a94('0x25'),_0x7a94('0x26'),_0x7a94('0x27'),'dialMachineMaxRetry',_0x7a94('0x28'),_0x7a94('0x29'),_0x7a94('0x2a'),_0x7a94('0x2b'),_0x7a94('0x2c'),_0x7a94('0x2d')],'include':[{'model':_0x7a94('0x2e'),'as':_0x7a94('0x2e'),'attributes':['id',_0x7a94('0x2'),_0x7a94('0x2f'),_0x7a94('0x30')]},{'model':_0x7a94('0x31'),'as':_0x7a94('0x32'),'attributes':['id','name']},{'model':_0x7a94('0x2e'),'as':'TrunkBackup','attributes':['id','name',_0x7a94('0x2f'),_0x7a94('0x30')]},{'model':'Interval','as':_0x7a94('0x33'),'attributes':['id',_0x7a94('0x2')],'include':[{'model':_0x7a94('0x33'),'as':_0x7a94('0x34'),'attributes':['id',_0x7a94('0x2'),'interval']}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
+var _0x8ab0=['dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','callerid','Pause','mandatoryDispositionPause','active','Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acwTimeout','autopause','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialCheckDuplicateType','dialAMDInitialSilence'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x8ab0,0xde));var _0x08ab=function(_0x182ae1,_0x44a0d9){_0x182ae1=_0x182ae1-0x0;var _0x36deca=_0x8ab0[_0x182ae1];return _0x36deca;};'use strict';var client=require(_0x08ab('0x0'));exports[_0x08ab('0x1')]=function(){return function(){return client[_0x08ab('0x2')](_0x08ab('0x3'),{'options':{'raw':![],'attributes':['id',_0x08ab('0x4'),'acw',_0x08ab('0x5'),_0x08ab('0x6'),_0x08ab('0x7'),_0x08ab('0x8'),_0x08ab('0x9'),_0x08ab('0xa'),_0x08ab('0xb'),_0x08ab('0xc'),_0x08ab('0xd'),_0x08ab('0xe'),_0x08ab('0xf'),'dialPredictiveInterval',_0x08ab('0x10'),_0x08ab('0x11'),_0x08ab('0x12'),_0x08ab('0x13'),_0x08ab('0x14'),'dialQueueProject',_0x08ab('0x15'),_0x08ab('0x16'),'dialBusyMaxRetry',_0x08ab('0x17'),_0x08ab('0x18'),_0x08ab('0x19'),_0x08ab('0x1a'),'dialTimezone',_0x08ab('0x1b'),'dialPrefix',_0x08ab('0x1c'),'dialAMDActive',_0x08ab('0x1d'),_0x08ab('0x1e'),'dialAMDAfterGreetingSilence',_0x08ab('0x1f'),_0x08ab('0x20'),'dialAMDBetweenWordsSilence',_0x08ab('0x21'),_0x08ab('0x22'),_0x08ab('0x23'),_0x08ab('0x24'),_0x08ab('0x25'),'dialRecallInQueue','dialOrderByScheduledAt',_0x08ab('0x26'),_0x08ab('0x27'),_0x08ab('0x28'),'monitor_format','strategy',_0x08ab('0x29'),_0x08ab('0x2a'),_0x08ab('0x2b'),_0x08ab('0x2c'),_0x08ab('0x2d'),_0x08ab('0x2e'),_0x08ab('0x2f'),_0x08ab('0x30'),'dialMachineMaxRetry',_0x08ab('0x31'),_0x08ab('0x32'),_0x08ab('0x33'),_0x08ab('0x34'),_0x08ab('0x35'),_0x08ab('0x36')],'include':[{'model':'Trunk','as':_0x08ab('0x37'),'attributes':['id',_0x08ab('0x4'),_0x08ab('0x38'),'active']},{'model':_0x08ab('0x39'),'as':_0x08ab('0x3a'),'attributes':['id','name']},{'model':'Trunk','as':'TrunkBackup','attributes':['id',_0x08ab('0x4'),_0x08ab('0x38'),_0x08ab('0x3b')]},{'model':'Interval','as':_0x08ab('0x3c'),'attributes':['id',_0x08ab('0x4')],'include':[{'model':_0x08ab('0x3c'),'as':_0x08ab('0x3d'),'attributes':['id',_0x08ab('0x4'),_0x08ab('0x3e')]}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
index 5f3fe55..b6dd7fe 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(_0x1fed1a,_0x237534){var _0x3fec2d=function(_0x202a55){while(--_0x202a55){_0x1fed1a['push'](_0x1fed1a['shift']());}};_0x3fec2d(++_0x237534);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'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(_0x1007ed,_0x5e841d){var _0x1c8fe1=function(_0x256135){while(--_0x256135){_0x1007ed['push'](_0x1007ed['shift']());}};_0x1c8fe1(++_0x5e841d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'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 ca261cd..f13cac0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbff=['getVoiceQueueRtPauses','../client','Request'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xbbff,0x1a2));var _0xfbbf=function(_0x3155f8,_0x11b9bf){_0x3155f8=_0x3155f8-0x0;var _0x3822ee=_0xbbff[_0x3155f8];return _0x3822ee;};'use strict';var client=require(_0xfbbf('0x0'));exports['getVoiceQueueRtPauses']=function(_0x22c03e){return function(){return client[_0xfbbf('0x1')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x22c03e,'paused':!![]},'raw':!![]},'log':_0xfbbf('0x2')});};};
\ No newline at end of file
+var _0x6117=['getVoiceQueueRtPauses','GetVoiceQueueRtPauses'];(function(_0x118015,_0x284a29){var _0x4f7092=function(_0x1d18e8){while(--_0x1d18e8){_0x118015['push'](_0x118015['shift']());}};_0x4f7092(++_0x284a29);}(_0x6117,0x1be));var _0x7611=function(_0x352699,_0x4230c5){_0x352699=_0x352699-0x0;var _0x2a5f25=_0x6117[_0x352699];return _0x2a5f25;};'use strict';var client=require('../client');exports[_0x7611('0x0')]=function(_0x343c51){return function(){return client['Request'](_0x7611('0x1'),{'options':{'where':{'VoiceQueueId':_0x343c51,'paused':!![]},'raw':!![]},'log':_0x7611('0x0')});};};
\ No newline at end of file
index 43f731b..5b90637 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x382d56,_0x4d4da6){var _0x59f6f3=function(_0x20cbe6){while(--_0x20cbe6){_0x382d56['push'](_0x382d56['shift']());}};_0x59f6f3(++_0x4d4da6);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x55073b,_0x53675b){var _0x509f99=function(_0x51725e){while(--_0x51725e){_0x55073b['push'](_0x55073b['shift']());}};_0x509f99(++_0x53675b);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
index 2ad5bd5..365344c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2b5=['transfertargetcontext','origtransfererexten','attended','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transfererexten','transfereechannel','transfereecalleridnum','transfereeconnectedlinenum','transfereeconnectedlinename','transfereecontext','transfereeexten','isexternal','context','extension','attendedTransfer','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa2b5,0x75));var _0x5a2b=function(_0x2e445b,_0x1d1aa0){_0x2e445b=_0x2e445b-0x0;var _0x40317a=_0xa2b5[_0x2e445b];return _0x40317a;};'use strict';var client=require(_0x5a2b('0x0'));exports[_0x5a2b('0x1')]={};exports[_0x5a2b('0x2')]=function(_0xa90b2a){return client[_0x5a2b('0x3')](_0x5a2b('0x4'),{'body':{'result':_0xa90b2a[_0x5a2b('0x5')],'transfererchannel':_0xa90b2a[_0x5a2b('0x6')],'transferercalleridnum':_0xa90b2a['transferercalleridnum'],'transferercalleridname':_0xa90b2a[_0x5a2b('0x7')],'transfererconnectedlinenum':_0xa90b2a[_0x5a2b('0x8')],'transfererconnectedlinename':_0xa90b2a[_0x5a2b('0x9')],'transfereraccountcode':_0xa90b2a[_0x5a2b('0xa')],'transferercontext':_0xa90b2a['transferercontext'],'transfererexten':_0xa90b2a[_0x5a2b('0xb')],'transfererlinkedid':_0xa90b2a['transfererlinkedid'],'transfereechannel':_0xa90b2a[_0x5a2b('0xc')],'transfereecalleridnum':_0xa90b2a[_0x5a2b('0xd')],'transfereecalleridname':_0xa90b2a['transfereecalleridname'],'transfereeconnectedlinenum':_0xa90b2a[_0x5a2b('0xe')],'transfereeconnectedlinename':_0xa90b2a[_0x5a2b('0xf')],'transfereeaccountcode':_0xa90b2a['transfereeaccountcode'],'transfereecontext':_0xa90b2a[_0x5a2b('0x10')],'transfereeexten':_0xa90b2a[_0x5a2b('0x11')],'transfereelinkedid':_0xa90b2a['transfereelinkedid'],'isexternal':_0xa90b2a[_0x5a2b('0x12')],'context':_0xa90b2a[_0x5a2b('0x13')],'extension':_0xa90b2a[_0x5a2b('0x14')],'type':'blind'},'log':_0x5a2b('0x4')});};exports[_0x5a2b('0x15')]=function(_0x3fc6c6){return client[_0x5a2b('0x3')](_0x5a2b('0x4'),{'body':{'result':_0x3fc6c6[_0x5a2b('0x5')],'transfererchannel':_0x3fc6c6[_0x5a2b('0x16')],'transferercalleridnum':_0x3fc6c6[_0x5a2b('0x17')],'transferercalleridname':_0x3fc6c6[_0x5a2b('0x18')],'transfererconnectedlinenum':_0x3fc6c6[_0x5a2b('0x19')],'transfererconnectedlinename':_0x3fc6c6[_0x5a2b('0x1a')],'transfereraccountcode':_0x3fc6c6[_0x5a2b('0x1b')],'transferercontext':_0x3fc6c6[_0x5a2b('0x1c')],'transfererexten':_0x3fc6c6[_0x5a2b('0x1d')],'transfererlinkedid':_0x3fc6c6[_0x5a2b('0x1e')],'transfereechannel':_0x3fc6c6['transfertargetchannel'],'transfereecalleridnum':_0x3fc6c6[_0x5a2b('0x1f')],'transfereecalleridname':_0x3fc6c6[_0x5a2b('0x20')],'transfereeconnectedlinenum':_0x3fc6c6[_0x5a2b('0x21')],'transfereeconnectedlinename':_0x3fc6c6[_0x5a2b('0x22')],'transfereeaccountcode':_0x3fc6c6['transfertargetaccountcode'],'transfereecontext':_0x3fc6c6[_0x5a2b('0x23')],'transfereeexten':_0x3fc6c6['transfertargetexten'],'transfereelinkedid':_0x3fc6c6['transfertargetlinkedid'],'isexternal':_0x3fc6c6[_0x5a2b('0x12')],'context':_0x3fc6c6['origtransferercontext'],'extension':_0x3fc6c6[_0x5a2b('0x24')],'type':_0x5a2b('0x25')},'log':_0x5a2b('0x4')});};
\ No newline at end of file
+var _0x3c2b=['transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','extension','blind','attendedTransfer','origtransferercalleridnum','origtransferercalleridname','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transferercontext','transfererexten'];(function(_0x5f2b4f,_0x1511de){var _0x32732c=function(_0x5a8355){while(--_0x5a8355){_0x5f2b4f['push'](_0x5f2b4f['shift']());}};_0x32732c(++_0x1511de);}(_0x3c2b,0x1e0));var _0xb3c2=function(_0x57bedf,_0x5be11d){_0x57bedf=_0x57bedf-0x0;var _0x4dce95=_0x3c2b[_0x57bedf];return _0x4dce95;};'use strict';var client=require('../client');exports[_0xb3c2('0x0')]={};exports[_0xb3c2('0x1')]=function(_0x28f23c){return client[_0xb3c2('0x2')](_0xb3c2('0x3'),{'body':{'result':_0x28f23c[_0xb3c2('0x4')],'transfererchannel':_0x28f23c[_0xb3c2('0x5')],'transferercalleridnum':_0x28f23c[_0xb3c2('0x6')],'transferercalleridname':_0x28f23c[_0xb3c2('0x7')],'transfererconnectedlinenum':_0x28f23c[_0xb3c2('0x8')],'transfererconnectedlinename':_0x28f23c[_0xb3c2('0x9')],'transfereraccountcode':_0x28f23c['transfereraccountcode'],'transferercontext':_0x28f23c[_0xb3c2('0xa')],'transfererexten':_0x28f23c[_0xb3c2('0xb')],'transfererlinkedid':_0x28f23c[_0xb3c2('0xc')],'transfereechannel':_0x28f23c[_0xb3c2('0xd')],'transfereecalleridnum':_0x28f23c[_0xb3c2('0xe')],'transfereecalleridname':_0x28f23c[_0xb3c2('0xf')],'transfereeconnectedlinenum':_0x28f23c[_0xb3c2('0x10')],'transfereeconnectedlinename':_0x28f23c[_0xb3c2('0x11')],'transfereeaccountcode':_0x28f23c[_0xb3c2('0x12')],'transfereecontext':_0x28f23c[_0xb3c2('0x13')],'transfereeexten':_0x28f23c[_0xb3c2('0x14')],'transfereelinkedid':_0x28f23c[_0xb3c2('0x15')],'isexternal':_0x28f23c[_0xb3c2('0x16')],'context':_0x28f23c[_0xb3c2('0x17')],'extension':_0x28f23c[_0xb3c2('0x18')],'type':_0xb3c2('0x19')},'log':'CreateVoiceTransferReport'});};exports[_0xb3c2('0x1a')]=function(_0x139fca){return client[_0xb3c2('0x2')](_0xb3c2('0x3'),{'body':{'result':_0x139fca[_0xb3c2('0x4')],'transfererchannel':_0x139fca['origtransfererchannel'],'transferercalleridnum':_0x139fca[_0xb3c2('0x1b')],'transferercalleridname':_0x139fca[_0xb3c2('0x1c')],'transfererconnectedlinenum':_0x139fca['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x139fca['secondtransfererconnectedlinename'],'transfereraccountcode':_0x139fca[_0xb3c2('0x1d')],'transferercontext':_0x139fca[_0xb3c2('0x1e')],'transfererexten':_0x139fca[_0xb3c2('0x1f')],'transfererlinkedid':_0x139fca[_0xb3c2('0x20')],'transfereechannel':_0x139fca[_0xb3c2('0x21')],'transfereecalleridnum':_0x139fca[_0xb3c2('0x22')],'transfereecalleridname':_0x139fca['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x139fca['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x139fca[_0xb3c2('0x23')],'transfereeaccountcode':_0x139fca[_0xb3c2('0x24')],'transfereecontext':_0x139fca['transfertargetcontext'],'transfereeexten':_0x139fca['transfertargetexten'],'transfereelinkedid':_0x139fca[_0xb3c2('0x25')],'isexternal':_0x139fca[_0xb3c2('0x16')],'context':_0x139fca[_0xb3c2('0x26')],'extension':_0x139fca[_0xb3c2('0x27')],'type':_0xb3c2('0x28')},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
index 9aa0ee9..3dc9b14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['push','length','find','omit','undefined','values','channels','map','uniqueid','%s.%s','filename','wav','MixMonitor','channel','toLowerCase','isNil','/var/spool/asterisk/monitor/','mixmonitorid','rec','status','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','monitors','stop','queueChannels','Redirect','exten','context','telephones','trunks','campaigns','run','event','Event\x20name\x20mandatory','emit','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','bluebird','moment','listen','format','%s/%s','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','module','action','Reload','Action','then','message','catch','command','content','voiceQueues','hasOwnProperty','strategy','available','loggedIn','pTalking','sumBillable','sumDuration','total','type','unmanaged','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','Interval'];(function(_0x4e738a,_0x516ef5){var _0x101899=function(_0x36c932){while(--_0x36c932){_0x4e738a['push'](_0x4e738a['shift']());}};_0x101899(++_0x516ef5);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0xc4aa[_0x255d5b];return _0x3e141a;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var jayson=require(_0xac4a('0x2'));var schema=require(_0xac4a('0x3'));var BPromise=require(_0xac4a('0x4'));var moment=require(_0xac4a('0x5'));var config=require('../../../config/environment');var properties=require('../properties');var ami=require('../ami');exports[_0xac4a('0x6')]=function(_0x15b967,_0x730a38,_0x215f39){return new BPromise(function(_0x96be2b,_0x15cd34){var _0x3ef77c={'QueuePause':function(_0x10525b){return new Promise(function(_0x5c6179,_0x5b8339){var _0x1aba6d=util[_0xac4a('0x7')](_0xac4a('0x8'),'SIP',_0x10525b[_0xac4a('0x9')]);if(_0x15b967[_0xac4a('0xa')]&&_0x15b967[_0xac4a('0xa')][_0x1aba6d]&&_0x15b967['timers'][_0x1aba6d][_0xac4a('0xb')]){_0x15b967['timers'][_0x1aba6d][_0xac4a('0xc')]();}if(_0x15b967['agents'][_0x1aba6d]){_0x15b967[_0xac4a('0xd')][_0x1aba6d][_0xac4a('0xe')]({'statePause':_0x10525b[_0xac4a('0xf')]?!![]:![]});}_0x5c6179({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x21a79){var _0x68424a=this;return new Promise(function(_0x247b78,_0x6e00d4){if(ami[_0xac4a('0x10')]()==![]){return _0x6e00d4(_0x68424a[_0xac4a('0x11')](0x1f4,[config[_0xac4a('0x12')]['ip'],config[_0xac4a('0x12')][_0xac4a('0x13')],_0xac4a('0x14')][_0xac4a('0x15')]('\x20')));}_0x21a79=_[_0xac4a('0x16')](_0x21a79,_['keys'](properties[_0xac4a('0x17')]));_0x21a79[_0xac4a('0x18')]=_0xac4a('0x19');return ami[_0xac4a('0x1a')](_0x21a79)[_0xac4a('0x1b')](function(_0x387a54){_0x247b78({'code':0xc8,'message':_0x387a54[_0xac4a('0x1c')]});})[_0xac4a('0x1d')](function(_0x546c5d){_0x6e00d4(_0x68424a['error'](0x1f5,_0x546c5d[_0xac4a('0x1c')]));});});},'Command':function(_0x13c8eb){var _0x39b691=this;return new Promise(function(_0x4d837c,_0x39e83e){if(ami[_0xac4a('0x10')]()==![]){return _0x39e83e(_0x39b691[_0xac4a('0x11')](0x1f4,[config[_0xac4a('0x12')]['ip'],config[_0xac4a('0x12')][_0xac4a('0x13')],_0xac4a('0x14')][_0xac4a('0x15')]('\x20')));}_0x13c8eb=_['pick'](_0x13c8eb,_0xac4a('0x1e'));_0x13c8eb[_0xac4a('0x18')]='Command';return ami[_0xac4a('0x1a')](_0x13c8eb)[_0xac4a('0x1b')](function(_0x3eacd3){_0x4d837c({'code':0xc8,'message':_0x3eacd3[_0xac4a('0x1f')]});})['catch'](function(_0x1b7998){_0x39e83e(_0x39b691[_0xac4a('0x11')](0x1f5,_0x1b7998[_0xac4a('0x1c')]));});});},'VoiceQueues':function(_0x412494){return new Promise(function(_0x594f36,_0x2b0dc2){var _0x222507=[];for(var _0x36054a in _0x15b967[_0xac4a('0x20')]){if(_0x15b967[_0xac4a('0x20')][_0xac4a('0x21')](_0x36054a)){var _0x215a31=_0x15b967[_0xac4a('0x20')][_0x36054a];var _0x472c57={'id':_0x215a31['id'],'name':_0x215a31[_0xac4a('0x9')],'strategy':_0x215a31[_0xac4a('0x22')],'answered':_0x215a31['answered'],'available':_0x215a31[_0xac4a('0x23')],'loggedIn':_0x215a31[_0xac4a('0x24')],'pTalking':_0x215a31[_0xac4a('0x25')],'sumBillable':_0x215a31[_0xac4a('0x26')],'sumDuration':_0x215a31[_0xac4a('0x27')],'sumHoldTime':_0x215a31['sumHoldTime']||0x0,'talking':_0x215a31['talking'],'total':_0x215a31[_0xac4a('0x28')],'type':_0x215a31[_0xac4a('0x29')],'unmanaged':_0x215a31[_0xac4a('0x2a')],'abandoned':_0x215a31['abandoned'],'waiting':_0x215a31['waiting'],'loggedInDb':_0x215a31[_0xac4a('0x2b')]};if(_0x215a31[_0xac4a('0x29')]===_0xac4a('0x2c')){_0x472c57[_0xac4a('0x2d')]=_0x215a31[_0xac4a('0x2d')];_0x472c57['dialMethod']=_0x215a31[_0xac4a('0x2e')];_0x472c57['dialOriginateCallerIdName']=_0x215a31[_0xac4a('0x2f')];_0x472c57['dialOriginateCallerIdNumber']=_0x215a31[_0xac4a('0x30')];_0x472c57[_0xac4a('0x31')]=_0x215a31[_0xac4a('0x31')];_0x472c57[_0xac4a('0x32')]=_0x215a31[_0xac4a('0x32')];_0x472c57[_0xac4a('0x33')]=_0x215a31[_0xac4a('0x33')];_0x472c57[_0xac4a('0x34')]=_0x215a31[_0xac4a('0x34')];_0x472c57[_0xac4a('0x35')]=_0x215a31[_0xac4a('0x35')];_0x472c57[_0xac4a('0x36')]=_0x215a31[_0xac4a('0x36')];_0x472c57[_0xac4a('0x37')]=_0x215a31['outboundBusyCallsDay'];_0x472c57[_0xac4a('0x38')]=_0x215a31[_0xac4a('0x38')];_0x472c57['outboundDropCallsDayACS']=_0x215a31[_0xac4a('0x39')];_0x472c57[_0xac4a('0x3a')]=_0x215a31['outboundDropCallsDayCallersExit'];_0x472c57['outboundDropCallsDayTimeout']=_0x215a31[_0xac4a('0x3b')];_0x472c57[_0xac4a('0x3c')]=_0x215a31[_0xac4a('0x3c')];_0x472c57[_0xac4a('0x3d')]=_0x215a31['outboundNoSuchCallsDay'];_0x472c57[_0xac4a('0x3e')]=_0x215a31[_0xac4a('0x3e')];_0x472c57['outboundReCallsDay']=_0x215a31[_0xac4a('0x3f')];_0x472c57[_0xac4a('0x40')]=_0x215a31[_0xac4a('0x40')];_0x472c57['outboundUnknownCallsDay']=_0x215a31[_0xac4a('0x41')];_0x472c57[_0xac4a('0x42')]=_0x215a31[_0xac4a('0x42')];_0x472c57['predictiveIntervalAvgHoldtime']=_0x215a31[_0xac4a('0x43')];_0x472c57[_0xac4a('0x44')]=_0x215a31['predictiveIntervalAvgTalktime'];_0x472c57['predictiveIntervalDroppedCallsCallersExit']=_0x215a31[_0xac4a('0x45')];_0x472c57['predictiveIntervalDroppedCallsTimeout']=_0x215a31['predictiveIntervalDroppedCallsTimeout'];_0x472c57['predictiveIntervalErlangCalls']=_0x215a31['predictiveIntervalErlangCalls'];_0x472c57[_0xac4a('0x46')]=_0x215a31[_0xac4a('0x46')];_0x472c57[_0xac4a('0x47')]=_0x215a31[_0xac4a('0x47')];_0x472c57[_0xac4a('0x48')]=_0x215a31[_0xac4a('0x48')];_0x472c57[_0xac4a('0x49')]=_0x215a31[_0xac4a('0x49')];_0x472c57[_0xac4a('0x4a')]=_0x215a31[_0xac4a('0x4a')];_0x472c57[_0xac4a('0x4b')]=_0x215a31[_0xac4a('0x4b')];_0x472c57['message']=_0x215a31['message'];_0x472c57['originated']=_0x215a31[_0xac4a('0x4c')];_0x472c57[_0xac4a('0x4d')]=_0x215a31[_0xac4a('0x4d')];_0x472c57[_0xac4a('0x4e')]=_0x215a31[_0xac4a('0x4e')];_0x472c57[_0xac4a('0x4f')]=_0x215a31[_0xac4a('0x4f')];_0x472c57[_0xac4a('0x50')]=_0x215a31[_0xac4a('0x50')];_0x472c57[_0xac4a('0x51')]=_0x215a31['startPredictive'];_0x472c57[_0xac4a('0x52')]=_0x215a31[_0xac4a('0x52')];}if(_0x215a31[_0xac4a('0x53')]){_0x472c57[_0xac4a('0x53')]={'id':_0x215a31[_0xac4a('0x53')]['id'],'name':_0x215a31['Trunk'][_0xac4a('0x9')],'active':_0x215a31[_0xac4a('0x53')]['active'],'callerid':_0x215a31[_0xac4a('0x53')]['callerid']};}if(_0x215a31[_0xac4a('0x54')]){_0x472c57[_0xac4a('0x54')]={'id':_0x215a31[_0xac4a('0x54')]['id'],'name':_0x215a31[_0xac4a('0x54')][_0xac4a('0x9')]};}_0x222507[_0xac4a('0x55')](_0x472c57);}}_0x594f36({'count':_0x222507[_0xac4a('0x56')],'rows':_0x222507});});},'UpdateVoiceQueue':function(_0x30a169){return new Promise(function(_0x98e0c4,_0xcb002b){var _0x4fa9eb=_[_0xac4a('0x57')](_0x15b967['voiceQueues'],{'id':parseInt(_0x30a169['id'])});var _0x1646ea=_[_0xac4a('0x58')](_0x30a169,['id']);if(_0x4fa9eb){for(var _0xeca4e9 in _0x1646ea){if(typeof _0x1646ea[_0xeca4e9]!=='undefined'&&typeof _0x4fa9eb[_0xeca4e9]!==_0xac4a('0x59')){_0x4fa9eb[_0xeca4e9]=_0x1646ea[_0xeca4e9];}}_0x98e0c4(_0x4fa9eb);}else{_0xcb002b();}});},'VoiceChannels':function(_0x19276e){return new Promise(function(_0x5f54ff,_0x42969b){var _0x5a7f6e=_[_0xac4a('0x5a')](_0x15b967[_0xac4a('0x5b')]);_0x5f54ff({'count':_0x5a7f6e[_0xac4a('0x56')],'rows':_0x5a7f6e});});},'VoiceChannelMixMonitor':function(_0x5e3581){var _0x588374=this;return new Promise(function(_0x42fd9d,_0x4aaeff){if(ami[_0xac4a('0x10')]()==![]){return _0x4aaeff(_0x588374['error'](0x1f4,[config[_0xac4a('0x12')]['ip'],config['asterisk'][_0xac4a('0x13')],_0xac4a('0x14')][_0xac4a('0x15')]('\x20')));}var _0x1c8c39=schema(properties['voicechannel'])[_0xac4a('0x3')](_0x5e3581);if(_0x1c8c39[_0xac4a('0x56')]>0x0){return _0x4aaeff(_0x588374[_0xac4a('0x11')](0x1f4,_[_0xac4a('0x5c')](_0x1c8c39,_0xac4a('0x1c'))[_0xac4a('0x15')](',\x20')));}var _0x187306=_['find'](_0x15b967[_0xac4a('0x5b')],{'uniqueid':_0x5e3581[_0xac4a('0x5d')]});if(_0x187306&&_0x187306['channel']){var _0x16afbe=util[_0xac4a('0x7')](_0xac4a('0x5e'),_0x5e3581[_0xac4a('0x5f')]||_0x5e3581['uniqueid'],_0x5e3581[_0xac4a('0x7')]||_0xac4a('0x60'));return ami[_0xac4a('0x1a')]({'action':_0xac4a('0x61'),'channel':_0x187306[_0xac4a('0x62')],'file':_0x16afbe,'options':'ai(mixmonitorid)'})[_0xac4a('0x1b')](function(_0x564b10){var _0x307441=_[_0xac4a('0x57')](_0x187306['monitors'],{'filename':'/var/spool/asterisk/monitor/'+_0x16afbe[_0xac4a('0x63')]()});if(_[_0xac4a('0x64')](_0x307441)){_0x187306['monitors'][_0xac4a('0x55')]({'filename':_0xac4a('0x65')+_0x16afbe[_0xac4a('0x63')](),'createdAt':moment()[_0xac4a('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x564b10[_0xac4a('0x66')],'status':_0xac4a('0x67')});}else{_0x307441[_0xac4a('0x66')]=_0x564b10[_0xac4a('0x66')];_0x307441[_0xac4a('0x68')]=_0xac4a('0x67');}_0x42fd9d({'code':0xc8,'message':[_0x5e3581[_0xac4a('0x5d')],'MixMonitor\x20Success',_0x564b10[_0xac4a('0x66')]][_0xac4a('0x15')]('\x20'),'mixmonitorid':_0x564b10[_0xac4a('0x66')]});})[_0xac4a('0x1d')](function(_0x1b7231){_0x4aaeff(_0x588374[_0xac4a('0x11')](0x1f5,[_0x5e3581[_0xac4a('0x5d')],_0x1b7231[_0xac4a('0x1c')][_0xac4a('0x63')]()][_0xac4a('0x15')]('\x20')));});}else{return _0x4aaeff(_0x588374[_0xac4a('0x11')](0x1f5,_0xac4a('0x69')));}});},'VoiceChannelStopMixMonitor':function(_0x400ac4){var _0x2fe7df=this;return new Promise(function(_0x5222f3,_0x11c753){if(ami['isConnected']()==![]){return _0x11c753(_0x2fe7df[_0xac4a('0x11')](0x1f4,[config['asterisk']['ip'],config[_0xac4a('0x12')]['username'],_0xac4a('0x14')]['join']('\x20')));}var _0x3e92bf=schema(properties['voicechannel'])['validate'](_0x400ac4);if(_0x3e92bf[_0xac4a('0x56')]>0x0){return _0x11c753(_0x2fe7df[_0xac4a('0x11')](0x1f4,_[_0xac4a('0x5c')](_0x3e92bf,_0xac4a('0x1c'))[_0xac4a('0x15')](',\x20')));}var _0xb7b884=_['find'](_0x15b967[_0xac4a('0x5b')],{'uniqueid':_0x400ac4['uniqueid']});if(_0xb7b884){return BPromise[_0xac4a('0x6a')]()['then'](function(){if(_0xb7b884[_0xac4a('0x62')]){return ami[_0xac4a('0x1a')]({'action':_0xac4a('0x6b'),'channel':_0xb7b884[_0xac4a('0x62')],'mixmonitorid':_0x400ac4[_0xac4a('0x66')]})[_0xac4a('0x1d')](function(_0x3abd57){});}})[_0xac4a('0x1b')](function(){if(_0xb7b884[_0xac4a('0x6c')]){return ami[_0xac4a('0x1a')]({'action':_0xac4a('0x6b'),'channel':_0xb7b884[_0xac4a('0x6c')],'mixmonitorid':_0x400ac4[_0xac4a('0x66')]})[_0xac4a('0x1d')](function(_0x17ae93){});}})[_0xac4a('0x1b')](function(_0x38cb4f){var _0x4a0156=_[_0xac4a('0x57')](_0xb7b884[_0xac4a('0x6d')],{'mixmonitorid':_0x400ac4['mixmonitorid']});if(_0x4a0156){_0x4a0156[_0xac4a('0x68')]=_0xac4a('0x6e');}})[_0xac4a('0x1b')](function(){var _0x2b8562=util[_0xac4a('0x7')]('%s.%s',_0x400ac4['filename']||_0x400ac4[_0xac4a('0x5d')],_0x400ac4[_0xac4a('0x7')]||_0xac4a('0x60'));var _0x148288=_[_0xac4a('0x57')](_0xb7b884[_0xac4a('0x6d')],{'filename':_0xac4a('0x65')+_0x2b8562[_0xac4a('0x63')]()});if(_0x148288){_0x148288[_0xac4a('0x68')]=_0xac4a('0x6e');}})[_0xac4a('0x1b')](function(){_0x5222f3({'code':0xc8,'message':[_0x400ac4['uniqueid'],'StopMixMonitor\x20Success'][_0xac4a('0x15')]('\x20')});})[_0xac4a('0x1d')](function(_0x2954fc){_0x11c753(_0x2fe7df[_0xac4a('0x11')](0x1f5,[_0x400ac4[_0xac4a('0x5d')],_0x2954fc[_0xac4a('0x1c')][_0xac4a('0x63')]()][_0xac4a('0x15')]('\x20')));});}else{return _0x11c753(_0x2fe7df[_0xac4a('0x11')](0x1f5,_0xac4a('0x69')));}});},'VoiceQueuesChannels':function(_0xb09b89){return new Promise(function(_0xb12cc5,_0x5f0173){var _0x13c854=_[_0xac4a('0x5a')](_0x15b967[_0xac4a('0x6f')]);_0xb12cc5({'count':_0x13c854[_0xac4a('0x56')],'rows':_0x13c854});});},'VoiceQueuesChannel':function(_0x513976){var _0xc61e94=this;return new Promise(function(_0x5a30af,_0xab4305){var _0x3af39a=schema(properties['voicequeuechannel'])['validate'](_0x513976);if(_0x3af39a[_0xac4a('0x56')]>0x0){return _0xab4305(_0xc61e94[_0xac4a('0x11')](0x1f4,_[_0xac4a('0x5c')](_0x3af39a,'message')[_0xac4a('0x15')](',\x20')));}var _0x4d067d=_[_0xac4a('0x57')](_0x15b967['queueChannels'],{'uniqueid':_0x513976['uniqueid']});if(_0x4d067d){_0x5a30af(_0x4d067d);}else{return _0xab4305(_0xc61e94[_0xac4a('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0xb776c4){var _0x5df028=this;return new Promise(function(_0x3cbacc,_0x3a68b6){if(ami['isConnected']()==![]){return _0x3a68b6(_0x5df028[_0xac4a('0x11')](0x1f4,[config['asterisk']['ip'],config[_0xac4a('0x12')][_0xac4a('0x13')],'ami\x20disconnected'][_0xac4a('0x15')]('\x20')));}var _0x4b66b4=schema(properties['voicequeuechannelhangup'])[_0xac4a('0x3')](_0xb776c4);if(_0x4b66b4['length']>0x0){return _0x3a68b6(_0x5df028[_0xac4a('0x11')](0x1f4,_['map'](_0x4b66b4,'message')[_0xac4a('0x15')](',\x20')));}var _0x4065c0=_[_0xac4a('0x57')](_0x15b967['queueChannels'],{'uniqueid':_0xb776c4['uniqueid']});if(_0x4065c0&&_0x4065c0[_0xac4a('0x62')]){return ami[_0xac4a('0x1a')]({'action':'Hangup','channel':_0x4065c0['channel']})[_0xac4a('0x1b')](function(_0x178def){_0x3cbacc({'code':0xc8,'message':[_0xb776c4[_0xac4a('0x5d')],_0x178def[_0xac4a('0x1c')][_0xac4a('0x63')]()][_0xac4a('0x15')]('\x20')});})[_0xac4a('0x1d')](function(_0x13833b){_0x3a68b6(_0x5df028[_0xac4a('0x11')](0x1f5,[_0xb776c4['uniqueid'],_0x13833b[_0xac4a('0x1c')][_0xac4a('0x63')]()][_0xac4a('0x15')]('\x20')));});}else{return _0x3a68b6(_0x5df028['error'](0x1f5,_0xac4a('0x69')));}});},'VoiceQueuesChannelRedirect':function(_0x46211a){var _0x7c9bbe=this;return new Promise(function(_0x391c35,_0x3d2b5c){if(ami['isConnected']()==![]){return _0x3d2b5c(_0x7c9bbe[_0xac4a('0x11')](0x1f4,[config[_0xac4a('0x12')]['ip'],config[_0xac4a('0x12')][_0xac4a('0x13')],_0xac4a('0x14')][_0xac4a('0x15')]('\x20')));}var _0xd7bdd6=schema(properties['voicequeuechannelredirect'])[_0xac4a('0x3')](_0x46211a);if(_0xd7bdd6[_0xac4a('0x56')]>0x0){return _0x3d2b5c(_0x7c9bbe[_0xac4a('0x11')](0x1f4,_[_0xac4a('0x5c')](_0xd7bdd6,_0xac4a('0x1c'))[_0xac4a('0x15')](',\x20')));}var _0x547eec=_[_0xac4a('0x57')](_0x15b967[_0xac4a('0x6f')],{'uniqueid':_0x46211a[_0xac4a('0x5d')]});if(_0x547eec&&_0x547eec[_0xac4a('0x62')]){return ami['Action']({'action':_0xac4a('0x70'),'channel':_0x547eec['channel'],'exten':_0x46211a[_0xac4a('0x71')],'context':_0x46211a[_0xac4a('0x72')]||_0x547eec['context'],'priority':0x1})['then'](function(_0x957f7d){_0x391c35({'code':0xc8,'message':[_0x46211a[_0xac4a('0x5d')],_0x957f7d[_0xac4a('0x1c')]['toLowerCase']()][_0xac4a('0x15')]('\x20')});})['catch'](function(_0x2fd565){_0x3d2b5c(_0x7c9bbe[_0xac4a('0x11')](0x1f5,[_0x46211a[_0xac4a('0x5d')],_0x2fd565[_0xac4a('0x1c')][_0xac4a('0x63')]()]['join']('\x20')));});}else{return _0x3d2b5c(_0x7c9bbe['error'](0x1f5,_0xac4a('0x69')));}});},'Agents':function(_0x23cc6f){return new Promise(function(_0x23d07c,_0x8b5a90){var _0x3afcf6=_[_0xac4a('0x5a')](_0x15b967[_0xac4a('0xd')]);_0x23d07c({'count':_0x3afcf6[_0xac4a('0x56')],'rows':_0x3afcf6});});},'Telephones':function(_0x49ac09){return new Promise(function(_0x52b3e6,_0x446d99){var _0x31cc9a=_[_0xac4a('0x5a')](_0x15b967[_0xac4a('0x73')]);_0x52b3e6({'count':_0x31cc9a[_0xac4a('0x56')],'rows':_0x31cc9a});});},'Trunks':function(_0x2ea4a4){return new Promise(function(_0xdaa2ef,_0x2e704b){var _0x540d8e=_['values'](_0x15b967[_0xac4a('0x74')]);_0xdaa2ef({'count':_0x540d8e[_0xac4a('0x56')],'rows':_0x540d8e});});},'OutboundChannels':function(_0x22804e){return new Promise(function(_0x371e06,_0x3030cf){var _0x13bcae=_[_0xac4a('0x5a')](_0x15b967['outboundChannels']);_0x371e06({'count':_0x13bcae[_0xac4a('0x56')],'rows':_0x13bcae});});},'Outbound':function(_0x1bacf2){return new Promise(function(_0x3439f3,_0x5f323d){_0x3439f3(_0x15b967[_0xac4a('0x2c')]);});},'Campaigns':function(_0x222840){return new Promise(function(_0x390984,_0x7f455b){var _0x1a7448=_[_0xac4a('0x5a')](_0x15b967[_0xac4a('0x75')]);_0x390984({'count':_0x1a7448[_0xac4a('0x56')],'rows':_0x1a7448});});},'VoiceQueuesPreview':function(_0x322465){var _0x5f0adc=this;return new Promise(function(_0x32bd79,_0x50f71c){_0x730a38[_0xac4a('0x76')](_0x322465['id'])[_0xac4a('0x1b')](function(_0x3184b3){_0x32bd79({'code':0xc8,'message':_0x3184b3[_0xac4a('0x1c')]});})[_0xac4a('0x1d')](function(_0x337da7){_0x50f71c(_0x5f0adc[_0xac4a('0x11')](0x1f4,_0x337da7['message']));});});},'EventManager':function(_0x2b883a){var _0x42b3f7=this;return new Promise(function(_0x279f9b,_0x3315e7){if(!_0x2b883a[_0xac4a('0x77')]){return _0x3315e7(_0x42b3f7['error'](0x1f4,_0xac4a('0x78')));}ami[_0xac4a('0x79')]('custom:'+_0x2b883a['event'],_0x2b883a[_0xac4a('0x1c')]);_0x279f9b({'code':0xc8,'message':_0x2b883a});});},'FaxAccounts':function(_0x467dcf){return new Promise(function(_0x59afa0,_0x24d36d){var _0x217d8b=_[_0xac4a('0x5a')](_0x15b967[_0xac4a('0x7a')]);_0x59afa0({'count':_0x217d8b[_0xac4a('0x56')],'rows':_0x217d8b});});},'SendFax':function(_0x34787c){var _0x599775=this;return new Promise(function(_0xbdff4b,_0x1eddc1){_0x215f39[_0xac4a('0x7b')](_0x34787c)['then'](function(_0x2c90c9){_0xbdff4b({'code':0xc8,'message':_0x2c90c9[_0xac4a('0x1c')]});})[_0xac4a('0x1d')](function(_0x17f20f){_0x1eddc1(_0x599775[_0xac4a('0x11')](0x1f4,_0x17f20f[_0xac4a('0x1c')]));});});},'CheckAfterSend':function(_0x5d6ef3){var _0xe84bf7=this;return new Promise(function(_0x4406c3,_0x5ab83b){_0x215f39[_0xac4a('0x7c')](_0x5d6ef3)['then'](function(_0x37bbfa){_0x4406c3({'code':0xc8,'message':_0x37bbfa[_0xac4a('0x1c')]});})['catch'](function(_0x471c44){_0x5ab83b(_0xe84bf7['error'](0x1f4,_0x471c44[_0xac4a('0x1c')]));});});}};var _0x4e6612=jayson[_0xac4a('0x7d')](_0x3ef77c)[_0xac4a('0x7e')]();_0x4e6612['on'](_0xac4a('0x11'),function(_0xfe8977){return _0x15cd34(_0xfe8977);});_0x4e6612[_0xac4a('0x6')](0x232a,_0xac4a('0x7f'),function(){console[_0xac4a('0x80')](_0xac4a('0x81'),0x232a);return _0x96be2b(_0xac4a('0x82')+0x232a);});});};
\ No newline at end of file
+var _0x814b=['127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','bluebird','moment','../properties','../ami','listen','format','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action','catch','command','Command','then','content','message','voiceQueues','hasOwnProperty','strategy','available','loggedIn','sumBillable','sumDuration','sumHoldTime','total','type','abandoned','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','length','find','omit','undefined','channels','voicechannel','map','uniqueid','%s.%s','filename','wav','channel','toLowerCase','isNil','monitors','/var/spool/asterisk/monitor/','YYYY-MM-DD\x20HH:mm:ss','rec','mixmonitorid','status','MixMonitor\x20Success','resolve','destinationchannel','stop','StopMixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','values','queueChannels','Hangup','voicequeuechannelredirect','exten','context','telephones','trunks','campaigns','run','event','Event\x20name\x20mandatory','emit','custom:','faxAccounts','send','checkAfterSend','http'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x814b,0x1a2));var _0xb814=function(_0xee122e,_0x58ef2e){_0xee122e=_0xee122e-0x0;var _0x34f98a=_0x814b[_0xee122e];return _0x34f98a;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var jayson=require(_0xb814('0x2'));var schema=require(_0xb814('0x3'));var BPromise=require(_0xb814('0x4'));var moment=require(_0xb814('0x5'));var config=require('../../../config/environment');var properties=require(_0xb814('0x6'));var ami=require(_0xb814('0x7'));exports[_0xb814('0x8')]=function(_0x4237bc,_0x44931c,_0x322a70){return new BPromise(function(_0x53e507,_0x3b0829){var _0x2e6272={'QueuePause':function(_0x5c8539){return new Promise(function(_0x271af9,_0x2913a6){var _0x186d5a=util[_0xb814('0x9')](_0xb814('0xa'),_0xb814('0xb'),_0x5c8539[_0xb814('0xc')]);if(_0x4237bc[_0xb814('0xd')]&&_0x4237bc[_0xb814('0xd')][_0x186d5a]&&_0x4237bc[_0xb814('0xd')][_0x186d5a][_0xb814('0xe')]){_0x4237bc['timers'][_0x186d5a][_0xb814('0xf')]();}if(_0x4237bc['agents'][_0x186d5a]){_0x4237bc[_0xb814('0x10')][_0x186d5a][_0xb814('0x11')]({'statePause':_0x5c8539[_0xb814('0x12')]?!![]:![]});}_0x271af9({'code':0xc8,'message':_0xb814('0x13')});});},'Reload':function(_0x2ce718){var _0x3bde14=this;return new Promise(function(_0x1438e7,_0x41ed7b){if(ami[_0xb814('0x14')]()==![]){return _0x41ed7b(_0x3bde14[_0xb814('0x15')](0x1f4,[config[_0xb814('0x16')]['ip'],config[_0xb814('0x16')][_0xb814('0x17')],_0xb814('0x18')][_0xb814('0x19')]('\x20')));}_0x2ce718=_[_0xb814('0x1a')](_0x2ce718,_[_0xb814('0x1b')](properties[_0xb814('0x1c')]));_0x2ce718[_0xb814('0x1d')]=_0xb814('0x1e');return ami[_0xb814('0x1f')](_0x2ce718)['then'](function(_0x168a48){_0x1438e7({'code':0xc8,'message':_0x168a48['message']});})[_0xb814('0x20')](function(_0xfac75b){_0x41ed7b(_0x3bde14['error'](0x1f5,_0xfac75b['message']));});});},'Command':function(_0x55d63c){var _0x399b43=this;return new Promise(function(_0x4d5276,_0x57c128){if(ami[_0xb814('0x14')]()==![]){return _0x57c128(_0x399b43[_0xb814('0x15')](0x1f4,[config[_0xb814('0x16')]['ip'],config['asterisk'][_0xb814('0x17')],'ami\x20disconnected'][_0xb814('0x19')]('\x20')));}_0x55d63c=_[_0xb814('0x1a')](_0x55d63c,_0xb814('0x21'));_0x55d63c[_0xb814('0x1d')]=_0xb814('0x22');return ami[_0xb814('0x1f')](_0x55d63c)[_0xb814('0x23')](function(_0x594470){_0x4d5276({'code':0xc8,'message':_0x594470[_0xb814('0x24')]});})['catch'](function(_0x3f81d0){_0x57c128(_0x399b43[_0xb814('0x15')](0x1f5,_0x3f81d0[_0xb814('0x25')]));});});},'VoiceQueues':function(_0x208927){return new Promise(function(_0x1c8a2e,_0xb9e57d){var _0x3d836c=[];for(var _0x5755ea in _0x4237bc[_0xb814('0x26')]){if(_0x4237bc[_0xb814('0x26')][_0xb814('0x27')](_0x5755ea)){var _0x349394=_0x4237bc[_0xb814('0x26')][_0x5755ea];var _0x1d5965={'id':_0x349394['id'],'name':_0x349394[_0xb814('0xc')],'strategy':_0x349394[_0xb814('0x28')],'answered':_0x349394['answered'],'available':_0x349394[_0xb814('0x29')],'loggedIn':_0x349394[_0xb814('0x2a')],'pTalking':_0x349394['pTalking'],'sumBillable':_0x349394[_0xb814('0x2b')],'sumDuration':_0x349394[_0xb814('0x2c')],'sumHoldTime':_0x349394[_0xb814('0x2d')]||0x0,'talking':_0x349394['talking'],'total':_0x349394[_0xb814('0x2e')],'type':_0x349394[_0xb814('0x2f')],'unmanaged':_0x349394['unmanaged'],'abandoned':_0x349394[_0xb814('0x30')],'waiting':_0x349394['waiting'],'loggedInDb':_0x349394[_0xb814('0x31')]};if(_0x349394['type']==='outbound'){_0x1d5965[_0xb814('0x32')]=_0x349394['dialActive'];_0x1d5965[_0xb814('0x33')]=_0x349394[_0xb814('0x33')];_0x1d5965[_0xb814('0x34')]=_0x349394['dialOriginateCallerIdName'];_0x1d5965['dialOriginateCallerIdNumber']=_0x349394[_0xb814('0x35')];_0x1d5965[_0xb814('0x36')]=_0x349394['dialOriginateTimeout'];_0x1d5965[_0xb814('0x37')]=_0x349394[_0xb814('0x37')];_0x1d5965[_0xb814('0x38')]=_0x349394[_0xb814('0x38')];_0x1d5965[_0xb814('0x39')]=_0x349394[_0xb814('0x39')];_0x1d5965[_0xb814('0x3a')]=_0x349394['outboundAnswerCallsDay'];_0x1d5965[_0xb814('0x3b')]=_0x349394[_0xb814('0x3b')];_0x1d5965[_0xb814('0x3c')]=_0x349394[_0xb814('0x3c')];_0x1d5965[_0xb814('0x3d')]=_0x349394['outboundCongestionCallsDay'];_0x1d5965[_0xb814('0x3e')]=_0x349394['outboundDropCallsDayACS'];_0x1d5965[_0xb814('0x3f')]=_0x349394[_0xb814('0x3f')];_0x1d5965[_0xb814('0x40')]=_0x349394['outboundDropCallsDayTimeout'];_0x1d5965[_0xb814('0x41')]=_0x349394[_0xb814('0x41')];_0x1d5965['outboundNoSuchCallsDay']=_0x349394[_0xb814('0x42')];_0x1d5965[_0xb814('0x43')]=_0x349394[_0xb814('0x43')];_0x1d5965[_0xb814('0x44')]=_0x349394[_0xb814('0x44')];_0x1d5965[_0xb814('0x45')]=_0x349394['outboundRejectCallsDay'];_0x1d5965[_0xb814('0x46')]=_0x349394['outboundUnknownCallsDay'];_0x1d5965[_0xb814('0x47')]=_0x349394['predictiveIntervalAnsweredCalls'];_0x1d5965[_0xb814('0x48')]=_0x349394['predictiveIntervalAvgHoldtime'];_0x1d5965[_0xb814('0x49')]=_0x349394[_0xb814('0x49')];_0x1d5965['predictiveIntervalDroppedCallsCallersExit']=_0x349394['predictiveIntervalDroppedCallsCallersExit'];_0x1d5965['predictiveIntervalDroppedCallsTimeout']=_0x349394['predictiveIntervalDroppedCallsTimeout'];_0x1d5965[_0xb814('0x4a')]=_0x349394[_0xb814('0x4a')];_0x1d5965[_0xb814('0x4b')]=_0x349394[_0xb814('0x4b')];_0x1d5965['predictiveIntervalHitRate']=_0x349394['predictiveIntervalHitRate'];_0x1d5965[_0xb814('0x4c')]=_0x349394['predictiveIntervalMultiplicativeFactor'];_0x1d5965[_0xb814('0x4d')]=_0x349394[_0xb814('0x4d')];_0x1d5965[_0xb814('0x4e')]=_0x349394[_0xb814('0x4e')];_0x1d5965[_0xb814('0x4f')]=_0x349394[_0xb814('0x4f')];_0x1d5965[_0xb814('0x25')]=_0x349394[_0xb814('0x25')];_0x1d5965[_0xb814('0x50')]=_0x349394['originated'];_0x1d5965['erlangCalls']=_0x349394['erlangCalls'];_0x1d5965[_0xb814('0x51')]=_0x349394['erlangCallToSecond'];_0x1d5965[_0xb814('0x52')]=_0x349394['erlangAbandonmentRate'];_0x1d5965[_0xb814('0x53')]=_0x349394[_0xb814('0x53')];_0x1d5965[_0xb814('0x54')]=_0x349394[_0xb814('0x54')];_0x1d5965['startProgressive']=_0x349394[_0xb814('0x55')];}if(_0x349394[_0xb814('0x56')]){_0x1d5965[_0xb814('0x56')]={'id':_0x349394[_0xb814('0x56')]['id'],'name':_0x349394[_0xb814('0x56')][_0xb814('0xc')],'active':_0x349394['Trunk'][_0xb814('0x57')],'callerid':_0x349394[_0xb814('0x56')][_0xb814('0x58')]};}if(_0x349394[_0xb814('0x59')]){_0x1d5965[_0xb814('0x59')]={'id':_0x349394[_0xb814('0x59')]['id'],'name':_0x349394[_0xb814('0x59')]['name']};}_0x3d836c['push'](_0x1d5965);}}_0x1c8a2e({'count':_0x3d836c[_0xb814('0x5a')],'rows':_0x3d836c});});},'UpdateVoiceQueue':function(_0x29c7ac){return new Promise(function(_0x4c08d6,_0x2bf906){var _0x43f1b=_[_0xb814('0x5b')](_0x4237bc[_0xb814('0x26')],{'id':parseInt(_0x29c7ac['id'])});var _0x40af85=_[_0xb814('0x5c')](_0x29c7ac,['id']);if(_0x43f1b){for(var _0x344198 in _0x40af85){if(typeof _0x40af85[_0x344198]!==_0xb814('0x5d')&&typeof _0x43f1b[_0x344198]!=='undefined'){_0x43f1b[_0x344198]=_0x40af85[_0x344198];}}_0x4c08d6(_0x43f1b);}else{_0x2bf906();}});},'VoiceChannels':function(_0x37800a){return new Promise(function(_0x17510c,_0x4a76bb){var _0x338e80=_['values'](_0x4237bc[_0xb814('0x5e')]);_0x17510c({'count':_0x338e80[_0xb814('0x5a')],'rows':_0x338e80});});},'VoiceChannelMixMonitor':function(_0xc71270){var _0x22b2ef=this;return new Promise(function(_0x1d3833,_0x4096d4){if(ami[_0xb814('0x14')]()==![]){return _0x4096d4(_0x22b2ef[_0xb814('0x15')](0x1f4,[config[_0xb814('0x16')]['ip'],config[_0xb814('0x16')]['username'],'ami\x20disconnected'][_0xb814('0x19')]('\x20')));}var _0x30f07b=schema(properties[_0xb814('0x5f')])[_0xb814('0x3')](_0xc71270);if(_0x30f07b[_0xb814('0x5a')]>0x0){return _0x4096d4(_0x22b2ef[_0xb814('0x15')](0x1f4,_[_0xb814('0x60')](_0x30f07b,'message')[_0xb814('0x19')](',\x20')));}var _0x388324=_[_0xb814('0x5b')](_0x4237bc['channels'],{'uniqueid':_0xc71270[_0xb814('0x61')]});if(_0x388324&&_0x388324['channel']){var _0x252293=util['format'](_0xb814('0x62'),_0xc71270[_0xb814('0x63')]||_0xc71270['uniqueid'],_0xc71270[_0xb814('0x9')]||_0xb814('0x64'));return ami[_0xb814('0x1f')]({'action':'MixMonitor','channel':_0x388324[_0xb814('0x65')],'file':_0x252293,'options':'ai(mixmonitorid)'})[_0xb814('0x23')](function(_0x158893){var _0x4aed78=_[_0xb814('0x5b')](_0x388324['monitors'],{'filename':'/var/spool/asterisk/monitor/'+_0x252293[_0xb814('0x66')]()});if(_[_0xb814('0x67')](_0x4aed78)){_0x388324[_0xb814('0x68')]['push']({'filename':_0xb814('0x69')+_0x252293['toLowerCase'](),'createdAt':moment()[_0xb814('0x9')](_0xb814('0x6a')),'mixmonitorid':_0x158893['mixmonitorid'],'status':_0xb814('0x6b')});}else{_0x4aed78['mixmonitorid']=_0x158893[_0xb814('0x6c')];_0x4aed78[_0xb814('0x6d')]=_0xb814('0x6b');}_0x1d3833({'code':0xc8,'message':[_0xc71270[_0xb814('0x61')],_0xb814('0x6e'),_0x158893[_0xb814('0x6c')]][_0xb814('0x19')]('\x20'),'mixmonitorid':_0x158893[_0xb814('0x6c')]});})['catch'](function(_0x374532){_0x4096d4(_0x22b2ef[_0xb814('0x15')](0x1f5,[_0xc71270['uniqueid'],_0x374532[_0xb814('0x25')][_0xb814('0x66')]()]['join']('\x20')));});}else{return _0x4096d4(_0x22b2ef[_0xb814('0x15')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceChannelStopMixMonitor':function(_0x48362c){var _0x2114ca=this;return new Promise(function(_0x5257be,_0x3ff213){if(ami[_0xb814('0x14')]()==![]){return _0x3ff213(_0x2114ca[_0xb814('0x15')](0x1f4,[config['asterisk']['ip'],config[_0xb814('0x16')]['username'],_0xb814('0x18')][_0xb814('0x19')]('\x20')));}var _0x1236d4=schema(properties[_0xb814('0x5f')])[_0xb814('0x3')](_0x48362c);if(_0x1236d4[_0xb814('0x5a')]>0x0){return _0x3ff213(_0x2114ca[_0xb814('0x15')](0x1f4,_[_0xb814('0x60')](_0x1236d4,_0xb814('0x25'))['join'](',\x20')));}var _0x211194=_[_0xb814('0x5b')](_0x4237bc[_0xb814('0x5e')],{'uniqueid':_0x48362c[_0xb814('0x61')]});if(_0x211194){return BPromise[_0xb814('0x6f')]()[_0xb814('0x23')](function(){if(_0x211194['channel']){return ami[_0xb814('0x1f')]({'action':'StopMixMonitor','channel':_0x211194[_0xb814('0x65')],'mixmonitorid':_0x48362c[_0xb814('0x6c')]})[_0xb814('0x20')](function(_0x4c884c){});}})[_0xb814('0x23')](function(){if(_0x211194['destinationchannel']){return ami[_0xb814('0x1f')]({'action':'StopMixMonitor','channel':_0x211194[_0xb814('0x70')],'mixmonitorid':_0x48362c[_0xb814('0x6c')]})[_0xb814('0x20')](function(_0x1b024f){});}})[_0xb814('0x23')](function(_0x167d82){var _0x143518=_['find'](_0x211194[_0xb814('0x68')],{'mixmonitorid':_0x48362c['mixmonitorid']});if(_0x143518){_0x143518[_0xb814('0x6d')]=_0xb814('0x71');}})[_0xb814('0x23')](function(){var _0x3dcaeb=util[_0xb814('0x9')](_0xb814('0x62'),_0x48362c['filename']||_0x48362c[_0xb814('0x61')],_0x48362c[_0xb814('0x9')]||'wav');var _0x3bb2b4=_[_0xb814('0x5b')](_0x211194[_0xb814('0x68')],{'filename':_0xb814('0x69')+_0x3dcaeb[_0xb814('0x66')]()});if(_0x3bb2b4){_0x3bb2b4['status']=_0xb814('0x71');}})['then'](function(){_0x5257be({'code':0xc8,'message':[_0x48362c[_0xb814('0x61')],_0xb814('0x72')][_0xb814('0x19')]('\x20')});})[_0xb814('0x20')](function(_0x2e39b1){_0x3ff213(_0x2114ca[_0xb814('0x15')](0x1f5,[_0x48362c['uniqueid'],_0x2e39b1['message']['toLowerCase']()][_0xb814('0x19')]('\x20')));});}else{return _0x3ff213(_0x2114ca['error'](0x1f5,_0xb814('0x73')));}});},'VoiceQueuesChannels':function(_0x1d3954){return new Promise(function(_0x25db89,_0x5e966c){var _0x1b76fa=_[_0xb814('0x74')](_0x4237bc[_0xb814('0x75')]);_0x25db89({'count':_0x1b76fa['length'],'rows':_0x1b76fa});});},'VoiceQueuesChannel':function(_0x30f717){var _0x1bf0b7=this;return new Promise(function(_0x1f39c0,_0x3564e0){var _0x555be0=schema(properties['voicequeuechannel'])[_0xb814('0x3')](_0x30f717);if(_0x555be0[_0xb814('0x5a')]>0x0){return _0x3564e0(_0x1bf0b7[_0xb814('0x15')](0x1f4,_[_0xb814('0x60')](_0x555be0,_0xb814('0x25'))[_0xb814('0x19')](',\x20')));}var _0x34a0b3=_[_0xb814('0x5b')](_0x4237bc[_0xb814('0x75')],{'uniqueid':_0x30f717[_0xb814('0x61')]});if(_0x34a0b3){_0x1f39c0(_0x34a0b3);}else{return _0x3564e0(_0x1bf0b7[_0xb814('0x15')](0x1f5,_0xb814('0x73')));}});},'VoiceQueuesChannelHangup':function(_0x3ef474){var _0x21fc41=this;return new Promise(function(_0xc94e99,_0x55a9c4){if(ami[_0xb814('0x14')]()==![]){return _0x55a9c4(_0x21fc41[_0xb814('0x15')](0x1f4,[config[_0xb814('0x16')]['ip'],config[_0xb814('0x16')][_0xb814('0x17')],_0xb814('0x18')]['join']('\x20')));}var _0xff4dc2=schema(properties['voicequeuechannelhangup'])[_0xb814('0x3')](_0x3ef474);if(_0xff4dc2[_0xb814('0x5a')]>0x0){return _0x55a9c4(_0x21fc41[_0xb814('0x15')](0x1f4,_[_0xb814('0x60')](_0xff4dc2,_0xb814('0x25'))['join'](',\x20')));}var _0x4c44ee=_[_0xb814('0x5b')](_0x4237bc[_0xb814('0x75')],{'uniqueid':_0x3ef474[_0xb814('0x61')]});if(_0x4c44ee&&_0x4c44ee[_0xb814('0x65')]){return ami['Action']({'action':_0xb814('0x76'),'channel':_0x4c44ee['channel']})[_0xb814('0x23')](function(_0x227cbd){_0xc94e99({'code':0xc8,'message':[_0x3ef474['uniqueid'],_0x227cbd['message'][_0xb814('0x66')]()]['join']('\x20')});})[_0xb814('0x20')](function(_0x163c2b){_0x55a9c4(_0x21fc41[_0xb814('0x15')](0x1f5,[_0x3ef474[_0xb814('0x61')],_0x163c2b[_0xb814('0x25')][_0xb814('0x66')]()][_0xb814('0x19')]('\x20')));});}else{return _0x55a9c4(_0x21fc41['error'](0x1f5,_0xb814('0x73')));}});},'VoiceQueuesChannelRedirect':function(_0x54413d){var _0x212456=this;return new Promise(function(_0x590145,_0x2838cb){if(ami[_0xb814('0x14')]()==![]){return _0x2838cb(_0x212456['error'](0x1f4,[config[_0xb814('0x16')]['ip'],config['asterisk'][_0xb814('0x17')],_0xb814('0x18')]['join']('\x20')));}var _0x5a0c4a=schema(properties[_0xb814('0x77')])[_0xb814('0x3')](_0x54413d);if(_0x5a0c4a[_0xb814('0x5a')]>0x0){return _0x2838cb(_0x212456[_0xb814('0x15')](0x1f4,_[_0xb814('0x60')](_0x5a0c4a,_0xb814('0x25'))[_0xb814('0x19')](',\x20')));}var _0x314600=_[_0xb814('0x5b')](_0x4237bc[_0xb814('0x75')],{'uniqueid':_0x54413d['uniqueid']});if(_0x314600&&_0x314600['channel']){return ami['Action']({'action':'Redirect','channel':_0x314600['channel'],'exten':_0x54413d[_0xb814('0x78')],'context':_0x54413d[_0xb814('0x79')]||_0x314600[_0xb814('0x79')],'priority':0x1})['then'](function(_0x121330){_0x590145({'code':0xc8,'message':[_0x54413d[_0xb814('0x61')],_0x121330[_0xb814('0x25')][_0xb814('0x66')]()][_0xb814('0x19')]('\x20')});})[_0xb814('0x20')](function(_0x3367b8){_0x2838cb(_0x212456[_0xb814('0x15')](0x1f5,[_0x54413d['uniqueid'],_0x3367b8[_0xb814('0x25')][_0xb814('0x66')]()][_0xb814('0x19')]('\x20')));});}else{return _0x2838cb(_0x212456[_0xb814('0x15')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x29c1a4){return new Promise(function(_0x280af5,_0x3f4b23){var _0x3037f2=_[_0xb814('0x74')](_0x4237bc['agents']);_0x280af5({'count':_0x3037f2['length'],'rows':_0x3037f2});});},'Telephones':function(_0x252f9c){return new Promise(function(_0x57b3f2,_0x15bf14){var _0x3882f8=_['values'](_0x4237bc[_0xb814('0x7a')]);_0x57b3f2({'count':_0x3882f8['length'],'rows':_0x3882f8});});},'Trunks':function(_0xe17e86){return new Promise(function(_0x520d0f,_0x44e668){var _0x1aff2b=_[_0xb814('0x74')](_0x4237bc[_0xb814('0x7b')]);_0x520d0f({'count':_0x1aff2b[_0xb814('0x5a')],'rows':_0x1aff2b});});},'OutboundChannels':function(_0x1ae812){return new Promise(function(_0x455b22,_0x4e3115){var _0x5a4e2e=_[_0xb814('0x74')](_0x4237bc['outboundChannels']);_0x455b22({'count':_0x5a4e2e['length'],'rows':_0x5a4e2e});});},'Outbound':function(_0x2d0061){return new Promise(function(_0x8fbda1,_0x25d42d){_0x8fbda1(_0x4237bc['outbound']);});},'Campaigns':function(_0x2a7cde){return new Promise(function(_0x5a25f2,_0xd5d224){var _0x19d508=_[_0xb814('0x74')](_0x4237bc[_0xb814('0x7c')]);_0x5a25f2({'count':_0x19d508['length'],'rows':_0x19d508});});},'VoiceQueuesPreview':function(_0x1454b3){var _0xc0ff3c=this;return new Promise(function(_0x23ce94,_0x506462){_0x44931c[_0xb814('0x7d')](_0x1454b3['id'])[_0xb814('0x23')](function(_0x183b59){_0x23ce94({'code':0xc8,'message':_0x183b59['message']});})[_0xb814('0x20')](function(_0x2d0651){_0x506462(_0xc0ff3c[_0xb814('0x15')](0x1f4,_0x2d0651[_0xb814('0x25')]));});});},'EventManager':function(_0x40b3c5){var _0x1ae8e8=this;return new Promise(function(_0x37a7ab,_0x472c38){if(!_0x40b3c5[_0xb814('0x7e')]){return _0x472c38(_0x1ae8e8[_0xb814('0x15')](0x1f4,_0xb814('0x7f')));}ami[_0xb814('0x80')](_0xb814('0x81')+_0x40b3c5['event'],_0x40b3c5['message']);_0x37a7ab({'code':0xc8,'message':_0x40b3c5});});},'FaxAccounts':function(_0x2308fc){return new Promise(function(_0x50697f,_0x320296){var _0x3949fd=_[_0xb814('0x74')](_0x4237bc[_0xb814('0x82')]);_0x50697f({'count':_0x3949fd[_0xb814('0x5a')],'rows':_0x3949fd});});},'SendFax':function(_0x2f1674){var _0xf0610f=this;return new Promise(function(_0x5db5d0,_0x4a460a){_0x322a70[_0xb814('0x83')](_0x2f1674)['then'](function(_0x18678f){_0x5db5d0({'code':0xc8,'message':_0x18678f[_0xb814('0x25')]});})[_0xb814('0x20')](function(_0x495431){_0x4a460a(_0xf0610f[_0xb814('0x15')](0x1f4,_0x495431[_0xb814('0x25')]));});});},'CheckAfterSend':function(_0x35c60f){var _0x38c6da=this;return new Promise(function(_0x3860b8,_0x491eb1){_0x322a70[_0xb814('0x84')](_0x35c60f)[_0xb814('0x23')](function(_0x4ac8c5){_0x3860b8({'code':0xc8,'message':_0x4ac8c5[_0xb814('0x25')]});})[_0xb814('0x20')](function(_0x3e3f69){_0x491eb1(_0x38c6da['error'](0x1f4,_0x3e3f69[_0xb814('0x25')]));});});}};var _0x46ea9d=jayson['server'](_0x2e6272)[_0xb814('0x85')]();_0x46ea9d['on'](_0xb814('0x15'),function(_0x5b5634){return _0x3b0829(_0x5b5634);});_0x46ea9d[_0xb814('0x8')](0x232a,_0xb814('0x86'),function(){console[_0xb814('0x87')](_0xb814('0x88'),0x232a);return _0x53e507(_0xb814('0x89')+0x232a);});});};
\ No newline at end of file
index 3006924..bec02bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dae=['$or','map','routeId','destcalleridnum','calleridnum','firstName','phone','mobile','createdAt','updatedAt','union','resolve','then','getContacts','length','[CM][%s][%s]\x20Contact\x20found:%s','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','calleridname','<unknown>','destcalleridname','Unknown','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','format','name','trigger:%s','action','toLowerCase','merge','lodash','bluebird','../../../../config/logger','trigger','../../rpc/cmContact','defaults','redis','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','xmd-contactid','ListId','data3','split'];(function(_0x25f83a,_0x5bcfe6){var _0x13c950=function(_0x5e23ea){while(--_0x5e23ea){_0x25f83a['push'](_0x25f83a['shift']());}};_0x13c950(++_0x5bcfe6);}(_0x3dae,0x1d4));var _0xe3da=function(_0x1ceec5,_0x458cfd){_0x1ceec5=_0x1ceec5-0x0;var _0x1b7078=_0x3dae[_0x1ceec5];return _0x1b7078;};'use strict';var _=require(_0xe3da('0x0'));var BPromise=require(_0xe3da('0x1'));var Redis=require('ioredis');var util=require('util');var config=require('../../../../config/environment');var logger=require(_0xe3da('0x2'))(_0xe3da('0x3'));var cmContactRpc=require(_0xe3da('0x4'));config['redis']=_[_0xe3da('0x5')](config[_0xe3da('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe3da('0x6')]));function emit(_0x2d6b42,_0x5c1736,_0x3d6f49,_0x108732,_0x1adf3c){logger[_0xe3da('0x7')](_0xe3da('0x8'),_0x2d6b42,_0x5c1736['id'],_0x3d6f49,_0x108732,JSON[_0xe3da('0x9')](_0x1adf3c));io['to'](_0x3d6f49)[_0xe3da('0xa')](_0x108732,_0x1adf3c);}exports[_0xe3da('0xb')]=function(_0x4952b1,_0x20655c,_0x5afb04,_0x380ffb){var _0x22d7ce,_0x278664;var _0x4190e7={};var _0x54ca46=Number(_0x5afb04[_0xe3da('0xc')]);var _0xf1f5dd=_0x5afb04[_0xe3da('0xd')]?Boolean(Number(_0x5afb04[_0xe3da('0xd')])):![];var _0x24ee0e;if(_0x380ffb[_0xe3da('0xe')]){_0x4190e7['id']=_0x380ffb[_0xe3da('0xe')];}if(!_0x4190e7['id']){_0x4190e7[_0xe3da('0xf')]=_0x54ca46;_0x24ee0e=_0x5afb04[_0xe3da('0x10')]&&_0x5afb04['data3']!=='0'?_0x5afb04[_0xe3da('0x10')][_0xe3da('0x11')](','):['phone'];_0x4190e7[_0xe3da('0x12')]=_[_0xe3da('0x13')](_0x24ee0e,function(_0x5c056c){var _0x287155={};_0x287155[_0x5c056c]=_0x380ffb[_0xe3da('0x14')]?_0x380ffb[_0xe3da('0x15')]:_0x380ffb[_0xe3da('0x16')];return _0x287155;});}var _0x19e724=['id',_0xe3da('0x17'),'lastName',_0xe3da('0x18'),_0xe3da('0x19'),'fax',_0xe3da('0xf'),_0xe3da('0x1a'),'scheduledAt',_0xe3da('0x1b')];var _0x3c617f=_[_0xe3da('0x1c')](_0x19e724,_0x24ee0e);BPromise[_0xe3da('0x1d')]()[_0xe3da('0x1e')](cmContactRpc[_0xe3da('0x1f')]({'attributes':_0x3c617f,'where':_0x4190e7}))[_0xe3da('0x1e')](function(_0x4f7eed){_0x278664=_0x4f7eed;if(!_['isEmpty'](_0x278664)){if(_0x278664[_0xe3da('0x20')]===0x1){_0x22d7ce=_0x278664[0x0];logger['info'](_0xe3da('0x21'),_0x380ffb['uniqueid'],_0x20655c['id'],_0x22d7ce['id']);}else{logger['info'](_0xe3da('0x22'),_0x380ffb[_0xe3da('0x23')],_0x20655c['id'],_['map'](_0x278664,'id')[_0xe3da('0x24')](','));}return;}else{logger['info'](_0xe3da('0x25'),_0x380ffb[_0xe3da('0x23')],_0x20655c['id']);var _0x5235f7={'ListId':_0x54ca46};var _0x3d9dac=_0x5afb04[_0xe3da('0x26')]&&_0x5afb04['data4']!=='0'?_0x5afb04['data4']:_0xe3da('0x18');if(_0xf1f5dd){logger[_0xe3da('0x7')](_0xe3da('0x27'),_0x380ffb[_0xe3da('0x23')],_0x20655c['id']);_0x5235f7[_0x3d9dac]=_[_0xe3da('0x28')](_0x380ffb['routeId'])?_0x380ffb['calleridnum']:_0x380ffb['destcalleridnum'];if(_[_0xe3da('0x28')](_0x380ffb[_0xe3da('0x14')])){_0x5235f7[_0xe3da('0x17')]=_0x380ffb[_0xe3da('0x29')]&&_0x380ffb[_0xe3da('0x29')]!==_0xe3da('0x2a')?_0x380ffb[_0xe3da('0x29')]:'Unknown';}else{_0x5235f7[_0xe3da('0x17')]=_0x380ffb[_0xe3da('0x2b')]&&_0x380ffb[_0xe3da('0x2b')]!==_0xe3da('0x2a')?_0x380ffb['destcalleridname']:_0xe3da('0x2c');}return BPromise[_0xe3da('0x1d')]()['then'](cmContactRpc[_0xe3da('0x2d')](_0x5235f7))[_0xe3da('0x1e')](function(_0x4b1f05){_0x22d7ce=_0x4b1f05;_0x278664[_0xe3da('0x2e')](_0x4b1f05);if(_0x22d7ce){logger[_0xe3da('0x7')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x380ffb[_0xe3da('0x23')],_0x20655c['id'],_0x22d7ce['id']);}return;});}else{logger['info'](_0xe3da('0x2f'),_0x380ffb[_0xe3da('0x23')],_0x20655c['id']);_0x5235f7[_0x3d9dac]=_[_0xe3da('0x28')](_0x380ffb[_0xe3da('0x14')])?_0x380ffb['calleridnum']:_0x380ffb['destcalleridnum'];if(_[_0xe3da('0x28')](_0x380ffb[_0xe3da('0x14')])){_0x5235f7[_0xe3da('0x17')]=_0x380ffb[_0xe3da('0x29')]&&_0x380ffb['calleridname']!==_0xe3da('0x2a')?_0x380ffb[_0xe3da('0x29')]:'Unknown';}else{_0x5235f7[_0xe3da('0x17')]=_0x380ffb[_0xe3da('0x2b')]&&_0x380ffb[_0xe3da('0x2b')]!==_0xe3da('0x2a')?_0x380ffb[_0xe3da('0x2b')]:'Unknown';}_0x22d7ce=_0x5235f7;_0x278664[_0xe3da('0x2e')](_0x5235f7);return;}}})['then'](function(){if(_0x4952b1){emit(_0x380ffb['uniqueid'],_0x20655c,util[_0xe3da('0x30')]('user:%s',_0x4952b1[_0xe3da('0x31')]),util[_0xe3da('0x30')](_0xe3da('0x32'),_0x5afb04[_0xe3da('0x33')][_0xe3da('0x34')]()),{'evt':_[_0xe3da('0x35')](_0x380ffb,{'autoCreate':_0xf1f5dd}),'contact':_0x22d7ce===undefined?{}:_0x22d7ce,'contacts':_0x278664[_0xe3da('0x20')]===0x0?undefined:_0x278664});}});};
\ No newline at end of file
+var _0x145e=['[CM][%s][%s]\x20Contact\x20found:%s','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','uniqueid','isNil','destcalleridnum','firstName','calleridname','destcalleridname','<unknown>','Unknown','resolve','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','name','trigger:%s','action','merge','lodash','bluebird','../../../../config/environment','trigger','../../rpc/cmContact','redis','defaults','localhost','info','stringify','emit','exec','data1','xmd-contactid','ListId','data3','split','$or','map','routeId','calleridnum','lastName','phone','mobile','fax','scheduledAt','updatedAt','union','then','getContacts','isEmpty','length'];(function(_0x40afbd,_0x4c6634){var _0x56c124=function(_0x2a5282){while(--_0x2a5282){_0x40afbd['push'](_0x40afbd['shift']());}};_0x56c124(++_0x4c6634);}(_0x145e,0x1a0));var _0xe145=function(_0x272ea6,_0x3f0673){_0x272ea6=_0x272ea6-0x0;var _0x43ef03=_0x145e[_0x272ea6];return _0x43ef03;};'use strict';var _=require(_0xe145('0x0'));var BPromise=require(_0xe145('0x1'));var Redis=require('ioredis');var util=require('util');var config=require(_0xe145('0x2'));var logger=require('../../../../config/logger')(_0xe145('0x3'));var cmContactRpc=require(_0xe145('0x4'));config[_0xe145('0x5')]=_[_0xe145('0x6')](config[_0xe145('0x5')],{'host':_0xe145('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x455dd6,_0x459404,_0x1b7026,_0xc10371,_0x18e425){logger[_0xe145('0x8')]('[CM][%s][%s]',_0x455dd6,_0x459404['id'],_0x1b7026,_0xc10371,JSON[_0xe145('0x9')](_0x18e425));io['to'](_0x1b7026)[_0xe145('0xa')](_0xc10371,_0x18e425);}exports[_0xe145('0xb')]=function(_0x303bf6,_0x337703,_0x55cfab,_0x2853af){var _0x598257,_0x114838;var _0x34ee90={};var _0x5cbbf8=Number(_0x55cfab[_0xe145('0xc')]);var _0x172072=_0x55cfab['data2']?Boolean(Number(_0x55cfab['data2'])):![];var _0x2c0c40;if(_0x2853af[_0xe145('0xd')]){_0x34ee90['id']=_0x2853af[_0xe145('0xd')];}if(!_0x34ee90['id']){_0x34ee90[_0xe145('0xe')]=_0x5cbbf8;_0x2c0c40=_0x55cfab['data3']&&_0x55cfab['data3']!=='0'?_0x55cfab[_0xe145('0xf')][_0xe145('0x10')](','):['phone'];_0x34ee90[_0xe145('0x11')]=_[_0xe145('0x12')](_0x2c0c40,function(_0x5f34e6){var _0x100c08={};_0x100c08[_0x5f34e6]=_0x2853af[_0xe145('0x13')]?_0x2853af['destcalleridnum']:_0x2853af[_0xe145('0x14')];return _0x100c08;});}var _0x37edd2=['id','firstName',_0xe145('0x15'),_0xe145('0x16'),_0xe145('0x17'),_0xe145('0x18'),_0xe145('0xe'),'createdAt',_0xe145('0x19'),_0xe145('0x1a')];var _0xedd9ce=_[_0xe145('0x1b')](_0x37edd2,_0x2c0c40);BPromise['resolve']()[_0xe145('0x1c')](cmContactRpc[_0xe145('0x1d')]({'attributes':_0xedd9ce,'where':_0x34ee90}))[_0xe145('0x1c')](function(_0x3a0074){_0x114838=_0x3a0074;if(!_[_0xe145('0x1e')](_0x114838)){if(_0x114838[_0xe145('0x1f')]===0x1){_0x598257=_0x114838[0x0];logger['info'](_0xe145('0x20'),_0x2853af['uniqueid'],_0x337703['id'],_0x598257['id']);}else{logger[_0xe145('0x8')](_0xe145('0x21'),_0x2853af['uniqueid'],_0x337703['id'],_[_0xe145('0x12')](_0x114838,'id')['join'](','));}return;}else{logger[_0xe145('0x8')](_0xe145('0x22'),_0x2853af['uniqueid'],_0x337703['id']);var _0x51acac={'ListId':_0x5cbbf8};var _0xf3a41=_0x55cfab[_0xe145('0x23')]&&_0x55cfab[_0xe145('0x23')]!=='0'?_0x55cfab[_0xe145('0x23')]:'phone';if(_0x172072){logger['info'](_0xe145('0x24'),_0x2853af[_0xe145('0x25')],_0x337703['id']);_0x51acac[_0xf3a41]=_[_0xe145('0x26')](_0x2853af[_0xe145('0x13')])?_0x2853af[_0xe145('0x14')]:_0x2853af[_0xe145('0x27')];if(_['isNil'](_0x2853af[_0xe145('0x13')])){_0x51acac[_0xe145('0x28')]=_0x2853af[_0xe145('0x29')]&&_0x2853af['calleridname']!=='<unknown>'?_0x2853af[_0xe145('0x29')]:'Unknown';}else{_0x51acac[_0xe145('0x28')]=_0x2853af[_0xe145('0x2a')]&&_0x2853af['destcalleridname']!==_0xe145('0x2b')?_0x2853af[_0xe145('0x2a')]:_0xe145('0x2c');}return BPromise[_0xe145('0x2d')]()[_0xe145('0x1c')](cmContactRpc[_0xe145('0x2e')](_0x51acac))[_0xe145('0x1c')](function(_0x5cb00e){_0x598257=_0x5cb00e;_0x114838[_0xe145('0x2f')](_0x5cb00e);if(_0x598257){logger['info'](_0xe145('0x30'),_0x2853af[_0xe145('0x25')],_0x337703['id'],_0x598257['id']);}return;});}else{logger[_0xe145('0x8')](_0xe145('0x31'),_0x2853af[_0xe145('0x25')],_0x337703['id']);_0x51acac[_0xf3a41]=_[_0xe145('0x26')](_0x2853af[_0xe145('0x13')])?_0x2853af['calleridnum']:_0x2853af[_0xe145('0x27')];if(_[_0xe145('0x26')](_0x2853af['routeId'])){_0x51acac[_0xe145('0x28')]=_0x2853af[_0xe145('0x29')]&&_0x2853af[_0xe145('0x29')]!==_0xe145('0x2b')?_0x2853af['calleridname']:'Unknown';}else{_0x51acac[_0xe145('0x28')]=_0x2853af[_0xe145('0x2a')]&&_0x2853af[_0xe145('0x2a')]!==_0xe145('0x2b')?_0x2853af[_0xe145('0x2a')]:_0xe145('0x2c');}_0x598257=_0x51acac;_0x114838[_0xe145('0x2f')](_0x51acac);return;}}})[_0xe145('0x1c')](function(){if(_0x303bf6){emit(_0x2853af[_0xe145('0x25')],_0x337703,util[_0xe145('0x32')](_0xe145('0x33'),_0x303bf6[_0xe145('0x34')]),util[_0xe145('0x32')](_0xe145('0x35'),_0x55cfab[_0xe145('0x36')]['toLowerCase']()),{'evt':_[_0xe145('0x37')](_0x2853af,{'autoCreate':_0x172072}),'contact':_0x598257===undefined?{}:_0x598257,'contacts':_0x114838[_0xe145('0x1f')]===0x0?undefined:_0x114838});}});};
\ No newline at end of file
index 59335aa..8fcdd8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e9b=['custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','prototype','stringify','motionChannel','undefined','voice','checkTriggers','interface','status','merge','variables','Actions','length','contactmanager','motionbar','browser','data1','TemplateId','data2','html','render','template\x20not\x20found','uri','buildUri','isNil','data3','location','windowWidth','data5','800','windowHeight','data6','winapp','winArguments','emit','format','user:%s','trigger:%s:%s','toLowerCase','jscripty','name','trigger:%s','action','exec','integration','accounts','queue','routeId','urlforward','script','parse','search','replace','checkTrigger','channel','AllConditions','checkConditions','AnyConditions','some','account','chat','value','ChatWebsiteId','upperFirst','operator','event','membername','lastevent','exports','util','lodash','url','mustache','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','defaults','redis','localhost','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer'];(function(_0x45932a,_0x184d29){var _0x1a7875=function(_0x289d97){while(--_0x289d97){_0x45932a['push'](_0x45932a['shift']());}};_0x1a7875(++_0x184d29);}(_0x9e9b,0x1ba));var _0xb9e9=function(_0x1282a0,_0x58b2f9){_0x1282a0=_0x1282a0-0x0;var _0x18af0c=_0x9e9b[_0x1282a0];return _0x18af0c;};'use strict';var util=require(_0xb9e9('0x0'));var _=require(_0xb9e9('0x1'));var url=require(_0xb9e9('0x2'));var Mustache=require(_0xb9e9('0x3'));var Redis=require(_0xb9e9('0x4'));var urlforward=require(_0xb9e9('0x5'));var integration=require(_0xb9e9('0x6'));var cmContact=require(_0xb9e9('0x7'));var script=require(_0xb9e9('0x8'));var config=require(_0xb9e9('0x9'));var logger=require(_0xb9e9('0xa'))('trigger');var ami=require('../ami');config['redis']=_[_0xb9e9('0xb')](config[_0xb9e9('0xc')],{'host':_0xb9e9('0xd'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb9e9('0xc')]));var operators={'equals':function(_0x50496e,_0x863edf){return _0x50496e==_0x863edf;},'not_equals':function(_0x12f2ad,_0x5d0f23){return _0x12f2ad!=_0x5d0f23;}};var barAndWebActions=[_0xb9e9('0xe'),_0xb9e9('0x2'),'winapp'];function Trigger(_0x2c433f){this[_0xb9e9('0xf')]=_0x2c433f[_0xb9e9('0xf')];this[_0xb9e9('0x10')]=_0x2c433f['agents'];this[_0xb9e9('0x11')]=_0x2c433f[_0xb9e9('0x11')];this[_0xb9e9('0x12')]=_0x2c433f[_0xb9e9('0x12')];this[_0xb9e9('0x13')]=_0x2c433f[_0xb9e9('0x13')];this[_0xb9e9('0x14')]=_0x2c433f['zendeskAccounts'];this[_0xb9e9('0x15')]=_0x2c433f[_0xb9e9('0x15')];this[_0xb9e9('0x16')]=_0x2c433f[_0xb9e9('0x16')];this[_0xb9e9('0x17')]=_0x2c433f['sugarcrmAccounts'];this[_0xb9e9('0x18')]=_0x2c433f['zohoAccounts'];this['deskAccounts']=_0x2c433f[_0xb9e9('0x19')];this[_0xb9e9('0x1a')]=_0x2c433f[_0xb9e9('0x1a')];this[_0xb9e9('0x1b')]=_0x2c433f[_0xb9e9('0x1b')];this[_0xb9e9('0x1c')]=_0x2c433f[_0xb9e9('0x1c')];this[_0xb9e9('0x1d')]=_0x2c433f[_0xb9e9('0x1d')];this['accounts']={'zendesk':this[_0xb9e9('0x14')],'salesforce':this[_0xb9e9('0x16')],'freshdesk':this[_0xb9e9('0x15')],'sugarcrm':this[_0xb9e9('0x17')],'zoho':this[_0xb9e9('0x18')],'desk':this['deskAccounts'],'vtiger':this[_0xb9e9('0x1a')],'dynamics365':this[_0xb9e9('0x1c')],'freshsales':this[_0xb9e9('0x1d')],'servicenow':this[_0xb9e9('0x1b')]};ami['on']('custom:agentcalled',this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x20'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x21'),this['syncCustomEvent'][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x22'),this['syncCustomEvent']['bind'](this));ami['on'](_0xb9e9('0x23'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x24'),this[_0xb9e9('0x1e')]['bind'](this));ami['on']('custom:agentbusy',this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x25'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x26'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x27'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x28'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x29'),this[_0xb9e9('0x1e')]['bind'](this));ami['on'](_0xb9e9('0x2a'),this[_0xb9e9('0x2b')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x2c'),this[_0xb9e9('0x2b')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x2d'),this['syncAgentDial'][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x2e'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x2f'),this['syncCustomEvent']['bind'](this));ami['on']('custom:incomingmessage',this['syncCustomEvent']['bind'](this));ami['on'](_0xb9e9('0x30'),this['syncCustomEvent'][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x31'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x32'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));}Trigger[_0xb9e9('0x33')]['emit']=function(_0x362c6d,_0x571d9d,_0x590d96){logger['info'](_0x362c6d,_0x571d9d,JSON[_0xb9e9('0x34')](_0x590d96));io['to'](_0x362c6d)['emit'](_0x571d9d,_0x590d96);};Trigger[_0xb9e9('0x33')]['syncCustomEvent']=function(_0x41c011){var _0x5af878=_['clone'](_0x41c011);if(typeof _0x5af878[_0xb9e9('0x35')]===_0xb9e9('0x36')){_0x5af878[_0xb9e9('0x35')]=_0xb9e9('0x37');}this[_0xb9e9('0x38')](_0x5af878);};Trigger['prototype'][_0xb9e9('0x2b')]=function(_0x5ea735){if(this[_0xb9e9('0x10')][_0x5ea735[_0xb9e9('0x39')]]){this[_0xb9e9('0x1e')](_0x5ea735);}};Trigger[_0xb9e9('0x33')]['checkTriggers']=function(_0x23b70b){var _0x48f761;for(var _0x3ceb00 in this[_0xb9e9('0xf')]){if(this['triggers']['hasOwnProperty'](_0x3ceb00)){if(this['triggers'][_0x3ceb00][_0xb9e9('0x3a')]){_0x48f761=this['checkTrigger'](this[_0xb9e9('0xf')][_0x3ceb00],_0x23b70b);if(_0x48f761){_[_0xb9e9('0x3b')](_0x23b70b,_0x23b70b[_0xb9e9('0x3c')]);for(var _0xb407dc=0x0,_0xeefcdd,_0x1ea957,_0x16c38e;_0xb407dc<this[_0xb9e9('0xf')][_0x3ceb00][_0xb9e9('0x3d')][_0xb9e9('0x3e')];_0xb407dc+=0x1){_0xeefcdd=this[_0xb9e9('0xf')][_0x3ceb00][_0xb9e9('0x3d')][_0xb407dc];if(this[_0xb9e9('0x10')][_0x23b70b[_0xb9e9('0x39')]]){switch(_0xeefcdd['action']['toLowerCase']()){case _0xb9e9('0x3f'):break;case _0xb9e9('0x40'):case _0xb9e9('0x41'):var _0x41582d={};switch(barAndWebActions[_0xeefcdd[_0xb9e9('0x42')]]){case _0xb9e9('0xe'):_0x41582d[_0xb9e9('0x43')]=_0xeefcdd[_0xb9e9('0x44')];_0x41582d[_0xb9e9('0x45')]=this[_0xb9e9('0x12')][_0xeefcdd[_0xb9e9('0x44')]]?Mustache[_0xb9e9('0x46')](this[_0xb9e9('0x12')][_0xeefcdd['data2']][_0xb9e9('0x45')],_0x23b70b):_0xb9e9('0x47');break;case _0xb9e9('0x2'):_0x41582d[_0xb9e9('0x48')]=this[_0xb9e9('0x49')](_0xeefcdd[_0xb9e9('0x44')],_0x23b70b,_[_0xb9e9('0x4a')](_0xeefcdd[_0xb9e9('0x4b')])?!![]:parseInt(_0xeefcdd[_0xb9e9('0x4b')],0xa));if(_['isNil'](_0xeefcdd['data4'])){_0x41582d[_0xb9e9('0x4c')]='0';}else{_0x41582d['uriLocation']=_0xeefcdd['data4'];_0x41582d[_0xb9e9('0x4d')]=_[_0xb9e9('0x4a')](_0xeefcdd[_0xb9e9('0x4e')])?_0xb9e9('0x4f'):_0xeefcdd['data5'];_0x41582d[_0xb9e9('0x50')]=_[_0xb9e9('0x4a')](_0xeefcdd[_0xb9e9('0x51')])?'600':_0xeefcdd[_0xb9e9('0x51')];}break;case _0xb9e9('0x52'):_0x41582d['winApplication']=_0xeefcdd['data2']?Mustache[_0xb9e9('0x46')](_0xeefcdd['data2'],_0x23b70b):'';_0x41582d[_0xb9e9('0x53')]=_0xeefcdd[_0xb9e9('0x4b')]?Mustache[_0xb9e9('0x46')](_0xeefcdd[_0xb9e9('0x4b')],_0x23b70b):'';break;}this[_0xb9e9('0x54')](util[_0xb9e9('0x55')](_0xb9e9('0x56'),this[_0xb9e9('0x10')][_0x23b70b[_0xb9e9('0x39')]]['name']),util[_0xb9e9('0x55')](_0xb9e9('0x57'),_0xeefcdd['action'][_0xb9e9('0x58')](),barAndWebActions[_0xeefcdd[_0xb9e9('0x42')]]),_[_0xb9e9('0x3b')](_0x41582d,_0x23b70b));break;case _0xb9e9('0x59'):this[_0xb9e9('0x54')](util[_0xb9e9('0x55')](_0xb9e9('0x56'),this[_0xb9e9('0x10')][_0x23b70b[_0xb9e9('0x39')]][_0xb9e9('0x5a')]),util['format']('trigger:%s',_0xeefcdd['action'][_0xb9e9('0x58')]()),_[_0xb9e9('0x3b')]({'ProjectId':parseInt(_0xeefcdd[_0xb9e9('0x42')],0xa)},_0x23b70b));break;default:this[_0xb9e9('0x54')](util['format'](_0xb9e9('0x56'),this[_0xb9e9('0x10')][_0x23b70b['interface']][_0xb9e9('0x5a')]),util[_0xb9e9('0x55')](_0xb9e9('0x5b'),_0xeefcdd[_0xb9e9('0x5c')][_0xb9e9('0x58')]()),_[_0xb9e9('0x3b')]({},_0xeefcdd,_0x23b70b));}}switch(_0xeefcdd[_0xb9e9('0x5c')]['toLowerCase']()){case _0xb9e9('0x3f'):cmContact[_0xb9e9('0x5d')](this[_0xb9e9('0x10')][_0x23b70b[_0xb9e9('0x39')]],this[_0xb9e9('0xf')][_0x3ceb00],_0xeefcdd,_0x23b70b);break;case _0xb9e9('0x5e'):integration[_0xb9e9('0x5d')](_0xeefcdd,_0x23b70b,this[_0xb9e9('0x5f')],this[_0xb9e9('0x10')][_0x23b70b[_0xb9e9('0x39')]],this[_0xb9e9('0x11')][_0x23b70b[_0xb9e9('0x60')]],this[_0xb9e9('0x13')][_0x23b70b[_0xb9e9('0x61')]]);break;case _0xb9e9('0x62'):urlforward[_0xb9e9('0x5d')](_0xeefcdd,_0x23b70b);break;case _0xb9e9('0x63'):script['exec'](_0xeefcdd,_0x23b70b);break;}}}}}}};Trigger[_0xb9e9('0x33')][_0xb9e9('0x49')]=function(_0x508a32,_0x26a150,_0x26f3ea){var _0x2c4018=url[_0xb9e9('0x64')](Mustache[_0xb9e9('0x46')](_0x508a32,_0x26a150),!![]);if(_0x26f3ea){_[_0xb9e9('0x3b')](_0x2c4018['query'],_0x26a150);}delete _0x2c4018[_0xb9e9('0x65')];var _0x4daa14=url[_0xb9e9('0x55')](_0x2c4018);_0x4daa14=_0x4daa14[_0xb9e9('0x66')](/\/\?/g,'?');return _0x4daa14;};Trigger[_0xb9e9('0x33')][_0xb9e9('0x67')]=function(_0x321b6d,_0x274c4c){var _0x4858a1=!![];var _0x2fe60e=!![];var _0x49f67e=![];if(_0x321b6d[_0xb9e9('0x68')]===_0x274c4c[_0xb9e9('0x35')]){_0x49f67e=!![];}if(_0x321b6d[_0xb9e9('0x69')]['length']){_0x4858a1=_['every'](_0x321b6d[_0xb9e9('0x69')],this[_0xb9e9('0x6a')](_0x274c4c,_0x321b6d[_0xb9e9('0x68')]));}if(_0x321b6d[_0xb9e9('0x6b')]['length']){_0x2fe60e=_[_0xb9e9('0x6c')](_0x321b6d[_0xb9e9('0x6b')],this[_0xb9e9('0x6a')](_0x274c4c,_0x321b6d[_0xb9e9('0x68')]));}return _0x49f67e&&_0x4858a1&&_0x2fe60e;};Trigger[_0xb9e9('0x33')][_0xb9e9('0x6a')]=function(_0x45cd9b,_0x47b95b){return function(_0x25e8e2){switch(_0x25e8e2['field']){case _0xb9e9('0x6d'):if(_0x45cd9b[_0xb9e9('0x68')]===_0x47b95b){if(_0x47b95b===_0xb9e9('0x6e')){return _0x45cd9b['ChatWebsiteId']?operators[_0x25e8e2['operator']](Number(_0x25e8e2[_0xb9e9('0x6f')]),_0x45cd9b[_0xb9e9('0x70')]):![];}else{return _0x45cd9b[_[_0xb9e9('0x71')](_0x47b95b)+'AccountId']?operators[_0x25e8e2[_0xb9e9('0x72')]](Number(_0x25e8e2[_0xb9e9('0x6f')]),_0x45cd9b[_['upperFirst'](_0x47b95b)+'AccountId']):![];}}break;case'interaction':case'message':if(_0x45cd9b[_0xb9e9('0x68')]===_0x47b95b){return _0x45cd9b[_0xb9e9('0x73')]?operators[_0x25e8e2[_0xb9e9('0x72')]](_0x25e8e2[_0xb9e9('0x6f')],_0x45cd9b['event']):![];}break;case'queue':return _0x45cd9b[_0xb9e9('0x60')]?operators[_0x25e8e2[_0xb9e9('0x72')]](_0x25e8e2['value'],_0x45cd9b[_0xb9e9('0x60')]):![];case'agent':return _0x45cd9b[_0xb9e9('0x74')]?operators[_0x25e8e2['operator']](_0x25e8e2[_0xb9e9('0x6f')],_0x45cd9b['membername']):![];case'lastevent':return _0x45cd9b['lastevent']?operators[_0x25e8e2[_0xb9e9('0x72')]](_0x25e8e2[_0xb9e9('0x6f')],_0x45cd9b[_0xb9e9('0x75')]):![];case _0xb9e9('0x61'):return _0x45cd9b[_0xb9e9('0x61')]?operators[_0x25e8e2[_0xb9e9('0x72')]](_0x25e8e2['value'],_0x45cd9b['routeId']):![];}return![];};};module[_0xb9e9('0x76')]=Trigger;
\ No newline at end of file
+var _0x298c=['vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','sugarcrmAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentcomplete','custom:agentnoanswer','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','prototype','emit','info','stringify','clone','checkTriggers','interface','status','checkTrigger','length','action','toLowerCase','contactmanager','browser','data1','TemplateId','data2','html','render','template\x20not\x20found','isNil','data3','location','uriLocation','data4','windowWidth','data5','800','data6','600','winApplication','winArguments','format','name','merge','jscripty','user:%s','exec','integration','queue','urlforward','script','parse','query','search','replace','AllConditions','every','checkConditions','AnyConditions','some','channel','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','agent','membername','lastevent','routeId','exports','url','mustache','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/logger','trigger','redis','localhost','socket.io-emitter','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','zohoAccounts','deskAccounts'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0x298c,0x14d));var _0xc298=function(_0x2f514,_0x26f852){_0x2f514=_0x2f514-0x0;var _0x492d81=_0x298c[_0x2f514];return _0x492d81;};'use strict';var util=require('util');var _=require('lodash');var url=require(_0xc298('0x0'));var Mustache=require(_0xc298('0x1'));var Redis=require(_0xc298('0x2'));var urlforward=require(_0xc298('0x3'));var integration=require(_0xc298('0x4'));var cmContact=require(_0xc298('0x5'));var script=require(_0xc298('0x6'));var config=require('../../../config/environment');var logger=require(_0xc298('0x7'))(_0xc298('0x8'));var ami=require('../ami');config[_0xc298('0x9')]=_['defaults'](config[_0xc298('0x9')],{'host':_0xc298('0xa'),'port':0x18eb});var io=require(_0xc298('0xb'))(new Redis(config[_0xc298('0x9')]));var operators={'equals':function(_0x333b20,_0x453f5f){return _0x333b20==_0x453f5f;},'not_equals':function(_0xc1e1fb,_0x55202f){return _0xc1e1fb!=_0x55202f;}};var barAndWebActions=[_0xc298('0xc'),_0xc298('0x0'),_0xc298('0xd')];function Trigger(_0x1c8d55){this[_0xc298('0xe')]=_0x1c8d55[_0xc298('0xe')];this[_0xc298('0xf')]=_0x1c8d55[_0xc298('0xf')];this[_0xc298('0x10')]=_0x1c8d55[_0xc298('0x10')];this['templates']=_0x1c8d55[_0xc298('0x11')];this[_0xc298('0x12')]=_0x1c8d55[_0xc298('0x12')];this['zendeskAccounts']=_0x1c8d55[_0xc298('0x13')];this[_0xc298('0x14')]=_0x1c8d55[_0xc298('0x14')];this['salesforceAccounts']=_0x1c8d55[_0xc298('0x15')];this['sugarcrmAccounts']=_0x1c8d55['sugarcrmAccounts'];this['zohoAccounts']=_0x1c8d55[_0xc298('0x16')];this[_0xc298('0x17')]=_0x1c8d55[_0xc298('0x17')];this[_0xc298('0x18')]=_0x1c8d55[_0xc298('0x18')];this['servicenowAccounts']=_0x1c8d55[_0xc298('0x19')];this[_0xc298('0x1a')]=_0x1c8d55[_0xc298('0x1a')];this['freshsalesAccounts']=_0x1c8d55[_0xc298('0x1b')];this[_0xc298('0x1c')]={'zendesk':this[_0xc298('0x13')],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0xc298('0x14')],'sugarcrm':this[_0xc298('0x1d')],'zoho':this['zohoAccounts'],'desk':this[_0xc298('0x17')],'vtiger':this[_0xc298('0x18')],'dynamics365':this[_0xc298('0x1a')],'freshsales':this[_0xc298('0x1b')],'servicenow':this[_0xc298('0x19')]};ami['on'](_0xc298('0x1e'),this[_0xc298('0x1f')][_0xc298('0x20')](this));ami['on'](_0xc298('0x21'),this[_0xc298('0x1f')][_0xc298('0x20')](this));ami['on'](_0xc298('0x22'),this['syncCustomEvent'][_0xc298('0x20')](this));ami['on'](_0xc298('0x23'),this[_0xc298('0x1f')][_0xc298('0x20')](this));ami['on']('custom:agentnosuchnumber',this[_0xc298('0x1f')][_0xc298('0x20')](this));ami['on'](_0xc298('0x24'),this[_0xc298('0x1f')][_0xc298('0x20')](this));ami['on']('custom:agentbusy',this[_0xc298('0x1f')]['bind'](this));ami['on']('custom:agentcongestion',this[_0xc298('0x1f')][_0xc298('0x20')](this));ami['on'](_0xc298('0x25'),this[_0xc298('0x1f')][_0xc298('0x20')](this));ami['on'](_0xc298('0x26'),this[_0xc298('0x1f')][_0xc298('0x20')](this));ami['on'](_0xc298('0x27'),this[_0xc298('0x1f')][_0xc298('0x20')](this));ami['on'](_0xc298('0x28'),this[_0xc298('0x1f')][_0xc298('0x20')](this));ami['on'](_0xc298('0x29'),this[_0xc298('0x2a')][_0xc298('0x20')](this));ami['on'](_0xc298('0x2b'),this[_0xc298('0x2a')][_0xc298('0x20')](this));ami['on'](_0xc298('0x2c'),this[_0xc298('0x2a')][_0xc298('0x20')](this));ami['on'](_0xc298('0x2d'),this['syncCustomEvent']['bind'](this));ami['on'](_0xc298('0x2e'),this['syncCustomEvent'][_0xc298('0x20')](this));ami['on'](_0xc298('0x2f'),this[_0xc298('0x1f')][_0xc298('0x20')](this));ami['on'](_0xc298('0x30'),this[_0xc298('0x1f')]['bind'](this));ami['on'](_0xc298('0x31'),this[_0xc298('0x1f')][_0xc298('0x20')](this));ami['on'](_0xc298('0x32'),this[_0xc298('0x1f')][_0xc298('0x20')](this));}Trigger[_0xc298('0x33')][_0xc298('0x34')]=function(_0x4599bf,_0x618f46,_0x255363){logger[_0xc298('0x35')](_0x4599bf,_0x618f46,JSON[_0xc298('0x36')](_0x255363));io['to'](_0x4599bf)[_0xc298('0x34')](_0x618f46,_0x255363);};Trigger[_0xc298('0x33')][_0xc298('0x1f')]=function(_0x4a0596){var _0x2d9e06=_[_0xc298('0x37')](_0x4a0596);this[_0xc298('0x38')](_0x2d9e06);};Trigger[_0xc298('0x33')][_0xc298('0x2a')]=function(_0x5d85b5){if(this[_0xc298('0xf')][_0x5d85b5[_0xc298('0x39')]]){this[_0xc298('0x1f')](_0x5d85b5);}};Trigger[_0xc298('0x33')][_0xc298('0x38')]=function(_0x52d68f){var _0x30714e;for(var _0x34e0ea in this['triggers']){if(this[_0xc298('0xe')]['hasOwnProperty'](_0x34e0ea)){if(this[_0xc298('0xe')][_0x34e0ea][_0xc298('0x3a')]){_0x30714e=this[_0xc298('0x3b')](this[_0xc298('0xe')][_0x34e0ea],_0x52d68f);if(_0x30714e){_['merge'](_0x52d68f,_0x52d68f['variables']);for(var _0x10871c=0x0,_0x2a9464,_0x33f2aa,_0x9848c0;_0x10871c<this[_0xc298('0xe')][_0x34e0ea]['Actions'][_0xc298('0x3c')];_0x10871c+=0x1){_0x2a9464=this[_0xc298('0xe')][_0x34e0ea]['Actions'][_0x10871c];if(this['agents'][_0x52d68f[_0xc298('0x39')]]){switch(_0x2a9464[_0xc298('0x3d')][_0xc298('0x3e')]()){case _0xc298('0x3f'):break;case'motionbar':case _0xc298('0x40'):var _0x412579={};switch(barAndWebActions[_0x2a9464[_0xc298('0x41')]]){case _0xc298('0xc'):_0x412579[_0xc298('0x42')]=_0x2a9464[_0xc298('0x43')];_0x412579[_0xc298('0x44')]=this[_0xc298('0x11')][_0x2a9464[_0xc298('0x43')]]?Mustache[_0xc298('0x45')](this['templates'][_0x2a9464['data2']]['html'],_0x52d68f):_0xc298('0x46');break;case _0xc298('0x0'):_0x412579['uri']=this['buildUri'](_0x2a9464[_0xc298('0x43')],_0x52d68f,_[_0xc298('0x47')](_0x2a9464[_0xc298('0x48')])?!![]:parseInt(_0x2a9464[_0xc298('0x48')],0xa));if(_[_0xc298('0x47')](_0x2a9464['data4'])){_0x412579[_0xc298('0x49')]='0';}else{_0x412579[_0xc298('0x4a')]=_0x2a9464[_0xc298('0x4b')];_0x412579[_0xc298('0x4c')]=_[_0xc298('0x47')](_0x2a9464[_0xc298('0x4d')])?_0xc298('0x4e'):_0x2a9464[_0xc298('0x4d')];_0x412579['windowHeight']=_[_0xc298('0x47')](_0x2a9464[_0xc298('0x4f')])?_0xc298('0x50'):_0x2a9464['data6'];}break;case _0xc298('0xd'):_0x412579[_0xc298('0x51')]=_0x2a9464['data2']?Mustache['render'](_0x2a9464[_0xc298('0x43')],_0x52d68f):'';_0x412579[_0xc298('0x52')]=_0x2a9464[_0xc298('0x48')]?Mustache['render'](_0x2a9464['data3'],_0x52d68f):'';break;}this['emit'](util[_0xc298('0x53')]('user:%s',this[_0xc298('0xf')][_0x52d68f[_0xc298('0x39')]][_0xc298('0x54')]),util[_0xc298('0x53')]('trigger:%s:%s',_0x2a9464['action'][_0xc298('0x3e')](),barAndWebActions[_0x2a9464[_0xc298('0x41')]]),_[_0xc298('0x55')](_0x412579,_0x52d68f));break;case _0xc298('0x56'):this['emit'](util['format'](_0xc298('0x57'),this[_0xc298('0xf')][_0x52d68f[_0xc298('0x39')]][_0xc298('0x54')]),util[_0xc298('0x53')]('trigger:%s',_0x2a9464[_0xc298('0x3d')][_0xc298('0x3e')]()),_[_0xc298('0x55')]({'ProjectId':parseInt(_0x2a9464[_0xc298('0x41')],0xa)},_0x52d68f));break;default:this['emit'](util[_0xc298('0x53')](_0xc298('0x57'),this['agents'][_0x52d68f[_0xc298('0x39')]][_0xc298('0x54')]),util['format']('trigger:%s',_0x2a9464['action'][_0xc298('0x3e')]()),_[_0xc298('0x55')]({},_0x2a9464,_0x52d68f));}}switch(_0x2a9464[_0xc298('0x3d')]['toLowerCase']()){case _0xc298('0x3f'):cmContact[_0xc298('0x58')](this[_0xc298('0xf')][_0x52d68f[_0xc298('0x39')]],this[_0xc298('0xe')][_0x34e0ea],_0x2a9464,_0x52d68f);break;case _0xc298('0x59'):integration[_0xc298('0x58')](_0x2a9464,_0x52d68f,this[_0xc298('0x1c')],this[_0xc298('0xf')][_0x52d68f[_0xc298('0x39')]],this['voiceQueues'][_0x52d68f[_0xc298('0x5a')]],this[_0xc298('0x12')][_0x52d68f['routeId']]);break;case _0xc298('0x5b'):urlforward[_0xc298('0x58')](_0x2a9464,_0x52d68f);break;case _0xc298('0x5c'):script[_0xc298('0x58')](_0x2a9464,_0x52d68f);break;}}}}}}};Trigger[_0xc298('0x33')]['buildUri']=function(_0x7ced0b,_0x2a345b,_0x39336e){var _0xba3d31=url[_0xc298('0x5d')](Mustache[_0xc298('0x45')](_0x7ced0b,_0x2a345b),!![]);if(_0x39336e){_[_0xc298('0x55')](_0xba3d31[_0xc298('0x5e')],_0x2a345b);}delete _0xba3d31[_0xc298('0x5f')];var _0x5386e0=url['format'](_0xba3d31);_0x5386e0=_0x5386e0[_0xc298('0x60')](/\/\?/g,'?');return _0x5386e0;};Trigger[_0xc298('0x33')][_0xc298('0x3b')]=function(_0x91e967,_0x6b0451){var _0x343734=!![],_0x1b39a1=!![];if(_0x91e967[_0xc298('0x61')][_0xc298('0x3c')]){_0x343734=_[_0xc298('0x62')](_0x91e967['AllConditions'],this[_0xc298('0x63')](_0x6b0451,_0x91e967['channel']));}if(_0x91e967[_0xc298('0x64')][_0xc298('0x3c')]){_0x1b39a1=_[_0xc298('0x65')](_0x91e967['AnyConditions'],this[_0xc298('0x63')](_0x6b0451,_0x91e967[_0xc298('0x66')]));}return _0x343734&&_0x1b39a1;};Trigger[_0xc298('0x33')][_0xc298('0x63')]=function(_0x3e7a46,_0xf48c2e){return function(_0x171d12){switch(_0x171d12[_0xc298('0x67')]){case _0xc298('0x68'):if(_0x3e7a46[_0xc298('0x66')]===_0xf48c2e){if(_0xf48c2e===_0xc298('0x69')){return _0x3e7a46[_0xc298('0x6a')]?operators[_0x171d12[_0xc298('0x6b')]](Number(_0x171d12[_0xc298('0x6c')]),_0x3e7a46['ChatWebsiteId']):![];}else{return _0x3e7a46[_[_0xc298('0x6d')](_0xf48c2e)+_0xc298('0x6e')]?operators[_0x171d12[_0xc298('0x6b')]](Number(_0x171d12['value']),_0x3e7a46[_['upperFirst'](_0xf48c2e)+'AccountId']):![];}}break;case _0xc298('0x6f'):case _0xc298('0x70'):if(_0x3e7a46[_0xc298('0x66')]===_0xf48c2e){return _0x3e7a46[_0xc298('0x71')]?operators[_0x171d12[_0xc298('0x6b')]](_0x171d12[_0xc298('0x6c')],_0x3e7a46[_0xc298('0x71')]):![];}break;case _0xc298('0x5a'):return _0x3e7a46[_0xc298('0x5a')]?operators[_0x171d12['operator']](_0x171d12[_0xc298('0x6c')],_0x3e7a46[_0xc298('0x5a')]):![];case _0xc298('0x72'):return _0x3e7a46['membername']?operators[_0x171d12[_0xc298('0x6b')]](_0x171d12[_0xc298('0x6c')],_0x3e7a46[_0xc298('0x73')]):![];case _0xc298('0x74'):return _0x3e7a46[_0xc298('0x74')]?operators[_0x171d12[_0xc298('0x6b')]](_0x171d12[_0xc298('0x6c')],_0x3e7a46[_0xc298('0x74')]):![];case _0xc298('0x75'):return _0x3e7a46[_0xc298('0x75')]?operators[_0x171d12[_0xc298('0x6b')]](_0x171d12['value'],_0x3e7a46[_0xc298('0x75')]):![];}return![];};};module[_0xc298('0x76')]=Trigger;
\ No newline at end of file
index 1d1c92c..6f8e720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['map','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','type','custom_fields','variable','variableName','idField','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','recordingURL','The\x20User\x20ID\x20is:','destcalleridnum','Ticket\x20created!','[OUTBOUND]','unmanaged','lastevent','Recording\x20is\x20enabled!','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','remoteUri','total_entries','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','%s/users/me','debug','stringify','authType','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','then','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3f25b2,_0x412bd4){_0x3f25b2=_0x3f25b2-0x0;var _0xd8caeb=_0x5fc3[_0x3f25b2];return _0xd8caeb;};'use strict';var _=require(_0x35fc('0x0'));var rp=require(_0x35fc('0x1'));var md5=require('md5');var util=require(_0x35fc('0x2'));var Redis=require(_0x35fc('0x3'));var intUtil=require(_0x35fc('0x4'));var config=require(_0x35fc('0x5'));var logger=require(_0x35fc('0x6'))('desk');config[_0x35fc('0x7')]=_[_0x35fc('0x8')](config[_0x35fc('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x35fc('0x7')]));function emit(_0x508b32,_0x16e153,_0x27524f){io['to'](_0x508b32)[_0x35fc('0x9')](_0x16e153,_0x27524f);}var headers={'Content-Type':_0x35fc('0xa'),'Accept':_0x35fc('0xa')};function getUser(_0xf9d3a6,_0x2051ab){if(intUtil['validateEmail'](_0x2051ab)===!![]){logger[_0x35fc('0xb')](_0x35fc('0xc'),_0x2051ab);return request({'uri':util['format'](_0x35fc('0xd'),_0xf9d3a6[_0x35fc('0xe')])})['then'](function(_0xda83fb){if(_0xda83fb[_0x35fc('0xf')]){return _['find'](_0xda83fb['_embedded'][_0x35fc('0x10')],{'email':_0x2051ab});}})['then'](function(_0x397738){if(_0x397738){logger[_0x35fc('0xb')](_0x35fc('0x11'));return _0x397738;}else{logger[_0x35fc('0xb')](_0x35fc('0x12'));return request({'uri':util['format']('%s/users/me',_0xf9d3a6['remoteUri'])});}});}else{logger['info'](_0x35fc('0x13'));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x15'),_0xf9d3a6[_0x35fc('0xe')])});}}function request(_0x227a49){logger[_0x35fc('0x16')]('[HTTP]',JSON[_0x35fc('0x17')](_0x227a49));return rp(_[_0x35fc('0x8')](_0x227a49,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x41e165){var _0x363e47;if(_0x41e165[_0x35fc('0x18')]==='basic'){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x19'),_0x41e165[_0x35fc('0x1a')],_0x41e165['password']);}else if(_0x41e165[_0x35fc('0x18')]===_0x35fc('0x1b')){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x1c'),_0x41e165[_0x35fc('0x1a')],_0x41e165[_0x35fc('0x1b')]);}return util[_0x35fc('0x14')](_0x35fc('0x1d'),new Buffer(_0x363e47)[_0x35fc('0x1e')](_0x35fc('0x1f')));}function getEndUser(_0x5bd2b8,_0x323aee,_0xd5399f){logger[_0x35fc('0xb')](_0x35fc('0x20'),_0xd5399f);return request({'uri':util[_0x35fc('0x14')]('%s/customers/search',_0x5bd2b8[_0x35fc('0xe')]),'qs':{'phone':_0xd5399f}})[_0x35fc('0x21')](function(_0x561bf8){if(_0x561bf8[_0x35fc('0xf')]){logger[_0x35fc('0xb')](_0x35fc('0x22'));return _0x561bf8['_embedded'][_0x35fc('0x10')][0x0];}else{logger['info'](_0x35fc('0x23'));return request({'uri':util[_0x35fc('0x14')]('%s/customers',_0x5bd2b8['remoteUri']),'method':_0x35fc('0x24'),'body':{'first_name':_0x323aee,'title':_0x323aee,'phone_numbers':[{'type':'work','value':_0xd5399f}]}});}});}function getTags(_0x274208,_0x1a5d92){var _0x57001c=[];if(_0x274208&&_0x274208[_0x35fc('0x25')]>0x0){_0x57001c=_[_0x35fc('0x26')](_0x274208,_0x1a5d92);}return _0x57001c;}function getCustomFields(_0x383837,_0x9f3c8a){var _0x3735da=[];var _0x134dfa={'custom_fields':{}};if(_0x383837[_0x35fc('0x25')]>0x0){_[_0x35fc('0x27')](_0x383837,function(_0x54aedc){if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc['type'])&&_0x54aedc[_0x35fc('0x2b')]&&!_0x54aedc[_0x35fc('0x2c')]){_0x134dfa[_0x54aedc[_0x35fc('0x2b')][_0x35fc('0x2d')]()]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc[_0x35fc('0x2f')])&&_0x54aedc['idField']&&_0x54aedc['customField']){_0x134dfa[_0x35fc('0x30')][_0x54aedc['idField']]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_0x54aedc[_0x35fc('0x2f')]===_0x35fc('0x31')&&_0x54aedc[_0x35fc('0x32')]&&_0x54aedc[_0x35fc('0x33')]&&_0x54aedc['customField']){_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]][_0x35fc('0x1e')]());}else if(_0x54aedc[_0x35fc('0x2f')]==='customVariable'&&_0x54aedc[_0x35fc('0x34')]&&_0x54aedc[_0x35fc('0x34')][_0x35fc('0x35')]&&_0x54aedc['idField']&&_0x54aedc[_0x35fc('0x2c')]){_0x9f3c8a[_0x54aedc['Variable'][_0x35fc('0x35')][_0x35fc('0x2d')]()]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc['Variable']['name']['toLowerCase']()][_0x35fc('0x1e')]());}});}if(_0x134dfa['priority']){_0x134dfa[_0x35fc('0x36')]=Number(_0x134dfa['priority']);}return _0x134dfa;}function getTicket(_0x9c6b65,_0x1f2d66,_0x2ca9ac,_0x22b724,_0x1c10e0){logger[_0x35fc('0xb')](_0x35fc('0x37'));var _0x4ec0dc=_[_0x35fc('0x38')]({'subject':intUtil[_0x35fc('0x39')](_0x22b724['Subjects'],_0x1c10e0,'\x20'),'type':_0x35fc('0x3a'),'status':_0x35fc('0x3b'),'labels':[_0x35fc('0x3c'),_0x35fc('0x3d'),_0x35fc('0x3e')][_0x35fc('0x3f')](getTags(_0x22b724['Tags'],_0x35fc('0x35'))),'description':intUtil[_0x35fc('0x39')](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0x35fc('0x41'),_0x1f2d66['id']),'class':_0x35fc('0x42')}},'message':{'direction':'in','body':intUtil['getString'](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a')}},getCustomFields(_0x22b724[_0x35fc('0x43')],_0x1c10e0));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x44'),_0x9c6b65[_0x35fc('0xe')],_0x2ca9ac['id']),'method':_0x35fc('0x24'),'body':_0x4ec0dc});}exports[_0x35fc('0x45')]=function(_0x3ec51f,_0x5a7e9e,_0x596e83,_0x210d5d,_0x36fcf9,_0x4fdc6d){var _0x5c2e5c,_0x4ff202;_0x4fdc6d[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x4fdc6d['remoteUri']);_0x4fdc6d[_0x35fc('0x47')]=intUtil[_0x35fc('0x46')](_0x4fdc6d[_0x35fc('0x47')]);if(_0x36fcf9&&_0x36fcf9[_0x35fc('0x48')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x5a7e9e['recordingURL']=util['format'](_0x35fc('0x49'),_0x4fdc6d[_0x35fc('0x47')],_0x5a7e9e['uniqueid'],md5(_0x5a7e9e[_0x35fc('0x4a')]));}else{_0x5a7e9e['recordingURL']='';}headers[_0x35fc('0x4b')]=getAuth(_0x4fdc6d);return getUser(_0x4fdc6d,_0x210d5d[_0x35fc('0x4c')])[_0x35fc('0x21')](function(_0x2de5d1){_0x5c2e5c=_0x2de5d1;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x5c2e5c['id']);return getEndUser(_0x4fdc6d,_0x5a7e9e[_0x35fc('0x4d')],_0x5a7e9e[_0x35fc('0x4e')]);})['then'](function(_0x18181b){_0x4ff202=_0x18181b;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x4ff202['id']);return getTicket(_0x4fdc6d,_0x5c2e5c,_0x4ff202,_0x596e83,_0x5a7e9e);})[_0x35fc('0x21')](function(_0x5bc8c3){if(_0x5bc8c3){logger[_0x35fc('0xb')]('Ticket\x20created!');logger['info'](_0x35fc('0x50'),_0x5bc8c3['id']);switch(_0x4fdc6d[_0x35fc('0x2f')]){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x53'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d['name']),_0x35fc('0x55'),{'recordId':_0x5bc8c3['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d[_0x35fc('0x35')]),_0x35fc('0x58'),{'uri':util[_0x35fc('0x14')](_0x35fc('0x59'),_0x5bc8c3['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x52'),_0x35fc('0x5b'));}}})['catch'](function(_0x553ed6){console[_0x35fc('0x5a')](_0x553ed6);logger[_0x35fc('0x5a')](_0x35fc('0x52'),JSON[_0x35fc('0x17')](_0x553ed6));});};exports[_0x35fc('0x5c')]=function(_0x3e6494,_0x4a4798,_0x4f024c,_0x388521,_0x19b2ce,_0x395d63,_0x38bc78){var _0x5b2595,_0x467980;_0x395d63[_0x35fc('0xe')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0xe')]);_0x395d63[_0x35fc('0x47')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0x47')]);if(_0x38bc78&&_0x38bc78[_0x35fc('0x5d')]&&_0x38bc78[_0x35fc('0x5d')]!==_0x35fc('0x5e')){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x4a4798[_0x35fc('0x5f')]=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x395d63[_0x35fc('0x47')],_0x4a4798[_0x35fc('0x4a')],md5(_0x4a4798[_0x35fc('0x4a')]));}headers[_0x35fc('0x4b')]=getAuth(_0x395d63);return getUser(_0x395d63,_0x388521[_0x35fc('0x4c')])['then'](function(_0x2d9d45){_0x5b2595=_0x2d9d45;logger[_0x35fc('0xb')](_0x35fc('0x60'),_0x5b2595['id']);return getEndUser(_0x395d63,_0x4a4798['destcalleridname'],_0x4a4798[_0x35fc('0x61')]);})[_0x35fc('0x21')](function(_0x47fb1a){_0x467980=_0x47fb1a;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x467980['id']);return getTicket(_0x395d63,_0x5b2595,_0x467980,_0x4f024c,_0x4a4798);})[_0x35fc('0x21')](function(_0x1c4c33){if(_0x1c4c33){logger[_0x35fc('0xb')](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x1c4c33['id']);switch(_0x395d63['type']){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:desk:display',{'recordId':_0x1c4c33['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x395d63[_0x35fc('0xe')],_0x1c4c33['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x63'),_0x35fc('0x5b'));}}})['catch'](function(_0x458eb8){logger[_0x35fc('0x5a')](_0x35fc('0x63'),JSON[_0x35fc('0x17')](_0x458eb8));});};exports[_0x35fc('0x64')]=function(_0x1d0e53,_0x27071b,_0x2127e0,_0x462ceb,_0x4c3ace,_0x35d7c8){var _0x47c75f,_0xfbd737;_0x35d7c8[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x35d7c8[_0x35fc('0xe')]);_0x35d7c8['serverUrl']=intUtil[_0x35fc('0x46')](_0x35d7c8['serverUrl']);if(_0x4c3ace&&_0x4c3ace['monitor_format']){logger['info']('['+_0x27071b[_0x35fc('0x65')]['toUpperCase']()+']',_0x35fc('0x66'));_0x27071b['recordingURL']=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x35d7c8[_0x35fc('0x47')],_0x27071b[_0x35fc('0x4a')],md5(_0x27071b[_0x35fc('0x4a')]));}else{_0x27071b[_0x35fc('0x5f')]='';}headers['Authorization']=getAuth(_0x35d7c8);return getUser(_0x35d7c8)[_0x35fc('0x21')](function(_0x1e2214){_0x47c75f=_0x1e2214;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x47c75f['id']);return getEndUser(_0x35d7c8,_0x27071b[_0x35fc('0x4d')],_0x27071b[_0x35fc('0x4e')]);})[_0x35fc('0x21')](function(_0x3c1b56){_0xfbd737=_0x3c1b56;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0xfbd737['id']);return getTicket(_0x35d7c8,_0x47c75f,_0xfbd737,_0x2127e0,_0x27071b);})[_0x35fc('0x21')](function(_0x4464d5){if(_0x4464d5){logger['info'](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x4464d5['id']);}})['catch'](function(_0x1c88d8){logger[_0x35fc('0x5a')]('['+_0x27071b['lastevent']['toUpperCase']()+']',JSON[_0x35fc('0x17')](_0x1c88d8));});};
\ No newline at end of file
+var _0x55ca=['debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','token','%s/token:%s','toString','base64','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','_embedded','entries','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','length','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','custom_fields','variable','variableName','customVariable','Variable','name','priority','merge','xCALLY','Motion','CTI','concat','Tags','getString','Descriptions','/api/v2/users/%d','user','Fields','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','./util','../../../../config/environment','desk','redis','defaults','localhost','socket.io-emitter','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','remoteUri','then','total_entries','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me'];(function(_0x504132,_0x1fdfa8){var _0x8620ea=function(_0x20084d){while(--_0x20084d){_0x504132['push'](_0x504132['shift']());}};_0x8620ea(++_0x1fdfa8);}(_0x55ca,0x126));var _0xa55c=function(_0x18ea99,_0x5d0dc6){_0x18ea99=_0x18ea99-0x0;var _0x4e1a63=_0x55ca[_0x18ea99];return _0x4e1a63;};'use strict';var _=require(_0xa55c('0x0'));var rp=require(_0xa55c('0x1'));var md5=require('md5');var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xa55c('0x2'));var config=require(_0xa55c('0x3'));var logger=require('../../../../config/logger')(_0xa55c('0x4'));config[_0xa55c('0x5')]=_[_0xa55c('0x6')](config[_0xa55c('0x5')],{'host':_0xa55c('0x7'),'port':0x18eb});var io=require(_0xa55c('0x8'))(new Redis(config[_0xa55c('0x5')]));function emit(_0x4d0624,_0x2121fd,_0x2537f0){io['to'](_0x4d0624)['emit'](_0x2121fd,_0x2537f0);}var headers={'Content-Type':_0xa55c('0x9'),'Accept':_0xa55c('0x9')};function getUser(_0x52a3bc,_0x5849ad){if(intUtil[_0xa55c('0xa')](_0x5849ad)===!![]){logger[_0xa55c('0xb')](_0xa55c('0xc'),_0x5849ad);return request({'uri':util[_0xa55c('0xd')](_0xa55c('0xe'),_0x52a3bc[_0xa55c('0xf')])})[_0xa55c('0x10')](function(_0x70c2de){if(_0x70c2de[_0xa55c('0x11')]){return _[_0xa55c('0x12')](_0x70c2de['_embedded']['entries'],{'email':_0x5849ad});}})[_0xa55c('0x10')](function(_0x576044){if(_0x576044){logger['info']('Agent\x20found!');return _0x576044;}else{logger[_0xa55c('0xb')](_0xa55c('0x13'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}});}else{logger[_0xa55c('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}}function request(_0x31e10d){logger[_0xa55c('0x15')](_0xa55c('0x16'),JSON[_0xa55c('0x17')](_0x31e10d));return rp(_[_0xa55c('0x6')](_0x31e10d,{'method':_0xa55c('0x18'),'headers':headers,'json':!![]}));}function getAuth(_0x4cee3c){var _0x3d4c9e;if(_0x4cee3c[_0xa55c('0x19')]===_0xa55c('0x1a')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1b'),_0x4cee3c[_0xa55c('0x1c')],_0x4cee3c['password']);}else if(_0x4cee3c['authType']===_0xa55c('0x1d')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1e'),_0x4cee3c['username'],_0x4cee3c[_0xa55c('0x1d')]);}return util[_0xa55c('0xd')]('Basic\x20%s',new Buffer(_0x3d4c9e)[_0xa55c('0x1f')](_0xa55c('0x20')));}function getEndUser(_0x940f28,_0x1965f1,_0x234372){logger['info'](_0xa55c('0x21'),_0x234372);return request({'uri':util['format']('%s/customers/search',_0x940f28['remoteUri']),'qs':{'phone':_0x234372}})[_0xa55c('0x10')](function(_0x54b038){if(_0x54b038[_0xa55c('0x11')]){logger[_0xa55c('0xb')](_0xa55c('0x22'));return _0x54b038[_0xa55c('0x23')][_0xa55c('0x24')][0x0];}else{logger[_0xa55c('0xb')](_0xa55c('0x25'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x26'),_0x940f28[_0xa55c('0xf')]),'method':_0xa55c('0x27'),'body':{'first_name':_0x1965f1,'title':_0x1965f1,'phone_numbers':[{'type':'work','value':_0x234372}]}});}});}function getTags(_0x430d55,_0x28814f){var _0x1c9f6b=[];if(_0x430d55&&_0x430d55[_0xa55c('0x28')]>0x0){_0x1c9f6b=_['map'](_0x430d55,_0x28814f);}return _0x1c9f6b;}function getCustomFields(_0x1377b0,_0x22f6b6){var _0x1b8388=[];var _0x201941={'custom_fields':{}};if(_0x1377b0[_0xa55c('0x28')]>0x0){_[_0xa55c('0x29')](_0x1377b0,function(_0x52d37f){if(_[_0xa55c('0x2a')](['string',_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x2d')]&&!_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0x52d37f['nameField'][_0xa55c('0x2f')]()]=_0x52d37f[_0xa55c('0x30')][_0xa55c('0x1f')]();}else if(_[_0xa55c('0x2a')]([_0xa55c('0x31'),_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x52d37f['content']['toString']();}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x34')&&_0x52d37f['variableName']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x35')]]&&(_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f[_0xa55c('0x35')]][_0xa55c('0x1f')]());}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x36')&&_0x52d37f['Variable']&&_0x52d37f['Variable']['name']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x37')]['name'][_0xa55c('0x2f')]()]&&(_0x201941['custom_fields'][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f['Variable'][_0xa55c('0x38')][_0xa55c('0x2f')]()][_0xa55c('0x1f')]());}});}if(_0x201941['priority']){_0x201941[_0xa55c('0x39')]=Number(_0x201941[_0xa55c('0x39')]);}return _0x201941;}function getTicket(_0x47e93c,_0x6f9c4c,_0x194e78,_0x4d9083,_0x529ff8){logger[_0xa55c('0xb')]('Creating\x20new\x20ticket...');var _0x1e75dc=_[_0xa55c('0x3a')]({'subject':intUtil['getString'](_0x4d9083['Subjects'],_0x529ff8,'\x20'),'type':'phone','status':'new','labels':[_0xa55c('0x3b'),_0xa55c('0x3c'),_0xa55c('0x3d')][_0xa55c('0x3e')](getTags(_0x4d9083[_0xa55c('0x3f')],'name')),'description':intUtil[_0xa55c('0x40')](_0x4d9083[_0xa55c('0x41')],_0x529ff8,'\x0a'),'_links':{'assigned_user':{'href':util[_0xa55c('0xd')](_0xa55c('0x42'),_0x6f9c4c['id']),'class':_0xa55c('0x43')}},'message':{'direction':'in','body':intUtil[_0xa55c('0x40')](_0x4d9083['Descriptions'],_0x529ff8,'\x0a')}},getCustomFields(_0x4d9083[_0xa55c('0x44')],_0x529ff8));return request({'uri':util['format']('%s/customers/%d/cases',_0x47e93c[_0xa55c('0xf')],_0x194e78['id']),'method':_0xa55c('0x27'),'body':_0x1e75dc});}exports['queue']=function(_0x2bd98b,_0x508bd3,_0x5f25f7,_0x2f8449,_0x3fea03,_0x1630ac){var _0x540337,_0x1b2708;_0x1630ac[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1630ac[_0xa55c('0xf')]);_0x1630ac['serverUrl']=intUtil[_0xa55c('0x45')](_0x1630ac[_0xa55c('0x46')]);if(_0x3fea03&&_0x3fea03['monitor_format']){logger[_0xa55c('0xb')](_0xa55c('0x47'),'Recording\x20is\x20enabled!');_0x508bd3[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1630ac['serverUrl'],_0x508bd3[_0xa55c('0x4a')],md5(_0x508bd3['uniqueid']));}else{_0x508bd3[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1630ac);return getUser(_0x1630ac,_0x2f8449[_0xa55c('0x4c')])['then'](function(_0x41eab1){_0x540337=_0x41eab1;logger[_0xa55c('0xb')]('The\x20User\x20ID\x20is:',_0x540337['id']);return getEndUser(_0x1630ac,_0x508bd3[_0xa55c('0x4d')],_0x508bd3[_0xa55c('0x4e')]);})['then'](function(_0x11ff1d){_0x1b2708=_0x11ff1d;logger[_0xa55c('0xb')]('The\x20Enduser\x20ID\x20is:',_0x1b2708['id']);return getTicket(_0x1630ac,_0x540337,_0x1b2708,_0x5f25f7,_0x508bd3);})[_0xa55c('0x10')](function(_0x81cee8){if(_0x81cee8){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger['info'](_0xa55c('0x50'),_0x81cee8['id']);switch(_0x1630ac['type']){case _0xa55c('0x51'):logger[_0xa55c('0xb')](_0xa55c('0x47'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449['name']),_0xa55c('0x53'),{'recordId':_0x81cee8['id']});break;case _0xa55c('0x54'):logger[_0xa55c('0xb')](_0xa55c('0x47'),_0xa55c('0x55'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449[_0xa55c('0x38')]),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')]('https://xcally.desk.com/web/agent/case/%d',_0x81cee8['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x47'),_0xa55c('0x58'));}}})['catch'](function(_0x4c3095){console[_0xa55c('0x57')](_0x4c3095);logger['error'](_0xa55c('0x47'),JSON['stringify'](_0x4c3095));});};exports[_0xa55c('0x59')]=function(_0x228df4,_0x181802,_0x3f9313,_0x2ecf79,_0x5b1cf3,_0x44b7c1,_0x4607ca){var _0x4b85cc,_0x3929a6;_0x44b7c1[_0xa55c('0xf')]=intUtil[_0xa55c('0x45')](_0x44b7c1[_0xa55c('0xf')]);_0x44b7c1['serverUrl']=intUtil['stripTrailingSlash'](_0x44b7c1[_0xa55c('0x46')]);if(_0x4607ca&&_0x4607ca[_0xa55c('0x5a')]&&_0x4607ca[_0xa55c('0x5a')]!==_0xa55c('0x5b')){logger['info'](_0xa55c('0x5c'),'Recording\x20is\x20enabled!');_0x181802[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x44b7c1[_0xa55c('0x46')],_0x181802[_0xa55c('0x4a')],md5(_0x181802['uniqueid']));}headers[_0xa55c('0x4b')]=getAuth(_0x44b7c1);return getUser(_0x44b7c1,_0x2ecf79['email'])[_0xa55c('0x10')](function(_0x157afe){_0x4b85cc=_0x157afe;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0x4b85cc['id']);return getEndUser(_0x44b7c1,_0x181802[_0xa55c('0x5e')],_0x181802[_0xa55c('0x5f')]);})[_0xa55c('0x10')](function(_0x53e2be){_0x3929a6=_0x53e2be;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3929a6['id']);return getTicket(_0x44b7c1,_0x4b85cc,_0x3929a6,_0x3f9313,_0x181802);})[_0xa55c('0x10')](function(_0x23a30e){if(_0x23a30e){logger[_0xa55c('0xb')]('Ticket\x20created!');logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x23a30e['id']);switch(_0x44b7c1[_0xa55c('0x2c')]){case _0xa55c('0x51'):logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x61'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2ecf79[_0xa55c('0x38')]),_0xa55c('0x53'),{'recordId':_0x23a30e['id']});break;case'newTab':logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x55'));emit(util['format'](_0xa55c('0x52'),_0x2ecf79['name']),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')](_0xa55c('0x62'),_0x44b7c1[_0xa55c('0xf')],_0x23a30e['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x5c'),_0xa55c('0x58'));}}})[_0xa55c('0x63')](function(_0x14b515){logger[_0xa55c('0x57')]('[OUTBOUND]',JSON[_0xa55c('0x17')](_0x14b515));});};exports[_0xa55c('0x64')]=function(_0x4ef914,_0x18b928,_0x2b8b88,_0x3e3b4b,_0x9fe234,_0x1b8b06){var _0xa38271,_0x3cef1f;_0x1b8b06[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1b8b06[_0xa55c('0xf')]);_0x1b8b06[_0xa55c('0x46')]=intUtil[_0xa55c('0x45')](_0x1b8b06[_0xa55c('0x46')]);if(_0x9fe234&&_0x9fe234[_0xa55c('0x65')]){logger[_0xa55c('0xb')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',_0xa55c('0x68'));_0x18b928['recordingURL']=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1b8b06[_0xa55c('0x46')],_0x18b928[_0xa55c('0x4a')],md5(_0x18b928[_0xa55c('0x4a')]));}else{_0x18b928[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1b8b06);return getUser(_0x1b8b06)[_0xa55c('0x10')](function(_0x2e4cf7){_0xa38271=_0x2e4cf7;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0xa38271['id']);return getEndUser(_0x1b8b06,_0x18b928['calleridname'],_0x18b928[_0xa55c('0x4e')]);})['then'](function(_0x1228a4){_0x3cef1f=_0x1228a4;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3cef1f['id']);return getTicket(_0x1b8b06,_0xa38271,_0x3cef1f,_0x2b8b88,_0x18b928);})['then'](function(_0x4d9722){if(_0x4d9722){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x4d9722['id']);}})['catch'](function(_0x149cb9){logger[_0xa55c('0x57')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',JSON[_0xa55c('0x17')](_0x149cb9));});};
\ No newline at end of file
index 274e2ad..4004e71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4227=[']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','unmanaged','ticketId','inspect','lodash','bluebird','request-promise','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','defaults','redis','socket.io-emitter','clientId','remoteUri','username','password','clientSecret','then','access_token','error','toUpperCase','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','userEmail','catch','outbound','calleridnum','POST','contacts','/systemusers(','headers','lastIndexOf','enduserId','destcalleridnum','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','contactid',']\x20Enduser\x20Created!','forEach','type','nameField','customField','idField','toLowerCase','substring','indexOf','ticketType','incident','incidents','assign','getString','Fields','phonecall','phonecalls','Subjects','/contacts(','queue','format','user:%s','stripTrailingSlash','serverUrl','callDirection','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:'];(function(_0x4b3a7a,_0x4212cb){var _0x4abc37=function(_0x4ca611){while(--_0x4ca611){_0x4b3a7a['push'](_0x4b3a7a['shift']());}};_0x4abc37(++_0x4212cb);}(_0x4227,0x189));var _0x7422=function(_0x48f621,_0x4bbfbb){_0x48f621=_0x48f621-0x0;var _0x10dcf0=_0x4227[_0x48f621];return _0x10dcf0;};'use strict';var _=require(_0x7422('0x0'));var BPromise=require(_0x7422('0x1'));var rp=require(_0x7422('0x2'));var util=require('util');var intUtil=require(_0x7422('0x3'));var md5=require(_0x7422('0x4'));var Redis=require(_0x7422('0x5'));var logger=require(_0x7422('0x6'))(_0x7422('0x7'));var config=require(_0x7422('0x8'));config['redis']=_[_0x7422('0x9')](config[_0x7422('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x7422('0xb'))(new Redis(config[_0x7422('0xa')]));function getAuthToken(_0x5a0169,_0x46a5f6,_0x4d65b2){var _0x4fb6aa={'method':'POST','uri':_0x46a5f6,'form':{'client_id':_0x5a0169[_0x7422('0xc')],'resource':_0x5a0169[_0x7422('0xd')],'username':_0x5a0169[_0x7422('0xe')],'password':_0x5a0169[_0x7422('0xf')],'grant_type':_0x7422('0xf'),'client_secret':_0x5a0169[_0x7422('0x10')]},'json':!![]};return rp(_0x4fb6aa)[_0x7422('0x11')](function(_0xacfc52){return _0xacfc52[_0x7422('0x12')];})['catch'](function(_0x32493e){logger[_0x7422('0x13')]('['+[_0x4d65b2[_0x7422('0x14')]()]+']\x20Wrong\x20credentials!');return _0x32493e[_0x7422('0x15')];});}function getUser(_0x971fe9,_0x41e94f,_0x535dc3,_0x530708,_0x36e485,_0x59c200){return new BPromise(function(_0x3d6365,_0xc5f8a1){return getAuthToken(_0x41e94f,_0x530708,_0x59c200)['then'](function(_0x6d1005){var _0x27b038={'method':_0x7422('0x16'),'uri':_0x36e485+_0x7422('0x17'),'headers':{'Authorization':_0x7422('0x18')+_0x6d1005,'OData-Version':_0x7422('0x19')},'json':!![]};return rp(_0x27b038);})[_0x7422('0x11')](function(_0x12e678){var _0x43a849=_0x12e678[_0x7422('0x1a')];var _0x55385f=![];var _0x274ee6=null;if(!_[_0x7422('0x1b')](_0x535dc3)){if(intUtil[_0x7422('0x1c')](_0x535dc3[_0x7422('0x1d')])){_0x971fe9['userEmail']=_0x535dc3[_0x7422('0x1d')];for(_0x274ee6=0x0;_0x274ee6<_0x43a849[_0x7422('0x1e')];_0x274ee6++){if(_0x43a849[_0x274ee6][_0x7422('0x1f')]===_0x535dc3[_0x7422('0x1d')]&&!_0x43a849[_0x274ee6][_0x7422('0x20')]){_0x55385f=!![];logger[_0x7422('0x21')]('['+[_0x59c200[_0x7422('0x14')]()]+_0x7422('0x22')+_0x43a849[_0x274ee6][_0x7422('0x23')]+'!');_0x971fe9[_0x7422('0x24')]=_0x43a849[_0x274ee6]['systemuserid'];}}}}if(!_0x55385f){logger[_0x7422('0x21')]('['+[_0x59c200[_0x7422('0x14')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x971fe9[_0x7422('0x25')]=_0x41e94f['username'];for(_0x274ee6=0x0;_0x274ee6<_0x43a849[_0x7422('0x1e')];_0x274ee6++){if(_0x43a849[_0x274ee6][_0x7422('0x1f')]===_0x41e94f['username']){_0x971fe9[_0x7422('0x24')]=_0x43a849[_0x274ee6][_0x7422('0x23')];}}}_0x3d6365(_0x971fe9);})[_0x7422('0x26')](function(_0x5a4a41){_0xc5f8a1(_0x5a4a41[_0x7422('0x15')]);});});}function createEndUser(_0x2e7059,_0x874679,_0x265f02,_0x5387f8,_0x4521f5,_0x454a03){return new BPromise(function(_0x430fc9,_0x259c8e){return getAuthToken(_0x874679,_0x265f02,_0x454a03)['then'](function(_0xed0d58){var _0x2bc318=_0x454a03['toLowerCase']()===_0x7422('0x27')?_0x4521f5['destcalleridnum']:_0x4521f5[_0x7422('0x28')];var _0x462368={'method':_0x7422('0x29'),'uri':_0x5387f8+_0x7422('0x2a'),'body':{'telephone1':_0x2bc318,'fullname':_0x2bc318,'firstname':_0x2bc318,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x7422('0x2b')+_0x2e7059['userId']+')'},'headers':{'Authorization':_0x7422('0x18')+_0xed0d58,'OData-Version':_0x7422('0x19')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x462368);})[_0x7422('0x11')](function(_0x4d6470){var _0x330ff5=_0x4d6470[_0x7422('0x2c')]['odata-entityid'];var _0x31f5a7=_0x330ff5['substring'](_0x330ff5['lastIndexOf']('(')+0x1,_0x330ff5[_0x7422('0x2d')](')'));_0x2e7059[_0x7422('0x2e')]=_0x31f5a7;_0x430fc9(_0x2e7059);})[_0x7422('0x26')](function(_0x412e13){_0x259c8e(_0x412e13[_0x7422('0x15')]);});});}function getEndUser(_0x4f180f,_0x48cdf0,_0x5a3675,_0x1416ca,_0x34aa5b,_0x187ed6){return new BPromise(function(_0x3de49e,_0x12112e){var _0xbe3464=_0x187ed6['toLowerCase']()===_0x7422('0x27')?_0x34aa5b[_0x7422('0x2f')]:_0x34aa5b[_0x7422('0x28')];return getAuthToken(_0x48cdf0,_0x5a3675,_0x187ed6)[_0x7422('0x11')](function(_0x2fe2f4){var _0x506b66={'method':_0x7422('0x16'),'uri':_0x1416ca+_0x7422('0x30')+_0xbe3464[_0x7422('0x31')]('+',_0x7422('0x32'))+'\x27','headers':{'Authorization':_0x7422('0x18')+_0x2fe2f4,'If-None-Match':null,'OData-Version':_0x7422('0x19')},'json':!![]};return rp(_0x506b66);})['then'](function(_0x1bd0a2){var _0x1c53c2=null;if(_0x1bd0a2){var _0x4b57a8=_0x1bd0a2[_0x7422('0x1a')];var _0x3e683a=![];for(_0x1c53c2=0x0;_0x1c53c2<_0x4b57a8[_0x7422('0x1e')];_0x1c53c2++){if(_0x4b57a8[_0x1c53c2][_0x7422('0x33')]===_0xbe3464){_0x3e683a=!![];_0x4f180f['enduserId']=_0x4b57a8[_0x1c53c2][_0x7422('0x34')];}}if(_0x3e683a){_0x3de49e(_0x4f180f);}else{return createEndUser(_0x4f180f,_0x48cdf0,_0x5a3675,_0x1416ca,_0x34aa5b,_0x187ed6)[_0x7422('0x11')](function(_0x3010e0){logger['info']('['+[_0x187ed6[_0x7422('0x14')]()]+']\x20Enduser\x20created!',_0x3010e0[_0x7422('0x2e')]);_0x3de49e(_0x3010e0);});}}else{return createEndUser(_0x4f180f,_0x48cdf0,_0x5a3675,_0x1416ca,_0x34aa5b,_0x187ed6)['then'](function(_0x28c914){logger[_0x7422('0x21')]('['+[_0x187ed6[_0x7422('0x14')]()]+_0x7422('0x35'),_0x28c914[_0x7422('0x2e')]);_0x3de49e(_0x28c914);});}});});}function getCustomFields(_0x272fef,_0x4be293,_0x2f5d85){var _0x37e48c={};if(_0x272fef['length']>0x0){_[_0x7422('0x36')](_0x272fef,function(_0x55fb51){if(_['includes'](['string','picklist'],_0x55fb51[_0x7422('0x37')])&&_0x55fb51[_0x7422('0x38')]&&!_0x55fb51[_0x7422('0x39')]){var _0x192177=_0x55fb51[_0x7422('0x3a')][_0x7422('0x3b')]();var _0x2f8c3a=_0x192177[_0x7422('0x3c')](0x0,_0x192177['indexOf']('_'));var _0x1ff6aa=_0x192177[_0x7422('0x3c')](_0x192177[_0x7422('0x3d')]('_')+0x1);if(_0x2f8c3a===_0x2f5d85){_0x37e48c[_0x1ff6aa]=_0x55fb51['content'];}}});}return _0x37e48c;}function getTicket(_0x3daf18,_0x5d0129,_0x573fa1,_0x6bdfc9,_0x4dcc0a,_0xa0b58b,_0x381642){return new BPromise(function(_0x2b3f27,_0x276464){var _0x542f22;return getAuthToken(_0x5d0129,_0x573fa1,_0x381642)[_0x7422('0x11')](function(_0x47e56a){if(_0xa0b58b[_0x7422('0x3e')]===_0x7422('0x3f')){_0x542f22={'method':'POST','uri':_0x6bdfc9+_0x7422('0x40'),'body':Object[_0x7422('0x41')]({},{'title':intUtil[_0x7422('0x42')](_0xa0b58b['Subjects'],_0x4dcc0a,'\x20'),'description':intUtil[_0x7422('0x42')](_0xa0b58b['Descriptions'],_0x4dcc0a,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x3daf18['enduserId']+')','ownerid@odata.bind':_0x7422('0x2b')+_0x3daf18[_0x7422('0x24')]+')','caseorigincode':'1'},getCustomFields(_0xa0b58b[_0x7422('0x43')],_0x4dcc0a,_0xa0b58b[_0x7422('0x3e')])),'headers':{'Authorization':'Bearer\x20'+_0x47e56a,'OData-Version':_0x7422('0x19')},'json':!![],'resolveWithFullResponse':!![]};}if(_0xa0b58b[_0x7422('0x3e')]===_0x7422('0x44')){_0x542f22={'method':'POST','uri':_0x6bdfc9+_0x7422('0x45'),'body':Object['assign']({},{'subject':intUtil[_0x7422('0x42')](_0xa0b58b[_0x7422('0x46')],_0x4dcc0a,'\x20'),'phonenumber':String(_0x4dcc0a[_0x7422('0x28')]),'description':intUtil[_0x7422('0x42')](_0xa0b58b['Descriptions'],_0x4dcc0a,'\x0a'),'regardingobjectid_contact@odata.bind':_0x7422('0x47')+_0x3daf18[_0x7422('0x2e')]+')','ownerid@odata.bind':_0x7422('0x2b')+_0x3daf18[_0x7422('0x24')]+')','directioncode':_0x3daf18['callDirection']===_0x7422('0x48')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x7422('0x2b')+_0x3daf18[_0x7422('0x24')]+')','participationtypemask':_0x3daf18['callDirection']===_0x7422('0x48')?0x2:0x1},{'partyid_contact@odata.bind':_0x7422('0x47')+_0x3daf18[_0x7422('0x2e')]+')','participationtypemask':_0x3daf18['callDirection']===_0x7422('0x48')?0x1:0x2}]},getCustomFields(_0xa0b58b[_0x7422('0x43')],_0x4dcc0a,_0xa0b58b[_0x7422('0x3e')])),'headers':{'Authorization':'Bearer\x20'+_0x47e56a,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x542f22);})[_0x7422('0x11')](function(_0x375f50){var _0x1a1e10=_0x375f50[_0x7422('0x2c')]['odata-entityid'];var _0x2a51f3=_0x1a1e10[_0x7422('0x3c')](_0x1a1e10[_0x7422('0x2d')]('(')+0x1,_0x1a1e10[_0x7422('0x2d')](')'));_0x3daf18['ticketId']=_0x2a51f3;_0x2b3f27(_0x3daf18);})['catch'](function(_0xd87338){_0x276464(_0xd87338[_0x7422('0x15')]);});});}function emit(_0xbb18b6,_0x8fad96,_0x3a3d35,_0x1180b8){var _0x54d8db={'uri':util['format']('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0xbb18b6,_0x3a3d35,_0x1180b8)};io['to'](util[_0x7422('0x49')](_0x7422('0x4a'),_0x8fad96))['emit']('trigger:browser:url',_0x54d8db);}exports['cs']=function(_0x446d44,_0x551b8d,_0x1ca9f3,_0x329020,_0x389682,_0x103918,_0x11170e,_0x2a46ac){var _0x40a137={};_0x103918[_0x7422('0xd')]=intUtil[_0x7422('0x4b')](_0x103918[_0x7422('0xd')]);_0x103918[_0x7422('0x4c')]=intUtil[_0x7422('0x4b')](_0x103918['serverUrl']);_0x40a137[_0x7422('0x4d')]=_0x2a46ac===_0x7422('0x48')||_0x2a46ac==='unmanaged'?_0x7422('0x48'):_0x7422('0x27');var _0x4250bb=util[_0x7422('0x49')](_0x7422('0x4e'),_0x103918[_0x7422('0xd')]);var _0x353d0f=util[_0x7422('0x49')](_0x7422('0x4f'),_0x103918['tenantId']);var _0x3e3861=util[_0x7422('0x49')](_0x7422('0x50'),_0x103918[_0x7422('0x4c')],_0x551b8d[_0x7422('0x51')],md5(_0x551b8d[_0x7422('0x51')]));if(_0x389682&&_0x389682['monitor_format']){logger['info'](_0x7422('0x52'),_0x7422('0x53'));_0x551b8d['recordingURL']=_0x3e3861;}else if(_0x11170e&&_0x11170e[_0x7422('0x54')]&&_0x11170e['recordingFormat']!==_0x7422('0x55')){logger['info'](_0x7422('0x56'),_0x7422('0x53'));_0x551b8d[_0x7422('0x57')]=_0x3e3861;}else{_0x551b8d[_0x7422('0x57')]='';}return getUser(_0x40a137,_0x103918,_0x329020,_0x353d0f,_0x4250bb,_0x2a46ac)[_0x7422('0x11')](function(_0x3673cb){logger['info']('['+_0x2a46ac[_0x7422('0x14')]()+_0x7422('0x58'),_0x3673cb['userId']);logger[_0x7422('0x21')]('['+_0x2a46ac[_0x7422('0x14')]()+_0x7422('0x59'),_0x3673cb['userEmail']);return getEndUser(_0x3673cb,_0x103918,_0x353d0f,_0x4250bb,_0x551b8d,_0x2a46ac);})[_0x7422('0x11')](function(_0x4c9b97){logger[_0x7422('0x21')]('['+_0x2a46ac['toUpperCase']()+_0x7422('0x5a'),_0x4c9b97[_0x7422('0x2e')]);logger['info']('['+_0x2a46ac[_0x7422('0x14')]()+_0x7422('0x5b'),_0x551b8d['calleridnum']);return getTicket(_0x4c9b97,_0x103918,_0x353d0f,_0x4250bb,_0x551b8d,_0x1ca9f3,_0x2a46ac);})[_0x7422('0x11')](function(_0x4fbd67){logger[_0x7422('0x21')](util['format']('['+_0x2a46ac[_0x7422('0x14')]()+_0x7422('0x5c'),_0x1ca9f3[_0x7422('0x3e')],_0x4fbd67['ticketId']));logger[_0x7422('0x21')](util['format']('['+_0x2a46ac[_0x7422('0x14')]()+_0x7422('0x5d'),_0x2a46ac));if(_0x2a46ac!==_0x7422('0x5e')){logger[_0x7422('0x21')]('['+_0x2a46ac[_0x7422('0x14')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x103918[_0x7422('0xd')],_0x329020['name'],_0x1ca9f3[_0x7422('0x3e')],_0x4fbd67[_0x7422('0x5f')]);}})['catch'](function(_0x3cc21f){logger[_0x7422('0x13')]('['+_0x2a46ac[_0x7422('0x14')]()+']\x20Error\x20running\x20Dynamics365\x20integration',util[_0x7422('0x60')](_0x3cc21f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xdeed=['includes','string','picklist','nameField','customField','indexOf','incident','incidents','assign','Subjects','getString','Descriptions','/systemusers(','Fields','ticketType','phonecall','phonecalls','/contacts(','callDirection','queue','ticketId','format','emit','trigger:browser:url','serverUrl','stripTrailingSlash','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20ID\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','error',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','clientId','remoteUri','username','password','clientSecret','then','catch','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','isNil','email','length','isdisabled','info',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','internalemailaddress','userId','toLowerCase','outbound','calleridnum','POST','contacts','Bearer\x20','4.0','headers','odata-entityid','substring','lastIndexOf','enduserId','destcalleridnum','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','%2b','telephone1',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach'];(function(_0x55a8c8,_0x34d31d){var _0x2b0e0f=function(_0x5c66ac){while(--_0x5c66ac){_0x55a8c8['push'](_0x55a8c8['shift']());}};_0x2b0e0f(++_0x34d31d);}(_0xdeed,0x1cd));var _0xddee=function(_0x557517,_0x50c2a0){_0x557517=_0x557517-0x0;var _0x572e73=_0xdeed[_0x557517];return _0x572e73;};'use strict';var _=require(_0xddee('0x0'));var BPromise=require(_0xddee('0x1'));var rp=require('request-promise');var util=require('util');var intUtil=require(_0xddee('0x2'));var md5=require(_0xddee('0x3'));var Redis=require(_0xddee('0x4'));var logger=require(_0xddee('0x5'))(_0xddee('0x6'));var config=require(_0xddee('0x7'));config[_0xddee('0x8')]=_[_0xddee('0x9')](config[_0xddee('0x8')],{'host':_0xddee('0xa'),'port':0x18eb});var io=require(_0xddee('0xb'))(new Redis(config[_0xddee('0x8')]));function getAuthToken(_0x41d366,_0x5001dc,_0x55ef71){var _0x3b65f6={'method':'POST','uri':_0x5001dc,'form':{'client_id':_0x41d366[_0xddee('0xc')],'resource':_0x41d366[_0xddee('0xd')],'username':_0x41d366[_0xddee('0xe')],'password':_0x41d366[_0xddee('0xf')],'grant_type':'password','client_secret':_0x41d366[_0xddee('0x10')]},'json':!![]};return rp(_0x3b65f6)[_0xddee('0x11')](function(_0x43ce59){return _0x43ce59['access_token'];})[_0xddee('0x12')](function(_0x146d1d){logger['error']('['+[_0x55ef71[_0xddee('0x13')]()]+_0xddee('0x14'));return _0x146d1d[_0xddee('0x15')];});}function getUser(_0x2cb937,_0x106222,_0x2e77b7,_0x5c2577,_0x4eec4b,_0x230d61){return new BPromise(function(_0xf565e7,_0x524385){return getAuthToken(_0x106222,_0x5c2577,_0x230d61)[_0xddee('0x11')](function(_0x169c9d){var _0x4670c0={'method':_0xddee('0x16'),'uri':_0x4eec4b+_0xddee('0x17'),'headers':{'Authorization':'Bearer\x20'+_0x169c9d,'OData-Version':'4.0'},'json':!![]};return rp(_0x4670c0);})['then'](function(_0x55ead1){var _0x5dfaba=_0x55ead1['value'];var _0x1ebd91=![];var _0x574cb2=null;if(!_[_0xddee('0x18')](_0x2e77b7)){if(intUtil['validateEmail'](_0x2e77b7['email'])){_0x2cb937['userEmail']=_0x2e77b7[_0xddee('0x19')];for(_0x574cb2=0x0;_0x574cb2<_0x5dfaba[_0xddee('0x1a')];_0x574cb2++){if(_0x5dfaba[_0x574cb2]['internalemailaddress']===_0x2e77b7[_0xddee('0x19')]&&!_0x5dfaba[_0x574cb2][_0xddee('0x1b')]){_0x1ebd91=!![];logger[_0xddee('0x1c')]('['+[_0x230d61['toUpperCase']()]+_0xddee('0x1d')+_0x5dfaba[_0x574cb2][_0xddee('0x1e')]+'!');_0x2cb937['userId']=_0x5dfaba[_0x574cb2]['systemuserid'];}}}}if(!_0x1ebd91){logger[_0xddee('0x1c')]('['+[_0x230d61[_0xddee('0x13')]()]+_0xddee('0x1f'));_0x2cb937[_0xddee('0x20')]=_0x106222[_0xddee('0xe')];for(_0x574cb2=0x0;_0x574cb2<_0x5dfaba['length'];_0x574cb2++){if(_0x5dfaba[_0x574cb2][_0xddee('0x21')]===_0x106222[_0xddee('0xe')]){_0x2cb937[_0xddee('0x22')]=_0x5dfaba[_0x574cb2][_0xddee('0x1e')];}}}_0xf565e7(_0x2cb937);})[_0xddee('0x12')](function(_0x3da9c6){_0x524385(_0x3da9c6[_0xddee('0x15')]);});});}function createEndUser(_0x332688,_0x4a9e7c,_0x72960e,_0x8b1712,_0x38249f,_0x3170a1){return new BPromise(function(_0x24c67c,_0x75bab7){return getAuthToken(_0x4a9e7c,_0x72960e,_0x3170a1)[_0xddee('0x11')](function(_0x3cb583){var _0x25e6d0=_0x3170a1[_0xddee('0x23')]()===_0xddee('0x24')?_0x38249f['destcalleridnum']:_0x38249f[_0xddee('0x25')];var _0x5f3be2={'method':_0xddee('0x26'),'uri':_0x8b1712+_0xddee('0x27'),'body':{'telephone1':_0x25e6d0,'fullname':_0x25e6d0,'firstname':_0x25e6d0,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x332688['userId']+')'},'headers':{'Authorization':_0xddee('0x28')+_0x3cb583,'OData-Version':_0xddee('0x29')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x5f3be2);})['then'](function(_0x101515){var _0x545b94=_0x101515[_0xddee('0x2a')][_0xddee('0x2b')];var _0x213250=_0x545b94[_0xddee('0x2c')](_0x545b94[_0xddee('0x2d')]('(')+0x1,_0x545b94['lastIndexOf'](')'));_0x332688[_0xddee('0x2e')]=_0x213250;_0x24c67c(_0x332688);})[_0xddee('0x12')](function(_0x4181bb){_0x75bab7(_0x4181bb['message']);});});}function getEndUser(_0x1b9a65,_0x59b09f,_0x3ed394,_0x5df37f,_0x3346e9,_0x47d009){return new BPromise(function(_0x2c6eec,_0x2dc733){var _0x85af8d=_0x47d009[_0xddee('0x23')]()===_0xddee('0x24')?_0x3346e9[_0xddee('0x2f')]:_0x3346e9['calleridnum'];return getAuthToken(_0x59b09f,_0x3ed394,_0x47d009)[_0xddee('0x11')](function(_0x278155){var _0x4e4ece={'method':_0xddee('0x16'),'uri':_0x5df37f+_0xddee('0x30')+_0x85af8d['replace']('+',_0xddee('0x31'))+'\x27','headers':{'Authorization':_0xddee('0x28')+_0x278155,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x4e4ece);})['then'](function(_0x118568){var _0x1c0b8e=null;if(_0x118568){var _0x18e89e=_0x118568['value'];var _0x21c2a6=![];for(_0x1c0b8e=0x0;_0x1c0b8e<_0x18e89e[_0xddee('0x1a')];_0x1c0b8e++){if(_0x18e89e[_0x1c0b8e][_0xddee('0x32')]===_0x85af8d){_0x21c2a6=!![];_0x1b9a65[_0xddee('0x2e')]=_0x18e89e[_0x1c0b8e]['contactid'];}}if(_0x21c2a6){_0x2c6eec(_0x1b9a65);}else{return createEndUser(_0x1b9a65,_0x59b09f,_0x3ed394,_0x5df37f,_0x3346e9,_0x47d009)['then'](function(_0x28dba2){logger[_0xddee('0x1c')]('['+[_0x47d009[_0xddee('0x13')]()]+_0xddee('0x33'),_0x28dba2['enduserId']);_0x2c6eec(_0x28dba2);});}}else{return createEndUser(_0x1b9a65,_0x59b09f,_0x3ed394,_0x5df37f,_0x3346e9,_0x47d009)[_0xddee('0x11')](function(_0x52af62){logger[_0xddee('0x1c')]('['+[_0x47d009[_0xddee('0x13')]()]+_0xddee('0x34'),_0x52af62['enduserId']);_0x2c6eec(_0x52af62);});}});});}function getCustomFields(_0x1f2568,_0x5f33d0,_0x297f5e){var _0x542b17={};if(_0x1f2568[_0xddee('0x1a')]>0x0){_[_0xddee('0x35')](_0x1f2568,function(_0x5300c2){if(_[_0xddee('0x36')]([_0xddee('0x37'),_0xddee('0x38')],_0x5300c2['type'])&&_0x5300c2[_0xddee('0x39')]&&!_0x5300c2[_0xddee('0x3a')]){var _0x1026c1=_0x5300c2['idField'][_0xddee('0x23')]();var _0x51c30f=_0x1026c1[_0xddee('0x2c')](0x0,_0x1026c1['indexOf']('_'));var _0x3c718c=_0x1026c1[_0xddee('0x2c')](_0x1026c1[_0xddee('0x3b')]('_')+0x1);if(_0x51c30f===_0x297f5e){_0x542b17[_0x3c718c]=_0x5300c2['content'];}}});}return _0x542b17;}function getTicket(_0x3ee688,_0x3babe5,_0x347154,_0x1a28ce,_0x195686,_0x26c9d4,_0x4ea6fb){return new BPromise(function(_0x1c8362,_0x39dbdd){var _0xcb7614;return getAuthToken(_0x3babe5,_0x347154,_0x4ea6fb)[_0xddee('0x11')](function(_0x97adbc){if(_0x26c9d4['ticketType']===_0xddee('0x3c')){_0xcb7614={'method':'POST','uri':_0x1a28ce+_0xddee('0x3d'),'body':Object[_0xddee('0x3e')]({},{'title':intUtil['getString'](_0x26c9d4[_0xddee('0x3f')],_0x195686,'\x20'),'description':intUtil[_0xddee('0x40')](_0x26c9d4[_0xddee('0x41')],_0x195686,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x3ee688['enduserId']+')','ownerid@odata.bind':_0xddee('0x42')+_0x3ee688[_0xddee('0x22')]+')','caseorigincode':'1'},getCustomFields(_0x26c9d4[_0xddee('0x43')],_0x195686,_0x26c9d4['ticketType'])),'headers':{'Authorization':_0xddee('0x28')+_0x97adbc,'OData-Version':_0xddee('0x29')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x26c9d4[_0xddee('0x44')]===_0xddee('0x45')){_0xcb7614={'method':_0xddee('0x26'),'uri':_0x1a28ce+_0xddee('0x46'),'body':Object[_0xddee('0x3e')]({},{'subject':intUtil[_0xddee('0x40')](_0x26c9d4[_0xddee('0x3f')],_0x195686,'\x20'),'phonenumber':String(_0x195686[_0xddee('0x25')]),'description':intUtil[_0xddee('0x40')](_0x26c9d4[_0xddee('0x41')],_0x195686,'\x0a'),'regardingobjectid_contact@odata.bind':_0xddee('0x47')+_0x3ee688['enduserId']+')','ownerid@odata.bind':_0xddee('0x42')+_0x3ee688['userId']+')','directioncode':_0x3ee688[_0xddee('0x48')]===_0xddee('0x49')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xddee('0x42')+_0x3ee688[_0xddee('0x22')]+')','participationtypemask':_0x3ee688[_0xddee('0x48')]===_0xddee('0x49')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x3ee688[_0xddee('0x2e')]+')','participationtypemask':_0x3ee688['callDirection']==='queue'?0x1:0x2}]},getCustomFields(_0x26c9d4[_0xddee('0x43')],_0x195686,_0x26c9d4[_0xddee('0x44')])),'headers':{'Authorization':_0xddee('0x28')+_0x97adbc,'OData-Version':_0xddee('0x29')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0xcb7614);})[_0xddee('0x11')](function(_0x3896a5){var _0x5f0351=_0x3896a5[_0xddee('0x2a')][_0xddee('0x2b')];var _0x43fbcc=_0x5f0351[_0xddee('0x2c')](_0x5f0351[_0xddee('0x2d')]('(')+0x1,_0x5f0351['lastIndexOf'](')'));_0x3ee688[_0xddee('0x4a')]=_0x43fbcc;_0x1c8362(_0x3ee688);})[_0xddee('0x12')](function(_0x4c1ce8){_0x39dbdd(_0x4c1ce8[_0xddee('0x15')]);});});}function emit(_0x25906f,_0x5bf8b7,_0x4aa8bf,_0x116c0f){var _0x30bd4f={'uri':util[_0xddee('0x4b')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x25906f,_0x4aa8bf,_0x116c0f)};io['to'](util[_0xddee('0x4b')]('user:%s',_0x5bf8b7))[_0xddee('0x4c')](_0xddee('0x4d'),_0x30bd4f);}exports['cs']=function(_0x4ec334,_0xe812cc,_0x422538,_0x441de5,_0x316be9,_0x30ffcc,_0x263595,_0x5d02f9){var _0x2d8dfa={};_0x30ffcc[_0xddee('0xd')]=intUtil['stripTrailingSlash'](_0x30ffcc[_0xddee('0xd')]);_0x30ffcc[_0xddee('0x4e')]=intUtil[_0xddee('0x4f')](_0x30ffcc[_0xddee('0x4e')]);_0x2d8dfa[_0xddee('0x48')]=_0x5d02f9===_0xddee('0x49')||_0x5d02f9===_0xddee('0x50')?_0xddee('0x49'):_0xddee('0x24');var _0x479042=util[_0xddee('0x4b')](_0xddee('0x51'),_0x30ffcc[_0xddee('0xd')]);var _0x4bc49a=util['format'](_0xddee('0x52'),_0x30ffcc[_0xddee('0x53')]);var _0x46cc63=util[_0xddee('0x4b')](_0xddee('0x54'),_0x30ffcc[_0xddee('0x4e')],_0xe812cc[_0xddee('0x55')],md5(_0xe812cc['uniqueid']));if(_0x316be9&&_0x316be9[_0xddee('0x56')]){logger[_0xddee('0x1c')](_0xddee('0x57'),'Recording\x20is\x20enabled!');_0xe812cc[_0xddee('0x58')]=_0x46cc63;}else if(_0x263595&&_0x263595['recordingFormat']&&_0x263595[_0xddee('0x59')]!==_0xddee('0x5a')){logger[_0xddee('0x1c')](_0xddee('0x5b'),_0xddee('0x5c'));_0xe812cc['recordingURL']=_0x46cc63;}else{_0xe812cc[_0xddee('0x58')]='';}return getUser(_0x2d8dfa,_0x30ffcc,_0x441de5,_0x4bc49a,_0x479042,_0x5d02f9)['then'](function(_0x10fb6c){logger[_0xddee('0x1c')]('['+_0x5d02f9[_0xddee('0x13')]()+_0xddee('0x5d'),_0x10fb6c[_0xddee('0x22')]);logger['info']('['+_0x5d02f9[_0xddee('0x13')]()+']\x20The\x20User\x20email\x20is:',_0x10fb6c['userEmail']);return getEndUser(_0x10fb6c,_0x30ffcc,_0x4bc49a,_0x479042,_0xe812cc,_0x5d02f9);})['then'](function(_0x45cd12){logger[_0xddee('0x1c')]('['+_0x5d02f9[_0xddee('0x13')]()+_0xddee('0x5e'),_0x45cd12[_0xddee('0x2e')]);logger['info']('['+_0x5d02f9[_0xddee('0x13')]()+_0xddee('0x5f'),_0xe812cc[_0xddee('0x25')]);return getTicket(_0x45cd12,_0x30ffcc,_0x4bc49a,_0x479042,_0xe812cc,_0x422538,_0x5d02f9);})[_0xddee('0x11')](function(_0x3f339a){logger[_0xddee('0x1c')](util[_0xddee('0x4b')]('['+_0x5d02f9[_0xddee('0x13')]()+_0xddee('0x60'),_0x422538[_0xddee('0x44')],_0x3f339a[_0xddee('0x4a')]));logger[_0xddee('0x1c')](util[_0xddee('0x4b')]('['+_0x5d02f9[_0xddee('0x13')]()+_0xddee('0x61'),_0x5d02f9));if(_0x5d02f9!==_0xddee('0x50')){logger[_0xddee('0x1c')]('['+_0x5d02f9[_0xddee('0x13')]()+']',_0xddee('0x62'));emit(_0x30ffcc[_0xddee('0xd')],_0x441de5[_0xddee('0x63')],_0x422538[_0xddee('0x44')],_0x3f339a[_0xddee('0x4a')]);}})[_0xddee('0x12')](function(_0x28ee6f){logger[_0xddee('0x64')]('['+_0x5d02f9['toUpperCase']()+_0xddee('0x65'),util[_0xddee('0x66')](_0x28ee6f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index ae4e2fc..bd676c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59e4=['POST','Enduser\x20created.','Basic\x20%s','base64','debug','[HTTP]','stringify','map','forEach','includes','string','picklist','type','nameField','customField','content','toString','idField','variableName','push','customVariable','Variable','name','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','unmanaged','lastevent','toUpperCase','lodash','md5','util','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','emit','info','merge','format','Caller\x20-\x20%s','calleridname','getString','Subjects','<br>','keyBy','custom_fields','value','%s/api/v2/tickets','remoteUri','then','Ticket\x20created!','%s/api/v2/agents','length','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!'];(function(_0x2bdf23,_0x249d86){var _0x3c4163=function(_0x212c7a){while(--_0x212c7a){_0x2bdf23['push'](_0x2bdf23['shift']());}};_0x3c4163(++_0x249d86);}(_0x59e4,0x89));var _0x459e=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0x59e4[_0x87b0ff];return _0x3bc0b2;};'use strict';var _=require(_0x459e('0x0'));var rp=require('request-promise');var md5=require(_0x459e('0x1'));var util=require(_0x459e('0x2'));var Redis=require('ioredis');var intUtil=require(_0x459e('0x3'));var config=require('../../../../config/environment');var logger=require(_0x459e('0x4'))('freshdesk');config['redis']=_[_0x459e('0x5')](config[_0x459e('0x6')],{'host':_0x459e('0x7'),'port':0x18eb});var io=require(_0x459e('0x8'))(new Redis(config[_0x459e('0x6')]));var headers={'Content-Type':'application/json','Accept':_0x459e('0x9')};function emit(_0x55f401,_0x3b51a3,_0x5045f3){io['to'](_0x55f401)[_0x459e('0xa')](_0x3b51a3,_0x5045f3);}function getTicket(_0x13906a,_0x33f557,_0x449032,_0x1068db,_0x4fbc52){logger[_0x459e('0xb')]('Creating\x20new\x20ticket...');var _0x3ec962=_[_0x459e('0xc')]({'responder_id':_0x33f557['id'],'requester_id':_0x449032['id'],'name':util[_0x459e('0xd')](_0x459e('0xe'),_0x4fbc52[_0x459e('0xf')]),'phone':_0x4fbc52['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x459e('0x10')](_0x1068db[_0x459e('0x11')],_0x4fbc52,'\x20'),'description':intUtil[_0x459e('0x10')](_0x1068db['Descriptions'],_0x4fbc52,_0x459e('0x12')),'tags':getTags(_0x1068db['Tags'],'name')},getCustomFields(_0x1068db['Fields'],_0x4fbc52));_0x3ec962['custom_fields']=_['mapValues'](_[_0x459e('0x13')](_0x3ec962[_0x459e('0x14')],'id'),_0x459e('0x15'));return request({'uri':util['format'](_0x459e('0x16'),_0x13906a[_0x459e('0x17')]),'method':'POST','body':_0x3ec962})[_0x459e('0x18')](function(_0x39cbcf){logger['info'](_0x459e('0x19'));return _0x39cbcf;});}function getUser(_0x24bcdb,_0xca6a4d){if(intUtil['validateEmail'](_0xca6a4d)){return request({'uri':util['format'](_0x459e('0x1a'),_0x24bcdb[_0x459e('0x17')]),'qs':{'email':_0xca6a4d}})[_0x459e('0x18')](function(_0x4ab8ea){if(_0x4ab8ea[_0x459e('0x1b')]){logger['info']('Agent\x20found!');return _[_0x459e('0x1c')](_0x4ab8ea,function(_0x5910d2){return _0x5910d2[_0x459e('0x1d')]['email']===_0xca6a4d;});}else{logger['info'](_0x459e('0x1e'));return request({'uri':util[_0x459e('0xd')]('%s/api/v2/agents/me',_0x24bcdb[_0x459e('0x17')])})[_0x459e('0x18')](function(_0x1ca48c){logger[_0x459e('0xb')](_0x459e('0x1f'));return _0x1ca48c;});}});}else{logger['info'](_0x459e('0x20'));return request({'uri':util[_0x459e('0xd')](_0x459e('0x21'),_0x24bcdb['remoteUri'])})[_0x459e('0x18')](function(_0x549b5f){logger['info'](_0x459e('0x1f'));return _0x549b5f;});}}function getEndUser(_0x44b1fc,_0x5246fe,_0x49c16c){logger[_0x459e('0xb')]('Searching\x20enduser\x20with\x20phone',_0x49c16c);return request({'uri':util[_0x459e('0xd')](_0x459e('0x22'),_0x44b1fc[_0x459e('0x17')]),'qs':{'phone':_0x49c16c}})[_0x459e('0x18')](function(_0x50b50e){if(_0x50b50e[_0x459e('0x1b')]){logger[_0x459e('0xb')](_0x459e('0x23'));return _[_0x459e('0x1c')](_0x50b50e,{'phone':_0x49c16c});}else{logger[_0x459e('0xb')](_0x459e('0x24'));return request({'uri':util[_0x459e('0xd')](_0x459e('0x22'),_0x44b1fc[_0x459e('0x17')]),'method':_0x459e('0x25'),'body':{'name':_0x5246fe,'phone':_0x49c16c}})[_0x459e('0x18')](function(_0x170848){logger[_0x459e('0xb')](_0x459e('0x26'));return _0x170848;});}});}function getAuth(_0x55fa50){return util[_0x459e('0xd')](_0x459e('0x27'),new Buffer(_0x55fa50['apiKey']+':X')['toString'](_0x459e('0x28')));}function request(_0x36d58b){logger[_0x459e('0x29')](_0x459e('0x2a'),JSON[_0x459e('0x2b')](_0x36d58b));return rp(_[_0x459e('0x5')](_0x36d58b,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x16cd2c,_0x5e2339){var _0x1ade7c=[];if(_0x16cd2c&&_0x16cd2c[_0x459e('0x1b')]>0x0){_0x1ade7c=_[_0x459e('0x2c')](_0x16cd2c,_0x5e2339);}return _0x1ade7c;}function getCustomFields(_0x4fdb8d,_0x25d151){var _0x3f4686=[];var _0x5280d8={'custom_fields':[]};if(_0x4fdb8d[_0x459e('0x1b')]>0x0){_[_0x459e('0x2d')](_0x4fdb8d,function(_0x12d68d){if(_[_0x459e('0x2e')]([_0x459e('0x2f'),_0x459e('0x30')],_0x12d68d[_0x459e('0x31')])&&_0x12d68d[_0x459e('0x32')]&&!_0x12d68d[_0x459e('0x33')]){_0x5280d8[_0x12d68d['nameField']['toLowerCase']()]=_0x12d68d[_0x459e('0x34')][_0x459e('0x35')]();}else if(_[_0x459e('0x2e')]([_0x459e('0x2f'),_0x459e('0x30')],_0x12d68d[_0x459e('0x31')])&&_0x12d68d[_0x459e('0x36')]&&_0x12d68d['customField']){_0x5280d8[_0x459e('0x14')]['push']({'id':_0x12d68d[_0x459e('0x36')],'value':_0x12d68d[_0x459e('0x34')][_0x459e('0x35')]()});}else if(_0x12d68d[_0x459e('0x31')]==='variable'&&_0x12d68d[_0x459e('0x37')]&&_0x12d68d[_0x459e('0x36')]&&_0x12d68d['customField']){_0x25d151[_0x12d68d[_0x459e('0x37')]]&&_0x5280d8[_0x459e('0x14')][_0x459e('0x38')]({'id':_0x12d68d['idField'],'value':_0x25d151[_0x12d68d[_0x459e('0x37')]][_0x459e('0x35')]()});}else if(_0x12d68d[_0x459e('0x31')]===_0x459e('0x39')&&_0x12d68d[_0x459e('0x3a')]&&_0x12d68d[_0x459e('0x3a')][_0x459e('0x3b')]&&_0x12d68d[_0x459e('0x36')]&&_0x12d68d[_0x459e('0x33')]){_0x25d151[_0x12d68d['Variable'][_0x459e('0x3b')][_0x459e('0x3c')]()]&&_0x5280d8[_0x459e('0x14')][_0x459e('0x38')]({'id':_0x12d68d[_0x459e('0x36')],'value':_0x25d151[_0x12d68d[_0x459e('0x3a')][_0x459e('0x3b')][_0x459e('0x3c')]()][_0x459e('0x35')]()});}});}return _0x5280d8;}exports[_0x459e('0x3d')]=function(_0x5934c8,_0x12e617,_0x48848f,_0x46a2b5,_0x318dec,_0x233c98){var _0x5d3491,_0x388cd1;_0x233c98['remoteUri']=intUtil[_0x459e('0x3e')](_0x233c98[_0x459e('0x17')]);_0x233c98[_0x459e('0x3f')]=intUtil[_0x459e('0x3e')](_0x233c98[_0x459e('0x3f')]);if(_0x318dec&&_0x318dec[_0x459e('0x40')]){logger[_0x459e('0xb')](_0x459e('0x41'),'Recording\x20is\x20enabled!');_0x12e617['recordingURL']=util[_0x459e('0xd')](_0x459e('0x42'),_0x233c98[_0x459e('0x3f')],_0x12e617[_0x459e('0x43')],md5(_0x12e617['uniqueid']));}else{_0x12e617[_0x459e('0x44')]='';}headers[_0x459e('0x45')]=getAuth(_0x233c98);return getUser(_0x233c98,_0x46a2b5[_0x459e('0x46')])[_0x459e('0x18')](function(_0x1c0690){_0x5d3491=_0x1c0690;logger['info'](_0x459e('0x47'),_0x5d3491['id']);return getEndUser(_0x233c98,_0x12e617[_0x459e('0xf')],_0x12e617[_0x459e('0x48')]);})[_0x459e('0x18')](function(_0x3b82f3){_0x388cd1=_0x3b82f3;logger['info']('The\x20Enduser\x20ID\x20is:',_0x388cd1['id']);return getTicket(_0x233c98,_0x5d3491,_0x388cd1,_0x48848f,_0x12e617);})[_0x459e('0x18')](function(_0x31dc8e){if(_0x31dc8e&&_0x31dc8e['id']){logger[_0x459e('0xb')](_0x459e('0x19'));logger[_0x459e('0xb')](_0x459e('0x49'),_0x31dc8e['id']);logger['info'](_0x459e('0x41'),_0x459e('0x4a'));emit(util[_0x459e('0xd')](_0x459e('0x4b'),_0x46a2b5[_0x459e('0x3b')]),'trigger:browser:url',{'uri':util[_0x459e('0xd')](_0x459e('0x4c'),_0x233c98['remoteUri'],_0x31dc8e['id'])});}})[_0x459e('0x4d')](function(_0x41d8a8){logger[_0x459e('0x4e')](_0x459e('0x41'),JSON[_0x459e('0x2b')](_0x41d8a8));});};exports[_0x459e('0x4f')]=function(_0x5167d5,_0x849cc0,_0xe8985b,_0x40201c,_0x3bace2,_0x5e0b6a,_0x30281a){var _0x4f9ffe,_0x267443;_0x5e0b6a[_0x459e('0x17')]=intUtil['stripTrailingSlash'](_0x5e0b6a[_0x459e('0x17')]);_0x5e0b6a[_0x459e('0x3f')]=intUtil['stripTrailingSlash'](_0x5e0b6a[_0x459e('0x3f')]);if(_0x30281a&&_0x30281a[_0x459e('0x50')]&&_0x30281a[_0x459e('0x50')]!==_0x459e('0x51')){logger[_0x459e('0xb')](_0x459e('0x52'),_0x459e('0x53'));_0x849cc0[_0x459e('0x44')]=util[_0x459e('0xd')](_0x459e('0x42'),_0x5e0b6a[_0x459e('0x3f')],_0x849cc0[_0x459e('0x43')],md5(_0x849cc0['uniqueid']));}headers['Authorization']=getAuth(_0x5e0b6a);return getUser(_0x5e0b6a,_0x40201c['email'])[_0x459e('0x18')](function(_0x5894d3){_0x4f9ffe=_0x5894d3;logger[_0x459e('0xb')]('The\x20User\x20ID\x20is:',_0x4f9ffe['id']);return getEndUser(_0x5e0b6a,_0x849cc0['destcalleridname'],_0x849cc0['destcalleridnum']);})['then'](function(_0x5585a0){_0x267443=_0x5585a0;logger[_0x459e('0xb')]('The\x20Enduser\x20ID\x20is:',_0x267443['id']);return getTicket(_0x5e0b6a,_0x4f9ffe,_0x267443,_0xe8985b,_0x849cc0);})[_0x459e('0x18')](function(_0xf51fb8){if(_0xf51fb8&&_0xf51fb8['id']){logger['info'](_0x459e('0x19'));logger[_0x459e('0xb')]('The\x20Ticket\x20ID\x20is:',_0xf51fb8['id']);logger['info']('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x459e('0xd')](_0x459e('0x4b'),_0x40201c[_0x459e('0x3b')]),'trigger:browser:url',{'uri':util['format'](_0x459e('0x4c'),_0x5e0b6a[_0x459e('0x17')],_0xf51fb8['id'])});}})[_0x459e('0x4d')](function(_0x365cbd){logger[_0x459e('0x4e')](_0x459e('0x52'),JSON[_0x459e('0x2b')](_0x365cbd));});};exports[_0x459e('0x54')]=function(_0x17550b,_0xbc5527,_0x3a428d,_0x379e99,_0x3acbd6,_0x5df6b6){var _0x17f911,_0xc4105c;_0x5df6b6[_0x459e('0x17')]=intUtil[_0x459e('0x3e')](_0x5df6b6['remoteUri']);_0x5df6b6['serverUrl']=intUtil[_0x459e('0x3e')](_0x5df6b6['serverUrl']);if(_0x3acbd6&&_0x3acbd6['monitor_format']){logger['info']('['+_0xbc5527[_0x459e('0x55')][_0x459e('0x56')]()+']',_0x459e('0x53'));_0xbc5527[_0x459e('0x44')]=util[_0x459e('0xd')](_0x459e('0x42'),_0x5df6b6['serverUrl'],_0xbc5527[_0x459e('0x43')],md5(_0xbc5527['uniqueid']));}else{_0xbc5527[_0x459e('0x44')]='';}headers[_0x459e('0x45')]=getAuth(_0x5df6b6);return getUser(_0x5df6b6,'')[_0x459e('0x18')](function(_0x4fbfee){_0x17f911=_0x4fbfee;logger[_0x459e('0xb')](_0x459e('0x47'),_0x17f911['id']);return getEndUser(_0x5df6b6,_0xbc5527[_0x459e('0xf')],_0xbc5527[_0x459e('0x48')]);})[_0x459e('0x18')](function(_0x1213ee){_0xc4105c=_0x1213ee;logger[_0x459e('0xb')]('The\x20Enduser\x20ID\x20is:',_0xc4105c['id']);return getTicket(_0x5df6b6,_0x17f911,_0xc4105c,_0x3a428d,_0xbc5527);})[_0x459e('0x18')](function(_0x344a71){if(_0x344a71){logger['info'](_0x459e('0x19'));logger[_0x459e('0xb')](_0x459e('0x49'),_0x344a71['id']);}})['catch'](function(_0x342978){logger[_0x459e('0x4e')]('['+_0xbc5527['lastevent'][_0x459e('0x56')]()+']',JSON[_0x459e('0x2b')](_0x342978));});};
\ No newline at end of file
+var _0x8aeb=['socket.io-emitter','redis','application/json','info','format','Caller\x20-\x20%s','calleridname','getString','Subjects','name','Fields','custom_fields','keyBy','value','remoteUri','POST','then','validateEmail','length','find','contact','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','string','picklist','type','nameField','customField','content','idField','push','variable','variableName','customVariable','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','Authorization','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','user:%s','[OUTBOUND]','unmanaged','toUpperCase','lastevent','lodash','md5','ioredis','../../../../config/environment','../../../../config/logger','freshdesk','defaults','localhost'];(function(_0x1e0ac3,_0x4540f1){var _0x1b61a8=function(_0x498d1d){while(--_0x498d1d){_0x1e0ac3['push'](_0x1e0ac3['shift']());}};_0x1b61a8(++_0x4540f1);}(_0x8aeb,0x160));var _0xb8ae=function(_0x31295c,_0x2f2b82){_0x31295c=_0x31295c-0x0;var _0x2c150e=_0x8aeb[_0x31295c];return _0x2c150e;};'use strict';var _=require(_0xb8ae('0x0'));var rp=require('request-promise');var md5=require(_0xb8ae('0x1'));var util=require('util');var Redis=require(_0xb8ae('0x2'));var intUtil=require('./util');var config=require(_0xb8ae('0x3'));var logger=require(_0xb8ae('0x4'))(_0xb8ae('0x5'));config['redis']=_[_0xb8ae('0x6')](config['redis'],{'host':_0xb8ae('0x7'),'port':0x18eb});var io=require(_0xb8ae('0x8'))(new Redis(config[_0xb8ae('0x9')]));var headers={'Content-Type':_0xb8ae('0xa'),'Accept':_0xb8ae('0xa')};function emit(_0x59d503,_0x3cea12,_0x475e4e){io['to'](_0x59d503)['emit'](_0x3cea12,_0x475e4e);}function getTicket(_0x35fa60,_0x474a46,_0x439d08,_0x1282c8,_0xdaf3b9){logger[_0xb8ae('0xb')]('Creating\x20new\x20ticket...');var _0xa5e433=_['merge']({'responder_id':_0x474a46['id'],'requester_id':_0x439d08['id'],'name':util[_0xb8ae('0xc')](_0xb8ae('0xd'),_0xdaf3b9[_0xb8ae('0xe')]),'phone':_0xdaf3b9['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xb8ae('0xf')](_0x1282c8[_0xb8ae('0x10')],_0xdaf3b9,'\x20'),'description':intUtil[_0xb8ae('0xf')](_0x1282c8['Descriptions'],_0xdaf3b9,'<br>'),'tags':getTags(_0x1282c8['Tags'],_0xb8ae('0x11'))},getCustomFields(_0x1282c8[_0xb8ae('0x12')],_0xdaf3b9));_0xa5e433[_0xb8ae('0x13')]=_['mapValues'](_[_0xb8ae('0x14')](_0xa5e433[_0xb8ae('0x13')],'id'),_0xb8ae('0x15'));return request({'uri':util[_0xb8ae('0xc')]('%s/api/v2/tickets',_0x35fa60[_0xb8ae('0x16')]),'method':_0xb8ae('0x17'),'body':_0xa5e433})[_0xb8ae('0x18')](function(_0xa30b){logger[_0xb8ae('0xb')]('Ticket\x20created!');return _0xa30b;});}function getUser(_0x21f550,_0x4c31c9){if(intUtil[_0xb8ae('0x19')](_0x4c31c9)){return request({'uri':util[_0xb8ae('0xc')]('%s/api/v2/agents',_0x21f550['remoteUri']),'qs':{'email':_0x4c31c9}})[_0xb8ae('0x18')](function(_0x20a5f1){if(_0x20a5f1[_0xb8ae('0x1a')]){logger[_0xb8ae('0xb')]('Agent\x20found!');return _[_0xb8ae('0x1b')](_0x20a5f1,function(_0x2f4544){return _0x2f4544[_0xb8ae('0x1c')]['email']===_0x4c31c9;});}else{logger[_0xb8ae('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xb8ae('0xc')](_0xb8ae('0x1d'),_0x21f550[_0xb8ae('0x16')])})[_0xb8ae('0x18')](function(_0x5ae075){logger[_0xb8ae('0xb')](_0xb8ae('0x1e'));return _0x5ae075;});}});}else{logger[_0xb8ae('0xb')](_0xb8ae('0x1f'));return request({'uri':util[_0xb8ae('0xc')](_0xb8ae('0x1d'),_0x21f550[_0xb8ae('0x16')])})[_0xb8ae('0x18')](function(_0x13d22d){logger['info'](_0xb8ae('0x1e'));return _0x13d22d;});}}function getEndUser(_0x14e6e5,_0x5ef4a3,_0x526273){logger[_0xb8ae('0xb')](_0xb8ae('0x20'),_0x526273);return request({'uri':util[_0xb8ae('0xc')](_0xb8ae('0x21'),_0x14e6e5[_0xb8ae('0x16')]),'qs':{'phone':_0x526273}})[_0xb8ae('0x18')](function(_0x5d837b){if(_0x5d837b[_0xb8ae('0x1a')]){logger[_0xb8ae('0xb')](_0xb8ae('0x22'));return _[_0xb8ae('0x1b')](_0x5d837b,{'phone':_0x526273});}else{logger[_0xb8ae('0xb')](_0xb8ae('0x23'));return request({'uri':util[_0xb8ae('0xc')]('%s/api/v2/contacts',_0x14e6e5[_0xb8ae('0x16')]),'method':_0xb8ae('0x17'),'body':{'name':_0x5ef4a3,'phone':_0x526273}})[_0xb8ae('0x18')](function(_0x5c883f){logger['info'](_0xb8ae('0x24'));return _0x5c883f;});}});}function getAuth(_0x55ea52){return util[_0xb8ae('0xc')](_0xb8ae('0x25'),new Buffer(_0x55ea52[_0xb8ae('0x26')]+':X')[_0xb8ae('0x27')](_0xb8ae('0x28')));}function request(_0x16171d){logger[_0xb8ae('0x29')](_0xb8ae('0x2a'),JSON[_0xb8ae('0x2b')](_0x16171d));return rp(_[_0xb8ae('0x6')](_0x16171d,{'method':_0xb8ae('0x2c'),'headers':headers,'json':!![]}));}function getTags(_0x6daf87,_0x1f9113){var _0x117636=[];if(_0x6daf87&&_0x6daf87[_0xb8ae('0x1a')]>0x0){_0x117636=_[_0xb8ae('0x2d')](_0x6daf87,_0x1f9113);}return _0x117636;}function getCustomFields(_0x1de2d0,_0x2a71e8){var _0x5dc157=[];var _0x5cfdcd={'custom_fields':[]};if(_0x1de2d0['length']>0x0){_[_0xb8ae('0x2e')](_0x1de2d0,function(_0xdb6532){if(_['includes']([_0xb8ae('0x2f'),_0xb8ae('0x30')],_0xdb6532[_0xb8ae('0x31')])&&_0xdb6532[_0xb8ae('0x32')]&&!_0xdb6532[_0xb8ae('0x33')]){_0x5cfdcd[_0xdb6532['nameField']['toLowerCase']()]=_0xdb6532[_0xb8ae('0x34')]['toString']();}else if(_['includes']([_0xb8ae('0x2f'),_0xb8ae('0x30')],_0xdb6532['type'])&&_0xdb6532[_0xb8ae('0x35')]&&_0xdb6532[_0xb8ae('0x33')]){_0x5cfdcd[_0xb8ae('0x13')][_0xb8ae('0x36')]({'id':_0xdb6532[_0xb8ae('0x35')],'value':_0xdb6532[_0xb8ae('0x34')][_0xb8ae('0x27')]()});}else if(_0xdb6532[_0xb8ae('0x31')]===_0xb8ae('0x37')&&_0xdb6532[_0xb8ae('0x38')]&&_0xdb6532['idField']&&_0xdb6532[_0xb8ae('0x33')]){_0x2a71e8[_0xdb6532[_0xb8ae('0x38')]]&&_0x5cfdcd['custom_fields'][_0xb8ae('0x36')]({'id':_0xdb6532['idField'],'value':_0x2a71e8[_0xdb6532['variableName']][_0xb8ae('0x27')]()});}else if(_0xdb6532[_0xb8ae('0x31')]===_0xb8ae('0x39')&&_0xdb6532[_0xb8ae('0x3a')]&&_0xdb6532[_0xb8ae('0x3a')]['name']&&_0xdb6532['idField']&&_0xdb6532[_0xb8ae('0x33')]){_0x2a71e8[_0xdb6532['Variable'][_0xb8ae('0x11')][_0xb8ae('0x3b')]()]&&_0x5cfdcd[_0xb8ae('0x13')]['push']({'id':_0xdb6532[_0xb8ae('0x35')],'value':_0x2a71e8[_0xdb6532[_0xb8ae('0x3a')][_0xb8ae('0x11')][_0xb8ae('0x3b')]()][_0xb8ae('0x27')]()});}});}return _0x5cfdcd;}exports[_0xb8ae('0x3c')]=function(_0x301d1c,_0x2363e8,_0x4aa6df,_0x85d212,_0x251854,_0x4a68fc){var _0x3aa6c4,_0x33d475;_0x4a68fc['remoteUri']=intUtil[_0xb8ae('0x3d')](_0x4a68fc['remoteUri']);_0x4a68fc[_0xb8ae('0x3e')]=intUtil['stripTrailingSlash'](_0x4a68fc[_0xb8ae('0x3e')]);if(_0x251854&&_0x251854[_0xb8ae('0x3f')]){logger['info'](_0xb8ae('0x40'),_0xb8ae('0x41'));_0x2363e8['recordingURL']=util[_0xb8ae('0xc')](_0xb8ae('0x42'),_0x4a68fc[_0xb8ae('0x3e')],_0x2363e8[_0xb8ae('0x43')],md5(_0x2363e8['uniqueid']));}else{_0x2363e8[_0xb8ae('0x44')]='';}headers['Authorization']=getAuth(_0x4a68fc);return getUser(_0x4a68fc,_0x85d212[_0xb8ae('0x45')])[_0xb8ae('0x18')](function(_0x175066){_0x3aa6c4=_0x175066;logger['info'](_0xb8ae('0x46'),_0x3aa6c4['id']);return getEndUser(_0x4a68fc,_0x2363e8[_0xb8ae('0xe')],_0x2363e8[_0xb8ae('0x47')]);})['then'](function(_0x47c16a){_0x33d475=_0x47c16a;logger[_0xb8ae('0xb')]('The\x20Enduser\x20ID\x20is:',_0x33d475['id']);return getTicket(_0x4a68fc,_0x3aa6c4,_0x33d475,_0x4aa6df,_0x2363e8);})[_0xb8ae('0x18')](function(_0x179785){if(_0x179785&&_0x179785['id']){logger[_0xb8ae('0xb')](_0xb8ae('0x48'));logger[_0xb8ae('0xb')](_0xb8ae('0x49'),_0x179785['id']);logger[_0xb8ae('0xb')]('[QUEUE]',_0xb8ae('0x4a'));emit(util['format']('user:%s',_0x85d212['name']),_0xb8ae('0x4b'),{'uri':util[_0xb8ae('0xc')](_0xb8ae('0x4c'),_0x4a68fc[_0xb8ae('0x16')],_0x179785['id'])});}})[_0xb8ae('0x4d')](function(_0x4e0539){logger[_0xb8ae('0x4e')](_0xb8ae('0x40'),JSON[_0xb8ae('0x2b')](_0x4e0539));});};exports['outbound']=function(_0x11ac3f,_0x4a77ef,_0x3b4375,_0x52ce86,_0x559b68,_0x1fa29f,_0x5b696c){var _0x45198a,_0x5dc842;_0x1fa29f[_0xb8ae('0x16')]=intUtil[_0xb8ae('0x3d')](_0x1fa29f[_0xb8ae('0x16')]);_0x1fa29f[_0xb8ae('0x3e')]=intUtil[_0xb8ae('0x3d')](_0x1fa29f[_0xb8ae('0x3e')]);if(_0x5b696c&&_0x5b696c['recordingFormat']&&_0x5b696c[_0xb8ae('0x4f')]!==_0xb8ae('0x50')){logger[_0xb8ae('0xb')]('[OUTBOUND]',_0xb8ae('0x41'));_0x4a77ef[_0xb8ae('0x44')]=util[_0xb8ae('0xc')](_0xb8ae('0x42'),_0x1fa29f[_0xb8ae('0x3e')],_0x4a77ef[_0xb8ae('0x43')],md5(_0x4a77ef[_0xb8ae('0x43')]));}headers[_0xb8ae('0x51')]=getAuth(_0x1fa29f);return getUser(_0x1fa29f,_0x52ce86[_0xb8ae('0x45')])[_0xb8ae('0x18')](function(_0x27970b){_0x45198a=_0x27970b;logger['info'](_0xb8ae('0x46'),_0x45198a['id']);return getEndUser(_0x1fa29f,_0x4a77ef[_0xb8ae('0x52')],_0x4a77ef[_0xb8ae('0x53')]);})[_0xb8ae('0x18')](function(_0x315baf){_0x5dc842=_0x315baf;logger['info'](_0xb8ae('0x54'),_0x5dc842['id']);return getTicket(_0x1fa29f,_0x45198a,_0x5dc842,_0x3b4375,_0x4a77ef);})[_0xb8ae('0x18')](function(_0x45ead1){if(_0x45ead1&&_0x45ead1['id']){logger['info'](_0xb8ae('0x48'));logger[_0xb8ae('0xb')](_0xb8ae('0x49'),_0x45ead1['id']);logger['info']('[OUTBOUND]',_0xb8ae('0x4a'));emit(util['format'](_0xb8ae('0x55'),_0x52ce86[_0xb8ae('0x11')]),'trigger:browser:url',{'uri':util['format'](_0xb8ae('0x4c'),_0x1fa29f[_0xb8ae('0x16')],_0x45ead1['id'])});}})[_0xb8ae('0x4d')](function(_0x2fbd6f){logger[_0xb8ae('0x4e')](_0xb8ae('0x56'),JSON[_0xb8ae('0x2b')](_0x2fbd6f));});};exports[_0xb8ae('0x57')]=function(_0x740a0e,_0x108554,_0x3ed7c7,_0x1336d4,_0xfa090f,_0x2a649c){var _0x13ccd0,_0x40e0ba;_0x2a649c['remoteUri']=intUtil[_0xb8ae('0x3d')](_0x2a649c[_0xb8ae('0x16')]);_0x2a649c[_0xb8ae('0x3e')]=intUtil['stripTrailingSlash'](_0x2a649c['serverUrl']);if(_0xfa090f&&_0xfa090f['monitor_format']){logger['info']('['+_0x108554['lastevent'][_0xb8ae('0x58')]()+']','Recording\x20is\x20enabled!');_0x108554[_0xb8ae('0x44')]=util[_0xb8ae('0xc')](_0xb8ae('0x42'),_0x2a649c[_0xb8ae('0x3e')],_0x108554[_0xb8ae('0x43')],md5(_0x108554[_0xb8ae('0x43')]));}else{_0x108554['recordingURL']='';}headers[_0xb8ae('0x51')]=getAuth(_0x2a649c);return getUser(_0x2a649c,'')[_0xb8ae('0x18')](function(_0x4a6883){_0x13ccd0=_0x4a6883;logger[_0xb8ae('0xb')](_0xb8ae('0x46'),_0x13ccd0['id']);return getEndUser(_0x2a649c,_0x108554[_0xb8ae('0xe')],_0x108554[_0xb8ae('0x47')]);})['then'](function(_0x406131){_0x40e0ba=_0x406131;logger['info'](_0xb8ae('0x54'),_0x40e0ba['id']);return getTicket(_0x2a649c,_0x13ccd0,_0x40e0ba,_0x3ed7c7,_0x108554);})[_0xb8ae('0x18')](function(_0x168c3d){if(_0x168c3d){logger[_0xb8ae('0xb')](_0xb8ae('0x48'));logger[_0xb8ae('0xb')](_0xb8ae('0x49'),_0x168c3d['id']);}})[_0xb8ae('0x4d')](function(_0x344c54){logger[_0xb8ae('0x4e')]('['+_0x108554[_0xb8ae('0x59')][_0xb8ae('0x58')]()+']',JSON[_0xb8ae('0x2b')](_0x344c54));});};
\ No newline at end of file
index acad8b6..0678488 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb415=['Admin\x20selected','adminEmail','error','&f=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','endUserId','work_number','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','message','Creating\x20new\x20task','getString','Subjects','Descriptions','Contact','add','ticketId','task','/contacts/','user:%s','emit','trigger:browser:url','apiKey','stripTrailingSlash','serverUrl','remoteUri','username','toLowerCase','outbound','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...','lodash','request-promise','util','ioredis','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','then','users','email','info','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','Getting\x20user\x20list','Getting\x20user\x20with\x20email','userEmail','length','agentEmail','userId','User\x20found:'];(function(_0x168f7b,_0x81ff02){var _0x31c010=function(_0x45efa7){while(--_0x45efa7){_0x168f7b['push'](_0x168f7b['shift']());}};_0x31c010(++_0x81ff02);}(_0xb415,0x1c8));var _0x5b41=function(_0x8ba6a8,_0x36e866){_0x8ba6a8=_0x8ba6a8-0x0;var _0x5a5b08=_0xb415[_0x8ba6a8];return _0x5a5b08;};'use strict';var _=require(_0x5b41('0x0'));var rp=require(_0x5b41('0x1'));var md5=require('md5');var util=require(_0x5b41('0x2'));var moment=require('moment');var Promise=require('bluebird');var Redis=require(_0x5b41('0x3'));var intUtil=require('./util');var config=require(_0x5b41('0x4'));var logger=require(_0x5b41('0x5'))(_0x5b41('0x6'));config[_0x5b41('0x7')]=_[_0x5b41('0x8')](config[_0x5b41('0x7')],{'host':_0x5b41('0x9'),'port':0x18eb});var io=require(_0x5b41('0xa'))(new Redis(config[_0x5b41('0x7')]));function getAdminId(_0x4ce2a5,_0x521a83,_0x5d9552,_0x5aac76){return new Promise(function(_0x3dde98,_0x50448d){var _0x51afb9=![];var _0x5af665={'method':_0x5b41('0xb'),'uri':_0x5aac76+_0x5b41('0xc'),'json':!![]};_0x5af665[_0x5b41('0xd')]=_0x5d9552;logger['info']('Getting\x20admin\x20information');return rp(_0x5af665)[_0x5b41('0xe')](function(_0x38f93d){if(_0x38f93d){var _0x4c07ec=_0x38f93d[_0x5b41('0xf')];var _0x806361=null;for(_0x806361=0x0;_0x806361<_0x4c07ec['length'];_0x806361++){if(_0x4c07ec[_0x806361][_0x5b41('0x10')]===_0x4ce2a5['adminEmail']){_0x4ce2a5['adminId']=_0x4c07ec[_0x806361]['id'];_0x51afb9=!![];}}if(_0x51afb9){logger[_0x5b41('0x11')](_0x5b41('0x12'),_0x4ce2a5[_0x5b41('0x13')]);_0x3dde98(_0x4ce2a5);}else{_0x50448d({'statusCode':0x194,'message':_0x5b41('0x14')});}}else{_0x50448d({'statusCode':0x194,'message':_0x5b41('0x14')});}})[_0x5b41('0x15')](function(_0x4a5ac8){logger['error']('['+[_0x521a83[_0x5b41('0x16')]()]+']',_0x4a5ac8['message']);_0x50448d(_0x4a5ac8);});});}function getUser(_0xbebc73,_0x1faf8c,_0x3b6d32){return function(_0x2d7f48){return new Promise(function(_0x22dbf,_0x198bd2){var _0x79af8={'method':_0x5b41('0xb'),'uri':_0x3b6d32+'/api/selector/owners','json':!![]};_0x79af8[_0x5b41('0xd')]=_0x1faf8c;logger[_0x5b41('0x11')](_0x5b41('0x17'));return rp(_0x79af8)['then'](function(_0x590a95){if(_0x590a95){var _0x3b2456=_0x590a95[_0x5b41('0xf')];var _0x388056=![];var _0xcc87dc=null;if(_0x2d7f48['agentEmail']!==null){logger[_0x5b41('0x11')](_0x5b41('0x18'),_0x2d7f48['agentEmail']);_0x2d7f48[_0x5b41('0x19')]=_0x2d7f48['agentEmail'];for(_0xcc87dc=0x0;_0xcc87dc<_0x3b2456[_0x5b41('0x1a')];_0xcc87dc++){if(_0x3b2456[_0xcc87dc][_0x5b41('0x10')]===_0x2d7f48[_0x5b41('0x1b')]){_0x388056=!![];_0x2d7f48[_0x5b41('0x1c')]=_0x3b2456[_0xcc87dc]['id'];logger[_0x5b41('0x11')](_0x5b41('0x1d'),_0x2d7f48[_0x5b41('0x1c')]);}}}if(!_0x388056){logger[_0x5b41('0x11')](_0x5b41('0x1e'));_0x2d7f48[_0x5b41('0x19')]=_0x2d7f48[_0x5b41('0x1f')];_0x2d7f48['userId']=_0x2d7f48[_0x5b41('0x13')];_0x388056=!![];}if(_0x388056){_0x22dbf(_0x2d7f48);}else{_0x198bd2({'statusCode':0x194,'message':_0x5b41('0x14')});}}else{_0x198bd2({'statusCode':0x194,'message':_0x5b41('0x14')});}})[_0x5b41('0x15')](function(_0x9b611a){logger[_0x5b41('0x20')]('['+[_0xbebc73[_0x5b41('0x16')]()]+']',_0x9b611a['message']);_0x198bd2(_0x9b611a);});});};}function searchContact(_0x5ec55a,_0x210d73,_0x3f458d,_0x4e7432){return new Promise(function(_0x3ffa0b,_0x9c11e6){var _0xaaf6e1={'method':_0x5b41('0xb'),'headers':_0x210d73,'uri':_0x5ec55a+'/api/lookup?q='+_0x4e7432+_0x5b41('0x21')+_0x3f458d+'&entities=contact','json':!![]};rp(_0xaaf6e1)['then'](function(_0x37433c){var _0x33dcdc=_[_0x5b41('0x22')](_0x37433c[_0x5b41('0x23')]['contacts'],[_0x3f458d,_0x4e7432]);_0x3ffa0b(_0x33dcdc);})[_0x5b41('0x15')](function(_0x3aa4ba){_0x9c11e6(_0x3aa4ba);});});}function getEndUser(_0x208381,_0x1c371c,_0x1669e1){return function(_0x106014){return new Promise(function(_0x59e996,_0x49ab69){logger[_0x5b41('0x11')](util[_0x5b41('0x24')](_0x5b41('0x25'),_0x106014[_0x5b41('0x26')]));searchContact(_0x1669e1,_0x1c371c,_0x5b41('0x27'),_0x106014['contactNumber'])[_0x5b41('0xe')](function(_0x1c9db5){if(_0x1c9db5){_0x106014['endUserId']=_0x1c9db5['id'];logger[_0x5b41('0x11')](_0x5b41('0x28'),_0x106014[_0x5b41('0x29')]);return _0x59e996(_0x106014);}searchContact(_0x1669e1,_0x1c371c,_0x5b41('0x2a'),_0x106014[_0x5b41('0x26')])['then'](function(_0x19f5d3){if(_0x19f5d3){_0x106014[_0x5b41('0x29')]=_0x19f5d3['id'];logger['info']('Contact\x20found\x20work_number:',_0x106014[_0x5b41('0x29')]);return _0x59e996(_0x106014);}createEndUser(_0x106014,_0x208381,_0x1c371c,_0x1669e1)[_0x5b41('0xe')](function(_0x4feb37){logger[_0x5b41('0x11')](_0x5b41('0x2b'),_0x4feb37[_0x5b41('0x29')]);return _0x59e996(_0x4feb37);});});})[_0x5b41('0x15')](function(_0x5c16d9){_0x49ab69(_0x5c16d9);});});};}function createEndUser(_0x1e91d7,_0xb9507c,_0xc0f1e4,_0x3d81ce){return new Promise(function(_0x5a500f,_0x147f51){var _0x584cad=moment();var _0x3dfcf9={'method':_0x5b41('0x2c'),'uri':_0x3d81ce+'/api/contacts','body':{'contact':{'last_name':_0x1e91d7[_0x5b41('0x26')],'work_number':_0x1e91d7[_0x5b41('0x26')],'mobile_number':_0x1e91d7[_0x5b41('0x26')],'owner_id':_0x1e91d7[_0x5b41('0x1c')],'created_at':_0x584cad[_0x5b41('0x24')](_0x5b41('0x2d'))}},'json':!![]};_0x3dfcf9[_0x5b41('0xd')]=_0xc0f1e4;logger['info'](_0x5b41('0x2e'));return rp(_0x3dfcf9)[_0x5b41('0xe')](function(_0xd7314){_0x1e91d7[_0x5b41('0x29')]=_0xd7314[_0x5b41('0x2f')]['id'];_0x5a500f(_0x1e91d7);})[_0x5b41('0x15')](function(_0x4c1914){logger[_0x5b41('0x20')]('['+[_0xb9507c['toUpperCase']()]+']',_0x4c1914[_0x5b41('0x30')]);_0x147f51(_0x4c1914[_0x5b41('0x30')]);});});}function getTicket(_0x27dbdf,_0x47cf3a,_0x28f6e7,_0x18af7e,_0x1b7ac6){return function(_0x5baecb){logger[_0x5b41('0x11')](_0x5b41('0x31'));return new Promise(function(_0x23d1c2,_0x58e5a4){var _0x2f4cbd=moment();var _0x550cab={'method':_0x5b41('0x2c'),'uri':_0x28f6e7+'/api/tasks','body':{'title':intUtil[_0x5b41('0x32')](_0x18af7e[_0x5b41('0x33')],_0x1b7ac6,'\x20'),'description':intUtil['getString'](_0x18af7e[_0x5b41('0x34')],_0x1b7ac6,'\x0a'),'owner_id':_0x5baecb['userId'],'creater_id':_0x5baecb['adminId'],'targetable_id':_0x5baecb[_0x5b41('0x29')],'targetable_type':_0x5b41('0x35'),'created_at':_0x2f4cbd[_0x5b41('0x24')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x2f4cbd[_0x5b41('0x36')](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x550cab['headers']=_0x47cf3a;return rp(_0x550cab)[_0x5b41('0xe')](function(_0x3345f0){_0x5baecb[_0x5b41('0x37')]=_0x3345f0[_0x5b41('0x38')]['id'];logger['info']('Task\x20created:',_0x5baecb[_0x5b41('0x37')]);_0x23d1c2(_0x5baecb);})[_0x5b41('0x15')](function(_0x5e8612){logger[_0x5b41('0x20')]('['+[_0x27dbdf[_0x5b41('0x16')]()]+']',_0x5e8612[_0x5b41('0x30')]);_0x58e5a4(_0x5e8612[_0x5b41('0x30')]);});});};}function emit(_0x5ec341,_0x4dd9de,_0x40e89a){var _0x53fb82={'uri':_0x5ec341+_0x5b41('0x39')+_0x40e89a};io['to'](util[_0x5b41('0x24')](_0x5b41('0x3a'),_0x4dd9de))[_0x5b41('0x3b')](_0x5b41('0x3c'),_0x53fb82);}exports['cs']=function(_0x11c365,_0x33112f,_0x408e87,_0x830441,_0x1b8d1b,_0x9d1bf2,_0x4d080a,_0x4ab9f1){var _0x851f1d={};var _0x554c6c={'Authorization':'Token\x20token='+_0x9d1bf2[_0x5b41('0x3d')]};_0x9d1bf2['remoteUri']=intUtil[_0x5b41('0x3e')](_0x9d1bf2['remoteUri']);_0x9d1bf2[_0x5b41('0x3f')]=intUtil[_0x5b41('0x3e')](_0x9d1bf2[_0x5b41('0x3f')]);var _0x229255=_0x9d1bf2[_0x5b41('0x40')];_0x851f1d[_0x5b41('0x1f')]=_0x9d1bf2[_0x5b41('0x41')];_0x851f1d[_0x5b41('0x26')]=_0x4ab9f1[_0x5b41('0x42')]()===_0x5b41('0x43')?_0x33112f['destcalleridnum']:_0x33112f[_0x5b41('0x44')];_0x851f1d[_0x5b41('0x45')]=_0x4ab9f1===_0x5b41('0x46')||_0x4ab9f1===_0x5b41('0x47')?_0x5b41('0x46'):_0x5b41('0x43');if(_0x830441){_0x851f1d[_0x5b41('0x1b')]=_0x830441['email'];}var _0x1a965c=util[_0x5b41('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x9d1bf2[_0x5b41('0x3f')],_0x33112f[_0x5b41('0x48')],md5(_0x33112f[_0x5b41('0x48')]));if(_0x1b8d1b&&_0x1b8d1b[_0x5b41('0x49')]){logger[_0x5b41('0x11')](_0x5b41('0x4a'),_0x5b41('0x4b'));_0x33112f[_0x5b41('0x4c')]=_0x1a965c;}else if(_0x4d080a&&_0x4d080a[_0x5b41('0x4d')]&&_0x4d080a[_0x5b41('0x4d')]!==_0x5b41('0x4e')){logger['info'](_0x5b41('0x4f'),_0x5b41('0x4b'));_0x33112f[_0x5b41('0x4c')]=_0x1a965c;}else{_0x33112f['recordingURL']='';}return getAdminId(_0x851f1d,_0x4ab9f1,_0x554c6c,_0x229255)[_0x5b41('0xe')](getUser(_0x4ab9f1,_0x554c6c,_0x229255))[_0x5b41('0xe')](getEndUser(_0x4ab9f1,_0x554c6c,_0x229255))[_0x5b41('0xe')](getTicket(_0x4ab9f1,_0x554c6c,_0x229255,_0x408e87,_0x33112f))[_0x5b41('0xe')](function(_0xed6ff){logger[_0x5b41('0x11')](util[_0x5b41('0x24')]('The\x20ticket\x20ID\x20is:\x20%s',_0xed6ff[_0x5b41('0x37')]));if(_0x4ab9f1!==_0x5b41('0x47')){logger[_0x5b41('0x11')]('['+[_0x4ab9f1['toUpperCase']()]+']',_0x5b41('0x50'));emit(_0x229255,_0x830441['name'],_0xed6ff[_0x5b41('0x29')]);}})[_0x5b41('0x15')](function(_0x1cfe38){logger[_0x5b41('0x20')]('['+[_0x4ab9f1[_0x5b41('0x16')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x1cfe38,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x9f8b=['users','length','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','headers','Getting\x20user\x20with\x20email','userEmail','agentEmail','email','userId','User\x20found:','Admin\x20selected','/api/lookup?q=','&entities=contact','contacts','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','format','contact','Creating\x20new\x20task','/api/tasks','getString','Descriptions','YYYY-MM-DDTHH:mm:ss','add','task','Task\x20created:','ticketId','/contacts/','emit','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','toLowerCase','destcalleridnum','calleridnum','callDirection','unmanaged','queue','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','moment','ioredis','./util','../../../../config/logger','redis','defaults','socket.io-emitter','GET','/api/selector/owners','info','Getting\x20admin\x20information','then'];(function(_0x581120,_0x428d4e){var _0x1f305c=function(_0x5ce5f2){while(--_0x5ce5f2){_0x581120['push'](_0x581120['shift']());}};_0x1f305c(++_0x428d4e);}(_0x9f8b,0x8f));var _0xb9f8=function(_0x1e8d54,_0x334a60){_0x1e8d54=_0x1e8d54-0x0;var _0x58c69f=_0x9f8b[_0x1e8d54];return _0x58c69f;};'use strict';var _=require(_0xb9f8('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require('util');var moment=require(_0xb9f8('0x1'));var Promise=require('bluebird');var Redis=require(_0xb9f8('0x2'));var intUtil=require(_0xb9f8('0x3'));var config=require('../../../../config/environment');var logger=require(_0xb9f8('0x4'))('freshsales');config[_0xb9f8('0x5')]=_[_0xb9f8('0x6')](config[_0xb9f8('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xb9f8('0x7'))(new Redis(config[_0xb9f8('0x5')]));function getAdminId(_0x2e6cb6,_0x4bc220,_0x2e8c35,_0x51cfc9){return new Promise(function(_0xc00a1e,_0x319483){var _0x3bc57c=![];var _0x311447={'method':_0xb9f8('0x8'),'uri':_0x51cfc9+_0xb9f8('0x9'),'json':!![]};_0x311447['headers']=_0x2e8c35;logger[_0xb9f8('0xa')](_0xb9f8('0xb'));return rp(_0x311447)[_0xb9f8('0xc')](function(_0x418df0){if(_0x418df0){var _0x10a1ea=_0x418df0[_0xb9f8('0xd')];var _0x60b9e9=null;for(_0x60b9e9=0x0;_0x60b9e9<_0x10a1ea[_0xb9f8('0xe')];_0x60b9e9++){if(_0x10a1ea[_0x60b9e9]['email']===_0x2e6cb6[_0xb9f8('0xf')]){_0x2e6cb6[_0xb9f8('0x10')]=_0x10a1ea[_0x60b9e9]['id'];_0x3bc57c=!![];}}if(_0x3bc57c){logger[_0xb9f8('0xa')](_0xb9f8('0x11'),_0x2e6cb6[_0xb9f8('0x10')]);_0xc00a1e(_0x2e6cb6);}else{_0x319483({'statusCode':0x194,'message':_0xb9f8('0x12')});}}else{_0x319483({'statusCode':0x194,'message':_0xb9f8('0x12')});}})[_0xb9f8('0x13')](function(_0x2f0cd7){logger[_0xb9f8('0x14')]('['+[_0x4bc220[_0xb9f8('0x15')]()]+']',_0x2f0cd7[_0xb9f8('0x16')]);_0x319483(_0x2f0cd7);});});}function getUser(_0x507a33,_0x549b47,_0x116984){return function(_0x41a58e){return new Promise(function(_0x368519,_0x39cd35){var _0x13953f={'method':_0xb9f8('0x8'),'uri':_0x116984+_0xb9f8('0x9'),'json':!![]};_0x13953f[_0xb9f8('0x17')]=_0x549b47;logger['info']('Getting\x20user\x20list');return rp(_0x13953f)[_0xb9f8('0xc')](function(_0x324211){if(_0x324211){var _0x27ae0c=_0x324211['users'];var _0x4810e3=![];var _0x3a453e=null;if(_0x41a58e['agentEmail']!==null){logger[_0xb9f8('0xa')](_0xb9f8('0x18'),_0x41a58e['agentEmail']);_0x41a58e[_0xb9f8('0x19')]=_0x41a58e[_0xb9f8('0x1a')];for(_0x3a453e=0x0;_0x3a453e<_0x27ae0c[_0xb9f8('0xe')];_0x3a453e++){if(_0x27ae0c[_0x3a453e][_0xb9f8('0x1b')]===_0x41a58e[_0xb9f8('0x1a')]){_0x4810e3=!![];_0x41a58e[_0xb9f8('0x1c')]=_0x27ae0c[_0x3a453e]['id'];logger[_0xb9f8('0xa')](_0xb9f8('0x1d'),_0x41a58e[_0xb9f8('0x1c')]);}}}if(!_0x4810e3){logger['info'](_0xb9f8('0x1e'));_0x41a58e[_0xb9f8('0x19')]=_0x41a58e[_0xb9f8('0xf')];_0x41a58e[_0xb9f8('0x1c')]=_0x41a58e[_0xb9f8('0x10')];_0x4810e3=!![];}if(_0x4810e3){_0x368519(_0x41a58e);}else{_0x39cd35({'statusCode':0x194,'message':_0xb9f8('0x12')});}}else{_0x39cd35({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xb9f8('0x13')](function(_0x2da9db){logger[_0xb9f8('0x14')]('['+[_0x507a33['toUpperCase']()]+']',_0x2da9db['message']);_0x39cd35(_0x2da9db);});});};}function searchContact(_0x16a0ad,_0x247bf3,_0x3acd15,_0x8eaa5c){return new Promise(function(_0x183d95,_0x19da72){var _0x3b161c={'method':_0xb9f8('0x8'),'headers':_0x247bf3,'uri':_0x16a0ad+_0xb9f8('0x1f')+_0x8eaa5c+'&f='+_0x3acd15+_0xb9f8('0x20'),'json':!![]};rp(_0x3b161c)[_0xb9f8('0xc')](function(_0x737a5d){var _0x325ea1=_['find'](_0x737a5d['contacts'][_0xb9f8('0x21')],[_0x3acd15,_0x8eaa5c]);_0x183d95(_0x325ea1);})[_0xb9f8('0x13')](function(_0x59e295){_0x19da72(_0x59e295);});});}function getEndUser(_0x575e62,_0x41eca2,_0x145395){return function(_0x47f4ff){return new Promise(function(_0x427f3e,_0x489151){logger[_0xb9f8('0xa')](util['format'](_0xb9f8('0x22'),_0x47f4ff[_0xb9f8('0x23')]));searchContact(_0x145395,_0x41eca2,'mobile_number',_0x47f4ff['contactNumber'])[_0xb9f8('0xc')](function(_0x4cbf72){if(_0x4cbf72){_0x47f4ff[_0xb9f8('0x24')]=_0x4cbf72['id'];logger[_0xb9f8('0xa')](_0xb9f8('0x25'),_0x47f4ff[_0xb9f8('0x24')]);return _0x427f3e(_0x47f4ff);}searchContact(_0x145395,_0x41eca2,'work_number',_0x47f4ff[_0xb9f8('0x23')])[_0xb9f8('0xc')](function(_0x1893df){if(_0x1893df){_0x47f4ff[_0xb9f8('0x24')]=_0x1893df['id'];logger[_0xb9f8('0xa')](_0xb9f8('0x26'),_0x47f4ff[_0xb9f8('0x24')]);return _0x427f3e(_0x47f4ff);}createEndUser(_0x47f4ff,_0x575e62,_0x41eca2,_0x145395)[_0xb9f8('0xc')](function(_0xb8386c){logger[_0xb9f8('0xa')](_0xb9f8('0x27'),_0xb8386c[_0xb9f8('0x24')]);return _0x427f3e(_0xb8386c);});});})[_0xb9f8('0x13')](function(_0x3d5b4e){_0x489151(_0x3d5b4e);});});};}function createEndUser(_0x19c842,_0x2eefc9,_0x1832b5,_0xdf67b5){return new Promise(function(_0x4da136,_0x2db8e4){var _0x401a58=moment();var _0x46a045={'method':_0xb9f8('0x28'),'uri':_0xdf67b5+_0xb9f8('0x29'),'body':{'contact':{'last_name':_0x19c842[_0xb9f8('0x23')],'work_number':_0x19c842[_0xb9f8('0x23')],'mobile_number':_0x19c842[_0xb9f8('0x23')],'owner_id':_0x19c842[_0xb9f8('0x1c')],'created_at':_0x401a58[_0xb9f8('0x2a')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x46a045[_0xb9f8('0x17')]=_0x1832b5;logger[_0xb9f8('0xa')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x46a045)['then'](function(_0x19c575){_0x19c842[_0xb9f8('0x24')]=_0x19c575[_0xb9f8('0x2b')]['id'];_0x4da136(_0x19c842);})[_0xb9f8('0x13')](function(_0x5abe8d){logger[_0xb9f8('0x14')]('['+[_0x2eefc9[_0xb9f8('0x15')]()]+']',_0x5abe8d[_0xb9f8('0x16')]);_0x2db8e4(_0x5abe8d[_0xb9f8('0x16')]);});});}function getTicket(_0x56c301,_0x53c829,_0x1ca291,_0x17c149,_0x6bf304){return function(_0xd73749){logger[_0xb9f8('0xa')](_0xb9f8('0x2c'));return new Promise(function(_0x59a049,_0x5205cf){var _0x279328=moment();var _0x351b96={'method':_0xb9f8('0x28'),'uri':_0x1ca291+_0xb9f8('0x2d'),'body':{'title':intUtil[_0xb9f8('0x2e')](_0x17c149['Subjects'],_0x6bf304,'\x20'),'description':intUtil['getString'](_0x17c149[_0xb9f8('0x2f')],_0x6bf304,'\x0a'),'owner_id':_0xd73749[_0xb9f8('0x1c')],'creater_id':_0xd73749['adminId'],'targetable_id':_0xd73749[_0xb9f8('0x24')],'targetable_type':'Contact','created_at':_0x279328[_0xb9f8('0x2a')](_0xb9f8('0x30')),'due_date':_0x279328[_0xb9f8('0x31')](0x1e,'m')[_0xb9f8('0x2a')](_0xb9f8('0x30'))},'json':!![]};_0x351b96['headers']=_0x53c829;return rp(_0x351b96)[_0xb9f8('0xc')](function(_0x3af172){_0xd73749['ticketId']=_0x3af172[_0xb9f8('0x32')]['id'];logger[_0xb9f8('0xa')](_0xb9f8('0x33'),_0xd73749[_0xb9f8('0x34')]);_0x59a049(_0xd73749);})['catch'](function(_0xe4c53f){logger[_0xb9f8('0x14')]('['+[_0x56c301[_0xb9f8('0x15')]()]+']',_0xe4c53f[_0xb9f8('0x16')]);_0x5205cf(_0xe4c53f[_0xb9f8('0x16')]);});});};}function emit(_0x1ad3f7,_0x4acde,_0x49e2e5){var _0x1e27e6={'uri':_0x1ad3f7+_0xb9f8('0x35')+_0x49e2e5};io['to'](util[_0xb9f8('0x2a')]('user:%s',_0x4acde))[_0xb9f8('0x36')]('trigger:browser:url',_0x1e27e6);}exports['cs']=function(_0x34f163,_0x11b28b,_0x59f827,_0x4153f8,_0xa8b4c1,_0x28f7cd,_0x1f0099,_0x37998f){var _0x193f9c={};var _0x5551c1={'Authorization':_0xb9f8('0x37')+_0x28f7cd[_0xb9f8('0x38')]};_0x28f7cd[_0xb9f8('0x39')]=intUtil[_0xb9f8('0x3a')](_0x28f7cd[_0xb9f8('0x39')]);_0x28f7cd[_0xb9f8('0x3b')]=intUtil[_0xb9f8('0x3a')](_0x28f7cd[_0xb9f8('0x3b')]);var _0x58dbc8=_0x28f7cd[_0xb9f8('0x39')];_0x193f9c['adminEmail']=_0x28f7cd['username'];_0x193f9c[_0xb9f8('0x23')]=_0x37998f[_0xb9f8('0x3c')]()==='outbound'?_0x11b28b[_0xb9f8('0x3d')]:_0x11b28b[_0xb9f8('0x3e')];_0x193f9c[_0xb9f8('0x3f')]=_0x37998f==='queue'||_0x37998f===_0xb9f8('0x40')?_0xb9f8('0x41'):_0xb9f8('0x42');if(_0x4153f8){_0x193f9c['agentEmail']=_0x4153f8[_0xb9f8('0x1b')];}var _0x2f72d6=util[_0xb9f8('0x2a')](_0xb9f8('0x43'),_0x28f7cd[_0xb9f8('0x3b')],_0x11b28b['uniqueid'],md5(_0x11b28b[_0xb9f8('0x44')]));if(_0xa8b4c1&&_0xa8b4c1['monitor_format']){logger['info'](_0xb9f8('0x45'),_0xb9f8('0x46'));_0x11b28b['recordingURL']=_0x2f72d6;}else if(_0x1f0099&&_0x1f0099[_0xb9f8('0x47')]&&_0x1f0099['recordingFormat']!=='none'){logger[_0xb9f8('0xa')](_0xb9f8('0x48'),_0xb9f8('0x46'));_0x11b28b['recordingURL']=_0x2f72d6;}else{_0x11b28b[_0xb9f8('0x49')]='';}return getAdminId(_0x193f9c,_0x37998f,_0x5551c1,_0x58dbc8)['then'](getUser(_0x37998f,_0x5551c1,_0x58dbc8))[_0xb9f8('0xc')](getEndUser(_0x37998f,_0x5551c1,_0x58dbc8))['then'](getTicket(_0x37998f,_0x5551c1,_0x58dbc8,_0x59f827,_0x11b28b))[_0xb9f8('0xc')](function(_0xd82b23){logger['info'](util[_0xb9f8('0x2a')](_0xb9f8('0x4a'),_0xd82b23[_0xb9f8('0x34')]));if(_0x37998f!==_0xb9f8('0x40')){logger['info']('['+[_0x37998f[_0xb9f8('0x15')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x58dbc8,_0x4153f8[_0xb9f8('0x4b')],_0xd82b23[_0xb9f8('0x24')]);}})['catch'](function(_0x45411c){logger[_0xb9f8('0x14')]('['+[_0x37998f['toUpperCase']()]+_0xb9f8('0x4c'),util[_0xb9f8('0x4d')](_0x45411c,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index dde323c..d4e4805 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c55=['../../../../config/logger','error','[EXEC]','format','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','zendesk','salesforce','freshdesk','zoho','desk','vtiger','dynamics365','servicenow','exec','includes','data1','toLowerCase','data2','Configurations','data3','queue','log','EVENT\x20UNKNOWN','sugarcrm','freshsales','unknown\x20integration'];(function(_0x2b956d,_0x117a71){var _0x7d2919=function(_0x502e81){while(--_0x502e81){_0x2b956d['push'](_0x2b956d['shift']());}};_0x7d2919(++_0x117a71);}(_0x3c55,0x163));var _0x53c5=function(_0xb3e417,_0x3712ad){_0xb3e417=_0xb3e417-0x0;var _0x5c66f7=_0x3c55[_0xb3e417];return _0x5c66f7;};'use strict';var _=require(_0x53c5('0x0'));var util=require(_0x53c5('0x1'));var zendesk=require(_0x53c5('0x2'));var salesforce=require(_0x53c5('0x3'));var sugarcrm=require('./sugarcrm');var freshdesk=require('./freshdesk');var zoho=require('./zoho');var desk=require(_0x53c5('0x4'));var vtiger=require(_0x53c5('0x5'));var servicenow=require(_0x53c5('0x6'));var dynamics365=require(_0x53c5('0x7'));var freshsales=require(_0x53c5('0x8'));var integrations=[_0x53c5('0x9'),_0x53c5('0xa'),'sugarcrm',_0x53c5('0xb'),_0x53c5('0xc'),_0x53c5('0xd'),_0x53c5('0xe'),_0x53c5('0xf'),'freshsales',_0x53c5('0x10')];exports[_0x53c5('0x11')]=function(_0xba45e5,_0x18f6c2,_0x2d08e1,_0x132e4c,_0x487a7c,_0x773d71){if(_0x2d08e1){if(_[_0x53c5('0x12')](integrations,_0xba45e5[_0x53c5('0x13')][_0x53c5('0x14')]())){try{var _0xfd91d6=null;var _0x23baae='';var _0x1d9ecb=_0x2d08e1[_0xba45e5[_0x53c5('0x13')]['toLowerCase']()];if(_0x1d9ecb){var _0x4249de=_0x1d9ecb[_0xba45e5[_0x53c5('0x15')]];if(_0x4249de){var _0x18068a=_['find'](_0x4249de[_0x53c5('0x16')],{'id':parseInt(_0xba45e5[_0x53c5('0x17')],0xa)});if(_0x18068a){if(_0x132e4c){if(_0x487a7c&&_0x18f6c2['queue']){_0x23baae=_0x53c5('0x18');}else if(_0x18f6c2['routeId']){_0x23baae='outbound';}else{console[_0x53c5('0x19')](_0x53c5('0x1a'),_0x18f6c2);}}else{_0x23baae='unmanaged';}switch(_0xba45e5['data1'][_0x53c5('0x14')]()){case'zendesk':zendesk[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0xa'):salesforce[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0x1b'):sugarcrm[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0xb'):freshdesk[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0xc'):zoho[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0xd'):desk[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0xe'):vtiger[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0x1c'):freshsales['cs'](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71,_0x23baae);break;case _0x53c5('0x10'):servicenow['cs'](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71,_0x23baae);break;case'dynamics365':dynamics365['cs'](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71,_0x23baae);break;default:console['log'](_0x53c5('0x1d'));}}else{_0xfd91d6=require(_0x53c5('0x1e'))(_0xba45e5['data1']['toLowerCase']());_0xfd91d6[_0x53c5('0x1f')](_0x53c5('0x20'),util['format']('%s\x20configuration\x20#%s\x20not\x20found',_0xba45e5[_0x53c5('0x13')][_0x53c5('0x14')](),_0xba45e5['data3']));}}else{_0xfd91d6=require('../../../../config/logger')(_0xba45e5['data1']['toLowerCase']());_0xfd91d6[_0x53c5('0x1f')](_0x53c5('0x20'),util[_0x53c5('0x21')](_0x53c5('0x22'),_0xba45e5[_0x53c5('0x13')][_0x53c5('0x14')](),_0xba45e5[_0x53c5('0x15')]));}}else{}}catch(_0x40eee7){console[_0x53c5('0x1f')](_0x40eee7);}}}};
\ No newline at end of file
+var _0x3761=['Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','toLowerCase','salesforce','servicenow','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','sugarcrm','freshdesk','zoho','desk','dynamics365','freshsales','exec','includes','data1','data2','find'];(function(_0x44c683,_0x435b3e){var _0x310fef=function(_0x3ee169){while(--_0x3ee169){_0x44c683['push'](_0x44c683['shift']());}};_0x310fef(++_0x435b3e);}(_0x3761,0x152));var _0x1376=function(_0x3842da,_0x3eafe2){_0x3842da=_0x3842da-0x0;var _0xa6200a=_0x3761[_0x3842da];return _0xa6200a;};'use strict';var _=require(_0x1376('0x0'));var util=require(_0x1376('0x1'));var zendesk=require(_0x1376('0x2'));var salesforce=require('./salesforce');var sugarcrm=require(_0x1376('0x3'));var freshdesk=require(_0x1376('0x4'));var zoho=require(_0x1376('0x5'));var desk=require(_0x1376('0x6'));var vtiger=require(_0x1376('0x7'));var servicenow=require(_0x1376('0x8'));var dynamics365=require(_0x1376('0x9'));var freshsales=require(_0x1376('0xa'));var integrations=['zendesk','salesforce',_0x1376('0xb'),_0x1376('0xc'),_0x1376('0xd'),_0x1376('0xe'),'vtiger',_0x1376('0xf'),_0x1376('0x10'),'servicenow'];exports[_0x1376('0x11')]=function(_0x23e6ef,_0x5d5296,_0x1ab306,_0x39eaa9,_0x49015b,_0x478b3d){if(_0x1ab306){if(_[_0x1376('0x12')](integrations,_0x23e6ef[_0x1376('0x13')]['toLowerCase']())){try{var _0x431bc4=null;var _0x14c95f='';var _0x500018=_0x1ab306[_0x23e6ef[_0x1376('0x13')]['toLowerCase']()];if(_0x500018){var _0x6f2d27=_0x500018[_0x23e6ef[_0x1376('0x14')]];if(_0x6f2d27){var _0x2f0f42=_[_0x1376('0x15')](_0x6f2d27[_0x1376('0x16')],{'id':parseInt(_0x23e6ef[_0x1376('0x17')],0xa)});if(_0x2f0f42){if(_0x39eaa9){if(_0x49015b&&_0x5d5296['queue']){_0x14c95f=_0x1376('0x18');}else if(_0x5d5296[_0x1376('0x19')]){_0x14c95f=_0x1376('0x1a');}else{console[_0x1376('0x1b')](_0x1376('0x1c'),_0x5d5296);}}else{_0x14c95f=_0x1376('0x1d');}switch(_0x23e6ef['data1'][_0x1376('0x1e')]()){case'zendesk':zendesk[_0x14c95f](_0x23e6ef,_0x5d5296,_0x2f0f42,_0x39eaa9,_0x49015b,_0x6f2d27,_0x478b3d);break;case _0x1376('0x1f'):salesforce[_0x14c95f](_0x23e6ef,_0x5d5296,_0x2f0f42,_0x39eaa9,_0x49015b,_0x6f2d27,_0x478b3d);break;case'sugarcrm':sugarcrm[_0x14c95f](_0x23e6ef,_0x5d5296,_0x2f0f42,_0x39eaa9,_0x49015b,_0x6f2d27,_0x478b3d);break;case _0x1376('0xc'):freshdesk[_0x14c95f](_0x23e6ef,_0x5d5296,_0x2f0f42,_0x39eaa9,_0x49015b,_0x6f2d27,_0x478b3d);break;case _0x1376('0xd'):zoho[_0x14c95f](_0x23e6ef,_0x5d5296,_0x2f0f42,_0x39eaa9,_0x49015b,_0x6f2d27,_0x478b3d);break;case _0x1376('0xe'):desk[_0x14c95f](_0x23e6ef,_0x5d5296,_0x2f0f42,_0x39eaa9,_0x49015b,_0x6f2d27,_0x478b3d);break;case'vtiger':vtiger[_0x14c95f](_0x23e6ef,_0x5d5296,_0x2f0f42,_0x39eaa9,_0x49015b,_0x6f2d27,_0x478b3d);break;case _0x1376('0x10'):freshsales['cs'](_0x23e6ef,_0x5d5296,_0x2f0f42,_0x39eaa9,_0x49015b,_0x6f2d27,_0x478b3d,_0x14c95f);break;case _0x1376('0x20'):servicenow['cs'](_0x23e6ef,_0x5d5296,_0x2f0f42,_0x39eaa9,_0x49015b,_0x6f2d27,_0x478b3d,_0x14c95f);break;case'dynamics365':dynamics365['cs'](_0x23e6ef,_0x5d5296,_0x2f0f42,_0x39eaa9,_0x49015b,_0x6f2d27,_0x478b3d,_0x14c95f);break;default:console[_0x1376('0x1b')](_0x1376('0x21'));}}else{_0x431bc4=require(_0x1376('0x22'))(_0x23e6ef[_0x1376('0x13')][_0x1376('0x1e')]());_0x431bc4[_0x1376('0x23')](_0x1376('0x24'),util[_0x1376('0x25')](_0x1376('0x26'),_0x23e6ef[_0x1376('0x13')]['toLowerCase'](),_0x23e6ef[_0x1376('0x17')]));}}else{_0x431bc4=require(_0x1376('0x22'))(_0x23e6ef[_0x1376('0x13')]['toLowerCase']());_0x431bc4[_0x1376('0x23')](_0x1376('0x24'),util[_0x1376('0x25')](_0x1376('0x27'),_0x23e6ef[_0x1376('0x13')]['toLowerCase'](),_0x23e6ef['data2']));}}else{}}catch(_0x20ccb8){console[_0x1376('0x23')](_0x20ccb8);}}}};
\ No newline at end of file
index 0868ac7..475267f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe966=['recordingURL','email','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','newTab','user:%s','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','destcalleridname','[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','toUpperCase','calleridname','calleridnum','lastevent',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','util','../../../../config/environment','salesforce','redis','defaults','localhost','socket.io-emitter','emit','assign','getString','Subjects','Descriptions','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','lead','WhoId','account','WhatId','ticketType','Case','contact','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','find','execute','length','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','then','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','$or','additionalSearchLead','merge','Lead','account_contact_lead','additionalSearchAccount','Account','additionalSearchContact','Contact','first','Phone','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','includes','string','picklist','idField','content','toString','variable','variableName','Variable','name','password','concat','securityToken','Connection','remoteUri','clientId','clientSecret','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]'];(function(_0x59cfa6,_0x44a9d3){var _0x5513e3=function(_0x434b5c){while(--_0x434b5c){_0x59cfa6['push'](_0x59cfa6['shift']());}};_0x5513e3(++_0x44a9d3);}(_0xe966,0x1aa));var _0x6e96=function(_0x41eced,_0x1ff515){_0x41eced=_0x41eced-0x0;var _0x4bd54d=_0xe966[_0x41eced];return _0x4bd54d;};'use strict';var _=require(_0x6e96('0x0'));var rp=require(_0x6e96('0x1'));var moment=require(_0x6e96('0x2'));var BPromise=require(_0x6e96('0x3'));var md5=require(_0x6e96('0x4'));var jsforce=require('jsforce');var util=require(_0x6e96('0x5'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x6e96('0x6'));var logger=require('../../../../config/logger')(_0x6e96('0x7'));config[_0x6e96('0x8')]=_[_0x6e96('0x9')](config[_0x6e96('0x8')],{'host':_0x6e96('0xa'),'port':0x18eb});var io=require(_0x6e96('0xb'))(new Redis(config[_0x6e96('0x8')]));function emit(_0x1bd310,_0x4a1a82,_0x23bf79){io['to'](_0x1bd310)[_0x6e96('0xc')](_0x4a1a82,_0x23bf79);}function getTicket(_0x545587,_0x5e0744,_0x543e3b,_0x27a713,_0x57c87e,_0x16aaf0,_0x4940e8,_0x2516ce){var _0x54e5ad=Object[_0x6e96('0xd')]({},{'OwnerId':_0x5e0744['id'],'Subject':intUtil[_0x6e96('0xe')](_0x27a713[_0x6e96('0xf')],_0x57c87e,'\x20'),'Description':intUtil['getString'](_0x27a713[_0x6e96('0x10')],_0x57c87e,'\x0a')},getCustomFields(_0x16aaf0,_0x57c87e));if(_0x543e3b){if(_0x27a713['ticketType']===_0x6e96('0x11')){_0x54e5ad[_0x6e96('0x12')]=moment[_0x6e96('0x13')]();_0x54e5ad[_0x6e96('0x14')]=![];_0x54e5ad[_0x6e96('0x15')]=![];if(_0x543e3b[_0x6e96('0x16')]==='contact'||_0x543e3b['endUserType']===_0x6e96('0x17')){_0x54e5ad[_0x6e96('0x18')]=_0x543e3b['id'];}else if(_0x543e3b[_0x6e96('0x16')]===_0x6e96('0x19')){_0x54e5ad[_0x6e96('0x1a')]=_0x543e3b['id'];}}else if(_0x27a713[_0x6e96('0x1b')]===_0x6e96('0x1c')){if(_0x543e3b[_0x6e96('0x16')]===_0x6e96('0x1d')){_0x54e5ad[_0x6e96('0x1e')]=_0x543e3b['id'];}else if(_0x543e3b[_0x6e96('0x16')]===_0x6e96('0x19')){_0x54e5ad[_0x6e96('0x1f')]=_0x543e3b['id'];}else if(_0x543e3b[_0x6e96('0x16')]===_0x6e96('0x17')&&_0x27a713['leadId']){_0x54e5ad[_0x27a713[_0x6e96('0x20')]]=_0x543e3b['id'];}else{logger[_0x6e96('0x21')](_0x6e96('0x22'));}}}return _0x4940e8[_0x6e96('0x23')](_0x27a713[_0x6e96('0x1b')])[_0x6e96('0x24')](_0x54e5ad);}function getUser(_0x46f9bf,_0xd73a74,_0x356079){if(!_[_0x6e96('0x25')](_0xd73a74)&&intUtil[_0x6e96('0x26')](_0xd73a74)){var _0x1a61bf={'Email':_0xd73a74};var _0x13d428={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x356079[_0x6e96('0x23')]('User')[_0x6e96('0x27')](_0x1a61bf,_0x13d428)[_0x6e96('0x28')]()['then'](function(_0x3d779a){if(_0x3d779a[_0x6e96('0x29')]){var _0x481de9=_[_0x6e96('0x27')](_0x3d779a,function(_0x1969c0){return _0x1969c0[_0x6e96('0x2a')]===_0xd73a74;});if(_0x481de9){logger['info'](_0x6e96('0x2b'),_0xd73a74);return BPromise[_0x6e96('0x2c')]({'id':_0x481de9['Id'],'name':_0x481de9[_0x6e96('0x2d')]});}}else{logger['info'](_0x6e96('0x2e'),_0xd73a74);return _0x356079[_0x6e96('0x2f')]()[_0x6e96('0x30')](function(_0x164ae5){return BPromise[_0x6e96('0x2c')]({'id':_0x164ae5[_0x6e96('0x31')],'name':_0x164ae5['display_name']});});}});}else{logger[_0x6e96('0x21')](_0x6e96('0x2e'),_0xd73a74);return _0x356079['identity']()[_0x6e96('0x30')](function(_0x4db31c){return BPromise[_0x6e96('0x2c')]({'id':_0x4db31c[_0x6e96('0x31')],'name':_0x4db31c[_0x6e96('0x32')]});});}}function getEndUser(_0x27fbda,_0x14dc8a,_0x36e0af,_0xc2a667,_0x5844be){var _0x265cd6={'$or':{'Phone':_0xc2a667}};var _0x1ce70e={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()['then'](function(){logger[_0x6e96('0x21')](_0x6e96('0x33'),_0xc2a667,_0x14dc8a[_0x6e96('0x34')]);switch(_0x14dc8a[_0x6e96('0x34')]){case _0x6e96('0x35'):var _0x405a70=_[_0x6e96('0x36')](_0x265cd6);if(_0x14dc8a['additionalSearchContact']){var _0x53a194={};_0x53a194[_0x14dc8a['additionalSearchContact']]=_0xc2a667;_['merge'](_0x405a70[_0x6e96('0x37')],_0x53a194);}return _0x5844be['sobject']('Contact')[_0x6e96('0x27')](_0x405a70,_0x1ce70e)['execute']()[_0x6e96('0x30')](function(_0x4b2561){if(_0x4b2561&&_0x4b2561[_0x6e96('0x29')]){return _0x4b2561;}else{var _0x25baad=_[_0x6e96('0x36')](_0x265cd6);if(_0x14dc8a[_0x6e96('0x38')]){var _0x48db1d={};_0x48db1d[_0x14dc8a[_0x6e96('0x38')]]=_0xc2a667;_[_0x6e96('0x39')](_0x25baad[_0x6e96('0x37')],_0x48db1d);}return _0x5844be[_0x6e96('0x23')](_0x6e96('0x3a'))[_0x6e96('0x27')](_0x25baad,_0x1ce70e);}});case _0x6e96('0x3b'):var _0x14d3e0=_[_0x6e96('0x36')](_0x265cd6);if(_0x14dc8a[_0x6e96('0x3c')]){var _0x53a194={};_0x53a194[_0x14dc8a[_0x6e96('0x3c')]]=_0xc2a667;_[_0x6e96('0x39')](_0x14d3e0[_0x6e96('0x37')],_0x53a194);}return _0x5844be[_0x6e96('0x23')](_0x6e96('0x3d'))[_0x6e96('0x27')](_0x14d3e0,_0x1ce70e)[_0x6e96('0x28')]()[_0x6e96('0x30')](function(_0x344da3){if(_0x344da3&&_0x344da3[_0x6e96('0x29')]){return _0x344da3;}else{var _0x581553=_[_0x6e96('0x36')](_0x265cd6);if(_0x14dc8a[_0x6e96('0x3e')]){var _0x292c1a={};_0x292c1a[_0x14dc8a[_0x6e96('0x3e')]]=_0xc2a667;_[_0x6e96('0x39')](_0x581553[_0x6e96('0x37')],_0x292c1a);}return _0x5844be[_0x6e96('0x23')](_0x6e96('0x3f'))[_0x6e96('0x27')](_0x581553,_0x1ce70e)[_0x6e96('0x30')](function(_0x37ea86){if(_0x37ea86&&_0x37ea86[_0x6e96('0x29')]){return _0x37ea86;}else{var _0x281fb2=_['cloneDeep'](_0x265cd6);if(_0x14dc8a[_0x6e96('0x38')]){var _0x2ba0a2={};_0x2ba0a2[_0x14dc8a[_0x6e96('0x38')]]=_0xc2a667;_[_0x6e96('0x39')](_0x281fb2[_0x6e96('0x37')],_0x2ba0a2);}return _0x5844be['sobject'](_0x6e96('0x3a'))[_0x6e96('0x27')](_0x281fb2,_0x1ce70e);}});}});case'contact':var _0x405a70=_['cloneDeep'](_0x265cd6);if(_0x14dc8a[_0x6e96('0x3e')]){var _0x53a194={};_0x53a194[_0x14dc8a['additionalSearchContact']]=_0xc2a667;_[_0x6e96('0x39')](_0x405a70['$or'],_0x53a194);}return _0x5844be[_0x6e96('0x23')](_0x6e96('0x3f'))[_0x6e96('0x27')](_0x405a70,_0x1ce70e)['execute']();case'lead':var _0x5be81c=_['cloneDeep'](_0x265cd6);if(_0x14dc8a[_0x6e96('0x38')]){var _0x53a194={};_0x53a194[_0x14dc8a['additionalSearchLead']]=_0xc2a667;_[_0x6e96('0x39')](_0x5be81c[_0x6e96('0x37')],_0x53a194);}return _0x5844be[_0x6e96('0x23')](_0x6e96('0x3a'))['find'](_0x5be81c,_0x1ce70e);case _0x6e96('0x19'):var _0x14d3e0=_['cloneDeep'](_0x265cd6);if(_0x14dc8a[_0x6e96('0x3c')]){var _0x53a194={};_0x53a194[_0x14dc8a[_0x6e96('0x3c')]]=_0xc2a667;_['merge'](_0x14d3e0[_0x6e96('0x37')],_0x53a194);}return _0x5844be[_0x6e96('0x23')](_0x6e96('0x3d'))[_0x6e96('0x27')](_0x14d3e0,_0x1ce70e);default:return null;}})[_0x6e96('0x30')](function(_0x2aa3ca){if(_0x2aa3ca&&_0x2aa3ca[_0x6e96('0x29')]){var _0x3be3fc=_[_0x6e96('0x40')](_0x2aa3ca);if(_0x3be3fc){return BPromise[_0x6e96('0x2c')]({'id':_0x3be3fc['Id'],'name':_0x3be3fc[_0x6e96('0x2d')],'phone':_0x3be3fc[_0x6e96('0x41')],'endUserType':_0x3be3fc['attributes'][_0x6e96('0x42')][_0x6e96('0x43')]()});}}})[_0x6e96('0x30')](function(_0x4a64ef){if(_0x4a64ef){logger[_0x6e96('0x21')](_0x6e96('0x44'),_0x4a64ef[_0x6e96('0x16')],_0xc2a667);return BPromise[_0x6e96('0x2c')](_0x4a64ef);}else{logger[_0x6e96('0x21')](_0x6e96('0x45'),_0xc2a667);var _0x5bbe96={'Phone':_0xc2a667};if(_0x14dc8a[_0x6e96('0x46')]){if(_0x14dc8a[_0x6e96('0x46')]===_0x6e96('0x1d')){logger[_0x6e96('0x21')](_0x6e96('0x47'),_0xc2a667,_0x14dc8a[_0x6e96('0x46')]);_0x5bbe96[_0x6e96('0x48')]=_0x36e0af!==_0x6e96('0x49')?_0x36e0af:util[_0x6e96('0x4a')]('Caller\x20-\x20%s',_0xc2a667);}else if(_0x14dc8a[_0x6e96('0x46')]==='lead'){logger[_0x6e96('0x21')](_0x6e96('0x47'),_0xc2a667,_0x14dc8a[_0x6e96('0x46')]);_0x5bbe96[_0x6e96('0x48')]=_0x36e0af!==_0x6e96('0x49')?_0x36e0af:util['format'](_0x6e96('0x4b'),_0xc2a667);_0x5bbe96[_0x6e96('0x4c')]=_0x6e96('0x4d');}else if(_0x14dc8a[_0x6e96('0x46')]===_0x6e96('0x19')){logger[_0x6e96('0x21')](_0x6e96('0x47'),_0xc2a667,_0x14dc8a['moduleCreate']);_0x5bbe96['Name']=_0x36e0af!==_0x6e96('0x49')?_0x36e0af:util[_0x6e96('0x4a')](_0x6e96('0x4b'),_0xc2a667);}else{return null;}}return _0x5844be['sobject'](_['upperFirst'](_0x14dc8a[_0x6e96('0x46')]))[_0x6e96('0x24')](_0x5bbe96)[_0x6e96('0x30')](function(_0x18e9b7){return BPromise[_0x6e96('0x2c')]({'id':_0x18e9b7['id'],'endUserType':_0x14dc8a[_0x6e96('0x46')]});});}});}function getCustomFields(_0x35a647,_0x453299){var _0x5333c3={};if(_0x35a647[_0x6e96('0x29')]>0x0){_['forEach'](_0x35a647,function(_0x18eb18){if(_[_0x6e96('0x4e')]([_0x6e96('0x4f'),_0x6e96('0x50')],_0x18eb18[_0x6e96('0x42')])&&_0x18eb18['idField']){_0x5333c3[_0x18eb18[_0x6e96('0x51')]]=_0x18eb18[_0x6e96('0x52')][_0x6e96('0x53')]();}else if(_0x18eb18[_0x6e96('0x42')]===_0x6e96('0x54')&&_0x18eb18[_0x6e96('0x55')]&&_0x18eb18[_0x6e96('0x51')]){_0x453299[_0x18eb18['variableName']]&&(_0x5333c3[_0x18eb18[_0x6e96('0x51')]]=_0x453299[_0x18eb18[_0x6e96('0x55')]][_0x6e96('0x53')]());}else if(_0x18eb18[_0x6e96('0x42')]==='customVariable'&&_0x18eb18[_0x6e96('0x56')]&&_0x18eb18[_0x6e96('0x56')][_0x6e96('0x57')]&&_0x18eb18[_0x6e96('0x51')]){_0x453299[_0x18eb18[_0x6e96('0x56')][_0x6e96('0x57')][_0x6e96('0x43')]()]&&(_0x5333c3[_0x18eb18[_0x6e96('0x51')]]=_0x453299[_0x18eb18['Variable'][_0x6e96('0x57')][_0x6e96('0x43')]()][_0x6e96('0x53')]());}});}return _0x5333c3;}function getConnection(_0x22952e){var _0x2a67ed=_0x22952e[_0x6e96('0x58')][_0x6e96('0x59')](_0x22952e[_0x6e96('0x5a')]);var _0x257573=new jsforce[(_0x6e96('0x5b'))]({'oauth2':{'loginUrl':_0x22952e[_0x6e96('0x5c')]||'https://login.salesforce.com','clientId':_0x22952e[_0x6e96('0x5d')],'clientSecret':_0x22952e[_0x6e96('0x5e')]}});return _0x257573['login'](_0x22952e[_0x6e96('0x5f')],_0x2a67ed)['then'](function(){logger[_0x6e96('0x21')](_0x6e96('0x60'));return _0x257573;});}exports[_0x6e96('0x61')]=function(_0x4a00bf,_0x5bb23e,_0x4cb540,_0x54f856,_0x50fc28,_0xf8da97){var _0x15132b,_0x2d70cb,_0x38736b,_0x4cc920;_0xf8da97[_0x6e96('0x62')]=intUtil[_0x6e96('0x63')](_0xf8da97[_0x6e96('0x62')]);_0xf8da97['remoteUri']=intUtil[_0x6e96('0x63')](_0xf8da97[_0x6e96('0x5c')]);if(_0x50fc28&&_0x50fc28[_0x6e96('0x64')]){logger[_0x6e96('0x21')](_0x6e96('0x65'),'Recording\x20is\x20enabled!');_0x5bb23e[_0x6e96('0x66')]=util[_0x6e96('0x4a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xf8da97[_0x6e96('0x62')],_0x5bb23e['uniqueid'],md5(_0x5bb23e['uniqueid']));}else{_0x5bb23e['recordingURL']='';}return getConnection(_0xf8da97)[_0x6e96('0x30')](function(_0x5cd66c){_0x4cc920=_0x5cd66c;return getUser(_0xf8da97,_0x54f856[_0x6e96('0x67')],_0x4cc920);})[_0x6e96('0x30')](function(_0xd7d4bd){_0x15132b=_0xd7d4bd;return getEndUser(_0xf8da97,_0x4cb540,_0x5bb23e['calleridname'],_0x5bb23e['calleridnum'],_0x4cc920);})[_0x6e96('0x30')](function(_0x26414a){_0x2d70cb=_0x26414a;return getTicket(_0xf8da97,_0x15132b,_0x2d70cb,_0x4cb540,_0x5bb23e,_0x4cb540[_0x6e96('0x68')],_0x4cc920,_0x6e96('0x61'));})[_0x6e96('0x30')](function(_0x2eaa07){_0x38736b=_0x2eaa07;logger[_0x6e96('0x21')](_0x6e96('0x69'),_0x38736b['id']);logger['info'](_0x6e96('0x6a'),_0x38736b['id'],_0x54f856[_0x6e96('0x57')],_0xf8da97[_0x6e96('0x42')]);switch(_0xf8da97[_0x6e96('0x42')]){case'integrationTab':emit(util[_0x6e96('0x4a')]('user:%s',_0x54f856[_0x6e96('0x57')]),_0x6e96('0x6b'),{'recordId':_0x38736b['id']});break;case _0x6e96('0x6c'):emit(util[_0x6e96('0x4a')](_0x6e96('0x6d'),_0x54f856[_0x6e96('0x57')]),_0x6e96('0x6e'),{'uri':util['format'](_0x6e96('0x6f'),_0x4cc920[_0x6e96('0x70')],_0x38736b['id'])});break;default:logger[_0x6e96('0x71')](_0x6e96('0x72'));}})[_0x6e96('0x73')](function(_0x407e59){logger['error'](_0x6e96('0x65'),_0x407e59);});};exports[_0x6e96('0x74')]=function(_0x4b68df,_0x35d3c7,_0x400aad,_0x13411,_0x573f0b,_0x395617,_0x4966a9){var _0x2827a7,_0x24a938,_0x15a021,_0x488759;_0x395617[_0x6e96('0x62')]=intUtil[_0x6e96('0x63')](_0x395617[_0x6e96('0x62')]);_0x395617[_0x6e96('0x5c')]=intUtil[_0x6e96('0x63')](_0x395617[_0x6e96('0x5c')]);if(_0x4966a9&&_0x4966a9['recordingFormat']&&_0x4966a9[_0x6e96('0x75')]!=='none'){logger[_0x6e96('0x21')](_0x6e96('0x76'),_0x6e96('0x77'));_0x35d3c7[_0x6e96('0x66')]=util['format'](_0x6e96('0x78'),_0x395617[_0x6e96('0x62')],_0x35d3c7[_0x6e96('0x79')],md5(_0x35d3c7[_0x6e96('0x79')]));}return getConnection(_0x395617)[_0x6e96('0x30')](function(_0x3fd68f){_0x488759=_0x3fd68f;return getUser(_0x395617,_0x13411['email'],_0x488759);})['then'](function(_0x5cb618){_0x2827a7=_0x5cb618;return getEndUser(_0x395617,_0x400aad,_0x35d3c7[_0x6e96('0x7a')],_0x35d3c7['destcalleridnum'],_0x488759);})['then'](function(_0x56c9f1){_0x24a938=_0x56c9f1;return getTicket(_0x395617,_0x2827a7,_0x24a938,_0x400aad,_0x35d3c7,_0x400aad['Fields'],_0x488759,_0x6e96('0x74'));})['then'](function(_0x4cb658){_0x15a021=_0x4cb658;logger['info'](_0x6e96('0x7b'),_0x15a021['id']);logger[_0x6e96('0x21')](_0x6e96('0x7c'),_0x15a021['id'],_0x13411[_0x6e96('0x57')],_0x395617[_0x6e96('0x42')]);switch(_0x395617[_0x6e96('0x42')]){case _0x6e96('0x7d'):emit(util[_0x6e96('0x4a')](_0x6e96('0x6d'),_0x13411[_0x6e96('0x57')]),_0x6e96('0x6b'),{'recordId':_0x15a021['id']});break;case _0x6e96('0x6c'):emit(util['format'](_0x6e96('0x6d'),_0x13411[_0x6e96('0x57')]),'trigger:browser:url',{'uri':util[_0x6e96('0x4a')](_0x6e96('0x6f'),_0x488759[_0x6e96('0x70')],_0x15a021['id'])});break;default:logger[_0x6e96('0x71')]('[OUTBOUND]',_0x6e96('0x7e'));}})[_0x6e96('0x73')](function(_0x475651){logger[_0x6e96('0x71')](_0x6e96('0x76'),_0x475651);});};exports['unmanaged']=function(_0x4f8476,_0x2f386e,_0x2fa0b6,_0x1d791c,_0x2a3119,_0xf1741f){var _0x353445,_0x29d1b8,_0x319aa5,_0x527709;_0xf1741f['serverUrl']=intUtil[_0x6e96('0x63')](_0xf1741f[_0x6e96('0x62')]);_0xf1741f['remoteUri']=intUtil['stripTrailingSlash'](_0xf1741f[_0x6e96('0x5c')]);if(_0x2a3119&&_0x2a3119['monitor_format']){logger[_0x6e96('0x21')]('['+_0x2f386e['lastevent'][_0x6e96('0x7f')]()+']','Recording\x20is\x20enabled!');_0x2f386e[_0x6e96('0x66')]=util[_0x6e96('0x4a')](_0x6e96('0x78'),_0xf1741f[_0x6e96('0x62')],_0x2f386e[_0x6e96('0x79')],md5(_0x2f386e['uniqueid']));}else{_0x2f386e[_0x6e96('0x66')]='';}return getConnection(_0xf1741f)['then'](function(_0x16ac74){_0x527709=_0x16ac74;if(!_[_0x6e96('0x25')](_0x1d791c)){return getUser(_0xf1741f,_0x1d791c['name'],_0x527709);}else{return getUser(_0xf1741f,null,_0x527709);}})[_0x6e96('0x30')](function(_0x1ff29b){_0x353445=_0x1ff29b;return getEndUser(_0xf1741f,_0x2fa0b6,_0x2f386e[_0x6e96('0x80')],_0x2f386e[_0x6e96('0x81')],_0x527709);})[_0x6e96('0x30')](function(_0x50f38d){_0x29d1b8=_0x50f38d;return getTicket(_0xf1741f,_0x353445,_0x29d1b8,_0x2fa0b6,_0x2f386e,_0x2fa0b6[_0x6e96('0x68')],_0x527709);})[_0x6e96('0x30')](function(_0x3d5974){_0x319aa5=_0x3d5974;logger[_0x6e96('0x21')]('['+_0x2f386e['lastevent'][_0x6e96('0x7f')]()+']\x20Ticket\x20%s\x20created.',_0x319aa5['id']);logger[_0x6e96('0x21')]('['+_0x2f386e[_0x6e96('0x82')][_0x6e96('0x7f')]()+_0x6e96('0x83'),_0xf1741f[_0x6e96('0x42')]);})['catch'](function(_0x5ad60b){logger[_0x6e96('0x71')]('['+_0x2f386e[_0x6e96('0x82')]['toUpperCase']()+']',_0x5ad60b);});};
\ No newline at end of file
+var _0xd4e6=['ActivityDate','utc','IsReminderSet','endUserType','lead','account','WhatId','ticketType','Case','contact','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','User','execute','length','find','Email','Agent\x20%s\x20found.','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','then','resolve','user_id','identity','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','contact_lead','additionalSearchContact','Contact','cloneDeep','additionalSearchLead','merge','$or','Lead','account_contact_lead','additionalSearchAccount','Account','first','Phone','attributes','type','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','forEach','includes','picklist','idField','content','toString','variable','variableName','Variable','name','toLowerCase','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','recordingURL','email','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','newTab','trigger:browser:url','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','recordingFormat','none','[OUTBOUND]','destcalleridname','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','%s/%s/e','lastevent','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','calleridname',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','util','./util','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','assign','getString','Subjects'];(function(_0x2a5eaa,_0xb3519f){var _0x350d0f=function(_0x5c17d3){while(--_0x5c17d3){_0x2a5eaa['push'](_0x2a5eaa['shift']());}};_0x350d0f(++_0xb3519f);}(_0xd4e6,0x168));var _0x6d4e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xd4e6[_0x5c351c];return _0x26f3b3;};'use strict';var _=require(_0x6d4e('0x0'));var rp=require(_0x6d4e('0x1'));var moment=require(_0x6d4e('0x2'));var BPromise=require(_0x6d4e('0x3'));var md5=require(_0x6d4e('0x4'));var jsforce=require('jsforce');var util=require(_0x6d4e('0x5'));var Redis=require('ioredis');var intUtil=require(_0x6d4e('0x6'));var config=require('../../../../config/environment');var logger=require(_0x6d4e('0x7'))('salesforce');config[_0x6d4e('0x8')]=_[_0x6d4e('0x9')](config['redis'],{'host':_0x6d4e('0xa'),'port':0x18eb});var io=require(_0x6d4e('0xb'))(new Redis(config['redis']));function emit(_0x518191,_0x5efed6,_0x4b1a72){io['to'](_0x518191)['emit'](_0x5efed6,_0x4b1a72);}function getTicket(_0x389c11,_0x584a59,_0x5b01e0,_0x4c96c0,_0x44f1b5,_0x4f3e30,_0x5855b6,_0x2c7fc9){var _0x29007e=Object[_0x6d4e('0xc')]({},{'OwnerId':_0x584a59['id'],'Subject':intUtil[_0x6d4e('0xd')](_0x4c96c0[_0x6d4e('0xe')],_0x44f1b5,'\x20'),'Description':intUtil[_0x6d4e('0xd')](_0x4c96c0['Descriptions'],_0x44f1b5,'\x0a')},getCustomFields(_0x4f3e30,_0x44f1b5));if(_0x5b01e0){if(_0x4c96c0['ticketType']==='Task'){_0x29007e[_0x6d4e('0xf')]=moment[_0x6d4e('0x10')]();_0x29007e[_0x6d4e('0x11')]=![];_0x29007e['IsRecurrence']=![];if(_0x5b01e0['endUserType']==='contact'||_0x5b01e0[_0x6d4e('0x12')]===_0x6d4e('0x13')){_0x29007e['WhoId']=_0x5b01e0['id'];}else if(_0x5b01e0['endUserType']===_0x6d4e('0x14')){_0x29007e[_0x6d4e('0x15')]=_0x5b01e0['id'];}}else if(_0x4c96c0[_0x6d4e('0x16')]===_0x6d4e('0x17')){if(_0x5b01e0[_0x6d4e('0x12')]===_0x6d4e('0x18')){_0x29007e[_0x6d4e('0x19')]=_0x5b01e0['id'];}else if(_0x5b01e0[_0x6d4e('0x12')]==='account'){_0x29007e[_0x6d4e('0x1a')]=_0x5b01e0['id'];}else if(_0x5b01e0[_0x6d4e('0x12')]===_0x6d4e('0x13')&&_0x4c96c0[_0x6d4e('0x1b')]){_0x29007e[_0x4c96c0[_0x6d4e('0x1b')]]=_0x5b01e0['id'];}else{logger[_0x6d4e('0x1c')](_0x6d4e('0x1d'));}}}return _0x5855b6[_0x6d4e('0x1e')](_0x4c96c0[_0x6d4e('0x16')])[_0x6d4e('0x1f')](_0x29007e);}function getUser(_0x3d8c94,_0x12d851,_0x547587){if(!_[_0x6d4e('0x20')](_0x12d851)&&intUtil['validateEmail'](_0x12d851)){var _0x38d234={'Email':_0x12d851};var _0xf1b164={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x547587[_0x6d4e('0x1e')](_0x6d4e('0x21'))['find'](_0x38d234,_0xf1b164)[_0x6d4e('0x22')]()['then'](function(_0xade139){if(_0xade139[_0x6d4e('0x23')]){var _0x374ee4=_[_0x6d4e('0x24')](_0xade139,function(_0x52d83a){return _0x52d83a[_0x6d4e('0x25')]===_0x12d851;});if(_0x374ee4){logger[_0x6d4e('0x1c')](_0x6d4e('0x26'),_0x12d851);return BPromise['resolve']({'id':_0x374ee4['Id'],'name':_0x374ee4[_0x6d4e('0x27')]});}}else{logger[_0x6d4e('0x1c')](_0x6d4e('0x28'),_0x12d851);return _0x547587['identity']()[_0x6d4e('0x29')](function(_0x4c7d29){return BPromise[_0x6d4e('0x2a')]({'id':_0x4c7d29[_0x6d4e('0x2b')],'name':_0x4c7d29['display_name']});});}});}else{logger['info'](_0x6d4e('0x28'),_0x12d851);return _0x547587[_0x6d4e('0x2c')]()[_0x6d4e('0x29')](function(_0x898d7b){return BPromise['resolve']({'id':_0x898d7b[_0x6d4e('0x2b')],'name':_0x898d7b[_0x6d4e('0x2d')]});});}}function getEndUser(_0x4e2875,_0x3dea36,_0x2f2e35,_0x213b8b,_0x16fd68){var _0x13ca88={'$or':{'Phone':_0x213b8b}};var _0x4fa5cb={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x6d4e('0x2a')]()['then'](function(){logger[_0x6d4e('0x1c')](_0x6d4e('0x2e'),_0x213b8b,_0x3dea36['moduleSearch']);switch(_0x3dea36['moduleSearch']){case _0x6d4e('0x2f'):var _0x3c7284=_['cloneDeep'](_0x13ca88);if(_0x3dea36[_0x6d4e('0x30')]){var _0x5ac35c={};_0x5ac35c[_0x3dea36[_0x6d4e('0x30')]]=_0x213b8b;_['merge'](_0x3c7284['$or'],_0x5ac35c);}return _0x16fd68[_0x6d4e('0x1e')](_0x6d4e('0x31'))['find'](_0x3c7284,_0x4fa5cb)[_0x6d4e('0x22')]()[_0x6d4e('0x29')](function(_0x3f7654){if(_0x3f7654&&_0x3f7654[_0x6d4e('0x23')]){return _0x3f7654;}else{var _0x5dee92=_[_0x6d4e('0x32')](_0x13ca88);if(_0x3dea36[_0x6d4e('0x33')]){var _0x6133a4={};_0x6133a4[_0x3dea36[_0x6d4e('0x33')]]=_0x213b8b;_[_0x6d4e('0x34')](_0x5dee92[_0x6d4e('0x35')],_0x6133a4);}return _0x16fd68[_0x6d4e('0x1e')](_0x6d4e('0x36'))[_0x6d4e('0x24')](_0x5dee92,_0x4fa5cb);}});case _0x6d4e('0x37'):var _0x97b00d=_['cloneDeep'](_0x13ca88);if(_0x3dea36[_0x6d4e('0x38')]){var _0x5ac35c={};_0x5ac35c[_0x3dea36[_0x6d4e('0x38')]]=_0x213b8b;_[_0x6d4e('0x34')](_0x97b00d[_0x6d4e('0x35')],_0x5ac35c);}return _0x16fd68[_0x6d4e('0x1e')](_0x6d4e('0x39'))['find'](_0x97b00d,_0x4fa5cb)[_0x6d4e('0x22')]()['then'](function(_0x55289e){if(_0x55289e&&_0x55289e[_0x6d4e('0x23')]){return _0x55289e;}else{var _0x254e5a=_[_0x6d4e('0x32')](_0x13ca88);if(_0x3dea36[_0x6d4e('0x30')]){var _0x3f3b4d={};_0x3f3b4d[_0x3dea36[_0x6d4e('0x30')]]=_0x213b8b;_[_0x6d4e('0x34')](_0x254e5a[_0x6d4e('0x35')],_0x3f3b4d);}return _0x16fd68[_0x6d4e('0x1e')](_0x6d4e('0x31'))['find'](_0x254e5a,_0x4fa5cb)[_0x6d4e('0x29')](function(_0x37ce92){if(_0x37ce92&&_0x37ce92[_0x6d4e('0x23')]){return _0x37ce92;}else{var _0x54de8b=_['cloneDeep'](_0x13ca88);if(_0x3dea36['additionalSearchLead']){var _0x25f8ed={};_0x25f8ed[_0x3dea36[_0x6d4e('0x33')]]=_0x213b8b;_[_0x6d4e('0x34')](_0x54de8b[_0x6d4e('0x35')],_0x25f8ed);}return _0x16fd68[_0x6d4e('0x1e')](_0x6d4e('0x36'))[_0x6d4e('0x24')](_0x54de8b,_0x4fa5cb);}});}});case _0x6d4e('0x18'):var _0x3c7284=_[_0x6d4e('0x32')](_0x13ca88);if(_0x3dea36['additionalSearchContact']){var _0x5ac35c={};_0x5ac35c[_0x3dea36['additionalSearchContact']]=_0x213b8b;_[_0x6d4e('0x34')](_0x3c7284[_0x6d4e('0x35')],_0x5ac35c);}return _0x16fd68[_0x6d4e('0x1e')](_0x6d4e('0x31'))[_0x6d4e('0x24')](_0x3c7284,_0x4fa5cb)['execute']();case _0x6d4e('0x13'):var _0x5b7908=_[_0x6d4e('0x32')](_0x13ca88);if(_0x3dea36[_0x6d4e('0x33')]){var _0x5ac35c={};_0x5ac35c[_0x3dea36[_0x6d4e('0x33')]]=_0x213b8b;_['merge'](_0x5b7908[_0x6d4e('0x35')],_0x5ac35c);}return _0x16fd68[_0x6d4e('0x1e')](_0x6d4e('0x36'))[_0x6d4e('0x24')](_0x5b7908,_0x4fa5cb);case'account':var _0x97b00d=_[_0x6d4e('0x32')](_0x13ca88);if(_0x3dea36['additionalSearchAccount']){var _0x5ac35c={};_0x5ac35c[_0x3dea36['additionalSearchAccount']]=_0x213b8b;_[_0x6d4e('0x34')](_0x97b00d[_0x6d4e('0x35')],_0x5ac35c);}return _0x16fd68[_0x6d4e('0x1e')]('Account')[_0x6d4e('0x24')](_0x97b00d,_0x4fa5cb);default:return null;}})[_0x6d4e('0x29')](function(_0x4f7708){if(_0x4f7708&&_0x4f7708[_0x6d4e('0x23')]){var _0x475d67=_[_0x6d4e('0x3a')](_0x4f7708);if(_0x475d67){return BPromise[_0x6d4e('0x2a')]({'id':_0x475d67['Id'],'name':_0x475d67[_0x6d4e('0x27')],'phone':_0x475d67[_0x6d4e('0x3b')],'endUserType':_0x475d67[_0x6d4e('0x3c')][_0x6d4e('0x3d')]['toLowerCase']()});}}})['then'](function(_0x2127e1){if(_0x2127e1){logger[_0x6d4e('0x1c')](_0x6d4e('0x3e'),_0x2127e1[_0x6d4e('0x12')],_0x213b8b);return BPromise[_0x6d4e('0x2a')](_0x2127e1);}else{logger[_0x6d4e('0x1c')](_0x6d4e('0x3f'),_0x213b8b);var _0x4bf4ef={'Phone':_0x213b8b};if(_0x3dea36[_0x6d4e('0x40')]){if(_0x3dea36[_0x6d4e('0x40')]===_0x6d4e('0x18')){logger[_0x6d4e('0x1c')](_0x6d4e('0x41'),_0x213b8b,_0x3dea36[_0x6d4e('0x40')]);_0x4bf4ef[_0x6d4e('0x42')]=_0x2f2e35!==_0x6d4e('0x43')?_0x2f2e35:util[_0x6d4e('0x44')](_0x6d4e('0x45'),_0x213b8b);}else if(_0x3dea36[_0x6d4e('0x40')]===_0x6d4e('0x13')){logger['info'](_0x6d4e('0x41'),_0x213b8b,_0x3dea36['moduleCreate']);_0x4bf4ef['LastName']=_0x2f2e35!==_0x6d4e('0x43')?_0x2f2e35:util['format'](_0x6d4e('0x45'),_0x213b8b);_0x4bf4ef[_0x6d4e('0x46')]=_0x6d4e('0x47');}else if(_0x3dea36[_0x6d4e('0x40')]===_0x6d4e('0x14')){logger[_0x6d4e('0x1c')](_0x6d4e('0x41'),_0x213b8b,_0x3dea36['moduleCreate']);_0x4bf4ef[_0x6d4e('0x27')]=_0x2f2e35!=='<unknown>'?_0x2f2e35:util[_0x6d4e('0x44')]('Caller\x20-\x20%s',_0x213b8b);}else{return null;}}return _0x16fd68[_0x6d4e('0x1e')](_['upperFirst'](_0x3dea36[_0x6d4e('0x40')]))[_0x6d4e('0x1f')](_0x4bf4ef)[_0x6d4e('0x29')](function(_0x2953){return BPromise[_0x6d4e('0x2a')]({'id':_0x2953['id'],'endUserType':_0x3dea36[_0x6d4e('0x40')]});});}});}function getCustomFields(_0x31b8a7,_0x2874e5){var _0x4cd2ba={};if(_0x31b8a7[_0x6d4e('0x23')]>0x0){_[_0x6d4e('0x48')](_0x31b8a7,function(_0x3c65fb){if(_[_0x6d4e('0x49')](['string',_0x6d4e('0x4a')],_0x3c65fb[_0x6d4e('0x3d')])&&_0x3c65fb['idField']){_0x4cd2ba[_0x3c65fb[_0x6d4e('0x4b')]]=_0x3c65fb[_0x6d4e('0x4c')][_0x6d4e('0x4d')]();}else if(_0x3c65fb[_0x6d4e('0x3d')]===_0x6d4e('0x4e')&&_0x3c65fb[_0x6d4e('0x4f')]&&_0x3c65fb[_0x6d4e('0x4b')]){_0x2874e5[_0x3c65fb[_0x6d4e('0x4f')]]&&(_0x4cd2ba[_0x3c65fb[_0x6d4e('0x4b')]]=_0x2874e5[_0x3c65fb[_0x6d4e('0x4f')]][_0x6d4e('0x4d')]());}else if(_0x3c65fb['type']==='customVariable'&&_0x3c65fb['Variable']&&_0x3c65fb[_0x6d4e('0x50')][_0x6d4e('0x51')]&&_0x3c65fb['idField']){_0x2874e5[_0x3c65fb[_0x6d4e('0x50')][_0x6d4e('0x51')]['toLowerCase']()]&&(_0x4cd2ba[_0x3c65fb[_0x6d4e('0x4b')]]=_0x2874e5[_0x3c65fb[_0x6d4e('0x50')][_0x6d4e('0x51')][_0x6d4e('0x52')]()][_0x6d4e('0x4d')]());}});}return _0x4cd2ba;}function getConnection(_0x74bad1){var _0x5dd02e=_0x74bad1['password'][_0x6d4e('0x53')](_0x74bad1[_0x6d4e('0x54')]);var _0x41a213=new jsforce[(_0x6d4e('0x55'))]({'oauth2':{'loginUrl':_0x74bad1[_0x6d4e('0x56')]||_0x6d4e('0x57'),'clientId':_0x74bad1[_0x6d4e('0x58')],'clientSecret':_0x74bad1[_0x6d4e('0x59')]}});return _0x41a213[_0x6d4e('0x5a')](_0x74bad1['username'],_0x5dd02e)[_0x6d4e('0x29')](function(){logger[_0x6d4e('0x1c')]('Connection\x20established.');return _0x41a213;});}exports[_0x6d4e('0x5b')]=function(_0x13a803,_0x49e2d7,_0x4604d3,_0x5a4a63,_0x381433,_0x1a2d26){var _0x24ee73,_0x2bb15b,_0x4bd68a,_0x5f2268;_0x1a2d26[_0x6d4e('0x5c')]=intUtil['stripTrailingSlash'](_0x1a2d26[_0x6d4e('0x5c')]);_0x1a2d26['remoteUri']=intUtil[_0x6d4e('0x5d')](_0x1a2d26['remoteUri']);if(_0x381433&&_0x381433[_0x6d4e('0x5e')]){logger['info'](_0x6d4e('0x5f'),_0x6d4e('0x60'));_0x49e2d7['recordingURL']=util[_0x6d4e('0x44')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1a2d26[_0x6d4e('0x5c')],_0x49e2d7['uniqueid'],md5(_0x49e2d7[_0x6d4e('0x61')]));}else{_0x49e2d7[_0x6d4e('0x62')]='';}return getConnection(_0x1a2d26)[_0x6d4e('0x29')](function(_0x11d953){_0x5f2268=_0x11d953;return getUser(_0x1a2d26,_0x5a4a63[_0x6d4e('0x63')],_0x5f2268);})[_0x6d4e('0x29')](function(_0x431104){_0x24ee73=_0x431104;return getEndUser(_0x1a2d26,_0x4604d3,_0x49e2d7['calleridname'],_0x49e2d7['calleridnum'],_0x5f2268);})[_0x6d4e('0x29')](function(_0x40ea93){_0x2bb15b=_0x40ea93;return getTicket(_0x1a2d26,_0x24ee73,_0x2bb15b,_0x4604d3,_0x49e2d7,_0x4604d3[_0x6d4e('0x64')],_0x5f2268,_0x6d4e('0x5b'));})[_0x6d4e('0x29')](function(_0x1ffe56){_0x4bd68a=_0x1ffe56;logger['info'](_0x6d4e('0x65'),_0x4bd68a['id']);logger[_0x6d4e('0x1c')](_0x6d4e('0x66'),_0x4bd68a['id'],_0x5a4a63[_0x6d4e('0x51')],_0x1a2d26[_0x6d4e('0x3d')]);switch(_0x1a2d26[_0x6d4e('0x3d')]){case _0x6d4e('0x67'):emit(util[_0x6d4e('0x44')](_0x6d4e('0x68'),_0x5a4a63[_0x6d4e('0x51')]),'trigger:salesforce:display',{'recordId':_0x4bd68a['id']});break;case _0x6d4e('0x69'):emit(util[_0x6d4e('0x44')]('user:%s',_0x5a4a63['name']),_0x6d4e('0x6a'),{'uri':util[_0x6d4e('0x44')]('%s/%s/e',_0x5f2268[_0x6d4e('0x6b')],_0x4bd68a['id'])});break;default:logger[_0x6d4e('0x6c')](_0x6d4e('0x6d'));}})[_0x6d4e('0x6e')](function(_0x168634){logger[_0x6d4e('0x6c')](_0x6d4e('0x5f'),_0x168634);});};exports['outbound']=function(_0x304fcf,_0x20a4da,_0x3ec5c0,_0x1e1d42,_0x1e7fa1,_0xebb672,_0xd5c6ad){var _0x38c32f,_0x54f80a,_0x3a6b55,_0x13556f;_0xebb672[_0x6d4e('0x5c')]=intUtil[_0x6d4e('0x5d')](_0xebb672[_0x6d4e('0x5c')]);_0xebb672[_0x6d4e('0x56')]=intUtil[_0x6d4e('0x5d')](_0xebb672[_0x6d4e('0x56')]);if(_0xd5c6ad&&_0xd5c6ad[_0x6d4e('0x6f')]&&_0xd5c6ad[_0x6d4e('0x6f')]!==_0x6d4e('0x70')){logger[_0x6d4e('0x1c')](_0x6d4e('0x71'),_0x6d4e('0x60'));_0x20a4da['recordingURL']=util[_0x6d4e('0x44')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xebb672['serverUrl'],_0x20a4da[_0x6d4e('0x61')],md5(_0x20a4da[_0x6d4e('0x61')]));}return getConnection(_0xebb672)[_0x6d4e('0x29')](function(_0x56bba9){_0x13556f=_0x56bba9;return getUser(_0xebb672,_0x1e1d42[_0x6d4e('0x63')],_0x13556f);})[_0x6d4e('0x29')](function(_0x1f0903){_0x38c32f=_0x1f0903;return getEndUser(_0xebb672,_0x3ec5c0,_0x20a4da[_0x6d4e('0x72')],_0x20a4da['destcalleridnum'],_0x13556f);})[_0x6d4e('0x29')](function(_0x5cbde7){_0x54f80a=_0x5cbde7;return getTicket(_0xebb672,_0x38c32f,_0x54f80a,_0x3ec5c0,_0x20a4da,_0x3ec5c0[_0x6d4e('0x64')],_0x13556f,'outbound');})[_0x6d4e('0x29')](function(_0x3c8511){_0x3a6b55=_0x3c8511;logger[_0x6d4e('0x1c')](_0x6d4e('0x73'),_0x3a6b55['id']);logger[_0x6d4e('0x1c')](_0x6d4e('0x74'),_0x3a6b55['id'],_0x1e1d42[_0x6d4e('0x51')],_0xebb672[_0x6d4e('0x3d')]);switch(_0xebb672[_0x6d4e('0x3d')]){case _0x6d4e('0x67'):emit(util[_0x6d4e('0x44')](_0x6d4e('0x68'),_0x1e1d42['name']),_0x6d4e('0x75'),{'recordId':_0x3a6b55['id']});break;case'newTab':emit(util[_0x6d4e('0x44')](_0x6d4e('0x68'),_0x1e1d42[_0x6d4e('0x51')]),_0x6d4e('0x6a'),{'uri':util[_0x6d4e('0x44')](_0x6d4e('0x76'),_0x13556f[_0x6d4e('0x6b')],_0x3a6b55['id'])});break;default:logger['error'](_0x6d4e('0x71'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x6d4e('0x6e')](function(_0x1d528d){logger[_0x6d4e('0x6c')](_0x6d4e('0x71'),_0x1d528d);});};exports['unmanaged']=function(_0x255fd0,_0x53a46c,_0x55b373,_0x5053ad,_0x29e2f4,_0x3735e6){var _0x32042a,_0x47ecc8,_0x2f375c,_0x4e4d38;_0x3735e6['serverUrl']=intUtil[_0x6d4e('0x5d')](_0x3735e6['serverUrl']);_0x3735e6['remoteUri']=intUtil[_0x6d4e('0x5d')](_0x3735e6[_0x6d4e('0x56')]);if(_0x29e2f4&&_0x29e2f4[_0x6d4e('0x5e')]){logger[_0x6d4e('0x1c')]('['+_0x53a46c[_0x6d4e('0x77')][_0x6d4e('0x78')]()+']','Recording\x20is\x20enabled!');_0x53a46c[_0x6d4e('0x62')]=util[_0x6d4e('0x44')](_0x6d4e('0x79'),_0x3735e6[_0x6d4e('0x5c')],_0x53a46c[_0x6d4e('0x61')],md5(_0x53a46c[_0x6d4e('0x61')]));}else{_0x53a46c[_0x6d4e('0x62')]='';}return getConnection(_0x3735e6)['then'](function(_0x5b03c1){_0x4e4d38=_0x5b03c1;if(!_[_0x6d4e('0x20')](_0x5053ad)){return getUser(_0x3735e6,_0x5053ad[_0x6d4e('0x51')],_0x4e4d38);}else{return getUser(_0x3735e6,null,_0x4e4d38);}})['then'](function(_0x94f40d){_0x32042a=_0x94f40d;return getEndUser(_0x3735e6,_0x55b373,_0x53a46c[_0x6d4e('0x7a')],_0x53a46c['calleridnum'],_0x4e4d38);})[_0x6d4e('0x29')](function(_0x5ee998){_0x47ecc8=_0x5ee998;return getTicket(_0x3735e6,_0x32042a,_0x47ecc8,_0x55b373,_0x53a46c,_0x55b373[_0x6d4e('0x64')],_0x4e4d38);})['then'](function(_0x3762fb){_0x2f375c=_0x3762fb;logger['info']('['+_0x53a46c[_0x6d4e('0x77')][_0x6d4e('0x78')]()+_0x6d4e('0x7b'),_0x2f375c['id']);logger[_0x6d4e('0x1c')]('['+_0x53a46c['lastevent'][_0x6d4e('0x78')]()+_0x6d4e('0x7c'),_0x3735e6[_0x6d4e('0x3d')]);})['catch'](function(_0x52396c){logger[_0x6d4e('0x6c')]('['+_0x53a46c[_0x6d4e('0x77')][_0x6d4e('0x78')]()+']',_0x52396c);});};
\ No newline at end of file
index 16a05b5..bd36bc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ece=['],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','userId','adminEmail',']\x20using\x20admin\x20profile','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','catch','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach','includes','type','customField','nameField','toLowerCase','content','toString','string','idField','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','label','label_entry','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','sysparm_limit=1','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','%s/api/now/table/','email','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D'];(function(_0x414a4c,_0x484e6a){var _0x459d65=function(_0x278413){while(--_0x278413){_0x414a4c['push'](_0x414a4c['shift']());}};_0x459d65(++_0x484e6a);}(_0x8ece,0x195));var _0xe8ec=function(_0x4afcf1,_0x1f34e0){_0x4afcf1=_0x4afcf1-0x0;var _0x377f36=_0x8ece[_0x4afcf1];return _0x377f36;};'use strict';var _=require(_0xe8ec('0x0'));var Promise=require(_0xe8ec('0x1'));var rp=require(_0xe8ec('0x2'));var util=require(_0xe8ec('0x3'));var md5=require('md5');var Redis=require('ioredis');var intUtil=require(_0xe8ec('0x4'));var config=require(_0xe8ec('0x5'));var logger=require(_0xe8ec('0x6'))(_0xe8ec('0x7'));config[_0xe8ec('0x8')]=_['defaults'](config[_0xe8ec('0x8')],{'host':_0xe8ec('0x9'),'port':0x18eb});var io=require(_0xe8ec('0xa'))(new Redis(config[_0xe8ec('0x8')]));function getAdminUser(_0x3682cb,_0x122f36,_0x406f7e,_0x5525f8,_0x44d128,_0x5e1fe9){return new Promise(function(_0x1345e0,_0x5b1569){var _0x1b0a84={'method':_0xe8ec('0xb'),'uri':_0x5525f8+_0xe8ec('0xc')+'&'+_0x44d128+'&'+_0x5e1fe9,'auth':_0x122f36,'json':!![]};return rp(_0x1b0a84)[_0xe8ec('0xd')](function(_0x235e18){if(_0x235e18[_0xe8ec('0xe')][_0xe8ec('0xf')]>0x0){_0x406f7e[_0xe8ec('0x10')]=_0x235e18[_0xe8ec('0xe')][0x0][_0xe8ec('0x11')];}logger[_0xe8ec('0x12')]('['+[_0x3682cb[_0xe8ec('0x13')]()]+_0xe8ec('0x14'),_0x406f7e);_0x1345e0(_0x406f7e);})['catch'](function(_0x15de29){logger[_0xe8ec('0x15')]('['+[_0x3682cb[_0xe8ec('0x13')]()]+']',_0x15de29[_0xe8ec('0x16')]);_0x5b1569(_0x15de29[_0xe8ec('0x16')]);});});}function getUser(_0xdb2565,_0x1e76ac,_0x218a4b,_0x531f69,_0x2e7c82){return function(_0xf34100){logger[_0xe8ec('0x12')]('['+[_0xdb2565['toUpperCase']()]+_0xe8ec('0x17'),_0xf34100);return new Promise(function(_0x20e847,_0x2a3b73){if(intUtil[_0xe8ec('0x18')](_0xf34100[_0xe8ec('0x19')])){var _0x39e557={'method':_0xe8ec('0xb'),'uri':_0x218a4b+_0xe8ec('0x1a')+_0xf34100['userEmail']+'&'+_0x531f69+'&'+_0x2e7c82,'auth':_0x1e76ac,'json':!![]};logger[_0xe8ec('0x12')]('['+[_0xdb2565[_0xe8ec('0x13')]()]+_0xe8ec('0x1b'),_0x39e557);return rp(_0x39e557)[_0xe8ec('0xd')](function(_0x30a35b){logger[_0xe8ec('0x12')]('['+[_0xdb2565[_0xe8ec('0x13')]()]+_0xe8ec('0x1c'),_0x30a35b);if(_0x30a35b[_0xe8ec('0xe')]['length']>0x0&&String(_0x30a35b[_0xe8ec('0xe')][0x0][_0xe8ec('0x1d')])===_0xe8ec('0x1e')){_0xf34100[_0xe8ec('0x1f')]=_0x30a35b[_0xe8ec('0xe')][0x0]['sys_id'];}else{_0xf34100[_0xe8ec('0x1f')]=_0xf34100[_0xe8ec('0x10')];_0xf34100[_0xe8ec('0x19')]=_0xf34100[_0xe8ec('0x20')];}logger[_0xe8ec('0x12')]('['+[_0xdb2565[_0xe8ec('0x13')]()]+'],\x20getUser\x20crm',_0xf34100);_0x20e847(_0xf34100);})['catch'](function(_0x457607){logger[_0xe8ec('0x15')]('['+[_0xdb2565[_0xe8ec('0x13')]()]+']',_0x457607[_0xe8ec('0x16')]);_0x2a3b73(_0x457607[_0xe8ec('0x16')]);});}else{logger[_0xe8ec('0x12')]('['+[_0xdb2565[_0xe8ec('0x13')]()]+_0xe8ec('0x21'));_0xf34100[_0xe8ec('0x1f')]=_0xf34100[_0xe8ec('0x10')];_0xf34100[_0xe8ec('0x19')]=_0xf34100[_0xe8ec('0x20')];_0x20e847(_0xf34100);}});};}function createEndUser(_0x1b7bdd,_0x310fec,_0x1140d6,_0x5d6888,_0x21badd){logger[_0xe8ec('0x12')]('['+[_0x1b7bdd[_0xe8ec('0x13')]()]+'],\x20createEndUser\x20input\x20crm',_0x1140d6);return new Promise(function(_0x28cd63,_0x4d4137){var _0x45bb71={'method':_0xe8ec('0x22'),'uri':_0x5d6888+_0xe8ec('0x23')+_0x21badd,'body':{'user_name':_0x1140d6[_0xe8ec('0x24')],'roles':_0xe8ec('0x25'),'first_name':_0x1140d6['endUserNumber'],'active':_0xe8ec('0x1e'),'date_format':_0xe8ec('0x26'),'phone':_0x1140d6[_0xe8ec('0x24')]},'auth':_0x310fec,'json':!![]};return rp(_0x45bb71)['then'](function(_0x2bc9e4){logger['info']('['+[_0x1b7bdd[_0xe8ec('0x13')]()]+_0xe8ec('0x27'),_0x2bc9e4[_0xe8ec('0xe')]);_0x1140d6[_0xe8ec('0x28')]=_0x2bc9e4[_0xe8ec('0xe')][_0xe8ec('0x11')];_0x28cd63(_0x1140d6);})[_0xe8ec('0x29')](function(_0x2277cc){logger[_0xe8ec('0x15')]('['+[_0x1b7bdd['toUpperCase']()]+']',_0x2277cc[_0xe8ec('0x16')]);_0x4d4137(_0x2277cc[_0xe8ec('0x16')]);});});}function getEndUser(_0x18cd13,_0x4cbd75,_0x10b287,_0x13c1bf,_0x47d726){return function(_0x308fa3){logger[_0xe8ec('0x12')]('['+[_0x18cd13[_0xe8ec('0x13')]()]+_0xe8ec('0x2a'),_0x308fa3);return new Promise(function(_0x4d9908,_0x189109){var _0x3c3a12={'method':_0xe8ec('0xb'),'uri':_0x10b287+_0xe8ec('0x2b')+_0x308fa3[_0xe8ec('0x24')]+'&'+_0x13c1bf+'&'+_0x47d726,'auth':_0x4cbd75,'json':!![]};return rp(_0x3c3a12)[_0xe8ec('0xd')](function(_0x165324){if(_0x165324[_0xe8ec('0xe')]['length']>0x0){_0x308fa3['endUserId']=_0x165324[_0xe8ec('0xe')][0x0][_0xe8ec('0x11')];logger[_0xe8ec('0x12')]('['+[_0x18cd13[_0xe8ec('0x13')]()]+_0xe8ec('0x2c'),_0x308fa3);_0x4d9908(_0x308fa3);}else{return createEndUser(_0x18cd13,_0x4cbd75,_0x308fa3,_0x10b287,_0x13c1bf)[_0xe8ec('0xd')](function(_0x1456ec){logger['info']('['+[_0x18cd13[_0xe8ec('0x13')]()]+'],\x20createEndUser\x20crm',_0x1456ec);_0x4d9908(_0x1456ec);});}})[_0xe8ec('0x29')](function(_0x17b7b0){logger['error']('['+[_0x18cd13['toUpperCase']()]+']',_0x17b7b0[_0xe8ec('0x16')]);_0x189109(_0x17b7b0[_0xe8ec('0x16')]);});});};}function getCustomFields(_0x34c572,_0x5c99cd){var _0x1223b8={};if(_0x34c572[_0xe8ec('0xf')]>0x0){_[_0xe8ec('0x2d')](_0x34c572,function(_0x198315){if(_[_0xe8ec('0x2e')](['string','picklist'],_0x198315[_0xe8ec('0x2f')])&&_0x198315['nameField']&&!_0x198315[_0xe8ec('0x30')]){_0x1223b8[_0x198315[_0xe8ec('0x31')][_0xe8ec('0x32')]()]=_0x198315[_0xe8ec('0x33')][_0xe8ec('0x34')]();}else if(_[_0xe8ec('0x2e')]([_0xe8ec('0x35'),'picklist'],_0x198315[_0xe8ec('0x2f')])&&_0x198315[_0xe8ec('0x36')]&&_0x198315[_0xe8ec('0x30')]){_0x1223b8[_0x198315[_0xe8ec('0x36')][_0xe8ec('0x32')]()]=_0x198315[_0xe8ec('0x33')][_0xe8ec('0x34')]();}else if(_0x198315[_0xe8ec('0x2f')]==='variable'&&_0x198315[_0xe8ec('0x37')]&&_0x198315[_0xe8ec('0x36')]&&_0x198315[_0xe8ec('0x30')]){_0x1223b8[_0x198315['idField'][_0xe8ec('0x32')]()]=_0x5c99cd[_0x198315['variableName']][_0xe8ec('0x34')]();}else if(_0x198315[_0xe8ec('0x2f')]===_0xe8ec('0x38')&&_0x198315['Variable']&&_0x198315[_0xe8ec('0x39')][_0xe8ec('0x3a')]&&_0x198315['idField']&&_0x198315[_0xe8ec('0x30')]){_0x1223b8[_0x198315['idField'][_0xe8ec('0x32')]()]=_0x5c99cd[_0x198315['Variable'][_0xe8ec('0x3a')][_0xe8ec('0x32')]()][_0xe8ec('0x34')]();}});}return _0x1223b8;}function getTicket(_0x2448b7,_0x5eb0bd,_0x49836b,_0x4a82fa,_0x1cb28d,_0xce235){return function(_0x424a23){logger['info']('['+[_0x2448b7[_0xe8ec('0x13')]()]+_0xe8ec('0x3b'),_0x424a23);return new Promise(function(_0x96ca5f,_0x1f96d9){var _0x18f620=_0x2448b7['toLowerCase']()===_0xe8ec('0x3c')?_0x424a23[_0xe8ec('0x1f')]:_0x424a23[_0xe8ec('0x28')];var _0x3de7aa={'method':_0xe8ec('0x22'),'uri':_0x49836b+_0xe8ec('0x3d')+'?'+_0xce235,'body':Object[_0xe8ec('0x3e')]({},{'active':'true','caller_id':_0x18f620,'assigned_to':_0x424a23[_0xe8ec('0x1f')],'short_description':intUtil[_0xe8ec('0x3f')](_0x4a82fa['Subjects'],_0x1cb28d,'\x20'),'description':intUtil[_0xe8ec('0x3f')](_0x4a82fa[_0xe8ec('0x40')],_0x1cb28d,'\x0a')},getCustomFields(_0x4a82fa[_0xe8ec('0x41')],_0x1cb28d)),'auth':_0x5eb0bd,'json':!![]};return rp(_0x3de7aa)[_0xe8ec('0xd')](function(_0x55b347){logger[_0xe8ec('0x12')]('['+[_0x2448b7[_0xe8ec('0x13')]()]+_0xe8ec('0x42'),_0x55b347[_0xe8ec('0xe')]);_0x424a23[_0xe8ec('0x43')]=_0x55b347[_0xe8ec('0xe')]['sys_id'];_0x424a23[_0xe8ec('0x44')]=_0x55b347[_0xe8ec('0xe')]['number'];logger['info']('['+[_0x2448b7[_0xe8ec('0x13')]()]+']\x20getTicket\x20crm',_0x424a23);_0x96ca5f(_0x424a23);})['catch'](function(_0x3bd3fb){logger[_0xe8ec('0x15')]('['+[_0x2448b7[_0xe8ec('0x13')]()]+']',_0x3bd3fb[_0xe8ec('0x16')]);_0x1f96d9(_0x3bd3fb[_0xe8ec('0x16')]);});});};}function createRemoteTag(_0x342ff5,_0x547a5c,_0x5c1832,_0x243bdc){return new Promise(function(_0xde7275,_0x596e32){var _0x556425={'method':_0xe8ec('0x22'),'uri':_0x5c1832+_0xe8ec('0x45')+'?'+_0x243bdc,'body':{'short_description':_0x342ff5,'global':!![],'active':!![],'name':_0x342ff5},'auth':_0x547a5c,'json':!![]};return rp(_0x556425)[_0xe8ec('0xd')](function(_0x51fa51){var _0x5550f0=_0x51fa51[_0xe8ec('0xe')][_0xe8ec('0x11')];_0xde7275(_0x5550f0);});});}function getRemoteTag(_0x3af346,_0x20a431,_0x5292e6,_0x5b693d,_0x17d1e4){return new Promise(function(_0x496f3c,_0xa58c79){var _0x221a79={'method':'GET','uri':_0x5292e6+_0xe8ec('0x45')+'?sysparm_query=name%3D'+_0x3af346+'&'+_0x5b693d,'auth':_0x20a431,'json':!![]};return rp(_0x221a79)[_0xe8ec('0xd')](function(_0x4e69e5){if(_0x4e69e5[_0xe8ec('0xe')][_0xe8ec('0xf')]>0x0){var _0x3ef497=_0x4e69e5[_0xe8ec('0xe')][0x0][_0xe8ec('0x11')];_0x496f3c(_0x3ef497);}else{return createRemoteTag(_0x3af346,_0x20a431,_0x5292e6,_0x5b693d)[_0xe8ec('0xd')](function(_0x56be8d){_0x496f3c(_0x56be8d);});}});});}function assignTagToIncident(_0x249bcc,_0x4acba2,_0xc7d31d,_0x1184aa,_0x1b40cc){return new Promise(function(_0x5494fb,_0x1e3acb){var _0x5348f1={'method':_0xe8ec('0x22'),'uri':_0xc7d31d+_0xe8ec('0x46')+'?'+_0x1b40cc,'body':{'label':_0x249bcc,'table':'incident','id_type':'Incident','table_key':_0x1184aa[_0xe8ec('0x43')],'title':_0xe8ec('0x47')+_0x1184aa['ticketNumber'],'id_display':_0x1184aa[_0xe8ec('0x44')]},'auth':_0x4acba2,'json':!![]};return rp(_0x5348f1)[_0xe8ec('0xd')](function(_0x4ee845){_0x5494fb();})['catch'](function(){_0x5494fb();});});}function manageTags(_0x26516e,_0x97e904,_0x49aba3,_0x4fef2b,_0x43d74c,_0x236880,_0x17052e){return new Promise(function(_0x2a3286,_0x19d194){var _0x1a14ca=[];_0x97e904[_0xe8ec('0x2d')](function(_0x319813){_0x1a14ca[_0xe8ec('0x48')](getRemoteTag(_0x319813,_0x49aba3,_0x4fef2b,_0x236880,_0x17052e));});return Promise[_0xe8ec('0x49')](_0x1a14ca)[_0xe8ec('0xd')](function(_0x1c1470){if(_0x1c1470[_0xe8ec('0xf')]){logger[_0xe8ec('0x12')]('['+[_0x26516e[_0xe8ec('0x13')]()]+_0xe8ec('0x4a'),_0x1c1470);var _0x5d5cca=[];_0x1c1470[_0xe8ec('0x2d')](function(_0x27850d){_0x5d5cca[_0xe8ec('0x48')](assignTagToIncident(_0x27850d,_0x49aba3,_0x4fef2b,_0x43d74c,_0x236880));});return Promise[_0xe8ec('0x49')](_0x5d5cca)['then'](function(){_0x2a3286();})['catch'](function(){_0x2a3286();});}else{_0x2a3286();}});});}function getTags(_0xecf875,_0x50c78d,_0x1ae75a,_0x57824f,_0x40eb3b,_0x1b93aa){return function(_0x11138b){return new Promise(function(_0xb5e982,_0x1e058a){var _0xaecdcd=[];var _0x2174f0=_0x57824f[_0xe8ec('0x4b')];if(_0x2174f0&&_0x2174f0[_0xe8ec('0xf')]>0x0){_0xaecdcd=_[_0xe8ec('0x4c')](_0x2174f0,'name');}if(_0xaecdcd[_0xe8ec('0xf')]>0x0){return manageTags(_0xecf875,_0xaecdcd,_0x50c78d,_0x1ae75a,_0x11138b,_0x40eb3b,_0x1b93aa)[_0xe8ec('0xd')](function(){_0xb5e982(_0x11138b);});}else{_0xb5e982(_0x11138b);}});};}function emit(_0x2aada0,_0x149b5f,_0x55e370){var _0x1e69eb='%26sysparm_record_target%3Dincident'+_0xe8ec('0x4d')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0xe8ec('0x4e');var _0x4b06f0={'uri':_0x2aada0+_0xe8ec('0x4f')+_0x55e370+_0x1e69eb};io['to'](util[_0xe8ec('0x50')](_0xe8ec('0x51'),_0x149b5f))[_0xe8ec('0x52')]('trigger:browser:url',_0x4b06f0);}exports['cs']=function(_0x28cf8b,_0x57255c,_0x3af37c,_0x425f55,_0x5a7660,_0x3a858c,_0x2a2d67,_0x49ab18){var _0x309c75={};var _0x32a598={'user':_0x3a858c['username'],'pass':_0x3a858c['password']};var _0x105ad6=_0xe8ec('0x53');var _0x34829e=_0xe8ec('0x54');_0x3a858c[_0xe8ec('0x55')]=intUtil['stripTrailingSlash'](_0x3a858c['remoteUri']);_0x3a858c[_0xe8ec('0x56')]=intUtil[_0xe8ec('0x57')](_0x3a858c[_0xe8ec('0x56')]);var _0x5033a8=util['format'](_0xe8ec('0x58'),_0x3a858c['remoteUri']);_0x309c75[_0xe8ec('0x19')]=!_['isNil'](_0x425f55)?_0x425f55[_0xe8ec('0x59')]:null;_0x309c75[_0xe8ec('0x20')]=_0x3a858c[_0xe8ec('0x59')];_0x309c75['endUserNumber']=_0x49ab18[_0xe8ec('0x32')]()===_0xe8ec('0x3c')?_0x57255c['destcalleridnum']:_0x57255c[_0xe8ec('0x5a')];_0x309c75[_0xe8ec('0x5b')]=_0x49ab18===_0xe8ec('0x5c')||_0x49ab18===_0xe8ec('0x5d')?'queue':_0xe8ec('0x3c');var _0x5d9c9b=util[_0xe8ec('0x50')](_0xe8ec('0x5e'),_0x3a858c['serverUrl'],_0x57255c[_0xe8ec('0x5f')],md5(_0x57255c[_0xe8ec('0x5f')]));if(_0x5a7660&&_0x5a7660[_0xe8ec('0x60')]){logger['info'](_0xe8ec('0x61'),_0xe8ec('0x62'));_0x57255c[_0xe8ec('0x63')]=_0x5d9c9b;}else if(_0x2a2d67&&_0x2a2d67[_0xe8ec('0x64')]&&_0x2a2d67[_0xe8ec('0x64')]!==_0xe8ec('0x65')){logger[_0xe8ec('0x12')](_0xe8ec('0x66'),'Recording\x20is\x20enabled!');_0x57255c['recordingURL']=_0x5d9c9b;}else{_0x57255c[_0xe8ec('0x63')]='';}return getAdminUser(_0x49ab18,_0x32a598,_0x309c75,_0x5033a8,_0x34829e,_0x105ad6)[_0xe8ec('0xd')](getUser(_0x49ab18,_0x32a598,_0x5033a8,_0x34829e,_0x105ad6))[_0xe8ec('0xd')](getEndUser(_0x49ab18,_0x32a598,_0x5033a8,_0x34829e,_0x105ad6))[_0xe8ec('0xd')](getTicket(_0x49ab18,_0x32a598,_0x5033a8,_0x3af37c,_0x57255c,_0x34829e))[_0xe8ec('0xd')](function(_0x4e40c4){logger['info'](util['format'](_0xe8ec('0x67'),_0x4e40c4[_0xe8ec('0x43')]));logger[_0xe8ec('0x12')](util[_0xe8ec('0x50')](_0xe8ec('0x68'),_0x49ab18));if(_0x49ab18!=='unmanaged'){logger['info']('['+[_0x49ab18[_0xe8ec('0x13')]()]+']',_0xe8ec('0x69'));emit(_0x3a858c[_0xe8ec('0x55')],_0x425f55[_0xe8ec('0x3a')],_0x4e40c4['ticketId']);}})[_0xe8ec('0x29')](function(_0x43aa41){logger[_0xe8ec('0x15')]('['+[_0x49ab18['toUpperCase']()]+_0xe8ec('0x6a'),util[_0xe8ec('0x6b')](_0x43aa41,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xaf59=['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','%255EORDERBYDESCnumber','format','emit','username','sysparm_display_value=true','stripTrailingSlash','remoteUri','serverUrl','%s/api/now/table/','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','],\x20getAdminUser\x20crm','catch','error','toUpperCase','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','GET','sys_user?sysparm_query=email%3D','active','true','userId','adminEmail',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','toString','idField','content','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','POST','incident','assign','Subjects','getString','Fields','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20'];(function(_0x58c121,_0x27b107){var _0x40fadd=function(_0x183f57){while(--_0x183f57){_0x58c121['push'](_0x58c121['shift']());}};_0x40fadd(++_0x27b107);}(_0xaf59,0x94));var _0x9af5=function(_0x7538c5,_0xa5d8ac){_0x7538c5=_0x7538c5-0x0;var _0x8b56be=_0xaf59[_0x7538c5];return _0x8b56be;};'use strict';var _=require(_0x9af5('0x0'));var Promise=require(_0x9af5('0x1'));var rp=require(_0x9af5('0x2'));var util=require('util');var md5=require('md5');var Redis=require(_0x9af5('0x3'));var intUtil=require(_0x9af5('0x4'));var config=require(_0x9af5('0x5'));var logger=require(_0x9af5('0x6'))(_0x9af5('0x7'));config[_0x9af5('0x8')]=_[_0x9af5('0x9')](config[_0x9af5('0x8')],{'host':_0x9af5('0xa'),'port':0x18eb});var io=require(_0x9af5('0xb'))(new Redis(config[_0x9af5('0x8')]));function getAdminUser(_0x1c7c8d,_0x579ed1,_0xd873ed,_0x35b686,_0x3994c4,_0x320549){return new Promise(function(_0xe7465e,_0x3f3000){var _0x107366={'method':'GET','uri':_0x35b686+_0x9af5('0xc')+'&'+_0x3994c4+'&'+_0x320549,'auth':_0x579ed1,'json':!![]};return rp(_0x107366)[_0x9af5('0xd')](function(_0x30048f){if(_0x30048f[_0x9af5('0xe')][_0x9af5('0xf')]>0x0){_0xd873ed[_0x9af5('0x10')]=_0x30048f[_0x9af5('0xe')][0x0][_0x9af5('0x11')];}logger[_0x9af5('0x12')]('['+[_0x1c7c8d['toUpperCase']()]+_0x9af5('0x13'),_0xd873ed);_0xe7465e(_0xd873ed);})[_0x9af5('0x14')](function(_0x5c6333){logger[_0x9af5('0x15')]('['+[_0x1c7c8d[_0x9af5('0x16')]()]+']',_0x5c6333['message']);_0x3f3000(_0x5c6333[_0x9af5('0x17')]);});});}function getUser(_0x37a150,_0x1edb65,_0x43ecfa,_0x28fe7a,_0x9bba4b){return function(_0x2fe605){logger['info']('['+[_0x37a150[_0x9af5('0x16')]()]+_0x9af5('0x18'),_0x2fe605);return new Promise(function(_0xebe13f,_0x1f8a3f){if(intUtil[_0x9af5('0x19')](_0x2fe605[_0x9af5('0x1a')])){var _0x648fad={'method':_0x9af5('0x1b'),'uri':_0x43ecfa+_0x9af5('0x1c')+_0x2fe605[_0x9af5('0x1a')]+'&'+_0x28fe7a+'&'+_0x9bba4b,'auth':_0x1edb65,'json':!![]};logger[_0x9af5('0x12')]('['+[_0x37a150[_0x9af5('0x16')]()]+'],\x20getUser\x20rp\x20obj',_0x648fad);return rp(_0x648fad)[_0x9af5('0xd')](function(_0x2dfdf6){logger[_0x9af5('0x12')]('['+[_0x37a150['toUpperCase']()]+'],\x20getUser\x20entity',_0x2dfdf6);if(_0x2dfdf6[_0x9af5('0xe')][_0x9af5('0xf')]>0x0&&String(_0x2dfdf6[_0x9af5('0xe')][0x0][_0x9af5('0x1d')])===_0x9af5('0x1e')){_0x2fe605[_0x9af5('0x1f')]=_0x2dfdf6['result'][0x0][_0x9af5('0x11')];}else{_0x2fe605[_0x9af5('0x1f')]=_0x2fe605[_0x9af5('0x10')];_0x2fe605[_0x9af5('0x1a')]=_0x2fe605[_0x9af5('0x20')];}logger[_0x9af5('0x12')]('['+[_0x37a150['toUpperCase']()]+'],\x20getUser\x20crm',_0x2fe605);_0xebe13f(_0x2fe605);})['catch'](function(_0x55c91d){logger[_0x9af5('0x15')]('['+[_0x37a150[_0x9af5('0x16')]()]+']',_0x55c91d['message']);_0x1f8a3f(_0x55c91d[_0x9af5('0x17')]);});}else{logger['info']('['+[_0x37a150[_0x9af5('0x16')]()]+_0x9af5('0x21'));_0x2fe605[_0x9af5('0x1f')]=_0x2fe605['adminId'];_0x2fe605['userEmail']=_0x2fe605[_0x9af5('0x20')];_0xebe13f(_0x2fe605);}});};}function createEndUser(_0x2d7de0,_0x5a089f,_0x3224a2,_0x4ba2a0,_0x23045c){logger['info']('['+[_0x2d7de0[_0x9af5('0x16')]()]+_0x9af5('0x22'),_0x3224a2);return new Promise(function(_0x4338bb,_0x56d532){var _0x179235={'method':'POST','uri':_0x4ba2a0+_0x9af5('0x23')+_0x23045c,'body':{'user_name':_0x3224a2['endUserNumber'],'roles':'user','first_name':_0x3224a2[_0x9af5('0x24')],'active':_0x9af5('0x1e'),'date_format':'System','phone':_0x3224a2['endUserNumber']},'auth':_0x5a089f,'json':!![]};return rp(_0x179235)[_0x9af5('0xd')](function(_0x233b22){logger[_0x9af5('0x12')]('['+[_0x2d7de0[_0x9af5('0x16')]()]+_0x9af5('0x25'),_0x233b22[_0x9af5('0xe')]);_0x3224a2[_0x9af5('0x26')]=_0x233b22[_0x9af5('0xe')][_0x9af5('0x11')];_0x4338bb(_0x3224a2);})[_0x9af5('0x14')](function(_0x30bc07){logger[_0x9af5('0x15')]('['+[_0x2d7de0[_0x9af5('0x16')]()]+']',_0x30bc07[_0x9af5('0x17')]);_0x56d532(_0x30bc07[_0x9af5('0x17')]);});});}function getEndUser(_0x377792,_0x5bdc14,_0x89ac80,_0xd54721,_0x537206){return function(_0x2ea8b8){logger[_0x9af5('0x12')]('['+[_0x377792[_0x9af5('0x16')]()]+_0x9af5('0x27'),_0x2ea8b8);return new Promise(function(_0x7a5ce7,_0x177ff0){var _0x389259={'method':_0x9af5('0x1b'),'uri':_0x89ac80+_0x9af5('0x28')+_0x2ea8b8[_0x9af5('0x24')]+'&'+_0xd54721+'&'+_0x537206,'auth':_0x5bdc14,'json':!![]};return rp(_0x389259)[_0x9af5('0xd')](function(_0x1f244e){if(_0x1f244e[_0x9af5('0xe')][_0x9af5('0xf')]>0x0){_0x2ea8b8[_0x9af5('0x26')]=_0x1f244e[_0x9af5('0xe')][0x0][_0x9af5('0x11')];logger[_0x9af5('0x12')]('['+[_0x377792[_0x9af5('0x16')]()]+_0x9af5('0x29'),_0x2ea8b8);_0x7a5ce7(_0x2ea8b8);}else{return createEndUser(_0x377792,_0x5bdc14,_0x2ea8b8,_0x89ac80,_0xd54721)[_0x9af5('0xd')](function(_0x1e006e){logger[_0x9af5('0x12')]('['+[_0x377792[_0x9af5('0x16')]()]+_0x9af5('0x2a'),_0x1e006e);_0x7a5ce7(_0x1e006e);});}})[_0x9af5('0x14')](function(_0x106019){logger[_0x9af5('0x15')]('['+[_0x377792[_0x9af5('0x16')]()]+']',_0x106019['message']);_0x177ff0(_0x106019[_0x9af5('0x17')]);});});};}function getCustomFields(_0x57701e,_0x297a3f){var _0xc9ea1c={};if(_0x57701e[_0x9af5('0xf')]>0x0){_[_0x9af5('0x2b')](_0x57701e,function(_0x16c795){if(_[_0x9af5('0x2c')]([_0x9af5('0x2d'),_0x9af5('0x2e')],_0x16c795[_0x9af5('0x2f')])&&_0x16c795[_0x9af5('0x30')]&&!_0x16c795[_0x9af5('0x31')]){_0xc9ea1c[_0x16c795[_0x9af5('0x30')][_0x9af5('0x32')]()]=_0x16c795['content'][_0x9af5('0x33')]();}else if(_[_0x9af5('0x2c')]([_0x9af5('0x2d'),_0x9af5('0x2e')],_0x16c795['type'])&&_0x16c795[_0x9af5('0x34')]&&_0x16c795[_0x9af5('0x31')]){_0xc9ea1c[_0x16c795[_0x9af5('0x34')][_0x9af5('0x32')]()]=_0x16c795[_0x9af5('0x35')]['toString']();}else if(_0x16c795[_0x9af5('0x2f')]===_0x9af5('0x36')&&_0x16c795[_0x9af5('0x37')]&&_0x16c795[_0x9af5('0x34')]&&_0x16c795[_0x9af5('0x31')]){_0xc9ea1c[_0x16c795[_0x9af5('0x34')][_0x9af5('0x32')]()]=_0x297a3f[_0x16c795[_0x9af5('0x37')]][_0x9af5('0x33')]();}else if(_0x16c795[_0x9af5('0x2f')]===_0x9af5('0x38')&&_0x16c795[_0x9af5('0x39')]&&_0x16c795[_0x9af5('0x39')][_0x9af5('0x3a')]&&_0x16c795[_0x9af5('0x34')]&&_0x16c795[_0x9af5('0x31')]){_0xc9ea1c[_0x16c795[_0x9af5('0x34')][_0x9af5('0x32')]()]=_0x297a3f[_0x16c795[_0x9af5('0x39')]['name']['toLowerCase']()][_0x9af5('0x33')]();}});}return _0xc9ea1c;}function getTicket(_0x498842,_0x47c35b,_0x1eafc1,_0x1541d4,_0x3745dc,_0x4daf1a){return function(_0x1de99e){logger[_0x9af5('0x12')]('['+[_0x498842[_0x9af5('0x16')]()]+_0x9af5('0x3b'),_0x1de99e);return new Promise(function(_0x2b4f16,_0x4aa921){var _0x190821=_0x498842['toLowerCase']()==='outbound'?_0x1de99e[_0x9af5('0x1f')]:_0x1de99e[_0x9af5('0x26')];var _0x21d72a={'method':_0x9af5('0x3c'),'uri':_0x1eafc1+_0x9af5('0x3d')+'?'+_0x4daf1a,'body':Object[_0x9af5('0x3e')]({},{'active':_0x9af5('0x1e'),'caller_id':_0x190821,'assigned_to':_0x1de99e[_0x9af5('0x1f')],'short_description':intUtil['getString'](_0x1541d4[_0x9af5('0x3f')],_0x3745dc,'\x20'),'description':intUtil[_0x9af5('0x40')](_0x1541d4['Descriptions'],_0x3745dc,'\x0a')},getCustomFields(_0x1541d4[_0x9af5('0x41')],_0x3745dc)),'auth':_0x47c35b,'json':!![]};return rp(_0x21d72a)[_0x9af5('0xd')](function(_0x31599c){logger[_0x9af5('0x12')]('['+[_0x498842[_0x9af5('0x16')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x31599c[_0x9af5('0xe')]);_0x1de99e[_0x9af5('0x42')]=_0x31599c[_0x9af5('0xe')][_0x9af5('0x11')];_0x1de99e[_0x9af5('0x43')]=_0x31599c[_0x9af5('0xe')][_0x9af5('0x44')];logger[_0x9af5('0x12')]('['+[_0x498842[_0x9af5('0x16')]()]+']\x20getTicket\x20crm',_0x1de99e);_0x2b4f16(_0x1de99e);})[_0x9af5('0x14')](function(_0x4da854){logger[_0x9af5('0x15')]('['+[_0x498842['toUpperCase']()]+']',_0x4da854[_0x9af5('0x17')]);_0x4aa921(_0x4da854[_0x9af5('0x17')]);});});};}function createRemoteTag(_0x425c42,_0x3eae25,_0x233dc8,_0x1dc2b4){return new Promise(function(_0x15c220,_0x16687a){var _0x54ac78={'method':_0x9af5('0x3c'),'uri':_0x233dc8+_0x9af5('0x45')+'?'+_0x1dc2b4,'body':{'short_description':_0x425c42,'global':!![],'active':!![],'name':_0x425c42},'auth':_0x3eae25,'json':!![]};return rp(_0x54ac78)[_0x9af5('0xd')](function(_0x54f779){var _0x2c2496=_0x54f779[_0x9af5('0xe')][_0x9af5('0x11')];_0x15c220(_0x2c2496);});});}function getRemoteTag(_0x425293,_0x1c1d57,_0x5f4f9f,_0x15cda7,_0x3e7492){return new Promise(function(_0x38324f,_0xd3d2e){var _0x132787={'method':_0x9af5('0x1b'),'uri':_0x5f4f9f+'label'+_0x9af5('0x46')+_0x425293+'&'+_0x15cda7,'auth':_0x1c1d57,'json':!![]};return rp(_0x132787)[_0x9af5('0xd')](function(_0x39383e){if(_0x39383e[_0x9af5('0xe')]['length']>0x0){var _0x10d83f=_0x39383e[_0x9af5('0xe')][0x0][_0x9af5('0x11')];_0x38324f(_0x10d83f);}else{return createRemoteTag(_0x425293,_0x1c1d57,_0x5f4f9f,_0x15cda7)[_0x9af5('0xd')](function(_0x59a776){_0x38324f(_0x59a776);});}});});}function assignTagToIncident(_0x143da7,_0x8a87f9,_0x4717b8,_0x4a6397,_0x591109){return new Promise(function(_0x1663d6,_0x56cb12){var _0x10af4d={'method':_0x9af5('0x3c'),'uri':_0x4717b8+_0x9af5('0x47')+'?'+_0x591109,'body':{'label':_0x143da7,'table':_0x9af5('0x3d'),'id_type':_0x9af5('0x48'),'table_key':_0x4a6397[_0x9af5('0x42')],'title':_0x9af5('0x49')+_0x4a6397[_0x9af5('0x43')],'id_display':_0x4a6397['ticketNumber']},'auth':_0x8a87f9,'json':!![]};return rp(_0x10af4d)[_0x9af5('0xd')](function(_0x27f7d4){_0x1663d6();})['catch'](function(){_0x1663d6();});});}function manageTags(_0x5a092a,_0x406f06,_0x3115f9,_0x2fd504,_0x4f3e38,_0x5acd6b,_0x56a06d){return new Promise(function(_0x1e9875,_0x2f8b04){var _0x19baec=[];_0x406f06[_0x9af5('0x2b')](function(_0x1bc9d0){_0x19baec[_0x9af5('0x4a')](getRemoteTag(_0x1bc9d0,_0x3115f9,_0x2fd504,_0x5acd6b,_0x56a06d));});return Promise[_0x9af5('0x4b')](_0x19baec)[_0x9af5('0xd')](function(_0x540e06){if(_0x540e06['length']){logger[_0x9af5('0x12')]('['+[_0x5a092a['toUpperCase']()]+_0x9af5('0x4c'),_0x540e06);var _0x6c23ec=[];_0x540e06[_0x9af5('0x2b')](function(_0x3296d2){_0x6c23ec['push'](assignTagToIncident(_0x3296d2,_0x3115f9,_0x2fd504,_0x4f3e38,_0x5acd6b));});return Promise['all'](_0x6c23ec)[_0x9af5('0xd')](function(){_0x1e9875();})[_0x9af5('0x14')](function(){_0x1e9875();});}else{_0x1e9875();}});});}function getTags(_0x747382,_0x79535b,_0x2808cd,_0x132bf0,_0x51503d,_0x4014eb){return function(_0x219d7f){return new Promise(function(_0x35bca5,_0x22ef45){var _0x3a32a7=[];var _0x41d9bc=_0x132bf0[_0x9af5('0x4d')];if(_0x41d9bc&&_0x41d9bc['length']>0x0){_0x3a32a7=_[_0x9af5('0x4e')](_0x41d9bc,'name');}if(_0x3a32a7[_0x9af5('0xf')]>0x0){return manageTags(_0x747382,_0x3a32a7,_0x79535b,_0x2808cd,_0x219d7f,_0x51503d,_0x4014eb)[_0x9af5('0xd')](function(){_0x35bca5(_0x219d7f);});}else{_0x35bca5(_0x219d7f);}});};}function emit(_0x5a7a87,_0xa09822,_0x521545){var _0x3ca2e0=_0x9af5('0x4f')+_0x9af5('0x50')+_0x9af5('0x51')+_0x9af5('0x52');var _0x151c09={'uri':_0x5a7a87+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x521545+_0x3ca2e0};io['to'](util[_0x9af5('0x53')]('user:%s',_0xa09822))[_0x9af5('0x54')]('trigger:browser:url',_0x151c09);}exports['cs']=function(_0x9fb6af,_0x5ed784,_0xf2c3ac,_0x264880,_0x27d26f,_0x43f3bc,_0x19d22b,_0x43124c){var _0xfc2afc={};var _0x2dcdda={'user':_0x43f3bc[_0x9af5('0x55')],'pass':_0x43f3bc['password']};var _0x25f6b7='sysparm_limit=1';var _0x346851=_0x9af5('0x56');_0x43f3bc['remoteUri']=intUtil[_0x9af5('0x57')](_0x43f3bc[_0x9af5('0x58')]);_0x43f3bc['serverUrl']=intUtil[_0x9af5('0x57')](_0x43f3bc[_0x9af5('0x59')]);var _0x179d42=util[_0x9af5('0x53')](_0x9af5('0x5a'),_0x43f3bc[_0x9af5('0x58')]);_0xfc2afc['userEmail']=!_['isNil'](_0x264880)?_0x264880['email']:null;_0xfc2afc[_0x9af5('0x20')]=_0x43f3bc[_0x9af5('0x5b')];_0xfc2afc[_0x9af5('0x24')]=_0x43124c[_0x9af5('0x32')]()==='outbound'?_0x5ed784[_0x9af5('0x5c')]:_0x5ed784[_0x9af5('0x5d')];_0xfc2afc[_0x9af5('0x5e')]=_0x43124c===_0x9af5('0x5f')||_0x43124c===_0x9af5('0x60')?_0x9af5('0x5f'):_0x9af5('0x61');var _0x75e6f3=util[_0x9af5('0x53')](_0x9af5('0x62'),_0x43f3bc[_0x9af5('0x59')],_0x5ed784['uniqueid'],md5(_0x5ed784[_0x9af5('0x63')]));if(_0x27d26f&&_0x27d26f[_0x9af5('0x64')]){logger[_0x9af5('0x12')](_0x9af5('0x65'),_0x9af5('0x66'));_0x5ed784['recordingURL']=_0x75e6f3;}else if(_0x19d22b&&_0x19d22b[_0x9af5('0x67')]&&_0x19d22b[_0x9af5('0x67')]!==_0x9af5('0x68')){logger[_0x9af5('0x12')](_0x9af5('0x69'),'Recording\x20is\x20enabled!');_0x5ed784[_0x9af5('0x6a')]=_0x75e6f3;}else{_0x5ed784[_0x9af5('0x6a')]='';}return getAdminUser(_0x43124c,_0x2dcdda,_0xfc2afc,_0x179d42,_0x346851,_0x25f6b7)[_0x9af5('0xd')](getUser(_0x43124c,_0x2dcdda,_0x179d42,_0x346851,_0x25f6b7))['then'](getEndUser(_0x43124c,_0x2dcdda,_0x179d42,_0x346851,_0x25f6b7))[_0x9af5('0xd')](getTicket(_0x43124c,_0x2dcdda,_0x179d42,_0xf2c3ac,_0x5ed784,_0x346851))['then'](function(_0x5500bf){logger[_0x9af5('0x12')](util[_0x9af5('0x53')]('The\x20ticket\x20ID\x20is:\x20%s',_0x5500bf[_0x9af5('0x42')]));logger['info'](util[_0x9af5('0x53')](_0x9af5('0x6b'),_0x43124c));if(_0x43124c!==_0x9af5('0x60')){logger[_0x9af5('0x12')]('['+[_0x43124c[_0x9af5('0x16')]()]+']',_0x9af5('0x6c'));emit(_0x43f3bc[_0x9af5('0x58')],_0x264880['name'],_0x5500bf[_0x9af5('0x42')]);}})[_0x9af5('0x14')](function(_0x4e079a){logger[_0x9af5('0x15')]('['+[_0x43124c[_0x9af5('0x16')]()]+_0x9af5('0x6d'),util[_0x9af5('0x6e')](_0x4e079a,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index fcfe8e1..95e2eed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5675=['monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch','error','[QUEUE]','stripTrailingSlash','uri','recordingFormat','none','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Outbound','users','[OUTBOUND]','user:%s','unmanaged','lastevent','toUpperCase','calleridname','calleridnum','Inbound','lodash','request-promise','bluebird','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','POST','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','description','date_start','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','forEach','variableName','idField','set_entry','JSON','Calls','format','Basic\x20%s','toString','base64','get_server_info','stringify','isNil','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','length','entry_list','Agent\x20found!','resolve','value','name_value_list','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','phone_home','find','Enduser\x20found!','Contacts','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','merge','map','type','string','nameField','customField','toLowerCase','content','custom_fields','push','Variable','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','remoteUri','serverUrl','%s/service/v4_1/rest.php'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x5675,0xa1));var _0x5567=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x5675[_0x1e7b16];return _0x37fadc;};'use strict';var _=require(_0x5567('0x0'));var rp=require(_0x5567('0x1'));var BPromise=require(_0x5567('0x2'));var md5=require(_0x5567('0x3'));var util=require(_0x5567('0x4'));var Redis=require(_0x5567('0x5'));var intUtil=require(_0x5567('0x6'));var config=require(_0x5567('0x7'));var logger=require(_0x5567('0x8'))(_0x5567('0x9'));config[_0x5567('0xa')]=_[_0x5567('0xb')](config[_0x5567('0xa')],{'host':_0x5567('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5567('0xa')]));var def={'method':_0x5567('0xd'),'json':!![]};function emit(_0x3dbb19,_0x55ed37,_0x1ea4b2){io['to'](_0x3dbb19)[_0x5567('0xe')](_0x55ed37,_0x1ea4b2);}function getTicket(_0x140ab9,_0xd6cd24,_0x55d77e,_0x46a3a4,_0x208d1f,_0x2f0f01,_0x40a24a,_0x7e5b20){logger[_0x5567('0xf')](_0x5567('0x10'));var _0x41a110=new Date();var _0x5b2a60=[{'name':_0x5567('0x11'),'value':intUtil[_0x5567('0x12')](_0x46a3a4[_0x5567('0x13')],_0x208d1f,'\x20')},{'name':_0x5567('0x14'),'value':_0xd6cd24['id']},{'name':'created_by','value':_0xd6cd24['id']},{'name':_0x5567('0x15'),'value':intUtil['getString'](_0x46a3a4['Descriptions'],_0x208d1f,'\x0a')},{'name':_0x5567('0x16'),'value':_0x41a110['toISOString']()[_0x5567('0x17')](0x0,0x13)[_0x5567('0x18')]('T','\x20')},{'name':_0x5567('0x19'),'value':'0'},{'name':_0x5567('0x1a'),'value':'15'},{'name':_0x5567('0x1b'),'value':_0x55d77e['id']},{'name':_0x5567('0x1c'),'value':'Contacts'},{'name':_0x5567('0x1d'),'value':_0x55d77e[_0x5567('0x11')]},{'name':_0x5567('0x1e'),'value':_0x7e5b20}];if(_0x2f0f01['length']){_[_0x5567('0x1f')](_0x2f0f01,function(_0x193ad9){if(_0x208d1f[_0x193ad9[_0x5567('0x20')]]){_0x5b2a60['push']({'name':_0x193ad9[_0x5567('0x21')],'value':_0x208d1f[_0x193ad9[_0x5567('0x20')]]});}});}return request({'form':{'method':_0x5567('0x22'),'input_type':'JSON','response_type':_0x5567('0x23'),'rest_data':JSON['stringify']({'session':_0x40a24a['id'],'module_name':_0x5567('0x24'),'name_value_list':_0x5b2a60})}});}function getAuth(_0x127c6f){return util[_0x5567('0x25')](_0x5567('0x26'),new Buffer(_0x127c6f['apiKey']+':X')[_0x5567('0x27')](_0x5567('0x28')));}function getServerInfo(_0x18d93d){return request({'form':{'method':_0x5567('0x29'),'input_type':'JSON','response_type':_0x5567('0x23'),'rest_data':JSON[_0x5567('0x2a')]({'session':_0x18d93d['id']})}});}function getUser(_0xcaa82e,_0x527738,_0x8628d6){if(!_[_0x5567('0x2b')](_0x527738)){logger[_0x5567('0xf')](_0x5567('0x2c'),_0x527738);return request({'form':{'method':_0x5567('0x2d'),'input_type':_0x5567('0x23'),'response_type':_0x5567('0x23'),'rest_data':JSON[_0x5567('0x2a')]({'session':_0x8628d6['id'],'module_name':_0x5567('0x2e'),'query':util[_0x5567('0x25')](_0x5567('0x2f'),_0x527738),'order_by':'','offset':'0','select_fields':['id',_0x5567('0x11'),_0x5567('0x30')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x5567('0x31')](function(_0xe7c6ed){if(_0xe7c6ed['entry_list'][_0x5567('0x32')]){var _0x4f51b8=_['find'](_0xe7c6ed[_0x5567('0x33')],function(_0x52da4d){return _0x52da4d['name_value_list'][_0x5567('0x30')]['value']===_0x527738;});if(_0x4f51b8){logger[_0x5567('0xf')](_0x5567('0x34'));return BPromise[_0x5567('0x35')]({'id':_0x4f51b8['name_value_list']['id'][_0x5567('0x36')],'name':_0x4f51b8['name_value_list'][_0x5567('0x11')][_0x5567('0x36')]});}}logger[_0x5567('0xf')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x5567('0x35')]({'id':_0x8628d6[_0x5567('0x37')][_0x5567('0x38')]['value'],'name':_0x8628d6[_0x5567('0x37')][_0x5567('0x30')][_0x5567('0x36')]});});}else{logger[_0x5567('0xf')](_0x5567('0x39'));return BPromise[_0x5567('0x35')]({'id':_0x8628d6[_0x5567('0x37')]['user_id'][_0x5567('0x36')],'name':_0x8628d6['name_value_list'][_0x5567('0x30')]['value']});}}function getEndUser(_0x1dbce1,_0x1404f2,_0x12f3d5,_0x145a59){logger['info']('Searching\x20enduser\x20with\x20phone',_0x12f3d5);return request({'form':{'method':_0x5567('0x2d'),'input_type':_0x5567('0x23'),'response_type':'JSON','rest_data':JSON[_0x5567('0x2a')]({'session':_0x145a59['id'],'module_name':'Contacts','query':util[_0x5567('0x25')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x12f3d5),'order_by':'','offset':'0','select_fields':['id',_0x5567('0x11'),_0x5567('0x3a')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x5567('0x31')](function(_0x5a95db){if(_0x5a95db[_0x5567('0x33')][_0x5567('0x32')]){var _0x292808=_[_0x5567('0x3b')](_0x5a95db[_0x5567('0x33')],function(_0x583b2b){return _0x583b2b[_0x5567('0x37')][_0x5567('0x3a')][_0x5567('0x36')]===_0x12f3d5;});if(_0x292808){logger[_0x5567('0xf')](_0x5567('0x3c'));return BPromise[_0x5567('0x35')]({'id':_0x292808[_0x5567('0x37')]['id']['value'],'name':_0x292808[_0x5567('0x37')][_0x5567('0x11')]['value'],'phone':_0x292808[_0x5567('0x37')][_0x5567('0x3a')][_0x5567('0x36')]});}}else{logger[_0x5567('0xf')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0x5567('0x22'),'input_type':_0x5567('0x23'),'response_type':'JSON','rest_data':JSON[_0x5567('0x2a')]({'session':_0x145a59['id'],'module_name':_0x5567('0x3d'),'name_value_list':[{'name':_0x5567('0x3e'),'value':_0x1404f2!==_0x5567('0x3f')?_0x1404f2:util[_0x5567('0x25')](_0x5567('0x40'),_0x12f3d5)},{'name':_0x5567('0x3a'),'value':_0x12f3d5}]})}})[_0x5567('0x31')](function(_0xaf0aad){logger[_0x5567('0xf')](_0x5567('0x41'));return BPromise[_0x5567('0x35')]({'id':_0xaf0aad['id'],'name':_0xaf0aad[_0x5567('0x33')][_0x5567('0x3e')]['value'],'phone':_0xaf0aad[_0x5567('0x33')][_0x5567('0x3a')]['value']});});}});}function request(_0xa246df){logger[_0x5567('0x42')]('[HTTP]',JSON['stringify'](_0xa246df));return rp(_[_0x5567('0x43')](def,_0xa246df));}function getTags(_0x59bc55,_0x33cef7){var _0x595eb0=[];if(_0x59bc55&&_0x59bc55[_0x5567('0x32')]>0x0){_0x595eb0=_[_0x5567('0x44')](_0x59bc55,_0x33cef7);}return _0x595eb0;}function getCustomFields(_0x4f9311,_0x5e182e){var _0x406675=[];var _0x191b6e={'custom_fields':[]};if(_0x4f9311['length']>0x0){_[_0x5567('0x1f')](_0x4f9311,function(_0x33aaf9){if(_0x33aaf9[_0x5567('0x45')]===_0x5567('0x46')&&_0x33aaf9[_0x5567('0x47')]&&!_0x33aaf9[_0x5567('0x48')]){_0x191b6e[_0x33aaf9[_0x5567('0x47')][_0x5567('0x49')]()]=_0x33aaf9[_0x5567('0x4a')][_0x5567('0x27')]();}else if(_0x33aaf9[_0x5567('0x45')]===_0x5567('0x46')&&_0x33aaf9[_0x5567('0x21')]&&_0x33aaf9[_0x5567('0x48')]){_0x191b6e[_0x5567('0x4b')]['push']({'id':_0x33aaf9['idField'],'value':_0x33aaf9[_0x5567('0x4a')][_0x5567('0x27')]()});}else if(_0x33aaf9[_0x5567('0x45')]==='variable'&&_0x33aaf9[_0x5567('0x20')]&&_0x33aaf9[_0x5567('0x21')]&&_0x33aaf9[_0x5567('0x48')]){_0x5e182e[_0x33aaf9[_0x5567('0x20')]]&&_0x191b6e[_0x5567('0x4b')][_0x5567('0x4c')]({'id':_0x33aaf9[_0x5567('0x21')],'value':_0x5e182e[_0x33aaf9[_0x5567('0x20')]][_0x5567('0x27')]()});}else if(_0x33aaf9[_0x5567('0x45')]==='customVariable'&&_0x33aaf9[_0x5567('0x4d')]&&_0x33aaf9[_0x5567('0x4d')][_0x5567('0x11')]&&_0x33aaf9[_0x5567('0x21')]&&_0x33aaf9['customField']){_0x5e182e[_0x33aaf9[_0x5567('0x4d')][_0x5567('0x11')][_0x5567('0x49')]()]&&_0x191b6e[_0x5567('0x4b')][_0x5567('0x4c')]({'id':_0x33aaf9[_0x5567('0x21')],'value':_0x5e182e[_0x33aaf9[_0x5567('0x4d')][_0x5567('0x11')][_0x5567('0x49')]()][_0x5567('0x27')]()});}});}return _0x191b6e;}function getConnection(_0x47e555){return request({'method':'POST','form':{'method':_0x5567('0x4e'),'input_type':_0x5567('0x23'),'response_type':_0x5567('0x23'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x47e555[_0x5567('0x4f')],'password':_0x47e555[_0x5567('0x50')],'encryption':_0x5567('0x51')},'application':_0x5567('0x52')})}})[_0x5567('0x31')](function(_0x5cb50b){var _0x45fb0e=_0x5cb50b;if(_0x45fb0e['id']){def[_0x5567('0x53')]=_0x45fb0e['id'];return BPromise[_0x5567('0x35')](_0x45fb0e);}else{throw new Error(util[_0x5567('0x25')](_0x5567('0x54'),_0x47e555['id']));}});}function setRelationship(_0x5407bf,_0x2d0ae5,_0xf05bf,_0xa5d0a9){return request({'form':{'method':_0x5567('0x55'),'input_type':_0x5567('0x23'),'response_type':_0x5567('0x23'),'rest_data':JSON[_0x5567('0x2a')]({'session':_0x5407bf['id'],'module_name':_0x5567('0x24'),'module_id':_0xf05bf['id'],'link_field_name':_0xa5d0a9,'related_ids':[_0x2d0ae5['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x592e4a,_0x2d5c12,_0x276ef8,_0x16264f,_0x2988d1,_0x4a6e4a){var _0x419c0d,_0x169850,_0x437f54,_0x3c488b;_0x4a6e4a['remoteUri']=intUtil['stripTrailingSlash'](_0x4a6e4a[_0x5567('0x56')]);_0x4a6e4a[_0x5567('0x57')]=intUtil['stripTrailingSlash'](_0x4a6e4a[_0x5567('0x57')]);def['uri']=util['format'](_0x5567('0x58'),_0x4a6e4a[_0x5567('0x56')]);if(_0x2988d1&&_0x2988d1[_0x5567('0x59')]){logger[_0x5567('0xf')]('[QUEUE]',_0x5567('0x5a'));_0x2d5c12[_0x5567('0x5b')]=util[_0x5567('0x25')](_0x5567('0x5c'),_0x4a6e4a[_0x5567('0x57')],_0x2d5c12[_0x5567('0x5d')],md5(_0x2d5c12['uniqueid']));}else{_0x2d5c12[_0x5567('0x5b')]='';}return getConnection(_0x4a6e4a)[_0x5567('0x31')](function(_0x22eeb3){_0x3c488b=_0x22eeb3;return getUser(_0x4a6e4a,_0x16264f[_0x5567('0x11')],_0x3c488b);})[_0x5567('0x31')](function(_0x907921){_0x419c0d=_0x907921;logger[_0x5567('0xf')](_0x5567('0x5e'),_0x419c0d['id']);return getEndUser(_0x4a6e4a,_0x2d5c12['calleridname'],_0x2d5c12['calleridnum'],_0x3c488b);})[_0x5567('0x31')](function(_0x5dd764){_0x169850=_0x5dd764;logger[_0x5567('0xf')]('The\x20Enduser\x20ID\x20is:',_0x169850['id']);return getTicket(_0x4a6e4a,_0x419c0d,_0x169850,_0x276ef8,_0x2d5c12,_0x276ef8[_0x5567('0x5f')],_0x3c488b,'Inbound');})['then'](function(_0x2f9ec0){_0x437f54=_0x2f9ec0;logger[_0x5567('0xf')](_0x5567('0x60'));logger['info'](_0x5567('0x61'),_0x437f54['id']);return setRelationship(_0x3c488b,_0x419c0d,_0x437f54,'users');})[_0x5567('0x31')](function(){return setRelationship(_0x3c488b,_0x169850,_0x437f54,_0x5567('0x62'));})[_0x5567('0x31')](function(){return getServerInfo(_0x3c488b);})[_0x5567('0x31')](function(_0x4a783e){var _0x4f764e=parseInt(_0x4a783e[_0x5567('0x63')][_0x5567('0x64')](0x0));var _0x4924e6=util['format'](_0x5567('0x65'),_0x4a6e4a[_0x5567('0x56')],_0x437f54['id']);if(_0x4f764e>0x6){_0x4924e6=util[_0x5567('0x25')](_0x5567('0x66'),_0x4a6e4a['remoteUri'],_0x437f54['id']);}logger[_0x5567('0xf')]('[QUEUE]',_0x5567('0x67'));emit(util[_0x5567('0x25')]('user:%s',_0x16264f[_0x5567('0x11')]),_0x5567('0x68'),{'uri':_0x4924e6});})[_0x5567('0x69')](function(_0x123ed2){logger[_0x5567('0x6a')](_0x5567('0x6b'),JSON[_0x5567('0x2a')](_0x123ed2));});};exports['outbound']=function(_0x5568c7,_0x2936e9,_0x58ccd7,_0xd367b9,_0x5a6ff6,_0x354c27,_0x55ab1e){var _0x52afd5,_0x26a20a,_0x10a3f3,_0x1cc14f;_0x354c27[_0x5567('0x56')]=intUtil[_0x5567('0x6c')](_0x354c27[_0x5567('0x56')]);_0x354c27[_0x5567('0x57')]=intUtil['stripTrailingSlash'](_0x354c27[_0x5567('0x57')]);def[_0x5567('0x6d')]=util['format'](_0x5567('0x58'),_0x354c27[_0x5567('0x56')]);if(_0x55ab1e&&_0x55ab1e[_0x5567('0x6e')]&&_0x55ab1e[_0x5567('0x6e')]!==_0x5567('0x6f')){logger[_0x5567('0xf')]('[OUTBOUND]',_0x5567('0x5a'));_0x2936e9['recordingURL']=util[_0x5567('0x25')](_0x5567('0x5c'),_0x354c27[_0x5567('0x57')],_0x2936e9[_0x5567('0x5d')],md5(_0x2936e9[_0x5567('0x5d')]));}return getConnection(_0x354c27)[_0x5567('0x31')](function(_0x10cd3b){_0x1cc14f=_0x10cd3b;return getUser(_0x354c27,_0xd367b9['name'],_0x1cc14f);})[_0x5567('0x31')](function(_0x1be43e){_0x52afd5=_0x1be43e;logger[_0x5567('0xf')](_0x5567('0x5e'),_0x52afd5['id']);return getEndUser(_0x354c27,_0x2936e9[_0x5567('0x70')],_0x2936e9[_0x5567('0x71')],_0x1cc14f);})['then'](function(_0x1ec194){_0x26a20a=_0x1ec194;logger[_0x5567('0xf')](_0x5567('0x72'),_0x26a20a['id']);return getTicket(_0x354c27,_0x52afd5,_0x26a20a,_0x58ccd7,_0x2936e9,_0x58ccd7['Fields'],_0x1cc14f,_0x5567('0x73'));})['then'](function(_0x13011e){_0x10a3f3=_0x13011e;logger[_0x5567('0xf')](_0x5567('0x60'));logger[_0x5567('0xf')]('The\x20Ticket\x20ID\x20is:',_0x10a3f3['id']);return setRelationship(_0x1cc14f,_0x52afd5,_0x10a3f3,_0x5567('0x74'));})[_0x5567('0x31')](function(){return setRelationship(_0x1cc14f,_0x26a20a,_0x10a3f3,_0x5567('0x62'));})[_0x5567('0x31')](function(){return getServerInfo(_0x1cc14f);})[_0x5567('0x31')](function(_0x56569c){var _0x2d5fe4=parseInt(_0x56569c[_0x5567('0x63')][_0x5567('0x64')](0x0));var _0x1d1594=util[_0x5567('0x25')](_0x5567('0x65'),_0x354c27[_0x5567('0x56')],_0x10a3f3['id']);if(_0x2d5fe4>0x6){_0x1d1594=util['format'](_0x5567('0x66'),_0x354c27['remoteUri'],_0x10a3f3['id']);}logger[_0x5567('0xf')](_0x5567('0x75'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x5567('0x25')](_0x5567('0x76'),_0xd367b9[_0x5567('0x11')]),_0x5567('0x68'),{'uri':_0x1d1594});})[_0x5567('0x69')](function(_0x145f2c){logger[_0x5567('0x6a')](_0x5567('0x75'),JSON[_0x5567('0x2a')](_0x145f2c));});};exports[_0x5567('0x77')]=function(_0x19bcc8,_0x365717,_0xa0e49d,_0xff4dc,_0x10f04b,_0x5f28fc){var _0x212d68,_0x2fe997,_0x488c8,_0x507750;_0x5f28fc['remoteUri']=intUtil['stripTrailingSlash'](_0x5f28fc[_0x5567('0x56')]);_0x5f28fc['serverUrl']=intUtil[_0x5567('0x6c')](_0x5f28fc[_0x5567('0x57')]);def[_0x5567('0x6d')]=util[_0x5567('0x25')](_0x5567('0x58'),_0x5f28fc[_0x5567('0x56')]);if(_0x10f04b&&_0x10f04b[_0x5567('0x59')]){logger[_0x5567('0xf')]('['+_0x365717[_0x5567('0x78')][_0x5567('0x79')]()+']',_0x5567('0x5a'));_0x365717[_0x5567('0x5b')]=util['format'](_0x5567('0x5c'),_0x5f28fc['serverUrl'],_0x365717['uniqueid'],md5(_0x365717[_0x5567('0x5d')]));}else{_0x365717[_0x5567('0x5b')]='';}return getConnection(_0x5f28fc)[_0x5567('0x31')](function(_0x246739){_0x507750=_0x246739;if(!_[_0x5567('0x2b')](_0xff4dc)){return getUser(_0x5f28fc,_0xff4dc['name'],_0x507750);}else{return getUser(_0x5f28fc,null,_0x507750);}})[_0x5567('0x31')](function(_0x1c50cc){_0x212d68=_0x1c50cc;logger[_0x5567('0xf')](_0x5567('0x5e'),_0x212d68['id']);return getEndUser(_0x5f28fc,_0x365717[_0x5567('0x7a')],_0x365717[_0x5567('0x7b')],_0x507750);})[_0x5567('0x31')](function(_0x324c04){_0x2fe997=_0x324c04;logger[_0x5567('0xf')](_0x5567('0x72'),_0x2fe997['id']);return getTicket(_0x5f28fc,_0x212d68,_0x2fe997,_0xa0e49d,_0x365717,_0xa0e49d['Fields'],_0x507750,_0x5567('0x7c'));})['then'](function(_0x20f556){_0x488c8=_0x20f556;logger[_0x5567('0xf')](_0x5567('0x60'));logger[_0x5567('0xf')](_0x5567('0x61'),_0x488c8['id']);return setRelationship(_0x507750,_0x212d68,_0x488c8,'users');})['then'](function(){return setRelationship(_0x507750,_0x2fe997,_0x488c8,_0x5567('0x62'));})['then'](function(){return getServerInfo(_0x507750);})[_0x5567('0x69')](function(_0x562b1c){logger[_0x5567('0x6a')]('['+_0x365717['lastevent'][_0x5567('0x79')]()+']',JSON[_0x5567('0x2a')](_0x562b1c));});};
\ No newline at end of file
+var _0x9efd=['find','value','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','user_name','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','first_name','<unknown>','Enduser\x20created.','[HTTP]','merge','map','nameField','toLowerCase','content','type','string','customField','custom_fields','push','toString','variable','customVariable','Variable','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','set_relationship','queue','stripTrailingSlash','remoteUri','serverUrl','monitor_format','[QUEUE]','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','outbound','uri','%s/service/v4_1/rest.php','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','Outbound','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','catch','unmanaged','lastevent','toUpperCase','isNil','bluebird','md5','util','ioredis','../../../../config/environment','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','created_by','description','Descriptions','date_start','toISOString','slice','replace','duration_hours','duration_minutes','Contacts','parent_name','direction','forEach','variableName','idField','set_entry','JSON','stringify','Calls','format','apiKey','base64','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','then','entry_list','length'];(function(_0x11ae28,_0x5a2fa9){var _0x5012ec=function(_0x520237){while(--_0x520237){_0x11ae28['push'](_0x11ae28['shift']());}};_0x5012ec(++_0x5a2fa9);}(_0x9efd,0x145));var _0xd9ef=function(_0x4b9202,_0x383b84){_0x4b9202=_0x4b9202-0x0;var _0x4727a7=_0x9efd[_0x4b9202];return _0x4727a7;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0xd9ef('0x0'));var md5=require(_0xd9ef('0x1'));var util=require(_0xd9ef('0x2'));var Redis=require(_0xd9ef('0x3'));var intUtil=require('./util');var config=require(_0xd9ef('0x4'));var logger=require('../../../../config/logger')(_0xd9ef('0x5'));config[_0xd9ef('0x6')]=_[_0xd9ef('0x7')](config['redis'],{'host':_0xd9ef('0x8'),'port':0x18eb});var io=require(_0xd9ef('0x9'))(new Redis(config[_0xd9ef('0x6')]));var def={'method':_0xd9ef('0xa'),'json':!![]};function emit(_0x58131b,_0x622389,_0x52ae0c){io['to'](_0x58131b)[_0xd9ef('0xb')](_0x622389,_0x52ae0c);}function getTicket(_0x39e917,_0x1abbd7,_0x7d2632,_0x15d199,_0xe19580,_0xb5c0c8,_0x53e213,_0x2d6bf3){logger[_0xd9ef('0xc')](_0xd9ef('0xd'));var _0x3b2b1c=new Date();var _0x169ad7=[{'name':_0xd9ef('0xe'),'value':intUtil[_0xd9ef('0xf')](_0x15d199[_0xd9ef('0x10')],_0xe19580,'\x20')},{'name':_0xd9ef('0x11'),'value':_0x1abbd7['id']},{'name':_0xd9ef('0x12'),'value':_0x1abbd7['id']},{'name':_0xd9ef('0x13'),'value':intUtil[_0xd9ef('0xf')](_0x15d199[_0xd9ef('0x14')],_0xe19580,'\x0a')},{'name':_0xd9ef('0x15'),'value':_0x3b2b1c[_0xd9ef('0x16')]()[_0xd9ef('0x17')](0x0,0x13)[_0xd9ef('0x18')]('T','\x20')},{'name':_0xd9ef('0x19'),'value':'0'},{'name':_0xd9ef('0x1a'),'value':'15'},{'name':'parent_id','value':_0x7d2632['id']},{'name':'parent_type','value':_0xd9ef('0x1b')},{'name':_0xd9ef('0x1c'),'value':_0x7d2632['name']},{'name':_0xd9ef('0x1d'),'value':_0x2d6bf3}];if(_0xb5c0c8['length']){_[_0xd9ef('0x1e')](_0xb5c0c8,function(_0x1b4723){if(_0xe19580[_0x1b4723[_0xd9ef('0x1f')]]){_0x169ad7['push']({'name':_0x1b4723[_0xd9ef('0x20')],'value':_0xe19580[_0x1b4723[_0xd9ef('0x1f')]]});}});}return request({'form':{'method':_0xd9ef('0x21'),'input_type':_0xd9ef('0x22'),'response_type':_0xd9ef('0x22'),'rest_data':JSON[_0xd9ef('0x23')]({'session':_0x53e213['id'],'module_name':_0xd9ef('0x24'),'name_value_list':_0x169ad7})}});}function getAuth(_0x3f7d26){return util[_0xd9ef('0x25')]('Basic\x20%s',new Buffer(_0x3f7d26[_0xd9ef('0x26')]+':X')['toString'](_0xd9ef('0x27')));}function getServerInfo(_0xf4b34b){return request({'form':{'method':'get_server_info','input_type':_0xd9ef('0x22'),'response_type':_0xd9ef('0x22'),'rest_data':JSON[_0xd9ef('0x23')]({'session':_0xf4b34b['id']})}});}function getUser(_0x221427,_0x597b89,_0x4453b0){if(!_['isNil'](_0x597b89)){logger[_0xd9ef('0xc')](_0xd9ef('0x28'),_0x597b89);return request({'form':{'method':_0xd9ef('0x29'),'input_type':'JSON','response_type':_0xd9ef('0x22'),'rest_data':JSON[_0xd9ef('0x23')]({'session':_0x4453b0['id'],'module_name':_0xd9ef('0x2a'),'query':util[_0xd9ef('0x25')](_0xd9ef('0x2b'),_0x597b89),'order_by':'','offset':'0','select_fields':['id',_0xd9ef('0xe'),'user_name'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xd9ef('0x2c')](function(_0x26558c){if(_0x26558c[_0xd9ef('0x2d')][_0xd9ef('0x2e')]){var _0x4eae6d=_[_0xd9ef('0x2f')](_0x26558c[_0xd9ef('0x2d')],function(_0x481a70){return _0x481a70['name_value_list']['user_name'][_0xd9ef('0x30')]===_0x597b89;});if(_0x4eae6d){logger['info']('Agent\x20found!');return BPromise[_0xd9ef('0x31')]({'id':_0x4eae6d['name_value_list']['id'][_0xd9ef('0x30')],'name':_0x4eae6d[_0xd9ef('0x32')][_0xd9ef('0xe')]['value']});}}logger[_0xd9ef('0xc')](_0xd9ef('0x33'));return BPromise[_0xd9ef('0x31')]({'id':_0x4453b0['name_value_list'][_0xd9ef('0x34')][_0xd9ef('0x30')],'name':_0x4453b0[_0xd9ef('0x32')][_0xd9ef('0x35')][_0xd9ef('0x30')]});});}else{logger[_0xd9ef('0xc')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0xd9ef('0x31')]({'id':_0x4453b0[_0xd9ef('0x32')][_0xd9ef('0x34')][_0xd9ef('0x30')],'name':_0x4453b0[_0xd9ef('0x32')][_0xd9ef('0x35')]['value']});}}function getEndUser(_0xadb35,_0x3736f5,_0x54dcb4,_0x20b82e){logger[_0xd9ef('0xc')](_0xd9ef('0x36'),_0x54dcb4);return request({'form':{'method':'get_entry_list','input_type':'JSON','response_type':'JSON','rest_data':JSON[_0xd9ef('0x23')]({'session':_0x20b82e['id'],'module_name':_0xd9ef('0x1b'),'query':util[_0xd9ef('0x25')](_0xd9ef('0x37'),_0x54dcb4),'order_by':'','offset':'0','select_fields':['id',_0xd9ef('0xe'),_0xd9ef('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xd9ef('0x2c')](function(_0x2c04b4){if(_0x2c04b4[_0xd9ef('0x2d')]['length']){var _0x3e5def=_[_0xd9ef('0x2f')](_0x2c04b4[_0xd9ef('0x2d')],function(_0x2b1d85){return _0x2b1d85[_0xd9ef('0x32')]['phone_home'][_0xd9ef('0x30')]===_0x54dcb4;});if(_0x3e5def){logger[_0xd9ef('0xc')](_0xd9ef('0x39'));return BPromise[_0xd9ef('0x31')]({'id':_0x3e5def[_0xd9ef('0x32')]['id'][_0xd9ef('0x30')],'name':_0x3e5def[_0xd9ef('0x32')]['name'][_0xd9ef('0x30')],'phone':_0x3e5def['name_value_list'][_0xd9ef('0x38')]['value']});}}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':'set_entry','input_type':_0xd9ef('0x22'),'response_type':_0xd9ef('0x22'),'rest_data':JSON[_0xd9ef('0x23')]({'session':_0x20b82e['id'],'module_name':'Contacts','name_value_list':[{'name':_0xd9ef('0x3a'),'value':_0x3736f5!==_0xd9ef('0x3b')?_0x3736f5:util[_0xd9ef('0x25')]('Caller\x20-\x20%s',_0x54dcb4)},{'name':'phone_home','value':_0x54dcb4}]})}})[_0xd9ef('0x2c')](function(_0x147bea){logger[_0xd9ef('0xc')](_0xd9ef('0x3c'));return BPromise[_0xd9ef('0x31')]({'id':_0x147bea['id'],'name':_0x147bea[_0xd9ef('0x2d')][_0xd9ef('0x3a')][_0xd9ef('0x30')],'phone':_0x147bea['entry_list'][_0xd9ef('0x38')][_0xd9ef('0x30')]});});}});}function request(_0x48fd3e){logger['debug'](_0xd9ef('0x3d'),JSON[_0xd9ef('0x23')](_0x48fd3e));return rp(_[_0xd9ef('0x3e')](def,_0x48fd3e));}function getTags(_0x5bd064,_0x40636b){var _0x3e0323=[];if(_0x5bd064&&_0x5bd064[_0xd9ef('0x2e')]>0x0){_0x3e0323=_[_0xd9ef('0x3f')](_0x5bd064,_0x40636b);}return _0x3e0323;}function getCustomFields(_0x89686,_0x2e4379){var _0x64dd43=[];var _0x232c1f={'custom_fields':[]};if(_0x89686[_0xd9ef('0x2e')]>0x0){_[_0xd9ef('0x1e')](_0x89686,function(_0x43bdb1){if(_0x43bdb1['type']==='string'&&_0x43bdb1[_0xd9ef('0x40')]&&!_0x43bdb1['customField']){_0x232c1f[_0x43bdb1[_0xd9ef('0x40')][_0xd9ef('0x41')]()]=_0x43bdb1[_0xd9ef('0x42')]['toString']();}else if(_0x43bdb1[_0xd9ef('0x43')]===_0xd9ef('0x44')&&_0x43bdb1[_0xd9ef('0x20')]&&_0x43bdb1[_0xd9ef('0x45')]){_0x232c1f[_0xd9ef('0x46')][_0xd9ef('0x47')]({'id':_0x43bdb1[_0xd9ef('0x20')],'value':_0x43bdb1[_0xd9ef('0x42')][_0xd9ef('0x48')]()});}else if(_0x43bdb1[_0xd9ef('0x43')]===_0xd9ef('0x49')&&_0x43bdb1[_0xd9ef('0x1f')]&&_0x43bdb1[_0xd9ef('0x20')]&&_0x43bdb1[_0xd9ef('0x45')]){_0x2e4379[_0x43bdb1[_0xd9ef('0x1f')]]&&_0x232c1f['custom_fields'][_0xd9ef('0x47')]({'id':_0x43bdb1['idField'],'value':_0x2e4379[_0x43bdb1['variableName']][_0xd9ef('0x48')]()});}else if(_0x43bdb1[_0xd9ef('0x43')]===_0xd9ef('0x4a')&&_0x43bdb1[_0xd9ef('0x4b')]&&_0x43bdb1[_0xd9ef('0x4b')]['name']&&_0x43bdb1[_0xd9ef('0x20')]&&_0x43bdb1['customField']){_0x2e4379[_0x43bdb1[_0xd9ef('0x4b')][_0xd9ef('0xe')][_0xd9ef('0x41')]()]&&_0x232c1f[_0xd9ef('0x46')]['push']({'id':_0x43bdb1[_0xd9ef('0x20')],'value':_0x2e4379[_0x43bdb1[_0xd9ef('0x4b')][_0xd9ef('0xe')][_0xd9ef('0x41')]()]['toString']()});}});}return _0x232c1f;}function getConnection(_0x1cb56a){return request({'method':_0xd9ef('0xa'),'form':{'method':_0xd9ef('0x4c'),'input_type':_0xd9ef('0x22'),'response_type':'JSON','rest_data':JSON[_0xd9ef('0x23')]({'user_auth':{'user_name':_0x1cb56a[_0xd9ef('0x4d')],'password':_0x1cb56a[_0xd9ef('0x4e')],'encryption':_0xd9ef('0x4f')},'application':_0xd9ef('0x50')})}})[_0xd9ef('0x2c')](function(_0x36b8a2){var _0xaa1e20=_0x36b8a2;if(_0xaa1e20['id']){def['sessionID']=_0xaa1e20['id'];return BPromise[_0xd9ef('0x31')](_0xaa1e20);}else{throw new Error(util[_0xd9ef('0x25')]('Account\x20%d\x20is\x20not\x20valid',_0x1cb56a['id']));}});}function setRelationship(_0x5b68fc,_0x107455,_0x97ab2d,_0x589dd9){return request({'form':{'method':_0xd9ef('0x51'),'input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'session':_0x5b68fc['id'],'module_name':_0xd9ef('0x24'),'module_id':_0x97ab2d['id'],'link_field_name':_0x589dd9,'related_ids':[_0x107455['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xd9ef('0x52')]=function(_0x1a5c75,_0x3ff03c,_0x59fa9f,_0x57cc5,_0x3a8e2c,_0x34b51b){var _0x5624d6,_0x1e0ffd,_0x4e236b,_0x345d52;_0x34b51b['remoteUri']=intUtil[_0xd9ef('0x53')](_0x34b51b[_0xd9ef('0x54')]);_0x34b51b[_0xd9ef('0x55')]=intUtil[_0xd9ef('0x53')](_0x34b51b[_0xd9ef('0x55')]);def['uri']=util[_0xd9ef('0x25')]('%s/service/v4_1/rest.php',_0x34b51b[_0xd9ef('0x54')]);if(_0x3a8e2c&&_0x3a8e2c[_0xd9ef('0x56')]){logger[_0xd9ef('0xc')](_0xd9ef('0x57'),'Recording\x20is\x20enabled!');_0x3ff03c[_0xd9ef('0x58')]=util[_0xd9ef('0x25')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x34b51b[_0xd9ef('0x55')],_0x3ff03c['uniqueid'],md5(_0x3ff03c[_0xd9ef('0x59')]));}else{_0x3ff03c[_0xd9ef('0x58')]='';}return getConnection(_0x34b51b)[_0xd9ef('0x2c')](function(_0x5489de){_0x345d52=_0x5489de;return getUser(_0x34b51b,_0x57cc5[_0xd9ef('0xe')],_0x345d52);})[_0xd9ef('0x2c')](function(_0xe46d6){_0x5624d6=_0xe46d6;logger[_0xd9ef('0xc')](_0xd9ef('0x5a'),_0x5624d6['id']);return getEndUser(_0x34b51b,_0x3ff03c[_0xd9ef('0x5b')],_0x3ff03c[_0xd9ef('0x5c')],_0x345d52);})[_0xd9ef('0x2c')](function(_0x30c09b){_0x1e0ffd=_0x30c09b;logger[_0xd9ef('0xc')](_0xd9ef('0x5d'),_0x1e0ffd['id']);return getTicket(_0x34b51b,_0x5624d6,_0x1e0ffd,_0x59fa9f,_0x3ff03c,_0x59fa9f[_0xd9ef('0x5e')],_0x345d52,_0xd9ef('0x5f'));})[_0xd9ef('0x2c')](function(_0x1c2a8d){_0x4e236b=_0x1c2a8d;logger[_0xd9ef('0xc')](_0xd9ef('0x60'));logger[_0xd9ef('0xc')](_0xd9ef('0x61'),_0x4e236b['id']);return setRelationship(_0x345d52,_0x5624d6,_0x4e236b,_0xd9ef('0x62'));})['then'](function(){return setRelationship(_0x345d52,_0x1e0ffd,_0x4e236b,_0xd9ef('0x63'));})['then'](function(){return getServerInfo(_0x345d52);})[_0xd9ef('0x2c')](function(_0x34d97e){var _0x22c912=parseInt(_0x34d97e[_0xd9ef('0x64')][_0xd9ef('0x65')](0x0));var _0x3a2423=util[_0xd9ef('0x25')](_0xd9ef('0x66'),_0x34b51b['remoteUri'],_0x4e236b['id']);if(_0x22c912>0x6){_0x3a2423=util[_0xd9ef('0x25')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x34b51b[_0xd9ef('0x54')],_0x4e236b['id']);}logger[_0xd9ef('0xc')](_0xd9ef('0x57'),_0xd9ef('0x67'));emit(util[_0xd9ef('0x25')](_0xd9ef('0x68'),_0x57cc5[_0xd9ef('0xe')]),_0xd9ef('0x69'),{'uri':_0x3a2423});})['catch'](function(_0x4fa047){logger[_0xd9ef('0x6a')](_0xd9ef('0x57'),JSON[_0xd9ef('0x23')](_0x4fa047));});};exports[_0xd9ef('0x6b')]=function(_0x1614d2,_0x4b143d,_0x496f56,_0x3cb198,_0x37e540,_0x304c12,_0x42793a){var _0x2b171f,_0x38e33b,_0x2e149c,_0xf8da10;_0x304c12['remoteUri']=intUtil[_0xd9ef('0x53')](_0x304c12[_0xd9ef('0x54')]);_0x304c12['serverUrl']=intUtil['stripTrailingSlash'](_0x304c12[_0xd9ef('0x55')]);def[_0xd9ef('0x6c')]=util[_0xd9ef('0x25')](_0xd9ef('0x6d'),_0x304c12['remoteUri']);if(_0x42793a&&_0x42793a[_0xd9ef('0x6e')]&&_0x42793a[_0xd9ef('0x6e')]!==_0xd9ef('0x6f')){logger[_0xd9ef('0xc')](_0xd9ef('0x70'),_0xd9ef('0x71'));_0x4b143d[_0xd9ef('0x58')]=util[_0xd9ef('0x25')](_0xd9ef('0x72'),_0x304c12[_0xd9ef('0x55')],_0x4b143d[_0xd9ef('0x59')],md5(_0x4b143d[_0xd9ef('0x59')]));}return getConnection(_0x304c12)[_0xd9ef('0x2c')](function(_0xc00757){_0xf8da10=_0xc00757;return getUser(_0x304c12,_0x3cb198[_0xd9ef('0xe')],_0xf8da10);})[_0xd9ef('0x2c')](function(_0x3df814){_0x2b171f=_0x3df814;logger['info'](_0xd9ef('0x5a'),_0x2b171f['id']);return getEndUser(_0x304c12,_0x4b143d[_0xd9ef('0x73')],_0x4b143d[_0xd9ef('0x74')],_0xf8da10);})[_0xd9ef('0x2c')](function(_0x473693){_0x38e33b=_0x473693;logger[_0xd9ef('0xc')](_0xd9ef('0x5d'),_0x38e33b['id']);return getTicket(_0x304c12,_0x2b171f,_0x38e33b,_0x496f56,_0x4b143d,_0x496f56[_0xd9ef('0x5e')],_0xf8da10,_0xd9ef('0x75'));})[_0xd9ef('0x2c')](function(_0x208639){_0x2e149c=_0x208639;logger[_0xd9ef('0xc')](_0xd9ef('0x60'));logger[_0xd9ef('0xc')](_0xd9ef('0x61'),_0x2e149c['id']);return setRelationship(_0xf8da10,_0x2b171f,_0x2e149c,_0xd9ef('0x62'));})['then'](function(){return setRelationship(_0xf8da10,_0x38e33b,_0x2e149c,_0xd9ef('0x63'));})[_0xd9ef('0x2c')](function(){return getServerInfo(_0xf8da10);})['then'](function(_0x1bf9c3){var _0x25f32e=parseInt(_0x1bf9c3[_0xd9ef('0x64')][_0xd9ef('0x65')](0x0));var _0x586f24=util[_0xd9ef('0x25')](_0xd9ef('0x66'),_0x304c12['remoteUri'],_0x2e149c['id']);if(_0x25f32e>0x6){_0x586f24=util['format'](_0xd9ef('0x76'),_0x304c12[_0xd9ef('0x54')],_0x2e149c['id']);}logger[_0xd9ef('0xc')](_0xd9ef('0x70'),_0xd9ef('0x67'));emit(util['format']('user:%s',_0x3cb198[_0xd9ef('0xe')]),'trigger:browser:url',{'uri':_0x586f24});})[_0xd9ef('0x77')](function(_0x12887c){logger[_0xd9ef('0x6a')](_0xd9ef('0x70'),JSON[_0xd9ef('0x23')](_0x12887c));});};exports[_0xd9ef('0x78')]=function(_0x4b029b,_0x15710c,_0x11c08b,_0x1c252d,_0x8632b,_0x5a1cab){var _0x394e33,_0x5b5c62,_0x12cd56,_0x3c1bd1;_0x5a1cab['remoteUri']=intUtil[_0xd9ef('0x53')](_0x5a1cab[_0xd9ef('0x54')]);_0x5a1cab[_0xd9ef('0x55')]=intUtil['stripTrailingSlash'](_0x5a1cab['serverUrl']);def[_0xd9ef('0x6c')]=util[_0xd9ef('0x25')]('%s/service/v4_1/rest.php',_0x5a1cab[_0xd9ef('0x54')]);if(_0x8632b&&_0x8632b[_0xd9ef('0x56')]){logger[_0xd9ef('0xc')]('['+_0x15710c[_0xd9ef('0x79')][_0xd9ef('0x7a')]()+']','Recording\x20is\x20enabled!');_0x15710c[_0xd9ef('0x58')]=util[_0xd9ef('0x25')](_0xd9ef('0x72'),_0x5a1cab['serverUrl'],_0x15710c[_0xd9ef('0x59')],md5(_0x15710c[_0xd9ef('0x59')]));}else{_0x15710c[_0xd9ef('0x58')]='';}return getConnection(_0x5a1cab)['then'](function(_0x157235){_0x3c1bd1=_0x157235;if(!_[_0xd9ef('0x7b')](_0x1c252d)){return getUser(_0x5a1cab,_0x1c252d[_0xd9ef('0xe')],_0x3c1bd1);}else{return getUser(_0x5a1cab,null,_0x3c1bd1);}})[_0xd9ef('0x2c')](function(_0x25a053){_0x394e33=_0x25a053;logger['info'](_0xd9ef('0x5a'),_0x394e33['id']);return getEndUser(_0x5a1cab,_0x15710c['calleridname'],_0x15710c[_0xd9ef('0x5c')],_0x3c1bd1);})[_0xd9ef('0x2c')](function(_0x5aa33d){_0x5b5c62=_0x5aa33d;logger[_0xd9ef('0xc')](_0xd9ef('0x5d'),_0x5b5c62['id']);return getTicket(_0x5a1cab,_0x394e33,_0x5b5c62,_0x11c08b,_0x15710c,_0x11c08b[_0xd9ef('0x5e')],_0x3c1bd1,_0xd9ef('0x5f'));})['then'](function(_0x5c7bc2){_0x12cd56=_0x5c7bc2;logger[_0xd9ef('0xc')](_0xd9ef('0x60'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x12cd56['id']);return setRelationship(_0x3c1bd1,_0x394e33,_0x12cd56,_0xd9ef('0x62'));})['then'](function(){return setRelationship(_0x3c1bd1,_0x5b5c62,_0x12cd56,_0xd9ef('0x63'));})[_0xd9ef('0x2c')](function(){return getServerInfo(_0x3c1bd1);})['catch'](function(_0x427f6a){logger[_0xd9ef('0x6a')]('['+_0x15710c['lastevent'][_0xd9ef('0x7a')]()+']',JSON[_0xd9ef('0x23')](_0x427f6a));});};
\ No newline at end of file
index 0944173..06286b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5254=['%s:\x20%s','join','slice','substring','lastIndexOf','isNil','test','lodash','length','type','string','push','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','key','format'];(function(_0x5563f2,_0x57def7){var _0x446209=function(_0xa50caa){while(--_0xa50caa){_0x5563f2['push'](_0x5563f2['shift']());}};_0x446209(++_0x57def7);}(_0x5254,0x67));var _0x4525=function(_0x4f9345,_0x98d79){_0x4f9345=_0x4f9345-0x0;var _0x4ec75a=_0x5254[_0x4f9345];return _0x4ec75a;};'use strict';var _=require(_0x4525('0x0'));var util=require('util');exports['getString']=function(_0x453510,_0x279a67,_0xff08d5){var _0x311a6a=[];if(_0x453510[_0x4525('0x1')]>0x0){var _0xd5de6=_['sortBy'](_0x453510,['id']);for(var _0x2c2edc=0x0;_0x2c2edc<_0xd5de6['length'];_0x2c2edc++){var _0x5eb4ac=_0xd5de6[_0x2c2edc];if(_0x5eb4ac[_0x4525('0x2')]===_0x4525('0x3')){_0x311a6a[_0x4525('0x4')](_0x5eb4ac[_0x4525('0x5')]);}else if(_0x5eb4ac[_0x4525('0x2')]===_0x4525('0x6')&&_0x5eb4ac[_0x4525('0x7')]){_0x279a67[_0x5eb4ac[_0x4525('0x7')]]&&_0x311a6a[_0x4525('0x4')](_0x279a67[_0x5eb4ac['variableName']][_0x4525('0x8')]());}else if(_0x5eb4ac[_0x4525('0x2')]===_0x4525('0x9')&&_0x5eb4ac[_0x4525('0xa')]&&_0x5eb4ac[_0x4525('0xa')][_0x4525('0xb')]){_0x279a67[_0x5eb4ac[_0x4525('0xa')][_0x4525('0xb')][_0x4525('0xc')]()]&&_0x311a6a[_0x4525('0x4')](_0x279a67[_0x5eb4ac['Variable']['name']['toLowerCase']()][_0x4525('0x8')]());}else if(_0x5eb4ac[_0x4525('0x2')]===_0x4525('0xd')){if(_0x5eb4ac[_0x4525('0xe')]==='string'&&_0x5eb4ac[_0x4525('0xf')]){_0x311a6a[_0x4525('0x4')](util[_0x4525('0x10')](_0x4525('0x11'),_0x5eb4ac[_0x4525('0xf')],_0x5eb4ac['keyContent']));}else if(_0x5eb4ac[_0x4525('0xe')]===_0x4525('0x6')&&_0x5eb4ac[_0x4525('0x7')]&&_0x5eb4ac[_0x4525('0xf')]){_0x279a67[_0x5eb4ac['variableName']]&&_0x311a6a['push'](util['format'](_0x4525('0x11'),_0x5eb4ac[_0x4525('0xf')],_0x279a67[_0x5eb4ac[_0x4525('0x7')]]));}else if(_0x5eb4ac['keyType']===_0x4525('0x9')&&_0x5eb4ac['Variable']&&_0x5eb4ac['Variable']['name']&&_0x5eb4ac[_0x4525('0xf')]){_0x279a67[_0x5eb4ac[_0x4525('0xa')][_0x4525('0xb')]['toLowerCase']()]&&_0x311a6a['push'](util[_0x4525('0x10')](_0x4525('0x11'),_0x5eb4ac[_0x4525('0xf')],_0x279a67[_0x5eb4ac[_0x4525('0xa')][_0x4525('0xb')][_0x4525('0xc')]()]));}}}}return _0x311a6a[_0x4525('0x12')](_0xff08d5);};exports['stripTrailingSlash']=function(_0x316f58){var _0xa76ae=_0x316f58[_0x4525('0x13')](-0x1);if(_0xa76ae==='/'){_0x316f58=_0x316f58[_0x4525('0x14')](0x0,_0x316f58[_0x4525('0x15')](_0xa76ae));}return _0x316f58;};exports['validateEmail']=function(_0x14fe65){if(!_[_0x4525('0x16')](_0x14fe65)&&_0x14fe65!==''){var _0x41da1e=/^(([^<>()\[\]\\.,;:\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 _0x41da1e[_0x4525('0x17')](String(_0x14fe65)[_0x4525('0xc')]());}else{return![];}};
\ No newline at end of file
+var _0x4f79=['toString','customVariable','Variable','name','toLowerCase','keyType','string','key','format','%s:\x20%s','keyContent','join','stripTrailingSlash','slice','substring','lastIndexOf','validateEmail','isNil','test','lodash','util','getString','sortBy','type','content','variable','variableName','push'];(function(_0x2c763e,_0x4654de){var _0x53b5b8=function(_0x449c4b){while(--_0x449c4b){_0x2c763e['push'](_0x2c763e['shift']());}};_0x53b5b8(++_0x4654de);}(_0x4f79,0xf3));var _0x94f7=function(_0x31b4d3,_0x1a34a3){_0x31b4d3=_0x31b4d3-0x0;var _0x5927cc=_0x4f79[_0x31b4d3];return _0x5927cc;};'use strict';var _=require(_0x94f7('0x0'));var util=require(_0x94f7('0x1'));exports[_0x94f7('0x2')]=function(_0x222aac,_0x3bf5f8,_0x1edbf7){var _0x3825f0=[];if(_0x222aac['length']>0x0){var _0x2bd8e6=_[_0x94f7('0x3')](_0x222aac,['id']);for(var _0x2b8ebe=0x0;_0x2b8ebe<_0x2bd8e6['length'];_0x2b8ebe++){var _0x1e0e92=_0x2bd8e6[_0x2b8ebe];if(_0x1e0e92[_0x94f7('0x4')]==='string'){_0x3825f0['push'](_0x1e0e92[_0x94f7('0x5')]);}else if(_0x1e0e92[_0x94f7('0x4')]===_0x94f7('0x6')&&_0x1e0e92[_0x94f7('0x7')]){_0x3bf5f8[_0x1e0e92[_0x94f7('0x7')]]&&_0x3825f0[_0x94f7('0x8')](_0x3bf5f8[_0x1e0e92[_0x94f7('0x7')]][_0x94f7('0x9')]());}else if(_0x1e0e92[_0x94f7('0x4')]===_0x94f7('0xa')&&_0x1e0e92[_0x94f7('0xb')]&&_0x1e0e92['Variable'][_0x94f7('0xc')]){_0x3bf5f8[_0x1e0e92['Variable'][_0x94f7('0xc')][_0x94f7('0xd')]()]&&_0x3825f0['push'](_0x3bf5f8[_0x1e0e92[_0x94f7('0xb')][_0x94f7('0xc')][_0x94f7('0xd')]()]['toString']());}else if(_0x1e0e92['type']==='keyValue'){if(_0x1e0e92[_0x94f7('0xe')]===_0x94f7('0xf')&&_0x1e0e92[_0x94f7('0x10')]){_0x3825f0[_0x94f7('0x8')](util[_0x94f7('0x11')](_0x94f7('0x12'),_0x1e0e92[_0x94f7('0x10')],_0x1e0e92[_0x94f7('0x13')]));}else if(_0x1e0e92['keyType']===_0x94f7('0x6')&&_0x1e0e92[_0x94f7('0x7')]&&_0x1e0e92[_0x94f7('0x10')]){_0x3bf5f8[_0x1e0e92[_0x94f7('0x7')]]&&_0x3825f0[_0x94f7('0x8')](util['format'](_0x94f7('0x12'),_0x1e0e92[_0x94f7('0x10')],_0x3bf5f8[_0x1e0e92[_0x94f7('0x7')]]));}else if(_0x1e0e92[_0x94f7('0xe')]===_0x94f7('0xa')&&_0x1e0e92[_0x94f7('0xb')]&&_0x1e0e92[_0x94f7('0xb')][_0x94f7('0xc')]&&_0x1e0e92[_0x94f7('0x10')]){_0x3bf5f8[_0x1e0e92['Variable'][_0x94f7('0xc')][_0x94f7('0xd')]()]&&_0x3825f0[_0x94f7('0x8')](util['format'](_0x94f7('0x12'),_0x1e0e92['key'],_0x3bf5f8[_0x1e0e92[_0x94f7('0xb')][_0x94f7('0xc')]['toLowerCase']()]));}}}}return _0x3825f0[_0x94f7('0x14')](_0x1edbf7);};exports[_0x94f7('0x15')]=function(_0x5b792f){var _0x28ab3c=_0x5b792f[_0x94f7('0x16')](-0x1);if(_0x28ab3c==='/'){_0x5b792f=_0x5b792f[_0x94f7('0x17')](0x0,_0x5b792f[_0x94f7('0x18')](_0x28ab3c));}return _0x5b792f;};exports[_0x94f7('0x19')]=function(_0x312bc5){if(!_[_0x94f7('0x1a')](_0x312bc5)&&_0x312bc5!==''){var _0x2611ad=/^(([^<>()\[\]\\.,;:\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 _0x2611ad[_0x94f7('0x1b')](String(_0x312bc5)['toLowerCase']());}else{return![];}};
\ No newline at end of file
index 8dc597e..fec9927 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(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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 _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_0x1801b9,_0x2ba4d7){var _0x570878=function(_0x57096b){while(--_0x57096b){_0x1801b9['push'](_0x1801b9['shift']());}};_0x570878(++_0x2ba4d7);}(_0x9c44,0x178));var _0x49c4=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x9c44[_0x15bc81];return _0x59440e;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_['includes']([_0x49c4('0xb'),_0x49c4('0xc')],_0x313e73['type'])&&_0x313e73['idField']){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x313e73[_0x49c4('0xe')]['toString']();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x10')&&_0x313e73['variableName']&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x11')]]){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]][_0x49c4('0x12')]();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x13')&&_0x313e73[_0x49c4('0x14')]&&_0x313e73['Variable'][_0x49c4('0x15')]&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')][_0x49c4('0x16')]()]){_0x4c7d3a[_0x313e73['idField']]=_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')]['toLowerCase']()]['toString']();}});}return _0x4c7d3a;}function createTicket(_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d,_0x50b151,_0x2cbd50){logger[_0x49c4('0x17')](_0x49c4('0x18'));var _0x291526=_[_0x49c4('0x19')]({'parent_id':'','assigned_user_id':_0x2f82d5['id'],'ticketpriorities':_0x49c4('0x1a'),'ticketstatus':_0x49c4('0x1b'),'ticket_title':intUtil[_0x49c4('0x1c')](_0x59f29b[_0x49c4('0x1d')],_0x24856d,'\x20'),'description':intUtil['getString'](_0x59f29b['Descriptions'],_0x24856d,'\x0a'),'contact_id':_0x3addb2['id']},getCustomFields(_0x50b151,_0x24856d));var _0x57f502={'method':_0x49c4('0x1e'),'uri':util['format']('%s/webservice.php',_0x3c782d[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x20'),'username':_0x3c782d[_0x49c4('0x21')],'sessionName':_0x2cbd50[_0x49c4('0x22')],'elementType':'HelpDesk','element':JSON['stringify'](_0x291526)},'json':!![]};return request(_0x57f502)[_0x49c4('0x23')](function(_0x9cb797){if(_0x9cb797['success']){return BPromise[_0x49c4('0x24')]({'id':_0x9cb797[_0x49c4('0x25')]['id']});}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x27'),JSON['stringify'](_0x9cb797['error'])));}})[_0x49c4('0x28')](function(_0x53c199){var _0x3800b7=_0x53c199[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'createTicket',_0x3800b7,JSON[_0x49c4('0x2c')](_0x53c199));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){if(intUtil[_0x49c4('0x2d')](_0x46e04d)){logger[_0x49c4('0x17')](_0x49c4('0x2e'),_0x46e04d);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2b2793[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x2b2793['username'],'sessionName':_0x4f28a2['sessionName'],'query':util[_0x49c4('0x26')](_0x49c4('0x31'),_0x46e04d)},'json':!![]})[_0x49c4('0x23')](function(_0x27e467){if(_0x27e467[_0x49c4('0x32')]&&_0x27e467['result'][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x34'));return BPromise[_0x49c4('0x24')]({'id':_0x27e467['result'][0x0]['id'],'email':_0x27e467['result'][0x0][_0x49c4('0x35')],'name':_0x27e467[_0x49c4('0x25')][0x0][_0x49c4('0x36')]+'\x20'+_0x27e467[_0x49c4('0x25')][_0x49c4('0x37')]});}else{logger['info'](_0x49c4('0x38'));return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2[_0x49c4('0x39')],'email':_0x2b2793['username'],'name':'admin'});}})[_0x49c4('0x28')](function(_0x1991e9){var _0x3bec0a=_0x1991e9[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x3a'),_0x3bec0a,JSON[_0x49c4('0x2c')](_0x1991e9));});}else{logger[_0x49c4('0x17')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2['userId'],'email':_0x2b2793[_0x49c4('0x21')],'name':_0x49c4('0x3b')})[_0x49c4('0x28')](function(_0x1c2830){var _0x4ed4f8=_0x1c2830[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'getUser',_0x4ed4f8,JSON[_0x49c4('0x2c')](_0x1c2830));});}}function getEndUser(_0x21d8c7,_0x178987,_0x5e5366,_0x1ba7a0){logger[_0x49c4('0x17')](_0x49c4('0x3c'),_0x5e5366);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x21d8c7[_0x49c4('0x21')],'sessionName':_0x1ba7a0[_0x49c4('0x22')],'query':util[_0x49c4('0x26')](_0x49c4('0x3d'),_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366)},'json':!![]})[_0x49c4('0x23')](function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x32')]&&_0x29dd5d[_0x49c4('0x25')][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x3e'));return BPromise[_0x49c4('0x24')]({'id':_0x29dd5d[_0x49c4('0x25')][0x0]['id'],'name':_0x29dd5d['result'][0x0][_0x49c4('0x3f')]+'\x20'+_0x29dd5d['result'][0x0][_0x49c4('0x40')],'phone':_0x5e5366});}else{logger[_0x49c4('0x17')](_0x49c4('0x41'));return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7['remoteUri']),'form':{'operation':'create','sessionName':_0x1ba7a0[_0x49c4('0x22')],'elementType':_0x49c4('0x42'),'element':JSON[_0x49c4('0x2c')]({'lastname':_0x178987,'phone':_0x5e5366,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x23')](function(_0x490823){logger[_0x49c4('0x17')](_0x49c4('0x43'));return BPromise[_0x49c4('0x24')]({'id':_0x490823[_0x49c4('0x25')]['id'],'name':_0x490823[_0x49c4('0x25')][_0x49c4('0x40')],'phone':_0x490823[_0x49c4('0x25')][_0x49c4('0x44')]});})[_0x49c4('0x28')](function(_0x5640d3){var _0x2ad771=_0x5640d3['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x45'),_0x2ad771,JSON[_0x49c4('0x2c')](_0x5640d3));});}});}function getConnection(_0x2d93d8){var _0x5b296d=_0x2d93d8[_0x49c4('0x21')];var _0x15b674=_0x2d93d8[_0x49c4('0x46')];return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'qs':{'operation':'getchallenge','username':_0x5b296d},'json':!![]})[_0x49c4('0x23')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x32')]){return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x47'),'username':_0x5b296d,'accessKey':md5(_0x5cfff9[_0x49c4('0x25')]['token']+_0x15b674)},'json':!![]});}})[_0x49c4('0x23')](function(_0x3feaf0){if(_0x3feaf0['success']){return BPromise[_0x49c4('0x24')](_0x3feaf0[_0x49c4('0x25')]);}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x48'),_0x2d93d8['id']));}})['catch'](function(_0x5d8bf0){var _0x144fd2=_0x5d8bf0['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x49'),_0x144fd2,JSON[_0x49c4('0x2c')](_0x5d8bf0));});}function request(_0x240c20){logger[_0x49c4('0x17')](_0x49c4('0x4a'),JSON['stringify'](_0x240c20));return rp(_0x240c20);}exports[_0x49c4('0x4b')]=function(_0x1550ce,_0x3936d3,_0x3d944c,_0x17ef75,_0x2644c0,_0x156748){var _0x25d174,_0x1e0b4f,_0x1856be,_0x5b822f;_0x156748['remoteUri']=intUtil[_0x49c4('0x4c')](_0x156748[_0x49c4('0x1f')]);if(_0x2644c0&&_0x2644c0['monitor_format']){logger['info'](_0x49c4('0x4d'),'Recording\x20is\x20enabled!');_0x3936d3['recordingURL']=util[_0x49c4('0x26')](_0x49c4('0x4e'),_0x156748[_0x49c4('0x4f')],_0x3936d3[_0x49c4('0x50')],md5(_0x3936d3[_0x49c4('0x50')]));}else{_0x3936d3[_0x49c4('0x51')]='';}return getConnection(_0x156748)[_0x49c4('0x23')](function(_0x50798e){_0x5b822f=_0x50798e;return getUser(_0x156748,_0x17ef75[_0x49c4('0x52')],_0x5b822f);})[_0x49c4('0x23')](function(_0x207572){_0x25d174=_0x207572;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x25d174['id']);return getEndUser(_0x156748,_0x3936d3[_0x49c4('0x54')],_0x3936d3['calleridnum'],_0x5b822f);})['then'](function(_0x1ef0c1){_0x1e0b4f=_0x1ef0c1;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0x1e0b4f['id']);return createTicket(_0x156748,_0x25d174,_0x1e0b4f,_0x3d944c,_0x3936d3,_0x3d944c[_0x49c4('0x56')],_0x5b822f);})[_0x49c4('0x23')](function(_0x6b2592){_0x1856be=_0x6b2592;logger[_0x49c4('0x17')]('Ticket\x20created!');logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x1856be['id']);var _0x4ba4eb=util[_0x49c4('0x26')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x156748[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x1856be['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x4d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x17ef75[_0x49c4('0x15')]),'trigger:browser:url',{'uri':_0x4ba4eb});})[_0x49c4('0x28')](function(_0x27b9c2){logger['error'](_0x49c4('0x4d'),JSON[_0x49c4('0x2c')](_0x27b9c2));});};exports['outbound']=function(_0x39c455,_0x42e0e6,_0x4f50bf,_0x4dc54d,_0x589484,_0x513879,_0xc43386){var _0x54947d,_0xb20a5d,_0x32f344,_0x515240;_0x513879[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x513879['remoteUri']);_0x513879[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x513879[_0x49c4('0x4f')]);if(_0xc43386&&_0xc43386[_0x49c4('0x5b')]&&_0xc43386['recordingFormat']!==_0x49c4('0x5c')){logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x5e'));_0x42e0e6['recordingURL']=util[_0x49c4('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513879['serverUrl'],_0x42e0e6['uniqueid'],md5(_0x42e0e6['uniqueid']));}return getConnection(_0x513879)[_0x49c4('0x23')](function(_0x32eaef){_0x515240=_0x32eaef;return getUser(_0x513879,_0x4dc54d[_0x49c4('0x52')],_0x515240);})[_0x49c4('0x23')](function(_0x5b056e){_0x54947d=_0x5b056e;logger['info'](_0x49c4('0x53'),_0x54947d['id']);return getEndUser(_0x513879,_0x42e0e6[_0x49c4('0x5f')],_0x42e0e6[_0x49c4('0x60')],_0x515240);})[_0x49c4('0x23')](function(_0x102c15){_0xb20a5d=_0x102c15;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0xb20a5d['id']);return createTicket(_0x513879,_0x54947d,_0xb20a5d,_0x4f50bf,_0x42e0e6,_0x4f50bf[_0x49c4('0x56')],_0x515240);})['then'](function(_0x2276db){_0x32f344=_0x2276db;logger['info'](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x32f344['id']);var _0x1ea1b4=util[_0x49c4('0x26')](_0x49c4('0x62'),_0x513879[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x32f344['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x4dc54d[_0x49c4('0x15')]),_0x49c4('0x63'),{'uri':_0x1ea1b4});})[_0x49c4('0x28')](function(_0x371e49){logger[_0x49c4('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x371e49));});};exports[_0x49c4('0x64')]=function(_0x16b3e8,_0x4af680,_0x1a15f3,_0x38ad50,_0x2939fd,_0x16e7b1){var _0x4d6aaa,_0x5a14a5,_0x4a85d4,_0x2e90d8;_0x16e7b1[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x1f')]);_0x16e7b1[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x4f')]);if(_0x2939fd&&_0x2939fd[_0x49c4('0x65')]){logger[_0x49c4('0x17')]('['+_0x4af680['lastevent'][_0x49c4('0x66')]()+']',_0x49c4('0x5e'));_0x4af680[_0x49c4('0x51')]=util['format'](_0x49c4('0x4e'),_0x16e7b1[_0x49c4('0x4f')],_0x4af680[_0x49c4('0x50')],md5(_0x4af680[_0x49c4('0x50')]));}else{_0x4af680[_0x49c4('0x51')]='';}return getConnection(_0x16e7b1)[_0x49c4('0x23')](function(_0x35fa39){_0x2e90d8=_0x35fa39;return getUser(_0x16e7b1,'',_0x2e90d8);})[_0x49c4('0x23')](function(_0x4ba198){_0x4d6aaa=_0x4ba198;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x4d6aaa['id']);return getEndUser(_0x16e7b1,_0x4af680[_0x49c4('0x54')],_0x4af680[_0x49c4('0x67')],_0x2e90d8);})[_0x49c4('0x23')](function(_0x4a204d){_0x5a14a5=_0x4a204d;logger['info'](_0x49c4('0x55'),_0x5a14a5['id']);return createTicket(_0x16e7b1,_0x4d6aaa,_0x5a14a5,_0x1a15f3,_0x4af680,_0x1a15f3['Fields'],_0x2e90d8);})[_0x49c4('0x23')](function(_0x558880){_0x4a85d4=_0x558880;logger[_0x49c4('0x17')](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x4a85d4['id']);})['catch'](function(_0x123060){logger[_0x49c4('0x2a')]('['+_0x4af680[_0x49c4('0x68')][_0x49c4('0x66')]()+']',JSON[_0x49c4('0x2c')](_0x123060));});};
\ No newline at end of file
index 7ef9c3e..dd3e528 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa107=['then','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','format','%s/search.json','count','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','filter','end-user','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','token','%s/token:%s','Basic\x20%s','toString','base64','debug','stringify','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','push','variable','variableName','custom_fields','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','replace','catch','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','calleridnum','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','defaults','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','POST','Tags','name','getString','Subjects','Descriptions','Fields'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa107,0x1be));var _0x7a10=function(_0x1d3e56,_0x1b900a){_0x1d3e56=_0x1d3e56-0x0;var _0x16fa4f=_0xa107[_0x1d3e56];return _0x16fa4f;};'use strict';var _=require(_0x7a10('0x0'));var rp=require(_0x7a10('0x1'));var md5=require(_0x7a10('0x2'));var util=require(_0x7a10('0x3'));var Redis=require(_0x7a10('0x4'));var intUtil=require(_0x7a10('0x5'));var config=require(_0x7a10('0x6'));var logger=require(_0x7a10('0x7'))(_0x7a10('0x8'));config['redis']=_[_0x7a10('0x9')](config[_0x7a10('0xa')],{'host':_0x7a10('0xb'),'port':0x18eb});var io=require(_0x7a10('0xc'))(new Redis(config[_0x7a10('0xa')]));function emit(_0x25ce30,_0x329ef0,_0x11a7e9){io['to'](_0x25ce30)[_0x7a10('0xd')](_0x329ef0,_0x11a7e9);}var headers={'Content-Type':_0x7a10('0xe'),'Accept':_0x7a10('0xe')};function getTicket(_0x5c0d7b,_0x2101d6,_0x4ec1fd,_0x3ff4cb,_0xe26eb){logger[_0x7a10('0xf')](_0x7a10('0x10'));return request({'uri':util['format'](_0x7a10('0x11'),_0x5c0d7b[_0x7a10('0x12')]),'method':_0x7a10('0x13'),'body':{'ticket':_['merge']({'requester_id':_0x4ec1fd['id'],'submitter_id':_0x2101d6?_0x2101d6['id']:undefined,'assignee_id':_0x2101d6?_0x2101d6['id']:undefined,'tags':getTags(_0x3ff4cb[_0x7a10('0x14')],_0x7a10('0x15')),'subject':intUtil[_0x7a10('0x16')](_0x3ff4cb[_0x7a10('0x17')],_0xe26eb,'\x20'),'description':intUtil['getString'](_0x3ff4cb[_0x7a10('0x18')],_0xe26eb,'\x0a'),'comment':{'public':![],'body':intUtil[_0x7a10('0x16')](_0x3ff4cb[_0x7a10('0x18')],_0xe26eb,'\x0a')}},getCustomFields(_0x3ff4cb[_0x7a10('0x19')],_0xe26eb))}})[_0x7a10('0x1a')](function(_0x3def14){logger['info'](_0x7a10('0x1b'));return _0x3def14['ticket'];});}function getUser(_0x75bfc1,_0x2b16e0){if(intUtil[_0x7a10('0x1c')](_0x2b16e0)){logger['info'](_0x7a10('0x1d'),_0x2b16e0);return request({'uri':util[_0x7a10('0x1e')](_0x7a10('0x1f'),_0x75bfc1[_0x7a10('0x12')]),'qs':{'query':util[_0x7a10('0x1e')]('type:user\x20role:agent\x20email:%s',_0x2b16e0)}})[_0x7a10('0x1a')](function(_0x33a43b){if(_0x33a43b[_0x7a10('0x20')]){logger['info']('Agent\x20found!');return _[_0x7a10('0x21')](_0x33a43b[_0x7a10('0x22')],{'email':_0x2b16e0,'role':_0x7a10('0x23')});}else{logger['info'](_0x7a10('0x24'));return request({'uri':util['format'](_0x7a10('0x25'),_0x75bfc1['remoteUri'])})['then'](function(_0x27cce9){logger[_0x7a10('0xf')](_0x7a10('0x26'));return _0x27cce9[_0x7a10('0x27')];});}});}else{logger[_0x7a10('0xf')](_0x7a10('0x24'));return request({'uri':util[_0x7a10('0x1e')](_0x7a10('0x25'),_0x75bfc1[_0x7a10('0x12')])})['then'](function(_0xe002f0){logger[_0x7a10('0xf')](_0x7a10('0x26'));return _0xe002f0['user'];});}}function getEndUser(_0x50338b,_0xa38bf0,_0x2e7371){logger['info'](_0x7a10('0x28'),_0x2e7371);return request({'uri':util['format'](_0x7a10('0x1f'),_0x50338b['remoteUri']),'qs':{'query':util[_0x7a10('0x1e')](_0x7a10('0x29'),_0x2e7371)}})[_0x7a10('0x1a')](function(_0x1e6862){var _0x1aa8d0;if(_0x1e6862[_0x7a10('0x22')]['length']){_0x1e6862[_0x7a10('0x22')]=_[_0x7a10('0x2a')](_0x1e6862[_0x7a10('0x22')],{'suspended':![],'role':_0x7a10('0x2b')});if(_0x1e6862[_0x7a10('0x22')][_0x7a10('0x2c')]){_0x1aa8d0=_[_0x7a10('0x2d')](_0x1e6862[_0x7a10('0x22')]);}}if(_0x1aa8d0){logger[_0x7a10('0xf')](_0x7a10('0x2e'));return _0x1aa8d0;}else{logger[_0x7a10('0xf')](_0x7a10('0x2f'));return request({'uri':util[_0x7a10('0x1e')]('%s/users.json',_0x50338b['remoteUri']),'method':_0x7a10('0x13'),'body':{'user':{'role':_0x7a10('0x2b'),'name':util[_0x7a10('0x1e')](_0x7a10('0x30'),_0xa38bf0||_0x2e7371),'phone':_0x2e7371}}})[_0x7a10('0x1a')](function(_0x37b841){logger[_0x7a10('0xf')](_0x7a10('0x31'));return _0x37b841['user'];});}});}function getAuth(_0x5c3ec3){var _0x46675f;if(_0x5c3ec3[_0x7a10('0x32')]===_0x7a10('0x33')){_0x46675f=util[_0x7a10('0x1e')](_0x7a10('0x34'),_0x5c3ec3['username'],_0x5c3ec3[_0x7a10('0x33')]);}else if(_0x5c3ec3[_0x7a10('0x32')]===_0x7a10('0x35')){_0x46675f=util[_0x7a10('0x1e')](_0x7a10('0x36'),_0x5c3ec3['username'],_0x5c3ec3[_0x7a10('0x35')]);}return util[_0x7a10('0x1e')](_0x7a10('0x37'),new Buffer(_0x46675f)[_0x7a10('0x38')](_0x7a10('0x39')));}function request(_0xa88999){logger[_0x7a10('0x3a')]('[HTTP]',JSON[_0x7a10('0x3b')](_0xa88999));return rp(_[_0x7a10('0x9')](_0xa88999,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x14c1e9,_0x1f87bd){var _0x32b5f7=[];if(_0x14c1e9&&_0x14c1e9[_0x7a10('0x2c')]>0x0){_0x32b5f7=_[_0x7a10('0x3c')](_0x14c1e9,_0x1f87bd);}return _0x32b5f7;}function getCustomFields(_0x48bc35,_0x1ea837){var _0x23678a=[];var _0x88eb06={'custom_fields':[]};if(_0x48bc35[_0x7a10('0x2c')]>0x0){_[_0x7a10('0x3d')](_0x48bc35,function(_0x1e5931){if(_[_0x7a10('0x3e')]([_0x7a10('0x3f'),_0x7a10('0x40')],_0x1e5931[_0x7a10('0x41')])&&_0x1e5931[_0x7a10('0x42')]&&!_0x1e5931[_0x7a10('0x43')]){_0x88eb06[_0x1e5931['nameField'][_0x7a10('0x44')]()]=_0x1e5931[_0x7a10('0x45')][_0x7a10('0x38')]();}else if(_[_0x7a10('0x3e')](['string',_0x7a10('0x40')],_0x1e5931[_0x7a10('0x41')])&&_0x1e5931[_0x7a10('0x46')]&&_0x1e5931['customField']){_0x88eb06['custom_fields'][_0x7a10('0x47')]({'id':_0x1e5931[_0x7a10('0x46')],'value':_0x1e5931[_0x7a10('0x45')]['toString']()});}else if(_0x1e5931[_0x7a10('0x41')]===_0x7a10('0x48')&&_0x1e5931[_0x7a10('0x49')]&&_0x1e5931[_0x7a10('0x46')]&&_0x1e5931[_0x7a10('0x43')]){_0x1ea837[_0x1e5931[_0x7a10('0x49')]]&&_0x88eb06[_0x7a10('0x4a')][_0x7a10('0x47')]({'id':_0x1e5931['idField'],'value':_0x1ea837[_0x1e5931[_0x7a10('0x49')]]['toString']()});}else if(_0x1e5931[_0x7a10('0x41')]===_0x7a10('0x4b')&&_0x1e5931['Variable']&&_0x1e5931['Variable']['name']&&_0x1e5931[_0x7a10('0x46')]&&_0x1e5931[_0x7a10('0x43')]){_0x1ea837[_0x1e5931['Variable']['name'][_0x7a10('0x44')]()]&&_0x88eb06[_0x7a10('0x4a')][_0x7a10('0x47')]({'id':_0x1e5931[_0x7a10('0x46')],'value':_0x1ea837[_0x1e5931[_0x7a10('0x4c')][_0x7a10('0x15')][_0x7a10('0x44')]()][_0x7a10('0x38')]()});}});}return _0x88eb06;}exports['queue']=function(_0x157735,_0x4e163a,_0x2a6b8a,_0x16f660,_0x5dcc9b,_0x45aa09){var _0x4023ee,_0x2d9f95;_0x45aa09[_0x7a10('0x12')]=intUtil[_0x7a10('0x4d')](_0x45aa09[_0x7a10('0x12')]);_0x45aa09[_0x7a10('0x4e')]=intUtil[_0x7a10('0x4d')](_0x45aa09['serverUrl']);if(_0x5dcc9b&&_0x5dcc9b[_0x7a10('0x4f')]){logger[_0x7a10('0xf')]('[QUEUE]',_0x7a10('0x50'));_0x4e163a[_0x7a10('0x51')]=util['format'](_0x7a10('0x52'),_0x45aa09['serverUrl'],_0x4e163a['uniqueid'],md5(_0x4e163a['uniqueid']));}else{_0x4e163a[_0x7a10('0x51')]='';}headers[_0x7a10('0x53')]=getAuth(_0x45aa09);return getUser(_0x45aa09,_0x16f660[_0x7a10('0x54')])[_0x7a10('0x1a')](function(_0x58bd54){_0x4023ee=_0x58bd54;logger[_0x7a10('0xf')](_0x7a10('0x55'),_0x4023ee['id']);return getEndUser(_0x45aa09,_0x4e163a[_0x7a10('0x56')],_0x4e163a['calleridnum']);})[_0x7a10('0x1a')](function(_0x1ae29f){_0x2d9f95=_0x1ae29f;logger[_0x7a10('0xf')](_0x7a10('0x57'),_0x2d9f95['id']);return getTicket(_0x45aa09,_0x4023ee,_0x2d9f95,_0x2a6b8a,_0x4e163a);})[_0x7a10('0x1a')](function(_0x4b987f){if(_0x4b987f){logger[_0x7a10('0xf')](_0x7a10('0x58'),_0x4b987f['id']);switch(_0x45aa09[_0x7a10('0x41')]){case _0x7a10('0x59'):logger[_0x7a10('0xf')](_0x7a10('0x5a'),_0x7a10('0x5b'));return request({'uri':util[_0x7a10('0x1e')](_0x7a10('0x5c'),_0x45aa09['remoteUri'],_0x4023ee['id'],_0x4b987f['id']),'method':'POST'});case _0x7a10('0x5d'):logger['info'](_0x7a10('0x5a'),_0x7a10('0x5e'));emit(util['format'](_0x7a10('0x5f'),_0x16f660[_0x7a10('0x15')]),_0x7a10('0x60'),{'uri':util[_0x7a10('0x1e')](_0x7a10('0x61'),_0x45aa09[_0x7a10('0x12')]['replace'](_0x7a10('0x62'),''),_0x4b987f['id'])});break;default:logger[_0x7a10('0x63')](_0x7a10('0x5a'),_0x7a10('0x64'));}}})['catch'](function(_0x54ab93){logger[_0x7a10('0x63')](_0x7a10('0x65'),util[_0x7a10('0x66')](_0x54ab93,{'showHidden':!![],'depth':null}));});};exports[_0x7a10('0x67')]=function(_0x15c947,_0x37e033,_0x2c37a1,_0x20f1a7,_0x2abb71,_0x36f7b4,_0x51b021){var _0xa12112,_0x1db284;_0x36f7b4[_0x7a10('0x12')]=intUtil['stripTrailingSlash'](_0x36f7b4['remoteUri']);_0x36f7b4[_0x7a10('0x4e')]=intUtil[_0x7a10('0x4d')](_0x36f7b4[_0x7a10('0x4e')]);if(_0x51b021&&_0x51b021[_0x7a10('0x68')]&&_0x51b021['recordingFormat']!==_0x7a10('0x69')){logger[_0x7a10('0xf')](_0x7a10('0x6a'),'Recording\x20is\x20enabled!');_0x37e033[_0x7a10('0x51')]=util[_0x7a10('0x1e')](_0x7a10('0x52'),_0x36f7b4[_0x7a10('0x4e')],_0x37e033[_0x7a10('0x6b')],md5(_0x37e033['uniqueid']));}headers[_0x7a10('0x53')]=getAuth(_0x36f7b4);return getUser(_0x36f7b4,_0x20f1a7[_0x7a10('0x54')])[_0x7a10('0x1a')](function(_0x2bf474){_0xa12112=_0x2bf474;logger[_0x7a10('0xf')](_0x7a10('0x55'),_0xa12112['id']);return getEndUser(_0x36f7b4,_0x37e033[_0x7a10('0x6c')],_0x37e033[_0x7a10('0x6d')]);})[_0x7a10('0x1a')](function(_0x394152){_0x1db284=_0x394152;logger[_0x7a10('0xf')]('The\x20Enduser\x20ID\x20is:',_0x1db284['id']);return getTicket(_0x36f7b4,_0xa12112,_0x1db284,_0x2c37a1,_0x37e033);})['then'](function(_0x54edbf){if(_0x54edbf){logger[_0x7a10('0xf')]('The\x20Ticket\x20ID\x20is:',_0x54edbf['id']);switch(_0x36f7b4[_0x7a10('0x41')]){case _0x7a10('0x59'):logger[_0x7a10('0xf')](_0x7a10('0x6a'),_0x7a10('0x5b'));return request({'uri':util[_0x7a10('0x1e')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x36f7b4[_0x7a10('0x12')],_0xa12112['id'],_0x54edbf['id']),'method':_0x7a10('0x13')});case _0x7a10('0x5d'):logger[_0x7a10('0xf')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x7a10('0x1e')](_0x7a10('0x5f'),_0x20f1a7[_0x7a10('0x15')]),'trigger:browser:url',{'uri':util[_0x7a10('0x1e')](_0x7a10('0x61'),_0x36f7b4[_0x7a10('0x12')][_0x7a10('0x6e')](_0x7a10('0x62'),''),_0x54edbf['id'])});break;default:logger[_0x7a10('0x63')](_0x7a10('0x6a'),_0x7a10('0x64'));}}})[_0x7a10('0x6f')](function(_0x117119){logger[_0x7a10('0x63')](_0x7a10('0x70'),util[_0x7a10('0x66')](_0x117119,{'showHidden':!![],'depth':null}));});};exports[_0x7a10('0x71')]=function(_0x5cb407,_0x309609,_0x37244e,_0x6528a,_0x1be611,_0x304434){var _0x4fb576,_0x5caa9c;_0x304434[_0x7a10('0x12')]=intUtil['stripTrailingSlash'](_0x304434[_0x7a10('0x12')]);_0x304434[_0x7a10('0x4e')]=intUtil[_0x7a10('0x4d')](_0x304434[_0x7a10('0x4e')]);if(_0x1be611&&_0x1be611[_0x7a10('0x4f')]){logger[_0x7a10('0xf')]('['+_0x309609[_0x7a10('0x72')][_0x7a10('0x73')]()+']',_0x7a10('0x50'));_0x309609[_0x7a10('0x51')]=util[_0x7a10('0x1e')](_0x7a10('0x52'),_0x304434['serverUrl'],_0x309609[_0x7a10('0x6b')],md5(_0x309609[_0x7a10('0x6b')]));}else{_0x309609['recordingURL']='';}headers['Authorization']=getAuth(_0x304434);return getUser(_0x304434)[_0x7a10('0x1a')](function(_0xe2b5bf){_0x4fb576=_0xe2b5bf;logger['info'](_0x7a10('0x55'),_0x4fb576['id']);return getEndUser(_0x304434,_0x309609[_0x7a10('0x56')],_0x309609[_0x7a10('0x74')]);})['then'](function(_0x1ee43d){_0x5caa9c=_0x1ee43d;logger[_0x7a10('0xf')](_0x7a10('0x57'),_0x5caa9c['id']);return getTicket(_0x304434,_0x4fb576,_0x5caa9c,_0x37244e,_0x309609);})[_0x7a10('0x1a')](function(_0x526343){if(_0x526343){logger[_0x7a10('0xf')](_0x7a10('0x58'),_0x526343['id']);}})['catch'](function(_0x3587a3){logger[_0x7a10('0x63')]('['+_0x309609[_0x7a10('0x72')][_0x7a10('0x73')]()+']'+_0x7a10('0x75'),util[_0x7a10('0x66')](_0x3587a3,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x1cc7=['string','type','nameField','customField','content','picklist','idField','custom_fields','variable','variableName','Variable','toLowerCase','push','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','recordingURL','email','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','Zendesk\x20account\x20type\x20not\x20recognized','catch','error','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','none','[OUTBOUND]','Authorization','The\x20User\x20ID\x20is:','destcalleridnum','integrationTab','Displaying\x20ticket\x20to\x20agent...','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','calleridnum','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','emit','application/json','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','name','getString','Subjects','Descriptions','Fields','then','info','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','type:user\x20role:agent\x20email:%s','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/search.json','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Caller\x20-\x20%s','user','authType','%s:%s','password','token','%s/token:%s','username','Basic\x20%s','toString','base64','debug','stringify','GET','map','forEach','includes'];(function(_0xa8336a,_0x4e1559){var _0x126b3d=function(_0xee2b5b){while(--_0xee2b5b){_0xa8336a['push'](_0xa8336a['shift']());}};_0x126b3d(++_0x4e1559);}(_0x1cc7,0x1ee));var _0x71cc=function(_0x3e62b5,_0x2bcb19){_0x3e62b5=_0x3e62b5-0x0;var _0x460063=_0x1cc7[_0x3e62b5];return _0x460063;};'use strict';var _=require('lodash');var rp=require(_0x71cc('0x0'));var md5=require(_0x71cc('0x1'));var util=require(_0x71cc('0x2'));var Redis=require(_0x71cc('0x3'));var intUtil=require(_0x71cc('0x4'));var config=require(_0x71cc('0x5'));var logger=require(_0x71cc('0x6'))('zendesk');config[_0x71cc('0x7')]=_[_0x71cc('0x8')](config[_0x71cc('0x7')],{'host':_0x71cc('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x71cc('0x7')]));function emit(_0x266efc,_0x4daf7f,_0x143b06){io['to'](_0x266efc)[_0x71cc('0xa')](_0x4daf7f,_0x143b06);}var headers={'Content-Type':'application/json','Accept':_0x71cc('0xb')};function getTicket(_0x4a9ced,_0x4c00be,_0x6a8391,_0x10360e,_0x17a6bc){logger['info'](_0x71cc('0xc'));return request({'uri':util[_0x71cc('0xd')](_0x71cc('0xe'),_0x4a9ced[_0x71cc('0xf')]),'method':_0x71cc('0x10'),'body':{'ticket':_[_0x71cc('0x11')]({'requester_id':_0x6a8391['id'],'submitter_id':_0x4c00be?_0x4c00be['id']:undefined,'assignee_id':_0x4c00be?_0x4c00be['id']:undefined,'tags':getTags(_0x10360e['Tags'],_0x71cc('0x12')),'subject':intUtil[_0x71cc('0x13')](_0x10360e[_0x71cc('0x14')],_0x17a6bc,'\x20'),'description':intUtil[_0x71cc('0x13')](_0x10360e[_0x71cc('0x15')],_0x17a6bc,'\x0a'),'comment':{'public':![],'body':intUtil[_0x71cc('0x13')](_0x10360e[_0x71cc('0x15')],_0x17a6bc,'\x0a')}},getCustomFields(_0x10360e[_0x71cc('0x16')],_0x17a6bc))}})[_0x71cc('0x17')](function(_0x41c15b){logger[_0x71cc('0x18')](_0x71cc('0x19'));return _0x41c15b['ticket'];});}function getUser(_0x2f9b5f,_0x41d88b){if(intUtil[_0x71cc('0x1a')](_0x41d88b)){logger[_0x71cc('0x18')](_0x71cc('0x1b'),_0x41d88b);return request({'uri':util[_0x71cc('0xd')]('%s/search.json',_0x2f9b5f['remoteUri']),'qs':{'query':util[_0x71cc('0xd')](_0x71cc('0x1c'),_0x41d88b)}})[_0x71cc('0x17')](function(_0x306f89){if(_0x306f89['count']){logger['info'](_0x71cc('0x1d'));return _[_0x71cc('0x1e')](_0x306f89[_0x71cc('0x1f')],{'email':_0x41d88b,'role':_0x71cc('0x20')});}else{logger[_0x71cc('0x18')](_0x71cc('0x21'));return request({'uri':util[_0x71cc('0xd')](_0x71cc('0x22'),_0x2f9b5f[_0x71cc('0xf')])})[_0x71cc('0x17')](function(_0x4e4eb7){logger[_0x71cc('0x18')]('Admin\x20account\x20selected.');return _0x4e4eb7['user'];});}});}else{logger[_0x71cc('0x18')](_0x71cc('0x21'));return request({'uri':util[_0x71cc('0xd')](_0x71cc('0x22'),_0x2f9b5f[_0x71cc('0xf')])})[_0x71cc('0x17')](function(_0x1a1b85){logger['info'](_0x71cc('0x23'));return _0x1a1b85['user'];});}}function getEndUser(_0x318db4,_0x3e0bea,_0x26e2b0){logger[_0x71cc('0x18')](_0x71cc('0x24'),_0x26e2b0);return request({'uri':util[_0x71cc('0xd')](_0x71cc('0x25'),_0x318db4[_0x71cc('0xf')]),'qs':{'query':util[_0x71cc('0xd')](_0x71cc('0x26'),_0x26e2b0)}})['then'](function(_0x57d914){var _0x11f2c9;if(_0x57d914[_0x71cc('0x1f')][_0x71cc('0x27')]){_0x57d914[_0x71cc('0x1f')]=_[_0x71cc('0x28')](_0x57d914[_0x71cc('0x1f')],{'suspended':![],'role':_0x71cc('0x29')});if(_0x57d914[_0x71cc('0x1f')]['length']){_0x11f2c9=_['first'](_0x57d914['results']);}}if(_0x11f2c9){logger['info'](_0x71cc('0x2a'));return _0x11f2c9;}else{logger[_0x71cc('0x18')](_0x71cc('0x2b'));return request({'uri':util['format']('%s/users.json',_0x318db4[_0x71cc('0xf')]),'method':'POST','body':{'user':{'role':'end-user','name':util[_0x71cc('0xd')](_0x71cc('0x2c'),_0x3e0bea||_0x26e2b0),'phone':_0x26e2b0}}})[_0x71cc('0x17')](function(_0x5d3b3){logger[_0x71cc('0x18')]('Enduser\x20created.');return _0x5d3b3[_0x71cc('0x2d')];});}});}function getAuth(_0x71ffa8){var _0x3a58cd;if(_0x71ffa8[_0x71cc('0x2e')]==='password'){_0x3a58cd=util[_0x71cc('0xd')](_0x71cc('0x2f'),_0x71ffa8['username'],_0x71ffa8[_0x71cc('0x30')]);}else if(_0x71ffa8[_0x71cc('0x2e')]===_0x71cc('0x31')){_0x3a58cd=util['format'](_0x71cc('0x32'),_0x71ffa8[_0x71cc('0x33')],_0x71ffa8[_0x71cc('0x31')]);}return util[_0x71cc('0xd')](_0x71cc('0x34'),new Buffer(_0x3a58cd)[_0x71cc('0x35')](_0x71cc('0x36')));}function request(_0x32ff63){logger[_0x71cc('0x37')]('[HTTP]',JSON[_0x71cc('0x38')](_0x32ff63));return rp(_[_0x71cc('0x8')](_0x32ff63,{'method':_0x71cc('0x39'),'headers':headers,'json':!![]}));}function getTags(_0x182ce7,_0x5e07f9){var _0x538869=[];if(_0x182ce7&&_0x182ce7['length']>0x0){_0x538869=_[_0x71cc('0x3a')](_0x182ce7,_0x5e07f9);}return _0x538869;}function getCustomFields(_0x2ab26c,_0x3dd2e2){var _0x5336ea=[];var _0x2caaaf={'custom_fields':[]};if(_0x2ab26c[_0x71cc('0x27')]>0x0){_[_0x71cc('0x3b')](_0x2ab26c,function(_0x5dab02){if(_[_0x71cc('0x3c')]([_0x71cc('0x3d'),'picklist'],_0x5dab02[_0x71cc('0x3e')])&&_0x5dab02[_0x71cc('0x3f')]&&!_0x5dab02[_0x71cc('0x40')]){_0x2caaaf[_0x5dab02[_0x71cc('0x3f')]['toLowerCase']()]=_0x5dab02[_0x71cc('0x41')][_0x71cc('0x35')]();}else if(_['includes']([_0x71cc('0x3d'),_0x71cc('0x42')],_0x5dab02[_0x71cc('0x3e')])&&_0x5dab02[_0x71cc('0x43')]&&_0x5dab02[_0x71cc('0x40')]){_0x2caaaf[_0x71cc('0x44')]['push']({'id':_0x5dab02['idField'],'value':_0x5dab02[_0x71cc('0x41')][_0x71cc('0x35')]()});}else if(_0x5dab02[_0x71cc('0x3e')]===_0x71cc('0x45')&&_0x5dab02[_0x71cc('0x46')]&&_0x5dab02[_0x71cc('0x43')]&&_0x5dab02['customField']){_0x3dd2e2[_0x5dab02[_0x71cc('0x46')]]&&_0x2caaaf[_0x71cc('0x44')]['push']({'id':_0x5dab02[_0x71cc('0x43')],'value':_0x3dd2e2[_0x5dab02[_0x71cc('0x46')]]['toString']()});}else if(_0x5dab02[_0x71cc('0x3e')]==='customVariable'&&_0x5dab02[_0x71cc('0x47')]&&_0x5dab02[_0x71cc('0x47')][_0x71cc('0x12')]&&_0x5dab02['idField']&&_0x5dab02[_0x71cc('0x40')]){_0x3dd2e2[_0x5dab02['Variable'][_0x71cc('0x12')][_0x71cc('0x48')]()]&&_0x2caaaf[_0x71cc('0x44')][_0x71cc('0x49')]({'id':_0x5dab02[_0x71cc('0x43')],'value':_0x3dd2e2[_0x5dab02[_0x71cc('0x47')]['name'][_0x71cc('0x48')]()][_0x71cc('0x35')]()});}});}return _0x2caaaf;}exports['queue']=function(_0x3d2699,_0x1d2483,_0x325827,_0x5a6aed,_0x34943f,_0x448769){var _0x2ecd0d,_0x38f069;_0x448769[_0x71cc('0xf')]=intUtil[_0x71cc('0x4a')](_0x448769[_0x71cc('0xf')]);_0x448769['serverUrl']=intUtil['stripTrailingSlash'](_0x448769[_0x71cc('0x4b')]);if(_0x34943f&&_0x34943f[_0x71cc('0x4c')]){logger['info'](_0x71cc('0x4d'),_0x71cc('0x4e'));_0x1d2483['recordingURL']=util[_0x71cc('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x448769[_0x71cc('0x4b')],_0x1d2483[_0x71cc('0x4f')],md5(_0x1d2483[_0x71cc('0x4f')]));}else{_0x1d2483[_0x71cc('0x50')]='';}headers['Authorization']=getAuth(_0x448769);return getUser(_0x448769,_0x5a6aed[_0x71cc('0x51')])[_0x71cc('0x17')](function(_0x24a302){_0x2ecd0d=_0x24a302;logger[_0x71cc('0x18')]('The\x20User\x20ID\x20is:',_0x2ecd0d['id']);return getEndUser(_0x448769,_0x1d2483[_0x71cc('0x52')],_0x1d2483['calleridnum']);})[_0x71cc('0x17')](function(_0x3aa66c){_0x38f069=_0x3aa66c;logger[_0x71cc('0x18')](_0x71cc('0x53'),_0x38f069['id']);return getTicket(_0x448769,_0x2ecd0d,_0x38f069,_0x325827,_0x1d2483);})[_0x71cc('0x17')](function(_0x434675){if(_0x434675){logger[_0x71cc('0x18')](_0x71cc('0x54'),_0x434675['id']);switch(_0x448769[_0x71cc('0x3e')]){case'integrationTab':logger[_0x71cc('0x18')](_0x71cc('0x4d'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x71cc('0xd')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x448769[_0x71cc('0xf')],_0x2ecd0d['id'],_0x434675['id']),'method':_0x71cc('0x10')});case _0x71cc('0x55'):logger['info'](_0x71cc('0x4d'),_0x71cc('0x56'));emit(util[_0x71cc('0xd')](_0x71cc('0x57'),_0x5a6aed[_0x71cc('0x12')]),_0x71cc('0x58'),{'uri':util[_0x71cc('0xd')](_0x71cc('0x59'),_0x448769[_0x71cc('0xf')][_0x71cc('0x5a')](_0x71cc('0x5b'),''),_0x434675['id'])});break;default:logger['error'](_0x71cc('0x4d'),_0x71cc('0x5c'));}}})[_0x71cc('0x5d')](function(_0x39f651){logger[_0x71cc('0x5e')](_0x71cc('0x5f'),util[_0x71cc('0x60')](_0x39f651,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x1706d0,_0x19f747,_0x285d3a,_0x460c5c,_0xf085b1,_0x3506d2,_0x4db1a9){var _0x52aede,_0x578839;_0x3506d2[_0x71cc('0xf')]=intUtil[_0x71cc('0x4a')](_0x3506d2[_0x71cc('0xf')]);_0x3506d2[_0x71cc('0x4b')]=intUtil[_0x71cc('0x4a')](_0x3506d2['serverUrl']);if(_0x4db1a9&&_0x4db1a9[_0x71cc('0x61')]&&_0x4db1a9[_0x71cc('0x61')]!==_0x71cc('0x62')){logger[_0x71cc('0x18')](_0x71cc('0x63'),_0x71cc('0x4e'));_0x19f747[_0x71cc('0x50')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3506d2[_0x71cc('0x4b')],_0x19f747['uniqueid'],md5(_0x19f747['uniqueid']));}headers[_0x71cc('0x64')]=getAuth(_0x3506d2);return getUser(_0x3506d2,_0x460c5c['email'])[_0x71cc('0x17')](function(_0x24f4c8){_0x52aede=_0x24f4c8;logger[_0x71cc('0x18')](_0x71cc('0x65'),_0x52aede['id']);return getEndUser(_0x3506d2,_0x19f747['destcalleridname'],_0x19f747[_0x71cc('0x66')]);})['then'](function(_0x3e2700){_0x578839=_0x3e2700;logger[_0x71cc('0x18')](_0x71cc('0x53'),_0x578839['id']);return getTicket(_0x3506d2,_0x52aede,_0x578839,_0x285d3a,_0x19f747);})[_0x71cc('0x17')](function(_0x395d05){if(_0x395d05){logger[_0x71cc('0x18')](_0x71cc('0x54'),_0x395d05['id']);switch(_0x3506d2['type']){case _0x71cc('0x67'):logger['info'](_0x71cc('0x63'),_0x71cc('0x68'));return request({'uri':util[_0x71cc('0xd')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x3506d2[_0x71cc('0xf')],_0x52aede['id'],_0x395d05['id']),'method':'POST'});case'newTab':logger[_0x71cc('0x18')](_0x71cc('0x63'),_0x71cc('0x56'));emit(util[_0x71cc('0xd')](_0x71cc('0x57'),_0x460c5c[_0x71cc('0x12')]),'trigger:browser:url',{'uri':util[_0x71cc('0xd')]('%s/agent/tickets/%s',_0x3506d2[_0x71cc('0xf')]['replace'](_0x71cc('0x5b'),''),_0x395d05['id'])});break;default:logger[_0x71cc('0x5e')]('[OUTBOUND]',_0x71cc('0x5c'));}}})['catch'](function(_0x1fe117){logger[_0x71cc('0x5e')](_0x71cc('0x69'),util[_0x71cc('0x60')](_0x1fe117,{'showHidden':!![],'depth':null}));});};exports[_0x71cc('0x6a')]=function(_0x474c76,_0x50a5b2,_0x40eb9a,_0x205c55,_0x6a0a31,_0x122d08){var _0x16ef19,_0x29888e;_0x122d08['remoteUri']=intUtil[_0x71cc('0x4a')](_0x122d08[_0x71cc('0xf')]);_0x122d08[_0x71cc('0x4b')]=intUtil['stripTrailingSlash'](_0x122d08[_0x71cc('0x4b')]);if(_0x6a0a31&&_0x6a0a31[_0x71cc('0x4c')]){logger[_0x71cc('0x18')]('['+_0x50a5b2[_0x71cc('0x6b')][_0x71cc('0x6c')]()+']','Recording\x20is\x20enabled!');_0x50a5b2[_0x71cc('0x50')]=util[_0x71cc('0xd')](_0x71cc('0x6d'),_0x122d08[_0x71cc('0x4b')],_0x50a5b2[_0x71cc('0x4f')],md5(_0x50a5b2[_0x71cc('0x4f')]));}else{_0x50a5b2[_0x71cc('0x50')]='';}headers[_0x71cc('0x64')]=getAuth(_0x122d08);return getUser(_0x122d08)[_0x71cc('0x17')](function(_0x44358e){_0x16ef19=_0x44358e;logger['info'](_0x71cc('0x65'),_0x16ef19['id']);return getEndUser(_0x122d08,_0x50a5b2[_0x71cc('0x52')],_0x50a5b2[_0x71cc('0x6e')]);})[_0x71cc('0x17')](function(_0x384788){_0x29888e=_0x384788;logger[_0x71cc('0x18')](_0x71cc('0x53'),_0x29888e['id']);return getTicket(_0x122d08,_0x16ef19,_0x29888e,_0x40eb9a,_0x50a5b2);})[_0x71cc('0x17')](function(_0x1415a2){if(_0x1415a2){logger['info'](_0x71cc('0x54'),_0x1415a2['id']);}})[_0x71cc('0x5d')](function(_0x579390){logger[_0x71cc('0x5e')]('['+_0x50a5b2[_0x71cc('0x6b')]['toUpperCase']()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x71cc('0x60')](_0x579390,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index e071b8c..53dc4fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3021=['Subject','getString','Description','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','$se_module','startCase','talktime','Call_Duration','utc','mm:ss','answertime','endtime','diff','YYYY-MM-DDTHH:mm:ss','called','Call_Result','complete','connect','rejected','Rejected','abandoned','Abandoned','timeout','starttime','Call_Type','Fields','/crm/v2/Calls','code','Call\x20created!','err','log','queue','host','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','Inbound','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','recordingFormat','none','[OUTBOUND]','/downloads?type=uniqueid&token=','email','destcalleridnum','Outbound','/crm/EntityInfo.do?module=Calls&id=','unmanaged','stripTrailingSlash','lastevent','toUpperCase','lodash','md5','./util','moment','ioredis','../../../../config/environment','../../../../config/logger','zoho','redis','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','forEach','includes','string','picklist','idField','content','toString','type','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','access_token','expires_in','zone','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','seconds','error','Failing\x20creating\x20the\x20access_token','stack','info','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','isNil','findIndex','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','catch','https://www.zohoapis.','/crm/v2/','moduleCreate','role','first_name','last_name','SUCCESS','details','CREATE\x20ERROR','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','Creating\x20new\x20call...','administrator'];(function(_0x5e18cd,_0xacb1fa){var _0x363dcf=function(_0xbb77a){while(--_0xbb77a){_0x5e18cd['push'](_0x5e18cd['shift']());}};_0x363dcf(++_0xacb1fa);}(_0x3021,0x179));var _0x1302=function(_0x3363c9,_0x41c44a){_0x3363c9=_0x3363c9-0x0;var _0x19d279=_0x3021[_0x3363c9];return _0x19d279;};'use strict';var _=require(_0x1302('0x0'));var rp=require('request-promise');var md5=require(_0x1302('0x1'));var util=require('util');var intUtil=require(_0x1302('0x2'));var moment=require(_0x1302('0x3'));var Redis=require(_0x1302('0x4'));var BPromise=require('bluebird');var config=require(_0x1302('0x5'));var logger=require(_0x1302('0x6'))(_0x1302('0x7'));config[_0x1302('0x8')]=_['defaults'](config[_0x1302('0x8')],{'host':_0x1302('0x9'),'port':0x18eb});var io=require(_0x1302('0xa'))(new Redis(config[_0x1302('0x8')]));function emit(_0x56f7ac,_0x9e141a,_0x4b7556){io['to'](_0x56f7ac)[_0x1302('0xb')](_0x9e141a,_0x4b7556);}function request(_0x2eced8){logger[_0x1302('0xc')](_0x1302('0xd'),JSON[_0x1302('0xe')](_0x2eced8));return rp(_0x2eced8);}function getCustomFields(_0x341590,_0x5d1eb0){var _0x160d3c={};if(_0x341590['length']>0x0){_[_0x1302('0xf')](_0x341590,function(_0x139e9d){if(_[_0x1302('0x10')]([_0x1302('0x11'),_0x1302('0x12')],_0x139e9d['type'])&&_0x139e9d[_0x1302('0x13')]){_0x160d3c[_0x139e9d[_0x1302('0x13')]]=_0x139e9d[_0x1302('0x14')][_0x1302('0x15')]();}else if(_0x139e9d[_0x1302('0x16')]===_0x1302('0x17')&&_0x139e9d['variableName']&&_0x139e9d[_0x1302('0x13')]&&_0x5d1eb0[_0x139e9d[_0x1302('0x18')]]){_0x160d3c[_0x139e9d['idField']]=_0x5d1eb0[_0x139e9d[_0x1302('0x18')]][_0x1302('0x15')]();}else if(_0x139e9d[_0x1302('0x16')]===_0x1302('0x19')&&_0x139e9d[_0x1302('0x1a')]&&_0x139e9d[_0x1302('0x1a')][_0x1302('0x1b')]&&_0x139e9d[_0x1302('0x13')]&&_0x5d1eb0[_0x139e9d[_0x1302('0x1a')][_0x1302('0x1b')]['toLowerCase']()]){_0x160d3c[_0x139e9d[_0x1302('0x13')]]=_0x5d1eb0[_0x139e9d[_0x1302('0x1a')][_0x1302('0x1b')][_0x1302('0x1c')]()][_0x1302('0x15')]();}});}return _0x160d3c;}function getName(_0xea021e){if(_0xea021e[_0x1302('0x1d')]('\x20')>0x0){var _0x565b23=_0xea021e[_0x1302('0x1e')](/ (.+)/);if(_0x565b23[0x1]){return _0x565b23;}}return[_0xea021e,_0xea021e];}var accountsTokens={};function getAccessToken(_0x2147f0){return new Promise(function(_0x52ed7a,_0x172537){if(!_['isNil'](accountsTokens[_0x2147f0['id']])&&!_['isNil'](accountsTokens[_0x2147f0['id']][_0x1302('0x1f')])){if(moment()['isBefore'](accountsTokens[_0x2147f0['id']][_0x1302('0x20')])){_0x52ed7a(accountsTokens[_0x2147f0['id']][_0x1302('0x1f')]);}}var _0x215962;switch(_0x2147f0[_0x1302('0x21')]){case'US':_0x215962='https://accounts.zoho.com';break;case'AU':_0x215962=_0x1302('0x22');break;case'EU':_0x215962='https://accounts.zoho.eu';break;case'IN':_0x215962=_0x1302('0x23');break;case'CN':_0x215962=_0x1302('0x24');break;default:_0x215962=_0x1302('0x25');break;}var _0x21a0d6={'method':_0x1302('0x26'),'uri':_0x215962+_0x1302('0x27'),'qs':{'refresh_token':_0x2147f0[_0x1302('0x28')],'client_id':_0x2147f0[_0x1302('0x29')],'client_secret':_0x2147f0[_0x1302('0x2a')],'grant_type':_0x1302('0x2b')},'json':!![]};return rp(_0x21a0d6)[_0x1302('0x2c')](function(_0x44b073){accountsTokens[_0x2147f0['id']]={'access_token':_0x44b073[_0x1302('0x1f')],'expires_in':moment()['add'](_0x44b073[_0x1302('0x20')],_0x1302('0x2d'))};_0x52ed7a(_0x44b073[_0x1302('0x1f')]);})['catch'](function(_0x2cefa9){logger[_0x1302('0x2e')](_0x1302('0x2f'),_0x2cefa9[_0x1302('0x30')]);_0x172537(_0x2cefa9);});});}function getUser(_0x422697,_0x1c7f4c,_0x145d68,_0x48b3cb){logger[_0x1302('0x31')]('Search\x20user');return request({'method':_0x1302('0x32'),'uri':util[_0x1302('0x33')](_0x1302('0x34'),_0x1c7f4c),'qs':{'type':_0x1302('0x35')},'headers':{'Authorization':_0x1302('0x36')+_0x422697},'json':!![]})[_0x1302('0x2c')](function(_0x3ab4da){if(_0x3ab4da[_0x1302('0x37')]){var _0x5e8120=-0x1;if(_[_0x1302('0x38')](_0x3ab4da[_0x1302('0x37')])){if(!_[_0x1302('0x39')](_0x48b3cb)){_0x5e8120=_[_0x1302('0x3a')](_0x3ab4da[_0x1302('0x37')],function(_0x1431ba){return _0x1431ba['email']===_0x48b3cb;});}if(_0x5e8120>=0x0){logger['info'](_0x1302('0x3b'));}else{logger[_0x1302('0x31')](_0x1302('0x3c'));_0x5e8120=_[_0x1302('0x3a')](_0x3ab4da[_0x1302('0x37')],function(_0x10b907){return _0x10b907[_0x1302('0x3d')][_0x1302('0x1b')]==='Administrator';});}return _0x3ab4da[_0x1302('0x37')][_0x5e8120];}else{if(_0x3ab4da['user'][_0x1302('0x3d')][_0x1302('0x1b')]==='Administrator'){logger[_0x1302('0x31')](_0x1302('0x3c'));user=_0x3ab4da[_0x1302('0x3e')];return user;}else{logger[_0x1302('0x2e')](_0x1302('0x3f'),JSON[_0x1302('0xe')](_0x3ab4da));throw new Error(_0x1302('0x40')+JSON[_0x1302('0xe')](_0x3ab4da));}}}else{logger['error'](_0x1302('0x3f'),JSON[_0x1302('0xe')](_0x3ab4da));throw new Error(_0x1302('0x40')+JSON['stringify'](_0x3ab4da));}})['catch'](function(_0x199385){console[_0x1302('0x2e')](_0x199385);});}function getZohoUser(_0x20fc9e,_0xb8b75f){return new BPromise(function(_0x3322a8,_0x460aad){request(_0x20fc9e)[_0x1302('0x2c')](function(_0x374927){var _0x354fda=null;if(_0x374927){_0x354fda=_0x374927[_0x1302('0x41')][0x0];_0x354fda[_0x1302('0x42')]=_0xb8b75f;}_0x3322a8(_0x354fda);})[_0x1302('0x43')](function(_0x1c11b7){_0x460aad(_0x1c11b7);});});}function createEndUser(_0x296527,_0x4e2815,_0x4bdc8b,_0x3b12b7,_0x24a3b9,_0x22092d){var _0x4bdc8b=getName(_0x4bdc8b);return request({'method':_0x1302('0x26'),'uri':_0x1302('0x44')+_0x4e2815+_0x1302('0x45')+_['startCase'](_0x22092d[_0x1302('0x46')])+'s','body':{'data':[{'Last_Name':_0x4bdc8b[0x1],'First_Name':_0x4bdc8b[0x0],'Phone':_0x3b12b7,'Owner':{'name':!_[_0x1302('0x39')](_0x24a3b9[_0x1302('0x47')][_0x1302('0x1b')])?_0x24a3b9[_0x1302('0x47')][_0x1302('0x1b')]:!_['isNil'](_0x24a3b9[_0x1302('0x48')])?_0x24a3b9[_0x1302('0x48')]+'\x20'+_0x24a3b9[_0x1302('0x49')]:_0x24a3b9[_0x1302('0x49')],'id':_0x24a3b9['id']}}]},'headers':{'Authorization':_0x1302('0x36')+_0x296527},'json':!![]})[_0x1302('0x2c')](function(_0x424285){if(_0x424285&&_0x424285[_0x1302('0x41')][0x0]['code']===_0x1302('0x4a')){var _0x2b218c=_0x424285['data'][0x0][_0x1302('0x4b')];_0x2b218c[_0x1302('0x42')]=_['startCase'](_0x22092d[_0x1302('0x46')])+'s';return _0x2b218c;}logger[_0x1302('0x2e')](_0x1302('0x3f'),JSON['stringify'](data));throw new Error('Error:\x20'+JSON[_0x1302('0xe')](data));})[_0x1302('0x43')](function(_0x5ab774){console['log'](_0x1302('0x4c'),_0x5ab774);});}function getEndUser(_0x43f4a2,_0xdb2660,_0x46be1c,_0x579b1c,_0x57bc3b,_0x1f3187,_0x3c9b6a){var _0x325c00={'method':_0x1302('0x32'),'uri':'','headers':{'Authorization':_0x1302('0x36')+_0x43f4a2},'json':!![]};switch(_0x3c9b6a[_0x1302('0x4d')]){case _0x1302('0x4e'):_0x325c00[_0x1302('0x4f')]='https://www.zohoapis.'+_0xdb2660+_0x1302('0x50')+_0x57bc3b+'))';return getZohoUser(_0x325c00,_0x1302('0x51'))[_0x1302('0x2c')](function(_0x3147fc){if(_0x3147fc)return _0x3147fc;_0x325c00[_0x1302('0x4f')]=_0x1302('0x44')+_0xdb2660+_0x1302('0x52')+_0x57bc3b+'))';return getZohoUser(_0x325c00,_0x1302('0x53'))[_0x1302('0x2c')](function(_0xba9808){if(_0xba9808)return _0xba9808;if(_0x3c9b6a[_0x1302('0x46')]!=_0x1302('0x54')){return createEndUser(_0x43f4a2,_0xdb2660,_0x579b1c,_0x57bc3b,_0x1f3187,_0x3c9b6a);}else{return{};}});});break;case _0x1302('0x55'):_0x325c00[_0x1302('0x4f')]=_0x1302('0x44')+_0xdb2660+_0x1302('0x50')+_0x57bc3b+'))';return getZohoUser(_0x325c00,'Contacts')['then'](function(_0x529dd2){if(_0x529dd2)return _0x529dd2;if(_0x3c9b6a[_0x1302('0x46')]!=_0x1302('0x54')){return createEndUser(_0x43f4a2,_0xdb2660,_0x579b1c,_0x57bc3b,_0x1f3187,_0x3c9b6a);}else{return{};}});break;case'lead':_0x325c00[_0x1302('0x4f')]=_0x1302('0x44')+_0xdb2660+_0x1302('0x52')+_0x57bc3b+'))';return getZohoUser(_0x325c00,_0x1302('0x53'))[_0x1302('0x2c')](function(_0x53be75){if(_0x53be75)return _0x53be75;if(_0x3c9b6a[_0x1302('0x46')]!=_0x1302('0x54')){return createEndUser(_0x43f4a2,_0xdb2660,_0x579b1c,_0x57bc3b,_0x1f3187,_0x3c9b6a);}else{return{};}});break;}}function getCall(_0x4def20,_0x2c7ece,_0x8405bc,_0x10b924,_0x5ce1e2,_0x4bef87,_0x2f89ab,_0x29c1f7){logger[_0x1302('0x31')](_0x1302('0x56'));var _0x54358d={};_0x54358d['Owner']={'name':!_[_0x1302('0x39')](_0x10b924['role'][_0x1302('0x1b')])&&!_[_0x1302('0x39')](_0x10b924['profile']['name'])&&_0x10b924[_0x1302('0x3d')]['name']===_0x1302('0x57')?_0x10b924['role'][_0x1302('0x1b')]:!_[_0x1302('0x39')](_0x10b924[_0x1302('0x48')])?_0x10b924['first_name']+'\x20'+_0x10b924[_0x1302('0x49')]:_0x10b924['last_name'],'id':_0x10b924['id']};_0x54358d[_0x1302('0x58')]=intUtil[_0x1302('0x59')](_0x4bef87['Subjects'],_0x2f89ab,'\x20');_0x54358d[_0x1302('0x5a')]=intUtil[_0x1302('0x59')](_0x4bef87[_0x1302('0x5b')],_0x2f89ab,'\x0a');if(_0x5ce1e2[_0x1302('0x42')]===_0x1302('0x51')){_0x54358d[_0x1302('0x5c')]={'name':!_[_0x1302('0x39')](_0x5ce1e2[_0x1302('0x5d')])?_0x5ce1e2[_0x1302('0x5d')]:!_['isNil'](_0x5ce1e2[_0x1302('0x5e')])?_0x5ce1e2[_0x1302('0x5e')]+'\x20'+_0x5ce1e2['Last_Name']:_0x5ce1e2[_0x1302('0x5f')],'id':_0x5ce1e2['id']};}if(_0x5ce1e2[_0x1302('0x42')]===_0x1302('0x53')){_0x54358d['What_Id']={'name':!_[_0x1302('0x39')](_0x5ce1e2[_0x1302('0x5d')])?_0x5ce1e2[_0x1302('0x5d')]:!_[_0x1302('0x39')](_0x5ce1e2['First_Name'])?_0x5ce1e2[_0x1302('0x5e')]+'\x20'+_0x5ce1e2[_0x1302('0x5f')]:_0x5ce1e2[_0x1302('0x5f')],'id':_0x5ce1e2['id']};_0x54358d[_0x1302('0x60')]=_[_0x1302('0x61')](_0x5ce1e2[_0x1302('0x42')]);}if(_0x2f89ab[_0x1302('0x62')]){_0x54358d[_0x1302('0x63')]=moment[_0x1302('0x64')](parseInt(_0x2f89ab[_0x1302('0x62')])*0x3e8)[_0x1302('0x33')](_0x1302('0x65'));}else if(_0x2f89ab[_0x1302('0x66')]&&_0x2f89ab[_0x1302('0x67')]){_0x54358d[_0x1302('0x63')]=moment['utc'](moment(_0x2f89ab['endtime'],'YYYY-MM-DDTHH:mm:ss')[_0x1302('0x68')](moment(_0x2f89ab['starttime'],_0x1302('0x69'))))[_0x1302('0x33')](_0x1302('0x65'));}switch(_0x2f89ab['lastevent']){case _0x1302('0x6a'):_0x54358d[_0x1302('0x6b')]='Called';break;case _0x1302('0x6c'):case _0x1302('0x6d'):_0x54358d[_0x1302('0x6b')]='Answered';break;case _0x1302('0x6e'):_0x54358d[_0x1302('0x6b')]=_0x1302('0x6f');break;case _0x1302('0x70'):_0x54358d[_0x1302('0x6b')]=_0x1302('0x71');break;case _0x1302('0x72'):_0x54358d['Call_Result']='Timeout';default:}_0x54358d['Call_Start_Time']=(_0x29c1f7==='outbound'?moment(_0x2f89ab[_0x1302('0x73')])[_0x1302('0x33')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x2f89ab['agentcalledAt'])[_0x1302('0x33')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0x1302('0x33')](_0x1302('0x69'));_0x54358d[_0x1302('0x74')]=_0x29c1f7||'Inbound';_0x54358d=_['merge'](_0x54358d,getCustomFields(_0x4bef87[_0x1302('0x75')],_0x2f89ab));return request({'method':_0x1302('0x26'),'uri':_0x1302('0x44')+_0x2c7ece+_0x1302('0x76'),'headers':{'Authorization':_0x1302('0x36')+_0x4def20},'body':{'data':[_0x54358d]},'json':!![]})[_0x1302('0x2c')](function(_0x2b7ea9){if(_0x2b7ea9&&_0x2b7ea9[_0x1302('0x41')][0x0][_0x1302('0x77')]==='SUCCESS'){logger['info'](_0x1302('0x78'));return{'id':_0x2b7ea9[_0x1302('0x41')][0x0][_0x1302('0x4b')]['id']};}})[_0x1302('0x43')](function(_0x4e043b){logger[_0x1302('0x31')](_0x1302('0x79'),_0x4e043b[_0x1302('0x30')]);console[_0x1302('0x7a')](_0x1302('0x79'),_0x4e043b);});}exports[_0x1302('0x7b')]=function(_0x32fcac,_0x55fb7a,_0x4ec494,_0x1d0b7c,_0x521504,_0x508ebc){var _0x89f66d,_0x2add82,_0x41600c;_0x508ebc['host']=intUtil['stripTrailingSlash'](_0x508ebc[_0x1302('0x7c')]);_0x508ebc[_0x1302('0x7d')]=intUtil['stripTrailingSlash'](_0x508ebc['serverUrl']);if(_0x521504&&_0x521504[_0x1302('0x7e')]){logger['info'](_0x1302('0x7f'),_0x1302('0x80'));_0x55fb7a[_0x1302('0x81')]=_0x508ebc[_0x1302('0x7d')]+_0x1302('0x82')+_0x55fb7a[_0x1302('0x83')]+'/downloads?type=uniqueid&token='+md5(_0x55fb7a['uniqueid']);}else{_0x55fb7a[_0x1302('0x81')]='';}var _0x3dbb06=_0x508ebc[_0x1302('0x7c')]===_0x1302('0x84')?'eu':_0x1302('0x85');return getAccessToken(_0x508ebc)[_0x1302('0x2c')](function(_0x2305f2){_0x41600c=_0x2305f2;return getUser(_0x41600c,_0x3dbb06,_0x508ebc,_0x1d0b7c['email']);})[_0x1302('0x2c')](function(_0x1a1824){_0x89f66d=_0x1a1824;logger[_0x1302('0x31')](_0x1302('0x86'),_0x89f66d['id']);return getEndUser(_0x41600c,_0x3dbb06,_0x508ebc,_0x55fb7a[_0x1302('0x87')],_0x55fb7a[_0x1302('0x88')],_0x89f66d,_0x4ec494);})[_0x1302('0x2c')](function(_0x278256){_0x2add82=_0x278256;return getCall(_0x41600c,_0x3dbb06,_0x508ebc,_0x89f66d,_0x2add82,_0x4ec494,_0x55fb7a,_0x1302('0x89'));})[_0x1302('0x2c')](function(_0x20697a){if(_0x20697a){logger['info'](_0x1302('0x8a'),_0x20697a['id']);logger[_0x1302('0x31')](_0x1302('0x7f'),_0x1302('0x8b'));emit(util[_0x1302('0x33')](_0x1302('0x8c'),_0x1d0b7c[_0x1302('0x1b')]),_0x1302('0x8d'),{'uri':_0x1302('0x8e')+_0x508ebc[_0x1302('0x7c')]+'/crm/EntityInfo.do?module=Calls&id='+_0x20697a['id']});}})['catch'](function(_0x5f55dd){logger[_0x1302('0x2e')](_0x1302('0x7f'),JSON['stringify'](_0x5f55dd));});};exports['outbound']=function(_0x2de86a,_0x203a03,_0x274759,_0x335153,_0x251b84,_0x317725,_0xe901e7){var _0x1e704c,_0x5e12cf,_0x250c11;_0x317725[_0x1302('0x7c')]=intUtil['stripTrailingSlash'](_0x317725[_0x1302('0x7c')]);_0x317725['serverUrl']=intUtil['stripTrailingSlash'](_0x317725[_0x1302('0x7d')]);if(_0xe901e7&&_0xe901e7['recordingFormat']&&_0xe901e7[_0x1302('0x8f')]!==_0x1302('0x90')){logger[_0x1302('0x31')](_0x1302('0x91'),_0x1302('0x80'));_0x203a03[_0x1302('0x81')]=_0x317725[_0x1302('0x7d')]+'/api/voice/recordings/'+_0x203a03[_0x1302('0x83')]+_0x1302('0x92')+md5(_0x203a03[_0x1302('0x83')]);}var _0xbe15c1=_0x317725[_0x1302('0x7c')]===_0x1302('0x84')?'eu':_0x1302('0x85');return getAccessToken(_0x317725)[_0x1302('0x2c')](function(_0x1e2d8e){_0x250c11=_0x1e2d8e;return getUser(_0x250c11,_0xbe15c1,_0x317725,_0x335153[_0x1302('0x93')]);})[_0x1302('0x2c')](function(_0x391551){_0x1e704c=_0x391551;logger[_0x1302('0x31')](_0x1302('0x86'),_0x1e704c['id']);return getEndUser(_0x250c11,_0xbe15c1,_0x317725,_0x203a03['destcalleridname'],_0x203a03[_0x1302('0x94')],_0x1e704c,_0x274759);})[_0x1302('0x2c')](function(_0x5706c2){_0x5e12cf=_0x5706c2;return getCall(_0x250c11,_0xbe15c1,_0x317725,_0x1e704c,_0x5e12cf,_0x274759,_0x203a03,_0x1302('0x95'));})['then'](function(_0x566d74){if(_0x566d74){logger['info']('The\x20Call\x20ID\x20is:',_0x566d74['id']);logger[_0x1302('0x31')]('[OUTBOUND]',_0x1302('0x8b'));emit(util['format'](_0x1302('0x8c'),_0x335153['name']),'trigger:browser:url',{'uri':_0x1302('0x8e')+_0x317725['host']+_0x1302('0x96')+_0x566d74['id']});}})[_0x1302('0x43')](function(_0x430704){logger['error'](_0x1302('0x91'),JSON[_0x1302('0xe')](_0x430704));});};exports[_0x1302('0x97')]=function(_0x3908eb,_0x57934c,_0x4d0c7c,_0x297ac7,_0x48e978,_0x3d68c7){var _0x3db2ef,_0x4c83d1,_0x3bcf24;_0x3d68c7[_0x1302('0x7c')]=intUtil[_0x1302('0x98')](_0x3d68c7[_0x1302('0x7c')]);_0x3d68c7[_0x1302('0x7d')]=intUtil[_0x1302('0x98')](_0x3d68c7['serverUrl']);if(_0x48e978&&_0x48e978[_0x1302('0x7e')]){logger['info']('['+_0x57934c[_0x1302('0x99')][_0x1302('0x9a')]()+']',_0x1302('0x80'));_0x57934c['recordingURL']=_0x3d68c7['serverUrl']+_0x1302('0x82')+_0x57934c[_0x1302('0x83')]+_0x1302('0x92')+md5(_0x57934c['uniqueid']);}else{_0x57934c[_0x1302('0x81')]='';}var _0x4d45b2=_0x3d68c7[_0x1302('0x7c')]==='zoho.eu'?'eu':'com';return getAccessToken(_0x3d68c7)[_0x1302('0x2c')](function(_0x5bb2c0){_0x3bcf24=_0x5bb2c0;return getUser(_0x3bcf24,_0x4d45b2,_0x3d68c7);})['then'](function(_0x4e66a6){_0x3db2ef=_0x4e66a6;logger[_0x1302('0x31')](_0x1302('0x86'),_0x3db2ef['id']);return getEndUser(_0x3bcf24,_0x4d45b2,_0x3d68c7,_0x57934c['calleridname'],_0x57934c['calleridnum'],_0x3db2ef,_0x4d0c7c);})[_0x1302('0x2c')](function(_0x4327bf){_0x4c83d1=_0x4327bf;return getCall(_0x3bcf24,_0x4d45b2,_0x3d68c7,_0x3db2ef,_0x4c83d1,_0x4d0c7c,_0x57934c,'Inbound');})[_0x1302('0x2c')](function(_0x50d7df){if(_0x50d7df){logger[_0x1302('0x31')](_0x1302('0x8a'),_0x50d7df['id']);}})[_0x1302('0x43')](function(_0x3e89f8){logger['error']('['+_0x57934c[_0x1302('0x99')][_0x1302('0x9a')]()+']',JSON[_0x1302('0xe')](_0x3e89f8));});};
\ No newline at end of file
+var _0xb59c=['refresh_token','then','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','https://www.zohoapis.%s/crm/v2/users','users','isArrayLikeObject','email','Agent\x20found!','Using\x20the\x20admin\x20account!','findIndex','profile','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','SUCCESS','details','log','Zoho-oauthtoken\x20','moduleSearch','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','lead','administrator','Subject','getString','Subjects','Descriptions','Contacts','Who_Id','Full_Name','First_Name','Last_Name','What_Id','Call_Duration','utc','talktime','format','mm:ss','endtime','YYYY-MM-DDTHH:mm:ss','starttime','lastevent','called','Call_Result','Called','complete','connect','Answered','rejected','Rejected','abandoned','Abandoned','timeout','Timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','Call\x20created!','err','queue','host','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','zoho.eu','The\x20User\x20ID\x20is:','calleridname','calleridnum','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','/api/voice/recordings/','destcalleridname','destcalleridnum','Outbound','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','monitor_format','toUpperCase','/downloads?type=uniqueid&token=','com','The\x20Call\x20ID\x20is:','lodash','request-promise','md5','./util','moment','ioredis','bluebird','../../../../config/logger','zoho','redis','socket.io-emitter','emit','debug','stringify','forEach','includes','string','picklist','idField','content','toString','variableName','type','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId'];(function(_0x53ba9b,_0x47fe58){var _0x565791=function(_0xe6f230){while(--_0xe6f230){_0x53ba9b['push'](_0x53ba9b['shift']());}};_0x565791(++_0x47fe58);}(_0xb59c,0x10b));var _0xcb59=function(_0x3ed0fc,_0x2d4b64){_0x3ed0fc=_0x3ed0fc-0x0;var _0x59c26e=_0xb59c[_0x3ed0fc];return _0x59c26e;};'use strict';var _=require(_0xcb59('0x0'));var rp=require(_0xcb59('0x1'));var md5=require(_0xcb59('0x2'));var util=require('util');var intUtil=require(_0xcb59('0x3'));var moment=require(_0xcb59('0x4'));var Redis=require(_0xcb59('0x5'));var BPromise=require(_0xcb59('0x6'));var config=require('../../../../config/environment');var logger=require(_0xcb59('0x7'))(_0xcb59('0x8'));config[_0xcb59('0x9')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xcb59('0xa'))(new Redis(config[_0xcb59('0x9')]));function emit(_0x513186,_0x305cb1,_0x1895f9){io['to'](_0x513186)[_0xcb59('0xb')](_0x305cb1,_0x1895f9);}function request(_0x42f94c){logger[_0xcb59('0xc')]('[HTTP]',JSON[_0xcb59('0xd')](_0x42f94c));return rp(_0x42f94c);}function getCustomFields(_0x35cacc,_0x3728d8){var _0x27e30a={};if(_0x35cacc['length']>0x0){_[_0xcb59('0xe')](_0x35cacc,function(_0x4ac5ee){if(_[_0xcb59('0xf')]([_0xcb59('0x10'),_0xcb59('0x11')],_0x4ac5ee['type'])&&_0x4ac5ee['idField']){_0x27e30a[_0x4ac5ee[_0xcb59('0x12')]]=_0x4ac5ee[_0xcb59('0x13')][_0xcb59('0x14')]();}else if(_0x4ac5ee['type']==='variable'&&_0x4ac5ee[_0xcb59('0x15')]&&_0x4ac5ee['idField']&&_0x3728d8[_0x4ac5ee['variableName']]){_0x27e30a[_0x4ac5ee['idField']]=_0x3728d8[_0x4ac5ee[_0xcb59('0x15')]]['toString']();}else if(_0x4ac5ee[_0xcb59('0x16')]===_0xcb59('0x17')&&_0x4ac5ee[_0xcb59('0x18')]&&_0x4ac5ee['Variable'][_0xcb59('0x19')]&&_0x4ac5ee['idField']&&_0x3728d8[_0x4ac5ee[_0xcb59('0x18')]['name'][_0xcb59('0x1a')]()]){_0x27e30a[_0x4ac5ee[_0xcb59('0x12')]]=_0x3728d8[_0x4ac5ee['Variable']['name']['toLowerCase']()][_0xcb59('0x14')]();}});}return _0x27e30a;}function getName(_0x220175){if(_0x220175[_0xcb59('0x1b')]('\x20')>0x0){var _0x1556e8=_0x220175[_0xcb59('0x1c')](/ (.+)/);if(_0x1556e8[0x1]){return _0x1556e8;}}return[_0x220175,_0x220175];}var accountsTokens={};function getAccessToken(_0x434e5d){return new Promise(function(_0x300738,_0x54cfc2){if(!_[_0xcb59('0x1d')](accountsTokens[_0x434e5d['id']])&&!_[_0xcb59('0x1d')](accountsTokens[_0x434e5d['id']][_0xcb59('0x1e')])){if(moment()[_0xcb59('0x1f')](accountsTokens[_0x434e5d['id']][_0xcb59('0x20')])){_0x300738(accountsTokens[_0x434e5d['id']][_0xcb59('0x1e')]);}}var _0x4a51e1;switch(_0x434e5d[_0xcb59('0x21')]){case'US':_0x4a51e1='https://accounts.zoho.com';break;case'AU':_0x4a51e1='https://accounts.zoho.com.au';break;case'EU':_0x4a51e1=_0xcb59('0x22');break;case'IN':_0x4a51e1=_0xcb59('0x23');break;case'CN':_0x4a51e1=_0xcb59('0x24');break;default:_0x4a51e1='https://accounts.zoho.eu';break;}var _0x394050={'method':_0xcb59('0x25'),'uri':_0x4a51e1+_0xcb59('0x26'),'qs':{'refresh_token':_0x434e5d[_0xcb59('0x27')],'client_id':_0x434e5d[_0xcb59('0x28')],'client_secret':_0x434e5d['clientSecret'],'grant_type':_0xcb59('0x29')},'json':!![]};return rp(_0x394050)[_0xcb59('0x2a')](function(_0x586c38){accountsTokens[_0x434e5d['id']]={'access_token':_0x586c38[_0xcb59('0x1e')],'expires_in':moment()['add'](_0x586c38['expires_in'],_0xcb59('0x2b'))};_0x300738(_0x586c38[_0xcb59('0x1e')]);})[_0xcb59('0x2c')](function(_0x12f35a){logger[_0xcb59('0x2d')](_0xcb59('0x2e'),_0x12f35a[_0xcb59('0x2f')]);_0x54cfc2(_0x12f35a);});});}function getUser(_0x35a28d,_0x517529,_0x27f230,_0x1ed923){logger[_0xcb59('0x30')](_0xcb59('0x31'));return request({'method':'GET','uri':util['format'](_0xcb59('0x32'),_0x517529),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x35a28d},'json':!![]})['then'](function(_0x2355a1){if(_0x2355a1[_0xcb59('0x33')]){var _0x48c22b=-0x1;if(_[_0xcb59('0x34')](_0x2355a1[_0xcb59('0x33')])){if(!_['isNil'](_0x1ed923)){_0x48c22b=_['findIndex'](_0x2355a1[_0xcb59('0x33')],function(_0x52acc7){return _0x52acc7[_0xcb59('0x35')]===_0x1ed923;});}if(_0x48c22b>=0x0){logger[_0xcb59('0x30')](_0xcb59('0x36'));}else{logger['info'](_0xcb59('0x37'));_0x48c22b=_[_0xcb59('0x38')](_0x2355a1['users'],function(_0x13ed2b){return _0x13ed2b[_0xcb59('0x39')][_0xcb59('0x19')]==='Administrator';});}return _0x2355a1['users'][_0x48c22b];}else{if(_0x2355a1[_0xcb59('0x3a')][_0xcb59('0x39')]['name']==='Administrator'){logger[_0xcb59('0x30')](_0xcb59('0x37'));user=_0x2355a1['user'];return user;}else{logger[_0xcb59('0x2d')](_0xcb59('0x3b'),JSON[_0xcb59('0xd')](_0x2355a1));throw new Error(_0xcb59('0x3c')+JSON[_0xcb59('0xd')](_0x2355a1));}}}else{logger[_0xcb59('0x2d')](_0xcb59('0x3b'),JSON[_0xcb59('0xd')](_0x2355a1));throw new Error(_0xcb59('0x3c')+JSON[_0xcb59('0xd')](_0x2355a1));}})[_0xcb59('0x2c')](function(_0x59ff77){console[_0xcb59('0x2d')](_0x59ff77);});}function getZohoUser(_0x53faf3,_0xe10e46){return new BPromise(function(_0x23c2cf,_0x4bf82f){request(_0x53faf3)[_0xcb59('0x2a')](function(_0x15ecee){var _0x5d98ef=null;if(_0x15ecee){_0x5d98ef=_0x15ecee[_0xcb59('0x3d')][0x0];_0x5d98ef[_0xcb59('0x3e')]=_0xe10e46;}_0x23c2cf(_0x5d98ef);})[_0xcb59('0x2c')](function(_0x40cd5e){_0x4bf82f(_0x40cd5e);});});}function createEndUser(_0x53530c,_0x4ae2ac,_0x5a3dd2,_0x38d1a0,_0x2c9968,_0x4b45bb){var _0x5a3dd2=getName(_0x5a3dd2);return request({'method':_0xcb59('0x25'),'uri':_0xcb59('0x3f')+_0x4ae2ac+_0xcb59('0x40')+_[_0xcb59('0x41')](_0x4b45bb[_0xcb59('0x42')])+'s','body':{'data':[{'Last_Name':_0x5a3dd2[0x1],'First_Name':_0x5a3dd2[0x0],'Phone':_0x38d1a0,'Owner':{'name':!_['isNil'](_0x2c9968[_0xcb59('0x43')][_0xcb59('0x19')])?_0x2c9968[_0xcb59('0x43')][_0xcb59('0x19')]:!_['isNil'](_0x2c9968[_0xcb59('0x44')])?_0x2c9968[_0xcb59('0x44')]+'\x20'+_0x2c9968[_0xcb59('0x45')]:_0x2c9968[_0xcb59('0x45')],'id':_0x2c9968['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x53530c},'json':!![]})[_0xcb59('0x2a')](function(_0x2006e1){if(_0x2006e1&&_0x2006e1[_0xcb59('0x3d')][0x0][_0xcb59('0x46')]===_0xcb59('0x47')){var _0x1a7c0c=_0x2006e1['data'][0x0][_0xcb59('0x48')];_0x1a7c0c[_0xcb59('0x3e')]=_[_0xcb59('0x41')](_0x4b45bb[_0xcb59('0x42')])+'s';return _0x1a7c0c;}logger[_0xcb59('0x2d')]('The\x20failing\x20result\x20is',JSON['stringify'](data));throw new Error('Error:\x20'+JSON['stringify'](data));})['catch'](function(_0x3755bc){console[_0xcb59('0x49')]('CREATE\x20ERROR',_0x3755bc);});}function getEndUser(_0x349091,_0x1fe0e8,_0x47e891,_0xb1d7f0,_0x52c8f6,_0x8da9e4,_0x524feb){var _0x5c3e36={'method':'GET','uri':'','headers':{'Authorization':_0xcb59('0x4a')+_0x349091},'json':!![]};switch(_0x524feb[_0xcb59('0x4b')]){case'contact_lead':_0x5c3e36[_0xcb59('0x4c')]=_0xcb59('0x3f')+_0x1fe0e8+_0xcb59('0x4d')+_0x52c8f6+'))';return getZohoUser(_0x5c3e36,'Contacts')['then'](function(_0x286905){if(_0x286905)return _0x286905;_0x5c3e36[_0xcb59('0x4c')]=_0xcb59('0x3f')+_0x1fe0e8+_0xcb59('0x4e')+_0x52c8f6+'))';return getZohoUser(_0x5c3e36,_0xcb59('0x4f'))[_0xcb59('0x2a')](function(_0x1f8913){if(_0x1f8913)return _0x1f8913;if(_0x524feb[_0xcb59('0x42')]!=_0xcb59('0x50')){return createEndUser(_0x349091,_0x1fe0e8,_0xb1d7f0,_0x52c8f6,_0x8da9e4,_0x524feb);}else{return{};}});});break;case'contact':_0x5c3e36[_0xcb59('0x4c')]=_0xcb59('0x3f')+_0x1fe0e8+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x52c8f6+'))';return getZohoUser(_0x5c3e36,'Contacts')[_0xcb59('0x2a')](function(_0x1bbad6){if(_0x1bbad6)return _0x1bbad6;if(_0x524feb[_0xcb59('0x42')]!='nothing'){return createEndUser(_0x349091,_0x1fe0e8,_0xb1d7f0,_0x52c8f6,_0x8da9e4,_0x524feb);}else{return{};}});break;case _0xcb59('0x51'):_0x5c3e36['uri']='https://www.zohoapis.'+_0x1fe0e8+_0xcb59('0x4e')+_0x52c8f6+'))';return getZohoUser(_0x5c3e36,'Leads')[_0xcb59('0x2a')](function(_0x51d352){if(_0x51d352)return _0x51d352;if(_0x524feb['moduleCreate']!='nothing'){return createEndUser(_0x349091,_0x1fe0e8,_0xb1d7f0,_0x52c8f6,_0x8da9e4,_0x524feb);}else{return{};}});break;}}function getCall(_0x51097c,_0x399ad7,_0x43059d,_0x22fa99,_0x505e25,_0x3f9167,_0x244041,_0x1873ba){logger[_0xcb59('0x30')]('Creating\x20new\x20call...');var _0x4c6ae5={};_0x4c6ae5['Owner']={'name':!_['isNil'](_0x22fa99[_0xcb59('0x43')]['name'])&&!_['isNil'](_0x22fa99[_0xcb59('0x39')][_0xcb59('0x19')])&&_0x22fa99[_0xcb59('0x39')][_0xcb59('0x19')]===_0xcb59('0x52')?_0x22fa99[_0xcb59('0x43')][_0xcb59('0x19')]:!_[_0xcb59('0x1d')](_0x22fa99[_0xcb59('0x44')])?_0x22fa99[_0xcb59('0x44')]+'\x20'+_0x22fa99[_0xcb59('0x45')]:_0x22fa99['last_name'],'id':_0x22fa99['id']};_0x4c6ae5[_0xcb59('0x53')]=intUtil[_0xcb59('0x54')](_0x3f9167[_0xcb59('0x55')],_0x244041,'\x20');_0x4c6ae5['Description']=intUtil[_0xcb59('0x54')](_0x3f9167[_0xcb59('0x56')],_0x244041,'\x0a');if(_0x505e25[_0xcb59('0x3e')]===_0xcb59('0x57')){_0x4c6ae5[_0xcb59('0x58')]={'name':!_[_0xcb59('0x1d')](_0x505e25[_0xcb59('0x59')])?_0x505e25[_0xcb59('0x59')]:!_['isNil'](_0x505e25['First_Name'])?_0x505e25[_0xcb59('0x5a')]+'\x20'+_0x505e25[_0xcb59('0x5b')]:_0x505e25[_0xcb59('0x5b')],'id':_0x505e25['id']};}if(_0x505e25['enduserType']===_0xcb59('0x4f')){_0x4c6ae5[_0xcb59('0x5c')]={'name':!_[_0xcb59('0x1d')](_0x505e25[_0xcb59('0x59')])?_0x505e25[_0xcb59('0x59')]:!_[_0xcb59('0x1d')](_0x505e25['First_Name'])?_0x505e25['First_Name']+'\x20'+_0x505e25[_0xcb59('0x5b')]:_0x505e25[_0xcb59('0x5b')],'id':_0x505e25['id']};_0x4c6ae5['$se_module']=_[_0xcb59('0x41')](_0x505e25['enduserType']);}if(_0x244041['talktime']){_0x4c6ae5[_0xcb59('0x5d')]=moment[_0xcb59('0x5e')](parseInt(_0x244041[_0xcb59('0x5f')])*0x3e8)[_0xcb59('0x60')](_0xcb59('0x61'));}else if(_0x244041['answertime']&&_0x244041[_0xcb59('0x62')]){_0x4c6ae5[_0xcb59('0x5d')]=moment[_0xcb59('0x5e')](moment(_0x244041[_0xcb59('0x62')],_0xcb59('0x63'))['diff'](moment(_0x244041[_0xcb59('0x64')],_0xcb59('0x63'))))[_0xcb59('0x60')](_0xcb59('0x61'));}switch(_0x244041[_0xcb59('0x65')]){case _0xcb59('0x66'):_0x4c6ae5[_0xcb59('0x67')]=_0xcb59('0x68');break;case _0xcb59('0x69'):case _0xcb59('0x6a'):_0x4c6ae5[_0xcb59('0x67')]=_0xcb59('0x6b');break;case _0xcb59('0x6c'):_0x4c6ae5[_0xcb59('0x67')]=_0xcb59('0x6d');break;case _0xcb59('0x6e'):_0x4c6ae5[_0xcb59('0x67')]=_0xcb59('0x6f');break;case _0xcb59('0x70'):_0x4c6ae5[_0xcb59('0x67')]=_0xcb59('0x71');default:}_0x4c6ae5[_0xcb59('0x72')]=(_0x1873ba===_0xcb59('0x73')?moment(_0x244041[_0xcb59('0x64')])[_0xcb59('0x60')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x244041[_0xcb59('0x74')])[_0xcb59('0x60')](_0xcb59('0x63')))||moment()[_0xcb59('0x60')]('YYYY-MM-DDTHH:mm:ss');_0x4c6ae5[_0xcb59('0x75')]=_0x1873ba||_0xcb59('0x76');_0x4c6ae5=_[_0xcb59('0x77')](_0x4c6ae5,getCustomFields(_0x3f9167[_0xcb59('0x78')],_0x244041));return request({'method':_0xcb59('0x25'),'uri':_0xcb59('0x3f')+_0x399ad7+_0xcb59('0x79'),'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x51097c},'body':{'data':[_0x4c6ae5]},'json':!![]})[_0xcb59('0x2a')](function(_0x1b33c2){if(_0x1b33c2&&_0x1b33c2[_0xcb59('0x3d')][0x0][_0xcb59('0x46')]===_0xcb59('0x47')){logger[_0xcb59('0x30')](_0xcb59('0x7a'));return{'id':_0x1b33c2[_0xcb59('0x3d')][0x0][_0xcb59('0x48')]['id']};}})['catch'](function(_0x50725f){logger[_0xcb59('0x30')](_0xcb59('0x7b'),_0x50725f[_0xcb59('0x2f')]);console['log']('err',_0x50725f);});}exports[_0xcb59('0x7c')]=function(_0xdbb029,_0x3167a3,_0x5f2e4a,_0x3c75dd,_0xae3828,_0x140620){var _0x50f780,_0x328b6b,_0x35b865;_0x140620[_0xcb59('0x7d')]=intUtil[_0xcb59('0x7e')](_0x140620[_0xcb59('0x7d')]);_0x140620['serverUrl']=intUtil[_0xcb59('0x7e')](_0x140620[_0xcb59('0x7f')]);if(_0xae3828&&_0xae3828['monitor_format']){logger[_0xcb59('0x30')](_0xcb59('0x80'),_0xcb59('0x81'));_0x3167a3[_0xcb59('0x82')]=_0x140620[_0xcb59('0x7f')]+'/api/voice/recordings/'+_0x3167a3[_0xcb59('0x83')]+'/downloads?type=uniqueid&token='+md5(_0x3167a3[_0xcb59('0x83')]);}else{_0x3167a3[_0xcb59('0x82')]='';}var _0x3069ae=_0x140620[_0xcb59('0x7d')]===_0xcb59('0x84')?'eu':'com';return getAccessToken(_0x140620)[_0xcb59('0x2a')](function(_0x4c3016){_0x35b865=_0x4c3016;return getUser(_0x35b865,_0x3069ae,_0x140620,_0x3c75dd[_0xcb59('0x35')]);})[_0xcb59('0x2a')](function(_0x125e31){_0x50f780=_0x125e31;logger['info'](_0xcb59('0x85'),_0x50f780['id']);return getEndUser(_0x35b865,_0x3069ae,_0x140620,_0x3167a3[_0xcb59('0x86')],_0x3167a3[_0xcb59('0x87')],_0x50f780,_0x5f2e4a);})[_0xcb59('0x2a')](function(_0x2f34bb){_0x328b6b=_0x2f34bb;return getCall(_0x35b865,_0x3069ae,_0x140620,_0x50f780,_0x328b6b,_0x5f2e4a,_0x3167a3,_0xcb59('0x76'));})[_0xcb59('0x2a')](function(_0x22fbd7){if(_0x22fbd7){logger[_0xcb59('0x30')]('The\x20Call\x20ID\x20is:',_0x22fbd7['id']);logger['info'](_0xcb59('0x80'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xcb59('0x88'),_0x3c75dd[_0xcb59('0x19')]),_0xcb59('0x89'),{'uri':_0xcb59('0x8a')+_0x140620[_0xcb59('0x7d')]+_0xcb59('0x8b')+_0x22fbd7['id']});}})['catch'](function(_0x54f8b8){logger['error'](_0xcb59('0x80'),JSON['stringify'](_0x54f8b8));});};exports[_0xcb59('0x73')]=function(_0x53556d,_0x3ffb0f,_0x4e3104,_0x280e47,_0x705a4f,_0xa5c17,_0xa06b3e){var _0x1d143a,_0x5e33d7,_0x34339c;_0xa5c17[_0xcb59('0x7d')]=intUtil[_0xcb59('0x7e')](_0xa5c17['host']);_0xa5c17[_0xcb59('0x7f')]=intUtil[_0xcb59('0x7e')](_0xa5c17['serverUrl']);if(_0xa06b3e&&_0xa06b3e[_0xcb59('0x8c')]&&_0xa06b3e[_0xcb59('0x8c')]!==_0xcb59('0x8d')){logger[_0xcb59('0x30')](_0xcb59('0x8e'),_0xcb59('0x81'));_0x3ffb0f[_0xcb59('0x82')]=_0xa5c17[_0xcb59('0x7f')]+_0xcb59('0x8f')+_0x3ffb0f[_0xcb59('0x83')]+'/downloads?type=uniqueid&token='+md5(_0x3ffb0f['uniqueid']);}var _0x25faef=_0xa5c17[_0xcb59('0x7d')]===_0xcb59('0x84')?'eu':'com';return getAccessToken(_0xa5c17)[_0xcb59('0x2a')](function(_0x410d5f){_0x34339c=_0x410d5f;return getUser(_0x34339c,_0x25faef,_0xa5c17,_0x280e47[_0xcb59('0x35')]);})['then'](function(_0x13a682){_0x1d143a=_0x13a682;logger[_0xcb59('0x30')](_0xcb59('0x85'),_0x1d143a['id']);return getEndUser(_0x34339c,_0x25faef,_0xa5c17,_0x3ffb0f[_0xcb59('0x90')],_0x3ffb0f[_0xcb59('0x91')],_0x1d143a,_0x4e3104);})['then'](function(_0x437564){_0x5e33d7=_0x437564;return getCall(_0x34339c,_0x25faef,_0xa5c17,_0x1d143a,_0x5e33d7,_0x4e3104,_0x3ffb0f,_0xcb59('0x92'));})[_0xcb59('0x2a')](function(_0x71e894){if(_0x71e894){logger[_0xcb59('0x30')]('The\x20Call\x20ID\x20is:',_0x71e894['id']);logger[_0xcb59('0x30')](_0xcb59('0x8e'),_0xcb59('0x93'));emit(util[_0xcb59('0x60')](_0xcb59('0x88'),_0x280e47[_0xcb59('0x19')]),_0xcb59('0x89'),{'uri':_0xcb59('0x8a')+_0xa5c17['host']+'/crm/EntityInfo.do?module=Calls&id='+_0x71e894['id']});}})[_0xcb59('0x2c')](function(_0x16995f){logger[_0xcb59('0x2d')](_0xcb59('0x8e'),JSON[_0xcb59('0xd')](_0x16995f));});};exports[_0xcb59('0x94')]=function(_0x5c59e8,_0x3aaf7a,_0x50c2b3,_0xf67f6,_0x12d7e8,_0x3c75d8){var _0x2e58c5,_0x704e3e,_0x4a26cf;_0x3c75d8[_0xcb59('0x7d')]=intUtil[_0xcb59('0x7e')](_0x3c75d8[_0xcb59('0x7d')]);_0x3c75d8[_0xcb59('0x7f')]=intUtil[_0xcb59('0x7e')](_0x3c75d8[_0xcb59('0x7f')]);if(_0x12d7e8&&_0x12d7e8[_0xcb59('0x95')]){logger[_0xcb59('0x30')]('['+_0x3aaf7a[_0xcb59('0x65')][_0xcb59('0x96')]()+']',_0xcb59('0x81'));_0x3aaf7a[_0xcb59('0x82')]=_0x3c75d8[_0xcb59('0x7f')]+'/api/voice/recordings/'+_0x3aaf7a[_0xcb59('0x83')]+_0xcb59('0x97')+md5(_0x3aaf7a['uniqueid']);}else{_0x3aaf7a[_0xcb59('0x82')]='';}var _0x42c0a9=_0x3c75d8[_0xcb59('0x7d')]===_0xcb59('0x84')?'eu':_0xcb59('0x98');return getAccessToken(_0x3c75d8)[_0xcb59('0x2a')](function(_0x12d666){_0x4a26cf=_0x12d666;return getUser(_0x4a26cf,_0x42c0a9,_0x3c75d8);})[_0xcb59('0x2a')](function(_0x56980c){_0x2e58c5=_0x56980c;logger[_0xcb59('0x30')]('The\x20User\x20ID\x20is:',_0x2e58c5['id']);return getEndUser(_0x4a26cf,_0x42c0a9,_0x3c75d8,_0x3aaf7a['calleridname'],_0x3aaf7a[_0xcb59('0x87')],_0x2e58c5,_0x50c2b3);})[_0xcb59('0x2a')](function(_0x277f6c){_0x704e3e=_0x277f6c;return getCall(_0x4a26cf,_0x42c0a9,_0x3c75d8,_0x2e58c5,_0x704e3e,_0x50c2b3,_0x3aaf7a,'Inbound');})['then'](function(_0xb75f2a){if(_0xb75f2a){logger[_0xcb59('0x30')](_0xcb59('0x99'),_0xb75f2a['id']);}})[_0xcb59('0x2c')](function(_0x4f8dd2){logger[_0xcb59('0x2d')]('['+_0x3aaf7a[_0xcb59('0x65')]['toUpperCase']()+']',JSON[_0xcb59('0xd')](_0x4f8dd2));});};
\ No newline at end of file
index e4423ef..c8c74d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcca=['error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','../../../../config/logger','trigger','exec','data2','Script','data3'];(function(_0x57f67d,_0x30f8b0){var _0x5b37ff=function(_0x91da9f){while(--_0x91da9f){_0x57f67d['push'](_0x57f67d['shift']());}};_0x5b37ff(++_0x30f8b0);}(_0xdcca,0x1e1));var _0xadcc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdcca[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xadcc('0x0'));var sh=require(_0xadcc('0x1'));var Mustache=require(_0xadcc('0x2'));var logger=require(_0xadcc('0x3'))(_0xadcc('0x4'));exports[_0xadcc('0x5')]=function(_0x34a6dc,_0x7dc4ab){var _0x38b387=_0x34a6dc[_0xadcc('0x6')]?_0x34a6dc['data2']:_0xadcc('0x7');var _0x4c8a29=_0x34a6dc[_0xadcc('0x8')]?Mustache['render'](_0x34a6dc[_0xadcc('0x8')],_0x7dc4ab):_0x7dc4ab;sh['exec'](_0x4c8a29,function(_0x16466d,_0x17f3ca,_0x3ebdad){if(_0x16466d!==0x0){logger[_0xadcc('0x9')](util[_0xadcc('0xa')](_0xadcc('0xb'),_0x38b387,_0x4c8a29,_0x16466d,_0x3ebdad));}else{logger[_0xadcc('0xc')](util[_0xadcc('0xa')](_0xadcc('0xd'),_0x38b387,_0x4c8a29,_0x17f3ca));}});};
\ No newline at end of file
+var _0x1819=['Script','data3','render','error','format','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','trigger','exec','data2'];(function(_0x4c4683,_0x241657){var _0x78ee7e=function(_0x4c9489){while(--_0x4c9489){_0x4c4683['push'](_0x4c4683['shift']());}};_0x78ee7e(++_0x241657);}(_0x1819,0xa3));var _0x9181=function(_0x4bfade,_0xb26c0e){_0x4bfade=_0x4bfade-0x0;var _0x272465=_0x1819[_0x4bfade];return _0x272465;};'use strict';var util=require(_0x9181('0x0'));var sh=require(_0x9181('0x1'));var Mustache=require('mustache');var logger=require('../../../../config/logger')(_0x9181('0x2'));exports[_0x9181('0x3')]=function(_0x49f1ba,_0x5a9866){var _0x277704=_0x49f1ba[_0x9181('0x4')]?_0x49f1ba[_0x9181('0x4')]:_0x9181('0x5');var _0x46736f=_0x49f1ba[_0x9181('0x6')]?Mustache[_0x9181('0x7')](_0x49f1ba[_0x9181('0x6')],_0x5a9866):_0x5a9866;sh['exec'](_0x46736f,function(_0x4a568c,_0x1f9af5,_0x298a0d){if(_0x4a568c!==0x0){logger[_0x9181('0x8')](util[_0x9181('0x9')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x277704,_0x46736f,_0x4a568c,_0x298a0d));}else{logger[_0x9181('0xa')](util[_0x9181('0x9')](_0x9181('0xb'),_0x277704,_0x46736f,_0x1f9af5));}});};
\ No newline at end of file
index 11cc72e..c6f28f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb456=['parse','error','data1','POST','PUT','data7','body','stack','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil','%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','name','message','request-promise','util','lodash','mustache','../../../../config/logger','exec','toUpperCase','render','data2','data5','number','headers','data6'];(function(_0x2cea34,_0x19360d){var _0x2d0f71=function(_0x4c70a3){while(--_0x4c70a3){_0x2cea34['push'](_0x2cea34['shift']());}};_0x2d0f71(++_0x19360d);}(_0xb456,0x1f1));var _0x6b45=function(_0x4f9847,_0x136945){_0x4f9847=_0x4f9847-0x0;var _0x1f4fc4=_0xb456[_0x4f9847];return _0x1f4fc4;};'use strict';var rp=require(_0x6b45('0x0'));var util=require(_0x6b45('0x1'));var _=require(_0x6b45('0x2'));var Mustache=require(_0x6b45('0x3'));var logger=require(_0x6b45('0x4'))('trigger');exports[_0x6b45('0x5')]=function(_0x542077,_0x58c414){var _0x552460,_0x3275cd;var _0x33e917={'method':_0x542077['data1'][_0x6b45('0x6')](),'uri':Mustache[_0x6b45('0x7')](_0x542077[_0x6b45('0x8')],_0x58c414),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x542077[_0x6b45('0x9')])===_0x6b45('0xa')&&parseInt(_0x542077['data5'])>=0x1&&parseInt(_0x542077[_0x6b45('0x9')])<=0xa?parseInt(_0x542077[_0x6b45('0x9')])*0x3e8:0x5*0x3e8};try{_0x33e917[_0x6b45('0xb')]=_0x542077[_0x6b45('0xc')]?JSON[_0x6b45('0xd')](Mustache[_0x6b45('0x7')](_0x542077['data6'],_0x58c414)):{};}catch(_0x4401d4){logger[_0x6b45('0xe')](_0x4401d4['stack']);}switch(_0x542077[_0x6b45('0xf')][_0x6b45('0x6')]()){case'GET':case'DELETE':_0x552460=null;_0x33e917['qs']=_0x58c414;break;case _0x6b45('0x10'):case _0x6b45('0x11'):if(_0x542077[_0x6b45('0x12')]){try{_0x552460=JSON['parse'](Mustache[_0x6b45('0x7')](_0x542077[_0x6b45('0x12')],_0x58c414));_0x33e917[_0x6b45('0x13')]=_0x552460;}catch(_0x39edb7){logger[_0x6b45('0xe')](_0x39edb7[_0x6b45('0x14')]);logger['error'](_0x6b45('0x15'));}}else{_0x552460=_0x58c414;_0x33e917['body']=_0x552460;}break;}logger[_0x6b45('0x16')](util[_0x6b45('0x17')](_0x6b45('0x18'),_0x542077[_0x6b45('0xf')],_0x542077[_0x6b45('0x8')],JSON[_0x6b45('0x19')](_0x33e917)));rp(_0x33e917)[_0x6b45('0x1a')](function(_0x3755ad){_0x552460=!_[_0x6b45('0x1b')](_0x552460)?',\x20request\x20body:\x20'+_0x552460:'';_0x3275cd=typeof _0x3755ad[_0x6b45('0x13')]==='object'?JSON['stringify'](_0x3755ad['body']):_0x3755ad['body'];logger[_0x6b45('0x16')](util['format'](_0x6b45('0x1c'),_0x542077['data1'],_0x542077[_0x6b45('0x8')],_0x3755ad[_0x6b45('0x1d')],_0x3275cd));})[_0x6b45('0x1e')](function(_0x21959e){logger[_0x6b45('0xe')](util[_0x6b45('0x17')](_0x6b45('0x1f'),_0x542077['data1'],_0x542077[_0x6b45('0x8')],_0x21959e[_0x6b45('0x1d')],_0x21959e[_0x6b45('0x20')],_0x21959e[_0x6b45('0x21')]));});};
\ No newline at end of file
+var _0xe20b=['body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then',',\x20request\x20body:\x20','object','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','statusCode','name','util','lodash','mustache','../../../../config/logger','exec','toUpperCase','render','data2','number','data5','headers','data6','parse','error','stack','data1','GET','DELETE','POST','data7','body'];(function(_0xb32f8e,_0x2e3822){var _0x51b87a=function(_0x5ba1e2){while(--_0x5ba1e2){_0xb32f8e['push'](_0xb32f8e['shift']());}};_0x51b87a(++_0x2e3822);}(_0xe20b,0x6f));var _0xbe20=function(_0x4720c5,_0x480db1){_0x4720c5=_0x4720c5-0x0;var _0x393af1=_0xe20b[_0x4720c5];return _0x393af1;};'use strict';var rp=require('request-promise');var util=require(_0xbe20('0x0'));var _=require(_0xbe20('0x1'));var Mustache=require(_0xbe20('0x2'));var logger=require(_0xbe20('0x3'))('trigger');exports[_0xbe20('0x4')]=function(_0x397ba8,_0x267831){var _0x4941dc,_0x5e695a;var _0x2c1e35={'method':_0x397ba8['data1'][_0xbe20('0x5')](),'uri':Mustache[_0xbe20('0x6')](_0x397ba8[_0xbe20('0x7')],_0x267831),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x397ba8['data5'])===_0xbe20('0x8')&&parseInt(_0x397ba8[_0xbe20('0x9')])>=0x1&&parseInt(_0x397ba8['data5'])<=0xa?parseInt(_0x397ba8[_0xbe20('0x9')])*0x3e8:0x5*0x3e8};try{_0x2c1e35[_0xbe20('0xa')]=_0x397ba8[_0xbe20('0xb')]?JSON[_0xbe20('0xc')](Mustache[_0xbe20('0x6')](_0x397ba8[_0xbe20('0xb')],_0x267831)):{};}catch(_0x68e971){logger[_0xbe20('0xd')](_0x68e971[_0xbe20('0xe')]);}switch(_0x397ba8[_0xbe20('0xf')][_0xbe20('0x5')]()){case _0xbe20('0x10'):case _0xbe20('0x11'):_0x4941dc=null;_0x2c1e35['qs']=_0x267831;break;case _0xbe20('0x12'):case'PUT':if(_0x397ba8[_0xbe20('0x13')]){try{_0x4941dc=JSON[_0xbe20('0xc')](Mustache['render'](_0x397ba8[_0xbe20('0x13')],_0x267831));_0x2c1e35[_0xbe20('0x14')]=_0x4941dc;}catch(_0x306a0d){logger[_0xbe20('0xd')](_0x306a0d['stack']);logger[_0xbe20('0xd')](_0xbe20('0x15'));}}else{_0x4941dc=_0x267831;_0x2c1e35[_0xbe20('0x14')]=_0x4941dc;}break;}logger[_0xbe20('0x16')](util[_0xbe20('0x17')](_0xbe20('0x18'),_0x397ba8['data1'],_0x397ba8[_0xbe20('0x7')],JSON[_0xbe20('0x19')](_0x2c1e35)));rp(_0x2c1e35)[_0xbe20('0x1a')](function(_0x1fe2cc){_0x4941dc=!_['isNil'](_0x4941dc)?_0xbe20('0x1b')+_0x4941dc:'';_0x5e695a=typeof _0x1fe2cc[_0xbe20('0x14')]===_0xbe20('0x1c')?JSON[_0xbe20('0x19')](_0x1fe2cc[_0xbe20('0x14')]):_0x1fe2cc[_0xbe20('0x14')];logger[_0xbe20('0x16')](util[_0xbe20('0x17')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x397ba8[_0xbe20('0xf')],_0x397ba8[_0xbe20('0x7')],_0x1fe2cc['statusCode'],_0x5e695a));})[_0xbe20('0x1d')](function(_0x53fd24){logger[_0xbe20('0xd')](util['format'](_0xbe20('0x1e'),_0x397ba8[_0xbe20('0xf')],_0x397ba8[_0xbe20('0x7')],_0x53fd24[_0xbe20('0x1f')],_0x53fd24[_0xbe20('0x20')],_0x53fd24['message']));});};
\ No newline at end of file
index 2919ed3..a73be06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa021=['http','Request','then','rpc','error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger','routing'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xa021,0x1d0));var _0x1a02=function(_0x23a7aa,_0x51647e){_0x23a7aa=_0x23a7aa-0x0;var _0x5a6172=_0xa021[_0x23a7aa];return _0x5a6172;};'use strict';var jayson=require(_0x1a02('0x0'));var BPromise=require(_0x1a02('0x1'));var logger=require(_0x1a02('0x2'))(_0x1a02('0x3'));var client=jayson['client'][_0x1a02('0x4')]({'port':0x2329});client[_0x1a02('0x5')]=function(_0x10d5bc,_0x512b88){return new BPromise(function(_0x3b0176,_0x2e30c4){return client['request'](_0x10d5bc,_0x512b88)[_0x1a02('0x6')](function(_0x4d551d){logger['debug'](_0x1a02('0x7'),'routing',_0x10d5bc,_0x512b88,_0x4d551d);if(_0x4d551d[_0x1a02('0x8')]){logger['error'](_0x1a02('0x7'),_0x1a02('0x3'),_0x10d5bc,_0x4d551d[_0x1a02('0x8')]['message'],_0x512b88);return _0x2e30c4(_0x4d551d[_0x1a02('0x8')][_0x1a02('0x9')]);}else{return _0x3b0176(_0x4d551d[_0x1a02('0xa')]);}})[_0x1a02('0xb')](function(_0x2c6304){logger[_0x1a02('0x8')](_0x1a02('0x7'),_0x1a02('0x3'),_0x10d5bc,_0x2c6304,_0x512b88);return _0x2e30c4(_0x2c6304);});});};module[_0x1a02('0xc')]=client;
\ No newline at end of file
+var _0x12fd=['message','result','rpc','bluebird','../../config/logger','routing','client','http','then','debug','error'];(function(_0x1b5dfe,_0x5a50c5){var _0x239a51=function(_0x149df1){while(--_0x149df1){_0x1b5dfe['push'](_0x1b5dfe['shift']());}};_0x239a51(++_0x5a50c5);}(_0x12fd,0x1bb));var _0xd12f=function(_0x274eee,_0x37fdee){_0x274eee=_0x274eee-0x0;var _0x59da14=_0x12fd[_0x274eee];return _0x59da14;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xd12f('0x0'));var logger=require(_0xd12f('0x1'))(_0xd12f('0x2'));var client=jayson[_0xd12f('0x3')][_0xd12f('0x4')]({'port':0x2329});client['Request']=function(_0x23e702,_0x581298){return new BPromise(function(_0x1403ec,_0x5618f1){return client['request'](_0x23e702,_0x581298)[_0xd12f('0x5')](function(_0xec7550){logger[_0xd12f('0x6')]('rpc',_0xd12f('0x2'),_0x23e702,_0x581298,_0xec7550);if(_0xec7550[_0xd12f('0x7')]){logger[_0xd12f('0x7')]('rpc',_0xd12f('0x2'),_0x23e702,_0xec7550['error'][_0xd12f('0x8')],_0x581298);return _0x5618f1(_0xec7550[_0xd12f('0x7')][_0xd12f('0x8')]);}else{return _0x1403ec(_0xec7550[_0xd12f('0x9')]);}})['catch'](function(_0x4281f7){logger['error'](_0xd12f('0xa'),_0xd12f('0x2'),_0x23e702,_0x4281f7,_0x581298);return _0x5618f1(_0x4281f7);});});};module['exports']=client;
\ No newline at end of file
index a604431..9bd2485 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8814=['then','getMailAccounts','initMailAccounts','refresh','mailAccounts','getSettings','loginMailFrequency','log','bluebird','./lib/email','./rpc/setting','resolve'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x8814,0x1b8));var _0x4881=function(_0xa3463d,_0x32f8da){_0xa3463d=_0xa3463d-0x0;var _0x50fd67=_0x8814[_0xa3463d];return _0x50fd67;};'use strict';var BPromise=require(_0x4881('0x0'));var server=require('./server');var Realtime=require('./realtime');var EmailChannel=require(_0x4881('0x1'));var mailAccount=require('./rpc/mailAccount');var setting=require(_0x4881('0x2'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0x4881('0x3')]()[_0x4881('0x4')](mailAccount[_0x4881('0x5')]())['then'](realtime[_0x4881('0x6')]())[_0x4881('0x4')](function(){email[_0x4881('0x7')](realtime[_0x4881('0x8')]);return realtime;});}function main(){return server['listen'](realtime,email)[_0x4881('0x4')](function(){return initRealtime();})['then'](function(){return setting[_0x4881('0x9')]();})[_0x4881('0x4')](function(_0x1c491e){return setInterval(initRealtime,_0x1c491e[_0x4881('0xa')]*0x3e8);})['catch'](function(_0xda4edd){console[_0x4881('0xb')](_0xda4edd);});}main();
\ No newline at end of file
+var _0x855d=['mailAccounts','getSettings','catch','log','bluebird','./server','./lib/email','./rpc/mailAccount','./rpc/setting','resolve','then','getMailAccounts','initMailAccounts','refresh'];(function(_0x5732d6,_0x2c9500){var _0x3a1a0f=function(_0x5ae05e){while(--_0x5ae05e){_0x5732d6['push'](_0x5732d6['shift']());}};_0x3a1a0f(++_0x2c9500);}(_0x855d,0x1d2));var _0xd855=function(_0xe55532,_0x484c3e){_0xe55532=_0xe55532-0x0;var _0x5387da=_0x855d[_0xe55532];return _0x5387da;};'use strict';var BPromise=require(_0xd855('0x0'));var server=require(_0xd855('0x1'));var Realtime=require('./realtime');var EmailChannel=require(_0xd855('0x2'));var mailAccount=require(_0xd855('0x3'));var setting=require(_0xd855('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xd855('0x5')]()[_0xd855('0x6')](mailAccount[_0xd855('0x7')]())[_0xd855('0x6')](realtime[_0xd855('0x8')]())[_0xd855('0x6')](function(){email[_0xd855('0x9')](realtime[_0xd855('0xa')]);return realtime;});}function main(){return server['listen'](realtime,email)[_0xd855('0x6')](function(){return initRealtime();})[_0xd855('0x6')](function(){return setting[_0xd855('0xb')]();})[_0xd855('0x6')](function(_0x472b38){return setInterval(initRealtime,_0x472b38['loginMailFrequency']*0x3e8);})[_0xd855('0xc')](function(_0x58e14f){console[_0xd855('0xd')](_0x58e14f);});}main();
\ No newline at end of file
index d284cd0..043b1c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x035e=['status','connected','messages','total','emit','handleImapEmail','firstName','lastName','then','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','Smtp','verify','verified','exports','lodash','md5','../../../config/environment','../../../config/logger','email','redis','localhost','socket.io-emitter','./imap','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','name','key','active','Imap','messageStatus','isNil','stringify','mailAccount:update','refresh','hasOwnProperty','handleImapBox','bind','end','handleImapEnd','error','handleImapError','disabled'];(function(_0x1667d5,_0x12e413){var _0x1dd537=function(_0x42e04e){while(--_0x42e04e){_0x1667d5['push'](_0x1667d5['shift']());}};_0x1dd537(++_0x12e413);}(_0x035e,0x16f));var _0xe035=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x035e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe035('0x0'));var moment=require('moment');var BPromise=require('bluebird');var md5=require(_0xe035('0x1'));var Redis=require('ioredis');var config=require(_0xe035('0x2'));var logger=require(_0xe035('0x3'))(_0xe035('0x4'));config[_0xe035('0x5')]=_['defaults'](config['redis'],{'host':_0xe035('0x6'),'port':0x18eb});var io=require(_0xe035('0x7'))(new Redis(config[_0xe035('0x5')]));var EmailImap=require(_0xe035('0x8'));var EmailSmtp=require('./smtp');var mailAccount=require(_0xe035('0x9'));var md5Accounts={};function EmailChannel(_0x28ae47){logger[_0xe035('0xa')](_0xe035('0xb'));this[_0xe035('0xc')]=_0x28ae47[_0xe035('0xc')];this[_0xe035('0xd')]={};this[_0xe035('0xe')]=new EmailSmtp();}EmailChannel[_0xe035('0xf')]['emit']=function(_0x3f866d){var _0x5eaaf2=this[_0xe035('0xc')][_0x3f866d];var _0x5e85b2={'id':_0x5eaaf2['id'],'name':_0x5eaaf2[_0xe035('0x10')],'key':_0x5eaaf2[_0xe035('0x11')],'active':_0x5eaaf2[_0xe035('0x12')],'Imap':{'status':_0x5eaaf2[_0xe035('0x13')]['status'],'messageStatus':_0x5eaaf2[_0xe035('0x13')][_0xe035('0x14')],'total':_0x5eaaf2['Imap']['total']}};if(_[_0xe035('0x15')](md5Accounts[_0x3f866d])){md5Accounts[_0x3f866d]={};}var _0x19b54c=md5(JSON[_0xe035('0x16')](_0x5e85b2));if(md5Accounts[_0x3f866d][_0xe035('0x1')]!==_0x19b54c){md5Accounts[_0x3f866d]['md5']=_0x19b54c;io['emit'](_0xe035('0x17'),_0x5e85b2);}};EmailChannel['prototype'][_0xe035('0x18')]=function(_0x3d95f7){for(var _0x26b1cd in _0x3d95f7){if(_0x3d95f7[_0xe035('0x19')](_0x26b1cd)){if(_0x3d95f7[_0x26b1cd]['Imap']&&_0x3d95f7[_0x26b1cd][_0xe035('0x12')]){var _0xd4d7db=_0x3d95f7[_0x26b1cd]['Imap'];if(!this[_0xe035('0xd')][_0xe035('0x19')](_0xd4d7db['id'])){this[_0xe035('0xd')][_0xd4d7db['id']]=new EmailImap(_0xd4d7db,_0x3d95f7[_0x26b1cd][_0xe035('0x4')]);this[_0xe035('0xd')][_0xd4d7db['id']]['on']('box',this[_0xe035('0x1a')][_0xe035('0x1b')](this,_0x26b1cd));this['imapAccounts'][_0xd4d7db['id']]['on'](_0xe035('0x4'),this['handleImapEmail'][_0xe035('0x1b')](this,_0x26b1cd));this[_0xe035('0xd')][_0xd4d7db['id']]['on'](_0xe035('0x1c'),this[_0xe035('0x1d')][_0xe035('0x1b')](this,_0x26b1cd));this[_0xe035('0xd')][_0xd4d7db['id']]['on'](_0xe035('0x1e'),this[_0xe035('0x1f')]['bind'](this,_0x26b1cd));}}else{if(_[_0xe035('0x15')](this[_0xe035('0xc')][_0x26b1cd]['Imap'])){this[_0xe035('0xc')][_0x26b1cd][_0xe035('0x13')]={};}this[_0xe035('0xc')][_0x26b1cd][_0xe035('0x13')]['status']=_0xe035('0x20');this[_0xe035('0xc')][_0x26b1cd][_0xe035('0x13')][_0xe035('0x14')]='';this['emit'](_0x26b1cd);}}}};EmailChannel[_0xe035('0xf')][_0xe035('0x1a')]=function(_0x12570f,_0x2e200b){if(this['mailAccounts'][_0x12570f]){this['mailAccounts'][_0x12570f]['Imap'][_0xe035('0x21')]=_0xe035('0x22');this['mailAccounts'][_0x12570f][_0xe035('0x13')][_0xe035('0x14')]=_0x2e200b[_0xe035('0x10')];if(_0x2e200b[_0xe035('0x23')]){this[_0xe035('0xc')][_0x12570f][_0xe035('0x13')][_0xe035('0x24')]=_0x2e200b[_0xe035('0x23')][_0xe035('0x24')];}return this[_0xe035('0x25')](_0x12570f);}};EmailChannel[_0xe035('0xf')][_0xe035('0x26')]=function(_0x4bccce,_0x1b4307){logger[_0xe035('0xa')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x1b4307[_0xe035('0x27')],_0x1b4307[_0xe035('0x28')],_0x1b4307['from'],_0x4bccce);if(this[_0xe035('0xc')][_0x4bccce]){return mailAccount['notify'](_0x4bccce,_0x1b4307)[_0xe035('0x29')](function(_0x2a7390){if(_0x2a7390){logger['info']('Mail\x20accepted\x20from\x20routing');}})[_0xe035('0x2a')](function(_0x24c40a){logger[_0xe035('0x1e')](_0xe035('0x2b'),JSON[_0xe035('0x16')](_0x24c40a));});}};EmailChannel[_0xe035('0xf')][_0xe035('0x1d')]=function(_0x9180ad){if(this[_0xe035('0xc')][_0x9180ad]&&this[_0xe035('0xc')][_0x9180ad][_0xe035('0x13')]){if(this['imapAccounts'][this[_0xe035('0xc')][_0x9180ad]['Imap']['id']]){delete this['imapAccounts'][this[_0xe035('0xc')][_0x9180ad][_0xe035('0x13')]['id']];}this['mailAccounts'][_0x9180ad][_0xe035('0x13')][_0xe035('0x2c')]=moment();this['emit'](_0x9180ad);}};EmailChannel['prototype']['handleImapError']=function(_0x28f5e3,_0x336f3e){if(this[_0xe035('0xc')][_0x28f5e3]){this[_0xe035('0xc')][_0x28f5e3]['Imap']['status']=_0xe035('0x1e');this[_0xe035('0xc')][_0x28f5e3]['Imap'][_0xe035('0x14')]=_0x336f3e;return this[_0xe035('0x25')](_0x28f5e3);}};EmailChannel['prototype'][_0xe035('0x2d')]=function(_0x216f9a,_0x57a784){return this[_0xe035('0xe')]['send'](_0x216f9a,_0x57a784);};EmailChannel[_0xe035('0xf')]['verifySmtp']=function(_0x29918f){var _0x584cbe=this;if(this[_0xe035('0xc')][_0x29918f['id']]){if(_[_0xe035('0x15')](this['mailAccounts'][_0x29918f['id']][_0xe035('0x2e')])){this[_0xe035('0xc')][_0x29918f['id']][_0xe035('0x2e')]={};}this['mailAccounts'][_0x29918f['id']][_0xe035('0x2e')]['lastSync']=moment();return new BPromise(function(_0xae9c62,_0x5e7285){return _0x584cbe['smtp'][_0xe035('0x2f')](_0x29918f)[_0xe035('0x29')](function(_0x1738aa){_0x584cbe[_0xe035('0xc')][_0x29918f['id']][_0xe035('0x2e')]['status']=_0xe035('0x30');_0x584cbe[_0xe035('0xc')][_0x29918f['id']][_0xe035('0x2e')][_0xe035('0x14')]='';_0x584cbe[_0xe035('0x25')](_0x29918f['id']);_0xae9c62(_0x1738aa);})[_0xe035('0x2a')](function(_0x56d00e){_0x584cbe[_0xe035('0xc')][_0x29918f['id']]['Smtp'][_0xe035('0x21')]='error';_0x584cbe['mailAccounts'][_0x29918f['id']][_0xe035('0x2e')][_0xe035('0x14')]=_0x56d00e;_0x584cbe[_0xe035('0x25')](_0x29918f['id']);_0x5e7285(_0x56d00e);});});}return this[_0xe035('0xe')][_0xe035('0x2f')](_0x29918f);};module[_0xe035('0x31')]=EmailChannel;
\ No newline at end of file
+var _0x12da=['stringify','handleImapEnd','lastSync','sendMail','send','verifySmtp','Smtp','verify','verified','exports','lodash','moment','bluebird','ioredis','../../../config/environment','../../../config/logger','email','redis','localhost','socket.io-emitter','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','key','status','Imap','total','isNil','md5','mailAccount:update','hasOwnProperty','bind','handleImapEmail','handleImapError','disabled','messageStatus','handleImapBox','connected','name','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','error','Mail\x20not\x20accepted\x20from\x20routing\x20%s'];(function(_0x55409d,_0xad6432){var _0x4b2c0e=function(_0x168b82){while(--_0x168b82){_0x55409d['push'](_0x55409d['shift']());}};_0x4b2c0e(++_0xad6432);}(_0x12da,0x1c2));var _0xa12d=function(_0x31b408,_0x327c59){_0x31b408=_0x31b408-0x0;var _0x5a07ca=_0x12da[_0x31b408];return _0x5a07ca;};'use strict';var _=require(_0xa12d('0x0'));var moment=require(_0xa12d('0x1'));var BPromise=require(_0xa12d('0x2'));var md5=require('md5');var Redis=require(_0xa12d('0x3'));var config=require(_0xa12d('0x4'));var logger=require(_0xa12d('0x5'))(_0xa12d('0x6'));config['redis']=_['defaults'](config[_0xa12d('0x7')],{'host':_0xa12d('0x8'),'port':0x18eb});var io=require(_0xa12d('0x9'))(new Redis(config['redis']));var EmailImap=require('./imap');var EmailSmtp=require(_0xa12d('0xa'));var mailAccount=require(_0xa12d('0xb'));var md5Accounts={};function EmailChannel(_0x61daa4){logger[_0xa12d('0xc')](_0xa12d('0xd'));this[_0xa12d('0xe')]=_0x61daa4[_0xa12d('0xe')];this[_0xa12d('0xf')]={};this[_0xa12d('0x10')]=new EmailSmtp();}EmailChannel[_0xa12d('0x11')][_0xa12d('0x12')]=function(_0x197fad){var _0xb7fad3=this[_0xa12d('0xe')][_0x197fad];var _0x195fb3={'id':_0xb7fad3['id'],'name':_0xb7fad3['name'],'key':_0xb7fad3[_0xa12d('0x13')],'active':_0xb7fad3['active'],'Imap':{'status':_0xb7fad3['Imap'][_0xa12d('0x14')],'messageStatus':_0xb7fad3[_0xa12d('0x15')]['messageStatus'],'total':_0xb7fad3[_0xa12d('0x15')][_0xa12d('0x16')]}};if(_[_0xa12d('0x17')](md5Accounts[_0x197fad])){md5Accounts[_0x197fad]={};}var _0x2897db=md5(JSON['stringify'](_0x195fb3));if(md5Accounts[_0x197fad][_0xa12d('0x18')]!==_0x2897db){md5Accounts[_0x197fad][_0xa12d('0x18')]=_0x2897db;io[_0xa12d('0x12')](_0xa12d('0x19'),_0x195fb3);}};EmailChannel[_0xa12d('0x11')]['refresh']=function(_0x30ebe5){for(var _0x3201e2 in _0x30ebe5){if(_0x30ebe5[_0xa12d('0x1a')](_0x3201e2)){if(_0x30ebe5[_0x3201e2][_0xa12d('0x15')]&&_0x30ebe5[_0x3201e2]['active']){var _0x466415=_0x30ebe5[_0x3201e2][_0xa12d('0x15')];if(!this[_0xa12d('0xf')]['hasOwnProperty'](_0x466415['id'])){this[_0xa12d('0xf')][_0x466415['id']]=new EmailImap(_0x466415,_0x30ebe5[_0x3201e2]['email']);this[_0xa12d('0xf')][_0x466415['id']]['on']('box',this['handleImapBox'][_0xa12d('0x1b')](this,_0x3201e2));this[_0xa12d('0xf')][_0x466415['id']]['on']('email',this[_0xa12d('0x1c')][_0xa12d('0x1b')](this,_0x3201e2));this['imapAccounts'][_0x466415['id']]['on']('end',this['handleImapEnd'][_0xa12d('0x1b')](this,_0x3201e2));this[_0xa12d('0xf')][_0x466415['id']]['on']('error',this[_0xa12d('0x1d')]['bind'](this,_0x3201e2));}}else{if(_['isNil'](this[_0xa12d('0xe')][_0x3201e2][_0xa12d('0x15')])){this['mailAccounts'][_0x3201e2][_0xa12d('0x15')]={};}this[_0xa12d('0xe')][_0x3201e2][_0xa12d('0x15')]['status']=_0xa12d('0x1e');this[_0xa12d('0xe')][_0x3201e2]['Imap'][_0xa12d('0x1f')]='';this[_0xa12d('0x12')](_0x3201e2);}}}};EmailChannel[_0xa12d('0x11')][_0xa12d('0x20')]=function(_0x4e937a,_0x32a745){if(this[_0xa12d('0xe')][_0x4e937a]){this['mailAccounts'][_0x4e937a][_0xa12d('0x15')][_0xa12d('0x14')]=_0xa12d('0x21');this[_0xa12d('0xe')][_0x4e937a][_0xa12d('0x15')][_0xa12d('0x1f')]=_0x32a745[_0xa12d('0x22')];if(_0x32a745[_0xa12d('0x23')]){this[_0xa12d('0xe')][_0x4e937a][_0xa12d('0x15')]['total']=_0x32a745['messages'][_0xa12d('0x16')];}return this[_0xa12d('0x12')](_0x4e937a);}};EmailChannel[_0xa12d('0x11')]['handleImapEmail']=function(_0x1e671a,_0x3c2670){logger[_0xa12d('0xc')](_0xa12d('0x24'),_0x3c2670[_0xa12d('0x25')],_0x3c2670['lastName'],_0x3c2670[_0xa12d('0x26')],_0x1e671a);if(this[_0xa12d('0xe')][_0x1e671a]){return mailAccount[_0xa12d('0x27')](_0x1e671a,_0x3c2670)[_0xa12d('0x28')](function(_0x5ae076){if(_0x5ae076){logger[_0xa12d('0xc')](_0xa12d('0x29'));}})[_0xa12d('0x2a')](function(_0x5947a7){logger[_0xa12d('0x2b')](_0xa12d('0x2c'),JSON[_0xa12d('0x2d')](_0x5947a7));});}};EmailChannel[_0xa12d('0x11')][_0xa12d('0x2e')]=function(_0x1e9c78){if(this[_0xa12d('0xe')][_0x1e9c78]&&this[_0xa12d('0xe')][_0x1e9c78][_0xa12d('0x15')]){if(this[_0xa12d('0xf')][this[_0xa12d('0xe')][_0x1e9c78][_0xa12d('0x15')]['id']]){delete this[_0xa12d('0xf')][this[_0xa12d('0xe')][_0x1e9c78][_0xa12d('0x15')]['id']];}this['mailAccounts'][_0x1e9c78][_0xa12d('0x15')][_0xa12d('0x2f')]=moment();this[_0xa12d('0x12')](_0x1e9c78);}};EmailChannel[_0xa12d('0x11')][_0xa12d('0x1d')]=function(_0x5dca49,_0x428f71){if(this[_0xa12d('0xe')][_0x5dca49]){this['mailAccounts'][_0x5dca49][_0xa12d('0x15')][_0xa12d('0x14')]=_0xa12d('0x2b');this['mailAccounts'][_0x5dca49]['Imap'][_0xa12d('0x1f')]=_0x428f71;return this['emit'](_0x5dca49);}};EmailChannel[_0xa12d('0x11')][_0xa12d('0x30')]=function(_0x424a1a,_0x13d7b3){return this[_0xa12d('0x10')][_0xa12d('0x31')](_0x424a1a,_0x13d7b3);};EmailChannel[_0xa12d('0x11')][_0xa12d('0x32')]=function(_0xc0955){var _0x3bf574=this;if(this[_0xa12d('0xe')][_0xc0955['id']]){if(_[_0xa12d('0x17')](this[_0xa12d('0xe')][_0xc0955['id']][_0xa12d('0x33')])){this[_0xa12d('0xe')][_0xc0955['id']][_0xa12d('0x33')]={};}this[_0xa12d('0xe')][_0xc0955['id']][_0xa12d('0x33')][_0xa12d('0x2f')]=moment();return new BPromise(function(_0x7cede,_0x1e75d5){return _0x3bf574[_0xa12d('0x10')][_0xa12d('0x34')](_0xc0955)['then'](function(_0x36725c){_0x3bf574[_0xa12d('0xe')][_0xc0955['id']]['Smtp']['status']=_0xa12d('0x35');_0x3bf574[_0xa12d('0xe')][_0xc0955['id']][_0xa12d('0x33')][_0xa12d('0x1f')]='';_0x3bf574[_0xa12d('0x12')](_0xc0955['id']);_0x7cede(_0x36725c);})['catch'](function(_0x208164){_0x3bf574['mailAccounts'][_0xc0955['id']][_0xa12d('0x33')][_0xa12d('0x14')]=_0xa12d('0x2b');_0x3bf574[_0xa12d('0xe')][_0xc0955['id']][_0xa12d('0x33')][_0xa12d('0x1f')]=_0x208164;_0x3bf574['emit'](_0xc0955['id']);_0x1e75d5(_0x208164);});});}return this[_0xa12d('0x10')][_0xa12d('0x34')](_0xc0955);};module[_0xa12d('0x36')]=EmailChannel;
\ No newline at end of file
index 988e30f..4c141fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c4f=['stringify','textCode','hasOwnProperty','upperFirst','path','util','imap','randomstring','mailparser','iconv','Iconv','events','./utils','../../../config/logger','email','mailbox','account','getAccount','once','ready','handleReady','bind','handleEnd','error','handleError','inherits','connTimeout','authTimeout','isNil','service','authentication','user','host','port','tls','autotls','required','password','getHost','anonymous@xcally.com','openBox','handleOpenBox','prototype','emit','box','readUnseen','handleCloseBox','end','search','UNSEEN','handleReadUnseen','length','fetch','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleSimpleParser'];(function(_0x3c8909,_0x25314e){var _0x3d1373=function(_0x9adeb1){while(--_0x9adeb1){_0x3c8909['push'](_0x3c8909['shift']());}};_0x3d1373(++_0x25314e);}(_0x1c4f,0x1f4));var _0xf1c4=function(_0x3e3fb1,_0x5cfc91){_0x3e3fb1=_0x3e3fb1-0x0;var _0x43d970=_0x1c4f[_0x3e3fb1];return _0x43d970;};'use strict';var fs=require('fs');var path=require(_0xf1c4('0x0'));var util=require(_0xf1c4('0x1'));var Imap=require(_0xf1c4('0x2'));var _=require('lodash');var rs=require(_0xf1c4('0x3'));var simpleParser=require(_0xf1c4('0x4'))['simpleParser'];var Iconv=require(_0xf1c4('0x5'))[_0xf1c4('0x6')];var EventEmitter=require(_0xf1c4('0x7'))['EventEmitter'];var utils=require(_0xf1c4('0x8'));var logger=require(_0xf1c4('0x9'))(_0xf1c4('0xa'));function EmailImap(_0x79689d,_0x3dadae){this[_0xf1c4('0xb')]='INBOX';this[_0xf1c4('0xc')]=this[_0xf1c4('0xd')](_0x79689d,_0x3dadae);this[_0xf1c4('0x2')]=new Imap(this['account']);this[_0xf1c4('0x2')][_0xf1c4('0xe')](_0xf1c4('0xf'),this[_0xf1c4('0x10')][_0xf1c4('0x11')](this));this[_0xf1c4('0x2')]['once']('end',this[_0xf1c4('0x12')][_0xf1c4('0x11')](this));this[_0xf1c4('0x2')]['on'](_0xf1c4('0x13'),this[_0xf1c4('0x14')][_0xf1c4('0x11')](this));this[_0xf1c4('0x2')]['connect']();}util[_0xf1c4('0x15')](EmailImap,EventEmitter);EmailImap['prototype'][_0xf1c4('0xd')]=function(_0x3c211b,_0x11cb27){var _0x1f1122={'connTimeout':_0x3c211b[_0xf1c4('0x16')]?_0x3c211b[_0xf1c4('0x16')]*0x3e8:0x2710,'authTimeout':_0x3c211b[_0xf1c4('0x17')]?_0x3c211b[_0xf1c4('0x17')]*0x3e8:0x1388};if(_[_0xf1c4('0x18')](_0x3c211b[_0xf1c4('0x19')])){if(_0x3c211b[_0xf1c4('0x1a')]){_0x1f1122['user']=_0x3c211b[_0xf1c4('0x1b')];_0x1f1122['password']=_0x3c211b['password'];}_0x1f1122[_0xf1c4('0x1c')]=_0x3c211b[_0xf1c4('0x1c')];_0x1f1122['port']=_0x3c211b[_0xf1c4('0x1d')]||0x3e1;if(_0x3c211b[_0xf1c4('0x1e')]){_0x1f1122[_0xf1c4('0x1e')]=!![];}else{_0x1f1122[_0xf1c4('0x1e')]=![];_0x1f1122[_0xf1c4('0x1f')]=_0xf1c4('0x20');}}else{_0x1f1122['user']=_0x3c211b['user'];_0x1f1122[_0xf1c4('0x21')]=_0x3c211b[_0xf1c4('0x21')];_0x1f1122[_0xf1c4('0x1c')]=utils[_0xf1c4('0x22')](_0x3c211b[_0xf1c4('0x19')]);_0x1f1122[_0xf1c4('0x1d')]=0x3e1;_0x1f1122[_0xf1c4('0x1e')]=!![];}_0x1f1122['email']=_0x11cb27||_0x3c211b['user']||_0xf1c4('0x23');return _0x1f1122;};EmailImap['prototype']['handleReady']=function(){this[_0xf1c4('0x2')][_0xf1c4('0x24')](this['mailbox'],![],this[_0xf1c4('0x25')]['bind'](this));};EmailImap[_0xf1c4('0x26')]['handleOpenBox']=function(_0x1bc59e,_0x286028){if(_0x1bc59e){this[_0xf1c4('0x14')](_0x1bc59e,!![]);}else{this[_0xf1c4('0x27')](_0xf1c4('0x28'),_0x286028);this[_0xf1c4('0x29')]();}};EmailImap[_0xf1c4('0x26')][_0xf1c4('0x2a')]=function(_0x318dbb){if(_0x318dbb){this['handleError'](_0x318dbb,!![]);}else{this[_0xf1c4('0x2')][_0xf1c4('0x2b')]();}};EmailImap['prototype']['readUnseen']=function(){this[_0xf1c4('0x2')][_0xf1c4('0x2c')]([_0xf1c4('0x2d')],this[_0xf1c4('0x2e')][_0xf1c4('0x11')](this));};EmailImap[_0xf1c4('0x26')][_0xf1c4('0x2e')]=function(_0x322bf4,_0x451c13){if(_0x322bf4){this[_0xf1c4('0x14')](_0x322bf4,!![]);}else{if(_0x451c13[_0xf1c4('0x2f')]){try{var _0x4143cc=this[_0xf1c4('0x2')][_0xf1c4('0x30')](_0x451c13,{'bodies':'','markSeen':!![]});_0x4143cc['on']('message',this[_0xf1c4('0x31')][_0xf1c4('0x11')](this));_0x4143cc[_0xf1c4('0xe')](_0xf1c4('0x13'),this[_0xf1c4('0x32')][_0xf1c4('0x11')](this));_0x4143cc[_0xf1c4('0xe')](_0xf1c4('0x2b'),this[_0xf1c4('0x33')][_0xf1c4('0x11')](this));}catch(_0x53c4d0){logger['error'](_0x53c4d0);}}else{this[_0xf1c4('0x2')][_0xf1c4('0x34')](!![],this[_0xf1c4('0x2a')][_0xf1c4('0x11')](this));}}};EmailImap[_0xf1c4('0x26')]['handleFetchMessage']=function(_0x2c35d2,_0x1da257){_0x2c35d2['on'](_0xf1c4('0x35'),this[_0xf1c4('0x36')][_0xf1c4('0x11')](this));_0x2c35d2[_0xf1c4('0xe')](_0xf1c4('0x37'),this[_0xf1c4('0x38')][_0xf1c4('0x11')](this));_0x2c35d2[_0xf1c4('0xe')](_0xf1c4('0x2b'),this['handleMessageEnd'][_0xf1c4('0x11')](this));};EmailImap['prototype'][_0xf1c4('0x36')]=function(_0x34211d,_0x5ce132){simpleParser(_0x34211d,{'Iconv':Iconv},this[_0xf1c4('0x39')][_0xf1c4('0x11')](this));};EmailImap[_0xf1c4('0x26')]['handleMessageAttributes']=function(_0x54b2d1){};EmailImap[_0xf1c4('0x26')]['handleMessageEnd']=function(){};EmailImap['prototype'][_0xf1c4('0x39')]=function(_0x96b648,_0x3aaffc){if(_0x96b648){logger[_0xf1c4('0x13')](_0x96b648);}else{var _0xd557f9=this;utils['parser'](this['account'],_0x3aaffc,function(_0x15f65d){_0xd557f9[_0xf1c4('0x27')](_0xf1c4('0xa'),_0x15f65d);});}};EmailImap[_0xf1c4('0x26')][_0xf1c4('0x33')]=function(){this[_0xf1c4('0x2')]['closeBox'](!![],this['handleCloseBox'][_0xf1c4('0x11')](this));};EmailImap[_0xf1c4('0x26')]['handleFetchError']=function(_0x11e7a1){this[_0xf1c4('0x14')](_0x11e7a1);this[_0xf1c4('0x2')][_0xf1c4('0x34')](!![],this[_0xf1c4('0x2a')][_0xf1c4('0x11')](this));};EmailImap[_0xf1c4('0x26')][_0xf1c4('0x12')]=function(){this[_0xf1c4('0x27')](_0xf1c4('0x2b'));};EmailImap[_0xf1c4('0x26')][_0xf1c4('0x14')]=function(_0x597f85,_0x141521){logger[_0xf1c4('0x13')]('handleError',this[_0xf1c4('0xc')]['email'],JSON[_0xf1c4('0x3a')](_0x597f85));var _0x468ce0='';if(_0x597f85){if(_0x597f85[_0xf1c4('0x3b')]){_0x468ce0=_0x597f85[_0xf1c4('0x3b')];}else{for(var _0x503d65 in _0x597f85){if(_0x597f85[_0xf1c4('0x3c')](_0x503d65)){_0x468ce0+=_[_0xf1c4('0x3d')](_0x503d65)+':\x20'+_0x597f85[_0x503d65]+'\x0a';}}}}if(_0x141521){this[_0xf1c4('0x2')][_0xf1c4('0x2b')]();}else{this[_0xf1c4('0x27')](_0xf1c4('0x13'),_0x468ce0);this[_0xf1c4('0x27')](_0xf1c4('0x2b'));}};module['exports']=EmailImap;
\ No newline at end of file
+var _0x2121=['handleReadUnseen','length','message','handleFetchError','handleFetchEnd','closeBox','handleFetchMessage','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','stringify','hasOwnProperty','exports','path','util','randomstring','mailparser','simpleParser','iconv','Iconv','EventEmitter','../../../config/logger','email','mailbox','INBOX','getAccount','imap','account','once','ready','end','handleEnd','error','handleError','bind','connect','inherits','prototype','connTimeout','authTimeout','authentication','user','password','host','port','tls','autotls','required','getHost','service','anonymous@xcally.com','emit','box','readUnseen','handleCloseBox','search','UNSEEN'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x2121,0x1b4));var _0x1212=function(_0x8255ed,_0x3c42b6){_0x8255ed=_0x8255ed-0x0;var _0x1b6859=_0x2121[_0x8255ed];return _0x1b6859;};'use strict';var fs=require('fs');var path=require(_0x1212('0x0'));var util=require(_0x1212('0x1'));var Imap=require('imap');var _=require('lodash');var rs=require(_0x1212('0x2'));var simpleParser=require(_0x1212('0x3'))[_0x1212('0x4')];var Iconv=require(_0x1212('0x5'))[_0x1212('0x6')];var EventEmitter=require('events')[_0x1212('0x7')];var utils=require('./utils');var logger=require(_0x1212('0x8'))(_0x1212('0x9'));function EmailImap(_0x20fadc,_0x1b1ef5){this[_0x1212('0xa')]=_0x1212('0xb');this['account']=this[_0x1212('0xc')](_0x20fadc,_0x1b1ef5);this[_0x1212('0xd')]=new Imap(this[_0x1212('0xe')]);this[_0x1212('0xd')][_0x1212('0xf')](_0x1212('0x10'),this['handleReady']['bind'](this));this[_0x1212('0xd')][_0x1212('0xf')](_0x1212('0x11'),this[_0x1212('0x12')]['bind'](this));this[_0x1212('0xd')]['on'](_0x1212('0x13'),this[_0x1212('0x14')][_0x1212('0x15')](this));this[_0x1212('0xd')][_0x1212('0x16')]();}util[_0x1212('0x17')](EmailImap,EventEmitter);EmailImap[_0x1212('0x18')][_0x1212('0xc')]=function(_0x35b8ac,_0x11e78e){var _0x27343f={'connTimeout':_0x35b8ac[_0x1212('0x19')]?_0x35b8ac[_0x1212('0x19')]*0x3e8:0x2710,'authTimeout':_0x35b8ac[_0x1212('0x1a')]?_0x35b8ac['authTimeout']*0x3e8:0x1388};if(_['isNil'](_0x35b8ac['service'])){if(_0x35b8ac[_0x1212('0x1b')]){_0x27343f[_0x1212('0x1c')]=_0x35b8ac[_0x1212('0x1c')];_0x27343f[_0x1212('0x1d')]=_0x35b8ac[_0x1212('0x1d')];}_0x27343f[_0x1212('0x1e')]=_0x35b8ac[_0x1212('0x1e')];_0x27343f[_0x1212('0x1f')]=_0x35b8ac[_0x1212('0x1f')]||0x3e1;if(_0x35b8ac['tls']){_0x27343f[_0x1212('0x20')]=!![];}else{_0x27343f[_0x1212('0x20')]=![];_0x27343f[_0x1212('0x21')]=_0x1212('0x22');}}else{_0x27343f[_0x1212('0x1c')]=_0x35b8ac[_0x1212('0x1c')];_0x27343f[_0x1212('0x1d')]=_0x35b8ac[_0x1212('0x1d')];_0x27343f['host']=utils[_0x1212('0x23')](_0x35b8ac[_0x1212('0x24')]);_0x27343f[_0x1212('0x1f')]=0x3e1;_0x27343f[_0x1212('0x20')]=!![];}_0x27343f[_0x1212('0x9')]=_0x11e78e||_0x35b8ac[_0x1212('0x1c')]||_0x1212('0x25');return _0x27343f;};EmailImap[_0x1212('0x18')]['handleReady']=function(){this['imap']['openBox'](this['mailbox'],![],this['handleOpenBox'][_0x1212('0x15')](this));};EmailImap[_0x1212('0x18')]['handleOpenBox']=function(_0x7875d2,_0xa1c850){if(_0x7875d2){this['handleError'](_0x7875d2,!![]);}else{this[_0x1212('0x26')](_0x1212('0x27'),_0xa1c850);this[_0x1212('0x28')]();}};EmailImap[_0x1212('0x18')][_0x1212('0x29')]=function(_0x3f6be3){if(_0x3f6be3){this[_0x1212('0x14')](_0x3f6be3,!![]);}else{this[_0x1212('0xd')]['end']();}};EmailImap[_0x1212('0x18')][_0x1212('0x28')]=function(){this[_0x1212('0xd')][_0x1212('0x2a')]([_0x1212('0x2b')],this[_0x1212('0x2c')][_0x1212('0x15')](this));};EmailImap[_0x1212('0x18')][_0x1212('0x2c')]=function(_0x1e3506,_0x4b8e34){if(_0x1e3506){this['handleError'](_0x1e3506,!![]);}else{if(_0x4b8e34[_0x1212('0x2d')]){try{var _0x5769a9=this[_0x1212('0xd')]['fetch'](_0x4b8e34,{'bodies':'','markSeen':!![]});_0x5769a9['on'](_0x1212('0x2e'),this['handleFetchMessage'][_0x1212('0x15')](this));_0x5769a9[_0x1212('0xf')](_0x1212('0x13'),this[_0x1212('0x2f')]['bind'](this));_0x5769a9[_0x1212('0xf')](_0x1212('0x11'),this[_0x1212('0x30')][_0x1212('0x15')](this));}catch(_0x1a691a){logger['error'](_0x1a691a);}}else{this[_0x1212('0xd')][_0x1212('0x31')](!![],this[_0x1212('0x29')]['bind'](this));}}};EmailImap[_0x1212('0x18')][_0x1212('0x32')]=function(_0x405a90,_0x16ed11){_0x405a90['on']('body',this[_0x1212('0x33')][_0x1212('0x15')](this));_0x405a90['once'](_0x1212('0x34'),this[_0x1212('0x35')][_0x1212('0x15')](this));_0x405a90['once'](_0x1212('0x11'),this[_0x1212('0x36')][_0x1212('0x15')](this));};EmailImap['prototype'][_0x1212('0x33')]=function(_0x51b98f,_0x4702b2){simpleParser(_0x51b98f,{'Iconv':Iconv},this[_0x1212('0x37')]['bind'](this));};EmailImap['prototype'][_0x1212('0x35')]=function(_0x47999e){};EmailImap[_0x1212('0x18')][_0x1212('0x36')]=function(){};EmailImap[_0x1212('0x18')][_0x1212('0x37')]=function(_0x3f2979,_0x1f3b66){if(_0x3f2979){logger[_0x1212('0x13')](_0x3f2979);}else{var _0x29b6bf=this;utils[_0x1212('0x38')](this[_0x1212('0xe')],_0x1f3b66,function(_0x43b21b){_0x29b6bf[_0x1212('0x26')](_0x1212('0x9'),_0x43b21b);});}};EmailImap[_0x1212('0x18')][_0x1212('0x30')]=function(){this[_0x1212('0xd')][_0x1212('0x31')](!![],this[_0x1212('0x29')]['bind'](this));};EmailImap[_0x1212('0x18')]['handleFetchError']=function(_0x50fc00){this[_0x1212('0x14')](_0x50fc00);this[_0x1212('0xd')][_0x1212('0x31')](!![],this[_0x1212('0x29')][_0x1212('0x15')](this));};EmailImap['prototype']['handleEnd']=function(){this[_0x1212('0x26')](_0x1212('0x11'));};EmailImap[_0x1212('0x18')][_0x1212('0x14')]=function(_0x45fc95,_0x640717){logger[_0x1212('0x13')](_0x1212('0x14'),this[_0x1212('0xe')][_0x1212('0x9')],JSON[_0x1212('0x39')](_0x45fc95));var _0x15e1ce='';if(_0x45fc95){if(_0x45fc95['textCode']){_0x15e1ce=_0x45fc95['textCode'];}else{for(var _0x39d138 in _0x45fc95){if(_0x45fc95[_0x1212('0x3a')](_0x39d138)){_0x15e1ce+=_['upperFirst'](_0x39d138)+':\x20'+_0x45fc95[_0x39d138]+'\x0a';}}}}if(_0x640717){this[_0x1212('0xd')]['end']();}else{this[_0x1212('0x26')](_0x1212('0x13'),_0x15e1ce);this[_0x1212('0x26')](_0x1212('0x11'));}};module[_0x1212('0x3b')]=EmailImap;
\ No newline at end of file
index 767d24d..c849724 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64f6=['use','compile','toString','verify','nodemailer','nodemailer-plugin-inline-base64','prototype','send','createTransport'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x64f6,0x199));var _0x664f=function(_0x1fd441,_0x2629bf){_0x1fd441=_0x1fd441-0x0;var _0x411a91=_0x64f6[_0x1fd441];return _0x411a91;};'use strict';var nodemailer=require(_0x664f('0x0'));var BPromise=require('bluebird');var inlineBase64=require(_0x664f('0x1'));function EmailSmtp(){}EmailSmtp[_0x664f('0x2')][_0x664f('0x3')]=function(_0x42cca0,_0x36a86f){return new BPromise(function(_0x2597e9,_0x3f0d5f){var _0x3381e7=nodemailer[_0x664f('0x4')](_0x42cca0);_0x3381e7[_0x664f('0x5')](_0x664f('0x6'),inlineBase64());_0x3381e7['sendMail'](_0x36a86f,function(_0x5ace92,_0x14c7f1){if(_0x5ace92){_0x3f0d5f(_0x5ace92[_0x664f('0x7')]());}else{_0x2597e9(_0x14c7f1);}});});};EmailSmtp[_0x664f('0x2')][_0x664f('0x8')]=function(_0x52b7a4){return new BPromise(function(_0x38e039,_0x3334c0){var _0x3a830b=nodemailer['createTransport'](_0x52b7a4);_0x3a830b[_0x664f('0x8')](function(_0xdbff70,_0x497523){if(_0xdbff70){_0x3334c0(_0xdbff70[_0x664f('0x7')]());}else{if(_0x497523){_0x38e039(_0x497523);}else{_0x3334c0('Not\x20verifired');}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
+var _0xdda8=['compile','toString','verify','exports','nodemailer','bluebird','nodemailer-plugin-inline-base64','prototype','send','use'];(function(_0x3899d1,_0x4aa04c){var _0xeb4a7d=function(_0x3ea5ee){while(--_0x3ea5ee){_0x3899d1['push'](_0x3899d1['shift']());}};_0xeb4a7d(++_0x4aa04c);}(_0xdda8,0xc2));var _0x8dda=function(_0x259548,_0x4646d7){_0x259548=_0x259548-0x0;var _0x3b8890=_0xdda8[_0x259548];return _0x3b8890;};'use strict';var nodemailer=require(_0x8dda('0x0'));var BPromise=require(_0x8dda('0x1'));var inlineBase64=require(_0x8dda('0x2'));function EmailSmtp(){}EmailSmtp[_0x8dda('0x3')][_0x8dda('0x4')]=function(_0x2d2082,_0x48875c){return new BPromise(function(_0x53d0b0,_0x4299a1){var _0x590232=nodemailer['createTransport'](_0x2d2082);_0x590232[_0x8dda('0x5')](_0x8dda('0x6'),inlineBase64());_0x590232['sendMail'](_0x48875c,function(_0xe3a6a5,_0x2823fd){if(_0xe3a6a5){_0x4299a1(_0xe3a6a5[_0x8dda('0x7')]());}else{_0x53d0b0(_0x2823fd);}});});};EmailSmtp['prototype'][_0x8dda('0x8')]=function(_0x3b76c6){return new BPromise(function(_0xfbbfd1,_0x489ac1){var _0x655cc7=nodemailer['createTransport'](_0x3b76c6);_0x655cc7['verify'](function(_0x438ea9,_0x4aa094){if(_0x438ea9){_0x489ac1(_0x438ea9[_0x8dda('0x7')]());}else{if(_0x4aa094){_0xfbbfd1(_0x4aa094);}else{_0x489ac1('Not\x20verifired');}}});});};module[_0x8dda('0x9')]=EmailSmtp;
\ No newline at end of file
index 787d842..bcbe3c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf960=['from','subject','messageId','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','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','lodash','randomstring','util','node-tnef','email','head','value','address','@xcally.com','name','substring','indexOf','split','slice','join','Anonymous','length','isEmpty','anonymous','generate','html','test','replace','includes','attachments','forEach','push','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','message','originTo','originCc','bcc','type','attachment','format','%s-%s','now','root','server/files/attachments/','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','Precedence:\x20auto_reply','line','isAutoreply','parser'];(function(_0x6dea12,_0x4fb070){var _0x132324=function(_0x585d05){while(--_0x585d05){_0x6dea12['push'](_0x6dea12['shift']());}};_0x132324(++_0x4fb070);}(_0xf960,0x193));var _0x0f96=function(_0x695b76,_0x551526){_0x695b76=_0x695b76-0x0;var _0x1dc21f=_0xf960[_0x695b76];return _0x1dc21f;};'use strict';var _=require(_0x0f96('0x0'));var moment=require('moment');var random=require(_0x0f96('0x1'));var fs=require('fs');var path=require('path');var util=require(_0x0f96('0x2'));var tnef=require(_0x0f96('0x3'));var logger=require('../../../config/logger')(_0x0f96('0x4'));var config=require('../../../config/environment');function getAddress(_0x4ed973){var _0x125f4b=_[_0x0f96('0x5')](_0x4ed973[_0x0f96('0x6')]);return _0x125f4b&&_0x125f4b[_0x0f96('0x7')]?_0x125f4b[_0x0f96('0x7')]:'anonymous'+random['generate'](0x6)+_0x0f96('0x8');}function getFirstName(_0x354642){var _0x4408ed=_[_0x0f96('0x5')](_0x354642[_0x0f96('0x6')]);if(_0x4408ed&&_0x4408ed[_0x0f96('0x9')]){if(_0x4408ed['name']==_0x4408ed[_0x0f96('0x7')]){return _0x4408ed['name'][_0x0f96('0xa')](0x0,_0x4408ed['name'][_0x0f96('0xb')]('@'));}var _0x3cc1c8=_0x4408ed[_0x0f96('0x9')][_0x0f96('0xc')](/\s+/);return _0x3cc1c8['length']>0x1?_0x3cc1c8[_0x0f96('0xd')](0x0,-0x1)[_0x0f96('0xe')]('\x20'):_0x4408ed[_0x0f96('0x9')];}return _0x0f96('0xf');}function getLastName(_0x5ce4a1){var _0x3df618=_[_0x0f96('0x5')](_0x5ce4a1[_0x0f96('0x6')]);if(_0x3df618&&_0x3df618[_0x0f96('0x9')]){var _0x208769=_0x3df618[_0x0f96('0x9')]['split'](/\s+/);return _0x208769[_0x0f96('0x10')]>0x1?_0x208769['pop']():'';}return'';}function getMails(_0x4f55cf,_0x2ab709){var _0x2b808d='';for(var _0x183d93=0x0;_0x183d93<_0x2ab709[_0x0f96('0x6')][_0x0f96('0x10')];_0x183d93+=0x1){if(_0x2ab709[_0x0f96('0x6')][_0x183d93][_0x0f96('0x7')]!==_0x4f55cf){if(!_[_0x0f96('0x11')](_0x2b808d)){_0x2b808d+=',';}_0x2b808d+=_0x2ab709[_0x0f96('0x6')][_0x183d93][_0x0f96('0x9')]||_0x2ab709[_0x0f96('0x6')][_0x183d93][_0x0f96('0x7')]||'';_0x2b808d+='\x20<';_0x2b808d+=_0x2ab709[_0x0f96('0x6')][_0x183d93][_0x0f96('0x7')]?_0x2ab709['value'][_0x183d93][_0x0f96('0x7')]:_0x0f96('0x12')+random[_0x0f96('0x13')](0x6)+_0x0f96('0x8');_0x2b808d+='>';}}return _0x2b808d;}function parseEmail(_0x4a2a34,_0x210a93,_0xb1e078){if(_0x210a93[_0x0f96('0x14')]){var _0x47993c=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x47993c[_0x0f96('0x15')](_0x210a93[_0x0f96('0x14')])){_0x210a93['html']=_0x210a93[_0x0f96('0x14')][_0x0f96('0x16')](_0x47993c,'');}if(_0x210a93[_0x0f96('0x14')][_0x0f96('0x17')]('<img')){var _0xabbaf0=[];_0x210a93[_0x0f96('0x18')][_0x0f96('0x19')](_0x1d0847=>{_0xabbaf0[_0x0f96('0x1a')](_0x1d0847[_0x0f96('0x1b')]);});var _0x3cfca7=/<img.*? _SRC(.*?)[^>]+>/g;var _0x4f6934=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x248b45=_0x210a93[_0x0f96('0x14')][_0x0f96('0x16')](_0x4f6934,'_SRC');var _0x43128e=_0x248b45[_0x0f96('0x16')](_0x3cfca7,_0x0f96('0x1c'));for(let _0x1db1c1=0x0;_0x1db1c1<_0xabbaf0[_0x0f96('0x10')];_0x1db1c1++){var _0x591c91=_0x43128e[_0x0f96('0x16')](_0x0f96('0x1c'),_0x0f96('0x1d')+_0xabbaf0[_0x1db1c1]+_0x0f96('0x1e'));_0x43128e=_0x591c91;}_0x210a93[_0x0f96('0x14')]=_0x43128e;}_0xb1e078[_0x0f96('0x1f')]=_0x210a93[_0x0f96('0x14')];}else{_0xb1e078[_0x0f96('0x1f')]=_0x210a93[_0x0f96('0x20')];}if(_0xb1e078[_0x0f96('0x1f')]){_0xb1e078['body']=_0xb1e078[_0x0f96('0x1f')][_0x0f96('0x16')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x210a93['to']){_0xb1e078[_0x0f96('0x21')][_0x0f96('0x22')]=getMails(null,_0x210a93['to']);var _0x581192=getMails(_0x4a2a34[_0x0f96('0x4')],_0x210a93['to']);if(!_[_0x0f96('0x11')](_0x581192)){_0xb1e078[_0x0f96('0x21')]['cc']+=_0x581192;}}if(_0x210a93['cc']){_0xb1e078[_0x0f96('0x21')][_0x0f96('0x23')]=getMails(null,_0x210a93['cc']);var _0xade3be=getMails(_0x4a2a34[_0x0f96('0x4')],_0x210a93['cc']);if(!_['isEmpty'](_0xade3be)){if(!_['isEmpty'](_0xb1e078[_0x0f96('0x21')]['cc'])){_0xb1e078['message']['cc']+=',';}_0xb1e078['message']['cc']+=_0xade3be;}}if(!_['includes'](_0xb1e078[_0x0f96('0x21')][_0x0f96('0x22')],_0x4a2a34[_0x0f96('0x4')])&&!_['includes'](_0xb1e078[_0x0f96('0x21')][_0x0f96('0x23')],_0x4a2a34[_0x0f96('0x4')])){_0xb1e078[_0x0f96('0x21')][_0x0f96('0x24')]=_0x4a2a34[_0x0f96('0x4')];}if(_0x210a93[_0x0f96('0x18')]&&_0x210a93[_0x0f96('0x18')]['length']){_0xb1e078[_0x0f96('0x21')]['attach']=_0x210a93[_0x0f96('0x18')][_0x0f96('0x10')];for(var _0x21a382=0x0,_0xffa801,_0x1d2646,_0x1f7278;_0x21a382<_0x210a93[_0x0f96('0x18')]['length'];_0x21a382+=0x1){if(_0x210a93['attachments'][_0x21a382][_0x0f96('0x25')]===_0x0f96('0x26')){_0x1f7278=_0x210a93[_0x0f96('0x18')][_0x21a382][_0x0f96('0x1b')]||'attachment-'+_0x21a382;_0xffa801=util[_0x0f96('0x27')](_0x0f96('0x28'),Date[_0x0f96('0x29')](),_0x1f7278);_0x1d2646=path[_0x0f96('0xe')](config[_0x0f96('0x2a')],_0x0f96('0x2b'),_0xffa801);fs[_0x0f96('0x2c')](_0x1d2646,_0x210a93[_0x0f96('0x18')][_0x21a382][_0x0f96('0x2d')]);_0xb1e078['message'][_0x0f96('0x18')][_0x0f96('0x1a')]({'name':_0x1f7278,'basename':_0xffa801,'type':_0x210a93['attachments'][_0x21a382][_0x0f96('0x2e')],'filepath':_0x1d2646});}}}if(_0x210a93[_0x0f96('0x2f')]&&_0x210a93[_0x0f96('0x2f')]['length']>0x0){var _0x43fec4=[_0x0f96('0x30'),'X-Auto-Response-Suppress:\x20All',_0x0f96('0x31')];for(var _0x3478d5=0x0;_0x3478d5<_0x210a93['headerLines'][_0x0f96('0x10')];_0x3478d5++){var _0x4e1626=_['indexOf'](_0x43fec4,_0x210a93[_0x0f96('0x2f')][_0x3478d5][_0x0f96('0x32')]);if(_0x4e1626>=0x0){_0xb1e078[_0x0f96('0x33')]=!![];}}}return _0xb1e078;}exports[_0x0f96('0x34')]=function(_0x261452,_0x1e6b76,_0x2c2346){var _0x2a8032={'from':getAddress(_0x1e6b76['from']),'firstName':getFirstName(_0x1e6b76['from']),'lastName':getLastName(_0x1e6b76[_0x0f96('0x35')]),'mapKey':'email','message':{'from':getMails(_0x261452[_0x0f96('0x4')],_0x1e6b76[_0x0f96('0x35')]),'to':_0x261452[_0x0f96('0x4')],'cc':'','subject':_0x1e6b76[_0x0f96('0x36')]||'','messageId':_0x1e6b76[_0x0f96('0x37')],'inReplyTo':_0x1e6b76[_0x0f96('0x38')],'sentAt':moment(_0x1e6b76[_0x0f96('0x39')])['format'](_0x0f96('0x3a')),'attach':![],'attachments':[]}};if(!_0x1e6b76[_0x0f96('0x14')]&&!_0x1e6b76[_0x0f96('0x20')]){var _0xaf2a3c=_[_0x0f96('0x3b')](_0x1e6b76[_0x0f96('0x18')],{'contentType':_0x0f96('0x3c')});if(_0xaf2a3c[_0x0f96('0x10')]){logger[_0x0f96('0x3d')](util[_0x0f96('0x27')](_0x0f96('0x3e'),_0x1e6b76[_0x0f96('0x37')]));tnef['parseBuffer'](_['first'](_0xaf2a3c)[_0x0f96('0x2d')],function(_0x35b61a,_0x1b3605){if(_0x1b3605){_0x1e6b76['html']=_0x1b3605[_0x0f96('0x3f')]||_0x0f96('0x40');if(_0x1b3605[_0x0f96('0x41')]){for(var _0x2d363b=0x0;_0x2d363b<_0x1b3605[_0x0f96('0x41')]['length'];_0x2d363b++){var _0x961972=_0x1b3605[_0x0f96('0x41')][_0x2d363b];_0x2a8032['message']['attachments'][_0x0f96('0x1a')]({'filename':_0x961972[_0x0f96('0x42')],'content':Buffer[_0x0f96('0x35')](_0x961972[_0x0f96('0x43')])});}}}_0x2c2346(parseEmail(_0x261452,_0x1e6b76,_0x2a8032));});}else{_0x1e6b76[_0x0f96('0x14')]='<p>Empty\x20message</p>';_0x2c2346(parseEmail(_0x261452,_0x1e6b76,_0x2a8032));}}else{_0x2c2346(parseEmail(_0x261452,_0x1e6b76,_0x2a8032));}};exports[_0x0f96('0x44')]=function(_0x3fb81e){switch(_0x3fb81e){case _0x0f96('0x45'):return _0x0f96('0x46');case _0x0f96('0x47'):return _0x0f96('0x48');case _0x0f96('0x49'):return _0x0f96('0x4a');case'outlook365':return _0x0f96('0x4b');}return'127.0.0.1';};
\ No newline at end of file
+var _0xb10b=['from','subject','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','info','messageId','first','content','BodyHTML','Attachments','Title','Data','getHost','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','lodash','randomstring','path','util','../../../config/logger','email','../../../config/environment','head','address','generate','@xcally.com','value','name','length','slice','join','Anonymous','pop','anonymous','html','test','includes','<img','attachments','forEach','push','filename','replace','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','message','isEmpty','originTo','originCc','bcc','attach','type','attachment','format','%s-%s','server/files/attachments/','writeFileSync','contentType','parser'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb10b,0x12a));var _0xbb10=function(_0x22a028,_0x5bb05e){_0x22a028=_0x22a028-0x0;var _0x3184d4=_0xb10b[_0x22a028];return _0x3184d4;};'use strict';var _=require(_0xbb10('0x0'));var moment=require('moment');var random=require(_0xbb10('0x1'));var fs=require('fs');var path=require(_0xbb10('0x2'));var util=require(_0xbb10('0x3'));var tnef=require('node-tnef');var logger=require(_0xbb10('0x4'))(_0xbb10('0x5'));var config=require(_0xbb10('0x6'));function getAddress(_0x22320e){var _0x49baf4=_[_0xbb10('0x7')](_0x22320e['value']);return _0x49baf4&&_0x49baf4[_0xbb10('0x8')]?_0x49baf4[_0xbb10('0x8')]:'anonymous'+random[_0xbb10('0x9')](0x6)+_0xbb10('0xa');}function getFirstName(_0x21370f){var _0x1c3ee5=_[_0xbb10('0x7')](_0x21370f[_0xbb10('0xb')]);if(_0x1c3ee5&&_0x1c3ee5[_0xbb10('0xc')]){var _0xa3adc8=_0x1c3ee5['name']['split'](/\s+/);return _0xa3adc8[_0xbb10('0xd')]?_0xa3adc8[_0xbb10('0xe')](0x0,-0x1)[_0xbb10('0xf')]('\x20'):_0x1c3ee5['name'];}return _0xbb10('0x10');}function getLastName(_0x5be7e0){var _0x44fb19=_[_0xbb10('0x7')](_0x5be7e0[_0xbb10('0xb')]);if(_0x44fb19&&_0x44fb19[_0xbb10('0xc')]){var _0x442548=_0x44fb19[_0xbb10('0xc')]['split'](/\s+/);return _0x442548[_0xbb10('0xd')]>0x1?_0x442548[_0xbb10('0x11')]():'';}return'';}function getMails(_0x45b9d6,_0x17fd46){var _0x3df17b='';for(var _0x2f2ebf=0x0;_0x2f2ebf<_0x17fd46[_0xbb10('0xb')][_0xbb10('0xd')];_0x2f2ebf+=0x1){if(_0x17fd46[_0xbb10('0xb')][_0x2f2ebf][_0xbb10('0x8')]!==_0x45b9d6){if(!_['isEmpty'](_0x3df17b)){_0x3df17b+=',';}_0x3df17b+=_0x17fd46[_0xbb10('0xb')][_0x2f2ebf][_0xbb10('0xc')]||_0x17fd46[_0xbb10('0xb')][_0x2f2ebf][_0xbb10('0x8')]||'';_0x3df17b+='\x20<';_0x3df17b+=_0x17fd46[_0xbb10('0xb')][_0x2f2ebf][_0xbb10('0x8')]?_0x17fd46[_0xbb10('0xb')][_0x2f2ebf][_0xbb10('0x8')]:_0xbb10('0x12')+random[_0xbb10('0x9')](0x6)+'@xcally.com';_0x3df17b+='>';}}return _0x3df17b;}function parseEmail(_0x5ff0cf,_0x19f48d,_0x388fab){if(_0x19f48d[_0xbb10('0x13')]){var _0xdf237d=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0xdf237d[_0xbb10('0x14')](_0x19f48d['html'])){_0x19f48d[_0xbb10('0x13')]=_0x19f48d[_0xbb10('0x13')]['replace'](_0xdf237d,'');}if(_0x19f48d['html'][_0xbb10('0x15')](_0xbb10('0x16'))){var _0x2e911d=[];_0x19f48d[_0xbb10('0x17')][_0xbb10('0x18')](_0x1824b7=>{_0x2e911d[_0xbb10('0x19')](_0x1824b7[_0xbb10('0x1a')]);});var _0x7f2377=/<img.*? _SRC(.*?)[^\>]+>/g;var _0x395404=/src=\"data:image\/([a-zA-Z]*);base64,([^\"]*)\"/g;var _0x3ba6cd=_0x19f48d[_0xbb10('0x13')]['replace'](_0x395404,'_SRC');var _0x4fb5e0=_0x3ba6cd[_0xbb10('0x1b')](_0x7f2377,_0xbb10('0x1c'));for(let _0x2c89b9=0x0;_0x2c89b9<_0x2e911d['length'];_0x2c89b9++){var _0x2fdde9=_0x4fb5e0[_0xbb10('0x1b')](_0xbb10('0x1c'),_0xbb10('0x1d')+_0x2e911d[_0x2c89b9]+_0xbb10('0x1e'));_0x4fb5e0=_0x2fdde9;}_0x19f48d[_0xbb10('0x13')]=_0x4fb5e0;}_0x388fab[_0xbb10('0x1f')]=_0x19f48d['html'];}else{_0x388fab[_0xbb10('0x1f')]=_0x19f48d[_0xbb10('0x20')];}if(_0x388fab[_0xbb10('0x1f')]){_0x388fab[_0xbb10('0x1f')]=_0x388fab[_0xbb10('0x1f')][_0xbb10('0x1b')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x19f48d['to']){_0x388fab[_0xbb10('0x21')]['originTo']=getMails(null,_0x19f48d['to']);var _0x448d5c=getMails(_0x5ff0cf['email'],_0x19f48d['to']);if(!_[_0xbb10('0x22')](_0x448d5c)){_0x388fab[_0xbb10('0x21')]['cc']+=_0x448d5c;}}if(_0x19f48d['cc']){_0x388fab[_0xbb10('0x21')]['originCc']=getMails(null,_0x19f48d['cc']);var _0x518d47=getMails(_0x5ff0cf[_0xbb10('0x5')],_0x19f48d['cc']);if(!_[_0xbb10('0x22')](_0x518d47)){if(!_['isEmpty'](_0x388fab[_0xbb10('0x21')]['cc'])){_0x388fab[_0xbb10('0x21')]['cc']+=',';}_0x388fab[_0xbb10('0x21')]['cc']+=_0x518d47;}}if(!_[_0xbb10('0x15')](_0x388fab[_0xbb10('0x21')][_0xbb10('0x23')],_0x5ff0cf[_0xbb10('0x5')])&&!_['includes'](_0x388fab[_0xbb10('0x21')][_0xbb10('0x24')],_0x5ff0cf[_0xbb10('0x5')])){_0x388fab[_0xbb10('0x21')][_0xbb10('0x25')]=_0x5ff0cf[_0xbb10('0x5')];}if(_0x19f48d[_0xbb10('0x17')]&&_0x19f48d[_0xbb10('0x17')][_0xbb10('0xd')]){_0x388fab['message'][_0xbb10('0x26')]=_0x19f48d[_0xbb10('0x17')][_0xbb10('0xd')];for(var _0x3c3c45=0x0,_0x570f5a,_0x111762,_0x5de37b;_0x3c3c45<_0x19f48d['attachments'][_0xbb10('0xd')];_0x3c3c45+=0x1){if(_0x19f48d[_0xbb10('0x17')][_0x3c3c45][_0xbb10('0x27')]===_0xbb10('0x28')){_0x5de37b=_0x19f48d[_0xbb10('0x17')][_0x3c3c45][_0xbb10('0x1a')]||'attachment-'+_0x3c3c45;_0x570f5a=util[_0xbb10('0x29')](_0xbb10('0x2a'),Date['now'](),_0x5de37b);_0x111762=path['join'](config['root'],_0xbb10('0x2b'),_0x570f5a);fs[_0xbb10('0x2c')](_0x111762,_0x19f48d[_0xbb10('0x17')][_0x3c3c45]['content']);_0x388fab[_0xbb10('0x21')][_0xbb10('0x17')][_0xbb10('0x19')]({'name':_0x5de37b,'basename':_0x570f5a,'type':_0x19f48d['attachments'][_0x3c3c45][_0xbb10('0x2d')],'filepath':_0x111762});}}}return _0x388fab;}exports[_0xbb10('0x2e')]=function(_0x1dcd38,_0x446f49,_0x4f1cdd){var _0xd238e9={'from':getAddress(_0x446f49[_0xbb10('0x2f')]),'firstName':getFirstName(_0x446f49['from']),'lastName':getLastName(_0x446f49[_0xbb10('0x2f')]),'mapKey':_0xbb10('0x5'),'message':{'from':getMails(_0x1dcd38[_0xbb10('0x5')],_0x446f49[_0xbb10('0x2f')]),'to':_0x1dcd38[_0xbb10('0x5')],'cc':'','subject':_0x446f49[_0xbb10('0x30')]||'','messageId':_0x446f49['messageId'],'inReplyTo':_0x446f49[_0xbb10('0x31')],'sentAt':moment(_0x446f49[_0xbb10('0x32')])[_0xbb10('0x29')](_0xbb10('0x33')),'attach':![],'attachments':[]}};if(!_0x446f49['html']&&!_0x446f49[_0xbb10('0x20')]){var _0x331751=_[_0xbb10('0x34')](_0x446f49[_0xbb10('0x17')],{'contentType':'application/ms-tnef'});if(_0x331751[_0xbb10('0xd')]){logger[_0xbb10('0x35')](util['format']('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x446f49[_0xbb10('0x36')]));tnef['parseBuffer'](_[_0xbb10('0x37')](_0x331751)[_0xbb10('0x38')],function(_0x4c66d8,_0x366608){if(_0x366608){_0x446f49[_0xbb10('0x13')]=_0x366608[_0xbb10('0x39')]||'<p>Empty\x20message</p>';if(_0x366608[_0xbb10('0x3a')]){for(var _0xebd70c=0x0;_0xebd70c<_0x366608[_0xbb10('0x3a')][_0xbb10('0xd')];_0xebd70c++){var _0x36e1fa=_0x366608[_0xbb10('0x3a')][_0xebd70c];_0xd238e9[_0xbb10('0x21')][_0xbb10('0x17')][_0xbb10('0x19')]({'filename':_0x36e1fa[_0xbb10('0x3b')],'content':new Buffer(_0x36e1fa[_0xbb10('0x3c')])});}}}_0x4f1cdd(parseEmail(_0x1dcd38,_0x446f49,_0xd238e9));});}else{_0x446f49[_0xbb10('0x13')]='<p>Empty\x20message</p>';_0x4f1cdd(parseEmail(_0x1dcd38,_0x446f49,_0xd238e9));}}else{_0x4f1cdd(parseEmail(_0x1dcd38,_0x446f49,_0xd238e9));}};exports[_0xbb10('0x3d')]=function(_0x41bbf8){switch(_0x41bbf8){case'gmail':return _0xbb10('0x3e');case _0xbb10('0x3f'):return _0xbb10('0x40');case _0xbb10('0x41'):return _0xbb10('0x42');case _0xbb10('0x43'):return _0xbb10('0x44');}return'127.0.0.1';};
\ No newline at end of file
index d926764..1f78159 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c4f=['Service','key','SERV','Imap','Smtp','exports','lodash','name'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x8c4f,0x1ee));var _0xf8c4=function(_0x1c4a75,_0x1085e3){_0x1c4a75=_0x1c4a75-0x0;var _0x186f9b=_0x8c4f[_0x1c4a75];return _0x186f9b;};'use strict';var _=require(_0xf8c4('0x0'));function MailAccount(_0xf5d6de){this['id']=_0xf5d6de['id']||0x0;this[_0xf8c4('0x1')]=_0xf5d6de[_0xf8c4('0x1')]||_0xf8c4('0x2');this[_0xf8c4('0x3')]=_0xf5d6de['key']||_0xf8c4('0x4');this['active']=_0xf5d6de['active']||![];this[_0xf8c4('0x5')]=_0xf5d6de[_0xf8c4('0x5')]||[];this[_0xf8c4('0x6')]=_0xf5d6de[_0xf8c4('0x6')]||[];}module[_0xf8c4('0x7')]=MailAccount;
\ No newline at end of file
+var _0xb282=['Service','SERV','active','Imap','Smtp','exports','lodash','name'];(function(_0x281e5e,_0xf320e2){var _0x5a22d2=function(_0x405ff9){while(--_0x405ff9){_0x281e5e['push'](_0x281e5e['shift']());}};_0x5a22d2(++_0xf320e2);}(_0xb282,0xfe));var _0x2b28=function(_0x5070a4,_0x1db896){_0x5070a4=_0x5070a4-0x0;var _0x179668=_0xb282[_0x5070a4];return _0x179668;};'use strict';var _=require(_0x2b28('0x0'));function MailAccount(_0x4f7e85){this['id']=_0x4f7e85['id']||0x0;this[_0x2b28('0x1')]=_0x4f7e85[_0x2b28('0x1')]||_0x2b28('0x2');this['key']=_0x4f7e85['key']||_0x2b28('0x3');this[_0x2b28('0x4')]=_0x4f7e85[_0x2b28('0x4')]||![];this[_0x2b28('0x5')]=_0x4f7e85[_0x2b28('0x5')]||[];this['Smtp']=_0x4f7e85[_0x2b28('0x6')]||[];}module[_0x2b28('0x7')]=MailAccount;
\ No newline at end of file
index 1491e1b..c613a81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x776d=['initMailAccounts','length','isUndefined','merge','exports','lodash','../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty','mergeFromDatabase'];(function(_0x35f7f5,_0x4e2ee1){var _0x5567a4=function(_0x3e5df0){while(--_0x3e5df0){_0x35f7f5['push'](_0x35f7f5['shift']());}};_0x5567a4(++_0x4e2ee1);}(_0x776d,0x7e));var _0xd776=function(_0x55e20e,_0x38aee4){_0x55e20e=_0x55e20e-0x0;var _0x154154=_0x776d[_0x55e20e];return _0x154154;};'use strict';var _=require(_0xd776('0x0'));var MailAccount=require(_0xd776('0x1'));var Realtime=function(){this[_0xd776('0x2')]={};};function freeIsNotKey(_0x169ed0,_0x2b2543,_0x3f0511){var _0x1006d7=_[_0xd776('0x3')](_0x169ed0,function(_0x45f52c,_0x39516c){return _0x45f52c[_0x3f0511];});for(var _0x241f79 in _0x2b2543){if(_0x2b2543[_0xd776('0x4')](_0x241f79)){if(!_0x1006d7[_0x241f79]){delete _0x2b2543[_0x241f79];}}}}Realtime['prototype'][_0xd776('0x5')]=function(_0x2a2d8b,_0x3b88fc){for(var _0x2bde25 in _0x3b88fc){if(_0x2a2d8b['hasOwnProperty'](_0x2bde25)){_0x2a2d8b[_0x2bde25]=_0x3b88fc[_0x2bde25];}}};Realtime['prototype'][_0xd776('0x6')]=function(){var _0x596561=this;return function(_0x178ee3){if(_0x178ee3){freeIsNotKey(_0x178ee3,_0x596561[_0xd776('0x2')],'id');for(var _0x2f41c1=0x0,_0x2df9a4={},_0x38ebb9={};_0x2f41c1<_0x178ee3[_0xd776('0x7')];_0x2f41c1+=0x1){_0x2df9a4=_0x178ee3[_0x2f41c1];if(_[_0xd776('0x8')](_0x596561[_0xd776('0x2')][_0x2df9a4['id']])){_0x596561[_0xd776('0x2')][_0x2df9a4['id']]=new MailAccount(_0x2df9a4);}else{_[_0xd776('0x9')](_0x596561[_0xd776('0x2')][_0x2df9a4['id']],_0x2df9a4);}}}return _0x596561[_0xd776('0x2')];};};module[_0xd776('0xa')]=Realtime;
\ No newline at end of file
+var _0x9e48=['length','isUndefined','merge','lodash','../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty','mergeFromDatabase','prototype'];(function(_0x956604,_0x129542){var _0x267382=function(_0xfa7471){while(--_0xfa7471){_0x956604['push'](_0x956604['shift']());}};_0x267382(++_0x129542);}(_0x9e48,0x85));var _0x89e4=function(_0x52c6f2,_0x4127cb){_0x52c6f2=_0x52c6f2-0x0;var _0x393b5e=_0x9e48[_0x52c6f2];return _0x393b5e;};'use strict';var _=require(_0x89e4('0x0'));var MailAccount=require(_0x89e4('0x1'));var Realtime=function(){this[_0x89e4('0x2')]={};};function freeIsNotKey(_0x550ff6,_0x478b6b,_0x4c3f2c){var _0x311163=_[_0x89e4('0x3')](_0x550ff6,function(_0x1cd618,_0x178a27){return _0x1cd618[_0x4c3f2c];});for(var _0x27f84a in _0x478b6b){if(_0x478b6b[_0x89e4('0x4')](_0x27f84a)){if(!_0x311163[_0x27f84a]){delete _0x478b6b[_0x27f84a];}}}}Realtime['prototype'][_0x89e4('0x5')]=function(_0x1104c7,_0x1f575b){for(var _0x42df43 in _0x1f575b){if(_0x1104c7[_0x89e4('0x4')](_0x42df43)){_0x1104c7[_0x42df43]=_0x1f575b[_0x42df43];}}};Realtime[_0x89e4('0x6')]['initMailAccounts']=function(){var _0x17295b=this;return function(_0x1b4fc2){if(_0x1b4fc2){freeIsNotKey(_0x1b4fc2,_0x17295b[_0x89e4('0x2')],'id');for(var _0x404939=0x0,_0x37709d={},_0x537f2b={};_0x404939<_0x1b4fc2[_0x89e4('0x7')];_0x404939+=0x1){_0x37709d=_0x1b4fc2[_0x404939];if(_[_0x89e4('0x8')](_0x17295b[_0x89e4('0x2')][_0x37709d['id']])){_0x17295b[_0x89e4('0x2')][_0x37709d['id']]=new MailAccount(_0x37709d);}else{_[_0x89e4('0x9')](_0x17295b[_0x89e4('0x2')][_0x37709d['id']],_0x37709d);}}}return _0x17295b['mailAccounts'];};};module['exports']=Realtime;
\ No newline at end of file
index b2dc658..fb72152 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf5d=['MailServerOut','Smtp','getMailAccount','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','service','email','active','ListId','TemplateId','MailServerIn','Imap'];(function(_0x5dac64,_0x51d507){var _0x19ebb6=function(_0x12a447){while(--_0x12a447){_0x5dac64['push'](_0x5dac64['shift']());}};_0x19ebb6(++_0x51d507);}(_0xdf5d,0x126));var _0xddf5=function(_0x132450,_0x2ef14f){_0x132450=_0x132450-0x0;var _0x1adf23=_0xdf5d[_0x132450];return _0x1adf23;};'use strict';var client=require(_0xddf5('0x0'));exports[_0xddf5('0x1')]=function(){return function(){return client[_0xddf5('0x2')](_0xddf5('0x3'),{'options':{'attributes':['id',_0xddf5('0x4'),_0xddf5('0x5'),_0xddf5('0x6'),_0xddf5('0x7'),'key',_0xddf5('0x8'),_0xddf5('0x9')],'raw':![],'include':[{'model':_0xddf5('0xa'),'as':_0xddf5('0xb')},{'model':_0xddf5('0xc'),'as':_0xddf5('0xd')}]},'log':_0xddf5('0xe')});};};exports[_0xddf5('0xf')]=function(_0x3a1e13,_0x3df89){return client[_0xddf5('0x2')](_0xddf5('0x10'),{'account':{'id':_0x3a1e13},'body':_0x3df89,'log':_0xddf5('0x10')});};
\ No newline at end of file
+var _0x2507=['ListId','TemplateId','MailServerIn','Imap','MailServerOut','Smtp','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','email','key'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x2507,0xda));var _0x7250=function(_0xe3d5,_0x1f1b7f){_0xe3d5=_0xe3d5-0x0;var _0x2c1ed7=_0x2507[_0xe3d5];return _0x2c1ed7;};'use strict';var client=require(_0x7250('0x0'));exports[_0x7250('0x1')]=function(){return function(){return client[_0x7250('0x2')](_0x7250('0x3'),{'options':{'attributes':['id',_0x7250('0x4'),'service',_0x7250('0x5'),'active',_0x7250('0x6'),_0x7250('0x7'),_0x7250('0x8')],'raw':![],'include':[{'model':_0x7250('0x9'),'as':_0x7250('0xa')},{'model':_0x7250('0xb'),'as':_0x7250('0xc')}]},'log':'getMailAccount'});};};exports[_0x7250('0xd')]=function(_0x2bef86,_0x197268){return client[_0x7250('0x2')]('NotifyMailAccount',{'account':{'id':_0x2bef86},'body':_0x197268,'log':_0x7250('0xe')});};
\ No newline at end of file
index 8abfe85..5d2b6af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07e0=['../client','getSettings','ShowSetting','GetSettings'];(function(_0x5bc682,_0x3b4f4b){var _0x474109=function(_0x5246b4){while(--_0x5246b4){_0x5bc682['push'](_0x5bc682['shift']());}};_0x474109(++_0x3b4f4b);}(_0x07e0,0x1c4));var _0x007e=function(_0x1a9283,_0x57eafc){_0x1a9283=_0x1a9283-0x0;var _0x5353fb=_0x07e0[_0x1a9283];return _0x5353fb;};'use strict';var client=require(_0x007e('0x0'));exports[_0x007e('0x1')]=function(){return client['Request'](_0x007e('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':_0x007e('0x3')});};
\ No newline at end of file
+var _0x6209=['loginMailFrequency','GetSettings','../client','getSettings','Request','ShowSetting'];(function(_0x3902c1,_0x1c9eb2){var _0x1266cc=function(_0x50c2c5){while(--_0x50c2c5){_0x3902c1['push'](_0x3902c1['shift']());}};_0x1266cc(++_0x1c9eb2);}(_0x6209,0xaa));var _0x9620=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x6209[_0x110c3d];return _0x226d67;};'use strict';var client=require(_0x9620('0x0'));exports[_0x9620('0x1')]=function(){return client[_0x9620('0x2')](_0x9620('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x9620('0x4')]},'log':_0x9620('0x5')});};
\ No newline at end of file
index 3d97260..6ce6f7e 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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xa9e0[_0xbe200f];return _0x192597;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'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 e7841ce..3439f5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab25=['express','ioredis','../../config/environment','createServer','port','socket.io','websocket','redis','localhost','adapter','socket.io-redis','default','../../config/socketio','../../config/express','../../routes','once','listening','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http'];(function(_0x5406be,_0x4fac5f){var _0x174807=function(_0x56dacf){while(--_0x56dacf){_0x5406be['push'](_0x5406be['shift']());}};_0x174807(++_0x4fac5f);}(_0xab25,0xe5));var _0x5ab2=function(_0x1177a1,_0xcadbc){_0x1177a1=_0x1177a1-0x0;var _0x342968=_0xab25[_0x1177a1];return _0x342968;};'use strict';var _=require(_0x5ab2('0x0'));var http=require(_0x5ab2('0x1'));var express=require(_0x5ab2('0x2'));var sticky=require('sticky-session');var Redis=require(_0x5ab2('0x3'));var config=require(_0x5ab2('0x4'));var app=express();var server=http[_0x5ab2('0x5')](app);server['timeout']=0xdbba0;if(sticky['listen'](server,config[_0x5ab2('0x6')])){var socketio=require(_0x5ab2('0x7'))(server,{'transports':[_0x5ab2('0x8'),'polling']});config[_0x5ab2('0x9')]=_['defaults'](config['redis'],{'host':_0x5ab2('0xa'),'port':0x18eb});socketio[_0x5ab2('0xb')](require(_0x5ab2('0xc'))({'pubClient':new Redis(config[_0x5ab2('0x9')]),'subClient':new Redis(config[_0x5ab2('0x9')])}));require('../../config/triggers')[_0x5ab2('0xd')]();require(_0x5ab2('0xe'))[_0x5ab2('0xd')](socketio);require(_0x5ab2('0xf'))[_0x5ab2('0xd')](app);require(_0x5ab2('0x10'))[_0x5ab2('0xd')](app);}else{server[_0x5ab2('0x11')](_0x5ab2('0x12'),function(){console['log'](_0x5ab2('0x13'),config['port']);});}exports=module[_0x5ab2('0x14')]=app;
\ No newline at end of file
+var _0x9d46=['sticky-session','ioredis','../../config/environment','createServer','listen','socket.io','websocket','polling','redis','adapter','socket.io-redis','../../config/express','../../routes','default','once','port','exports','http','express'];(function(_0x1eb786,_0x1b5f72){var _0x460cad=function(_0x3ec7a6){while(--_0x3ec7a6){_0x1eb786['push'](_0x1eb786['shift']());}};_0x460cad(++_0x1b5f72);}(_0x9d46,0xcf));var _0x69d4=function(_0x56c456,_0xe1505c){_0x56c456=_0x56c456-0x0;var _0x5ad14c=_0x9d46[_0x56c456];return _0x5ad14c;};'use strict';var _=require('lodash');var http=require(_0x69d4('0x0'));var express=require(_0x69d4('0x1'));var sticky=require(_0x69d4('0x2'));var Redis=require(_0x69d4('0x3'));var config=require(_0x69d4('0x4'));var app=express();var server=http[_0x69d4('0x5')](app);server['timeout']=0xdbba0;if(sticky[_0x69d4('0x6')](server,config['port'])){var socketio=require(_0x69d4('0x7'))(server,{'transports':[_0x69d4('0x8'),_0x69d4('0x9')]});config[_0x69d4('0xa')]=_['defaults'](config[_0x69d4('0xa')],{'host':'localhost','port':0x18eb});socketio[_0x69d4('0xb')](require(_0x69d4('0xc'))({'pubClient':new Redis(config['redis']),'subClient':new Redis(config[_0x69d4('0xa')])}));require('../../config/triggers')['default']();require('../../config/socketio')['default'](socketio);require(_0x69d4('0xd'))['default'](app);require(_0x69d4('0xe'))[_0x69d4('0xf')](app);}else{server[_0x69d4('0x10')]('listening',function(){console['log']('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x69d4('0x11')]);});}exports=module[_0x69d4('0x12')]=app;
\ No newline at end of file
index 5105897..3d6768f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['jayson/promise','bluebird','../../config/logger','client','Request','request','then','debug','rpc','routing','error','message','result','catch','exports'];(function(_0x366abc,_0x2dd460){var _0x5e1bac=function(_0x274993){while(--_0x274993){_0x366abc['push'](_0x366abc['shift']());}};_0x5e1bac(++_0x2dd460);}(_0xda2d,0x195));var _0xdda2=function(_0x4a7750,_0x4d5014){_0x4a7750=_0x4a7750-0x0;var _0x1229d7=_0xda2d[_0x4a7750];return _0x1229d7;};'use strict';var jayson=require(_0xdda2('0x0'));var BPromise=require(_0xdda2('0x1'));var logger=require(_0xdda2('0x2'))('routing');var client=jayson[_0xdda2('0x3')]['http']({'port':0x2329});client[_0xdda2('0x4')]=function(_0x3def4c,_0x513a97){return new BPromise(function(_0x213ae4,_0xe85ec5){return client[_0xdda2('0x5')](_0x3def4c,_0x513a97)[_0xdda2('0x6')](function(_0x526ca3){logger[_0xdda2('0x7')](_0xdda2('0x8'),_0xdda2('0x9'),_0x3def4c,_0x513a97,_0x526ca3);if(_0x526ca3[_0xdda2('0xa')]){logger[_0xdda2('0xa')](_0xdda2('0x8'),'routing',_0x3def4c,_0x526ca3[_0xdda2('0xa')][_0xdda2('0xb')],_0x513a97);return _0xe85ec5(_0x526ca3['error'][_0xdda2('0xb')]);}else{return _0x213ae4(_0x526ca3[_0xdda2('0xc')]);}})[_0xdda2('0xd')](function(_0xb30e51){logger[_0xdda2('0xa')]('rpc','routing',_0x3def4c,_0xb30e51,_0x513a97);return _0xe85ec5(_0xb30e51);});});};module[_0xdda2('0xe')]=client;
\ No newline at end of file
+var _0xbed3=['bluebird','../../config/logger','routing','client','http','debug','error','message','result','exports','jayson/promise'];(function(_0x1c9feb,_0x3f5b2){var _0x1163d8=function(_0x4b000f){while(--_0x4b000f){_0x1c9feb['push'](_0x1c9feb['shift']());}};_0x1163d8(++_0x3f5b2);}(_0xbed3,0x128));var _0x3bed=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xbed3[_0x5b644e];return _0x49c6bf;};'use strict';var jayson=require(_0x3bed('0x0'));var BPromise=require(_0x3bed('0x1'));var logger=require(_0x3bed('0x2'))(_0x3bed('0x3'));var client=jayson[_0x3bed('0x4')][_0x3bed('0x5')]({'port':0x2329});client['Request']=function(_0x44d030,_0xbdf9ca){return new BPromise(function(_0x4165ac,_0x402897){return client['request'](_0x44d030,_0xbdf9ca)['then'](function(_0x1f1baa){logger[_0x3bed('0x6')]('rpc',_0x3bed('0x3'),_0x44d030,_0xbdf9ca,_0x1f1baa);if(_0x1f1baa[_0x3bed('0x7')]){logger[_0x3bed('0x7')]('rpc',_0x3bed('0x3'),_0x44d030,_0x1f1baa['error']['message'],_0xbdf9ca);return _0x402897(_0x1f1baa[_0x3bed('0x7')][_0x3bed('0x8')]);}else{return _0x4165ac(_0x1f1baa[_0x3bed('0x9')]);}})['catch'](function(_0x46479f){logger[_0x3bed('0x7')]('rpc',_0x3bed('0x3'),_0x44d030,_0x46479f,_0xbdf9ca);return _0x402897(_0x46479f);});});};module[_0x3bed('0xa')]=client;
\ No newline at end of file
index 3e2ee01..23bd990 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe339=['catch','log','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues'];(function(_0x1e5cc3,_0x238a87){var _0x15c596=function(_0x27bb04){while(--_0x27bb04){_0x1e5cc3['push'](_0x1e5cc3['shift']());}};_0x15c596(++_0x238a87);}(_0xe339,0xff));var _0x9e33=function(_0x58c20f,_0x4cdb1b){_0x58c20f=_0x58c20f-0x0;var _0x3b0318=_0xe339[_0x58c20f];return _0x3b0318;};'use strict';var BPromise=require('bluebird');var server=require(_0x9e33('0x0'));var Realtime=require(_0x9e33('0x1'));var user=require(_0x9e33('0x2'));var interval=require(_0x9e33('0x3'));var openchannelQueue=require(_0x9e33('0x4'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0x9e33('0x5'));var mailQueue=require(_0x9e33('0x6'));var faxQueue=require(_0x9e33('0x7'));var whatsappQueue=require(_0x9e33('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x9e33('0x9')]()[_0x9e33('0xa')](user['getAgents']())[_0x9e33('0xa')](realtime['initAgents']())[_0x9e33('0xa')](interval['getIntervals']())[_0x9e33('0xa')](realtime[_0x9e33('0xb')]())['then'](openchannelQueue[_0x9e33('0xc')]())[_0x9e33('0xa')](realtime[_0x9e33('0xd')]())[_0x9e33('0xa')](chatQueue[_0x9e33('0xe')]())[_0x9e33('0xa')](realtime['initChatQueues']())[_0x9e33('0xa')](smsQueue['getSmsQueues']())[_0x9e33('0xa')](realtime[_0x9e33('0xf')]())[_0x9e33('0xa')](mailQueue[_0x9e33('0x10')]())['then'](realtime[_0x9e33('0x11')]())['then'](faxQueue[_0x9e33('0x12')]())[_0x9e33('0xa')](realtime[_0x9e33('0x13')]())[_0x9e33('0xa')](whatsappQueue[_0x9e33('0x14')]())[_0x9e33('0xa')](realtime['initWhatsappQueues']())[_0x9e33('0xa')](function(){return realtime;});}function main(){return server['listen'](realtime)['then'](function(_0x280e6f){return initRealtime();})[_0x9e33('0xa')](function(_0x53fa4d){return setInterval(initRealtime,0x1388);})[_0x9e33('0x15')](function(_0xa2cc58){console[_0x9e33('0x16')](_0xa2cc58);});}main();
\ No newline at end of file
+var _0x5028=['./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getWhatsappQueues','initWhatsappQueues','catch','bluebird','./server','./realtime'];(function(_0x118720,_0x1cc261){var _0x5329c9=function(_0x48176c){while(--_0x48176c){_0x118720['push'](_0x118720['shift']());}};_0x5329c9(++_0x1cc261);}(_0x5028,0x99));var _0x8502=function(_0x3f550a,_0x7c5453){_0x3f550a=_0x3f550a-0x0;var _0x25e9ce=_0x5028[_0x3f550a];return _0x25e9ce;};'use strict';var BPromise=require(_0x8502('0x0'));var server=require(_0x8502('0x1'));var Realtime=require(_0x8502('0x2'));var user=require(_0x8502('0x3'));var interval=require(_0x8502('0x4'));var openchannelQueue=require(_0x8502('0x5'));var chatQueue=require(_0x8502('0x6'));var smsQueue=require('./rpc/smsQueue');var mailQueue=require(_0x8502('0x7'));var faxQueue=require(_0x8502('0x8'));var whatsappQueue=require(_0x8502('0x9'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x8502('0xa')]()[_0x8502('0xb')](user[_0x8502('0xc')]())[_0x8502('0xb')](realtime[_0x8502('0xd')]())[_0x8502('0xb')](interval[_0x8502('0xe')]())['then'](realtime[_0x8502('0xf')]())['then'](openchannelQueue[_0x8502('0x10')]())[_0x8502('0xb')](realtime[_0x8502('0x11')]())['then'](chatQueue['getChatQueues']())[_0x8502('0xb')](realtime[_0x8502('0x12')]())[_0x8502('0xb')](smsQueue[_0x8502('0x13')]())[_0x8502('0xb')](realtime[_0x8502('0x14')]())[_0x8502('0xb')](mailQueue[_0x8502('0x15')]())[_0x8502('0xb')](realtime[_0x8502('0x16')]())[_0x8502('0xb')](faxQueue['getFaxQueues']())[_0x8502('0xb')](realtime['initFaxQueues']())[_0x8502('0xb')](whatsappQueue[_0x8502('0x17')]())[_0x8502('0xb')](realtime[_0x8502('0x18')]())[_0x8502('0xb')](function(){return realtime;});}function main(){return server['listen'](realtime)[_0x8502('0xb')](function(_0x42ce0e){return initRealtime();})[_0x8502('0xb')](function(_0x7dc666){return setInterval(initRealtime,0x1388);})[_0x8502('0x19')](function(_0x431e87){console['log'](_0x431e87);});}main();
\ No newline at end of file
index f6c7164..78fd912 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['init','parse','map','object','lodash','util','events','EventEmitter','isNil','register','ignoreFactChanges','inherits','prototype','rules','isArray','concat','isObject','push','sync','filter','activeRules','orderBy','asc','execute','result','clone','name','ruleRef','call','next','isEqual','nextTick','restart','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','consequence','fromJSON'];(function(_0x339c23,_0x541ff6){var _0x5bf134=function(_0x46c91d){while(--_0x46c91d){_0x339c23['push'](_0x339c23['shift']());}};_0x5bf134(++_0x541ff6);}(_0x814b,0x1a2));var _0xb814=function(_0x3b7b42,_0x31badd){_0x3b7b42=_0x3b7b42-0x0;var _0x1ebaad=_0x814b[_0x3b7b42];return _0x1ebaad;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var EventEmitter=require(_0xb814('0x2'))[_0xb814('0x3')];function RuleEngine(_0xfbb64b,_0x477725){this['init']();if(!_[_0xb814('0x4')](_0xfbb64b)){this[_0xb814('0x5')](_0xfbb64b);}if(_0x477725){this[_0xb814('0x6')]=_0x477725[_0xb814('0x6')];}return this;}util[_0xb814('0x7')](RuleEngine,EventEmitter);RuleEngine[_0xb814('0x8')]['init']=function(_0x3b0829){this[_0xb814('0x9')]=[];this['activeRules']=[];};RuleEngine[_0xb814('0x8')][_0xb814('0x5')]=function(_0x186d5a){if(Array[_0xb814('0xa')](_0x186d5a)){this[_0xb814('0x9')]=this[_0xb814('0x9')][_0xb814('0xb')](_0x186d5a);}else if(_0x186d5a!==null&&_[_0xb814('0xc')](_0x186d5a)){this[_0xb814('0x9')][_0xb814('0xd')](_0x186d5a);}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0xe')]=function(){this['activeRules']=this[_0xb814('0x9')][_0xb814('0xf')](function(_0x35b10d){if(_[_0xb814('0x4')](_0x35b10d['on'])){_0x35b10d['on']=!![];}if(_0x35b10d['on']===!![]){return _0x35b10d;}});this[_0xb814('0x10')]=_[_0xb814('0x11')](this[_0xb814('0x10')],['p'],[_0xb814('0x12')]);};RuleEngine[_0xb814('0x8')][_0xb814('0x13')]=function(_0x3f4881,_0x44fb96){var _0x17f5bd=![];_0x3f4881[_0xb814('0x14')]=!![];var _0x303aca=_[_0xb814('0x15')](_0x3f4881);var _0x45e0d0=_[_0xb814('0x15')](_0x3f4881);var _0x125ce2=this[_0xb814('0x10')];var _0x7a21ef=[];var _0x48c9df=this[_0xb814('0x6')];(function FnRuleLoop(_0x55ba16){var _0x270598={'rules':function(){return _0x125ce2;},'rule':function(){return _0x125ce2[_0x55ba16];},'when':function(_0xfac75b){if(_0xfac75b){var _0x4c3007=_0x125ce2[_0x55ba16]['consequence'];_0x4c3007['ruleRef']=_0x125ce2[_0x55ba16]['id']||_0x125ce2[_0x55ba16][_0xb814('0x16')]||'index_'+_0x55ba16;process['nextTick'](function(){_0x7a21ef[_0xb814('0xd')](_0x4c3007[_0xb814('0x17')]);_0x4c3007[_0xb814('0x18')](_0x303aca,_0x270598);});}else{process['nextTick'](function(){_0x270598[_0xb814('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x17f5bd=!![];return FnRuleLoop(0x0);},'next':function(_0x531032){if(!_0x48c9df&&!_[_0xb814('0x1a')](_0x45e0d0,_0x303aca)){_0x45e0d0=_[_0xb814('0x15')](_0x303aca);process[_0xb814('0x1b')](function(){_0x270598[_0xb814('0x1c')]();});}else{process[_0xb814('0x1b')](function(){if(_[_0xb814('0x4')](_0x531032)){return FnRuleLoop(_0x55ba16+0x1);}else{return FnRuleLoop(_0x531032);}});}}};if(_0x55ba16<_0x125ce2[_0xb814('0x1d')]&&_0x17f5bd===![]){var _0x594470=_0x125ce2[_0x55ba16][_0xb814('0x1e')];_0x594470['call'](_0x303aca,_0x270598);}else{process[_0xb814('0x1b')](function(){_0x303aca[_0xb814('0x1f')]=_0x7a21ef;return _0x44fb96?_0x44fb96(_0x303aca):_[_0xb814('0x20')]();});}}(0x0));};RuleEngine[_0xb814('0x8')][_0xb814('0x21')]=function(_0xb9e57d){if(_[_0xb814('0x4')](_0xb9e57d)){return this['rules'];}else{var _0x392222=_[_0xb814('0x22')](_0xb9e57d);return _[_0xb814('0xf')](this[_0xb814('0x9')],_0x392222);}};RuleEngine[_0xb814('0x8')][_0xb814('0x23')]=function(_0x3f0150,_0x1e4e89){var _0x5a6291=_0x3f0150==='on'||_0x3f0150==='ON'?!![]:![];var _0x271aa8=this[_0xb814('0x21')](_0x1e4e89);for(var _0x52ed64=0x0,_0x9008b2=_0x271aa8[_0xb814('0x1d')];_0x52ed64<_0x9008b2;_0x52ed64+=0x1){_0x271aa8[_0x52ed64]['on']=_0x5a6291;}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0x24')]=function(_0x2051d0,_0x58c3ca){_0x2051d0=parseInt(_0x2051d0,0xa);var _0x338a28=this['findRules'](_0x58c3ca);for(var _0x6efe9a=0x0,_0x5f3e9b=_0x338a28['length'];_0x6efe9a<_0x5f3e9b;_0x6efe9a+=0x1){_0x338a28[_0x6efe9a][_0xb814('0x25')]=_0x2051d0;}this['sync']();};RuleEngine[_0xb814('0x8')][_0xb814('0x26')]=function(){var _0x2b91bd=this['rules'];if(_0x2b91bd instanceof Array){_0x2b91bd=_0x2b91bd['map'](function(_0x26d3a9){_0x26d3a9[_0xb814('0x1e')]=_0x26d3a9['condition'][_0xb814('0x27')]();_0x26d3a9[_0xb814('0x28')]=_0x26d3a9[_0xb814('0x28')][_0xb814('0x27')]();return _0x26d3a9;});}else if(!_[_0xb814('0x4')](_0x2b91bd)){_0x2b91bd[_0xb814('0x1e')]=_0x2b91bd[_0xb814('0x1e')]['toString']();_0x2b91bd[_0xb814('0x28')]=_0x2b91bd[_0xb814('0x28')][_0xb814('0x27')]();}return _0x2b91bd;};RuleEngine[_0xb814('0x8')][_0xb814('0x29')]=function(_0x4ff31a){this[_0xb814('0x2a')]();if(_['isString'](_0x4ff31a)){_0x4ff31a=JSON[_0xb814('0x2b')](_0x4ff31a);}if(_0x4ff31a instanceof Array){_0x4ff31a=_0x4ff31a[_0xb814('0x2c')](function(_0xe0f509){_0xe0f509['condition']=eval('('+_0xe0f509[_0xb814('0x1e')]+')');_0xe0f509[_0xb814('0x28')]=eval('('+_0xe0f509['consequence']+')');return _0xe0f509;});}else if(_0x4ff31a!==null&&typeof _0x4ff31a==_0xb814('0x2d')){_0x4ff31a[_0xb814('0x1e')]=eval('('+_0x4ff31a[_0xb814('0x1e')]+')');_0x4ff31a[_0xb814('0x28')]=eval('('+_0x4ff31a[_0xb814('0x28')]+')');}this[_0xb814('0x5')](_0x4ff31a);};module['exports']=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(_0x46af7e,_0x3e32c7){var _0x4c0447=function(_0x42fc16){while(--_0x42fc16){_0x46af7e['push'](_0x46af7e['shift']());}};_0x4c0447(++_0x3e32c7);}(_0x326f,0xd1));var _0xf326=function(_0x4cd6c5,_0x54324b){_0x4cd6c5=_0x4cd6c5-0x0;var _0x426c95=_0x326f[_0x4cd6c5];return _0x426c95;};'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 0259235..7a07bdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2614=['error','result','catch','sendMailMessage','http'];(function(_0x90951f,_0x4cde35){var _0xd93f0d=function(_0x49808d){while(--_0x49808d){_0x90951f['push'](_0x90951f['shift']());}};_0xd93f0d(++_0x4cde35);}(_0x2614,0xb3));var _0x4261=function(_0x4620fd,_0x37be01){_0x4620fd=_0x4620fd-0x0;var _0x2934bf=_0x2614[_0x4620fd];return _0x2934bf;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var client=jayson['client'][_0x4261('0x0')]({'port':0x232b});function request(_0x434fac,_0x190624){return new BPromise(function(_0x308891,_0x16c593){return client['request'](_0x434fac,_0x190624)['then'](function(_0x495e50){if(_0x495e50[_0x4261('0x1')]){return _0x16c593(_0x495e50[_0x4261('0x1')]['message']);}else{return _0x308891(_0x495e50[_0x4261('0x2')]);}})[_0x4261('0x3')](function(_0x2f19b8){return _0x16c593(_0x2f19b8);});});}exports[_0x4261('0x4')]=function(_0x5e3c85,_0x5101c9){return request('SendMail',{'account':_0x5e3c85,'message':_0x5101c9});};
\ No newline at end of file
+var _0x5550=['result','catch','sendMailMessage','SendMail','bluebird','jayson/promise','client','http','request','error','message'];(function(_0x2a8c21,_0x163576){var _0x5f3061=function(_0x4dc8eb){while(--_0x4dc8eb){_0x2a8c21['push'](_0x2a8c21['shift']());}};_0x5f3061(++_0x163576);}(_0x5550,0x1a6));var _0x0555=function(_0x4ef2f6,_0x417405){_0x4ef2f6=_0x4ef2f6-0x0;var _0x3dd974=_0x5550[_0x4ef2f6];return _0x3dd974;};'use strict';var BPromise=require(_0x0555('0x0'));var jayson=require(_0x0555('0x1'));var client=jayson[_0x0555('0x2')][_0x0555('0x3')]({'port':0x232b});function request(_0x106d7f,_0x2d3e93){return new BPromise(function(_0x59a9dd,_0x1c28c8){return client[_0x0555('0x4')](_0x106d7f,_0x2d3e93)['then'](function(_0x2b981f){if(_0x2b981f[_0x0555('0x5')]){return _0x1c28c8(_0x2b981f[_0x0555('0x5')][_0x0555('0x6')]);}else{return _0x59a9dd(_0x2b981f[_0x0555('0x7')]);}})[_0x0555('0x8')](function(_0x3c859a){return _0x1c28c8(_0x3c859a);});});}exports[_0x0555('0x9')]=function(_0x2aeec8,_0x2d6175){return request(_0x0555('0xa'),{'account':_0x2aeec8,'message':_0x2d6175});};
\ No newline at end of file
index 68582ff..76142d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd2e=['name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatusTime','smsCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','chat','fax','sms','whatsapp','length','Status','StatusTime','toNumber','smsStatus','smsCurrentCapacity','stringify','emit','user:save','lodash','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost'];(function(_0x37ba47,_0x4ecf7e){var _0x330a32=function(_0x5f09ab){while(--_0x5f09ab){_0x37ba47['push'](_0x37ba47['shift']());}};_0x330a32(++_0x4ecf7e);}(_0xfd2e,0x1a3));var _0xefd2=function(_0x332110,_0x5696bc){_0x332110=_0x332110-0x0;var _0x42797d=_0xfd2e[_0x332110];return _0x42797d;};'use strict';var _=require(_0xefd2('0x0'));var moment=require(_0xefd2('0x1'));var md5=require(_0xefd2('0x2'));var Redis=require(_0xefd2('0x3'));var config=require(_0xefd2('0x4'));config[_0xefd2('0x5')]=_[_0xefd2('0x6')](config[_0xefd2('0x5')],{'host':_0xefd2('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xefd2('0x5')]));function Agent(_0x35151f){this['id']=_0x35151f['id']||0x0;this[_0xefd2('0x8')]=_0x35151f[_0xefd2('0x8')]||'';this[_0xefd2('0x9')]=_0x35151f[_0xefd2('0x9')]||!![];this['voicePause']=_0x35151f[_0xefd2('0xa')]||![];this[_0xefd2('0xb')]=_0x35151f[_0xefd2('0xb')]||![];this['mailPause']=_0x35151f[_0xefd2('0xc')]||![];this[_0xefd2('0xd')]=_0x35151f['faxPause']||![];this[_0xefd2('0xe')]=_0x35151f[_0xefd2('0xe')]||![];this[_0xefd2('0xf')]=_0x35151f[_0xefd2('0xf')]||![];this[_0xefd2('0x10')]=_0xefd2('0x11');this[_0xefd2('0x12')]=0x0;this[_0xefd2('0x13')]=_0x35151f['chatCapacity']||0x0;this[_0xefd2('0x14')]=0x0;this[_0xefd2('0x15')]=_0xefd2('0x11');this['mailStatusTime']=0x0;this[_0xefd2('0x16')]=_0x35151f[_0xefd2('0x16')]||0x0;this[_0xefd2('0x17')]=0x0;this[_0xefd2('0x18')]=_0xefd2('0x11');this[_0xefd2('0x19')]=0x0;this[_0xefd2('0x1a')]=_0x35151f[_0xefd2('0x1a')]||0x0;this[_0xefd2('0x1b')]=0x0;this['smsStatus']=_0xefd2('0x11');this[_0xefd2('0x1c')]=0x0;this[_0xefd2('0x1d')]=_0x35151f[_0xefd2('0x1d')]||0x0;this['smsCurrentCapacity']=0x0;this[_0xefd2('0x1e')]=_0xefd2('0x11');this[_0xefd2('0x1f')]=0x0;this['whatsappCapacity']=_0x35151f[_0xefd2('0x20')]||0x0;this[_0xefd2('0x21')]=0x0;this[_0xefd2('0x22')]=_0xefd2('0x11');this['openchannelStatusTime']=0x0;this[_0xefd2('0x23')]=_0x35151f[_0xefd2('0x23')]||0x0;this[_0xefd2('0x24')]=0x0;this[_0xefd2('0x25')]=![];this[_0xefd2('0x26')]=undefined;this[_0xefd2('0x2')]='';this[_0xefd2('0x27')]();}Agent[_0xefd2('0x28')][_0xefd2('0x29')]=function(_0x49c9ac){if(this[_0x49c9ac+_0xefd2('0x2a')]>0x0){if(this[_0x49c9ac+_0xefd2('0x2b')]>0x0&&this[_0x49c9ac+_0xefd2('0x2a')]>=this[_0x49c9ac+_0xefd2('0x2b')]){return _0xefd2('0x2c');}else{return _0xefd2('0x2d');}}else{return _0xefd2('0x2e');}};Agent['prototype'][_0xefd2('0x27')]=function(){var _0xc5e578=[_0xefd2('0x2f'),_0xefd2('0x30'),'openchannel',_0xefd2('0x31'),_0xefd2('0x32'),_0xefd2('0x33')];for(var _0x37cfaa=0x0;_0x37cfaa<_0xc5e578[_0xefd2('0x34')];_0x37cfaa+=0x1){var _0x7631d7=this[_0xefd2('0x29')](_0xc5e578[_0x37cfaa]);if(this[_0xc5e578[_0x37cfaa]+_0xefd2('0x35')]!==_0x7631d7){this[_0xc5e578[_0x37cfaa]+_0xefd2('0x36')]=_[_0xefd2('0x37')](moment()['format']('x'));}this[_0xc5e578[_0x37cfaa]+_0xefd2('0x35')]=_0x7631d7;}var _0x54d82a={'id':this['id'],'name':this[_0xefd2('0x8')],'online':this[_0xefd2('0x9')],'voicePause':this[_0xefd2('0xa')],'chatPause':this[_0xefd2('0xb')],'mailPause':this[_0xefd2('0xc')],'smsPause':this[_0xefd2('0xe')],'faxPause':this[_0xefd2('0xd')],'openchannelPause':this[_0xefd2('0xf')],'chatStatus':this[_0xefd2('0x10')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0xefd2('0x15')],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this[_0xefd2('0x16')],'mailCurrentCapacity':this[_0xefd2('0x17')],'faxStatus':this[_0xefd2('0x18')],'faxStatusTime':this[_0xefd2('0x19')],'faxCapacity':this[_0xefd2('0x1a')],'faxCurrentCapacity':this[_0xefd2('0x1b')],'smsStatus':this[_0xefd2('0x38')],'smsStatusTime':this[_0xefd2('0x1c')],'smsCapacity':this[_0xefd2('0x1d')],'smsCurrentCapacity':this[_0xefd2('0x39')],'whatsappStatus':this[_0xefd2('0x1e')],'whatsappStatusTime':this[_0xefd2('0x1f')],'whatsappCapacity':this[_0xefd2('0x20')],'whatsappCurrentCapacity':this[_0xefd2('0x21')],'openchannelStatus':this[_0xefd2('0x22')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0xefd2('0x23')],'openchannelCurrentCapacity':this[_0xefd2('0x24')],'busy':this[_0xefd2('0x25')],'busyQueue':this[_0xefd2('0x26')]};var _0x2d39d7=md5(JSON[_0xefd2('0x3a')](_0x54d82a));if(this['md5']!==_0x2d39d7){this['md5']=_0x2d39d7;io[_0xefd2('0x3b')](_0xefd2('0x3c'),_0x54d82a);}};module['exports']=Agent;
\ No newline at end of file
+var _0x5d3b=['redis','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','openchannelPause','unknown','chatStatusTime','chatCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatusTime','faxCapacity','smsStatusTime','smsCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','idle','mail','chat','openchannel','sms','length','Status','StatusTime','toNumber','format','chatStatus','chatCurrentCapacity','faxStatus','smsStatus','smsCurrentCapacity','stringify','emit','exports','lodash','md5','ioredis','../../../config/environment','defaults'];(function(_0x13d582,_0x39717f){var _0x33098f=function(_0x1f02ce){while(--_0x1f02ce){_0x13d582['push'](_0x13d582['shift']());}};_0x33098f(++_0x39717f);}(_0x5d3b,0x1d3));var _0xb5d3=function(_0x32a34b,_0x214a6f){_0x32a34b=_0x32a34b-0x0;var _0x4fef41=_0x5d3b[_0x32a34b];return _0x4fef41;};'use strict';var _=require(_0xb5d3('0x0'));var moment=require('moment');var md5=require(_0xb5d3('0x1'));var Redis=require(_0xb5d3('0x2'));var config=require(_0xb5d3('0x3'));config['redis']=_[_0xb5d3('0x4')](config[_0xb5d3('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xb5d3('0x6'))(new Redis(config['redis']));function Agent(_0x4a0422){this['id']=_0x4a0422['id']||0x0;this[_0xb5d3('0x7')]=_0x4a0422['name']||'';this[_0xb5d3('0x8')]=_0x4a0422['online']||!![];this['voicePause']=_0x4a0422[_0xb5d3('0x9')]||![];this[_0xb5d3('0xa')]=_0x4a0422['chatPause']||![];this[_0xb5d3('0xb')]=_0x4a0422[_0xb5d3('0xb')]||![];this[_0xb5d3('0xc')]=_0x4a0422[_0xb5d3('0xc')]||![];this['smsPause']=_0x4a0422['smsPause']||![];this[_0xb5d3('0xd')]=_0x4a0422['openchannelPause']||![];this['chatStatus']=_0xb5d3('0xe');this[_0xb5d3('0xf')]=0x0;this['chatCapacity']=_0x4a0422[_0xb5d3('0x10')]||0x0;this['chatCurrentCapacity']=0x0;this[_0xb5d3('0x11')]=_0xb5d3('0xe');this[_0xb5d3('0x12')]=0x0;this[_0xb5d3('0x13')]=_0x4a0422[_0xb5d3('0x13')]||0x0;this[_0xb5d3('0x14')]=0x0;this['faxStatus']=_0xb5d3('0xe');this[_0xb5d3('0x15')]=0x0;this[_0xb5d3('0x16')]=_0x4a0422[_0xb5d3('0x16')]||0x0;this['faxCurrentCapacity']=0x0;this['smsStatus']=_0xb5d3('0xe');this[_0xb5d3('0x17')]=0x0;this[_0xb5d3('0x18')]=_0x4a0422[_0xb5d3('0x18')]||0x0;this['smsCurrentCapacity']=0x0;this[_0xb5d3('0x19')]=_0xb5d3('0xe');this[_0xb5d3('0x1a')]=0x0;this['whatsappCapacity']=_0x4a0422[_0xb5d3('0x1b')]||0x0;this[_0xb5d3('0x1c')]=0x0;this[_0xb5d3('0x1d')]=_0xb5d3('0xe');this[_0xb5d3('0x1e')]=0x0;this[_0xb5d3('0x1f')]=_0x4a0422[_0xb5d3('0x1f')]||0x0;this[_0xb5d3('0x20')]=0x0;this[_0xb5d3('0x21')]=![];this[_0xb5d3('0x22')]=undefined;this[_0xb5d3('0x1')]='';this[_0xb5d3('0x23')]();}Agent[_0xb5d3('0x24')][_0xb5d3('0x25')]=function(_0xc6af7){if(this[_0xc6af7+_0xb5d3('0x26')]>0x0){if(this[_0xc6af7+'Capacity']>0x0&&this[_0xc6af7+_0xb5d3('0x26')]>=this[_0xc6af7+_0xb5d3('0x27')]){return _0xb5d3('0x28');}else{return'working';}}else{return _0xb5d3('0x29');}};Agent[_0xb5d3('0x24')][_0xb5d3('0x23')]=function(){var _0x22fc9b=[_0xb5d3('0x2a'),_0xb5d3('0x2b'),_0xb5d3('0x2c'),'fax',_0xb5d3('0x2d'),'whatsapp'];for(var _0x42a3ab=0x0;_0x42a3ab<_0x22fc9b[_0xb5d3('0x2e')];_0x42a3ab+=0x1){var _0x1d8d9d=this[_0xb5d3('0x25')](_0x22fc9b[_0x42a3ab]);if(this[_0x22fc9b[_0x42a3ab]+_0xb5d3('0x2f')]!==_0x1d8d9d){this[_0x22fc9b[_0x42a3ab]+_0xb5d3('0x30')]=_[_0xb5d3('0x31')](moment()[_0xb5d3('0x32')]('x'));}this[_0x22fc9b[_0x42a3ab]+_0xb5d3('0x2f')]=_0x1d8d9d;}var _0x344a84={'id':this['id'],'name':this[_0xb5d3('0x7')],'online':this[_0xb5d3('0x8')],'voicePause':this[_0xb5d3('0x9')],'chatPause':this['chatPause'],'mailPause':this[_0xb5d3('0xb')],'smsPause':this['smsPause'],'faxPause':this[_0xb5d3('0xc')],'openchannelPause':this[_0xb5d3('0xd')],'chatStatus':this[_0xb5d3('0x33')],'chatStatusTime':this[_0xb5d3('0xf')],'chatCapacity':this[_0xb5d3('0x10')],'chatCurrentCapacity':this[_0xb5d3('0x34')],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0xb5d3('0x12')],'mailCapacity':this[_0xb5d3('0x13')],'mailCurrentCapacity':this[_0xb5d3('0x14')],'faxStatus':this[_0xb5d3('0x35')],'faxStatusTime':this[_0xb5d3('0x15')],'faxCapacity':this[_0xb5d3('0x16')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this[_0xb5d3('0x36')],'smsStatusTime':this[_0xb5d3('0x17')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0xb5d3('0x37')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0xb5d3('0x1a')],'whatsappCapacity':this[_0xb5d3('0x1b')],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0xb5d3('0x1d')],'openchannelStatusTime':this[_0xb5d3('0x1e')],'openchannelCapacity':this[_0xb5d3('0x1f')],'openchannelCurrentCapacity':this[_0xb5d3('0x20')],'busy':this[_0xb5d3('0x21')],'busyQueue':this[_0xb5d3('0x22')]};var _0x1c85a2=md5(JSON[_0xb5d3('0x38')](_0x344a84));if(this['md5']!==_0x1c85a2){this[_0xb5d3('0x1')]=_0x1c85a2;io[_0xb5d3('0x39')]('user:save',_0x344a84);}};module[_0xb5d3('0x3a')]=Agent;
\ No newline at end of file
index 48fbc5e..7080bdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99f3=['exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','available','chat:queue:%s','emit','chat_queue:save'];(function(_0x3950f6,_0xd769f8){var _0x3e6887=function(_0x1518a5){while(--_0x1518a5){_0x3950f6['push'](_0x3950f6['shift']());}};_0x3e6887(++_0xd769f8);}(_0x99f3,0x151));var _0x399f=function(_0x783834,_0x38c810){_0x783834=_0x783834-0x0;var _0x22055f=_0x99f3[_0x783834];return _0x22055f;};'use strict';var _=require(_0x399f('0x0'));var md5=require(_0x399f('0x1'));var util=require('util');var Redis=require(_0x399f('0x2'));var config=require(_0x399f('0x3'));config[_0x399f('0x4')]=_[_0x399f('0x5')](config[_0x399f('0x4')],{'host':_0x399f('0x6'),'port':0x18eb});var io=require(_0x399f('0x7'))(new Redis(config[_0x399f('0x4')]));function ChatQueue(_0x5c8cf0){this['id']=_0x5c8cf0['id']||0x0;this[_0x399f('0x8')]=_0x5c8cf0[_0x399f('0x8')]||'';this[_0x399f('0x9')]=_0x5c8cf0[_0x399f('0x9')]||0xa;this[_0x399f('0xa')]=_0x5c8cf0[_0x399f('0xa')]||_0x399f('0xb');this['Agents']=_0x5c8cf0[_0x399f('0xc')];this[_0x399f('0xd')]={};this[_0x399f('0xe')]=0x0;this[_0x399f('0x1')]='';this[_0x399f('0xf')]();this[_0x399f('0x10')]();}ChatQueue[_0x399f('0x11')][_0x399f('0xf')]=function(){var _0x103f9b=this[_0x399f('0xd')][_0x399f('0x12')];this['mapAgentsId']=_[_0x399f('0x13')](this[_0x399f('0xc')],'id');this[_0x399f('0xd')]['_rr']=_0x103f9b;};ChatQueue[_0x399f('0x11')]['updateRealtime']=function(){this[_0x399f('0x14')]=0x0;this[_0x399f('0x15')]=0x0;for(var _0x43df66=0x0;_0x43df66<this['Agents'][_0x399f('0x16')];_0x43df66+=0x1){if(this[_0x399f('0xc')][_0x43df66]['online']){this[_0x399f('0x14')]+=0x1;}if(this[_0x399f('0xc')][_0x43df66]['chatPause']){this[_0x399f('0x15')]+=0x1;}}this[_0x399f('0x17')]=this[_0x399f('0x14')]-this[_0x399f('0x15')];this['available']=this['available']>=0x0?this[_0x399f('0x17')]:0x0;var _0x1a1466={'id':this['id'],'available':this[_0x399f('0x17')],'loggedIn':this[_0x399f('0x14')],'name':this['name'],'paused':this[_0x399f('0x15')],'waiting':this[_0x399f('0xe')]};var _0x31c767=md5(JSON['stringify'](_0x1a1466));if(this['md5']!==_0x31c767){this[_0x399f('0x1')]=_0x31c767;io['to'](util['format'](_0x399f('0x18'),_0x1a1466[_0x399f('0x8')]))[_0x399f('0x19')](_0x399f('0x1a'),_0x1a1466);}};module[_0x399f('0x1b')]=ChatQueue;
\ No newline at end of file
+var _0xa7e5=['Agents','waiting','updateRouting','updateRealtime','prototype','_rr','mapAgentsId','map','loggedIn','paused','length','online','chatPause','available','stringify','md5','format','chat:queue:%s','emit','chat_queue:save','exports','lodash','util','ioredis','../../../config/environment','redis','name','timeout','strategy','beepall'];(function(_0x426dde,_0xb910a3){var _0x43d3ec=function(_0x643340){while(--_0x643340){_0x426dde['push'](_0x426dde['shift']());}};_0x43d3ec(++_0xb910a3);}(_0xa7e5,0x15f));var _0x5a7e=function(_0x1296b9,_0x259806){_0x1296b9=_0x1296b9-0x0;var _0x522e82=_0xa7e5[_0x1296b9];return _0x522e82;};'use strict';var _=require(_0x5a7e('0x0'));var md5=require('md5');var util=require(_0x5a7e('0x1'));var Redis=require(_0x5a7e('0x2'));var config=require(_0x5a7e('0x3'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5a7e('0x4')]));function ChatQueue(_0x1b13fb){this['id']=_0x1b13fb['id']||0x0;this[_0x5a7e('0x5')]=_0x1b13fb['name']||'';this[_0x5a7e('0x6')]=_0x1b13fb[_0x5a7e('0x6')]||0xa;this[_0x5a7e('0x7')]=_0x1b13fb[_0x5a7e('0x7')]||_0x5a7e('0x8');this[_0x5a7e('0x9')]=_0x1b13fb[_0x5a7e('0x9')];this['mapAgentsId']={};this[_0x5a7e('0xa')]=0x0;this['md5']='';this[_0x5a7e('0xb')]();this[_0x5a7e('0xc')]();}ChatQueue[_0x5a7e('0xd')]['updateRouting']=function(){var _0x5bbd4e=this['mapAgentsId'][_0x5a7e('0xe')];this[_0x5a7e('0xf')]=_[_0x5a7e('0x10')](this[_0x5a7e('0x9')],'id');this['mapAgentsId']['_rr']=_0x5bbd4e;};ChatQueue[_0x5a7e('0xd')][_0x5a7e('0xc')]=function(){this[_0x5a7e('0x11')]=0x0;this[_0x5a7e('0x12')]=0x0;for(var _0x1dd00a=0x0;_0x1dd00a<this['Agents'][_0x5a7e('0x13')];_0x1dd00a+=0x1){if(this[_0x5a7e('0x9')][_0x1dd00a][_0x5a7e('0x14')]){this['loggedIn']+=0x1;}if(this[_0x5a7e('0x9')][_0x1dd00a][_0x5a7e('0x15')]){this[_0x5a7e('0x12')]+=0x1;}}this[_0x5a7e('0x16')]=this['loggedIn']-this[_0x5a7e('0x12')];this[_0x5a7e('0x16')]=this[_0x5a7e('0x16')]>=0x0?this[_0x5a7e('0x16')]:0x0;var _0x2fe52e={'id':this['id'],'available':this[_0x5a7e('0x16')],'loggedIn':this[_0x5a7e('0x11')],'name':this['name'],'paused':this[_0x5a7e('0x12')],'waiting':this[_0x5a7e('0xa')]};var _0x256296=md5(JSON[_0x5a7e('0x17')](_0x2fe52e));if(this['md5']!==_0x256296){this[_0x5a7e('0x18')]=_0x256296;io['to'](util[_0x5a7e('0x19')](_0x5a7e('0x1a'),_0x2fe52e[_0x5a7e('0x5')]))[_0x5a7e('0x1b')](_0x5a7e('0x1c'),_0x2fe52e);}};module[_0x5a7e('0x1d')]=ChatQueue;
\ No newline at end of file
index 8b39adc..02ae495 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6af=['updateRealtime','loggedIn','length','faxPause','paused','available','stringify','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','ioredis','redis','socket.io-emitter','name','timeout','strategy','Agents','waiting','updateRouting','prototype','map','mapAgentsId'];(function(_0x85ab32,_0xa188e7){var _0x46a3e4=function(_0xe314f4){while(--_0xe314f4){_0x85ab32['push'](_0x85ab32['shift']());}};_0x46a3e4(++_0xa188e7);}(_0xd6af,0xdc));var _0xfd6a=function(_0x5d93c7,_0x580b09){_0x5d93c7=_0x5d93c7-0x0;var _0x54a38b=_0xd6af[_0x5d93c7];return _0x54a38b;};'use strict';var _=require(_0xfd6a('0x0'));var md5=require(_0xfd6a('0x1'));var util=require('util');var Redis=require(_0xfd6a('0x2'));var config=require('../../../config/environment');config['redis']=_['defaults'](config[_0xfd6a('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0xfd6a('0x4'))(new Redis(config[_0xfd6a('0x3')]));function FaxQueue(_0xc302e0){this['id']=_0xc302e0['id']||0x0;this[_0xfd6a('0x5')]=_0xc302e0[_0xfd6a('0x5')]||'';this[_0xfd6a('0x6')]=_0xc302e0['timeout']||0xa;this[_0xfd6a('0x7')]=_0xc302e0[_0xfd6a('0x7')]||'beepall';this[_0xfd6a('0x8')]=_0xc302e0[_0xfd6a('0x8')];this['mapAgentsId']={};this[_0xfd6a('0x9')]=0x0;this[_0xfd6a('0x1')]='';this[_0xfd6a('0xa')]();this['updateRealtime']();}FaxQueue[_0xfd6a('0xb')][_0xfd6a('0xa')]=function(){var _0x5e1574=this['mapAgentsId']['_rr'];this['mapAgentsId']=_[_0xfd6a('0xc')](this[_0xfd6a('0x8')],'id');this[_0xfd6a('0xd')]['_rr']=_0x5e1574;};FaxQueue[_0xfd6a('0xb')][_0xfd6a('0xe')]=function(){this[_0xfd6a('0xf')]=0x0;this['paused']=0x0;for(var _0xbf22ca=0x0;_0xbf22ca<this[_0xfd6a('0x8')][_0xfd6a('0x10')];_0xbf22ca+=0x1){if(this[_0xfd6a('0x8')][_0xbf22ca]['online']){this['loggedIn']+=0x1;}if(this['Agents'][_0xbf22ca][_0xfd6a('0x11')]){this[_0xfd6a('0x12')]+=0x1;}}this[_0xfd6a('0x13')]=this[_0xfd6a('0xf')]-this[_0xfd6a('0x12')];this[_0xfd6a('0x13')]=this[_0xfd6a('0x13')]>=0x0?this['available']:0x0;var _0x484871={'id':this['id'],'available':this[_0xfd6a('0x13')],'loggedIn':this[_0xfd6a('0xf')],'name':this[_0xfd6a('0x5')],'paused':this[_0xfd6a('0x12')],'waiting':this[_0xfd6a('0x9')]};var _0x2b3cfa=md5(JSON[_0xfd6a('0x14')](_0x484871));if(this[_0xfd6a('0x1')]!==_0x2b3cfa){this[_0xfd6a('0x1')]=_0x2b3cfa;io['to'](util[_0xfd6a('0x15')](_0xfd6a('0x16'),_0x484871[_0xfd6a('0x5')]))[_0xfd6a('0x17')](_0xfd6a('0x18'),_0x484871);}};module[_0xfd6a('0x19')]=FaxQueue;
\ No newline at end of file
+var _0xce39=['strategy','Agents','mapAgentsId','waiting','md5','updateRouting','updateRealtime','prototype','_rr','loggedIn','length','online','faxPause','paused','available','format','emit','fax_queue:save','exports','lodash','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout'];(function(_0x4cf80e,_0x2d6730){var _0x2d0e04=function(_0x2d5b87){while(--_0x2d5b87){_0x4cf80e['push'](_0x4cf80e['shift']());}};_0x2d0e04(++_0x2d6730);}(_0xce39,0x7f));var _0x9ce3=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xce39[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x9ce3('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0x9ce3('0x1'));var config=require('../../../config/environment');config[_0x9ce3('0x2')]=_[_0x9ce3('0x3')](config['redis'],{'host':_0x9ce3('0x4'),'port':0x18eb});var io=require(_0x9ce3('0x5'))(new Redis(config[_0x9ce3('0x2')]));function FaxQueue(_0x1ab6fa){this['id']=_0x1ab6fa['id']||0x0;this[_0x9ce3('0x6')]=_0x1ab6fa[_0x9ce3('0x6')]||'';this[_0x9ce3('0x7')]=_0x1ab6fa[_0x9ce3('0x7')]||0xa;this[_0x9ce3('0x8')]=_0x1ab6fa[_0x9ce3('0x8')]||'beepall';this[_0x9ce3('0x9')]=_0x1ab6fa[_0x9ce3('0x9')];this[_0x9ce3('0xa')]={};this[_0x9ce3('0xb')]=0x0;this[_0x9ce3('0xc')]='';this[_0x9ce3('0xd')]();this[_0x9ce3('0xe')]();}FaxQueue[_0x9ce3('0xf')][_0x9ce3('0xd')]=function(){var _0x12818e=this[_0x9ce3('0xa')][_0x9ce3('0x10')];this['mapAgentsId']=_['map'](this[_0x9ce3('0x9')],'id');this['mapAgentsId'][_0x9ce3('0x10')]=_0x12818e;};FaxQueue['prototype'][_0x9ce3('0xe')]=function(){this[_0x9ce3('0x11')]=0x0;this['paused']=0x0;for(var _0x30f020=0x0;_0x30f020<this[_0x9ce3('0x9')][_0x9ce3('0x12')];_0x30f020+=0x1){if(this[_0x9ce3('0x9')][_0x30f020][_0x9ce3('0x13')]){this[_0x9ce3('0x11')]+=0x1;}if(this[_0x9ce3('0x9')][_0x30f020][_0x9ce3('0x14')]){this[_0x9ce3('0x15')]+=0x1;}}this[_0x9ce3('0x16')]=this['loggedIn']-this['paused'];this['available']=this[_0x9ce3('0x16')]>=0x0?this[_0x9ce3('0x16')]:0x0;var _0x3738d1={'id':this['id'],'available':this[_0x9ce3('0x16')],'loggedIn':this[_0x9ce3('0x11')],'name':this[_0x9ce3('0x6')],'paused':this[_0x9ce3('0x15')],'waiting':this[_0x9ce3('0xb')]};var _0x4a496b=md5(JSON['stringify'](_0x3738d1));if(this[_0x9ce3('0xc')]!==_0x4a496b){this[_0x9ce3('0xc')]=_0x4a496b;io['to'](util[_0x9ce3('0x17')]('fax:queue:%s',_0x3738d1['name']))[_0x9ce3('0x18')](_0x9ce3('0x19'),_0x3738d1);}};module[_0x9ce3('0x1a')]=FaxQueue;
\ No newline at end of file
index 50a6ce4..7fd364b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a23=['exports','name','Intervals'];(function(_0x3ae179,_0x42a53d){var _0x3bd3ab=function(_0x42bc8f){while(--_0x42bc8f){_0x3ae179['push'](_0x3ae179['shift']());}};_0x3bd3ab(++_0x42a53d);}(_0x9a23,0x1bd));var _0x39a2=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x9a23[_0x199572];return _0x13cfa3;};'use strict';function Interval(_0x1b8148){this['id']=_0x1b8148['id']||0x0;this[_0x39a2('0x0')]=_0x1b8148[_0x39a2('0x0')]||'';this[_0x39a2('0x1')]=_0x1b8148['Intervals']||{};}module[_0x39a2('0x2')]=Interval;
\ No newline at end of file
+var _0x68b7=['Intervals','exports','name'];(function(_0x43776a,_0x4eb74c){var _0x18eb8f=function(_0x319afb){while(--_0x319afb){_0x43776a['push'](_0x43776a['shift']());}};_0x18eb8f(++_0x4eb74c);}(_0x68b7,0x173));var _0x768b=function(_0x8b3236,_0x581dda){_0x8b3236=_0x8b3236-0x0;var _0x2632b7=_0x68b7[_0x8b3236];return _0x2632b7;};'use strict';function Interval(_0x4855bc){this['id']=_0x4855bc['id']||0x0;this[_0x768b('0x0')]=_0x4855bc[_0x768b('0x0')]||'';this['Intervals']=_0x4855bc[_0x768b('0x1')]||{};}module[_0x768b('0x2')]=Interval;
\ No newline at end of file
index 77b2fd6..8a49c3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34f7=['localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRealtime','prototype','updateRouting','mapAgentsId','_rr','map','loggedIn','paused','length','mailPause','available','stringify','format','mail:queue:%s','emit','mail_queue:save','exports','md5','util','ioredis','redis','defaults'];(function(_0x35c64a,_0x159e2c){var _0x17540f=function(_0x65b1b1){while(--_0x65b1b1){_0x35c64a['push'](_0x35c64a['shift']());}};_0x17540f(++_0x159e2c);}(_0x34f7,0x19f));var _0x734f=function(_0x4aaa1c,_0x56f6d7){_0x4aaa1c=_0x4aaa1c-0x0;var _0x3057e=_0x34f7[_0x4aaa1c];return _0x3057e;};'use strict';var _=require('lodash');var md5=require(_0x734f('0x0'));var util=require(_0x734f('0x1'));var Redis=require(_0x734f('0x2'));var config=require('../../../config/environment');config[_0x734f('0x3')]=_[_0x734f('0x4')](config[_0x734f('0x3')],{'host':_0x734f('0x5'),'port':0x18eb});var io=require(_0x734f('0x6'))(new Redis(config['redis']));function MailQueue(_0x5874fb){this['id']=_0x5874fb['id']||0x0;this['name']=_0x5874fb[_0x734f('0x7')]||'';this[_0x734f('0x8')]=_0x5874fb[_0x734f('0x8')]||0xa;this[_0x734f('0x9')]=_0x5874fb[_0x734f('0x9')]||_0x734f('0xa');this['Agents']=_0x5874fb[_0x734f('0xb')];this['mapAgentsId']={};this[_0x734f('0xc')]=0x0;this['md5']='';this['updateRouting']();this[_0x734f('0xd')]();}MailQueue[_0x734f('0xe')][_0x734f('0xf')]=function(){var _0x1dd710=this[_0x734f('0x10')][_0x734f('0x11')];this['mapAgentsId']=_[_0x734f('0x12')](this['Agents'],'id');this[_0x734f('0x10')]['_rr']=_0x1dd710;};MailQueue[_0x734f('0xe')][_0x734f('0xd')]=function(){this[_0x734f('0x13')]=0x0;this[_0x734f('0x14')]=0x0;for(var _0x454538=0x0;_0x454538<this[_0x734f('0xb')][_0x734f('0x15')];_0x454538+=0x1){if(this['Agents'][_0x454538]['online']){this['loggedIn']+=0x1;}if(this[_0x734f('0xb')][_0x454538][_0x734f('0x16')]){this[_0x734f('0x14')]+=0x1;}}this[_0x734f('0x17')]=this[_0x734f('0x13')]-this['paused'];this[_0x734f('0x17')]=this[_0x734f('0x17')]>=0x0?this[_0x734f('0x17')]:0x0;var _0x2010f9={'id':this['id'],'available':this['available'],'loggedIn':this[_0x734f('0x13')],'name':this['name'],'paused':this[_0x734f('0x14')],'waiting':this['waiting']};var _0x4be14c=md5(JSON[_0x734f('0x18')](_0x2010f9));if(this['md5']!==_0x4be14c){this[_0x734f('0x0')]=_0x4be14c;io['to'](util[_0x734f('0x19')](_0x734f('0x1a'),_0x2010f9['name']))[_0x734f('0x1b')](_0x734f('0x1c'),_0x2010f9);}};module[_0x734f('0x1d')]=MailQueue;
\ No newline at end of file
+var _0xef50=['../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','length','online','mailPause','available','loggedIn','paused','waiting','stringify','format','mail:queue:%s','emit','mail_queue:save','exports','md5','util','ioredis'];(function(_0x552224,_0x1a7f49){var _0x43e8f8=function(_0x249460){while(--_0x249460){_0x552224['push'](_0x552224['shift']());}};_0x43e8f8(++_0x1a7f49);}(_0xef50,0x190));var _0x0ef5=function(_0x5a1513,_0x4b38a0){_0x5a1513=_0x5a1513-0x0;var _0x160856=_0xef50[_0x5a1513];return _0x160856;};'use strict';var _=require('lodash');var md5=require(_0x0ef5('0x0'));var util=require(_0x0ef5('0x1'));var Redis=require(_0x0ef5('0x2'));var config=require(_0x0ef5('0x3'));config[_0x0ef5('0x4')]=_[_0x0ef5('0x5')](config[_0x0ef5('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x0ef5('0x6'))(new Redis(config[_0x0ef5('0x4')]));function MailQueue(_0x3239a7){this['id']=_0x3239a7['id']||0x0;this['name']=_0x3239a7[_0x0ef5('0x7')]||'';this[_0x0ef5('0x8')]=_0x3239a7[_0x0ef5('0x8')]||0xa;this[_0x0ef5('0x9')]=_0x3239a7[_0x0ef5('0x9')]||_0x0ef5('0xa');this[_0x0ef5('0xb')]=_0x3239a7[_0x0ef5('0xb')];this[_0x0ef5('0xc')]={};this['waiting']=0x0;this[_0x0ef5('0x0')]='';this[_0x0ef5('0xd')]();this[_0x0ef5('0xe')]();}MailQueue[_0x0ef5('0xf')][_0x0ef5('0xd')]=function(){var _0x227c72=this[_0x0ef5('0xc')][_0x0ef5('0x10')];this[_0x0ef5('0xc')]=_[_0x0ef5('0x11')](this[_0x0ef5('0xb')],'id');this[_0x0ef5('0xc')][_0x0ef5('0x10')]=_0x227c72;};MailQueue[_0x0ef5('0xf')][_0x0ef5('0xe')]=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x386607=0x0;_0x386607<this[_0x0ef5('0xb')][_0x0ef5('0x12')];_0x386607+=0x1){if(this[_0x0ef5('0xb')][_0x386607][_0x0ef5('0x13')]){this['loggedIn']+=0x1;}if(this[_0x0ef5('0xb')][_0x386607][_0x0ef5('0x14')]){this['paused']+=0x1;}}this[_0x0ef5('0x15')]=this[_0x0ef5('0x16')]-this[_0x0ef5('0x17')];this[_0x0ef5('0x15')]=this[_0x0ef5('0x15')]>=0x0?this[_0x0ef5('0x15')]:0x0;var _0x37f6ad={'id':this['id'],'available':this[_0x0ef5('0x15')],'loggedIn':this['loggedIn'],'name':this[_0x0ef5('0x7')],'paused':this[_0x0ef5('0x17')],'waiting':this[_0x0ef5('0x18')]};var _0x364f05=md5(JSON[_0x0ef5('0x19')](_0x37f6ad));if(this[_0x0ef5('0x0')]!==_0x364f05){this['md5']=_0x364f05;io['to'](util[_0x0ef5('0x1a')](_0x0ef5('0x1b'),_0x37f6ad[_0x0ef5('0x7')]))[_0x0ef5('0x1c')](_0x0ef5('0x1d'),_0x37f6ad);}};module[_0x0ef5('0x1e')]=MailQueue;
\ No newline at end of file
index 0271ec2..cf8b045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x2ca9d4,_0x51d5c6){var _0x258956=function(_0x47a0e5){while(--_0x47a0e5){_0x2ca9d4['push'](_0x2ca9d4['shift']());}};_0x258956(++_0x51d5c6);}(_0x1261,0x144));var _0x1126=function(_0x51652a,_0x5144fc){_0x51652a=_0x51652a-0x0;var _0xae7099=_0x1261[_0x51652a];return _0xae7099;};'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
+var _0x326f=['exports','lodash','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','mapAgentsId','waiting','md5','updateRouting','updateRealtime','Agents','prototype','loggedIn','paused','online','openchannelPause','available','stringify','openchannel:queue:%s','openchannel_queue:save'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x326f,0xd1));var _0xf326=function(_0x5bbeb2,_0xe47067){_0x5bbeb2=_0x5bbeb2-0x0;var _0x26fe2a=_0x326f[_0x5bbeb2];return _0x26fe2a;};'use strict';var _=require(_0xf326('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0xf326('0x1'));var config=require(_0xf326('0x2'));config[_0xf326('0x3')]=_[_0xf326('0x4')](config[_0xf326('0x3')],{'host':_0xf326('0x5'),'port':0x18eb});var io=require(_0xf326('0x6'))(new Redis(config[_0xf326('0x3')]));function OpenchannelQueue(_0x1b5a56){this['id']=_0x1b5a56['id']||0x0;this[_0xf326('0x7')]=_0x1b5a56['name']||'';this[_0xf326('0x8')]=_0x1b5a56[_0xf326('0x8')]||0xa;this[_0xf326('0x9')]=_0x1b5a56[_0xf326('0x9')]||'beepall';this['Agents']=_0x1b5a56['Agents'];this[_0xf326('0xa')]={};this[_0xf326('0xb')]=0x0;this[_0xf326('0xc')]='';this[_0xf326('0xd')]();this[_0xf326('0xe')]();}OpenchannelQueue['prototype'][_0xf326('0xd')]=function(){var _0x53cbcd=this[_0xf326('0xa')]['_rr'];this[_0xf326('0xa')]=_['map'](this[_0xf326('0xf')],'id');this[_0xf326('0xa')]['_rr']=_0x53cbcd;};OpenchannelQueue[_0xf326('0x10')][_0xf326('0xe')]=function(){this[_0xf326('0x11')]=0x0;this[_0xf326('0x12')]=0x0;for(var _0x5c8483=0x0;_0x5c8483<this[_0xf326('0xf')]['length'];_0x5c8483+=0x1){if(this['Agents'][_0x5c8483][_0xf326('0x13')]){this[_0xf326('0x11')]+=0x1;}if(this[_0xf326('0xf')][_0x5c8483][_0xf326('0x14')]){this[_0xf326('0x12')]+=0x1;}}this[_0xf326('0x15')]=this[_0xf326('0x11')]-this[_0xf326('0x12')];this['available']=this[_0xf326('0x15')]>=0x0?this[_0xf326('0x15')]:0x0;var _0x18bee3={'id':this['id'],'available':this[_0xf326('0x15')],'loggedIn':this[_0xf326('0x11')],'name':this[_0xf326('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x56ad41=md5(JSON[_0xf326('0x16')](_0x18bee3));if(this[_0xf326('0xc')]!==_0x56ad41){this['md5']=_0x56ad41;io['to'](util['format'](_0xf326('0x17'),_0x18bee3['name']))['emit'](_0xf326('0x18'),_0x18bee3);}};module[_0xf326('0x19')]=OpenchannelQueue;
\ No newline at end of file
index aa57f5a..df74ab2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1a5=['strategy','beepall','Agents','mapAgentsId','waiting','md5','updateRouting','prototype','_rr','updateRealtime','paused','length','online','smsPause','available','loggedIn','stringify','format','sms:queue:%s','sms_queue:save','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0xa1a5,0x1b8));var _0x5a1a=function(_0x3f0abe,_0xa33753){_0x3f0abe=_0x3f0abe-0x0;var _0x349868=_0xa1a5[_0x3f0abe];return _0x349868;};'use strict';var _=require(_0x5a1a('0x0'));var md5=require('md5');var util=require(_0x5a1a('0x1'));var Redis=require(_0x5a1a('0x2'));var config=require(_0x5a1a('0x3'));config[_0x5a1a('0x4')]=_[_0x5a1a('0x5')](config['redis'],{'host':_0x5a1a('0x6'),'port':0x18eb});var io=require(_0x5a1a('0x7'))(new Redis(config[_0x5a1a('0x4')]));function SmsQueue(_0x416416){this['id']=_0x416416['id']||0x0;this[_0x5a1a('0x8')]=_0x416416[_0x5a1a('0x8')]||'';this[_0x5a1a('0x9')]=_0x416416['timeout']||0xa;this[_0x5a1a('0xa')]=_0x416416[_0x5a1a('0xa')]||_0x5a1a('0xb');this[_0x5a1a('0xc')]=_0x416416[_0x5a1a('0xc')];this[_0x5a1a('0xd')]={};this[_0x5a1a('0xe')]=0x0;this[_0x5a1a('0xf')]='';this[_0x5a1a('0x10')]();this['updateRealtime']();}SmsQueue[_0x5a1a('0x11')][_0x5a1a('0x10')]=function(){var _0x1474c2=this['mapAgentsId'][_0x5a1a('0x12')];this['mapAgentsId']=_['map'](this['Agents'],'id');this[_0x5a1a('0xd')][_0x5a1a('0x12')]=_0x1474c2;};SmsQueue[_0x5a1a('0x11')][_0x5a1a('0x13')]=function(){this['loggedIn']=0x0;this[_0x5a1a('0x14')]=0x0;for(var _0x30e2a5=0x0;_0x30e2a5<this['Agents'][_0x5a1a('0x15')];_0x30e2a5+=0x1){if(this[_0x5a1a('0xc')][_0x30e2a5][_0x5a1a('0x16')]){this['loggedIn']+=0x1;}if(this[_0x5a1a('0xc')][_0x30e2a5][_0x5a1a('0x17')]){this[_0x5a1a('0x14')]+=0x1;}}this[_0x5a1a('0x18')]=this[_0x5a1a('0x19')]-this[_0x5a1a('0x14')];this[_0x5a1a('0x18')]=this[_0x5a1a('0x18')]>=0x0?this['available']:0x0;var _0x9e7924={'id':this['id'],'available':this[_0x5a1a('0x18')],'loggedIn':this[_0x5a1a('0x19')],'name':this[_0x5a1a('0x8')],'paused':this[_0x5a1a('0x14')],'waiting':this[_0x5a1a('0xe')]};var _0x3c47e3=md5(JSON[_0x5a1a('0x1a')](_0x9e7924));if(this[_0x5a1a('0xf')]!==_0x3c47e3){this[_0x5a1a('0xf')]=_0x3c47e3;io['to'](util[_0x5a1a('0x1b')](_0x5a1a('0x1c'),_0x9e7924['name']))['emit'](_0x5a1a('0x1d'),_0x9e7924);}};module['exports']=SmsQueue;
\ No newline at end of file
+var _0x153f=['available','stringify','format','sms:queue:%s','emit','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','map','_rr','prototype','loggedIn','paused','length','online','smsPause'];(function(_0x350d56,_0x174e93){var _0x1244dd=function(_0x45f56e){while(--_0x45f56e){_0x350d56['push'](_0x350d56['shift']());}};_0x1244dd(++_0x174e93);}(_0x153f,0x15b));var _0xf153=function(_0x308a52,_0x172ad6){_0x308a52=_0x308a52-0x0;var _0x5132c8=_0x153f[_0x308a52];return _0x5132c8;};'use strict';var _=require(_0xf153('0x0'));var md5=require(_0xf153('0x1'));var util=require(_0xf153('0x2'));var Redis=require(_0xf153('0x3'));var config=require(_0xf153('0x4'));config[_0xf153('0x5')]=_[_0xf153('0x6')](config['redis'],{'host':_0xf153('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf153('0x5')]));function SmsQueue(_0x2fcb1a){this['id']=_0x2fcb1a['id']||0x0;this[_0xf153('0x8')]=_0x2fcb1a[_0xf153('0x8')]||'';this[_0xf153('0x9')]=_0x2fcb1a['timeout']||0xa;this[_0xf153('0xa')]=_0x2fcb1a[_0xf153('0xa')]||_0xf153('0xb');this[_0xf153('0xc')]=_0x2fcb1a[_0xf153('0xc')];this[_0xf153('0xd')]={};this[_0xf153('0xe')]=0x0;this[_0xf153('0x1')]='';this[_0xf153('0xf')]();this[_0xf153('0x10')]();}SmsQueue['prototype'][_0xf153('0xf')]=function(){var _0x1c8de7=this[_0xf153('0xd')]['_rr'];this[_0xf153('0xd')]=_[_0xf153('0x11')](this[_0xf153('0xc')],'id');this[_0xf153('0xd')][_0xf153('0x12')]=_0x1c8de7;};SmsQueue[_0xf153('0x13')][_0xf153('0x10')]=function(){this[_0xf153('0x14')]=0x0;this[_0xf153('0x15')]=0x0;for(var _0x4c5283=0x0;_0x4c5283<this[_0xf153('0xc')][_0xf153('0x16')];_0x4c5283+=0x1){if(this[_0xf153('0xc')][_0x4c5283][_0xf153('0x17')]){this[_0xf153('0x14')]+=0x1;}if(this[_0xf153('0xc')][_0x4c5283][_0xf153('0x18')]){this[_0xf153('0x15')]+=0x1;}}this['available']=this[_0xf153('0x14')]-this['paused'];this[_0xf153('0x19')]=this[_0xf153('0x19')]>=0x0?this[_0xf153('0x19')]:0x0;var _0x44272e={'id':this['id'],'available':this['available'],'loggedIn':this[_0xf153('0x14')],'name':this[_0xf153('0x8')],'paused':this[_0xf153('0x15')],'waiting':this[_0xf153('0xe')]};var _0x15230c=md5(JSON[_0xf153('0x1a')](_0x44272e));if(this[_0xf153('0x1')]!==_0x15230c){this[_0xf153('0x1')]=_0x15230c;io['to'](util[_0xf153('0x1b')](_0xf153('0x1c'),_0x44272e[_0xf153('0x8')]))[_0xf153('0x1d')]('sms_queue:save',_0x44272e);}};module[_0xf153('0x1e')]=SmsQueue;
\ No newline at end of file
index a6cd335..003399f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecc0=['available','md5','format','whatsapp:queue:%s','emit','whatsapp_queue:save','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','waiting','updateRouting','updateRealtime','prototype','_rr','mapAgentsId','loggedIn','paused','length','whatsappPause'];(function(_0x4ed508,_0x5f322b){var _0x31aa80=function(_0x4ebd21){while(--_0x4ebd21){_0x4ed508['push'](_0x4ed508['shift']());}};_0x31aa80(++_0x5f322b);}(_0xecc0,0x76));var _0x0ecc=function(_0x3e134d,_0x1045fa){_0x3e134d=_0x3e134d-0x0;var _0x33b9e3=_0xecc0[_0x3e134d];return _0x33b9e3;};'use strict';var _=require(_0x0ecc('0x0'));var md5=require('md5');var util=require(_0x0ecc('0x1'));var Redis=require(_0x0ecc('0x2'));var config=require(_0x0ecc('0x3'));config[_0x0ecc('0x4')]=_[_0x0ecc('0x5')](config[_0x0ecc('0x4')],{'host':_0x0ecc('0x6'),'port':0x18eb});var io=require(_0x0ecc('0x7'))(new Redis(config[_0x0ecc('0x4')]));function WhatsappQueue(_0x5c6bb8){this['id']=_0x5c6bb8['id']||0x0;this[_0x0ecc('0x8')]=_0x5c6bb8[_0x0ecc('0x8')]||'';this[_0x0ecc('0x9')]=_0x5c6bb8[_0x0ecc('0x9')]||0xa;this['strategy']=_0x5c6bb8[_0x0ecc('0xa')]||'beepall';this[_0x0ecc('0xb')]=_0x5c6bb8[_0x0ecc('0xb')];this['mapAgentsId']={};this[_0x0ecc('0xc')]=0x0;this['md5']='';this[_0x0ecc('0xd')]();this[_0x0ecc('0xe')]();}WhatsappQueue[_0x0ecc('0xf')][_0x0ecc('0xd')]=function(){var _0xf63ede=this['mapAgentsId'][_0x0ecc('0x10')];this['mapAgentsId']=_['map'](this[_0x0ecc('0xb')],'id');this[_0x0ecc('0x11')][_0x0ecc('0x10')]=_0xf63ede;};WhatsappQueue[_0x0ecc('0xf')][_0x0ecc('0xe')]=function(){this[_0x0ecc('0x12')]=0x0;this[_0x0ecc('0x13')]=0x0;for(var _0x22ee91=0x0;_0x22ee91<this[_0x0ecc('0xb')][_0x0ecc('0x14')];_0x22ee91+=0x1){if(this[_0x0ecc('0xb')][_0x22ee91]['online']){this[_0x0ecc('0x12')]+=0x1;}if(this[_0x0ecc('0xb')][_0x22ee91][_0x0ecc('0x15')]){this[_0x0ecc('0x13')]+=0x1;}}this[_0x0ecc('0x16')]=this['loggedIn']-this[_0x0ecc('0x13')];this[_0x0ecc('0x16')]=this[_0x0ecc('0x16')]>=0x0?this[_0x0ecc('0x16')]:0x0;var _0x182527={'id':this['id'],'available':this[_0x0ecc('0x16')],'loggedIn':this[_0x0ecc('0x12')],'name':this[_0x0ecc('0x8')],'paused':this[_0x0ecc('0x13')],'waiting':this[_0x0ecc('0xc')]};var _0x315db7=md5(JSON['stringify'](_0x182527));if(this[_0x0ecc('0x17')]!==_0x315db7){this[_0x0ecc('0x17')]=_0x315db7;io['to'](util[_0x0ecc('0x18')](_0x0ecc('0x19'),_0x182527[_0x0ecc('0x8')]))[_0x0ecc('0x1a')](_0x0ecc('0x1b'),_0x182527);}};module['exports']=WhatsappQueue;
\ No newline at end of file
+var _0x2a5a=['loggedIn','length','online','whatsappPause','paused','available','waiting','format','whatsapp:queue:%s','emit','whatsapp_queue:save','util','ioredis','../../../config/environment','defaults','localhost','socket.io-emitter','redis','name','timeout','strategy','beepall','Agents','md5','updateRouting','mapAgentsId','map','_rr','prototype','updateRealtime'];(function(_0x59557e,_0x8f9209){var _0x2bfe66=function(_0x413290){while(--_0x413290){_0x59557e['push'](_0x59557e['shift']());}};_0x2bfe66(++_0x8f9209);}(_0x2a5a,0x191));var _0xa2a5=function(_0x1fd1da,_0x36e7b8){_0x1fd1da=_0x1fd1da-0x0;var _0x43f607=_0x2a5a[_0x1fd1da];return _0x43f607;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0xa2a5('0x0'));var Redis=require(_0xa2a5('0x1'));var config=require(_0xa2a5('0x2'));config['redis']=_[_0xa2a5('0x3')](config['redis'],{'host':_0xa2a5('0x4'),'port':0x18eb});var io=require(_0xa2a5('0x5'))(new Redis(config[_0xa2a5('0x6')]));function WhatsappQueue(_0x36acef){this['id']=_0x36acef['id']||0x0;this[_0xa2a5('0x7')]=_0x36acef['name']||'';this['timeout']=_0x36acef[_0xa2a5('0x8')]||0xa;this[_0xa2a5('0x9')]=_0x36acef['strategy']||_0xa2a5('0xa');this[_0xa2a5('0xb')]=_0x36acef['Agents'];this['mapAgentsId']={};this['waiting']=0x0;this[_0xa2a5('0xc')]='';this[_0xa2a5('0xd')]();this['updateRealtime']();}WhatsappQueue['prototype'][_0xa2a5('0xd')]=function(){var _0x57d3ce=this[_0xa2a5('0xe')]['_rr'];this[_0xa2a5('0xe')]=_[_0xa2a5('0xf')](this['Agents'],'id');this[_0xa2a5('0xe')][_0xa2a5('0x10')]=_0x57d3ce;};WhatsappQueue[_0xa2a5('0x11')][_0xa2a5('0x12')]=function(){this[_0xa2a5('0x13')]=0x0;this['paused']=0x0;for(var _0xc7dc0c=0x0;_0xc7dc0c<this[_0xa2a5('0xb')][_0xa2a5('0x14')];_0xc7dc0c+=0x1){if(this[_0xa2a5('0xb')][_0xc7dc0c][_0xa2a5('0x15')]){this[_0xa2a5('0x13')]+=0x1;}if(this[_0xa2a5('0xb')][_0xc7dc0c][_0xa2a5('0x16')]){this[_0xa2a5('0x17')]+=0x1;}}this['available']=this['loggedIn']-this[_0xa2a5('0x17')];this['available']=this[_0xa2a5('0x18')]>=0x0?this[_0xa2a5('0x18')]:0x0;var _0x29a2a1={'id':this['id'],'available':this['available'],'loggedIn':this[_0xa2a5('0x13')],'name':this[_0xa2a5('0x7')],'paused':this['paused'],'waiting':this[_0xa2a5('0x19')]};var _0x42c3e8=md5(JSON['stringify'](_0x29a2a1));if(this[_0xa2a5('0xc')]!==_0x42c3e8){this[_0xa2a5('0xc')]=_0x42c3e8;io['to'](util[_0xa2a5('0x1a')](_0xa2a5('0x1b'),_0x29a2a1[_0xa2a5('0x7')]))[_0xa2a5('0x1c')](_0xa2a5('0x1d'),_0x29a2a1);}};module['exports']=WhatsappQueue;
\ No newline at end of file
index 40f802d..8916379 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(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xa9e0[_0x376b45];return _0x2341b3;};'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 b5204b0..897e87c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9762=['Request','UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction','../client','update'];(function(_0x501e06,_0x13a8b5){var _0x38e4f5=function(_0x363f7c){while(--_0x363f7c){_0x501e06['push'](_0x501e06['shift']());}};_0x38e4f5(++_0x13a8b5);}(_0x9762,0x166));var _0x2976=function(_0x8f0f67,_0x5d19ad){_0x8f0f67=_0x8f0f67-0x0;var _0x127cee=_0x9762[_0x8f0f67];return _0x127cee;};'use strict';var client=require(_0x2976('0x0'));exports[_0x2976('0x1')]=function(_0x2135c2,_0x48c230){return client[_0x2976('0x2')](_0x2976('0x3'),{'body':_0x48c230,'options':{'where':{'id':_0x2135c2}},'log':_0x2976('0x4')});};exports[_0x2976('0x5')]=function(_0x8c9947,_0x375686){return client[_0x2976('0x2')](_0x2976('0x6'),{'body':_0x375686,'options':{'where':{'id':_0x8c9947}},'log':_0x2976('0x7')});};
\ No newline at end of file
+var _0xb324=['updateChatInteraction','addTagsToChatInteraction','update','Request'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xb324,0x13e));var _0x4b32=function(_0x59305b,_0x2473e3){_0x59305b=_0x59305b-0x0;var _0x239d82=_0xb324[_0x59305b];return _0x239d82;};'use strict';var client=require('../client');exports[_0x4b32('0x0')]=function(_0x1c0978,_0x3bf896){return client[_0x4b32('0x1')]('UpdateChatInteraction',{'body':_0x3bf896,'options':{'where':{'id':_0x1c0978}},'log':_0x4b32('0x2')});};exports['addTags']=function(_0x67438b,_0x256189){return client[_0x4b32('0x1')]('AddTagsToChatInteraction',{'body':_0x256189,'options':{'where':{'id':_0x67438b}},'log':_0x4b32('0x3')});};
\ No newline at end of file
index 79b7ea1..ca6f650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9b1=['create','Request','CreateChatMessage','createChatMessage','../client'];(function(_0x518e0d,_0xe6c7c8){var _0x5cff9e=function(_0x2974a2){while(--_0x2974a2){_0x518e0d['push'](_0x518e0d['shift']());}};_0x5cff9e(++_0xe6c7c8);}(_0xe9b1,0x13a));var _0x1e9b=function(_0x189d3c,_0x5efebf){_0x189d3c=_0x189d3c-0x0;var _0x485959=_0xe9b1[_0x189d3c];return _0x485959;};'use strict';var client=require(_0x1e9b('0x0'));exports[_0x1e9b('0x1')]=function(_0x3029b5){return client[_0x1e9b('0x2')](_0x1e9b('0x3'),{'body':_0x3029b5,'log':_0x1e9b('0x4')});};
\ No newline at end of file
+var _0x518d=['../client','create','Request','CreateChatMessage','createChatMessage'];(function(_0x4c7cf5,_0x984ad5){var _0xc919c2=function(_0x52a5dd){while(--_0x52a5dd){_0x4c7cf5['push'](_0x4c7cf5['shift']());}};_0xc919c2(++_0x984ad5);}(_0x518d,0x118));var _0xd518=function(_0x452b7f,_0x3b47d4){_0x452b7f=_0x452b7f-0x0;var _0x2ef41a=_0x518d[_0x452b7f];return _0x2ef41a;};'use strict';var client=require(_0xd518('0x0'));exports[_0xd518('0x1')]=function(_0x32d43f){return client[_0xd518('0x2')](_0xd518('0x3'),{'body':_0x32d43f,'log':_0xd518('0x4')});};
\ No newline at end of file
index 0847b86..eccf24a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc01b=['GetChatQueue','timeout','strategy','online','chatPause','../client','getChatQueues','Request'];(function(_0x4df6bd,_0x30d543){var _0x322dcb=function(_0x2ae31b){while(--_0x2ae31b){_0x4df6bd['push'](_0x4df6bd['shift']());}};_0x322dcb(++_0x30d543);}(_0xc01b,0x65));var _0xbc01=function(_0x2bda09,_0x125c82){_0x2bda09=_0x2bda09-0x0;var _0x5842c5=_0xc01b[_0x2bda09];return _0x5842c5;};'use strict';var client=require(_0xbc01('0x0'));exports[_0xbc01('0x1')]=function(){return function(){return client[_0xbc01('0x2')](_0xbc01('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xbc01('0x4'),_0xbc01('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id','name',_0xbc01('0x6'),_0xbc01('0x7')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
+var _0x7b83=['getChatQueues','Request','timeout','strategy','User','name','online','chatPause','../client'];(function(_0x353730,_0x504fdf){var _0x901b87=function(_0x3adf24){while(--_0x3adf24){_0x353730['push'](_0x353730['shift']());}};_0x901b87(++_0x504fdf);}(_0x7b83,0xa1));var _0x37b8=function(_0x365492,_0x3ebebc){_0x365492=_0x365492-0x0;var _0x2d097b=_0x7b83[_0x365492];return _0x2d097b;};'use strict';var client=require(_0x37b8('0x0'));exports[_0x37b8('0x1')]=function(){return function(){return client[_0x37b8('0x2')]('GetChatQueue',{'options':{'raw':![],'attributes':['id','name',_0x37b8('0x3'),_0x37b8('0x4')],'include':[{'model':_0x37b8('0x5'),'as':'Agents','attributes':['id',_0x37b8('0x6'),_0x37b8('0x7'),_0x37b8('0x8')]}]},'log':_0x37b8('0x1')});};};
\ No newline at end of file
index 37edec3..7df064c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c6a=['create','Request','update','UpdateChatQueueReport','DESC','../client'];(function(_0x34b5ca,_0x594010){var _0x2d72c0=function(_0x4ae1d3){while(--_0x4ae1d3){_0x34b5ca['push'](_0x34b5ca['shift']());}};_0x2d72c0(++_0x594010);}(_0x2c6a,0xa7));var _0xa2c6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2c6a[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xa2c6('0x0'));exports[_0xa2c6('0x1')]=function(_0x1c6627){return client[_0xa2c6('0x2')]('CreateChatQueueReport',{'body':_0x1c6627,'log':'CreateChatQueueReport'});};exports[_0xa2c6('0x3')]=function(_0x5cae61,_0xc8c32b){return client[_0xa2c6('0x2')](_0xa2c6('0x4'),{'body':_0xc8c32b,'options':{'where':{'uniqueid':_0x5cae61},'order':[['id',_0xa2c6('0x5')]],'limit':0x1},'log':'UpdateChatQueueReport'});};
\ No newline at end of file
+var _0xc3b0=['Request','update','UpdateChatQueueReport','DESC','../client','create'];(function(_0x186c32,_0x516c42){var _0x3d560e=function(_0x3f480e){while(--_0x3f480e){_0x186c32['push'](_0x186c32['shift']());}};_0x3d560e(++_0x516c42);}(_0xc3b0,0x166));var _0x0c3b=function(_0x129be8,_0x752000){_0x129be8=_0x129be8-0x0;var _0x5b87a5=_0xc3b0[_0x129be8];return _0x5b87a5;};'use strict';var client=require(_0x0c3b('0x0'));exports[_0x0c3b('0x1')]=function(_0x121406){return client[_0x0c3b('0x2')]('CreateChatQueueReport',{'body':_0x121406,'log':'CreateChatQueueReport'});};exports[_0x0c3b('0x3')]=function(_0x989f87,_0x508b38){return client[_0x0c3b('0x2')](_0x0c3b('0x4'),{'body':_0x508b38,'options':{'where':{'uniqueid':_0x989f87},'order':[['id',_0x0c3b('0x5')]],'limit':0x1},'log':'UpdateChatQueueReport'});};
\ No newline at end of file
index 9b88820..83d886e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x107910,_0x3323be){var _0x50b48f=function(_0x533581){while(--_0x533581){_0x107910['push'](_0x107910['shift']());}};_0x50b48f(++_0x3323be);}(_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
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x368084,_0x51fd90){var _0x38ead4=function(_0x3db2b1){while(--_0x3db2b1){_0x368084['push'](_0x368084['shift']());}};_0x38ead4(++_0x51fd90);}(_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 a47c602..8fab9e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabaf=['create','Request','CreateFaxMessage','createFaxMessage','../client'];(function(_0x4d7b43,_0x47e11c){var _0x476d6e=function(_0x189c1e){while(--_0x189c1e){_0x4d7b43['push'](_0x4d7b43['shift']());}};_0x476d6e(++_0x47e11c);}(_0xabaf,0x8b));var _0xfaba=function(_0x597f64,_0x139321){_0x597f64=_0x597f64-0x0;var _0x58f965=_0xabaf[_0x597f64];return _0x58f965;};'use strict';var client=require(_0xfaba('0x0'));exports[_0xfaba('0x1')]=function(_0x20cea0){return client[_0xfaba('0x2')](_0xfaba('0x3'),{'body':_0x20cea0,'log':_0xfaba('0x4')});};
\ No newline at end of file
+var _0xa30f=['../client','create','CreateFaxMessage','createFaxMessage'];(function(_0xa0e317,_0xf5c888){var _0x4e6c74=function(_0x3eed4d){while(--_0x3eed4d){_0xa0e317['push'](_0xa0e317['shift']());}};_0x4e6c74(++_0xf5c888);}(_0xa30f,0xdc));var _0xfa30=function(_0x595eec,_0x535b54){_0x595eec=_0x595eec-0x0;var _0x20529f=_0xa30f[_0x595eec];return _0x20529f;};'use strict';var client=require(_0xfa30('0x0'));exports[_0xfa30('0x1')]=function(_0x430977){return client['Request'](_0xfa30('0x2'),{'body':_0x430977,'log':_0xfa30('0x3')});};
\ No newline at end of file
index 75960e9..232b858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74c9=['strategy','User','online','faxPause','getFaxQueues','Request','GetFaxQueue','name','timeout'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0x74c9,0x187));var _0x974c=function(_0x5e980a,_0x28ebd1){_0x5e980a=_0x5e980a-0x0;var _0x2af923=_0x74c9[_0x5e980a];return _0x2af923;};'use strict';var client=require('../client');exports[_0x974c('0x0')]=function(){return function(){return client[_0x974c('0x1')](_0x974c('0x2'),{'options':{'raw':![],'attributes':['id',_0x974c('0x3'),_0x974c('0x4'),_0x974c('0x5')],'include':[{'model':_0x974c('0x6'),'as':'Agents','attributes':['id',_0x974c('0x3'),_0x974c('0x7'),_0x974c('0x8')]}]},'log':_0x974c('0x0')});};};
\ No newline at end of file
+var _0x7156=['User','Agents','name','online','faxPause','getFaxQueues','../client','GetFaxQueue','timeout','strategy'];(function(_0x7bc63a,_0x26422a){var _0xed898e=function(_0x4a222a){while(--_0x4a222a){_0x7bc63a['push'](_0x7bc63a['shift']());}};_0xed898e(++_0x26422a);}(_0x7156,0xce));var _0x6715=function(_0x196d58,_0x40d70a){_0x196d58=_0x196d58-0x0;var _0x30bdd3=_0x7156[_0x196d58];return _0x30bdd3;};'use strict';var client=require(_0x6715('0x0'));exports['getFaxQueues']=function(){return function(){return client['Request'](_0x6715('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x6715('0x2'),_0x6715('0x3')],'include':[{'model':_0x6715('0x4'),'as':_0x6715('0x5'),'attributes':['id',_0x6715('0x6'),_0x6715('0x7'),_0x6715('0x8')]}]},'log':_0x6715('0x9')});};};
\ No newline at end of file
index d2aba6d..a880754 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcf2=['../client','create','Request','CreateFaxQueueReport','DESC','UpdateFaxQueueReport'];(function(_0x1d24d9,_0x377797){var _0x2dfab7=function(_0x1459c7){while(--_0x1459c7){_0x1d24d9['push'](_0x1d24d9['shift']());}};_0x2dfab7(++_0x377797);}(_0xbcf2,0x15c));var _0x2bcf=function(_0x11ea64,_0x59f7a2){_0x11ea64=_0x11ea64-0x0;var _0x30590a=_0xbcf2[_0x11ea64];return _0x30590a;};'use strict';var client=require(_0x2bcf('0x0'));exports[_0x2bcf('0x1')]=function(_0x2364dd){return client[_0x2bcf('0x2')](_0x2bcf('0x3'),{'body':_0x2364dd,'log':_0x2bcf('0x3')});};exports['update']=function(_0x1963bb,_0x51e1dc){return client[_0x2bcf('0x2')]('UpdateFaxQueueReport',{'body':_0x51e1dc,'options':{'where':{'uniqueid':_0x1963bb},'order':[['id',_0x2bcf('0x4')]],'limit':0x1},'log':_0x2bcf('0x5')});};
\ No newline at end of file
+var _0xb028=['create','Request','CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','../client'];(function(_0x831154,_0x1495b8){var _0x1035a1=function(_0x30cea8){while(--_0x30cea8){_0x831154['push'](_0x831154['shift']());}};_0x1035a1(++_0x1495b8);}(_0xb028,0xfb));var _0x8b02=function(_0x2c6a9c,_0x244ed9){_0x2c6a9c=_0x2c6a9c-0x0;var _0x21591f=_0xb028[_0x2c6a9c];return _0x21591f;};'use strict';var client=require(_0x8b02('0x0'));exports[_0x8b02('0x1')]=function(_0x5118ec){return client[_0x8b02('0x2')](_0x8b02('0x3'),{'body':_0x5118ec,'log':_0x8b02('0x3')});};exports[_0x8b02('0x4')]=function(_0x4c7aa6,_0x9076c5){return client[_0x8b02('0x2')](_0x8b02('0x5'),{'body':_0x9076c5,'options':{'where':{'uniqueid':_0x4c7aa6},'order':[['id',_0x8b02('0x6')]],'limit':0x1},'log':_0x8b02('0x5')});};
\ No newline at end of file
index c79a665..8bf0f6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fef=['Interval','getIntervals','Request','GetInterval','name'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x6fef,0x1be));var _0xf6fe=function(_0x3ebd8c,_0x2cd6ac){_0x3ebd8c=_0x3ebd8c-0x0;var _0x2ce2ad=_0x6fef[_0x3ebd8c];return _0x2ce2ad;};'use strict';var client=require('../client');exports[_0xf6fe('0x0')]=function(){return function(){return client[_0xf6fe('0x1')](_0xf6fe('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xf6fe('0x3')],'include':[{'model':_0xf6fe('0x4'),'as':'Intervals','attributes':['id',_0xf6fe('0x3'),'interval']}]},'log':_0xf6fe('0x0')});};};
\ No newline at end of file
+var _0xfbe9=['Interval','interval','../client','getIntervals','Request','GetInterval','name'];(function(_0x39198d,_0x2dfa1c){var _0x383e5f=function(_0x1a1e70){while(--_0x1a1e70){_0x39198d['push'](_0x39198d['shift']());}};_0x383e5f(++_0x2dfa1c);}(_0xfbe9,0x1ad));var _0x9fbe=function(_0x233f43,_0x600ccb){_0x233f43=_0x233f43-0x0;var _0x3059d4=_0xfbe9[_0x233f43];return _0x3059d4;};'use strict';var client=require(_0x9fbe('0x0'));exports[_0x9fbe('0x1')]=function(){return function(){return client[_0x9fbe('0x2')](_0x9fbe('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x9fbe('0x4')],'include':[{'model':_0x9fbe('0x5'),'as':'Intervals','attributes':['id',_0x9fbe('0x4'),_0x9fbe('0x6')]}]},'log':_0x9fbe('0x1')});};};
\ No newline at end of file
index b93635a..56ea184 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1893=['Request','UpdateMailInteraction','updateMailInteraction','addTags','AddTagsToMailInteraction','addTagsToChatInteraction'];(function(_0x508def,_0x26d980){var _0x2ed523=function(_0x19c1e3){while(--_0x19c1e3){_0x508def['push'](_0x508def['shift']());}};_0x2ed523(++_0x26d980);}(_0x1893,0xa2));var _0x3189=function(_0x1aa3ce,_0x453b5a){_0x1aa3ce=_0x1aa3ce-0x0;var _0x3fb000=_0x1893[_0x1aa3ce];return _0x3fb000;};'use strict';var client=require('../client');exports['update']=function(_0x1bfe8b,_0x3aec2b){return client[_0x3189('0x0')](_0x3189('0x1'),{'body':_0x3aec2b,'options':{'where':{'id':_0x1bfe8b}},'log':_0x3189('0x2')});};exports[_0x3189('0x3')]=function(_0x3953a2,_0x5371db){return client[_0x3189('0x0')](_0x3189('0x4'),{'body':_0x5371db,'options':{'where':{'id':_0x3953a2}},'log':_0x3189('0x5')});};
\ No newline at end of file
+var _0xd7d1=['addTags','AddTagsToMailInteraction','addTagsToChatInteraction','../client','update','Request','UpdateMailInteraction','updateMailInteraction'];(function(_0x3dfeb9,_0x1cc6e4){var _0x412314=function(_0x321253){while(--_0x321253){_0x3dfeb9['push'](_0x3dfeb9['shift']());}};_0x412314(++_0x1cc6e4);}(_0xd7d1,0x1b3));var _0x1d7d=function(_0x393c2a,_0x2a56a7){_0x393c2a=_0x393c2a-0x0;var _0x273222=_0xd7d1[_0x393c2a];return _0x273222;};'use strict';var client=require(_0x1d7d('0x0'));exports[_0x1d7d('0x1')]=function(_0xce4540,_0x447083){return client[_0x1d7d('0x2')](_0x1d7d('0x3'),{'body':_0x447083,'options':{'where':{'id':_0xce4540}},'log':_0x1d7d('0x4')});};exports[_0x1d7d('0x5')]=function(_0x1ac097,_0x1adb6b){return client[_0x1d7d('0x2')](_0x1d7d('0x6'),{'body':_0x1adb6b,'options':{'where':{'id':_0x1ac097}},'log':_0x1d7d('0x7')});};
\ No newline at end of file
index 30f9782..c48aaa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdc7=['Request','CreateMailMessage','createMailMessage'];(function(_0x14c500,_0x1c818c){var _0x4d86d1=function(_0x56fa21){while(--_0x56fa21){_0x14c500['push'](_0x14c500['shift']());}};_0x4d86d1(++_0x1c818c);}(_0xfdc7,0x141));var _0x7fdc=function(_0x20936e,_0x4d5283){_0x20936e=_0x20936e-0x0;var _0x50a212=_0xfdc7[_0x20936e];return _0x50a212;};'use strict';var client=require('../client');exports['create']=function(_0x3f955a){return client[_0x7fdc('0x0')](_0x7fdc('0x1'),{'body':_0x3f955a,'log':_0x7fdc('0x2')});};
\ No newline at end of file
+var _0x7fab=['Request','CreateMailMessage','create'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x7fab,0x1df));var _0xb7fa=function(_0x3d7811,_0x59daeb){_0x3d7811=_0x3d7811-0x0;var _0x927cfa=_0x7fab[_0x3d7811];return _0x927cfa;};'use strict';var client=require('../client');exports[_0xb7fa('0x0')]=function(_0x2ce6de){return client[_0xb7fa('0x1')](_0xb7fa('0x2'),{'body':_0x2ce6de,'log':'createMailMessage'});};
\ No newline at end of file
index 43648ea..0934f9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x598a=['Request','GetMailQueue','name','timeout','User','Agents','online','../client','getMailQueues'];(function(_0x5eaa0b,_0x433b2f){var _0x28b295=function(_0x5e4f6d){while(--_0x5e4f6d){_0x5eaa0b['push'](_0x5eaa0b['shift']());}};_0x28b295(++_0x433b2f);}(_0x598a,0x1c9));var _0xa598=function(_0x4592ab,_0x5281f4){_0x4592ab=_0x4592ab-0x0;var _0xfe920b=_0x598a[_0x4592ab];return _0xfe920b;};'use strict';var client=require(_0xa598('0x0'));exports[_0xa598('0x1')]=function(){return function(){return client[_0xa598('0x2')](_0xa598('0x3'),{'options':{'raw':![],'attributes':['id',_0xa598('0x4'),_0xa598('0x5'),'strategy'],'include':[{'model':_0xa598('0x6'),'as':_0xa598('0x7'),'attributes':['id','name',_0xa598('0x8'),'mailPause']}]},'log':_0xa598('0x1')});};};
\ No newline at end of file
+var _0xa9f8=['getMailQueues','Request','GetMailQueue','timeout','User','Agents','name','mailPause','../client'];(function(_0x40ff4e,_0x50a4a3){var _0x2ea887=function(_0x3a177b){while(--_0x3a177b){_0x40ff4e['push'](_0x40ff4e['shift']());}};_0x2ea887(++_0x50a4a3);}(_0xa9f8,0xe0));var _0x8a9f=function(_0x4e17bb,_0x2dcbcb){_0x4e17bb=_0x4e17bb-0x0;var _0xb8cf5=_0xa9f8[_0x4e17bb];return _0xb8cf5;};'use strict';var client=require(_0x8a9f('0x0'));exports[_0x8a9f('0x1')]=function(){return function(){return client[_0x8a9f('0x2')](_0x8a9f('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x8a9f('0x4'),'strategy'],'include':[{'model':_0x8a9f('0x5'),'as':_0x8a9f('0x6'),'attributes':['id',_0x8a9f('0x7'),'online',_0x8a9f('0x8')]}]},'log':_0x8a9f('0x1')});};};
\ No newline at end of file
index aab8f11..547ed14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc62c=['Request','CreateMailQueueReport','update','UpdateMailQueueReport','../client','create'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xc62c,0xa6));var _0xcc62=function(_0x1b564a,_0x24f2d0){_0x1b564a=_0x1b564a-0x0;var _0x1e6af1=_0xc62c[_0x1b564a];return _0x1e6af1;};'use strict';var client=require(_0xcc62('0x0'));exports[_0xcc62('0x1')]=function(_0x21ef52){return client[_0xcc62('0x2')](_0xcc62('0x3'),{'body':_0x21ef52,'log':_0xcc62('0x3')});};exports[_0xcc62('0x4')]=function(_0x529885,_0x463d60){return client['Request']('UpdateMailQueueReport',{'body':_0x463d60,'options':{'where':{'uniqueid':_0x529885},'order':[['id','DESC']],'limit':0x1},'log':_0xcc62('0x5')});};
\ No newline at end of file
+var _0x06c0=['Request','CreateMailQueueReport','UpdateMailQueueReport','DESC','../client','create'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x06c0,0x1b4));var _0x006c=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0x06c0[_0x1b828b];return _0x98da1a;};'use strict';var client=require(_0x006c('0x0'));exports[_0x006c('0x1')]=function(_0x4fe98b){return client[_0x006c('0x2')](_0x006c('0x3'),{'body':_0x4fe98b,'log':_0x006c('0x3')});};exports['update']=function(_0x24d8da,_0x17a479){return client['Request'](_0x006c('0x4'),{'body':_0x17a479,'options':{'where':{'uniqueid':_0x24d8da},'order':[['id',_0x006c('0x5')]],'limit':0x1},'log':_0x006c('0x4')});};
\ No newline at end of file
index da558bd..4f9e912 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa89b=['updateOpenchannelInteraction','Request','AddTagsToOpenchannelInteraction','../client','UpdateOpenchannelInteraction'];(function(_0xf99d17,_0x53f197){var _0x524e07=function(_0x164d36){while(--_0x164d36){_0xf99d17['push'](_0xf99d17['shift']());}};_0x524e07(++_0x53f197);}(_0xa89b,0x161));var _0xba89=function(_0x290818,_0x500c35){_0x290818=_0x290818-0x0;var _0x2cc668=_0xa89b[_0x290818];return _0x2cc668;};'use strict';var client=require(_0xba89('0x0'));exports['update']=function(_0x38ab58,_0x20ba67){return client['Request'](_0xba89('0x1'),{'body':_0x20ba67,'options':{'where':{'id':_0x38ab58}},'log':_0xba89('0x2')});};exports['addTags']=function(_0x4bf954,_0x442716){return client[_0xba89('0x3')](_0xba89('0x4'),{'body':_0x442716,'options':{'where':{'id':_0x4bf954}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0xdcbc=['AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdcbc,0x1ac));var _0xcdcb=function(_0x42df68,_0x3cf701){_0x42df68=_0x42df68-0x0;var _0x20517a=_0xdcbc[_0x42df68];return _0x20517a;};'use strict';var client=require(_0xcdcb('0x0'));exports['update']=function(_0x6735a5,_0x1bd38d){return client[_0xcdcb('0x1')](_0xcdcb('0x2'),{'body':_0x1bd38d,'options':{'where':{'id':_0x6735a5}},'log':_0xcdcb('0x3')});};exports['addTags']=function(_0x32420a,_0x277989){return client[_0xcdcb('0x1')](_0xcdcb('0x4'),{'body':_0x277989,'options':{'where':{'id':_0x32420a}},'log':_0xcdcb('0x5')});};
\ No newline at end of file
index 1a1cb7b..587dd28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64f3=['create','CreateOpenchannelMessage','../client'];(function(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0x64f3,0x140));var _0x364f=function(_0x4e7130,_0xd95743){_0x4e7130=_0x4e7130-0x0;var _0x39b156=_0x64f3[_0x4e7130];return _0x39b156;};'use strict';var client=require(_0x364f('0x0'));exports[_0x364f('0x1')]=function(_0x5ddcb6){return client['Request'](_0x364f('0x2'),{'body':_0x5ddcb6,'log':'createOpenchannelMessage'});};
\ No newline at end of file
+var _0x7284=['../client','create','Request','CreateOpenchannelMessage'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7284,0x1c4));var _0x4728=function(_0x1f7b8f,_0x4aa603){_0x1f7b8f=_0x1f7b8f-0x0;var _0x50ce19=_0x7284[_0x1f7b8f];return _0x50ce19;};'use strict';var client=require(_0x4728('0x0'));exports[_0x4728('0x1')]=function(_0x57d702){return client[_0x4728('0x2')](_0x4728('0x3'),{'body':_0x57d702,'log':'createOpenchannelMessage'});};
\ No newline at end of file
index 0105248..13107ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x944e=['GetOpenchannelQueue','name','timeout','strategy','User','openchannelPause','../client','getOpenchannelQueues','Request'];(function(_0x4b37ec,_0x5eb8b9){var _0x222113=function(_0x40f240){while(--_0x40f240){_0x4b37ec['push'](_0x4b37ec['shift']());}};_0x222113(++_0x5eb8b9);}(_0x944e,0xba));var _0xe944=function(_0x45966c,_0x18147d){_0x45966c=_0x45966c-0x0;var _0x588c71=_0x944e[_0x45966c];return _0x588c71;};'use strict';var client=require(_0xe944('0x0'));exports[_0xe944('0x1')]=function(){return function(){return client[_0xe944('0x2')](_0xe944('0x3'),{'options':{'raw':![],'attributes':['id',_0xe944('0x4'),_0xe944('0x5'),_0xe944('0x6')],'include':[{'model':_0xe944('0x7'),'as':'Agents','attributes':['id','name','online',_0xe944('0x8')]}]},'log':_0xe944('0x1')});};};
\ No newline at end of file
+var _0x0762=['timeout','strategy','online','openchannelPause','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name'];(function(_0x1f44e4,_0x22d9fd){var _0x591989=function(_0x3aeb88){while(--_0x3aeb88){_0x1f44e4['push'](_0x1f44e4['shift']());}};_0x591989(++_0x22d9fd);}(_0x0762,0x79));var _0x2076=function(_0x41d67e,_0x336a28){_0x41d67e=_0x41d67e-0x0;var _0x100cb2=_0x0762[_0x41d67e];return _0x100cb2;};'use strict';var client=require(_0x2076('0x0'));exports[_0x2076('0x1')]=function(){return function(){return client[_0x2076('0x2')](_0x2076('0x3'),{'options':{'raw':![],'attributes':['id',_0x2076('0x4'),_0x2076('0x5'),_0x2076('0x6')],'include':[{'model':'User','as':'Agents','attributes':['id',_0x2076('0x4'),_0x2076('0x7'),_0x2076('0x8')]}]},'log':_0x2076('0x1')});};};
\ No newline at end of file
index a149021..dd0570b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72a9=['CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC','../client','create'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0x72a9,0x12a));var _0x972a=function(_0x413ee6,_0x3de2d4){_0x413ee6=_0x413ee6-0x0;var _0x33188f=_0x72a9[_0x413ee6];return _0x33188f;};'use strict';var client=require(_0x972a('0x0'));exports[_0x972a('0x1')]=function(_0xcd4fd1){return client['Request'](_0x972a('0x2'),{'body':_0xcd4fd1,'log':_0x972a('0x2')});};exports[_0x972a('0x3')]=function(_0x1a78af,_0x24b82b){return client['Request'](_0x972a('0x4'),{'body':_0x24b82b,'options':{'where':{'uniqueid':_0x1a78af},'order':[['id',_0x972a('0x5')]],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
+var _0x3043=['DESC','UpdateOpenchannelQueueReport','../client','create','Request','CreateOpenchannelQueueReport','update'];(function(_0x5836fd,_0x16cc74){var _0x30fe2d=function(_0x24f30b){while(--_0x24f30b){_0x5836fd['push'](_0x5836fd['shift']());}};_0x30fe2d(++_0x16cc74);}(_0x3043,0x175));var _0x3304=function(_0x3e2fcf,_0x579110){_0x3e2fcf=_0x3e2fcf-0x0;var _0x497db7=_0x3043[_0x3e2fcf];return _0x497db7;};'use strict';var client=require(_0x3304('0x0'));exports[_0x3304('0x1')]=function(_0x1e682e){return client[_0x3304('0x2')](_0x3304('0x3'),{'body':_0x1e682e,'log':_0x3304('0x3')});};exports[_0x3304('0x4')]=function(_0x11a78f,_0x17214e){return client[_0x3304('0x2')]('UpdateOpenchannelQueueReport',{'body':_0x17214e,'options':{'where':{'uniqueid':_0x11a78f},'order':[['id',_0x3304('0x5')]],'limit':0x1},'log':_0x3304('0x6')});};
\ No newline at end of file
index 6b40016..0813c44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc01b=['UpdateSmsInteraction','updateSmsInteraction','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request'];(function(_0x287947,_0x57fc0a){var _0x384269=function(_0x36e023){while(--_0x36e023){_0x287947['push'](_0x287947['shift']());}};_0x384269(++_0x57fc0a);}(_0xc01b,0x74));var _0xbc01=function(_0x58adcf,_0x106e7e){_0x58adcf=_0x58adcf-0x0;var _0x38becb=_0xc01b[_0x58adcf];return _0x38becb;};'use strict';var client=require(_0xbc01('0x0'));exports[_0xbc01('0x1')]=function(_0x2e96a4,_0x79c950){return client[_0xbc01('0x2')](_0xbc01('0x3'),{'body':_0x79c950,'options':{'where':{'id':_0x2e96a4}},'log':_0xbc01('0x4')});};exports['addTags']=function(_0x2c35d0,_0x133078){return client[_0xbc01('0x2')](_0xbc01('0x5'),{'body':_0x133078,'options':{'where':{'id':_0x2c35d0}},'log':_0xbc01('0x6')});};
\ No newline at end of file
+var _0x1d25=['updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request'];(function(_0x415bcc,_0x5eb10e){var _0x3b73da=function(_0x1f8362){while(--_0x1f8362){_0x415bcc['push'](_0x415bcc['shift']());}};_0x3b73da(++_0x5eb10e);}(_0x1d25,0xba));var _0x51d2=function(_0x104a84,_0x285970){_0x104a84=_0x104a84-0x0;var _0x4973ff=_0x1d25[_0x104a84];return _0x4973ff;};'use strict';var client=require(_0x51d2('0x0'));exports[_0x51d2('0x1')]=function(_0x153698,_0x3f269b){return client[_0x51d2('0x2')]('UpdateSmsInteraction',{'body':_0x3f269b,'options':{'where':{'id':_0x153698}},'log':_0x51d2('0x3')});};exports[_0x51d2('0x4')]=function(_0x4c93f2,_0x1f9fc8){return client[_0x51d2('0x2')](_0x51d2('0x5'),{'body':_0x1f9fc8,'options':{'where':{'id':_0x4c93f2}},'log':_0x51d2('0x6')});};
\ No newline at end of file
index 9ac0d41..4c496ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf65=['Request','createSmsMessage','../client'];(function(_0x40a253,_0x2e33cd){var _0x530aff=function(_0x12b323){while(--_0x12b323){_0x40a253['push'](_0x40a253['shift']());}};_0x530aff(++_0x2e33cd);}(_0xdf65,0x122));var _0x5df6=function(_0x1c9442,_0x5683fc){_0x1c9442=_0x1c9442-0x0;var _0x20bcfd=_0xdf65[_0x1c9442];return _0x20bcfd;};'use strict';var client=require(_0x5df6('0x0'));exports['create']=function(_0x19e1cb){return client[_0x5df6('0x1')]('CreateSmsMessage',{'body':_0x19e1cb,'log':_0x5df6('0x2')});};
\ No newline at end of file
+var _0xdbfc=['CreateSmsMessage','../client'];(function(_0x55b3b5,_0x254983){var _0x5297a9=function(_0x5f302f){while(--_0x5f302f){_0x55b3b5['push'](_0x55b3b5['shift']());}};_0x5297a9(++_0x254983);}(_0xdbfc,0xed));var _0xcdbf=function(_0x426bd9,_0x2861ca){_0x426bd9=_0x426bd9-0x0;var _0xa40867=_0xdbfc[_0x426bd9];return _0xa40867;};'use strict';var client=require(_0xcdbf('0x0'));exports['create']=function(_0xdd35ec){return client['Request'](_0xcdbf('0x1'),{'body':_0xdd35ec,'log':'createSmsMessage'});};
\ No newline at end of file
index a949516..b142bcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['timeout','strategy','User','Agents','name','../client','getSmsQueues'];(function(_0x12cc30,_0x52c9da){var _0x3c64c2=function(_0x12a28f){while(--_0x12a28f){_0x12cc30['push'](_0x12cc30['shift']());}};_0x3c64c2(++_0x52c9da);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var client=require(_0x0d8b('0x0'));exports[_0x0d8b('0x1')]=function(){return function(){return client['Request']('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0d8b('0x2'),_0x0d8b('0x3')],'include':[{'model':_0x0d8b('0x4'),'as':_0x0d8b('0x5'),'attributes':['id',_0x0d8b('0x6'),'online','smsPause']}]},'log':_0x0d8b('0x1')});};};
\ No newline at end of file
+var _0xe706=['Agents','online','smsPause','../client','getSmsQueues','Request','name','timeout','strategy','User'];(function(_0x46b515,_0x4c52db){var _0xa56cb8=function(_0x38e895){while(--_0x38e895){_0x46b515['push'](_0x46b515['shift']());}};_0xa56cb8(++_0x4c52db);}(_0xe706,0xa3));var _0x6e70=function(_0x1a1460,_0x539531){_0x1a1460=_0x1a1460-0x0;var _0x33ab03=_0xe706[_0x1a1460];return _0x33ab03;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x6e70('0x3'),_0x6e70('0x4'),_0x6e70('0x5')],'include':[{'model':_0x6e70('0x6'),'as':_0x6e70('0x7'),'attributes':['id',_0x6e70('0x3'),_0x6e70('0x8'),_0x6e70('0x9')]}]},'log':_0x6e70('0x1')});};};
\ No newline at end of file
index 7e38f5c..06093d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x4bf96c,_0x4d24fd){var _0x281d09=function(_0x56538e){while(--_0x56538e){_0x4bf96c['push'](_0x4bf96c['shift']());}};_0x281d09(++_0x4d24fd);}(_0xedd9,0xfc));var _0x9edd=function(_0x2db637,_0x3d5742){_0x2db637=_0x2db637-0x0;var _0x2aa2a8=_0xedd9[_0x2db637];return _0x2aa2a8;};'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 _0x9957=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x1fe25f,_0x30e686){var _0xe70691=function(_0x2fc4c3){while(--_0x2fc4c3){_0x1fe25f['push'](_0x1fe25f['shift']());}};_0xe70691(++_0x30e686);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3){return client[_0x7995('0x2')]('CreateSmsQueueReport',{'body':_0x2722a3,'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x1902b4,_0x462a03){return client['Request'](_0x7995('0x5'),{'body':_0x462a03,'options':{'where':{'uniqueid':_0x1902b4},'order':[['id',_0x7995('0x6')]],'limit':0x1},'log':_0x7995('0x5')});};
\ No newline at end of file
index 36e80fe..9e663b4 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(_0x354db6,_0x1a814d){var _0x120a06=function(_0x50b565){while(--_0x50b565){_0x354db6['push'](_0x354db6['shift']());}};_0x120a06(++_0x1a814d);}(_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
+var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0x564033,_0x150b24){var _0x3d3329=function(_0xa3d92b){while(--_0xa3d92b){_0x564033['push'](_0x564033['shift']());}};_0x3d3329(++_0x150b24);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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 8dc4da4..ff82921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4148=['../client','update','Request','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4148,0xc6));var _0x8414=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0x4148[_0x4dbaad];return _0x226c72;};'use strict';var client=require(_0x8414('0x0'));exports[_0x8414('0x1')]=function(_0x140433,_0xc19cfb){return client[_0x8414('0x2')]('UpdateWhatsappInteraction',{'body':_0xc19cfb,'options':{'where':{'id':_0x140433}},'log':_0x8414('0x3')});};exports[_0x8414('0x4')]=function(_0x41ddde,_0x361d0b){return client['Request'](_0x8414('0x5'),{'body':_0x361d0b,'options':{'where':{'id':_0x41ddde}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
+var _0x6596=['addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction'];(function(_0x3950cc,_0x8ffe1d){var _0x5a4586=function(_0x318a2c){while(--_0x318a2c){_0x3950cc['push'](_0x3950cc['shift']());}};_0x5a4586(++_0x8ffe1d);}(_0x6596,0x1d3));var _0x6659=function(_0x331133,_0x20cef7){_0x331133=_0x331133-0x0;var _0x86de07=_0x6596[_0x331133];return _0x86de07;};'use strict';var client=require(_0x6659('0x0'));exports[_0x6659('0x1')]=function(_0x51eb88,_0x28cf44){return client[_0x6659('0x2')](_0x6659('0x3'),{'body':_0x28cf44,'options':{'where':{'id':_0x51eb88}},'log':_0x6659('0x4')});};exports[_0x6659('0x5')]=function(_0x67ac1d,_0x4bfd3c){return client['Request'](_0x6659('0x6'),{'body':_0x4bfd3c,'options':{'where':{'id':_0x67ac1d}},'log':_0x6659('0x7')});};
\ No newline at end of file
index 54b2b99..dc95b5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbc2=['../client','Request'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0xfbc2,0x128));var _0x2fbc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfbc2[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x2fbc('0x0'));exports['create']=function(_0x7b5039){return client[_0x2fbc('0x1')]('CreateWhatsappMessage',{'body':_0x7b5039,'log':'createWhatsappMessage'});};
\ No newline at end of file
+var _0x3ffc=['../client','create','Request','CreateWhatsappMessage','createWhatsappMessage'];(function(_0x20a418,_0x2cc610){var _0x769a77=function(_0xe4e686){while(--_0xe4e686){_0x20a418['push'](_0x20a418['shift']());}};_0x769a77(++_0x2cc610);}(_0x3ffc,0xb9));var _0xc3ff=function(_0x46b8aa,_0x246d21){_0x46b8aa=_0x46b8aa-0x0;var _0x5a3d61=_0x3ffc[_0x46b8aa];return _0x5a3d61;};'use strict';var client=require(_0xc3ff('0x0'));exports[_0xc3ff('0x1')]=function(_0x3cd8fa){return client[_0xc3ff('0x2')](_0xc3ff('0x3'),{'body':_0x3cd8fa,'log':_0xc3ff('0x4')});};
\ No newline at end of file
index 2dabc5f..a1b9358 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd199=['Agents','online','../client','getWhatsappQueues','name','strategy'];(function(_0x189ed5,_0x3e119c){var _0x221bb9=function(_0x4e2029){while(--_0x4e2029){_0x189ed5['push'](_0x189ed5['shift']());}};_0x221bb9(++_0x3e119c);}(_0xd199,0x176));var _0x9d19=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd199[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x9d19('0x0'));exports[_0x9d19('0x1')]=function(){return function(){return client['Request']('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0x9d19('0x2'),'timeout',_0x9d19('0x3')],'include':[{'model':'User','as':_0x9d19('0x4'),'attributes':['id',_0x9d19('0x2'),_0x9d19('0x5'),'whatsappPause']}]},'log':_0x9d19('0x1')});};};
\ No newline at end of file
+var _0x236b=['name','timeout','strategy','User','online','whatsappPause','../client','getWhatsappQueues','Request'];(function(_0xfd9b19,_0x21d75f){var _0x514918=function(_0x52e212){while(--_0x52e212){_0xfd9b19['push'](_0xfd9b19['shift']());}};_0x514918(++_0x21d75f);}(_0x236b,0x11d));var _0xb236=function(_0x9daacd,_0x5bb114){_0x9daacd=_0x9daacd-0x0;var _0x4c967e=_0x236b[_0x9daacd];return _0x4c967e;};'use strict';var client=require(_0xb236('0x0'));exports[_0xb236('0x1')]=function(){return function(){return client[_0xb236('0x2')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0xb236('0x3'),_0xb236('0x4'),_0xb236('0x5')],'include':[{'model':_0xb236('0x6'),'as':'Agents','attributes':['id',_0xb236('0x3'),_0xb236('0x7'),_0xb236('0x8')]}]},'log':_0xb236('0x1')});};};
\ No newline at end of file
index 642ff9e..9a3533f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8be1=['UpdateWhatsappQueueReport','../client','create','Request','CreateWhatsappQueueReport'];(function(_0x25fd78,_0x122c90){var _0x1200f2=function(_0x24d056){while(--_0x24d056){_0x25fd78['push'](_0x25fd78['shift']());}};_0x1200f2(++_0x122c90);}(_0x8be1,0x1e6));var _0x18be=function(_0x5e45c4,_0x5117d9){_0x5e45c4=_0x5e45c4-0x0;var _0x20c291=_0x8be1[_0x5e45c4];return _0x20c291;};'use strict';var client=require(_0x18be('0x0'));exports[_0x18be('0x1')]=function(_0x3d0075){return client[_0x18be('0x2')](_0x18be('0x3'),{'body':_0x3d0075,'log':_0x18be('0x3')});};exports['update']=function(_0x29ffe1,_0x16889e){return client[_0x18be('0x2')](_0x18be('0x4'),{'body':_0x16889e,'options':{'where':{'uniqueid':_0x29ffe1},'order':[['id','DESC']],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
+var _0x9d86=['DESC','../client','create','Request','CreateWhatsappQueueReport','update'];(function(_0x4c2d7d,_0x17a1ef){var _0x5220e6=function(_0x1c01ff){while(--_0x1c01ff){_0x4c2d7d['push'](_0x4c2d7d['shift']());}};_0x5220e6(++_0x17a1ef);}(_0x9d86,0x175));var _0x69d8=function(_0x288100,_0x3eb7ce){_0x288100=_0x288100-0x0;var _0x5ecd22=_0x9d86[_0x288100];return _0x5ecd22;};'use strict';var client=require(_0x69d8('0x0'));exports[_0x69d8('0x1')]=function(_0x12104d){return client[_0x69d8('0x2')](_0x69d8('0x3'),{'body':_0x12104d,'log':'CreateWhatsappQueueReport'});};exports[_0x69d8('0x4')]=function(_0x200cd,_0x1cb434){return client[_0x69d8('0x2')]('UpdateWhatsappQueueReport',{'body':_0x1cb434,'options':{'where':{'uniqueid':_0x200cd},'order':[['id',_0x69d8('0x5')]],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
index 07cd033..7468b1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc60=['end','rules','[%s][AGENT]\x20ROUTING\x20END','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','stop','[%s][QUEUE]\x20%s','../../../../config/logger','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','validate','length','error','[%s][AGENT]\x20%s','message','find','timeout','createQueue','atimeout','channel','START:%s'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xcc60,0x7b));var _0x0cc6=function(_0x312d40,_0x5d6979){_0x312d40=_0x312d40-0x0;var _0x1fd607=_0xcc60[_0x312d40];return _0x1fd607;};'use strict';var schema=require('validate');var _=require('lodash');var util=require('util');var seqqueue=require('seq-queue');var logger=require(_0x0cc6('0x0'))('routing');var strategy=require('./strategy');var queue=schema({'name':{'type':_0x0cc6('0x1'),'required':!![],'message':_0x0cc6('0x2')},'timeout':{'type':_0x0cc6('0x3'),'message':_0x0cc6('0x4')}});function writeLog(_0x56f15e,_0x254ce6,_0x5bff96){return logger[_0x0cc6('0x5')](util[_0x0cc6('0x6')](_0x0cc6('0x7'),_0x56f15e,_0x254ce6[_0x0cc6('0x8')],_0x5bff96));}function handleFindAgent(_0x14a120){return function(_0x23f2ea){return _0x23f2ea[_0x0cc6('0x8')][_0x0cc6('0x9')]()===_0x14a120[_0x0cc6('0x9')]();};}exports[_0x0cc6('0xa')]=function(_0x50b8a5,_0x1e2e5e,_0x3fcde8,_0x6e9572){return function(_0x4fe425){try{var _0x50da12={'name':_0x1e2e5e[0x0],'timeout':_0x1e2e5e[0x1]};var _0x3d50b6=queue[_0x0cc6('0xb')](_0x50da12,{'typecast':!![]});if(_0x3d50b6[_0x0cc6('0xc')]){logger[_0x0cc6('0xd')](_0x0cc6('0xe'),_0x50b8a5,_['map'](_0x3d50b6,_0x0cc6('0xf'))['join'](',\x20'));_0x4fe425['stop']();}else{var _0x274354=_[_0x0cc6('0x10')](_0x3fcde8['agents'],handleFindAgent(_0x50da12['name']));if(_0x274354){var _0x4efbcb=(_0x50da12[_0x0cc6('0x11')]||0xa)*0x3e8;var _0x634af0,_0x109f05;var _0x2c581c=seqqueue[_0x0cc6('0x12')](_0x4efbcb);_0x2c581c['id']=_0x50b8a5;_0x2c581c[_0x0cc6('0x13')]=_0x4efbcb;_0x2c581c[_0x0cc6('0x14')]=_0x6e9572[_0x0cc6('0x14')];writeLog(_0x50b8a5,_0x274354,util[_0x0cc6('0x6')](_0x0cc6('0x15'),_0x4efbcb));_0x3fcde8['rules'][_0x50b8a5]['on'](_0x0cc6('0x16'),function(){logger[_0x0cc6('0x5')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x50b8a5);clearTimeout(_0x109f05);_0x109f05=undefined;_0x2c581c['close']();if(_0x3fcde8[_0x0cc6('0x17')][_0x50b8a5]){delete _0x3fcde8[_0x0cc6('0x17')][_0x50b8a5];}_0x4fe425['stop']();});_0x3fcde8['rules'][_0x50b8a5]['on']('complete',function(){if(_0x3fcde8[_0x0cc6('0x17')][_0x50b8a5]){delete _0x3fcde8[_0x0cc6('0x17')][_0x50b8a5];}});_0x109f05=setTimeout(function(){logger[_0x0cc6('0x5')](_0x0cc6('0x18'),_0x50b8a5);clearTimeout(_0x109f05);_0x2c581c['close']();_0x4fe425['next']();},_0x4efbcb);strategy[_0x0cc6('0x19')](_0x2c581c,_0x274354,_0x3fcde8,_0x6e9572);}else{logger[_0x0cc6('0xd')](_0x0cc6('0x1a'),_0x50b8a5,_0x50da12[_0x0cc6('0x8')]);_0x4fe425[_0x0cc6('0x1b')]();}}}catch(_0x5dd49a){console['log'](_0x5dd49a);logger[_0x0cc6('0xd')](_0x0cc6('0x1c'),_0x50b8a5,_0x5dd49a['stack']);_0x4fe425[_0x0cc6('0x1b')]();}};};
\ No newline at end of file
+var _0x4629=['../../../../config/logger','routing','./strategy','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','format','name','toLowerCase','length','error','[%s][AGENT]\x20%s','message','join','stop','agents','timeout','createQueue','atimeout','channel','START:%s','info','rules','complete','[%s][AGENT]\x20ROUTING\x20END','close','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','[%s][QUEUE]\x20%s','validate','util','seq-queue'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x4629,0x79));var _0x9462=function(_0x5cf8bb,_0x462e9c){_0x5cf8bb=_0x5cf8bb-0x0;var _0x28cc44=_0x4629[_0x5cf8bb];return _0x28cc44;};'use strict';var schema=require(_0x9462('0x0'));var _=require('lodash');var util=require(_0x9462('0x1'));var seqqueue=require(_0x9462('0x2'));var logger=require(_0x9462('0x3'))(_0x9462('0x4'));var strategy=require(_0x9462('0x5'));var queue=schema({'name':{'type':'string','required':!![],'message':_0x9462('0x6')},'timeout':{'type':_0x9462('0x7'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x2f9830,_0x1cbb4e,_0x48823a){return logger['info'](util[_0x9462('0x8')]('[%s][AGENT][NAME:%s][STATUS:%s]',_0x2f9830,_0x1cbb4e['name'],_0x48823a));}function handleFindAgent(_0x2736cb){return function(_0x4eb3dd){return _0x4eb3dd[_0x9462('0x9')][_0x9462('0xa')]()===_0x2736cb['toLowerCase']();};}exports['consequence']=function(_0x3292e7,_0x31b5f1,_0x483067,_0x5021af){return function(_0x4b7096){try{var _0x57f833={'name':_0x31b5f1[0x0],'timeout':_0x31b5f1[0x1]};var _0x26acea=queue[_0x9462('0x0')](_0x57f833,{'typecast':!![]});if(_0x26acea[_0x9462('0xb')]){logger[_0x9462('0xc')](_0x9462('0xd'),_0x3292e7,_['map'](_0x26acea,_0x9462('0xe'))[_0x9462('0xf')](',\x20'));_0x4b7096[_0x9462('0x10')]();}else{var _0x478b3d=_['find'](_0x483067[_0x9462('0x11')],handleFindAgent(_0x57f833['name']));if(_0x478b3d){var _0x160f79=(_0x57f833[_0x9462('0x12')]||0xa)*0x3e8;var _0x7a6865,_0x1f741e;var _0x33ad90=seqqueue[_0x9462('0x13')](_0x160f79);_0x33ad90['id']=_0x3292e7;_0x33ad90[_0x9462('0x14')]=_0x160f79;_0x33ad90[_0x9462('0x15')]=_0x5021af['channel'];writeLog(_0x3292e7,_0x478b3d,util['format'](_0x9462('0x16'),_0x160f79));_0x483067['rules'][_0x3292e7]['on']('end',function(){logger[_0x9462('0x17')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x3292e7);clearTimeout(_0x1f741e);_0x1f741e=undefined;_0x33ad90['close']();if(_0x483067['rules'][_0x3292e7]){delete _0x483067['rules'][_0x3292e7];}_0x4b7096[_0x9462('0x10')]();});_0x483067[_0x9462('0x18')][_0x3292e7]['on'](_0x9462('0x19'),function(){if(_0x483067[_0x9462('0x18')][_0x3292e7]){delete _0x483067[_0x9462('0x18')][_0x3292e7];}});_0x1f741e=setTimeout(function(){logger['info'](_0x9462('0x1a'),_0x3292e7);clearTimeout(_0x1f741e);_0x33ad90[_0x9462('0x1b')]();_0x4b7096['next']();},_0x160f79);strategy[_0x9462('0x1c')](_0x33ad90,_0x478b3d,_0x483067,_0x5021af);}else{logger[_0x9462('0xc')](_0x9462('0x1d'),_0x3292e7,_0x57f833[_0x9462('0x9')]);_0x4b7096[_0x9462('0x10')]();}}}catch(_0x356af3){console['log'](_0x356af3);logger[_0x9462('0xc')](_0x9462('0x1e'),_0x3292e7,_0x356af3['stack']);_0x4b7096['stop']();}};};
\ No newline at end of file
index d8997fd..dde2276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53c7=['postText','amazonlex','providerName','providerResponse','stringify','dialogState','Failed','next','error','lodash','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','interaction','UserId','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','sms','channel','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','body','getMustacheRender','Message','create','then','info','[%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'];(function(_0x3fb030,_0x12aebe){var _0xd6899b=function(_0x327646){while(--_0x327646){_0x3fb030['push'](_0x3fb030['shift']());}};_0xd6899b(++_0x12aebe);}(_0x53c7,0x123));var _0x753c=function(_0x5b565b,_0x2df6c5){_0x5b565b=_0x5b565b-0x0;var _0x40f964=_0x53c7[_0x5b565b];return _0x40f964;};'use strict';var _=require(_0x753c('0x0'));var moment=require('moment');var AWS=require(_0x753c('0x1'));var utils=require(_0x753c('0x2'));var logger=require(_0x753c('0x3'))(_0x753c('0x4'));var rpc={'chatMessage':require(_0x753c('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x753c('0x6')),'smsMessage':require(_0x753c('0x7')),'faxMessage':require(_0x753c('0x8')),'whatsappMessage':require(_0x753c('0x9'))};exports[_0x753c('0xa')]=function(_0x314375,_0x1ffc8e){return function(_0x11d76f){try{if(!_['isNil'](this[_0x753c('0xb')][_0x753c('0xc')])){logger['info'](_0x753c('0xd'),_0x314375,_0x753c('0xe'));return _0x11d76f['next']();}var _0x2b140e={'ContactId':this[_0x753c('0xf')]['id'],'sentAt':moment()[_0x753c('0x10')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this['channel']===_0x753c('0x11')||this[_0x753c('0x12')]==='whatsapp'){_0x2b140e[_0x753c('0x13')]=this[_0x753c('0xb')]['phone'];}var _0x1e065e=this['channel'];if(_0x1e065e===_0x753c('0x14')){_0x2b140e[_0x753c('0x15')]=this[_0x753c('0x16')]['id'];}else{_0x2b140e[_[_0x753c('0x17')](_0x1e065e)+_0x753c('0x18')]=this[_0x753c('0x16')]['id'];}_0x2b140e[_[_0x753c('0x17')](_0x1e065e)+_0x753c('0x19')]=this[_0x753c('0xb')]['id'];if(this[_0x753c('0xb')]['created']){var _0x37eec8=_0x1ffc8e[0x4];if(!_['isEmpty'](_0x37eec8)){_0x2b140e[_0x753c('0x1a')]=utils[_0x753c('0x1b')](_0x37eec8,this);return rpc[_0x1e065e+_0x753c('0x1c')][_0x753c('0x1d')](_0x2b140e)[_0x753c('0x1e')](function(_0x53ca5f){logger['info'](_0x753c('0xd'),_0x314375,_0x2b140e[_0x753c('0x1a')]);})['catch'](function(_0x436c1d){logger['error']('[%s][AMAZONLEX]\x20%s',_0x314375,JSON['stringify'](_0x436c1d));})['finally'](function(){logger[_0x753c('0x1f')](_0x753c('0x20'),_0x314375);_0x11d76f[_0x753c('0x21')]();});}else{logger[_0x753c('0x1f')](_0x753c('0x22'),_0x314375);_0x11d76f['stop']();}}else{var _0x5ecd38=this;var _0x24c80a=new AWS[(_0x753c('0x23'))]({'accessKeyId':_0x1ffc8e[0x0],'secretAccessKey':_0x1ffc8e[0x1],'region':_0x1ffc8e[0x2]});var _0x5b5e36={'botAlias':'$LATEST','botName':_0x1ffc8e[0x3],'inputText':this[_0x753c('0x24')][_0x753c('0x1a')],'userId':this[_0x753c('0x12')]+':'+this['interaction']['id'][_0x753c('0x25')]()};_0x24c80a[_0x753c('0x26')](_0x5b5e36,function(_0x131adc,_0x2bb134){if(_0x131adc){logger['error'](_0x753c('0xd'),_0x314375,_0x131adc[_0x753c('0x24')]);_0x11d76f['next']();}else if(_0x2bb134&&_0x2bb134[_0x753c('0x24')]){_0x5ecd38[_0x753c('0x1a')][_0x753c('0x27')]=_0x2bb134;_0x2b140e['body']=_0x2bb134[_0x753c('0x24')];_0x2b140e[_0x753c('0x28')]=_0x753c('0x27');_0x2b140e[_0x753c('0x29')]=JSON[_0x753c('0x2a')](_0x2bb134);return rpc[_0x1e065e+'Message']['create'](_0x2b140e)[_0x753c('0x1e')](function(_0x2a60a6){logger[_0x753c('0x1f')](_0x753c('0xd'),_0x314375,_0x2b140e[_0x753c('0x1a')]);if(_0x2bb134[_0x753c('0x2b')]==_0x753c('0x2c')){_0x11d76f[_0x753c('0x2d')]();}else{_0x11d76f['stop']();}})['catch'](function(_0x4272b5){logger[_0x753c('0x2e')](_0x753c('0xd'),_0x314375,JSON[_0x753c('0x2a')](_0x4272b5));_0x11d76f[_0x753c('0x2d')]();});}else{_0x11d76f[_0x753c('0x2d')]();}});}}catch(_0x23eda0){logger[_0x753c('0x2e')](_0x753c('0xd'),_0x314375,JSON[_0x753c('0x2a')](_0x23eda0));_0x11d76f[_0x753c('0x21')]();}};};
\ No newline at end of file
+var _0xa32c=['providerName','providerResponse','Message','Failed','lodash','aws-sdk','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','isNil','interaction','UserId','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','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','create','then','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','LexRuntime','$LATEST','toString','message','amazonlex'];(function(_0x10fa6f,_0x2af428){var _0x337c70=function(_0xca4b62){while(--_0xca4b62){_0x10fa6f['push'](_0x10fa6f['shift']());}};_0x337c70(++_0x2af428);}(_0xa32c,0x94));var _0xca32=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xa32c[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0xca32('0x0'));var moment=require('moment');var AWS=require(_0xca32('0x1'));var utils=require('./utils');var logger=require(_0xca32('0x2'))('routing');var rpc={'chatMessage':require(_0xca32('0x3')),'openchannelMessage':require(_0xca32('0x4')),'mailMessage':require(_0xca32('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xca32('0x6')),'whatsappMessage':require(_0xca32('0x7'))};exports['consequence']=function(_0x513426,_0x21bb79){return function(_0x1ac115){try{if(!_[_0xca32('0x8')](this[_0xca32('0x9')][_0xca32('0xa')])){logger[_0xca32('0xb')](_0xca32('0xc'),_0x513426,_0xca32('0xd'));return _0x1ac115[_0xca32('0xe')]();}var _0x5e80a6={'ContactId':this[_0xca32('0xf')]['id'],'sentAt':moment()[_0xca32('0x10')](_0xca32('0x11')),'direction':_0xca32('0x12')};if(this['channel']==='sms'||this[_0xca32('0x13')]===_0xca32('0x14')){_0x5e80a6[_0xca32('0x15')]=this['interaction']['phone'];}var _0x3b84cb=this['channel'];if(_0x3b84cb==='chat'){_0x5e80a6[_0xca32('0x16')]=this[_0xca32('0x17')]['id'];}else{_0x5e80a6[_[_0xca32('0x18')](_0x3b84cb)+_0xca32('0x19')]=this['account']['id'];}_0x5e80a6[_[_0xca32('0x18')](_0x3b84cb)+_0xca32('0x1a')]=this[_0xca32('0x9')]['id'];if(this[_0xca32('0x9')][_0xca32('0x1b')]){var _0x59bea2=_0x21bb79[0x4];if(!_[_0xca32('0x1c')](_0x59bea2)){_0x5e80a6[_0xca32('0x1d')]=utils['getMustacheRender'](_0x59bea2,this);return rpc[_0x3b84cb+'Message'][_0xca32('0x1e')](_0x5e80a6)[_0xca32('0x1f')](function(_0x41e2c4){logger[_0xca32('0xb')](_0xca32('0xc'),_0x513426,_0x5e80a6[_0xca32('0x1d')]);})[_0xca32('0x20')](function(_0x3012b2){logger[_0xca32('0x21')](_0xca32('0xc'),_0x513426,JSON[_0xca32('0x22')](_0x3012b2));})[_0xca32('0x23')](function(){logger[_0xca32('0xb')](_0xca32('0x24'),_0x513426);_0x1ac115['stop']();});}else{logger[_0xca32('0xb')](_0xca32('0x25'),_0x513426);_0x1ac115[_0xca32('0x26')]();}}else{var _0x482c0d=this;var _0x4025e7=new AWS[(_0xca32('0x27'))]({'accessKeyId':_0x21bb79[0x0],'secretAccessKey':_0x21bb79[0x1],'region':_0x21bb79[0x2]});var _0x2e3e1b={'botAlias':_0xca32('0x28'),'botName':_0x21bb79[0x3],'inputText':this['message']['body'],'userId':this[_0xca32('0x13')]+':'+this[_0xca32('0x9')]['id'][_0xca32('0x29')]()};_0x4025e7['postText'](_0x2e3e1b,function(_0x196114,_0x10b211){if(_0x196114){logger[_0xca32('0x21')](_0xca32('0xc'),_0x513426,_0x196114[_0xca32('0x2a')]);_0x1ac115[_0xca32('0xe')]();}else if(_0x10b211&&_0x10b211[_0xca32('0x2a')]){_0x482c0d[_0xca32('0x1d')][_0xca32('0x2b')]=_0x10b211;_0x5e80a6[_0xca32('0x1d')]=_0x10b211[_0xca32('0x2a')];_0x5e80a6[_0xca32('0x2c')]=_0xca32('0x2b');_0x5e80a6[_0xca32('0x2d')]=JSON['stringify'](_0x10b211);return rpc[_0x3b84cb+_0xca32('0x2e')]['create'](_0x5e80a6)[_0xca32('0x1f')](function(_0x3f9417){logger[_0xca32('0xb')]('[%s][AMAZONLEX]\x20%s',_0x513426,_0x5e80a6[_0xca32('0x1d')]);if(_0x10b211['dialogState']==_0xca32('0x2f')){_0x1ac115[_0xca32('0xe')]();}else{_0x1ac115[_0xca32('0x26')]();}})[_0xca32('0x20')](function(_0x3f8a69){logger[_0xca32('0x21')](_0xca32('0xc'),_0x513426,JSON[_0xca32('0x22')](_0x3f8a69));_0x1ac115[_0xca32('0xe')]();});}else{_0x1ac115['next']();}});}}catch(_0x2de467){logger[_0xca32('0x21')]('[%s][AMAZONLEX]\x20%s',_0x513426,JSON[_0xca32('0x22')](_0x2de467));_0x1ac115[_0xca32('0x26')]();}};};
\ No newline at end of file
index a12ce4d..876f7d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe72e=['Re:','Re:\x20','chat','ChatWebsiteId','upperFirst','AccountId','account','Message','service','Smtp','host','port','secure','user','pass','inReplyTo','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId','create','stringify','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','update','catch','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','moment','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','isAutoreply','info','[%s][AUTOREPLY]\x20%s','next','isNil','interaction','created','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','body','getMustacheRender','message','from','phone','read','subject','startsWith'];(function(_0x1a6e1c,_0x21f20f){var _0x4a8025=function(_0x152b2a){while(--_0x152b2a){_0x1a6e1c['push'](_0x1a6e1c['shift']());}};_0x4a8025(++_0x21f20f);}(_0xe72e,0x14f));var _0xee72=function(_0x33fe0f,_0x1cdbae){_0x33fe0f=_0x33fe0f-0x0;var _0x2bcbab=_0xe72e[_0x33fe0f];return _0x2bcbab;};'use strict';var _=require(_0xee72('0x0'));var moment=require(_0xee72('0x1'));var utils=require(_0xee72('0x2'));var logger=require(_0xee72('0x3'))('routing');var rpc={'chatMessage':require(_0xee72('0x4')),'openchannelMessage':require(_0xee72('0x5')),'mailMessage':require(_0xee72('0x6')),'smsMessage':require(_0xee72('0x7')),'faxMessage':require(_0xee72('0x8')),'whatsappMessage':require(_0xee72('0x9')),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xee72('0xa')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0xee72('0xb')),'faxInteraction':require(_0xee72('0xc')),'whatsappInteraction':require(_0xee72('0xd'))};var mailRpc=require(_0xee72('0xe'));exports[_0xee72('0xf')]=function(_0x41b9b9,_0x410507,_0x537649,_0x3f865d){return function(_0x3ce386){try{var _0x6b0a64=this[_0xee72('0x10')];if(_0x6b0a64===_0xee72('0x11')&&_0x3f865d['body'][_0xee72('0x12')]){logger[_0xee72('0x13')](_0xee72('0x14'),_0x41b9b9,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x3ce386[_0xee72('0x15')]();}if(_0x410507[0x0]==='1'&&(_[_0xee72('0x16')](this[_0xee72('0x17')][_0xee72('0x18')])||!this[_0xee72('0x17')][_0xee72('0x18')])){logger['info']('[%s][AUTOREPLY]\x20%s',_0x41b9b9,'Autoreply\x20already\x20sent');return _0x3ce386[_0xee72('0x15')]();}if(_0x410507[0x0]==='2'&&this[_0xee72('0x17')][_0xee72('0x19')]){logger[_0xee72('0x13')](_0xee72('0x1a'),_0x41b9b9,_0xee72('0x1b'));return _0x3ce386[_0xee72('0x15')]();}var _0x5cf09e={'ContactId':this[_0xee72('0x1c')]['id'],'sentAt':moment()[_0xee72('0x1d')](_0xee72('0x1e')),'direction':_0xee72('0x1f')};if(this[_0xee72('0x10')]===_0xee72('0x11')){_0x5cf09e[_0xee72('0x20')]=utils[_0xee72('0x21')](_0x410507[0x2],this);}else{_0x5cf09e[_0xee72('0x20')]=utils[_0xee72('0x21')](_0x410507[0x1],this);}if(this[_0xee72('0x22')]){_0x5cf09e['to']=this[_0xee72('0x22')]['from']||'';if(this[_0xee72('0x10')]===_0xee72('0x11')&&_0x410507[0x1]==='1'){_0x5cf09e['cc']=this[_0xee72('0x22')]['cc']||'';}_0x5cf09e[_0xee72('0x23')]=this['message']['to']||'';_0x5cf09e[_0xee72('0x24')]=this[_0xee72('0x22')][_0xee72('0x24')]||'';_0x5cf09e[_0xee72('0x25')]=!![];if(this[_0xee72('0x22')][_0xee72('0x26')]){_0x5cf09e[_0xee72('0x26')]='';_0x5cf09e[_0xee72('0x26')]+=_[_0xee72('0x27')](this[_0xee72('0x22')][_0xee72('0x26')],_0xee72('0x28'))?'':_0xee72('0x29');_0x5cf09e[_0xee72('0x26')]+=this['message'][_0xee72('0x26')];}}if(this[_0xee72('0x10')]===_0xee72('0x2a')){_0x5cf09e[_0xee72('0x2b')]=this['account']['id'];}else{_0x5cf09e[_[_0xee72('0x2c')](this[_0xee72('0x10')])+_0xee72('0x2d')]=this[_0xee72('0x2e')]['id'];}_0x5cf09e[_[_0xee72('0x2c')](this[_0xee72('0x10')])+'InteractionId']=this['interaction']['id'];var _0x2ced1d=this['interaction'];if(rpc[this['channel']+_0xee72('0x2f')]){if(this[_0xee72('0x10')]===_0xee72('0x11')){var _0x4267a1={'tls':{'rejectUnauthorized':![]}};if(this[_0xee72('0x2e')]['Smtp'][_0xee72('0x30')]){_0x4267a1[_0xee72('0x30')]=this[_0xee72('0x2e')][_0xee72('0x31')][_0xee72('0x30')];}else{_0x4267a1[_0xee72('0x32')]=this[_0xee72('0x2e')][_0xee72('0x31')][_0xee72('0x32')];_0x4267a1[_0xee72('0x33')]=this['account'][_0xee72('0x31')][_0xee72('0x33')];_0x4267a1[_0xee72('0x34')]=this[_0xee72('0x2e')]['Smtp'][_0xee72('0x34')];}if(this['account']['Smtp']['authentication']){_0x4267a1['auth']={'user':this[_0xee72('0x2e')][_0xee72('0x31')][_0xee72('0x35')],'pass':this[_0xee72('0x2e')][_0xee72('0x31')][_0xee72('0x36')]};}_0x5cf09e[_0xee72('0x37')]=this[_0xee72('0x22')]['messageId'];_0x5cf09e['html']=_0xee72('0x38')+_['replace'](_0x5cf09e[_0xee72('0x20')],_0xee72('0x39'),'<div')+'</div>';_0x5cf09e['headers']={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0xee72('0x3a'),'Precedence':_0xee72('0x3b')};return mailRpc[_0xee72('0x3c')](_0x4267a1,_0x5cf09e)[_0xee72('0x3d')](function(_0x1b94d1){logger['info'](_0xee72('0x3e'),_0x41b9b9);_0x5cf09e[_0xee72('0x3f')]=_0x1b94d1[_0xee72('0x22')]['messageId'];return rpc[_0x6b0a64+_0xee72('0x2f')][_0xee72('0x40')](_0x5cf09e);})['then'](function(_0x430af6){logger[_0xee72('0x13')](_0xee72('0x14'),_0x41b9b9,JSON[_0xee72('0x41')](_0x430af6));})['catch'](function(_0x238d8a){logger[_0xee72('0x42')](_0xee72('0x43'),_0x41b9b9,JSON[_0xee72('0x41')](_0x238d8a));})[_0xee72('0x44')](function(){Promise[_0xee72('0x45')]()[_0xee72('0x3d')](function(){if(_0x410507[0x0]!=='2'||_0x2ced1d['autoreplyExecuted'])return;return rpc[_0x6b0a64+_0xee72('0x46')][_0xee72('0x47')](_0x2ced1d['id'],{'autoreplyExecuted':!![]})[_0xee72('0x3d')](function(_0x4074d9){logger['info'](_0xee72('0x1a'),_0x41b9b9,JSON[_0xee72('0x41')](_0x4074d9));})[_0xee72('0x48')](function(_0x388469){logger[_0xee72('0x42')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x41b9b9,JSON[_0xee72('0x41')](_0x388469));});})[_0xee72('0x3d')](function(){_0x3ce386[_0xee72('0x15')]();});});}else{return rpc[this[_0xee72('0x10')]+_0xee72('0x2f')][_0xee72('0x40')](_0x5cf09e)[_0xee72('0x3d')](function(_0x26241c){logger[_0xee72('0x13')]('[%s][AUTOREPLY]\x20%s',_0x41b9b9,_0x5cf09e[_0xee72('0x20')]);})[_0xee72('0x48')](function(_0x52d9fe){logger[_0xee72('0x42')](_0xee72('0x14'),_0x41b9b9,JSON['stringify'](_0x52d9fe));})[_0xee72('0x44')](function(){Promise[_0xee72('0x45')]()[_0xee72('0x3d')](function(){if(_0x410507[0x0]!=='2'||_0x2ced1d[_0xee72('0x19')])return;return rpc[_0x6b0a64+_0xee72('0x46')][_0xee72('0x47')](_0x2ced1d['id'],{'autoreplyExecuted':!![]})[_0xee72('0x3d')](function(_0x40bb1f){logger[_0xee72('0x13')](_0xee72('0x1a'),_0x41b9b9,JSON[_0xee72('0x41')](_0x40bb1f));})[_0xee72('0x48')](function(_0x2a8a7c){logger[_0xee72('0x42')](_0xee72('0x49'),_0x41b9b9,JSON['stringify'](_0x2a8a7c));});})[_0xee72('0x3d')](function(){_0x3ce386['next']();});});}}}catch(_0x4b877e){logger[_0xee72('0x42')](_0xee72('0x14'),_0x41b9b9,JSON[_0xee72('0x41')](_0x4b877e));_0x3ce386[_0xee72('0x4a')]();}};};
\ No newline at end of file
+var _0x5347=['Smtp','service','host','port','secure','auth','pass','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22','<div','</div>','All','auto_reply','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','then','[%s][AUTOREPLY]\x20%s','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stringify','Interaction','stop','lodash','moment','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../mailRpc','consequence','interaction','created','info','Autoreply\x20already\x20sent','next','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','channel','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','mail','getMustacheRender','body','message','from','phone','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','account','upperFirst','AccountId','Message'];(function(_0x39f35c,_0x3efd3e){var _0x490340=function(_0x29102f){while(--_0x29102f){_0x39f35c['push'](_0x39f35c['shift']());}};_0x490340(++_0x3efd3e);}(_0x5347,0x67));var _0x7534=function(_0x5e4563,_0x3ff918){_0x5e4563=_0x5e4563-0x0;var _0x8d1bf5=_0x5347[_0x5e4563];return _0x8d1bf5;};'use strict';var _=require(_0x7534('0x0'));var moment=require(_0x7534('0x1'));var utils=require('./utils');var logger=require(_0x7534('0x2'))(_0x7534('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x7534('0x4')),'mailMessage':require(_0x7534('0x5')),'smsMessage':require(_0x7534('0x6')),'faxMessage':require(_0x7534('0x7')),'whatsappMessage':require(_0x7534('0x8')),'chatInteraction':require(_0x7534('0x9')),'openchannelInteraction':require(_0x7534('0xa')),'mailInteraction':require(_0x7534('0xb')),'smsInteraction':require(_0x7534('0xc')),'faxInteraction':require(_0x7534('0xd')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0x7534('0xe'));exports[_0x7534('0xf')]=function(_0x142aba,_0x10e545){return function(_0xf1cdd3){try{if(_0x10e545[0x0]==='1'&&(_['isNil'](this[_0x7534('0x10')][_0x7534('0x11')])||!this['interaction'][_0x7534('0x11')])){logger[_0x7534('0x12')]('[%s][AUTOREPLY]\x20%s',_0x142aba,_0x7534('0x13'));return _0xf1cdd3[_0x7534('0x14')]();}if(_0x10e545[0x0]==='2'&&this['interaction'][_0x7534('0x15')]){logger[_0x7534('0x12')](_0x7534('0x16'),_0x142aba,_0x7534('0x17'));return _0xf1cdd3[_0x7534('0x14')]();}var _0x33ddbe=this[_0x7534('0x18')];var _0x443315={'ContactId':this[_0x7534('0x19')]['id'],'sentAt':moment()[_0x7534('0x1a')](_0x7534('0x1b')),'direction':_0x7534('0x1c')};if(this['channel']===_0x7534('0x1d')){_0x443315['body']=utils[_0x7534('0x1e')](_0x10e545[0x2],this);}else{_0x443315[_0x7534('0x1f')]=utils['getMustacheRender'](_0x10e545[0x1],this);}if(this[_0x7534('0x20')]){_0x443315['to']=this['message']['from']||'';if(this[_0x7534('0x18')]==='mail'&&_0x10e545[0x1]==='1'){_0x443315['cc']=this[_0x7534('0x20')]['cc']||'';}_0x443315[_0x7534('0x21')]=this[_0x7534('0x20')]['to']||'';_0x443315[_0x7534('0x22')]=this['message'][_0x7534('0x22')]||'';_0x443315['read']=!![];if(this['message'][_0x7534('0x23')]){_0x443315[_0x7534('0x23')]='';_0x443315['subject']+=_[_0x7534('0x24')](this[_0x7534('0x20')][_0x7534('0x23')],_0x7534('0x25'))?'':_0x7534('0x26');_0x443315[_0x7534('0x23')]+=this['message'][_0x7534('0x23')];}}if(this['channel']===_0x7534('0x27')){_0x443315[_0x7534('0x28')]=this[_0x7534('0x29')]['id'];}else{_0x443315[_[_0x7534('0x2a')](this[_0x7534('0x18')])+_0x7534('0x2b')]=this[_0x7534('0x29')]['id'];}_0x443315[_[_0x7534('0x2a')](this[_0x7534('0x18')])+'InteractionId']=this[_0x7534('0x10')]['id'];var _0x2d6178=this['interaction'];if(rpc[this[_0x7534('0x18')]+_0x7534('0x2c')]){if(this['channel']===_0x7534('0x1d')){var _0x25ec30={'tls':{'rejectUnauthorized':![]}};if(this['account'][_0x7534('0x2d')][_0x7534('0x2e')]){_0x25ec30['service']=this['account'][_0x7534('0x2d')]['service'];}else{_0x25ec30['host']=this[_0x7534('0x29')][_0x7534('0x2d')][_0x7534('0x2f')];_0x25ec30[_0x7534('0x30')]=this[_0x7534('0x29')][_0x7534('0x2d')][_0x7534('0x30')];_0x25ec30[_0x7534('0x31')]=this['account']['Smtp'][_0x7534('0x31')];}if(this[_0x7534('0x29')]['Smtp']['authentication']){_0x25ec30[_0x7534('0x32')]={'user':this['account'][_0x7534('0x2d')]['user'],'pass':this[_0x7534('0x29')][_0x7534('0x2d')][_0x7534('0x33')]};}_0x443315[_0x7534('0x34')]=this[_0x7534('0x20')][_0x7534('0x35')];_0x443315[_0x7534('0x36')]='<div\x20id=\x22xm-mail-content\x22>'+_['replace'](_0x443315[_0x7534('0x1f')],_0x7534('0x37'),_0x7534('0x38'))+_0x7534('0x39');_0x443315['headers']={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0x7534('0x3a'),'Precedence':_0x7534('0x3b')};return mailRpc['sendMailMessage'](_0x25ec30,_0x443315)['then'](function(_0x4bcce3){logger[_0x7534('0x12')](_0x7534('0x3c'),_0x142aba);_0x443315[_0x7534('0x35')]=_0x4bcce3[_0x7534('0x20')][_0x7534('0x35')];return rpc[_0x33ddbe+_0x7534('0x2c')][_0x7534('0x3d')](_0x443315);})[_0x7534('0x3e')](function(_0x4c564b){logger['info'](_0x7534('0x3f'),_0x142aba,JSON['stringify'](_0x4c564b));})[_0x7534('0x40')](function(_0x4f57c2){logger[_0x7534('0x41')](_0x7534('0x42'),_0x142aba,JSON['stringify'](_0x4f57c2));})[_0x7534('0x43')](function(){Promise[_0x7534('0x44')]()[_0x7534('0x3e')](function(){if(_0x10e545[0x0]!=='2'||_0x2d6178[_0x7534('0x15')])return;return rpc[_0x33ddbe+'Interaction'][_0x7534('0x45')](_0x2d6178['id'],{'autoreplyExecuted':!![]})[_0x7534('0x3e')](function(_0x4277ee){logger['info'](_0x7534('0x16'),_0x142aba,JSON['stringify'](_0x4277ee));})[_0x7534('0x40')](function(_0x4f18ae){logger[_0x7534('0x41')](_0x7534('0x46'),_0x142aba,JSON[_0x7534('0x47')](_0x4f18ae));});})[_0x7534('0x3e')](function(){_0xf1cdd3[_0x7534('0x14')]();});});}else{return rpc[this[_0x7534('0x18')]+_0x7534('0x2c')][_0x7534('0x3d')](_0x443315)['then'](function(_0x42a341){logger[_0x7534('0x12')](_0x7534('0x3f'),_0x142aba,_0x443315[_0x7534('0x1f')]);})[_0x7534('0x40')](function(_0x18a300){logger['error'](_0x7534('0x3f'),_0x142aba,JSON[_0x7534('0x47')](_0x18a300));})[_0x7534('0x43')](function(){Promise['resolve']()[_0x7534('0x3e')](function(){if(_0x10e545[0x0]!=='2'||_0x2d6178[_0x7534('0x15')])return;return rpc[_0x33ddbe+_0x7534('0x48')][_0x7534('0x45')](_0x2d6178['id'],{'autoreplyExecuted':!![]})[_0x7534('0x3e')](function(_0x5c15c0){logger[_0x7534('0x12')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x142aba,JSON[_0x7534('0x47')](_0x5c15c0));})['catch'](function(_0x45ae85){logger[_0x7534('0x41')](_0x7534('0x46'),_0x142aba,JSON[_0x7534('0x47')](_0x45ae85));});})[_0x7534('0x3e')](function(){_0xf1cdd3[_0x7534('0x14')]();});});}}}catch(_0x4a3020){logger[_0x7534('0x41')](_0x7534('0x3f'),_0x142aba,JSON[_0x7534('0x47')](_0x4a3020));_0xf1cdd3[_0x7534('0x49')]();}};};
\ No newline at end of file
index 687e363..373bac5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc142=['stop','stringify','moment','../../../../config/logger','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','channel','Interaction','update','interaction','error','[%s][CLOSE]\x20%s','finally'];(function(_0x2fe400,_0x47ac2f){var _0x350eff=function(_0x306b8d){while(--_0x306b8d){_0x2fe400['push'](_0x2fe400['shift']());}};_0x350eff(++_0x47ac2f);}(_0xc142,0x8e));var _0x2c14=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0xc142[_0x550d12];return _0x12103d;};'use strict';var moment=require(_0x2c14('0x0'));var logger=require(_0x2c14('0x1'))('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x2c14('0x2')),'smsInteraction':require(_0x2c14('0x3')),'mailInteraction':require(_0x2c14('0x4')),'faxInteraction':require(_0x2c14('0x5')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0x2c14('0x6')]=function(_0x4b93b1,_0x52caca,_0xd3943a,_0x49f59c){return function(_0x2b7e6c){try{logger[_0x2c14('0x7')](_0x2c14('0x8'),_0x4b93b1,_0x52caca[0x0]);var _0x4d92fc={'closed':0x1,'closedAt':moment()[_0x2c14('0x9')](_0x2c14('0xa')),'closeReason':'system','disposition':_0x52caca[0x0]};if(rpc[_0x49f59c[_0x2c14('0xb')]+_0x2c14('0xc')]){rpc[_0x49f59c[_0x2c14('0xb')]+_0x2c14('0xc')][_0x2c14('0xd')](_0x49f59c[_0x2c14('0xe')]['id'],_0x4d92fc)['then'](function(_0x12931f){logger[_0x2c14('0x7')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x4b93b1,_0x49f59c[_0x2c14('0xe')]['id']);})['catch'](function(_0x4cb72b){logger[_0x2c14('0xf')](_0x2c14('0x10'),_0x4b93b1,JSON['stringify'](_0x4cb72b));})[_0x2c14('0x11')](function(){_0x2b7e6c[_0x2c14('0x12')]();});}}catch(_0x13adcb){logger['error'](_0x2c14('0x10'),_0x4b93b1,JSON[_0x2c14('0x13')](_0x13adcb));_0x2b7e6c[_0x2c14('0x12')]();}};};
\ No newline at end of file
+var _0x0ef6=['[%s][CLOSE]\x20%s','stringify','finally','stop','../../../../config/logger','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','[%s][CLOSE]\x20reason\x20%s','Interaction','channel','update','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','interaction','catch','error'];(function(_0xcc0564,_0x53d70a){var _0x44f912=function(_0x598d21){while(--_0x598d21){_0xcc0564['push'](_0xcc0564['shift']());}};_0x44f912(++_0x53d70a);}(_0x0ef6,0x11c));var _0x60ef=function(_0x1eae41,_0x3c1151){_0x1eae41=_0x1eae41-0x0;var _0x588453=_0x0ef6[_0x1eae41];return _0x588453;};'use strict';var moment=require('moment');var logger=require(_0x60ef('0x0'))('routing');var rpc={'chatInteraction':require(_0x60ef('0x1')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x60ef('0x2')),'mailInteraction':require(_0x60ef('0x3')),'faxInteraction':require(_0x60ef('0x4')),'whatsappInteraction':require(_0x60ef('0x5'))};exports[_0x60ef('0x6')]=function(_0x6a7294,_0x68949b,_0x2c2b27,_0x2022e6){return function(_0x576145){try{logger['info'](_0x60ef('0x7'),_0x6a7294,_0x68949b[0x0]);var _0x24f6b4={'closed':0x1,'closedAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':'system','disposition':_0x68949b[0x0]};if(rpc[_0x2022e6['channel']+_0x60ef('0x8')]){rpc[_0x2022e6[_0x60ef('0x9')]+_0x60ef('0x8')][_0x60ef('0xa')](_0x2022e6['interaction']['id'],_0x24f6b4)[_0x60ef('0xb')](function(_0x30ecfa){logger['info'](_0x60ef('0xc'),_0x6a7294,_0x2022e6[_0x60ef('0xd')]['id']);})[_0x60ef('0xe')](function(_0x2a9081){logger[_0x60ef('0xf')](_0x60ef('0x10'),_0x6a7294,JSON[_0x60ef('0x11')](_0x2a9081));})[_0x60ef('0x12')](function(){_0x576145[_0x60ef('0x13')]();});}}catch(_0x48f086){logger[_0x60ef('0xf')](_0x60ef('0x10'),_0x6a7294,JSON[_0x60ef('0x11')](_0x48f086));_0x576145[_0x60ef('0x13')]();}};};
\ No newline at end of file
index 822442b..b0d251f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc962=['speech','providerName','providerResponse','metadata','endConversation','error','next','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','AccountId','account','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','then','catch','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','dialogflow','result','fulfillment'];(function(_0x530a3c,_0x4f261f){var _0x752570=function(_0x4c2987){while(--_0x4c2987){_0x530a3c['push'](_0x530a3c['shift']());}};_0x752570(++_0x4f261f);}(_0xc962,0x6d));var _0x2c96=function(_0x44fbcd,_0x137e24){_0x44fbcd=_0x44fbcd-0x0;var _0x3b4a7c=_0xc962[_0x44fbcd];return _0x3b4a7c;};'use strict';var _=require(_0x2c96('0x0'));var moment=require('moment');var apiai=require('apiai-promise');var md5=require('md5');var utils=require(_0x2c96('0x1'));var logger=require(_0x2c96('0x2'))(_0x2c96('0x3'));var rpc={'chatMessage':require(_0x2c96('0x4')),'openchannelMessage':require(_0x2c96('0x5')),'mailMessage':require(_0x2c96('0x6')),'smsMessage':require(_0x2c96('0x7')),'faxMessage':require(_0x2c96('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x2c96('0x9')]=function(_0x2df446,_0x1f9859){return function(_0x17a493){try{if(!_[_0x2c96('0xa')](this[_0x2c96('0xb')][_0x2c96('0xc')])){logger[_0x2c96('0xd')](_0x2c96('0xe'),_0x2df446,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x17a493['next']();}var _0x238c6b={'ContactId':this[_0x2c96('0xf')]['id'],'sentAt':moment()[_0x2c96('0x10')](_0x2c96('0x11')),'direction':_0x2c96('0x12')};if(this[_0x2c96('0x13')]==='sms'||this['channel']===_0x2c96('0x14')){_0x238c6b[_0x2c96('0x15')]=this[_0x2c96('0xb')][_0x2c96('0x15')];}var _0x188e75=this[_0x2c96('0x13')];if(_0x188e75===_0x2c96('0x16')){_0x238c6b['ChatWebsiteId']=this['account']['id'];}else{_0x238c6b[_['upperFirst'](_0x188e75)+_0x2c96('0x17')]=this[_0x2c96('0x18')]['id'];}_0x238c6b[_['upperFirst'](_0x188e75)+_0x2c96('0x19')]=this[_0x2c96('0xb')]['id'];if(this['interaction'][_0x2c96('0x1a')]){var _0x3232c0=_0x1f9859[0x2];if(!_[_0x2c96('0x1b')](_0x3232c0)){_0x238c6b[_0x2c96('0x1c')]=utils[_0x2c96('0x1d')](_0x3232c0,this);return rpc[_0x188e75+_0x2c96('0x1e')][_0x2c96('0x1f')](_0x238c6b)[_0x2c96('0x20')](function(_0x3fde3e){logger['info']('[%s][DIALOGFLOW]\x20%s',_0x2df446,_0x238c6b[_0x2c96('0x1c')]);})[_0x2c96('0x21')](function(_0x4001a9){logger['error'](_0x2c96('0xe'),_0x2df446,JSON[_0x2c96('0x22')](_0x4001a9));})[_0x2c96('0x23')](function(){logger['info'](_0x2c96('0x24'),_0x2df446);_0x17a493[_0x2c96('0x25')]();});}else{logger['info'](_0x2c96('0x26'),_0x2df446);_0x17a493[_0x2c96('0x25')]();}}else{var _0x361e42=this;var _0x14daf1=apiai(_0x1f9859[0x0],{'language':_0x1f9859[0x1]||'en'});return _0x14daf1[_0x2c96('0x27')](this[_0x2c96('0x28')][_0x2c96('0x1c')],{'sessionId':md5(this['interaction']['id'])})[_0x2c96('0x20')](function(_0x58933c){_0x361e42['body'][_0x2c96('0x29')]=_0x58933c;_0x238c6b['body']=_0x58933c[_0x2c96('0x2a')][_0x2c96('0x2b')][_0x2c96('0x2c')];_0x238c6b[_0x2c96('0x2d')]='dialogflow';_0x238c6b[_0x2c96('0x2e')]=JSON[_0x2c96('0x22')](_0x58933c);return rpc[_0x188e75+'Message'][_0x2c96('0x1f')](_0x238c6b)[_0x2c96('0x20')](function(_0x200951){logger[_0x2c96('0xd')]('[%s][DIALOGFLOW]\x20%s',_0x2df446,_0x238c6b[_0x2c96('0x1c')]);if(_0x58933c[_0x2c96('0x2a')][_0x2c96('0x2f')][_0x2c96('0x30')]){_0x17a493['next']();}else{_0x17a493[_0x2c96('0x25')]();}})[_0x2c96('0x21')](function(_0x5eea2f){logger[_0x2c96('0x31')]('[%s][DIALOGFLOW]\x20%s',_0x2df446,JSON[_0x2c96('0x22')](_0x5eea2f));_0x17a493[_0x2c96('0x32')]();});})[_0x2c96('0x21')](function(_0x363da9){logger[_0x2c96('0x31')](_0x2c96('0xe'),_0x2df446,_0x363da9[_0x2c96('0x28')]);_0x17a493[_0x2c96('0x32')]();});}}catch(_0x5b73c3){logger[_0x2c96('0x31')](_0x2c96('0xe'),_0x2df446,JSON[_0x2c96('0x22')](_0x5b73c3));_0x17a493['stop']();}};};
\ No newline at end of file
+var _0x0a05=['stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','result','fulfillment','speech','dialogflow','providerResponse','create','metadata','endConversation','catch','error','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','[%s][DIALOGFLOW]\x20%s','next','contact','YYYY-MM-DD\x20HH:mm:ss','channel','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','created','isEmpty','body','getMustacheRender','then','info','stringify','finally'];(function(_0x16629d,_0x492375){var _0x56ccee=function(_0xa982b7){while(--_0xa982b7){_0x16629d['push'](_0x16629d['shift']());}};_0x56ccee(++_0x492375);}(_0x0a05,0x9e));var _0x50a0=function(_0x1c72b8,_0x104b7e){_0x1c72b8=_0x1c72b8-0x0;var _0x191114=_0x0a05[_0x1c72b8];return _0x191114;};'use strict';var _=require(_0x50a0('0x0'));var moment=require(_0x50a0('0x1'));var apiai=require(_0x50a0('0x2'));var md5=require(_0x50a0('0x3'));var utils=require(_0x50a0('0x4'));var logger=require(_0x50a0('0x5'))(_0x50a0('0x6'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x50a0('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x50a0('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x50a0('0x9'))};exports[_0x50a0('0xa')]=function(_0x4b976d,_0x56503f){return function(_0x12c64c){try{if(!_[_0x50a0('0xb')](this[_0x50a0('0xc')][_0x50a0('0xd')])){logger['info'](_0x50a0('0xe'),_0x4b976d,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x12c64c[_0x50a0('0xf')]();}var _0x136e4b={'ContactId':this[_0x50a0('0x10')]['id'],'sentAt':moment()['format'](_0x50a0('0x11')),'direction':'out'};if(this[_0x50a0('0x12')]==='sms'||this['channel']===_0x50a0('0x13')){_0x136e4b[_0x50a0('0x14')]=this[_0x50a0('0xc')][_0x50a0('0x14')];}var _0x33664b=this['channel'];if(_0x33664b===_0x50a0('0x15')){_0x136e4b[_0x50a0('0x16')]=this[_0x50a0('0x17')]['id'];}else{_0x136e4b[_[_0x50a0('0x18')](_0x33664b)+_0x50a0('0x19')]=this['account']['id'];}_0x136e4b[_['upperFirst'](_0x33664b)+'InteractionId']=this['interaction']['id'];if(this[_0x50a0('0xc')][_0x50a0('0x1a')]){var _0x3c641e=_0x56503f[0x2];if(!_[_0x50a0('0x1b')](_0x3c641e)){_0x136e4b[_0x50a0('0x1c')]=utils[_0x50a0('0x1d')](_0x3c641e,this);return rpc[_0x33664b+'Message']['create'](_0x136e4b)[_0x50a0('0x1e')](function(_0x2433e0){logger[_0x50a0('0x1f')](_0x50a0('0xe'),_0x4b976d,_0x136e4b[_0x50a0('0x1c')]);})['catch'](function(_0x321d1d){logger['error'](_0x50a0('0xe'),_0x4b976d,JSON[_0x50a0('0x20')](_0x321d1d));})[_0x50a0('0x21')](function(){logger[_0x50a0('0x1f')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x4b976d);_0x12c64c[_0x50a0('0x22')]();});}else{logger['info'](_0x50a0('0x23'),_0x4b976d);_0x12c64c[_0x50a0('0x22')]();}}else{var _0x50d724=this;var _0x190263=apiai(_0x56503f[0x0],{'language':_0x56503f[0x1]||'en'});return _0x190263[_0x50a0('0x24')](this[_0x50a0('0x25')][_0x50a0('0x1c')],{'sessionId':md5(this[_0x50a0('0xc')]['id'])})[_0x50a0('0x1e')](function(_0x427094){_0x50d724[_0x50a0('0x1c')]['dialogflow']=_0x427094;_0x136e4b['body']=_0x427094[_0x50a0('0x26')][_0x50a0('0x27')][_0x50a0('0x28')];_0x136e4b['providerName']=_0x50a0('0x29');_0x136e4b[_0x50a0('0x2a')]=JSON[_0x50a0('0x20')](_0x427094);return rpc[_0x33664b+'Message'][_0x50a0('0x2b')](_0x136e4b)['then'](function(_0x3d0b47){logger[_0x50a0('0x1f')](_0x50a0('0xe'),_0x4b976d,_0x136e4b['body']);if(_0x427094[_0x50a0('0x26')][_0x50a0('0x2c')][_0x50a0('0x2d')]){_0x12c64c['next']();}else{_0x12c64c[_0x50a0('0x22')]();}})[_0x50a0('0x2e')](function(_0x9ed33a){logger[_0x50a0('0x2f')]('[%s][DIALOGFLOW]\x20%s',_0x4b976d,JSON['stringify'](_0x9ed33a));_0x12c64c['next']();});})['catch'](function(_0x271aa3){logger[_0x50a0('0x2f')](_0x50a0('0xe'),_0x4b976d,_0x271aa3[_0x50a0('0x25')]);_0x12c64c[_0x50a0('0xf')]();});}}catch(_0x210251){logger[_0x50a0('0x2f')]('[%s][DIALOGFLOW]\x20%s',_0x4b976d,JSON['stringify'](_0x210251));_0x12c64c[_0x50a0('0x22')]();}};};
\ No newline at end of file
index 3154e35..f982f54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55d2=['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','boolValue','DIALOGFLOWV2_INTENTNAME','name','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','languageCode','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','providerName','providerResponse','fulfillmentText','md5','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','create','info','[%s][DIALOGFLOWV2]\x20%s','body','error','stringify','consequence','isNil','interaction','UserId','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','created','isEmpty','getMustacheRender','Message','then','catch','finally','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','detectIntent','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ACTION','action'];(function(_0x159e3a,_0x5194c3){var _0x1a2e54=function(_0xf0e48c){while(--_0xf0e48c){_0x159e3a['push'](_0x159e3a['shift']());}};_0x1a2e54(++_0x5194c3);}(_0x55d2,0x9f));var _0x255d=function(_0x31c9dc,_0x24c945){_0x31c9dc=_0x31c9dc-0x0;var _0x326c0f=_0x55d2[_0x31c9dc];return _0x326c0f;};'use strict';var _=require('lodash');var dialogflow=require('dialogflow');var md5=require(_0x255d('0x0'));var moment=require(_0x255d('0x1'));var Promise=require(_0x255d('0x2'));var logger=require(_0x255d('0x3'))(_0x255d('0x4'));var utils=require(_0x255d('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x255d('0x6')),'mailMessage':require(_0x255d('0x7')),'smsMessage':require(_0x255d('0x8')),'faxMessage':require(_0x255d('0x9')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x4f93b4,_0x15469e,_0xcf66a2,_0x253ac9){return new Promise(function(_0xdb6ea7,_0xacc790){var _0x5aaa28=_['clone'](_0xcf66a2);_0x5aaa28['body']=_0x253ac9;return rpc[_0x15469e+'Message'][_0x255d('0xa')](_0x5aaa28)['then'](function(){logger[_0x255d('0xb')](_0x255d('0xc'),_0x4f93b4,_0x5aaa28[_0x255d('0xd')]);_0xdb6ea7();})['catch'](function(_0x5072e3){logger[_0x255d('0xe')](_0x255d('0xc'),_0x4f93b4,JSON[_0x255d('0xf')](_0x5072e3));_0xacc790(_0x5072e3);});});}exports[_0x255d('0x10')]=function(_0xf8abb3,_0x30d8f0){return function(_0xe59201){try{if(!_[_0x255d('0x11')](this[_0x255d('0x12')][_0x255d('0x13')])){logger[_0x255d('0xb')](_0x255d('0xc'),_0xf8abb3,_0x255d('0x14'));return _0xe59201['next']();}var _0x29bf44={'ContactId':this[_0x255d('0x15')]['id'],'sentAt':moment()['format'](_0x255d('0x16')),'direction':_0x255d('0x17')};if(this[_0x255d('0x18')]===_0x255d('0x19')||this[_0x255d('0x18')]===_0x255d('0x1a')){_0x29bf44[_0x255d('0x1b')]=this[_0x255d('0x12')][_0x255d('0x1b')];}var _0x3b8157=this['channel'];if(_0x3b8157===_0x255d('0x1c')){_0x29bf44[_0x255d('0x1d')]=this[_0x255d('0x1e')]['id'];}else{_0x29bf44[_[_0x255d('0x1f')](_0x3b8157)+_0x255d('0x20')]=this[_0x255d('0x1e')]['id'];}_0x29bf44[_[_0x255d('0x1f')](_0x3b8157)+_0x255d('0x21')]=this[_0x255d('0x12')]['id'];if(this['interaction'][_0x255d('0x22')]){var _0x1b23af=_0x30d8f0[0x4];if(!_[_0x255d('0x23')](_0x1b23af)){_0x29bf44[_0x255d('0xd')]=utils[_0x255d('0x24')](_0x1b23af,this);return rpc[_0x3b8157+_0x255d('0x25')][_0x255d('0xa')](_0x29bf44)[_0x255d('0x26')](function(_0xd69061){logger[_0x255d('0xb')](_0x255d('0xc'),_0xf8abb3,_0x29bf44[_0x255d('0xd')]);})[_0x255d('0x27')](function(_0x1b9e0a){logger[_0x255d('0xe')](_0x255d('0xc'),_0xf8abb3,JSON[_0x255d('0xf')](_0x1b9e0a));})[_0x255d('0x28')](function(){logger[_0x255d('0xb')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0xf8abb3);_0xe59201[_0x255d('0x29')]();});}else{logger[_0x255d('0xb')](_0x255d('0x2a'),_0xf8abb3);_0xe59201[_0x255d('0x29')]();}}else{var _0x38818f=this;var _0x369d65=_0x30d8f0[0x2][_0x255d('0x2b')](/\\n/g,'\x0a');var _0x7da738={'credentials':{'private_key':_0x369d65,'client_email':_0x30d8f0[0x1]}};var _0x53d0e4=new dialogflow[(_0x255d('0x2c'))](_0x7da738);var _0xb4bd1a=_0x53d0e4[_0x255d('0x2d')](_0x30d8f0[0x0],md5(_0x38818f['interaction']['id']));var _0x3e5b54={'session':_0xb4bd1a,'queryInput':{'text':{'text':_0x38818f[_0x255d('0x2e')][_0x255d('0xd')],'languageCode':_0x30d8f0[0x3]||'en'}}};return _0x53d0e4[_0x255d('0x2f')](_0x3e5b54)[_0x255d('0x26')](function(_0x264f01){if(_0x264f01&&_0x264f01['length']){_0x38818f[_0x255d('0xd')]['dialogflowV2']=_0x264f01;var _0x5e7231=_0x264f01[0x0];var _0x21e8dc=_0x5e7231[_0x255d('0x30')][_0x255d('0x31')]&&_0x5e7231[_0x255d('0x30')]['diagnosticInfo'][_0x255d('0x32')]?_0x5e7231[_0x255d('0x30')][_0x255d('0x31')]['fields'][_0x255d('0x33')]['boolValue']:![];_0x38818f['body'][_0x255d('0x34')]=_0x5e7231[_0x255d('0x30')][_0x255d('0x35')];_0x38818f[_0x255d('0xd')][_0x255d('0x36')]=_0x5e7231['queryResult'][_0x255d('0x37')];_0x38818f['body'][_0x255d('0x38')]=_0x5e7231[_0x255d('0x30')][_0x255d('0x31')]&&_0x5e7231[_0x255d('0x30')]['diagnosticInfo']['fields']?_0x5e7231['queryResult']['diagnosticInfo'][_0x255d('0x32')]['end_conversation'][_0x255d('0x39')]:![];_0x38818f['body'][_0x255d('0x3a')]=_0x5e7231[_0x255d('0x30')]['intent'][_0x255d('0x3b')];_0x38818f[_0x255d('0xd')][_0x255d('0x3c')]=_0x5e7231[_0x255d('0x30')][_0x255d('0x3d')][_0x255d('0x3e')];_0x38818f[_0x255d('0xd')][_0x255d('0x3f')]=_0x5e7231['queryResult'][_0x255d('0x3d')][_0x255d('0x40')];_0x38818f[_0x255d('0xd')]['DIALOGFLOWV2_LANGUAGECODE']=_0x5e7231[_0x255d('0x30')][_0x255d('0x41')];_0x38818f[_0x255d('0xd')][_0x255d('0x42')]=_0x5e7231['queryResult']['queryText'];_0x38818f['body'][_0x255d('0x43')]=_0x5e7231[_0x255d('0x30')]['intentDetectionConfidence'];_0x29bf44[_0x255d('0x44')]='dialogflowV2';_0x29bf44[_0x255d('0x45')]=JSON[_0x255d('0xf')](_0x264f01);var _0x2ad73e=[];for(var _0x30cdb0=0x0;_0x30cdb0<_0x264f01['length'];_0x30cdb0++){var _0x58ce02=_0x264f01[_0x30cdb0];if(_0x58ce02&&_0x58ce02[_0x255d('0x30')]&&_0x58ce02[_0x255d('0x30')][_0x255d('0x46')]){_0x2ad73e['push'](createMessage(_0xf8abb3,_0x3b8157,_0x29bf44,_0x58ce02[_0x255d('0x30')][_0x255d('0x46')]));}}return Promise['all'](_0x2ad73e)['then'](function(){if(_0x21e8dc){_0xe59201['next']();}else{_0xe59201[_0x255d('0x29')]();}})[_0x255d('0x27')](function(_0x9f48a3){logger[_0x255d('0xe')](_0x255d('0xc'),_0xf8abb3,JSON[_0x255d('0xf')](_0x9f48a3));_0xe59201['next']();});}})['catch'](function(_0x2a121f){logger[_0x255d('0xe')](_0x255d('0xc'),_0xf8abb3,_0x2a121f[_0x255d('0x2e')]);_0xe59201['next']();});}}catch(_0xe4deb4){logger[_0x255d('0xe')](_0x255d('0xc'),_0xf8abb3,JSON[_0x255d('0xf')](_0xe4deb4));_0xe59201['stop']();}};};
\ No newline at end of file
+var _0x40dd=['interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','out','channel','sms','whatsapp','phone','chat','account','upperFirst','AccountId','InteractionId','created','getMustacheRender','error','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','SessionsClient','message','length','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','name','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','DIALOGFLOWV2_LANGUAGECODE','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','dialogflowV2','fulfillmentText','push','all','lodash','dialogflow','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','clone','Message','create','then','info','body','catch','[%s][DIALOGFLOWV2]\x20%s','stringify','consequence','isNil'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x40dd,0x18d));var _0xd40d=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0x40dd[_0x92c450];return _0x2a9599;};'use strict';var _=require(_0xd40d('0x0'));var dialogflow=require(_0xd40d('0x1'));var md5=require('md5');var moment=require(_0xd40d('0x2'));var Promise=require(_0xd40d('0x3'));var logger=require(_0xd40d('0x4'))(_0xd40d('0x5'));var utils=require(_0xd40d('0x6'));var rpc={'chatMessage':require(_0xd40d('0x7')),'openchannelMessage':require(_0xd40d('0x8')),'mailMessage':require(_0xd40d('0x9')),'smsMessage':require(_0xd40d('0xa')),'faxMessage':require(_0xd40d('0xb')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x5158fd,_0x55d5f6,_0x5d5d56,_0x30bd25){return new Promise(function(_0x3d7e6e,_0x1b12b5){var _0x5f34db=_[_0xd40d('0xc')](_0x5d5d56);_0x5f34db['body']=_0x30bd25;return rpc[_0x55d5f6+_0xd40d('0xd')][_0xd40d('0xe')](_0x5f34db)[_0xd40d('0xf')](function(){logger[_0xd40d('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x5158fd,_0x5f34db[_0xd40d('0x11')]);_0x3d7e6e();})[_0xd40d('0x12')](function(_0x4230a2){logger['error'](_0xd40d('0x13'),_0x5158fd,JSON[_0xd40d('0x14')](_0x4230a2));_0x1b12b5(_0x4230a2);});});}exports[_0xd40d('0x15')]=function(_0x1fd09f,_0x4c6c14){return function(_0x60c8aa){try{if(!_[_0xd40d('0x16')](this[_0xd40d('0x17')][_0xd40d('0x18')])){logger['info']('[%s][DIALOGFLOWV2]\x20%s',_0x1fd09f,_0xd40d('0x19'));return _0x60c8aa[_0xd40d('0x1a')]();}var _0x5713b4={'ContactId':this[_0xd40d('0x1b')]['id'],'sentAt':moment()[_0xd40d('0x1c')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xd40d('0x1d')};if(this[_0xd40d('0x1e')]===_0xd40d('0x1f')||this[_0xd40d('0x1e')]===_0xd40d('0x20')){_0x5713b4[_0xd40d('0x21')]=this[_0xd40d('0x17')][_0xd40d('0x21')];}var _0x2eb82b=this[_0xd40d('0x1e')];if(_0x2eb82b===_0xd40d('0x22')){_0x5713b4['ChatWebsiteId']=this[_0xd40d('0x23')]['id'];}else{_0x5713b4[_[_0xd40d('0x24')](_0x2eb82b)+_0xd40d('0x25')]=this[_0xd40d('0x23')]['id'];}_0x5713b4[_['upperFirst'](_0x2eb82b)+_0xd40d('0x26')]=this['interaction']['id'];if(this[_0xd40d('0x17')][_0xd40d('0x27')]){var _0x1b8a96=_0x4c6c14[0x4];if(!_['isEmpty'](_0x1b8a96)){_0x5713b4[_0xd40d('0x11')]=utils[_0xd40d('0x28')](_0x1b8a96,this);return rpc[_0x2eb82b+'Message'][_0xd40d('0xe')](_0x5713b4)[_0xd40d('0xf')](function(_0x4cafd0){logger[_0xd40d('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x1fd09f,_0x5713b4[_0xd40d('0x11')]);})[_0xd40d('0x12')](function(_0x4be8b0){logger[_0xd40d('0x29')](_0xd40d('0x13'),_0x1fd09f,JSON[_0xd40d('0x14')](_0x4be8b0));})[_0xd40d('0x2a')](function(){logger[_0xd40d('0x10')](_0xd40d('0x2b'),_0x1fd09f);_0x60c8aa['stop']();});}else{logger[_0xd40d('0x10')](_0xd40d('0x2c'),_0x1fd09f);_0x60c8aa[_0xd40d('0x2d')]();}}else{var _0x12d773=this;var _0x8407ba=_0x4c6c14[0x2]['replace'](/\\n/g,'\x0a');var _0x895744={'credentials':{'private_key':_0x8407ba,'client_email':_0x4c6c14[0x1]}};var _0x34897e=new dialogflow[(_0xd40d('0x2e'))](_0x895744);var _0x870e53=_0x34897e['sessionPath'](_0x4c6c14[0x0],md5(_0x12d773[_0xd40d('0x17')]['id']));var _0x5519de={'session':_0x870e53,'queryInput':{'text':{'text':_0x12d773[_0xd40d('0x2f')]['body'],'languageCode':_0x4c6c14[0x3]||'en'}}};return _0x34897e['detectIntent'](_0x5519de)['then'](function(_0x3abe65){if(_0x3abe65&&_0x3abe65[_0xd40d('0x30')]){_0x12d773[_0xd40d('0x11')]['dialogflowV2']=_0x3abe65;var _0x5076f3=_0x3abe65[0x0];var _0x5207a4=_0x5076f3[_0xd40d('0x31')][_0xd40d('0x32')]&&_0x5076f3['queryResult']['diagnosticInfo'][_0xd40d('0x33')]?_0x5076f3[_0xd40d('0x31')]['diagnosticInfo'][_0xd40d('0x33')][_0xd40d('0x34')][_0xd40d('0x35')]:![];_0x12d773[_0xd40d('0x11')][_0xd40d('0x36')]=_0x5076f3[_0xd40d('0x31')][_0xd40d('0x37')];_0x12d773['body']['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x5076f3['queryResult']['allRequiredParamsPresent'];_0x12d773['body'][_0xd40d('0x38')]=_0x5076f3['queryResult']['diagnosticInfo']&&_0x5076f3[_0xd40d('0x31')][_0xd40d('0x32')][_0xd40d('0x33')]?_0x5076f3[_0xd40d('0x31')][_0xd40d('0x32')][_0xd40d('0x33')][_0xd40d('0x34')][_0xd40d('0x35')]:![];_0x12d773[_0xd40d('0x11')][_0xd40d('0x39')]=_0x5076f3[_0xd40d('0x31')]['intent'][_0xd40d('0x3a')];_0x12d773['body']['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x5076f3[_0xd40d('0x31')]['intent'][_0xd40d('0x3b')];_0x12d773[_0xd40d('0x11')][_0xd40d('0x3c')]=_0x5076f3[_0xd40d('0x31')]['intent']['isFallback'];_0x12d773[_0xd40d('0x11')][_0xd40d('0x3d')]=_0x5076f3[_0xd40d('0x31')]['languageCode'];_0x12d773['body']['DIALOGFLOWV2_QUERYTEXT']=_0x5076f3[_0xd40d('0x31')][_0xd40d('0x3e')];_0x12d773[_0xd40d('0x11')][_0xd40d('0x3f')]=_0x5076f3[_0xd40d('0x31')][_0xd40d('0x40')];_0x5713b4[_0xd40d('0x41')]=_0xd40d('0x42');_0x5713b4['providerResponse']=JSON[_0xd40d('0x14')](_0x3abe65);var _0x216a51=[];for(var _0x2b170c=0x0;_0x2b170c<_0x3abe65[_0xd40d('0x30')];_0x2b170c++){var _0x41dfe8=_0x3abe65[_0x2b170c];if(_0x41dfe8&&_0x41dfe8[_0xd40d('0x31')]&&_0x41dfe8[_0xd40d('0x31')][_0xd40d('0x43')]){_0x216a51[_0xd40d('0x44')](createMessage(_0x1fd09f,_0x2eb82b,_0x5713b4,_0x41dfe8[_0xd40d('0x31')][_0xd40d('0x43')]));}}return Promise[_0xd40d('0x45')](_0x216a51)[_0xd40d('0xf')](function(){if(_0x5207a4){_0x60c8aa['next']();}else{_0x60c8aa['stop']();}})['catch'](function(_0x4d7940){logger[_0xd40d('0x29')](_0xd40d('0x13'),_0x1fd09f,JSON[_0xd40d('0x14')](_0x4d7940));_0x60c8aa[_0xd40d('0x1a')]();});}})['catch'](function(_0x25fc57){logger['error'](_0xd40d('0x13'),_0x1fd09f,_0x25fc57[_0xd40d('0x2f')]);_0x60c8aa[_0xd40d('0x1a')]();});}}catch(_0x195c1d){logger[_0xd40d('0x29')]('[%s][DIALOGFLOWV2]\x20%s',_0x1fd09f,JSON[_0xd40d('0x14')](_0x195c1d));_0x60c8aa[_0xd40d('0x2d')]();}};};
\ No newline at end of file
index 81c6378..6e37808 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73ca=['validate','lodash','html-to-text','./utils','../../../../config/logger','routing','number','priority\x20false\x20is\x20a\x20number','consequence','fromString','replace','[%s][GOTOIF]\x20%s','message','condition','priorityTrue','priorityFalse','info','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','stop'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x73ca,0x186));var _0xa73c=function(_0x3fba83,_0x4ed23c){_0x3fba83=_0x3fba83-0x0;var _0xac50fb=_0x73ca[_0x3fba83];return _0xac50fb;};'use strict';var schema=require(_0xa73c('0x0'));var _=require(_0xa73c('0x1'));var htmlToText=require(_0xa73c('0x2'));var utils=require(_0xa73c('0x3'));var logger=require(_0xa73c('0x4'))(_0xa73c('0x5'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':'number','message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0xa73c('0x6'),'message':_0xa73c('0x7')}});exports[_0xa73c('0x8')]=function(_0x5cd506,_0x5a2e7d){return function(_0x477a17){try{var _0x57405e={'condition':htmlToText[_0xa73c('0x9')](utils['getMustacheRender'](_0x5a2e7d[0x0],this),{'wordwrap':![]})[_0xa73c('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x5a2e7d[0x1],'priorityFalse':_0x5a2e7d[0x2]};var _0x39f8ae=gotoif['validate'](_0x57405e,{'typecast':!![]});if(_0x39f8ae['length']){logger['error'](_0xa73c('0xb'),_0x5cd506,_['map'](_0x39f8ae,_0xa73c('0xc'))['join'](',\x20'));_0x477a17['stop']();}else{try{var _0x1229d7=eval('('+_0x57405e[_0xa73c('0xd')]+')');var _0x235fa2=_0x1229d7?_0x57405e[_0xa73c('0xe')]:_0x57405e[_0xa73c('0xf')];logger[_0xa73c('0x10')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x5cd506,_0x57405e['condition'],_0x1229d7,_0x235fa2||_0xa73c('0x11'));if(_0x235fa2){var _0x367d5a=_[_0xa73c('0x12')](_0x477a17[_0xa73c('0x13')](),{'p':_0x235fa2});if(_0x367d5a>=0x0){logger['info'](_0xa73c('0x14'),_0x5cd506,_0x235fa2||_0xa73c('0x11'),_0x367d5a);_0x477a17[_0xa73c('0x11')](_0x367d5a);}else{logger[_0xa73c('0x10')](_0xa73c('0x15'),_0x5cd506,_0x235fa2||'next');_0x477a17['stop']();}}else{_0x477a17[_0xa73c('0x11')]();}}catch(_0x3a4daf){logger[_0xa73c('0x16')](_0xa73c('0x17'),_0x5cd506,_0x3a4daf['message']);_0x477a17['stop']();}}}catch(_0x53c71b){logger['error'](_0xa73c('0xb'),_0x5cd506,JSON[_0xa73c('0x18')](_0x53c71b));_0x477a17[_0xa73c('0x19')]();}};};
\ No newline at end of file
+var _0x1403=['[%s][GOTOIF]\x20eval\x20error:\x20%s','validate','html-to-text','../../../../config/logger','routing','priority\x20true\x20is\x20a\x20number','number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','length','error','[%s][GOTOIF]\x20%s','map','message','join','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','condition','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stop'];(function(_0x151ad4,_0x2b9dc7){var _0x3ec519=function(_0x18d491){while(--_0x18d491){_0x151ad4['push'](_0x151ad4['shift']());}};_0x3ec519(++_0x2b9dc7);}(_0x1403,0xe1));var _0x3140=function(_0x583e98,_0x5534f5){_0x583e98=_0x583e98-0x0;var _0x84cc30=_0x1403[_0x583e98];return _0x84cc30;};'use strict';var schema=require(_0x3140('0x0'));var _=require('lodash');var htmlToText=require(_0x3140('0x1'));var utils=require('./utils');var logger=require(_0x3140('0x2'))(_0x3140('0x3'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':'number','message':_0x3140('0x4')},'priorityFalse':{'type':_0x3140('0x5'),'message':_0x3140('0x6')}});exports[_0x3140('0x7')]=function(_0x43bf22,_0x5791b1){return function(_0x1112cb){try{var _0x50a74d={'condition':htmlToText[_0x3140('0x8')](utils[_0x3140('0x9')](_0x5791b1[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x5791b1[0x1],'priorityFalse':_0x5791b1[0x2]};var _0x41e307=gotoif['validate'](_0x50a74d,{'typecast':!![]});if(_0x41e307[_0x3140('0xa')]){logger[_0x3140('0xb')](_0x3140('0xc'),_0x43bf22,_[_0x3140('0xd')](_0x41e307,_0x3140('0xe'))[_0x3140('0xf')](',\x20'));_0x1112cb['stop']();}else{try{var _0x26caf6=eval('('+_0x50a74d['condition']+')');var _0x30c6db=_0x26caf6?_0x50a74d[_0x3140('0x10')]:_0x50a74d[_0x3140('0x11')];logger[_0x3140('0x12')](_0x3140('0x13'),_0x43bf22,_0x50a74d[_0x3140('0x14')],_0x26caf6,_0x30c6db||'next');if(_0x30c6db){var _0x12006f=_[_0x3140('0x15')](_0x1112cb[_0x3140('0x16')](),{'p':_0x30c6db});if(_0x12006f>=0x0){logger[_0x3140('0x12')](_0x3140('0x17'),_0x43bf22,_0x30c6db||_0x3140('0x18'),_0x12006f);_0x1112cb[_0x3140('0x18')](_0x12006f);}else{logger[_0x3140('0x12')](_0x3140('0x19'),_0x43bf22,_0x30c6db||_0x3140('0x18'));_0x1112cb[_0x3140('0x1a')]();}}else{_0x1112cb[_0x3140('0x18')]();}}catch(_0x2dec2b){logger[_0x3140('0xb')](_0x3140('0x1b'),_0x43bf22,_0x2dec2b['message']);_0x1112cb[_0x3140('0x1a')]();}}}catch(_0x822f29){logger[_0x3140('0xb')]('[%s][GOTOIF]\x20%s',_0x43bf22,JSON['stringify'](_0x822f29));_0x1112cb[_0x3140('0x1a')]();}};};
\ No newline at end of file
index 0aaa611..7f9aa43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f15=['length','message','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','error','[%s][GOTOP]\x20%s','stringify','validate','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'];(function(_0x3cc5cb,_0x4ccf03){var _0x5c78aa=function(_0x3fd280){while(--_0x3fd280){_0x3cc5cb['push'](_0x3cc5cb['shift']());}};_0x5c78aa(++_0x4ccf03);}(_0x8f15,0xd6));var _0x58f1=function(_0x58b19f,_0x212456){_0x58b19f=_0x58b19f-0x0;var _0xc192f9=_0x8f15[_0x58b19f];return _0xc192f9;};'use strict';var schema=require(_0x58f1('0x0'));var _=require(_0x58f1('0x1'));var logger=require(_0x58f1('0x2'))(_0x58f1('0x3'));var gotop=schema({'priority':{'type':_0x58f1('0x4'),'required':!![],'message':_0x58f1('0x5')}});exports['consequence']=function(_0x29ecb3,_0x48527e){return function(_0x140b6e){try{var _0xf04694={'priority':_0x48527e[0x0]};var _0x74db96=gotop[_0x58f1('0x0')](_0xf04694,{'typecast':!![]});if(_0x74db96[_0x58f1('0x6')]){logger['error']('[%s][GOTOP]\x20%s',_0x29ecb3,_['map'](_0x74db96,_0x58f1('0x7'))[_0x58f1('0x8')](',\x20'));_0x140b6e[_0x58f1('0x9')]();}else{logger[_0x58f1('0xa')](_0x58f1('0xb'),_0x29ecb3,_0xf04694[_0x58f1('0xc')]);if(_0xf04694[_0x58f1('0xc')]){var _0x1e2835=_[_0x58f1('0xd')](_0x140b6e['rules'](),{'p':_0xf04694[_0x58f1('0xc')]});if(_0x1e2835>=0x0){logger['info'](_0x58f1('0xe'),_0x29ecb3,_0xf04694[_0x58f1('0xc')]||_0x58f1('0xf'),_0x1e2835);_0x140b6e['next'](_0x1e2835);}else{logger[_0x58f1('0xa')](_0x58f1('0x10'),_0x29ecb3,_0xf04694[_0x58f1('0xc')]||'next');_0x140b6e[_0x58f1('0x9')]();}}else{_0x140b6e['next']();}}}catch(_0x231e0d){logger[_0x58f1('0x11')](_0x58f1('0x12'),_0x29ecb3,JSON[_0x58f1('0x13')](_0x231e0d));_0x140b6e['stop']();}};};
\ No newline at end of file
+var _0xcc52=['map','message','stop','info','priority','rules','next','[%s][GOTOP]\x20%s','stringify','validate','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','error'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xcc52,0xe9));var _0x2cc5=function(_0x1986b3,_0x38c839){_0x1986b3=_0x1986b3-0x0;var _0x5ba268=_0xcc52[_0x1986b3];return _0x5ba268;};'use strict';var schema=require(_0x2cc5('0x0'));var _=require('lodash');var logger=require('../../../../config/logger')('routing');var gotop=schema({'priority':{'type':_0x2cc5('0x1'),'required':!![],'message':_0x2cc5('0x2')}});exports[_0x2cc5('0x3')]=function(_0x4280b4,_0x1d59bb){return function(_0x519c64){try{var _0x31c0bc={'priority':_0x1d59bb[0x0]};var _0x103c78=gotop[_0x2cc5('0x0')](_0x31c0bc,{'typecast':!![]});if(_0x103c78['length']){logger[_0x2cc5('0x4')]('[%s][GOTOP]\x20%s',_0x4280b4,_[_0x2cc5('0x5')](_0x103c78,_0x2cc5('0x6'))['join'](',\x20'));_0x519c64[_0x2cc5('0x7')]();}else{logger[_0x2cc5('0x8')]('[%s][GOTOP]\x20priority\x20%s',_0x4280b4,_0x31c0bc[_0x2cc5('0x9')]);if(_0x31c0bc[_0x2cc5('0x9')]){var _0x8f0239=_['findIndex'](_0x519c64[_0x2cc5('0xa')](),{'p':_0x31c0bc[_0x2cc5('0x9')]});if(_0x8f0239>=0x0){logger[_0x2cc5('0x8')]('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x4280b4,_0x31c0bc['priority']||_0x2cc5('0xb'),_0x8f0239);_0x519c64[_0x2cc5('0xb')](_0x8f0239);}else{logger[_0x2cc5('0x8')]('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x4280b4,_0x31c0bc['priority']||_0x2cc5('0xb'));_0x519c64[_0x2cc5('0x7')]();}}else{_0x519c64[_0x2cc5('0xb')]();}}}catch(_0x7b11ae){logger[_0x2cc5('0x4')](_0x2cc5('0xc'),_0x4280b4,JSON[_0x2cc5('0xd')](_0x7b11ae));_0x519c64[_0x2cc5('0x7')]();}};};
\ No newline at end of file
index 359ce95..ba89977 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc00a=['../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','channel','chat','ChatWebsiteId','account','upperFirst','interaction','create','then','info','[%s][MESSAGE]\x20%s','body','catch','error','stringify','stop','lodash','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage'];(function(_0x24a526,_0x14850d){var _0x3135a9=function(_0x45d7b2){while(--_0x45d7b2){_0x24a526['push'](_0x24a526['shift']());}};_0x3135a9(++_0x14850d);}(_0xc00a,0x1f3));var _0xac00=function(_0x21c3ac,_0x2a46bb){_0x21c3ac=_0x21c3ac-0x0;var _0x3c45ad=_0xc00a[_0x21c3ac];return _0x3c45ad;};'use strict';var _=require(_0xac00('0x0'));var utils=require(_0xac00('0x1'));var logger=require('../../../../config/logger')(_0xac00('0x2'));var rpc={'chatMessage':require(_0xac00('0x3')),'openchannelMessage':require(_0xac00('0x4')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xac00('0x5')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xac00('0x6'))};exports[_0xac00('0x7')]=function(_0x59e34e,_0x1487dd){return function(_0x1344d0){try{var _0x22d1c8={'body':utils[_0xac00('0x8')](_0x1487dd[0x0],this),'ContactId':this['contact']['id']};if(this[_0xac00('0x9')]===_0xac00('0xa')){_0x22d1c8[_0xac00('0xb')]=this[_0xac00('0xc')]['id'];}else{_0x22d1c8[_[_0xac00('0xd')](this[_0xac00('0x9')])+'AccountId']=this[_0xac00('0xc')]['id'];}_0x22d1c8[_[_0xac00('0xd')](this[_0xac00('0x9')])+'InteractionId']=this[_0xac00('0xe')]['id'];if(rpc[this[_0xac00('0x9')]+'Message']){return rpc[this[_0xac00('0x9')]+'Message'][_0xac00('0xf')](_0x22d1c8)[_0xac00('0x10')](function(_0x4296c8){logger[_0xac00('0x11')](_0xac00('0x12'),_0x59e34e,_0x22d1c8[_0xac00('0x13')]);_0x1344d0['next']();})[_0xac00('0x14')](function(_0x3b185d){logger[_0xac00('0x15')](_0xac00('0x12'),_0x59e34e,JSON[_0xac00('0x16')](_0x3b185d));_0x1344d0[_0xac00('0x17')]();});}}catch(_0xdda6ab){logger[_0xac00('0x15')](_0xac00('0x12'),_0x59e34e,JSON[_0xac00('0x16')](_0xdda6ab));_0x1344d0[_0xac00('0x17')]();}};};
\ No newline at end of file
+var _0x636f=['error','stop','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','account','upperFirst','AccountId','interaction','Message','create','then','info','[%s][MESSAGE]\x20%s','next','catch','stringify'];(function(_0x2a1e73,_0x79dada){var _0x2ece70=function(_0x1282c2){while(--_0x1282c2){_0x2a1e73['push'](_0x2a1e73['shift']());}};_0x2ece70(++_0x79dada);}(_0x636f,0xa4));var _0xf636=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x636f[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var utils=require(_0xf636('0x0'));var logger=require(_0xf636('0x1'))(_0xf636('0x2'));var rpc={'chatMessage':require(_0xf636('0x3')),'openchannelMessage':require(_0xf636('0x4')),'mailMessage':require(_0xf636('0x5')),'smsMessage':require(_0xf636('0x6')),'faxMessage':require(_0xf636('0x7')),'whatsappMessage':require(_0xf636('0x8'))};exports[_0xf636('0x9')]=function(_0x2cb76f,_0x51b241){return function(_0x87443c){try{var _0x4baa7a={'body':utils[_0xf636('0xa')](_0x51b241[0x0],this),'ContactId':this[_0xf636('0xb')]['id']};if(this[_0xf636('0xc')]==='chat'){_0x4baa7a['ChatWebsiteId']=this[_0xf636('0xd')]['id'];}else{_0x4baa7a[_[_0xf636('0xe')](this[_0xf636('0xc')])+_0xf636('0xf')]=this[_0xf636('0xd')]['id'];}_0x4baa7a[_[_0xf636('0xe')](this[_0xf636('0xc')])+'InteractionId']=this[_0xf636('0x10')]['id'];if(rpc[this['channel']+_0xf636('0x11')]){return rpc[this[_0xf636('0xc')]+_0xf636('0x11')][_0xf636('0x12')](_0x4baa7a)[_0xf636('0x13')](function(_0x11f653){logger[_0xf636('0x14')](_0xf636('0x15'),_0x2cb76f,_0x4baa7a['body']);_0x87443c[_0xf636('0x16')]();})[_0xf636('0x17')](function(_0x45b229){logger['error'](_0xf636('0x15'),_0x2cb76f,JSON[_0xf636('0x18')](_0x45b229));_0x87443c['stop']();});}}catch(_0x4c98ff){logger[_0xf636('0x19')]('[%s][MESSAGE]\x20%s',_0x2cb76f,JSON[_0xf636('0x18')](_0x4c98ff));_0x87443c[_0xf636('0x1a')]();}};};
\ No newline at end of file
index 4bae5c2..8e5cab6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x161f=['./utils','consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','stop'];(function(_0xb14790,_0x1dd623){var _0x29db68=function(_0x3192b7){while(--_0x3192b7){_0xb14790['push'](_0xb14790['shift']());}};_0x29db68(++_0x1dd623);}(_0x161f,0x19e));var _0xf161=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x161f[_0x167cc1];return _0x10bc4b;};'use strict';var utils=require(_0xf161('0x0'));var logger=require('../../../../config/logger')('routing');exports[_0xf161('0x1')]=function(_0x392cde,_0x9ef9a4){return function(_0xe997aa){try{logger[_0xf161('0x2')](_0xf161('0x3'),_0x392cde,utils[_0xf161('0x4')](_0x9ef9a4[0x0],this));_0xe997aa[_0xf161('0x5')]();}catch(_0x265155){logger[_0xf161('0x6')](_0xf161('0x3'),_0x392cde,JSON[_0xf161('0x7')](_0x265155));_0xe997aa[_0xf161('0x8')]();}};};
\ No newline at end of file
+var _0xea34=['next','error','stringify','stop','./utils','consequence','info','[%s][NOOP]\x20%s','getMustacheRender'];(function(_0x7c9153,_0x3c6aee){var _0x4e29a2=function(_0x566b6a){while(--_0x566b6a){_0x7c9153['push'](_0x7c9153['shift']());}};_0x4e29a2(++_0x3c6aee);}(_0xea34,0x12d));var _0x4ea3=function(_0x38eb23,_0x196e8b){_0x38eb23=_0x38eb23-0x0;var _0x48506a=_0xea34[_0x38eb23];return _0x48506a;};'use strict';var utils=require(_0x4ea3('0x0'));var logger=require('../../../../config/logger')('routing');exports[_0x4ea3('0x1')]=function(_0x45b890,_0x41c817){return function(_0x410313){try{logger[_0x4ea3('0x2')](_0x4ea3('0x3'),_0x45b890,utils[_0x4ea3('0x4')](_0x41c817[0x0],this));_0x410313[_0x4ea3('0x5')]();}catch(_0x481ea3){logger[_0x4ea3('0x6')](_0x4ea3('0x3'),_0x45b890,JSON[_0x4ea3('0x7')](_0x481ea3));_0x410313[_0x4ea3('0x8')]();}};};
\ No newline at end of file
index 1d5da94..bfcd64c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb82e=['joinAt','emit','clone','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','pick','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','InteractionId','interaction','MessageId','message','AccountId','WebsiteId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','error','create\x20queue\x20report','info','[%s][STOP:QUEUE][NAME:%s]','catch','update\x20queue\x20report','[%s][END:QUEUE][NAME:%s]','toLowerCase','length','[%s][QUEUE]\x20%s','map','join','stop','find','Queues','timeout','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','lodash','util','seq-queue','ioredis','../../../../config/environment','../../../../config/logger','./strategy','redis','localhost','socket.io-emitter','queue_id','account','queue','from'];(function(_0xc14960,_0x16f1b9){var _0x574335=function(_0x555bfe){while(--_0x555bfe){_0xc14960['push'](_0xc14960['shift']());}};_0x574335(++_0x16f1b9);}(_0xb82e,0x172));var _0xeb82=function(_0x5930ba,_0x325f6f){_0x5930ba=_0x5930ba-0x0;var _0x4899a9=_0xb82e[_0x5930ba];return _0x4899a9;};'use strict';var schema=require(_0xeb82('0x0'));var _=require(_0xeb82('0x1'));var util=require(_0xeb82('0x2'));var seqqueue=require(_0xeb82('0x3'));var moment=require('moment');var Redis=require(_0xeb82('0x4'));var config=require(_0xeb82('0x5'));var logger=require(_0xeb82('0x6'))('routing');var strategy=require(_0xeb82('0x7'));config[_0xeb82('0x8')]=_['defaults'](config[_0xeb82('0x8')],{'host':_0xeb82('0x9'),'port':0x18eb});var io=require(_0xeb82('0xa'))(new Redis(config[_0xeb82('0x8')]));var attributes=['id',_0xeb82('0xb'),_0xeb82('0xc'),_0xeb82('0xd'),_0xeb82('0xe'),_0xeb82('0xf')];function emit(_0x1fed2b,_0x2c0bd8,_0x5acaa5){io['to'](_0x1fed2b)[_0xeb82('0x10')](_0x2c0bd8,_0x5acaa5);}function emitChannelQueueInteraction(_0x1bd003,_0x58e2e4,_0x4bf527,_0x518ee4,_0x3d7981,_0x4adcdf,_0x6e1486,_0x3324dc){var _0x3e9403=_[_0xeb82('0x11')](_0x4bf527);_0x3e9403[_0xeb82('0xb')]=_0x3324dc;_0x3e9403['queue']=_0x58e2e4;_0x3e9403['account']=_0x518ee4;_0x3e9403['id']=_0x3d7981;if(_0x4adcdf){_0x6e1486[util[_0xeb82('0x12')]('%sQueuesWaitingInteractions',_0x1bd003)][_0x3d7981]=_['pick'](_0x3e9403,attributes);}else{delete _0x6e1486[util[_0xeb82('0x12')](_0xeb82('0x13'),_0x1bd003)][_0x3d7981];}emit(util['format'](_0xeb82('0x14'),_0x1bd003,_0x58e2e4),util['format'](_0xeb82('0x15'),_0x1bd003,_0x4adcdf?_0xeb82('0x16'):_0xeb82('0x17')),_[_0xeb82('0x18')](_0x3e9403,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xeb82('0x19')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0xeb82('0x1a')),'faxQueueReport':require(_0xeb82('0x1b')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0xeb82('0x1c'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xeb82('0x1d'),'message':_0xeb82('0x1e')}});function startRouting(_0x3fd510,_0x992004,_0x1b844b,_0x53175b){if(_0x3fd510&&_0x992004&&_0x1b844b){_0x992004[_0xeb82('0x1f')]+=0x1;var _0x5d0b71={'uniqueid':_0x3fd510,'from':_0x1b844b[_0xeb82('0x20')]?_0x1b844b[_0xeb82('0x20')][_0xeb82('0xe')]:'','joinAt':moment()[_0xeb82('0x12')](_0xeb82('0x21')),'ContactId':_0x1b844b[_0xeb82('0x22')]?_0x1b844b['contact']['id']:null,'ListId':_0x1b844b['list']?_0x1b844b[_0xeb82('0x23')]['id']:null};_0x5d0b71[_[_0xeb82('0x24')](_0x1b844b['channel'])+'QueueId']=_0x992004['id']||null;_0x5d0b71[_[_0xeb82('0x24')](_0x1b844b[_0xeb82('0x25')])+_0xeb82('0x26')]=_0x1b844b[_0xeb82('0x27')]?_0x1b844b[_0xeb82('0x27')]['id']:null;_0x5d0b71[_[_0xeb82('0x24')](_0x1b844b[_0xeb82('0x25')])+_0xeb82('0x28')]=_0x1b844b[_0xeb82('0x29')]?_0x1b844b[_0xeb82('0x29')]['id']:null;_0x5d0b71[_[_0xeb82('0x24')](_0x1b844b[_0xeb82('0x25')])+(_0x1b844b[_0xeb82('0x25')]!=='chat'?_0xeb82('0x2a'):_0xeb82('0x2b'))]=_0x1b844b[_0xeb82('0xc')]?_0x1b844b[_0xeb82('0xc')]['id']:null;logger['info'](util[_0xeb82('0x12')](_0xeb82('0x2c'),_0x3fd510,_0x992004[_0xeb82('0x2d')]));emitChannelQueueInteraction(_0x1b844b['channel'],_0x992004[_0xeb82('0x2d')],_0x5d0b71,_0x1b844b[_0xeb82('0xc')]['name'],_0x1b844b[_0xeb82('0x29')]['id'],!![],_0x53175b,_0x992004['id']);if(rpc[_0x1b844b[_0xeb82('0x25')]+_0xeb82('0x2e')]){return rpc[_0x1b844b[_0xeb82('0x25')]+_0xeb82('0x2e')][_0xeb82('0x2f')](_0x5d0b71)['catch'](function(_0x2e463e){logger[_0xeb82('0x30')](_0xeb82('0x31'));});}}}function stopRouting(_0x5cb5c2,_0x1c8dca,_0x4a2c60,_0x21eed0){if(_0x5cb5c2&&_0x1c8dca){_0x1c8dca[_0xeb82('0x1f')]-=0x1;var _0x491718={'leaveAt':moment()[_0xeb82('0x12')](_0xeb82('0x21')),'acceptAt':moment()[_0xeb82('0x12')](_0xeb82('0x21')),'reason':'accepted'};logger[_0xeb82('0x32')](util[_0xeb82('0x12')](_0xeb82('0x33'),_0x5cb5c2,_0x1c8dca['name']));emitChannelQueueInteraction(_0x4a2c60['channel'],_0x1c8dca['name'],_0x4a2c60['body'],_0x4a2c60[_0xeb82('0xc')]['name'],_0x4a2c60[_0xeb82('0x29')]['id'],![],_0x21eed0,_0x1c8dca['id']);if(rpc[_0x4a2c60['channel']+_0xeb82('0x2e')]){return rpc[_0x4a2c60[_0xeb82('0x25')]+_0xeb82('0x2e')]['update'](_0x5cb5c2,_0x491718)[_0xeb82('0x34')](function(_0x39d220){logger[_0xeb82('0x30')](_0xeb82('0x35'));});}}}function endRouting(_0x40d735,_0x2251da,_0x3b0f0c,_0x3df4b8){if(_0x40d735&&_0x2251da){_0x2251da[_0xeb82('0x1f')]-=0x1;var _0x4a49d7={'leaveAt':moment()[_0xeb82('0x12')](_0xeb82('0x21')),'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':'timeout'};logger['info'](util[_0xeb82('0x12')](_0xeb82('0x36'),_0x40d735,_0x2251da['name']));emitChannelQueueInteraction(_0x3b0f0c[_0xeb82('0x25')],_0x2251da[_0xeb82('0x2d')],_0x3b0f0c['body'],_0x3b0f0c['account']['name'],_0x3b0f0c[_0xeb82('0x29')]['id'],![],_0x3df4b8);if(rpc[_0x3b0f0c[_0xeb82('0x25')]+'QueueReport']){return rpc[_0x3b0f0c[_0xeb82('0x25')]+'QueueReport']['update'](_0x40d735,_0x4a49d7)[_0xeb82('0x34')](function(_0x502053){logger[_0xeb82('0x30')](_0xeb82('0x35'));});}}}function handleFindQueue(_0x42f36f){return function(_0x2ae5d1){return _0x2ae5d1['name']['toLowerCase']()===_0x42f36f[_0xeb82('0x37')]();};}exports['consequence']=function(_0x6a454c,_0x3c229f,_0x1e89c2,_0x4297c1){return function(_0x4bfd2f){try{var _0xfeac27={'name':_0x3c229f[0x0],'timeout':_0x3c229f[0x1]};var _0x3ff916=queue['validate'](_0xfeac27,{'typecast':!![]});if(_0x3ff916[_0xeb82('0x38')]){logger[_0xeb82('0x30')](_0xeb82('0x39'),_0x6a454c,_[_0xeb82('0x3a')](_0x3ff916,_0xeb82('0x29'))[_0xeb82('0x3b')](',\x20'));_0x4bfd2f[_0xeb82('0x3c')]();}else{var _0x3e4148=_[_0xeb82('0x3d')](_0x1e89c2[_0x4297c1[_0xeb82('0x25')]+_0xeb82('0x3e')],handleFindQueue(_0xfeac27[_0xeb82('0x2d')]));if(_0x3e4148){startRouting(_0x6a454c,_0x3e4148,_0x4297c1,_0x1e89c2);var _0x4e893b=(_0x3e4148[_0xeb82('0x3f')]||0xa)*0x3e8;var _0x5cb7ae=(_0xfeac27['timeout']||0x14)*0x3e8;var _0x2111ee,_0x5a6c61;if(_0x4e893b>_0x5cb7ae){_0x5cb7ae=_0x4e893b;}var _0x1e9799=seqqueue[_0xeb82('0x40')](_0x4e893b);_0x1e9799['id']=_0x6a454c;_0x1e9799[_0xeb82('0x41')]=_0x4e893b;_0x1e9799[_0xeb82('0x42')]=_0x5cb7ae;_0x1e9799['channel']=_0x4297c1['channel'];_0x1e89c2[_0xeb82('0x43')][_0x6a454c]['on'](_0xeb82('0x44'),function(){logger['info'](_0xeb82('0x45'),_0x6a454c);stopRouting(_0x6a454c,_0x3e4148,_0x4297c1,_0x1e89c2);clearTimeout(_0x2111ee);_0x2111ee=undefined;_0x1e9799['close'](!![]);if(_0x1e89c2[_0xeb82('0x43')][_0x6a454c]){delete _0x1e89c2[_0xeb82('0x43')][_0x6a454c];}_0x4bfd2f[_0xeb82('0x3c')]();});_0x1e89c2[_0xeb82('0x43')][_0x6a454c]['on'](_0xeb82('0x46'),function(){if(_0x1e89c2[_0xeb82('0x43')][_0x6a454c]){delete _0x1e89c2['rules'][_0x6a454c];}});_0x2111ee=setTimeout(function(){logger[_0xeb82('0x32')](_0xeb82('0x47'),_0x6a454c);endRouting(_0x6a454c,_0x3e4148,_0x4297c1,_0x1e89c2);clearTimeout(_0x2111ee);_0x1e9799['close'](!![]);_0x4bfd2f[_0xeb82('0x48')]();},_0x5cb7ae);switch(_0x3e4148[_0xeb82('0x49')]){case _0xeb82('0x4a'):strategy[_0xeb82('0x4a')](_0x1e9799,_0x3e4148,_0x1e89c2,_0x4297c1);break;default:strategy['beepall'](_0x1e9799,_0x3e4148,_0x1e89c2,_0x4297c1);}}else{logger[_0xeb82('0x30')](_0xeb82('0x4b'),_0x6a454c,_0xfeac27[_0xeb82('0x2d')]);_0x4bfd2f[_0xeb82('0x3c')]();}}}catch(_0x4e1801){console[_0xeb82('0x4c')](_0x4e1801);logger['error'](_0xeb82('0x39'),_0x6a454c,_0x4e1801['stack']);_0x4bfd2f[_0xeb82('0x3c')]();}};};
\ No newline at end of file
+var _0x5b0f=['save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','body','from','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','InteractionId','interaction','MessageId','message','chat','AccountId','info','name','QueueReport','create','catch','error','create\x20queue\x20report','waiting','accepted','[%s][STOP:QUEUE][NAME:%s]','update','[%s][END:QUEUE][NAME:%s]','update\x20queue\x20report','toLowerCase','consequence','validate','length','[%s][QUEUE]\x20%s','map','join','stop','find','Queues','timeout','atimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','beepall','log','stack','lodash','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','localhost','socket.io-emitter','account','queue','joinAt','emit','queue_id','pick','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s'];(function(_0x10dc20,_0x53b0ca){var _0x45c996=function(_0x5edcac){while(--_0x5edcac){_0x10dc20['push'](_0x10dc20['shift']());}};_0x45c996(++_0x53b0ca);}(_0x5b0f,0xde));var _0xf5b0=function(_0x3fb2d4,_0x44a3a8){_0x3fb2d4=_0x3fb2d4-0x0;var _0x4cfd9a=_0x5b0f[_0x3fb2d4];return _0x4cfd9a;};'use strict';var schema=require('validate');var _=require(_0xf5b0('0x0'));var util=require('util');var seqqueue=require(_0xf5b0('0x1'));var moment=require(_0xf5b0('0x2'));var Redis=require(_0xf5b0('0x3'));var config=require(_0xf5b0('0x4'));var logger=require(_0xf5b0('0x5'))(_0xf5b0('0x6'));var strategy=require(_0xf5b0('0x7'));config['redis']=_['defaults'](config[_0xf5b0('0x8')],{'host':_0xf5b0('0x9'),'port':0x18eb});var io=require(_0xf5b0('0xa'))(new Redis(config[_0xf5b0('0x8')]));var attributes=['id','queue_id',_0xf5b0('0xb'),_0xf5b0('0xc'),'from',_0xf5b0('0xd')];function emit(_0x93f539,_0x238d58,_0x4a79e5){io['to'](_0x93f539)[_0xf5b0('0xe')](_0x238d58,_0x4a79e5);}function emitChannelQueueInteraction(_0xaee4ce,_0x1fbe22,_0x1844d5,_0x545a1f,_0x11e678,_0x4463dc,_0x2d89fd,_0x665cca){var _0x3449fc=_['clone'](_0x1844d5);_0x3449fc[_0xf5b0('0xf')]=_0x665cca;_0x3449fc[_0xf5b0('0xc')]=_0x1fbe22;_0x3449fc[_0xf5b0('0xb')]=_0x545a1f;_0x3449fc['id']=_0x11e678;if(_0x4463dc){_0x2d89fd[util['format']('%sQueuesWaitingInteractions',_0xaee4ce)][_0x11e678]=_[_0xf5b0('0x10')](_0x3449fc,attributes);}else{delete _0x2d89fd[util[_0xf5b0('0x11')](_0xf5b0('0x12'),_0xaee4ce)][_0x11e678];}emit(util['format'](_0xf5b0('0x13'),_0xaee4ce,_0x1fbe22),util[_0xf5b0('0x11')](_0xf5b0('0x14'),_0xaee4ce,_0x4463dc?_0xf5b0('0x15'):_0xf5b0('0x16')),_[_0xf5b0('0x10')](_0x3449fc,attributes));}var rpc={'openchannelQueueReport':require(_0xf5b0('0x17')),'mailQueueReport':require(_0xf5b0('0x18')),'chatQueueReport':require(_0xf5b0('0x19')),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require(_0xf5b0('0x1a')),'whatsappQueueReport':require(_0xf5b0('0x1b'))};var queue=schema({'name':{'type':_0xf5b0('0x1c'),'required':!![],'message':_0xf5b0('0x1d')},'timeout':{'type':_0xf5b0('0x1e'),'message':_0xf5b0('0x1f')}});function startRouting(_0x3a9acd,_0x45be6b,_0x1ecd3d,_0x4f46d8){if(_0x3a9acd&&_0x45be6b&&_0x1ecd3d){_0x45be6b['waiting']+=0x1;var _0x1ec5a9={'uniqueid':_0x3a9acd,'from':_0x1ecd3d[_0xf5b0('0x20')]?_0x1ecd3d[_0xf5b0('0x20')][_0xf5b0('0x21')]:'','joinAt':moment()[_0xf5b0('0x11')](_0xf5b0('0x22')),'ContactId':_0x1ecd3d[_0xf5b0('0x23')]?_0x1ecd3d[_0xf5b0('0x23')]['id']:null,'ListId':_0x1ecd3d[_0xf5b0('0x24')]?_0x1ecd3d[_0xf5b0('0x24')]['id']:null};_0x1ec5a9[_[_0xf5b0('0x25')](_0x1ecd3d[_0xf5b0('0x26')])+_0xf5b0('0x27')]=_0x45be6b['id']||null;_0x1ec5a9[_[_0xf5b0('0x25')](_0x1ecd3d[_0xf5b0('0x26')])+_0xf5b0('0x28')]=_0x1ecd3d[_0xf5b0('0x29')]?_0x1ecd3d[_0xf5b0('0x29')]['id']:null;_0x1ec5a9[_[_0xf5b0('0x25')](_0x1ecd3d[_0xf5b0('0x26')])+_0xf5b0('0x2a')]=_0x1ecd3d['message']?_0x1ecd3d[_0xf5b0('0x2b')]['id']:null;_0x1ec5a9[_[_0xf5b0('0x25')](_0x1ecd3d[_0xf5b0('0x26')])+(_0x1ecd3d[_0xf5b0('0x26')]!==_0xf5b0('0x2c')?_0xf5b0('0x2d'):'WebsiteId')]=_0x1ecd3d['account']?_0x1ecd3d[_0xf5b0('0xb')]['id']:null;logger[_0xf5b0('0x2e')](util[_0xf5b0('0x11')]('[%s][START:QUEUE][NAME:%s]',_0x3a9acd,_0x45be6b[_0xf5b0('0x2f')]));emitChannelQueueInteraction(_0x1ecd3d[_0xf5b0('0x26')],_0x45be6b[_0xf5b0('0x2f')],_0x1ec5a9,_0x1ecd3d[_0xf5b0('0xb')][_0xf5b0('0x2f')],_0x1ecd3d['message']['id'],!![],_0x4f46d8,_0x45be6b['id']);if(rpc[_0x1ecd3d[_0xf5b0('0x26')]+_0xf5b0('0x30')]){return rpc[_0x1ecd3d[_0xf5b0('0x26')]+_0xf5b0('0x30')][_0xf5b0('0x31')](_0x1ec5a9)[_0xf5b0('0x32')](function(_0x475690){logger[_0xf5b0('0x33')](_0xf5b0('0x34'));});}}}function stopRouting(_0x58d160,_0x59295f,_0x1546c6,_0x41b948){if(_0x58d160&&_0x59295f){_0x59295f[_0xf5b0('0x35')]-=0x1;var _0x3bcaa9={'leaveAt':moment()[_0xf5b0('0x11')](_0xf5b0('0x22')),'acceptAt':moment()[_0xf5b0('0x11')](_0xf5b0('0x22')),'reason':_0xf5b0('0x36')};logger[_0xf5b0('0x2e')](util[_0xf5b0('0x11')](_0xf5b0('0x37'),_0x58d160,_0x59295f[_0xf5b0('0x2f')]));emitChannelQueueInteraction(_0x1546c6[_0xf5b0('0x26')],_0x59295f[_0xf5b0('0x2f')],_0x1546c6[_0xf5b0('0x20')],_0x1546c6[_0xf5b0('0xb')][_0xf5b0('0x2f')],_0x1546c6[_0xf5b0('0x2b')]['id'],![],_0x41b948,_0x59295f['id']);if(rpc[_0x1546c6[_0xf5b0('0x26')]+_0xf5b0('0x30')]){return rpc[_0x1546c6[_0xf5b0('0x26')]+_0xf5b0('0x30')][_0xf5b0('0x38')](_0x58d160,_0x3bcaa9)[_0xf5b0('0x32')](function(_0xc37092){logger['error']('update\x20queue\x20report');});}}}function endRouting(_0x3f8436,_0x4f2b5c,_0x4d9e88,_0x2deb4f){if(_0x3f8436&&_0x4f2b5c){_0x4f2b5c['waiting']-=0x1;var _0x5cf0c0={'leaveAt':moment()['format'](_0xf5b0('0x22')),'exitAt':moment()[_0xf5b0('0x11')](_0xf5b0('0x22')),'reason':'timeout'};logger[_0xf5b0('0x2e')](util['format'](_0xf5b0('0x39'),_0x3f8436,_0x4f2b5c['name']));emitChannelQueueInteraction(_0x4d9e88[_0xf5b0('0x26')],_0x4f2b5c[_0xf5b0('0x2f')],_0x4d9e88[_0xf5b0('0x20')],_0x4d9e88['account'][_0xf5b0('0x2f')],_0x4d9e88[_0xf5b0('0x2b')]['id'],![],_0x2deb4f);if(rpc[_0x4d9e88[_0xf5b0('0x26')]+_0xf5b0('0x30')]){return rpc[_0x4d9e88[_0xf5b0('0x26')]+_0xf5b0('0x30')]['update'](_0x3f8436,_0x5cf0c0)[_0xf5b0('0x32')](function(_0x3c11f3){logger[_0xf5b0('0x33')](_0xf5b0('0x3a'));});}}}function handleFindQueue(_0xdc5a6c){return function(_0xc8efd3){return _0xc8efd3['name'][_0xf5b0('0x3b')]()===_0xdc5a6c['toLowerCase']();};}exports[_0xf5b0('0x3c')]=function(_0xd604c4,_0x188eb7,_0x55e858,_0x4fe02e){return function(_0x30033c){try{var _0x5448f2={'name':_0x188eb7[0x0],'timeout':_0x188eb7[0x1]};var _0x5f06ad=queue[_0xf5b0('0x3d')](_0x5448f2,{'typecast':!![]});if(_0x5f06ad[_0xf5b0('0x3e')]){logger[_0xf5b0('0x33')](_0xf5b0('0x3f'),_0xd604c4,_[_0xf5b0('0x40')](_0x5f06ad,'message')[_0xf5b0('0x41')](',\x20'));_0x30033c[_0xf5b0('0x42')]();}else{var _0x21175e=_[_0xf5b0('0x43')](_0x55e858[_0x4fe02e[_0xf5b0('0x26')]+_0xf5b0('0x44')],handleFindQueue(_0x5448f2['name']));if(_0x21175e){startRouting(_0xd604c4,_0x21175e,_0x4fe02e,_0x55e858);var _0x2ce116=(_0x21175e[_0xf5b0('0x45')]||0xa)*0x3e8;var _0x5d8ebb=(_0x5448f2[_0xf5b0('0x45')]||0x14)*0x3e8;var _0x2cf4dc,_0x3434c7;if(_0x2ce116>_0x5d8ebb){_0x5d8ebb=_0x2ce116;}var _0x3bd890=seqqueue['createQueue'](_0x2ce116);_0x3bd890['id']=_0xd604c4;_0x3bd890[_0xf5b0('0x46')]=_0x2ce116;_0x3bd890['qtimeout']=_0x5d8ebb;_0x3bd890['channel']=_0x4fe02e[_0xf5b0('0x26')];_0x55e858[_0xf5b0('0x47')][_0xd604c4]['on'](_0xf5b0('0x48'),function(){logger[_0xf5b0('0x2e')](_0xf5b0('0x49'),_0xd604c4);stopRouting(_0xd604c4,_0x21175e,_0x4fe02e,_0x55e858);clearTimeout(_0x2cf4dc);_0x2cf4dc=undefined;_0x3bd890[_0xf5b0('0x4a')](!![]);if(_0x55e858[_0xf5b0('0x47')][_0xd604c4]){delete _0x55e858[_0xf5b0('0x47')][_0xd604c4];}_0x30033c[_0xf5b0('0x42')]();});_0x55e858[_0xf5b0('0x47')][_0xd604c4]['on'](_0xf5b0('0x4b'),function(){if(_0x55e858[_0xf5b0('0x47')][_0xd604c4]){delete _0x55e858[_0xf5b0('0x47')][_0xd604c4];}});_0x2cf4dc=setTimeout(function(){logger[_0xf5b0('0x2e')](_0xf5b0('0x4c'),_0xd604c4);endRouting(_0xd604c4,_0x21175e,_0x4fe02e,_0x55e858);clearTimeout(_0x2cf4dc);_0x3bd890['close'](!![]);_0x30033c['next']();},_0x5d8ebb);switch(_0x21175e[_0xf5b0('0x4d')]){case'rrmemory':strategy['rrmemory'](_0x3bd890,_0x21175e,_0x55e858,_0x4fe02e);break;default:strategy[_0xf5b0('0x4e')](_0x3bd890,_0x21175e,_0x55e858,_0x4fe02e);}}else{logger[_0xf5b0('0x33')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0xd604c4,_0x5448f2[_0xf5b0('0x2f')]);_0x30033c[_0xf5b0('0x42')]();}}}catch(_0x4d4527){console[_0xf5b0('0x4f')](_0x4d4527);logger[_0xf5b0('0x33')](_0xf5b0('0x3f'),_0xd604c4,_0x4d4527[_0xf5b0('0x50')]);_0x30033c[_0xf5b0('0x42')]();}};};
\ No newline at end of file
index cd000f4..f92bde9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa575=['squeue','agent','realtime','push','handleRun','bind','handleTimeout','timeout','drained','prototype','info','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','channel','writeLog',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','exports','uuid','./util','../../../../../config/logger','routing','notificationId'];(function(_0x20108d,_0x3b5ad6){var _0x429092=function(_0x17542d){while(--_0x17542d){_0x20108d['push'](_0x20108d['shift']());}};_0x429092(++_0x3b5ad6);}(_0xa575,0x14b));var _0x5a57=function(_0x1c6bcc,_0x540328){_0x1c6bcc=_0x1c6bcc-0x0;var _0x26aedf=_0xa575[_0x1c6bcc];return _0x26aedf;};'use strict';var _=require('lodash');var uuid=require(_0x5a57('0x0'));var util=require(_0x5a57('0x1'));var logger=require(_0x5a57('0x2'))(_0x5a57('0x3'));var Agent=function(_0xd353b7,_0x4f1cca,_0x2ad776,_0x46e7c5){this[_0x5a57('0x4')]=uuid['v4']();this[_0x5a57('0x5')]=_0xd353b7;this[_0x5a57('0x6')]=_0x4f1cca;this[_0x5a57('0x7')]=_0x2ad776;this[_0x5a57('0x3')]=_0x46e7c5;this[_0x5a57('0x5')][_0x5a57('0x8')](this[_0x5a57('0x9')][_0x5a57('0xa')](this),this[_0x5a57('0xb')]['bind'](this));this[_0x5a57('0x5')]['on'](_0x5a57('0xc'),this[_0x5a57('0xb')][_0x5a57('0xa')](this));this[_0x5a57('0x5')]['on'](_0x5a57('0xd'),this['handleDrained'][_0x5a57('0xa')](this));};Agent[_0x5a57('0xe')]['push']=function(){this[_0x5a57('0x5')][_0x5a57('0x8')](this[_0x5a57('0x9')][_0x5a57('0xa')](this),this[_0x5a57('0xb')]['bind'](this));};Agent[_0x5a57('0xe')]['handleDrained']=function(){this['handleTimeout'](!![]);};Agent[_0x5a57('0xe')]['handleRun']=function(_0xeb369f){logger[_0x5a57('0xf')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0x5a57('0x5')]['id'],this[_0x5a57('0x6')]['id']);if(_['isNil'](this['realtime'][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']])){logger['info'](_0x5a57('0x11'),this['squeue']['id'],this['agent']['id']);setTimeout(this[_0x5a57('0x8')][_0x5a57('0xa')](this),0x3e8);}else{if(this[_0x5a57('0x3')][_0x5a57('0x12')]||util[_0x5a57('0x13')](this['squeue']['id'],this[_0x5a57('0x7')][_0x5a57('0x10')][this['agent']['id']],this['squeue'][_0x5a57('0x14')],![])){this[_0x5a57('0x7')][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']]['busy']=!![];this[_0x5a57('0x7')][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']]['busyQueue']=undefined;util['showNotification'](this[_0x5a57('0x4')],this[_0x5a57('0x5')]['id'],this[_0x5a57('0x7')]['agents'][this['agent']['id']],null,this[_0x5a57('0x3')]);util[_0x5a57('0x15')](this[_0x5a57('0x5')]['id'],this['realtime']['agents'][this[_0x5a57('0x6')]['id']],'RINGING'+(this['routing'][_0x5a57('0x12')]?_0x5a57('0x16'):''));}else{logger['info'](_0x5a57('0x17'),this[_0x5a57('0x5')]['id'],this[_0x5a57('0x6')]['id']);setTimeout(this[_0x5a57('0x8')]['bind'](this),0x3e8);}}};Agent[_0x5a57('0xe')][_0x5a57('0xb')]=function(_0x52def1){if(_[_0x5a57('0x18')](this[_0x5a57('0x7')][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']])){return logger[_0x5a57('0xf')](_0x5a57('0x11'),this[_0x5a57('0x5')]['id'],this['agent']['id']);}else{logger['info'](_0x5a57('0x19'),this[_0x5a57('0x5')]['id'],this[_0x5a57('0x6')]['id']);util[_0x5a57('0x1a')](this[_0x5a57('0x4')],this['squeue']['id'],this['realtime'][_0x5a57('0x10')][this['agent']['id']],null,this[_0x5a57('0x3')]);this[_0x5a57('0x7')][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']]['busy']=![];this[_0x5a57('0x7')][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']]['busyQueue']=undefined;util[_0x5a57('0x15')](this[_0x5a57('0x5')]['id'],this[_0x5a57('0x7')][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']],_0x52def1?'STOP':'TIMEOUT');}if(!_0x52def1){setTimeout(this[_0x5a57('0x8')]['bind'](this),0x3e8);}};function agent(_0xd55a80,_0x3b8e5a,_0x887da3,_0x40bbf4){return new Agent(_0xd55a80,_0x3b8e5a,_0x887da3,_0x40bbf4);}module[_0x5a57('0x1b')]=agent;
\ No newline at end of file
+var _0x77be=['hideNotification','TIMEOUT','exports','./util','../../../../../config/logger','routing','notificationId','agent','squeue','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','info','[%s][AGENT]\x20try\x20with\x20%s','isNil','realtime','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','agents','channel','busy','busyQueue','showNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20timeout\x20with\x20%s'];(function(_0x3fe379,_0x36ed99){var _0xabeadc=function(_0x14cab9){while(--_0x14cab9){_0x3fe379['push'](_0x3fe379['shift']());}};_0xabeadc(++_0x36ed99);}(_0x77be,0x18f));var _0xe77b=function(_0x26fb9c,_0x2fbfc6){_0x26fb9c=_0x26fb9c-0x0;var _0x847163=_0x77be[_0x26fb9c];return _0x847163;};'use strict';var _=require('lodash');var uuid=require('uuid');var util=require(_0xe77b('0x0'));var logger=require(_0xe77b('0x1'))(_0xe77b('0x2'));var Agent=function(_0x54046f,_0x55c02d,_0x2e68bc,_0x348068){this[_0xe77b('0x3')]=uuid['v4']();this['squeue']=_0x54046f;this[_0xe77b('0x4')]=_0x55c02d;this['realtime']=_0x2e68bc;this[_0xe77b('0x2')]=_0x348068;this[_0xe77b('0x5')][_0xe77b('0x6')](this[_0xe77b('0x7')][_0xe77b('0x8')](this),this[_0xe77b('0x9')][_0xe77b('0x8')](this));this[_0xe77b('0x5')]['on'](_0xe77b('0xa'),this[_0xe77b('0x9')]['bind'](this));this[_0xe77b('0x5')]['on'](_0xe77b('0xb'),this[_0xe77b('0xc')][_0xe77b('0x8')](this));};Agent[_0xe77b('0xd')][_0xe77b('0x6')]=function(){this[_0xe77b('0x5')][_0xe77b('0x6')](this[_0xe77b('0x7')][_0xe77b('0x8')](this),this[_0xe77b('0x9')]['bind'](this));};Agent[_0xe77b('0xd')][_0xe77b('0xc')]=function(){this[_0xe77b('0x9')](!![]);};Agent[_0xe77b('0xd')][_0xe77b('0x7')]=function(_0x40cdad){logger[_0xe77b('0xe')](_0xe77b('0xf'),this[_0xe77b('0x5')]['id'],this[_0xe77b('0x4')]['id']);if(_[_0xe77b('0x10')](this[_0xe77b('0x11')]['agents'][this['agent']['id']])){logger['info'](_0xe77b('0x12'),this[_0xe77b('0x5')]['id'],this[_0xe77b('0x4')]['id']);setTimeout(this[_0xe77b('0x6')]['bind'](this),0x3e8);}else{if(this[_0xe77b('0x2')][_0xe77b('0x13')]||util[_0xe77b('0x14')](this[_0xe77b('0x5')]['id'],this['realtime'][_0xe77b('0x15')][this[_0xe77b('0x4')]['id']],this[_0xe77b('0x5')][_0xe77b('0x16')],![])){this['realtime'][_0xe77b('0x15')][this[_0xe77b('0x4')]['id']][_0xe77b('0x17')]=!![];this[_0xe77b('0x11')][_0xe77b('0x15')][this[_0xe77b('0x4')]['id']][_0xe77b('0x18')]=undefined;util[_0xe77b('0x19')](this[_0xe77b('0x3')],this['squeue']['id'],this[_0xe77b('0x11')][_0xe77b('0x15')][this[_0xe77b('0x4')]['id']],null,this['routing']);util[_0xe77b('0x1a')](this['squeue']['id'],this[_0xe77b('0x11')]['agents'][this['agent']['id']],_0xe77b('0x1b')+(this[_0xe77b('0x2')][_0xe77b('0x13')]?_0xe77b('0x1c'):''));}else{logger['info']('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this[_0xe77b('0x5')]['id'],this[_0xe77b('0x4')]['id']);setTimeout(this[_0xe77b('0x6')][_0xe77b('0x8')](this),0x3e8);}}};Agent[_0xe77b('0xd')]['handleTimeout']=function(_0x35ac71){if(_[_0xe77b('0x10')](this[_0xe77b('0x11')][_0xe77b('0x15')][this[_0xe77b('0x4')]['id']])){return logger[_0xe77b('0xe')](_0xe77b('0x12'),this[_0xe77b('0x5')]['id'],this[_0xe77b('0x4')]['id']);}else{logger[_0xe77b('0xe')](_0xe77b('0x1d'),this[_0xe77b('0x5')]['id'],this[_0xe77b('0x4')]['id']);util[_0xe77b('0x1e')](this[_0xe77b('0x3')],this['squeue']['id'],this[_0xe77b('0x11')][_0xe77b('0x15')][this[_0xe77b('0x4')]['id']],null,this['routing']);this[_0xe77b('0x11')]['agents'][this[_0xe77b('0x4')]['id']][_0xe77b('0x17')]=![];this['realtime']['agents'][this[_0xe77b('0x4')]['id']]['busyQueue']=undefined;util[_0xe77b('0x1a')](this[_0xe77b('0x5')]['id'],this['realtime']['agents'][this['agent']['id']],_0x35ac71?'STOP':_0xe77b('0x1f'));}if(!_0x35ac71){setTimeout(this[_0xe77b('0x6')]['bind'](this),0x3e8);}};function agent(_0x31a978,_0xa31879,_0x5d9b10,_0x558112){return new Agent(_0x31a978,_0xa31879,_0x5d9b10,_0x558112);}module[_0xe77b('0x20')]=agent;
\ No newline at end of file
index 51c388c..e607f86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0048=['uuid','./util','routing','notificationId','squeue','push','bind','handleTimeout','handleDrained','handleRun','prototype','isNil','queue','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','realtime','channel','RINGING','busy','busyQueue','showNotification','[%s][QUEUE]\x20EMPTY','TIMEOUT'];(function(_0x3f5a49,_0x1cb956){var _0xc913c8=function(_0xa53c7a){while(--_0xa53c7a){_0x3f5a49['push'](_0x3f5a49['shift']());}};_0xc913c8(++_0x1cb956);}(_0x0048,0x129));var _0x8004=function(_0x5ac0f0,_0xee4d98){_0x5ac0f0=_0x5ac0f0-0x0;var _0x4aceec=_0x0048[_0x5ac0f0];return _0x4aceec;};'use strict';var _=require('lodash');var uuid=require(_0x8004('0x0'));var util=require(_0x8004('0x1'));var logger=require('../../../../../config/logger')(_0x8004('0x2'));var Beepall=function(_0x38c924,_0x5ba96a,_0x336cf5,_0x360fff){this[_0x8004('0x3')]=uuid['v4']();this[_0x8004('0x4')]=_0x38c924;this['queue']=_0x5ba96a;this['realtime']=_0x336cf5;this[_0x8004('0x2')]=_0x360fff;this[_0x8004('0x4')][_0x8004('0x5')](this['handleRun'][_0x8004('0x6')](this),this[_0x8004('0x7')][_0x8004('0x6')](this));this['squeue']['on']('timeout',this['handleTimeout'][_0x8004('0x6')](this));this['squeue']['on']('drained',this[_0x8004('0x8')][_0x8004('0x6')](this));};Beepall['prototype']['push']=function(){this[_0x8004('0x4')][_0x8004('0x5')](this[_0x8004('0x9')][_0x8004('0x6')](this),this[_0x8004('0x7')][_0x8004('0x6')](this));};Beepall[_0x8004('0xa')]['handleDrained']=function(_0x26dde8){this[_0x8004('0x7')](!![]);};Beepall[_0x8004('0xa')][_0x8004('0x9')]=function(_0x235819){var _0xc47c27=!![];if(!_[_0x8004('0xb')](this[_0x8004('0xc')])&&!_[_0x8004('0xb')](this[_0x8004('0xc')][_0x8004('0xd')])&&this[_0x8004('0xc')][_0x8004('0xd')][_0x8004('0xe')]>0x0){for(var _0x205ff9=0x0,_0x3f3b43;_0x205ff9<this[_0x8004('0xc')][_0x8004('0xd')][_0x8004('0xe')];_0x205ff9+=0x1){_0x3f3b43=this['queue'][_0x8004('0xd')][_0x205ff9]['id'];if(_[_0x8004('0xb')](this['realtime'][_0x8004('0xf')][_0x3f3b43])){logger[_0x8004('0x10')](_0x8004('0x11'),this[_0x8004('0x4')]['id'],_0x3f3b43);}else{if(util[_0x8004('0x12')](this[_0x8004('0x4')]['id'],this[_0x8004('0x13')][_0x8004('0xf')][_0x3f3b43],this[_0x8004('0x4')][_0x8004('0x14')],!![])){_0xc47c27=![];util['writeLog'](this['squeue']['id'],this['realtime'][_0x8004('0xf')][_0x3f3b43],_0x8004('0x15'));this['realtime'][_0x8004('0xf')][_0x3f3b43][_0x8004('0x16')]=!![];this[_0x8004('0x13')][_0x8004('0xf')][_0x3f3b43][_0x8004('0x17')]=this[_0x8004('0xc')]['name'];util[_0x8004('0x18')](this[_0x8004('0x3')],this['squeue']['id'],this[_0x8004('0x13')][_0x8004('0xf')][_0x3f3b43],this[_0x8004('0xc')],this[_0x8004('0x2')]);}}}if(_0xc47c27){logger['info']('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0x8004('0x4')]['id']);setTimeout(this[_0x8004('0x5')]['bind'](this),0x3e8);}}else{logger[_0x8004('0x10')](_0x8004('0x19'),this[_0x8004('0x4')]['id']);setTimeout(this[_0x8004('0x5')][_0x8004('0x6')](this),0x3e8);}};Beepall['prototype'][_0x8004('0x7')]=function(_0x53de79){if(!_[_0x8004('0xb')](this['queue'])&&!_['isNil'](this['queue'][_0x8004('0xd')])){for(var _0x3dff63=0x0,_0x53c21a;_0x3dff63<this[_0x8004('0xc')][_0x8004('0xd')][_0x8004('0xe')];_0x3dff63+=0x1){_0x53c21a=this[_0x8004('0xc')][_0x8004('0xd')][_0x3dff63]['id'];if(_[_0x8004('0xb')](this[_0x8004('0x13')][_0x8004('0xf')][_0x53c21a])){logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],_0x53c21a);}else{util['hideNotification'](this[_0x8004('0x3')],this[_0x8004('0x4')]['id'],this[_0x8004('0x13')][_0x8004('0xf')][_0x53c21a],this['queue'],this[_0x8004('0x2')]);util['writeLog'](this[_0x8004('0x4')]['id'],this[_0x8004('0x13')][_0x8004('0xf')][_0x53c21a],_0x53de79?'STOP':_0x8004('0x1a'));this[_0x8004('0x13')][_0x8004('0xf')][_0x53c21a][_0x8004('0x16')]=![];this[_0x8004('0x13')][_0x8004('0xf')][_0x53c21a][_0x8004('0x17')]=undefined;}}}if(!_0x53de79){setTimeout(this[_0x8004('0x5')]['bind'](this),0x3e8);}};function beepall(_0xad3eb3,_0x2b0568,_0x19c376,_0x9c012d){return new Beepall(_0xad3eb3,_0x2b0568,_0x19c376,_0x9c012d);}module['exports']=beepall;
\ No newline at end of file
+var _0xa381=['Agents','length','realtime','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','channel','writeLog','RINGING','busy','busyQueue','name','showNotification','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','TIMEOUT','exports','lodash','uuid','routing','notificationId','squeue','queue','handleRun','handleTimeout','bind','timeout','drained','handleDrained','prototype','push','isNil'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa381,0x79));var _0x1a38=function(_0x28c89b,_0x2510b3){_0x28c89b=_0x28c89b-0x0;var _0x176500=_0xa381[_0x28c89b];return _0x176500;};'use strict';var _=require(_0x1a38('0x0'));var uuid=require(_0x1a38('0x1'));var util=require('./util');var logger=require('../../../../../config/logger')(_0x1a38('0x2'));var Beepall=function(_0xe2d8b3,_0x2a069e,_0x577ade,_0x2a4353){this[_0x1a38('0x3')]=uuid['v4']();this[_0x1a38('0x4')]=_0xe2d8b3;this[_0x1a38('0x5')]=_0x2a069e;this['realtime']=_0x577ade;this[_0x1a38('0x2')]=_0x2a4353;this['squeue']['push'](this[_0x1a38('0x6')]['bind'](this),this[_0x1a38('0x7')][_0x1a38('0x8')](this));this[_0x1a38('0x4')]['on'](_0x1a38('0x9'),this['handleTimeout'][_0x1a38('0x8')](this));this[_0x1a38('0x4')]['on'](_0x1a38('0xa'),this[_0x1a38('0xb')][_0x1a38('0x8')](this));};Beepall[_0x1a38('0xc')][_0x1a38('0xd')]=function(){this[_0x1a38('0x4')][_0x1a38('0xd')](this[_0x1a38('0x6')][_0x1a38('0x8')](this),this[_0x1a38('0x7')][_0x1a38('0x8')](this));};Beepall[_0x1a38('0xc')][_0x1a38('0xb')]=function(_0xcc3d38){this[_0x1a38('0x7')](!![]);};Beepall[_0x1a38('0xc')][_0x1a38('0x6')]=function(_0x172dfd){var _0x39d7fd=!![];if(!_[_0x1a38('0xe')](this[_0x1a38('0x5')])&&!_['isNil'](this['queue'][_0x1a38('0xf')])&&this['queue'][_0x1a38('0xf')][_0x1a38('0x10')]>0x0){for(var _0x44a325=0x0,_0x30bc2f;_0x44a325<this[_0x1a38('0x5')][_0x1a38('0xf')][_0x1a38('0x10')];_0x44a325+=0x1){_0x30bc2f=this[_0x1a38('0x5')][_0x1a38('0xf')][_0x44a325]['id'];if(_['isNil'](this[_0x1a38('0x11')]['agents'][_0x30bc2f])){logger[_0x1a38('0x12')](_0x1a38('0x13'),this['squeue']['id'],_0x30bc2f);}else{if(util[_0x1a38('0x14')](this['squeue']['id'],this['realtime'][_0x1a38('0x15')][_0x30bc2f],this[_0x1a38('0x4')][_0x1a38('0x16')],!![])){_0x39d7fd=![];util[_0x1a38('0x17')](this['squeue']['id'],this[_0x1a38('0x11')][_0x1a38('0x15')][_0x30bc2f],_0x1a38('0x18'));this['realtime'][_0x1a38('0x15')][_0x30bc2f][_0x1a38('0x19')]=!![];this[_0x1a38('0x11')][_0x1a38('0x15')][_0x30bc2f][_0x1a38('0x1a')]=this[_0x1a38('0x5')][_0x1a38('0x1b')];util[_0x1a38('0x1c')](this[_0x1a38('0x3')],this[_0x1a38('0x4')]['id'],this['realtime'][_0x1a38('0x15')][_0x30bc2f],this['queue'],this[_0x1a38('0x2')]);}}}if(_0x39d7fd){logger[_0x1a38('0x12')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0x1a38('0x4')]['id']);setTimeout(this['push'][_0x1a38('0x8')](this),0x3e8);}}else{logger[_0x1a38('0x12')](_0x1a38('0x1d'),this['squeue']['id']);setTimeout(this['push'][_0x1a38('0x8')](this),0x3e8);}};Beepall[_0x1a38('0xc')][_0x1a38('0x7')]=function(_0x45f54e){if(!_[_0x1a38('0xe')](this[_0x1a38('0x5')])&&!_[_0x1a38('0xe')](this[_0x1a38('0x5')]['Agents'])){for(var _0x5680bd=0x0,_0x1c940c;_0x5680bd<this[_0x1a38('0x5')][_0x1a38('0xf')][_0x1a38('0x10')];_0x5680bd+=0x1){_0x1c940c=this[_0x1a38('0x5')][_0x1a38('0xf')][_0x5680bd]['id'];if(_[_0x1a38('0xe')](this['realtime'][_0x1a38('0x15')][_0x1c940c])){logger['info'](_0x1a38('0x13'),this[_0x1a38('0x4')]['id'],_0x1c940c);}else{util[_0x1a38('0x1e')](this[_0x1a38('0x3')],this[_0x1a38('0x4')]['id'],this['realtime'][_0x1a38('0x15')][_0x1c940c],this[_0x1a38('0x5')],this[_0x1a38('0x2')]);util[_0x1a38('0x17')](this[_0x1a38('0x4')]['id'],this[_0x1a38('0x11')]['agents'][_0x1c940c],_0x45f54e?_0x1a38('0x1f'):_0x1a38('0x20'));this[_0x1a38('0x11')]['agents'][_0x1c940c][_0x1a38('0x19')]=![];this[_0x1a38('0x11')]['agents'][_0x1c940c]['busyQueue']=undefined;}}}if(!_0x45f54e){setTimeout(this[_0x1a38('0xd')][_0x1a38('0x8')](this),0x3e8);}};function beepall(_0x1786ae,_0x29a32b,_0x490ab4,_0x5b4200){return new Beepall(_0x1786ae,_0x29a32b,_0x490ab4,_0x5b4200);}module[_0x1a38('0x21')]=beepall;
\ No newline at end of file
index 1c3af1d..eeff65d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a9a=['exports','./beepall','./agent'];(function(_0x477512,_0x2a55fc){var _0x2502d5=function(_0x428170){while(--_0x428170){_0x477512['push'](_0x477512['shift']());}};_0x2502d5(++_0x2a55fc);}(_0x2a9a,0x10b));var _0xa2a9=function(_0x140182,_0x4516c0){_0x140182=_0x140182-0x0;var _0x294023=_0x2a9a[_0x140182];return _0x294023;};'use strict';module[_0xa2a9('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0xa2a9('0x1')),'agent':require(_0xa2a9('0x2'))};
\ No newline at end of file
+var _0x9274=['./beepall','./agent','exports','./rrmemory'];(function(_0x46eec6,_0x595bab){var _0x4cf7b0=function(_0xbb89d6){while(--_0xbb89d6){_0x46eec6['push'](_0x46eec6['shift']());}};_0x4cf7b0(++_0x595bab);}(_0x9274,0x92));var _0x4927=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x9274[_0x3bf83f];return _0x22c4a9;};'use strict';module[_0x4927('0x0')]={'rrmemory':require(_0x4927('0x1')),'beepall':require(_0x4927('0x2')),'agent':require(_0x4927('0x3'))};
\ No newline at end of file
index d1606a7..b9c3b64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aef=['handleRun','bind','module','timeout','handleTimeout','squeue','drained','handleDrained','prototype','push','handleCheckReject','isAgentAvailable','realtime','agents','agentId','info','[%s][QUEUE]\x20available\x20again\x20%s','queue','mapAgentsId','isNil','done','channel','busy','busyQueue','showNotification','writeLog','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','TIMEOUT','exports','uuid','routing','notificationId','intervals'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7aef,0x1dd));var _0xf7ae=function(_0x1a5e71,_0x52d352){_0x1a5e71=_0x1a5e71-0x0;var _0x109f5c=_0x7aef[_0x1a5e71];return _0x109f5c;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require(_0xf7ae('0x0'));var util=require('./util');var logger=require('../../../../../config/logger')(_0xf7ae('0x1'));var RRMemory=function(_0x45e62a,_0x7e056f,_0x1129b8,_0x3dbf09){this[_0xf7ae('0x2')]=uuid['v4']();this['squeue']=_0x45e62a;this['queue']=_0x7e056f;this['realtime']=_0x1129b8;this[_0xf7ae('0x1')]=_0x3dbf09;this[_0xf7ae('0x3')]={};this['squeue']['push'](this[_0xf7ae('0x4')][_0xf7ae('0x5')](this),this['handleTimeout']['bind'](this),this[_0xf7ae('0x6')]);this['squeue']['on'](_0xf7ae('0x7'),this[_0xf7ae('0x8')][_0xf7ae('0x5')](this));this[_0xf7ae('0x9')]['on'](_0xf7ae('0xa'),this[_0xf7ae('0xb')][_0xf7ae('0x5')](this));};RRMemory[_0xf7ae('0xc')][_0xf7ae('0xd')]=function(){this[_0xf7ae('0x9')][_0xf7ae('0xd')](this[_0xf7ae('0x4')][_0xf7ae('0x5')](this),this['handleTimeout'][_0xf7ae('0x5')](this));};RRMemory[_0xf7ae('0xc')]['handleDrained']=function(_0x319601){this['handleTimeout'](!![]);};RRMemory[_0xf7ae('0xc')][_0xf7ae('0xe')]=function(_0x5df1e7){if(util[_0xf7ae('0xf')](this['squeue']['id'],this[_0xf7ae('0x10')][_0xf7ae('0x11')][this[_0xf7ae('0x12')]],this['squeue']['channel'],!![])){logger[_0xf7ae('0x13')](_0xf7ae('0x14'),this[_0xf7ae('0x9')]['id'],this[_0xf7ae('0x12')]);clearInterval(this[_0xf7ae('0x3')][this['agentId']]);_0x5df1e7['done']();setTimeout(this[_0xf7ae('0xd')][_0xf7ae('0x5')](this),0x3e8);}};RRMemory['prototype'][_0xf7ae('0x4')]=function(_0x24f7b1){this[_0xf7ae('0x12')]=rr(this[_0xf7ae('0x15')][_0xf7ae('0x16')]);logger[_0xf7ae('0x13')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0xf7ae('0x9')]['id'],this[_0xf7ae('0x12')]);if(_[_0xf7ae('0x17')](this[_0xf7ae('0x10')][_0xf7ae('0x11')][this['agentId']])){logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0xf7ae('0x12')]);_0x24f7b1[_0xf7ae('0x18')]();setTimeout(this[_0xf7ae('0xd')][_0xf7ae('0x5')](this),0x3e8);}else{if(util[_0xf7ae('0xf')](this[_0xf7ae('0x9')]['id'],this['realtime'][_0xf7ae('0x11')][this[_0xf7ae('0x12')]],this[_0xf7ae('0x9')][_0xf7ae('0x19')],!![])){this['realtime'][_0xf7ae('0x11')][this[_0xf7ae('0x12')]][_0xf7ae('0x1a')]=!![];this[_0xf7ae('0x10')][_0xf7ae('0x11')][this['agentId']][_0xf7ae('0x1b')]=this['queue']['name'];util[_0xf7ae('0x1c')](this[_0xf7ae('0x2')],this['squeue']['id'],this[_0xf7ae('0x10')][_0xf7ae('0x11')][this['agentId']],this[_0xf7ae('0x15')],this[_0xf7ae('0x1')]);util[_0xf7ae('0x1d')](this[_0xf7ae('0x9')]['id'],this[_0xf7ae('0x10')]['agents'][this[_0xf7ae('0x12')]],_0xf7ae('0x1e'));this[_0xf7ae('0x3')][this[_0xf7ae('0x12')]]=setInterval(this['handleCheckReject'][_0xf7ae('0x5')](this,_0x24f7b1),0x3e8);}else{logger[_0xf7ae('0x13')](_0xf7ae('0x1f'),this['squeue']['id'],this[_0xf7ae('0x12')]);_0x24f7b1[_0xf7ae('0x18')]();setTimeout(this[_0xf7ae('0xd')]['bind'](this),0x3e8);}}};RRMemory[_0xf7ae('0xc')][_0xf7ae('0x8')]=function(_0x315029){logger[_0xf7ae('0x13')](_0xf7ae('0x20'),this[_0xf7ae('0x9')]['id'],this[_0xf7ae('0x12')]);if(_[_0xf7ae('0x17')](this[_0xf7ae('0x10')][_0xf7ae('0x11')][this[_0xf7ae('0x12')]])){logger[_0xf7ae('0x13')](_0xf7ae('0x21'),this['squeue']['id'],this[_0xf7ae('0x12')]);}else{clearInterval(this['intervals'][this[_0xf7ae('0x12')]]);util[_0xf7ae('0x22')](this[_0xf7ae('0x2')],this[_0xf7ae('0x9')]['id'],this[_0xf7ae('0x10')][_0xf7ae('0x11')][this[_0xf7ae('0x12')]],this[_0xf7ae('0x15')],this[_0xf7ae('0x1')]);util['writeLog'](this['squeue']['id'],this[_0xf7ae('0x10')][_0xf7ae('0x11')][this[_0xf7ae('0x12')]],_0xf7ae('0x23'));this[_0xf7ae('0x10')][_0xf7ae('0x11')][this[_0xf7ae('0x12')]][_0xf7ae('0x1a')]=![];this['realtime']['agents'][this[_0xf7ae('0x12')]]['busyQueue']=undefined;}if(!_0x315029){setTimeout(this[_0xf7ae('0xd')][_0xf7ae('0x5')](this),0x3e8);}};function rrmemory(_0x28a3aa,_0x97c4c,_0x3d1e,_0x27960c){return new RRMemory(_0x28a3aa,_0x97c4c,_0x3d1e,_0x27960c);}module[_0xf7ae('0x24')]=rrmemory;
\ No newline at end of file
+var _0x246a=['drained','handleDrained','prototype','isAgentAvailable','agentId','info','[%s][QUEUE]\x20available\x20again\x20%s','intervals','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','busy','name','showNotification','writeLog','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','hideNotification','exports','lodash','uuid','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push','bind','handleTimeout','module','timeout'];(function(_0x162a3c,_0x54f601){var _0x57703d=function(_0x781c98){while(--_0x781c98){_0x162a3c['push'](_0x162a3c['shift']());}};_0x57703d(++_0x54f601);}(_0x246a,0xc5));var _0xa246=function(_0x6d92ef,_0x10c13f){_0x6d92ef=_0x6d92ef-0x0;var _0x3e20f1=_0x246a[_0x6d92ef];return _0x3e20f1;};'use strict';var rr=require('rr');var _=require(_0xa246('0x0'));var uuid=require(_0xa246('0x1'));var util=require('./util');var logger=require(_0xa246('0x2'))(_0xa246('0x3'));var RRMemory=function(_0x2bfc71,_0xc06aed,_0x2592b,_0x4fd0d4){this[_0xa246('0x4')]=uuid['v4']();this[_0xa246('0x5')]=_0x2bfc71;this[_0xa246('0x6')]=_0xc06aed;this[_0xa246('0x7')]=_0x2592b;this['routing']=_0x4fd0d4;this['intervals']={};this['squeue'][_0xa246('0x8')](this['handleRun'][_0xa246('0x9')](this),this[_0xa246('0xa')][_0xa246('0x9')](this),this[_0xa246('0xb')]);this[_0xa246('0x5')]['on'](_0xa246('0xc'),this[_0xa246('0xa')][_0xa246('0x9')](this));this[_0xa246('0x5')]['on'](_0xa246('0xd'),this[_0xa246('0xe')]['bind'](this));};RRMemory[_0xa246('0xf')]['push']=function(){this[_0xa246('0x5')][_0xa246('0x8')](this['handleRun']['bind'](this),this[_0xa246('0xa')][_0xa246('0x9')](this));};RRMemory['prototype']['handleDrained']=function(_0x43237c){this[_0xa246('0xa')](!![]);};RRMemory['prototype']['handleCheckReject']=function(_0x493bba){if(util[_0xa246('0x10')](this[_0xa246('0x5')]['id'],this[_0xa246('0x7')]['agents'][this[_0xa246('0x11')]],this[_0xa246('0x5')]['channel'],!![])){logger[_0xa246('0x12')](_0xa246('0x13'),this[_0xa246('0x5')]['id'],this['agentId']);clearInterval(this[_0xa246('0x14')][this[_0xa246('0x11')]]);_0x493bba[_0xa246('0x15')]();setTimeout(this[_0xa246('0x8')]['bind'](this),0x3e8);}};RRMemory[_0xa246('0xf')]['handleRun']=function(_0x1d0b5c){this[_0xa246('0x11')]=rr(this[_0xa246('0x6')][_0xa246('0x16')]);logger[_0xa246('0x12')](_0xa246('0x17'),this[_0xa246('0x5')]['id'],this[_0xa246('0x11')]);if(_[_0xa246('0x18')](this[_0xa246('0x7')][_0xa246('0x19')][this['agentId']])){logger[_0xa246('0x12')](_0xa246('0x1a'),this[_0xa246('0x5')]['id'],this[_0xa246('0x11')]);_0x1d0b5c[_0xa246('0x15')]();setTimeout(this[_0xa246('0x8')]['bind'](this),0x3e8);}else{if(util[_0xa246('0x10')](this[_0xa246('0x5')]['id'],this['realtime'][_0xa246('0x19')][this[_0xa246('0x11')]],this['squeue'][_0xa246('0x1b')],!![])){this[_0xa246('0x7')]['agents'][this[_0xa246('0x11')]][_0xa246('0x1c')]=!![];this['realtime']['agents'][this[_0xa246('0x11')]]['busyQueue']=this[_0xa246('0x6')][_0xa246('0x1d')];util[_0xa246('0x1e')](this[_0xa246('0x4')],this[_0xa246('0x5')]['id'],this[_0xa246('0x7')][_0xa246('0x19')][this['agentId']],this[_0xa246('0x6')],this[_0xa246('0x3')]);util[_0xa246('0x1f')](this[_0xa246('0x5')]['id'],this[_0xa246('0x7')]['agents'][this[_0xa246('0x11')]],'RINGING');this['intervals'][this[_0xa246('0x11')]]=setInterval(this['handleCheckReject'][_0xa246('0x9')](this,_0x1d0b5c),0x3e8);}else{logger[_0xa246('0x12')](_0xa246('0x20'),this[_0xa246('0x5')]['id'],this[_0xa246('0x11')]);_0x1d0b5c[_0xa246('0x15')]();setTimeout(this[_0xa246('0x8')][_0xa246('0x9')](this),0x3e8);}}};RRMemory['prototype'][_0xa246('0xa')]=function(_0x5f436e){logger[_0xa246('0x12')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0xa246('0x5')]['id'],this[_0xa246('0x11')]);if(_[_0xa246('0x18')](this[_0xa246('0x7')][_0xa246('0x19')][this[_0xa246('0x11')]])){logger['info'](_0xa246('0x1a'),this[_0xa246('0x5')]['id'],this['agentId']);}else{clearInterval(this[_0xa246('0x14')][this[_0xa246('0x11')]]);util[_0xa246('0x21')](this[_0xa246('0x4')],this[_0xa246('0x5')]['id'],this[_0xa246('0x7')][_0xa246('0x19')][this[_0xa246('0x11')]],this[_0xa246('0x6')],this[_0xa246('0x3')]);util[_0xa246('0x1f')](this[_0xa246('0x5')]['id'],this[_0xa246('0x7')][_0xa246('0x19')][this[_0xa246('0x11')]],'TIMEOUT');this[_0xa246('0x7')][_0xa246('0x19')][this[_0xa246('0x11')]]['busy']=![];this[_0xa246('0x7')][_0xa246('0x19')][this[_0xa246('0x11')]]['busyQueue']=undefined;}if(!_0x5f436e){setTimeout(this[_0xa246('0x8')][_0xa246('0x9')](this),0x3e8);}};function rrmemory(_0x3b9ccf,_0x11efc2,_0x1eb510,_0x5374a9){return new RRMemory(_0x3b9ccf,_0x11efc2,_0x1eb510,_0x5374a9);}module[_0xa246('0x22')]=rrmemory;
\ No newline at end of file
index f5db168..e0608d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81c6=['hideNotification','util','../../../../../config/environment','../../../../../config/logger','routing','defaults','redis','localhost','socket.io-emitter','user:%s','name','emit','user:save','split','\x20interaction','account','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','format','[%s][QUEUE]\x20%s','notification:%s','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','OFFLINE','Pause','PAUSE','hasOwnProperty','Capacity','showNotification'];(function(_0x288ce2,_0xe659e3){var _0x76f196=function(_0x5e5ffa){while(--_0x5e5ffa){_0x288ce2['push'](_0x288ce2['shift']());}};_0x76f196(++_0xe659e3);}(_0x81c6,0x1d5));var _0x681c=function(_0x3bf957,_0x168c65){_0x3bf957=_0x3bf957-0x0;var _0x551cc=_0x81c6[_0x3bf957];return _0x551cc;};'use strict';var _=require('lodash');var util=require(_0x681c('0x0'));var utils=require('../utils');var Mustache=require('mustache');var Redis=require('ioredis');var config=require(_0x681c('0x1'));var logger=require(_0x681c('0x2'))(_0x681c('0x3'));config['redis']=_[_0x681c('0x4')](config[_0x681c('0x5')],{'host':_0x681c('0x6'),'port':0x18eb});var io=require(_0x681c('0x7'))(new Redis(config['redis']));function emit(_0x45331,_0xdc57a5,_0x5624d7){io['to'](_0x45331)['emit'](_0xdc57a5,_0x5624d7);}function sendNotification(_0x1750e2,_0x3fac39,_0x7f090a,_0x5de78e,_0x4f0228,_0x3e3770){io['to'](util['format'](_0x681c('0x8'),_0x5de78e[_0x681c('0x9')]))[_0x681c('0xa')](_0x681c('0xb'),_0x5de78e);var _0x48dc05=_0x3e3770||{};var _0x49729c=_0x7f090a[_0x681c('0xc')]('.');var _0x1d1d5d={'uniqueid':_0x3fac39,'channel':_0x49729c[0x0],'id':_0x49729c[0x1],'title':_0x49729c[0x0]+_0x681c('0xd'),'interactionId':_0x49729c[0x2],'queue':_0x4f0228?_0x4f0228['name']:null,'sound':_0x48dc05[_0x681c('0xe')]['notificationSound'],'shake':_0x48dc05[_0x681c('0xe')]['notificationShake']};try{if(!_0x48dc05[_0x681c('0xf')]){_0x48dc05[_0x681c('0xf')]={};}if(_0x4f0228){_0x48dc05[_0x681c('0xf')][_0x681c('0x10')]=_0x4f0228;}else if(_0x48dc05[_0x681c('0xf')][_0x681c('0x10')]){delete _0x48dc05['body'][_0x681c('0x10')];}_0x1d1d5d[_0x681c('0x11')]=utils[_0x681c('0x12')](_0x48dc05[_0x681c('0xe')][_0x681c('0x13')],_0x48dc05);}catch(_0x1619df){_0x1d1d5d['msg']=_0x681c('0x14');logger[_0x681c('0x15')](util[_0x681c('0x16')](_0x681c('0x17'),_0x3fac39,_0x1619df['message']));}io['to'](util[_0x681c('0x16')](_0x681c('0x8'),_0x5de78e['name']))[_0x681c('0xa')](util['format'](_0x681c('0x18'),_0x1750e2?_0x681c('0x19'):_0x681c('0x1a')),_0x1d1d5d);}function writeLog(_0x33c495,_0x4169b9,_0x51d626){return logger['info'](util['format'](_0x681c('0x1b'),_0x33c495,_0x4169b9[_0x681c('0x9')],_0x51d626));}exports[_0x681c('0x1c')]=function(_0x27b8a0,_0x2ec29f,_0x29f3fa,_0x415a0a){if(_0x2ec29f[_0x681c('0x1d')]){writeLog(_0x27b8a0,_0x2ec29f,_0x681c('0x1e'));return![];}if(!_0x2ec29f[_0x681c('0x1f')]){writeLog(_0x27b8a0,_0x2ec29f,_0x681c('0x20'));return![];}if(_0x2ec29f[_0x29f3fa+_0x681c('0x21')]){writeLog(_0x27b8a0,_0x2ec29f,_0x681c('0x22'));return![];}if(_0x415a0a&&_0x2ec29f[_0x681c('0x23')](_0x29f3fa+_0x681c('0x24'))&&_0x2ec29f[_0x681c('0x23')](_0x29f3fa+'CurrentCapacity')){if(_0x2ec29f[_0x29f3fa+_0x681c('0x24')]>0x0&&_0x2ec29f[_0x29f3fa+'CurrentCapacity']>=_0x2ec29f[_0x29f3fa+_0x681c('0x24')]){writeLog(_0x27b8a0,_0x2ec29f,_0x29f3fa['toUpperCase']()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x681c('0x25')]=function(_0x17ea7c,_0x17e8f3,_0x2f7772,_0x4c9fd0,_0x3b1031){return sendNotification(!![],_0x17ea7c,_0x17e8f3,_0x2f7772,_0x4c9fd0,_0x3b1031);};exports[_0x681c('0x26')]=function(_0x2fde4b,_0x936fce,_0x147cda,_0x204006,_0x2c619f){return sendNotification(![],_0x2fde4b,_0x936fce,_0x147cda,_0x204006,_0x2c619f);};exports['writeLog']=writeLog;
\ No newline at end of file
+var _0x3e24=['hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','showNotification','hideNotification','writeLog','lodash','util','../utils','mustache','ioredis','../../../../../config/logger','routing','defaults','redis','localhost','socket.io-emitter','emit','format','name','split','\x20interaction','account','notificationSound','notificationShake','body','queue','notificationTemplate','msg','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','notification:%s','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','online','OFFLINE','Pause','PAUSE'];(function(_0x336874,_0x164ec5){var _0x47da18=function(_0x1955ce){while(--_0x1955ce){_0x336874['push'](_0x336874['shift']());}};_0x47da18(++_0x164ec5);}(_0x3e24,0x167));var _0x43e2=function(_0x1c2ad3,_0x1105eb){_0x1c2ad3=_0x1c2ad3-0x0;var _0x383430=_0x3e24[_0x1c2ad3];return _0x383430;};'use strict';var _=require(_0x43e2('0x0'));var util=require(_0x43e2('0x1'));var utils=require(_0x43e2('0x2'));var Mustache=require(_0x43e2('0x3'));var Redis=require(_0x43e2('0x4'));var config=require('../../../../../config/environment');var logger=require(_0x43e2('0x5'))(_0x43e2('0x6'));config['redis']=_[_0x43e2('0x7')](config[_0x43e2('0x8')],{'host':_0x43e2('0x9'),'port':0x18eb});var io=require(_0x43e2('0xa'))(new Redis(config[_0x43e2('0x8')]));function emit(_0x121e2e,_0x23b2d8,_0x59956d){io['to'](_0x121e2e)[_0x43e2('0xb')](_0x23b2d8,_0x59956d);}function sendNotification(_0x2357bc,_0x4bd2ce,_0x1c96f9,_0x2fdf85,_0x5375d8,_0x2ed387){io['to'](util[_0x43e2('0xc')]('user:%s',_0x2fdf85[_0x43e2('0xd')]))['emit']('user:save',_0x2fdf85);var _0x5847f0=_0x2ed387||{};var _0x103220=_0x1c96f9[_0x43e2('0xe')]('.');var _0x236b88={'uniqueid':_0x4bd2ce,'channel':_0x103220[0x0],'id':_0x103220[0x1],'title':_0x103220[0x0]+_0x43e2('0xf'),'interactionId':_0x103220[0x2],'queue':_0x5375d8?_0x5375d8[_0x43e2('0xd')]:null,'sound':_0x5847f0[_0x43e2('0x10')][_0x43e2('0x11')],'shake':_0x5847f0[_0x43e2('0x10')][_0x43e2('0x12')]};try{if(!_0x5847f0[_0x43e2('0x13')]){_0x5847f0[_0x43e2('0x13')]={};}if(_0x5375d8){_0x5847f0[_0x43e2('0x13')]['queue']=_0x5375d8;}else if(_0x5847f0[_0x43e2('0x13')][_0x43e2('0x14')]){delete _0x5847f0[_0x43e2('0x13')][_0x43e2('0x14')];}_0x236b88['msg']=utils['getMustacheRender'](_0x5847f0[_0x43e2('0x10')][_0x43e2('0x15')],_0x5847f0);}catch(_0x27aa89){_0x236b88[_0x43e2('0x16')]=_0x43e2('0x17');logger[_0x43e2('0x18')](util[_0x43e2('0xc')](_0x43e2('0x19'),_0x4bd2ce,_0x27aa89[_0x43e2('0x1a')]));}io['to'](util[_0x43e2('0xc')]('user:%s',_0x2fdf85[_0x43e2('0xd')]))[_0x43e2('0xb')](util['format'](_0x43e2('0x1b'),_0x2357bc?'save':_0x43e2('0x1c')),_0x236b88);}function writeLog(_0x13610f,_0x1fac53,_0x23825c){return logger[_0x43e2('0x1d')](util['format'](_0x43e2('0x1e'),_0x13610f,_0x1fac53[_0x43e2('0xd')],_0x23825c));}exports[_0x43e2('0x1f')]=function(_0x52e361,_0x234a1d,_0x32f048,_0x43078f){if(_0x234a1d[_0x43e2('0x20')]){writeLog(_0x52e361,_0x234a1d,'BUSY');return![];}if(!_0x234a1d[_0x43e2('0x21')]){writeLog(_0x52e361,_0x234a1d,_0x43e2('0x22'));return![];}if(_0x234a1d[_0x32f048+_0x43e2('0x23')]){writeLog(_0x52e361,_0x234a1d,_0x43e2('0x24'));return![];}if(_0x43078f&&_0x234a1d[_0x43e2('0x25')](_0x32f048+_0x43e2('0x26'))&&_0x234a1d[_0x43e2('0x25')](_0x32f048+_0x43e2('0x27'))){if(_0x234a1d[_0x32f048+_0x43e2('0x26')]>0x0&&_0x234a1d[_0x32f048+_0x43e2('0x27')]>=_0x234a1d[_0x32f048+_0x43e2('0x26')]){writeLog(_0x52e361,_0x234a1d,_0x32f048[_0x43e2('0x28')]()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x43e2('0x29')]=function(_0x2f2bd8,_0x545246,_0x163063,_0x1883c6,_0x2dffa2){return sendNotification(!![],_0x2f2bd8,_0x545246,_0x163063,_0x1883c6,_0x2dffa2);};exports[_0x43e2('0x2a')]=function(_0x3fd232,_0x5a896b,_0x42f495,_0xd1b43a,_0x1779f9){return sendNotification(![],_0x3fd232,_0x5a896b,_0x42f495,_0xd1b43a,_0x1779f9);};exports[_0x43e2('0x2b')]=writeLog;
\ No newline at end of file
index f9cbc56..b79eb9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fa7=['isObject','shelljs','lodash','routing','string','consequence','validate','length','error','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','[%s][SYSTEM]\x20result\x20code:\x20%s','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','[%s][SYSTEM]\x20%s'];(function(_0x36df7a,_0x329220){var _0x3e995a=function(_0x196451){while(--_0x196451){_0x36df7a['push'](_0x36df7a['shift']());}};_0x3e995a(++_0x329220);}(_0x1fa7,0x151));var _0x71fa=function(_0xb2202a,_0x5f40e4){_0xb2202a=_0xb2202a-0x0;var _0x317b5c=_0x1fa7[_0xb2202a];return _0x317b5c;};'use strict';var schema=require('validate');var sh=require(_0x71fa('0x0'));var _=require(_0x71fa('0x1'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0x71fa('0x2'));var system=schema({'command':{'type':_0x71fa('0x3'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x71fa('0x4')]=function(_0x54b23d,_0x16b019){return function(_0x221113){try{var _0x37353a={'command':_0x16b019[0x0]};var _0x53b7a9=system[_0x71fa('0x5')](_0x37353a,{'typecast':!![]});if(_0x53b7a9[_0x71fa('0x6')]){logger[_0x71fa('0x7')]('[%s][SYSTEM]\x20%s',_0x54b23d,_['map'](_0x53b7a9,_0x71fa('0x8'))[_0x71fa('0x9')](',\x20'));logger[_0x71fa('0xa')](_0x71fa('0xb'),_0x54b23d);_0x221113[_0x71fa('0xc')]();}else{var _0x52a1d0=this;var _0x27b8f9=utils[_0x71fa('0xd')](_0x16b019[0x0],this);logger[_0x71fa('0xa')](_0x71fa('0xe'),_0x54b23d,_0x27b8f9);sh[_0x71fa('0xf')](_['trim'](_0x27b8f9),function(_0x20433e,_0x360c23){logger['info'](_0x71fa('0x10'),_0x54b23d,_0x20433e);if(_0x20433e==0x0){var _0x23751d=_0x360c23['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0x71fa('0x11')](_0x16b019[0x1])||_[_0x71fa('0x12')](_0x16b019[0x1])){logger[_0x71fa('0xa')](_0x71fa('0x13'),_0x54b23d);_0x52a1d0[_0x71fa('0x14')][_0x16b019[0x1]]=_0x23751d;}else{logger[_0x71fa('0xa')](_0x71fa('0x15'),_0x54b23d,_0x16b019[0x1],_0x23751d);_0x52a1d0[_0x71fa('0x14')][_0x16b019[0x1]]=_0x23751d;}}_0x221113['next']();});}}catch(_0x25b825){logger[_0x71fa('0x7')](_0x71fa('0x16'),_0x54b23d,_[_0x71fa('0x17')](_0x25b825)?JSON['stringify'](_0x25b825):_0x25b825);logger['info'](_0x71fa('0xb'),_0x54b23d);_0x221113[_0x71fa('0xc')]();}};};
\ No newline at end of file
+var _0xa67b=['getMustacheRender','info','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','body','stringify','validate','shelljs','lodash','./utils','../../../../config/logger','routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][SYSTEM]\x20%s','map','message','join','next'];(function(_0x457d50,_0x3b9d36){var _0x26e448=function(_0x416358){while(--_0x416358){_0x457d50['push'](_0x457d50['shift']());}};_0x26e448(++_0x3b9d36);}(_0xa67b,0x14a));var _0xba67=function(_0x2e9f33,_0x117113){_0x2e9f33=_0x2e9f33-0x0;var _0x113668=_0xa67b[_0x2e9f33];return _0x113668;};'use strict';var schema=require(_0xba67('0x0'));var sh=require(_0xba67('0x1'));var _=require(_0xba67('0x2'));var utils=require(_0xba67('0x3'));var logger=require(_0xba67('0x4'))(_0xba67('0x5'));var system=schema({'command':{'type':'string','required':!![],'message':_0xba67('0x6')}});exports[_0xba67('0x7')]=function(_0x5be871,_0x227c69){return function(_0x547272){try{var _0x39baa2={'command':_0x227c69[0x0]};var _0x351b19=system[_0xba67('0x0')](_0x39baa2,{'typecast':!![]});if(_0x351b19[_0xba67('0x8')]){logger[_0xba67('0x9')](_0xba67('0xa'),_0x5be871,_[_0xba67('0xb')](_0x351b19,_0xba67('0xc'))[_0xba67('0xd')](',\x20'));logger['info']('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x5be871);_0x547272[_0xba67('0xe')]();}else{var _0xb00962=this;var _0x573ce4=utils[_0xba67('0xf')](_0x227c69[0x0],this);logger[_0xba67('0x10')]('[%s][SYSTEM]\x20commnad:\x20%s',_0x5be871,_0x573ce4);sh['exec'](_[_0xba67('0x11')](_0x573ce4),function(_0x557cc3,_0x1bc7ac){logger[_0xba67('0x10')](_0xba67('0x12'),_0x5be871,_0x557cc3);if(_0x557cc3==0x0){var _0x413af7=_0x1bc7ac[_0xba67('0x13')](/(\r\n|\n|\r)/gm,'');if(_[_0xba67('0x14')](_0x227c69[0x1])||_['isEmpty'](_0x227c69[0x1])){logger[_0xba67('0x10')]('[%s][SYSTEM]\x20no\x20variable',_0x5be871);_0xb00962[_0xba67('0x15')][_0x227c69[0x1]]=_0x413af7;}else{logger['info']('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x5be871,_0x227c69[0x1],_0x413af7);_0xb00962[_0xba67('0x15')][_0x227c69[0x1]]=_0x413af7;}}_0x547272[_0xba67('0xe')]();});}}catch(_0x529634){logger['error'](_0xba67('0xa'),_0x5be871,_['isObject'](_0x529634)?JSON[_0xba67('0x16')](_0x529634):_0x529634);logger[_0xba67('0x10')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x5be871);_0x547272[_0xba67('0xe')]();}};};
\ No newline at end of file
index a42d20a..377eb84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45e9=['[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','error','stringify','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','next','isObject','validate','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','[%s][TAG]\x20%s','map','message','join','channel','Interaction','addTags','interaction','then'];(function(_0xaf39f1,_0x386ada){var _0xbb039f=function(_0x3fec4e){while(--_0x3fec4e){_0xaf39f1['push'](_0xaf39f1['shift']());}};_0xbb039f(++_0x386ada);}(_0x45e9,0x1d3));var _0x945e=function(_0x3df407,_0x8e0639){_0x3df407=_0x3df407-0x0;var _0x299b84=_0x45e9[_0x3df407];return _0x299b84;};'use strict';var schema=require(_0x945e('0x0'));var _=require('lodash');var rpc={'chatInteraction':require(_0x945e('0x1')),'openchannelInteraction':require(_0x945e('0x2')),'smsInteraction':require(_0x945e('0x3')),'mailInteraction':require(_0x945e('0x4')),'faxInteraction':require(_0x945e('0x5')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var logger=require('../../../../config/logger')(_0x945e('0x6'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0x945e('0x7')}});exports[_0x945e('0x8')]=function(_0x33d812,_0x127697,_0x1cf8e9,_0x4f84b7){return function(_0x178e94){try{var _0x42878b={'tag':_0x127697[0x0]};var _0x5041d9=tag[_0x945e('0x0')](_0x42878b,{'typecast':!![]});if(_0x5041d9[_0x945e('0x9')]){logger['error'](_0x945e('0xa'),_0x33d812,_[_0x945e('0xb')](_0x5041d9,_0x945e('0xc'))[_0x945e('0xd')](',\x20'));logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x33d812);_0x178e94['next']();}else{var _0x534880={'ids':[_0x127697[0x0]]};if(rpc[_0x4f84b7[_0x945e('0xe')]+_0x945e('0xf')]){rpc[_0x4f84b7[_0x945e('0xe')]+_0x945e('0xf')][_0x945e('0x10')](_0x4f84b7[_0x945e('0x11')]['id'],_0x534880)[_0x945e('0x12')](function(_0x29c2e8){logger['info'](_0x945e('0x13'),_0x33d812,_0x127697[0x1],_0x4f84b7[_0x945e('0xe')],_0x4f84b7['interaction']['id']);})['catch'](function(_0xab378d){logger[_0x945e('0x14')](_0x945e('0xa'),_0x33d812,JSON[_0x945e('0x15')](_0xab378d));logger[_0x945e('0x16')](_0x945e('0x17'),_0x33d812);})[_0x945e('0x18')](function(){_0x178e94[_0x945e('0x19')]();});}}}catch(_0x227b21){logger[_0x945e('0x14')](_0x945e('0xa'),_0x33d812,_[_0x945e('0x1a')](_0x227b21)?JSON[_0x945e('0x15')](_0x227b21):_0x227b21);logger[_0x945e('0x16')](_0x945e('0x17'),_0x33d812);_0x178e94[_0x945e('0x19')]();}};};
\ No newline at end of file
+var _0x5348=['consequence','length','error','[%s][TAG]\x20%s','map','message','join','info','next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','isObject','validate','lodash','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'];(function(_0x5454bb,_0x5c2097){var _0x3ca5aa=function(_0x5a3981){while(--_0x5a3981){_0x5454bb['push'](_0x5454bb['shift']());}};_0x3ca5aa(++_0x5c2097);}(_0x5348,0xaa));var _0x8534=function(_0x15a2b5,_0x466eeb){_0x15a2b5=_0x15a2b5-0x0;var _0x58943c=_0x5348[_0x15a2b5];return _0x58943c;};'use strict';var schema=require(_0x8534('0x0'));var _=require(_0x8534('0x1'));var rpc={'chatInteraction':require(_0x8534('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x8534('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x8534('0x4')),'whatsappInteraction':require(_0x8534('0x5'))};var logger=require(_0x8534('0x6'))(_0x8534('0x7'));var tag=schema({'tag':{'type':_0x8534('0x8'),'required':!![],'message':_0x8534('0x9')}});exports[_0x8534('0xa')]=function(_0x4e24cc,_0x12073b,_0x14531f,_0x1ac174){return function(_0x3e4d54){try{var _0x2d7097={'tag':_0x12073b[0x0]};var _0x3ee7df=tag[_0x8534('0x0')](_0x2d7097,{'typecast':!![]});if(_0x3ee7df[_0x8534('0xb')]){logger[_0x8534('0xc')](_0x8534('0xd'),_0x4e24cc,_[_0x8534('0xe')](_0x3ee7df,_0x8534('0xf'))[_0x8534('0x10')](',\x20'));logger[_0x8534('0x11')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x4e24cc);_0x3e4d54[_0x8534('0x12')]();}else{var _0x46a485={'ids':[_0x12073b[0x0]]};if(rpc[_0x1ac174[_0x8534('0x13')]+_0x8534('0x14')]){rpc[_0x1ac174[_0x8534('0x13')]+_0x8534('0x14')][_0x8534('0x15')](_0x1ac174[_0x8534('0x16')]['id'],_0x46a485)[_0x8534('0x17')](function(_0xe8d078){logger[_0x8534('0x11')](_0x8534('0x18'),_0x4e24cc,_0x12073b[0x1],_0x1ac174[_0x8534('0x13')],_0x1ac174[_0x8534('0x16')]['id']);})[_0x8534('0x19')](function(_0x31a02d){logger[_0x8534('0xc')]('[%s][TAG]\x20%s',_0x4e24cc,JSON[_0x8534('0x1a')](_0x31a02d));logger['info'](_0x8534('0x1b'),_0x4e24cc);})[_0x8534('0x1c')](function(){_0x3e4d54[_0x8534('0x12')]();});}}}catch(_0x24f7bb){logger[_0x8534('0xc')](_0x8534('0xd'),_0x4e24cc,_[_0x8534('0x1d')](_0x24f7bb)?JSON['stringify'](_0x24f7bb):_0x24f7bb);logger[_0x8534('0x11')](_0x8534('0x1b'),_0x4e24cc);_0x3e4d54['next']();}};};
\ No newline at end of file
index affe841..1717f39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0x5a894f,_0x1690f5){var _0x413a82=function(_0x4fefb5){while(--_0x4fefb5){_0x5a894f['push'](_0x5a894f['shift']());}};_0x413a82(++_0x1690f5);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
+var _0x9c44=['merge','body','account','list','exports','render'];(function(_0x522539,_0x111ed0){var _0x3f81bc=function(_0x119604){while(--_0x119604){_0x522539['push'](_0x522539['shift']());}};_0x3f81bc(++_0x111ed0);}(_0x9c44,0x178));var _0x49c4=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x9c44[_0x36c5b0];return _0xf19333;};'use strict';var Mustache=require('mustache');var _=require('lodash');module[_0x49c4('0x0')]={'getMustacheRender':function(_0x18bf2d,_0x26844b){return Mustache[_0x49c4('0x1')](_0x18bf2d,_[_0x49c4('0x2')](_0x26844b[_0x49c4('0x3')],{'contact':_0x26844b['contact'],'message':_0x26844b['message'],'account':_0x26844b[_0x49c4('0x4')],'interaction':_0x26844b['interaction'],'list':_0x26844b[_0x49c4('0x5')]}))||'';}};
\ No newline at end of file
index fa64d9e..ad377e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96f9=['127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','IntervalId','isNil','Intervals','map','interval','listen','rules','message','interaction','applications','isArray','length','existsSync','app','.js','toLowerCase','autoreply','appdata','channel','push','slice','dialogflow','split','join','dialogflowv2','amazonlex','tag','format','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','priority','Push\x20new\x20rule','\x20|\x20','error','execute','info','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busyQueue','QueueReport','update','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','busy','end','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','paused','waiting','mailQueues','openchannelQueues','loggedIn','name','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http'];(function(_0x59de9e,_0x3bf96f){var _0x853d5a=function(_0x3770a5){while(--_0x3770a5){_0x59de9e['push'](_0x59de9e['shift']());}};_0x853d5a(++_0x3bf96f);}(_0x96f9,0x64));var _0x996f=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x96f9[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x996f('0x0'));var util=require(_0x996f('0x1'));var path=require(_0x996f('0x2'));var fs=require('fs');var jayson=require(_0x996f('0x3'));var BPromise=require(_0x996f('0x4'));var uuid=require(_0x996f('0x5'));var config=require(_0x996f('0x6'));var logger=require(_0x996f('0x7'))(_0x996f('0x8'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x996f('0x9')),'chatQueueReport':require(_0x996f('0xa')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0x996f('0xb')),'whatsappQueueReport':require(_0x996f('0xc'))};var RuleEngine=require(_0x996f('0xd'));function getId(_0x5d6b3d,_0x5cddab,_0x599ee0){return util['format']('%s.%s.%s',_0x5d6b3d,_0x5cddab||0x0,_0x599ee0||0x0);}function getIntervals(_0x304dc6,_0x120c79){var _0x226986=[];if(!_['isNil'](_0x120c79[_0x996f('0xe')])&&!_[_0x996f('0xf')](_0x304dc6[_0x120c79[_0x996f('0xe')]])&&!_[_0x996f('0xf')](_0x304dc6[_0x120c79['IntervalId']][_0x996f('0x10')])){_0x226986=_[_0x996f('0x11')](_0x304dc6[_0x120c79['IntervalId']][_0x996f('0x10')],'interval');}else if(!_[_0x996f('0xf')](_0x120c79[_0x996f('0x12')])){_0x226986=[_0x120c79['interval']];}return _0x226986;}exports[_0x996f('0x13')]=function(_0x535a83){_0x535a83[_0x996f('0x14')]={};return new BPromise(function(_0x9318b8,_0x1262b3){var _0x237501={'Start':function(_0x5b129a){var _0x46e8ce=this;return new Promise(function(_0x105920,_0x4e5527){if(_0x5b129a){try{var _0xfb9eac=[];var _0x5dea4c=getId(_0x5b129a['channel'],_0x5b129a[_0x996f('0x15')]?_0x5b129a[_0x996f('0x15')]['id']:0x0,_0x5b129a[_0x996f('0x16')]?_0x5b129a['interaction']['id']:0x0);if(_0x5b129a[_0x996f('0x17')]&&_[_0x996f('0x18')](_0x5b129a['applications'])&&_0x5b129a[_0x996f('0x17')][_0x996f('0x19')]){for(var _0x3f4015=0x0;_0x3f4015<_0x5b129a[_0x996f('0x17')]['length'];_0x3f4015+=0x1){var _0x10efb6=_0x5b129a['applications'][_0x3f4015];if(fs[_0x996f('0x1a')](path['join'](__dirname,_0x996f('0x17'),_0x10efb6[_0x996f('0x1b')]+_0x996f('0x1c')))){var _0x4273b0=[];switch(_0x10efb6[_0x996f('0x1b')][_0x996f('0x1d')]()){case _0x996f('0x1e'):var _0x816890=_0x10efb6[_0x996f('0x1f')]['split'](',');if(_0x5b129a[_0x996f('0x20')]==='mail'){_0x4273b0[_0x996f('0x21')](_0x816890[0x0]);_0x4273b0[_0x996f('0x21')](_0x816890[0x1]);_0x4273b0['push'](_0x816890[_0x996f('0x22')](0x2,_0x816890[_0x996f('0x19')])['join'](','));}else{_0x4273b0['push'](_0x816890[0x0]);_0x4273b0['push'](_0x816890[_0x996f('0x22')](0x1,_0x816890[_0x996f('0x19')])['join'](','));}break;case _0x996f('0x23'):var _0x4b251c=_0x10efb6['appdata'][_0x996f('0x24')](',');_0x4273b0[_0x996f('0x21')](_0x4b251c[0x0]);_0x4273b0[_0x996f('0x21')](_0x4b251c[0x1]);_0x4273b0[_0x996f('0x21')](_0x4b251c[_0x996f('0x22')](0x2,_0x4b251c[_0x996f('0x19')])[_0x996f('0x25')](','));break;case _0x996f('0x26'):var _0x23ecb0=_0x10efb6[_0x996f('0x1f')][_0x996f('0x24')](',');_0x4273b0[_0x996f('0x21')](_0x23ecb0[0x0]);_0x4273b0[_0x996f('0x21')](_0x23ecb0[0x1]);_0x4273b0['push'](_0x23ecb0[0x2]);_0x4273b0[_0x996f('0x21')](_0x23ecb0[0x3]);_0x4273b0[_0x996f('0x21')](_0x23ecb0[_0x996f('0x22')](0x4,_0x23ecb0[_0x996f('0x19')])['join'](','));break;case _0x996f('0x27'):var _0x412567=_0x10efb6[_0x996f('0x1f')][_0x996f('0x24')](',');_0x4273b0['push'](_0x412567[0x0]);_0x4273b0['push'](_0x412567[0x1]);_0x4273b0[_0x996f('0x21')](_0x412567[0x2]);_0x4273b0[_0x996f('0x21')](_0x412567[0x3]);_0x4273b0[_0x996f('0x21')](_0x412567[_0x996f('0x22')](0x4,_0x412567[_0x996f('0x19')])[_0x996f('0x25')](','));break;case _0x996f('0x15'):_0x4273b0[_0x996f('0x21')](_0x10efb6[_0x996f('0x1f')]);break;case _0x996f('0x28'):_0x4273b0[_0x996f('0x21')](_0x10efb6['TagId']);_0x4273b0[_0x996f('0x21')](_0x10efb6[_0x996f('0x1f')]);break;default:_0x4273b0=_[_0x996f('0xf')](_0x10efb6[_0x996f('0x1f')])?[]:_0x10efb6[_0x996f('0x1f')][_0x996f('0x24')](',');}var _0x47802a={'id':util[_0x996f('0x29')](_0x996f('0x2a'),_0x5dea4c,_0x10efb6['id'],_0x10efb6['app']),'condition':require(_0x996f('0x2b'))[_0x996f('0x2c')](_0x5dea4c,getIntervals(_0x535a83[_0x996f('0x2d')],_0x10efb6),_0x535a83),'consequence':require(_0x996f('0x2e')+_0x10efb6[_0x996f('0x1b')])[_0x996f('0x2f')](_0x5dea4c,_0x4273b0,_0x535a83,_0x5b129a),'p':_0x10efb6[_0x996f('0x30')]||0x0};logger['info'](_0x996f('0x31'),_0x47802a['id'],'on\x20interval',getIntervals(_0x535a83['intervals'],_0x10efb6)['join'](_0x996f('0x32')));_0xfb9eac['push'](_0x47802a);}else{logger[_0x996f('0x33')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0x996f('0x25')](__dirname,_0x996f('0x17'),_0x10efb6[_0x996f('0x1b')]+_0x996f('0x1c')));}}_0x535a83['rules'][_0x5dea4c]=new RuleEngine(_0xfb9eac);_0x535a83['rules'][_0x5dea4c][_0x996f('0x34')](_0x5b129a,function(_0x4818ca){logger[_0x996f('0x35')]('Applications\x20executed',JSON[_0x996f('0x36')](_0x4818ca[_0x996f('0x37')]));if(_0x535a83[_0x996f('0x14')][_0x5dea4c]){_0x535a83['rules'][_0x5dea4c][_0x996f('0x38')](_0x996f('0x39'));}});return _0x105920({'code':0xc8,'message':_0x5b129a});}else{logger['info'](_0x996f('0x3a'));return _0x105920({'code':0xc8,'message':_0x5b129a});}}catch(_0x37ab24){logger[_0x996f('0x33')](_0x37ab24[_0x996f('0x3b')]);return _0x4e5527(_0x46e8ce[_0x996f('0x33')](0x1f4,_0x37ab24));}}return _0x4e5527(_0x996f('0x3c'));});},'AcceptMessage':function(_0x335569){var _0x49885d=this;return new Promise(function(_0x3476a2,_0x42e457){if(_0x335569['agent']&&_0x335569[_0x996f('0x3d')]['id']){if(_0x535a83[_0x996f('0x3e')][_0x335569[_0x996f('0x3d')]['id']]){_0x535a83[_0x996f('0x3e')][_0x335569[_0x996f('0x3d')]['id']]['busy']=![];_0x535a83['agents'][_0x335569[_0x996f('0x3d')]['id']][_0x996f('0x3f')]=undefined;}}if(_0x335569[_0x996f('0x15')]&&_0x335569[_0x996f('0x15')]['id']){try{var _0x32ea44=getId(_0x335569['channel'],_0x335569['message']?_0x335569[_0x996f('0x15')]['id']:0x0,_0x335569[_0x996f('0x16')]?_0x335569[_0x996f('0x16')]['id']:0x0);if(_0x535a83['rules'][_0x32ea44]){_0x535a83[_0x996f('0x14')][_0x32ea44][_0x996f('0x38')]('end');if(rpc[_0x335569[_0x996f('0x20')]+'QueueReport']){rpc[_0x335569['channel']+_0x996f('0x40')][_0x996f('0x41')](_0x32ea44,{'UserId':_0x335569[_0x996f('0x15')]['UserId']})[_0x996f('0x42')](function(_0x1bbb44){logger[_0x996f('0x33')](_0x996f('0x43'));});}}return _0x3476a2({'code':0xc8,'message':_0x335569});}catch(_0x13b158){logger[_0x996f('0x33')](_0x13b158[_0x996f('0x3b')]);return _0x42e457(_0x49885d[_0x996f('0x33')](0x1f4,_0x13b158));}}logger['error'](_0x996f('0x44'));return _0x42e457(_0x49885d[_0x996f('0x33')](0x1f4,_0x996f('0x44')));});},'RejectMessage':function(_0x4fc423){var _0x24ef49=this;return new Promise(function(_0x46db2b,_0x27e89c){if(_0x4fc423[_0x996f('0x3d')]&&_0x4fc423['agent']['id']){try{if(_0x535a83[_0x996f('0x3e')][_0x4fc423[_0x996f('0x3d')]['id']]){_0x535a83[_0x996f('0x3e')][_0x4fc423[_0x996f('0x3d')]['id']][_0x996f('0x45')]=![];_0x535a83[_0x996f('0x3e')][_0x4fc423[_0x996f('0x3d')]['id']]['busyQueue']=undefined;}return _0x46db2b({'code':0xc8,'message':_0x4fc423});}catch(_0x598c4b){logger[_0x996f('0x33')](_0x598c4b[_0x996f('0x3b')]);return _0x27e89c(_0x24ef49[_0x996f('0x33')](0x1f4,_0x598c4b));}}logger['error'](_0x996f('0x44'));return _0x27e89c(_0x24ef49['error'](0x1f4,_0x996f('0x44')));});},'AbandonInteraction':function(_0x34a4b2){var _0x55bf25=this;return new Promise(function(_0x7edd28,_0x2f9d4b){if(_0x34a4b2[_0x996f('0x20')]&&_0x34a4b2['interaction']&&_0x34a4b2[_0x996f('0x16')]['id']){try{var _0xceb5d0=getId(_0x34a4b2['channel'],_0x34a4b2[_0x996f('0x15')]?_0x34a4b2[_0x996f('0x15')]['id']:0x0,_0x34a4b2[_0x996f('0x16')]?_0x34a4b2[_0x996f('0x16')]['id']:0x0);if(_0x535a83[_0x996f('0x14')][_0xceb5d0]){_0x535a83[_0x996f('0x14')][_0xceb5d0][_0x996f('0x38')](_0x996f('0x46'));}return _0x7edd28({'code':0xc8,'message':_0x34a4b2});}catch(_0x42b26b){logger[_0x996f('0x33')](_0x42b26b[_0x996f('0x3b')]);return _0x2f9d4b(_0x55bf25['error'](0x1f4,_0x42b26b));}}logger[_0x996f('0x33')](_0x996f('0x44'));return _0x2f9d4b(_0x55bf25[_0x996f('0x33')](0x1f4,_0x996f('0x44')));});},'AgentCapacity':function(_0x5b0d82){var _0x4bcf10=this;return new Promise(function(_0x1686d8,_0x1beca3){if(_0x535a83[_0x996f('0x3e')]['hasOwnProperty'](_0x5b0d82['id'])){for(var _0x1e3e5a in _0x5b0d82[_0x996f('0x47')]){if(_0x5b0d82[_0x996f('0x47')]['hasOwnProperty'](_0x1e3e5a)){if(_0x535a83['agents'][_0x5b0d82['id']][_0x996f('0x48')](_0x1e3e5a+_0x996f('0x49'))){_0x535a83[_0x996f('0x3e')][_0x5b0d82['id']][_0x1e3e5a+_0x996f('0x49')]=parseInt(_0x5b0d82[_0x996f('0x47')][_0x1e3e5a],0xa);}}}_0x535a83['agents'][_0x5b0d82['id']][_0x996f('0x4a')]();return _0x1686d8({'code':0xc8,'message':_0x535a83[_0x996f('0x3e')][_0x5b0d82['id']]});}else{return _0x1beca3(_0x4bcf10[_0x996f('0x33')](0x1f4,_0x996f('0x4b')));}});},'Agents':function(_0x2fa3f2){return new Promise(function(_0x5e1f54,_0x3206e7){var _0x40fb51=_[_0x996f('0x4c')](_0x535a83[_0x996f('0x3e')]);_0x5e1f54({'count':_0x40fb51[_0x996f('0x19')],'rows':_0x40fb51});});},'ChatQueues':function(_0x1f9022){return new Promise(function(_0x4f4430,_0x30d37f){var _0x632aef=[];for(var _0x5ea2ce in _0x535a83[_0x996f('0x4d')]){if(_0x535a83[_0x996f('0x4d')][_0x996f('0x48')](_0x5ea2ce)){var _0x61d4fb=_0x535a83[_0x996f('0x4d')][_0x5ea2ce];var _0x182366={'id':_0x61d4fb['id'],'available':_0x61d4fb[_0x996f('0x4e')],'loggedIn':_0x61d4fb['loggedIn'],'name':_0x61d4fb['name'],'paused':_0x61d4fb[_0x996f('0x4f')],'waiting':_0x61d4fb[_0x996f('0x50')]};_0x632aef[_0x996f('0x21')](_0x182366);}}_0x4f4430({'count':_0x632aef['length'],'rows':_0x632aef});});},'MailQueues':function(_0x28d4b2){return new Promise(function(_0x57fb38,_0x314260){var _0xf04f9b=[];for(var _0x168b92 in _0x535a83[_0x996f('0x51')]){if(_0x535a83[_0x996f('0x51')][_0x996f('0x48')](_0x168b92)){var _0x2b300e=_0x535a83[_0x996f('0x51')][_0x168b92];var _0x4438e0={'id':_0x2b300e['id'],'available':_0x2b300e[_0x996f('0x4e')],'loggedIn':_0x2b300e['loggedIn'],'name':_0x2b300e['name'],'paused':_0x2b300e[_0x996f('0x4f')],'waiting':_0x2b300e['waiting']};_0xf04f9b[_0x996f('0x21')](_0x4438e0);}}_0x57fb38({'count':_0xf04f9b['length'],'rows':_0xf04f9b});});},'OpenchannelQueues':function(_0x242a9b){return new Promise(function(_0x35bd7d,_0x249b73){var _0x495fb5=[];for(var _0x448001 in _0x535a83[_0x996f('0x52')]){if(_0x535a83[_0x996f('0x52')][_0x996f('0x48')](_0x448001)){var _0x4729e5=_0x535a83['openchannelQueues'][_0x448001];var _0x4ec8c4={'id':_0x4729e5['id'],'available':_0x4729e5[_0x996f('0x4e')],'loggedIn':_0x4729e5[_0x996f('0x53')],'name':_0x4729e5[_0x996f('0x54')],'paused':_0x4729e5[_0x996f('0x4f')],'waiting':_0x4729e5[_0x996f('0x50')]};_0x495fb5[_0x996f('0x21')](_0x4ec8c4);}}_0x35bd7d({'count':_0x495fb5[_0x996f('0x19')],'rows':_0x495fb5});});},'SmsQueues':function(_0x49d4b2){return new Promise(function(_0x3258b2,_0x5bf2c5){var _0x222568=[];for(var _0x48c5b8 in _0x535a83[_0x996f('0x55')]){if(_0x535a83['smsQueues'][_0x996f('0x48')](_0x48c5b8)){var _0x57c178=_0x535a83[_0x996f('0x55')][_0x48c5b8];var _0x2f8c34={'id':_0x57c178['id'],'available':_0x57c178[_0x996f('0x4e')],'loggedIn':_0x57c178['loggedIn'],'name':_0x57c178[_0x996f('0x54')],'paused':_0x57c178[_0x996f('0x4f')],'waiting':_0x57c178['waiting']};_0x222568[_0x996f('0x21')](_0x2f8c34);}}_0x3258b2({'count':_0x222568[_0x996f('0x19')],'rows':_0x222568});});},'FaxQueues':function(_0x336632){return new Promise(function(_0x3fc85e,_0x4cf06e){var _0x323d45=[];for(var _0x5f5ba4 in _0x535a83['faxQueues']){if(_0x535a83[_0x996f('0x56')]['hasOwnProperty'](_0x5f5ba4)){var _0x5a7285=_0x535a83[_0x996f('0x56')][_0x5f5ba4];var _0x2b7e02={'id':_0x5a7285['id'],'available':_0x5a7285[_0x996f('0x4e')],'loggedIn':_0x5a7285['loggedIn'],'name':_0x5a7285[_0x996f('0x54')],'paused':_0x5a7285[_0x996f('0x4f')],'waiting':_0x5a7285['waiting']};_0x323d45[_0x996f('0x21')](_0x2b7e02);}}_0x3fc85e({'count':_0x323d45[_0x996f('0x19')],'rows':_0x323d45});});},'WhatsappQueues':function(_0x5e1bd9){return new Promise(function(_0x5b4f51,_0x925816){var _0x4ac38d=[];for(var _0x5066fe in _0x535a83[_0x996f('0x57')]){if(_0x535a83[_0x996f('0x57')]['hasOwnProperty'](_0x5066fe)){var _0x393ab0=_0x535a83[_0x996f('0x57')][_0x5066fe];var _0x4682c0={'id':_0x393ab0['id'],'available':_0x393ab0['available'],'loggedIn':_0x393ab0[_0x996f('0x53')],'name':_0x393ab0['name'],'paused':_0x393ab0[_0x996f('0x4f')],'waiting':_0x393ab0[_0x996f('0x50')]};_0x4ac38d[_0x996f('0x21')](_0x4682c0);}}_0x5b4f51({'count':_0x4ac38d['length'],'rows':_0x4ac38d});});},'ChatQueuesWaitingInteractions':function(_0x40cd39){return new Promise(function(_0x577951,_0x26c787){var _0x21368e=_[_0x996f('0x4c')](_0x535a83[_0x996f('0x58')]);_0x577951({'count':_0x21368e['length'],'rows':_0x21368e});});},'MailQueuesWaitingInteractions':function(_0x286dc8){return new Promise(function(_0x31cb3d,_0x3d8ccf){var _0x445d45=_['values'](_0x535a83[_0x996f('0x59')]);_0x31cb3d({'count':_0x445d45[_0x996f('0x19')],'rows':_0x445d45});});},'OpenchannelQueuesWaitingInteractions':function(_0x563a4a){return new Promise(function(_0x39f96d,_0x1db673){var _0x425fde=_[_0x996f('0x4c')](_0x535a83['openchannelQueuesWaitingInteractions']);_0x39f96d({'count':_0x425fde[_0x996f('0x19')],'rows':_0x425fde});});},'SmsQueuesWaitingInteractions':function(_0x1da5b7){return new Promise(function(_0x149b13,_0x370842){var _0x31b5a4=_[_0x996f('0x4c')](_0x535a83[_0x996f('0x5a')]);_0x149b13({'count':_0x31b5a4['length'],'rows':_0x31b5a4});});},'FaxQueuesWaitingInteractions':function(_0x2966d4){return new Promise(function(_0x1d0f9e,_0x58bbd5){var _0x5e0a34=_[_0x996f('0x4c')](_0x535a83['faxQueuesWaitingInteractions']);_0x1d0f9e({'count':_0x5e0a34[_0x996f('0x19')],'rows':_0x5e0a34});});},'WhatsappQueuesWaitingInteractions':function(_0x3a4ba2){return new Promise(function(_0x262232,_0x17d572){var _0x4d17b3=_['values'](_0x535a83[_0x996f('0x5b')]);_0x262232({'count':_0x4d17b3[_0x996f('0x19')],'rows':_0x4d17b3});});}};var _0x27f1ea=jayson[_0x996f('0x5c')](_0x237501)[_0x996f('0x5d')]();_0x27f1ea['on'](_0x996f('0x33'),function(_0x25b06d){logger[_0x996f('0x33')](JSON[_0x996f('0x36')](_0x25b06d));return _0x1262b3(_0x25b06d);});_0x27f1ea[_0x996f('0x13')](0x232c,_0x996f('0x5e'),function(){console[_0x996f('0x5f')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x9318b8(_0x996f('0x60')+0x232c);});});};
\ No newline at end of file
+var _0x0990=['IntervalId','Intervals','map','interval','listen','rules','channel','message','interaction','applications','length','existsSync','join','.js','app','toLowerCase','autoreply','appdata','mail','push','slice','dialogflow','split','amazonlex','tag','%s:%s:%s','./interval','condition','intervals','./applications/','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','execute','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','error','stack','agent','agents','busy','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','busyQueue','hasOwnProperty','capacity','CurrentCapacity','chatQueues','available','loggedIn','name','waiting','mailQueues','paused','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','smsQueuesWaitingInteractions','http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil'];(function(_0x3d23cd,_0x57b9db){var _0x39a2c0=function(_0x3f1f1d){while(--_0x3f1f1d){_0x3d23cd['push'](_0x3d23cd['shift']());}};_0x39a2c0(++_0x57b9db);}(_0x0990,0x1c5));var _0x0099=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x0990[_0x4243a3];return _0x1b2a33;};'use strict';var _=require(_0x0099('0x0'));var util=require(_0x0099('0x1'));var path=require(_0x0099('0x2'));var fs=require('fs');var jayson=require(_0x0099('0x3'));var BPromise=require(_0x0099('0x4'));var uuid=require(_0x0099('0x5'));var config=require(_0x0099('0x6'));var logger=require(_0x0099('0x7'))('routing');var rpc={'openchannelQueueReport':require(_0x0099('0x8')),'mailQueueReport':require(_0x0099('0x9')),'chatQueueReport':require(_0x0099('0xa')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0x0099('0xb')),'whatsappQueueReport':require(_0x0099('0xc'))};var RuleEngine=require(_0x0099('0xd'));function getId(_0x3d84fb,_0xeb674a,_0x262302){return util[_0x0099('0xe')](_0x0099('0xf'),_0x3d84fb,_0xeb674a||0x0,_0x262302||0x0);}function getIntervals(_0x2b2603,_0x52dfe3){var _0x423a8f=[];if(!_[_0x0099('0x10')](_0x52dfe3[_0x0099('0x11')])&&!_['isNil'](_0x2b2603[_0x52dfe3[_0x0099('0x11')]])&&!_[_0x0099('0x10')](_0x2b2603[_0x52dfe3[_0x0099('0x11')]][_0x0099('0x12')])){_0x423a8f=_[_0x0099('0x13')](_0x2b2603[_0x52dfe3[_0x0099('0x11')]]['Intervals'],_0x0099('0x14'));}else if(!_[_0x0099('0x10')](_0x52dfe3[_0x0099('0x14')])){_0x423a8f=[_0x52dfe3[_0x0099('0x14')]];}return _0x423a8f;}exports[_0x0099('0x15')]=function(_0x143e6e){_0x143e6e[_0x0099('0x16')]={};return new BPromise(function(_0x35f29c,_0x5d104d){var _0x1b8982={'Start':function(_0x342890){var _0x560bca=this;return new Promise(function(_0x209460,_0x16a481){if(_0x342890){try{var _0x5bd6ad=[];var _0x3de338=getId(_0x342890[_0x0099('0x17')],_0x342890[_0x0099('0x18')]?_0x342890[_0x0099('0x18')]['id']:0x0,_0x342890[_0x0099('0x19')]?_0x342890[_0x0099('0x19')]['id']:0x0);if(_0x342890[_0x0099('0x1a')]&&_['isArray'](_0x342890[_0x0099('0x1a')])&&_0x342890[_0x0099('0x1a')][_0x0099('0x1b')]){for(var _0x248230=0x0;_0x248230<_0x342890['applications']['length'];_0x248230+=0x1){var _0x2952d3=_0x342890[_0x0099('0x1a')][_0x248230];if(fs[_0x0099('0x1c')](path[_0x0099('0x1d')](__dirname,_0x0099('0x1a'),_0x2952d3['app']+_0x0099('0x1e')))){var _0x190c2a=[];switch(_0x2952d3[_0x0099('0x1f')][_0x0099('0x20')]()){case _0x0099('0x21'):var _0x5091a4=_0x2952d3[_0x0099('0x22')]['split'](',');if(_0x342890[_0x0099('0x17')]===_0x0099('0x23')){_0x190c2a[_0x0099('0x24')](_0x5091a4[0x0]);_0x190c2a[_0x0099('0x24')](_0x5091a4[0x1]);_0x190c2a[_0x0099('0x24')](_0x5091a4[_0x0099('0x25')](0x2,_0x5091a4[_0x0099('0x1b')])[_0x0099('0x1d')](','));}else{_0x190c2a['push'](_0x5091a4[0x0]);_0x190c2a[_0x0099('0x24')](_0x5091a4['slice'](0x1,_0x5091a4[_0x0099('0x1b')])[_0x0099('0x1d')](','));}break;case _0x0099('0x26'):var _0x467f92=_0x2952d3[_0x0099('0x22')][_0x0099('0x27')](',');_0x190c2a[_0x0099('0x24')](_0x467f92[0x0]);_0x190c2a['push'](_0x467f92[0x1]);_0x190c2a[_0x0099('0x24')](_0x467f92[_0x0099('0x25')](0x2,_0x467f92[_0x0099('0x1b')])[_0x0099('0x1d')](','));break;case'dialogflowv2':var _0x35a69d=_0x2952d3[_0x0099('0x22')][_0x0099('0x27')](',');_0x190c2a[_0x0099('0x24')](_0x35a69d[0x0]);_0x190c2a[_0x0099('0x24')](_0x35a69d[0x1]);_0x190c2a[_0x0099('0x24')](_0x35a69d[0x2]);_0x190c2a['push'](_0x35a69d[0x3]);_0x190c2a[_0x0099('0x24')](_0x35a69d['slice'](0x4,_0x35a69d[_0x0099('0x1b')])[_0x0099('0x1d')](','));break;case _0x0099('0x28'):var _0x1fa7e2=_0x2952d3['appdata'][_0x0099('0x27')](',');_0x190c2a[_0x0099('0x24')](_0x1fa7e2[0x0]);_0x190c2a['push'](_0x1fa7e2[0x1]);_0x190c2a['push'](_0x1fa7e2[0x2]);_0x190c2a[_0x0099('0x24')](_0x1fa7e2[0x3]);_0x190c2a[_0x0099('0x24')](_0x1fa7e2[_0x0099('0x25')](0x4,_0x1fa7e2['length'])[_0x0099('0x1d')](','));break;case _0x0099('0x18'):_0x190c2a[_0x0099('0x24')](_0x2952d3[_0x0099('0x22')]);break;case _0x0099('0x29'):_0x190c2a[_0x0099('0x24')](_0x2952d3['TagId']);_0x190c2a[_0x0099('0x24')](_0x2952d3['appdata']);break;default:_0x190c2a=_[_0x0099('0x10')](_0x2952d3[_0x0099('0x22')])?[]:_0x2952d3['appdata'][_0x0099('0x27')](',');}var _0x45cf5d={'id':util[_0x0099('0xe')](_0x0099('0x2a'),_0x3de338,_0x2952d3['id'],_0x2952d3[_0x0099('0x1f')]),'condition':require(_0x0099('0x2b'))[_0x0099('0x2c')](_0x3de338,getIntervals(_0x143e6e[_0x0099('0x2d')],_0x2952d3),_0x143e6e),'consequence':require(_0x0099('0x2e')+_0x2952d3[_0x0099('0x1f')])['consequence'](_0x3de338,_0x190c2a,_0x143e6e,_0x342890),'p':_0x2952d3[_0x0099('0x2f')]||0x0};logger[_0x0099('0x30')](_0x0099('0x31'),_0x45cf5d['id'],_0x0099('0x32'),getIntervals(_0x143e6e['intervals'],_0x2952d3)[_0x0099('0x1d')](_0x0099('0x33')));_0x5bd6ad[_0x0099('0x24')](_0x45cf5d);}else{logger['error']('Please\x20create\x20a\x20new\x20file\x20under',path[_0x0099('0x1d')](__dirname,_0x0099('0x1a'),_0x2952d3['app']+_0x0099('0x1e')));}}_0x143e6e['rules'][_0x3de338]=new RuleEngine(_0x5bd6ad);_0x143e6e[_0x0099('0x16')][_0x3de338][_0x0099('0x34')](_0x342890,function(_0x3d308e){logger[_0x0099('0x30')](_0x0099('0x35'),JSON[_0x0099('0x36')](_0x3d308e[_0x0099('0x37')]));if(_0x143e6e[_0x0099('0x16')][_0x3de338]){_0x143e6e['rules'][_0x3de338][_0x0099('0x38')](_0x0099('0x39'));}});return _0x209460({'code':0xc8,'message':_0x342890});}else{logger[_0x0099('0x30')](_0x0099('0x3a'));return _0x209460({'code':0xc8,'message':_0x342890});}}catch(_0x365cad){logger[_0x0099('0x3b')](_0x365cad[_0x0099('0x3c')]);return _0x16a481(_0x560bca[_0x0099('0x3b')](0x1f4,_0x365cad));}}return _0x16a481('routing\x20is\x20empty');});},'AcceptMessage':function(_0x909648){var _0x883e00=this;return new Promise(function(_0x2122fe,_0x428f1a){if(_0x909648[_0x0099('0x3d')]&&_0x909648[_0x0099('0x3d')]['id']){if(_0x143e6e[_0x0099('0x3e')][_0x909648['agent']['id']]){_0x143e6e[_0x0099('0x3e')][_0x909648[_0x0099('0x3d')]['id']][_0x0099('0x3f')]=![];_0x143e6e[_0x0099('0x3e')][_0x909648[_0x0099('0x3d')]['id']]['busyQueue']=undefined;}}if(_0x909648[_0x0099('0x18')]&&_0x909648[_0x0099('0x18')]['id']){try{var _0x4084b3=getId(_0x909648['channel'],_0x909648[_0x0099('0x18')]?_0x909648[_0x0099('0x18')]['id']:0x0,_0x909648[_0x0099('0x19')]?_0x909648['interaction']['id']:0x0);if(_0x143e6e['rules'][_0x4084b3]){_0x143e6e[_0x0099('0x16')][_0x4084b3]['emit'](_0x0099('0x40'));if(rpc[_0x909648['channel']+_0x0099('0x41')]){rpc[_0x909648[_0x0099('0x17')]+_0x0099('0x41')][_0x0099('0x42')](_0x4084b3,{'UserId':_0x909648[_0x0099('0x18')][_0x0099('0x43')]})[_0x0099('0x44')](function(_0x1db871){logger['error'](_0x0099('0x45'));});}}return _0x2122fe({'code':0xc8,'message':_0x909648});}catch(_0x6b66c6){logger['error'](_0x6b66c6['stack']);return _0x428f1a(_0x883e00[_0x0099('0x3b')](0x1f4,_0x6b66c6));}}logger[_0x0099('0x3b')](_0x0099('0x46'));return _0x428f1a(_0x883e00['error'](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x44c49a){var _0x255ad3=this;return new Promise(function(_0x26dd94,_0xcee67){if(_0x44c49a[_0x0099('0x3d')]&&_0x44c49a[_0x0099('0x3d')]['id']){try{if(_0x143e6e[_0x0099('0x3e')][_0x44c49a[_0x0099('0x3d')]['id']]){_0x143e6e[_0x0099('0x3e')][_0x44c49a[_0x0099('0x3d')]['id']][_0x0099('0x3f')]=![];_0x143e6e[_0x0099('0x3e')][_0x44c49a[_0x0099('0x3d')]['id']][_0x0099('0x47')]=undefined;}return _0x26dd94({'code':0xc8,'message':_0x44c49a});}catch(_0x569afe){logger[_0x0099('0x3b')](_0x569afe[_0x0099('0x3c')]);return _0xcee67(_0x255ad3[_0x0099('0x3b')](0x1f4,_0x569afe));}}logger[_0x0099('0x3b')](_0x0099('0x46'));return _0xcee67(_0x255ad3[_0x0099('0x3b')](0x1f4,_0x0099('0x46')));});},'AbandonInteraction':function(_0x274bc4){var _0x2d42fc=this;return new Promise(function(_0x28ca34,_0x4deaf3){if(_0x274bc4[_0x0099('0x17')]&&_0x274bc4[_0x0099('0x19')]&&_0x274bc4[_0x0099('0x19')]['id']){try{var _0x4e1670=getId(_0x274bc4[_0x0099('0x17')],_0x274bc4[_0x0099('0x18')]?_0x274bc4['message']['id']:0x0,_0x274bc4[_0x0099('0x19')]?_0x274bc4['interaction']['id']:0x0);if(_0x143e6e[_0x0099('0x16')][_0x4e1670]){_0x143e6e[_0x0099('0x16')][_0x4e1670][_0x0099('0x38')](_0x0099('0x40'));}return _0x28ca34({'code':0xc8,'message':_0x274bc4});}catch(_0x533b75){logger[_0x0099('0x3b')](_0x533b75[_0x0099('0x3c')]);return _0x4deaf3(_0x2d42fc[_0x0099('0x3b')](0x1f4,_0x533b75));}}logger['error'](_0x0099('0x46'));return _0x4deaf3(_0x2d42fc[_0x0099('0x3b')](0x1f4,_0x0099('0x46')));});},'AgentCapacity':function(_0x6b8ccf){var _0x5ee7dc=this;return new Promise(function(_0x3efff7,_0x2a348b){if(_0x143e6e[_0x0099('0x3e')][_0x0099('0x48')](_0x6b8ccf['id'])){for(var _0x24512e in _0x6b8ccf[_0x0099('0x49')]){if(_0x6b8ccf['capacity'][_0x0099('0x48')](_0x24512e)){if(_0x143e6e[_0x0099('0x3e')][_0x6b8ccf['id']]['hasOwnProperty'](_0x24512e+_0x0099('0x4a'))){_0x143e6e[_0x0099('0x3e')][_0x6b8ccf['id']][_0x24512e+_0x0099('0x4a')]=parseInt(_0x6b8ccf[_0x0099('0x49')][_0x24512e],0xa);}}}_0x143e6e['agents'][_0x6b8ccf['id']]['updateRealtime']();return _0x3efff7({'code':0xc8,'message':_0x143e6e[_0x0099('0x3e')][_0x6b8ccf['id']]});}else{return _0x2a348b(_0x5ee7dc[_0x0099('0x3b')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x40dc91){return new Promise(function(_0x4bed8a,_0xb44b7f){var _0x1d086c=_['values'](_0x143e6e[_0x0099('0x3e')]);_0x4bed8a({'count':_0x1d086c[_0x0099('0x1b')],'rows':_0x1d086c});});},'ChatQueues':function(_0x118830){return new Promise(function(_0x5961d6,_0x386d0e){var _0x6b28ec=[];for(var _0x58cf28 in _0x143e6e[_0x0099('0x4b')]){if(_0x143e6e[_0x0099('0x4b')][_0x0099('0x48')](_0x58cf28)){var _0x2b1b3f=_0x143e6e['chatQueues'][_0x58cf28];var _0x37ca0f={'id':_0x2b1b3f['id'],'available':_0x2b1b3f[_0x0099('0x4c')],'loggedIn':_0x2b1b3f[_0x0099('0x4d')],'name':_0x2b1b3f[_0x0099('0x4e')],'paused':_0x2b1b3f['paused'],'waiting':_0x2b1b3f[_0x0099('0x4f')]};_0x6b28ec[_0x0099('0x24')](_0x37ca0f);}}_0x5961d6({'count':_0x6b28ec['length'],'rows':_0x6b28ec});});},'MailQueues':function(_0x4a250f){return new Promise(function(_0x3e8bad,_0x5ef706){var _0x9945d8=[];for(var _0x96869e in _0x143e6e[_0x0099('0x50')]){if(_0x143e6e[_0x0099('0x50')][_0x0099('0x48')](_0x96869e)){var _0x15d9a3=_0x143e6e[_0x0099('0x50')][_0x96869e];var _0x426a9f={'id':_0x15d9a3['id'],'available':_0x15d9a3['available'],'loggedIn':_0x15d9a3['loggedIn'],'name':_0x15d9a3[_0x0099('0x4e')],'paused':_0x15d9a3[_0x0099('0x51')],'waiting':_0x15d9a3[_0x0099('0x4f')]};_0x9945d8['push'](_0x426a9f);}}_0x3e8bad({'count':_0x9945d8[_0x0099('0x1b')],'rows':_0x9945d8});});},'OpenchannelQueues':function(_0x52cada){return new Promise(function(_0x13dacb,_0x44c148){var _0xf45abf=[];for(var _0x5ddf56 in _0x143e6e[_0x0099('0x52')]){if(_0x143e6e[_0x0099('0x52')][_0x0099('0x48')](_0x5ddf56)){var _0x522541=_0x143e6e['openchannelQueues'][_0x5ddf56];var _0x147e15={'id':_0x522541['id'],'available':_0x522541[_0x0099('0x4c')],'loggedIn':_0x522541[_0x0099('0x4d')],'name':_0x522541[_0x0099('0x4e')],'paused':_0x522541[_0x0099('0x51')],'waiting':_0x522541[_0x0099('0x4f')]};_0xf45abf[_0x0099('0x24')](_0x147e15);}}_0x13dacb({'count':_0xf45abf[_0x0099('0x1b')],'rows':_0xf45abf});});},'SmsQueues':function(_0x3f29dc){return new Promise(function(_0x1ea1ab,_0x4ee896){var _0x1c9e53=[];for(var _0x2719d4 in _0x143e6e[_0x0099('0x53')]){if(_0x143e6e[_0x0099('0x53')]['hasOwnProperty'](_0x2719d4)){var _0x2e3b7a=_0x143e6e[_0x0099('0x53')][_0x2719d4];var _0x41b1a4={'id':_0x2e3b7a['id'],'available':_0x2e3b7a[_0x0099('0x4c')],'loggedIn':_0x2e3b7a[_0x0099('0x4d')],'name':_0x2e3b7a['name'],'paused':_0x2e3b7a[_0x0099('0x51')],'waiting':_0x2e3b7a['waiting']};_0x1c9e53[_0x0099('0x24')](_0x41b1a4);}}_0x1ea1ab({'count':_0x1c9e53[_0x0099('0x1b')],'rows':_0x1c9e53});});},'FaxQueues':function(_0x447661){return new Promise(function(_0x3e0d04,_0x53258a){var _0x462ee6=[];for(var _0x33a0fd in _0x143e6e['faxQueues']){if(_0x143e6e[_0x0099('0x54')][_0x0099('0x48')](_0x33a0fd)){var _0x4fe2ec=_0x143e6e[_0x0099('0x54')][_0x33a0fd];var _0xc2545a={'id':_0x4fe2ec['id'],'available':_0x4fe2ec['available'],'loggedIn':_0x4fe2ec[_0x0099('0x4d')],'name':_0x4fe2ec['name'],'paused':_0x4fe2ec[_0x0099('0x51')],'waiting':_0x4fe2ec[_0x0099('0x4f')]};_0x462ee6[_0x0099('0x24')](_0xc2545a);}}_0x3e0d04({'count':_0x462ee6[_0x0099('0x1b')],'rows':_0x462ee6});});},'WhatsappQueues':function(_0x1cb7bb){return new Promise(function(_0x54d918,_0x50438b){var _0x4f2aa0=[];for(var _0x1acdc1 in _0x143e6e['whatsappQueues']){if(_0x143e6e[_0x0099('0x55')][_0x0099('0x48')](_0x1acdc1)){var _0x1683b0=_0x143e6e['whatsappQueues'][_0x1acdc1];var _0x253643={'id':_0x1683b0['id'],'available':_0x1683b0[_0x0099('0x4c')],'loggedIn':_0x1683b0[_0x0099('0x4d')],'name':_0x1683b0[_0x0099('0x4e')],'paused':_0x1683b0[_0x0099('0x51')],'waiting':_0x1683b0['waiting']};_0x4f2aa0['push'](_0x253643);}}_0x54d918({'count':_0x4f2aa0[_0x0099('0x1b')],'rows':_0x4f2aa0});});},'ChatQueuesWaitingInteractions':function(_0x37fdae){return new Promise(function(_0xa95672,_0x462f4a){var _0x4ec559=_[_0x0099('0x56')](_0x143e6e[_0x0099('0x57')]);_0xa95672({'count':_0x4ec559[_0x0099('0x1b')],'rows':_0x4ec559});});},'MailQueuesWaitingInteractions':function(_0x91f63b){return new Promise(function(_0x5a26d0,_0x4628c1){var _0x447415=_[_0x0099('0x56')](_0x143e6e[_0x0099('0x58')]);_0x5a26d0({'count':_0x447415[_0x0099('0x1b')],'rows':_0x447415});});},'OpenchannelQueuesWaitingInteractions':function(_0x549d81){return new Promise(function(_0x473ac4,_0x3c5020){var _0x390f7f=_[_0x0099('0x56')](_0x143e6e['openchannelQueuesWaitingInteractions']);_0x473ac4({'count':_0x390f7f[_0x0099('0x1b')],'rows':_0x390f7f});});},'SmsQueuesWaitingInteractions':function(_0x16dab8){return new Promise(function(_0x5a9a72,_0xb25c5a){var _0x31d7cc=_[_0x0099('0x56')](_0x143e6e[_0x0099('0x59')]);_0x5a9a72({'count':_0x31d7cc[_0x0099('0x1b')],'rows':_0x31d7cc});});},'FaxQueuesWaitingInteractions':function(_0x2ea589){return new Promise(function(_0x48e93b,_0x486d48){var _0x5d3fdd=_[_0x0099('0x56')](_0x143e6e['faxQueuesWaitingInteractions']);_0x48e93b({'count':_0x5d3fdd[_0x0099('0x1b')],'rows':_0x5d3fdd});});},'WhatsappQueuesWaitingInteractions':function(_0x1121fa){return new Promise(function(_0x28d81b,_0x3cdd9f){var _0x4a02ca=_[_0x0099('0x56')](_0x143e6e['whatsappQueuesWaitingInteractions']);_0x28d81b({'count':_0x4a02ca[_0x0099('0x1b')],'rows':_0x4a02ca});});}};var _0x22ea12=jayson['server'](_0x1b8982)[_0x0099('0x5a')]();_0x22ea12['on']('error',function(_0x2719bf){logger['error'](JSON[_0x0099('0x36')](_0x2719bf));return _0x5d104d(_0x2719bf);});_0x22ea12[_0x0099('0x15')](0x232c,_0x0099('0x5b'),function(){console[_0x0099('0x5c')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x35f29c(_0x0099('0x5d')+0x232c);});});};
\ No newline at end of file
index c42b0d2..909a77d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44bd=['util','bluebird','jayson/promise','lodash','routing','client','http','request','error','result','catch','condition','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','then','message','true','[%s][INTERVAL]\x20%s','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','log','stack'];(function(_0x332d33,_0x5109a3){var _0x410080=function(_0x4d35fb){while(--_0x4d35fb){_0x332d33['push'](_0x332d33['shift']());}};_0x410080(++_0x5109a3);}(_0x44bd,0x1b0));var _0xd44b=function(_0x46e341,_0x34388c){_0x46e341=_0x46e341-0x0;var _0x30284b=_0x44bd[_0x46e341];return _0x30284b;};'use strict';var util=require(_0xd44b('0x0'));var BPromise=require(_0xd44b('0x1'));var jayson=require(_0xd44b('0x2'));var _=require(_0xd44b('0x3'));var logger=require('../../../config/logger')(_0xd44b('0x4'));var client=jayson[_0xd44b('0x5')][_0xd44b('0x6')]({'port':0x232a});function request(_0x10286f,_0x5ca9aa){return new BPromise(function(_0x577630,_0xcf6b8b){return client[_0xd44b('0x7')](_0x10286f,_0x5ca9aa)['then'](function(_0xe7442f){if(_0xe7442f[_0xd44b('0x8')]){return _0xcf6b8b(_0xe7442f[_0xd44b('0x8')]['message']);}else{return _0x577630(_0xe7442f[_0xd44b('0x9')]);}})[_0xd44b('0xa')](function(_0x5aeef6){return _0xcf6b8b(_0x5aeef6);});});}exports[_0xd44b('0xb')]=function(_0x4cddeb,_0x2e85c5,_0x36d1fc){return function(_0x750010){if(_0x36d1fc['rules']&&!_0x36d1fc['rules'][_0x4cddeb]){logger[_0xd44b('0xc')](_0xd44b('0xd'),_0x4cddeb);return _0x750010[_0xd44b('0xe')]();}var _0x19f661=[];for(var _0x524c6a=0x0;_0x524c6a<_0x2e85c5[_0xd44b('0xf')];_0x524c6a+=0x1){_0x19f661[_0xd44b('0x10')](request('Command',{'command':util['format']('iftime\x20%s',_0x2e85c5[_0x524c6a])})[_0xd44b('0x11')](function(_0x14606e){return _0x14606e&&_0x14606e[_0xd44b('0x12')]&&_0x14606e[_0xd44b('0x12')]['indexOf'](_0xd44b('0x13'))>=0x0?!![]:![];})[_0xd44b('0xa')](function(_0x43b67e){logger[_0xd44b('0x8')](_0xd44b('0x14'),_0x4cddeb,_0x2e85c5[_0x524c6a]);}));}BPromise['all'](_0x19f661)['then'](function(_0x143a97){var _0x4d5ab5=_[_0xd44b('0x15')](_0x143a97);logger[_0xd44b('0xc')](_0xd44b('0x16'),_0x4cddeb,_0x2e85c5[_0xd44b('0x17')](_0xd44b('0x18')),_0x4d5ab5);_0x750010['when'](_0x4d5ab5);})['catch'](function(_0x45d3a7){console[_0xd44b('0x19')](_0x45d3a7);logger['error'](_0xd44b('0x16'),_0x4cddeb,_0x2e85c5[_0xd44b('0x17')]('\x20|\x20'),_0x45d3a7[_0xd44b('0x1a')]);_0x750010[_0xd44b('0xe')]();});};};
\ No newline at end of file
+var _0x9cf2=['error','message','result','catch','condition','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED','length','push','indexOf','true','[%s][INTERVAL]\x20%s','all','some','info','join','when','[%s][INTERVAL]\x20%s\x20%s','stack','stop','util','bluebird','jayson/promise','lodash','../../../config/logger','routing','http','request','then'];(function(_0x493dda,_0x1528d3){var _0x31a5a6=function(_0x43c676){while(--_0x43c676){_0x493dda['push'](_0x493dda['shift']());}};_0x31a5a6(++_0x1528d3);}(_0x9cf2,0x88));var _0x29cf=function(_0x345eb9,_0x2258b4){_0x345eb9=_0x345eb9-0x0;var _0x275a56=_0x9cf2[_0x345eb9];return _0x275a56;};'use strict';var util=require(_0x29cf('0x0'));var BPromise=require(_0x29cf('0x1'));var jayson=require(_0x29cf('0x2'));var _=require(_0x29cf('0x3'));var logger=require(_0x29cf('0x4'))(_0x29cf('0x5'));var client=jayson['client'][_0x29cf('0x6')]({'port':0x232a});function request(_0x342115,_0x30cf1f){return new BPromise(function(_0x44f405,_0xef5dee){return client[_0x29cf('0x7')](_0x342115,_0x30cf1f)[_0x29cf('0x8')](function(_0x5d2dbe){if(_0x5d2dbe[_0x29cf('0x9')]){return _0xef5dee(_0x5d2dbe[_0x29cf('0x9')][_0x29cf('0xa')]);}else{return _0x44f405(_0x5d2dbe[_0x29cf('0xb')]);}})[_0x29cf('0xc')](function(_0x53f3e6){return _0xef5dee(_0x53f3e6);});});}exports[_0x29cf('0xd')]=function(_0x417096,_0x336bdd,_0x435645){return function(_0x316af4){if(_0x435645['rules']&&!_0x435645[_0x29cf('0xe')][_0x417096]){logger['info'](_0x29cf('0xf'),_0x417096);return _0x316af4['stop']();}var _0x662059=[];for(var _0x42b604=0x0;_0x42b604<_0x336bdd[_0x29cf('0x10')];_0x42b604+=0x1){_0x662059[_0x29cf('0x11')](request('Command',{'command':util['format']('iftime\x20%s',_0x336bdd[_0x42b604])})[_0x29cf('0x8')](function(_0x4e33db){return _0x4e33db&&_0x4e33db[_0x29cf('0xa')]&&_0x4e33db[_0x29cf('0xa')][_0x29cf('0x12')](_0x29cf('0x13'))>=0x0?!![]:![];})[_0x29cf('0xc')](function(_0x58f214){logger[_0x29cf('0x9')](_0x29cf('0x14'),_0x417096,_0x336bdd[_0x42b604]);}));}BPromise[_0x29cf('0x15')](_0x662059)[_0x29cf('0x8')](function(_0x4605ae){var _0x28a8e3=_[_0x29cf('0x16')](_0x4605ae);logger[_0x29cf('0x17')]('[%s][INTERVAL]\x20%s\x20%s',_0x417096,_0x336bdd[_0x29cf('0x18')]('\x20|\x20'),_0x28a8e3);_0x316af4[_0x29cf('0x19')](_0x28a8e3);})[_0x29cf('0xc')](function(_0x44f091){console['log'](_0x44f091);logger[_0x29cf('0x9')](_0x29cf('0x1a'),_0x417096,_0x336bdd[_0x29cf('0x18')]('\x20|\x20'),_0x44f091[_0x29cf('0x1b')]);_0x316af4[_0x29cf('0x1c')]();});};};
\ No newline at end of file
index 8892874..a04b9dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb469=['agentringnoanswerAt','timeout','holdtime','ringtime','talktime','[%s][agents][agentringnoanswer]','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','reason','abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','agentringnoanswer','answeredelsewheredestinationuniqueid','answeredelsewheremembername','agentcomplete','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfertype','blind','transferexten','transferuniqueid','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','ATTENDED','transfereeuniqueid','agententerreason','calleridnum','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','clone','hangup','[%s][agents][hangup]','cause','rejected','splice','diffTime','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','lodash','util','./utils','info','format','uniqueid','channel','membername','interface','connectedlinenum','getVoiceQueueByName','then','type','agentacw','acw','request','CreateVoiceAgentReport','agentcalled','debug','[%s][agents][agentcalled]','destuniqueid','agentcalledAt','now','lastevent','called','connectedlinename','error','isNil','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout'];(function(_0x5bf504,_0x593370){var _0xf86374=function(_0x30123b){while(--_0x30123b){_0x5bf504['push'](_0x5bf504['shift']());}};_0xf86374(++_0x593370);}(_0xb469,0x13b));var _0x9b46=function(_0x5d86b5,_0x336bd2){_0x5d86b5=_0x5d86b5-0x0;var _0x254f32=_0xb469[_0x5d86b5];return _0x254f32;};'use strict';var _=require(_0x9b46('0x0'));var util=require(_0x9b46('0x1'));var utils=require(_0x9b46('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x34f477,_0x1a41e8){utils[_0x9b46('0x3')](util[_0x9b46('0x4')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x34f477[_0x9b46('0x5')],_0x34f477[_0x9b46('0x6')],_0x34f477['queue'],_0x34f477[_0x9b46('0x7')],_0x34f477[_0x9b46('0x8')],_0x34f477['calleridnum'],_0x34f477[_0x9b46('0x9')],_0x34f477['lastevent']));if(_0x34f477['queue']){utils[_0x9b46('0xa')](_0x34f477['queue'])[_0x9b46('0xb')](function(_0xb9d1b5){if(_0xb9d1b5){_0x34f477[_0x9b46('0xc')]=_0xb9d1b5['type'];_0x34f477[_0x9b46('0xd')]=_0x34f477['agentcomplete']?_0xb9d1b5[_0x9b46('0xe')]:![];_0x34f477['acwtime']=_0x34f477[_0x9b46('0xd')]?_0xb9d1b5['acwTimeout']:0x0;}utils[_0x9b46('0xf')](_0x9b46('0x10'),_0x34f477);});}else{utils['request'](_0x9b46('0x10'),_0x34f477);}if(_0x1a41e8){delete transfers[_0x34f477[_0x9b46('0x5')]];}else{delete agents[_0x34f477['destuniqueid']];}}exports[_0x9b46('0x11')]=function(_0x2cfb35){try{utils[_0x9b46('0x12')](util[_0x9b46('0x4')](_0x9b46('0x13'),_0x2cfb35[_0x9b46('0x5')]),_0x2cfb35);agents[_0x2cfb35[_0x9b46('0x14')]]=_0x2cfb35;agents[_0x2cfb35[_0x9b46('0x14')]][_0x9b46('0x15')]=utils[_0x9b46('0x16')]();agents[_0x2cfb35[_0x9b46('0x14')]][_0x9b46('0x17')]=_0x9b46('0x18');agents[_0x2cfb35['destuniqueid']]['connectedlinenum']=null;agents[_0x2cfb35['destuniqueid']][_0x9b46('0x19')]=null;utils[_0x9b46('0x3')](util[_0x9b46('0x4')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x2cfb35['uniqueid'],agents[_0x2cfb35[_0x9b46('0x14')]]['membername'],_0x2cfb35['destuniqueid']));}catch(_0xfeb1b9){utils[_0x9b46('0x1a')](util['format'](_0x9b46('0x13'),_0x2cfb35[_0x9b46('0x5')]),_0xfeb1b9);}};exports['agentringnoanswer']=function(_0x55aece){try{if(!_[_0x9b46('0x1b')](agents[_0x55aece[_0x9b46('0x14')]])){utils[_0x9b46('0x12')](util['format']('[%s][agents][agentringnoanswer]',_0x55aece[_0x9b46('0x5')]),_0x55aece);utils['info'](util[_0x9b46('0x4')](_0x9b46('0x1c'),_0x55aece['uniqueid'],agents[_0x55aece[_0x9b46('0x14')]]['membername'],_0x55aece[_0x9b46('0x14')]));agents[_0x55aece[_0x9b46('0x14')]]['agentringnoanswer']=!![];agents[_0x55aece[_0x9b46('0x14')]][_0x9b46('0x1d')]=utils[_0x9b46('0x16')]();agents[_0x55aece[_0x9b46('0x14')]][_0x9b46('0x17')]=_0x9b46('0x1e');agents[_0x55aece[_0x9b46('0x14')]]['reason']=_0x9b46('0x1e');agents[_0x55aece[_0x9b46('0x14')]][_0x9b46('0x1f')]=_0x55aece[_0x9b46('0x20')]?parseInt(_0x55aece[_0x9b46('0x20')])/0x3e8:0x0;agents[_0x55aece[_0x9b46('0x14')]][_0x9b46('0x21')]=0x0;unanswered['push'](_0x55aece[_0x9b46('0x14')]);}}catch(_0xee519e){utils[_0x9b46('0x1a')](util[_0x9b46('0x4')](_0x9b46('0x22'),_0x55aece[_0x9b46('0x5')]),_0xee519e);}};exports[_0x9b46('0x23')]=function(_0x17ba3d){try{_[_0x9b46('0x24')](agents,function(_0x20090a,_0x2e1c51){if(_0x20090a['uniqueid']==_0x17ba3d[_0x9b46('0x5')]&&!_[_0x9b46('0x25')](unanswered,_0x20090a[_0x9b46('0x14')])){utils[_0x9b46('0x12')](util[_0x9b46('0x4')](_0x9b46('0x26'),_0x17ba3d[_0x9b46('0x5')]),_0x17ba3d);utils[_0x9b46('0x3')](util[_0x9b46('0x4')](_0x9b46('0x27'),_0x17ba3d[_0x9b46('0x5')],_0x20090a['membername'],_0x20090a[_0x9b46('0x14')]));_0x20090a['agentringnoanswer']=!![];_0x20090a[_0x9b46('0x1d')]=utils[_0x9b46('0x16')]();_0x20090a[_0x9b46('0x17')]='abandoned';_0x20090a[_0x9b46('0x28')]=_0x9b46('0x29');_0x20090a[_0x9b46('0x1f')]=_0x17ba3d[_0x9b46('0x1f')];_0x20090a[_0x9b46('0x21')]=0x0;writeDB(_0x20090a);}});}catch(_0x5cb73f){utils['error'](util[_0x9b46('0x4')](_0x9b46('0x26'),_0x17ba3d[_0x9b46('0x5')]),_0x5cb73f);}};exports[_0x9b46('0x2a')]=function(_0x4fa731){try{if(agents[_0x4fa731[_0x9b46('0x14')]]){utils['debug'](util[_0x9b46('0x4')](_0x9b46('0x2b'),_0x4fa731[_0x9b46('0x5')]),_0x4fa731);utils[_0x9b46('0x3')](util['format'](_0x9b46('0x2c'),_0x4fa731['uniqueid'],agents[_0x4fa731[_0x9b46('0x14')]][_0x9b46('0x7')],_0x4fa731[_0x9b46('0x14')]));agents[_0x4fa731[_0x9b46('0x14')]][_0x9b46('0x2d')]=utils[_0x9b46('0x16')]();agents[_0x4fa731[_0x9b46('0x14')]][_0x9b46('0x9')]=_0x4fa731[_0x9b46('0x9')];agents[_0x4fa731[_0x9b46('0x14')]][_0x9b46('0x19')]=_0x4fa731['connectedlinename'];agents[_0x4fa731[_0x9b46('0x14')]]['holdtime']=_0x4fa731[_0x9b46('0x20')];agents[_0x4fa731[_0x9b46('0x14')]]['lastevent']=_0x9b46('0x2e');_['forIn'](agents,function(_0x416538,_0x493b0f){if(_0x416538[_0x9b46('0x14')]!=_0x4fa731[_0x9b46('0x14')]&&_0x416538[_0x9b46('0x5')]==_0x4fa731[_0x9b46('0x5')]){_0x416538[_0x9b46('0x21')]=0x0;_0x416538['holdtime']=_0x4fa731['ringtime'];_0x416538[_0x9b46('0x2f')]=!![];_0x416538['agentringnoanswerAt']=utils['now']();_0x416538['lastevent']='answered_elsewhere';_0x416538[_0x9b46('0x28')]='answered_elsewhere';_0x416538[_0x9b46('0x30')]=_0x4fa731['destuniqueid'];_0x416538[_0x9b46('0x31')]=_0x4fa731[_0x9b46('0x7')];writeDB(_0x416538);}});}}catch(_0x2e92aa){utils[_0x9b46('0x1a')](util[_0x9b46('0x4')](_0x9b46('0x2b'),_0x4fa731[_0x9b46('0x5')]),_0x2e92aa);}};exports[_0x9b46('0x32')]=function(_0x148d86){try{if(!_['isNil'](agents[_0x148d86[_0x9b46('0x14')]])){utils[_0x9b46('0x12')](util[_0x9b46('0x4')](_0x9b46('0x33'),_0x148d86[_0x9b46('0x5')]),_0x148d86);utils[_0x9b46('0x3')](util[_0x9b46('0x4')](_0x9b46('0x34'),_0x148d86[_0x9b46('0x5')],agents[_0x148d86[_0x9b46('0x14')]][_0x9b46('0x7')],_0x148d86[_0x9b46('0x14')]));agents[_0x148d86[_0x9b46('0x14')]][_0x9b46('0x32')]=!![];agents[_0x148d86['destuniqueid']]['agentcompleteAt']=utils[_0x9b46('0x16')]();agents[_0x148d86[_0x9b46('0x14')]][_0x9b46('0x21')]=utils['diffTime'](agents[_0x148d86['destuniqueid']][_0x9b46('0x35')],agents[_0x148d86[_0x9b46('0x14')]][_0x9b46('0x2d')]);agents[_0x148d86[_0x9b46('0x14')]][_0x9b46('0x28')]=_0x148d86[_0x9b46('0x28')];agents[_0x148d86['destuniqueid']][_0x9b46('0x17')]=_0x9b46('0x36');writeDB(agents[_0x148d86[_0x9b46('0x14')]]);}}catch(_0x47a938){utils[_0x9b46('0x1a')](util['format'](_0x9b46('0x33'),_0x148d86[_0x9b46('0x5')]),_0x47a938);}};exports[_0x9b46('0x37')]=function(_0x566bad){try{if(!_[_0x9b46('0x1b')](agents[_0x566bad[_0x9b46('0x38')]])){utils[_0x9b46('0x12')](util[_0x9b46('0x4')](_0x9b46('0x39'),_0x566bad[_0x9b46('0x5')]),_0x566bad);utils['info'](util[_0x9b46('0x4')](_0x9b46('0x3a'),_0x566bad[_0x9b46('0x5')],agents[_0x566bad[_0x9b46('0x38')]][_0x9b46('0x7')],agents[_0x566bad[_0x9b46('0x38')]]['uniqueid']));agents[_0x566bad[_0x9b46('0x38')]]['transfer']=!![];agents[_0x566bad[_0x9b46('0x38')]][_0x9b46('0x3b')]=_0x9b46('0x3c');agents[_0x566bad[_0x9b46('0x38')]][_0x9b46('0x3d')]=_0x566bad['extension'];agents[_0x566bad[_0x9b46('0x38')]][_0x9b46('0x3e')]=agents[_0x566bad[_0x9b46('0x38')]][_0x9b46('0x5')];}}catch(_0x3f6b2f){utils[_0x9b46('0x1a')](util[_0x9b46('0x4')](_0x9b46('0x39'),_0x566bad[_0x9b46('0x5')]),_0x3f6b2f);}};exports[_0x9b46('0x3f')]=function(_0x2f411f){try{utils['debug'](util['format']('[%s][agents][attendedtransfer]',_0x2f411f[_0x9b46('0x40')]),_0x2f411f);if(_0x2f411f['origtransfereruniqueid']==_0x2f411f[_0x9b46('0x41')]){if(!_['isNil'](agents[_0x2f411f[_0x9b46('0x42')]])){utils['info'](util[_0x9b46('0x4')](_0x9b46('0x43'),_0x2f411f[_0x9b46('0x40')],agents[_0x2f411f[_0x9b46('0x42')]][_0x9b46('0x7')]));agents[_0x2f411f['secondtransfereruniqueid']][_0x9b46('0x44')]=!![];agents[_0x2f411f[_0x9b46('0x42')]][_0x9b46('0x3b')]=_0x9b46('0x45');agents[_0x2f411f[_0x9b46('0x42')]]['transferexten']=_0x2f411f['origtransfererexten'];agents[_0x2f411f[_0x9b46('0x42')]][_0x9b46('0x3e')]=_0x2f411f[_0x9b46('0x40')];}if(_0x2f411f[_0x9b46('0x46')]&&agents[_0x2f411f[_0x9b46('0x46')]]){agents[_0x2f411f[_0x9b46('0x46')]][_0x9b46('0x47')]=0x1;transfers[_0x2f411f[_0x9b46('0x46')]]=_['clone'](agents[_0x2f411f[_0x9b46('0x46')]]);transfers[_0x2f411f[_0x9b46('0x46')]][_0x9b46('0x48')]=agents[_0x2f411f['secondtransfereruniqueid']][_0x9b46('0x48')];transfers[_0x2f411f[_0x9b46('0x46')]][_0x9b46('0x49')]=agents[_0x2f411f[_0x9b46('0x42')]][_0x9b46('0x49')];transfers[_0x2f411f[_0x9b46('0x46')]]['agentcalledAt']=utils[_0x9b46('0x16')]();transfers[_0x2f411f[_0x9b46('0x46')]][_0x9b46('0x2d')]=utils[_0x9b46('0x16')]();transfers[_0x2f411f[_0x9b46('0x46')]][_0x9b46('0x1f')]=0x0;transfers[_0x2f411f['transfereeuniqueid']][_0x9b46('0x47')]=0x2;}}else if(_0x2f411f['secondtransfereruniqueid']==_0x2f411f[_0x9b46('0x4a')]){if(!_['isNil'](agents[_0x2f411f[_0x9b46('0x40')]])){utils[_0x9b46('0x3')](util['format'](_0x9b46('0x43'),_0x2f411f[_0x9b46('0x40')],agents[_0x2f411f[_0x9b46('0x40')]][_0x9b46('0x7')]));agents[_0x2f411f[_0x9b46('0x40')]]['transfer']=!![];agents[_0x2f411f[_0x9b46('0x40')]][_0x9b46('0x3b')]='ATTENDED';agents[_0x2f411f['origtransfereruniqueid']][_0x9b46('0x3d')]=_0x2f411f[_0x9b46('0x4b')];agents[_0x2f411f[_0x9b46('0x40')]][_0x9b46('0x3e')]=_0x2f411f[_0x9b46('0x42')];}if(_0x2f411f[_0x9b46('0x4c')]&&agents[_0x2f411f[_0x9b46('0x4c')]]){agents[_0x2f411f[_0x9b46('0x4c')]]['agententerreason']=0x1;transfers[_0x2f411f['transfertargetuniqueid']]=_[_0x9b46('0x4d')](agents[_0x2f411f[_0x9b46('0x4c')]]);transfers[_0x2f411f['transfertargetuniqueid']][_0x9b46('0x48')]=agents[_0x2f411f['origtransfereruniqueid']][_0x9b46('0x48')];transfers[_0x2f411f['transfertargetuniqueid']][_0x9b46('0x49')]=agents[_0x2f411f[_0x9b46('0x40')]][_0x9b46('0x49')];transfers[_0x2f411f['transfertargetuniqueid']][_0x9b46('0x15')]=utils[_0x9b46('0x16')]();transfers[_0x2f411f[_0x9b46('0x4c')]]['agentconnectAt']=utils[_0x9b46('0x16')]();transfers[_0x2f411f[_0x9b46('0x4c')]][_0x9b46('0x1f')]=0x0;transfers[_0x2f411f[_0x9b46('0x4c')]][_0x9b46('0x47')]=0x2;}}}catch(_0x4e8756){utils['error'](util['format']('[%s][agents][attendedtransfer]',_0x2f411f['origtransfereruniqueid']),_0x4e8756);}};exports[_0x9b46('0x4e')]=function(_0x200607){try{utils[_0x9b46('0x12')](util[_0x9b46('0x4')](_0x9b46('0x4f'),_0x200607[_0x9b46('0x5')]),_0x200607);if(agents[_0x200607[_0x9b46('0x5')]]&&agents[_0x200607[_0x9b46('0x5')]]['reason']===_0x9b46('0x1e')){if(_0x200607[_0x9b46('0x50')]==='21'){agents[_0x200607['uniqueid']][_0x9b46('0x28')]='rejected';agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x17')]=_0x9b46('0x51');}utils[_0x9b46('0x3')](util[_0x9b46('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x200607['uniqueid'],agents[_0x200607[_0x9b46('0x5')]]['membername'],agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x28')],agents[_0x200607['uniqueid']]['lastevent']));writeDB(agents[_0x200607['uniqueid']]);var _0x2978aa=unanswered['indexOf'](_0x200607['uniqueid']);if(_0x2978aa>-0x1){unanswered[_0x9b46('0x52')](_0x2978aa,0x1);}}if(transfers[_0x200607[_0x9b46('0x5')]]){transfers[_0x200607[_0x9b46('0x5')]][_0x9b46('0x32')]=!![];transfers[_0x200607['uniqueid']][_0x9b46('0x35')]=utils[_0x9b46('0x16')]();transfers[_0x200607[_0x9b46('0x5')]]['talktime']=utils['diffTime'](transfers[_0x200607[_0x9b46('0x5')]][_0x9b46('0x35')],transfers[_0x200607[_0x9b46('0x5')]]['agentconnectAt']);transfers[_0x200607[_0x9b46('0x5')]][_0x9b46('0x28')]='agent';transfers[_0x200607[_0x9b46('0x5')]][_0x9b46('0x17')]=_0x9b46('0x36');utils[_0x9b46('0x3')](util['format']('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x200607[_0x9b46('0x5')],transfers[_0x200607['uniqueid']][_0x9b46('0x7')],transfers[_0x200607[_0x9b46('0x5')]]['reason'],transfers[_0x200607['uniqueid']]['lastevent']));writeDB(transfers[_0x200607[_0x9b46('0x5')]],!![]);}if(agents[_0x200607['uniqueid']]&&agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x2d')]){agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x32')]=!![];agents[_0x200607['uniqueid']][_0x9b46('0x35')]=utils[_0x9b46('0x16')]();agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x21')]=utils[_0x9b46('0x53')](agents[_0x200607['uniqueid']][_0x9b46('0x35')],agents[_0x200607['uniqueid']][_0x9b46('0x2d')]);agents[_0x200607[_0x9b46('0x5')]]['reason']=agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x44')]?_0x9b46('0x44'):_0x9b46('0x54');agents[_0x200607['uniqueid']][_0x9b46('0x17')]='complete';utils[_0x9b46('0x3')](util[_0x9b46('0x4')](_0x9b46('0x55'),_0x200607['uniqueid'],agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x7')],agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x28')],agents[_0x200607['uniqueid']][_0x9b46('0x17')]));writeDB(agents[_0x200607['uniqueid']]);}}catch(_0x420d61){utils[_0x9b46('0x1a')](util[_0x9b46('0x4')](_0x9b46('0x4f'),_0x200607[_0x9b46('0x5')]),_0x420d61);}};
\ No newline at end of file
+var _0x13f6=['[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinenum','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','[%s][agents][agentcomplete]','blindtransfer','transfereruniqueid','transfer','transfertype','blind','extension','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','transferexten','origtransfererexten','transfereeuniqueid','calleridname','agententerreason','transfertargetuniqueid','clone','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','diffTime','agent','lodash','util','info','format','uniqueid','channel','queue','interface','calleridnum','then','type','agentacw','agentcomplete','acw','acwTimeout','request','CreateVoiceAgentReport','debug','[%s][agents][agentcalled]','destuniqueid','agentcalledAt','now','called','connectedlinename','membername','error','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswer','agentringnoanswerAt','lastevent','reason','timeout','ringtime','talktime','push','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','abandoned','holdtime','[%s][agents][agentconnect]'];(function(_0x74392f,_0x6328d2){var _0x4c2cd9=function(_0x5ec5c9){while(--_0x5ec5c9){_0x74392f['push'](_0x74392f['shift']());}};_0x4c2cd9(++_0x6328d2);}(_0x13f6,0x124));var _0x613f=function(_0x373a54,_0x55f0cd){_0x373a54=_0x373a54-0x0;var _0x2f8134=_0x13f6[_0x373a54];return _0x2f8134;};'use strict';var _=require(_0x613f('0x0'));var util=require(_0x613f('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x563492,_0xd04cfd){utils[_0x613f('0x2')](util[_0x613f('0x3')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x563492[_0x613f('0x4')],_0x563492[_0x613f('0x5')],_0x563492[_0x613f('0x6')],_0x563492['membername'],_0x563492[_0x613f('0x7')],_0x563492[_0x613f('0x8')],_0x563492['connectedlinenum'],_0x563492['lastevent']));if(_0x563492['queue']){utils['getVoiceQueueByName'](_0x563492[_0x613f('0x6')])[_0x613f('0x9')](function(_0x363736){if(_0x363736){_0x563492[_0x613f('0xa')]=_0x363736['type'];_0x563492[_0x613f('0xb')]=_0x563492[_0x613f('0xc')]?_0x363736[_0x613f('0xd')]:![];_0x563492['acwtime']=_0x563492[_0x613f('0xb')]?_0x363736[_0x613f('0xe')]:0x0;}utils[_0x613f('0xf')]('CreateVoiceAgentReport',_0x563492);});}else{utils[_0x613f('0xf')](_0x613f('0x10'),_0x563492);}if(_0xd04cfd){delete transfers[_0x563492['uniqueid']];}else{delete agents[_0x563492['destuniqueid']];}}exports['agentcalled']=function(_0x38d90a){try{utils[_0x613f('0x11')](util[_0x613f('0x3')](_0x613f('0x12'),_0x38d90a[_0x613f('0x4')]),_0x38d90a);agents[_0x38d90a[_0x613f('0x13')]]=_0x38d90a;agents[_0x38d90a[_0x613f('0x13')]][_0x613f('0x14')]=utils[_0x613f('0x15')]();agents[_0x38d90a[_0x613f('0x13')]]['lastevent']=_0x613f('0x16');agents[_0x38d90a['destuniqueid']]['connectedlinenum']=null;agents[_0x38d90a[_0x613f('0x13')]][_0x613f('0x17')]=null;utils['info'](util[_0x613f('0x3')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x38d90a[_0x613f('0x4')],agents[_0x38d90a[_0x613f('0x13')]][_0x613f('0x18')],_0x38d90a[_0x613f('0x13')]));}catch(_0x3c0feb){utils[_0x613f('0x19')](util['format']('[%s][agents][agentcalled]',_0x38d90a[_0x613f('0x4')]),_0x3c0feb);}};exports['agentringnoanswer']=function(_0x48493c){try{if(!_[_0x613f('0x1a')](agents[_0x48493c[_0x613f('0x13')]])){utils['debug'](util[_0x613f('0x3')](_0x613f('0x1b'),_0x48493c[_0x613f('0x4')]),_0x48493c);utils['info'](util['format'](_0x613f('0x1c'),_0x48493c[_0x613f('0x4')],agents[_0x48493c[_0x613f('0x13')]]['membername'],_0x48493c[_0x613f('0x13')]));agents[_0x48493c[_0x613f('0x13')]][_0x613f('0x1d')]=!![];agents[_0x48493c[_0x613f('0x13')]][_0x613f('0x1e')]=utils['now']();agents[_0x48493c[_0x613f('0x13')]][_0x613f('0x1f')]='timeout';agents[_0x48493c[_0x613f('0x13')]][_0x613f('0x20')]=_0x613f('0x21');agents[_0x48493c['destuniqueid']]['holdtime']=_0x48493c['ringtime']?parseInt(_0x48493c[_0x613f('0x22')])/0x3e8:0x0;agents[_0x48493c['destuniqueid']][_0x613f('0x23')]=0x0;unanswered[_0x613f('0x24')](_0x48493c['destuniqueid']);}}catch(_0x121241){utils[_0x613f('0x19')](util['format']('[%s][agents][agentringnoanswer]',_0x48493c['uniqueid']),_0x121241);}};exports[_0x613f('0x25')]=function(_0x7c1a94){try{_[_0x613f('0x26')](agents,function(_0x47f4af,_0x23eda8){if(_0x47f4af[_0x613f('0x4')]==_0x7c1a94[_0x613f('0x4')]&&!_[_0x613f('0x27')](unanswered,_0x47f4af['destuniqueid'])){utils[_0x613f('0x11')](util[_0x613f('0x3')](_0x613f('0x28'),_0x7c1a94[_0x613f('0x4')]),_0x7c1a94);utils[_0x613f('0x2')](util[_0x613f('0x3')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x7c1a94[_0x613f('0x4')],_0x47f4af[_0x613f('0x18')],_0x47f4af[_0x613f('0x13')]));_0x47f4af['agentringnoanswer']=!![];_0x47f4af[_0x613f('0x1e')]=utils['now']();_0x47f4af[_0x613f('0x1f')]=_0x613f('0x29');_0x47f4af[_0x613f('0x20')]=_0x613f('0x29');_0x47f4af[_0x613f('0x2a')]=_0x7c1a94[_0x613f('0x2a')];_0x47f4af['talktime']=0x0;writeDB(_0x47f4af);}});}catch(_0x1a18ce){utils[_0x613f('0x19')](util[_0x613f('0x3')](_0x613f('0x28'),_0x7c1a94[_0x613f('0x4')]),_0x1a18ce);}};exports['agentconnect']=function(_0x59236e){try{if(agents[_0x59236e['destuniqueid']]){utils[_0x613f('0x11')](util[_0x613f('0x3')](_0x613f('0x2b'),_0x59236e[_0x613f('0x4')]),_0x59236e);utils['info'](util[_0x613f('0x3')](_0x613f('0x2c'),_0x59236e['uniqueid'],agents[_0x59236e[_0x613f('0x13')]]['membername'],_0x59236e[_0x613f('0x13')]));agents[_0x59236e['destuniqueid']][_0x613f('0x2d')]=utils['now']();agents[_0x59236e[_0x613f('0x13')]][_0x613f('0x2e')]=_0x59236e[_0x613f('0x2e')];agents[_0x59236e['destuniqueid']][_0x613f('0x17')]=_0x59236e[_0x613f('0x17')];agents[_0x59236e[_0x613f('0x13')]][_0x613f('0x2a')]=_0x59236e[_0x613f('0x22')];agents[_0x59236e[_0x613f('0x13')]][_0x613f('0x1f')]=_0x613f('0x2f');_[_0x613f('0x26')](agents,function(_0x3313c1,_0x4da8d3){if(_0x3313c1[_0x613f('0x13')]!=_0x59236e[_0x613f('0x13')]&&_0x3313c1[_0x613f('0x4')]==_0x59236e[_0x613f('0x4')]){_0x3313c1[_0x613f('0x23')]=0x0;_0x3313c1[_0x613f('0x2a')]=_0x59236e[_0x613f('0x22')];_0x3313c1['agentringnoanswer']=!![];_0x3313c1[_0x613f('0x1e')]=utils[_0x613f('0x15')]();_0x3313c1[_0x613f('0x1f')]=_0x613f('0x30');_0x3313c1[_0x613f('0x20')]=_0x613f('0x30');_0x3313c1[_0x613f('0x31')]=_0x59236e['destuniqueid'];_0x3313c1[_0x613f('0x32')]=_0x59236e[_0x613f('0x18')];writeDB(_0x3313c1);}});}}catch(_0x3bb605){utils[_0x613f('0x19')](util[_0x613f('0x3')](_0x613f('0x2b'),_0x59236e[_0x613f('0x4')]),_0x3bb605);}};exports[_0x613f('0xc')]=function(_0x403feb){try{if(!_[_0x613f('0x1a')](agents[_0x403feb[_0x613f('0x13')]])){utils[_0x613f('0x11')](util[_0x613f('0x3')]('[%s][agents][agentcomplete]',_0x403feb[_0x613f('0x4')]),_0x403feb);utils[_0x613f('0x2')](util[_0x613f('0x3')](_0x613f('0x33'),_0x403feb['uniqueid'],agents[_0x403feb[_0x613f('0x13')]][_0x613f('0x18')],_0x403feb[_0x613f('0x13')]));agents[_0x403feb[_0x613f('0x13')]][_0x613f('0xc')]=!![];agents[_0x403feb[_0x613f('0x13')]][_0x613f('0x34')]=utils[_0x613f('0x15')]();agents[_0x403feb[_0x613f('0x13')]][_0x613f('0x23')]=utils['diffTime'](agents[_0x403feb['destuniqueid']][_0x613f('0x34')],agents[_0x403feb[_0x613f('0x13')]]['agentconnectAt']);agents[_0x403feb[_0x613f('0x13')]][_0x613f('0x20')]=_0x403feb[_0x613f('0x20')];agents[_0x403feb[_0x613f('0x13')]][_0x613f('0x1f')]=_0x613f('0x35');writeDB(agents[_0x403feb[_0x613f('0x13')]]);}}catch(_0x3a7f95){utils[_0x613f('0x19')](util[_0x613f('0x3')](_0x613f('0x36'),_0x403feb[_0x613f('0x4')]),_0x3a7f95);}};exports[_0x613f('0x37')]=function(_0x17f8e5){try{if(!_[_0x613f('0x1a')](agents[_0x17f8e5[_0x613f('0x38')]])){utils[_0x613f('0x11')](util[_0x613f('0x3')]('[%s][agents][blindtransfer]',_0x17f8e5['uniqueid']),_0x17f8e5);utils[_0x613f('0x2')](util[_0x613f('0x3')]('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0x17f8e5['uniqueid'],agents[_0x17f8e5[_0x613f('0x38')]]['membername'],agents[_0x17f8e5['transfereruniqueid']][_0x613f('0x4')]));agents[_0x17f8e5[_0x613f('0x38')]][_0x613f('0x39')]=!![];agents[_0x17f8e5['transfereruniqueid']][_0x613f('0x3a')]=_0x613f('0x3b');agents[_0x17f8e5['transfereruniqueid']]['transferexten']=_0x17f8e5[_0x613f('0x3c')];agents[_0x17f8e5[_0x613f('0x38')]][_0x613f('0x3d')]=agents[_0x17f8e5[_0x613f('0x38')]][_0x613f('0x4')];}}catch(_0x395357){utils[_0x613f('0x19')](util['format']('[%s][agents][blindtransfer]',_0x17f8e5[_0x613f('0x4')]),_0x395357);}};exports['attendedtransfer']=function(_0x5dd54e){try{utils[_0x613f('0x11')](util[_0x613f('0x3')](_0x613f('0x3e'),_0x5dd54e['origtransfereruniqueid']),_0x5dd54e);if(_0x5dd54e[_0x613f('0x3f')]==_0x5dd54e[_0x613f('0x40')]){if(!_[_0x613f('0x1a')](agents[_0x5dd54e[_0x613f('0x41')]])){utils[_0x613f('0x2')](util[_0x613f('0x3')](_0x613f('0x42'),_0x5dd54e['origtransfereruniqueid'],agents[_0x5dd54e[_0x613f('0x41')]]['membername']));agents[_0x5dd54e[_0x613f('0x41')]][_0x613f('0x39')]=!![];agents[_0x5dd54e[_0x613f('0x41')]][_0x613f('0x3a')]=_0x613f('0x43');agents[_0x5dd54e[_0x613f('0x41')]][_0x613f('0x44')]=_0x5dd54e[_0x613f('0x45')];agents[_0x5dd54e[_0x613f('0x41')]][_0x613f('0x3d')]=_0x5dd54e[_0x613f('0x3f')];}if(_0x5dd54e[_0x613f('0x46')]&&agents[_0x5dd54e[_0x613f('0x46')]]){agents[_0x5dd54e['transfereeuniqueid']]['agententerreason']=0x1;transfers[_0x5dd54e[_0x613f('0x46')]]=_['clone'](agents[_0x5dd54e[_0x613f('0x46')]]);transfers[_0x5dd54e[_0x613f('0x46')]][_0x613f('0x8')]=agents[_0x5dd54e[_0x613f('0x41')]][_0x613f('0x8')];transfers[_0x5dd54e[_0x613f('0x46')]][_0x613f('0x47')]=agents[_0x5dd54e[_0x613f('0x41')]][_0x613f('0x47')];transfers[_0x5dd54e[_0x613f('0x46')]][_0x613f('0x14')]=utils['now']();transfers[_0x5dd54e[_0x613f('0x46')]][_0x613f('0x2d')]=utils[_0x613f('0x15')]();transfers[_0x5dd54e[_0x613f('0x46')]]['holdtime']=0x0;transfers[_0x5dd54e[_0x613f('0x46')]][_0x613f('0x48')]=0x2;}}else if(_0x5dd54e['secondtransfereruniqueid']==_0x5dd54e['secondtransfererlinkedid']){if(!_[_0x613f('0x1a')](agents[_0x5dd54e['origtransfereruniqueid']])){utils['info'](util['format'](_0x613f('0x42'),_0x5dd54e['origtransfereruniqueid'],agents[_0x5dd54e['origtransfereruniqueid']]['membername']));agents[_0x5dd54e[_0x613f('0x3f')]][_0x613f('0x39')]=!![];agents[_0x5dd54e['origtransfereruniqueid']][_0x613f('0x3a')]=_0x613f('0x43');agents[_0x5dd54e[_0x613f('0x3f')]][_0x613f('0x44')]=_0x5dd54e['secondtransfererexten'];agents[_0x5dd54e[_0x613f('0x3f')]][_0x613f('0x3d')]=_0x5dd54e['secondtransfereruniqueid'];}if(_0x5dd54e[_0x613f('0x49')]&&agents[_0x5dd54e[_0x613f('0x49')]]){agents[_0x5dd54e[_0x613f('0x49')]][_0x613f('0x48')]=0x1;transfers[_0x5dd54e[_0x613f('0x49')]]=_[_0x613f('0x4a')](agents[_0x5dd54e[_0x613f('0x49')]]);transfers[_0x5dd54e[_0x613f('0x49')]][_0x613f('0x8')]=agents[_0x5dd54e[_0x613f('0x3f')]][_0x613f('0x8')];transfers[_0x5dd54e[_0x613f('0x49')]]['calleridname']=agents[_0x5dd54e[_0x613f('0x3f')]][_0x613f('0x47')];transfers[_0x5dd54e[_0x613f('0x49')]][_0x613f('0x14')]=utils[_0x613f('0x15')]();transfers[_0x5dd54e[_0x613f('0x49')]]['agentconnectAt']=utils[_0x613f('0x15')]();transfers[_0x5dd54e[_0x613f('0x49')]][_0x613f('0x2a')]=0x0;transfers[_0x5dd54e[_0x613f('0x49')]][_0x613f('0x48')]=0x2;}}}catch(_0x2ae459){utils['error'](util['format'](_0x613f('0x3e'),_0x5dd54e[_0x613f('0x3f')]),_0x2ae459);}};exports[_0x613f('0x4b')]=function(_0xddcd6){try{utils['debug'](util[_0x613f('0x3')](_0x613f('0x4c'),_0xddcd6[_0x613f('0x4')]),_0xddcd6);if(agents[_0xddcd6[_0x613f('0x4')]]&&agents[_0xddcd6['uniqueid']][_0x613f('0x20')]===_0x613f('0x21')){if(_0xddcd6[_0x613f('0x4d')]==='21'){agents[_0xddcd6[_0x613f('0x4')]][_0x613f('0x20')]=_0x613f('0x4e');agents[_0xddcd6[_0x613f('0x4')]][_0x613f('0x1f')]='rejected';}utils[_0x613f('0x2')](util[_0x613f('0x3')](_0x613f('0x4f'),_0xddcd6[_0x613f('0x4')],agents[_0xddcd6[_0x613f('0x4')]][_0x613f('0x18')],agents[_0xddcd6[_0x613f('0x4')]][_0x613f('0x20')],agents[_0xddcd6[_0x613f('0x4')]][_0x613f('0x1f')]));writeDB(agents[_0xddcd6['uniqueid']]);var _0x2c4b88=unanswered[_0x613f('0x50')](_0xddcd6[_0x613f('0x4')]);if(_0x2c4b88>-0x1){unanswered[_0x613f('0x51')](_0x2c4b88,0x1);}}if(transfers[_0xddcd6[_0x613f('0x4')]]){transfers[_0xddcd6[_0x613f('0x4')]][_0x613f('0xc')]=!![];transfers[_0xddcd6[_0x613f('0x4')]][_0x613f('0x34')]=utils[_0x613f('0x15')]();transfers[_0xddcd6[_0x613f('0x4')]]['talktime']=utils[_0x613f('0x52')](transfers[_0xddcd6[_0x613f('0x4')]][_0x613f('0x34')],transfers[_0xddcd6[_0x613f('0x4')]][_0x613f('0x2d')]);transfers[_0xddcd6[_0x613f('0x4')]][_0x613f('0x20')]=_0x613f('0x53');transfers[_0xddcd6[_0x613f('0x4')]][_0x613f('0x1f')]=_0x613f('0x35');utils[_0x613f('0x2')](util['format'](_0x613f('0x4f'),_0xddcd6[_0x613f('0x4')],transfers[_0xddcd6['uniqueid']][_0x613f('0x18')],transfers[_0xddcd6['uniqueid']][_0x613f('0x20')],transfers[_0xddcd6['uniqueid']]['lastevent']));writeDB(transfers[_0xddcd6[_0x613f('0x4')]],!![]);}if(agents[_0xddcd6[_0x613f('0x4')]]&&agents[_0xddcd6[_0x613f('0x4')]][_0x613f('0x2d')]){agents[_0xddcd6[_0x613f('0x4')]][_0x613f('0xc')]=!![];agents[_0xddcd6[_0x613f('0x4')]]['agentcompleteAt']=utils[_0x613f('0x15')]();agents[_0xddcd6[_0x613f('0x4')]][_0x613f('0x23')]=utils[_0x613f('0x52')](agents[_0xddcd6[_0x613f('0x4')]]['agentcompleteAt'],agents[_0xddcd6[_0x613f('0x4')]][_0x613f('0x2d')]);agents[_0xddcd6['uniqueid']][_0x613f('0x20')]=agents[_0xddcd6[_0x613f('0x4')]][_0x613f('0x39')]?'transfer':'agent';agents[_0xddcd6['uniqueid']][_0x613f('0x1f')]=_0x613f('0x35');utils['info'](util[_0x613f('0x3')](_0x613f('0x4f'),_0xddcd6[_0x613f('0x4')],agents[_0xddcd6['uniqueid']][_0x613f('0x18')],agents[_0xddcd6['uniqueid']][_0x613f('0x20')],agents[_0xddcd6['uniqueid']]['lastevent']));writeDB(agents[_0xddcd6[_0x613f('0x4')]]);}}catch(_0x1b5f6e){utils[_0x613f('0x19')](util[_0x613f('0x3')](_0x613f('0x4c'),_0xddcd6[_0x613f('0x4')]),_0x1b5f6e);}};
\ No newline at end of file
index 35621f8..9277392 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c0a=['starttime','billableseconds','[%s][calls][hangup]','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','mohtime','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr','lastIndexOf','noop','execif','gotoif','lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','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','connectedlinenum','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','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','disposition','toNumber','error','hangup','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','diffTime'];(function(_0x4ae8f8,_0x40a58e){var _0x24c8c6=function(_0x2457da){while(--_0x2457da){_0x4ae8f8['push'](_0x4ae8f8['shift']());}};_0x24c8c6(++_0x40a58e);}(_0x1c0a,0x17c));var _0xa1c0=function(_0x47be0c,_0x44a438){_0x47be0c=_0x47be0c-0x0;var _0x40bf94=_0x1c0a[_0x47be0c];return _0x40bf94;};'use strict';var _=require(_0xa1c0('0x0'));var util=require(_0xa1c0('0x1'));var utils=require(_0xa1c0('0x2'));var transfers=require('./transfers.controller');var dispositions=[_0xa1c0('0x3'),_0xa1c0('0x4'),_0xa1c0('0x4'),_0xa1c0('0x3'),_0xa1c0('0x3'),'NO\x20ANSWER',_0xa1c0('0x5'),'BUSY','FAILED',_0xa1c0('0x4'),_0xa1c0('0x4')];var channels={};function writeDB(_0x1af196){var _0xe12be5;if(transfers[_0xa1c0('0x6')][_0x1af196[_0xa1c0('0x7')]]){_0xe12be5=_0x1af196[_0xa1c0('0x7')];_0x1af196[_0xa1c0('0x7')]=transfers[_0xa1c0('0x6')][_0x1af196['uniqueid']][_0xa1c0('0x8')];}utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')](_0xa1c0('0xb'),_0x1af196[_0xa1c0('0x7')],_0x1af196[_0xa1c0('0xc')],_0x1af196[_0xa1c0('0xd')],_0x1af196[_0xa1c0('0xe')],_0x1af196[_0xa1c0('0xf')],_0x1af196[_0xa1c0('0x10')],_0x1af196[_0xa1c0('0x11')],_0x1af196['lastevent']));if(_0x1af196[_0xa1c0('0x12')]){utils[_0xa1c0('0x13')](_0x1af196[_0xa1c0('0x12')])[_0xa1c0('0x14')](function(_0x36e888){if(_0x36e888){_0x1af196[_0xa1c0('0x15')]=_0x36e888['id'];}utils[_0xa1c0('0x16')](_0xa1c0('0x17'),_0x1af196);});}else{utils[_0xa1c0('0x16')](_0xa1c0('0x17'),_0x1af196);}if(channels[_0x1af196[_0xa1c0('0x7')]]){delete channels[_0x1af196['uniqueid']];}else if(_0xe12be5&&channels[_0xe12be5]){delete transfers[_0xa1c0('0x6')][_0xe12be5];delete channels[_0xe12be5];}}exports[_0xa1c0('0x18')]=function(_0x16cd22){try{utils[_0xa1c0('0x19')](util[_0xa1c0('0xa')](_0xa1c0('0x1a'),_0x16cd22[_0xa1c0('0x7')]),_0x16cd22);if(_0x16cd22[_0xa1c0('0x7')]==_0x16cd22[_0xa1c0('0x1b')]&&_0x16cd22[_0xa1c0('0xc')]!=_0xa1c0('0x1c')){utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')](_0xa1c0('0x1d'),_0x16cd22[_0xa1c0('0x7')],_0x16cd22[_0xa1c0('0x1e')],_0x16cd22[_0xa1c0('0x1f')]));channels[_0x16cd22[_0xa1c0('0x7')]]={'uniqueid':_0x16cd22[_0xa1c0('0x7')],'accountcode':_0x16cd22[_0xa1c0('0x12')],'source':_0x16cd22[_0xa1c0('0x10')],'destination':_0x16cd22[_0xa1c0('0x1f')],'destinationcontext':_0x16cd22['context'],'channel':_0x16cd22[_0xa1c0('0xc')],'starttime':utils[_0xa1c0('0x20')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xa1c0('0x3'),'amaflags':_0xa1c0('0x21')};}}catch(_0x50df47){utils['error'](util[_0xa1c0('0xa')](_0xa1c0('0x1a'),_0x16cd22[_0xa1c0('0x7')]),_0x50df47);}};exports[_0xa1c0('0x22')]=function(_0x5c1d22){try{utils[_0xa1c0('0x19')](util[_0xa1c0('0xa')](_0xa1c0('0x23'),_0x5c1d22[_0xa1c0('0x7')]),_0x5c1d22);if(!_[_0xa1c0('0x24')](channels[_0x5c1d22[_0xa1c0('0x7')]])&&_0x5c1d22[_0xa1c0('0x25')]==0x6){utils['info'](util[_0xa1c0('0xa')](_0xa1c0('0x26'),_0x5c1d22['uniqueid'],_0x5c1d22[_0xa1c0('0x1e')],_0x5c1d22[_0xa1c0('0xc')]));if(_[_0xa1c0('0x24')](channels[_0x5c1d22[_0xa1c0('0x7')]][_0xa1c0('0x27')])){channels[_0x5c1d22[_0xa1c0('0x7')]]['systemanswertime']=utils['now']();}}else if(!_[_0xa1c0('0x24')](channels[_0x5c1d22['linkedid']])&&_0x5c1d22[_0xa1c0('0x25')]==0x6&&_0x5c1d22[_0xa1c0('0x1e')]!='transfer'){utils[_0xa1c0('0x9')](util['format'](_0xa1c0('0x28'),_0x5c1d22['uniqueid'],_0x5c1d22[_0xa1c0('0x1b')],_0x5c1d22[_0xa1c0('0x1e')],_0x5c1d22['channel']));channels[_0x5c1d22[_0xa1c0('0x1b')]][_0xa1c0('0x12')]=_0x5c1d22[_0xa1c0('0x12')];channels[_0x5c1d22[_0xa1c0('0x1b')]][_0xa1c0('0x29')]=_0x5c1d22[_0xa1c0('0xc')];if(_[_0xa1c0('0x24')](channels[_0x5c1d22[_0xa1c0('0x1b')]][_0xa1c0('0x2a')])){channels[_0x5c1d22[_0xa1c0('0x1b')]]['answertime']=utils[_0xa1c0('0x20')]();}channels[_0x5c1d22[_0xa1c0('0x1b')]][_0xa1c0('0x2b')]=dispositions[_[_0xa1c0('0x2c')](_0x5c1d22['channelstate'])]||_0xa1c0('0x5');}}catch(_0x4a265c){utils[_0xa1c0('0x2d')](util['format']('[%s][calls][newstate]',_0x5c1d22[_0xa1c0('0x7')]),_0x4a265c);}};exports[_0xa1c0('0x2e')]=function(_0x1344cb){try{if(!_[_0xa1c0('0x24')](channels[_0x1344cb['uniqueid']])){utils[_0xa1c0('0x19')](util[_0xa1c0('0xa')]('[%s][calls][hangup]',_0x1344cb['uniqueid']),_0x1344cb);if(_[_0xa1c0('0x24')](channels[_0x1344cb[_0xa1c0('0x7')]][_0xa1c0('0x2f')])){channels[_0x1344cb[_0xa1c0('0x7')]][_0xa1c0('0x2f')]=_0x1344cb[_0xa1c0('0x30')]+'\x20<'+_0x1344cb[_0xa1c0('0x10')]+'>';}utils['info'](util[_0xa1c0('0xa')](_0xa1c0('0x31'),_0x1344cb[_0xa1c0('0x7')],channels[_0x1344cb[_0xa1c0('0x7')]][_0xa1c0('0x2f')],_0x1344cb[_0xa1c0('0x32')]));channels[_0x1344cb[_0xa1c0('0x7')]]['endtime']=utils['now']();channels[_0x1344cb[_0xa1c0('0x7')]]['duration']=utils[_0xa1c0('0x33')](channels[_0x1344cb[_0xa1c0('0x7')]]['endtime'],channels[_0x1344cb['uniqueid']][_0xa1c0('0x34')]);channels[_0x1344cb['uniqueid']][_0xa1c0('0x35')]=channels[_0x1344cb[_0xa1c0('0x7')]][_0xa1c0('0x2a')]?utils[_0xa1c0('0x33')](channels[_0x1344cb['uniqueid']]['endtime'],channels[_0x1344cb[_0xa1c0('0x7')]][_0xa1c0('0x2a')]):0x0;writeDB(channels[_0x1344cb[_0xa1c0('0x7')]]);}}catch(_0x1d29f8){utils['error'](util[_0xa1c0('0xa')](_0xa1c0('0x36'),_0x1344cb[_0xa1c0('0x7')]),_0x1d29f8);}};exports[_0xa1c0('0x37')]=function(_0x113919){try{if(!_[_0xa1c0('0x24')](channels[_0x113919[_0xa1c0('0x38')]])){utils[_0xa1c0('0x19')](util[_0xa1c0('0xa')](_0xa1c0('0x39'),_0x113919[_0xa1c0('0x3a')]),_0x113919);if(channels[_0x113919['localtwolinkedid']][_0xa1c0('0xc')]==_0x113919['transfereechannel']){utils['info'](util[_0xa1c0('0xa')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x113919['origtransfereruniqueid'],_0x113919['localtwolinkedid'],_0x113919[_0xa1c0('0x3b')]));channels[_0x113919[_0xa1c0('0x38')]][_0xa1c0('0x29')]=_0x113919['secondtransfererchannel'];channels[_0x113919[_0xa1c0('0x38')]][_0xa1c0('0x3c')]=_0xa1c0('0x3d');}else if(channels[_0x113919[_0xa1c0('0x38')]][_0xa1c0('0xc')]=_0x113919[_0xa1c0('0x3e')]){utils['info'](util[_0xa1c0('0xa')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x113919[_0xa1c0('0x3a')],_0x113919['localtwolinkedid'],_0x113919['origtransfererchannel']));channels[_0x113919[_0xa1c0('0x38')]][_0xa1c0('0x29')]=_0x113919[_0xa1c0('0x3f')];channels[_0x113919[_0xa1c0('0x38')]]['userfield']=_0xa1c0('0x3d');}}}catch(_0x471dea){utils['error'](util[_0xa1c0('0xa')](_0xa1c0('0x39'),_0x113919[_0xa1c0('0x3a')]),_0x471dea);}};exports[_0xa1c0('0x40')]=function(_0x184257){try{if(!_['isNil'](channels[_0x184257[_0xa1c0('0x7')]])){utils[_0xa1c0('0x19')](util['format'](_0xa1c0('0x41'),_0x184257[_0xa1c0('0x7')]),_0x184257);channels[_0x184257[_0xa1c0('0x7')]]['musiconholdstartAt']=utils['now']();utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')](_0xa1c0('0x42'),_0x184257[_0xa1c0('0x7')],channels[_0x184257[_0xa1c0('0x7')]][_0xa1c0('0x43')]));}}catch(_0x2a2686){utils[_0xa1c0('0x2d')](util[_0xa1c0('0xa')](_0xa1c0('0x41'),_0x184257[_0xa1c0('0x7')]),_0x2a2686);}};exports[_0xa1c0('0x44')]=function(_0x4c8f43){try{if(!_[_0xa1c0('0x24')](channels[_0x4c8f43[_0xa1c0('0x7')]])){utils['debug'](util[_0xa1c0('0xa')]('[%s][calls][musiconholdstop]',_0x4c8f43['uniqueid']),_0x4c8f43);if(!_[_0xa1c0('0x24')](channels[_0x4c8f43[_0xa1c0('0x7')]][_0xa1c0('0x43')])){channels[_0x4c8f43[_0xa1c0('0x7')]]['mohtime']+=utils[_0xa1c0('0x33')](utils['now'](),channels[_0x4c8f43[_0xa1c0('0x7')]]['musiconholdstartAt']);utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x4c8f43[_0xa1c0('0x7')],channels[_0x4c8f43['uniqueid']][_0xa1c0('0x45')]));delete channels[_0x4c8f43[_0xa1c0('0x7')]][_0xa1c0('0x43')];}}}catch(_0x2c3277){utils[_0xa1c0('0x2d')](util[_0xa1c0('0xa')]('[%s][calls][musiconholdstop]',_0x4c8f43[_0xa1c0('0x7')]),_0x2c3277);}};exports['varset']=function(_0x12b209){try{if(!_['isNil'](channels[_0x12b209[_0xa1c0('0x7')]])){utils[_0xa1c0('0x19')](util[_0xa1c0('0xa')](_0xa1c0('0x46'),_0x12b209['uniqueid']),_0x12b209);if(!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x48')])){utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')](_0xa1c0('0x49'),_0x12b209[_0xa1c0('0x7')],_0x12b209['value']));channels[_0x12b209['uniqueid']]['source']=_0x12b209[_0xa1c0('0x4a')];}if(!_['isNil'](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x4b')])){utils[_0xa1c0('0x9')](util['format'](_0xa1c0('0x4c'),_0x12b209[_0xa1c0('0x7')],_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x4d')]=_0x12b209['value'];channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x2f')]='\x22'+_0x12b209['value']+'\x22\x20<'+_0x12b209[_0xa1c0('0x4a')]+'>';}if(!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x4e')])||!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x4f')])){utils[_0xa1c0('0x9')](util['format'](_0xa1c0('0x50'),_0x12b209[_0xa1c0('0x7')],!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x4e')])?_0xa1c0('0x4e'):_0xa1c0('0x4f'),_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209['uniqueid']][_0xa1c0('0x2f')]=_0x12b209['value'];}if(!_['isNil'](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x51')])||!_['isNil'](_0x12b209[_0xa1c0('0x47')]['xmcs-queue'])){utils['info'](util[_0xa1c0('0xa')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x12b209[_0xa1c0('0x7')],!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x51')])?_0xa1c0('0x51'):_0xa1c0('0x52'),_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x53')]=_0xa1c0('0x54');channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x55')]=_0x12b209[_0xa1c0('0x4a')];channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0xd')]=!![];}if(!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x56')])){utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')](_0xa1c0('0x57'),_0x12b209[_0xa1c0('0x7')],_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x58')]=_0x12b209['value'];}if(!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x59')])){utils[_0xa1c0('0x9')](util['format'](_0xa1c0('0x5a'),_0x12b209['uniqueid'],_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209[_0xa1c0('0x7')]]['type']=_0x12b209[_0xa1c0('0x4a')];}if(!_[_0xa1c0('0x24')](_0x12b209['variable'][_0xa1c0('0x5b')])){utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')](_0xa1c0('0x5c'),_0x12b209[_0xa1c0('0x7')],_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x5d')]=_0x12b209[_0xa1c0('0x4a')];}if(!_[_0xa1c0('0x24')](_0x12b209['variable']['sipcallid'])){utils['info'](util[_0xa1c0('0xa')](_0xa1c0('0x5e'),_0x12b209['uniqueid'],_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x5f')]=_0x12b209['value'];}}}catch(_0x36ac80){utils[_0xa1c0('0x2d')](util['format'](_0xa1c0('0x46'),_0x12b209[_0xa1c0('0x7')]),_0x36ac80);}};exports[_0xa1c0('0x60')]=function(_0x1e7839){try{if(!_['isNil'](channels[_0x1e7839[_0xa1c0('0x7')]])){utils[_0xa1c0('0x19')](util[_0xa1c0('0xa')](_0xa1c0('0x61'),_0x1e7839[_0xa1c0('0x7')]),_0x1e7839);utils['info'](util['format'](_0xa1c0('0x62'),_0x1e7839[_0xa1c0('0x7')],_0x1e7839[_0xa1c0('0x63')],_0x1e7839[_0xa1c0('0x64')]));if(_0x1e7839[_0xa1c0('0x63')][_0xa1c0('0x65')]()==_0xa1c0('0x66')&&_['startsWith'](_0x1e7839[_0xa1c0('0x64')][_0xa1c0('0x65')](),_0xa1c0('0x67'))){var _0x4a47e4=_0x1e7839['appdata']['split']('=');var _0x7ae9c9=_0x4a47e4[0x0]['substring'](_0x4a47e4[0x0][_0xa1c0('0x68')]('(')+0x1,_0x4a47e4[0x0][_0xa1c0('0x68')](')'));var _0x9617f7=_0x4a47e4[0x1];channels[_0x1e7839[_0xa1c0('0x7')]][_0x7ae9c9]=_0x9617f7;}if(!_['includes']([_0xa1c0('0x2e'),_0xa1c0('0x69'),_0xa1c0('0x6a'),_0xa1c0('0x66'),_0xa1c0('0x6b')],_0x1e7839['application']['toLowerCase']())){channels[_0x1e7839[_0xa1c0('0x7')]][_0xa1c0('0x53')]=_0x1e7839[_0xa1c0('0x63')];channels[_0x1e7839['uniqueid']][_0xa1c0('0x55')]=_0x1e7839[_0xa1c0('0x64')];}}}catch(_0x87de0b){utils[_0xa1c0('0x2d')](util['format'](_0xa1c0('0x61'),_0x1e7839[_0xa1c0('0x7')]),_0x87de0b);}};
\ No newline at end of file
+var _0xd7bd=['lastevent','getUserByInternal','accountcode','then','UserId','request','CreateVoiceCallReport','debug','[%s][calls][newchannel]','linkedid','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','error','newstate','format','isNil','info','systemanswertime','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','answertime','disposition','toNumber','[%s][calls][newstate]','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','now','duration','starttime','billableseconds','attendedtransfer','localtwolinkedid','transfereechannel','origtransfereruniqueid','secondtransfererchannel','destinationchannel','userfield','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfererchannel','_attended','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','[%s][calls][musiconholdstop]','diffTime','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','value','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','cdr','split','substring','lastIndexOf','includes','noop','execif','gotoif','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','membername','calleridnum','connectedlinenum'];(function(_0x5585a6,_0x1ad47d){var _0x36a760=function(_0x1b4367){while(--_0x1b4367){_0x5585a6['push'](_0x5585a6['shift']());}};_0x36a760(++_0x1ad47d);}(_0xd7bd,0xce));var _0xdd7b=function(_0x1ff575,_0xdba21f){_0x1ff575=_0x1ff575-0x0;var _0x48fc9e=_0xd7bd[_0x1ff575];return _0x48fc9e;};'use strict';var _=require(_0xdd7b('0x0'));var util=require(_0xdd7b('0x1'));var utils=require(_0xdd7b('0x2'));var transfers=require(_0xdd7b('0x3'));var dispositions=[_0xdd7b('0x4'),_0xdd7b('0x5'),'FAILED',_0xdd7b('0x4'),_0xdd7b('0x4'),_0xdd7b('0x4'),_0xdd7b('0x6'),_0xdd7b('0x7'),'FAILED','FAILED','FAILED'];var channels={};function writeDB(_0x4b642f){var _0x196933;if(transfers[_0xdd7b('0x8')][_0x4b642f['uniqueid']]){_0x196933=_0x4b642f[_0xdd7b('0x9')];_0x4b642f[_0xdd7b('0x9')]=transfers[_0xdd7b('0x8')][_0x4b642f[_0xdd7b('0x9')]][_0xdd7b('0xa')];}utils['info'](util['format']('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x4b642f['uniqueid'],_0x4b642f['channel'],_0x4b642f['queue'],_0x4b642f[_0xdd7b('0xb')],_0x4b642f['interface'],_0x4b642f[_0xdd7b('0xc')],_0x4b642f[_0xdd7b('0xd')],_0x4b642f[_0xdd7b('0xe')]));if(_0x4b642f['accountcode']){utils[_0xdd7b('0xf')](_0x4b642f[_0xdd7b('0x10')])[_0xdd7b('0x11')](function(_0x2f2fef){if(_0x2f2fef){_0x4b642f[_0xdd7b('0x12')]=_0x2f2fef['id'];}utils[_0xdd7b('0x13')](_0xdd7b('0x14'),_0x4b642f);});}else{utils[_0xdd7b('0x13')](_0xdd7b('0x14'),_0x4b642f);}if(channels[_0x4b642f[_0xdd7b('0x9')]]){delete channels[_0x4b642f[_0xdd7b('0x9')]];}else if(_0x196933&&channels[_0x196933]){delete transfers[_0xdd7b('0x8')][_0x196933];delete channels[_0x196933];}}exports['newchannel']=function(_0x130188){try{utils[_0xdd7b('0x15')](util['format'](_0xdd7b('0x16'),_0x130188[_0xdd7b('0x9')]),_0x130188);if(_0x130188[_0xdd7b('0x9')]==_0x130188[_0xdd7b('0x17')]&&_0x130188[_0xdd7b('0x18')]!=_0xdd7b('0x19')){utils['info'](util['format'](_0xdd7b('0x1a'),_0x130188['uniqueid'],_0x130188[_0xdd7b('0x1b')],_0x130188[_0xdd7b('0x1c')]));channels[_0x130188['uniqueid']]={'uniqueid':_0x130188[_0xdd7b('0x9')],'accountcode':_0x130188[_0xdd7b('0x10')],'source':_0x130188[_0xdd7b('0xc')],'destination':_0x130188[_0xdd7b('0x1c')],'destinationcontext':_0x130188[_0xdd7b('0x1b')],'channel':_0x130188[_0xdd7b('0x18')],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xdd7b('0x4'),'amaflags':'DOCUMENTATION'};}}catch(_0x2dd288){utils[_0xdd7b('0x1d')](util['format'](_0xdd7b('0x16'),_0x130188['uniqueid']),_0x2dd288);}};exports[_0xdd7b('0x1e')]=function(_0x58a90c){try{utils['debug'](util[_0xdd7b('0x1f')]('[%s][calls][newstate]',_0x58a90c['uniqueid']),_0x58a90c);if(!_[_0xdd7b('0x20')](channels[_0x58a90c[_0xdd7b('0x9')]])&&_0x58a90c['channelstate']==0x6){utils[_0xdd7b('0x21')](util['format']('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x58a90c[_0xdd7b('0x9')],_0x58a90c[_0xdd7b('0x1b')],_0x58a90c[_0xdd7b('0x18')]));if(_['isNil'](channels[_0x58a90c[_0xdd7b('0x9')]][_0xdd7b('0x22')])){channels[_0x58a90c[_0xdd7b('0x9')]][_0xdd7b('0x22')]=utils['now']();}}else if(!_[_0xdd7b('0x20')](channels[_0x58a90c[_0xdd7b('0x17')]])&&_0x58a90c['channelstate']==0x6&&_0x58a90c[_0xdd7b('0x1b')]!='transfer'){utils[_0xdd7b('0x21')](util[_0xdd7b('0x1f')](_0xdd7b('0x23'),_0x58a90c[_0xdd7b('0x9')],_0x58a90c[_0xdd7b('0x17')],_0x58a90c['context'],_0x58a90c[_0xdd7b('0x18')]));channels[_0x58a90c[_0xdd7b('0x17')]][_0xdd7b('0x10')]=_0x58a90c[_0xdd7b('0x10')];channels[_0x58a90c[_0xdd7b('0x17')]]['destinationchannel']=_0x58a90c['channel'];if(_[_0xdd7b('0x20')](channels[_0x58a90c[_0xdd7b('0x17')]]['answertime'])){channels[_0x58a90c['linkedid']][_0xdd7b('0x24')]=utils['now']();}channels[_0x58a90c[_0xdd7b('0x17')]][_0xdd7b('0x25')]=dispositions[_[_0xdd7b('0x26')](_0x58a90c['channelstate'])]||_0xdd7b('0x6');}}catch(_0x2adc1d){utils['error'](util[_0xdd7b('0x1f')](_0xdd7b('0x27'),_0x58a90c['uniqueid']),_0x2adc1d);}};exports[_0xdd7b('0x28')]=function(_0x142c47){try{if(!_['isNil'](channels[_0x142c47['uniqueid']])){utils[_0xdd7b('0x15')](util[_0xdd7b('0x1f')](_0xdd7b('0x29'),_0x142c47[_0xdd7b('0x9')]),_0x142c47);if(_[_0xdd7b('0x20')](channels[_0x142c47[_0xdd7b('0x9')]][_0xdd7b('0x2a')])){channels[_0x142c47[_0xdd7b('0x9')]]['callerid']=_0x142c47[_0xdd7b('0x2b')]+'\x20<'+_0x142c47[_0xdd7b('0xc')]+'>';}utils['info'](util['format'](_0xdd7b('0x2c'),_0x142c47[_0xdd7b('0x9')],channels[_0x142c47[_0xdd7b('0x9')]]['callerid'],_0x142c47['cause-txt']));channels[_0x142c47[_0xdd7b('0x9')]][_0xdd7b('0x2d')]=utils[_0xdd7b('0x2e')]();channels[_0x142c47[_0xdd7b('0x9')]][_0xdd7b('0x2f')]=utils['diffTime'](channels[_0x142c47[_0xdd7b('0x9')]][_0xdd7b('0x2d')],channels[_0x142c47[_0xdd7b('0x9')]][_0xdd7b('0x30')]);channels[_0x142c47[_0xdd7b('0x9')]][_0xdd7b('0x31')]=channels[_0x142c47[_0xdd7b('0x9')]][_0xdd7b('0x24')]?utils['diffTime'](channels[_0x142c47['uniqueid']][_0xdd7b('0x2d')],channels[_0x142c47[_0xdd7b('0x9')]][_0xdd7b('0x24')]):0x0;writeDB(channels[_0x142c47[_0xdd7b('0x9')]]);}}catch(_0x331596){utils['error'](util['format'](_0xdd7b('0x29'),_0x142c47['uniqueid']),_0x331596);}};exports[_0xdd7b('0x32')]=function(_0x4bfb24){try{if(!_['isNil'](channels[_0x4bfb24[_0xdd7b('0x33')]])){utils['debug'](util['format']('[%s][calls][attendedtransfer]',_0x4bfb24['origtransfereruniqueid']),_0x4bfb24);if(channels[_0x4bfb24[_0xdd7b('0x33')]][_0xdd7b('0x18')]==_0x4bfb24[_0xdd7b('0x34')]){utils['info'](util['format']('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x4bfb24[_0xdd7b('0x35')],_0x4bfb24[_0xdd7b('0x33')],_0x4bfb24[_0xdd7b('0x36')]));channels[_0x4bfb24['localtwolinkedid']][_0xdd7b('0x37')]=_0x4bfb24[_0xdd7b('0x36')];channels[_0x4bfb24['localtwolinkedid']][_0xdd7b('0x38')]='_attended';}else if(channels[_0x4bfb24['localtwolinkedid']][_0xdd7b('0x18')]=_0x4bfb24['transfertargetchannel']){utils[_0xdd7b('0x21')](util[_0xdd7b('0x1f')](_0xdd7b('0x39'),_0x4bfb24[_0xdd7b('0x35')],_0x4bfb24[_0xdd7b('0x33')],_0x4bfb24[_0xdd7b('0x3a')]));channels[_0x4bfb24[_0xdd7b('0x33')]]['destinationchannel']=_0x4bfb24[_0xdd7b('0x3a')];channels[_0x4bfb24[_0xdd7b('0x33')]][_0xdd7b('0x38')]=_0xdd7b('0x3b');}}}catch(_0x4b6dae){utils[_0xdd7b('0x1d')](util[_0xdd7b('0x1f')]('[%s][calls][attendedtransfer]',_0x4bfb24['origtransfereruniqueid']),_0x4b6dae);}};exports['musiconholdstart']=function(_0x42b168){try{if(!_['isNil'](channels[_0x42b168[_0xdd7b('0x9')]])){utils[_0xdd7b('0x15')](util[_0xdd7b('0x1f')](_0xdd7b('0x3c'),_0x42b168[_0xdd7b('0x9')]),_0x42b168);channels[_0x42b168[_0xdd7b('0x9')]][_0xdd7b('0x3d')]=utils['now']();utils[_0xdd7b('0x21')](util[_0xdd7b('0x1f')](_0xdd7b('0x3e'),_0x42b168[_0xdd7b('0x9')],channels[_0x42b168[_0xdd7b('0x9')]][_0xdd7b('0x3d')]));}}catch(_0x6a0b4){utils[_0xdd7b('0x1d')](util[_0xdd7b('0x1f')]('[%s][calls][musiconholdstart]',_0x42b168[_0xdd7b('0x9')]),_0x6a0b4);}};exports['musiconholdstop']=function(_0x34fb64){try{if(!_[_0xdd7b('0x20')](channels[_0x34fb64[_0xdd7b('0x9')]])){utils[_0xdd7b('0x15')](util[_0xdd7b('0x1f')](_0xdd7b('0x3f'),_0x34fb64[_0xdd7b('0x9')]),_0x34fb64);if(!_[_0xdd7b('0x20')](channels[_0x34fb64['uniqueid']]['musiconholdstartAt'])){channels[_0x34fb64[_0xdd7b('0x9')]]['mohtime']+=utils[_0xdd7b('0x40')](utils['now'](),channels[_0x34fb64[_0xdd7b('0x9')]]['musiconholdstartAt']);utils[_0xdd7b('0x21')](util['format'](_0xdd7b('0x41'),_0x34fb64['uniqueid'],channels[_0x34fb64[_0xdd7b('0x9')]][_0xdd7b('0x42')]));delete channels[_0x34fb64[_0xdd7b('0x9')]]['musiconholdstartAt'];}}}catch(_0x506590){utils['error'](util[_0xdd7b('0x1f')](_0xdd7b('0x3f'),_0x34fb64[_0xdd7b('0x9')]),_0x506590);}};exports[_0xdd7b('0x43')]=function(_0x2d450f){try{if(!_['isNil'](channels[_0x2d450f['uniqueid']])){utils['debug'](util[_0xdd7b('0x1f')](_0xdd7b('0x44'),_0x2d450f['uniqueid']),_0x2d450f);if(!_[_0xdd7b('0x20')](_0x2d450f[_0xdd7b('0x45')][_0xdd7b('0x46')])){utils[_0xdd7b('0x21')](util[_0xdd7b('0x1f')](_0xdd7b('0x47'),_0x2d450f[_0xdd7b('0x9')],_0x2d450f['value']));channels[_0x2d450f[_0xdd7b('0x9')]][_0xdd7b('0x48')]=_0x2d450f[_0xdd7b('0x49')];}if(!_['isNil'](_0x2d450f[_0xdd7b('0x45')][_0xdd7b('0x4a')])){utils[_0xdd7b('0x21')](util[_0xdd7b('0x1f')](_0xdd7b('0x4b'),_0x2d450f[_0xdd7b('0x9')],_0x2d450f[_0xdd7b('0x49')]));channels[_0x2d450f[_0xdd7b('0x9')]][_0xdd7b('0x4c')]=_0x2d450f['value'];channels[_0x2d450f[_0xdd7b('0x9')]][_0xdd7b('0x2a')]='\x22'+_0x2d450f[_0xdd7b('0x49')]+_0xdd7b('0x4d')+_0x2d450f[_0xdd7b('0x49')]+'>';}if(!_['isNil'](_0x2d450f['variable'][_0xdd7b('0x4e')])||!_[_0xdd7b('0x20')](_0x2d450f[_0xdd7b('0x45')][_0xdd7b('0x4f')])){utils['info'](util[_0xdd7b('0x1f')](_0xdd7b('0x50'),_0x2d450f['uniqueid'],!_[_0xdd7b('0x20')](_0x2d450f[_0xdd7b('0x45')]['xmd-callerid-preview'])?_0xdd7b('0x4e'):'xmd-callerid',_0x2d450f['value']));channels[_0x2d450f['uniqueid']][_0xdd7b('0x2a')]=_0x2d450f['value'];}if(!_[_0xdd7b('0x20')](_0x2d450f[_0xdd7b('0x45')][_0xdd7b('0x51')])||!_[_0xdd7b('0x20')](_0x2d450f[_0xdd7b('0x45')]['xmcs-queue'])){utils[_0xdd7b('0x21')](util['format'](_0xdd7b('0x50'),_0x2d450f[_0xdd7b('0x9')],!_[_0xdd7b('0x20')](_0x2d450f[_0xdd7b('0x45')][_0xdd7b('0x51')])?_0xdd7b('0x51'):_0xdd7b('0x52'),_0x2d450f[_0xdd7b('0x49')]));channels[_0x2d450f[_0xdd7b('0x9')]][_0xdd7b('0x53')]=_0xdd7b('0x54');channels[_0x2d450f['uniqueid']][_0xdd7b('0x55')]=_0x2d450f['value'];channels[_0x2d450f[_0xdd7b('0x9')]][_0xdd7b('0x56')]=!![];}if(!_[_0xdd7b('0x20')](_0x2d450f[_0xdd7b('0x45')][_0xdd7b('0x57')])){utils['info'](util[_0xdd7b('0x1f')](_0xdd7b('0x58'),_0x2d450f['uniqueid'],_0x2d450f['value']));channels[_0x2d450f[_0xdd7b('0x9')]][_0xdd7b('0x59')]=_0x2d450f[_0xdd7b('0x49')];}if(!_[_0xdd7b('0x20')](_0x2d450f[_0xdd7b('0x45')]['xmd-cdrtype'])){utils[_0xdd7b('0x21')](util[_0xdd7b('0x1f')](_0xdd7b('0x5a'),_0x2d450f['uniqueid'],_0x2d450f[_0xdd7b('0x49')]));channels[_0x2d450f[_0xdd7b('0x9')]]['type']=_0x2d450f[_0xdd7b('0x49')];}if(!_[_0xdd7b('0x20')](_0x2d450f[_0xdd7b('0x45')][_0xdd7b('0x5b')])){utils[_0xdd7b('0x21')](util['format'](_0xdd7b('0x5c'),_0x2d450f[_0xdd7b('0x9')],_0x2d450f[_0xdd7b('0x49')]));channels[_0x2d450f['uniqueid']][_0xdd7b('0x5d')]=_0x2d450f[_0xdd7b('0x49')];}if(!_[_0xdd7b('0x20')](_0x2d450f['variable'][_0xdd7b('0x5e')])){utils['info'](util['format'](_0xdd7b('0x5f'),_0x2d450f['uniqueid'],_0x2d450f[_0xdd7b('0x49')]));channels[_0x2d450f[_0xdd7b('0x9')]][_0xdd7b('0x5e')]=_0x2d450f[_0xdd7b('0x49')];}}}catch(_0x41d73c){utils[_0xdd7b('0x1d')](util['format'](_0xdd7b('0x44'),_0x2d450f['uniqueid']),_0x41d73c);}};exports[_0xdd7b('0x60')]=function(_0x5e8c55){try{if(!_[_0xdd7b('0x20')](channels[_0x5e8c55[_0xdd7b('0x9')]])){utils[_0xdd7b('0x15')](util['format'](_0xdd7b('0x61'),_0x5e8c55['uniqueid']),_0x5e8c55);utils[_0xdd7b('0x21')](util['format'](_0xdd7b('0x62'),_0x5e8c55[_0xdd7b('0x9')],_0x5e8c55[_0xdd7b('0x63')],_0x5e8c55[_0xdd7b('0x64')]));if(_0x5e8c55[_0xdd7b('0x63')][_0xdd7b('0x65')]()=='set'&&_['startsWith'](_0x5e8c55[_0xdd7b('0x64')][_0xdd7b('0x65')](),_0xdd7b('0x66'))){var _0x300e2f=_0x5e8c55[_0xdd7b('0x64')][_0xdd7b('0x67')]('=');var _0x89487c=_0x300e2f[0x0][_0xdd7b('0x68')](_0x300e2f[0x0]['lastIndexOf']('(')+0x1,_0x300e2f[0x0][_0xdd7b('0x69')](')'));var _0xabb442=_0x300e2f[0x1];channels[_0x5e8c55[_0xdd7b('0x9')]][_0x89487c]=_0xabb442;}if(!_[_0xdd7b('0x6a')](['hangup',_0xdd7b('0x6b'),_0xdd7b('0x6c'),'set',_0xdd7b('0x6d')],_0x5e8c55['application'][_0xdd7b('0x65')]())){channels[_0x5e8c55['uniqueid']][_0xdd7b('0x53')]=_0x5e8c55[_0xdd7b('0x63')];channels[_0x5e8c55['uniqueid']][_0xdd7b('0x55')]=_0x5e8c55[_0xdd7b('0x64')];}}}catch(_0x49adf6){utils[_0xdd7b('0x1d')](util[_0xdd7b('0x1f')](_0xdd7b('0x61'),_0x5e8c55[_0xdd7b('0x9')]),_0x49adf6);}};
\ No newline at end of file
index 2b9fe23..d0199eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb235=['connect','info','[core]\x20connected','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','[core]\x20close','managerevent','./utils'];(function(_0x2b1de3,_0x5296af){var _0x312361=function(_0x46deef){while(--_0x46deef){_0x2b1de3['push'](_0x2b1de3['shift']());}};_0x312361(++_0x5296af);}(_0xb235,0x6b));var _0x5b23=function(_0x27380a,_0x11b4db){_0x27380a=_0x27380a-0x0;var _0x49557d=_0xb235[_0x27380a];return _0x49557d;};'use strict';var utils=require(_0x5b23('0x0'));exports[_0x5b23('0x1')]=function(){utils[_0x5b23('0x2')](_0x5b23('0x3'));};exports[_0x5b23('0x4')]=function(){utils[_0x5b23('0x2')](_0x5b23('0x5'));};exports[_0x5b23('0x6')]=function(){utils[_0x5b23('0x2')](_0x5b23('0x7'));};exports[_0x5b23('0x8')]=function(_0x4196e0){utils[_0x5b23('0x8')](_0x5b23('0x9'),_0x4196e0);};exports['close']=function(){utils['info'](_0x5b23('0xa'));};exports[_0x5b23('0xb')]=function(_0x3550a0){};
\ No newline at end of file
+var _0x7a10=['info','[core]\x20connected','[core]\x20shutdown','[core]\x20fullybooted','error','[core]\x20error','close','managerevent','./utils','connect'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0x7a10,0xe4));var _0x07a1=function(_0x445460,_0x13bfb3){_0x445460=_0x445460-0x0;var _0x22c2f4=_0x7a10[_0x445460];return _0x22c2f4;};'use strict';var utils=require(_0x07a1('0x0'));exports[_0x07a1('0x1')]=function(){utils[_0x07a1('0x2')](_0x07a1('0x3'));};exports['shutdown']=function(){utils[_0x07a1('0x2')](_0x07a1('0x4'));};exports['fullybooted']=function(){utils[_0x07a1('0x2')](_0x07a1('0x5'));};exports[_0x07a1('0x6')]=function(_0x2d44fa){utils[_0x07a1('0x6')](_0x07a1('0x7'),_0x2d44fa);};exports[_0x07a1('0x8')]=function(){utils['info']('[core]\x20close');};exports[_0x07a1('0x9')]=function(_0x44f48b){};
\ No newline at end of file
index 10304a2..e2e450b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd62d=['./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr(routeid)','split','error','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','[%s][dials][dialbegin]','starttime','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','ANSWER','answertime','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','calleridname','cause-txt','assign','now','complete','duration','diffTime','endtime','holdtime','billableseconds','lodash','util'];(function(_0x438ad8,_0x56e11b){var _0x1742b2=function(_0x4435c5){while(--_0x4435c5){_0x438ad8['push'](_0x438ad8['shift']());}};_0x1742b2(++_0x56e11b);}(_0xd62d,0x186));var _0xdd62=function(_0x337bac,_0x17cc71){_0x337bac=_0x337bac-0x0;var _0x19601e=_0xd62d[_0x337bac];return _0x19601e;};'use strict';var _=require(_0xdd62('0x0'));var util=require(_0xdd62('0x1'));var utils=require(_0xdd62('0x2'));var dials={};function writeDB(_0x320a2f){utils[_0xdd62('0x3')](util[_0xdd62('0x4')](_0xdd62('0x5'),_0x320a2f[_0xdd62('0x6')],_0x320a2f[_0xdd62('0x7')],_0x320a2f[_0xdd62('0x8')],_0x320a2f[_0xdd62('0x9')],_0x320a2f[_0xdd62('0xa')],_0x320a2f[_0xdd62('0xb')]));utils[_0xdd62('0xc')](_0xdd62('0xd'),_0x320a2f);delete dials[_0x320a2f[_0xdd62('0x6')]];}exports[_0xdd62('0xe')]=function(_0x6d91ad){try{utils[_0xdd62('0xf')](util['format'](_0xdd62('0x10'),_0x6d91ad['uniqueid']),_0x6d91ad);utils[_0xdd62('0x3')](util['format'](_0xdd62('0x11'),_0x6d91ad['uniqueid'],_0x6d91ad[_0xdd62('0x12')],_0x6d91ad[_0xdd62('0x13')]));if(_0x6d91ad['application'][_0xdd62('0x14')]()==_0xdd62('0x15')&&_['startsWith'](_0x6d91ad[_0xdd62('0x13')]['toLowerCase'](),_0xdd62('0x16'))){var _0x584bac=_0x6d91ad['appdata'][_0xdd62('0x17')]('=');dials[_0x6d91ad[_0xdd62('0x6')]]={'routeId':_0x584bac[0x1]};}}catch(_0x28f3c4){utils[_0xdd62('0x18')](util[_0xdd62('0x4')]('[%s][dials][newexten]',_0x6d91ad[_0xdd62('0x6')]),_0x28f3c4);}};exports[_0xdd62('0x19')]=function(_0x531ca0){try{utils[_0xdd62('0xf')](util['format'](_0xdd62('0x1a'),_0x531ca0['uniqueid']),_0x531ca0);if(!_[_0xdd62('0x1b')](_0x531ca0[_0xdd62('0x1c')][_0xdd62('0x1d')])){utils['info'](util[_0xdd62('0x4')](_0xdd62('0x1e'),_0x531ca0['uniqueid'],_0x531ca0[_0xdd62('0x1f')]));dials[_0x531ca0[_0xdd62('0x6')]]={'routeId':_0x531ca0['value']};}}catch(_0x3433f7){utils[_0xdd62('0x18')](util[_0xdd62('0x4')](_0xdd62('0x1a'),_0x531ca0['uniqueid']),_0x3433f7);}};exports[_0xdd62('0x20')]=function(_0x146e91){try{if(!_[_0xdd62('0x1b')](dials[_0x146e91[_0xdd62('0x6')]])){utils[_0xdd62('0xf')](util[_0xdd62('0x4')](_0xdd62('0x21'),_0x146e91[_0xdd62('0x6')]),_0x146e91);dials[_0x146e91['uniqueid']]=_['assign'](dials[_0x146e91[_0xdd62('0x6')]],_0x146e91);dials[_0x146e91[_0xdd62('0x6')]][_0xdd62('0x22')]=utils['now']();dials[_0x146e91['uniqueid']][_0xdd62('0x23')]=_0xdd62('0x24');utils[_0xdd62('0x3')](util['format'](_0xdd62('0x25'),_0x146e91[_0xdd62('0x6')],dials[_0x146e91[_0xdd62('0x6')]][_0xdd62('0x22')]));}}catch(_0x2f6599){utils[_0xdd62('0x18')](util['format'](_0xdd62('0x21'),_0x146e91['uniqueid']),_0x2f6599);}};exports[_0xdd62('0x26')]=function(_0x1034d9){try{if(!_[_0xdd62('0x1b')](dials[_0x1034d9[_0xdd62('0x6')]])){utils[_0xdd62('0xf')](util[_0xdd62('0x4')](_0xdd62('0x27'),_0x1034d9[_0xdd62('0x6')]),_0x1034d9);dials[_0x1034d9['uniqueid']]['dialstatus']=_0x1034d9[_0xdd62('0xb')];if(_0x1034d9['dialstatus']==_0xdd62('0x28')){dials[_0x1034d9[_0xdd62('0x6')]]=_['assign'](dials[_0x1034d9[_0xdd62('0x6')]],_0x1034d9);dials[_0x1034d9[_0xdd62('0x6')]][_0xdd62('0x29')]=utils['now']();dials[_0x1034d9[_0xdd62('0x6')]]['lastevent']='connect';utils[_0xdd62('0x3')](util[_0xdd62('0x4')](_0xdd62('0x2a'),_0x1034d9[_0xdd62('0x6')],_0x1034d9['dialstatus'],dials[_0x1034d9[_0xdd62('0x6')]][_0xdd62('0x29')]));}else{utils[_0xdd62('0x3')](util['format'](_0xdd62('0x2b'),_0x1034d9[_0xdd62('0x6')],_0x1034d9[_0xdd62('0xb')]));}}}catch(_0x5e52b6){utils[_0xdd62('0x18')](util[_0xdd62('0x4')](_0xdd62('0x27'),_0x1034d9[_0xdd62('0x6')]),_0x5e52b6);}};exports[_0xdd62('0x2c')]=function(_0x146499){try{if(!_['isNil'](dials[_0x146499[_0xdd62('0x6')]])){utils[_0xdd62('0xf')](util[_0xdd62('0x4')](_0xdd62('0x2d'),_0x146499[_0xdd62('0x6')]),_0x146499);utils['info'](util['format']('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x146499[_0xdd62('0x6')],_0x146499[_0xdd62('0x9')],_0x146499[_0xdd62('0x2e')],_0x146499[_0xdd62('0x2f')]));dials[_0x146499[_0xdd62('0x6')]]=_[_0xdd62('0x30')](dials[_0x146499[_0xdd62('0x6')]],{'endtime':utils[_0xdd62('0x31')](),'lastevent':_0xdd62('0x32')});dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x33')]=utils[_0xdd62('0x34')](dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x35')],dials[_0x146499[_0xdd62('0x6')]]['starttime']);dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x36')]=utils[_0xdd62('0x34')](dials[_0x146499[_0xdd62('0x6')]]['answertime']||dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x35')],dials[_0x146499[_0xdd62('0x6')]]['starttime']);dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x37')]=dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x29')]?utils['diffTime'](dials[_0x146499['uniqueid']][_0xdd62('0x35')],dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x29')]):0x0;writeDB(dials[_0x146499[_0xdd62('0x6')]]);}}catch(_0x183c33){utils[_0xdd62('0x18')](util['format']('[%s][dials][hangup]',_0x146499[_0xdd62('0x6')]),_0x183c33);}};
\ No newline at end of file
+var _0xe913=['billableseconds','util','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','channel','dialstring','calleridnum','connectedlinenum','request','CreateVoiceDialReport','uniqueid','newexten','debug','[%s][dials][newexten]','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','set','cdr(routeid)','split','error','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','assign','starttime','now','lastevent','dialend','dialstatus','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][dialend]','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','complete','endtime','holdtime','diffTime'];(function(_0x5e9888,_0x3abe60){var _0x2c8a6c=function(_0x19d6ca){while(--_0x19d6ca){_0x5e9888['push'](_0x5e9888['shift']());}};_0x2c8a6c(++_0x3abe60);}(_0xe913,0x1e1));var _0x3e91=function(_0x1f8495,_0x3d5a77){_0x1f8495=_0x1f8495-0x0;var _0x70bcc2=_0xe913[_0x1f8495];return _0x70bcc2;};'use strict';var _=require('lodash');var util=require(_0x3e91('0x0'));var utils=require(_0x3e91('0x1'));var dials={};function writeDB(_0x1ffa8c){utils['info'](util[_0x3e91('0x2')](_0x3e91('0x3'),_0x1ffa8c['uniqueid'],_0x1ffa8c[_0x3e91('0x4')],_0x1ffa8c[_0x3e91('0x5')],_0x1ffa8c[_0x3e91('0x6')],_0x1ffa8c[_0x3e91('0x7')],_0x1ffa8c['dialstatus']));utils[_0x3e91('0x8')](_0x3e91('0x9'),_0x1ffa8c);delete dials[_0x1ffa8c[_0x3e91('0xa')]];}exports[_0x3e91('0xb')]=function(_0x23a500){try{utils[_0x3e91('0xc')](util[_0x3e91('0x2')](_0x3e91('0xd'),_0x23a500[_0x3e91('0xa')]),_0x23a500);utils[_0x3e91('0xe')](util[_0x3e91('0x2')](_0x3e91('0xf'),_0x23a500[_0x3e91('0xa')],_0x23a500[_0x3e91('0x10')],_0x23a500[_0x3e91('0x11')]));if(_0x23a500[_0x3e91('0x10')]['toLowerCase']()==_0x3e91('0x12')&&_['startsWith'](_0x23a500[_0x3e91('0x11')]['toLowerCase'](),_0x3e91('0x13'))){var _0xde3e44=_0x23a500[_0x3e91('0x11')][_0x3e91('0x14')]('=');dials[_0x23a500['uniqueid']]={'routeId':_0xde3e44[0x1]};}}catch(_0x526f5e){utils[_0x3e91('0x15')](util[_0x3e91('0x2')](_0x3e91('0xd'),_0x23a500[_0x3e91('0xa')]),_0x526f5e);}};exports[_0x3e91('0x16')]=function(_0x26680d){try{utils[_0x3e91('0xc')](util[_0x3e91('0x2')](_0x3e91('0x17'),_0x26680d[_0x3e91('0xa')]),_0x26680d);if(!_[_0x3e91('0x18')](_0x26680d[_0x3e91('0x19')][_0x3e91('0x1a')])){utils[_0x3e91('0xe')](util[_0x3e91('0x2')](_0x3e91('0x1b'),_0x26680d[_0x3e91('0xa')],_0x26680d[_0x3e91('0x1c')]));dials[_0x26680d[_0x3e91('0xa')]]={'routeId':_0x26680d['value']};}}catch(_0x9fa465){utils['error'](util['format'](_0x3e91('0x17'),_0x26680d[_0x3e91('0xa')]),_0x9fa465);}};exports[_0x3e91('0x1d')]=function(_0x2cadfe){try{if(!_[_0x3e91('0x18')](dials[_0x2cadfe[_0x3e91('0xa')]])){utils[_0x3e91('0xc')](util[_0x3e91('0x2')]('[%s][dials][dialbegin]',_0x2cadfe['uniqueid']),_0x2cadfe);dials[_0x2cadfe[_0x3e91('0xa')]]=_[_0x3e91('0x1e')](dials[_0x2cadfe[_0x3e91('0xa')]],_0x2cadfe);dials[_0x2cadfe[_0x3e91('0xa')]][_0x3e91('0x1f')]=utils[_0x3e91('0x20')]();dials[_0x2cadfe['uniqueid']][_0x3e91('0x21')]='called';utils[_0x3e91('0xe')](util[_0x3e91('0x2')]('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x2cadfe['uniqueid'],dials[_0x2cadfe[_0x3e91('0xa')]][_0x3e91('0x1f')]));}}catch(_0x4e1f0a){utils[_0x3e91('0x15')](util[_0x3e91('0x2')]('[%s][dials][dialbegin]',_0x2cadfe[_0x3e91('0xa')]),_0x4e1f0a);}};exports[_0x3e91('0x22')]=function(_0x230278){try{if(!_[_0x3e91('0x18')](dials[_0x230278['uniqueid']])){utils[_0x3e91('0xc')](util[_0x3e91('0x2')]('[%s][dials][dialend]',_0x230278[_0x3e91('0xa')]),_0x230278);dials[_0x230278[_0x3e91('0xa')]][_0x3e91('0x23')]=_0x230278['dialstatus'];if(_0x230278[_0x3e91('0x23')]=='ANSWER'){dials[_0x230278[_0x3e91('0xa')]]=_[_0x3e91('0x1e')](dials[_0x230278[_0x3e91('0xa')]],_0x230278);dials[_0x230278[_0x3e91('0xa')]]['answertime']=utils[_0x3e91('0x20')]();dials[_0x230278[_0x3e91('0xa')]][_0x3e91('0x21')]=_0x3e91('0x24');utils[_0x3e91('0xe')](util[_0x3e91('0x2')](_0x3e91('0x25'),_0x230278[_0x3e91('0xa')],_0x230278['dialstatus'],dials[_0x230278[_0x3e91('0xa')]][_0x3e91('0x26')]));}else{utils[_0x3e91('0xe')](util['format'](_0x3e91('0x27'),_0x230278[_0x3e91('0xa')],_0x230278[_0x3e91('0x23')]));}}}catch(_0x544844){utils[_0x3e91('0x15')](util['format'](_0x3e91('0x28'),_0x230278['uniqueid']),_0x544844);}};exports['hangup']=function(_0x1fcd68){try{if(!_['isNil'](dials[_0x1fcd68[_0x3e91('0xa')]])){utils[_0x3e91('0xc')](util['format'](_0x3e91('0x29'),_0x1fcd68[_0x3e91('0xa')]),_0x1fcd68);utils[_0x3e91('0xe')](util[_0x3e91('0x2')](_0x3e91('0x2a'),_0x1fcd68[_0x3e91('0xa')],_0x1fcd68[_0x3e91('0x6')],_0x1fcd68['calleridname'],_0x1fcd68['cause-txt']));dials[_0x1fcd68[_0x3e91('0xa')]]=_[_0x3e91('0x1e')](dials[_0x1fcd68[_0x3e91('0xa')]],{'endtime':utils[_0x3e91('0x20')](),'lastevent':_0x3e91('0x2b')});dials[_0x1fcd68['uniqueid']]['duration']=utils['diffTime'](dials[_0x1fcd68[_0x3e91('0xa')]][_0x3e91('0x2c')],dials[_0x1fcd68[_0x3e91('0xa')]][_0x3e91('0x1f')]);dials[_0x1fcd68[_0x3e91('0xa')]][_0x3e91('0x2d')]=utils[_0x3e91('0x2e')](dials[_0x1fcd68[_0x3e91('0xa')]][_0x3e91('0x26')]||dials[_0x1fcd68[_0x3e91('0xa')]][_0x3e91('0x2c')],dials[_0x1fcd68['uniqueid']][_0x3e91('0x1f')]);dials[_0x1fcd68[_0x3e91('0xa')]][_0x3e91('0x2f')]=dials[_0x1fcd68[_0x3e91('0xa')]][_0x3e91('0x26')]?utils[_0x3e91('0x2e')](dials[_0x1fcd68['uniqueid']][_0x3e91('0x2c')],dials[_0x1fcd68[_0x3e91('0xa')]][_0x3e91('0x26')]):0x0;writeDB(dials[_0x1fcd68[_0x3e91('0xa')]]);}}catch(_0x29de87){utils['error'](util[_0x3e91('0x2')]('[%s][dials][hangup]',_0x1fcd68[_0x3e91('0xa')]),_0x29de87);}};
\ No newline at end of file
index 8377625..d6ec261 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7790=['asterisk','port','password','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./recordings.controller','./core.controller','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','device','[%s][index][devicestatechange]','agentcalled','[%s][index][agentcalled]','uniqueid','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]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s]dialbegin','[%s][index][dialend]','dialend','asterisk-manager','./utils','util'];(function(_0x3d92a2,_0x36f0ba){var _0x5af51e=function(_0x4b0823){while(--_0x4b0823){_0x3d92a2['push'](_0x3d92a2['shift']());}};_0x5af51e(++_0x36f0ba);}(_0x7790,0x1bd));var _0x0779=function(_0x5ebf8d,_0x18023f){_0x5ebf8d=_0x5ebf8d-0x0;var _0x787a3e=_0x7790[_0x5ebf8d];return _0x787a3e;};var AsteriskManager=require(_0x0779('0x0'));var config=require('../../config/environment');var utils=require(_0x0779('0x1'));var util=require(_0x0779('0x2'));var ami=new AsteriskManager(config[_0x0779('0x3')][_0x0779('0x4')],config['asterisk']['ip'],config[_0x0779('0x3')]['username'],config['asterisk'][_0x0779('0x5')],!![]);ami[_0x0779('0x6')]();if(config[_0x0779('0x7')]&&config[_0x0779('0x7')][_0x0779('0x8')]){utils[_0x0779('0x9')](_0x0779('0xa'));}else{var agents=require(_0x0779('0xb'));var calls=require(_0x0779('0xc'));var queues=require('./queues.controller');var recordings=require(_0x0779('0xd'));var members=require('./members.controller');var dials=require('./dials.controller');var transfers=require('./transfers.controller');var core=require(_0x0779('0xe'));ami['on']('connect',core['connect']);ami['on'](_0x0779('0xf'),core[_0x0779('0xf')]);ami['on'](_0x0779('0x10'),core[_0x0779('0x10')]);ami['on'](_0x0779('0x11'),core[_0x0779('0x11')]);ami['on']('close',core[_0x0779('0x12')]);ami['on'](_0x0779('0x13'),core['managerevent']);ami['on'](_0x0779('0x14'),function(_0x901d89){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][devicestatechange]',_0x901d89[_0x0779('0x17')]),_0x901d89);members[_0x0779('0x14')](_0x901d89);}catch(_0x3430e4){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x18'),_0x901d89[_0x0779('0x17')]),_0x3430e4);}});ami['on'](_0x0779('0x19'),function(_0x33bed3){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x1a'),_0x33bed3[_0x0779('0x1b')]),_0x33bed3);agents[_0x0779('0x19')](_0x33bed3);}catch(_0x1cc94f){utils[_0x0779('0x11')](util['format'](_0x0779('0x1a'),_0x33bed3[_0x0779('0x1b')]),_0x1cc94f);}});ami['on'](_0x0779('0x1c'),function(_0x21071a){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][agentringnoanswer]',_0x21071a[_0x0779('0x1b')]),_0x21071a);agents[_0x0779('0x1c')](_0x21071a);}catch(_0x928a15){utils[_0x0779('0x11')](util['format']('[%s][index][agentringnoanswer]',_0x21071a['uniqueid']),_0x928a15);}});ami['on'](_0x0779('0x1d'),function(_0x139126){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][agentconnect]',_0x139126[_0x0779('0x1b')]),_0x139126);agents[_0x0779('0x1d')](_0x139126);queues[_0x0779('0x1d')](_0x139126);}catch(_0x9673c1){utils[_0x0779('0x11')](util['format'](_0x0779('0x1e'),_0x139126[_0x0779('0x1b')]),_0x9673c1);}});ami['on'](_0x0779('0x1f'),function(_0x125b9f){try{utils[_0x0779('0x15')](util['format'](_0x0779('0x20'),_0x125b9f[_0x0779('0x1b')]),_0x125b9f);agents[_0x0779('0x1f')](_0x125b9f);queues[_0x0779('0x1f')](_0x125b9f);members[_0x0779('0x1f')](_0x125b9f);}catch(_0x5a52ab){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x20'),_0x125b9f[_0x0779('0x1b')]),_0x5a52ab);}});ami['on'](_0x0779('0x21'),function(_0xbedc5d){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x22'),_0xbedc5d['uniqueid']),_0xbedc5d);agents[_0x0779('0x21')](_0xbedc5d);queues[_0x0779('0x21')](_0xbedc5d);}catch(_0x12e18d){utils[_0x0779('0x11')](util[_0x0779('0x16')]('[%s][index][queuecallerabandon]',_0xbedc5d[_0x0779('0x1b')]),_0x12e18d);}});ami['on']('queuecallerjoin',function(_0x340b3a){try{utils['debug'](util[_0x0779('0x16')]('[%s][index][queuecallerjoin]',_0x340b3a['uniqueid']),_0x340b3a);queues[_0x0779('0x23')](_0x340b3a);recordings['queuecallerjoin'](_0x340b3a);}catch(_0x3c31a0){utils['error'](util[_0x0779('0x16')](_0x0779('0x24'),_0x340b3a[_0x0779('0x1b')]),_0x3c31a0);}});ami['on'](_0x0779('0x25'),function(_0x27cfe9){try{utils[_0x0779('0x15')](util['format'](_0x0779('0x26'),_0x27cfe9['uniqueid']),_0x27cfe9);queues[_0x0779('0x25')](_0x27cfe9);}catch(_0x1117b0){utils['error'](util[_0x0779('0x16')]('[%s][index][queuecallerleave]',_0x27cfe9['uniqueid']),_0x1117b0);}});ami['on'](_0x0779('0x27'),function(_0x299000){try{utils['debug'](util[_0x0779('0x16')](_0x0779('0x28'),_0x299000[_0x0779('0x1b')]),_0x299000);queues['musiconholdstart'](_0x299000);calls[_0x0779('0x27')](_0x299000);}catch(_0x2ae4d4){utils['error'](util[_0x0779('0x16')](_0x0779('0x28'),_0x299000[_0x0779('0x1b')]),_0x2ae4d4);}});ami['on'](_0x0779('0x29'),function(_0x20f245){try{utils[_0x0779('0x15')](util['format'](_0x0779('0x2a'),_0x20f245[_0x0779('0x1b')]),_0x20f245);queues[_0x0779('0x29')](_0x20f245);calls[_0x0779('0x29')](_0x20f245);}catch(_0x8d0869){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x2a'),_0x20f245[_0x0779('0x1b')]),_0x8d0869);}});ami['on'](_0x0779('0x2b'),function(_0x19e8ef){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x2c'),_0x19e8ef['uniqueid']),_0x19e8ef);calls['newstate'](_0x19e8ef);recordings['newstate'](_0x19e8ef);}catch(_0x4db3f5){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x2c'),_0x19e8ef[_0x0779('0x1b')]),_0x4db3f5);}});ami['on'](_0x0779('0x2d'),function(_0xb7954b){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][hangup]',_0xb7954b[_0x0779('0x1b')]),_0xb7954b);calls[_0x0779('0x2d')](_0xb7954b);recordings[_0x0779('0x2d')](_0xb7954b);dials[_0x0779('0x2d')](_0xb7954b);agents[_0x0779('0x2d')](_0xb7954b);queues[_0x0779('0x2d')](_0xb7954b);}catch(_0x5ebbd2){utils['error'](util[_0x0779('0x16')](_0x0779('0x2e'),_0xb7954b['uniqueid']),_0x5ebbd2);}});ami['on']('cdr',function(_0x5bf7d3){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][cdr]',_0x5bf7d3['uniqueid']),_0x5bf7d3);members[_0x0779('0x2f')](_0x5bf7d3);}catch(_0xeb1d1f){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x30'),_0x5bf7d3[_0x0779('0x1b')]),_0xeb1d1f);}});ami['on'](_0x0779('0x31'),function(_0x3cc72b){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x32'),_0x3cc72b[_0x0779('0x1b')]),_0x3cc72b);queues['blindtransfer'](_0x3cc72b);agents[_0x0779('0x31')](_0x3cc72b);transfers[_0x0779('0x31')](_0x3cc72b);}catch(_0x59f085){utils[_0x0779('0x11')](util[_0x0779('0x16')]('[%s][index][blindtransfer]',_0x3cc72b[_0x0779('0x1b')]),_0x59f085);}});ami['on'](_0x0779('0x33'),function(_0x4dbe45){try{utils['debug'](util[_0x0779('0x16')](_0x0779('0x34'),_0x4dbe45[_0x0779('0x35')]),_0x4dbe45);queues[_0x0779('0x33')](_0x4dbe45);transfers['attendedtransfer'](_0x4dbe45);agents['attendedtransfer'](_0x4dbe45);calls[_0x0779('0x33')](_0x4dbe45);}catch(_0x3c509f){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x34'),_0x4dbe45[_0x0779('0x35')]),_0x3c509f);}});ami['on']('varset',function(_0x1cc508){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x36'),_0x1cc508[_0x0779('0x1b')]),_0x1cc508);queues[_0x0779('0x37')](_0x1cc508);recordings[_0x0779('0x37')](_0x1cc508);calls[_0x0779('0x37')](_0x1cc508);dials[_0x0779('0x37')](_0x1cc508);}catch(_0x134fc4){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x36'),_0x1cc508[_0x0779('0x1b')]),_0x134fc4);}});ami['on'](_0x0779('0x38'),function(_0x126564){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x39'),_0x126564[_0x0779('0x1b')]),_0x126564);calls[_0x0779('0x38')](_0x126564);recordings['newexten'](_0x126564);dials[_0x0779('0x38')](_0x126564);}catch(_0x5deef3){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x39'),_0x126564[_0x0779('0x1b')]),_0x5deef3);}});ami['on'](_0x0779('0x3a'),function(_0x44ef42){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][newchannel]',_0x44ef42['uniqueid']),_0x44ef42);calls[_0x0779('0x3a')](_0x44ef42);recordings[_0x0779('0x3a')](_0x44ef42);}catch(_0xc21195){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x3b'),_0x44ef42['uniqueid']),_0xc21195);}});ami['on'](_0x0779('0x3c'),function(_0x232a61){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][dialbegin]',_0x232a61[_0x0779('0x1b')]),_0x232a61);dials['dialbegin'](_0x232a61);}catch(_0x3d8199){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x3d'),_0x232a61[_0x0779('0x1b')]),_0x3d8199);}});ami['on']('dialend',function(_0x4bbbfb){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x3e'),_0x4bbbfb[_0x0779('0x1b')]),_0x4bbbfb);dials[_0x0779('0x3f')](_0x4bbbfb);}catch(_0x566970){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x3e'),_0x4bbbfb['uniqueid']),_0x566970);}});}
\ No newline at end of file
+var _0x8675=['format','[%s][index][devicestatechange]','device','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','[%s][index][queuecallerabandon]','queuecallerabandon','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','[%s][index][newstate]','newstate','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','asterisk','port','username','password','keepConnected','xdr','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8675,0x6f));var _0x5867=function(_0x350744,_0x7d9b13){_0x350744=_0x350744-0x0;var _0x14ad39=_0x8675[_0x350744];return _0x14ad39;};var AsteriskManager=require(_0x5867('0x0'));var config=require(_0x5867('0x1'));var utils=require(_0x5867('0x2'));var util=require(_0x5867('0x3'));var ami=new AsteriskManager(config[_0x5867('0x4')][_0x5867('0x5')],config[_0x5867('0x4')]['ip'],config[_0x5867('0x4')][_0x5867('0x6')],config[_0x5867('0x4')][_0x5867('0x7')],!![]);ami[_0x5867('0x8')]();if(config[_0x5867('0x9')]&&config[_0x5867('0x9')]['disabled']){utils[_0x5867('0xa')](_0x5867('0xb'));}else{var agents=require(_0x5867('0xc'));var calls=require(_0x5867('0xd'));var queues=require(_0x5867('0xe'));var recordings=require(_0x5867('0xf'));var members=require(_0x5867('0x10'));var dials=require(_0x5867('0x11'));var transfers=require(_0x5867('0x12'));var core=require('./core.controller');ami['on'](_0x5867('0x13'),core[_0x5867('0x13')]);ami['on'](_0x5867('0x14'),core[_0x5867('0x14')]);ami['on'](_0x5867('0x15'),core[_0x5867('0x15')]);ami['on'](_0x5867('0x16'),core[_0x5867('0x16')]);ami['on'](_0x5867('0x17'),core[_0x5867('0x17')]);ami['on']('managerevent',core[_0x5867('0x18')]);ami['on'](_0x5867('0x19'),function(_0x25fd01){try{utils[_0x5867('0x1a')](util[_0x5867('0x1b')](_0x5867('0x1c'),_0x25fd01[_0x5867('0x1d')]),_0x25fd01);members['devicestatechange'](_0x25fd01);}catch(_0x39d6a0){utils[_0x5867('0x16')](util[_0x5867('0x1b')](_0x5867('0x1c'),_0x25fd01[_0x5867('0x1d')]),_0x39d6a0);}});ami['on'](_0x5867('0x1e'),function(_0x4c0527){try{utils[_0x5867('0x1a')](util[_0x5867('0x1b')](_0x5867('0x1f'),_0x4c0527[_0x5867('0x20')]),_0x4c0527);agents['agentcalled'](_0x4c0527);}catch(_0x122e35){utils['error'](util[_0x5867('0x1b')](_0x5867('0x1f'),_0x4c0527[_0x5867('0x20')]),_0x122e35);}});ami['on'](_0x5867('0x21'),function(_0x2d8de9){try{utils[_0x5867('0x1a')](util[_0x5867('0x1b')](_0x5867('0x22'),_0x2d8de9[_0x5867('0x20')]),_0x2d8de9);agents['agentringnoanswer'](_0x2d8de9);}catch(_0x2f3de8){utils['error'](util['format'](_0x5867('0x22'),_0x2d8de9[_0x5867('0x20')]),_0x2f3de8);}});ami['on'](_0x5867('0x23'),function(_0x1732c9){try{utils['debug'](util[_0x5867('0x1b')](_0x5867('0x24'),_0x1732c9[_0x5867('0x20')]),_0x1732c9);agents[_0x5867('0x23')](_0x1732c9);queues[_0x5867('0x23')](_0x1732c9);}catch(_0x374028){utils[_0x5867('0x16')](util[_0x5867('0x1b')](_0x5867('0x24'),_0x1732c9['uniqueid']),_0x374028);}});ami['on'](_0x5867('0x25'),function(_0x23a1d5){try{utils[_0x5867('0x1a')](util[_0x5867('0x1b')](_0x5867('0x26'),_0x23a1d5[_0x5867('0x20')]),_0x23a1d5);agents[_0x5867('0x25')](_0x23a1d5);queues[_0x5867('0x25')](_0x23a1d5);members['agentcomplete'](_0x23a1d5);}catch(_0x4138c1){utils[_0x5867('0x16')](util[_0x5867('0x1b')](_0x5867('0x26'),_0x23a1d5[_0x5867('0x20')]),_0x4138c1);}});ami['on']('queuecallerabandon',function(_0x27cfe4){try{utils[_0x5867('0x1a')](util[_0x5867('0x1b')](_0x5867('0x27'),_0x27cfe4[_0x5867('0x20')]),_0x27cfe4);agents[_0x5867('0x28')](_0x27cfe4);queues['queuecallerabandon'](_0x27cfe4);}catch(_0x426e99){utils['error'](util[_0x5867('0x1b')]('[%s][index][queuecallerabandon]',_0x27cfe4[_0x5867('0x20')]),_0x426e99);}});ami['on'](_0x5867('0x29'),function(_0x1d2ebd){try{utils['debug'](util[_0x5867('0x1b')](_0x5867('0x2a'),_0x1d2ebd[_0x5867('0x20')]),_0x1d2ebd);queues[_0x5867('0x29')](_0x1d2ebd);recordings[_0x5867('0x29')](_0x1d2ebd);}catch(_0x48e874){utils[_0x5867('0x16')](util[_0x5867('0x1b')](_0x5867('0x2a'),_0x1d2ebd[_0x5867('0x20')]),_0x48e874);}});ami['on'](_0x5867('0x2b'),function(_0x37fbde){try{utils['debug'](util['format'](_0x5867('0x2c'),_0x37fbde['uniqueid']),_0x37fbde);queues[_0x5867('0x2b')](_0x37fbde);}catch(_0x556847){utils[_0x5867('0x16')](util['format']('[%s][index][queuecallerleave]',_0x37fbde[_0x5867('0x20')]),_0x556847);}});ami['on'](_0x5867('0x2d'),function(_0x4d359){try{utils['debug'](util[_0x5867('0x1b')](_0x5867('0x2e'),_0x4d359[_0x5867('0x20')]),_0x4d359);queues[_0x5867('0x2d')](_0x4d359);calls[_0x5867('0x2d')](_0x4d359);}catch(_0x2be16d){utils['error'](util[_0x5867('0x1b')]('[%s][index][musiconholdstart]',_0x4d359[_0x5867('0x20')]),_0x2be16d);}});ami['on'](_0x5867('0x2f'),function(_0x3cf1b3){try{utils[_0x5867('0x1a')](util[_0x5867('0x1b')](_0x5867('0x30'),_0x3cf1b3[_0x5867('0x20')]),_0x3cf1b3);queues[_0x5867('0x2f')](_0x3cf1b3);calls[_0x5867('0x2f')](_0x3cf1b3);}catch(_0x4d8289){utils[_0x5867('0x16')](util[_0x5867('0x1b')]('[%s][index][musiconholdstop]',_0x3cf1b3[_0x5867('0x20')]),_0x4d8289);}});ami['on']('newstate',function(_0x360ec4){try{utils[_0x5867('0x1a')](util[_0x5867('0x1b')](_0x5867('0x31'),_0x360ec4[_0x5867('0x20')]),_0x360ec4);calls[_0x5867('0x32')](_0x360ec4);recordings[_0x5867('0x32')](_0x360ec4);}catch(_0x1bbf32){utils[_0x5867('0x16')](util['format'](_0x5867('0x31'),_0x360ec4[_0x5867('0x20')]),_0x1bbf32);}});ami['on'](_0x5867('0x33'),function(_0x11a9fa){try{utils['debug'](util[_0x5867('0x1b')](_0x5867('0x34'),_0x11a9fa[_0x5867('0x20')]),_0x11a9fa);calls[_0x5867('0x33')](_0x11a9fa);recordings[_0x5867('0x33')](_0x11a9fa);dials[_0x5867('0x33')](_0x11a9fa);agents[_0x5867('0x33')](_0x11a9fa);queues[_0x5867('0x33')](_0x11a9fa);}catch(_0x125243){utils[_0x5867('0x16')](util['format'](_0x5867('0x34'),_0x11a9fa[_0x5867('0x20')]),_0x125243);}});ami['on'](_0x5867('0x35'),function(_0x1f233d){try{utils[_0x5867('0x1a')](util['format']('[%s][index][cdr]',_0x1f233d[_0x5867('0x20')]),_0x1f233d);members[_0x5867('0x35')](_0x1f233d);}catch(_0x268ee6){utils[_0x5867('0x16')](util[_0x5867('0x1b')](_0x5867('0x36'),_0x1f233d['uniqueid']),_0x268ee6);}});ami['on'](_0x5867('0x37'),function(_0x3b6fc2){try{utils[_0x5867('0x1a')](util[_0x5867('0x1b')]('[%s][index][blindtransfer]',_0x3b6fc2[_0x5867('0x20')]),_0x3b6fc2);queues[_0x5867('0x37')](_0x3b6fc2);agents[_0x5867('0x37')](_0x3b6fc2);transfers[_0x5867('0x37')](_0x3b6fc2);}catch(_0x3d01ef){utils[_0x5867('0x16')](util['format']('[%s][index][blindtransfer]',_0x3b6fc2[_0x5867('0x20')]),_0x3d01ef);}});ami['on'](_0x5867('0x38'),function(_0x992139){try{utils[_0x5867('0x1a')](util[_0x5867('0x1b')](_0x5867('0x39'),_0x992139[_0x5867('0x3a')]),_0x992139);queues[_0x5867('0x38')](_0x992139);transfers[_0x5867('0x38')](_0x992139);agents['attendedtransfer'](_0x992139);calls[_0x5867('0x38')](_0x992139);}catch(_0x50881e){utils[_0x5867('0x16')](util[_0x5867('0x1b')](_0x5867('0x39'),_0x992139[_0x5867('0x3a')]),_0x50881e);}});ami['on']('varset',function(_0x554726){try{utils[_0x5867('0x1a')](util[_0x5867('0x1b')]('[%s][index][varset]',_0x554726[_0x5867('0x20')]),_0x554726);queues['varset'](_0x554726);recordings['varset'](_0x554726);calls['varset'](_0x554726);dials[_0x5867('0x3b')](_0x554726);}catch(_0x518e06){utils[_0x5867('0x16')](util[_0x5867('0x1b')](_0x5867('0x3c'),_0x554726[_0x5867('0x20')]),_0x518e06);}});ami['on'](_0x5867('0x3d'),function(_0x46d04c){try{utils[_0x5867('0x1a')](util[_0x5867('0x1b')](_0x5867('0x3e'),_0x46d04c['uniqueid']),_0x46d04c);calls[_0x5867('0x3d')](_0x46d04c);recordings[_0x5867('0x3d')](_0x46d04c);dials[_0x5867('0x3d')](_0x46d04c);}catch(_0x1819a9){utils[_0x5867('0x16')](util[_0x5867('0x1b')]('[%s][index][newexten]',_0x46d04c[_0x5867('0x20')]),_0x1819a9);}});ami['on'](_0x5867('0x3f'),function(_0x39f5d0){try{utils[_0x5867('0x1a')](util[_0x5867('0x1b')](_0x5867('0x40'),_0x39f5d0[_0x5867('0x20')]),_0x39f5d0);calls['newchannel'](_0x39f5d0);recordings[_0x5867('0x3f')](_0x39f5d0);}catch(_0x1a3275){utils[_0x5867('0x16')](util[_0x5867('0x1b')](_0x5867('0x40'),_0x39f5d0['uniqueid']),_0x1a3275);}});ami['on'](_0x5867('0x41'),function(_0x736326){try{utils[_0x5867('0x1a')](util[_0x5867('0x1b')]('[%s][index][dialbegin]',_0x736326['uniqueid']),_0x736326);dials[_0x5867('0x41')](_0x736326);}catch(_0x364fb7){utils[_0x5867('0x16')](util[_0x5867('0x1b')](_0x5867('0x42'),_0x736326[_0x5867('0x20')]),_0x364fb7);}});ami['on'](_0x5867('0x43'),function(_0x176712){try{utils[_0x5867('0x1a')](util['format'](_0x5867('0x44'),_0x176712[_0x5867('0x20')]),_0x176712);dials[_0x5867('0x43')](_0x176712);}catch(_0x2b932d){utils[_0x5867('0x16')](util['format']('[%s][index][dialend]',_0x176712['uniqueid']),_0x2b932d);}});}
\ No newline at end of file
index cf11dff..09b63f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26ef=['debug','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','[%s][members][agentcomplete]','[%s][members][cdr]','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','util','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','channel','data2','membername','type','interface','getUserByInterface','then','internal','request','getUserByName','split','CreateMemberReport','error','[%s][members][writeDB]','uniqueid','some','startsWith','devicestatechange','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','BUSY','voice','TALKING','now','agent','isNil','duration','exitAt','enterAt','agentcomplete'];(function(_0x5e89a8,_0x27e49e){var _0x6ab7e1=function(_0x5dca73){while(--_0x5dca73){_0x5e89a8['push'](_0x5e89a8['shift']());}};_0x6ab7e1(++_0x27e49e);}(_0x26ef,0x13e));var _0xf26e=function(_0x2b5974,_0x14f785){_0x2b5974=_0x2b5974-0x0;var _0x53179a=_0x26ef[_0x2b5974];return _0x53179a;};'use strict';var _=require('lodash');var util=require(_0xf26e('0x0'));var utils=require(_0xf26e('0x1'));var members={};var exclude=[_0xf26e('0x2'),_0xf26e('0x3')];function writeDB(_0x536e15){utils[_0xf26e('0x4')](util[_0xf26e('0x5')](_0xf26e('0x6'),_0x536e15['uniqueid'],_0x536e15['interface'],_0x536e15[_0xf26e('0x7')],_0x536e15[_0xf26e('0x8')],_0x536e15[_0xf26e('0x9')],_0x536e15[_0xf26e('0xa')]));if(_0x536e15[_0xf26e('0xb')]){utils[_0xf26e('0xc')](_0x536e15[_0xf26e('0xb')])[_0xf26e('0xd')](function(_0x1600fc){if(_0x1600fc){_0x536e15['membername']=_0x1600fc['name'];_0x536e15[_0xf26e('0xe')]=_0x1600fc[_0xf26e('0xe')];utils[_0xf26e('0xf')]('CreateMemberReport',_0x536e15);}else{utils[_0xf26e('0x10')](_0x536e15[_0xf26e('0xb')][_0xf26e('0x11')]('/')[0x1])['then'](function(_0x1761f6){if(_0x1761f6){_0x536e15[_0xf26e('0x9')]=_0x1761f6['name'];_0x536e15[_0xf26e('0xe')]=_0x1761f6[_0xf26e('0xe')];utils[_0xf26e('0xf')](_0xf26e('0x12'),_0x536e15);}});}})['catch'](function(_0x323c23){utils[_0xf26e('0x13')](util[_0xf26e('0x5')](_0xf26e('0x14'),_0x536e15[_0xf26e('0x15')]),_0x323c23);});}delete members[_0x536e15[_0xf26e('0xb')]];}function startsWith(_0x30f36b,_0x17e94d){return _[_0xf26e('0x16')](_0x30f36b,function(_0x165943){return _[_0xf26e('0x17')](_0x17e94d,_0x165943);});}exports[_0xf26e('0x18')]=function(_0x3c76ae){try{utils['debug'](util['format'](_0xf26e('0x19'),members[_0x3c76ae[_0xf26e('0x1a')]]?members[_0x3c76ae['device']][_0xf26e('0x15')]:_0x3c76ae[_0xf26e('0x1a')]),_0x3c76ae);utils[_0xf26e('0x4')](util[_0xf26e('0x5')](_0xf26e('0x1b'),members[_0x3c76ae[_0xf26e('0x1a')]]?members[_0x3c76ae['device']]['uniqueid']:_0x3c76ae[_0xf26e('0x1a')],_0x3c76ae[_0xf26e('0x1c')],_0x3c76ae['device']));switch(_0x3c76ae['state']){case'INUSE':case _0xf26e('0x1d'):if(!startsWith(exclude,_0x3c76ae[_0xf26e('0x1a')])){members[_0x3c76ae[_0xf26e('0x1a')]]={'channel':_0xf26e('0x1e'),'interface':_0x3c76ae[_0xf26e('0x1a')],'type':_0xf26e('0x1f'),'enterAt':utils[_0xf26e('0x20')](),'role':_0xf26e('0x21')};}break;case'NOT_INUSE':if(!_[_0xf26e('0x22')](members[_0x3c76ae['device']])){members[_0x3c76ae[_0xf26e('0x1a')]]['exitAt']=utils[_0xf26e('0x20')]();members[_0x3c76ae['device']][_0xf26e('0x23')]=utils['diffTime'](members[_0x3c76ae[_0xf26e('0x1a')]][_0xf26e('0x24')],members[_0x3c76ae[_0xf26e('0x1a')]][_0xf26e('0x25')]);if(members[_0x3c76ae[_0xf26e('0x1a')]][_0xf26e('0x15')]){writeDB(members[_0x3c76ae['device']]);}}break;default:break;}}catch(_0xe64711){utils[_0xf26e('0x13')](util[_0xf26e('0x5')]('[%s][members][devicestatechange]',members[_0x3c76ae[_0xf26e('0x1a')]]?members[_0x3c76ae[_0xf26e('0x1a')]][_0xf26e('0x15')]:_0x3c76ae[_0xf26e('0x1a')]),_0xe64711);}};exports[_0xf26e('0x26')]=function(_0x356602){try{if(!_['isNil'](members[_0x356602[_0xf26e('0xb')]])){utils[_0xf26e('0x27')](util[_0xf26e('0x5')]('[%s][members][agentcomplete]',_0x356602[_0xf26e('0x15')]),_0x356602);utils[_0xf26e('0x4')](util[_0xf26e('0x5')](_0xf26e('0x28'),_0x356602[_0xf26e('0x15')],_0x356602['interface'],_0x356602[_0xf26e('0x29')]));members[_0x356602['interface']]=_[_0xf26e('0x2a')](members[_0x356602[_0xf26e('0xb')]],{'data4':_0x356602[_0xf26e('0x29')],'uniqueid':_0x356602[_0xf26e('0x15')]});}}catch(_0x486652){utils[_0xf26e('0x13')](util[_0xf26e('0x5')](_0xf26e('0x2b'),_0x356602[_0xf26e('0x15')]),_0x486652);}};exports['cdr']=function(_0x38d203){try{utils['debug'](util[_0xf26e('0x5')](_0xf26e('0x2c'),_0x38d203[_0xf26e('0x15')]),_0x38d203);if(_0x38d203[_0xf26e('0x7')]){var _0x34d078=_0x38d203[_0xf26e('0x7')][_0xf26e('0x11')]('-')[0x0];if(!_['isNil'](members[_0x34d078])){members[_0x34d078]=_[_0xf26e('0x2a')](members[_0x34d078],{'data1':members[_0x34d078][_0xf26e('0x2d')]||_0x38d203[_0xf26e('0xa')],'data2':members[_0x34d078][_0xf26e('0x8')]||_0x38d203[_0xf26e('0x2e')],'data3':members[_0x34d078][_0xf26e('0x2f')]||_0x38d203[_0xf26e('0x30')],'uniqueid':members[_0x34d078][_0xf26e('0x15')]||_0x38d203[_0xf26e('0x15')]});utils['info'](util[_0xf26e('0x5')](_0xf26e('0x31'),_0x38d203['uniqueid'],members[_0x34d078][_0xf26e('0x2d')],members[_0x34d078][_0xf26e('0x8')],members[_0x34d078][_0xf26e('0x2f')]));if(members[_0x34d078]['exitAt']){writeDB(members[_0x34d078]);}}}if(_0x38d203[_0xf26e('0x32')]){var _0x3e4169=_0x38d203[_0xf26e('0x32')]['split']('-')[0x0];if(!_['isNil'](members[_0x3e4169])){members[_0x3e4169]=_[_0xf26e('0x2a')](members[_0x3e4169],{'data1':members[_0x3e4169][_0xf26e('0x2d')]||_0x38d203[_0xf26e('0xa')],'data2':members[_0x3e4169][_0xf26e('0x8')]||_0x38d203['source'],'data3':members[_0x3e4169][_0xf26e('0x2f')]||_0x38d203['destination'],'uniqueid':members[_0x3e4169]['uniqueid']||_0x38d203['uniqueid']});utils[_0xf26e('0x4')](util[_0xf26e('0x5')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x38d203[_0xf26e('0x15')],members[_0x3e4169][_0xf26e('0x2d')],members[_0x3e4169][_0xf26e('0x8')],members[_0x3e4169][_0xf26e('0x2f')]));if(members[_0x3e4169][_0xf26e('0x24')]){writeDB(members[_0x3e4169]);}}}}catch(_0x55cb0a){utils[_0xf26e('0x13')](util[_0xf26e('0x5')](_0xf26e('0x2c'),_0x38d203[_0xf26e('0x15')]),_0x55cb0a);}};
\ No newline at end of file
+var _0x9193=['duration','diffTime','enterAt','[%s][members][devicestatechange]','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','data1','type','data2','source','data3','destinationchannel','destination','lodash','./utils','Local/_attended@transfer','Queue:','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','channel','membername','interface','then','name','internal','request','CreateMemberReport','getUserByName','split','catch','error','some','debug','info','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','device','state','INUSE','BUSY','voice','TALKING','now','agent','NOT_INUSE','isNil','exitAt'];(function(_0x1f64ee,_0x236d19){var _0x5b16c8=function(_0x2ee097){while(--_0x2ee097){_0x1f64ee['push'](_0x1f64ee['shift']());}};_0x5b16c8(++_0x236d19);}(_0x9193,0x1dc));var _0x3919=function(_0x334d1e,_0x28a488){_0x334d1e=_0x334d1e-0x0;var _0x3b33ba=_0x9193[_0x334d1e];return _0x3b33ba;};'use strict';var _=require(_0x3919('0x0'));var util=require('util');var utils=require(_0x3919('0x1'));var members={};var exclude=[_0x3919('0x2'),_0x3919('0x3')];function writeDB(_0x3a1e60){utils['info'](util[_0x3919('0x4')](_0x3919('0x5'),_0x3a1e60[_0x3919('0x6')],_0x3a1e60['interface'],_0x3a1e60[_0x3919('0x7')],_0x3a1e60['data2'],_0x3a1e60[_0x3919('0x8')],_0x3a1e60['type']));if(_0x3a1e60[_0x3919('0x9')]){utils['getUserByInterface'](_0x3a1e60['interface'])[_0x3919('0xa')](function(_0x1e8d40){if(_0x1e8d40){_0x3a1e60[_0x3919('0x8')]=_0x1e8d40[_0x3919('0xb')];_0x3a1e60['internal']=_0x1e8d40[_0x3919('0xc')];utils[_0x3919('0xd')](_0x3919('0xe'),_0x3a1e60);}else{utils[_0x3919('0xf')](_0x3a1e60[_0x3919('0x9')][_0x3919('0x10')]('/')[0x1])[_0x3919('0xa')](function(_0xebba8b){if(_0xebba8b){_0x3a1e60['membername']=_0xebba8b['name'];_0x3a1e60[_0x3919('0xc')]=_0xebba8b[_0x3919('0xc')];utils[_0x3919('0xd')]('CreateMemberReport',_0x3a1e60);}});}})[_0x3919('0x11')](function(_0x30a26f){utils[_0x3919('0x12')](util[_0x3919('0x4')]('[%s][members][writeDB]',_0x3a1e60[_0x3919('0x6')]),_0x30a26f);});}delete members[_0x3a1e60['interface']];}function startsWith(_0x53ea6a,_0x4f0313){return _[_0x3919('0x13')](_0x53ea6a,function(_0x29f001){return _['startsWith'](_0x4f0313,_0x29f001);});}exports['devicestatechange']=function(_0x539c35){try{utils[_0x3919('0x14')](util[_0x3919('0x4')]('[%s][members][devicestatechange]',members[_0x539c35['device']]?members[_0x539c35['device']][_0x3919('0x6')]:_0x539c35['device']),_0x539c35);utils[_0x3919('0x15')](util[_0x3919('0x4')](_0x3919('0x16'),members[_0x539c35['device']]?members[_0x539c35[_0x3919('0x17')]][_0x3919('0x6')]:_0x539c35[_0x3919('0x17')],_0x539c35[_0x3919('0x18')],_0x539c35[_0x3919('0x17')]));switch(_0x539c35['state']){case _0x3919('0x19'):case _0x3919('0x1a'):if(!startsWith(exclude,_0x539c35[_0x3919('0x17')])){members[_0x539c35[_0x3919('0x17')]]={'channel':_0x3919('0x1b'),'interface':_0x539c35[_0x3919('0x17')],'type':_0x3919('0x1c'),'enterAt':utils[_0x3919('0x1d')](),'role':_0x3919('0x1e')};}break;case _0x3919('0x1f'):if(!_[_0x3919('0x20')](members[_0x539c35['device']])){members[_0x539c35[_0x3919('0x17')]][_0x3919('0x21')]=utils['now']();members[_0x539c35[_0x3919('0x17')]][_0x3919('0x22')]=utils[_0x3919('0x23')](members[_0x539c35[_0x3919('0x17')]][_0x3919('0x21')],members[_0x539c35['device']][_0x3919('0x24')]);if(members[_0x539c35[_0x3919('0x17')]][_0x3919('0x6')]){writeDB(members[_0x539c35[_0x3919('0x17')]]);}}break;default:break;}}catch(_0xee50d0){utils['error'](util[_0x3919('0x4')](_0x3919('0x25'),members[_0x539c35[_0x3919('0x17')]]?members[_0x539c35[_0x3919('0x17')]]['uniqueid']:_0x539c35[_0x3919('0x17')]),_0xee50d0);}};exports[_0x3919('0x26')]=function(_0x1f1fa3){try{if(!_['isNil'](members[_0x1f1fa3[_0x3919('0x9')]])){utils['debug'](util[_0x3919('0x4')](_0x3919('0x27'),_0x1f1fa3[_0x3919('0x6')]),_0x1f1fa3);utils[_0x3919('0x15')](util[_0x3919('0x4')](_0x3919('0x28'),_0x1f1fa3[_0x3919('0x6')],_0x1f1fa3[_0x3919('0x9')],_0x1f1fa3[_0x3919('0x29')]));members[_0x1f1fa3['interface']]=_[_0x3919('0x2a')](members[_0x1f1fa3[_0x3919('0x9')]],{'data4':_0x1f1fa3[_0x3919('0x29')],'uniqueid':_0x1f1fa3[_0x3919('0x6')]});}}catch(_0xde3791){utils['error'](util[_0x3919('0x4')](_0x3919('0x27'),_0x1f1fa3[_0x3919('0x6')]),_0xde3791);}};exports[_0x3919('0x2b')]=function(_0x10fca8){try{utils[_0x3919('0x14')](util[_0x3919('0x4')]('[%s][members][cdr]',_0x10fca8[_0x3919('0x6')]),_0x10fca8);if(_0x10fca8[_0x3919('0x7')]){var _0x578c3e=_0x10fca8[_0x3919('0x7')][_0x3919('0x10')]('-')[0x0];if(!_['isNil'](members[_0x578c3e])){members[_0x578c3e]=_[_0x3919('0x2a')](members[_0x578c3e],{'data1':members[_0x578c3e][_0x3919('0x2c')]||_0x10fca8[_0x3919('0x2d')],'data2':members[_0x578c3e][_0x3919('0x2e')]||_0x10fca8[_0x3919('0x2f')],'data3':members[_0x578c3e]['data3']||_0x10fca8['destination'],'uniqueid':members[_0x578c3e]['uniqueid']||_0x10fca8['uniqueid']});utils[_0x3919('0x15')](util[_0x3919('0x4')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x10fca8[_0x3919('0x6')],members[_0x578c3e]['data1'],members[_0x578c3e][_0x3919('0x2e')],members[_0x578c3e][_0x3919('0x30')]));if(members[_0x578c3e][_0x3919('0x21')]){writeDB(members[_0x578c3e]);}}}if(_0x10fca8['destinationchannel']){var _0x311206=_0x10fca8[_0x3919('0x31')][_0x3919('0x10')]('-')[0x0];if(!_['isNil'](members[_0x311206])){members[_0x311206]=_[_0x3919('0x2a')](members[_0x311206],{'data1':members[_0x311206][_0x3919('0x2c')]||_0x10fca8[_0x3919('0x2d')],'data2':members[_0x311206][_0x3919('0x2e')]||_0x10fca8['source'],'data3':members[_0x311206]['data3']||_0x10fca8[_0x3919('0x32')],'uniqueid':members[_0x311206][_0x3919('0x6')]||_0x10fca8[_0x3919('0x6')]});utils[_0x3919('0x15')](util[_0x3919('0x4')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x10fca8[_0x3919('0x6')],members[_0x311206]['data1'],members[_0x311206]['data2'],members[_0x311206][_0x3919('0x30')]));if(members[_0x311206]['exitAt']){writeDB(members[_0x311206]);}}}}catch(_0x59dee8){utils['error'](util[_0x3919('0x4')]('[%s][members][cdr]',_0x10fca8[_0x3919('0x6')]),_0x59dee8);}};
\ No newline at end of file
index 0dc4429..f6044af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf44a=['musiconholdstop','[%s][queues][musiconholdstop]','diffTime','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','info','position','assign','now','error','hangup','isNil','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','[%s][queues][hangup]','variable','queuestatus','value','toUpperCase','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][varset]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]','connectedlinename','holdtime','count','connectedlinenum','agentconnect','[%s][queues][agentconnect]','destaccountcode','assigned','membername','agentcomplete','[%s][queues][agentcomplete]','lastAssignedTo','queuecallercompleteAt','reason','transfer','TRANSFER','COMPLETEDBY','blindtransfer','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','transferexten','extension','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','secondtransfererlinkedid','ATTENDED','transferuniqueid','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','queuecallerjoinAt','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s'];(function(_0x5d4deb,_0x35bb40){var _0x4f2974=function(_0x4731a4){while(--_0x4731a4){_0x5d4deb['push'](_0x5d4deb['shift']());}};_0x4f2974(++_0x35bb40);}(_0xf44a,0x145));var _0xaf44=function(_0x234810,_0xe73cc8){_0x234810=_0x234810-0x0;var _0x16af9b=_0xf44a[_0x234810];return _0x16af9b;};'use strict';var _=require(_0xaf44('0x0'));var util=require(_0xaf44('0x1'));var utils=require(_0xaf44('0x2'));var queues={};function writeDB(_0x556468){utils['info'](util[_0xaf44('0x3')](_0xaf44('0x4'),_0x556468[_0xaf44('0x5')],_0x556468[_0xaf44('0x6')],_0x556468[_0xaf44('0x7')],_0x556468['lastAssignedTo'],_0x556468[_0xaf44('0x8')],_0x556468[_0xaf44('0x9')],_0x556468[_0xaf44('0xa')]));if(_0x556468['queue']){utils[_0xaf44('0xb')](_0x556468[_0xaf44('0x7')])[_0xaf44('0xc')](function(_0x239a99){if(_0x239a99){_0x556468[_0xaf44('0xd')]=_0x239a99[_0xaf44('0xd')];}utils[_0xaf44('0xe')]('CreateVoiceQueueReport',_0x556468);});}else{utils[_0xaf44('0xe')](_0xaf44('0xf'),_0x556468);}if(_0x556468[_0xaf44('0x10')]){delete queues[_0x556468[_0xaf44('0x10')]];}else{delete queues[_0x556468[_0xaf44('0x5')]];}}exports[_0xaf44('0x11')]=function(_0xa53daf){try{utils[_0xaf44('0x12')](util[_0xaf44('0x3')](_0xaf44('0x13'),_0xa53daf[_0xaf44('0x5')]),_0xa53daf);utils[_0xaf44('0x14')](util[_0xaf44('0x3')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0xa53daf['uniqueid'],_0xa53daf[_0xaf44('0x7')],_0xa53daf[_0xaf44('0x15')]));queues[_0xa53daf[_0xaf44('0x5')]]=_[_0xaf44('0x16')](_0xa53daf,{'originalposition':_0xa53daf[_0xaf44('0x15')],'queuecallerjoinAt':utils[_0xaf44('0x17')](),'mohtime':0x0});}catch(_0x41da2a){utils[_0xaf44('0x18')](util['format'](_0xaf44('0x13'),_0xa53daf[_0xaf44('0x5')]),_0x41da2a);}};exports[_0xaf44('0x19')]=function(_0x522716){try{if(!_[_0xaf44('0x1a')](queues[_0x522716[_0xaf44('0x5')]])){utils[_0xaf44('0x12')](util['format']('[%s][queues][hangup]',_0x522716['uniqueid']),_0x522716);if(queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x1b')]){if(!queues[_0x522716['uniqueid']][_0xaf44('0x1c')]&&!queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x1d')]){queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x1e')]=!![];queues[_0x522716[_0xaf44('0x5')]]['queuecallercompleteAt']=utils[_0xaf44('0x17')]();queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0xa')]=_0xaf44('0x1f');}utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x20'),_0x522716[_0xaf44('0x5')],queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x21')],queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0xa')]));writeDB(queues[_0x522716['uniqueid']]);}else if(queues[_0x522716['uniqueid']]['transfereduniqueid']){utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x22'),_0x522716['uniqueid'],queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x21')],queues[_0x522716['uniqueid']]['transfereduniqueid']));queues[queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x10')]]=queues[_0x522716['uniqueid']];queues[queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x10')]][_0xaf44('0x23')]=0x2;delete queues[_0x522716[_0xaf44('0x5')]];}}}catch(_0x27df93){utils[_0xaf44('0x18')](util['format'](_0xaf44('0x24'),_0x522716[_0xaf44('0x5')]),_0x27df93);}};exports['varset']=function(_0x45a3ec){try{utils['debug'](util[_0xaf44('0x3')]('[%s][queues][varset]',_0x45a3ec[_0xaf44('0x5')]),_0x45a3ec);if(!_[_0xaf44('0x1a')](_0x45a3ec[_0xaf44('0x25')][_0xaf44('0x26')])&&_0x45a3ec[_0xaf44('0x27')][_0xaf44('0x28')]()!=='CONTINUE'){if(!_[_0xaf44('0x1a')](queues[_0x45a3ec[_0xaf44('0x5')]])){queues[_0x45a3ec[_0xaf44('0x5')]]['queuecallerabandon']=![];queues[_0x45a3ec['uniqueid']][_0xaf44('0x29')]=null;queues[_0x45a3ec[_0xaf44('0x5')]]['queuecallerexit']=!![];queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0x2a')]=utils[_0xaf44('0x17')]();queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0xa')]=_0x45a3ec[_0xaf44('0x27')][_0xaf44('0x28')]();utils[_0xaf44('0x14')](util['format'](_0xaf44('0x2b'),_0x45a3ec[_0xaf44('0x5')],queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0x21')],_0x45a3ec[_0xaf44('0x27')],queues[_0x45a3ec[_0xaf44('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x45a3ec[_0xaf44('0x5')]]);}}else if(!_[_0xaf44('0x1a')](_0x45a3ec['variable'][_0xaf44('0x2c')])){if(!_[_0xaf44('0x1a')](queues[_0x45a3ec['uniqueid']])&&!queues[_0x45a3ec[_0xaf44('0x5')]]['queuecallerabandon']){queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0x1c')]=![];queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0x29')]=null;queues[_0x45a3ec[_0xaf44('0x5')]]['queuecallerexit']=!![];queues[_0x45a3ec[_0xaf44('0x5')]]['queuecallerexitAt']=utils[_0xaf44('0x17')]();queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0xa')]='EXITWITHKEY';utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x2d'),_0x45a3ec[_0xaf44('0x5')],queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0x21')],_0x45a3ec[_0xaf44('0x27')],queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0xa')]));}}}catch(_0x273e5e){utils[_0xaf44('0x18')](util[_0xaf44('0x3')](_0xaf44('0x2e'),_0x45a3ec[_0xaf44('0x5')]),_0x273e5e);}};exports[_0xaf44('0x1c')]=function(_0x58bfed){try{if(!_[_0xaf44('0x1a')](queues[_0x58bfed['uniqueid']])){utils['debug'](util['format']('[%s][queues][queuecallerabandon]',_0x58bfed[_0xaf44('0x5')]),_0x58bfed);queues[_0x58bfed[_0xaf44('0x5')]][_0xaf44('0x1d')]=![];queues[_0x58bfed[_0xaf44('0x5')]][_0xaf44('0x2a')]=null;queues[_0x58bfed['uniqueid']][_0xaf44('0x1c')]=!![];queues[_0x58bfed['uniqueid']][_0xaf44('0x29')]=utils[_0xaf44('0x17')]();queues[_0x58bfed['uniqueid']][_0xaf44('0xa')]=_0xaf44('0x2f');utils['info'](util[_0xaf44('0x3')](_0xaf44('0x30'),_0x58bfed[_0xaf44('0x5')],queues[_0x58bfed[_0xaf44('0x5')]][_0xaf44('0x21')],queues[_0x58bfed[_0xaf44('0x5')]][_0xaf44('0xa')]));}}catch(_0x2988a6){utils[_0xaf44('0x18')](util['format'](_0xaf44('0x31'),_0x58bfed['uniqueid']),_0x2988a6);}};exports[_0xaf44('0x32')]=function(_0x1f861e){try{if(!_[_0xaf44('0x1a')](queues[_0x1f861e[_0xaf44('0x5')]])){utils[_0xaf44('0x12')](util[_0xaf44('0x3')](_0xaf44('0x33'),_0x1f861e['uniqueid']),_0x1f861e);utils['info'](util[_0xaf44('0x3')]('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x1f861e['uniqueid'],queues[_0x1f861e['uniqueid']][_0xaf44('0x21')],_0x1f861e['connectedlinenum'],_0x1f861e[_0xaf44('0x34')]));queues[_0x1f861e['uniqueid']]['queuecallerleave']=!![];queues[_0x1f861e['uniqueid']][_0xaf44('0x1b')]=utils[_0xaf44('0x17')]();queues[_0x1f861e[_0xaf44('0x5')]][_0xaf44('0x35')]=utils['diffTime'](queues[_0x1f861e['uniqueid']][_0xaf44('0x1b')],queues[_0x1f861e[_0xaf44('0x5')]]['queuecallerjoinAt']);queues[_0x1f861e[_0xaf44('0x5')]][_0xaf44('0x15')]=_0x1f861e[_0xaf44('0x15')];queues[_0x1f861e[_0xaf44('0x5')]][_0xaf44('0x36')]=_0x1f861e[_0xaf44('0x36')];queues[_0x1f861e[_0xaf44('0x5')]][_0xaf44('0x37')]=_0x1f861e[_0xaf44('0x37')];queues[_0x1f861e[_0xaf44('0x5')]][_0xaf44('0x34')]=_0x1f861e[_0xaf44('0x34')];}}catch(_0x29f2e3){utils[_0xaf44('0x18')](util[_0xaf44('0x3')](_0xaf44('0x33'),_0x1f861e[_0xaf44('0x5')]),_0x29f2e3);}};exports[_0xaf44('0x38')]=function(_0x596efe){try{if(!_[_0xaf44('0x1a')](queues[_0x596efe[_0xaf44('0x5')]])){utils[_0xaf44('0x12')](util[_0xaf44('0x3')](_0xaf44('0x39'),_0x596efe[_0xaf44('0x5')]),_0x596efe);utils['info'](util[_0xaf44('0x3')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x596efe[_0xaf44('0x5')],queues[_0x596efe[_0xaf44('0x5')]][_0xaf44('0x21')],_0x596efe['membername'],_0x596efe[_0xaf44('0x3a')]));queues[_0x596efe['uniqueid']]['queuecallerabandon']=![];queues[_0x596efe[_0xaf44('0x5')]][_0xaf44('0x1c')]=![];queues[_0x596efe[_0xaf44('0x5')]][_0xaf44('0x29')]=null;queues[_0x596efe['uniqueid']][_0xaf44('0x1d')]=![];queues[_0x596efe['uniqueid']][_0xaf44('0xa')]=null;queues[_0x596efe[_0xaf44('0x5')]]['queuecallerexitAt']=null;queues[_0x596efe[_0xaf44('0x5')]][_0xaf44('0x3b')]=!![];queues[_0x596efe[_0xaf44('0x5')]]['accountcode']=_0x596efe[_0xaf44('0x3a')];queues[_0x596efe[_0xaf44('0x5')]]['lastAssignedTo']=_0x596efe[_0xaf44('0x3c')];}}catch(_0x43508e){utils['error'](util['format']('[%s][queues][agentconnect]',_0x596efe[_0xaf44('0x5')]),_0x43508e);}};exports[_0xaf44('0x3d')]=function(_0x61c662){try{if(!_[_0xaf44('0x1a')](queues[_0x61c662['uniqueid']])){if(queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x1b')]){utils['debug'](util[_0xaf44('0x3')](_0xaf44('0x3e'),_0x61c662[_0xaf44('0x5')]),_0x61c662);queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x1c')]=![];queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x1c')]=![];queues[_0x61c662[_0xaf44('0x5')]]['queuecallerabandonAt']=null;queues[_0x61c662[_0xaf44('0x5')]]['queuecallerexit']=![];queues[_0x61c662['uniqueid']][_0xaf44('0x2a')]=null;queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x3b')]=!![];queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x3f')]=_0x61c662[_0xaf44('0x3c')];queues[_0x61c662[_0xaf44('0x5')]]['queuecallercomplete']=!![];queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x40')]=utils[_0xaf44('0x17')]();if(_0x61c662[_0xaf44('0x41')]==_0xaf44('0x42')){if(!queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x42')]){queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0xa')]=_0xaf44('0x43');}}else{queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0xa')]=_0xaf44('0x44')+_0x61c662[_0xaf44('0x41')][_0xaf44('0x28')]();}utils[_0xaf44('0x14')](util[_0xaf44('0x3')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x61c662[_0xaf44('0x5')],queues[_0x61c662['uniqueid']]['name'],_0x61c662[_0xaf44('0x3c')],queues[_0x61c662['uniqueid']][_0xaf44('0xa')]));writeDB(queues[_0x61c662['uniqueid']]);}}}catch(_0x5414bc){utils[_0xaf44('0x18')](util[_0xaf44('0x3')](_0xaf44('0x3e'),_0x61c662[_0xaf44('0x5')]),_0x5414bc);}};exports[_0xaf44('0x45')]=function(_0x443b3b){try{if(!_['isNil'](queues[_0x443b3b['transfereeuniqueid']])){utils[_0xaf44('0x12')](util[_0xaf44('0x3')](_0xaf44('0x46'),_0x443b3b['uniqueid']),_0x443b3b);queues[_0x443b3b[_0xaf44('0x47')]][_0xaf44('0x42')]=!![];queues[_0x443b3b[_0xaf44('0x47')]][_0xaf44('0x48')]=_0xaf44('0x49');queues[_0x443b3b[_0xaf44('0x47')]][_0xaf44('0x4a')]=_0x443b3b[_0xaf44('0x4b')];queues[_0x443b3b[_0xaf44('0x47')]]['transferuniqueid']=_0x443b3b['transfereeuniqueid'];queues[_0x443b3b[_0xaf44('0x47')]]['queuecallerexitreason']=_0xaf44('0x4c');utils[_0xaf44('0x14')](util['format'](_0xaf44('0x4d'),_0x443b3b[_0xaf44('0x5')],queues[_0x443b3b[_0xaf44('0x47')]][_0xaf44('0x21')],_0x443b3b[_0xaf44('0x47')],_0x443b3b[_0xaf44('0x4b')]));}}catch(_0x2f0deb){utils[_0xaf44('0x18')](util[_0xaf44('0x3')](_0xaf44('0x46'),_0x443b3b[_0xaf44('0x5')]),_0x2f0deb);}};exports[_0xaf44('0x4e')]=function(_0x3a1580){try{utils[_0xaf44('0x12')](util['format'](_0xaf44('0x4f'),_0x3a1580[_0xaf44('0x50')]),_0x3a1580);if(_0x3a1580[_0xaf44('0x50')]==_0x3a1580[_0xaf44('0x51')]){if(!_['isNil'](queues[_0x3a1580['secondtransfererlinkedid']])){utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x52'),_0x3a1580[_0xaf44('0x50')],queues[_0x3a1580['secondtransfererlinkedid']][_0xaf44('0x21')],_0x3a1580[_0xaf44('0x53')]));queues[_0x3a1580[_0xaf44('0x54')]]['transfer']=!![];queues[_0x3a1580[_0xaf44('0x54')]]['transfertype']=_0xaf44('0x55');queues[_0x3a1580[_0xaf44('0x54')]][_0xaf44('0x4a')]=_0x3a1580[_0xaf44('0x53')];queues[_0x3a1580[_0xaf44('0x54')]][_0xaf44('0x56')]=_0x3a1580[_0xaf44('0x50')];queues[_0x3a1580[_0xaf44('0x54')]][_0xaf44('0xa')]=_0xaf44('0x57');}if(!_[_0xaf44('0x1a')](queues[_0x3a1580[_0xaf44('0x51')]])){if(_0x3a1580[_0xaf44('0x58')]&&queues[_0x3a1580[_0xaf44('0x58')]]){queues[_0x3a1580['transfereelinkedid']][_0xaf44('0x23')]=0x1;queues[_0x3a1580['transfereeuniqueid']]=_[_0xaf44('0x59')](queues[_0x3a1580['transfereelinkedid']]);queues[_0x3a1580[_0xaf44('0x47')]][_0xaf44('0x10')]=_0x3a1580[_0xaf44('0x5a')];queues[_0x3a1580[_0xaf44('0x47')]]['queuecallerenterreason']=0x2;queues[_0x3a1580['transfereeuniqueid']][_0xaf44('0x8')]=queues[_0x3a1580['secondtransfererlinkedid']][_0xaf44('0x8')];queues[_0x3a1580[_0xaf44('0x47')]]['calleridname']=queues[_0x3a1580['secondtransfererlinkedid']][_0xaf44('0x5b')];queues[_0x3a1580[_0xaf44('0x47')]]['queuecallerjoinAt']=utils[_0xaf44('0x17')]();queues[_0x3a1580[_0xaf44('0x47')]][_0xaf44('0x1b')]=utils[_0xaf44('0x17')]();queues[_0x3a1580[_0xaf44('0x47')]][_0xaf44('0x35')]=0x0;queues[_0x3a1580[_0xaf44('0x47')]][_0xaf44('0x5c')]=0x0;utils['info'](util[_0xaf44('0x3')](_0xaf44('0x5d'),_0x3a1580[_0xaf44('0x50')],queues[_0x3a1580[_0xaf44('0x47')]][_0xaf44('0x21')],queues[_0x3a1580['transfereeuniqueid']][_0xaf44('0x8')],queues[_0x3a1580['transfereeuniqueid']]['calleridname']));}else{utils['info'](util['format'](_0xaf44('0x5e'),_0x3a1580[_0xaf44('0x50')],queues[_0x3a1580['origtransfererlinkedid']][_0xaf44('0x21')],_0x3a1580[_0xaf44('0x54')]));queues[_0x3a1580[_0xaf44('0x51')]][_0xaf44('0x10')]=_0x3a1580[_0xaf44('0x54')];}}}else if(_0x3a1580[_0xaf44('0x5f')]==_0x3a1580[_0xaf44('0x54')]){if(!_[_0xaf44('0x1a')](queues[_0x3a1580[_0xaf44('0x51')]])){utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x60'),_0x3a1580[_0xaf44('0x50')],queues[_0x3a1580[_0xaf44('0x51')]][_0xaf44('0x21')],_0x3a1580['secondtransfereruniqueid'],_0x3a1580['secondtransfererexten']));queues[_0x3a1580[_0xaf44('0x51')]]['transfer']=!![];queues[_0x3a1580[_0xaf44('0x51')]][_0xaf44('0x48')]=_0xaf44('0x55');queues[_0x3a1580[_0xaf44('0x51')]][_0xaf44('0x4a')]=_0x3a1580[_0xaf44('0x61')];queues[_0x3a1580['origtransfererlinkedid']]['transferuniqueid']=_0x3a1580[_0xaf44('0x5f')];queues[_0x3a1580[_0xaf44('0x51')]][_0xaf44('0xa')]=_0xaf44('0x57');}if(!_['isNil'](queues[_0x3a1580[_0xaf44('0x54')]])){if(_0x3a1580['transfertargetlinkedid']&&queues[_0x3a1580['transfertargetlinkedid']]){queues[_0x3a1580[_0xaf44('0x62')]][_0xaf44('0x23')]=0x1;queues[_0x3a1580['transfertargetuniqueid']]=_[_0xaf44('0x59')](queues[_0x3a1580[_0xaf44('0x62')]]);queues[_0x3a1580[_0xaf44('0x5a')]]['transfereduniqueid']=_0x3a1580[_0xaf44('0x5a')];queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x23')]=0x2;queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x8')]=queues[_0x3a1580[_0xaf44('0x51')]][_0xaf44('0x8')];queues[_0x3a1580['transfertargetuniqueid']][_0xaf44('0x5b')]=queues[_0x3a1580[_0xaf44('0x51')]]['calleridname'];queues[_0x3a1580['transfertargetuniqueid']][_0xaf44('0x63')]=utils[_0xaf44('0x17')]();queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x1b')]=utils[_0xaf44('0x17')]();queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x35')]=0x0;queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x5c')]=0x0;utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x64'),_0x3a1580['origtransfereruniqueid'],queues[_0x3a1580[_0xaf44('0x5a')]]['name'],queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x10')],queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x8')],queues[_0x3a1580['transfertargetuniqueid']][_0xaf44('0x5b')]));}else{utils[_0xaf44('0x14')](util[_0xaf44('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x3a1580['origtransfereruniqueid'],queues[_0x3a1580[_0xaf44('0x54')]][_0xaf44('0x21')],_0x3a1580[_0xaf44('0x51')]));queues[_0x3a1580['secondtransfererlinkedid']][_0xaf44('0x10')]=_0x3a1580[_0xaf44('0x51')];}}}}catch(_0x1a2d39){utils[_0xaf44('0x18')](util[_0xaf44('0x3')](_0xaf44('0x4f'),_0x3a1580[_0xaf44('0x50')]),_0x1a2d39);}};exports['musiconholdstart']=function(_0x451a0f){try{if(!_[_0xaf44('0x1a')](queues[_0x451a0f[_0xaf44('0x5')]])){utils[_0xaf44('0x12')](util['format']('[%s][queues][musiconholdstart]',_0x451a0f[_0xaf44('0x5')]),_0x451a0f);queues[_0x451a0f['uniqueid']][_0xaf44('0x65')]=utils[_0xaf44('0x17')]();utils[_0xaf44('0x14')](util['format'](_0xaf44('0x66'),_0x451a0f[_0xaf44('0x5')],queues[_0x451a0f[_0xaf44('0x5')]][_0xaf44('0x21')],queues[_0x451a0f['uniqueid']][_0xaf44('0x65')]));}}catch(_0x27b099){utils[_0xaf44('0x18')](util[_0xaf44('0x3')]('[%s][queues][musiconholdstart]',_0x451a0f[_0xaf44('0x5')]),_0x27b099);}};exports[_0xaf44('0x67')]=function(_0x45bbe4){try{if(!_[_0xaf44('0x1a')](queues[_0x45bbe4[_0xaf44('0x5')]])){if(!_[_0xaf44('0x1a')](queues[_0x45bbe4[_0xaf44('0x5')]][_0xaf44('0x65')])){utils[_0xaf44('0x12')](util[_0xaf44('0x3')](_0xaf44('0x68'),_0x45bbe4[_0xaf44('0x5')]),_0x45bbe4);queues[_0x45bbe4[_0xaf44('0x5')]]['mohtime']+=utils[_0xaf44('0x69')](utils[_0xaf44('0x17')](),queues[_0x45bbe4[_0xaf44('0x5')]]['musiconholdstartAt']);utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x6a'),_0x45bbe4[_0xaf44('0x5')],queues[_0x45bbe4[_0xaf44('0x5')]][_0xaf44('0x21')],queues[_0x45bbe4[_0xaf44('0x5')]][_0xaf44('0x5c')]));delete queues[_0x45bbe4[_0xaf44('0x5')]][_0xaf44('0x65')];}}}catch(_0x27ba4d){utils['error'](util['format'](_0xaf44('0x68'),_0x45bbe4['uniqueid']),_0x27ba4d);}};
\ No newline at end of file
+var _0xc6a1=['queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','queuecallerenterreason','error','varset','[%s][queues][varset]','isNil','variable','value','CONTINUE','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerabandonAt','queuecallerexitAt','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','holdtime','diffTime','count','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','[%s][queues][agentconnect]','[%s][queues][agentcomplete]','queuecallercomplete','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','transferexten','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','extension','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDED','ATTENDEDTRANSFER','transfereelinkedid','clone','calleridnum','calleridname','mohtime','[%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','transfertargetuniqueid','queuecallerjoinAt','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','channel','queue','lastAssignedTo','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','CreateVoiceQueueReport','transfereduniqueid','uniqueid','queuecallerjoin','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','debug','[%s][queues][hangup]'];(function(_0x1f88ab,_0x200dcf){var _0x4b6fcd=function(_0x2eda98){while(--_0x2eda98){_0x1f88ab['push'](_0x1f88ab['shift']());}};_0x4b6fcd(++_0x200dcf);}(_0xc6a1,0x120));var _0x1c6a=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xc6a1[_0x1cc8fe];return _0x230054;};'use strict';var _=require(_0x1c6a('0x0'));var util=require('util');var utils=require(_0x1c6a('0x1'));var queues={};function writeDB(_0x5c9dec){utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')](_0x1c6a('0x4'),_0x5c9dec['uniqueid'],_0x5c9dec[_0x1c6a('0x5')],_0x5c9dec[_0x1c6a('0x6')],_0x5c9dec[_0x1c6a('0x7')],_0x5c9dec['calleridnum'],_0x5c9dec[_0x1c6a('0x8')],_0x5c9dec[_0x1c6a('0x9')]));if(_0x5c9dec['queue']){utils[_0x1c6a('0xa')](_0x5c9dec[_0x1c6a('0x6')])[_0x1c6a('0xb')](function(_0x2937ad){if(_0x2937ad){_0x5c9dec[_0x1c6a('0xc')]=_0x2937ad[_0x1c6a('0xc')];}utils['request'](_0x1c6a('0xd'),_0x5c9dec);});}else{utils['request'](_0x1c6a('0xd'),_0x5c9dec);}if(_0x5c9dec[_0x1c6a('0xe')]){delete queues[_0x5c9dec[_0x1c6a('0xe')]];}else{delete queues[_0x5c9dec[_0x1c6a('0xf')]];}}exports[_0x1c6a('0x10')]=function(_0x1cc6ef){try{utils['debug'](util[_0x1c6a('0x3')](_0x1c6a('0x11'),_0x1cc6ef[_0x1c6a('0xf')]),_0x1cc6ef);utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')](_0x1c6a('0x12'),_0x1cc6ef['uniqueid'],_0x1cc6ef[_0x1c6a('0x6')],_0x1cc6ef[_0x1c6a('0x13')]));queues[_0x1cc6ef[_0x1c6a('0xf')]]=_[_0x1c6a('0x14')](_0x1cc6ef,{'originalposition':_0x1cc6ef[_0x1c6a('0x13')],'queuecallerjoinAt':utils[_0x1c6a('0x15')](),'mohtime':0x0});}catch(_0x53ffac){utils['error'](util[_0x1c6a('0x3')](_0x1c6a('0x11'),_0x1cc6ef[_0x1c6a('0xf')]),_0x53ffac);}};exports['hangup']=function(_0x1a86e6){try{if(!_['isNil'](queues[_0x1a86e6[_0x1c6a('0xf')]])){utils[_0x1c6a('0x16')](util[_0x1c6a('0x3')](_0x1c6a('0x17'),_0x1a86e6[_0x1c6a('0xf')]),_0x1a86e6);if(queues[_0x1a86e6['uniqueid']][_0x1c6a('0x18')]){if(!queues[_0x1a86e6['uniqueid']][_0x1c6a('0x19')]&&!queues[_0x1a86e6[_0x1c6a('0xf')]][_0x1c6a('0x1a')]){queues[_0x1a86e6[_0x1c6a('0xf')]]['queuecallercomplete']=!![];queues[_0x1a86e6[_0x1c6a('0xf')]][_0x1c6a('0x1b')]=utils[_0x1c6a('0x15')]();queues[_0x1a86e6[_0x1c6a('0xf')]][_0x1c6a('0x9')]=_0x1c6a('0x1c');}utils['info'](util[_0x1c6a('0x3')](_0x1c6a('0x1d'),_0x1a86e6[_0x1c6a('0xf')],queues[_0x1a86e6['uniqueid']][_0x1c6a('0x1e')],queues[_0x1a86e6[_0x1c6a('0xf')]][_0x1c6a('0x9')]));writeDB(queues[_0x1a86e6[_0x1c6a('0xf')]]);}else if(queues[_0x1a86e6[_0x1c6a('0xf')]][_0x1c6a('0xe')]){utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x1a86e6[_0x1c6a('0xf')],queues[_0x1a86e6[_0x1c6a('0xf')]][_0x1c6a('0x1e')],queues[_0x1a86e6[_0x1c6a('0xf')]]['transfereduniqueid']));queues[queues[_0x1a86e6[_0x1c6a('0xf')]][_0x1c6a('0xe')]]=queues[_0x1a86e6[_0x1c6a('0xf')]];queues[queues[_0x1a86e6['uniqueid']][_0x1c6a('0xe')]][_0x1c6a('0x1f')]=0x2;delete queues[_0x1a86e6['uniqueid']];}}}catch(_0x2ea642){utils[_0x1c6a('0x20')](util[_0x1c6a('0x3')](_0x1c6a('0x17'),_0x1a86e6[_0x1c6a('0xf')]),_0x2ea642);}};exports[_0x1c6a('0x21')]=function(_0x3f2d4d){try{utils[_0x1c6a('0x16')](util[_0x1c6a('0x3')](_0x1c6a('0x22'),_0x3f2d4d[_0x1c6a('0xf')]),_0x3f2d4d);if(!_[_0x1c6a('0x23')](_0x3f2d4d[_0x1c6a('0x24')]['queuestatus'])&&_0x3f2d4d[_0x1c6a('0x25')]['toUpperCase']()!==_0x1c6a('0x26')){if(!_[_0x1c6a('0x23')](queues[_0x3f2d4d['uniqueid']])){queues[_0x3f2d4d['uniqueid']][_0x1c6a('0x19')]=![];queues[_0x3f2d4d[_0x1c6a('0xf')]]['queuecallerabandonAt']=null;queues[_0x3f2d4d[_0x1c6a('0xf')]]['queuecallerexit']=!![];queues[_0x3f2d4d['uniqueid']]['queuecallerexitAt']=utils[_0x1c6a('0x15')]();queues[_0x3f2d4d[_0x1c6a('0xf')]][_0x1c6a('0x9')]=_0x3f2d4d['value'][_0x1c6a('0x27')]();utils['info'](util[_0x1c6a('0x3')](_0x1c6a('0x28'),_0x3f2d4d[_0x1c6a('0xf')],queues[_0x3f2d4d['uniqueid']]['name'],_0x3f2d4d[_0x1c6a('0x25')],queues[_0x3f2d4d[_0x1c6a('0xf')]]['queuecallerexitreason']));writeDB(queues[_0x3f2d4d[_0x1c6a('0xf')]]);}}else if(!_['isNil'](_0x3f2d4d[_0x1c6a('0x24')][_0x1c6a('0x29')])){if(!_['isNil'](queues[_0x3f2d4d[_0x1c6a('0xf')]])&&!queues[_0x3f2d4d[_0x1c6a('0xf')]][_0x1c6a('0x19')]){queues[_0x3f2d4d['uniqueid']][_0x1c6a('0x19')]=![];queues[_0x3f2d4d[_0x1c6a('0xf')]][_0x1c6a('0x2a')]=null;queues[_0x3f2d4d[_0x1c6a('0xf')]][_0x1c6a('0x1a')]=!![];queues[_0x3f2d4d[_0x1c6a('0xf')]][_0x1c6a('0x2b')]=utils[_0x1c6a('0x15')]();queues[_0x3f2d4d[_0x1c6a('0xf')]]['queuecallerexitreason']='EXITWITHKEY';utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')]('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x3f2d4d[_0x1c6a('0xf')],queues[_0x3f2d4d['uniqueid']][_0x1c6a('0x1e')],_0x3f2d4d['value'],queues[_0x3f2d4d[_0x1c6a('0xf')]][_0x1c6a('0x9')]));}}}catch(_0x5065ce){utils[_0x1c6a('0x20')](util['format'](_0x1c6a('0x22'),_0x3f2d4d[_0x1c6a('0xf')]),_0x5065ce);}};exports[_0x1c6a('0x19')]=function(_0x490a63){try{if(!_[_0x1c6a('0x23')](queues[_0x490a63[_0x1c6a('0xf')]])){utils['debug'](util['format'](_0x1c6a('0x2c'),_0x490a63[_0x1c6a('0xf')]),_0x490a63);queues[_0x490a63[_0x1c6a('0xf')]][_0x1c6a('0x1a')]=![];queues[_0x490a63[_0x1c6a('0xf')]][_0x1c6a('0x2b')]=null;queues[_0x490a63['uniqueid']]['queuecallerabandon']=!![];queues[_0x490a63[_0x1c6a('0xf')]][_0x1c6a('0x2a')]=utils['now']();queues[_0x490a63['uniqueid']][_0x1c6a('0x9')]='ABANDONED';utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')](_0x1c6a('0x2d'),_0x490a63['uniqueid'],queues[_0x490a63['uniqueid']]['name'],queues[_0x490a63[_0x1c6a('0xf')]][_0x1c6a('0x9')]));}}catch(_0x494963){utils[_0x1c6a('0x20')](util[_0x1c6a('0x3')](_0x1c6a('0x2c'),_0x490a63[_0x1c6a('0xf')]),_0x494963);}};exports[_0x1c6a('0x2e')]=function(_0x5f39c4){try{if(!_[_0x1c6a('0x23')](queues[_0x5f39c4[_0x1c6a('0xf')]])){utils[_0x1c6a('0x16')](util[_0x1c6a('0x3')](_0x1c6a('0x2f'),_0x5f39c4['uniqueid']),_0x5f39c4);utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')](_0x1c6a('0x30'),_0x5f39c4[_0x1c6a('0xf')],queues[_0x5f39c4['uniqueid']][_0x1c6a('0x1e')],_0x5f39c4[_0x1c6a('0x31')],_0x5f39c4[_0x1c6a('0x32')]));queues[_0x5f39c4[_0x1c6a('0xf')]][_0x1c6a('0x2e')]=!![];queues[_0x5f39c4[_0x1c6a('0xf')]][_0x1c6a('0x18')]=utils['now']();queues[_0x5f39c4[_0x1c6a('0xf')]][_0x1c6a('0x33')]=utils[_0x1c6a('0x34')](queues[_0x5f39c4[_0x1c6a('0xf')]][_0x1c6a('0x18')],queues[_0x5f39c4[_0x1c6a('0xf')]]['queuecallerjoinAt']);queues[_0x5f39c4['uniqueid']]['position']=_0x5f39c4[_0x1c6a('0x13')];queues[_0x5f39c4[_0x1c6a('0xf')]]['count']=_0x5f39c4[_0x1c6a('0x35')];queues[_0x5f39c4[_0x1c6a('0xf')]][_0x1c6a('0x31')]=_0x5f39c4[_0x1c6a('0x31')];queues[_0x5f39c4['uniqueid']][_0x1c6a('0x32')]=_0x5f39c4[_0x1c6a('0x32')];}}catch(_0x26e6cf){utils[_0x1c6a('0x20')](util['format'](_0x1c6a('0x2f'),_0x5f39c4[_0x1c6a('0xf')]),_0x26e6cf);}};exports[_0x1c6a('0x36')]=function(_0x289942){try{if(!_['isNil'](queues[_0x289942[_0x1c6a('0xf')]])){utils[_0x1c6a('0x16')](util['format']('[%s][queues][agentconnect]',_0x289942['uniqueid']),_0x289942);utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')](_0x1c6a('0x37'),_0x289942[_0x1c6a('0xf')],queues[_0x289942['uniqueid']]['name'],_0x289942[_0x1c6a('0x38')],_0x289942[_0x1c6a('0x39')]));queues[_0x289942[_0x1c6a('0xf')]]['queuecallerabandon']=![];queues[_0x289942[_0x1c6a('0xf')]][_0x1c6a('0x19')]=![];queues[_0x289942[_0x1c6a('0xf')]][_0x1c6a('0x2a')]=null;queues[_0x289942[_0x1c6a('0xf')]]['queuecallerexit']=![];queues[_0x289942['uniqueid']]['queuecallerexitreason']=null;queues[_0x289942[_0x1c6a('0xf')]]['queuecallerexitAt']=null;queues[_0x289942[_0x1c6a('0xf')]][_0x1c6a('0x3a')]=!![];queues[_0x289942[_0x1c6a('0xf')]]['accountcode']=_0x289942[_0x1c6a('0x39')];queues[_0x289942['uniqueid']][_0x1c6a('0x7')]=_0x289942[_0x1c6a('0x38')];}}catch(_0x16b6a3){utils['error'](util[_0x1c6a('0x3')](_0x1c6a('0x3b'),_0x289942['uniqueid']),_0x16b6a3);}};exports['agentcomplete']=function(_0x2b623a){try{if(!_[_0x1c6a('0x23')](queues[_0x2b623a[_0x1c6a('0xf')]])){if(queues[_0x2b623a[_0x1c6a('0xf')]][_0x1c6a('0x18')]){utils['debug'](util[_0x1c6a('0x3')](_0x1c6a('0x3c'),_0x2b623a[_0x1c6a('0xf')]),_0x2b623a);queues[_0x2b623a[_0x1c6a('0xf')]][_0x1c6a('0x19')]=![];queues[_0x2b623a[_0x1c6a('0xf')]][_0x1c6a('0x19')]=![];queues[_0x2b623a[_0x1c6a('0xf')]][_0x1c6a('0x2a')]=null;queues[_0x2b623a['uniqueid']]['queuecallerexit']=![];queues[_0x2b623a['uniqueid']][_0x1c6a('0x2b')]=null;queues[_0x2b623a[_0x1c6a('0xf')]][_0x1c6a('0x3a')]=!![];queues[_0x2b623a[_0x1c6a('0xf')]][_0x1c6a('0x7')]=_0x2b623a[_0x1c6a('0x38')];queues[_0x2b623a[_0x1c6a('0xf')]][_0x1c6a('0x3d')]=!![];queues[_0x2b623a[_0x1c6a('0xf')]][_0x1c6a('0x1b')]=utils[_0x1c6a('0x15')]();if(_0x2b623a[_0x1c6a('0x3e')]==_0x1c6a('0x3f')){if(!queues[_0x2b623a[_0x1c6a('0xf')]][_0x1c6a('0x3f')]){queues[_0x2b623a[_0x1c6a('0xf')]]['queuecallerexitreason']=_0x1c6a('0x40');}}else{queues[_0x2b623a[_0x1c6a('0xf')]][_0x1c6a('0x9')]=_0x1c6a('0x41')+_0x2b623a[_0x1c6a('0x3e')]['toUpperCase']();}utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')](_0x1c6a('0x42'),_0x2b623a[_0x1c6a('0xf')],queues[_0x2b623a[_0x1c6a('0xf')]]['name'],_0x2b623a['membername'],queues[_0x2b623a[_0x1c6a('0xf')]][_0x1c6a('0x9')]));writeDB(queues[_0x2b623a[_0x1c6a('0xf')]]);}}}catch(_0x4c72b3){utils['error'](util[_0x1c6a('0x3')](_0x1c6a('0x3c'),_0x2b623a[_0x1c6a('0xf')]),_0x4c72b3);}};exports['blindtransfer']=function(_0xbc0bf8){try{if(!_[_0x1c6a('0x23')](queues[_0xbc0bf8[_0x1c6a('0x43')]])){utils[_0x1c6a('0x16')](util['format'](_0x1c6a('0x44'),_0xbc0bf8[_0x1c6a('0xf')]),_0xbc0bf8);queues[_0xbc0bf8[_0x1c6a('0x43')]][_0x1c6a('0x3f')]=!![];queues[_0xbc0bf8[_0x1c6a('0x43')]][_0x1c6a('0x45')]='BLIND';queues[_0xbc0bf8[_0x1c6a('0x43')]][_0x1c6a('0x46')]=_0xbc0bf8['extension'];queues[_0xbc0bf8[_0x1c6a('0x43')]][_0x1c6a('0x47')]=_0xbc0bf8[_0x1c6a('0x43')];queues[_0xbc0bf8[_0x1c6a('0x43')]][_0x1c6a('0x9')]=_0x1c6a('0x48');utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')](_0x1c6a('0x49'),_0xbc0bf8[_0x1c6a('0xf')],queues[_0xbc0bf8[_0x1c6a('0x43')]][_0x1c6a('0x1e')],_0xbc0bf8['transfereeuniqueid'],_0xbc0bf8[_0x1c6a('0x4a')]));}}catch(_0x490025){utils[_0x1c6a('0x20')](util[_0x1c6a('0x3')](_0x1c6a('0x44'),_0xbc0bf8[_0x1c6a('0xf')]),_0x490025);}};exports['attendedtransfer']=function(_0x47664f){try{utils[_0x1c6a('0x16')](util[_0x1c6a('0x3')](_0x1c6a('0x4b'),_0x47664f['origtransfereruniqueid']),_0x47664f);if(_0x47664f[_0x1c6a('0x4c')]==_0x47664f[_0x1c6a('0x4d')]){if(!_[_0x1c6a('0x23')](queues[_0x47664f[_0x1c6a('0x4e')]])){utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')](_0x1c6a('0x4f'),_0x47664f[_0x1c6a('0x4c')],queues[_0x47664f['secondtransfererlinkedid']][_0x1c6a('0x1e')],_0x47664f[_0x1c6a('0x50')]));queues[_0x47664f[_0x1c6a('0x4e')]]['transfer']=!![];queues[_0x47664f[_0x1c6a('0x4e')]][_0x1c6a('0x45')]=_0x1c6a('0x51');queues[_0x47664f[_0x1c6a('0x4e')]][_0x1c6a('0x46')]=_0x47664f[_0x1c6a('0x50')];queues[_0x47664f[_0x1c6a('0x4e')]]['transferuniqueid']=_0x47664f['origtransfereruniqueid'];queues[_0x47664f[_0x1c6a('0x4e')]][_0x1c6a('0x9')]=_0x1c6a('0x52');}if(!_[_0x1c6a('0x23')](queues[_0x47664f[_0x1c6a('0x4d')]])){if(_0x47664f['transfereelinkedid']&&queues[_0x47664f[_0x1c6a('0x53')]]){queues[_0x47664f['transfereelinkedid']][_0x1c6a('0x1f')]=0x1;queues[_0x47664f[_0x1c6a('0x43')]]=_[_0x1c6a('0x54')](queues[_0x47664f[_0x1c6a('0x53')]]);queues[_0x47664f['transfereeuniqueid']]['transfereduniqueid']=_0x47664f['transfertargetuniqueid'];queues[_0x47664f[_0x1c6a('0x43')]][_0x1c6a('0x1f')]=0x2;queues[_0x47664f[_0x1c6a('0x43')]][_0x1c6a('0x55')]=queues[_0x47664f[_0x1c6a('0x4e')]]['calleridnum'];queues[_0x47664f[_0x1c6a('0x43')]][_0x1c6a('0x56')]=queues[_0x47664f[_0x1c6a('0x4e')]][_0x1c6a('0x56')];queues[_0x47664f[_0x1c6a('0x43')]]['queuecallerjoinAt']=utils[_0x1c6a('0x15')]();queues[_0x47664f[_0x1c6a('0x43')]][_0x1c6a('0x18')]=utils[_0x1c6a('0x15')]();queues[_0x47664f[_0x1c6a('0x43')]]['holdtime']=0x0;queues[_0x47664f[_0x1c6a('0x43')]][_0x1c6a('0x57')]=0x0;utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')](_0x1c6a('0x58'),_0x47664f[_0x1c6a('0x4c')],queues[_0x47664f[_0x1c6a('0x43')]][_0x1c6a('0x1e')],queues[_0x47664f['transfereeuniqueid']][_0x1c6a('0x55')],queues[_0x47664f['transfereeuniqueid']][_0x1c6a('0x56')]));}else{utils['info'](util[_0x1c6a('0x3')](_0x1c6a('0x59'),_0x47664f['origtransfereruniqueid'],queues[_0x47664f['origtransfererlinkedid']][_0x1c6a('0x1e')],_0x47664f[_0x1c6a('0x4e')]));queues[_0x47664f[_0x1c6a('0x4d')]]['transfereduniqueid']=_0x47664f[_0x1c6a('0x4e')];}}}else if(_0x47664f['secondtransfereruniqueid']==_0x47664f['secondtransfererlinkedid']){if(!_[_0x1c6a('0x23')](queues[_0x47664f['origtransfererlinkedid']])){utils['info'](util['format'](_0x1c6a('0x5a'),_0x47664f['origtransfereruniqueid'],queues[_0x47664f[_0x1c6a('0x4d')]][_0x1c6a('0x1e')],_0x47664f[_0x1c6a('0x5b')],_0x47664f[_0x1c6a('0x5c')]));queues[_0x47664f['origtransfererlinkedid']]['transfer']=!![];queues[_0x47664f[_0x1c6a('0x4d')]]['transfertype']=_0x1c6a('0x51');queues[_0x47664f['origtransfererlinkedid']]['transferexten']=_0x47664f[_0x1c6a('0x5c')];queues[_0x47664f[_0x1c6a('0x4d')]][_0x1c6a('0x47')]=_0x47664f[_0x1c6a('0x5b')];queues[_0x47664f[_0x1c6a('0x4d')]]['queuecallerexitreason']='ATTENDEDTRANSFER';}if(!_[_0x1c6a('0x23')](queues[_0x47664f[_0x1c6a('0x4e')]])){if(_0x47664f[_0x1c6a('0x5d')]&&queues[_0x47664f[_0x1c6a('0x5d')]]){queues[_0x47664f[_0x1c6a('0x5d')]][_0x1c6a('0x1f')]=0x1;queues[_0x47664f[_0x1c6a('0x5e')]]=_[_0x1c6a('0x54')](queues[_0x47664f['transfertargetlinkedid']]);queues[_0x47664f[_0x1c6a('0x5e')]][_0x1c6a('0xe')]=_0x47664f['transfertargetuniqueid'];queues[_0x47664f['transfertargetuniqueid']]['queuecallerenterreason']=0x2;queues[_0x47664f[_0x1c6a('0x5e')]]['calleridnum']=queues[_0x47664f[_0x1c6a('0x4d')]][_0x1c6a('0x55')];queues[_0x47664f[_0x1c6a('0x5e')]][_0x1c6a('0x56')]=queues[_0x47664f[_0x1c6a('0x4d')]][_0x1c6a('0x56')];queues[_0x47664f['transfertargetuniqueid']][_0x1c6a('0x5f')]=utils[_0x1c6a('0x15')]();queues[_0x47664f[_0x1c6a('0x5e')]][_0x1c6a('0x18')]=utils[_0x1c6a('0x15')]();queues[_0x47664f[_0x1c6a('0x5e')]][_0x1c6a('0x33')]=0x0;queues[_0x47664f[_0x1c6a('0x5e')]][_0x1c6a('0x57')]=0x0;utils['info'](util[_0x1c6a('0x3')](_0x1c6a('0x60'),_0x47664f[_0x1c6a('0x4c')],queues[_0x47664f['transfertargetuniqueid']][_0x1c6a('0x1e')],queues[_0x47664f['transfertargetuniqueid']][_0x1c6a('0xe')],queues[_0x47664f['transfertargetuniqueid']][_0x1c6a('0x55')],queues[_0x47664f[_0x1c6a('0x5e')]][_0x1c6a('0x56')]));}else{utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')](_0x1c6a('0x59'),_0x47664f['origtransfereruniqueid'],queues[_0x47664f[_0x1c6a('0x4e')]][_0x1c6a('0x1e')],_0x47664f['origtransfererlinkedid']));queues[_0x47664f['secondtransfererlinkedid']]['transfereduniqueid']=_0x47664f[_0x1c6a('0x4d')];}}}}catch(_0x209efa){utils[_0x1c6a('0x20')](util['format'](_0x1c6a('0x4b'),_0x47664f[_0x1c6a('0x4c')]),_0x209efa);}};exports[_0x1c6a('0x61')]=function(_0x4615a8){try{if(!_[_0x1c6a('0x23')](queues[_0x4615a8['uniqueid']])){utils['debug'](util['format'](_0x1c6a('0x62'),_0x4615a8[_0x1c6a('0xf')]),_0x4615a8);queues[_0x4615a8[_0x1c6a('0xf')]][_0x1c6a('0x63')]=utils[_0x1c6a('0x15')]();utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')](_0x1c6a('0x64'),_0x4615a8[_0x1c6a('0xf')],queues[_0x4615a8[_0x1c6a('0xf')]][_0x1c6a('0x1e')],queues[_0x4615a8[_0x1c6a('0xf')]][_0x1c6a('0x63')]));}}catch(_0x2eafa4){utils[_0x1c6a('0x20')](util[_0x1c6a('0x3')](_0x1c6a('0x62'),_0x4615a8[_0x1c6a('0xf')]),_0x2eafa4);}};exports[_0x1c6a('0x65')]=function(_0x5643fe){try{if(!_[_0x1c6a('0x23')](queues[_0x5643fe[_0x1c6a('0xf')]])){if(!_[_0x1c6a('0x23')](queues[_0x5643fe['uniqueid']]['musiconholdstartAt'])){utils['debug'](util[_0x1c6a('0x3')](_0x1c6a('0x66'),_0x5643fe[_0x1c6a('0xf')]),_0x5643fe);queues[_0x5643fe[_0x1c6a('0xf')]][_0x1c6a('0x57')]+=utils[_0x1c6a('0x34')](utils[_0x1c6a('0x15')](),queues[_0x5643fe[_0x1c6a('0xf')]]['musiconholdstartAt']);utils[_0x1c6a('0x2')](util[_0x1c6a('0x3')](_0x1c6a('0x67'),_0x5643fe[_0x1c6a('0xf')],queues[_0x5643fe[_0x1c6a('0xf')]][_0x1c6a('0x1e')],queues[_0x5643fe[_0x1c6a('0xf')]][_0x1c6a('0x57')]));delete queues[_0x5643fe[_0x1c6a('0xf')]][_0x1c6a('0x63')];}}}catch(_0x2bcf94){utils[_0x1c6a('0x20')](util[_0x1c6a('0x3')](_0x1c6a('0x66'),_0x5643fe[_0x1c6a('0xf')]),_0x2bcf94);}};
\ No newline at end of file
index 3f8ffd0..5cd3e38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6cb=['channel','error','newstate','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','isNil','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','[%s][recordings][newstate]','varset','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','.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','clone','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','lodash','util','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','then','request','CreateVoiceRecording','newchannel','debug','format','linkedid','info','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xb6cb,0x6f));var _0xbb6c=function(_0x3f1861,_0x7b4285){_0x3f1861=_0x3f1861-0x0;var _0x7ca70a=_0xb6cb[_0x3f1861];return _0x7ca70a;};'use strict';var _=require(_0xbb6c('0x0'));var util=require(_0xbb6c('0x1'));var utils=require('./utils');var recordings={};function writeDB(_0x4a585e){utils['info'](util['format'](_0xbb6c('0x2'),_0x4a585e[_0xbb6c('0x3')]));if(_0x4a585e[_0xbb6c('0x4')]){utils[_0xbb6c('0x5')](_0x4a585e[_0xbb6c('0x4')])[_0xbb6c('0x6')](function(_0x2e6ce3){if(_0x2e6ce3){_0x4a585e['membername']=_0x2e6ce3['name'];_0x4a585e['UserId']=_0x2e6ce3['id'];}utils[_0xbb6c('0x7')](_0xbb6c('0x8'),_0x4a585e);});}else{utils['request']('CreateVoiceRecording',_0x4a585e);}}exports[_0xbb6c('0x9')]=function(_0x323654){try{utils[_0xbb6c('0xa')](util[_0xbb6c('0xb')]('[%s][recordings][newchannel]',_0x323654[_0xbb6c('0x3')]),_0x323654);if(_0x323654[_0xbb6c('0x3')]==_0x323654[_0xbb6c('0xc')]){utils[_0xbb6c('0xd')](util[_0xbb6c('0xb')](_0xbb6c('0xe'),_0x323654[_0xbb6c('0x3')],_0x323654[_0xbb6c('0xf')],_0x323654['exten']));recordings[_0x323654[_0xbb6c('0x3')]]={'uniqueid':_0x323654[_0xbb6c('0x3')],'accountcode':_0x323654[_0xbb6c('0x4')],'exten':_0x323654[_0xbb6c('0x10')],'context':_0x323654['context'],'channel':_0x323654[_0xbb6c('0x11')],'monitors':[]};}}catch(_0xa2c9e9){utils[_0xbb6c('0x12')](util['format']('[%s][recordings][newchannel]',_0x323654[_0xbb6c('0x3')]),_0xa2c9e9);}};exports[_0xbb6c('0x13')]=function(_0x1c701d){try{utils[_0xbb6c('0xa')](util['format']('[%s][recordings][newstate]',_0x1c701d[_0xbb6c('0x3')]),_0x1c701d);if(!_['isNil'](recordings[_0x1c701d['uniqueid']])&&_0x1c701d[_0xbb6c('0x14')]==0x6){utils[_0xbb6c('0xd')](util[_0xbb6c('0xb')](_0xbb6c('0x15'),_0x1c701d[_0xbb6c('0x3')],_0x1c701d[_0xbb6c('0xf')],_0x1c701d[_0xbb6c('0x11')]));}else if(!_[_0xbb6c('0x16')](recordings[_0x1c701d[_0xbb6c('0xc')]])&&_0x1c701d['channelstate']==0x6&&_0x1c701d[_0xbb6c('0xf')]!=_0xbb6c('0x17')){utils[_0xbb6c('0xd')](util[_0xbb6c('0xb')](_0xbb6c('0x18'),_0x1c701d[_0xbb6c('0x3')],_0x1c701d[_0xbb6c('0xc')],_0x1c701d['context'],_0x1c701d[_0xbb6c('0x11')]));recordings[_0x1c701d['linkedid']]['accountcode']=_0x1c701d[_0xbb6c('0x4')];}}catch(_0x335b90){utils['error'](util['format'](_0xbb6c('0x19'),_0x1c701d[_0xbb6c('0x3')]),_0x335b90);}};exports[_0xbb6c('0x1a')]=function(_0x44d54a){try{if(!_[_0xbb6c('0x16')](_0x44d54a['variable'])&&!_['isNil'](_0x44d54a['variable'][_0xbb6c('0x1b')])){utils[_0xbb6c('0xa')](util['format'](_0xbb6c('0x1c'),_0x44d54a[_0xbb6c('0x3')]),_0x44d54a);utils['info'](util[_0xbb6c('0xb')](_0xbb6c('0x1d'),_0x44d54a[_0xbb6c('0x3')],_0x44d54a['variable'],_0x44d54a[_0xbb6c('0x1e')]));if(_['endsWith'](_0x44d54a['value'],_0xbb6c('0x1f'))){_0x44d54a['value']=_0x44d54a[_0xbb6c('0x1e')][_0xbb6c('0x20')]('.wav49',_0xbb6c('0x21'));}if(recordings[_0x44d54a['linkedid']]){var _0x4ee5fb=_[_0xbb6c('0x22')](recordings[_0x44d54a[_0xbb6c('0xc')]]['monitors'],{'value':_0x44d54a['value']});if(_[_0xbb6c('0x16')](_0x4ee5fb)){recordings[_0x44d54a[_0xbb6c('0xc')]][_0xbb6c('0x23')][_0xbb6c('0x24')]({'value':_0x44d54a[_0xbb6c('0x1e')]});}}}}catch(_0x22acb8){utils[_0xbb6c('0x12')](util['format']('[%s][recordings][varset]',_0x44d54a[_0xbb6c('0x3')]),_0x22acb8);}};exports['hangup']=function(_0x100d28){try{if(!_[_0xbb6c('0x16')](recordings[_0x100d28['uniqueid']])){utils[_0xbb6c('0xa')](util['format'](_0xbb6c('0x25'),_0x100d28[_0xbb6c('0x3')]),_0x100d28);utils[_0xbb6c('0xd')](util['format'](_0xbb6c('0x26'),_0x100d28[_0xbb6c('0x3')],_0x100d28[_0xbb6c('0x27')],_0x100d28[_0xbb6c('0x28')],_0x100d28[_0xbb6c('0x29')]));recordings[_0x100d28[_0xbb6c('0x3')]][_0xbb6c('0x27')]=_0x100d28['calleridnum'];recordings[_0x100d28['uniqueid']][_0xbb6c('0x28')]=_0x100d28[_0xbb6c('0x28')];recordings[_0x100d28[_0xbb6c('0x3')]][_0xbb6c('0x2a')]=_0x100d28[_0xbb6c('0x2a')];recordings[_0x100d28[_0xbb6c('0x3')]]['connectedlinename']=_0x100d28[_0xbb6c('0x2b')];if(recordings[_0x100d28[_0xbb6c('0x3')]][_0xbb6c('0x2c')]==_0xbb6c('0x2d')&&recordings[_0x100d28[_0xbb6c('0x3')]]['accountcode']){recordings[_0x100d28[_0xbb6c('0x3')]][_0xbb6c('0x2a')]=recordings[_0x100d28['uniqueid']][_0xbb6c('0x4')];recordings[_0x100d28[_0xbb6c('0x3')]][_0xbb6c('0x2b')]='';}recordings[_0x100d28[_0xbb6c('0x3')]][_0xbb6c('0x23')][_0xbb6c('0x2e')](function(_0x5476fc){var _0x183b71=_[_0xbb6c('0x2f')](recordings[_0x100d28['uniqueid']]);_0x183b71[_0xbb6c('0x1e')]=_0x5476fc[_0xbb6c('0x1e')];writeDB(_0x183b71);});delete recordings[_0x100d28[_0xbb6c('0x3')]];}}catch(_0x2ef2f8){utils[_0xbb6c('0x12')](util[_0xbb6c('0xb')]('[%s][recordings][hangup]',_0x100d28[_0xbb6c('0x3')]),_0x2ef2f8);}};exports[_0xbb6c('0x30')]=function(_0x5e81dd){try{if(!_[_0xbb6c('0x16')](recordings[_0x5e81dd[_0xbb6c('0x3')]])){utils[_0xbb6c('0xa')](util[_0xbb6c('0xb')](_0xbb6c('0x31'),_0x5e81dd[_0xbb6c('0x3')]),_0x5e81dd);utils[_0xbb6c('0xd')](util['format'](_0xbb6c('0x32'),_0x5e81dd['uniqueid'],_0x5e81dd[_0xbb6c('0x33')],_0x5e81dd[_0xbb6c('0x34')]));if(_0x5e81dd[_0xbb6c('0x33')][_0xbb6c('0x35')]()==_0xbb6c('0x36')&&_[_0xbb6c('0x37')](_0x5e81dd[_0xbb6c('0x34')]['toLowerCase'](),_0xbb6c('0x38'))){var _0x3cf62f=_0x5e81dd[_0xbb6c('0x34')][_0xbb6c('0x39')]('=');var _0x5050c9=_0x3cf62f[0x0][_0xbb6c('0x3a')](_0x3cf62f[0x0][_0xbb6c('0x3b')]('(')+0x1,_0x3cf62f[0x0][_0xbb6c('0x3b')](')'));var _0x192c2b=_0x3cf62f[0x1];recordings[_0x5e81dd['uniqueid']][_0x5050c9]=_0x192c2b;}}}catch(_0x280b8e){utils[_0xbb6c('0x12')](util[_0xbb6c('0xb')](_0xbb6c('0x31'),_0x5e81dd['uniqueid']),_0x280b8e);}};exports[_0xbb6c('0x3c')]=function(_0x42443b){try{if(!_[_0xbb6c('0x16')](recordings[_0x42443b['uniqueid']])){utils['debug'](util[_0xbb6c('0xb')](_0xbb6c('0x3d'),_0x42443b[_0xbb6c('0x3')]),_0x42443b);utils[_0xbb6c('0xd')](util[_0xbb6c('0xb')](_0xbb6c('0x3e'),_0x42443b[_0xbb6c('0x3')],_0x42443b[_0xbb6c('0x3f')]));recordings[_0x42443b[_0xbb6c('0x3')]]['queue']=_0x42443b[_0xbb6c('0x3f')];}}catch(_0x534883){utils[_0xbb6c('0x12')](util['format'](_0xbb6c('0x3d'),_0x42443b[_0xbb6c('0x3')]),_0x534883);}};
\ No newline at end of file
+var _0x4eaa=['[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','appdata','application','toLowerCase','startsWith','cdr','split','lastIndexOf','queuecallerjoin','queue','[%s][recordings][queuecallerjoin]','lodash','util','./utils','info','format','[%s][recordings][writeDB]','uniqueid','getUserByInternal','accountcode','then','membername','name','UserId','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','linkedid','context','channel','error','newstate','[%s][recordings][newstate]','isNil','[%s][recordings][newstate]\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','[%s][recordings][varset]','value','.wav49','.WAV','find','monitors','hangup','[%s][recordings][hangup]','calleridnum','cause-txt','calleridname','connectedlinenum','connectedlinename','type','outbound','forEach','newexten'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0x4eaa,0x168));var _0xa4ea=function(_0x562c4f,_0x41927a){_0x562c4f=_0x562c4f-0x0;var _0x32c946=_0x4eaa[_0x562c4f];return _0x32c946;};'use strict';var _=require(_0xa4ea('0x0'));var util=require(_0xa4ea('0x1'));var utils=require(_0xa4ea('0x2'));var recordings={};function writeDB(_0x4ef253){utils[_0xa4ea('0x3')](util[_0xa4ea('0x4')](_0xa4ea('0x5'),_0x4ef253[_0xa4ea('0x6')]));if(_0x4ef253['accountcode']){utils[_0xa4ea('0x7')](_0x4ef253[_0xa4ea('0x8')])[_0xa4ea('0x9')](function(_0x529065){if(_0x529065){_0x4ef253[_0xa4ea('0xa')]=_0x529065[_0xa4ea('0xb')];_0x4ef253[_0xa4ea('0xc')]=_0x529065['id'];}utils[_0xa4ea('0xd')](_0xa4ea('0xe'),_0x4ef253);});}else{utils[_0xa4ea('0xd')](_0xa4ea('0xe'),_0x4ef253);}}exports[_0xa4ea('0xf')]=function(_0x23277b){try{utils[_0xa4ea('0x10')](util[_0xa4ea('0x4')](_0xa4ea('0x11'),_0x23277b[_0xa4ea('0x6')]),_0x23277b);if(_0x23277b[_0xa4ea('0x6')]==_0x23277b[_0xa4ea('0x12')]){utils[_0xa4ea('0x3')](util[_0xa4ea('0x4')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x23277b[_0xa4ea('0x6')],_0x23277b[_0xa4ea('0x13')],_0x23277b['exten']));recordings[_0x23277b[_0xa4ea('0x6')]]={'uniqueid':_0x23277b[_0xa4ea('0x6')],'accountcode':_0x23277b[_0xa4ea('0x8')],'exten':_0x23277b['exten'],'context':_0x23277b['context'],'channel':_0x23277b[_0xa4ea('0x14')],'monitors':[]};}}catch(_0x508366){utils[_0xa4ea('0x15')](util[_0xa4ea('0x4')]('[%s][recordings][newchannel]',_0x23277b[_0xa4ea('0x6')]),_0x508366);}};exports[_0xa4ea('0x16')]=function(_0x2b6702){try{utils[_0xa4ea('0x10')](util[_0xa4ea('0x4')](_0xa4ea('0x17'),_0x2b6702[_0xa4ea('0x6')]),_0x2b6702);if(!_[_0xa4ea('0x18')](recordings[_0x2b6702[_0xa4ea('0x6')]])&&_0x2b6702['channelstate']==0x6){utils[_0xa4ea('0x3')](util[_0xa4ea('0x4')](_0xa4ea('0x19'),_0x2b6702[_0xa4ea('0x6')],_0x2b6702[_0xa4ea('0x13')],_0x2b6702['channel']));}else if(!_[_0xa4ea('0x18')](recordings[_0x2b6702['linkedid']])&&_0x2b6702['channelstate']==0x6&&_0x2b6702[_0xa4ea('0x13')]!='transfer'){utils['info'](util['format']('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x2b6702[_0xa4ea('0x6')],_0x2b6702['linkedid'],_0x2b6702[_0xa4ea('0x13')],_0x2b6702['channel']));recordings[_0x2b6702[_0xa4ea('0x12')]]['accountcode']=_0x2b6702[_0xa4ea('0x8')];}}catch(_0x5d15b0){utils[_0xa4ea('0x15')](util[_0xa4ea('0x4')](_0xa4ea('0x17'),_0x2b6702[_0xa4ea('0x6')]),_0x5d15b0);}};exports[_0xa4ea('0x1a')]=function(_0x5196a4){try{if(!_[_0xa4ea('0x18')](_0x5196a4[_0xa4ea('0x1b')])&&!_['isNil'](_0x5196a4['variable'][_0xa4ea('0x1c')])){utils[_0xa4ea('0x10')](util[_0xa4ea('0x4')](_0xa4ea('0x1d'),_0x5196a4[_0xa4ea('0x6')]),_0x5196a4);utils['info'](util['format']('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x5196a4[_0xa4ea('0x6')],_0x5196a4['variable'],_0x5196a4[_0xa4ea('0x1e')]));if(_['endsWith'](_0x5196a4[_0xa4ea('0x1e')],_0xa4ea('0x1f'))){_0x5196a4[_0xa4ea('0x1e')]=_0x5196a4['value']['replace'](_0xa4ea('0x1f'),_0xa4ea('0x20'));}if(recordings[_0x5196a4[_0xa4ea('0x12')]]){var _0x46425e=_[_0xa4ea('0x21')](recordings[_0x5196a4['linkedid']]['monitors'],{'value':_0x5196a4[_0xa4ea('0x1e')]});if(_[_0xa4ea('0x18')](_0x46425e)){recordings[_0x5196a4['linkedid']][_0xa4ea('0x22')]['push']({'value':_0x5196a4['value']});}}}}catch(_0x1a6f84){utils[_0xa4ea('0x15')](util[_0xa4ea('0x4')](_0xa4ea('0x1d'),_0x5196a4[_0xa4ea('0x6')]),_0x1a6f84);}};exports[_0xa4ea('0x23')]=function(_0x2386b8){try{if(!_[_0xa4ea('0x18')](recordings[_0x2386b8[_0xa4ea('0x6')]])){utils[_0xa4ea('0x10')](util[_0xa4ea('0x4')](_0xa4ea('0x24'),_0x2386b8[_0xa4ea('0x6')]),_0x2386b8);utils[_0xa4ea('0x3')](util['format']('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x2386b8[_0xa4ea('0x6')],_0x2386b8[_0xa4ea('0x25')],_0x2386b8['calleridname'],_0x2386b8[_0xa4ea('0x26')]));recordings[_0x2386b8[_0xa4ea('0x6')]][_0xa4ea('0x25')]=_0x2386b8[_0xa4ea('0x25')];recordings[_0x2386b8[_0xa4ea('0x6')]][_0xa4ea('0x27')]=_0x2386b8['calleridname'];recordings[_0x2386b8[_0xa4ea('0x6')]][_0xa4ea('0x28')]=_0x2386b8['connectedlinenum'];recordings[_0x2386b8[_0xa4ea('0x6')]][_0xa4ea('0x29')]=_0x2386b8[_0xa4ea('0x29')];if(recordings[_0x2386b8[_0xa4ea('0x6')]][_0xa4ea('0x2a')]==_0xa4ea('0x2b')&&recordings[_0x2386b8[_0xa4ea('0x6')]][_0xa4ea('0x8')]){recordings[_0x2386b8[_0xa4ea('0x6')]][_0xa4ea('0x28')]=recordings[_0x2386b8[_0xa4ea('0x6')]]['accountcode'];recordings[_0x2386b8[_0xa4ea('0x6')]][_0xa4ea('0x29')]='';}recordings[_0x2386b8[_0xa4ea('0x6')]][_0xa4ea('0x22')][_0xa4ea('0x2c')](function(_0x18ea1a){var _0x3d26f2=_['clone'](recordings[_0x2386b8[_0xa4ea('0x6')]]);_0x3d26f2[_0xa4ea('0x1e')]=_0x18ea1a[_0xa4ea('0x1e')];writeDB(_0x3d26f2);});delete recordings[_0x2386b8[_0xa4ea('0x6')]];}}catch(_0x93540c){utils[_0xa4ea('0x15')](util[_0xa4ea('0x4')]('[%s][recordings][hangup]',_0x2386b8['uniqueid']),_0x93540c);}};exports[_0xa4ea('0x2d')]=function(_0x12c226){try{if(!_[_0xa4ea('0x18')](recordings[_0x12c226[_0xa4ea('0x6')]])){utils[_0xa4ea('0x10')](util[_0xa4ea('0x4')](_0xa4ea('0x2e'),_0x12c226[_0xa4ea('0x6')]),_0x12c226);utils['info'](util[_0xa4ea('0x4')](_0xa4ea('0x2f'),_0x12c226[_0xa4ea('0x6')],_0x12c226['application'],_0x12c226[_0xa4ea('0x30')]));if(_0x12c226[_0xa4ea('0x31')][_0xa4ea('0x32')]()=='set'&&_[_0xa4ea('0x33')](_0x12c226[_0xa4ea('0x30')][_0xa4ea('0x32')](),_0xa4ea('0x34'))){var _0x4b49ed=_0x12c226['appdata'][_0xa4ea('0x35')]('=');var _0x30c359=_0x4b49ed[0x0]['substring'](_0x4b49ed[0x0]['lastIndexOf']('(')+0x1,_0x4b49ed[0x0][_0xa4ea('0x36')](')'));var _0x13cd20=_0x4b49ed[0x1];recordings[_0x12c226[_0xa4ea('0x6')]][_0x30c359]=_0x13cd20;}}}catch(_0x590ccf){utils[_0xa4ea('0x15')](util[_0xa4ea('0x4')](_0xa4ea('0x2e'),_0x12c226[_0xa4ea('0x6')]),_0x590ccf);}};exports[_0xa4ea('0x37')]=function(_0x1806de){try{if(!_['isNil'](recordings[_0x1806de[_0xa4ea('0x6')]])){utils[_0xa4ea('0x10')](util[_0xa4ea('0x4')]('[%s][recordings][queuecallerjoin]',_0x1806de[_0xa4ea('0x6')]),_0x1806de);utils[_0xa4ea('0x3')](util[_0xa4ea('0x4')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x1806de[_0xa4ea('0x6')],_0x1806de['queue']));recordings[_0x1806de[_0xa4ea('0x6')]]['queue']=_0x1806de[_0xa4ea('0x38')];}}catch(_0x560b87){utils['error'](util[_0xa4ea('0x4')](_0xa4ea('0x39'),_0x1806de[_0xa4ea('0x6')]),_0x560b87);}};
\ No newline at end of file
index efd7cb0..458a83c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1ee=['error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransfereruniqueid','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','assign','origtransfererchannel','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetcontext','transfertargetexten','transfertargetlinkedid','lodash','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','uniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid'];(function(_0x3b0a6c,_0x2fee1e){var _0x10a78f=function(_0x2d9172){while(--_0x2d9172){_0x3b0a6c['push'](_0x3b0a6c['shift']());}};_0x10a78f(++_0x2fee1e);}(_0xb1ee,0x1d9));var _0xeb1e=function(_0x5c6244,_0x112ab8){_0x5c6244=_0x5c6244-0x0;var _0x5800ce=_0xb1ee[_0x5c6244];return _0x5800ce;};'use strict';var _=require(_0xeb1e('0x0'));var util=require(_0xeb1e('0x1'));var utils=require(_0xeb1e('0x2'));function writeDB(_0x3ccf3f){utils[_0xeb1e('0x3')](util[_0xeb1e('0x4')](_0xeb1e('0x5'),_0x3ccf3f[_0xeb1e('0x6')]===_0xeb1e('0x7')?_0x3ccf3f['origtransfereruniqueid']:_0x3ccf3f[_0xeb1e('0x8')],_0x3ccf3f[_0xeb1e('0x6')]));utils[_0xeb1e('0x9')](_0xeb1e('0xa'),_0x3ccf3f);}exports[_0xeb1e('0xb')]={};exports[_0xeb1e('0xc')]=function(_0x2959b4){try{utils[_0xeb1e('0xd')](util[_0xeb1e('0x4')](_0xeb1e('0xe'),_0x2959b4[_0xeb1e('0x8')]),_0x2959b4);utils['info'](util[_0xeb1e('0x4')](_0xeb1e('0xf'),_0x2959b4[_0xeb1e('0x8')],_0x2959b4[_0xeb1e('0x10')],_0x2959b4[_0xeb1e('0x11')],_0x2959b4[_0xeb1e('0x12')],_0x2959b4[_0xeb1e('0x13')]));_0x2959b4[_0xeb1e('0x6')]=_0xeb1e('0x14');exports[_0xeb1e('0xb')][_0x2959b4[_0xeb1e('0x15')]]=_0x2959b4;writeDB(_0x2959b4);}catch(_0x1b4ffb){utils[_0xeb1e('0x16')](util['format']('[%s][transfers][blindtransfer]',_0x2959b4[_0xeb1e('0x8')]),_0x1b4ffb);}};exports[_0xeb1e('0x17')]=function(_0x330ae2){try{utils['debug'](util[_0xeb1e('0x4')](_0xeb1e('0x18'),_0x330ae2[_0xeb1e('0x19')]),_0x330ae2);utils[_0xeb1e('0x3')](util[_0xeb1e('0x4')](_0xeb1e('0x1a'),_0x330ae2['origtransfereruniqueid'],_0x330ae2[_0xeb1e('0x1b')],_0x330ae2[_0xeb1e('0x1c')],_0x330ae2[_0xeb1e('0x1d')],_0x330ae2['transfertargetcalleridname']));_0x330ae2=_[_0xeb1e('0x1e')](_0x330ae2,{'transfererchannel':_0x330ae2[_0xeb1e('0x1f')],'transferercalleridnum':_0x330ae2['origtransferercalleridnum'],'transferercalleridname':_0x330ae2[_0xeb1e('0x1c')],'transfererconnectedlinenum':_0x330ae2['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x330ae2[_0xeb1e('0x20')],'transfereraccountcode':_0x330ae2['origtransfereraccountcode'],'transferercontext':_0x330ae2[_0xeb1e('0x21')],'transfererexten':_0x330ae2[_0xeb1e('0x22')],'transfererlinkedid':_0x330ae2[_0xeb1e('0x23')],'context':_0x330ae2[_0xeb1e('0x24')],'extension':_0x330ae2[_0xeb1e('0x25')],'type':_0xeb1e('0x7')});if(_[_0xeb1e('0x26')](_0x330ae2[_0xeb1e('0x27')])){_0x330ae2=_[_0xeb1e('0x1e')](_0x330ae2,{'transfereechannel':_0x330ae2['transfertargetchannel'],'transfereecalleridnum':_0x330ae2[_0xeb1e('0x1d')],'transfereecalleridname':_0x330ae2[_0xeb1e('0x28')],'transfereeconnectedlinenum':_0x330ae2[_0xeb1e('0x29')],'transfereeconnectedlinename':_0x330ae2['transfertargetconnectedlinename'],'transfereeaccountcode':_0x330ae2['transfertargetaccountcode'],'transfereecontext':_0x330ae2[_0xeb1e('0x2a')],'transfereeexten':_0x330ae2[_0xeb1e('0x2b')],'transfereelinkedid':_0x330ae2[_0xeb1e('0x2c')]});}writeDB(_0x330ae2);}catch(_0x30ddd5){utils['error'](util['format'](_0xeb1e('0x18'),_0x330ae2['origtransfereruniqueid']),_0x30ddd5);}};
\ No newline at end of file
+var _0x9556=['request','CreateVoiceTransferReport','blinds','blindtransfer','[%s][transfers][blindtransfer]','uniqueid','transferercalleridname','blind','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransfererexten','origtransfererlinkedid','origtransferercontext','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','error','lodash','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','attended','origtransfereruniqueid','type'];(function(_0x10ec0f,_0x5ece09){var _0x1587ee=function(_0x54ac17){while(--_0x54ac17){_0x10ec0f['push'](_0x10ec0f['shift']());}};_0x1587ee(++_0x5ece09);}(_0x9556,0x8f));var _0x6955=function(_0x130b55,_0x2c4300){_0x130b55=_0x130b55-0x0;var _0x35d309=_0x9556[_0x130b55];return _0x35d309;};'use strict';var _=require(_0x6955('0x0'));var util=require(_0x6955('0x1'));var utils=require(_0x6955('0x2'));function writeDB(_0x525c65){utils[_0x6955('0x3')](util[_0x6955('0x4')](_0x6955('0x5'),_0x525c65['type']===_0x6955('0x6')?_0x525c65[_0x6955('0x7')]:_0x525c65['uniqueid'],_0x525c65[_0x6955('0x8')]));utils[_0x6955('0x9')](_0x6955('0xa'),_0x525c65);}exports[_0x6955('0xb')]={};exports[_0x6955('0xc')]=function(_0x1f76d3){try{utils['debug'](util[_0x6955('0x4')](_0x6955('0xd'),_0x1f76d3[_0x6955('0xe')]),_0x1f76d3);utils[_0x6955('0x3')](util[_0x6955('0x4')]('[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x1f76d3[_0x6955('0xe')],_0x1f76d3['transferercalleridnum'],_0x1f76d3[_0x6955('0xf')],_0x1f76d3['transfereecalleridnum'],_0x1f76d3['transfereecalleridname']));_0x1f76d3[_0x6955('0x8')]=_0x6955('0x10');exports[_0x6955('0xb')][_0x1f76d3['transfereruniqueid']]=_0x1f76d3;writeDB(_0x1f76d3);}catch(_0xd1a098){utils['error'](util['format'](_0x6955('0xd'),_0x1f76d3[_0x6955('0xe')]),_0xd1a098);}};exports['attendedtransfer']=function(_0x521cee){try{utils['debug'](util['format'](_0x6955('0x11'),_0x521cee[_0x6955('0x7')]),_0x521cee);utils[_0x6955('0x3')](util[_0x6955('0x4')](_0x6955('0x12'),_0x521cee['origtransfereruniqueid'],_0x521cee[_0x6955('0x13')],_0x521cee[_0x6955('0x14')],_0x521cee[_0x6955('0x15')],_0x521cee[_0x6955('0x16')]));_0x521cee=_[_0x6955('0x17')](_0x521cee,{'transfererchannel':_0x521cee['origtransfererchannel'],'transferercalleridnum':_0x521cee[_0x6955('0x13')],'transferercalleridname':_0x521cee[_0x6955('0x14')],'transfererconnectedlinenum':_0x521cee[_0x6955('0x18')],'transfererconnectedlinename':_0x521cee[_0x6955('0x19')],'transfereraccountcode':_0x521cee[_0x6955('0x1a')],'transferercontext':_0x521cee['secondtransferercontext'],'transfererexten':_0x521cee[_0x6955('0x1b')],'transfererlinkedid':_0x521cee[_0x6955('0x1c')],'context':_0x521cee[_0x6955('0x1d')],'extension':_0x521cee['origtransfererexten'],'type':_0x6955('0x6')});if(_['isNil'](_0x521cee[_0x6955('0x1e')])){_0x521cee=_[_0x6955('0x17')](_0x521cee,{'transfereechannel':_0x521cee[_0x6955('0x1f')],'transfereecalleridnum':_0x521cee[_0x6955('0x15')],'transfereecalleridname':_0x521cee[_0x6955('0x16')],'transfereeconnectedlinenum':_0x521cee[_0x6955('0x20')],'transfereeconnectedlinename':_0x521cee[_0x6955('0x21')],'transfereeaccountcode':_0x521cee[_0x6955('0x22')],'transfereecontext':_0x521cee[_0x6955('0x23')],'transfereeexten':_0x521cee[_0x6955('0x24')],'transfereelinkedid':_0x521cee['transfertargetlinkedid']});}writeDB(_0x521cee);}catch(_0x4f1fc8){utils[_0x6955('0x25')](util[_0x6955('0x4')]('[%s][transfers][attendedtransfer]',_0x521cee['origtransfereruniqueid']),_0x4f1fc8);}};
\ No newline at end of file
index 7a3f10d..8c9caef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea1=['subtractTime','seconds','sumTime','isAfter','isBefore','jayson/promise','moment','util','client','http','../../config/logger','xdr','info','inspect','debug','request','then','[utils][request]\x20name:%s','error','GetUser','internal','name','interface','stringify','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','catch','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','GetVoiceQueue','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','length','[utils][getVoiceQueueByName]','addTime','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x376550,_0x4e935b){var _0x5530df=function(_0x320e15){while(--_0x320e15){_0x376550['push'](_0x376550['shift']());}};_0x5530df(++_0x4e935b);}(_0x4ea1,0x1ac));var _0x14ea=function(_0x2ded08,_0x1046cd){_0x2ded08=_0x2ded08-0x0;var _0x281ce1=_0x4ea1[_0x2ded08];return _0x281ce1;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x14ea('0x0'));var moment=require(_0x14ea('0x1'));var util=require(_0x14ea('0x2'));var client=jayson[_0x14ea('0x3')][_0x14ea('0x4')]({'port':0x2329});var logger=require(_0x14ea('0x5'))(_0x14ea('0x6'));exports[_0x14ea('0x7')]=function(_0x220b1e,_0x115dd7){logger[_0x14ea('0x7')](_0x220b1e,_0x115dd7?util[_0x14ea('0x8')](_0x115dd7,{'showHidden':![],'depth':null}):'');};exports[_0x14ea('0x9')]=function(_0x530440,_0x19c981){logger[_0x14ea('0x9')](_0x530440,_0x19c981?util[_0x14ea('0x8')](_0x19c981,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x1929b7,_0x2da441){logger['error'](_0x1929b7,_0x2da441?util[_0x14ea('0x8')](_0x2da441,{'showHidden':![],'depth':null}):'');};exports[_0x14ea('0xa')]=function(_0x79879,_0x5a2fae){return client[_0x14ea('0xa')](_0x79879,{'body':_0x5a2fae})[_0x14ea('0xb')](function(_0x2dbec2){logger['debug'](_0x14ea('0xc'),_0x79879,_0x2dbec2?util['inspect'](_0x2dbec2,{'showHidden':![],'depth':null}):'');})['catch'](function(_0xb4b224){logger[_0x14ea('0xd')](_0x14ea('0xc'),_0x79879,_0xb4b224?util[_0x14ea('0x8')](_0xb4b224,{'showHidden':![],'depth':null}):'');});};function getUser(_0x8a6903){return client[_0x14ea('0xa')](_0x14ea('0xe'),{'options':{'raw':!![],'attributes':['id',_0x14ea('0xf'),_0x14ea('0x10'),_0x14ea('0x11')],'where':_0x8a6903,'limit':0x1}})['then'](function(_0x582465){logger[_0x14ea('0x9')]('[utils][getUser]\x20where:%s',JSON[_0x14ea('0x12')](_0x8a6903),_0x582465?util['inspect'](_0x582465,{'showHidden':![],'depth':null}):'');return _0x582465[_0x14ea('0x13')]['length']?_0x582465[_0x14ea('0x13')][0x0]:null;});}exports[_0x14ea('0x14')]=function(_0x254cf6){return new BPromise(function(_0xbe654e,_0x197969){if(_0x254cf6){return getUser({'internal':_0x254cf6})[_0x14ea('0xb')](function(_0x3b1d6c){logger['info'](_0x14ea('0x15'),_0x254cf6,_0x3b1d6c?_0x14ea('0x16'):_0x14ea('0x17'));return _0xbe654e(_0x3b1d6c);})['catch'](function(_0x30e0a7){logger[_0x14ea('0xd')](_0x14ea('0x18'),_0x30e0a7?util[_0x14ea('0x8')](_0x30e0a7,{'showHidden':![],'depth':null}):'');return _0xbe654e(null);});}return _0xbe654e(null);});};exports[_0x14ea('0x19')]=function(_0x1f2bd0){return new BPromise(function(_0x8ed666,_0x437d45){if(_0x1f2bd0){return getUser({'interface':_0x1f2bd0})[_0x14ea('0xb')](function(_0x19680c){logger[_0x14ea('0x7')](_0x14ea('0x1a'),_0x1f2bd0,_0x19680c?_0x14ea('0x16'):_0x14ea('0x17'));return _0x8ed666(_0x19680c);})[_0x14ea('0x1b')](function(_0x5d7fa9){logger[_0x14ea('0xd')](_0x14ea('0x1c'),_0x5d7fa9?util[_0x14ea('0x8')](_0x5d7fa9,{'showHidden':![],'depth':null}):'');return _0x8ed666(null);});}return _0x8ed666(null);});};exports['getUserByName']=function(_0x27a8a8){return new BPromise(function(_0x34e85d,_0x43403e){if(_0x27a8a8){return getUser({'name':_0x27a8a8})[_0x14ea('0xb')](function(_0x264bdf){logger[_0x14ea('0x7')](_0x14ea('0x1d'),_0x27a8a8,_0x264bdf?_0x14ea('0x16'):'notfound');return _0x34e85d(_0x264bdf);})['catch'](function(_0x23f02f){logger[_0x14ea('0xd')](_0x14ea('0x1e'),_0x23f02f?util[_0x14ea('0x8')](_0x23f02f,{'showHidden':![],'depth':null}):'');return _0x34e85d(null);});}return _0x34e85d(null);});};exports['getVoiceQueueByName']=function(_0x83535a){return new BPromise(function(_0x2253bf,_0x804d9b){if(_0x83535a){return client[_0x14ea('0xa')](_0x14ea('0x1f'),{'options':{'raw':!![],'attributes':['id',_0x14ea('0x10'),_0x14ea('0x20'),_0x14ea('0x21'),_0x14ea('0x22')],'where':{'name':_0x83535a},'limit':0x1}})[_0x14ea('0xb')](function(_0x205436){logger[_0x14ea('0x9')](_0x14ea('0x23'),_0x83535a,_0x205436?util[_0x14ea('0x8')](_0x205436,{'showHidden':![],'depth':null}):'');logger['info'](_0x14ea('0x24'),_0x83535a,_0x205436?'found':_0x14ea('0x17'));return _0x2253bf(_0x205436[_0x14ea('0x13')][_0x14ea('0x25')]?_0x205436[_0x14ea('0x13')][0x0]:null);})[_0x14ea('0x1b')](function(_0x39e3aa){logger[_0x14ea('0xd')](_0x14ea('0x26'),_0x39e3aa?util['inspect'](_0x39e3aa,{'showHidden':![],'depth':null}):'');return _0x2253bf(null);});}return _0x2253bf(null);});};exports[_0x14ea('0x27')]=function(_0x3ff1e7,_0x5ba33d){return moment(_0x3ff1e7)['add'](_0x5ba33d,'seconds')[_0x14ea('0x28')](_0x14ea('0x29'));};exports[_0x14ea('0x2a')]=function(_0x55a864,_0xebb30f){return moment(_0x55a864)['subtract'](_0xebb30f,_0x14ea('0x2b'))[_0x14ea('0x28')](_0x14ea('0x29'));};exports['diffTime']=function(_0x579669,_0x42a71d){return moment(_0x579669)['diff'](moment(_0x42a71d),'seconds');};exports[_0x14ea('0x2c')]=function(_0x1f8fa3,_0x22eeb2){return parseInt(_0x1f8fa3,0xa)+parseInt(_0x22eeb2,0xa);};exports['now']=function(){return moment()[_0x14ea('0x28')]('YYYY-MM-DD\x20HH:mm:ss');};exports['isAfter']=function(_0x201f8f,_0x4c6cfa){if(_0x4c6cfa){return moment(_0x201f8f)[_0x14ea('0x2d')](_0x4c6cfa);}return!![];};exports[_0x14ea('0x2e')]=function(_0x3b804e,_0x47faae){if(_0x47faae){return moment(_0x3b804e)[_0x14ea('0x2e')](_0x47faae);}else if(_0x3b804e){return!![];}return![];};
\ No newline at end of file
+var _0xf7f7=['getVoiceQueueByName','GetVoiceQueue','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','add','seconds','format','subtractTime','YYYY-MM-DD\x20HH:mm:ss','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','../../config/logger','xdr','info','inspect','debug','error','request','then','catch','[utils][request]\x20name:%s','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','found','notfound','getUserByInterface','[utils][getUserByName]\x20name:%s\x20%s'];(function(_0x3bcac6,_0x529c2d){var _0x4a79f8=function(_0x14a775){while(--_0x14a775){_0x3bcac6['push'](_0x3bcac6['shift']());}};_0x4a79f8(++_0x529c2d);}(_0xf7f7,0x192));var _0x7f7f=function(_0x5d80de,_0x2cf15d){_0x5d80de=_0x5d80de-0x0;var _0x1c7556=_0xf7f7[_0x5d80de];return _0x1c7556;};'use strict';var BPromise=require(_0x7f7f('0x0'));var jayson=require(_0x7f7f('0x1'));var moment=require(_0x7f7f('0x2'));var util=require(_0x7f7f('0x3'));var client=jayson['client']['http']({'port':0x2329});var logger=require(_0x7f7f('0x4'))(_0x7f7f('0x5'));exports[_0x7f7f('0x6')]=function(_0x452c5f,_0x5d01b9){logger[_0x7f7f('0x6')](_0x452c5f,_0x5d01b9?util[_0x7f7f('0x7')](_0x5d01b9,{'showHidden':![],'depth':null}):'');};exports[_0x7f7f('0x8')]=function(_0x2ce9ad,_0x5c40ac){logger[_0x7f7f('0x8')](_0x2ce9ad,_0x5c40ac?util['inspect'](_0x5c40ac,{'showHidden':![],'depth':null}):'');};exports[_0x7f7f('0x9')]=function(_0x4d5f64,_0x4c4be0){logger['error'](_0x4d5f64,_0x4c4be0?util[_0x7f7f('0x7')](_0x4c4be0,{'showHidden':![],'depth':null}):'');};exports[_0x7f7f('0xa')]=function(_0x297ab0,_0x478b9e){return client[_0x7f7f('0xa')](_0x297ab0,{'body':_0x478b9e})[_0x7f7f('0xb')](function(_0x24e6bd){logger['debug']('[utils][request]\x20name:%s',_0x297ab0,_0x24e6bd?util['inspect'](_0x24e6bd,{'showHidden':![],'depth':null}):'');})[_0x7f7f('0xc')](function(_0x15ca14){logger[_0x7f7f('0x9')](_0x7f7f('0xd'),_0x297ab0,_0x15ca14?util['inspect'](_0x15ca14,{'showHidden':![],'depth':null}):'');});};function getUser(_0x56ec93){return client[_0x7f7f('0xa')](_0x7f7f('0xe'),{'options':{'raw':!![],'attributes':['id',_0x7f7f('0xf'),_0x7f7f('0x10'),_0x7f7f('0x11')],'where':_0x56ec93,'limit':0x1}})[_0x7f7f('0xb')](function(_0x464cc4){logger[_0x7f7f('0x8')](_0x7f7f('0x12'),JSON[_0x7f7f('0x13')](_0x56ec93),_0x464cc4?util[_0x7f7f('0x7')](_0x464cc4,{'showHidden':![],'depth':null}):'');return _0x464cc4[_0x7f7f('0x14')][_0x7f7f('0x15')]?_0x464cc4[_0x7f7f('0x14')][0x0]:null;});}exports[_0x7f7f('0x16')]=function(_0x1aadaa){return new BPromise(function(_0x410957,_0x349136){if(_0x1aadaa){return getUser({'internal':_0x1aadaa})[_0x7f7f('0xb')](function(_0x28c6b0){logger[_0x7f7f('0x6')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x1aadaa,_0x28c6b0?_0x7f7f('0x17'):_0x7f7f('0x18'));return _0x410957(_0x28c6b0);})[_0x7f7f('0xc')](function(_0x5a8f11){logger[_0x7f7f('0x9')]('[utils][getUserByInternal]',_0x5a8f11?util[_0x7f7f('0x7')](_0x5a8f11,{'showHidden':![],'depth':null}):'');return _0x410957(null);});}return _0x410957(null);});};exports[_0x7f7f('0x19')]=function(_0x45c12b){return new BPromise(function(_0x220780,_0x4e64b6){if(_0x45c12b){return getUser({'interface':_0x45c12b})[_0x7f7f('0xb')](function(_0x9a51d7){logger[_0x7f7f('0x6')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0x45c12b,_0x9a51d7?_0x7f7f('0x17'):'notfound');return _0x220780(_0x9a51d7);})['catch'](function(_0x597be6){logger[_0x7f7f('0x9')]('[utils][getUserByInterface]',_0x597be6?util[_0x7f7f('0x7')](_0x597be6,{'showHidden':![],'depth':null}):'');return _0x220780(null);});}return _0x220780(null);});};exports['getUserByName']=function(_0x1ff21d){return new BPromise(function(_0x158df8,_0x57f72a){if(_0x1ff21d){return getUser({'name':_0x1ff21d})[_0x7f7f('0xb')](function(_0x1716f0){logger[_0x7f7f('0x6')](_0x7f7f('0x1a'),_0x1ff21d,_0x1716f0?_0x7f7f('0x17'):_0x7f7f('0x18'));return _0x158df8(_0x1716f0);})[_0x7f7f('0xc')](function(_0x3ec563){logger[_0x7f7f('0x9')]('[utils][getUserByName]',_0x3ec563?util['inspect'](_0x3ec563,{'showHidden':![],'depth':null}):'');return _0x158df8(null);});}return _0x158df8(null);});};exports[_0x7f7f('0x1b')]=function(_0x2a38cd){return new BPromise(function(_0x347935,_0x4a028e){if(_0x2a38cd){return client[_0x7f7f('0xa')](_0x7f7f('0x1c'),{'options':{'raw':!![],'attributes':['id',_0x7f7f('0x10'),'type','acw','acwTimeout'],'where':{'name':_0x2a38cd},'limit':0x1}})[_0x7f7f('0xb')](function(_0x45ca53){logger[_0x7f7f('0x8')](_0x7f7f('0x1d'),_0x2a38cd,_0x45ca53?util[_0x7f7f('0x7')](_0x45ca53,{'showHidden':![],'depth':null}):'');logger[_0x7f7f('0x6')](_0x7f7f('0x1e'),_0x2a38cd,_0x45ca53?_0x7f7f('0x17'):_0x7f7f('0x18'));return _0x347935(_0x45ca53[_0x7f7f('0x14')][_0x7f7f('0x15')]?_0x45ca53[_0x7f7f('0x14')][0x0]:null);})[_0x7f7f('0xc')](function(_0x359c78){logger[_0x7f7f('0x9')]('[utils][getVoiceQueueByName]',_0x359c78?util[_0x7f7f('0x7')](_0x359c78,{'showHidden':![],'depth':null}):'');return _0x347935(null);});}return _0x347935(null);});};exports['addTime']=function(_0x435aa5,_0x458867){return moment(_0x435aa5)[_0x7f7f('0x1f')](_0x458867,_0x7f7f('0x20'))[_0x7f7f('0x21')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x7f7f('0x22')]=function(_0x50c4ec,_0x461585){return moment(_0x50c4ec)['subtract'](_0x461585,_0x7f7f('0x20'))['format'](_0x7f7f('0x23'));};exports['diffTime']=function(_0x3a3f0d,_0x4824ce){return moment(_0x3a3f0d)['diff'](moment(_0x4824ce),_0x7f7f('0x20'));};exports['sumTime']=function(_0x4ddcb6,_0x2a1a03){return parseInt(_0x4ddcb6,0xa)+parseInt(_0x2a1a03,0xa);};exports[_0x7f7f('0x24')]=function(){return moment()[_0x7f7f('0x21')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x7f7f('0x25')]=function(_0x361cac,_0x308816){if(_0x308816){return moment(_0x361cac)[_0x7f7f('0x25')](_0x308816);}return!![];};exports[_0x7f7f('0x26')]=function(_0x4e41b8,_0x515216){if(_0x515216){return moment(_0x4e41b8)[_0x7f7f('0x26')](_0x515216);}else if(_0x4e41b8){return!![];}return![];};
\ No newline at end of file